voyager-ionic-core 8.8.12 → 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 (812) 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-C4t5ymfq.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-lE_JGpHD.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-BirPFsRD.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-DNQI6d-L.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/{data-DLTUw-KF.js → format-bHU8N1g5.js} +48 -562
  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 +18 -10
  190. package/dist/cjs/ion-card_5.cjs.entry.js +6 -5
  191. package/dist/cjs/ion-checkbox.cjs.entry.js +25 -12
  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 +29 -30
  195. package/dist/cjs/{ion-datetime_3.cjs.entry.js → ion-datetime.cjs.entry.js} +773 -796
  196. package/dist/cjs/ion-fab_3.cjs.entry.js +93 -14
  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 +117 -33
  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 +307 -159
  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 +24 -14
  214. package/dist/cjs/ion-range.cjs.entry.js +30 -25
  215. package/dist/cjs/ion-refresher_2.cjs.entry.js +61 -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 -125
  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 +26 -19
  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 +36 -15
  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-Dv6qrMhm.js +38 -0
  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-TbKsuC-K.js → overlays-BR21NUIG.js} +120 -57
  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 +11 -4
  261. package/dist/collection/components/card/card.js +1 -1
  262. package/dist/collection/components/checkbox/checkbox.ios.css +18 -0
  263. package/dist/collection/components/checkbox/checkbox.js +19 -8
  264. package/dist/collection/components/checkbox/checkbox.md.css +18 -0
  265. package/dist/collection/components/col/col.js +7 -3
  266. package/dist/collection/components/content/content.js +56 -6
  267. package/dist/collection/components/datetime/datetime.ios.css +42 -2
  268. package/dist/collection/components/datetime/datetime.js +193 -79
  269. package/dist/collection/components/datetime/datetime.md.css +42 -1
  270. package/dist/collection/components/datetime/utils/data.js +13 -14
  271. package/dist/collection/components/datetime/utils/format.js +21 -11
  272. package/dist/collection/components/datetime/utils/manipulation.js +8 -8
  273. package/dist/collection/components/datetime/utils/parse.js +10 -10
  274. package/dist/collection/components/datetime/utils/state.js +8 -2
  275. package/dist/collection/components/datetime/utils/validate.js +4 -5
  276. package/dist/collection/components/datetime-button/datetime-button.ios.css +5 -0
  277. package/dist/collection/components/datetime-button/datetime-button.js +21 -25
  278. package/dist/collection/components/datetime-button/datetime-button.md.css +5 -0
  279. package/dist/collection/components/fab-button/fab-button.js +114 -10
  280. package/dist/collection/components/footer/footer.js +1 -1
  281. package/dist/collection/components/header/header.js +2 -2
  282. package/dist/collection/components/img/img.js +6 -1
  283. package/dist/collection/components/input/input.ios.css +57 -26
  284. package/dist/collection/components/input/input.js +51 -64
  285. package/dist/collection/components/input/input.md.css +79 -43
  286. package/dist/collection/components/input-otp/input-otp.js +15 -24
  287. package/dist/collection/components/input-password-toggle/input-password-toggle.js +5 -6
  288. package/dist/collection/components/item/item.ios.css +11 -0
  289. package/dist/collection/components/item/item.js +99 -15
  290. package/dist/collection/components/item/item.md.css +11 -0
  291. package/dist/collection/components/item-divider/item-divider.js +2 -2
  292. package/dist/collection/components/item-group/item-group.js +1 -1
  293. package/dist/collection/components/item-option/item-option.js +2 -2
  294. package/dist/collection/components/item-options/item-options.js +1 -1
  295. package/dist/collection/components/item-sliding/item-sliding.js +12 -16
  296. package/dist/collection/components/label/label.js +2 -2
  297. package/dist/collection/components/list/list.js +2 -2
  298. package/dist/collection/components/list-header/list-header.js +2 -2
  299. package/dist/collection/components/loading/loading.js +17 -5
  300. package/dist/collection/components/menu/menu.js +6 -8
  301. package/dist/collection/components/menu-button/menu-button.js +2 -2
  302. package/dist/collection/components/menu-toggle/menu-toggle.js +2 -2
  303. package/dist/collection/components/modal/animations/ios.enter.js +1 -1
  304. package/dist/collection/components/modal/animations/md.enter.js +1 -1
  305. package/dist/collection/components/modal/gestures/sheet.js +47 -32
  306. package/dist/collection/components/modal/gestures/swipe-to-close.js +23 -33
  307. package/dist/collection/components/modal/gestures/utils.js +17 -0
  308. package/dist/collection/components/modal/modal.ios.css +8 -0
  309. package/dist/collection/components/modal/modal.js +158 -65
  310. package/dist/collection/components/modal/modal.md.css +8 -0
  311. package/dist/collection/components/modal/safe-area-utils.js +39 -5
  312. package/dist/collection/components/nav/nav.js +24 -235
  313. package/dist/collection/components/nav-link/nav-link.js +1 -1
  314. package/dist/collection/components/note/note.js +2 -2
  315. package/dist/collection/components/picker/picker.js +1 -2
  316. package/dist/collection/components/picker-column/picker-column.css +3 -0
  317. package/dist/collection/components/picker-column/picker-column.js +212 -58
  318. package/dist/collection/components/picker-column-option/picker-column-option.js +3 -10
  319. package/dist/collection/components/picker-column-option/picker-column-option.md.css +6 -1
  320. package/dist/collection/components/popover/animations/ios.enter.js +1 -2
  321. package/dist/collection/components/popover/animations/md.enter.js +1 -2
  322. package/dist/collection/components/popover/popover.ios.css +15 -0
  323. package/dist/collection/components/popover/popover.js +32 -9
  324. package/dist/collection/components/popover/popover.md.css +15 -0
  325. package/dist/collection/components/popover/utils.js +4 -6
  326. package/dist/collection/components/progress-bar/progress-bar.js +1 -1
  327. package/dist/collection/components/radio/radio.ios.css +11 -15
  328. package/dist/collection/components/radio/radio.js +17 -9
  329. package/dist/collection/components/radio/radio.md.css +11 -11
  330. package/dist/collection/components/radio-group/radio-group.js +2 -2
  331. package/dist/collection/components/range/range.js +24 -19
  332. package/dist/collection/components/refresher/refresher.js +49 -16
  333. package/dist/collection/components/refresher-content/refresher-content.js +1 -1
  334. package/dist/collection/components/reorder/reorder.js +1 -1
  335. package/dist/collection/components/reorder-group/reorder-group.js +1 -1
  336. package/dist/collection/components/ripple-effect/ripple-effect.js +1 -1
  337. package/dist/collection/components/route/route.js +1 -1
  338. package/dist/collection/components/router/router.js +2 -6
  339. package/dist/collection/components/router/utils/dom.js +25 -7
  340. package/dist/collection/components/router/utils/matching.js +6 -9
  341. package/dist/collection/components/router/utils/parser.js +1 -1
  342. package/dist/collection/components/router/utils/path.js +0 -1
  343. package/dist/collection/components/router-link/router-link.js +2 -2
  344. package/dist/collection/components/router-outlet/router-outlet.js +49 -10
  345. package/dist/collection/components/row/row.js +1 -1
  346. package/dist/collection/components/searchbar/searchbar.js +25 -20
  347. package/dist/collection/components/segment/segment.js +9 -11
  348. package/dist/collection/components/segment-button/segment-button.js +15 -9
  349. package/dist/collection/components/segment-content/segment-content.js +1 -1
  350. package/dist/collection/components/segment-view/segment-view.js +3 -4
  351. package/dist/collection/components/select/select.ios.css +96 -69
  352. package/dist/collection/components/select/select.js +405 -91
  353. package/dist/collection/components/select/select.md.css +118 -85
  354. package/dist/collection/components/select-modal/select-modal.ios.css +218 -0
  355. package/dist/collection/components/select-modal/select-modal.js +80 -27
  356. package/dist/collection/components/select-modal/select-modal.md.css +164 -0
  357. package/dist/collection/components/select-option/select-option.js +67 -3
  358. package/dist/collection/components/select-popover/select-popover.ios.css +218 -0
  359. package/dist/collection/components/select-popover/select-popover.js +78 -26
  360. package/dist/collection/components/select-popover/select-popover.md.css +164 -0
  361. package/dist/collection/components/skeleton-text/skeleton-text.js +2 -2
  362. package/dist/collection/components/spinner/spinner.js +2 -3
  363. package/dist/collection/components/split-pane/split-pane.js +2 -2
  364. package/dist/collection/components/tab/tab.js +20 -13
  365. package/dist/collection/components/tab-bar/tab-bar.js +2 -2
  366. package/dist/collection/components/tab-button/tab-button.js +6 -4
  367. package/dist/collection/components/tabs/tabs.js +2 -3
  368. package/dist/collection/components/text/text.js +2 -2
  369. package/dist/collection/components/textarea/textarea.ios.css +94 -62
  370. package/dist/collection/components/textarea/textarea.js +47 -57
  371. package/dist/collection/components/textarea/textarea.md.css +103 -77
  372. package/dist/collection/components/thumbnail/thumbnail.js +1 -1
  373. package/dist/collection/components/title/title.js +2 -2
  374. package/dist/collection/components/toast/toast.js +12 -9
  375. package/dist/collection/components/toggle/toggle.ios.css +12 -4
  376. package/dist/collection/components/toggle/toggle.js +27 -7
  377. package/dist/collection/components/toggle/toggle.md.css +42 -5
  378. package/dist/collection/components/toolbar/toolbar.js +7 -4
  379. package/dist/collection/global/config.js +3 -3
  380. package/dist/collection/global/ionic-global.js +8 -2
  381. package/dist/collection/index.js +1 -1
  382. package/dist/collection/utils/animation/animation.js +3 -3
  383. package/dist/collection/utils/config.js +5 -4
  384. package/dist/collection/utils/content/index.js +30 -0
  385. package/dist/collection/utils/focus-controller/index.js +1 -1
  386. package/dist/collection/utils/focus-trap.js +3 -3
  387. package/dist/collection/utils/forms/index.js +2 -0
  388. package/dist/collection/utils/forms/item-multiple-inputs.js +33 -0
  389. package/dist/collection/utils/forms/start-container-controller.js +132 -0
  390. package/dist/collection/utils/framework-delegate.js +4 -6
  391. package/dist/collection/utils/gesture/gesture-controller.js +1 -2
  392. package/dist/collection/utils/gesture/index.js +10 -2
  393. package/dist/collection/utils/gesture/listener.js +4 -27
  394. package/dist/collection/utils/hardware-back-button.js +3 -3
  395. package/dist/collection/utils/helpers.js +14 -10
  396. package/dist/collection/utils/input-shims/hacks/scroll-assist.js +4 -5
  397. package/dist/collection/utils/input-shims/hacks/scroll-data.js +1 -2
  398. package/dist/collection/utils/keyboard/keyboard-controller.js +5 -5
  399. package/dist/collection/utils/keyboard/keyboard.js +1 -1
  400. package/dist/collection/utils/logging/index.js +23 -4
  401. package/dist/collection/utils/menu-controller/index.js +1 -2
  402. package/dist/collection/utils/native/haptic.js +2 -3
  403. package/dist/collection/utils/native/keyboard.js +2 -2
  404. package/dist/collection/utils/native/status-bar.js +1 -1
  405. package/dist/collection/utils/overlay-control-label.js +45 -0
  406. package/dist/collection/utils/overlays.js +109 -47
  407. package/dist/collection/utils/platform.js +4 -5
  408. package/dist/collection/utils/rtl/dir.js +17 -7
  409. package/dist/collection/utils/sanitization/index.js +275 -20
  410. package/dist/collection/utils/select-option-render.js +118 -0
  411. package/dist/collection/utils/slot-mutation-controller.js +1 -2
  412. package/dist/collection/utils/test/late-props/late-props.js +69 -0
  413. package/dist/collection/utils/test/playwright/apply-keyboard-focus.js +25 -0
  414. package/dist/collection/utils/test/playwright/detach-reattach.js +23 -0
  415. package/dist/collection/utils/test/playwright/drag-element.js +14 -0
  416. package/dist/collection/utils/test/playwright/generator.js +3 -4
  417. package/dist/collection/utils/test/playwright/index.js +2 -0
  418. package/dist/collection/utils/test/playwright/page/event-spy.js +2 -4
  419. package/dist/collection/utils/test/playwright/page/utils/goto.js +4 -5
  420. package/dist/collection/utils/test/playwright/page/utils/set-content.js +1 -1
  421. package/dist/collection/utils/test/playwright/page/utils/set-ion-viewport.js +2 -3
  422. package/dist/collection/utils/test/press-keys.js +6 -16
  423. package/dist/collection/utils/theme.js +6 -1
  424. package/dist/collection/utils/transition/ios.transition.js +9 -13
  425. package/dist/collection/utils/transition/md.transition.js +3 -4
  426. package/dist/docs.json +972 -1402
  427. package/dist/esm/{animation-DLJpuoEz.js → animation-BFNVlYum.js} +4 -4
  428. package/dist/esm/{app-globals-D0C5S4hU.js → app-globals-BgX0BGL1.js} +1 -1
  429. package/dist/esm/{button-active-BSpTQmS9.js → button-active-BfOvDr3b.js} +3 -3
  430. package/dist/esm/config-DWCzVL3Y.js +32 -0
  431. package/dist/esm/dir-Dojwmvde.js +28 -0
  432. package/dist/esm/{data-DZI70dKr.js → format-DDFE9jM5.js} +41 -554
  433. package/dist/esm/{framework-delegate-FnPGymXL.js → framework-delegate-BwNhx9NR.js} +5 -7
  434. package/dist/esm/{gesture-controller-BTEOs1at.js → gesture-controller-B_gJaBk0.js} +1 -2
  435. package/dist/esm/{haptic-DzAMWJuk.js → haptic-Cq4UAeka.js} +2 -3
  436. package/dist/esm/{hardware-back-button-B93Gru0Y.js → hardware-back-button-DmkiRgOT.js} +4 -4
  437. package/dist/esm/{helpers-HEqiOzXb.js → helpers-BSmc0nst.js} +15 -11
  438. package/dist/esm/{index-CfgBF1SE.js → index-BmLuEdV7.js} +13 -30
  439. package/dist/esm/{index-Q6UPU0Ay.js → index-BuPaALjU.js} +6 -7
  440. package/dist/esm/{index-DV3sJJW8.js → index-BvabGprD.js} +2 -2
  441. package/dist/esm/{index-MEDq2S8l.js → index-C1b9CLFg.js} +33 -3
  442. package/dist/esm/{index-tcQvqkiX.js → index-C23AVPx9.js} +303 -26
  443. package/dist/esm/{index-BRHzoo00.js → index-CJln0gS3.js} +3 -2
  444. package/dist/esm/index-CqoUoxgG.js +423 -0
  445. package/dist/esm/{index-B_dQk_WE.js → index-DnA_7Bnx.js} +5 -5
  446. package/dist/esm/index.js +17 -15
  447. package/dist/esm/{input-shims-D10mwcw1.js → input-shims-Dqk-Ou25.js} +10 -11
  448. package/dist/esm/input.utils-rqoH22pW.js +33 -0
  449. package/dist/esm/ion-accordion_2.entry.js +12 -12
  450. package/dist/esm/ion-action-sheet.entry.js +92 -44
  451. package/dist/esm/ion-alert.entry.js +143 -64
  452. package/dist/esm/ion-app_8.entry.js +112 -40
  453. package/dist/esm/ion-avatar_3.entry.js +4 -4
  454. package/dist/esm/ion-back-button.entry.js +6 -5
  455. package/dist/esm/ion-backdrop.entry.js +2 -2
  456. package/dist/esm/ion-breadcrumb_2.entry.js +8 -7
  457. package/dist/esm/ion-button_2.entry.js +18 -10
  458. package/dist/esm/ion-card_5.entry.js +6 -5
  459. package/dist/esm/ion-checkbox.entry.js +25 -12
  460. package/dist/esm/ion-chip.entry.js +3 -3
  461. package/dist/esm/ion-col_3.entry.js +10 -6
  462. package/dist/esm/ion-datetime-button.entry.js +28 -29
  463. package/dist/esm/{ion-datetime_3.entry.js → ion-datetime.entry.js} +712 -733
  464. package/dist/esm/ion-fab_3.entry.js +93 -14
  465. package/dist/esm/ion-img.entry.js +7 -4
  466. package/dist/esm/ion-infinite-scroll_2.entry.js +7 -5
  467. package/dist/esm/ion-input-otp.entry.js +20 -29
  468. package/dist/esm/ion-input-password-toggle.entry.js +9 -10
  469. package/dist/esm/ion-input.entry.js +56 -68
  470. package/dist/esm/ion-item-option_3.entry.js +21 -24
  471. package/dist/esm/ion-item_8.entry.js +117 -33
  472. package/dist/esm/ion-loading.entry.js +28 -14
  473. package/dist/esm/ion-menu_3.entry.js +23 -24
  474. package/dist/esm/ion-modal.entry.js +295 -147
  475. package/dist/esm/ion-nav_2.entry.js +30 -138
  476. package/dist/esm/ion-picker-column-option.entry.js +8 -13
  477. package/dist/esm/ion-picker-column.entry.js +218 -62
  478. package/dist/esm/ion-picker.entry.js +4 -4
  479. package/dist/esm/ion-popover.entry.js +50 -30
  480. package/dist/esm/ion-progress-bar.entry.js +6 -5
  481. package/dist/esm/ion-radio_2.entry.js +24 -14
  482. package/dist/esm/ion-range.entry.js +30 -25
  483. package/dist/esm/ion-refresher_2.entry.js +59 -24
  484. package/dist/esm/ion-reorder_2.entry.js +10 -9
  485. package/dist/esm/ion-ripple-effect.entry.js +3 -3
  486. package/dist/esm/ion-route_4.entry.js +36 -30
  487. package/dist/esm/ion-searchbar.entry.js +27 -22
  488. package/dist/esm/ion-segment-content.entry.js +2 -2
  489. package/dist/esm/ion-segment-view.entry.js +5 -6
  490. package/dist/esm/ion-segment_2.entry.js +30 -26
  491. package/dist/esm/ion-select-modal.entry.js +93 -38
  492. package/dist/esm/ion-select_3.entry.js +495 -125
  493. package/dist/esm/ion-spinner.entry.js +5 -6
  494. package/dist/esm/ion-split-pane.entry.js +4 -4
  495. package/dist/esm/ion-tab-bar_2.entry.js +15 -12
  496. package/dist/esm/ion-tab_2.entry.js +26 -19
  497. package/dist/esm/ion-text.entry.js +5 -5
  498. package/dist/esm/ion-textarea.entry.js +55 -64
  499. package/dist/esm/ion-toast.entry.js +25 -20
  500. package/dist/esm/ion-toggle.entry.js +36 -15
  501. package/dist/esm/{ionic-global-Cp_eT4sZ.js → ionic-global-ZXjCXKH0.js} +13 -8
  502. package/dist/esm/ionic.js +6 -6
  503. package/dist/esm/{ios.transition-ClFrsIrS.js → ios.transition-CWAgfQ1r.js} +14 -17
  504. package/dist/esm/item-multiple-inputs-DZnIiOO_.js +36 -0
  505. package/dist/esm/{keyboard-ywgs5efA.js → keyboard-Cj8mLJeq.js} +2 -2
  506. package/dist/esm/{keyboard-CUw4ekVy.js → keyboard-DAF8GNJ9.js} +2 -2
  507. package/dist/esm/{keyboard-controller-BaaVITYt.js → keyboard-controller-DEwoa1ev.js} +6 -6
  508. package/dist/esm/loader.js +5 -5
  509. package/dist/esm/{md.transition-D0msQmzI.js → md.transition-ZuqDDdDW.js} +8 -8
  510. package/dist/esm/overlay-control-label-BSQPZ79H.js +47 -0
  511. package/dist/esm/{overlays-TbiM4mdr.js → overlays-DKE0DgvE.js} +119 -57
  512. package/dist/esm/select-option-render-1W6W9pbC.js +121 -0
  513. package/dist/esm/slot-mutation-controller-B5NpUZ-N.js +393 -0
  514. package/dist/esm/{status-tap-Kan2W7sh.js → status-tap-Cv9gb3ja.js} +4 -3
  515. package/dist/esm/{swipe-back-ZUWwA-KF.js → swipe-back-De5HlmeM.js} +5 -5
  516. package/dist/esm/{theme-DiVJyqlX.js → theme-byZM6qHV.js} +6 -1
  517. package/dist/html.html-data.json +58 -82
  518. package/dist/ionic/index.esm.js +1 -1
  519. package/dist/ionic/ionic.esm.js +1 -1
  520. package/dist/ionic/p-06c6b540.entry.js +4 -0
  521. package/dist/ionic/p-099b7f9f.entry.js +4 -0
  522. package/dist/ionic/p-0dcb7bb6.entry.js +4 -0
  523. package/dist/ionic/p-1347880c.entry.js +4 -0
  524. package/dist/ionic/p-191a651e.entry.js +4 -0
  525. package/dist/ionic/p-1f24cb24.entry.js +4 -0
  526. package/dist/ionic/p-271c3640.entry.js +4 -0
  527. package/dist/ionic/p-2c52fe3e.entry.js +4 -0
  528. package/dist/ionic/p-2ea4bb36.entry.js +4 -0
  529. package/dist/ionic/p-338a02e0.entry.js +4 -0
  530. package/dist/ionic/p-38b9375b.entry.js +4 -0
  531. package/dist/ionic/p-3bba83ee.entry.js +4 -0
  532. package/dist/ionic/p-4712a8a9.entry.js +4 -0
  533. package/dist/ionic/p-4c3e50f8.entry.js +4 -0
  534. package/dist/ionic/p-4e2fef42.entry.js +4 -0
  535. package/dist/ionic/p-54cbb0a7.entry.js +4 -0
  536. package/dist/ionic/{p-2bb2cb18.entry.js → p-561af487.entry.js} +1 -1
  537. package/dist/ionic/p-5906ea6f.entry.js +4 -0
  538. package/dist/ionic/p-5cc09b40.entry.js +4 -0
  539. package/dist/ionic/p-5d9094ac.entry.js +4 -0
  540. package/dist/ionic/p-612ea3b1.entry.js +4 -0
  541. package/dist/ionic/p-66f150ec.entry.js +4 -0
  542. package/dist/ionic/p-68cc89a6.entry.js +4 -0
  543. package/dist/ionic/{p-dfa8d673.entry.js → p-6e386853.entry.js} +1 -1
  544. package/dist/ionic/p-77c96e08.entry.js +4 -0
  545. package/dist/ionic/p-7bfeccb3.entry.js +4 -0
  546. package/dist/ionic/p-7e394cc3.entry.js +4 -0
  547. package/dist/ionic/{p-0fa9c382.entry.js → p-7fbb3319.entry.js} +1 -1
  548. package/dist/ionic/p-837db1b9.entry.js +4 -0
  549. package/dist/ionic/p-85599fe3.entry.js +4 -0
  550. package/dist/ionic/p-8b80d9f9.entry.js +4 -0
  551. package/dist/ionic/p-90f50a65.entry.js +4 -0
  552. package/dist/ionic/p-9595e305.entry.js +4 -0
  553. package/dist/ionic/p-9c5f2691.entry.js +4 -0
  554. package/dist/ionic/p-BMPN55of.js +4 -0
  555. package/dist/ionic/p-BSQPZ79H.js +4 -0
  556. package/dist/ionic/p-BY6BzzPF.js +4 -0
  557. package/dist/ionic/p-B_gJaBk0.js +4 -0
  558. package/dist/ionic/p-BaeKWZ-a.js +4 -0
  559. package/dist/ionic/p-Bd72UYI2.js +4 -0
  560. package/dist/ionic/p-BgOvhHy_.js +4 -0
  561. package/dist/ionic/p-BhamHSw3.js +4 -0
  562. package/dist/ionic/p-BijjLYjT.js +4 -0
  563. package/dist/ionic/{p-DV3sJJW8.js → p-BvabGprD.js} +1 -1
  564. package/dist/ionic/p-C23AVPx9.js +6 -0
  565. package/dist/ionic/p-C8XilMh0.js +4 -0
  566. package/dist/ionic/p-CER8qW8Y.js +4 -0
  567. package/dist/ionic/p-CFuOr1Tu.js +4 -0
  568. package/dist/ionic/p-CM5OBjTW.js +4 -0
  569. package/dist/ionic/p-CMZYmFb4.js +4 -0
  570. package/dist/ionic/p-CkxVYPtX.js +4 -0
  571. package/dist/ionic/p-CmXuiRT6.js +4 -0
  572. package/dist/ionic/p-D0YpjgON.js +4 -0
  573. package/dist/ionic/p-D4OrdtJf.js +4 -0
  574. package/dist/ionic/p-D5t_-oMk.js +4 -0
  575. package/dist/ionic/p-D6rHcCvc.js +4 -0
  576. package/dist/ionic/p-DLM95R4x.js +4 -0
  577. package/dist/ionic/p-DTxBioUO.js +4 -0
  578. package/dist/ionic/p-DWCzVL3Y.js +4 -0
  579. package/dist/ionic/p-DYUjHcuH.js +4 -0
  580. package/dist/ionic/p-DZ6Hmc-8.js +4 -0
  581. package/dist/ionic/p-D_gb-kdd.js +4 -0
  582. package/dist/ionic/p-DajLgJ4d.js +4 -0
  583. package/dist/ionic/p-Do3zTvCA.js +4 -0
  584. package/dist/ionic/p-Dojwmvde.js +4 -0
  585. package/dist/ionic/p-T71k3C35.js +4 -0
  586. package/dist/ionic/p-a1cc2861.entry.js +4 -0
  587. package/dist/ionic/p-a20a2ebe.entry.js +4 -0
  588. package/dist/ionic/p-a8ff2489.entry.js +4 -0
  589. package/dist/ionic/p-b3532b8d.entry.js +4 -0
  590. package/dist/ionic/p-b80c86c4.entry.js +4 -0
  591. package/dist/ionic/p-b9b4e85d.entry.js +4 -0
  592. package/dist/ionic/p-byZM6qHV.js +4 -0
  593. package/dist/ionic/p-c57fc396.entry.js +4 -0
  594. package/dist/ionic/{p-c6e49f3f.entry.js → p-ca1b8865.entry.js} +1 -1
  595. package/dist/ionic/p-cc4320d3.entry.js +4 -0
  596. package/dist/ionic/p-d6755739.entry.js +4 -0
  597. package/dist/ionic/p-d8c138d9.entry.js +4 -0
  598. package/dist/ionic/p-db449915.entry.js +4 -0
  599. package/dist/ionic/p-dd01be0a.entry.js +4 -0
  600. package/dist/ionic/p-ec00fd0d.entry.js +4 -0
  601. package/dist/ionic/p-ee09ac9d.entry.js +4 -0
  602. package/dist/ionic/{p-37e720da.entry.js → p-efc0cf82.entry.js} +1 -1
  603. package/dist/ionic/p-f0fb23c1.entry.js +4 -0
  604. package/dist/ionic/p-f83b3e0c.entry.js +4 -0
  605. package/dist/ionic/p-fU3rOYad.js +4 -0
  606. package/dist/ionic/p-zWf7R2xV.js +4 -0
  607. package/dist/types/components/action-sheet/action-sheet.d.ts +10 -0
  608. package/dist/types/components/alert/alert.d.ts +7 -0
  609. package/dist/types/components/checkbox/checkbox.d.ts +1 -0
  610. package/dist/types/components/content/content.d.ts +12 -0
  611. package/dist/types/components/datetime/datetime.d.ts +13 -1
  612. package/dist/types/components/fab-button/fab-button.d.ts +15 -0
  613. package/dist/types/components/img/img.d.ts +2 -0
  614. package/dist/types/components/input/input.d.ts +12 -6
  615. package/dist/types/components/item/item.d.ts +19 -0
  616. package/dist/types/components/modal/gestures/sheet.d.ts +1 -0
  617. package/dist/types/components/modal/gestures/utils.d.ts +11 -0
  618. package/dist/types/components/modal/modal-interface.d.ts +9 -0
  619. package/dist/types/components/modal/modal.d.ts +25 -7
  620. package/dist/types/components/modal/safe-area-utils.d.ts +6 -0
  621. package/dist/types/components/nav/nav-interface.d.ts +0 -1
  622. package/dist/types/components/nav/nav.d.ts +2 -22
  623. package/dist/types/components/picker-column/picker-column.d.ts +42 -0
  624. package/dist/types/components/radio/radio.d.ts +1 -0
  625. package/dist/types/components/range/range.d.ts +4 -1
  626. package/dist/types/components/refresher/refresher.d.ts +7 -0
  627. package/dist/types/components/route/route.d.ts +1 -1
  628. package/dist/types/components/router-outlet/router-outlet.d.ts +7 -0
  629. package/dist/types/components/searchbar/searchbar.d.ts +1 -1
  630. package/dist/types/components/select/select-interface.d.ts +31 -0
  631. package/dist/types/components/select/select.d.ts +30 -6
  632. package/dist/types/components/select-option/select-option.d.ts +42 -1
  633. package/dist/types/components/tab/tab.d.ts +1 -1
  634. package/dist/types/components/textarea/textarea.d.ts +12 -5
  635. package/dist/types/components/toggle/toggle.d.ts +1 -0
  636. package/dist/types/components.d.ts +94 -318
  637. package/dist/types/index.d.ts +1 -1
  638. package/dist/types/interface.d.ts +0 -1
  639. package/dist/types/stencil-public-runtime.d.ts +12 -0
  640. package/dist/types/utils/config.d.ts +1 -8
  641. package/dist/types/utils/content/index.d.ts +12 -0
  642. package/dist/types/utils/forms/index.d.ts +2 -0
  643. package/dist/types/utils/forms/item-multiple-inputs.d.ts +13 -0
  644. package/dist/types/utils/forms/start-container-controller.d.ts +34 -0
  645. package/dist/types/utils/helpers.d.ts +8 -5
  646. package/dist/types/utils/logging/index.d.ts +2 -1
  647. package/dist/types/utils/overlay-control-label.d.ts +32 -0
  648. package/dist/types/utils/overlays.d.ts +20 -9
  649. package/dist/types/utils/rtl/dir.d.ts +10 -4
  650. package/dist/types/utils/sanitization/index.d.ts +58 -2
  651. package/dist/types/utils/select-option-render.d.ts +53 -0
  652. package/dist/types/utils/test/playwright/apply-keyboard-focus.d.ts +16 -0
  653. package/dist/types/utils/test/playwright/detach-reattach.d.ts +13 -0
  654. package/dist/types/utils/test/playwright/index.d.ts +2 -0
  655. package/dist/types/utils/test/playwright/playwright-page.d.ts +1 -1
  656. package/dist/types/utils/test/playwright/testExpect.d.ts +1 -1
  657. package/hydrate/index.js +3341 -2197
  658. package/hydrate/index.mjs +3341 -2197
  659. package/loader/index.d.ts +1 -1
  660. package/package.json +61 -17
  661. package/components/ion-picker-legacy-column.d.ts +0 -11
  662. package/components/ion-picker-legacy-column.js +0 -4
  663. package/components/ion-picker-legacy.d.ts +0 -11
  664. package/components/ion-picker-legacy.js +0 -4
  665. package/components/p-0NRupjzW.js +0 -4
  666. package/components/p-5bE_Wz4Y.js +0 -4
  667. package/components/p-B60hm8Qv.js +0 -4
  668. package/components/p-BAYYcg3o.js +0 -4
  669. package/components/p-BLmJ0zRm.js +0 -4
  670. package/components/p-BSEgsdFI.js +0 -4
  671. package/components/p-BTEOs1at.js +0 -4
  672. package/components/p-BTPfOxsU.js +0 -4
  673. package/components/p-BT_5jSqG.js +0 -4
  674. package/components/p-Baq1XyAy.js +0 -4
  675. package/components/p-BjfgFSSR.js +0 -4
  676. package/components/p-BjoEPDW5.js +0 -4
  677. package/components/p-BnqQlm7c.js +0 -4
  678. package/components/p-BsPelv04.js +0 -4
  679. package/components/p-Bth-EzJ0.js +0 -4
  680. package/components/p-Bz0dSlXZ.js +0 -4
  681. package/components/p-C1aScSTo.js +0 -4
  682. package/components/p-C2lKgrXx.js +0 -4
  683. package/components/p-C53feagD.js +0 -4
  684. package/components/p-CHqRYvYm.js +0 -4
  685. package/components/p-CI3ncNZm.js +0 -4
  686. package/components/p-CSZf8_j0.js +0 -4
  687. package/components/p-CU5rbWAW.js +0 -4
  688. package/components/p-C_xFdyXe.js +0 -4
  689. package/components/p-Ciz1-FuE.js +0 -4
  690. package/components/p-Cl0B-RWe.js +0 -4
  691. package/components/p-CmR5uXej.js +0 -4
  692. package/components/p-CtWGkNnJ.js +0 -4
  693. package/components/p-CtukzcyX.js +0 -4
  694. package/components/p-D13Eaw-8.js +0 -4
  695. package/components/p-D5Ubpm7D.js +0 -4
  696. package/components/p-D6Ynv7Xh.js +0 -4
  697. package/components/p-D7bSXQD3.js +0 -4
  698. package/components/p-DDWp95gH.js +0 -4
  699. package/components/p-DIE4pXMl.js +0 -4
  700. package/components/p-DOFCbuQR.js +0 -4
  701. package/components/p-DiVJyqlX.js +0 -4
  702. package/components/p-DnL1c9_X.js +0 -4
  703. package/components/p-W5nO8mX_.js +0 -4
  704. package/components/p-W9CZ2mWX.js +0 -4
  705. package/components/p-XlSIJDJ-.js +0 -4
  706. package/components/p-cyNmxje6.js +0 -4
  707. package/components/p-dhLYXa7A.js +0 -4
  708. package/components/p-ijF0iCrA.js +0 -4
  709. package/components/p-k_E4tX5Z.js +0 -4
  710. package/components/p-nQi4oKcG.js +0 -4
  711. package/components/p-ryqmO0B-.js +0 -4
  712. package/dist/cjs/config-xninhj0J.js +0 -201
  713. package/dist/cjs/dir-Cn0z1rJH.js +0 -20
  714. package/dist/cjs/input.utils-DetjmtH2.js +0 -150
  715. package/dist/cjs/notch-controller-18PzRGXd.js +0 -155
  716. package/dist/collection/components/picker-legacy/animations/ios.enter.js +0 -27
  717. package/dist/collection/components/picker-legacy/animations/ios.leave.js +0 -23
  718. package/dist/collection/components/picker-legacy/picker-interface.js +0 -1
  719. package/dist/collection/components/picker-legacy/picker.ios.css +0 -300
  720. package/dist/collection/components/picker-legacy/picker.js +0 -890
  721. package/dist/collection/components/picker-legacy/picker.md.css +0 -287
  722. package/dist/collection/components/picker-legacy-column/picker-column.ios.css +0 -231
  723. package/dist/collection/components/picker-legacy-column/picker-column.js +0 -422
  724. package/dist/collection/components/picker-legacy-column/picker-column.md.css +0 -222
  725. package/dist/collection/components/picker-legacy-column/test/test.utils.js +0 -43
  726. package/dist/esm/config-DQCONYYp.js +0 -195
  727. package/dist/esm/dir-C53feagD.js +0 -18
  728. package/dist/esm/input.utils-Y6NgW8bw.js +0 -147
  729. package/dist/esm/notch-controller-DKDjU_O7.js +0 -153
  730. package/dist/ionic/p-00dbb17e.entry.js +0 -4
  731. package/dist/ionic/p-01f81ea5.entry.js +0 -4
  732. package/dist/ionic/p-06c232a4.entry.js +0 -4
  733. package/dist/ionic/p-0d005398.entry.js +0 -4
  734. package/dist/ionic/p-1ae21e4c.entry.js +0 -4
  735. package/dist/ionic/p-20b1a044.entry.js +0 -4
  736. package/dist/ionic/p-21eb76d5.entry.js +0 -4
  737. package/dist/ionic/p-2394a9a6.entry.js +0 -4
  738. package/dist/ionic/p-27d30585.entry.js +0 -4
  739. package/dist/ionic/p-2f55dc1a.entry.js +0 -4
  740. package/dist/ionic/p-30bf9737.entry.js +0 -4
  741. package/dist/ionic/p-3353c229.entry.js +0 -4
  742. package/dist/ionic/p-33704f20.entry.js +0 -4
  743. package/dist/ionic/p-390ca786.entry.js +0 -4
  744. package/dist/ionic/p-3a126bca.entry.js +0 -4
  745. package/dist/ionic/p-3a541154.entry.js +0 -4
  746. package/dist/ionic/p-3a7d1e91.entry.js +0 -4
  747. package/dist/ionic/p-3ae5f277.entry.js +0 -4
  748. package/dist/ionic/p-4745f534.entry.js +0 -4
  749. package/dist/ionic/p-4858af1f.entry.js +0 -4
  750. package/dist/ionic/p-4baa5b82.entry.js +0 -4
  751. package/dist/ionic/p-4dc1c33c.entry.js +0 -4
  752. package/dist/ionic/p-4e92a11f.entry.js +0 -4
  753. package/dist/ionic/p-50e1194a.entry.js +0 -4
  754. package/dist/ionic/p-5d1da0a2.entry.js +0 -4
  755. package/dist/ionic/p-75dc25ba.entry.js +0 -4
  756. package/dist/ionic/p-81ea5652.entry.js +0 -4
  757. package/dist/ionic/p-84d5ce05.entry.js +0 -4
  758. package/dist/ionic/p-874b4bd8.entry.js +0 -4
  759. package/dist/ionic/p-8c8eee7d.entry.js +0 -4
  760. package/dist/ionic/p-8eb8ee76.entry.js +0 -4
  761. package/dist/ionic/p-8fce95d5.entry.js +0 -4
  762. package/dist/ionic/p-94f2a736.entry.js +0 -4
  763. package/dist/ionic/p-9a65ac7f.entry.js +0 -4
  764. package/dist/ionic/p-9eeaBrnk.js +0 -4
  765. package/dist/ionic/p-9f1103ce.entry.js +0 -4
  766. package/dist/ionic/p-BGqMS-oh.js +0 -4
  767. package/dist/ionic/p-BTEOs1at.js +0 -4
  768. package/dist/ionic/p-BUFIpxKM.js +0 -4
  769. package/dist/ionic/p-C53feagD.js +0 -4
  770. package/dist/ionic/p-CFlfIb2g.js +0 -4
  771. package/dist/ionic/p-CKvCXMs9.js +0 -4
  772. package/dist/ionic/p-Cl0B-RWe.js +0 -4
  773. package/dist/ionic/p-CtWGkNnJ.js +0 -4
  774. package/dist/ionic/p-CwdymDLH.js +0 -4
  775. package/dist/ionic/p-Cx3IXROA.js +0 -4
  776. package/dist/ionic/p-D13Eaw-8.js +0 -4
  777. package/dist/ionic/p-DAAFkPFT.js +0 -4
  778. package/dist/ionic/p-DC3RagnA.js +0 -4
  779. package/dist/ionic/p-DIuEbVLu.js +0 -4
  780. package/dist/ionic/p-DSG2s2Eb.js +0 -4
  781. package/dist/ionic/p-Dfbt-q2k.js +0 -4
  782. package/dist/ionic/p-DiVJyqlX.js +0 -4
  783. package/dist/ionic/p-DoJvtrbw.js +0 -4
  784. package/dist/ionic/p-DzWaWHGc.js +0 -4
  785. package/dist/ionic/p-Nqf6uvGh.js +0 -4
  786. package/dist/ionic/p-SNAkTDfm.js +0 -4
  787. package/dist/ionic/p-VAemlbDS.js +0 -4
  788. package/dist/ionic/p-Wk5HzclC.js +0 -4
  789. package/dist/ionic/p-a21add2f.entry.js +0 -4
  790. package/dist/ionic/p-a3bdcae6.entry.js +0 -4
  791. package/dist/ionic/p-aa5d6b8f.entry.js +0 -4
  792. package/dist/ionic/p-c0fb8edd.entry.js +0 -4
  793. package/dist/ionic/p-c4d8641b.entry.js +0 -4
  794. package/dist/ionic/p-e0be05c5.entry.js +0 -4
  795. package/dist/ionic/p-e847a888.entry.js +0 -4
  796. package/dist/ionic/p-ec090e0a.entry.js +0 -4
  797. package/dist/ionic/p-ef4c3bee.entry.js +0 -4
  798. package/dist/ionic/p-fabcce6c.entry.js +0 -4
  799. package/dist/ionic/p-facfde02.entry.js +0 -4
  800. package/dist/ionic/p-fd7eebc4.entry.js +0 -4
  801. package/dist/ionic/p-mjKAFv89.js +0 -4
  802. package/dist/ionic/p-tcQvqkiX.js +0 -5
  803. package/dist/ionic/p-viFHDgRs.js +0 -4
  804. package/dist/ionic/p-xOfi7-Zn.js +0 -4
  805. package/dist/ionic/p-xWb6fgfq.js +0 -4
  806. package/dist/types/components/picker-legacy/animations/ios.enter.d.ts +0 -5
  807. package/dist/types/components/picker-legacy/animations/ios.leave.d.ts +0 -5
  808. package/dist/types/components/picker-legacy/picker-interface.d.ts +0 -52
  809. package/dist/types/components/picker-legacy/picker.d.ts +0 -158
  810. package/dist/types/components/picker-legacy-column/picker-column.d.ts +0 -46
  811. package/dist/types/components/picker-legacy-column/test/test.utils.d.ts +0 -9
  812. /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.
@@ -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) {
@@ -75,7 +75,6 @@ export class InputOTP {
75
75
  * Emits the `ionFocus` event when the input group gains focus.
76
76
  */
77
77
  this.onFocus = (index) => (event) => {
78
- var _a;
79
78
  const { inputRefs } = this;
80
79
  // Only emit ionFocus and set the focusedValue when the
81
80
  // component first gains focus
@@ -91,7 +90,7 @@ export class InputOTP {
91
90
  const targetIndex = this.inputValues[index] ? index : this.getFirstEmptyIndex();
92
91
  finalIndex = targetIndex === -1 ? this.length - 1 : targetIndex;
93
92
  // Focus the target box
94
- (_a = this.inputRefs[finalIndex]) === null || _a === void 0 ? void 0 : _a.focus();
93
+ this.inputRefs[finalIndex]?.focus();
95
94
  }
96
95
  // Update tabIndexes to match the focused box
97
96
  inputRefs.forEach((input, i) => {
@@ -203,7 +202,6 @@ export class InputOTP {
203
202
  * 5. Single character replacement
204
203
  */
205
204
  this.onInput = (index) => (event) => {
206
- var _a, _b;
207
205
  const { disabled, length, readonly, validKeyPattern } = this;
208
206
  const input = event.target;
209
207
  const value = input.value;
@@ -242,9 +240,8 @@ export class InputOTP {
242
240
  // are filled after a small delay to ensure the input boxes have been
243
241
  // updated before moving the focus
244
242
  setTimeout(() => {
245
- var _a;
246
243
  const nextIndex = validChars.length < length ? validChars.length : length - 1;
247
- (_a = this.inputRefs[nextIndex]) === null || _a === void 0 ? void 0 : _a.focus();
244
+ this.inputRefs[nextIndex]?.focus();
248
245
  }, 20);
249
246
  this.previousInputValues = [...this.inputValues];
250
247
  return;
@@ -306,9 +303,9 @@ export class InputOTP {
306
303
  // in an input box with the cursor at the beginning of the value of "6",
307
304
  // the value will be "26", but we want to grab the "2" as the last character
308
305
  // typed.
309
- const cursorPos = (_a = input.selectionStart) !== null && _a !== void 0 ? _a : value.length;
306
+ const cursorPos = input.selectionStart ?? value.length;
310
307
  const newCharIndex = cursorPos - 1;
311
- const newChar = (_b = value[newCharIndex]) !== null && _b !== void 0 ? _b : value[0];
308
+ const newChar = value[newCharIndex] ?? value[0];
312
309
  // Check if the new character is valid before updating the value
313
310
  if (!validKeyPattern.test(newChar)) {
314
311
  input.value = this.inputValues[index] || '';
@@ -328,13 +325,12 @@ export class InputOTP {
328
325
  * the next empty input after pasting.
329
326
  */
330
327
  this.onPaste = (event) => {
331
- var _a, _b;
332
328
  const { disabled, inputRefs, length, readonly, validKeyPattern } = this;
333
329
  event.preventDefault();
334
330
  if (disabled || readonly) {
335
331
  return;
336
332
  }
337
- const pastedText = (_a = event.clipboardData) === null || _a === void 0 ? void 0 : _a.getData('text');
333
+ const pastedText = event.clipboardData?.getData('text');
338
334
  // If there is no pasted text, still emit the input change event
339
335
  // because this is how the native input element behaves
340
336
  // but return early because there is nothing to paste.
@@ -359,7 +355,7 @@ export class InputOTP {
359
355
  // Focus the next empty input after pasting
360
356
  // If all boxes are filled, focus the last input
361
357
  const nextEmptyIndex = validChars.length < length ? validChars.length : length - 1;
362
- (_b = inputRefs[nextEmptyIndex]) === null || _b === void 0 ? void 0 : _b.focus();
358
+ inputRefs[nextEmptyIndex]?.focus();
363
359
  };
364
360
  }
365
361
  /**
@@ -369,14 +365,13 @@ export class InputOTP {
369
365
  * Otherwise, the first empty input box or the last input if all are filled will be focused.
370
366
  */
371
367
  async setFocus(index) {
372
- var _a, _b;
373
368
  if (typeof index === 'number') {
374
369
  const validIndex = Math.max(0, Math.min(index, this.length - 1));
375
- (_a = this.inputRefs[validIndex]) === null || _a === void 0 ? void 0 : _a.focus();
370
+ this.inputRefs[validIndex]?.focus();
376
371
  }
377
372
  else {
378
373
  const tabbableIndex = this.getTabbableIndex();
379
- (_b = this.inputRefs[tabbableIndex]) === null || _b === void 0 ? void 0 : _b.focus();
374
+ this.inputRefs[tabbableIndex]?.focus();
380
375
  }
381
376
  }
382
377
  valueChanged() {
@@ -540,20 +535,18 @@ export class InputOTP {
540
535
  * Focuses the next input box.
541
536
  */
542
537
  focusNext(currentIndex) {
543
- var _a;
544
538
  const { inputRefs, length } = this;
545
539
  if (currentIndex < length - 1) {
546
- (_a = inputRefs[currentIndex + 1]) === null || _a === void 0 ? void 0 : _a.focus();
540
+ inputRefs[currentIndex + 1]?.focus();
547
541
  }
548
542
  }
549
543
  /**
550
544
  * Focuses the previous input box.
551
545
  */
552
546
  focusPrevious(currentIndex) {
553
- var _a;
554
547
  const { inputRefs } = this;
555
548
  if (currentIndex > 0) {
556
- (_a = inputRefs[currentIndex - 1]) === null || _a === void 0 ? void 0 : _a.focus();
549
+ inputRefs[currentIndex - 1]?.focus();
557
550
  }
558
551
  }
559
552
  /**
@@ -562,12 +555,11 @@ export class InputOTP {
562
555
  * Returns -1 if all inputs are filled.
563
556
  */
564
557
  getFirstEmptyIndex() {
565
- var _a;
566
558
  const { inputValues, length } = this;
567
559
  // Create an array of the same length as the input OTP
568
560
  // and fill it with the input values
569
561
  const values = Array.from({ length }, (_, i) => inputValues[i] || '');
570
- return (_a = values.findIndex((value) => !value || value === '')) !== null && _a !== void 0 ? _a : -1;
562
+ return values.findIndex((value) => !value || value === '') ?? -1;
571
563
  }
572
564
  /**
573
565
  * Returns the index of the input that should be tabbed to.
@@ -613,14 +605,13 @@ export class InputOTP {
613
605
  return this.parsedSeparators.includes(index + 1) && index < length - 1;
614
606
  }
615
607
  render() {
616
- var _a, _b;
617
608
  const { autocapitalize, color, disabled, el, fill, hasFocus, inheritedAttributes, inputId, inputRefs, inputValues, length, readonly, shape, size, } = this;
618
609
  const mode = getIonMode(this);
619
610
  const inputmode = this.getInputmode();
620
611
  const tabbableIndex = this.getTabbableIndex();
621
612
  const pattern = this.getPattern();
622
- const hasDescription = ((_b = (_a = el.querySelector('.input-otp-description')) === null || _a === void 0 ? void 0 : _a.textContent) === null || _b === void 0 ? void 0 : _b.trim()) !== '';
623
- return (h(Host, { key: 'ffeec6d07b5d3cd375b72d4c9f4fe755d80ac094', class: createColorClasses(color, {
613
+ const hasDescription = el.querySelector('.input-otp-description')?.textContent?.trim() !== '';
614
+ return (h(Host, { key: 'bd37661e13cde21feff30c663e6813ce3fff0d9a', class: createColorClasses(color, {
624
615
  [mode]: true,
625
616
  'has-focus': hasFocus,
626
617
  [`input-otp-size-${size}`]: true,
@@ -628,10 +619,10 @@ export class InputOTP {
628
619
  [`input-otp-fill-${fill}`]: true,
629
620
  'input-otp-disabled': disabled,
630
621
  'input-otp-readonly': readonly,
631
- }) }, h("div", Object.assign({ key: 'f42471e4ed8054f07162a52b42a0ca49c3d57bb0', role: "group", "aria-label": "One-time password input", class: "input-otp-group" }, inheritedAttributes), Array.from({ length }).map((_, index) => (h(Fragment, null, h("div", { class: "native-wrapper" }, h("input", { class: "native-input", id: `${inputId}-${index}`, "aria-label": `Input ${index + 1} of ${length}`, type: "text", autoCapitalize: autocapitalize, inputmode: inputmode, pattern: pattern, disabled: disabled, readOnly: readonly, tabIndex: index === tabbableIndex ? 0 : -1, value: inputValues[index] || '', autocomplete: "one-time-code", ref: (el) => (inputRefs[index] = el), onInput: this.onInput(index), onBlur: this.onBlur, onFocus: this.onFocus(index), onKeyDown: this.onKeyDown(index), onPaste: this.onPaste })), this.showSeparator(index) && h("div", { class: "input-otp-separator" }))))), h("div", { key: 'b06461605b2404476b856785b7116e18b4dbaeaa', class: {
622
+ }) }, h("div", { key: '5e206f870024f1ecfebda999ff31e6e815774deb', role: "group", "aria-label": "One-time password input", class: "input-otp-group", ...inheritedAttributes }, Array.from({ length }).map((_, index) => (h(Fragment, null, h("div", { class: "native-wrapper" }, h("input", { class: "native-input", id: `${inputId}-${index}`, "aria-label": `Input ${index + 1} of ${length}`, type: "text", autoCapitalize: autocapitalize, inputmode: inputmode, pattern: pattern, disabled: disabled, readOnly: readonly, tabIndex: index === tabbableIndex ? 0 : -1, value: inputValues[index] || '', autocomplete: "one-time-code", ref: (el) => (inputRefs[index] = el), onInput: this.onInput(index), onBlur: this.onBlur, onFocus: this.onFocus(index), onKeyDown: this.onKeyDown(index), onPaste: this.onPaste })), this.showSeparator(index) && h("div", { class: "input-otp-separator" }))))), h("div", { key: 'c268f838ddab2c8d6a612a11c7d38e6ca076436d', class: {
632
623
  'input-otp-description': true,
633
624
  'input-otp-description-hidden': !hasDescription,
634
- } }, h("slot", { key: '5bf9e7dc365f6caf0d4b13ae26e5559cdbbd162c' }))));
625
+ } }, h("slot", { key: 'c0736359b26f609b795e399fc1ad9b540632af18' }))));
635
626
  }
636
627
  static get is() { return "ion-input-otp"; }
637
628
  static get encapsulation() { return "scoped"; }
@@ -54,22 +54,21 @@ export class InputPasswordToggle {
54
54
  this.inputElRef = null;
55
55
  }
56
56
  render() {
57
- var _a, _b;
58
57
  const { color, type } = this;
59
58
  const mode = getIonMode(this);
60
- const showPasswordIcon = (_a = this.showIcon) !== null && _a !== void 0 ? _a : eye;
61
- const hidePasswordIcon = (_b = this.hideIcon) !== null && _b !== void 0 ? _b : eyeOff;
59
+ const showPasswordIcon = this.showIcon ?? eye;
60
+ const hidePasswordIcon = this.hideIcon ?? eyeOff;
62
61
  const isPasswordVisible = type === 'text';
63
- return (h(Host, { key: '91bc55664d496fe457518bd112865dd7811d0c17', class: createColorClasses(color, {
62
+ return (h(Host, { key: '15a29e51abc236cc21943225ed377f5edca7d103', class: createColorClasses(color, {
64
63
  [mode]: true,
65
- }) }, h("ion-button", { key: '6344d6838f5cdcba54c6bf4b592f036092044de0', mode: mode, color: color, fill: "clear", shape: "round", "aria-label": isPasswordVisible ? 'Hide password' : 'Show password', "aria-pressed": isPasswordVisible ? 'true' : 'false', type: "button", onPointerDown: (ev) => {
64
+ }) }, h("ion-button", { key: 'cc9c290e809db66c14aaf63eb496ccf94d3f6414', mode: mode, color: color, fill: "clear", shape: "round", "aria-label": isPasswordVisible ? 'Hide password' : 'Show password', "aria-pressed": isPasswordVisible ? 'true' : 'false', type: "button", onPointerDown: (ev) => {
66
65
  /**
67
66
  * This prevents mobile browsers from
68
67
  * blurring the input when the password toggle
69
68
  * button is activated.
70
69
  */
71
70
  ev.preventDefault();
72
- }, onClick: this.togglePasswordVisibility }, h("ion-icon", { key: 'a2bd9197c2635bf8cb155ff25ce022e7d7dc6d00', slot: "icon-only", "aria-hidden": "true", icon: isPasswordVisible ? hidePasswordIcon : showPasswordIcon }))));
71
+ }, onClick: this.togglePasswordVisibility }, h("ion-icon", { key: '8d1f5143bedabcff2a8792f35ef07fdac1236fd5', slot: "icon-only", "aria-hidden": "true", icon: isPasswordVisible ? hidePasswordIcon : showPasswordIcon }))));
73
72
  }
74
73
  static get is() { return "ion-input-password-toggle"; }
75
74
  static get encapsulation() { return "shadow"; }
@@ -387,6 +387,17 @@ a {
387
387
  flex-direction: column;
388
388
  }
389
389
 
390
+ :host(.item-focus-indicator-room) .input-wrapper {
391
+ -webkit-margin-start: -12px;
392
+ margin-inline-start: -12px;
393
+ -webkit-margin-end: -12px;
394
+ margin-inline-end: -12px;
395
+ -webkit-padding-start: 12px;
396
+ padding-inline-start: 12px;
397
+ -webkit-padding-end: 12px;
398
+ padding-inline-end: 12px;
399
+ }
400
+
390
401
  :host(.item-multiple-inputs) ::slotted(ion-checkbox),
391
402
  :host(.item-multiple-inputs) ::slotted(ion-datetime),
392
403
  :host(.item-multiple-inputs) ::slotted(ion-radio) {
@@ -1,11 +1,12 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import { Host, forceUpdate, h } from "@stencil/core";
4
+ import { Build, Host, forceUpdate, h } from "@stencil/core";
5
5
  import { inheritAttributes, raf } from "../../utils/helpers";
6
6
  import { createColorClasses, hostContext, openURL } from "../../utils/theme";
7
7
  import { chevronForward } from "ionicons/icons";
8
8
  import { getIonMode } from "../../global/ionic-global";
9
+ const INDICATOR_CONTROL_SELECTOR = 'ion-checkbox, ion-radio, ion-toggle';
9
10
  /**
10
11
  * @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
11
12
  *
@@ -23,9 +24,11 @@ export class Item {
23
24
  this.labelColorStyles = {};
24
25
  this.itemStyles = new Map();
25
26
  this.inheritedAriaAttributes = {};
27
+ this.didLoad = false;
26
28
  this.multipleInputs = false;
27
29
  this.focusable = true;
28
30
  this.isInteractive = false;
31
+ this.hasSlottedIndicatorControl = false;
29
32
  /**
30
33
  * If `true`, a button tag will be rendered and the item will be tappable.
31
34
  */
@@ -51,6 +54,7 @@ export class Item {
51
54
  this.updateInteractivityOnSlotChange = () => {
52
55
  this.setIsInteractive();
53
56
  this.setMultipleInputs();
57
+ this.setHasSlottedIndicatorControl();
54
58
  };
55
59
  }
56
60
  buttonChanged() {
@@ -92,6 +96,14 @@ export class Item {
92
96
  }
93
97
  connectedCallback() {
94
98
  this.hasStartEl();
99
+ /**
100
+ * `componentDidLoad` doesn't run again when the item is moved, so re-arm the
101
+ * observer and re-read the light DOM, which may have changed while detached.
102
+ */
103
+ if (this.didLoad) {
104
+ this.watchForIndicatorControls();
105
+ this.updateInteractivityOnSlotChange();
106
+ }
95
107
  }
96
108
  componentWillLoad() {
97
109
  this.inheritedAriaAttributes = inheritAttributes(this.el, ['aria-label']);
@@ -100,8 +112,17 @@ export class Item {
100
112
  raf(() => {
101
113
  this.setMultipleInputs();
102
114
  this.setIsInteractive();
115
+ this.setHasSlottedIndicatorControl();
103
116
  this.focusable = this.isFocusable();
104
117
  });
118
+ this.watchForIndicatorControls();
119
+ this.didLoad = true;
120
+ }
121
+ disconnectedCallback() {
122
+ if (this.indicatorControlObserver) {
123
+ this.indicatorControlObserver.disconnect();
124
+ this.indicatorControlObserver = undefined;
125
+ }
105
126
  }
106
127
  totalNestedInputs() {
107
128
  // The following elements have a clickable cover that is relative to the entire item
@@ -135,6 +156,49 @@ export class Item {
135
156
  const { covers, inputs, clickables } = this.totalNestedInputs();
136
157
  this.isInteractive = covers.length > 0 || inputs.length > 0 || clickables.length > 0;
137
158
  }
159
+ /**
160
+ * `slotchange` only fires for nodes assigned directly to a slot, so a control
161
+ * inside a slotted wrapper (`<div><ion-toggle>`) never reaches
162
+ * `updateInteractivityOnSlotChange`. The light DOM is observed instead.
163
+ *
164
+ * The callback runs the whole handler because a control below a wrapper can also
165
+ * make the item multi-input, which is what decides whether the controls draw
166
+ * their own indicator at all.
167
+ *
168
+ * `:host(:has())` would avoid the observer, but the `:has()` fallback in
169
+ * `core.scss` is still open as FW-6106 and it's unreliable for slotted content
170
+ * in Android WebView. Worth revisiting when FW-6106 closes.
171
+ */
172
+ watchForIndicatorControls() {
173
+ if (!Build.isBrowser || typeof MutationObserver === 'undefined') {
174
+ return;
175
+ }
176
+ // `Node.moveBefore` relocates the item without either callback firing, so
177
+ // never leave a previous observer behind
178
+ this.indicatorControlObserver?.disconnect();
179
+ this.indicatorControlObserver = new MutationObserver((records) => {
180
+ // The subtree observer also fires for text and hidden input churn, so only
181
+ // re-read the DOM when a control was added or removed
182
+ if (records.some(touchesIndicatorControl)) {
183
+ this.updateInteractivityOnSlotChange();
184
+ }
185
+ });
186
+ this.indicatorControlObserver.observe(this.el, { childList: true, subtree: true });
187
+ }
188
+ // These controls paint a focus indicator that overhangs their own bounds, and
189
+ // only the default slot is clipped, so only a control there needs extra room.
190
+ setHasSlottedIndicatorControl() {
191
+ const controls = this.el.querySelectorAll(INDICATOR_CONTROL_SELECTOR);
192
+ this.hasSlottedIndicatorControl = Array.from(controls).some((control) => {
193
+ // The control isn't always a direct child, so walk up to the element the item
194
+ // slots, which is the one carrying the slot name.
195
+ let slotted = control;
196
+ while (slotted !== null && slotted.parentElement !== this.el) {
197
+ slotted = slotted.parentElement;
198
+ }
199
+ return slotted !== null && !slotted.getAttribute('slot');
200
+ });
201
+ }
138
202
  // If the item contains an input including a checkbox, datetime, select, or radio
139
203
  // then the item will have a clickable input cover that covers the item
140
204
  // that should get the hover, focused and activated states UNLESS it has multiple
@@ -236,19 +300,30 @@ export class Item {
236
300
  * However, other form controls such as checkboxes and radios do.
237
301
  */
238
302
  const firstInteractiveNeedsPointerCursor = firstInteractive !== undefined && !['ION-INPUT', 'ION-TEXTAREA'].includes(firstInteractive.tagName);
239
- return (h(Host, { key: '3977491399280a2aa3f796f0549235f3dc8b5681', "aria-disabled": ariaDisabled, class: Object.assign(Object.assign(Object.assign({}, childStyles), labelColorStyles), createColorClasses(this.color, {
240
- item: true,
241
- [mode]: true,
242
- 'item-lines-default': lines === undefined,
243
- [`item-lines-${lines}`]: lines !== undefined,
244
- 'item-control-needs-pointer-cursor': firstInteractiveNeedsPointerCursor,
245
- 'item-disabled': disabled,
246
- 'in-list': inList,
247
- 'item-multiple-inputs': this.multipleInputs,
248
- 'ion-activatable': canActivate,
249
- 'ion-focusable': this.focusable,
250
- 'item-rtl': document.dir === 'rtl',
251
- })), role: inList ? 'listitem' : null }, h(TagType, Object.assign({ key: '8aff72457004553e83d74a4dda2f9a6b8cf523d7' }, attrs, inheritedAriaAttributes, { class: "item-native", part: "native", disabled: disabled }, clickFn), h("slot", { key: 'aba9a0f2ad101be6598f364c83236ca3de437a04', name: "start", onSlotchange: this.updateInteractivityOnSlotChange }), h("div", { key: '5e7851e49959e4ed114fcd51cb167db9bd8c0f00', class: "item-inner", part: "inner" }, h("div", { key: 'eee6511845d8459450ca856819839d83cd507c0c', class: "input-wrapper", part: "container" }, h("slot", { key: '76e13f86cd144951b1999eb333a2027b42cdf6e2', onSlotchange: this.updateInteractivityOnSlotChange })), h("slot", { key: 'b264f7b4c367e7700a9a05343177abf7b17045d8', name: "end", onSlotchange: this.updateInteractivityOnSlotChange }), showDetail && (h("ion-icon", { key: '66b930bdfebb55ea0b2e784a1c902eb6c64b2370', icon: detailIcon, lazy: false, class: "item-detail-icon", part: "detail-icon", "aria-hidden": "true", "flip-rtl": detailIcon === chevronForward }))), canActivate && mode === 'md' && h("ion-ripple-effect", { key: '06ab8e87917b545f3c221602b9b6d8004a1895ad' }))));
303
+ /**
304
+ * A control in a single-input item defers its indicator to the item, so there's
305
+ * nothing to clip and nothing to make room for. It draws its own indicator in a
306
+ * multi-input item, and in a clickable item, which is a second tab stop.
307
+ */
308
+ const slottedIndicatorNeedsRoom = this.hasSlottedIndicatorControl && (multipleInputs || this.isClickable());
309
+ return (h(Host, { key: '0dc161ad7ac2fdedc5005015fceb34ed176010a6', "aria-disabled": ariaDisabled, class: {
310
+ ...childStyles,
311
+ ...labelColorStyles,
312
+ ...createColorClasses(this.color, {
313
+ item: true,
314
+ [mode]: true,
315
+ 'item-lines-default': lines === undefined,
316
+ [`item-lines-${lines}`]: lines !== undefined,
317
+ 'item-control-needs-pointer-cursor': firstInteractiveNeedsPointerCursor,
318
+ 'item-disabled': disabled,
319
+ 'in-list': inList,
320
+ 'item-multiple-inputs': this.multipleInputs,
321
+ 'item-focus-indicator-room': slottedIndicatorNeedsRoom,
322
+ 'ion-activatable': canActivate,
323
+ 'ion-focusable': this.focusable,
324
+ 'item-rtl': document.dir === 'rtl',
325
+ }),
326
+ }, role: inList ? 'listitem' : null }, h(TagType, { key: 'd42583cf62133b2553de2e7a5357168640bb1834', ...attrs, ...inheritedAriaAttributes, class: "item-native", part: "native", disabled: disabled, ...clickFn }, h("slot", { key: 'bd805ce49946cd52280d1c4b370104ee2472f1e2', name: "start", onSlotchange: this.updateInteractivityOnSlotChange }), h("div", { key: '0de589f9c5c13c31b6c8838566a7ad6f78f81028', class: "item-inner", part: "inner" }, h("div", { key: 'faaf6a39e072fb352753c645736ab1f47c2d7d25', class: "input-wrapper", part: "container" }, h("slot", { key: '70a34c31de29a0786a14b4a7d3156ba8d4d92eb4', onSlotchange: this.updateInteractivityOnSlotChange })), h("slot", { key: 'c8e764b62c5c30f67750896741ca266b741d5999', name: "end", onSlotchange: this.updateInteractivityOnSlotChange }), showDetail && (h("ion-icon", { key: 'af006856d8c4ed69174534261344215957cc751a', icon: detailIcon, lazy: false, class: "item-detail-icon", part: "detail-icon", "aria-hidden": "true", "flip-rtl": detailIcon === chevronForward }))), canActivate && mode === 'md' && h("ion-ripple-effect", { key: 'e5e151bafedd38feb8f71a387a0059aa1e9e90de' }))));
252
327
  }
253
328
  static get is() { return "ion-item"; }
254
329
  static get encapsulation() { return "shadow"; }
@@ -543,7 +618,8 @@ export class Item {
543
618
  return {
544
619
  "multipleInputs": {},
545
620
  "focusable": {},
546
- "isInteractive": {}
621
+ "isInteractive": {},
622
+ "hasSlottedIndicatorControl": {}
547
623
  };
548
624
  }
549
625
  static get elementRef() { return "el"; }
@@ -569,3 +645,11 @@ export class Item {
569
645
  }];
570
646
  }
571
647
  }
648
+ const isIndicatorControl = (node) => {
649
+ if (node.nodeType !== Node.ELEMENT_NODE) {
650
+ return false;
651
+ }
652
+ const el = node;
653
+ return el.matches(INDICATOR_CONTROL_SELECTOR) || el.querySelector(INDICATOR_CONTROL_SELECTOR) !== null;
654
+ };
655
+ const touchesIndicatorControl = (record) => Array.from(record.addedNodes).some(isIndicatorControl) || Array.from(record.removedNodes).some(isIndicatorControl);
@@ -387,6 +387,17 @@ a {
387
387
  flex-direction: column;
388
388
  }
389
389
 
390
+ :host(.item-focus-indicator-room) .input-wrapper {
391
+ -webkit-margin-start: -12px;
392
+ margin-inline-start: -12px;
393
+ -webkit-margin-end: -12px;
394
+ margin-inline-end: -12px;
395
+ -webkit-padding-start: 12px;
396
+ padding-inline-start: 12px;
397
+ -webkit-padding-end: 12px;
398
+ padding-inline-end: 12px;
399
+ }
400
+
390
401
  :host(.item-multiple-inputs) ::slotted(ion-checkbox),
391
402
  :host(.item-multiple-inputs) ::slotted(ion-datetime),
392
403
  :host(.item-multiple-inputs) ::slotted(ion-radio) {
@@ -27,11 +27,11 @@ export class ItemDivider {
27
27
  }
28
28
  render() {
29
29
  const mode = getIonMode(this);
30
- return (h(Host, { key: 'ff2ae8eee7704ca28e3f25a39fc3d910f57b1879', class: createColorClasses(this.color, {
30
+ return (h(Host, { key: 'b191727cc26c600287fd856e49216bf1ae1d5aad', class: createColorClasses(this.color, {
31
31
  [mode]: true,
32
32
  'item-divider-sticky': this.sticky,
33
33
  item: true,
34
- }) }, h("slot", { key: '9747421ee3c6b8012ad5a71091aa9775d002885e', name: "start" }), h("div", { key: '0ad8e1355c70efcc095b954c29af497a18b35b37', class: "item-divider-inner", part: "inner" }, h("div", { key: '7562f4f033e786b620ef2bd62d7c35f1013b4905', class: "item-divider-wrapper", part: "container" }, h("slot", { key: '013a0c58ca93afa395a52df30020d1b9e86ffc3a' })), h("slot", { key: 'a08f7b7a133110cbb51b1f4843133bacc306d3a1', name: "end" }))));
34
+ }) }, h("slot", { key: 'a8e2eb48ca858b64da8ad018fa8d1667030b7143', name: "start" }), h("div", { key: '3219e0b76ac4a96db50a67f1f2794a235111c613', class: "item-divider-inner", part: "inner" }, h("div", { key: '31a64775153cd8704458e0e2a4a512096585deb4', class: "item-divider-wrapper", part: "container" }, h("slot", { key: 'd46dfb578028790eb6ccaac5e6009a5d96aa831a' })), h("slot", { key: 'a5fc7ac27e418ea82d9dcc913a8dae7e35493760', name: "end" }))));
35
35
  }
36
36
  static get is() { return "ion-item-divider"; }
37
37
  static get encapsulation() { return "shadow"; }
@@ -6,7 +6,7 @@ import { getIonMode } from "../../global/ionic-global";
6
6
  export class ItemGroup {
7
7
  render() {
8
8
  const mode = getIonMode(this);
9
- return (h(Host, { key: 'f1743af1d075682f63fae3802c5c5bf050507563', role: "group", class: {
9
+ return (h(Host, { key: 'd24ee9c70a99d11b7d95dfb4a8066670bdfcbc1d', role: "group", class: {
10
10
  [mode]: true,
11
11
  // Used internally for styling
12
12
  [`item-group-${mode}`]: true,