voyager-ionic-core 8.4.3 → 8.5.0

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 (605) hide show
  1. package/components/alert.js +30 -4
  2. package/components/checkbox.js +40 -6
  3. package/components/helpers.js +17 -29
  4. package/components/index6.js +11 -3
  5. package/components/index9.js +1 -1
  6. package/components/ion-input.js +22 -9
  7. package/components/ion-item-divider.js +2 -2
  8. package/components/ion-item-group.js +1 -1
  9. package/components/ion-item-option.js +2 -2
  10. package/components/ion-item-options.js +1 -1
  11. package/components/ion-item-sliding.js +1 -1
  12. package/components/ion-loading.js +2 -2
  13. package/components/ion-menu-button.js +2 -2
  14. package/components/ion-menu-toggle.js +2 -2
  15. package/components/ion-menu.js +2 -2
  16. package/components/ion-nav-link.js +1 -1
  17. package/components/ion-nav.js +1 -1
  18. package/components/ion-note.js +2 -2
  19. package/components/ion-picker-legacy.js +2 -2
  20. package/components/ion-progress-bar.js +1 -1
  21. package/components/ion-range.js +28 -6
  22. package/components/ion-refresher-content.js +1 -1
  23. package/components/ion-refresher.js +1 -1
  24. package/components/ion-reorder-group.js +1 -1
  25. package/components/ion-reorder.js +1 -1
  26. package/components/ion-router-link.js +2 -2
  27. package/components/ion-router-outlet.js +1 -1
  28. package/components/ion-router.js +1 -1
  29. package/components/ion-row.js +1 -1
  30. package/components/ion-searchbar.js +4 -4
  31. package/components/ion-segment-button.js +40 -9
  32. package/components/ion-segment-content.js +1 -1
  33. package/components/ion-segment-view.js +2 -2
  34. package/components/ion-segment.js +2 -2
  35. package/components/ion-select-option.js +1 -1
  36. package/components/ion-select.js +87 -16
  37. package/components/ion-skeleton-text.js +2 -2
  38. package/components/ion-split-pane.js +2 -2
  39. package/components/ion-tab-bar.js +2 -2
  40. package/components/ion-tab-button.js +2 -2
  41. package/components/ion-tab.js +2 -2
  42. package/components/ion-tabs.js +1 -1
  43. package/components/ion-text.js +2 -2
  44. package/components/ion-textarea.js +21 -8
  45. package/components/ion-thumbnail.js +1 -1
  46. package/components/ion-toast.js +2 -2
  47. package/components/ion-toggle.js +41 -6
  48. package/components/ionic-global.js +3 -13
  49. package/components/label.js +2 -2
  50. package/components/list-header.js +2 -2
  51. package/components/modal.js +267 -35
  52. package/components/picker-column-option.js +2 -2
  53. package/components/picker-column2.js +2 -2
  54. package/components/popover.js +2 -2
  55. package/components/radio-group.js +39 -2
  56. package/components/radio.js +3 -3
  57. package/components/ripple-effect.js +1 -1
  58. package/components/select-modal.js +1 -1
  59. package/components/select-popover.js +1 -1
  60. package/components/spinner.js +1 -1
  61. package/components/title.js +2 -2
  62. package/components/toolbar.js +2 -2
  63. package/css/core.css.map +1 -1
  64. package/css/ionic.bundle.css.map +1 -1
  65. package/dist/cjs/{app-globals-21afee77.js → app-globals-dd592863.js} +1 -1
  66. package/dist/cjs/{button-active-3f2f60b4.js → button-active-43e2b419.js} +1 -1
  67. package/dist/cjs/{data-21dc0f81.js → data-27cc2c9c.js} +1 -1
  68. package/dist/cjs/{framework-delegate-55f5683a.js → framework-delegate-11b0ba2f.js} +1 -1
  69. package/dist/cjs/{hardware-back-button-9e8a2c4f.js → hardware-back-button-5a99001f.js} +2 -2
  70. package/dist/cjs/{helpers-afaa9001.js → helpers-d0dfbb50.js} +18 -28
  71. package/dist/cjs/{index-73f75efb.js → index-2e236a04.js} +0 -4
  72. package/dist/cjs/{index-9509ecad.js → index-363fe6b2.js} +1 -1
  73. package/dist/cjs/{index-5915f9b3.js → index-48b2a28e.js} +11 -3
  74. package/dist/cjs/{index-5b6a7459.js → index-9b945a2d.js} +2 -2
  75. package/dist/cjs/{index-f05acd21.js → index-f68a486a.js} +6 -6
  76. package/dist/cjs/{index-8e789962.js → index-fd6383b6.js} +4 -4
  77. package/dist/cjs/index.cjs.js +11 -11
  78. package/dist/cjs/{input-shims-9e59ef62.js → input-shims-2d27a5be.js} +5 -3
  79. package/dist/cjs/{input.utils-611cde0b.js → input.utils-2f642324.js} +2 -2
  80. package/dist/cjs/ion-accordion_2.cjs.entry.js +4 -4
  81. package/dist/cjs/ion-action-sheet.cjs.entry.js +8 -8
  82. package/dist/cjs/ion-alert.cjs.entry.js +38 -12
  83. package/dist/cjs/ion-app_8.cjs.entry.js +18 -18
  84. package/dist/cjs/ion-avatar_3.cjs.entry.js +3 -3
  85. package/dist/cjs/ion-back-button.cjs.entry.js +3 -3
  86. package/dist/cjs/ion-backdrop.cjs.entry.js +2 -2
  87. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +3 -3
  88. package/dist/cjs/ion-button_2.cjs.entry.js +4 -4
  89. package/dist/cjs/ion-card_5.cjs.entry.js +3 -3
  90. package/dist/cjs/ion-checkbox.cjs.entry.js +40 -9
  91. package/dist/cjs/ion-chip.cjs.entry.js +2 -2
  92. package/dist/cjs/ion-col_3.cjs.entry.js +3 -3
  93. package/dist/cjs/ion-datetime-button.cjs.entry.js +5 -5
  94. package/dist/cjs/ion-datetime_3.cjs.entry.js +12 -12
  95. package/dist/cjs/ion-fab_3.cjs.entry.js +3 -3
  96. package/dist/cjs/ion-img.cjs.entry.js +3 -3
  97. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +5 -5
  98. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +3 -3
  99. package/dist/cjs/ion-input.cjs.entry.js +25 -13
  100. package/dist/cjs/ion-item-option_3.cjs.entry.js +9 -9
  101. package/dist/cjs/ion-item_8.cjs.entry.js +14 -14
  102. package/dist/cjs/ion-loading.cjs.entry.js +9 -9
  103. package/dist/cjs/ion-menu_3.cjs.entry.js +14 -14
  104. package/dist/cjs/ion-modal.cjs.entry.js +275 -44
  105. package/dist/cjs/ion-nav_2.cjs.entry.js +9 -9
  106. package/dist/cjs/ion-picker-column-option.cjs.entry.js +5 -5
  107. package/dist/cjs/ion-picker-column.cjs.entry.js +3 -3
  108. package/dist/cjs/ion-picker.cjs.entry.js +2 -2
  109. package/dist/cjs/ion-popover.cjs.entry.js +10 -10
  110. package/dist/cjs/ion-progress-bar.cjs.entry.js +4 -4
  111. package/dist/cjs/ion-radio_2.cjs.entry.js +42 -7
  112. package/dist/cjs/ion-range.cjs.entry.js +31 -10
  113. package/dist/cjs/ion-refresher_2.cjs.entry.js +7 -7
  114. package/dist/cjs/ion-reorder_2.cjs.entry.js +7 -7
  115. package/dist/cjs/ion-ripple-effect.cjs.entry.js +3 -3
  116. package/dist/cjs/ion-route_4.cjs.entry.js +5 -5
  117. package/dist/cjs/ion-searchbar.cjs.entry.js +7 -7
  118. package/dist/cjs/ion-segment-content.cjs.entry.js +2 -2
  119. package/dist/cjs/ion-segment-view.cjs.entry.js +3 -3
  120. package/dist/cjs/ion-segment_2.cjs.entry.js +44 -13
  121. package/dist/cjs/ion-select-modal.cjs.entry.js +8 -8
  122. package/dist/cjs/ion-select_3.cjs.entry.js +93 -25
  123. package/dist/cjs/ion-spinner.cjs.entry.js +3 -3
  124. package/dist/cjs/ion-split-pane.cjs.entry.js +4 -4
  125. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +7 -7
  126. package/dist/cjs/ion-tab_2.cjs.entry.js +6 -6
  127. package/dist/cjs/ion-text.cjs.entry.js +4 -4
  128. package/dist/cjs/ion-textarea.cjs.entry.js +24 -12
  129. package/dist/cjs/ion-toast.cjs.entry.js +9 -9
  130. package/dist/cjs/ion-toggle.cjs.entry.js +41 -9
  131. package/dist/cjs/{ionic-global-d9a8bb5b.js → ionic-global-acb665ad.js} +3 -13
  132. package/dist/cjs/ionic.cjs.js +4 -4
  133. package/dist/cjs/{ios.transition-cf40433b.js → ios.transition-f970164c.js} +5 -5
  134. package/dist/cjs/loader.cjs.js +4 -4
  135. package/dist/cjs/{md.transition-ededf99f.js → md.transition-aa8820dd.js} +5 -5
  136. package/dist/cjs/{notch-controller-d69150f5.js → notch-controller-58d2e557.js} +1 -1
  137. package/dist/cjs/{overlays-aa669eb8.js → overlays-737576a2.js} +5 -5
  138. package/dist/cjs/{status-tap-37681226.js → status-tap-08d1ac81.js} +5 -4
  139. package/dist/cjs/{swipe-back-f38a434a.js → swipe-back-5c0003bd.js} +1 -1
  140. package/dist/collection/components/alert/alert.js +34 -4
  141. package/dist/collection/components/checkbox/checkbox.ios.css +52 -15
  142. package/dist/collection/components/checkbox/checkbox.js +90 -4
  143. package/dist/collection/components/checkbox/checkbox.md.css +52 -15
  144. package/dist/collection/components/input/input.ios.css +3 -2
  145. package/dist/collection/components/input/input.js +18 -4
  146. package/dist/collection/components/input/input.md.css +7 -2
  147. package/dist/collection/components/item-divider/item-divider.js +2 -2
  148. package/dist/collection/components/item-group/item-group.js +1 -1
  149. package/dist/collection/components/item-option/item-option.js +2 -2
  150. package/dist/collection/components/item-options/item-options.js +1 -1
  151. package/dist/collection/components/item-sliding/item-sliding.js +1 -1
  152. package/dist/collection/components/label/label.js +2 -2
  153. package/dist/collection/components/list-header/list-header.js +2 -2
  154. package/dist/collection/components/loading/loading.js +2 -2
  155. package/dist/collection/components/menu/menu.js +2 -2
  156. package/dist/collection/components/menu-button/menu-button.js +2 -2
  157. package/dist/collection/components/menu-toggle/menu-toggle.js +2 -2
  158. package/dist/collection/components/modal/animations/ios.enter.js +50 -4
  159. package/dist/collection/components/modal/animations/ios.leave.js +24 -2
  160. package/dist/collection/components/modal/animations/md.enter.js +52 -5
  161. package/dist/collection/components/modal/animations/md.leave.js +26 -3
  162. package/dist/collection/components/modal/animations/sheet.js +11 -2
  163. package/dist/collection/components/modal/gestures/sheet.js +87 -10
  164. package/dist/collection/components/modal/modal.ios.css +16 -0
  165. package/dist/collection/components/modal/modal.js +32 -7
  166. package/dist/collection/components/modal/modal.md.css +6 -0
  167. package/dist/collection/components/nav/nav.js +1 -1
  168. package/dist/collection/components/nav-link/nav-link.js +1 -1
  169. package/dist/collection/components/note/note.js +2 -2
  170. package/dist/collection/components/picker-column-option/picker-column-option.js +2 -2
  171. package/dist/collection/components/picker-legacy/picker.js +2 -2
  172. package/dist/collection/components/picker-legacy-column/picker-column.js +2 -2
  173. package/dist/collection/components/popover/popover.js +2 -2
  174. package/dist/collection/components/progress-bar/progress-bar.js +1 -1
  175. package/dist/collection/components/radio/radio.js +3 -3
  176. package/dist/collection/components/radio-group/radio-group.ios.css +205 -0
  177. package/dist/collection/components/radio-group/radio-group.js +72 -1
  178. package/dist/collection/components/radio-group/radio-group.md.css +205 -0
  179. package/dist/collection/components/range/range.js +25 -6
  180. package/dist/collection/components/refresher/refresher.js +1 -1
  181. package/dist/collection/components/refresher-content/refresher-content.js +1 -1
  182. package/dist/collection/components/reorder/reorder.js +1 -1
  183. package/dist/collection/components/reorder-group/reorder-group.js +1 -1
  184. package/dist/collection/components/ripple-effect/ripple-effect.js +1 -1
  185. package/dist/collection/components/router-link/router-link.js +2 -2
  186. package/dist/collection/components/router-outlet/router-outlet.js +1 -1
  187. package/dist/collection/components/row/row.js +1 -1
  188. package/dist/collection/components/searchbar/searchbar.js +4 -4
  189. package/dist/collection/components/segment/segment.js +2 -2
  190. package/dist/collection/components/segment-button/segment-button.js +40 -9
  191. package/dist/collection/components/segment-content/segment-content.js +1 -1
  192. package/dist/collection/components/segment-view/segment-view.js +2 -2
  193. package/dist/collection/components/select/select.ios.css +59 -0
  194. package/dist/collection/components/select/select.js +136 -13
  195. package/dist/collection/components/select/select.md.css +61 -0
  196. package/dist/collection/components/select-modal/select-modal.js +1 -1
  197. package/dist/collection/components/select-option/select-option.js +1 -1
  198. package/dist/collection/components/select-popover/select-popover.js +1 -1
  199. package/dist/collection/components/skeleton-text/skeleton-text.js +2 -2
  200. package/dist/collection/components/spinner/spinner.js +1 -1
  201. package/dist/collection/components/split-pane/split-pane.js +2 -2
  202. package/dist/collection/components/tab/tab.js +2 -2
  203. package/dist/collection/components/tab-bar/tab-bar.js +2 -2
  204. package/dist/collection/components/tab-button/tab-button.js +2 -2
  205. package/dist/collection/components/tabs/tabs.js +1 -1
  206. package/dist/collection/components/text/text.js +2 -2
  207. package/dist/collection/components/textarea/textarea.ios.css +3 -2
  208. package/dist/collection/components/textarea/textarea.js +17 -3
  209. package/dist/collection/components/textarea/textarea.md.css +7 -2
  210. package/dist/collection/components/thumbnail/thumbnail.js +1 -1
  211. package/dist/collection/components/title/title.js +2 -2
  212. package/dist/collection/components/toast/toast.js +2 -2
  213. package/dist/collection/components/toggle/toggle.ios.css +52 -15
  214. package/dist/collection/components/toggle/toggle.js +91 -4
  215. package/dist/collection/components/toggle/toggle.md.css +52 -15
  216. package/dist/collection/components/toolbar/toolbar.js +6 -2
  217. package/dist/collection/global/ionic-global.js +1 -12
  218. package/dist/collection/utils/floating-point/index.js +5 -0
  219. package/dist/collection/utils/helpers.js +16 -28
  220. package/dist/collection/utils/logging/index.js +10 -3
  221. package/dist/collection/utils/platform.js +2 -1
  222. package/dist/collection/utils/test/platform.utils.js +1 -1
  223. package/dist/docs.json +383 -2
  224. package/dist/esm/{app-globals-5dbb61a5.js → app-globals-7b6cbf1a.js} +1 -1
  225. package/dist/esm/{button-active-f6503382.js → button-active-90f1dbc4.js} +1 -1
  226. package/dist/esm/{data-ae11fd43.js → data-174ad5e0.js} +1 -1
  227. package/dist/esm/{framework-delegate-63d1a679.js → framework-delegate-c7d92b77.js} +1 -1
  228. package/dist/esm/{hardware-back-button-06ef3c3e.js → hardware-back-button-864101a3.js} +2 -2
  229. package/dist/esm/{helpers-da915de8.js → helpers-e48b0397.js} +17 -29
  230. package/dist/esm/{index-28849c61.js → index-527b9e34.js} +1 -4
  231. package/dist/esm/{index-9b0d46f4.js → index-738d7504.js} +11 -3
  232. package/dist/esm/{index-79b30591.js → index-8222b29f.js} +1 -1
  233. package/dist/esm/{index-5cc724f3.js → index-933ca126.js} +2 -2
  234. package/dist/esm/{index-3ad7f18b.js → index-a313df53.js} +6 -6
  235. package/dist/esm/{index-24b48b06.js → index-c63afbe6.js} +4 -4
  236. package/dist/esm/index.js +11 -11
  237. package/dist/esm/{input-shims-0314bbe5.js → input-shims-3070628a.js} +5 -3
  238. package/dist/esm/{input.utils-09c71bc7.js → input.utils-926c04a8.js} +2 -2
  239. package/dist/esm/ion-accordion_2.entry.js +4 -4
  240. package/dist/esm/ion-action-sheet.entry.js +8 -8
  241. package/dist/esm/ion-alert.entry.js +38 -12
  242. package/dist/esm/ion-app_8.entry.js +18 -18
  243. package/dist/esm/ion-avatar_3.entry.js +3 -3
  244. package/dist/esm/ion-back-button.entry.js +3 -3
  245. package/dist/esm/ion-backdrop.entry.js +2 -2
  246. package/dist/esm/ion-breadcrumb_2.entry.js +3 -3
  247. package/dist/esm/ion-button_2.entry.js +4 -4
  248. package/dist/esm/ion-card_5.entry.js +3 -3
  249. package/dist/esm/ion-checkbox.entry.js +40 -9
  250. package/dist/esm/ion-chip.entry.js +2 -2
  251. package/dist/esm/ion-col_3.entry.js +3 -3
  252. package/dist/esm/ion-datetime-button.entry.js +5 -5
  253. package/dist/esm/ion-datetime_3.entry.js +12 -12
  254. package/dist/esm/ion-fab_3.entry.js +3 -3
  255. package/dist/esm/ion-img.entry.js +3 -3
  256. package/dist/esm/ion-infinite-scroll_2.entry.js +5 -5
  257. package/dist/esm/ion-input-password-toggle.entry.js +3 -3
  258. package/dist/esm/ion-input.entry.js +25 -13
  259. package/dist/esm/ion-item-option_3.entry.js +9 -9
  260. package/dist/esm/ion-item_8.entry.js +14 -14
  261. package/dist/esm/ion-loading.entry.js +9 -9
  262. package/dist/esm/ion-menu_3.entry.js +14 -14
  263. package/dist/esm/ion-modal.entry.js +275 -44
  264. package/dist/esm/ion-nav_2.entry.js +9 -9
  265. package/dist/esm/ion-picker-column-option.entry.js +5 -5
  266. package/dist/esm/ion-picker-column.entry.js +3 -3
  267. package/dist/esm/ion-picker.entry.js +2 -2
  268. package/dist/esm/ion-popover.entry.js +10 -10
  269. package/dist/esm/ion-progress-bar.entry.js +4 -4
  270. package/dist/esm/ion-radio_2.entry.js +42 -7
  271. package/dist/esm/ion-range.entry.js +31 -10
  272. package/dist/esm/ion-refresher_2.entry.js +7 -7
  273. package/dist/esm/ion-reorder_2.entry.js +7 -7
  274. package/dist/esm/ion-ripple-effect.entry.js +3 -3
  275. package/dist/esm/ion-route_4.entry.js +5 -5
  276. package/dist/esm/ion-searchbar.entry.js +7 -7
  277. package/dist/esm/ion-segment-content.entry.js +2 -2
  278. package/dist/esm/ion-segment-view.entry.js +3 -3
  279. package/dist/esm/ion-segment_2.entry.js +44 -13
  280. package/dist/esm/ion-select-modal.entry.js +8 -8
  281. package/dist/esm/ion-select_3.entry.js +93 -25
  282. package/dist/esm/ion-spinner.entry.js +3 -3
  283. package/dist/esm/ion-split-pane.entry.js +4 -4
  284. package/dist/esm/ion-tab-bar_2.entry.js +7 -7
  285. package/dist/esm/ion-tab_2.entry.js +6 -6
  286. package/dist/esm/ion-text.entry.js +4 -4
  287. package/dist/esm/ion-textarea.entry.js +24 -12
  288. package/dist/esm/ion-toast.entry.js +9 -9
  289. package/dist/esm/ion-toggle.entry.js +41 -9
  290. package/dist/esm/{ionic-global-c81d82ab.js → ionic-global-ca86cf32.js} +3 -13
  291. package/dist/esm/ionic.js +5 -5
  292. package/dist/esm/{ios.transition-4ee1a3af.js → ios.transition-5fe4d6c8.js} +5 -5
  293. package/dist/esm/loader.js +5 -5
  294. package/dist/esm/{md.transition-5106a0d2.js → md.transition-3d0d3730.js} +5 -5
  295. package/dist/esm/{notch-controller-55b09e11.js → notch-controller-381a5334.js} +1 -1
  296. package/dist/esm/{overlays-e7b9d6d9.js → overlays-7579a420.js} +5 -5
  297. package/dist/esm/{status-tap-f472b09f.js → status-tap-6367b913.js} +5 -4
  298. package/dist/esm/{swipe-back-b613d7db.js → swipe-back-326faa1c.js} +1 -1
  299. package/dist/esm-es5/app-globals-7b6cbf1a.js +4 -0
  300. package/dist/esm-es5/{button-active-f6503382.js → button-active-90f1dbc4.js} +1 -1
  301. package/dist/esm-es5/{data-ae11fd43.js → data-174ad5e0.js} +1 -1
  302. package/dist/esm-es5/{framework-delegate-63d1a679.js → framework-delegate-c7d92b77.js} +1 -1
  303. package/dist/esm-es5/{hardware-back-button-06ef3c3e.js → hardware-back-button-864101a3.js} +1 -1
  304. package/dist/esm-es5/helpers-e48b0397.js +4 -0
  305. package/dist/esm-es5/index-527b9e34.js +5 -0
  306. package/dist/esm-es5/index-738d7504.js +4 -0
  307. package/dist/esm-es5/{index-79b30591.js → index-8222b29f.js} +1 -1
  308. package/dist/esm-es5/{index-5cc724f3.js → index-933ca126.js} +1 -1
  309. package/dist/esm-es5/{index-3ad7f18b.js → index-a313df53.js} +1 -1
  310. package/dist/esm-es5/{index-24b48b06.js → index-c63afbe6.js} +1 -1
  311. package/dist/esm-es5/index.js +1 -1
  312. package/dist/esm-es5/input-shims-3070628a.js +4 -0
  313. package/dist/esm-es5/{input.utils-09c71bc7.js → input.utils-926c04a8.js} +1 -1
  314. package/dist/esm-es5/ion-accordion_2.entry.js +1 -1
  315. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  316. package/dist/esm-es5/ion-alert.entry.js +1 -1
  317. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  318. package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
  319. package/dist/esm-es5/ion-back-button.entry.js +1 -1
  320. package/dist/esm-es5/ion-backdrop.entry.js +1 -1
  321. package/dist/esm-es5/ion-breadcrumb_2.entry.js +1 -1
  322. package/dist/esm-es5/ion-button_2.entry.js +1 -1
  323. package/dist/esm-es5/ion-card_5.entry.js +1 -1
  324. package/dist/esm-es5/ion-checkbox.entry.js +1 -1
  325. package/dist/esm-es5/ion-chip.entry.js +1 -1
  326. package/dist/esm-es5/ion-col_3.entry.js +1 -1
  327. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  328. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  329. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  330. package/dist/esm-es5/ion-img.entry.js +1 -1
  331. package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
  332. package/dist/esm-es5/ion-input-password-toggle.entry.js +1 -1
  333. package/dist/esm-es5/ion-input.entry.js +1 -1
  334. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  335. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  336. package/dist/esm-es5/ion-loading.entry.js +1 -1
  337. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  338. package/dist/esm-es5/ion-modal.entry.js +1 -1
  339. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  340. package/dist/esm-es5/ion-picker-column-option.entry.js +1 -1
  341. package/dist/esm-es5/ion-picker-column.entry.js +1 -1
  342. package/dist/esm-es5/ion-picker.entry.js +1 -1
  343. package/dist/esm-es5/ion-popover.entry.js +1 -1
  344. package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
  345. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  346. package/dist/esm-es5/ion-range.entry.js +1 -1
  347. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  348. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  349. package/dist/esm-es5/ion-ripple-effect.entry.js +1 -1
  350. package/dist/esm-es5/ion-route_4.entry.js +1 -1
  351. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  352. package/dist/esm-es5/ion-segment-content.entry.js +1 -1
  353. package/dist/esm-es5/ion-segment-view.entry.js +1 -1
  354. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  355. package/dist/esm-es5/ion-select-modal.entry.js +1 -1
  356. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  357. package/dist/esm-es5/ion-spinner.entry.js +1 -1
  358. package/dist/esm-es5/ion-split-pane.entry.js +1 -1
  359. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  360. package/dist/esm-es5/ion-tab_2.entry.js +1 -1
  361. package/dist/esm-es5/ion-text.entry.js +1 -1
  362. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  363. package/dist/esm-es5/ion-toast.entry.js +1 -1
  364. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  365. package/dist/esm-es5/ionic-global-ca86cf32.js +4 -0
  366. package/dist/esm-es5/ionic.js +1 -1
  367. package/dist/esm-es5/{ios.transition-4ee1a3af.js → ios.transition-5fe4d6c8.js} +1 -1
  368. package/dist/esm-es5/loader.js +1 -1
  369. package/dist/esm-es5/md.transition-3d0d3730.js +4 -0
  370. package/dist/esm-es5/{notch-controller-55b09e11.js → notch-controller-381a5334.js} +1 -1
  371. package/dist/esm-es5/{overlays-e7b9d6d9.js → overlays-7579a420.js} +1 -1
  372. package/dist/esm-es5/status-tap-6367b913.js +4 -0
  373. package/dist/esm-es5/{swipe-back-b613d7db.js → swipe-back-326faa1c.js} +1 -1
  374. package/dist/html.html-data.json +48 -0
  375. package/dist/ionic/index.esm.js +1 -1
  376. package/dist/ionic/ionic.esm.js +1 -1
  377. package/dist/ionic/ionic.js +1 -1
  378. package/dist/ionic/{p-58d5df0c.system.entry.js → p-023e8017.system.entry.js} +1 -1
  379. package/dist/ionic/{p-f9a53abb.system.js → p-042d5353.system.js} +1 -1
  380. package/dist/ionic/p-060e4551.js +4 -0
  381. package/dist/ionic/p-0749768d.entry.js +4 -0
  382. package/dist/ionic/p-094c82d7.entry.js +4 -0
  383. package/dist/ionic/{p-7458862e.system.entry.js → p-0adb6909.system.entry.js} +1 -1
  384. package/dist/ionic/{p-508d024a.entry.js → p-0be8a0b5.entry.js} +1 -1
  385. package/dist/ionic/{p-2507278c.system.entry.js → p-0bedc891.system.entry.js} +2 -2
  386. package/dist/ionic/{p-63b0abde.system.entry.js → p-0c9b8240.system.entry.js} +1 -1
  387. package/dist/ionic/p-0ec5b7cf.system.js +4 -0
  388. package/dist/ionic/{p-7ed1657c.system.entry.js → p-1164ff6b.system.entry.js} +1 -1
  389. package/dist/ionic/p-13886789.entry.js +4 -0
  390. package/dist/ionic/p-143ff664.system.entry.js +4 -0
  391. package/dist/ionic/p-18f9b6d5.entry.js +4 -0
  392. package/dist/ionic/{p-62af944c.entry.js → p-19c32a76.entry.js} +1 -1
  393. package/dist/ionic/{p-e4f69534.system.entry.js → p-1a9613bf.system.entry.js} +1 -1
  394. package/dist/ionic/{p-f687573e.system.js → p-1bf5ec17.system.js} +1 -1
  395. package/dist/ionic/{p-5fce0c0b.system.entry.js → p-1c1d781d.system.entry.js} +1 -1
  396. package/dist/ionic/p-1d2844a5.system.entry.js +4 -0
  397. package/dist/ionic/p-1d98a7f1.entry.js +4 -0
  398. package/dist/ionic/p-1f837356.entry.js +4 -0
  399. package/dist/ionic/p-2027221d.js +4 -0
  400. package/dist/ionic/{p-69066a53.js → p-21891ead.js} +1 -1
  401. package/dist/ionic/{p-d743e981.js → p-22bc235f.js} +1 -1
  402. package/dist/ionic/{p-a4565eb5.system.js → p-24ae7b33.system.js} +1 -1
  403. package/dist/ionic/{p-184fbc9e.system.js → p-294271c7.system.js} +1 -1
  404. package/dist/ionic/p-297d6806.system.js +4 -0
  405. package/dist/ionic/p-29a5b4e4.entry.js +4 -0
  406. package/dist/ionic/{p-01186920.system.entry.js → p-2ab4a324.system.entry.js} +1 -1
  407. package/dist/ionic/{p-ffd131f9.system.entry.js → p-2b59470f.system.entry.js} +1 -1
  408. package/dist/ionic/{p-9e33104d.entry.js → p-2ee9a2c6.entry.js} +1 -1
  409. package/dist/ionic/p-2fa5a4b1.entry.js +4 -0
  410. package/dist/ionic/{p-e7ed4a7f.system.js → p-3479f51b.system.js} +1 -1
  411. package/dist/ionic/{p-afecb188.entry.js → p-35f14792.entry.js} +1 -1
  412. package/dist/ionic/{p-7ddc46c3.system.entry.js → p-37a438ad.system.entry.js} +2 -2
  413. package/dist/ionic/{p-937a7e21.entry.js → p-3af7b907.entry.js} +1 -1
  414. package/dist/ionic/{p-c449820c.system.js → p-3bd5fedc.system.js} +1 -1
  415. package/dist/ionic/{p-d18ab582.system.entry.js → p-3be7cdeb.system.entry.js} +2 -2
  416. package/dist/ionic/{p-a15ddedb.system.js → p-3e86b4fa.system.js} +1 -1
  417. package/dist/ionic/p-3f4327f7.js +4 -0
  418. package/dist/ionic/{p-982315a6.entry.js → p-42f6e75c.entry.js} +1 -1
  419. package/dist/ionic/{p-5823babc.system.entry.js → p-4470f87b.system.entry.js} +2 -2
  420. package/dist/ionic/p-4493c1ac.entry.js +4 -0
  421. package/dist/ionic/{p-8635f5e6.system.js → p-44e168f3.system.js} +1 -1
  422. package/dist/ionic/{p-c29f8157.system.entry.js → p-4630688e.system.entry.js} +1 -1
  423. package/dist/ionic/{p-98231c01.system.entry.js → p-472c7e08.system.entry.js} +1 -1
  424. package/dist/ionic/{p-2e46590d.system.entry.js → p-491de063.system.entry.js} +1 -1
  425. package/dist/ionic/{p-985a7e17.system.entry.js → p-49cb79a1.system.entry.js} +1 -1
  426. package/dist/ionic/{p-d6841eac.js → p-4c44d04c.js} +1 -1
  427. package/dist/ionic/p-4c94580e.js +4 -0
  428. package/dist/ionic/{p-1e010627.system.entry.js → p-4d0190ad.system.entry.js} +2 -2
  429. package/dist/ionic/{p-bb0db172.entry.js → p-50f38461.entry.js} +1 -1
  430. package/dist/ionic/{p-0c06e09b.system.js → p-51c363e7.system.js} +1 -1
  431. package/dist/ionic/{p-f1acf541.system.entry.js → p-524ad57e.system.entry.js} +1 -1
  432. package/dist/ionic/{p-a61cba41.entry.js → p-54893ae3.entry.js} +1 -1
  433. package/dist/ionic/p-54e9620f.js +4 -0
  434. package/dist/ionic/p-58c482af.entry.js +4 -0
  435. package/dist/ionic/p-597ff9af.js +4 -0
  436. package/dist/ionic/{p-5da94421.system.js → p-5eb6f582.system.js} +1 -1
  437. package/dist/ionic/{p-15e76dd1.entry.js → p-5f4ff20a.entry.js} +1 -1
  438. package/dist/ionic/{p-fbf284c7.entry.js → p-5f8cd560.entry.js} +1 -1
  439. package/dist/ionic/p-606887b7.system.entry.js +4 -0
  440. package/dist/ionic/{p-bdad26e3.entry.js → p-61e794fb.entry.js} +1 -1
  441. package/dist/ionic/p-66a5d6a8.js +5 -0
  442. package/dist/ionic/p-67163d4a.entry.js +4 -0
  443. package/dist/ionic/p-6797c66e.system.js +4 -0
  444. package/dist/ionic/p-6bb846d3.entry.js +4 -0
  445. package/dist/ionic/{p-d7aa6b00.entry.js → p-6e24cf82.entry.js} +1 -1
  446. package/dist/ionic/p-72e6a9c6.entry.js +4 -0
  447. package/dist/ionic/{p-5b932840.entry.js → p-747f9517.entry.js} +1 -1
  448. package/dist/ionic/{p-9ea607bd.system.js → p-77991411.system.js} +2 -2
  449. package/dist/ionic/{p-9f3008d4.system.js → p-7cc33a9a.system.js} +1 -1
  450. package/dist/ionic/{p-f3102647.system.entry.js → p-7e3b5638.system.entry.js} +1 -1
  451. package/dist/ionic/p-7f39653f.entry.js +4 -0
  452. package/dist/ionic/{p-98ff6b32.entry.js → p-7ff4f502.entry.js} +1 -1
  453. package/dist/ionic/p-81474833.system.entry.js +4 -0
  454. package/dist/ionic/{p-4439fc2a.entry.js → p-838cc359.entry.js} +1 -1
  455. package/dist/ionic/{p-52d7a191.entry.js → p-85f6070f.entry.js} +1 -1
  456. package/dist/ionic/{p-e4ee80be.system.entry.js → p-888d383b.system.entry.js} +1 -1
  457. package/dist/ionic/{p-da074ff7.entry.js → p-8b1c1fd7.entry.js} +1 -1
  458. package/dist/ionic/{p-32d44024.system.entry.js → p-8deac7df.system.entry.js} +1 -1
  459. package/dist/ionic/p-8fc426e2.entry.js +4 -0
  460. package/dist/ionic/p-959cf042.system.entry.js +4 -0
  461. package/dist/ionic/{p-17a9ca63.system.entry.js → p-96450929.system.entry.js} +2 -2
  462. package/dist/ionic/{p-19ea7bff.system.js → p-9a2ff5ea.system.js} +1 -1
  463. package/dist/ionic/p-9a5420dd.js +4 -0
  464. package/dist/ionic/{p-ecceeb90.js → p-9af7f110.js} +1 -1
  465. package/dist/ionic/{p-6d32975a.entry.js → p-9b069739.entry.js} +1 -1
  466. package/dist/ionic/{p-ca065903.system.entry.js → p-9df36075.system.entry.js} +1 -1
  467. package/dist/ionic/p-9e51f822.js +4 -0
  468. package/dist/ionic/{p-372ae7f4.system.js → p-a4866e3e.system.js} +1 -1
  469. package/dist/ionic/{p-95775830.entry.js → p-a520973b.entry.js} +1 -1
  470. package/dist/ionic/{p-17474161.system.js → p-a587b2ae.system.js} +1 -1
  471. package/dist/ionic/{p-cac0e0b3.system.entry.js → p-a63b345e.system.entry.js} +1 -1
  472. package/dist/ionic/{p-3c8e5c23.system.js → p-a6625de8.system.js} +1 -1
  473. package/dist/ionic/{p-6416c34c.system.entry.js → p-a6df5168.system.entry.js} +1 -1
  474. package/dist/ionic/p-a9f2c0a7.entry.js +4 -0
  475. package/dist/ionic/{p-73dc4950.entry.js → p-ab7337e1.entry.js} +1 -1
  476. package/dist/ionic/{p-ed75fcfb.system.entry.js → p-ac58d726.system.entry.js} +1 -1
  477. package/dist/ionic/p-ace2d2be.entry.js +4 -0
  478. package/dist/ionic/{p-efaffe74.entry.js → p-ada878ce.entry.js} +1 -1
  479. package/dist/ionic/p-b055d618.entry.js +4 -0
  480. package/dist/ionic/{p-2799c6d3.system.entry.js → p-b2296998.system.entry.js} +1 -1
  481. package/dist/ionic/{p-fca6ef5f.system.entry.js → p-b2ee0628.system.entry.js} +1 -1
  482. package/dist/ionic/{p-9fa07aec.entry.js → p-b6174297.entry.js} +1 -1
  483. package/dist/ionic/{p-c41ac815.entry.js → p-b85d199c.entry.js} +1 -1
  484. package/dist/ionic/p-b9ea58ef.js +4 -0
  485. package/dist/ionic/{p-14e159ea.system.entry.js → p-b9eb1465.system.entry.js} +1 -1
  486. package/dist/ionic/p-b9f2e353.entry.js +4 -0
  487. package/dist/ionic/p-bbc6db8c.entry.js +4 -0
  488. package/dist/ionic/p-bdd6102f.system.entry.js +4 -0
  489. package/dist/ionic/p-bf64af90.system.js +4 -0
  490. package/dist/ionic/p-bf77d6fa.entry.js +4 -0
  491. package/dist/ionic/{p-33a8a71b.entry.js → p-c005cc37.entry.js} +1 -1
  492. package/dist/ionic/{p-45693d7e.entry.js → p-c25c0ba4.entry.js} +1 -1
  493. package/dist/ionic/p-c5b5f44a.entry.js +4 -0
  494. package/dist/ionic/{p-2172893e.system.entry.js → p-c6a20407.system.entry.js} +1 -1
  495. package/dist/ionic/{p-1046866e.system.entry.js → p-c8331397.system.entry.js} +1 -1
  496. package/dist/ionic/{p-34b11c24.js → p-c8402249.js} +1 -1
  497. package/dist/ionic/{p-61e3f887.entry.js → p-c8bf9ba7.entry.js} +1 -1
  498. package/dist/ionic/{p-72812e99.js → p-ceaea4ce.js} +1 -1
  499. package/dist/ionic/{p-1e67b266.system.entry.js → p-d37fdc68.system.entry.js} +1 -1
  500. package/dist/ionic/{p-0aa833fb.system.js → p-d7032956.system.js} +1 -1
  501. package/dist/ionic/p-d8c9d5ac.system.entry.js +4 -0
  502. package/dist/ionic/{p-2b838f86.system.entry.js → p-daf1e8ec.system.entry.js} +1 -1
  503. package/dist/ionic/{p-2bd0ae94.system.entry.js → p-def7a8bd.system.entry.js} +1 -1
  504. package/dist/ionic/p-e00b72ce.js +4 -0
  505. package/dist/ionic/{p-96cc4814.js → p-e0a05506.js} +1 -1
  506. package/dist/ionic/p-e0c0218f.system.entry.js +4 -0
  507. package/dist/ionic/{p-6499df44.system.entry.js → p-e0c43e11.system.entry.js} +1 -1
  508. package/dist/ionic/{p-2abae1cc.system.entry.js → p-e4683bfd.system.entry.js} +1 -1
  509. package/dist/ionic/{p-567de071.system.entry.js → p-e5708e5d.system.entry.js} +1 -1
  510. package/dist/ionic/{p-12a722b8.system.entry.js → p-e5c27d9f.system.entry.js} +1 -1
  511. package/dist/ionic/{p-06e58c4e.js → p-e7309bfa.js} +1 -1
  512. package/dist/ionic/p-ed768b77.entry.js +4 -0
  513. package/dist/ionic/p-eec4b772.entry.js +4 -0
  514. package/dist/ionic/p-eeee3990.system.entry.js +4 -0
  515. package/dist/ionic/p-efa0f3f5.entry.js +4 -0
  516. package/dist/ionic/p-f02e9382.system.entry.js +4 -0
  517. package/dist/ionic/p-f11a9436.system.js +5 -0
  518. package/dist/ionic/p-f201b53a.system.js +4 -0
  519. package/dist/ionic/{p-3cc276f4.js → p-f554845e.js} +1 -1
  520. package/dist/ionic/{p-424eb140.system.entry.js → p-f6bb9be7.system.entry.js} +1 -1
  521. package/dist/ionic/{p-d60342e3.js → p-f7ce606e.js} +1 -1
  522. package/dist/ionic/{p-1fe02220.system.entry.js → p-f94b2f2f.system.entry.js} +1 -1
  523. package/dist/ionic/{p-797eeea8.system.entry.js → p-ff4a1ba0.system.entry.js} +1 -1
  524. package/dist/types/components/checkbox/checkbox.d.ts +25 -0
  525. package/dist/types/components/input/input.d.ts +8 -0
  526. package/dist/types/components/modal/animations/sheet.d.ts +1 -0
  527. package/dist/types/components/modal/gestures/sheet.d.ts +1 -1
  528. package/dist/types/components/modal/modal-interface.d.ts +1 -0
  529. package/dist/types/components/modal/modal.d.ts +14 -0
  530. package/dist/types/components/radio-group/radio-group.d.ts +15 -0
  531. package/dist/types/components/range/range.d.ts +3 -2
  532. package/dist/types/components/segment-button/segment-button.d.ts +2 -1
  533. package/dist/types/components/select/select.d.ts +29 -0
  534. package/dist/types/components/textarea/textarea.d.ts +8 -0
  535. package/dist/types/components/toggle/toggle.d.ts +25 -0
  536. package/dist/types/components/toolbar/toolbar.d.ts +4 -0
  537. package/dist/types/components.d.ts +96 -0
  538. package/dist/types/utils/config.d.ts +9 -3
  539. package/dist/types/utils/helpers.d.ts +5 -0
  540. package/dist/types/utils/logging/index.d.ts +13 -1
  541. package/dist/types/utils/native/capacitor.d.ts +7 -1
  542. package/dist/types/utils/test/platform.utils.d.ts +1 -1
  543. package/hydrate/index.js +720 -203
  544. package/hydrate/index.mjs +720 -203
  545. package/package.json +7 -7
  546. package/dist/esm-es5/app-globals-5dbb61a5.js +0 -4
  547. package/dist/esm-es5/helpers-da915de8.js +0 -4
  548. package/dist/esm-es5/index-28849c61.js +0 -5
  549. package/dist/esm-es5/index-9b0d46f4.js +0 -4
  550. package/dist/esm-es5/input-shims-0314bbe5.js +0 -4
  551. package/dist/esm-es5/ionic-global-c81d82ab.js +0 -4
  552. package/dist/esm-es5/md.transition-5106a0d2.js +0 -4
  553. package/dist/esm-es5/status-tap-f472b09f.js +0 -4
  554. package/dist/ionic/p-0303d0f8.js +0 -4
  555. package/dist/ionic/p-04909654.entry.js +0 -4
  556. package/dist/ionic/p-0574e87e.js +0 -4
  557. package/dist/ionic/p-06fee233.js +0 -4
  558. package/dist/ionic/p-081a4ce4.entry.js +0 -4
  559. package/dist/ionic/p-12c45a7c.entry.js +0 -4
  560. package/dist/ionic/p-14be4015.entry.js +0 -4
  561. package/dist/ionic/p-16188af7.entry.js +0 -4
  562. package/dist/ionic/p-16799667.system.entry.js +0 -4
  563. package/dist/ionic/p-16bfb979.system.entry.js +0 -4
  564. package/dist/ionic/p-19ec4f42.entry.js +0 -4
  565. package/dist/ionic/p-21e5e7e4.js +0 -4
  566. package/dist/ionic/p-25180df3.system.js +0 -5
  567. package/dist/ionic/p-2690b1de.js +0 -4
  568. package/dist/ionic/p-2b9b78c7.entry.js +0 -4
  569. package/dist/ionic/p-2fc0dafe.entry.js +0 -4
  570. package/dist/ionic/p-322c5fb4.system.js +0 -4
  571. package/dist/ionic/p-37cb43bd.system.entry.js +0 -4
  572. package/dist/ionic/p-3ad285e3.system.js +0 -4
  573. package/dist/ionic/p-404aede0.system.entry.js +0 -4
  574. package/dist/ionic/p-49a0e74c.entry.js +0 -4
  575. package/dist/ionic/p-4ec778aa.entry.js +0 -4
  576. package/dist/ionic/p-51796b2d.entry.js +0 -4
  577. package/dist/ionic/p-5ab1b709.entry.js +0 -4
  578. package/dist/ionic/p-69666e8a.system.entry.js +0 -4
  579. package/dist/ionic/p-6b280620.entry.js +0 -4
  580. package/dist/ionic/p-6d6cedc5.entry.js +0 -4
  581. package/dist/ionic/p-7b9a2b23.entry.js +0 -4
  582. package/dist/ionic/p-88e63c7d.js +0 -4
  583. package/dist/ionic/p-908d6080.entry.js +0 -4
  584. package/dist/ionic/p-942b5e13.entry.js +0 -4
  585. package/dist/ionic/p-9df2c6fb.entry.js +0 -4
  586. package/dist/ionic/p-a43467d8.entry.js +0 -4
  587. package/dist/ionic/p-a69b9fc5.system.js +0 -4
  588. package/dist/ionic/p-b2272f51.system.entry.js +0 -4
  589. package/dist/ionic/p-b335ffed.system.entry.js +0 -4
  590. package/dist/ionic/p-b51e4004.js +0 -4
  591. package/dist/ionic/p-b79ba17c.entry.js +0 -4
  592. package/dist/ionic/p-b7af48c0.js +0 -4
  593. package/dist/ionic/p-b82d4cab.js +0 -4
  594. package/dist/ionic/p-b9d7015f.entry.js +0 -4
  595. package/dist/ionic/p-bc36ad98.system.entry.js +0 -4
  596. package/dist/ionic/p-c4b53b16.system.entry.js +0 -4
  597. package/dist/ionic/p-c9f3a539.entry.js +0 -4
  598. package/dist/ionic/p-cdc83025.entry.js +0 -4
  599. package/dist/ionic/p-d836d43e.js +0 -5
  600. package/dist/ionic/p-de930745.entry.js +0 -4
  601. package/dist/ionic/p-dfb78785.system.js +0 -4
  602. package/dist/ionic/p-e563a35c.entry.js +0 -4
  603. package/dist/ionic/p-e6635685.js +0 -4
  604. package/dist/ionic/p-ebf042e0.system.entry.js +0 -4
  605. package/dist/ionic/p-ff4b7e40.system.js +0 -4
@@ -500,7 +500,7 @@ const computeDuration = (remaining, velocity) => {
500
500
  };
501
501
 
502
502
  const createSheetEnterAnimation = (opts) => {
503
- const { currentBreakpoint, backdropBreakpoint } = opts;
503
+ const { currentBreakpoint, backdropBreakpoint, expandToScroll } = opts;
504
504
  /**
505
505
  * If the backdropBreakpoint is undefined, then the backdrop
506
506
  * should always fade in. If the backdropBreakpoint came before the
@@ -520,7 +520,16 @@ const createSheetEnterAnimation = (opts) => {
520
520
  { offset: 0, opacity: 1, transform: 'translateY(100%)' },
521
521
  { offset: 1, opacity: 1, transform: `translateY(${100 - currentBreakpoint * 100}%)` },
522
522
  ]);
523
- return { wrapperAnimation, backdropAnimation };
523
+ /**
524
+ * This allows the content to be scrollable at any breakpoint.
525
+ */
526
+ const contentAnimation = !expandToScroll
527
+ ? createAnimation('contentAnimation').keyframes([
528
+ { offset: 0, opacity: 1, maxHeight: `${(1 - currentBreakpoint) * 100}%` },
529
+ { offset: 1, opacity: 1, maxHeight: `${currentBreakpoint * 100}%` },
530
+ ])
531
+ : undefined;
532
+ return { wrapperAnimation, backdropAnimation, contentAnimation };
524
533
  };
525
534
  const createSheetLeaveAnimation = (opts) => {
526
535
  const { currentBreakpoint, backdropBreakpoint } = opts;
@@ -555,22 +564,68 @@ const createEnterAnimation$1 = () => {
555
564
  })
556
565
  .afterClearStyles(['pointer-events']);
557
566
  const wrapperAnimation = createAnimation().fromTo('transform', 'translateY(100vh)', 'translateY(0vh)');
558
- return { backdropAnimation, wrapperAnimation };
567
+ return { backdropAnimation, wrapperAnimation, contentAnimation: undefined };
559
568
  };
560
569
  /**
561
570
  * iOS Modal Enter Animation for the Card presentation style
562
571
  */
563
572
  const iosEnterAnimation = (baseEl, opts) => {
564
- const { presentingEl, currentBreakpoint } = opts;
573
+ const { presentingEl, currentBreakpoint, expandToScroll } = opts;
565
574
  const root = getElementRoot(baseEl);
566
- const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation$1();
575
+ const { wrapperAnimation, backdropAnimation, contentAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation$1();
567
576
  backdropAnimation.addElement(root.querySelector('ion-backdrop'));
568
577
  wrapperAnimation.addElement(root.querySelectorAll('.modal-wrapper, .modal-shadow')).beforeStyles({ opacity: 1 });
578
+ // The content animation is only added if scrolling is enabled for
579
+ // all the breakpoints.
580
+ !expandToScroll && (contentAnimation === null || contentAnimation === void 0 ? void 0 : contentAnimation.addElement(baseEl.querySelector('.ion-page')));
569
581
  const baseAnimation = createAnimation('entering-base')
570
582
  .addElement(baseEl)
571
583
  .easing('cubic-bezier(0.32,0.72,0,1)')
572
584
  .duration(500)
573
- .addAnimation(wrapperAnimation);
585
+ .addAnimation([wrapperAnimation])
586
+ .beforeAddWrite(() => {
587
+ if (expandToScroll) {
588
+ // Scroll can only be done when the modal is fully expanded.
589
+ return;
590
+ }
591
+ /**
592
+ * There are some browsers that causes flickering when
593
+ * dragging the content when scroll is enabled at every
594
+ * breakpoint. This is due to the wrapper element being
595
+ * transformed off the screen and having a snap animation.
596
+ *
597
+ * A workaround is to clone the footer element and append
598
+ * it outside of the wrapper element. This way, the footer
599
+ * is still visible and the drag can be done without
600
+ * flickering. The original footer is hidden until the modal
601
+ * is dismissed. This maintains the animation of the footer
602
+ * when the modal is dismissed.
603
+ *
604
+ * The workaround needs to be done before the animation starts
605
+ * so there are no flickering issues.
606
+ */
607
+ const ionFooter = baseEl.querySelector('ion-footer');
608
+ /**
609
+ * This check is needed to prevent more than one footer
610
+ * from being appended to the shadow root.
611
+ * Otherwise, iOS and MD enter animations would append
612
+ * the footer twice.
613
+ */
614
+ const ionFooterAlreadyAppended = baseEl.shadowRoot.querySelector('ion-footer');
615
+ if (ionFooter && !ionFooterAlreadyAppended) {
616
+ const footerHeight = ionFooter.clientHeight;
617
+ const clonedFooter = ionFooter.cloneNode(true);
618
+ baseEl.shadowRoot.appendChild(clonedFooter);
619
+ ionFooter.style.setProperty('display', 'none');
620
+ ionFooter.setAttribute('aria-hidden', 'true');
621
+ // Padding is added to prevent some content from being hidden.
622
+ const page = baseEl.querySelector('.ion-page');
623
+ page.style.setProperty('padding-bottom', `${footerHeight}px`);
624
+ }
625
+ });
626
+ if (contentAnimation) {
627
+ baseAnimation.addAnimation(contentAnimation);
628
+ }
574
629
  if (presentingEl) {
575
630
  const isMobile = window.innerWidth < 768;
576
631
  const hasCardModal = presentingEl.tagName === 'ION-MODAL' && presentingEl.presentingElement !== undefined;
@@ -648,7 +703,7 @@ const createLeaveAnimation$1 = () => {
648
703
  * iOS Modal Leave Animation
649
704
  */
650
705
  const iosLeaveAnimation = (baseEl, opts, duration = 500) => {
651
- const { presentingEl, currentBreakpoint } = opts;
706
+ const { presentingEl, currentBreakpoint, expandToScroll } = opts;
652
707
  const root = getElementRoot(baseEl);
653
708
  const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetLeaveAnimation(opts) : createLeaveAnimation$1();
654
709
  backdropAnimation.addElement(root.querySelector('ion-backdrop'));
@@ -657,7 +712,29 @@ const iosLeaveAnimation = (baseEl, opts, duration = 500) => {
657
712
  .addElement(baseEl)
658
713
  .easing('cubic-bezier(0.32,0.72,0,1)')
659
714
  .duration(duration)
660
- .addAnimation(wrapperAnimation);
715
+ .addAnimation(wrapperAnimation)
716
+ .beforeAddWrite(() => {
717
+ if (expandToScroll) {
718
+ // Scroll can only be done when the modal is fully expanded.
719
+ return;
720
+ }
721
+ /**
722
+ * If expandToScroll is disabled, we need to swap
723
+ * the visibility to the original, so the footer
724
+ * dismisses with the modal and doesn't stay
725
+ * until the modal is removed from the DOM.
726
+ */
727
+ const ionFooter = baseEl.querySelector('ion-footer');
728
+ if (ionFooter) {
729
+ const clonedFooter = baseEl.shadowRoot.querySelector('ion-footer');
730
+ ionFooter.style.removeProperty('display');
731
+ ionFooter.removeAttribute('aria-hidden');
732
+ clonedFooter.style.setProperty('display', 'none');
733
+ clonedFooter.setAttribute('aria-hidden', 'true');
734
+ const page = baseEl.querySelector('.ion-page');
735
+ page.style.removeProperty('padding-bottom');
736
+ }
737
+ });
661
738
  const appEl = baseEl.closest('ion-app');
662
739
  if (presentingEl && appEl) {
663
740
  const isMobile = window.innerWidth < 768;
@@ -735,22 +812,69 @@ const createEnterAnimation = () => {
735
812
  { offset: 0, opacity: 0.01, transform: 'translateY(40px)' },
736
813
  { offset: 1, opacity: 1, transform: `translateY(0px)` },
737
814
  ]);
738
- return { backdropAnimation, wrapperAnimation };
815
+ return { backdropAnimation, wrapperAnimation, contentAnimation: undefined };
739
816
  };
740
817
  /**
741
818
  * Md Modal Enter Animation
742
819
  */
743
820
  const mdEnterAnimation = (baseEl, opts) => {
744
- const { currentBreakpoint } = opts;
821
+ const { currentBreakpoint, expandToScroll } = opts;
745
822
  const root = getElementRoot(baseEl);
746
- const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation();
823
+ const { wrapperAnimation, backdropAnimation, contentAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation();
747
824
  backdropAnimation.addElement(root.querySelector('ion-backdrop'));
748
825
  wrapperAnimation.addElement(root.querySelector('.modal-wrapper'));
749
- return createAnimation()
826
+ // The content animation is only added if scrolling is enabled for
827
+ // all the breakpoints.
828
+ expandToScroll && (contentAnimation === null || contentAnimation === void 0 ? void 0 : contentAnimation.addElement(baseEl.querySelector('.ion-page')));
829
+ const baseAnimation = createAnimation()
750
830
  .addElement(baseEl)
751
831
  .easing('cubic-bezier(0.36,0.66,0.04,1)')
752
832
  .duration(280)
753
- .addAnimation([backdropAnimation, wrapperAnimation]);
833
+ .addAnimation([backdropAnimation, wrapperAnimation])
834
+ .beforeAddWrite(() => {
835
+ if (expandToScroll) {
836
+ // Scroll can only be done when the modal is fully expanded.
837
+ return;
838
+ }
839
+ /**
840
+ * There are some browsers that causes flickering when
841
+ * dragging the content when scroll is enabled at every
842
+ * breakpoint. This is due to the wrapper element being
843
+ * transformed off the screen and having a snap animation.
844
+ *
845
+ * A workaround is to clone the footer element and append
846
+ * it outside of the wrapper element. This way, the footer
847
+ * is still visible and the drag can be done without
848
+ * flickering. The original footer is hidden until the modal
849
+ * is dismissed. This maintains the animation of the footer
850
+ * when the modal is dismissed.
851
+ *
852
+ * The workaround needs to be done before the animation starts
853
+ * so there are no flickering issues.
854
+ */
855
+ const ionFooter = baseEl.querySelector('ion-footer');
856
+ /**
857
+ * This check is needed to prevent more than one footer
858
+ * from being appended to the shadow root.
859
+ * Otherwise, iOS and MD enter animations would append
860
+ * the footer twice.
861
+ */
862
+ const ionFooterAlreadyAppended = baseEl.shadowRoot.querySelector('ion-footer');
863
+ if (ionFooter && !ionFooterAlreadyAppended) {
864
+ const footerHeight = ionFooter.clientHeight;
865
+ const clonedFooter = ionFooter.cloneNode(true);
866
+ baseEl.shadowRoot.appendChild(clonedFooter);
867
+ ionFooter.style.setProperty('display', 'none');
868
+ ionFooter.setAttribute('aria-hidden', 'true');
869
+ // Padding is added to prevent some content from being hidden.
870
+ const page = baseEl.querySelector('.ion-page');
871
+ page.style.setProperty('padding-bottom', `${footerHeight}px`);
872
+ }
873
+ });
874
+ if (contentAnimation) {
875
+ baseAnimation.addAnimation(contentAnimation);
876
+ }
877
+ return baseAnimation;
754
878
  };
755
879
 
756
880
  const createLeaveAnimation = () => {
@@ -765,18 +889,41 @@ const createLeaveAnimation = () => {
765
889
  * Md Modal Leave Animation
766
890
  */
767
891
  const mdLeaveAnimation = (baseEl, opts) => {
768
- const { currentBreakpoint } = opts;
892
+ const { currentBreakpoint, expandToScroll } = opts;
769
893
  const root = getElementRoot(baseEl);
770
894
  const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetLeaveAnimation(opts) : createLeaveAnimation();
771
895
  backdropAnimation.addElement(root.querySelector('ion-backdrop'));
772
896
  wrapperAnimation.addElement(root.querySelector('.modal-wrapper'));
773
- return createAnimation()
897
+ const baseAnimation = createAnimation()
774
898
  .easing('cubic-bezier(0.47,0,0.745,0.715)')
775
899
  .duration(200)
776
- .addAnimation([backdropAnimation, wrapperAnimation]);
900
+ .addAnimation([backdropAnimation, wrapperAnimation])
901
+ .beforeAddWrite(() => {
902
+ if (expandToScroll) {
903
+ // Scroll can only be done when the modal is fully expanded.
904
+ return;
905
+ }
906
+ /**
907
+ * If expandToScroll is disabled, we need to swap
908
+ * the visibility to the original, so the footer
909
+ * dismisses with the modal and doesn't stay
910
+ * until the modal is removed from the DOM.
911
+ */
912
+ const ionFooter = baseEl.querySelector('ion-footer');
913
+ if (ionFooter) {
914
+ const clonedFooter = baseEl.shadowRoot.querySelector('ion-footer');
915
+ ionFooter.style.removeProperty('display');
916
+ ionFooter.removeAttribute('aria-hidden');
917
+ clonedFooter.style.setProperty('display', 'none');
918
+ clonedFooter.setAttribute('aria-hidden', 'true');
919
+ const page = baseEl.querySelector('.ion-page');
920
+ page.style.removeProperty('padding-bottom');
921
+ }
922
+ });
923
+ return baseAnimation;
777
924
  };
778
925
 
779
- const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, animation, breakpoints = [], getCurrentBreakpoint, onDismiss, onBreakpointChange) => {
926
+ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, animation, breakpoints = [], expandToScroll, getCurrentBreakpoint, onDismiss, onBreakpointChange) => {
780
927
  // Defaults for the sheet swipe animation
781
928
  const defaultBackdrop = [
782
929
  { offset: 0, opacity: 'var(--backdrop-opacity)' },
@@ -793,6 +940,10 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
793
940
  { offset: 1, transform: 'translateY(100%)' },
794
941
  ],
795
942
  BACKDROP_KEYFRAMES: backdropBreakpoint !== 0 ? customBackdrop : defaultBackdrop,
943
+ CONTENT_KEYFRAMES: [
944
+ { offset: 0, maxHeight: '100%' },
945
+ { offset: 1, maxHeight: '0%' },
946
+ ],
796
947
  };
797
948
  const contentEl = baseEl.querySelector('ion-content');
798
949
  const height = wrapperEl.clientHeight;
@@ -800,10 +951,11 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
800
951
  let offset = 0;
801
952
  let canDismissBlocksGesture = false;
802
953
  const canDismissMaxStep = 0.95;
803
- const wrapperAnimation = animation.childAnimations.find((ani) => ani.id === 'wrapperAnimation');
804
- const backdropAnimation = animation.childAnimations.find((ani) => ani.id === 'backdropAnimation');
805
954
  const maxBreakpoint = breakpoints[breakpoints.length - 1];
806
955
  const minBreakpoint = breakpoints[0];
956
+ const wrapperAnimation = animation.childAnimations.find((ani) => ani.id === 'wrapperAnimation');
957
+ const backdropAnimation = animation.childAnimations.find((ani) => ani.id === 'backdropAnimation');
958
+ const contentAnimation = animation.childAnimations.find((ani) => ani.id === 'contentAnimation');
807
959
  const enableBackdrop = () => {
808
960
  baseEl.style.setProperty('pointer-events', 'auto');
809
961
  backdropEl.style.setProperty('pointer-events', 'auto');
@@ -826,6 +978,31 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
826
978
  */
827
979
  baseEl.classList.add(FOCUS_TRAP_DISABLE_CLASS);
828
980
  };
981
+ /**
982
+ * Toggles the visible modal footer when `expandToScroll` is disabled.
983
+ * @param footer The footer to show.
984
+ */
985
+ const swapFooterVisibility = (footer) => {
986
+ const originalFooter = baseEl.querySelector('ion-footer');
987
+ if (!originalFooter) {
988
+ return;
989
+ }
990
+ const clonedFooter = wrapperEl.nextElementSibling;
991
+ const footerToHide = footer === 'original' ? clonedFooter : originalFooter;
992
+ const footerToShow = footer === 'original' ? originalFooter : clonedFooter;
993
+ footerToShow.style.removeProperty('display');
994
+ footerToShow.removeAttribute('aria-hidden');
995
+ const page = baseEl.querySelector('.ion-page');
996
+ if (footer === 'original') {
997
+ page.style.removeProperty('padding-bottom');
998
+ }
999
+ else {
1000
+ const pagePadding = footerToShow.clientHeight;
1001
+ page.style.setProperty('padding-bottom', `${pagePadding}px`);
1002
+ }
1003
+ footerToHide.style.setProperty('display', 'none');
1004
+ footerToHide.setAttribute('aria-hidden', 'true');
1005
+ };
829
1006
  /**
830
1007
  * After the entering animation completes,
831
1008
  * we need to set the animation to go from
@@ -837,6 +1014,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
837
1014
  if (wrapperAnimation && backdropAnimation) {
838
1015
  wrapperAnimation.keyframes([...SheetDefaults.WRAPPER_KEYFRAMES]);
839
1016
  backdropAnimation.keyframes([...SheetDefaults.BACKDROP_KEYFRAMES]);
1017
+ contentAnimation === null || contentAnimation === void 0 ? void 0 : contentAnimation.keyframes([...SheetDefaults.CONTENT_KEYFRAMES]);
840
1018
  animation.progressStart(true, 1 - currentBreakpoint);
841
1019
  /**
842
1020
  * If backdrop is not enabled, then content
@@ -853,7 +1031,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
853
1031
  disableBackdrop();
854
1032
  }
855
1033
  }
856
- if (contentEl && currentBreakpoint !== maxBreakpoint) {
1034
+ if (contentEl && currentBreakpoint !== maxBreakpoint && expandToScroll) {
857
1035
  contentEl.scrollY = false;
858
1036
  }
859
1037
  const canStart = (detail) => {
@@ -867,6 +1045,14 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
867
1045
  */
868
1046
  const contentEl = findClosestIonContent(detail.event.target);
869
1047
  currentBreakpoint = getCurrentBreakpoint();
1048
+ /**
1049
+ * If `expandToScroll` is disabled, we should not allow the swipe gesture
1050
+ * to start if the content is not scrolled to the top.
1051
+ */
1052
+ if (!expandToScroll && contentEl) {
1053
+ const scrollEl = isIonContent(contentEl) ? getElementRoot(contentEl).querySelector('.inner-scroll') : contentEl;
1054
+ return scrollEl.scrollTop === 0;
1055
+ }
870
1056
  if (currentBreakpoint === 1 && contentEl) {
871
1057
  /**
872
1058
  * The modal should never swipe to close on the content with a refresher.
@@ -897,6 +1083,15 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
897
1083
  * Remove undefined check
898
1084
  */
899
1085
  canDismissBlocksGesture = baseEl.canDismiss !== undefined && baseEl.canDismiss !== true && minBreakpoint === 0;
1086
+ /**
1087
+ * If expandToScroll is disabled, we need to swap
1088
+ * the footer visibility to the original, so if the modal
1089
+ * is dismissed, the footer dismisses with the modal
1090
+ * and doesn't stay on the screen after the modal is gone.
1091
+ */
1092
+ if (!expandToScroll) {
1093
+ swapFooterVisibility('original');
1094
+ }
900
1095
  /**
901
1096
  * If we are pulling down, then it is possible we are pulling on the content.
902
1097
  * We do not want scrolling to happen at the same time as the gesture.
@@ -914,6 +1109,13 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
914
1109
  animation.progressStart(true, 1 - currentBreakpoint);
915
1110
  };
916
1111
  const onMove = (detail) => {
1112
+ /**
1113
+ * If `expandToScroll` is disabled, we should not allow the swipe gesture
1114
+ * to continue if the gesture is not pulling down.
1115
+ */
1116
+ if (!expandToScroll && detail.deltaY <= 0) {
1117
+ return;
1118
+ }
917
1119
  /**
918
1120
  * If we are pulling down, then it is possible we are pulling on the content.
919
1121
  * We do not want scrolling to happen at the same time as the gesture.
@@ -1012,6 +1214,19 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
1012
1214
  opacity: `calc(var(--backdrop-opacity) * ${getBackdropValueForSheet(snapToBreakpoint, backdropBreakpoint)})`,
1013
1215
  },
1014
1216
  ]);
1217
+ if (contentAnimation) {
1218
+ /**
1219
+ * The modal content should scroll at any breakpoint when expandToScroll
1220
+ * is disabled. In order to do this, the content needs to be completely
1221
+ * viewable so scrolling can access everything. Otherwise, the default
1222
+ * behavior would show the content off the screen and only allow
1223
+ * scrolling when the sheet is fully expanded.
1224
+ */
1225
+ contentAnimation.keyframes([
1226
+ { offset: 0, maxHeight: `${(1 - breakpointOffset) * 100}%` },
1227
+ { offset: 1, maxHeight: `${snapToBreakpoint * 100}%` },
1228
+ ]);
1229
+ }
1015
1230
  animation.progressStep(0);
1016
1231
  }
1017
1232
  /**
@@ -1019,6 +1234,14 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
1019
1234
  * snapping animation completes.
1020
1235
  */
1021
1236
  gesture.enable(false);
1237
+ /**
1238
+ * If expandToScroll is disabled, we need to swap
1239
+ * the footer visibility to the cloned one so the footer
1240
+ * doesn't flicker when the sheet's height is animated.
1241
+ */
1242
+ if (!expandToScroll && shouldRemainOpen) {
1243
+ swapFooterVisibility('cloned');
1244
+ }
1022
1245
  if (shouldPreventDismiss) {
1023
1246
  handleCanDismiss(baseEl, animation);
1024
1247
  }
@@ -1026,13 +1249,13 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
1026
1249
  onDismiss();
1027
1250
  }
1028
1251
  /**
1029
- * If the sheet is going to be fully expanded then we should enable
1030
- * scrolling immediately. The sheet modal animation takes ~500ms to finish
1031
- * so if we wait until then there is a visible delay for when scrolling is
1032
- * re-enabled. Native iOS allows for scrolling on the sheet modal as soon
1033
- * as the gesture is released, so we align with that.
1252
+ * Enables scrolling immediately if the sheet is about to fully expand
1253
+ * or if it allows scrolling at any breakpoint. Without this, there would
1254
+ * be a ~500ms delay while the modal animation completes, causing a
1255
+ * noticeable lag. Native iOS allows scrolling as soon as the gesture is
1256
+ * released, so we align with that behavior.
1034
1257
  */
1035
- if (contentEl && snapToBreakpoint === breakpoints[breakpoints.length - 1]) {
1258
+ if (contentEl && (snapToBreakpoint === breakpoints[breakpoints.length - 1] || !expandToScroll)) {
1036
1259
  contentEl.scrollY = true;
1037
1260
  }
1038
1261
  return new Promise((resolve) => {
@@ -1050,6 +1273,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
1050
1273
  raf(() => {
1051
1274
  wrapperAnimation.keyframes([...SheetDefaults.WRAPPER_KEYFRAMES]);
1052
1275
  backdropAnimation.keyframes([...SheetDefaults.BACKDROP_KEYFRAMES]);
1276
+ contentAnimation === null || contentAnimation === void 0 ? void 0 : contentAnimation.keyframes([...SheetDefaults.CONTENT_KEYFRAMES]);
1053
1277
  animation.progressStart(true, 1 - snapToBreakpoint);
1054
1278
  currentBreakpoint = snapToBreakpoint;
1055
1279
  onBreakpointChange(currentBreakpoint);
@@ -1102,10 +1326,10 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
1102
1326
  };
1103
1327
  };
1104
1328
 
1105
- 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{--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}";
1329
+ 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}:host(.modal-sheet.modal-no-expand-scroll) ion-footer ion-toolbar:first-of-type{padding-top:6px}";
1106
1330
  const IonModalIosStyle0 = modalIosCss;
1107
1331
 
1108
- 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{--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}";
1332
+ 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}";
1109
1333
  const IonModalMdStyle0 = modalMdCss;
1110
1334
 
1111
1335
  const Modal = /*@__PURE__*/ proxyCustomElement(class Modal extends HTMLElement {
@@ -1176,6 +1400,7 @@ const Modal = /*@__PURE__*/ proxyCustomElement(class Modal extends HTMLElement {
1176
1400
  this.enterAnimation = undefined;
1177
1401
  this.leaveAnimation = undefined;
1178
1402
  this.breakpoints = undefined;
1403
+ this.expandToScroll = true;
1179
1404
  this.initialBreakpoint = undefined;
1180
1405
  this.backdropBreakpoint = 0;
1181
1406
  this.handle = undefined;
@@ -1391,6 +1616,7 @@ const Modal = /*@__PURE__*/ proxyCustomElement(class Modal extends HTMLElement {
1391
1616
  presentingEl: presentingElement,
1392
1617
  currentBreakpoint: this.initialBreakpoint,
1393
1618
  backdropBreakpoint: this.backdropBreakpoint,
1619
+ expandToScroll: this.expandToScroll,
1394
1620
  });
1395
1621
  /* tslint:disable-next-line */
1396
1622
  if (typeof window !== 'undefined') {
@@ -1441,7 +1667,10 @@ const Modal = /*@__PURE__*/ proxyCustomElement(class Modal extends HTMLElement {
1441
1667
  // should be in the DOM and referenced by now, except
1442
1668
  // for the presenting el
1443
1669
  const animationBuilder = this.leaveAnimation || config.get('modalLeave', iosLeaveAnimation);
1444
- const ani = (this.animation = animationBuilder(el, { presentingEl: this.presentingElement }));
1670
+ const ani = (this.animation = animationBuilder(el, {
1671
+ presentingEl: this.presentingElement,
1672
+ expandToScroll: this.expandToScroll,
1673
+ }));
1445
1674
  const contentEl = findIonContent(el);
1446
1675
  if (!contentEl) {
1447
1676
  printIonContentErrorMsg(el);
@@ -1486,9 +1715,10 @@ const Modal = /*@__PURE__*/ proxyCustomElement(class Modal extends HTMLElement {
1486
1715
  presentingEl: this.presentingElement,
1487
1716
  currentBreakpoint: initialBreakpoint,
1488
1717
  backdropBreakpoint,
1718
+ expandToScroll: this.expandToScroll,
1489
1719
  }));
1490
1720
  ani.progressStart(true, 1);
1491
- const { gesture, moveSheetToBreakpoint } = createSheetGesture(this.el, this.backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, ani, this.sortedBreakpoints, () => { var _a; return (_a = this.currentBreakpoint) !== null && _a !== void 0 ? _a : 0; }, () => this.sheetOnDismiss(), (breakpoint) => {
1721
+ const { gesture, moveSheetToBreakpoint } = createSheetGesture(this.el, this.backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, ani, this.sortedBreakpoints, this.expandToScroll, () => { var _a; return (_a = this.currentBreakpoint) !== null && _a !== void 0 ? _a : 0; }, () => this.sheetOnDismiss(), (breakpoint) => {
1492
1722
  if (this.currentBreakpoint !== breakpoint) {
1493
1723
  this.currentBreakpoint = breakpoint;
1494
1724
  this.ionBreakpointDidChange.emit({ breakpoint });
@@ -1566,6 +1796,7 @@ const Modal = /*@__PURE__*/ proxyCustomElement(class Modal extends HTMLElement {
1566
1796
  presentingEl: presentingElement,
1567
1797
  currentBreakpoint: (_a = this.currentBreakpoint) !== null && _a !== void 0 ? _a : this.initialBreakpoint,
1568
1798
  backdropBreakpoint: this.backdropBreakpoint,
1799
+ expandToScroll: this.expandToScroll,
1569
1800
  });
1570
1801
  if (dismissed) {
1571
1802
  const { delegate } = this.getDelegate();
@@ -1651,23 +1882,23 @@ const Modal = /*@__PURE__*/ proxyCustomElement(class Modal extends HTMLElement {
1651
1882
  return true;
1652
1883
  }
1653
1884
  render() {
1654
- const { handle, isSheetModal, presentingElement, htmlAttributes, handleBehavior, inheritedAttributes, focusTrap } = this;
1885
+ const { handle, isSheetModal, presentingElement, htmlAttributes, handleBehavior, inheritedAttributes, focusTrap, expandToScroll, } = this;
1655
1886
  const showHandle = handle !== false && isSheetModal;
1656
1887
  const mode = getIonMode(this);
1657
1888
  const isCardModal = presentingElement !== undefined && mode === 'ios';
1658
1889
  const isHandleCycle = handleBehavior === 'cycle';
1659
- return (h(Host, Object.assign({ key: 'b4da5111fe4719fa450c39b2d4bd884a302a7924', "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
1890
+ return (h(Host, Object.assign({ key: 'e661562f9e4126136cee337e4ab8ca69ac80faae', "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
1660
1891
  zIndex: `${20000 + this.overlayIndex}`,
1661
- }, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, '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 }), h("ion-backdrop", { key: 'c12dbf747e0eb914eaf1331798548ffc7e147763', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && h("div", { key: 'da546ee80c6576b5acc66e959fd5009e0b9a8160', class: "modal-shadow" }), h("div", Object.assign({ key: '306ebe6427440ad5f7ed36d590e562d15a503b75',
1892
+ }, 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 }), h("ion-backdrop", { key: '9221692e0e111f99e80239ca44faaaed9b288425', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && h("div", { key: '20def7088d31e5eb13c3f2404c514cd8b74cd966', class: "modal-shadow" }), h("div", Object.assign({ key: 'b11229330571d4ff7b9136dfdddcd7d759ada876',
1662
1893
  /*
1663
1894
  role and aria-modal must be used on the
1664
1895
  same element. They must also be set inside the
1665
1896
  shadow DOM otherwise ion-button will not be highlighted
1666
1897
  when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
1667
1898
  */
1668
- role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (h("button", { key: 'c5d17e346fe255a7c0cacbbf15c0083f2d09c488', class: "modal-handle",
1899
+ role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (h("button", { key: '95b2a62477dfbc063a91910f0d37357388cfd914', class: "modal-handle",
1669
1900
  // Prevents the handle from receiving keyboard focus when it does not cycle
1670
- tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle" })), h("slot", { key: '5cc714170a00b67f3eda0cd1d6f37c1489a99c83' }))));
1901
+ tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle" })), h("slot", { key: 'fba17dfdbdffbfd8992f473f633d172c5124dc19' }))));
1671
1902
  }
1672
1903
  get el() { return this; }
1673
1904
  static get watchers() { return {
@@ -1686,6 +1917,7 @@ const Modal = /*@__PURE__*/ proxyCustomElement(class Modal extends HTMLElement {
1686
1917
  "enterAnimation": [16],
1687
1918
  "leaveAnimation": [16],
1688
1919
  "breakpoints": [16],
1920
+ "expandToScroll": [4, "expand-to-scroll"],
1689
1921
  "initialBreakpoint": [2, "initial-breakpoint"],
1690
1922
  "backdropBreakpoint": [2, "backdrop-breakpoint"],
1691
1923
  "handle": [4],
@@ -86,10 +86,10 @@ const PickerColumnOption = /*@__PURE__*/ proxyCustomElement(class PickerColumnOp
86
86
  render() {
87
87
  const { color, disabled, ariaLabel } = this;
88
88
  const mode = getIonMode(this);
89
- return (h(Host, { key: 'c743c6ef44bb9f765cc15b3b5d2864de6520203a', class: createColorClasses(color, {
89
+ return (h(Host, { key: 'c1353e99c2aa19c0e3ddbe433557ed18e72e1c66', class: createColorClasses(color, {
90
90
  [mode]: true,
91
91
  ['option-disabled']: disabled,
92
- }) }, h("button", { key: '4c3d9eb245c52b2c007f727e145cfb55759bd7a9', tabindex: "-1", "aria-label": ariaLabel, disabled: disabled, onClick: () => this.onClick() }, h("slot", { key: '4c907d2187cbe9d5941e27f2b12578e2b7271461' }))));
92
+ }) }, h("button", { key: 'b4ee62ecf7458a07a56e8aa494485766a87a3fcb', tabindex: "-1", "aria-label": ariaLabel, disabled: disabled, onClick: () => this.onClick() }, h("slot", { key: '9ab1e4700c27103b676670a4b3521c183c6ab83d' }))));
93
93
  }
94
94
  get el() { return this; }
95
95
  static get watchers() { return {
@@ -343,9 +343,9 @@ const PickerColumnCmp = /*@__PURE__*/ proxyCustomElement(class PickerColumnCmp e
343
343
  render() {
344
344
  const col = this.col;
345
345
  const mode = getIonMode(this);
346
- return (h(Host, { key: 'c015eb8bc01b3287cbd1d71af0aa311b6be89d36', 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: {
346
+ return (h(Host, { key: '88a3c9397c9ac92dd814074c8ae6ecf8e3420a2c', 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: {
347
347
  'max-width': this.col.columnWidth,
348
- } }, col.prefix && (h("div", { key: 'f9de3fe2f5c7ad3256d6e5f44b6d03a2b1f96ffb', class: "picker-prefix", style: { width: col.prefixWidth } }, col.prefix)), h("div", { key: '10f9c12aa174f96c7cf9adc30efbb26695c0aa64', class: "picker-opts", style: { maxWidth: col.optionsWidth }, ref: (el) => (this.optsEl = el) }, col.options.map((o, index) => (h("button", { "aria-label": o.ariaLabel, class: { 'picker-opt': true, 'picker-opt-disabled': !!o.disabled }, "opt-index": index }, o.text)))), col.suffix && (h("div", { key: '1d9c0892ce56e0da9044c79eb953827166f5190b', class: "picker-suffix", style: { width: col.suffixWidth } }, col.suffix))));
348
+ } }, col.prefix && (h("div", { key: '4491a705d15337e6f45f3cf6fd21af5242474729', class: "picker-prefix", style: { width: col.prefixWidth } }, col.prefix)), h("div", { key: 'b0dd4b7a7a4c1edc4b73e7fb134ac85264072365', class: "picker-opts", style: { maxWidth: col.optionsWidth }, ref: (el) => (this.optsEl = el) }, col.options.map((o, index) => (h("button", { "aria-label": o.ariaLabel, class: { 'picker-opt': true, 'picker-opt-disabled': !!o.disabled }, "opt-index": index }, o.text)))), col.suffix && (h("div", { key: 'c16419ce6481d60fc3ba6b8d102a4edf0ede02aa', class: "picker-suffix", style: { width: col.suffixWidth } }, col.suffix))));
349
349
  }
350
350
  get el() { return this; }
351
351
  static get watchers() { return {
@@ -1294,9 +1294,9 @@ const Popover = /*@__PURE__*/ proxyCustomElement(class Popover extends HTMLEleme
1294
1294
  const { onLifecycle, parentPopover, dismissOnSelect, side, arrow, htmlAttributes, focusTrap } = this;
1295
1295
  const desktop = isPlatform('desktop');
1296
1296
  const enableArrow = arrow && !parentPopover;
1297
- return (h(Host, Object.assign({ key: 'ffe8b37c9ffb5cac210a7307e6cdfcf78712905b', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
1297
+ return (h(Host, Object.assign({ key: '48f108a9b74f121559626889dd5a1fcccf38fc3d', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
1298
1298
  zIndex: `${20000 + this.overlayIndex}`,
1299
- }, 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 && h("ion-backdrop", { key: '12b3ffa3928b4d56a4f09c3d2f5d493d47b45255', tappable: this.backdropDismiss, visible: this.showBackdrop, part: "backdrop" }), h("div", { key: '2c2862d5c7e75b637973c712b4982bf4978c0cdf', class: "popover-wrapper ion-overlay-wrapper", onClick: dismissOnSelect ? () => this.dismiss() : undefined }, enableArrow && h("div", { key: '0cfacc52afaa7abc28c1b7742889d7a1c23a37ad', class: "popover-arrow", part: "arrow" }), h("div", { key: '3ef570c44d4fe7f063dd419008c92c8c40d3cd22', class: "popover-content", part: "content" }, h("slot", { key: '6fc5dfdce20fee1642bc1f05d41b5bf7d1034457' })))));
1299
+ }, 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 && h("ion-backdrop", { key: '580c14ab48472534f59eedc5ba7fa486df25ed4e', tappable: this.backdropDismiss, visible: this.showBackdrop, part: "backdrop" }), h("div", { key: '9bcf47893e8d3053e2baa40511785d84feb4038c', class: "popover-wrapper ion-overlay-wrapper", onClick: dismissOnSelect ? () => this.dismiss() : undefined }, enableArrow && h("div", { key: '4d47f2bdc01a546a88190c07f8f4700f21de6715', class: "popover-arrow", part: "arrow" }), h("div", { key: '70018c088654c1996e305b7b6b114419e97824ef', class: "popover-content", part: "content" }, h("slot", { key: '3de8e1959b8facba2fbe694947704832200d8276' })))));
1300
1300
  }
1301
1301
  get el() { return this; }
1302
1302
  static get watchers() { return {