@ionic/core 8.7.17-dev.11771959013.18adabe2 → 8.7.17-dev.11772030258.1ee4f499

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 (525) hide show
  1. package/components/action-sheet.js +561 -1
  2. package/components/alert.js +610 -1
  3. package/components/animation.js +817 -1
  4. package/components/backdrop.js +72 -1
  5. package/components/button-active.js +64 -1
  6. package/components/button.js +303 -1
  7. package/components/buttons.js +56 -1
  8. package/components/capacitor.js +10 -1
  9. package/components/checkbox.js +261 -1
  10. package/components/config.js +192 -1
  11. package/components/content.js +475 -1
  12. package/components/cubic-bezier.js +87 -1
  13. package/components/data.js +1635 -1
  14. package/components/dir.js +15 -1
  15. package/components/focus-visible.js +72 -1
  16. package/components/framework-delegate.js +137 -1
  17. package/components/gesture-controller.js +192 -1
  18. package/components/haptic.js +155 -1
  19. package/components/hardware-back-button.js +112 -1
  20. package/components/header.js +417 -1
  21. package/components/helpers.js +336 -1
  22. package/components/icon.js +456 -1
  23. package/components/index.d.ts +0 -2
  24. package/components/index.js +115 -1
  25. package/components/index2.js +416 -1
  26. package/components/index3.js +452 -1
  27. package/components/index4.js +118 -1
  28. package/components/index5.js +303 -1
  29. package/components/index6.js +29 -1
  30. package/components/index7.js +164 -1
  31. package/components/index8.js +125 -1
  32. package/components/index9.js +4 -1
  33. package/components/input-shims.js +624 -1
  34. package/components/input.utils.js +144 -1
  35. package/components/ion-accordion-group.js +269 -1
  36. package/components/ion-accordion.js +457 -1
  37. package/components/ion-action-sheet.js +6 -1
  38. package/components/ion-alert.js +6 -1
  39. package/components/ion-app.js +128 -1
  40. package/components/ion-avatar.js +41 -1
  41. package/components/ion-back-button.js +131 -1
  42. package/components/ion-backdrop.js +6 -1
  43. package/components/ion-badge.js +47 -1
  44. package/components/ion-breadcrumb.js +137 -1
  45. package/components/ion-breadcrumbs.js +164 -1
  46. package/components/ion-button.js +6 -1
  47. package/components/ion-buttons.js +6 -1
  48. package/components/ion-card-content.js +45 -1
  49. package/components/ion-card-header.js +56 -1
  50. package/components/ion-card-subtitle.js +48 -1
  51. package/components/ion-card-title.js +48 -1
  52. package/components/ion-card.js +107 -1
  53. package/components/ion-checkbox.js +6 -1
  54. package/components/ion-chip.js +66 -1
  55. package/components/ion-col.js +163 -1
  56. package/components/ion-content.js +6 -1
  57. package/components/ion-datetime-button.js +384 -1
  58. package/components/ion-datetime.js +2046 -1
  59. package/components/ion-fab-button.js +151 -1
  60. package/components/ion-fab-list.js +66 -1
  61. package/components/ion-fab.js +101 -1
  62. package/components/ion-footer.js +159 -1
  63. package/components/ion-grid.js +46 -1
  64. package/components/ion-header.js +6 -1
  65. package/components/ion-icon.js +6 -1
  66. package/components/ion-img.js +124 -1
  67. package/components/ion-infinite-scroll-content.js +70 -1
  68. package/components/ion-infinite-scroll.js +236 -1
  69. package/components/ion-input-otp.js +683 -1
  70. package/components/ion-input-password-toggle.js +129 -1
  71. package/components/ion-input.js +617 -1
  72. package/components/ion-item-divider.js +59 -1
  73. package/components/ion-item-group.js +46 -1
  74. package/components/ion-item-option.js +91 -1
  75. package/components/ion-item-options.js +73 -1
  76. package/components/ion-item-sliding.js +458 -1
  77. package/components/ion-item.js +6 -1
  78. package/components/ion-label.js +6 -1
  79. package/components/ion-list-header.js +6 -1
  80. package/components/ion-list.js +6 -1
  81. package/components/ion-loading.js +344 -1
  82. package/components/ion-menu-button.js +110 -1
  83. package/components/ion-menu-toggle.js +64 -1
  84. package/components/ion-menu.js +745 -1
  85. package/components/ion-modal.js +6 -1
  86. package/components/ion-nav-link.js +64 -1
  87. package/components/ion-nav.js +956 -1
  88. package/components/ion-note.js +47 -1
  89. package/components/ion-picker-column-option.js +6 -1
  90. package/components/ion-picker-column.js +6 -1
  91. package/components/ion-picker-legacy-column.js +6 -1
  92. package/components/ion-picker-legacy.js +343 -1
  93. package/components/ion-picker.js +6 -1
  94. package/components/ion-popover.js +6 -1
  95. package/components/ion-progress-bar.js +101 -1
  96. package/components/ion-radio-group.js +6 -1
  97. package/components/ion-radio.js +6 -1
  98. package/components/ion-range.js +853 -1
  99. package/components/ion-refresher-content.js +89 -1
  100. package/components/ion-refresher.js +751 -1
  101. package/components/ion-reorder-group.js +322 -1
  102. package/components/ion-reorder.js +60 -1
  103. package/components/ion-ripple-effect.js +6 -1
  104. package/components/ion-route-redirect.js +45 -1
  105. package/components/ion-route.js +74 -1
  106. package/components/ion-router-link.js +61 -1
  107. package/components/ion-router-outlet.js +227 -1
  108. package/components/ion-router.js +841 -1
  109. package/components/ion-row.js +36 -1
  110. package/components/ion-searchbar.js +530 -1
  111. package/components/ion-segment-button.js +174 -1
  112. package/components/ion-segment-content.js +35 -1
  113. package/components/ion-segment-view.js +148 -1
  114. package/components/ion-segment.js +602 -1
  115. package/components/ion-select-modal.js +6 -1
  116. package/components/ion-select-option.js +46 -1
  117. package/components/ion-select-popover.js +6 -1
  118. package/components/ion-select.js +1037 -1
  119. package/components/ion-skeleton-text.js +65 -1
  120. package/components/ion-spinner.js +6 -1
  121. package/components/ion-split-pane.js +197 -1
  122. package/components/ion-tab-bar.js +115 -1
  123. package/components/ion-tab-button.js +128 -1
  124. package/components/ion-tab.js +91 -1
  125. package/components/ion-tabs.js +205 -1
  126. package/components/ion-text.js +42 -1
  127. package/components/ion-textarea.js +554 -1
  128. package/components/ion-thumbnail.js +36 -1
  129. package/components/ion-title.js +6 -1
  130. package/components/ion-toast.js +941 -1
  131. package/components/ion-toggle.js +361 -1
  132. package/components/ion-toolbar.js +6 -1
  133. package/components/ionic-global.js +144 -1
  134. package/components/ios.transition.js +672 -1
  135. package/components/item.js +302 -1
  136. package/components/keyboard-controller.js +162 -1
  137. package/components/keyboard.js +141 -1
  138. package/components/keyboard2.js +76 -1
  139. package/components/label.js +100 -1
  140. package/components/list-header.js +47 -1
  141. package/components/list.js +68 -1
  142. package/components/lock-controller.js +35 -1
  143. package/components/md.transition.js +51 -1
  144. package/components/menu-toggle-util.js +9 -1
  145. package/components/modal.js +2674 -1
  146. package/components/notch-controller.js +150 -1
  147. package/components/overlays.js +912 -1
  148. package/components/picker-column-option.js +136 -1
  149. package/components/picker-column.js +595 -1
  150. package/components/picker-column2.js +377 -1
  151. package/components/picker.js +498 -1
  152. package/components/popover.js +1502 -1
  153. package/components/radio-group.js +287 -1
  154. package/components/radio.js +229 -1
  155. package/components/refresher.utils.js +193 -1
  156. package/components/ripple-effect.js +109 -1
  157. package/components/select-modal.js +196 -1
  158. package/components/select-popover.js +189 -1
  159. package/components/spinner.js +224 -1
  160. package/components/status-tap.js +36 -1
  161. package/components/swipe-back.js +75 -1
  162. package/components/theme.js +40 -1
  163. package/components/title.js +70 -1
  164. package/components/toolbar.js +89 -1
  165. package/components/validity.js +14 -1
  166. package/components/watch-options.js +44 -1
  167. package/dist/cjs/{animation-Dg4yiuR2.js → animation-Bt3H9L1C.js} +1 -1
  168. package/dist/cjs/app-globals-Ciccnk9_.js +10 -0
  169. package/dist/cjs/{button-active-FscMI17-.js → button-active-CMc8cD90.js} +1 -1
  170. package/dist/cjs/{config-BukYi_pW.js → config-C5fsO43a.js} +1 -1
  171. package/dist/cjs/{data-BYlBjkMU.js → data-JwZKaIQB.js} +1 -1
  172. package/dist/cjs/{framework-delegate-CRgp8o_p.js → framework-delegate-DMJRBuDi.js} +1 -1
  173. package/dist/cjs/{hardware-back-button-C4rMJ5uI.js → hardware-back-button-VCK4V3mG.js} +1 -1
  174. package/dist/cjs/{helpers-CxTYJdbT.js → helpers-DrTqNghc.js} +1 -1
  175. package/dist/cjs/{index-C845Ti6K.js → index-094mMFB-.js} +4 -4
  176. package/dist/cjs/{index-YcSftOMz.js → index-C534ULug.js} +2 -2
  177. package/dist/cjs/{index-MbaBbWXk.js → index-CO6eryBo.js} +2 -2
  178. package/dist/cjs/{index-CqT-2gKy.js → index-D6Wc6v08.js} +382 -503
  179. package/dist/cjs/{index-CFUwM5x_.js → index-DrMUZJj6.js} +5 -5
  180. package/dist/cjs/index.cjs.js +12 -12
  181. package/dist/cjs/{input-shims-DlFhYYTs.js → input-shims-CW0KUFTQ.js} +3 -3
  182. package/dist/cjs/{input.utils-DmeJ8dmo.js → input.utils-B_QROI2g.js} +2 -2
  183. package/dist/cjs/ion-accordion_2.cjs.entry.js +15 -23
  184. package/dist/cjs/ion-action-sheet.cjs.entry.js +15 -21
  185. package/dist/cjs/ion-alert.cjs.entry.js +17 -25
  186. package/dist/cjs/ion-app_8.cjs.entry.js +40 -44
  187. package/dist/cjs/ion-avatar_3.cjs.entry.js +12 -12
  188. package/dist/cjs/ion-back-button.cjs.entry.js +7 -7
  189. package/dist/cjs/ion-backdrop.cjs.entry.js +6 -6
  190. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +14 -20
  191. package/dist/cjs/ion-button_2.cjs.entry.js +18 -36
  192. package/dist/cjs/ion-card_5.cjs.entry.js +23 -23
  193. package/dist/cjs/ion-checkbox.cjs.entry.js +7 -7
  194. package/dist/cjs/ion-chip.cjs.entry.js +6 -6
  195. package/dist/cjs/ion-col_3.cjs.entry.js +8 -8
  196. package/dist/cjs/ion-datetime-button.cjs.entry.js +8 -8
  197. package/dist/cjs/ion-datetime_3.cjs.entry.js +39 -67
  198. package/dist/cjs/ion-fab_3.cjs.entry.js +13 -17
  199. package/dist/cjs/ion-img.cjs.entry.js +6 -8
  200. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +13 -17
  201. package/dist/cjs/ion-input-otp.cjs.entry.js +10 -16
  202. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +7 -9
  203. package/dist/cjs/ion-input.cjs.entry.js +13 -21
  204. package/dist/cjs/ion-item-option_3.cjs.entry.js +15 -17
  205. package/dist/cjs/ion-item_8.cjs.entry.js +36 -42
  206. package/dist/cjs/ion-loading.cjs.entry.js +14 -18
  207. package/dist/cjs/ion-menu_3.cjs.entry.js +22 -30
  208. package/dist/cjs/ion-modal.cjs.entry.js +221 -62
  209. package/dist/cjs/ion-nav_2.cjs.entry.js +10 -14
  210. package/dist/cjs/ion-picker-column-option.cjs.entry.js +8 -10
  211. package/dist/cjs/ion-picker-column.cjs.entry.js +7 -11
  212. package/dist/cjs/ion-picker.cjs.entry.js +6 -6
  213. package/dist/cjs/ion-popover.cjs.entry.js +15 -21
  214. package/dist/cjs/ion-progress-bar.cjs.entry.js +7 -7
  215. package/dist/cjs/ion-radio_2.cjs.entry.js +13 -17
  216. package/dist/cjs/ion-range.cjs.entry.js +54 -180
  217. package/dist/cjs/ion-refresher_2.cjs.entry.js +14 -45
  218. package/dist/cjs/ion-reorder_2.cjs.entry.js +11 -13
  219. package/dist/cjs/ion-ripple-effect.cjs.entry.js +4 -4
  220. package/dist/cjs/ion-route_4.cjs.entry.js +10 -20
  221. package/dist/cjs/ion-searchbar.cjs.entry.js +12 -22
  222. package/dist/cjs/ion-segment-content.cjs.entry.js +3 -3
  223. package/dist/cjs/ion-segment-view.cjs.entry.js +5 -5
  224. package/dist/cjs/ion-segment_2.cjs.entry.js +16 -26
  225. package/dist/cjs/ion-select-modal.cjs.entry.js +12 -12
  226. package/dist/cjs/ion-select_3.cjs.entry.js +21 -29
  227. package/dist/cjs/ion-spinner.cjs.entry.js +4 -4
  228. package/dist/cjs/ion-split-pane.cjs.entry.js +9 -15
  229. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +12 -14
  230. package/dist/cjs/ion-tab_2.cjs.entry.js +8 -10
  231. package/dist/cjs/ion-text.cjs.entry.js +4 -4
  232. package/dist/cjs/ion-textarea.cjs.entry.js +12 -18
  233. package/dist/cjs/ion-toast.cjs.entry.js +15 -21
  234. package/dist/cjs/ion-toggle.cjs.entry.js +8 -10
  235. package/dist/cjs/{ionic-global-Bc3kJi1Z.js → ionic-global-HMVqOFGO.js} +1 -1
  236. package/dist/cjs/ionic.cjs.js +5 -5
  237. package/dist/cjs/{ios.transition-trBiC95R.js → ios.transition-BOt_uW73.js} +4 -4
  238. package/dist/cjs/loader.cjs.js +4 -4
  239. package/dist/cjs/{md.transition-CUQECuvD.js → md.transition-Dt968VXB.js} +4 -4
  240. package/dist/cjs/{notch-controller-sD-lTpdc.js → notch-controller-Bzqhjm4f.js} +1 -1
  241. package/dist/cjs/{overlays-C2jiBSNQ.js → overlays-B2b-TTbl.js} +5 -5
  242. package/dist/cjs/{status-tap-CCJk5VgT.js → status-tap-g0sWWkXk.js} +3 -3
  243. package/dist/cjs/{swipe-back-BGhTQ1CU.js → swipe-back-BIayeNOD.js} +2 -2
  244. package/dist/collection/collection-manifest.json +2 -2
  245. package/dist/collection/components/accordion-group/accordion-group.js +2 -4
  246. package/dist/collection/components/action-sheet/action-sheet.js +10 -20
  247. package/dist/collection/components/alert/alert.js +12 -24
  248. package/dist/collection/components/back-button/back-button.js +2 -4
  249. package/dist/collection/components/badge/badge.js +1 -2
  250. package/dist/collection/components/breadcrumb/breadcrumb.js +4 -8
  251. package/dist/collection/components/breadcrumbs/breadcrumbs.js +2 -4
  252. package/dist/collection/components/button/button.js +3 -6
  253. package/dist/collection/components/card/card.js +3 -6
  254. package/dist/collection/components/card-header/card-header.js +1 -2
  255. package/dist/collection/components/card-subtitle/card-subtitle.js +1 -2
  256. package/dist/collection/components/card-title/card-title.js +1 -2
  257. package/dist/collection/components/checkbox/checkbox.js +2 -4
  258. package/dist/collection/components/chip/chip.js +1 -2
  259. package/dist/collection/components/content/content.js +4 -8
  260. package/dist/collection/components/datetime/datetime.js +15 -34
  261. package/dist/collection/components/datetime-button/datetime-button.js +1 -2
  262. package/dist/collection/components/fab-button/fab-button.js +3 -6
  263. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +2 -4
  264. package/dist/collection/components/input/input.js +6 -11
  265. package/dist/collection/components/input-otp/input-otp.js +4 -8
  266. package/dist/collection/components/input-password-toggle/input-password-toggle.js +2 -4
  267. package/dist/collection/components/item/item.js +3 -6
  268. package/dist/collection/components/item-divider/item-divider.js +1 -2
  269. package/dist/collection/components/item-option/item-option.js +1 -2
  270. package/dist/collection/components/item-options/item-options.js +1 -2
  271. package/dist/collection/components/item-sliding/item-sliding.js +1 -2
  272. package/dist/collection/components/label/label.js +3 -6
  273. package/dist/collection/components/list-header/list-header.js +1 -2
  274. package/dist/collection/components/loading/loading.js +11 -22
  275. package/dist/collection/components/menu/menu.js +5 -10
  276. package/dist/collection/components/menu-button/menu-button.js +1 -2
  277. package/dist/collection/components/modal/gestures/sheet.js +108 -11
  278. package/dist/collection/components/modal/gestures/swipe-to-close.js +54 -1
  279. package/dist/collection/components/modal/modal.js +112 -58
  280. package/dist/collection/components/nav/nav.js +45 -89
  281. package/dist/collection/components/nav-link/nav-link.js +5 -9
  282. package/dist/collection/components/note/note.js +1 -2
  283. package/dist/collection/components/picker/picker.js +1 -2
  284. package/dist/collection/components/picker-column/picker-column.js +3 -6
  285. package/dist/collection/components/picker-column-option/picker-column-option.js +1 -2
  286. package/dist/collection/components/picker-legacy/picker.js +12 -24
  287. package/dist/collection/components/picker-legacy-column/picker-column.js +2 -4
  288. package/dist/collection/components/popover/popover.js +17 -33
  289. package/dist/collection/components/progress-bar/progress-bar.js +1 -2
  290. package/dist/collection/components/radio/radio.js +1 -2
  291. package/dist/collection/components/radio-group/radio-group.js +3 -6
  292. package/dist/collection/components/range/range.js +50 -189
  293. package/dist/collection/components/refresher/refresher.js +5 -73
  294. package/dist/collection/components/refresher-content/refresher-content.js +4 -8
  295. package/dist/collection/components/reorder-group/reorder-group.js +3 -6
  296. package/dist/collection/components/route/route.js +2 -4
  297. package/dist/collection/components/router/router.js +5 -10
  298. package/dist/collection/components/router-link/router-link.js +3 -6
  299. package/dist/collection/components/router-outlet/router-outlet.js +9 -18
  300. package/dist/collection/components/searchbar/searchbar.js +6 -11
  301. package/dist/collection/components/segment/segment.js +5 -10
  302. package/dist/collection/components/segment-button/segment-button.js +2 -4
  303. package/dist/collection/components/segment-view/segment-view.js +1 -2
  304. package/dist/collection/components/select/select.js +5 -10
  305. package/dist/collection/components/select-modal/select-modal.js +1 -2
  306. package/dist/collection/components/select-popover/select-popover.js +1 -2
  307. package/dist/collection/components/skeleton-text/skeleton-text.js +1 -2
  308. package/dist/collection/components/spinner/spinner.js +2 -4
  309. package/dist/collection/components/tab/tab.js +2 -4
  310. package/dist/collection/components/tab-bar/tab-bar.js +2 -4
  311. package/dist/collection/components/tab-button/tab-button.js +2 -4
  312. package/dist/collection/components/tabs/tabs.js +2 -4
  313. package/dist/collection/components/text/text.js +1 -2
  314. package/dist/collection/components/textarea/textarea.js +3 -6
  315. package/dist/collection/components/title/title.js +2 -4
  316. package/dist/collection/components/toast/toast.js +17 -34
  317. package/dist/collection/components/toggle/toggle.js +2 -4
  318. package/dist/collection/components/toolbar/toolbar.js +1 -2
  319. package/dist/docs.d.ts +0 -37
  320. package/dist/docs.json +442 -971
  321. package/dist/esm/{animation-CnGMT4ji.js → animation-Dt8bGnA-.js} +1 -1
  322. package/dist/esm/app-globals-BDSf8fOA.js +8 -0
  323. package/dist/esm/{button-active-BBx21brx.js → button-active-L570Swow.js} +1 -1
  324. package/dist/esm/{config-TO1rZH52.js → config-mCdtaoPe.js} +1 -1
  325. package/dist/esm/{data-B9iGR5YO.js → data-DCORV9FH.js} +1 -1
  326. package/dist/esm/{framework-delegate-CyxE1S_P.js → framework-delegate-BYawdMXj.js} +1 -1
  327. package/dist/esm/{hardware-back-button-CTe4XmL7.js → hardware-back-button-CPLxO-Ev.js} +1 -1
  328. package/dist/esm/{helpers-Tl8jw6S2.js → helpers-DEn3pfjm.js} +1 -1
  329. package/dist/esm/{index-hW6eNZ3o.js → index-Bs3kT4bc.js} +2 -2
  330. package/dist/esm/{index-IGIE5vDm.js → index-C8IsBmNU.js} +382 -503
  331. package/dist/esm/{index-B2KwgBLx.js → index-CvDIirVx.js} +5 -5
  332. package/dist/esm/{index-BtUdxPjv.js → index-ceb5RaMT.js} +2 -2
  333. package/dist/esm/{index-B-hkiOUh.js → index-r2D9DEro.js} +4 -4
  334. package/dist/esm/index.js +12 -12
  335. package/dist/esm/{input-shims-C1hAaHcP.js → input-shims-DyOpfTg6.js} +3 -3
  336. package/dist/esm/{input.utils-Bxa_DQ7-.js → input.utils-DrvTa8gz.js} +2 -2
  337. package/dist/esm/ion-accordion_2.entry.js +15 -23
  338. package/dist/esm/ion-action-sheet.entry.js +15 -21
  339. package/dist/esm/ion-alert.entry.js +17 -25
  340. package/dist/esm/ion-app_8.entry.js +40 -44
  341. package/dist/esm/ion-avatar_3.entry.js +12 -12
  342. package/dist/esm/ion-back-button.entry.js +7 -7
  343. package/dist/esm/ion-backdrop.entry.js +6 -6
  344. package/dist/esm/ion-breadcrumb_2.entry.js +14 -20
  345. package/dist/esm/ion-button_2.entry.js +18 -36
  346. package/dist/esm/ion-card_5.entry.js +23 -23
  347. package/dist/esm/ion-checkbox.entry.js +7 -7
  348. package/dist/esm/ion-chip.entry.js +6 -6
  349. package/dist/esm/ion-col_3.entry.js +8 -8
  350. package/dist/esm/ion-datetime-button.entry.js +8 -8
  351. package/dist/esm/ion-datetime_3.entry.js +39 -67
  352. package/dist/esm/ion-fab_3.entry.js +13 -17
  353. package/dist/esm/ion-img.entry.js +6 -8
  354. package/dist/esm/ion-infinite-scroll_2.entry.js +13 -17
  355. package/dist/esm/ion-input-otp.entry.js +10 -16
  356. package/dist/esm/ion-input-password-toggle.entry.js +7 -9
  357. package/dist/esm/ion-input.entry.js +13 -21
  358. package/dist/esm/ion-item-option_3.entry.js +15 -17
  359. package/dist/esm/ion-item_8.entry.js +36 -42
  360. package/dist/esm/ion-loading.entry.js +14 -18
  361. package/dist/esm/ion-menu_3.entry.js +22 -30
  362. package/dist/esm/ion-modal.entry.js +221 -62
  363. package/dist/esm/ion-nav_2.entry.js +10 -14
  364. package/dist/esm/ion-picker-column-option.entry.js +8 -10
  365. package/dist/esm/ion-picker-column.entry.js +7 -11
  366. package/dist/esm/ion-picker.entry.js +6 -6
  367. package/dist/esm/ion-popover.entry.js +15 -21
  368. package/dist/esm/ion-progress-bar.entry.js +7 -7
  369. package/dist/esm/ion-radio_2.entry.js +13 -17
  370. package/dist/esm/ion-range.entry.js +54 -180
  371. package/dist/esm/ion-refresher_2.entry.js +14 -45
  372. package/dist/esm/ion-reorder_2.entry.js +11 -13
  373. package/dist/esm/ion-ripple-effect.entry.js +4 -4
  374. package/dist/esm/ion-route_4.entry.js +10 -20
  375. package/dist/esm/ion-searchbar.entry.js +12 -22
  376. package/dist/esm/ion-segment-content.entry.js +3 -3
  377. package/dist/esm/ion-segment-view.entry.js +5 -5
  378. package/dist/esm/ion-segment_2.entry.js +16 -26
  379. package/dist/esm/ion-select-modal.entry.js +12 -12
  380. package/dist/esm/ion-select_3.entry.js +21 -29
  381. package/dist/esm/ion-spinner.entry.js +4 -4
  382. package/dist/esm/ion-split-pane.entry.js +9 -15
  383. package/dist/esm/ion-tab-bar_2.entry.js +12 -14
  384. package/dist/esm/ion-tab_2.entry.js +8 -10
  385. package/dist/esm/ion-text.entry.js +4 -4
  386. package/dist/esm/ion-textarea.entry.js +12 -18
  387. package/dist/esm/ion-toast.entry.js +15 -21
  388. package/dist/esm/ion-toggle.entry.js +8 -10
  389. package/dist/esm/{ionic-global-DfbeLwcV.js → ionic-global-CDrldh-5.js} +1 -1
  390. package/dist/esm/ionic.js +6 -6
  391. package/dist/esm/{ios.transition--aMF-pDH.js → ios.transition-BDzw0_Hm.js} +4 -4
  392. package/dist/esm/loader.js +5 -5
  393. package/dist/esm/{md.transition-BEVbfm8j.js → md.transition-BzDYi3qq.js} +4 -4
  394. package/dist/esm/{notch-controller-DAcvKU57.js → notch-controller-BwelN_JM.js} +1 -1
  395. package/dist/esm/{overlays-F8GHPo-e.js → overlays-D5YkFThA.js} +5 -5
  396. package/dist/esm/{status-tap-BfJqFSLF.js → status-tap-5DQ7Fc4V.js} +3 -3
  397. package/dist/esm/{swipe-back-BZBFwTQV.js → swipe-back-BKw2CAHc.js} +2 -2
  398. package/dist/html.html-data.json +109 -109
  399. package/dist/ionic/index.esm.js +1 -1
  400. package/dist/ionic/ionic.esm.js +1 -1
  401. package/dist/ionic/p-012212e4.entry.js +4 -0
  402. package/dist/ionic/p-074839fc.entry.js +4 -0
  403. package/dist/ionic/p-0dfa5a37.entry.js +4 -0
  404. package/dist/ionic/p-0f418a37.entry.js +4 -0
  405. package/dist/ionic/p-11518b31.entry.js +4 -0
  406. package/dist/ionic/{p-80cac7a2.entry.js → p-11aa58d6.entry.js} +1 -1
  407. package/dist/ionic/p-1838bed5.entry.js +4 -0
  408. package/dist/ionic/p-29721c43.entry.js +4 -0
  409. package/dist/ionic/{p-b67a2114.entry.js → p-2a939845.entry.js} +1 -1
  410. package/dist/ionic/{p-025d2d32.entry.js → p-316c0420.entry.js} +1 -1
  411. package/dist/ionic/p-31f7095f.entry.js +4 -0
  412. package/dist/ionic/p-34642fa1.entry.js +4 -0
  413. package/dist/ionic/p-35696017.entry.js +4 -0
  414. package/dist/ionic/{p-074344b8.entry.js → p-370e4237.entry.js} +1 -1
  415. package/dist/ionic/{p-964090ef.entry.js → p-3a6caca9.entry.js} +1 -1
  416. package/dist/ionic/p-40c261a3.entry.js +4 -0
  417. package/dist/ionic/{p-1fd588a7.entry.js → p-46d74291.entry.js} +1 -1
  418. package/dist/ionic/{p-301c43f8.entry.js → p-49d06882.entry.js} +1 -1
  419. package/dist/ionic/p-4e41ea20.entry.js +4 -0
  420. package/dist/ionic/{p-7c72d482.entry.js → p-51a60e0f.entry.js} +1 -1
  421. package/dist/ionic/{p-9833cf63.entry.js → p-582824c5.entry.js} +1 -1
  422. package/dist/ionic/p-6241ce47.entry.js +4 -0
  423. package/dist/ionic/p-639dd543.entry.js +4 -0
  424. package/dist/ionic/p-6444c606.entry.js +4 -0
  425. package/dist/ionic/{p-9fae83d8.entry.js → p-675b1a31.entry.js} +1 -1
  426. package/dist/ionic/p-6d070558.entry.js +4 -0
  427. package/dist/ionic/p-7268efa5.entry.js +4 -0
  428. package/dist/ionic/{p-b4d52b58.entry.js → p-72c38b88.entry.js} +1 -1
  429. package/dist/ionic/{p-370a60ee.entry.js → p-79bd78f9.entry.js} +1 -1
  430. package/dist/ionic/p-7babec72.entry.js +4 -0
  431. package/dist/ionic/{p-a287e18e.entry.js → p-86f53961.entry.js} +1 -1
  432. package/dist/ionic/{p-277abec1.entry.js → p-94de5cfa.entry.js} +1 -1
  433. package/dist/ionic/{p-e663bc5a.entry.js → p-9575b654.entry.js} +1 -1
  434. package/dist/ionic/{p-c1c9b2bb.entry.js → p-9a2d390d.entry.js} +1 -1
  435. package/dist/ionic/{p-DB_iPQC-.js → p-B0q1YL7N.js} +1 -1
  436. package/dist/ionic/{p-NFFyoJ4Q.js → p-BFvmZNyx.js} +1 -1
  437. package/dist/ionic/p-BKc55Xev.js +4 -0
  438. package/dist/ionic/{p-CYbRmDdy.js → p-BOVrCkpJ.js} +1 -1
  439. package/dist/ionic/{p-C0JvVFMv.js → p-BYEqWnSg.js} +1 -1
  440. package/dist/ionic/p-Bmgaetn_.js +4 -0
  441. package/dist/ionic/{p-BAt5H1ac.js → p-C7hRNDhM.js} +1 -1
  442. package/dist/ionic/p-C8IsBmNU.js +5 -0
  443. package/dist/ionic/p-CJxh_yLS.js +4 -0
  444. package/dist/ionic/{p-CGmVTdWh.js → p-CTfR9YZG.js} +1 -1
  445. package/dist/ionic/{p-B8xlpH8p.js → p-CwgG81ZD.js} +1 -1
  446. package/dist/ionic/{p-CmFz1Mjc.js → p-D-eFFUkA.js} +1 -1
  447. package/dist/ionic/{p-BvFYtOdE.js → p-D0dMcSkw.js} +1 -1
  448. package/dist/ionic/{p-DjriolRs.js → p-DCv9sLH2.js} +1 -1
  449. package/dist/ionic/{p-Bum7H1fw.js → p-DDb5r57F.js} +1 -1
  450. package/dist/ionic/{p-DLbbmF9h.js → p-DNcfiJwE.js} +1 -1
  451. package/dist/ionic/p-DUt5fQmA.js +4 -0
  452. package/dist/ionic/p-DZRJwG4S.js +4 -0
  453. package/dist/ionic/{p-gbVXD275.js → p-DbQ5QkTP.js} +1 -1
  454. package/dist/ionic/{p-BxIcPWoV.js → p-Dc45iWE4.js} +1 -1
  455. package/dist/ionic/{p-DTPR1Wpn.js → p-DdR6rpbR.js} +1 -1
  456. package/dist/ionic/{p-GWUGgWx6.js → p-QHYY4sjU.js} +1 -1
  457. package/dist/ionic/p-a127bee2.entry.js +4 -0
  458. package/dist/ionic/{p-f5dfb9a3.entry.js → p-ac4eb91d.entry.js} +1 -1
  459. package/dist/ionic/{p-ca31010f.entry.js → p-b0a7585c.entry.js} +1 -1
  460. package/dist/ionic/p-b3d44509.entry.js +4 -0
  461. package/dist/ionic/{p-bced1f3e.entry.js → p-c73627c8.entry.js} +1 -1
  462. package/dist/ionic/p-cc45bcbc.entry.js +4 -0
  463. package/dist/ionic/p-d0a2a1ab.entry.js +4 -0
  464. package/dist/ionic/{p-9745651b.entry.js → p-d126e8d3.entry.js} +1 -1
  465. package/dist/ionic/{p-b440381f.entry.js → p-d1f54e28.entry.js} +1 -1
  466. package/dist/ionic/{p-1fa1406c.entry.js → p-d2489bf2.entry.js} +1 -1
  467. package/dist/ionic/p-d3014190.entry.js +4 -0
  468. package/dist/ionic/{p-a84f2d21.entry.js → p-da7d04cc.entry.js} +1 -1
  469. package/dist/ionic/p-db82892c.entry.js +4 -0
  470. package/dist/ionic/{p-b2d5238b.entry.js → p-dbbe606a.entry.js} +1 -1
  471. package/dist/ionic/{p-28d7852f.entry.js → p-dd1aef77.entry.js} +1 -1
  472. package/dist/ionic/p-e1d1f3cc.entry.js +4 -0
  473. package/dist/ionic/{p-c3e65e45.entry.js → p-f8f22cc0.entry.js} +1 -1
  474. package/dist/ionic/{p-9802c88e.entry.js → p-f9061316.entry.js} +1 -1
  475. package/dist/types/components/datetime/datetime.d.ts +0 -9
  476. package/dist/types/components/header/header.utils.d.ts +1 -2
  477. package/dist/types/components/modal/gestures/sheet.d.ts +2 -2
  478. package/dist/types/components/modal/gestures/swipe-to-close.d.ts +2 -2
  479. package/dist/types/components/modal/modal-interface.d.ts +7 -0
  480. package/dist/types/components/modal/modal.d.ts +17 -1
  481. package/dist/types/components/range/range-interface.d.ts +0 -1
  482. package/dist/types/components/range/range.d.ts +4 -33
  483. package/dist/types/components/refresher/refresher-interface.d.ts +0 -7
  484. package/dist/types/components/refresher/refresher.d.ts +3 -16
  485. package/dist/types/components.d.ts +206 -929
  486. package/dist/types/interface.d.ts +2 -2
  487. package/dist/types/stencil-public-runtime.d.ts +14 -126
  488. package/dist/types/utils/gesture/listener.d.ts +1 -2
  489. package/hydrate/index.d.ts +0 -12
  490. package/hydrate/index.js +1550 -5375
  491. package/hydrate/index.mjs +1551 -5374
  492. package/package.json +2 -2
  493. package/dist/cjs/app-globals-CLI8xCmk.js +0 -11
  494. package/dist/esm/app-globals-DhZjtldk.js +0 -9
  495. package/dist/ionic/p-02acdef4.entry.js +0 -4
  496. package/dist/ionic/p-04e2c388.entry.js +0 -4
  497. package/dist/ionic/p-13ade5c8.entry.js +0 -4
  498. package/dist/ionic/p-1b02923f.entry.js +0 -4
  499. package/dist/ionic/p-1bd477a9.entry.js +0 -4
  500. package/dist/ionic/p-239a27a4.entry.js +0 -4
  501. package/dist/ionic/p-3e143d1d.entry.js +0 -4
  502. package/dist/ionic/p-4431ef7e.entry.js +0 -4
  503. package/dist/ionic/p-463767ce.entry.js +0 -4
  504. package/dist/ionic/p-4f888343.entry.js +0 -4
  505. package/dist/ionic/p-51c11c47.entry.js +0 -4
  506. package/dist/ionic/p-56050077.entry.js +0 -4
  507. package/dist/ionic/p-6a3a5aae.entry.js +0 -4
  508. package/dist/ionic/p-6b97f2a3.entry.js +0 -4
  509. package/dist/ionic/p-77de9c60.entry.js +0 -4
  510. package/dist/ionic/p-7d20f4f8.entry.js +0 -4
  511. package/dist/ionic/p-91fc7352.entry.js +0 -4
  512. package/dist/ionic/p-93845421.entry.js +0 -4
  513. package/dist/ionic/p-96a2e768.entry.js +0 -4
  514. package/dist/ionic/p-9d1676bb.entry.js +0 -4
  515. package/dist/ionic/p-BW_TRJm8.js +0 -4
  516. package/dist/ionic/p-CtA-yJYy.js +0 -4
  517. package/dist/ionic/p-D8HJQ1qq.js +0 -4
  518. package/dist/ionic/p-DtVZDHlS.js +0 -4
  519. package/dist/ionic/p-IGIE5vDm.js +0 -5
  520. package/dist/ionic/p-a805674e.entry.js +0 -4
  521. package/dist/ionic/p-a81ae2cd.entry.js +0 -4
  522. package/dist/ionic/p-cbf245b5.entry.js +0 -4
  523. package/dist/ionic/p-d68b665a.entry.js +0 -4
  524. package/dist/ionic/p-efe86ed9.entry.js +0 -4
  525. package/dist/ionic/p-hNN3VvaC.js +0 -4
@@ -1,4 +1,115 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import{w as t}from"./index9.js";import{c as e,a as n}from"./index4.js";const o=()=>e.get("experimentalCloseWatcher",!1)&&void 0!==t&&"CloseWatcher"in t,i=()=>{document.addEventListener("backbutton",(()=>{}))},r=()=>{const e=document;let i=!1;const r=()=>{if(i)return;let t=0,o=[];const r=new CustomEvent("ionBackButton",{bubbles:!1,detail:{register(e,n){o.push({priority:e,handler:n,id:t++})}}});e.dispatchEvent(r);const a=()=>{if(o.length>0){let t={priority:Number.MIN_SAFE_INTEGER,handler:()=>{},id:-1};o.forEach((e=>{e.priority>=t.priority&&(t=e)})),i=!0,o=o.filter((e=>e.id!==t.id)),(async t=>{try{if(null==t?void 0:t.handler){const e=t.handler(a);null!=e&&await e}}catch(t){n("[ion-app] - Exception in startHardwareBackButton:",t)}})(t).then((()=>i=!1))}};a()};if(o()){let e;const n=()=>{null==e||e.destroy(),e=new t.CloseWatcher,e.onclose=()=>{r(),n()}};n()}else e.addEventListener("backbutton",r)},a=100,c=99;export{c as MENU_BACK_BUTTON_PRIORITY,a as OVERLAY_BACK_BUTTON_PRIORITY,i as blockHardwareBackButton,o as shouldUseCloseWatcher,r as startHardwareBackButton}
4
+ import { w as win } from './index9.js';
5
+ import { c as config, a as printIonError } from './index4.js';
6
+
7
+ /**
8
+ * CloseWatcher is a newer API that lets
9
+ * use detect the hardware back button event
10
+ * in a web browser: https://caniuse.com/?search=closewatcher
11
+ * However, not every browser supports it yet.
12
+ *
13
+ * This needs to be a function so that we can
14
+ * check the config once it has been set.
15
+ * Otherwise, this code would be evaluated the
16
+ * moment this file is evaluated which could be
17
+ * before the config is set.
18
+ */
19
+ const shouldUseCloseWatcher = () => config.get('experimentalCloseWatcher', false) && win !== undefined && 'CloseWatcher' in win;
20
+ /**
21
+ * When hardwareBackButton: false in config,
22
+ * we need to make sure we also block the default
23
+ * webview behavior. If we don't then it will be
24
+ * possible for users to navigate backward while
25
+ * an overlay is still open. Additionally, it will
26
+ * give the appearance that the hardwareBackButton
27
+ * config is not working as the page transition
28
+ * will still happen.
29
+ */
30
+ const blockHardwareBackButton = () => {
31
+ document.addEventListener('backbutton', () => { }); // eslint-disable-line
32
+ };
33
+ const startHardwareBackButton = () => {
34
+ const doc = document;
35
+ let busy = false;
36
+ const backButtonCallback = () => {
37
+ if (busy) {
38
+ return;
39
+ }
40
+ let index = 0;
41
+ let handlers = [];
42
+ const ev = new CustomEvent('ionBackButton', {
43
+ bubbles: false,
44
+ detail: {
45
+ register(priority, handler) {
46
+ handlers.push({ priority, handler, id: index++ });
47
+ },
48
+ },
49
+ });
50
+ doc.dispatchEvent(ev);
51
+ const executeAction = async (handlerRegister) => {
52
+ try {
53
+ if (handlerRegister === null || handlerRegister === void 0 ? void 0 : handlerRegister.handler) {
54
+ const result = handlerRegister.handler(processHandlers);
55
+ if (result != null) {
56
+ await result;
57
+ }
58
+ }
59
+ }
60
+ catch (e) {
61
+ printIonError('[ion-app] - Exception in startHardwareBackButton:', e);
62
+ }
63
+ };
64
+ const processHandlers = () => {
65
+ if (handlers.length > 0) {
66
+ let selectedHandler = {
67
+ priority: Number.MIN_SAFE_INTEGER,
68
+ handler: () => undefined,
69
+ id: -1,
70
+ };
71
+ handlers.forEach((handler) => {
72
+ if (handler.priority >= selectedHandler.priority) {
73
+ selectedHandler = handler;
74
+ }
75
+ });
76
+ busy = true;
77
+ handlers = handlers.filter((handler) => handler.id !== selectedHandler.id);
78
+ executeAction(selectedHandler).then(() => (busy = false));
79
+ }
80
+ };
81
+ processHandlers();
82
+ };
83
+ /**
84
+ * If the CloseWatcher is defined then
85
+ * we don't want to also listen for the native
86
+ * backbutton event otherwise we may get duplicate
87
+ * events firing.
88
+ */
89
+ if (shouldUseCloseWatcher()) {
90
+ let watcher;
91
+ const configureWatcher = () => {
92
+ watcher === null || watcher === void 0 ? void 0 : watcher.destroy();
93
+ watcher = new win.CloseWatcher();
94
+ /**
95
+ * Once a close request happens
96
+ * the watcher gets destroyed.
97
+ * As a result, we need to re-configure
98
+ * the watcher so we can respond to other
99
+ * close requests.
100
+ */
101
+ watcher.onclose = () => {
102
+ backButtonCallback();
103
+ configureWatcher();
104
+ };
105
+ };
106
+ configureWatcher();
107
+ }
108
+ else {
109
+ doc.addEventListener('backbutton', backButtonCallback);
110
+ }
111
+ };
112
+ const OVERLAY_BACK_BUTTON_PRIORITY = 100;
113
+ const MENU_BACK_BUTTON_PRIORITY = 99; // 1 less than overlay priority since menu is displayed behind overlays
114
+
115
+ export { MENU_BACK_BUTTON_PRIORITY, OVERLAY_BACK_BUTTON_PRIORITY, blockHardwareBackButton, shouldUseCloseWatcher, startHardwareBackButton };
@@ -1,4 +1,420 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import{readTask as e,writeTask as o,proxyCustomElement as n,HTMLElement as t,h as i,Host as a,transformTag as s}from"@stencil/core/internal/client";import{g as r,f as l,p as d}from"./index8.js";import{f as c,i as h}from"./helpers.js";import{h as p}from"./theme.js";import{b}from"./ionic-global.js";const u="none",f="banner",m=e=>{const o=document.querySelector(`${e}.ion-cloned-element`);if(null!==o)return o;const n=document.createElement(e);return n.classList.add("ion-cloned-element"),n.style.setProperty("display","none"),document.body.appendChild(n),n},x=e=>{if(!e)return;const o=e.querySelectorAll("ion-toolbar");return{el:e,toolbars:Array.from(o).map((e=>{const o=e.querySelector("ion-title");return{el:e,background:e.shadowRoot.querySelector(".toolbar-background"),ionTitleEl:o,innerTitleEl:o?o.shadowRoot.querySelector(".toolbar-title"):null,ionButtonsEl:Array.from(e.querySelectorAll("ion-buttons"))}}))}},y=(e,o)=>{"fade"!==e.collapse&&(void 0===o?e.style.removeProperty("--opacity-scale"):e.style.setProperty("--opacity-scale",o.toString()))},g=(e,o=!0)=>{const n=e.el,t=e.toolbars.map((e=>e.ionTitleEl));o?(n.setAttribute("role",f),n.classList.remove("header-collapse-condense-inactive"),t.forEach((e=>{e&&e.removeAttribute("aria-hidden")}))):(n.setAttribute("role",u),n.classList.add("header-collapse-condense-inactive"),t.forEach((e=>{e&&e.setAttribute("aria-hidden","true")})))},k=(n,t,i)=>{e((()=>{const e=n.scrollTop,a=t.clientHeight,s=i?i.clientHeight:0;if(null!==i&&e<s)return t.style.setProperty("--opacity-scale","0"),void n.style.setProperty("clip-path",`inset(${a}px 0px 0px 0px)`);const r=c(0,(e-s)/10,1);o((()=>{n.style.removeProperty("clip-path"),t.style.setProperty("--opacity-scale",r.toString())}))}))},v=n(class extends t{constructor(e){super(),!1!==e&&this.__registerHost(),this.inheritedAttributes={},this.translucent=!1,this.setupFadeHeader=async(e,o)=>{const n=this.scrollEl=await r(e);this.contentScrollCallback=()=>{k(this.scrollEl,this.el,o)},n.addEventListener("scroll",this.contentScrollCallback),k(this.scrollEl,this.el,o)}}componentWillLoad(){this.inheritedAttributes=h(this.el)}componentDidLoad(){this.checkCollapsibleHeader()}componentDidUpdate(){this.checkCollapsibleHeader()}disconnectedCallback(){this.destroyCollapsibleHeader()}async checkCollapsibleHeader(){if("ios"!==b(this))return;const{collapse:e}=this,n="condense"===e,t="fade"===e;if(this.destroyCollapsibleHeader(),n){const e=this.el.closest("ion-app,ion-page,.ion-page,page-inner"),n=e?l(e):null;o((()=>{m("ion-title").size="large",m("ion-back-button")})),await this.setupCondenseHeader(n,e)}else if(t){const e=this.el.closest("ion-app,ion-page,.ion-page,page-inner"),o=e?l(e):null;if(!o)return void d(this.el);const n=o.querySelector('ion-header[collapse="condense"]');await this.setupFadeHeader(o,n)}}destroyCollapsibleHeader(){this.intersectionObserver&&(this.intersectionObserver.disconnect(),this.intersectionObserver=void 0),this.scrollEl&&this.contentScrollCallback&&(this.scrollEl.removeEventListener("scroll",this.contentScrollCallback),this.contentScrollCallback=void 0),this.collapsibleMainHeader&&(this.collapsibleMainHeader.classList.remove("header-collapse-main"),this.collapsibleMainHeader=void 0)}async setupCondenseHeader(n,t){if(!n||!t)return void d(this.el);if("undefined"==typeof IntersectionObserver)return;this.scrollEl=await r(n);const i=t.querySelectorAll("ion-header");if(this.collapsibleMainHeader=Array.from(i).find((e=>"condense"!==e.collapse)),!this.collapsibleMainHeader)return;const a=x(this.collapsibleMainHeader),s=x(this.el);a&&s&&(g(a,!1),y(a.el,0),this.intersectionObserver=new IntersectionObserver((e=>{((e,n,t,i)=>{o((()=>{const o=i.scrollTop;((e,o,n)=>{if(!e[0].isIntersecting)return;const t=e[0].intersectionRatio>.9||n<=0?0:100*(1-e[0].intersectionRatio)/75;y(o.el,1===t?void 0:t)})(e,n,o);const a=e[0],s=a.intersectionRect,r=s.width*s.height,l=0===r&&0==a.rootBounds.width*a.rootBounds.height,d=Math.abs(s.left-a.boundingClientRect.left),c=Math.abs(s.right-a.boundingClientRect.right);l||r>0&&(d>=5||c>=5)||(a.isIntersecting?(g(n,!1),g(t)):(0===s.x&&0===s.y||0!==s.width&&0!==s.height)&&o>0&&(g(n),g(t,!1),y(n.el)))}))})(e,a,s,this.scrollEl)}),{root:n,threshold:[.25,.3,.4,.5,.6,.7,.8,.9,1]}),this.intersectionObserver.observe(s.toolbars[s.toolbars.length-1].el),this.contentScrollCallback=()=>{((n,t,i)=>{e((()=>{const e=c(1,1+-n.scrollTop/500,1.1);null===i.querySelector("ion-refresher.refresher-native")&&o((()=>{((e=[],o=1,n=!1)=>{e.forEach((e=>{const t=e.ionTitleEl,i=e.innerTitleEl;t&&"large"===t.size&&(i.style.transition=n?"all 0.2s ease-in-out":"",i.style.transform=`scale3d(${o}, ${o}, 1)`)}))})(t.toolbars,e)}))}))})(this.scrollEl,s,n)},this.scrollEl.addEventListener("scroll",this.contentScrollCallback),o((()=>{void 0!==this.collapsibleMainHeader&&this.collapsibleMainHeader.classList.add("header-collapse-main")})))}render(){const{translucent:e,inheritedAttributes:o}=this,n=b(this),t=this.collapse||"none",s="condense"===t,r=((e,o,n)=>e||o&&"md"===n?u:f)(p("ion-menu",this.el),s,n);return i(a,Object.assign({key:"863c4568cd7b8c0ec55109f193bbbaed68a1346e",role:r,class:{[n]:!0,[`header-${n}`]:!0,"header-translucent":this.translucent,[`header-collapse-${t}`]:!0,[`header-translucent-${n}`]:this.translucent}},o),"ios"===n&&e&&i("div",{key:"25c3bdce328b0b35607d154c8b8374679313d881",class:"header-background"}),i("slot",{key:"b44fab0a9be7920b9650da26117c783e751e1702"}))}get el(){return this}static get style(){return{ios:"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-fade.header-transitioning ion-toolbar{--background:transparent;--border-style:none}.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{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 ion-toolbar,.header-collapse-condense-inactive.header-transitioning:not(.header-collapse-condense) ion-toolbar{--background:var(--ion-background-color, #fff)}.header-collapse-condense-inactive.header-transitioning:not(.header-collapse-condense) ion-toolbar{--border-style:none;--opacity-scale:1}.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}",md:"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-md.header-collapse-condense{display:none}.header-md.ion-no-border{-webkit-box-shadow:none;box-shadow:none}"}}},[292,"ion-header",{collapse:[1],translucent:[4]}]);function w(){"undefined"!=typeof customElements&&["ion-header"].forEach((e=>{"ion-header"===e&&(customElements.get(s(e))||customElements.define(s(e),v))}))}export{v as H,w as d}
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';
6
+ import { f as clamp, i as inheritAriaAttributes } from './helpers.js';
7
+ import { h as hostContext } from './theme.js';
8
+ import { b as getIonMode } from './ionic-global.js';
9
+
10
+ const TRANSITION = 'all 0.2s ease-in-out';
11
+ const ROLE_NONE = 'none';
12
+ const ROLE_BANNER = 'banner';
13
+ const cloneElement = (tagName) => {
14
+ const getCachedEl = document.querySelector(`${tagName}.ion-cloned-element`);
15
+ if (getCachedEl !== null) {
16
+ return getCachedEl;
17
+ }
18
+ const clonedEl = document.createElement(tagName);
19
+ clonedEl.classList.add('ion-cloned-element');
20
+ clonedEl.style.setProperty('display', 'none');
21
+ document.body.appendChild(clonedEl);
22
+ return clonedEl;
23
+ };
24
+ const createHeaderIndex = (headerEl) => {
25
+ if (!headerEl) {
26
+ return;
27
+ }
28
+ const toolbars = headerEl.querySelectorAll('ion-toolbar');
29
+ return {
30
+ el: headerEl,
31
+ toolbars: Array.from(toolbars).map((toolbar) => {
32
+ const ionTitleEl = toolbar.querySelector('ion-title');
33
+ return {
34
+ el: toolbar,
35
+ background: toolbar.shadowRoot.querySelector('.toolbar-background'),
36
+ ionTitleEl,
37
+ innerTitleEl: ionTitleEl ? ionTitleEl.shadowRoot.querySelector('.toolbar-title') : null,
38
+ ionButtonsEl: Array.from(toolbar.querySelectorAll('ion-buttons')),
39
+ };
40
+ }),
41
+ };
42
+ };
43
+ const handleContentScroll = (scrollEl, scrollHeaderIndex, contentEl) => {
44
+ readTask(() => {
45
+ const scrollTop = scrollEl.scrollTop;
46
+ const scale = clamp(1, 1 + -scrollTop / 500, 1.1);
47
+ // Native refresher should not cause titles to scale
48
+ const nativeRefresher = contentEl.querySelector('ion-refresher.refresher-native');
49
+ if (nativeRefresher === null) {
50
+ writeTask(() => {
51
+ scaleLargeTitles(scrollHeaderIndex.toolbars, scale);
52
+ });
53
+ }
54
+ });
55
+ };
56
+ const setToolbarBackgroundOpacity = (headerEl, opacity) => {
57
+ /**
58
+ * Fading in the backdrop opacity
59
+ * should happen after the large title
60
+ * has collapsed, so it is handled
61
+ * by handleHeaderFade()
62
+ */
63
+ if (headerEl.collapse === 'fade') {
64
+ return;
65
+ }
66
+ if (opacity === undefined) {
67
+ headerEl.style.removeProperty('--opacity-scale');
68
+ }
69
+ else {
70
+ headerEl.style.setProperty('--opacity-scale', opacity.toString());
71
+ }
72
+ };
73
+ const handleToolbarBorderIntersection = (ev, mainHeaderIndex, scrollTop) => {
74
+ if (!ev[0].isIntersecting) {
75
+ return;
76
+ }
77
+ /**
78
+ * There is a bug in Safari where overflow scrolling on a non-body element
79
+ * does not always reset the scrollTop position to 0 when letting go. It will
80
+ * set to 1 once the rubber band effect has ended. This causes the background to
81
+ * appear slightly on certain app setups.
82
+ *
83
+ * Additionally, we check if user is rubber banding (scrolling is negative)
84
+ * as this can mean they are using pull to refresh. Once the refresher starts,
85
+ * the content is transformed which can cause the intersection observer to erroneously
86
+ * fire here as well.
87
+ */
88
+ const scale = ev[0].intersectionRatio > 0.9 || scrollTop <= 0 ? 0 : ((1 - ev[0].intersectionRatio) * 100) / 75;
89
+ setToolbarBackgroundOpacity(mainHeaderIndex.el, scale === 1 ? undefined : scale);
90
+ };
91
+ /**
92
+ * If toolbars are intersecting, hide the scrollable toolbar content
93
+ * and show the primary toolbar content. If the toolbars are not intersecting,
94
+ * hide the primary toolbar content and show the scrollable toolbar content
95
+ */
96
+ const handleToolbarIntersection = (ev, // TODO(FW-2832): type (IntersectionObserverEntry[] triggers errors which should be sorted)
97
+ mainHeaderIndex, scrollHeaderIndex, scrollEl) => {
98
+ writeTask(() => {
99
+ const scrollTop = scrollEl.scrollTop;
100
+ handleToolbarBorderIntersection(ev, mainHeaderIndex, scrollTop);
101
+ const event = ev[0];
102
+ const intersection = event.intersectionRect;
103
+ const intersectionArea = intersection.width * intersection.height;
104
+ const rootArea = event.rootBounds.width * event.rootBounds.height;
105
+ const isPageHidden = intersectionArea === 0 && rootArea === 0;
106
+ const leftDiff = Math.abs(intersection.left - event.boundingClientRect.left);
107
+ const rightDiff = Math.abs(intersection.right - event.boundingClientRect.right);
108
+ const isPageTransitioning = intersectionArea > 0 && (leftDiff >= 5 || rightDiff >= 5);
109
+ if (isPageHidden || isPageTransitioning) {
110
+ return;
111
+ }
112
+ if (event.isIntersecting) {
113
+ setHeaderActive(mainHeaderIndex, false);
114
+ setHeaderActive(scrollHeaderIndex);
115
+ }
116
+ else {
117
+ /**
118
+ * There is a bug with IntersectionObserver on Safari
119
+ * where `event.isIntersecting === false` when cancelling
120
+ * a swipe to go back gesture. Checking the intersection
121
+ * x, y, width, and height provides a workaround. This bug
122
+ * does not happen when using Safari + Web Animations,
123
+ * only Safari + CSS Animations.
124
+ */
125
+ const hasValidIntersection = (intersection.x === 0 && intersection.y === 0) || (intersection.width !== 0 && intersection.height !== 0);
126
+ if (hasValidIntersection && scrollTop > 0) {
127
+ setHeaderActive(mainHeaderIndex);
128
+ setHeaderActive(scrollHeaderIndex, false);
129
+ setToolbarBackgroundOpacity(mainHeaderIndex.el);
130
+ }
131
+ }
132
+ });
133
+ };
134
+ const setHeaderActive = (headerIndex, active = true) => {
135
+ const headerEl = headerIndex.el;
136
+ const toolbars = headerIndex.toolbars;
137
+ const ionTitles = toolbars.map((toolbar) => toolbar.ionTitleEl);
138
+ if (active) {
139
+ headerEl.setAttribute('role', ROLE_BANNER);
140
+ headerEl.classList.remove('header-collapse-condense-inactive');
141
+ ionTitles.forEach((ionTitle) => {
142
+ if (ionTitle) {
143
+ ionTitle.removeAttribute('aria-hidden');
144
+ }
145
+ });
146
+ }
147
+ else {
148
+ /**
149
+ * There can only be one banner landmark per page.
150
+ * By default, all ion-headers have the banner role.
151
+ * This causes an accessibility issue when using a
152
+ * condensed header since there are two ion-headers
153
+ * on the page at once (active and inactive).
154
+ * To solve this, the role needs to be toggled
155
+ * based on which header is active.
156
+ */
157
+ headerEl.setAttribute('role', ROLE_NONE);
158
+ headerEl.classList.add('header-collapse-condense-inactive');
159
+ /**
160
+ * The small title should only be accessed by screen readers
161
+ * when the large title collapses into the small title due
162
+ * to scrolling.
163
+ *
164
+ * Originally, the header was given `aria-hidden="true"`
165
+ * but this caused issues with screen readers not being
166
+ * able to access any focusable elements within the header.
167
+ */
168
+ ionTitles.forEach((ionTitle) => {
169
+ if (ionTitle) {
170
+ ionTitle.setAttribute('aria-hidden', 'true');
171
+ }
172
+ });
173
+ }
174
+ };
175
+ const scaleLargeTitles = (toolbars = [], scale = 1, transition = false) => {
176
+ toolbars.forEach((toolbar) => {
177
+ const ionTitle = toolbar.ionTitleEl;
178
+ const titleDiv = toolbar.innerTitleEl;
179
+ if (!ionTitle || ionTitle.size !== 'large') {
180
+ return;
181
+ }
182
+ titleDiv.style.transition = transition ? TRANSITION : '';
183
+ titleDiv.style.transform = `scale3d(${scale}, ${scale}, 1)`;
184
+ });
185
+ };
186
+ const handleHeaderFade = (scrollEl, baseEl, condenseHeader) => {
187
+ readTask(() => {
188
+ const scrollTop = scrollEl.scrollTop;
189
+ const baseElHeight = baseEl.clientHeight;
190
+ const fadeStart = condenseHeader ? condenseHeader.clientHeight : 0;
191
+ /**
192
+ * If we are using fade header with a condense
193
+ * header, then the toolbar backgrounds should
194
+ * not begin to fade in until the condense
195
+ * header has fully collapsed.
196
+ *
197
+ * Additionally, the main content should not
198
+ * overflow out of the container until the
199
+ * condense header has fully collapsed. When
200
+ * using just the condense header the content
201
+ * should overflow out of the container.
202
+ */
203
+ if (condenseHeader !== null && scrollTop < fadeStart) {
204
+ baseEl.style.setProperty('--opacity-scale', '0');
205
+ scrollEl.style.setProperty('clip-path', `inset(${baseElHeight}px 0px 0px 0px)`);
206
+ return;
207
+ }
208
+ const distanceToStart = scrollTop - fadeStart;
209
+ const fadeDuration = 10;
210
+ const scale = clamp(0, distanceToStart / fadeDuration, 1);
211
+ writeTask(() => {
212
+ scrollEl.style.removeProperty('clip-path');
213
+ baseEl.style.setProperty('--opacity-scale', scale.toString());
214
+ });
215
+ });
216
+ };
217
+ /**
218
+ * Get the role type for the ion-header.
219
+ *
220
+ * @param isInsideMenu If ion-header is inside ion-menu.
221
+ * @param isCondensed If ion-header has collapse="condense".
222
+ * @param mode The current mode.
223
+ * @returns 'none' if inside ion-menu or if condensed in md
224
+ * mode, otherwise 'banner'.
225
+ */
226
+ const getRoleType = (isInsideMenu, isCondensed, mode) => {
227
+ // If the header is inside a menu, it should not have the banner role.
228
+ if (isInsideMenu) {
229
+ return ROLE_NONE;
230
+ }
231
+ /**
232
+ * Only apply role="none" to `md` mode condensed headers
233
+ * since the large header is never shown.
234
+ */
235
+ if (isCondensed && mode === 'md') {
236
+ return ROLE_NONE;
237
+ }
238
+ // Default to banner role.
239
+ return ROLE_BANNER;
240
+ };
241
+
242
+ 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-fade.header-transitioning ion-toolbar{--background:transparent;--border-style:none}.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{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 ion-toolbar,.header-collapse-condense-inactive.header-transitioning:not(.header-collapse-condense) ion-toolbar{--background:var(--ion-background-color, #fff)}.header-collapse-condense-inactive.header-transitioning:not(.header-collapse-condense) ion-toolbar{--border-style:none;--opacity-scale:1}.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}";
243
+
244
+ 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-md.header-collapse-condense{display:none}.header-md.ion-no-border{-webkit-box-shadow:none;box-shadow:none}";
245
+
246
+ const Header = /*@__PURE__*/ proxyCustomElement(class Header extends HTMLElement {
247
+ constructor(registerHost) {
248
+ super();
249
+ if (registerHost !== false) {
250
+ this.__registerHost();
251
+ }
252
+ this.inheritedAttributes = {};
253
+ /**
254
+ * If `true`, the header will be translucent.
255
+ * Only applies when the mode is `"ios"` and the device supports
256
+ * [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).
257
+ *
258
+ * Note: In order to scroll content behind the header, the `fullscreen`
259
+ * attribute needs to be set on the content.
260
+ */
261
+ this.translucent = false;
262
+ this.setupFadeHeader = async (contentEl, condenseHeader) => {
263
+ const scrollEl = (this.scrollEl = await getScrollElement(contentEl));
264
+ /**
265
+ * Handle fading of toolbars on scroll
266
+ */
267
+ this.contentScrollCallback = () => {
268
+ handleHeaderFade(this.scrollEl, this.el, condenseHeader);
269
+ };
270
+ scrollEl.addEventListener('scroll', this.contentScrollCallback);
271
+ handleHeaderFade(this.scrollEl, this.el, condenseHeader);
272
+ };
273
+ }
274
+ componentWillLoad() {
275
+ this.inheritedAttributes = inheritAriaAttributes(this.el);
276
+ }
277
+ componentDidLoad() {
278
+ this.checkCollapsibleHeader();
279
+ }
280
+ componentDidUpdate() {
281
+ this.checkCollapsibleHeader();
282
+ }
283
+ disconnectedCallback() {
284
+ this.destroyCollapsibleHeader();
285
+ }
286
+ async checkCollapsibleHeader() {
287
+ const mode = getIonMode(this);
288
+ if (mode !== 'ios') {
289
+ return;
290
+ }
291
+ const { collapse } = this;
292
+ const hasCondense = collapse === 'condense';
293
+ const hasFade = collapse === 'fade';
294
+ this.destroyCollapsibleHeader();
295
+ if (hasCondense) {
296
+ const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
297
+ const contentEl = pageEl ? findIonContent(pageEl) : null;
298
+ // Cloned elements are always needed in iOS transition
299
+ writeTask(() => {
300
+ const title = cloneElement('ion-title');
301
+ title.size = 'large';
302
+ cloneElement('ion-back-button');
303
+ });
304
+ await this.setupCondenseHeader(contentEl, pageEl);
305
+ }
306
+ else if (hasFade) {
307
+ const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
308
+ const contentEl = pageEl ? findIonContent(pageEl) : null;
309
+ if (!contentEl) {
310
+ printIonContentErrorMsg(this.el);
311
+ return;
312
+ }
313
+ const condenseHeader = contentEl.querySelector('ion-header[collapse="condense"]');
314
+ await this.setupFadeHeader(contentEl, condenseHeader);
315
+ }
316
+ }
317
+ destroyCollapsibleHeader() {
318
+ if (this.intersectionObserver) {
319
+ this.intersectionObserver.disconnect();
320
+ this.intersectionObserver = undefined;
321
+ }
322
+ if (this.scrollEl && this.contentScrollCallback) {
323
+ this.scrollEl.removeEventListener('scroll', this.contentScrollCallback);
324
+ this.contentScrollCallback = undefined;
325
+ }
326
+ if (this.collapsibleMainHeader) {
327
+ this.collapsibleMainHeader.classList.remove('header-collapse-main');
328
+ this.collapsibleMainHeader = undefined;
329
+ }
330
+ }
331
+ async setupCondenseHeader(contentEl, pageEl) {
332
+ if (!contentEl || !pageEl) {
333
+ printIonContentErrorMsg(this.el);
334
+ return;
335
+ }
336
+ if (typeof IntersectionObserver === 'undefined') {
337
+ return;
338
+ }
339
+ this.scrollEl = await getScrollElement(contentEl);
340
+ const headers = pageEl.querySelectorAll('ion-header');
341
+ this.collapsibleMainHeader = Array.from(headers).find((header) => header.collapse !== 'condense');
342
+ if (!this.collapsibleMainHeader) {
343
+ return;
344
+ }
345
+ const mainHeaderIndex = createHeaderIndex(this.collapsibleMainHeader);
346
+ const scrollHeaderIndex = createHeaderIndex(this.el);
347
+ if (!mainHeaderIndex || !scrollHeaderIndex) {
348
+ return;
349
+ }
350
+ setHeaderActive(mainHeaderIndex, false);
351
+ setToolbarBackgroundOpacity(mainHeaderIndex.el, 0);
352
+ /**
353
+ * Handle interaction between toolbar collapse and
354
+ * showing/hiding content in the primary ion-header
355
+ * as well as progressively showing/hiding the main header
356
+ * border as the top-most toolbar collapses or expands.
357
+ */
358
+ const toolbarIntersection = (ev) => {
359
+ handleToolbarIntersection(ev, mainHeaderIndex, scrollHeaderIndex, this.scrollEl);
360
+ };
361
+ this.intersectionObserver = new IntersectionObserver(toolbarIntersection, {
362
+ root: contentEl,
363
+ threshold: [0.25, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1],
364
+ });
365
+ this.intersectionObserver.observe(scrollHeaderIndex.toolbars[scrollHeaderIndex.toolbars.length - 1].el);
366
+ /**
367
+ * Handle scaling of large iOS titles and
368
+ * showing/hiding border on last toolbar
369
+ * in primary header
370
+ */
371
+ this.contentScrollCallback = () => {
372
+ handleContentScroll(this.scrollEl, scrollHeaderIndex, contentEl);
373
+ };
374
+ this.scrollEl.addEventListener('scroll', this.contentScrollCallback);
375
+ writeTask(() => {
376
+ if (this.collapsibleMainHeader !== undefined) {
377
+ this.collapsibleMainHeader.classList.add('header-collapse-main');
378
+ }
379
+ });
380
+ }
381
+ render() {
382
+ const { translucent, inheritedAttributes } = this;
383
+ const mode = getIonMode(this);
384
+ const collapse = this.collapse || 'none';
385
+ const isCondensed = collapse === 'condense';
386
+ // banner role must be at top level, so remove role if inside a menu
387
+ const roleType = getRoleType(hostContext('ion-menu', this.el), isCondensed, mode);
388
+ return (h(Host, Object.assign({ key: '863c4568cd7b8c0ec55109f193bbbaed68a1346e', role: roleType, class: {
389
+ [mode]: true,
390
+ // Used internally for styling
391
+ [`header-${mode}`]: true,
392
+ [`header-translucent`]: this.translucent,
393
+ [`header-collapse-${collapse}`]: true,
394
+ [`header-translucent-${mode}`]: this.translucent,
395
+ } }, inheritedAttributes), mode === 'ios' && translucent && h("div", { key: '25c3bdce328b0b35607d154c8b8374679313d881', class: "header-background" }), h("slot", { key: 'b44fab0a9be7920b9650da26117c783e751e1702' })));
396
+ }
397
+ get el() { return this; }
398
+ static get style() { return {
399
+ ios: headerIosCss,
400
+ md: headerMdCss
401
+ }; }
402
+ }, [292, "ion-header", {
403
+ "collapse": [1],
404
+ "translucent": [4]
405
+ }]);
406
+ function defineCustomElement() {
407
+ if (typeof customElements === "undefined") {
408
+ return;
409
+ }
410
+ const components = ["ion-header"];
411
+ components.forEach(tagName => { switch (tagName) {
412
+ case "ion-header":
413
+ if (!customElements.get(tagName)) {
414
+ customElements.define(tagName, Header);
415
+ }
416
+ break;
417
+ } });
418
+ }
419
+
420
+ export { Header as H, defineCustomElement as d };