@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.mjs CHANGED
@@ -18571,11 +18571,11 @@ class ItemDivider {
18571
18571
  }
18572
18572
  render() {
18573
18573
  const mode = getIonMode$1(this);
18574
- return (hAsync(Host, { key: '1523095ce4af3f2611512ff0948ead659959ee4a', class: createColorClasses$1(this.color, {
18574
+ return (hAsync(Host, { key: 'ee8b2c8d5e415c0d8badf84fa7670932da4e809e', class: createColorClasses$1(this.color, {
18575
18575
  [mode]: true,
18576
18576
  'item-divider-sticky': this.sticky,
18577
18577
  item: true,
18578
- }) }, 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" }))));
18578
+ }) }, 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" }))));
18579
18579
  }
18580
18580
  get el() { return getElement(this); }
18581
18581
  static get style() { return {
@@ -18605,7 +18605,7 @@ class ItemGroup {
18605
18605
  }
18606
18606
  render() {
18607
18607
  const mode = getIonMode$1(this);
18608
- return (hAsync(Host, { key: 'e49dc8f99247d2431d7c6db01b6e021a0f5b1c37', role: "group", class: {
18608
+ return (hAsync(Host, { key: 'f1743af1d075682f63fae3802c5c5bf050507563', role: "group", class: {
18609
18609
  [mode]: true,
18610
18610
  // Used internally for styling
18611
18611
  [`item-group-${mode}`]: true,
@@ -18675,12 +18675,12 @@ class ItemOption {
18675
18675
  href: this.href,
18676
18676
  target: this.target,
18677
18677
  };
18678
- return (hAsync(Host, { key: '189a0040b97163b2336bf216baa71d584c5923a8', onClick: this.onClick, class: createColorClasses$1(this.color, {
18678
+ return (hAsync(Host, { key: '058310ac361612c16f2ef70c74279ba7c24128c5', onClick: this.onClick, class: createColorClasses$1(this.color, {
18679
18679
  [mode]: true,
18680
18680
  'item-option-disabled': disabled,
18681
18681
  'item-option-expandable': expandable,
18682
18682
  'ion-activatable': true,
18683
- }) }, 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' }))));
18683
+ }) }, 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' }))));
18684
18684
  }
18685
18685
  get el() { return getElement(this); }
18686
18686
  static get style() { return {
@@ -18729,7 +18729,7 @@ class ItemOptions {
18729
18729
  render() {
18730
18730
  const mode = getIonMode$1(this);
18731
18731
  const isEnd = isEndSide(this.side);
18732
- return (hAsync(Host, { key: '05a22a505e043c2715e3805e5e26ab4668940af0', class: {
18732
+ return (hAsync(Host, { key: '7b4b93984182222c64c7a2a22a18e52ac19e3049', class: {
18733
18733
  [mode]: true,
18734
18734
  // Used internally for styling
18735
18735
  [`item-options-${mode}`]: true,
@@ -19194,7 +19194,7 @@ class ItemSliding {
19194
19194
  }
19195
19195
  render() {
19196
19196
  const mode = getIonMode$1(this);
19197
- return (hAsync(Host, { key: 'd812322c9fb5da4ee16e99dc38bfb24cb4590d03', class: {
19197
+ return (hAsync(Host, { key: '8fd81d74701402294a48b79c56d6eceadafd4881', class: {
19198
19198
  [mode]: true,
19199
19199
  'item-sliding-active-slide': this.state !== 2 /* SlidingState.Disabled */,
19200
19200
  'item-sliding-active-options-end': (this.state & 8 /* SlidingState.End */) !== 0,
@@ -19299,13 +19299,13 @@ class Label {
19299
19299
  render() {
19300
19300
  const position = this.position;
19301
19301
  const mode = getIonMode$1(this);
19302
- return (hAsync(Host, { key: 'd6fba1a97189acc8ddfd64a2f009954a3e46e188', class: createColorClasses$1(this.color, {
19302
+ return (hAsync(Host, { key: '684ddfa719e34d743489ff05a0df067829257c73', class: createColorClasses$1(this.color, {
19303
19303
  [mode]: true,
19304
19304
  'in-item-color': hostContext('ion-item.ion-color', this.el),
19305
19305
  [`label-${position}`]: position !== undefined,
19306
19306
  [`label-no-animate`]: this.noAnimate,
19307
19307
  'label-rtl': document.dir === 'rtl',
19308
- }) }, hAsync("slot", { key: 'ce0ab50b5700398fdf50f36d02b7ad287eb71481' })));
19308
+ }) }, hAsync("slot", { key: '4aace3e2b36250e832c44f63bea21116d77220fb' })));
19309
19309
  }
19310
19310
  get el() { return getElement(this); }
19311
19311
  static get watchers() { return {
@@ -19403,10 +19403,10 @@ class ListHeader {
19403
19403
  render() {
19404
19404
  const { lines } = this;
19405
19405
  const mode = getIonMode$1(this);
19406
- return (hAsync(Host, { key: 'd9bc827ad8cc77231efddc2435831a7fc080f77d', class: createColorClasses$1(this.color, {
19406
+ return (hAsync(Host, { key: '2e529021279761b2b2889885437f619b0e8f71c4', class: createColorClasses$1(this.color, {
19407
19407
  [mode]: true,
19408
19408
  [`list-header-lines-${lines}`]: lines !== undefined,
19409
- }) }, hAsync("div", { key: '02dd9698304a7b2997ea1487e2f308bebea2b44c', class: "list-header-inner" }, hAsync("slot", { key: '01d63a572c003286ae467a1ab23631e37e695042' }))));
19409
+ }) }, hAsync("div", { key: '9a6a11b0db015df79374f6489a40b959bc80b3e4', class: "list-header-inner" }, hAsync("slot", { key: 'ef347fc6afb47850797e2e4d1aeefcd6a318f789' }))));
19410
19410
  }
19411
19411
  static get style() { return {
19412
19412
  ios: listHeaderIosCss,
@@ -19691,9 +19691,9 @@ class Loading {
19691
19691
  * Otherwise, don't set aria-labelledby.
19692
19692
  */
19693
19693
  const ariaLabelledBy = message !== undefined ? msgId : null;
19694
- return (hAsync(Host, Object.assign({ key: '4497183ce220242abe19ae15f328f9a92ccafbbc', role: "dialog", "aria-modal": "true", "aria-labelledby": ariaLabelledBy, tabindex: "-1" }, htmlAttributes, { style: {
19694
+ return (hAsync(Host, Object.assign({ key: 'f86ddbc600cb5c396b7de38fb5f49625388c3c3f', role: "dialog", "aria-modal": "true", "aria-labelledby": ariaLabelledBy, tabindex: "-1" }, htmlAttributes, { style: {
19695
19695
  zIndex: `${40000 + this.overlayIndex}`,
19696
- }, 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" })));
19696
+ }, 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" })));
19697
19697
  }
19698
19698
  get el() { return getElement(this); }
19699
19699
  static get watchers() { return {
@@ -20742,14 +20742,14 @@ class Menu {
20742
20742
  * the ionBackButton listener in the menu controller
20743
20743
  * will handle closing the menu when Escape is pressed.
20744
20744
  */
20745
- return (hAsync(Host, { key: '70a427f3414a476414c3386efe6c8723fd37eccf', onKeyDown: shouldUseCloseWatcher() ? null : this.onKeydown, role: "navigation", "aria-label": inheritedAttributes['aria-label'] || 'menu', class: {
20745
+ return (hAsync(Host, { key: '29ef73894e2795e4ce23e59888ffb87faf4dd543', onKeyDown: shouldUseCloseWatcher() ? null : this.onKeydown, role: "navigation", "aria-label": inheritedAttributes['aria-label'] || 'menu', class: {
20746
20746
  [mode]: true,
20747
20747
  [`menu-type-${type}`]: true,
20748
20748
  'menu-enabled': !disabled,
20749
20749
  [`menu-side-${side}`]: true,
20750
20750
  'menu-pane-visible': isPaneVisible,
20751
20751
  'split-pane-side': hostContext('ion-split-pane', el),
20752
- } }, 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" })));
20752
+ } }, 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" })));
20753
20753
  }
20754
20754
  get el() { return getElement(this); }
20755
20755
  static get watchers() { return {
@@ -20857,7 +20857,7 @@ class MenuButton {
20857
20857
  type: this.type,
20858
20858
  };
20859
20859
  const ariaLabel = inheritedAttributes['aria-label'] || 'menu';
20860
- return (hAsync(Host, { key: '9f0f0e50d39a6872508220c58e64bb2092a0d7ef', onClick: this.onClick, "aria-disabled": disabled ? 'true' : null, "aria-hidden": hidden ? 'true' : null, class: createColorClasses$1(color, {
20860
+ return (hAsync(Host, { key: 'dcade732e366f0687d92cb9ce4065b78b0b41d24', onClick: this.onClick, "aria-disabled": disabled ? 'true' : null, "aria-hidden": hidden ? 'true' : null, class: createColorClasses$1(color, {
20861
20861
  [mode]: true,
20862
20862
  button: true, // ion-buttons target .button
20863
20863
  'menu-button-hidden': hidden,
@@ -20866,7 +20866,7 @@ class MenuButton {
20866
20866
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
20867
20867
  'ion-activatable': true,
20868
20868
  'ion-focusable': true,
20869
- }) }, 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" }))));
20869
+ }) }, 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" }))));
20870
20870
  }
20871
20871
  get el() { return getElement(this); }
20872
20872
  static get style() { return {
@@ -20919,10 +20919,10 @@ class MenuToggle {
20919
20919
  render() {
20920
20920
  const mode = getIonMode$1(this);
20921
20921
  const hidden = this.autoHide && !this.visible;
20922
- return (hAsync(Host, { key: 'cd567114769a30bd3871ed5d15bf42aed39956e1', onClick: this.onClick, "aria-hidden": hidden ? 'true' : null, class: {
20922
+ return (hAsync(Host, { key: '55135952f3a42cb5d21916dfb7b169d894b381e3', onClick: this.onClick, "aria-hidden": hidden ? 'true' : null, class: {
20923
20923
  [mode]: true,
20924
20924
  'menu-toggle-hidden': hidden,
20925
- } }, hAsync("slot", { key: '773d4cff95ca75f23578b1e1dca53c9933f28a33' })));
20925
+ } }, hAsync("slot", { key: 'e8ecb59a6ec075b07e2a1b8fcdf7df3dd9975a03' })));
20926
20926
  }
20927
20927
  static get style() { return menuToggleCss; }
20928
20928
  static get cmpMeta() { return {
@@ -22804,170 +22804,9 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
22804
22804
  };
22805
22805
  };
22806
22806
 
22807
- /**
22808
- * These thresholds match the SCSS media query breakpoints in modal.vars.scss
22809
- * that trigger the centered dialog layout (non-fullscreen modal).
22810
- *
22811
- * SCSS defines two height breakpoints: $modal-inset-min-height-small (600px)
22812
- * and $modal-inset-min-height-large (768px). We use the smaller one because
22813
- * that's the threshold where the modal transitions from fullscreen to centered
22814
- * dialog — the larger breakpoint only increases the dialog's height.
22815
- */
22816
- const MODAL_INSET_MIN_WIDTH = 768;
22817
- const MODAL_INSET_MIN_HEIGHT = 600;
22818
- const EDGE_THRESHOLD = 5;
22819
- /**
22820
- * Cache for resolved root safe-area-top value, invalidated once per frame.
22821
- */
22822
- let cachedRootSafeAreaTop = null;
22823
- let cacheInvalidationScheduled$1 = false;
22824
- /**
22825
- * Determines if the current viewport meets the CSS media query conditions
22826
- * that cause regular modals to render as centered dialogs instead of fullscreen.
22827
- * Matches: @media (min-width: 768px) and (min-height: 600px)
22828
- */
22829
- const isCenteredDialogViewport = () => {
22830
- if (!win$1)
22831
- return false;
22832
- return win$1.matchMedia(`(min-width: ${MODAL_INSET_MIN_WIDTH}px) and (min-height: ${MODAL_INSET_MIN_HEIGHT}px)`)
22833
- .matches;
22834
- };
22835
- /**
22836
- * Resolves the current root --ion-safe-area-top value to pixels.
22837
- * Uses a temporary element because getComputedStyle on :root returns
22838
- * the declared value of custom properties (e.g. "env(safe-area-inset-top)")
22839
- * rather than a resolved number.
22840
- *
22841
- * Results are cached for the current frame to avoid repeated reflows.
22842
- */
22843
- const getRootSafeAreaTop = () => {
22844
- if (cachedRootSafeAreaTop !== null) {
22845
- return cachedRootSafeAreaTop;
22846
- }
22847
- const doc = win$1 === null || win$1 === void 0 ? void 0 : win$1.document;
22848
- if (!(doc === null || doc === void 0 ? void 0 : doc.body)) {
22849
- return 0;
22850
- }
22851
- const el = doc.createElement('div');
22852
- el.style.cssText =
22853
- 'position:fixed;visibility:hidden;pointer-events:none;top:0;left:0;' + 'padding-top:var(--ion-safe-area-top,0px);';
22854
- doc.body.appendChild(el);
22855
- const value = parseFloat(getComputedStyle(el).paddingTop) || 0;
22856
- el.remove();
22857
- cachedRootSafeAreaTop = value;
22858
- if (!cacheInvalidationScheduled$1) {
22859
- cacheInvalidationScheduled$1 = true;
22860
- raf(() => {
22861
- cachedRootSafeAreaTop = null;
22862
- cacheInvalidationScheduled$1 = false;
22863
- });
22864
- }
22865
- return value;
22866
- };
22867
- /**
22868
- * Returns the initial safe-area configuration based on modal type.
22869
- * This is called before animation starts and uses configuration-based prediction.
22870
- *
22871
- * @param context - Modal context information
22872
- * @returns SafeAreaConfig with initial safe-area values
22873
- */
22874
- const getInitialSafeAreaConfig = (context) => {
22875
- const { isSheetModal, isCardModal } = context;
22876
- // Sheet modals always zero top safe-area. The sheet height offset from the
22877
- // top edge is handled by --ion-modal-offset-top (set in modal.tsx) using
22878
- // the resolved root value, so --ion-safe-area-top is never needed for
22879
- // height calculation. Keeping it at 0px prevents header content from
22880
- // getting double-offset padding.
22881
- if (isSheetModal) {
22882
- return {
22883
- top: '0px',
22884
- bottom: 'inherit',
22885
- left: '0px',
22886
- right: '0px',
22887
- };
22888
- }
22889
- // Card modals need safe-area for height calculation.
22890
- // Note: isCardModal is already gated on mode === 'ios' by the caller.
22891
- if (isCardModal) {
22892
- return {
22893
- top: 'inherit',
22894
- bottom: 'inherit',
22895
- left: '0px',
22896
- right: '0px',
22897
- };
22898
- }
22899
- // On viewports that meet the centered dialog media query breakpoints,
22900
- // regular modals render as centered dialogs (not fullscreen), so they
22901
- // don't touch any screen edges and don't need safe-area insets.
22902
- if (isCenteredDialogViewport()) {
22903
- return {
22904
- top: '0px',
22905
- bottom: '0px',
22906
- left: '0px',
22907
- right: '0px',
22908
- };
22909
- }
22910
- // Fullscreen modals on phone - inherit all safe areas
22911
- return {
22912
- top: 'inherit',
22913
- bottom: 'inherit',
22914
- left: 'inherit',
22915
- right: 'inherit',
22916
- };
22917
- };
22918
- /**
22919
- * Returns safe-area configuration based on actual modal position.
22920
- * Detects which edges the modal overlaps with and only applies safe-area to those edges.
22921
- *
22922
- * Note: On Android edge-to-edge (API 36+), getBoundingClientRect() may report
22923
- * inconsistent values. Sheet and card modals avoid this by using configuration-based
22924
- * prediction instead. Regular modals use coordinate detection which works reliably
22925
- * on web and iOS; Android edge-to-edge may need a configuration-based fallback
22926
- * once a reliable detection mechanism is available.
22927
- *
22928
- * @param wrapperEl - The modal wrapper element to measure
22929
- * @returns SafeAreaConfig based on position
22930
- */
22931
- const getPositionBasedSafeAreaConfig = (wrapperEl) => {
22932
- var _a, _b;
22933
- const rect = wrapperEl.getBoundingClientRect();
22934
- const vh = (_a = win$1 === null || win$1 === void 0 ? void 0 : win$1.innerHeight) !== null && _a !== void 0 ? _a : 0;
22935
- const vw = (_b = win$1 === null || win$1 === void 0 ? void 0 : win$1.innerWidth) !== null && _b !== void 0 ? _b : 0;
22936
- // Only apply safe-area to sides where modal overlaps with screen edge
22937
- return {
22938
- top: rect.top <= EDGE_THRESHOLD ? 'inherit' : '0px',
22939
- bottom: rect.bottom >= vh - EDGE_THRESHOLD ? 'inherit' : '0px',
22940
- left: rect.left <= EDGE_THRESHOLD ? 'inherit' : '0px',
22941
- right: rect.right >= vw - EDGE_THRESHOLD ? 'inherit' : '0px',
22942
- };
22943
- };
22944
- /**
22945
- * Applies safe-area CSS custom property overrides to the modal host element.
22946
- *
22947
- * @param hostEl - The modal host element (ion-modal)
22948
- * @param config - Safe-area configuration to apply
22949
- */
22950
- const applySafeAreaOverrides = (hostEl, config) => {
22951
- hostEl.style.setProperty('--ion-safe-area-top', config.top);
22952
- hostEl.style.setProperty('--ion-safe-area-bottom', config.bottom);
22953
- hostEl.style.setProperty('--ion-safe-area-left', config.left);
22954
- hostEl.style.setProperty('--ion-safe-area-right', config.right);
22955
- };
22956
- /**
22957
- * Clears safe-area CSS custom property overrides from the modal host element.
22958
- *
22959
- * @param hostEl - The modal host element (ion-modal)
22960
- */
22961
- const clearSafeAreaOverrides = (hostEl) => {
22962
- hostEl.style.removeProperty('--ion-safe-area-top');
22963
- hostEl.style.removeProperty('--ion-safe-area-bottom');
22964
- hostEl.style.removeProperty('--ion-safe-area-left');
22965
- hostEl.style.removeProperty('--ion-safe-area-right');
22966
- };
22967
-
22968
- 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}";
22807
+ 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}";
22969
22808
 
22970
- 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}";
22809
+ 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}";
22971
22810
 
22972
22811
  // TODO(FW-2832): types
22973
22812
  /**
@@ -23190,31 +23029,13 @@ class Modal {
23190
23029
  }
23191
23030
  }
23192
23031
  onWindowResize() {
23193
- if (!this.presented)
23032
+ // Only handle resize for iOS card modals when no custom animations are provided
23033
+ if (getIonMode$1(this) !== 'ios' || !this.presentingElement || this.enterAnimation || this.leaveAnimation) {
23194
23034
  return;
23035
+ }
23195
23036
  clearTimeout(this.resizeTimeout);
23196
23037
  this.resizeTimeout = setTimeout(() => {
23197
- const context = this.getSafeAreaContext();
23198
- // iOS card modals: handle portrait/landscape view transitions
23199
- if (context.isCardModal && !this.enterAnimation && !this.leaveAnimation) {
23200
- this.handleViewTransition();
23201
- }
23202
- // Sheet modals: re-compute the internal offset property since safe-area
23203
- // values may change on device rotation (e.g., portrait notch vs landscape).
23204
- if (context.isSheetModal) {
23205
- this.updateSheetOffsetTop();
23206
- }
23207
- // Regular (non-sheet, non-card) modals: update safe-area overrides
23208
- // since the viewport may have crossed the centered-dialog breakpoint.
23209
- if (!context.isSheetModal && !context.isCardModal) {
23210
- this.updateSafeAreaOverrides();
23211
- // Re-evaluate fullscreen safe-area padding: clear first, then re-apply
23212
- if (this.wrapperEl) {
23213
- this.wrapperEl.style.removeProperty('height');
23214
- this.wrapperEl.style.removeProperty('padding-bottom');
23215
- }
23216
- this.applyFullscreenSafeArea();
23217
- }
23038
+ this.handleViewTransition();
23218
23039
  }, 50); // Debounce to avoid excessive calls during active resizing
23219
23040
  }
23220
23041
  breakpointsChanged(breakpoints) {
@@ -23231,9 +23052,6 @@ class Modal {
23231
23052
  this.triggerController.removeClickListener();
23232
23053
  this.cleanupViewTransitionListener();
23233
23054
  this.cleanupParentRemovalObserver();
23234
- // Also called in dismiss() — intentional dual cleanup covers both
23235
- // dismiss-then-remove and direct DOM removal without dismiss.
23236
- this.cleanupSafeAreaOverrides();
23237
23055
  }
23238
23056
  componentWillLoad() {
23239
23057
  var _a;
@@ -23394,11 +23212,6 @@ class Modal {
23394
23212
  await waitForMount();
23395
23213
  }
23396
23214
  writeTask(() => this.el.classList.add('show-modal'));
23397
- // Recalculate isSheetModal before safe-area setup because framework
23398
- // bindings (e.g., Angular) may not have been applied when componentWillLoad ran.
23399
- this.isSheetModal = this.breakpoints !== undefined && this.initialBreakpoint !== undefined;
23400
- // Set initial safe-area overrides before animation
23401
- this.setInitialSafeAreaOverrides();
23402
23215
  const hasCardModal = presentingElement !== undefined;
23403
23216
  /**
23404
23217
  * We need to change the status bar at the
@@ -23416,10 +23229,6 @@ class Modal {
23416
23229
  backdropBreakpoint: this.backdropBreakpoint,
23417
23230
  expandToScroll: this.expandToScroll,
23418
23231
  });
23419
- // Update safe-area based on actual position after animation
23420
- this.updateSafeAreaOverrides();
23421
- // Apply fullscreen safe-area padding if needed
23422
- this.applyFullscreenSafeArea();
23423
23232
  /* tslint:disable-next-line */
23424
23233
  if (typeof window !== 'undefined') {
23425
23234
  /**
@@ -23451,7 +23260,13 @@ class Modal {
23451
23260
  };
23452
23261
  window.addEventListener(KEYBOARD_DID_OPEN, this.keyboardOpenCallback);
23453
23262
  }
23454
- if (this.isSheetModal) {
23263
+ /**
23264
+ * Recalculate isSheetModal because framework bindings (e.g., Angular)
23265
+ * may not have been applied when componentWillLoad ran.
23266
+ */
23267
+ const isSheetModal = this.breakpoints !== undefined && this.initialBreakpoint !== undefined;
23268
+ this.isSheetModal = isSheetModal;
23269
+ if (isSheetModal) {
23455
23270
  this.initSheetGesture();
23456
23271
  }
23457
23272
  else if (hasCardModal) {
@@ -23641,9 +23456,6 @@ class Modal {
23641
23456
  if (this.gestureAnimationDismissing && role !== GESTURE) {
23642
23457
  return false;
23643
23458
  }
23644
- // Cancel any pending resize timeout to prevent stale updates during dismiss
23645
- clearTimeout(this.resizeTimeout);
23646
- this.resizeTimeout = undefined;
23647
23459
  /**
23648
23460
  * Because the canDismiss check below is async,
23649
23461
  * we need to claim a lock before the check happens,
@@ -23698,7 +23510,6 @@ class Modal {
23698
23510
  }
23699
23511
  this.cleanupViewTransitionListener();
23700
23512
  this.cleanupParentRemovalObserver();
23701
- this.cleanupSafeAreaOverrides();
23702
23513
  this.cleanupChildRoutePassthrough();
23703
23514
  }
23704
23515
  this.currentBreakpoint = undefined;
@@ -23819,9 +23630,6 @@ class Modal {
23819
23630
  this.viewTransitionAnimation = transitionAnimation;
23820
23631
  transitionAnimation.play().then(() => {
23821
23632
  this.viewTransitionAnimation = undefined;
23822
- // Wait for a layout pass after the transition so getBoundingClientRect()
23823
- // in getPositionBasedSafeAreaConfig() reflects the new dimensions.
23824
- raf(() => this.updateSafeAreaOverrides());
23825
23633
  // After orientation transition, recreate the swipe-to-close gesture
23826
23634
  // with updated animation that reflects the new presenting element state
23827
23635
  this.reinitSwipeToClose();
@@ -23948,123 +23756,6 @@ class Modal {
23948
23756
  (_a = this.parentRemovalObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
23949
23757
  this.parentRemovalObserver = undefined;
23950
23758
  }
23951
- /**
23952
- * Creates the context object for safe-area utilities.
23953
- */
23954
- getSafeAreaContext() {
23955
- return {
23956
- isSheetModal: this.isSheetModal,
23957
- isCardModal: this.presentingElement !== undefined && getIonMode$1(this) === 'ios',
23958
- presentingElement: this.presentingElement,
23959
- breakpoints: this.breakpoints,
23960
- currentBreakpoint: this.currentBreakpoint,
23961
- };
23962
- }
23963
- /**
23964
- * Sets initial safe-area overrides before modal animation.
23965
- * Called in present() before animation starts.
23966
- *
23967
- * For sheet modals, the SCSS --height formula uses --ion-modal-offset-top
23968
- * (an internal property) instead of --ion-safe-area-top. We resolve the
23969
- * root safe-area-top to pixels and set --ion-modal-offset-top, decoupling
23970
- * the height calculation from --ion-safe-area-top (which is zeroed for
23971
- * sheets to prevent header content from getting double-offset padding).
23972
- */
23973
- setInitialSafeAreaOverrides() {
23974
- const context = this.getSafeAreaContext();
23975
- const safeAreaConfig = getInitialSafeAreaConfig(context);
23976
- applySafeAreaOverrides(this.el, safeAreaConfig);
23977
- // Set the internal offset property with the resolved root safe-area-top value
23978
- if (context.isSheetModal) {
23979
- this.updateSheetOffsetTop();
23980
- }
23981
- }
23982
- /**
23983
- * Resolves the current root --ion-safe-area-top value and sets the
23984
- * internal --ion-modal-offset-top property on the host element.
23985
- * Called on present and on resize (e.g., device rotation changes safe-area).
23986
- */
23987
- updateSheetOffsetTop() {
23988
- const safeAreaTop = getRootSafeAreaTop();
23989
- this.el.style.setProperty('--ion-modal-offset-top', `${safeAreaTop}px`);
23990
- }
23991
- /**
23992
- * Updates safe-area overrides during dynamic state changes.
23993
- * Called after animations, during gestures, and on orientation changes.
23994
- */
23995
- updateSafeAreaOverrides() {
23996
- const { wrapperEl, el } = this;
23997
- const context = this.getSafeAreaContext();
23998
- // Sheet modals: safe-area is fully determined at presentation time
23999
- // (top is always 0px, height is frozen). Nothing to update.
24000
- if (context.isSheetModal)
24001
- return;
24002
- // Card modals have fixed safe-area requirements set by initial prediction.
24003
- if (context.isCardModal)
24004
- return;
24005
- // wrapperEl is required for position-based detection below
24006
- if (!wrapperEl)
24007
- return;
24008
- // Regular modals: use position-based detection to correctly handle both
24009
- // fullscreen modals and centered dialogs with custom dimensions.
24010
- const safeAreaConfig = getPositionBasedSafeAreaConfig(wrapperEl);
24011
- applySafeAreaOverrides(el, safeAreaConfig);
24012
- }
24013
- /**
24014
- * Applies padding-bottom to fullscreen modal wrapper to prevent
24015
- * content from overlapping system navigation bar.
24016
- */
24017
- applyFullscreenSafeArea() {
24018
- const { wrapperEl, el } = this;
24019
- if (!wrapperEl)
24020
- return;
24021
- const context = this.getSafeAreaContext();
24022
- if (context.isSheetModal || context.isCardModal)
24023
- return;
24024
- // Check for standard Ionic layout children (ion-content, ion-footer),
24025
- // searching one level deep for wrapped components (e.g.,
24026
- // <app-footer><ion-footer>...</ion-footer></app-footer>).
24027
- // Note: uses a manual loop instead of querySelector(':scope > ...') because
24028
- // Stencil's mock-doc (used in spec tests) does not support :scope.
24029
- let hasContent = false;
24030
- let hasFooter = false;
24031
- for (const child of Array.from(el.children)) {
24032
- if (child.tagName === 'ION-CONTENT')
24033
- hasContent = true;
24034
- if (child.tagName === 'ION-FOOTER')
24035
- hasFooter = true;
24036
- for (const grandchild of Array.from(child.children)) {
24037
- if (grandchild.tagName === 'ION-CONTENT')
24038
- hasContent = true;
24039
- if (grandchild.tagName === 'ION-FOOTER')
24040
- hasFooter = true;
24041
- }
24042
- }
24043
- // Only apply wrapper padding for standard Ionic layouts (has ion-content
24044
- // but no ion-footer). Custom modals with raw HTML are fully
24045
- // developer-controlled and should not be modified.
24046
- if (!hasContent || hasFooter)
24047
- return;
24048
- // Reduce wrapper height by safe-area and add equivalent padding so the
24049
- // total visual size stays the same but the flex content area shrinks.
24050
- // Using height + padding instead of box-sizing: border-box avoids
24051
- // breaking custom modals that set --border-width (border-box would
24052
- // include the border inside the height, changing the layout).
24053
- wrapperEl.style.setProperty('height', 'calc(var(--height) - var(--ion-safe-area-bottom, 0px))');
24054
- wrapperEl.style.setProperty('padding-bottom', 'var(--ion-safe-area-bottom, 0px)');
24055
- }
24056
- /**
24057
- * Clears all safe-area overrides and padding from wrapper.
24058
- */
24059
- cleanupSafeAreaOverrides() {
24060
- clearSafeAreaOverrides(this.el);
24061
- // Remove internal sheet offset property
24062
- this.el.style.removeProperty('--ion-modal-offset-top');
24063
- if (this.wrapperEl) {
24064
- this.wrapperEl.style.removeProperty('height');
24065
- this.wrapperEl.style.removeProperty('padding-bottom');
24066
- }
24067
- }
24068
23759
  render() {
24069
23760
  const { handle, isSheetModal, presentingElement, htmlAttributes, handleBehavior, inheritedAttributes, focusTrap, expandToScroll, } = this;
24070
23761
  const showHandle = handle !== false && isSheetModal;
@@ -24072,20 +23763,20 @@ class Modal {
24072
23763
  const isCardModal = presentingElement !== undefined && mode === 'ios';
24073
23764
  const isHandleCycle = handleBehavior === 'cycle';
24074
23765
  const isSheetModalWithHandle = isSheetModal && showHandle;
24075
- return (hAsync(Host, Object.assign({ key: '038ae26c2cb040043c7d0c217a4de6a7ae909235', "no-router": true,
23766
+ return (hAsync(Host, Object.assign({ key: '978ba9cc81464b2d9b4caaf36285d5f7bf7e568d', "no-router": true,
24076
23767
  // Allow the modal to be navigable when the handle is focusable
24077
23768
  tabIndex: isHandleCycle && isSheetModalWithHandle ? 0 : -1 }, htmlAttributes, { style: {
24078
23769
  zIndex: `${20000 + this.overlayIndex}`,
24079
- }, 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',
23770
+ }, 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',
24080
23771
  /*
24081
23772
  role and aria-modal must be used on the
24082
23773
  same element. They must also be set inside the
24083
23774
  shadow DOM otherwise ion-button will not be highlighted
24084
23775
  when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
24085
23776
  */
24086
- 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",
23777
+ 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",
24087
23778
  // Prevents the handle from receiving keyboard focus when it does not cycle
24088
- 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 }))));
23779
+ 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 }))));
24089
23780
  }
24090
23781
  get el() { return getElement(this); }
24091
23782
  static get watchers() { return {
@@ -25033,7 +24724,7 @@ class Nav {
25033
24724
  }
25034
24725
  }
25035
24726
  render() {
25036
- return hAsync("slot", { key: '8067c9835d255daec61f33dba200fd3a6ff839a0' });
24727
+ return hAsync("slot", { key: 'a549286b51b1bb23c9ef51f71148452228d0ab14' });
25037
24728
  }
25038
24729
  get el() { return getElement(this); }
25039
24730
  static get watchers() { return {
@@ -25106,7 +24797,7 @@ class NavLink {
25106
24797
  };
25107
24798
  }
25108
24799
  render() {
25109
- return hAsync(Host, { key: '6dbb1ad4f351e9215375aac11ab9b53762e07a08', onClick: this.onClick });
24800
+ return hAsync(Host, { key: 'd4d80feb51c0d92b0bedf6952c892f9df3002046', onClick: this.onClick });
25110
24801
  }
25111
24802
  get el() { return getElement(this); }
25112
24803
  static get cmpMeta() { return {
@@ -25137,9 +24828,9 @@ class Note {
25137
24828
  }
25138
24829
  render() {
25139
24830
  const mode = getIonMode$1(this);
25140
- return (hAsync(Host, { key: '0ec2ef7367d867fd7588611953f696eecdf3221e', class: createColorClasses$1(this.color, {
24831
+ return (hAsync(Host, { key: 'b86a6acc9274df6528d224d4c11ab826a0f84dbc', class: createColorClasses$1(this.color, {
25141
24832
  [mode]: true,
25142
- }) }, hAsync("slot", { key: 'a200b94ddffb29cf6dabe6e984220930ea7efdef' })));
24833
+ }) }, hAsync("slot", { key: '5de76567ed7713827cd277a42db102faf34190c8' })));
25143
24834
  }
25144
24835
  static get style() { return {
25145
24836
  ios: noteIosCss,
@@ -25899,11 +25590,11 @@ class Picker {
25899
25590
  render() {
25900
25591
  const { htmlAttributes } = this;
25901
25592
  const mode = getIonMode$1(this);
25902
- return (hAsync(Host, Object.assign({ key: 'b95440747eb80cba23ae676d399d5e5816722c58', "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
25593
+ return (hAsync(Host, Object.assign({ key: '80f66d33780d8a1352d24be9cb63a0cc03d01ab5', "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
25903
25594
  zIndex: `${20000 + this.overlayIndex}`,
25904
25595
  }, class: Object.assign({ [mode]: true,
25905
25596
  // Used internally for styling
25906
- [`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" })));
25597
+ [`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" })));
25907
25598
  }
25908
25599
  get el() { return getElement(this); }
25909
25600
  static get watchers() { return {
@@ -26872,9 +26563,9 @@ class PickerColumnCmp {
26872
26563
  render() {
26873
26564
  const col = this.col;
26874
26565
  const mode = getIonMode$1(this);
26875
- 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: {
26566
+ 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: {
26876
26567
  'max-width': this.col.columnWidth,
26877
- } }, 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))));
26568
+ } }, 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))));
26878
26569
  }
26879
26570
  get el() { return getElement(this); }
26880
26571
  static get watchers() { return {
@@ -26991,10 +26682,10 @@ class PickerColumnOption {
26991
26682
  render() {
26992
26683
  const { color, disabled, ariaLabel } = this;
26993
26684
  const mode = getIonMode$1(this);
26994
- return (hAsync(Host, { key: 'f816729941aabcb31ddfdce3ffe2e2139030d715', class: createColorClasses$1(color, {
26685
+ return (hAsync(Host, { key: 'c45a1c14a351bf57d7113671164852349be5aa8a', class: createColorClasses$1(color, {
26995
26686
  [mode]: true,
26996
26687
  ['option-disabled']: disabled,
26997
- }) }, hAsync("div", { key: 'd942de84fd14d7dc06b1e5cf4f7920d1dc3c6371', class: 'picker-column-option-button', role: "button", "aria-label": ariaLabel, onClick: () => this.onClick() }, hAsync("slot", { key: 'b0df5717b42209e649097209a01476e1a66f5c5c' }))));
26688
+ }) }, hAsync("div", { key: '824930b658c6e3fb493ac4c6c2451d38c6bc4829', class: 'picker-column-option-button', role: "button", "aria-label": ariaLabel, onClick: () => this.onClick() }, hAsync("slot", { key: '019df4dcf46e629bdbebcd46ed3ab29669feab27' }))));
26998
26689
  }
26999
26690
  get el() { return getElement(this); }
27000
26691
  static get watchers() { return {
@@ -27019,58 +26710,6 @@ class PickerColumnOption {
27019
26710
  }; }
27020
26711
  }
27021
26712
 
27022
- /**
27023
- * Shared per-frame cache for safe-area insets. Avoids creating a temporary
27024
- * DOM element and forcing a synchronous reflow on every call within the same
27025
- * frame (e.g., multiple popovers presenting simultaneously). Invalidated
27026
- * after the next animation frame so values stay fresh across orientation
27027
- * changes and viewport resizes.
27028
- */
27029
- let cachedInsets = null;
27030
- let cacheInvalidationScheduled = false;
27031
- /**
27032
- * Resolves the current --ion-safe-area-* CSS custom property values
27033
- * to actual pixel numbers. A temporary element is needed because
27034
- * getComputedStyle on :root returns the declared value of custom
27035
- * properties (e.g. "env(safe-area-inset-top)") rather than a
27036
- * resolved number. By assigning them to standard padding properties,
27037
- * the browser resolves the value.
27038
- *
27039
- * Results are cached for the current frame to avoid repeated reflows.
27040
- */
27041
- const getSafeAreaInsets = (doc) => {
27042
- if (cachedInsets !== null) {
27043
- return cachedInsets;
27044
- }
27045
- if (doc.body === null) {
27046
- return { top: 0, bottom: 0, left: 0, right: 0 };
27047
- }
27048
- const el = doc.createElement('div');
27049
- el.style.cssText =
27050
- 'position:fixed;visibility:hidden;pointer-events:none;top:0;left:0;' +
27051
- 'padding-top:var(--ion-safe-area-top,0px);' +
27052
- 'padding-bottom:var(--ion-safe-area-bottom,0px);' +
27053
- 'padding-left:var(--ion-safe-area-left,0px);' +
27054
- 'padding-right:var(--ion-safe-area-right,0px);';
27055
- doc.body.appendChild(el);
27056
- const style = getComputedStyle(el);
27057
- const insets = {
27058
- top: parseFloat(style.paddingTop) || 0,
27059
- bottom: parseFloat(style.paddingBottom) || 0,
27060
- left: parseFloat(style.paddingLeft) || 0,
27061
- right: parseFloat(style.paddingRight) || 0,
27062
- };
27063
- el.remove();
27064
- cachedInsets = insets;
27065
- if (!cacheInvalidationScheduled) {
27066
- cacheInvalidationScheduled = true;
27067
- raf(() => {
27068
- cachedInsets = null;
27069
- cacheInvalidationScheduled = false;
27070
- });
27071
- }
27072
- return insets;
27073
- };
27074
26713
  /**
27075
26714
  * Returns the dimensions of the popover
27076
26715
  * arrow on `ios` mode. If arrow is disabled
@@ -27706,10 +27345,8 @@ const calculatePopoverCenterAlign = (side, triggerBoundingBox, contentWidth, con
27706
27345
  * Adjusts popover positioning coordinates
27707
27346
  * such that popover does not appear offscreen
27708
27347
  * or overlapping safe area bounds.
27709
- *
27710
- * @internal - This is not part of the public API.
27711
27348
  */
27712
- const calculateWindowAdjustment = (side, coordTop, coordLeft, bodyPadding, bodyWidth, bodyHeight, contentWidth, contentHeight, safeArea, contentOriginX, contentOriginY, triggerCoordinates, coordArrowTop = 0, coordArrowLeft = 0, arrowHeight = 0) => {
27349
+ const calculateWindowAdjustment = (side, coordTop, coordLeft, bodyPadding, bodyWidth, bodyHeight, contentWidth, contentHeight, safeAreaMargin, contentOriginX, contentOriginY, triggerCoordinates, coordArrowTop = 0, coordArrowLeft = 0, arrowHeight = 0) => {
27713
27350
  let arrowTop = coordArrowTop;
27714
27351
  const arrowLeft = coordArrowLeft;
27715
27352
  let left = coordLeft;
@@ -27719,19 +27356,16 @@ const calculateWindowAdjustment = (side, coordTop, coordLeft, bodyPadding, bodyW
27719
27356
  let originY = contentOriginY;
27720
27357
  let checkSafeAreaLeft = false;
27721
27358
  let checkSafeAreaRight = false;
27722
- let checkSafeAreaTop = false;
27723
- let checkSafeAreaBottom = false;
27724
27359
  const triggerTop = triggerCoordinates
27725
27360
  ? triggerCoordinates.top + triggerCoordinates.height
27726
27361
  : bodyHeight / 2 - contentHeight / 2;
27727
27362
  const triggerHeight = triggerCoordinates ? triggerCoordinates.height : 0;
27728
27363
  let addPopoverBottomClass = false;
27729
- const hideArrow = false;
27730
27364
  /**
27731
27365
  * Adjust popover so it does not
27732
27366
  * go off the left of the screen.
27733
27367
  */
27734
- if (left < bodyPadding + safeArea.left) {
27368
+ if (left < bodyPadding + safeAreaMargin) {
27735
27369
  left = bodyPadding;
27736
27370
  checkSafeAreaLeft = true;
27737
27371
  originX = 'left';
@@ -27740,58 +27374,41 @@ const calculateWindowAdjustment = (side, coordTop, coordLeft, bodyPadding, bodyW
27740
27374
  * go off the right of the screen.
27741
27375
  */
27742
27376
  }
27743
- else if (contentWidth + bodyPadding + left + safeArea.right > bodyWidth) {
27377
+ else if (contentWidth + bodyPadding + left + safeAreaMargin > bodyWidth) {
27744
27378
  checkSafeAreaRight = true;
27745
27379
  left = bodyWidth - contentWidth - bodyPadding;
27746
27380
  originX = 'right';
27747
27381
  }
27748
27382
  /**
27749
27383
  * Adjust popover so it does not
27750
- * go off the bottom of the screen
27751
- * or overlap the bottom safe area.
27384
+ * go off the top of the screen.
27752
27385
  * If popover is on the left or the right of
27753
27386
  * the trigger, then we should not adjust top
27754
27387
  * margins.
27755
27388
  */
27756
- if (triggerTop + triggerHeight + contentHeight > bodyHeight - safeArea.bottom &&
27757
- (side === 'top' || side === 'bottom')) {
27758
- /**
27759
- * Calculate where the popover top would be if flipped
27760
- * above the trigger. Check whether that position clears
27761
- * the top safe area with room for bodyPadding.
27762
- */
27763
- const idealFlipTop = triggerTop - contentHeight - triggerHeight - (arrowHeight - 1);
27764
- if (idealFlipTop >= safeArea.top + bodyPadding) {
27389
+ if (triggerTop + triggerHeight + contentHeight > bodyHeight && (side === 'top' || side === 'bottom')) {
27390
+ if (triggerTop - contentHeight > 0) {
27765
27391
  /**
27766
- * Popover fits above the trigger without overlapping
27767
- * the top safe area. Use the ideal position directly —
27768
- * no safe-area CSS vars needed since it clears both edges.
27392
+ * While we strive to align the popover with the trigger
27393
+ * on smaller screens this is not always possible. As a result,
27394
+ * we adjust the popover up so that it does not hang
27395
+ * off the bottom of the screen. However, we do not want to move
27396
+ * the popover up so much that it goes off the top of the screen.
27397
+ *
27398
+ * We chose 12 here so that the popover position looks a bit nicer as
27399
+ * it is not right up against the edge of the screen.
27769
27400
  */
27770
- top = idealFlipTop;
27401
+ top = Math.max(12, triggerTop - contentHeight - triggerHeight - (arrowHeight - 1));
27771
27402
  arrowTop = top + contentHeight;
27772
27403
  originY = 'bottom';
27773
27404
  addPopoverBottomClass = true;
27774
- }
27775
- else {
27776
27405
  /**
27777
- * Can't flip above the trigger. Constrain the bottom
27778
- * edge while keeping the top near the trigger. This
27779
- * creates a scrollable area anchored to the trigger.
27406
+ * If not enough room for popover to appear
27407
+ * above trigger, then cut it off.
27780
27408
  */
27409
+ }
27410
+ else {
27781
27411
  bottom = bodyPadding;
27782
- checkSafeAreaBottom = true;
27783
- /**
27784
- * When the trigger is near the bottom of the screen,
27785
- * the calculated top may be at or past the bottom
27786
- * constraint, leaving zero visible height. In that
27787
- * case, pull top up to the top safe area so the
27788
- * popover fills the available space between safe areas.
27789
- */
27790
- const bottomEdge = bodyHeight - safeArea.bottom - bodyPadding;
27791
- if (top >= bottomEdge) {
27792
- top = safeArea.top + bodyPadding;
27793
- checkSafeAreaTop = true;
27794
- }
27795
27412
  }
27796
27413
  }
27797
27414
  return {
@@ -27802,12 +27419,9 @@ const calculateWindowAdjustment = (side, coordTop, coordLeft, bodyPadding, bodyW
27802
27419
  originY,
27803
27420
  checkSafeAreaLeft,
27804
27421
  checkSafeAreaRight,
27805
- checkSafeAreaTop,
27806
- checkSafeAreaBottom,
27807
27422
  arrowTop,
27808
27423
  arrowLeft,
27809
27424
  addPopoverBottomClass,
27810
- hideArrow,
27811
27425
  };
27812
27426
  };
27813
27427
  const shouldShowArrow = (side, didAdjustBounds = false, ev, trigger) => {
@@ -27837,15 +27451,6 @@ const shouldShowArrow = (side, didAdjustBounds = false, ev, trigger) => {
27837
27451
  };
27838
27452
 
27839
27453
  const POPOVER_IOS_BODY_PADDING = 5;
27840
- /**
27841
- * Minimum edge margin for iOS popovers ensures visual spacing from screen
27842
- * edges on devices without safe areas (e.g., older iPhones without notches).
27843
- * Previously this was a hardcoded `safeAreaMargin = 25` that served dual
27844
- * purpose: safe-area avoidance AND visual spacing. Now that actual safe-area
27845
- * insets are read dynamically, this floor preserves the visual spacing when
27846
- * safe-area values are 0.
27847
- */
27848
- const POPOVER_IOS_MIN_EDGE_MARGIN = 25;
27849
27454
  /**
27850
27455
  * iOS Popover Enter Animation
27851
27456
  */
@@ -27871,16 +27476,8 @@ const iosEnterAnimation$1 = (baseEl, opts) => {
27871
27476
  };
27872
27477
  const results = getPopoverPosition(isRTL, contentWidth, contentHeight, arrowWidth, arrowHeight, reference, side, align, defaultPosition, trigger, ev);
27873
27478
  const padding = size === 'cover' ? 0 : POPOVER_IOS_BODY_PADDING;
27874
- const rawSafeArea = getSafeAreaInsets(doc);
27875
- const safeArea = size === 'cover'
27876
- ? { top: 0, bottom: 0, left: 0, right: 0 }
27877
- : {
27878
- top: Math.max(rawSafeArea.top, POPOVER_IOS_MIN_EDGE_MARGIN),
27879
- bottom: Math.max(rawSafeArea.bottom, POPOVER_IOS_MIN_EDGE_MARGIN),
27880
- left: Math.max(rawSafeArea.left, POPOVER_IOS_MIN_EDGE_MARGIN),
27881
- right: Math.max(rawSafeArea.right, POPOVER_IOS_MIN_EDGE_MARGIN),
27882
- };
27883
- 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);
27479
+ const margin = size === 'cover' ? 0 : 25;
27480
+ 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);
27884
27481
  const baseAnimation = createAnimation();
27885
27482
  const backdropAnimation = createAnimation();
27886
27483
  const contentAnimation = createAnimation();
@@ -27911,14 +27508,10 @@ const iosEnterAnimation$1 = (baseEl, opts) => {
27911
27508
  baseEl.classList.add('popover-bottom');
27912
27509
  }
27913
27510
  if (bottom !== undefined) {
27914
- let bottomValue = `${bottom}px`;
27915
- if (checkSafeAreaBottom) {
27916
- bottomValue = `${bottom}px + var(--ion-safe-area-bottom, 0px)`;
27917
- }
27918
- contentEl.style.setProperty('bottom', `calc(${bottomValue})`);
27511
+ contentEl.style.setProperty('bottom', `${bottom}px`);
27919
27512
  }
27920
- const safeAreaLeft = ' + var(--ion-safe-area-left, 0px)';
27921
- const safeAreaRight = ' - var(--ion-safe-area-right, 0px)';
27513
+ const safeAreaLeft = ' + var(--ion-safe-area-left, 0)';
27514
+ const safeAreaRight = ' - var(--ion-safe-area-right, 0)';
27922
27515
  let leftValue = `${left}px`;
27923
27516
  if (checkSafeAreaLeft) {
27924
27517
  leftValue = `${left}px${safeAreaLeft}`;
@@ -27926,11 +27519,7 @@ const iosEnterAnimation$1 = (baseEl, opts) => {
27926
27519
  if (checkSafeAreaRight) {
27927
27520
  leftValue = `${left}px${safeAreaRight}`;
27928
27521
  }
27929
- let topValue = `${top}px`;
27930
- if (checkSafeAreaTop) {
27931
- topValue = `${top}px + var(--ion-safe-area-top, 0px)`;
27932
- }
27933
- contentEl.style.setProperty('top', `calc(${topValue} + var(--offset-y, 0))`);
27522
+ contentEl.style.setProperty('top', `calc(${top}px + var(--offset-y, 0))`);
27934
27523
  contentEl.style.setProperty('left', `calc(${leftValue} + var(--offset-x, 0))`);
27935
27524
  contentEl.style.setProperty('transform-origin', `${originY} ${originX}`);
27936
27525
  if (arrowEl !== null) {
@@ -28006,23 +27595,7 @@ const mdEnterAnimation$1 = (baseEl, opts) => {
28006
27595
  };
28007
27596
  const results = getPopoverPosition(isRTL, contentWidth, contentHeight, 0, 0, reference, side, align, defaultPosition, trigger, ev);
28008
27597
  const padding = size === 'cover' ? 0 : POPOVER_MD_BODY_PADDING;
28009
- // MD mode now applies safe-area insets (previously passed 0, ignoring all safe areas).
28010
- // This is needed for Android edge-to-edge (API 36+) where system bars overlap content.
28011
- const safeArea = size === 'cover' ? { top: 0, bottom: 0, left: 0, right: 0 } : getSafeAreaInsets(doc);
28012
- 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);
28013
- const safeAreaLeftCalc = ' + var(--ion-safe-area-left, 0px)';
28014
- const safeAreaRightCalc = ' - var(--ion-safe-area-right, 0px)';
28015
- let leftValue = `${left}px`;
28016
- if (checkSafeAreaLeft) {
28017
- leftValue = `${left}px${safeAreaLeftCalc}`;
28018
- }
28019
- if (checkSafeAreaRight) {
28020
- leftValue = `${left}px${safeAreaRightCalc}`;
28021
- }
28022
- let topValue = `${top}px`;
28023
- if (checkSafeAreaTop) {
28024
- topValue = `${top}px + var(--ion-safe-area-top, 0px)`;
28025
- }
27598
+ const { originX, originY, top, left, bottom } = calculateWindowAdjustment(side, results.top, results.left, padding, bodyWidth, bodyHeight, contentWidth, contentHeight, 0, results.originX, results.originY, results.referenceCoordinates);
28026
27599
  const baseAnimation = createAnimation();
28027
27600
  const backdropAnimation = createAnimation();
28028
27601
  const wrapperAnimation = createAnimation();
@@ -28039,17 +27612,13 @@ const mdEnterAnimation$1 = (baseEl, opts) => {
28039
27612
  contentAnimation
28040
27613
  .addElement(contentEl)
28041
27614
  .beforeStyles({
28042
- top: `calc(${topValue} + var(--offset-y, 0px))`,
28043
- left: `calc(${leftValue} + var(--offset-x, 0px))`,
27615
+ top: `calc(${top}px + var(--offset-y, 0px))`,
27616
+ left: `calc(${left}px + var(--offset-x, 0px))`,
28044
27617
  'transform-origin': `${originY} ${originX}`,
28045
27618
  })
28046
27619
  .beforeAddWrite(() => {
28047
27620
  if (bottom !== undefined) {
28048
- let bottomValue = `${bottom}px`;
28049
- if (checkSafeAreaBottom) {
28050
- bottomValue = `${bottom}px + var(--ion-safe-area-bottom, 0px)`;
28051
- }
28052
- contentEl.style.setProperty('bottom', `calc(${bottomValue})`);
27621
+ contentEl.style.setProperty('bottom', `${bottom}px`);
28053
27622
  }
28054
27623
  })
28055
27624
  .fromTo('transform', 'scale(0.8)', 'scale(1)');
@@ -28061,7 +27630,7 @@ const mdEnterAnimation$1 = (baseEl, opts) => {
28061
27630
  if (size === 'cover') {
28062
27631
  baseEl.style.setProperty('--width', `${contentWidth}px`);
28063
27632
  }
28064
- if (addPopoverBottomClass) {
27633
+ if (originY === 'bottom') {
28065
27634
  baseEl.classList.add('popover-bottom');
28066
27635
  }
28067
27636
  })
@@ -28557,9 +28126,9 @@ class Popover {
28557
28126
  const { onLifecycle, parentPopover, dismissOnSelect, side, arrow, htmlAttributes, focusTrap } = this;
28558
28127
  const desktop = isPlatform('desktop');
28559
28128
  const enableArrow = arrow && !parentPopover;
28560
- return (hAsync(Host, Object.assign({ key: '42863f748c93f709d433931d969230137b37d42d', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
28129
+ return (hAsync(Host, Object.assign({ key: '2edd8333c630efbce59071f8a383e4326e928dbc', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
28561
28130
  zIndex: `${20000 + this.overlayIndex}`,
28562
- }, 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' })))));
28131
+ }, 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' })))));
28563
28132
  }
28564
28133
  get el() { return getElement(this); }
28565
28134
  static get watchers() { return {
@@ -28664,7 +28233,7 @@ class ProgressBar {
28664
28233
  const mode = getIonMode$1(this);
28665
28234
  // If the progress is displayed as a solid bar.
28666
28235
  const progressSolid = buffer === 1;
28667
- return (hAsync(Host, { key: 'dc69693b5d2dcb2b6e4296d7cb85bc27507f3fa6', role: "progressbar", "aria-valuenow": type === 'determinate' ? value : null, "aria-valuemin": "0", "aria-valuemax": "1", class: createColorClasses$1(color, {
28236
+ return (hAsync(Host, { key: 'c859e48f3d24a458239e36d925e5dc003ed07c6b', role: "progressbar", "aria-valuenow": type === 'determinate' ? value : null, "aria-valuemin": "0", "aria-valuemax": "1", class: createColorClasses$1(color, {
28668
28237
  [mode]: true,
28669
28238
  [`progress-bar-${type}`]: true,
28670
28239
  'progress-paused': paused,
@@ -28849,7 +28418,7 @@ class Radio {
28849
28418
  const { checked, disabled, color, el, justify, labelPlacement, hasLabel, buttonTabindex, alignment } = this;
28850
28419
  const mode = getIonMode$1(this);
28851
28420
  const inItem = hostContext('ion-item', el);
28852
- return (hAsync(Host, { key: '3353b28172b7f837d4b38964169b5b5f4ba02788', onFocus: this.onFocus, onBlur: this.onBlur, onClick: this.onClick, class: createColorClasses$1(color, {
28421
+ return (hAsync(Host, { key: 'af5dc59ed528150872e907ed1036e3e2decba939', onFocus: this.onFocus, onBlur: this.onBlur, onClick: this.onClick, class: createColorClasses$1(color, {
28853
28422
  [mode]: true,
28854
28423
  'in-item': inItem,
28855
28424
  'radio-checked': checked,
@@ -28860,10 +28429,10 @@ class Radio {
28860
28429
  // Focus and active styling should not apply when the radio is in an item
28861
28430
  'ion-activatable': !inItem,
28862
28431
  'ion-focusable': !inItem,
28863
- }), 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: {
28432
+ }), 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: {
28864
28433
  'label-text-wrapper': true,
28865
28434
  'label-text-wrapper-hidden': !hasLabel,
28866
- }, part: "label" }, hAsync("slot", { key: '10b157162cd283d624153c747679609cf0bbf11e' })), hAsync("div", { key: '4c45cca95cb105cd6df1025a26e3c045272184a0', class: "native-wrapper" }, this.renderRadioControl()))));
28435
+ }, part: "label" }, hAsync("slot", { key: '0a4613d29aa783d1882cf889377f7e4fd4fea51d' })), hAsync("div", { key: '191faea79dc4cd8befc4b873f5bd9f5af8ca2acc', class: "native-wrapper" }, this.renderRadioControl()))));
28867
28436
  }
28868
28437
  get el() { return getElement(this); }
28869
28438
  static get watchers() { return {
@@ -29102,7 +28671,7 @@ class RadioGroup {
29102
28671
  const { label, labelId, el, name, value } = this;
29103
28672
  const mode = getIonMode$1(this);
29104
28673
  renderHiddenInput(true, el, name, value, false);
29105
- 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' }))));
28674
+ 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' })));
29106
28675
  }
29107
28676
  get el() { return getElement(this); }
29108
28677
  static get watchers() { return {
@@ -29862,7 +29431,7 @@ class Range {
29862
29431
  const needsEndAdjustment = inItem && !hasEndContent;
29863
29432
  const mode = getIonMode$1(this);
29864
29433
  renderHiddenInput(true, el, this.name, JSON.stringify(this.getValue()), disabled);
29865
- return (hAsync(Host, { key: 'ef7b01f80515bcaeb2983934ad7f10a6bd5d13ec', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: createColorClasses$1(this.color, {
29434
+ return (hAsync(Host, { key: 'affcac4709096a48a5b4c1864b209b6352f6b078', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: createColorClasses$1(this.color, {
29866
29435
  [mode]: true,
29867
29436
  'in-item': inItem,
29868
29437
  'range-disabled': disabled,
@@ -29871,10 +29440,10 @@ class Range {
29871
29440
  [`range-label-placement-${labelPlacement}`]: true,
29872
29441
  'range-item-start-adjustment': needsStartAdjustment,
29873
29442
  'range-item-end-adjustment': needsEndAdjustment,
29874
- }) }, hAsync("label", { key: 'fd8aa90a9d52be9da024b907e68858dae424449d', class: "range-wrapper", id: "range-label" }, hAsync("div", { key: '2172b4f329c22017dd23475c80aac25ba6e753eb', class: {
29443
+ }) }, hAsync("label", { key: 'c7cf95fa831d10b17c137995d0a9e0cf84006a76', class: "range-wrapper", id: "range-label" }, hAsync("div", { key: '5b8479c7939ae0f94a042c3aafd64316e4577d30', class: {
29875
29444
  'label-text-wrapper': true,
29876
29445
  'label-text-wrapper-hidden': !hasLabel,
29877
- }, 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" })))));
29446
+ }, 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" })))));
29878
29447
  }
29879
29448
  get el() { return getElement(this); }
29880
29449
  static get watchers() { return {
@@ -30841,7 +30410,7 @@ class Refresher {
30841
30410
  }
30842
30411
  render() {
30843
30412
  const mode = getIonMode$1(this);
30844
- return (hAsync(Host, { key: '2d1bd880877b698604542ab2d602d38b9504d975', slot: "fixed", class: {
30413
+ return (hAsync(Host, { key: '06d61cc53260ce146dd6906cc96597e9baaa17cf', slot: "fixed", class: {
30845
30414
  [mode]: true,
30846
30415
  // Used internally for styling
30847
30416
  [`refresher-${mode}`]: true,
@@ -31065,7 +30634,7 @@ class RefresherContent {
31065
30634
  const pullingIcon = this.pullingIcon;
31066
30635
  const hasSpinner = pullingIcon != null && SPINNERS[pullingIcon] !== undefined;
31067
30636
  const mode = getIonMode$1(this);
31068
- 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())));
30637
+ 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())));
31069
30638
  }
31070
30639
  get el() { return getElement(this); }
31071
30640
  static get cmpMeta() { return {
@@ -31106,7 +30675,7 @@ class Reorder {
31106
30675
  render() {
31107
30676
  const mode = getIonMode$1(this);
31108
30677
  const reorderIcon = mode === 'ios' ? reorderThreeOutline : reorderTwoSharp;
31109
- 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" }))));
30678
+ 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" }))));
31110
30679
  }
31111
30680
  get el() { return getElement(this); }
31112
30681
  static get style() { return {
@@ -31377,7 +30946,7 @@ class ReorderGroup {
31377
30946
  }
31378
30947
  render() {
31379
30948
  const mode = getIonMode$1(this);
31380
- return (hAsync(Host, { key: 'b9641f3061d67fbfe68317b901ec33267046e073', class: {
30949
+ return (hAsync(Host, { key: '9527bbdedaab63d31f562c874a7332ea60c4b47b', class: {
31381
30950
  [mode]: true,
31382
30951
  'reorder-enabled': !this.disabled,
31383
30952
  'reorder-list-active': this.state !== 0 /* ReorderGroupState.Idle */,
@@ -31493,7 +31062,7 @@ class RippleEffect {
31493
31062
  }
31494
31063
  render() {
31495
31064
  const mode = getIonMode$1(this);
31496
- return (hAsync(Host, { key: 'ae9d3b1ed6773a9b9bb2267129f7e9af23b6c9fc', role: "presentation", class: {
31065
+ return (hAsync(Host, { key: '3b59cbb44741569a7350f9638b4392add673b6f1', role: "presentation", class: {
31497
31066
  [mode]: true,
31498
31067
  unbounded: this.unbounded,
31499
31068
  } }));
@@ -32452,10 +32021,10 @@ class RouterLink {
32452
32021
  rel: this.rel,
32453
32022
  target: this.target,
32454
32023
  };
32455
- return (hAsync(Host, { key: 'd7f2affcde45c5fbb6cb46cd1c30008ee92a68c5', onClick: this.onClick, class: createColorClasses$1(this.color, {
32024
+ return (hAsync(Host, { key: '8372835161d507c7b821b7536c55f912eb6ce704', onClick: this.onClick, class: createColorClasses$1(this.color, {
32456
32025
  [mode]: true,
32457
32026
  'ion-activatable': true,
32458
- }) }, hAsync("a", Object.assign({ key: 'babafae85ca5c6429958d383feff0493ff8cf33e' }, attrs), hAsync("slot", { key: '50314e9555bbf6dffa0c50c3f763009dee59b10b' }))));
32027
+ }) }, hAsync("a", Object.assign({ key: '315966e14a17760f3f64197e8315200039787897' }, attrs), hAsync("slot", { key: '95fc1697b884225e85e647dddcaa8f4af8b9a979' }))));
32459
32028
  }
32460
32029
  static get style() { return routerLinkCss; }
32461
32030
  static get cmpMeta() { return {
@@ -32652,7 +32221,7 @@ class RouterOutlet {
32652
32221
  return true;
32653
32222
  }
32654
32223
  render() {
32655
- return hAsync("slot", { key: '84b50f1155b0d780dff802ee13223287259fd525' });
32224
+ return hAsync("slot", { key: '386c41745b61daba161cf75063da97fe29ba36cb' });
32656
32225
  }
32657
32226
  get el() { return getElement(this); }
32658
32227
  static get watchers() { return {
@@ -32685,7 +32254,7 @@ class Row {
32685
32254
  registerInstance(this, hostRef);
32686
32255
  }
32687
32256
  render() {
32688
- return (hAsync(Host, { key: '65592a79621bd8f75f9566db3e8c05a4b8fc6048', class: getIonMode$1(this) }, hAsync("slot", { key: '56f09784db7a0299c9ce76dfcede185b295251ff' })));
32257
+ return (hAsync(Host, { key: '8ba906a8cbea060a79ed658c9bf34906f0c11d38', class: getIonMode$1(this) }, hAsync("slot", { key: 'd1009176f45b588fa52c7d9eb336f3c6d3214bb8' })));
32689
32258
  }
32690
32259
  static get style() { return rowCss; }
32691
32260
  static get cmpMeta() { return {
@@ -33126,8 +32695,8 @@ class Searchbar {
33126
32695
  const clearIcon = this.clearIcon || (mode === 'ios' ? closeCircle : closeSharp);
33127
32696
  const searchIcon = this.searchIcon || (mode === 'ios' ? searchOutline : searchSharp);
33128
32697
  const shouldShowCancelButton = this.shouldShowCancelButton();
33129
- 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))));
33130
- return (hAsync(Host, { key: '074aa60e051bfb3225e87d44bbb6346c59c73574', role: "search", "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses$1(this.color, {
32698
+ 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))));
32699
+ return (hAsync(Host, { key: 'bcc5b33a2859903ba11bfc5c611c6a2aaa71d06b', role: "search", "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses$1(this.color, {
33131
32700
  [mode]: true,
33132
32701
  'searchbar-animated': animated,
33133
32702
  'searchbar-disabled': this.disabled,
@@ -33137,14 +32706,14 @@ class Searchbar {
33137
32706
  'searchbar-has-focus': this.focused,
33138
32707
  'searchbar-should-show-clear': this.shouldShowClearButton(),
33139
32708
  'searchbar-should-show-cancel': this.shouldShowCancelButton(),
33140
- }) }, 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) => {
32709
+ }) }, 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) => {
33141
32710
  /**
33142
32711
  * This prevents mobile browsers from
33143
32712
  * blurring the input when the clear
33144
32713
  * button is activated.
33145
32714
  */
33146
32715
  ev.preventDefault();
33147
- }, 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));
32716
+ }, 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));
33148
32717
  }
33149
32718
  get el() { return getElement(this); }
33150
32719
  static get watchers() { return {
@@ -33739,14 +33308,14 @@ class Segment {
33739
33308
  }
33740
33309
  render() {
33741
33310
  const mode = getIonMode$1(this);
33742
- return (hAsync(Host, { key: 'e67ed512739cf2cfe657b0c44ebc3dfb1e9fbb79', role: "tablist", onClick: this.onClick, class: createColorClasses$1(this.color, {
33311
+ return (hAsync(Host, { key: '725cc37b25c539fa5e3ae8d90530ae33ededc3de', role: "tablist", onClick: this.onClick, class: createColorClasses$1(this.color, {
33743
33312
  [mode]: true,
33744
33313
  'in-toolbar': hostContext('ion-toolbar', this.el),
33745
33314
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
33746
33315
  'segment-activated': this.activated,
33747
33316
  'segment-disabled': this.disabled,
33748
33317
  'segment-scrollable': this.scrollable,
33749
- }) }, hAsync("slot", { key: '804d8acfcb9abfeeee38244b015fbc5c36330b9e', onSlotchange: this.onSlottedItemsChange })));
33318
+ }) }, hAsync("slot", { key: 'c51cf7ea50325866a9367d214e12bc3754870335', onSlotchange: this.onSlottedItemsChange })));
33750
33319
  }
33751
33320
  get el() { return getElement(this); }
33752
33321
  static get watchers() { return {
@@ -33886,7 +33455,7 @@ class SegmentButton {
33886
33455
  const { checked, type, disabled, hasIcon, hasLabel, layout, segmentEl } = this;
33887
33456
  const mode = getIonMode$1(this);
33888
33457
  const hasSegmentColor = () => (segmentEl === null || segmentEl === void 0 ? void 0 : segmentEl.color) !== undefined;
33889
- return (hAsync(Host, { key: '26cb7ee90455bcaa6416125802d7e5729fa05b5b', class: {
33458
+ return (hAsync(Host, { key: 'f69e2a24198a7c57543dbe66902da039a6569c64', class: {
33890
33459
  [mode]: true,
33891
33460
  'in-toolbar': hostContext('ion-toolbar', this.el),
33892
33461
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
@@ -33902,7 +33471,7 @@ class SegmentButton {
33902
33471
  'ion-activatable': true,
33903
33472
  'ion-activatable-instant': true,
33904
33473
  'ion-focusable': true,
33905
- } }, 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" }))));
33474
+ } }, 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" }))));
33906
33475
  }
33907
33476
  get el() { return getElement(this); }
33908
33477
  static get watchers() { return {
@@ -33937,7 +33506,7 @@ class SegmentContent {
33937
33506
  registerInstance(this, hostRef);
33938
33507
  }
33939
33508
  render() {
33940
- return (hAsync(Host, { key: 'db6876f2aee7afa1ea8bc147337670faa68fae1c' }, hAsync("slot", { key: 'bc05714a973a5655668679033f5809a1da6db8cc' })));
33509
+ return (hAsync(Host, { key: '665f41a854621f898eaf7ba9a49e77cc9326501e' }, hAsync("slot", { key: '635aa57fbf6167dcd36fe8dc5dfc1c313637ac04' })));
33941
33510
  }
33942
33511
  static get style() { return segmentContentCss; }
33943
33512
  static get cmpMeta() { return {
@@ -34052,10 +33621,10 @@ class SegmentView {
34052
33621
  }
34053
33622
  render() {
34054
33623
  const { disabled, isManualScroll } = this;
34055
- return (hAsync(Host, { key: 'e180b67bb3143a5f4611fb358c037be6fc782a8f', class: {
33624
+ return (hAsync(Host, { key: '1c9bfce83967a93d63c225031a5cd688509d8fc8', class: {
34056
33625
  'segment-view-disabled': disabled,
34057
33626
  'segment-view-scroll-disabled': isManualScroll === false,
34058
- } }, hAsync("slot", { key: '41c11d6a7406a10f5c64a2e73abfc072afd8fc73' })));
33627
+ } }, hAsync("slot", { key: '19fee034e76fffbdb5f622cb514037c00f9d55d5' })));
34059
33628
  }
34060
33629
  get el() { return getElement(this); }
34061
33630
  static get style() { return {
@@ -34822,7 +34391,7 @@ class Select {
34822
34391
  * TODO(FW-5592): Remove hasStartEndSlots condition
34823
34392
  */
34824
34393
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || isExpanded || hasStartEndSlots));
34825
- return (hAsync(Host, { key: 'd8026835993d0e6dce747098f741a06ae4e4f54d', onClick: this.onClick, class: createColorClasses$1(this.color, {
34394
+ return (hAsync(Host, { key: '9f0a833ebc3df27a42146b07bcbb181c05f5e5c4', onClick: this.onClick, class: createColorClasses$1(this.color, {
34826
34395
  [mode]: true,
34827
34396
  'in-item': inItem,
34828
34397
  'in-item-color': hostContext('ion-item.ion-color', el),
@@ -34840,7 +34409,7 @@ class Select {
34840
34409
  [`select-justify-${justify}`]: justifyEnabled,
34841
34410
  [`select-shape-${shape}`]: shape !== undefined,
34842
34411
  [`select-label-placement-${labelPlacement}`]: true,
34843
- }) }, 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()));
34412
+ }) }, 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()));
34844
34413
  }
34845
34414
  get el() { return getElement(this); }
34846
34415
  static get watchers() { return {
@@ -35001,7 +34570,7 @@ class SelectModal {
35001
34570
  } }, option.text))));
35002
34571
  }
35003
34572
  render() {
35004
- 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()))));
34573
+ 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()))));
35005
34574
  }
35006
34575
  get el() { return getElement(this); }
35007
34576
  static get style() { return {
@@ -35035,7 +34604,7 @@ class SelectOption {
35035
34604
  this.disabled = false;
35036
34605
  }
35037
34606
  render() {
35038
- return hAsync(Host, { key: '3a70eea9fa03a9acba582180761d18347c72acee', role: "option", id: this.inputId, class: getIonMode$1(this) });
34607
+ return hAsync(Host, { key: '824730b6c1e4f15b716e91b05840e890af5f1577', role: "option", id: this.inputId, class: getIonMode$1(this) });
35039
34608
  }
35040
34609
  get el() { return getElement(this); }
35041
34610
  static get style() { return selectOptionCss; }
@@ -35152,7 +34721,7 @@ class SelectPopover {
35152
34721
  render() {
35153
34722
  const { header, message, options, subHeader } = this;
35154
34723
  const hasSubHeaderOrMessage = subHeader !== undefined || message !== undefined;
35155
- 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))));
34724
+ 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))));
35156
34725
  }
35157
34726
  get el() { return getElement(this); }
35158
34727
  static get style() { return {
@@ -35202,11 +34771,11 @@ class SkeletonText {
35202
34771
  const animated = this.animated && config.getBoolean('animated', true);
35203
34772
  const inMedia = hostContext('ion-avatar', this.el) || hostContext('ion-thumbnail', this.el);
35204
34773
  const mode = getIonMode$1(this);
35205
- return (hAsync(Host, { key: 'd86ef7392507cdbf48dfd3a71f02d7a83eda4aae', class: {
34774
+ return (hAsync(Host, { key: 'cb8da9aba121811b9a4ffdae60ed88105897cb3c', class: {
35206
34775
  [mode]: true,
35207
34776
  'skeleton-text-animated': animated,
35208
34777
  'in-media': inMedia,
35209
- } }, hAsync("span", { key: '8e8b5a232a6396d2bba691b05f9de4da44b2965c' }, "\u00A0")));
34778
+ } }, hAsync("span", { key: '5379deee3c76d46d615be0cba14b4f60129ffa25' }, "\u00A0")));
35210
34779
  }
35211
34780
  get el() { return getElement(this); }
35212
34781
  static get style() { return skeletonTextCss; }
@@ -35258,7 +34827,7 @@ class Spinner {
35258
34827
  svgs.push(buildLine(spinner, duration, i, spinner.lines));
35259
34828
  }
35260
34829
  }
35261
- return (hAsync(Host, { key: 'a33d6421fcc885995fbc7a348516525f68ca496c', class: createColorClasses$1(self.color, {
34830
+ return (hAsync(Host, { key: 'dd1954e557fa14b943e761474e29e4316ba53938', class: createColorClasses$1(self.color, {
35262
34831
  [mode]: true,
35263
34832
  [`spinner-${spinnerName}`]: true,
35264
34833
  'spinner-paused': self.paused || config.getBoolean('_testing'),
@@ -35357,12 +34926,12 @@ class SplitPane {
35357
34926
  }
35358
34927
  render() {
35359
34928
  const mode = getIonMode$1(this);
35360
- return (hAsync(Host, { key: 'd5e30df12f1f1f855da4c66f98076b9dce762c59', class: {
34929
+ return (hAsync(Host, { key: '05c88c009fbe2e223fd261760a2b49da1653ff62', class: {
35361
34930
  [mode]: true,
35362
34931
  // Used internally for styling
35363
34932
  [`split-pane-${mode}`]: true,
35364
34933
  'split-pane-visible': this.visible,
35365
- } }, hAsync("slot", { key: '3e30d7cf3bc1cf434e16876a0cb2a36377b8e00f' })));
34934
+ } }, hAsync("slot", { key: 'b35865082661253c4468520d79234fa5dab5bd35' })));
35366
34935
  }
35367
34936
  get el() { return getElement(this); }
35368
34937
  static get watchers() { return {
@@ -35428,10 +34997,10 @@ class Tab {
35428
34997
  }
35429
34998
  render() {
35430
34999
  const { tab, active, component } = this;
35431
- return (hAsync(Host, { key: 'dbad8fe9f1566277d14647626308eaf1601ab01f', role: "tabpanel", "aria-hidden": !active ? 'true' : null, "aria-labelledby": `tab-button-${tab}`, class: {
35000
+ return (hAsync(Host, { key: 'fbd837bad7a0632336d46a597ace23673b153e48', role: "tabpanel", "aria-hidden": !active ? 'true' : null, "aria-labelledby": `tab-button-${tab}`, class: {
35432
35001
  'ion-page': component === undefined,
35433
35002
  'tab-hidden': !active,
35434
- } }, hAsync("slot", { key: '3be64f4e7161f6769aaf8e4dcb5293fcaa09af45' })));
35003
+ } }, hAsync("slot", { key: '35c218169fda826c9c1337558e0278d0c7f5f26a' })));
35435
35004
  }
35436
35005
  get el() { return getElement(this); }
35437
35006
  static get watchers() { return {
@@ -35543,11 +35112,11 @@ class TabBar {
35543
35112
  const { color, translucent, keyboardVisible } = this;
35544
35113
  const mode = getIonMode$1(this);
35545
35114
  const shouldHide = keyboardVisible && this.el.getAttribute('slot') !== 'top';
35546
- return (hAsync(Host, { key: '9daf4e2acaff6e3ce3878cf9dd5109fb1afbbebe', role: "tablist", "aria-hidden": shouldHide ? 'true' : null, class: createColorClasses$1(color, {
35115
+ return (hAsync(Host, { key: '24e164eaf81a0bec9237b561465618f10990806c', role: "tablist", "aria-hidden": shouldHide ? 'true' : null, class: createColorClasses$1(color, {
35547
35116
  [mode]: true,
35548
35117
  'tab-bar-translucent': translucent,
35549
35118
  'tab-bar-hidden': shouldHide,
35550
- }) }, hAsync("slot", { key: '1d15aa2da8501e8e7eff11ad4a491478be845c43' })));
35119
+ }) }, hAsync("slot", { key: '0ca29a2d97a7c38bbf43f8d79e271b874b4d9be8' })));
35551
35120
  }
35552
35121
  get el() { return getElement(this); }
35553
35122
  static get watchers() { return {
@@ -35643,7 +35212,7 @@ class TabButton {
35643
35212
  rel,
35644
35213
  target,
35645
35214
  };
35646
- return (hAsync(Host, { key: 'ce9d29ced0c781d6b2fa62cd5feb801c11fc42e8', onClick: this.onClick, onKeyup: this.onKeyUp, id: tab !== undefined ? `tab-button-${tab}` : null, class: {
35215
+ return (hAsync(Host, { key: '638b93ef40701ec3aefb89b1579eb91aaf6d4f8a', onClick: this.onClick, onKeyup: this.onKeyUp, id: tab !== undefined ? `tab-button-${tab}` : null, class: {
35647
35216
  [mode]: true,
35648
35217
  'tab-selected': selected,
35649
35218
  'tab-disabled': disabled,
@@ -35655,7 +35224,7 @@ class TabButton {
35655
35224
  'ion-activatable': true,
35656
35225
  'ion-selectable': true,
35657
35226
  'ion-focusable': true,
35658
- } }, 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" }))));
35227
+ } }, 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" }))));
35659
35228
  }
35660
35229
  get el() { return getElement(this); }
35661
35230
  static get style() { return {
@@ -35846,7 +35415,7 @@ class Tabs {
35846
35415
  return Array.from(this.el.querySelectorAll('ion-tab'));
35847
35416
  }
35848
35417
  render() {
35849
- 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" })));
35418
+ 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" })));
35850
35419
  }
35851
35420
  get el() { return getElement(this); }
35852
35421
  static get style() { return tabsCss; }
@@ -35886,9 +35455,9 @@ class Text {
35886
35455
  }
35887
35456
  render() {
35888
35457
  const mode = getIonMode$1(this);
35889
- return (hAsync(Host, { key: '361035eae7b92dc109794348d39bad2f596eb6be', class: createColorClasses$1(this.color, {
35458
+ return (hAsync(Host, { key: 'bfaa49d35f43b8036725ae8a322c716fc6e43bdf', class: createColorClasses$1(this.color, {
35890
35459
  [mode]: true,
35891
- }) }, hAsync("slot", { key: 'c7b8835cf485ba9ecd73298f0529276ce1ea0852' })));
35460
+ }) }, hAsync("slot", { key: 'c04880cd1935b42cbe60f58fd523b4d8a96072dc' })));
35892
35461
  }
35893
35462
  static get style() { return textCss; }
35894
35463
  static get cmpMeta() { return {
@@ -36349,7 +35918,7 @@ class Textarea {
36349
35918
  * TODO(FW-5592): Remove hasStartEndSlots condition
36350
35919
  */
36351
35920
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
36352
- return (hAsync(Host, { key: 'a70a62d7aae3831a50acd74f60b930925ada1326', class: createColorClasses$1(this.color, {
35921
+ return (hAsync(Host, { key: '2c9de566803dd007cee3639ddd04accb68663b32', class: createColorClasses$1(this.color, {
36353
35922
  [mode]: true,
36354
35923
  'has-value': hasValue,
36355
35924
  'has-focus': hasFocus,
@@ -36358,7 +35927,7 @@ class Textarea {
36358
35927
  [`textarea-shape-${shape}`]: shape !== undefined,
36359
35928
  [`textarea-label-placement-${labelPlacement}`]: true,
36360
35929
  'textarea-disabled': disabled,
36361
- }) }, 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()));
35930
+ }) }, 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()));
36362
35931
  }
36363
35932
  get el() { return getElement(this); }
36364
35933
  static get watchers() { return {
@@ -36421,7 +35990,7 @@ class Thumbnail {
36421
35990
  registerInstance(this, hostRef);
36422
35991
  }
36423
35992
  render() {
36424
- return (hAsync(Host, { key: '70ada828e8cf541ab3b47f94b7e56ce34114ef88', class: getIonMode$1(this) }, hAsync("slot", { key: 'c43e105669d2bae123619b616f3af8ca2f722d61' })));
35993
+ return (hAsync(Host, { key: 'b250e01664238f1dca8f9757b15bc3d5d9387ffa', class: getIonMode$1(this) }, hAsync("slot", { key: '72cb568bccabc983c5186a7596ef6c6d4ebf5ad9' })));
36425
35994
  }
36426
35995
  static get style() { return thumbnailCss; }
36427
35996
  static get cmpMeta() { return {
@@ -37279,9 +36848,9 @@ class Toast {
37279
36848
  if (layout === 'stacked' && startButtons.length > 0 && endButtons.length > 0) {
37280
36849
  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);
37281
36850
  }
37282
- return (hAsync(Host, Object.assign({ key: 'd1ecd90c87700aad4685e230cdd430aa286b8791', tabindex: "-1" }, this.htmlAttributes, { style: {
36851
+ return (hAsync(Host, Object.assign({ key: '4a303f9ebb69614e9dca677d9d80a4a275de0d85', tabindex: "-1" }, this.htmlAttributes, { style: {
37283
36852
  zIndex: `${60000 + this.overlayIndex}`,
37284
- }, 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')))));
36853
+ }, 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')))));
37285
36854
  }
37286
36855
  get el() { return getElement(this); }
37287
36856
  static get watchers() { return {
@@ -37593,7 +37162,7 @@ class Toggle {
37593
37162
  const value = this.getValue();
37594
37163
  const rtl = isRTL$1(el) ? 'rtl' : 'ltr';
37595
37164
  renderHiddenInput(true, el, name, checked ? value : '', disabled);
37596
- 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, {
37165
+ 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, {
37597
37166
  [mode]: true,
37598
37167
  'in-item': hostContext('ion-item', el),
37599
37168
  'toggle-activated': activated,
@@ -37603,10 +37172,10 @@ class Toggle {
37603
37172
  [`toggle-alignment-${alignment}`]: alignment !== undefined,
37604
37173
  [`toggle-label-placement-${labelPlacement}`]: true,
37605
37174
  [`toggle-${rtl}`]: true,
37606
- }) }, 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: {
37175
+ }) }, 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: {
37607
37176
  'label-text-wrapper': true,
37608
37177
  'label-text-wrapper-hidden': !hasLabel,
37609
- }, part: "label", id: inputLabelId, onClick: this.onDivLabelClick }, hAsync("slot", { key: '7b162b7dd27199cca2a4c995276a18b9f8e44aaf' }), this.renderHintText()), hAsync("div", { key: 'd13c34bd42fca01cc73ddb4ea7e471b33a282a3e', class: "native-wrapper" }, this.renderToggleControl()))));
37178
+ }, part: "label", id: inputLabelId, onClick: this.onDivLabelClick }, hAsync("slot", { key: '006dd3558264d69ab020c07005b348adc4ecdd5b' }), this.renderHintText()), hAsync("div", { key: 'dd4e52de31caabee41ec1bc58efecd1e213368c9', class: "native-wrapper" }, this.renderToggleControl()))));
37610
37179
  }
37611
37180
  get el() { return getElement(this); }
37612
37181
  static get watchers() { return {
@@ -37716,10 +37285,10 @@ class Toolbar {
37716
37285
  this.childrenStyles.forEach((value) => {
37717
37286
  Object.assign(childStyles, value);
37718
37287
  });
37719
- return (hAsync(Host, { key: 'f6c4f669a6a61c5eac4cbb5ea0aa97c48ae5bd46', class: Object.assign(Object.assign({}, childStyles), createColorClasses$1(this.color, {
37288
+ return (hAsync(Host, { key: 'b849db2863778dee6c5a251bffa1b3a657aeb036', class: Object.assign(Object.assign({}, childStyles), createColorClasses$1(this.color, {
37720
37289
  [mode]: true,
37721
37290
  'in-toolbar': hostContext('ion-toolbar', this.el),
37722
- })) }, 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" }))));
37291
+ })) }, 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" }))));
37723
37292
  }
37724
37293
  get el() { return getElement(this); }
37725
37294
  static get style() { return {
@@ -37765,11 +37334,11 @@ class ToolbarTitle {
37765
37334
  render() {
37766
37335
  const mode = getIonMode$1(this);
37767
37336
  const size = this.getSize();
37768
- return (hAsync(Host, { key: 'e599c0bf1b0817df3fa8360bdcd6d787f751c371', class: createColorClasses$1(this.color, {
37337
+ return (hAsync(Host, { key: '44e63f8439df64c470692904427b417e19406476', class: createColorClasses$1(this.color, {
37769
37338
  [mode]: true,
37770
37339
  [`title-${size}`]: true,
37771
37340
  'title-rtl': document.dir === 'rtl',
37772
- }) }, hAsync("div", { key: '6e7eee9047d6759876bb31d7305b76efc7c4338c', class: "toolbar-title" }, hAsync("slot", { key: 'bf790eb4c83dd0af4f2fd1f85ab4af5819f46ff4' }))));
37341
+ }) }, hAsync("div", { key: '784cf60a0db16045391891cc8fad0c7dbeba4039', class: "toolbar-title" }, hAsync("slot", { key: '0c720a50479ba257e8756337aeb9b0ab7516a227' }))));
37773
37342
  }
37774
37343
  get el() { return getElement(this); }
37775
37344
  static get watchers() { return {