@ionic/vue 8.8.13 → 8.8.14-dev.11783706459.1d5a7aae
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/index.js +91 -52
- package/dist/index.js.map +1 -1
- package/dist/types/components/IonPage.d.ts +5 -5
- package/dist/types/components/IonRouterOutlet.d.ts +16 -4
- package/dist/types/components/IonTabBar.d.ts +1 -1
- package/dist/types/components/IonTabButton.d.ts +6 -6
- package/dist/types/components/IonTabs.d.ts +4 -4
- package/dist/types/components/Overlays.d.ts +0 -1
- package/dist/types/controllers.d.ts +1 -9
- package/dist/types/index.d.ts +2 -2
- package/dist/vetur/attributes.json +41 -85
- package/dist/vetur/tags.json +6 -20
- package/dist/web-types.json +58 -241
- package/package.json +5 -5
package/dist/index.js
CHANGED
|
@@ -77,7 +77,7 @@ import { defineCustomElement as defineCustomElement$19 } from '@ionic/core/compo
|
|
|
77
77
|
import { defineCustomElement as defineCustomElement$1a } from '@ionic/core/components/ion-title.js';
|
|
78
78
|
import { defineCustomElement as defineCustomElement$1b } from '@ionic/core/components/ion-toggle.js';
|
|
79
79
|
import { defineCustomElement as defineCustomElement$1c } from '@ionic/core/components/ion-toolbar.js';
|
|
80
|
-
import { LIFECYCLE_WILL_ENTER, LIFECYCLE_DID_ENTER, LIFECYCLE_WILL_LEAVE, LIFECYCLE_DID_LEAVE, initialize, modalController as modalController$1, popoverController as popoverController$1, alertController as alertController$1, actionSheetController as actionSheetController$1, loadingController as loadingController$1,
|
|
80
|
+
import { LIFECYCLE_WILL_ENTER, LIFECYCLE_DID_ENTER, LIFECYCLE_WILL_LEAVE, LIFECYCLE_DID_LEAVE, initialize, modalController as modalController$1, popoverController as popoverController$1, alertController as alertController$1, actionSheetController as actionSheetController$1, loadingController as loadingController$1, toastController as toastController$1 } from '@ionic/core/components';
|
|
81
81
|
export { IonicSafeString, IonicSlides, createAnimation, createGesture, getIonPageElement, getPlatforms, getTimeGivenProgression, iosTransitionAnimation, isPlatform, mdTransitionAnimation, menuController, openURL } from '@ionic/core/components';
|
|
82
82
|
import { defineCustomElement as defineCustomElement$1d } from '@ionic/core/components/ion-back-button.js';
|
|
83
83
|
import { defineCustomElement as defineCustomElement$1e } from '@ionic/core/components/ion-router-outlet.js';
|
|
@@ -91,9 +91,8 @@ import { defineCustomElement as defineCustomElement$1l } from '@ionic/core/compo
|
|
|
91
91
|
import { defineCustomElement as defineCustomElement$1m } from '@ionic/core/components/ion-alert.js';
|
|
92
92
|
import { defineCustomElement as defineCustomElement$1n } from '@ionic/core/components/ion-loading.js';
|
|
93
93
|
import { defineCustomElement as defineCustomElement$1o } from '@ionic/core/components/ion-modal.js';
|
|
94
|
-
import { defineCustomElement as defineCustomElement$1p } from '@ionic/core/components/ion-
|
|
95
|
-
import { defineCustomElement as defineCustomElement$1q } from '@ionic/core/components/ion-
|
|
96
|
-
import { defineCustomElement as defineCustomElement$1r } from '@ionic/core/components/ion-toast.js';
|
|
94
|
+
import { defineCustomElement as defineCustomElement$1p } from '@ionic/core/components/ion-popover.js';
|
|
95
|
+
import { defineCustomElement as defineCustomElement$1q } from '@ionic/core/components/ion-toast.js';
|
|
97
96
|
|
|
98
97
|
const UPDATE_VALUE_EVENT = 'update:modelValue';
|
|
99
98
|
const MODEL_VALUE = 'modelValue';
|
|
@@ -115,8 +114,19 @@ const DEFAULT_EMPTY_PROP$1 = { default: EMPTY_PROP$1 };
|
|
|
115
114
|
const getComponentClasses = (classes) => {
|
|
116
115
|
return classes?.split(' ') || [];
|
|
117
116
|
};
|
|
118
|
-
const
|
|
119
|
-
|
|
117
|
+
const syncElementClasses = (ref, componentClasses, defaultClasses = []) => {
|
|
118
|
+
if (ref?.value) {
|
|
119
|
+
const element = ref.value;
|
|
120
|
+
// makes sure vue classes are on the actual element
|
|
121
|
+
componentClasses.forEach((c) => {
|
|
122
|
+
if (!!c && !element.classList.contains(c)) {
|
|
123
|
+
element.classList.add(c);
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
return [...Array.from(ref.value?.classList || []), ...defaultClasses].filter((c, i, self) => {
|
|
128
|
+
return !componentClasses.has(c) && self.indexOf(c) === i;
|
|
129
|
+
});
|
|
120
130
|
};
|
|
121
131
|
/**
|
|
122
132
|
* Create a callback to define a Vue component wrapper around a Web Component.
|
|
@@ -132,8 +142,9 @@ const getElementClasses = (ref, componentClasses, defaultClasses = []) => {
|
|
|
132
142
|
* to customElements.define. Only set if `includeImportCustomElements: true` in your config.
|
|
133
143
|
* @prop modelProp - The prop that v-model binds to (i.e. value)
|
|
134
144
|
* @prop modelUpdateEvent - The event that is fired from your Web Component when the value changes (i.e. ionChange)
|
|
145
|
+
* @prop modelUpdateEventAttribute - Property to read value from when the value changes.
|
|
135
146
|
*/
|
|
136
|
-
const defineContainer = (name, defineCustomElement, componentProps = [], emitProps = [], modelProp, modelUpdateEvent) => {
|
|
147
|
+
const defineContainer = (name, defineCustomElement, componentProps = [], emitProps = [], modelProp, modelUpdateEvent, modelUpdateEventAttribute, transformTagFn) => {
|
|
137
148
|
/**
|
|
138
149
|
* Create a Vue component wrapper around a Web Component.
|
|
139
150
|
* Note: The `props` here are not all properties on a component.
|
|
@@ -178,7 +189,7 @@ const defineContainer = (name, defineCustomElement, componentProps = [], emitPro
|
|
|
178
189
|
*/
|
|
179
190
|
const vModelDirective = {
|
|
180
191
|
created: (el) => {
|
|
181
|
-
const eventsNames =
|
|
192
|
+
const eventsNames = Array.isArray(modelUpdateEvent) ? modelUpdateEvent : [modelUpdateEvent];
|
|
182
193
|
eventsNames.forEach((eventName) => {
|
|
183
194
|
el.addEventListener(eventName, (e) => {
|
|
184
195
|
/**
|
|
@@ -189,7 +200,11 @@ const defineContainer = (name, defineCustomElement, componentProps = [], emitPro
|
|
|
189
200
|
* when ionChange bubbles up from Component B.
|
|
190
201
|
*/
|
|
191
202
|
if (e.target.tagName === el.tagName && modelProp) {
|
|
192
|
-
|
|
203
|
+
const resolvePath = (object, path) => {
|
|
204
|
+
return path.split('.').reduce((value, key) => (value !== undefined ? value[key] : undefined), object);
|
|
205
|
+
};
|
|
206
|
+
const path = (modelUpdateEventAttribute ?? `target.${modelProp}`);
|
|
207
|
+
const modelPropValue = resolvePath(e, path);
|
|
193
208
|
emit(UPDATE_VALUE_EVENT, modelPropValue);
|
|
194
209
|
}
|
|
195
210
|
});
|
|
@@ -243,7 +258,7 @@ const defineContainer = (name, defineCustomElement, componentProps = [], emitPro
|
|
|
243
258
|
};
|
|
244
259
|
const propsToAdd = {
|
|
245
260
|
ref: containerRef,
|
|
246
|
-
class:
|
|
261
|
+
class: syncElementClasses(containerRef, classes),
|
|
247
262
|
onClick: handleClick,
|
|
248
263
|
};
|
|
249
264
|
/**
|
|
@@ -291,7 +306,8 @@ const defineContainer = (name, defineCustomElement, componentProps = [], emitPro
|
|
|
291
306
|
* vModelDirective is only needed on components that support v-model.
|
|
292
307
|
* As a result, we conditionally call withDirectives with v-model components.
|
|
293
308
|
*/
|
|
294
|
-
const
|
|
309
|
+
const tagName = transformTagFn ? transformTagFn(name) : name;
|
|
310
|
+
const node = h(tagName, propsToAdd, slots.default && slots.default());
|
|
295
311
|
return modelProp === undefined ? node : withDirectives(node, [[vModelDirective]]);
|
|
296
312
|
};
|
|
297
313
|
}, {
|
|
@@ -323,7 +339,7 @@ const IonAccordionGroup = /*@__PURE__*/ defineContainer('ion-accordion-group', d
|
|
|
323
339
|
], [
|
|
324
340
|
'ionChange',
|
|
325
341
|
'ionValueChange'
|
|
326
|
-
], 'value', '
|
|
342
|
+
], 'value', 'ionChange', undefined);
|
|
327
343
|
const IonAvatar = /*@__PURE__*/ defineContainer('ion-avatar', defineCustomElement$2);
|
|
328
344
|
const IonBackdrop = /*@__PURE__*/ defineContainer('ion-backdrop', defineCustomElement$3, [
|
|
329
345
|
'visible',
|
|
@@ -436,7 +452,7 @@ const IonCheckbox = /*@__PURE__*/ defineContainer('ion-checkbox', defineCustomEl
|
|
|
436
452
|
'ionChange',
|
|
437
453
|
'ionFocus',
|
|
438
454
|
'ionBlur'
|
|
439
|
-
], 'checked', '
|
|
455
|
+
], 'checked', 'ionChange', undefined);
|
|
440
456
|
const IonChip = /*@__PURE__*/ defineContainer('ion-chip', defineCustomElement$f, [
|
|
441
457
|
'color',
|
|
442
458
|
'outline',
|
|
@@ -531,7 +547,7 @@ const IonDatetime = /*@__PURE__*/ defineContainer('ion-datetime', defineCustomEl
|
|
|
531
547
|
'ionBlur',
|
|
532
548
|
'ionStyle',
|
|
533
549
|
'ionRender'
|
|
534
|
-
], 'value', '
|
|
550
|
+
], 'value', 'ionChange', undefined);
|
|
535
551
|
const IonDatetimeButton = /*@__PURE__*/ defineContainer('ion-datetime-button', defineCustomElement$j, [
|
|
536
552
|
'color',
|
|
537
553
|
'disabled',
|
|
@@ -646,7 +662,7 @@ const IonInput = /*@__PURE__*/ defineContainer('ion-input', defineCustomElement$
|
|
|
646
662
|
'ionChange',
|
|
647
663
|
'ionBlur',
|
|
648
664
|
'ionFocus'
|
|
649
|
-
], 'value', '
|
|
665
|
+
], 'value', 'ionInput', undefined);
|
|
650
666
|
const IonInputOtp = /*@__PURE__*/ defineContainer('ion-input-otp', defineCustomElement$u, [
|
|
651
667
|
'autocapitalize',
|
|
652
668
|
'color',
|
|
@@ -672,7 +688,7 @@ const IonInputOtp = /*@__PURE__*/ defineContainer('ion-input-otp', defineCustomE
|
|
|
672
688
|
'ionComplete',
|
|
673
689
|
'ionBlur',
|
|
674
690
|
'ionFocus'
|
|
675
|
-
], 'value', '
|
|
691
|
+
], 'value', 'ionInput', undefined);
|
|
676
692
|
const IonInputPasswordToggle = /*@__PURE__*/ defineContainer('ion-input-password-toggle', defineCustomElement$v, [
|
|
677
693
|
'color',
|
|
678
694
|
'showIcon',
|
|
@@ -817,7 +833,7 @@ const IonRadio = /*@__PURE__*/ defineContainer('ion-radio', defineCustomElement$
|
|
|
817
833
|
], [
|
|
818
834
|
'ionFocus',
|
|
819
835
|
'ionBlur'
|
|
820
|
-
], 'value', '
|
|
836
|
+
], 'value', 'ionChange', undefined);
|
|
821
837
|
const IonRadioGroup = /*@__PURE__*/ defineContainer('ion-radio-group', defineCustomElement$P, [
|
|
822
838
|
'allowEmptySelection',
|
|
823
839
|
'compareWith',
|
|
@@ -830,7 +846,7 @@ const IonRadioGroup = /*@__PURE__*/ defineContainer('ion-radio-group', defineCus
|
|
|
830
846
|
], [
|
|
831
847
|
'ionChange',
|
|
832
848
|
'ionValueChange'
|
|
833
|
-
], 'value', '
|
|
849
|
+
], 'value', 'ionChange', undefined);
|
|
834
850
|
const IonRange = /*@__PURE__*/ defineContainer('ion-range', defineCustomElement$Q, [
|
|
835
851
|
'color',
|
|
836
852
|
'debounce',
|
|
@@ -861,7 +877,7 @@ const IonRange = /*@__PURE__*/ defineContainer('ion-range', defineCustomElement$
|
|
|
861
877
|
'ionBlur',
|
|
862
878
|
'ionKnobMoveStart',
|
|
863
879
|
'ionKnobMoveEnd'
|
|
864
|
-
], 'value', '
|
|
880
|
+
], 'value', 'ionInput', undefined);
|
|
865
881
|
const IonRefresher = /*@__PURE__*/ defineContainer('ion-refresher', defineCustomElement$R, [
|
|
866
882
|
'pullMin',
|
|
867
883
|
'pullMax',
|
|
@@ -942,7 +958,7 @@ const IonSearchbar = /*@__PURE__*/ defineContainer('ion-searchbar', defineCustom
|
|
|
942
958
|
'ionBlur',
|
|
943
959
|
'ionFocus',
|
|
944
960
|
'ionStyle'
|
|
945
|
-
], 'value', '
|
|
961
|
+
], 'value', 'ionInput', undefined);
|
|
946
962
|
const IonSegment = /*@__PURE__*/ defineContainer('ion-segment', defineCustomElement$Y, [
|
|
947
963
|
'color',
|
|
948
964
|
'disabled',
|
|
@@ -957,14 +973,14 @@ const IonSegment = /*@__PURE__*/ defineContainer('ion-segment', defineCustomElem
|
|
|
957
973
|
'ionChange',
|
|
958
974
|
'ionSelect',
|
|
959
975
|
'ionStyle'
|
|
960
|
-
], 'value', '
|
|
976
|
+
], 'value', 'ionChange', undefined);
|
|
961
977
|
const IonSegmentButton = /*@__PURE__*/ defineContainer('ion-segment-button', defineCustomElement$Z, [
|
|
962
978
|
'contentId',
|
|
963
979
|
'disabled',
|
|
964
980
|
'layout',
|
|
965
981
|
'type',
|
|
966
982
|
'value'
|
|
967
|
-
], [], 'value', '
|
|
983
|
+
], [], 'value', 'ionChange', undefined);
|
|
968
984
|
const IonSegmentContent = /*@__PURE__*/ defineContainer('ion-segment-content', defineCustomElement$_);
|
|
969
985
|
const IonSegmentView = /*@__PURE__*/ defineContainer('ion-segment-view', defineCustomElement$$, [
|
|
970
986
|
'disabled',
|
|
@@ -1009,7 +1025,7 @@ const IonSelect = /*@__PURE__*/ defineContainer('ion-select', defineCustomElemen
|
|
|
1009
1025
|
'ionFocus',
|
|
1010
1026
|
'ionBlur',
|
|
1011
1027
|
'ionStyle'
|
|
1012
|
-
], 'value', '
|
|
1028
|
+
], 'value', 'ionChange', undefined);
|
|
1013
1029
|
const IonSelectModal = /*@__PURE__*/ defineContainer('ion-select-modal', defineCustomElement$11, [
|
|
1014
1030
|
'header',
|
|
1015
1031
|
'cancelText',
|
|
@@ -1018,7 +1034,10 @@ const IonSelectModal = /*@__PURE__*/ defineContainer('ion-select-modal', defineC
|
|
|
1018
1034
|
]);
|
|
1019
1035
|
const IonSelectOption = /*@__PURE__*/ defineContainer('ion-select-option', defineCustomElement$12, [
|
|
1020
1036
|
'disabled',
|
|
1021
|
-
'value'
|
|
1037
|
+
'value',
|
|
1038
|
+
'description',
|
|
1039
|
+
'labelPlacement',
|
|
1040
|
+
'justify'
|
|
1022
1041
|
]);
|
|
1023
1042
|
const IonSkeletonText = /*@__PURE__*/ defineContainer('ion-skeleton-text', defineCustomElement$13, [
|
|
1024
1043
|
'animated',
|
|
@@ -1087,7 +1106,7 @@ const IonTextarea = /*@__PURE__*/ defineContainer('ion-textarea', defineCustomEl
|
|
|
1087
1106
|
'ionInput',
|
|
1088
1107
|
'ionBlur',
|
|
1089
1108
|
'ionFocus'
|
|
1090
|
-
], 'value', '
|
|
1109
|
+
], 'value', 'ionInput', undefined);
|
|
1091
1110
|
const IonThumbnail = /*@__PURE__*/ defineContainer('ion-thumbnail', defineCustomElement$19);
|
|
1092
1111
|
const IonTitle = /*@__PURE__*/ defineContainer('ion-title', defineCustomElement$1a, [
|
|
1093
1112
|
'color',
|
|
@@ -1116,7 +1135,7 @@ const IonToggle = /*@__PURE__*/ defineContainer('ion-toggle', defineCustomElemen
|
|
|
1116
1135
|
'ionChange',
|
|
1117
1136
|
'ionFocus',
|
|
1118
1137
|
'ionBlur'
|
|
1119
|
-
], 'checked', '
|
|
1138
|
+
], 'checked', 'ionChange', undefined);
|
|
1120
1139
|
const IonToolbar = /*@__PURE__*/ defineContainer('ion-toolbar', defineCustomElement$1c, [
|
|
1121
1140
|
'color'
|
|
1122
1141
|
]);
|
|
@@ -1284,7 +1303,7 @@ const IonBackButton = /*@__PURE__*/ defineComponent((_, { attrs, slots }) => {
|
|
|
1284
1303
|
defineCustomElement$1d();
|
|
1285
1304
|
// TODO(FW-2969): type
|
|
1286
1305
|
const ionRouter = inject("navManager");
|
|
1287
|
-
const onClick = () => {
|
|
1306
|
+
const onClick = (ev) => {
|
|
1288
1307
|
/**
|
|
1289
1308
|
* When using ion-back-button outside of
|
|
1290
1309
|
* a routing context, ionRouter is undefined.
|
|
@@ -1292,6 +1311,17 @@ const IonBackButton = /*@__PURE__*/ defineComponent((_, { attrs, slots }) => {
|
|
|
1292
1311
|
if (ionRouter === undefined) {
|
|
1293
1312
|
return;
|
|
1294
1313
|
}
|
|
1314
|
+
/**
|
|
1315
|
+
* If ion-back-button is being used inside
|
|
1316
|
+
* of ion-nav (e.g. in a modal) then we should
|
|
1317
|
+
* not interact with the router. The core
|
|
1318
|
+
* ion-back-button component will handle the
|
|
1319
|
+
* nav.pop() in that case.
|
|
1320
|
+
*/
|
|
1321
|
+
const target = ev.target;
|
|
1322
|
+
if (target && target.closest("ion-nav") !== null) {
|
|
1323
|
+
return;
|
|
1324
|
+
}
|
|
1295
1325
|
const defaultHref = attrs["default-href"] || attrs["defaultHref"];
|
|
1296
1326
|
const routerAnimation = attrs["router-animation"] || attrs["routerAnimation"];
|
|
1297
1327
|
ionRouter.handleNavigateBack(defaultHref, routerAnimation);
|
|
@@ -1327,6 +1357,12 @@ const isViewVisible = (enteringEl) => {
|
|
|
1327
1357
|
const viewDepthKey = Symbol(0);
|
|
1328
1358
|
const IonRouterOutlet = /*@__PURE__*/ defineComponent({
|
|
1329
1359
|
name: "IonRouterOutlet",
|
|
1360
|
+
props: {
|
|
1361
|
+
swipeGesture: {
|
|
1362
|
+
type: Boolean,
|
|
1363
|
+
default: undefined,
|
|
1364
|
+
},
|
|
1365
|
+
},
|
|
1330
1366
|
setup() {
|
|
1331
1367
|
defineCustomElement$1e();
|
|
1332
1368
|
const injectedRoute = inject(routeLocationKey);
|
|
@@ -1404,11 +1440,6 @@ const IonRouterOutlet = /*@__PURE__*/ defineComponent({
|
|
|
1404
1440
|
*/
|
|
1405
1441
|
{ deep: true });
|
|
1406
1442
|
const canStart = () => {
|
|
1407
|
-
const config = getConfig();
|
|
1408
|
-
const swipeEnabled = config &&
|
|
1409
|
-
config.get("swipeBackEnabled", ionRouterOutlet.value.mode === "ios");
|
|
1410
|
-
if (!swipeEnabled)
|
|
1411
|
-
return false;
|
|
1412
1443
|
const stack = viewStacks.getViewStack(id);
|
|
1413
1444
|
if (!stack || stack.length <= 1)
|
|
1414
1445
|
return false;
|
|
@@ -1699,7 +1730,15 @@ See https://ionicframework.com/docs/vue/navigation#ionpage for more information.
|
|
|
1699
1730
|
},
|
|
1700
1731
|
render() {
|
|
1701
1732
|
const { components, registerIonPage, injectedRoute } = this;
|
|
1702
|
-
|
|
1733
|
+
/**
|
|
1734
|
+
* Forward props selectively to avoid setting undefined values
|
|
1735
|
+
* that would override the web component's config-based defaults.
|
|
1736
|
+
*/
|
|
1737
|
+
const routerOutletProps = { ref: "ionRouterOutlet" };
|
|
1738
|
+
if (this.$props.swipeGesture !== undefined) {
|
|
1739
|
+
routerOutletProps.swipeGesture = this.$props.swipeGesture;
|
|
1740
|
+
}
|
|
1741
|
+
return h("ion-router-outlet", routerOutletProps, components &&
|
|
1703
1742
|
components.map((c) => {
|
|
1704
1743
|
var _a, _b;
|
|
1705
1744
|
let props = {
|
|
@@ -1813,7 +1852,7 @@ const IonTabButton = /*@__PURE__*/ defineComponent({
|
|
|
1813
1852
|
if (ionRouter !== null) {
|
|
1814
1853
|
if (prevActiveTab === tab) {
|
|
1815
1854
|
if (originalHref !== currentHref) {
|
|
1816
|
-
ionRouter.resetTab(tab);
|
|
1855
|
+
ionRouter.resetTab(tab, originalHref);
|
|
1817
1856
|
}
|
|
1818
1857
|
}
|
|
1819
1858
|
else {
|
|
@@ -2103,31 +2142,36 @@ const IonTabBar = defineComponent({
|
|
|
2103
2142
|
};
|
|
2104
2143
|
}
|
|
2105
2144
|
});
|
|
2106
|
-
if (activeTab &&
|
|
2107
|
-
const prevHref =
|
|
2145
|
+
if (activeTab && (currentRoute === null || currentRoute === void 0 ? void 0 : currentRoute.pathname)) {
|
|
2146
|
+
const prevHref = prevActiveTab
|
|
2147
|
+
? this.$data.tabState.tabs[prevActiveTab].currentHref
|
|
2148
|
+
: undefined;
|
|
2108
2149
|
/**
|
|
2109
2150
|
* If the tabs change or the url changes,
|
|
2110
2151
|
* update the currentHref for the active tab.
|
|
2111
|
-
* Ex: url changes from /tabs/tab1
|
|
2152
|
+
* Ex: url changes from /tabs/tab1 to /tabs/tab1/child.
|
|
2112
2153
|
* If we went to tab2 then back to tab1, we should
|
|
2113
2154
|
* land on /tabs/tab1/child instead of /tabs/tab1.
|
|
2155
|
+
*
|
|
2156
|
+
* Also runs on initial setup so a deep-loaded tab child
|
|
2157
|
+
* records its real pathname instead of `originalHref`.
|
|
2114
2158
|
*/
|
|
2115
|
-
if (activeTab !== prevActiveTab ||
|
|
2116
|
-
prevHref !== (currentRoute === null || currentRoute === void 0 ? void 0 : currentRoute.pathname)) {
|
|
2159
|
+
if (activeTab !== prevActiveTab || prevHref !== currentRoute.pathname) {
|
|
2117
2160
|
/**
|
|
2118
2161
|
* By default the search is `undefined` in Ionic Vue,
|
|
2119
2162
|
* but Vue Router can set the search to the empty string.
|
|
2120
2163
|
* We check for truthy here because empty string is falsy
|
|
2121
2164
|
* and currentRoute.search cannot ever be a boolean.
|
|
2122
2165
|
*/
|
|
2123
|
-
const search =
|
|
2124
|
-
tabs[activeTab] = Object.assign(Object.assign({}, tabs[activeTab]), { currentHref:
|
|
2166
|
+
const search = currentRoute.search ? `?${currentRoute.search}` : "";
|
|
2167
|
+
tabs[activeTab] = Object.assign(Object.assign({}, tabs[activeTab]), { currentHref: currentRoute.pathname + search });
|
|
2125
2168
|
}
|
|
2126
2169
|
/**
|
|
2127
2170
|
* If navigating back and the tabs change,
|
|
2128
2171
|
* set the previous tab back to its original href.
|
|
2129
2172
|
*/
|
|
2130
|
-
if (
|
|
2173
|
+
if (prevActiveTab &&
|
|
2174
|
+
currentRoute.routerAction === "pop" &&
|
|
2131
2175
|
activeTab !== prevActiveTab) {
|
|
2132
2176
|
tabs[prevActiveTab] = Object.assign(Object.assign({}, tabs[prevActiveTab]), { currentHref: tabs[prevActiveTab].originalHref });
|
|
2133
2177
|
}
|
|
@@ -2548,9 +2592,8 @@ const IonActionSheet = /*@__PURE__*/ defineOverlayContainer('ion-action-sheet',
|
|
|
2548
2592
|
const IonAlert = /*@__PURE__*/ defineOverlayContainer('ion-alert', defineCustomElement$1m, ['animated', 'backdropDismiss', 'buttons', 'cssClass', 'enterAnimation', 'header', 'htmlAttributes', 'inputs', 'isOpen', 'keyboardClose', 'leaveAnimation', 'message', 'mode', 'subHeader', 'translucent', 'trigger']);
|
|
2549
2593
|
const IonLoading = /*@__PURE__*/ defineOverlayContainer('ion-loading', defineCustomElement$1n, ['animated', 'backdropDismiss', 'cssClass', 'duration', 'enterAnimation', 'htmlAttributes', 'isOpen', 'keyboardClose', 'leaveAnimation', 'message', 'mode', 'showBackdrop', 'spinner', 'translucent', 'trigger']);
|
|
2550
2594
|
const IonModal = /*@__PURE__*/ defineOverlayContainer('ion-modal', defineCustomElement$1o, ['animated', 'backdropBreakpoint', 'backdropDismiss', 'breakpoints', 'canDismiss', 'enterAnimation', 'expandToScroll', 'focusTrap', 'handle', 'handleBehavior', 'htmlAttributes', 'initialBreakpoint', 'isOpen', 'keepContentsMounted', 'keyboardClose', 'leaveAnimation', 'mode', 'presentingElement', 'showBackdrop', 'trigger'], true);
|
|
2551
|
-
const
|
|
2552
|
-
const
|
|
2553
|
-
const IonToast = /*@__PURE__*/ defineOverlayContainer('ion-toast', defineCustomElement$1r, ['animated', 'buttons', 'color', 'cssClass', 'duration', 'enterAnimation', 'header', 'htmlAttributes', 'icon', 'isOpen', 'keyboardClose', 'layout', 'leaveAnimation', 'message', 'mode', 'position', 'positionAnchor', 'swipeGesture', 'translucent', 'trigger']);
|
|
2595
|
+
const IonPopover = /*@__PURE__*/ defineOverlayContainer('ion-popover', defineCustomElement$1p, ['alignment', 'animated', 'arrow', 'backdropDismiss', 'component', 'componentProps', 'dismissOnSelect', 'enterAnimation', 'event', 'focusTrap', 'htmlAttributes', 'isOpen', 'keepContentsMounted', 'keyboardClose', 'leaveAnimation', 'mode', 'reference', 'showBackdrop', 'side', 'size', 'translucent', 'trigger', 'triggerAction']);
|
|
2596
|
+
const IonToast = /*@__PURE__*/ defineOverlayContainer('ion-toast', defineCustomElement$1q, ['animated', 'buttons', 'color', 'cssClass', 'duration', 'enterAnimation', 'header', 'htmlAttributes', 'icon', 'isOpen', 'keyboardClose', 'layout', 'leaveAnimation', 'message', 'mode', 'position', 'positionAnchor', 'swipeGesture', 'translucent', 'trigger']);
|
|
2554
2597
|
|
|
2555
2598
|
// TODO(FW-2969): types
|
|
2556
2599
|
/**
|
|
@@ -2568,15 +2611,11 @@ const createController = (defineCustomElement, oldController, useDelegate = fals
|
|
|
2568
2611
|
return oldController;
|
|
2569
2612
|
};
|
|
2570
2613
|
const modalController = /*@__PURE__*/ createController(defineCustomElement$1o, modalController$1, true);
|
|
2571
|
-
const popoverController = /*@__PURE__*/ createController(defineCustomElement$
|
|
2614
|
+
const popoverController = /*@__PURE__*/ createController(defineCustomElement$1p, popoverController$1, true);
|
|
2572
2615
|
const alertController = /*@__PURE__*/ createController(defineCustomElement$1m, alertController$1);
|
|
2573
2616
|
const actionSheetController = /*@__PURE__*/ createController(defineCustomElement$1l, actionSheetController$1);
|
|
2574
2617
|
const loadingController = /*@__PURE__*/ createController(defineCustomElement$1n, loadingController$1);
|
|
2575
|
-
|
|
2576
|
-
* @deprecated Use the inline ion-picker component instead.
|
|
2577
|
-
*/
|
|
2578
|
-
const pickerController = /*@__PURE__*/ createController(defineCustomElement$1p, pickerController$1);
|
|
2579
|
-
const toastController = /*@__PURE__*/ createController(defineCustomElement$1r, toastController$1);
|
|
2618
|
+
const toastController = /*@__PURE__*/ createController(defineCustomElement$1q, toastController$1);
|
|
2580
2619
|
|
|
2581
|
-
export { IonAccordion, IonAccordionGroup, IonActionSheet, IonAlert, IonApp, IonAvatar, IonBackButton, IonBackdrop, IonBadge, IonBreadcrumb, IonBreadcrumbs, IonButton, IonButtons, IonCard, IonCardContent, IonCardHeader, IonCardSubtitle, IonCardTitle, IonCheckbox, IonChip, IonCol, IonContent, IonDatetime, IonDatetimeButton, IonFab, IonFabButton, IonFabList, IonFooter, IonGrid, IonHeader, IonIcon, IonImg, IonInfiniteScroll, IonInfiniteScrollContent, IonInput, IonInputOtp, IonInputPasswordToggle, IonItem, IonItemDivider, IonItemGroup, IonItemOption, IonItemOptions, IonItemSliding, IonLabel, IonList, IonListHeader, IonLoading, IonMenu, IonMenuButton, IonMenuToggle, IonModal, IonNav, IonNavLink, IonNote, IonPage, IonPicker, IonPickerColumn, IonPickerColumnOption,
|
|
2620
|
+
export { IonAccordion, IonAccordionGroup, IonActionSheet, IonAlert, IonApp, IonAvatar, IonBackButton, IonBackdrop, IonBadge, IonBreadcrumb, IonBreadcrumbs, IonButton, IonButtons, IonCard, IonCardContent, IonCardHeader, IonCardSubtitle, IonCardTitle, IonCheckbox, IonChip, IonCol, IonContent, IonDatetime, IonDatetimeButton, IonFab, IonFabButton, IonFabList, IonFooter, IonGrid, IonHeader, IonIcon, IonImg, IonInfiniteScroll, IonInfiniteScrollContent, IonInput, IonInputOtp, IonInputPasswordToggle, IonItem, IonItemDivider, IonItemGroup, IonItemOption, IonItemOptions, IonItemSliding, IonLabel, IonList, IonListHeader, IonLoading, IonMenu, IonMenuButton, IonMenuToggle, IonModal, IonNav, IonNavLink, IonNote, IonPage, IonPicker, IonPickerColumn, IonPickerColumnOption, IonPopover, IonProgressBar, IonRadio, IonRadioGroup, IonRange, IonRefresher, IonRefresherContent, IonReorder, IonReorderGroup, IonRippleEffect, IonRouterOutlet, IonRow, IonSearchbar, IonSegment, IonSegmentButton, IonSegmentContent, IonSegmentView, IonSelect, IonSelectModal, IonSelectOption, IonSkeletonText, IonSpinner, IonSplitPane, IonTab, IonTabBar, IonTabButton, IonTabs, IonText, IonTextarea, IonThumbnail, IonTitle, IonToast, IonToggle, IonToolbar, IonicVue, actionSheetController, alertController, loadingController, modalController, onIonViewDidEnter, onIonViewDidLeave, onIonViewWillEnter, onIonViewWillLeave, popoverController, toastController, useBackButton, useIonRouter, useKeyboard };
|
|
2582
2621
|
//# sourceMappingURL=index.js.map
|