@ionic/core 8.7.4-dev.11756220757.185b8cbf → 8.7.4-dev.11756465095.1387c832

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 (929) hide show
  1. package/components/action-sheet.js +13 -9
  2. package/components/alert.js +14 -11
  3. package/components/animation.js +1 -1
  4. package/components/backdrop.js +9 -6
  5. package/components/button.js +41 -10
  6. package/components/buttons.js +11 -8
  7. package/components/capacitor.js +1 -1
  8. package/components/caret-down.js +6 -0
  9. package/components/caret-left.js +6 -0
  10. package/components/caret-right.js +6 -0
  11. package/components/checkbox.js +31 -12
  12. package/components/content.js +14 -12
  13. package/components/data.js +5 -5
  14. package/components/focus-visible.js +23 -1
  15. package/components/framework-delegate.js +3 -1
  16. package/components/header.js +28 -16
  17. package/components/helpers.js +42 -3
  18. package/components/index5.js +8 -8
  19. package/components/index6.js +1 -1
  20. package/components/index7.js +111 -150
  21. package/components/index8.js +150 -111
  22. package/components/input-shims.js +2 -2
  23. package/components/input.utils.js +1 -1
  24. package/components/ion-accordion-group.js +23 -5
  25. package/components/ion-accordion.js +32 -21
  26. package/components/ion-app.js +12 -77
  27. package/components/ion-avatar.js +58 -5
  28. package/components/ion-back-button.js +27 -19
  29. package/components/ion-badge.js +73 -9
  30. package/components/ion-breadcrumb.js +43 -10
  31. package/components/ion-breadcrumbs.js +8 -5
  32. package/components/ion-card-content.js +10 -7
  33. package/components/ion-card-header.js +9 -6
  34. package/components/ion-card-subtitle.js +8 -5
  35. package/components/ion-card-title.js +8 -5
  36. package/components/ion-card.js +21 -9
  37. package/components/ion-chip.js +53 -8
  38. package/components/ion-col.js +5 -5
  39. package/components/ion-datetime-button.js +8 -5
  40. package/components/ion-datetime.js +100 -22
  41. package/components/ion-divider.d.ts +11 -0
  42. package/components/ion-divider.js +70 -0
  43. package/components/ion-fab-button.js +31 -15
  44. package/components/ion-fab-list.js +5 -5
  45. package/components/ion-fab.js +6 -6
  46. package/components/ion-footer.js +18 -13
  47. package/components/ion-grid.js +5 -5
  48. package/components/ion-img.js +5 -2
  49. package/components/ion-infinite-scroll-content.js +11 -8
  50. package/components/ion-infinite-scroll.js +78 -6
  51. package/components/ion-input-otp.js +9 -6
  52. package/components/ion-input-password-toggle.js +51 -13
  53. package/components/ion-input.js +125 -88
  54. package/components/ion-item-divider.js +8 -5
  55. package/components/ion-item-group.js +8 -5
  56. package/components/ion-item-option.js +36 -9
  57. package/components/ion-item-options.js +10 -7
  58. package/components/ion-item-sliding.js +5 -5
  59. package/components/ion-loading.js +12 -9
  60. package/components/ion-menu-button.js +26 -10
  61. package/components/ion-menu-toggle.js +5 -5
  62. package/components/ion-menu.js +13 -8
  63. package/components/ion-nav-link.js +1 -1
  64. package/components/ion-nav.js +7 -5
  65. package/components/ion-note.js +8 -5
  66. package/components/ion-picker-legacy.js +7 -7
  67. package/components/ion-progress-bar.js +25 -7
  68. package/components/ion-range.js +12 -9
  69. package/components/ion-refresher-content.js +23 -8
  70. package/components/ion-refresher.js +10 -7
  71. package/components/ion-reorder-group.js +5 -5
  72. package/components/ion-reorder.js +30 -5
  73. package/components/ion-router-link.js +6 -6
  74. package/components/ion-router-outlet.js +4 -4
  75. package/components/ion-row.js +5 -2
  76. package/components/ion-searchbar.js +137 -23
  77. package/components/ion-segment-button.js +10 -7
  78. package/components/ion-segment-content.js +1 -1
  79. package/components/ion-segment-view.js +5 -2
  80. package/components/ion-segment.js +10 -7
  81. package/components/ion-select-option.js +5 -2
  82. package/components/ion-select.js +117 -33
  83. package/components/ion-skeleton-text.js +5 -5
  84. package/components/ion-split-pane.js +11 -8
  85. package/components/ion-tab-bar.js +39 -9
  86. package/components/ion-tab-button.js +25 -7
  87. package/components/ion-tab.js +2 -2
  88. package/components/ion-tabs.js +2 -2
  89. package/components/ion-text.js +5 -5
  90. package/components/ion-textarea.js +57 -71
  91. package/components/ion-thumbnail.js +5 -2
  92. package/components/ion-toast.js +37 -12
  93. package/components/ion-toggle.js +74 -17
  94. package/components/ionic-global.js +349 -15
  95. package/components/ios.transition.js +1 -0
  96. package/components/item.js +39 -14
  97. package/components/keyboard-controller.js +4 -2
  98. package/components/label.js +8 -5
  99. package/components/list-header.js +10 -7
  100. package/components/list.js +27 -6
  101. package/components/list2.js +6 -0
  102. package/components/modal.js +48 -20
  103. package/components/notch-controller.js +1 -1
  104. package/components/overlays.js +20 -112
  105. package/components/picker-column-option.js +10 -7
  106. package/components/picker-column.js +7 -44
  107. package/components/picker-column2.js +4 -4
  108. package/components/picker.js +7 -4
  109. package/components/popover.js +12 -9
  110. package/components/radio-group.js +10 -5
  111. package/components/radio.js +11 -8
  112. package/components/ripple-effect.js +15 -7
  113. package/components/select-modal.js +4 -4
  114. package/components/select-popover.js +8 -2
  115. package/components/spinner.js +31 -8
  116. package/components/status-tap.js +1 -1
  117. package/components/title.js +10 -7
  118. package/components/toolbar.js +153 -9
  119. package/components/x.js +6 -0
  120. package/css/core.css +1 -1
  121. package/css/core.css.map +1 -1
  122. package/css/display.css +1 -1
  123. package/css/display.css.map +1 -1
  124. package/css/flex-utils.css +1 -1
  125. package/css/flex-utils.css.map +1 -1
  126. package/css/float-elements.css.map +1 -1
  127. package/css/global.bundle.css.map +1 -1
  128. package/css/ionic/bundle.ionic.css +1 -0
  129. package/css/ionic/bundle.ionic.css.map +1 -0
  130. package/css/ionic/core.ionic.css +1 -0
  131. package/css/ionic/core.ionic.css.map +1 -0
  132. package/css/ionic/global.bundle.ionic.css +1 -0
  133. package/css/ionic/global.bundle.ionic.css.map +1 -0
  134. package/css/ionic/ionic-swiper.ionic.css +1 -0
  135. package/css/ionic/ionic-swiper.ionic.css.map +1 -0
  136. package/css/ionic/link.ionic.css +1 -0
  137. package/css/ionic/link.ionic.css.map +1 -0
  138. package/css/ionic/structure.ionic.css +1 -0
  139. package/css/ionic/structure.ionic.css.map +1 -0
  140. package/css/ionic/typography.ionic.css +1 -0
  141. package/css/ionic/typography.ionic.css.map +1 -0
  142. package/css/ionic/utils.bundle.ionic.css +1 -0
  143. package/css/ionic/utils.bundle.ionic.css.map +1 -0
  144. package/css/ionic-swiper.css +1 -1
  145. package/css/ionic-swiper.css.map +1 -1
  146. package/css/ionic.bundle.css +1 -1
  147. package/css/ionic.bundle.css.map +1 -1
  148. package/css/normalize.css.map +1 -1
  149. package/css/padding.css.map +1 -1
  150. package/css/palettes/dark.always.css.map +1 -1
  151. package/css/palettes/dark.class.css.map +1 -1
  152. package/css/palettes/dark.system.css.map +1 -1
  153. package/css/palettes/high-contrast-dark.always.css.map +1 -1
  154. package/css/palettes/high-contrast-dark.class.css.map +1 -1
  155. package/css/palettes/high-contrast-dark.system.css.map +1 -1
  156. package/css/palettes/high-contrast.always.css.map +1 -1
  157. package/css/palettes/high-contrast.class.css.map +1 -1
  158. package/css/palettes/high-contrast.system.css.map +1 -1
  159. package/css/structure.css.map +1 -1
  160. package/css/text-alignment.css.map +1 -1
  161. package/css/text-transformation.css.map +1 -1
  162. package/css/typography.css.map +1 -1
  163. package/css/utils.bundle.css +1 -1
  164. package/css/utils.bundle.css.map +1 -1
  165. package/dist/cjs/{animation-ZJ1lAkZD.js → animation-BXRtNUgm.js} +2 -2
  166. package/dist/cjs/{app-globals-77ZfuXXk.js → app-globals-x_8DXqdl.js} +1 -1
  167. package/dist/cjs/{button-active-BzZenWWH.js → button-active-BcEaeF5Y.js} +1 -1
  168. package/dist/cjs/{capacitor-DmA66EwP.js → capacitor-CVcQYFDK.js} +3 -3
  169. package/dist/cjs/caret-down-vtVgfXIs.js +8 -0
  170. package/dist/cjs/caret-left-CxZXLRv5.js +8 -0
  171. package/dist/cjs/caret-right-CRCgv98E.js +8 -0
  172. package/dist/cjs/{data-DW6ofvJ8.js → data-Crxp8jrQ.js} +5 -5
  173. package/dist/cjs/{focus-visible-CCvKiLh3.js → focus-visible-BIj-I3-C.js} +24 -0
  174. package/dist/cjs/{framework-delegate-WkyjrnCx.js → framework-delegate-D94PxJL6.js} +4 -2
  175. package/dist/cjs/{haptic-ClPPQ_PS.js → haptic-r0GBrUII.js} +1 -1
  176. package/dist/cjs/{helpers-DgwmcYAu.js → helpers-CYFB2_7O.js} +41 -2
  177. package/dist/cjs/{index-D24wggHR.js → index-DgkpUJvi.js} +15 -15
  178. package/dist/cjs/{index-BzEyuIww.js → index-DkmXWuZ7.js} +3 -3
  179. package/dist/cjs/{index-Cc5PNMyz.js → index-DsE1tD-q.js} +1 -1
  180. package/dist/cjs/{index-bGpoPC4u.js → index-MoROIJ3n.js} +8 -7
  181. package/dist/cjs/index.cjs.js +10 -11
  182. package/dist/cjs/{input-shims-CLI_OrmU.js → input-shims-temHXqvt.js} +17 -16
  183. package/dist/cjs/{input.utils-B2hZ5tX6.js → input.utils-8JmSrYpP.js} +5 -5
  184. package/dist/cjs/ion-accordion_2.cjs.entry.js +55 -26
  185. package/dist/cjs/ion-action-sheet.cjs.entry.js +21 -18
  186. package/dist/cjs/ion-alert.cjs.entry.js +22 -20
  187. package/dist/cjs/ion-app_8.cjs.entry.js +243 -144
  188. package/dist/cjs/ion-avatar_3.cjs.entry.js +123 -11
  189. package/dist/cjs/ion-back-button.cjs.entry.js +28 -19
  190. package/dist/cjs/ion-backdrop.cjs.entry.js +9 -6
  191. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +51 -15
  192. package/dist/cjs/ion-button_2.cjs.entry.js +43 -11
  193. package/dist/cjs/ion-card_5.cjs.entry.js +53 -29
  194. package/dist/cjs/ion-checkbox.cjs.entry.js +31 -13
  195. package/dist/cjs/ion-chip.cjs.entry.js +48 -7
  196. package/dist/cjs/ion-col_3.cjs.entry.js +13 -10
  197. package/dist/cjs/ion-datetime-button.cjs.entry.js +11 -7
  198. package/dist/cjs/ion-datetime_3.cjs.entry.js +114 -39
  199. package/dist/cjs/ion-divider.cjs.entry.js +51 -0
  200. package/dist/cjs/ion-fab_3.cjs.entry.js +41 -25
  201. package/dist/cjs/ion-img.cjs.entry.js +7 -3
  202. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +89 -14
  203. package/dist/cjs/ion-input-otp.cjs.entry.js +11 -7
  204. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +50 -12
  205. package/dist/cjs/ion-input.cjs.entry.js +125 -89
  206. package/dist/cjs/ion-item-option_3.cjs.entry.js +48 -19
  207. package/dist/cjs/ion-item_8.cjs.entry.js +105 -45
  208. package/dist/cjs/ion-loading.cjs.entry.js +17 -15
  209. package/dist/cjs/ion-menu_3.cjs.entry.js +47 -26
  210. package/dist/cjs/ion-modal.cjs.entry.js +96 -69
  211. package/dist/cjs/ion-nav_2.cjs.entry.js +13 -10
  212. package/dist/cjs/ion-picker-column-option.cjs.entry.js +12 -8
  213. package/dist/cjs/ion-picker-column.cjs.entry.js +12 -48
  214. package/dist/cjs/ion-picker.cjs.entry.js +9 -5
  215. package/dist/cjs/ion-popover.cjs.entry.js +18 -16
  216. package/dist/cjs/ion-progress-bar.cjs.entry.js +25 -7
  217. package/dist/cjs/ion-radio_2.cjs.entry.js +22 -13
  218. package/dist/cjs/ion-range.cjs.entry.js +14 -10
  219. package/dist/cjs/ion-refresher_2.cjs.entry.js +36 -18
  220. package/dist/cjs/ion-reorder_2.cjs.entry.js +36 -12
  221. package/dist/cjs/ion-ripple-effect.cjs.entry.js +14 -6
  222. package/dist/cjs/ion-route_4.cjs.entry.js +8 -7
  223. package/dist/cjs/ion-searchbar.cjs.entry.js +134 -21
  224. package/dist/cjs/ion-segment-content.cjs.entry.js +1 -1
  225. package/dist/cjs/ion-segment-view.cjs.entry.js +5 -2
  226. package/dist/cjs/ion-segment_2.cjs.entry.js +21 -14
  227. package/dist/cjs/ion-select-modal.cjs.entry.js +8 -9
  228. package/dist/cjs/ion-select_3.cjs.entry.js +129 -38
  229. package/dist/cjs/ion-spinner.cjs.entry.js +28 -6
  230. package/dist/cjs/ion-split-pane.cjs.entry.js +11 -8
  231. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +65 -20
  232. package/dist/cjs/ion-tab_2.cjs.entry.js +7 -6
  233. package/dist/cjs/ion-text.cjs.entry.js +5 -5
  234. package/dist/cjs/ion-textarea.cjs.entry.js +60 -74
  235. package/dist/cjs/ion-toast.cjs.entry.js +66 -43
  236. package/dist/cjs/ion-toggle.cjs.entry.js +78 -21
  237. package/dist/cjs/ionic-global-RZLbse4y.js +491 -0
  238. package/dist/cjs/ionic.cjs.js +3 -3
  239. package/dist/cjs/{ios.transition-DEitrLlG.js → ios.transition-CWI22viS.js} +6 -4
  240. package/dist/cjs/{keyboard-UuAS4D_9.js → keyboard-BZdohzZu.js} +1 -1
  241. package/dist/cjs/{keyboard-hHzlEQpk.js → keyboard-ByZ4Ulg3.js} +4 -3
  242. package/dist/cjs/{keyboard-controller-GXBiBRKS.js → keyboard-controller-B-dr5t4a.js} +11 -9
  243. package/dist/cjs/list-a-7GSA6K.js +8 -0
  244. package/dist/cjs/loader.cjs.js +3 -3
  245. package/dist/cjs/{md.transition-BHtGC-Wg.js → md.transition-BxMmPf_q.js} +5 -4
  246. package/dist/cjs/{notch-controller-Bf5Rr4R5.js → notch-controller-BmjMp6Co.js} +4 -4
  247. package/dist/cjs/{overlays-CglR7j-u.js → overlays-Di-PotkY.js} +25 -117
  248. package/dist/cjs/{status-tap-D9YPr62n.js → status-tap-D-MulHQM.js} +3 -2
  249. package/dist/cjs/{swipe-back-C1wRtoww.js → swipe-back-C5W5r-1A.js} +2 -1
  250. package/dist/cjs/x-BTF99yFH.js +8 -0
  251. package/dist/collection/collection-manifest.json +1 -0
  252. package/dist/collection/components/accordion/accordion.ionic.css +198 -0
  253. package/dist/collection/components/accordion/accordion.ios.css +73 -58
  254. package/dist/collection/components/accordion/accordion.js +36 -26
  255. package/dist/collection/components/accordion/accordion.md.css +67 -59
  256. package/dist/collection/components/accordion-group/accordion-group.ionic.css +95 -0
  257. package/dist/collection/components/accordion-group/accordion-group.ios.css +16 -4
  258. package/dist/collection/components/accordion-group/accordion-group.js +44 -8
  259. package/dist/collection/components/accordion-group/accordion-group.md.css +22 -4
  260. package/dist/collection/components/action-sheet/action-sheet.ios.css +18 -6
  261. package/dist/collection/components/action-sheet/action-sheet.js +15 -11
  262. package/dist/collection/components/action-sheet/action-sheet.md.css +17 -5
  263. package/dist/collection/components/alert/alert.ios.css +19 -1
  264. package/dist/collection/components/alert/alert.js +16 -13
  265. package/dist/collection/components/alert/alert.md.css +19 -1
  266. package/dist/collection/components/app/app.js +15 -78
  267. package/dist/collection/components/avatar/avatar.ionic.css +393 -0
  268. package/dist/collection/components/avatar/avatar.ios.css +7 -33
  269. package/dist/collection/components/avatar/avatar.js +120 -4
  270. package/dist/collection/components/avatar/avatar.md.css +51 -0
  271. package/dist/collection/components/back-button/back-button.ios.css +60 -48
  272. package/dist/collection/components/back-button/back-button.js +27 -19
  273. package/dist/collection/components/back-button/back-button.md.css +60 -48
  274. package/dist/collection/components/backdrop/backdrop.ionic.css +111 -0
  275. package/dist/collection/components/backdrop/backdrop.ios.css +56 -19
  276. package/dist/collection/components/backdrop/backdrop.js +12 -6
  277. package/dist/collection/components/backdrop/backdrop.md.css +56 -19
  278. package/dist/collection/components/badge/badge.ionic.css +277 -0
  279. package/dist/collection/components/badge/badge.ios.css +139 -12
  280. package/dist/collection/components/badge/badge.js +145 -9
  281. package/dist/collection/components/badge/badge.md.css +123 -12
  282. package/dist/collection/components/breadcrumb/breadcrumb.ios.css +20 -8
  283. package/dist/collection/components/breadcrumb/breadcrumb.js +43 -11
  284. package/dist/collection/components/breadcrumb/breadcrumb.md.css +20 -8
  285. package/dist/collection/components/breadcrumbs/breadcrumbs.ios.css +6 -0
  286. package/dist/collection/components/breadcrumbs/breadcrumbs.js +11 -9
  287. package/dist/collection/components/breadcrumbs/breadcrumbs.md.css +6 -0
  288. package/dist/collection/components/button/button.ionic.css +622 -0
  289. package/dist/collection/components/button/button.ios.css +135 -46
  290. package/dist/collection/components/button/button.js +48 -17
  291. package/dist/collection/components/button/button.md.css +126 -50
  292. package/dist/collection/components/buttons/buttons.ionic.css +100 -0
  293. package/dist/collection/components/buttons/buttons.ios.css +59 -7
  294. package/dist/collection/components/buttons/buttons.js +15 -9
  295. package/dist/collection/components/buttons/buttons.md.css +55 -3
  296. package/dist/collection/components/card/card.ionic.css +146 -0
  297. package/dist/collection/components/card/card.ios.css +65 -14
  298. package/dist/collection/components/card/card.js +41 -10
  299. package/dist/collection/components/card/card.md.css +65 -14
  300. package/dist/collection/components/card-content/card-content.ionic.css +94 -0
  301. package/dist/collection/components/card-content/card-content.ios.css +16 -1
  302. package/dist/collection/components/card-content/card-content.js +11 -8
  303. package/dist/collection/components/card-content/card-content.md.css +16 -1
  304. package/dist/collection/components/card-header/card-header.ionic.css +87 -0
  305. package/dist/collection/components/card-header/card-header.ios.css +27 -15
  306. package/dist/collection/components/card-header/card-header.js +13 -10
  307. package/dist/collection/components/card-header/card-header.md.css +27 -15
  308. package/dist/collection/components/card-subtitle/card-subtitle.ionic.css +146 -0
  309. package/dist/collection/components/card-subtitle/card-subtitle.ios.css +12 -0
  310. package/dist/collection/components/card-subtitle/card-subtitle.js +11 -8
  311. package/dist/collection/components/card-subtitle/card-subtitle.md.css +12 -0
  312. package/dist/collection/components/card-title/card-title.ios.css +73 -0
  313. package/dist/collection/components/card-title/card-title.js +11 -8
  314. package/dist/collection/components/card-title/card-title.md.css +73 -0
  315. package/dist/collection/components/checkbox/checkbox.ionic.css +541 -0
  316. package/dist/collection/components/checkbox/checkbox.ios.css +161 -101
  317. package/dist/collection/components/checkbox/checkbox.js +70 -14
  318. package/dist/collection/components/checkbox/checkbox.md.css +162 -102
  319. package/dist/collection/components/chip/chip.ionic.css +230 -0
  320. package/dist/collection/components/chip/chip.ios.css +67 -14
  321. package/dist/collection/components/chip/chip.js +108 -8
  322. package/dist/collection/components/chip/chip.md.css +67 -14
  323. package/dist/collection/components/col/col.css +12 -0
  324. package/dist/collection/components/col/col.js +9 -5
  325. package/dist/collection/components/content/content.css +8 -2
  326. package/dist/collection/components/content/content.js +16 -11
  327. package/dist/collection/components/datetime/datetime.ionic.css +699 -0
  328. package/dist/collection/components/datetime/datetime.ios.css +242 -86
  329. package/dist/collection/components/datetime/datetime.js +100 -21
  330. package/dist/collection/components/datetime/datetime.md.css +242 -86
  331. package/dist/collection/components/datetime/utils/data.js +5 -5
  332. package/dist/collection/components/datetime-button/datetime-button.ios.css +6 -0
  333. package/dist/collection/components/datetime-button/datetime-button.js +11 -8
  334. package/dist/collection/components/datetime-button/datetime-button.md.css +6 -0
  335. package/dist/collection/components/divider/divider.ionic.css +150 -0
  336. package/dist/collection/components/divider/divider.ios.css +87 -0
  337. package/dist/collection/components/divider/divider.js +94 -0
  338. package/dist/collection/components/divider/divider.md.css +87 -0
  339. package/dist/collection/components/fab/fab.css +25 -1
  340. package/dist/collection/components/fab/fab.js +9 -5
  341. package/dist/collection/components/fab-button/fab-button.ios.css +18 -6
  342. package/dist/collection/components/fab-button/fab-button.js +36 -21
  343. package/dist/collection/components/fab-button/fab-button.md.css +20 -8
  344. package/dist/collection/components/fab-list/fab-list.css +12 -0
  345. package/dist/collection/components/fab-list/fab-list.js +9 -5
  346. package/dist/collection/components/footer/footer.ios.css +14 -2
  347. package/dist/collection/components/footer/footer.js +21 -16
  348. package/dist/collection/components/footer/footer.md.css +12 -0
  349. package/dist/collection/components/grid/grid.css +12 -0
  350. package/dist/collection/components/grid/grid.js +9 -5
  351. package/dist/collection/components/header/header.ionic.css +100 -0
  352. package/dist/collection/components/header/header.ios.css +25 -10
  353. package/dist/collection/components/header/header.js +49 -18
  354. package/dist/collection/components/header/header.md.css +23 -8
  355. package/dist/collection/components/img/img.js +8 -2
  356. package/dist/collection/components/infinite-scroll/infinite-scroll.js +100 -5
  357. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.ios.css +12 -0
  358. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +16 -10
  359. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.md.css +12 -0
  360. package/dist/collection/components/input/input.ionic.css +883 -0
  361. package/dist/collection/components/input/input.ios.css +223 -140
  362. package/dist/collection/components/input/input.js +155 -99
  363. package/dist/collection/components/input/input.md.css +193 -212
  364. package/dist/collection/components/input-otp/input-otp.ionic.css +371 -0
  365. package/dist/collection/components/input-otp/input-otp.ios.css +106 -60
  366. package/dist/collection/components/input-otp/input-otp.js +7 -5
  367. package/dist/collection/components/input-otp/input-otp.md.css +106 -60
  368. package/dist/collection/components/input-password-toggle/input-password-toggle.ionic.css +80 -0
  369. package/dist/collection/components/input-password-toggle/input-password-toggle.js +48 -12
  370. package/dist/collection/components/input-password-toggle/input-password-toggle.native.css +61 -0
  371. package/dist/collection/components/item/item.ionic.css +502 -0
  372. package/dist/collection/components/item/item.ios.css +109 -69
  373. package/dist/collection/components/item/item.js +43 -19
  374. package/dist/collection/components/item/item.md.css +120 -68
  375. package/dist/collection/components/item-divider/item-divider.ios.css +18 -0
  376. package/dist/collection/components/item-divider/item-divider.js +11 -8
  377. package/dist/collection/components/item-divider/item-divider.md.css +18 -0
  378. package/dist/collection/components/item-group/item-group.ios.css +12 -0
  379. package/dist/collection/components/item-group/item-group.js +13 -7
  380. package/dist/collection/components/item-group/item-group.md.css +12 -0
  381. package/dist/collection/components/item-option/item-option.ionic.css +280 -0
  382. package/dist/collection/components/item-option/item-option.ios.css +136 -29
  383. package/dist/collection/components/item-option/item-option.js +73 -9
  384. package/dist/collection/components/item-option/item-option.md.css +136 -29
  385. package/dist/collection/components/item-options/item-options.ionic.css +223 -0
  386. package/dist/collection/components/item-options/item-options.ios.css +77 -34
  387. package/dist/collection/components/item-options/item-options.js +13 -7
  388. package/dist/collection/components/item-options/item-options.md.css +77 -34
  389. package/dist/collection/components/item-sliding/item-sliding.css +6 -0
  390. package/dist/collection/components/item-sliding/item-sliding.js +8 -4
  391. package/dist/collection/components/label/label.ios.css +18 -0
  392. package/dist/collection/components/label/label.js +11 -8
  393. package/dist/collection/components/label/label.md.css +18 -0
  394. package/dist/collection/components/list/list.ionic.css +214 -0
  395. package/dist/collection/components/list/list.ios.css +54 -14
  396. package/dist/collection/components/list/list.js +48 -9
  397. package/dist/collection/components/list/list.md.css +56 -16
  398. package/dist/collection/components/list-header/list-header.ionic.css +192 -0
  399. package/dist/collection/components/list-header/list-header.ios.css +82 -38
  400. package/dist/collection/components/list-header/list-header.js +11 -8
  401. package/dist/collection/components/list-header/list-header.md.css +82 -38
  402. package/dist/collection/components/loading/loading.ios.css +13 -1
  403. package/dist/collection/components/loading/loading.js +14 -11
  404. package/dist/collection/components/loading/loading.md.css +13 -1
  405. package/dist/collection/components/menu/menu.ios.css +15 -3
  406. package/dist/collection/components/menu/menu.js +19 -7
  407. package/dist/collection/components/menu/menu.md.css +15 -3
  408. package/dist/collection/components/menu-button/menu-button.ionic.css +238 -0
  409. package/dist/collection/components/menu-button/menu-button.ios.css +48 -14
  410. package/dist/collection/components/menu-button/menu-button.js +26 -10
  411. package/dist/collection/components/menu-button/menu-button.md.css +49 -15
  412. package/dist/collection/components/menu-toggle/menu-toggle.js +8 -5
  413. package/dist/collection/components/modal/animations/sheet.js +8 -2
  414. package/dist/collection/components/modal/gestures/sheet.js +10 -6
  415. package/dist/collection/components/modal/modal.ionic.css +243 -0
  416. package/dist/collection/components/modal/modal.ios.css +174 -70
  417. package/dist/collection/components/modal/modal.js +48 -11
  418. package/dist/collection/components/modal/modal.md.css +174 -70
  419. package/dist/collection/components/nav/nav.css +7 -1
  420. package/dist/collection/components/nav/nav.js +11 -5
  421. package/dist/collection/components/nav-link/nav-link.js +5 -1
  422. package/dist/collection/components/note/note.ios.css +12 -0
  423. package/dist/collection/components/note/note.js +11 -8
  424. package/dist/collection/components/note/note.md.css +12 -0
  425. package/dist/collection/components/picker/picker.ios.css +15 -3
  426. package/dist/collection/components/picker/picker.js +8 -5
  427. package/dist/collection/components/picker/picker.md.css +15 -3
  428. package/dist/collection/components/picker-column/picker-column.css +9 -2
  429. package/dist/collection/components/picker-column/picker-column.js +8 -43
  430. package/dist/collection/components/picker-column-option/picker-column-option.ios.css +8 -2
  431. package/dist/collection/components/picker-column-option/picker-column-option.js +13 -7
  432. package/dist/collection/components/picker-column-option/picker-column-option.md.css +8 -2
  433. package/dist/collection/components/picker-legacy/picker.ios.css +13 -1
  434. package/dist/collection/components/picker-legacy/picker.js +7 -6
  435. package/dist/collection/components/picker-legacy/picker.md.css +13 -1
  436. package/dist/collection/components/picker-legacy-column/picker-column.ios.css +12 -0
  437. package/dist/collection/components/picker-legacy-column/picker-column.js +4 -4
  438. package/dist/collection/components/picker-legacy-column/picker-column.md.css +12 -0
  439. package/dist/collection/components/popover/popover.ios.css +13 -1
  440. package/dist/collection/components/popover/popover.js +17 -14
  441. package/dist/collection/components/popover/popover.md.css +13 -1
  442. package/dist/collection/components/progress-bar/progress-bar.ionic.css +289 -0
  443. package/dist/collection/components/progress-bar/progress-bar.ios.css +48 -17
  444. package/dist/collection/components/progress-bar/progress-bar.js +43 -7
  445. package/dist/collection/components/progress-bar/progress-bar.md.css +48 -17
  446. package/dist/collection/components/radio/radio.ionic.css +424 -0
  447. package/dist/collection/components/radio/radio.ios.css +134 -91
  448. package/dist/collection/components/radio/radio.js +12 -9
  449. package/dist/collection/components/radio/radio.md.css +134 -91
  450. package/dist/collection/components/radio-group/radio-group.ionic.css +127 -0
  451. package/dist/collection/components/radio-group/radio-group.ios.css +42 -18
  452. package/dist/collection/components/radio-group/radio-group.js +13 -5
  453. package/dist/collection/components/radio-group/radio-group.md.css +42 -18
  454. package/dist/collection/components/range/range.ionic.css +565 -0
  455. package/dist/collection/components/range/range.ios.css +128 -85
  456. package/dist/collection/components/range/range.js +12 -9
  457. package/dist/collection/components/range/range.md.css +128 -85
  458. package/dist/collection/components/refresher/refresher.ios.css +14 -1
  459. package/dist/collection/components/refresher/refresher.js +11 -8
  460. package/dist/collection/components/refresher/refresher.md.css +15 -2
  461. package/dist/collection/components/refresher-content/refresher-content.js +28 -7
  462. package/dist/collection/components/reorder/reorder.ios.css +6 -0
  463. package/dist/collection/components/reorder/reorder.js +33 -6
  464. package/dist/collection/components/reorder/reorder.md.css +6 -0
  465. package/dist/collection/components/reorder-group/reorder-group.css +6 -0
  466. package/dist/collection/components/reorder-group/reorder-group.js +8 -4
  467. package/dist/collection/components/ripple-effect/{ripple-effect.css → ripple-effect.common.css} +7 -1
  468. package/dist/collection/components/ripple-effect/ripple-effect.ionic.css +217 -0
  469. package/dist/collection/components/ripple-effect/ripple-effect.js +14 -6
  470. package/dist/collection/components/route/route.js +4 -0
  471. package/dist/collection/components/router/router.js +4 -0
  472. package/dist/collection/components/router-link/router-link.css +8 -2
  473. package/dist/collection/components/router-link/router-link.js +9 -5
  474. package/dist/collection/components/router-outlet/router-outlet.css +7 -1
  475. package/dist/collection/components/router-outlet/router-outlet.js +6 -3
  476. package/dist/collection/components/row/row.css +12 -0
  477. package/dist/collection/components/row/row.js +9 -2
  478. package/dist/collection/components/searchbar/searchbar.ionic.css +628 -0
  479. package/dist/collection/components/searchbar/searchbar.ios.css +56 -18
  480. package/dist/collection/components/searchbar/searchbar.js +181 -34
  481. package/dist/collection/components/searchbar/searchbar.md.css +56 -18
  482. package/dist/collection/components/segment/segment.ionic.css +117 -0
  483. package/dist/collection/components/segment/segment.ios.css +45 -2
  484. package/dist/collection/components/segment/segment.js +11 -8
  485. package/dist/collection/components/segment/segment.md.css +45 -2
  486. package/dist/collection/components/segment-button/segment-button.ionic.css +355 -0
  487. package/dist/collection/components/segment-button/segment-button.ios.css +146 -105
  488. package/dist/collection/components/segment-button/segment-button.js +11 -8
  489. package/dist/collection/components/segment-button/segment-button.md.css +148 -107
  490. package/dist/collection/components/segment-content/segment-content.js +1 -1
  491. package/dist/collection/components/segment-view/segment-view.ios.css +6 -0
  492. package/dist/collection/components/segment-view/segment-view.js +6 -4
  493. package/dist/collection/components/segment-view/segment-view.md.css +6 -0
  494. package/dist/collection/components/select/select.ionic.css +765 -0
  495. package/dist/collection/components/select/select.ios.css +315 -176
  496. package/dist/collection/components/select/select.js +157 -54
  497. package/dist/collection/components/select/select.md.css +331 -178
  498. package/dist/collection/components/select-modal/select-modal.ionic.css +121 -0
  499. package/dist/collection/components/select-modal/select-modal.ios.css +18 -0
  500. package/dist/collection/components/select-modal/select-modal.js +3 -3
  501. package/dist/collection/components/select-modal/select-modal.md.css +7 -3
  502. package/dist/collection/components/select-option/select-option.js +9 -2
  503. package/dist/collection/components/select-popover/select-popover.ios.css +18 -0
  504. package/dist/collection/components/select-popover/select-popover.js +12 -4
  505. package/dist/collection/components/select-popover/select-popover.md.css +18 -0
  506. package/dist/collection/components/skeleton-text/skeleton-text.css +6 -0
  507. package/dist/collection/components/skeleton-text/skeleton-text.js +9 -5
  508. package/dist/collection/components/spinner/{spinner.css → spinner.ionic.css} +79 -10
  509. package/dist/collection/components/spinner/spinner.js +47 -6
  510. package/dist/collection/components/spinner/spinner.native.css +198 -0
  511. package/dist/collection/components/split-pane/split-pane.ios.css +20 -2
  512. package/dist/collection/components/split-pane/split-pane.js +14 -8
  513. package/dist/collection/components/split-pane/split-pane.md.css +20 -2
  514. package/dist/collection/components/tab/tab.js +6 -2
  515. package/dist/collection/components/tab-bar/tab-bar.ionic.css +188 -0
  516. package/dist/collection/components/tab-bar/tab-bar.ios.css +71 -43
  517. package/dist/collection/components/tab-bar/tab-bar.js +78 -11
  518. package/dist/collection/components/tab-bar/tab-bar.md.css +71 -43
  519. package/dist/collection/components/tab-button/tab-button.ionic.css +338 -0
  520. package/dist/collection/components/tab-button/tab-button.ios.css +171 -95
  521. package/dist/collection/components/tab-button/tab-button.js +44 -8
  522. package/dist/collection/components/tab-button/tab-button.md.css +137 -93
  523. package/dist/collection/components/tabs/tabs.css +7 -1
  524. package/dist/collection/components/tabs/tabs.js +4 -1
  525. package/dist/collection/components/text/text.css +6 -0
  526. package/dist/collection/components/text/text.js +7 -6
  527. package/dist/collection/components/textarea/textarea.ionic.css +830 -0
  528. package/dist/collection/components/textarea/textarea.ios.css +275 -139
  529. package/dist/collection/components/textarea/textarea.js +82 -77
  530. package/dist/collection/components/textarea/textarea.md.css +288 -140
  531. package/dist/collection/components/thumbnail/thumbnail.css +6 -0
  532. package/dist/collection/components/thumbnail/thumbnail.js +9 -2
  533. package/dist/collection/components/title/title.ionic.css +129 -0
  534. package/dist/collection/components/title/title.ios.css +32 -4
  535. package/dist/collection/components/title/title.js +13 -7
  536. package/dist/collection/components/title/title.md.css +32 -4
  537. package/dist/collection/components/toast/animations/utils.js +1 -1
  538. package/dist/collection/components/toast/toast.ionic.css +396 -0
  539. package/dist/collection/components/toast/toast.ios.css +84 -45
  540. package/dist/collection/components/toast/toast.js +75 -12
  541. package/dist/collection/components/toast/toast.md.css +84 -45
  542. package/dist/collection/components/toggle/toggle.ionic.css +511 -0
  543. package/dist/collection/components/toggle/toggle.ios.css +247 -131
  544. package/dist/collection/components/toggle/toggle.js +73 -18
  545. package/dist/collection/components/toggle/toggle.md.css +244 -131
  546. package/dist/collection/components/toolbar/test/image.svg +1 -0
  547. package/dist/collection/components/toolbar/toolbar.ionic.css +243 -0
  548. package/dist/collection/components/toolbar/toolbar.ios.css +90 -47
  549. package/dist/collection/components/toolbar/toolbar.js +157 -13
  550. package/dist/collection/components/toolbar/toolbar.md.css +90 -47
  551. package/dist/collection/global/ionic-global.js +228 -13
  552. package/dist/collection/utils/focus-visible.js +22 -0
  553. package/dist/collection/utils/framework-delegate.js +3 -1
  554. package/dist/collection/utils/helpers.js +42 -2
  555. package/dist/collection/utils/keyboard/keyboard-controller.js +3 -1
  556. package/dist/collection/utils/menu-controller/animations/overlay.js +3 -3
  557. package/dist/collection/utils/menu-controller/animations/push.js +2 -1
  558. package/dist/collection/utils/menu-controller/animations/reveal.js +2 -1
  559. package/dist/collection/utils/overlays.js +19 -110
  560. package/dist/collection/utils/test/playwright/generator.js +48 -23
  561. package/dist/collection/utils/test/playwright/page/utils/goto.js +14 -5
  562. package/dist/collection/utils/test/playwright/page/utils/set-content.js +24 -3
  563. package/dist/collection/utils/transition/ios.transition.js +1 -0
  564. package/dist/docs.json +7920 -359
  565. package/dist/esm/{animation-BvhAtgca.js → animation-DPqVg3gl.js} +1 -1
  566. package/dist/esm/{app-globals-CvLYUxE9.js → app-globals-dJs8dVUB.js} +1 -1
  567. package/dist/esm/{button-active-DBUPuLNw.js → button-active-BMINdWv6.js} +1 -1
  568. package/dist/esm/{capacitor-CFERIeaU.js → capacitor--DL1MVFW.js} +1 -1
  569. package/dist/esm/caret-down-D1t981Ih.js +6 -0
  570. package/dist/esm/caret-left-fIOYmaqA.js +6 -0
  571. package/dist/esm/caret-right-BYSs-jZz.js +6 -0
  572. package/dist/esm/{data-CKHMWxfe.js → data-slRmoEWk.js} +5 -5
  573. package/dist/esm/{focus-visible-BmVRXR1y.js → focus-visible-vXpMhGrs.js} +23 -1
  574. package/dist/esm/{framework-delegate-BLEBgH06.js → framework-delegate-C3AU0AA6.js} +4 -2
  575. package/dist/esm/{haptic-DzAMWJuk.js → haptic-BWDWI-Xh.js} +1 -1
  576. package/dist/esm/{helpers-8KSQQGQy.js → helpers-CKng-4WP.js} +42 -3
  577. package/dist/esm/{index-CXSTcaAW.js → index-BwfAv3fK.js} +10 -10
  578. package/dist/esm/{index-7UbSlv7N.js → index-C21kdpyw.js} +1 -1
  579. package/dist/esm/{index-DV3sJJW8.js → index-COG0_eom.js} +1 -1
  580. package/dist/esm/{index-Dp7GXH1z.js → index-DLYqkEhn.js} +3 -3
  581. package/dist/esm/{index-C6WeRr09.js → index-jNq9q9I-.js} +3 -2
  582. package/dist/esm/index.js +10 -11
  583. package/dist/esm/{input-shims-C4KDnhxb.js → input-shims-Dt4HUCHS.js} +6 -5
  584. package/dist/esm/{input.utils-be4gBvVY.js → input.utils-D7U0b1bK.js} +2 -2
  585. package/dist/esm/ion-accordion_2.entry.js +56 -27
  586. package/dist/esm/ion-action-sheet.entry.js +21 -18
  587. package/dist/esm/ion-alert.entry.js +22 -20
  588. package/dist/esm/ion-app_8.entry.js +244 -145
  589. package/dist/esm/ion-avatar_3.entry.js +125 -13
  590. package/dist/esm/ion-back-button.entry.js +29 -20
  591. package/dist/esm/ion-backdrop.entry.js +9 -6
  592. package/dist/esm/ion-breadcrumb_2.entry.js +53 -17
  593. package/dist/esm/ion-button_2.entry.js +43 -11
  594. package/dist/esm/ion-card_5.entry.js +53 -29
  595. package/dist/esm/ion-checkbox.entry.js +31 -13
  596. package/dist/esm/ion-chip.entry.js +49 -8
  597. package/dist/esm/ion-col_3.entry.js +13 -10
  598. package/dist/esm/ion-datetime-button.entry.js +11 -7
  599. package/dist/esm/ion-datetime_3.entry.js +116 -41
  600. package/dist/esm/ion-divider.entry.js +49 -0
  601. package/dist/esm/ion-fab_3.entry.js +43 -27
  602. package/dist/esm/ion-img.entry.js +7 -3
  603. package/dist/esm/ion-infinite-scroll_2.entry.js +89 -14
  604. package/dist/esm/ion-input-otp.entry.js +11 -7
  605. package/dist/esm/ion-input-password-toggle.entry.js +52 -14
  606. package/dist/esm/ion-input.entry.js +127 -91
  607. package/dist/esm/ion-item-option_3.entry.js +48 -19
  608. package/dist/esm/ion-item_8.entry.js +107 -47
  609. package/dist/esm/ion-loading.entry.js +17 -15
  610. package/dist/esm/ion-menu_3.entry.js +48 -27
  611. package/dist/esm/ion-modal.entry.js +56 -29
  612. package/dist/esm/ion-nav_2.entry.js +13 -10
  613. package/dist/esm/ion-picker-column-option.entry.js +12 -8
  614. package/dist/esm/ion-picker-column.entry.js +11 -47
  615. package/dist/esm/ion-picker.entry.js +9 -5
  616. package/dist/esm/ion-popover.entry.js +18 -16
  617. package/dist/esm/ion-progress-bar.entry.js +25 -7
  618. package/dist/esm/ion-radio_2.entry.js +22 -13
  619. package/dist/esm/ion-range.entry.js +14 -10
  620. package/dist/esm/ion-refresher_2.entry.js +37 -19
  621. package/dist/esm/ion-reorder_2.entry.js +38 -14
  622. package/dist/esm/ion-ripple-effect.entry.js +14 -6
  623. package/dist/esm/ion-route_4.entry.js +8 -7
  624. package/dist/esm/ion-searchbar.entry.js +137 -24
  625. package/dist/esm/ion-segment-content.entry.js +1 -1
  626. package/dist/esm/ion-segment-view.entry.js +5 -2
  627. package/dist/esm/ion-segment_2.entry.js +21 -14
  628. package/dist/esm/ion-select-modal.entry.js +8 -9
  629. package/dist/esm/ion-select_3.entry.js +131 -40
  630. package/dist/esm/ion-spinner.entry.js +28 -6
  631. package/dist/esm/ion-split-pane.entry.js +11 -8
  632. package/dist/esm/ion-tab-bar_2.entry.js +65 -20
  633. package/dist/esm/ion-tab_2.entry.js +7 -6
  634. package/dist/esm/ion-text.entry.js +5 -5
  635. package/dist/esm/ion-textarea.entry.js +60 -74
  636. package/dist/esm/ion-toast.entry.js +40 -17
  637. package/dist/esm/ion-toggle.entry.js +79 -22
  638. package/dist/esm/ionic-global-Dtd5Ma5B.js +480 -0
  639. package/dist/esm/ionic.js +3 -3
  640. package/dist/esm/{ios.transition-eAEkgVAv.js → ios.transition-CJcl_IUo.js} +6 -4
  641. package/dist/esm/{keyboard-CUw4ekVy.js → keyboard-Ce5NGRb7.js} +1 -1
  642. package/dist/esm/{keyboard-ywgs5efA.js → keyboard-DP1KnX1o.js} +4 -3
  643. package/dist/esm/{keyboard-controller-BaaVITYt.js → keyboard-controller-CN0dsogH.js} +5 -3
  644. package/dist/esm/list-Dhi5xtNS.js +6 -0
  645. package/dist/esm/loader.js +3 -3
  646. package/dist/esm/{md.transition-D8TeJ_Pz.js → md.transition-DUO570OK.js} +5 -4
  647. package/dist/esm/{notch-controller-lb417-kU.js → notch-controller-BZq2fbxL.js} +2 -2
  648. package/dist/esm/{overlays-ZX_4-t_r.js → overlays-B1-bMbOY.js} +22 -114
  649. package/dist/esm/{status-tap-pATNXEtr.js → status-tap-Bux-fh_w.js} +3 -2
  650. package/dist/esm/{swipe-back-B2YfOHRM.js → swipe-back-Dp-f6VSv.js} +2 -1
  651. package/dist/esm/x-BDqjX7Z_.js +6 -0
  652. package/dist/html.html-data.json +2511 -229
  653. package/dist/ionic/index.esm.js +1 -1
  654. package/dist/ionic/ionic.esm.js +1 -1
  655. package/dist/ionic/p-00239ebc.entry.js +4 -0
  656. package/dist/ionic/p-04b8cb11.entry.js +4 -0
  657. package/dist/ionic/p-083bdc4a.entry.js +4 -0
  658. package/dist/ionic/p-09ee42c7.entry.js +4 -0
  659. package/dist/ionic/p-0a973339.entry.js +4 -0
  660. package/dist/ionic/p-0b1386bf.entry.js +4 -0
  661. package/dist/ionic/p-0edc2fcf.entry.js +4 -0
  662. package/dist/ionic/p-123f6dde.entry.js +4 -0
  663. package/dist/ionic/p-1ac3754e.entry.js +4 -0
  664. package/dist/ionic/p-3610f001.entry.js +4 -0
  665. package/dist/ionic/p-361408bb.entry.js +4 -0
  666. package/dist/ionic/p-389093b6.entry.js +4 -0
  667. package/dist/ionic/p-3b1c39cf.entry.js +4 -0
  668. package/dist/ionic/p-47b803fc.entry.js +4 -0
  669. package/dist/ionic/{p-B1xocg0A.js → p-4ivCEBy1.js} +1 -1
  670. package/dist/ionic/p-637e497f.entry.js +4 -0
  671. package/dist/ionic/p-65d9c265.entry.js +4 -0
  672. package/dist/ionic/p-66b83d63.entry.js +4 -0
  673. package/dist/ionic/p-7918eeaa.entry.js +4 -0
  674. package/dist/ionic/p-7ead7a67.entry.js +4 -0
  675. package/dist/ionic/p-7f1c8070.entry.js +4 -0
  676. package/dist/ionic/p-80faabb9.entry.js +4 -0
  677. package/dist/ionic/p-8870c2f9.entry.js +4 -0
  678. package/dist/ionic/p-8fa42767.entry.js +4 -0
  679. package/dist/ionic/p-905f6505.entry.js +4 -0
  680. package/dist/ionic/p-907ac173.entry.js +4 -0
  681. package/dist/ionic/p-95621a36.entry.js +4 -0
  682. package/dist/ionic/p-97bf9127.entry.js +4 -0
  683. package/dist/ionic/p-9af1c2e0.entry.js +4 -0
  684. package/dist/ionic/p-9e575e4e.entry.js +4 -0
  685. package/dist/ionic/p-BDqjX7Z_.js +4 -0
  686. package/dist/ionic/p-BFFank6B.js +4 -0
  687. package/dist/ionic/{p-CWvl4RPO.js → p-BISSkhkA.js} +1 -1
  688. package/dist/ionic/p-BJGh_obi.js +4 -0
  689. package/dist/ionic/p-BYSs-jZz.js +4 -0
  690. package/dist/ionic/{p-CKvCXMs9.js → p-BYYLxYDJ.js} +1 -1
  691. package/dist/ionic/p-Bh0_z73h.js +4 -0
  692. package/dist/ionic/p-BpaeL4Lk.js +4 -0
  693. package/dist/ionic/{p-DiZPU8BH.js → p-BqMzjJ9X.js} +1 -1
  694. package/dist/ionic/p-CKq50gmC.js +4 -0
  695. package/dist/ionic/{p-DV3sJJW8.js → p-COG0_eom.js} +1 -1
  696. package/dist/ionic/{p-C87oPMMF.js → p-CVVzZviS.js} +1 -1
  697. package/dist/ionic/p-CZEwJt85.js +4 -0
  698. package/dist/ionic/p-Cdv0TJ6-.js +4 -0
  699. package/dist/ionic/{p-BhNEp2QP.js → p-CjpktT3Z.js} +1 -1
  700. package/dist/ionic/p-CqYDGaCK.js +4 -0
  701. package/dist/ionic/p-D-m6MIML.js +4 -0
  702. package/dist/ionic/p-D1t981Ih.js +4 -0
  703. package/dist/ionic/{p-DCuOL88l.js → p-D8VpGXAu.js} +1 -1
  704. package/dist/ionic/p-DBzcL_sL.js +4 -0
  705. package/dist/ionic/p-DO7doFVM.js +4 -0
  706. package/dist/ionic/p-Dhi5xtNS.js +4 -0
  707. package/dist/ionic/p-DpBID_Du.js +4 -0
  708. package/dist/ionic/p-DuV7rU9I.js +4 -0
  709. package/dist/ionic/p-EG6i47Uw.js +4 -0
  710. package/dist/ionic/{p-D13Eaw-8.js → p-EwG_P2X9.js} +1 -1
  711. package/dist/ionic/p-Ex5J81sy.js +4 -0
  712. package/dist/ionic/{p-BHGXdud8.js → p-KY_2sl5b.js} +1 -1
  713. package/dist/ionic/p-a953afe2.entry.js +4 -0
  714. package/dist/ionic/p-ab387abd.entry.js +4 -0
  715. package/dist/ionic/p-abc60b26.entry.js +4 -0
  716. package/dist/ionic/p-b269fb6b.entry.js +4 -0
  717. package/dist/ionic/p-b8c602ec.entry.js +4 -0
  718. package/dist/ionic/p-c6887f5c.entry.js +4 -0
  719. package/dist/ionic/p-c847a353.entry.js +4 -0
  720. package/dist/ionic/p-c8eb678d.entry.js +4 -0
  721. package/dist/ionic/p-cff18cc5.entry.js +4 -0
  722. package/dist/ionic/p-d65a8d3e.entry.js +4 -0
  723. package/dist/ionic/p-d9525f67.entry.js +4 -0
  724. package/dist/ionic/p-db20a452.entry.js +4 -0
  725. package/dist/ionic/{p-7a53f04c.entry.js → p-dc66e8cc.entry.js} +1 -1
  726. package/dist/ionic/p-e0a689ea.entry.js +4 -0
  727. package/dist/ionic/p-e25b2e94.entry.js +4 -0
  728. package/dist/ionic/p-e53f3a62.entry.js +4 -0
  729. package/dist/ionic/p-e6caa048.entry.js +4 -0
  730. package/dist/ionic/p-ec96366b.entry.js +4 -0
  731. package/dist/ionic/p-ed071a41.entry.js +4 -0
  732. package/dist/ionic/p-eea0e705.entry.js +4 -0
  733. package/dist/ionic/p-f0e88837.entry.js +4 -0
  734. package/dist/ionic/p-f4d11cbb.entry.js +4 -0
  735. package/dist/ionic/p-fIOYmaqA.js +4 -0
  736. package/dist/ionic/p-fcba862e.entry.js +4 -0
  737. package/dist/ionic/p-ff010b26.entry.js +4 -0
  738. package/dist/ionic/p-vXpMhGrs.js +4 -0
  739. package/dist/types/components/accordion/accordion.d.ts +5 -3
  740. package/dist/types/components/accordion-group/accordion-group.d.ts +12 -1
  741. package/dist/types/components/action-sheet/action-sheet-interface.d.ts +3 -7
  742. package/dist/types/components/action-sheet/action-sheet.d.ts +3 -2
  743. package/dist/types/components/alert/alert-interface.d.ts +3 -7
  744. package/dist/types/components/alert/alert.d.ts +3 -2
  745. package/dist/types/components/app/app.d.ts +4 -2
  746. package/dist/types/components/avatar/avatar.d.ts +32 -0
  747. package/dist/types/components/back-button/back-button.d.ts +2 -1
  748. package/dist/types/components/backdrop/backdrop.d.ts +4 -0
  749. package/dist/types/components/badge/badge.d.ts +34 -1
  750. package/dist/types/components/breadcrumb/breadcrumb.d.ts +4 -1
  751. package/dist/types/components/breadcrumbs/breadcrumbs.d.ts +2 -2
  752. package/dist/types/components/button/button.d.ts +19 -6
  753. package/dist/types/components/buttons/buttons.d.ts +5 -1
  754. package/dist/types/components/card/card.d.ts +8 -1
  755. package/dist/types/components/card-content/card-content.d.ts +2 -1
  756. package/dist/types/components/card-header/card-header.d.ts +3 -2
  757. package/dist/types/components/card-subtitle/card-subtitle.d.ts +2 -1
  758. package/dist/types/components/card-title/card-title.d.ts +2 -1
  759. package/dist/types/components/checkbox/checkbox.d.ts +14 -4
  760. package/dist/types/components/chip/chip.d.ts +26 -1
  761. package/dist/types/components/col/col.d.ts +4 -0
  762. package/dist/types/components/content/content.d.ts +3 -0
  763. package/dist/types/components/datetime/datetime.d.ts +26 -1
  764. package/dist/types/components/datetime/utils/data.d.ts +5 -5
  765. package/dist/types/components/datetime-button/datetime-button.d.ts +2 -1
  766. package/dist/types/components/divider/divider.d.ts +20 -0
  767. package/dist/types/components/fab/fab.d.ts +4 -0
  768. package/dist/types/components/fab-button/fab-button.d.ts +5 -3
  769. package/dist/types/components/fab-list/fab-list.d.ts +4 -0
  770. package/dist/types/components/footer/footer.d.ts +4 -3
  771. package/dist/types/components/grid/grid.d.ts +4 -0
  772. package/dist/types/components/header/header.d.ts +9 -3
  773. package/dist/types/components/img/img.d.ts +3 -0
  774. package/dist/types/components/infinite-scroll/infinite-scroll.d.ts +21 -0
  775. package/dist/types/components/infinite-scroll-content/infinite-scroll-content.d.ts +4 -0
  776. package/dist/types/components/input/input.d.ts +31 -14
  777. package/dist/types/components/input-password-toggle/input-password-toggle.d.ts +2 -0
  778. package/dist/types/components/item/item.d.ts +11 -4
  779. package/dist/types/components/item-divider/item-divider.d.ts +2 -1
  780. package/dist/types/components/item-group/item-group.d.ts +4 -0
  781. package/dist/types/components/item-option/item-option.d.ts +18 -1
  782. package/dist/types/components/item-options/item-options.d.ts +4 -0
  783. package/dist/types/components/item-sliding/item-sliding.d.ts +4 -0
  784. package/dist/types/components/label/label.d.ts +2 -1
  785. package/dist/types/components/list/list.d.ts +15 -1
  786. package/dist/types/components/list-header/list-header.d.ts +2 -1
  787. package/dist/types/components/loading/loading-interface.d.ts +2 -7
  788. package/dist/types/components/loading/loading.d.ts +3 -2
  789. package/dist/types/components/menu/menu.d.ts +3 -0
  790. package/dist/types/components/menu-button/menu-button.d.ts +3 -1
  791. package/dist/types/components/menu-toggle/menu-toggle.d.ts +3 -0
  792. package/dist/types/components/modal/gestures/sheet.d.ts +1 -1
  793. package/dist/types/components/modal/modal-interface.d.ts +4 -7
  794. package/dist/types/components/modal/modal.d.ts +11 -1
  795. package/dist/types/components/nav/nav-interface.d.ts +9 -1
  796. package/dist/types/components/nav/nav.d.ts +5 -1
  797. package/dist/types/components/nav-link/nav-link.d.ts +4 -0
  798. package/dist/types/components/note/note.d.ts +2 -1
  799. package/dist/types/components/picker/picker.d.ts +2 -1
  800. package/dist/types/components/picker-column/picker-column.d.ts +2 -8
  801. package/dist/types/components/picker-column-option/picker-column-option.d.ts +4 -0
  802. package/dist/types/components/picker-legacy/picker.d.ts +2 -1
  803. package/dist/types/components/popover/popover-interface.d.ts +3 -6
  804. package/dist/types/components/popover/popover.d.ts +6 -5
  805. package/dist/types/components/progress-bar/progress-bar.d.ts +10 -1
  806. package/dist/types/components/radio/radio.d.ts +2 -1
  807. package/dist/types/components/radio-group/radio-group.d.ts +4 -0
  808. package/dist/types/components/range/range.d.ts +2 -1
  809. package/dist/types/components/refresher/refresher.d.ts +2 -1
  810. package/dist/types/components/refresher-content/refresher-content.d.ts +4 -0
  811. package/dist/types/components/reorder/reorder.d.ts +9 -0
  812. package/dist/types/components/reorder-group/reorder-group.d.ts +4 -0
  813. package/dist/types/components/ripple-effect/ripple-effect.d.ts +4 -0
  814. package/dist/types/components/route/route.d.ts +4 -0
  815. package/dist/types/components/router/router.d.ts +4 -0
  816. package/dist/types/components/router-link/router-link.d.ts +4 -0
  817. package/dist/types/components/router-outlet/router-outlet.d.ts +4 -1
  818. package/dist/types/components/row/row.d.ts +4 -0
  819. package/dist/types/components/searchbar/searchbar.d.ts +51 -9
  820. package/dist/types/components/segment/segment.d.ts +2 -1
  821. package/dist/types/components/segment-button/segment-button.d.ts +2 -1
  822. package/dist/types/components/select/select.d.ts +41 -13
  823. package/dist/types/components/select-option/select-option.d.ts +4 -0
  824. package/dist/types/components/select-popover/select-popover.d.ts +3 -0
  825. package/dist/types/components/skeleton-text/skeleton-text.d.ts +4 -0
  826. package/dist/types/components/spinner/spinner.d.ts +15 -0
  827. package/dist/types/components/split-pane/split-pane.d.ts +4 -0
  828. package/dist/types/components/tab/tab.d.ts +4 -0
  829. package/dist/types/components/tab-bar/tab-bar.d.ts +22 -2
  830. package/dist/types/components/tab-button/tab-button.d.ts +11 -1
  831. package/dist/types/components/tabs/tabs.d.ts +3 -0
  832. package/dist/types/components/text/text.d.ts +2 -1
  833. package/dist/types/components/textarea/textarea.d.ts +17 -13
  834. package/dist/types/components/thumbnail/thumbnail.d.ts +4 -0
  835. package/dist/types/components/title/title.d.ts +4 -0
  836. package/dist/types/components/toast/animations/utils.d.ts +2 -2
  837. package/dist/types/components/toast/toast-interface.d.ts +3 -7
  838. package/dist/types/components/toast/toast.d.ts +19 -2
  839. package/dist/types/components/toggle/toggle.d.ts +15 -1
  840. package/dist/types/components/toolbar/toolbar.d.ts +20 -3
  841. package/dist/types/components.d.ts +1522 -197
  842. package/dist/types/global/ionic-global.d.ts +27 -2
  843. package/dist/types/interface.d.ts +3 -0
  844. package/dist/types/utils/config.d.ts +106 -2
  845. package/dist/types/utils/focus-visible.d.ts +13 -0
  846. package/dist/types/utils/helpers.d.ts +11 -0
  847. package/dist/types/utils/overlays-interface.d.ts +31 -1
  848. package/dist/types/utils/test/playwright/generator.d.ts +31 -2
  849. package/hydrate/index.js +2838 -1139
  850. package/hydrate/index.mjs +2838 -1139
  851. package/package.json +10 -5
  852. package/components/hardware-back-button.js +0 -115
  853. package/components/index9.js +0 -7
  854. package/dist/cjs/hardware-back-button-BxdNu76F.js +0 -121
  855. package/dist/cjs/index-DkNv4J_i.js +0 -10
  856. package/dist/cjs/ionic-global-UI5YPSi-.js +0 -151
  857. package/dist/esm/hardware-back-button-Dhbd-23H.js +0 -115
  858. package/dist/esm/index-ZjP4CjeZ.js +0 -7
  859. package/dist/esm/ionic-global-CTSyufhF.js +0 -146
  860. package/dist/ionic/p-0816f67c.entry.js +0 -4
  861. package/dist/ionic/p-0f396661.entry.js +0 -4
  862. package/dist/ionic/p-1191a2d9.entry.js +0 -4
  863. package/dist/ionic/p-148bdf18.entry.js +0 -4
  864. package/dist/ionic/p-16116947.entry.js +0 -4
  865. package/dist/ionic/p-19f80390.entry.js +0 -4
  866. package/dist/ionic/p-1a91f317.entry.js +0 -4
  867. package/dist/ionic/p-1bbd0a23.entry.js +0 -4
  868. package/dist/ionic/p-1d5b934a.entry.js +0 -4
  869. package/dist/ionic/p-29032e49.entry.js +0 -4
  870. package/dist/ionic/p-2cb0f39f.entry.js +0 -4
  871. package/dist/ionic/p-349fc921.entry.js +0 -4
  872. package/dist/ionic/p-3624b640.entry.js +0 -4
  873. package/dist/ionic/p-36a54836.entry.js +0 -4
  874. package/dist/ionic/p-39ed3212.entry.js +0 -4
  875. package/dist/ionic/p-40d56a51.entry.js +0 -4
  876. package/dist/ionic/p-4f2c5845.entry.js +0 -4
  877. package/dist/ionic/p-528af4e6.entry.js +0 -4
  878. package/dist/ionic/p-54dec9b1.entry.js +0 -4
  879. package/dist/ionic/p-5c976c00.entry.js +0 -4
  880. package/dist/ionic/p-6383afc2.entry.js +0 -4
  881. package/dist/ionic/p-7b12d853.entry.js +0 -4
  882. package/dist/ionic/p-7bac2c5f.entry.js +0 -4
  883. package/dist/ionic/p-7da05504.entry.js +0 -4
  884. package/dist/ionic/p-8cdb4ff5.entry.js +0 -4
  885. package/dist/ionic/p-8d96a0cd.entry.js +0 -4
  886. package/dist/ionic/p-8e2de06f.entry.js +0 -4
  887. package/dist/ionic/p-91d6ccb0.entry.js +0 -4
  888. package/dist/ionic/p-92e8f208.entry.js +0 -4
  889. package/dist/ionic/p-982fe1c4.entry.js +0 -4
  890. package/dist/ionic/p-9ddf2620.entry.js +0 -4
  891. package/dist/ionic/p-9eeaBrnk.js +0 -4
  892. package/dist/ionic/p-B5MDSrGg.js +0 -4
  893. package/dist/ionic/p-BB-JoKGB.js +0 -4
  894. package/dist/ionic/p-BmVRXR1y.js +0 -4
  895. package/dist/ionic/p-Br3vSlYh.js +0 -4
  896. package/dist/ionic/p-C-Cct-6D.js +0 -4
  897. package/dist/ionic/p-C4I6B3uV.js +0 -4
  898. package/dist/ionic/p-C8d2ebIg.js +0 -4
  899. package/dist/ionic/p-CIGNaXM1.js +0 -4
  900. package/dist/ionic/p-CSwZyt05.js +0 -4
  901. package/dist/ionic/p-CtWGkNnJ.js +0 -4
  902. package/dist/ionic/p-CvaZMP6T.js +0 -4
  903. package/dist/ionic/p-D2fQU_qK.js +0 -4
  904. package/dist/ionic/p-DAfH9Iif.js +0 -4
  905. package/dist/ionic/p-DJKvq7vb.js +0 -4
  906. package/dist/ionic/p-Dm_oBkW1.js +0 -4
  907. package/dist/ionic/p-LaGjiAVo.js +0 -4
  908. package/dist/ionic/p-ZjP4CjeZ.js +0 -4
  909. package/dist/ionic/p-a81be128.entry.js +0 -4
  910. package/dist/ionic/p-ab33ef20.entry.js +0 -4
  911. package/dist/ionic/p-ac434970.entry.js +0 -4
  912. package/dist/ionic/p-afeb9df6.entry.js +0 -4
  913. package/dist/ionic/p-bc9f9032.entry.js +0 -4
  914. package/dist/ionic/p-bf81a468.entry.js +0 -4
  915. package/dist/ionic/p-c0d58c8e.entry.js +0 -4
  916. package/dist/ionic/p-c575e7ce.entry.js +0 -4
  917. package/dist/ionic/p-cde6d39b.entry.js +0 -4
  918. package/dist/ionic/p-d04d66fc.entry.js +0 -4
  919. package/dist/ionic/p-d3df6032.entry.js +0 -4
  920. package/dist/ionic/p-dbba38cf.entry.js +0 -4
  921. package/dist/ionic/p-e6c3214c.entry.js +0 -4
  922. package/dist/ionic/p-e6c465ff.entry.js +0 -4
  923. package/dist/ionic/p-ec76fec4.entry.js +0 -4
  924. package/dist/ionic/p-ee2e35a6.entry.js +0 -4
  925. package/dist/ionic/p-f2884bc2.entry.js +0 -4
  926. package/dist/ionic/p-f456d176.entry.js +0 -4
  927. package/dist/ionic/p-f7db572a.entry.js +0 -4
  928. package/dist/ionic/p-f9eb54ee.entry.js +0 -4
  929. /package/dist/collection/components/{input-password-toggle/input-password-toggle.css → refresher-content/refresher-content.css} +0 -0
@@ -1,16 +1,20 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
+ import xRegular from "@phosphor-icons/core/assets/regular/x.svg";
4
5
  import { Build, Host, forceUpdate, h, } from "@stencil/core";
5
6
  import { createNotchController } from "../../utils/forms/index";
6
7
  import { inheritAriaAttributes, debounceEvent, inheritAttributes, componentOnReady } from "../../utils/helpers";
8
+ import { printIonWarning } from "../../utils/logging/index";
7
9
  import { createSlotMutationController } from "../../utils/slot-mutation-controller";
8
10
  import { createColorClasses, hostContext } from "../../utils/theme";
9
11
  import { closeCircle, closeSharp } from "ionicons/icons";
10
- import { getIonMode } from "../../global/ionic-global";
12
+ import { config } from "../../global/config";
13
+ import { getIonTheme } from "../../global/ionic-global";
11
14
  import { getCounterText } from "./input.utils";
12
15
  /**
13
- * @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
16
+ * @virtualProp {"ios" | "md"} mode - The mode determines the platform behaviors of the component.
17
+ * @virtualProp {"ios" | "md" | "ionic"} theme - The theme determines the visual appearance of the component.
14
18
  *
15
19
  * @slot label - The label text to associate with the input. Use the `labelPlacement` property to control where the label is placed relative to the input. Use this if you need to render a label with custom HTML. (EXPERIMENTAL)
16
20
  * @slot start - Content to display at the leading edge of the input. (EXPERIMENTAL)
@@ -39,10 +43,6 @@ export class Input {
39
43
  * is applied in both cases.
40
44
  */
41
45
  this.hasFocus = false;
42
- /**
43
- * Track validation state for proper aria-live announcements
44
- */
45
- this.isInvalid = false;
46
46
  /**
47
47
  * Indicates whether and how the text value should be automatically capitalized as it is entered/edited by the user.
48
48
  * Available options: `"off"`, `"none"`, `"on"`, `"sentences"`, `"words"`, `"characters"`.
@@ -74,15 +74,6 @@ export class Input {
74
74
  * If `true`, the user cannot interact with the input.
75
75
  */
76
76
  this.disabled = false;
77
- /**
78
- * Where to place the label relative to the input.
79
- * `"start"`: The label will appear to the left of the input in LTR and to the right in RTL.
80
- * `"end"`: The label will appear to the right of the input in LTR and to the left in RTL.
81
- * `"floating"`: The label will appear smaller and above the input when the input is focused or it has a value. Otherwise it will appear on top of the input.
82
- * `"stacked"`: The label will appear smaller and above the input regardless even when the input is blurred or has no value.
83
- * `"fixed"`: The label has the same behavior as `"start"` except it also has a fixed width. Long text will be truncated with ellipses ("...").
84
- */
85
- this.labelPlacement = 'start';
86
77
  /**
87
78
  * The name of the control, which is submitted with the form data.
88
79
  */
@@ -99,6 +90,11 @@ export class Input {
99
90
  * If `true`, the element will have its spelling and grammar checked.
100
91
  */
101
92
  this.spellcheck = false;
93
+ /**
94
+ * The size of the input. If "large", it will have an increased height. By default the
95
+ * size is medium. This property only applies to the `"ionic"` theme.
96
+ */
97
+ this.size = 'medium';
102
98
  /**
103
99
  * The type of control to display. The default type is text.
104
100
  */
@@ -128,19 +124,6 @@ export class Input {
128
124
  }
129
125
  this.didInputClearOnEdit = false;
130
126
  this.ionBlur.emit(ev);
131
- /**
132
- * Check validation state after blur to handle framework-managed classes.
133
- * Frameworks like Angular update classes asynchronously, often using
134
- * requestAnimationFrame or promises. Using setTimeout ensures we check
135
- * after all microtasks and animation frames have completed.
136
- */
137
- setTimeout(() => {
138
- const newIsInvalid = this.checkValidationState();
139
- if (this.isInvalid !== newIsInvalid) {
140
- this.isInvalid = newIsInvalid;
141
- forceUpdate(this);
142
- }
143
- }, 100);
144
127
  };
145
128
  this.onFocus = (ev) => {
146
129
  this.hasFocus = true;
@@ -239,43 +222,14 @@ export class Input {
239
222
  }
240
223
  componentWillLoad() {
241
224
  this.inheritedAttributes = Object.assign(Object.assign({}, inheritAriaAttributes(this.el)), inheritAttributes(this.el, ['tabindex', 'title', 'data-form-type', 'dir']));
242
- }
243
- /**
244
- * Checks if the input is in an invalid state based on validation classes
245
- */
246
- checkValidationState() {
247
- // Check for both Ionic and Angular validation classes on the element itself
248
- // Angular applies ng-touched/ng-invalid directly to the host element with ngModel
249
- const hasIonTouched = this.el.classList.contains('ion-touched');
250
- const hasIonInvalid = this.el.classList.contains('ion-invalid');
251
- const hasNgTouched = this.el.classList.contains('ng-touched');
252
- const hasNgInvalid = this.el.classList.contains('ng-invalid');
253
- // Return true if we have both touched and invalid states from either framework
254
- const isTouched = hasIonTouched || hasNgTouched;
255
- const isInvalid = hasIonInvalid || hasNgInvalid;
256
- return isTouched && isInvalid;
225
+ if (this.labelPlacement === undefined) {
226
+ this.labelPlacement = getIonTheme(this) === 'ionic' ? ionicThemeDefaultLabelPlacement : 'start';
227
+ }
257
228
  }
258
229
  connectedCallback() {
259
230
  const { el } = this;
260
231
  this.slotMutationController = createSlotMutationController(el, ['label', 'start', 'end'], () => forceUpdate(this));
261
232
  this.notchController = createNotchController(el, () => this.notchSpacerEl, () => this.labelSlot);
262
- // Watch for class changes to update validation state
263
- if (Build.isBrowser && typeof MutationObserver !== 'undefined') {
264
- this.validationObserver = new MutationObserver(() => {
265
- const newIsInvalid = this.checkValidationState();
266
- if (this.isInvalid !== newIsInvalid) {
267
- this.isInvalid = newIsInvalid;
268
- // Force a re-render to update aria-describedby immediately
269
- forceUpdate(this);
270
- }
271
- });
272
- this.validationObserver.observe(el, {
273
- attributes: true,
274
- attributeFilter: ['class'],
275
- });
276
- }
277
- // Always set initial state
278
- this.isInvalid = this.checkValidationState();
279
233
  this.debounceChanged();
280
234
  if (Build.isBrowser) {
281
235
  document.dispatchEvent(new CustomEvent('ionInputDidLoad', {
@@ -312,11 +266,6 @@ export class Input {
312
266
  this.notchController.destroy();
313
267
  this.notchController = undefined;
314
268
  }
315
- // Clean up validation observer to prevent memory leaks
316
- if (this.validationObserver) {
317
- this.validationObserver.disconnect();
318
- this.validationObserver = undefined;
319
- }
320
269
  }
321
270
  /**
322
271
  * Sets focus on the native `input` in `ion-input`. Use this method instead of the global
@@ -378,6 +327,52 @@ export class Input {
378
327
  getValue() {
379
328
  return typeof this.value === 'number' ? this.value.toString() : (this.value || '').toString();
380
329
  }
330
+ getFill() {
331
+ const theme = getIonTheme(this);
332
+ const { fill } = this;
333
+ if (theme === 'ionic' && fill === undefined) {
334
+ return 'outline';
335
+ }
336
+ return fill;
337
+ }
338
+ getLabelPlacement() {
339
+ const theme = getIonTheme(this);
340
+ const { el, labelPlacement } = this;
341
+ if (theme === 'ionic' && labelPlacement !== 'stacked' && labelPlacement !== 'floating') {
342
+ printIonWarning(`The "${labelPlacement}" label placement is not supported in the ${theme} theme. The default value of "${ionicThemeDefaultLabelPlacement}" will be used instead.`, el);
343
+ return ionicThemeDefaultLabelPlacement;
344
+ }
345
+ return labelPlacement;
346
+ }
347
+ // TODO(FW-6201): Remove this method when size is supported in ios and md
348
+ getSize() {
349
+ const theme = getIonTheme(this);
350
+ const { size } = this;
351
+ if (theme !== 'ionic' && (size === 'large' || size === 'xlarge')) {
352
+ printIonWarning(`The "${size}" size is not supported in the ${theme} theme.`);
353
+ // Fallback to medium size, which is the default size for all themes.
354
+ return 'medium';
355
+ }
356
+ return size;
357
+ }
358
+ getShape() {
359
+ const theme = getIonTheme(this);
360
+ const { shape } = this;
361
+ // TODO(ROU-5475): Remove the check for `soft` when the shape is supported in ios and md.
362
+ if ((theme === 'ios' && shape === 'round') || (theme !== 'ionic' && shape === 'soft')) {
363
+ printIonWarning(`The "${shape}" shape is not supported in the ${theme} theme.`);
364
+ return undefined;
365
+ }
366
+ if (shape !== undefined) {
367
+ return shape;
368
+ }
369
+ // TODO(FW-6229): Update this when the default shape has been decided.
370
+ if (theme !== 'ionic') {
371
+ return undefined;
372
+ }
373
+ // Fallback to round shape, which is the default shape for the ionic theme.
374
+ return 'round';
375
+ }
381
376
  checkClearOnEdit(ev) {
382
377
  if (!this.shouldClearOnEdit()) {
383
378
  return;
@@ -418,15 +413,15 @@ export class Input {
418
413
  * Renders the helper text or error text values
419
414
  */
420
415
  renderHintText() {
421
- const { helperText, errorText, helperTextId, errorTextId, isInvalid } = this;
416
+ const { helperText, errorText, helperTextId, errorTextId } = this;
422
417
  return [
423
- h("div", { id: helperTextId, class: "helper-text", "aria-live": "polite" }, !isInvalid ? helperText : null),
424
- h("div", { id: errorTextId, class: "error-text", role: "alert" }, isInvalid ? errorText : null),
418
+ h("div", { id: helperTextId, class: "helper-text" }, helperText),
419
+ h("div", { id: errorTextId, class: "error-text" }, errorText),
425
420
  ];
426
421
  }
427
422
  getHintTextID() {
428
- const { isInvalid, helperText, errorText, helperTextId, errorTextId } = this;
429
- if (isInvalid && errorText) {
423
+ const { el, helperText, errorText, helperTextId, errorTextId } = this;
424
+ if (el.classList.contains('ion-touched') && el.classList.contains('ion-invalid') && errorText) {
430
425
  return errorTextId;
431
426
  }
432
427
  if (helperText) {
@@ -487,9 +482,9 @@ export class Input {
487
482
  * when fill="outline".
488
483
  */
489
484
  renderLabelContainer() {
490
- const mode = getIonMode(this);
491
- const hasOutlineFill = mode === 'md' && this.fill === 'outline';
492
- if (hasOutlineFill) {
485
+ const theme = getIonTheme(this);
486
+ const hasOutlineFill = this.fill === 'outline';
487
+ if (hasOutlineFill && theme === 'md') {
493
488
  /**
494
489
  * The outline fill has a special outline
495
490
  * that appears around the input and the label.
@@ -506,19 +501,47 @@ export class Input {
506
501
  ];
507
502
  }
508
503
  /**
509
- * If not using the outline style,
510
- * we can render just the label.
504
+ * If not using the outline style, OR if using the
505
+ * ionic theme, just render the label. For the ionic
506
+ * theme, the outline will be rendered elsewhere.
511
507
  */
512
508
  return this.renderLabel();
513
509
  }
510
+ /**
511
+ * Get the icon to use for the clear icon.
512
+ * If an icon is set on the component, use that.
513
+ * Otherwise, use the icon set in the config.
514
+ * If no icon is set in the config, use the default icon.
515
+ *
516
+ * @internal
517
+ */
518
+ get inputClearIcon() {
519
+ // Return the icon if it is explicitly set
520
+ if (this.clearInputIcon != null) {
521
+ return this.clearInputIcon;
522
+ }
523
+ // Determine the theme and map to default icons
524
+ const theme = getIonTheme(this);
525
+ const defaultIcons = {
526
+ ios: closeCircle,
527
+ ionic: xRegular,
528
+ md: closeSharp,
529
+ };
530
+ // Get the default icon based on the theme, falling back to 'md' icon if necessary
531
+ const defaultIcon = defaultIcons[theme] || defaultIcons.md;
532
+ // Return the configured input clear icon or the default icon
533
+ return config.get('inputClearIcon', defaultIcon);
534
+ }
514
535
  render() {
515
- const { disabled, fill, readonly, shape, inputId, labelPlacement, el, hasFocus, clearInputIcon } = this;
516
- const mode = getIonMode(this);
536
+ const { disabled, readonly, inputId, el, hasFocus, clearInput, inputClearIcon } = this;
537
+ const theme = getIonTheme(this);
517
538
  const value = this.getValue();
539
+ const fill = this.getFill();
540
+ const size = this.getSize();
541
+ const shape = this.getShape();
518
542
  const inItem = hostContext('ion-item', this.el);
519
- const shouldRenderHighlight = mode === 'md' && fill !== 'outline' && !inItem;
520
- const defaultClearIcon = mode === 'ios' ? closeCircle : closeSharp;
521
- const clearIconData = clearInputIcon !== null && clearInputIcon !== void 0 ? clearInputIcon : defaultClearIcon;
543
+ const shouldRenderHighlight = theme === 'md' && fill !== 'outline' && !inItem;
544
+ const labelPlacement = this.getLabelPlacement();
522
545
  const hasValue = this.hasValue();
523
546
  const hasStartEndSlots = el.querySelector('[slot="start"], [slot="end"]') !== null;
524
547
  /**
@@ -539,38 +562,52 @@ export class Input {
539
562
  * TODO(FW-5592): Remove hasStartEndSlots condition
540
563
  */
541
564
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
542
- return (h(Host, { key: '7b7a7ffdf1b3528b2d6dff693beea2ae7553fd8c', class: createColorClasses(this.color, {
543
- [mode]: true,
565
+ return (h(Host, { key: '3d133f890fe77981ed5fc6c2d4133b46b634053a', class: createColorClasses(this.color, {
566
+ [theme]: true,
544
567
  'has-value': hasValue,
545
568
  'has-focus': hasFocus,
546
569
  'label-floating': labelShouldFloat,
547
570
  [`input-fill-${fill}`]: fill !== undefined,
548
571
  [`input-shape-${shape}`]: shape !== undefined,
572
+ [`input-size-${size}`]: true,
549
573
  [`input-label-placement-${labelPlacement}`]: true,
550
574
  'in-item': inItem,
551
575
  'in-item-color': hostContext('ion-item.ion-color', this.el),
552
576
  'input-disabled': disabled,
553
- }) }, h("label", { key: 'd8c75416ad9cc7623bcc68acd718cc1f71b56a31', class: "input-wrapper", htmlFor: inputId, onClick: this.onLabelClick }, this.renderLabelContainer(), h("div", { key: 'cfd382a5aa284e8248c6c4eb658ee3a97df73fdf', class: "native-wrapper", onClick: this.onLabelClick }, h("slot", { key: '03237fe5befc1c6f6f54a751613a8f8cdee0106b', name: "start" }), h("input", Object.assign({ key: 'cfb1a1fa653e9b6c91702f134adbef42568feab1', class: "native-input", ref: (input) => (this.nativeInput = input), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, min: this.min, max: this.max, minLength: this.minlength, maxLength: this.maxlength, multiple: this.multiple, name: this.name, pattern: this.pattern, placeholder: this.placeholder || '', readOnly: readonly, required: this.required, spellcheck: this.spellcheck, step: this.step, type: this.type, value: value, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeydown, onCompositionstart: this.onCompositionStart, onCompositionend: this.onCompositionEnd, "aria-describedby": this.getHintTextID(), "aria-invalid": this.isInvalid ? 'true' : undefined }, this.inheritedAttributes)), this.clearInput && !readonly && !disabled && (h("button", { key: '446a5575018472bb2d916ce301c7faa92f7e0ffc', "aria-label": "reset", type: "button", class: "input-clear-icon", onPointerDown: (ev) => {
577
+ 'input-readonly': readonly,
578
+ }) }, h("label", { key: '4655a7eacb20f6aa64d4a53571f8b39be9ccffce', class: "input-wrapper", htmlFor: inputId, onClick: this.onLabelClick }, this.renderLabelContainer(), h("div", { key: 'c15bec1f2e66e49a89da2b50bf39cc6d723a8c6b', class: "native-wrapper", onClick: this.onLabelClick },
579
+ /**
580
+ * For the ionic theme, we render the outline container here
581
+ * instead of higher up, so it can be positioned relative to
582
+ * the native wrapper instead of the <label> element or the
583
+ * entire component. This allows the label text to be positioned
584
+ * above the outline, while staying within the bounds of the
585
+ * <label> element, ensuring that clicking the label text
586
+ * focuses the input.
587
+ */
588
+ theme === 'ionic' && h("div", { key: '49614da6105132d493ea3eeb80e93f4132835314', class: "input-outline" }), h("slot", { key: '9304fd0370251774ee68947f53c8cfd4bba6b9e8', name: "start" }), h("input", Object.assign({ key: '553d1ee78627fba7ebe75fe7788069514437390d', class: "native-input", ref: (input) => (this.nativeInput = input), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, min: this.min, max: this.max, minLength: this.minlength, maxLength: this.maxlength, multiple: this.multiple, name: this.name, pattern: this.pattern, placeholder: this.placeholder || '', readOnly: readonly, required: this.required, spellcheck: this.spellcheck, step: this.step, type: this.type, value: value, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeydown, onCompositionstart: this.onCompositionStart, onCompositionend: this.onCompositionEnd, "aria-describedby": this.getHintTextID(), "aria-invalid": this.getHintTextID() === this.errorTextId }, this.inheritedAttributes)), clearInput && !readonly && !disabled && (h("button", { key: '616db219da13bb16c383c527fa23ff3d79597447', "aria-label": "reset", type: "button", class: "input-clear-icon", onPointerDown: (ev) => {
554
589
  /**
555
590
  * This prevents mobile browsers from
556
591
  * blurring the input when the clear
557
592
  * button is activated.
558
593
  */
559
594
  ev.preventDefault();
560
- }, onClick: this.clearTextInput }, h("ion-icon", { key: '2c3e12a424cba56b03eb0f0c2d1dca58ba1c81a8', "aria-hidden": "true", icon: clearIconData }))), h("slot", { key: '5c01c0549264f08ac05bbca6caba7597bb435c9c', name: "end" })), shouldRenderHighlight && h("div", { key: '3f26a10f86971a1e07ca7a9cb2b53989b51e0bca', class: "input-highlight" })), this.renderBottomContent()));
595
+ }, onClick: this.clearTextInput }, h("ion-icon", { key: '5812593a1b72e3a0cf907eab0e110cd055750ab2', "aria-hidden": "true", icon: inputClearIcon }))), h("slot", { key: '11672f33c5f78ad185713f30fc18024cb08a2c64', name: "end" })), shouldRenderHighlight && h("div", { key: '271b2d34d23d37f354feed28cf8ef15c2a4583c3', class: "input-highlight" })), this.renderBottomContent()));
561
596
  }
562
597
  static get is() { return "ion-input"; }
563
598
  static get encapsulation() { return "scoped"; }
564
599
  static get originalStyleUrls() {
565
600
  return {
566
601
  "ios": ["input.ios.scss"],
567
- "md": ["input.md.scss"]
602
+ "md": ["input.md.scss"],
603
+ "ionic": ["input.ionic.scss"]
568
604
  };
569
605
  }
570
606
  static get styleUrls() {
571
607
  return {
572
608
  "ios": ["input.ios.css"],
573
- "md": ["input.md.css"]
609
+ "md": ["input.md.css"],
610
+ "ionic": ["input.ionic.css"]
574
611
  };
575
612
  }
576
613
  static get properties() {
@@ -626,7 +663,7 @@ export class Input {
626
663
  "mutable": false,
627
664
  "complexType": {
628
665
  "original": "AutocompleteTypes",
629
- "resolved": "\"name\" | \"email\" | \"tel\" | \"url\" | \"on\" | \"off\" | \"honorific-prefix\" | \"given-name\" | \"additional-name\" | \"family-name\" | \"honorific-suffix\" | \"nickname\" | \"username\" | \"new-password\" | \"current-password\" | \"one-time-code\" | \"organization-title\" | \"organization\" | \"street-address\" | \"address-line1\" | \"address-line2\" | \"address-line3\" | \"address-level4\" | \"address-level3\" | \"address-level2\" | \"address-level1\" | \"country\" | \"country-name\" | \"postal-code\" | \"cc-name\" | \"cc-given-name\" | \"cc-additional-name\" | \"cc-family-name\" | \"cc-number\" | \"cc-exp\" | \"cc-exp-month\" | \"cc-exp-year\" | \"cc-csc\" | \"cc-type\" | \"transaction-currency\" | \"transaction-amount\" | \"language\" | \"bday\" | \"bday-day\" | \"bday-month\" | \"bday-year\" | \"sex\" | \"tel-country-code\" | \"tel-national\" | \"tel-area-code\" | \"tel-local\" | \"tel-extension\" | \"impp\" | \"photo\"",
666
+ "resolved": "\"name\" | \"url\" | \"off\" | \"on\" | \"additional-name\" | \"address-level1\" | \"address-level2\" | \"address-level3\" | \"address-level4\" | \"address-line1\" | \"address-line2\" | \"address-line3\" | \"bday-day\" | \"bday-month\" | \"bday-year\" | \"cc-csc\" | \"cc-exp\" | \"cc-exp-month\" | \"cc-exp-year\" | \"cc-family-name\" | \"cc-given-name\" | \"cc-name\" | \"cc-number\" | \"cc-type\" | \"country\" | \"country-name\" | \"current-password\" | \"family-name\" | \"given-name\" | \"honorific-prefix\" | \"honorific-suffix\" | \"new-password\" | \"one-time-code\" | \"organization\" | \"postal-code\" | \"street-address\" | \"transaction-amount\" | \"transaction-currency\" | \"username\" | \"email\" | \"tel\" | \"tel-area-code\" | \"tel-country-code\" | \"tel-extension\" | \"tel-local\" | \"tel-national\" | \"nickname\" | \"organization-title\" | \"cc-additional-name\" | \"language\" | \"bday\" | \"sex\" | \"impp\" | \"photo\"",
630
667
  "references": {
631
668
  "AutocompleteTypes": {
632
669
  "location": "import",
@@ -872,7 +909,7 @@ export class Input {
872
909
  "optional": true,
873
910
  "docs": {
874
911
  "tags": [],
875
- "text": "The fill for the item. If `\"solid\"` the item will have a background. If\n`\"outline\"` the item will be transparent with a border. Only available in `md` mode."
912
+ "text": "The fill for the item. If `\"solid\"` the item will have a background. If\n`\"outline\"` the item will be transparent with a border. Only available when the theme is `\"md\"`."
876
913
  },
877
914
  "getter": false,
878
915
  "setter": false,
@@ -938,22 +975,21 @@ export class Input {
938
975
  "labelPlacement": {
939
976
  "type": "string",
940
977
  "attribute": "label-placement",
941
- "mutable": false,
978
+ "mutable": true,
942
979
  "complexType": {
943
980
  "original": "'start' | 'end' | 'floating' | 'stacked' | 'fixed'",
944
- "resolved": "\"end\" | \"fixed\" | \"floating\" | \"stacked\" | \"start\"",
981
+ "resolved": "\"end\" | \"fixed\" | \"floating\" | \"stacked\" | \"start\" | undefined",
945
982
  "references": {}
946
983
  },
947
984
  "required": false,
948
- "optional": false,
985
+ "optional": true,
949
986
  "docs": {
950
987
  "tags": [],
951
- "text": "Where to place the label relative to the input.\n`\"start\"`: The label will appear to the left of the input in LTR and to the right in RTL.\n`\"end\"`: The label will appear to the right of the input in LTR and to the left in RTL.\n`\"floating\"`: The label will appear smaller and above the input when the input is focused or it has a value. Otherwise it will appear on top of the input.\n`\"stacked\"`: The label will appear smaller and above the input regardless even when the input is blurred or has no value.\n`\"fixed\"`: The label has the same behavior as `\"start\"` except it also has a fixed width. Long text will be truncated with ellipses (\"...\")."
988
+ "text": "Where to place the label relative to the input.\n`\"start\"`: The label will appear to the left of the input in LTR and to the right in RTL.\n`\"end\"`: The label will appear to the right of the input in LTR and to the left in RTL.\n`\"floating\"`: The label will appear smaller and above the input when the input is focused or it has a value. Otherwise it will appear on top of the input.\n`\"stacked\"`: The label will appear smaller and above the input regardless even when the input is blurred or has no value.\n`\"fixed\"`: The label has the same behavior as `\"start\"` except it also has a fixed width. Long text will be truncated with ellipses (\"...\").\n\nDefaults to \"stacked\" for the ionic theme, or \"start\" for all other themes.\n\nIn the ionic theme, only the values \"stacked\" and \"floating\" are supported."
952
989
  },
953
990
  "getter": false,
954
991
  "setter": false,
955
- "reflect": false,
956
- "defaultValue": "'start'"
992
+ "reflect": false
957
993
  },
958
994
  "max": {
959
995
  "type": "any",
@@ -1153,15 +1189,15 @@ export class Input {
1153
1189
  "attribute": "shape",
1154
1190
  "mutable": false,
1155
1191
  "complexType": {
1156
- "original": "'round'",
1157
- "resolved": "\"round\" | undefined",
1192
+ "original": "'soft' | 'round' | 'rectangular'",
1193
+ "resolved": "\"rectangular\" | \"round\" | \"soft\" | undefined",
1158
1194
  "references": {}
1159
1195
  },
1160
1196
  "required": false,
1161
1197
  "optional": true,
1162
1198
  "docs": {
1163
1199
  "tags": [],
1164
- "text": "The shape of the input. If \"round\" it will have an increased border radius."
1200
+ "text": "Set to `\"soft\"` for an input with slightly rounded corners, `\"round\"` for an input with fully\nrounded corners, or `\"rectangular\"` for an input without rounded corners.\nDefaults to `\"round\"` for the ionic theme, and `undefined` for all other themes.\nOnly applies when the fill is set to `\"solid\"` or `\"outline\"`."
1165
1201
  },
1166
1202
  "getter": false,
1167
1203
  "setter": false,
@@ -1206,6 +1242,26 @@ export class Input {
1206
1242
  "setter": false,
1207
1243
  "reflect": false
1208
1244
  },
1245
+ "size": {
1246
+ "type": "string",
1247
+ "attribute": "size",
1248
+ "mutable": false,
1249
+ "complexType": {
1250
+ "original": "'medium' | 'large' | 'xlarge'",
1251
+ "resolved": "\"large\" | \"medium\" | \"xlarge\" | undefined",
1252
+ "references": {}
1253
+ },
1254
+ "required": false,
1255
+ "optional": true,
1256
+ "docs": {
1257
+ "tags": [],
1258
+ "text": "The size of the input. If \"large\", it will have an increased height. By default the\nsize is medium. This property only applies to the `\"ionic\"` theme."
1259
+ },
1260
+ "getter": false,
1261
+ "setter": false,
1262
+ "reflect": false,
1263
+ "defaultValue": "'medium'"
1264
+ },
1209
1265
  "type": {
1210
1266
  "type": "string",
1211
1267
  "attribute": "type",
@@ -1256,8 +1312,7 @@ export class Input {
1256
1312
  }
1257
1313
  static get states() {
1258
1314
  return {
1259
- "hasFocus": {},
1260
- "isInvalid": {}
1315
+ "hasFocus": {}
1261
1316
  };
1262
1317
  }
1263
1318
  static get events() {
@@ -1414,3 +1469,4 @@ export class Input {
1414
1469
  }
1415
1470
  }
1416
1471
  let inputIds = 0;
1472
+ const ionicThemeDefaultLabelPlacement = 'stacked';