@ionic/core 8.7.5-nightly.20250924 → 8.7.6-dev.11758808200.14faa1a0

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 (930) hide show
  1. package/components/action-sheet.js +13 -9
  2. package/components/alert.js +14 -11
  3. package/components/animation.js +1 -1
  4. package/components/backdrop.js +9 -6
  5. package/components/button.js +41 -10
  6. package/components/buttons.js +11 -8
  7. package/components/capacitor.js +1 -1
  8. package/components/caret-down.js +6 -0
  9. package/components/caret-left.js +6 -0
  10. package/components/caret-right.js +6 -0
  11. package/components/checkbox.js +31 -12
  12. package/components/content.js +14 -12
  13. package/components/data.js +5 -5
  14. package/components/focus-visible.js +23 -1
  15. package/components/framework-delegate.js +3 -1
  16. package/components/header.js +28 -16
  17. package/components/helpers.js +42 -3
  18. package/components/index5.js +8 -8
  19. package/components/index6.js +1 -1
  20. package/components/index7.js +111 -150
  21. package/components/index8.js +150 -111
  22. package/components/input-shims.js +2 -2
  23. package/components/input.utils.js +1 -1
  24. package/components/ion-accordion-group.js +23 -5
  25. package/components/ion-accordion.js +32 -21
  26. package/components/ion-app.js +12 -77
  27. package/components/ion-avatar.js +58 -5
  28. package/components/ion-back-button.js +27 -19
  29. package/components/ion-badge.js +73 -9
  30. package/components/ion-breadcrumb.js +43 -10
  31. package/components/ion-breadcrumbs.js +8 -5
  32. package/components/ion-card-content.js +10 -7
  33. package/components/ion-card-header.js +9 -6
  34. package/components/ion-card-subtitle.js +8 -5
  35. package/components/ion-card-title.js +8 -5
  36. package/components/ion-card.js +21 -9
  37. package/components/ion-chip.js +53 -8
  38. package/components/ion-col.js +51 -50
  39. package/components/ion-datetime-button.js +8 -5
  40. package/components/ion-datetime.js +98 -21
  41. package/components/ion-divider.d.ts +11 -0
  42. package/components/ion-divider.js +70 -0
  43. package/components/ion-fab-button.js +31 -15
  44. package/components/ion-fab-list.js +5 -5
  45. package/components/ion-fab.js +6 -6
  46. package/components/ion-footer.js +18 -13
  47. package/components/ion-grid.js +5 -5
  48. package/components/ion-img.js +5 -2
  49. package/components/ion-infinite-scroll-content.js +11 -8
  50. package/components/ion-infinite-scroll.js +78 -6
  51. package/components/ion-input-otp.js +9 -6
  52. package/components/ion-input-password-toggle.js +51 -13
  53. package/components/ion-input.js +120 -28
  54. package/components/ion-item-divider.js +8 -5
  55. package/components/ion-item-group.js +8 -5
  56. package/components/ion-item-option.js +36 -9
  57. package/components/ion-item-options.js +10 -7
  58. package/components/ion-item-sliding.js +5 -5
  59. package/components/ion-loading.js +12 -9
  60. package/components/ion-menu-button.js +26 -10
  61. package/components/ion-menu-toggle.js +5 -5
  62. package/components/ion-menu.js +10 -8
  63. package/components/ion-nav-link.js +1 -1
  64. package/components/ion-nav.js +7 -5
  65. package/components/ion-note.js +8 -5
  66. package/components/ion-picker-legacy.js +7 -7
  67. package/components/ion-progress-bar.js +25 -7
  68. package/components/ion-range.js +12 -9
  69. package/components/ion-refresher-content.js +23 -8
  70. package/components/ion-refresher.js +10 -7
  71. package/components/ion-reorder-group.js +5 -5
  72. package/components/ion-reorder.js +30 -5
  73. package/components/ion-router-link.js +6 -6
  74. package/components/ion-router-outlet.js +4 -4
  75. package/components/ion-row.js +6 -3
  76. package/components/ion-searchbar.js +137 -23
  77. package/components/ion-segment-button.js +10 -7
  78. package/components/ion-segment-content.js +1 -1
  79. package/components/ion-segment-view.js +5 -2
  80. package/components/ion-segment.js +10 -7
  81. package/components/ion-select-option.js +5 -2
  82. package/components/ion-select.js +117 -33
  83. package/components/ion-skeleton-text.js +5 -5
  84. package/components/ion-split-pane.js +11 -8
  85. package/components/ion-tab-bar.js +39 -9
  86. package/components/ion-tab-button.js +25 -7
  87. package/components/ion-tab.js +2 -2
  88. package/components/ion-tabs.js +2 -2
  89. package/components/ion-text.js +5 -5
  90. package/components/ion-textarea.js +52 -11
  91. package/components/ion-thumbnail.js +5 -2
  92. package/components/ion-toast.js +37 -12
  93. package/components/ion-toggle.js +74 -17
  94. package/components/ionic-global.js +349 -15
  95. package/components/ios.transition.js +1 -0
  96. package/components/item.js +39 -14
  97. package/components/keyboard-controller.js +4 -2
  98. package/components/label.js +8 -5
  99. package/components/list-header.js +10 -7
  100. package/components/list.js +27 -6
  101. package/components/list2.js +6 -0
  102. package/components/modal.js +60 -22
  103. package/components/notch-controller.js +1 -1
  104. package/components/overlays.js +42 -21
  105. package/components/picker-column-option.js +8 -5
  106. package/components/picker-column.js +7 -8
  107. package/components/picker-column2.js +4 -4
  108. package/components/picker.js +7 -4
  109. package/components/popover.js +12 -9
  110. package/components/radio-group.js +10 -5
  111. package/components/radio.js +11 -8
  112. package/components/ripple-effect.js +15 -7
  113. package/components/select-modal.js +4 -4
  114. package/components/select-popover.js +8 -2
  115. package/components/spinner.js +31 -8
  116. package/components/status-tap.js +1 -1
  117. package/components/title.js +10 -7
  118. package/components/toolbar.js +153 -9
  119. package/components/x.js +6 -0
  120. package/css/core.css +1 -1
  121. package/css/core.css.map +1 -1
  122. package/css/display.css +1 -1
  123. package/css/display.css.map +1 -1
  124. package/css/flex-utils.css +1 -1
  125. package/css/flex-utils.css.map +1 -1
  126. package/css/float-elements.css.map +1 -1
  127. package/css/global.bundle.css.map +1 -1
  128. package/css/ionic/bundle.ionic.css +1 -0
  129. package/css/ionic/bundle.ionic.css.map +1 -0
  130. package/css/ionic/core.ionic.css +1 -0
  131. package/css/ionic/core.ionic.css.map +1 -0
  132. package/css/ionic/global.bundle.ionic.css +1 -0
  133. package/css/ionic/global.bundle.ionic.css.map +1 -0
  134. package/css/ionic/ionic-swiper.ionic.css +1 -0
  135. package/css/ionic/ionic-swiper.ionic.css.map +1 -0
  136. package/css/ionic/link.ionic.css +1 -0
  137. package/css/ionic/link.ionic.css.map +1 -0
  138. package/css/ionic/structure.ionic.css +1 -0
  139. package/css/ionic/structure.ionic.css.map +1 -0
  140. package/css/ionic/typography.ionic.css +1 -0
  141. package/css/ionic/typography.ionic.css.map +1 -0
  142. package/css/ionic/utils.bundle.ionic.css +1 -0
  143. package/css/ionic/utils.bundle.ionic.css.map +1 -0
  144. package/css/ionic-swiper.css +1 -1
  145. package/css/ionic-swiper.css.map +1 -1
  146. package/css/ionic.bundle.css +1 -1
  147. package/css/ionic.bundle.css.map +1 -1
  148. package/css/normalize.css.map +1 -1
  149. package/css/padding.css.map +1 -1
  150. package/css/palettes/dark.always.css.map +1 -1
  151. package/css/palettes/dark.class.css.map +1 -1
  152. package/css/palettes/dark.system.css.map +1 -1
  153. package/css/palettes/high-contrast-dark.always.css.map +1 -1
  154. package/css/palettes/high-contrast-dark.class.css.map +1 -1
  155. package/css/palettes/high-contrast-dark.system.css.map +1 -1
  156. package/css/palettes/high-contrast.always.css.map +1 -1
  157. package/css/palettes/high-contrast.class.css.map +1 -1
  158. package/css/palettes/high-contrast.system.css.map +1 -1
  159. package/css/structure.css.map +1 -1
  160. package/css/text-alignment.css.map +1 -1
  161. package/css/text-transformation.css.map +1 -1
  162. package/css/typography.css.map +1 -1
  163. package/css/utils.bundle.css +1 -1
  164. package/css/utils.bundle.css.map +1 -1
  165. package/dist/cjs/{animation-ZJ1lAkZD.js → animation-BXRtNUgm.js} +2 -2
  166. package/dist/cjs/{app-globals-77ZfuXXk.js → app-globals-x_8DXqdl.js} +1 -1
  167. package/dist/cjs/{button-active-BzZenWWH.js → button-active-BcEaeF5Y.js} +1 -1
  168. package/dist/cjs/{capacitor-DmA66EwP.js → capacitor-CVcQYFDK.js} +3 -3
  169. package/dist/cjs/caret-down-vtVgfXIs.js +8 -0
  170. package/dist/cjs/caret-left-CxZXLRv5.js +8 -0
  171. package/dist/cjs/caret-right-CRCgv98E.js +8 -0
  172. package/dist/cjs/{data-DW6ofvJ8.js → data-Crxp8jrQ.js} +5 -5
  173. package/dist/cjs/{focus-visible-CCvKiLh3.js → focus-visible-BIj-I3-C.js} +24 -0
  174. package/dist/cjs/{framework-delegate-WkyjrnCx.js → framework-delegate-D94PxJL6.js} +4 -2
  175. package/dist/cjs/{haptic-ClPPQ_PS.js → haptic-r0GBrUII.js} +1 -1
  176. package/dist/cjs/{helpers-DgwmcYAu.js → helpers-CYFB2_7O.js} +41 -2
  177. package/dist/cjs/{index-D24wggHR.js → index-DgkpUJvi.js} +15 -15
  178. package/dist/cjs/{index-BzEyuIww.js → index-DkmXWuZ7.js} +3 -3
  179. package/dist/cjs/{index-Cc5PNMyz.js → index-DsE1tD-q.js} +1 -1
  180. package/dist/cjs/{index-bGpoPC4u.js → index-MoROIJ3n.js} +8 -7
  181. package/dist/cjs/index.cjs.js +10 -11
  182. package/dist/cjs/{input-shims-CLI_OrmU.js → input-shims-temHXqvt.js} +17 -16
  183. package/dist/cjs/{input.utils-B2hZ5tX6.js → input.utils-8JmSrYpP.js} +5 -5
  184. package/dist/cjs/ion-accordion_2.cjs.entry.js +55 -26
  185. package/dist/cjs/ion-action-sheet.cjs.entry.js +21 -18
  186. package/dist/cjs/ion-alert.cjs.entry.js +22 -20
  187. package/dist/cjs/ion-app_8.cjs.entry.js +243 -144
  188. package/dist/cjs/ion-avatar_3.cjs.entry.js +123 -11
  189. package/dist/cjs/ion-back-button.cjs.entry.js +28 -19
  190. package/dist/cjs/ion-backdrop.cjs.entry.js +9 -6
  191. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +51 -15
  192. package/dist/cjs/ion-button_2.cjs.entry.js +43 -11
  193. package/dist/cjs/ion-card_5.cjs.entry.js +53 -29
  194. package/dist/cjs/ion-checkbox.cjs.entry.js +31 -13
  195. package/dist/cjs/ion-chip.cjs.entry.js +48 -7
  196. package/dist/cjs/ion-col_3.cjs.entry.js +53 -56
  197. package/dist/cjs/ion-datetime-button.cjs.entry.js +11 -7
  198. package/dist/cjs/ion-datetime_3.cjs.entry.js +113 -38
  199. package/dist/cjs/ion-divider.cjs.entry.js +51 -0
  200. package/dist/cjs/ion-fab_3.cjs.entry.js +41 -25
  201. package/dist/cjs/ion-img.cjs.entry.js +7 -3
  202. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +89 -14
  203. package/dist/cjs/ion-input-otp.cjs.entry.js +11 -7
  204. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +50 -12
  205. package/dist/cjs/ion-input.cjs.entry.js +120 -30
  206. package/dist/cjs/ion-item-option_3.cjs.entry.js +48 -19
  207. package/dist/cjs/ion-item_8.cjs.entry.js +105 -45
  208. package/dist/cjs/ion-loading.cjs.entry.js +17 -15
  209. package/dist/cjs/ion-menu_3.cjs.entry.js +44 -26
  210. package/dist/cjs/ion-modal.cjs.entry.js +108 -71
  211. package/dist/cjs/ion-nav_2.cjs.entry.js +13 -10
  212. package/dist/cjs/ion-picker-column-option.cjs.entry.js +10 -6
  213. package/dist/cjs/ion-picker-column.cjs.entry.js +12 -12
  214. package/dist/cjs/ion-picker.cjs.entry.js +9 -5
  215. package/dist/cjs/ion-popover.cjs.entry.js +18 -16
  216. package/dist/cjs/ion-progress-bar.cjs.entry.js +25 -7
  217. package/dist/cjs/ion-radio_2.cjs.entry.js +22 -13
  218. package/dist/cjs/ion-range.cjs.entry.js +14 -10
  219. package/dist/cjs/ion-refresher_2.cjs.entry.js +36 -18
  220. package/dist/cjs/ion-reorder_2.cjs.entry.js +36 -12
  221. package/dist/cjs/ion-ripple-effect.cjs.entry.js +14 -6
  222. package/dist/cjs/ion-route_4.cjs.entry.js +8 -7
  223. package/dist/cjs/ion-searchbar.cjs.entry.js +134 -21
  224. package/dist/cjs/ion-segment-content.cjs.entry.js +1 -1
  225. package/dist/cjs/ion-segment-view.cjs.entry.js +5 -2
  226. package/dist/cjs/ion-segment_2.cjs.entry.js +21 -14
  227. package/dist/cjs/ion-select-modal.cjs.entry.js +8 -9
  228. package/dist/cjs/ion-select_3.cjs.entry.js +129 -38
  229. package/dist/cjs/ion-spinner.cjs.entry.js +28 -6
  230. package/dist/cjs/ion-split-pane.cjs.entry.js +11 -8
  231. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +65 -20
  232. package/dist/cjs/ion-tab_2.cjs.entry.js +7 -6
  233. package/dist/cjs/ion-text.cjs.entry.js +5 -5
  234. package/dist/cjs/ion-textarea.cjs.entry.js +55 -15
  235. package/dist/cjs/ion-toast.cjs.entry.js +66 -43
  236. package/dist/cjs/ion-toggle.cjs.entry.js +78 -21
  237. package/dist/cjs/ionic-global-RZLbse4y.js +491 -0
  238. package/dist/cjs/ionic.cjs.js +3 -3
  239. package/dist/cjs/{ios.transition-DEitrLlG.js → ios.transition-CWI22viS.js} +6 -4
  240. package/dist/cjs/{keyboard-UuAS4D_9.js → keyboard-BZdohzZu.js} +1 -1
  241. package/dist/cjs/{keyboard-hHzlEQpk.js → keyboard-ByZ4Ulg3.js} +4 -3
  242. package/dist/cjs/{keyboard-controller-GXBiBRKS.js → keyboard-controller-B-dr5t4a.js} +11 -9
  243. package/dist/cjs/list-a-7GSA6K.js +8 -0
  244. package/dist/cjs/loader.cjs.js +3 -3
  245. package/dist/cjs/{md.transition-BHtGC-Wg.js → md.transition-BxMmPf_q.js} +5 -4
  246. package/dist/cjs/{notch-controller-Bf5Rr4R5.js → notch-controller-BmjMp6Co.js} +4 -4
  247. package/dist/cjs/{overlays-v_jc1Hok.js → overlays-DEgXBxFs.js} +47 -26
  248. package/dist/cjs/{status-tap-D9YPr62n.js → status-tap-D-MulHQM.js} +3 -2
  249. package/dist/cjs/{swipe-back-C1wRtoww.js → swipe-back-C5W5r-1A.js} +2 -1
  250. package/dist/cjs/x-BTF99yFH.js +8 -0
  251. package/dist/collection/collection-manifest.json +1 -0
  252. package/dist/collection/components/accordion/accordion.ionic.css +196 -0
  253. package/dist/collection/components/accordion/accordion.ios.css +73 -58
  254. package/dist/collection/components/accordion/accordion.js +36 -26
  255. package/dist/collection/components/accordion/accordion.md.css +67 -59
  256. package/dist/collection/components/accordion-group/accordion-group.ionic.css +93 -0
  257. package/dist/collection/components/accordion-group/accordion-group.ios.css +16 -4
  258. package/dist/collection/components/accordion-group/accordion-group.js +44 -8
  259. package/dist/collection/components/accordion-group/accordion-group.md.css +22 -4
  260. package/dist/collection/components/action-sheet/action-sheet.ios.css +18 -6
  261. package/dist/collection/components/action-sheet/action-sheet.js +15 -11
  262. package/dist/collection/components/action-sheet/action-sheet.md.css +17 -5
  263. package/dist/collection/components/alert/alert.ios.css +19 -1
  264. package/dist/collection/components/alert/alert.js +16 -13
  265. package/dist/collection/components/alert/alert.md.css +19 -1
  266. package/dist/collection/components/app/app.js +15 -78
  267. package/dist/collection/components/avatar/avatar.ionic.css +391 -0
  268. package/dist/collection/components/avatar/avatar.ios.css +7 -33
  269. package/dist/collection/components/avatar/avatar.js +120 -4
  270. package/dist/collection/components/avatar/avatar.md.css +51 -0
  271. package/dist/collection/components/back-button/back-button.ios.css +60 -48
  272. package/dist/collection/components/back-button/back-button.js +27 -19
  273. package/dist/collection/components/back-button/back-button.md.css +60 -48
  274. package/dist/collection/components/backdrop/backdrop.ionic.css +109 -0
  275. package/dist/collection/components/backdrop/backdrop.ios.css +56 -19
  276. package/dist/collection/components/backdrop/backdrop.js +12 -6
  277. package/dist/collection/components/backdrop/backdrop.md.css +56 -19
  278. package/dist/collection/components/badge/badge.ionic.css +275 -0
  279. package/dist/collection/components/badge/badge.ios.css +139 -12
  280. package/dist/collection/components/badge/badge.js +145 -9
  281. package/dist/collection/components/badge/badge.md.css +123 -12
  282. package/dist/collection/components/breadcrumb/breadcrumb.ios.css +20 -8
  283. package/dist/collection/components/breadcrumb/breadcrumb.js +43 -11
  284. package/dist/collection/components/breadcrumb/breadcrumb.md.css +20 -8
  285. package/dist/collection/components/breadcrumbs/breadcrumbs.ios.css +6 -0
  286. package/dist/collection/components/breadcrumbs/breadcrumbs.js +11 -9
  287. package/dist/collection/components/breadcrumbs/breadcrumbs.md.css +6 -0
  288. package/dist/collection/components/button/button.ionic.css +620 -0
  289. package/dist/collection/components/button/button.ios.css +135 -46
  290. package/dist/collection/components/button/button.js +48 -17
  291. package/dist/collection/components/button/button.md.css +126 -50
  292. package/dist/collection/components/buttons/buttons.ionic.css +97 -0
  293. package/dist/collection/components/buttons/buttons.ios.css +59 -7
  294. package/dist/collection/components/buttons/buttons.js +15 -9
  295. package/dist/collection/components/buttons/buttons.md.css +55 -3
  296. package/dist/collection/components/card/card.ionic.css +144 -0
  297. package/dist/collection/components/card/card.ios.css +65 -14
  298. package/dist/collection/components/card/card.js +41 -10
  299. package/dist/collection/components/card/card.md.css +65 -14
  300. package/dist/collection/components/card-content/card-content.ionic.css +92 -0
  301. package/dist/collection/components/card-content/card-content.ios.css +16 -1
  302. package/dist/collection/components/card-content/card-content.js +11 -8
  303. package/dist/collection/components/card-content/card-content.md.css +16 -1
  304. package/dist/collection/components/card-header/card-header.ionic.css +85 -0
  305. package/dist/collection/components/card-header/card-header.ios.css +27 -15
  306. package/dist/collection/components/card-header/card-header.js +13 -10
  307. package/dist/collection/components/card-header/card-header.md.css +27 -15
  308. package/dist/collection/components/card-subtitle/card-subtitle.ionic.css +144 -0
  309. package/dist/collection/components/card-subtitle/card-subtitle.ios.css +12 -0
  310. package/dist/collection/components/card-subtitle/card-subtitle.js +11 -8
  311. package/dist/collection/components/card-subtitle/card-subtitle.md.css +12 -0
  312. package/dist/collection/components/card-title/card-title.ios.css +73 -0
  313. package/dist/collection/components/card-title/card-title.js +11 -8
  314. package/dist/collection/components/card-title/card-title.md.css +73 -0
  315. package/dist/collection/components/checkbox/checkbox.ionic.css +539 -0
  316. package/dist/collection/components/checkbox/checkbox.ios.css +161 -101
  317. package/dist/collection/components/checkbox/checkbox.js +70 -14
  318. package/dist/collection/components/checkbox/checkbox.md.css +162 -102
  319. package/dist/collection/components/chip/chip.ionic.css +228 -0
  320. package/dist/collection/components/chip/chip.ios.css +67 -14
  321. package/dist/collection/components/chip/chip.js +108 -8
  322. package/dist/collection/components/chip/chip.md.css +67 -14
  323. package/dist/collection/components/col/col.css +192 -4
  324. package/dist/collection/components/col/col.js +210 -61
  325. package/dist/collection/components/content/content.css +8 -2
  326. package/dist/collection/components/content/content.js +16 -11
  327. package/dist/collection/components/datetime/datetime.ionic.css +697 -0
  328. package/dist/collection/components/datetime/datetime.ios.css +242 -86
  329. package/dist/collection/components/datetime/datetime.js +98 -20
  330. package/dist/collection/components/datetime/datetime.md.css +242 -86
  331. package/dist/collection/components/datetime/utils/data.js +5 -5
  332. package/dist/collection/components/datetime-button/datetime-button.ios.css +6 -0
  333. package/dist/collection/components/datetime-button/datetime-button.js +11 -8
  334. package/dist/collection/components/datetime-button/datetime-button.md.css +6 -0
  335. package/dist/collection/components/divider/divider.ionic.css +148 -0
  336. package/dist/collection/components/divider/divider.ios.css +87 -0
  337. package/dist/collection/components/divider/divider.js +94 -0
  338. package/dist/collection/components/divider/divider.md.css +87 -0
  339. package/dist/collection/components/fab/fab.css +25 -1
  340. package/dist/collection/components/fab/fab.js +9 -5
  341. package/dist/collection/components/fab-button/fab-button.ios.css +18 -6
  342. package/dist/collection/components/fab-button/fab-button.js +36 -21
  343. package/dist/collection/components/fab-button/fab-button.md.css +20 -8
  344. package/dist/collection/components/fab-list/fab-list.css +12 -0
  345. package/dist/collection/components/fab-list/fab-list.js +9 -5
  346. package/dist/collection/components/footer/footer.ios.css +14 -2
  347. package/dist/collection/components/footer/footer.js +21 -16
  348. package/dist/collection/components/footer/footer.md.css +12 -0
  349. package/dist/collection/components/grid/grid.css +12 -0
  350. package/dist/collection/components/grid/grid.js +9 -5
  351. package/dist/collection/components/header/header.ionic.css +98 -0
  352. package/dist/collection/components/header/header.ios.css +25 -10
  353. package/dist/collection/components/header/header.js +49 -18
  354. package/dist/collection/components/header/header.md.css +23 -8
  355. package/dist/collection/components/img/img.js +8 -2
  356. package/dist/collection/components/infinite-scroll/infinite-scroll.js +100 -5
  357. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.ios.css +12 -0
  358. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +16 -10
  359. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.md.css +12 -0
  360. package/dist/collection/components/input/input.ionic.css +881 -0
  361. package/dist/collection/components/input/input.ios.css +223 -140
  362. package/dist/collection/components/input/input.js +149 -38
  363. package/dist/collection/components/input/input.md.css +193 -212
  364. package/dist/collection/components/input-otp/input-otp.ionic.css +369 -0
  365. package/dist/collection/components/input-otp/input-otp.ios.css +106 -60
  366. package/dist/collection/components/input-otp/input-otp.js +7 -5
  367. package/dist/collection/components/input-otp/input-otp.md.css +106 -60
  368. package/dist/collection/components/input-password-toggle/input-password-toggle.ionic.css +78 -0
  369. package/dist/collection/components/input-password-toggle/input-password-toggle.js +48 -12
  370. package/dist/collection/components/input-password-toggle/input-password-toggle.native.css +61 -0
  371. package/dist/collection/components/item/item.ionic.css +499 -0
  372. package/dist/collection/components/item/item.ios.css +109 -69
  373. package/dist/collection/components/item/item.js +43 -19
  374. package/dist/collection/components/item/item.md.css +120 -68
  375. package/dist/collection/components/item-divider/item-divider.ios.css +18 -0
  376. package/dist/collection/components/item-divider/item-divider.js +11 -8
  377. package/dist/collection/components/item-divider/item-divider.md.css +18 -0
  378. package/dist/collection/components/item-group/item-group.ios.css +12 -0
  379. package/dist/collection/components/item-group/item-group.js +13 -7
  380. package/dist/collection/components/item-group/item-group.md.css +12 -0
  381. package/dist/collection/components/item-option/item-option.ionic.css +278 -0
  382. package/dist/collection/components/item-option/item-option.ios.css +136 -29
  383. package/dist/collection/components/item-option/item-option.js +73 -9
  384. package/dist/collection/components/item-option/item-option.md.css +136 -29
  385. package/dist/collection/components/item-options/item-options.ionic.css +221 -0
  386. package/dist/collection/components/item-options/item-options.ios.css +77 -34
  387. package/dist/collection/components/item-options/item-options.js +13 -7
  388. package/dist/collection/components/item-options/item-options.md.css +77 -34
  389. package/dist/collection/components/item-sliding/item-sliding.css +6 -0
  390. package/dist/collection/components/item-sliding/item-sliding.js +8 -4
  391. package/dist/collection/components/label/label.ios.css +18 -0
  392. package/dist/collection/components/label/label.js +11 -8
  393. package/dist/collection/components/label/label.md.css +18 -0
  394. package/dist/collection/components/list/list.ionic.css +212 -0
  395. package/dist/collection/components/list/list.ios.css +54 -14
  396. package/dist/collection/components/list/list.js +48 -9
  397. package/dist/collection/components/list/list.md.css +56 -16
  398. package/dist/collection/components/list-header/list-header.ionic.css +190 -0
  399. package/dist/collection/components/list-header/list-header.ios.css +82 -38
  400. package/dist/collection/components/list-header/list-header.js +11 -8
  401. package/dist/collection/components/list-header/list-header.md.css +82 -38
  402. package/dist/collection/components/loading/loading.ios.css +13 -1
  403. package/dist/collection/components/loading/loading.js +14 -11
  404. package/dist/collection/components/loading/loading.md.css +13 -1
  405. package/dist/collection/components/menu/menu.ios.css +15 -3
  406. package/dist/collection/components/menu/menu.js +12 -7
  407. package/dist/collection/components/menu/menu.md.css +15 -3
  408. package/dist/collection/components/menu-button/menu-button.ionic.css +236 -0
  409. package/dist/collection/components/menu-button/menu-button.ios.css +48 -14
  410. package/dist/collection/components/menu-button/menu-button.js +26 -10
  411. package/dist/collection/components/menu-button/menu-button.md.css +49 -15
  412. package/dist/collection/components/menu-toggle/menu-toggle.js +8 -5
  413. package/dist/collection/components/modal/animations/sheet.js +8 -2
  414. package/dist/collection/components/modal/gestures/sheet.js +22 -8
  415. package/dist/collection/components/modal/modal.ionic.css +241 -0
  416. package/dist/collection/components/modal/modal.ios.css +174 -70
  417. package/dist/collection/components/modal/modal.js +48 -11
  418. package/dist/collection/components/modal/modal.md.css +174 -70
  419. package/dist/collection/components/nav/nav.css +7 -1
  420. package/dist/collection/components/nav/nav.js +11 -5
  421. package/dist/collection/components/nav-link/nav-link.js +5 -1
  422. package/dist/collection/components/note/note.ios.css +12 -0
  423. package/dist/collection/components/note/note.js +11 -8
  424. package/dist/collection/components/note/note.md.css +12 -0
  425. package/dist/collection/components/picker/picker.ios.css +15 -3
  426. package/dist/collection/components/picker/picker.js +8 -5
  427. package/dist/collection/components/picker/picker.md.css +15 -3
  428. package/dist/collection/components/picker-column/picker-column.css +9 -2
  429. package/dist/collection/components/picker-column/picker-column.js +8 -7
  430. package/dist/collection/components/picker-column-option/picker-column-option.ios.css +6 -0
  431. package/dist/collection/components/picker-column-option/picker-column-option.js +13 -7
  432. package/dist/collection/components/picker-column-option/picker-column-option.md.css +6 -0
  433. package/dist/collection/components/picker-legacy/picker.ios.css +13 -1
  434. package/dist/collection/components/picker-legacy/picker.js +7 -6
  435. package/dist/collection/components/picker-legacy/picker.md.css +13 -1
  436. package/dist/collection/components/picker-legacy-column/picker-column.ios.css +12 -0
  437. package/dist/collection/components/picker-legacy-column/picker-column.js +4 -4
  438. package/dist/collection/components/picker-legacy-column/picker-column.md.css +12 -0
  439. package/dist/collection/components/popover/popover.ios.css +13 -1
  440. package/dist/collection/components/popover/popover.js +17 -14
  441. package/dist/collection/components/popover/popover.md.css +13 -1
  442. package/dist/collection/components/progress-bar/progress-bar.ionic.css +287 -0
  443. package/dist/collection/components/progress-bar/progress-bar.ios.css +48 -17
  444. package/dist/collection/components/progress-bar/progress-bar.js +43 -7
  445. package/dist/collection/components/progress-bar/progress-bar.md.css +48 -17
  446. package/dist/collection/components/radio/radio.ionic.css +422 -0
  447. package/dist/collection/components/radio/radio.ios.css +134 -91
  448. package/dist/collection/components/radio/radio.js +12 -9
  449. package/dist/collection/components/radio/radio.md.css +134 -91
  450. package/dist/collection/components/radio-group/radio-group.ionic.css +125 -0
  451. package/dist/collection/components/radio-group/radio-group.ios.css +42 -18
  452. package/dist/collection/components/radio-group/radio-group.js +13 -5
  453. package/dist/collection/components/radio-group/radio-group.md.css +42 -18
  454. package/dist/collection/components/range/range.ionic.css +563 -0
  455. package/dist/collection/components/range/range.ios.css +128 -85
  456. package/dist/collection/components/range/range.js +12 -9
  457. package/dist/collection/components/range/range.md.css +128 -85
  458. package/dist/collection/components/refresher/refresher.ios.css +14 -1
  459. package/dist/collection/components/refresher/refresher.js +11 -8
  460. package/dist/collection/components/refresher/refresher.md.css +15 -2
  461. package/dist/collection/components/refresher-content/refresher-content.js +28 -7
  462. package/dist/collection/components/reorder/reorder.ios.css +6 -0
  463. package/dist/collection/components/reorder/reorder.js +33 -6
  464. package/dist/collection/components/reorder/reorder.md.css +6 -0
  465. package/dist/collection/components/reorder-group/reorder-group.css +6 -0
  466. package/dist/collection/components/reorder-group/reorder-group.js +8 -4
  467. package/dist/collection/components/ripple-effect/{ripple-effect.css → ripple-effect.common.css} +7 -1
  468. package/dist/collection/components/ripple-effect/ripple-effect.ionic.css +215 -0
  469. package/dist/collection/components/ripple-effect/ripple-effect.js +14 -6
  470. package/dist/collection/components/route/route.js +4 -0
  471. package/dist/collection/components/router/router.js +4 -0
  472. package/dist/collection/components/router-link/router-link.css +8 -2
  473. package/dist/collection/components/router-link/router-link.js +9 -5
  474. package/dist/collection/components/router-outlet/router-outlet.css +7 -1
  475. package/dist/collection/components/router-outlet/router-outlet.js +6 -3
  476. package/dist/collection/components/row/row.css +16 -0
  477. package/dist/collection/components/row/row.js +9 -2
  478. package/dist/collection/components/searchbar/searchbar.ionic.css +626 -0
  479. package/dist/collection/components/searchbar/searchbar.ios.css +56 -18
  480. package/dist/collection/components/searchbar/searchbar.js +181 -34
  481. package/dist/collection/components/searchbar/searchbar.md.css +56 -18
  482. package/dist/collection/components/segment/segment.ionic.css +115 -0
  483. package/dist/collection/components/segment/segment.ios.css +45 -2
  484. package/dist/collection/components/segment/segment.js +11 -8
  485. package/dist/collection/components/segment/segment.md.css +45 -2
  486. package/dist/collection/components/segment-button/segment-button.ionic.css +353 -0
  487. package/dist/collection/components/segment-button/segment-button.ios.css +146 -105
  488. package/dist/collection/components/segment-button/segment-button.js +11 -8
  489. package/dist/collection/components/segment-button/segment-button.md.css +148 -107
  490. package/dist/collection/components/segment-content/segment-content.js +1 -1
  491. package/dist/collection/components/segment-view/segment-view.ios.css +6 -0
  492. package/dist/collection/components/segment-view/segment-view.js +6 -4
  493. package/dist/collection/components/segment-view/segment-view.md.css +6 -0
  494. package/dist/collection/components/select/select.ionic.css +763 -0
  495. package/dist/collection/components/select/select.ios.css +315 -176
  496. package/dist/collection/components/select/select.js +157 -54
  497. package/dist/collection/components/select/select.md.css +331 -178
  498. package/dist/collection/components/select-modal/select-modal.ionic.css +123 -0
  499. package/dist/collection/components/select-modal/select-modal.ios.css +18 -0
  500. package/dist/collection/components/select-modal/select-modal.js +3 -3
  501. package/dist/collection/components/select-modal/select-modal.md.css +7 -3
  502. package/dist/collection/components/select-option/select-option.js +9 -2
  503. package/dist/collection/components/select-popover/select-popover.ios.css +18 -0
  504. package/dist/collection/components/select-popover/select-popover.js +12 -4
  505. package/dist/collection/components/select-popover/select-popover.md.css +18 -0
  506. package/dist/collection/components/skeleton-text/skeleton-text.css +6 -0
  507. package/dist/collection/components/skeleton-text/skeleton-text.js +9 -5
  508. package/dist/collection/components/spinner/{spinner.css → spinner.ionic.css} +77 -10
  509. package/dist/collection/components/spinner/spinner.js +47 -6
  510. package/dist/collection/components/spinner/spinner.native.css +198 -0
  511. package/dist/collection/components/split-pane/split-pane.ios.css +20 -2
  512. package/dist/collection/components/split-pane/split-pane.js +14 -8
  513. package/dist/collection/components/split-pane/split-pane.md.css +20 -2
  514. package/dist/collection/components/tab/tab.js +6 -2
  515. package/dist/collection/components/tab-bar/tab-bar.ionic.css +186 -0
  516. package/dist/collection/components/tab-bar/tab-bar.ios.css +71 -43
  517. package/dist/collection/components/tab-bar/tab-bar.js +78 -11
  518. package/dist/collection/components/tab-bar/tab-bar.md.css +71 -43
  519. package/dist/collection/components/tab-button/tab-button.ionic.css +336 -0
  520. package/dist/collection/components/tab-button/tab-button.ios.css +171 -95
  521. package/dist/collection/components/tab-button/tab-button.js +44 -8
  522. package/dist/collection/components/tab-button/tab-button.md.css +137 -93
  523. package/dist/collection/components/tabs/tabs.css +7 -1
  524. package/dist/collection/components/tabs/tabs.js +4 -1
  525. package/dist/collection/components/text/text.css +6 -0
  526. package/dist/collection/components/text/text.js +7 -6
  527. package/dist/collection/components/textarea/textarea.ionic.css +828 -0
  528. package/dist/collection/components/textarea/textarea.ios.css +275 -139
  529. package/dist/collection/components/textarea/textarea.js +76 -16
  530. package/dist/collection/components/textarea/textarea.md.css +288 -140
  531. package/dist/collection/components/thumbnail/thumbnail.css +6 -0
  532. package/dist/collection/components/thumbnail/thumbnail.js +9 -2
  533. package/dist/collection/components/title/title.ionic.css +127 -0
  534. package/dist/collection/components/title/title.ios.css +32 -4
  535. package/dist/collection/components/title/title.js +13 -7
  536. package/dist/collection/components/title/title.md.css +32 -4
  537. package/dist/collection/components/toast/animations/utils.js +1 -1
  538. package/dist/collection/components/toast/toast.ionic.css +394 -0
  539. package/dist/collection/components/toast/toast.ios.css +84 -45
  540. package/dist/collection/components/toast/toast.js +75 -12
  541. package/dist/collection/components/toast/toast.md.css +84 -45
  542. package/dist/collection/components/toggle/toggle.ionic.css +509 -0
  543. package/dist/collection/components/toggle/toggle.ios.css +247 -131
  544. package/dist/collection/components/toggle/toggle.js +73 -18
  545. package/dist/collection/components/toggle/toggle.md.css +244 -131
  546. package/dist/collection/components/toolbar/test/image.svg +1 -0
  547. package/dist/collection/components/toolbar/toolbar.ionic.css +241 -0
  548. package/dist/collection/components/toolbar/toolbar.ios.css +90 -47
  549. package/dist/collection/components/toolbar/toolbar.js +157 -13
  550. package/dist/collection/components/toolbar/toolbar.md.css +90 -47
  551. package/dist/collection/global/ionic-global.js +228 -13
  552. package/dist/collection/utils/focus-visible.js +22 -0
  553. package/dist/collection/utils/framework-delegate.js +3 -1
  554. package/dist/collection/utils/helpers.js +42 -2
  555. package/dist/collection/utils/keyboard/keyboard-controller.js +3 -1
  556. package/dist/collection/utils/menu-controller/animations/overlay.js +3 -3
  557. package/dist/collection/utils/menu-controller/animations/push.js +2 -1
  558. package/dist/collection/utils/menu-controller/animations/reveal.js +2 -1
  559. package/dist/collection/utils/overlays.js +41 -18
  560. package/dist/collection/utils/test/playwright/generator.js +48 -23
  561. package/dist/collection/utils/test/playwright/page/utils/goto.js +14 -5
  562. package/dist/collection/utils/test/playwright/page/utils/set-content.js +24 -3
  563. package/dist/collection/utils/transition/ios.transition.js +1 -0
  564. package/dist/docs.json +8168 -372
  565. package/dist/esm/{animation-BvhAtgca.js → animation-DPqVg3gl.js} +1 -1
  566. package/dist/esm/{app-globals-CvLYUxE9.js → app-globals-dJs8dVUB.js} +1 -1
  567. package/dist/esm/{button-active-DBUPuLNw.js → button-active-BMINdWv6.js} +1 -1
  568. package/dist/esm/{capacitor-CFERIeaU.js → capacitor--DL1MVFW.js} +1 -1
  569. package/dist/esm/caret-down-D1t981Ih.js +6 -0
  570. package/dist/esm/caret-left-fIOYmaqA.js +6 -0
  571. package/dist/esm/caret-right-BYSs-jZz.js +6 -0
  572. package/dist/esm/{data-CKHMWxfe.js → data-slRmoEWk.js} +5 -5
  573. package/dist/esm/{focus-visible-BmVRXR1y.js → focus-visible-vXpMhGrs.js} +23 -1
  574. package/dist/esm/{framework-delegate-BLEBgH06.js → framework-delegate-C3AU0AA6.js} +4 -2
  575. package/dist/esm/{haptic-DzAMWJuk.js → haptic-BWDWI-Xh.js} +1 -1
  576. package/dist/esm/{helpers-8KSQQGQy.js → helpers-CKng-4WP.js} +42 -3
  577. package/dist/esm/{index-CXSTcaAW.js → index-BwfAv3fK.js} +10 -10
  578. package/dist/esm/{index-7UbSlv7N.js → index-C21kdpyw.js} +1 -1
  579. package/dist/esm/{index-DV3sJJW8.js → index-COG0_eom.js} +1 -1
  580. package/dist/esm/{index-Dp7GXH1z.js → index-DLYqkEhn.js} +3 -3
  581. package/dist/esm/{index-C6WeRr09.js → index-jNq9q9I-.js} +3 -2
  582. package/dist/esm/index.js +10 -11
  583. package/dist/esm/{input-shims-C4KDnhxb.js → input-shims-Dt4HUCHS.js} +6 -5
  584. package/dist/esm/{input.utils-be4gBvVY.js → input.utils-D7U0b1bK.js} +2 -2
  585. package/dist/esm/ion-accordion_2.entry.js +56 -27
  586. package/dist/esm/ion-action-sheet.entry.js +21 -18
  587. package/dist/esm/ion-alert.entry.js +22 -20
  588. package/dist/esm/ion-app_8.entry.js +244 -145
  589. package/dist/esm/ion-avatar_3.entry.js +125 -13
  590. package/dist/esm/ion-back-button.entry.js +29 -20
  591. package/dist/esm/ion-backdrop.entry.js +9 -6
  592. package/dist/esm/ion-breadcrumb_2.entry.js +53 -17
  593. package/dist/esm/ion-button_2.entry.js +43 -11
  594. package/dist/esm/ion-card_5.entry.js +53 -29
  595. package/dist/esm/ion-checkbox.entry.js +31 -13
  596. package/dist/esm/ion-chip.entry.js +49 -8
  597. package/dist/esm/ion-col_3.entry.js +54 -57
  598. package/dist/esm/ion-datetime-button.entry.js +11 -7
  599. package/dist/esm/ion-datetime_3.entry.js +115 -40
  600. package/dist/esm/ion-divider.entry.js +49 -0
  601. package/dist/esm/ion-fab_3.entry.js +43 -27
  602. package/dist/esm/ion-img.entry.js +7 -3
  603. package/dist/esm/ion-infinite-scroll_2.entry.js +89 -14
  604. package/dist/esm/ion-input-otp.entry.js +11 -7
  605. package/dist/esm/ion-input-password-toggle.entry.js +52 -14
  606. package/dist/esm/ion-input.entry.js +122 -32
  607. package/dist/esm/ion-item-option_3.entry.js +48 -19
  608. package/dist/esm/ion-item_8.entry.js +107 -47
  609. package/dist/esm/ion-loading.entry.js +17 -15
  610. package/dist/esm/ion-menu_3.entry.js +45 -27
  611. package/dist/esm/ion-modal.entry.js +68 -31
  612. package/dist/esm/ion-nav_2.entry.js +13 -10
  613. package/dist/esm/ion-picker-column-option.entry.js +10 -6
  614. package/dist/esm/ion-picker-column.entry.js +11 -11
  615. package/dist/esm/ion-picker.entry.js +9 -5
  616. package/dist/esm/ion-popover.entry.js +18 -16
  617. package/dist/esm/ion-progress-bar.entry.js +25 -7
  618. package/dist/esm/ion-radio_2.entry.js +22 -13
  619. package/dist/esm/ion-range.entry.js +14 -10
  620. package/dist/esm/ion-refresher_2.entry.js +37 -19
  621. package/dist/esm/ion-reorder_2.entry.js +38 -14
  622. package/dist/esm/ion-ripple-effect.entry.js +14 -6
  623. package/dist/esm/ion-route_4.entry.js +8 -7
  624. package/dist/esm/ion-searchbar.entry.js +137 -24
  625. package/dist/esm/ion-segment-content.entry.js +1 -1
  626. package/dist/esm/ion-segment-view.entry.js +5 -2
  627. package/dist/esm/ion-segment_2.entry.js +21 -14
  628. package/dist/esm/ion-select-modal.entry.js +8 -9
  629. package/dist/esm/ion-select_3.entry.js +131 -40
  630. package/dist/esm/ion-spinner.entry.js +28 -6
  631. package/dist/esm/ion-split-pane.entry.js +11 -8
  632. package/dist/esm/ion-tab-bar_2.entry.js +65 -20
  633. package/dist/esm/ion-tab_2.entry.js +7 -6
  634. package/dist/esm/ion-text.entry.js +5 -5
  635. package/dist/esm/ion-textarea.entry.js +55 -15
  636. package/dist/esm/ion-toast.entry.js +40 -17
  637. package/dist/esm/ion-toggle.entry.js +79 -22
  638. package/dist/esm/ionic-global-Dtd5Ma5B.js +480 -0
  639. package/dist/esm/ionic.js +3 -3
  640. package/dist/esm/{ios.transition-eAEkgVAv.js → ios.transition-CJcl_IUo.js} +6 -4
  641. package/dist/esm/{keyboard-CUw4ekVy.js → keyboard-Ce5NGRb7.js} +1 -1
  642. package/dist/esm/{keyboard-ywgs5efA.js → keyboard-DP1KnX1o.js} +4 -3
  643. package/dist/esm/{keyboard-controller-BaaVITYt.js → keyboard-controller-CN0dsogH.js} +5 -3
  644. package/dist/esm/list-Dhi5xtNS.js +6 -0
  645. package/dist/esm/loader.js +3 -3
  646. package/dist/esm/{md.transition-D8TeJ_Pz.js → md.transition-DUO570OK.js} +5 -4
  647. package/dist/esm/{notch-controller-lb417-kU.js → notch-controller-BZq2fbxL.js} +2 -2
  648. package/dist/esm/{overlays-BJaRj3Rj.js → overlays-D3rE6lyd.js} +44 -23
  649. package/dist/esm/{status-tap-pATNXEtr.js → status-tap-Bux-fh_w.js} +3 -2
  650. package/dist/esm/{swipe-back-B2YfOHRM.js → swipe-back-Dp-f6VSv.js} +2 -1
  651. package/dist/esm/x-BDqjX7Z_.js +6 -0
  652. package/dist/html.html-data.json +2532 -226
  653. package/dist/ionic/index.esm.js +1 -1
  654. package/dist/ionic/ionic.esm.js +1 -1
  655. package/dist/ionic/p-04b8cb11.entry.js +4 -0
  656. package/dist/ionic/p-07317db2.entry.js +4 -0
  657. package/dist/ionic/p-0b1386bf.entry.js +4 -0
  658. package/dist/ionic/p-0cfa2478.entry.js +4 -0
  659. package/dist/ionic/p-123f6dde.entry.js +4 -0
  660. package/dist/ionic/p-18660f23.entry.js +4 -0
  661. package/dist/ionic/p-1ac3754e.entry.js +4 -0
  662. package/dist/ionic/p-1acc1bfe.entry.js +4 -0
  663. package/dist/ionic/p-1d614d1a.entry.js +4 -0
  664. package/dist/ionic/p-21bad9c2.entry.js +4 -0
  665. package/dist/ionic/p-240c6a46.entry.js +4 -0
  666. package/dist/ionic/p-25cc812f.entry.js +4 -0
  667. package/dist/ionic/p-3ed15202.entry.js +4 -0
  668. package/dist/ionic/p-3ee8f3e6.entry.js +4 -0
  669. package/dist/ionic/p-3f22a9de.entry.js +4 -0
  670. package/dist/ionic/p-4cc76b1d.entry.js +4 -0
  671. package/dist/ionic/{p-B1xocg0A.js → p-4ivCEBy1.js} +1 -1
  672. package/dist/ionic/p-525895e0.entry.js +4 -0
  673. package/dist/ionic/p-554acf2b.entry.js +4 -0
  674. package/dist/ionic/p-59c4a194.entry.js +4 -0
  675. package/dist/ionic/p-5f0c7c62.entry.js +4 -0
  676. package/dist/ionic/p-69a244b5.entry.js +4 -0
  677. package/dist/ionic/p-742203d9.entry.js +4 -0
  678. package/dist/ionic/p-75b29611.entry.js +4 -0
  679. package/dist/ionic/p-7ead7a67.entry.js +4 -0
  680. package/dist/ionic/p-7f1c8070.entry.js +4 -0
  681. package/dist/ionic/p-845e0158.entry.js +4 -0
  682. package/dist/ionic/p-848ad9ae.entry.js +4 -0
  683. package/dist/ionic/p-8870c2f9.entry.js +4 -0
  684. package/dist/ionic/p-8cd4a868.entry.js +4 -0
  685. package/dist/ionic/p-907ac173.entry.js +4 -0
  686. package/dist/ionic/p-95621a36.entry.js +4 -0
  687. package/dist/ionic/p-9V8nrHFC.js +4 -0
  688. package/dist/ionic/p-9e575e4e.entry.js +4 -0
  689. package/dist/ionic/p-BDqjX7Z_.js +4 -0
  690. package/dist/ionic/p-BFFank6B.js +4 -0
  691. package/dist/ionic/{p-CWvl4RPO.js → p-BISSkhkA.js} +1 -1
  692. package/dist/ionic/p-BJGh_obi.js +4 -0
  693. package/dist/ionic/p-BYSs-jZz.js +4 -0
  694. package/dist/ionic/{p-CKvCXMs9.js → p-BYYLxYDJ.js} +1 -1
  695. package/dist/ionic/p-Bh0_z73h.js +4 -0
  696. package/dist/ionic/p-BpaeL4Lk.js +4 -0
  697. package/dist/ionic/{p-DiZPU8BH.js → p-BqMzjJ9X.js} +1 -1
  698. package/dist/ionic/{p-DV3sJJW8.js → p-COG0_eom.js} +1 -1
  699. package/dist/ionic/{p-C87oPMMF.js → p-CVVzZviS.js} +1 -1
  700. package/dist/ionic/p-CZEwJt85.js +4 -0
  701. package/dist/ionic/p-Cdv0TJ6-.js +4 -0
  702. package/dist/ionic/{p-BhNEp2QP.js → p-CjpktT3Z.js} +1 -1
  703. package/dist/ionic/p-CqYDGaCK.js +4 -0
  704. package/dist/ionic/p-D-m6MIML.js +4 -0
  705. package/dist/ionic/p-D1t981Ih.js +4 -0
  706. package/dist/ionic/{p-DCuOL88l.js → p-D8VpGXAu.js} +1 -1
  707. package/dist/ionic/p-DBzcL_sL.js +4 -0
  708. package/dist/ionic/p-DO7doFVM.js +4 -0
  709. package/dist/ionic/p-Dhi5xtNS.js +4 -0
  710. package/dist/ionic/p-DpBID_Du.js +4 -0
  711. package/dist/ionic/p-DuV7rU9I.js +4 -0
  712. package/dist/ionic/p-EG6i47Uw.js +4 -0
  713. package/dist/ionic/{p-D13Eaw-8.js → p-EwG_P2X9.js} +1 -1
  714. package/dist/ionic/p-Ex5J81sy.js +4 -0
  715. package/dist/ionic/{p-BHGXdud8.js → p-KY_2sl5b.js} +1 -1
  716. package/dist/ionic/p-a3ea0e64.entry.js +4 -0
  717. package/dist/ionic/p-a5893690.entry.js +4 -0
  718. package/dist/ionic/p-b269fb6b.entry.js +4 -0
  719. package/dist/ionic/p-b2aa3ff0.entry.js +4 -0
  720. package/dist/ionic/p-bbf5ed24.entry.js +4 -0
  721. package/dist/ionic/p-bd10b777.entry.js +4 -0
  722. package/dist/ionic/p-c85fd449.entry.js +4 -0
  723. package/dist/ionic/p-c9736360.entry.js +4 -0
  724. package/dist/ionic/p-cdcc3ffe.entry.js +4 -0
  725. package/dist/ionic/p-cef8eac8.entry.js +4 -0
  726. package/dist/ionic/p-d04293de.entry.js +4 -0
  727. package/dist/ionic/p-daf54858.entry.js +4 -0
  728. package/dist/ionic/p-df97e7d5.entry.js +4 -0
  729. package/dist/ionic/p-e0a689ea.entry.js +4 -0
  730. package/dist/ionic/p-e1ee9df4.entry.js +4 -0
  731. package/dist/ionic/p-e25b2e94.entry.js +4 -0
  732. package/dist/ionic/p-e53f3a62.entry.js +4 -0
  733. package/dist/ionic/p-ec96366b.entry.js +4 -0
  734. package/dist/ionic/p-ed071a41.entry.js +4 -0
  735. package/dist/ionic/p-f4d11cbb.entry.js +4 -0
  736. package/dist/ionic/p-fIOYmaqA.js +4 -0
  737. package/dist/ionic/p-ff5aa778.entry.js +4 -0
  738. package/dist/ionic/p-vXpMhGrs.js +4 -0
  739. package/dist/types/components/accordion/accordion.d.ts +5 -3
  740. package/dist/types/components/accordion-group/accordion-group.d.ts +12 -1
  741. package/dist/types/components/action-sheet/action-sheet-interface.d.ts +3 -7
  742. package/dist/types/components/action-sheet/action-sheet.d.ts +3 -2
  743. package/dist/types/components/alert/alert-interface.d.ts +3 -7
  744. package/dist/types/components/alert/alert.d.ts +3 -2
  745. package/dist/types/components/app/app.d.ts +4 -2
  746. package/dist/types/components/avatar/avatar.d.ts +32 -0
  747. package/dist/types/components/back-button/back-button.d.ts +2 -1
  748. package/dist/types/components/backdrop/backdrop.d.ts +4 -0
  749. package/dist/types/components/badge/badge.d.ts +34 -1
  750. package/dist/types/components/breadcrumb/breadcrumb.d.ts +4 -1
  751. package/dist/types/components/breadcrumbs/breadcrumbs.d.ts +2 -2
  752. package/dist/types/components/button/button.d.ts +19 -6
  753. package/dist/types/components/buttons/buttons.d.ts +5 -1
  754. package/dist/types/components/card/card.d.ts +8 -1
  755. package/dist/types/components/card-content/card-content.d.ts +2 -1
  756. package/dist/types/components/card-header/card-header.d.ts +3 -2
  757. package/dist/types/components/card-subtitle/card-subtitle.d.ts +2 -1
  758. package/dist/types/components/card-title/card-title.d.ts +2 -1
  759. package/dist/types/components/checkbox/checkbox.d.ts +14 -4
  760. package/dist/types/components/chip/chip.d.ts +26 -1
  761. package/dist/types/components/col/col.d.ts +52 -5
  762. package/dist/types/components/content/content.d.ts +3 -0
  763. package/dist/types/components/datetime/datetime.d.ts +26 -1
  764. package/dist/types/components/datetime/utils/data.d.ts +5 -5
  765. package/dist/types/components/datetime-button/datetime-button.d.ts +2 -1
  766. package/dist/types/components/divider/divider.d.ts +20 -0
  767. package/dist/types/components/fab/fab.d.ts +4 -0
  768. package/dist/types/components/fab-button/fab-button.d.ts +5 -3
  769. package/dist/types/components/fab-list/fab-list.d.ts +4 -0
  770. package/dist/types/components/footer/footer.d.ts +4 -3
  771. package/dist/types/components/grid/grid.d.ts +4 -0
  772. package/dist/types/components/header/header.d.ts +9 -3
  773. package/dist/types/components/img/img.d.ts +3 -0
  774. package/dist/types/components/infinite-scroll/infinite-scroll.d.ts +21 -0
  775. package/dist/types/components/infinite-scroll-content/infinite-scroll-content.d.ts +4 -0
  776. package/dist/types/components/input/input.d.ts +31 -5
  777. package/dist/types/components/input-password-toggle/input-password-toggle.d.ts +2 -0
  778. package/dist/types/components/item/item.d.ts +11 -4
  779. package/dist/types/components/item-divider/item-divider.d.ts +2 -1
  780. package/dist/types/components/item-group/item-group.d.ts +4 -0
  781. package/dist/types/components/item-option/item-option.d.ts +18 -1
  782. package/dist/types/components/item-options/item-options.d.ts +4 -0
  783. package/dist/types/components/item-sliding/item-sliding.d.ts +4 -0
  784. package/dist/types/components/label/label.d.ts +2 -1
  785. package/dist/types/components/list/list.d.ts +15 -1
  786. package/dist/types/components/list-header/list-header.d.ts +2 -1
  787. package/dist/types/components/loading/loading-interface.d.ts +2 -7
  788. package/dist/types/components/loading/loading.d.ts +3 -2
  789. package/dist/types/components/menu/menu.d.ts +3 -0
  790. package/dist/types/components/menu-button/menu-button.d.ts +3 -1
  791. package/dist/types/components/menu-toggle/menu-toggle.d.ts +3 -0
  792. package/dist/types/components/modal/gestures/sheet.d.ts +1 -1
  793. package/dist/types/components/modal/modal-interface.d.ts +4 -7
  794. package/dist/types/components/modal/modal.d.ts +11 -1
  795. package/dist/types/components/nav/nav-interface.d.ts +9 -1
  796. package/dist/types/components/nav/nav.d.ts +5 -1
  797. package/dist/types/components/nav-link/nav-link.d.ts +4 -0
  798. package/dist/types/components/note/note.d.ts +2 -1
  799. package/dist/types/components/picker/picker.d.ts +2 -1
  800. package/dist/types/components/picker-column/picker-column.d.ts +2 -1
  801. package/dist/types/components/picker-column-option/picker-column-option.d.ts +4 -0
  802. package/dist/types/components/picker-legacy/picker.d.ts +2 -1
  803. package/dist/types/components/popover/popover-interface.d.ts +3 -6
  804. package/dist/types/components/popover/popover.d.ts +6 -5
  805. package/dist/types/components/progress-bar/progress-bar.d.ts +10 -1
  806. package/dist/types/components/radio/radio.d.ts +2 -1
  807. package/dist/types/components/radio-group/radio-group.d.ts +4 -0
  808. package/dist/types/components/range/range.d.ts +2 -1
  809. package/dist/types/components/refresher/refresher.d.ts +2 -1
  810. package/dist/types/components/refresher-content/refresher-content.d.ts +4 -0
  811. package/dist/types/components/reorder/reorder.d.ts +9 -0
  812. package/dist/types/components/reorder-group/reorder-group.d.ts +4 -0
  813. package/dist/types/components/ripple-effect/ripple-effect.d.ts +4 -0
  814. package/dist/types/components/route/route.d.ts +4 -0
  815. package/dist/types/components/router/router.d.ts +4 -0
  816. package/dist/types/components/router-link/router-link.d.ts +4 -0
  817. package/dist/types/components/router-outlet/router-outlet.d.ts +4 -1
  818. package/dist/types/components/row/row.d.ts +4 -0
  819. package/dist/types/components/searchbar/searchbar.d.ts +51 -9
  820. package/dist/types/components/segment/segment.d.ts +2 -1
  821. package/dist/types/components/segment-button/segment-button.d.ts +2 -1
  822. package/dist/types/components/select/select.d.ts +41 -13
  823. package/dist/types/components/select-option/select-option.d.ts +4 -0
  824. package/dist/types/components/select-popover/select-popover.d.ts +3 -0
  825. package/dist/types/components/skeleton-text/skeleton-text.d.ts +4 -0
  826. package/dist/types/components/spinner/spinner.d.ts +15 -0
  827. package/dist/types/components/split-pane/split-pane.d.ts +4 -0
  828. package/dist/types/components/tab/tab.d.ts +4 -0
  829. package/dist/types/components/tab-bar/tab-bar.d.ts +22 -2
  830. package/dist/types/components/tab-button/tab-button.d.ts +11 -1
  831. package/dist/types/components/tabs/tabs.d.ts +3 -0
  832. package/dist/types/components/text/text.d.ts +2 -1
  833. package/dist/types/components/textarea/textarea.d.ts +17 -4
  834. package/dist/types/components/thumbnail/thumbnail.d.ts +4 -0
  835. package/dist/types/components/title/title.d.ts +4 -0
  836. package/dist/types/components/toast/animations/utils.d.ts +2 -2
  837. package/dist/types/components/toast/toast-interface.d.ts +3 -7
  838. package/dist/types/components/toast/toast.d.ts +19 -2
  839. package/dist/types/components/toggle/toggle.d.ts +15 -1
  840. package/dist/types/components/toolbar/toolbar.d.ts +20 -3
  841. package/dist/types/components.d.ts +1593 -196
  842. package/dist/types/global/ionic-global.d.ts +27 -2
  843. package/dist/types/interface.d.ts +3 -0
  844. package/dist/types/utils/config.d.ts +106 -2
  845. package/dist/types/utils/focus-visible.d.ts +13 -0
  846. package/dist/types/utils/helpers.d.ts +11 -0
  847. package/dist/types/utils/overlays-interface.d.ts +31 -1
  848. package/dist/types/utils/test/playwright/generator.d.ts +31 -2
  849. package/hydrate/index.js +2890 -957
  850. package/hydrate/index.mjs +2890 -957
  851. package/package.json +10 -5
  852. package/components/hardware-back-button.js +0 -115
  853. package/components/index9.js +0 -7
  854. package/dist/cjs/hardware-back-button-BxdNu76F.js +0 -121
  855. package/dist/cjs/index-DkNv4J_i.js +0 -10
  856. package/dist/cjs/ionic-global-UI5YPSi-.js +0 -151
  857. package/dist/esm/hardware-back-button-Dhbd-23H.js +0 -115
  858. package/dist/esm/index-ZjP4CjeZ.js +0 -7
  859. package/dist/esm/ionic-global-CTSyufhF.js +0 -146
  860. package/dist/ionic/p-095073c6.entry.js +0 -4
  861. package/dist/ionic/p-0f396661.entry.js +0 -4
  862. package/dist/ionic/p-1191a2d9.entry.js +0 -4
  863. package/dist/ionic/p-148bdf18.entry.js +0 -4
  864. package/dist/ionic/p-16116947.entry.js +0 -4
  865. package/dist/ionic/p-19f80390.entry.js +0 -4
  866. package/dist/ionic/p-1a91f317.entry.js +0 -4
  867. package/dist/ionic/p-1ab0fc21.entry.js +0 -4
  868. package/dist/ionic/p-1bbd0a23.entry.js +0 -4
  869. package/dist/ionic/p-2060feb1.entry.js +0 -4
  870. package/dist/ionic/p-22a0f820.entry.js +0 -4
  871. package/dist/ionic/p-2cb0f39f.entry.js +0 -4
  872. package/dist/ionic/p-3392f558.entry.js +0 -4
  873. package/dist/ionic/p-349fc921.entry.js +0 -4
  874. package/dist/ionic/p-3624b640.entry.js +0 -4
  875. package/dist/ionic/p-36a54836.entry.js +0 -4
  876. package/dist/ionic/p-39ed3212.entry.js +0 -4
  877. package/dist/ionic/p-40d56a51.entry.js +0 -4
  878. package/dist/ionic/p-44e3b33a.entry.js +0 -4
  879. package/dist/ionic/p-4f2c5845.entry.js +0 -4
  880. package/dist/ionic/p-528af4e6.entry.js +0 -4
  881. package/dist/ionic/p-54dec9b1.entry.js +0 -4
  882. package/dist/ionic/p-5a9be5a3.entry.js +0 -4
  883. package/dist/ionic/p-5c976c00.entry.js +0 -4
  884. package/dist/ionic/p-60ff6bf6.entry.js +0 -4
  885. package/dist/ionic/p-6383afc2.entry.js +0 -4
  886. package/dist/ionic/p-7a53f04c.entry.js +0 -4
  887. package/dist/ionic/p-7b12d853.entry.js +0 -4
  888. package/dist/ionic/p-7da05504.entry.js +0 -4
  889. package/dist/ionic/p-8888efe4.entry.js +0 -4
  890. package/dist/ionic/p-89c2e0a3.entry.js +0 -4
  891. package/dist/ionic/p-8cdb4ff5.entry.js +0 -4
  892. package/dist/ionic/p-9ddf2620.entry.js +0 -4
  893. package/dist/ionic/p-9eeaBrnk.js +0 -4
  894. package/dist/ionic/p-B5MDSrGg.js +0 -4
  895. package/dist/ionic/p-BB-JoKGB.js +0 -4
  896. package/dist/ionic/p-BmVRXR1y.js +0 -4
  897. package/dist/ionic/p-Br3vSlYh.js +0 -4
  898. package/dist/ionic/p-C-Cct-6D.js +0 -4
  899. package/dist/ionic/p-C4I6B3uV.js +0 -4
  900. package/dist/ionic/p-C8d2ebIg.js +0 -4
  901. package/dist/ionic/p-CIGNaXM1.js +0 -4
  902. package/dist/ionic/p-CoDfkBuk.js +0 -4
  903. package/dist/ionic/p-CtWGkNnJ.js +0 -4
  904. package/dist/ionic/p-CvaZMP6T.js +0 -4
  905. package/dist/ionic/p-D2fQU_qK.js +0 -4
  906. package/dist/ionic/p-DAfH9Iif.js +0 -4
  907. package/dist/ionic/p-DJKvq7vb.js +0 -4
  908. package/dist/ionic/p-Dm_oBkW1.js +0 -4
  909. package/dist/ionic/p-LaGjiAVo.js +0 -4
  910. package/dist/ionic/p-ZjP4CjeZ.js +0 -4
  911. package/dist/ionic/p-a00ad0f2.entry.js +0 -4
  912. package/dist/ionic/p-a81be128.entry.js +0 -4
  913. package/dist/ionic/p-afeb9df6.entry.js +0 -4
  914. package/dist/ionic/p-b17f0554.entry.js +0 -4
  915. package/dist/ionic/p-b292804d.entry.js +0 -4
  916. package/dist/ionic/p-bc9f9032.entry.js +0 -4
  917. package/dist/ionic/p-bf81a468.entry.js +0 -4
  918. package/dist/ionic/p-cd93c119.entry.js +0 -4
  919. package/dist/ionic/p-cde6d39b.entry.js +0 -4
  920. package/dist/ionic/p-d04d66fc.entry.js +0 -4
  921. package/dist/ionic/p-d3df6032.entry.js +0 -4
  922. package/dist/ionic/p-dbba38cf.entry.js +0 -4
  923. package/dist/ionic/p-dc8d0bb9.entry.js +0 -4
  924. package/dist/ionic/p-e6c3214c.entry.js +0 -4
  925. package/dist/ionic/p-e6c465ff.entry.js +0 -4
  926. package/dist/ionic/p-ec76fec4.entry.js +0 -4
  927. package/dist/ionic/p-ee2e35a6.entry.js +0 -4
  928. package/dist/ionic/p-f7db572a.entry.js +0 -4
  929. package/dist/ionic/p-f9eb54ee.entry.js +0 -4
  930. /package/dist/collection/components/{input-password-toggle/input-password-toggle.css → refresher-content/refresher-content.css} +0 -0
@@ -1147,20 +1147,20 @@ const hour23 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18
1147
1147
  // h24 hour system uses 1-24. Midnight starts at 24:00.
1148
1148
  const hour24 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0];
1149
1149
  /**
1150
- * Given a locale and a mode,
1150
+ * Given a locale and a theme,
1151
1151
  * return an array with formatted days
1152
- * of the week. iOS should display days
1153
- * such as "Mon" or "Tue".
1152
+ * of the week. iOS and Ionic themes should
1153
+ * display days such as "Mon" or "Tue".
1154
1154
  * MD should display days such as "M"
1155
1155
  * or "T".
1156
1156
  */
1157
- const getDaysOfWeek = (locale, mode, firstDayOfWeek = 0) => {
1157
+ const getDaysOfWeek = (locale, theme, firstDayOfWeek = 0) => {
1158
1158
  /**
1159
1159
  * Nov 1st, 2020 starts on a Sunday.
1160
1160
  * ion-datetime assumes weeks start on Sunday,
1161
1161
  * but is configurable via `firstDayOfWeek`.
1162
1162
  */
1163
- const weekdayFormat = mode === 'ios' ? 'short' : 'narrow';
1163
+ const weekdayFormat = theme === 'md' ? 'narrow' : 'short';
1164
1164
  const intl = new Intl.DateTimeFormat(locale, { weekday: weekdayFormat });
1165
1165
  const startDate = new Date('11/01/2020');
1166
1166
  const daysOfWeek = [];
@@ -17,6 +17,28 @@ const FOCUS_KEYS = [
17
17
  'Home',
18
18
  'End',
19
19
  ];
20
+ let focusVisibleUtility = null;
21
+ const getOrInitFocusVisibleUtility = () => {
22
+ if (!focusVisibleUtility) {
23
+ focusVisibleUtility = startFocusVisible();
24
+ }
25
+ return focusVisibleUtility;
26
+ };
27
+ /**
28
+ * Used to set focus on an element that uses `ion-focusable`.
29
+ * Do not use this if focusing the element as a result of a keyboard
30
+ * event as the focus utility should handle this for us. This method
31
+ * should be used when we want to programmatically focus an element as
32
+ * a result of another user action. (Ex: We focus the first element
33
+ * inside of a popover when the user presents it, but the popover is not always
34
+ * presented as a result of keyboard action.)
35
+ *
36
+ * @param elements - The elements to set focus on.
37
+ */
38
+ const focusElements = (elements) => {
39
+ const focusVisible = getOrInitFocusVisibleUtility();
40
+ focusVisible.setFocus(elements);
41
+ };
20
42
  const startFocusVisible = (rootEl) => {
21
43
  let currentFocus = [];
22
44
  let keyboardMode = true;
@@ -72,4 +94,4 @@ const startFocusVisible = (rootEl) => {
72
94
  };
73
95
  };
74
96
 
75
- export { startFocusVisible };
97
+ export { focusElements, getOrInitFocusVisibleUtility, startFocusVisible };
@@ -1,6 +1,7 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
+ import { c as config } from './index4.js';
4
5
  import { c as componentOnReady } from './helpers.js';
5
6
 
6
7
  // TODO(FW-2832): types
@@ -102,7 +103,8 @@ const CoreDelegate = () => {
102
103
  * Get the root of the app and
103
104
  * add the overlay there.
104
105
  */
105
- const app = document.querySelector('ion-app') || document.body;
106
+ const appRootSelector = config.get('appRootSelector', 'ion-app');
107
+ const app = document.querySelector(appRootSelector) || document.body;
106
108
  /**
107
109
  * Create a placeholder comment so that
108
110
  * we can return this component to where
@@ -2,10 +2,11 @@
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
4
  import { readTask, writeTask, proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
5
- import { g as getScrollElement, f as findIonContent, p as printIonContentErrorMsg } from './index8.js';
5
+ import { g as getScrollElement, f as findIonContent, p as printIonContentErrorMsg } from './index7.js';
6
6
  import { f as clamp, i as inheritAriaAttributes } from './helpers.js';
7
7
  import { h as hostContext } from './theme.js';
8
- import { b as getIonMode } from './ionic-global.js';
8
+ import { c as config } from './index4.js';
9
+ import { b as getIonTheme } from './ionic-global.js';
9
10
 
10
11
  const TRANSITION = 'all 0.2s ease-in-out';
11
12
  const cloneElement = (tagName) => {
@@ -202,18 +203,25 @@ const handleHeaderFade = (scrollEl, baseEl, condenseHeader) => {
202
203
  });
203
204
  };
204
205
 
205
- const headerIosCss = "ion-header{display:block;position:relative;-ms-flex-order:-1;order:-1;width:100%;z-index:10}ion-header ion-toolbar:first-of-type{padding-top:var(--ion-safe-area-top, 0)}.header-ios ion-toolbar:last-of-type{--border-width:0 0 0.55px}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){.header-background{left:0;right:0;top:0;bottom:0;position:absolute;-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}.header-translucent-ios ion-toolbar{--opacity:.8}.header-collapse-condense-inactive .header-background{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}}.header-ios.ion-no-border ion-toolbar:last-of-type{--border-width:0}.header-collapse-fade ion-toolbar{--opacity-scale:inherit}.header-collapse-condense{z-index:9}.header-collapse-condense ion-toolbar{position:-webkit-sticky;position:sticky;top:0}.header-collapse-condense ion-toolbar:first-of-type{padding-top:0px;z-index:1}.header-collapse-condense ion-toolbar{--background:var(--ion-background-color, #fff);z-index:0}.header-collapse-condense ion-toolbar:last-of-type{--border-width:0px}.header-collapse-condense ion-toolbar ion-searchbar{padding-top:0px;padding-bottom:13px}.header-collapse-main{--opacity-scale:1}.header-collapse-main ion-toolbar{--opacity-scale:inherit}.header-collapse-main ion-toolbar.in-toolbar ion-title,.header-collapse-main ion-toolbar.in-toolbar ion-buttons{-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-buttons.buttons-collapse{opacity:0;pointer-events:none}.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-buttons.buttons-collapse{visibility:hidden}ion-header.header-ios:not(.header-collapse-main):has(~ion-content ion-header.header-ios[collapse=condense],~ion-content ion-header.header-ios.header-collapse-condense){opacity:0}";
206
+ const headerIonicCss = "ion-header{display:block;position:relative;-ms-flex-order:-1;order:-1;width:100%}ion-header ion-toolbar:first-of-type{padding-top:var(--ion-safe-area-top, 0)}ion-header{-webkit-box-shadow:var(--token-elevation-2, 0px 1px 5px 0px rgba(0, 0, 0, 0.05), 0px 8px 25px 0px rgba(0, 0, 0, 0.08));box-shadow:var(--token-elevation-2, 0px 1px 5px 0px rgba(0, 0, 0, 0.05), 0px 8px 25px 0px rgba(0, 0, 0, 0.08));z-index:10}ion-header.header-divider{border-bottom:var(--token-border-size-025, var(--token-scale-025, 1px)) var(--token-border-style-solid, solid) var(--token-primitives-neutral-300, #e0e0e0)}ion-toolbar+ion-toolbar{--padding-start:var(--token-space-400, var(--token-scale-400, 16px));--padding-end:var(--token-space-400, var(--token-scale-400, 16px))}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){.header-background{right:0;left:0;top:0;bottom:0;position:absolute;-webkit-backdrop-filter:saturate(180%) blur(var(--token-scale-100, 4px));backdrop-filter:saturate(180%) blur(var(--token-scale-100, 4px))}.header-translucent-ionic ion-toolbar{--opacity:0.7}}";
206
207
 
207
- const headerMdCss = "ion-header{display:block;position:relative;-ms-flex-order:-1;order:-1;width:100%;z-index:10}ion-header ion-toolbar:first-of-type{padding-top:var(--ion-safe-area-top, 0)}.header-md{-webkit-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);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)}.header-collapse-condense{display:none}.header-md.ion-no-border{-webkit-box-shadow:none;box-shadow:none}";
208
+ const headerIosCss = "ion-header{display:block;position:relative;-ms-flex-order:-1;order:-1;width:100%}ion-header ion-toolbar:first-of-type{padding-top:var(--ion-safe-area-top, 0)}ion-header{z-index:10}.header-ios ion-toolbar:last-of-type{--border-width:0 0 0.55px}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){.header-background{right:0;left:0;top:0;bottom:0;position:absolute;-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}.header-translucent-ios ion-toolbar{--opacity:0.8}.header-collapse-condense-inactive .header-background{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}}.header-ios.ion-no-border ion-toolbar:last-of-type{--border-width:0}.header-collapse-fade ion-toolbar{--opacity-scale:inherit}.header-collapse-condense{z-index:9}.header-collapse-condense ion-toolbar{position:-webkit-sticky;position:sticky;top:0}.header-collapse-condense ion-toolbar:first-of-type{padding-top:0px;z-index:1}.header-collapse-condense ion-toolbar{--background:var(--ion-background-color, #fff);z-index:0}.header-collapse-condense ion-toolbar:last-of-type{--border-width:0px}.header-collapse-condense ion-toolbar ion-searchbar{padding-top:0px;padding-bottom:13px}.header-collapse-main{--opacity-scale:1}.header-collapse-main ion-toolbar{--opacity-scale:inherit}.header-collapse-main ion-toolbar.in-toolbar ion-title,.header-collapse-main ion-toolbar.in-toolbar ion-buttons{-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-buttons.buttons-collapse{opacity:0;pointer-events:none}.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-buttons.buttons-collapse{visibility:hidden}ion-header.header-ios:not(.header-collapse-main):has(~ion-content ion-header.header-ios[collapse=condense],~ion-content ion-header.header-ios.header-collapse-condense){opacity:0}";
209
+
210
+ const headerMdCss = "ion-header{display:block;position:relative;-ms-flex-order:-1;order:-1;width:100%}ion-header ion-toolbar:first-of-type{padding-top:var(--ion-safe-area-top, 0)}ion-header{z-index:10}.header-md{-webkit-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);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)}.header-collapse-condense{display:none}.header-md.ion-no-border{-webkit-box-shadow:none;box-shadow:none}";
208
211
 
209
212
  const Header = /*@__PURE__*/ proxyCustomElement(class Header extends HTMLElement {
210
213
  constructor() {
211
214
  super();
212
215
  this.__registerHost();
213
216
  this.inheritedAttributes = {};
217
+ /**
218
+ * If `true`, the header will have a line at the bottom.
219
+ * TODO(ROU-10855): add support for this prop on ios/md themes
220
+ */
221
+ this.divider = false;
214
222
  /**
215
223
  * If `true`, the header will be translucent.
216
- * Only applies when the mode is `"ios"` and the device supports
224
+ * Only applies when the theme is `"ios"` or `"ionic"` and the device supports
217
225
  * [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).
218
226
  *
219
227
  * Note: In order to scroll content behind the header, the `fullscreen`
@@ -245,16 +253,17 @@ const Header = /*@__PURE__*/ proxyCustomElement(class Header extends HTMLElement
245
253
  this.destroyCollapsibleHeader();
246
254
  }
247
255
  async checkCollapsibleHeader() {
248
- const mode = getIonMode(this);
249
- if (mode !== 'ios') {
256
+ const theme = getIonTheme(this);
257
+ if (theme !== 'ios') {
250
258
  return;
251
259
  }
252
260
  const { collapse } = this;
253
261
  const hasCondense = collapse === 'condense';
254
262
  const hasFade = collapse === 'fade';
255
263
  this.destroyCollapsibleHeader();
264
+ const appRootSelector = config.get('appRootSelector', 'ion-app');
256
265
  if (hasCondense) {
257
- const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
266
+ const pageEl = this.el.closest(`${appRootSelector},ion-page,.ion-page,page-inner`);
258
267
  const contentEl = pageEl ? findIonContent(pageEl) : null;
259
268
  // Cloned elements are always needed in iOS transition
260
269
  writeTask(() => {
@@ -265,7 +274,7 @@ const Header = /*@__PURE__*/ proxyCustomElement(class Header extends HTMLElement
265
274
  await this.setupCondenseHeader(contentEl, pageEl);
266
275
  }
267
276
  else if (hasFade) {
268
- const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
277
+ const pageEl = this.el.closest(`${appRootSelector},ion-page,.ion-page,page-inner`);
269
278
  const contentEl = pageEl ? findIonContent(pageEl) : null;
270
279
  if (!contentEl) {
271
280
  printIonContentErrorMsg(this.el);
@@ -340,27 +349,30 @@ const Header = /*@__PURE__*/ proxyCustomElement(class Header extends HTMLElement
340
349
  });
341
350
  }
342
351
  render() {
343
- const { translucent, inheritedAttributes } = this;
344
- const mode = getIonMode(this);
352
+ const { translucent, inheritedAttributes, divider } = this;
353
+ const theme = getIonTheme(this);
345
354
  const collapse = this.collapse || 'none';
346
355
  // banner role must be at top level, so remove role if inside a menu
347
356
  const roleType = hostContext('ion-menu', this.el) ? 'none' : 'banner';
348
- return (h(Host, Object.assign({ key: 'b6cc27f0b08afc9fcc889683525da765d80ba672', role: roleType, class: {
349
- [mode]: true,
357
+ return (h(Host, Object.assign({ key: 'f5c81cee59b635b407fcad7732c793c651edb91e', role: roleType, class: {
358
+ [theme]: true,
350
359
  // Used internally for styling
351
- [`header-${mode}`]: true,
360
+ [`header-${theme}`]: true,
352
361
  [`header-translucent`]: this.translucent,
353
362
  [`header-collapse-${collapse}`]: true,
354
- [`header-translucent-${mode}`]: this.translucent,
355
- } }, inheritedAttributes), mode === 'ios' && translucent && h("div", { key: '395766d4dcee3398bc91960db21f922095292f14', class: "header-background" }), h("slot", { key: '09a67ece27b258ff1248805d43d92a49b2c6859a' })));
363
+ [`header-translucent-${theme}`]: this.translucent,
364
+ ['header-divider']: divider,
365
+ } }, inheritedAttributes), theme !== 'md' && translucent && h("div", { key: 'd8373a8418756961185de934082142da01b27a26', class: "header-background" }), h("slot", { key: '9fda3dcb16fd09f7f6fa1c345d17cdf130e1e331' })));
356
366
  }
357
367
  get el() { return this; }
358
368
  static get style() { return {
369
+ ionic: headerIonicCss,
359
370
  ios: headerIosCss,
360
371
  md: headerMdCss
361
372
  }; }
362
373
  }, [292, "ion-header", {
363
374
  "collapse": [1],
375
+ "divider": [4],
364
376
  "translucent": [4]
365
377
  }]);
366
378
  function defineCustomElement() {
@@ -1,7 +1,8 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import { a as printIonError } from './index4.js';
4
+ import { focusElements } from './focus-visible.js';
5
+ import { a as printIonError, c as config } from './index4.js';
5
6
 
6
7
  const transitionEndAsync = (el, expectedDuration = 0) => {
7
8
  return new Promise((resolve) => {
@@ -201,6 +202,17 @@ const raf = (h) => {
201
202
  const hasShadowDom = (el) => {
202
203
  return !!el.shadowRoot && !!el.attachShadow;
203
204
  };
205
+ /**
206
+ * Focuses a given element while ensuring proper focus management
207
+ * within the Ionic framework. If the element is marked as `ion-focusable`,
208
+ * this function will delegate focus handling to `ion-app` or manually
209
+ * apply focus when a custom app root is used.
210
+ *
211
+ * This function helps maintain accessibility and expected focus behavior
212
+ * in both standard and custom root environments.
213
+ *
214
+ * @param el - The element to focus.
215
+ */
204
216
  const focusVisibleElement = (el) => {
205
217
  el.focus();
206
218
  /**
@@ -212,9 +224,36 @@ const focusVisibleElement = (el) => {
212
224
  * which will let us explicitly set the elements to focus.
213
225
  */
214
226
  if (el.classList.contains('ion-focusable')) {
215
- const app = el.closest('ion-app');
227
+ const appRootSelector = config.get('appRootSelector', 'ion-app');
228
+ const app = el.closest(appRootSelector);
216
229
  if (app) {
217
- app.setFocus([el]);
230
+ if (appRootSelector === 'ion-app') {
231
+ /**
232
+ * If the app root is the default, then it will be
233
+ * in charge of setting focus. This is because the
234
+ * focus-visible utility is attached to the app root
235
+ * and will handle setting focus on the correct element.
236
+ */
237
+ app.setFocus([el]);
238
+ }
239
+ else {
240
+ /**
241
+ * When using a custom app root selector, the focus-visible
242
+ * utility is not available to manage focus automatically.
243
+ * If we set focus immediately, the element may not be fully
244
+ * rendered or interactive, especially if it was just added
245
+ * to the DOM. Using requestAnimationFrame ensures that focus
246
+ * is applied on the next frame, allowing the DOM to settle
247
+ * before changing focus.
248
+ */
249
+ requestAnimationFrame(() => {
250
+ /**
251
+ * The focus-visible utility is used to set focus on an
252
+ * element that uses `ion-focusable`.
253
+ */
254
+ focusElements([el]);
255
+ });
256
+ }
218
257
  }
219
258
  }
220
259
  };
@@ -1,11 +1,9 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import { d as doc } from './index9.js';
5
- import { MENU_BACK_BUTTON_PRIORITY } from './hardware-back-button.js';
4
+ import { c as getIonMode, d as doc, M as MENU_BACK_BUTTON_PRIORITY } from './ionic-global.js';
6
5
  import { p as printIonWarning } from './index4.js';
7
6
  import { c as componentOnReady } from './helpers.js';
8
- import { b as getIonMode } from './ionic-global.js';
9
7
  import { c as createAnimation } from './animation.js';
10
8
 
11
9
  /**
@@ -48,10 +46,10 @@ const menuOverlayAnimation = (menu) => {
48
46
  }
49
47
  menuAnimation.addElement(menu.menuInnerEl).fromTo('transform', `translateX(${closedX})`, `translateX(${openedX})`);
50
48
  const mode = getIonMode(menu);
51
- const isIos = mode === 'ios';
52
- const opacity = isIos ? 0.2 : 0.25;
49
+ const isIOS = mode === 'ios';
50
+ const opacity = isIOS ? 0.2 : 0.25;
53
51
  backdropAnimation.addElement(menu.backdropEl).fromTo('opacity', 0.01, opacity);
54
- return baseAnimation(isIos).addAnimation([menuAnimation, backdropAnimation]);
52
+ return baseAnimation(isIOS).addAnimation([menuAnimation, backdropAnimation]);
55
53
  };
56
54
 
57
55
  /**
@@ -64,6 +62,7 @@ const menuPushAnimation = (menu) => {
64
62
  let menuClosedX;
65
63
  const mode = getIonMode(menu);
66
64
  const width = menu.width;
65
+ const isIOS = mode === 'ios';
67
66
  if (menu.isEndSide) {
68
67
  contentOpenedX = -width + 'px';
69
68
  menuClosedX = width + 'px';
@@ -79,7 +78,7 @@ const menuPushAnimation = (menu) => {
79
78
  .addElement(menu.contentEl)
80
79
  .fromTo('transform', 'translateX(0px)', `translateX(${contentOpenedX})`);
81
80
  const backdropAnimation = createAnimation().addElement(menu.backdropEl).fromTo('opacity', 0.01, 0.32);
82
- return baseAnimation(mode === 'ios').addAnimation([menuAnimation, contentAnimation, backdropAnimation]);
81
+ return baseAnimation(isIOS).addAnimation([menuAnimation, contentAnimation, backdropAnimation]);
83
82
  };
84
83
 
85
84
  /**
@@ -89,11 +88,12 @@ const menuPushAnimation = (menu) => {
89
88
  */
90
89
  const menuRevealAnimation = (menu) => {
91
90
  const mode = getIonMode(menu);
91
+ const isIOS = mode === 'ios';
92
92
  const openedX = menu.width * (menu.isEndSide ? -1 : 1) + 'px';
93
93
  const contentOpen = createAnimation()
94
94
  .addElement(menu.contentEl) // REVIEW
95
95
  .fromTo('transform', 'translateX(0px)', `translateX(${openedX})`);
96
- return baseAnimation(mode === 'ios').addAnimation(contentOpen);
96
+ return baseAnimation(isIOS).addAnimation(contentOpen);
97
97
  };
98
98
 
99
99
  const createMenuController = () => {
@@ -29,4 +29,4 @@ const reorderTwoSharp = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2
29
29
  const searchOutline = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M221.09 64a157.09 157.09 0 1 0 157.09 157.09A157.1 157.1 0 0 0 221.09 64Z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M338.29 338.29 448 448' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>";
30
30
  const searchSharp = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M464 428 339.92 303.9a160.48 160.48 0 0 0 30.72-94.58C370.64 120.37 298.27 48 209.32 48S48 120.37 48 209.32s72.37 161.32 161.32 161.32a160.48 160.48 0 0 0 94.58-30.72L428 464ZM209.32 319.69a110.38 110.38 0 1 1 110.37-110.37 110.5 110.5 0 0 1-110.37 110.37'/></svg>";
31
31
 
32
- export { chevronBack as a, arrowBackSharp as b, chevronDown as c, chevronForwardOutline as d, ellipsisHorizontal as e, caretUpSharp as f, chevronForward as g, caretDownSharp as h, close as i, closeCircle as j, closeSharp as k, eyeOff as l, eye as m, menuOutline as n, menuSharp as o, arrowDown as p, caretBackSharp as q, reorderThreeOutline as r, reorderTwoSharp as s, searchOutline as t, searchSharp as u, chevronExpand as v, checkmarkOutline as w, removeOutline as x, ellipseOutline as y };
32
+ export { arrowBackSharp as a, chevronBack as b, chevronDown as c, chevronForwardOutline as d, ellipsisHorizontal as e, chevronForward as f, caretDownSharp as g, caretUpSharp as h, close as i, closeSharp as j, closeCircle as k, eyeOff as l, eye as m, menuSharp as n, menuOutline as o, arrowDown as p, caretBackSharp as q, reorderTwoSharp as r, reorderThreeOutline as s, searchSharp as t, searchOutline as u, chevronExpand as v, checkmarkOutline as w, removeOutline as x, ellipseOutline as y };
@@ -1,167 +1,128 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import { d as doc } from './index9.js';
5
- import { q as pointerCoord } from './helpers.js';
4
+ import { c as componentOnReady } from './helpers.js';
5
+ import { e as printRequiredElementError } from './index4.js';
6
6
 
7
- const startTapClick = (config) => {
8
- if (doc === undefined) {
9
- return;
7
+ const ION_CONTENT_TAG_NAME = 'ION-CONTENT';
8
+ const ION_CONTENT_ELEMENT_SELECTOR = 'ion-content';
9
+ const ION_CONTENT_CLASS_SELECTOR = '.ion-content-scroll-host';
10
+ /**
11
+ * Selector used for implementations reliant on `<ion-content>` for scroll event changes.
12
+ *
13
+ * Developers should use the `.ion-content-scroll-host` selector to target the element emitting
14
+ * scroll events. With virtual scroll implementations this will be the host element for
15
+ * the scroll viewport.
16
+ */
17
+ const ION_CONTENT_SELECTOR = `${ION_CONTENT_ELEMENT_SELECTOR}, ${ION_CONTENT_CLASS_SELECTOR}`;
18
+ const isIonContent = (el) => el.tagName === ION_CONTENT_TAG_NAME;
19
+ /**
20
+ * Waits for the element host fully initialize before
21
+ * returning the inner scroll element.
22
+ *
23
+ * For `ion-content` the scroll target will be the result
24
+ * of the `getScrollElement` function.
25
+ *
26
+ * For custom implementations it will be the element host
27
+ * or a selector within the host, if supplied through `scrollTarget`.
28
+ */
29
+ const getScrollElement = async (el) => {
30
+ if (isIonContent(el)) {
31
+ await new Promise((resolve) => componentOnReady(el, resolve));
32
+ return el.getScrollElement();
10
33
  }
11
- let lastActivated = 0;
12
- let activatableEle;
13
- let activeRipple;
14
- let activeDefer;
15
- const useRippleEffect = config.getBoolean('animated', true) && config.getBoolean('rippleEffect', true);
16
- const clearDefers = new WeakMap();
17
- const cancelActive = () => {
18
- if (activeDefer)
19
- clearTimeout(activeDefer);
20
- activeDefer = undefined;
21
- if (activatableEle) {
22
- removeActivated(false);
23
- activatableEle = undefined;
24
- }
25
- };
26
- const pointerDown = (ev) => {
27
- // Ignore right clicks
28
- if (activatableEle || ev.button === 2) {
29
- return;
30
- }
31
- setActivatedElement(getActivatableTarget(ev), ev);
32
- };
33
- const pointerUp = (ev) => {
34
- setActivatedElement(undefined, ev);
35
- };
36
- const setActivatedElement = (el, ev) => {
37
- // do nothing
38
- if (el && el === activatableEle) {
39
- return;
40
- }
41
- if (activeDefer)
42
- clearTimeout(activeDefer);
43
- activeDefer = undefined;
44
- const { x, y } = pointerCoord(ev);
45
- // deactivate selected
46
- if (activatableEle) {
47
- if (clearDefers.has(activatableEle)) {
48
- throw new Error('internal error');
49
- }
50
- if (!activatableEle.classList.contains(ACTIVATED)) {
51
- addActivated(activatableEle, x, y);
52
- }
53
- removeActivated(true);
54
- }
55
- // activate
56
- if (el) {
57
- const deferId = clearDefers.get(el);
58
- if (deferId) {
59
- clearTimeout(deferId);
60
- clearDefers.delete(el);
61
- }
62
- el.classList.remove(ACTIVATED);
63
- const callback = () => {
64
- addActivated(el, x, y);
65
- activeDefer = undefined;
66
- };
67
- if (isInstant(el)) {
68
- callback();
69
- }
70
- else {
71
- activeDefer = setTimeout(callback, ADD_ACTIVATED_DEFERS);
72
- }
73
- }
74
- activatableEle = el;
75
- };
76
- const addActivated = (el, x, y) => {
77
- lastActivated = Date.now();
78
- el.classList.add(ACTIVATED);
79
- if (!useRippleEffect)
80
- return;
81
- const rippleEffect = getRippleEffect(el);
82
- if (rippleEffect !== null) {
83
- removeRipple();
84
- activeRipple = rippleEffect.addRipple(x, y);
85
- }
86
- };
87
- const removeRipple = () => {
88
- if (activeRipple !== undefined) {
89
- activeRipple.then((remove) => remove());
90
- activeRipple = undefined;
91
- }
92
- };
93
- const removeActivated = (smooth) => {
94
- removeRipple();
95
- const active = activatableEle;
96
- if (!active) {
97
- return;
98
- }
99
- const time = CLEAR_STATE_DEFERS - Date.now() + lastActivated;
100
- if (smooth && time > 0 && !isInstant(active)) {
101
- const deferId = setTimeout(() => {
102
- active.classList.remove(ACTIVATED);
103
- clearDefers.delete(active);
104
- }, CLEAR_STATE_DEFERS);
105
- clearDefers.set(active, deferId);
106
- }
107
- else {
108
- active.classList.remove(ACTIVATED);
109
- }
110
- };
111
- doc.addEventListener('ionGestureCaptured', cancelActive);
112
- doc.addEventListener('pointerdown', pointerDown, true);
113
- doc.addEventListener('pointerup', pointerUp, true);
34
+ return el;
35
+ };
36
+ /**
37
+ * Queries the element matching the selector for IonContent.
38
+ * See ION_CONTENT_SELECTOR for the selector used.
39
+ */
40
+ const findIonContent = (el) => {
114
41
  /**
115
- * Tap click effects such as the ripple effect should
116
- * not happen when scrolling. For example, if a user scrolls
117
- * the page but also happens to do a touchstart on a button
118
- * as part of the scroll, the ripple effect should not
119
- * be dispatched. The ripple effect should only happen
120
- * if the button is activated and the page is not scrolling.
121
- *
122
- * pointercancel is dispatched on a gesture when scrolling
123
- * starts, so this lets us avoid having to listen for
124
- * ion-content's scroll events.
42
+ * First we try to query the custom scroll host selector in cases where
43
+ * the implementation is using an outer `ion-content` with an inner custom
44
+ * scroll container.
125
45
  */
126
- doc.addEventListener('pointercancel', cancelActive, true);
46
+ const customContentHost = el.querySelector(ION_CONTENT_CLASS_SELECTOR);
47
+ if (customContentHost) {
48
+ return customContentHost;
49
+ }
50
+ return el.querySelector(ION_CONTENT_SELECTOR);
51
+ };
52
+ /**
53
+ * Queries the closest element matching the selector for IonContent.
54
+ */
55
+ const findClosestIonContent = (el) => {
56
+ return el.closest(ION_CONTENT_SELECTOR);
57
+ };
58
+ /**
59
+ * Scrolls to the top of the element. If an `ion-content` is found, it will scroll
60
+ * using the public API `scrollToTop` with a duration.
61
+ */
62
+ const scrollToTop = (el, durationMs) => {
63
+ if (isIonContent(el)) {
64
+ const content = el;
65
+ return content.scrollToTop(durationMs);
66
+ }
67
+ return Promise.resolve(el.scrollTo({
68
+ top: 0,
69
+ left: 0,
70
+ behavior: 'smooth' ,
71
+ }));
127
72
  };
128
- // TODO(FW-2832): type
129
- const getActivatableTarget = (ev) => {
130
- if (ev.composedPath !== undefined) {
73
+ /**
74
+ * Scrolls by a specified X/Y distance in the component. If an `ion-content` is found, it will scroll
75
+ * using the public API `scrollByPoint` with a duration.
76
+ */
77
+ const scrollByPoint = (el, x, y, durationMs) => {
78
+ if (isIonContent(el)) {
79
+ const content = el;
80
+ return content.scrollByPoint(x, y, durationMs);
81
+ }
82
+ return Promise.resolve(el.scrollBy({
83
+ top: y,
84
+ left: x,
85
+ behavior: durationMs > 0 ? 'smooth' : 'auto',
86
+ }));
87
+ };
88
+ /**
89
+ * Prints an error informing developers that an implementation requires an element to be used
90
+ * within either the `ion-content` selector or the `.ion-content-scroll-host` class.
91
+ */
92
+ const printIonContentErrorMsg = (el) => {
93
+ return printRequiredElementError(el, ION_CONTENT_ELEMENT_SELECTOR);
94
+ };
95
+ /**
96
+ * Several components in Ionic need to prevent scrolling
97
+ * during a gesture (card modal, range, item sliding, etc).
98
+ * Use this utility to account for ion-content and custom content hosts.
99
+ */
100
+ const disableContentScrollY = (contentEl) => {
101
+ if (isIonContent(contentEl)) {
102
+ const ionContent = contentEl;
103
+ const initialScrollY = ionContent.scrollY;
104
+ ionContent.scrollY = false;
131
105
  /**
132
- * composedPath returns EventTarget[]. However,
133
- * objects other than Element can be targets too.
134
- * For example, AudioContext can be a target. In this
135
- * case, we know that the event is a UIEvent so we
136
- * can assume that the path will contain either Element
137
- * or ShadowRoot.
106
+ * This should be passed into resetContentScrollY
107
+ * so that we can revert ion-content's scrollY to the
108
+ * correct state. For example, if scrollY = false
109
+ * initially, we do not want to enable scrolling
110
+ * when we call resetContentScrollY.
138
111
  */
139
- const path = ev.composedPath();
140
- for (let i = 0; i < path.length - 2; i++) {
141
- const el = path[i];
142
- if (!(el instanceof ShadowRoot) && el.classList.contains('ion-activatable')) {
143
- return el;
144
- }
145
- }
112
+ return initialScrollY;
146
113
  }
147
114
  else {
148
- return ev.target.closest('.ion-activatable');
115
+ contentEl.style.setProperty('overflow', 'hidden');
116
+ return true;
149
117
  }
150
118
  };
151
- const isInstant = (el) => {
152
- return el.classList.contains('ion-activatable-instant');
153
- };
154
- const getRippleEffect = (el) => {
155
- if (el.shadowRoot) {
156
- const ripple = el.shadowRoot.querySelector('ion-ripple-effect');
157
- if (ripple) {
158
- return ripple;
159
- }
119
+ const resetContentScrollY = (contentEl, initialScrollY) => {
120
+ if (isIonContent(contentEl)) {
121
+ contentEl.scrollY = initialScrollY;
122
+ }
123
+ else {
124
+ contentEl.style.removeProperty('overflow');
160
125
  }
161
- return el.querySelector('ion-ripple-effect');
162
126
  };
163
- const ACTIVATED = 'ion-activated';
164
- const ADD_ACTIVATED_DEFERS = 100;
165
- const CLEAR_STATE_DEFERS = 150;
166
127
 
167
- export { startTapClick };
128
+ export { ION_CONTENT_CLASS_SELECTOR as I, findClosestIonContent as a, ION_CONTENT_ELEMENT_SELECTOR as b, scrollByPoint as c, disableContentScrollY as d, findIonContent as f, getScrollElement as g, isIonContent as i, printIonContentErrorMsg as p, resetContentScrollY as r, scrollToTop as s };