@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
@@ -14,7 +14,7 @@ const Thumbnail = /*@__PURE__*/ proxyCustomElement(class Thumbnail extends HTMLE
14
14
  this.__attachShadow();
15
15
  }
16
16
  render() {
17
- return (h(Host, { key: 'cfa86b1da66346d3e3080092344c1c11e7e773d5', class: getIonMode(this) }, h("slot", { key: 'db5ed41c9a024cf9ecc7905e30ecf68bd6219f7d' })));
17
+ return (h(Host, { key: 'cfa9aeb1d4fd624a9732c5230d29dd887e4b7771', class: getIonMode(this) }, h("slot", { key: '29bc6e64063cba44e2643228df54394883933918' })));
18
18
  }
19
19
  static get style() { return IonThumbnailStyle0; }
20
20
  }, [1, "ion-thumbnail"]);
@@ -831,9 +831,9 @@ const Toast = /*@__PURE__*/ proxyCustomElement(class Toast extends HTMLElement {
831
831
  if (layout === 'stacked' && startButtons.length > 0 && endButtons.length > 0) {
832
832
  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);
833
833
  }
834
- return (h(Host, Object.assign({ key: '8a04b1456cd16d54905ab006600110322b94b42a', tabindex: "-1" }, this.htmlAttributes, { style: {
834
+ return (h(Host, Object.assign({ key: 'c05655ff06af8d0e48c2a85396b07ad942fa81b4', tabindex: "-1" }, this.htmlAttributes, { style: {
835
835
  zIndex: `${60000 + this.overlayIndex}`,
836
- }, class: createColorClasses(this.color, Object.assign(Object.assign({ [mode]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'toast-translucent': this.translucent })), onIonToastWillDismiss: this.dispatchCancelHandler }), h("div", { key: 'f89bd416cc490790efb46f92f0c172b7f40a39d9', class: wrapperClass }, h("div", { key: 'a12e4b4678f147d081cfeb7b2e3e2a32ce185e19', class: "toast-container", part: "container" }, this.renderButtons(startButtons, 'start'), this.icon !== undefined && (h("ion-icon", { key: '00c796e53e9199cf785e44e998b40425acba8888', class: "toast-icon", part: "icon", icon: this.icon, lazy: false, "aria-hidden": "true" })), h("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')))));
836
+ }, class: createColorClasses(this.color, Object.assign(Object.assign({ [mode]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'toast-translucent': this.translucent })), onIonToastWillDismiss: this.dispatchCancelHandler }), h("div", { key: '9393ead4de1bf28529661d6f64049d34e18d725c', class: wrapperClass }, h("div", { key: '3e9dd73c17c337849c3f26e8d0f395b3e5ee20a7', class: "toast-container", part: "container" }, this.renderButtons(startButtons, 'start'), this.icon !== undefined && (h("ion-icon", { key: '5d15b18364301ad55e44e9f601014ac33181590b', class: "toast-icon", part: "icon", icon: this.icon, lazy: false, "aria-hidden": "true" })), h("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')))));
837
837
  }
838
838
  get el() { return this; }
839
839
  static get watchers() { return {
@@ -161,7 +161,7 @@ const Toggle = /*@__PURE__*/ proxyCustomElement(class Toggle extends HTMLElement
161
161
  const value = this.getValue();
162
162
  const rtl = isRTL(el) ? 'rtl' : 'ltr';
163
163
  renderHiddenInput(true, el, name, checked ? value : '', disabled);
164
- return (h(Host, { key: '4e9013794a74f581b4f969ceadef4e53c920e9a6', onClick: this.onClick, class: createColorClasses(color, {
164
+ return (h(Host, { key: 'f52195ec3bc14c024647cb41319c32a4cd330e19', onClick: this.onClick, class: createColorClasses(color, {
165
165
  [mode]: true,
166
166
  'in-item': hostContext('ion-item', el),
167
167
  'toggle-activated': activated,
@@ -171,10 +171,10 @@ const Toggle = /*@__PURE__*/ proxyCustomElement(class Toggle extends HTMLElement
171
171
  [`toggle-alignment-${alignment}`]: alignment !== undefined,
172
172
  [`toggle-label-placement-${labelPlacement}`]: true,
173
173
  [`toggle-${rtl}`]: true,
174
- }) }, h("label", { key: '24585bfe9c697e160b1d3d52522b43498d415a4d', class: "toggle-wrapper" }, h("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)), h("div", { key: 'd21d608eada02baf5b91c38d577805deaec5f9ef', class: {
174
+ }) }, h("label", { key: 'f8b3a215ad85b2cee611ad63449b584e1640f27f', class: "toggle-wrapper" }, h("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)), h("div", { key: '936af880db59fe377cd2de9101eb28a1c4fb8914', class: {
175
175
  'label-text-wrapper': true,
176
176
  'label-text-wrapper-hidden': !this.hasLabel,
177
- }, part: "label" }, h("slot", { key: 'c4f2e790a73d583938d70d72b4708b31b8ad1035' })), h("div", { key: 'ced527f5f74d3066bf022e8af31f9ea82aaa6c8c', class: "native-wrapper" }, this.renderToggleControl()))));
177
+ }, part: "label" }, h("slot", { key: '80a6672e2e792c15011a9496dcd75363cdba31c6' })), h("div", { key: '2b2b318b38ab27b194c0dab4cecd77d9d780f2ca', class: "native-wrapper" }, this.renderToggleControl()))));
178
178
  }
179
179
  get el() { return this; }
180
180
  static get watchers() { return {
@@ -102,7 +102,7 @@ const SelectModal = /*@__PURE__*/ proxyCustomElement(class SelectModal extends H
102
102
  } }, option.text))));
103
103
  }
104
104
  render() {
105
- return (h(Host, { key: '694a6d282f489b4997105f6e602777d4df90421a', class: getIonMode(this) }, h("ion-header", { key: '50bdd9144222231817bbb9adbb8f7f43985fc786' }, h("ion-toolbar", { key: '47c1a62e188c6b79e32fa42724fde91cf396bc8a' }, this.header !== undefined && h("ion-title", { key: 'db2a5480ac0f710842108de116ac8218be409fdb' }, this.header), h("ion-buttons", { key: '21ca4e72b6220b821c3bac890ec9a8aacab69c29', slot: "end" }, h("ion-button", { key: 'f08b33ff0b82c04c8205e0186235acdaf8085733', onClick: () => this.closeModal() }, "Close")))), h("ion-content", { key: 'c35d024bebda7250b44b2b0ff97c2778c815f1ca' }, h("ion-list", { key: '027ad22799a82b49c03bc9d9f2779cdbe896f218' }, this.multiple === true ? this.renderCheckboxOptions() : this.renderRadioOptions()))));
105
+ return (h(Host, { key: 'f4b92f4fc3d646f9a327e43a9622abaf69659c28', class: getIonMode(this) }, h("ion-header", { key: '11232ef496e7abd69e55cef988963a4869a7b01e' }, h("ion-toolbar", { key: 'e7c41878691a504d44c658db02807867df542588' }, this.header !== undefined && h("ion-title", { key: 'fcf9d33e0f3e0076ff14805de68848f9ef199cca' }, this.header), h("ion-buttons", { key: '748a967ae0ce68bc2fd018a6b9ebe0e4b810f6ac', slot: "end" }, h("ion-button", { key: 'f5e60791870b5085a31b7af70ed4bb3fb83eb185', onClick: () => this.closeModal() }, "Close")))), h("ion-content", { key: '159797957b6f788a9b393d91864c18db34481c68' }, h("ion-list", { key: '4124554fe8b2411637cbf02f08e50e0d8f804175' }, this.multiple === true ? this.renderCheckboxOptions() : this.renderRadioOptions()))));
106
106
  }
107
107
  get el() { return this; }
108
108
  static get style() { return {
@@ -117,7 +117,7 @@ const SelectPopover = /*@__PURE__*/ proxyCustomElement(class SelectPopover exten
117
117
  render() {
118
118
  const { header, message, options, subHeader } = this;
119
119
  const hasSubHeaderOrMessage = subHeader !== undefined || message !== undefined;
120
- return (h(Host, { key: '8baf834489a89d2e65554eb4241fe389a525f85c', class: getIonMode(this) }, h("ion-list", { key: '2646cd1047a308c4cbb89c3a936f9a13c307221b' }, header !== undefined && h("ion-list-header", { key: 'aec9975d382f9e97eb5b7bd036fbd08f645f6462' }, header), hasSubHeaderOrMessage && (h("ion-item", { key: 'd9e3298ba2c289fdef7624e2cbddc247061d4d75' }, h("ion-label", { key: '6f068afe5db73092638dff9d1d3f60cefd1d2599', class: "ion-text-wrap" }, subHeader !== undefined && h("h3", { key: '4403c78b13c3e861d199f4e75cca2876cb058267' }, subHeader), message !== undefined && h("p", { key: '6af680fd7ed7bf0c04baa63e7e9bc44ad2d7a057' }, message)))), this.renderOptions(options))));
120
+ return (h(Host, { key: 'dd0990db4de4f175b176b27f35501dd1604ca400', class: getIonMode(this) }, h("ion-list", { key: 'cea2bc3687b8b2490a2a9ff4a1e16cd34169558e' }, header !== undefined && h("ion-list-header", { key: '194aebb53453c43f913daae45a1a3066a1708c4c' }, header), hasSubHeaderOrMessage && (h("ion-item", { key: 'b706b07a3c63ad8104d2db413e210c735ec1bec9' }, h("ion-label", { key: '6e52b5b4cf6b04ff3dd5671d64264233de4190d5', class: "ion-text-wrap" }, subHeader !== undefined && h("h3", { key: '6ef4440d17f5db8c96c63b9aa5073f4fe4b8ad62' }, subHeader), message !== undefined && h("p", { key: 'c7b3b76c30ecd606c0e985a0258c13d3a75756e7' }, message)))), this.renderOptions(options))));
121
121
  }
122
122
  get el() { return this; }
123
123
  static get style() { return {
@@ -185,7 +185,7 @@ const Spinner = /*@__PURE__*/ proxyCustomElement(class Spinner extends HTMLEleme
185
185
  svgs.push(buildLine(spinner, duration, i, spinner.lines));
186
186
  }
187
187
  }
188
- return (h(Host, { key: '1313eca457d022d1e5aed560b03d7f2c9eba31d3', class: createColorClasses(self.color, {
188
+ return (h(Host, { key: '9d30ee9f5aa0dd0e220da07e75d05b8b2435224d', class: createColorClasses(self.color, {
189
189
  [mode]: true,
190
190
  [`spinner-${spinnerName}`]: true,
191
191
  'spinner-paused': self.paused || config.getBoolean('_testing'),
@@ -38,11 +38,11 @@ const ToolbarTitle = /*@__PURE__*/ proxyCustomElement(class ToolbarTitle extends
38
38
  render() {
39
39
  const mode = getIonMode(this);
40
40
  const size = this.getSize();
41
- return (h(Host, { key: '06af912c5ce99e229ab8fc12ec6fce6e6930f759', class: createColorClasses(this.color, {
41
+ return (h(Host, { key: '7293d2ecd6262feb0d8d769effbb208230baed89', class: createColorClasses(this.color, {
42
42
  [mode]: true,
43
43
  [`title-${size}`]: true,
44
44
  'title-rtl': document.dir === 'rtl',
45
- }) }, h("div", { key: 'f4079cafd93014478b86389e0ebc29be34e63476', class: "toolbar-title" }, h("slot", { key: '910488c983dea9549f533360ba57b379d341a499' }))));
45
+ }) }, h("div", { key: '086ec3a361ebdf6506846a8704b457cda3a6f897', class: "toolbar-title" }, h("slot", { key: '59add7eb92b82d6832a8f0894f897c51fdf4f214' }))));
46
46
  }
47
47
  get el() { return this; }
48
48
  static get watchers() { return {
@@ -63,10 +63,10 @@ const Toolbar = /*@__PURE__*/ proxyCustomElement(class Toolbar extends HTMLEleme
63
63
  this.childrenStyles.forEach((value) => {
64
64
  Object.assign(childStyles, value);
65
65
  });
66
- return (h(Host, { key: 'd7721dc62e57aa43896fbe7894a0fb6230baac0e', class: Object.assign(Object.assign({}, childStyles), createColorClasses(this.color, {
66
+ return (h(Host, { key: '462538a5ecd01baf3cde116c9f029aeda26c81be', class: Object.assign(Object.assign({}, childStyles), createColorClasses(this.color, {
67
67
  [mode]: true,
68
68
  'in-toolbar': hostContext('ion-toolbar', this.el),
69
- })) }, h("div", { key: '39d556b276726b403b7a903471babea77b6068e3', class: "toolbar-background" }), h("div", { key: 'adb179225a641f0e91011cc7f1a8853dd947149f', class: "toolbar-container" }, h("slot", { key: '6d4e4a21846359ec9b9f17d532d9797ecb33ba97', name: "start" }), h("slot", { key: 'b9f0a8b4b0ea3ddfd74b7512a307505ac5cfccf8', name: "secondary" }), h("div", { key: '826b3ecc75b89c22cb02f7d202c983f0ee438964', class: "toolbar-content" }, h("slot", { key: 'aa8d25d5b55b30da47db05a82a5c4cdc36012c83' })), h("slot", { key: '67a7b7a6ad934b6ea022e1af8a78161388955d9e', name: "primary" }), h("slot", { key: '265536d48c3c28c7af7026c1e97261cee543862e', name: "end" }))));
69
+ })) }, h("div", { key: 'c0b4415d3b2472de643a9be7cb3b13b3b628621b', class: "toolbar-background" }), h("div", { key: '0ccb8a2dbeaa28d8f9bed87629c0c097446690c2', class: "toolbar-container" }, h("slot", { key: '3e726dac359e923df21d80301651f16063a3de20', name: "start" }), h("slot", { key: 'cd799330b56a7f8833bc61bb2807aafb21846f71', name: "secondary" }), h("div", { key: '395282e6ac8c53576922dcdb5f08c25d34638c86', class: "toolbar-content" }, h("slot", { key: 'a437c60e4ba5aae65e55169ae82a6f379868ec1d' })), h("slot", { key: '711af9b9d321a7b31ede924c9bdcad767aa9a1ca', name: "primary" }), h("slot", { key: 'ecc02edeaf80a837890bcb08d5096df1e22a0b9a', name: "end" }))));
70
70
  }
71
71
  get el() { return this; }
72
72
  static get style() { return {
@@ -1221,11 +1221,11 @@ const ToolbarTitle = class {
1221
1221
  render() {
1222
1222
  const mode = ionicGlobal.getIonMode(this);
1223
1223
  const size = this.getSize();
1224
- return (index.h(index.Host, { key: '06af912c5ce99e229ab8fc12ec6fce6e6930f759', class: theme.createColorClasses(this.color, {
1224
+ return (index.h(index.Host, { key: '7293d2ecd6262feb0d8d769effbb208230baed89', class: theme.createColorClasses(this.color, {
1225
1225
  [mode]: true,
1226
1226
  [`title-${size}`]: true,
1227
1227
  'title-rtl': document.dir === 'rtl',
1228
- }) }, index.h("div", { key: 'f4079cafd93014478b86389e0ebc29be34e63476', class: "toolbar-title" }, index.h("slot", { key: '910488c983dea9549f533360ba57b379d341a499' }))));
1228
+ }) }, index.h("div", { key: '086ec3a361ebdf6506846a8704b457cda3a6f897', class: "toolbar-title" }, index.h("slot", { key: '59add7eb92b82d6832a8f0894f897c51fdf4f214' }))));
1229
1229
  }
1230
1230
  get el() { return index.getElement(this); }
1231
1231
  static get watchers() { return {
@@ -1293,10 +1293,10 @@ const Toolbar = class {
1293
1293
  this.childrenStyles.forEach((value) => {
1294
1294
  Object.assign(childStyles, value);
1295
1295
  });
1296
- return (index.h(index.Host, { key: 'd7721dc62e57aa43896fbe7894a0fb6230baac0e', class: Object.assign(Object.assign({}, childStyles), theme.createColorClasses(this.color, {
1296
+ return (index.h(index.Host, { key: '462538a5ecd01baf3cde116c9f029aeda26c81be', class: Object.assign(Object.assign({}, childStyles), theme.createColorClasses(this.color, {
1297
1297
  [mode]: true,
1298
1298
  'in-toolbar': theme.hostContext('ion-toolbar', this.el),
1299
- })) }, index.h("div", { key: '39d556b276726b403b7a903471babea77b6068e3', class: "toolbar-background" }), index.h("div", { key: 'adb179225a641f0e91011cc7f1a8853dd947149f', class: "toolbar-container" }, index.h("slot", { key: '6d4e4a21846359ec9b9f17d532d9797ecb33ba97', name: "start" }), index.h("slot", { key: 'b9f0a8b4b0ea3ddfd74b7512a307505ac5cfccf8', name: "secondary" }), index.h("div", { key: '826b3ecc75b89c22cb02f7d202c983f0ee438964', class: "toolbar-content" }, index.h("slot", { key: 'aa8d25d5b55b30da47db05a82a5c4cdc36012c83' })), index.h("slot", { key: '67a7b7a6ad934b6ea022e1af8a78161388955d9e', name: "primary" }), index.h("slot", { key: '265536d48c3c28c7af7026c1e97261cee543862e', name: "end" }))));
1299
+ })) }, index.h("div", { key: 'c0b4415d3b2472de643a9be7cb3b13b3b628621b', class: "toolbar-background" }), index.h("div", { key: '0ccb8a2dbeaa28d8f9bed87629c0c097446690c2', class: "toolbar-container" }, index.h("slot", { key: '3e726dac359e923df21d80301651f16063a3de20', name: "start" }), index.h("slot", { key: 'cd799330b56a7f8833bc61bb2807aafb21846f71', name: "secondary" }), index.h("div", { key: '395282e6ac8c53576922dcdb5f08c25d34638c86', class: "toolbar-content" }, index.h("slot", { key: 'a437c60e4ba5aae65e55169ae82a6f379868ec1d' })), index.h("slot", { key: '711af9b9d321a7b31ede924c9bdcad767aa9a1ca', name: "primary" }), index.h("slot", { key: 'ecc02edeaf80a837890bcb08d5096df1e22a0b9a', name: "end" }))));
1300
1300
  }
1301
1301
  get el() { return index.getElement(this); }
1302
1302
  };
@@ -59,7 +59,7 @@ const Thumbnail = class {
59
59
  index.registerInstance(this, hostRef);
60
60
  }
61
61
  render() {
62
- return (index.h(index.Host, { key: 'cfa86b1da66346d3e3080092344c1c11e7e773d5', class: ionicGlobal.getIonMode(this) }, index.h("slot", { key: 'db5ed41c9a024cf9ecc7905e30ecf68bd6219f7d' })));
62
+ return (index.h(index.Host, { key: 'cfa9aeb1d4fd624a9732c5230d29dd887e4b7771', class: ionicGlobal.getIonMode(this) }, index.h("slot", { key: '29bc6e64063cba44e2643228df54394883933918' })));
63
63
  }
64
64
  };
65
65
  Thumbnail.style = IonThumbnailStyle0;
@@ -474,11 +474,11 @@ const SkeletonText = class {
474
474
  const animated = this.animated && ionicGlobal.config.getBoolean('animated', true);
475
475
  const inMedia = theme.hostContext('ion-avatar', this.el) || theme.hostContext('ion-thumbnail', this.el);
476
476
  const mode = ionicGlobal.getIonMode(this);
477
- return (index.h(index.Host, { key: '8a822ebe9b4e097bdb22765b3becc2949ebefbfb', class: {
477
+ return (index.h(index.Host, { key: 'fdfabf9364caf507450239b62be24f08873bd650', class: {
478
478
  [mode]: true,
479
479
  'skeleton-text-animated': animated,
480
480
  'in-media': inMedia,
481
- } }, index.h("span", { key: '6d85ce8c7561af1cfd5145c7224d08352d271a1c' }, "\u00A0")));
481
+ } }, index.h("span", { key: '3482c88dcc177547185ce87972afa064a542367d' }, "\u00A0")));
482
482
  }
483
483
  get el() { return index.getElement(this); }
484
484
  };
@@ -0,0 +1,23 @@
1
+ /*!
2
+ * (C) Ionic http://ionicframework.com - MIT License
3
+ */
4
+ 'use strict';
5
+
6
+ Object.defineProperty(exports, '__esModule', { value: true });
7
+
8
+ const index = require('./index-73f75efb.js');
9
+
10
+ const segmentContentCss = ":host{scroll-snap-align:center;scroll-snap-stop:always;-ms-flex-negative:0;flex-shrink:0;width:100%}";
11
+ const IonSegmentContentStyle0 = segmentContentCss;
12
+
13
+ const SegmentContent = class {
14
+ constructor(hostRef) {
15
+ index.registerInstance(this, hostRef);
16
+ }
17
+ render() {
18
+ return (index.h(index.Host, { key: '03684b2999ac64fe13e376fd7e7f279976e9d4f2' }, index.h("slot", { key: '143031075bf33ca19e7cfd76fc8a67b83ccaf11c' })));
19
+ }
20
+ };
21
+ SegmentContent.style = IonSegmentContentStyle0;
22
+
23
+ exports.ion_segment_content = SegmentContent;
@@ -0,0 +1,122 @@
1
+ /*!
2
+ * (C) Ionic http://ionicframework.com - MIT License
3
+ */
4
+ 'use strict';
5
+
6
+ Object.defineProperty(exports, '__esModule', { value: true });
7
+
8
+ const index = require('./index-73f75efb.js');
9
+
10
+ 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}";
11
+ const IonSegmentViewIosStyle0 = segmentViewIosCss;
12
+
13
+ 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}";
14
+ const IonSegmentViewMdStyle0 = segmentViewMdCss;
15
+
16
+ const SegmentView = class {
17
+ constructor(hostRef) {
18
+ index.registerInstance(this, hostRef);
19
+ this.ionSegmentViewScroll = index.createEvent(this, "ionSegmentViewScroll", 7);
20
+ this.scrollEndTimeout = null;
21
+ this.isTouching = false;
22
+ this.disabled = false;
23
+ this.isManualScroll = undefined;
24
+ }
25
+ handleScroll(ev) {
26
+ var _a;
27
+ const { scrollLeft, scrollWidth, clientWidth } = ev.target;
28
+ const scrollRatio = scrollLeft / (scrollWidth - clientWidth);
29
+ this.ionSegmentViewScroll.emit({
30
+ scrollRatio,
31
+ isManualScroll: (_a = this.isManualScroll) !== null && _a !== void 0 ? _a : true,
32
+ });
33
+ // Reset the timeout to check for scroll end
34
+ this.resetScrollEndTimeout();
35
+ }
36
+ /**
37
+ * Handle touch start event to know when the user is actively dragging the segment view.
38
+ */
39
+ handleScrollStart() {
40
+ if (this.scrollEndTimeout) {
41
+ clearTimeout(this.scrollEndTimeout);
42
+ this.scrollEndTimeout = null;
43
+ }
44
+ this.isTouching = true;
45
+ }
46
+ /**
47
+ * Handle touch end event to know when the user is no longer dragging the segment view.
48
+ */
49
+ handleTouchEnd() {
50
+ this.isTouching = false;
51
+ }
52
+ /**
53
+ * Reset the scroll end detection timer. This is called on every scroll event.
54
+ */
55
+ resetScrollEndTimeout() {
56
+ if (this.scrollEndTimeout) {
57
+ clearTimeout(this.scrollEndTimeout);
58
+ this.scrollEndTimeout = null;
59
+ }
60
+ this.scrollEndTimeout = setTimeout(() => {
61
+ this.checkForScrollEnd();
62
+ },
63
+ // Setting this to a lower value may result in inconsistencies in behavior
64
+ // across browsers (particularly Firefox).
65
+ // Ideally, all of this logic is removed once the scroll end event is
66
+ // supported on all browsers (https://caniuse.com/?search=scrollend)
67
+ 100);
68
+ }
69
+ /**
70
+ * Check if the scroll has ended and the user is not actively touching.
71
+ * If the conditions are met (active content is enabled and no active touch),
72
+ * reset the scroll position and emit the scroll end event.
73
+ */
74
+ checkForScrollEnd() {
75
+ // Only emit scroll end event if the active content is not disabled and
76
+ // the user is not touching the segment view
77
+ if (!this.isTouching) {
78
+ this.isManualScroll = undefined;
79
+ }
80
+ }
81
+ /**
82
+ * @internal
83
+ *
84
+ * This method is used to programmatically set the displayed segment content
85
+ * in the segment view. Calling this method will update the `value` of the
86
+ * corresponding segment button.
87
+ *
88
+ * @param id: The id of the segment content to display.
89
+ * @param smoothScroll: Whether to animate the scroll transition.
90
+ */
91
+ async setContent(id, smoothScroll = true) {
92
+ const contents = this.getSegmentContents();
93
+ const index = contents.findIndex((content) => content.id === id);
94
+ if (index === -1)
95
+ return;
96
+ this.isManualScroll = false;
97
+ this.resetScrollEndTimeout();
98
+ const contentWidth = this.el.offsetWidth;
99
+ this.el.scrollTo({
100
+ top: 0,
101
+ left: index * contentWidth,
102
+ behavior: smoothScroll ? 'smooth' : 'instant',
103
+ });
104
+ }
105
+ getSegmentContents() {
106
+ return Array.from(this.el.querySelectorAll('ion-segment-content'));
107
+ }
108
+ render() {
109
+ const { disabled, isManualScroll } = this;
110
+ return (index.h(index.Host, { key: '9f4f11d31c4db776f077e59ae895b35dd4454717', class: {
111
+ 'segment-view-disabled': disabled,
112
+ 'segment-view-scroll-disabled': isManualScroll === false,
113
+ } }, index.h("slot", { key: 'ea58b21f031cee2ab2b70580f336deaefa364538' })));
114
+ }
115
+ get el() { return index.getElement(this); }
116
+ };
117
+ SegmentView.style = {
118
+ ios: IonSegmentViewIosStyle0,
119
+ md: IonSegmentViewMdStyle0
120
+ };
121
+
122
+ exports.ion_segment_view = SegmentView;
@@ -23,6 +23,7 @@ const Segment = class {
23
23
  this.ionChange = index.createEvent(this, "ionChange", 7);
24
24
  this.ionSelect = index.createEvent(this, "ionSelect", 7);
25
25
  this.ionStyle = index.createEvent(this, "ionStyle", 7);
26
+ this.segmentViewEl = null;
26
27
  this.onClick = (ev) => {
27
28
  const current = ev.target;
28
29
  const previous = this.checked;
@@ -37,7 +38,13 @@ const Segment = class {
37
38
  if (current !== previous) {
38
39
  this.emitValueChange();
39
40
  }
40
- if (this.scrollable || !this.swipeGesture) {
41
+ if (this.segmentViewEl) {
42
+ this.updateSegmentView();
43
+ if (this.scrollable && previous) {
44
+ this.checkButton(previous, current);
45
+ }
46
+ }
47
+ else if (this.scrollable || !this.swipeGesture) {
41
48
  if (previous) {
42
49
  this.checkButton(previous, current);
43
50
  }
@@ -93,19 +100,49 @@ const Segment = class {
93
100
  swipeGestureChanged() {
94
101
  this.gestureChanged();
95
102
  }
96
- valueChanged(value) {
103
+ valueChanged(value, oldValue) {
104
+ // Force a value to exist if we're using a segment view
105
+ if (this.segmentViewEl && value === undefined) {
106
+ this.value = this.getButtons()[0].value;
107
+ return;
108
+ }
109
+ if (oldValue !== undefined && value !== undefined) {
110
+ const buttons = this.getButtons();
111
+ const previous = buttons.find((button) => button.value === oldValue);
112
+ const current = buttons.find((button) => button.value === value);
113
+ if (previous && current) {
114
+ if (!this.segmentViewEl) {
115
+ this.checkButton(previous, current);
116
+ }
117
+ else if (this.triggerScrollOnValueChange !== false) {
118
+ this.updateSegmentView();
119
+ }
120
+ }
121
+ }
122
+ else if (value !== undefined && oldValue === undefined && this.segmentViewEl) {
123
+ this.updateSegmentView();
124
+ }
97
125
  /**
98
126
  * `ionSelect` is emitted every time the value changes (internal or external changes).
99
127
  * Used by `ion-segment-button` to determine if the button should be checked.
100
128
  */
101
129
  this.ionSelect.emit({ value });
102
- this.scrollActiveButtonIntoView();
130
+ // The scroll listener should handle scrolling the active button into view as needed
131
+ if (!this.segmentViewEl) {
132
+ this.scrollActiveButtonIntoView();
133
+ }
134
+ this.triggerScrollOnValueChange = undefined;
103
135
  }
104
136
  disabledChanged() {
105
137
  this.gestureChanged();
106
- const buttons = this.getButtons();
107
- for (const button of buttons) {
108
- button.disabled = this.disabled;
138
+ if (!this.segmentViewEl) {
139
+ const buttons = this.getButtons();
140
+ for (const button of buttons) {
141
+ button.disabled = this.disabled;
142
+ }
143
+ }
144
+ else {
145
+ this.segmentViewEl.disabled = this.disabled;
109
146
  }
110
147
  }
111
148
  gestureChanged() {
@@ -115,6 +152,10 @@ const Segment = class {
115
152
  }
116
153
  connectedCallback() {
117
154
  this.emitStyle();
155
+ this.segmentViewEl = this.getSegmentView();
156
+ }
157
+ disconnectedCallback() {
158
+ this.segmentViewEl = null;
118
159
  }
119
160
  componentWillLoad() {
120
161
  this.emitStyle();
@@ -148,6 +189,9 @@ const Segment = class {
148
189
  if (this.disabled) {
149
190
  this.disabledChanged();
150
191
  }
192
+ // Update segment view based on the initial value,
193
+ // but do not animate the scroll
194
+ this.updateSegmentView(false);
151
195
  }
152
196
  onStart(detail) {
153
197
  this.valueBeforeGesture = this.value;
@@ -164,6 +208,7 @@ const Segment = class {
164
208
  if (value !== undefined) {
165
209
  if (this.valueBeforeGesture !== value) {
166
210
  this.emitValueChange();
211
+ this.updateSegmentView();
167
212
  }
168
213
  }
169
214
  this.valueBeforeGesture = undefined;
@@ -191,12 +236,7 @@ const Segment = class {
191
236
  setActivated(activated) {
192
237
  const buttons = this.getButtons();
193
238
  buttons.forEach((button) => {
194
- if (activated) {
195
- button.classList.add('segment-button-activated');
196
- }
197
- else {
198
- button.classList.remove('segment-button-activated');
199
- }
239
+ button.classList.toggle('segment-button-activated', activated);
200
240
  });
201
241
  this.activated = activated;
202
242
  }
@@ -247,6 +287,7 @@ const Segment = class {
247
287
  currentIndicator.classList.add('segment-button-indicator-animated');
248
288
  // Remove the transform to slide the indicator back to the button clicked
249
289
  currentIndicator.style.setProperty('transform', '');
290
+ this.scrollActiveButtonIntoView(true);
250
291
  });
251
292
  this.value = current.value;
252
293
  this.setCheckedClasses();
@@ -262,6 +303,60 @@ const Segment = class {
262
303
  buttons[next].classList.add('segment-button-after-checked');
263
304
  }
264
305
  }
306
+ getSegmentView() {
307
+ const buttons = this.getButtons();
308
+ // Get the first button with a contentId
309
+ const firstContentId = buttons.find((button) => button.contentId);
310
+ // Get the segment content with an id matching the button's contentId
311
+ const segmentContent = document.querySelector(`ion-segment-content[id="${firstContentId === null || firstContentId === void 0 ? void 0 : firstContentId.contentId}"]`);
312
+ // Return the segment view for that matching segment content
313
+ return segmentContent === null || segmentContent === void 0 ? void 0 : segmentContent.closest('ion-segment-view');
314
+ }
315
+ handleSegmentViewScroll(ev) {
316
+ const { scrollRatio, isManualScroll } = ev.detail;
317
+ if (!isManualScroll) {
318
+ return;
319
+ }
320
+ const dispatchedFrom = ev.target;
321
+ const segmentViewEl = this.segmentViewEl;
322
+ const segmentEl = this.el;
323
+ // Only update the indicator if the event was dispatched from the correct segment view
324
+ if (ev.composedPath().includes(segmentViewEl) || (dispatchedFrom === null || dispatchedFrom === void 0 ? void 0 : dispatchedFrom.contains(segmentEl))) {
325
+ const buttons = this.getButtons();
326
+ // If no buttons are found or there is no value set then do nothing
327
+ if (!buttons.length)
328
+ return;
329
+ const index = buttons.findIndex((button) => button.value === this.value);
330
+ const current = buttons[index];
331
+ const nextIndex = Math.round(scrollRatio * (buttons.length - 1));
332
+ if (this.lastNextIndex === undefined || this.lastNextIndex !== nextIndex) {
333
+ this.lastNextIndex = nextIndex;
334
+ this.triggerScrollOnValueChange = false;
335
+ this.checkButton(current, buttons[nextIndex]);
336
+ this.emitValueChange();
337
+ }
338
+ }
339
+ }
340
+ /**
341
+ * Finds the related segment view and sets its current content
342
+ * based on the selected segment button. This method
343
+ * should be called on initial load of the segment,
344
+ * after the gesture is completed (if dragging between segments)
345
+ * and when a segment button is clicked directly.
346
+ */
347
+ updateSegmentView(smoothScroll = true) {
348
+ const buttons = this.getButtons();
349
+ const button = buttons.find((btn) => btn.value === this.value);
350
+ // If the button does not have a contentId then there is
351
+ // no associated segment view to update
352
+ if (!(button === null || button === void 0 ? void 0 : button.contentId)) {
353
+ return;
354
+ }
355
+ const segmentView = this.segmentViewEl;
356
+ if (segmentView) {
357
+ segmentView.setContent(button.contentId, smoothScroll);
358
+ }
359
+ }
265
360
  scrollActiveButtonIntoView(smoothScroll = true) {
266
361
  const { scrollable, value, el } = this;
267
362
  if (scrollable) {
@@ -444,14 +539,14 @@ const Segment = class {
444
539
  }
445
540
  render() {
446
541
  const mode = ionicGlobal.getIonMode(this);
447
- return (index.h(index.Host, { key: '1f50689291d24812e33145272f9a73c01e085383', role: "tablist", onClick: this.onClick, class: theme.createColorClasses(this.color, {
542
+ return (index.h(index.Host, { key: '66bd7a565ba73540b3bbe56dd23b95e59bcef9bc', role: "tablist", onClick: this.onClick, class: theme.createColorClasses(this.color, {
448
543
  [mode]: true,
449
544
  'in-toolbar': theme.hostContext('ion-toolbar', this.el),
450
545
  'in-toolbar-color': theme.hostContext('ion-toolbar[color]', this.el),
451
546
  'segment-activated': this.activated,
452
547
  'segment-disabled': this.disabled,
453
548
  'segment-scrollable': this.scrollable,
454
- }) }, index.h("slot", { key: 'd3b90e1adabf0b923e41a36cd856dc0a5a3d041e', onSlotchange: this.onSlottedItemsChange })));
549
+ }) }, index.h("slot", { key: '782c521b1a33729b8eab1c4b879bc3f2ff48ae1b', onSlotchange: this.onSlottedItemsChange })));
455
550
  }
456
551
  get el() { return index.getElement(this); }
457
552
  static get watchers() { return {
@@ -491,6 +586,7 @@ const SegmentButton = class {
491
586
  }
492
587
  };
493
588
  this.checked = false;
589
+ this.contentId = undefined;
494
590
  this.disabled = false;
495
591
  this.layout = 'icon-top';
496
592
  this.type = 'button';
@@ -506,6 +602,26 @@ const SegmentButton = class {
506
602
  helpers.addEventListener(segmentEl, 'ionSelect', this.updateState);
507
603
  helpers.addEventListener(segmentEl, 'ionStyle', this.updateStyle);
508
604
  }
605
+ // Return if there is no contentId defined
606
+ if (!this.contentId)
607
+ return;
608
+ // Attempt to find the Segment Content by its contentId
609
+ const segmentContent = document.getElementById(this.contentId);
610
+ // If no associated Segment Content exists, log an error and return
611
+ if (!segmentContent) {
612
+ console.error(`Segment Button: Unable to find Segment Content with id="${this.contentId}".`);
613
+ return;
614
+ }
615
+ // Ensure the found element is a valid ION-SEGMENT-CONTENT
616
+ if (segmentContent.tagName !== 'ION-SEGMENT-CONTENT') {
617
+ console.error(`Segment Button: Element with id="${this.contentId}" is not an <ion-segment-content> element.`);
618
+ return;
619
+ }
620
+ // Prevent buttons from being disabled when associated with segment content
621
+ if (this.disabled) {
622
+ console.warn(`Segment Button: Segment buttons cannot be disabled when associated with an <ion-segment-content>.`);
623
+ this.disabled = false;
624
+ }
509
625
  }
510
626
  disconnectedCallback() {
511
627
  const segmentEl = this.segmentEl;
@@ -539,7 +655,7 @@ const SegmentButton = class {
539
655
  const { checked, type, disabled, hasIcon, hasLabel, layout, segmentEl } = this;
540
656
  const mode = ionicGlobal.getIonMode(this);
541
657
  const hasSegmentColor = () => (segmentEl === null || segmentEl === void 0 ? void 0 : segmentEl.color) !== undefined;
542
- return (index.h(index.Host, { key: '9b54e4841be5d0f4f2ee230a649bfbe01066c7c7', class: {
658
+ return (index.h(index.Host, { key: 'd50a5d5e2f6206e8523598f258d8217d2903f69b', class: {
543
659
  [mode]: true,
544
660
  'in-toolbar': theme.hostContext('ion-toolbar', this.el),
545
661
  'in-toolbar-color': theme.hostContext('ion-toolbar[color]', this.el),
@@ -555,10 +671,7 @@ const SegmentButton = class {
555
671
  'ion-activatable': true,
556
672
  'ion-activatable-instant': true,
557
673
  'ion-focusable': true,
558
- } }, index.h("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), index.h("span", { key: '0eeb2616f7c5a7a7fc1e2e3bd34ab461de6179f4', class: "button-inner" }, index.h("slot", { key: '5ac8fafa2f23e30f8df63bfe236a9604cfb388ae' })), mode === 'md' && index.h("ion-ripple-effect", { key: '86032e9726e2b6437ffc34f59fcbe564616cc9ca' })), index.h("div", { key: '536b1da58dd2521be290707d6b1726831340cf9f', part: "indicator", class: {
559
- 'segment-button-indicator': true,
560
- 'segment-button-indicator-animated': true,
561
- } }, index.h("div", { key: 'b43124415ebd77c87285791522c5afc26a137f96', part: "indicator-background", class: "segment-button-indicator-background" }))));
674
+ } }, index.h("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), index.h("span", { key: '67965996c9ffe70553875e00d3da0ae5b2b1d814', class: "button-inner" }, index.h("slot", { key: '5087988fe45a8fdf388ec44c395d0b745b207806' })), mode === 'md' && index.h("ion-ripple-effect", { key: 'b24858de0750bbc769b3183fac0077dfe817ba27' })), index.h("div", { key: '97b4359432acd1c9da0816360cd1df9472e183f7', part: "indicator", class: "segment-button-indicator segment-button-indicator-animated" }, index.h("div", { key: '0561738ea15b0986f4ed3d8276d5e6f2d13f7e51', part: "indicator-background", class: "segment-button-indicator-background" }))));
562
675
  }
563
676
  get el() { return index.getElement(this); }
564
677
  static get watchers() { return {
@@ -98,7 +98,7 @@ const SelectModal = class {
98
98
  } }, option.text))));
99
99
  }
100
100
  render() {
101
- return (index.h(index.Host, { key: '694a6d282f489b4997105f6e602777d4df90421a', class: ionicGlobal.getIonMode(this) }, index.h("ion-header", { key: '50bdd9144222231817bbb9adbb8f7f43985fc786' }, index.h("ion-toolbar", { key: '47c1a62e188c6b79e32fa42724fde91cf396bc8a' }, this.header !== undefined && index.h("ion-title", { key: 'db2a5480ac0f710842108de116ac8218be409fdb' }, this.header), index.h("ion-buttons", { key: '21ca4e72b6220b821c3bac890ec9a8aacab69c29', slot: "end" }, index.h("ion-button", { key: 'f08b33ff0b82c04c8205e0186235acdaf8085733', onClick: () => this.closeModal() }, "Close")))), index.h("ion-content", { key: 'c35d024bebda7250b44b2b0ff97c2778c815f1ca' }, index.h("ion-list", { key: '027ad22799a82b49c03bc9d9f2779cdbe896f218' }, this.multiple === true ? this.renderCheckboxOptions() : this.renderRadioOptions()))));
101
+ return (index.h(index.Host, { key: 'f4b92f4fc3d646f9a327e43a9622abaf69659c28', class: ionicGlobal.getIonMode(this) }, index.h("ion-header", { key: '11232ef496e7abd69e55cef988963a4869a7b01e' }, index.h("ion-toolbar", { key: 'e7c41878691a504d44c658db02807867df542588' }, this.header !== undefined && index.h("ion-title", { key: 'fcf9d33e0f3e0076ff14805de68848f9ef199cca' }, this.header), index.h("ion-buttons", { key: '748a967ae0ce68bc2fd018a6b9ebe0e4b810f6ac', slot: "end" }, index.h("ion-button", { key: 'f5e60791870b5085a31b7af70ed4bb3fb83eb185', onClick: () => this.closeModal() }, "Close")))), index.h("ion-content", { key: '159797957b6f788a9b393d91864c18db34481c68' }, index.h("ion-list", { key: '4124554fe8b2411637cbf02f08e50e0d8f804175' }, this.multiple === true ? this.renderCheckboxOptions() : this.renderRadioOptions()))));
102
102
  }
103
103
  get el() { return index.getElement(this); }
104
104
  };