voyager-ionic-core 7.5.5 → 7.6.1

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 (1858) hide show
  1. package/components/action-sheet.js +297 -287
  2. package/components/alert.js +477 -467
  3. package/components/animation.js +991 -990
  4. package/components/backdrop.js +56 -56
  5. package/components/button-active.js +56 -56
  6. package/components/button.js +236 -236
  7. package/components/buttons.js +29 -29
  8. package/components/capacitor.js +4 -4
  9. package/components/checkbox.js +172 -170
  10. package/components/config.js +142 -142
  11. package/components/cubic-bezier.js +49 -49
  12. package/components/data.js +1112 -1062
  13. package/components/dir.js +5 -5
  14. package/components/focus-visible.js +63 -63
  15. package/components/form-controller.js +45 -45
  16. package/components/framework-delegate.js +121 -121
  17. package/components/gesture-controller.js +182 -182
  18. package/components/haptic.js +150 -150
  19. package/components/hardware-back-button.js +48 -48
  20. package/components/helpers.js +257 -257
  21. package/components/icon.js +133 -133
  22. package/components/index.js +95 -95
  23. package/components/index2.js +163 -163
  24. package/components/index3.js +417 -417
  25. package/components/index4.js +257 -259
  26. package/components/index5.js +0 -22
  27. package/components/index6.js +3 -3
  28. package/components/index8.js +58 -58
  29. package/components/index9.js +171 -171
  30. package/components/input-shims.js +488 -483
  31. package/components/input.utils.js +107 -106
  32. package/components/ion-accordion-group.d.ts +2 -2
  33. package/components/ion-accordion-group.js +220 -220
  34. package/components/ion-accordion.d.ts +2 -2
  35. package/components/ion-accordion.js +326 -326
  36. package/components/ion-action-sheet.d.ts +2 -2
  37. package/components/ion-alert.d.ts +2 -2
  38. package/components/ion-app.d.ts +2 -2
  39. package/components/ion-app.js +93 -93
  40. package/components/ion-avatar.d.ts +2 -2
  41. package/components/ion-avatar.js +23 -23
  42. package/components/ion-back-button.d.ts +2 -2
  43. package/components/ion-back-button.js +102 -102
  44. package/components/ion-backdrop.d.ts +2 -2
  45. package/components/ion-badge.d.ts +2 -2
  46. package/components/ion-badge.js +29 -29
  47. package/components/ion-breadcrumb.d.ts +2 -2
  48. package/components/ion-breadcrumb.js +111 -111
  49. package/components/ion-breadcrumbs.d.ts +2 -2
  50. package/components/ion-breadcrumbs.js +139 -139
  51. package/components/ion-button.d.ts +2 -2
  52. package/components/ion-buttons.d.ts +2 -2
  53. package/components/ion-card-content.d.ts +2 -2
  54. package/components/ion-card-content.js +27 -27
  55. package/components/ion-card-header.d.ts +2 -2
  56. package/components/ion-card-header.js +33 -33
  57. package/components/ion-card-subtitle.d.ts +2 -2
  58. package/components/ion-card-subtitle.js +30 -30
  59. package/components/ion-card-title.d.ts +2 -2
  60. package/components/ion-card-title.js +30 -30
  61. package/components/ion-card.d.ts +2 -2
  62. package/components/ion-card.js +78 -78
  63. package/components/ion-checkbox.d.ts +2 -2
  64. package/components/ion-chip.d.ts +2 -2
  65. package/components/ion-chip.js +41 -41
  66. package/components/ion-col.d.ts +2 -2
  67. package/components/ion-col.js +156 -156
  68. package/components/ion-content.d.ts +2 -2
  69. package/components/ion-content.js +394 -394
  70. package/components/ion-datetime-button.d.ts +2 -2
  71. package/components/ion-datetime-button.js +348 -348
  72. package/components/ion-datetime.d.ts +2 -2
  73. package/components/ion-datetime.js +1741 -1709
  74. package/components/ion-fab-button.d.ts +2 -2
  75. package/components/ion-fab-button.js +109 -109
  76. package/components/ion-fab-list.d.ts +2 -2
  77. package/components/ion-fab-list.js +44 -44
  78. package/components/ion-fab.d.ts +2 -2
  79. package/components/ion-fab.js +75 -75
  80. package/components/ion-footer.d.ts +2 -2
  81. package/components/ion-footer.js +124 -124
  82. package/components/ion-grid.d.ts +2 -2
  83. package/components/ion-grid.js +27 -27
  84. package/components/ion-header.d.ts +2 -2
  85. package/components/ion-header.js +298 -298
  86. package/components/ion-img.d.ts +2 -2
  87. package/components/ion-img.js +97 -97
  88. package/components/ion-infinite-scroll-content.d.ts +2 -2
  89. package/components/ion-infinite-scroll-content.js +49 -49
  90. package/components/ion-infinite-scroll.d.ts +2 -2
  91. package/components/ion-infinite-scroll.js +187 -179
  92. package/components/ion-input.d.ts +2 -2
  93. package/components/ion-input.js +498 -454
  94. package/components/ion-item-divider.d.ts +2 -2
  95. package/components/ion-item-divider.js +34 -34
  96. package/components/ion-item-group.d.ts +2 -2
  97. package/components/ion-item-group.js +28 -28
  98. package/components/ion-item-option.d.ts +2 -2
  99. package/components/ion-item-option.js +67 -67
  100. package/components/ion-item-options.d.ts +2 -2
  101. package/components/ion-item-options.js +50 -50
  102. package/components/ion-item-sliding.d.ts +2 -2
  103. package/components/ion-item-sliding.js +404 -404
  104. package/components/ion-item.d.ts +2 -2
  105. package/components/ion-label.d.ts +2 -2
  106. package/components/ion-list-header.d.ts +2 -2
  107. package/components/ion-list.d.ts +2 -2
  108. package/components/ion-loading.d.ts +2 -2
  109. package/components/ion-loading.js +257 -247
  110. package/components/ion-menu-button.d.ts +2 -2
  111. package/components/ion-menu-button.js +77 -77
  112. package/components/ion-menu-toggle.d.ts +2 -2
  113. package/components/ion-menu-toggle.js +41 -41
  114. package/components/ion-menu.d.ts +2 -2
  115. package/components/ion-menu.js +631 -631
  116. package/components/ion-modal.d.ts +2 -2
  117. package/components/ion-modal.js +1451 -1441
  118. package/components/ion-nav-link.d.ts +2 -2
  119. package/components/ion-nav-link.js +47 -47
  120. package/components/ion-nav.d.ts +2 -2
  121. package/components/ion-nav.js +910 -910
  122. package/components/ion-note.d.ts +2 -2
  123. package/components/ion-picker-column-internal.d.ts +2 -2
  124. package/components/ion-picker-column.d.ts +2 -2
  125. package/components/ion-picker-internal.d.ts +2 -2
  126. package/components/ion-picker.d.ts +2 -2
  127. package/components/ion-picker.js +263 -253
  128. package/components/ion-popover.d.ts +2 -2
  129. package/components/ion-progress-bar.d.ts +2 -2
  130. package/components/ion-progress-bar.js +57 -57
  131. package/components/ion-radio-group.d.ts +2 -2
  132. package/components/ion-radio.d.ts +2 -2
  133. package/components/ion-range.d.ts +2 -2
  134. package/components/ion-range.js +593 -591
  135. package/components/ion-refresher-content.d.ts +2 -2
  136. package/components/ion-refresher-content.js +63 -63
  137. package/components/ion-refresher.d.ts +2 -2
  138. package/components/ion-refresher.js +747 -747
  139. package/components/ion-reorder-group.d.ts +2 -2
  140. package/components/ion-reorder-group.js +259 -259
  141. package/components/ion-reorder.d.ts +2 -2
  142. package/components/ion-reorder.js +39 -39
  143. package/components/ion-ripple-effect.d.ts +2 -2
  144. package/components/ion-route-redirect.d.ts +2 -2
  145. package/components/ion-route-redirect.js +34 -34
  146. package/components/ion-route.d.ts +2 -2
  147. package/components/ion-route.js +56 -56
  148. package/components/ion-router-link.d.ts +2 -2
  149. package/components/ion-router-link.js +45 -45
  150. package/components/ion-router-outlet.d.ts +2 -2
  151. package/components/ion-router-outlet.js +193 -193
  152. package/components/ion-router.d.ts +2 -2
  153. package/components/ion-router.js +632 -632
  154. package/components/ion-row.d.ts +2 -2
  155. package/components/ion-row.js +20 -20
  156. package/components/ion-searchbar.d.ts +2 -2
  157. package/components/ion-searchbar.js +402 -400
  158. package/components/ion-segment-button.d.ts +2 -2
  159. package/components/ion-segment-button.js +117 -117
  160. package/components/ion-segment.d.ts +2 -2
  161. package/components/ion-segment.js +427 -427
  162. package/components/ion-select-option.d.ts +2 -2
  163. package/components/ion-select-option.js +27 -27
  164. package/components/ion-select-popover.d.ts +2 -2
  165. package/components/ion-select.d.ts +2 -2
  166. package/components/ion-select.js +778 -763
  167. package/components/ion-skeleton-text.d.ts +2 -2
  168. package/components/ion-skeleton-text.js +45 -32
  169. package/components/ion-spinner.d.ts +2 -2
  170. package/components/ion-split-pane.d.ts +2 -2
  171. package/components/ion-split-pane.js +147 -147
  172. package/components/ion-tab-bar.d.ts +2 -2
  173. package/components/ion-tab-bar.js +77 -77
  174. package/components/ion-tab-button.d.ts +2 -2
  175. package/components/ion-tab-button.js +104 -104
  176. package/components/ion-tab.d.ts +2 -2
  177. package/components/ion-tab.js +72 -72
  178. package/components/ion-tabs.d.ts +2 -2
  179. package/components/ion-tabs.js +160 -160
  180. package/components/ion-text.d.ts +2 -2
  181. package/components/ion-text.js +26 -26
  182. package/components/ion-textarea.d.ts +2 -2
  183. package/components/ion-textarea.js +443 -395
  184. package/components/ion-thumbnail.d.ts +2 -2
  185. package/components/ion-thumbnail.js +20 -20
  186. package/components/ion-title.d.ts +2 -2
  187. package/components/ion-title.js +56 -56
  188. package/components/ion-toast.d.ts +2 -2
  189. package/components/ion-toast.js +819 -464
  190. package/components/ion-toggle.d.ts +2 -2
  191. package/components/ion-toggle.js +243 -241
  192. package/components/ion-toolbar.d.ts +2 -2
  193. package/components/ion-toolbar.js +71 -71
  194. package/components/ionic-global.js +163 -163
  195. package/components/ios.transition.js +598 -598
  196. package/components/item.js +301 -301
  197. package/components/keyboard-controller.js +128 -128
  198. package/components/keyboard.js +62 -62
  199. package/components/keyboard2.js +59 -59
  200. package/components/label.js +85 -85
  201. package/components/list-header.js +33 -33
  202. package/components/list.js +50 -50
  203. package/components/lock-controller.js +24 -24
  204. package/components/md.transition.js +44 -44
  205. package/components/menu-toggle-util.js +2 -2
  206. package/components/notch-controller.js +120 -120
  207. package/components/note.js +29 -29
  208. package/components/overlays.js +496 -495
  209. package/components/picker-column-internal.js +350 -345
  210. package/components/picker-column.js +334 -334
  211. package/components/picker-internal.js +468 -468
  212. package/components/popover.js +1154 -1144
  213. package/components/radio-group.js +161 -159
  214. package/components/radio.js +248 -208
  215. package/components/ripple-effect.js +81 -81
  216. package/components/select-popover.js +163 -163
  217. package/components/spinner.js +182 -182
  218. package/components/status-tap.js +26 -26
  219. package/components/swipe-back.js +65 -65
  220. package/components/theme.js +23 -23
  221. package/components/watch-options.js +30 -30
  222. package/css/core.css +66 -8
  223. package/css/core.css.map +1 -1
  224. package/css/display.css +44 -0
  225. package/css/display.css.map +1 -1
  226. package/css/float-elements.css +44 -0
  227. package/css/float-elements.css.map +1 -1
  228. package/css/global.bundle.css +88 -0
  229. package/css/global.bundle.css.map +1 -1
  230. package/css/ionic-swiper.css +22 -0
  231. package/css/ionic-swiper.css.map +1 -1
  232. package/css/ionic.bundle.css +1 -1
  233. package/css/ionic.bundle.css.map +1 -1
  234. package/css/padding.css +44 -0
  235. package/css/padding.css.map +1 -1
  236. package/css/structure.css +44 -0
  237. package/css/structure.css.map +1 -1
  238. package/css/text-alignment.css +44 -0
  239. package/css/text-alignment.css.map +1 -1
  240. package/css/text-transformation.css +44 -0
  241. package/css/text-transformation.css.map +1 -1
  242. package/css/typography.css +44 -0
  243. package/css/typography.css.map +1 -1
  244. package/css/utils.bundle.css +220 -0
  245. package/css/utils.bundle.css.map +1 -1
  246. package/dist/cjs/animation-9b401d39.js +1062 -0
  247. package/dist/cjs/{app-globals-1d4c1dbf.js → app-globals-7def22c8.js} +1 -1
  248. package/dist/cjs/button-active-962fe442.js +69 -0
  249. package/dist/cjs/{capacitor-2ffba62a.js → capacitor-c04564bf.js} +5 -5
  250. package/dist/cjs/compare-with-utils-df1001d7.js +44 -0
  251. package/dist/cjs/config-4f60b98a.js +199 -0
  252. package/dist/cjs/cubic-bezier-f2dccc53.js +92 -0
  253. package/dist/cjs/data-a5109f09.js +1672 -0
  254. package/dist/cjs/{dir-f1e0ca26.js → dir-94c21456.js} +5 -5
  255. package/dist/cjs/focus-visible-7a0ce04f.js +77 -0
  256. package/dist/cjs/form-controller-7d42a722.js +66 -0
  257. package/dist/cjs/framework-delegate-1c29b14a.js +144 -0
  258. package/dist/cjs/gesture-controller-c40c045a.js +197 -0
  259. package/dist/cjs/haptic-b882e0bb.js +212 -0
  260. package/dist/cjs/hardware-back-button-76833cac.js +76 -0
  261. package/dist/cjs/helpers-76bb7efb.js +441 -0
  262. package/dist/cjs/index-17ab7794.js +243 -0
  263. package/dist/cjs/index-3b012034.js +308 -0
  264. package/dist/cjs/{index-c2940dc1.js → index-50dcfe2f.js} +79 -15
  265. package/dist/cjs/{index-cc7dfb7c.js → index-5915f9b3.js} +3 -3
  266. package/dist/cjs/index-b4f986cd.js +198 -0
  267. package/dist/cjs/index-c8d52405.js +10 -0
  268. package/dist/cjs/index-d1b59ffa.js +459 -0
  269. package/dist/cjs/{index-da2c7a37.js → index-da15e99c.js} +60 -60
  270. package/dist/cjs/index.cjs.js +113 -113
  271. package/dist/cjs/input-shims-a23bb0f4.js +601 -0
  272. package/dist/cjs/input.utils-3d0166a2.js +138 -0
  273. package/dist/cjs/ion-accordion_2.cjs.entry.js +488 -488
  274. package/dist/cjs/ion-action-sheet.cjs.entry.js +260 -250
  275. package/dist/cjs/ion-alert.cjs.entry.js +442 -432
  276. package/dist/cjs/ion-app_8.cjs.entry.js +1151 -1151
  277. package/dist/cjs/ion-avatar_3.cjs.entry.js +29 -29
  278. package/dist/cjs/ion-back-button.cjs.entry.js +73 -73
  279. package/dist/cjs/ion-backdrop.cjs.entry.js +40 -40
  280. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +194 -194
  281. package/dist/cjs/ion-button_2.cjs.entry.js +303 -303
  282. package/dist/cjs/ion-card_5.cjs.entry.js +105 -105
  283. package/dist/cjs/ion-checkbox.cjs.entry.js +149 -147
  284. package/dist/cjs/ion-chip.cjs.entry.js +20 -20
  285. package/dist/cjs/ion-col_3.cjs.entry.js +136 -136
  286. package/dist/cjs/ion-datetime-button.cjs.entry.js +325 -325
  287. package/dist/cjs/ion-datetime_3.cjs.entry.js +2204 -2162
  288. package/dist/cjs/ion-fab_3.cjs.entry.js +150 -150
  289. package/dist/cjs/ion-img.cjs.entry.js +79 -79
  290. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +198 -190
  291. package/dist/cjs/ion-input.cjs.entry.js +443 -399
  292. package/dist/cjs/ion-item-option_3.cjs.entry.js +457 -457
  293. package/dist/cjs/ion-item_8.cjs.entry.js +441 -428
  294. package/dist/cjs/ion-loading.cjs.entry.js +220 -210
  295. package/dist/cjs/ion-menu_3.cjs.entry.js +670 -670
  296. package/dist/cjs/ion-modal.cjs.entry.js +1415 -1405
  297. package/dist/cjs/ion-nav_2.cjs.entry.js +904 -904
  298. package/dist/cjs/ion-picker-column-internal.cjs.entry.js +331 -327
  299. package/dist/cjs/ion-picker-internal.cjs.entry.js +453 -453
  300. package/dist/cjs/ion-popover.cjs.entry.js +1108 -1098
  301. package/dist/cjs/ion-progress-bar.cjs.entry.js +40 -40
  302. package/dist/cjs/ion-radio_2.cjs.entry.js +321 -316
  303. package/dist/cjs/ion-range.cjs.entry.js +558 -556
  304. package/dist/cjs/ion-refresher_2.cjs.entry.js +786 -786
  305. package/dist/cjs/ion-reorder_2.cjs.entry.js +267 -267
  306. package/dist/cjs/ion-ripple-effect.cjs.entry.js +66 -66
  307. package/dist/cjs/ion-route_4.cjs.entry.js +693 -693
  308. package/dist/cjs/ion-searchbar.cjs.entry.js +360 -358
  309. package/dist/cjs/ion-segment_2.cjs.entry.js +507 -507
  310. package/dist/cjs/ion-select_3.cjs.entry.js +784 -768
  311. package/dist/cjs/ion-spinner.cjs.entry.js +46 -46
  312. package/dist/cjs/ion-split-pane.cjs.entry.js +119 -119
  313. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +138 -138
  314. package/dist/cjs/ion-tab_2.cjs.entry.js +187 -187
  315. package/dist/cjs/ion-text.cjs.entry.js +13 -13
  316. package/dist/cjs/ion-textarea.cjs.entry.js +401 -353
  317. package/dist/cjs/ion-toast.cjs.entry.js +771 -419
  318. package/dist/cjs/ion-toggle.cjs.entry.js +227 -225
  319. package/dist/cjs/ionic-global-a4edbf03.js +230 -0
  320. package/dist/cjs/ionic.cjs.js +5 -5
  321. package/dist/cjs/ios.transition-b5353f3e.js +654 -0
  322. package/dist/cjs/keyboard-0272231f.js +81 -0
  323. package/dist/cjs/{keyboard-38f2bb7b.js → keyboard-af1bb365.js} +62 -62
  324. package/dist/cjs/keyboard-controller-c05e747a.js +167 -0
  325. package/dist/cjs/loader.cjs.js +4 -4
  326. package/dist/cjs/lock-controller-6585a42a.js +40 -0
  327. package/dist/cjs/md.transition-67157dd9.js +59 -0
  328. package/dist/cjs/notch-controller-9735e7ac.js +155 -0
  329. package/dist/cjs/overlays-e77cc023.js +716 -0
  330. package/dist/cjs/spinner-configs-282fd50a.js +147 -0
  331. package/dist/cjs/status-tap-b5d77c08.js +42 -0
  332. package/dist/cjs/swipe-back-e37a1a5c.js +81 -0
  333. package/dist/cjs/theme-d1c573d2.js +48 -0
  334. package/dist/cjs/watch-options-f5f3e158.js +49 -0
  335. package/dist/collection/collection-manifest.json +7 -7
  336. package/dist/collection/components/accordion/accordion.ios.css +44 -0
  337. package/dist/collection/components/accordion/accordion.js +410 -410
  338. package/dist/collection/components/accordion/accordion.md.css +22 -0
  339. package/dist/collection/components/accordion/test/a11y/accordion.e2e.js +31 -31
  340. package/dist/collection/components/accordion/test/accordion.e2e.js +24 -24
  341. package/dist/collection/components/accordion/test/accordion.spec.js +195 -0
  342. package/dist/collection/components/accordion/test/basic/accordion.e2e.js +26 -26
  343. package/dist/collection/components/accordion/test/multiple/accordion.e2e.js +18 -18
  344. package/dist/collection/components/accordion/test/nested/accordion.e2e.js +16 -16
  345. package/dist/collection/components/accordion/test/standalone/accordion.e2e.js +6 -6
  346. package/dist/collection/components/accordion-group/accordion-group.ios.css +44 -0
  347. package/dist/collection/components/accordion-group/accordion-group.js +421 -421
  348. package/dist/collection/components/accordion-group/accordion-group.md.css +66 -0
  349. package/dist/collection/components/action-sheet/action-sheet.ios.css +44 -0
  350. package/dist/collection/components/action-sheet/action-sheet.js +739 -729
  351. package/dist/collection/components/action-sheet/action-sheet.md.css +44 -0
  352. package/dist/collection/components/action-sheet/animations/ios.enter.js +18 -18
  353. package/dist/collection/components/action-sheet/animations/ios.leave.js +12 -12
  354. package/dist/collection/components/action-sheet/animations/md.enter.js +18 -18
  355. package/dist/collection/components/action-sheet/animations/md.leave.js +12 -12
  356. package/dist/collection/components/action-sheet/test/a11y/action-sheet.e2e.js +59 -59
  357. package/dist/collection/components/action-sheet/test/action-sheet-id.spec.js +32 -0
  358. package/dist/collection/components/action-sheet/test/basic/action-sheet-rendering.e2e.js +33 -33
  359. package/dist/collection/components/action-sheet/test/basic/action-sheet.e2e.js +74 -74
  360. package/dist/collection/components/action-sheet/test/basic/action-sheet.spec.js +18 -0
  361. package/dist/collection/components/action-sheet/test/basic/fixture.js +23 -23
  362. package/dist/collection/components/action-sheet/test/is-open/action-sheet.e2e.js +25 -25
  363. package/dist/collection/components/action-sheet/test/translucent/action-sheet.e2e.js +10 -10
  364. package/dist/collection/components/action-sheet/test/trigger/action-sheet.e2e.js +21 -21
  365. package/dist/collection/components/alert/alert.ios.css +85 -1
  366. package/dist/collection/components/alert/alert.js +977 -967
  367. package/dist/collection/components/alert/alert.md.css +115 -3
  368. package/dist/collection/components/alert/animations/ios.enter.js +19 -19
  369. package/dist/collection/components/alert/animations/ios.leave.js +13 -13
  370. package/dist/collection/components/alert/animations/md.enter.js +19 -19
  371. package/dist/collection/components/alert/animations/md.leave.js +10 -10
  372. package/dist/collection/components/alert/test/a11y/alert.e2e.js +116 -116
  373. package/dist/collection/components/alert/test/alert-id.spec.js +32 -0
  374. package/dist/collection/components/alert/test/alert.spec.js +37 -0
  375. package/dist/collection/components/alert/test/basic/alert-tablet.e2e.js +40 -0
  376. package/dist/collection/components/alert/test/basic/alert.e2e.js +96 -96
  377. package/dist/collection/components/alert/test/is-open/alert.e2e.js +25 -25
  378. package/dist/collection/components/alert/test/standalone/alert.e2e.js +9 -9
  379. package/dist/collection/components/alert/test/trigger/alert.e2e.js +21 -21
  380. package/dist/collection/components/app/app.js +116 -116
  381. package/dist/collection/components/app/test/safe-area/app.e2e.js +24 -24
  382. package/dist/collection/components/avatar/avatar.ios.css +44 -0
  383. package/dist/collection/components/avatar/avatar.js +17 -17
  384. package/dist/collection/components/avatar/avatar.md.css +44 -0
  385. package/dist/collection/components/avatar/test/basic/avatar.e2e.js +12 -12
  386. package/dist/collection/components/back-button/back-button.ios.css +44 -0
  387. package/dist/collection/components/back-button/back-button.js +214 -214
  388. package/dist/collection/components/back-button/back-button.md.css +44 -0
  389. package/dist/collection/components/back-button/test/a11y/back-button.e2e.js +6 -6
  390. package/dist/collection/components/back-button/test/back-button.spec.js +86 -0
  391. package/dist/collection/components/back-button/test/basic/back-button.e2e.js +6 -6
  392. package/dist/collection/components/back-button/test/toolbar/back-button.e2e.js +6 -6
  393. package/dist/collection/components/backdrop/backdrop.ios.css +44 -0
  394. package/dist/collection/components/backdrop/backdrop.js +131 -131
  395. package/dist/collection/components/backdrop/backdrop.md.css +44 -0
  396. package/dist/collection/components/badge/badge.ios.css +44 -0
  397. package/dist/collection/components/badge/badge.js +49 -49
  398. package/dist/collection/components/badge/badge.md.css +44 -0
  399. package/dist/collection/components/badge/test/a11y/badge.e2e.js +6 -6
  400. package/dist/collection/components/badge/test/basic/badge.e2e.js +6 -6
  401. package/dist/collection/components/breadcrumb/breadcrumb.ios.css +44 -0
  402. package/dist/collection/components/breadcrumb/breadcrumb.js +395 -395
  403. package/dist/collection/components/breadcrumb/breadcrumb.md.css +44 -0
  404. package/dist/collection/components/breadcrumb/test/aria.spec.js +22 -0
  405. package/dist/collection/components/breadcrumbs/breadcrumbs.ios.css +22 -0
  406. package/dist/collection/components/breadcrumbs/breadcrumbs.js +247 -247
  407. package/dist/collection/components/breadcrumbs/breadcrumbs.md.css +22 -0
  408. package/dist/collection/components/breadcrumbs/test/a11y/breadcrumbs.e2e.js +12 -12
  409. package/dist/collection/components/breadcrumbs/test/basic/breadcrumbs.e2e.js +6 -6
  410. package/dist/collection/components/breadcrumbs/test/breadcrumbs.spec.js +58 -0
  411. package/dist/collection/components/breadcrumbs/test/collapsed/breadcrumbs.e2e.js +6 -6
  412. package/dist/collection/components/breadcrumbs/test/reactive/breadcrumbs.e2e.js +43 -43
  413. package/dist/collection/components/button/button.ios.css +66 -0
  414. package/dist/collection/components/button/button.js +541 -541
  415. package/dist/collection/components/button/button.md.css +44 -0
  416. package/dist/collection/components/button/test/a11y/button.e2e.js +21 -21
  417. package/dist/collection/components/button/test/basic/button.e2e.js +32 -32
  418. package/dist/collection/components/button/test/clear/button.e2e.js +6 -6
  419. package/dist/collection/components/button/test/expand/button.e2e.js +6 -6
  420. package/dist/collection/components/button/test/form-reference/button.e2e.js +84 -84
  421. package/dist/collection/components/button/test/form-reference/button.spec.js +26 -0
  422. package/dist/collection/components/button/test/icon/button.e2e.js +6 -6
  423. package/dist/collection/components/button/test/outline/button.e2e.js +6 -6
  424. package/dist/collection/components/button/test/round/button.e2e.js +6 -6
  425. package/dist/collection/components/button/test/size/button.e2e.js +22 -22
  426. package/dist/collection/components/button/test/strong/button.e2e.js +22 -22
  427. package/dist/collection/components/button/test/wrap/button.e2e.js +73 -73
  428. package/dist/collection/components/buttons/buttons.ios.css +66 -0
  429. package/dist/collection/components/buttons/buttons.js +46 -46
  430. package/dist/collection/components/buttons/buttons.md.css +66 -0
  431. package/dist/collection/components/buttons/test/a11y/buttons.e2e.js +21 -21
  432. package/dist/collection/components/card/card.ios.css +44 -0
  433. package/dist/collection/components/card/card.js +251 -251
  434. package/dist/collection/components/card/card.md.css +44 -0
  435. package/dist/collection/components/card/test/a11y/card.e2e.js +6 -6
  436. package/dist/collection/components/card/test/aria.spec.js +16 -0
  437. package/dist/collection/components/card/test/basic/card.e2e.js +38 -38
  438. package/dist/collection/components/card-content/card-content.ios.css +44 -0
  439. package/dist/collection/components/card-content/card-content.js +21 -21
  440. package/dist/collection/components/card-content/card-content.md.css +44 -0
  441. package/dist/collection/components/card-header/card-header.ios.css +44 -0
  442. package/dist/collection/components/card-header/card-header.js +70 -70
  443. package/dist/collection/components/card-header/card-header.md.css +44 -0
  444. package/dist/collection/components/card-header/test/basic/card-header.e2e.js +6 -6
  445. package/dist/collection/components/card-subtitle/card-subtitle.ios.css +44 -0
  446. package/dist/collection/components/card-subtitle/card-subtitle.js +50 -50
  447. package/dist/collection/components/card-subtitle/card-subtitle.md.css +44 -0
  448. package/dist/collection/components/card-title/card-title.ios.css +44 -0
  449. package/dist/collection/components/card-title/card-title.js +50 -50
  450. package/dist/collection/components/card-title/card-title.md.css +44 -0
  451. package/dist/collection/components/checkbox/checkbox.ios.css +66 -6
  452. package/dist/collection/components/checkbox/checkbox.js +418 -415
  453. package/dist/collection/components/checkbox/checkbox.md.css +66 -6
  454. package/dist/collection/components/checkbox/test/a11y/checkbox.e2e.js +14 -14
  455. package/dist/collection/components/checkbox/test/basic/checkbox.e2e.js +50 -50
  456. package/dist/collection/components/checkbox/test/checkbox.spec.js +34 -0
  457. package/dist/collection/components/checkbox/test/color/checkbox.e2e.js +11 -11
  458. package/dist/collection/components/checkbox/test/indeterminate/checkbox.e2e.js +6 -6
  459. package/dist/collection/components/checkbox/test/item/checkbox.e2e.js +29 -29
  460. package/dist/collection/components/checkbox/test/label/checkbox.e2e.js +75 -75
  461. package/dist/collection/components/checkbox/test/legacy/basic/checkbox.e2e.js +45 -45
  462. package/dist/collection/components/checkbox/test/legacy/indeterminate/checkbox.e2e.js +6 -6
  463. package/dist/collection/components/checkbox/test/states/checkbox.e2e.js +21 -21
  464. package/dist/collection/components/chip/chip.ios.css +22 -0
  465. package/dist/collection/components/chip/chip.js +90 -90
  466. package/dist/collection/components/chip/chip.md.css +22 -0
  467. package/dist/collection/components/chip/test/a11y/chip.e2e.js +19 -19
  468. package/dist/collection/components/chip/test/basic/chip.e2e.js +42 -42
  469. package/dist/collection/components/chip/test/states/chip.e2e.js +14 -14
  470. package/dist/collection/components/col/col.css +66 -0
  471. package/dist/collection/components/col/col.js +536 -536
  472. package/dist/collection/components/content/content.css +22 -0
  473. package/dist/collection/components/content/content.js +745 -745
  474. package/dist/collection/components/content/test/basic/content.e2e.js +6 -6
  475. package/dist/collection/components/content/test/fixed/content.e2e.js +6 -6
  476. package/dist/collection/components/content/test/fullscreen/content.e2e.js +6 -6
  477. package/dist/collection/components/content/test/standalone/content.e2e.js +5 -5
  478. package/dist/collection/components/datetime/datetime.ios.css +45 -0
  479. package/dist/collection/components/datetime/datetime.js +2264 -2232
  480. package/dist/collection/components/datetime/datetime.md.css +45 -0
  481. package/dist/collection/components/datetime/test/a11y/datetime.e2e.js +58 -58
  482. package/dist/collection/components/datetime/test/a11y/datetime.spec.js +43 -0
  483. package/dist/collection/components/datetime/test/basic/datetime.e2e.js +241 -241
  484. package/dist/collection/components/datetime/test/color/datetime.e2e.js +9 -9
  485. package/dist/collection/components/datetime/test/comparison.spec.js +43 -0
  486. package/dist/collection/components/datetime/test/custom/datetime.e2e.js +37 -37
  487. package/dist/collection/components/datetime/test/data.spec.js +456 -0
  488. package/dist/collection/components/datetime/test/datetime.e2e.js +29 -29
  489. package/dist/collection/components/datetime/test/disable-dates/datetime.e2e.js +119 -119
  490. package/dist/collection/components/datetime/test/disabled/datetime.e2e.js +43 -43
  491. package/dist/collection/components/datetime/test/disabled/datetime.spec.js +33 -0
  492. package/dist/collection/components/datetime/test/display/datetime.e2e.js +86 -86
  493. package/dist/collection/components/datetime/test/first-day-of-week/datetime.e2e.js +6 -6
  494. package/dist/collection/components/datetime/test/format.spec.js +124 -0
  495. package/dist/collection/components/datetime/test/helpers.spec.js +72 -0
  496. package/dist/collection/components/datetime/test/highlighted-dates/datetime.e2e.js +76 -76
  497. package/dist/collection/components/datetime/test/hour-cycle/datetime.e2e.js +21 -21
  498. package/dist/collection/components/datetime/test/locale/datetime.e2e.js +98 -98
  499. package/dist/collection/components/datetime/test/manipulation.spec.js +565 -0
  500. package/dist/collection/components/datetime/test/minmax/datetime.e2e.js +178 -178
  501. package/dist/collection/components/datetime/test/month-year-picker/datetime.e2e.js +17 -17
  502. package/dist/collection/components/datetime/test/multiple/datetime.e2e.js +170 -170
  503. package/dist/collection/components/datetime/test/parse.spec.js +222 -0
  504. package/dist/collection/components/datetime/test/position/datetime.e2e.js +14 -14
  505. package/dist/collection/components/datetime/test/prefer-wheel/datetime.e2e.js +263 -263
  506. package/dist/collection/components/datetime/test/prefer-wheel/datetime.spec.js +27 -0
  507. package/dist/collection/components/datetime/test/presentation/datetime.e2e.js +137 -137
  508. package/dist/collection/components/datetime/test/readonly/datetime.e2e.js +86 -86
  509. package/dist/collection/components/datetime/test/set-value/datetime.e2e.js +40 -40
  510. package/dist/collection/components/datetime/test/state.spec.js +114 -0
  511. package/dist/collection/components/datetime/test/time-label/datetime.e2e.js +13 -13
  512. package/dist/collection/components/datetime/test/values/datetime.e2e.js +77 -77
  513. package/dist/collection/components/datetime/utils/comparison.js +22 -22
  514. package/dist/collection/components/datetime/utils/data.js +394 -394
  515. package/dist/collection/components/datetime/utils/format.js +143 -143
  516. package/dist/collection/components/datetime/utils/helpers.js +74 -74
  517. package/dist/collection/components/datetime/utils/manipulation.js +332 -282
  518. package/dist/collection/components/datetime/utils/parse.js +139 -139
  519. package/dist/collection/components/datetime/utils/state.js +123 -123
  520. package/dist/collection/components/datetime-button/datetime-button.css +22 -0
  521. package/dist/collection/components/datetime-button/datetime-button.js +399 -399
  522. package/dist/collection/components/datetime-button/test/a11y/datetime-button.e2e.js +11 -11
  523. package/dist/collection/components/datetime-button/test/basic/datetime-button.e2e.js +123 -123
  524. package/dist/collection/components/datetime-button/test/disabled/datetime-button.e2e.js +13 -13
  525. package/dist/collection/components/datetime-button/test/multiple/datetime-button.e2e.js +38 -38
  526. package/dist/collection/components/datetime-button/test/overlays/datetime-button.e2e.js +102 -102
  527. package/dist/collection/components/fab/fab.css +88 -0
  528. package/dist/collection/components/fab/fab.js +179 -179
  529. package/dist/collection/components/fab/test/basic/fab.e2e.js +50 -50
  530. package/dist/collection/components/fab/test/custom-size/fab.e2e.js +6 -6
  531. package/dist/collection/components/fab/test/safe-area/fab.e2e.js +25 -25
  532. package/dist/collection/components/fab/test/states/fab.e2e.js +6 -6
  533. package/dist/collection/components/fab/test/translucent/fab.e2e.js +17 -17
  534. package/dist/collection/components/fab-button/fab-button.ios.css +44 -0
  535. package/dist/collection/components/fab-button/fab-button.js +374 -374
  536. package/dist/collection/components/fab-button/fab-button.md.css +44 -0
  537. package/dist/collection/components/fab-button/test/a11y/fab-button.e2e.js +6 -6
  538. package/dist/collection/components/fab-list/fab-list.css +44 -0
  539. package/dist/collection/components/fab-list/fab-list.js +79 -79
  540. package/dist/collection/components/footer/footer.ios.css +44 -0
  541. package/dist/collection/components/footer/footer.js +135 -135
  542. package/dist/collection/components/footer/footer.md.css +44 -0
  543. package/dist/collection/components/footer/footer.utils.js +25 -25
  544. package/dist/collection/components/footer/test/basic/footer.e2e.js +18 -18
  545. package/dist/collection/components/footer/test/fade/footer.e2e.js +10 -10
  546. package/dist/collection/components/footer/test/scroll-target/footer.e2e.js +15 -15
  547. package/dist/collection/components/footer/test/with-tabs/footer.e2e.js +6 -6
  548. package/dist/collection/components/grid/grid.css +66 -0
  549. package/dist/collection/components/grid/grid.js +44 -44
  550. package/dist/collection/components/grid/test/basic/grid.e2e.js +6 -6
  551. package/dist/collection/components/grid/test/offsets/grid.e2e.js +6 -6
  552. package/dist/collection/components/grid/test/padding/grid.e2e.js +6 -6
  553. package/dist/collection/components/grid/test/sizes/grid.e2e.js +6 -6
  554. package/dist/collection/components/header/header.ios.css +44 -0
  555. package/dist/collection/components/header/header.js +181 -181
  556. package/dist/collection/components/header/header.md.css +44 -0
  557. package/dist/collection/components/header/header.utils.js +148 -148
  558. package/dist/collection/components/header/test/a11y/header.e2e.js +18 -18
  559. package/dist/collection/components/header/test/basic/header.e2e.js +23 -23
  560. package/dist/collection/components/header/test/condense/header.e2e.js +25 -25
  561. package/dist/collection/components/header/test/fade/header.e2e.js +10 -10
  562. package/dist/collection/components/header/test/scroll-target/header.e2e.js +15 -15
  563. package/dist/collection/components/icon/test/basic/icon.e2e.js +6 -6
  564. package/dist/collection/components/icon/test/dir/icon.e2e.js +11 -11
  565. package/dist/collection/components/img/img.js +177 -177
  566. package/dist/collection/components/img/test/basic/img.e2e.js +62 -62
  567. package/dist/collection/components/img/test/draggable/img.e2e.js +10 -10
  568. package/dist/collection/components/infinite-scroll/infinite-scroll.js +279 -271
  569. package/dist/collection/components/infinite-scroll/test/basic/infinite-scroll.e2e.js +11 -11
  570. package/dist/collection/components/infinite-scroll/test/scroll-target/infinite-scroll.e2e.js +11 -11
  571. package/dist/collection/components/infinite-scroll/test/small-dom-update/infinite-scroll.e2e.js +31 -0
  572. package/dist/collection/components/infinite-scroll/test/top/infinite-scroll.e2e.js +11 -11
  573. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.ios.css +44 -0
  574. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +86 -86
  575. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.md.css +44 -0
  576. package/dist/collection/components/infinite-scroll-content/test/infinite-scroll-content.spec.js +37 -0
  577. package/dist/collection/components/input/input.ios.css +76 -3
  578. package/dist/collection/components/input/input.js +1250 -1204
  579. package/dist/collection/components/input/input.md.css +145 -12
  580. package/dist/collection/components/input/input.utils.js +22 -22
  581. package/dist/collection/components/input/test/a11y/input.e2e.js +12 -12
  582. package/dist/collection/components/input/test/basic/input.e2e.js +63 -63
  583. package/dist/collection/components/input/test/bottom-content/input.e2e.js +89 -89
  584. package/dist/collection/components/input/test/card/input.e2e.js +6 -6
  585. package/dist/collection/components/input/test/clear-on-edit/input.e2e.js +45 -25
  586. package/dist/collection/components/input/test/color/input.e2e.js +88 -88
  587. package/dist/collection/components/input/test/fill/input.e2e.js +63 -63
  588. package/dist/collection/components/input/test/highlight/input.e2e.js +52 -52
  589. package/dist/collection/components/input/test/input.e2e.js +6 -6
  590. package/dist/collection/components/input/test/input.spec.js +85 -0
  591. package/dist/collection/components/input/test/item/input.e2e.js +11 -11
  592. package/dist/collection/components/input/test/item/input.spec.js +24 -0
  593. package/dist/collection/components/input/test/label-placement/input.e2e.js +104 -104
  594. package/dist/collection/components/input/test/legacy/a11y/input.e2e.js +15 -15
  595. package/dist/collection/components/input/test/legacy/basic/input.e2e.js +102 -102
  596. package/dist/collection/components/input/test/legacy/clear-on-edit/input.e2e.js +44 -44
  597. package/dist/collection/components/input/test/legacy/input-events.e2e.js +56 -56
  598. package/dist/collection/components/input/test/legacy/masking/input.e2e.js +15 -15
  599. package/dist/collection/components/input/test/legacy/spec/input.e2e.js +8 -8
  600. package/dist/collection/components/input/test/slot/input.e2e.js +51 -0
  601. package/dist/collection/components/input/test/states/input.e2e.js +11 -11
  602. package/dist/collection/components/item/item.ios.css +85 -3
  603. package/dist/collection/components/item/item.js +614 -614
  604. package/dist/collection/components/item/item.md.css +129 -3
  605. package/dist/collection/components/item/test/a11y/item.e2e.js +47 -47
  606. package/dist/collection/components/item/test/a11y/item.spec.js +48 -0
  607. package/dist/collection/components/item/test/alignment/item.e2e.js +6 -6
  608. package/dist/collection/components/item/test/basic/item.e2e.js +16 -16
  609. package/dist/collection/components/item/test/buttons/item.e2e.js +18 -18
  610. package/dist/collection/components/item/test/colors/item.e2e.js +6 -6
  611. package/dist/collection/components/item/test/counter/item.e2e.js +34 -34
  612. package/dist/collection/components/item/test/css-variables/item.e2e.js +6 -6
  613. package/dist/collection/components/item/test/disabled/item.e2e.js +6 -7
  614. package/dist/collection/components/item/test/dividers/item.e2e.js +6 -6
  615. package/dist/collection/components/item/test/groups/item.e2e.js +8 -8
  616. package/dist/collection/components/item/test/highlight/item.e2e.js +6 -6
  617. package/dist/collection/components/item/test/icons/item.e2e.js +6 -6
  618. package/dist/collection/components/item/test/images/item.e2e.js +6 -6
  619. package/dist/collection/components/item/test/inputs/item.e2e.js +139 -139
  620. package/dist/collection/components/item/test/legacy/alignment/item.e2e.js +6 -6
  621. package/dist/collection/components/item/test/legacy/disabled/item.e2e.js +6 -6
  622. package/dist/collection/components/item/test/legacy/fill/item.e2e.js +6 -6
  623. package/dist/collection/components/item/test/legacy/form/item.e2e.js +6 -6
  624. package/dist/collection/components/item/test/lines/item.e2e.js +6 -6
  625. package/dist/collection/components/item/test/media/item.e2e.js +6 -6
  626. package/dist/collection/components/item/test/reorder/item.e2e.js +8 -8
  627. package/dist/collection/components/item/test/slotted-inputs/item.e2e.js +6 -6
  628. package/dist/collection/components/item/test/states/item.e2e.js +6 -6
  629. package/dist/collection/components/item-divider/item-divider.ios.css +66 -0
  630. package/dist/collection/components/item-divider/item-divider.js +71 -71
  631. package/dist/collection/components/item-divider/item-divider.md.css +66 -0
  632. package/dist/collection/components/item-divider/test/a11y/item-divider.e2e.js +11 -11
  633. package/dist/collection/components/item-divider/test/basic/item-divider.e2e.js +25 -25
  634. package/dist/collection/components/item-divider/test/spec/item-divider.e2e.js +8 -8
  635. package/dist/collection/components/item-group/item-group.ios.css +44 -0
  636. package/dist/collection/components/item-group/item-group.js +22 -22
  637. package/dist/collection/components/item-group/item-group.md.css +44 -0
  638. package/dist/collection/components/item-option/item-option.ios.css +44 -0
  639. package/dist/collection/components/item-option/item-option.js +197 -197
  640. package/dist/collection/components/item-option/item-option.md.css +44 -0
  641. package/dist/collection/components/item-options/item-options.ios.css +66 -0
  642. package/dist/collection/components/item-options/item-options.js +110 -110
  643. package/dist/collection/components/item-options/item-options.md.css +66 -0
  644. package/dist/collection/components/item-sliding/item-sliding.css +22 -0
  645. package/dist/collection/components/item-sliding/item-sliding.js +538 -538
  646. package/dist/collection/components/item-sliding/test/a11y/item-sliding.e2e.js +5 -5
  647. package/dist/collection/components/item-sliding/test/async/item-sliding.e2e.js +25 -25
  648. package/dist/collection/components/item-sliding/test/basic/item-sliding.e2e.js +87 -87
  649. package/dist/collection/components/item-sliding/test/icons/item-sliding.e2e.js +20 -20
  650. package/dist/collection/components/item-sliding/test/scroll-target/item-sliding.e2e.js +18 -18
  651. package/dist/collection/components/item-sliding/test/test.utils.js +20 -20
  652. package/dist/collection/components/label/label.ios.css +80 -3
  653. package/dist/collection/components/label/label.js +174 -174
  654. package/dist/collection/components/label/label.md.css +80 -3
  655. package/dist/collection/components/label/test/a11y/label.e2e.js +21 -21
  656. package/dist/collection/components/label/test/basic/label.e2e.js +21 -21
  657. package/dist/collection/components/label/test/color/label.e2e.js +21 -21
  658. package/dist/collection/components/label/test/headings/label.e2e.js +5 -5
  659. package/dist/collection/components/list/list.ios.css +66 -0
  660. package/dist/collection/components/list/list.js +101 -101
  661. package/dist/collection/components/list/list.md.css +66 -0
  662. package/dist/collection/components/list/test/a11y/list.e2e.js +6 -6
  663. package/dist/collection/components/list/test/basic/list.e2e.js +6 -6
  664. package/dist/collection/components/list/test/inset/list.e2e.js +16 -16
  665. package/dist/collection/components/list/test/lines/list.e2e.js +40 -40
  666. package/dist/collection/components/list-header/list-header.ios.css +66 -0
  667. package/dist/collection/components/list-header/list-header.js +69 -69
  668. package/dist/collection/components/list-header/list-header.md.css +66 -0
  669. package/dist/collection/components/list-header/test/a11y/list-header.e2e.js +6 -6
  670. package/dist/collection/components/list-header/test/basic/list-header.e2e.js +14 -14
  671. package/dist/collection/components/loading/animations/ios.enter.js +19 -19
  672. package/dist/collection/components/loading/animations/ios.leave.js +13 -13
  673. package/dist/collection/components/loading/animations/md.enter.js +19 -19
  674. package/dist/collection/components/loading/animations/md.leave.js +13 -13
  675. package/dist/collection/components/loading/loading.ios.css +44 -0
  676. package/dist/collection/components/loading/loading.js +730 -720
  677. package/dist/collection/components/loading/loading.md.css +44 -0
  678. package/dist/collection/components/loading/test/a11y/loading.e2e.js +26 -26
  679. package/dist/collection/components/loading/test/basic/loading.e2e.js +60 -60
  680. package/dist/collection/components/loading/test/basic/loading.spec.js +16 -0
  681. package/dist/collection/components/loading/test/is-open/loading.e2e.js +17 -17
  682. package/dist/collection/components/loading/test/loading-id.spec.js +32 -0
  683. package/dist/collection/components/loading/test/loading.spec.js +37 -0
  684. package/dist/collection/components/loading/test/standalone/loading.e2e.js +13 -13
  685. package/dist/collection/components/loading/test/trigger/loading.e2e.js +21 -21
  686. package/dist/collection/components/menu/menu.ios.css +47 -4
  687. package/dist/collection/components/menu/menu.js +956 -956
  688. package/dist/collection/components/menu/menu.md.css +47 -4
  689. package/dist/collection/components/menu/test/a11y/menu.e2e.js +13 -13
  690. package/dist/collection/components/menu/test/basic/menu.e2e.js +102 -102
  691. package/dist/collection/components/menu/test/custom/menu.e2e.js +61 -0
  692. package/dist/collection/components/menu/test/disable/menu.e2e.js +44 -44
  693. package/dist/collection/components/menu/test/focus-trap/menu.e2e.js +61 -61
  694. package/dist/collection/components/menu/test/multiple/menu.e2e.js +49 -49
  695. package/dist/collection/components/menu/test/safe-area/menu.e2e.js +54 -54
  696. package/dist/collection/components/menu-button/menu-button.ios.css +44 -0
  697. package/dist/collection/components/menu-button/menu-button.js +173 -173
  698. package/dist/collection/components/menu-button/menu-button.md.css +44 -0
  699. package/dist/collection/components/menu-button/test/a11y/menu-button.e2e.js +12 -12
  700. package/dist/collection/components/menu-button/test/async/menu-button.e2e.js +12 -12
  701. package/dist/collection/components/menu-button/test/basic/menu-button.e2e.js +6 -6
  702. package/dist/collection/components/menu-toggle/menu-toggle-util.js +2 -2
  703. package/dist/collection/components/menu-toggle/menu-toggle.js +93 -93
  704. package/dist/collection/components/menu-toggle/test/basic/menu-toggle.e2e.js +33 -33
  705. package/dist/collection/components/modal/animations/ios.enter.js +81 -81
  706. package/dist/collection/components/modal/animations/ios.leave.js +74 -74
  707. package/dist/collection/components/modal/animations/md.enter.js +21 -21
  708. package/dist/collection/components/modal/animations/md.leave.js +15 -15
  709. package/dist/collection/components/modal/animations/sheet.js +43 -43
  710. package/dist/collection/components/modal/gestures/sheet.js +289 -289
  711. package/dist/collection/components/modal/gestures/swipe-to-close.js +248 -247
  712. package/dist/collection/components/modal/gestures/utils.js +39 -39
  713. package/dist/collection/components/modal/modal.ios.css +44 -0
  714. package/dist/collection/components/modal/modal.js +1290 -1280
  715. package/dist/collection/components/modal/modal.md.css +44 -0
  716. package/dist/collection/components/modal/test/a11y/modal.e2e.js +12 -12
  717. package/dist/collection/components/modal/test/a11y/modal.spec.js +22 -0
  718. package/dist/collection/components/modal/test/basic/modal.e2e.js +110 -110
  719. package/dist/collection/components/modal/test/basic/modal.spec.js +16 -0
  720. package/dist/collection/components/modal/test/can-dismiss/modal-card.e2e.js +44 -44
  721. package/dist/collection/components/modal/test/can-dismiss/modal-sheet.e2e.js +62 -62
  722. package/dist/collection/components/modal/test/can-dismiss/modal.e2e.js +16 -16
  723. package/dist/collection/components/modal/test/can-dismiss/modal.spec.js +191 -0
  724. package/dist/collection/components/modal/test/card/modal-card.e2e.js +69 -69
  725. package/dist/collection/components/modal/test/card/modal-tablet.e2e.js +67 -67
  726. package/dist/collection/components/modal/test/card-nav/modal.e2e.js +26 -26
  727. package/dist/collection/components/modal/test/card-refresher/modal.e2e.js +14 -14
  728. package/dist/collection/components/modal/test/card-scroll-target/modal.e2e.js +34 -34
  729. package/dist/collection/components/modal/test/custom/modal.e2e.js +16 -16
  730. package/dist/collection/components/modal/test/custom-dialog/modal.e2e.js +12 -12
  731. package/dist/collection/components/modal/test/dark-mode/model.e2e.js +12 -12
  732. package/dist/collection/components/modal/test/fixtures.js +21 -21
  733. package/dist/collection/components/modal/test/inline/modal.e2e.js +34 -34
  734. package/dist/collection/components/modal/test/is-open/modal.e2e.js +17 -17
  735. package/dist/collection/components/modal/test/modal-id.spec.js +32 -0
  736. package/dist/collection/components/modal/test/sheet/modal.e2e.js +178 -178
  737. package/dist/collection/components/modal/test/standalone/modal.e2e.js +12 -12
  738. package/dist/collection/components/modal/test/trigger/modal.e2e.js +23 -23
  739. package/dist/collection/components/modal/utils.js +55 -55
  740. package/dist/collection/components/modal/utils.spec.js +7 -7
  741. package/dist/collection/components/nav/nav.css +22 -0
  742. package/dist/collection/components/nav/nav.js +1748 -1748
  743. package/dist/collection/components/nav/test/basic/nav.e2e.js +58 -58
  744. package/dist/collection/components/nav/test/modal-navigation/nav.e2e.js +52 -52
  745. package/dist/collection/components/nav/test/nav-controller.spec.js +749 -0
  746. package/dist/collection/components/nav/test/nested/nav.e2e.js +54 -54
  747. package/dist/collection/components/nav/test/routing/nav.e2e.js +75 -75
  748. package/dist/collection/components/nav/view-controller.js +52 -52
  749. package/dist/collection/components/nav-link/nav-link-utils.js +16 -16
  750. package/dist/collection/components/nav-link/nav-link.js +106 -106
  751. package/dist/collection/components/note/note.ios.css +44 -0
  752. package/dist/collection/components/note/note.js +49 -49
  753. package/dist/collection/components/note/note.md.css +44 -0
  754. package/dist/collection/components/note/test/a11y/note.e2e.js +59 -16
  755. package/dist/collection/components/note/test/basic/note.e2e.js +33 -33
  756. package/dist/collection/components/picker/animations/ios.enter.js +18 -18
  757. package/dist/collection/components/picker/animations/ios.leave.js +14 -14
  758. package/dist/collection/components/picker/picker.ios.css +44 -0
  759. package/dist/collection/components/picker/picker.js +782 -772
  760. package/dist/collection/components/picker/picker.md.css +44 -0
  761. package/dist/collection/components/picker/test/basic/picker.e2e.js +17 -17
  762. package/dist/collection/components/picker/test/is-open/picker.e2e.js +17 -17
  763. package/dist/collection/components/picker/test/picker-id.spec.js +32 -0
  764. package/dist/collection/components/picker/test/trigger/picker.e2e.js +21 -21
  765. package/dist/collection/components/picker-column/picker-column.ios.css +44 -0
  766. package/dist/collection/components/picker-column/picker-column.js +377 -377
  767. package/dist/collection/components/picker-column/picker-column.md.css +44 -0
  768. package/dist/collection/components/picker-column/test/picker-column-aria.spec.js +35 -0
  769. package/dist/collection/components/picker-column/test/picker-column-dynamic.spec.js +29 -0
  770. package/dist/collection/components/picker-column/test/picker-column.spec.js +17 -0
  771. package/dist/collection/components/picker-column/test/standalone/picker-column.e2e.js +27 -27
  772. package/dist/collection/components/picker-column/test/test.utils.js +29 -29
  773. package/dist/collection/components/picker-column-internal/picker-column-internal.ios.css +33 -3
  774. package/dist/collection/components/picker-column-internal/picker-column-internal.js +523 -501
  775. package/dist/collection/components/picker-column-internal/picker-column-internal.md.css +55 -3
  776. package/dist/collection/components/picker-column-internal/test/basic/picker-column-internal.e2e.js +53 -53
  777. package/dist/collection/components/picker-column-internal/test/disabled/picker-column-internal.e2e.js +66 -37
  778. package/dist/collection/components/picker-internal/picker-internal.ios.css +44 -0
  779. package/dist/collection/components/picker-internal/picker-internal.js +517 -517
  780. package/dist/collection/components/picker-internal/picker-internal.md.css +44 -0
  781. package/dist/collection/components/picker-internal/test/a11y/picker-internal.e2e.js +6 -6
  782. package/dist/collection/components/picker-internal/test/basic/picker-internal.e2e.js +76 -76
  783. package/dist/collection/components/picker-internal/test/keyboard-entry/picker-internal.e2e.js +39 -39
  784. package/dist/collection/components/popover/animations/ios.enter.js +79 -79
  785. package/dist/collection/components/popover/animations/ios.leave.js +28 -28
  786. package/dist/collection/components/popover/animations/md.enter.js +58 -58
  787. package/dist/collection/components/popover/animations/md.leave.js +19 -19
  788. package/dist/collection/components/popover/popover.ios.css +44 -0
  789. package/dist/collection/components/popover/popover.js +1189 -1179
  790. package/dist/collection/components/popover/popover.md.css +44 -0
  791. package/dist/collection/components/popover/test/adjustment/popover.e2e.js +22 -22
  792. package/dist/collection/components/popover/test/arrow/popover.e2e.js +15 -15
  793. package/dist/collection/components/popover/test/async/popover.e2e.js +29 -29
  794. package/dist/collection/components/popover/test/basic/popover.e2e.js +108 -108
  795. package/dist/collection/components/popover/test/basic/popover.spec.js +16 -0
  796. package/dist/collection/components/popover/test/dismiss-on-select/popover.e2e.js +26 -26
  797. package/dist/collection/components/popover/test/fixture.js +16 -16
  798. package/dist/collection/components/popover/test/inline/popover.e2e.js +18 -18
  799. package/dist/collection/components/popover/test/is-open/popover.e2e.js +5 -5
  800. package/dist/collection/components/popover/test/nested/popover.e2e.js +81 -81
  801. package/dist/collection/components/popover/test/popover-id.spec.js +32 -0
  802. package/dist/collection/components/popover/test/position/popover.e2e.js +18 -18
  803. package/dist/collection/components/popover/test/reference/popover.e2e.js +14 -14
  804. package/dist/collection/components/popover/test/size/popover.e2e.js +29 -29
  805. package/dist/collection/components/popover/test/standalone/popover.e2e.js +7 -7
  806. package/dist/collection/components/popover/test/test.utils.js +23 -23
  807. package/dist/collection/components/popover/test/trigger/popover.e2e.js +35 -35
  808. package/dist/collection/components/popover/test/util.spec.js +53 -0
  809. package/dist/collection/components/popover/utils.js +606 -606
  810. package/dist/collection/components/progress-bar/progress-bar.ios.css +22 -0
  811. package/dist/collection/components/progress-bar/progress-bar.js +145 -145
  812. package/dist/collection/components/progress-bar/progress-bar.md.css +22 -0
  813. package/dist/collection/components/progress-bar/test/basic/progress-bar.e2e.js +6 -6
  814. package/dist/collection/components/progress-bar/test/buffer/progress-bar.e2e.js +10 -10
  815. package/dist/collection/components/progress-bar/test/determinate/progress-bar.e2e.js +10 -10
  816. package/dist/collection/components/radio/radio.ios.css +66 -6
  817. package/dist/collection/components/radio/radio.js +453 -449
  818. package/dist/collection/components/radio/radio.md.css +66 -6
  819. package/dist/collection/components/radio/test/a11y/radio.e2e.js +41 -40
  820. package/dist/collection/components/radio/test/color/radio.e2e.js +11 -11
  821. package/dist/collection/components/radio/test/item/radio.e2e.js +37 -37
  822. package/dist/collection/components/radio/test/label-placement/radio.e2e.js +70 -70
  823. package/dist/collection/components/radio/test/legacy/a11y/radio.e2e.js +29 -29
  824. package/dist/collection/components/radio/test/legacy/basic/radio.e2e.js +43 -43
  825. package/dist/collection/components/radio/test/radio.spec.js +60 -0
  826. package/dist/collection/components/radio/test/states/radio.e2e.js +21 -21
  827. package/dist/collection/components/radio-group/radio-group.js +279 -255
  828. package/dist/collection/components/radio-group/test/basic/radio-group.e2e.js +35 -35
  829. package/dist/collection/components/radio-group/test/fixtures.js +22 -22
  830. package/dist/collection/components/radio-group/test/form/radio-group.e2e.js +39 -39
  831. package/dist/collection/components/radio-group/test/legacy/basic/radio-group.e2e.js +59 -59
  832. package/dist/collection/components/radio-group/test/legacy/form/radio-group.e2e.js +22 -22
  833. package/dist/collection/components/radio-group/test/legacy/search/radio-group.e2e.js +27 -27
  834. package/dist/collection/components/radio-group/test/radio-group-events.e2e.js +42 -42
  835. package/dist/collection/components/radio-group/test/radio-group.spec.js +69 -0
  836. package/dist/collection/components/radio-group/test/search/radio-group.e2e.js +23 -23
  837. package/dist/collection/components/range/range.ios.css +44 -6
  838. package/dist/collection/components/range/range.js +1001 -998
  839. package/dist/collection/components/range/range.md.css +44 -6
  840. package/dist/collection/components/range/test/a11y/range.e2e.js +46 -46
  841. package/dist/collection/components/range/test/active-bar-start/range.e2e.js +6 -6
  842. package/dist/collection/components/range/test/basic/range.e2e.js +23 -23
  843. package/dist/collection/components/range/test/color/range.e2e.js +6 -6
  844. package/dist/collection/components/range/test/custom/range.e2e.js +6 -6
  845. package/dist/collection/components/range/test/item/range.e2e.js +28 -28
  846. package/dist/collection/components/range/test/label/range.e2e.js +99 -99
  847. package/dist/collection/components/range/test/label/range.spec.js +23 -0
  848. package/dist/collection/components/range/test/legacy/a11y/range.e2e.js +25 -25
  849. package/dist/collection/components/range/test/legacy/active-bar-start/range.e2e.js +6 -6
  850. package/dist/collection/components/range/test/legacy/basic/range.e2e.js +61 -61
  851. package/dist/collection/components/range/test/legacy/range-events.e2e.js +80 -80
  852. package/dist/collection/components/range/test/legacy/scroll-target/range.e2e.js +23 -23
  853. package/dist/collection/components/range/test/range-events.e2e.js +135 -135
  854. package/dist/collection/components/range/test/range.spec.js +221 -0
  855. package/dist/collection/components/range/test/scroll-target/range.e2e.js +23 -23
  856. package/dist/collection/components/range/test/states/range.e2e.js +21 -21
  857. package/dist/collection/components/refresher/refresher.ios.css +44 -0
  858. package/dist/collection/components/refresher/refresher.js +806 -806
  859. package/dist/collection/components/refresher/refresher.md.css +44 -0
  860. package/dist/collection/components/refresher/refresher.utils.js +148 -148
  861. package/dist/collection/components/refresher/test/basic/refresher.e2e.js +25 -25
  862. package/dist/collection/components/refresher/test/scroll-target/refresher.e2e.js +25 -25
  863. package/dist/collection/components/refresher/test/test.utils.js +5 -5
  864. package/dist/collection/components/refresher-content/refresher-content.js +131 -131
  865. package/dist/collection/components/refresher-content/test/refresher-content.spec.js +46 -0
  866. package/dist/collection/components/reorder/reorder.ios.css +22 -0
  867. package/dist/collection/components/reorder/reorder.js +37 -37
  868. package/dist/collection/components/reorder/reorder.md.css +22 -0
  869. package/dist/collection/components/reorder-group/reorder-group.css +22 -0
  870. package/dist/collection/components/reorder-group/reorder-group.js +327 -327
  871. package/dist/collection/components/reorder-group/test/a11y/reorder-group.e2e.js +6 -6
  872. package/dist/collection/components/reorder-group/test/basic/reorder-group.e2e.js +11 -11
  873. package/dist/collection/components/reorder-group/test/interactive/reorder-group.e2e.js +21 -21
  874. package/dist/collection/components/reorder-group/test/nested/reorder-group.e2e.js +21 -21
  875. package/dist/collection/components/reorder-group/test/scroll-target/reorder-group.e2e.js +21 -21
  876. package/dist/collection/components/ripple-effect/ripple-effect.css +22 -0
  877. package/dist/collection/components/ripple-effect/ripple-effect.js +135 -135
  878. package/dist/collection/components/ripple-effect/test/basic/ripple-effect.e2e.js +48 -48
  879. package/dist/collection/components/route/route.js +151 -151
  880. package/dist/collection/components/route-redirect/route-redirect.js +76 -76
  881. package/dist/collection/components/router/router.js +472 -472
  882. package/dist/collection/components/router/test/basic/router.e2e.js +55 -55
  883. package/dist/collection/components/router/test/guards/href/router.e2e.js +51 -51
  884. package/dist/collection/components/router/test/guards/link/router.e2e.js +51 -51
  885. package/dist/collection/components/router/test/guards/push/router.e2e.js +51 -51
  886. package/dist/collection/components/router/test/guards/router.e2e.js +5 -5
  887. package/dist/collection/components/router/test/guards/test.utils.js +2 -2
  888. package/dist/collection/components/router/test/matching.spec.js +250 -0
  889. package/dist/collection/components/router/test/parser.spec.js +133 -0
  890. package/dist/collection/components/router/test/path.spec.js +218 -0
  891. package/dist/collection/components/router/test/router.spec.js +55 -0
  892. package/dist/collection/components/router/utils/debug.js +14 -14
  893. package/dist/collection/components/router/utils/dom.js +56 -56
  894. package/dist/collection/components/router/utils/matching.js +150 -150
  895. package/dist/collection/components/router/utils/parser.js +52 -52
  896. package/dist/collection/components/router/utils/path.js +66 -66
  897. package/dist/collection/components/router-link/router-link.css +22 -0
  898. package/dist/collection/components/router-link/router-link.js +157 -157
  899. package/dist/collection/components/router-outlet/router-outlet.css +22 -0
  900. package/dist/collection/components/router-outlet/router-outlet.js +459 -459
  901. package/dist/collection/components/router-outlet/test/basic/router-outlet.e2e.js +31 -31
  902. package/dist/collection/components/row/row.css +66 -0
  903. package/dist/collection/components/row/row.js +15 -15
  904. package/dist/collection/components/searchbar/searchbar.ios.css +44 -0
  905. package/dist/collection/components/searchbar/searchbar.js +891 -889
  906. package/dist/collection/components/searchbar/searchbar.md.css +44 -0
  907. package/dist/collection/components/searchbar/test/a11y/searchbar.e2e.js +11 -11
  908. package/dist/collection/components/searchbar/test/basic/searchbar.e2e.js +101 -101
  909. package/dist/collection/components/searchbar/test/events/searchbar.e2e.js +55 -55
  910. package/dist/collection/components/searchbar/test/searchbar.spec.js +15 -0
  911. package/dist/collection/components/segment/segment.ios.css +66 -0
  912. package/dist/collection/components/segment/segment.js +631 -631
  913. package/dist/collection/components/segment/segment.md.css +66 -0
  914. package/dist/collection/components/segment/test/a11y/segment.e2e.js +37 -37
  915. package/dist/collection/components/segment/test/basic/segment.e2e.js +22 -22
  916. package/dist/collection/components/segment/test/custom/segment.e2e.js +6 -6
  917. package/dist/collection/components/segment/test/icon/segment.e2e.js +6 -6
  918. package/dist/collection/components/segment/test/modes/segment.e2e.js +15 -15
  919. package/dist/collection/components/segment/test/scrollable/segment.e2e.js +12 -12
  920. package/dist/collection/components/segment/test/segment-events.e2e.js +97 -97
  921. package/dist/collection/components/segment/test/segment.spec.js +37 -0
  922. package/dist/collection/components/segment/test/toolbar/segment.e2e.js +21 -21
  923. package/dist/collection/components/segment/test/wrap/segment.e2e.js +21 -21
  924. package/dist/collection/components/segment-button/segment-button.ios.css +44 -0
  925. package/dist/collection/components/segment-button/segment-button.js +217 -217
  926. package/dist/collection/components/segment-button/segment-button.md.css +44 -0
  927. package/dist/collection/components/select/select.ios.css +126 -7
  928. package/dist/collection/components/select/select.js +1201 -1184
  929. package/dist/collection/components/select/select.md.css +173 -19
  930. package/dist/collection/components/select/test/a11y/select.e2e.js +14 -14
  931. package/dist/collection/components/select/test/async/select.e2e.js +14 -14
  932. package/dist/collection/components/select/test/basic/select.e2e.js +140 -140
  933. package/dist/collection/components/select/test/card/select.e2e.js +6 -6
  934. package/dist/collection/components/select/test/color/select.e2e.js +22 -22
  935. package/dist/collection/components/select/test/compare-with/select.e2e.js +33 -33
  936. package/dist/collection/components/select/test/custom/select.e2e.js +19 -19
  937. package/dist/collection/components/select/test/disabled/select.e2e.js +17 -17
  938. package/dist/collection/components/select/test/fill/select.e2e.js +63 -63
  939. package/dist/collection/components/select/test/highlight/select.e2e.js +74 -74
  940. package/dist/collection/components/select/test/item/select.e2e.js +26 -11
  941. package/dist/collection/components/select/test/label/select.e2e.js +141 -141
  942. package/dist/collection/components/select/test/legacy/async/select.e2e.js +8 -8
  943. package/dist/collection/components/select/test/legacy/basic/select.e2e.js +108 -108
  944. package/dist/collection/components/select/test/legacy/compare-with/select.e2e.js +33 -33
  945. package/dist/collection/components/select/test/legacy/custom/custom.e2e.js +5 -5
  946. package/dist/collection/components/select/test/legacy/single-value/select.e2e.js +8 -8
  947. package/dist/collection/components/select/test/legacy/spec/select.e2e.js +6 -6
  948. package/dist/collection/components/select/test/legacy/standalone/select.e2e.js +11 -11
  949. package/dist/collection/components/select/test/legacy/wrapping/select.e2e.js +17 -17
  950. package/dist/collection/components/select/test/popover-size/select.e2e.js +63 -63
  951. package/dist/collection/components/select/test/select.spec.js +59 -0
  952. package/dist/collection/components/select/test/slot/select.e2e.js +67 -0
  953. package/dist/collection/components/select/test/states/select.e2e.js +21 -21
  954. package/dist/collection/components/select/test/toggle-icon/select.e2e.js +14 -14
  955. package/dist/collection/components/select/test/wrapping/select.e2e.js +16 -16
  956. package/dist/collection/components/select-option/select-option.js +60 -60
  957. package/dist/collection/components/select-popover/select-popover.ios.css +66 -0
  958. package/dist/collection/components/select-popover/select-popover.js +197 -197
  959. package/dist/collection/components/select-popover/select-popover.md.css +66 -0
  960. package/dist/collection/components/select-popover/test/basic/select-popover.e2e.js +52 -52
  961. package/dist/collection/components/select-popover/test/fixtures.js +33 -33
  962. package/dist/collection/components/skeleton-text/skeleton-text.css +22 -0
  963. package/dist/collection/components/skeleton-text/skeleton-text.js +87 -48
  964. package/dist/collection/components/skeleton-text/test/basic/skeleton-text.e2e.js +6 -6
  965. package/dist/collection/components/skeleton-text/test/custom/skeleton-text.e2e.js +6 -6
  966. package/dist/collection/components/slides/IonicSlides.js +95 -95
  967. package/dist/collection/components/spinner/spinner-configs.js +121 -121
  968. package/dist/collection/components/spinner/spinner.css +22 -0
  969. package/dist/collection/components/spinner/spinner.js +137 -137
  970. package/dist/collection/components/spinner/test/basic/spinner.e2e.js +10 -10
  971. package/dist/collection/components/spinner/test/color/spinner.e2e.js +10 -10
  972. package/dist/collection/components/spinner/test/resize/spinner.e2e.js +8 -8
  973. package/dist/collection/components/split-pane/split-pane.ios.css +67 -2
  974. package/dist/collection/components/split-pane/split-pane.js +225 -225
  975. package/dist/collection/components/split-pane/split-pane.md.css +67 -2
  976. package/dist/collection/components/split-pane/test/basic/split-pane.e2e.js +18 -18
  977. package/dist/collection/components/split-pane/test/multiple/split-pane.e2e.js +23 -23
  978. package/dist/collection/components/tab/tab.js +170 -170
  979. package/dist/collection/components/tab-bar/tab-bar.ios.css +66 -0
  980. package/dist/collection/components/tab-bar/tab-bar.js +177 -177
  981. package/dist/collection/components/tab-bar/tab-bar.md.css +66 -0
  982. package/dist/collection/components/tab-bar/test/basic/tab-bar.e2e.js +8 -8
  983. package/dist/collection/components/tab-bar/test/custom/tab-bar.e2e.js +6 -6
  984. package/dist/collection/components/tab-bar/test/translucent/tab-bar.e2e.js +14 -14
  985. package/dist/collection/components/tab-button/tab-button.ios.css +44 -0
  986. package/dist/collection/components/tab-button/tab-button.js +267 -267
  987. package/dist/collection/components/tab-button/tab-button.md.css +44 -0
  988. package/dist/collection/components/tab-button/test/a11y/tab-button.e2e.js +6 -6
  989. package/dist/collection/components/tab-button/test/basic/tab-button.e2e.js +16 -16
  990. package/dist/collection/components/tab-button/test/layout/tab-button.e2e.js +26 -26
  991. package/dist/collection/components/tab-button/test/states/tab-button.e2e.js +26 -26
  992. package/dist/collection/components/tabs/tabs.css +22 -0
  993. package/dist/collection/components/tabs/tabs.js +344 -344
  994. package/dist/collection/components/tabs/test/basic/tabs.e2e.js +24 -24
  995. package/dist/collection/components/tabs/test/placements/tabs.e2e.js +17 -17
  996. package/dist/collection/components/text/test/basic/text.e2e.js +11 -11
  997. package/dist/collection/components/text/text.css +22 -0
  998. package/dist/collection/components/text/text.js +47 -47
  999. package/dist/collection/components/textarea/test/a11y/textarea.e2e.js +12 -12
  1000. package/dist/collection/components/textarea/test/autogrow/textarea.e2e.js +31 -31
  1001. package/dist/collection/components/textarea/test/bottom-content/textarea.e2e.js +82 -82
  1002. package/dist/collection/components/textarea/test/card/textarea.e2e.js +6 -6
  1003. package/dist/collection/components/textarea/test/clear-on-edit/textarea.e2e.js +53 -17
  1004. package/dist/collection/components/textarea/test/color/textarea.e2e.js +88 -88
  1005. package/dist/collection/components/textarea/test/cols/textarea.e2e.js +11 -11
  1006. package/dist/collection/components/textarea/test/fill/textarea.e2e.js +63 -63
  1007. package/dist/collection/components/textarea/test/highlight/textarea.e2e.js +52 -52
  1008. package/dist/collection/components/textarea/test/item/textarea.e2e.js +11 -11
  1009. package/dist/collection/components/textarea/test/label-placement/textarea.e2e.js +150 -150
  1010. package/dist/collection/components/textarea/test/legacy/a11y/textarea.e2e.js +15 -15
  1011. package/dist/collection/components/textarea/test/legacy/autogrow/textarea.e2e.js +31 -31
  1012. package/dist/collection/components/textarea/test/legacy/basic/textarea.e2e.js +30 -30
  1013. package/dist/collection/components/textarea/test/legacy/clear-on-edit/textarea.e2e.js +17 -17
  1014. package/dist/collection/components/textarea/test/slot/textarea.e2e.js +51 -0
  1015. package/dist/collection/components/textarea/test/states/textarea.e2e.js +11 -11
  1016. package/dist/collection/components/textarea/test/textarea-events.e2e.js +57 -57
  1017. package/dist/collection/components/textarea/test/textarea.spec.js +59 -0
  1018. package/dist/collection/components/textarea/textarea.ios.css +125 -5
  1019. package/dist/collection/components/textarea/textarea.js +1069 -1019
  1020. package/dist/collection/components/textarea/textarea.md.css +179 -14
  1021. package/dist/collection/components/thumbnail/test/basic/thumbnail.e2e.js +28 -28
  1022. package/dist/collection/components/thumbnail/thumbnail.css +22 -0
  1023. package/dist/collection/components/thumbnail/thumbnail.js +15 -15
  1024. package/dist/collection/components/title/test/a11y/title.e2e.js +17 -17
  1025. package/dist/collection/components/title/test/basic/title.e2e.js +13 -13
  1026. package/dist/collection/components/title/title.ios.css +22 -0
  1027. package/dist/collection/components/title/title.js +119 -119
  1028. package/dist/collection/components/title/title.md.css +22 -0
  1029. package/dist/collection/components/toast/animations/ios.enter.js +21 -20
  1030. package/dist/collection/components/toast/animations/ios.leave.js +18 -18
  1031. package/dist/collection/components/toast/animations/md.enter.js +23 -22
  1032. package/dist/collection/components/toast/animations/md.leave.js +6 -6
  1033. package/dist/collection/components/toast/animations/utils.js +62 -56
  1034. package/dist/collection/components/toast/gestures/swipe-to-dismiss.js +267 -0
  1035. package/dist/collection/components/toast/test/a11y/toast.e2e.js +92 -92
  1036. package/dist/collection/components/toast/test/basic/toast.e2e.js +101 -101
  1037. package/dist/collection/components/toast/test/is-open/toast.e2e.js +17 -17
  1038. package/dist/collection/components/toast/test/layout/toast.e2e.js +9 -9
  1039. package/dist/collection/components/toast/test/position-anchor/toast.e2e.js +37 -37
  1040. package/dist/collection/components/toast/test/standalone/toast.e2e.js +10 -10
  1041. package/dist/collection/components/toast/test/swipe-gesture/toast.e2e.js +84 -0
  1042. package/dist/collection/components/toast/test/toast-config.spec.js +25 -0
  1043. package/dist/collection/components/toast/test/toast-id.spec.js +32 -0
  1044. package/dist/collection/components/toast/test/toast.spec.js +200 -0
  1045. package/dist/collection/components/toast/test/trigger/toast.e2e.js +21 -21
  1046. package/dist/collection/components/toast/toast.ios.css +54 -10
  1047. package/dist/collection/components/toast/toast.js +1065 -952
  1048. package/dist/collection/components/toast/toast.md.css +54 -0
  1049. package/dist/collection/components/toggle/test/a11y/toggle.e2e.js +6 -6
  1050. package/dist/collection/components/toggle/test/color/toggle.e2e.js +11 -11
  1051. package/dist/collection/components/toggle/test/enable-on-off-labels/toggle.e2e.js +27 -27
  1052. package/dist/collection/components/toggle/test/item/toggle.e2e.js +52 -52
  1053. package/dist/collection/components/toggle/test/label/toggle.e2e.js +65 -65
  1054. package/dist/collection/components/toggle/test/legacy/basic/toggle.e2e.js +69 -69
  1055. package/dist/collection/components/toggle/test/legacy/enable-on-off-labels/toggle.e2e.js +23 -23
  1056. package/dist/collection/components/toggle/test/legacy/sizes/toggle.e2e.js +6 -6
  1057. package/dist/collection/components/toggle/test/sizes/toggle.e2e.js +6 -6
  1058. package/dist/collection/components/toggle/test/states/toggle.e2e.js +16 -16
  1059. package/dist/collection/components/toggle/test/toggle.spec.js +67 -0
  1060. package/dist/collection/components/toggle/toggle.ios.css +66 -6
  1061. package/dist/collection/components/toggle/toggle.js +487 -484
  1062. package/dist/collection/components/toggle/toggle.md.css +66 -6
  1063. package/dist/collection/components/toolbar/test/basic/toolbar.e2e.js +7 -7
  1064. package/dist/collection/components/toolbar/test/colors/toolbar.e2e.js +6 -6
  1065. package/dist/collection/components/toolbar/toolbar.ios.css +44 -0
  1066. package/dist/collection/components/toolbar/toolbar.js +100 -100
  1067. package/dist/collection/components/toolbar/toolbar.md.css +44 -0
  1068. package/dist/collection/css/test/a11y/typography.e2e.js +6 -6
  1069. package/dist/collection/global/config.js +51 -51
  1070. package/dist/collection/global/ionic-global.js +54 -54
  1071. package/dist/collection/global/test/config-controller.spec.js +77 -0
  1072. package/dist/collection/utils/animation/animation-utils.js +91 -91
  1073. package/dist/collection/utils/animation/animation.js +905 -904
  1074. package/dist/collection/utils/animation/cubic-bezier.js +49 -49
  1075. package/dist/collection/utils/animation/test/animation.spec.js +447 -0
  1076. package/dist/collection/utils/animation/test/animationbuilder/animation.e2e.js +26 -26
  1077. package/dist/collection/utils/animation/test/basic/animation.e2e.js +12 -12
  1078. package/dist/collection/utils/animation/test/display/animation.e2e.js +18 -18
  1079. package/dist/collection/utils/animation/test/hooks/animation.e2e.js +39 -39
  1080. package/dist/collection/utils/animation/test/multiple/animation.e2e.js +27 -27
  1081. package/dist/collection/utils/browser/index.js +0 -22
  1082. package/dist/collection/utils/config.js +20 -20
  1083. package/dist/collection/utils/content/content.utils.spec.js +121 -121
  1084. package/dist/collection/utils/content/index.js +58 -58
  1085. package/dist/collection/utils/floating-point/floating-point.spec.js +14 -14
  1086. package/dist/collection/utils/floating-point/index.js +5 -5
  1087. package/dist/collection/utils/focus-visible.js +63 -63
  1088. package/dist/collection/utils/forms/compare-with-utils.js +39 -0
  1089. package/dist/collection/utils/forms/form-controller.js +45 -45
  1090. package/dist/collection/utils/forms/index.js +1 -0
  1091. package/dist/collection/utils/forms/notch-controller.js +120 -120
  1092. package/dist/collection/utils/framework-delegate.js +121 -121
  1093. package/dist/collection/utils/gesture/button-active.js +56 -56
  1094. package/dist/collection/utils/gesture/gesture-controller.js +182 -182
  1095. package/dist/collection/utils/gesture/index.js +222 -222
  1096. package/dist/collection/utils/gesture/listener.js +36 -36
  1097. package/dist/collection/utils/gesture/pointer-events.js +113 -113
  1098. package/dist/collection/utils/gesture/recognizers.js +46 -46
  1099. package/dist/collection/utils/gesture/swipe-back.js +65 -65
  1100. package/dist/collection/utils/hardware-back-button.js +48 -48
  1101. package/dist/collection/utils/helpers.js +258 -258
  1102. package/dist/collection/utils/helpers.spec.js +28 -28
  1103. package/dist/collection/utils/input-shims/hacks/common.js +61 -61
  1104. package/dist/collection/utils/input-shims/hacks/hide-caret.js +19 -19
  1105. package/dist/collection/utils/input-shims/hacks/input-blurring.js +47 -47
  1106. package/dist/collection/utils/input-shims/hacks/scroll-assist.js +225 -225
  1107. package/dist/collection/utils/input-shims/hacks/scroll-data.js +29 -29
  1108. package/dist/collection/utils/input-shims/hacks/scroll-padding.js +21 -21
  1109. package/dist/collection/utils/input-shims/hacks/test/scroll-assist.e2e.js +97 -97
  1110. package/dist/collection/utils/input-shims/input-shims.js +87 -81
  1111. package/dist/collection/utils/keyboard/keyboard-controller.js +128 -128
  1112. package/dist/collection/utils/keyboard/keyboard.js +59 -59
  1113. package/dist/collection/utils/keyboard/test/keyboard-controller.spec.js +21 -0
  1114. package/dist/collection/utils/keyboard/test/keyboard.spec.js +214 -0
  1115. package/dist/collection/utils/lock-controller.js +24 -24
  1116. package/dist/collection/utils/logging/index.js +3 -3
  1117. package/dist/collection/utils/media.js +13 -13
  1118. package/dist/collection/utils/menu-controller/animations/base.js +8 -8
  1119. package/dist/collection/utils/menu-controller/animations/overlay.js +21 -21
  1120. package/dist/collection/utils/menu-controller/animations/push.js +20 -20
  1121. package/dist/collection/utils/menu-controller/animations/reveal.js +6 -6
  1122. package/dist/collection/utils/menu-controller/index.js +204 -206
  1123. package/dist/collection/utils/native/capacitor.js +4 -4
  1124. package/dist/collection/utils/native/haptic.js +151 -151
  1125. package/dist/collection/utils/native/keyboard.js +47 -47
  1126. package/dist/collection/utils/native/native-interface.js +15 -15
  1127. package/dist/collection/utils/native/status-bar.js +36 -36
  1128. package/dist/collection/utils/overlays.js +495 -494
  1129. package/dist/collection/utils/platform.js +56 -56
  1130. package/dist/collection/utils/rtl/dir.js +5 -5
  1131. package/dist/collection/utils/rtl/dir.spec.js +17 -17
  1132. package/dist/collection/utils/sanitization/index.js +122 -122
  1133. package/dist/collection/utils/sanitization/test/sanitization.spec.js +43 -0
  1134. package/dist/collection/utils/slot-mutation-controller.js +86 -85
  1135. package/dist/collection/utils/status-tap.js +26 -26
  1136. package/dist/collection/utils/tap-click/index.js +171 -171
  1137. package/dist/collection/utils/tap-click/test/tap-click.e2e.js +12 -12
  1138. package/dist/collection/utils/test/aria.spec.js +79 -0
  1139. package/dist/collection/utils/test/attributes.spec.js +53 -0
  1140. package/dist/collection/utils/test/framework-delegate/framework-delegate.e2e.js +25 -25
  1141. package/dist/collection/utils/test/hardware-back-button.spec.js +53 -0
  1142. package/dist/collection/utils/test/overlays/overlays.e2e.js +137 -137
  1143. package/dist/collection/utils/test/overlays/overlays.spec.js +102 -0
  1144. package/dist/collection/utils/test/platform.spec.js +132 -0
  1145. package/dist/collection/utils/test/platform.utils.js +77 -77
  1146. package/dist/collection/utils/test/playwright/drag-element.js +69 -69
  1147. package/dist/collection/utils/test/playwright/generator.js +48 -25
  1148. package/dist/collection/utils/test/playwright/matchers/index.js +3 -3
  1149. package/dist/collection/utils/test/playwright/matchers/toHaveReceivedEvent.js +21 -21
  1150. package/dist/collection/utils/test/playwright/matchers/toHaveReceivedEventDetail.js +28 -28
  1151. package/dist/collection/utils/test/playwright/matchers/toHaveReceivedEventTimes.js +22 -22
  1152. package/dist/collection/utils/test/playwright/page/event-spy.js +110 -110
  1153. package/dist/collection/utils/test/playwright/page/utils/goto.js +52 -52
  1154. package/dist/collection/utils/test/playwright/page/utils/locator.js +8 -8
  1155. package/dist/collection/utils/test/playwright/page/utils/set-content.js +44 -35
  1156. package/dist/collection/utils/test/playwright/page/utils/set-ion-viewport.js +19 -19
  1157. package/dist/collection/utils/test/playwright/page/utils/spy-on-event.js +4 -4
  1158. package/dist/collection/utils/test/playwright/page/utils/wait-for-changes.js +48 -48
  1159. package/dist/collection/utils/test/playwright/playwright-page.js +35 -35
  1160. package/dist/collection/utils/test/playwright/viewports/index.js +13 -13
  1161. package/dist/collection/utils/test/press-keys.js +77 -77
  1162. package/dist/collection/utils/test/ready.spec.js +39 -0
  1163. package/dist/collection/utils/test/theme.spec.js +56 -0
  1164. package/dist/collection/utils/theme.js +23 -23
  1165. package/dist/collection/utils/transition/index.js +163 -163
  1166. package/dist/collection/utils/transition/ios.transition.js +598 -598
  1167. package/dist/collection/utils/transition/md.transition.js +44 -44
  1168. package/dist/collection/utils/watch-options.js +30 -30
  1169. package/dist/docs.json +195 -38
  1170. package/dist/esm/animation-dde8cc0d.js +1060 -0
  1171. package/dist/esm/{app-globals-2398e405.js → app-globals-8c62bec2.js} +1 -1
  1172. package/dist/esm/button-active-308d3edd.js +67 -0
  1173. package/dist/esm/capacitor-59395cbd.js +13 -0
  1174. package/dist/esm/compare-with-utils-a96ff2ea.js +41 -0
  1175. package/dist/esm/config-49c88215.js +193 -0
  1176. package/dist/esm/cubic-bezier-fe2083dc.js +90 -0
  1177. package/dist/esm/data-775093f5.js +1625 -0
  1178. package/dist/esm/{dir-912e3e13.js → dir-babeabeb.js} +5 -5
  1179. package/dist/esm/focus-visible-dd40d69f.js +75 -0
  1180. package/dist/esm/form-controller-548aa79c.js +64 -0
  1181. package/dist/esm/framework-delegate-bc1fd82a.js +140 -0
  1182. package/dist/esm/gesture-controller-1bf57181.js +195 -0
  1183. package/dist/esm/haptic-554688a5.js +206 -0
  1184. package/dist/esm/hardware-back-button-b2bc76db.js +71 -0
  1185. package/dist/esm/helpers-ae653409.js +418 -0
  1186. package/dist/esm/index-1193f005.js +306 -0
  1187. package/dist/esm/index-2cf77112.js +457 -0
  1188. package/dist/esm/index-4743453d.js +231 -0
  1189. package/dist/esm/index-82eeb47f.js +196 -0
  1190. package/dist/esm/{index-595d62c9.js → index-9b0d46f4.js} +3 -3
  1191. package/dist/esm/index-a5d50daf.js +7 -0
  1192. package/dist/esm/{index-7c9b1bca.js → index-b7d870cf.js} +79 -15
  1193. package/dist/esm/{index-4392efa5.js → index-b9e742e5.js} +60 -60
  1194. package/dist/esm/index.js +113 -113
  1195. package/dist/esm/input-shims-6539ce13.js +599 -0
  1196. package/dist/esm/input.utils-a5a2d164.js +135 -0
  1197. package/dist/esm/ion-accordion_2.entry.js +488 -488
  1198. package/dist/esm/ion-action-sheet.entry.js +260 -250
  1199. package/dist/esm/ion-alert.entry.js +442 -432
  1200. package/dist/esm/ion-app_8.entry.js +1151 -1151
  1201. package/dist/esm/ion-avatar_3.entry.js +29 -29
  1202. package/dist/esm/ion-back-button.entry.js +73 -73
  1203. package/dist/esm/ion-backdrop.entry.js +40 -40
  1204. package/dist/esm/ion-breadcrumb_2.entry.js +194 -194
  1205. package/dist/esm/ion-button_2.entry.js +303 -303
  1206. package/dist/esm/ion-card_5.entry.js +105 -105
  1207. package/dist/esm/ion-checkbox.entry.js +149 -147
  1208. package/dist/esm/ion-chip.entry.js +20 -20
  1209. package/dist/esm/ion-col_3.entry.js +136 -136
  1210. package/dist/esm/ion-datetime-button.entry.js +325 -325
  1211. package/dist/esm/ion-datetime_3.entry.js +2204 -2162
  1212. package/dist/esm/ion-fab_3.entry.js +150 -150
  1213. package/dist/esm/ion-img.entry.js +79 -79
  1214. package/dist/esm/ion-infinite-scroll_2.entry.js +198 -190
  1215. package/dist/esm/ion-input.entry.js +443 -399
  1216. package/dist/esm/ion-item-option_3.entry.js +457 -457
  1217. package/dist/esm/ion-item_8.entry.js +441 -428
  1218. package/dist/esm/ion-loading.entry.js +220 -210
  1219. package/dist/esm/ion-menu_3.entry.js +670 -670
  1220. package/dist/esm/ion-modal.entry.js +1415 -1405
  1221. package/dist/esm/ion-nav_2.entry.js +904 -904
  1222. package/dist/esm/ion-picker-column-internal.entry.js +331 -327
  1223. package/dist/esm/ion-picker-internal.entry.js +453 -453
  1224. package/dist/esm/ion-popover.entry.js +1108 -1098
  1225. package/dist/esm/ion-progress-bar.entry.js +40 -40
  1226. package/dist/esm/ion-radio_2.entry.js +321 -316
  1227. package/dist/esm/ion-range.entry.js +558 -556
  1228. package/dist/esm/ion-refresher_2.entry.js +786 -786
  1229. package/dist/esm/ion-reorder_2.entry.js +267 -267
  1230. package/dist/esm/ion-ripple-effect.entry.js +66 -66
  1231. package/dist/esm/ion-route_4.entry.js +693 -693
  1232. package/dist/esm/ion-searchbar.entry.js +360 -358
  1233. package/dist/esm/ion-segment_2.entry.js +507 -507
  1234. package/dist/esm/ion-select_3.entry.js +784 -768
  1235. package/dist/esm/ion-spinner.entry.js +46 -46
  1236. package/dist/esm/ion-split-pane.entry.js +119 -119
  1237. package/dist/esm/ion-tab-bar_2.entry.js +138 -138
  1238. package/dist/esm/ion-tab_2.entry.js +187 -187
  1239. package/dist/esm/ion-text.entry.js +13 -13
  1240. package/dist/esm/ion-textarea.entry.js +401 -353
  1241. package/dist/esm/ion-toast.entry.js +771 -419
  1242. package/dist/esm/ion-toggle.entry.js +227 -225
  1243. package/dist/esm/ionic-global-1f99b929.js +224 -0
  1244. package/dist/esm/ionic.js +6 -6
  1245. package/dist/esm/ios.transition-3376ccb2.js +651 -0
  1246. package/dist/esm/keyboard-52278bd7.js +146 -0
  1247. package/dist/esm/keyboard-73175e24.js +79 -0
  1248. package/dist/esm/keyboard-controller-ec5c2bfa.js +165 -0
  1249. package/dist/esm/loader.js +5 -5
  1250. package/dist/esm/lock-controller-316928be.js +38 -0
  1251. package/dist/esm/md.transition-f992779f.js +57 -0
  1252. package/dist/esm/notch-controller-fea7f9c5.js +153 -0
  1253. package/dist/esm/overlays-b33f6bca.js +693 -0
  1254. package/dist/esm/spinner-configs-964f7cf3.js +145 -0
  1255. package/dist/esm/status-tap-16fd8f3d.js +40 -0
  1256. package/dist/esm/swipe-back-18cb49f7.js +79 -0
  1257. package/dist/esm/theme-01f3f29c.js +43 -0
  1258. package/dist/esm/watch-options-c2911ace.js +47 -0
  1259. package/dist/esm-es5/{animation-8aa13916.js → animation-dde8cc0d.js} +1 -1
  1260. package/dist/esm-es5/app-globals-8c62bec2.js +4 -0
  1261. package/dist/esm-es5/{button-active-ce5cba4c.js → button-active-308d3edd.js} +1 -1
  1262. package/dist/esm-es5/{capacitor-b4979570.js → capacitor-59395cbd.js} +1 -1
  1263. package/dist/esm-es5/compare-with-utils-a96ff2ea.js +4 -0
  1264. package/dist/esm-es5/data-775093f5.js +4 -0
  1265. package/dist/esm-es5/{form-controller-64edeaad.js → form-controller-548aa79c.js} +1 -1
  1266. package/dist/esm-es5/{framework-delegate-aa433dea.js → framework-delegate-bc1fd82a.js} +1 -1
  1267. package/dist/esm-es5/{haptic-1243b917.js → haptic-554688a5.js} +1 -1
  1268. package/dist/esm-es5/index-1193f005.js +4 -0
  1269. package/dist/esm-es5/{index-ff313b19.js → index-2cf77112.js} +1 -1
  1270. package/dist/esm-es5/{index-6a0ccabb.js → index-4743453d.js} +1 -1
  1271. package/dist/esm-es5/{index-f0cc4e14.js → index-82eeb47f.js} +1 -1
  1272. package/dist/esm-es5/index-b7d870cf.js +5 -0
  1273. package/dist/esm-es5/{index-4392efa5.js → index-b9e742e5.js} +1 -1
  1274. package/dist/esm-es5/index.js +1 -1
  1275. package/dist/esm-es5/input-shims-6539ce13.js +4 -0
  1276. package/dist/esm-es5/input.utils-a5a2d164.js +4 -0
  1277. package/dist/esm-es5/ion-accordion_2.entry.js +1 -1
  1278. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  1279. package/dist/esm-es5/ion-alert.entry.js +1 -1
  1280. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  1281. package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
  1282. package/dist/esm-es5/ion-back-button.entry.js +1 -1
  1283. package/dist/esm-es5/ion-backdrop.entry.js +1 -1
  1284. package/dist/esm-es5/ion-breadcrumb_2.entry.js +1 -1
  1285. package/dist/esm-es5/ion-button_2.entry.js +1 -1
  1286. package/dist/esm-es5/ion-card_5.entry.js +1 -1
  1287. package/dist/esm-es5/ion-checkbox.entry.js +1 -1
  1288. package/dist/esm-es5/ion-chip.entry.js +1 -1
  1289. package/dist/esm-es5/ion-col_3.entry.js +1 -1
  1290. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  1291. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  1292. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  1293. package/dist/esm-es5/ion-img.entry.js +1 -1
  1294. package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
  1295. package/dist/esm-es5/ion-input.entry.js +1 -1
  1296. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  1297. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  1298. package/dist/esm-es5/ion-loading.entry.js +1 -1
  1299. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  1300. package/dist/esm-es5/ion-modal.entry.js +1 -1
  1301. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  1302. package/dist/esm-es5/ion-picker-column-internal.entry.js +1 -1
  1303. package/dist/esm-es5/ion-picker-internal.entry.js +1 -1
  1304. package/dist/esm-es5/ion-popover.entry.js +1 -1
  1305. package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
  1306. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  1307. package/dist/esm-es5/ion-range.entry.js +1 -1
  1308. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  1309. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  1310. package/dist/esm-es5/ion-ripple-effect.entry.js +1 -1
  1311. package/dist/esm-es5/ion-route_4.entry.js +1 -1
  1312. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  1313. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  1314. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  1315. package/dist/esm-es5/ion-spinner.entry.js +1 -1
  1316. package/dist/esm-es5/ion-split-pane.entry.js +1 -1
  1317. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  1318. package/dist/esm-es5/ion-tab_2.entry.js +1 -1
  1319. package/dist/esm-es5/ion-text.entry.js +1 -1
  1320. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  1321. package/dist/esm-es5/ion-toast.entry.js +1 -1
  1322. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  1323. package/dist/esm-es5/{ionic-global-40e42e7f.js → ionic-global-1f99b929.js} +1 -1
  1324. package/dist/esm-es5/ionic.js +1 -1
  1325. package/dist/esm-es5/{ios.transition-1651c430.js → ios.transition-3376ccb2.js} +1 -1
  1326. package/dist/esm-es5/{keyboard-b551279d.js → keyboard-52278bd7.js} +1 -1
  1327. package/dist/esm-es5/{keyboard-b063f012.js → keyboard-73175e24.js} +1 -1
  1328. package/dist/esm-es5/{keyboard-controller-0c2dce71.js → keyboard-controller-ec5c2bfa.js} +1 -1
  1329. package/dist/esm-es5/loader.js +1 -1
  1330. package/dist/esm-es5/md.transition-f992779f.js +4 -0
  1331. package/dist/esm-es5/{notch-controller-8c9c0e54.js → notch-controller-fea7f9c5.js} +1 -1
  1332. package/dist/esm-es5/{overlays-6c9feb7e.js → overlays-b33f6bca.js} +1 -1
  1333. package/dist/esm-es5/{status-tap-9ce68758.js → status-tap-16fd8f3d.js} +1 -1
  1334. package/dist/esm-es5/{swipe-back-cd4295f3.js → swipe-back-18cb49f7.js} +1 -1
  1335. package/dist/html.html-data.json +16 -3
  1336. package/dist/ionic/index.esm.js +1 -1
  1337. package/dist/ionic/ionic.esm.js +1 -1
  1338. package/dist/ionic/ionic.js +15 -15
  1339. package/dist/ionic/p-013013a3.js +4 -0
  1340. package/dist/ionic/p-0235067a.js +4 -0
  1341. package/dist/ionic/{p-a0b6d438.js → p-04377cfa.js} +1 -1
  1342. package/dist/ionic/p-043aa6cc.system.entry.js +4 -0
  1343. package/dist/ionic/{p-5d711127.js → p-0509fd34.js} +1 -1
  1344. package/dist/ionic/p-0550f802.entry.js +4 -0
  1345. package/dist/ionic/p-06abe918.system.entry.js +4 -0
  1346. package/dist/ionic/{p-702d85d8.system.js → p-0aa78a8d.system.js} +1 -1
  1347. package/dist/ionic/{p-41477ad9.system.js → p-0bd51c34.system.js} +1 -1
  1348. package/dist/ionic/p-0dfa4ab4.system.entry.js +4 -0
  1349. package/dist/ionic/p-0ebc87b7.system.entry.js +4 -0
  1350. package/dist/ionic/{p-bed722c4.system.entry.js → p-10ec9af7.system.entry.js} +1 -1
  1351. package/dist/ionic/{p-f4cc91f6.entry.js → p-11786dc7.entry.js} +1 -1
  1352. package/dist/ionic/{p-0dc0d9b5.entry.js → p-11a3973f.entry.js} +1 -1
  1353. package/dist/ionic/{p-a545b4f1.system.js → p-1501b945.system.js} +1 -1
  1354. package/dist/ionic/{p-4e6a1efb.system.entry.js → p-158efe8d.system.entry.js} +1 -1
  1355. package/dist/ionic/p-164aa69c.entry.js +4 -0
  1356. package/dist/ionic/p-17d283b9.system.entry.js +4 -0
  1357. package/dist/ionic/p-18cae04f.js +4 -0
  1358. package/dist/ionic/{p-abacb44b.system.entry.js → p-19c379da.system.entry.js} +1 -1
  1359. package/dist/ionic/p-19d9ceb8.system.js +4 -0
  1360. package/dist/ionic/p-1b27ac67.entry.js +4 -0
  1361. package/dist/ionic/{p-b91fe549.entry.js → p-1c249831.entry.js} +1 -1
  1362. package/dist/ionic/{p-b4b4bb29.system.js → p-1cca10d6.system.js} +1 -1
  1363. package/dist/ionic/p-1e4371bd.js +4 -0
  1364. package/dist/ionic/{p-c7b8c2ef.system.entry.js → p-20e0e75d.system.entry.js} +1 -1
  1365. package/dist/ionic/{p-34d2de14.system.entry.js → p-22827063.system.entry.js} +1 -1
  1366. package/dist/ionic/{p-64ed03a3.entry.js → p-26c4bf85.entry.js} +1 -1
  1367. package/dist/ionic/{p-419eb426.js → p-27281edd.js} +1 -1
  1368. package/dist/ionic/{p-965677f1.entry.js → p-2894d5f6.entry.js} +1 -1
  1369. package/dist/ionic/p-290d3fe9.js +5 -0
  1370. package/dist/ionic/p-29d03b3a.js +4 -0
  1371. package/dist/ionic/p-2a583966.entry.js +4 -0
  1372. package/dist/ionic/p-2b7827c7.js +4 -0
  1373. package/dist/ionic/{p-3d7fea9b.system.entry.js → p-2ba9a9bd.system.entry.js} +1 -1
  1374. package/dist/ionic/p-2cf21a15.system.entry.js +4 -0
  1375. package/dist/ionic/p-2df97906.system.entry.js +4 -0
  1376. package/dist/ionic/{p-fa8d4788.system.js → p-31b2326e.system.js} +1 -1
  1377. package/dist/ionic/{p-744973f3.entry.js → p-3313c481.entry.js} +1 -1
  1378. package/dist/ionic/{p-ffb876b0.system.entry.js → p-332ea4d3.system.entry.js} +1 -1
  1379. package/dist/ionic/{p-97e31c0a.system.js → p-3671f1b9.system.js} +1 -1
  1380. package/dist/ionic/p-36d187af.js +4 -0
  1381. package/dist/ionic/p-376a6063.js +4 -0
  1382. package/dist/ionic/p-38531958.system.entry.js +4 -0
  1383. package/dist/ionic/{p-55ed230e.system.js → p-38c337e7.system.js} +1 -1
  1384. package/dist/ionic/p-38f2c6bb.system.js +4 -0
  1385. package/dist/ionic/{p-3bad5c1a.js → p-3a75d7fd.js} +1 -1
  1386. package/dist/ionic/{p-8b29691f.entry.js → p-3dfc522b.entry.js} +1 -1
  1387. package/dist/ionic/{p-3de79805.entry.js → p-3e8d5e53.entry.js} +1 -1
  1388. package/dist/ionic/p-40f68333.system.js +4 -0
  1389. package/dist/ionic/{p-a6d83a03.system.entry.js → p-41208f54.system.entry.js} +1 -1
  1390. package/dist/ionic/{p-b287ab05.js → p-4180a747.js} +1 -1
  1391. package/dist/ionic/{p-b923f3d7.js → p-42f189f4.js} +1 -1
  1392. package/dist/ionic/{p-d7ea6a0d.system.entry.js → p-4489dd20.system.entry.js} +1 -1
  1393. package/dist/ionic/p-44a56556.js +4 -0
  1394. package/dist/ionic/{p-e76a4bc8.entry.js → p-44dc52e5.entry.js} +1 -1
  1395. package/dist/ionic/{p-f5a750e4.system.entry.js → p-4685218a.system.entry.js} +1 -1
  1396. package/dist/ionic/p-469dd571.system.entry.js +4 -0
  1397. package/dist/ionic/{p-5bd4e009.entry.js → p-47bb15a1.entry.js} +1 -1
  1398. package/dist/ionic/{p-664d2b07.system.entry.js → p-4981ea0a.system.entry.js} +1 -1
  1399. package/dist/ionic/{p-cf425ec5.system.entry.js → p-507ddbfe.system.entry.js} +1 -1
  1400. package/dist/ionic/{p-14aca3fb.entry.js → p-529b24fb.entry.js} +1 -1
  1401. package/dist/ionic/p-52cfafe9.system.js +5 -0
  1402. package/dist/ionic/p-53ec4f1c.system.js +4 -0
  1403. package/dist/ionic/{p-c0c81820.system.js → p-5ad1fe3b.system.js} +1 -1
  1404. package/dist/ionic/{p-7cee75c0.entry.js → p-60959b71.entry.js} +1 -1
  1405. package/dist/ionic/p-61e4d3ec.entry.js +4 -0
  1406. package/dist/ionic/{p-1cb5f2f8.system.entry.js → p-648ad047.system.entry.js} +1 -1
  1407. package/dist/ionic/p-66d633fb.js +4 -0
  1408. package/dist/ionic/{p-63f08fe3.entry.js → p-6855f26a.entry.js} +1 -1
  1409. package/dist/ionic/{p-1a8ae7a7.system.entry.js → p-69641343.system.entry.js} +1 -1
  1410. package/dist/ionic/{p-800ef057.js → p-6ab03751.js} +1 -1
  1411. package/dist/ionic/{p-18e01b30.system.entry.js → p-6c277fa2.system.entry.js} +1 -1
  1412. package/dist/ionic/{p-0e23256e.system.entry.js → p-6e0539ea.system.entry.js} +1 -1
  1413. package/dist/ionic/p-6fba0ce1.system.entry.js +4 -0
  1414. package/dist/ionic/{p-4c80afe1.system.entry.js → p-745e3339.system.entry.js} +1 -1
  1415. package/dist/ionic/p-767f1a92.entry.js +4 -0
  1416. package/dist/ionic/{p-8a308596.system.js → p-7798c78a.system.js} +2 -2
  1417. package/dist/ionic/p-7dc892f8.entry.js +4 -0
  1418. package/dist/ionic/{p-6c3d5383.js → p-7fae5c36.js} +1 -1
  1419. package/dist/ionic/{p-48d9faa7.entry.js → p-803efb5d.entry.js} +1 -1
  1420. package/dist/ionic/{p-a8e68fd9.entry.js → p-806a9810.entry.js} +1 -1
  1421. package/dist/ionic/p-84b567a6.entry.js +4 -0
  1422. package/dist/ionic/p-85f48531.entry.js +4 -0
  1423. package/dist/ionic/p-87bb3735.system.js +4 -0
  1424. package/dist/ionic/{p-613d4042.system.js → p-888db766.system.js} +1 -1
  1425. package/dist/ionic/p-88d5fbd3.js +4 -0
  1426. package/dist/ionic/{p-ccdcb022.system.js → p-8985cdb6.system.js} +1 -1
  1427. package/dist/ionic/p-8aa1d0b7.system.js +4 -0
  1428. package/dist/ionic/{p-a9c3699b.system.entry.js → p-8f301ac5.system.entry.js} +1 -1
  1429. package/dist/ionic/{p-174f3446.entry.js → p-928ee57a.entry.js} +1 -1
  1430. package/dist/ionic/p-932f2259.system.entry.js +4 -0
  1431. package/dist/ionic/p-93390f78.entry.js +4 -0
  1432. package/dist/ionic/p-950c05ad.entry.js +4 -0
  1433. package/dist/ionic/{p-3fb57e1b.system.entry.js → p-96d4814f.system.entry.js} +1 -1
  1434. package/dist/ionic/p-97174c1e.js +4 -0
  1435. package/dist/ionic/p-979d4f5c.system.js +4 -0
  1436. package/dist/ionic/p-98f35d98.js +4 -0
  1437. package/dist/ionic/{p-14b4348c.system.js → p-9a68d8ef.system.js} +1 -1
  1438. package/dist/ionic/p-9ba72fdb.system.entry.js +4 -0
  1439. package/dist/ionic/{p-41122cd6.system.js → p-9f94c72e.system.js} +1 -1
  1440. package/dist/ionic/{p-92800752.entry.js → p-9fb45814.entry.js} +1 -1
  1441. package/dist/ionic/p-9fda6824.system.entry.js +4 -0
  1442. package/dist/ionic/{p-1dc91702.entry.js → p-a06501e3.entry.js} +1 -1
  1443. package/dist/ionic/{p-c4042875.system.js → p-a074be82.system.js} +1 -1
  1444. package/dist/ionic/{p-c7d30db9.entry.js → p-a3013394.entry.js} +1 -1
  1445. package/dist/ionic/p-a42ef163.system.entry.js +4 -0
  1446. package/dist/ionic/p-a49931aa.system.js +4 -0
  1447. package/dist/ionic/{p-db5043df.system.entry.js → p-a821750c.system.entry.js} +1 -1
  1448. package/dist/ionic/{p-1d269117.system.entry.js → p-abd5d0d5.system.entry.js} +1 -1
  1449. package/dist/ionic/{p-9209d90c.entry.js → p-ade3cf46.entry.js} +1 -1
  1450. package/dist/ionic/{p-1e86a71b.entry.js → p-ae4b7df8.entry.js} +1 -1
  1451. package/dist/ionic/p-aee39e06.entry.js +4 -0
  1452. package/dist/ionic/{p-09d142b3.system.js → p-afa9f205.system.js} +1 -1
  1453. package/dist/ionic/{p-67e18f02.system.entry.js → p-b7058a0e.system.entry.js} +1 -1
  1454. package/dist/ionic/p-b78e6a44.entry.js +4 -0
  1455. package/dist/ionic/{p-beb64be7.system.entry.js → p-b7a2ffc9.system.entry.js} +1 -1
  1456. package/dist/ionic/{p-0330f0a3.system.entry.js → p-b8a9e195.system.entry.js} +1 -1
  1457. package/dist/ionic/{p-8ad82eb3.entry.js → p-b964aba3.entry.js} +1 -1
  1458. package/dist/ionic/{p-ff5144f3.system.entry.js → p-beeed22c.system.entry.js} +1 -1
  1459. package/dist/ionic/{p-5deff017.entry.js → p-c08fe2c0.entry.js} +1 -1
  1460. package/dist/ionic/p-c1701827.entry.js +4 -0
  1461. package/dist/ionic/{p-b2a74a72.entry.js → p-c5acfeb1.entry.js} +1 -1
  1462. package/dist/ionic/p-c61cc894.js +4 -0
  1463. package/dist/ionic/{p-ab4cff27.system.js → p-cabad15b.system.js} +1 -1
  1464. package/dist/ionic/{p-07d9e9cd.system.entry.js → p-cb8dff22.system.entry.js} +1 -1
  1465. package/dist/ionic/p-cd1b920b.entry.js +4 -0
  1466. package/dist/ionic/p-cd574dfa.js +4 -0
  1467. package/dist/ionic/{p-0492946a.entry.js → p-cf235986.entry.js} +1 -1
  1468. package/dist/ionic/p-cf53213c.entry.js +4 -0
  1469. package/dist/ionic/p-d51674c5.system.js +4 -0
  1470. package/dist/ionic/{p-45da1e68.system.entry.js → p-d93eed83.system.entry.js} +1 -1
  1471. package/dist/ionic/{p-c919498d.entry.js → p-da5e2652.entry.js} +1 -1
  1472. package/dist/ionic/p-dc6d8647.entry.js +4 -0
  1473. package/dist/ionic/p-dc71e4ef.system.entry.js +4 -0
  1474. package/dist/ionic/{p-bba2ce59.system.js → p-ddbb2d5b.system.js} +1 -1
  1475. package/dist/ionic/{p-6e23777e.system.entry.js → p-ddd48faf.system.entry.js} +1 -1
  1476. package/dist/ionic/p-de6f8b28.system.js +4 -0
  1477. package/dist/ionic/p-de756e5c.js +4 -0
  1478. package/dist/ionic/{p-7ab6fc5a.system.entry.js → p-e2903cdc.system.entry.js} +1 -1
  1479. package/dist/ionic/{p-0a794e83.entry.js → p-e33d1ebc.entry.js} +1 -1
  1480. package/dist/ionic/p-ebe8bd8a.entry.js +4 -0
  1481. package/dist/ionic/p-eef72e06.js +4 -0
  1482. package/dist/ionic/{p-5da0eb3e.system.entry.js → p-f0504446.system.entry.js} +1 -1
  1483. package/dist/ionic/p-f434bcf3.system.entry.js +4 -0
  1484. package/dist/ionic/p-f5d2dc9b.js +4 -0
  1485. package/dist/ionic/{p-a936d224.system.js → p-f6e9c227.system.js} +1 -1
  1486. package/dist/ionic/p-f894e0ad.entry.js +4 -0
  1487. package/dist/types/components/accordion/accordion.d.ts +62 -62
  1488. package/dist/types/components/accordion-group/accordion-group-interface.d.ts +3 -3
  1489. package/dist/types/components/accordion-group/accordion-group.d.ts +76 -76
  1490. package/dist/types/components/action-sheet/action-sheet-interface.d.ts +25 -25
  1491. package/dist/types/components/action-sheet/action-sheet.d.ts +149 -149
  1492. package/dist/types/components/action-sheet/test/basic/fixture.d.ts +7 -7
  1493. package/dist/types/components/alert/alert-interface.d.ts +45 -45
  1494. package/dist/types/components/alert/alert.d.ts +181 -181
  1495. package/dist/types/components/app/app.d.ts +15 -15
  1496. package/dist/types/components/avatar/avatar.d.ts +1 -1
  1497. package/dist/types/components/back-button/back-button.d.ts +41 -41
  1498. package/dist/types/components/backdrop/backdrop.d.ts +22 -22
  1499. package/dist/types/components/badge/badge.d.ts +7 -7
  1500. package/dist/types/components/breadcrumb/breadcrumb-interface.d.ts +4 -4
  1501. package/dist/types/components/breadcrumb/breadcrumb.d.ts +87 -87
  1502. package/dist/types/components/breadcrumbs/breadcrumbs.d.ts +39 -39
  1503. package/dist/types/components/button/button.d.ts +121 -121
  1504. package/dist/types/components/buttons/buttons.d.ts +14 -14
  1505. package/dist/types/components/card/card.d.ts +57 -57
  1506. package/dist/types/components/card-content/card-content.d.ts +1 -1
  1507. package/dist/types/components/card-header/card-header.d.ts +13 -13
  1508. package/dist/types/components/card-subtitle/card-subtitle.d.ts +7 -7
  1509. package/dist/types/components/card-title/card-title.d.ts +7 -7
  1510. package/dist/types/components/checkbox/checkbox-interface.d.ts +4 -4
  1511. package/dist/types/components/checkbox/checkbox.d.ts +112 -111
  1512. package/dist/types/components/chip/chip.d.ts +15 -15
  1513. package/dist/types/components/col/col.d.ts +128 -128
  1514. package/dist/types/components/content/content-interface.d.ts +6 -6
  1515. package/dist/types/components/content/content.d.ts +129 -129
  1516. package/dist/types/components/datetime/datetime-interface.d.ts +15 -15
  1517. package/dist/types/components/datetime/datetime.d.ts +407 -407
  1518. package/dist/types/components/datetime/utils/data.d.ts +11 -11
  1519. package/dist/types/components/datetime/utils/manipulation.d.ts +59 -32
  1520. package/dist/types/components/datetime/utils/state.d.ts +8 -8
  1521. package/dist/types/components/datetime-button/datetime-button.d.ts +59 -59
  1522. package/dist/types/components/fab/fab.d.ts +33 -33
  1523. package/dist/types/components/fab-button/fab-button.d.ts +88 -88
  1524. package/dist/types/components/fab-list/fab-list.d.ts +11 -11
  1525. package/dist/types/components/footer/footer.d.ts +27 -27
  1526. package/dist/types/components/grid/grid.d.ts +5 -5
  1527. package/dist/types/components/header/header.d.ts +31 -31
  1528. package/dist/types/components/header/header.utils.d.ts +7 -7
  1529. package/dist/types/components/img/img.d.ts +30 -30
  1530. package/dist/types/components/infinite-scroll/infinite-scroll-interface.d.ts +1 -1
  1531. package/dist/types/components/infinite-scroll/infinite-scroll.d.ts +65 -58
  1532. package/dist/types/components/infinite-scroll-content/infinite-scroll-content.d.ts +23 -23
  1533. package/dist/types/components/input/input-interface.d.ts +6 -6
  1534. package/dist/types/components/input/input.d.ts +321 -315
  1535. package/dist/types/components/item/item.d.ts +111 -111
  1536. package/dist/types/components/item-divider/item-divider.d.ts +16 -16
  1537. package/dist/types/components/item-group/item-group.d.ts +1 -1
  1538. package/dist/types/components/item-option/item-option.d.ts +44 -44
  1539. package/dist/types/components/item-options/item-options.d.ts +13 -13
  1540. package/dist/types/components/item-sliding/item-sliding-interface.d.ts +1 -1
  1541. package/dist/types/components/item-sliding/item-sliding.d.ts +75 -75
  1542. package/dist/types/components/label/label.d.ts +30 -30
  1543. package/dist/types/components/list/list.d.ts +17 -17
  1544. package/dist/types/components/list-header/list-header.d.ts +11 -11
  1545. package/dist/types/components/loading/loading-interface.d.ts +16 -16
  1546. package/dist/types/components/loading/loading.d.ts +152 -152
  1547. package/dist/types/components/menu/menu-interface.d.ts +39 -39
  1548. package/dist/types/components/menu/menu.d.ts +140 -140
  1549. package/dist/types/components/menu-button/menu-button.d.ts +30 -30
  1550. package/dist/types/components/menu-toggle/menu-toggle.d.ts +21 -21
  1551. package/dist/types/components/modal/animations/sheet.d.ts +4 -4
  1552. package/dist/types/components/modal/gestures/sheet.d.ts +30 -30
  1553. package/dist/types/components/modal/gestures/swipe-to-close.d.ts +1 -1
  1554. package/dist/types/components/modal/modal-interface.d.ts +27 -27
  1555. package/dist/types/components/modal/modal.d.ts +265 -265
  1556. package/dist/types/components/modal/test/fixtures.d.ts +7 -7
  1557. package/dist/types/components/nav/nav-interface.d.ts +40 -40
  1558. package/dist/types/components/nav/nav.d.ts +247 -247
  1559. package/dist/types/components/nav/view-controller.d.ts +13 -13
  1560. package/dist/types/components/nav-link/nav-link.d.ts +19 -19
  1561. package/dist/types/components/note/note.d.ts +7 -7
  1562. package/dist/types/components/picker/picker-interface.d.ts +43 -43
  1563. package/dist/types/components/picker/picker.d.ts +149 -149
  1564. package/dist/types/components/picker-column/picker-column.d.ts +39 -39
  1565. package/dist/types/components/picker-column-internal/picker-column-internal-interfaces.d.ts +3 -3
  1566. package/dist/types/components/picker-column-internal/picker-column-internal.d.ts +93 -89
  1567. package/dist/types/components/picker-internal/picker-internal-interfaces.d.ts +4 -4
  1568. package/dist/types/components/picker-internal/picker-internal.d.ts +94 -94
  1569. package/dist/types/components/popover/popover-interface.d.ts +26 -26
  1570. package/dist/types/components/popover/popover.d.ts +279 -279
  1571. package/dist/types/components/popover/test/fixture.d.ts +5 -5
  1572. package/dist/types/components/popover/utils.d.ts +25 -25
  1573. package/dist/types/components/progress-bar/progress-bar.d.ts +27 -27
  1574. package/dist/types/components/radio/radio.d.ts +100 -99
  1575. package/dist/types/components/radio-group/radio-group-interface.d.ts +5 -4
  1576. package/dist/types/components/radio-group/radio-group.d.ts +51 -44
  1577. package/dist/types/components/radio-group/test/fixtures.d.ts +5 -5
  1578. package/dist/types/components/range/range-interface.d.ts +7 -7
  1579. package/dist/types/components/range/range.d.ts +193 -192
  1580. package/dist/types/components/refresher/refresher-interface.d.ts +3 -3
  1581. package/dist/types/components/refresher/refresher.d.ts +132 -132
  1582. package/dist/types/components/refresher-content/refresher-content.d.ts +44 -44
  1583. package/dist/types/components/reorder/reorder.d.ts +3 -3
  1584. package/dist/types/components/reorder-group/reorder-group-interface.d.ts +5 -5
  1585. package/dist/types/components/reorder-group/reorder-group.d.ts +53 -53
  1586. package/dist/types/components/ripple-effect/ripple-effect.d.ts +20 -20
  1587. package/dist/types/components/route/route-interface.d.ts +1 -1
  1588. package/dist/types/components/route/route.d.ts +43 -43
  1589. package/dist/types/components/route-redirect/route-redirect.d.ts +33 -33
  1590. package/dist/types/components/router/router.d.ts +74 -73
  1591. package/dist/types/components/router/utils/dom.d.ts +2 -2
  1592. package/dist/types/components/router/utils/interface.d.ts +31 -31
  1593. package/dist/types/components/router/utils/matching.d.ts +6 -6
  1594. package/dist/types/components/router-link/router-link.d.ts +34 -34
  1595. package/dist/types/components/router-outlet/router-outlet.d.ts +41 -41
  1596. package/dist/types/components/row/row.d.ts +1 -1
  1597. package/dist/types/components/searchbar/searchbar-interface.d.ts +6 -6
  1598. package/dist/types/components/searchbar/searchbar.d.ts +235 -233
  1599. package/dist/types/components/segment/segment-interface.d.ts +3 -3
  1600. package/dist/types/components/segment/segment.d.ts +82 -82
  1601. package/dist/types/components/segment-button/segment-button.d.ts +36 -36
  1602. package/dist/types/components/select/select-interface.d.ts +3 -3
  1603. package/dist/types/components/select/select.d.ts +238 -233
  1604. package/dist/types/components/select-option/select-option.d.ts +11 -11
  1605. package/dist/types/components/select-popover/select-popover-interface.d.ts +8 -8
  1606. package/dist/types/components/select-popover/select-popover.d.ts +39 -39
  1607. package/dist/types/components/select-popover/test/fixtures.d.ts +12 -12
  1608. package/dist/types/components/skeleton-text/skeleton-text.d.ts +15 -7
  1609. package/dist/types/components/spinner/spinner-configs.d.ts +96 -96
  1610. package/dist/types/components/spinner/spinner-interface.d.ts +14 -14
  1611. package/dist/types/components/spinner/spinner.d.ts +21 -21
  1612. package/dist/types/components/split-pane/split-pane.d.ts +33 -33
  1613. package/dist/types/components/tab/tab.d.ts +21 -21
  1614. package/dist/types/components/tab-bar/tab-bar-interface.d.ts +4 -4
  1615. package/dist/types/components/tab-bar/tab-bar.d.ts +34 -34
  1616. package/dist/types/components/tab-button/tab-button.d.ts +56 -56
  1617. package/dist/types/components/tabs/tabs-interface.d.ts +4 -4
  1618. package/dist/types/components/tabs/tabs.d.ts +52 -52
  1619. package/dist/types/components/text/text.d.ts +7 -7
  1620. package/dist/types/components/textarea/textarea-interface.d.ts +6 -6
  1621. package/dist/types/components/textarea/textarea.d.ts +275 -269
  1622. package/dist/types/components/thumbnail/thumbnail.d.ts +1 -1
  1623. package/dist/types/components/title/title.d.ts +21 -21
  1624. package/dist/types/components/toast/animations/utils.d.ts +15 -4
  1625. package/dist/types/components/toast/gestures/swipe-to-dismiss.d.ts +9 -0
  1626. package/dist/types/components/toast/toast-interface.d.ts +37 -35
  1627. package/dist/types/components/toast/toast.d.ts +241 -214
  1628. package/dist/types/components/toggle/toggle-interface.d.ts +4 -4
  1629. package/dist/types/components/toggle/toggle.d.ts +117 -116
  1630. package/dist/types/components/toolbar/toolbar.d.ts +11 -11
  1631. package/dist/types/components.d.ts +52 -13
  1632. package/dist/types/global/config.d.ts +6 -6
  1633. package/dist/types/interface.d.ts +1 -5
  1634. package/dist/types/jest.d.ts +5 -0
  1635. package/dist/types/stencil-public-runtime.d.ts +8 -0
  1636. package/dist/types/utils/animation/animation-interface.d.ts +205 -205
  1637. package/dist/types/utils/browser/index.d.ts +17 -8
  1638. package/dist/types/utils/config.d.ts +175 -175
  1639. package/dist/types/utils/element-interface.d.ts +6 -6
  1640. package/dist/types/utils/focus-visible.d.ts +2 -2
  1641. package/dist/types/utils/forms/compare-with-utils.d.ts +18 -0
  1642. package/dist/types/utils/forms/form-controller.d.ts +3 -3
  1643. package/dist/types/utils/forms/index.d.ts +1 -0
  1644. package/dist/types/utils/forms/notch-controller.d.ts +2 -2
  1645. package/dist/types/utils/framework-delegate.d.ts +3 -3
  1646. package/dist/types/utils/gesture/gesture-controller.d.ts +49 -49
  1647. package/dist/types/utils/gesture/index.d.ts +31 -31
  1648. package/dist/types/utils/gesture/listener.d.ts +2 -2
  1649. package/dist/types/utils/gesture/pointer-events.d.ts +12 -12
  1650. package/dist/types/utils/gesture/recognizers.d.ts +4 -4
  1651. package/dist/types/utils/hardware-back-button.d.ts +4 -0
  1652. package/dist/types/utils/helpers.d.ts +8 -8
  1653. package/dist/types/utils/input-shims/hacks/scroll-data.d.ts +4 -4
  1654. package/dist/types/utils/keyboard/keyboard-controller.d.ts +3 -3
  1655. package/dist/types/utils/lock-controller.d.ts +1 -1
  1656. package/dist/types/utils/native/haptic.d.ts +38 -38
  1657. package/dist/types/utils/native/keyboard.d.ts +29 -29
  1658. package/dist/types/utils/native/native-interface.d.ts +15 -15
  1659. package/dist/types/utils/native/status-bar.d.ts +8 -8
  1660. package/dist/types/utils/overlays-interface.d.ts +27 -27
  1661. package/dist/types/utils/overlays.d.ts +29 -28
  1662. package/dist/types/utils/platform.d.ts +16 -16
  1663. package/dist/types/utils/sanitization/index.d.ts +2 -2
  1664. package/dist/types/utils/slot-mutation-controller.d.ts +3 -3
  1665. package/dist/types/utils/test/platform.utils.d.ts +66 -66
  1666. package/dist/types/utils/test/playwright/generator.d.ts +16 -7
  1667. package/dist/types/utils/test/playwright/matchers/index.d.ts +3 -3
  1668. package/dist/types/utils/test/playwright/matchers/toHaveReceivedEvent.d.ts +2 -2
  1669. package/dist/types/utils/test/playwright/matchers/toHaveReceivedEventDetail.d.ts +2 -2
  1670. package/dist/types/utils/test/playwright/matchers/toHaveReceivedEventTimes.d.ts +2 -2
  1671. package/dist/types/utils/test/playwright/page/event-spy.d.ts +15 -15
  1672. package/dist/types/utils/test/playwright/page/utils/goto.d.ts +3 -3
  1673. package/dist/types/utils/test/playwright/page/utils/locator.d.ts +15 -15
  1674. package/dist/types/utils/test/playwright/playwright-declarations.d.ts +92 -92
  1675. package/dist/types/utils/test/playwright/playwright-page.d.ts +3 -3
  1676. package/dist/types/utils/test/playwright/viewports/index.d.ts +12 -12
  1677. package/dist/types/utils/test/press-keys.d.ts +14 -14
  1678. package/dist/types/utils/transition/index.d.ts +6 -6
  1679. package/dist/types/utils/watch-options.d.ts +1 -1
  1680. package/hydrate/index.d.ts +1 -1
  1681. package/hydrate/index.js +30685 -30001
  1682. package/package.json +4 -3
  1683. package/dist/cjs/animation-1083855c.js +0 -1061
  1684. package/dist/cjs/button-active-af897e0e.js +0 -69
  1685. package/dist/cjs/config-d5882735.js +0 -199
  1686. package/dist/cjs/cubic-bezier-6b9222ad.js +0 -92
  1687. package/dist/cjs/data-c8d21093.js +0 -1622
  1688. package/dist/cjs/focus-visible-a7545600.js +0 -77
  1689. package/dist/cjs/form-controller-9343050c.js +0 -66
  1690. package/dist/cjs/framework-delegate-c0873a6f.js +0 -144
  1691. package/dist/cjs/gesture-controller-b46721be.js +0 -197
  1692. package/dist/cjs/haptic-678abc9f.js +0 -212
  1693. package/dist/cjs/hardware-back-button-b67c8e75.js +0 -76
  1694. package/dist/cjs/helpers-ea4ccbcb.js +0 -441
  1695. package/dist/cjs/index-0ee995e4.js +0 -459
  1696. package/dist/cjs/index-306a7476.js +0 -32
  1697. package/dist/cjs/index-573877f3.js +0 -243
  1698. package/dist/cjs/index-9f379eaa.js +0 -198
  1699. package/dist/cjs/index-d7561763.js +0 -310
  1700. package/dist/cjs/input-shims-b0a75a01.js +0 -596
  1701. package/dist/cjs/input.utils-0fe3097c.js +0 -137
  1702. package/dist/cjs/ionic-global-ea2901a3.js +0 -230
  1703. package/dist/cjs/ios.transition-ac909bc8.js +0 -654
  1704. package/dist/cjs/keyboard-controller-50beb83a.js +0 -167
  1705. package/dist/cjs/keyboard-fd7db491.js +0 -81
  1706. package/dist/cjs/lock-controller-4ae2eb59.js +0 -40
  1707. package/dist/cjs/md.transition-907af519.js +0 -59
  1708. package/dist/cjs/notch-controller-f4f6af5d.js +0 -155
  1709. package/dist/cjs/overlays-2ffc5f27.js +0 -714
  1710. package/dist/cjs/spinner-configs-f7b5105b.js +0 -147
  1711. package/dist/cjs/status-tap-3fb2391a.js +0 -42
  1712. package/dist/cjs/swipe-back-7e843e77.js +0 -81
  1713. package/dist/cjs/theme-fbc56b3b.js +0 -48
  1714. package/dist/cjs/watch-options-53bbb124.js +0 -49
  1715. package/dist/collection/components/item/test/text/item.e2e.js +0 -14
  1716. package/dist/esm/animation-8aa13916.js +0 -1059
  1717. package/dist/esm/button-active-ce5cba4c.js +0 -67
  1718. package/dist/esm/capacitor-b4979570.js +0 -13
  1719. package/dist/esm/config-96c9ace3.js +0 -193
  1720. package/dist/esm/cubic-bezier-66542bc5.js +0 -90
  1721. package/dist/esm/data-44d9e816.js +0 -1575
  1722. package/dist/esm/focus-visible-85493433.js +0 -75
  1723. package/dist/esm/form-controller-64edeaad.js +0 -64
  1724. package/dist/esm/framework-delegate-aa433dea.js +0 -140
  1725. package/dist/esm/gesture-controller-0fa396c4.js +0 -195
  1726. package/dist/esm/haptic-1243b917.js +0 -206
  1727. package/dist/esm/hardware-back-button-39299f84.js +0 -71
  1728. package/dist/esm/helpers-3379ba19.js +0 -418
  1729. package/dist/esm/index-0aa6e61f.js +0 -308
  1730. package/dist/esm/index-6a0ccabb.js +0 -231
  1731. package/dist/esm/index-7a14ecec.js +0 -29
  1732. package/dist/esm/index-f0cc4e14.js +0 -196
  1733. package/dist/esm/index-ff313b19.js +0 -457
  1734. package/dist/esm/input-shims-d0c93e5d.js +0 -594
  1735. package/dist/esm/input.utils-ec063df4.js +0 -134
  1736. package/dist/esm/ionic-global-40e42e7f.js +0 -224
  1737. package/dist/esm/ios.transition-1651c430.js +0 -651
  1738. package/dist/esm/keyboard-b063f012.js +0 -79
  1739. package/dist/esm/keyboard-b551279d.js +0 -146
  1740. package/dist/esm/keyboard-controller-0c2dce71.js +0 -165
  1741. package/dist/esm/lock-controller-e8c6c051.js +0 -38
  1742. package/dist/esm/md.transition-66f18369.js +0 -57
  1743. package/dist/esm/notch-controller-8c9c0e54.js +0 -153
  1744. package/dist/esm/overlays-6c9feb7e.js +0 -692
  1745. package/dist/esm/spinner-configs-d09fbbbb.js +0 -145
  1746. package/dist/esm/status-tap-9ce68758.js +0 -40
  1747. package/dist/esm/swipe-back-cd4295f3.js +0 -79
  1748. package/dist/esm/theme-17531cdf.js +0 -43
  1749. package/dist/esm/watch-options-02d8498b.js +0 -47
  1750. package/dist/esm-es5/app-globals-2398e405.js +0 -4
  1751. package/dist/esm-es5/data-44d9e816.js +0 -4
  1752. package/dist/esm-es5/index-0aa6e61f.js +0 -4
  1753. package/dist/esm-es5/index-7c9b1bca.js +0 -5
  1754. package/dist/esm-es5/input-shims-d0c93e5d.js +0 -4
  1755. package/dist/esm-es5/input.utils-ec063df4.js +0 -4
  1756. package/dist/esm-es5/md.transition-66f18369.js +0 -4
  1757. package/dist/ionic/p-0d8e9393.entry.js +0 -4
  1758. package/dist/ionic/p-114a36ed.js +0 -4
  1759. package/dist/ionic/p-17240d90.js +0 -4
  1760. package/dist/ionic/p-1e5165db.system.entry.js +0 -4
  1761. package/dist/ionic/p-1f4f0d59.system.entry.js +0 -4
  1762. package/dist/ionic/p-20cf4994.js +0 -4
  1763. package/dist/ionic/p-236063ec.system.entry.js +0 -4
  1764. package/dist/ionic/p-276afddd.js +0 -4
  1765. package/dist/ionic/p-2e8e0045.js +0 -4
  1766. package/dist/ionic/p-32083c2d.js +0 -4
  1767. package/dist/ionic/p-352c0232.system.entry.js +0 -4
  1768. package/dist/ionic/p-3602001b.system.js +0 -4
  1769. package/dist/ionic/p-3632220b.system.js +0 -4
  1770. package/dist/ionic/p-377c636c.system.entry.js +0 -4
  1771. package/dist/ionic/p-39044fe6.system.entry.js +0 -4
  1772. package/dist/ionic/p-3ce8c3e3.entry.js +0 -4
  1773. package/dist/ionic/p-40903d34.system.js +0 -4
  1774. package/dist/ionic/p-4518e4c0.system.entry.js +0 -4
  1775. package/dist/ionic/p-4794e0ac.system.entry.js +0 -4
  1776. package/dist/ionic/p-4a142496.system.entry.js +0 -4
  1777. package/dist/ionic/p-4cd588b3.system.entry.js +0 -4
  1778. package/dist/ionic/p-4dbac22d.entry.js +0 -4
  1779. package/dist/ionic/p-4ecb5692.entry.js +0 -4
  1780. package/dist/ionic/p-5370e786.js +0 -4
  1781. package/dist/ionic/p-5cfb3feb.system.entry.js +0 -4
  1782. package/dist/ionic/p-63d519fb.entry.js +0 -4
  1783. package/dist/ionic/p-64296b15.entry.js +0 -4
  1784. package/dist/ionic/p-67aab78f.js +0 -4
  1785. package/dist/ionic/p-67ed452a.system.entry.js +0 -4
  1786. package/dist/ionic/p-67eecef4.system.js +0 -4
  1787. package/dist/ionic/p-7176cea3.entry.js +0 -4
  1788. package/dist/ionic/p-73411c1b.entry.js +0 -4
  1789. package/dist/ionic/p-73420380.js +0 -4
  1790. package/dist/ionic/p-77e7a9c8.entry.js +0 -4
  1791. package/dist/ionic/p-81c818e7.js +0 -4
  1792. package/dist/ionic/p-8b1be026.js +0 -4
  1793. package/dist/ionic/p-8cf94fc1.js +0 -4
  1794. package/dist/ionic/p-8e1bded3.entry.js +0 -4
  1795. package/dist/ionic/p-97c65aa5.js +0 -4
  1796. package/dist/ionic/p-9ab6f3e6.system.js +0 -4
  1797. package/dist/ionic/p-9b89cbde.js +0 -4
  1798. package/dist/ionic/p-a5c1e6ce.entry.js +0 -4
  1799. package/dist/ionic/p-af016cd3.entry.js +0 -4
  1800. package/dist/ionic/p-b0cee324.entry.js +0 -4
  1801. package/dist/ionic/p-b1142133.entry.js +0 -4
  1802. package/dist/ionic/p-b17b7c3c.system.entry.js +0 -4
  1803. package/dist/ionic/p-b203659a.system.entry.js +0 -4
  1804. package/dist/ionic/p-b6f8ee31.entry.js +0 -4
  1805. package/dist/ionic/p-b8c3f071.system.js +0 -4
  1806. package/dist/ionic/p-b906c5ca.entry.js +0 -4
  1807. package/dist/ionic/p-b912e055.system.js +0 -4
  1808. package/dist/ionic/p-c224b9a9.js +0 -5
  1809. package/dist/ionic/p-ca5219df.entry.js +0 -4
  1810. package/dist/ionic/p-cc196b34.js +0 -4
  1811. package/dist/ionic/p-d1de1188.js +0 -4
  1812. package/dist/ionic/p-d2597b3e.system.js +0 -5
  1813. package/dist/ionic/p-d3952bd5.system.entry.js +0 -4
  1814. package/dist/ionic/p-dfa756ed.system.js +0 -4
  1815. package/dist/ionic/p-e6b240a0.js +0 -4
  1816. package/dist/ionic/p-e8400078.system.entry.js +0 -4
  1817. package/dist/ionic/p-ed636a74.entry.js +0 -4
  1818. package/dist/ionic/p-f8e620f1.entry.js +0 -4
  1819. package/dist/ionic/p-ff5a10f9.system.js +0 -4
  1820. /package/dist/esm-es5/{config-96c9ace3.js → config-49c88215.js} +0 -0
  1821. /package/dist/esm-es5/{cubic-bezier-66542bc5.js → cubic-bezier-fe2083dc.js} +0 -0
  1822. /package/dist/esm-es5/{dir-912e3e13.js → dir-babeabeb.js} +0 -0
  1823. /package/dist/esm-es5/{focus-visible-85493433.js → focus-visible-dd40d69f.js} +0 -0
  1824. /package/dist/esm-es5/{gesture-controller-0fa396c4.js → gesture-controller-1bf57181.js} +0 -0
  1825. /package/dist/esm-es5/{hardware-back-button-39299f84.js → hardware-back-button-b2bc76db.js} +0 -0
  1826. /package/dist/esm-es5/{helpers-3379ba19.js → helpers-ae653409.js} +0 -0
  1827. /package/dist/esm-es5/{index-595d62c9.js → index-9b0d46f4.js} +0 -0
  1828. /package/dist/esm-es5/{index-7a14ecec.js → index-a5d50daf.js} +0 -0
  1829. /package/dist/esm-es5/{lock-controller-e8c6c051.js → lock-controller-316928be.js} +0 -0
  1830. /package/dist/esm-es5/{spinner-configs-d09fbbbb.js → spinner-configs-964f7cf3.js} +0 -0
  1831. /package/dist/esm-es5/{theme-17531cdf.js → theme-01f3f29c.js} +0 -0
  1832. /package/dist/esm-es5/{watch-options-02d8498b.js → watch-options-c2911ace.js} +0 -0
  1833. /package/dist/ionic/{p-5aac9314.system.js → p-012c3ceb.system.js} +0 -0
  1834. /package/dist/ionic/{p-1b8e1d03.js → p-06fee233.js} +0 -0
  1835. /package/dist/ionic/{p-819ff3b9.system.js → p-08e01816.system.js} +0 -0
  1836. /package/dist/ionic/{p-63eb0acd.js → p-23a9d086.js} +0 -0
  1837. /package/dist/ionic/{p-7c2bac85.js → p-2408c236.js} +0 -0
  1838. /package/dist/ionic/{p-815c2fba.system.js → p-32ad210f.system.js} +0 -0
  1839. /package/dist/ionic/{p-7b021525.js → p-41d5544e.js} +0 -0
  1840. /package/dist/ionic/{p-f10de93b.js → p-459d13d5.js} +0 -0
  1841. /package/dist/ionic/{p-44bc8b45.system.js → p-4609d030.system.js} +0 -0
  1842. /package/dist/ionic/{p-1d072d3d.js → p-47794def.js} +0 -0
  1843. /package/dist/ionic/{p-185e427e.js → p-4b3623da.js} +0 -0
  1844. /package/dist/ionic/{p-772f6c84.system.js → p-4f255d5a.system.js} +0 -0
  1845. /package/dist/ionic/{p-8c15eda7.system.js → p-790220fd.system.js} +0 -0
  1846. /package/dist/ionic/{p-0e94957a.system.js → p-792919fd.system.js} +0 -0
  1847. /package/dist/ionic/{p-b347cfd1.js → p-7b30edcc.js} +0 -0
  1848. /package/dist/ionic/{p-e0b06b65.js → p-bb3615f7.js} +0 -0
  1849. /package/dist/ionic/{p-87411e39.system.js → p-c468af8a.system.js} +0 -0
  1850. /package/dist/ionic/{p-9e852ff1.system.js → p-c7c8429a.system.js} +0 -0
  1851. /package/dist/ionic/{p-53b2a46f.js → p-ccd02320.js} +0 -0
  1852. /package/dist/ionic/{p-76fce40e.js → p-d47265c8.js} +0 -0
  1853. /package/dist/ionic/{p-56dc022e.system.js → p-d8d84afa.system.js} +0 -0
  1854. /package/dist/ionic/{p-c4f2dce7.system.js → p-e673a0a2.system.js} +0 -0
  1855. /package/dist/ionic/{p-c18d6eac.js → p-f0c2a614.js} +0 -0
  1856. /package/dist/ionic/{p-2b89ea1b.system.js → p-f233f1e0.system.js} +0 -0
  1857. /package/dist/ionic/{p-6dbfe5d4.js → p-fb813dab.js} +0 -0
  1858. /package/dist/ionic/{p-479cdbf8.system.js → p-ff4b7e40.system.js} +0 -0
@@ -5,66 +5,66 @@
5
5
 
6
6
  Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
- const index$3 = require('./index-c2940dc1.js');
9
- const index$2 = require('./index-da2c7a37.js');
10
- const frameworkDelegate = require('./framework-delegate-c0873a6f.js');
11
- const helpers = require('./helpers-ea4ccbcb.js');
12
- const lockController = require('./lock-controller-4ae2eb59.js');
13
- const index$4 = require('./index-cc7dfb7c.js');
14
- const capacitor = require('./capacitor-2ffba62a.js');
15
- const overlays = require('./overlays-2ffc5f27.js');
16
- const theme = require('./theme-fbc56b3b.js');
17
- const index$5 = require('./index-573877f3.js');
18
- const ionicGlobal = require('./ionic-global-ea2901a3.js');
19
- const keyboard = require('./keyboard-38f2bb7b.js');
20
- const animation = require('./animation-1083855c.js');
21
- const cubicBezier = require('./cubic-bezier-6b9222ad.js');
22
- const index$1 = require('./index-0ee995e4.js');
23
- const index = require('./index-306a7476.js');
24
- require('./hardware-back-button-b67c8e75.js');
25
- require('./keyboard-fd7db491.js');
26
- require('./gesture-controller-b46721be.js');
8
+ const index$3 = require('./index-50dcfe2f.js');
9
+ const index$2 = require('./index-da15e99c.js');
10
+ const frameworkDelegate = require('./framework-delegate-1c29b14a.js');
11
+ const helpers = require('./helpers-76bb7efb.js');
12
+ const lockController = require('./lock-controller-6585a42a.js');
13
+ const index$4 = require('./index-5915f9b3.js');
14
+ const capacitor = require('./capacitor-c04564bf.js');
15
+ const overlays = require('./overlays-e77cc023.js');
16
+ const theme = require('./theme-d1c573d2.js');
17
+ const index$5 = require('./index-17ab7794.js');
18
+ const ionicGlobal = require('./ionic-global-a4edbf03.js');
19
+ const keyboard = require('./keyboard-af1bb365.js');
20
+ const animation = require('./animation-9b401d39.js');
21
+ const cubicBezier = require('./cubic-bezier-f2dccc53.js');
22
+ const index$1 = require('./index-d1b59ffa.js');
23
+ const index = require('./index-c8d52405.js');
24
+ require('./hardware-back-button-76833cac.js');
25
+ require('./keyboard-0272231f.js');
26
+ require('./gesture-controller-c40c045a.js');
27
27
 
28
28
  var Style;
29
29
  (function (Style) {
30
- Style["Dark"] = "DARK";
31
- Style["Light"] = "LIGHT";
32
- Style["Default"] = "DEFAULT";
30
+ Style["Dark"] = "DARK";
31
+ Style["Light"] = "LIGHT";
32
+ Style["Default"] = "DEFAULT";
33
33
  })(Style || (Style = {}));
34
34
  const StatusBar = {
35
- getEngine() {
36
- const capacitor$1 = capacitor.getCapacitor();
37
- if (capacitor$1 === null || capacitor$1 === void 0 ? void 0 : capacitor$1.isPluginAvailable('StatusBar')) {
38
- return capacitor$1.Plugins.StatusBar;
39
- }
40
- return undefined;
41
- },
42
- // TODO FW-4696 Remove supportDefaultStatusBarStyle in Ionic v8
43
- supportsDefaultStatusBarStyle() {
44
- const capacitor$1 = capacitor.getCapacitor();
45
- /**
46
- * The 'DEFAULT' status bar style was added
47
- * to the @capacitor/status-bar plugin in Capacitor 3.
48
- * PluginHeaders is only supported in Capacitor 3+,
49
- * so we can use this to detect Capacitor 3.
50
- */
51
- return !!(capacitor$1 === null || capacitor$1 === void 0 ? void 0 : capacitor$1.PluginHeaders);
52
- },
53
- setStyle(options) {
54
- const engine = this.getEngine();
55
- if (!engine) {
56
- return;
57
- }
58
- engine.setStyle(options);
59
- },
60
- getStyle: async function () {
61
- const engine = this.getEngine();
62
- if (!engine) {
63
- return Style.Default;
64
- }
65
- const { style } = await engine.getInfo();
66
- return style;
67
- },
35
+ getEngine() {
36
+ const capacitor$1 = capacitor.getCapacitor();
37
+ if (capacitor$1 === null || capacitor$1 === void 0 ? void 0 : capacitor$1.isPluginAvailable('StatusBar')) {
38
+ return capacitor$1.Plugins.StatusBar;
39
+ }
40
+ return undefined;
41
+ },
42
+ // TODO FW-4696 Remove supportDefaultStatusBarStyle in Ionic v8
43
+ supportsDefaultStatusBarStyle() {
44
+ const capacitor$1 = capacitor.getCapacitor();
45
+ /**
46
+ * The 'DEFAULT' status bar style was added
47
+ * to the @capacitor/status-bar plugin in Capacitor 3.
48
+ * PluginHeaders is only supported in Capacitor 3+,
49
+ * so we can use this to detect Capacitor 3.
50
+ */
51
+ return !!(capacitor$1 === null || capacitor$1 === void 0 ? void 0 : capacitor$1.PluginHeaders);
52
+ },
53
+ setStyle(options) {
54
+ const engine = this.getEngine();
55
+ if (!engine) {
56
+ return;
57
+ }
58
+ engine.setStyle(options);
59
+ },
60
+ getStyle: async function () {
61
+ const engine = this.getEngine();
62
+ if (!engine) {
63
+ return Style.Default;
64
+ }
65
+ const { style } = await engine.getInfo();
66
+ return style;
67
+ },
68
68
  };
69
69
 
70
70
  /**
@@ -76,51 +76,51 @@ const StatusBar = {
76
76
  * the 0 breakpoint.
77
77
  */
78
78
  const getBackdropValueForSheet = (x, backdropBreakpoint) => {
79
- /**
80
- * We will use these points:
81
- * (backdropBreakpoint, 0)
82
- * (maxBreakpoint, 1)
83
- * We know that at the beginning breakpoint,
84
- * the backdrop will be hidden. We also
85
- * know that at the maxBreakpoint, the backdrop
86
- * must be fully visible. maxBreakpoint should
87
- * always be 1 even if the maximum value
88
- * of the breakpoints array is not 1 since
89
- * the animation runs from a progress of 0
90
- * to a progress of 1.
91
- * m = (y2 - y1) / (x2 - x1)
92
- *
93
- * This is simplified from:
94
- * m = (1 - 0) / (maxBreakpoint - backdropBreakpoint)
95
- *
96
- * If the backdropBreakpoint is 1, we return 0 as the
97
- * backdrop is completely hidden.
98
- *
99
- */
100
- if (backdropBreakpoint === 1) {
101
- return 0;
102
- }
103
- const slope = 1 / (1 - backdropBreakpoint);
104
- /**
105
- * From here, compute b which is
106
- * the backdrop opacity if the offset
107
- * is 0. If the backdrop does not
108
- * begin to fade in until after the
109
- * 0 breakpoint, this b value will be
110
- * negative. This is fine as we never pass
111
- * b directly into the animation keyframes.
112
- * b = y - mx
113
- * Use a known point: (backdropBreakpoint, 0)
114
- * This is simplified from:
115
- * b = 0 - (backdropBreakpoint * slope)
116
- */
117
- const b = -(backdropBreakpoint * slope);
118
- /**
119
- * Finally, we can now determine the
120
- * backdrop offset given an arbitrary
121
- * gesture offset.
122
- */
123
- return x * slope + b;
79
+ /**
80
+ * We will use these points:
81
+ * (backdropBreakpoint, 0)
82
+ * (maxBreakpoint, 1)
83
+ * We know that at the beginning breakpoint,
84
+ * the backdrop will be hidden. We also
85
+ * know that at the maxBreakpoint, the backdrop
86
+ * must be fully visible. maxBreakpoint should
87
+ * always be 1 even if the maximum value
88
+ * of the breakpoints array is not 1 since
89
+ * the animation runs from a progress of 0
90
+ * to a progress of 1.
91
+ * m = (y2 - y1) / (x2 - x1)
92
+ *
93
+ * This is simplified from:
94
+ * m = (1 - 0) / (maxBreakpoint - backdropBreakpoint)
95
+ *
96
+ * If the backdropBreakpoint is 1, we return 0 as the
97
+ * backdrop is completely hidden.
98
+ *
99
+ */
100
+ if (backdropBreakpoint === 1) {
101
+ return 0;
102
+ }
103
+ const slope = 1 / (1 - backdropBreakpoint);
104
+ /**
105
+ * From here, compute b which is
106
+ * the backdrop opacity if the offset
107
+ * is 0. If the backdrop does not
108
+ * begin to fade in until after the
109
+ * 0 breakpoint, this b value will be
110
+ * negative. This is fine as we never pass
111
+ * b directly into the animation keyframes.
112
+ * b = y - mx
113
+ * Use a known point: (backdropBreakpoint, 0)
114
+ * This is simplified from:
115
+ * b = 0 - (backdropBreakpoint * slope)
116
+ */
117
+ const b = -(backdropBreakpoint * slope);
118
+ /**
119
+ * Finally, we can now determine the
120
+ * backdrop offset given an arbitrary
121
+ * gesture offset.
122
+ */
123
+ return x * slope + b;
124
124
  };
125
125
  /**
126
126
  * The tablet/desktop card modal activates
@@ -135,59 +135,59 @@ const getBackdropValueForSheet = (x, backdropBreakpoint) => {
135
135
  * support for Style.Default.
136
136
  */
137
137
  const setCardStatusBarDark = () => {
138
- // TODO FW-4696 Remove supportDefaultStatusBarStyle in Ionic v8
139
- if (!index.win || index.win.innerWidth >= 768 || !StatusBar.supportsDefaultStatusBarStyle()) {
140
- return;
141
- }
142
- StatusBar.setStyle({ style: Style.Dark });
138
+ // TODO FW-4696 Remove supportDefaultStatusBarStyle in Ionic v8
139
+ if (!index.win || index.win.innerWidth >= 768 || !StatusBar.supportsDefaultStatusBarStyle()) {
140
+ return;
141
+ }
142
+ StatusBar.setStyle({ style: Style.Dark });
143
143
  };
144
144
  const setCardStatusBarDefault = (defaultStyle = Style.Default) => {
145
- // TODO FW-4696 Remove supportDefaultStatusBarStyle in Ionic v8
146
- if (!index.win || index.win.innerWidth >= 768 || !StatusBar.supportsDefaultStatusBarStyle()) {
147
- return;
148
- }
149
- StatusBar.setStyle({ style: defaultStyle });
145
+ // TODO FW-4696 Remove supportDefaultStatusBarStyle in Ionic v8
146
+ if (!index.win || index.win.innerWidth >= 768 || !StatusBar.supportsDefaultStatusBarStyle()) {
147
+ return;
148
+ }
149
+ StatusBar.setStyle({ style: defaultStyle });
150
150
  };
151
151
 
152
152
  const handleCanDismiss = async (el, animation) => {
153
- /**
154
- * If canDismiss is not a function
155
- * then we can return early. If canDismiss is `true`,
156
- * then canDismissBlocksGesture is `false` as canDismiss
157
- * will never interrupt the gesture. As a result,
158
- * this code block is never reached. If canDismiss is `false`,
159
- * then we never dismiss.
160
- */
161
- if (typeof el.canDismiss !== 'function') {
162
- return;
163
- }
164
- /**
165
- * Run the canDismiss callback.
166
- * If the function returns `true`,
167
- * then we can proceed with dismiss.
168
- */
169
- const shouldDismiss = await el.canDismiss(undefined, overlays.GESTURE);
170
- if (!shouldDismiss) {
171
- return;
172
- }
173
- /**
174
- * If canDismiss resolved after the snap
175
- * back animation finished, we can
176
- * dismiss immediately.
177
- *
178
- * If canDismiss resolved before the snap
179
- * back animation finished, we need to
180
- * wait until the snap back animation is
181
- * done before dismissing.
182
- */
183
- if (animation.isRunning()) {
184
- animation.onFinish(() => {
185
- el.dismiss(undefined, 'handler');
186
- }, { oneTimeCallback: true });
187
- }
188
- else {
189
- el.dismiss(undefined, 'handler');
190
- }
153
+ /**
154
+ * If canDismiss is not a function
155
+ * then we can return early. If canDismiss is `true`,
156
+ * then canDismissBlocksGesture is `false` as canDismiss
157
+ * will never interrupt the gesture. As a result,
158
+ * this code block is never reached. If canDismiss is `false`,
159
+ * then we never dismiss.
160
+ */
161
+ if (typeof el.canDismiss !== 'function') {
162
+ return;
163
+ }
164
+ /**
165
+ * Run the canDismiss callback.
166
+ * If the function returns `true`,
167
+ * then we can proceed with dismiss.
168
+ */
169
+ const shouldDismiss = await el.canDismiss(undefined, overlays.GESTURE);
170
+ if (!shouldDismiss) {
171
+ return;
172
+ }
173
+ /**
174
+ * If canDismiss resolved after the snap
175
+ * back animation finished, we can
176
+ * dismiss immediately.
177
+ *
178
+ * If canDismiss resolved before the snap
179
+ * back animation finished, we need to
180
+ * wait until the snap back animation is
181
+ * done before dismissing.
182
+ */
183
+ if (animation.isRunning()) {
184
+ animation.onFinish(() => {
185
+ el.dismiss(undefined, 'handler');
186
+ }, { oneTimeCallback: true });
187
+ }
188
+ else {
189
+ el.dismiss(undefined, 'handler');
190
+ }
191
191
  };
192
192
  /**
193
193
  * This function lets us simulate a realistic spring-like animation
@@ -262,1376 +262,1386 @@ const handleCanDismiss = async (el, animation) => {
262
262
  * give you a complex differential equation too.
263
263
  */
264
264
  const calculateSpringStep = (t) => {
265
- return 0.00255275 * 2.71828 ** (-14.9619 * t) - 1.00255 * 2.71828 ** (-0.0380968 * t) + 1;
265
+ return 0.00255275 * 2.71828 ** (-14.9619 * t) - 1.00255 * 2.71828 ** (-0.0380968 * t) + 1;
266
266
  };
267
267
 
268
268
  // Defaults for the card swipe animation
269
269
  const SwipeToCloseDefaults = {
270
- MIN_PRESENTING_SCALE: 0.93,
270
+ MIN_PRESENTING_SCALE: 0.93,
271
271
  };
272
272
  const createSwipeToCloseGesture = (el, animation, statusBarStyle, onDismiss) => {
273
- /**
274
- * The step value at which a card modal
275
- * is eligible for dismissing via gesture.
276
- */
277
- const DISMISS_THRESHOLD = 0.5;
278
- const height = el.offsetHeight;
279
- let isOpen = false;
280
- let canDismissBlocksGesture = false;
281
- let contentEl = null;
282
- let scrollEl = null;
283
- const canDismissMaxStep = 0.2;
284
- let initialScrollY = true;
285
- let lastStep = 0;
286
- const getScrollY = () => {
287
- if (contentEl && index$2.isIonContent(contentEl)) {
288
- return contentEl.scrollY;
289
- /**
290
- * Custom scroll containers are intended to be
291
- * used with virtual scrolling, so we assume
292
- * there is scrolling in this case.
293
- */
294
- }
295
- else {
296
- return true;
297
- }
298
- };
299
- const canStart = (detail) => {
300
- const target = detail.event.target;
301
- if (target === null || !target.closest) {
302
- return true;
303
- }
304
- /**
305
- * If we are swiping on the content,
306
- * swiping should only be possible if
307
- * the content is scrolled all the way
308
- * to the top so that we do not interfere
309
- * with scrolling.
310
- *
311
- * We cannot assume that the `ion-content`
312
- * target will remain consistent between
313
- * swipes. For example, when using
314
- * ion-nav within a card modal it is
315
- * possible to swipe, push a view, and then
316
- * swipe again. The target content will not
317
- * be the same between swipes.
318
- */
319
- contentEl = index$2.findClosestIonContent(target);
320
- if (contentEl) {
321
- /**
322
- * The card should never swipe to close
323
- * on the content with a refresher.
324
- * Note: We cannot solve this by making the
325
- * swipeToClose gesture have a higher priority
326
- * than the refresher gesture as the iOS native
327
- * refresh gesture uses a scroll listener in
328
- * addition to a gesture.
329
- *
330
- * Note: Do not use getScrollElement here
331
- * because we need this to be a synchronous
332
- * operation, and getScrollElement is
333
- * asynchronous.
334
- */
335
- if (index$2.isIonContent(contentEl)) {
336
- const root = helpers.getElementRoot(contentEl);
337
- scrollEl = root.querySelector('.inner-scroll');
338
- }
339
- else {
340
- scrollEl = contentEl;
341
- }
342
- const hasRefresherInContent = !!contentEl.querySelector('ion-refresher');
343
- return !hasRefresherInContent && scrollEl.scrollTop === 0;
344
- }
345
- /**
346
- * Card should be swipeable on all
347
- * parts of the modal except for the footer.
348
- */
349
- const footer = target.closest('ion-footer');
350
- if (footer === null) {
351
- return true;
352
- }
353
- return false;
354
- };
355
- const onStart = (detail) => {
356
- const { deltaY } = detail;
357
- /**
358
- * Get the initial scrollY value so
359
- * that we can correctly reset the scrollY
360
- * prop when the gesture ends.
361
- */
362
- initialScrollY = getScrollY();
363
- /**
364
- * If canDismiss is anything other than `true`
365
- * then users should be able to swipe down
366
- * until a threshold is hit. At that point,
367
- * the card modal should not proceed any further.
368
- * TODO (FW-937)
369
- * Remove undefined check
370
- */
371
- canDismissBlocksGesture = el.canDismiss !== undefined && el.canDismiss !== true;
372
- /**
373
- * If we are pulling down, then
374
- * it is possible we are pulling on the
375
- * content. We do not want scrolling to
376
- * happen at the same time as the gesture.
377
- */
378
- if (deltaY > 0 && contentEl) {
379
- index$2.disableContentScrollY(contentEl);
380
- }
381
- animation.progressStart(true, isOpen ? 1 : 0);
382
- };
383
- const onMove = (detail) => {
384
- const { deltaY } = detail;
385
- /**
386
- * If we are pulling down, then
387
- * it is possible we are pulling on the
388
- * content. We do not want scrolling to
389
- * happen at the same time as the gesture.
390
- */
391
- if (deltaY > 0 && contentEl) {
392
- index$2.disableContentScrollY(contentEl);
393
- }
394
- /**
395
- * If we are swiping on the content
396
- * then the swipe gesture should only
397
- * happen if we are pulling down.
398
- *
399
- * However, if we pull up and
400
- * then down such that the scroll position
401
- * returns to 0, we should be able to swipe
402
- * the card.
403
- */
404
- const step = detail.deltaY / height;
405
- /**
406
- * Check if user is swiping down and
407
- * if we have a canDismiss value that
408
- * should block the gesture from
409
- * proceeding,
410
- */
411
- const isAttemptingDismissWithCanDismiss = step >= 0 && canDismissBlocksGesture;
412
- /**
413
- * If we are blocking the gesture from dismissing,
414
- * set the max step value so that the sheet cannot be
415
- * completely hidden.
416
- */
417
- const maxStep = isAttemptingDismissWithCanDismiss ? canDismissMaxStep : 0.9999;
418
273
  /**
419
- * If we are blocking the gesture from
420
- * dismissing, calculate the spring modifier value
421
- * this will be added to the starting breakpoint
422
- * value to give the gesture a spring-like feeling.
423
- * Note that the starting breakpoint is always 0,
424
- * so we omit adding 0 to the result.
274
+ * The step value at which a card modal
275
+ * is eligible for dismissing via gesture.
425
276
  */
426
- const processedStep = isAttemptingDismissWithCanDismiss ? calculateSpringStep(step / maxStep) : step;
427
- const clampedStep = helpers.clamp(0.0001, processedStep, maxStep);
428
- animation.progressStep(clampedStep);
429
- /**
430
- * When swiping down half way, the status bar style
431
- * should be reset to its default value.
432
- *
433
- * We track lastStep so that we do not fire these
434
- * functions on every onMove, only when the user has
435
- * crossed a certain threshold.
436
- */
437
- if (clampedStep >= DISMISS_THRESHOLD && lastStep < DISMISS_THRESHOLD) {
438
- setCardStatusBarDefault(statusBarStyle);
439
- /**
440
- * However, if we swipe back up, then the
441
- * status bar style should be set to have light
442
- * text on a dark background.
443
- */
444
- }
445
- else if (clampedStep < DISMISS_THRESHOLD && lastStep >= DISMISS_THRESHOLD) {
446
- setCardStatusBarDark();
447
- }
448
- lastStep = clampedStep;
449
- };
450
- const onEnd = (detail) => {
451
- const velocity = detail.velocityY;
452
- const step = detail.deltaY / height;
453
- const isAttemptingDismissWithCanDismiss = step >= 0 && canDismissBlocksGesture;
454
- const maxStep = isAttemptingDismissWithCanDismiss ? canDismissMaxStep : 0.9999;
455
- const processedStep = isAttemptingDismissWithCanDismiss ? calculateSpringStep(step / maxStep) : step;
456
- const clampedStep = helpers.clamp(0.0001, processedStep, maxStep);
457
- const threshold = (detail.deltaY + velocity * 1000) / height;
458
- /**
459
- * If canDismiss blocks
460
- * the swipe gesture, then the
461
- * animation can never complete until
462
- * canDismiss is checked.
463
- */
464
- const shouldComplete = !isAttemptingDismissWithCanDismiss && threshold >= DISMISS_THRESHOLD;
465
- let newStepValue = shouldComplete ? -0.001 : 0.001;
466
- if (!shouldComplete) {
467
- animation.easing('cubic-bezier(1, 0, 0.68, 0.28)');
468
- newStepValue += cubicBezier.getTimeGivenProgression([0, 0], [1, 0], [0.68, 0.28], [1, 1], clampedStep)[0];
469
- }
470
- else {
471
- animation.easing('cubic-bezier(0.32, 0.72, 0, 1)');
472
- newStepValue += cubicBezier.getTimeGivenProgression([0, 0], [0.32, 0.72], [0, 1], [1, 1], clampedStep)[0];
473
- }
474
- const duration = shouldComplete
475
- ? computeDuration(step * height, velocity)
476
- : computeDuration((1 - clampedStep) * height, velocity);
477
- isOpen = shouldComplete;
478
- gesture.enable(false);
479
- if (contentEl) {
480
- index$2.resetContentScrollY(contentEl, initialScrollY);
481
- }
482
- animation
483
- .onFinish(() => {
484
- if (!shouldComplete) {
485
- gesture.enable(true);
486
- }
487
- })
488
- .progressEnd(shouldComplete ? 1 : 0, newStepValue, duration);
489
- /**
490
- * If the canDismiss value blocked the gesture
491
- * from proceeding, then we should ignore whatever
492
- * shouldComplete is. Whether or not the modal
493
- * animation should complete is now determined by
494
- * canDismiss.
495
- *
496
- * If the user swiped >25% of the way
497
- * to the max step, then we should
498
- * check canDismiss. 25% was chosen
499
- * to avoid accidental swipes.
500
- */
501
- if (isAttemptingDismissWithCanDismiss && clampedStep > maxStep / 4) {
502
- handleCanDismiss(el, animation);
503
- }
504
- else if (shouldComplete) {
505
- onDismiss();
506
- }
507
- };
508
- const gesture = index$1.createGesture({
509
- el,
510
- gestureName: 'modalSwipeToClose',
511
- gesturePriority: 39,
512
- direction: 'y',
513
- threshold: 10,
514
- canStart,
515
- onStart,
516
- onMove,
517
- onEnd,
518
- });
519
- return gesture;
277
+ const DISMISS_THRESHOLD = 0.5;
278
+ const height = el.offsetHeight;
279
+ let isOpen = false;
280
+ let canDismissBlocksGesture = false;
281
+ let contentEl = null;
282
+ let scrollEl = null;
283
+ const canDismissMaxStep = 0.2;
284
+ let initialScrollY = true;
285
+ let lastStep = 0;
286
+ const getScrollY = () => {
287
+ if (contentEl && index$2.isIonContent(contentEl)) {
288
+ return contentEl.scrollY;
289
+ /**
290
+ * Custom scroll containers are intended to be
291
+ * used with virtual scrolling, so we assume
292
+ * there is scrolling in this case.
293
+ */
294
+ }
295
+ else {
296
+ return true;
297
+ }
298
+ };
299
+ const canStart = (detail) => {
300
+ const target = detail.event.target;
301
+ if (target === null || !target.closest) {
302
+ return true;
303
+ }
304
+ /**
305
+ * If we are swiping on the content,
306
+ * swiping should only be possible if
307
+ * the content is scrolled all the way
308
+ * to the top so that we do not interfere
309
+ * with scrolling.
310
+ *
311
+ * We cannot assume that the `ion-content`
312
+ * target will remain consistent between
313
+ * swipes. For example, when using
314
+ * ion-nav within a card modal it is
315
+ * possible to swipe, push a view, and then
316
+ * swipe again. The target content will not
317
+ * be the same between swipes.
318
+ */
319
+ contentEl = index$2.findClosestIonContent(target);
320
+ if (contentEl) {
321
+ /**
322
+ * The card should never swipe to close
323
+ * on the content with a refresher.
324
+ * Note: We cannot solve this by making the
325
+ * swipeToClose gesture have a higher priority
326
+ * than the refresher gesture as the iOS native
327
+ * refresh gesture uses a scroll listener in
328
+ * addition to a gesture.
329
+ *
330
+ * Note: Do not use getScrollElement here
331
+ * because we need this to be a synchronous
332
+ * operation, and getScrollElement is
333
+ * asynchronous.
334
+ */
335
+ if (index$2.isIonContent(contentEl)) {
336
+ const root = helpers.getElementRoot(contentEl);
337
+ scrollEl = root.querySelector('.inner-scroll');
338
+ }
339
+ else {
340
+ scrollEl = contentEl;
341
+ }
342
+ const hasRefresherInContent = !!contentEl.querySelector('ion-refresher');
343
+ return !hasRefresherInContent && scrollEl.scrollTop === 0;
344
+ }
345
+ /**
346
+ * Card should be swipeable on all
347
+ * parts of the modal except for the footer.
348
+ */
349
+ const footer = target.closest('ion-footer');
350
+ if (footer === null) {
351
+ return true;
352
+ }
353
+ return false;
354
+ };
355
+ const onStart = (detail) => {
356
+ const { deltaY } = detail;
357
+ /**
358
+ * Get the initial scrollY value so
359
+ * that we can correctly reset the scrollY
360
+ * prop when the gesture ends.
361
+ */
362
+ initialScrollY = getScrollY();
363
+ /**
364
+ * If canDismiss is anything other than `true`
365
+ * then users should be able to swipe down
366
+ * until a threshold is hit. At that point,
367
+ * the card modal should not proceed any further.
368
+ * TODO (FW-937)
369
+ * Remove undefined check
370
+ */
371
+ canDismissBlocksGesture = el.canDismiss !== undefined && el.canDismiss !== true;
372
+ /**
373
+ * If we are pulling down, then
374
+ * it is possible we are pulling on the
375
+ * content. We do not want scrolling to
376
+ * happen at the same time as the gesture.
377
+ */
378
+ if (deltaY > 0 && contentEl) {
379
+ index$2.disableContentScrollY(contentEl);
380
+ }
381
+ animation.progressStart(true, isOpen ? 1 : 0);
382
+ };
383
+ const onMove = (detail) => {
384
+ const { deltaY } = detail;
385
+ /**
386
+ * If we are pulling down, then
387
+ * it is possible we are pulling on the
388
+ * content. We do not want scrolling to
389
+ * happen at the same time as the gesture.
390
+ */
391
+ if (deltaY > 0 && contentEl) {
392
+ index$2.disableContentScrollY(contentEl);
393
+ }
394
+ /**
395
+ * If we are swiping on the content
396
+ * then the swipe gesture should only
397
+ * happen if we are pulling down.
398
+ *
399
+ * However, if we pull up and
400
+ * then down such that the scroll position
401
+ * returns to 0, we should be able to swipe
402
+ * the card.
403
+ */
404
+ const step = detail.deltaY / height;
405
+ /**
406
+ * Check if user is swiping down and
407
+ * if we have a canDismiss value that
408
+ * should block the gesture from
409
+ * proceeding,
410
+ */
411
+ const isAttemptingDismissWithCanDismiss = step >= 0 && canDismissBlocksGesture;
412
+ /**
413
+ * If we are blocking the gesture from dismissing,
414
+ * set the max step value so that the sheet cannot be
415
+ * completely hidden.
416
+ */
417
+ const maxStep = isAttemptingDismissWithCanDismiss ? canDismissMaxStep : 0.9999;
418
+ /**
419
+ * If we are blocking the gesture from
420
+ * dismissing, calculate the spring modifier value
421
+ * this will be added to the starting breakpoint
422
+ * value to give the gesture a spring-like feeling.
423
+ * Note that the starting breakpoint is always 0,
424
+ * so we omit adding 0 to the result.
425
+ */
426
+ const processedStep = isAttemptingDismissWithCanDismiss ? calculateSpringStep(step / maxStep) : step;
427
+ const clampedStep = helpers.clamp(0.0001, processedStep, maxStep);
428
+ animation.progressStep(clampedStep);
429
+ /**
430
+ * When swiping down half way, the status bar style
431
+ * should be reset to its default value.
432
+ *
433
+ * We track lastStep so that we do not fire these
434
+ * functions on every onMove, only when the user has
435
+ * crossed a certain threshold.
436
+ */
437
+ if (clampedStep >= DISMISS_THRESHOLD && lastStep < DISMISS_THRESHOLD) {
438
+ setCardStatusBarDefault(statusBarStyle);
439
+ /**
440
+ * However, if we swipe back up, then the
441
+ * status bar style should be set to have light
442
+ * text on a dark background.
443
+ */
444
+ }
445
+ else if (clampedStep < DISMISS_THRESHOLD && lastStep >= DISMISS_THRESHOLD) {
446
+ setCardStatusBarDark();
447
+ }
448
+ lastStep = clampedStep;
449
+ };
450
+ const onEnd = (detail) => {
451
+ const velocity = detail.velocityY;
452
+ const step = detail.deltaY / height;
453
+ const isAttemptingDismissWithCanDismiss = step >= 0 && canDismissBlocksGesture;
454
+ const maxStep = isAttemptingDismissWithCanDismiss ? canDismissMaxStep : 0.9999;
455
+ const processedStep = isAttemptingDismissWithCanDismiss ? calculateSpringStep(step / maxStep) : step;
456
+ const clampedStep = helpers.clamp(0.0001, processedStep, maxStep);
457
+ const threshold = (detail.deltaY + velocity * 1000) / height;
458
+ /**
459
+ * If canDismiss blocks
460
+ * the swipe gesture, then the
461
+ * animation can never complete until
462
+ * canDismiss is checked.
463
+ */
464
+ const shouldComplete = !isAttemptingDismissWithCanDismiss && threshold >= DISMISS_THRESHOLD;
465
+ let newStepValue = shouldComplete ? -0.001 : 0.001;
466
+ if (!shouldComplete) {
467
+ animation.easing('cubic-bezier(1, 0, 0.68, 0.28)');
468
+ newStepValue += cubicBezier.getTimeGivenProgression([0, 0], [1, 0], [0.68, 0.28], [1, 1], clampedStep)[0];
469
+ }
470
+ else {
471
+ animation.easing('cubic-bezier(0.32, 0.72, 0, 1)');
472
+ newStepValue += cubicBezier.getTimeGivenProgression([0, 0], [0.32, 0.72], [0, 1], [1, 1], clampedStep)[0];
473
+ }
474
+ const duration = shouldComplete
475
+ ? computeDuration(step * height, velocity)
476
+ : computeDuration((1 - clampedStep) * height, velocity);
477
+ isOpen = shouldComplete;
478
+ gesture.enable(false);
479
+ if (contentEl) {
480
+ index$2.resetContentScrollY(contentEl, initialScrollY);
481
+ }
482
+ animation
483
+ .onFinish(() => {
484
+ if (!shouldComplete) {
485
+ gesture.enable(true);
486
+ }
487
+ })
488
+ .progressEnd(shouldComplete ? 1 : 0, newStepValue, duration);
489
+ /**
490
+ * If the canDismiss value blocked the gesture
491
+ * from proceeding, then we should ignore whatever
492
+ * shouldComplete is. Whether or not the modal
493
+ * animation should complete is now determined by
494
+ * canDismiss.
495
+ *
496
+ * If the user swiped >25% of the way
497
+ * to the max step, then we should
498
+ * check canDismiss. 25% was chosen
499
+ * to avoid accidental swipes.
500
+ */
501
+ if (isAttemptingDismissWithCanDismiss && clampedStep > maxStep / 4) {
502
+ handleCanDismiss(el, animation);
503
+ }
504
+ else if (shouldComplete) {
505
+ onDismiss();
506
+ }
507
+ };
508
+ const gesture = index$1.createGesture({
509
+ el,
510
+ gestureName: 'modalSwipeToClose',
511
+ gesturePriority: overlays.OVERLAY_GESTURE_PRIORITY,
512
+ direction: 'y',
513
+ threshold: 10,
514
+ canStart,
515
+ onStart,
516
+ onMove,
517
+ onEnd,
518
+ });
519
+ return gesture;
520
520
  };
521
521
  const computeDuration = (remaining, velocity) => {
522
- return helpers.clamp(400, remaining / Math.abs(velocity * 1.1), 500);
522
+ return helpers.clamp(400, remaining / Math.abs(velocity * 1.1), 500);
523
523
  };
524
524
 
525
525
  const createSheetEnterAnimation = (opts) => {
526
- const { currentBreakpoint, backdropBreakpoint } = opts;
527
- /**
528
- * If the backdropBreakpoint is undefined, then the backdrop
529
- * should always fade in. If the backdropBreakpoint came before the
530
- * current breakpoint, then the backdrop should be fading in.
531
- */
532
- const shouldShowBackdrop = backdropBreakpoint === undefined || backdropBreakpoint < currentBreakpoint;
533
- const initialBackdrop = shouldShowBackdrop ? `calc(var(--backdrop-opacity) * ${currentBreakpoint})` : '0';
534
- const backdropAnimation = animation.createAnimation('backdropAnimation').fromTo('opacity', 0, initialBackdrop);
535
- if (shouldShowBackdrop) {
536
- backdropAnimation
537
- .beforeStyles({
538
- 'pointer-events': 'none',
539
- })
540
- .afterClearStyles(['pointer-events']);
541
- }
542
- const wrapperAnimation = animation.createAnimation('wrapperAnimation').keyframes([
543
- { offset: 0, opacity: 1, transform: 'translateY(100%)' },
544
- { offset: 1, opacity: 1, transform: `translateY(${100 - currentBreakpoint * 100}%)` },
545
- ]);
546
- return { wrapperAnimation, backdropAnimation };
526
+ const { currentBreakpoint, backdropBreakpoint } = opts;
527
+ /**
528
+ * If the backdropBreakpoint is undefined, then the backdrop
529
+ * should always fade in. If the backdropBreakpoint came before the
530
+ * current breakpoint, then the backdrop should be fading in.
531
+ */
532
+ const shouldShowBackdrop = backdropBreakpoint === undefined || backdropBreakpoint < currentBreakpoint;
533
+ const initialBackdrop = shouldShowBackdrop ? `calc(var(--backdrop-opacity) * ${currentBreakpoint})` : '0';
534
+ const backdropAnimation = animation.createAnimation('backdropAnimation').fromTo('opacity', 0, initialBackdrop);
535
+ if (shouldShowBackdrop) {
536
+ backdropAnimation
537
+ .beforeStyles({
538
+ 'pointer-events': 'none',
539
+ })
540
+ .afterClearStyles(['pointer-events']);
541
+ }
542
+ const wrapperAnimation = animation.createAnimation('wrapperAnimation').keyframes([
543
+ { offset: 0, opacity: 1, transform: 'translateY(100%)' },
544
+ { offset: 1, opacity: 1, transform: `translateY(${100 - currentBreakpoint * 100}%)` },
545
+ ]);
546
+ return { wrapperAnimation, backdropAnimation };
547
547
  };
548
548
  const createSheetLeaveAnimation = (opts) => {
549
- const { currentBreakpoint, backdropBreakpoint } = opts;
550
- /**
551
- * Backdrop does not always fade in from 0 to 1 if backdropBreakpoint
552
- * is defined, so we need to account for that offset by figuring out
553
- * what the current backdrop value should be.
554
- */
555
- const backdropValue = `calc(var(--backdrop-opacity) * ${getBackdropValueForSheet(currentBreakpoint, backdropBreakpoint)})`;
556
- const defaultBackdrop = [
557
- { offset: 0, opacity: backdropValue },
558
- { offset: 1, opacity: 0 },
559
- ];
560
- const customBackdrop = [
561
- { offset: 0, opacity: backdropValue },
562
- { offset: backdropBreakpoint, opacity: 0 },
563
- { offset: 1, opacity: 0 },
564
- ];
565
- const backdropAnimation = animation.createAnimation('backdropAnimation').keyframes(backdropBreakpoint !== 0 ? customBackdrop : defaultBackdrop);
566
- const wrapperAnimation = animation.createAnimation('wrapperAnimation').keyframes([
567
- { offset: 0, opacity: 1, transform: `translateY(${100 - currentBreakpoint * 100}%)` },
568
- { offset: 1, opacity: 1, transform: `translateY(100%)` },
569
- ]);
570
- return { wrapperAnimation, backdropAnimation };
549
+ const { currentBreakpoint, backdropBreakpoint } = opts;
550
+ /**
551
+ * Backdrop does not always fade in from 0 to 1 if backdropBreakpoint
552
+ * is defined, so we need to account for that offset by figuring out
553
+ * what the current backdrop value should be.
554
+ */
555
+ const backdropValue = `calc(var(--backdrop-opacity) * ${getBackdropValueForSheet(currentBreakpoint, backdropBreakpoint)})`;
556
+ const defaultBackdrop = [
557
+ { offset: 0, opacity: backdropValue },
558
+ { offset: 1, opacity: 0 },
559
+ ];
560
+ const customBackdrop = [
561
+ { offset: 0, opacity: backdropValue },
562
+ { offset: backdropBreakpoint, opacity: 0 },
563
+ { offset: 1, opacity: 0 },
564
+ ];
565
+ const backdropAnimation = animation.createAnimation('backdropAnimation').keyframes(backdropBreakpoint !== 0 ? customBackdrop : defaultBackdrop);
566
+ const wrapperAnimation = animation.createAnimation('wrapperAnimation').keyframes([
567
+ { offset: 0, opacity: 1, transform: `translateY(${100 - currentBreakpoint * 100}%)` },
568
+ { offset: 1, opacity: 1, transform: `translateY(100%)` },
569
+ ]);
570
+ return { wrapperAnimation, backdropAnimation };
571
571
  };
572
572
 
573
573
  const createEnterAnimation$1 = () => {
574
- const backdropAnimation = animation.createAnimation()
575
- .fromTo('opacity', 0.01, 'var(--backdrop-opacity)')
576
- .beforeStyles({
577
- 'pointer-events': 'none',
578
- })
579
- .afterClearStyles(['pointer-events']);
580
- const wrapperAnimation = animation.createAnimation().fromTo('transform', 'translateY(100vh)', 'translateY(0vh)');
581
- return { backdropAnimation, wrapperAnimation };
574
+ const backdropAnimation = animation.createAnimation()
575
+ .fromTo('opacity', 0.01, 'var(--backdrop-opacity)')
576
+ .beforeStyles({
577
+ 'pointer-events': 'none',
578
+ })
579
+ .afterClearStyles(['pointer-events']);
580
+ const wrapperAnimation = animation.createAnimation().fromTo('transform', 'translateY(100vh)', 'translateY(0vh)');
581
+ return { backdropAnimation, wrapperAnimation };
582
582
  };
583
583
  /**
584
584
  * iOS Modal Enter Animation for the Card presentation style
585
585
  */
586
586
  const iosEnterAnimation = (baseEl, opts) => {
587
- const { presentingEl, currentBreakpoint } = opts;
588
- const root = helpers.getElementRoot(baseEl);
589
- const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation$1();
590
- backdropAnimation.addElement(root.querySelector('ion-backdrop'));
591
- wrapperAnimation.addElement(root.querySelectorAll('.modal-wrapper, .modal-shadow')).beforeStyles({ opacity: 1 });
592
- const baseAnimation = animation.createAnimation('entering-base')
593
- .addElement(baseEl)
594
- .easing('cubic-bezier(0.32,0.72,0,1)')
595
- .duration(500)
596
- .addAnimation(wrapperAnimation);
597
- if (presentingEl) {
598
- const isMobile = window.innerWidth < 768;
599
- const hasCardModal = presentingEl.tagName === 'ION-MODAL' && presentingEl.presentingElement !== undefined;
600
- const presentingElRoot = helpers.getElementRoot(presentingEl);
601
- const presentingAnimation = animation.createAnimation().beforeStyles({
602
- transform: 'translateY(0)',
603
- 'transform-origin': 'top center',
604
- overflow: 'hidden',
605
- });
606
- const appEl = baseEl.closest('ion-app');
607
- if (isMobile && appEl) {
608
- /**
609
- * Fallback for browsers that does not support `max()` (ex: Firefox)
610
- * No need to worry about statusbar padding since engines like Gecko
611
- * are not used as the engine for standalone Cordova/Capacitor apps
612
- */
613
- const transformOffset = !CSS.supports('width', 'max(0px, 1px)') ? '30px' : 'max(30px, var(--ion-safe-area-top))';
614
- const modalTransform = hasCardModal ? '-10px' : transformOffset;
615
- const toPresentingScale = SwipeToCloseDefaults.MIN_PRESENTING_SCALE;
616
- const finalTransform = `translateY(${modalTransform}) scale(${toPresentingScale})`;
617
- presentingAnimation
618
- .afterStyles({
619
- transform: finalTransform,
620
- })
621
- .beforeAddWrite(() => appEl.style.setProperty('background-color', 'black'))
622
- .addElement(presentingEl)
623
- .keyframes([
624
- { offset: 0, filter: 'contrast(1)', transform: 'translateY(0px) scale(1)', borderRadius: '0px' },
625
- { offset: 1, filter: 'contrast(0.85)', transform: finalTransform, borderRadius: '10px 10px 0 0' },
626
- ]);
627
- baseAnimation.addAnimation(presentingAnimation);
587
+ const { presentingEl, currentBreakpoint } = opts;
588
+ const root = helpers.getElementRoot(baseEl);
589
+ const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation$1();
590
+ backdropAnimation.addElement(root.querySelector('ion-backdrop'));
591
+ wrapperAnimation.addElement(root.querySelectorAll('.modal-wrapper, .modal-shadow')).beforeStyles({ opacity: 1 });
592
+ const baseAnimation = animation.createAnimation('entering-base')
593
+ .addElement(baseEl)
594
+ .easing('cubic-bezier(0.32,0.72,0,1)')
595
+ .duration(500)
596
+ .addAnimation(wrapperAnimation);
597
+ if (presentingEl) {
598
+ const isMobile = window.innerWidth < 768;
599
+ const hasCardModal = presentingEl.tagName === 'ION-MODAL' && presentingEl.presentingElement !== undefined;
600
+ const presentingElRoot = helpers.getElementRoot(presentingEl);
601
+ const presentingAnimation = animation.createAnimation().beforeStyles({
602
+ transform: 'translateY(0)',
603
+ 'transform-origin': 'top center',
604
+ overflow: 'hidden',
605
+ });
606
+ const appEl = baseEl.closest('ion-app');
607
+ if (isMobile && appEl) {
608
+ /**
609
+ * Fallback for browsers that does not support `max()` (ex: Firefox)
610
+ * No need to worry about statusbar padding since engines like Gecko
611
+ * are not used as the engine for standalone Cordova/Capacitor apps
612
+ */
613
+ const transformOffset = !CSS.supports('width', 'max(0px, 1px)') ? '30px' : 'max(30px, var(--ion-safe-area-top))';
614
+ const modalTransform = hasCardModal ? '-10px' : transformOffset;
615
+ const toPresentingScale = SwipeToCloseDefaults.MIN_PRESENTING_SCALE;
616
+ const finalTransform = `translateY(${modalTransform}) scale(${toPresentingScale})`;
617
+ presentingAnimation
618
+ .afterStyles({
619
+ transform: finalTransform,
620
+ })
621
+ .beforeAddWrite(() => appEl.style.setProperty('background-color', 'black'))
622
+ .addElement(presentingEl)
623
+ .keyframes([
624
+ { offset: 0, filter: 'contrast(1)', transform: 'translateY(0px) scale(1)', borderRadius: '0px' },
625
+ { offset: 1, filter: 'contrast(0.85)', transform: finalTransform, borderRadius: '10px 10px 0 0' },
626
+ ]);
627
+ baseAnimation.addAnimation(presentingAnimation);
628
+ }
629
+ else {
630
+ baseAnimation.addAnimation(backdropAnimation);
631
+ if (!hasCardModal) {
632
+ wrapperAnimation.fromTo('opacity', '0', '1');
633
+ }
634
+ else {
635
+ const toPresentingScale = hasCardModal ? SwipeToCloseDefaults.MIN_PRESENTING_SCALE : 1;
636
+ const finalTransform = `translateY(-10px) scale(${toPresentingScale})`;
637
+ presentingAnimation
638
+ .afterStyles({
639
+ transform: finalTransform,
640
+ })
641
+ .addElement(presentingElRoot.querySelector('.modal-wrapper'))
642
+ .keyframes([
643
+ { offset: 0, filter: 'contrast(1)', transform: 'translateY(0) scale(1)' },
644
+ { offset: 1, filter: 'contrast(0.85)', transform: finalTransform },
645
+ ]);
646
+ const shadowAnimation = animation.createAnimation()
647
+ .afterStyles({
648
+ transform: finalTransform,
649
+ })
650
+ .addElement(presentingElRoot.querySelector('.modal-shadow'))
651
+ .keyframes([
652
+ { offset: 0, opacity: '1', transform: 'translateY(0) scale(1)' },
653
+ { offset: 1, opacity: '0', transform: finalTransform },
654
+ ]);
655
+ baseAnimation.addAnimation([presentingAnimation, shadowAnimation]);
656
+ }
657
+ }
628
658
  }
629
659
  else {
630
- baseAnimation.addAnimation(backdropAnimation);
631
- if (!hasCardModal) {
632
- wrapperAnimation.fromTo('opacity', '0', '1');
633
- }
634
- else {
635
- const toPresentingScale = hasCardModal ? SwipeToCloseDefaults.MIN_PRESENTING_SCALE : 1;
636
- const finalTransform = `translateY(-10px) scale(${toPresentingScale})`;
637
- presentingAnimation
638
- .afterStyles({
639
- transform: finalTransform,
640
- })
641
- .addElement(presentingElRoot.querySelector('.modal-wrapper'))
642
- .keyframes([
643
- { offset: 0, filter: 'contrast(1)', transform: 'translateY(0) scale(1)' },
644
- { offset: 1, filter: 'contrast(0.85)', transform: finalTransform },
645
- ]);
646
- const shadowAnimation = animation.createAnimation()
647
- .afterStyles({
648
- transform: finalTransform,
649
- })
650
- .addElement(presentingElRoot.querySelector('.modal-shadow'))
651
- .keyframes([
652
- { offset: 0, opacity: '1', transform: 'translateY(0) scale(1)' },
653
- { offset: 1, opacity: '0', transform: finalTransform },
654
- ]);
655
- baseAnimation.addAnimation([presentingAnimation, shadowAnimation]);
656
- }
660
+ baseAnimation.addAnimation(backdropAnimation);
657
661
  }
658
- }
659
- else {
660
- baseAnimation.addAnimation(backdropAnimation);
661
- }
662
- return baseAnimation;
662
+ return baseAnimation;
663
663
  };
664
664
 
665
665
  const createLeaveAnimation$1 = () => {
666
- const backdropAnimation = animation.createAnimation().fromTo('opacity', 'var(--backdrop-opacity)', 0);
667
- const wrapperAnimation = animation.createAnimation().fromTo('transform', 'translateY(0vh)', 'translateY(100vh)');
668
- return { backdropAnimation, wrapperAnimation };
666
+ const backdropAnimation = animation.createAnimation().fromTo('opacity', 'var(--backdrop-opacity)', 0);
667
+ const wrapperAnimation = animation.createAnimation().fromTo('transform', 'translateY(0vh)', 'translateY(100vh)');
668
+ return { backdropAnimation, wrapperAnimation };
669
669
  };
670
670
  /**
671
671
  * iOS Modal Leave Animation
672
672
  */
673
673
  const iosLeaveAnimation = (baseEl, opts, duration = 500) => {
674
- const { presentingEl, currentBreakpoint } = opts;
675
- const root = helpers.getElementRoot(baseEl);
676
- const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetLeaveAnimation(opts) : createLeaveAnimation$1();
677
- backdropAnimation.addElement(root.querySelector('ion-backdrop'));
678
- wrapperAnimation.addElement(root.querySelectorAll('.modal-wrapper, .modal-shadow')).beforeStyles({ opacity: 1 });
679
- const baseAnimation = animation.createAnimation('leaving-base')
680
- .addElement(baseEl)
681
- .easing('cubic-bezier(0.32,0.72,0,1)')
682
- .duration(duration)
683
- .addAnimation(wrapperAnimation);
684
- const appEl = baseEl.closest('ion-app');
685
- if (presentingEl && appEl) {
686
- const isMobile = window.innerWidth < 768;
687
- const hasCardModal = presentingEl.tagName === 'ION-MODAL' && presentingEl.presentingElement !== undefined;
688
- const presentingElRoot = helpers.getElementRoot(presentingEl);
689
- const presentingAnimation = animation.createAnimation()
690
- .beforeClearStyles(['transform'])
691
- .afterClearStyles(['transform'])
692
- .onFinish((currentStep) => {
693
- // only reset background color if this is the last card-style modal
694
- if (currentStep !== 1) {
695
- return;
696
- }
697
- presentingEl.style.setProperty('overflow', '');
698
- const numModals = Array.from(appEl.querySelectorAll('ion-modal:not(.overlay-hidden)')).filter((m) => m.presentingElement !== undefined).length;
699
- if (numModals <= 1) {
700
- appEl.style.setProperty('background-color', '');
701
- }
702
- });
703
- if (isMobile) {
704
- const transformOffset = !CSS.supports('width', 'max(0px, 1px)') ? '30px' : 'max(30px, var(--ion-safe-area-top))';
705
- const modalTransform = hasCardModal ? '-10px' : transformOffset;
706
- const toPresentingScale = SwipeToCloseDefaults.MIN_PRESENTING_SCALE;
707
- const finalTransform = `translateY(${modalTransform}) scale(${toPresentingScale})`;
708
- presentingAnimation.addElement(presentingEl).keyframes([
709
- { offset: 0, filter: 'contrast(0.85)', transform: finalTransform, borderRadius: '10px 10px 0 0' },
710
- { offset: 1, filter: 'contrast(1)', transform: 'translateY(0px) scale(1)', borderRadius: '0px' },
711
- ]);
712
- baseAnimation.addAnimation(presentingAnimation);
674
+ const { presentingEl, currentBreakpoint } = opts;
675
+ const root = helpers.getElementRoot(baseEl);
676
+ const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetLeaveAnimation(opts) : createLeaveAnimation$1();
677
+ backdropAnimation.addElement(root.querySelector('ion-backdrop'));
678
+ wrapperAnimation.addElement(root.querySelectorAll('.modal-wrapper, .modal-shadow')).beforeStyles({ opacity: 1 });
679
+ const baseAnimation = animation.createAnimation('leaving-base')
680
+ .addElement(baseEl)
681
+ .easing('cubic-bezier(0.32,0.72,0,1)')
682
+ .duration(duration)
683
+ .addAnimation(wrapperAnimation);
684
+ const appEl = baseEl.closest('ion-app');
685
+ if (presentingEl && appEl) {
686
+ const isMobile = window.innerWidth < 768;
687
+ const hasCardModal = presentingEl.tagName === 'ION-MODAL' && presentingEl.presentingElement !== undefined;
688
+ const presentingElRoot = helpers.getElementRoot(presentingEl);
689
+ const presentingAnimation = animation.createAnimation()
690
+ .beforeClearStyles(['transform'])
691
+ .afterClearStyles(['transform'])
692
+ .onFinish((currentStep) => {
693
+ // only reset background color if this is the last card-style modal
694
+ if (currentStep !== 1) {
695
+ return;
696
+ }
697
+ presentingEl.style.setProperty('overflow', '');
698
+ const numModals = Array.from(appEl.querySelectorAll('ion-modal:not(.overlay-hidden)')).filter((m) => m.presentingElement !== undefined).length;
699
+ if (numModals <= 1) {
700
+ appEl.style.setProperty('background-color', '');
701
+ }
702
+ });
703
+ if (isMobile) {
704
+ const transformOffset = !CSS.supports('width', 'max(0px, 1px)') ? '30px' : 'max(30px, var(--ion-safe-area-top))';
705
+ const modalTransform = hasCardModal ? '-10px' : transformOffset;
706
+ const toPresentingScale = SwipeToCloseDefaults.MIN_PRESENTING_SCALE;
707
+ const finalTransform = `translateY(${modalTransform}) scale(${toPresentingScale})`;
708
+ presentingAnimation.addElement(presentingEl).keyframes([
709
+ { offset: 0, filter: 'contrast(0.85)', transform: finalTransform, borderRadius: '10px 10px 0 0' },
710
+ { offset: 1, filter: 'contrast(1)', transform: 'translateY(0px) scale(1)', borderRadius: '0px' },
711
+ ]);
712
+ baseAnimation.addAnimation(presentingAnimation);
713
+ }
714
+ else {
715
+ baseAnimation.addAnimation(backdropAnimation);
716
+ if (!hasCardModal) {
717
+ wrapperAnimation.fromTo('opacity', '1', '0');
718
+ }
719
+ else {
720
+ const toPresentingScale = hasCardModal ? SwipeToCloseDefaults.MIN_PRESENTING_SCALE : 1;
721
+ const finalTransform = `translateY(-10px) scale(${toPresentingScale})`;
722
+ presentingAnimation
723
+ .addElement(presentingElRoot.querySelector('.modal-wrapper'))
724
+ .afterStyles({
725
+ transform: 'translate3d(0, 0, 0)',
726
+ })
727
+ .keyframes([
728
+ { offset: 0, filter: 'contrast(0.85)', transform: finalTransform },
729
+ { offset: 1, filter: 'contrast(1)', transform: 'translateY(0) scale(1)' },
730
+ ]);
731
+ const shadowAnimation = animation.createAnimation()
732
+ .addElement(presentingElRoot.querySelector('.modal-shadow'))
733
+ .afterStyles({
734
+ transform: 'translateY(0) scale(1)',
735
+ })
736
+ .keyframes([
737
+ { offset: 0, opacity: '0', transform: finalTransform },
738
+ { offset: 1, opacity: '1', transform: 'translateY(0) scale(1)' },
739
+ ]);
740
+ baseAnimation.addAnimation([presentingAnimation, shadowAnimation]);
741
+ }
742
+ }
713
743
  }
714
744
  else {
715
- baseAnimation.addAnimation(backdropAnimation);
716
- if (!hasCardModal) {
717
- wrapperAnimation.fromTo('opacity', '1', '0');
718
- }
719
- else {
720
- const toPresentingScale = hasCardModal ? SwipeToCloseDefaults.MIN_PRESENTING_SCALE : 1;
721
- const finalTransform = `translateY(-10px) scale(${toPresentingScale})`;
722
- presentingAnimation
723
- .addElement(presentingElRoot.querySelector('.modal-wrapper'))
724
- .afterStyles({
725
- transform: 'translate3d(0, 0, 0)',
726
- })
727
- .keyframes([
728
- { offset: 0, filter: 'contrast(0.85)', transform: finalTransform },
729
- { offset: 1, filter: 'contrast(1)', transform: 'translateY(0) scale(1)' },
730
- ]);
731
- const shadowAnimation = animation.createAnimation()
732
- .addElement(presentingElRoot.querySelector('.modal-shadow'))
733
- .afterStyles({
734
- transform: 'translateY(0) scale(1)',
735
- })
736
- .keyframes([
737
- { offset: 0, opacity: '0', transform: finalTransform },
738
- { offset: 1, opacity: '1', transform: 'translateY(0) scale(1)' },
739
- ]);
740
- baseAnimation.addAnimation([presentingAnimation, shadowAnimation]);
741
- }
745
+ baseAnimation.addAnimation(backdropAnimation);
742
746
  }
743
- }
744
- else {
745
- baseAnimation.addAnimation(backdropAnimation);
746
- }
747
- return baseAnimation;
747
+ return baseAnimation;
748
748
  };
749
749
 
750
750
  const createEnterAnimation = () => {
751
- const backdropAnimation = animation.createAnimation()
752
- .fromTo('opacity', 0.01, 'var(--backdrop-opacity)')
753
- .beforeStyles({
754
- 'pointer-events': 'none',
755
- })
756
- .afterClearStyles(['pointer-events']);
757
- const wrapperAnimation = animation.createAnimation().keyframes([
758
- { offset: 0, opacity: 0.01, transform: 'translateY(40px)' },
759
- { offset: 1, opacity: 1, transform: `translateY(0px)` },
760
- ]);
761
- return { backdropAnimation, wrapperAnimation };
751
+ const backdropAnimation = animation.createAnimation()
752
+ .fromTo('opacity', 0.01, 'var(--backdrop-opacity)')
753
+ .beforeStyles({
754
+ 'pointer-events': 'none',
755
+ })
756
+ .afterClearStyles(['pointer-events']);
757
+ const wrapperAnimation = animation.createAnimation().keyframes([
758
+ { offset: 0, opacity: 0.01, transform: 'translateY(40px)' },
759
+ { offset: 1, opacity: 1, transform: `translateY(0px)` },
760
+ ]);
761
+ return { backdropAnimation, wrapperAnimation };
762
762
  };
763
763
  /**
764
764
  * Md Modal Enter Animation
765
765
  */
766
766
  const mdEnterAnimation = (baseEl, opts) => {
767
- const { currentBreakpoint } = opts;
768
- const root = helpers.getElementRoot(baseEl);
769
- const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation();
770
- backdropAnimation.addElement(root.querySelector('ion-backdrop'));
771
- wrapperAnimation.addElement(root.querySelector('.modal-wrapper'));
772
- return animation.createAnimation()
773
- .addElement(baseEl)
774
- .easing('cubic-bezier(0.36,0.66,0.04,1)')
775
- .duration(280)
776
- .addAnimation([backdropAnimation, wrapperAnimation]);
767
+ const { currentBreakpoint } = opts;
768
+ const root = helpers.getElementRoot(baseEl);
769
+ const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation();
770
+ backdropAnimation.addElement(root.querySelector('ion-backdrop'));
771
+ wrapperAnimation.addElement(root.querySelector('.modal-wrapper'));
772
+ return animation.createAnimation()
773
+ .addElement(baseEl)
774
+ .easing('cubic-bezier(0.36,0.66,0.04,1)')
775
+ .duration(280)
776
+ .addAnimation([backdropAnimation, wrapperAnimation]);
777
777
  };
778
778
 
779
779
  const createLeaveAnimation = () => {
780
- const backdropAnimation = animation.createAnimation().fromTo('opacity', 'var(--backdrop-opacity)', 0);
781
- const wrapperAnimation = animation.createAnimation().keyframes([
782
- { offset: 0, opacity: 0.99, transform: `translateY(0px)` },
783
- { offset: 1, opacity: 0, transform: 'translateY(40px)' },
784
- ]);
785
- return { backdropAnimation, wrapperAnimation };
780
+ const backdropAnimation = animation.createAnimation().fromTo('opacity', 'var(--backdrop-opacity)', 0);
781
+ const wrapperAnimation = animation.createAnimation().keyframes([
782
+ { offset: 0, opacity: 0.99, transform: `translateY(0px)` },
783
+ { offset: 1, opacity: 0, transform: 'translateY(40px)' },
784
+ ]);
785
+ return { backdropAnimation, wrapperAnimation };
786
786
  };
787
787
  /**
788
788
  * Md Modal Leave Animation
789
789
  */
790
790
  const mdLeaveAnimation = (baseEl, opts) => {
791
- const { currentBreakpoint } = opts;
792
- const root = helpers.getElementRoot(baseEl);
793
- const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetLeaveAnimation(opts) : createLeaveAnimation();
794
- backdropAnimation.addElement(root.querySelector('ion-backdrop'));
795
- wrapperAnimation.addElement(root.querySelector('.modal-wrapper'));
796
- return animation.createAnimation()
797
- .easing('cubic-bezier(0.47,0,0.745,0.715)')
798
- .duration(200)
799
- .addAnimation([backdropAnimation, wrapperAnimation]);
791
+ const { currentBreakpoint } = opts;
792
+ const root = helpers.getElementRoot(baseEl);
793
+ const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetLeaveAnimation(opts) : createLeaveAnimation();
794
+ backdropAnimation.addElement(root.querySelector('ion-backdrop'));
795
+ wrapperAnimation.addElement(root.querySelector('.modal-wrapper'));
796
+ return animation.createAnimation()
797
+ .easing('cubic-bezier(0.47,0,0.745,0.715)')
798
+ .duration(200)
799
+ .addAnimation([backdropAnimation, wrapperAnimation]);
800
800
  };
801
801
 
802
802
  const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, animation, breakpoints = [], getCurrentBreakpoint, onDismiss, onBreakpointChange) => {
803
- // Defaults for the sheet swipe animation
804
- const defaultBackdrop = [
805
- { offset: 0, opacity: 'var(--backdrop-opacity)' },
806
- { offset: 1, opacity: 0.01 },
807
- ];
808
- const customBackdrop = [
809
- { offset: 0, opacity: 'var(--backdrop-opacity)' },
810
- { offset: 1 - backdropBreakpoint, opacity: 0 },
811
- { offset: 1, opacity: 0 },
812
- ];
813
- const SheetDefaults = {
814
- WRAPPER_KEYFRAMES: [
815
- { offset: 0, transform: 'translateY(0%)' },
816
- { offset: 1, transform: 'translateY(100%)' },
817
- ],
818
- BACKDROP_KEYFRAMES: backdropBreakpoint !== 0 ? customBackdrop : defaultBackdrop,
819
- };
820
- const contentEl = baseEl.querySelector('ion-content');
821
- const height = wrapperEl.clientHeight;
822
- let currentBreakpoint = initialBreakpoint;
823
- let offset = 0;
824
- let canDismissBlocksGesture = false;
825
- const canDismissMaxStep = 0.95;
826
- const wrapperAnimation = animation.childAnimations.find((ani) => ani.id === 'wrapperAnimation');
827
- const backdropAnimation = animation.childAnimations.find((ani) => ani.id === 'backdropAnimation');
828
- const maxBreakpoint = breakpoints[breakpoints.length - 1];
829
- const minBreakpoint = breakpoints[0];
830
- const enableBackdrop = () => {
831
- baseEl.style.setProperty('pointer-events', 'auto');
832
- backdropEl.style.setProperty('pointer-events', 'auto');
833
- /**
834
- * When the backdrop is enabled, elements such
835
- * as inputs should not be focusable outside
836
- * the sheet.
837
- */
838
- baseEl.classList.remove('ion-disable-focus-trap');
839
- };
840
- const disableBackdrop = () => {
841
- baseEl.style.setProperty('pointer-events', 'none');
842
- backdropEl.style.setProperty('pointer-events', 'none');
843
- /**
844
- * When the backdrop is enabled, elements such
845
- * as inputs should not be focusable outside
846
- * the sheet.
847
- * Adding this class disables focus trapping
848
- * for the sheet temporarily.
849
- */
850
- baseEl.classList.add('ion-disable-focus-trap');
851
- };
852
- /**
853
- * After the entering animation completes,
854
- * we need to set the animation to go from
855
- * offset 0 to offset 1 so that users can
856
- * swipe in any direction. We then set the
857
- * animation offset to the current breakpoint
858
- * so there is no flickering.
859
- */
860
- if (wrapperAnimation && backdropAnimation) {
861
- wrapperAnimation.keyframes([...SheetDefaults.WRAPPER_KEYFRAMES]);
862
- backdropAnimation.keyframes([...SheetDefaults.BACKDROP_KEYFRAMES]);
863
- animation.progressStart(true, 1 - currentBreakpoint);
864
- /**
865
- * If backdrop is not enabled, then content
866
- * behind modal should be clickable. To do this, we need
867
- * to remove pointer-events from ion-modal as a whole.
868
- * ion-backdrop and .modal-wrapper always have pointer-events: auto
869
- * applied, so the modal content can still be interacted with.
870
- */
871
- const shouldEnableBackdrop = currentBreakpoint > backdropBreakpoint;
872
- if (shouldEnableBackdrop) {
873
- enableBackdrop();
874
- }
875
- else {
876
- disableBackdrop();
877
- }
878
- }
879
- if (contentEl && currentBreakpoint !== maxBreakpoint) {
880
- contentEl.scrollY = false;
881
- }
882
- const canStart = (detail) => {
883
- /**
884
- * If the sheet is fully expanded and
885
- * the user is swiping on the content,
886
- * the gesture should not start to
887
- * allow for scrolling on the content.
888
- */
889
- const content = detail.event.target.closest('ion-content');
890
- currentBreakpoint = getCurrentBreakpoint();
891
- if (currentBreakpoint === 1 && content) {
892
- return false;
893
- }
894
- return true;
895
- };
896
- const onStart = () => {
897
- /**
898
- * If canDismiss is anything other than `true`
899
- * then users should be able to swipe down
900
- * until a threshold is hit. At that point,
901
- * the card modal should not proceed any further.
902
- *
903
- * canDismiss is never fired via gesture if there is
904
- * no 0 breakpoint. However, it can be fired if the user
905
- * presses Esc or the hardware back button.
906
- * TODO (FW-937)
907
- * Remove undefined check
908
- */
909
- canDismissBlocksGesture = baseEl.canDismiss !== undefined && baseEl.canDismiss !== true && minBreakpoint === 0;
910
- /**
911
- * If swiping on the content
912
- * we should disable scrolling otherwise
913
- * the sheet will expand and the content will scroll.
914
- */
915
- if (contentEl) {
916
- contentEl.scrollY = false;
917
- }
918
- helpers.raf(() => {
919
- /**
920
- * Dismisses the open keyboard when the sheet drag gesture is started.
921
- * Sets the focus onto the modal element.
922
- */
923
- baseEl.focus();
924
- });
925
- animation.progressStart(true, 1 - currentBreakpoint);
926
- };
927
- const onMove = (detail) => {
928
- /**
929
- * Given the change in gesture position on the Y axis,
930
- * compute where the offset of the animation should be
931
- * relative to where the user dragged.
932
- */
933
- const initialStep = 1 - currentBreakpoint;
934
- const secondToLastBreakpoint = breakpoints.length > 1 ? 1 - breakpoints[1] : undefined;
935
- const step = initialStep + detail.deltaY / height;
936
- const isAttemptingDismissWithCanDismiss = secondToLastBreakpoint !== undefined && step >= secondToLastBreakpoint && canDismissBlocksGesture;
937
- /**
938
- * If we are blocking the gesture from dismissing,
939
- * set the max step value so that the sheet cannot be
940
- * completely hidden.
941
- */
942
- const maxStep = isAttemptingDismissWithCanDismiss ? canDismissMaxStep : 0.9999;
943
- /**
944
- * If we are blocking the gesture from
945
- * dismissing, calculate the spring modifier value
946
- * this will be added to the starting breakpoint
947
- * value to give the gesture a spring-like feeling.
948
- * Note that when isAttemptingDismissWithCanDismiss is true,
949
- * the modifier is always added to the breakpoint that
950
- * appears right after the 0 breakpoint.
951
- *
952
- * Note that this modifier is essentially the progression
953
- * between secondToLastBreakpoint and maxStep which is
954
- * why we subtract secondToLastBreakpoint. This lets us get
955
- * the result as a value from 0 to 1.
956
- */
957
- const processedStep = isAttemptingDismissWithCanDismiss && secondToLastBreakpoint !== undefined
958
- ? secondToLastBreakpoint +
959
- calculateSpringStep((step - secondToLastBreakpoint) / (maxStep - secondToLastBreakpoint))
960
- : step;
961
- offset = helpers.clamp(0.0001, processedStep, maxStep);
962
- animation.progressStep(offset);
963
- };
964
- const onEnd = (detail) => {
965
- /**
966
- * When the gesture releases, we need to determine
967
- * the closest breakpoint to snap to.
968
- */
969
- const velocity = detail.velocityY;
970
- const threshold = (detail.deltaY + velocity * 350) / height;
971
- const diff = currentBreakpoint - threshold;
972
- const closest = breakpoints.reduce((a, b) => {
973
- return Math.abs(b - diff) < Math.abs(a - diff) ? b : a;
974
- });
975
- moveSheetToBreakpoint({
976
- breakpoint: closest,
977
- breakpointOffset: offset,
978
- canDismiss: canDismissBlocksGesture,
979
- /**
980
- * The swipe is user-driven, so we should
981
- * always animate when the gesture ends.
982
- */
983
- animated: true,
984
- });
985
- };
986
- const moveSheetToBreakpoint = (options) => {
987
- const { breakpoint, canDismiss, breakpointOffset, animated } = options;
988
- /**
989
- * canDismiss should only prevent snapping
990
- * when users are trying to dismiss. If canDismiss
991
- * is present but the user is trying to swipe upwards,
992
- * we should allow that to happen,
993
- */
994
- const shouldPreventDismiss = canDismiss && breakpoint === 0;
995
- const snapToBreakpoint = shouldPreventDismiss ? currentBreakpoint : breakpoint;
996
- const shouldRemainOpen = snapToBreakpoint !== 0;
997
- currentBreakpoint = 0;
803
+ // Defaults for the sheet swipe animation
804
+ const defaultBackdrop = [
805
+ { offset: 0, opacity: 'var(--backdrop-opacity)' },
806
+ { offset: 1, opacity: 0.01 },
807
+ ];
808
+ const customBackdrop = [
809
+ { offset: 0, opacity: 'var(--backdrop-opacity)' },
810
+ { offset: 1 - backdropBreakpoint, opacity: 0 },
811
+ { offset: 1, opacity: 0 },
812
+ ];
813
+ const SheetDefaults = {
814
+ WRAPPER_KEYFRAMES: [
815
+ { offset: 0, transform: 'translateY(0%)' },
816
+ { offset: 1, transform: 'translateY(100%)' },
817
+ ],
818
+ BACKDROP_KEYFRAMES: backdropBreakpoint !== 0 ? customBackdrop : defaultBackdrop,
819
+ };
820
+ const contentEl = baseEl.querySelector('ion-content');
821
+ const height = wrapperEl.clientHeight;
822
+ let currentBreakpoint = initialBreakpoint;
823
+ let offset = 0;
824
+ let canDismissBlocksGesture = false;
825
+ const canDismissMaxStep = 0.95;
826
+ const wrapperAnimation = animation.childAnimations.find((ani) => ani.id === 'wrapperAnimation');
827
+ const backdropAnimation = animation.childAnimations.find((ani) => ani.id === 'backdropAnimation');
828
+ const maxBreakpoint = breakpoints[breakpoints.length - 1];
829
+ const minBreakpoint = breakpoints[0];
830
+ const enableBackdrop = () => {
831
+ baseEl.style.setProperty('pointer-events', 'auto');
832
+ backdropEl.style.setProperty('pointer-events', 'auto');
833
+ /**
834
+ * When the backdrop is enabled, elements such
835
+ * as inputs should not be focusable outside
836
+ * the sheet.
837
+ */
838
+ baseEl.classList.remove('ion-disable-focus-trap');
839
+ };
840
+ const disableBackdrop = () => {
841
+ baseEl.style.setProperty('pointer-events', 'none');
842
+ backdropEl.style.setProperty('pointer-events', 'none');
843
+ /**
844
+ * When the backdrop is enabled, elements such
845
+ * as inputs should not be focusable outside
846
+ * the sheet.
847
+ * Adding this class disables focus trapping
848
+ * for the sheet temporarily.
849
+ */
850
+ baseEl.classList.add('ion-disable-focus-trap');
851
+ };
998
852
  /**
999
- * Update the animation so that it plays from
1000
- * the last offset to the closest snap point.
853
+ * After the entering animation completes,
854
+ * we need to set the animation to go from
855
+ * offset 0 to offset 1 so that users can
856
+ * swipe in any direction. We then set the
857
+ * animation offset to the current breakpoint
858
+ * so there is no flickering.
1001
859
  */
1002
860
  if (wrapperAnimation && backdropAnimation) {
1003
- wrapperAnimation.keyframes([
1004
- { offset: 0, transform: `translateY(${breakpointOffset * 100}%)` },
1005
- { offset: 1, transform: `translateY(${(1 - snapToBreakpoint) * 100}%)` },
1006
- ]);
1007
- backdropAnimation.keyframes([
1008
- {
1009
- offset: 0,
1010
- opacity: `calc(var(--backdrop-opacity) * ${getBackdropValueForSheet(1 - breakpointOffset, backdropBreakpoint)})`,
1011
- },
1012
- {
1013
- offset: 1,
1014
- opacity: `calc(var(--backdrop-opacity) * ${getBackdropValueForSheet(snapToBreakpoint, backdropBreakpoint)})`,
1015
- },
1016
- ]);
1017
- animation.progressStep(0);
1018
- }
1019
- /**
1020
- * Gesture should remain disabled until the
1021
- * snapping animation completes.
1022
- */
1023
- gesture.enable(false);
1024
- if (shouldPreventDismiss) {
1025
- handleCanDismiss(baseEl, animation);
861
+ wrapperAnimation.keyframes([...SheetDefaults.WRAPPER_KEYFRAMES]);
862
+ backdropAnimation.keyframes([...SheetDefaults.BACKDROP_KEYFRAMES]);
863
+ animation.progressStart(true, 1 - currentBreakpoint);
864
+ /**
865
+ * If backdrop is not enabled, then content
866
+ * behind modal should be clickable. To do this, we need
867
+ * to remove pointer-events from ion-modal as a whole.
868
+ * ion-backdrop and .modal-wrapper always have pointer-events: auto
869
+ * applied, so the modal content can still be interacted with.
870
+ */
871
+ const shouldEnableBackdrop = currentBreakpoint > backdropBreakpoint;
872
+ if (shouldEnableBackdrop) {
873
+ enableBackdrop();
874
+ }
875
+ else {
876
+ disableBackdrop();
877
+ }
1026
878
  }
1027
- else if (!shouldRemainOpen) {
1028
- onDismiss();
879
+ if (contentEl && currentBreakpoint !== maxBreakpoint) {
880
+ contentEl.scrollY = false;
1029
881
  }
1030
- return new Promise((resolve) => {
1031
- animation
1032
- .onFinish(() => {
1033
- if (shouldRemainOpen) {
1034
- /**
1035
- * Once the snapping animation completes,
1036
- * we need to reset the animation to go
1037
- * from 0 to 1 so users can swipe in any direction.
1038
- * We then set the animation offset to the current
1039
- * breakpoint so that it starts at the snapped position.
1040
- */
1041
- if (wrapperAnimation && backdropAnimation) {
1042
- helpers.raf(() => {
1043
- wrapperAnimation.keyframes([...SheetDefaults.WRAPPER_KEYFRAMES]);
1044
- backdropAnimation.keyframes([...SheetDefaults.BACKDROP_KEYFRAMES]);
1045
- animation.progressStart(true, 1 - snapToBreakpoint);
1046
- currentBreakpoint = snapToBreakpoint;
1047
- onBreakpointChange(currentBreakpoint);
1048
- /**
1049
- * If the sheet is fully expanded, we can safely
1050
- * enable scrolling again.
1051
- */
1052
- if (contentEl && currentBreakpoint === breakpoints[breakpoints.length - 1]) {
1053
- contentEl.scrollY = true;
1054
- }
1055
- /**
1056
- * Backdrop should become enabled
1057
- * after the backdropBreakpoint value
1058
- */
1059
- const shouldEnableBackdrop = currentBreakpoint > backdropBreakpoint;
1060
- if (shouldEnableBackdrop) {
1061
- enableBackdrop();
1062
- }
1063
- else {
1064
- disableBackdrop();
1065
- }
1066
- gesture.enable(true);
1067
- resolve();
1068
- });
1069
- }
1070
- else {
1071
- gesture.enable(true);
1072
- resolve();
1073
- }
882
+ const canStart = (detail) => {
883
+ /**
884
+ * If the sheet is fully expanded and
885
+ * the user is swiping on the content,
886
+ * the gesture should not start to
887
+ * allow for scrolling on the content.
888
+ */
889
+ const content = detail.event.target.closest('ion-content');
890
+ currentBreakpoint = getCurrentBreakpoint();
891
+ if (currentBreakpoint === 1 && content) {
892
+ return false;
1074
893
  }
1075
- else {
1076
- resolve();
894
+ return true;
895
+ };
896
+ const onStart = () => {
897
+ /**
898
+ * If canDismiss is anything other than `true`
899
+ * then users should be able to swipe down
900
+ * until a threshold is hit. At that point,
901
+ * the card modal should not proceed any further.
902
+ *
903
+ * canDismiss is never fired via gesture if there is
904
+ * no 0 breakpoint. However, it can be fired if the user
905
+ * presses Esc or the hardware back button.
906
+ * TODO (FW-937)
907
+ * Remove undefined check
908
+ */
909
+ canDismissBlocksGesture = baseEl.canDismiss !== undefined && baseEl.canDismiss !== true && minBreakpoint === 0;
910
+ /**
911
+ * If swiping on the content
912
+ * we should disable scrolling otherwise
913
+ * the sheet will expand and the content will scroll.
914
+ */
915
+ if (contentEl) {
916
+ contentEl.scrollY = false;
1077
917
  }
918
+ helpers.raf(() => {
919
+ /**
920
+ * Dismisses the open keyboard when the sheet drag gesture is started.
921
+ * Sets the focus onto the modal element.
922
+ */
923
+ baseEl.focus();
924
+ });
925
+ animation.progressStart(true, 1 - currentBreakpoint);
926
+ };
927
+ const onMove = (detail) => {
1078
928
  /**
1079
- * This must be a one time callback
1080
- * otherwise a new callback will
1081
- * be added every time onEnd runs.
929
+ * Given the change in gesture position on the Y axis,
930
+ * compute where the offset of the animation should be
931
+ * relative to where the user dragged.
1082
932
  */
1083
- }, { oneTimeCallback: true })
1084
- .progressEnd(1, 0, animated ? 500 : 0);
1085
- });
1086
- };
1087
- const gesture = index$1.createGesture({
1088
- el: wrapperEl,
1089
- gestureName: 'modalSheet',
1090
- gesturePriority: 40,
1091
- direction: 'y',
1092
- threshold: 10,
1093
- canStart,
1094
- onStart,
1095
- onMove,
1096
- onEnd,
1097
- });
1098
- return {
1099
- gesture,
1100
- moveSheetToBreakpoint,
1101
- };
1102
- };
1103
-
1104
- 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, #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-top-left-radius:var(--border-radius);border-top-right-radius:var(--border-radius);border-bottom-right-radius:0;border-bottom-left-radius:0}:host-context([dir=rtl]):host(.modal-card) .modal-wrapper,:host-context([dir=rtl]).modal-card .modal-wrapper{border-top-left-radius:var(--border-radius);border-top-right-radius:var(--border-radius);border-bottom-right-radius:0;border-bottom-left-radius:0}@supports selector(:dir(rtl)){:host(.modal-card:dir(rtl)) .modal-wrapper{border-top-left-radius:var(--border-radius);border-top-right-radius:var(--border-radius);border-bottom-right-radius:0;border-bottom-left-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-top-left-radius:var(--border-radius);border-top-right-radius:var(--border-radius);border-bottom-right-radius:0;border-bottom-left-radius:0}:host-context([dir=rtl]):host(.modal-sheet) .modal-wrapper,:host-context([dir=rtl]).modal-sheet .modal-wrapper{border-top-left-radius:var(--border-radius);border-top-right-radius:var(--border-radius);border-bottom-right-radius:0;border-bottom-left-radius:0}@supports selector(:dir(rtl)){:host(.modal-sheet:dir(rtl)) .modal-wrapper{border-top-left-radius:var(--border-radius);border-top-right-radius:var(--border-radius);border-bottom-right-radius:0;border-bottom-left-radius:0}}";
1105
-
1106
- 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, #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}";
1107
-
1108
- const Modal = class {
1109
- constructor(hostRef) {
1110
- index$3.registerInstance(this, hostRef);
1111
- this.didPresent = index$3.createEvent(this, "ionModalDidPresent", 7);
1112
- this.willPresent = index$3.createEvent(this, "ionModalWillPresent", 7);
1113
- this.willDismiss = index$3.createEvent(this, "ionModalWillDismiss", 7);
1114
- this.didDismiss = index$3.createEvent(this, "ionModalDidDismiss", 7);
1115
- this.ionBreakpointDidChange = index$3.createEvent(this, "ionBreakpointDidChange", 7);
1116
- this.didPresentShorthand = index$3.createEvent(this, "didPresent", 7);
1117
- this.willPresentShorthand = index$3.createEvent(this, "willPresent", 7);
1118
- this.willDismissShorthand = index$3.createEvent(this, "willDismiss", 7);
1119
- this.didDismissShorthand = index$3.createEvent(this, "didDismiss", 7);
1120
- this.ionMount = index$3.createEvent(this, "ionMount", 7);
1121
- this.lockController = lockController.createLockController();
1122
- this.triggerController = overlays.createTriggerController();
1123
- this.coreDelegate = frameworkDelegate.CoreDelegate();
1124
- this.isSheetModal = false;
1125
- this.inheritedAttributes = {};
1126
- this.inline = false;
1127
- // Whether or not modal is being dismissed via gesture
1128
- this.gestureAnimationDismissing = false;
1129
- this.onHandleClick = () => {
1130
- const { sheetTransition, handleBehavior } = this;
1131
- if (handleBehavior !== 'cycle' || sheetTransition !== undefined) {
933
+ const initialStep = 1 - currentBreakpoint;
934
+ const secondToLastBreakpoint = breakpoints.length > 1 ? 1 - breakpoints[1] : undefined;
935
+ const step = initialStep + detail.deltaY / height;
936
+ const isAttemptingDismissWithCanDismiss = secondToLastBreakpoint !== undefined && step >= secondToLastBreakpoint && canDismissBlocksGesture;
1132
937
  /**
1133
- * The sheet modal should not advance to the next breakpoint
1134
- * if the handle behavior is not `cycle` or if the handle
1135
- * is clicked while the sheet is moving to a breakpoint.
938
+ * If we are blocking the gesture from dismissing,
939
+ * set the max step value so that the sheet cannot be
940
+ * completely hidden.
1136
941
  */
1137
- return;
1138
- }
1139
- this.moveToNextBreakpoint();
942
+ const maxStep = isAttemptingDismissWithCanDismiss ? canDismissMaxStep : 0.9999;
943
+ /**
944
+ * If we are blocking the gesture from
945
+ * dismissing, calculate the spring modifier value
946
+ * this will be added to the starting breakpoint
947
+ * value to give the gesture a spring-like feeling.
948
+ * Note that when isAttemptingDismissWithCanDismiss is true,
949
+ * the modifier is always added to the breakpoint that
950
+ * appears right after the 0 breakpoint.
951
+ *
952
+ * Note that this modifier is essentially the progression
953
+ * between secondToLastBreakpoint and maxStep which is
954
+ * why we subtract secondToLastBreakpoint. This lets us get
955
+ * the result as a value from 0 to 1.
956
+ */
957
+ const processedStep = isAttemptingDismissWithCanDismiss && secondToLastBreakpoint !== undefined
958
+ ? secondToLastBreakpoint +
959
+ calculateSpringStep((step - secondToLastBreakpoint) / (maxStep - secondToLastBreakpoint))
960
+ : step;
961
+ offset = helpers.clamp(0.0001, processedStep, maxStep);
962
+ animation.progressStep(offset);
1140
963
  };
1141
- this.onBackdropTap = () => {
1142
- const { sheetTransition } = this;
1143
- if (sheetTransition !== undefined) {
964
+ const onEnd = (detail) => {
1144
965
  /**
1145
- * When the handle is double clicked at the largest breakpoint,
1146
- * it will start to move to the first breakpoint. While transitioning,
1147
- * the backdrop will often receive the second click. We prevent the
1148
- * backdrop from dismissing the modal while moving between breakpoints.
966
+ * When the gesture releases, we need to determine
967
+ * the closest breakpoint to snap to.
1149
968
  */
1150
- return;
1151
- }
1152
- this.dismiss(undefined, overlays.BACKDROP);
969
+ const velocity = detail.velocityY;
970
+ const threshold = (detail.deltaY + velocity * 350) / height;
971
+ const diff = currentBreakpoint - threshold;
972
+ const closest = breakpoints.reduce((a, b) => {
973
+ return Math.abs(b - diff) < Math.abs(a - diff) ? b : a;
974
+ });
975
+ moveSheetToBreakpoint({
976
+ breakpoint: closest,
977
+ breakpointOffset: offset,
978
+ canDismiss: canDismissBlocksGesture,
979
+ /**
980
+ * The swipe is user-driven, so we should
981
+ * always animate when the gesture ends.
982
+ */
983
+ animated: true,
984
+ });
1153
985
  };
1154
- this.onLifecycle = (modalEvent) => {
1155
- const el = this.usersElement;
1156
- const name = LIFECYCLE_MAP[modalEvent.type];
1157
- if (el && name) {
1158
- const ev = new CustomEvent(name, {
1159
- bubbles: false,
1160
- cancelable: false,
1161
- detail: modalEvent.detail,
986
+ const moveSheetToBreakpoint = (options) => {
987
+ const { breakpoint, canDismiss, breakpointOffset, animated } = options;
988
+ /**
989
+ * canDismiss should only prevent snapping
990
+ * when users are trying to dismiss. If canDismiss
991
+ * is present but the user is trying to swipe upwards,
992
+ * we should allow that to happen,
993
+ */
994
+ const shouldPreventDismiss = canDismiss && breakpoint === 0;
995
+ const snapToBreakpoint = shouldPreventDismiss ? currentBreakpoint : breakpoint;
996
+ const shouldRemainOpen = snapToBreakpoint !== 0;
997
+ currentBreakpoint = 0;
998
+ /**
999
+ * Update the animation so that it plays from
1000
+ * the last offset to the closest snap point.
1001
+ */
1002
+ if (wrapperAnimation && backdropAnimation) {
1003
+ wrapperAnimation.keyframes([
1004
+ { offset: 0, transform: `translateY(${breakpointOffset * 100}%)` },
1005
+ { offset: 1, transform: `translateY(${(1 - snapToBreakpoint) * 100}%)` },
1006
+ ]);
1007
+ backdropAnimation.keyframes([
1008
+ {
1009
+ offset: 0,
1010
+ opacity: `calc(var(--backdrop-opacity) * ${getBackdropValueForSheet(1 - breakpointOffset, backdropBreakpoint)})`,
1011
+ },
1012
+ {
1013
+ offset: 1,
1014
+ opacity: `calc(var(--backdrop-opacity) * ${getBackdropValueForSheet(snapToBreakpoint, backdropBreakpoint)})`,
1015
+ },
1016
+ ]);
1017
+ animation.progressStep(0);
1018
+ }
1019
+ /**
1020
+ * Gesture should remain disabled until the
1021
+ * snapping animation completes.
1022
+ */
1023
+ gesture.enable(false);
1024
+ if (shouldPreventDismiss) {
1025
+ handleCanDismiss(baseEl, animation);
1026
+ }
1027
+ else if (!shouldRemainOpen) {
1028
+ onDismiss();
1029
+ }
1030
+ return new Promise((resolve) => {
1031
+ animation
1032
+ .onFinish(() => {
1033
+ if (shouldRemainOpen) {
1034
+ /**
1035
+ * Once the snapping animation completes,
1036
+ * we need to reset the animation to go
1037
+ * from 0 to 1 so users can swipe in any direction.
1038
+ * We then set the animation offset to the current
1039
+ * breakpoint so that it starts at the snapped position.
1040
+ */
1041
+ if (wrapperAnimation && backdropAnimation) {
1042
+ helpers.raf(() => {
1043
+ wrapperAnimation.keyframes([...SheetDefaults.WRAPPER_KEYFRAMES]);
1044
+ backdropAnimation.keyframes([...SheetDefaults.BACKDROP_KEYFRAMES]);
1045
+ animation.progressStart(true, 1 - snapToBreakpoint);
1046
+ currentBreakpoint = snapToBreakpoint;
1047
+ onBreakpointChange(currentBreakpoint);
1048
+ /**
1049
+ * If the sheet is fully expanded, we can safely
1050
+ * enable scrolling again.
1051
+ */
1052
+ if (contentEl && currentBreakpoint === breakpoints[breakpoints.length - 1]) {
1053
+ contentEl.scrollY = true;
1054
+ }
1055
+ /**
1056
+ * Backdrop should become enabled
1057
+ * after the backdropBreakpoint value
1058
+ */
1059
+ const shouldEnableBackdrop = currentBreakpoint > backdropBreakpoint;
1060
+ if (shouldEnableBackdrop) {
1061
+ enableBackdrop();
1062
+ }
1063
+ else {
1064
+ disableBackdrop();
1065
+ }
1066
+ gesture.enable(true);
1067
+ resolve();
1068
+ });
1069
+ }
1070
+ else {
1071
+ gesture.enable(true);
1072
+ resolve();
1073
+ }
1074
+ }
1075
+ else {
1076
+ resolve();
1077
+ }
1078
+ /**
1079
+ * This must be a one time callback
1080
+ * otherwise a new callback will
1081
+ * be added every time onEnd runs.
1082
+ */
1083
+ }, { oneTimeCallback: true })
1084
+ .progressEnd(1, 0, animated ? 500 : 0);
1162
1085
  });
1163
- el.dispatchEvent(ev);
1164
- }
1165
1086
  };
1166
- this.presented = false;
1167
- this.hasController = false;
1168
- this.overlayIndex = undefined;
1169
- this.delegate = undefined;
1170
- this.keyboardClose = true;
1171
- this.enterAnimation = undefined;
1172
- this.leaveAnimation = undefined;
1173
- this.breakpoints = undefined;
1174
- this.initialBreakpoint = undefined;
1175
- this.backdropBreakpoint = 0;
1176
- this.handle = undefined;
1177
- this.handleBehavior = 'none';
1178
- this.component = undefined;
1179
- this.componentProps = undefined;
1180
- this.cssClass = undefined;
1181
- this.backdropDismiss = true;
1182
- this.showBackdrop = true;
1183
- this.animated = true;
1184
- this.presentingElement = undefined;
1185
- this.htmlAttributes = undefined;
1186
- this.isOpen = false;
1187
- this.trigger = undefined;
1188
- this.keepContentsMounted = false;
1189
- this.canDismiss = true;
1190
- }
1191
- onIsOpenChange(newValue, oldValue) {
1192
- if (newValue === true && oldValue === false) {
1193
- this.present();
1087
+ const gesture = index$1.createGesture({
1088
+ el: wrapperEl,
1089
+ gestureName: 'modalSheet',
1090
+ gesturePriority: 40,
1091
+ direction: 'y',
1092
+ threshold: 10,
1093
+ canStart,
1094
+ onStart,
1095
+ onMove,
1096
+ onEnd,
1097
+ });
1098
+ return {
1099
+ gesture,
1100
+ moveSheetToBreakpoint,
1101
+ };
1102
+ };
1103
+
1104
+ 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, #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-top-left-radius:var(--border-radius);border-top-right-radius:var(--border-radius);border-bottom-right-radius:0;border-bottom-left-radius:0}:host-context([dir=rtl]):host(.modal-card) .modal-wrapper,:host-context([dir=rtl]).modal-card .modal-wrapper{border-top-left-radius:var(--border-radius);border-top-right-radius:var(--border-radius);border-bottom-right-radius:0;border-bottom-left-radius:0}@supports selector(:dir(rtl)){:host(.modal-card:dir(rtl)) .modal-wrapper{border-top-left-radius:var(--border-radius);border-top-right-radius:var(--border-radius);border-bottom-right-radius:0;border-bottom-left-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-top-left-radius:var(--border-radius);border-top-right-radius:var(--border-radius);border-bottom-right-radius:0;border-bottom-left-radius:0}:host-context([dir=rtl]):host(.modal-sheet) .modal-wrapper,:host-context([dir=rtl]).modal-sheet .modal-wrapper{border-top-left-radius:var(--border-radius);border-top-right-radius:var(--border-radius);border-bottom-right-radius:0;border-bottom-left-radius:0}@supports selector(:dir(rtl)){:host(.modal-sheet:dir(rtl)) .modal-wrapper{border-top-left-radius:var(--border-radius);border-top-right-radius:var(--border-radius);border-bottom-right-radius:0;border-bottom-left-radius:0}}";
1105
+
1106
+ 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, #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}";
1107
+
1108
+ const Modal = class {
1109
+ constructor(hostRef) {
1110
+ index$3.registerInstance(this, hostRef);
1111
+ this.didPresent = index$3.createEvent(this, "ionModalDidPresent", 7);
1112
+ this.willPresent = index$3.createEvent(this, "ionModalWillPresent", 7);
1113
+ this.willDismiss = index$3.createEvent(this, "ionModalWillDismiss", 7);
1114
+ this.didDismiss = index$3.createEvent(this, "ionModalDidDismiss", 7);
1115
+ this.ionBreakpointDidChange = index$3.createEvent(this, "ionBreakpointDidChange", 7);
1116
+ this.didPresentShorthand = index$3.createEvent(this, "didPresent", 7);
1117
+ this.willPresentShorthand = index$3.createEvent(this, "willPresent", 7);
1118
+ this.willDismissShorthand = index$3.createEvent(this, "willDismiss", 7);
1119
+ this.didDismissShorthand = index$3.createEvent(this, "didDismiss", 7);
1120
+ this.ionMount = index$3.createEvent(this, "ionMount", 7);
1121
+ this.lockController = lockController.createLockController();
1122
+ this.triggerController = overlays.createTriggerController();
1123
+ this.coreDelegate = frameworkDelegate.CoreDelegate();
1124
+ this.isSheetModal = false;
1125
+ this.inheritedAttributes = {};
1126
+ this.inline = false;
1127
+ // Whether or not modal is being dismissed via gesture
1128
+ this.gestureAnimationDismissing = false;
1129
+ this.onHandleClick = () => {
1130
+ const { sheetTransition, handleBehavior } = this;
1131
+ if (handleBehavior !== 'cycle' || sheetTransition !== undefined) {
1132
+ /**
1133
+ * The sheet modal should not advance to the next breakpoint
1134
+ * if the handle behavior is not `cycle` or if the handle
1135
+ * is clicked while the sheet is moving to a breakpoint.
1136
+ */
1137
+ return;
1138
+ }
1139
+ this.moveToNextBreakpoint();
1140
+ };
1141
+ this.onBackdropTap = () => {
1142
+ const { sheetTransition } = this;
1143
+ if (sheetTransition !== undefined) {
1144
+ /**
1145
+ * When the handle is double clicked at the largest breakpoint,
1146
+ * it will start to move to the first breakpoint. While transitioning,
1147
+ * the backdrop will often receive the second click. We prevent the
1148
+ * backdrop from dismissing the modal while moving between breakpoints.
1149
+ */
1150
+ return;
1151
+ }
1152
+ this.dismiss(undefined, overlays.BACKDROP);
1153
+ };
1154
+ this.onLifecycle = (modalEvent) => {
1155
+ const el = this.usersElement;
1156
+ const name = LIFECYCLE_MAP[modalEvent.type];
1157
+ if (el && name) {
1158
+ const ev = new CustomEvent(name, {
1159
+ bubbles: false,
1160
+ cancelable: false,
1161
+ detail: modalEvent.detail,
1162
+ });
1163
+ el.dispatchEvent(ev);
1164
+ }
1165
+ };
1166
+ this.presented = false;
1167
+ this.hasController = false;
1168
+ this.overlayIndex = undefined;
1169
+ this.delegate = undefined;
1170
+ this.keyboardClose = true;
1171
+ this.enterAnimation = undefined;
1172
+ this.leaveAnimation = undefined;
1173
+ this.breakpoints = undefined;
1174
+ this.initialBreakpoint = undefined;
1175
+ this.backdropBreakpoint = 0;
1176
+ this.handle = undefined;
1177
+ this.handleBehavior = 'none';
1178
+ this.component = undefined;
1179
+ this.componentProps = undefined;
1180
+ this.cssClass = undefined;
1181
+ this.backdropDismiss = true;
1182
+ this.showBackdrop = true;
1183
+ this.animated = true;
1184
+ this.presentingElement = undefined;
1185
+ this.htmlAttributes = undefined;
1186
+ this.isOpen = false;
1187
+ this.trigger = undefined;
1188
+ this.keepContentsMounted = false;
1189
+ this.canDismiss = true;
1194
1190
  }
1195
- else if (newValue === false && oldValue === true) {
1196
- this.dismiss();
1191
+ onIsOpenChange(newValue, oldValue) {
1192
+ if (newValue === true && oldValue === false) {
1193
+ this.present();
1194
+ }
1195
+ else if (newValue === false && oldValue === true) {
1196
+ this.dismiss();
1197
+ }
1197
1198
  }
1198
- }
1199
- triggerChanged() {
1200
- const { trigger, el, triggerController } = this;
1201
- if (trigger) {
1202
- triggerController.addClickListener(el, trigger);
1199
+ triggerChanged() {
1200
+ const { trigger, el, triggerController } = this;
1201
+ if (trigger) {
1202
+ triggerController.addClickListener(el, trigger);
1203
+ }
1203
1204
  }
1204
- }
1205
- breakpointsChanged(breakpoints) {
1206
- if (breakpoints !== undefined) {
1207
- this.sortedBreakpoints = breakpoints.sort((a, b) => a - b);
1205
+ breakpointsChanged(breakpoints) {
1206
+ if (breakpoints !== undefined) {
1207
+ this.sortedBreakpoints = breakpoints.sort((a, b) => a - b);
1208
+ }
1208
1209
  }
1209
- }
1210
- connectedCallback() {
1211
- const { el } = this;
1212
- overlays.prepareOverlay(el);
1213
- this.triggerChanged();
1214
- }
1215
- disconnectedCallback() {
1216
- this.triggerController.removeClickListener();
1217
- }
1218
- componentWillLoad() {
1219
- const { breakpoints, initialBreakpoint, el } = this;
1220
- const isSheetModal = (this.isSheetModal = breakpoints !== undefined && initialBreakpoint !== undefined);
1221
- this.inheritedAttributes = helpers.inheritAttributes(el, ['aria-label', 'role']);
1222
- if (isSheetModal) {
1223
- this.currentBreakpoint = this.initialBreakpoint;
1210
+ connectedCallback() {
1211
+ const { el } = this;
1212
+ overlays.prepareOverlay(el);
1213
+ this.triggerChanged();
1224
1214
  }
1225
- if (breakpoints !== undefined && initialBreakpoint !== undefined && !breakpoints.includes(initialBreakpoint)) {
1226
- index$4.printIonWarning('Your breakpoints array must include the initialBreakpoint value.');
1215
+ disconnectedCallback() {
1216
+ this.triggerController.removeClickListener();
1227
1217
  }
1228
- overlays.setOverlayId(el);
1229
- }
1230
- componentDidLoad() {
1231
- /**
1232
- * If modal was rendered with isOpen="true"
1233
- * then we should open modal immediately.
1234
- */
1235
- if (this.isOpen === true) {
1236
- helpers.raf(() => this.present());
1218
+ componentWillLoad() {
1219
+ const { breakpoints, initialBreakpoint, el } = this;
1220
+ const isSheetModal = (this.isSheetModal = breakpoints !== undefined && initialBreakpoint !== undefined);
1221
+ this.inheritedAttributes = helpers.inheritAttributes(el, ['aria-label', 'role']);
1222
+ if (isSheetModal) {
1223
+ this.currentBreakpoint = this.initialBreakpoint;
1224
+ }
1225
+ if (breakpoints !== undefined && initialBreakpoint !== undefined && !breakpoints.includes(initialBreakpoint)) {
1226
+ index$4.printIonWarning('Your breakpoints array must include the initialBreakpoint value.');
1227
+ }
1228
+ overlays.setOverlayId(el);
1237
1229
  }
1238
- this.breakpointsChanged(this.breakpoints);
1239
- }
1240
- /**
1241
- * Determines whether or not an overlay
1242
- * is being used inline or via a controller/JS
1243
- * and returns the correct delegate.
1244
- * By default, subsequent calls to getDelegate
1245
- * will use a cached version of the delegate.
1246
- * This is useful for calling dismiss after
1247
- * present so that the correct delegate is given.
1248
- */
1249
- getDelegate(force = false) {
1250
- if (this.workingDelegate && !force) {
1251
- return {
1252
- delegate: this.workingDelegate,
1253
- inline: this.inline,
1254
- };
1230
+ componentDidLoad() {
1231
+ /**
1232
+ * If modal was rendered with isOpen="true"
1233
+ * then we should open modal immediately.
1234
+ */
1235
+ if (this.isOpen === true) {
1236
+ helpers.raf(() => this.present());
1237
+ }
1238
+ this.breakpointsChanged(this.breakpoints);
1239
+ /**
1240
+ * When binding values in frameworks such as Angular
1241
+ * it is possible for the value to be set after the Web Component
1242
+ * initializes but before the value watcher is set up in Stencil.
1243
+ * As a result, the watcher callback may not be fired.
1244
+ * We work around this by manually calling the watcher
1245
+ * callback when the component has loaded and the watcher
1246
+ * is configured.
1247
+ */
1248
+ this.triggerChanged();
1255
1249
  }
1256
1250
  /**
1257
- * If using overlay inline
1258
- * we potentially need to use the coreDelegate
1259
- * so that this works in vanilla JS apps.
1260
- * If a developer has presented this component
1261
- * via a controller, then we can assume
1262
- * the component is already in the
1263
- * correct place.
1251
+ * Determines whether or not an overlay
1252
+ * is being used inline or via a controller/JS
1253
+ * and returns the correct delegate.
1254
+ * By default, subsequent calls to getDelegate
1255
+ * will use a cached version of the delegate.
1256
+ * This is useful for calling dismiss after
1257
+ * present so that the correct delegate is given.
1264
1258
  */
1265
- const parentEl = this.el.parentNode;
1266
- const inline = (this.inline = parentEl !== null && !this.hasController);
1267
- const delegate = (this.workingDelegate = inline ? this.delegate || this.coreDelegate : this.delegate);
1268
- return { inline, delegate };
1269
- }
1270
- /**
1271
- * Determines whether or not the
1272
- * modal is allowed to dismiss based
1273
- * on the state of the canDismiss prop.
1274
- */
1275
- async checkCanDismiss(data, role) {
1276
- const { canDismiss } = this;
1277
- if (typeof canDismiss === 'function') {
1278
- return canDismiss(data, role);
1279
- }
1280
- return canDismiss;
1281
- }
1282
- /**
1283
- * Present the modal overlay after it has been created.
1284
- */
1285
- async present() {
1286
- const unlock = await this.lockController.lock();
1287
- if (this.presented) {
1288
- unlock();
1289
- return;
1259
+ getDelegate(force = false) {
1260
+ if (this.workingDelegate && !force) {
1261
+ return {
1262
+ delegate: this.workingDelegate,
1263
+ inline: this.inline,
1264
+ };
1265
+ }
1266
+ /**
1267
+ * If using overlay inline
1268
+ * we potentially need to use the coreDelegate
1269
+ * so that this works in vanilla JS apps.
1270
+ * If a developer has presented this component
1271
+ * via a controller, then we can assume
1272
+ * the component is already in the
1273
+ * correct place.
1274
+ */
1275
+ const parentEl = this.el.parentNode;
1276
+ const inline = (this.inline = parentEl !== null && !this.hasController);
1277
+ const delegate = (this.workingDelegate = inline ? this.delegate || this.coreDelegate : this.delegate);
1278
+ return { inline, delegate };
1290
1279
  }
1291
- const { presentingElement, el } = this;
1292
1280
  /**
1293
- * If the modal is presented multiple times (inline modals), we
1294
- * need to reset the current breakpoint to the initial breakpoint.
1281
+ * Determines whether or not the
1282
+ * modal is allowed to dismiss based
1283
+ * on the state of the canDismiss prop.
1295
1284
  */
1296
- this.currentBreakpoint = this.initialBreakpoint;
1297
- const { inline, delegate } = this.getDelegate(true);
1298
- /**
1299
- * Emit ionMount so JS Frameworks have an opportunity
1300
- * to add the child component to the DOM. The child
1301
- * component will be assigned to this.usersElement below.
1302
- */
1303
- this.ionMount.emit();
1304
- this.usersElement = await frameworkDelegate.attachComponent(delegate, el, this.component, ['ion-page'], this.componentProps, inline);
1285
+ async checkCanDismiss(data, role) {
1286
+ const { canDismiss } = this;
1287
+ if (typeof canDismiss === 'function') {
1288
+ return canDismiss(data, role);
1289
+ }
1290
+ return canDismiss;
1291
+ }
1305
1292
  /**
1306
- * When using the lazy loaded build of Stencil, we need to wait
1307
- * for every Stencil component instance to be ready before presenting
1308
- * otherwise there can be a flash of unstyled content. With the
1309
- * custom elements bundle we need to wait for the JS framework
1310
- * mount the inner contents of the overlay otherwise WebKit may
1311
- * get the transition incorrect.
1293
+ * Present the modal overlay after it has been created.
1312
1294
  */
1313
- if (helpers.hasLazyBuild(el)) {
1314
- await index$5.deepReady(this.usersElement);
1315
- /**
1316
- * If keepContentsMounted="true" then the
1317
- * JS Framework has already mounted the inner
1318
- * contents so there is no need to wait.
1319
- * Otherwise, we need to wait for the JS
1320
- * Framework to mount the inner contents
1321
- * of this component.
1322
- */
1295
+ async present() {
1296
+ const unlock = await this.lockController.lock();
1297
+ if (this.presented) {
1298
+ unlock();
1299
+ return;
1300
+ }
1301
+ const { presentingElement, el } = this;
1302
+ /**
1303
+ * If the modal is presented multiple times (inline modals), we
1304
+ * need to reset the current breakpoint to the initial breakpoint.
1305
+ */
1306
+ this.currentBreakpoint = this.initialBreakpoint;
1307
+ const { inline, delegate } = this.getDelegate(true);
1308
+ /**
1309
+ * Emit ionMount so JS Frameworks have an opportunity
1310
+ * to add the child component to the DOM. The child
1311
+ * component will be assigned to this.usersElement below.
1312
+ */
1313
+ this.ionMount.emit();
1314
+ this.usersElement = await frameworkDelegate.attachComponent(delegate, el, this.component, ['ion-page'], this.componentProps, inline);
1315
+ /**
1316
+ * When using the lazy loaded build of Stencil, we need to wait
1317
+ * for every Stencil component instance to be ready before presenting
1318
+ * otherwise there can be a flash of unstyled content. With the
1319
+ * custom elements bundle we need to wait for the JS framework
1320
+ * mount the inner contents of the overlay otherwise WebKit may
1321
+ * get the transition incorrect.
1322
+ */
1323
+ if (helpers.hasLazyBuild(el)) {
1324
+ await index$5.deepReady(this.usersElement);
1325
+ /**
1326
+ * If keepContentsMounted="true" then the
1327
+ * JS Framework has already mounted the inner
1328
+ * contents so there is no need to wait.
1329
+ * Otherwise, we need to wait for the JS
1330
+ * Framework to mount the inner contents
1331
+ * of this component.
1332
+ */
1333
+ }
1334
+ else if (!this.keepContentsMounted) {
1335
+ await index$5.waitForMount();
1336
+ }
1337
+ index$3.writeTask(() => this.el.classList.add('show-modal'));
1338
+ const hasCardModal = presentingElement !== undefined;
1339
+ /**
1340
+ * We need to change the status bar at the
1341
+ * start of the animation so that it completes
1342
+ * by the time the card animation is done.
1343
+ */
1344
+ if (hasCardModal && ionicGlobal.getIonMode(this) === 'ios') {
1345
+ // Cache the original status bar color before the modal is presented
1346
+ this.statusBarStyle = await StatusBar.getStyle();
1347
+ setCardStatusBarDark();
1348
+ }
1349
+ await overlays.present(this, 'modalEnter', iosEnterAnimation, mdEnterAnimation, {
1350
+ presentingEl: presentingElement,
1351
+ currentBreakpoint: this.initialBreakpoint,
1352
+ backdropBreakpoint: this.backdropBreakpoint,
1353
+ });
1354
+ /* tslint:disable-next-line */
1355
+ if (typeof window !== 'undefined') {
1356
+ /**
1357
+ * This needs to be setup before any
1358
+ * non-transition async work so it can be dereferenced
1359
+ * in the dismiss method. The dismiss method
1360
+ * only waits for the entering transition
1361
+ * to finish. It does not wait for all of the `present`
1362
+ * method to resolve.
1363
+ */
1364
+ this.keyboardOpenCallback = () => {
1365
+ if (this.gesture) {
1366
+ /**
1367
+ * When the native keyboard is opened and the webview
1368
+ * is resized, the gesture implementation will become unresponsive
1369
+ * and enter a free-scroll mode.
1370
+ *
1371
+ * When the keyboard is opened, we disable the gesture for
1372
+ * a single frame and re-enable once the contents have repositioned
1373
+ * from the keyboard placement.
1374
+ */
1375
+ this.gesture.enable(false);
1376
+ helpers.raf(() => {
1377
+ if (this.gesture) {
1378
+ this.gesture.enable(true);
1379
+ }
1380
+ });
1381
+ }
1382
+ };
1383
+ window.addEventListener(keyboard.KEYBOARD_DID_OPEN, this.keyboardOpenCallback);
1384
+ }
1385
+ if (this.isSheetModal) {
1386
+ this.initSheetGesture();
1387
+ }
1388
+ else if (hasCardModal) {
1389
+ this.initSwipeToClose();
1390
+ }
1391
+ unlock();
1323
1392
  }
1324
- else if (!this.keepContentsMounted) {
1325
- await index$5.waitForMount();
1393
+ initSwipeToClose() {
1394
+ var _a;
1395
+ if (ionicGlobal.getIonMode(this) !== 'ios') {
1396
+ return;
1397
+ }
1398
+ const { el } = this;
1399
+ // All of the elements needed for the swipe gesture
1400
+ // should be in the DOM and referenced by now, except
1401
+ // for the presenting el
1402
+ const animationBuilder = this.leaveAnimation || ionicGlobal.config.get('modalLeave', iosLeaveAnimation);
1403
+ const ani = (this.animation = animationBuilder(el, { presentingEl: this.presentingElement }));
1404
+ const contentEl = index$2.findIonContent(el);
1405
+ if (!contentEl) {
1406
+ index$2.printIonContentErrorMsg(el);
1407
+ return;
1408
+ }
1409
+ const statusBarStyle = (_a = this.statusBarStyle) !== null && _a !== void 0 ? _a : Style.Default;
1410
+ this.gesture = createSwipeToCloseGesture(el, ani, statusBarStyle, () => {
1411
+ /**
1412
+ * While the gesture animation is finishing
1413
+ * it is possible for a user to tap the backdrop.
1414
+ * This would result in the dismiss animation
1415
+ * being played again. Typically this is avoided
1416
+ * by setting `presented = false` on the overlay
1417
+ * component; however, we cannot do that here as
1418
+ * that would prevent the element from being
1419
+ * removed from the DOM.
1420
+ */
1421
+ this.gestureAnimationDismissing = true;
1422
+ /**
1423
+ * Reset the status bar style as the dismiss animation
1424
+ * starts otherwise the status bar will be the wrong
1425
+ * color for the duration of the dismiss animation.
1426
+ * The dismiss method does this as well, but
1427
+ * in this case it's only called once the animation
1428
+ * has finished.
1429
+ */
1430
+ setCardStatusBarDefault(this.statusBarStyle);
1431
+ this.animation.onFinish(async () => {
1432
+ await this.dismiss(undefined, overlays.GESTURE);
1433
+ this.gestureAnimationDismissing = false;
1434
+ });
1435
+ });
1436
+ this.gesture.enable(true);
1437
+ }
1438
+ initSheetGesture() {
1439
+ const { wrapperEl, initialBreakpoint, backdropBreakpoint } = this;
1440
+ if (!wrapperEl || initialBreakpoint === undefined) {
1441
+ return;
1442
+ }
1443
+ const animationBuilder = this.enterAnimation || ionicGlobal.config.get('modalEnter', iosEnterAnimation);
1444
+ const ani = (this.animation = animationBuilder(this.el, {
1445
+ presentingEl: this.presentingElement,
1446
+ currentBreakpoint: initialBreakpoint,
1447
+ backdropBreakpoint,
1448
+ }));
1449
+ ani.progressStart(true, 1);
1450
+ 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) => {
1451
+ if (this.currentBreakpoint !== breakpoint) {
1452
+ this.currentBreakpoint = breakpoint;
1453
+ this.ionBreakpointDidChange.emit({ breakpoint });
1454
+ }
1455
+ });
1456
+ this.gesture = gesture;
1457
+ this.moveSheetToBreakpoint = moveSheetToBreakpoint;
1458
+ this.gesture.enable(true);
1459
+ }
1460
+ sheetOnDismiss() {
1461
+ /**
1462
+ * While the gesture animation is finishing
1463
+ * it is possible for a user to tap the backdrop.
1464
+ * This would result in the dismiss animation
1465
+ * being played again. Typically this is avoided
1466
+ * by setting `presented = false` on the overlay
1467
+ * component; however, we cannot do that here as
1468
+ * that would prevent the element from being
1469
+ * removed from the DOM.
1470
+ */
1471
+ this.gestureAnimationDismissing = true;
1472
+ this.animation.onFinish(async () => {
1473
+ this.currentBreakpoint = 0;
1474
+ this.ionBreakpointDidChange.emit({ breakpoint: this.currentBreakpoint });
1475
+ await this.dismiss(undefined, overlays.GESTURE);
1476
+ this.gestureAnimationDismissing = false;
1477
+ });
1326
1478
  }
1327
- index$3.writeTask(() => this.el.classList.add('show-modal'));
1328
- const hasCardModal = presentingElement !== undefined;
1329
1479
  /**
1330
- * We need to change the status bar at the
1331
- * start of the animation so that it completes
1332
- * by the time the card animation is done.
1480
+ * Dismiss the modal overlay after it has been presented.
1481
+ *
1482
+ * @param data Any data to emit in the dismiss events.
1483
+ * @param role The role of the element that is dismissing the modal. For example, 'cancel' or 'backdrop'.
1333
1484
  */
1334
- if (hasCardModal && ionicGlobal.getIonMode(this) === 'ios') {
1335
- // Cache the original status bar color before the modal is presented
1336
- this.statusBarStyle = await StatusBar.getStyle();
1337
- setCardStatusBarDark();
1338
- }
1339
- await overlays.present(this, 'modalEnter', iosEnterAnimation, mdEnterAnimation, {
1340
- presentingEl: presentingElement,
1341
- currentBreakpoint: this.initialBreakpoint,
1342
- backdropBreakpoint: this.backdropBreakpoint,
1343
- });
1344
- /* tslint:disable-next-line */
1345
- if (typeof window !== 'undefined') {
1346
- /**
1347
- * This needs to be setup before any
1348
- * non-transition async work so it can be dereferenced
1349
- * in the dismiss method. The dismiss method
1350
- * only waits for the entering transition
1351
- * to finish. It does not wait for all of the `present`
1352
- * method to resolve.
1353
- */
1354
- this.keyboardOpenCallback = () => {
1355
- if (this.gesture) {
1356
- /**
1357
- * When the native keyboard is opened and the webview
1358
- * is resized, the gesture implementation will become unresponsive
1359
- * and enter a free-scroll mode.
1360
- *
1361
- * When the keyboard is opened, we disable the gesture for
1362
- * a single frame and re-enable once the contents have repositioned
1363
- * from the keyboard placement.
1364
- */
1365
- this.gesture.enable(false);
1366
- helpers.raf(() => {
1485
+ async dismiss(data, role) {
1486
+ var _a;
1487
+ if (this.gestureAnimationDismissing && role !== overlays.GESTURE) {
1488
+ return false;
1489
+ }
1490
+ /**
1491
+ * Because the canDismiss check below is async,
1492
+ * we need to claim a lock before the check happens,
1493
+ * in case the dismiss transition does run.
1494
+ */
1495
+ const unlock = await this.lockController.lock();
1496
+ /**
1497
+ * If a canDismiss handler is responsible
1498
+ * for calling the dismiss method, we should
1499
+ * not run the canDismiss check again.
1500
+ */
1501
+ if (role !== 'handler' && !(await this.checkCanDismiss(data, role))) {
1502
+ unlock();
1503
+ return false;
1504
+ }
1505
+ const { presentingElement } = this;
1506
+ /**
1507
+ * We need to start the status bar change
1508
+ * before the animation so that the change
1509
+ * finishes when the dismiss animation does.
1510
+ */
1511
+ const hasCardModal = presentingElement !== undefined;
1512
+ if (hasCardModal && ionicGlobal.getIonMode(this) === 'ios') {
1513
+ setCardStatusBarDefault(this.statusBarStyle);
1514
+ }
1515
+ /* tslint:disable-next-line */
1516
+ if (typeof window !== 'undefined' && this.keyboardOpenCallback) {
1517
+ window.removeEventListener(keyboard.KEYBOARD_DID_OPEN, this.keyboardOpenCallback);
1518
+ this.keyboardOpenCallback = undefined;
1519
+ }
1520
+ const enteringAnimation = overlays.activeAnimations.get(this) || [];
1521
+ const dismissed = await overlays.dismiss(this, data, role, 'modalLeave', iosLeaveAnimation, mdLeaveAnimation, {
1522
+ presentingEl: presentingElement,
1523
+ currentBreakpoint: (_a = this.currentBreakpoint) !== null && _a !== void 0 ? _a : this.initialBreakpoint,
1524
+ backdropBreakpoint: this.backdropBreakpoint,
1525
+ });
1526
+ if (dismissed) {
1527
+ const { delegate } = this.getDelegate();
1528
+ await frameworkDelegate.detachComponent(delegate, this.usersElement);
1529
+ index$3.writeTask(() => this.el.classList.remove('show-modal'));
1530
+ if (this.animation) {
1531
+ this.animation.destroy();
1532
+ }
1367
1533
  if (this.gesture) {
1368
- this.gesture.enable(true);
1534
+ this.gesture.destroy();
1369
1535
  }
1370
- });
1536
+ enteringAnimation.forEach((ani) => ani.destroy());
1371
1537
  }
1372
- };
1373
- window.addEventListener(keyboard.KEYBOARD_DID_OPEN, this.keyboardOpenCallback);
1538
+ this.currentBreakpoint = undefined;
1539
+ this.animation = undefined;
1540
+ unlock();
1541
+ return dismissed;
1374
1542
  }
1375
- if (this.isSheetModal) {
1376
- this.initSheetGesture();
1377
- }
1378
- else if (hasCardModal) {
1379
- this.initSwipeToClose();
1380
- }
1381
- unlock();
1382
- }
1383
- initSwipeToClose() {
1384
- var _a;
1385
- if (ionicGlobal.getIonMode(this) !== 'ios') {
1386
- return;
1387
- }
1388
- const { el } = this;
1389
- // All of the elements needed for the swipe gesture
1390
- // should be in the DOM and referenced by now, except
1391
- // for the presenting el
1392
- const animationBuilder = this.leaveAnimation || ionicGlobal.config.get('modalLeave', iosLeaveAnimation);
1393
- const ani = (this.animation = animationBuilder(el, { presentingEl: this.presentingElement }));
1394
- const contentEl = index$2.findIonContent(el);
1395
- if (!contentEl) {
1396
- index$2.printIonContentErrorMsg(el);
1397
- return;
1398
- }
1399
- const statusBarStyle = (_a = this.statusBarStyle) !== null && _a !== void 0 ? _a : Style.Default;
1400
- this.gesture = createSwipeToCloseGesture(el, ani, statusBarStyle, () => {
1401
- /**
1402
- * While the gesture animation is finishing
1403
- * it is possible for a user to tap the backdrop.
1404
- * This would result in the dismiss animation
1405
- * being played again. Typically this is avoided
1406
- * by setting `presented = false` on the overlay
1407
- * component; however, we cannot do that here as
1408
- * that would prevent the element from being
1409
- * removed from the DOM.
1410
- */
1411
- this.gestureAnimationDismissing = true;
1412
- /**
1413
- * Reset the status bar style as the dismiss animation
1414
- * starts otherwise the status bar will be the wrong
1415
- * color for the duration of the dismiss animation.
1416
- * The dismiss method does this as well, but
1417
- * in this case it's only called once the animation
1418
- * has finished.
1419
- */
1420
- setCardStatusBarDefault(this.statusBarStyle);
1421
- this.animation.onFinish(async () => {
1422
- await this.dismiss(undefined, overlays.GESTURE);
1423
- this.gestureAnimationDismissing = false;
1424
- });
1425
- });
1426
- this.gesture.enable(true);
1427
- }
1428
- initSheetGesture() {
1429
- const { wrapperEl, initialBreakpoint, backdropBreakpoint } = this;
1430
- if (!wrapperEl || initialBreakpoint === undefined) {
1431
- return;
1432
- }
1433
- const animationBuilder = this.enterAnimation || ionicGlobal.config.get('modalEnter', iosEnterAnimation);
1434
- const ani = (this.animation = animationBuilder(this.el, {
1435
- presentingEl: this.presentingElement,
1436
- currentBreakpoint: initialBreakpoint,
1437
- backdropBreakpoint,
1438
- }));
1439
- ani.progressStart(true, 1);
1440
- 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) => {
1441
- if (this.currentBreakpoint !== breakpoint) {
1442
- this.currentBreakpoint = breakpoint;
1443
- this.ionBreakpointDidChange.emit({ breakpoint });
1444
- }
1445
- });
1446
- this.gesture = gesture;
1447
- this.moveSheetToBreakpoint = moveSheetToBreakpoint;
1448
- this.gesture.enable(true);
1449
- }
1450
- sheetOnDismiss() {
1451
1543
  /**
1452
- * While the gesture animation is finishing
1453
- * it is possible for a user to tap the backdrop.
1454
- * This would result in the dismiss animation
1455
- * being played again. Typically this is avoided
1456
- * by setting `presented = false` on the overlay
1457
- * component; however, we cannot do that here as
1458
- * that would prevent the element from being
1459
- * removed from the DOM.
1544
+ * Returns a promise that resolves when the modal did dismiss.
1460
1545
  */
1461
- this.gestureAnimationDismissing = true;
1462
- this.animation.onFinish(async () => {
1463
- this.currentBreakpoint = 0;
1464
- this.ionBreakpointDidChange.emit({ breakpoint: this.currentBreakpoint });
1465
- await this.dismiss(undefined, overlays.GESTURE);
1466
- this.gestureAnimationDismissing = false;
1467
- });
1468
- }
1469
- /**
1470
- * Dismiss the modal overlay after it has been presented.
1471
- *
1472
- * @param data Any data to emit in the dismiss events.
1473
- * @param role The role of the element that is dismissing the modal. For example, 'cancel' or 'backdrop'.
1474
- */
1475
- async dismiss(data, role) {
1476
- var _a;
1477
- if (this.gestureAnimationDismissing && role !== overlays.GESTURE) {
1478
- return false;
1546
+ onDidDismiss() {
1547
+ return overlays.eventMethod(this.el, 'ionModalDidDismiss');
1479
1548
  }
1480
1549
  /**
1481
- * Because the canDismiss check below is async,
1482
- * we need to claim a lock before the check happens,
1483
- * in case the dismiss transition does run.
1550
+ * Returns a promise that resolves when the modal will dismiss.
1484
1551
  */
1485
- const unlock = await this.lockController.lock();
1552
+ onWillDismiss() {
1553
+ return overlays.eventMethod(this.el, 'ionModalWillDismiss');
1554
+ }
1486
1555
  /**
1487
- * If a canDismiss handler is responsible
1488
- * for calling the dismiss method, we should
1489
- * not run the canDismiss check again.
1556
+ * Move a sheet style modal to a specific breakpoint. The breakpoint value must
1557
+ * be a value defined in your `breakpoints` array.
1490
1558
  */
1491
- if (role !== 'handler' && !(await this.checkCanDismiss(data, role))) {
1492
- unlock();
1493
- return false;
1559
+ async setCurrentBreakpoint(breakpoint) {
1560
+ if (!this.isSheetModal) {
1561
+ index$4.printIonWarning('setCurrentBreakpoint is only supported on sheet modals.');
1562
+ return;
1563
+ }
1564
+ if (!this.breakpoints.includes(breakpoint)) {
1565
+ index$4.printIonWarning(`Attempted to set invalid breakpoint value ${breakpoint}. Please double check that the breakpoint value is part of your defined breakpoints.`);
1566
+ return;
1567
+ }
1568
+ const { currentBreakpoint, moveSheetToBreakpoint, canDismiss, breakpoints, animated } = this;
1569
+ if (currentBreakpoint === breakpoint) {
1570
+ return;
1571
+ }
1572
+ if (moveSheetToBreakpoint) {
1573
+ this.sheetTransition = moveSheetToBreakpoint({
1574
+ breakpoint,
1575
+ breakpointOffset: 1 - currentBreakpoint,
1576
+ canDismiss: canDismiss !== undefined && canDismiss !== true && breakpoints[0] === 0,
1577
+ animated,
1578
+ });
1579
+ await this.sheetTransition;
1580
+ this.sheetTransition = undefined;
1581
+ }
1494
1582
  }
1495
- const { presentingElement } = this;
1496
1583
  /**
1497
- * We need to start the status bar change
1498
- * before the animation so that the change
1499
- * finishes when the dismiss animation does.
1584
+ * Returns the current breakpoint of a sheet style modal
1500
1585
  */
1501
- const hasCardModal = presentingElement !== undefined;
1502
- if (hasCardModal && ionicGlobal.getIonMode(this) === 'ios') {
1503
- setCardStatusBarDefault(this.statusBarStyle);
1504
- }
1505
- /* tslint:disable-next-line */
1506
- if (typeof window !== 'undefined' && this.keyboardOpenCallback) {
1507
- window.removeEventListener(keyboard.KEYBOARD_DID_OPEN, this.keyboardOpenCallback);
1508
- this.keyboardOpenCallback = undefined;
1586
+ async getCurrentBreakpoint() {
1587
+ return this.currentBreakpoint;
1509
1588
  }
1510
- const enteringAnimation = overlays.activeAnimations.get(this) || [];
1511
- const dismissed = await overlays.dismiss(this, data, role, 'modalLeave', iosLeaveAnimation, mdLeaveAnimation, {
1512
- presentingEl: presentingElement,
1513
- currentBreakpoint: (_a = this.currentBreakpoint) !== null && _a !== void 0 ? _a : this.initialBreakpoint,
1514
- backdropBreakpoint: this.backdropBreakpoint,
1515
- });
1516
- if (dismissed) {
1517
- const { delegate } = this.getDelegate();
1518
- await frameworkDelegate.detachComponent(delegate, this.usersElement);
1519
- index$3.writeTask(() => this.el.classList.remove('show-modal'));
1520
- if (this.animation) {
1521
- this.animation.destroy();
1522
- }
1523
- if (this.gesture) {
1524
- this.gesture.destroy();
1525
- }
1526
- enteringAnimation.forEach((ani) => ani.destroy());
1527
- }
1528
- this.currentBreakpoint = undefined;
1529
- this.animation = undefined;
1530
- unlock();
1531
- return dismissed;
1532
- }
1533
- /**
1534
- * Returns a promise that resolves when the modal did dismiss.
1535
- */
1536
- onDidDismiss() {
1537
- return overlays.eventMethod(this.el, 'ionModalDidDismiss');
1538
- }
1539
- /**
1540
- * Returns a promise that resolves when the modal will dismiss.
1541
- */
1542
- onWillDismiss() {
1543
- return overlays.eventMethod(this.el, 'ionModalWillDismiss');
1544
- }
1545
- /**
1546
- * Move a sheet style modal to a specific breakpoint. The breakpoint value must
1547
- * be a value defined in your `breakpoints` array.
1548
- */
1549
- async setCurrentBreakpoint(breakpoint) {
1550
- if (!this.isSheetModal) {
1551
- index$4.printIonWarning('setCurrentBreakpoint is only supported on sheet modals.');
1552
- return;
1553
- }
1554
- if (!this.breakpoints.includes(breakpoint)) {
1555
- index$4.printIonWarning(`Attempted to set invalid breakpoint value ${breakpoint}. Please double check that the breakpoint value is part of your defined breakpoints.`);
1556
- return;
1557
- }
1558
- const { currentBreakpoint, moveSheetToBreakpoint, canDismiss, breakpoints, animated } = this;
1559
- if (currentBreakpoint === breakpoint) {
1560
- return;
1561
- }
1562
- if (moveSheetToBreakpoint) {
1563
- this.sheetTransition = moveSheetToBreakpoint({
1564
- breakpoint,
1565
- breakpointOffset: 1 - currentBreakpoint,
1566
- canDismiss: canDismiss !== undefined && canDismiss !== true && breakpoints[0] === 0,
1567
- animated,
1568
- });
1569
- await this.sheetTransition;
1570
- this.sheetTransition = undefined;
1589
+ async moveToNextBreakpoint() {
1590
+ const { breakpoints, currentBreakpoint } = this;
1591
+ if (!breakpoints || currentBreakpoint == null) {
1592
+ /**
1593
+ * If the modal does not have breakpoints and/or the current
1594
+ * breakpoint is not set, we can't move to the next breakpoint.
1595
+ */
1596
+ return false;
1597
+ }
1598
+ const allowedBreakpoints = breakpoints.filter((b) => b !== 0);
1599
+ const currentBreakpointIndex = allowedBreakpoints.indexOf(currentBreakpoint);
1600
+ const nextBreakpointIndex = (currentBreakpointIndex + 1) % allowedBreakpoints.length;
1601
+ const nextBreakpoint = allowedBreakpoints[nextBreakpointIndex];
1602
+ /**
1603
+ * Sets the current breakpoint to the next available breakpoint.
1604
+ * If the current breakpoint is the last breakpoint, we set the current
1605
+ * breakpoint to the first non-zero breakpoint to avoid dismissing the sheet.
1606
+ */
1607
+ await this.setCurrentBreakpoint(nextBreakpoint);
1608
+ return true;
1571
1609
  }
1572
- }
1573
- /**
1574
- * Returns the current breakpoint of a sheet style modal
1575
- */
1576
- async getCurrentBreakpoint() {
1577
- return this.currentBreakpoint;
1578
- }
1579
- async moveToNextBreakpoint() {
1580
- const { breakpoints, currentBreakpoint } = this;
1581
- if (!breakpoints || currentBreakpoint == null) {
1582
- /**
1583
- * If the modal does not have breakpoints and/or the current
1584
- * breakpoint is not set, we can't move to the next breakpoint.
1585
- */
1586
- return false;
1610
+ render() {
1611
+ const { handle, isSheetModal, presentingElement, htmlAttributes, handleBehavior, inheritedAttributes } = this;
1612
+ const showHandle = handle !== false && isSheetModal;
1613
+ const mode = ionicGlobal.getIonMode(this);
1614
+ const isCardModal = presentingElement !== undefined && mode === 'ios';
1615
+ const isHandleCycle = handleBehavior === 'cycle';
1616
+ return (index$3.h(index$3.Host, Object.assign({ "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
1617
+ zIndex: `${20000 + this.overlayIndex}`,
1618
+ }, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, 'overlay-hidden': true }, theme.getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle }), index$3.h("ion-backdrop", { ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && index$3.h("div", { class: "modal-shadow" }), index$3.h("div", Object.assign({
1619
+ /*
1620
+ role and aria-modal must be used on the
1621
+ same element. They must also be set inside the
1622
+ shadow DOM otherwise ion-button will not be highlighted
1623
+ when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
1624
+ */
1625
+ role: "dialog"
1626
+ }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (index$3.h("button", { class: "modal-handle",
1627
+ // Prevents the handle from receiving keyboard focus when it does not cycle
1628
+ tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle" })), index$3.h("slot", null))));
1587
1629
  }
1588
- const allowedBreakpoints = breakpoints.filter((b) => b !== 0);
1589
- const currentBreakpointIndex = allowedBreakpoints.indexOf(currentBreakpoint);
1590
- const nextBreakpointIndex = (currentBreakpointIndex + 1) % allowedBreakpoints.length;
1591
- const nextBreakpoint = allowedBreakpoints[nextBreakpointIndex];
1592
- /**
1593
- * Sets the current breakpoint to the next available breakpoint.
1594
- * If the current breakpoint is the last breakpoint, we set the current
1595
- * breakpoint to the first non-zero breakpoint to avoid dismissing the sheet.
1596
- */
1597
- await this.setCurrentBreakpoint(nextBreakpoint);
1598
- return true;
1599
- }
1600
- render() {
1601
- const { handle, isSheetModal, presentingElement, htmlAttributes, handleBehavior, inheritedAttributes } = this;
1602
- const showHandle = handle !== false && isSheetModal;
1603
- const mode = ionicGlobal.getIonMode(this);
1604
- const isCardModal = presentingElement !== undefined && mode === 'ios';
1605
- const isHandleCycle = handleBehavior === 'cycle';
1606
- return (index$3.h(index$3.Host, Object.assign({ "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
1607
- zIndex: `${20000 + this.overlayIndex}`,
1608
- }, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, 'overlay-hidden': true }, theme.getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle }), index$3.h("ion-backdrop", { ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && index$3.h("div", { class: "modal-shadow" }), index$3.h("div", Object.assign({
1609
- /*
1610
- role and aria-modal must be used on the
1611
- same element. They must also be set inside the
1612
- shadow DOM otherwise ion-button will not be highlighted
1613
- when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
1614
- */
1615
- role: "dialog"
1616
- }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (index$3.h("button", { class: "modal-handle",
1617
- // Prevents the handle from receiving keyboard focus when it does not cycle
1618
- tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle" })), index$3.h("slot", null))));
1619
- }
1620
- get el() { return index$3.getElement(this); }
1621
- static get watchers() { return {
1622
- "isOpen": ["onIsOpenChange"],
1623
- "trigger": ["triggerChanged"]
1624
- }; }
1630
+ get el() { return index$3.getElement(this); }
1631
+ static get watchers() { return {
1632
+ "isOpen": ["onIsOpenChange"],
1633
+ "trigger": ["triggerChanged"]
1634
+ }; }
1625
1635
  };
1626
1636
  const LIFECYCLE_MAP = {
1627
- ionModalDidPresent: 'ionViewDidEnter',
1628
- ionModalWillPresent: 'ionViewWillEnter',
1629
- ionModalWillDismiss: 'ionViewWillLeave',
1630
- ionModalDidDismiss: 'ionViewDidLeave',
1637
+ ionModalDidPresent: 'ionViewDidEnter',
1638
+ ionModalWillPresent: 'ionViewWillEnter',
1639
+ ionModalWillDismiss: 'ionViewWillLeave',
1640
+ ionModalDidDismiss: 'ionViewDidLeave',
1631
1641
  };
1632
1642
  Modal.style = {
1633
- ios: modalIosCss,
1634
- md: modalMdCss
1643
+ ios: modalIosCss,
1644
+ md: modalMdCss
1635
1645
  };
1636
1646
 
1637
1647
  exports.ion_modal = Modal;