@ionic/vue 8.8.12-dev.11781813448.16e7a064 → 8.8.12-dev.11782931922.18ba507c

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 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, pickerController as pickerController$1, toastController as toastController$1 } from '@ionic/core/components';
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-picker-legacy.js';
95
- import { defineCustomElement as defineCustomElement$1q } from '@ionic/core/components/ion-popover.js';
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 getElementClasses = (ref, componentClasses, defaultClasses = []) => {
119
- return [...Array.from(ref.value?.classList || []), ...defaultClasses].filter((c, i, self) => !componentClasses.has(c) && self.indexOf(c) === i);
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 = (Array.isArray(modelUpdateEvent) ? modelUpdateEvent : [modelUpdateEvent]).map((ev) => ev.replace(/-([a-z])/g, (g) => g[1].toUpperCase()));
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
- modelPropValue = (e?.target)[modelProp];
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: getElementClasses(containerRef, classes),
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 node = h(name, propsToAdd, slots.default && slots.default());
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', 'ion-change');
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', 'ion-change');
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', 'ion-change');
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', 'ion-input');
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', 'ion-input');
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', 'ion-change');
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', 'ion-change');
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', 'ion-input');
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', 'ion-input');
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', 'ion-change');
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', 'ion-change');
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', 'ion-change');
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', 'ion-input');
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', 'ion-change');
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
- return h("ion-router-outlet", { ref: "ionRouterOutlet" }, components &&
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 && prevActiveTab) {
2107
- const prevHref = this.$data.tabState.tabs[prevActiveTab].currentHref;
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 --> /tabs/tab1/child
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 = (currentRoute === null || currentRoute === void 0 ? void 0 : currentRoute.search) ? `?${currentRoute.search}` : "";
2124
- tabs[activeTab] = Object.assign(Object.assign({}, tabs[activeTab]), { currentHref: (currentRoute === null || currentRoute === void 0 ? void 0 : currentRoute.pathname) + search });
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 ((currentRoute === null || currentRoute === void 0 ? void 0 : currentRoute.routerAction) === "pop" &&
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 IonPickerLegacy = /*@__PURE__*/ defineOverlayContainer('ion-picker-legacy', defineCustomElement$1p, ['animated', 'backdropDismiss', 'buttons', 'columns', 'cssClass', 'duration', 'enterAnimation', 'htmlAttributes', 'isOpen', 'keyboardClose', 'leaveAnimation', 'mode', 'showBackdrop', 'trigger']);
2552
- const IonPopover = /*@__PURE__*/ defineOverlayContainer('ion-popover', defineCustomElement$1q, ['alignment', 'animated', 'arrow', 'backdropDismiss', 'component', 'componentProps', 'dismissOnSelect', 'enterAnimation', 'event', 'focusTrap', 'htmlAttributes', 'isOpen', 'keepContentsMounted', 'keyboardClose', 'leaveAnimation', 'mode', 'reference', 'showBackdrop', 'side', 'size', 'translucent', 'trigger', 'triggerAction']);
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$1q, popoverController$1, true);
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, IonPickerLegacy, 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, pickerController, popoverController, toastController, useBackButton, useIonRouter, useKeyboard };
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