@ionic/vue 8.4.2 → 8.4.3-dev.11738077091.1746b338

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
@@ -89,13 +89,11 @@ import { defineCustomElement as defineCustomElement$1j } from 'ionicons/componen
89
89
  import { defineCustomElement as defineCustomElement$1k } from '@ionic/core/components/ion-action-sheet.js';
90
90
  import { defineCustomElement as defineCustomElement$1l } from '@ionic/core/components/ion-alert.js';
91
91
  import { defineCustomElement as defineCustomElement$1m } from '@ionic/core/components/ion-loading.js';
92
- import { defineCustomElement as defineCustomElement$1n } from '@ionic/core/components/ion-picker-legacy.js';
93
- import { defineCustomElement as defineCustomElement$1o } from '@ionic/core/components/ion-toast.js';
94
- import { defineCustomElement as defineCustomElement$1p } from '@ionic/core/components/ion-modal.js';
95
- import { defineCustomElement as defineCustomElement$1q } from '@ionic/core/components/ion-popover.js';
92
+ import { defineCustomElement as defineCustomElement$1n } from '@ionic/core/components/ion-modal.js';
93
+ import { defineCustomElement as defineCustomElement$1o } from '@ionic/core/components/ion-picker-legacy.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';
96
96
 
97
- // @ts-nocheck
98
- // It's easier and safer for Volar to disable typechecking and let the return type inference do its job.
99
97
  const UPDATE_VALUE_EVENT = 'update:modelValue';
100
98
  const MODEL_VALUE = 'modelValue';
101
99
  const ROUTER_LINK_VALUE = 'routerLink';
@@ -114,11 +112,10 @@ const ARIA_PROP_PREFIX = 'aria';
114
112
  const EMPTY_PROP$1 = Symbol();
115
113
  const DEFAULT_EMPTY_PROP$1 = { default: EMPTY_PROP$1 };
116
114
  const getComponentClasses = (classes) => {
117
- return (classes === null || classes === void 0 ? void 0 : classes.split(' ')) || [];
115
+ return classes?.split(' ') || [];
118
116
  };
119
117
  const getElementClasses = (ref, componentClasses, defaultClasses = []) => {
120
- var _a;
121
- return [...Array.from(((_a = ref.value) === null || _a === void 0 ? void 0 : _a.classList) || []), ...defaultClasses].filter((c, i, self) => !componentClasses.has(c) && self.indexOf(c) === i);
118
+ return [...Array.from(ref.value?.classList || []), ...defaultClasses].filter((c, i, self) => !componentClasses.has(c) && self.indexOf(c) === i);
122
119
  };
123
120
  /**
124
121
  * Create a callback to define a Vue component wrapper around a Web Component.
@@ -127,12 +124,15 @@ const getElementClasses = (ref, componentClasses, defaultClasses = []) => {
127
124
  * @prop componentProps - An array of properties on the
128
125
  * component. These usually match up with the @Prop definitions
129
126
  * in each component's TSX file.
127
+ * @prop emitProps - An array of for event listener on the Component.
128
+ * these usually match up with the @Event definitions
129
+ * in each compont's TSX file.
130
130
  * @prop customElement - An option custom element instance to pass
131
131
  * to customElements.define. Only set if `includeImportCustomElements: true` in your config.
132
132
  * @prop modelProp - The prop that v-model binds to (i.e. value)
133
133
  * @prop modelUpdateEvent - The event that is fired from your Web Component when the value changes (i.e. ionChange)
134
134
  */
135
- const defineContainer = (name, defineCustomElement, componentProps = [], modelProp, modelUpdateEvent) => {
135
+ const defineContainer = (name, defineCustomElement, componentProps = [], emitProps = [], modelProp, modelUpdateEvent) => {
136
136
  /**
137
137
  * Create a Vue component wrapper around a Web Component.
138
138
  * Note: The `props` here are not all properties on a component.
@@ -142,8 +142,7 @@ const defineContainer = (name, defineCustomElement, componentProps = [], modelPr
142
142
  defineCustomElement();
143
143
  }
144
144
  const Container = defineComponent((props, { attrs, slots, emit }) => {
145
- var _a;
146
- let modelPropValue = props[modelProp];
145
+ let modelPropValue = modelProp ? props[modelProp] : undefined;
147
146
  const containerRef = ref();
148
147
  const classes = new Set(getComponentClasses(attrs.class));
149
148
  /**
@@ -168,16 +167,25 @@ const defineContainer = (name, defineCustomElement, componentProps = [], modelPr
168
167
  * the v-model for Component A when ionChange originates from that element and not
169
168
  * when ionChange bubbles up from Component B.
170
169
  */
171
- if (e.target.tagName === el.tagName) {
172
- modelPropValue = (e === null || e === void 0 ? void 0 : e.target)[modelProp];
170
+ if (e.target.tagName === el.tagName && modelProp) {
171
+ modelPropValue = (e?.target)[modelProp];
173
172
  emit(UPDATE_VALUE_EVENT, modelPropValue);
174
173
  }
175
174
  });
176
175
  });
176
+ /**
177
+ * we register the event emmiter for @Event definitions
178
+ * so we can use @event
179
+ */
180
+ emitProps.forEach((eventName) => {
181
+ el.addEventListener(eventName, (e) => {
182
+ emit(eventName, e);
183
+ });
184
+ });
177
185
  },
178
186
  };
179
187
  const currentInstance = getCurrentInstance();
180
- const hasRouter = (_a = currentInstance === null || currentInstance === void 0 ? void 0 : currentInstance.appContext) === null || _a === void 0 ? void 0 : _a.provides[NAV_MANAGER];
188
+ const hasRouter = currentInstance?.appContext?.provides[NAV_MANAGER];
181
189
  const navManager = hasRouter ? inject(NAV_MANAGER) : undefined;
182
190
  const handleRouterLink = (ev) => {
183
191
  const { routerLink } = props;
@@ -211,6 +219,7 @@ const defineContainer = (name, defineCustomElement, componentProps = [], modelPr
211
219
  getComponentClasses(attrs.class).forEach((value) => {
212
220
  classes.add(value);
213
221
  });
222
+ // @ts-expect-error
214
223
  const oldClick = props.onClick;
215
224
  const handleClick = (ev) => {
216
225
  if (oldClick !== undefined) {
@@ -236,6 +245,14 @@ const defineContainer = (name, defineCustomElement, componentProps = [], modelPr
236
245
  if ((props.hasOwnProperty(key) && value !== EMPTY_PROP$1) || key.startsWith(ARIA_PROP_PREFIX)) {
237
246
  propsToAdd[key] = value;
238
247
  }
248
+ /**
249
+ * register event handlers on the component
250
+ */
251
+ const eventHandlerKey = 'on' + key.slice(0, 1).toUpperCase() + key.slice(1);
252
+ const eventHandler = attrs[eventHandlerKey];
253
+ if (containerRef.value && attrs.hasOwnProperty(eventHandlerKey) && 'addEventListener' in containerRef.value) {
254
+ containerRef.value.addEventListener(key, eventHandler);
255
+ }
239
256
  }
240
257
  if (modelProp) {
241
258
  /**
@@ -245,18 +262,27 @@ const defineContainer = (name, defineCustomElement, componentProps = [], modelPr
245
262
  * was set as a static value (i.e. no v-model).
246
263
  */
247
264
  if (props[MODEL_VALUE] !== EMPTY_PROP$1) {
248
- propsToAdd = Object.assign(Object.assign({}, propsToAdd), { [modelProp]: props[MODEL_VALUE] });
265
+ propsToAdd = {
266
+ ...propsToAdd,
267
+ [modelProp]: props[MODEL_VALUE],
268
+ };
249
269
  }
250
270
  else if (modelPropValue !== EMPTY_PROP$1) {
251
- propsToAdd = Object.assign(Object.assign({}, propsToAdd), { [modelProp]: modelPropValue });
271
+ propsToAdd = {
272
+ ...propsToAdd,
273
+ [modelProp]: modelPropValue,
274
+ };
252
275
  }
253
276
  }
254
277
  // If router link is defined, add href to props
255
278
  // in order to properly render an anchor tag inside
256
279
  // of components that should become activatable and
257
280
  // focusable with router link.
258
- if (props[ROUTER_LINK_VALUE] !== EMPTY_PROP$1) {
259
- propsToAdd = Object.assign(Object.assign({}, propsToAdd), { href: props[ROUTER_LINK_VALUE] });
281
+ if (ROUTER_LINK_VALUE in props && props[ROUTER_LINK_VALUE] !== EMPTY_PROP$1) {
282
+ propsToAdd = {
283
+ ...propsToAdd,
284
+ href: props[ROUTER_LINK_VALUE],
285
+ };
260
286
  }
261
287
  /**
262
288
  * vModelDirective is only needed on components that support v-model.
@@ -267,17 +293,27 @@ const defineContainer = (name, defineCustomElement, componentProps = [], modelPr
267
293
  };
268
294
  });
269
295
  if (typeof Container !== 'function') {
270
- Container.name = name;
271
- Container.props = {
272
- [ROUTER_LINK_VALUE]: DEFAULT_EMPTY_PROP$1,
273
- };
274
- componentProps.forEach((componentProp) => {
275
- Container.props[componentProp] = DEFAULT_EMPTY_PROP$1;
276
- });
296
+ let emits = [];
297
+ let props = {};
298
+ props[ROUTER_LINK_VALUE] = DEFAULT_EMPTY_PROP$1;
299
+ componentProps.forEach((componentProp) => (props[componentProp] = DEFAULT_EMPTY_PROP$1));
300
+ emits = emitProps;
277
301
  if (modelProp) {
278
- Container.props[MODEL_VALUE] = DEFAULT_EMPTY_PROP$1;
279
- Container.emits = [UPDATE_VALUE_EVENT];
302
+ props[MODEL_VALUE] = DEFAULT_EMPTY_PROP$1;
303
+ emits.push(UPDATE_VALUE_EVENT);
280
304
  }
305
+ /**
306
+ * Add emit props to the component.
307
+ * This is necessary for Vue to know
308
+ * which events to listen to.
309
+ * @see https://v3.vuejs.org/guide/component-custom-events.html#event-names
310
+ */
311
+ // @ts-expect-error
312
+ Container.name = name;
313
+ // @ts-expect-error
314
+ Container.emits = emits;
315
+ // @ts-expect-error
316
+ Container.props = props;
281
317
  }
282
318
  return Container;
283
319
  };
@@ -301,6 +337,9 @@ const IonAccordionGroup = /*@__PURE__*/ defineContainer('ion-accordion-group', d
301
337
  'expand',
302
338
  'ionChange',
303
339
  'ionValueChange'
340
+ ], [
341
+ 'ionChange',
342
+ 'ionValueChange'
304
343
  ], 'value', 'ion-change');
305
344
  const IonAvatar = /*@__PURE__*/ defineContainer('ion-avatar', defineCustomElement$2);
306
345
  const IonBackdrop = /*@__PURE__*/ defineContainer('ion-backdrop', defineCustomElement$3, [
@@ -308,6 +347,8 @@ const IonBackdrop = /*@__PURE__*/ defineContainer('ion-backdrop', defineCustomEl
308
347
  'tappable',
309
348
  'stopPropagation',
310
349
  'ionBackdropTap'
350
+ ], [
351
+ 'ionBackdropTap'
311
352
  ]);
312
353
  const IonBadge = /*@__PURE__*/ defineContainer('ion-badge', defineCustomElement$4, [
313
354
  'color'
@@ -329,6 +370,10 @@ const IonBreadcrumb = /*@__PURE__*/ defineContainer('ion-breadcrumb', defineCust
329
370
  'ionFocus',
330
371
  'ionBlur',
331
372
  'collapsedClick'
373
+ ], [
374
+ 'ionFocus',
375
+ 'ionBlur',
376
+ 'collapsedClick'
332
377
  ]);
333
378
  const IonBreadcrumbs = /*@__PURE__*/ defineContainer('ion-breadcrumbs', defineCustomElement$6, [
334
379
  'color',
@@ -336,6 +381,8 @@ const IonBreadcrumbs = /*@__PURE__*/ defineContainer('ion-breadcrumbs', defineCu
336
381
  'itemsBeforeCollapse',
337
382
  'itemsAfterCollapse',
338
383
  'ionCollapsedClick'
384
+ ], [
385
+ 'ionCollapsedClick'
339
386
  ]);
340
387
  const IonButton = /*@__PURE__*/ defineContainer('ion-button', defineCustomElement$7, [
341
388
  'color',
@@ -356,6 +403,9 @@ const IonButton = /*@__PURE__*/ defineContainer('ion-button', defineCustomElemen
356
403
  'form',
357
404
  'ionFocus',
358
405
  'ionBlur'
406
+ ], [
407
+ 'ionFocus',
408
+ 'ionBlur'
359
409
  ]);
360
410
  const IonButtons = /*@__PURE__*/ defineContainer('ion-buttons', defineCustomElement$8, [
361
411
  'collapse'
@@ -396,6 +446,10 @@ const IonCheckbox = /*@__PURE__*/ defineContainer('ion-checkbox', defineCustomEl
396
446
  'ionChange',
397
447
  'ionFocus',
398
448
  'ionBlur'
449
+ ], [
450
+ 'ionChange',
451
+ 'ionFocus',
452
+ 'ionBlur'
399
453
  ], 'checked', 'ion-change');
400
454
  const IonChip = /*@__PURE__*/ defineContainer('ion-chip', defineCustomElement$f, [
401
455
  'color',
@@ -439,6 +493,10 @@ const IonContent = /*@__PURE__*/ defineContainer('ion-content', defineCustomElem
439
493
  'ionScrollStart',
440
494
  'ionScroll',
441
495
  'ionScrollEnd'
496
+ ], [
497
+ 'ionScrollStart',
498
+ 'ionScroll',
499
+ 'ionScrollEnd'
442
500
  ]);
443
501
  const IonDatetime = /*@__PURE__*/ defineContainer('ion-datetime', defineCustomElement$i, [
444
502
  'color',
@@ -478,6 +536,14 @@ const IonDatetime = /*@__PURE__*/ defineContainer('ion-datetime', defineCustomEl
478
536
  'ionBlur',
479
537
  'ionStyle',
480
538
  'ionRender'
539
+ ], [
540
+ 'ionCancel',
541
+ 'ionChange',
542
+ 'ionValueChange',
543
+ 'ionFocus',
544
+ 'ionBlur',
545
+ 'ionStyle',
546
+ 'ionRender'
481
547
  ], 'value', 'ion-change');
482
548
  const IonDatetimeButton = /*@__PURE__*/ defineContainer('ion-datetime-button', defineCustomElement$j, [
483
549
  'color',
@@ -507,6 +573,9 @@ const IonFabButton = /*@__PURE__*/ defineContainer('ion-fab-button', defineCusto
507
573
  'closeIcon',
508
574
  'ionFocus',
509
575
  'ionBlur'
576
+ ], [
577
+ 'ionFocus',
578
+ 'ionBlur'
510
579
  ]);
511
580
  const IonFabList = /*@__PURE__*/ defineContainer('ion-fab-list', defineCustomElement$m, [
512
581
  'activated',
@@ -529,12 +598,18 @@ const IonImg = /*@__PURE__*/ defineContainer('ion-img', defineCustomElement$q, [
529
598
  'ionImgWillLoad',
530
599
  'ionImgDidLoad',
531
600
  'ionError'
601
+ ], [
602
+ 'ionImgWillLoad',
603
+ 'ionImgDidLoad',
604
+ 'ionError'
532
605
  ]);
533
606
  const IonInfiniteScroll = /*@__PURE__*/ defineContainer('ion-infinite-scroll', defineCustomElement$r, [
534
607
  'threshold',
535
608
  'disabled',
536
609
  'position',
537
610
  'ionInfinite'
611
+ ], [
612
+ 'ionInfinite'
538
613
  ]);
539
614
  const IonInfiniteScrollContent = /*@__PURE__*/ defineContainer('ion-infinite-scroll-content', defineCustomElement$s, [
540
615
  'loadingSpinner',
@@ -579,6 +654,11 @@ const IonInput = /*@__PURE__*/ defineContainer('ion-input', defineCustomElement$
579
654
  'ionChange',
580
655
  'ionBlur',
581
656
  'ionFocus'
657
+ ], [
658
+ 'ionInput',
659
+ 'ionChange',
660
+ 'ionBlur',
661
+ 'ionFocus'
582
662
  ], 'value', 'ion-input');
583
663
  const IonInputPasswordToggle = /*@__PURE__*/ defineContainer('ion-input-password-toggle', defineCustomElement$u, [
584
664
  'color',
@@ -619,16 +699,23 @@ const IonItemOption = /*@__PURE__*/ defineContainer('ion-item-option', defineCus
619
699
  const IonItemOptions = /*@__PURE__*/ defineContainer('ion-item-options', defineCustomElement$z, [
620
700
  'side',
621
701
  'ionSwipe'
702
+ ], [
703
+ 'ionSwipe'
622
704
  ]);
623
705
  const IonItemSliding = /*@__PURE__*/ defineContainer('ion-item-sliding', defineCustomElement$A, [
624
706
  'disabled',
625
707
  'ionDrag'
708
+ ], [
709
+ 'ionDrag'
626
710
  ]);
627
711
  const IonLabel = /*@__PURE__*/ defineContainer('ion-label', defineCustomElement$B, [
628
712
  'color',
629
713
  'position',
630
714
  'ionColor',
631
715
  'ionStyle'
716
+ ], [
717
+ 'ionColor',
718
+ 'ionStyle'
632
719
  ]);
633
720
  const IonList = /*@__PURE__*/ defineContainer('ion-list', defineCustomElement$C, [
634
721
  'lines',
@@ -651,6 +738,12 @@ const IonMenu = /*@__PURE__*/ defineContainer('ion-menu', defineCustomElement$E,
651
738
  'ionDidOpen',
652
739
  'ionDidClose',
653
740
  'ionMenuChange'
741
+ ], [
742
+ 'ionWillOpen',
743
+ 'ionWillClose',
744
+ 'ionDidOpen',
745
+ 'ionDidClose',
746
+ 'ionMenuChange'
654
747
  ]);
655
748
  const IonMenuButton = /*@__PURE__*/ defineContainer('ion-menu-button', defineCustomElement$F, [
656
749
  'color',
@@ -674,6 +767,8 @@ const IonNote = /*@__PURE__*/ defineContainer('ion-note', defineCustomElement$I,
674
767
  ]);
675
768
  const IonPicker = /*@__PURE__*/ defineContainer('ion-picker', defineCustomElement$J, [
676
769
  'ionInputModeChange'
770
+ ], [
771
+ 'ionInputModeChange'
677
772
  ]);
678
773
  const IonPickerColumn = /*@__PURE__*/ defineContainer('ion-picker-column', defineCustomElement$K, [
679
774
  'disabled',
@@ -681,6 +776,8 @@ const IonPickerColumn = /*@__PURE__*/ defineContainer('ion-picker-column', defin
681
776
  'color',
682
777
  'numericInput',
683
778
  'ionChange'
779
+ ], [
780
+ 'ionChange'
684
781
  ]);
685
782
  const IonPickerColumnOption = /*@__PURE__*/ defineContainer('ion-picker-column-option', defineCustomElement$L, [
686
783
  'disabled',
@@ -704,6 +801,9 @@ const IonRadio = /*@__PURE__*/ defineContainer('ion-radio', defineCustomElement$
704
801
  'alignment',
705
802
  'ionFocus',
706
803
  'ionBlur'
804
+ ], [
805
+ 'ionFocus',
806
+ 'ionBlur'
707
807
  ], 'value', 'ion-change');
708
808
  const IonRadioGroup = /*@__PURE__*/ defineContainer('ion-radio-group', defineCustomElement$O, [
709
809
  'allowEmptySelection',
@@ -712,6 +812,9 @@ const IonRadioGroup = /*@__PURE__*/ defineContainer('ion-radio-group', defineCus
712
812
  'value',
713
813
  'ionChange',
714
814
  'ionValueChange'
815
+ ], [
816
+ 'ionChange',
817
+ 'ionValueChange'
715
818
  ], 'value', 'ion-change');
716
819
  const IonRange = /*@__PURE__*/ defineContainer('ion-range', defineCustomElement$P, [
717
820
  'color',
@@ -736,6 +839,13 @@ const IonRange = /*@__PURE__*/ defineContainer('ion-range', defineCustomElement$
736
839
  'ionBlur',
737
840
  'ionKnobMoveStart',
738
841
  'ionKnobMoveEnd'
842
+ ], [
843
+ 'ionChange',
844
+ 'ionInput',
845
+ 'ionFocus',
846
+ 'ionBlur',
847
+ 'ionKnobMoveStart',
848
+ 'ionKnobMoveEnd'
739
849
  ], 'value', 'ion-input');
740
850
  const IonRefresher = /*@__PURE__*/ defineContainer('ion-refresher', defineCustomElement$Q, [
741
851
  'pullMin',
@@ -747,6 +857,10 @@ const IonRefresher = /*@__PURE__*/ defineContainer('ion-refresher', defineCustom
747
857
  'ionRefresh',
748
858
  'ionPull',
749
859
  'ionStart'
860
+ ], [
861
+ 'ionRefresh',
862
+ 'ionPull',
863
+ 'ionStart'
750
864
  ]);
751
865
  const IonRefresherContent = /*@__PURE__*/ defineContainer('ion-refresher-content', defineCustomElement$R, [
752
866
  'pullingIcon',
@@ -758,6 +872,8 @@ const IonReorder = /*@__PURE__*/ defineContainer('ion-reorder', defineCustomElem
758
872
  const IonReorderGroup = /*@__PURE__*/ defineContainer('ion-reorder-group', defineCustomElement$T, [
759
873
  'disabled',
760
874
  'ionItemReorder'
875
+ ], [
876
+ 'ionItemReorder'
761
877
  ]);
762
878
  const IonRippleEffect = /*@__PURE__*/ defineContainer('ion-ripple-effect', defineCustomElement$U, [
763
879
  'type'
@@ -793,6 +909,14 @@ const IonSearchbar = /*@__PURE__*/ defineContainer('ion-searchbar', defineCustom
793
909
  'ionBlur',
794
910
  'ionFocus',
795
911
  'ionStyle'
912
+ ], [
913
+ 'ionInput',
914
+ 'ionChange',
915
+ 'ionCancel',
916
+ 'ionClear',
917
+ 'ionBlur',
918
+ 'ionFocus',
919
+ 'ionStyle'
796
920
  ], 'value', 'ion-input');
797
921
  const IonSegment = /*@__PURE__*/ defineContainer('ion-segment', defineCustomElement$X, [
798
922
  'color',
@@ -804,6 +928,10 @@ const IonSegment = /*@__PURE__*/ defineContainer('ion-segment', defineCustomElem
804
928
  'ionChange',
805
929
  'ionSelect',
806
930
  'ionStyle'
931
+ ], [
932
+ 'ionChange',
933
+ 'ionSelect',
934
+ 'ionStyle'
807
935
  ], 'value', 'ion-change');
808
936
  const IonSegmentButton = /*@__PURE__*/ defineContainer('ion-segment-button', defineCustomElement$Y, [
809
937
  'contentId',
@@ -811,11 +939,13 @@ const IonSegmentButton = /*@__PURE__*/ defineContainer('ion-segment-button', def
811
939
  'layout',
812
940
  'type',
813
941
  'value'
814
- ], 'value', 'ion-change');
942
+ ], [], 'value', 'ion-change');
815
943
  const IonSegmentContent = /*@__PURE__*/ defineContainer('ion-segment-content', defineCustomElement$Z);
816
944
  const IonSegmentView = /*@__PURE__*/ defineContainer('ion-segment-view', defineCustomElement$_, [
817
945
  'disabled',
818
946
  'ionSegmentViewScroll'
947
+ ], [
948
+ 'ionSegmentViewScroll'
819
949
  ]);
820
950
  const IonSelect = /*@__PURE__*/ defineContainer('ion-select', defineCustomElement$$, [
821
951
  'cancelText',
@@ -843,6 +973,13 @@ const IonSelect = /*@__PURE__*/ defineContainer('ion-select', defineCustomElemen
843
973
  'ionFocus',
844
974
  'ionBlur',
845
975
  'ionStyle'
976
+ ], [
977
+ 'ionChange',
978
+ 'ionCancel',
979
+ 'ionDismiss',
980
+ 'ionFocus',
981
+ 'ionBlur',
982
+ 'ionStyle'
846
983
  ], 'value', 'ion-change');
847
984
  const IonSelectModal = /*@__PURE__*/ defineContainer('ion-select-modal', defineCustomElement$10, [
848
985
  'header',
@@ -856,6 +993,8 @@ const IonSelectOption = /*@__PURE__*/ defineContainer('ion-select-option', defin
856
993
  const IonSkeletonText = /*@__PURE__*/ defineContainer('ion-skeleton-text', defineCustomElement$12, [
857
994
  'animated',
858
995
  'ionStyle'
996
+ ], [
997
+ 'ionStyle'
859
998
  ]);
860
999
  const IonSpinner = /*@__PURE__*/ defineContainer('ion-spinner', defineCustomElement$13, [
861
1000
  'color',
@@ -868,6 +1007,8 @@ const IonSplitPane = /*@__PURE__*/ defineContainer('ion-split-pane', defineCusto
868
1007
  'disabled',
869
1008
  'when',
870
1009
  'ionSplitPaneVisible'
1010
+ ], [
1011
+ 'ionSplitPaneVisible'
871
1012
  ]);
872
1013
  const IonTab = /*@__PURE__*/ defineContainer('ion-tab', defineCustomElement$15, [
873
1014
  'active',
@@ -911,12 +1052,19 @@ const IonTextarea = /*@__PURE__*/ defineContainer('ion-textarea', defineCustomEl
911
1052
  'ionInput',
912
1053
  'ionBlur',
913
1054
  'ionFocus'
1055
+ ], [
1056
+ 'ionChange',
1057
+ 'ionInput',
1058
+ 'ionBlur',
1059
+ 'ionFocus'
914
1060
  ], 'value', 'ion-input');
915
1061
  const IonThumbnail = /*@__PURE__*/ defineContainer('ion-thumbnail', defineCustomElement$18);
916
1062
  const IonTitle = /*@__PURE__*/ defineContainer('ion-title', defineCustomElement$19, [
917
1063
  'color',
918
1064
  'size',
919
1065
  'ionStyle'
1066
+ ], [
1067
+ 'ionStyle'
920
1068
  ]);
921
1069
  const IonToggle = /*@__PURE__*/ defineContainer('ion-toggle', defineCustomElement$1a, [
922
1070
  'color',
@@ -931,6 +1079,10 @@ const IonToggle = /*@__PURE__*/ defineContainer('ion-toggle', defineCustomElemen
931
1079
  'ionChange',
932
1080
  'ionFocus',
933
1081
  'ionBlur'
1082
+ ], [
1083
+ 'ionChange',
1084
+ 'ionFocus',
1085
+ 'ionBlur'
934
1086
  ], 'checked', 'ion-change');
935
1087
  const IonToolbar = /*@__PURE__*/ defineContainer('ion-toolbar', defineCustomElement$1b, [
936
1088
  'color'
@@ -1128,8 +1280,9 @@ const IonBackButton = /*@__PURE__*/ defineComponent((_, { attrs, slots }) => {
1128
1280
  return () => {
1129
1281
  return h("ion-back-button", Object.assign({ onClick }, attrs), slots.default && slots.default());
1130
1282
  };
1283
+ }, {
1284
+ name: "IonBackButton",
1131
1285
  });
1132
- IonBackButton.name = "IonBackButton";
1133
1286
 
1134
1287
  const IonPage = /*@__PURE__*/ defineComponent({
1135
1288
  name: "IonPage",
@@ -1163,7 +1316,7 @@ const IonRouterOutlet = /*@__PURE__*/ defineComponent({
1163
1316
  const matchedRouteRef = computed(() => route.matched[depth]);
1164
1317
  let previousMatchedRouteRef;
1165
1318
  let previousMatchedPath;
1166
- provide(viewDepthKey, depth + 1);
1319
+ provide(viewDepthKey, (depth + 1));
1167
1320
  provide(matchedRouteKey, matchedRouteRef);
1168
1321
  const ionRouterOutlet = ref();
1169
1322
  const id = generateId("ion-router-outlet");
@@ -2002,10 +2155,11 @@ const userComponents = shallowRef([]);
2002
2155
  const IonApp = /*@__PURE__*/ defineComponent((_, { attrs, slots }) => {
2003
2156
  defineCustomElement$1h();
2004
2157
  return () => {
2005
- return h("ion-app", Object.assign({}, attrs), [slots.default && slots.default(), ...userComponents.value]);
2158
+ return h("ion-app", Object.assign({ name: "IonApp" }, attrs), [slots.default && slots.default(), ...userComponents.value]);
2006
2159
  };
2160
+ }, {
2161
+ name: "IonApp",
2007
2162
  });
2008
- IonApp.name = "IonApp";
2009
2163
  /**
2010
2164
  * When rendering user components inside of
2011
2165
  * ion-modal, or ion-popover the component
@@ -2064,38 +2218,39 @@ const IonNav = /*@__PURE__*/ defineComponent((props) => {
2064
2218
  return () => {
2065
2219
  return h("ion-nav", Object.assign(Object.assign({}, props), { delegate }), views.value);
2066
2220
  };
2067
- });
2068
- IonNav.name = "IonNav";
2069
- /**
2070
- * The default values follow what is defined at
2071
- * https://ionicframework.com/docs/api/nav#properties
2072
- * otherwise the default values on the Web Component
2073
- * may be overridden. For example, if the default animated value
2074
- * is not `true` below, then Vue would default the prop to `false`
2075
- * which would override the Web Component default of `true`.
2076
- */
2077
- IonNav.props = {
2078
- animated: {
2079
- type: Boolean,
2080
- default: true,
2081
- },
2082
- animation: {
2083
- type: Function,
2084
- default: undefined,
2085
- },
2086
- root: {
2087
- type: [Function, Object, String],
2088
- default: undefined,
2089
- },
2090
- rootParams: {
2091
- type: Object,
2092
- default: undefined,
2093
- },
2094
- swipeGesture: {
2095
- type: Boolean,
2096
- default: undefined,
2221
+ }, {
2222
+ name: "IonNav",
2223
+ /**
2224
+ * The default values follow what is defined at
2225
+ * https://ionicframework.com/docs/api/nav#properties
2226
+ * otherwise the default values on the Web Component
2227
+ * may be overridden. For example, if the default animated value
2228
+ * is not `true` below, then Vue would default the prop to `false`
2229
+ * which would override the Web Component default of `true`.
2230
+ */
2231
+ props: {
2232
+ animated: {
2233
+ type: Boolean,
2234
+ default: true,
2235
+ },
2236
+ animation: {
2237
+ type: Function,
2238
+ default: undefined,
2239
+ },
2240
+ root: {
2241
+ type: [Function, Object, String],
2242
+ default: undefined,
2243
+ },
2244
+ rootParams: {
2245
+ type: Object,
2246
+ default: undefined,
2247
+ },
2248
+ swipeGesture: {
2249
+ type: Boolean,
2250
+ default: undefined,
2251
+ },
2097
2252
  },
2098
- };
2253
+ });
2099
2254
 
2100
2255
  const IonIcon = /*@__PURE__*/ defineComponent({
2101
2256
  name: "IonIcon",
@@ -2138,13 +2293,13 @@ const IonIcon = /*@__PURE__*/ defineComponent({
2138
2293
  const EMPTY_PROP = Symbol();
2139
2294
  const DEFAULT_EMPTY_PROP = { default: EMPTY_PROP };
2140
2295
  const defineOverlayContainer = (name, defineCustomElement, componentProps = [], hasDelegateHost, controller) => {
2141
- const createControllerComponent = () => {
2296
+ const createControllerComponent = (options) => {
2142
2297
  return defineComponent((props, { slots, emit }) => {
2143
2298
  const eventListeners = [
2144
- { componentEv: `${name}-will-present`, frameworkEv: 'willPresent' },
2145
- { componentEv: `${name}-did-present`, frameworkEv: 'didPresent' },
2146
- { componentEv: `${name}-will-dismiss`, frameworkEv: 'willDismiss' },
2147
- { componentEv: `${name}-did-dismiss`, frameworkEv: 'didDismiss' },
2299
+ { componentEv: `${name}-will-present`, frameworkEv: "willPresent" },
2300
+ { componentEv: `${name}-did-present`, frameworkEv: "didPresent" },
2301
+ { componentEv: `${name}-will-dismiss`, frameworkEv: "willDismiss" },
2302
+ { componentEv: `${name}-did-dismiss`, frameworkEv: "didDismiss" },
2148
2303
  ];
2149
2304
  if (defineCustomElement !== undefined) {
2150
2305
  defineCustomElement();
@@ -2194,7 +2349,7 @@ const defineOverlayContainer = (name, defineCustomElement, componentProps = [],
2194
2349
  await overlay.value.present();
2195
2350
  return;
2196
2351
  }
2197
- let restOfProps = {};
2352
+ const restOfProps = {};
2198
2353
  /**
2199
2354
  * We can use Object.entries here
2200
2355
  * to avoid the hasOwnProperty check,
@@ -2203,7 +2358,8 @@ const defineOverlayContainer = (name, defineCustomElement, componentProps = [],
2203
2358
  */
2204
2359
  for (const key in props) {
2205
2360
  const value = props[key];
2206
- if (props.hasOwnProperty(key) && value !== EMPTY_PROP) {
2361
+ if (Object.prototype.hasOwnProperty.call(props, key) &&
2362
+ value !== EMPTY_PROP) {
2207
2363
  restOfProps[key] = value;
2208
2364
  }
2209
2365
  }
@@ -2218,7 +2374,7 @@ const defineOverlayContainer = (name, defineCustomElement, componentProps = [],
2218
2374
  const component = slots.default && slots.default()[0];
2219
2375
  overlay.value = controller.create(Object.assign(Object.assign({}, restOfProps), { component }));
2220
2376
  overlay.value = await overlay.value;
2221
- eventListeners.forEach(eventListener => {
2377
+ eventListeners.forEach((eventListener) => {
2222
2378
  overlay.value.addEventListener(eventListener.componentEv, () => {
2223
2379
  emit(eventListener.frameworkEv);
2224
2380
  });
@@ -2226,17 +2382,17 @@ const defineOverlayContainer = (name, defineCustomElement, componentProps = [],
2226
2382
  await overlay.value.present();
2227
2383
  };
2228
2384
  return () => {
2229
- return h('div', {
2230
- style: { display: 'none' },
2385
+ return h("div", {
2386
+ style: { display: "none" },
2231
2387
  onVnodeMounted,
2232
2388
  onVnodeUpdated,
2233
2389
  onVnodeBeforeUnmount,
2234
- isOpen: props.isOpen === true
2390
+ isOpen: props.isOpen === true,
2235
2391
  });
2236
2392
  };
2237
- });
2393
+ }, options);
2238
2394
  };
2239
- const createInlineComponent = () => {
2395
+ const createInlineComponent = (options) => {
2240
2396
  return defineComponent((props, { slots }) => {
2241
2397
  if (defineCustomElement !== undefined) {
2242
2398
  defineCustomElement();
@@ -2244,12 +2400,12 @@ const defineOverlayContainer = (name, defineCustomElement, componentProps = [],
2244
2400
  const isOpen = ref(false);
2245
2401
  const elementRef = ref();
2246
2402
  onMounted(() => {
2247
- elementRef.value.addEventListener('ion-mount', () => isOpen.value = true);
2248
- elementRef.value.addEventListener('will-present', () => isOpen.value = true);
2249
- elementRef.value.addEventListener('did-dismiss', () => isOpen.value = false);
2403
+ elementRef.value.addEventListener("ion-mount", () => (isOpen.value = true));
2404
+ elementRef.value.addEventListener("will-present", () => (isOpen.value = true));
2405
+ elementRef.value.addEventListener("did-dismiss", () => (isOpen.value = false));
2250
2406
  });
2251
2407
  return () => {
2252
- let restOfProps = {};
2408
+ const restOfProps = {};
2253
2409
  /**
2254
2410
  * We can use Object.entries here
2255
2411
  * to avoid the hasOwnProperty check,
@@ -2258,7 +2414,8 @@ const defineOverlayContainer = (name, defineCustomElement, componentProps = [],
2258
2414
  */
2259
2415
  for (const key in props) {
2260
2416
  const value = props[key];
2261
- if (props.hasOwnProperty(key) && value !== EMPTY_PROP) {
2417
+ if (Object.prototype.hasOwnProperty.call(props, key) &&
2418
+ value !== EMPTY_PROP) {
2262
2419
  restOfProps[key] = value;
2263
2420
  }
2264
2421
  }
@@ -2268,7 +2425,7 @@ const defineOverlayContainer = (name, defineCustomElement, componentProps = [],
2268
2425
  */
2269
2426
  const renderChildren = () => {
2270
2427
  if (hasDelegateHost) {
2271
- return h('div', { className: 'ion-delegate-host ion-page' }, slots);
2428
+ return h("div", { className: "ion-delegate-host ion-page" }, slots);
2272
2429
  }
2273
2430
  return slots;
2274
2431
  };
@@ -2279,22 +2436,27 @@ const defineOverlayContainer = (name, defineCustomElement, componentProps = [],
2279
2436
  * the value of the prop will be the empty string which is
2280
2437
  * why we still call renderChildren() in that case.
2281
2438
  */
2282
- (isOpen.value || restOfProps.keepContentsMounted || restOfProps.keepContentsMounted === '') ? renderChildren() : undefined);
2439
+ isOpen.value ||
2440
+ restOfProps.keepContentsMounted ||
2441
+ restOfProps.keepContentsMounted === ""
2442
+ ? renderChildren()
2443
+ : undefined);
2283
2444
  };
2284
- });
2445
+ }, options);
2285
2446
  };
2286
- const Container = (controller !== undefined) ? createControllerComponent() : createInlineComponent();
2287
- Container.name = name;
2288
- Container.props = {
2289
- 'isOpen': DEFAULT_EMPTY_PROP
2447
+ const options = {
2448
+ name,
2449
+ props: Object.assign({ isOpen: DEFAULT_EMPTY_PROP }, componentProps.reduce((acc, prop) => {
2450
+ acc[prop] = DEFAULT_EMPTY_PROP;
2451
+ return acc;
2452
+ }, {})),
2453
+ emits: typeof controller !== "undefined"
2454
+ ? ["willPresent", "didPresent", "willDismiss", "didDismiss"]
2455
+ : undefined,
2290
2456
  };
2291
- componentProps.forEach(componentProp => {
2292
- Container.props[componentProp] = DEFAULT_EMPTY_PROP;
2293
- });
2294
- if (controller !== undefined) {
2295
- Container.emits = ['willPresent', 'didPresent', 'willDismiss', 'didDismiss'];
2296
- }
2297
- return Container;
2457
+ return controller !== undefined
2458
+ ? createControllerComponent(options)
2459
+ : createInlineComponent(options);
2298
2460
  };
2299
2461
 
2300
2462
  /**
@@ -2304,10 +2466,10 @@ const defineOverlayContainer = (name, defineCustomElement, componentProps = [],
2304
2466
  const IonActionSheet = /*@__PURE__*/ defineOverlayContainer('ion-action-sheet', defineCustomElement$1k, ['animated', 'backdropDismiss', 'buttons', 'cssClass', 'enterAnimation', 'header', 'htmlAttributes', 'isOpen', 'keyboardClose', 'leaveAnimation', 'mode', 'subHeader', 'translucent', 'trigger']);
2305
2467
  const IonAlert = /*@__PURE__*/ defineOverlayContainer('ion-alert', defineCustomElement$1l, ['animated', 'backdropDismiss', 'buttons', 'cssClass', 'enterAnimation', 'header', 'htmlAttributes', 'inputs', 'isOpen', 'keyboardClose', 'leaveAnimation', 'message', 'mode', 'subHeader', 'translucent', 'trigger']);
2306
2468
  const IonLoading = /*@__PURE__*/ defineOverlayContainer('ion-loading', defineCustomElement$1m, ['animated', 'backdropDismiss', 'cssClass', 'duration', 'enterAnimation', 'htmlAttributes', 'isOpen', 'keyboardClose', 'leaveAnimation', 'message', 'mode', 'showBackdrop', 'spinner', 'translucent', 'trigger']);
2307
- const IonPickerLegacy = /*@__PURE__*/ defineOverlayContainer('ion-picker-legacy', defineCustomElement$1n, ['animated', 'backdropDismiss', 'buttons', 'columns', 'cssClass', 'duration', 'enterAnimation', 'htmlAttributes', 'isOpen', 'keyboardClose', 'leaveAnimation', 'mode', 'showBackdrop', 'trigger']);
2308
- const IonToast = /*@__PURE__*/ defineOverlayContainer('ion-toast', defineCustomElement$1o, ['animated', 'buttons', 'color', 'cssClass', 'duration', 'enterAnimation', 'header', 'htmlAttributes', 'icon', 'isOpen', 'keyboardClose', 'layout', 'leaveAnimation', 'message', 'mode', 'position', 'positionAnchor', 'swipeGesture', 'translucent', 'trigger']);
2309
- const IonModal = /*@__PURE__*/ defineOverlayContainer('ion-modal', defineCustomElement$1p, ['animated', 'backdropBreakpoint', 'backdropDismiss', 'breakpoints', 'canDismiss', 'enterAnimation', 'focusTrap', 'handle', 'handleBehavior', 'htmlAttributes', 'initialBreakpoint', 'isOpen', 'keepContentsMounted', 'keyboardClose', 'leaveAnimation', 'mode', 'presentingElement', 'showBackdrop', 'trigger'], true);
2310
- 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']);
2469
+ const IonModal = /*@__PURE__*/ defineOverlayContainer('ion-modal', defineCustomElement$1n, ['animated', 'backdropBreakpoint', 'backdropDismiss', 'breakpoints', 'canDismiss', 'enterAnimation', 'focusTrap', 'handle', 'handleBehavior', 'htmlAttributes', 'initialBreakpoint', 'isOpen', 'keepContentsMounted', 'keyboardClose', 'leaveAnimation', 'mode', 'presentingElement', 'showBackdrop', 'trigger'], true);
2470
+ const IonPickerLegacy = /*@__PURE__*/ defineOverlayContainer('ion-picker-legacy', defineCustomElement$1o, ['animated', 'backdropDismiss', 'buttons', 'columns', 'cssClass', 'duration', 'enterAnimation', 'htmlAttributes', 'isOpen', 'keyboardClose', 'leaveAnimation', 'mode', 'showBackdrop', 'trigger']);
2471
+ 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']);
2472
+ 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']);
2311
2473
 
2312
2474
  // TODO(FW-2969): types
2313
2475
  /**
@@ -2324,16 +2486,16 @@ const createController = (defineCustomElement, oldController, useDelegate = fals
2324
2486
  };
2325
2487
  return oldController;
2326
2488
  };
2327
- const modalController = /*@__PURE__*/ createController(defineCustomElement$1p, modalController$1, true);
2328
- const popoverController = /*@__PURE__*/ createController(defineCustomElement$1q, popoverController$1, true);
2489
+ const modalController = /*@__PURE__*/ createController(defineCustomElement$1n, modalController$1, true);
2490
+ const popoverController = /*@__PURE__*/ createController(defineCustomElement$1p, popoverController$1, true);
2329
2491
  const alertController = /*@__PURE__*/ createController(defineCustomElement$1l, alertController$1);
2330
2492
  const actionSheetController = /*@__PURE__*/ createController(defineCustomElement$1k, actionSheetController$1);
2331
2493
  const loadingController = /*@__PURE__*/ createController(defineCustomElement$1m, loadingController$1);
2332
2494
  /**
2333
2495
  * @deprecated Use the inline ion-picker component instead.
2334
2496
  */
2335
- const pickerController = /*@__PURE__*/ createController(defineCustomElement$1n, pickerController$1);
2336
- const toastController = /*@__PURE__*/ createController(defineCustomElement$1o, toastController$1);
2497
+ const pickerController = /*@__PURE__*/ createController(defineCustomElement$1o, pickerController$1);
2498
+ const toastController = /*@__PURE__*/ createController(defineCustomElement$1q, toastController$1);
2337
2499
 
2338
2500
  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, 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 };
2339
2501
  //# sourceMappingURL=index.js.map