@ionic/core 8.7.17-dev.11771959013.18adabe2 → 8.7.17-dev.11772055571.14fddd38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (525) hide show
  1. package/components/action-sheet.js +561 -1
  2. package/components/alert.js +610 -1
  3. package/components/animation.js +817 -1
  4. package/components/backdrop.js +72 -1
  5. package/components/button-active.js +64 -1
  6. package/components/button.js +303 -1
  7. package/components/buttons.js +56 -1
  8. package/components/capacitor.js +10 -1
  9. package/components/checkbox.js +261 -1
  10. package/components/config.js +192 -1
  11. package/components/content.js +475 -1
  12. package/components/cubic-bezier.js +87 -1
  13. package/components/data.js +1635 -1
  14. package/components/dir.js +15 -1
  15. package/components/focus-visible.js +72 -1
  16. package/components/framework-delegate.js +137 -1
  17. package/components/gesture-controller.js +192 -1
  18. package/components/haptic.js +155 -1
  19. package/components/hardware-back-button.js +112 -1
  20. package/components/header.js +417 -1
  21. package/components/helpers.js +336 -1
  22. package/components/icon.js +456 -1
  23. package/components/index.d.ts +0 -2
  24. package/components/index.js +115 -1
  25. package/components/index2.js +416 -1
  26. package/components/index3.js +452 -1
  27. package/components/index4.js +118 -1
  28. package/components/index5.js +303 -1
  29. package/components/index6.js +29 -1
  30. package/components/index7.js +164 -1
  31. package/components/index8.js +125 -1
  32. package/components/index9.js +4 -1
  33. package/components/input-shims.js +624 -1
  34. package/components/input.utils.js +144 -1
  35. package/components/ion-accordion-group.js +269 -1
  36. package/components/ion-accordion.js +457 -1
  37. package/components/ion-action-sheet.js +6 -1
  38. package/components/ion-alert.js +6 -1
  39. package/components/ion-app.js +128 -1
  40. package/components/ion-avatar.js +41 -1
  41. package/components/ion-back-button.js +131 -1
  42. package/components/ion-backdrop.js +6 -1
  43. package/components/ion-badge.js +47 -1
  44. package/components/ion-breadcrumb.js +137 -1
  45. package/components/ion-breadcrumbs.js +164 -1
  46. package/components/ion-button.js +6 -1
  47. package/components/ion-buttons.js +6 -1
  48. package/components/ion-card-content.js +45 -1
  49. package/components/ion-card-header.js +56 -1
  50. package/components/ion-card-subtitle.js +48 -1
  51. package/components/ion-card-title.js +48 -1
  52. package/components/ion-card.js +107 -1
  53. package/components/ion-checkbox.js +6 -1
  54. package/components/ion-chip.js +66 -1
  55. package/components/ion-col.js +163 -1
  56. package/components/ion-content.js +6 -1
  57. package/components/ion-datetime-button.js +384 -1
  58. package/components/ion-datetime.js +2046 -1
  59. package/components/ion-fab-button.js +151 -1
  60. package/components/ion-fab-list.js +66 -1
  61. package/components/ion-fab.js +101 -1
  62. package/components/ion-footer.js +159 -1
  63. package/components/ion-grid.js +46 -1
  64. package/components/ion-header.js +6 -1
  65. package/components/ion-icon.js +6 -1
  66. package/components/ion-img.js +124 -1
  67. package/components/ion-infinite-scroll-content.js +70 -1
  68. package/components/ion-infinite-scroll.js +236 -1
  69. package/components/ion-input-otp.js +683 -1
  70. package/components/ion-input-password-toggle.js +129 -1
  71. package/components/ion-input.js +617 -1
  72. package/components/ion-item-divider.js +59 -1
  73. package/components/ion-item-group.js +46 -1
  74. package/components/ion-item-option.js +91 -1
  75. package/components/ion-item-options.js +73 -1
  76. package/components/ion-item-sliding.js +458 -1
  77. package/components/ion-item.js +6 -1
  78. package/components/ion-label.js +6 -1
  79. package/components/ion-list-header.js +6 -1
  80. package/components/ion-list.js +6 -1
  81. package/components/ion-loading.js +344 -1
  82. package/components/ion-menu-button.js +110 -1
  83. package/components/ion-menu-toggle.js +64 -1
  84. package/components/ion-menu.js +745 -1
  85. package/components/ion-modal.js +6 -1
  86. package/components/ion-nav-link.js +64 -1
  87. package/components/ion-nav.js +956 -1
  88. package/components/ion-note.js +47 -1
  89. package/components/ion-picker-column-option.js +6 -1
  90. package/components/ion-picker-column.js +6 -1
  91. package/components/ion-picker-legacy-column.js +6 -1
  92. package/components/ion-picker-legacy.js +343 -1
  93. package/components/ion-picker.js +6 -1
  94. package/components/ion-popover.js +6 -1
  95. package/components/ion-progress-bar.js +101 -1
  96. package/components/ion-radio-group.js +6 -1
  97. package/components/ion-radio.js +6 -1
  98. package/components/ion-range.js +853 -1
  99. package/components/ion-refresher-content.js +89 -1
  100. package/components/ion-refresher.js +751 -1
  101. package/components/ion-reorder-group.js +322 -1
  102. package/components/ion-reorder.js +60 -1
  103. package/components/ion-ripple-effect.js +6 -1
  104. package/components/ion-route-redirect.js +45 -1
  105. package/components/ion-route.js +74 -1
  106. package/components/ion-router-link.js +61 -1
  107. package/components/ion-router-outlet.js +227 -1
  108. package/components/ion-router.js +841 -1
  109. package/components/ion-row.js +36 -1
  110. package/components/ion-searchbar.js +530 -1
  111. package/components/ion-segment-button.js +174 -1
  112. package/components/ion-segment-content.js +35 -1
  113. package/components/ion-segment-view.js +148 -1
  114. package/components/ion-segment.js +602 -1
  115. package/components/ion-select-modal.js +6 -1
  116. package/components/ion-select-option.js +46 -1
  117. package/components/ion-select-popover.js +6 -1
  118. package/components/ion-select.js +1037 -1
  119. package/components/ion-skeleton-text.js +65 -1
  120. package/components/ion-spinner.js +6 -1
  121. package/components/ion-split-pane.js +197 -1
  122. package/components/ion-tab-bar.js +115 -1
  123. package/components/ion-tab-button.js +128 -1
  124. package/components/ion-tab.js +91 -1
  125. package/components/ion-tabs.js +205 -1
  126. package/components/ion-text.js +42 -1
  127. package/components/ion-textarea.js +554 -1
  128. package/components/ion-thumbnail.js +36 -1
  129. package/components/ion-title.js +6 -1
  130. package/components/ion-toast.js +941 -1
  131. package/components/ion-toggle.js +361 -1
  132. package/components/ion-toolbar.js +6 -1
  133. package/components/ionic-global.js +144 -1
  134. package/components/ios.transition.js +672 -1
  135. package/components/item.js +302 -1
  136. package/components/keyboard-controller.js +162 -1
  137. package/components/keyboard.js +141 -1
  138. package/components/keyboard2.js +76 -1
  139. package/components/label.js +100 -1
  140. package/components/list-header.js +47 -1
  141. package/components/list.js +68 -1
  142. package/components/lock-controller.js +35 -1
  143. package/components/md.transition.js +51 -1
  144. package/components/menu-toggle-util.js +9 -1
  145. package/components/modal.js +2674 -1
  146. package/components/notch-controller.js +150 -1
  147. package/components/overlays.js +912 -1
  148. package/components/picker-column-option.js +136 -1
  149. package/components/picker-column.js +595 -1
  150. package/components/picker-column2.js +377 -1
  151. package/components/picker.js +498 -1
  152. package/components/popover.js +1502 -1
  153. package/components/radio-group.js +287 -1
  154. package/components/radio.js +229 -1
  155. package/components/refresher.utils.js +193 -1
  156. package/components/ripple-effect.js +109 -1
  157. package/components/select-modal.js +196 -1
  158. package/components/select-popover.js +189 -1
  159. package/components/spinner.js +224 -1
  160. package/components/status-tap.js +36 -1
  161. package/components/swipe-back.js +75 -1
  162. package/components/theme.js +40 -1
  163. package/components/title.js +70 -1
  164. package/components/toolbar.js +89 -1
  165. package/components/validity.js +14 -1
  166. package/components/watch-options.js +44 -1
  167. package/dist/cjs/{animation-Dg4yiuR2.js → animation-Bt3H9L1C.js} +1 -1
  168. package/dist/cjs/app-globals-Ciccnk9_.js +10 -0
  169. package/dist/cjs/{button-active-FscMI17-.js → button-active-CMc8cD90.js} +1 -1
  170. package/dist/cjs/{config-BukYi_pW.js → config-C5fsO43a.js} +1 -1
  171. package/dist/cjs/{data-BYlBjkMU.js → data-JwZKaIQB.js} +1 -1
  172. package/dist/cjs/{framework-delegate-CRgp8o_p.js → framework-delegate-DMJRBuDi.js} +1 -1
  173. package/dist/cjs/{hardware-back-button-C4rMJ5uI.js → hardware-back-button-VCK4V3mG.js} +1 -1
  174. package/dist/cjs/{helpers-CxTYJdbT.js → helpers-DrTqNghc.js} +1 -1
  175. package/dist/cjs/{index-C845Ti6K.js → index-094mMFB-.js} +4 -4
  176. package/dist/cjs/{index-YcSftOMz.js → index-C534ULug.js} +2 -2
  177. package/dist/cjs/{index-MbaBbWXk.js → index-CO6eryBo.js} +2 -2
  178. package/dist/cjs/{index-CqT-2gKy.js → index-D6Wc6v08.js} +382 -503
  179. package/dist/cjs/{index-CFUwM5x_.js → index-DrMUZJj6.js} +5 -5
  180. package/dist/cjs/index.cjs.js +12 -12
  181. package/dist/cjs/{input-shims-DlFhYYTs.js → input-shims-CW0KUFTQ.js} +3 -3
  182. package/dist/cjs/{input.utils-DmeJ8dmo.js → input.utils-B_QROI2g.js} +2 -2
  183. package/dist/cjs/ion-accordion_2.cjs.entry.js +15 -23
  184. package/dist/cjs/ion-action-sheet.cjs.entry.js +15 -21
  185. package/dist/cjs/ion-alert.cjs.entry.js +17 -25
  186. package/dist/cjs/ion-app_8.cjs.entry.js +40 -44
  187. package/dist/cjs/ion-avatar_3.cjs.entry.js +12 -12
  188. package/dist/cjs/ion-back-button.cjs.entry.js +7 -7
  189. package/dist/cjs/ion-backdrop.cjs.entry.js +6 -6
  190. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +14 -20
  191. package/dist/cjs/ion-button_2.cjs.entry.js +18 -36
  192. package/dist/cjs/ion-card_5.cjs.entry.js +23 -23
  193. package/dist/cjs/ion-checkbox.cjs.entry.js +7 -7
  194. package/dist/cjs/ion-chip.cjs.entry.js +6 -6
  195. package/dist/cjs/ion-col_3.cjs.entry.js +8 -8
  196. package/dist/cjs/ion-datetime-button.cjs.entry.js +8 -8
  197. package/dist/cjs/ion-datetime_3.cjs.entry.js +39 -67
  198. package/dist/cjs/ion-fab_3.cjs.entry.js +13 -17
  199. package/dist/cjs/ion-img.cjs.entry.js +6 -8
  200. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +13 -17
  201. package/dist/cjs/ion-input-otp.cjs.entry.js +10 -16
  202. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +7 -9
  203. package/dist/cjs/ion-input.cjs.entry.js +13 -21
  204. package/dist/cjs/ion-item-option_3.cjs.entry.js +15 -17
  205. package/dist/cjs/ion-item_8.cjs.entry.js +36 -42
  206. package/dist/cjs/ion-loading.cjs.entry.js +14 -18
  207. package/dist/cjs/ion-menu_3.cjs.entry.js +22 -30
  208. package/dist/cjs/ion-modal.cjs.entry.js +221 -62
  209. package/dist/cjs/ion-nav_2.cjs.entry.js +10 -14
  210. package/dist/cjs/ion-picker-column-option.cjs.entry.js +8 -10
  211. package/dist/cjs/ion-picker-column.cjs.entry.js +7 -11
  212. package/dist/cjs/ion-picker.cjs.entry.js +6 -6
  213. package/dist/cjs/ion-popover.cjs.entry.js +15 -21
  214. package/dist/cjs/ion-progress-bar.cjs.entry.js +7 -7
  215. package/dist/cjs/ion-radio_2.cjs.entry.js +13 -17
  216. package/dist/cjs/ion-range.cjs.entry.js +54 -180
  217. package/dist/cjs/ion-refresher_2.cjs.entry.js +14 -45
  218. package/dist/cjs/ion-reorder_2.cjs.entry.js +11 -13
  219. package/dist/cjs/ion-ripple-effect.cjs.entry.js +4 -4
  220. package/dist/cjs/ion-route_4.cjs.entry.js +10 -20
  221. package/dist/cjs/ion-searchbar.cjs.entry.js +12 -22
  222. package/dist/cjs/ion-segment-content.cjs.entry.js +3 -3
  223. package/dist/cjs/ion-segment-view.cjs.entry.js +5 -5
  224. package/dist/cjs/ion-segment_2.cjs.entry.js +16 -26
  225. package/dist/cjs/ion-select-modal.cjs.entry.js +12 -12
  226. package/dist/cjs/ion-select_3.cjs.entry.js +21 -29
  227. package/dist/cjs/ion-spinner.cjs.entry.js +4 -4
  228. package/dist/cjs/ion-split-pane.cjs.entry.js +9 -15
  229. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +12 -14
  230. package/dist/cjs/ion-tab_2.cjs.entry.js +8 -10
  231. package/dist/cjs/ion-text.cjs.entry.js +4 -4
  232. package/dist/cjs/ion-textarea.cjs.entry.js +12 -18
  233. package/dist/cjs/ion-toast.cjs.entry.js +15 -21
  234. package/dist/cjs/ion-toggle.cjs.entry.js +8 -10
  235. package/dist/cjs/{ionic-global-Bc3kJi1Z.js → ionic-global-HMVqOFGO.js} +1 -1
  236. package/dist/cjs/ionic.cjs.js +5 -5
  237. package/dist/cjs/{ios.transition-trBiC95R.js → ios.transition-BOt_uW73.js} +4 -4
  238. package/dist/cjs/loader.cjs.js +4 -4
  239. package/dist/cjs/{md.transition-CUQECuvD.js → md.transition-Dt968VXB.js} +4 -4
  240. package/dist/cjs/{notch-controller-sD-lTpdc.js → notch-controller-Bzqhjm4f.js} +1 -1
  241. package/dist/cjs/{overlays-C2jiBSNQ.js → overlays-B2b-TTbl.js} +5 -5
  242. package/dist/cjs/{status-tap-CCJk5VgT.js → status-tap-g0sWWkXk.js} +3 -3
  243. package/dist/cjs/{swipe-back-BGhTQ1CU.js → swipe-back-BIayeNOD.js} +2 -2
  244. package/dist/collection/collection-manifest.json +2 -2
  245. package/dist/collection/components/accordion-group/accordion-group.js +2 -4
  246. package/dist/collection/components/action-sheet/action-sheet.js +10 -20
  247. package/dist/collection/components/alert/alert.js +12 -24
  248. package/dist/collection/components/back-button/back-button.js +2 -4
  249. package/dist/collection/components/badge/badge.js +1 -2
  250. package/dist/collection/components/breadcrumb/breadcrumb.js +4 -8
  251. package/dist/collection/components/breadcrumbs/breadcrumbs.js +2 -4
  252. package/dist/collection/components/button/button.js +3 -6
  253. package/dist/collection/components/card/card.js +3 -6
  254. package/dist/collection/components/card-header/card-header.js +1 -2
  255. package/dist/collection/components/card-subtitle/card-subtitle.js +1 -2
  256. package/dist/collection/components/card-title/card-title.js +1 -2
  257. package/dist/collection/components/checkbox/checkbox.js +2 -4
  258. package/dist/collection/components/chip/chip.js +1 -2
  259. package/dist/collection/components/content/content.js +4 -8
  260. package/dist/collection/components/datetime/datetime.js +15 -34
  261. package/dist/collection/components/datetime-button/datetime-button.js +1 -2
  262. package/dist/collection/components/fab-button/fab-button.js +3 -6
  263. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +2 -4
  264. package/dist/collection/components/input/input.js +6 -11
  265. package/dist/collection/components/input-otp/input-otp.js +4 -8
  266. package/dist/collection/components/input-password-toggle/input-password-toggle.js +2 -4
  267. package/dist/collection/components/item/item.js +3 -6
  268. package/dist/collection/components/item-divider/item-divider.js +1 -2
  269. package/dist/collection/components/item-option/item-option.js +1 -2
  270. package/dist/collection/components/item-options/item-options.js +1 -2
  271. package/dist/collection/components/item-sliding/item-sliding.js +1 -2
  272. package/dist/collection/components/label/label.js +3 -6
  273. package/dist/collection/components/list-header/list-header.js +1 -2
  274. package/dist/collection/components/loading/loading.js +11 -22
  275. package/dist/collection/components/menu/menu.js +5 -10
  276. package/dist/collection/components/menu-button/menu-button.js +1 -2
  277. package/dist/collection/components/modal/gestures/sheet.js +108 -11
  278. package/dist/collection/components/modal/gestures/swipe-to-close.js +54 -1
  279. package/dist/collection/components/modal/modal.js +112 -58
  280. package/dist/collection/components/nav/nav.js +45 -89
  281. package/dist/collection/components/nav-link/nav-link.js +5 -9
  282. package/dist/collection/components/note/note.js +1 -2
  283. package/dist/collection/components/picker/picker.js +1 -2
  284. package/dist/collection/components/picker-column/picker-column.js +3 -6
  285. package/dist/collection/components/picker-column-option/picker-column-option.js +1 -2
  286. package/dist/collection/components/picker-legacy/picker.js +12 -24
  287. package/dist/collection/components/picker-legacy-column/picker-column.js +2 -4
  288. package/dist/collection/components/popover/popover.js +17 -33
  289. package/dist/collection/components/progress-bar/progress-bar.js +1 -2
  290. package/dist/collection/components/radio/radio.js +1 -2
  291. package/dist/collection/components/radio-group/radio-group.js +3 -6
  292. package/dist/collection/components/range/range.js +50 -189
  293. package/dist/collection/components/refresher/refresher.js +5 -73
  294. package/dist/collection/components/refresher-content/refresher-content.js +4 -8
  295. package/dist/collection/components/reorder-group/reorder-group.js +3 -6
  296. package/dist/collection/components/route/route.js +2 -4
  297. package/dist/collection/components/router/router.js +5 -10
  298. package/dist/collection/components/router-link/router-link.js +3 -6
  299. package/dist/collection/components/router-outlet/router-outlet.js +9 -18
  300. package/dist/collection/components/searchbar/searchbar.js +6 -11
  301. package/dist/collection/components/segment/segment.js +5 -10
  302. package/dist/collection/components/segment-button/segment-button.js +2 -4
  303. package/dist/collection/components/segment-view/segment-view.js +1 -2
  304. package/dist/collection/components/select/select.js +5 -10
  305. package/dist/collection/components/select-modal/select-modal.js +1 -2
  306. package/dist/collection/components/select-popover/select-popover.js +1 -2
  307. package/dist/collection/components/skeleton-text/skeleton-text.js +1 -2
  308. package/dist/collection/components/spinner/spinner.js +2 -4
  309. package/dist/collection/components/tab/tab.js +2 -4
  310. package/dist/collection/components/tab-bar/tab-bar.js +2 -4
  311. package/dist/collection/components/tab-button/tab-button.js +2 -4
  312. package/dist/collection/components/tabs/tabs.js +2 -4
  313. package/dist/collection/components/text/text.js +1 -2
  314. package/dist/collection/components/textarea/textarea.js +3 -6
  315. package/dist/collection/components/title/title.js +2 -4
  316. package/dist/collection/components/toast/toast.js +17 -34
  317. package/dist/collection/components/toggle/toggle.js +2 -4
  318. package/dist/collection/components/toolbar/toolbar.js +1 -2
  319. package/dist/docs.d.ts +0 -37
  320. package/dist/docs.json +442 -971
  321. package/dist/esm/{animation-CnGMT4ji.js → animation-Dt8bGnA-.js} +1 -1
  322. package/dist/esm/app-globals-BDSf8fOA.js +8 -0
  323. package/dist/esm/{button-active-BBx21brx.js → button-active-L570Swow.js} +1 -1
  324. package/dist/esm/{config-TO1rZH52.js → config-mCdtaoPe.js} +1 -1
  325. package/dist/esm/{data-B9iGR5YO.js → data-DCORV9FH.js} +1 -1
  326. package/dist/esm/{framework-delegate-CyxE1S_P.js → framework-delegate-BYawdMXj.js} +1 -1
  327. package/dist/esm/{hardware-back-button-CTe4XmL7.js → hardware-back-button-CPLxO-Ev.js} +1 -1
  328. package/dist/esm/{helpers-Tl8jw6S2.js → helpers-DEn3pfjm.js} +1 -1
  329. package/dist/esm/{index-hW6eNZ3o.js → index-Bs3kT4bc.js} +2 -2
  330. package/dist/esm/{index-IGIE5vDm.js → index-C8IsBmNU.js} +382 -503
  331. package/dist/esm/{index-B2KwgBLx.js → index-CvDIirVx.js} +5 -5
  332. package/dist/esm/{index-BtUdxPjv.js → index-ceb5RaMT.js} +2 -2
  333. package/dist/esm/{index-B-hkiOUh.js → index-r2D9DEro.js} +4 -4
  334. package/dist/esm/index.js +12 -12
  335. package/dist/esm/{input-shims-C1hAaHcP.js → input-shims-DyOpfTg6.js} +3 -3
  336. package/dist/esm/{input.utils-Bxa_DQ7-.js → input.utils-DrvTa8gz.js} +2 -2
  337. package/dist/esm/ion-accordion_2.entry.js +15 -23
  338. package/dist/esm/ion-action-sheet.entry.js +15 -21
  339. package/dist/esm/ion-alert.entry.js +17 -25
  340. package/dist/esm/ion-app_8.entry.js +40 -44
  341. package/dist/esm/ion-avatar_3.entry.js +12 -12
  342. package/dist/esm/ion-back-button.entry.js +7 -7
  343. package/dist/esm/ion-backdrop.entry.js +6 -6
  344. package/dist/esm/ion-breadcrumb_2.entry.js +14 -20
  345. package/dist/esm/ion-button_2.entry.js +18 -36
  346. package/dist/esm/ion-card_5.entry.js +23 -23
  347. package/dist/esm/ion-checkbox.entry.js +7 -7
  348. package/dist/esm/ion-chip.entry.js +6 -6
  349. package/dist/esm/ion-col_3.entry.js +8 -8
  350. package/dist/esm/ion-datetime-button.entry.js +8 -8
  351. package/dist/esm/ion-datetime_3.entry.js +39 -67
  352. package/dist/esm/ion-fab_3.entry.js +13 -17
  353. package/dist/esm/ion-img.entry.js +6 -8
  354. package/dist/esm/ion-infinite-scroll_2.entry.js +13 -17
  355. package/dist/esm/ion-input-otp.entry.js +10 -16
  356. package/dist/esm/ion-input-password-toggle.entry.js +7 -9
  357. package/dist/esm/ion-input.entry.js +13 -21
  358. package/dist/esm/ion-item-option_3.entry.js +15 -17
  359. package/dist/esm/ion-item_8.entry.js +36 -42
  360. package/dist/esm/ion-loading.entry.js +14 -18
  361. package/dist/esm/ion-menu_3.entry.js +22 -30
  362. package/dist/esm/ion-modal.entry.js +221 -62
  363. package/dist/esm/ion-nav_2.entry.js +10 -14
  364. package/dist/esm/ion-picker-column-option.entry.js +8 -10
  365. package/dist/esm/ion-picker-column.entry.js +7 -11
  366. package/dist/esm/ion-picker.entry.js +6 -6
  367. package/dist/esm/ion-popover.entry.js +15 -21
  368. package/dist/esm/ion-progress-bar.entry.js +7 -7
  369. package/dist/esm/ion-radio_2.entry.js +13 -17
  370. package/dist/esm/ion-range.entry.js +54 -180
  371. package/dist/esm/ion-refresher_2.entry.js +14 -45
  372. package/dist/esm/ion-reorder_2.entry.js +11 -13
  373. package/dist/esm/ion-ripple-effect.entry.js +4 -4
  374. package/dist/esm/ion-route_4.entry.js +10 -20
  375. package/dist/esm/ion-searchbar.entry.js +12 -22
  376. package/dist/esm/ion-segment-content.entry.js +3 -3
  377. package/dist/esm/ion-segment-view.entry.js +5 -5
  378. package/dist/esm/ion-segment_2.entry.js +16 -26
  379. package/dist/esm/ion-select-modal.entry.js +12 -12
  380. package/dist/esm/ion-select_3.entry.js +21 -29
  381. package/dist/esm/ion-spinner.entry.js +4 -4
  382. package/dist/esm/ion-split-pane.entry.js +9 -15
  383. package/dist/esm/ion-tab-bar_2.entry.js +12 -14
  384. package/dist/esm/ion-tab_2.entry.js +8 -10
  385. package/dist/esm/ion-text.entry.js +4 -4
  386. package/dist/esm/ion-textarea.entry.js +12 -18
  387. package/dist/esm/ion-toast.entry.js +15 -21
  388. package/dist/esm/ion-toggle.entry.js +8 -10
  389. package/dist/esm/{ionic-global-DfbeLwcV.js → ionic-global-CDrldh-5.js} +1 -1
  390. package/dist/esm/ionic.js +6 -6
  391. package/dist/esm/{ios.transition--aMF-pDH.js → ios.transition-BDzw0_Hm.js} +4 -4
  392. package/dist/esm/loader.js +5 -5
  393. package/dist/esm/{md.transition-BEVbfm8j.js → md.transition-BzDYi3qq.js} +4 -4
  394. package/dist/esm/{notch-controller-DAcvKU57.js → notch-controller-BwelN_JM.js} +1 -1
  395. package/dist/esm/{overlays-F8GHPo-e.js → overlays-D5YkFThA.js} +5 -5
  396. package/dist/esm/{status-tap-BfJqFSLF.js → status-tap-5DQ7Fc4V.js} +3 -3
  397. package/dist/esm/{swipe-back-BZBFwTQV.js → swipe-back-BKw2CAHc.js} +2 -2
  398. package/dist/html.html-data.json +109 -109
  399. package/dist/ionic/index.esm.js +1 -1
  400. package/dist/ionic/ionic.esm.js +1 -1
  401. package/dist/ionic/p-012212e4.entry.js +4 -0
  402. package/dist/ionic/p-074839fc.entry.js +4 -0
  403. package/dist/ionic/p-0dfa5a37.entry.js +4 -0
  404. package/dist/ionic/p-0f418a37.entry.js +4 -0
  405. package/dist/ionic/p-11518b31.entry.js +4 -0
  406. package/dist/ionic/{p-80cac7a2.entry.js → p-11aa58d6.entry.js} +1 -1
  407. package/dist/ionic/p-1838bed5.entry.js +4 -0
  408. package/dist/ionic/p-29721c43.entry.js +4 -0
  409. package/dist/ionic/{p-b67a2114.entry.js → p-2a939845.entry.js} +1 -1
  410. package/dist/ionic/{p-025d2d32.entry.js → p-316c0420.entry.js} +1 -1
  411. package/dist/ionic/p-31f7095f.entry.js +4 -0
  412. package/dist/ionic/p-34642fa1.entry.js +4 -0
  413. package/dist/ionic/p-35696017.entry.js +4 -0
  414. package/dist/ionic/{p-074344b8.entry.js → p-370e4237.entry.js} +1 -1
  415. package/dist/ionic/{p-964090ef.entry.js → p-3a6caca9.entry.js} +1 -1
  416. package/dist/ionic/p-40c261a3.entry.js +4 -0
  417. package/dist/ionic/{p-1fd588a7.entry.js → p-46d74291.entry.js} +1 -1
  418. package/dist/ionic/{p-301c43f8.entry.js → p-49d06882.entry.js} +1 -1
  419. package/dist/ionic/p-4e41ea20.entry.js +4 -0
  420. package/dist/ionic/{p-7c72d482.entry.js → p-51a60e0f.entry.js} +1 -1
  421. package/dist/ionic/{p-9833cf63.entry.js → p-582824c5.entry.js} +1 -1
  422. package/dist/ionic/p-6241ce47.entry.js +4 -0
  423. package/dist/ionic/p-639dd543.entry.js +4 -0
  424. package/dist/ionic/p-6444c606.entry.js +4 -0
  425. package/dist/ionic/{p-9fae83d8.entry.js → p-675b1a31.entry.js} +1 -1
  426. package/dist/ionic/p-6d070558.entry.js +4 -0
  427. package/dist/ionic/p-7268efa5.entry.js +4 -0
  428. package/dist/ionic/{p-b4d52b58.entry.js → p-72c38b88.entry.js} +1 -1
  429. package/dist/ionic/{p-370a60ee.entry.js → p-79bd78f9.entry.js} +1 -1
  430. package/dist/ionic/p-7babec72.entry.js +4 -0
  431. package/dist/ionic/{p-a287e18e.entry.js → p-86f53961.entry.js} +1 -1
  432. package/dist/ionic/{p-277abec1.entry.js → p-94de5cfa.entry.js} +1 -1
  433. package/dist/ionic/{p-e663bc5a.entry.js → p-9575b654.entry.js} +1 -1
  434. package/dist/ionic/{p-c1c9b2bb.entry.js → p-9a2d390d.entry.js} +1 -1
  435. package/dist/ionic/{p-DB_iPQC-.js → p-B0q1YL7N.js} +1 -1
  436. package/dist/ionic/{p-NFFyoJ4Q.js → p-BFvmZNyx.js} +1 -1
  437. package/dist/ionic/p-BKc55Xev.js +4 -0
  438. package/dist/ionic/{p-CYbRmDdy.js → p-BOVrCkpJ.js} +1 -1
  439. package/dist/ionic/{p-C0JvVFMv.js → p-BYEqWnSg.js} +1 -1
  440. package/dist/ionic/p-Bmgaetn_.js +4 -0
  441. package/dist/ionic/{p-BAt5H1ac.js → p-C7hRNDhM.js} +1 -1
  442. package/dist/ionic/p-C8IsBmNU.js +5 -0
  443. package/dist/ionic/p-CJxh_yLS.js +4 -0
  444. package/dist/ionic/{p-CGmVTdWh.js → p-CTfR9YZG.js} +1 -1
  445. package/dist/ionic/{p-B8xlpH8p.js → p-CwgG81ZD.js} +1 -1
  446. package/dist/ionic/{p-CmFz1Mjc.js → p-D-eFFUkA.js} +1 -1
  447. package/dist/ionic/{p-BvFYtOdE.js → p-D0dMcSkw.js} +1 -1
  448. package/dist/ionic/{p-DjriolRs.js → p-DCv9sLH2.js} +1 -1
  449. package/dist/ionic/{p-Bum7H1fw.js → p-DDb5r57F.js} +1 -1
  450. package/dist/ionic/{p-DLbbmF9h.js → p-DNcfiJwE.js} +1 -1
  451. package/dist/ionic/p-DUt5fQmA.js +4 -0
  452. package/dist/ionic/p-DZRJwG4S.js +4 -0
  453. package/dist/ionic/{p-gbVXD275.js → p-DbQ5QkTP.js} +1 -1
  454. package/dist/ionic/{p-BxIcPWoV.js → p-Dc45iWE4.js} +1 -1
  455. package/dist/ionic/{p-DTPR1Wpn.js → p-DdR6rpbR.js} +1 -1
  456. package/dist/ionic/{p-GWUGgWx6.js → p-QHYY4sjU.js} +1 -1
  457. package/dist/ionic/p-a127bee2.entry.js +4 -0
  458. package/dist/ionic/{p-f5dfb9a3.entry.js → p-ac4eb91d.entry.js} +1 -1
  459. package/dist/ionic/{p-ca31010f.entry.js → p-b0a7585c.entry.js} +1 -1
  460. package/dist/ionic/p-b3d44509.entry.js +4 -0
  461. package/dist/ionic/{p-bced1f3e.entry.js → p-c73627c8.entry.js} +1 -1
  462. package/dist/ionic/p-cc45bcbc.entry.js +4 -0
  463. package/dist/ionic/p-d0a2a1ab.entry.js +4 -0
  464. package/dist/ionic/{p-9745651b.entry.js → p-d126e8d3.entry.js} +1 -1
  465. package/dist/ionic/{p-b440381f.entry.js → p-d1f54e28.entry.js} +1 -1
  466. package/dist/ionic/{p-1fa1406c.entry.js → p-d2489bf2.entry.js} +1 -1
  467. package/dist/ionic/p-d3014190.entry.js +4 -0
  468. package/dist/ionic/{p-a84f2d21.entry.js → p-da7d04cc.entry.js} +1 -1
  469. package/dist/ionic/p-db82892c.entry.js +4 -0
  470. package/dist/ionic/{p-b2d5238b.entry.js → p-dbbe606a.entry.js} +1 -1
  471. package/dist/ionic/{p-28d7852f.entry.js → p-dd1aef77.entry.js} +1 -1
  472. package/dist/ionic/p-e1d1f3cc.entry.js +4 -0
  473. package/dist/ionic/{p-c3e65e45.entry.js → p-f8f22cc0.entry.js} +1 -1
  474. package/dist/ionic/{p-9802c88e.entry.js → p-f9061316.entry.js} +1 -1
  475. package/dist/types/components/datetime/datetime.d.ts +0 -9
  476. package/dist/types/components/header/header.utils.d.ts +1 -2
  477. package/dist/types/components/modal/gestures/sheet.d.ts +2 -2
  478. package/dist/types/components/modal/gestures/swipe-to-close.d.ts +2 -2
  479. package/dist/types/components/modal/modal-interface.d.ts +7 -0
  480. package/dist/types/components/modal/modal.d.ts +17 -1
  481. package/dist/types/components/range/range-interface.d.ts +0 -1
  482. package/dist/types/components/range/range.d.ts +4 -33
  483. package/dist/types/components/refresher/refresher-interface.d.ts +0 -7
  484. package/dist/types/components/refresher/refresher.d.ts +3 -16
  485. package/dist/types/components.d.ts +206 -929
  486. package/dist/types/interface.d.ts +2 -2
  487. package/dist/types/stencil-public-runtime.d.ts +14 -126
  488. package/dist/types/utils/gesture/listener.d.ts +1 -2
  489. package/hydrate/index.d.ts +0 -12
  490. package/hydrate/index.js +1550 -5375
  491. package/hydrate/index.mjs +1551 -5374
  492. package/package.json +2 -2
  493. package/dist/cjs/app-globals-CLI8xCmk.js +0 -11
  494. package/dist/esm/app-globals-DhZjtldk.js +0 -9
  495. package/dist/ionic/p-02acdef4.entry.js +0 -4
  496. package/dist/ionic/p-04e2c388.entry.js +0 -4
  497. package/dist/ionic/p-13ade5c8.entry.js +0 -4
  498. package/dist/ionic/p-1b02923f.entry.js +0 -4
  499. package/dist/ionic/p-1bd477a9.entry.js +0 -4
  500. package/dist/ionic/p-239a27a4.entry.js +0 -4
  501. package/dist/ionic/p-3e143d1d.entry.js +0 -4
  502. package/dist/ionic/p-4431ef7e.entry.js +0 -4
  503. package/dist/ionic/p-463767ce.entry.js +0 -4
  504. package/dist/ionic/p-4f888343.entry.js +0 -4
  505. package/dist/ionic/p-51c11c47.entry.js +0 -4
  506. package/dist/ionic/p-56050077.entry.js +0 -4
  507. package/dist/ionic/p-6a3a5aae.entry.js +0 -4
  508. package/dist/ionic/p-6b97f2a3.entry.js +0 -4
  509. package/dist/ionic/p-77de9c60.entry.js +0 -4
  510. package/dist/ionic/p-7d20f4f8.entry.js +0 -4
  511. package/dist/ionic/p-91fc7352.entry.js +0 -4
  512. package/dist/ionic/p-93845421.entry.js +0 -4
  513. package/dist/ionic/p-96a2e768.entry.js +0 -4
  514. package/dist/ionic/p-9d1676bb.entry.js +0 -4
  515. package/dist/ionic/p-BW_TRJm8.js +0 -4
  516. package/dist/ionic/p-CtA-yJYy.js +0 -4
  517. package/dist/ionic/p-D8HJQ1qq.js +0 -4
  518. package/dist/ionic/p-DtVZDHlS.js +0 -4
  519. package/dist/ionic/p-IGIE5vDm.js +0 -5
  520. package/dist/ionic/p-a805674e.entry.js +0 -4
  521. package/dist/ionic/p-a81ae2cd.entry.js +0 -4
  522. package/dist/ionic/p-cbf245b5.entry.js +0 -4
  523. package/dist/ionic/p-d68b665a.entry.js +0 -4
  524. package/dist/ionic/p-efe86ed9.entry.js +0 -4
  525. package/dist/ionic/p-hNN3VvaC.js +0 -4
@@ -90,8 +90,7 @@ export class MenuButton {
90
90
  "Color": {
91
91
  "location": "import",
92
92
  "path": "../../interface",
93
- "id": "src/interface.d.ts::Color",
94
- "referenceLocation": "Color"
93
+ "id": "src/interface.d.ts::Color"
95
94
  }
96
95
  }
97
96
  },
@@ -7,7 +7,7 @@ import { clamp, getElementRoot, raf } from "../../../utils/helpers";
7
7
  import { FOCUS_TRAP_DISABLE_CLASS } from "../../../utils/overlays";
8
8
  import { getBackdropValueForSheet } from "../utils";
9
9
  import { calculateSpringStep, handleCanDismiss } from "./utils";
10
- export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, animation, breakpoints = [], expandToScroll, getCurrentBreakpoint, onDismiss, onBreakpointChange) => {
10
+ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, animation, breakpoints = [], expandToScroll, getCurrentBreakpoint, onDismiss, onBreakpointChange, onDragStart, onDragMove, onDragEnd) => {
11
11
  // Defaults for the sheet swipe animation
12
12
  const defaultBackdrop = [
13
13
  { offset: 0, opacity: 'var(--backdrop-opacity)' },
@@ -270,6 +270,7 @@ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpo
270
270
  baseEl.focus();
271
271
  });
272
272
  animation.progressStart(true, 1 - currentBreakpoint);
273
+ onDragStart();
273
274
  };
274
275
  const onMove = (detail) => {
275
276
  /**
@@ -338,6 +339,15 @@ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpo
338
339
  : step;
339
340
  offset = clamp(0.0001, processedStep, maxStep);
340
341
  animation.progressStep(offset);
342
+ const closest = calculateClosestBreakpoint(detail.velocityY, detail.deltaY);
343
+ const eventDetail = {
344
+ currentY: detail.currentY,
345
+ deltaY: detail.deltaY,
346
+ velocityY: detail.velocityY,
347
+ progress: calculateProgress(detail.currentY),
348
+ currentBreakpoint: closest,
349
+ };
350
+ onDragMove(eventDetail);
341
351
  };
342
352
  const onEnd = (detail) => {
343
353
  /**
@@ -356,16 +366,7 @@ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpo
356
366
  swapFooterPosition('stationary');
357
367
  return;
358
368
  }
359
- /**
360
- * When the gesture releases, we need to determine
361
- * the closest breakpoint to snap to.
362
- */
363
- const velocity = detail.velocityY;
364
- const threshold = (detail.deltaY + velocity * 350) / height;
365
- const diff = currentBreakpoint - threshold;
366
- const closest = breakpoints.reduce((a, b) => {
367
- return Math.abs(b - diff) < Math.abs(a - diff) ? b : a;
368
- });
369
+ const closest = calculateClosestBreakpoint(detail.velocityY, detail.deltaY);
369
370
  moveSheetToBreakpoint({
370
371
  breakpoint: closest,
371
372
  breakpointOffset: offset,
@@ -376,6 +377,14 @@ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpo
376
377
  */
377
378
  animated: true,
378
379
  });
380
+ const eventDetail = {
381
+ currentY: detail.currentY,
382
+ deltaY: detail.deltaY,
383
+ velocityY: detail.velocityY,
384
+ progress: calculateProgress(detail.currentY),
385
+ currentBreakpoint: closest,
386
+ };
387
+ onDragEnd(eventDetail);
379
388
  };
380
389
  const moveSheetToBreakpoint = (options) => {
381
390
  const { breakpoint, canDismiss, breakpointOffset, animated } = options;
@@ -515,6 +524,94 @@ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpo
515
524
  .progressEnd(1, 0, animated ? 500 : 0);
516
525
  });
517
526
  };
527
+ /**
528
+ * Calculates the closest breakpoint based on the current velocity and deltaY.
529
+ * This determines where the sheet should snap to when the user releases the
530
+ * gesture.
531
+ *
532
+ * @param velocityY The current velocity of the gesture in the Y direction.
533
+ * @param deltaY The change in Y position since the gesture started.
534
+ * @returns The closest breakpoint value.
535
+ */
536
+ const calculateClosestBreakpoint = (velocityY, deltaY) => {
537
+ const threshold = (deltaY + velocityY * 350) / height;
538
+ const diff = currentBreakpoint - threshold;
539
+ const closest = breakpoints.reduce((a, b) => {
540
+ return Math.abs(b - diff) < Math.abs(a - diff) ? b : a;
541
+ });
542
+ return closest;
543
+ };
544
+ /**
545
+ * Calculates the progress of the swipe gesture.
546
+ *
547
+ * The progress is a value between 0 and 1 that represents how far
548
+ * the swipe has progressed towards closing the modal.
549
+ *
550
+ * A value closer to 1 means the modal is closer to being opened,
551
+ * while a value closer to 0 means the modal is closer to being closed.
552
+ *
553
+ * @param currentY The current Y position of the gesture
554
+ * @returns The progress of the sheet gesture
555
+ */
556
+ const calculateProgress = (currentY) => {
557
+ const minBreakpoint = breakpoints[0];
558
+ const maxBreakpoint = breakpoints[breakpoints.length - 1];
559
+ // Convert breakpoints to pixel Y coordinates
560
+ /**
561
+ * The lowest point the sheet can be dragged to aka the point at which
562
+ * the sheet is fully closed.
563
+ */
564
+ const maxY = convertBreakpointToY(minBreakpoint);
565
+ /**
566
+ * The highest point the sheet can be dragged to aka the point at which
567
+ * the sheet is fully open.
568
+ */
569
+ const minY = convertBreakpointToY(maxBreakpoint);
570
+ // The total distance between the fully open and fully closed positions.
571
+ const totalDistance = maxY - minY;
572
+ // The distance from the current position to the fully closed position.
573
+ const distanceFromBottom = maxY - currentY;
574
+ /**
575
+ * The progress represents how far the sheet is from the bottom relative
576
+ * to the total distance. When the user starts swiping up, the progress
577
+ * should be close to 1, and when the user has swiped all the way down,
578
+ * the progress should be close to 0.
579
+ */
580
+ const progress = distanceFromBottom / totalDistance;
581
+ // Round to the nearest thousandth to avoid returning very small decimal
582
+ const roundedProgress = Math.round(progress * 1000) / 1000;
583
+ return Math.max(0, Math.min(1, roundedProgress));
584
+ };
585
+ /**
586
+ * Converts a breakpoint value (0 to 1) into a pixel Y coordinate
587
+ * on the screen.
588
+ *
589
+ * @param breakpoint The breakpoint value (e.g., 0.5 for half-open)
590
+ * @returns The pixel Y coordinate on the screen
591
+ */
592
+ const convertBreakpointToY = (breakpoint) => {
593
+ const rect = baseEl.getBoundingClientRect();
594
+ const modalHeight = rect.height;
595
+ // The bottom of the screen.
596
+ const viewportBottom = window.innerHeight;
597
+ /**
598
+ * The active height is how much of the modal is actually showing
599
+ * on the screen for this specific breakpoint.
600
+ */
601
+ const activeHeight = modalHeight * breakpoint;
602
+ /**
603
+ * To find the Y coordinate, start at the bottom of the screen
604
+ * and move up by the active height of the modal.
605
+ *
606
+ * A breakpoint of 1.0 means the active height is the full modal height
607
+ * (fully open). A breakpoint of 0.0 means the active height is 0
608
+ * (fully closed).
609
+ *
610
+ * Since screen Y coordinates get smaller as you go up, we subtract the
611
+ * active height from the viewport bottom.
612
+ */
613
+ return viewportBottom - activeHeight;
614
+ };
518
615
  const gesture = createGesture({
519
616
  el: wrapperEl,
520
617
  gestureName: 'modalSheet',
@@ -12,7 +12,7 @@ import { calculateSpringStep, handleCanDismiss } from "./utils";
12
12
  export const SwipeToCloseDefaults = {
13
13
  MIN_PRESENTING_SCALE: 0.915,
14
14
  };
15
- export const createSwipeToCloseGesture = (el, animation, statusBarStyle, onDismiss) => {
15
+ export const createSwipeToCloseGesture = (el, animation, statusBarStyle, onDismiss, onDragStart, onDragMove, onDragEnd) => {
16
16
  /**
17
17
  * The step value at which a card modal
18
18
  * is eligible for dismissing via gesture.
@@ -122,6 +122,7 @@ export const createSwipeToCloseGesture = (el, animation, statusBarStyle, onDismi
122
122
  disableContentScrollY(contentEl);
123
123
  }
124
124
  animation.progressStart(true, isOpen ? 1 : 0);
125
+ onDragStart();
125
126
  };
126
127
  const onMove = (detail) => {
127
128
  const { deltaY } = detail;
@@ -189,6 +190,13 @@ export const createSwipeToCloseGesture = (el, animation, statusBarStyle, onDismi
189
190
  setCardStatusBarDark();
190
191
  }
191
192
  lastStep = clampedStep;
193
+ const eventDetail = {
194
+ currentY: detail.currentY,
195
+ deltaY: detail.deltaY,
196
+ velocityY: detail.velocityY,
197
+ progress: calculateProgress(el, detail.deltaY),
198
+ };
199
+ onDragMove(eventDetail);
192
200
  };
193
201
  const onEnd = (detail) => {
194
202
  const velocity = detail.velocityY;
@@ -247,6 +255,13 @@ export const createSwipeToCloseGesture = (el, animation, statusBarStyle, onDismi
247
255
  else if (shouldComplete) {
248
256
  onDismiss();
249
257
  }
258
+ const eventDetail = {
259
+ currentY: detail.currentY,
260
+ deltaY: detail.deltaY,
261
+ velocityY: detail.velocityY,
262
+ progress: calculateProgress(el, detail.deltaY),
263
+ };
264
+ onDragEnd(eventDetail);
250
265
  };
251
266
  const gesture = createGesture({
252
267
  el,
@@ -264,3 +279,41 @@ export const createSwipeToCloseGesture = (el, animation, statusBarStyle, onDismi
264
279
  const computeDuration = (remaining, velocity) => {
265
280
  return clamp(400, remaining / Math.abs(velocity * 1.1), 500);
266
281
  };
282
+ /**
283
+ * Calculates the progress of the swipe gesture.
284
+ *
285
+ * The progress is a value between 0 and 1 that represents how far
286
+ * the swipe has progressed towards closing the modal.
287
+ *
288
+ * A value closer to 1 means the modal is closer to being opened,
289
+ * while a value closer to 0 means the modal is closer to being closed.
290
+ *
291
+ * @param el The modal
292
+ * @param deltaY The change in Y position (positive when dragging down, negative when dragging up)
293
+ * @returns The progress of the swipe gesture
294
+ */
295
+ const calculateProgress = (el, deltaY) => {
296
+ const windowHeight = window.innerHeight;
297
+ // Position when fully open
298
+ const modalTop = el.getBoundingClientRect().top;
299
+ /**
300
+ * The distance between the top of the modal and the bottom of the screen
301
+ * is the total distance the modal needs to travel to be fully closed.
302
+ */
303
+ const totalDistance = windowHeight - modalTop;
304
+ /**
305
+ * The pull percentage is how far the user has swiped compared to the total
306
+ * distance needed to close the modal.
307
+ */
308
+ const pullPercentage = deltaY / totalDistance;
309
+ /**
310
+ * The progress is the inverse of the pull percentage because
311
+ * when the user starts swiping up, the progress should be close to 1,
312
+ * and when the user has swiped all the way down, the progress should be
313
+ * close to 0.
314
+ */
315
+ const progress = 1 - pullPercentage;
316
+ // Round to the nearest thousandth to avoid returning very small decimal
317
+ const roundedProgress = Math.round(progress * 1000) / 1000;
318
+ return Math.max(0, Math.min(1, roundedProgress));
319
+ };
@@ -501,32 +501,7 @@ export class Modal {
501
501
  return;
502
502
  }
503
503
  const statusBarStyle = (_a = this.statusBarStyle) !== null && _a !== void 0 ? _a : StatusBarStyle.Default;
504
- this.gesture = createSwipeToCloseGesture(el, ani, statusBarStyle, () => {
505
- /**
506
- * While the gesture animation is finishing
507
- * it is possible for a user to tap the backdrop.
508
- * This would result in the dismiss animation
509
- * being played again. Typically this is avoided
510
- * by setting `presented = false` on the overlay
511
- * component; however, we cannot do that here as
512
- * that would prevent the element from being
513
- * removed from the DOM.
514
- */
515
- this.gestureAnimationDismissing = true;
516
- /**
517
- * Reset the status bar style as the dismiss animation
518
- * starts otherwise the status bar will be the wrong
519
- * color for the duration of the dismiss animation.
520
- * The dismiss method does this as well, but
521
- * in this case it's only called once the animation
522
- * has finished.
523
- */
524
- setCardStatusBarDefault(this.statusBarStyle);
525
- this.animation.onFinish(async () => {
526
- await this.dismiss(undefined, GESTURE);
527
- this.gestureAnimationDismissing = false;
528
- });
529
- });
504
+ this.gesture = createSwipeToCloseGesture(el, ani, statusBarStyle, () => this.cardOnDismiss(), () => this.onDragStart(), (detail) => this.onDragMove(detail), (detail) => this.onDragEnd(detail));
530
505
  this.gesture.enable(true);
531
506
  }
532
507
  initSheetGesture() {
@@ -547,7 +522,7 @@ export class Modal {
547
522
  this.currentBreakpoint = breakpoint;
548
523
  this.ionBreakpointDidChange.emit({ breakpoint });
549
524
  }
550
- });
525
+ }, () => this.onDragStart(), (detail) => this.onDragMove(detail), (detail) => this.onDragEnd(detail));
551
526
  this.gesture = gesture;
552
527
  this.moveSheetToBreakpoint = moveSheetToBreakpoint;
553
528
  this.gesture.enable(true);
@@ -644,6 +619,32 @@ export class Modal {
644
619
  this.gestureAnimationDismissing = false;
645
620
  });
646
621
  }
622
+ cardOnDismiss() {
623
+ /**
624
+ * While the gesture animation is finishing
625
+ * it is possible for a user to tap the backdrop.
626
+ * This would result in the dismiss animation
627
+ * being played again. Typically this is avoided
628
+ * by setting `presented = false` on the overlay
629
+ * component; however, we cannot do that here as
630
+ * that would prevent the element from being
631
+ * removed from the DOM.
632
+ */
633
+ this.gestureAnimationDismissing = true;
634
+ /**
635
+ * Reset the status bar style as the dismiss animation
636
+ * starts otherwise the status bar will be the wrong
637
+ * color for the duration of the dismiss animation.
638
+ * The dismiss method does this as well, but
639
+ * in this case it's only called once the animation
640
+ * has finished.
641
+ */
642
+ setCardStatusBarDefault(this.statusBarStyle);
643
+ this.animation.onFinish(async () => {
644
+ await this.dismiss(undefined, GESTURE);
645
+ this.gestureAnimationDismissing = false;
646
+ });
647
+ }
647
648
  /**
648
649
  * Dismiss the modal overlay after it has been presented.
649
650
  * This is a no-op if the overlay has not been presented yet. If you want
@@ -967,6 +968,15 @@ export class Modal {
967
968
  (_a = this.parentRemovalObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
968
969
  this.parentRemovalObserver = undefined;
969
970
  }
971
+ onDragStart() {
972
+ this.ionDragStart.emit();
973
+ }
974
+ onDragMove(detail) {
975
+ this.ionDragMove.emit(detail);
976
+ }
977
+ onDragEnd(detail) {
978
+ this.ionDragEnd.emit(detail);
979
+ }
970
980
  render() {
971
981
  const { handle, isSheetModal, presentingElement, htmlAttributes, handleBehavior, inheritedAttributes, focusTrap, expandToScroll, } = this;
972
982
  const showHandle = handle !== false && isSheetModal;
@@ -974,20 +984,20 @@ export class Modal {
974
984
  const isCardModal = presentingElement !== undefined && mode === 'ios';
975
985
  const isHandleCycle = handleBehavior === 'cycle';
976
986
  const isSheetModalWithHandle = isSheetModal && showHandle;
977
- return (h(Host, Object.assign({ key: '87328006ea6c75ebc518ace300438492a567223e', "no-router": true,
987
+ return (h(Host, Object.assign({ key: 'bca3cbdb2ce8e5127d27eae7494c434aaeddaf88', "no-router": true,
978
988
  // Allow the modal to be navigable when the handle is focusable
979
989
  tabIndex: isHandleCycle && isSheetModalWithHandle ? 0 : -1 }, htmlAttributes, { style: {
980
990
  zIndex: `${20000 + this.overlayIndex}`,
981
- }, 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 }), h("ion-backdrop", { key: 'ee94ff8e09b691dd4ad4e4db1720f06bc3c5a469', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && h("div", { key: 'bffd69b4635c22d9f249725bd952c1e93d5615c7', class: "modal-shadow" }), h("div", Object.assign({ key: '1d394d3c68916e464ff1fbf5242419f4a3d3cca1',
991
+ }, 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 }), h("ion-backdrop", { key: 'b1c4112123d84d8a9b9d455bcc17d884f99d9f28', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && h("div", { key: '080c8e6d37b311a1b5ad2655d99f18668abae211', class: "modal-shadow" }), h("div", Object.assign({ key: '8ba05e9520b1b5529bf0caeb766da5bf612d4d14',
982
992
  /*
983
993
  role and aria-modal must be used on the
984
994
  same element. They must also be set inside the
985
995
  shadow DOM otherwise ion-button will not be highlighted
986
996
  when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
987
997
  */
988
- role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (h("button", { key: '2dcf58792018e557e0c323baad2d672bc99c0bb1', class: "modal-handle",
998
+ role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (h("button", { key: '2d2d5d731f55755f32ebcbf557f97486dc6202a6', class: "modal-handle",
989
999
  // Prevents the handle from receiving keyboard focus when it does not cycle
990
- 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) })), h("slot", { key: '44164b1e8710c3895400ad9f44ecd99873874ad5', onSlotchange: this.onSlotChange }))));
1000
+ 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) })), h("slot", { key: 'c717d19865dafba02e15db79bc0662c5d89e96fd', onSlotchange: this.onSlotChange }))));
991
1001
  }
992
1002
  static get is() { return "ion-modal"; }
993
1003
  static get encapsulation() { return "shadow"; }
@@ -1060,8 +1070,7 @@ export class Modal {
1060
1070
  "FrameworkDelegate": {
1061
1071
  "location": "import",
1062
1072
  "path": "../../interface",
1063
- "id": "src/interface.d.ts::FrameworkDelegate",
1064
- "referenceLocation": "FrameworkDelegate"
1073
+ "id": "src/interface.d.ts::FrameworkDelegate"
1065
1074
  }
1066
1075
  }
1067
1076
  },
@@ -1107,8 +1116,7 @@ export class Modal {
1107
1116
  "AnimationBuilder": {
1108
1117
  "location": "import",
1109
1118
  "path": "../../interface",
1110
- "id": "src/interface.d.ts::AnimationBuilder",
1111
- "referenceLocation": "AnimationBuilder"
1119
+ "id": "src/interface.d.ts::AnimationBuilder"
1112
1120
  }
1113
1121
  }
1114
1122
  },
@@ -1131,8 +1139,7 @@ export class Modal {
1131
1139
  "AnimationBuilder": {
1132
1140
  "location": "import",
1133
1141
  "path": "../../interface",
1134
- "id": "src/interface.d.ts::AnimationBuilder",
1135
- "referenceLocation": "AnimationBuilder"
1142
+ "id": "src/interface.d.ts::AnimationBuilder"
1136
1143
  }
1137
1144
  }
1138
1145
  },
@@ -1250,8 +1257,7 @@ export class Modal {
1250
1257
  "ModalHandleBehavior": {
1251
1258
  "location": "import",
1252
1259
  "path": "./modal-interface",
1253
- "id": "src/components/modal/modal-interface.ts::ModalHandleBehavior",
1254
- "referenceLocation": "ModalHandleBehavior"
1260
+ "id": "src/components/modal/modal-interface.ts::ModalHandleBehavior"
1255
1261
  }
1256
1262
  }
1257
1263
  },
@@ -1277,8 +1283,7 @@ export class Modal {
1277
1283
  "ComponentRef": {
1278
1284
  "location": "import",
1279
1285
  "path": "../../interface",
1280
- "id": "src/interface.d.ts::ComponentRef",
1281
- "referenceLocation": "ComponentRef"
1286
+ "id": "src/interface.d.ts::ComponentRef"
1282
1287
  }
1283
1288
  }
1284
1289
  },
@@ -1301,13 +1306,12 @@ export class Modal {
1301
1306
  "mutable": false,
1302
1307
  "complexType": {
1303
1308
  "original": "ComponentProps",
1304
- "resolved": "T | undefined",
1309
+ "resolved": "undefined | { [key: string]: any; }",
1305
1310
  "references": {
1306
1311
  "ComponentProps": {
1307
1312
  "location": "import",
1308
1313
  "path": "../../interface",
1309
- "id": "src/interface.d.ts::ComponentProps",
1310
- "referenceLocation": "ComponentProps"
1314
+ "id": "src/interface.d.ts::ComponentProps"
1311
1315
  }
1312
1316
  }
1313
1317
  },
@@ -1604,8 +1608,7 @@ export class Modal {
1604
1608
  "OverlayEventDetail": {
1605
1609
  "location": "import",
1606
1610
  "path": "../../utils/overlays-interface",
1607
- "id": "src/utils/overlays-interface.ts::OverlayEventDetail",
1608
- "referenceLocation": "OverlayEventDetail"
1611
+ "id": "src/utils/overlays-interface.ts::OverlayEventDetail"
1609
1612
  }
1610
1613
  }
1611
1614
  }
@@ -1626,8 +1629,7 @@ export class Modal {
1626
1629
  "OverlayEventDetail": {
1627
1630
  "location": "import",
1628
1631
  "path": "../../utils/overlays-interface",
1629
- "id": "src/utils/overlays-interface.ts::OverlayEventDetail",
1630
- "referenceLocation": "OverlayEventDetail"
1632
+ "id": "src/utils/overlays-interface.ts::OverlayEventDetail"
1631
1633
  }
1632
1634
  }
1633
1635
  }
@@ -1648,8 +1650,7 @@ export class Modal {
1648
1650
  "ModalBreakpointChangeEventDetail": {
1649
1651
  "location": "import",
1650
1652
  "path": "./modal-interface",
1651
- "id": "src/components/modal/modal-interface.ts::ModalBreakpointChangeEventDetail",
1652
- "referenceLocation": "ModalBreakpointChangeEventDetail"
1653
+ "id": "src/components/modal/modal-interface.ts::ModalBreakpointChangeEventDetail"
1653
1654
  }
1654
1655
  }
1655
1656
  }
@@ -1700,8 +1701,7 @@ export class Modal {
1700
1701
  "OverlayEventDetail": {
1701
1702
  "location": "import",
1702
1703
  "path": "../../utils/overlays-interface",
1703
- "id": "src/utils/overlays-interface.ts::OverlayEventDetail",
1704
- "referenceLocation": "OverlayEventDetail"
1704
+ "id": "src/utils/overlays-interface.ts::OverlayEventDetail"
1705
1705
  }
1706
1706
  }
1707
1707
  }
@@ -1722,8 +1722,7 @@ export class Modal {
1722
1722
  "OverlayEventDetail": {
1723
1723
  "location": "import",
1724
1724
  "path": "../../utils/overlays-interface",
1725
- "id": "src/utils/overlays-interface.ts::OverlayEventDetail",
1726
- "referenceLocation": "OverlayEventDetail"
1725
+ "id": "src/utils/overlays-interface.ts::OverlayEventDetail"
1727
1726
  }
1728
1727
  }
1729
1728
  }
@@ -1745,6 +1744,63 @@ export class Modal {
1745
1744
  "resolved": "void",
1746
1745
  "references": {}
1747
1746
  }
1747
+ }, {
1748
+ "method": "ionDragStart",
1749
+ "name": "ionDragStart",
1750
+ "bubbles": true,
1751
+ "cancelable": true,
1752
+ "composed": true,
1753
+ "docs": {
1754
+ "tags": [],
1755
+ "text": "Event that is emitted when the sheet modal or card modal gesture starts."
1756
+ },
1757
+ "complexType": {
1758
+ "original": "void",
1759
+ "resolved": "void",
1760
+ "references": {}
1761
+ }
1762
+ }, {
1763
+ "method": "ionDragMove",
1764
+ "name": "ionDragMove",
1765
+ "bubbles": true,
1766
+ "cancelable": true,
1767
+ "composed": true,
1768
+ "docs": {
1769
+ "tags": [],
1770
+ "text": "Event that is emitted when the sheet modal or card modal gesture moves."
1771
+ },
1772
+ "complexType": {
1773
+ "original": "ModalDragEventDetail",
1774
+ "resolved": "ModalDragEventDetail",
1775
+ "references": {
1776
+ "ModalDragEventDetail": {
1777
+ "location": "import",
1778
+ "path": "./modal-interface",
1779
+ "id": "src/components/modal/modal-interface.ts::ModalDragEventDetail"
1780
+ }
1781
+ }
1782
+ }
1783
+ }, {
1784
+ "method": "ionDragEnd",
1785
+ "name": "ionDragEnd",
1786
+ "bubbles": true,
1787
+ "cancelable": true,
1788
+ "composed": true,
1789
+ "docs": {
1790
+ "tags": [],
1791
+ "text": "Event that is emitted when the sheet modal or card modal gesture ends."
1792
+ },
1793
+ "complexType": {
1794
+ "original": "ModalDragEventDetail",
1795
+ "resolved": "ModalDragEventDetail",
1796
+ "references": {
1797
+ "ModalDragEventDetail": {
1798
+ "location": "import",
1799
+ "path": "./modal-interface",
1800
+ "id": "src/components/modal/modal-interface.ts::ModalDragEventDetail"
1801
+ }
1802
+ }
1803
+ }
1748
1804
  }];
1749
1805
  }
1750
1806
  static get methods() {
@@ -1817,8 +1873,7 @@ export class Modal {
1817
1873
  "OverlayEventDetail": {
1818
1874
  "location": "import",
1819
1875
  "path": "../../utils/overlays-interface",
1820
- "id": "src/utils/overlays-interface.ts::OverlayEventDetail",
1821
- "referenceLocation": "OverlayEventDetail"
1876
+ "id": "src/utils/overlays-interface.ts::OverlayEventDetail"
1822
1877
  },
1823
1878
  "T": {
1824
1879
  "location": "global",
@@ -1844,8 +1899,7 @@ export class Modal {
1844
1899
  "OverlayEventDetail": {
1845
1900
  "location": "import",
1846
1901
  "path": "../../utils/overlays-interface",
1847
- "id": "src/utils/overlays-interface.ts::OverlayEventDetail",
1848
- "referenceLocation": "OverlayEventDetail"
1902
+ "id": "src/utils/overlays-interface.ts::OverlayEventDetail"
1849
1903
  },
1850
1904
  "T": {
1851
1905
  "location": "global",