@ionic/core 8.7.3-dev.11755551681.10d084fd → 8.7.3-dev.11755622775.1fc05815

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 (229) hide show
  1. package/components/ion-input.js +36 -5
  2. package/components/ion-item-divider.js +2 -2
  3. package/components/ion-item-group.js +1 -1
  4. package/components/ion-item-option.js +2 -2
  5. package/components/ion-item-options.js +1 -1
  6. package/components/ion-item-sliding.js +1 -1
  7. package/components/ion-loading.js +2 -2
  8. package/components/ion-menu-button.js +2 -2
  9. package/components/ion-menu-toggle.js +2 -2
  10. package/components/ion-menu.js +2 -2
  11. package/components/ion-nav-link.js +1 -1
  12. package/components/ion-nav.js +1 -1
  13. package/components/ion-note.js +2 -2
  14. package/components/ion-picker-legacy.js +2 -2
  15. package/components/ion-progress-bar.js +1 -1
  16. package/components/ion-range.js +3 -3
  17. package/components/ion-refresher-content.js +1 -1
  18. package/components/ion-refresher.js +1 -1
  19. package/components/ion-reorder-group.js +1 -1
  20. package/components/ion-reorder.js +1 -1
  21. package/components/ion-router-link.js +2 -2
  22. package/components/ion-router-outlet.js +1 -1
  23. package/components/ion-row.js +1 -1
  24. package/components/ion-searchbar.js +4 -4
  25. package/components/ion-segment-button.js +2 -2
  26. package/components/ion-segment-content.js +1 -1
  27. package/components/ion-segment-view.js +2 -2
  28. package/components/ion-segment.js +2 -2
  29. package/components/ion-select-option.js +1 -1
  30. package/components/ion-select.js +2 -2
  31. package/components/ion-skeleton-text.js +2 -2
  32. package/components/ion-split-pane.js +2 -2
  33. package/components/ion-tab-bar.js +2 -2
  34. package/components/ion-tab-button.js +2 -2
  35. package/components/ion-tab.js +2 -2
  36. package/components/ion-tabs.js +1 -1
  37. package/components/ion-text.js +2 -2
  38. package/components/ion-textarea.js +35 -4
  39. package/components/ion-thumbnail.js +1 -1
  40. package/components/ion-toast.js +2 -2
  41. package/components/ion-toggle.js +3 -3
  42. package/components/label.js +2 -2
  43. package/components/list-header.js +2 -2
  44. package/components/modal.js +4 -4
  45. package/components/picker-column-option.js +2 -2
  46. package/components/picker-column2.js +2 -2
  47. package/components/popover.js +2 -2
  48. package/components/radio-group.js +1 -1
  49. package/components/radio.js +3 -3
  50. package/components/ripple-effect.js +1 -1
  51. package/components/select-modal.js +1 -1
  52. package/components/select-popover.js +1 -1
  53. package/components/spinner.js +1 -1
  54. package/components/title.js +2 -2
  55. package/components/toolbar.js +2 -2
  56. package/dist/cjs/ion-app_8.cjs.entry.js +5 -5
  57. package/dist/cjs/ion-avatar_3.cjs.entry.js +1 -1
  58. package/dist/cjs/ion-col_3.cjs.entry.js +1 -1
  59. package/dist/cjs/ion-datetime_3.cjs.entry.js +4 -4
  60. package/dist/cjs/ion-input.cjs.entry.js +35 -5
  61. package/dist/cjs/ion-item-option_3.cjs.entry.js +4 -4
  62. package/dist/cjs/ion-item_8.cjs.entry.js +11 -11
  63. package/dist/cjs/ion-loading.cjs.entry.js +2 -2
  64. package/dist/cjs/ion-menu_3.cjs.entry.js +6 -6
  65. package/dist/cjs/ion-modal.cjs.entry.js +4 -4
  66. package/dist/cjs/ion-nav_2.cjs.entry.js +2 -2
  67. package/dist/cjs/ion-picker-column-option.cjs.entry.js +2 -2
  68. package/dist/cjs/ion-popover.cjs.entry.js +2 -2
  69. package/dist/cjs/ion-progress-bar.cjs.entry.js +1 -1
  70. package/dist/cjs/ion-radio_2.cjs.entry.js +4 -4
  71. package/dist/cjs/ion-range.cjs.entry.js +3 -3
  72. package/dist/cjs/ion-refresher_2.cjs.entry.js +2 -2
  73. package/dist/cjs/ion-reorder_2.cjs.entry.js +2 -2
  74. package/dist/cjs/ion-ripple-effect.cjs.entry.js +1 -1
  75. package/dist/cjs/ion-route_4.cjs.entry.js +2 -2
  76. package/dist/cjs/ion-searchbar.cjs.entry.js +4 -4
  77. package/dist/cjs/ion-segment-content.cjs.entry.js +1 -1
  78. package/dist/cjs/ion-segment-view.cjs.entry.js +2 -2
  79. package/dist/cjs/ion-segment_2.cjs.entry.js +4 -4
  80. package/dist/cjs/ion-select-modal.cjs.entry.js +1 -1
  81. package/dist/cjs/ion-select_3.cjs.entry.js +4 -4
  82. package/dist/cjs/ion-spinner.cjs.entry.js +1 -1
  83. package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
  84. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +4 -4
  85. package/dist/cjs/ion-tab_2.cjs.entry.js +3 -3
  86. package/dist/cjs/ion-text.cjs.entry.js +2 -2
  87. package/dist/cjs/ion-textarea.cjs.entry.js +34 -4
  88. package/dist/cjs/ion-toast.cjs.entry.js +2 -2
  89. package/dist/cjs/ion-toggle.cjs.entry.js +3 -3
  90. package/dist/cjs/ionic.cjs.js +1 -1
  91. package/dist/cjs/loader.cjs.js +1 -1
  92. package/dist/collection/components/input/input.js +37 -6
  93. package/dist/collection/components/item-divider/item-divider.js +2 -2
  94. package/dist/collection/components/item-group/item-group.js +1 -1
  95. package/dist/collection/components/item-option/item-option.js +2 -2
  96. package/dist/collection/components/item-options/item-options.js +1 -1
  97. package/dist/collection/components/item-sliding/item-sliding.js +1 -1
  98. package/dist/collection/components/label/label.js +2 -2
  99. package/dist/collection/components/list-header/list-header.js +2 -2
  100. package/dist/collection/components/loading/loading.js +2 -2
  101. package/dist/collection/components/menu/menu.js +2 -2
  102. package/dist/collection/components/menu-button/menu-button.js +2 -2
  103. package/dist/collection/components/menu-toggle/menu-toggle.js +2 -2
  104. package/dist/collection/components/modal/modal.js +4 -4
  105. package/dist/collection/components/nav/nav.js +1 -1
  106. package/dist/collection/components/nav-link/nav-link.js +1 -1
  107. package/dist/collection/components/note/note.js +2 -2
  108. package/dist/collection/components/picker-column-option/picker-column-option.js +2 -2
  109. package/dist/collection/components/picker-legacy/picker.js +2 -2
  110. package/dist/collection/components/picker-legacy-column/picker-column.js +2 -2
  111. package/dist/collection/components/popover/popover.js +2 -2
  112. package/dist/collection/components/progress-bar/progress-bar.js +1 -1
  113. package/dist/collection/components/radio/radio.js +3 -3
  114. package/dist/collection/components/radio-group/radio-group.js +1 -1
  115. package/dist/collection/components/range/range.js +3 -3
  116. package/dist/collection/components/refresher/refresher.js +1 -1
  117. package/dist/collection/components/refresher-content/refresher-content.js +1 -1
  118. package/dist/collection/components/reorder/reorder.js +1 -1
  119. package/dist/collection/components/reorder-group/reorder-group.js +1 -1
  120. package/dist/collection/components/ripple-effect/ripple-effect.js +1 -1
  121. package/dist/collection/components/router-link/router-link.js +2 -2
  122. package/dist/collection/components/router-outlet/router-outlet.js +1 -1
  123. package/dist/collection/components/row/row.js +1 -1
  124. package/dist/collection/components/searchbar/searchbar.js +4 -4
  125. package/dist/collection/components/segment/segment.js +2 -2
  126. package/dist/collection/components/segment-button/segment-button.js +2 -2
  127. package/dist/collection/components/segment-content/segment-content.js +1 -1
  128. package/dist/collection/components/segment-view/segment-view.js +2 -2
  129. package/dist/collection/components/select/select.js +2 -2
  130. package/dist/collection/components/select-modal/select-modal.js +1 -1
  131. package/dist/collection/components/select-option/select-option.js +1 -1
  132. package/dist/collection/components/select-popover/select-popover.js +1 -1
  133. package/dist/collection/components/skeleton-text/skeleton-text.js +2 -2
  134. package/dist/collection/components/spinner/spinner.js +1 -1
  135. package/dist/collection/components/split-pane/split-pane.js +2 -2
  136. package/dist/collection/components/tab/tab.js +2 -2
  137. package/dist/collection/components/tab-bar/tab-bar.js +2 -2
  138. package/dist/collection/components/tab-button/tab-button.js +2 -2
  139. package/dist/collection/components/tabs/tabs.js +1 -1
  140. package/dist/collection/components/text/text.js +2 -2
  141. package/dist/collection/components/textarea/textarea.js +36 -5
  142. package/dist/collection/components/thumbnail/thumbnail.js +1 -1
  143. package/dist/collection/components/title/title.js +2 -2
  144. package/dist/collection/components/toast/toast.js +2 -2
  145. package/dist/collection/components/toggle/toggle.js +3 -3
  146. package/dist/collection/components/toolbar/toolbar.js +2 -2
  147. package/dist/docs.json +1 -1
  148. package/dist/esm/ion-app_8.entry.js +5 -5
  149. package/dist/esm/ion-avatar_3.entry.js +1 -1
  150. package/dist/esm/ion-col_3.entry.js +1 -1
  151. package/dist/esm/ion-datetime_3.entry.js +4 -4
  152. package/dist/esm/ion-input.entry.js +35 -5
  153. package/dist/esm/ion-item-option_3.entry.js +4 -4
  154. package/dist/esm/ion-item_8.entry.js +11 -11
  155. package/dist/esm/ion-loading.entry.js +2 -2
  156. package/dist/esm/ion-menu_3.entry.js +6 -6
  157. package/dist/esm/ion-modal.entry.js +4 -4
  158. package/dist/esm/ion-nav_2.entry.js +2 -2
  159. package/dist/esm/ion-picker-column-option.entry.js +2 -2
  160. package/dist/esm/ion-popover.entry.js +2 -2
  161. package/dist/esm/ion-progress-bar.entry.js +1 -1
  162. package/dist/esm/ion-radio_2.entry.js +4 -4
  163. package/dist/esm/ion-range.entry.js +3 -3
  164. package/dist/esm/ion-refresher_2.entry.js +2 -2
  165. package/dist/esm/ion-reorder_2.entry.js +2 -2
  166. package/dist/esm/ion-ripple-effect.entry.js +1 -1
  167. package/dist/esm/ion-route_4.entry.js +2 -2
  168. package/dist/esm/ion-searchbar.entry.js +4 -4
  169. package/dist/esm/ion-segment-content.entry.js +1 -1
  170. package/dist/esm/ion-segment-view.entry.js +2 -2
  171. package/dist/esm/ion-segment_2.entry.js +4 -4
  172. package/dist/esm/ion-select-modal.entry.js +1 -1
  173. package/dist/esm/ion-select_3.entry.js +4 -4
  174. package/dist/esm/ion-spinner.entry.js +1 -1
  175. package/dist/esm/ion-split-pane.entry.js +2 -2
  176. package/dist/esm/ion-tab-bar_2.entry.js +4 -4
  177. package/dist/esm/ion-tab_2.entry.js +3 -3
  178. package/dist/esm/ion-text.entry.js +2 -2
  179. package/dist/esm/ion-textarea.entry.js +34 -4
  180. package/dist/esm/ion-toast.entry.js +2 -2
  181. package/dist/esm/ion-toggle.entry.js +3 -3
  182. package/dist/esm/ionic.js +1 -1
  183. package/dist/esm/loader.js +1 -1
  184. package/dist/ionic/ionic.esm.js +1 -1
  185. package/dist/ionic/p-0f396661.entry.js +4 -0
  186. package/dist/ionic/{p-c32b6c20.entry.js → p-1191a2d9.entry.js} +1 -1
  187. package/dist/ionic/{p-78aff731.entry.js → p-16116947.entry.js} +1 -1
  188. package/dist/ionic/p-187aaf4a.entry.js +4 -0
  189. package/dist/ionic/{p-12b99129.entry.js → p-1bbd0a23.entry.js} +1 -1
  190. package/dist/ionic/p-1e34d434.entry.js +4 -0
  191. package/dist/ionic/{p-8ca65589.entry.js → p-29032e49.entry.js} +1 -1
  192. package/dist/ionic/{p-2e967897.entry.js → p-3624b640.entry.js} +1 -1
  193. package/dist/ionic/{p-0e45320b.entry.js → p-40d56a51.entry.js} +1 -1
  194. package/dist/ionic/{p-1e8b1767.entry.js → p-4f2c5845.entry.js} +1 -1
  195. package/dist/ionic/{p-ee881603.entry.js → p-528af4e6.entry.js} +1 -1
  196. package/dist/ionic/{p-70e05fd1.entry.js → p-54dec9b1.entry.js} +1 -1
  197. package/dist/ionic/{p-165d1309.entry.js → p-6383afc2.entry.js} +1 -1
  198. package/dist/ionic/{p-f4e6e570.entry.js → p-7a53f04c.entry.js} +1 -1
  199. package/dist/ionic/{p-165d8e84.entry.js → p-7b12d853.entry.js} +1 -1
  200. package/dist/ionic/{p-9cf01220.entry.js → p-7bac2c5f.entry.js} +1 -1
  201. package/dist/ionic/{p-332e4eac.entry.js → p-8cdb4ff5.entry.js} +1 -1
  202. package/dist/ionic/p-8d96a0cd.entry.js +4 -0
  203. package/dist/ionic/{p-039c8f8e.entry.js → p-92e8f208.entry.js} +1 -1
  204. package/dist/ionic/{p-c7d2c21b.entry.js → p-982fe1c4.entry.js} +1 -1
  205. package/dist/ionic/{p-82ce0043.entry.js → p-ab33ef20.entry.js} +1 -1
  206. package/dist/ionic/{p-f267c7dc.entry.js → p-ac434970.entry.js} +1 -1
  207. package/dist/ionic/{p-f550f186.entry.js → p-c0d58c8e.entry.js} +1 -1
  208. package/dist/ionic/{p-1cfb0bc4.entry.js → p-c575e7ce.entry.js} +1 -1
  209. package/dist/ionic/{p-5420fd3e.entry.js → p-cde6d39b.entry.js} +1 -1
  210. package/dist/ionic/{p-4c79bd85.entry.js → p-d04d66fc.entry.js} +1 -1
  211. package/dist/ionic/p-d3df6032.entry.js +4 -0
  212. package/dist/ionic/{p-e8429777.entry.js → p-dbba38cf.entry.js} +1 -1
  213. package/dist/ionic/p-e6c3214c.entry.js +4 -0
  214. package/dist/ionic/{p-22351d1b.entry.js → p-e6c465ff.entry.js} +1 -1
  215. package/dist/ionic/{p-e1310192.entry.js → p-ec76fec4.entry.js} +1 -1
  216. package/dist/ionic/{p-f5da8541.entry.js → p-f456d176.entry.js} +1 -1
  217. package/dist/ionic/{p-f868d51c.entry.js → p-f7db572a.entry.js} +1 -1
  218. package/dist/ionic/{p-0c580145.entry.js → p-f9eb54ee.entry.js} +1 -1
  219. package/dist/types/components/input/input.d.ts +9 -0
  220. package/dist/types/components/textarea/textarea.d.ts +9 -0
  221. package/hydrate/index.js +137 -101
  222. package/hydrate/index.mjs +137 -101
  223. package/package.json +1 -1
  224. package/dist/ionic/p-1488b7cc.entry.js +0 -4
  225. package/dist/ionic/p-3364562a.entry.js +0 -4
  226. package/dist/ionic/p-7922ca30.entry.js +0 -4
  227. package/dist/ionic/p-8de104c4.entry.js +0 -4
  228. package/dist/ionic/p-c91aa324.entry.js +0 -4
  229. package/dist/ionic/p-dff5b0b6.entry.js +0 -4
@@ -335,9 +335,9 @@ export class PickerColumnCmp {
335
335
  render() {
336
336
  const col = this.col;
337
337
  const mode = getIonMode(this);
338
- return (h(Host, { key: '86125e95f18837dfd021db01777d72a1562d8ee3', class: Object.assign({ [mode]: true, 'picker-col': true, 'picker-opts-left': this.col.align === 'left', 'picker-opts-right': this.col.align === 'right' }, getClassMap(col.cssClass)), style: {
338
+ return (h(Host, { key: 'ed32d108dd94f0302fb453c31a3497ebae65ec37', class: Object.assign({ [mode]: true, 'picker-col': true, 'picker-opts-left': this.col.align === 'left', 'picker-opts-right': this.col.align === 'right' }, getClassMap(col.cssClass)), style: {
339
339
  'max-width': this.col.columnWidth,
340
- } }, col.prefix && (h("div", { key: 'b0f3d39e0bd128781066ffefb7a1e40d12a9e76d', class: "picker-prefix", style: { width: col.prefixWidth } }, col.prefix)), h("div", { key: '0b106ac4d56916eaaa7f09d1b68348b3754b7bba', class: "picker-opts", style: { maxWidth: col.optionsWidth }, ref: (el) => (this.optsEl = el) }, col.options.map((o, index) => (h("button", { "aria-label": o.ariaLabel, class: { 'picker-opt': true, 'picker-opt-disabled': !!o.disabled }, "opt-index": index }, o.text)))), col.suffix && (h("div", { key: '00ff2f9dbb4561787e5a5223327c6a2a33f8362e', class: "picker-suffix", style: { width: col.suffixWidth } }, col.suffix))));
340
+ } }, col.prefix && (h("div", { key: '9f0634890e66fd4ae74f826d1eea3431de121393', class: "picker-prefix", style: { width: col.prefixWidth } }, col.prefix)), h("div", { key: '337e996e5be91af16446085fe22436f213b771eb', class: "picker-opts", style: { maxWidth: col.optionsWidth }, ref: (el) => (this.optsEl = el) }, col.options.map((o, index) => (h("button", { "aria-label": o.ariaLabel, class: { 'picker-opt': true, 'picker-opt-disabled': !!o.disabled }, "opt-index": index }, o.text)))), col.suffix && (h("div", { key: 'd69a132599d78d9e5107f12228978cfce4e43098', class: "picker-suffix", style: { width: col.suffixWidth } }, col.suffix))));
341
341
  }
342
342
  static get is() { return "ion-picker-legacy-column"; }
343
343
  static get originalStyleUrls() {
@@ -433,9 +433,9 @@ export class Popover {
433
433
  const { onLifecycle, parentPopover, dismissOnSelect, side, arrow, htmlAttributes, focusTrap } = this;
434
434
  const desktop = isPlatform('desktop');
435
435
  const enableArrow = arrow && !parentPopover;
436
- return (h(Host, Object.assign({ key: 'f977b26ee1607d83bc78418e319da90d1691b49f', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
436
+ return (h(Host, Object.assign({ key: '16866c02534968c982cf4730d2936d03a5107c8b', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
437
437
  zIndex: `${20000 + this.overlayIndex}`,
438
- }, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'popover-translucent': this.translucent, 'overlay-hidden': true, 'popover-desktop': desktop, [`popover-side-${side}`]: true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false, 'popover-nested': !!parentPopover }), onIonPopoverDidPresent: onLifecycle, onIonPopoverWillPresent: onLifecycle, onIonPopoverWillDismiss: onLifecycle, onIonPopoverDidDismiss: onLifecycle, onIonBackdropTap: this.onBackdropTap }), !parentPopover && h("ion-backdrop", { key: '3cfc18823bca1fd43f9f7da876a69a5d8b1eac4e', tappable: this.backdropDismiss, visible: this.showBackdrop, part: "backdrop" }), h("div", { key: '060bc23b567e92bd4740397d3d2c1994cebd2859', class: "popover-wrapper ion-overlay-wrapper", onClick: dismissOnSelect ? () => this.dismiss() : undefined }, enableArrow && h("div", { key: 'cbb21b281a69713dd4233ea27256d696173a634b', class: "popover-arrow", part: "arrow" }), h("div", { key: 'a28dc0557aac79410d56828746d1b77aaa9d636c', class: "popover-content", part: "content" }, h("slot", { key: 'cd29600cb42be78005e635672ee2ec1e251116cc' })))));
438
+ }, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'popover-translucent': this.translucent, 'overlay-hidden': true, 'popover-desktop': desktop, [`popover-side-${side}`]: true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false, 'popover-nested': !!parentPopover }), onIonPopoverDidPresent: onLifecycle, onIonPopoverWillPresent: onLifecycle, onIonPopoverWillDismiss: onLifecycle, onIonPopoverDidDismiss: onLifecycle, onIonBackdropTap: this.onBackdropTap }), !parentPopover && h("ion-backdrop", { key: '0df258601a4d30df3c27aa8234a7d5e056c3ecbb', tappable: this.backdropDismiss, visible: this.showBackdrop, part: "backdrop" }), h("div", { key: 'f94e80ed996b957b5cd09b826472b4f60e8fcc78', class: "popover-wrapper ion-overlay-wrapper", onClick: dismissOnSelect ? () => this.dismiss() : undefined }, enableArrow && h("div", { key: '185ce22f6386e8444a9cc7b8818dbfc16c463c99', class: "popover-arrow", part: "arrow" }), h("div", { key: '206202b299404e110de5397b229678cca18568d3', class: "popover-content", part: "content" }, h("slot", { key: 'ee543a0b92d6e35a837c0a0e4617c7b0fc4ad0b0' })))));
439
439
  }
440
440
  static get is() { return "ion-popover"; }
441
441
  static get encapsulation() { return "shadow"; }
@@ -43,7 +43,7 @@ export class ProgressBar {
43
43
  const mode = getIonMode(this);
44
44
  // If the progress is displayed as a solid bar.
45
45
  const progressSolid = buffer === 1;
46
- return (h(Host, { key: 'c859e48f3d24a458239e36d925e5dc003ed07c6b', role: "progressbar", "aria-valuenow": type === 'determinate' ? value : null, "aria-valuemin": "0", "aria-valuemax": "1", class: createColorClasses(color, {
46
+ return (h(Host, { key: 'dc69693b5d2dcb2b6e4296d7cb85bc27507f3fa6', role: "progressbar", "aria-valuenow": type === 'determinate' ? value : null, "aria-valuemin": "0", "aria-valuemax": "1", class: createColorClasses(color, {
47
47
  [mode]: true,
48
48
  [`progress-bar-${type}`]: true,
49
49
  'progress-paused': paused,
@@ -136,7 +136,7 @@ export class Radio {
136
136
  const { checked, disabled, color, el, justify, labelPlacement, hasLabel, buttonTabindex, alignment } = this;
137
137
  const mode = getIonMode(this);
138
138
  const inItem = hostContext('ion-item', el);
139
- return (h(Host, { key: 'af5dc59ed528150872e907ed1036e3e2decba939', onFocus: this.onFocus, onBlur: this.onBlur, onClick: this.onClick, class: createColorClasses(color, {
139
+ return (h(Host, { key: '3353b28172b7f837d4b38964169b5b5f4ba02788', onFocus: this.onFocus, onBlur: this.onBlur, onClick: this.onClick, class: createColorClasses(color, {
140
140
  [mode]: true,
141
141
  'in-item': inItem,
142
142
  'radio-checked': checked,
@@ -147,10 +147,10 @@ export class Radio {
147
147
  // Focus and active styling should not apply when the radio is in an item
148
148
  'ion-activatable': !inItem,
149
149
  'ion-focusable': !inItem,
150
- }), role: "radio", "aria-checked": checked ? 'true' : 'false', "aria-disabled": disabled ? 'true' : null, tabindex: buttonTabindex }, h("label", { key: '1312aba3259a87fe23a6911cdfa477e309469c8b', class: "radio-wrapper" }, h("div", { key: 'b342aa27e240a300836d2a135658d346b95daf09', class: {
150
+ }), role: "radio", "aria-checked": checked ? 'true' : 'false', "aria-disabled": disabled ? 'true' : null, tabindex: buttonTabindex }, h("label", { key: '418a0a48366ff900e97da123abf665bbbda87fb7', class: "radio-wrapper" }, h("div", { key: '6e5acdd8c8f5d0ad26632a65396afef8094153d1', class: {
151
151
  'label-text-wrapper': true,
152
152
  'label-text-wrapper-hidden': !hasLabel,
153
- }, part: "label" }, h("slot", { key: '0a4613d29aa783d1882cf889377f7e4fd4fea51d' })), h("div", { key: '191faea79dc4cd8befc4b873f5bd9f5af8ca2acc', class: "native-wrapper" }, this.renderRadioControl()))));
153
+ }, part: "label" }, h("slot", { key: '10b157162cd283d624153c747679609cf0bbf11e' })), h("div", { key: '4c45cca95cb105cd6df1025a26e3c045272184a0', class: "native-wrapper" }, this.renderRadioControl()))));
154
154
  }
155
155
  static get is() { return "ion-radio"; }
156
156
  static get encapsulation() { return "shadow"; }
@@ -187,7 +187,7 @@ export class RadioGroup {
187
187
  const { label, labelId, el, name, value } = this;
188
188
  const mode = getIonMode(this);
189
189
  renderHiddenInput(true, el, name, value, false);
190
- return (h(Host, { key: '81b8ebc96b2f383c36717f290d2959cc921ad6e8', role: "radiogroup", "aria-labelledby": label ? labelId : null, "aria-describedby": this.getHintTextID(), "aria-invalid": this.getHintTextID() === this.errorTextId, onClick: this.onClick, class: mode }, this.renderHintText(), h("slot", { key: '77f7b5a2040b65222c9c2178c8e87d58b347ef7c' })));
190
+ return (h(Host, { key: '81b8ebc96b2f383c36717f290d2959cc921ad6e8', role: "radiogroup", "aria-labelledby": label ? labelId : null, "aria-describedby": this.getHintTextID(), "aria-invalid": this.getHintTextID() === this.errorTextId, onClick: this.onClick, class: mode }, this.renderHintText(), h("div", { key: '45b09efc10776b889a8f372cba80d25a3fc849da', class: "radio-group-wrapper" }, h("slot", { key: '58714934542c2fdd7396de160364f3f06b32e8f8' }))));
191
191
  }
192
192
  static get is() { return "ion-radio-group"; }
193
193
  static get originalStyleUrls() {
@@ -681,7 +681,7 @@ export class Range {
681
681
  const needsEndAdjustment = inItem && !hasEndContent;
682
682
  const mode = getIonMode(this);
683
683
  renderHiddenInput(true, el, this.name, JSON.stringify(this.getValue()), disabled);
684
- return (h(Host, { key: 'affcac4709096a48a5b4c1864b209b6352f6b078', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: createColorClasses(this.color, {
684
+ return (h(Host, { key: 'ef7b01f80515bcaeb2983934ad7f10a6bd5d13ec', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: createColorClasses(this.color, {
685
685
  [mode]: true,
686
686
  'in-item': inItem,
687
687
  'range-disabled': disabled,
@@ -690,10 +690,10 @@ export class Range {
690
690
  [`range-label-placement-${labelPlacement}`]: true,
691
691
  'range-item-start-adjustment': needsStartAdjustment,
692
692
  'range-item-end-adjustment': needsEndAdjustment,
693
- }) }, h("label", { key: 'c7cf95fa831d10b17c137995d0a9e0cf84006a76', class: "range-wrapper", id: "range-label" }, h("div", { key: '5b8479c7939ae0f94a042c3aafd64316e4577d30', class: {
693
+ }) }, h("label", { key: 'fd8aa90a9d52be9da024b907e68858dae424449d', class: "range-wrapper", id: "range-label" }, h("div", { key: '2172b4f329c22017dd23475c80aac25ba6e753eb', class: {
694
694
  'label-text-wrapper': true,
695
695
  'label-text-wrapper-hidden': !hasLabel,
696
- }, part: "label" }, label !== undefined ? h("div", { class: "label-text" }, label) : h("slot", { name: "label" })), h("div", { key: '3c275d822b29a8008e044722e8b6bdabd3ecfad7', class: "native-wrapper" }, h("slot", { key: '03c849d0aa708914984ad57ca292bc5fc66ecad5', name: "start" }), this.renderRangeSlider(), h("slot", { key: '10ca7b8152cac00b45d8fa98ad91410f59fd176a', name: "end" })))));
696
+ }, part: "label" }, label !== undefined ? h("div", { class: "label-text" }, label) : h("slot", { name: "label" })), h("div", { key: '3c318bf2ea0576646d4c010bf44573fd0f483186', class: "native-wrapper" }, h("slot", { key: '6586fd6fc96271e73f8a86c202d1913ad1a26f96', name: "start" }), this.renderRangeSlider(), h("slot", { key: '74ac0bc2d2cb66ef708bb729f88b6ecbc1b2155d', name: "end" })))));
697
697
  }
698
698
  static get is() { return "ion-range"; }
699
699
  static get encapsulation() { return "shadow"; }
@@ -689,7 +689,7 @@ export class Refresher {
689
689
  }
690
690
  render() {
691
691
  const mode = getIonMode(this);
692
- return (h(Host, { key: '06d61cc53260ce146dd6906cc96597e9baaa17cf', slot: "fixed", class: {
692
+ return (h(Host, { key: '2d1bd880877b698604542ab2d602d38b9504d975', slot: "fixed", class: {
693
693
  [mode]: true,
694
694
  // Used internally for styling
695
695
  [`refresher-${mode}`]: true,
@@ -48,7 +48,7 @@ export class RefresherContent {
48
48
  const pullingIcon = this.pullingIcon;
49
49
  const hasSpinner = pullingIcon != null && SPINNERS[pullingIcon] !== undefined;
50
50
  const mode = getIonMode(this);
51
- return (h(Host, { key: '4add42b9fdfded359d1b054d04c2c6ff48e028c8', class: mode }, h("div", { key: '45d4e4e0adfed7f96dd1849767aa2cde947de044', class: "refresher-pulling" }, this.pullingIcon && hasSpinner && (h("div", { key: '6bd6c8ef5bf6e10699eec3bd8646431bfe1077a0', class: "refresher-pulling-icon" }, h("div", { key: '852d20414da53352c8e58bc627e0fda38eff97cb', class: "spinner-arrow-container" }, h("ion-spinner", { key: '0dde3578a80cc4b77a07c4d1db1af80c7eb10c27', name: this.pullingIcon, paused: true }), mode === 'md' && this.pullingIcon === 'circular' && (h("div", { key: 'c71dbfcf416a19c30fed38f722ebf0358c2181dd', class: "arrow-container" }, h("ion-icon", { key: 'fa7c2cf624e7a9c41964e66cabc88c594da6d1fd', icon: caretBackSharp, "aria-hidden": "true" })))))), this.pullingIcon && !hasSpinner && (h("div", { key: '3dd68c9968b421c379d1c4349ba619ee0a189c6d', class: "refresher-pulling-icon" }, h("ion-icon", { key: 'f83bceceae4fa8245f91939fb6db589a595e975b', icon: this.pullingIcon, lazy: false, "aria-hidden": "true" }))), this.pullingText !== undefined && this.renderPullingText()), h("div", { key: '98e22ceb0f7883e871f815f6199f5cb313e2e086', class: "refresher-refreshing" }, this.refreshingSpinner && (h("div", { key: 'faabe8a9b61c02a00994ef978bb82b9ba4537214', class: "refresher-refreshing-icon" }, h("ion-spinner", { key: '029a0c073ee1a07f01211e12ba2abc985cf21ed7', name: this.refreshingSpinner }))), this.refreshingText !== undefined && this.renderRefreshingText())));
51
+ return (h(Host, { key: 'e235f8a9a84070ece2e2066ced234a64663bfa1d', class: mode }, h("div", { key: '9121691818ddaa35801a5f442e144ac27686cf19', class: "refresher-pulling" }, this.pullingIcon && hasSpinner && (h("div", { key: 'c8d65d740f1575041bd3b752c789077927397fe4', class: "refresher-pulling-icon" }, h("div", { key: '309dd904977eaa788b09ea95b7fa4996a73bec5b', class: "spinner-arrow-container" }, h("ion-spinner", { key: 'a2a1480f67775d56ca7822e76be1e9f983bca2f9', name: this.pullingIcon, paused: true }), mode === 'md' && this.pullingIcon === 'circular' && (h("div", { key: '811d7e06d324bf4b6a18a31427a43e5177f3ae3a', class: "arrow-container" }, h("ion-icon", { key: '86cc48e2e8dc054ff6ff1299094da35b524be63d', icon: caretBackSharp, "aria-hidden": "true" })))))), this.pullingIcon && !hasSpinner && (h("div", { key: '464ae097dbc95c18a2dd7dfd03f8489153dab719', class: "refresher-pulling-icon" }, h("ion-icon", { key: 'ed6875978b9035add562caa743a68353743d978f', icon: this.pullingIcon, lazy: false, "aria-hidden": "true" }))), this.pullingText !== undefined && this.renderPullingText()), h("div", { key: 'aff891924e44354543fec484e5cde1ca92e69904', class: "refresher-refreshing" }, this.refreshingSpinner && (h("div", { key: '842d7ac4ff10a1058775493d62f31cbdcd34f7a0', class: "refresher-refreshing-icon" }, h("ion-spinner", { key: '8c3e6195501e7e78d5cde1e3ad1fef90fd4a953f', name: this.refreshingSpinner }))), this.refreshingText !== undefined && this.renderRefreshingText())));
52
52
  }
53
53
  static get is() { return "ion-refresher-content"; }
54
54
  static get properties() {
@@ -20,7 +20,7 @@ export class Reorder {
20
20
  render() {
21
21
  const mode = getIonMode(this);
22
22
  const reorderIcon = mode === 'ios' ? reorderThreeOutline : reorderTwoSharp;
23
- return (h(Host, { key: 'b869db61ca6393cf1476f2111a66b387b567c6d1', class: mode }, h("slot", { key: 'a78edd1776835282b8b5c841377018f36c83296c' }, h("ion-icon", { key: '7fb067c47bbb9a7258e5063f028282cc097d0f94', icon: reorderIcon, lazy: false, class: "reorder-icon", part: "icon", "aria-hidden": "true" }))));
23
+ return (h(Host, { key: 'e6807bb349725682e99e791ac65e729a360d64e8', class: mode }, h("slot", { key: '1c691cdbffa6427ba08dc12184c69559ed5d5506' }, h("ion-icon", { key: '8b4150302cdca475379582b2251737b5e74079b1', icon: reorderIcon, lazy: false, class: "reorder-icon", part: "icon", "aria-hidden": "true" }))));
24
24
  }
25
25
  static get is() { return "ion-reorder"; }
26
26
  static get encapsulation() { return "shadow"; }
@@ -253,7 +253,7 @@ export class ReorderGroup {
253
253
  }
254
254
  render() {
255
255
  const mode = getIonMode(this);
256
- return (h(Host, { key: '9527bbdedaab63d31f562c874a7332ea60c4b47b', class: {
256
+ return (h(Host, { key: 'b9641f3061d67fbfe68317b901ec33267046e073', class: {
257
257
  [mode]: true,
258
258
  'reorder-enabled': !this.disabled,
259
259
  'reorder-list-active': this.state !== 0 /* ReorderGroupState.Idle */,
@@ -68,7 +68,7 @@ export class RippleEffect {
68
68
  }
69
69
  render() {
70
70
  const mode = getIonMode(this);
71
- return (h(Host, { key: '3b59cbb44741569a7350f9638b4392add673b6f1', role: "presentation", class: {
71
+ return (h(Host, { key: 'ae9d3b1ed6773a9b9bb2267129f7e9af23b6c9fc', role: "presentation", class: {
72
72
  [mode]: true,
73
73
  unbounded: this.unbounded,
74
74
  } }));
@@ -22,10 +22,10 @@ export class RouterLink {
22
22
  rel: this.rel,
23
23
  target: this.target,
24
24
  };
25
- return (h(Host, { key: '8372835161d507c7b821b7536c55f912eb6ce704', onClick: this.onClick, class: createColorClasses(this.color, {
25
+ return (h(Host, { key: 'd7f2affcde45c5fbb6cb46cd1c30008ee92a68c5', onClick: this.onClick, class: createColorClasses(this.color, {
26
26
  [mode]: true,
27
27
  'ion-activatable': true,
28
- }) }, h("a", Object.assign({ key: '315966e14a17760f3f64197e8315200039787897' }, attrs), h("slot", { key: '95fc1697b884225e85e647dddcaa8f4af8b9a979' }))));
28
+ }) }, h("a", Object.assign({ key: 'babafae85ca5c6429958d383feff0493ff8cf33e' }, attrs), h("slot", { key: '50314e9555bbf6dffa0c50c3f763009dee59b10b' }))));
29
29
  }
30
30
  static get is() { return "ion-router-link"; }
31
31
  static get encapsulation() { return "shadow"; }
@@ -181,7 +181,7 @@ export class RouterOutlet {
181
181
  return true;
182
182
  }
183
183
  render() {
184
- return h("slot", { key: '386c41745b61daba161cf75063da97fe29ba36cb' });
184
+ return h("slot", { key: '84b50f1155b0d780dff802ee13223287259fd525' });
185
185
  }
186
186
  static get is() { return "ion-router-outlet"; }
187
187
  static get encapsulation() { return "shadow"; }
@@ -5,7 +5,7 @@ import { Host, h } from "@stencil/core";
5
5
  import { getIonMode } from "../../global/ionic-global";
6
6
  export class Row {
7
7
  render() {
8
- return (h(Host, { key: '8ba906a8cbea060a79ed658c9bf34906f0c11d38', class: getIonMode(this) }, h("slot", { key: 'd1009176f45b588fa52c7d9eb336f3c6d3214bb8' })));
8
+ return (h(Host, { key: '65592a79621bd8f75f9566db3e8c05a4b8fc6048', class: getIonMode(this) }, h("slot", { key: '56f09784db7a0299c9ce76dfcede185b295251ff' })));
9
9
  }
10
10
  static get is() { return "ion-row"; }
11
11
  static get encapsulation() { return "shadow"; }
@@ -427,8 +427,8 @@ export class Searchbar {
427
427
  const clearIcon = this.clearIcon || (mode === 'ios' ? closeCircle : closeSharp);
428
428
  const searchIcon = this.searchIcon || (mode === 'ios' ? searchOutline : searchSharp);
429
429
  const shouldShowCancelButton = this.shouldShowCancelButton();
430
- const cancelButton = this.showCancelButton !== 'never' && (h("button", { key: 'bf574336a561a5bf66c771fb606a9b19adbecb68', "aria-label": cancelButtonText, "aria-hidden": shouldShowCancelButton ? undefined : 'true', type: "button", tabIndex: mode === 'ios' && !shouldShowCancelButton ? -1 : undefined, onMouseDown: this.onCancelSearchbar, onTouchStart: this.onCancelSearchbar, class: "searchbar-cancel-button" }, h("div", { key: '747ad4368bda5044198259d5bc8f7be9e472e5af', "aria-hidden": "true" }, mode === 'md' ? (h("ion-icon", { "aria-hidden": "true", mode: mode, icon: this.cancelButtonIcon, lazy: false })) : (cancelButtonText))));
431
- return (h(Host, { key: 'bcc5b33a2859903ba11bfc5c611c6a2aaa71d06b', role: "search", "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses(this.color, {
430
+ const cancelButton = this.showCancelButton !== 'never' && (h("button", { key: '19e18775856db87daeb4b9e3d7bca0461915a0df', "aria-label": cancelButtonText, "aria-hidden": shouldShowCancelButton ? undefined : 'true', type: "button", tabIndex: mode === 'ios' && !shouldShowCancelButton ? -1 : undefined, onMouseDown: this.onCancelSearchbar, onTouchStart: this.onCancelSearchbar, class: "searchbar-cancel-button" }, h("div", { key: 'b3bbdcc033f3bd3441d619e4a252cef0dad4d07e', "aria-hidden": "true" }, mode === 'md' ? (h("ion-icon", { "aria-hidden": "true", mode: mode, icon: this.cancelButtonIcon, lazy: false })) : (cancelButtonText))));
431
+ return (h(Host, { key: '074aa60e051bfb3225e87d44bbb6346c59c73574', role: "search", "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses(this.color, {
432
432
  [mode]: true,
433
433
  'searchbar-animated': animated,
434
434
  'searchbar-disabled': this.disabled,
@@ -438,14 +438,14 @@ export class Searchbar {
438
438
  'searchbar-has-focus': this.focused,
439
439
  'searchbar-should-show-clear': this.shouldShowClearButton(),
440
440
  'searchbar-should-show-cancel': this.shouldShowCancelButton(),
441
- }) }, h("div", { key: 'ac0dbf5ddd9c4eb6d714f45c62c44ba3d0bf034d', class: "searchbar-input-container" }, h("input", Object.assign({ key: '4b9fdac1b0d5a7a68bf61a6beb00f166434d3e84', "aria-label": "search text", disabled: this.disabled, ref: (el) => (this.nativeInput = el), class: "searchbar-input", inputMode: this.inputmode, enterKeyHint: this.enterkeyhint, name: this.name, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, minLength: this.minlength, maxLength: this.maxlength, placeholder: this.placeholder, type: this.type, value: this.getValue(), autoCapitalize: autocapitalize === 'default' ? undefined : autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, spellcheck: this.spellcheck }, this.inheritedAttributes)), mode === 'md' && cancelButton, h("ion-icon", { key: '32a889c48b3960560a3873061b4ac5a8a5ce532f', "aria-hidden": "true", mode: mode, icon: searchIcon, lazy: false, class: "searchbar-search-icon" }), h("button", { key: '71222df691ef0b95008e619f755224d069ee9388', "aria-label": "reset", type: "button", "no-blur": true, class: "searchbar-clear-button", onPointerDown: (ev) => {
441
+ }) }, h("div", { key: '54f58a79fe36e85d9295157303f1be89c98bbdaf', class: "searchbar-input-container" }, h("input", Object.assign({ key: 'f991a37fcf54d26b7ad10d89084764e03d97b9de', "aria-label": "search text", disabled: this.disabled, ref: (el) => (this.nativeInput = el), class: "searchbar-input", inputMode: this.inputmode, enterKeyHint: this.enterkeyhint, name: this.name, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, minLength: this.minlength, maxLength: this.maxlength, placeholder: this.placeholder, type: this.type, value: this.getValue(), autoCapitalize: autocapitalize === 'default' ? undefined : autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, spellcheck: this.spellcheck }, this.inheritedAttributes)), mode === 'md' && cancelButton, h("ion-icon", { key: '8b44dd90a3292c5cf872ef16a8520675f5673494', "aria-hidden": "true", mode: mode, icon: searchIcon, lazy: false, class: "searchbar-search-icon" }), h("button", { key: '79d9cfed8f01268044f82811a35d323a12dca749', "aria-label": "reset", type: "button", "no-blur": true, class: "searchbar-clear-button", onPointerDown: (ev) => {
442
442
  /**
443
443
  * This prevents mobile browsers from
444
444
  * blurring the input when the clear
445
445
  * button is activated.
446
446
  */
447
447
  ev.preventDefault();
448
- }, onClick: () => this.onClearInput(true) }, h("ion-icon", { key: 'f1c8c0bd8fbb655085875731d3ece387dbe2967e', "aria-hidden": "true", mode: mode, icon: clearIcon, lazy: false, class: "searchbar-clear-icon" }))), mode === 'ios' && cancelButton));
448
+ }, onClick: () => this.onClearInput(true) }, h("ion-icon", { key: 'aa3b9fa8a61f853236783ac7bcd0b113ea65ece2', "aria-hidden": "true", mode: mode, icon: clearIcon, lazy: false, class: "searchbar-clear-icon" }))), mode === 'ios' && cancelButton));
449
449
  }
450
450
  static get is() { return "ion-searchbar"; }
451
451
  static get encapsulation() { return "scoped"; }
@@ -543,14 +543,14 @@ export class Segment {
543
543
  }
544
544
  render() {
545
545
  const mode = getIonMode(this);
546
- return (h(Host, { key: '725cc37b25c539fa5e3ae8d90530ae33ededc3de', role: "tablist", onClick: this.onClick, class: createColorClasses(this.color, {
546
+ return (h(Host, { key: 'e67ed512739cf2cfe657b0c44ebc3dfb1e9fbb79', role: "tablist", onClick: this.onClick, class: createColorClasses(this.color, {
547
547
  [mode]: true,
548
548
  'in-toolbar': hostContext('ion-toolbar', this.el),
549
549
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
550
550
  'segment-activated': this.activated,
551
551
  'segment-disabled': this.disabled,
552
552
  'segment-scrollable': this.scrollable,
553
- }) }, h("slot", { key: 'c51cf7ea50325866a9367d214e12bc3754870335', onSlotchange: this.onSlottedItemsChange })));
553
+ }) }, h("slot", { key: '804d8acfcb9abfeeee38244b015fbc5c36330b9e', onSlotchange: this.onSlottedItemsChange })));
554
554
  }
555
555
  static get is() { return "ion-segment"; }
556
556
  static get encapsulation() { return "shadow"; }
@@ -111,7 +111,7 @@ export class SegmentButton {
111
111
  const { checked, type, disabled, hasIcon, hasLabel, layout, segmentEl } = this;
112
112
  const mode = getIonMode(this);
113
113
  const hasSegmentColor = () => (segmentEl === null || segmentEl === void 0 ? void 0 : segmentEl.color) !== undefined;
114
- return (h(Host, { key: 'f69e2a24198a7c57543dbe66902da039a6569c64', class: {
114
+ return (h(Host, { key: '26cb7ee90455bcaa6416125802d7e5729fa05b5b', class: {
115
115
  [mode]: true,
116
116
  'in-toolbar': hostContext('ion-toolbar', this.el),
117
117
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
@@ -127,7 +127,7 @@ export class SegmentButton {
127
127
  'ion-activatable': true,
128
128
  'ion-activatable-instant': true,
129
129
  'ion-focusable': true,
130
- } }, h("button", Object.assign({ key: '0a6fea3a374074af19f7ece0ba3a7cf1e269ab6d', "aria-selected": checked ? 'true' : 'false', role: "tab", ref: (el) => (this.nativeEl = el), type: type, class: "button-native", part: "native", disabled: disabled }, this.inheritedAttributes), h("span", { key: '991018a38c59a6f3d76b2e952e5569c874d2c13e', class: "button-inner" }, h("slot", { key: '23c547c80108025027b913c7fcbec189286627a3' })), mode === 'md' && h("ion-ripple-effect", { key: '7faa9d06ab6aa7346d16b0b6808979759a79650c' })), h("div", { key: '0d61badf2c227dc38e20185b2b2bb590a5efa434', part: "indicator", class: "segment-button-indicator segment-button-indicator-animated" }, h("div", { key: 'a84035752b78491c344179d1e61d109fb4bd1cf1', part: "indicator-background", class: "segment-button-indicator-background" }))));
130
+ } }, h("button", Object.assign({ key: '75add37f11c107d1e2cfdb154e08004e9579e863', "aria-selected": checked ? 'true' : 'false', role: "tab", ref: (el) => (this.nativeEl = el), type: type, class: "button-native", part: "native", disabled: disabled }, this.inheritedAttributes), h("span", { key: '8e720d2a3e304903685bf09d226a64e944d78a22', class: "button-inner" }, h("slot", { key: 'c8e7b3ebf8f03042a1001155643b585283c73c65' })), mode === 'md' && h("ion-ripple-effect", { key: '3586ac317b8d82c92b0ccfbfae42f8778612321b' })), h("div", { key: '9cf93957da9e8dc333c8b05327bb903385b1c5f4', part: "indicator", class: "segment-button-indicator segment-button-indicator-animated" }, h("div", { key: 'd3b6f0b3860ec6896b46703f64ed1cc8c75612e3', part: "indicator-background", class: "segment-button-indicator-background" }))));
131
131
  }
132
132
  static get is() { return "ion-segment-button"; }
133
133
  static get encapsulation() { return "shadow"; }
@@ -4,7 +4,7 @@
4
4
  import { Host, h } from "@stencil/core";
5
5
  export class SegmentContent {
6
6
  render() {
7
- return (h(Host, { key: '665f41a854621f898eaf7ba9a49e77cc9326501e' }, h("slot", { key: '635aa57fbf6167dcd36fe8dc5dfc1c313637ac04' })));
7
+ return (h(Host, { key: 'db6876f2aee7afa1ea8bc147337670faa68fae1c' }, h("slot", { key: 'bc05714a973a5655668679033f5809a1da6db8cc' })));
8
8
  }
9
9
  static get is() { return "ion-segment-content"; }
10
10
  static get encapsulation() { return "shadow"; }
@@ -96,10 +96,10 @@ export class SegmentView {
96
96
  }
97
97
  render() {
98
98
  const { disabled, isManualScroll } = this;
99
- return (h(Host, { key: '3776707134f85b81028f9668e77974c21e3a5491', class: {
99
+ return (h(Host, { key: '754a374e89fd4dd682eb00497e717242a6f83357', class: {
100
100
  'segment-view-disabled': disabled,
101
101
  'segment-view-scroll-disabled': isManualScroll === false,
102
- } }, h("slot", { key: 'e67efc16cbfa0c13aa9d81e9f91b61162782c0ea' })));
102
+ } }, h("slot", { key: '77366044eb61f0d4bba305bd6f0ef8fd1e25194b' })));
103
103
  }
104
104
  static get is() { return "ion-segment-view"; }
105
105
  static get encapsulation() { return "shadow"; }
@@ -782,7 +782,7 @@ export class Select {
782
782
  * TODO(FW-5592): Remove hasStartEndSlots condition
783
783
  */
784
784
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || isExpanded || hasStartEndSlots));
785
- return (h(Host, { key: 'c1e6967b3ccc9631bfceeadd074a6e87b4e96dbe', onClick: this.onClick, class: createColorClasses(this.color, {
785
+ return (h(Host, { key: 'c03fb65e8fc9f9aab295e07b282377d57d910519', onClick: this.onClick, class: createColorClasses(this.color, {
786
786
  [mode]: true,
787
787
  'in-item': inItem,
788
788
  'in-item-color': hostContext('ion-item.ion-color', el),
@@ -800,7 +800,7 @@ export class Select {
800
800
  [`select-justify-${justify}`]: justifyEnabled,
801
801
  [`select-shape-${shape}`]: shape !== undefined,
802
802
  [`select-label-placement-${labelPlacement}`]: true,
803
- }) }, h("label", { key: 'b890417073d5a622869549173f9cdac695d51079', class: "select-wrapper", id: "select-label", onClick: this.onLabelClick }, this.renderLabelContainer(), h("div", { key: '43deb671a8570f9b407617dd3153f8ed37cf77b9', class: "select-wrapper-inner" }, h("slot", { key: '91b64e1926ea44912e85eec336992c36ca5a6fff', name: "start" }), h("div", { key: '4d3b26a304b18c68576302440ba7810a91324b86', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), h("slot", { key: '64d839f2e862efffd32e01204e567c58f59c20cb', name: "end" }), !hasFloatingOrStackedLabel && this.renderSelectIcon()), hasFloatingOrStackedLabel && this.renderSelectIcon(), shouldRenderHighlight && h("div", { key: 'edffaee197d2f9ee8268cd2ecac6d6ce4ed28bfb', class: "select-highlight" })), this.renderBottomContent()));
803
+ }) }, h("label", { key: '0d0c8ec55269adcac625f2899a547f4e7f3e3741', class: "select-wrapper", id: "select-label", onClick: this.onLabelClick }, this.renderLabelContainer(), h("div", { key: 'f6dfc93c0e23cbe75a2947abde67d842db2dad78', class: "select-wrapper-inner" }, h("slot", { key: '957bfadf9f101f519091419a362d3abdc2be66f6', name: "start" }), h("div", { key: 'ca349202a484e7f2e884533fd330f0b136754f7d', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), h("slot", { key: 'f0e62a6533ff1c8f62bd2d27f60b23385c4fa9ed', name: "end" }), !hasFloatingOrStackedLabel && this.renderSelectIcon()), hasFloatingOrStackedLabel && this.renderSelectIcon(), shouldRenderHighlight && h("div", { key: 'fb840d46bafafb09898ebeebbe8c181906a3d8a2', class: "select-highlight" })), this.renderBottomContent()));
804
804
  }
805
805
  static get is() { return "ion-select"; }
806
806
  static get encapsulation() { return "shadow"; }
@@ -75,7 +75,7 @@ export class SelectModal {
75
75
  } }, option.text))));
76
76
  }
77
77
  render() {
78
- return (h(Host, { key: '5bffdb106e6f628dae2e2aeb9ee8008b5c547b3a', class: getIonMode(this) }, h("ion-header", { key: '4de1c33b0504372f8a0a26123e4e086080ee1ecb' }, h("ion-toolbar", { key: '5d55a67d1db4352c260e9e0457d5dac6110b6598' }, this.header !== undefined && h("ion-title", { key: '4f07fe8a9af8c9bd0852af2a9b95517d16356e50' }, this.header), h("ion-buttons", { key: 'ca676a34f7cd3dd6b465b0d803434c2e2c8536c5', slot: "end" }, h("ion-button", { key: '801ed63a357c7c9d354668851db65e5c1b0e1abe', onClick: () => this.closeModal() }, "Close")))), h("ion-content", { key: 'f3c239ec9d84b8ed7413ea9db6efa18e29aca285' }, h("ion-list", { key: '40c157e9abe477171a39ae7e6e1cd4ed08735cb4' }, this.multiple === true ? this.renderCheckboxOptions() : this.renderRadioOptions()))));
78
+ return (h(Host, { key: 'b6c0dec240b2e41985b15fdf4e5a6d3a145c1567', class: getIonMode(this) }, h("ion-header", { key: 'cd177e85ee0f62a60a3a708342d6ab6eb19a44dc' }, h("ion-toolbar", { key: 'aee8222a5a4daa540ad202b2e4cac1ef93d9558c' }, this.header !== undefined && h("ion-title", { key: '5f8fecc764d97bf840d3d4cfddeeccd118ab4436' }, this.header), h("ion-buttons", { key: '919033950d7c2b0101f96a9c9698219de9f568ea', slot: "end" }, h("ion-button", { key: '34b571cab6dced4bde555a077a21e91800829931', onClick: () => this.closeModal() }, "Close")))), h("ion-content", { key: '3c9153d26ba7a5a03d3b20fcd628d0c3031661a7' }, h("ion-list", { key: 'e00b222c071bc97c82ad1bba4db95a8a5c43ed6d' }, this.multiple === true ? this.renderCheckboxOptions() : this.renderRadioOptions()))));
79
79
  }
80
80
  static get is() { return "ion-select-modal"; }
81
81
  static get encapsulation() { return "scoped"; }
@@ -12,7 +12,7 @@ export class SelectOption {
12
12
  this.disabled = false;
13
13
  }
14
14
  render() {
15
- return h(Host, { key: '824730b6c1e4f15b716e91b05840e890af5f1577', role: "option", id: this.inputId, class: getIonMode(this) });
15
+ return h(Host, { key: '3a70eea9fa03a9acba582180761d18347c72acee', role: "option", id: this.inputId, class: getIonMode(this) });
16
16
  }
17
17
  static get is() { return "ion-select-option"; }
18
18
  static get encapsulation() { return "shadow"; }
@@ -101,7 +101,7 @@ export class SelectPopover {
101
101
  render() {
102
102
  const { header, message, options, subHeader } = this;
103
103
  const hasSubHeaderOrMessage = subHeader !== undefined || message !== undefined;
104
- return (h(Host, { key: '0c9845a40d3fc392b0a7d64e2a6ed27d94bb7634', class: getIonMode(this) }, h("ion-list", { key: '84a30f6661b0f8c00e6fa199658ed2adbcf27358' }, header !== undefined && h("ion-list-header", { key: '13f5f56bbfbc06751fa516291a2da72629b60ece' }, header), hasSubHeaderOrMessage && (h("ion-item", { key: '3d39d18e720e798bbde334e79e6832091c7dfb81' }, h("ion-label", { key: 'd3051b0d140120b44bf5e79572f6f287e7cfb03a', class: "ion-text-wrap" }, subHeader !== undefined && h("h3", { key: 'b16805956f3316f8ec703c123b76f717488e8637' }, subHeader), message !== undefined && h("p", { key: '2215ac4ab4146a14e75a79192e319a8016286b5f' }, message)))), this.renderOptions(options))));
104
+ return (h(Host, { key: 'ab931b49b59283825bd2afa3f7f995b0e6e05bef', class: getIonMode(this) }, h("ion-list", { key: '3bd12b67832607596b912a73d5b3ae9b954b244d' }, header !== undefined && h("ion-list-header", { key: '97da930246edf7423a039c030d40e3ff7a5148a3' }, header), hasSubHeaderOrMessage && (h("ion-item", { key: 'c579df6ea8fac07bb0c59d34c69b149656863224' }, h("ion-label", { key: 'af699c5f465710ccb13b8cf8e7be66f0e8acfad1', class: "ion-text-wrap" }, subHeader !== undefined && h("h3", { key: 'df9a936d42064b134e843c7229f314a2a3ec7e80' }, subHeader), message !== undefined && h("p", { key: '9c3ddad378df00f106afa94e9928cf68c17124dd' }, message)))), this.renderOptions(options))));
105
105
  }
106
106
  static get is() { return "ion-select-popover"; }
107
107
  static get encapsulation() { return "scoped"; }
@@ -28,11 +28,11 @@ export class SkeletonText {
28
28
  const animated = this.animated && config.getBoolean('animated', true);
29
29
  const inMedia = hostContext('ion-avatar', this.el) || hostContext('ion-thumbnail', this.el);
30
30
  const mode = getIonMode(this);
31
- return (h(Host, { key: 'cb8da9aba121811b9a4ffdae60ed88105897cb3c', class: {
31
+ return (h(Host, { key: 'd86ef7392507cdbf48dfd3a71f02d7a83eda4aae', class: {
32
32
  [mode]: true,
33
33
  'skeleton-text-animated': animated,
34
34
  'in-media': inMedia,
35
- } }, h("span", { key: '5379deee3c76d46d615be0cba14b4f60129ffa25' }, "\u00A0")));
35
+ } }, h("span", { key: '8e8b5a232a6396d2bba691b05f9de4da44b2965c' }, "\u00A0")));
36
36
  }
37
37
  static get is() { return "ion-skeleton-text"; }
38
38
  static get encapsulation() { return "shadow"; }
@@ -39,7 +39,7 @@ export class Spinner {
39
39
  svgs.push(buildLine(spinner, duration, i, spinner.lines));
40
40
  }
41
41
  }
42
- return (h(Host, { key: 'dd1954e557fa14b943e761474e29e4316ba53938', class: createColorClasses(self.color, {
42
+ return (h(Host, { key: 'a33d6421fcc885995fbc7a348516525f68ca496c', class: createColorClasses(self.color, {
43
43
  [mode]: true,
44
44
  [`spinner-${spinnerName}`]: true,
45
45
  'spinner-paused': self.paused || config.getBoolean('_testing'),
@@ -126,12 +126,12 @@ export class SplitPane {
126
126
  }
127
127
  render() {
128
128
  const mode = getIonMode(this);
129
- return (h(Host, { key: '05c88c009fbe2e223fd261760a2b49da1653ff62', class: {
129
+ return (h(Host, { key: 'd5e30df12f1f1f855da4c66f98076b9dce762c59', class: {
130
130
  [mode]: true,
131
131
  // Used internally for styling
132
132
  [`split-pane-${mode}`]: true,
133
133
  'split-pane-visible': this.visible,
134
- } }, h("slot", { key: 'b35865082661253c4468520d79234fa5dab5bd35' })));
134
+ } }, h("slot", { key: '3e30d7cf3bc1cf434e16876a0cb2a36377b8e00f' })));
135
135
  }
136
136
  static get is() { return "ion-split-pane"; }
137
137
  static get encapsulation() { return "shadow"; }
@@ -47,10 +47,10 @@ export class Tab {
47
47
  }
48
48
  render() {
49
49
  const { tab, active, component } = this;
50
- return (h(Host, { key: 'fbd837bad7a0632336d46a597ace23673b153e48', role: "tabpanel", "aria-hidden": !active ? 'true' : null, "aria-labelledby": `tab-button-${tab}`, class: {
50
+ return (h(Host, { key: 'dbad8fe9f1566277d14647626308eaf1601ab01f', role: "tabpanel", "aria-hidden": !active ? 'true' : null, "aria-labelledby": `tab-button-${tab}`, class: {
51
51
  'ion-page': component === undefined,
52
52
  'tab-hidden': !active,
53
- } }, h("slot", { key: '35c218169fda826c9c1337558e0278d0c7f5f26a' })));
53
+ } }, h("slot", { key: '3be64f4e7161f6769aaf8e4dcb5293fcaa09af45' })));
54
54
  }
55
55
  static get is() { return "ion-tab"; }
56
56
  static get encapsulation() { return "shadow"; }
@@ -54,11 +54,11 @@ export class TabBar {
54
54
  const { color, translucent, keyboardVisible } = this;
55
55
  const mode = getIonMode(this);
56
56
  const shouldHide = keyboardVisible && this.el.getAttribute('slot') !== 'top';
57
- return (h(Host, { key: '7384afd3f2d364c8a052ea5a27131c51ce7ef94b', role: "tablist", "aria-hidden": shouldHide ? 'true' : null, class: createColorClasses(color, {
57
+ return (h(Host, { key: '275dc6c1b30f6928ce9039b2f445208bb3500ddc', role: "tablist", "aria-hidden": shouldHide ? 'true' : null, class: createColorClasses(color, {
58
58
  [mode]: true,
59
59
  'tab-bar-translucent': translucent,
60
60
  'tab-bar-hidden': shouldHide,
61
- }) }, h("slot", { key: '4330de4be572cb2c88a37c88124fe66b8da98cc5' })));
61
+ }) }, h("slot", { key: 'ceac20128d75c6a4a0f445f2df8deb8cc71fc4da' })));
62
62
  }
63
63
  static get is() { return "ion-tab-bar"; }
64
64
  static get encapsulation() { return "shadow"; }
@@ -70,7 +70,7 @@ export class TabButton {
70
70
  rel,
71
71
  target,
72
72
  };
73
- return (h(Host, { key: '638b93ef40701ec3aefb89b1579eb91aaf6d4f8a', onClick: this.onClick, onKeyup: this.onKeyUp, id: tab !== undefined ? `tab-button-${tab}` : null, class: {
73
+ return (h(Host, { key: 'ce9d29ced0c781d6b2fa62cd5feb801c11fc42e8', onClick: this.onClick, onKeyup: this.onKeyUp, id: tab !== undefined ? `tab-button-${tab}` : null, class: {
74
74
  [mode]: true,
75
75
  'tab-selected': selected,
76
76
  'tab-disabled': disabled,
@@ -82,7 +82,7 @@ export class TabButton {
82
82
  'ion-activatable': true,
83
83
  'ion-selectable': true,
84
84
  'ion-focusable': true,
85
- } }, h("a", Object.assign({ key: 'c053d32fbcdad8d5e4a409956b47164d7a080c6b' }, attrs, { class: "button-native", part: "native", role: "tab", "aria-selected": selected ? 'true' : null, "aria-disabled": disabled ? 'true' : null, tabindex: disabled ? '-1' : undefined }, inheritedAttributes), h("span", { key: 'b3b460d33ec978a46b069442280d31b23bc8e794', class: "button-inner" }, h("slot", { key: '87b3928475c941263261101b8fae27c6370d4671' })), mode === 'md' && h("ion-ripple-effect", { key: '6532e5b4546aebe4becaebe1c93ce0e6aedaffe7', type: "unbounded" }))));
85
+ } }, h("a", Object.assign({ key: '01cb0ed2e77c5c1a8abd48da1bb07ac1b305d0b6' }, attrs, { class: "button-native", part: "native", role: "tab", "aria-selected": selected ? 'true' : null, "aria-disabled": disabled ? 'true' : null, tabindex: disabled ? '-1' : undefined }, inheritedAttributes), h("span", { key: 'd0240c05f42217cfb186b86ff8a0c9cd70b9c8df', class: "button-inner" }, h("slot", { key: '0a20b84925037dbaa8bb4a495b813d3f7c2e58ac' })), mode === 'md' && h("ion-ripple-effect", { key: '4c92c27178cdac89d69cffef8d2c39c3644914e8', type: "unbounded" }))));
86
86
  }
87
87
  static get is() { return "ion-tab-button"; }
88
88
  static get encapsulation() { return "shadow"; }
@@ -163,7 +163,7 @@ export class Tabs {
163
163
  return Array.from(this.el.querySelectorAll('ion-tab'));
164
164
  }
165
165
  render() {
166
- return (h(Host, { key: '97d3548ef12a33b783b4ea090ba19ca5055ef6d7', onIonTabButtonClick: this.onTabClicked }, h("slot", { key: '13fc2090ff2d030803caec332f30b2dd41352644', name: "top" }), h("div", { key: '5f5c12c96efca85cba50442e7633b8a95f699918', class: "tabs-inner" }, h("slot", { key: '92e702217cb2bab6133928adae8a6a516796ca1a' })), h("slot", { key: '57a08296c8d77d62e4832a4eca431fea8ace3616', name: "bottom" })));
166
+ return (h(Host, { key: '6dd1d17cc5a7aff4b910303006b4478080ca97af', onIonTabButtonClick: this.onTabClicked }, h("slot", { key: 'db54a692d1a825498a116f090eb305f7cceceb5a', name: "top" }), h("div", { key: 'e1b7d49ba7032e9071de2029695254e2a8303be9', class: "tabs-inner" }, h("slot", { key: '4c3b58d5292c8c834e7532c51de0861068943d79' })), h("slot", { key: 'dd59c0b9b217dfbfb0fccdbc6896b593278549cc', name: "bottom" })));
167
167
  }
168
168
  static get is() { return "ion-tabs"; }
169
169
  static get encapsulation() { return "shadow"; }
@@ -10,9 +10,9 @@ import { getIonMode } from "../../global/ionic-global";
10
10
  export class Text {
11
11
  render() {
12
12
  const mode = getIonMode(this);
13
- return (h(Host, { key: 'bfaa49d35f43b8036725ae8a322c716fc6e43bdf', class: createColorClasses(this.color, {
13
+ return (h(Host, { key: '361035eae7b92dc109794348d39bad2f596eb6be', class: createColorClasses(this.color, {
14
14
  [mode]: true,
15
- }) }, h("slot", { key: 'c04880cd1935b42cbe60f58fd523b4d8a96072dc' })));
15
+ }) }, h("slot", { key: 'c7b8835cf485ba9ecd73298f0529276ce1ea0852' })));
16
16
  }
17
17
  static get is() { return "ion-text"; }
18
18
  static get encapsulation() { return "shadow"; }
@@ -37,6 +37,10 @@ export class Textarea {
37
37
  * is applied in both cases.
38
38
  */
39
39
  this.hasFocus = false;
40
+ /**
41
+ * Track validation state for proper aria-live announcements
42
+ */
43
+ this.isInvalid = false;
40
44
  /**
41
45
  * Indicates whether and how the text value should be automatically capitalized as it is entered/edited by the user.
42
46
  * Available options: `"off"`, `"none"`, `"on"`, `"sentences"`, `"words"`, `"characters"`.
@@ -183,10 +187,31 @@ export class Textarea {
183
187
  this.el.click();
184
188
  }
185
189
  }
190
+ /**
191
+ * Checks if the textarea is in an invalid state based on validation classes
192
+ */
193
+ checkValidationState() {
194
+ return this.el.classList.contains('ion-touched') && this.el.classList.contains('ion-invalid');
195
+ }
186
196
  connectedCallback() {
187
197
  const { el } = this;
188
198
  this.slotMutationController = createSlotMutationController(el, ['label', 'start', 'end'], () => forceUpdate(this));
189
199
  this.notchController = createNotchController(el, () => this.notchSpacerEl, () => this.labelSlot);
200
+ // Watch for class changes to update validation state
201
+ if (Build.isBrowser && typeof MutationObserver !== 'undefined') {
202
+ this.validationObserver = new MutationObserver(() => {
203
+ const newIsInvalid = this.checkValidationState();
204
+ if (this.isInvalid !== newIsInvalid) {
205
+ this.isInvalid = newIsInvalid;
206
+ }
207
+ });
208
+ this.validationObserver.observe(el, {
209
+ attributes: true,
210
+ attributeFilter: ['class'],
211
+ });
212
+ }
213
+ // Always set initial state
214
+ this.isInvalid = this.checkValidationState();
190
215
  this.debounceChanged();
191
216
  if (Build.isBrowser) {
192
217
  document.dispatchEvent(new CustomEvent('ionInputDidLoad', {
@@ -208,6 +233,11 @@ export class Textarea {
208
233
  this.notchController.destroy();
209
234
  this.notchController = undefined;
210
235
  }
236
+ // Clean up validation observer to prevent memory leaks
237
+ if (this.validationObserver) {
238
+ this.validationObserver.disconnect();
239
+ this.validationObserver = undefined;
240
+ }
211
241
  }
212
242
  componentWillLoad() {
213
243
  this.inheritedAttributes = Object.assign(Object.assign({}, inheritAriaAttributes(this.el)), inheritAttributes(this.el, ['data-form-type', 'title', 'tabindex', 'dir']));
@@ -385,8 +415,8 @@ export class Textarea {
385
415
  ];
386
416
  }
387
417
  getHintTextID() {
388
- const { el, helperText, errorText, helperTextId, errorTextId } = this;
389
- if (el.classList.contains('ion-touched') && el.classList.contains('ion-invalid') && errorText) {
418
+ const { isInvalid, helperText, errorText, helperTextId, errorTextId } = this;
419
+ if (isInvalid && errorText) {
390
420
  return errorTextId;
391
421
  }
392
422
  if (helperText) {
@@ -445,7 +475,7 @@ export class Textarea {
445
475
  * TODO(FW-5592): Remove hasStartEndSlots condition
446
476
  */
447
477
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
448
- return (h(Host, { key: '9fd36834a8ed8496212e00e5cc684c7fa6e8f6d5', class: createColorClasses(this.color, {
478
+ return (h(Host, { key: 'de258335fde7fa934cf3bd58c469525440457468', class: createColorClasses(this.color, {
449
479
  [mode]: true,
450
480
  'has-value': hasValue,
451
481
  'has-focus': hasFocus,
@@ -454,7 +484,7 @@ export class Textarea {
454
484
  [`textarea-shape-${shape}`]: shape !== undefined,
455
485
  [`textarea-label-placement-${labelPlacement}`]: true,
456
486
  'textarea-disabled': disabled,
457
- }) }, h("label", { key: '60dd748594cb8e710bd6be8779c5bbafc7bb129c', class: "textarea-wrapper", htmlFor: inputId, onClick: this.onLabelClick }, this.renderLabelContainer(), h("div", { key: 'dc11a0e37279c142cde124e3868144024a5439ed', class: "textarea-wrapper-inner" }, h("div", { key: '49aee693a69bf17cf9d05a903d5e176f5ef7c50d', class: "start-slot-wrapper" }, h("slot", { key: '7307aad65706b8191dac46b7e61e662af8976e97', name: "start" })), h("div", { key: '81fb54829e4dd759d812fe98e24893071fdfb92a', class: "native-wrapper", ref: (el) => (this.textareaWrapper = el) }, h("textarea", Object.assign({ key: 'fe51fca195f8e2ec6607ba6d92bce72e0a94e2cd', 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, "aria-describedby": this.getHintTextID(), "aria-invalid": this.getHintTextID() === this.errorTextId }, this.inheritedAttributes), value)), h("div", { key: '87fd163075ea795ddb75b8d6bbf2f89ddceca4dc', class: "end-slot-wrapper" }, h("slot", { key: 'b09b52993d2471e7e75773a8f36c49995959ce7a', name: "end" }))), shouldRenderHighlight && h("div", { key: 'acad88bca506ebf44d3bedab29f6d53ff8f92981', class: "textarea-highlight" })), this.renderBottomContent()));
487
+ }) }, h("label", { key: '79fc87122871d45316b1c5fd0a467bf85351e804', class: "textarea-wrapper", htmlFor: inputId, onClick: this.onLabelClick }, this.renderLabelContainer(), h("div", { key: '2375888a47557b41ea3b3bf8eae1fd3f2a4032bd', class: "textarea-wrapper-inner" }, h("div", { key: 'c5af683527a870bd85256b6de8a7d216283403dd', class: "start-slot-wrapper" }, h("slot", { key: 'd972e5784403c5cc6ed067ae578ce23ff8303e1e', name: "start" })), h("div", { key: '1092067609d912a76a8679767611e4ca3e071c6f', class: "native-wrapper", ref: (el) => (this.textareaWrapper = el) }, h("textarea", Object.assign({ key: 'cd23a4bad4d5b460830340009d24d0618f14fd73', 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, "aria-describedby": this.getHintTextID(), "aria-invalid": this.isInvalid ? 'true' : undefined }, this.inheritedAttributes), value)), h("div", { key: 'c91a5456f4490ef8699f2e44b4a6c64f6084f5fd', class: "end-slot-wrapper" }, h("slot", { key: 'b71ba7ba0d74091e81784432dcffa832b66f3f25', name: "end" }))), shouldRenderHighlight && h("div", { key: '757c3287e1cea5ee851227407685a437f8408c54', class: "textarea-highlight" })), this.renderBottomContent()));
458
488
  }
459
489
  static get is() { return "ion-textarea"; }
460
490
  static get encapsulation() { return "scoped"; }
@@ -1025,7 +1055,8 @@ export class Textarea {
1025
1055
  }
1026
1056
  static get states() {
1027
1057
  return {
1028
- "hasFocus": {}
1058
+ "hasFocus": {},
1059
+ "isInvalid": {}
1029
1060
  };
1030
1061
  }
1031
1062
  static get events() {
@@ -5,7 +5,7 @@ import { Host, h } from "@stencil/core";
5
5
  import { getIonMode } from "../../global/ionic-global";
6
6
  export class Thumbnail {
7
7
  render() {
8
- return (h(Host, { key: 'b250e01664238f1dca8f9757b15bc3d5d9387ffa', class: getIonMode(this) }, h("slot", { key: '72cb568bccabc983c5186a7596ef6c6d4ebf5ad9' })));
8
+ return (h(Host, { key: '70ada828e8cf541ab3b47f94b7e56ce34114ef88', class: getIonMode(this) }, h("slot", { key: 'c43e105669d2bae123619b616f3af8ca2f722d61' })));
9
9
  }
10
10
  static get is() { return "ion-thumbnail"; }
11
11
  static get encapsulation() { return "shadow"; }