voyager-ionic-core 8.8.17 → 9.0.1

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 (794) hide show
  1. package/components/index.js +1 -1
  2. package/components/ion-accordion-group.js +1 -1
  3. package/components/ion-accordion.js +1 -1
  4. package/components/ion-action-sheet.js +1 -1
  5. package/components/ion-alert.js +1 -1
  6. package/components/ion-app.js +1 -1
  7. package/components/ion-avatar.js +1 -1
  8. package/components/ion-back-button.js +1 -1
  9. package/components/ion-backdrop.js +1 -1
  10. package/components/ion-badge.js +1 -1
  11. package/components/ion-breadcrumb.js +1 -1
  12. package/components/ion-breadcrumbs.js +1 -1
  13. package/components/ion-button.js +1 -1
  14. package/components/ion-buttons.js +1 -1
  15. package/components/ion-card-content.js +1 -1
  16. package/components/ion-card-header.js +1 -1
  17. package/components/ion-card-subtitle.js +1 -1
  18. package/components/ion-card-title.js +1 -1
  19. package/components/ion-card.js +1 -1
  20. package/components/ion-checkbox.js +1 -1
  21. package/components/ion-chip.js +1 -1
  22. package/components/ion-col.js +1 -1
  23. package/components/ion-content.js +1 -1
  24. package/components/ion-datetime-button.js +1 -1
  25. package/components/ion-datetime.js +1 -1
  26. package/components/ion-fab-button.js +1 -1
  27. package/components/ion-fab-list.js +1 -1
  28. package/components/ion-fab.js +1 -1
  29. package/components/ion-footer.js +1 -1
  30. package/components/ion-grid.js +1 -1
  31. package/components/ion-header.js +1 -1
  32. package/components/ion-icon.js +1 -1
  33. package/components/ion-img.js +1 -1
  34. package/components/ion-infinite-scroll-content.js +1 -1
  35. package/components/ion-infinite-scroll.js +1 -1
  36. package/components/ion-input-otp.js +1 -1
  37. package/components/ion-input-password-toggle.js +1 -1
  38. package/components/ion-input.js +1 -1
  39. package/components/ion-item-divider.js +1 -1
  40. package/components/ion-item-group.js +1 -1
  41. package/components/ion-item-option.js +1 -1
  42. package/components/ion-item-options.js +1 -1
  43. package/components/ion-item-sliding.js +1 -1
  44. package/components/ion-item.js +1 -1
  45. package/components/ion-label.js +1 -1
  46. package/components/ion-list-header.js +1 -1
  47. package/components/ion-list.js +1 -1
  48. package/components/ion-loading.js +1 -1
  49. package/components/ion-menu-button.js +1 -1
  50. package/components/ion-menu-toggle.js +1 -1
  51. package/components/ion-menu.js +1 -1
  52. package/components/ion-modal.js +1 -1
  53. package/components/ion-nav-link.js +1 -1
  54. package/components/ion-nav.js +1 -1
  55. package/components/ion-note.js +1 -1
  56. package/components/ion-picker-column-option.js +1 -1
  57. package/components/ion-picker-column.js +1 -1
  58. package/components/ion-picker.js +1 -1
  59. package/components/ion-popover.js +1 -1
  60. package/components/ion-progress-bar.js +1 -1
  61. package/components/ion-radio-group.js +1 -1
  62. package/components/ion-radio.js +1 -1
  63. package/components/ion-range.js +1 -1
  64. package/components/ion-refresher-content.js +1 -1
  65. package/components/ion-refresher.js +1 -1
  66. package/components/ion-reorder-group.js +1 -1
  67. package/components/ion-reorder.js +1 -1
  68. package/components/ion-ripple-effect.js +1 -1
  69. package/components/ion-route-redirect.js +1 -1
  70. package/components/ion-route.js +1 -1
  71. package/components/ion-router-link.js +1 -1
  72. package/components/ion-router-outlet.js +1 -1
  73. package/components/ion-router.js +1 -1
  74. package/components/ion-row.js +1 -1
  75. package/components/ion-searchbar.js +1 -1
  76. package/components/ion-segment-button.js +1 -1
  77. package/components/ion-segment-content.js +1 -1
  78. package/components/ion-segment-view.js +1 -1
  79. package/components/ion-segment.js +1 -1
  80. package/components/ion-select-modal.js +1 -1
  81. package/components/ion-select-option.js +1 -1
  82. package/components/ion-select-popover.js +1 -1
  83. package/components/ion-select.js +1 -1
  84. package/components/ion-skeleton-text.js +1 -1
  85. package/components/ion-spinner.js +1 -1
  86. package/components/ion-split-pane.js +1 -1
  87. package/components/ion-tab-bar.js +1 -1
  88. package/components/ion-tab-button.js +1 -1
  89. package/components/ion-tab.js +1 -1
  90. package/components/ion-tabs.js +1 -1
  91. package/components/ion-text.js +1 -1
  92. package/components/ion-textarea.js +1 -1
  93. package/components/ion-thumbnail.js +1 -1
  94. package/components/ion-title.js +1 -1
  95. package/components/ion-toast.js +1 -1
  96. package/components/ion-toggle.js +1 -1
  97. package/components/ion-toolbar.js +1 -1
  98. package/components/p-1sJ0ZDPe.js +4 -0
  99. package/components/p-5ldEpNdG.js +4 -0
  100. package/components/p-6ZLn6K5e.js +4 -0
  101. package/components/p-B4lxwJ8N.js +4 -0
  102. package/components/{p-rCa2eL0j.js → p-BF48Oc0v.js} +1 -1
  103. package/components/p-BJr2B5hZ.js +4 -0
  104. package/components/p-BMPN55of.js +4 -0
  105. package/components/p-BNBnVi_1.js +4 -0
  106. package/components/{p-ChIZKXUu.js → p-BQyuFxYc.js} +1 -1
  107. package/components/p-BSQPZ79H.js +4 -0
  108. package/components/p-BT9-hMMz.js +4 -0
  109. package/components/p-BWoa-cki.js +4 -0
  110. package/components/p-BYJRZKHa.js +4 -0
  111. package/components/p-B_gJaBk0.js +4 -0
  112. package/components/p-BgkOsq-d.js +4 -0
  113. package/components/p-BhamHSw3.js +4 -0
  114. package/components/p-Bi-it1EH.js +4 -0
  115. package/components/p-C-NbvXu4.js +4 -0
  116. package/components/p-C0493tbX.js +4 -0
  117. package/components/p-C09TXohi.js +4 -0
  118. package/components/p-C4VpVfrJ.js +4 -0
  119. package/components/p-CEW4RXZO.js +4 -0
  120. package/components/p-CG_zZq_I.js +4 -0
  121. package/components/{p-B9jFTlwE.js → p-CJgnoKcN.js} +1 -1
  122. package/components/p-CMRYD_yR.js +4 -0
  123. package/components/{p-BMI53wYL.js → p-CNLioZ3B.js} +1 -1
  124. package/components/{p--JUspHvy.js → p-COO0eJOA.js} +1 -1
  125. package/components/p-CWAks_S_.js +4 -0
  126. package/{dist/ionic/p-KjNvRoEp.js → components/p-Cd1WaN-0.js} +1 -1
  127. package/components/p-CqbGBmqb.js +4 -0
  128. package/components/p-CrAKlX71.js +4 -0
  129. package/components/p-Cw6WocLJ.js +4 -0
  130. package/components/p-D0YpjgON.js +4 -0
  131. package/components/{p-DJZp0KTQ.js → p-D5w_FlVa.js} +1 -1
  132. package/components/p-D7-vHX0A.js +4 -0
  133. package/components/p-D7wDJdFn.js +4 -0
  134. package/components/p-DFLJvuRK.js +4 -0
  135. package/components/p-DGPjJNOU.js +4 -0
  136. package/components/p-DJR0R0e1.js +4 -0
  137. package/components/p-DL13ieTa.js +4 -0
  138. package/components/{p-DqLB8yFQ.js → p-DM1gJSMP.js} +1 -1
  139. package/components/p-DMBiAyOR.js +4 -0
  140. package/components/p-DWCzVL3Y.js +4 -0
  141. package/components/p-DZRZic9C.js +4 -0
  142. package/components/{p-C_hpsif8.js → p-DhNuxvJH.js} +1 -1
  143. package/components/p-DiuOa1vw.js +4 -0
  144. package/components/p-Dj40C8gm.js +4 -0
  145. package/components/p-Djmz-ssp.js +4 -0
  146. package/components/p-DnBNYc7u.js +4 -0
  147. package/components/p-DngGb-NV.js +4 -0
  148. package/components/p-Dojwmvde.js +4 -0
  149. package/components/p-DwSXbQSz.js +4 -0
  150. package/components/p-DxhHlJln.js +4 -0
  151. package/components/{p-DqZAXv2t.js → p-GGbIHyEF.js} +1 -1
  152. package/components/{p-j5IxBIan.js → p-Hp8t4RMX.js} +1 -1
  153. package/components/p-M34T2gyX.js +4 -0
  154. package/components/p-TWw4e4sO.js +4 -0
  155. package/components/{p-Cfx4M1Bn.js → p-YjMkHuvH.js} +1 -1
  156. package/components/p-byZM6qHV.js +4 -0
  157. package/components/p-cEN43Ahr.js +4 -0
  158. package/components/p-qAXsfUff.js +4 -0
  159. package/dist/cjs/{animation-BJq0kcy2.js → animation-Kd1N7WTN.js} +4 -4
  160. package/dist/cjs/{app-globals-BlqrqKTN.js → app-globals-b1G4t26O.js} +1 -1
  161. package/dist/cjs/{button-active-0mPOKmV2.js → button-active-CQCFubJJ.js} +3 -3
  162. package/dist/cjs/config-CjUbvdPW.js +36 -0
  163. package/dist/cjs/dir-zwDPRE5K.js +30 -0
  164. package/dist/cjs/{format-PxvGiOik.js → format-bHU8N1g5.js} +40 -30
  165. package/dist/cjs/{framework-delegate-BtICZDHr.js → framework-delegate-d-fWfeI6.js} +5 -7
  166. package/dist/cjs/{gesture-controller-dtqlP_q4.js → gesture-controller-CeJslptU.js} +1 -2
  167. package/dist/cjs/{haptic-ClPPQ_PS.js → haptic-Ch-X4gRx.js} +2 -3
  168. package/dist/cjs/{hardware-back-button-iUuF_76h.js → hardware-back-button-Bu4Dzw8l.js} +4 -4
  169. package/dist/cjs/{helpers-Cv23MFHM.js → helpers-7wzdhdeg.js} +15 -11
  170. package/dist/cjs/index-BbqUBe2T.js +429 -0
  171. package/dist/cjs/{index-D81eLYUM.js → index-C74Q3t6a.js} +3 -2
  172. package/dist/cjs/{index-BERfRao3.js → index-CQfEIyLK.js} +5 -5
  173. package/dist/cjs/{index-aC4x3Fk3.js → index-DFNrCX7M.js} +6 -7
  174. package/dist/cjs/{index-CAvQ7Tka.js → index-DRPqwSvU.js} +13 -30
  175. package/dist/cjs/{index-Ct7gcRif.js → index-DXoo08JC.js} +321 -26
  176. package/dist/cjs/{index-CIrkNXqJ.js → index-DtvKGwdh.js} +34 -2
  177. package/dist/cjs/{index-DqmRDbxg.js → index-wOmugbdg.js} +1 -1
  178. package/dist/cjs/index.cjs.js +19 -18
  179. package/dist/cjs/{input-shims-CFLg7uzj.js → input-shims-VJIiKBKv.js} +10 -11
  180. package/dist/cjs/input.utils-EHVE2RK_.js +35 -0
  181. package/dist/cjs/ion-accordion_2.cjs.entry.js +12 -12
  182. package/dist/cjs/ion-action-sheet.cjs.entry.js +92 -44
  183. package/dist/cjs/ion-alert.cjs.entry.js +144 -65
  184. package/dist/cjs/ion-app_8.cjs.entry.js +112 -40
  185. package/dist/cjs/ion-avatar_3.cjs.entry.js +4 -4
  186. package/dist/cjs/ion-back-button.cjs.entry.js +6 -5
  187. package/dist/cjs/ion-backdrop.cjs.entry.js +2 -2
  188. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +8 -7
  189. package/dist/cjs/ion-button_2.cjs.entry.js +12 -8
  190. package/dist/cjs/ion-card_5.cjs.entry.js +6 -5
  191. package/dist/cjs/ion-checkbox.cjs.entry.js +10 -7
  192. package/dist/cjs/ion-chip.cjs.entry.js +3 -3
  193. package/dist/cjs/ion-col_3.cjs.entry.js +10 -6
  194. package/dist/cjs/ion-datetime-button.cjs.entry.js +22 -25
  195. package/dist/cjs/{ion-datetime_3.cjs.entry.js → ion-datetime.cjs.entry.js} +182 -746
  196. package/dist/cjs/ion-fab_3.cjs.entry.js +7 -6
  197. package/dist/cjs/ion-img.cjs.entry.js +7 -4
  198. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +8 -6
  199. package/dist/cjs/ion-input-otp.cjs.entry.js +20 -29
  200. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +9 -10
  201. package/dist/cjs/ion-input.cjs.entry.js +58 -70
  202. package/dist/cjs/ion-item-option_3.cjs.entry.js +21 -24
  203. package/dist/cjs/ion-item_8.cjs.entry.js +38 -34
  204. package/dist/cjs/ion-loading.cjs.entry.js +29 -15
  205. package/dist/cjs/ion-menu_3.cjs.entry.js +23 -24
  206. package/dist/cjs/ion-modal.cjs.entry.js +283 -161
  207. package/dist/cjs/ion-nav_2.cjs.entry.js +30 -138
  208. package/dist/cjs/ion-picker-column-option.cjs.entry.js +8 -13
  209. package/dist/cjs/ion-picker-column.cjs.entry.js +218 -62
  210. package/dist/cjs/ion-picker.cjs.entry.js +4 -4
  211. package/dist/cjs/ion-popover.cjs.entry.js +50 -30
  212. package/dist/cjs/ion-progress-bar.cjs.entry.js +6 -5
  213. package/dist/cjs/ion-radio_2.cjs.entry.js +12 -11
  214. package/dist/cjs/ion-range.cjs.entry.js +30 -25
  215. package/dist/cjs/ion-refresher_2.cjs.entry.js +34 -26
  216. package/dist/cjs/ion-reorder_2.cjs.entry.js +10 -9
  217. package/dist/cjs/ion-ripple-effect.cjs.entry.js +3 -3
  218. package/dist/cjs/ion-route_4.cjs.entry.js +36 -30
  219. package/dist/cjs/ion-searchbar.cjs.entry.js +27 -22
  220. package/dist/cjs/ion-segment-content.cjs.entry.js +2 -2
  221. package/dist/cjs/ion-segment-view.cjs.entry.js +5 -6
  222. package/dist/cjs/ion-segment_2.cjs.entry.js +30 -26
  223. package/dist/cjs/ion-select-modal.cjs.entry.js +93 -38
  224. package/dist/cjs/ion-select_3.cjs.entry.js +495 -126
  225. package/dist/cjs/ion-spinner.cjs.entry.js +5 -6
  226. package/dist/cjs/ion-split-pane.cjs.entry.js +4 -4
  227. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +15 -12
  228. package/dist/cjs/ion-tab_2.cjs.entry.js +8 -8
  229. package/dist/cjs/ion-text.cjs.entry.js +5 -5
  230. package/dist/cjs/ion-textarea.cjs.entry.js +56 -65
  231. package/dist/cjs/ion-toast.cjs.entry.js +26 -21
  232. package/dist/cjs/ion-toggle.cjs.entry.js +15 -13
  233. package/dist/cjs/{ionic-global-B-cA6LkY.js → ionic-global-CYJNT-2P.js} +13 -8
  234. package/dist/cjs/ionic.cjs.js +5 -5
  235. package/dist/cjs/{ios.transition-BOSWOaiK.js → ios.transition-DYGiD6gM.js} +14 -17
  236. package/dist/cjs/{item-multiple-inputs-D-gyg57c.js → item-multiple-inputs-Dv6qrMhm.js} +1 -1
  237. package/dist/cjs/{keyboard-hHzlEQpk.js → keyboard-Cix5TVkD.js} +2 -2
  238. package/dist/cjs/{keyboard-UuAS4D_9.js → keyboard-cHxZlTyz.js} +2 -2
  239. package/dist/cjs/{keyboard-controller-GXBiBRKS.js → keyboard-controller-PtZoN2GS.js} +6 -6
  240. package/dist/cjs/loader.cjs.js +4 -4
  241. package/dist/cjs/{md.transition-B8-wBZqt.js → md.transition-CrSkaoz6.js} +8 -8
  242. package/dist/cjs/overlay-control-label-D2sdL2O8.js +50 -0
  243. package/dist/cjs/{overlays-DdtIYQUH.js → overlays-BR21NUIG.js} +98 -58
  244. package/dist/cjs/select-option-render-CrbLc-1j.js +123 -0
  245. package/dist/cjs/slot-mutation-controller-D6IjSEIh.js +397 -0
  246. package/dist/cjs/{status-tap-BXX8H8_Y.js → status-tap-CNP5eD1R.js} +4 -3
  247. package/dist/cjs/{swipe-back-CCMaNiP2.js → swipe-back-CSIJQfu5.js} +5 -5
  248. package/dist/cjs/{theme-CeDs6Hcv.js → theme-Bw0rpaNN.js} +6 -1
  249. package/dist/collection/collection-manifest.json +7 -11
  250. package/dist/collection/components/accordion/accordion.js +5 -6
  251. package/dist/collection/components/accordion-group/accordion-group.js +2 -2
  252. package/dist/collection/components/action-sheet/action-sheet.ios.css +228 -2
  253. package/dist/collection/components/action-sheet/action-sheet.js +77 -31
  254. package/dist/collection/components/action-sheet/action-sheet.md.css +174 -2
  255. package/dist/collection/components/alert/alert.ios.css +279 -10
  256. package/dist/collection/components/alert/alert.js +127 -50
  257. package/dist/collection/components/alert/alert.md.css +268 -20
  258. package/dist/collection/components/breadcrumb/breadcrumb.js +1 -1
  259. package/dist/collection/components/breadcrumbs/breadcrumbs.js +1 -1
  260. package/dist/collection/components/button/button.js +5 -2
  261. package/dist/collection/components/card/card.js +1 -1
  262. package/dist/collection/components/checkbox/checkbox.js +4 -2
  263. package/dist/collection/components/col/col.js +7 -3
  264. package/dist/collection/components/content/content.js +56 -6
  265. package/dist/collection/components/datetime/datetime.ios.css +42 -2
  266. package/dist/collection/components/datetime/datetime.js +146 -77
  267. package/dist/collection/components/datetime/datetime.md.css +42 -1
  268. package/dist/collection/components/datetime/utils/data.js +13 -14
  269. package/dist/collection/components/datetime/utils/format.js +21 -11
  270. package/dist/collection/components/datetime/utils/manipulation.js +8 -8
  271. package/dist/collection/components/datetime/utils/parse.js +10 -10
  272. package/dist/collection/components/datetime/utils/state.js +8 -2
  273. package/dist/collection/components/datetime/utils/validate.js +4 -5
  274. package/dist/collection/components/datetime-button/datetime-button.ios.css +5 -0
  275. package/dist/collection/components/datetime-button/datetime-button.js +15 -20
  276. package/dist/collection/components/datetime-button/datetime-button.md.css +5 -0
  277. package/dist/collection/components/fab-button/fab-button.js +1 -1
  278. package/dist/collection/components/footer/footer.js +1 -1
  279. package/dist/collection/components/header/header.js +2 -2
  280. package/dist/collection/components/img/img.js +6 -1
  281. package/dist/collection/components/input/input.ios.css +57 -26
  282. package/dist/collection/components/input/input.js +51 -64
  283. package/dist/collection/components/input/input.md.css +79 -43
  284. package/dist/collection/components/input-otp/input-otp.js +15 -24
  285. package/dist/collection/components/input-password-toggle/input-password-toggle.js +5 -6
  286. package/dist/collection/components/item/item.js +19 -16
  287. package/dist/collection/components/item-divider/item-divider.js +2 -2
  288. package/dist/collection/components/item-group/item-group.js +1 -1
  289. package/dist/collection/components/item-option/item-option.js +2 -2
  290. package/dist/collection/components/item-options/item-options.js +1 -1
  291. package/dist/collection/components/item-sliding/item-sliding.js +12 -16
  292. package/dist/collection/components/label/label.js +2 -2
  293. package/dist/collection/components/list/list.js +2 -2
  294. package/dist/collection/components/list-header/list-header.js +2 -2
  295. package/dist/collection/components/loading/loading.js +17 -5
  296. package/dist/collection/components/menu/menu.js +6 -8
  297. package/dist/collection/components/menu-button/menu-button.js +2 -2
  298. package/dist/collection/components/menu-toggle/menu-toggle.js +2 -2
  299. package/dist/collection/components/modal/animations/ios.enter.js +1 -1
  300. package/dist/collection/components/modal/animations/md.enter.js +1 -1
  301. package/dist/collection/components/modal/gestures/sheet.js +42 -34
  302. package/dist/collection/components/modal/gestures/swipe-to-close.js +18 -35
  303. package/dist/collection/components/modal/gestures/utils.js +17 -0
  304. package/dist/collection/components/modal/modal.js +146 -65
  305. package/dist/collection/components/modal/safe-area-utils.js +39 -5
  306. package/dist/collection/components/nav/nav.js +24 -235
  307. package/dist/collection/components/nav-link/nav-link.js +1 -1
  308. package/dist/collection/components/note/note.js +2 -2
  309. package/dist/collection/components/picker/picker.js +1 -2
  310. package/dist/collection/components/picker-column/picker-column.css +3 -0
  311. package/dist/collection/components/picker-column/picker-column.js +212 -58
  312. package/dist/collection/components/picker-column-option/picker-column-option.js +3 -10
  313. package/dist/collection/components/picker-column-option/picker-column-option.md.css +6 -1
  314. package/dist/collection/components/popover/animations/ios.enter.js +1 -2
  315. package/dist/collection/components/popover/animations/md.enter.js +1 -2
  316. package/dist/collection/components/popover/popover.ios.css +15 -0
  317. package/dist/collection/components/popover/popover.js +32 -9
  318. package/dist/collection/components/popover/popover.md.css +15 -0
  319. package/dist/collection/components/popover/utils.js +4 -6
  320. package/dist/collection/components/progress-bar/progress-bar.js +1 -1
  321. package/dist/collection/components/radio/radio.js +5 -5
  322. package/dist/collection/components/radio-group/radio-group.js +2 -2
  323. package/dist/collection/components/range/range.js +24 -19
  324. package/dist/collection/components/refresher/refresher.js +19 -13
  325. package/dist/collection/components/refresher-content/refresher-content.js +1 -1
  326. package/dist/collection/components/reorder/reorder.js +1 -1
  327. package/dist/collection/components/reorder-group/reorder-group.js +1 -1
  328. package/dist/collection/components/ripple-effect/ripple-effect.js +1 -1
  329. package/dist/collection/components/route/route.js +1 -1
  330. package/dist/collection/components/router/router.js +2 -6
  331. package/dist/collection/components/router/utils/dom.js +25 -7
  332. package/dist/collection/components/router/utils/matching.js +6 -9
  333. package/dist/collection/components/router/utils/parser.js +1 -1
  334. package/dist/collection/components/router/utils/path.js +0 -1
  335. package/dist/collection/components/router-link/router-link.js +2 -2
  336. package/dist/collection/components/router-outlet/router-outlet.js +49 -10
  337. package/dist/collection/components/row/row.js +1 -1
  338. package/dist/collection/components/searchbar/searchbar.js +25 -20
  339. package/dist/collection/components/segment/segment.js +9 -11
  340. package/dist/collection/components/segment-button/segment-button.js +15 -9
  341. package/dist/collection/components/segment-content/segment-content.js +1 -1
  342. package/dist/collection/components/segment-view/segment-view.js +3 -4
  343. package/dist/collection/components/select/select.ios.css +96 -69
  344. package/dist/collection/components/select/select.js +405 -92
  345. package/dist/collection/components/select/select.md.css +118 -85
  346. package/dist/collection/components/select-modal/select-modal.ios.css +218 -0
  347. package/dist/collection/components/select-modal/select-modal.js +80 -27
  348. package/dist/collection/components/select-modal/select-modal.md.css +164 -0
  349. package/dist/collection/components/select-option/select-option.js +67 -3
  350. package/dist/collection/components/select-popover/select-popover.ios.css +218 -0
  351. package/dist/collection/components/select-popover/select-popover.js +78 -26
  352. package/dist/collection/components/select-popover/select-popover.md.css +164 -0
  353. package/dist/collection/components/skeleton-text/skeleton-text.js +2 -2
  354. package/dist/collection/components/spinner/spinner.js +2 -3
  355. package/dist/collection/components/split-pane/split-pane.js +2 -2
  356. package/dist/collection/components/tab/tab.js +2 -2
  357. package/dist/collection/components/tab-bar/tab-bar.js +2 -2
  358. package/dist/collection/components/tab-button/tab-button.js +6 -4
  359. package/dist/collection/components/tabs/tabs.js +2 -3
  360. package/dist/collection/components/text/text.js +2 -2
  361. package/dist/collection/components/textarea/textarea.ios.css +94 -62
  362. package/dist/collection/components/textarea/textarea.js +47 -57
  363. package/dist/collection/components/textarea/textarea.md.css +103 -77
  364. package/dist/collection/components/thumbnail/thumbnail.js +1 -1
  365. package/dist/collection/components/title/title.js +2 -2
  366. package/dist/collection/components/toast/toast.js +12 -9
  367. package/dist/collection/components/toggle/toggle.js +6 -4
  368. package/dist/collection/components/toolbar/toolbar.js +7 -4
  369. package/dist/collection/global/config.js +3 -3
  370. package/dist/collection/global/ionic-global.js +8 -2
  371. package/dist/collection/index.js +1 -1
  372. package/dist/collection/utils/animation/animation.js +3 -3
  373. package/dist/collection/utils/config.js +5 -4
  374. package/dist/collection/utils/content/index.js +30 -0
  375. package/dist/collection/utils/focus-controller/index.js +1 -1
  376. package/dist/collection/utils/focus-trap.js +3 -3
  377. package/dist/collection/utils/forms/index.js +1 -0
  378. package/dist/collection/utils/forms/start-container-controller.js +132 -0
  379. package/dist/collection/utils/framework-delegate.js +4 -6
  380. package/dist/collection/utils/gesture/gesture-controller.js +1 -2
  381. package/dist/collection/utils/gesture/index.js +10 -2
  382. package/dist/collection/utils/gesture/listener.js +4 -27
  383. package/dist/collection/utils/hardware-back-button.js +3 -3
  384. package/dist/collection/utils/helpers.js +14 -10
  385. package/dist/collection/utils/input-shims/hacks/scroll-assist.js +4 -5
  386. package/dist/collection/utils/input-shims/hacks/scroll-data.js +1 -2
  387. package/dist/collection/utils/keyboard/keyboard-controller.js +5 -5
  388. package/dist/collection/utils/keyboard/keyboard.js +1 -1
  389. package/dist/collection/utils/logging/index.js +23 -4
  390. package/dist/collection/utils/menu-controller/index.js +1 -2
  391. package/dist/collection/utils/native/haptic.js +2 -3
  392. package/dist/collection/utils/native/keyboard.js +2 -2
  393. package/dist/collection/utils/native/status-bar.js +1 -1
  394. package/dist/collection/utils/overlay-control-label.js +45 -0
  395. package/dist/collection/utils/overlays.js +87 -48
  396. package/dist/collection/utils/platform.js +4 -5
  397. package/dist/collection/utils/rtl/dir.js +17 -7
  398. package/dist/collection/utils/sanitization/index.js +275 -20
  399. package/dist/collection/utils/select-option-render.js +118 -0
  400. package/dist/collection/utils/slot-mutation-controller.js +1 -2
  401. package/dist/collection/utils/test/late-props/late-props.js +69 -0
  402. package/dist/collection/utils/test/playwright/apply-keyboard-focus.js +1 -1
  403. package/dist/collection/utils/test/playwright/detach-reattach.js +23 -0
  404. package/dist/collection/utils/test/playwright/drag-element.js +2 -3
  405. package/dist/collection/utils/test/playwright/generator.js +3 -4
  406. package/dist/collection/utils/test/playwright/index.js +1 -0
  407. package/dist/collection/utils/test/playwright/page/event-spy.js +2 -4
  408. package/dist/collection/utils/test/playwright/page/utils/goto.js +4 -5
  409. package/dist/collection/utils/test/playwright/page/utils/set-content.js +1 -1
  410. package/dist/collection/utils/test/playwright/page/utils/set-ion-viewport.js +2 -3
  411. package/dist/collection/utils/test/press-keys.js +6 -16
  412. package/dist/collection/utils/theme.js +6 -1
  413. package/dist/collection/utils/transition/ios.transition.js +9 -13
  414. package/dist/collection/utils/transition/md.transition.js +3 -4
  415. package/dist/docs.json +933 -1402
  416. package/dist/esm/{animation-DLJpuoEz.js → animation-BFNVlYum.js} +4 -4
  417. package/dist/esm/{app-globals-D0C5S4hU.js → app-globals-BgX0BGL1.js} +1 -1
  418. package/dist/esm/{button-active-BSpTQmS9.js → button-active-BfOvDr3b.js} +3 -3
  419. package/dist/esm/config-DWCzVL3Y.js +32 -0
  420. package/dist/esm/dir-Dojwmvde.js +28 -0
  421. package/dist/esm/{format-CAmvpAez.js → format-DDFE9jM5.js} +41 -31
  422. package/dist/esm/{framework-delegate-FnPGymXL.js → framework-delegate-BwNhx9NR.js} +5 -7
  423. package/dist/esm/{gesture-controller-BTEOs1at.js → gesture-controller-B_gJaBk0.js} +1 -2
  424. package/dist/esm/{haptic-DzAMWJuk.js → haptic-Cq4UAeka.js} +2 -3
  425. package/dist/esm/{hardware-back-button-B93Gru0Y.js → hardware-back-button-DmkiRgOT.js} +4 -4
  426. package/dist/esm/{helpers-HEqiOzXb.js → helpers-BSmc0nst.js} +15 -11
  427. package/dist/esm/{index-CfgBF1SE.js → index-BmLuEdV7.js} +13 -30
  428. package/dist/esm/{index-Q6UPU0Ay.js → index-BuPaALjU.js} +6 -7
  429. package/dist/esm/{index-DV3sJJW8.js → index-BvabGprD.js} +2 -2
  430. package/dist/esm/{index-MEDq2S8l.js → index-C1b9CLFg.js} +33 -3
  431. package/dist/esm/{index-tcQvqkiX.js → index-C23AVPx9.js} +303 -26
  432. package/dist/esm/{index-BRHzoo00.js → index-CJln0gS3.js} +3 -2
  433. package/dist/esm/index-CqoUoxgG.js +423 -0
  434. package/dist/esm/{index-B_dQk_WE.js → index-DnA_7Bnx.js} +5 -5
  435. package/dist/esm/index.js +17 -15
  436. package/dist/esm/{input-shims-D10mwcw1.js → input-shims-Dqk-Ou25.js} +10 -11
  437. package/dist/esm/input.utils-rqoH22pW.js +33 -0
  438. package/dist/esm/ion-accordion_2.entry.js +12 -12
  439. package/dist/esm/ion-action-sheet.entry.js +92 -44
  440. package/dist/esm/ion-alert.entry.js +143 -64
  441. package/dist/esm/ion-app_8.entry.js +112 -40
  442. package/dist/esm/ion-avatar_3.entry.js +4 -4
  443. package/dist/esm/ion-back-button.entry.js +6 -5
  444. package/dist/esm/ion-backdrop.entry.js +2 -2
  445. package/dist/esm/ion-breadcrumb_2.entry.js +8 -7
  446. package/dist/esm/ion-button_2.entry.js +12 -8
  447. package/dist/esm/ion-card_5.entry.js +6 -5
  448. package/dist/esm/ion-checkbox.entry.js +10 -7
  449. package/dist/esm/ion-chip.entry.js +3 -3
  450. package/dist/esm/ion-col_3.entry.js +10 -6
  451. package/dist/esm/ion-datetime-button.entry.js +22 -25
  452. package/dist/esm/{ion-datetime_3.entry.js → ion-datetime.entry.js} +183 -745
  453. package/dist/esm/ion-fab_3.entry.js +7 -6
  454. package/dist/esm/ion-img.entry.js +7 -4
  455. package/dist/esm/ion-infinite-scroll_2.entry.js +7 -5
  456. package/dist/esm/ion-input-otp.entry.js +20 -29
  457. package/dist/esm/ion-input-password-toggle.entry.js +9 -10
  458. package/dist/esm/ion-input.entry.js +56 -68
  459. package/dist/esm/ion-item-option_3.entry.js +21 -24
  460. package/dist/esm/ion-item_8.entry.js +38 -34
  461. package/dist/esm/ion-loading.entry.js +28 -14
  462. package/dist/esm/ion-menu_3.entry.js +23 -24
  463. package/dist/esm/ion-modal.entry.js +271 -149
  464. package/dist/esm/ion-nav_2.entry.js +30 -138
  465. package/dist/esm/ion-picker-column-option.entry.js +8 -13
  466. package/dist/esm/ion-picker-column.entry.js +218 -62
  467. package/dist/esm/ion-picker.entry.js +4 -4
  468. package/dist/esm/ion-popover.entry.js +50 -30
  469. package/dist/esm/ion-progress-bar.entry.js +6 -5
  470. package/dist/esm/ion-radio_2.entry.js +12 -11
  471. package/dist/esm/ion-range.entry.js +30 -25
  472. package/dist/esm/ion-refresher_2.entry.js +32 -24
  473. package/dist/esm/ion-reorder_2.entry.js +10 -9
  474. package/dist/esm/ion-ripple-effect.entry.js +3 -3
  475. package/dist/esm/ion-route_4.entry.js +36 -30
  476. package/dist/esm/ion-searchbar.entry.js +27 -22
  477. package/dist/esm/ion-segment-content.entry.js +2 -2
  478. package/dist/esm/ion-segment-view.entry.js +5 -6
  479. package/dist/esm/ion-segment_2.entry.js +30 -26
  480. package/dist/esm/ion-select-modal.entry.js +93 -38
  481. package/dist/esm/ion-select_3.entry.js +495 -126
  482. package/dist/esm/ion-spinner.entry.js +5 -6
  483. package/dist/esm/ion-split-pane.entry.js +4 -4
  484. package/dist/esm/ion-tab-bar_2.entry.js +15 -12
  485. package/dist/esm/ion-tab_2.entry.js +8 -8
  486. package/dist/esm/ion-text.entry.js +5 -5
  487. package/dist/esm/ion-textarea.entry.js +55 -64
  488. package/dist/esm/ion-toast.entry.js +25 -20
  489. package/dist/esm/ion-toggle.entry.js +15 -13
  490. package/dist/esm/{ionic-global-Cp_eT4sZ.js → ionic-global-ZXjCXKH0.js} +13 -8
  491. package/dist/esm/ionic.js +6 -6
  492. package/dist/esm/{ios.transition-ClFrsIrS.js → ios.transition-CWAgfQ1r.js} +14 -17
  493. package/dist/esm/{item-multiple-inputs-DlNuqNJm.js → item-multiple-inputs-DZnIiOO_.js} +1 -1
  494. package/dist/esm/{keyboard-ywgs5efA.js → keyboard-Cj8mLJeq.js} +2 -2
  495. package/dist/esm/{keyboard-CUw4ekVy.js → keyboard-DAF8GNJ9.js} +2 -2
  496. package/dist/esm/{keyboard-controller-BaaVITYt.js → keyboard-controller-DEwoa1ev.js} +6 -6
  497. package/dist/esm/loader.js +5 -5
  498. package/dist/esm/{md.transition-D0msQmzI.js → md.transition-ZuqDDdDW.js} +8 -8
  499. package/dist/esm/overlay-control-label-BSQPZ79H.js +47 -0
  500. package/dist/esm/{overlays-Dg0q2_tJ.js → overlays-DKE0DgvE.js} +97 -58
  501. package/dist/esm/select-option-render-1W6W9pbC.js +121 -0
  502. package/dist/esm/slot-mutation-controller-B5NpUZ-N.js +393 -0
  503. package/dist/esm/{status-tap-Kan2W7sh.js → status-tap-Cv9gb3ja.js} +4 -3
  504. package/dist/esm/{swipe-back-ZUWwA-KF.js → swipe-back-De5HlmeM.js} +5 -5
  505. package/dist/esm/{theme-DiVJyqlX.js → theme-byZM6qHV.js} +6 -1
  506. package/dist/html.html-data.json +54 -82
  507. package/dist/ionic/index.esm.js +1 -1
  508. package/dist/ionic/ionic.esm.js +1 -1
  509. package/dist/ionic/p-06c6b540.entry.js +4 -0
  510. package/dist/ionic/p-099b7f9f.entry.js +4 -0
  511. package/dist/ionic/p-0dcb7bb6.entry.js +4 -0
  512. package/dist/ionic/p-1347880c.entry.js +4 -0
  513. package/dist/ionic/p-191a651e.entry.js +4 -0
  514. package/dist/ionic/p-1f24cb24.entry.js +4 -0
  515. package/dist/ionic/p-271c3640.entry.js +4 -0
  516. package/dist/ionic/p-2c52fe3e.entry.js +4 -0
  517. package/dist/ionic/p-2ea4bb36.entry.js +4 -0
  518. package/dist/ionic/p-338a02e0.entry.js +4 -0
  519. package/dist/ionic/p-38b9375b.entry.js +4 -0
  520. package/dist/ionic/p-3bba83ee.entry.js +4 -0
  521. package/dist/ionic/p-4712a8a9.entry.js +4 -0
  522. package/dist/ionic/p-4c3e50f8.entry.js +4 -0
  523. package/dist/ionic/p-4e2fef42.entry.js +4 -0
  524. package/dist/ionic/p-54cbb0a7.entry.js +4 -0
  525. package/dist/ionic/{p-2bb2cb18.entry.js → p-561af487.entry.js} +1 -1
  526. package/dist/ionic/p-5906ea6f.entry.js +4 -0
  527. package/dist/ionic/p-5cc09b40.entry.js +4 -0
  528. package/dist/ionic/p-5d9094ac.entry.js +4 -0
  529. package/dist/ionic/p-612ea3b1.entry.js +4 -0
  530. package/dist/ionic/p-66f150ec.entry.js +4 -0
  531. package/dist/ionic/p-68cc89a6.entry.js +4 -0
  532. package/dist/ionic/{p-dfa8d673.entry.js → p-6e386853.entry.js} +1 -1
  533. package/dist/ionic/p-77c96e08.entry.js +4 -0
  534. package/dist/ionic/p-7bfeccb3.entry.js +4 -0
  535. package/dist/ionic/p-7e394cc3.entry.js +4 -0
  536. package/dist/ionic/{p-0fa9c382.entry.js → p-7fbb3319.entry.js} +1 -1
  537. package/dist/ionic/p-837db1b9.entry.js +4 -0
  538. package/dist/ionic/p-85599fe3.entry.js +4 -0
  539. package/dist/ionic/p-8b80d9f9.entry.js +4 -0
  540. package/dist/ionic/p-90f50a65.entry.js +4 -0
  541. package/dist/ionic/p-9595e305.entry.js +4 -0
  542. package/dist/ionic/p-9c5f2691.entry.js +4 -0
  543. package/dist/ionic/p-BMPN55of.js +4 -0
  544. package/dist/ionic/p-BSQPZ79H.js +4 -0
  545. package/dist/ionic/p-BY6BzzPF.js +4 -0
  546. package/dist/ionic/p-B_gJaBk0.js +4 -0
  547. package/dist/ionic/p-BaeKWZ-a.js +4 -0
  548. package/dist/ionic/p-Bd72UYI2.js +4 -0
  549. package/dist/ionic/p-BgOvhHy_.js +4 -0
  550. package/dist/ionic/p-BhamHSw3.js +4 -0
  551. package/dist/ionic/p-BijjLYjT.js +4 -0
  552. package/dist/ionic/{p-DV3sJJW8.js → p-BvabGprD.js} +1 -1
  553. package/dist/ionic/p-C23AVPx9.js +6 -0
  554. package/dist/ionic/p-C8XilMh0.js +4 -0
  555. package/dist/ionic/p-CER8qW8Y.js +4 -0
  556. package/dist/ionic/p-CFuOr1Tu.js +4 -0
  557. package/dist/ionic/p-CM5OBjTW.js +4 -0
  558. package/dist/ionic/p-CMZYmFb4.js +4 -0
  559. package/dist/ionic/p-CkxVYPtX.js +4 -0
  560. package/dist/ionic/p-CmXuiRT6.js +4 -0
  561. package/dist/ionic/p-D0YpjgON.js +4 -0
  562. package/dist/ionic/p-D4OrdtJf.js +4 -0
  563. package/dist/ionic/p-D5t_-oMk.js +4 -0
  564. package/dist/ionic/p-D6rHcCvc.js +4 -0
  565. package/dist/ionic/p-DLM95R4x.js +4 -0
  566. package/dist/ionic/p-DTxBioUO.js +4 -0
  567. package/dist/ionic/p-DWCzVL3Y.js +4 -0
  568. package/dist/ionic/p-DYUjHcuH.js +4 -0
  569. package/{components/p-BkKAANMJ.js → dist/ionic/p-DZ6Hmc-8.js} +1 -1
  570. package/dist/ionic/p-D_gb-kdd.js +4 -0
  571. package/dist/ionic/p-DajLgJ4d.js +4 -0
  572. package/dist/ionic/p-Do3zTvCA.js +4 -0
  573. package/dist/ionic/p-Dojwmvde.js +4 -0
  574. package/dist/ionic/p-T71k3C35.js +4 -0
  575. package/dist/ionic/p-a1cc2861.entry.js +4 -0
  576. package/dist/ionic/p-a20a2ebe.entry.js +4 -0
  577. package/dist/ionic/p-a8ff2489.entry.js +4 -0
  578. package/dist/ionic/p-b3532b8d.entry.js +4 -0
  579. package/dist/ionic/p-b80c86c4.entry.js +4 -0
  580. package/dist/ionic/p-b9b4e85d.entry.js +4 -0
  581. package/dist/ionic/p-byZM6qHV.js +4 -0
  582. package/dist/ionic/p-c57fc396.entry.js +4 -0
  583. package/dist/ionic/{p-c6e49f3f.entry.js → p-ca1b8865.entry.js} +1 -1
  584. package/dist/ionic/p-cc4320d3.entry.js +4 -0
  585. package/dist/ionic/p-d6755739.entry.js +4 -0
  586. package/dist/ionic/p-d8c138d9.entry.js +4 -0
  587. package/dist/ionic/p-db449915.entry.js +4 -0
  588. package/dist/ionic/p-dd01be0a.entry.js +4 -0
  589. package/dist/ionic/p-ec00fd0d.entry.js +4 -0
  590. package/dist/ionic/p-ee09ac9d.entry.js +4 -0
  591. package/dist/ionic/{p-37e720da.entry.js → p-efc0cf82.entry.js} +1 -1
  592. package/dist/ionic/p-f0fb23c1.entry.js +4 -0
  593. package/dist/ionic/p-f83b3e0c.entry.js +4 -0
  594. package/dist/ionic/p-fU3rOYad.js +4 -0
  595. package/dist/ionic/p-zWf7R2xV.js +4 -0
  596. package/dist/types/components/action-sheet/action-sheet.d.ts +10 -0
  597. package/dist/types/components/alert/alert.d.ts +7 -0
  598. package/dist/types/components/content/content.d.ts +12 -0
  599. package/dist/types/components/datetime/datetime.d.ts +5 -1
  600. package/dist/types/components/img/img.d.ts +2 -0
  601. package/dist/types/components/input/input.d.ts +12 -6
  602. package/dist/types/components/modal/gestures/sheet.d.ts +1 -0
  603. package/dist/types/components/modal/gestures/utils.d.ts +11 -0
  604. package/dist/types/components/modal/modal-interface.d.ts +9 -0
  605. package/dist/types/components/modal/modal.d.ts +25 -7
  606. package/dist/types/components/modal/safe-area-utils.d.ts +6 -0
  607. package/dist/types/components/nav/nav-interface.d.ts +0 -1
  608. package/dist/types/components/nav/nav.d.ts +2 -22
  609. package/dist/types/components/picker-column/picker-column.d.ts +42 -0
  610. package/dist/types/components/range/range.d.ts +4 -1
  611. package/dist/types/components/refresher/refresher.d.ts +7 -0
  612. package/dist/types/components/route/route.d.ts +1 -1
  613. package/dist/types/components/router-outlet/router-outlet.d.ts +7 -0
  614. package/dist/types/components/searchbar/searchbar.d.ts +1 -1
  615. package/dist/types/components/select/select-interface.d.ts +31 -0
  616. package/dist/types/components/select/select.d.ts +30 -6
  617. package/dist/types/components/select-option/select-option.d.ts +42 -1
  618. package/dist/types/components/textarea/textarea.d.ts +12 -5
  619. package/dist/types/components.d.ts +79 -316
  620. package/dist/types/index.d.ts +1 -1
  621. package/dist/types/interface.d.ts +0 -1
  622. package/dist/types/stencil-public-runtime.d.ts +12 -0
  623. package/dist/types/utils/config.d.ts +1 -8
  624. package/dist/types/utils/content/index.d.ts +12 -0
  625. package/dist/types/utils/forms/index.d.ts +1 -0
  626. package/dist/types/utils/forms/start-container-controller.d.ts +34 -0
  627. package/dist/types/utils/helpers.d.ts +8 -5
  628. package/dist/types/utils/logging/index.d.ts +2 -1
  629. package/dist/types/utils/overlay-control-label.d.ts +32 -0
  630. package/dist/types/utils/overlays.d.ts +20 -9
  631. package/dist/types/utils/rtl/dir.d.ts +10 -4
  632. package/dist/types/utils/sanitization/index.d.ts +58 -2
  633. package/dist/types/utils/select-option-render.d.ts +53 -0
  634. package/dist/types/utils/test/playwright/detach-reattach.d.ts +13 -0
  635. package/dist/types/utils/test/playwright/index.d.ts +1 -0
  636. package/dist/types/utils/test/playwright/playwright-page.d.ts +1 -1
  637. package/dist/types/utils/test/playwright/testExpect.d.ts +1 -1
  638. package/hydrate/index.js +2996 -2155
  639. package/hydrate/index.mjs +2996 -2155
  640. package/loader/index.d.ts +1 -1
  641. package/package.json +57 -13
  642. package/components/ion-picker-legacy-column.d.ts +0 -11
  643. package/components/ion-picker-legacy-column.js +0 -4
  644. package/components/ion-picker-legacy.d.ts +0 -11
  645. package/components/ion-picker-legacy.js +0 -4
  646. package/components/p-A3O24YmY.js +0 -4
  647. package/components/p-ABkNVeU9.js +0 -4
  648. package/components/p-B-JJgYSG.js +0 -4
  649. package/components/p-BB42Mlnr.js +0 -4
  650. package/components/p-BLmJ0zRm.js +0 -4
  651. package/components/p-BSEgsdFI.js +0 -4
  652. package/components/p-BTEOs1at.js +0 -4
  653. package/components/p-BlIAuGv2.js +0 -4
  654. package/components/p-Bnsn6KaP.js +0 -4
  655. package/components/p-BsBCoGa-.js +0 -4
  656. package/components/p-Bz0dSlXZ.js +0 -4
  657. package/components/p-C53feagD.js +0 -4
  658. package/components/p-CHqRYvYm.js +0 -4
  659. package/components/p-CQGnMY3n.js +0 -4
  660. package/components/p-CSZf8_j0.js +0 -4
  661. package/components/p-C_xFdyXe.js +0 -4
  662. package/components/p-Cf2jSDS8.js +0 -4
  663. package/components/p-CkMSOsFF.js +0 -4
  664. package/components/p-Cl0B-RWe.js +0 -4
  665. package/components/p-CmR5uXej.js +0 -4
  666. package/components/p-CsNJ1ULL.js +0 -4
  667. package/components/p-CtWGkNnJ.js +0 -4
  668. package/components/p-CzCbeKys.js +0 -4
  669. package/components/p-D-aHdMxW.js +0 -4
  670. package/components/p-D0d8qTwj.js +0 -4
  671. package/components/p-D13Eaw-8.js +0 -4
  672. package/components/p-D3xo7hqU.js +0 -4
  673. package/components/p-D6Ynv7Xh.js +0 -4
  674. package/components/p-DCnGU1fF.js +0 -4
  675. package/components/p-DGZpx6KJ.js +0 -4
  676. package/components/p-DGvrK8dD.js +0 -4
  677. package/components/p-DHTSTb52.js +0 -4
  678. package/components/p-DOFCbuQR.js +0 -4
  679. package/components/p-DRugphUN.js +0 -4
  680. package/components/p-DV5mPYQS.js +0 -4
  681. package/components/p-DWkAgceV.js +0 -4
  682. package/components/p-DiVJyqlX.js +0 -4
  683. package/components/p-KEFO0w3i.js +0 -4
  684. package/components/p-Osve4qkc.js +0 -4
  685. package/components/p-SLS1rDZM.js +0 -4
  686. package/components/p-VWbRkLT7.js +0 -4
  687. package/components/p-aJ6PBUvj.js +0 -4
  688. package/components/p-cyNmxje6.js +0 -4
  689. package/components/p-k_E4tX5Z.js +0 -4
  690. package/components/p-oD4kcBRX.js +0 -4
  691. package/components/p-scxfI1Dd.js +0 -4
  692. package/components/p-yzCsOZE2.js +0 -4
  693. package/dist/cjs/config-xninhj0J.js +0 -201
  694. package/dist/cjs/dir-Cn0z1rJH.js +0 -20
  695. package/dist/cjs/input.utils-DetjmtH2.js +0 -150
  696. package/dist/cjs/notch-controller-18PzRGXd.js +0 -155
  697. package/dist/collection/components/picker-legacy/animations/ios.enter.js +0 -27
  698. package/dist/collection/components/picker-legacy/animations/ios.leave.js +0 -23
  699. package/dist/collection/components/picker-legacy/picker-interface.js +0 -1
  700. package/dist/collection/components/picker-legacy/picker.ios.css +0 -300
  701. package/dist/collection/components/picker-legacy/picker.js +0 -890
  702. package/dist/collection/components/picker-legacy/picker.md.css +0 -287
  703. package/dist/collection/components/picker-legacy-column/picker-column.ios.css +0 -231
  704. package/dist/collection/components/picker-legacy-column/picker-column.js +0 -422
  705. package/dist/collection/components/picker-legacy-column/picker-column.md.css +0 -222
  706. package/dist/collection/components/picker-legacy-column/test/test.utils.js +0 -43
  707. package/dist/esm/config-DQCONYYp.js +0 -195
  708. package/dist/esm/dir-C53feagD.js +0 -18
  709. package/dist/esm/input.utils-Y6NgW8bw.js +0 -147
  710. package/dist/esm/notch-controller-DKDjU_O7.js +0 -153
  711. package/dist/ionic/p-01f81ea5.entry.js +0 -4
  712. package/dist/ionic/p-06c232a4.entry.js +0 -4
  713. package/dist/ionic/p-0dc33652.entry.js +0 -4
  714. package/dist/ionic/p-10e833ef.entry.js +0 -4
  715. package/dist/ionic/p-20b1a044.entry.js +0 -4
  716. package/dist/ionic/p-21eb76d5.entry.js +0 -4
  717. package/dist/ionic/p-2394a9a6.entry.js +0 -4
  718. package/dist/ionic/p-27d30585.entry.js +0 -4
  719. package/dist/ionic/p-2a05aa64.entry.js +0 -4
  720. package/dist/ionic/p-2b204c59.entry.js +0 -4
  721. package/dist/ionic/p-2fa58e80.entry.js +0 -4
  722. package/dist/ionic/p-3353c229.entry.js +0 -4
  723. package/dist/ionic/p-33704f20.entry.js +0 -4
  724. package/dist/ionic/p-34586ead.entry.js +0 -4
  725. package/dist/ionic/p-390ca786.entry.js +0 -4
  726. package/dist/ionic/p-3ae5f277.entry.js +0 -4
  727. package/dist/ionic/p-4654ae1c.entry.js +0 -4
  728. package/dist/ionic/p-4745f534.entry.js +0 -4
  729. package/dist/ionic/p-4858af1f.entry.js +0 -4
  730. package/dist/ionic/p-4ac4f3d6.entry.js +0 -4
  731. package/dist/ionic/p-4baa5b82.entry.js +0 -4
  732. package/dist/ionic/p-4e92a11f.entry.js +0 -4
  733. package/dist/ionic/p-5018dfc8.entry.js +0 -4
  734. package/dist/ionic/p-50e1194a.entry.js +0 -4
  735. package/dist/ionic/p-5d1da0a2.entry.js +0 -4
  736. package/dist/ionic/p-5eb8e86d.entry.js +0 -4
  737. package/dist/ionic/p-65ebdf1b.entry.js +0 -4
  738. package/dist/ionic/p-75dc25ba.entry.js +0 -4
  739. package/dist/ionic/p-7c319341.entry.js +0 -4
  740. package/dist/ionic/p-829367ed.entry.js +0 -4
  741. package/dist/ionic/p-84d5ce05.entry.js +0 -4
  742. package/dist/ionic/p-874b4bd8.entry.js +0 -4
  743. package/dist/ionic/p-8eb8ee76.entry.js +0 -4
  744. package/dist/ionic/p-8fce95d5.entry.js +0 -4
  745. package/dist/ionic/p-9eeaBrnk.js +0 -4
  746. package/dist/ionic/p-9f1103ce.entry.js +0 -4
  747. package/dist/ionic/p-9f9db3a2.entry.js +0 -4
  748. package/dist/ionic/p-BGqMS-oh.js +0 -4
  749. package/dist/ionic/p-BTEOs1at.js +0 -4
  750. package/dist/ionic/p-BUFIpxKM.js +0 -4
  751. package/dist/ionic/p-C0eMdTCW.js +0 -4
  752. package/dist/ionic/p-C53feagD.js +0 -4
  753. package/dist/ionic/p-CFlfIb2g.js +0 -4
  754. package/dist/ionic/p-CKvCXMs9.js +0 -4
  755. package/dist/ionic/p-Cl0B-RWe.js +0 -4
  756. package/dist/ionic/p-CtWGkNnJ.js +0 -4
  757. package/dist/ionic/p-CwdymDLH.js +0 -4
  758. package/dist/ionic/p-Cx3IXROA.js +0 -4
  759. package/dist/ionic/p-D-3ycHmd.js +0 -4
  760. package/dist/ionic/p-D13Eaw-8.js +0 -4
  761. package/dist/ionic/p-DC3RagnA.js +0 -4
  762. package/dist/ionic/p-DIuEbVLu.js +0 -4
  763. package/dist/ionic/p-DSG2s2Eb.js +0 -4
  764. package/dist/ionic/p-Dfbt-q2k.js +0 -4
  765. package/dist/ionic/p-DiVJyqlX.js +0 -4
  766. package/dist/ionic/p-DoJvtrbw.js +0 -4
  767. package/dist/ionic/p-DqN5EA2O.js +0 -4
  768. package/dist/ionic/p-DzWaWHGc.js +0 -4
  769. package/dist/ionic/p-Nqf6uvGh.js +0 -4
  770. package/dist/ionic/p-SNAkTDfm.js +0 -4
  771. package/dist/ionic/p-VAemlbDS.js +0 -4
  772. package/dist/ionic/p-Wk5HzclC.js +0 -4
  773. package/dist/ionic/p-a3bdcae6.entry.js +0 -4
  774. package/dist/ionic/p-aaeedb6b.entry.js +0 -4
  775. package/dist/ionic/p-bfc9bb0f.entry.js +0 -4
  776. package/dist/ionic/p-c0fb8edd.entry.js +0 -4
  777. package/dist/ionic/p-c38b648e.entry.js +0 -4
  778. package/dist/ionic/p-c4d8641b.entry.js +0 -4
  779. package/dist/ionic/p-ca2ab74d.entry.js +0 -4
  780. package/dist/ionic/p-d889ff6d.entry.js +0 -4
  781. package/dist/ionic/p-e0be05c5.entry.js +0 -4
  782. package/dist/ionic/p-ef4c3bee.entry.js +0 -4
  783. package/dist/ionic/p-fd7eebc4.entry.js +0 -4
  784. package/dist/ionic/p-mjKAFv89.js +0 -4
  785. package/dist/ionic/p-tcQvqkiX.js +0 -5
  786. package/dist/ionic/p-viFHDgRs.js +0 -4
  787. package/dist/ionic/p-xWb6fgfq.js +0 -4
  788. package/dist/types/components/picker-legacy/animations/ios.enter.d.ts +0 -5
  789. package/dist/types/components/picker-legacy/animations/ios.leave.d.ts +0 -5
  790. package/dist/types/components/picker-legacy/picker-interface.d.ts +0 -52
  791. package/dist/types/components/picker-legacy/picker.d.ts +0 -158
  792. package/dist/types/components/picker-legacy-column/picker-column.d.ts +0 -46
  793. package/dist/types/components/picker-legacy-column/test/test.utils.d.ts +0 -9
  794. /package/components/{p-CO7fmmxt.js → p-LpMHEu3v.js} +0 -0
@@ -206,12 +206,6 @@
206
206
  }
207
207
 
208
208
  .input-clear-icon {
209
- -webkit-margin-start: auto;
210
- margin-inline-start: auto;
211
- -webkit-margin-end: auto;
212
- margin-inline-end: auto;
213
- margin-top: auto;
214
- margin-bottom: auto;
215
209
  padding-left: 0;
216
210
  padding-right: 0;
217
211
  padding-top: 0;
@@ -269,14 +263,47 @@
269
263
  line-height: normal;
270
264
  }
271
265
 
266
+ .input-control {
267
+ display: flex;
268
+ flex-grow: 1;
269
+ width: 100%;
270
+ /**
271
+ * Allows the control to shrink below the label and input's intrinsic
272
+ * width, preventing the start and end slots from being pushed outside
273
+ * the wrapper. The label and input truncate independently, so it can
274
+ * use whatever space remains after accounting for the slots.
275
+ */
276
+ min-width: 0;
277
+ }
278
+
272
279
  .native-wrapper {
273
280
  display: flex;
274
281
  position: relative;
275
282
  flex-grow: 1;
276
- align-items: center;
277
283
  width: 100%;
278
284
  }
279
285
 
286
+ /**
287
+ * When the label sits beside the input, the label should size to its content
288
+ * and the input should take the remaining space. A zero flex basis prevents
289
+ * the input from requesting its full width and forcing the label to shrink.
290
+ * Stacked and floating placements use a column layout, so their flex basis
291
+ * controls height instead and does not need to be overridden.
292
+ */
293
+ :host(.input-label-placement-start) .native-wrapper,
294
+ :host(.input-label-placement-end) .native-wrapper,
295
+ :host(.input-label-placement-fixed) .native-wrapper {
296
+ flex: 1 1 0;
297
+ }
298
+
299
+ .input-start,
300
+ .input-end {
301
+ display: flex;
302
+ position: relative;
303
+ flex-shrink: 0;
304
+ align-items: center;
305
+ }
306
+
280
307
  :host(.ion-touched.ion-invalid) {
281
308
  --highlight-color: var(--highlight-color-invalid);
282
309
  }
@@ -377,6 +404,12 @@
377
404
  */
378
405
  display: flex;
379
406
  align-items: center;
407
+ /**
408
+ * Allows the label to shrink below its intrinsic content width.
409
+ * Without this the label keeps its full width and can push the
410
+ * input and end slot outside the wrapper.
411
+ */
412
+ min-width: 0;
380
413
  /**
381
414
  * Label text should not extend
382
415
  * beyond the bounds of the input.
@@ -395,6 +428,18 @@
395
428
  pointer-events: none;
396
429
  }
397
430
 
431
+ /**
432
+ * When start/end slots are added or removed, we temporarily
433
+ * disable the label transition to prevent the floating label
434
+ * from animating as its position is adjusted.
435
+ *
436
+ * This class is applied by the start container controller, so
437
+ * renaming it here requires renaming it there too.
438
+ */
439
+ :host(.skip-label-transition) .label-text-wrapper {
440
+ transition: none;
441
+ }
442
+
398
443
  /**
399
444
  * We need to use two elements instead of
400
445
  * one. The .label-text-wrapper is responsible
@@ -438,7 +483,7 @@
438
483
  * Label is on the left of the input in LTR and
439
484
  * on the right in RTL.
440
485
  */
441
- :host(.input-label-placement-start) .input-wrapper {
486
+ :host(.input-label-placement-start) .input-control {
442
487
  flex-direction: row;
443
488
  }
444
489
 
@@ -460,7 +505,7 @@
460
505
  * Label is on the right of the input in LTR and
461
506
  * on the left in RTL.
462
507
  */
463
- :host(.input-label-placement-end) .input-wrapper {
508
+ :host(.input-label-placement-end) .input-control {
464
509
  flex-direction: row-reverse;
465
510
  }
466
511
 
@@ -508,10 +553,9 @@
508
553
  * Floating: Label sits over the input when the input has no
509
554
  * value and is blurred. Label sits above the input and is scaled
510
555
  * down when the input is focused or has a value.
511
- *
512
556
  */
513
- :host(.input-label-placement-stacked) .input-wrapper,
514
- :host(.input-label-placement-floating) .input-wrapper {
557
+ :host(.input-label-placement-stacked) .input-control,
558
+ :host(.input-label-placement-floating) .input-control {
515
559
  flex-direction: column;
516
560
  align-items: start;
517
561
  }
@@ -542,18 +586,6 @@
542
586
  }
543
587
  }
544
588
 
545
- /**
546
- * Ensures the input does not
547
- * overlap the label.
548
- */
549
- :host(.input-label-placement-stacked) input,
550
- :host(.input-label-placement-floating) input {
551
- margin-left: 0;
552
- margin-right: 0;
553
- margin-top: 1px;
554
- margin-bottom: 0;
555
- }
556
-
557
589
  /**
558
590
  * This makes the label sit over the input
559
591
  * when the input is blurred and has no value.
@@ -725,8 +757,7 @@
725
757
  }
726
758
 
727
759
  .input-clear-icon ion-icon {
728
- width: 18px;
729
- height: 18px;
760
+ font-size: 18px;
730
761
  }
731
762
 
732
763
  :host(.input-disabled) {
@@ -2,7 +2,7 @@
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
4
  import { Build, Host, forceUpdate, h, } from "@stencil/core";
5
- import { createNotchController, checkInvalidState } from "../../utils/forms/index";
5
+ import { createNotchController, createStartContainerController, checkInvalidState } from "../../utils/forms/index";
6
6
  import { inheritAriaAttributes, debounceEvent, inheritAttributes, componentOnReady } from "../../utils/helpers";
7
7
  import { createSlotMutationController } from "../../utils/slot-mutation-controller";
8
8
  import { createColorClasses, hostContext } from "../../utils/theme";
@@ -56,7 +56,7 @@ export class Input {
56
56
  /**
57
57
  * Whether auto correction should be enabled when the user is entering/editing the text value.
58
58
  */
59
- this.autocorrect = 'off';
59
+ this.autocorrect = false;
60
60
  /**
61
61
  * Sets the [`autofocus` attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/autofocus) on the native input element.
62
62
  *
@@ -155,13 +155,18 @@ export class Input {
155
155
  this.emitInputChange(ev);
156
156
  };
157
157
  /**
158
- * Stops propagation when the label is clicked,
159
- * otherwise, two clicks will be triggered.
158
+ * Stops propagation for clicks on the input's own content (label text,
159
+ * input field) to prevent double-click events. Allows clicks on slotted
160
+ * content to propagate so event delegation works for parent handlers.
161
+ *
162
+ * Only slots belonging directly to this input should be considered.
163
+ * The input itself may have a slot attribute when placed in an item
164
+ * or toolbar, which does not make its content slotted content.
160
165
  */
161
166
  this.onLabelClick = (ev) => {
162
- // Only stop propagation if the click was directly on the label
163
- // and not on the input or other child elements
164
- if (ev.target === ev.currentTarget) {
167
+ const target = ev.target;
168
+ const slotted = target.closest('[slot="start"], [slot="end"]');
169
+ if (slotted === null || slotted === this.el || !this.el.contains(slotted)) {
165
170
  ev.stopPropagation();
166
171
  }
167
172
  };
@@ -172,7 +177,7 @@ export class Input {
172
177
  * If debounce is undefined, we have to manually revert the ionInput emitter in case
173
178
  * debounce used to be set to a number. Otherwise, the event would stay debounced.
174
179
  */
175
- this.ionInput = debounce === undefined ? originalIonInput !== null && originalIonInput !== void 0 ? originalIonInput : ionInput : debounceEvent(ionInput, debounce);
180
+ this.ionInput = debounce === undefined ? originalIonInput ?? ionInput : debounceEvent(ionInput, debounce);
176
181
  }
177
182
  /**
178
183
  * Whenever the type on the input changes we need
@@ -211,7 +216,10 @@ export class Input {
211
216
  * to the inner `<input>` element.
212
217
  */
213
218
  onDirChanged(newValue) {
214
- this.inheritedAttributes = Object.assign(Object.assign({}, this.inheritedAttributes), { dir: newValue });
219
+ this.inheritedAttributes = {
220
+ ...this.inheritedAttributes,
221
+ dir: newValue,
222
+ };
215
223
  forceUpdate(this);
216
224
  }
217
225
  /**
@@ -226,16 +234,24 @@ export class Input {
226
234
  }
227
235
  }
228
236
  componentWillLoad() {
229
- this.inheritedAttributes = Object.assign(Object.assign({}, inheritAriaAttributes(this.el)), inheritAttributes(this.el, ['tabindex', 'title', 'data-form-type', 'dir']));
237
+ this.inheritedAttributes = {
238
+ ...inheritAriaAttributes(this.el),
239
+ ...inheritAttributes(this.el, ['tabindex', 'title', 'data-form-type', 'dir']),
240
+ };
230
241
  }
231
242
  connectedCallback() {
232
243
  const { el } = this;
233
244
  this.slotMutationController = createSlotMutationController(el, ['label', 'start', 'end'], () => {
245
+ this.startContainerController?.calculateStartContainerWidth();
234
246
  this.setSlottedLabelId();
235
247
  forceUpdate(this);
236
248
  });
237
249
  this.setSlottedLabelId();
238
250
  this.notchController = createNotchController(el, () => this.notchSpacerEl, () => this.labelSlot);
251
+ this.startContainerController = createStartContainerController(el, () => this.startContainerEl, () => {
252
+ return Build.isBrowser && getIonMode(this) === 'md' && this.fill === 'outline';
253
+ });
254
+ this.startContainerController.calculateStartContainerWidth();
239
255
  // Watch for class changes to update validation state
240
256
  if (Build.isBrowser && typeof MutationObserver !== 'undefined') {
241
257
  this.validationObserver = new MutationObserver(() => {
@@ -272,8 +288,8 @@ export class Input {
272
288
  this.debounceChanged();
273
289
  }
274
290
  componentDidRender() {
275
- var _a;
276
- (_a = this.notchController) === null || _a === void 0 ? void 0 : _a.calculateNotchWidth();
291
+ this.notchController?.calculateNotchWidth();
292
+ this.startContainerController?.calculateStartContainerWidth();
277
293
  }
278
294
  disconnectedCallback() {
279
295
  if (Build.isBrowser) {
@@ -289,6 +305,10 @@ export class Input {
289
305
  this.notchController.destroy();
290
306
  this.notchController = undefined;
291
307
  }
308
+ if (this.startContainerController) {
309
+ this.startContainerController.destroy();
310
+ this.startContainerController = undefined;
311
+ }
292
312
  // Clean up validation observer to prevent memory leaks
293
313
  if (this.validationObserver) {
294
314
  this.validationObserver.disconnect();
@@ -465,14 +485,13 @@ export class Input {
465
485
  * or undefined if aria-label is explicitly set (to avoid conflicts).
466
486
  */
467
487
  getLabelledById() {
468
- var _a;
469
488
  if (this.inheritedAttributes['aria-label']) {
470
489
  return undefined;
471
490
  }
472
491
  if (this.label !== undefined) {
473
492
  return this.labelTextId;
474
493
  }
475
- return ((_a = this.labelSlot) === null || _a === void 0 ? void 0 : _a.id) || undefined;
494
+ return this.labelSlot?.id || undefined;
476
495
  }
477
496
  /**
478
497
  * Returns `true` if label content is provided
@@ -484,63 +503,31 @@ export class Input {
484
503
  return this.label !== undefined || this.labelSlot !== null;
485
504
  }
486
505
  /**
487
- * Renders the border container
488
- * when fill="outline".
506
+ * Renders the outline border with a notch for the label.
489
507
  */
490
- renderLabelContainer() {
491
- const mode = getIonMode(this);
492
- const hasOutlineFill = mode === 'md' && this.fill === 'outline';
493
- if (hasOutlineFill) {
494
- /**
495
- * The outline fill has a special outline
496
- * that appears around the input and the label.
497
- * Certain stacked and floating label placements cause the
498
- * label to translate up and create a "cut out"
499
- * inside of that border by using the notch-spacer element.
500
- */
501
- return [
502
- h("div", { class: "input-outline-container" }, h("div", { class: "input-outline-start" }), h("div", { class: {
503
- 'input-outline-notch': true,
504
- 'input-outline-notch-hidden': !this.hasLabel,
505
- } }, h("div", { class: "notch-spacer", "aria-hidden": "true", ref: (el) => (this.notchSpacerEl = el) }, this.label)), h("div", { class: "input-outline-end" })),
506
- this.renderLabel(),
507
- ];
508
- }
509
- /**
510
- * If not using the outline style,
511
- * we can render just the label.
512
- */
513
- return this.renderLabel();
508
+ renderOutlineContainer() {
509
+ return (h("div", { class: "input-outline-container" }, h("div", { class: "input-outline-start" }), h("div", { class: {
510
+ 'input-outline-notch': true,
511
+ 'input-outline-notch-hidden': !this.hasLabel,
512
+ } }, h("div", { class: "notch-spacer", "aria-hidden": "true", ref: (el) => (this.notchSpacerEl = el) }, this.label)), h("div", { class: "input-outline-end" })));
514
513
  }
515
514
  render() {
516
- const { disabled, fill, readonly, shape, inputId, labelPlacement, el, hasFocus, clearInputIcon } = this;
515
+ const { disabled, fill, readonly, shape, inputId, labelPlacement, hasFocus, clearInputIcon } = this;
517
516
  const mode = getIonMode(this);
518
517
  const value = this.getValue();
519
518
  const inItem = hostContext('ion-item', this.el);
520
519
  const shouldRenderHighlight = mode === 'md' && fill !== 'outline' && !inItem;
521
520
  const defaultClearIcon = mode === 'ios' ? closeCircle : closeSharp;
522
- const clearIconData = clearInputIcon !== null && clearInputIcon !== void 0 ? clearInputIcon : defaultClearIcon;
521
+ const clearIconData = clearInputIcon ?? defaultClearIcon;
523
522
  const hasValue = this.hasValue();
524
- const hasStartEndSlots = el.querySelector('[slot="start"], [slot="end"]') !== null;
523
+ const hasOutlineFill = mode === 'md' && fill === 'outline';
525
524
  /**
526
525
  * If the label is stacked, it should always sit above the input.
527
526
  * For floating labels, the label should move above the input if
528
- * the input has a value, is focused, or has anything in either
529
- * the start or end slot.
530
- *
531
- * If there is content in the start slot, the label would overlap
532
- * it if not forced to float. This is also applied to the end slot
533
- * because with the default or solid fills, the input is not
534
- * vertically centered in the container, but the label is. This
535
- * causes the slots and label to appear vertically offset from each
536
- * other when the label isn't floating above the input. This doesn't
537
- * apply to the outline fill, but this was not accounted for to keep
538
- * things consistent.
539
- *
540
- * TODO(FW-5592): Remove hasStartEndSlots condition
527
+ * the input has a value or is focused.
541
528
  */
542
- const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
543
- return (h(Host, { key: '9ba9cf425b573d2ca9ac34455a0e6b8474c4de6d', class: createColorClasses(this.color, {
529
+ const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus));
530
+ return (h(Host, { key: '9e9495b8f962372d526343ff76b80fb9700fce19', class: createColorClasses(this.color, {
544
531
  [mode]: true,
545
532
  'has-value': hasValue,
546
533
  'has-focus': hasFocus,
@@ -551,14 +538,14 @@ export class Input {
551
538
  'in-item': inItem,
552
539
  'in-item-color': hostContext('ion-item.ion-color', this.el),
553
540
  'input-disabled': disabled,
554
- }) }, h("label", { key: '74b989d0aa5ab38f29f952519868f05119df6005', class: "input-wrapper", htmlFor: inputId, onClick: this.onLabelClick }, this.renderLabelContainer(), h("div", { key: '47f2b42e2f74ea866b4f871026e08ab375d7a726', class: "native-wrapper", onClick: this.onLabelClick }, h("slot", { key: 'eaabe5a4a329a356cac3294d15c087d0d131fff2', name: "start" }), h("input", Object.assign({ key: 'c821a984a8a9b7f96f30892c06d8deda093ff24b', 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, "aria-labelledby": this.getLabelledById() }, this.inheritedAttributes)), this.clearInput && !readonly && !disabled && (h("button", { key: '62069c11016ee190dc46ab941372e1c4ad8a36ed', "aria-label": "reset", type: "button", class: "input-clear-icon", onPointerDown: (ev) => {
541
+ }) }, h("label", { key: '7121f34ed782caf7a7b82703b94fc9d6c78ce5ba', class: "input-wrapper", htmlFor: inputId, onClick: this.onLabelClick }, hasOutlineFill && this.renderOutlineContainer(), h("div", { key: '0c1f8526d86c8a2433c23873fa64b1edc0eafe29', class: "input-start", ref: (el) => (this.startContainerEl = el) }, h("slot", { key: 'a50323fde0fb12997c2324eded132908680ea450', name: "start" })), h("div", { key: '626360c4e115a5286baab49680b2a02cd39614c8', class: "input-control" }, this.renderLabel(), h("div", { key: '1cefd9d8cd6ed96fab7b58237f8f8b0c5e1be92e', class: "native-wrapper", onClick: this.onLabelClick }, h("input", { key: '3dee5302f3a685a848fedd7e1face5095e3ac64b', class: "native-input", ref: (input) => (this.nativeInput = input), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect ? 'on' : 'off', 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, "aria-labelledby": this.getLabelledById(), ...this.inheritedAttributes }))), h("div", { key: '39fff82e00e63963fe5f17794900ace2a3faa208', class: "input-end" }, this.clearInput && !readonly && !disabled && (h("button", { key: '1fa86fdb5baf4a7cd531ee0fe767a42b44fb33fc', "aria-label": "reset", type: "button", class: "input-clear-icon", onPointerDown: (ev) => {
555
542
  /**
556
543
  * This prevents mobile browsers from
557
544
  * blurring the input when the clear
558
545
  * button is activated.
559
546
  */
560
547
  ev.preventDefault();
561
- }, onClick: this.clearTextInput }, h("ion-icon", { key: 'dd75a516d32110d85382b664c663bd41f177ce12', "aria-hidden": "true", icon: clearIconData }))), h("slot", { key: '330d4b9389f2c62223a5ee24003e96ef3e6b2473', name: "end" })), shouldRenderHighlight && h("div", { key: '8e442bed130ddc84976ab70fd3f8578d6bcc6316', class: "input-highlight" })), this.renderBottomContent()));
548
+ }, onClick: this.clearTextInput }, h("ion-icon", { key: 'ced39304f97e56870f7480afa025ffe232010cfb', "aria-hidden": "true", icon: clearIconData }))), h("slot", { key: 'f4098769eef1cc5aa2074c369f757ccb94a98e1c', name: "end" })), shouldRenderHighlight && h("div", { key: '258fe6ff8f9f57836f2a3a0b6163bd2b7dbf0699', class: "input-highlight" })), this.renderBottomContent()));
562
549
  }
563
550
  static get is() { return "ion-input"; }
564
551
  static get encapsulation() { return "scoped"; }
@@ -650,11 +637,11 @@ export class Input {
650
637
  "defaultValue": "'off'"
651
638
  },
652
639
  "autocorrect": {
653
- "type": "string",
640
+ "type": "boolean",
654
641
  "mutable": false,
655
642
  "complexType": {
656
- "original": "'on' | 'off'",
657
- "resolved": "\"off\" | \"on\"",
643
+ "original": "boolean",
644
+ "resolved": "boolean",
658
645
  "references": {}
659
646
  },
660
647
  "required": false,
@@ -667,7 +654,7 @@ export class Input {
667
654
  "setter": false,
668
655
  "reflect": false,
669
656
  "attribute": "autocorrect",
670
- "defaultValue": "'off'"
657
+ "defaultValue": "false"
671
658
  },
672
659
  "autofocus": {
673
660
  "type": "boolean",
@@ -206,12 +206,6 @@
206
206
  }
207
207
 
208
208
  .input-clear-icon {
209
- -webkit-margin-start: auto;
210
- margin-inline-start: auto;
211
- -webkit-margin-end: auto;
212
- margin-inline-end: auto;
213
- margin-top: auto;
214
- margin-bottom: auto;
215
209
  padding-left: 0;
216
210
  padding-right: 0;
217
211
  padding-top: 0;
@@ -269,14 +263,47 @@
269
263
  line-height: normal;
270
264
  }
271
265
 
266
+ .input-control {
267
+ display: flex;
268
+ flex-grow: 1;
269
+ width: 100%;
270
+ /**
271
+ * Allows the control to shrink below the label and input's intrinsic
272
+ * width, preventing the start and end slots from being pushed outside
273
+ * the wrapper. The label and input truncate independently, so it can
274
+ * use whatever space remains after accounting for the slots.
275
+ */
276
+ min-width: 0;
277
+ }
278
+
272
279
  .native-wrapper {
273
280
  display: flex;
274
281
  position: relative;
275
282
  flex-grow: 1;
276
- align-items: center;
277
283
  width: 100%;
278
284
  }
279
285
 
286
+ /**
287
+ * When the label sits beside the input, the label should size to its content
288
+ * and the input should take the remaining space. A zero flex basis prevents
289
+ * the input from requesting its full width and forcing the label to shrink.
290
+ * Stacked and floating placements use a column layout, so their flex basis
291
+ * controls height instead and does not need to be overridden.
292
+ */
293
+ :host(.input-label-placement-start) .native-wrapper,
294
+ :host(.input-label-placement-end) .native-wrapper,
295
+ :host(.input-label-placement-fixed) .native-wrapper {
296
+ flex: 1 1 0;
297
+ }
298
+
299
+ .input-start,
300
+ .input-end {
301
+ display: flex;
302
+ position: relative;
303
+ flex-shrink: 0;
304
+ align-items: center;
305
+ }
306
+
280
307
  :host(.ion-touched.ion-invalid) {
281
308
  --highlight-color: var(--highlight-color-invalid);
282
309
  }
@@ -377,6 +404,12 @@
377
404
  */
378
405
  display: flex;
379
406
  align-items: center;
407
+ /**
408
+ * Allows the label to shrink below its intrinsic content width.
409
+ * Without this the label keeps its full width and can push the
410
+ * input and end slot outside the wrapper.
411
+ */
412
+ min-width: 0;
380
413
  /**
381
414
  * Label text should not extend
382
415
  * beyond the bounds of the input.
@@ -395,6 +428,18 @@
395
428
  pointer-events: none;
396
429
  }
397
430
 
431
+ /**
432
+ * When start/end slots are added or removed, we temporarily
433
+ * disable the label transition to prevent the floating label
434
+ * from animating as its position is adjusted.
435
+ *
436
+ * This class is applied by the start container controller, so
437
+ * renaming it here requires renaming it there too.
438
+ */
439
+ :host(.skip-label-transition) .label-text-wrapper {
440
+ transition: none;
441
+ }
442
+
398
443
  /**
399
444
  * We need to use two elements instead of
400
445
  * one. The .label-text-wrapper is responsible
@@ -438,7 +483,7 @@
438
483
  * Label is on the left of the input in LTR and
439
484
  * on the right in RTL.
440
485
  */
441
- :host(.input-label-placement-start) .input-wrapper {
486
+ :host(.input-label-placement-start) .input-control {
442
487
  flex-direction: row;
443
488
  }
444
489
 
@@ -460,7 +505,7 @@
460
505
  * Label is on the right of the input in LTR and
461
506
  * on the left in RTL.
462
507
  */
463
- :host(.input-label-placement-end) .input-wrapper {
508
+ :host(.input-label-placement-end) .input-control {
464
509
  flex-direction: row-reverse;
465
510
  }
466
511
 
@@ -508,10 +553,9 @@
508
553
  * Floating: Label sits over the input when the input has no
509
554
  * value and is blurred. Label sits above the input and is scaled
510
555
  * down when the input is focused or has a value.
511
- *
512
556
  */
513
- :host(.input-label-placement-stacked) .input-wrapper,
514
- :host(.input-label-placement-floating) .input-wrapper {
557
+ :host(.input-label-placement-stacked) .input-control,
558
+ :host(.input-label-placement-floating) .input-control {
515
559
  flex-direction: column;
516
560
  align-items: start;
517
561
  }
@@ -542,18 +586,6 @@
542
586
  }
543
587
  }
544
588
 
545
- /**
546
- * Ensures the input does not
547
- * overlap the label.
548
- */
549
- :host(.input-label-placement-stacked) input,
550
- :host(.input-label-placement-floating) input {
551
- margin-left: 0;
552
- margin-right: 0;
553
- margin-top: 1px;
554
- margin-bottom: 0;
555
- }
556
-
557
589
  /**
558
590
  * This makes the label sit over the input
559
591
  * when the input is blurred and has no value.
@@ -906,6 +938,14 @@
906
938
  --border-radius: 4px;
907
939
  --padding-start: 16px;
908
940
  --padding-end: 16px;
941
+ /**
942
+ * The measured width of the start container, as a negative offset
943
+ * in LTR and a positive one in RTL. Written to the host by the
944
+ * start container controller, so renaming it here requires renaming
945
+ * it there too. Declared with a default so the label is positioned
946
+ * correctly before the first measurement runs.
947
+ */
948
+ --internal-start-container-adjustment: 0px;
909
949
  min-height: 56px;
910
950
  }
911
951
 
@@ -960,15 +1000,25 @@
960
1000
  border-bottom: none;
961
1001
  }
962
1002
 
1003
+ /**
1004
+ * The resting label is positioned relative to the control so it can size to
1005
+ * the space between the start and end slots. When floating, the label needs
1006
+ * to escape the control and position itself relative to the wrapper instead.
1007
+ */
1008
+ :host(.input-fill-outline:not(.label-floating)) .input-control {
1009
+ position: relative;
1010
+ }
1011
+
963
1012
  :host(.input-fill-outline.input-label-placement-stacked) .label-text-wrapper,
964
1013
  :host(.input-fill-outline.input-label-placement-floating) .label-text-wrapper {
965
1014
  transform-origin: left top;
966
1015
  position: absolute;
967
1016
  /**
968
- * Label text should not extend
969
- * beyond the bounds of the input.
1017
+ * While resting this is the width of the text input, which already
1018
+ * excludes the start and end slots. Once the label floats the
1019
+ * containing block becomes the wrapper and the rule below takes over.
970
1020
  */
971
- max-width: calc(100% - var(--padding-start) - var(--padding-end));
1021
+ max-width: 100%;
972
1022
  }
973
1023
  :host-context([dir=rtl]):host(.input-fill-outline.input-label-placement-stacked) .label-text-wrapper, :host-context([dir=rtl]).input-fill-outline.input-label-placement-stacked .label-text-wrapper, :host-context([dir=rtl]):host(.input-fill-outline.input-label-placement-floating) .label-text-wrapper, :host-context([dir=rtl]).input-fill-outline.input-label-placement-floating .label-text-wrapper {
974
1024
  transform-origin: right top;
@@ -993,7 +1043,7 @@
993
1043
  * This makes the label sit above the input.
994
1044
  */
995
1045
  :host(.label-floating.input-fill-outline) .label-text-wrapper {
996
- transform: translateY(-32%) scale(0.75);
1046
+ transform: translate(var(--internal-start-container-adjustment, 0px), -32%) scale(0.75);
997
1047
  margin-left: 0;
998
1048
  margin-right: 0;
999
1049
  margin-top: 0;
@@ -1005,19 +1055,6 @@
1005
1055
  max-width: calc((100% - var(--padding-start) - var(--padding-end) - 8px) / 0.75);
1006
1056
  }
1007
1057
 
1008
- /**
1009
- * This ensures that the input does not
1010
- * overlap the floating label while still
1011
- * remaining visually centered.
1012
- */
1013
- :host(.input-fill-outline.input-label-placement-stacked) input,
1014
- :host(.input-fill-outline.input-label-placement-floating) input {
1015
- margin-left: 0;
1016
- margin-right: 0;
1017
- margin-top: 6px;
1018
- margin-bottom: 6px;
1019
- }
1020
-
1021
1058
  :host(.input-fill-outline) .input-outline-container {
1022
1059
  left: 0;
1023
1060
  right: 0;
@@ -1190,8 +1227,7 @@
1190
1227
  }
1191
1228
 
1192
1229
  .input-clear-icon ion-icon {
1193
- width: 22px;
1194
- height: 22px;
1230
+ font-size: 22px;
1195
1231
  }
1196
1232
 
1197
1233
  :host(.input-disabled) {