@ionic/vue 8.4.3-dev.11738077091.1746b338 → 8.4.3-nightly.20250124

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