@ionic/react 7.5.3-dev.11698856380.18896dcd → 7.5.3-dev.11698858201.14165f23
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/dist/components/CreateAnimation.js +107 -0
- package/dist/components/CreateAnimation.js.map +7 -0
- package/dist/components/IonActionSheet.js +8 -0
- package/dist/components/IonActionSheet.js.map +7 -0
- package/dist/components/IonAlert.js +8 -0
- package/dist/components/IonAlert.js.map +7 -0
- package/dist/components/IonApp.js +42 -0
- package/dist/components/IonApp.js.map +7 -0
- package/dist/components/IonIcon.js +39 -0
- package/dist/components/IonIcon.js.map +7 -0
- package/dist/components/IonLoading.js +8 -0
- package/dist/components/IonLoading.js.map +7 -0
- package/dist/components/IonModal.js +9 -0
- package/dist/components/IonModal.js.map +7 -0
- package/dist/components/IonOverlayManager.js +29 -0
- package/dist/components/IonOverlayManager.js.map +7 -0
- package/dist/components/IonPage.js +31 -0
- package/dist/components/IonPage.js.map +7 -0
- package/dist/components/IonPicker.js +8 -0
- package/dist/components/IonPicker.js.map +7 -0
- package/dist/components/IonPopover.js +8 -0
- package/dist/components/IonPopover.js.map +7 -0
- package/dist/components/IonRedirect.js +19 -0
- package/dist/components/IonRedirect.js.map +7 -0
- package/dist/components/IonRoute.js +17 -0
- package/dist/components/IonRoute.js.map +7 -0
- package/dist/components/IonRouterContext.js +32 -0
- package/dist/components/IonRouterContext.js.map +7 -0
- package/dist/components/IonRouterOutlet.js +24 -0
- package/dist/components/IonRouterOutlet.js.map +7 -0
- package/dist/components/IonToast.js +8 -0
- package/dist/components/IonToast.js.map +7 -0
- package/dist/components/IonicReactProps.js +2 -0
- package/dist/components/IonicReactProps.js.map +7 -0
- package/dist/components/__tests__/utils.spec.js +50 -0
- package/dist/components/__tests__/utils.spec.js.map +7 -0
- package/dist/components/createControllerComponent.js +80 -0
- package/dist/components/createControllerComponent.js.map +7 -0
- package/dist/components/createInlineOverlayComponent.js +114 -0
- package/dist/components/createInlineOverlayComponent.js.map +7 -0
- package/dist/components/createOverlayComponent.js +88 -0
- package/dist/components/createOverlayComponent.js.map +7 -0
- package/dist/components/createRoutingComponent.js +79 -0
- package/dist/components/createRoutingComponent.js.map +7 -0
- package/dist/components/hrefprops.js +2 -0
- package/dist/components/hrefprops.js.map +7 -0
- package/dist/components/index.js +126 -0
- package/dist/components/index.js.map +7 -0
- package/dist/components/inner-proxies.js +30 -0
- package/dist/components/inner-proxies.js.map +7 -0
- package/dist/components/navigation/IonBackButton.js +31 -0
- package/dist/components/navigation/IonBackButton.js.map +7 -0
- package/dist/components/navigation/IonNav.js +21 -0
- package/dist/components/navigation/IonNav.js.map +7 -0
- package/dist/components/navigation/IonTabBar.js +173 -0
- package/dist/components/navigation/IonTabBar.js.map +7 -0
- package/dist/components/navigation/IonTabButton.js +30 -0
- package/dist/components/navigation/IonTabButton.js.map +7 -0
- package/dist/components/navigation/IonTabs.js +103 -0
- package/dist/components/navigation/IonTabs.js.map +7 -0
- package/dist/components/navigation/IonTabsContext.js +7 -0
- package/dist/components/navigation/IonTabsContext.js.map +7 -0
- package/dist/components/proxies.js +131 -0
- package/dist/components/proxies.js.map +7 -0
- package/dist/components/react-component-lib/createComponent.js +58 -0
- package/dist/components/react-component-lib/createComponent.js.map +7 -0
- package/dist/components/react-component-lib/createOverlayComponent.js +86 -0
- package/dist/components/react-component-lib/createOverlayComponent.js.map +7 -0
- package/dist/components/react-component-lib/index.js +4 -0
- package/dist/components/react-component-lib/index.js.map +7 -0
- package/dist/components/react-component-lib/interfaces.js +2 -0
- package/dist/components/react-component-lib/interfaces.js.map +7 -0
- package/dist/components/react-component-lib/utils/attachProps.js +92 -0
- package/dist/components/react-component-lib/utils/attachProps.js.map +7 -0
- package/dist/components/react-component-lib/utils/case.js +4 -0
- package/dist/components/react-component-lib/utils/case.js.map +7 -0
- package/dist/components/react-component-lib/utils/dev.js +14 -0
- package/dist/components/react-component-lib/utils/dev.js.map +7 -0
- package/dist/components/react-component-lib/utils/index.js +31 -0
- package/dist/components/react-component-lib/utils/index.js.map +7 -0
- package/dist/components/routing-proxies.js +29 -0
- package/dist/components/routing-proxies.js.map +7 -0
- package/dist/components/utils/detachProps.js +24 -0
- package/dist/components/utils/detachProps.js.map +7 -0
- package/dist/components/utils/index.js +26 -0
- package/dist/components/utils/index.js.map +7 -0
- package/dist/components/utils/ionRenderToString.js +36 -0
- package/dist/components/utils/ionRenderToString.js.map +7 -0
- package/dist/contexts/IonContext.js +11 -0
- package/dist/contexts/IonContext.js.map +7 -0
- package/dist/contexts/IonLifeCycleContext.js +185 -0
- package/dist/contexts/IonLifeCycleContext.js.map +7 -0
- package/dist/contexts/NavContext.js +36 -0
- package/dist/contexts/NavContext.js.map +7 -0
- package/dist/framework-delegate.js +30 -0
- package/dist/framework-delegate.js.map +7 -0
- package/dist/hooks/HookOverlayOptions.js +2 -0
- package/dist/hooks/HookOverlayOptions.js.map +7 -0
- package/dist/hooks/__tests__/hooks.spec.js +6 -0
- package/dist/hooks/__tests__/hooks.spec.js.map +7 -0
- package/dist/hooks/useController.js +45 -0
- package/dist/hooks/useController.js.map +7 -0
- package/dist/hooks/useIonActionSheet.js +27 -0
- package/dist/hooks/useIonActionSheet.js.map +7 -0
- package/dist/hooks/useIonAlert.js +23 -0
- package/dist/hooks/useIonAlert.js.map +7 -0
- package/dist/hooks/useIonLoading.js +28 -0
- package/dist/hooks/useIonLoading.js.map +7 -0
- package/dist/hooks/useIonModal.js +22 -0
- package/dist/hooks/useIonModal.js.map +7 -0
- package/dist/hooks/useIonPicker.js +27 -0
- package/dist/hooks/useIonPicker.js.map +7 -0
- package/dist/hooks/useIonPopover.js +22 -0
- package/dist/hooks/useIonPopover.js.map +7 -0
- package/dist/hooks/useIonToast.js +23 -0
- package/dist/hooks/useIonToast.js.map +7 -0
- package/dist/hooks/useOverlay.js +67 -0
- package/dist/hooks/useOverlay.js.map +7 -0
- package/dist/index.js +8 -2443
- package/dist/index.js.map +7 -1
- package/dist/lifecycle/IonLifeCycleHOC.js +41 -0
- package/dist/lifecycle/IonLifeCycleHOC.js.map +7 -0
- package/dist/lifecycle/hooks.js +52 -0
- package/dist/lifecycle/hooks.js.map +7 -0
- package/dist/lifecycle/index.js +4 -0
- package/dist/lifecycle/index.js.map +7 -0
- package/dist/models/ReactComponentOrElement.js +2 -0
- package/dist/models/ReactComponentOrElement.js.map +7 -0
- package/dist/models/RouteAction.js +2 -0
- package/dist/models/RouteAction.js.map +7 -0
- package/dist/models/RouteInfo.js +2 -0
- package/dist/models/RouteInfo.js.map +7 -0
- package/dist/models/RouterDirection.js +2 -0
- package/dist/models/RouterDirection.js.map +7 -0
- package/dist/models/RouterOptions.js +2 -0
- package/dist/models/RouterOptions.js.map +7 -0
- package/dist/models/index.js +7 -0
- package/dist/models/index.js.map +7 -0
- package/dist/routing/LocationHistory.js +140 -0
- package/dist/routing/LocationHistory.js.map +7 -0
- package/dist/routing/NavManager.js +76 -0
- package/dist/routing/NavManager.js.map +7 -0
- package/dist/routing/OutletPageManager.js +69 -0
- package/dist/routing/OutletPageManager.js.map +7 -0
- package/dist/routing/PageManager.js +60 -0
- package/dist/routing/PageManager.js.map +7 -0
- package/dist/routing/RouteManagerContext.js +15 -0
- package/dist/routing/RouteManagerContext.js.map +7 -0
- package/dist/routing/StackContext.js +7 -0
- package/dist/routing/StackContext.js.map +7 -0
- package/dist/routing/ViewItem.js +2 -0
- package/dist/routing/ViewItem.js.map +7 -0
- package/dist/routing/ViewLifeCycleManager.js +36 -0
- package/dist/routing/ViewLifeCycleManager.js.map +7 -0
- package/dist/routing/ViewStacks.js +49 -0
- package/dist/routing/ViewStacks.js.map +7 -0
- package/dist/routing/__tests__/LocationHistory.spec.js +185 -0
- package/dist/routing/__tests__/LocationHistory.spec.js.map +7 -0
- package/dist/routing/index.js +9 -0
- package/dist/routing/index.js.map +7 -0
- package/dist/utils/HTMLElementSSR.js +4 -0
- package/dist/utils/HTMLElementSSR.js.map +7 -0
- package/dist/utils/generateId.js +8 -0
- package/dist/utils/generateId.js.map +7 -0
- package/package.json +5 -12
- package/dist/types/components/CreateAnimation.d.ts +0 -71
- package/dist/types/components/IonActionSheet.d.ts +0 -3
- package/dist/types/components/IonAlert.d.ts +0 -3
- package/dist/types/components/IonApp.d.ts +0 -41
- package/dist/types/components/IonIcon.d.ts +0 -16
- package/dist/types/components/IonLoading.d.ts +0 -3
- package/dist/types/components/IonModal.d.ts +0 -3
- package/dist/types/components/IonOverlayManager.d.ts +0 -15
- package/dist/types/components/IonPage.d.ts +0 -3
- package/dist/types/components/IonPicker.d.ts +0 -3
- package/dist/types/components/IonPopover.d.ts +0 -3
- package/dist/types/components/IonRedirect.d.ts +0 -16
- package/dist/types/components/IonRoute.d.ts +0 -17
- package/dist/types/components/IonRouterContext.d.ts +0 -42
- package/dist/types/components/IonRouterOutlet.d.ts +0 -8
- package/dist/types/components/IonToast.d.ts +0 -3
- package/dist/types/components/IonicReactProps.d.ts +0 -6
- package/dist/types/components/__tests__/utils.spec.d.ts +0 -1
- package/dist/types/components/createControllerComponent.d.ts +0 -19
- package/dist/types/components/createInlineOverlayComponent.d.ts +0 -2
- package/dist/types/components/createOverlayComponent.d.ts +0 -20
- package/dist/types/components/createRoutingComponent.d.ts +0 -2
- package/dist/types/components/hrefprops.d.ts +0 -9
- package/dist/types/components/index.d.ts +0 -35
- package/dist/types/components/inner-proxies.d.ts +0 -14
- package/dist/types/components/navigation/IonBackButton.d.ts +0 -68
- package/dist/types/components/navigation/IonNav.d.ts +0 -5
- package/dist/types/components/navigation/IonTabBar.d.ts +0 -15
- package/dist/types/components/navigation/IonTabButton.d.ts +0 -40
- package/dist/types/components/navigation/IonTabs.d.ts +0 -49
- package/dist/types/components/navigation/IonTabsContext.d.ts +0 -6
- package/dist/types/components/proxies.d.ts +0 -66
- package/dist/types/components/react-component-lib/createComponent.d.ts +0 -10
- package/dist/types/components/react-component-lib/createOverlayComponent.d.ts +0 -21
- package/dist/types/components/react-component-lib/index.d.ts +0 -2
- package/dist/types/components/react-component-lib/interfaces.d.ts +0 -29
- package/dist/types/components/react-component-lib/utils/attachProps.d.ts +0 -16
- package/dist/types/components/react-component-lib/utils/case.d.ts +0 -2
- package/dist/types/components/react-component-lib/utils/dev.d.ts +0 -2
- package/dist/types/components/react-component-lib/utils/index.d.ts +0 -10
- package/dist/types/components/routing-proxies.d.ts +0 -44
- package/dist/types/components/utils/detachProps.d.ts +0 -8
- package/dist/types/components/utils/index.d.ts +0 -8
- package/dist/types/components/utils/ionRenderToString.d.ts +0 -2
- package/dist/types/contexts/IonContext.d.ts +0 -7
- package/dist/types/contexts/IonLifeCycleContext.d.ts +0 -72
- package/dist/types/contexts/NavContext.d.ts +0 -17
- package/dist/types/framework-delegate.d.ts +0 -2
- package/dist/types/hooks/HookOverlayOptions.d.ts +0 -7
- package/dist/types/hooks/__tests__/hooks.spec.d.ts +0 -0
- package/dist/types/hooks/useController.d.ts +0 -12
- package/dist/types/hooks/useIonActionSheet.d.ts +0 -26
- package/dist/types/hooks/useIonAlert.d.ts +0 -26
- package/dist/types/hooks/useIonLoading.d.ts +0 -27
- package/dist/types/hooks/useIonModal.d.ts +0 -17
- package/dist/types/hooks/useIonPicker.d.ts +0 -26
- package/dist/types/hooks/useIonPopover.d.ts +0 -17
- package/dist/types/hooks/useIonToast.d.ts +0 -26
- package/dist/types/hooks/useOverlay.d.ts +0 -13
- package/dist/types/index.d.ts +0 -7
- package/dist/types/lifecycle/IonLifeCycleHOC.d.ts +0 -31
- package/dist/types/lifecycle/hooks.d.ts +0 -5
- package/dist/types/lifecycle/index.d.ts +0 -2
- package/dist/types/models/ReactComponentOrElement.d.ts +0 -2
- package/dist/types/models/RouteAction.d.ts +0 -1
- package/dist/types/models/RouteInfo.d.ts +0 -19
- package/dist/types/models/RouterDirection.d.ts +0 -1
- package/dist/types/models/RouterOptions.d.ts +0 -10
- package/dist/types/models/index.d.ts +0 -5
- package/dist/types/routing/LocationHistory.d.ts +0 -20
- package/dist/types/routing/NavManager.d.ts +0 -38
- package/dist/types/routing/OutletPageManager.d.ts +0 -26
- package/dist/types/routing/PageManager.d.ts +0 -25
- package/dist/types/routing/RouteManagerContext.d.ts +0 -16
- package/dist/types/routing/StackContext.d.ts +0 -7
- package/dist/types/routing/ViewItem.d.ts +0 -12
- package/dist/types/routing/ViewLifeCycleManager.d.ts +0 -42
- package/dist/types/routing/ViewStacks.d.ts +0 -19
- package/dist/types/routing/__tests__/LocationHistory.spec.d.ts +0 -1
- package/dist/types/routing/index.d.ts +0 -7
- package/dist/types/utils/HTMLElementSSR.d.ts +0 -4
- package/dist/types/utils/generateId.d.ts +0 -1
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
import { initialize } from "@ionic/core/components";
|
|
3
|
+
export {
|
|
4
|
+
createAnimation,
|
|
5
|
+
createGesture,
|
|
6
|
+
iosTransitionAnimation,
|
|
7
|
+
mdTransitionAnimation,
|
|
8
|
+
IonicSlides,
|
|
9
|
+
getTimeGivenProgression,
|
|
10
|
+
getIonPageElement,
|
|
11
|
+
openURL,
|
|
12
|
+
Animation,
|
|
13
|
+
AnimationBuilder,
|
|
14
|
+
AnimationCallbackOptions,
|
|
15
|
+
AnimationDirection,
|
|
16
|
+
AnimationFill,
|
|
17
|
+
AnimationKeyFrames,
|
|
18
|
+
AnimationLifecycle,
|
|
19
|
+
Gesture,
|
|
20
|
+
GestureConfig,
|
|
21
|
+
GestureDetail,
|
|
22
|
+
NavComponentWithProps,
|
|
23
|
+
SpinnerTypes,
|
|
24
|
+
AccordionGroupCustomEvent,
|
|
25
|
+
AccordionGroupChangeEventDetail,
|
|
26
|
+
BreadcrumbCustomEvent,
|
|
27
|
+
BreadcrumbCollapsedClickEventDetail,
|
|
28
|
+
ActionSheetOptions,
|
|
29
|
+
ActionSheetButton,
|
|
30
|
+
AlertOptions,
|
|
31
|
+
AlertInput,
|
|
32
|
+
AlertButton,
|
|
33
|
+
BackButtonEvent,
|
|
34
|
+
CheckboxCustomEvent,
|
|
35
|
+
CheckboxChangeEventDetail,
|
|
36
|
+
DatetimeCustomEvent,
|
|
37
|
+
DatetimeChangeEventDetail,
|
|
38
|
+
InfiniteScrollCustomEvent,
|
|
39
|
+
InputCustomEvent,
|
|
40
|
+
InputChangeEventDetail,
|
|
41
|
+
ItemReorderEventDetail,
|
|
42
|
+
ItemReorderCustomEvent,
|
|
43
|
+
ItemSlidingCustomEvent,
|
|
44
|
+
IonicSafeString,
|
|
45
|
+
LoadingOptions,
|
|
46
|
+
MenuCustomEvent,
|
|
47
|
+
ModalOptions,
|
|
48
|
+
NavCustomEvent,
|
|
49
|
+
PickerOptions,
|
|
50
|
+
PickerButton,
|
|
51
|
+
PickerColumn,
|
|
52
|
+
PickerColumnOption,
|
|
53
|
+
PopoverOptions,
|
|
54
|
+
RadioGroupCustomEvent,
|
|
55
|
+
RadioGroupChangeEventDetail,
|
|
56
|
+
RangeCustomEvent,
|
|
57
|
+
RangeChangeEventDetail,
|
|
58
|
+
RangeKnobMoveStartEventDetail,
|
|
59
|
+
RangeKnobMoveEndEventDetail,
|
|
60
|
+
RefresherCustomEvent,
|
|
61
|
+
RefresherEventDetail,
|
|
62
|
+
RouterEventDetail,
|
|
63
|
+
RouterCustomEvent,
|
|
64
|
+
ScrollBaseCustomEvent,
|
|
65
|
+
ScrollBaseDetail,
|
|
66
|
+
ScrollDetail,
|
|
67
|
+
ScrollCustomEvent,
|
|
68
|
+
SearchbarCustomEvent,
|
|
69
|
+
SearchbarChangeEventDetail,
|
|
70
|
+
SearchbarInputEventDetail,
|
|
71
|
+
SegmentChangeEventDetail,
|
|
72
|
+
SegmentCustomEvent,
|
|
73
|
+
SegmentValue,
|
|
74
|
+
SelectChangeEventDetail,
|
|
75
|
+
SelectCustomEvent,
|
|
76
|
+
TabsCustomEvent,
|
|
77
|
+
TextareaChangeEventDetail,
|
|
78
|
+
TextareaCustomEvent,
|
|
79
|
+
ToastOptions,
|
|
80
|
+
ToastButton,
|
|
81
|
+
ToastLayout,
|
|
82
|
+
ToggleChangeEventDetail,
|
|
83
|
+
ToggleCustomEvent,
|
|
84
|
+
TransitionOptions
|
|
85
|
+
} from "@ionic/core/components";
|
|
86
|
+
export * from "./proxies";
|
|
87
|
+
export * from "./routing-proxies";
|
|
88
|
+
export { IonAlert } from "./IonAlert";
|
|
89
|
+
export { IonLoading } from "./IonLoading";
|
|
90
|
+
export * from "./IonToast";
|
|
91
|
+
export { IonPicker } from "./IonPicker";
|
|
92
|
+
export * from "./IonActionSheet";
|
|
93
|
+
export { IonModal } from "./IonModal";
|
|
94
|
+
export { IonPopover } from "./IonPopover";
|
|
95
|
+
export { IonApp } from "./IonApp";
|
|
96
|
+
export { IonPage } from "./IonPage";
|
|
97
|
+
export { IonNav } from "./navigation/IonNav";
|
|
98
|
+
export { IonTabsContext, IonTabsContextState } from "./navigation/IonTabsContext";
|
|
99
|
+
export { IonTabs } from "./navigation/IonTabs";
|
|
100
|
+
export { IonTabBar } from "./navigation/IonTabBar";
|
|
101
|
+
export { IonTabButton } from "./navigation/IonTabButton";
|
|
102
|
+
export { IonBackButton } from "./navigation/IonBackButton";
|
|
103
|
+
export { IonRouterOutlet } from "./IonRouterOutlet";
|
|
104
|
+
export { IonIcon } from "./IonIcon";
|
|
105
|
+
export * from "./IonRoute";
|
|
106
|
+
export * from "./IonRedirect";
|
|
107
|
+
export * from "./IonRouterContext";
|
|
108
|
+
export { isPlatform, getPlatforms, getConfig } from "./utils";
|
|
109
|
+
export * from "./hrefprops";
|
|
110
|
+
export { CreateAnimation } from "./CreateAnimation";
|
|
111
|
+
export { useIonActionSheet, UseIonActionSheetResult } from "../hooks/useIonActionSheet";
|
|
112
|
+
export { useIonAlert, UseIonAlertResult } from "../hooks/useIonAlert";
|
|
113
|
+
export { useIonToast, UseIonToastResult } from "../hooks/useIonToast";
|
|
114
|
+
export { useIonModal, UseIonModalResult } from "../hooks/useIonModal";
|
|
115
|
+
export { useIonPopover, UseIonPopoverResult } from "../hooks/useIonPopover";
|
|
116
|
+
export { useIonPicker, UseIonPickerResult } from "../hooks/useIonPicker";
|
|
117
|
+
export { useIonLoading, UseIonLoadingResult } from "../hooks/useIonLoading";
|
|
118
|
+
export const setupIonicReact = (config = {}) => {
|
|
119
|
+
if (typeof document !== "undefined") {
|
|
120
|
+
document.documentElement.classList.add("ion-ce");
|
|
121
|
+
}
|
|
122
|
+
initialize({
|
|
123
|
+
...config
|
|
124
|
+
});
|
|
125
|
+
};
|
|
126
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/components/index.ts"],
|
|
4
|
+
"sourcesContent": ["import type { IonicConfig } from '@ionic/core/components';\nimport { initialize } from '@ionic/core/components';\n\nexport {\n // UTILS\n createAnimation,\n createGesture,\n iosTransitionAnimation,\n mdTransitionAnimation,\n IonicSlides,\n getTimeGivenProgression,\n getIonPageElement,\n openURL,\n\n // TYPES\n Animation,\n AnimationBuilder,\n AnimationCallbackOptions,\n AnimationDirection,\n AnimationFill,\n AnimationKeyFrames,\n AnimationLifecycle,\n Gesture,\n GestureConfig,\n GestureDetail,\n NavComponentWithProps,\n SpinnerTypes,\n AccordionGroupCustomEvent,\n AccordionGroupChangeEventDetail,\n BreadcrumbCustomEvent,\n BreadcrumbCollapsedClickEventDetail,\n ActionSheetOptions,\n ActionSheetButton,\n AlertOptions,\n AlertInput,\n AlertButton,\n BackButtonEvent,\n CheckboxCustomEvent,\n CheckboxChangeEventDetail,\n DatetimeCustomEvent,\n DatetimeChangeEventDetail,\n InfiniteScrollCustomEvent,\n InputCustomEvent,\n InputChangeEventDetail,\n ItemReorderEventDetail,\n ItemReorderCustomEvent,\n ItemSlidingCustomEvent,\n IonicSafeString,\n LoadingOptions,\n MenuCustomEvent,\n ModalOptions,\n NavCustomEvent,\n PickerOptions,\n PickerButton,\n PickerColumn,\n PickerColumnOption,\n PopoverOptions,\n RadioGroupCustomEvent,\n RadioGroupChangeEventDetail,\n RangeCustomEvent,\n RangeChangeEventDetail,\n RangeKnobMoveStartEventDetail,\n RangeKnobMoveEndEventDetail,\n RefresherCustomEvent,\n RefresherEventDetail,\n RouterEventDetail,\n RouterCustomEvent,\n ScrollBaseCustomEvent,\n ScrollBaseDetail,\n ScrollDetail,\n ScrollCustomEvent,\n SearchbarCustomEvent,\n SearchbarChangeEventDetail,\n SearchbarInputEventDetail,\n SegmentChangeEventDetail,\n SegmentCustomEvent,\n SegmentValue,\n SelectChangeEventDetail,\n SelectCustomEvent,\n TabsCustomEvent,\n TextareaChangeEventDetail,\n TextareaCustomEvent,\n ToastOptions,\n ToastButton,\n ToastLayout,\n ToggleChangeEventDetail,\n ToggleCustomEvent,\n TransitionOptions,\n} from '@ionic/core/components';\n\nexport * from './proxies';\nexport * from './routing-proxies';\n\n// createControllerComponent\nexport { IonAlert } from './IonAlert';\nexport { IonLoading } from './IonLoading';\nexport * from './IonToast';\nexport { IonPicker } from './IonPicker';\n\n// createOverlayComponent\nexport * from './IonActionSheet';\nexport { IonModal } from './IonModal';\nexport { IonPopover } from './IonPopover';\n\n// Custom Components\nexport { IonApp } from './IonApp';\nexport { IonPage } from './IonPage';\nexport { IonNav } from './navigation/IonNav';\nexport { IonTabsContext, IonTabsContextState } from './navigation/IonTabsContext';\nexport { IonTabs } from './navigation/IonTabs';\nexport { IonTabBar } from './navigation/IonTabBar';\nexport { IonTabButton } from './navigation/IonTabButton';\nexport { IonBackButton } from './navigation/IonBackButton';\nexport { IonRouterOutlet } from './IonRouterOutlet';\nexport { IonIcon } from './IonIcon';\nexport * from './IonRoute';\nexport * from './IonRedirect';\nexport * from './IonRouterContext';\n\n// Utils\nexport { isPlatform, getPlatforms, getConfig } from './utils';\nexport * from './hrefprops';\n\n// Ionic Animations\nexport { CreateAnimation } from './CreateAnimation';\n\n// Hooks\nexport { useIonActionSheet, UseIonActionSheetResult } from '../hooks/useIonActionSheet';\nexport { useIonAlert, UseIonAlertResult } from '../hooks/useIonAlert';\nexport { useIonToast, UseIonToastResult } from '../hooks/useIonToast';\nexport { useIonModal, UseIonModalResult } from '../hooks/useIonModal';\nexport { useIonPopover, UseIonPopoverResult } from '../hooks/useIonPopover';\nexport { useIonPicker, UseIonPickerResult } from '../hooks/useIonPicker';\nexport { useIonLoading, UseIonLoadingResult } from '../hooks/useIonLoading';\n\nexport const setupIonicReact = (config: IonicConfig = {}) => {\n /**\n * By default Ionic Framework hides elements that\n * are not hydrated, but in the CE build there is no\n * hydration.\n * TODO FW-2797: Remove when all integrations have been\n * migrated to CE build.\n */\n if (typeof (document as any) !== 'undefined') {\n document.documentElement.classList.add('ion-ce');\n }\n\n initialize({\n ...config,\n });\n};\n"],
|
|
5
|
+
"mappings": ";AACA,SAAS,kBAAkB;AAE3B;AAAA,EAEE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,cAAc;AACd,cAAc;AAGd,SAAS,gBAAgB;AACzB,SAAS,kBAAkB;AAC3B,cAAc;AACd,SAAS,iBAAiB;AAG1B,cAAc;AACd,SAAS,gBAAgB;AACzB,SAAS,kBAAkB;AAG3B,SAAS,cAAc;AACvB,SAAS,eAAe;AACxB,SAAS,cAAc;AACvB,SAAS,gBAAgB,2BAA2B;AACpD,SAAS,eAAe;AACxB,SAAS,iBAAiB;AAC1B,SAAS,oBAAoB;AAC7B,SAAS,qBAAqB;AAC9B,SAAS,uBAAuB;AAChC,SAAS,eAAe;AACxB,cAAc;AACd,cAAc;AACd,cAAc;AAGd,SAAS,YAAY,cAAc,iBAAiB;AACpD,cAAc;AAGd,SAAS,uBAAuB;AAGhC,SAAS,mBAAmB,+BAA+B;AAC3D,SAAS,aAAa,yBAAyB;AAC/C,SAAS,aAAa,yBAAyB;AAC/C,SAAS,aAAa,yBAAyB;AAC/C,SAAS,eAAe,2BAA2B;AACnD,SAAS,cAAc,0BAA0B;AACjD,SAAS,eAAe,2BAA2B;AAE5C,aAAM,kBAAkB,CAAC,SAAsB,CAAC,MAAM;AAQ3D,MAAI,OAAQ,aAAqB,aAAa;AAC5C,aAAS,gBAAgB,UAAU,IAAI,QAAQ;AAAA,EACjD;AAEA,aAAW;AAAA,IACT,GAAG;AAAA,EACL,CAAC;AACH;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
import { defineCustomElement as defineIonApp } from "@ionic/core/components/ion-app.js";
|
|
3
|
+
import { defineCustomElement as defineIonBackButton } from "@ionic/core/components/ion-back-button.js";
|
|
4
|
+
import { defineCustomElement as defineIonRouterOutlet } from "@ionic/core/components/ion-router-outlet.js";
|
|
5
|
+
import { defineCustomElement as defineIonTabBar } from "@ionic/core/components/ion-tab-bar.js";
|
|
6
|
+
import { defineCustomElement as defineIonTabButton } from "@ionic/core/components/ion-tab-button.js";
|
|
7
|
+
import { defineCustomElement as defineIonIcon } from "ionicons/components/ion-icon.js";
|
|
8
|
+
import { createReactComponent } from "./react-component-lib";
|
|
9
|
+
export const IonTabButtonInner = /* @__PURE__ */ createReactComponent("ion-tab-button", void 0, void 0, defineIonTabButton);
|
|
10
|
+
export const IonTabBarInner = /* @__PURE__ */ createReactComponent(
|
|
11
|
+
"ion-tab-bar",
|
|
12
|
+
void 0,
|
|
13
|
+
void 0,
|
|
14
|
+
defineIonTabBar
|
|
15
|
+
);
|
|
16
|
+
export const IonBackButtonInner = /* @__PURE__ */ createReactComponent("ion-back-button", void 0, void 0, defineIonBackButton);
|
|
17
|
+
export const IonRouterOutletInner = /* @__PURE__ */ createReactComponent("ion-router-outlet", void 0, void 0, defineIonRouterOutlet);
|
|
18
|
+
export const IonAppInner = /* @__PURE__ */ createReactComponent(
|
|
19
|
+
"ion-app",
|
|
20
|
+
void 0,
|
|
21
|
+
void 0,
|
|
22
|
+
defineIonApp
|
|
23
|
+
);
|
|
24
|
+
export const IonIconInner = /* @__PURE__ */ createReactComponent(
|
|
25
|
+
"ion-icon",
|
|
26
|
+
void 0,
|
|
27
|
+
void 0,
|
|
28
|
+
defineIonIcon
|
|
29
|
+
);
|
|
30
|
+
//# sourceMappingURL=inner-proxies.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/components/inner-proxies.ts"],
|
|
4
|
+
"sourcesContent": ["import type { JSX } from '@ionic/core/components';\nimport { defineCustomElement as defineIonApp } from '@ionic/core/components/ion-app.js';\nimport { defineCustomElement as defineIonBackButton } from '@ionic/core/components/ion-back-button.js';\nimport { defineCustomElement as defineIonRouterOutlet } from '@ionic/core/components/ion-router-outlet.js';\nimport { defineCustomElement as defineIonTabBar } from '@ionic/core/components/ion-tab-bar.js';\nimport { defineCustomElement as defineIonTabButton } from '@ionic/core/components/ion-tab-button.js';\nimport type { JSX as IoniconsJSX } from 'ionicons';\nimport { defineCustomElement as defineIonIcon } from 'ionicons/components/ion-icon.js';\n\nimport { /*@__PURE__*/ createReactComponent } from './react-component-lib';\n\nexport const IonTabButtonInner = /*@__PURE__*/ createReactComponent<\n JSX.IonTabButton & { onIonTabButtonClick?: (e: CustomEvent) => void },\n HTMLIonTabButtonElement\n>('ion-tab-button', undefined, undefined, defineIonTabButton);\nexport const IonTabBarInner = /*@__PURE__*/ createReactComponent<JSX.IonTabBar, HTMLIonTabBarElement>(\n 'ion-tab-bar',\n undefined,\n undefined,\n defineIonTabBar\n);\nexport const IonBackButtonInner = /*@__PURE__*/ createReactComponent<\n Omit<JSX.IonBackButton, 'icon'>,\n HTMLIonBackButtonElement\n>('ion-back-button', undefined, undefined, defineIonBackButton);\nexport const IonRouterOutletInner = /*@__PURE__*/ createReactComponent<\n JSX.IonRouterOutlet & {\n setRef?: (val: HTMLIonRouterOutletElement) => void;\n forwardedRef?: React.ForwardedRef<HTMLIonRouterOutletElement>;\n },\n HTMLIonRouterOutletElement\n>('ion-router-outlet', undefined, undefined, defineIonRouterOutlet);\n\nexport const IonAppInner = /*@__PURE__*/ createReactComponent<JSX.IonApp, HTMLIonAppElement>(\n 'ion-app',\n undefined,\n undefined,\n defineIonApp\n);\n\n// ionicons\nexport const IonIconInner = /*@__PURE__*/ createReactComponent<IoniconsJSX.IonIcon, HTMLIonIconElement>(\n 'ion-icon',\n undefined,\n undefined,\n defineIonIcon\n);\n"],
|
|
5
|
+
"mappings": ";AACA,SAAS,uBAAuB,oBAAoB;AACpD,SAAS,uBAAuB,2BAA2B;AAC3D,SAAS,uBAAuB,6BAA6B;AAC7D,SAAS,uBAAuB,uBAAuB;AACvD,SAAS,uBAAuB,0BAA0B;AAE1D,SAAS,uBAAuB,qBAAqB;AAErD,SAAuB,4BAA4B;AAE5C,aAAM,oBAAkC,qCAG7C,kBAAkB,QAAW,QAAW,kBAAkB;AACrD,aAAM,iBAA+B;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AACO,aAAM,qBAAmC,qCAG9C,mBAAmB,QAAW,QAAW,mBAAmB;AACvD,aAAM,uBAAqC,qCAMhD,qBAAqB,QAAW,QAAW,qBAAqB;AAE3D,aAAM,cAA4B;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAGO,aAAM,eAA6B;AAAA,EACxC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { NavContext } from "../../contexts/NavContext";
|
|
4
|
+
import { IonBackButtonInner } from "../inner-proxies";
|
|
5
|
+
export const IonBackButton = /* @__PURE__ */ (() => class extends React.Component {
|
|
6
|
+
constructor() {
|
|
7
|
+
super(...arguments);
|
|
8
|
+
this.clickButton = (e) => {
|
|
9
|
+
if (e.target && e.target.closest("ion-nav") !== null) {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
const { defaultHref, routerAnimation } = this.props;
|
|
13
|
+
if (this.context.hasIonicRouter()) {
|
|
14
|
+
e.stopPropagation();
|
|
15
|
+
this.context.goBack(defaultHref, routerAnimation);
|
|
16
|
+
} else if (defaultHref !== void 0) {
|
|
17
|
+
window.location.href = defaultHref;
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
render() {
|
|
22
|
+
return /* @__PURE__ */ React.createElement(IonBackButtonInner, { onClick: this.clickButton, ...this.props });
|
|
23
|
+
}
|
|
24
|
+
static get displayName() {
|
|
25
|
+
return "IonBackButton";
|
|
26
|
+
}
|
|
27
|
+
static get contextType() {
|
|
28
|
+
return NavContext;
|
|
29
|
+
}
|
|
30
|
+
})();
|
|
31
|
+
//# sourceMappingURL=IonBackButton.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/navigation/IonBackButton.tsx"],
|
|
4
|
+
"sourcesContent": ["import type { JSX as LocalJSX } from '@ionic/core/components';\nimport React from 'react';\n\nimport { NavContext } from '../../contexts/NavContext';\nimport type { IonicReactProps } from '../IonicReactProps';\nimport { IonBackButtonInner } from '../inner-proxies';\n\ntype Props = Omit<LocalJSX.IonBackButton, 'icon'> &\n IonicReactProps & {\n icon?:\n | {\n ios: string;\n md: string;\n }\n | string;\n ref?: React.Ref<HTMLIonBackButtonElement>;\n };\n\nexport const IonBackButton = /*@__PURE__*/ (() =>\n class extends React.Component<Props> {\n context!: React.ContextType<typeof NavContext>;\n\n clickButton = (e: React.MouseEvent) => {\n /**\n * If ion-back-button is being used inside\n * of ion-nav then we should not interact with\n * the router.\n */\n if (e.target && (e.target as HTMLElement).closest('ion-nav') !== null) {\n return;\n }\n\n const { defaultHref, routerAnimation } = this.props;\n\n if (this.context.hasIonicRouter()) {\n e.stopPropagation();\n this.context.goBack(defaultHref, routerAnimation);\n } else if (defaultHref !== undefined) {\n window.location.href = defaultHref;\n }\n };\n\n render() {\n return <IonBackButtonInner onClick={this.clickButton} {...this.props}></IonBackButtonInner>;\n }\n\n static get displayName() {\n return 'IonBackButton';\n }\n\n static get contextType() {\n return NavContext;\n }\n })();\n"],
|
|
5
|
+
"mappings": ";AACA,OAAO,WAAW;AAElB,SAAS,kBAAkB;AAE3B,SAAS,0BAA0B;AAa5B,aAAM,gBAA+B,uBAC1C,cAAc,MAAM,UAAiB;AAAA,EAArC;AAAA;AAGE,uBAAc,CAAC,MAAwB;AAMrC,UAAI,EAAE,UAAW,EAAE,OAAuB,QAAQ,SAAS,MAAM,MAAM;AACrE;AAAA,MACF;AAEA,YAAM,EAAE,aAAa,gBAAgB,IAAI,KAAK;AAE9C,UAAI,KAAK,QAAQ,eAAe,GAAG;AACjC,UAAE,gBAAgB;AAClB,aAAK,QAAQ,OAAO,aAAa,eAAe;AAAA,MAClD,WAAW,gBAAgB,QAAW;AACpC,eAAO,SAAS,OAAO;AAAA,MACzB;AAAA,IACF;AAAA;AAAA,EAEA,SAAS;AACP,WAAO,oCAAC,sBAAmB,SAAS,KAAK,aAAc,GAAG,KAAK,OAAO;AAAA,EACxE;AAAA,EAEA,WAAW,cAAc;AACvB,WAAO;AAAA,EACT;AAAA,EAEA,WAAW,cAAc;AACvB,WAAO;AAAA,EACT;AACF,GAAG;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
import { defineCustomElement } from "@ionic/core/components/ion-nav.js";
|
|
3
|
+
import React, { useMemo, useState } from "react";
|
|
4
|
+
import { ReactDelegate } from "../../framework-delegate";
|
|
5
|
+
import { createReactComponent } from "../react-component-lib";
|
|
6
|
+
import { createForwardRef } from "../utils";
|
|
7
|
+
const IonNavInner = createReactComponent(
|
|
8
|
+
"ion-nav",
|
|
9
|
+
void 0,
|
|
10
|
+
void 0,
|
|
11
|
+
defineCustomElement
|
|
12
|
+
);
|
|
13
|
+
const IonNavInternal = ({ children, forwardedRef, ...restOfProps }) => {
|
|
14
|
+
const [views, setViews] = useState([]);
|
|
15
|
+
const addView = (view) => setViews((existingViews) => [...existingViews, view]);
|
|
16
|
+
const removeView = (view) => setViews((existingViews) => existingViews.filter((v) => v !== view));
|
|
17
|
+
const delegate = useMemo(() => ReactDelegate(addView, removeView), []);
|
|
18
|
+
return /* @__PURE__ */ React.createElement(IonNavInner, { delegate, ref: forwardedRef, ...restOfProps }, views);
|
|
19
|
+
};
|
|
20
|
+
export const IonNav = createForwardRef(IonNavInternal, "IonNav");
|
|
21
|
+
//# sourceMappingURL=IonNav.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/navigation/IonNav.tsx"],
|
|
4
|
+
"sourcesContent": ["import type { FrameworkDelegate, JSX } from '@ionic/core/components';\nimport { defineCustomElement } from '@ionic/core/components/ion-nav.js';\nimport React, { useMemo, useState } from 'react';\n\nimport { ReactDelegate } from '../../framework-delegate';\nimport { createReactComponent } from '../react-component-lib';\nimport { createForwardRef } from '../utils';\n\nconst IonNavInner = createReactComponent<JSX.IonNav & { delegate: FrameworkDelegate }, HTMLIonNavElement>(\n 'ion-nav',\n undefined,\n undefined,\n defineCustomElement\n);\n\ntype IonNavProps = JSX.IonNav & {\n forwardedRef?: React.ForwardedRef<HTMLIonNavElement>;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst IonNavInternal: React.FC<IonNavProps> = ({ children, forwardedRef, ...restOfProps }) => {\n const [views, setViews] = useState<React.ReactElement[]>([]);\n\n /**\n * Allows us to create React components that are rendered within\n * the context of the IonNav component.\n */\n const addView = (view: React.ReactElement) => setViews((existingViews) => [...existingViews, view]);\n const removeView = (view: React.ReactElement) => setViews((existingViews) => existingViews.filter((v) => v !== view));\n\n const delegate = useMemo(() => ReactDelegate(addView, removeView), []);\n\n return (\n <IonNavInner delegate={delegate} ref={forwardedRef} {...restOfProps}>\n {views}\n </IonNavInner>\n );\n};\n\nexport const IonNav = createForwardRef<IonNavProps, HTMLIonNavElement>(IonNavInternal, 'IonNav');\n"],
|
|
5
|
+
"mappings": ";AACA,SAAS,2BAA2B;AACpC,OAAO,SAAS,SAAS,gBAAgB;AAEzC,SAAS,qBAAqB;AAC9B,SAAS,4BAA4B;AACrC,SAAS,wBAAwB;AAEjC,MAAM,cAAc;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAOA,MAAM,iBAAwC,CAAC,EAAE,UAAU,cAAc,GAAG,YAAY,MAAM;AAC5F,QAAM,CAAC,OAAO,QAAQ,IAAI,SAA+B,CAAC,CAAC;AAM3D,QAAM,UAAU,CAAC,SAA6B,SAAS,CAAC,kBAAkB,CAAC,GAAG,eAAe,IAAI,CAAC;AAClG,QAAM,aAAa,CAAC,SAA6B,SAAS,CAAC,kBAAkB,cAAc,OAAO,CAAC,MAAM,MAAM,IAAI,CAAC;AAEpH,QAAM,WAAW,QAAQ,MAAM,cAAc,SAAS,UAAU,GAAG,CAAC,CAAC;AAErE,SACE,oCAAC,eAAY,UAAoB,KAAK,cAAe,GAAG,eACrD,KACH;AAEJ;AAEO,aAAM,SAAS,iBAAiD,gBAAgB,QAAQ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
import React, { useContext } from "react";
|
|
3
|
+
import { NavContext } from "../../contexts/NavContext";
|
|
4
|
+
import { IonTabBarInner } from "../inner-proxies";
|
|
5
|
+
import { createForwardRef } from "../utils";
|
|
6
|
+
import { IonTabButton } from "./IonTabButton";
|
|
7
|
+
class IonTabBarUnwrapped extends React.PureComponent {
|
|
8
|
+
constructor(props) {
|
|
9
|
+
super(props);
|
|
10
|
+
// eslint-disable-next-line
|
|
11
|
+
this.setActiveTabOnContext = (_tab) => {
|
|
12
|
+
};
|
|
13
|
+
const tabs = {};
|
|
14
|
+
React.Children.forEach(props.children, (child) => {
|
|
15
|
+
if (child != null && typeof child === "object" && child.props && (child.type === IonTabButton || child.type.isTabButton)) {
|
|
16
|
+
tabs[child.props.tab] = {
|
|
17
|
+
originalHref: child.props.href,
|
|
18
|
+
currentHref: child.props.href,
|
|
19
|
+
originalRouteOptions: child.props.href === props.routeInfo?.pathname ? props.routeInfo?.routeOptions : void 0,
|
|
20
|
+
currentRouteOptions: child.props.href === props.routeInfo?.pathname ? props.routeInfo?.routeOptions : void 0
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
this.state = {
|
|
25
|
+
tabs
|
|
26
|
+
};
|
|
27
|
+
this.onTabButtonClick = this.onTabButtonClick.bind(this);
|
|
28
|
+
this.renderTabButton = this.renderTabButton.bind(this);
|
|
29
|
+
this.setActiveTabOnContext = this.setActiveTabOnContext.bind(this);
|
|
30
|
+
this.selectTab = this.selectTab.bind(this);
|
|
31
|
+
}
|
|
32
|
+
componentDidMount() {
|
|
33
|
+
const tabs = this.state.tabs;
|
|
34
|
+
const tabKeys = Object.keys(tabs);
|
|
35
|
+
const activeTab = tabKeys.find((key) => {
|
|
36
|
+
const href = tabs[key].originalHref;
|
|
37
|
+
return this.props.routeInfo.pathname.startsWith(href);
|
|
38
|
+
});
|
|
39
|
+
if (activeTab) {
|
|
40
|
+
this.setState({
|
|
41
|
+
activeTab
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
componentDidUpdate() {
|
|
46
|
+
if (this.state.activeTab) {
|
|
47
|
+
this.setActiveTabOnContext(this.state.activeTab);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
selectTab(tab) {
|
|
51
|
+
const tabUrl = this.state.tabs[tab];
|
|
52
|
+
if (tabUrl) {
|
|
53
|
+
this.onTabButtonClick(
|
|
54
|
+
new CustomEvent("ionTabButtonClick", {
|
|
55
|
+
detail: {
|
|
56
|
+
href: tabUrl.currentHref,
|
|
57
|
+
tab,
|
|
58
|
+
selected: tab === this.state.activeTab,
|
|
59
|
+
routeOptions: void 0
|
|
60
|
+
}
|
|
61
|
+
})
|
|
62
|
+
);
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
static getDerivedStateFromProps(props, state) {
|
|
68
|
+
const tabs = { ...state.tabs };
|
|
69
|
+
const tabKeys = Object.keys(state.tabs);
|
|
70
|
+
const activeTab = tabKeys.find((key) => {
|
|
71
|
+
const href = state.tabs[key].originalHref;
|
|
72
|
+
return props.routeInfo.pathname.startsWith(href);
|
|
73
|
+
});
|
|
74
|
+
React.Children.forEach(props.children, (child) => {
|
|
75
|
+
if (child != null && typeof child === "object" && child.props && (child.type === IonTabButton || child.type.isTabButton)) {
|
|
76
|
+
const tab = tabs[child.props.tab];
|
|
77
|
+
if (!tab || tab.originalHref !== child.props.href) {
|
|
78
|
+
tabs[child.props.tab] = {
|
|
79
|
+
originalHref: child.props.href,
|
|
80
|
+
currentHref: child.props.href,
|
|
81
|
+
originalRouteOptions: child.props.routeOptions,
|
|
82
|
+
currentRouteOptions: child.props.routeOptions
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
const { activeTab: prevActiveTab } = state;
|
|
88
|
+
if (activeTab && prevActiveTab) {
|
|
89
|
+
const prevHref = state.tabs[prevActiveTab].currentHref;
|
|
90
|
+
const prevRouteOptions = state.tabs[prevActiveTab].currentRouteOptions;
|
|
91
|
+
if (activeTab !== prevActiveTab || prevHref !== props.routeInfo?.pathname || prevRouteOptions !== props.routeInfo?.routeOptions) {
|
|
92
|
+
tabs[activeTab] = {
|
|
93
|
+
originalHref: tabs[activeTab].originalHref,
|
|
94
|
+
currentHref: props.routeInfo.pathname + (props.routeInfo.search || ""),
|
|
95
|
+
originalRouteOptions: tabs[activeTab].originalRouteOptions,
|
|
96
|
+
currentRouteOptions: props.routeInfo?.routeOptions
|
|
97
|
+
};
|
|
98
|
+
if (props.routeInfo.routeAction === "pop" && activeTab !== prevActiveTab) {
|
|
99
|
+
tabs[prevActiveTab] = {
|
|
100
|
+
originalHref: tabs[prevActiveTab].originalHref,
|
|
101
|
+
currentHref: tabs[prevActiveTab].originalHref,
|
|
102
|
+
originalRouteOptions: tabs[prevActiveTab].originalRouteOptions,
|
|
103
|
+
currentRouteOptions: tabs[prevActiveTab].currentRouteOptions
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
activeTab && props.onSetCurrentTab(activeTab, props.routeInfo);
|
|
109
|
+
return {
|
|
110
|
+
activeTab,
|
|
111
|
+
tabs
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
onTabButtonClick(e, onClickFn) {
|
|
115
|
+
const tappedTab = this.state.tabs[e.detail.tab];
|
|
116
|
+
const originalHref = tappedTab.originalHref;
|
|
117
|
+
const currentHref = e.detail.href;
|
|
118
|
+
const { activeTab: prevActiveTab } = this.state;
|
|
119
|
+
if (onClickFn) {
|
|
120
|
+
onClickFn(e);
|
|
121
|
+
}
|
|
122
|
+
if (prevActiveTab === e.detail.tab) {
|
|
123
|
+
if (originalHref !== currentHref) {
|
|
124
|
+
this.context.resetTab(e.detail.tab, originalHref, tappedTab.originalRouteOptions);
|
|
125
|
+
}
|
|
126
|
+
} else {
|
|
127
|
+
if (this.props.onIonTabsWillChange) {
|
|
128
|
+
this.props.onIonTabsWillChange(new CustomEvent("ionTabWillChange", { detail: { tab: e.detail.tab } }));
|
|
129
|
+
}
|
|
130
|
+
if (this.props.onIonTabsDidChange) {
|
|
131
|
+
this.props.onIonTabsDidChange(new CustomEvent("ionTabDidChange", { detail: { tab: e.detail.tab } }));
|
|
132
|
+
}
|
|
133
|
+
this.setActiveTabOnContext(e.detail.tab);
|
|
134
|
+
this.context.changeTab(e.detail.tab, currentHref, e.detail.routeOptions);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
renderTabButton(activeTab) {
|
|
138
|
+
return (child) => {
|
|
139
|
+
if (child != null && child.props && (child.type === IonTabButton || child.type.isTabButton)) {
|
|
140
|
+
const href = child.props.tab === activeTab ? this.props.routeInfo?.pathname : this.state.tabs[child.props.tab].currentHref;
|
|
141
|
+
const routeOptions = child.props.tab === activeTab ? this.props.routeInfo?.routeOptions : this.state.tabs[child.props.tab].currentRouteOptions;
|
|
142
|
+
return React.cloneElement(child, {
|
|
143
|
+
href,
|
|
144
|
+
routeOptions,
|
|
145
|
+
onClick: (ev) => this.onTabButtonClick(ev, child.props.onClick)
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
return null;
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
render() {
|
|
152
|
+
const { activeTab } = this.state;
|
|
153
|
+
return /* @__PURE__ */ React.createElement(IonTabBarInner, { ...this.props, selectedTab: activeTab }, React.Children.map(this.props.children, this.renderTabButton(activeTab)));
|
|
154
|
+
}
|
|
155
|
+
static get contextType() {
|
|
156
|
+
return NavContext;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
const IonTabBarContainer = React.memo(({ forwardedRef, ...props }) => {
|
|
160
|
+
const context = useContext(NavContext);
|
|
161
|
+
return /* @__PURE__ */ React.createElement(
|
|
162
|
+
IonTabBarUnwrapped,
|
|
163
|
+
{
|
|
164
|
+
ref: forwardedRef,
|
|
165
|
+
...props,
|
|
166
|
+
routeInfo: props.routeInfo || context.routeInfo || { pathname: window.location.pathname },
|
|
167
|
+
onSetCurrentTab: context.setCurrentTab
|
|
168
|
+
},
|
|
169
|
+
props.children
|
|
170
|
+
);
|
|
171
|
+
});
|
|
172
|
+
export const IonTabBar = createForwardRef(IonTabBarContainer, "IonTabBar");
|
|
173
|
+
//# sourceMappingURL=IonTabBar.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/navigation/IonTabBar.tsx"],
|
|
4
|
+
"sourcesContent": ["import type { JSX as LocalJSX } from '@ionic/core/components';\nimport React, { useContext } from 'react';\n\nimport { NavContext } from '../../contexts/NavContext';\nimport type { RouteInfo } from '../../models';\nimport type { IonicReactProps } from '../IonicReactProps';\nimport { IonTabBarInner } from '../inner-proxies';\nimport { createForwardRef } from '../utils';\n\nimport { IonTabButton } from './IonTabButton';\n\ntype IonTabBarProps = LocalJSX.IonTabBar &\n IonicReactProps & {\n onIonTabsDidChange?: (event: CustomEvent<{ tab: string }>) => void;\n onIonTabsWillChange?: (event: CustomEvent<{ tab: string }>) => void;\n slot?: 'bottom' | 'top';\n style?: { [key: string]: string };\n };\n\ninterface InternalProps extends IonTabBarProps {\n forwardedRef?: React.ForwardedRef<HTMLIonIconElement>;\n onSetCurrentTab: (tab: string, routeInfo: RouteInfo) => void;\n routeInfo: RouteInfo;\n}\n\ninterface TabUrls {\n originalHref: string;\n currentHref: string;\n originalRouteOptions?: unknown;\n currentRouteOptions?: unknown;\n}\n\ninterface IonTabBarState {\n activeTab?: string;\n tabs: { [key: string]: TabUrls };\n}\n\n// TODO(FW-2959): types\n\nclass IonTabBarUnwrapped extends React.PureComponent<InternalProps, IonTabBarState> {\n context!: React.ContextType<typeof NavContext>;\n\n constructor(props: InternalProps) {\n super(props);\n const tabs: { [key: string]: TabUrls } = {};\n React.Children.forEach((props as any).children, (child: any) => {\n if (\n child != null &&\n typeof child === 'object' &&\n child.props &&\n (child.type === IonTabButton || child.type.isTabButton)\n ) {\n tabs[child.props.tab] = {\n originalHref: child.props.href,\n currentHref: child.props.href,\n originalRouteOptions:\n child.props.href === props.routeInfo?.pathname ? props.routeInfo?.routeOptions : undefined,\n currentRouteOptions:\n child.props.href === props.routeInfo?.pathname ? props.routeInfo?.routeOptions : undefined,\n };\n }\n });\n\n this.state = {\n tabs,\n };\n\n this.onTabButtonClick = this.onTabButtonClick.bind(this);\n this.renderTabButton = this.renderTabButton.bind(this);\n this.setActiveTabOnContext = this.setActiveTabOnContext.bind(this);\n this.selectTab = this.selectTab.bind(this);\n }\n\n componentDidMount() {\n const tabs = this.state.tabs;\n const tabKeys = Object.keys(tabs);\n const activeTab = tabKeys.find((key) => {\n const href = tabs[key].originalHref;\n return this.props.routeInfo!.pathname.startsWith(href);\n });\n\n if (activeTab) {\n this.setState({\n activeTab,\n });\n }\n }\n\n componentDidUpdate() {\n if (this.state.activeTab) {\n this.setActiveTabOnContext(this.state.activeTab);\n }\n }\n\n // eslint-disable-next-line\n setActiveTabOnContext = (_tab: string) => {};\n\n selectTab(tab: string) {\n const tabUrl = this.state.tabs[tab];\n if (tabUrl) {\n this.onTabButtonClick(\n new CustomEvent('ionTabButtonClick', {\n detail: {\n href: tabUrl.currentHref,\n tab,\n selected: tab === this.state.activeTab,\n routeOptions: undefined,\n },\n })\n );\n return true;\n }\n return false;\n }\n\n static getDerivedStateFromProps(props: InternalProps, state: IonTabBarState) {\n const tabs = { ...state.tabs };\n const tabKeys = Object.keys(state.tabs);\n const activeTab = tabKeys.find((key) => {\n const href = state.tabs[key].originalHref;\n return props.routeInfo!.pathname.startsWith(href);\n });\n\n // Check to see if the tab button href has changed, and if so, update it in the tabs state\n React.Children.forEach((props as any).children, (child: any) => {\n if (\n child != null &&\n typeof child === 'object' &&\n child.props &&\n (child.type === IonTabButton || child.type.isTabButton)\n ) {\n const tab = tabs[child.props.tab];\n if (!tab || tab.originalHref !== child.props.href) {\n tabs[child.props.tab] = {\n originalHref: child.props.href,\n currentHref: child.props.href,\n originalRouteOptions: child.props.routeOptions,\n currentRouteOptions: child.props.routeOptions,\n };\n }\n }\n });\n\n const { activeTab: prevActiveTab } = state;\n if (activeTab && prevActiveTab) {\n const prevHref = state.tabs[prevActiveTab].currentHref;\n const prevRouteOptions = state.tabs[prevActiveTab].currentRouteOptions;\n if (\n activeTab !== prevActiveTab ||\n prevHref !== props.routeInfo?.pathname ||\n prevRouteOptions !== props.routeInfo?.routeOptions\n ) {\n tabs[activeTab] = {\n originalHref: tabs[activeTab].originalHref,\n currentHref: props.routeInfo!.pathname + (props.routeInfo!.search || ''),\n originalRouteOptions: tabs[activeTab].originalRouteOptions,\n currentRouteOptions: props.routeInfo?.routeOptions,\n };\n if (props.routeInfo.routeAction === 'pop' && activeTab !== prevActiveTab) {\n // If navigating back and the tabs change, set the prev tab back to its original href\n tabs[prevActiveTab] = {\n originalHref: tabs[prevActiveTab].originalHref,\n currentHref: tabs[prevActiveTab].originalHref,\n originalRouteOptions: tabs[prevActiveTab].originalRouteOptions,\n currentRouteOptions: tabs[prevActiveTab].currentRouteOptions,\n };\n }\n }\n }\n\n activeTab && props.onSetCurrentTab(activeTab, props.routeInfo);\n\n return {\n activeTab,\n tabs,\n };\n }\n\n private onTabButtonClick(\n e: CustomEvent<{ href: string; selected: boolean; tab: string; routeOptions: unknown }>,\n onClickFn?: (e: any) => void\n ) {\n const tappedTab = this.state.tabs[e.detail.tab];\n const originalHref = tappedTab.originalHref;\n const currentHref = e.detail.href;\n const { activeTab: prevActiveTab } = this.state;\n\n if (onClickFn) {\n /**\n * If the user provides an onClick function, we call it\n * with the original event.\n */\n onClickFn(e);\n }\n\n // this.props.onSetCurrentTab(e.detail.tab, this.props.routeInfo);\n // Clicking the current tab will bring you back to the original href\n if (prevActiveTab === e.detail.tab) {\n if (originalHref !== currentHref) {\n this.context.resetTab(e.detail.tab, originalHref, tappedTab.originalRouteOptions);\n }\n } else {\n if (this.props.onIonTabsWillChange) {\n this.props.onIonTabsWillChange(new CustomEvent('ionTabWillChange', { detail: { tab: e.detail.tab } }));\n }\n if (this.props.onIonTabsDidChange) {\n this.props.onIonTabsDidChange(new CustomEvent('ionTabDidChange', { detail: { tab: e.detail.tab } }));\n }\n this.setActiveTabOnContext(e.detail.tab);\n this.context.changeTab(e.detail.tab, currentHref, e.detail.routeOptions);\n }\n }\n\n private renderTabButton(activeTab: string | null | undefined) {\n return (\n child:\n | React.ReactElement<LocalJSX.IonTabButton & { onClick: (e: any) => void; routeOptions?: unknown }>\n | null\n | undefined\n ) => {\n if (child != null && child.props && (child.type === IonTabButton || (child as any).type.isTabButton)) {\n const href =\n child.props.tab === activeTab\n ? this.props.routeInfo?.pathname\n : this.state.tabs[child.props.tab!].currentHref;\n const routeOptions =\n child.props.tab === activeTab\n ? this.props.routeInfo?.routeOptions\n : this.state.tabs[child.props.tab!].currentRouteOptions;\n\n return React.cloneElement(child, {\n href,\n routeOptions,\n onClick: (ev: CustomEvent) => this.onTabButtonClick(ev, child.props.onClick),\n });\n }\n return null;\n };\n }\n\n render() {\n const { activeTab } = this.state;\n return (\n <IonTabBarInner {...this.props} selectedTab={activeTab}>\n {React.Children.map(this.props.children as any, this.renderTabButton(activeTab))}\n </IonTabBarInner>\n );\n }\n\n static get contextType() {\n return NavContext;\n }\n}\n\nconst IonTabBarContainer: React.FC<InternalProps> = React.memo<InternalProps>(({ forwardedRef, ...props }) => {\n const context = useContext(NavContext);\n return (\n <IonTabBarUnwrapped\n ref={forwardedRef}\n {...(props as any)}\n routeInfo={props.routeInfo || context.routeInfo || { pathname: window.location.pathname }}\n onSetCurrentTab={context.setCurrentTab}\n >\n {props.children}\n </IonTabBarUnwrapped>\n );\n});\n\nexport const IonTabBar = createForwardRef<IonTabBarProps, HTMLIonTabBarElement>(IonTabBarContainer, 'IonTabBar');\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { IonTabButtonInner } from "../inner-proxies";
|
|
4
|
+
export const IonTabButton = /* @__PURE__ */ (() => class extends React.Component {
|
|
5
|
+
constructor(props) {
|
|
6
|
+
super(props);
|
|
7
|
+
this.handleIonTabButtonClick = this.handleIonTabButtonClick.bind(this);
|
|
8
|
+
}
|
|
9
|
+
handleIonTabButtonClick() {
|
|
10
|
+
if (this.props.onClick) {
|
|
11
|
+
this.props.onClick(
|
|
12
|
+
new CustomEvent("ionTabButtonClick", {
|
|
13
|
+
detail: {
|
|
14
|
+
tab: this.props.tab,
|
|
15
|
+
href: this.props.href,
|
|
16
|
+
routeOptions: this.props.routerOptions
|
|
17
|
+
}
|
|
18
|
+
})
|
|
19
|
+
);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
render() {
|
|
23
|
+
const { onClick, ...rest } = this.props;
|
|
24
|
+
return /* @__PURE__ */ React.createElement(IonTabButtonInner, { onIonTabButtonClick: this.handleIonTabButtonClick, ...rest });
|
|
25
|
+
}
|
|
26
|
+
static get displayName() {
|
|
27
|
+
return "IonTabButton";
|
|
28
|
+
}
|
|
29
|
+
})();
|
|
30
|
+
//# sourceMappingURL=IonTabButton.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/navigation/IonTabButton.tsx"],
|
|
4
|
+
"sourcesContent": ["import type { JSX as LocalJSX } from '@ionic/core/components';\nimport React from 'react';\n\nimport type { RouterOptions } from '../../models';\nimport type { IonicReactProps } from '../IonicReactProps';\nimport { IonTabButtonInner } from '../inner-proxies';\n\ntype Props = LocalJSX.IonTabButton &\n IonicReactProps & {\n routerOptions?: RouterOptions;\n ref?: React.Ref<HTMLIonTabButtonElement>;\n onClick?: (e: CustomEvent) => void;\n };\n\nexport const IonTabButton = /*@__PURE__*/ (() =>\n class extends React.Component<Props> {\n constructor(props: Props) {\n super(props);\n this.handleIonTabButtonClick = this.handleIonTabButtonClick.bind(this);\n }\n\n handleIonTabButtonClick() {\n if (this.props.onClick) {\n this.props.onClick(\n new CustomEvent('ionTabButtonClick', {\n detail: {\n tab: this.props.tab,\n href: this.props.href,\n routeOptions: this.props.routerOptions,\n },\n })\n );\n }\n }\n\n render() {\n /**\n * onClick is excluded from the props, since it has a custom\n * implementation within IonTabBar.tsx. Calling onClick within this\n * component would result in duplicate handler calls.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { onClick, ...rest } = this.props;\n return <IonTabButtonInner onIonTabButtonClick={this.handleIonTabButtonClick} {...rest}></IonTabButtonInner>;\n }\n\n static get displayName() {\n return 'IonTabButton';\n }\n })();\n"],
|
|
5
|
+
"mappings": ";AACA,OAAO,WAAW;AAIlB,SAAS,yBAAyB;AAS3B,aAAM,eAA8B,uBACzC,cAAc,MAAM,UAAiB;AAAA,EACnC,YAAY,OAAc;AACxB,UAAM,KAAK;AACX,SAAK,0BAA0B,KAAK,wBAAwB,KAAK,IAAI;AAAA,EACvE;AAAA,EAEA,0BAA0B;AACxB,QAAI,KAAK,MAAM,SAAS;AACtB,WAAK,MAAM;AAAA,QACT,IAAI,YAAY,qBAAqB;AAAA,UACnC,QAAQ;AAAA,YACN,KAAK,KAAK,MAAM;AAAA,YAChB,MAAM,KAAK,MAAM;AAAA,YACjB,cAAc,KAAK,MAAM;AAAA,UAC3B;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAAA,EAEA,SAAS;AAOP,UAAM,EAAE,SAAS,GAAG,KAAK,IAAI,KAAK;AAClC,WAAO,oCAAC,qBAAkB,qBAAqB,KAAK,yBAA0B,GAAG,MAAM;AAAA,EACzF;AAAA,EAEA,WAAW,cAAc;AACvB,WAAO;AAAA,EACT;AACF,GAAG;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
import React, { Fragment } from "react";
|
|
3
|
+
import { NavContext } from "../../contexts/NavContext";
|
|
4
|
+
import PageManager from "../../routing/PageManager";
|
|
5
|
+
import { HTMLElementSSR } from "../../utils/HTMLElementSSR";
|
|
6
|
+
import { IonRouterOutlet } from "../IonRouterOutlet";
|
|
7
|
+
import { IonTabBar } from "./IonTabBar";
|
|
8
|
+
import { IonTabsContext } from "./IonTabsContext";
|
|
9
|
+
class IonTabsElement extends HTMLElementSSR {
|
|
10
|
+
constructor() {
|
|
11
|
+
super();
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
if (typeof window !== "undefined" && window.customElements) {
|
|
15
|
+
const element = window.customElements.get("ion-tabs");
|
|
16
|
+
if (!element) {
|
|
17
|
+
window.customElements.define("ion-tabs", IonTabsElement);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
const hostStyles = {
|
|
21
|
+
display: "flex",
|
|
22
|
+
position: "absolute",
|
|
23
|
+
top: "0",
|
|
24
|
+
left: "0",
|
|
25
|
+
right: "0",
|
|
26
|
+
bottom: "0",
|
|
27
|
+
flexDirection: "column",
|
|
28
|
+
width: "100%",
|
|
29
|
+
height: "100%",
|
|
30
|
+
contain: "layout size style"
|
|
31
|
+
};
|
|
32
|
+
const tabsInner = {
|
|
33
|
+
position: "relative",
|
|
34
|
+
flex: 1,
|
|
35
|
+
contain: "layout size style"
|
|
36
|
+
};
|
|
37
|
+
export const IonTabs = /* @__PURE__ */ (() => class extends React.Component {
|
|
38
|
+
constructor(props) {
|
|
39
|
+
super(props);
|
|
40
|
+
this.routerOutletRef = React.createRef();
|
|
41
|
+
this.tabBarRef = React.createRef();
|
|
42
|
+
this.ionTabContextState = {
|
|
43
|
+
activeTab: void 0,
|
|
44
|
+
selectTab: () => false
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
componentDidMount() {
|
|
48
|
+
if (this.tabBarRef.current) {
|
|
49
|
+
this.ionTabContextState.activeTab = this.tabBarRef.current.state.activeTab;
|
|
50
|
+
this.tabBarRef.current.setActiveTabOnContext = (tab) => {
|
|
51
|
+
this.ionTabContextState.activeTab = tab;
|
|
52
|
+
};
|
|
53
|
+
this.ionTabContextState.selectTab = this.tabBarRef.current.selectTab;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
render() {
|
|
57
|
+
let outlet;
|
|
58
|
+
let tabBar;
|
|
59
|
+
const { className, onIonTabsDidChange, onIonTabsWillChange, ...props } = this.props;
|
|
60
|
+
const children = typeof this.props.children === "function" ? this.props.children(this.ionTabContextState) : this.props.children;
|
|
61
|
+
React.Children.forEach(children, (child) => {
|
|
62
|
+
if (child == null || typeof child !== "object" || !child.hasOwnProperty("type")) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
if (child.type === IonRouterOutlet || child.type.isRouterOutlet) {
|
|
66
|
+
outlet = React.cloneElement(child);
|
|
67
|
+
} else if (child.type === Fragment && child.props.children[0].type === IonRouterOutlet) {
|
|
68
|
+
outlet = child.props.children[0];
|
|
69
|
+
}
|
|
70
|
+
let childProps = {
|
|
71
|
+
ref: this.tabBarRef
|
|
72
|
+
};
|
|
73
|
+
if (onIonTabsDidChange !== void 0) {
|
|
74
|
+
childProps = {
|
|
75
|
+
...childProps,
|
|
76
|
+
onIonTabsDidChange
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
if (onIonTabsWillChange !== void 0) {
|
|
80
|
+
childProps = {
|
|
81
|
+
...childProps,
|
|
82
|
+
onIonTabsWillChange
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
if (child.type === IonTabBar || child.type.isTabBar) {
|
|
86
|
+
tabBar = React.cloneElement(child, childProps);
|
|
87
|
+
} else if (child.type === Fragment && (child.props.children[1].type === IonTabBar || child.props.children[1].type.isTabBar)) {
|
|
88
|
+
tabBar = React.cloneElement(child.props.children[1], childProps);
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
if (!outlet) {
|
|
92
|
+
throw new Error("IonTabs must contain an IonRouterOutlet");
|
|
93
|
+
}
|
|
94
|
+
if (!tabBar) {
|
|
95
|
+
throw new Error("IonTabs needs a IonTabBar");
|
|
96
|
+
}
|
|
97
|
+
return /* @__PURE__ */ React.createElement(IonTabsContext.Provider, { value: this.ionTabContextState }, this.context.hasIonicRouter() ? /* @__PURE__ */ React.createElement(PageManager, { className: className ? `${className}` : "", routeInfo: this.context.routeInfo, ...props }, /* @__PURE__ */ React.createElement("ion-tabs", { className: "ion-tabs", style: hostStyles }, tabBar.props.slot === "top" ? tabBar : null, /* @__PURE__ */ React.createElement("div", { style: tabsInner, className: "tabs-inner" }, outlet), tabBar.props.slot === "bottom" ? tabBar : null)) : /* @__PURE__ */ React.createElement("div", { className: className ? `${className}` : "ion-tabs", ...props, style: hostStyles }, tabBar.props.slot === "top" ? tabBar : null, /* @__PURE__ */ React.createElement("div", { style: tabsInner, className: "tabs-inner" }, outlet), tabBar.props.slot === "bottom" ? tabBar : null));
|
|
98
|
+
}
|
|
99
|
+
static get contextType() {
|
|
100
|
+
return NavContext;
|
|
101
|
+
}
|
|
102
|
+
})();
|
|
103
|
+
//# sourceMappingURL=IonTabs.js.map
|