@ionic/core 8.8.18-dev.11786108988.1fd94742 → 8.8.18-dev.11786355346.19605941

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 (1221) 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-divider.d.ts +11 -0
  27. package/components/ion-divider.js +4 -0
  28. package/components/ion-fab-button.js +1 -1
  29. package/components/ion-fab-list.js +1 -1
  30. package/components/ion-fab.js +1 -1
  31. package/components/ion-footer.js +1 -1
  32. package/components/ion-gallery-item.d.ts +11 -0
  33. package/components/ion-gallery-item.js +4 -0
  34. package/components/ion-gallery.d.ts +11 -0
  35. package/components/ion-gallery.js +4 -0
  36. package/components/ion-grid.js +1 -1
  37. package/components/ion-header.js +1 -1
  38. package/components/ion-icon.js +1 -1
  39. package/components/ion-img.js +1 -1
  40. package/components/ion-infinite-scroll-content.js +1 -1
  41. package/components/ion-infinite-scroll.js +1 -1
  42. package/components/ion-input-otp.js +1 -1
  43. package/components/ion-input-password-toggle.js +1 -1
  44. package/components/ion-input.js +1 -1
  45. package/components/ion-item-divider.js +1 -1
  46. package/components/ion-item-group.js +1 -1
  47. package/components/ion-item-option.js +1 -1
  48. package/components/ion-item-options.js +1 -1
  49. package/components/ion-item-sliding.js +1 -1
  50. package/components/ion-item.js +1 -1
  51. package/components/ion-label.js +1 -1
  52. package/components/ion-list-header.js +1 -1
  53. package/components/ion-list.js +1 -1
  54. package/components/ion-loading.js +1 -1
  55. package/components/ion-menu-button.js +1 -1
  56. package/components/ion-menu-toggle.js +1 -1
  57. package/components/ion-menu.js +1 -1
  58. package/components/ion-modal.js +1 -1
  59. package/components/ion-nav-link.js +1 -1
  60. package/components/ion-nav.js +1 -1
  61. package/components/ion-note.js +1 -1
  62. package/components/ion-picker-column-option.js +1 -1
  63. package/components/ion-picker-column.js +1 -1
  64. package/components/ion-picker-legacy-column.d.ts +11 -0
  65. package/components/ion-picker-legacy-column.js +4 -0
  66. package/components/ion-picker-legacy.d.ts +11 -0
  67. package/components/ion-picker-legacy.js +4 -0
  68. package/components/ion-picker.js +1 -1
  69. package/components/ion-popover.js +1 -1
  70. package/components/ion-progress-bar.js +1 -1
  71. package/components/ion-radio-group.js +1 -1
  72. package/components/ion-radio.js +1 -1
  73. package/components/ion-range.js +1 -1
  74. package/components/ion-refresher-content.js +1 -1
  75. package/components/ion-refresher.js +1 -1
  76. package/components/ion-reorder-group.js +1 -1
  77. package/components/ion-reorder.js +1 -1
  78. package/components/ion-ripple-effect.js +1 -1
  79. package/components/ion-route-redirect.js +1 -1
  80. package/components/ion-route.js +1 -1
  81. package/components/ion-router-link.js +1 -1
  82. package/components/ion-router-outlet.js +1 -1
  83. package/components/ion-router.js +1 -1
  84. package/components/ion-row.js +1 -1
  85. package/components/ion-searchbar.js +1 -1
  86. package/components/ion-segment-button.js +1 -1
  87. package/components/ion-segment-content.js +1 -1
  88. package/components/ion-segment-view.js +1 -1
  89. package/components/ion-segment.js +1 -1
  90. package/components/ion-select-modal.js +1 -1
  91. package/components/ion-select-option.js +1 -1
  92. package/components/ion-select-popover.js +1 -1
  93. package/components/ion-select.js +1 -1
  94. package/components/ion-skeleton-text.js +1 -1
  95. package/components/ion-spinner.js +1 -1
  96. package/components/ion-split-pane.js +1 -1
  97. package/components/ion-tab-bar.js +1 -1
  98. package/components/ion-tab-button.js +1 -1
  99. package/components/ion-tab.js +1 -1
  100. package/components/ion-tabs.js +1 -1
  101. package/components/ion-text.js +1 -1
  102. package/components/ion-textarea.js +1 -1
  103. package/components/ion-thumbnail.js +1 -1
  104. package/components/ion-title.js +1 -1
  105. package/components/ion-toast.js +1 -1
  106. package/components/ion-toggle.js +1 -1
  107. package/components/ion-toolbar.js +1 -1
  108. package/components/p-3VXQGlP7.js +4 -0
  109. package/{dist/ionic/p-aL0G45tD.js → components/p-B2SvA6NE.js} +1 -1
  110. package/components/p-B5krYTuW.js +4 -0
  111. package/components/p-B6a9IJZ0.js +4 -0
  112. package/components/p-BArGQkuV.js +4 -0
  113. package/components/p-BDqjX7Z_.js +4 -0
  114. package/components/p-BE21dB_a.js +4 -0
  115. package/components/p-BG-Q139o.js +4 -0
  116. package/components/p-BPxMDyfV.js +4 -0
  117. package/components/p-BTEOs1at.js +4 -0
  118. package/components/p-BWH3I3Dl.js +4 -0
  119. package/components/p-BYSs-jZz.js +4 -0
  120. package/components/{p-Dcu-SAJG.js → p-BZwQa9ey.js} +1 -1
  121. package/components/{p-ltNYIRmI.js → p-B_jBop0E.js} +1 -1
  122. package/components/p-BbVhJs-a.js +4 -0
  123. package/components/p-Bc6odfwr.js +4 -0
  124. package/components/p-BjW8SOqw.js +4 -0
  125. package/components/p-BkWXBpOv.js +4 -0
  126. package/components/p-Bt9GDUv-.js +4 -0
  127. package/components/p-BvNVjXg4.js +4 -0
  128. package/components/p-BwKpO3Is.js +4 -0
  129. package/components/p-BwlU9cX_.js +4 -0
  130. package/components/p-Bz4JFPmj.js +4 -0
  131. package/components/p-C53feagD.js +4 -0
  132. package/components/p-CBxy8OYq.js +4 -0
  133. package/components/p-CGdeq57o.js +4 -0
  134. package/components/p-CHPdgLHZ.js +4 -0
  135. package/components/p-CMZlqiT7.js +4 -0
  136. package/components/p-CMzkbes2.js +4 -0
  137. package/components/p-CODBQrPj.js +4 -0
  138. package/components/p-COPA4jD9.js +4 -0
  139. package/components/p-CPnW-OVE.js +4 -0
  140. package/components/p-CRmBpp1v.js +4 -0
  141. package/components/p-CT3P-wjL.js +4 -0
  142. package/components/p-CVYFPBs-.js +4 -0
  143. package/components/{p-DsNz6_gM.js → p-CVqhQif1.js} +1 -1
  144. package/components/p-Cc3oC60a.js +4 -0
  145. package/components/p-CjY4Hs1X.js +4 -0
  146. package/components/p-Cl0B-RWe.js +4 -0
  147. package/components/p-CrYjk-l3.js +4 -0
  148. package/components/p-CsUcWJuB.js +4 -0
  149. package/components/p-D0Iqw6OZ.js +4 -0
  150. package/components/p-D0fnq0lf.js +4 -0
  151. package/components/p-D1kNlmYt.js +4 -0
  152. package/components/p-D1t981Ih.js +4 -0
  153. package/components/p-D9C5yWpF.js +4 -0
  154. package/components/p-DDNG-IsR.js +4 -0
  155. package/components/p-DJSp7Si8.js +4 -0
  156. package/components/p-DL5wyRub.js +4 -0
  157. package/components/{p-C6JOi8wS.js → p-DWoO0801.js} +1 -1
  158. package/components/p-DXKZXLjV.js +4 -0
  159. package/components/p-DaJxRxSQ.js +4 -0
  160. package/components/p-Dhi5xtNS.js +4 -0
  161. package/components/p-Do8qRv6r.js +4 -0
  162. package/components/p-Dt--PjSF.js +4 -0
  163. package/components/p-DylrHLJF.js +4 -0
  164. package/components/p-FCT_QxQG.js +4 -0
  165. package/components/p-OCde3AhO.js +4 -0
  166. package/components/p-OPFCgx0m.js +4 -0
  167. package/components/p-PCVpe9Tq.js +4 -0
  168. package/components/p-Rkm2AOZ2.js +4 -0
  169. package/components/p-WSZErkoI.js +4 -0
  170. package/components/p-bHSMZulH.js +4 -0
  171. package/components/p-fIOYmaqA.js +4 -0
  172. package/components/p-hNcst9K9.js +4 -0
  173. package/components/p-hW_3y-wm.js +4 -0
  174. package/components/p-nLMDgmzd.js +4 -0
  175. package/components/p-oI96rnOD.js +4 -0
  176. package/{dist/ionic/p-CUSwMljM.js → components/p-r_CFQBc1.js} +1 -1
  177. package/components/p-vXpMhGrs.js +4 -0
  178. package/components/p-zBZRdRDd.js +4 -0
  179. package/css/core.css +1 -1
  180. package/css/core.css.map +1 -1
  181. package/css/display.css +1 -1
  182. package/css/display.css.map +1 -1
  183. package/css/flex-utils.css +1 -1
  184. package/css/flex-utils.css.map +1 -1
  185. package/css/float-elements.css.map +1 -1
  186. package/css/global.bundle.css.map +1 -1
  187. package/css/ionic/bundle.ionic.css +1 -0
  188. package/css/ionic/bundle.ionic.css.map +1 -0
  189. package/css/ionic/core.ionic.css +1 -0
  190. package/css/ionic/core.ionic.css.map +1 -0
  191. package/css/ionic/global.bundle.ionic.css +1 -0
  192. package/css/ionic/global.bundle.ionic.css.map +1 -0
  193. package/css/ionic/ionic-swiper.ionic.css +1 -0
  194. package/css/ionic/ionic-swiper.ionic.css.map +1 -0
  195. package/css/ionic/link.ionic.css +1 -0
  196. package/css/ionic/link.ionic.css.map +1 -0
  197. package/css/ionic/structure.ionic.css +1 -0
  198. package/css/ionic/structure.ionic.css.map +1 -0
  199. package/css/ionic/typography.ionic.css +1 -0
  200. package/css/ionic/typography.ionic.css.map +1 -0
  201. package/css/ionic/utils.bundle.ionic.css +1 -0
  202. package/css/ionic/utils.bundle.ionic.css.map +1 -0
  203. package/css/ionic-swiper.css +1 -1
  204. package/css/ionic-swiper.css.map +1 -1
  205. package/css/ionic.bundle.css +1 -1
  206. package/css/ionic.bundle.css.map +1 -1
  207. package/css/normalize.css.map +1 -1
  208. package/css/padding.css.map +1 -1
  209. package/css/palettes/dark.always.css.map +1 -1
  210. package/css/palettes/dark.class.css.map +1 -1
  211. package/css/palettes/dark.system.css.map +1 -1
  212. package/css/palettes/high-contrast-dark.always.css.map +1 -1
  213. package/css/palettes/high-contrast-dark.class.css.map +1 -1
  214. package/css/palettes/high-contrast-dark.system.css.map +1 -1
  215. package/css/palettes/high-contrast.always.css.map +1 -1
  216. package/css/palettes/high-contrast.class.css.map +1 -1
  217. package/css/palettes/high-contrast.system.css.map +1 -1
  218. package/css/structure.css.map +1 -1
  219. package/css/text-alignment.css.map +1 -1
  220. package/css/text-transformation.css.map +1 -1
  221. package/css/typography.css.map +1 -1
  222. package/css/utils.bundle.css +1 -1
  223. package/css/utils.bundle.css.map +1 -1
  224. package/dist/cjs/{animation-D5WDBRvT.js → animation-B3xfVcDO.js} +6 -6
  225. package/dist/cjs/{app-globals-C2s3Cbal.js → app-globals-3ZoCVkn-.js} +1 -1
  226. package/dist/cjs/{button-active-CXI2TseG.js → button-active-3tZKuPbT.js} +3 -3
  227. package/dist/cjs/{capacitor-DmA66EwP.js → capacitor-CQSg1uCo.js} +3 -3
  228. package/dist/cjs/caret-down-vtVgfXIs.js +8 -0
  229. package/dist/cjs/caret-left-CxZXLRv5.js +8 -0
  230. package/dist/cjs/caret-right-CRCgv98E.js +8 -0
  231. package/dist/cjs/{config-CjUbvdPW.js → config-DWdFbSNK.js} +4 -5
  232. package/dist/cjs/{dir-Brx7VkvP.js → dir-Cn0z1rJH.js} +1 -1
  233. package/dist/{esm/focus-visible-BmVRXR1y.js → cjs/focus-visible-BIj-I3-C.js} +27 -1
  234. package/dist/cjs/{format-ZfKtcdit.js → format-BCIkDef_.js} +30 -40
  235. package/dist/cjs/{framework-delegate-Bdvk3JQO.js → framework-delegate-DC5nq_NN.js} +10 -6
  236. package/dist/cjs/{gesture-controller-BDUH7687.js → gesture-controller-dtqlP_q4.js} +8 -15
  237. package/dist/cjs/{haptic-Ch-X4gRx.js → haptic-eix26ESE.js} +4 -3
  238. package/dist/cjs/{helpers-DURh1XdY.js → helpers-DiOgV5hw.js} +73 -6
  239. package/dist/cjs/{index-DsoHs7Ly.js → index-BaJ7_YbC.js} +5 -5
  240. package/dist/cjs/{index-DhSx3VvD.js → index-Bj07IRTB.js} +3 -3
  241. package/dist/cjs/{index-BnhnwL1o.js → index-BxEZd5IE.js} +2 -2
  242. package/dist/cjs/{index-P1nQxrpZ.js → index-CAvQ7Tka.js} +4 -10
  243. package/dist/cjs/{index-wOmugbdg.js → index-CxDnX7hd.js} +2 -0
  244. package/dist/cjs/{index-B7sCu6vN.js → index-DYRcC3bw.js} +16 -15
  245. package/dist/cjs/{index-CAThePqm.js → index-GZU9YrFc.js} +47 -8
  246. package/dist/cjs/{index-Btdix80K.js → index-bX3nz2vw.js} +9 -8
  247. package/dist/cjs/index.cjs.js +17 -17
  248. package/dist/cjs/{input-shims-CPbWb84M.js → input-shims-BSEBw22J.js} +22 -19
  249. package/dist/cjs/{input.utils-CkASW3mE.js → input.utils-D68wgI2Y.js} +7 -6
  250. package/dist/cjs/ion-accordion_2.cjs.entry.js +382 -378
  251. package/dist/cjs/ion-action-sheet.cjs.entry.js +86 -178
  252. package/dist/cjs/ion-alert.cjs.entry.js +125 -250
  253. package/dist/cjs/ion-app_8.cjs.entry.js +608 -460
  254. package/dist/cjs/ion-avatar_3.cjs.entry.js +125 -19
  255. package/dist/cjs/ion-back-button.cjs.entry.js +49 -64
  256. package/dist/cjs/ion-backdrop.cjs.entry.js +22 -23
  257. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +169 -211
  258. package/dist/cjs/ion-button_2.cjs.entry.js +117 -152
  259. package/dist/cjs/ion-card_5.cjs.entry.js +79 -109
  260. package/dist/cjs/ion-checkbox.cjs.entry.js +129 -163
  261. package/dist/cjs/ion-chip.cjs.entry.js +56 -21
  262. package/dist/cjs/ion-col_3.cjs.entry.js +61 -186
  263. package/dist/cjs/ion-datetime-button.cjs.entry.js +247 -255
  264. package/dist/cjs/ion-datetime_3.cjs.entry.js +3239 -0
  265. package/dist/cjs/ion-divider.cjs.entry.js +51 -0
  266. package/dist/cjs/ion-fab_3.cjs.entry.js +112 -154
  267. package/dist/cjs/ion-gallery-item.cjs.entry.js +59 -0
  268. package/dist/cjs/ion-gallery.cjs.entry.js +607 -0
  269. package/dist/cjs/ion-img.cjs.entry.js +16 -34
  270. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +156 -108
  271. package/dist/cjs/ion-input-otp.cjs.entry.js +437 -435
  272. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +64 -40
  273. package/dist/cjs/ion-input.cjs.entry.js +290 -325
  274. package/dist/cjs/ion-item-option_3.cjs.entry.js +511 -136
  275. package/dist/cjs/ion-item_8.cjs.entry.js +189 -217
  276. package/dist/cjs/ion-loading.cjs.entry.js +68 -151
  277. package/dist/cjs/ion-menu_3.cjs.entry.js +137 -181
  278. package/dist/cjs/ion-modal.cjs.entry.js +491 -534
  279. package/dist/cjs/ion-nav_2.cjs.entry.js +163 -103
  280. package/dist/cjs/ion-picker-column-option.cjs.entry.js +39 -39
  281. package/dist/cjs/ion-picker-column.cjs.entry.js +409 -421
  282. package/dist/cjs/ion-picker.cjs.entry.js +400 -405
  283. package/dist/cjs/ion-popover.cjs.entry.js +211 -323
  284. package/dist/cjs/ion-progress-bar.cjs.entry.js +47 -35
  285. package/dist/cjs/ion-radio_2.cjs.entry.js +161 -216
  286. package/dist/cjs/ion-range.cjs.entry.js +249 -307
  287. package/dist/cjs/ion-refresher_2.cjs.entry.js +121 -174
  288. package/dist/cjs/ion-reorder_2.cjs.entry.js +53 -59
  289. package/dist/cjs/ion-ripple-effect.cjs.entry.js +26 -18
  290. package/dist/cjs/ion-route_4.cjs.entry.js +75 -178
  291. package/dist/cjs/ion-searchbar.cjs.entry.js +345 -303
  292. package/dist/cjs/ion-segment-content.cjs.entry.js +2 -2
  293. package/dist/cjs/ion-segment-view.cjs.entry.js +27 -28
  294. package/dist/cjs/ion-segment_2.cjs.entry.js +141 -177
  295. package/dist/cjs/ion-select-modal.cjs.entry.js +69 -49
  296. package/dist/cjs/ion-select_3.cjs.entry.js +385 -481
  297. package/dist/cjs/ion-spinner.cjs.entry.js +36 -28
  298. package/dist/cjs/ion-split-pane.cjs.entry.js +25 -34
  299. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +179 -116
  300. package/dist/cjs/ion-tab_2.cjs.entry.js +29 -54
  301. package/dist/cjs/ion-text.cjs.entry.js +7 -13
  302. package/dist/cjs/ion-textarea.cjs.entry.js +269 -274
  303. package/dist/cjs/ion-toast.cjs.entry.js +169 -264
  304. package/dist/cjs/ion-toggle.cjs.entry.js +187 -184
  305. package/dist/cjs/ionic-global-QoUqobrQ.js +519 -0
  306. package/dist/cjs/ionic.cjs.js +4 -4
  307. package/dist/cjs/{ios.transition-CeaFa0y2.js → ios.transition-DpFQfFfT.js} +20 -14
  308. package/dist/cjs/{item-multiple-inputs-HQO5Iy9I.js → item-multiple-inputs-BG9f5_eV.js} +1 -1
  309. package/dist/cjs/{keyboard-cHxZlTyz.js → keyboard-Bn0Ppim6.js} +3 -3
  310. package/dist/cjs/{keyboard-Cix5TVkD.js → keyboard-faZBQysj.js} +5 -4
  311. package/dist/cjs/list-a-7GSA6K.js +8 -0
  312. package/dist/cjs/loader.cjs.js +4 -4
  313. package/dist/cjs/{md.transition-D4Q5jny7.js → md.transition-ChJcoZUH.js} +10 -8
  314. package/dist/cjs/{notch-controller-fMfidI-7.js → notch-controller-BO0UGB4F.js} +4 -4
  315. package/dist/cjs/{overlay-control-label-D2sdL2O8.js → overlay-control-label-DnRLQR1t.js} +13 -11
  316. package/dist/cjs/{overlays-C2qrqpHm.js → overlays-CFGbPUmE.js} +336 -60
  317. package/dist/cjs/scroll-hide-controller-G9HOmmhN.js +345 -0
  318. package/dist/cjs/{select-option-render-Dh16lTnA.js → select-option-render-DqBHEjDn.js} +4 -3
  319. package/dist/cjs/{status-tap-CgjQ-6jq.js → status-tap-x2qDo5QR.js} +4 -3
  320. package/dist/cjs/{swipe-back-CmfRYdWQ.js → swipe-back-CvZt_4YX.js} +6 -5
  321. package/dist/cjs/{theme-Bw0rpaNN.js → theme-IlOsGAz7.js} +26 -7
  322. package/dist/cjs/validity-QmuwEptc.js +51 -0
  323. package/dist/cjs/x-BTF99yFH.js +8 -0
  324. package/dist/collection/collection-manifest.json +13 -1
  325. package/dist/collection/components/accordion/accordion.ionic.css +201 -0
  326. package/dist/collection/components/accordion/accordion.ios.css +73 -58
  327. package/dist/collection/components/accordion/accordion.js +338 -327
  328. package/dist/collection/components/accordion/accordion.md.css +67 -59
  329. package/dist/collection/components/accordion-group/accordion-group.ionic.css +93 -0
  330. package/dist/collection/components/accordion-group/accordion-group.ios.css +16 -4
  331. package/dist/collection/components/accordion-group/accordion-group.js +69 -56
  332. package/dist/collection/components/accordion-group/accordion-group.md.css +22 -4
  333. package/dist/collection/components/action-sheet/action-sheet.ionic.css +494 -0
  334. package/dist/collection/components/action-sheet/action-sheet.ios.css +184 -54
  335. package/dist/collection/components/action-sheet/action-sheet.js +76 -166
  336. package/dist/collection/components/action-sheet/action-sheet.md.css +179 -55
  337. package/dist/collection/components/action-sheet/test/basic/fixture.js +0 -3
  338. package/dist/collection/components/alert/alert.ionic.css +787 -0
  339. package/dist/collection/components/alert/alert.ios.css +247 -54
  340. package/dist/collection/components/alert/alert.js +113 -236
  341. package/dist/collection/components/alert/alert.md.css +243 -56
  342. package/dist/collection/components/app/app.js +15 -86
  343. package/dist/collection/components/avatar/avatar.ionic.css +385 -0
  344. package/dist/collection/components/avatar/avatar.ios.css +7 -33
  345. package/dist/collection/components/avatar/avatar.js +120 -4
  346. package/dist/collection/components/avatar/avatar.md.css +51 -0
  347. package/dist/collection/components/back-button/back-button.ios.css +60 -48
  348. package/dist/collection/components/back-button/back-button.js +46 -61
  349. package/dist/collection/components/back-button/back-button.md.css +60 -48
  350. package/dist/collection/components/backdrop/backdrop.ionic.css +109 -0
  351. package/dist/collection/components/backdrop/backdrop.ios.css +56 -19
  352. package/dist/collection/components/backdrop/backdrop.js +26 -22
  353. package/dist/collection/components/backdrop/backdrop.md.css +56 -19
  354. package/dist/collection/components/badge/badge.ionic.css +272 -0
  355. package/dist/collection/components/badge/badge.ios.css +137 -12
  356. package/dist/collection/components/badge/badge.js +145 -15
  357. package/dist/collection/components/badge/badge.md.css +122 -12
  358. package/dist/collection/components/breadcrumb/breadcrumb.ios.css +20 -8
  359. package/dist/collection/components/breadcrumb/breadcrumb.js +72 -101
  360. package/dist/collection/components/breadcrumb/breadcrumb.md.css +20 -8
  361. package/dist/collection/components/breadcrumbs/breadcrumbs.ios.css +6 -0
  362. package/dist/collection/components/breadcrumbs/breadcrumbs.js +99 -112
  363. package/dist/collection/components/breadcrumbs/breadcrumbs.md.css +6 -0
  364. package/dist/collection/components/button/button.ionic.css +644 -0
  365. package/dist/collection/components/button/button.ios.css +154 -46
  366. package/dist/collection/components/button/button.js +122 -157
  367. package/dist/collection/components/button/button.md.css +150 -50
  368. package/dist/collection/components/buttons/buttons.ionic.css +97 -0
  369. package/dist/collection/components/buttons/buttons.ios.css +59 -7
  370. package/dist/collection/components/buttons/buttons.js +29 -21
  371. package/dist/collection/components/buttons/buttons.md.css +55 -3
  372. package/dist/collection/components/card/card.ionic.css +144 -0
  373. package/dist/collection/components/card/card.ios.css +65 -14
  374. package/dist/collection/components/card/card.js +61 -63
  375. package/dist/collection/components/card/card.md.css +65 -14
  376. package/dist/collection/components/card-content/card-content.ionic.css +89 -0
  377. package/dist/collection/components/card-content/card-content.ios.css +20 -35
  378. package/dist/collection/components/card-content/card-content.js +12 -10
  379. package/dist/collection/components/card-content/card-content.md.css +20 -35
  380. package/dist/collection/components/card-header/card-header.ionic.css +85 -0
  381. package/dist/collection/components/card-header/card-header.ios.css +27 -15
  382. package/dist/collection/components/card-header/card-header.js +20 -21
  383. package/dist/collection/components/card-header/card-header.md.css +27 -15
  384. package/dist/collection/components/card-subtitle/card-subtitle.ionic.css +144 -0
  385. package/dist/collection/components/card-subtitle/card-subtitle.ios.css +12 -0
  386. package/dist/collection/components/card-subtitle/card-subtitle.js +11 -14
  387. package/dist/collection/components/card-subtitle/card-subtitle.md.css +12 -0
  388. package/dist/collection/components/card-title/card-title.ios.css +73 -0
  389. package/dist/collection/components/card-title/card-title.js +11 -14
  390. package/dist/collection/components/card-title/card-title.md.css +73 -0
  391. package/dist/collection/components/checkbox/checkbox.ionic.css +543 -0
  392. package/dist/collection/components/checkbox/checkbox.ios.css +242 -117
  393. package/dist/collection/components/checkbox/checkbox.js +165 -160
  394. package/dist/collection/components/checkbox/checkbox.md.css +243 -118
  395. package/dist/collection/components/chip/chip.ionic.css +217 -0
  396. package/dist/collection/components/chip/chip.ios.css +67 -14
  397. package/dist/collection/components/chip/chip.js +116 -20
  398. package/dist/collection/components/chip/chip.md.css +67 -14
  399. package/dist/collection/components/col/col.css +192 -4
  400. package/dist/collection/components/col/col.js +212 -186
  401. package/dist/collection/components/content/content.css +47 -2
  402. package/dist/collection/components/content/content.js +78 -101
  403. package/dist/collection/components/datetime/datetime.ionic.css +703 -0
  404. package/dist/collection/components/datetime/datetime.ios.css +304 -148
  405. package/dist/collection/components/datetime/datetime.js +924 -1082
  406. package/dist/collection/components/datetime/datetime.md.css +294 -138
  407. package/dist/collection/components/datetime/utils/data.js +19 -18
  408. package/dist/collection/components/datetime/utils/format.js +11 -21
  409. package/dist/collection/components/datetime/utils/manipulation.js +8 -8
  410. package/dist/collection/components/datetime/utils/parse.js +10 -10
  411. package/dist/collection/components/datetime/utils/state.js +2 -8
  412. package/dist/collection/components/datetime/utils/validate.js +5 -4
  413. package/dist/collection/components/datetime-button/datetime-button.ios.css +6 -5
  414. package/dist/collection/components/datetime-button/datetime-button.js +246 -253
  415. package/dist/collection/components/datetime-button/datetime-button.md.css +6 -5
  416. package/dist/collection/components/divider/divider.ionic.css +148 -0
  417. package/dist/collection/components/divider/divider.ios.css +87 -0
  418. package/dist/collection/components/divider/divider.js +94 -0
  419. package/dist/collection/components/divider/divider.md.css +87 -0
  420. package/dist/collection/components/fab/fab.css +25 -1
  421. package/dist/collection/components/fab/fab.js +22 -25
  422. package/dist/collection/components/fab-button/fab-button.ios.css +18 -6
  423. package/dist/collection/components/fab-button/fab-button.js +83 -117
  424. package/dist/collection/components/fab-button/fab-button.md.css +20 -8
  425. package/dist/collection/components/fab-list/fab-list.css +12 -0
  426. package/dist/collection/components/fab-list/fab-list.js +20 -15
  427. package/dist/collection/components/footer/footer-interface.js +1 -0
  428. package/dist/collection/components/footer/footer.ios.css +33 -6
  429. package/dist/collection/components/footer/footer.js +151 -65
  430. package/dist/collection/components/footer/footer.md.css +40 -0
  431. package/dist/collection/components/gallery/gallery-constants.js +12 -0
  432. package/dist/collection/components/gallery/gallery-interface.js +1 -0
  433. package/dist/collection/components/gallery/gallery.css +15 -0
  434. package/dist/collection/components/gallery/gallery.js +679 -0
  435. package/dist/collection/components/gallery/test/utils.js +100 -0
  436. package/dist/collection/components/gallery-item/gallery-item.css +49 -0
  437. package/dist/collection/components/gallery-item/gallery-item.js +99 -0
  438. package/dist/collection/components/grid/grid.css +12 -0
  439. package/dist/collection/components/grid/grid.js +15 -9
  440. package/dist/collection/components/header/header-interface.js +1 -0
  441. package/dist/collection/components/header/header.ionic.css +250 -0
  442. package/dist/collection/components/header/header.ios.css +178 -133
  443. package/dist/collection/components/header/header.js +202 -70
  444. package/dist/collection/components/header/header.md.css +199 -9
  445. package/dist/collection/components/header/header.utils.js +6 -13
  446. package/dist/collection/components/img/img.js +16 -34
  447. package/dist/collection/components/infinite-scroll/infinite-scroll.js +164 -76
  448. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.ios.css +12 -0
  449. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +19 -30
  450. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.md.css +12 -0
  451. package/dist/collection/components/input/input.ionic.css +891 -0
  452. package/dist/collection/components/input/input.ios.css +223 -135
  453. package/dist/collection/components/input/input.js +321 -333
  454. package/dist/collection/components/input/input.md.css +193 -207
  455. package/dist/collection/components/input-otp/input-otp.ionic.css +371 -0
  456. package/dist/collection/components/input-otp/input-otp.ios.css +105 -60
  457. package/dist/collection/components/input-otp/input-otp.js +437 -432
  458. package/dist/collection/components/input-otp/input-otp.md.css +105 -60
  459. package/dist/collection/components/input-password-toggle/input-password-toggle.ionic.css +78 -0
  460. package/dist/collection/components/input-password-toggle/input-password-toggle.js +60 -37
  461. package/dist/collection/components/input-password-toggle/input-password-toggle.native.css +61 -0
  462. package/dist/collection/components/item/item.ionic.css +496 -0
  463. package/dist/collection/components/item/item.ios.css +120 -80
  464. package/dist/collection/components/item/item.js +102 -113
  465. package/dist/collection/components/item/item.md.css +131 -79
  466. package/dist/collection/components/item-divider/item-divider.ios.css +18 -0
  467. package/dist/collection/components/item-divider/item-divider.js +21 -23
  468. package/dist/collection/components/item-divider/item-divider.md.css +18 -0
  469. package/dist/collection/components/item-group/item-group.ios.css +12 -0
  470. package/dist/collection/components/item-group/item-group.js +13 -7
  471. package/dist/collection/components/item-group/item-group.md.css +12 -0
  472. package/dist/collection/components/item-option/item-option.ionic.css +277 -0
  473. package/dist/collection/components/item-option/item-option.ios.css +136 -29
  474. package/dist/collection/components/item-option/item-option.js +92 -56
  475. package/dist/collection/components/item-option/item-option.md.css +136 -29
  476. package/dist/collection/components/item-options/item-options.ionic.css +221 -0
  477. package/dist/collection/components/item-options/item-options.ios.css +77 -34
  478. package/dist/collection/components/item-options/item-options.js +20 -17
  479. package/dist/collection/components/item-options/item-options.md.css +77 -34
  480. package/dist/collection/components/item-sliding/item-sliding.ionic.css +211 -0
  481. package/dist/collection/components/item-sliding/item-sliding.js +441 -61
  482. package/dist/collection/components/item-sliding/{item-sliding.css → item-sliding.native.css} +84 -9
  483. package/dist/collection/components/item-sliding/test/test.utils.js +13 -0
  484. package/dist/collection/components/label/label.ios.css +18 -0
  485. package/dist/collection/components/label/label.js +15 -32
  486. package/dist/collection/components/label/label.md.css +18 -0
  487. package/dist/collection/components/list/list.ionic.css +212 -0
  488. package/dist/collection/components/list/list.ios.css +54 -14
  489. package/dist/collection/components/list/list.js +55 -19
  490. package/dist/collection/components/list/list.md.css +56 -16
  491. package/dist/collection/components/list-header/list-header.ionic.css +190 -0
  492. package/dist/collection/components/list-header/list-header.ios.css +82 -38
  493. package/dist/collection/components/list-header/list-header.js +11 -18
  494. package/dist/collection/components/list-header/list-header.md.css +82 -38
  495. package/dist/collection/components/loading/loading.ios.css +13 -1
  496. package/dist/collection/components/loading/loading.js +62 -143
  497. package/dist/collection/components/loading/loading.md.css +13 -1
  498. package/dist/collection/components/menu/menu.ios.css +15 -3
  499. package/dist/collection/components/menu/menu.js +71 -108
  500. package/dist/collection/components/menu/menu.md.css +15 -3
  501. package/dist/collection/components/menu-button/menu-button.ionic.css +236 -0
  502. package/dist/collection/components/menu-button/menu-button.ios.css +48 -14
  503. package/dist/collection/components/menu-button/menu-button.js +45 -38
  504. package/dist/collection/components/menu-button/menu-button.md.css +49 -15
  505. package/dist/collection/components/menu-toggle/menu-toggle.js +21 -25
  506. package/dist/collection/components/modal/animations/ionic.enter.js +40 -0
  507. package/dist/collection/components/modal/animations/ionic.leave.js +28 -0
  508. package/dist/collection/components/modal/animations/ios.enter.js +1 -1
  509. package/dist/collection/components/modal/animations/md.enter.js +1 -1
  510. package/dist/collection/components/modal/animations/sheet.js +8 -2
  511. package/dist/collection/components/modal/gestures/sheet.js +83 -16
  512. package/dist/collection/components/modal/gestures/swipe-to-close.js +2 -1
  513. package/dist/collection/components/modal/modal.ionic.css +255 -0
  514. package/dist/collection/components/modal/modal.ios.css +178 -70
  515. package/dist/collection/components/modal/modal.js +268 -399
  516. package/dist/collection/components/modal/modal.md.css +178 -70
  517. package/dist/collection/components/modal/safe-area-utils.js +5 -4
  518. package/dist/collection/components/modal/test/fixtures.js +0 -3
  519. package/dist/collection/components/nav/nav.css +7 -1
  520. package/dist/collection/components/nav/nav.js +256 -72
  521. package/dist/collection/components/nav/view-controller.js +1 -7
  522. package/dist/collection/components/nav-link/nav-link.js +14 -21
  523. package/dist/collection/components/note/note.ios.css +12 -0
  524. package/dist/collection/components/note/note.js +11 -14
  525. package/dist/collection/components/note/note.md.css +12 -0
  526. package/dist/collection/components/picker/picker.ios.css +15 -3
  527. package/dist/collection/components/picker/picker.js +398 -403
  528. package/dist/collection/components/picker/picker.md.css +15 -3
  529. package/dist/collection/components/picker-column/picker-column.css +9 -5
  530. package/dist/collection/components/picker-column/picker-column.js +409 -418
  531. package/dist/collection/components/picker-column-option/picker-column-option.ios.css +6 -0
  532. package/dist/collection/components/picker-column-option/picker-column-option.js +42 -38
  533. package/dist/collection/components/picker-column-option/picker-column-option.md.css +7 -6
  534. package/dist/collection/components/picker-legacy/animations/ios.enter.js +27 -0
  535. package/dist/collection/components/picker-legacy/animations/ios.leave.js +23 -0
  536. package/dist/collection/components/picker-legacy/picker-interface.js +1 -0
  537. package/dist/collection/components/picker-legacy/picker.ios.css +312 -0
  538. package/dist/collection/components/picker-legacy/picker.js +891 -0
  539. package/dist/collection/components/picker-legacy/picker.md.css +299 -0
  540. package/dist/collection/components/picker-legacy-column/picker-column.ios.css +243 -0
  541. package/dist/collection/components/picker-legacy-column/picker-column.js +422 -0
  542. package/dist/collection/components/picker-legacy-column/picker-column.md.css +234 -0
  543. package/dist/collection/components/picker-legacy-column/test/test.utils.js +43 -0
  544. package/dist/collection/components/popover/animations/ios.enter.js +2 -1
  545. package/dist/collection/components/popover/animations/md.enter.js +2 -1
  546. package/dist/collection/components/popover/popover.ionic.css +290 -0
  547. package/dist/collection/components/popover/popover.ios.css +15 -2
  548. package/dist/collection/components/popover/popover.js +199 -313
  549. package/dist/collection/components/popover/popover.md.css +15 -2
  550. package/dist/collection/components/popover/test/fixture.js +0 -1
  551. package/dist/collection/components/popover/utils.js +6 -4
  552. package/dist/collection/components/progress-bar/progress-bar.ionic.css +287 -0
  553. package/dist/collection/components/progress-bar/progress-bar.ios.css +48 -17
  554. package/dist/collection/components/progress-bar/progress-bar.js +65 -33
  555. package/dist/collection/components/progress-bar/progress-bar.md.css +48 -17
  556. package/dist/collection/components/radio/radio.ionic.css +422 -0
  557. package/dist/collection/components/radio/radio.ios.css +207 -102
  558. package/dist/collection/components/radio/radio.js +77 -108
  559. package/dist/collection/components/radio/radio.md.css +207 -102
  560. package/dist/collection/components/radio-group/radio-group.ionic.css +119 -0
  561. package/dist/collection/components/radio-group/radio-group.ios.css +43 -19
  562. package/dist/collection/components/radio-group/radio-group.js +113 -107
  563. package/dist/collection/components/radio-group/radio-group.md.css +43 -19
  564. package/dist/collection/components/radio-group/test/fixtures.js +0 -2
  565. package/dist/collection/components/range/range.ionic.css +567 -0
  566. package/dist/collection/components/range/range.ios.css +128 -85
  567. package/dist/collection/components/range/range.js +245 -303
  568. package/dist/collection/components/range/range.md.css +128 -85
  569. package/dist/collection/components/refresher/refresher.ios.css +14 -1
  570. package/dist/collection/components/refresher/refresher.js +88 -117
  571. package/dist/collection/components/refresher/refresher.md.css +15 -2
  572. package/dist/collection/components/refresher-content/refresher-content.js +31 -47
  573. package/dist/collection/components/reorder/reorder.ios.css +6 -0
  574. package/dist/collection/components/reorder/reorder.js +33 -7
  575. package/dist/collection/components/reorder/reorder.md.css +6 -0
  576. package/dist/collection/components/reorder-group/reorder-group.css +6 -0
  577. package/dist/collection/components/reorder-group/reorder-group.js +22 -47
  578. package/dist/collection/components/ripple-effect/{ripple-effect.css → ripple-effect.common.css} +7 -1
  579. package/dist/collection/components/ripple-effect/ripple-effect.ionic.css +215 -0
  580. package/dist/collection/components/ripple-effect/ripple-effect.js +26 -17
  581. package/dist/collection/components/route/route.js +14 -39
  582. package/dist/collection/components/route-redirect/route-redirect.js +0 -31
  583. package/dist/collection/components/router/router.js +37 -37
  584. package/dist/collection/components/router/utils/dom.js +7 -25
  585. package/dist/collection/components/router/utils/matching.js +9 -7
  586. package/dist/collection/components/router/utils/parser.js +1 -1
  587. package/dist/collection/components/router/utils/path.js +1 -0
  588. package/dist/collection/components/router-link/router-link.css +8 -2
  589. package/dist/collection/components/router-link/router-link.js +19 -40
  590. package/dist/collection/components/router-outlet/router-outlet.css +7 -1
  591. package/dist/collection/components/router-outlet/router-outlet.js +25 -83
  592. package/dist/collection/components/row/row.css +16 -0
  593. package/dist/collection/components/row/row.js +9 -2
  594. package/dist/collection/components/searchbar/searchbar.ionic.css +622 -0
  595. package/dist/collection/components/searchbar/searchbar.ios.css +56 -18
  596. package/dist/collection/components/searchbar/searchbar.js +394 -316
  597. package/dist/collection/components/searchbar/searchbar.md.css +56 -18
  598. package/dist/collection/components/segment/segment.ionic.css +115 -0
  599. package/dist/collection/components/segment/segment.ios.css +45 -2
  600. package/dist/collection/components/segment/segment.js +94 -126
  601. package/dist/collection/components/segment/segment.md.css +45 -2
  602. package/dist/collection/components/segment-button/segment-button.ionic.css +352 -0
  603. package/dist/collection/components/segment-button/segment-button.ios.css +146 -105
  604. package/dist/collection/components/segment-button/segment-button.js +46 -49
  605. package/dist/collection/components/segment-button/segment-button.md.css +148 -107
  606. package/dist/collection/components/segment-content/segment-content.js +1 -1
  607. package/dist/collection/components/segment-view/segment-view.ios.css +6 -0
  608. package/dist/collection/components/segment-view/segment-view.js +27 -28
  609. package/dist/collection/components/segment-view/segment-view.md.css +6 -0
  610. package/dist/collection/components/select/select.ionic.css +809 -0
  611. package/dist/collection/components/select/select.ios.css +316 -177
  612. package/dist/collection/components/select/select.js +399 -401
  613. package/dist/collection/components/select/select.md.css +332 -179
  614. package/dist/collection/components/select-modal/select-modal.ionic.css +257 -0
  615. package/dist/collection/components/select-modal/select-modal.ios.css +293 -45
  616. package/dist/collection/components/select-modal/select-modal.js +79 -37
  617. package/dist/collection/components/select-modal/select-modal.md.css +273 -43
  618. package/dist/collection/components/select-modal/test/fixtures.js +1 -8
  619. package/dist/collection/components/select-option/select-option.js +15 -48
  620. package/dist/collection/components/select-popover/select-popover.ionic.css +255 -0
  621. package/dist/collection/components/select-popover/select-popover.ios.css +188 -124
  622. package/dist/collection/components/select-popover/select-popover.js +37 -44
  623. package/dist/collection/components/select-popover/select-popover.md.css +228 -47
  624. package/dist/collection/components/select-popover/test/fixtures.js +1 -8
  625. package/dist/collection/components/skeleton-text/skeleton-text.css +6 -0
  626. package/dist/collection/components/skeleton-text/skeleton-text.js +15 -15
  627. package/dist/collection/components/spinner/{spinner.css → spinner.ionic.css} +78 -10
  628. package/dist/collection/components/spinner/spinner.js +55 -26
  629. package/dist/collection/components/spinner/spinner.native.css +199 -0
  630. package/dist/collection/components/split-pane/split-pane.ios.css +20 -2
  631. package/dist/collection/components/split-pane/split-pane.js +28 -33
  632. package/dist/collection/components/split-pane/split-pane.md.css +20 -2
  633. package/dist/collection/components/tab/tab.js +10 -17
  634. package/dist/collection/components/tab-bar/tab-bar.ionic.css +249 -0
  635. package/dist/collection/components/tab-bar/tab-bar.ios.css +86 -43
  636. package/dist/collection/components/tab-bar/tab-bar.js +190 -44
  637. package/dist/collection/components/tab-bar/tab-bar.md.css +86 -43
  638. package/dist/collection/components/tab-button/tab-button.ionic.css +373 -0
  639. package/dist/collection/components/tab-button/tab-button.ios.css +171 -95
  640. package/dist/collection/components/tab-button/tab-button.js +74 -68
  641. package/dist/collection/components/tab-button/tab-button.md.css +137 -93
  642. package/dist/collection/components/tabs/tabs.css +7 -1
  643. package/dist/collection/components/tabs/tabs.js +23 -33
  644. package/dist/collection/components/text/text.css +6 -0
  645. package/dist/collection/components/text/text.js +7 -12
  646. package/dist/collection/components/textarea/textarea.ionic.css +898 -0
  647. package/dist/collection/components/textarea/textarea.ios.css +298 -158
  648. package/dist/collection/components/textarea/textarea.js +295 -275
  649. package/dist/collection/components/textarea/textarea.md.css +312 -159
  650. package/dist/collection/components/thumbnail/thumbnail.css +6 -0
  651. package/dist/collection/components/thumbnail/thumbnail.js +9 -2
  652. package/dist/collection/components/title/title.ionic.css +127 -0
  653. package/dist/collection/components/title/title.ios.css +32 -4
  654. package/dist/collection/components/title/title.js +13 -23
  655. package/dist/collection/components/title/title.md.css +39 -4
  656. package/dist/collection/components/toast/animations/utils.js +1 -1
  657. package/dist/collection/components/toast/toast.ionic.css +394 -0
  658. package/dist/collection/components/toast/toast.ios.css +84 -45
  659. package/dist/collection/components/toast/toast.js +178 -232
  660. package/dist/collection/components/toast/toast.md.css +84 -45
  661. package/dist/collection/components/toggle/toggle.ionic.css +512 -0
  662. package/dist/collection/components/toggle/toggle.ios.css +247 -127
  663. package/dist/collection/components/toggle/toggle.js +177 -175
  664. package/dist/collection/components/toggle/toggle.md.css +245 -127
  665. package/dist/collection/components/toolbar/test/image.svg +1 -0
  666. package/dist/collection/components/toolbar/toolbar.ionic.css +249 -0
  667. package/dist/collection/components/toolbar/toolbar.ios.css +90 -47
  668. package/dist/collection/components/toolbar/toolbar.js +222 -25
  669. package/dist/collection/components/toolbar/toolbar.md.css +90 -47
  670. package/dist/collection/global/config.js +6 -4
  671. package/dist/collection/global/ionic-global.js +242 -20
  672. package/dist/collection/index.js +1 -1
  673. package/dist/collection/utils/animation/animation.js +3 -3
  674. package/dist/collection/utils/config.js +4 -5
  675. package/dist/collection/utils/css-value-validation.js +39 -0
  676. package/dist/collection/utils/focus-controller/index.js +1 -1
  677. package/dist/collection/utils/focus-trap.js +16 -5
  678. package/dist/collection/utils/focus-visible.js +22 -0
  679. package/dist/collection/utils/forms/validity.js +31 -0
  680. package/dist/collection/utils/framework-delegate.js +9 -5
  681. package/dist/collection/utils/gesture/gesture-controller.js +8 -15
  682. package/dist/collection/utils/gesture/index.js +2 -10
  683. package/dist/collection/utils/gesture/listener.js +1 -1
  684. package/dist/collection/utils/hardware-back-button.js +18 -3
  685. package/dist/collection/utils/helpers.js +72 -5
  686. package/dist/collection/utils/input-shims/hacks/scroll-assist.js +5 -4
  687. package/dist/collection/utils/input-shims/hacks/scroll-data.js +2 -1
  688. package/dist/collection/utils/keyboard/keyboard-controller.js +8 -6
  689. package/dist/collection/utils/keyboard/keyboard.js +1 -1
  690. package/dist/collection/utils/media.js +1 -0
  691. package/dist/collection/utils/menu-controller/animations/overlay.js +3 -3
  692. package/dist/collection/utils/menu-controller/animations/push.js +2 -1
  693. package/dist/collection/utils/menu-controller/animations/reveal.js +2 -1
  694. package/dist/collection/utils/menu-controller/index.js +2 -1
  695. package/dist/collection/utils/native/haptic.js +3 -2
  696. package/dist/collection/utils/native/keyboard.js +2 -2
  697. package/dist/collection/utils/native/status-bar.js +1 -1
  698. package/dist/collection/utils/overlay-control-label.js +13 -11
  699. package/dist/collection/utils/overlays.js +312 -45
  700. package/dist/collection/utils/platform.js +5 -4
  701. package/dist/collection/utils/rtl/dir.js +1 -1
  702. package/dist/collection/utils/sanitization/index.js +2 -2
  703. package/dist/collection/utils/scroll-hide-controller.js +178 -0
  704. package/dist/collection/utils/select-option-render.js +2 -1
  705. package/dist/collection/utils/slot-mutation-controller.js +2 -1
  706. package/dist/collection/utils/test/playwright/apply-keyboard-focus.js +1 -1
  707. package/dist/collection/utils/test/playwright/drag-element.js +35 -11
  708. package/dist/collection/utils/test/playwright/generator.js +51 -25
  709. package/dist/collection/utils/test/playwright/page/event-spy.js +12 -11
  710. package/dist/collection/utils/test/playwright/page/utils/goto.js +15 -5
  711. package/dist/collection/utils/test/playwright/page/utils/set-content.js +27 -4
  712. package/dist/collection/utils/test/playwright/page/utils/set-ion-viewport.js +3 -2
  713. package/dist/collection/utils/test/press-keys.js +17 -10
  714. package/dist/collection/utils/theme.js +26 -7
  715. package/dist/collection/utils/transition/ios.transition.js +14 -9
  716. package/dist/collection/utils/transition/md.transition.js +4 -3
  717. package/dist/docs.json +10032 -512
  718. package/dist/esm/{animation-CVK55yMY.js → animation-B2qdQ_ou.js} +5 -5
  719. package/dist/esm/{app-globals-Bk1_t4sH.js → app-globals-DZ-iIjxA.js} +1 -1
  720. package/dist/esm/{button-active-CdCqmeT0.js → button-active-BmajAby6.js} +3 -3
  721. package/dist/esm/{capacitor-CFERIeaU.js → capacitor-CtQSWUU0.js} +1 -1
  722. package/dist/esm/caret-down-D1t981Ih.js +6 -0
  723. package/dist/esm/caret-left-fIOYmaqA.js +6 -0
  724. package/dist/esm/caret-right-BYSs-jZz.js +6 -0
  725. package/dist/esm/{config-DWCzVL3Y.js → config-BwKpO3Is.js} +4 -5
  726. package/dist/esm/{dir-B-FxiyeI.js → dir-C53feagD.js} +1 -1
  727. package/dist/{cjs/focus-visible-CCvKiLh3.js → esm/focus-visible-vXpMhGrs.js} +23 -3
  728. package/dist/esm/{format-sMi4BZ_l.js → format-2WlZcMvG.js} +31 -41
  729. package/dist/esm/{framework-delegate-BfAlKlW5.js → framework-delegate-DO2QXccA.js} +10 -6
  730. package/dist/esm/{gesture-controller-TXPDHL13.js → gesture-controller-BTEOs1at.js} +8 -15
  731. package/dist/esm/{haptic-Cq4UAeka.js → haptic-DFgKNCce.js} +4 -3
  732. package/dist/esm/{helpers-BPcITY5s.js → helpers-DfF5_wJc.js} +73 -7
  733. package/dist/esm/{index-BvabGprD.js → index-B4Kq2YNk.js} +2 -1
  734. package/dist/esm/{index-DqVqy_Cy.js → index-BIUWGRUl.js} +5 -5
  735. package/dist/esm/{index-B9GsUd2c.js → index-BjaaZqVY.js} +4 -3
  736. package/dist/esm/{index-D1CQtpUN.js → index-C0EQceqV.js} +48 -9
  737. package/dist/esm/{index-DppOcPFQ.js → index-CfgBF1SE.js} +4 -10
  738. package/dist/esm/{index-ks-BjikL.js → index-Di034G4O.js} +13 -12
  739. package/dist/esm/{index-DcUt1pPn.js → index-KxK0gcRp.js} +2 -2
  740. package/dist/esm/{index-DDa8edAS.js → index-Mq5pCWmZ.js} +3 -3
  741. package/dist/esm/index.js +16 -17
  742. package/dist/esm/{input-shims-C1dCKVMO.js → input-shims-DvNNw70a.js} +14 -11
  743. package/dist/esm/{input.utils-Dd5xwlP6.js → input.utils-_LkBfBWt.js} +5 -4
  744. package/dist/esm/ion-accordion_2.entry.js +382 -378
  745. package/dist/esm/ion-action-sheet.entry.js +86 -178
  746. package/dist/esm/ion-alert.entry.js +125 -250
  747. package/dist/esm/ion-app_8.entry.js +607 -459
  748. package/dist/esm/ion-avatar_3.entry.js +125 -19
  749. package/dist/esm/ion-back-button.entry.js +49 -64
  750. package/dist/esm/ion-backdrop.entry.js +22 -23
  751. package/dist/esm/ion-breadcrumb_2.entry.js +169 -211
  752. package/dist/esm/ion-button_2.entry.js +117 -152
  753. package/dist/esm/ion-card_5.entry.js +79 -109
  754. package/dist/esm/ion-checkbox.entry.js +129 -163
  755. package/dist/esm/ion-chip.entry.js +56 -21
  756. package/dist/esm/ion-col_3.entry.js +61 -186
  757. package/dist/esm/ion-datetime-button.entry.js +247 -255
  758. package/dist/esm/ion-datetime_3.entry.js +3235 -0
  759. package/dist/esm/ion-divider.entry.js +49 -0
  760. package/dist/esm/ion-fab_3.entry.js +112 -154
  761. package/dist/esm/ion-gallery-item.entry.js +57 -0
  762. package/dist/esm/ion-gallery.entry.js +605 -0
  763. package/dist/esm/ion-img.entry.js +16 -34
  764. package/dist/esm/ion-infinite-scroll_2.entry.js +156 -108
  765. package/dist/esm/ion-input-otp.entry.js +437 -435
  766. package/dist/esm/ion-input-password-toggle.entry.js +64 -40
  767. package/dist/esm/ion-input.entry.js +290 -325
  768. package/dist/esm/ion-item-option_3.entry.js +511 -136
  769. package/dist/esm/ion-item_8.entry.js +189 -217
  770. package/dist/esm/ion-loading.entry.js +68 -151
  771. package/dist/esm/ion-menu_3.entry.js +137 -181
  772. package/dist/esm/ion-modal.entry.js +448 -491
  773. package/dist/esm/ion-nav_2.entry.js +163 -103
  774. package/dist/esm/ion-picker-column-option.entry.js +39 -39
  775. package/dist/esm/ion-picker-column.entry.js +409 -421
  776. package/dist/esm/ion-picker.entry.js +400 -405
  777. package/dist/esm/ion-popover.entry.js +211 -323
  778. package/dist/esm/ion-progress-bar.entry.js +47 -35
  779. package/dist/esm/ion-radio_2.entry.js +161 -216
  780. package/dist/esm/ion-range.entry.js +249 -307
  781. package/dist/esm/ion-refresher_2.entry.js +121 -174
  782. package/dist/esm/ion-reorder_2.entry.js +53 -59
  783. package/dist/esm/ion-ripple-effect.entry.js +26 -18
  784. package/dist/esm/ion-route_4.entry.js +75 -178
  785. package/dist/esm/ion-searchbar.entry.js +345 -303
  786. package/dist/esm/ion-segment-content.entry.js +2 -2
  787. package/dist/esm/ion-segment-view.entry.js +27 -28
  788. package/dist/esm/ion-segment_2.entry.js +141 -177
  789. package/dist/esm/ion-select-modal.entry.js +69 -49
  790. package/dist/esm/ion-select_3.entry.js +386 -482
  791. package/dist/esm/ion-spinner.entry.js +36 -28
  792. package/dist/esm/ion-split-pane.entry.js +25 -34
  793. package/dist/esm/ion-tab-bar_2.entry.js +178 -115
  794. package/dist/esm/ion-tab_2.entry.js +29 -54
  795. package/dist/esm/ion-text.entry.js +7 -13
  796. package/dist/esm/ion-textarea.entry.js +269 -274
  797. package/dist/esm/ion-toast.entry.js +148 -243
  798. package/dist/esm/ion-toggle.entry.js +187 -184
  799. package/dist/esm/ionic-global-BpkTponr.js +508 -0
  800. package/dist/esm/ionic.js +5 -5
  801. package/dist/esm/{ios.transition-OcwIGkv9.js → ios.transition-CgScDbsb.js} +20 -14
  802. package/dist/esm/{item-multiple-inputs-ifd3ZrqY.js → item-multiple-inputs-C6onMFOo.js} +1 -1
  803. package/dist/esm/{keyboard-DAF8GNJ9.js → keyboard-CyyguLDw.js} +3 -3
  804. package/dist/esm/{keyboard-Cj8mLJeq.js → keyboard-WJix-wcz.js} +5 -4
  805. package/dist/esm/list-Dhi5xtNS.js +6 -0
  806. package/dist/esm/loader.js +5 -5
  807. package/dist/esm/{md.transition-BetdF0bc.js → md.transition-DThqYazt.js} +10 -8
  808. package/dist/esm/{notch-controller-DBSn-Uat.js → notch-controller-MTblRxjD.js} +2 -2
  809. package/dist/esm/{overlay-control-label-BSQPZ79H.js → overlay-control-label-CODBQrPj.js} +13 -11
  810. package/dist/esm/{overlays-DUzb9CQf.js → overlays-tv6nLsmk.js} +333 -57
  811. package/dist/esm/scroll-hide-controller-CUNW7EpD.js +342 -0
  812. package/dist/esm/{select-option-render-DsW8svRr.js → select-option-render-BlKZ2H83.js} +4 -3
  813. package/dist/esm/{status-tap-C-wNhea0.js → status-tap-CoPI1M2q.js} +4 -3
  814. package/dist/esm/{swipe-back-D6YSgAn7.js → swipe-back-qmvTRnSq.js} +6 -5
  815. package/dist/esm/theme-DaJxRxSQ.js +67 -0
  816. package/dist/esm/validity-BjW8SOqw.js +48 -0
  817. package/dist/esm/x-BDqjX7Z_.js +6 -0
  818. package/dist/html.html-data.json +2690 -123
  819. package/dist/ionic/index.esm.js +1 -1
  820. package/dist/ionic/ionic.esm.js +1 -1
  821. package/dist/ionic/p--sroV-k-.js +4 -0
  822. package/dist/ionic/p-05ce9821.entry.js +4 -0
  823. package/dist/ionic/p-085b8cdf.entry.js +4 -0
  824. package/dist/ionic/p-0ef6bfc4.entry.js +4 -0
  825. package/dist/ionic/p-176d37f8.entry.js +4 -0
  826. package/dist/ionic/p-18b7771e.entry.js +4 -0
  827. package/dist/ionic/p-19f34fe5.entry.js +4 -0
  828. package/dist/ionic/p-1b6e3914.entry.js +4 -0
  829. package/dist/ionic/p-2740db6e.entry.js +4 -0
  830. package/dist/ionic/p-2a1abbb1.entry.js +4 -0
  831. package/dist/ionic/p-2d9c681b.entry.js +4 -0
  832. package/dist/ionic/p-2fba8f15.entry.js +4 -0
  833. package/dist/ionic/p-3886bfbe.entry.js +4 -0
  834. package/dist/ionic/p-3ab9c35a.entry.js +4 -0
  835. package/dist/ionic/p-3b4c5cb5.entry.js +4 -0
  836. package/dist/ionic/p-3cfb4ff2.entry.js +4 -0
  837. package/dist/ionic/p-41afaf15.entry.js +4 -0
  838. package/dist/ionic/p-47b9dac0.entry.js +4 -0
  839. package/dist/ionic/p-54419365.entry.js +4 -0
  840. package/dist/ionic/p-54b7972e.entry.js +4 -0
  841. package/dist/ionic/p-602cf876.entry.js +4 -0
  842. package/dist/ionic/p-678ee14a.entry.js +4 -0
  843. package/dist/ionic/p-679c1448.entry.js +4 -0
  844. package/dist/ionic/p-68ea8ed1.entry.js +4 -0
  845. package/dist/ionic/p-6e1ec775.entry.js +4 -0
  846. package/dist/ionic/p-745d6b2b.entry.js +4 -0
  847. package/dist/ionic/p-77254b78.entry.js +4 -0
  848. package/dist/ionic/p-7k7Q1A38.js +4 -0
  849. package/dist/ionic/p-89fedfda.entry.js +4 -0
  850. package/dist/ionic/p-8cf82b85.entry.js +4 -0
  851. package/dist/ionic/p-8d5fd199.entry.js +4 -0
  852. package/dist/ionic/p-9087119f.entry.js +4 -0
  853. package/dist/ionic/p-9c508a22.entry.js +4 -0
  854. package/dist/ionic/p-B4Kq2YNk.js +4 -0
  855. package/dist/ionic/p-BDSH5ckF.js +4 -0
  856. package/dist/ionic/p-BDqjX7Z_.js +4 -0
  857. package/dist/ionic/p-BFy_BK46.js +4 -0
  858. package/dist/ionic/p-BTEOs1at.js +4 -0
  859. package/dist/ionic/p-BYSs-jZz.js +4 -0
  860. package/dist/ionic/p-BjW8SOqw.js +4 -0
  861. package/dist/ionic/p-BlZo7Gy-.js +4 -0
  862. package/dist/ionic/p-Bq8S4vhI.js +4 -0
  863. package/dist/ionic/p-BwKpO3Is.js +4 -0
  864. package/dist/ionic/p-C0EQceqV.js +5 -0
  865. package/dist/ionic/p-C1I_d964.js +4 -0
  866. package/dist/ionic/p-C53feagD.js +4 -0
  867. package/dist/ionic/p-CB91Gr9M.js +4 -0
  868. package/dist/ionic/p-CEkwLb3L.js +4 -0
  869. package/dist/ionic/p-CJsJQPQD.js +4 -0
  870. package/dist/ionic/p-CODBQrPj.js +4 -0
  871. package/dist/ionic/p-Ch7MBNn_.js +4 -0
  872. package/{components/p-CO5nI-BZ.js → dist/ionic/p-Cipl19Qe.js} +1 -1
  873. package/dist/ionic/p-Cl0B-RWe.js +4 -0
  874. package/dist/ionic/{p-CHpEzg-o.js → p-Cm20lBQw.js} +1 -1
  875. package/dist/ionic/p-CnAWnbNK.js +4 -0
  876. package/dist/ionic/p-D1t981Ih.js +4 -0
  877. package/dist/ionic/p-D4MT1z4_.js +4 -0
  878. package/dist/ionic/p-D4veLKCq.js +4 -0
  879. package/dist/ionic/p-DF7ubVci.js +4 -0
  880. package/dist/ionic/p-DMaSfupH.js +4 -0
  881. package/dist/ionic/p-DQDmksdT.js +4 -0
  882. package/dist/ionic/p-DTsDGZPd.js +4 -0
  883. package/dist/ionic/p-DaJxRxSQ.js +4 -0
  884. package/dist/ionic/p-DdCaKRle.js +4 -0
  885. package/dist/ionic/p-Dhi5xtNS.js +4 -0
  886. package/dist/ionic/p-Dy243NXW.js +4 -0
  887. package/dist/ionic/p-OkgYzj-7.js +4 -0
  888. package/dist/ionic/p-YIsE5bNG.js +4 -0
  889. package/dist/ionic/p-a4af8e39.entry.js +4 -0
  890. package/dist/ionic/p-b2368a93.entry.js +4 -0
  891. package/dist/ionic/p-b275f17e.entry.js +4 -0
  892. package/dist/ionic/p-c5635175.entry.js +4 -0
  893. package/dist/ionic/p-c76d57fb.entry.js +4 -0
  894. package/dist/ionic/p-ca3a07b5.entry.js +4 -0
  895. package/dist/ionic/p-ced3cda1.entry.js +4 -0
  896. package/dist/ionic/p-cf22e991.entry.js +4 -0
  897. package/dist/ionic/p-d0c1d21d.entry.js +4 -0
  898. package/dist/ionic/p-d0d42da6.entry.js +4 -0
  899. package/dist/ionic/p-d1de76b8.entry.js +4 -0
  900. package/dist/ionic/p-d33dfc12.entry.js +4 -0
  901. package/dist/ionic/p-d34bfb61.entry.js +4 -0
  902. package/dist/ionic/p-dbc08f67.entry.js +4 -0
  903. package/dist/ionic/p-dc8e0b91.entry.js +4 -0
  904. package/dist/ionic/p-df642ef5.entry.js +4 -0
  905. package/dist/ionic/p-e04d63e1.entry.js +4 -0
  906. package/dist/ionic/p-e3615478.entry.js +4 -0
  907. package/dist/ionic/p-f1810d29.entry.js +4 -0
  908. package/dist/ionic/p-f1a8aead.entry.js +4 -0
  909. package/dist/ionic/p-f69af9d3.entry.js +4 -0
  910. package/dist/ionic/p-f8001f8f.entry.js +4 -0
  911. package/dist/ionic/p-f8b63ebb.entry.js +4 -0
  912. package/dist/ionic/p-fIOYmaqA.js +4 -0
  913. package/dist/ionic/p-fc6d26ff.entry.js +4 -0
  914. package/{components/p-DL8rd5jo.js → dist/ionic/p-im8OkZlj.js} +1 -1
  915. package/dist/ionic/p-lMb_45ax.js +4 -0
  916. package/dist/ionic/{p-IaXd5VMv.js → p-oUgyLDGL.js} +1 -1
  917. package/dist/ionic/p-vXpMhGrs.js +4 -0
  918. package/dist/types/components/accordion/accordion.d.ts +6 -3
  919. package/dist/types/components/accordion-group/accordion-group.d.ts +12 -1
  920. package/dist/types/components/action-sheet/action-sheet-interface.d.ts +3 -7
  921. package/dist/types/components/action-sheet/action-sheet.d.ts +3 -2
  922. package/dist/types/components/alert/alert-interface.d.ts +3 -7
  923. package/dist/types/components/alert/alert.d.ts +3 -2
  924. package/dist/types/components/app/app.d.ts +4 -5
  925. package/dist/types/components/avatar/avatar.d.ts +32 -0
  926. package/dist/types/components/back-button/back-button.d.ts +2 -1
  927. package/dist/types/components/backdrop/backdrop.d.ts +4 -0
  928. package/dist/types/components/badge/badge.d.ts +34 -1
  929. package/dist/types/components/breadcrumb/breadcrumb.d.ts +4 -1
  930. package/dist/types/components/breadcrumbs/breadcrumbs.d.ts +2 -2
  931. package/dist/types/components/button/button.d.ts +23 -8
  932. package/dist/types/components/buttons/buttons.d.ts +5 -1
  933. package/dist/types/components/card/card.d.ts +8 -1
  934. package/dist/types/components/card-content/card-content.d.ts +2 -1
  935. package/dist/types/components/card-header/card-header.d.ts +3 -2
  936. package/dist/types/components/card-subtitle/card-subtitle.d.ts +2 -1
  937. package/dist/types/components/card-title/card-title.d.ts +2 -1
  938. package/dist/types/components/checkbox/checkbox.d.ts +14 -4
  939. package/dist/types/components/chip/chip.d.ts +26 -1
  940. package/dist/types/components/col/col.d.ts +52 -5
  941. package/dist/types/components/content/content.d.ts +3 -0
  942. package/dist/types/components/datetime/datetime.d.ts +26 -1
  943. package/dist/types/components/datetime/utils/data.d.ts +5 -5
  944. package/dist/types/components/datetime-button/datetime-button.d.ts +2 -1
  945. package/dist/types/components/divider/divider.d.ts +20 -0
  946. package/dist/types/components/fab/fab.d.ts +4 -0
  947. package/dist/types/components/fab-button/fab-button.d.ts +5 -3
  948. package/dist/types/components/fab-list/fab-list.d.ts +4 -0
  949. package/dist/types/components/footer/footer-interface.d.ts +1 -0
  950. package/dist/types/components/footer/footer.d.ts +20 -3
  951. package/dist/types/components/gallery/gallery-constants.d.ts +9 -0
  952. package/dist/types/components/gallery/gallery-interface.d.ts +10 -0
  953. package/dist/types/components/gallery/gallery.d.ts +218 -0
  954. package/dist/types/components/gallery/test/utils.d.ts +3 -0
  955. package/dist/types/components/gallery-item/gallery-item.d.ts +33 -0
  956. package/dist/types/components/grid/grid.d.ts +4 -0
  957. package/dist/types/components/header/header-interface.d.ts +1 -0
  958. package/dist/types/components/header/header.d.ts +26 -3
  959. package/dist/types/components/header/header.utils.d.ts +4 -5
  960. package/dist/types/components/img/img.d.ts +2 -1
  961. package/dist/types/components/infinite-scroll/infinite-scroll.d.ts +21 -0
  962. package/dist/types/components/infinite-scroll-content/infinite-scroll-content.d.ts +4 -0
  963. package/dist/types/components/input/input.d.ts +38 -6
  964. package/dist/types/components/input-otp/input-otp.d.ts +37 -0
  965. package/dist/types/components/input-password-toggle/input-password-toggle.d.ts +2 -0
  966. package/dist/types/components/item/item.d.ts +11 -4
  967. package/dist/types/components/item-divider/item-divider.d.ts +2 -1
  968. package/dist/types/components/item-group/item-group.d.ts +4 -0
  969. package/dist/types/components/item-option/item-option.d.ts +18 -1
  970. package/dist/types/components/item-options/item-options.d.ts +4 -0
  971. package/dist/types/components/item-sliding/item-sliding.d.ts +47 -1
  972. package/dist/types/components/item-sliding/test/test.utils.d.ts +13 -0
  973. package/dist/types/components/label/label.d.ts +2 -1
  974. package/dist/types/components/list/list.d.ts +15 -1
  975. package/dist/types/components/list-header/list-header.d.ts +2 -1
  976. package/dist/types/components/loading/loading-interface.d.ts +2 -7
  977. package/dist/types/components/loading/loading.d.ts +3 -2
  978. package/dist/types/components/menu/menu.d.ts +3 -0
  979. package/dist/types/components/menu-button/menu-button.d.ts +3 -1
  980. package/dist/types/components/menu-toggle/menu-toggle.d.ts +3 -0
  981. package/dist/types/components/modal/animations/ionic.enter.d.ts +6 -0
  982. package/dist/types/components/modal/animations/ionic.leave.d.ts +6 -0
  983. package/dist/types/components/modal/gestures/sheet.d.ts +1 -1
  984. package/dist/types/components/modal/modal-interface.d.ts +4 -7
  985. package/dist/types/components/modal/modal.d.ts +15 -12
  986. package/dist/types/components/nav/nav-interface.d.ts +10 -1
  987. package/dist/types/components/nav/nav.d.ts +27 -3
  988. package/dist/types/components/nav-link/nav-link.d.ts +4 -0
  989. package/dist/types/components/note/note.d.ts +2 -1
  990. package/dist/types/components/picker/picker.d.ts +2 -1
  991. package/dist/types/components/picker-column/picker-column.d.ts +2 -1
  992. package/dist/types/components/picker-column-option/picker-column-option.d.ts +4 -0
  993. package/dist/types/components/picker-legacy/animations/ios.enter.d.ts +5 -0
  994. package/dist/types/components/picker-legacy/animations/ios.leave.d.ts +5 -0
  995. package/dist/types/components/picker-legacy/picker-interface.d.ts +52 -0
  996. package/dist/types/components/picker-legacy/picker.d.ts +159 -0
  997. package/dist/types/components/picker-legacy-column/picker-column.d.ts +46 -0
  998. package/dist/types/components/picker-legacy-column/test/test.utils.d.ts +9 -0
  999. package/dist/types/components/popover/popover-interface.d.ts +3 -6
  1000. package/dist/types/components/popover/popover.d.ts +6 -5
  1001. package/dist/types/components/progress-bar/progress-bar.d.ts +10 -1
  1002. package/dist/types/components/radio/radio.d.ts +2 -1
  1003. package/dist/types/components/radio-group/radio-group.d.ts +12 -0
  1004. package/dist/types/components/range/range.d.ts +2 -1
  1005. package/dist/types/components/refresher/refresher.d.ts +2 -1
  1006. package/dist/types/components/refresher-content/refresher-content.d.ts +4 -0
  1007. package/dist/types/components/reorder/reorder.d.ts +9 -0
  1008. package/dist/types/components/reorder-group/reorder-group.d.ts +4 -0
  1009. package/dist/types/components/ripple-effect/ripple-effect.d.ts +4 -0
  1010. package/dist/types/components/route/route.d.ts +5 -1
  1011. package/dist/types/components/router/router.d.ts +4 -0
  1012. package/dist/types/components/router-link/router-link.d.ts +4 -0
  1013. package/dist/types/components/router-outlet/router-outlet.d.ts +4 -8
  1014. package/dist/types/components/row/row.d.ts +4 -0
  1015. package/dist/types/components/searchbar/searchbar.d.ts +60 -11
  1016. package/dist/types/components/segment/segment.d.ts +2 -1
  1017. package/dist/types/components/segment-button/segment-button.d.ts +2 -1
  1018. package/dist/types/components/select/select.d.ts +49 -14
  1019. package/dist/types/components/select-modal/select-modal.d.ts +8 -0
  1020. package/dist/types/components/select-option/select-option.d.ts +7 -4
  1021. package/dist/types/components/select-popover/select-popover.d.ts +3 -0
  1022. package/dist/types/components/skeleton-text/skeleton-text.d.ts +4 -0
  1023. package/dist/types/components/spinner/spinner.d.ts +15 -0
  1024. package/dist/types/components/split-pane/split-pane.d.ts +4 -0
  1025. package/dist/types/components/tab/tab.d.ts +4 -0
  1026. package/dist/types/components/tab-bar/tab-bar-interface.d.ts +1 -0
  1027. package/dist/types/components/tab-bar/tab-bar.d.ts +41 -3
  1028. package/dist/types/components/tab-button/tab-button.d.ts +12 -1
  1029. package/dist/types/components/tabs/tabs.d.ts +3 -0
  1030. package/dist/types/components/text/text.d.ts +2 -1
  1031. package/dist/types/components/textarea/textarea.d.ts +53 -4
  1032. package/dist/types/components/thumbnail/thumbnail.d.ts +4 -0
  1033. package/dist/types/components/title/title.d.ts +4 -0
  1034. package/dist/types/components/toast/animations/utils.d.ts +2 -2
  1035. package/dist/types/components/toast/toast-interface.d.ts +3 -7
  1036. package/dist/types/components/toast/toast.d.ts +19 -2
  1037. package/dist/types/components/toggle/toggle.d.ts +15 -1
  1038. package/dist/types/components/toolbar/toolbar.d.ts +43 -3
  1039. package/dist/types/components.d.ts +2171 -263
  1040. package/dist/types/global/ionic-global.d.ts +28 -2
  1041. package/dist/types/index.d.ts +1 -1
  1042. package/dist/types/interface.d.ts +4 -0
  1043. package/dist/types/utils/config.d.ts +114 -2
  1044. package/dist/types/utils/css-value-validation.d.ts +21 -0
  1045. package/dist/types/utils/focus-trap.d.ts +1 -1
  1046. package/dist/types/utils/focus-visible.d.ts +13 -0
  1047. package/dist/types/utils/forms/validity.d.ts +7 -0
  1048. package/dist/types/utils/helpers.d.ts +22 -0
  1049. package/dist/types/utils/overlay-control-label.d.ts +11 -9
  1050. package/dist/types/utils/overlays-interface.d.ts +31 -1
  1051. package/dist/types/utils/overlays.d.ts +10 -12
  1052. package/dist/types/utils/scroll-hide-controller.d.ts +56 -0
  1053. package/dist/types/utils/test/playwright/drag-element.d.ts +16 -3
  1054. package/dist/types/utils/test/playwright/generator.d.ts +31 -2
  1055. package/dist/types/utils/test/playwright/playwright-page.d.ts +1 -1
  1056. package/dist/types/utils/test/playwright/testExpect.d.ts +1 -1
  1057. package/dist/types/utils/theme.d.ts +9 -0
  1058. package/hydrate/index.js +11998 -10225
  1059. package/hydrate/index.mjs +11998 -10225
  1060. package/package.json +17 -56
  1061. package/components/p-0tt0PTAe.js +0 -4
  1062. package/components/p-3dKnMgX5.js +0 -4
  1063. package/components/p-6e_5igwn.js +0 -4
  1064. package/components/p-AqD_wmvU.js +0 -4
  1065. package/components/p-B-FxiyeI.js +0 -4
  1066. package/components/p-B4COLbAV.js +0 -4
  1067. package/components/p-B9zzUBwR.js +0 -4
  1068. package/components/p-BFU7kgcj.js +0 -4
  1069. package/components/p-BMPN55of.js +0 -4
  1070. package/components/p-BPbRjpb2.js +0 -4
  1071. package/components/p-BSQPZ79H.js +0 -4
  1072. package/components/p-BXQ7upSC.js +0 -4
  1073. package/components/p-BhamHSw3.js +0 -4
  1074. package/components/p-BmVRXR1y.js +0 -4
  1075. package/components/p-BrXE0XUu.js +0 -4
  1076. package/components/p-Bv7Rqz3Z.js +0 -4
  1077. package/components/p-Bw7MMRH7.js +0 -4
  1078. package/components/p-C-X5vb8f.js +0 -4
  1079. package/components/p-C117Majq.js +0 -4
  1080. package/components/p-CCVPk59A.js +0 -4
  1081. package/components/p-CEW4RXZO.js +0 -4
  1082. package/components/p-CIGNaXM1.js +0 -4
  1083. package/components/p-CKMc290p.js +0 -4
  1084. package/components/p-COQ_7Wwc.js +0 -4
  1085. package/components/p-CQbh6Be_.js +0 -4
  1086. package/components/p-CQtcj8t7.js +0 -4
  1087. package/components/p-Cap9bvqr.js +0 -4
  1088. package/components/p-CdP7ze2J.js +0 -4
  1089. package/components/p-CfyJ_Ogc.js +0 -4
  1090. package/components/p-ChWC4-vA.js +0 -4
  1091. package/components/p-CmKf4pgI.js +0 -4
  1092. package/components/p-CqYSqB9_.js +0 -4
  1093. package/components/p-Cwsd9bue.js +0 -4
  1094. package/components/p-D0pL_HuH.js +0 -4
  1095. package/components/p-D0xd6h3Q.js +0 -4
  1096. package/components/p-D28LaDuR.js +0 -4
  1097. package/components/p-D7-vHX0A.js +0 -4
  1098. package/components/p-D9KqizZs.js +0 -4
  1099. package/components/p-DIZE3CVV.js +0 -4
  1100. package/components/p-DJztqcrH.js +0 -4
  1101. package/components/p-DRcApg6F.js +0 -4
  1102. package/components/p-DTTnwMiS.js +0 -4
  1103. package/components/p-DWCzVL3Y.js +0 -4
  1104. package/components/p-DYmrV1HT.js +0 -4
  1105. package/components/p-DnINLmwC.js +0 -4
  1106. package/components/p-DtiuiOTk.js +0 -4
  1107. package/components/p-DunYzubP.js +0 -4
  1108. package/components/p-DwcSJ9u1.js +0 -4
  1109. package/components/p-LpMHEu3v.js +0 -4
  1110. package/components/p-QCPSB1bo.js +0 -4
  1111. package/components/p-RvtofbHn.js +0 -4
  1112. package/components/p-TXPDHL13.js +0 -4
  1113. package/components/p-WOFp6fXj.js +0 -4
  1114. package/components/p-ZjP4CjeZ.js +0 -4
  1115. package/components/p-byZM6qHV.js +0 -4
  1116. package/components/p-miSGCTAU.js +0 -4
  1117. package/components/p-mpdX3emm.js +0 -4
  1118. package/components/p-nvqVLrWC.js +0 -4
  1119. package/components/p-qiWM96Sz.js +0 -4
  1120. package/components/p-vlF0Bcfd.js +0 -4
  1121. package/dist/cjs/hardware-back-button-zr8zeYaH.js +0 -121
  1122. package/dist/cjs/index-DkNv4J_i.js +0 -10
  1123. package/dist/cjs/ion-datetime.cjs.entry.js +0 -2767
  1124. package/dist/cjs/ionic-global-dMut1Czp.js +0 -156
  1125. package/dist/cjs/keyboard-controller-PtZoN2GS.js +0 -167
  1126. package/dist/cjs/validity-BpS37YFM.js +0 -19
  1127. package/dist/esm/hardware-back-button-DcHMMB9j.js +0 -115
  1128. package/dist/esm/index-ZjP4CjeZ.js +0 -7
  1129. package/dist/esm/ion-datetime.entry.js +0 -2765
  1130. package/dist/esm/ionic-global-5bZ91kOL.js +0 -151
  1131. package/dist/esm/keyboard-controller-DEwoa1ev.js +0 -165
  1132. package/dist/esm/theme-byZM6qHV.js +0 -48
  1133. package/dist/esm/validity-DJztqcrH.js +0 -17
  1134. package/dist/ionic/p-01eaee58.entry.js +0 -4
  1135. package/dist/ionic/p-0c567140.entry.js +0 -4
  1136. package/dist/ionic/p-105bb794.entry.js +0 -4
  1137. package/dist/ionic/p-10d55bb6.entry.js +0 -4
  1138. package/dist/ionic/p-173a87d8.entry.js +0 -4
  1139. package/dist/ionic/p-178da672.entry.js +0 -4
  1140. package/dist/ionic/p-1ead2857.entry.js +0 -4
  1141. package/dist/ionic/p-224e2464.entry.js +0 -4
  1142. package/dist/ionic/p-2268e718.entry.js +0 -4
  1143. package/dist/ionic/p-2b5283f3.entry.js +0 -4
  1144. package/dist/ionic/p-2b6decac.entry.js +0 -4
  1145. package/dist/ionic/p-2da5d9c6.entry.js +0 -4
  1146. package/dist/ionic/p-31890acd.entry.js +0 -4
  1147. package/dist/ionic/p-34ef7425.entry.js +0 -4
  1148. package/dist/ionic/p-34f7c1d8.entry.js +0 -4
  1149. package/dist/ionic/p-3b1e6fa4.entry.js +0 -4
  1150. package/dist/ionic/p-42fefd2c.entry.js +0 -4
  1151. package/dist/ionic/p-440cd489.entry.js +0 -4
  1152. package/dist/ionic/p-460da491.entry.js +0 -4
  1153. package/dist/ionic/p-53f680e8.entry.js +0 -4
  1154. package/dist/ionic/p-57ba508f.entry.js +0 -4
  1155. package/dist/ionic/p-599e5a75.entry.js +0 -4
  1156. package/dist/ionic/p-5f670a9e.entry.js +0 -4
  1157. package/dist/ionic/p-63502088.entry.js +0 -4
  1158. package/dist/ionic/p-6e6bf45d.entry.js +0 -4
  1159. package/dist/ionic/p-6f0b6a48.entry.js +0 -4
  1160. package/dist/ionic/p-7438c462.entry.js +0 -4
  1161. package/dist/ionic/p-747716e7.entry.js +0 -4
  1162. package/dist/ionic/p-7759fcaf.entry.js +0 -4
  1163. package/dist/ionic/p-7a8338e2.entry.js +0 -4
  1164. package/dist/ionic/p-80f9f1dc.entry.js +0 -4
  1165. package/dist/ionic/p-83ff4dcb.entry.js +0 -4
  1166. package/dist/ionic/p-86f03895.entry.js +0 -4
  1167. package/dist/ionic/p-87b8d70e.entry.js +0 -4
  1168. package/dist/ionic/p-888236bf.entry.js +0 -4
  1169. package/dist/ionic/p-8a92ca23.entry.js +0 -4
  1170. package/dist/ionic/p-8c9af4ad.entry.js +0 -4
  1171. package/dist/ionic/p-9669f546.entry.js +0 -4
  1172. package/dist/ionic/p-9bcd8b74.entry.js +0 -4
  1173. package/dist/ionic/p-B-FxiyeI.js +0 -4
  1174. package/dist/ionic/p-B2trYd8K.js +0 -4
  1175. package/dist/ionic/p-BMPN55of.js +0 -4
  1176. package/dist/ionic/p-BNKr91bi.js +0 -4
  1177. package/dist/ionic/p-BSQPZ79H.js +0 -4
  1178. package/dist/ionic/p-BSzG1VcX.js +0 -4
  1179. package/dist/ionic/p-BVgBHS96.js +0 -4
  1180. package/dist/ionic/p-BX2IOAqC.js +0 -4
  1181. package/dist/ionic/p-BhamHSw3.js +0 -4
  1182. package/dist/ionic/p-BmVRXR1y.js +0 -4
  1183. package/dist/ionic/p-BufXJ_A8.js +0 -4
  1184. package/dist/ionic/p-BvabGprD.js +0 -4
  1185. package/dist/ionic/p-C73UOs4m.js +0 -4
  1186. package/dist/ionic/p-CIGNaXM1.js +0 -4
  1187. package/dist/ionic/p-CeOSrSdu.js +0 -4
  1188. package/dist/ionic/p-CfkB7_FV.js +0 -4
  1189. package/dist/ionic/p-CmKf4pgI.js +0 -4
  1190. package/dist/ionic/p-CnM-CMw7.js +0 -4
  1191. package/dist/ionic/p-D1CQtpUN.js +0 -5
  1192. package/dist/ionic/p-D5t_-oMk.js +0 -4
  1193. package/dist/ionic/p-DJztqcrH.js +0 -4
  1194. package/dist/ionic/p-DVYb1IVZ.js +0 -4
  1195. package/dist/ionic/p-DWCzVL3Y.js +0 -4
  1196. package/dist/ionic/p-DfJ-SVJf.js +0 -4
  1197. package/dist/ionic/p-DmXrLsoD.js +0 -4
  1198. package/dist/ionic/p-DtLHAMFW.js +0 -4
  1199. package/dist/ionic/p-Dtlob2JL.js +0 -4
  1200. package/dist/ionic/p-F7ipfyOA.js +0 -4
  1201. package/dist/ionic/p-I9ETXg5W.js +0 -4
  1202. package/dist/ionic/p-T71k3C35.js +0 -4
  1203. package/dist/ionic/p-TXPDHL13.js +0 -4
  1204. package/dist/ionic/p-ZjP4CjeZ.js +0 -4
  1205. package/dist/ionic/p-acbb97c3.entry.js +0 -4
  1206. package/dist/ionic/p-aeb85531.entry.js +0 -4
  1207. package/dist/ionic/p-b157f80d.entry.js +0 -4
  1208. package/dist/ionic/p-b158de5d.entry.js +0 -4
  1209. package/dist/ionic/p-b40c9715.entry.js +0 -4
  1210. package/dist/ionic/p-b852101e.entry.js +0 -4
  1211. package/dist/ionic/p-byZM6qHV.js +0 -4
  1212. package/dist/ionic/p-c0d81bee.entry.js +0 -4
  1213. package/dist/ionic/p-c8a327fb.entry.js +0 -4
  1214. package/dist/ionic/p-d42ae99f.entry.js +0 -4
  1215. package/dist/ionic/p-d47ff529.entry.js +0 -4
  1216. package/dist/ionic/p-eHi73fGE.js +0 -4
  1217. package/dist/ionic/p-eeabce92.entry.js +0 -4
  1218. package/dist/ionic/p-efc66d77.entry.js +0 -4
  1219. package/dist/ionic/p-f6d203dc.entry.js +0 -4
  1220. package/dist/ionic/p-u2a770LZ.js +0 -4
  1221. /package/dist/collection/components/{input-password-toggle/input-password-toggle.css → refresher-content/refresher-content.css} +0 -0
@@ -4,35 +4,69 @@
4
4
  import { Host, h, writeTask } from "@stencil/core";
5
5
  import { findIonContent, getScrollElement, printIonContentErrorMsg } from "../../utils/content/index";
6
6
  import { inheritAriaAttributes } from "../../utils/helpers";
7
+ import { printIonWarning } from "../../utils/logging/index";
8
+ import { createScrollHideController } from "../../utils/scroll-hide-controller";
7
9
  import { hostContext } from "../../utils/theme";
8
- import { getIonMode } from "../../global/ionic-global";
10
+ import { config } from "../../global/config";
11
+ import { getIonTheme } from "../../global/ionic-global";
9
12
  import { cloneElement, createHeaderIndex, handleContentScroll, handleHeaderFade, handleToolbarIntersection, setHeaderActive, setToolbarBackgroundOpacity, getRoleType, } from "./header.utils";
10
13
  /**
11
- * @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
14
+ * @virtualProp {"ios" | "md"} mode - The mode determines the platform behaviors of the component.
15
+ * @virtualProp {"ios" | "md" | "ionic"} theme - The theme determines the visual appearance of the component.
12
16
  */
13
17
  export class Header {
14
- scrollEl;
15
- contentScrollCallback;
16
- intersectionObserver;
17
- collapsibleMainHeader;
18
- inheritedAttributes = {};
19
- el;
20
- /**
21
- * Describes the scroll effect that will be applied to the header.
22
- * Only applies in iOS mode.
23
- *
24
- * Typically used for [Collapsible Large Titles](https://ionicframework.com/docs/api/title#collapsible-large-titles)
25
- */
26
- collapse;
27
- /**
28
- * If `true`, the header will be translucent.
29
- * Only applies when the mode is `"ios"` and the device supports
30
- * [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).
31
- *
32
- * Note: In order to scroll content behind the header, the `fullscreen`
33
- * attribute needs to be set on the content.
34
- */
35
- translucent = false;
18
+ constructor() {
19
+ this.inheritedAttributes = {};
20
+ this.scrollHideCtrlPromise = null;
21
+ this.hasWarnedCollapse = false;
22
+ this.fadeCondenseSetupId = 0;
23
+ /**
24
+ * If `true`, the header will have a line at the bottom.
25
+ * TODO(ROU-10855): add support for this prop on ios/md themes
26
+ */
27
+ this.divider = false;
28
+ /**
29
+ * If `true`, the header will be translucent.
30
+ * Only applies when the theme is `"ios"` or `"ionic"` and the device supports
31
+ * [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).
32
+ *
33
+ * Note: In order to scroll content behind the header, the `fullscreen`
34
+ * attribute needs to be set on the content.
35
+ */
36
+ this.translucent = false;
37
+ this.setupScrollEffectHide = async (contentEl) => {
38
+ const setupPromise = createScrollHideController(contentEl, {
39
+ el: this.el,
40
+ cssVar: '--internal-header-hide-height',
41
+ hiddenClass: 'header-scroll-hidden',
42
+ contentPartnerClass: 'content-header-hide-scroll-partner',
43
+ contentHiddenClass: 'content-header-hide-scroll-hidden',
44
+ });
45
+ this.scrollHideCtrlPromise = setupPromise;
46
+ const controller = await setupPromise;
47
+ if (this.scrollHideCtrlPromise === setupPromise) {
48
+ this.scrollHideCtrlPromise = null;
49
+ controller.init();
50
+ this.scrollHideCtrl = controller;
51
+ }
52
+ };
53
+ this.setupFadeHeader = async (contentEl, condenseHeader) => {
54
+ const setupId = ++this.fadeCondenseSetupId;
55
+ const scrollEl = await getScrollElement(contentEl);
56
+ if (this.fadeCondenseSetupId !== setupId) {
57
+ return;
58
+ }
59
+ this.scrollEl = scrollEl;
60
+ /**
61
+ * Handle fading of toolbars on scroll
62
+ */
63
+ this.contentScrollCallback = () => {
64
+ handleHeaderFade(this.scrollEl, this.el, condenseHeader);
65
+ };
66
+ scrollEl.addEventListener('scroll', this.contentScrollCallback);
67
+ handleHeaderFade(this.scrollEl, this.el, condenseHeader);
68
+ };
69
+ }
36
70
  componentWillLoad() {
37
71
  this.inheritedAttributes = inheritAriaAttributes(this.el);
38
72
  }
@@ -46,48 +80,63 @@ export class Header {
46
80
  this.destroyCollapsibleHeader();
47
81
  }
48
82
  async checkCollapsibleHeader() {
49
- const mode = getIonMode(this);
50
- if (mode !== 'ios') {
83
+ const { scrollEffect, collapse } = this;
84
+ if (collapse !== undefined && scrollEffect === undefined && !this.hasWarnedCollapse) {
85
+ this.hasWarnedCollapse = true;
86
+ printIonWarning(`[ion-header] - The \`collapse\` property is deprecated. Use \`scrollEffect\` instead.\nExample: <ion-header scroll-effect="${collapse}">`, this.el);
87
+ }
88
+ const effect = scrollEffect !== null && scrollEffect !== void 0 ? scrollEffect : collapse;
89
+ // Skip teardown/rebuild if the effect hasn't changed.
90
+ // This prevents re-renders from destroying the scroll controller
91
+ // and resetting isHidden.
92
+ if (effect === this.activeEffect) {
51
93
  return;
52
94
  }
53
- const { collapse } = this;
54
- const hasCondense = collapse === 'condense';
55
- const hasFade = collapse === 'fade';
95
+ const hasHide = effect === 'hide';
96
+ const hasCondense = effect === 'condense';
97
+ const hasFade = effect === 'fade';
56
98
  this.destroyCollapsibleHeader();
57
- if (hasCondense) {
58
- const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
59
- const contentEl = pageEl ? findIonContent(pageEl) : null;
99
+ const appRootSelector = config.get('appRootSelector', 'ion-app');
100
+ const pageEl = this.el.closest(`${appRootSelector}, ion-page, .ion-page, page-inner`);
101
+ const contentEl = pageEl ? findIonContent(pageEl) : null;
102
+ if (hasHide && contentEl) {
103
+ this.activeEffect = effect;
104
+ await this.setupScrollEffectHide(contentEl);
105
+ return;
106
+ }
107
+ // condense/fade via the deprecated `collapse` prop are iOS-only.
108
+ // condense/fade via the new `scrollEffect` prop work in all themes.
109
+ const isModeRestricted = scrollEffect === undefined && getIonTheme(this) !== 'ios';
110
+ if (hasCondense && !isModeRestricted) {
60
111
  // Cloned elements are always needed in iOS transition
61
112
  writeTask(() => {
62
113
  const title = cloneElement('ion-title');
63
114
  title.size = 'large';
64
115
  cloneElement('ion-back-button');
65
116
  });
66
- await this.setupCondenseHeader(contentEl, pageEl);
117
+ const didSetup = await this.setupCondenseHeader(contentEl, pageEl);
118
+ if (didSetup) {
119
+ this.activeEffect = effect;
120
+ }
67
121
  }
68
- else if (hasFade) {
69
- const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
70
- const contentEl = pageEl ? findIonContent(pageEl) : null;
122
+ else if (hasFade && !isModeRestricted) {
71
123
  if (!contentEl) {
72
124
  printIonContentErrorMsg(this.el);
73
125
  return;
74
126
  }
75
- const condenseHeader = contentEl.querySelector('ion-header[collapse="condense"]');
127
+ const condenseHeader = contentEl.querySelector('ion-header[collapse="condense"],ion-header[scroll-effect="condense"]');
128
+ this.activeEffect = effect;
76
129
  await this.setupFadeHeader(contentEl, condenseHeader);
77
130
  }
78
131
  }
79
- setupFadeHeader = async (contentEl, condenseHeader) => {
80
- const scrollEl = (this.scrollEl = await getScrollElement(contentEl));
81
- /**
82
- * Handle fading of toolbars on scroll
83
- */
84
- this.contentScrollCallback = () => {
85
- handleHeaderFade(this.scrollEl, this.el, condenseHeader);
86
- };
87
- scrollEl.addEventListener('scroll', this.contentScrollCallback);
88
- handleHeaderFade(this.scrollEl, this.el, condenseHeader);
89
- };
90
132
  destroyCollapsibleHeader() {
133
+ this.activeEffect = undefined;
134
+ this.fadeCondenseSetupId++;
135
+ this.scrollHideCtrlPromise = null;
136
+ if (this.scrollHideCtrl) {
137
+ this.scrollHideCtrl.destroy();
138
+ this.scrollHideCtrl = undefined;
139
+ }
91
140
  if (this.intersectionObserver) {
92
141
  this.intersectionObserver.disconnect();
93
142
  this.intersectionObserver = undefined;
@@ -104,21 +153,40 @@ export class Header {
104
153
  async setupCondenseHeader(contentEl, pageEl) {
105
154
  if (!contentEl || !pageEl) {
106
155
  printIonContentErrorMsg(this.el);
107
- return;
156
+ return false;
108
157
  }
109
158
  if (typeof IntersectionObserver === 'undefined') {
110
- return;
159
+ return false;
160
+ }
161
+ const setupId = ++this.fadeCondenseSetupId;
162
+ const scrollEl = await getScrollElement(contentEl);
163
+ if (this.fadeCondenseSetupId !== setupId) {
164
+ return false;
165
+ }
166
+ this.scrollEl = scrollEl;
167
+ /**
168
+ * The condense effect requires an ion-title with size="large"
169
+ * in the condense header. Without it, there is nothing to
170
+ * collapse into the main header toolbar.
171
+ */
172
+ const hasLargeTitle = this.el.querySelector('ion-title[size="large"]') !== null;
173
+ if (!hasLargeTitle) {
174
+ printIonWarning('[ion-header] - The condense scroll effect requires an <ion-title size="large"> in the condense header.', this.el);
175
+ return false;
111
176
  }
112
- this.scrollEl = await getScrollElement(contentEl);
113
177
  const headers = pageEl.querySelectorAll('ion-header');
114
- this.collapsibleMainHeader = Array.from(headers).find((header) => header.collapse !== 'condense');
178
+ this.collapsibleMainHeader = Array.from(headers).find((header) => {
179
+ var _a;
180
+ const effect = (_a = header.scrollEffect) !== null && _a !== void 0 ? _a : header.collapse;
181
+ return effect !== 'condense';
182
+ });
115
183
  if (!this.collapsibleMainHeader) {
116
- return;
184
+ return false;
117
185
  }
118
186
  const mainHeaderIndex = createHeaderIndex(this.collapsibleMainHeader);
119
187
  const scrollHeaderIndex = createHeaderIndex(this.el);
120
188
  if (!mainHeaderIndex || !scrollHeaderIndex) {
121
- return;
189
+ return false;
122
190
  }
123
191
  setHeaderActive(mainHeaderIndex, false);
124
192
  setToolbarBackgroundOpacity(mainHeaderIndex.el, 0);
@@ -150,38 +218,79 @@ export class Header {
150
218
  this.collapsibleMainHeader.classList.add('header-collapse-main');
151
219
  }
152
220
  });
221
+ return true;
153
222
  }
154
223
  render() {
155
- const { translucent, inheritedAttributes } = this;
156
- const mode = getIonMode(this);
157
- const collapse = this.collapse || 'none';
158
- const isCondensed = collapse === 'condense';
224
+ const { translucent, inheritedAttributes, divider, scrollEffect, collapse } = this;
225
+ const theme = getIonTheme(this);
226
+ const effect = scrollEffect !== null && scrollEffect !== void 0 ? scrollEffect : collapse;
227
+ // condense/fade via the deprecated `collapse` prop are iOS-only.
228
+ const isModeRestricted = scrollEffect === undefined && theme !== 'ios';
229
+ const hasHide = effect === 'hide';
230
+ const hasCondense = effect === 'condense' && !isModeRestricted && this.el.querySelector('ion-title[size="large"]') !== null;
231
+ const hasFade = effect === 'fade' && !isModeRestricted;
232
+ // The condense header should be hidden when
233
+ // - deprecated collapse prop is used on non-iOS (mode restricted), or
234
+ // - scrollEffect="condense" is set but no ion-title[size="large"] is present
235
+ const isHiddenCondense = effect === 'condense' && !hasCondense;
159
236
  // banner role must be at top level, so remove role if inside a menu
160
- const roleType = getRoleType(hostContext('ion-menu', this.el), isCondensed, mode);
161
- return (h(Host, { key: '863c4568cd7b8c0ec55109f193bbbaed68a1346e', role: roleType, class: {
162
- [mode]: true,
237
+ const roleType = isHiddenCondense ? 'none' : getRoleType(hostContext('ion-menu', this.el));
238
+ return (h(Host, Object.assign({ key: '09f60ca014bb7b3a85d3c0a94e7989d5dbc43f46', role: roleType, class: {
239
+ [theme]: true,
163
240
  // Used internally for styling
164
- [`header-${mode}`]: true,
241
+ [`header-${theme}`]: true,
165
242
  [`header-translucent`]: this.translucent,
166
- [`header-collapse-${collapse}`]: true,
167
- [`header-translucent-${mode}`]: this.translucent,
168
- }, ...inheritedAttributes }, mode === 'ios' && translucent && h("div", { key: '25c3bdce328b0b35607d154c8b8374679313d881', class: "header-background" }), h("slot", { key: 'b44fab0a9be7920b9650da26117c783e751e1702' })));
243
+ ['header-collapse-condense']: hasCondense,
244
+ ['header-collapse-condense-hidden']: isHiddenCondense,
245
+ ['header-collapse-fade']: hasFade,
246
+ [`header-translucent-${theme}`]: this.translucent,
247
+ ['header-divider']: divider,
248
+ 'header-scroll-effect-hide': hasHide,
249
+ } }, inheritedAttributes), theme !== 'md' && translucent && h("div", { key: 'fd5ff245ae0166e5e1d50936cacc98c90625db48', class: "header-background" }), h("slot", { key: '1baa31af87b9eb6406a21073ec65afa191dfbb3d' })));
169
250
  }
170
251
  static get is() { return "ion-header"; }
171
252
  static get originalStyleUrls() {
172
253
  return {
173
254
  "ios": ["header.ios.scss"],
174
- "md": ["header.md.scss"]
255
+ "md": ["header.md.scss"],
256
+ "ionic": ["header.ionic.scss"]
175
257
  };
176
258
  }
177
259
  static get styleUrls() {
178
260
  return {
179
261
  "ios": ["header.ios.css"],
180
- "md": ["header.md.css"]
262
+ "md": ["header.md.css"],
263
+ "ionic": ["header.ionic.css"]
181
264
  };
182
265
  }
183
266
  static get properties() {
184
267
  return {
268
+ "scrollEffect": {
269
+ "type": "string",
270
+ "mutable": false,
271
+ "complexType": {
272
+ "original": "HeaderScrollEffect",
273
+ "resolved": "\"condense\" | \"fade\" | \"hide\" | undefined",
274
+ "references": {
275
+ "HeaderScrollEffect": {
276
+ "location": "import",
277
+ "path": "./header-interface",
278
+ "id": "src/components/header/header-interface.ts::HeaderScrollEffect",
279
+ "referenceLocation": "HeaderScrollEffect"
280
+ }
281
+ }
282
+ },
283
+ "required": false,
284
+ "optional": true,
285
+ "docs": {
286
+ "tags": [],
287
+ "text": "Describes the scroll effect that will be applied to the header.\n`\"hide\"` slides the header out of view when scrolling down and back in\nwhen scrolling up.\n`\"condense\"` collapses the large title into the main toolbar on scroll.\n`\"fade\"` fades the toolbar background on scroll."
288
+ },
289
+ "getter": false,
290
+ "setter": false,
291
+ "reflect": true,
292
+ "attribute": "scroll-effect"
293
+ },
185
294
  "collapse": {
186
295
  "type": "string",
187
296
  "mutable": false,
@@ -193,14 +302,37 @@ export class Header {
193
302
  "required": false,
194
303
  "optional": true,
195
304
  "docs": {
196
- "tags": [],
197
- "text": "Describes the scroll effect that will be applied to the header.\nOnly applies in iOS mode.\n\nTypically used for [Collapsible Large Titles](https://ionicframework.com/docs/api/title#collapsible-large-titles)"
305
+ "tags": [{
306
+ "name": "deprecated",
307
+ "text": "Use `scrollEffect` instead."
308
+ }],
309
+ "text": "Describes the scroll effect that will be applied to the header.\nOnly applies when the theme is `\"ios\"`.\n\nTypically used for [Collapsible Large Titles](https://ionicframework.com/docs/api/title#collapsible-large-titles)"
198
310
  },
199
311
  "getter": false,
200
312
  "setter": false,
201
313
  "reflect": false,
202
314
  "attribute": "collapse"
203
315
  },
316
+ "divider": {
317
+ "type": "boolean",
318
+ "mutable": false,
319
+ "complexType": {
320
+ "original": "boolean",
321
+ "resolved": "boolean",
322
+ "references": {}
323
+ },
324
+ "required": false,
325
+ "optional": false,
326
+ "docs": {
327
+ "tags": [],
328
+ "text": "If `true`, the header will have a line at the bottom.\nTODO(ROU-10855): add support for this prop on ios/md themes"
329
+ },
330
+ "getter": false,
331
+ "setter": false,
332
+ "reflect": false,
333
+ "attribute": "divider",
334
+ "defaultValue": "false"
335
+ },
204
336
  "translucent": {
205
337
  "type": "boolean",
206
338
  "mutable": false,
@@ -213,7 +345,7 @@ export class Header {
213
345
  "optional": false,
214
346
  "docs": {
215
347
  "tags": [],
216
- "text": "If `true`, the header will be translucent.\nOnly applies when the mode is `\"ios\"` and the device supports\n[`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).\n\nNote: In order to scroll content behind the header, the `fullscreen`\nattribute needs to be set on the content."
348
+ "text": "If `true`, the header will be translucent.\nOnly applies when the theme is `\"ios\"` or `\"ionic\"` and the device supports\n[`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).\n\nNote: In order to scroll content behind the header, the `fullscreen`\nattribute needs to be set on the content."
217
349
  },
218
350
  "getter": false,
219
351
  "setter": false,
@@ -1,3 +1,173 @@
1
+ ion-header {
2
+ display: block;
3
+ position: relative;
4
+ order: -1;
5
+ width: 100%;
6
+ }
7
+
8
+ ion-header ion-toolbar:first-of-type {
9
+ padding-top: var(--ion-safe-area-top, 0);
10
+ }
11
+
12
+ .header-collapse-fade ion-toolbar {
13
+ --opacity-scale: inherit;
14
+ }
15
+
16
+ /**
17
+ * Override styles applied during the page transition to prevent
18
+ * header flickering.
19
+ */
20
+ .header-collapse-fade.header-transitioning ion-toolbar {
21
+ --background: transparent;
22
+ --border-style: none;
23
+ }
24
+
25
+ .header-collapse-condense {
26
+ z-index: 9;
27
+ }
28
+
29
+ .header-collapse-condense ion-toolbar {
30
+ position: sticky;
31
+ top: 0;
32
+ }
33
+
34
+ .header-collapse-condense ion-toolbar:first-of-type {
35
+ /**
36
+ * The toolbar that contains the collapsible
37
+ * large title should not have safe area padding applied.
38
+ */
39
+ padding-top: 0px;
40
+ z-index: 1;
41
+ }
42
+
43
+ /**
44
+ * Large title toolbar should just use the content background
45
+ * since it needs to blend in with the header above it.
46
+ */
47
+ .header-collapse-condense ion-toolbar {
48
+ z-index: 0;
49
+ }
50
+
51
+ .header-collapse-condense ion-toolbar:last-of-type {
52
+ --border-width: 0px;
53
+ }
54
+
55
+ .header-collapse-condense ion-toolbar ion-searchbar {
56
+ padding-top: 0px;
57
+ padding-bottom: 13px;
58
+ }
59
+
60
+ .header-collapse-main {
61
+ --opacity-scale: 1;
62
+ }
63
+
64
+ .header-collapse-main ion-toolbar {
65
+ --opacity-scale: inherit;
66
+ }
67
+
68
+ .header-collapse-main ion-toolbar.in-toolbar ion-title,
69
+ .header-collapse-main ion-toolbar.in-toolbar ion-buttons {
70
+ transition: all 0.2s ease-in-out;
71
+ }
72
+
73
+ /**
74
+ * Large title toolbar should just use the content background
75
+ * since it needs to blend in with the header above it.
76
+ */
77
+ .header-collapse-condense ion-toolbar,
78
+ .header-collapse-condense-inactive.header-transitioning:not(.header-collapse-condense) ion-toolbar {
79
+ --background: var(--ion-background-color, #fff);
80
+ }
81
+
82
+ /**
83
+ * Override styles applied during the page transition to prevent
84
+ * header flickering.
85
+ */
86
+ .header-collapse-condense-inactive.header-transitioning:not(.header-collapse-condense) ion-toolbar {
87
+ --border-style: none;
88
+ --opacity-scale: 1;
89
+ }
90
+
91
+ .header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-title,
92
+ .header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-buttons.buttons-collapse {
93
+ opacity: 0;
94
+ pointer-events: none;
95
+ }
96
+
97
+ /**
98
+ * There is a bug in Safari where changing
99
+ * the opacity of an element in a scrollable container
100
+ * while rubber-banding causes the scroll position
101
+ * to jump to the top
102
+ */
103
+ .header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-title,
104
+ .header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-buttons.buttons-collapse {
105
+ visibility: hidden;
106
+ }
107
+
108
+ /**
109
+ * The main header is only hidden once the collapsible large
110
+ * title is configured. As a result, if the main header loads
111
+ * before the collapsible large title is configured then the
112
+ * main header will be visible briefly before being hidden
113
+ * by the collapsible large title.
114
+ *
115
+ * The following selector ensures that any main header
116
+ * on a page with a collapsible large title is hidden
117
+ * before the collapsible large title is configured.
118
+ * Once the collapsible large title is configured the main
119
+ * header will have the ".header-collapse-main" class, and
120
+ * this selector will no longer apply.
121
+ *
122
+ * The :has(...) part of the selector ensures a couple things:
123
+ * 1. This will only apply within a page view since the content
124
+ * must be a subsequent-sibling of the header (~ ion-content).
125
+ * 2. This will only apply when that content has an active condense
126
+ * header (the .header-collapse-condense class).
127
+ *
128
+ * We use opacity: 0 to avoid a layout shift.
129
+ * We use the class (not the attribute) because the class is only
130
+ * added when the condense effect is valid (large title present).
131
+ * The attribute alone is not sufficient since it would match even
132
+ * when the effect is guarded (e.g. no large title).
133
+ */
134
+ ion-header:not(.header-collapse-main):has(~ ion-content ion-header.header-collapse-condense) {
135
+ opacity: 0;
136
+ }
137
+
138
+ /**
139
+ * The deprecated collapse="condense" prop is iOS-only.
140
+ * On non-iOS themes, the condense header should be hidden since
141
+ * the JS won't activate it. Uses a class instead of an attribute
142
+ * selector because collapse is not a reflected prop, and framework
143
+ * proxies (Angular/Vue) bind it as a property.
144
+ */
145
+ .header-collapse-condense-hidden {
146
+ display: none;
147
+ }
148
+
149
+ ion-header.header-scroll-effect-hide {
150
+ transition: transform 300ms cubic-bezier(0, 0, 0.2, 1), opacity 300ms cubic-bezier(0, 0, 0.2, 1);
151
+ }
152
+
153
+ ion-header.header-scroll-effect-hide.header-scroll-hidden {
154
+ transform: translateY(-100%);
155
+ transition: transform 200ms cubic-bezier(0.4, 0, 1, 1), opacity 300ms cubic-bezier(0.4, 0, 1, 1);
156
+ opacity: 0;
157
+ }
158
+
159
+ @media (prefers-reduced-motion: reduce) {
160
+ ion-header.header-scroll-effect-hide,
161
+ ion-header.header-scroll-effect-hide.header-scroll-hidden {
162
+ transition: none;
163
+ }
164
+ }
165
+ /**
166
+ * Convert a pixels given value into rem
167
+ *
168
+ * @param pixels - Value in pixels to be converted (i.e. px)
169
+ * @param context (optional) - Baseline value
170
+ */
1
171
  /**
2
172
  * Convert a font size to a dynamic font size.
3
173
  * Fonts that participate in Dynamic Type should use
@@ -54,17 +224,15 @@
54
224
  * }
55
225
  */
56
226
  ion-header {
57
- display: block;
58
- position: relative;
59
- order: -1;
60
- width: 100%;
61
227
  z-index: 10;
62
228
  }
63
229
 
64
- ion-header ion-toolbar:first-of-type {
65
- padding-top: var(--ion-safe-area-top, 0);
66
- }
67
-
230
+ /**
231
+ * Convert a pixels given value into rem
232
+ *
233
+ * @param pixels - Value in pixels to be converted (i.e. px)
234
+ * @param context (optional) - Baseline value
235
+ */
68
236
  /**
69
237
  * Convert a font size to a dynamic font size.
70
238
  * Fonts that participate in Dynamic Type should use
@@ -124,8 +292,30 @@ ion-header ion-toolbar:first-of-type {
124
292
  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
125
293
  }
126
294
 
295
+ /**
296
+ * The condense header should blend seamlessly with the
297
+ * main header above it, so remove the box-shadow.
298
+ */
127
299
  .header-md.header-collapse-condense {
128
- display: none;
300
+ box-shadow: none;
301
+ }
302
+
303
+ /**
304
+ * When the condense header is active (large title visible),
305
+ * the main header's box-shadow should be hidden so it blends
306
+ * with the condense header below it.
307
+ */
308
+ .header-md.header-collapse-condense-inactive:not(.header-collapse-condense) {
309
+ box-shadow: none;
310
+ }
311
+
312
+ /**
313
+ * The fade effect fades the toolbar background via --opacity-scale,
314
+ * but box-shadow is not affected by that variable. Remove it so
315
+ * the shadow doesn't persist when the background is faded out.
316
+ */
317
+ .header-md.header-collapse-fade {
318
+ box-shadow: none;
129
319
  }
130
320
 
131
321
  .header-md.ion-no-border {
@@ -50,13 +50,14 @@ export const handleContentScroll = (scrollEl, scrollHeaderIndex, contentEl) => {
50
50
  });
51
51
  };
52
52
  export const setToolbarBackgroundOpacity = (headerEl, opacity) => {
53
+ var _a;
53
54
  /**
54
55
  * Fading in the backdrop opacity
55
56
  * should happen after the large title
56
57
  * has collapsed, so it is handled
57
58
  * by handleHeaderFade()
58
59
  */
59
- if (headerEl.collapse === 'fade') {
60
+ if (((_a = headerEl.scrollEffect) !== null && _a !== void 0 ? _a : headerEl.collapse) === 'fade') {
60
61
  return;
61
62
  }
62
63
  if (opacity === undefined) {
@@ -214,23 +215,15 @@ export const handleHeaderFade = (scrollEl, baseEl, condenseHeader) => {
214
215
  * Get the role type for the ion-header.
215
216
  *
216
217
  * @param isInsideMenu If ion-header is inside ion-menu.
217
- * @param isCondensed If ion-header has collapse="condense".
218
- * @param mode The current mode.
219
- * @returns 'none' if inside ion-menu or if condensed in md
220
- * mode, otherwise 'banner'.
218
+ * @returns 'none' if inside ion-menu, otherwise 'banner'.
219
+ * Condensed headers start as 'banner' and have their role
220
+ * toggled dynamically by setHeaderActive() on scroll.
221
221
  */
222
- export const getRoleType = (isInsideMenu, isCondensed, mode) => {
222
+ export const getRoleType = (isInsideMenu) => {
223
223
  // If the header is inside a menu, it should not have the banner role.
224
224
  if (isInsideMenu) {
225
225
  return ROLE_NONE;
226
226
  }
227
- /**
228
- * Only apply role="none" to `md` mode condensed headers
229
- * since the large header is never shown.
230
- */
231
- if (isCondensed && mode === 'md') {
232
- return ROLE_NONE;
233
- }
234
227
  // Default to banner role.
235
228
  return ROLE_BANNER;
236
229
  };