@ionic/core 8.3.4-dev.11730315987.18af6259 → 8.3.4-dev.11730395663.1a0f4848

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.
Files changed (154) hide show
  1. package/components/ion-segment-button.js +24 -5
  2. package/components/ion-segment-content.d.ts +11 -0
  3. package/components/ion-segment-content.js +37 -0
  4. package/components/ion-segment-view.d.ts +11 -0
  5. package/components/ion-segment-view.js +140 -0
  6. package/components/ion-segment.js +110 -15
  7. package/components/ion-select-option.js +1 -1
  8. package/components/ion-select.js +2 -2
  9. package/components/ion-skeleton-text.js +2 -2
  10. package/components/ion-split-pane.js +2 -2
  11. package/components/ion-tab-bar.js +2 -2
  12. package/components/ion-tab-button.js +2 -2
  13. package/components/ion-tab.js +2 -2
  14. package/components/ion-tabs.js +1 -1
  15. package/components/ion-text.js +2 -2
  16. package/components/ion-textarea.js +2 -2
  17. package/components/ion-thumbnail.js +1 -1
  18. package/components/ion-toast.js +2 -2
  19. package/components/ion-toggle.js +3 -3
  20. package/components/select-modal.js +1 -1
  21. package/components/select-popover.js +1 -1
  22. package/components/spinner.js +1 -1
  23. package/components/title.js +2 -2
  24. package/components/toolbar.js +2 -2
  25. package/dist/cjs/ion-app_8.cjs.entry.js +4 -4
  26. package/dist/cjs/ion-avatar_3.cjs.entry.js +1 -1
  27. package/dist/cjs/ion-item_8.cjs.entry.js +2 -2
  28. package/dist/cjs/ion-segment-content.cjs.entry.js +23 -0
  29. package/dist/cjs/ion-segment-view.cjs.entry.js +122 -0
  30. package/dist/cjs/ion-segment_2.cjs.entry.js +132 -19
  31. package/dist/cjs/ion-select-modal.cjs.entry.js +1 -1
  32. package/dist/cjs/ion-select_3.cjs.entry.js +4 -4
  33. package/dist/cjs/ion-spinner.cjs.entry.js +1 -1
  34. package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
  35. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +4 -4
  36. package/dist/cjs/ion-tab_2.cjs.entry.js +3 -3
  37. package/dist/cjs/ion-text.cjs.entry.js +2 -2
  38. package/dist/cjs/ion-textarea.cjs.entry.js +2 -2
  39. package/dist/cjs/ion-toast.cjs.entry.js +2 -2
  40. package/dist/cjs/ion-toggle.cjs.entry.js +3 -3
  41. package/dist/cjs/ionic.cjs.js +1 -1
  42. package/dist/cjs/loader.cjs.js +1 -1
  43. package/dist/collection/collection-manifest.json +2 -0
  44. package/dist/collection/components/segment/segment.js +115 -14
  45. package/dist/collection/components/segment-button/segment-button.js +40 -5
  46. package/dist/collection/components/segment-content/segment-content.css +6 -0
  47. package/dist/collection/components/segment-content/segment-content.js +21 -0
  48. package/dist/collection/components/segment-view/segment-view-interface.js +1 -0
  49. package/dist/collection/components/segment-view/segment-view.ios.css +83 -0
  50. package/dist/collection/components/segment-view/segment-view.js +227 -0
  51. package/dist/collection/components/segment-view/segment-view.md.css +83 -0
  52. package/dist/collection/components/select/select.js +2 -2
  53. package/dist/collection/components/select-modal/select-modal.js +1 -1
  54. package/dist/collection/components/select-option/select-option.js +1 -1
  55. package/dist/collection/components/select-popover/select-popover.js +1 -1
  56. package/dist/collection/components/skeleton-text/skeleton-text.js +2 -2
  57. package/dist/collection/components/spinner/spinner.js +1 -1
  58. package/dist/collection/components/split-pane/split-pane.js +2 -2
  59. package/dist/collection/components/tab/tab.js +2 -2
  60. package/dist/collection/components/tab-bar/tab-bar.js +2 -2
  61. package/dist/collection/components/tab-button/tab-button.js +2 -2
  62. package/dist/collection/components/tabs/tabs.js +1 -1
  63. package/dist/collection/components/text/text.js +2 -2
  64. package/dist/collection/components/textarea/textarea.js +2 -2
  65. package/dist/collection/components/thumbnail/thumbnail.js +1 -1
  66. package/dist/collection/components/title/title.js +2 -2
  67. package/dist/collection/components/toast/toast.js +2 -2
  68. package/dist/collection/components/toggle/toggle.js +3 -3
  69. package/dist/collection/components/toolbar/toolbar.js +2 -2
  70. package/dist/docs.json +132 -1
  71. package/dist/esm/ion-app_8.entry.js +4 -4
  72. package/dist/esm/ion-avatar_3.entry.js +1 -1
  73. package/dist/esm/ion-item_8.entry.js +2 -2
  74. package/dist/esm/ion-segment-content.entry.js +19 -0
  75. package/dist/esm/ion-segment-view.entry.js +118 -0
  76. package/dist/esm/ion-segment_2.entry.js +132 -19
  77. package/dist/esm/ion-select-modal.entry.js +1 -1
  78. package/dist/esm/ion-select_3.entry.js +4 -4
  79. package/dist/esm/ion-spinner.entry.js +1 -1
  80. package/dist/esm/ion-split-pane.entry.js +2 -2
  81. package/dist/esm/ion-tab-bar_2.entry.js +4 -4
  82. package/dist/esm/ion-tab_2.entry.js +3 -3
  83. package/dist/esm/ion-text.entry.js +2 -2
  84. package/dist/esm/ion-textarea.entry.js +2 -2
  85. package/dist/esm/ion-toast.entry.js +2 -2
  86. package/dist/esm/ion-toggle.entry.js +3 -3
  87. package/dist/esm/ionic.js +1 -1
  88. package/dist/esm/loader.js +1 -1
  89. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  90. package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
  91. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  92. package/dist/esm-es5/ion-segment-content.entry.js +4 -0
  93. package/dist/esm-es5/ion-segment-view.entry.js +4 -0
  94. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  95. package/dist/esm-es5/ion-select-modal.entry.js +1 -1
  96. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  97. package/dist/esm-es5/ion-spinner.entry.js +1 -1
  98. package/dist/esm-es5/ion-split-pane.entry.js +1 -1
  99. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  100. package/dist/esm-es5/ion-tab_2.entry.js +1 -1
  101. package/dist/esm-es5/ion-text.entry.js +1 -1
  102. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  103. package/dist/esm-es5/ion-toast.entry.js +1 -1
  104. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  105. package/dist/esm-es5/ionic.js +1 -1
  106. package/dist/esm-es5/loader.js +1 -1
  107. package/dist/html.html-data.json +37 -0
  108. package/dist/ionic/ionic.esm.js +1 -1
  109. package/dist/ionic/p-14be4015.entry.js +4 -0
  110. package/dist/ionic/{p-8c357539.entry.js → p-16188af7.entry.js} +1 -1
  111. package/dist/ionic/p-16799667.system.entry.js +4 -0
  112. package/dist/ionic/p-16bfb979.system.entry.js +4 -0
  113. package/dist/ionic/{p-da6ce51b.system.entry.js → p-2172893e.system.entry.js} +2 -2
  114. package/dist/ionic/{p-5e890005.system.entry.js → p-2abae1cc.system.entry.js} +1 -1
  115. package/dist/ionic/{p-2407875c.system.entry.js → p-2b838f86.system.entry.js} +1 -1
  116. package/dist/ionic/{p-249b6d9d.entry.js → p-312d16df.entry.js} +1 -1
  117. package/dist/ionic/p-322c5fb4.system.js +1 -1
  118. package/dist/ionic/p-424eb140.system.entry.js +4 -0
  119. package/dist/ionic/p-49a0e74c.entry.js +4 -0
  120. package/dist/ionic/{p-aa5f43c1.entry.js → p-4ec778aa.entry.js} +1 -1
  121. package/dist/ionic/{p-d8097686.entry.js → p-52f9cf4b.entry.js} +1 -1
  122. package/dist/ionic/{p-540db186.system.entry.js → p-5972efea.system.entry.js} +1 -1
  123. package/dist/ionic/{p-f1b9c92a.entry.js → p-5ab1b709.entry.js} +1 -1
  124. package/dist/ionic/{p-0de13e8e.entry.js → p-5b932840.entry.js} +1 -1
  125. package/dist/ionic/{p-a6827f02.entry.js → p-62af944c.entry.js} +1 -1
  126. package/dist/ionic/{p-cca6e227.system.entry.js → p-6a901f69.system.entry.js} +1 -1
  127. package/dist/ionic/p-73dc4950.entry.js +4 -0
  128. package/dist/ionic/{p-5e9a7134.system.entry.js → p-797eeea8.system.entry.js} +1 -1
  129. package/dist/ionic/{p-90d1e6e2.entry.js → p-845f8376.entry.js} +1 -1
  130. package/dist/ionic/{p-430f30e8.entry.js → p-95775830.entry.js} +1 -1
  131. package/dist/ionic/{p-e629a9fb.system.entry.js → p-975fc268.system.entry.js} +1 -1
  132. package/dist/ionic/{p-5663547d.entry.js → p-98ff6b32.entry.js} +1 -1
  133. package/dist/ionic/p-adbc4bdf.entry.js +4 -0
  134. package/dist/ionic/{p-9cb9edb5.system.entry.js → p-b1e1364f.system.entry.js} +1 -1
  135. package/dist/ionic/p-c2b74d92.system.entry.js +4 -0
  136. package/dist/ionic/{p-08f910f4.entry.js → p-e9a173ed.entry.js} +1 -1
  137. package/dist/ionic/{p-3ef0ebd1.system.entry.js → p-ebf042e0.system.entry.js} +1 -1
  138. package/dist/ionic/{p-471b5a49.system.entry.js → p-ed75fcfb.system.entry.js} +1 -1
  139. package/dist/ionic/{p-d3eaac24.entry.js → p-eedf2757.entry.js} +1 -1
  140. package/dist/ionic/{p-c25cf9e8.system.entry.js → p-f4bc18a1.system.entry.js} +1 -1
  141. package/dist/ionic/{p-2e1c94d5.system.entry.js → p-fca6ef5f.system.entry.js} +1 -1
  142. package/dist/types/components/segment/segment.d.ts +21 -1
  143. package/dist/types/components/segment-button/segment-button.d.ts +4 -0
  144. package/dist/types/components/segment-content/segment-content.d.ts +4 -0
  145. package/dist/types/components/segment-view/segment-view-interface.d.ts +4 -0
  146. package/dist/types/components/segment-view/segment-view.d.ts +55 -0
  147. package/dist/types/components.d.ts +68 -0
  148. package/hydrate/index.js +312 -51
  149. package/hydrate/index.mjs +312 -51
  150. package/package.json +1 -1
  151. package/dist/ionic/p-3254d107.entry.js +0 -4
  152. package/dist/ionic/p-457998b5.entry.js +0 -4
  153. package/dist/ionic/p-a62911e6.system.entry.js +0 -4
  154. package/dist/ionic/p-adcb6def.system.entry.js +0 -4
package/hydrate/index.mjs CHANGED
@@ -28582,6 +28582,7 @@ class Segment {
28582
28582
  this.ionChange = createEvent(this, "ionChange", 7);
28583
28583
  this.ionSelect = createEvent(this, "ionSelect", 7);
28584
28584
  this.ionStyle = createEvent(this, "ionStyle", 7);
28585
+ this.segmentViewEl = null;
28585
28586
  this.onClick = (ev) => {
28586
28587
  const current = ev.target;
28587
28588
  const previous = this.checked;
@@ -28596,7 +28597,13 @@ class Segment {
28596
28597
  if (current !== previous) {
28597
28598
  this.emitValueChange();
28598
28599
  }
28599
- if (this.scrollable || !this.swipeGesture) {
28600
+ if (this.segmentViewEl) {
28601
+ this.updateSegmentView();
28602
+ if (this.scrollable && previous) {
28603
+ this.checkButton(previous, current);
28604
+ }
28605
+ }
28606
+ else if (this.scrollable || !this.swipeGesture) {
28600
28607
  if (previous) {
28601
28608
  this.checkButton(previous, current);
28602
28609
  }
@@ -28652,19 +28659,49 @@ class Segment {
28652
28659
  swipeGestureChanged() {
28653
28660
  this.gestureChanged();
28654
28661
  }
28655
- valueChanged(value) {
28662
+ valueChanged(value, oldValue) {
28663
+ // Force a value to exist if we're using a segment view
28664
+ if (this.segmentViewEl && value === undefined) {
28665
+ this.value = this.getButtons()[0].value;
28666
+ return;
28667
+ }
28668
+ if (oldValue !== undefined && value !== undefined) {
28669
+ const buttons = this.getButtons();
28670
+ const previous = buttons.find((button) => button.value === oldValue);
28671
+ const current = buttons.find((button) => button.value === value);
28672
+ if (previous && current) {
28673
+ if (!this.segmentViewEl) {
28674
+ this.checkButton(previous, current);
28675
+ }
28676
+ else if (this.triggerScrollOnValueChange !== false) {
28677
+ this.updateSegmentView();
28678
+ }
28679
+ }
28680
+ }
28681
+ else if (value !== undefined && oldValue === undefined && this.segmentViewEl) {
28682
+ this.updateSegmentView();
28683
+ }
28656
28684
  /**
28657
28685
  * `ionSelect` is emitted every time the value changes (internal or external changes).
28658
28686
  * Used by `ion-segment-button` to determine if the button should be checked.
28659
28687
  */
28660
28688
  this.ionSelect.emit({ value });
28661
- this.scrollActiveButtonIntoView();
28689
+ // The scroll listener should handle scrolling the active button into view as needed
28690
+ if (!this.segmentViewEl) {
28691
+ this.scrollActiveButtonIntoView();
28692
+ }
28693
+ this.triggerScrollOnValueChange = undefined;
28662
28694
  }
28663
28695
  disabledChanged() {
28664
28696
  this.gestureChanged();
28665
- const buttons = this.getButtons();
28666
- for (const button of buttons) {
28667
- button.disabled = this.disabled;
28697
+ if (!this.segmentViewEl) {
28698
+ const buttons = this.getButtons();
28699
+ for (const button of buttons) {
28700
+ button.disabled = this.disabled;
28701
+ }
28702
+ }
28703
+ else {
28704
+ this.segmentViewEl.disabled = this.disabled;
28668
28705
  }
28669
28706
  }
28670
28707
  gestureChanged() {
@@ -28674,6 +28711,10 @@ class Segment {
28674
28711
  }
28675
28712
  connectedCallback() {
28676
28713
  this.emitStyle();
28714
+ this.segmentViewEl = this.getSegmentView();
28715
+ }
28716
+ disconnectedCallback() {
28717
+ this.segmentViewEl = null;
28677
28718
  }
28678
28719
  componentWillLoad() {
28679
28720
  this.emitStyle();
@@ -28707,6 +28748,9 @@ class Segment {
28707
28748
  if (this.disabled) {
28708
28749
  this.disabledChanged();
28709
28750
  }
28751
+ // Update segment view based on the initial value,
28752
+ // but do not animate the scroll
28753
+ this.updateSegmentView(false);
28710
28754
  }
28711
28755
  onStart(detail) {
28712
28756
  this.valueBeforeGesture = this.value;
@@ -28723,6 +28767,7 @@ class Segment {
28723
28767
  if (value !== undefined) {
28724
28768
  if (this.valueBeforeGesture !== value) {
28725
28769
  this.emitValueChange();
28770
+ this.updateSegmentView();
28726
28771
  }
28727
28772
  }
28728
28773
  this.valueBeforeGesture = undefined;
@@ -28750,12 +28795,7 @@ class Segment {
28750
28795
  setActivated(activated) {
28751
28796
  const buttons = this.getButtons();
28752
28797
  buttons.forEach((button) => {
28753
- if (activated) {
28754
- button.classList.add('segment-button-activated');
28755
- }
28756
- else {
28757
- button.classList.remove('segment-button-activated');
28758
- }
28798
+ button.classList.toggle('segment-button-activated', activated);
28759
28799
  });
28760
28800
  this.activated = activated;
28761
28801
  }
@@ -28806,6 +28846,7 @@ class Segment {
28806
28846
  currentIndicator.classList.add('segment-button-indicator-animated');
28807
28847
  // Remove the transform to slide the indicator back to the button clicked
28808
28848
  currentIndicator.style.setProperty('transform', '');
28849
+ this.scrollActiveButtonIntoView(true);
28809
28850
  });
28810
28851
  this.value = current.value;
28811
28852
  this.setCheckedClasses();
@@ -28821,6 +28862,60 @@ class Segment {
28821
28862
  buttons[next].classList.add('segment-button-after-checked');
28822
28863
  }
28823
28864
  }
28865
+ getSegmentView() {
28866
+ const buttons = this.getButtons();
28867
+ // Get the first button with a contentId
28868
+ const firstContentId = buttons.find((button) => button.contentId);
28869
+ // Get the segment content with an id matching the button's contentId
28870
+ const segmentContent = document.querySelector(`ion-segment-content[id="${firstContentId === null || firstContentId === void 0 ? void 0 : firstContentId.contentId}"]`);
28871
+ // Return the segment view for that matching segment content
28872
+ return segmentContent === null || segmentContent === void 0 ? void 0 : segmentContent.closest('ion-segment-view');
28873
+ }
28874
+ handleSegmentViewScroll(ev) {
28875
+ const { scrollRatio, isManualScroll } = ev.detail;
28876
+ if (!isManualScroll) {
28877
+ return;
28878
+ }
28879
+ const dispatchedFrom = ev.target;
28880
+ const segmentViewEl = this.segmentViewEl;
28881
+ const segmentEl = this.el;
28882
+ // Only update the indicator if the event was dispatched from the correct segment view
28883
+ if (ev.composedPath().includes(segmentViewEl) || (dispatchedFrom === null || dispatchedFrom === void 0 ? void 0 : dispatchedFrom.contains(segmentEl))) {
28884
+ const buttons = this.getButtons();
28885
+ // If no buttons are found or there is no value set then do nothing
28886
+ if (!buttons.length)
28887
+ return;
28888
+ const index = buttons.findIndex((button) => button.value === this.value);
28889
+ const current = buttons[index];
28890
+ const nextIndex = Math.round(scrollRatio * (buttons.length - 1));
28891
+ if (this.lastNextIndex === undefined || this.lastNextIndex !== nextIndex) {
28892
+ this.lastNextIndex = nextIndex;
28893
+ this.triggerScrollOnValueChange = false;
28894
+ this.checkButton(current, buttons[nextIndex]);
28895
+ this.emitValueChange();
28896
+ }
28897
+ }
28898
+ }
28899
+ /**
28900
+ * Finds the related segment view and sets its current content
28901
+ * based on the selected segment button. This method
28902
+ * should be called on initial load of the segment,
28903
+ * after the gesture is completed (if dragging between segments)
28904
+ * and when a segment button is clicked directly.
28905
+ */
28906
+ updateSegmentView(smoothScroll = true) {
28907
+ const buttons = this.getButtons();
28908
+ const button = buttons.find((btn) => btn.value === this.value);
28909
+ // If the button does not have a contentId then there is
28910
+ // no associated segment view to update
28911
+ if (!(button === null || button === void 0 ? void 0 : button.contentId)) {
28912
+ return;
28913
+ }
28914
+ const segmentView = this.segmentViewEl;
28915
+ if (segmentView) {
28916
+ segmentView.setContent(button.contentId, smoothScroll);
28917
+ }
28918
+ }
28824
28919
  scrollActiveButtonIntoView(smoothScroll = true) {
28825
28920
  const { scrollable, value, el } = this;
28826
28921
  if (scrollable) {
@@ -29003,14 +29098,14 @@ class Segment {
29003
29098
  }
29004
29099
  render() {
29005
29100
  const mode = getIonMode$1(this);
29006
- return (hAsync(Host, { key: '1f50689291d24812e33145272f9a73c01e085383', role: "tablist", onClick: this.onClick, class: createColorClasses$1(this.color, {
29101
+ return (hAsync(Host, { key: '66bd7a565ba73540b3bbe56dd23b95e59bcef9bc', role: "tablist", onClick: this.onClick, class: createColorClasses$1(this.color, {
29007
29102
  [mode]: true,
29008
29103
  'in-toolbar': hostContext('ion-toolbar', this.el),
29009
29104
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
29010
29105
  'segment-activated': this.activated,
29011
29106
  'segment-disabled': this.disabled,
29012
29107
  'segment-scrollable': this.scrollable,
29013
- }) }, hAsync("slot", { key: 'd3b90e1adabf0b923e41a36cd856dc0a5a3d041e', onSlotchange: this.onSlottedItemsChange })));
29108
+ }) }, hAsync("slot", { key: '782c521b1a33729b8eab1c4b879bc3f2ff48ae1b', onSlotchange: this.onSlottedItemsChange })));
29014
29109
  }
29015
29110
  get el() { return getElement(this); }
29016
29111
  static get watchers() { return {
@@ -29035,7 +29130,7 @@ class Segment {
29035
29130
  "selectOnFocus": [4, "select-on-focus"],
29036
29131
  "activated": [32]
29037
29132
  },
29038
- "$listeners$": [[0, "keydown", "onKeyDown"]],
29133
+ "$listeners$": [[16, "ionSegmentViewScroll", "handleSegmentViewScroll"], [0, "keydown", "onKeyDown"]],
29039
29134
  "$lazyBundleId$": "-",
29040
29135
  "$attrsToReflect$": [["color", "color"]]
29041
29136
  }; }
@@ -29072,6 +29167,7 @@ class SegmentButton {
29072
29167
  }
29073
29168
  };
29074
29169
  this.checked = false;
29170
+ this.contentId = undefined;
29075
29171
  this.disabled = false;
29076
29172
  this.layout = 'icon-top';
29077
29173
  this.type = 'button';
@@ -29087,6 +29183,26 @@ class SegmentButton {
29087
29183
  addEventListener$1(segmentEl, 'ionSelect', this.updateState);
29088
29184
  addEventListener$1(segmentEl, 'ionStyle', this.updateStyle);
29089
29185
  }
29186
+ // Return if there is no contentId defined
29187
+ if (!this.contentId)
29188
+ return;
29189
+ // Attempt to find the Segment Content by its contentId
29190
+ const segmentContent = document.getElementById(this.contentId);
29191
+ // If no associated Segment Content exists, log an error and return
29192
+ if (!segmentContent) {
29193
+ console.error(`Segment Button: Unable to find Segment Content with id="${this.contentId}".`);
29194
+ return;
29195
+ }
29196
+ // Ensure the found element is a valid ION-SEGMENT-CONTENT
29197
+ if (segmentContent.tagName !== 'ION-SEGMENT-CONTENT') {
29198
+ console.error(`Segment Button: Element with id="${this.contentId}" is not an <ion-segment-content> element.`);
29199
+ return;
29200
+ }
29201
+ // Prevent buttons from being disabled when associated with segment content
29202
+ if (this.disabled) {
29203
+ console.warn(`Segment Button: Segment buttons cannot be disabled when associated with an <ion-segment-content>.`);
29204
+ this.disabled = false;
29205
+ }
29090
29206
  }
29091
29207
  disconnectedCallback() {
29092
29208
  const segmentEl = this.segmentEl;
@@ -29120,7 +29236,7 @@ class SegmentButton {
29120
29236
  const { checked, type, disabled, hasIcon, hasLabel, layout, segmentEl } = this;
29121
29237
  const mode = getIonMode$1(this);
29122
29238
  const hasSegmentColor = () => (segmentEl === null || segmentEl === void 0 ? void 0 : segmentEl.color) !== undefined;
29123
- return (hAsync(Host, { key: '9b54e4841be5d0f4f2ee230a649bfbe01066c7c7', class: {
29239
+ return (hAsync(Host, { key: 'd50a5d5e2f6206e8523598f258d8217d2903f69b', class: {
29124
29240
  [mode]: true,
29125
29241
  'in-toolbar': hostContext('ion-toolbar', this.el),
29126
29242
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
@@ -29136,10 +29252,7 @@ class SegmentButton {
29136
29252
  'ion-activatable': true,
29137
29253
  'ion-activatable-instant': true,
29138
29254
  'ion-focusable': true,
29139
- } }, hAsync("button", Object.assign({ key: 'b97b964b5f3f1bf53e41ad2a1ad4853d5f956fe5', "aria-selected": checked ? 'true' : 'false', role: "tab", ref: (el) => (this.nativeEl = el), type: type, class: "button-native", part: "native", disabled: disabled }, this.inheritedAttributes), hAsync("span", { key: '0eeb2616f7c5a7a7fc1e2e3bd34ab461de6179f4', class: "button-inner" }, hAsync("slot", { key: '5ac8fafa2f23e30f8df63bfe236a9604cfb388ae' })), mode === 'md' && hAsync("ion-ripple-effect", { key: '86032e9726e2b6437ffc34f59fcbe564616cc9ca' })), hAsync("div", { key: '536b1da58dd2521be290707d6b1726831340cf9f', part: "indicator", class: {
29140
- 'segment-button-indicator': true,
29141
- 'segment-button-indicator-animated': true,
29142
- } }, hAsync("div", { key: 'b43124415ebd77c87285791522c5afc26a137f96', part: "indicator-background", class: "segment-button-indicator-background" }))));
29255
+ } }, hAsync("button", Object.assign({ key: 'b4f6f145286ba8ab79669e11035b906daa85ae7e', "aria-selected": checked ? 'true' : 'false', role: "tab", ref: (el) => (this.nativeEl = el), type: type, class: "button-native", part: "native", disabled: disabled }, this.inheritedAttributes), hAsync("span", { key: '67965996c9ffe70553875e00d3da0ae5b2b1d814', class: "button-inner" }, hAsync("slot", { key: '5087988fe45a8fdf388ec44c395d0b745b207806' })), mode === 'md' && hAsync("ion-ripple-effect", { key: 'b24858de0750bbc769b3183fac0077dfe817ba27' })), hAsync("div", { key: '97b4359432acd1c9da0816360cd1df9472e183f7', part: "indicator", class: "segment-button-indicator segment-button-indicator-animated" }, hAsync("div", { key: '0561738ea15b0986f4ed3d8276d5e6f2d13f7e51', part: "indicator-background", class: "segment-button-indicator-background" }))));
29143
29256
  }
29144
29257
  get el() { return getElement(this); }
29145
29258
  static get watchers() { return {
@@ -29153,6 +29266,7 @@ class SegmentButton {
29153
29266
  "$flags$": 41,
29154
29267
  "$tagName$": "ion-segment-button",
29155
29268
  "$members$": {
29269
+ "contentId": [513, "content-id"],
29156
29270
  "disabled": [1028],
29157
29271
  "layout": [1],
29158
29272
  "type": [1],
@@ -29162,6 +29276,151 @@ class SegmentButton {
29162
29276
  },
29163
29277
  "$listeners$": undefined,
29164
29278
  "$lazyBundleId$": "-",
29279
+ "$attrsToReflect$": [["contentId", "content-id"]]
29280
+ }; }
29281
+ }
29282
+
29283
+ const segmentContentCss = ":host{scroll-snap-align:center;scroll-snap-stop:always;-ms-flex-negative:0;flex-shrink:0;width:100%}";
29284
+ var IonSegmentContentStyle0 = segmentContentCss;
29285
+
29286
+ class SegmentContent {
29287
+ constructor(hostRef) {
29288
+ registerInstance(this, hostRef);
29289
+ }
29290
+ render() {
29291
+ return (hAsync(Host, { key: '03684b2999ac64fe13e376fd7e7f279976e9d4f2' }, hAsync("slot", { key: '143031075bf33ca19e7cfd76fc8a67b83ccaf11c' })));
29292
+ }
29293
+ static get style() { return IonSegmentContentStyle0; }
29294
+ static get cmpMeta() { return {
29295
+ "$flags$": 9,
29296
+ "$tagName$": "ion-segment-content",
29297
+ "$members$": undefined,
29298
+ "$listeners$": undefined,
29299
+ "$lazyBundleId$": "-",
29300
+ "$attrsToReflect$": []
29301
+ }; }
29302
+ }
29303
+
29304
+ const segmentViewIosCss = ":host{display:-ms-flexbox;display:flex;height:100%;overflow-x:scroll;-webkit-scroll-snap-type:x mandatory;-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory;scrollbar-width:none;-ms-overflow-style:none}:host::-webkit-scrollbar{display:none}:host(.segment-view-disabled){-ms-touch-action:none;touch-action:none;overflow-x:hidden}:host(.segment-view-scroll-disabled){pointer-events:none}:host(.segment-view-disabled){opacity:0.3}";
29305
+ var IonSegmentViewIosStyle0 = segmentViewIosCss;
29306
+
29307
+ const segmentViewMdCss = ":host{display:-ms-flexbox;display:flex;height:100%;overflow-x:scroll;-webkit-scroll-snap-type:x mandatory;-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory;scrollbar-width:none;-ms-overflow-style:none}:host::-webkit-scrollbar{display:none}:host(.segment-view-disabled){-ms-touch-action:none;touch-action:none;overflow-x:hidden}:host(.segment-view-scroll-disabled){pointer-events:none}:host(.segment-view-disabled){opacity:0.3}";
29308
+ var IonSegmentViewMdStyle0 = segmentViewMdCss;
29309
+
29310
+ class SegmentView {
29311
+ constructor(hostRef) {
29312
+ registerInstance(this, hostRef);
29313
+ this.ionSegmentViewScroll = createEvent(this, "ionSegmentViewScroll", 7);
29314
+ this.scrollEndTimeout = null;
29315
+ this.isTouching = false;
29316
+ this.disabled = false;
29317
+ this.isManualScroll = undefined;
29318
+ }
29319
+ handleScroll(ev) {
29320
+ var _a;
29321
+ const { scrollLeft, scrollWidth, clientWidth } = ev.target;
29322
+ const scrollRatio = scrollLeft / (scrollWidth - clientWidth);
29323
+ this.ionSegmentViewScroll.emit({
29324
+ scrollRatio,
29325
+ isManualScroll: (_a = this.isManualScroll) !== null && _a !== void 0 ? _a : true,
29326
+ });
29327
+ // Reset the timeout to check for scroll end
29328
+ this.resetScrollEndTimeout();
29329
+ }
29330
+ /**
29331
+ * Handle touch start event to know when the user is actively dragging the segment view.
29332
+ */
29333
+ handleScrollStart() {
29334
+ if (this.scrollEndTimeout) {
29335
+ clearTimeout(this.scrollEndTimeout);
29336
+ this.scrollEndTimeout = null;
29337
+ }
29338
+ this.isTouching = true;
29339
+ }
29340
+ /**
29341
+ * Handle touch end event to know when the user is no longer dragging the segment view.
29342
+ */
29343
+ handleTouchEnd() {
29344
+ this.isTouching = false;
29345
+ }
29346
+ /**
29347
+ * Reset the scroll end detection timer. This is called on every scroll event.
29348
+ */
29349
+ resetScrollEndTimeout() {
29350
+ if (this.scrollEndTimeout) {
29351
+ clearTimeout(this.scrollEndTimeout);
29352
+ this.scrollEndTimeout = null;
29353
+ }
29354
+ this.scrollEndTimeout = setTimeout(() => {
29355
+ this.checkForScrollEnd();
29356
+ },
29357
+ // Setting this to a lower value may result in inconsistencies in behavior
29358
+ // across browsers (particularly Firefox).
29359
+ // Ideally, all of this logic is removed once the scroll end event is
29360
+ // supported on all browsers (https://caniuse.com/?search=scrollend)
29361
+ 100);
29362
+ }
29363
+ /**
29364
+ * Check if the scroll has ended and the user is not actively touching.
29365
+ * If the conditions are met (active content is enabled and no active touch),
29366
+ * reset the scroll position and emit the scroll end event.
29367
+ */
29368
+ checkForScrollEnd() {
29369
+ // Only emit scroll end event if the active content is not disabled and
29370
+ // the user is not touching the segment view
29371
+ if (!this.isTouching) {
29372
+ this.isManualScroll = undefined;
29373
+ }
29374
+ }
29375
+ /**
29376
+ * @internal
29377
+ *
29378
+ * This method is used to programmatically set the displayed segment content
29379
+ * in the segment view. Calling this method will update the `value` of the
29380
+ * corresponding segment button.
29381
+ *
29382
+ * @param id: The id of the segment content to display.
29383
+ * @param smoothScroll: Whether to animate the scroll transition.
29384
+ */
29385
+ async setContent(id, smoothScroll = true) {
29386
+ const contents = this.getSegmentContents();
29387
+ const index = contents.findIndex((content) => content.id === id);
29388
+ if (index === -1)
29389
+ return;
29390
+ this.isManualScroll = false;
29391
+ this.resetScrollEndTimeout();
29392
+ const contentWidth = this.el.offsetWidth;
29393
+ this.el.scrollTo({
29394
+ top: 0,
29395
+ left: index * contentWidth,
29396
+ behavior: smoothScroll ? 'smooth' : 'instant',
29397
+ });
29398
+ }
29399
+ getSegmentContents() {
29400
+ return Array.from(this.el.querySelectorAll('ion-segment-content'));
29401
+ }
29402
+ render() {
29403
+ const { disabled, isManualScroll } = this;
29404
+ return (hAsync(Host, { key: '9f4f11d31c4db776f077e59ae895b35dd4454717', class: {
29405
+ 'segment-view-disabled': disabled,
29406
+ 'segment-view-scroll-disabled': isManualScroll === false,
29407
+ } }, hAsync("slot", { key: 'ea58b21f031cee2ab2b70580f336deaefa364538' })));
29408
+ }
29409
+ get el() { return getElement(this); }
29410
+ static get style() { return {
29411
+ ios: IonSegmentViewIosStyle0,
29412
+ md: IonSegmentViewMdStyle0
29413
+ }; }
29414
+ static get cmpMeta() { return {
29415
+ "$flags$": 41,
29416
+ "$tagName$": "ion-segment-view",
29417
+ "$members$": {
29418
+ "disabled": [4],
29419
+ "isManualScroll": [32],
29420
+ "setContent": [64]
29421
+ },
29422
+ "$listeners$": [[1, "scroll", "handleScroll"], [1, "touchstart", "handleScrollStart"], [1, "touchend", "handleTouchEnd"]],
29423
+ "$lazyBundleId$": "-",
29165
29424
  "$attrsToReflect$": []
29166
29425
  }; }
29167
29426
  }
@@ -29776,7 +30035,7 @@ class Select {
29776
30035
  * TODO(FW-5592): Remove hasStartEndSlots condition
29777
30036
  */
29778
30037
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || isExpanded || hasStartEndSlots));
29779
- return (hAsync(Host, { key: '66adece2b18fe49825ac12a28f3e7815b18f4558', onClick: this.onClick, class: createColorClasses$1(this.color, {
30038
+ return (hAsync(Host, { key: '144dfa5c49549a74fe516c65b9b8104a477ac789', onClick: this.onClick, class: createColorClasses$1(this.color, {
29780
30039
  [mode]: true,
29781
30040
  'in-item': inItem,
29782
30041
  'in-item-color': hostContext('ion-item.ion-color', el),
@@ -29792,7 +30051,7 @@ class Select {
29792
30051
  [`select-justify-${justify}`]: justifyEnabled,
29793
30052
  [`select-shape-${shape}`]: shape !== undefined,
29794
30053
  [`select-label-placement-${labelPlacement}`]: true,
29795
- }) }, hAsync("label", { key: '39baea2f689358281a88ee99823f6ae0196bed08', class: "select-wrapper", id: "select-label" }, this.renderLabelContainer(), hAsync("div", { key: '0cc64c4c86d9f9555c2a6485ad4fe54ebc051937', class: "select-wrapper-inner" }, hAsync("slot", { key: '727faf66ffafc560338ed153fd71a644fdaa436a', name: "start" }), hAsync("div", { key: '4b2167f408158a0bdf0b9f23ebbc38cf1ec3486d', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), hAsync("slot", { key: '7d84957672f9e467736d343ddc21f7eade33e469', name: "end" }), !hasFloatingOrStackedLabel && this.renderSelectIcon()), hasFloatingOrStackedLabel && this.renderSelectIcon(), shouldRenderHighlight && hAsync("div", { key: 'ab1324b4b7e5c57082bdb954a24f63030c2ca480', class: "select-highlight" }))));
30054
+ }) }, hAsync("label", { key: '0edcfcbac575a9dccc77991531b6980d1caebf42', class: "select-wrapper", id: "select-label" }, this.renderLabelContainer(), hAsync("div", { key: '348151d90cb093f5d21c7d4a834264ac4a312c40', class: "select-wrapper-inner" }, hAsync("slot", { key: '8b7708c7f81217435c58276da0c08bba766d9500', name: "start" }), hAsync("div", { key: '10c520a335da0a0d1cf40f9365597beb244d3b48', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), hAsync("slot", { key: '0f15c40a5495e98e29d2a21ba21e0bc6f1c0125a', name: "end" }), !hasFloatingOrStackedLabel && this.renderSelectIcon()), hasFloatingOrStackedLabel && this.renderSelectIcon(), shouldRenderHighlight && hAsync("div", { key: 'c87faad2e5ebf7f9453397d7ede43abd64d21294', class: "select-highlight" }))));
29796
30055
  }
29797
30056
  get el() { return getElement(this); }
29798
30057
  static get watchers() { return {
@@ -29952,7 +30211,7 @@ class SelectModal {
29952
30211
  } }, option.text))));
29953
30212
  }
29954
30213
  render() {
29955
- return (hAsync(Host, { key: '694a6d282f489b4997105f6e602777d4df90421a', class: getIonMode$1(this) }, hAsync("ion-header", { key: '50bdd9144222231817bbb9adbb8f7f43985fc786' }, hAsync("ion-toolbar", { key: '47c1a62e188c6b79e32fa42724fde91cf396bc8a' }, this.header !== undefined && hAsync("ion-title", { key: 'db2a5480ac0f710842108de116ac8218be409fdb' }, this.header), hAsync("ion-buttons", { key: '21ca4e72b6220b821c3bac890ec9a8aacab69c29', slot: "end" }, hAsync("ion-button", { key: 'f08b33ff0b82c04c8205e0186235acdaf8085733', onClick: () => this.closeModal() }, "Close")))), hAsync("ion-content", { key: 'c35d024bebda7250b44b2b0ff97c2778c815f1ca' }, hAsync("ion-list", { key: '027ad22799a82b49c03bc9d9f2779cdbe896f218' }, this.multiple === true ? this.renderCheckboxOptions() : this.renderRadioOptions()))));
30214
+ return (hAsync(Host, { key: 'f4b92f4fc3d646f9a327e43a9622abaf69659c28', class: getIonMode$1(this) }, hAsync("ion-header", { key: '11232ef496e7abd69e55cef988963a4869a7b01e' }, hAsync("ion-toolbar", { key: 'e7c41878691a504d44c658db02807867df542588' }, this.header !== undefined && hAsync("ion-title", { key: 'fcf9d33e0f3e0076ff14805de68848f9ef199cca' }, this.header), hAsync("ion-buttons", { key: '748a967ae0ce68bc2fd018a6b9ebe0e4b810f6ac', slot: "end" }, hAsync("ion-button", { key: 'f5e60791870b5085a31b7af70ed4bb3fb83eb185', onClick: () => this.closeModal() }, "Close")))), hAsync("ion-content", { key: '159797957b6f788a9b393d91864c18db34481c68' }, hAsync("ion-list", { key: '4124554fe8b2411637cbf02f08e50e0d8f804175' }, this.multiple === true ? this.renderCheckboxOptions() : this.renderRadioOptions()))));
29956
30215
  }
29957
30216
  get el() { return getElement(this); }
29958
30217
  static get style() { return {
@@ -29985,7 +30244,7 @@ class SelectOption {
29985
30244
  this.value = undefined;
29986
30245
  }
29987
30246
  render() {
29988
- return hAsync(Host, { key: 'b874cf2085770674ea56ce978c1e7c55d002b266', role: "option", id: this.inputId, class: getIonMode$1(this) });
30247
+ return hAsync(Host, { key: '2e6fa159464f04f6d8720f960141f67918bc7534', role: "option", id: this.inputId, class: getIonMode$1(this) });
29989
30248
  }
29990
30249
  get el() { return getElement(this); }
29991
30250
  static get style() { return IonSelectOptionStyle0; }
@@ -30105,7 +30364,7 @@ class SelectPopover {
30105
30364
  render() {
30106
30365
  const { header, message, options, subHeader } = this;
30107
30366
  const hasSubHeaderOrMessage = subHeader !== undefined || message !== undefined;
30108
- return (hAsync(Host, { key: '8baf834489a89d2e65554eb4241fe389a525f85c', class: getIonMode$1(this) }, hAsync("ion-list", { key: '2646cd1047a308c4cbb89c3a936f9a13c307221b' }, header !== undefined && hAsync("ion-list-header", { key: 'aec9975d382f9e97eb5b7bd036fbd08f645f6462' }, header), hasSubHeaderOrMessage && (hAsync("ion-item", { key: 'd9e3298ba2c289fdef7624e2cbddc247061d4d75' }, hAsync("ion-label", { key: '6f068afe5db73092638dff9d1d3f60cefd1d2599', class: "ion-text-wrap" }, subHeader !== undefined && hAsync("h3", { key: '4403c78b13c3e861d199f4e75cca2876cb058267' }, subHeader), message !== undefined && hAsync("p", { key: '6af680fd7ed7bf0c04baa63e7e9bc44ad2d7a057' }, message)))), this.renderOptions(options))));
30367
+ return (hAsync(Host, { key: 'dd0990db4de4f175b176b27f35501dd1604ca400', class: getIonMode$1(this) }, hAsync("ion-list", { key: 'cea2bc3687b8b2490a2a9ff4a1e16cd34169558e' }, header !== undefined && hAsync("ion-list-header", { key: '194aebb53453c43f913daae45a1a3066a1708c4c' }, header), hasSubHeaderOrMessage && (hAsync("ion-item", { key: 'b706b07a3c63ad8104d2db413e210c735ec1bec9' }, hAsync("ion-label", { key: '6e52b5b4cf6b04ff3dd5671d64264233de4190d5', class: "ion-text-wrap" }, subHeader !== undefined && hAsync("h3", { key: '6ef4440d17f5db8c96c63b9aa5073f4fe4b8ad62' }, subHeader), message !== undefined && hAsync("p", { key: 'c7b3b76c30ecd606c0e985a0258c13d3a75756e7' }, message)))), this.renderOptions(options))));
30109
30368
  }
30110
30369
  get el() { return getElement(this); }
30111
30370
  static get style() { return {
@@ -30153,11 +30412,11 @@ class SkeletonText {
30153
30412
  const animated = this.animated && config.getBoolean('animated', true);
30154
30413
  const inMedia = hostContext('ion-avatar', this.el) || hostContext('ion-thumbnail', this.el);
30155
30414
  const mode = getIonMode$1(this);
30156
- return (hAsync(Host, { key: '8a822ebe9b4e097bdb22765b3becc2949ebefbfb', class: {
30415
+ return (hAsync(Host, { key: 'fdfabf9364caf507450239b62be24f08873bd650', class: {
30157
30416
  [mode]: true,
30158
30417
  'skeleton-text-animated': animated,
30159
30418
  'in-media': inMedia,
30160
- } }, hAsync("span", { key: '6d85ce8c7561af1cfd5145c7224d08352d271a1c' }, "\u00A0")));
30419
+ } }, hAsync("span", { key: '3482c88dcc177547185ce87972afa064a542367d' }, "\u00A0")));
30161
30420
  }
30162
30421
  get el() { return getElement(this); }
30163
30422
  static get style() { return IonSkeletonTextStyle0; }
@@ -30210,7 +30469,7 @@ class Spinner {
30210
30469
  svgs.push(buildLine(spinner, duration, i, spinner.lines));
30211
30470
  }
30212
30471
  }
30213
- return (hAsync(Host, { key: '1313eca457d022d1e5aed560b03d7f2c9eba31d3', class: createColorClasses$1(self.color, {
30472
+ return (hAsync(Host, { key: '9d30ee9f5aa0dd0e220da07e75d05b8b2435224d', class: createColorClasses$1(self.color, {
30214
30473
  [mode]: true,
30215
30474
  [`spinner-${spinnerName}`]: true,
30216
30475
  'spinner-paused': self.paused || config.getBoolean('_testing'),
@@ -30310,12 +30569,12 @@ class SplitPane {
30310
30569
  }
30311
30570
  render() {
30312
30571
  const mode = getIonMode$1(this);
30313
- return (hAsync(Host, { key: '4b1685044b3a9a80e001a543d8c854450c4d54d2', class: {
30572
+ return (hAsync(Host, { key: '1ca0b0299d03605bb358112ca56cbafbe58f00f5', class: {
30314
30573
  [mode]: true,
30315
30574
  // Used internally for styling
30316
30575
  [`split-pane-${mode}`]: true,
30317
30576
  'split-pane-visible': this.visible,
30318
- } }, hAsync("slot", { key: '4c3403788443770b356d671aeadabcf831623f46' })));
30577
+ } }, hAsync("slot", { key: 'abe231361727ae7fc63edd592a4490caac1909fb' })));
30319
30578
  }
30320
30579
  get el() { return getElement(this); }
30321
30580
  static get watchers() { return {
@@ -30384,10 +30643,10 @@ class Tab {
30384
30643
  }
30385
30644
  render() {
30386
30645
  const { tab, active, component } = this;
30387
- return (hAsync(Host, { key: 'efde265064f6ef0080adf7a62d7364988900304c', role: "tabpanel", "aria-hidden": !active ? 'true' : null, "aria-labelledby": `tab-button-${tab}`, class: {
30646
+ return (hAsync(Host, { key: 'cb75d0877979b3b8df8f7e1952bfa9677da1eaa5', role: "tabpanel", "aria-hidden": !active ? 'true' : null, "aria-labelledby": `tab-button-${tab}`, class: {
30388
30647
  'ion-page': component === undefined,
30389
30648
  'tab-hidden': !active,
30390
- } }, hAsync("slot", { key: 'e66fc4de857ffb7a78686bf41ecaae81f7b86cdb' })));
30649
+ } }, hAsync("slot", { key: '37fbb7b7a6b03eb93b1dacd2dc1025b78eb2aa6b' })));
30391
30650
  }
30392
30651
  get el() { return getElement(this); }
30393
30652
  static get watchers() { return {
@@ -30465,11 +30724,11 @@ class TabBar {
30465
30724
  const { color, translucent, keyboardVisible } = this;
30466
30725
  const mode = getIonMode$1(this);
30467
30726
  const shouldHide = keyboardVisible && this.el.getAttribute('slot') !== 'top';
30468
- return (hAsync(Host, { key: '00ab2e0a72b41a18b2e01115138015106c0dd44a', role: "tablist", "aria-hidden": shouldHide ? 'true' : null, class: createColorClasses$1(color, {
30727
+ return (hAsync(Host, { key: 'a87fd2ea5df053705a37ea7ffec043e75c4a9907', role: "tablist", "aria-hidden": shouldHide ? 'true' : null, class: createColorClasses$1(color, {
30469
30728
  [mode]: true,
30470
30729
  'tab-bar-translucent': translucent,
30471
30730
  'tab-bar-hidden': shouldHide,
30472
- }) }, hAsync("slot", { key: 'b57cd1a769232291d209c069c3ce7235f76b763b' })));
30731
+ }) }, hAsync("slot", { key: '81a6223299b6cab29d7ddced590e9152e2b3ded0' })));
30473
30732
  }
30474
30733
  get el() { return getElement(this); }
30475
30734
  static get watchers() { return {
@@ -30567,7 +30826,7 @@ class TabButton {
30567
30826
  rel,
30568
30827
  target,
30569
30828
  };
30570
- return (hAsync(Host, { key: '373a1dddbbe787ca4d0eb911ea44a514c82de241', onClick: this.onClick, onKeyup: this.onKeyUp, id: tab !== undefined ? `tab-button-${tab}` : null, class: {
30829
+ return (hAsync(Host, { key: '5976c45943ea7ea8e7c1a85fc9996de421439f08', onClick: this.onClick, onKeyup: this.onKeyUp, id: tab !== undefined ? `tab-button-${tab}` : null, class: {
30571
30830
  [mode]: true,
30572
30831
  'tab-selected': selected,
30573
30832
  'tab-disabled': disabled,
@@ -30579,7 +30838,7 @@ class TabButton {
30579
30838
  'ion-activatable': true,
30580
30839
  'ion-selectable': true,
30581
30840
  'ion-focusable': true,
30582
- } }, hAsync("a", Object.assign({ key: 'be801e43c709675e2f4706fddb26c50875342b4e' }, attrs, { class: "button-native", part: "native", role: "tab", "aria-selected": selected ? 'true' : null, "aria-disabled": disabled ? 'true' : null, tabindex: disabled ? '-1' : undefined }, inheritedAttributes), hAsync("span", { key: 'b98aeff191a9d85f57f6cf3f47a8cefe1cd82f80', class: "button-inner" }, hAsync("slot", { key: '2d672ec926d9446f9839405e91cfd65e6c693583' })), mode === 'md' && hAsync("ion-ripple-effect", { key: '8cb8e7e39b2d16679c7855f7656b1380657415a1', type: "unbounded" }))));
30841
+ } }, hAsync("a", Object.assign({ key: '1db09d861b67ff292018fb4b0dc7b85bd4677eb8' }, attrs, { class: "button-native", part: "native", role: "tab", "aria-selected": selected ? 'true' : null, "aria-disabled": disabled ? 'true' : null, tabindex: disabled ? '-1' : undefined }, inheritedAttributes), hAsync("span", { key: '4381eafcb27e8c7bb0d86d4f115ceb0caf03b9b4', class: "button-inner" }, hAsync("slot", { key: '1981135f6fbb88376c1bd923c55c70fe8b5c5159' })), mode === 'md' && hAsync("ion-ripple-effect", { key: '0509bc7155d055d1ed710600e9cf4df135881491', type: "unbounded" }))));
30583
30842
  }
30584
30843
  get el() { return getElement(this); }
30585
30844
  static get style() { return {
@@ -30755,7 +31014,7 @@ class Tabs {
30755
31014
  return Array.from(this.el.querySelectorAll('ion-tab'));
30756
31015
  }
30757
31016
  render() {
30758
- return (hAsync(Host, { key: '7c66ed6987f13190b66d5c205f2cf2d6e75e2ce4', onIonTabButtonClick: this.onTabClicked }, hAsync("slot", { key: '57bc955794abbf4cb83760f4537ceca254e04266', name: "top" }), hAsync("div", { key: 'b40cf45fb2c8257891e734901ce992946394cd4e', class: "tabs-inner" }, hAsync("slot", { key: '690dc089bf85660d0cf8c415cb03239d1ddca66a' })), hAsync("slot", { key: '9c49f441d74f0db2f77ebdff4d0c4d37c41f1a16', name: "bottom" })));
31017
+ return (hAsync(Host, { key: 'e01ccf6bfaccad094515be50e407399c733fc226', onIonTabButtonClick: this.onTabClicked }, hAsync("slot", { key: '38d2d01dbfd8a08f01e6f0e27274b21d75424e37', name: "top" }), hAsync("div", { key: '7e894f0f423e2d43e1c68daff5f9f6c442fad237', class: "tabs-inner" }, hAsync("slot", { key: 'df16be529a0370a26d0adf850530b31607507c23' })), hAsync("slot", { key: '44642e1cb24c3281c43db75fd69a32fe0defe40a', name: "bottom" })));
30759
31018
  }
30760
31019
  get el() { return getElement(this); }
30761
31020
  static get style() { return IonTabsStyle0; }
@@ -30797,9 +31056,9 @@ class Text {
30797
31056
  }
30798
31057
  render() {
30799
31058
  const mode = getIonMode$1(this);
30800
- return (hAsync(Host, { key: 'b1179acfcabae40555440d14c05f8610802cd884', class: createColorClasses$1(this.color, {
31059
+ return (hAsync(Host, { key: 'e134d70c04344b708a2ecf6253722781ad2ca826', class: createColorClasses$1(this.color, {
30801
31060
  [mode]: true,
30802
- }) }, hAsync("slot", { key: 'b240a6f543ed2d8b91b6584bb2834f1ecee8b606' })));
31061
+ }) }, hAsync("slot", { key: 'da79c760f7ebbcd007ce110439f05a62cb22eac8' })));
30803
31062
  }
30804
31063
  static get style() { return IonTextStyle0; }
30805
31064
  static get cmpMeta() { return {
@@ -31166,7 +31425,7 @@ class Textarea {
31166
31425
  * TODO(FW-5592): Remove hasStartEndSlots condition
31167
31426
  */
31168
31427
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
31169
- return (hAsync(Host, { key: 'dd11d9187439e1b15791585a39490ab086c4bec9', class: createColorClasses$1(this.color, {
31428
+ return (hAsync(Host, { key: '8ce5e2f5ba3ac645f95f9b95922cfc2a7d3da459', class: createColorClasses$1(this.color, {
31170
31429
  [mode]: true,
31171
31430
  'has-value': hasValue,
31172
31431
  'has-focus': hasFocus,
@@ -31175,7 +31434,7 @@ class Textarea {
31175
31434
  [`textarea-shape-${shape}`]: shape !== undefined,
31176
31435
  [`textarea-label-placement-${labelPlacement}`]: true,
31177
31436
  'textarea-disabled': disabled,
31178
- }) }, hAsync("label", { key: '6c349e386e8b7834dc7ea01be6e217162869f5b3', class: "textarea-wrapper", htmlFor: inputId }, this.renderLabelContainer(), hAsync("div", { key: '2cfee57f35198e9d509ac8fe9d69705308b06e78', class: "textarea-wrapper-inner" }, hAsync("div", { key: '969c6ae37f1940a83fbead95f621973281c9390e', class: "start-slot-wrapper" }, hAsync("slot", { key: '17877837a5cf60069d3c683d9eb56c73c7d4c02e', name: "start" })), hAsync("div", { key: 'd83136eab5b43dfa10685977c7b48868dde4743e', class: "native-wrapper", ref: (el) => (this.textareaWrapper = el) }, hAsync("textarea", Object.assign({ key: '43b17361dbbf65c0bca11e353a3e112b125d3067', class: "native-textarea", ref: (el) => (this.nativeInput = el), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, minLength: this.minlength, maxLength: this.maxlength, name: this.name, placeholder: this.placeholder || '', readOnly: this.readonly, required: this.required, spellcheck: this.spellcheck, cols: this.cols, rows: this.rows, wrap: this.wrap, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeyDown }, this.inheritedAttributes), value)), hAsync("div", { key: '226ab7a01466bdfd30f425b7c6acbbf13514cc23', class: "end-slot-wrapper" }, hAsync("slot", { key: '4341c8ace1a5694d8d86dccd5f72fca0e08f5f7d', name: "end" }))), shouldRenderHighlight && hAsync("div", { key: '81ec5a64c111e2d04df50a8576695cf048352a1f', class: "textarea-highlight" })), this.renderBottomContent()));
31437
+ }) }, hAsync("label", { key: '746c40872c085d064f8f1e51580281c692626d5d', class: "textarea-wrapper", htmlFor: inputId }, this.renderLabelContainer(), hAsync("div", { key: '603f5e72ff1ee1deeaab7103f76cbc913663b4b4', class: "textarea-wrapper-inner" }, hAsync("div", { key: '6185ed2a5ef3a5ea318a9fea16d38a24d522cb19', class: "start-slot-wrapper" }, hAsync("slot", { key: '7376b204ca49c1468df12363298c449adcb149f1', name: "start" })), hAsync("div", { key: '429183415690d7390acfaea6344e7b69c948f749', class: "native-wrapper", ref: (el) => (this.textareaWrapper = el) }, hAsync("textarea", Object.assign({ key: 'e7f00f1c2e5706832a80eb0a73e5b28eec428943', class: "native-textarea", ref: (el) => (this.nativeInput = el), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, minLength: this.minlength, maxLength: this.maxlength, name: this.name, placeholder: this.placeholder || '', readOnly: this.readonly, required: this.required, spellcheck: this.spellcheck, cols: this.cols, rows: this.rows, wrap: this.wrap, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeyDown }, this.inheritedAttributes), value)), hAsync("div", { key: '6a82280cfbd2856a64b1078dd3ad94a62066494e', class: "end-slot-wrapper" }, hAsync("slot", { key: '0a9543f5751e4fbf1039b247dfe0d437c3f9beed', name: "end" }))), shouldRenderHighlight && hAsync("div", { key: 'b34296c968af3cdf46115ea7776af3a359c74734', class: "textarea-highlight" })), this.renderBottomContent()));
31179
31438
  }
31180
31439
  get el() { return getElement(this); }
31181
31440
  static get watchers() { return {
@@ -31237,7 +31496,7 @@ class Thumbnail {
31237
31496
  registerInstance(this, hostRef);
31238
31497
  }
31239
31498
  render() {
31240
- return (hAsync(Host, { key: 'cfa86b1da66346d3e3080092344c1c11e7e773d5', class: getIonMode$1(this) }, hAsync("slot", { key: 'db5ed41c9a024cf9ecc7905e30ecf68bd6219f7d' })));
31499
+ return (hAsync(Host, { key: 'cfa9aeb1d4fd624a9732c5230d29dd887e4b7771', class: getIonMode$1(this) }, hAsync("slot", { key: '29bc6e64063cba44e2643228df54394883933918' })));
31241
31500
  }
31242
31501
  static get style() { return IonThumbnailStyle0; }
31243
31502
  static get cmpMeta() { return {
@@ -32073,9 +32332,9 @@ class Toast {
32073
32332
  if (layout === 'stacked' && startButtons.length > 0 && endButtons.length > 0) {
32074
32333
  printIonWarning('This toast is using start and end buttons with the stacked toast layout. We recommend following the best practice of using either start or end buttons with the stacked toast layout.', el);
32075
32334
  }
32076
- return (hAsync(Host, Object.assign({ key: '8a04b1456cd16d54905ab006600110322b94b42a', tabindex: "-1" }, this.htmlAttributes, { style: {
32335
+ return (hAsync(Host, Object.assign({ key: 'c05655ff06af8d0e48c2a85396b07ad942fa81b4', tabindex: "-1" }, this.htmlAttributes, { style: {
32077
32336
  zIndex: `${60000 + this.overlayIndex}`,
32078
- }, class: createColorClasses$1(this.color, Object.assign(Object.assign({ [mode]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'toast-translucent': this.translucent })), onIonToastWillDismiss: this.dispatchCancelHandler }), hAsync("div", { key: 'f89bd416cc490790efb46f92f0c172b7f40a39d9', class: wrapperClass }, hAsync("div", { key: 'a12e4b4678f147d081cfeb7b2e3e2a32ce185e19', class: "toast-container", part: "container" }, this.renderButtons(startButtons, 'start'), this.icon !== undefined && (hAsync("ion-icon", { key: '00c796e53e9199cf785e44e998b40425acba8888', class: "toast-icon", part: "icon", icon: this.icon, lazy: false, "aria-hidden": "true" })), hAsync("div", { key: 'd7cd8e583198b71a81e2ad2520f2927f28258d2a', class: "toast-content", role: "status", "aria-atomic": "true", "aria-live": "polite" }, !revealContentToScreenReader && header !== undefined && this.renderHeader('oldHeader', 'true'), !revealContentToScreenReader && message !== undefined && this.renderToastMessage('oldMessage', 'true'), revealContentToScreenReader && header !== undefined && this.renderHeader('header'), revealContentToScreenReader && message !== undefined && this.renderToastMessage('header')), this.renderButtons(endButtons, 'end')))));
32337
+ }, class: createColorClasses$1(this.color, Object.assign(Object.assign({ [mode]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'toast-translucent': this.translucent })), onIonToastWillDismiss: this.dispatchCancelHandler }), hAsync("div", { key: '9393ead4de1bf28529661d6f64049d34e18d725c', class: wrapperClass }, hAsync("div", { key: '3e9dd73c17c337849c3f26e8d0f395b3e5ee20a7', class: "toast-container", part: "container" }, this.renderButtons(startButtons, 'start'), this.icon !== undefined && (hAsync("ion-icon", { key: '5d15b18364301ad55e44e9f601014ac33181590b', class: "toast-icon", part: "icon", icon: this.icon, lazy: false, "aria-hidden": "true" })), hAsync("div", { key: 'f6dd164502637a882c5caf18445d8509b85ad6f9', class: "toast-content", role: "status", "aria-atomic": "true", "aria-live": "polite" }, !revealContentToScreenReader && header !== undefined && this.renderHeader('oldHeader', 'true'), !revealContentToScreenReader && message !== undefined && this.renderToastMessage('oldMessage', 'true'), revealContentToScreenReader && header !== undefined && this.renderHeader('header'), revealContentToScreenReader && message !== undefined && this.renderToastMessage('header')), this.renderButtons(endButtons, 'end')))));
32079
32338
  }
32080
32339
  get el() { return getElement(this); }
32081
32340
  static get watchers() { return {
@@ -32295,7 +32554,7 @@ class Toggle {
32295
32554
  const value = this.getValue();
32296
32555
  const rtl = isRTL$1(el) ? 'rtl' : 'ltr';
32297
32556
  renderHiddenInput(true, el, name, checked ? value : '', disabled);
32298
- return (hAsync(Host, { key: '4e9013794a74f581b4f969ceadef4e53c920e9a6', onClick: this.onClick, class: createColorClasses$1(color, {
32557
+ return (hAsync(Host, { key: 'f52195ec3bc14c024647cb41319c32a4cd330e19', onClick: this.onClick, class: createColorClasses$1(color, {
32299
32558
  [mode]: true,
32300
32559
  'in-item': hostContext('ion-item', el),
32301
32560
  'toggle-activated': activated,
@@ -32305,10 +32564,10 @@ class Toggle {
32305
32564
  [`toggle-alignment-${alignment}`]: alignment !== undefined,
32306
32565
  [`toggle-label-placement-${labelPlacement}`]: true,
32307
32566
  [`toggle-${rtl}`]: true,
32308
- }) }, hAsync("label", { key: '24585bfe9c697e160b1d3d52522b43498d415a4d', class: "toggle-wrapper" }, hAsync("input", Object.assign({ key: '9d56368c0474c5741fa8768b5ea0c8ff3d8c2f27', type: "checkbox", role: "switch", "aria-checked": `${checked}`, checked: checked, disabled: disabled, id: inputId, onFocus: () => this.onFocus(), onBlur: () => this.onBlur(), ref: (focusEl) => (this.focusEl = focusEl) }, this.inheritedAttributes)), hAsync("div", { key: 'd21d608eada02baf5b91c38d577805deaec5f9ef', class: {
32567
+ }) }, hAsync("label", { key: 'f8b3a215ad85b2cee611ad63449b584e1640f27f', class: "toggle-wrapper" }, hAsync("input", Object.assign({ key: 'f387b1ea840737a9737917e516834c887be99c09', type: "checkbox", role: "switch", "aria-checked": `${checked}`, checked: checked, disabled: disabled, id: inputId, onFocus: () => this.onFocus(), onBlur: () => this.onBlur(), ref: (focusEl) => (this.focusEl = focusEl) }, this.inheritedAttributes)), hAsync("div", { key: '936af880db59fe377cd2de9101eb28a1c4fb8914', class: {
32309
32568
  'label-text-wrapper': true,
32310
32569
  'label-text-wrapper-hidden': !this.hasLabel,
32311
- }, part: "label" }, hAsync("slot", { key: 'c4f2e790a73d583938d70d72b4708b31b8ad1035' })), hAsync("div", { key: 'ced527f5f74d3066bf022e8af31f9ea82aaa6c8c', class: "native-wrapper" }, this.renderToggleControl()))));
32570
+ }, part: "label" }, hAsync("slot", { key: '80a6672e2e792c15011a9496dcd75363cdba31c6' })), hAsync("div", { key: '2b2b318b38ab27b194c0dab4cecd77d9d780f2ca', class: "native-wrapper" }, this.renderToggleControl()))));
32312
32571
  }
32313
32572
  get el() { return getElement(this); }
32314
32573
  static get watchers() { return {
@@ -32412,10 +32671,10 @@ class Toolbar {
32412
32671
  this.childrenStyles.forEach((value) => {
32413
32672
  Object.assign(childStyles, value);
32414
32673
  });
32415
- return (hAsync(Host, { key: 'd7721dc62e57aa43896fbe7894a0fb6230baac0e', class: Object.assign(Object.assign({}, childStyles), createColorClasses$1(this.color, {
32674
+ return (hAsync(Host, { key: '462538a5ecd01baf3cde116c9f029aeda26c81be', class: Object.assign(Object.assign({}, childStyles), createColorClasses$1(this.color, {
32416
32675
  [mode]: true,
32417
32676
  'in-toolbar': hostContext('ion-toolbar', this.el),
32418
- })) }, hAsync("div", { key: '39d556b276726b403b7a903471babea77b6068e3', class: "toolbar-background" }), hAsync("div", { key: 'adb179225a641f0e91011cc7f1a8853dd947149f', class: "toolbar-container" }, hAsync("slot", { key: '6d4e4a21846359ec9b9f17d532d9797ecb33ba97', name: "start" }), hAsync("slot", { key: 'b9f0a8b4b0ea3ddfd74b7512a307505ac5cfccf8', name: "secondary" }), hAsync("div", { key: '826b3ecc75b89c22cb02f7d202c983f0ee438964', class: "toolbar-content" }, hAsync("slot", { key: 'aa8d25d5b55b30da47db05a82a5c4cdc36012c83' })), hAsync("slot", { key: '67a7b7a6ad934b6ea022e1af8a78161388955d9e', name: "primary" }), hAsync("slot", { key: '265536d48c3c28c7af7026c1e97261cee543862e', name: "end" }))));
32677
+ })) }, hAsync("div", { key: 'c0b4415d3b2472de643a9be7cb3b13b3b628621b', class: "toolbar-background" }), hAsync("div", { key: '0ccb8a2dbeaa28d8f9bed87629c0c097446690c2', class: "toolbar-container" }, hAsync("slot", { key: '3e726dac359e923df21d80301651f16063a3de20', name: "start" }), hAsync("slot", { key: 'cd799330b56a7f8833bc61bb2807aafb21846f71', name: "secondary" }), hAsync("div", { key: '395282e6ac8c53576922dcdb5f08c25d34638c86', class: "toolbar-content" }, hAsync("slot", { key: 'a437c60e4ba5aae65e55169ae82a6f379868ec1d' })), hAsync("slot", { key: '711af9b9d321a7b31ede924c9bdcad767aa9a1ca', name: "primary" }), hAsync("slot", { key: 'ecc02edeaf80a837890bcb08d5096df1e22a0b9a', name: "end" }))));
32419
32678
  }
32420
32679
  get el() { return getElement(this); }
32421
32680
  static get style() { return {
@@ -32465,11 +32724,11 @@ class ToolbarTitle {
32465
32724
  render() {
32466
32725
  const mode = getIonMode$1(this);
32467
32726
  const size = this.getSize();
32468
- return (hAsync(Host, { key: '06af912c5ce99e229ab8fc12ec6fce6e6930f759', class: createColorClasses$1(this.color, {
32727
+ return (hAsync(Host, { key: '7293d2ecd6262feb0d8d769effbb208230baed89', class: createColorClasses$1(this.color, {
32469
32728
  [mode]: true,
32470
32729
  [`title-${size}`]: true,
32471
32730
  'title-rtl': document.dir === 'rtl',
32472
- }) }, hAsync("div", { key: 'f4079cafd93014478b86389e0ebc29be34e63476', class: "toolbar-title" }, hAsync("slot", { key: '910488c983dea9549f533360ba57b379d341a499' }))));
32731
+ }) }, hAsync("div", { key: '086ec3a361ebdf6506846a8704b457cda3a6f897', class: "toolbar-title" }, hAsync("slot", { key: '59add7eb92b82d6832a8f0894f897c51fdf4f214' }))));
32473
32732
  }
32474
32733
  get el() { return getElement(this); }
32475
32734
  static get watchers() { return {
@@ -32570,6 +32829,8 @@ registerComponents([
32570
32829
  Searchbar,
32571
32830
  Segment,
32572
32831
  SegmentButton,
32832
+ SegmentContent,
32833
+ SegmentView,
32573
32834
  Select,
32574
32835
  SelectModal,
32575
32836
  SelectOption,