voyager-ionic-core 7.5.5 → 7.6.0

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