@ionic/core 8.7.18-dev.11770916502.174efd7f → 8.7.18-dev.11771365900.125bf49c

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 (338) hide show
  1. package/components/index.js +13 -14
  2. package/components/ion-accordion-group.js +3 -4
  3. package/components/ion-accordion.js +6 -7
  4. package/components/ion-action-sheet.js +1 -1
  5. package/components/ion-alert.js +1 -1
  6. package/components/ion-app.js +11 -12
  7. package/components/ion-avatar.js +3 -3
  8. package/components/ion-back-button.js +8 -9
  9. package/components/ion-backdrop.js +1 -1
  10. package/components/ion-badge.js +4 -4
  11. package/components/ion-breadcrumb.js +7 -7
  12. package/components/ion-breadcrumbs.js +4 -4
  13. package/components/ion-button.js +1 -1
  14. package/components/ion-buttons.js +1 -1
  15. package/components/ion-card-content.js +3 -3
  16. package/components/ion-card-header.js +4 -4
  17. package/components/ion-card-subtitle.js +4 -4
  18. package/components/ion-card-title.js +4 -4
  19. package/components/ion-card.js +6 -6
  20. package/components/ion-checkbox.js +1 -1
  21. package/components/ion-chip.js +5 -5
  22. package/components/ion-col.js +3 -3
  23. package/components/ion-content.js +1 -1
  24. package/components/ion-datetime-button.js +7 -8
  25. package/components/ion-datetime.js +19 -20
  26. package/components/ion-fab-button.js +8 -8
  27. package/components/ion-fab-list.js +3 -3
  28. package/components/ion-fab.js +3 -3
  29. package/components/ion-footer.js +6 -6
  30. package/components/ion-grid.js +3 -3
  31. package/components/ion-header.js +1 -1
  32. package/components/ion-icon.js +1 -1
  33. package/components/ion-img.js +4 -4
  34. package/components/ion-infinite-scroll-content.js +5 -6
  35. package/components/ion-infinite-scroll.js +4 -4
  36. package/components/ion-input-otp.js +6 -7
  37. package/components/ion-input-password-toggle.js +8 -9
  38. package/components/ion-input.js +13 -13
  39. package/components/ion-item-divider.js +6 -6
  40. package/components/ion-item-group.js +4 -4
  41. package/components/ion-item-option.js +7 -7
  42. package/components/ion-item-options.js +5 -5
  43. package/components/ion-item-sliding.js +8 -9
  44. package/components/ion-item.js +1 -1
  45. package/components/ion-label.js +1 -1
  46. package/components/ion-list-header.js +1 -1
  47. package/components/ion-list.js +1 -1
  48. package/components/ion-loading.js +13 -14
  49. package/components/ion-menu-button.js +12 -13
  50. package/components/ion-menu-toggle.js +7 -7
  51. package/components/ion-menu.js +14 -18
  52. package/components/ion-modal.js +1 -1
  53. package/components/ion-nav-link.js +3 -3
  54. package/components/ion-nav.js +9 -14
  55. package/components/ion-note.js +6 -6
  56. package/components/ion-picker-column-option.js +1 -1
  57. package/components/ion-picker-column.js +1 -1
  58. package/components/ion-picker-legacy-column.js +1 -1
  59. package/components/ion-picker-legacy.js +12 -13
  60. package/components/ion-picker.js +1 -1
  61. package/components/ion-popover.js +1 -1
  62. package/components/ion-progress-bar.js +6 -7
  63. package/components/ion-radio-group.js +1 -1
  64. package/components/ion-radio.js +1 -1
  65. package/components/ion-range.js +11 -12
  66. package/components/ion-refresher-content.js +9 -10
  67. package/components/ion-refresher.js +12 -13
  68. package/components/ion-reorder-group.js +8 -8
  69. package/components/ion-reorder.js +6 -6
  70. package/components/ion-ripple-effect.js +1 -1
  71. package/components/ion-route-redirect.js +2 -2
  72. package/components/ion-route.js +2 -2
  73. package/components/ion-router-link.js +6 -6
  74. package/components/ion-router-outlet.js +10 -11
  75. package/components/ion-router.js +3 -4
  76. package/components/ion-row.js +4 -4
  77. package/components/ion-searchbar.js +12 -13
  78. package/components/ion-segment-button.js +8 -9
  79. package/components/ion-segment-content.js +3 -3
  80. package/components/ion-segment-view.js +5 -5
  81. package/components/ion-segment.js +9 -9
  82. package/components/ion-select-modal.js +1 -1
  83. package/components/ion-select-option.js +4 -4
  84. package/components/ion-select-popover.js +1 -1
  85. package/components/ion-select.js +36 -37
  86. package/components/ion-skeleton-text.js +6 -7
  87. package/components/ion-spinner.js +1 -1
  88. package/components/ion-split-pane.js +5 -12
  89. package/components/ion-tab-bar.js +7 -7
  90. package/components/ion-tab-button.js +7 -8
  91. package/components/ion-tab.js +5 -14
  92. package/components/ion-tabs.js +3 -4
  93. package/components/ion-text.js +6 -6
  94. package/components/ion-textarea.js +13 -13
  95. package/components/ion-thumbnail.js +4 -4
  96. package/components/ion-title.js +1 -1
  97. package/components/ion-toast.js +17 -20
  98. package/components/ion-toggle.js +15 -16
  99. package/components/ion-toolbar.js +1 -1
  100. package/components/{list.js → p-B25GjpND.js} +3 -3
  101. package/components/{buttons.js → p-BBFQmhcD.js} +3 -3
  102. package/components/{index5.js → p-BC-awmYt.js} +6 -6
  103. package/components/{picker.js → p-BHbOsu99.js} +3 -3
  104. package/components/{title.js → p-BTlwXR9e.js} +6 -6
  105. package/components/{alert.js → p-BcazQttQ.js} +12 -13
  106. package/components/{spinner.js → p-BdGshsIJ.js} +5 -6
  107. package/components/{input.utils.js → p-BfS7vSpC.js} +3 -3
  108. package/components/{ios.transition.js → p-BhRFCLuX.js} +2 -2
  109. package/components/{backdrop.js → p-Bhnhnzjz.js} +3 -3
  110. package/components/{notch-controller.js → p-BmcqD0EN.js} +2 -2
  111. package/components/{radio-group.js → p-BnpDIASH.js} +7 -7
  112. package/components/{hardware-back-button.js → p-Boi6hecl.js} +2 -2
  113. package/components/{radio.js → p-Bt_moUyl.js} +8 -8
  114. package/components/{ionic-global.js → p-Bxl5etF4.js} +1 -2
  115. package/components/{picker-column-option.js → p-ByjmWt3s.js} +7 -7
  116. package/components/{md.transition.js → p-C04oPyjT.js} +2 -2
  117. package/components/{capacitor.js → p-CIGNaXM1.js} +1 -1
  118. package/components/{config.js → p-CIJwkzL6.js} +1 -1
  119. package/components/{select-modal.js → p-CJrGvZ1Z.js} +19 -19
  120. package/components/{animation.js → p-CL12ApCQ.js} +2 -2
  121. package/components/{label.js → p-CUfY9DTD.js} +6 -6
  122. package/components/{action-sheet.js → p-CXJR56Oq.js} +12 -12
  123. package/components/{index3.js → p-Cl0B-RWe.js} +1 -1
  124. package/components/{keyboard-controller.js → p-CtWGkNnJ.js} +2 -2
  125. package/components/{index7.js → p-Cyd00tgZ.js} +2 -2
  126. package/components/{picker-column2.js → p-CzAJ3ArC.js} +9 -9
  127. package/components/{menu-toggle-util.js → p-CzW34QBh.js} +1 -1
  128. package/components/{refresher.utils.js → p-D0zXRwcr.js} +3 -3
  129. package/components/{keyboard2.js → p-D13Eaw-8.js} +1 -1
  130. package/components/{select-popover.js → p-D3KEyQ8e.js} +15 -15
  131. package/components/{helpers.js → p-D5hF6rwn.js} +1 -1
  132. package/components/{keyboard.js → p-D6Ynv7Xh.js} +1 -1
  133. package/components/{button-active.js → p-D8eD2iBA.js} +3 -3
  134. package/components/{button.js → p-DK2Bn1Mc.js} +6 -7
  135. package/components/{picker-column.js → p-DKRQWlK2.js} +7 -7
  136. package/components/{index8.js → p-DNDUsygf.js} +2 -2
  137. package/components/{content.js → p-DPm73mCi.js} +7 -7
  138. package/components/{popover.js → p-DRHwNkVo.js} +43 -166
  139. package/components/{index2.js → p-DTWZF6wg.js} +4 -5
  140. package/components/p-DWoUQeZ3.js +3012 -0
  141. package/components/{header.js → p-DX0w75a9.js} +6 -6
  142. package/components/{toolbar.js → p-Dt8zaCLQ.js} +6 -6
  143. package/components/{checkbox.js → p-DyFBFrV7.js} +7 -7
  144. package/components/{status-tap.js → p-DyHPCMyn.js} +3 -3
  145. package/components/{modal.js → p-IHgAGzvW.js} +35 -345
  146. package/components/{ripple-effect.js → p-LgLeKTkH.js} +4 -4
  147. package/components/{list-header.js → p-NhiRFRn9.js} +6 -6
  148. package/components/{input-shims.js → p-OuiHmXO5.js} +4 -4
  149. package/components/{icon.js → p-Wro9IPHE.js} +6 -6
  150. package/components/{item.js → p-aIWC4ZEV.js} +8 -8
  151. package/components/{overlays.js → p-c-XJ9XhZ.js} +7 -7
  152. package/components/{haptic.js → p-cyNmxje6.js} +1 -1
  153. package/components/{swipe-back.js → p-fVuFT3Wd.js} +3 -3
  154. package/components/{framework-delegate.js → p-l_lso3Zl.js} +1 -1
  155. package/components/{data.js → p-mQp4lwQD.js} +2 -2
  156. package/dist/cjs/ion-app_8.cjs.entry.js +5 -5
  157. package/dist/cjs/ion-avatar_3.cjs.entry.js +1 -1
  158. package/dist/cjs/ion-col_3.cjs.entry.js +1 -1
  159. package/dist/cjs/ion-datetime_3.cjs.entry.js +4 -4
  160. package/dist/cjs/ion-item-option_3.cjs.entry.js +4 -4
  161. package/dist/cjs/ion-item_8.cjs.entry.js +11 -11
  162. package/dist/cjs/ion-loading.cjs.entry.js +2 -2
  163. package/dist/cjs/ion-menu_3.cjs.entry.js +6 -6
  164. package/dist/cjs/ion-modal.cjs.entry.js +17 -326
  165. package/dist/cjs/ion-nav_2.cjs.entry.js +2 -2
  166. package/dist/cjs/ion-picker-column-option.cjs.entry.js +2 -2
  167. package/dist/cjs/ion-popover.cjs.entry.js +32 -154
  168. package/dist/cjs/ion-progress-bar.cjs.entry.js +1 -1
  169. package/dist/cjs/ion-radio_2.cjs.entry.js +4 -4
  170. package/dist/cjs/ion-range.cjs.entry.js +3 -3
  171. package/dist/cjs/ion-refresher_2.cjs.entry.js +2 -2
  172. package/dist/cjs/ion-reorder_2.cjs.entry.js +2 -2
  173. package/dist/cjs/ion-ripple-effect.cjs.entry.js +1 -1
  174. package/dist/cjs/ion-route_4.cjs.entry.js +2 -2
  175. package/dist/cjs/ion-searchbar.cjs.entry.js +4 -4
  176. package/dist/cjs/ion-segment-content.cjs.entry.js +1 -1
  177. package/dist/cjs/ion-segment-view.cjs.entry.js +2 -2
  178. package/dist/cjs/ion-segment_2.cjs.entry.js +4 -4
  179. package/dist/cjs/ion-select-modal.cjs.entry.js +1 -1
  180. package/dist/cjs/ion-select_3.cjs.entry.js +4 -4
  181. package/dist/cjs/ion-spinner.cjs.entry.js +1 -1
  182. package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
  183. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +4 -4
  184. package/dist/cjs/ion-tab_2.cjs.entry.js +3 -3
  185. package/dist/cjs/ion-text.cjs.entry.js +2 -2
  186. package/dist/cjs/ion-textarea.cjs.entry.js +2 -2
  187. package/dist/cjs/ion-toast.cjs.entry.js +2 -2
  188. package/dist/cjs/ion-toggle.cjs.entry.js +3 -3
  189. package/dist/collection/components/item-divider/item-divider.js +2 -2
  190. package/dist/collection/components/item-group/item-group.js +1 -1
  191. package/dist/collection/components/item-option/item-option.js +2 -2
  192. package/dist/collection/components/item-options/item-options.js +1 -1
  193. package/dist/collection/components/item-sliding/item-sliding.js +1 -1
  194. package/dist/collection/components/label/label.js +2 -2
  195. package/dist/collection/components/list-header/list-header.js +2 -2
  196. package/dist/collection/components/loading/loading.js +2 -2
  197. package/dist/collection/components/menu/menu.js +2 -2
  198. package/dist/collection/components/menu-button/menu-button.js +2 -2
  199. package/dist/collection/components/menu-toggle/menu-toggle.js +2 -2
  200. package/dist/collection/components/modal/modal.ios.css +5 -6
  201. package/dist/collection/components/modal/modal.js +15 -164
  202. package/dist/collection/components/modal/modal.md.css +5 -6
  203. package/dist/collection/components/nav/nav.js +1 -1
  204. package/dist/collection/components/nav-link/nav-link.js +1 -1
  205. package/dist/collection/components/note/note.js +2 -2
  206. package/dist/collection/components/picker-column-option/picker-column-option.js +2 -2
  207. package/dist/collection/components/picker-legacy/picker.js +2 -2
  208. package/dist/collection/components/picker-legacy-column/picker-column.js +2 -2
  209. package/dist/collection/components/popover/animations/ios.enter.js +8 -33
  210. package/dist/collection/components/popover/animations/md.enter.js +6 -26
  211. package/dist/collection/components/popover/popover.js +2 -2
  212. package/dist/collection/components/popover/utils.js +19 -96
  213. package/dist/collection/components/progress-bar/progress-bar.js +1 -1
  214. package/dist/collection/components/radio/radio.js +3 -3
  215. package/dist/collection/components/radio-group/radio-group.js +1 -1
  216. package/dist/collection/components/range/range.js +3 -3
  217. package/dist/collection/components/refresher/refresher.js +1 -1
  218. package/dist/collection/components/refresher-content/refresher-content.js +1 -1
  219. package/dist/collection/components/reorder/reorder.js +1 -1
  220. package/dist/collection/components/reorder-group/reorder-group.js +1 -1
  221. package/dist/collection/components/ripple-effect/ripple-effect.js +1 -1
  222. package/dist/collection/components/router-link/router-link.js +2 -2
  223. package/dist/collection/components/router-outlet/router-outlet.js +1 -1
  224. package/dist/collection/components/row/row.js +1 -1
  225. package/dist/collection/components/searchbar/searchbar.js +4 -4
  226. package/dist/collection/components/segment/segment.js +2 -2
  227. package/dist/collection/components/segment-button/segment-button.js +2 -2
  228. package/dist/collection/components/segment-content/segment-content.js +1 -1
  229. package/dist/collection/components/segment-view/segment-view.js +2 -2
  230. package/dist/collection/components/select/select.js +2 -2
  231. package/dist/collection/components/select-modal/select-modal.js +1 -1
  232. package/dist/collection/components/select-option/select-option.js +1 -1
  233. package/dist/collection/components/select-popover/select-popover.js +1 -1
  234. package/dist/collection/components/skeleton-text/skeleton-text.js +2 -2
  235. package/dist/collection/components/spinner/spinner.js +1 -1
  236. package/dist/collection/components/split-pane/split-pane.js +2 -2
  237. package/dist/collection/components/tab/tab.js +2 -2
  238. package/dist/collection/components/tab-bar/tab-bar.js +2 -2
  239. package/dist/collection/components/tab-button/tab-button.js +2 -2
  240. package/dist/collection/components/tabs/tabs.js +1 -1
  241. package/dist/collection/components/text/text.js +2 -2
  242. package/dist/collection/components/textarea/textarea.js +2 -2
  243. package/dist/collection/components/thumbnail/thumbnail.js +1 -1
  244. package/dist/collection/components/title/title.js +2 -2
  245. package/dist/collection/components/toast/toast.js +2 -2
  246. package/dist/collection/components/toggle/toggle.js +3 -3
  247. package/dist/collection/components/toolbar/toolbar.js +2 -2
  248. package/dist/docs.json +1 -1
  249. package/dist/esm/ion-app_8.entry.js +5 -5
  250. package/dist/esm/ion-avatar_3.entry.js +1 -1
  251. package/dist/esm/ion-col_3.entry.js +1 -1
  252. package/dist/esm/ion-datetime_3.entry.js +4 -4
  253. package/dist/esm/ion-item-option_3.entry.js +4 -4
  254. package/dist/esm/ion-item_8.entry.js +11 -11
  255. package/dist/esm/ion-loading.entry.js +2 -2
  256. package/dist/esm/ion-menu_3.entry.js +6 -6
  257. package/dist/esm/ion-modal.entry.js +17 -326
  258. package/dist/esm/ion-nav_2.entry.js +2 -2
  259. package/dist/esm/ion-picker-column-option.entry.js +2 -2
  260. package/dist/esm/ion-popover.entry.js +32 -154
  261. package/dist/esm/ion-progress-bar.entry.js +1 -1
  262. package/dist/esm/ion-radio_2.entry.js +4 -4
  263. package/dist/esm/ion-range.entry.js +3 -3
  264. package/dist/esm/ion-refresher_2.entry.js +2 -2
  265. package/dist/esm/ion-reorder_2.entry.js +2 -2
  266. package/dist/esm/ion-ripple-effect.entry.js +1 -1
  267. package/dist/esm/ion-route_4.entry.js +2 -2
  268. package/dist/esm/ion-searchbar.entry.js +4 -4
  269. package/dist/esm/ion-segment-content.entry.js +1 -1
  270. package/dist/esm/ion-segment-view.entry.js +2 -2
  271. package/dist/esm/ion-segment_2.entry.js +4 -4
  272. package/dist/esm/ion-select-modal.entry.js +1 -1
  273. package/dist/esm/ion-select_3.entry.js +4 -4
  274. package/dist/esm/ion-spinner.entry.js +1 -1
  275. package/dist/esm/ion-split-pane.entry.js +2 -2
  276. package/dist/esm/ion-tab-bar_2.entry.js +4 -4
  277. package/dist/esm/ion-tab_2.entry.js +3 -3
  278. package/dist/esm/ion-text.entry.js +2 -2
  279. package/dist/esm/ion-textarea.entry.js +2 -2
  280. package/dist/esm/ion-toast.entry.js +2 -2
  281. package/dist/esm/ion-toggle.entry.js +3 -3
  282. package/dist/ionic/ionic.esm.js +1 -1
  283. package/dist/ionic/{p-074839fc.entry.js → p-01e27965.entry.js} +1 -1
  284. package/dist/ionic/p-0ca0fe9c.entry.js +4 -0
  285. package/dist/ionic/{p-316c0420.entry.js → p-221a3d8c.entry.js} +1 -1
  286. package/dist/ionic/{p-3a6caca9.entry.js → p-2668188b.entry.js} +1 -1
  287. package/dist/ionic/{p-d3014190.entry.js → p-2bd1ea35.entry.js} +1 -1
  288. package/dist/ionic/{p-a127bee2.entry.js → p-30333874.entry.js} +1 -1
  289. package/dist/ionic/{p-0e8c8a10.entry.js → p-31db96da.entry.js} +1 -1
  290. package/dist/ionic/{p-1647c46c.entry.js → p-363d1209.entry.js} +1 -1
  291. package/dist/ionic/p-3ec563c1.entry.js +4 -0
  292. package/dist/ionic/{p-c19af093.entry.js → p-42db6404.entry.js} +1 -1
  293. package/dist/ionic/{p-db82892c.entry.js → p-46a38cfd.entry.js} +1 -1
  294. package/dist/ionic/{p-eb024a5b.entry.js → p-4eec1a5e.entry.js} +1 -1
  295. package/dist/ionic/{p-0dfa5a37.entry.js → p-530fcd71.entry.js} +1 -1
  296. package/dist/ionic/{p-72c38b88.entry.js → p-5c8f7253.entry.js} +1 -1
  297. package/dist/ionic/{p-172a579f.entry.js → p-5d6fb6e3.entry.js} +1 -1
  298. package/dist/ionic/{p-dbbe606a.entry.js → p-652318c3.entry.js} +1 -1
  299. package/dist/ionic/{p-2a939845.entry.js → p-6f37536a.entry.js} +1 -1
  300. package/dist/ionic/{p-4e41ea20.entry.js → p-72af946b.entry.js} +1 -1
  301. package/dist/ionic/p-7f98e710.entry.js +4 -0
  302. package/dist/ionic/{p-6d070558.entry.js → p-82d5bb3d.entry.js} +1 -1
  303. package/dist/ionic/p-906bb44d.entry.js +4 -0
  304. package/dist/ionic/{p-2dbb90cb.entry.js → p-97eb0812.entry.js} +1 -1
  305. package/dist/ionic/{p-31f7095f.entry.js → p-a4a9f5ae.entry.js} +1 -1
  306. package/dist/ionic/{p-86f53961.entry.js → p-b8551510.entry.js} +1 -1
  307. package/dist/ionic/p-bc293244.entry.js +4 -0
  308. package/dist/ionic/{p-d126e8d3.entry.js → p-bce86e56.entry.js} +1 -1
  309. package/dist/ionic/{p-02d76786.entry.js → p-be263062.entry.js} +1 -1
  310. package/dist/ionic/{p-639dd543.entry.js → p-c175d792.entry.js} +1 -1
  311. package/dist/ionic/{p-020af078.entry.js → p-cc2a9936.entry.js} +1 -1
  312. package/dist/ionic/{p-1ccd6829.entry.js → p-e338f669.entry.js} +1 -1
  313. package/dist/ionic/{p-6241ce47.entry.js → p-eaf3f5ff.entry.js} +1 -1
  314. package/dist/ionic/{p-f8f22cc0.entry.js → p-fb0271ae.entry.js} +1 -1
  315. package/dist/ionic/{p-370e4237.entry.js → p-fbb00634.entry.js} +1 -1
  316. package/dist/types/components/modal/modal.d.ts +0 -35
  317. package/dist/types/components/popover/utils.d.ts +1 -23
  318. package/hydrate/index.js +137 -568
  319. package/hydrate/index.mjs +137 -568
  320. package/package.json +1 -1
  321. package/components/index4.js +0 -121
  322. package/dist/collection/components/modal/safe-area-utils.js +0 -165
  323. package/dist/ionic/p-3e69999d.entry.js +0 -4
  324. package/dist/ionic/p-51a60e0f.entry.js +0 -4
  325. package/dist/ionic/p-94de5cfa.entry.js +0 -4
  326. package/dist/ionic/p-cc3446d5.entry.js +0 -4
  327. package/dist/ionic/p-dd1aef77.entry.js +0 -4
  328. package/dist/types/components/modal/safe-area-utils.d.ts +0 -66
  329. /package/components/{lock-controller.js → p-B-hirT0v.js} +0 -0
  330. /package/components/{gesture-controller.js → p-BTEOs1at.js} +0 -0
  331. /package/components/{focus-visible.js → p-BmVRXR1y.js} +0 -0
  332. /package/components/{dir.js → p-C53feagD.js} +0 -0
  333. /package/components/{index6.js → p-CO7fmmxt.js} +0 -0
  334. /package/components/{validity.js → p-DJztqcrH.js} +0 -0
  335. /package/components/{theme.js → p-DiVJyqlX.js} +0 -0
  336. /package/components/{watch-options.js → p-Dtdm8lKC.js} +0 -0
  337. /package/components/{index9.js → p-ZjP4CjeZ.js} +0 -0
  338. /package/components/{cubic-bezier.js → p-hHmYLOfE.js} +0 -0
package/hydrate/index.js CHANGED
@@ -18573,11 +18573,11 @@ class ItemDivider {
18573
18573
  }
18574
18574
  render() {
18575
18575
  const mode = getIonMode$1(this);
18576
- return (hAsync(Host, { key: '1523095ce4af3f2611512ff0948ead659959ee4a', class: createColorClasses$1(this.color, {
18576
+ return (hAsync(Host, { key: 'ee8b2c8d5e415c0d8badf84fa7670932da4e809e', class: createColorClasses$1(this.color, {
18577
18577
  [mode]: true,
18578
18578
  'item-divider-sticky': this.sticky,
18579
18579
  item: true,
18580
- }) }, hAsync("slot", { key: '39105d888e115416c3a3fe588da44b4c61f4e5fe', name: "start" }), hAsync("div", { key: '67e16f1056bd39187f3629c1bb383b7abbda829b', class: "item-divider-inner" }, hAsync("div", { key: 'b3a218fdcc7b9aeab6e0155340152d39fa0b6329', class: "item-divider-wrapper" }, hAsync("slot", { key: '69d8587533b387869d34b075d02f61396858fc90' })), hAsync("slot", { key: 'b91c654699b3b26d0012ea0c719c4a07d1fcfbaa', name: "end" }))));
18580
+ }) }, hAsync("slot", { key: 'a1b7bbb1a008b0a56887f130d166931033801746', name: "start" }), hAsync("div", { key: '9d572da46ab616bdf881098e96aa6796a249507f', class: "item-divider-inner" }, hAsync("div", { key: 'a57a2c17093b74b9e4f8fd2778230a440b293aa1', class: "item-divider-wrapper" }, hAsync("slot", { key: 'ef15ebf58f3acd4b4d1b7c51144e26c3759dba49' })), hAsync("slot", { key: '1787c2400534301fe72b8ec213d0ce1e8f75b65a', name: "end" }))));
18581
18581
  }
18582
18582
  get el() { return getElement(this); }
18583
18583
  static get style() { return {
@@ -18607,7 +18607,7 @@ class ItemGroup {
18607
18607
  }
18608
18608
  render() {
18609
18609
  const mode = getIonMode$1(this);
18610
- return (hAsync(Host, { key: 'e49dc8f99247d2431d7c6db01b6e021a0f5b1c37', role: "group", class: {
18610
+ return (hAsync(Host, { key: 'f1743af1d075682f63fae3802c5c5bf050507563', role: "group", class: {
18611
18611
  [mode]: true,
18612
18612
  // Used internally for styling
18613
18613
  [`item-group-${mode}`]: true,
@@ -18677,12 +18677,12 @@ class ItemOption {
18677
18677
  href: this.href,
18678
18678
  target: this.target,
18679
18679
  };
18680
- return (hAsync(Host, { key: '189a0040b97163b2336bf216baa71d584c5923a8', onClick: this.onClick, class: createColorClasses$1(this.color, {
18680
+ return (hAsync(Host, { key: '058310ac361612c16f2ef70c74279ba7c24128c5', onClick: this.onClick, class: createColorClasses$1(this.color, {
18681
18681
  [mode]: true,
18682
18682
  'item-option-disabled': disabled,
18683
18683
  'item-option-expandable': expandable,
18684
18684
  'ion-activatable': true,
18685
- }) }, hAsync(TagType, Object.assign({ key: '5a7140eb99da5ec82fe2ea3ea134513130763399' }, attrs, { class: "button-native", part: "native", disabled: disabled }), hAsync("span", { key: '9b8577e612706b43e575c9a20f2f9d35c0d1bcb1', class: "button-inner" }, hAsync("slot", { key: '9acb82f04e4822bfaa363cc2c4d29d5c0fec0ad6', name: "top" }), hAsync("div", { key: '66f5fb4fdd0c39f205574c602c793dcf109c7a17', class: "horizontal-wrapper" }, hAsync("slot", { key: '3761a32bca7c6c41b7eb394045497cfde181a62a', name: "start" }), hAsync("slot", { key: 'a96a568955cf6962883dc6771726d3d07462da00', name: "icon-only" }), hAsync("slot", { key: 'af5dfe5eb41456b9359bafe3615b576617ed7b57' }), hAsync("slot", { key: '00426958066ab7b949ff966fabad5cf8a0b54079', name: "end" })), hAsync("slot", { key: 'ae66c8bd536a9f27865f49240980d7b4b831b229', name: "bottom" })), mode === 'md' && hAsync("ion-ripple-effect", { key: '30df6c935ef8a3f28a6bc1f3bb162ca4f80aaf26' }))));
18685
+ }) }, hAsync(TagType, Object.assign({ key: '045052656ab652bec065d421950fe9ea00dc1141' }, attrs, { class: "button-native", part: "native", disabled: disabled }), hAsync("span", { key: '988b9166c0dda3c822a99ceace4c105339b2465b', class: "button-inner" }, hAsync("slot", { key: '8050b870ada6b09283f8acbcbb6d2bd1c76508b3', name: "top" }), hAsync("div", { key: 'a206e7b09e660c878ce3c5b61d018e8cdd89dc55', class: "horizontal-wrapper" }, hAsync("slot", { key: '394e5e4ce14cd19b5d5eafca29bb9f971f5f0741', name: "start" }), hAsync("slot", { key: 'dd4c3a1bee7622df40a3d8f2a298045b772f1600', name: "icon-only" }), hAsync("slot", { key: '318f3ec97b722c5e7df1a78b1e0439f919d0aacc' }), hAsync("slot", { key: 'fff6a9a602cf7bd698528982f91742a2d36ea245', name: "end" })), hAsync("slot", { key: '26b4bb155701d8080b486dbad7bb9a6d2e35182c', name: "bottom" })), mode === 'md' && hAsync("ion-ripple-effect", { key: '152b74643bf0f5725c39bfdbb940f0f32ec83d58' }))));
18686
18686
  }
18687
18687
  get el() { return getElement(this); }
18688
18688
  static get style() { return {
@@ -18731,7 +18731,7 @@ class ItemOptions {
18731
18731
  render() {
18732
18732
  const mode = getIonMode$1(this);
18733
18733
  const isEnd = isEndSide(this.side);
18734
- return (hAsync(Host, { key: '05a22a505e043c2715e3805e5e26ab4668940af0', class: {
18734
+ return (hAsync(Host, { key: '7b4b93984182222c64c7a2a22a18e52ac19e3049', class: {
18735
18735
  [mode]: true,
18736
18736
  // Used internally for styling
18737
18737
  [`item-options-${mode}`]: true,
@@ -19196,7 +19196,7 @@ class ItemSliding {
19196
19196
  }
19197
19197
  render() {
19198
19198
  const mode = getIonMode$1(this);
19199
- return (hAsync(Host, { key: 'd812322c9fb5da4ee16e99dc38bfb24cb4590d03', class: {
19199
+ return (hAsync(Host, { key: '8fd81d74701402294a48b79c56d6eceadafd4881', class: {
19200
19200
  [mode]: true,
19201
19201
  'item-sliding-active-slide': this.state !== 2 /* SlidingState.Disabled */,
19202
19202
  'item-sliding-active-options-end': (this.state & 8 /* SlidingState.End */) !== 0,
@@ -19301,13 +19301,13 @@ class Label {
19301
19301
  render() {
19302
19302
  const position = this.position;
19303
19303
  const mode = getIonMode$1(this);
19304
- return (hAsync(Host, { key: 'd6fba1a97189acc8ddfd64a2f009954a3e46e188', class: createColorClasses$1(this.color, {
19304
+ return (hAsync(Host, { key: '684ddfa719e34d743489ff05a0df067829257c73', class: createColorClasses$1(this.color, {
19305
19305
  [mode]: true,
19306
19306
  'in-item-color': hostContext('ion-item.ion-color', this.el),
19307
19307
  [`label-${position}`]: position !== undefined,
19308
19308
  [`label-no-animate`]: this.noAnimate,
19309
19309
  'label-rtl': document.dir === 'rtl',
19310
- }) }, hAsync("slot", { key: 'ce0ab50b5700398fdf50f36d02b7ad287eb71481' })));
19310
+ }) }, hAsync("slot", { key: '4aace3e2b36250e832c44f63bea21116d77220fb' })));
19311
19311
  }
19312
19312
  get el() { return getElement(this); }
19313
19313
  static get watchers() { return {
@@ -19405,10 +19405,10 @@ class ListHeader {
19405
19405
  render() {
19406
19406
  const { lines } = this;
19407
19407
  const mode = getIonMode$1(this);
19408
- return (hAsync(Host, { key: 'd9bc827ad8cc77231efddc2435831a7fc080f77d', class: createColorClasses$1(this.color, {
19408
+ return (hAsync(Host, { key: '2e529021279761b2b2889885437f619b0e8f71c4', class: createColorClasses$1(this.color, {
19409
19409
  [mode]: true,
19410
19410
  [`list-header-lines-${lines}`]: lines !== undefined,
19411
- }) }, hAsync("div", { key: '02dd9698304a7b2997ea1487e2f308bebea2b44c', class: "list-header-inner" }, hAsync("slot", { key: '01d63a572c003286ae467a1ab23631e37e695042' }))));
19411
+ }) }, hAsync("div", { key: '9a6a11b0db015df79374f6489a40b959bc80b3e4', class: "list-header-inner" }, hAsync("slot", { key: 'ef347fc6afb47850797e2e4d1aeefcd6a318f789' }))));
19412
19412
  }
19413
19413
  static get style() { return {
19414
19414
  ios: listHeaderIosCss,
@@ -19693,9 +19693,9 @@ class Loading {
19693
19693
  * Otherwise, don't set aria-labelledby.
19694
19694
  */
19695
19695
  const ariaLabelledBy = message !== undefined ? msgId : null;
19696
- return (hAsync(Host, Object.assign({ key: '4497183ce220242abe19ae15f328f9a92ccafbbc', role: "dialog", "aria-modal": "true", "aria-labelledby": ariaLabelledBy, tabindex: "-1" }, htmlAttributes, { style: {
19696
+ return (hAsync(Host, Object.assign({ key: 'f86ddbc600cb5c396b7de38fb5f49625388c3c3f', role: "dialog", "aria-modal": "true", "aria-labelledby": ariaLabelledBy, tabindex: "-1" }, htmlAttributes, { style: {
19697
19697
  zIndex: `${40000 + this.overlayIndex}`,
19698
- }, onIonBackdropTap: this.onBackdropTap, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'loading-translucent': this.translucent }) }), hAsync("ion-backdrop", { key: '231dec84e424a2dc358ce95b84d6035cf43e4dea', visible: this.showBackdrop, tappable: this.backdropDismiss }), hAsync("div", { key: 'c9af29b6e6bb49a217396a5c874bbfb8835a926c', tabindex: "0", "aria-hidden": "true" }), hAsync("div", { key: 'a8659863743cdeccbe1ba810eaabfd3ebfcb86f3', class: "loading-wrapper ion-overlay-wrapper" }, spinner && (hAsync("div", { key: '3b346f39bc71691bd8686556a1e142198a7b12fa', class: "loading-spinner" }, hAsync("ion-spinner", { key: '8dc2bf1556e5138e262827f1516c59ecd09f3520', name: spinner, "aria-hidden": "true" }))), message !== undefined && this.renderLoadingMessage(msgId)), hAsync("div", { key: '054164c0dbae9a0e0973dd3c8e28f5b771820310', tabindex: "0", "aria-hidden": "true" })));
19698
+ }, onIonBackdropTap: this.onBackdropTap, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'loading-translucent': this.translucent }) }), hAsync("ion-backdrop", { key: 'b53727aaddc37ef3c685fcc150c6d5193290a847', visible: this.showBackdrop, tappable: this.backdropDismiss }), hAsync("div", { key: '4c61bede8e0a4e47daa6f1f9d0f364ef6aec0bc3', tabindex: "0", "aria-hidden": "true" }), hAsync("div", { key: '84e51ceb07118f1eaeb757df28801c255496931b', class: "loading-wrapper ion-overlay-wrapper" }, spinner && (hAsync("div", { key: 'fc97f1912e0fc558b7c309a5bc084415f5f620b2', class: "loading-spinner" }, hAsync("ion-spinner", { key: '6e186d856cd3f10f22c3e317ef00f31b4216459c', name: spinner, "aria-hidden": "true" }))), message !== undefined && this.renderLoadingMessage(msgId)), hAsync("div", { key: 'dcbe9d9a619daa1c08174e73827bdabeb59dde92', tabindex: "0", "aria-hidden": "true" })));
19699
19699
  }
19700
19700
  get el() { return getElement(this); }
19701
19701
  static get watchers() { return {
@@ -20744,14 +20744,14 @@ class Menu {
20744
20744
  * the ionBackButton listener in the menu controller
20745
20745
  * will handle closing the menu when Escape is pressed.
20746
20746
  */
20747
- return (hAsync(Host, { key: '70a427f3414a476414c3386efe6c8723fd37eccf', onKeyDown: shouldUseCloseWatcher() ? null : this.onKeydown, role: "navigation", "aria-label": inheritedAttributes['aria-label'] || 'menu', class: {
20747
+ return (hAsync(Host, { key: '29ef73894e2795e4ce23e59888ffb87faf4dd543', onKeyDown: shouldUseCloseWatcher() ? null : this.onKeydown, role: "navigation", "aria-label": inheritedAttributes['aria-label'] || 'menu', class: {
20748
20748
  [mode]: true,
20749
20749
  [`menu-type-${type}`]: true,
20750
20750
  'menu-enabled': !disabled,
20751
20751
  [`menu-side-${side}`]: true,
20752
20752
  'menu-pane-visible': isPaneVisible,
20753
20753
  'split-pane-side': hostContext('ion-split-pane', el),
20754
- } }, hAsync("div", { key: '83af04e5a47d5a92caafaf06088a7114ae61984b', class: "menu-inner", part: "container", ref: (el) => (this.menuInnerEl = el) }, hAsync("slot", { key: '7b35048642864bd0f30de9f6b61c949c1b601692' })), hAsync("ion-backdrop", { key: '347af516c7970d80dd11c6d1ed61e9a040ceb5fb', ref: (el) => (this.backdropEl = el), class: "menu-backdrop", tappable: false, stopPropagation: false, part: "backdrop" })));
20754
+ } }, hAsync("div", { key: '22e44f7bd602ee0c96550f0dfc22ac81c0033ad6', class: "menu-inner", part: "container", ref: (el) => (this.menuInnerEl = el) }, hAsync("slot", { key: '7bbef92fe03bb3ce4d3981eb8535aab449aab2fc' })), hAsync("ion-backdrop", { key: '9ab8d5b61563e16b212c71c03869d4fc23a0400b', ref: (el) => (this.backdropEl = el), class: "menu-backdrop", tappable: false, stopPropagation: false, part: "backdrop" })));
20755
20755
  }
20756
20756
  get el() { return getElement(this); }
20757
20757
  static get watchers() { return {
@@ -20859,7 +20859,7 @@ class MenuButton {
20859
20859
  type: this.type,
20860
20860
  };
20861
20861
  const ariaLabel = inheritedAttributes['aria-label'] || 'menu';
20862
- return (hAsync(Host, { key: '9f0f0e50d39a6872508220c58e64bb2092a0d7ef', onClick: this.onClick, "aria-disabled": disabled ? 'true' : null, "aria-hidden": hidden ? 'true' : null, class: createColorClasses$1(color, {
20862
+ return (hAsync(Host, { key: 'dcade732e366f0687d92cb9ce4065b78b0b41d24', onClick: this.onClick, "aria-disabled": disabled ? 'true' : null, "aria-hidden": hidden ? 'true' : null, class: createColorClasses$1(color, {
20863
20863
  [mode]: true,
20864
20864
  button: true, // ion-buttons target .button
20865
20865
  'menu-button-hidden': hidden,
@@ -20868,7 +20868,7 @@ class MenuButton {
20868
20868
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
20869
20869
  'ion-activatable': true,
20870
20870
  'ion-focusable': true,
20871
- }) }, hAsync("button", Object.assign({ key: 'ffebf7083d23501839970059ef8e411b571de197' }, attrs, { disabled: disabled, class: "button-native", part: "native", "aria-label": ariaLabel }), hAsync("span", { key: 'cab0c1c763b3ce33ef11dba1d230f66126e59424', class: "button-inner" }, hAsync("slot", { key: 'ccfd2be8479b75b5c63e97e1ca7dfe203e9b36ee' }, hAsync("ion-icon", { key: 'ac254fe7f327b08f1ae3fcea89d5cf0e83c9a96c', part: "icon", icon: menuIcon, mode: mode, lazy: false, "aria-hidden": "true" }))), mode === 'md' && hAsync("ion-ripple-effect", { key: 'f0f17c4ca96e3eed3c1727ee00578d40af8f0115', type: "unbounded" }))));
20871
+ }) }, hAsync("button", Object.assign({ key: '7c4a449e239679376f38471d95fd602f9caec5f6' }, attrs, { disabled: disabled, class: "button-native", part: "native", "aria-label": ariaLabel }), hAsync("span", { key: '8bb5bf453280a66109198c970b678ad800c7a8cf', class: "button-inner" }, hAsync("slot", { key: '7f78b1e7a0695f2bd600d13ca81f50dd8b965726' }, hAsync("ion-icon", { key: '9f67f5bb06b1f03a6e5df9ecbe23ebf69fb40756', part: "icon", icon: menuIcon, mode: mode, lazy: false, "aria-hidden": "true" }))), mode === 'md' && hAsync("ion-ripple-effect", { key: '10be7145c614144e94c3cc0b92dc5ee4e1587fe6', type: "unbounded" }))));
20872
20872
  }
20873
20873
  get el() { return getElement(this); }
20874
20874
  static get style() { return {
@@ -20921,10 +20921,10 @@ class MenuToggle {
20921
20921
  render() {
20922
20922
  const mode = getIonMode$1(this);
20923
20923
  const hidden = this.autoHide && !this.visible;
20924
- return (hAsync(Host, { key: 'cd567114769a30bd3871ed5d15bf42aed39956e1', onClick: this.onClick, "aria-hidden": hidden ? 'true' : null, class: {
20924
+ return (hAsync(Host, { key: '55135952f3a42cb5d21916dfb7b169d894b381e3', onClick: this.onClick, "aria-hidden": hidden ? 'true' : null, class: {
20925
20925
  [mode]: true,
20926
20926
  'menu-toggle-hidden': hidden,
20927
- } }, hAsync("slot", { key: '773d4cff95ca75f23578b1e1dca53c9933f28a33' })));
20927
+ } }, hAsync("slot", { key: 'e8ecb59a6ec075b07e2a1b8fcdf7df3dd9975a03' })));
20928
20928
  }
20929
20929
  static get style() { return menuToggleCss; }
20930
20930
  static get cmpMeta() { return {
@@ -22806,170 +22806,9 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
22806
22806
  };
22807
22807
  };
22808
22808
 
22809
- /**
22810
- * These thresholds match the SCSS media query breakpoints in modal.vars.scss
22811
- * that trigger the centered dialog layout (non-fullscreen modal).
22812
- *
22813
- * SCSS defines two height breakpoints: $modal-inset-min-height-small (600px)
22814
- * and $modal-inset-min-height-large (768px). We use the smaller one because
22815
- * that's the threshold where the modal transitions from fullscreen to centered
22816
- * dialog — the larger breakpoint only increases the dialog's height.
22817
- */
22818
- const MODAL_INSET_MIN_WIDTH = 768;
22819
- const MODAL_INSET_MIN_HEIGHT = 600;
22820
- const EDGE_THRESHOLD = 5;
22821
- /**
22822
- * Cache for resolved root safe-area-top value, invalidated once per frame.
22823
- */
22824
- let cachedRootSafeAreaTop = null;
22825
- let cacheInvalidationScheduled$1 = false;
22826
- /**
22827
- * Determines if the current viewport meets the CSS media query conditions
22828
- * that cause regular modals to render as centered dialogs instead of fullscreen.
22829
- * Matches: @media (min-width: 768px) and (min-height: 600px)
22830
- */
22831
- const isCenteredDialogViewport = () => {
22832
- if (!win$1)
22833
- return false;
22834
- return win$1.matchMedia(`(min-width: ${MODAL_INSET_MIN_WIDTH}px) and (min-height: ${MODAL_INSET_MIN_HEIGHT}px)`)
22835
- .matches;
22836
- };
22837
- /**
22838
- * Resolves the current root --ion-safe-area-top value to pixels.
22839
- * Uses a temporary element because getComputedStyle on :root returns
22840
- * the declared value of custom properties (e.g. "env(safe-area-inset-top)")
22841
- * rather than a resolved number.
22842
- *
22843
- * Results are cached for the current frame to avoid repeated reflows.
22844
- */
22845
- const getRootSafeAreaTop = () => {
22846
- if (cachedRootSafeAreaTop !== null) {
22847
- return cachedRootSafeAreaTop;
22848
- }
22849
- const doc = win$1 === null || win$1 === void 0 ? void 0 : win$1.document;
22850
- if (!(doc === null || doc === void 0 ? void 0 : doc.body)) {
22851
- return 0;
22852
- }
22853
- const el = doc.createElement('div');
22854
- el.style.cssText =
22855
- 'position:fixed;visibility:hidden;pointer-events:none;top:0;left:0;' + 'padding-top:var(--ion-safe-area-top,0px);';
22856
- doc.body.appendChild(el);
22857
- const value = parseFloat(getComputedStyle(el).paddingTop) || 0;
22858
- el.remove();
22859
- cachedRootSafeAreaTop = value;
22860
- if (!cacheInvalidationScheduled$1) {
22861
- cacheInvalidationScheduled$1 = true;
22862
- raf(() => {
22863
- cachedRootSafeAreaTop = null;
22864
- cacheInvalidationScheduled$1 = false;
22865
- });
22866
- }
22867
- return value;
22868
- };
22869
- /**
22870
- * Returns the initial safe-area configuration based on modal type.
22871
- * This is called before animation starts and uses configuration-based prediction.
22872
- *
22873
- * @param context - Modal context information
22874
- * @returns SafeAreaConfig with initial safe-area values
22875
- */
22876
- const getInitialSafeAreaConfig = (context) => {
22877
- const { isSheetModal, isCardModal } = context;
22878
- // Sheet modals always zero top safe-area. The sheet height offset from the
22879
- // top edge is handled by --ion-modal-offset-top (set in modal.tsx) using
22880
- // the resolved root value, so --ion-safe-area-top is never needed for
22881
- // height calculation. Keeping it at 0px prevents header content from
22882
- // getting double-offset padding.
22883
- if (isSheetModal) {
22884
- return {
22885
- top: '0px',
22886
- bottom: 'inherit',
22887
- left: '0px',
22888
- right: '0px',
22889
- };
22890
- }
22891
- // Card modals need safe-area for height calculation.
22892
- // Note: isCardModal is already gated on mode === 'ios' by the caller.
22893
- if (isCardModal) {
22894
- return {
22895
- top: 'inherit',
22896
- bottom: 'inherit',
22897
- left: '0px',
22898
- right: '0px',
22899
- };
22900
- }
22901
- // On viewports that meet the centered dialog media query breakpoints,
22902
- // regular modals render as centered dialogs (not fullscreen), so they
22903
- // don't touch any screen edges and don't need safe-area insets.
22904
- if (isCenteredDialogViewport()) {
22905
- return {
22906
- top: '0px',
22907
- bottom: '0px',
22908
- left: '0px',
22909
- right: '0px',
22910
- };
22911
- }
22912
- // Fullscreen modals on phone - inherit all safe areas
22913
- return {
22914
- top: 'inherit',
22915
- bottom: 'inherit',
22916
- left: 'inherit',
22917
- right: 'inherit',
22918
- };
22919
- };
22920
- /**
22921
- * Returns safe-area configuration based on actual modal position.
22922
- * Detects which edges the modal overlaps with and only applies safe-area to those edges.
22923
- *
22924
- * Note: On Android edge-to-edge (API 36+), getBoundingClientRect() may report
22925
- * inconsistent values. Sheet and card modals avoid this by using configuration-based
22926
- * prediction instead. Regular modals use coordinate detection which works reliably
22927
- * on web and iOS; Android edge-to-edge may need a configuration-based fallback
22928
- * once a reliable detection mechanism is available.
22929
- *
22930
- * @param wrapperEl - The modal wrapper element to measure
22931
- * @returns SafeAreaConfig based on position
22932
- */
22933
- const getPositionBasedSafeAreaConfig = (wrapperEl) => {
22934
- var _a, _b;
22935
- const rect = wrapperEl.getBoundingClientRect();
22936
- const vh = (_a = win$1 === null || win$1 === void 0 ? void 0 : win$1.innerHeight) !== null && _a !== void 0 ? _a : 0;
22937
- const vw = (_b = win$1 === null || win$1 === void 0 ? void 0 : win$1.innerWidth) !== null && _b !== void 0 ? _b : 0;
22938
- // Only apply safe-area to sides where modal overlaps with screen edge
22939
- return {
22940
- top: rect.top <= EDGE_THRESHOLD ? 'inherit' : '0px',
22941
- bottom: rect.bottom >= vh - EDGE_THRESHOLD ? 'inherit' : '0px',
22942
- left: rect.left <= EDGE_THRESHOLD ? 'inherit' : '0px',
22943
- right: rect.right >= vw - EDGE_THRESHOLD ? 'inherit' : '0px',
22944
- };
22945
- };
22946
- /**
22947
- * Applies safe-area CSS custom property overrides to the modal host element.
22948
- *
22949
- * @param hostEl - The modal host element (ion-modal)
22950
- * @param config - Safe-area configuration to apply
22951
- */
22952
- const applySafeAreaOverrides = (hostEl, config) => {
22953
- hostEl.style.setProperty('--ion-safe-area-top', config.top);
22954
- hostEl.style.setProperty('--ion-safe-area-bottom', config.bottom);
22955
- hostEl.style.setProperty('--ion-safe-area-left', config.left);
22956
- hostEl.style.setProperty('--ion-safe-area-right', config.right);
22957
- };
22958
- /**
22959
- * Clears safe-area CSS custom property overrides from the modal host element.
22960
- *
22961
- * @param hostEl - The modal host element (ion-modal)
22962
- */
22963
- const clearSafeAreaOverrides = (hostEl) => {
22964
- hostEl.style.removeProperty('--ion-safe-area-top');
22965
- hostEl.style.removeProperty('--ion-safe-area-bottom');
22966
- hostEl.style.removeProperty('--ion-safe-area-left');
22967
- hostEl.style.removeProperty('--ion-safe-area-right');
22968
- };
22969
-
22970
- const modalIosCss = ":host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--overflow:hidden;--border-radius:0;--border-width:0;--border-style:none;--border-color:transparent;--background:var(--ion-background-color, #fff);--box-shadow:none;--backdrop-opacity:0;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);contain:strict}.modal-wrapper,ion-backdrop{pointer-events:auto}:host(.overlay-hidden){display:none}.modal-wrapper,.modal-shadow{border-radius:var(--border-radius);width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:var(--overflow);z-index:10}.modal-shadow{position:absolute;background:transparent}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--width:600px;--height:500px}}@media only screen and (min-width: 768px) and (min-height: 768px){:host{--width:600px;--height:600px}}.modal-handle{left:0px;right:0px;top:5px;border-radius:8px;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;position:absolute;width:36px;height:5px;-webkit-transform:translateZ(0);transform:translateZ(0);border:0;background:var(--ion-color-step-350, var(--ion-background-color-step-350, #c0c0be));cursor:pointer;z-index:11}.modal-handle::before{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;position:absolute;width:36px;height:5px;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);content:\"\"}:host(.modal-sheet){--height:calc(100% - (var(--ion-modal-offset-top, 0px) + 10px))}:host(.modal-sheet) .modal-wrapper,:host(.modal-sheet) .modal-shadow{position:absolute;bottom:0}:host(.modal-sheet.modal-no-expand-scroll) ion-footer{position:absolute;bottom:0;width:var(--width)}:host{--backdrop-opacity:var(--ion-backdrop-opacity, 0.4)}:host(.modal-card),:host(.modal-sheet){--border-radius:10px}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--border-radius:10px}}.modal-wrapper{-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0)}@media screen and (max-width: 767px){@supports (width: max(0px, 1px)){:host(.modal-card){--height:calc(100% - max(30px, var(--ion-safe-area-top)) - 10px)}}@supports not (width: max(0px, 1px)){:host(.modal-card){--height:calc(100% - 40px)}}:host(.modal-card) .modal-wrapper{border-start-start-radius:var(--border-radius);border-start-end-radius:var(--border-radius);border-end-end-radius:0;border-end-start-radius:0}:host(.modal-card){--backdrop-opacity:0;--width:100%;-ms-flex-align:end;align-items:flex-end}:host(.modal-card) .modal-shadow{display:none}:host(.modal-card) ion-backdrop{pointer-events:none}}@media screen and (min-width: 768px){:host(.modal-card){--width:calc(100% - 120px);--height:calc(100% - (120px + var(--ion-safe-area-top) + var(--ion-safe-area-bottom)));--max-width:720px;--max-height:1000px;--backdrop-opacity:0;--box-shadow:0px 0px 30px 10px rgba(0, 0, 0, 0.1);-webkit-transition:all 0.5s ease-in-out;transition:all 0.5s ease-in-out}:host(.modal-card) .modal-wrapper{-webkit-box-shadow:none;box-shadow:none}:host(.modal-card) .modal-shadow{-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow)}}:host(.modal-sheet) .modal-wrapper{border-start-start-radius:var(--border-radius);border-start-end-radius:var(--border-radius);border-end-end-radius:0;border-end-start-radius:0}";
22809
+ const modalIosCss = ":host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--overflow:hidden;--border-radius:0;--border-width:0;--border-style:none;--border-color:transparent;--background:var(--ion-background-color, #fff);--box-shadow:none;--backdrop-opacity:0;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);contain:strict}.modal-wrapper,ion-backdrop{pointer-events:auto}:host(.overlay-hidden){display:none}.modal-wrapper,.modal-shadow{border-radius:var(--border-radius);width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:var(--overflow);z-index:10}.modal-shadow{position:absolute;background:transparent}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--width:600px;--height:500px;--ion-safe-area-top:0px;--ion-safe-area-bottom:0px;--ion-safe-area-right:0px;--ion-safe-area-left:0px}}@media only screen and (min-width: 768px) and (min-height: 768px){:host{--width:600px;--height:600px}}.modal-handle{left:0px;right:0px;top:5px;border-radius:8px;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;position:absolute;width:36px;height:5px;-webkit-transform:translateZ(0);transform:translateZ(0);border:0;background:var(--ion-color-step-350, var(--ion-background-color-step-350, #c0c0be));cursor:pointer;z-index:11}.modal-handle::before{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;position:absolute;width:36px;height:5px;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);content:\"\"}:host(.modal-sheet){--height:calc(100% - (var(--ion-safe-area-top) + 10px))}:host(.modal-sheet) .modal-wrapper,:host(.modal-sheet) .modal-shadow{position:absolute;bottom:0}:host(.modal-sheet.modal-no-expand-scroll) ion-footer{position:absolute;bottom:0;width:var(--width)}:host{--backdrop-opacity:var(--ion-backdrop-opacity, 0.4)}:host(.modal-card),:host(.modal-sheet){--border-radius:10px}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--border-radius:10px}}.modal-wrapper{-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0)}@media screen and (max-width: 767px){@supports (width: max(0px, 1px)){:host(.modal-card){--height:calc(100% - max(30px, var(--ion-safe-area-top)) - 10px)}}@supports not (width: max(0px, 1px)){:host(.modal-card){--height:calc(100% - 40px)}}:host(.modal-card) .modal-wrapper{border-start-start-radius:var(--border-radius);border-start-end-radius:var(--border-radius);border-end-end-radius:0;border-end-start-radius:0}:host(.modal-card){--backdrop-opacity:0;--width:100%;-ms-flex-align:end;align-items:flex-end}:host(.modal-card) .modal-shadow{display:none}:host(.modal-card) ion-backdrop{pointer-events:none}}@media screen and (min-width: 768px){:host(.modal-card){--width:calc(100% - 120px);--height:calc(100% - (120px + var(--ion-safe-area-top) + var(--ion-safe-area-bottom)));--max-width:720px;--max-height:1000px;--backdrop-opacity:0;--box-shadow:0px 0px 30px 10px rgba(0, 0, 0, 0.1);-webkit-transition:all 0.5s ease-in-out;transition:all 0.5s ease-in-out}:host(.modal-card) .modal-wrapper{-webkit-box-shadow:none;box-shadow:none}:host(.modal-card) .modal-shadow{-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow)}}:host(.modal-sheet) .modal-wrapper{border-start-start-radius:var(--border-radius);border-start-end-radius:var(--border-radius);border-end-end-radius:0;border-end-start-radius:0}";
22971
22810
 
22972
- const modalMdCss = ":host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--overflow:hidden;--border-radius:0;--border-width:0;--border-style:none;--border-color:transparent;--background:var(--ion-background-color, #fff);--box-shadow:none;--backdrop-opacity:0;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);contain:strict}.modal-wrapper,ion-backdrop{pointer-events:auto}:host(.overlay-hidden){display:none}.modal-wrapper,.modal-shadow{border-radius:var(--border-radius);width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:var(--overflow);z-index:10}.modal-shadow{position:absolute;background:transparent}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--width:600px;--height:500px}}@media only screen and (min-width: 768px) and (min-height: 768px){:host{--width:600px;--height:600px}}.modal-handle{left:0px;right:0px;top:5px;border-radius:8px;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;position:absolute;width:36px;height:5px;-webkit-transform:translateZ(0);transform:translateZ(0);border:0;background:var(--ion-color-step-350, var(--ion-background-color-step-350, #c0c0be));cursor:pointer;z-index:11}.modal-handle::before{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;position:absolute;width:36px;height:5px;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);content:\"\"}:host(.modal-sheet){--height:calc(100% - (var(--ion-modal-offset-top, 0px) + 10px))}:host(.modal-sheet) .modal-wrapper,:host(.modal-sheet) .modal-shadow{position:absolute;bottom:0}:host(.modal-sheet.modal-no-expand-scroll) ion-footer{position:absolute;bottom:0;width:var(--width)}:host{--backdrop-opacity:var(--ion-backdrop-opacity, 0.32)}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--border-radius:2px;--box-shadow:0 28px 48px rgba(0, 0, 0, 0.4)}}.modal-wrapper{-webkit-transform:translate3d(0, 40px, 0);transform:translate3d(0, 40px, 0);opacity:0.01}";
22811
+ const modalMdCss = ":host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--overflow:hidden;--border-radius:0;--border-width:0;--border-style:none;--border-color:transparent;--background:var(--ion-background-color, #fff);--box-shadow:none;--backdrop-opacity:0;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);contain:strict}.modal-wrapper,ion-backdrop{pointer-events:auto}:host(.overlay-hidden){display:none}.modal-wrapper,.modal-shadow{border-radius:var(--border-radius);width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:var(--overflow);z-index:10}.modal-shadow{position:absolute;background:transparent}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--width:600px;--height:500px;--ion-safe-area-top:0px;--ion-safe-area-bottom:0px;--ion-safe-area-right:0px;--ion-safe-area-left:0px}}@media only screen and (min-width: 768px) and (min-height: 768px){:host{--width:600px;--height:600px}}.modal-handle{left:0px;right:0px;top:5px;border-radius:8px;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;position:absolute;width:36px;height:5px;-webkit-transform:translateZ(0);transform:translateZ(0);border:0;background:var(--ion-color-step-350, var(--ion-background-color-step-350, #c0c0be));cursor:pointer;z-index:11}.modal-handle::before{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;position:absolute;width:36px;height:5px;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);content:\"\"}:host(.modal-sheet){--height:calc(100% - (var(--ion-safe-area-top) + 10px))}:host(.modal-sheet) .modal-wrapper,:host(.modal-sheet) .modal-shadow{position:absolute;bottom:0}:host(.modal-sheet.modal-no-expand-scroll) ion-footer{position:absolute;bottom:0;width:var(--width)}:host{--backdrop-opacity:var(--ion-backdrop-opacity, 0.32)}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--border-radius:2px;--box-shadow:0 28px 48px rgba(0, 0, 0, 0.4)}}.modal-wrapper{-webkit-transform:translate3d(0, 40px, 0);transform:translate3d(0, 40px, 0);opacity:0.01}";
22973
22812
 
22974
22813
  // TODO(FW-2832): types
22975
22814
  /**
@@ -23192,31 +23031,13 @@ class Modal {
23192
23031
  }
23193
23032
  }
23194
23033
  onWindowResize() {
23195
- if (!this.presented)
23034
+ // Only handle resize for iOS card modals when no custom animations are provided
23035
+ if (getIonMode$1(this) !== 'ios' || !this.presentingElement || this.enterAnimation || this.leaveAnimation) {
23196
23036
  return;
23037
+ }
23197
23038
  clearTimeout(this.resizeTimeout);
23198
23039
  this.resizeTimeout = setTimeout(() => {
23199
- const context = this.getSafeAreaContext();
23200
- // iOS card modals: handle portrait/landscape view transitions
23201
- if (context.isCardModal && !this.enterAnimation && !this.leaveAnimation) {
23202
- this.handleViewTransition();
23203
- }
23204
- // Sheet modals: re-compute the internal offset property since safe-area
23205
- // values may change on device rotation (e.g., portrait notch vs landscape).
23206
- if (context.isSheetModal) {
23207
- this.updateSheetOffsetTop();
23208
- }
23209
- // Regular (non-sheet, non-card) modals: update safe-area overrides
23210
- // since the viewport may have crossed the centered-dialog breakpoint.
23211
- if (!context.isSheetModal && !context.isCardModal) {
23212
- this.updateSafeAreaOverrides();
23213
- // Re-evaluate fullscreen safe-area padding: clear first, then re-apply
23214
- if (this.wrapperEl) {
23215
- this.wrapperEl.style.removeProperty('height');
23216
- this.wrapperEl.style.removeProperty('padding-bottom');
23217
- }
23218
- this.applyFullscreenSafeArea();
23219
- }
23040
+ this.handleViewTransition();
23220
23041
  }, 50); // Debounce to avoid excessive calls during active resizing
23221
23042
  }
23222
23043
  breakpointsChanged(breakpoints) {
@@ -23233,9 +23054,6 @@ class Modal {
23233
23054
  this.triggerController.removeClickListener();
23234
23055
  this.cleanupViewTransitionListener();
23235
23056
  this.cleanupParentRemovalObserver();
23236
- // Also called in dismiss() — intentional dual cleanup covers both
23237
- // dismiss-then-remove and direct DOM removal without dismiss.
23238
- this.cleanupSafeAreaOverrides();
23239
23057
  }
23240
23058
  componentWillLoad() {
23241
23059
  var _a;
@@ -23396,11 +23214,6 @@ class Modal {
23396
23214
  await waitForMount();
23397
23215
  }
23398
23216
  writeTask(() => this.el.classList.add('show-modal'));
23399
- // Recalculate isSheetModal before safe-area setup because framework
23400
- // bindings (e.g., Angular) may not have been applied when componentWillLoad ran.
23401
- this.isSheetModal = this.breakpoints !== undefined && this.initialBreakpoint !== undefined;
23402
- // Set initial safe-area overrides before animation
23403
- this.setInitialSafeAreaOverrides();
23404
23217
  const hasCardModal = presentingElement !== undefined;
23405
23218
  /**
23406
23219
  * We need to change the status bar at the
@@ -23418,10 +23231,6 @@ class Modal {
23418
23231
  backdropBreakpoint: this.backdropBreakpoint,
23419
23232
  expandToScroll: this.expandToScroll,
23420
23233
  });
23421
- // Update safe-area based on actual position after animation
23422
- this.updateSafeAreaOverrides();
23423
- // Apply fullscreen safe-area padding if needed
23424
- this.applyFullscreenSafeArea();
23425
23234
  /* tslint:disable-next-line */
23426
23235
  if (typeof window !== 'undefined') {
23427
23236
  /**
@@ -23453,7 +23262,13 @@ class Modal {
23453
23262
  };
23454
23263
  window.addEventListener(KEYBOARD_DID_OPEN, this.keyboardOpenCallback);
23455
23264
  }
23456
- if (this.isSheetModal) {
23265
+ /**
23266
+ * Recalculate isSheetModal because framework bindings (e.g., Angular)
23267
+ * may not have been applied when componentWillLoad ran.
23268
+ */
23269
+ const isSheetModal = this.breakpoints !== undefined && this.initialBreakpoint !== undefined;
23270
+ this.isSheetModal = isSheetModal;
23271
+ if (isSheetModal) {
23457
23272
  this.initSheetGesture();
23458
23273
  }
23459
23274
  else if (hasCardModal) {
@@ -23643,9 +23458,6 @@ class Modal {
23643
23458
  if (this.gestureAnimationDismissing && role !== GESTURE) {
23644
23459
  return false;
23645
23460
  }
23646
- // Cancel any pending resize timeout to prevent stale updates during dismiss
23647
- clearTimeout(this.resizeTimeout);
23648
- this.resizeTimeout = undefined;
23649
23461
  /**
23650
23462
  * Because the canDismiss check below is async,
23651
23463
  * we need to claim a lock before the check happens,
@@ -23700,7 +23512,6 @@ class Modal {
23700
23512
  }
23701
23513
  this.cleanupViewTransitionListener();
23702
23514
  this.cleanupParentRemovalObserver();
23703
- this.cleanupSafeAreaOverrides();
23704
23515
  this.cleanupChildRoutePassthrough();
23705
23516
  }
23706
23517
  this.currentBreakpoint = undefined;
@@ -23821,9 +23632,6 @@ class Modal {
23821
23632
  this.viewTransitionAnimation = transitionAnimation;
23822
23633
  transitionAnimation.play().then(() => {
23823
23634
  this.viewTransitionAnimation = undefined;
23824
- // Wait for a layout pass after the transition so getBoundingClientRect()
23825
- // in getPositionBasedSafeAreaConfig() reflects the new dimensions.
23826
- raf(() => this.updateSafeAreaOverrides());
23827
23635
  // After orientation transition, recreate the swipe-to-close gesture
23828
23636
  // with updated animation that reflects the new presenting element state
23829
23637
  this.reinitSwipeToClose();
@@ -23950,123 +23758,6 @@ class Modal {
23950
23758
  (_a = this.parentRemovalObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
23951
23759
  this.parentRemovalObserver = undefined;
23952
23760
  }
23953
- /**
23954
- * Creates the context object for safe-area utilities.
23955
- */
23956
- getSafeAreaContext() {
23957
- return {
23958
- isSheetModal: this.isSheetModal,
23959
- isCardModal: this.presentingElement !== undefined && getIonMode$1(this) === 'ios',
23960
- presentingElement: this.presentingElement,
23961
- breakpoints: this.breakpoints,
23962
- currentBreakpoint: this.currentBreakpoint,
23963
- };
23964
- }
23965
- /**
23966
- * Sets initial safe-area overrides before modal animation.
23967
- * Called in present() before animation starts.
23968
- *
23969
- * For sheet modals, the SCSS --height formula uses --ion-modal-offset-top
23970
- * (an internal property) instead of --ion-safe-area-top. We resolve the
23971
- * root safe-area-top to pixels and set --ion-modal-offset-top, decoupling
23972
- * the height calculation from --ion-safe-area-top (which is zeroed for
23973
- * sheets to prevent header content from getting double-offset padding).
23974
- */
23975
- setInitialSafeAreaOverrides() {
23976
- const context = this.getSafeAreaContext();
23977
- const safeAreaConfig = getInitialSafeAreaConfig(context);
23978
- applySafeAreaOverrides(this.el, safeAreaConfig);
23979
- // Set the internal offset property with the resolved root safe-area-top value
23980
- if (context.isSheetModal) {
23981
- this.updateSheetOffsetTop();
23982
- }
23983
- }
23984
- /**
23985
- * Resolves the current root --ion-safe-area-top value and sets the
23986
- * internal --ion-modal-offset-top property on the host element.
23987
- * Called on present and on resize (e.g., device rotation changes safe-area).
23988
- */
23989
- updateSheetOffsetTop() {
23990
- const safeAreaTop = getRootSafeAreaTop();
23991
- this.el.style.setProperty('--ion-modal-offset-top', `${safeAreaTop}px`);
23992
- }
23993
- /**
23994
- * Updates safe-area overrides during dynamic state changes.
23995
- * Called after animations, during gestures, and on orientation changes.
23996
- */
23997
- updateSafeAreaOverrides() {
23998
- const { wrapperEl, el } = this;
23999
- const context = this.getSafeAreaContext();
24000
- // Sheet modals: safe-area is fully determined at presentation time
24001
- // (top is always 0px, height is frozen). Nothing to update.
24002
- if (context.isSheetModal)
24003
- return;
24004
- // Card modals have fixed safe-area requirements set by initial prediction.
24005
- if (context.isCardModal)
24006
- return;
24007
- // wrapperEl is required for position-based detection below
24008
- if (!wrapperEl)
24009
- return;
24010
- // Regular modals: use position-based detection to correctly handle both
24011
- // fullscreen modals and centered dialogs with custom dimensions.
24012
- const safeAreaConfig = getPositionBasedSafeAreaConfig(wrapperEl);
24013
- applySafeAreaOverrides(el, safeAreaConfig);
24014
- }
24015
- /**
24016
- * Applies padding-bottom to fullscreen modal wrapper to prevent
24017
- * content from overlapping system navigation bar.
24018
- */
24019
- applyFullscreenSafeArea() {
24020
- const { wrapperEl, el } = this;
24021
- if (!wrapperEl)
24022
- return;
24023
- const context = this.getSafeAreaContext();
24024
- if (context.isSheetModal || context.isCardModal)
24025
- return;
24026
- // Check for standard Ionic layout children (ion-content, ion-footer),
24027
- // searching one level deep for wrapped components (e.g.,
24028
- // <app-footer><ion-footer>...</ion-footer></app-footer>).
24029
- // Note: uses a manual loop instead of querySelector(':scope > ...') because
24030
- // Stencil's mock-doc (used in spec tests) does not support :scope.
24031
- let hasContent = false;
24032
- let hasFooter = false;
24033
- for (const child of Array.from(el.children)) {
24034
- if (child.tagName === 'ION-CONTENT')
24035
- hasContent = true;
24036
- if (child.tagName === 'ION-FOOTER')
24037
- hasFooter = true;
24038
- for (const grandchild of Array.from(child.children)) {
24039
- if (grandchild.tagName === 'ION-CONTENT')
24040
- hasContent = true;
24041
- if (grandchild.tagName === 'ION-FOOTER')
24042
- hasFooter = true;
24043
- }
24044
- }
24045
- // Only apply wrapper padding for standard Ionic layouts (has ion-content
24046
- // but no ion-footer). Custom modals with raw HTML are fully
24047
- // developer-controlled and should not be modified.
24048
- if (!hasContent || hasFooter)
24049
- return;
24050
- // Reduce wrapper height by safe-area and add equivalent padding so the
24051
- // total visual size stays the same but the flex content area shrinks.
24052
- // Using height + padding instead of box-sizing: border-box avoids
24053
- // breaking custom modals that set --border-width (border-box would
24054
- // include the border inside the height, changing the layout).
24055
- wrapperEl.style.setProperty('height', 'calc(var(--height) - var(--ion-safe-area-bottom, 0px))');
24056
- wrapperEl.style.setProperty('padding-bottom', 'var(--ion-safe-area-bottom, 0px)');
24057
- }
24058
- /**
24059
- * Clears all safe-area overrides and padding from wrapper.
24060
- */
24061
- cleanupSafeAreaOverrides() {
24062
- clearSafeAreaOverrides(this.el);
24063
- // Remove internal sheet offset property
24064
- this.el.style.removeProperty('--ion-modal-offset-top');
24065
- if (this.wrapperEl) {
24066
- this.wrapperEl.style.removeProperty('height');
24067
- this.wrapperEl.style.removeProperty('padding-bottom');
24068
- }
24069
- }
24070
23761
  render() {
24071
23762
  const { handle, isSheetModal, presentingElement, htmlAttributes, handleBehavior, inheritedAttributes, focusTrap, expandToScroll, } = this;
24072
23763
  const showHandle = handle !== false && isSheetModal;
@@ -24074,20 +23765,20 @@ class Modal {
24074
23765
  const isCardModal = presentingElement !== undefined && mode === 'ios';
24075
23766
  const isHandleCycle = handleBehavior === 'cycle';
24076
23767
  const isSheetModalWithHandle = isSheetModal && showHandle;
24077
- return (hAsync(Host, Object.assign({ key: '038ae26c2cb040043c7d0c217a4de6a7ae909235', "no-router": true,
23768
+ return (hAsync(Host, Object.assign({ key: '978ba9cc81464b2d9b4caaf36285d5f7bf7e568d', "no-router": true,
24078
23769
  // Allow the modal to be navigable when the handle is focusable
24079
23770
  tabIndex: isHandleCycle && isSheetModalWithHandle ? 0 : -1 }, htmlAttributes, { style: {
24080
23771
  zIndex: `${20000 + this.overlayIndex}`,
24081
- }, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, 'overlay-hidden': true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle, onFocus: this.onModalFocus }), hAsync("ion-backdrop", { key: '6bab796467b370e79b24ce17c5a3d51adb07ee8c', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && hAsync("div", { key: 'b9a19e86a2c7f079c88ef7a914c7c890aa601887', class: "modal-shadow" }), hAsync("div", Object.assign({ key: 'f4315c34aa78be4e3540361755964be2ddf43265',
23772
+ }, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, 'overlay-hidden': true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle, onFocus: this.onModalFocus }), hAsync("ion-backdrop", { key: '9f95566d8e0c06bb9607f514484848c250f35f1f', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && hAsync("div", { key: '91ff26d4f3ab4367f3a2940f51c6a5a3d4c972c3', class: "modal-shadow" }), hAsync("div", Object.assign({ key: '064b2dba13854505a4eb1f5e54296ac79cb7a2bd',
24082
23773
  /*
24083
23774
  role and aria-modal must be used on the
24084
23775
  same element. They must also be set inside the
24085
23776
  shadow DOM otherwise ion-button will not be highlighted
24086
23777
  when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
24087
23778
  */
24088
- role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (hAsync("button", { key: '3f7792bd65e0f8634e62bf27f9edcb636a03030a', class: "modal-handle",
23779
+ role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (hAsync("button", { key: 'b579b08b114022032d078a527111456ceefc7b35', class: "modal-handle",
24089
23780
  // Prevents the handle from receiving keyboard focus when it does not cycle
24090
- tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle", ref: (el) => (this.dragHandleEl = el) })), hAsync("slot", { key: '001e5b01831e240bd98f75ff62446b90b64d8394', onSlotchange: this.onSlotChange }))));
23781
+ tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle", ref: (el) => (this.dragHandleEl = el) })), hAsync("slot", { key: 'dacea58475b72d9c0209934ff31f3be6b9ac8c85', onSlotchange: this.onSlotChange }))));
24091
23782
  }
24092
23783
  get el() { return getElement(this); }
24093
23784
  static get watchers() { return {
@@ -25035,7 +24726,7 @@ class Nav {
25035
24726
  }
25036
24727
  }
25037
24728
  render() {
25038
- return hAsync("slot", { key: '8067c9835d255daec61f33dba200fd3a6ff839a0' });
24729
+ return hAsync("slot", { key: 'a549286b51b1bb23c9ef51f71148452228d0ab14' });
25039
24730
  }
25040
24731
  get el() { return getElement(this); }
25041
24732
  static get watchers() { return {
@@ -25108,7 +24799,7 @@ class NavLink {
25108
24799
  };
25109
24800
  }
25110
24801
  render() {
25111
- return hAsync(Host, { key: '6dbb1ad4f351e9215375aac11ab9b53762e07a08', onClick: this.onClick });
24802
+ return hAsync(Host, { key: 'd4d80feb51c0d92b0bedf6952c892f9df3002046', onClick: this.onClick });
25112
24803
  }
25113
24804
  get el() { return getElement(this); }
25114
24805
  static get cmpMeta() { return {
@@ -25139,9 +24830,9 @@ class Note {
25139
24830
  }
25140
24831
  render() {
25141
24832
  const mode = getIonMode$1(this);
25142
- return (hAsync(Host, { key: '0ec2ef7367d867fd7588611953f696eecdf3221e', class: createColorClasses$1(this.color, {
24833
+ return (hAsync(Host, { key: 'b86a6acc9274df6528d224d4c11ab826a0f84dbc', class: createColorClasses$1(this.color, {
25143
24834
  [mode]: true,
25144
- }) }, hAsync("slot", { key: 'a200b94ddffb29cf6dabe6e984220930ea7efdef' })));
24835
+ }) }, hAsync("slot", { key: '5de76567ed7713827cd277a42db102faf34190c8' })));
25145
24836
  }
25146
24837
  static get style() { return {
25147
24838
  ios: noteIosCss,
@@ -25901,11 +25592,11 @@ class Picker {
25901
25592
  render() {
25902
25593
  const { htmlAttributes } = this;
25903
25594
  const mode = getIonMode$1(this);
25904
- return (hAsync(Host, Object.assign({ key: 'b95440747eb80cba23ae676d399d5e5816722c58', "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
25595
+ return (hAsync(Host, Object.assign({ key: '80f66d33780d8a1352d24be9cb63a0cc03d01ab5', "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
25905
25596
  zIndex: `${20000 + this.overlayIndex}`,
25906
25597
  }, class: Object.assign({ [mode]: true,
25907
25598
  // Used internally for styling
25908
- [`picker-${mode}`]: true, 'overlay-hidden': true }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonPickerWillDismiss: this.dispatchCancelHandler }), hAsync("ion-backdrop", { key: '169d1c83ef40e7fcb134219a585298b403a70b0f', visible: this.showBackdrop, tappable: this.backdropDismiss }), hAsync("div", { key: '98518e5f5cea2dfb8dfa63d9545e9ae3a5765023', tabindex: "0", "aria-hidden": "true" }), hAsync("div", { key: '151755ab8eb23f9adafbfe201349398f5a69dee7', class: "picker-wrapper ion-overlay-wrapper", role: "dialog" }, hAsync("div", { key: '5dcf93b2f4fe8f4fce7c7aec8f85ef45a03ef470', class: "picker-toolbar" }, this.buttons.map((b) => (hAsync("div", { class: buttonWrapperClass(b) }, hAsync("button", { type: "button", onClick: () => this.buttonClick(b), class: buttonClass$1(b) }, b.text))))), hAsync("div", { key: 'fd5d66708edd38adc5a4d2fad7298969398a05e3', class: "picker-columns" }, hAsync("div", { key: '1b5830fd6cef1016af7736792c514965d6cb38a8', class: "picker-above-highlight" }), this.presented && this.columns.map((c) => hAsync("ion-picker-legacy-column", { col: c })), hAsync("div", { key: 'c6edeca7afd69e13c9c66ba36f261974fd0f8f78', class: "picker-below-highlight" }))), hAsync("div", { key: 'e2a4b24710e30579b14b82dbfd3761b2187797b5', tabindex: "0", "aria-hidden": "true" })));
25599
+ [`picker-${mode}`]: true, 'overlay-hidden': true }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonPickerWillDismiss: this.dispatchCancelHandler }), hAsync("ion-backdrop", { key: '97fb8e10ba08b197610cb8c0cdea61103883d55f', visible: this.showBackdrop, tappable: this.backdropDismiss }), hAsync("div", { key: 'b3969cb6fbf7153623d14e3ca1493d3370efb211', tabindex: "0", "aria-hidden": "true" }), hAsync("div", { key: '299268483c3727e698d9135bfdf40349a7050ac1', class: "picker-wrapper ion-overlay-wrapper", role: "dialog" }, hAsync("div", { key: '95394de3ef691899b7dbf416f56fd3e86bbdce3f', class: "picker-toolbar" }, this.buttons.map((b) => (hAsync("div", { class: buttonWrapperClass(b) }, hAsync("button", { type: "button", onClick: () => this.buttonClick(b), class: buttonClass$1(b) }, b.text))))), hAsync("div", { key: '05f18bb8d00dc0e22f691b7e41f90f729a6c66d7', class: "picker-columns" }, hAsync("div", { key: '4a8fdf224effc0af67fd413e2e6aca8a78d1cf43', class: "picker-above-highlight" }), this.presented && this.columns.map((c) => hAsync("ion-picker-legacy-column", { col: c })), hAsync("div", { key: 'e50a31db45e3f39e9d0fed36a21be9257eec09bf', class: "picker-below-highlight" }))), hAsync("div", { key: '5a78cb2176ac807ea0c195c6b76cd0e8eef9d4c0', tabindex: "0", "aria-hidden": "true" })));
25909
25600
  }
25910
25601
  get el() { return getElement(this); }
25911
25602
  static get watchers() { return {
@@ -26874,9 +26565,9 @@ class PickerColumnCmp {
26874
26565
  render() {
26875
26566
  const col = this.col;
26876
26567
  const mode = getIonMode$1(this);
26877
- return (hAsync(Host, { key: 'ed32d108dd94f0302fb453c31a3497ebae65ec37', class: Object.assign({ [mode]: true, 'picker-col': true, 'picker-opts-left': this.col.align === 'left', 'picker-opts-right': this.col.align === 'right' }, getClassMap(col.cssClass)), style: {
26568
+ return (hAsync(Host, { key: '86125e95f18837dfd021db01777d72a1562d8ee3', class: Object.assign({ [mode]: true, 'picker-col': true, 'picker-opts-left': this.col.align === 'left', 'picker-opts-right': this.col.align === 'right' }, getClassMap(col.cssClass)), style: {
26878
26569
  'max-width': this.col.columnWidth,
26879
- } }, col.prefix && (hAsync("div", { key: '9f0634890e66fd4ae74f826d1eea3431de121393', class: "picker-prefix", style: { width: col.prefixWidth } }, col.prefix)), hAsync("div", { key: '337e996e5be91af16446085fe22436f213b771eb', class: "picker-opts", style: { maxWidth: col.optionsWidth }, ref: (el) => (this.optsEl = el) }, col.options.map((o, index) => (hAsync("button", { "aria-label": o.ariaLabel, class: { 'picker-opt': true, 'picker-opt-disabled': !!o.disabled }, "opt-index": index }, o.text)))), col.suffix && (hAsync("div", { key: 'd69a132599d78d9e5107f12228978cfce4e43098', class: "picker-suffix", style: { width: col.suffixWidth } }, col.suffix))));
26570
+ } }, col.prefix && (hAsync("div", { key: 'b0f3d39e0bd128781066ffefb7a1e40d12a9e76d', class: "picker-prefix", style: { width: col.prefixWidth } }, col.prefix)), hAsync("div", { key: '0b106ac4d56916eaaa7f09d1b68348b3754b7bba', class: "picker-opts", style: { maxWidth: col.optionsWidth }, ref: (el) => (this.optsEl = el) }, col.options.map((o, index) => (hAsync("button", { "aria-label": o.ariaLabel, class: { 'picker-opt': true, 'picker-opt-disabled': !!o.disabled }, "opt-index": index }, o.text)))), col.suffix && (hAsync("div", { key: '00ff2f9dbb4561787e5a5223327c6a2a33f8362e', class: "picker-suffix", style: { width: col.suffixWidth } }, col.suffix))));
26880
26571
  }
26881
26572
  get el() { return getElement(this); }
26882
26573
  static get watchers() { return {
@@ -26993,10 +26684,10 @@ class PickerColumnOption {
26993
26684
  render() {
26994
26685
  const { color, disabled, ariaLabel } = this;
26995
26686
  const mode = getIonMode$1(this);
26996
- return (hAsync(Host, { key: 'f816729941aabcb31ddfdce3ffe2e2139030d715', class: createColorClasses$1(color, {
26687
+ return (hAsync(Host, { key: 'c45a1c14a351bf57d7113671164852349be5aa8a', class: createColorClasses$1(color, {
26997
26688
  [mode]: true,
26998
26689
  ['option-disabled']: disabled,
26999
- }) }, hAsync("div", { key: 'd942de84fd14d7dc06b1e5cf4f7920d1dc3c6371', class: 'picker-column-option-button', role: "button", "aria-label": ariaLabel, onClick: () => this.onClick() }, hAsync("slot", { key: 'b0df5717b42209e649097209a01476e1a66f5c5c' }))));
26690
+ }) }, hAsync("div", { key: '824930b658c6e3fb493ac4c6c2451d38c6bc4829', class: 'picker-column-option-button', role: "button", "aria-label": ariaLabel, onClick: () => this.onClick() }, hAsync("slot", { key: '019df4dcf46e629bdbebcd46ed3ab29669feab27' }))));
27000
26691
  }
27001
26692
  get el() { return getElement(this); }
27002
26693
  static get watchers() { return {
@@ -27021,58 +26712,6 @@ class PickerColumnOption {
27021
26712
  }; }
27022
26713
  }
27023
26714
 
27024
- /**
27025
- * Shared per-frame cache for safe-area insets. Avoids creating a temporary
27026
- * DOM element and forcing a synchronous reflow on every call within the same
27027
- * frame (e.g., multiple popovers presenting simultaneously). Invalidated
27028
- * after the next animation frame so values stay fresh across orientation
27029
- * changes and viewport resizes.
27030
- */
27031
- let cachedInsets = null;
27032
- let cacheInvalidationScheduled = false;
27033
- /**
27034
- * Resolves the current --ion-safe-area-* CSS custom property values
27035
- * to actual pixel numbers. A temporary element is needed because
27036
- * getComputedStyle on :root returns the declared value of custom
27037
- * properties (e.g. "env(safe-area-inset-top)") rather than a
27038
- * resolved number. By assigning them to standard padding properties,
27039
- * the browser resolves the value.
27040
- *
27041
- * Results are cached for the current frame to avoid repeated reflows.
27042
- */
27043
- const getSafeAreaInsets = (doc) => {
27044
- if (cachedInsets !== null) {
27045
- return cachedInsets;
27046
- }
27047
- if (doc.body === null) {
27048
- return { top: 0, bottom: 0, left: 0, right: 0 };
27049
- }
27050
- const el = doc.createElement('div');
27051
- el.style.cssText =
27052
- 'position:fixed;visibility:hidden;pointer-events:none;top:0;left:0;' +
27053
- 'padding-top:var(--ion-safe-area-top,0px);' +
27054
- 'padding-bottom:var(--ion-safe-area-bottom,0px);' +
27055
- 'padding-left:var(--ion-safe-area-left,0px);' +
27056
- 'padding-right:var(--ion-safe-area-right,0px);';
27057
- doc.body.appendChild(el);
27058
- const style = getComputedStyle(el);
27059
- const insets = {
27060
- top: parseFloat(style.paddingTop) || 0,
27061
- bottom: parseFloat(style.paddingBottom) || 0,
27062
- left: parseFloat(style.paddingLeft) || 0,
27063
- right: parseFloat(style.paddingRight) || 0,
27064
- };
27065
- el.remove();
27066
- cachedInsets = insets;
27067
- if (!cacheInvalidationScheduled) {
27068
- cacheInvalidationScheduled = true;
27069
- raf(() => {
27070
- cachedInsets = null;
27071
- cacheInvalidationScheduled = false;
27072
- });
27073
- }
27074
- return insets;
27075
- };
27076
26715
  /**
27077
26716
  * Returns the dimensions of the popover
27078
26717
  * arrow on `ios` mode. If arrow is disabled
@@ -27708,10 +27347,8 @@ const calculatePopoverCenterAlign = (side, triggerBoundingBox, contentWidth, con
27708
27347
  * Adjusts popover positioning coordinates
27709
27348
  * such that popover does not appear offscreen
27710
27349
  * or overlapping safe area bounds.
27711
- *
27712
- * @internal - This is not part of the public API.
27713
27350
  */
27714
- const calculateWindowAdjustment = (side, coordTop, coordLeft, bodyPadding, bodyWidth, bodyHeight, contentWidth, contentHeight, safeArea, contentOriginX, contentOriginY, triggerCoordinates, coordArrowTop = 0, coordArrowLeft = 0, arrowHeight = 0) => {
27351
+ const calculateWindowAdjustment = (side, coordTop, coordLeft, bodyPadding, bodyWidth, bodyHeight, contentWidth, contentHeight, safeAreaMargin, contentOriginX, contentOriginY, triggerCoordinates, coordArrowTop = 0, coordArrowLeft = 0, arrowHeight = 0) => {
27715
27352
  let arrowTop = coordArrowTop;
27716
27353
  const arrowLeft = coordArrowLeft;
27717
27354
  let left = coordLeft;
@@ -27721,19 +27358,16 @@ const calculateWindowAdjustment = (side, coordTop, coordLeft, bodyPadding, bodyW
27721
27358
  let originY = contentOriginY;
27722
27359
  let checkSafeAreaLeft = false;
27723
27360
  let checkSafeAreaRight = false;
27724
- let checkSafeAreaTop = false;
27725
- let checkSafeAreaBottom = false;
27726
27361
  const triggerTop = triggerCoordinates
27727
27362
  ? triggerCoordinates.top + triggerCoordinates.height
27728
27363
  : bodyHeight / 2 - contentHeight / 2;
27729
27364
  const triggerHeight = triggerCoordinates ? triggerCoordinates.height : 0;
27730
27365
  let addPopoverBottomClass = false;
27731
- const hideArrow = false;
27732
27366
  /**
27733
27367
  * Adjust popover so it does not
27734
27368
  * go off the left of the screen.
27735
27369
  */
27736
- if (left < bodyPadding + safeArea.left) {
27370
+ if (left < bodyPadding + safeAreaMargin) {
27737
27371
  left = bodyPadding;
27738
27372
  checkSafeAreaLeft = true;
27739
27373
  originX = 'left';
@@ -27742,58 +27376,41 @@ const calculateWindowAdjustment = (side, coordTop, coordLeft, bodyPadding, bodyW
27742
27376
  * go off the right of the screen.
27743
27377
  */
27744
27378
  }
27745
- else if (contentWidth + bodyPadding + left + safeArea.right > bodyWidth) {
27379
+ else if (contentWidth + bodyPadding + left + safeAreaMargin > bodyWidth) {
27746
27380
  checkSafeAreaRight = true;
27747
27381
  left = bodyWidth - contentWidth - bodyPadding;
27748
27382
  originX = 'right';
27749
27383
  }
27750
27384
  /**
27751
27385
  * Adjust popover so it does not
27752
- * go off the bottom of the screen
27753
- * or overlap the bottom safe area.
27386
+ * go off the top of the screen.
27754
27387
  * If popover is on the left or the right of
27755
27388
  * the trigger, then we should not adjust top
27756
27389
  * margins.
27757
27390
  */
27758
- if (triggerTop + triggerHeight + contentHeight > bodyHeight - safeArea.bottom &&
27759
- (side === 'top' || side === 'bottom')) {
27760
- /**
27761
- * Calculate where the popover top would be if flipped
27762
- * above the trigger. Check whether that position clears
27763
- * the top safe area with room for bodyPadding.
27764
- */
27765
- const idealFlipTop = triggerTop - contentHeight - triggerHeight - (arrowHeight - 1);
27766
- if (idealFlipTop >= safeArea.top + bodyPadding) {
27391
+ if (triggerTop + triggerHeight + contentHeight > bodyHeight && (side === 'top' || side === 'bottom')) {
27392
+ if (triggerTop - contentHeight > 0) {
27767
27393
  /**
27768
- * Popover fits above the trigger without overlapping
27769
- * the top safe area. Use the ideal position directly —
27770
- * no safe-area CSS vars needed since it clears both edges.
27394
+ * While we strive to align the popover with the trigger
27395
+ * on smaller screens this is not always possible. As a result,
27396
+ * we adjust the popover up so that it does not hang
27397
+ * off the bottom of the screen. However, we do not want to move
27398
+ * the popover up so much that it goes off the top of the screen.
27399
+ *
27400
+ * We chose 12 here so that the popover position looks a bit nicer as
27401
+ * it is not right up against the edge of the screen.
27771
27402
  */
27772
- top = idealFlipTop;
27403
+ top = Math.max(12, triggerTop - contentHeight - triggerHeight - (arrowHeight - 1));
27773
27404
  arrowTop = top + contentHeight;
27774
27405
  originY = 'bottom';
27775
27406
  addPopoverBottomClass = true;
27776
- }
27777
- else {
27778
27407
  /**
27779
- * Can't flip above the trigger. Constrain the bottom
27780
- * edge while keeping the top near the trigger. This
27781
- * creates a scrollable area anchored to the trigger.
27408
+ * If not enough room for popover to appear
27409
+ * above trigger, then cut it off.
27782
27410
  */
27411
+ }
27412
+ else {
27783
27413
  bottom = bodyPadding;
27784
- checkSafeAreaBottom = true;
27785
- /**
27786
- * When the trigger is near the bottom of the screen,
27787
- * the calculated top may be at or past the bottom
27788
- * constraint, leaving zero visible height. In that
27789
- * case, pull top up to the top safe area so the
27790
- * popover fills the available space between safe areas.
27791
- */
27792
- const bottomEdge = bodyHeight - safeArea.bottom - bodyPadding;
27793
- if (top >= bottomEdge) {
27794
- top = safeArea.top + bodyPadding;
27795
- checkSafeAreaTop = true;
27796
- }
27797
27414
  }
27798
27415
  }
27799
27416
  return {
@@ -27804,12 +27421,9 @@ const calculateWindowAdjustment = (side, coordTop, coordLeft, bodyPadding, bodyW
27804
27421
  originY,
27805
27422
  checkSafeAreaLeft,
27806
27423
  checkSafeAreaRight,
27807
- checkSafeAreaTop,
27808
- checkSafeAreaBottom,
27809
27424
  arrowTop,
27810
27425
  arrowLeft,
27811
27426
  addPopoverBottomClass,
27812
- hideArrow,
27813
27427
  };
27814
27428
  };
27815
27429
  const shouldShowArrow = (side, didAdjustBounds = false, ev, trigger) => {
@@ -27839,15 +27453,6 @@ const shouldShowArrow = (side, didAdjustBounds = false, ev, trigger) => {
27839
27453
  };
27840
27454
 
27841
27455
  const POPOVER_IOS_BODY_PADDING = 5;
27842
- /**
27843
- * Minimum edge margin for iOS popovers ensures visual spacing from screen
27844
- * edges on devices without safe areas (e.g., older iPhones without notches).
27845
- * Previously this was a hardcoded `safeAreaMargin = 25` that served dual
27846
- * purpose: safe-area avoidance AND visual spacing. Now that actual safe-area
27847
- * insets are read dynamically, this floor preserves the visual spacing when
27848
- * safe-area values are 0.
27849
- */
27850
- const POPOVER_IOS_MIN_EDGE_MARGIN = 25;
27851
27456
  /**
27852
27457
  * iOS Popover Enter Animation
27853
27458
  */
@@ -27873,16 +27478,8 @@ const iosEnterAnimation$1 = (baseEl, opts) => {
27873
27478
  };
27874
27479
  const results = getPopoverPosition(isRTL, contentWidth, contentHeight, arrowWidth, arrowHeight, reference, side, align, defaultPosition, trigger, ev);
27875
27480
  const padding = size === 'cover' ? 0 : POPOVER_IOS_BODY_PADDING;
27876
- const rawSafeArea = getSafeAreaInsets(doc);
27877
- const safeArea = size === 'cover'
27878
- ? { top: 0, bottom: 0, left: 0, right: 0 }
27879
- : {
27880
- top: Math.max(rawSafeArea.top, POPOVER_IOS_MIN_EDGE_MARGIN),
27881
- bottom: Math.max(rawSafeArea.bottom, POPOVER_IOS_MIN_EDGE_MARGIN),
27882
- left: Math.max(rawSafeArea.left, POPOVER_IOS_MIN_EDGE_MARGIN),
27883
- right: Math.max(rawSafeArea.right, POPOVER_IOS_MIN_EDGE_MARGIN),
27884
- };
27885
- const { originX, originY, top, left, bottom, checkSafeAreaLeft, checkSafeAreaRight, checkSafeAreaTop, checkSafeAreaBottom, arrowTop, arrowLeft, addPopoverBottomClass} = calculateWindowAdjustment(side, results.top, results.left, padding, bodyWidth, bodyHeight, contentWidth, contentHeight, safeArea, results.originX, results.originY, results.referenceCoordinates, results.arrowTop, results.arrowLeft, arrowHeight);
27481
+ const margin = size === 'cover' ? 0 : 25;
27482
+ const { originX, originY, top, left, bottom, checkSafeAreaLeft, checkSafeAreaRight, arrowTop, arrowLeft, addPopoverBottomClass, } = calculateWindowAdjustment(side, results.top, results.left, padding, bodyWidth, bodyHeight, contentWidth, contentHeight, margin, results.originX, results.originY, results.referenceCoordinates, results.arrowTop, results.arrowLeft, arrowHeight);
27886
27483
  const baseAnimation = createAnimation();
27887
27484
  const backdropAnimation = createAnimation();
27888
27485
  const contentAnimation = createAnimation();
@@ -27913,14 +27510,10 @@ const iosEnterAnimation$1 = (baseEl, opts) => {
27913
27510
  baseEl.classList.add('popover-bottom');
27914
27511
  }
27915
27512
  if (bottom !== undefined) {
27916
- let bottomValue = `${bottom}px`;
27917
- if (checkSafeAreaBottom) {
27918
- bottomValue = `${bottom}px + var(--ion-safe-area-bottom, 0px)`;
27919
- }
27920
- contentEl.style.setProperty('bottom', `calc(${bottomValue})`);
27513
+ contentEl.style.setProperty('bottom', `${bottom}px`);
27921
27514
  }
27922
- const safeAreaLeft = ' + var(--ion-safe-area-left, 0px)';
27923
- const safeAreaRight = ' - var(--ion-safe-area-right, 0px)';
27515
+ const safeAreaLeft = ' + var(--ion-safe-area-left, 0)';
27516
+ const safeAreaRight = ' - var(--ion-safe-area-right, 0)';
27924
27517
  let leftValue = `${left}px`;
27925
27518
  if (checkSafeAreaLeft) {
27926
27519
  leftValue = `${left}px${safeAreaLeft}`;
@@ -27928,11 +27521,7 @@ const iosEnterAnimation$1 = (baseEl, opts) => {
27928
27521
  if (checkSafeAreaRight) {
27929
27522
  leftValue = `${left}px${safeAreaRight}`;
27930
27523
  }
27931
- let topValue = `${top}px`;
27932
- if (checkSafeAreaTop) {
27933
- topValue = `${top}px + var(--ion-safe-area-top, 0px)`;
27934
- }
27935
- contentEl.style.setProperty('top', `calc(${topValue} + var(--offset-y, 0))`);
27524
+ contentEl.style.setProperty('top', `calc(${top}px + var(--offset-y, 0))`);
27936
27525
  contentEl.style.setProperty('left', `calc(${leftValue} + var(--offset-x, 0))`);
27937
27526
  contentEl.style.setProperty('transform-origin', `${originY} ${originX}`);
27938
27527
  if (arrowEl !== null) {
@@ -28008,23 +27597,7 @@ const mdEnterAnimation$1 = (baseEl, opts) => {
28008
27597
  };
28009
27598
  const results = getPopoverPosition(isRTL, contentWidth, contentHeight, 0, 0, reference, side, align, defaultPosition, trigger, ev);
28010
27599
  const padding = size === 'cover' ? 0 : POPOVER_MD_BODY_PADDING;
28011
- // MD mode now applies safe-area insets (previously passed 0, ignoring all safe areas).
28012
- // This is needed for Android edge-to-edge (API 36+) where system bars overlap content.
28013
- const safeArea = size === 'cover' ? { top: 0, bottom: 0, left: 0, right: 0 } : getSafeAreaInsets(doc);
28014
- const { originX, originY, top, left, bottom, checkSafeAreaLeft, checkSafeAreaRight, checkSafeAreaTop, checkSafeAreaBottom, addPopoverBottomClass, } = calculateWindowAdjustment(side, results.top, results.left, padding, bodyWidth, bodyHeight, contentWidth, contentHeight, safeArea, results.originX, results.originY, results.referenceCoordinates);
28015
- const safeAreaLeftCalc = ' + var(--ion-safe-area-left, 0px)';
28016
- const safeAreaRightCalc = ' - var(--ion-safe-area-right, 0px)';
28017
- let leftValue = `${left}px`;
28018
- if (checkSafeAreaLeft) {
28019
- leftValue = `${left}px${safeAreaLeftCalc}`;
28020
- }
28021
- if (checkSafeAreaRight) {
28022
- leftValue = `${left}px${safeAreaRightCalc}`;
28023
- }
28024
- let topValue = `${top}px`;
28025
- if (checkSafeAreaTop) {
28026
- topValue = `${top}px + var(--ion-safe-area-top, 0px)`;
28027
- }
27600
+ const { originX, originY, top, left, bottom } = calculateWindowAdjustment(side, results.top, results.left, padding, bodyWidth, bodyHeight, contentWidth, contentHeight, 0, results.originX, results.originY, results.referenceCoordinates);
28028
27601
  const baseAnimation = createAnimation();
28029
27602
  const backdropAnimation = createAnimation();
28030
27603
  const wrapperAnimation = createAnimation();
@@ -28041,17 +27614,13 @@ const mdEnterAnimation$1 = (baseEl, opts) => {
28041
27614
  contentAnimation
28042
27615
  .addElement(contentEl)
28043
27616
  .beforeStyles({
28044
- top: `calc(${topValue} + var(--offset-y, 0px))`,
28045
- left: `calc(${leftValue} + var(--offset-x, 0px))`,
27617
+ top: `calc(${top}px + var(--offset-y, 0px))`,
27618
+ left: `calc(${left}px + var(--offset-x, 0px))`,
28046
27619
  'transform-origin': `${originY} ${originX}`,
28047
27620
  })
28048
27621
  .beforeAddWrite(() => {
28049
27622
  if (bottom !== undefined) {
28050
- let bottomValue = `${bottom}px`;
28051
- if (checkSafeAreaBottom) {
28052
- bottomValue = `${bottom}px + var(--ion-safe-area-bottom, 0px)`;
28053
- }
28054
- contentEl.style.setProperty('bottom', `calc(${bottomValue})`);
27623
+ contentEl.style.setProperty('bottom', `${bottom}px`);
28055
27624
  }
28056
27625
  })
28057
27626
  .fromTo('transform', 'scale(0.8)', 'scale(1)');
@@ -28063,7 +27632,7 @@ const mdEnterAnimation$1 = (baseEl, opts) => {
28063
27632
  if (size === 'cover') {
28064
27633
  baseEl.style.setProperty('--width', `${contentWidth}px`);
28065
27634
  }
28066
- if (addPopoverBottomClass) {
27635
+ if (originY === 'bottom') {
28067
27636
  baseEl.classList.add('popover-bottom');
28068
27637
  }
28069
27638
  })
@@ -28559,9 +28128,9 @@ class Popover {
28559
28128
  const { onLifecycle, parentPopover, dismissOnSelect, side, arrow, htmlAttributes, focusTrap } = this;
28560
28129
  const desktop = isPlatform('desktop');
28561
28130
  const enableArrow = arrow && !parentPopover;
28562
- return (hAsync(Host, Object.assign({ key: '42863f748c93f709d433931d969230137b37d42d', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
28131
+ return (hAsync(Host, Object.assign({ key: '2edd8333c630efbce59071f8a383e4326e928dbc', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
28563
28132
  zIndex: `${20000 + this.overlayIndex}`,
28564
- }, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'popover-translucent': this.translucent, 'overlay-hidden': true, 'popover-desktop': desktop, [`popover-side-${side}`]: true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false, 'popover-nested': !!parentPopover }), onIonPopoverDidPresent: onLifecycle, onIonPopoverWillPresent: onLifecycle, onIonPopoverWillDismiss: onLifecycle, onIonPopoverDidDismiss: onLifecycle, onIonBackdropTap: this.onBackdropTap }), !parentPopover && hAsync("ion-backdrop", { key: '22b6d82178b52158b76ab3fd9a7dd738fd6e4bbf', tappable: this.backdropDismiss, visible: this.showBackdrop, part: "backdrop" }), hAsync("div", { key: 'b76335c64e992a964ed3fb91d17a992c3474b4cd', class: "popover-wrapper ion-overlay-wrapper", onClick: dismissOnSelect ? () => this.dismiss() : undefined }, enableArrow && hAsync("div", { key: '018c846c32e7ff7fa010528e6b37a17e5f03c84c', class: "popover-arrow", part: "arrow" }), hAsync("div", { key: '350c468c80052da3a07768bceab98fe159c35a43', class: "popover-content", part: "content" }, hAsync("slot", { key: '686443c17ac9873d33905c1cdb67e6d6da675282' })))));
28133
+ }, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'popover-translucent': this.translucent, 'overlay-hidden': true, 'popover-desktop': desktop, [`popover-side-${side}`]: true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false, 'popover-nested': !!parentPopover }), onIonPopoverDidPresent: onLifecycle, onIonPopoverWillPresent: onLifecycle, onIonPopoverWillDismiss: onLifecycle, onIonPopoverDidDismiss: onLifecycle, onIonBackdropTap: this.onBackdropTap }), !parentPopover && hAsync("ion-backdrop", { key: 'aac4e68b08197534375e8ea3f8c9ea0c10ab2af4', tappable: this.backdropDismiss, visible: this.showBackdrop, part: "backdrop" }), hAsync("div", { key: 'b7f4ebf57d4148b32856b0075d286f454be8de5d', class: "popover-wrapper ion-overlay-wrapper", onClick: dismissOnSelect ? () => this.dismiss() : undefined }, enableArrow && hAsync("div", { key: '607d94c28d73e8e957175a7c0f6e8a99ec4dcd53', class: "popover-arrow", part: "arrow" }), hAsync("div", { key: '4366a5a5de550c09895e923f345583508e1ec30c', class: "popover-content", part: "content" }, hAsync("slot", { key: 'eb7886fbc99c15b667b7d825d24f1c12d9380f03' })))));
28565
28134
  }
28566
28135
  get el() { return getElement(this); }
28567
28136
  static get watchers() { return {
@@ -28666,7 +28235,7 @@ class ProgressBar {
28666
28235
  const mode = getIonMode$1(this);
28667
28236
  // If the progress is displayed as a solid bar.
28668
28237
  const progressSolid = buffer === 1;
28669
- return (hAsync(Host, { key: 'dc69693b5d2dcb2b6e4296d7cb85bc27507f3fa6', role: "progressbar", "aria-valuenow": type === 'determinate' ? value : null, "aria-valuemin": "0", "aria-valuemax": "1", class: createColorClasses$1(color, {
28238
+ return (hAsync(Host, { key: 'c859e48f3d24a458239e36d925e5dc003ed07c6b', role: "progressbar", "aria-valuenow": type === 'determinate' ? value : null, "aria-valuemin": "0", "aria-valuemax": "1", class: createColorClasses$1(color, {
28670
28239
  [mode]: true,
28671
28240
  [`progress-bar-${type}`]: true,
28672
28241
  'progress-paused': paused,
@@ -28851,7 +28420,7 @@ class Radio {
28851
28420
  const { checked, disabled, color, el, justify, labelPlacement, hasLabel, buttonTabindex, alignment } = this;
28852
28421
  const mode = getIonMode$1(this);
28853
28422
  const inItem = hostContext('ion-item', el);
28854
- return (hAsync(Host, { key: '3353b28172b7f837d4b38964169b5b5f4ba02788', onFocus: this.onFocus, onBlur: this.onBlur, onClick: this.onClick, class: createColorClasses$1(color, {
28423
+ return (hAsync(Host, { key: 'af5dc59ed528150872e907ed1036e3e2decba939', onFocus: this.onFocus, onBlur: this.onBlur, onClick: this.onClick, class: createColorClasses$1(color, {
28855
28424
  [mode]: true,
28856
28425
  'in-item': inItem,
28857
28426
  'radio-checked': checked,
@@ -28862,10 +28431,10 @@ class Radio {
28862
28431
  // Focus and active styling should not apply when the radio is in an item
28863
28432
  'ion-activatable': !inItem,
28864
28433
  'ion-focusable': !inItem,
28865
- }), role: "radio", "aria-checked": checked ? 'true' : 'false', "aria-disabled": disabled ? 'true' : null, tabindex: buttonTabindex }, hAsync("label", { key: '418a0a48366ff900e97da123abf665bbbda87fb7', class: "radio-wrapper" }, hAsync("div", { key: '6e5acdd8c8f5d0ad26632a65396afef8094153d1', class: {
28434
+ }), role: "radio", "aria-checked": checked ? 'true' : 'false', "aria-disabled": disabled ? 'true' : null, tabindex: buttonTabindex }, hAsync("label", { key: '1312aba3259a87fe23a6911cdfa477e309469c8b', class: "radio-wrapper" }, hAsync("div", { key: 'b342aa27e240a300836d2a135658d346b95daf09', class: {
28866
28435
  'label-text-wrapper': true,
28867
28436
  'label-text-wrapper-hidden': !hasLabel,
28868
- }, part: "label" }, hAsync("slot", { key: '10b157162cd283d624153c747679609cf0bbf11e' })), hAsync("div", { key: '4c45cca95cb105cd6df1025a26e3c045272184a0', class: "native-wrapper" }, this.renderRadioControl()))));
28437
+ }, part: "label" }, hAsync("slot", { key: '0a4613d29aa783d1882cf889377f7e4fd4fea51d' })), hAsync("div", { key: '191faea79dc4cd8befc4b873f5bd9f5af8ca2acc', class: "native-wrapper" }, this.renderRadioControl()))));
28869
28438
  }
28870
28439
  get el() { return getElement(this); }
28871
28440
  static get watchers() { return {
@@ -29104,7 +28673,7 @@ class RadioGroup {
29104
28673
  const { label, labelId, el, name, value } = this;
29105
28674
  const mode = getIonMode$1(this);
29106
28675
  renderHiddenInput(true, el, name, value, false);
29107
- return (hAsync(Host, { key: 'db593b3ed511e9395e3c7bfd91b787328692cd6d', role: "radiogroup", "aria-labelledby": label ? labelId : null, "aria-describedby": this.hintTextId, "aria-invalid": this.isInvalid ? 'true' : undefined, onClick: this.onClick, class: mode }, this.renderHintText(), hAsync("div", { key: '85045b45a0100a45f3b9a35d1c5a25ec63d525c4', class: "radio-group-wrapper" }, hAsync("slot", { key: '53dacb87ce62398e78771fb2efaf839ab922d946' }))));
28676
+ return (hAsync(Host, { key: 'db593b3ed511e9395e3c7bfd91b787328692cd6d', role: "radiogroup", "aria-labelledby": label ? labelId : null, "aria-describedby": this.hintTextId, "aria-invalid": this.isInvalid ? 'true' : undefined, onClick: this.onClick, class: mode }, this.renderHintText(), hAsync("slot", { key: 'd683b01c1ba34fe843c4b320bce4661a117472a5' })));
29108
28677
  }
29109
28678
  get el() { return getElement(this); }
29110
28679
  static get watchers() { return {
@@ -29864,7 +29433,7 @@ class Range {
29864
29433
  const needsEndAdjustment = inItem && !hasEndContent;
29865
29434
  const mode = getIonMode$1(this);
29866
29435
  renderHiddenInput(true, el, this.name, JSON.stringify(this.getValue()), disabled);
29867
- return (hAsync(Host, { key: 'ef7b01f80515bcaeb2983934ad7f10a6bd5d13ec', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: createColorClasses$1(this.color, {
29436
+ return (hAsync(Host, { key: 'affcac4709096a48a5b4c1864b209b6352f6b078', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: createColorClasses$1(this.color, {
29868
29437
  [mode]: true,
29869
29438
  'in-item': inItem,
29870
29439
  'range-disabled': disabled,
@@ -29873,10 +29442,10 @@ class Range {
29873
29442
  [`range-label-placement-${labelPlacement}`]: true,
29874
29443
  'range-item-start-adjustment': needsStartAdjustment,
29875
29444
  'range-item-end-adjustment': needsEndAdjustment,
29876
- }) }, hAsync("label", { key: 'fd8aa90a9d52be9da024b907e68858dae424449d', class: "range-wrapper", id: "range-label" }, hAsync("div", { key: '2172b4f329c22017dd23475c80aac25ba6e753eb', class: {
29445
+ }) }, hAsync("label", { key: 'c7cf95fa831d10b17c137995d0a9e0cf84006a76', class: "range-wrapper", id: "range-label" }, hAsync("div", { key: '5b8479c7939ae0f94a042c3aafd64316e4577d30', class: {
29877
29446
  'label-text-wrapper': true,
29878
29447
  'label-text-wrapper-hidden': !hasLabel,
29879
- }, part: "label" }, label !== undefined ? hAsync("div", { class: "label-text" }, label) : hAsync("slot", { name: "label" })), hAsync("div", { key: '3c318bf2ea0576646d4c010bf44573fd0f483186', class: "native-wrapper" }, hAsync("slot", { key: '6586fd6fc96271e73f8a86c202d1913ad1a26f96', name: "start" }), this.renderRangeSlider(), hAsync("slot", { key: '74ac0bc2d2cb66ef708bb729f88b6ecbc1b2155d', name: "end" })))));
29448
+ }, part: "label" }, label !== undefined ? hAsync("div", { class: "label-text" }, label) : hAsync("slot", { name: "label" })), hAsync("div", { key: '3c275d822b29a8008e044722e8b6bdabd3ecfad7', class: "native-wrapper" }, hAsync("slot", { key: '03c849d0aa708914984ad57ca292bc5fc66ecad5', name: "start" }), this.renderRangeSlider(), hAsync("slot", { key: '10ca7b8152cac00b45d8fa98ad91410f59fd176a', name: "end" })))));
29880
29449
  }
29881
29450
  get el() { return getElement(this); }
29882
29451
  static get watchers() { return {
@@ -30843,7 +30412,7 @@ class Refresher {
30843
30412
  }
30844
30413
  render() {
30845
30414
  const mode = getIonMode$1(this);
30846
- return (hAsync(Host, { key: '2d1bd880877b698604542ab2d602d38b9504d975', slot: "fixed", class: {
30415
+ return (hAsync(Host, { key: '06d61cc53260ce146dd6906cc96597e9baaa17cf', slot: "fixed", class: {
30847
30416
  [mode]: true,
30848
30417
  // Used internally for styling
30849
30418
  [`refresher-${mode}`]: true,
@@ -31067,7 +30636,7 @@ class RefresherContent {
31067
30636
  const pullingIcon = this.pullingIcon;
31068
30637
  const hasSpinner = pullingIcon != null && SPINNERS[pullingIcon] !== undefined;
31069
30638
  const mode = getIonMode$1(this);
31070
- return (hAsync(Host, { key: 'e235f8a9a84070ece2e2066ced234a64663bfa1d', class: mode }, hAsync("div", { key: '9121691818ddaa35801a5f442e144ac27686cf19', class: "refresher-pulling" }, this.pullingIcon && hasSpinner && (hAsync("div", { key: 'c8d65d740f1575041bd3b752c789077927397fe4', class: "refresher-pulling-icon" }, hAsync("div", { key: '309dd904977eaa788b09ea95b7fa4996a73bec5b', class: "spinner-arrow-container" }, hAsync("ion-spinner", { key: 'a2a1480f67775d56ca7822e76be1e9f983bca2f9', name: this.pullingIcon, paused: true }), mode === 'md' && this.pullingIcon === 'circular' && (hAsync("div", { key: '811d7e06d324bf4b6a18a31427a43e5177f3ae3a', class: "arrow-container" }, hAsync("ion-icon", { key: '86cc48e2e8dc054ff6ff1299094da35b524be63d', icon: caretBackSharp, "aria-hidden": "true" })))))), this.pullingIcon && !hasSpinner && (hAsync("div", { key: '464ae097dbc95c18a2dd7dfd03f8489153dab719', class: "refresher-pulling-icon" }, hAsync("ion-icon", { key: 'ed6875978b9035add562caa743a68353743d978f', icon: this.pullingIcon, lazy: false, "aria-hidden": "true" }))), this.pullingText !== undefined && this.renderPullingText()), hAsync("div", { key: 'aff891924e44354543fec484e5cde1ca92e69904', class: "refresher-refreshing" }, this.refreshingSpinner && (hAsync("div", { key: '842d7ac4ff10a1058775493d62f31cbdcd34f7a0', class: "refresher-refreshing-icon" }, hAsync("ion-spinner", { key: '8c3e6195501e7e78d5cde1e3ad1fef90fd4a953f', name: this.refreshingSpinner }))), this.refreshingText !== undefined && this.renderRefreshingText())));
30639
+ return (hAsync(Host, { key: '4add42b9fdfded359d1b054d04c2c6ff48e028c8', class: mode }, hAsync("div", { key: '45d4e4e0adfed7f96dd1849767aa2cde947de044', class: "refresher-pulling" }, this.pullingIcon && hasSpinner && (hAsync("div", { key: '6bd6c8ef5bf6e10699eec3bd8646431bfe1077a0', class: "refresher-pulling-icon" }, hAsync("div", { key: '852d20414da53352c8e58bc627e0fda38eff97cb', class: "spinner-arrow-container" }, hAsync("ion-spinner", { key: '0dde3578a80cc4b77a07c4d1db1af80c7eb10c27', name: this.pullingIcon, paused: true }), mode === 'md' && this.pullingIcon === 'circular' && (hAsync("div", { key: 'c71dbfcf416a19c30fed38f722ebf0358c2181dd', class: "arrow-container" }, hAsync("ion-icon", { key: 'fa7c2cf624e7a9c41964e66cabc88c594da6d1fd', icon: caretBackSharp, "aria-hidden": "true" })))))), this.pullingIcon && !hasSpinner && (hAsync("div", { key: '3dd68c9968b421c379d1c4349ba619ee0a189c6d', class: "refresher-pulling-icon" }, hAsync("ion-icon", { key: 'f83bceceae4fa8245f91939fb6db589a595e975b', icon: this.pullingIcon, lazy: false, "aria-hidden": "true" }))), this.pullingText !== undefined && this.renderPullingText()), hAsync("div", { key: '98e22ceb0f7883e871f815f6199f5cb313e2e086', class: "refresher-refreshing" }, this.refreshingSpinner && (hAsync("div", { key: 'faabe8a9b61c02a00994ef978bb82b9ba4537214', class: "refresher-refreshing-icon" }, hAsync("ion-spinner", { key: '029a0c073ee1a07f01211e12ba2abc985cf21ed7', name: this.refreshingSpinner }))), this.refreshingText !== undefined && this.renderRefreshingText())));
31071
30640
  }
31072
30641
  get el() { return getElement(this); }
31073
30642
  static get cmpMeta() { return {
@@ -31108,7 +30677,7 @@ class Reorder {
31108
30677
  render() {
31109
30678
  const mode = getIonMode$1(this);
31110
30679
  const reorderIcon = mode === 'ios' ? reorderThreeOutline : reorderTwoSharp;
31111
- return (hAsync(Host, { key: 'e6807bb349725682e99e791ac65e729a360d64e8', class: mode }, hAsync("slot", { key: '1c691cdbffa6427ba08dc12184c69559ed5d5506' }, hAsync("ion-icon", { key: '8b4150302cdca475379582b2251737b5e74079b1', icon: reorderIcon, lazy: false, class: "reorder-icon", part: "icon", "aria-hidden": "true" }))));
30680
+ return (hAsync(Host, { key: 'b869db61ca6393cf1476f2111a66b387b567c6d1', class: mode }, hAsync("slot", { key: 'a78edd1776835282b8b5c841377018f36c83296c' }, hAsync("ion-icon", { key: '7fb067c47bbb9a7258e5063f028282cc097d0f94', icon: reorderIcon, lazy: false, class: "reorder-icon", part: "icon", "aria-hidden": "true" }))));
31112
30681
  }
31113
30682
  get el() { return getElement(this); }
31114
30683
  static get style() { return {
@@ -31379,7 +30948,7 @@ class ReorderGroup {
31379
30948
  }
31380
30949
  render() {
31381
30950
  const mode = getIonMode$1(this);
31382
- return (hAsync(Host, { key: 'b9641f3061d67fbfe68317b901ec33267046e073', class: {
30951
+ return (hAsync(Host, { key: '9527bbdedaab63d31f562c874a7332ea60c4b47b', class: {
31383
30952
  [mode]: true,
31384
30953
  'reorder-enabled': !this.disabled,
31385
30954
  'reorder-list-active': this.state !== 0 /* ReorderGroupState.Idle */,
@@ -31495,7 +31064,7 @@ class RippleEffect {
31495
31064
  }
31496
31065
  render() {
31497
31066
  const mode = getIonMode$1(this);
31498
- return (hAsync(Host, { key: 'ae9d3b1ed6773a9b9bb2267129f7e9af23b6c9fc', role: "presentation", class: {
31067
+ return (hAsync(Host, { key: '3b59cbb44741569a7350f9638b4392add673b6f1', role: "presentation", class: {
31499
31068
  [mode]: true,
31500
31069
  unbounded: this.unbounded,
31501
31070
  } }));
@@ -32454,10 +32023,10 @@ class RouterLink {
32454
32023
  rel: this.rel,
32455
32024
  target: this.target,
32456
32025
  };
32457
- return (hAsync(Host, { key: 'd7f2affcde45c5fbb6cb46cd1c30008ee92a68c5', onClick: this.onClick, class: createColorClasses$1(this.color, {
32026
+ return (hAsync(Host, { key: '8372835161d507c7b821b7536c55f912eb6ce704', onClick: this.onClick, class: createColorClasses$1(this.color, {
32458
32027
  [mode]: true,
32459
32028
  'ion-activatable': true,
32460
- }) }, hAsync("a", Object.assign({ key: 'babafae85ca5c6429958d383feff0493ff8cf33e' }, attrs), hAsync("slot", { key: '50314e9555bbf6dffa0c50c3f763009dee59b10b' }))));
32029
+ }) }, hAsync("a", Object.assign({ key: '315966e14a17760f3f64197e8315200039787897' }, attrs), hAsync("slot", { key: '95fc1697b884225e85e647dddcaa8f4af8b9a979' }))));
32461
32030
  }
32462
32031
  static get style() { return routerLinkCss; }
32463
32032
  static get cmpMeta() { return {
@@ -32654,7 +32223,7 @@ class RouterOutlet {
32654
32223
  return true;
32655
32224
  }
32656
32225
  render() {
32657
- return hAsync("slot", { key: '84b50f1155b0d780dff802ee13223287259fd525' });
32226
+ return hAsync("slot", { key: '386c41745b61daba161cf75063da97fe29ba36cb' });
32658
32227
  }
32659
32228
  get el() { return getElement(this); }
32660
32229
  static get watchers() { return {
@@ -32687,7 +32256,7 @@ class Row {
32687
32256
  registerInstance(this, hostRef);
32688
32257
  }
32689
32258
  render() {
32690
- return (hAsync(Host, { key: '65592a79621bd8f75f9566db3e8c05a4b8fc6048', class: getIonMode$1(this) }, hAsync("slot", { key: '56f09784db7a0299c9ce76dfcede185b295251ff' })));
32259
+ return (hAsync(Host, { key: '8ba906a8cbea060a79ed658c9bf34906f0c11d38', class: getIonMode$1(this) }, hAsync("slot", { key: 'd1009176f45b588fa52c7d9eb336f3c6d3214bb8' })));
32691
32260
  }
32692
32261
  static get style() { return rowCss; }
32693
32262
  static get cmpMeta() { return {
@@ -33128,8 +32697,8 @@ class Searchbar {
33128
32697
  const clearIcon = this.clearIcon || (mode === 'ios' ? closeCircle : closeSharp);
33129
32698
  const searchIcon = this.searchIcon || (mode === 'ios' ? searchOutline : searchSharp);
33130
32699
  const shouldShowCancelButton = this.shouldShowCancelButton();
33131
- const cancelButton = this.showCancelButton !== 'never' && (hAsync("button", { key: '19e18775856db87daeb4b9e3d7bca0461915a0df', "aria-label": cancelButtonText, "aria-hidden": shouldShowCancelButton ? undefined : 'true', type: "button", tabIndex: mode === 'ios' && !shouldShowCancelButton ? -1 : undefined, onMouseDown: this.onCancelSearchbar, onTouchStart: this.onCancelSearchbar, class: "searchbar-cancel-button" }, hAsync("div", { key: 'b3bbdcc033f3bd3441d619e4a252cef0dad4d07e', "aria-hidden": "true" }, mode === 'md' ? (hAsync("ion-icon", { "aria-hidden": "true", mode: mode, icon: this.cancelButtonIcon, lazy: false })) : (cancelButtonText))));
33132
- return (hAsync(Host, { key: '074aa60e051bfb3225e87d44bbb6346c59c73574', role: "search", "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses$1(this.color, {
32700
+ const cancelButton = this.showCancelButton !== 'never' && (hAsync("button", { key: 'bf574336a561a5bf66c771fb606a9b19adbecb68', "aria-label": cancelButtonText, "aria-hidden": shouldShowCancelButton ? undefined : 'true', type: "button", tabIndex: mode === 'ios' && !shouldShowCancelButton ? -1 : undefined, onMouseDown: this.onCancelSearchbar, onTouchStart: this.onCancelSearchbar, class: "searchbar-cancel-button" }, hAsync("div", { key: '747ad4368bda5044198259d5bc8f7be9e472e5af', "aria-hidden": "true" }, mode === 'md' ? (hAsync("ion-icon", { "aria-hidden": "true", mode: mode, icon: this.cancelButtonIcon, lazy: false })) : (cancelButtonText))));
32701
+ return (hAsync(Host, { key: 'bcc5b33a2859903ba11bfc5c611c6a2aaa71d06b', role: "search", "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses$1(this.color, {
33133
32702
  [mode]: true,
33134
32703
  'searchbar-animated': animated,
33135
32704
  'searchbar-disabled': this.disabled,
@@ -33139,14 +32708,14 @@ class Searchbar {
33139
32708
  'searchbar-has-focus': this.focused,
33140
32709
  'searchbar-should-show-clear': this.shouldShowClearButton(),
33141
32710
  'searchbar-should-show-cancel': this.shouldShowCancelButton(),
33142
- }) }, hAsync("div", { key: '54f58a79fe36e85d9295157303f1be89c98bbdaf', class: "searchbar-input-container" }, hAsync("input", Object.assign({ key: 'f991a37fcf54d26b7ad10d89084764e03d97b9de', "aria-label": "search text", disabled: this.disabled, ref: (el) => (this.nativeInput = el), class: "searchbar-input", inputMode: this.inputmode, enterKeyHint: this.enterkeyhint, name: this.name, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, minLength: this.minlength, maxLength: this.maxlength, placeholder: this.placeholder, type: this.type, value: this.getValue(), autoCapitalize: autocapitalize === 'default' ? undefined : autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, spellcheck: this.spellcheck }, this.inheritedAttributes)), mode === 'md' && cancelButton, hAsync("ion-icon", { key: '8b44dd90a3292c5cf872ef16a8520675f5673494', "aria-hidden": "true", mode: mode, icon: searchIcon, lazy: false, class: "searchbar-search-icon" }), hAsync("button", { key: '79d9cfed8f01268044f82811a35d323a12dca749', "aria-label": "reset", type: "button", "no-blur": true, class: "searchbar-clear-button", onPointerDown: (ev) => {
32711
+ }) }, hAsync("div", { key: 'ac0dbf5ddd9c4eb6d714f45c62c44ba3d0bf034d', class: "searchbar-input-container" }, hAsync("input", Object.assign({ key: '4b9fdac1b0d5a7a68bf61a6beb00f166434d3e84', "aria-label": "search text", disabled: this.disabled, ref: (el) => (this.nativeInput = el), class: "searchbar-input", inputMode: this.inputmode, enterKeyHint: this.enterkeyhint, name: this.name, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, minLength: this.minlength, maxLength: this.maxlength, placeholder: this.placeholder, type: this.type, value: this.getValue(), autoCapitalize: autocapitalize === 'default' ? undefined : autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, spellcheck: this.spellcheck }, this.inheritedAttributes)), mode === 'md' && cancelButton, hAsync("ion-icon", { key: '32a889c48b3960560a3873061b4ac5a8a5ce532f', "aria-hidden": "true", mode: mode, icon: searchIcon, lazy: false, class: "searchbar-search-icon" }), hAsync("button", { key: '71222df691ef0b95008e619f755224d069ee9388', "aria-label": "reset", type: "button", "no-blur": true, class: "searchbar-clear-button", onPointerDown: (ev) => {
33143
32712
  /**
33144
32713
  * This prevents mobile browsers from
33145
32714
  * blurring the input when the clear
33146
32715
  * button is activated.
33147
32716
  */
33148
32717
  ev.preventDefault();
33149
- }, onClick: () => this.onClearInput(true) }, hAsync("ion-icon", { key: 'aa3b9fa8a61f853236783ac7bcd0b113ea65ece2', "aria-hidden": "true", mode: mode, icon: clearIcon, lazy: false, class: "searchbar-clear-icon" }))), mode === 'ios' && cancelButton));
32718
+ }, onClick: () => this.onClearInput(true) }, hAsync("ion-icon", { key: 'f1c8c0bd8fbb655085875731d3ece387dbe2967e', "aria-hidden": "true", mode: mode, icon: clearIcon, lazy: false, class: "searchbar-clear-icon" }))), mode === 'ios' && cancelButton));
33150
32719
  }
33151
32720
  get el() { return getElement(this); }
33152
32721
  static get watchers() { return {
@@ -33741,14 +33310,14 @@ class Segment {
33741
33310
  }
33742
33311
  render() {
33743
33312
  const mode = getIonMode$1(this);
33744
- return (hAsync(Host, { key: 'e67ed512739cf2cfe657b0c44ebc3dfb1e9fbb79', role: "tablist", onClick: this.onClick, class: createColorClasses$1(this.color, {
33313
+ return (hAsync(Host, { key: '725cc37b25c539fa5e3ae8d90530ae33ededc3de', role: "tablist", onClick: this.onClick, class: createColorClasses$1(this.color, {
33745
33314
  [mode]: true,
33746
33315
  'in-toolbar': hostContext('ion-toolbar', this.el),
33747
33316
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
33748
33317
  'segment-activated': this.activated,
33749
33318
  'segment-disabled': this.disabled,
33750
33319
  'segment-scrollable': this.scrollable,
33751
- }) }, hAsync("slot", { key: '804d8acfcb9abfeeee38244b015fbc5c36330b9e', onSlotchange: this.onSlottedItemsChange })));
33320
+ }) }, hAsync("slot", { key: 'c51cf7ea50325866a9367d214e12bc3754870335', onSlotchange: this.onSlottedItemsChange })));
33752
33321
  }
33753
33322
  get el() { return getElement(this); }
33754
33323
  static get watchers() { return {
@@ -33888,7 +33457,7 @@ class SegmentButton {
33888
33457
  const { checked, type, disabled, hasIcon, hasLabel, layout, segmentEl } = this;
33889
33458
  const mode = getIonMode$1(this);
33890
33459
  const hasSegmentColor = () => (segmentEl === null || segmentEl === void 0 ? void 0 : segmentEl.color) !== undefined;
33891
- return (hAsync(Host, { key: '26cb7ee90455bcaa6416125802d7e5729fa05b5b', class: {
33460
+ return (hAsync(Host, { key: 'f69e2a24198a7c57543dbe66902da039a6569c64', class: {
33892
33461
  [mode]: true,
33893
33462
  'in-toolbar': hostContext('ion-toolbar', this.el),
33894
33463
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
@@ -33904,7 +33473,7 @@ class SegmentButton {
33904
33473
  'ion-activatable': true,
33905
33474
  'ion-activatable-instant': true,
33906
33475
  'ion-focusable': true,
33907
- } }, hAsync("button", Object.assign({ key: '75add37f11c107d1e2cfdb154e08004e9579e863', "aria-selected": checked ? 'true' : 'false', role: "tab", ref: (el) => (this.nativeEl = el), type: type, class: "button-native", part: "native", disabled: disabled }, this.inheritedAttributes), hAsync("span", { key: '8e720d2a3e304903685bf09d226a64e944d78a22', class: "button-inner" }, hAsync("slot", { key: 'c8e7b3ebf8f03042a1001155643b585283c73c65' })), mode === 'md' && hAsync("ion-ripple-effect", { key: '3586ac317b8d82c92b0ccfbfae42f8778612321b' })), hAsync("div", { key: '9cf93957da9e8dc333c8b05327bb903385b1c5f4', part: "indicator", class: "segment-button-indicator segment-button-indicator-animated" }, hAsync("div", { key: 'd3b6f0b3860ec6896b46703f64ed1cc8c75612e3', part: "indicator-background", class: "segment-button-indicator-background" }))));
33476
+ } }, hAsync("button", Object.assign({ key: '0a6fea3a374074af19f7ece0ba3a7cf1e269ab6d', "aria-selected": checked ? 'true' : 'false', role: "tab", ref: (el) => (this.nativeEl = el), type: type, class: "button-native", part: "native", disabled: disabled }, this.inheritedAttributes), hAsync("span", { key: '991018a38c59a6f3d76b2e952e5569c874d2c13e', class: "button-inner" }, hAsync("slot", { key: '23c547c80108025027b913c7fcbec189286627a3' })), mode === 'md' && hAsync("ion-ripple-effect", { key: '7faa9d06ab6aa7346d16b0b6808979759a79650c' })), hAsync("div", { key: '0d61badf2c227dc38e20185b2b2bb590a5efa434', part: "indicator", class: "segment-button-indicator segment-button-indicator-animated" }, hAsync("div", { key: 'a84035752b78491c344179d1e61d109fb4bd1cf1', part: "indicator-background", class: "segment-button-indicator-background" }))));
33908
33477
  }
33909
33478
  get el() { return getElement(this); }
33910
33479
  static get watchers() { return {
@@ -33939,7 +33508,7 @@ class SegmentContent {
33939
33508
  registerInstance(this, hostRef);
33940
33509
  }
33941
33510
  render() {
33942
- return (hAsync(Host, { key: 'db6876f2aee7afa1ea8bc147337670faa68fae1c' }, hAsync("slot", { key: 'bc05714a973a5655668679033f5809a1da6db8cc' })));
33511
+ return (hAsync(Host, { key: '665f41a854621f898eaf7ba9a49e77cc9326501e' }, hAsync("slot", { key: '635aa57fbf6167dcd36fe8dc5dfc1c313637ac04' })));
33943
33512
  }
33944
33513
  static get style() { return segmentContentCss; }
33945
33514
  static get cmpMeta() { return {
@@ -34054,10 +33623,10 @@ class SegmentView {
34054
33623
  }
34055
33624
  render() {
34056
33625
  const { disabled, isManualScroll } = this;
34057
- return (hAsync(Host, { key: 'e180b67bb3143a5f4611fb358c037be6fc782a8f', class: {
33626
+ return (hAsync(Host, { key: '1c9bfce83967a93d63c225031a5cd688509d8fc8', class: {
34058
33627
  'segment-view-disabled': disabled,
34059
33628
  'segment-view-scroll-disabled': isManualScroll === false,
34060
- } }, hAsync("slot", { key: '41c11d6a7406a10f5c64a2e73abfc072afd8fc73' })));
33629
+ } }, hAsync("slot", { key: '19fee034e76fffbdb5f622cb514037c00f9d55d5' })));
34061
33630
  }
34062
33631
  get el() { return getElement(this); }
34063
33632
  static get style() { return {
@@ -34824,7 +34393,7 @@ class Select {
34824
34393
  * TODO(FW-5592): Remove hasStartEndSlots condition
34825
34394
  */
34826
34395
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || isExpanded || hasStartEndSlots));
34827
- return (hAsync(Host, { key: 'd8026835993d0e6dce747098f741a06ae4e4f54d', onClick: this.onClick, class: createColorClasses$1(this.color, {
34396
+ return (hAsync(Host, { key: '9f0a833ebc3df27a42146b07bcbb181c05f5e5c4', onClick: this.onClick, class: createColorClasses$1(this.color, {
34828
34397
  [mode]: true,
34829
34398
  'in-item': inItem,
34830
34399
  'in-item-color': hostContext('ion-item.ion-color', el),
@@ -34842,7 +34411,7 @@ class Select {
34842
34411
  [`select-justify-${justify}`]: justifyEnabled,
34843
34412
  [`select-shape-${shape}`]: shape !== undefined,
34844
34413
  [`select-label-placement-${labelPlacement}`]: true,
34845
- }) }, hAsync("label", { key: 'fcfb40209d6d07d49c7fdca4884b31abf6ac2567', class: "select-wrapper", id: "select-label", onClick: this.onLabelClick }, this.renderLabelContainer(), hAsync("div", { key: 'f191664f2290c3890bde1156157c83a6ff17dbe2', class: "select-wrapper-inner" }, hAsync("slot", { key: '317a28d1115b4214f291e228ce0fe6fc782e57d5', name: "start" }), hAsync("div", { key: 'db68e18abd5ca3a1023d7c7b58bf89893ae18073', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), hAsync("slot", { key: '4274e042267c2234a198b0f65c89477898d08130', name: "end" }), !hasFloatingOrStackedLabel && this.renderSelectIcon()), hasFloatingOrStackedLabel && this.renderSelectIcon(), shouldRenderHighlight && hAsync("div", { key: '2e2eb1ee2b2791e0683d9afb186fde6e938ca59c', class: "select-highlight" })), this.renderBottomContent()));
34414
+ }) }, hAsync("label", { key: '4b32396d8557c0d1cba13440a11e66b8eb7b13a9', class: "select-wrapper", id: "select-label", onClick: this.onLabelClick }, this.renderLabelContainer(), hAsync("div", { key: 'd226cc8e30cd5202c235476cfa1632fc40bc609f', class: "select-wrapper-inner" }, hAsync("slot", { key: 'df813ff3b7de518c70ea4fedd25bcb965607026d', name: "start" }), hAsync("div", { key: '4a4e9348a136c598b7b08f80ecdcca268afec2d5', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), hAsync("slot", { key: 'f168d8b42a1e193ad27d09e5f1553b231f0332e5', name: "end" }), !hasFloatingOrStackedLabel && this.renderSelectIcon()), hasFloatingOrStackedLabel && this.renderSelectIcon(), shouldRenderHighlight && hAsync("div", { key: 'ec3deede22dd403cb16a08f532ae4809cf86a3e7', class: "select-highlight" })), this.renderBottomContent()));
34846
34415
  }
34847
34416
  get el() { return getElement(this); }
34848
34417
  static get watchers() { return {
@@ -35003,7 +34572,7 @@ class SelectModal {
35003
34572
  } }, option.text))));
35004
34573
  }
35005
34574
  render() {
35006
- return (hAsync(Host, { key: 'b6c0dec240b2e41985b15fdf4e5a6d3a145c1567', class: getIonMode$1(this) }, hAsync("ion-header", { key: 'cd177e85ee0f62a60a3a708342d6ab6eb19a44dc' }, hAsync("ion-toolbar", { key: 'aee8222a5a4daa540ad202b2e4cac1ef93d9558c' }, this.header !== undefined && hAsync("ion-title", { key: '5f8fecc764d97bf840d3d4cfddeeccd118ab4436' }, this.header), hAsync("ion-buttons", { key: '919033950d7c2b0101f96a9c9698219de9f568ea', slot: "end" }, hAsync("ion-button", { key: '34b571cab6dced4bde555a077a21e91800829931', onClick: () => this.closeModal() }, "Close")))), hAsync("ion-content", { key: '3c9153d26ba7a5a03d3b20fcd628d0c3031661a7' }, hAsync("ion-list", { key: 'e00b222c071bc97c82ad1bba4db95a8a5c43ed6d' }, this.multiple === true ? this.renderCheckboxOptions() : this.renderRadioOptions()))));
34575
+ return (hAsync(Host, { key: '5bffdb106e6f628dae2e2aeb9ee8008b5c547b3a', class: getIonMode$1(this) }, hAsync("ion-header", { key: '4de1c33b0504372f8a0a26123e4e086080ee1ecb' }, hAsync("ion-toolbar", { key: '5d55a67d1db4352c260e9e0457d5dac6110b6598' }, this.header !== undefined && hAsync("ion-title", { key: '4f07fe8a9af8c9bd0852af2a9b95517d16356e50' }, this.header), hAsync("ion-buttons", { key: 'ca676a34f7cd3dd6b465b0d803434c2e2c8536c5', slot: "end" }, hAsync("ion-button", { key: '801ed63a357c7c9d354668851db65e5c1b0e1abe', onClick: () => this.closeModal() }, "Close")))), hAsync("ion-content", { key: 'f3c239ec9d84b8ed7413ea9db6efa18e29aca285' }, hAsync("ion-list", { key: '40c157e9abe477171a39ae7e6e1cd4ed08735cb4' }, this.multiple === true ? this.renderCheckboxOptions() : this.renderRadioOptions()))));
35007
34576
  }
35008
34577
  get el() { return getElement(this); }
35009
34578
  static get style() { return {
@@ -35037,7 +34606,7 @@ class SelectOption {
35037
34606
  this.disabled = false;
35038
34607
  }
35039
34608
  render() {
35040
- return hAsync(Host, { key: '3a70eea9fa03a9acba582180761d18347c72acee', role: "option", id: this.inputId, class: getIonMode$1(this) });
34609
+ return hAsync(Host, { key: '824730b6c1e4f15b716e91b05840e890af5f1577', role: "option", id: this.inputId, class: getIonMode$1(this) });
35041
34610
  }
35042
34611
  get el() { return getElement(this); }
35043
34612
  static get style() { return selectOptionCss; }
@@ -35154,7 +34723,7 @@ class SelectPopover {
35154
34723
  render() {
35155
34724
  const { header, message, options, subHeader } = this;
35156
34725
  const hasSubHeaderOrMessage = subHeader !== undefined || message !== undefined;
35157
- return (hAsync(Host, { key: 'ab931b49b59283825bd2afa3f7f995b0e6e05bef', class: getIonMode$1(this) }, hAsync("ion-list", { key: '3bd12b67832607596b912a73d5b3ae9b954b244d' }, header !== undefined && hAsync("ion-list-header", { key: '97da930246edf7423a039c030d40e3ff7a5148a3' }, header), hasSubHeaderOrMessage && (hAsync("ion-item", { key: 'c579df6ea8fac07bb0c59d34c69b149656863224' }, hAsync("ion-label", { key: 'af699c5f465710ccb13b8cf8e7be66f0e8acfad1', class: "ion-text-wrap" }, subHeader !== undefined && hAsync("h3", { key: 'df9a936d42064b134e843c7229f314a2a3ec7e80' }, subHeader), message !== undefined && hAsync("p", { key: '9c3ddad378df00f106afa94e9928cf68c17124dd' }, message)))), this.renderOptions(options))));
34726
+ return (hAsync(Host, { key: '0c9845a40d3fc392b0a7d64e2a6ed27d94bb7634', class: getIonMode$1(this) }, hAsync("ion-list", { key: '84a30f6661b0f8c00e6fa199658ed2adbcf27358' }, header !== undefined && hAsync("ion-list-header", { key: '13f5f56bbfbc06751fa516291a2da72629b60ece' }, header), hasSubHeaderOrMessage && (hAsync("ion-item", { key: '3d39d18e720e798bbde334e79e6832091c7dfb81' }, hAsync("ion-label", { key: 'd3051b0d140120b44bf5e79572f6f287e7cfb03a', class: "ion-text-wrap" }, subHeader !== undefined && hAsync("h3", { key: 'b16805956f3316f8ec703c123b76f717488e8637' }, subHeader), message !== undefined && hAsync("p", { key: '2215ac4ab4146a14e75a79192e319a8016286b5f' }, message)))), this.renderOptions(options))));
35158
34727
  }
35159
34728
  get el() { return getElement(this); }
35160
34729
  static get style() { return {
@@ -35204,11 +34773,11 @@ class SkeletonText {
35204
34773
  const animated = this.animated && config.getBoolean('animated', true);
35205
34774
  const inMedia = hostContext('ion-avatar', this.el) || hostContext('ion-thumbnail', this.el);
35206
34775
  const mode = getIonMode$1(this);
35207
- return (hAsync(Host, { key: 'd86ef7392507cdbf48dfd3a71f02d7a83eda4aae', class: {
34776
+ return (hAsync(Host, { key: 'cb8da9aba121811b9a4ffdae60ed88105897cb3c', class: {
35208
34777
  [mode]: true,
35209
34778
  'skeleton-text-animated': animated,
35210
34779
  'in-media': inMedia,
35211
- } }, hAsync("span", { key: '8e8b5a232a6396d2bba691b05f9de4da44b2965c' }, "\u00A0")));
34780
+ } }, hAsync("span", { key: '5379deee3c76d46d615be0cba14b4f60129ffa25' }, "\u00A0")));
35212
34781
  }
35213
34782
  get el() { return getElement(this); }
35214
34783
  static get style() { return skeletonTextCss; }
@@ -35260,7 +34829,7 @@ class Spinner {
35260
34829
  svgs.push(buildLine(spinner, duration, i, spinner.lines));
35261
34830
  }
35262
34831
  }
35263
- return (hAsync(Host, { key: 'a33d6421fcc885995fbc7a348516525f68ca496c', class: createColorClasses$1(self.color, {
34832
+ return (hAsync(Host, { key: 'dd1954e557fa14b943e761474e29e4316ba53938', class: createColorClasses$1(self.color, {
35264
34833
  [mode]: true,
35265
34834
  [`spinner-${spinnerName}`]: true,
35266
34835
  'spinner-paused': self.paused || config.getBoolean('_testing'),
@@ -35359,12 +34928,12 @@ class SplitPane {
35359
34928
  }
35360
34929
  render() {
35361
34930
  const mode = getIonMode$1(this);
35362
- return (hAsync(Host, { key: 'd5e30df12f1f1f855da4c66f98076b9dce762c59', class: {
34931
+ return (hAsync(Host, { key: '05c88c009fbe2e223fd261760a2b49da1653ff62', class: {
35363
34932
  [mode]: true,
35364
34933
  // Used internally for styling
35365
34934
  [`split-pane-${mode}`]: true,
35366
34935
  'split-pane-visible': this.visible,
35367
- } }, hAsync("slot", { key: '3e30d7cf3bc1cf434e16876a0cb2a36377b8e00f' })));
34936
+ } }, hAsync("slot", { key: 'b35865082661253c4468520d79234fa5dab5bd35' })));
35368
34937
  }
35369
34938
  get el() { return getElement(this); }
35370
34939
  static get watchers() { return {
@@ -35430,10 +34999,10 @@ class Tab {
35430
34999
  }
35431
35000
  render() {
35432
35001
  const { tab, active, component } = this;
35433
- return (hAsync(Host, { key: 'dbad8fe9f1566277d14647626308eaf1601ab01f', role: "tabpanel", "aria-hidden": !active ? 'true' : null, "aria-labelledby": `tab-button-${tab}`, class: {
35002
+ return (hAsync(Host, { key: 'fbd837bad7a0632336d46a597ace23673b153e48', role: "tabpanel", "aria-hidden": !active ? 'true' : null, "aria-labelledby": `tab-button-${tab}`, class: {
35434
35003
  'ion-page': component === undefined,
35435
35004
  'tab-hidden': !active,
35436
- } }, hAsync("slot", { key: '3be64f4e7161f6769aaf8e4dcb5293fcaa09af45' })));
35005
+ } }, hAsync("slot", { key: '35c218169fda826c9c1337558e0278d0c7f5f26a' })));
35437
35006
  }
35438
35007
  get el() { return getElement(this); }
35439
35008
  static get watchers() { return {
@@ -35545,11 +35114,11 @@ class TabBar {
35545
35114
  const { color, translucent, keyboardVisible } = this;
35546
35115
  const mode = getIonMode$1(this);
35547
35116
  const shouldHide = keyboardVisible && this.el.getAttribute('slot') !== 'top';
35548
- return (hAsync(Host, { key: '9daf4e2acaff6e3ce3878cf9dd5109fb1afbbebe', role: "tablist", "aria-hidden": shouldHide ? 'true' : null, class: createColorClasses$1(color, {
35117
+ return (hAsync(Host, { key: '24e164eaf81a0bec9237b561465618f10990806c', role: "tablist", "aria-hidden": shouldHide ? 'true' : null, class: createColorClasses$1(color, {
35549
35118
  [mode]: true,
35550
35119
  'tab-bar-translucent': translucent,
35551
35120
  'tab-bar-hidden': shouldHide,
35552
- }) }, hAsync("slot", { key: '1d15aa2da8501e8e7eff11ad4a491478be845c43' })));
35121
+ }) }, hAsync("slot", { key: '0ca29a2d97a7c38bbf43f8d79e271b874b4d9be8' })));
35553
35122
  }
35554
35123
  get el() { return getElement(this); }
35555
35124
  static get watchers() { return {
@@ -35645,7 +35214,7 @@ class TabButton {
35645
35214
  rel,
35646
35215
  target,
35647
35216
  };
35648
- return (hAsync(Host, { key: 'ce9d29ced0c781d6b2fa62cd5feb801c11fc42e8', onClick: this.onClick, onKeyup: this.onKeyUp, id: tab !== undefined ? `tab-button-${tab}` : null, class: {
35217
+ return (hAsync(Host, { key: '638b93ef40701ec3aefb89b1579eb91aaf6d4f8a', onClick: this.onClick, onKeyup: this.onKeyUp, id: tab !== undefined ? `tab-button-${tab}` : null, class: {
35649
35218
  [mode]: true,
35650
35219
  'tab-selected': selected,
35651
35220
  'tab-disabled': disabled,
@@ -35657,7 +35226,7 @@ class TabButton {
35657
35226
  'ion-activatable': true,
35658
35227
  'ion-selectable': true,
35659
35228
  'ion-focusable': true,
35660
- } }, hAsync("a", Object.assign({ key: '01cb0ed2e77c5c1a8abd48da1bb07ac1b305d0b6' }, attrs, { class: "button-native", part: "native", role: "tab", "aria-selected": selected ? 'true' : null, "aria-disabled": disabled ? 'true' : null, tabindex: disabled ? '-1' : undefined }, inheritedAttributes), hAsync("span", { key: 'd0240c05f42217cfb186b86ff8a0c9cd70b9c8df', class: "button-inner" }, hAsync("slot", { key: '0a20b84925037dbaa8bb4a495b813d3f7c2e58ac' })), mode === 'md' && hAsync("ion-ripple-effect", { key: '4c92c27178cdac89d69cffef8d2c39c3644914e8', type: "unbounded" }))));
35229
+ } }, hAsync("a", Object.assign({ key: 'c053d32fbcdad8d5e4a409956b47164d7a080c6b' }, attrs, { class: "button-native", part: "native", role: "tab", "aria-selected": selected ? 'true' : null, "aria-disabled": disabled ? 'true' : null, tabindex: disabled ? '-1' : undefined }, inheritedAttributes), hAsync("span", { key: 'b3b460d33ec978a46b069442280d31b23bc8e794', class: "button-inner" }, hAsync("slot", { key: '87b3928475c941263261101b8fae27c6370d4671' })), mode === 'md' && hAsync("ion-ripple-effect", { key: '6532e5b4546aebe4becaebe1c93ce0e6aedaffe7', type: "unbounded" }))));
35661
35230
  }
35662
35231
  get el() { return getElement(this); }
35663
35232
  static get style() { return {
@@ -35848,7 +35417,7 @@ class Tabs {
35848
35417
  return Array.from(this.el.querySelectorAll('ion-tab'));
35849
35418
  }
35850
35419
  render() {
35851
- return (hAsync(Host, { key: '7b4b302f2942d8d131f6fc24e817989a8be08867', onIonTabButtonClick: this.onTabClicked }, hAsync("slot", { key: '2c51cf14c0f17a8ddf2d879858c984cdf8fd3147', name: "top" }), hAsync("div", { key: '7e9d6055092d41bd9bc80ae15965f77e216feb84', class: "tabs-inner" }, hAsync("slot", { key: 'c308a787e37ff7f6653531d70deca597a7602d26' })), hAsync("slot", { key: 'd5f5e693710c853570811602f859cf3e88272684', name: "bottom" })));
35420
+ return (hAsync(Host, { key: 'c7131135b31aa312dc0207602561e1c0f4ac3e53', onIonTabButtonClick: this.onTabClicked }, hAsync("slot", { key: '6c46e91c0389bbcea1f15f35cf3ea513a74ac545', name: "top" }), hAsync("div", { key: '4f1b649d8bb60b61402b97359de204979c5eda52', class: "tabs-inner" }, hAsync("slot", { key: '8d1ef4952be4fb33567376e1083ea4da697fcae0' })), hAsync("slot", { key: '260b8da8031494e9cb4635b3d22c49a433042db1', name: "bottom" })));
35852
35421
  }
35853
35422
  get el() { return getElement(this); }
35854
35423
  static get style() { return tabsCss; }
@@ -35888,9 +35457,9 @@ class Text {
35888
35457
  }
35889
35458
  render() {
35890
35459
  const mode = getIonMode$1(this);
35891
- return (hAsync(Host, { key: '361035eae7b92dc109794348d39bad2f596eb6be', class: createColorClasses$1(this.color, {
35460
+ return (hAsync(Host, { key: 'bfaa49d35f43b8036725ae8a322c716fc6e43bdf', class: createColorClasses$1(this.color, {
35892
35461
  [mode]: true,
35893
- }) }, hAsync("slot", { key: 'c7b8835cf485ba9ecd73298f0529276ce1ea0852' })));
35462
+ }) }, hAsync("slot", { key: 'c04880cd1935b42cbe60f58fd523b4d8a96072dc' })));
35894
35463
  }
35895
35464
  static get style() { return textCss; }
35896
35465
  static get cmpMeta() { return {
@@ -36351,7 +35920,7 @@ class Textarea {
36351
35920
  * TODO(FW-5592): Remove hasStartEndSlots condition
36352
35921
  */
36353
35922
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
36354
- return (hAsync(Host, { key: 'a70a62d7aae3831a50acd74f60b930925ada1326', class: createColorClasses$1(this.color, {
35923
+ return (hAsync(Host, { key: '2c9de566803dd007cee3639ddd04accb68663b32', class: createColorClasses$1(this.color, {
36355
35924
  [mode]: true,
36356
35925
  'has-value': hasValue,
36357
35926
  'has-focus': hasFocus,
@@ -36360,7 +35929,7 @@ class Textarea {
36360
35929
  [`textarea-shape-${shape}`]: shape !== undefined,
36361
35930
  [`textarea-label-placement-${labelPlacement}`]: true,
36362
35931
  'textarea-disabled': disabled,
36363
- }) }, hAsync("label", { key: '8a2dd59a60f7469df84018eb0ede3a9ec3862703', class: "textarea-wrapper", htmlFor: inputId, onClick: this.onLabelClick }, this.renderLabelContainer(), hAsync("div", { key: '1bfc368236e3da7a225a45118c27fbfc1fe5fa46', class: "textarea-wrapper-inner" }, hAsync("div", { key: '215cbb2635ff52e31a8973376989b85e7245d40f', class: "start-slot-wrapper" }, hAsync("slot", { key: '9f6b461cdee9d629deb695d2bea054ece2f32305', name: "start" })), hAsync("div", { key: 'c1af35a2d5bc452bebe0b22a26d15ff52b4e9fc8', class: "native-wrapper", ref: (el) => (this.textareaWrapper = el) }, hAsync("textarea", Object.assign({ key: '69a69b3cf0932baafbe37e6e846f1a571608d3f2', class: "native-textarea", ref: (el) => (this.nativeInput = el), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, minLength: this.minlength, maxLength: this.maxlength, name: this.name, placeholder: this.placeholder || '', readOnly: this.readonly, required: this.required, spellcheck: this.spellcheck, cols: this.cols, rows: this.rows, wrap: this.wrap, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeyDown, "aria-describedby": this.getHintTextID(), "aria-invalid": this.isInvalid ? 'true' : undefined }, this.inheritedAttributes), value)), hAsync("div", { key: 'c053ea8b865d0e29763aed2e4939cc9c9e374c15', class: "end-slot-wrapper" }, hAsync("slot", { key: '930aa641833b0df54b9ea10368fc2f46d5f491f6', name: "end" }))), shouldRenderHighlight && hAsync("div", { key: '8d12597d15f5f429d80e8272ea99e64ed924e482', class: "textarea-highlight" })), this.renderBottomContent()));
35932
+ }) }, hAsync("label", { key: 'a0602b57fae26f148729b19c296de31b4923ad44', class: "textarea-wrapper", htmlFor: inputId, onClick: this.onLabelClick }, this.renderLabelContainer(), hAsync("div", { key: '4ff96c999ba015c6c94be888da76d2dbd33020d7', class: "textarea-wrapper-inner" }, hAsync("div", { key: '8827db21d38d6c0bc2949f183b976eca692210be', class: "start-slot-wrapper" }, hAsync("slot", { key: 'e90b69e2b427a51f9a6ec201053e55b914ef5b9d', name: "start" })), hAsync("div", { key: '22de2b64734d6a677939ff372df9de13b58923e6', class: "native-wrapper", ref: (el) => (this.textareaWrapper = el) }, hAsync("textarea", Object.assign({ key: '0e125c47ae292bea21484824746dbee922e728b0', class: "native-textarea", ref: (el) => (this.nativeInput = el), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, minLength: this.minlength, maxLength: this.maxlength, name: this.name, placeholder: this.placeholder || '', readOnly: this.readonly, required: this.required, spellcheck: this.spellcheck, cols: this.cols, rows: this.rows, wrap: this.wrap, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeyDown, "aria-describedby": this.getHintTextID(), "aria-invalid": this.isInvalid ? 'true' : undefined }, this.inheritedAttributes), value)), hAsync("div", { key: '52d8f9048596cd598a99b74e3d0b322890d8513d', class: "end-slot-wrapper" }, hAsync("slot", { key: 'd9c8a7c33c47533dfe2eb8b12006c7f38d3cd11b', name: "end" }))), shouldRenderHighlight && hAsync("div", { key: 'aaf672b846a35f0aeb0b3ec172dc808eb871eb5a', class: "textarea-highlight" })), this.renderBottomContent()));
36364
35933
  }
36365
35934
  get el() { return getElement(this); }
36366
35935
  static get watchers() { return {
@@ -36423,7 +35992,7 @@ class Thumbnail {
36423
35992
  registerInstance(this, hostRef);
36424
35993
  }
36425
35994
  render() {
36426
- return (hAsync(Host, { key: '70ada828e8cf541ab3b47f94b7e56ce34114ef88', class: getIonMode$1(this) }, hAsync("slot", { key: 'c43e105669d2bae123619b616f3af8ca2f722d61' })));
35995
+ return (hAsync(Host, { key: 'b250e01664238f1dca8f9757b15bc3d5d9387ffa', class: getIonMode$1(this) }, hAsync("slot", { key: '72cb568bccabc983c5186a7596ef6c6d4ebf5ad9' })));
36427
35996
  }
36428
35997
  static get style() { return thumbnailCss; }
36429
35998
  static get cmpMeta() { return {
@@ -37281,9 +36850,9 @@ class Toast {
37281
36850
  if (layout === 'stacked' && startButtons.length > 0 && endButtons.length > 0) {
37282
36851
  printIonWarning('[ion-toast] - This toast is using start and end buttons with the stacked toast layout. We recommend following the best practice of using either start or end buttons with the stacked toast layout.', el);
37283
36852
  }
37284
- return (hAsync(Host, Object.assign({ key: 'd1ecd90c87700aad4685e230cdd430aa286b8791', tabindex: "-1" }, this.htmlAttributes, { style: {
36853
+ return (hAsync(Host, Object.assign({ key: '4a303f9ebb69614e9dca677d9d80a4a275de0d85', tabindex: "-1" }, this.htmlAttributes, { style: {
37285
36854
  zIndex: `${60000 + this.overlayIndex}`,
37286
- }, class: createColorClasses$1(this.color, Object.assign(Object.assign({ [mode]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'toast-translucent': this.translucent })), onIonToastWillDismiss: this.dispatchCancelHandler }), hAsync("div", { key: '4bfc863417324de69e222054d5cf9c452038b41e', class: wrapperClass }, hAsync("div", { key: '3417940afec0392e81b7d54c7cb00f3ab6c30d47', class: "toast-container", part: "container" }, this.renderButtons(startButtons, 'start'), this.icon !== undefined && (hAsync("ion-icon", { key: '6bf878fbc85c01e1e5faa9d97d46255a6511a952', class: "toast-icon", part: "icon", icon: this.icon, lazy: false, "aria-hidden": "true" })), hAsync("div", { key: '54b500348a9c37660c3aff37436d9188e4374947', class: "toast-content", role: "status", "aria-atomic": "true", "aria-live": "polite" }, !revealContentToScreenReader && header !== undefined && this.renderHeader('oldHeader', 'true'), !revealContentToScreenReader && message !== undefined && this.renderToastMessage('oldMessage', 'true'), revealContentToScreenReader && header !== undefined && this.renderHeader('header'), revealContentToScreenReader && message !== undefined && this.renderToastMessage('header')), this.renderButtons(endButtons, 'end')))));
36855
+ }, class: createColorClasses$1(this.color, Object.assign(Object.assign({ [mode]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'toast-translucent': this.translucent })), onIonToastWillDismiss: this.dispatchCancelHandler }), hAsync("div", { key: '4f58fcbba8dce9834eab743fc91715935216f3d0', class: wrapperClass }, hAsync("div", { key: 'bbc7b73b186432bd4be8247c5de2ce3b2551fb0a', class: "toast-container", part: "container" }, this.renderButtons(startButtons, 'start'), this.icon !== undefined && (hAsync("ion-icon", { key: '0b953478eb739ceb864373416183bfbf5ce2f9f1', class: "toast-icon", part: "icon", icon: this.icon, lazy: false, "aria-hidden": "true" })), hAsync("div", { key: '7a63497d1c0440256218426194851a969b042ca6', class: "toast-content", role: "status", "aria-atomic": "true", "aria-live": "polite" }, !revealContentToScreenReader && header !== undefined && this.renderHeader('oldHeader', 'true'), !revealContentToScreenReader && message !== undefined && this.renderToastMessage('oldMessage', 'true'), revealContentToScreenReader && header !== undefined && this.renderHeader('header'), revealContentToScreenReader && message !== undefined && this.renderToastMessage('header')), this.renderButtons(endButtons, 'end')))));
37287
36856
  }
37288
36857
  get el() { return getElement(this); }
37289
36858
  static get watchers() { return {
@@ -37595,7 +37164,7 @@ class Toggle {
37595
37164
  const value = this.getValue();
37596
37165
  const rtl = isRTL$1(el) ? 'rtl' : 'ltr';
37597
37166
  renderHiddenInput(true, el, name, checked ? value : '', disabled);
37598
- return (hAsync(Host, { key: 'f569148edd89ee041a4719ffc4733c16b05229bd', role: "switch", "aria-checked": `${checked}`, "aria-describedby": this.hintTextId, "aria-invalid": this.isInvalid ? 'true' : undefined, onClick: this.onClick, "aria-labelledby": hasLabel ? inputLabelId : null, "aria-label": inheritedAttributes['aria-label'] || null, "aria-disabled": disabled ? 'true' : null, "aria-required": required ? 'true' : undefined, tabindex: disabled ? undefined : 0, onKeyDown: this.onKeyDown, onFocus: this.onFocus, onBlur: this.onBlur, class: createColorClasses$1(color, {
37167
+ return (hAsync(Host, { key: '736e1dcfca34fd41f6f0632652e7f86d6996a232', role: "switch", "aria-checked": `${checked}`, "aria-describedby": this.hintTextId, "aria-invalid": this.isInvalid ? 'true' : undefined, onClick: this.onClick, "aria-labelledby": hasLabel ? inputLabelId : null, "aria-label": inheritedAttributes['aria-label'] || null, "aria-disabled": disabled ? 'true' : null, "aria-required": required ? 'true' : undefined, tabindex: disabled ? undefined : 0, onKeyDown: this.onKeyDown, onFocus: this.onFocus, onBlur: this.onBlur, class: createColorClasses$1(color, {
37599
37168
  [mode]: true,
37600
37169
  'in-item': hostContext('ion-item', el),
37601
37170
  'toggle-activated': activated,
@@ -37605,10 +37174,10 @@ class Toggle {
37605
37174
  [`toggle-alignment-${alignment}`]: alignment !== undefined,
37606
37175
  [`toggle-label-placement-${labelPlacement}`]: true,
37607
37176
  [`toggle-${rtl}`]: true,
37608
- }) }, hAsync("label", { key: '3027f2ac4be6de422a14486d847fbee77f615db1', class: "toggle-wrapper", htmlFor: inputId }, hAsync("input", Object.assign({ key: '4b0304c9e879e432b80184b4e5de37d55c11b436', type: "checkbox", role: "switch", "aria-checked": `${checked}`, checked: checked, disabled: disabled, id: inputId, required: required }, inheritedAttributes)), hAsync("div", { key: '8ef265ec942e7f01ff31cbb202ed146c6bf94e02', class: {
37177
+ }) }, hAsync("label", { key: 'e697739fd3964c1c6c23331cf7e38a9841c46a6a', class: "toggle-wrapper", htmlFor: inputId }, hAsync("input", Object.assign({ key: '3d500b8c1bc879591249d183c1abb3f5f26aff6b', type: "checkbox", role: "switch", "aria-checked": `${checked}`, checked: checked, disabled: disabled, id: inputId, required: required }, inheritedAttributes)), hAsync("div", { key: 'e38f3fe0e66b4ca434fd81514f5ef771c2960841', class: {
37609
37178
  'label-text-wrapper': true,
37610
37179
  'label-text-wrapper-hidden': !hasLabel,
37611
- }, part: "label", id: inputLabelId, onClick: this.onDivLabelClick }, hAsync("slot", { key: '7b162b7dd27199cca2a4c995276a18b9f8e44aaf' }), this.renderHintText()), hAsync("div", { key: 'd13c34bd42fca01cc73ddb4ea7e471b33a282a3e', class: "native-wrapper" }, this.renderToggleControl()))));
37180
+ }, part: "label", id: inputLabelId, onClick: this.onDivLabelClick }, hAsync("slot", { key: '006dd3558264d69ab020c07005b348adc4ecdd5b' }), this.renderHintText()), hAsync("div", { key: 'dd4e52de31caabee41ec1bc58efecd1e213368c9', class: "native-wrapper" }, this.renderToggleControl()))));
37612
37181
  }
37613
37182
  get el() { return getElement(this); }
37614
37183
  static get watchers() { return {
@@ -37718,10 +37287,10 @@ class Toolbar {
37718
37287
  this.childrenStyles.forEach((value) => {
37719
37288
  Object.assign(childStyles, value);
37720
37289
  });
37721
- return (hAsync(Host, { key: 'f6c4f669a6a61c5eac4cbb5ea0aa97c48ae5bd46', class: Object.assign(Object.assign({}, childStyles), createColorClasses$1(this.color, {
37290
+ return (hAsync(Host, { key: 'b849db2863778dee6c5a251bffa1b3a657aeb036', class: Object.assign(Object.assign({}, childStyles), createColorClasses$1(this.color, {
37722
37291
  [mode]: true,
37723
37292
  'in-toolbar': hostContext('ion-toolbar', this.el),
37724
- })) }, hAsync("div", { key: '9c81742ffa02de9ba7417025b077d05e67305074', class: "toolbar-background", part: "background" }), hAsync("div", { key: '5fc96d166fa47894a062e41541a9beee38078a36', class: "toolbar-container", part: "container" }, hAsync("slot", { key: 'b62c0d9d59a70176bdbf769aec6090d7a166853b', name: "start" }), hAsync("slot", { key: 'd01d3cc2c50e5aaa49c345b209fe8dbdf3d48131', name: "secondary" }), hAsync("div", { key: '3aaa3a2810aedd38c37eb616158ec7b9638528fc', class: "toolbar-content", part: "content" }, hAsync("slot", { key: '357246690f8d5e1cc3ca369611d4845a79edf610' })), hAsync("slot", { key: '06ed3cca4f7ebff4a54cd877dad3cc925ccf9f75', name: "primary" }), hAsync("slot", { key: 'e453d43d14a26b0d72f41e1b81a554bab8ece811', name: "end" }))));
37293
+ })) }, hAsync("div", { key: '67f5bba9c4f527c3f35bfe1313a2b85741f9b246', class: "toolbar-background", part: "background" }), hAsync("div", { key: '085e8c68f056e5b0deb9d1606431fbeb45dae8e5', class: "toolbar-container", part: "container" }, hAsync("slot", { key: '15227c79c3baf883fd8c43fdb7e1313453933c79', name: "start" }), hAsync("slot", { key: '0b8a7f7e685aa31c80d9bc03446ccc3a9d07e0e8', name: "secondary" }), hAsync("div", { key: '57e4628c1fa89df79dd80456259db961bb691404', class: "toolbar-content", part: "content" }, hAsync("slot", { key: '82c2f6e1acf8d96db259bd8baf295881801edbd5' })), hAsync("slot", { key: 'b2d4afb15214199f206c0a5e08b581e4c9c2f58a', name: "primary" }), hAsync("slot", { key: 'bfb909a0c472f8834046c2ea23bef2f562167ad3', name: "end" }))));
37725
37294
  }
37726
37295
  get el() { return getElement(this); }
37727
37296
  static get style() { return {
@@ -37767,11 +37336,11 @@ class ToolbarTitle {
37767
37336
  render() {
37768
37337
  const mode = getIonMode$1(this);
37769
37338
  const size = this.getSize();
37770
- return (hAsync(Host, { key: 'e599c0bf1b0817df3fa8360bdcd6d787f751c371', class: createColorClasses$1(this.color, {
37339
+ return (hAsync(Host, { key: '44e63f8439df64c470692904427b417e19406476', class: createColorClasses$1(this.color, {
37771
37340
  [mode]: true,
37772
37341
  [`title-${size}`]: true,
37773
37342
  'title-rtl': document.dir === 'rtl',
37774
- }) }, hAsync("div", { key: '6e7eee9047d6759876bb31d7305b76efc7c4338c', class: "toolbar-title" }, hAsync("slot", { key: 'bf790eb4c83dd0af4f2fd1f85ab4af5819f46ff4' }))));
37343
+ }) }, hAsync("div", { key: '784cf60a0db16045391891cc8fad0c7dbeba4039', class: "toolbar-title" }, hAsync("slot", { key: '0c720a50479ba257e8756337aeb9b0ab7516a227' }))));
37775
37344
  }
37776
37345
  get el() { return getElement(this); }
37777
37346
  static get watchers() { return {