@ionic/angular 8.8.9-dev.11780414486.1df2bd72 → 8.8.9-dev.11780493108.1d8e1a89
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/app-initialize.d.ts +3 -0
- package/common/directives/control-value-accessors/index.d.ts +1 -0
- package/common/directives/control-value-accessors/value-accessor.d.ts +36 -0
- package/common/directives/navigation/back-button.d.ts +23 -0
- package/common/directives/navigation/nav-params.d.ts +45 -0
- package/common/directives/navigation/nav.d.ts +21 -0
- package/common/directives/navigation/router-link-delegate.d.ts +60 -0
- package/common/directives/navigation/router-outlet.d.ts +104 -0
- package/common/directives/navigation/stack-controller.d.ts +42 -0
- package/common/directives/navigation/stack-utils.d.ts +38 -0
- package/common/directives/navigation/tabs.d.ts +83 -0
- package/common/index.d.ts +22 -0
- package/common/overlays/modal.d.ts +62 -0
- package/common/overlays/popover.d.ts +46 -0
- package/common/providers/angular-delegate.d.ts +28 -0
- package/common/providers/config.d.ts +11 -0
- package/common/providers/dom-controller.d.ts +16 -0
- package/common/providers/menu-controller.d.ts +78 -0
- package/common/providers/nav-controller.d.ts +116 -0
- package/common/providers/platform.d.ts +174 -0
- package/common/types/interfaces.d.ts +8 -0
- package/common/types/ionic-lifecycle-hooks.d.ts +27 -0
- package/common/types/overlay-options.d.ts +16 -0
- package/common/utils/overlay.d.ts +21 -0
- package/common/utils/proxy.d.ts +8 -0
- package/common/utils/routing.d.ts +28 -0
- package/common/utils/util.d.ts +1 -0
- 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/bundle.ionic.css +1 -0
- package/css/ionic/bundle.ionic.css.map +1 -0
- package/css/ionic/core.ionic.css +1 -0
- package/css/ionic/core.ionic.css.map +1 -0
- package/css/ionic/global.bundle.ionic.css +1 -0
- package/css/ionic/global.bundle.ionic.css.map +1 -0
- package/css/ionic/ionic-swiper.ionic.css +1 -0
- package/css/ionic/ionic-swiper.ionic.css.map +1 -0
- package/css/ionic/link.ionic.css +1 -0
- package/css/ionic/link.ionic.css.map +1 -0
- package/css/ionic/structure.ionic.css +1 -0
- package/css/ionic/structure.ionic.css.map +1 -0
- package/css/ionic/typography.ionic.css +1 -0
- package/css/ionic/typography.ionic.css.map +1 -0
- package/css/ionic/utils.bundle.ionic.css +1 -0
- package/css/ionic/utils.bundle.ionic.css.map +1 -0
- 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/directives/angular-component-lib/utils.d.ts +9 -0
- package/directives/control-value-accessors/boolean-value-accessor.d.ts +10 -0
- package/directives/control-value-accessors/index.d.ts +4 -0
- package/directives/control-value-accessors/numeric-value-accessor.d.ts +11 -0
- package/directives/control-value-accessors/select-value-accessor.d.ts +9 -0
- package/directives/control-value-accessors/text-value-accessor.d.ts +9 -0
- package/directives/navigation/ion-back-button.d.ts +9 -0
- package/directives/navigation/ion-nav.d.ts +8 -0
- package/directives/navigation/ion-router-outlet.d.ts +25 -0
- package/directives/navigation/ion-tabs.d.ts +13 -0
- package/directives/navigation/router-link-delegate.d.ts +16 -0
- package/directives/overlays/modal.d.ts +6 -0
- package/directives/overlays/popover.d.ts +6 -0
- package/directives/proxies-list.d.ts +2 -0
- package/{types/ionic-angular.d.ts → directives/proxies.d.ts} +408 -642
- package/directives/validators/index.d.ts +2 -0
- package/directives/validators/max-validator.d.ts +12 -0
- package/directives/validators/min-validator.d.ts +12 -0
- package/esm2022/app-initialize.mjs +29 -0
- package/esm2022/common/directives/control-value-accessors/index.mjs +2 -0
- package/esm2022/common/directives/control-value-accessors/value-accessor.mjs +153 -0
- package/esm2022/common/directives/navigation/back-button.mjs +61 -0
- package/esm2022/common/directives/navigation/nav-params.mjs +47 -0
- package/esm2022/common/directives/navigation/nav.mjs +49 -0
- package/esm2022/common/directives/navigation/router-link-delegate.mjs +156 -0
- package/esm2022/common/directives/navigation/router-outlet.mjs +480 -0
- package/esm2022/common/directives/navigation/stack-controller.mjs +280 -0
- package/esm2022/common/directives/navigation/stack-utils.mjs +73 -0
- package/esm2022/common/directives/navigation/tabs.mjs +279 -0
- package/esm2022/common/index.mjs +20 -0
- package/esm2022/common/ionic-angular-common.mjs +5 -0
- package/esm2022/common/overlays/modal.mjs +103 -0
- package/esm2022/common/overlays/popover.mjs +91 -0
- package/esm2022/common/providers/angular-delegate.mjs +203 -0
- package/esm2022/common/providers/config.mjs +45 -0
- package/esm2022/common/providers/dom-controller.mjs +45 -0
- package/esm2022/common/providers/menu-controller.mjs +114 -0
- package/esm2022/common/providers/nav-controller.mjs +235 -0
- package/esm2022/common/providers/platform.mjs +258 -0
- package/esm2022/common/types/interfaces.mjs +2 -0
- package/esm2022/common/types/ionic-lifecycle-hooks.mjs +5 -0
- package/esm2022/common/types/overlay-options.mjs +2 -0
- package/esm2022/common/utils/overlay.mjs +26 -0
- package/esm2022/common/utils/proxy.mjs +47 -0
- package/esm2022/common/utils/routing.mjs +55 -0
- package/esm2022/common/utils/util.mjs +10 -0
- package/esm2022/directives/angular-component-lib/utils.mjs +59 -0
- package/esm2022/directives/control-value-accessors/boolean-value-accessor.mjs +42 -0
- package/esm2022/directives/control-value-accessors/index.mjs +5 -0
- package/esm2022/directives/control-value-accessors/numeric-value-accessor.mjs +50 -0
- package/esm2022/directives/control-value-accessors/select-value-accessor.mjs +39 -0
- package/esm2022/directives/control-value-accessors/text-value-accessor.mjs +38 -0
- package/esm2022/directives/navigation/ion-back-button.mjs +24 -0
- package/esm2022/directives/navigation/ion-nav.mjs +21 -0
- package/esm2022/directives/navigation/ion-router-outlet.mjs +52 -0
- package/esm2022/directives/navigation/ion-tabs.mjs +59 -0
- package/esm2022/directives/navigation/router-link-delegate.mjs +32 -0
- package/esm2022/directives/overlays/modal.mjs +22 -0
- package/esm2022/directives/overlays/popover.mjs +18 -0
- package/esm2022/directives/proxies-list.mjs +92 -0
- package/esm2022/directives/proxies.mjs +2438 -0
- package/esm2022/directives/validators/index.mjs +3 -0
- package/esm2022/directives/validators/max-validator.mjs +27 -0
- package/esm2022/directives/validators/min-validator.mjs +27 -0
- package/esm2022/index.mjs +32 -0
- package/esm2022/ionic-angular.mjs +5 -0
- package/esm2022/ionic-module.mjs +111 -0
- package/esm2022/providers/action-sheet-controller.mjs +19 -0
- package/esm2022/providers/alert-controller.mjs +19 -0
- package/esm2022/providers/animation-controller.mjs +38 -0
- package/esm2022/providers/gesture-controller.mjs +33 -0
- package/esm2022/providers/loading-controller.mjs +19 -0
- package/esm2022/providers/menu-controller.mjs +19 -0
- package/esm2022/providers/modal-controller.mjs +26 -0
- package/esm2022/providers/picker-controller.mjs +22 -0
- package/esm2022/providers/popover-controller.mjs +19 -0
- package/esm2022/providers/toast-controller.mjs +19 -0
- package/esm2022/standalone/directives/angular-component-lib/utils.mjs +59 -0
- package/esm2022/standalone/directives/checkbox.mjs +76 -0
- package/esm2022/standalone/directives/datetime.mjs +95 -0
- package/esm2022/standalone/directives/icon.mjs +35 -0
- package/esm2022/standalone/directives/index.mjs +13 -0
- package/esm2022/standalone/directives/input-otp.mjs +90 -0
- package/esm2022/standalone/directives/input.mjs +113 -0
- package/esm2022/standalone/directives/proxies.mjs +2326 -0
- package/esm2022/standalone/directives/radio-group.mjs +60 -0
- package/esm2022/standalone/directives/range.mjs +78 -0
- package/esm2022/standalone/directives/searchbar.mjs +82 -0
- package/esm2022/standalone/directives/segment.mjs +60 -0
- package/esm2022/standalone/directives/select.mjs +84 -0
- package/esm2022/standalone/directives/textarea.mjs +91 -0
- package/esm2022/standalone/directives/toggle.mjs +76 -0
- package/esm2022/standalone/index.mjs +25 -0
- package/esm2022/standalone/ionic-angular-standalone.mjs +5 -0
- package/esm2022/standalone/navigation/back-button.mjs +32 -0
- package/esm2022/standalone/navigation/nav.mjs +28 -0
- package/esm2022/standalone/navigation/router-link-delegate.mjs +28 -0
- package/esm2022/standalone/navigation/router-outlet.mjs +60 -0
- package/esm2022/standalone/navigation/tabs.mjs +58 -0
- package/esm2022/standalone/overlays/modal.mjs +32 -0
- package/esm2022/standalone/overlays/popover.mjs +28 -0
- package/esm2022/standalone/providers/action-sheet-controller.mjs +21 -0
- package/esm2022/standalone/providers/alert-controller.mjs +21 -0
- package/esm2022/standalone/providers/animation-controller.mjs +38 -0
- package/esm2022/standalone/providers/gesture-controller.mjs +33 -0
- package/esm2022/standalone/providers/ionic-angular.mjs +38 -0
- package/esm2022/standalone/providers/loading-controller.mjs +21 -0
- package/esm2022/standalone/providers/menu-controller.mjs +19 -0
- package/esm2022/standalone/providers/modal-controller.mjs +28 -0
- package/esm2022/standalone/providers/picker-controller.mjs +24 -0
- package/esm2022/standalone/providers/popover-controller.mjs +21 -0
- package/esm2022/standalone/providers/toast-controller.mjs +21 -0
- package/fesm2022/ionic-angular-common.mjs +79 -68
- package/fesm2022/ionic-angular-common.mjs.map +1 -1
- package/fesm2022/ionic-angular-standalone.mjs +882 -903
- package/fesm2022/ionic-angular-standalone.mjs.map +1 -1
- package/fesm2022/ionic-angular.mjs +744 -1065
- package/fesm2022/ionic-angular.mjs.map +1 -1
- package/index.d.ts +27 -0
- package/ionic-module.d.ts +28 -0
- package/package.json +16 -11
- package/providers/action-sheet-controller.d.ts +8 -0
- package/providers/alert-controller.d.ts +8 -0
- package/providers/animation-controller.d.ts +25 -0
- package/providers/gesture-controller.d.ts +13 -0
- package/providers/loading-controller.d.ts +8 -0
- package/providers/menu-controller.d.ts +7 -0
- package/providers/modal-controller.d.ts +12 -0
- package/providers/picker-controller.d.ts +11 -0
- package/providers/popover-controller.d.ts +9 -0
- package/providers/toast-controller.d.ts +8 -0
- package/schematics/add/index.js +1 -27
- package/schematics/utils/ast.js +2 -1
- package/schematics/utils/config.js +11 -10
- package/schematics/utils/package.js +2 -1
- package/standalone/directives/angular-component-lib/utils.d.ts +9 -0
- package/standalone/directives/checkbox.d.ts +30 -0
- package/standalone/directives/datetime.d.ts +30 -0
- package/standalone/directives/icon.d.ts +9 -0
- package/standalone/directives/index.d.ts +12 -0
- package/standalone/directives/input-otp.d.ts +49 -0
- package/standalone/directives/input.d.ts +47 -0
- package/standalone/directives/proxies.d.ts +1053 -0
- package/standalone/directives/radio-group.d.ts +18 -0
- package/standalone/directives/range.d.ts +47 -0
- package/standalone/directives/searchbar.d.ts +45 -0
- package/standalone/directives/segment.d.ts +19 -0
- package/standalone/directives/select.d.ts +34 -0
- package/standalone/directives/textarea.d.ts +37 -0
- package/standalone/directives/toggle.d.ts +28 -0
- package/standalone/index.d.ts +23 -0
- package/standalone/navigation/back-button.d.ts +9 -0
- package/standalone/navigation/nav.d.ts +8 -0
- package/standalone/navigation/router-link-delegate.d.ts +10 -0
- package/standalone/navigation/router-outlet.d.ts +25 -0
- package/standalone/navigation/tabs.d.ts +13 -0
- package/standalone/overlays/modal.d.ts +6 -0
- package/standalone/overlays/popover.d.ts +6 -0
- package/standalone/providers/action-sheet-controller.d.ts +8 -0
- package/standalone/providers/alert-controller.d.ts +8 -0
- package/standalone/providers/animation-controller.d.ts +25 -0
- package/standalone/providers/gesture-controller.d.ts +13 -0
- package/standalone/providers/ionic-angular.d.ts +7 -0
- package/standalone/providers/loading-controller.d.ts +8 -0
- package/standalone/providers/menu-controller.d.ts +7 -0
- package/standalone/providers/modal-controller.d.ts +12 -0
- package/standalone/providers/picker-controller.d.ts +11 -0
- package/standalone/providers/popover-controller.d.ts +9 -0
- package/standalone/providers/toast-controller.d.ts +8 -0
- package/types/ionic-angular-common.d.ts +0 -1014
- package/types/ionic-angular-standalone.d.ts +0 -1560
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
import { Directive, ElementRef, EventEmitter, HostListener, Output, ViewChild, } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../../providers/nav-controller";
|
|
4
|
+
/**
|
|
5
|
+
* Extracts `queryParams` and `fragment` from a tab button's href for use
|
|
6
|
+
* as Angular `NavigationExtras`. Returns `undefined` when neither is present.
|
|
7
|
+
*/
|
|
8
|
+
const parseHrefExtras = (href) => {
|
|
9
|
+
if (!href) {
|
|
10
|
+
return undefined;
|
|
11
|
+
}
|
|
12
|
+
const hashIndex = href.indexOf('#');
|
|
13
|
+
// Treat a bare `#` (no fragment text) as no fragment.
|
|
14
|
+
const fragment = hashIndex >= 0 && hashIndex < href.length - 1 ? href.slice(hashIndex + 1) : undefined;
|
|
15
|
+
const beforeHash = hashIndex >= 0 ? href.slice(0, hashIndex) : href;
|
|
16
|
+
const queryIndex = beforeHash.indexOf('?');
|
|
17
|
+
const search = queryIndex >= 0 ? beforeHash.slice(queryIndex + 1) : '';
|
|
18
|
+
let queryParams;
|
|
19
|
+
if (search) {
|
|
20
|
+
const params = new URLSearchParams(search);
|
|
21
|
+
queryParams = {};
|
|
22
|
+
for (const key of new Set(params.keys())) {
|
|
23
|
+
const all = params.getAll(key);
|
|
24
|
+
queryParams[key] = all.length > 1 ? all : all[0];
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
if (!queryParams && fragment === undefined) {
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Build the result with only the populated keys so that a spread of the
|
|
32
|
+
* returned object does not overwrite saved `queryParams`/`fragment` with
|
|
33
|
+
* `undefined` (which `Object.assign`/spread would copy as a real key).
|
|
34
|
+
*/
|
|
35
|
+
const extras = {};
|
|
36
|
+
if (queryParams)
|
|
37
|
+
extras.queryParams = queryParams;
|
|
38
|
+
if (fragment !== undefined)
|
|
39
|
+
extras.fragment = fragment;
|
|
40
|
+
return extras;
|
|
41
|
+
};
|
|
42
|
+
class IonTabs {
|
|
43
|
+
navCtrl;
|
|
44
|
+
tabsInner;
|
|
45
|
+
/**
|
|
46
|
+
* Emitted before the tab view is changed.
|
|
47
|
+
*/
|
|
48
|
+
ionTabsWillChange = new EventEmitter();
|
|
49
|
+
/**
|
|
50
|
+
* Emitted after the tab view is changed.
|
|
51
|
+
*/
|
|
52
|
+
ionTabsDidChange = new EventEmitter();
|
|
53
|
+
tabBarSlot = 'bottom';
|
|
54
|
+
hasTab = false;
|
|
55
|
+
selectedTab;
|
|
56
|
+
leavingTab;
|
|
57
|
+
constructor(navCtrl) {
|
|
58
|
+
this.navCtrl = navCtrl;
|
|
59
|
+
}
|
|
60
|
+
ngAfterViewInit() {
|
|
61
|
+
/**
|
|
62
|
+
* Developers must pass at least one ion-tab
|
|
63
|
+
* inside of ion-tabs if they want to use a
|
|
64
|
+
* basic tab-based navigation without the
|
|
65
|
+
* history stack or URL updates associated
|
|
66
|
+
* with the router.
|
|
67
|
+
*/
|
|
68
|
+
const firstTab = this.tabs.length > 0 ? this.tabs.first : undefined;
|
|
69
|
+
if (firstTab) {
|
|
70
|
+
this.hasTab = true;
|
|
71
|
+
this.setActiveTab(firstTab.tab);
|
|
72
|
+
this.tabSwitch();
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
ngAfterContentInit() {
|
|
76
|
+
this.detectSlotChanges();
|
|
77
|
+
}
|
|
78
|
+
ngAfterContentChecked() {
|
|
79
|
+
this.detectSlotChanges();
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* @internal
|
|
83
|
+
*/
|
|
84
|
+
onStackWillChange({ enteringView, tabSwitch }) {
|
|
85
|
+
const stackId = enteringView.stackId;
|
|
86
|
+
if (tabSwitch && stackId !== undefined) {
|
|
87
|
+
this.ionTabsWillChange.emit({ tab: stackId });
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* @internal
|
|
92
|
+
*/
|
|
93
|
+
onStackDidChange({ enteringView, tabSwitch }) {
|
|
94
|
+
const stackId = enteringView.stackId;
|
|
95
|
+
if (tabSwitch && stackId !== undefined) {
|
|
96
|
+
if (this.tabBar) {
|
|
97
|
+
this.tabBar.selectedTab = stackId;
|
|
98
|
+
}
|
|
99
|
+
this.ionTabsDidChange.emit({ tab: stackId });
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* When a tab button is clicked, there are several scenarios:
|
|
104
|
+
* 1. If the selected tab is currently active (the tab button has been clicked
|
|
105
|
+
* again), then it should go to the root view for that tab.
|
|
106
|
+
*
|
|
107
|
+
* a. Get the saved root view from the router outlet. If the saved root view
|
|
108
|
+
* matches the tabRootUrl, set the route view to this view including the
|
|
109
|
+
* navigation extras. Any `queryParams` or `fragment` declared on the tab
|
|
110
|
+
* button's `href` are also forwarded.
|
|
111
|
+
* b. If the saved root view from the router outlet does not match, navigate
|
|
112
|
+
* to the tabRootUrl, forwarding any `queryParams`/`fragment` declared on
|
|
113
|
+
* the tab button's `href`.
|
|
114
|
+
*
|
|
115
|
+
* 2. If the current tab tab is not currently selected, get the last route
|
|
116
|
+
* view from the router outlet.
|
|
117
|
+
*
|
|
118
|
+
* a. If the last route view exists, navigate to that view including any
|
|
119
|
+
* navigation extras.
|
|
120
|
+
* b. If the last route view doesn't exist, then navigate to the default
|
|
121
|
+
* tabRootUrl, forwarding any `queryParams`/`fragment` declared on the
|
|
122
|
+
* tab button's `href`.
|
|
123
|
+
*/
|
|
124
|
+
select(tabOrEvent) {
|
|
125
|
+
const isTabString = typeof tabOrEvent === 'string';
|
|
126
|
+
const tab = isTabString ? tabOrEvent : tabOrEvent.detail.tab;
|
|
127
|
+
const href = isTabString ? undefined : tabOrEvent.detail.href;
|
|
128
|
+
/**
|
|
129
|
+
* If the tabs are not using the router, then
|
|
130
|
+
* the tab switch logic is handled by the tabs
|
|
131
|
+
* component itself.
|
|
132
|
+
*/
|
|
133
|
+
if (this.hasTab) {
|
|
134
|
+
this.setActiveTab(tab);
|
|
135
|
+
this.tabSwitch();
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
const alreadySelected = this.outlet.getActiveStackId() === tab;
|
|
139
|
+
const tabRootUrl = `${this.outlet.tabsPrefix}/${tab}`;
|
|
140
|
+
/**
|
|
141
|
+
* The href pathname is ignored here; tab routing is driven by `tabsPrefix/tab`.
|
|
142
|
+
* Only the query and fragment are forwarded as navigation extras.
|
|
143
|
+
*/
|
|
144
|
+
const hrefExtras = parseHrefExtras(href);
|
|
145
|
+
/**
|
|
146
|
+
* If this is a nested tab, prevent the event
|
|
147
|
+
* from bubbling otherwise the outer tabs
|
|
148
|
+
* will respond to this event too, causing
|
|
149
|
+
* the app to get directed to the wrong place.
|
|
150
|
+
*/
|
|
151
|
+
if (!isTabString) {
|
|
152
|
+
tabOrEvent.stopPropagation();
|
|
153
|
+
}
|
|
154
|
+
if (alreadySelected) {
|
|
155
|
+
const activeStackId = this.outlet.getActiveStackId();
|
|
156
|
+
const activeView = this.outlet.getLastRouteView(activeStackId);
|
|
157
|
+
// If on root tab, do not navigate to root tab again
|
|
158
|
+
if (activeView?.url === tabRootUrl) {
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
const rootView = this.outlet.getRootView(tab);
|
|
162
|
+
const navigationExtras = rootView && tabRootUrl === rootView.url && rootView.savedExtras;
|
|
163
|
+
return this.navCtrl.navigateRoot(tabRootUrl, {
|
|
164
|
+
...navigationExtras,
|
|
165
|
+
...hrefExtras,
|
|
166
|
+
animated: true,
|
|
167
|
+
animationDirection: 'back',
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
const lastRoute = this.outlet.getLastRouteView(tab);
|
|
172
|
+
/**
|
|
173
|
+
* If there is a lastRoute, goto that, otherwise goto the fallback url of the
|
|
174
|
+
* selected tab. When falling back to the tab root, honor query params and
|
|
175
|
+
* fragment declared on the tab button's href.
|
|
176
|
+
*/
|
|
177
|
+
const url = lastRoute?.url || tabRootUrl;
|
|
178
|
+
const navigationExtras = lastRoute?.savedExtras ?? (url === tabRootUrl ? hrefExtras : undefined);
|
|
179
|
+
return this.navCtrl.navigateRoot(url, {
|
|
180
|
+
...navigationExtras,
|
|
181
|
+
animated: true,
|
|
182
|
+
animationDirection: 'back',
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
setActiveTab(tab) {
|
|
187
|
+
const tabs = this.tabs;
|
|
188
|
+
const selectedTab = tabs.find((t) => t.tab === tab);
|
|
189
|
+
if (!selectedTab) {
|
|
190
|
+
console.error(`[Ionic Error]: Tab with id: "${tab}" does not exist`);
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
this.leavingTab = this.selectedTab;
|
|
194
|
+
this.selectedTab = selectedTab;
|
|
195
|
+
this.ionTabsWillChange.emit({ tab });
|
|
196
|
+
selectedTab.el.active = true;
|
|
197
|
+
}
|
|
198
|
+
tabSwitch() {
|
|
199
|
+
const { selectedTab, leavingTab } = this;
|
|
200
|
+
if (this.tabBar && selectedTab) {
|
|
201
|
+
this.tabBar.selectedTab = selectedTab.tab;
|
|
202
|
+
}
|
|
203
|
+
if (leavingTab?.tab !== selectedTab?.tab) {
|
|
204
|
+
if (leavingTab?.el) {
|
|
205
|
+
leavingTab.el.active = false;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
if (selectedTab) {
|
|
209
|
+
this.ionTabsDidChange.emit({ tab: selectedTab.tab });
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
getSelected() {
|
|
213
|
+
if (this.hasTab) {
|
|
214
|
+
return this.selectedTab?.tab;
|
|
215
|
+
}
|
|
216
|
+
return this.outlet.getActiveStackId();
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Detects changes to the slot attribute of the tab bar.
|
|
220
|
+
*
|
|
221
|
+
* If the slot attribute has changed, then the tab bar
|
|
222
|
+
* should be relocated to the new slot position.
|
|
223
|
+
*/
|
|
224
|
+
detectSlotChanges() {
|
|
225
|
+
this.tabBars.forEach((tabBar) => {
|
|
226
|
+
// el is a protected attribute from the generated component wrapper
|
|
227
|
+
const currentSlot = tabBar.el.getAttribute('slot');
|
|
228
|
+
if (currentSlot !== this.tabBarSlot) {
|
|
229
|
+
this.tabBarSlot = currentSlot;
|
|
230
|
+
this.relocateTabBar();
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Relocates the tab bar to the new slot position.
|
|
236
|
+
*/
|
|
237
|
+
relocateTabBar() {
|
|
238
|
+
/**
|
|
239
|
+
* `el` is a protected attribute from the generated component wrapper.
|
|
240
|
+
* To avoid having to manually create the wrapper for tab bar, we
|
|
241
|
+
* cast the tab bar to any and access the protected attribute.
|
|
242
|
+
*/
|
|
243
|
+
const tabBar = this.tabBar.el;
|
|
244
|
+
if (this.tabBarSlot === 'top') {
|
|
245
|
+
/**
|
|
246
|
+
* A tab bar with a slot of "top" should be inserted
|
|
247
|
+
* at the top of the container.
|
|
248
|
+
*/
|
|
249
|
+
this.tabsInner.nativeElement.before(tabBar);
|
|
250
|
+
}
|
|
251
|
+
else {
|
|
252
|
+
/**
|
|
253
|
+
* A tab bar with a slot of "bottom" or without a slot
|
|
254
|
+
* should be inserted at the end of the container.
|
|
255
|
+
*/
|
|
256
|
+
this.tabsInner.nativeElement.after(tabBar);
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonTabs, deps: [{ token: i1.NavController }], target: i0.ɵɵFactoryTarget.Directive });
|
|
260
|
+
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: IonTabs, selector: "ion-tabs", outputs: { ionTabsWillChange: "ionTabsWillChange", ionTabsDidChange: "ionTabsDidChange" }, host: { listeners: { "ionTabButtonClick": "select($event)" } }, viewQueries: [{ propertyName: "tabsInner", first: true, predicate: ["tabsInner"], descendants: true, read: ElementRef, static: true }], ngImport: i0 });
|
|
261
|
+
}
|
|
262
|
+
export { IonTabs };
|
|
263
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonTabs, decorators: [{
|
|
264
|
+
type: Directive,
|
|
265
|
+
args: [{
|
|
266
|
+
selector: 'ion-tabs',
|
|
267
|
+
}]
|
|
268
|
+
}], ctorParameters: function () { return [{ type: i1.NavController }]; }, propDecorators: { tabsInner: [{
|
|
269
|
+
type: ViewChild,
|
|
270
|
+
args: ['tabsInner', { read: ElementRef, static: true }]
|
|
271
|
+
}], ionTabsWillChange: [{
|
|
272
|
+
type: Output
|
|
273
|
+
}], ionTabsDidChange: [{
|
|
274
|
+
type: Output
|
|
275
|
+
}], select: [{
|
|
276
|
+
type: HostListener,
|
|
277
|
+
args: ['ionTabButtonClick', ['$event']]
|
|
278
|
+
}] } });
|
|
279
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2NvbW1vbi9zcmMvZGlyZWN0aXZlcy9uYXZpZ2F0aW9uL3RhYnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFlBQVksRUFDWixNQUFNLEVBQ04sU0FBUyxHQUdWLE1BQU0sZUFBZSxDQUFDOzs7QUFPdkI7OztHQUdHO0FBQ0gsTUFBTSxlQUFlLEdBQUcsQ0FBQyxJQUF3QixFQUEyRCxFQUFFO0lBQzVHLElBQUksQ0FBQyxJQUFJLEVBQUU7UUFDVCxPQUFPLFNBQVMsQ0FBQztLQUNsQjtJQUVELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsc0RBQXNEO0lBQ3RELE1BQU0sUUFBUSxHQUFHLFNBQVMsSUFBSSxDQUFDLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3ZHLE1BQU0sVUFBVSxHQUFHLFNBQVMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFFcEUsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQyxNQUFNLE1BQU0sR0FBRyxVQUFVLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBRXZFLElBQUksV0FBK0IsQ0FBQztJQUNwQyxJQUFJLE1BQU0sRUFBRTtRQUNWLE1B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ZW50SW5pdCxcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG4gIEFmdGVyVmlld0luaXQsXG4gIFF1ZXJ5TGlzdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IE5hdkNvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvbmF2LWNvbnRyb2xsZXInO1xuXG5pbXBvcnQgeyBTdGFja0RpZENoYW5nZUV2ZW50LCBTdGFja1dpbGxDaGFuZ2VFdmVudCB9IGZyb20gJy4vc3RhY2stdXRpbHMnO1xuXG4vKipcbiAqIEV4dHJhY3RzIGBxdWVyeVBhcmFtc2AgYW5kIGBmcmFnbWVudGAgZnJvbSBhIHRhYiBidXR0b24ncyBocmVmIGZvciB1c2VcbiAqIGFzIEFuZ3VsYXIgYE5hdmlnYXRpb25FeHRyYXNgLiBSZXR1cm5zIGB1bmRlZmluZWRgIHdoZW4gbmVpdGhlciBpcyBwcmVzZW50LlxuICovXG5jb25zdCBwYXJzZUhyZWZFeHRyYXMgPSAoaHJlZjogc3RyaW5nIHwgdW5kZWZpbmVkKTogeyBxdWVyeVBhcmFtcz86IFBhcmFtczsgZnJhZ21lbnQ/OiBzdHJpbmcgfSB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmICghaHJlZikge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBoYXNoSW5kZXggPSBocmVmLmluZGV4T2YoJyMnKTtcbiAgLy8gVHJlYXQgYSBiYXJlIGAjYCAobm8gZnJhZ21lbnQgdGV4dCkgYXMgbm8gZnJhZ21lbnQuXG4gIGNvbnN0IGZyYWdtZW50ID0gaGFzaEluZGV4ID49IDAgJiYgaGFzaEluZGV4IDwgaHJlZi5sZW5ndGggLSAxID8gaHJlZi5zbGljZShoYXNoSW5kZXggKyAxKSA6IHVuZGVmaW5lZDtcbiAgY29uc3QgYmVmb3JlSGFzaCA9IGhhc2hJbmRleCA+PSAwID8gaHJlZi5zbGljZSgwLCBoYXNoSW5kZXgpIDogaHJlZjtcblxuICBjb25zdCBxdWVyeUluZGV4ID0gYmVmb3JlSGFzaC5pbmRleE9mKCc/Jyk7XG4gIGNvbnN0IHNlYXJjaCA9IHF1ZXJ5SW5kZXggPj0gMCA/IGJlZm9yZUhhc2guc2xpY2UocXVlcnlJbmRleCArIDEpIDogJyc7XG5cbiAgbGV0IHF1ZXJ5UGFyYW1zOiBQYXJhbXMgfCB1bmRlZmluZWQ7XG4gIGlmIChzZWFyY2gpIHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHNlYXJjaCk7XG4gICAgcXVlcnlQYXJhbXMgPSB7fTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBuZXcgU2V0KHBhcmFtcy5rZXlzKCkpKSB7XG4gICAgICBjb25zdCBhbGwgPSBwYXJhbXMuZ2V0QWxsKGtleSk7XG4gICAgICBxdWVyeVBhcmFtc1trZXldID0gYWxsLmxlbmd0aCA+IDEgPyBhbGwgOiBhbGxbMF07XG4gICAgfVxuICB9XG5cbiAgaWYgKCFxdWVyeVBhcmFtcyAmJiBmcmFnbWVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCB0aGUgcmVzdWx0IHdpdGggb25seSB0aGUgcG9wdWxhdGVkIGtleXMgc28gdGhhdCBhIHNwcmVhZCBvZiB0aGVcbiAgICogcmV0dXJuZWQgb2JqZWN0IGRvZXMgbm90IG92ZXJ3cml0ZSBzYXZlZCBgcXVlcnlQYXJhbXNgL2BmcmFnbWVudGAgd2l0aFxuICAgKiBgdW5kZWZpbmVkYCAod2hpY2ggYE9iamVjdC5hc3NpZ25gL3NwcmVhZCB3b3VsZCBjb3B5IGFzIGEgcmVhbCBrZXkpLlxuICAgKi9cbiAgY29uc3QgZXh0cmFzOiB7IHF1ZXJ5UGFyYW1zPzogUGFyYW1zOyBmcmFnbWVudD86IHN0cmluZyB9ID0ge307XG4gIGlmIChxdWVyeVBhcmFtcykgZXh0cmFzLnF1ZXJ5UGFyYW1zID0gcXVlcnlQYXJhbXM7XG4gIGlmIChmcmFnbWVudCAhPT0gdW5kZWZpbmVkKSBleHRyYXMuZnJhZ21lbnQgPSBmcmFnbWVudDtcbiAgcmV0dXJuIGV4dHJhcztcbn07XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ2lvbi10YWJzJyxcbn0pXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1jbGFzcy1zdWZmaXhcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBJb25UYWJzIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJDb250ZW50Q2hlY2tlZCB7XG4gIC8qKlxuICAgKiBOb3RlOiBUaGVzZSBtdXN0IGJlIHJlZGVjbGFyZWQgb24gZWFjaCBjaGlsZCBjbGFzcyBzaW5jZSBpdCBuZWVkc1xuICAgKiBhY2Nlc3MgdG8gZ2VuZXJhdGVkIGNvbXBvbmVudHMgc3VjaCBhcyBJb25Sb3V0ZXJPdXRsZXQgYW5kIElvblRhYkJhci5cbiAgICovXG4gIGFic3RyYWN0IG91dGxldDogYW55O1xuICBhYnN0cmFjdCB0YWJCYXI6IGFueTtcbiAgYWJzdHJhY3QgdGFiQmFyczogUXVlcnlMaXN0PGFueT47XG4gIGFic3RyYWN0IHRhYnM6IFF1ZXJ5TGlzdDxhbnk+O1xuXG4gIEBWaWV3Q2hpbGQoJ3RhYnNJbm5lcicsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pIHRhYnNJbm5lcjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG5cbiAgLyoqXG4gICAqIEVtaXR0ZWQgYmVmb3JlIHRoZSB0YWIgdmlldyBpcyBjaGFuZ2VkLlxuICAgKi9cbiAgQE91dHB1dCgpIGlvblRhYnNXaWxsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7IHRhYjogc3RyaW5nIH0+KCk7XG4gIC8qKlxuICAgKiBFbWl0dGVkIGFmdGVyIHRoZSB0YWIgdmlldyBpcyBjaGFuZ2VkLlxuICAgKi9cbiAgQE91dHB1dCgpIGlvblRhYnNEaWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHsgdGFiOiBzdHJpbmcgfT4oKTtcblxuICBwcml2YXRlIHRhYkJhclNsb3QgPSAnYm90dG9tJztcblxuICBwcml2YXRlIGhhc1RhYiA9IGZhbHNlO1xuICBwcml2YXRlIHNlbGVjdGVkVGFiPzogeyB0YWI6IHN0cmluZyB9O1xuICBwcml2YXRlIGxlYXZpbmdUYWI/OiBhbnk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBuYXZDdHJsOiBOYXZDb250cm9sbGVyKSB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAvKipcbiAgICAgKiBEZXZlbG9wZXJzIG11c3QgcGFzcyBhdCBsZWFzdCBvbmUgaW9uLXRhYlxuICAgICAqIGluc2lkZSBvZiBpb24tdGFicyBpZiB0aGV5IHdhbnQgdG8gdXNlIGFcbiAgICAgKiBiYXNpYyB0YWItYmFzZWQgbmF2aWdhdGlvbiB3aXRob3V0IHRoZVxuICAgICAqIGhpc3Rvcnkgc3RhY2sgb3IgVVJMIHVwZGF0ZXMgYXNzb2NpYXRlZFxuICAgICAqIHdpdGggdGhlIHJvdXRlci5cbiAgICAgKi9cbiAgICBjb25zdCBmaXJzdFRhYiA9IHRoaXMudGFicy5sZW5ndGggPiAwID8gdGhpcy50YWJzLmZpcnN0IDogdW5kZWZpbmVkO1xuXG4gICAgaWYgKGZpcnN0VGFiKSB7XG4gICAgICB0aGlzLmhhc1RhYiA9IHRydWU7XG4gICAgICB0aGlzLnNldEFjdGl2ZVRhYihmaXJzdFRhYi50YWIpO1xuICAgICAgdGhpcy50YWJTd2l0Y2goKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5kZXRlY3RTbG90Q2hhbmdlcygpO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRDaGVja2VkKCk6IHZvaWQge1xuICAgIHRoaXMuZGV0ZWN0U2xvdENoYW5nZXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG9uU3RhY2tXaWxsQ2hhbmdlKHsgZW50ZXJpbmdWaWV3LCB0YWJTd2l0Y2ggfTogU3RhY2tXaWxsQ2hhbmdlRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBzdGFja0lkID0gZW50ZXJpbmdWaWV3LnN0YWNrSWQ7XG4gICAgaWYgKHRhYlN3aXRjaCAmJiBzdGFja0lkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuaW9uVGFic1dpbGxDaGFuZ2UuZW1pdCh7IHRhYjogc3RhY2tJZCB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBvblN0YWNrRGlkQ2hhbmdlKHsgZW50ZXJpbmdWaWV3LCB0YWJTd2l0Y2ggfTogU3RhY2tEaWRDaGFuZ2VFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHN0YWNrSWQgPSBlbnRlcmluZ1ZpZXcuc3RhY2tJZDtcbiAgICBpZiAodGFiU3dpdGNoICYmIHN0YWNrSWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHRoaXMudGFiQmFyKSB7XG4gICAgICAgIHRoaXMudGFiQmFyLnNlbGVjdGVkVGFiID0gc3RhY2tJZDtcbiAgICAgIH1cbiAgICAgIHRoaXMuaW9uVGFic0RpZENoYW5nZS5lbWl0KHsgdGFiOiBzdGFja0lkIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBXaGVuIGEgdGFiIGJ1dHRvbiBpcyBjbGlja2VkLCB0aGVyZSBhcmUgc2V2ZXJhbCBzY2VuYXJpb3M6XG4gICAqIDEuIElmIHRoZSBzZWxlY3RlZCB0YWIgaXMgY3VycmVudGx5IGFjdGl2ZSAodGhlIHRhYiBidXR0b24gaGFzIGJlZW4gY2xpY2tlZFxuICAgKiAgICBhZ2FpbiksIHRoZW4gaXQgc2hvdWxkIGdvIHRvIHRoZSByb290IHZpZXcgZm9yIHRoYXQgdGFiLlxuICAgKlxuICAgKiAgIGEuIEdldCB0aGUgc2F2ZWQgcm9vdCB2aWV3IGZyb20gdGhlIHJvdXRlciBvdXRsZXQuIElmIHRoZSBzYXZlZCByb290IHZpZXdcbiAgICogICAgICBtYXRjaGVzIHRoZSB0YWJSb290VXJsLCBzZXQgdGhlIHJvdXRlIHZpZXcgdG8gdGhpcyB2aWV3IGluY2x1ZGluZyB0aGVcbiAgICogICAgICBuYXZpZ2F0aW9uIGV4dHJhcy4gQW55IGBxdWVyeVBhcmFtc2Agb3IgYGZyYWdtZW50YCBkZWNsYXJlZCBvbiB0aGUgdGFiXG4gICAqICAgICAgYnV0dG9uJ3MgYGhyZWZgIGFyZSBhbHNvIGZvcndhcmRlZC5cbiAgICogICBiLiBJZiB0aGUgc2F2ZWQgcm9vdCB2aWV3IGZyb20gdGhlIHJvdXRlciBvdXRsZXQgZG9lcyBub3QgbWF0Y2gsIG5hdmlnYXRlXG4gICAqICAgICAgdG8gdGhlIHRhYlJvb3RVcmwsIGZvcndhcmRpbmcgYW55IGBxdWVyeVBhcmFtc2AvYGZyYWdtZW50YCBkZWNsYXJlZCBvblxuICAgKiAgICAgIHRoZSB0YWIgYnV0dG9uJ3MgYGhyZWZgLlxuICAgKlxuICAgKiAyLiBJZiB0aGUgY3VycmVudCB0YWIgdGFiIGlzIG5vdCBjdXJyZW50bHkgc2VsZWN0ZWQsIGdldCB0aGUgbGFzdCByb3V0ZVxuICAgKiAgICB2aWV3IGZyb20gdGhlIHJvdXRlciBvdXRsZXQuXG4gICAqXG4gICAqICAgYS4gSWYgdGhlIGxhc3Qgcm91dGUgdmlldyBleGlzdHMsIG5hdmlnYXRlIHRvIHRoYXQgdmlldyBpbmNsdWRpbmcgYW55XG4gICAqICAgICAgbmF2aWdhdGlvbiBleHRyYXMuXG4gICAqICAgYi4gSWYgdGhlIGxhc3Qgcm91dGUgdmlldyBkb2Vzbid0IGV4aXN0LCB0aGVuIG5hdmlnYXRlIHRvIHRoZSBkZWZhdWx0XG4gICAqICAgICAgdGFiUm9vdFVybCwgZm9yd2FyZGluZyBhbnkgYHF1ZXJ5UGFyYW1zYC9gZnJhZ21lbnRgIGRlY2xhcmVkIG9uIHRoZVxuICAgKiAgICAgIHRhYiBidXR0b24ncyBgaHJlZmAuXG4gICAqL1xuICBASG9zdExpc3RlbmVyKCdpb25UYWJCdXR0b25DbGljaycsIFsnJGV2ZW50J10pXG4gIHNlbGVjdCh0YWJPckV2ZW50OiBzdHJpbmcgfCBDdXN0b21FdmVudCk6IFByb21pc2U8Ym9vbGVhbj4gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGlzVGFiU3RyaW5nID0gdHlwZW9mIHRhYk9yRXZlbnQgPT09ICdzdHJpbmcnO1xuICAgIGNvbnN0IHRhYiA9IGlzVGFiU3RyaW5nID8gdGFiT3JFdmVudCA6ICh0YWJPckV2ZW50IGFzIEN1c3RvbUV2ZW50KS5kZXRhaWwudGFiO1xuICAgIGNvbnN0IGhyZWY6IHN0cmluZyB8IHVuZGVmaW5lZCA9IGlzVGFiU3RyaW5nID8gdW5kZWZpbmVkIDogKHRhYk9yRXZlbnQgYXMgQ3VzdG9tRXZlbnQpLmRldGFpbC5ocmVmO1xuXG4gICAgLyoqXG4gICAgICogSWYgdGhlIHRhYnMgYXJlIG5vdCB1c2luZyB0aGUgcm91dGVyLCB0aGVuXG4gICAgICogdGhlIHRhYiBzd2l0Y2ggbG9naWMgaXMgaGFuZGxlZCBieSB0aGUgdGFic1xuICAgICAqIGNvbXBvbmVudCBpdHNlbGYuXG4gICAgICovXG4gICAgaWYgKHRoaXMuaGFzVGFiKSB7XG4gICAgICB0aGlzLnNldEFjdGl2ZVRhYih0YWIpO1xuICAgICAgdGhpcy50YWJTd2l0Y2goKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGFscmVhZHlTZWxlY3RlZCA9IHRoaXMub3V0bGV0LmdldEFjdGl2ZVN0YWNrSWQoKSA9PT0gdGFiO1xuICAgIGNvbnN0IHRhYlJvb3RVcmwgPSBgJHt0aGlzLm91dGxldC50YWJzUHJlZml4fS8ke3RhYn1gO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGhyZWYgcGF0aG5hbWUgaXMgaWdub3JlZCBoZXJlOyB0YWIgcm91dGluZyBpcyBkcml2ZW4gYnkgYHRhYnNQcmVmaXgvdGFiYC5cbiAgICAgKiBPbmx5IHRoZSBxdWVyeSBhbmQgZnJhZ21lbnQgYXJlIGZvcndhcmRlZCBhcyBuYXZpZ2F0aW9uIGV4dHJhcy5cbiAgICAgKi9cbiAgICBjb25zdCBocmVmRXh0cmFzID0gcGFyc2VIcmVmRXh0cmFzKGhyZWYpO1xuXG4gICAgLyoqXG4gICAgICogSWYgdGhpcyBpcyBhIG5lc3RlZCB0YWIsIHByZXZlbnQgdGhlIGV2ZW50XG4gICAgICogZnJvbSBidWJibGluZyBvdGhlcndpc2UgdGhlIG91dGVyIHRhYnNcbiAgICAgKiB3aWxsIHJlc3BvbmQgdG8gdGhpcyBldmVudCB0b28sIGNhdXNpbmdcbiAgICAgKiB0aGUgYXBwIHRvIGdldCBkaXJlY3RlZCB0byB0aGUgd3JvbmcgcGxhY2UuXG4gICAgICovXG4gICAgaWYgKCFpc1RhYlN0cmluZykge1xuICAgICAgKHRhYk9yRXZlbnQgYXMgQ3VzdG9tRXZlbnQpLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIGlmIChhbHJlYWR5U2VsZWN0ZWQpIHtcbiAgICAgIGNvbnN0IGFjdGl2ZVN0YWNrSWQgPSB0aGlzLm91dGxldC5nZXRBY3RpdmVTdGFja0lkKCk7XG4gICAgICBjb25zdCBhY3RpdmVWaWV3ID0gdGhpcy5vdXRsZXQuZ2V0TGFzdFJvdXRlVmlldyhhY3RpdmVTdGFja0lkKTtcblxuICAgICAgLy8gSWYgb24gcm9vdCB0YWIsIGRvIG5vdCBuYXZpZ2F0ZSB0byByb290IHRhYiBhZ2FpblxuICAgICAgaWYgKGFjdGl2ZVZpZXc/LnVybCA9PT0gdGFiUm9vdFVybCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJvb3RWaWV3ID0gdGhpcy5vdXRsZXQuZ2V0Um9vdFZpZXcodGFiKTtcbiAgICAgIGNvbnN0IG5hdmlnYXRpb25FeHRyYXMgPSByb290VmlldyAmJiB0YWJSb290VXJsID09PSByb290Vmlldy51cmwgJiYgcm9vdFZpZXcuc2F2ZWRFeHRyYXM7XG4gICAgICByZXR1cm4gdGhpcy5uYXZDdHJsLm5hdmlnYXRlUm9vdCh0YWJSb290VXJsLCB7XG4gICAgICAgIC4uLm5hdmlnYXRpb25FeHRyYXMsXG4gICAgICAgIC4uLmhyZWZFeHRyYXMsXG4gICAgICAgIGFuaW1hdGVkOiB0cnVlLFxuICAgICAgICBhbmltYXRpb25EaXJlY3Rpb246ICdiYWNrJyxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBsYXN0Um91dGUgPSB0aGlzLm91dGxldC5nZXRMYXN0Um91dGVWaWV3KHRhYik7XG4gICAgICAvKipcbiAgICAgICAqIElmIHRoZXJlIGlzIGEgbGFzdFJvdXRlLCBnb3RvIHRoYXQsIG90aGVyd2lzZSBnb3RvIHRoZSBmYWxsYmFjayB1cmwgb2YgdGhlXG4gICAgICAgKiBzZWxlY3RlZCB0YWIuIFdoZW4gZmFsbGluZyBiYWNrIHRvIHRoZSB0YWIgcm9vdCwgaG9ub3IgcXVlcnkgcGFyYW1zIGFuZFxuICAgICAgICogZnJhZ21lbnQgZGVjbGFyZWQgb24gdGhlIHRhYiBidXR0b24ncyBocmVmLlxuICAgICAgICovXG4gICAgICBjb25zdCB1cmwgPSBsYXN0Um91dGU/LnVybCB8fCB0YWJSb290VXJsO1xuICAgICAgY29uc3QgbmF2aWdhdGlvbkV4dHJhcyA9IGxhc3RSb3V0ZT8uc2F2ZWRFeHRyYXMgPz8gKHVybCA9PT0gdGFiUm9vdFVybCA/IGhyZWZFeHRyYXMgOiB1bmRlZmluZWQpO1xuXG4gICAgICByZXR1cm4gdGhpcy5uYXZDdHJsLm5hdmlnYXRlUm9vdCh1cmwsIHtcbiAgICAgICAgLi4ubmF2aWdhdGlvbkV4dHJhcyxcbiAgICAgICAgYW5pbWF0ZWQ6IHRydWUsXG4gICAgICAgIGFuaW1hdGlvbkRpcmVjdGlvbjogJ2JhY2snLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRBY3RpdmVUYWIodGFiOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCB0YWJzID0gdGhpcy50YWJzO1xuICAgIGNvbnN0IHNlbGVjdGVkVGFiID0gdGFicy5maW5kKCh0OiBhbnkpID0+IHQudGFiID09PSB0YWIpO1xuXG4gICAgaWYgKCFzZWxlY3RlZFRhYikge1xuICAgICAgY29uc29sZS5lcnJvcihgW0lvbmljIEVycm9yXTogVGFiIHdpdGggaWQ6IFwiJHt0YWJ9XCIgZG9lcyBub3QgZXhpc3RgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxlYXZpbmdUYWIgPSB0aGlzLnNlbGVjdGVkVGFiO1xuICAgIHRoaXMuc2VsZWN0ZWRUYWIgPSBzZWxlY3RlZFRhYjtcblxuICAgIHRoaXMuaW9uVGFic1dpbGxDaGFuZ2UuZW1pdCh7IHRhYiB9KTtcblxuICAgIHNlbGVjdGVkVGFiLmVsLmFjdGl2ZSA9IHRydWU7XG4gIH1cblxuICBwcml2YXRlIHRhYlN3aXRjaCgpOiB2b2lkIHtcbiAgICBjb25zdCB7IHNlbGVjdGVkVGFiLCBsZWF2aW5nVGFiIH0gPSB0aGlzO1xuXG4gICAgaWYgKHRoaXMudGFiQmFyICYmIHNlbGVjdGVkVGFiKSB7XG4gICAgICB0aGlzLnRhYkJhci5zZWxlY3RlZFRhYiA9IHNlbGVjdGVkVGFiLnRhYjtcbiAgICB9XG5cbiAgICBpZiAobGVhdmluZ1RhYj8udGFiICE9PSBzZWxlY3RlZFRhYj8udGFiKSB7XG4gICAgICBpZiAobGVhdmluZ1RhYj8uZWwpIHtcbiAgICAgICAgbGVhdmluZ1RhYi5lbC5hY3RpdmUgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc2VsZWN0ZWRUYWIpIHtcbiAgICAgIHRoaXMuaW9uVGFic0RpZENoYW5nZS5lbWl0KHsgdGFiOiBzZWxlY3RlZFRhYi50YWIgfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0U2VsZWN0ZWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5oYXNUYWIpIHtcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkVGFiPy50YWI7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMub3V0bGV0LmdldEFjdGl2ZVN0YWNrSWQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlY3RzIGNoYW5nZXMgdG8gdGhlIHNsb3QgYXR0cmlidXRlIG9mIHRoZSB0YWIgYmFyLlxuICAgKlxuICAgKiBJZiB0aGUgc2xvdCBhdHRyaWJ1dGUgaGFzIGNoYW5nZWQsIHRoZW4gdGhlIHRhYiBiYXJcbiAgICogc2hvdWxkIGJlIHJlbG9jYXRlZCB0byB0aGUgbmV3IHNsb3QgcG9zaXRpb24uXG4gICAqL1xuICBwcml2YXRlIGRldGVjdFNsb3RDaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMudGFiQmFycy5mb3JFYWNoKCh0YWJCYXI6IGFueSkgPT4ge1xuICAgICAgLy8gZWwgaXMgYSBwcm90ZWN0ZWQgYXR0cmlidXRlIGZyb20gdGhlIGdlbmVyYXRlZCBjb21wb25lbnQgd3JhcHBlclxuICAgICAgY29uc3QgY3VycmVudFNsb3QgPSB0YWJCYXIuZWwuZ2V0QXR0cmlidXRlKCdzbG90Jyk7XG5cbiAgICAgIGlmIChjdXJyZW50U2xvdCAhPT0gdGhpcy50YWJCYXJTbG90KSB7XG4gICAgICAgIHRoaXMudGFiQmFyU2xvdCA9IGN1cnJlbnRTbG90O1xuICAgICAgICB0aGlzLnJlbG9jYXRlVGFiQmFyKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVsb2NhdGVzIHRoZSB0YWIgYmFyIHRvIHRoZSBuZXcgc2xvdCBwb3NpdGlvbi5cbiAgICovXG4gIHByaXZhdGUgcmVsb2NhdGVUYWJCYXIoKTogdm9pZCB7XG4gICAgLyoqXG4gICAgICogYGVsYCBpcyBhIHByb3RlY3RlZCBhdHRyaWJ1dGUgZnJvbSB0aGUgZ2VuZXJhdGVkIGNvbXBvbmVudCB3cmFwcGVyLlxuICAgICAqIFRvIGF2b2lkIGhhdmluZyB0byBtYW51YWxseSBjcmVhdGUgdGhlIHdyYXBwZXIgZm9yIHRhYiBiYXIsIHdlXG4gICAgICogY2FzdCB0aGUgdGFiIGJhciB0byBhbnkgYW5kIGFjY2VzcyB0aGUgcHJvdGVjdGVkIGF0dHJpYnV0ZS5cbiAgICAgKi9cbiAgICBjb25zdCB0YWJCYXIgPSAodGhpcy50YWJCYXIgYXMgYW55KS5lbCBhcyBIVE1MRWxlbWVudDtcblxuICAgIGlmICh0aGlzLnRhYkJhclNsb3QgPT09ICd0b3AnKSB7XG4gICAgICAvKipcbiAgICAgICAqIEEgdGFiIGJhciB3aXRoIGEgc2xvdCBvZiBcInRvcFwiIHNob3VsZCBiZSBpbnNlcnRlZFxuICAgICAgICogYXQgdGhlIHRvcCBvZiB0aGUgY29udGFpbmVyLlxuICAgICAgICovXG4gICAgICB0aGlzLnRhYnNJbm5lci5uYXRpdmVFbGVtZW50LmJlZm9yZSh0YWJCYXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvKipcbiAgICAgICAqIEEgdGFiIGJhciB3aXRoIGEgc2xvdCBvZiBcImJvdHRvbVwiIG9yIHdpdGhvdXQgYSBzbG90XG4gICAgICAgKiBzaG91bGQgYmUgaW5zZXJ0ZWQgYXQgdGhlIGVuZCBvZiB0aGUgY29udGFpbmVyLlxuICAgICAgICovXG4gICAgICB0aGlzLnRhYnNJbm5lci5uYXRpdmVFbGVtZW50LmFmdGVyKHRhYkJhcik7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export { DomController } from './providers/dom-controller';
|
|
2
|
+
export { MenuController } from './providers/menu-controller';
|
|
3
|
+
export { NavController } from './providers/nav-controller';
|
|
4
|
+
export { Config, ConfigToken } from './providers/config';
|
|
5
|
+
export { Platform } from './providers/platform';
|
|
6
|
+
export { AngularDelegate, bindLifecycleEvents, IonModalToken } from './providers/angular-delegate';
|
|
7
|
+
export { NavParams } from './directives/navigation/nav-params';
|
|
8
|
+
export { IonModal } from './overlays/modal';
|
|
9
|
+
export { IonPopover } from './overlays/popover';
|
|
10
|
+
export { IonRouterOutlet, provideComponentInputBinding } from './directives/navigation/router-outlet';
|
|
11
|
+
export * from './directives/control-value-accessors';
|
|
12
|
+
export { IonBackButton } from './directives/navigation/back-button';
|
|
13
|
+
export { IonNav } from './directives/navigation/nav';
|
|
14
|
+
export { RouterLinkDelegateDirective, RouterLinkWithHrefDelegateDirective, } from './directives/navigation/router-link-delegate';
|
|
15
|
+
export { IonTabs } from './directives/navigation/tabs';
|
|
16
|
+
export { ProxyCmp } from './utils/proxy';
|
|
17
|
+
export { OverlayBaseController } from './utils/overlay';
|
|
18
|
+
export { IonicRouteStrategy } from './utils/routing';
|
|
19
|
+
export { raf } from './utils/util';
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb21tb24vc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTNELE9BQU8sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWhELE9BQU8sRUFBRSxlQUFlLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFNbkcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRS9ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFaEQsT0FBTyxFQUFFLGVBQWUsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRXRHLGNBQWMsc0NBQXNDLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNyRCxPQUFPLEVBQ0wsMkJBQTJCLEVBQzNCLG1DQUFtQyxHQUNwQyxNQUFNLDhDQUE4QyxDQUFDO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXJELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBEb21Db250cm9sbGVyIH0gZnJvbSAnLi9wcm92aWRlcnMvZG9tLWNvbnRyb2xsZXInO1xuZXhwb3J0IHsgTWVudUNvbnRyb2xsZXIgfSBmcm9tICcuL3Byb3ZpZGVycy9tZW51LWNvbnRyb2xsZXInO1xuZXhwb3J0IHsgTmF2Q29udHJvbGxlciB9IGZyb20gJy4vcHJvdmlkZXJzL25hdi1jb250cm9sbGVyJztcblxuZXhwb3J0IHsgQ29uZmlnLCBDb25maWdUb2tlbiB9IGZyb20gJy4vcHJvdmlkZXJzL2NvbmZpZyc7XG5leHBvcnQgeyBQbGF0Zm9ybSB9IGZyb20gJy4vcHJvdmlkZXJzL3BsYXRmb3JtJztcblxuZXhwb3J0IHsgQW5ndWxhckRlbGVnYXRlLCBiaW5kTGlmZWN5Y2xlRXZlbnRzLCBJb25Nb2RhbFRva2VuIH0gZnJvbSAnLi9wcm92aWRlcnMvYW5ndWxhci1kZWxlZ2F0ZSc7XG5cbmV4cG9ydCB0eXBlIHsgSW9uaWNXaW5kb3cgfSBmcm9tICcuL3R5cGVzL2ludGVyZmFjZXMnO1xuZXhwb3J0IHR5cGUgeyBWaWV3RGlkRW50ZXIsIFZpZXdEaWRMZWF2ZSwgVmlld1dpbGxFbnRlciwgVmlld1dpbGxMZWF2ZSB9IGZyb20gJy4vdHlwZXMvaW9uaWMtbGlmZWN5Y2xlLWhvb2tzJztcbmV4cG9ydCB0eXBlIHsgTW9kYWxPcHRpb25zLCBQb3BvdmVyT3B0aW9ucyB9IGZyb20gJy4vdHlwZXMvb3ZlcmxheS1vcHRpb25zJztcblxuZXhwb3J0IHsgTmF2UGFyYW1zIH0gZnJvbSAnLi9kaXJlY3RpdmVzL25hdmlnYXRpb24vbmF2LXBhcmFtcyc7XG5cbmV4cG9ydCB7IElvbk1vZGFsIH0gZnJvbSAnLi9vdmVybGF5cy9tb2RhbCc7XG5leHBvcnQgeyBJb25Qb3BvdmVyIH0gZnJvbSAnLi9vdmVybGF5cy9wb3BvdmVyJztcblxuZXhwb3J0IHsgSW9uUm91dGVyT3V0bGV0LCBwcm92aWRlQ29tcG9uZW50SW5wdXRCaW5kaW5nIH0gZnJvbSAnLi9kaXJlY3RpdmVzL25hdmlnYXRpb24vcm91dGVyLW91dGxldCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9jb250cm9sLXZhbHVlLWFjY2Vzc29ycyc7XG5leHBvcnQgeyBJb25CYWNrQnV0dG9uIH0gZnJvbSAnLi9kaXJlY3RpdmVzL25hdmlnYXRpb24vYmFjay1idXR0b24nO1xuZXhwb3J0IHsgSW9uTmF2IH0gZnJvbSAnLi9kaXJlY3RpdmVzL25hdmlnYXRpb24vbmF2JztcbmV4cG9ydCB7XG4gIFJvdXRlckxpbmtEZWxlZ2F0ZURpcmVjdGl2ZSxcbiAgUm91dGVyTGlua1dpdGhIcmVmRGVsZWdhdGVEaXJlY3RpdmUsXG59IGZyb20gJy4vZGlyZWN0aXZlcy9uYXZpZ2F0aW9uL3JvdXRlci1saW5rLWRlbGVnYXRlJztcbmV4cG9ydCB7IElvblRhYnMgfSBmcm9tICcuL2RpcmVjdGl2ZXMvbmF2aWdhdGlvbi90YWJzJztcblxuZXhwb3J0IHsgUHJveHlDbXAgfSBmcm9tICcuL3V0aWxzL3Byb3h5JztcblxuZXhwb3J0IHsgT3ZlcmxheUJhc2VDb250cm9sbGVyIH0gZnJvbSAnLi91dGlscy9vdmVybGF5JztcbmV4cG9ydCB7IElvbmljUm91dGVTdHJhdGVneSB9IGZyb20gJy4vdXRpbHMvcm91dGluZyc7XG5cbmV4cG9ydCB7IHJhZiB9IGZyb20gJy4vdXRpbHMvdXRpbCc7XG4iXX0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW9uaWMtYW5ndWxhci1jb21tb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb21tb24vc3JjL2lvbmljLWFuZ3VsYXItY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { ContentChild, Directive, TemplateRef, } from '@angular/core';
|
|
3
|
+
import { ProxyCmp, proxyOutputs } from '../utils/proxy';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
const MODAL_INPUTS = [
|
|
6
|
+
'animated',
|
|
7
|
+
'keepContentsMounted',
|
|
8
|
+
'backdropBreakpoint',
|
|
9
|
+
'backdropDismiss',
|
|
10
|
+
'breakpoints',
|
|
11
|
+
'canDismiss',
|
|
12
|
+
'cssClass',
|
|
13
|
+
'enterAnimation',
|
|
14
|
+
'expandToScroll',
|
|
15
|
+
'event',
|
|
16
|
+
'focusTrap',
|
|
17
|
+
'handle',
|
|
18
|
+
'handleBehavior',
|
|
19
|
+
'initialBreakpoint',
|
|
20
|
+
'isOpen',
|
|
21
|
+
'keyboardClose',
|
|
22
|
+
'leaveAnimation',
|
|
23
|
+
'mode',
|
|
24
|
+
'presentingElement',
|
|
25
|
+
'showBackdrop',
|
|
26
|
+
'translucent',
|
|
27
|
+
'trigger',
|
|
28
|
+
];
|
|
29
|
+
const MODAL_METHODS = [
|
|
30
|
+
'present',
|
|
31
|
+
'dismiss',
|
|
32
|
+
'onDidDismiss',
|
|
33
|
+
'onWillDismiss',
|
|
34
|
+
'setCurrentBreakpoint',
|
|
35
|
+
'getCurrentBreakpoint',
|
|
36
|
+
];
|
|
37
|
+
let IonModal =
|
|
38
|
+
/**
|
|
39
|
+
* @Component extends from @Directive
|
|
40
|
+
* so by defining the inputs here we
|
|
41
|
+
* do not need to re-define them for the
|
|
42
|
+
* lazy loaded popover.
|
|
43
|
+
*/
|
|
44
|
+
class IonModal {
|
|
45
|
+
z;
|
|
46
|
+
// TODO(FW-2827): type
|
|
47
|
+
template;
|
|
48
|
+
isCmpOpen = false;
|
|
49
|
+
el;
|
|
50
|
+
constructor(c, r, z) {
|
|
51
|
+
this.z = z;
|
|
52
|
+
this.el = r.nativeElement;
|
|
53
|
+
this.el.addEventListener('ionMount', () => {
|
|
54
|
+
this.isCmpOpen = true;
|
|
55
|
+
c.detectChanges();
|
|
56
|
+
});
|
|
57
|
+
this.el.addEventListener('didDismiss', () => {
|
|
58
|
+
this.isCmpOpen = false;
|
|
59
|
+
c.detectChanges();
|
|
60
|
+
});
|
|
61
|
+
proxyOutputs(this, this.el, [
|
|
62
|
+
'ionModalDidPresent',
|
|
63
|
+
'ionModalWillPresent',
|
|
64
|
+
'ionModalWillDismiss',
|
|
65
|
+
'ionModalDidDismiss',
|
|
66
|
+
'ionBreakpointDidChange',
|
|
67
|
+
'didPresent',
|
|
68
|
+
'willPresent',
|
|
69
|
+
'willDismiss',
|
|
70
|
+
'didDismiss',
|
|
71
|
+
'ionDragStart',
|
|
72
|
+
'ionDragMove',
|
|
73
|
+
'ionDragEnd',
|
|
74
|
+
]);
|
|
75
|
+
}
|
|
76
|
+
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonModal, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
|
|
77
|
+
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: IonModal, selector: "ion-modal", inputs: { animated: "animated", keepContentsMounted: "keepContentsMounted", backdropBreakpoint: "backdropBreakpoint", backdropDismiss: "backdropDismiss", breakpoints: "breakpoints", canDismiss: "canDismiss", cssClass: "cssClass", enterAnimation: "enterAnimation", expandToScroll: "expandToScroll", event: "event", focusTrap: "focusTrap", handle: "handle", handleBehavior: "handleBehavior", initialBreakpoint: "initialBreakpoint", isOpen: "isOpen", keyboardClose: "keyboardClose", leaveAnimation: "leaveAnimation", mode: "mode", presentingElement: "presentingElement", showBackdrop: "showBackdrop", translucent: "translucent", trigger: "trigger" }, queries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0 });
|
|
78
|
+
};
|
|
79
|
+
IonModal = __decorate([
|
|
80
|
+
ProxyCmp({
|
|
81
|
+
inputs: MODAL_INPUTS,
|
|
82
|
+
methods: MODAL_METHODS,
|
|
83
|
+
})
|
|
84
|
+
/**
|
|
85
|
+
* @Component extends from @Directive
|
|
86
|
+
* so by defining the inputs here we
|
|
87
|
+
* do not need to re-define them for the
|
|
88
|
+
* lazy loaded popover.
|
|
89
|
+
*/
|
|
90
|
+
], IonModal);
|
|
91
|
+
export { IonModal };
|
|
92
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonModal, decorators: [{
|
|
93
|
+
type: Directive,
|
|
94
|
+
args: [{
|
|
95
|
+
selector: 'ion-modal',
|
|
96
|
+
// eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
|
|
97
|
+
inputs: MODAL_INPUTS,
|
|
98
|
+
}]
|
|
99
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { template: [{
|
|
100
|
+
type: ContentChild,
|
|
101
|
+
args: [TemplateRef, { static: false }]
|
|
102
|
+
}] } });
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb21tb24vc3JjL292ZXJsYXlzL21vZGFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRUwsWUFBWSxFQUNaLFNBQVMsRUFJVCxXQUFXLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFxRHhELE1BQU0sWUFBWSxHQUFHO0lBQ25CLFVBQVU7SUFDVixxQkFBcUI7SUFDckIsb0JBQW9CO0lBQ3BCLGlCQUFpQjtJQUNqQixhQUFhO0lBQ2IsWUFBWTtJQUNaLFVBQVU7SUFDVixnQkFBZ0I7SUFDaEIsZ0JBQWdCO0lBQ2hCLE9BQU87SUFDUCxXQUFXO0lBQ1gsUUFBUTtJQUNSLGdCQUFnQjtJQUNoQixtQkFBbUI7SUFDbkIsUUFBUTtJQUNSLGVBQWU7SUFDZixnQkFBZ0I7SUFDaEIsTUFBTTtJQUNOLG1CQUFtQjtJQUNuQixjQUFjO0lBQ2QsYUFBYTtJQUNiLFNBQVM7Q0FDVixDQUFDO0FBRUYsTUFBTSxhQUFhLEdBQUc7SUFDcEIsU0FBUztJQUNULFNBQVM7SUFDVCxjQUFjO0lBQ2QsZUFBZTtJQUNmLHNCQUFzQjtJQUN0QixzQkFBc0I7Q0FDdkIsQ0FBQztBQVlGLElBT2EsUUFBUTtBQWJyQjs7Ozs7R0FLRztBQUNILE1BT2EsUUFBUTtJQVF3QztJQVAzRCxzQkFBc0I7SUFDd0IsUUFBUSxDQUFtQjtJQUV6RSxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBRVIsRUFBRSxDQUFjO0lBRTFCLFlBQVksQ0FBb0IsRUFBRSxDQUFhLEVBQVksQ0FBUztRQUFULE1BQUMsR0FBRCxDQUFDLENBQVE7UUFDbEUsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDO1FBRTFCLElBQUksQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRTtZQUN4QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUN0QixDQUFDLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDcEIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUU7WUFDMUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDdkIsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsWUFBWSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQzFCLG9CQUFvQjtZQUNwQixxQkFBcUI7WUFDckIscUJBQXFCO1lBQ3JCLG9CQUFvQjtZQUNwQix3QkFBd0I7WUFDeEIsWUFBWTtZQUNaLGFBQWE7WUFDYixhQUFhO1lBQ2IsWUFBWTtZQUNaLGNBQWM7WUFDZCxhQUFhO1lBQ2IsWUFBWTtTQUNiLENBQUMsQ0FBQztJQUNMLENBQUM7MkhBakNVLFFBQVE7K0dBQVIsUUFBUSwrdEJBRUwsV0FBVzs7QUFGZCxRQUFRO0lBakJwQixRQUFRLENBQUM7UUFDUixNQUFNLEVBQUUsWUFBWTtRQUNwQixPQUFPLEVBQUUsYUFBYTtLQUN2QixDQUFDO0lBQ0Y7Ozs7O09BS0c7R0FRVSxRQUFRLENBa0NwQjtTQWxDWSxRQUFROzRGQUFSLFFBQVE7a0JBUHBCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLHVFQUF1RTtvQkFDdkUsTUFBTSxFQUFFLFlBQVk7aUJBQ3JCO3NKQUsrQyxRQUFRO3NCQUFyRCxZQUFZO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29udGVudENoaWxkLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgTmdab25lLFxuICBUZW1wbGF0ZVJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IENvbXBvbmVudHMsIE1vZGFsQnJlYWtwb2ludENoYW5nZUV2ZW50RGV0YWlsLCBNb2RhbERyYWdFdmVudERldGFpbCB9IGZyb20gJ0Bpb25pYy9jb3JlL2NvbXBvbmVudHMnO1xuXG5pbXBvcnQgeyBQcm94eUNtcCwgcHJveHlPdXRwdXRzIH0gZnJvbSAnLi4vdXRpbHMvcHJveHknO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgSW9uTW9kYWwgZXh0ZW5kcyBDb21wb25lbnRzLklvbk1vZGFsIHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgYWZ0ZXIgdGhlIG1vZGFsIGhhcyBwcmVzZW50ZWQuXG4gICAqKi9cbiAgaW9uTW9kYWxEaWRQcmVzZW50OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ+O1xuICAvKipcbiAgICogRW1pdHRlZCBiZWZvcmUgdGhlIG1vZGFsIGhhcyBwcmVzZW50ZWQuXG4gICAqL1xuICBpb25Nb2RhbFdpbGxQcmVzZW50OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ+O1xuICAvKipcbiAgICogRW1pdHRlZCBiZWZvcmUgdGhlIG1vZGFsIGhhcyBkaXNtaXNzZWQuXG4gICAqL1xuICBpb25Nb2RhbFdpbGxEaXNtaXNzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ+O1xuICAvKipcbiAgICogRW1pdHRlZCBhZnRlciB0aGUgbW9kYWwgaGFzIGRpc21pc3NlZC5cbiAgICovXG4gIGlvbk1vZGFsRGlkRGlzbWlzczogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgYWZ0ZXIgdGhlIG1vZGFsIGJyZWFrcG9pbnQgaGFzIGNoYW5nZWQuXG4gICAqL1xuICBpb25CcmVha3BvaW50RGlkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8TW9kYWxCcmVha3BvaW50Q2hhbmdlRXZlbnREZXRhaWw+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgc2hlZXQgb3IgY2FyZCBtb2RhbCBoYXMgc3RhcnRlZCBiZWluZyBkcmFnZ2VkLlxuICAgKi9cbiAgaW9uRHJhZ1N0YXJ0OiBFdmVudEVtaXR0ZXI8dm9pZD47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoaWxlIHRoZSBzaGVldCBvciBjYXJkIG1vZGFsIGlzIGJlaW5nIGRyYWdnZWQuXG4gICAqL1xuICBpb25EcmFnTW92ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PE1vZGFsRHJhZ0V2ZW50RGV0YWlsPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIHNoZWV0IG9yIGNhcmQgbW9kYWwgaGFzIGZpbmlzaGVkIGJlaW5nIGRyYWdnZWQuXG4gICAqL1xuICBpb25EcmFnRW5kOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8TW9kYWxEcmFnRXZlbnREZXRhaWw+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgYWZ0ZXIgdGhlIG1vZGFsIGhhcyBwcmVzZW50ZWQuIFNob3J0aGFuZCBmb3IgaW9uTW9kYWxEaWRQcmVzZW50LlxuICAgKi9cbiAgZGlkUHJlc2VudDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgYmVmb3JlIHRoZSBtb2RhbCBoYXMgcHJlc2VudGVkLiBTaG9ydGhhbmQgZm9yIGlvbk1vZGFsV2lsbFByZXNlbnQuXG4gICAqL1xuICB3aWxsUHJlc2VudDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgYmVmb3JlIHRoZSBtb2RhbCBoYXMgZGlzbWlzc2VkLiBTaG9ydGhhbmQgZm9yIGlvbk1vZGFsV2lsbERpc21pc3MuXG4gICAqL1xuICB3aWxsRGlzbWlzczogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgYWZ0ZXIgdGhlIG1vZGFsIGhhcyBkaXNtaXNzZWQuIFNob3J0aGFuZCBmb3IgaW9uTW9kYWxEaWREaXNtaXNzLlxuICAgKi9cbiAgZGlkRGlzbWlzczogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50Pjtcbn1cblxuY29uc3QgTU9EQUxfSU5QVVRTID0gW1xuICAnYW5pbWF0ZWQnLFxuICAna2VlcENvbnRlbnRzTW91bnRlZCcsXG4gICdiYWNrZHJvcEJyZWFrcG9pbnQnLFxuICAnYmFja2Ryb3BEaXNtaXNzJyxcbiAgJ2JyZWFrcG9pbnRzJyxcbiAgJ2NhbkRpc21pc3MnLFxuICAnY3NzQ2xhc3MnLFxuICAnZW50ZXJBbmltYXRpb24nLFxuICAnZXhwYW5kVG9TY3JvbGwnLFxuICAnZXZlbnQnLFxuICAnZm9jdXNUcmFwJyxcbiAgJ2hhbmRsZScsXG4gICdoYW5kbGVCZWhhdmlvcicsXG4gICdpbml0aWFsQnJlYWtwb2ludCcsXG4gICdpc09wZW4nLFxuICAna2V5Ym9hcmRDbG9zZScsXG4gICdsZWF2ZUFuaW1hdGlvbicsXG4gICdtb2RlJyxcbiAgJ3ByZXNlbnRpbmdFbGVtZW50JyxcbiAgJ3Nob3dCYWNrZHJvcCcsXG4gICd0cmFuc2x1Y2VudCcsXG4gICd0cmlnZ2VyJyxcbl07XG5cbmNvbnN0IE1PREFMX01FVEhPRFMgPSBbXG4gICdwcmVzZW50JyxcbiAgJ2Rpc21pc3MnLFxuICAnb25EaWREaXNtaXNzJyxcbiAgJ29uV2lsbERpc21pc3MnLFxuICAnc2V0Q3VycmVudEJyZWFrcG9pbnQnLFxuICAnZ2V0Q3VycmVudEJyZWFrcG9pbnQnLFxuXTtcblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBNT0RBTF9JTlBVVFMsXG4gIG1ldGhvZHM6IE1PREFMX01FVEhPRFMsXG59KVxuLyoqXG4gKiBAQ29tcG9uZW50IGV4dGVuZHMgZnJvbSBARGlyZWN0aXZlXG4gKiBzbyBieSBkZWZpbmluZyB0aGUgaW5wdXRzIGhlcmUgd2VcbiAqIGRvIG5vdCBuZWVkIHRvIHJlLWRlZmluZSB0aGVtIGZvciB0aGVcbiAqIGxhenkgbG9hZGVkIHBvcG92ZXIuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ2lvbi1tb2RhbCcsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogTU9EQUxfSU5QVVRTLFxufSlcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtY2xhc3Mtc3VmZml4XG5leHBvcnQgY2xhc3MgSW9uTW9kYWwge1xuICAvLyBUT0RPKEZXLTI4MjcpOiB0eXBlXG4gIEBDb250ZW50Q2hpbGQoVGVtcGxhdGVSZWYsIHsgc3RhdGljOiBmYWxzZSB9KSB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICBpc0NtcE9wZW4gPSBmYWxzZTtcblxuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuXG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcblxuICAgIHRoaXMuZWwuYWRkRXZlbnRMaXN0ZW5lcignaW9uTW91bnQnLCAoKSA9PiB7XG4gICAgICB0aGlzLmlzQ21wT3BlbiA9IHRydWU7XG4gICAgICBjLmRldGVjdENoYW5nZXMoKTtcbiAgICB9KTtcbiAgICB0aGlzLmVsLmFkZEV2ZW50TGlzdGVuZXIoJ2RpZERpc21pc3MnLCAoKSA9PiB7XG4gICAgICB0aGlzLmlzQ21wT3BlbiA9IGZhbHNlO1xuICAgICAgYy5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSk7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFtcbiAgICAgICdpb25Nb2RhbERpZFByZXNlbnQnLFxuICAgICAgJ2lvbk1vZGFsV2lsbFByZXNlbnQnLFxuICAgICAgJ2lvbk1vZGFsV2lsbERpc21pc3MnLFxuICAgICAgJ2lvbk1vZGFsRGlkRGlzbWlzcycsXG4gICAgICAnaW9uQnJlYWtwb2ludERpZENoYW5nZScsXG4gICAgICAnZGlkUHJlc2VudCcsXG4gICAgICAnd2lsbFByZXNlbnQnLFxuICAgICAgJ3dpbGxEaXNtaXNzJyxcbiAgICAgICdkaWREaXNtaXNzJyxcbiAgICAgICdpb25EcmFnU3RhcnQnLFxuICAgICAgJ2lvbkRyYWdNb3ZlJyxcbiAgICAgICdpb25EcmFnRW5kJyxcbiAgICBdKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { ContentChild, Directive, TemplateRef, } from '@angular/core';
|
|
3
|
+
import { ProxyCmp, proxyOutputs } from '../utils/proxy';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
const POPOVER_INPUTS = [
|
|
6
|
+
'alignment',
|
|
7
|
+
'animated',
|
|
8
|
+
'arrow',
|
|
9
|
+
'keepContentsMounted',
|
|
10
|
+
'backdropDismiss',
|
|
11
|
+
'cssClass',
|
|
12
|
+
'dismissOnSelect',
|
|
13
|
+
'enterAnimation',
|
|
14
|
+
'event',
|
|
15
|
+
'focusTrap',
|
|
16
|
+
'isOpen',
|
|
17
|
+
'keyboardClose',
|
|
18
|
+
'leaveAnimation',
|
|
19
|
+
'mode',
|
|
20
|
+
'showBackdrop',
|
|
21
|
+
'translucent',
|
|
22
|
+
'trigger',
|
|
23
|
+
'triggerAction',
|
|
24
|
+
'reference',
|
|
25
|
+
'size',
|
|
26
|
+
'side',
|
|
27
|
+
];
|
|
28
|
+
const POPOVER_METHODS = ['present', 'dismiss', 'onDidDismiss', 'onWillDismiss'];
|
|
29
|
+
let IonPopover =
|
|
30
|
+
/**
|
|
31
|
+
* @Component extends from @Directive
|
|
32
|
+
* so by defining the inputs here we
|
|
33
|
+
* do not need to re-define them for the
|
|
34
|
+
* lazy loaded popover.
|
|
35
|
+
*/
|
|
36
|
+
class IonPopover {
|
|
37
|
+
z;
|
|
38
|
+
// TODO(FW-2827): type
|
|
39
|
+
template;
|
|
40
|
+
isCmpOpen = false;
|
|
41
|
+
el;
|
|
42
|
+
constructor(c, r, z) {
|
|
43
|
+
this.z = z;
|
|
44
|
+
this.el = r.nativeElement;
|
|
45
|
+
this.el.addEventListener('ionMount', () => {
|
|
46
|
+
this.isCmpOpen = true;
|
|
47
|
+
c.detectChanges();
|
|
48
|
+
});
|
|
49
|
+
this.el.addEventListener('didDismiss', () => {
|
|
50
|
+
this.isCmpOpen = false;
|
|
51
|
+
c.detectChanges();
|
|
52
|
+
});
|
|
53
|
+
proxyOutputs(this, this.el, [
|
|
54
|
+
'ionPopoverDidPresent',
|
|
55
|
+
'ionPopoverWillPresent',
|
|
56
|
+
'ionPopoverWillDismiss',
|
|
57
|
+
'ionPopoverDidDismiss',
|
|
58
|
+
'didPresent',
|
|
59
|
+
'willPresent',
|
|
60
|
+
'willDismiss',
|
|
61
|
+
'didDismiss',
|
|
62
|
+
]);
|
|
63
|
+
}
|
|
64
|
+
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonPopover, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
|
|
65
|
+
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: IonPopover, selector: "ion-popover", inputs: { alignment: "alignment", animated: "animated", arrow: "arrow", keepContentsMounted: "keepContentsMounted", backdropDismiss: "backdropDismiss", cssClass: "cssClass", dismissOnSelect: "dismissOnSelect", enterAnimation: "enterAnimation", event: "event", focusTrap: "focusTrap", isOpen: "isOpen", keyboardClose: "keyboardClose", leaveAnimation: "leaveAnimation", mode: "mode", showBackdrop: "showBackdrop", translucent: "translucent", trigger: "trigger", triggerAction: "triggerAction", reference: "reference", size: "size", side: "side" }, queries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0 });
|
|
66
|
+
};
|
|
67
|
+
IonPopover = __decorate([
|
|
68
|
+
ProxyCmp({
|
|
69
|
+
inputs: POPOVER_INPUTS,
|
|
70
|
+
methods: POPOVER_METHODS,
|
|
71
|
+
})
|
|
72
|
+
/**
|
|
73
|
+
* @Component extends from @Directive
|
|
74
|
+
* so by defining the inputs here we
|
|
75
|
+
* do not need to re-define them for the
|
|
76
|
+
* lazy loaded popover.
|
|
77
|
+
*/
|
|
78
|
+
], IonPopover);
|
|
79
|
+
export { IonPopover };
|
|
80
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonPopover, decorators: [{
|
|
81
|
+
type: Directive,
|
|
82
|
+
args: [{
|
|
83
|
+
selector: 'ion-popover',
|
|
84
|
+
// eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
|
|
85
|
+
inputs: POPOVER_INPUTS,
|
|
86
|
+
}]
|
|
87
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { template: [{
|
|
88
|
+
type: ContentChild,
|
|
89
|
+
args: [TemplateRef, { static: false }]
|
|
90
|
+
}] } });
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvbW1vbi9zcmMvb3ZlcmxheXMvcG9wb3Zlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVMLFlBQVksRUFDWixTQUFTLEVBSVQsV0FBVyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBcUN4RCxNQUFNLGNBQWMsR0FBRztJQUNyQixXQUFXO0lBQ1gsVUFBVTtJQUNWLE9BQU87SUFDUCxxQkFBcUI7SUFDckIsaUJBQWlCO0lBQ2pCLFVBQVU7SUFDVixpQkFBaUI7SUFDakIsZ0JBQWdCO0lBQ2hCLE9BQU87SUFDUCxXQUFXO0lBQ1gsUUFBUTtJQUNSLGVBQWU7SUFDZixnQkFBZ0I7SUFDaEIsTUFBTTtJQUNOLGNBQWM7SUFDZCxhQUFhO0lBQ2IsU0FBUztJQUNULGVBQWU7SUFDZixXQUFXO0lBQ1gsTUFBTTtJQUNOLE1BQU07Q0FDUCxDQUFDO0FBRUYsTUFBTSxlQUFlLEdBQUcsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxlQUFlLENBQUMsQ0FBQztBQVloRixJQU9hLFVBQVU7QUFidkI7Ozs7O0dBS0c7QUFDSCxNQU9hLFVBQVU7SUFRc0M7SUFQM0Qsc0JBQXNCO0lBQ3dCLFFBQVEsQ0FBbUI7SUFFekUsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUVSLEVBQUUsQ0FBYztJQUUxQixZQUFZLENBQW9CLEVBQUUsQ0FBYSxFQUFZLENBQVM7UUFBVCxNQUFDLEdBQUQsQ0FBQyxDQUFRO1FBQ2xFLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQztRQUUxQixJQUFJLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUU7WUFDeEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDdEIsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFO1lBQzFDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3ZCLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNwQixDQUFDLENBQUMsQ0FBQztRQUNILFlBQVksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtZQUMxQixzQkFBc0I7WUFDdEIsdUJBQXVCO1lBQ3ZCLHVCQUF1QjtZQUN2QixzQkFBc0I7WUFDdEIsWUFBWTtZQUNaLGFBQWE7WUFDYixhQUFhO1lBQ2IsWUFBWTtTQUNiLENBQUMsQ0FBQztJQUNMLENBQUM7MkhBN0JVLFVBQVU7K0dBQVYsVUFBVSwybkJBRVAsV0FBVzs7QUFGZCxVQUFVO0lBakJ0QixRQUFRLENBQUM7UUFDUixNQUFNLEVBQUUsY0FBYztRQUN0QixPQUFPLEVBQUUsZUFBZTtLQUN6QixDQUFDO0lBQ0Y7Ozs7O09BS0c7R0FRVSxVQUFVLENBOEJ0QjtTQTlCWSxVQUFVOzRGQUFWLFVBQVU7a0JBUHRCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLHVFQUF1RTtvQkFDdkUsTUFBTSxFQUFFLGNBQWM7aUJBQ3ZCO3NKQUsrQyxRQUFRO3NCQUFyRCxZQUFZO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29udGVudENoaWxkLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgTmdab25lLFxuICBUZW1wbGF0ZVJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IENvbXBvbmVudHMgfSBmcm9tICdAaW9uaWMvY29yZS9jb21wb25lbnRzJztcblxuaW1wb3J0IHsgUHJveHlDbXAsIHByb3h5T3V0cHV0cyB9IGZyb20gJy4uL3V0aWxzL3Byb3h5JztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIElvblBvcG92ZXIgZXh0ZW5kcyBDb21wb25lbnRzLklvblBvcG92ZXIge1xuICAvKipcbiAgICogRW1pdHRlZCBhZnRlciB0aGUgcG9wb3ZlciBoYXMgcHJlc2VudGVkLlxuICAgKi9cbiAgaW9uUG9wb3ZlckRpZFByZXNlbnQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudD47XG4gIC8qKlxuICAgKiBFbWl0dGVkIGJlZm9yZSB0aGUgcG9wb3ZlciBoYXMgcHJlc2VudGVkLlxuICAgKi9cbiAgaW9uUG9wb3ZlcldpbGxQcmVzZW50OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ+O1xuICAvKipcbiAgICogRW1pdHRlZCBhZnRlciB0aGUgcG9wb3ZlciBoYXMgZGlzbWlzc2VkLlxuICAgKi9cbiAgaW9uUG9wb3ZlcldpbGxEaXNtaXNzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ+O1xuICAvKipcbiAgICogRW1pdHRlZCBhZnRlciB0aGUgcG9wb3ZlciBoYXMgZGlzbWlzc2VkLlxuICAgKi9cbiAgaW9uUG9wb3ZlckRpZERpc21pc3M6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudD47XG4gIC8qKlxuICAgKiBFbWl0dGVkIGFmdGVyIHRoZSBwb3BvdmVyIGhhcyBwcmVzZW50ZWQuIFNob3J0aGFuZCBmb3IgaW9uUG9wb3ZlckRpZFByZXNlbnQuXG4gICAqL1xuICBkaWRQcmVzZW50OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ+O1xuICAvKipcbiAgICogRW1pdHRlZCBiZWZvcmUgdGhlIHBvcG92ZXIgaGFzIHByZXNlbnRlZC4gU2hvcnRoYW5kIGZvciBpb25Qb3BvdmVyV2lsbFByZXNlbnQuXG4gICAqL1xuICB3aWxsUHJlc2VudDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgYWZ0ZXIgdGhlIHBvcG92ZXIgaGFzIHByZXNlbnRlZC4gU2hvcnRoYW5kIGZvciBpb25Qb3BvdmVyV2lsbERpc21pc3MuXG4gICAqL1xuICB3aWxsRGlzbWlzczogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgYWZ0ZXIgdGhlIHBvcG92ZXIgaGFzIGRpc21pc3NlZC4gU2hvcnRoYW5kIGZvciBpb25Qb3BvdmVyRGlkRGlzbWlzcy5cbiAgICovXG4gIGRpZERpc21pc3M6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudD47XG59XG5cbmNvbnN0IFBPUE9WRVJfSU5QVVRTID0gW1xuICAnYWxpZ25tZW50JyxcbiAgJ2FuaW1hdGVkJyxcbiAgJ2Fycm93JyxcbiAgJ2tlZXBDb250ZW50c01vdW50ZWQnLFxuICAnYmFja2Ryb3BEaXNtaXNzJyxcbiAgJ2Nzc0NsYXNzJyxcbiAgJ2Rpc21pc3NPblNlbGVjdCcsXG4gICdlbnRlckFuaW1hdGlvbicsXG4gICdldmVudCcsXG4gICdmb2N1c1RyYXAnLFxuICAnaXNPcGVuJyxcbiAgJ2tleWJvYXJkQ2xvc2UnLFxuICAnbGVhdmVBbmltYXRpb24nLFxuICAnbW9kZScsXG4gICdzaG93QmFja2Ryb3AnLFxuICAndHJhbnNsdWNlbnQnLFxuICAndHJpZ2dlcicsXG4gICd0cmlnZ2VyQWN0aW9uJyxcbiAgJ3JlZmVyZW5jZScsXG4gICdzaXplJyxcbiAgJ3NpZGUnLFxuXTtcblxuY29uc3QgUE9QT1ZFUl9NRVRIT0RTID0gWydwcmVzZW50JywgJ2Rpc21pc3MnLCAnb25EaWREaXNtaXNzJywgJ29uV2lsbERpc21pc3MnXTtcblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBQT1BPVkVSX0lOUFVUUyxcbiAgbWV0aG9kczogUE9QT1ZFUl9NRVRIT0RTLFxufSlcbi8qKlxuICogQENvbXBvbmVudCBleHRlbmRzIGZyb20gQERpcmVjdGl2ZVxuICogc28gYnkgZGVmaW5pbmcgdGhlIGlucHV0cyBoZXJlIHdlXG4gKiBkbyBub3QgbmVlZCB0byByZS1kZWZpbmUgdGhlbSBmb3IgdGhlXG4gKiBsYXp5IGxvYWRlZCBwb3BvdmVyLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdpb24tcG9wb3ZlcicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogUE9QT1ZFUl9JTlBVVFMsXG59KVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1jbGFzcy1zdWZmaXhcbmV4cG9ydCBjbGFzcyBJb25Qb3BvdmVyIHtcbiAgLy8gVE9ETyhGVy0yODI3KTogdHlwZVxuICBAQ29udGVudENoaWxkKFRlbXBsYXRlUmVmLCB7IHN0YXRpYzogZmFsc2UgfSkgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgaXNDbXBPcGVuID0gZmFsc2U7XG5cbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcblxuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICB0aGlzLmVsLmFkZEV2ZW50TGlzdGVuZXIoJ2lvbk1vdW50JywgKCkgPT4ge1xuICAgICAgdGhpcy5pc0NtcE9wZW4gPSB0cnVlO1xuICAgICAgYy5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSk7XG4gICAgdGhpcy5lbC5hZGRFdmVudExpc3RlbmVyKCdkaWREaXNtaXNzJywgKCkgPT4ge1xuICAgICAgdGhpcy5pc0NtcE9wZW4gPSBmYWxzZTtcbiAgICAgIGMuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0pO1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbXG4gICAgICAnaW9uUG9wb3ZlckRpZFByZXNlbnQnLFxuICAgICAgJ2lvblBvcG92ZXJXaWxsUHJlc2VudCcsXG4gICAgICAnaW9uUG9wb3ZlcldpbGxEaXNtaXNzJyxcbiAgICAgICdpb25Qb3BvdmVyRGlkRGlzbWlzcycsXG4gICAgICAnZGlkUHJlc2VudCcsXG4gICAgICAnd2lsbFByZXNlbnQnLFxuICAgICAgJ3dpbGxEaXNtaXNzJyxcbiAgICAgICdkaWREaXNtaXNzJyxcbiAgICBdKTtcbiAgfVxufVxuIl19
|