@ionic/core 8.0.0-dev.11709632212.139b6f63 → 8.0.0-dev.11711035263.183d2423

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 (758) hide show
  1. package/components/action-sheet.js +3 -3
  2. package/components/alert.js +2 -2
  3. package/components/animation.js +9 -250
  4. package/components/backdrop.js +1 -1
  5. package/components/button.js +2 -2
  6. package/components/buttons.js +3 -3
  7. package/components/checkbox.js +3 -3
  8. package/components/data.js +23 -38
  9. package/components/haptic.js +6 -54
  10. package/components/hardware-back-button.js +3 -3
  11. package/components/helpers.js +1 -54
  12. package/components/index7.js +3 -1
  13. package/components/index9.js +1 -1
  14. package/components/input.utils.js +12 -0
  15. package/components/ion-app.js +4 -4
  16. package/components/ion-avatar.js +1 -1
  17. package/components/ion-back-button.js +2 -2
  18. package/components/ion-badge.js +2 -2
  19. package/components/ion-breadcrumb.js +2 -2
  20. package/components/ion-breadcrumbs.js +2 -2
  21. package/components/ion-card-content.js +1 -1
  22. package/components/ion-card-header.js +2 -2
  23. package/components/ion-card-subtitle.js +2 -2
  24. package/components/ion-card-title.js +2 -2
  25. package/components/ion-card.js +1 -1
  26. package/components/ion-chip.js +2 -2
  27. package/components/ion-col.js +2 -2
  28. package/components/ion-content.js +3 -3
  29. package/components/ion-datetime-button.js +11 -10
  30. package/components/ion-datetime.js +75 -12
  31. package/components/ion-fab-button.js +2 -2
  32. package/components/ion-fab-list.js +2 -2
  33. package/components/ion-fab.js +2 -2
  34. package/components/ion-footer.js +2 -2
  35. package/components/ion-grid.js +2 -2
  36. package/components/ion-header.js +3 -3
  37. package/components/ion-img.js +1 -1
  38. package/components/ion-infinite-scroll-content.js +2 -2
  39. package/components/ion-infinite-scroll.js +1 -1
  40. package/components/ion-input-password-toggle.d.ts +11 -0
  41. package/components/ion-input-password-toggle.js +132 -0
  42. package/components/ion-input.js +28 -9
  43. package/components/ion-loading.js +2 -2
  44. package/components/ion-menu-button.js +3 -3
  45. package/components/ion-menu-toggle.js +2 -2
  46. package/components/ion-menu.js +7 -28
  47. package/components/ion-modal.js +37 -5
  48. package/components/ion-nav-link.js +1 -1
  49. package/components/ion-nav.js +1 -1
  50. package/components/ion-note.js +43 -1
  51. package/components/ion-picker-legacy.js +2 -2
  52. package/components/ion-progress-bar.js +1 -1
  53. package/components/ion-range.js +137 -45
  54. package/components/ion-refresher-content.js +2 -2
  55. package/components/ion-refresher.js +1 -1
  56. package/components/ion-reorder-group.js +1 -1
  57. package/components/ion-reorder.js +2 -2
  58. package/components/ion-router-link.js +2 -2
  59. package/components/ion-router-outlet.js +1 -1
  60. package/components/ion-router.js +1 -1
  61. package/components/ion-row.js +1 -1
  62. package/components/ion-searchbar.js +35 -6
  63. package/components/ion-segment-button.js +3 -3
  64. package/components/ion-segment.js +2 -2
  65. package/components/ion-select-option.js +1 -1
  66. package/components/ion-select.js +28 -34
  67. package/components/ion-skeleton-text.js +2 -2
  68. package/components/ion-split-pane.js +2 -2
  69. package/components/ion-tab-bar.js +2 -2
  70. package/components/ion-tab-button.js +2 -2
  71. package/components/ion-tab.js +2 -2
  72. package/components/ion-tabs.js +1 -1
  73. package/components/ion-text.js +2 -2
  74. package/components/ion-textarea.js +5 -6
  75. package/components/ion-thumbnail.js +1 -1
  76. package/components/ion-title.js +2 -2
  77. package/components/ion-toast.js +2 -2
  78. package/components/ion-toggle.js +4 -4
  79. package/components/ion-toolbar.js +2 -2
  80. package/components/item.js +30 -97
  81. package/components/label.js +4 -4
  82. package/components/list-header.js +2 -2
  83. package/components/overlays.js +140 -55
  84. package/components/picker-column-option.js +2 -2
  85. package/components/picker-column.js +25 -6
  86. package/components/picker-column2.js +2 -2
  87. package/components/picker.js +2 -2
  88. package/components/popover.js +4 -4
  89. package/components/ripple-effect.js +1 -1
  90. package/components/select-popover.js +13 -19
  91. package/components/spinner.js +1 -1
  92. package/css/palettes/dark.always.css.map +1 -0
  93. package/css/{themes → palettes}/dark.class.css +4 -4
  94. package/css/palettes/dark.class.css.map +1 -0
  95. package/css/palettes/dark.system.css.map +1 -0
  96. package/css/palettes/high-contrast-dark.always.css.map +1 -0
  97. package/css/{themes → palettes}/high-contrast-dark.class.css +10 -10
  98. package/css/palettes/high-contrast-dark.class.css.map +1 -0
  99. package/css/palettes/high-contrast-dark.system.css.map +1 -0
  100. package/css/palettes/high-contrast.always.css.map +1 -0
  101. package/css/{themes → palettes}/high-contrast.class.css +31 -31
  102. package/css/palettes/high-contrast.class.css.map +1 -0
  103. package/css/palettes/high-contrast.system.css.map +1 -0
  104. package/dist/cjs/{animation-4ad55058.js → animation-b4fdf128.js} +9 -250
  105. package/dist/cjs/{app-globals-92ad1b3d.js → app-globals-e132c781.js} +1 -1
  106. package/dist/cjs/{button-active-8f6a8e77.js → button-active-e2ed5329.js} +2 -2
  107. package/dist/cjs/{data-e2bf21de.js → data-21dc0f81.js} +22 -39
  108. package/dist/cjs/{framework-delegate-53817ef1.js → framework-delegate-df3a2b04.js} +1 -1
  109. package/dist/cjs/{haptic-b882e0bb.js → haptic-f6b37aa3.js} +6 -54
  110. package/dist/cjs/{hardware-back-button-2696acaf.js → hardware-back-button-1c67a5a2.js} +5 -5
  111. package/dist/cjs/{helpers-b71ca811.js → helpers-71097d9c.js} +0 -54
  112. package/dist/cjs/{index-f52c6d38.js → index-073c7cdc.js} +4 -0
  113. package/dist/cjs/{index-0ffe376d.js → index-2d21d526.js} +443 -14
  114. package/dist/cjs/{index-347883f6.js → index-7479ea5a.js} +1 -1
  115. package/dist/cjs/{index-7574e3d2.js → index-a91a3e24.js} +1 -1
  116. package/dist/cjs/{index-16fc2c94.js → index-c2191aa0.js} +4 -4
  117. package/dist/cjs/{index-88b3bd6f.js → index-ef9261f8.js} +4 -4
  118. package/dist/cjs/index.cjs.js +11 -11
  119. package/dist/cjs/{input-shims-679d87bc.js → input-shims-77b14f24.js} +2 -2
  120. package/dist/cjs/{input.utils-5175aea1.js → input.utils-ca74d73a.js} +13 -1
  121. package/dist/cjs/ion-accordion_2.cjs.entry.js +4 -4
  122. package/dist/cjs/ion-action-sheet.cjs.entry.js +12 -12
  123. package/dist/cjs/ion-alert.cjs.entry.js +11 -11
  124. package/dist/cjs/ion-app_8.cjs.entry.js +30 -30
  125. package/dist/cjs/ion-avatar_3.cjs.entry.js +6 -6
  126. package/dist/cjs/ion-back-button.cjs.entry.js +6 -6
  127. package/dist/cjs/ion-backdrop.cjs.entry.js +3 -3
  128. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +8 -8
  129. package/dist/cjs/ion-button_2.cjs.entry.js +5 -5
  130. package/dist/cjs/ion-card_5.cjs.entry.js +11 -11
  131. package/dist/cjs/ion-checkbox.cjs.entry.js +6 -6
  132. package/dist/cjs/ion-chip.cjs.entry.js +4 -4
  133. package/dist/cjs/ion-col_3.cjs.entry.js +7 -7
  134. package/dist/cjs/ion-datetime-button.cjs.entry.js +14 -13
  135. package/dist/cjs/ion-datetime_3.cjs.entry.js +85 -25
  136. package/dist/cjs/ion-fab_3.cjs.entry.js +10 -10
  137. package/dist/cjs/ion-img.cjs.entry.js +4 -4
  138. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +7 -7
  139. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +93 -0
  140. package/dist/cjs/ion-input.cjs.entry.js +30 -12
  141. package/dist/cjs/ion-item-option_3.cjs.entry.js +4 -4
  142. package/dist/cjs/ion-item_8.cjs.entry.js +37 -92
  143. package/dist/cjs/ion-loading.cjs.entry.js +9 -9
  144. package/dist/cjs/ion-menu_3.cjs.entry.js +18 -39
  145. package/dist/cjs/ion-modal.cjs.entry.js +46 -14
  146. package/dist/cjs/ion-nav_2.cjs.entry.js +8 -8
  147. package/dist/cjs/ion-picker-column-option.cjs.entry.js +5 -5
  148. package/dist/cjs/ion-picker-column.cjs.entry.js +29 -10
  149. package/dist/cjs/ion-picker.cjs.entry.js +4 -4
  150. package/dist/cjs/ion-popover.cjs.entry.js +11 -11
  151. package/dist/cjs/ion-progress-bar.cjs.entry.js +4 -4
  152. package/dist/cjs/ion-radio_2.cjs.entry.js +3 -3
  153. package/dist/cjs/ion-range.cjs.entry.js +140 -48
  154. package/dist/cjs/ion-refresher_2.cjs.entry.js +9 -9
  155. package/dist/cjs/ion-reorder_2.cjs.entry.js +8 -8
  156. package/dist/cjs/ion-ripple-effect.cjs.entry.js +3 -3
  157. package/dist/cjs/ion-route_4.cjs.entry.js +5 -5
  158. package/dist/cjs/ion-searchbar.cjs.entry.js +32 -8
  159. package/dist/cjs/ion-segment_2.cjs.entry.js +8 -8
  160. package/dist/cjs/ion-select_3.cjs.entry.js +18 -18
  161. package/dist/cjs/ion-spinner.cjs.entry.js +3 -3
  162. package/dist/cjs/ion-split-pane.cjs.entry.js +4 -4
  163. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +7 -7
  164. package/dist/cjs/ion-tab_2.cjs.entry.js +6 -6
  165. package/dist/cjs/ion-text.cjs.entry.js +4 -4
  166. package/dist/cjs/ion-textarea.cjs.entry.js +9 -10
  167. package/dist/cjs/ion-toast.cjs.entry.js +9 -9
  168. package/dist/cjs/ion-toggle.cjs.entry.js +8 -8
  169. package/dist/cjs/{ionic-global-59a10130.js → ionic-global-5762eca9.js} +1 -1
  170. package/dist/cjs/ionic.cjs.js +28 -5
  171. package/dist/cjs/{ios.transition-b102ee38.js → ios.transition-2bb1c4d1.js} +4 -4
  172. package/dist/cjs/loader.cjs.js +4 -4
  173. package/dist/cjs/{md.transition-a5454240.js → md.transition-c0afd670.js} +4 -4
  174. package/dist/cjs/{notch-controller-8e0ae870.js → notch-controller-0042ad49.js} +1 -1
  175. package/dist/cjs/{overlays-6b7d156b.js → overlays-30b83581.js} +142 -56
  176. package/dist/cjs/{status-tap-b60dcbd8.js → status-tap-dc3b8fda.js} +3 -3
  177. package/dist/cjs/{swipe-back-72c5c8b7.js → swipe-back-29e88360.js} +1 -1
  178. package/dist/collection/collection-manifest.json +2 -1
  179. package/dist/collection/components/action-sheet/action-sheet.js +3 -3
  180. package/dist/collection/components/action-sheet/test/a11y/action-sheet.e2e.js +1 -1
  181. package/dist/collection/components/alert/alert.js +2 -2
  182. package/dist/collection/components/alert/test/a11y/alert.e2e.js +5 -1
  183. package/dist/collection/components/alert/test/basic/alert.e2e.js +1 -1
  184. package/dist/collection/components/app/app.js +4 -4
  185. package/dist/collection/components/avatar/avatar.js +1 -1
  186. package/dist/collection/components/back-button/back-button.js +2 -2
  187. package/dist/collection/components/back-button/test/a11y/back-button.e2e.js +1 -1
  188. package/dist/collection/components/backdrop/backdrop.js +1 -1
  189. package/dist/collection/components/badge/badge.js +2 -2
  190. package/dist/collection/components/badge/test/a11y/badge.e2e.js +1 -1
  191. package/dist/collection/components/breadcrumb/breadcrumb.js +2 -2
  192. package/dist/collection/components/breadcrumbs/breadcrumbs.js +2 -2
  193. package/dist/collection/components/button/button.js +2 -2
  194. package/dist/collection/components/button/test/a11y/button.e2e.js +2 -2
  195. package/dist/collection/components/buttons/buttons.js +2 -2
  196. package/dist/collection/components/card/card.js +1 -1
  197. package/dist/collection/components/card-content/card-content.js +1 -1
  198. package/dist/collection/components/card-header/card-header.js +2 -2
  199. package/dist/collection/components/card-subtitle/card-subtitle.js +2 -2
  200. package/dist/collection/components/card-title/card-title.js +2 -2
  201. package/dist/collection/components/checkbox/checkbox.js +3 -3
  202. package/dist/collection/components/checkbox/test/a11y/checkbox.e2e.js +1 -1
  203. package/dist/collection/components/checkbox/test/checkbox.spec.js +12 -0
  204. package/dist/collection/components/chip/chip.js +2 -2
  205. package/dist/collection/components/col/col.js +2 -2
  206. package/dist/collection/components/content/content.js +3 -3
  207. package/dist/collection/components/datetime/datetime.js +56 -12
  208. package/dist/collection/components/datetime/test/basic/datetime.e2e.js +80 -1
  209. package/dist/collection/components/datetime/test/format.spec.js +65 -15
  210. package/dist/collection/components/datetime/utils/format.js +24 -37
  211. package/dist/collection/components/datetime/utils/validate.js +45 -0
  212. package/dist/collection/components/datetime-button/datetime-button.js +11 -10
  213. package/dist/collection/components/datetime-button/test/basic/datetime-button.e2e.js +65 -0
  214. package/dist/collection/components/fab/fab.js +2 -2
  215. package/dist/collection/components/fab-button/fab-button.js +2 -2
  216. package/dist/collection/components/fab-button/test/a11y/fab-button.e2e.js +1 -1
  217. package/dist/collection/components/fab-list/fab-list.js +2 -2
  218. package/dist/collection/components/footer/footer.js +2 -2
  219. package/dist/collection/components/grid/grid.js +2 -2
  220. package/dist/collection/components/header/header.ios.css +5 -2
  221. package/dist/collection/components/header/header.js +2 -2
  222. package/dist/collection/components/header/test/basic/header.e2e.js +77 -0
  223. package/dist/collection/components/img/img.js +1 -1
  224. package/dist/collection/components/infinite-scroll/infinite-scroll.js +1 -1
  225. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +2 -2
  226. package/dist/collection/components/input/input.ios.css +15 -3
  227. package/dist/collection/components/input/input.js +26 -29
  228. package/dist/collection/components/input/input.md.css +17 -5
  229. package/dist/collection/components/input/test/a11y/input.e2e.js +1 -1
  230. package/dist/collection/components/input/test/highlight/input.e2e.js +144 -0
  231. package/dist/collection/components/input/test/item/input.e2e.js +21 -0
  232. package/dist/collection/components/input/test/slot/input.e2e.js +8 -0
  233. package/dist/collection/components/input-password-toggle/input-password-toggle.ios.css +0 -0
  234. package/dist/collection/components/input-password-toggle/input-password-toggle.js +183 -0
  235. package/dist/collection/components/input-password-toggle/input-password-toggle.md.css +0 -0
  236. package/dist/collection/components/input-password-toggle/test/a11y/input-password-toggle.e2e.js +21 -0
  237. package/dist/collection/components/input-password-toggle/test/basic/input-password-toggle.e2e.js +38 -0
  238. package/dist/collection/components/input-password-toggle/test/input-password-toggle.spec.js +76 -0
  239. package/dist/collection/components/item/item.ios.css +6 -198
  240. package/dist/collection/components/item/item.js +22 -170
  241. package/dist/collection/components/item/item.md.css +8 -361
  242. package/dist/collection/components/item/test/basic/item.e2e.js +0 -5
  243. package/dist/collection/components/item/test/buttons/item.e2e.js +20 -4
  244. package/dist/collection/components/item/test/item.spec.js +1 -1
  245. package/dist/collection/components/item-sliding/test/a11y/item-sliding.e2e.js +1 -1
  246. package/dist/collection/components/label/label.ios.css +0 -5
  247. package/dist/collection/components/label/label.js +1 -1
  248. package/dist/collection/components/label/label.md.css +0 -75
  249. package/dist/collection/components/label/test/a11y/label.e2e.js +1 -1
  250. package/dist/collection/components/list-header/list-header.js +2 -2
  251. package/dist/collection/components/loading/loading.js +2 -2
  252. package/dist/collection/components/loading/test/a11y/loading.e2e.js +1 -1
  253. package/dist/collection/components/menu/menu.js +16 -30
  254. package/dist/collection/components/menu-button/menu-button.js +2 -2
  255. package/dist/collection/components/menu-button/test/a11y/menu-button.e2e.js +1 -1
  256. package/dist/collection/components/menu-toggle/menu-toggle.js +2 -2
  257. package/dist/collection/components/modal/modal.js +37 -5
  258. package/dist/collection/components/modal/test/modal-attributes.spec.js +32 -0
  259. package/dist/collection/components/nav/nav.js +1 -1
  260. package/dist/collection/components/nav-link/nav-link.js +1 -1
  261. package/dist/collection/components/note/note.js +2 -2
  262. package/dist/collection/components/picker/picker.js +2 -2
  263. package/dist/collection/components/picker-column/picker-column.js +25 -6
  264. package/dist/collection/components/picker-column-option/picker-column-option.js +2 -2
  265. package/dist/collection/components/picker-legacy/picker.js +2 -2
  266. package/dist/collection/components/picker-legacy-column/picker-column.js +2 -2
  267. package/dist/collection/components/popover/popover.js +5 -4
  268. package/dist/collection/components/progress-bar/progress-bar.js +1 -1
  269. package/dist/collection/components/progress-bar/test/a11y/progress-bar.e2e.js +1 -1
  270. package/dist/collection/components/radio/test/a11y/radio.e2e.js +1 -1
  271. package/dist/collection/components/range/range.js +137 -45
  272. package/dist/collection/components/range/test/a11y/range.e2e.js +1 -1
  273. package/dist/collection/components/range/test/label/range.spec.js +24 -0
  274. package/dist/collection/components/range/test/range-events.e2e.js +27 -0
  275. package/dist/collection/components/refresher/refresher.js +1 -1
  276. package/dist/collection/components/refresher/test/a11y/refresher.e2e.js +1 -1
  277. package/dist/collection/components/refresher-content/refresher-content.js +1 -1
  278. package/dist/collection/components/reorder/reorder.js +1 -1
  279. package/dist/collection/components/reorder-group/reorder-group.js +1 -1
  280. package/dist/collection/components/ripple-effect/ripple-effect.js +1 -1
  281. package/dist/collection/components/router-link/router-link.js +2 -2
  282. package/dist/collection/components/router-link/test/a11y/router-link.e2e.js +1 -1
  283. package/dist/collection/components/router-outlet/router-outlet.js +1 -1
  284. package/dist/collection/components/row/row.js +1 -1
  285. package/dist/collection/components/searchbar/searchbar.js +84 -5
  286. package/dist/collection/components/searchbar/test/searchbar.spec.js +20 -2
  287. package/dist/collection/components/segment/segment.js +2 -2
  288. package/dist/collection/components/segment/test/a11y/segment.e2e.js +1 -1
  289. package/dist/collection/components/segment-button/segment-button.js +3 -3
  290. package/dist/collection/components/select/select.ios.css +7 -2
  291. package/dist/collection/components/select/select.js +7 -7
  292. package/dist/collection/components/select/select.md.css +6 -29
  293. package/dist/collection/components/select/test/a11y/select.e2e.js +1 -1
  294. package/dist/collection/components/select/test/highlight/select.e2e.js +88 -4
  295. package/dist/collection/components/select/test/select.spec.js +22 -0
  296. package/dist/collection/components/select/test/slot/select.e2e.js +8 -0
  297. package/dist/collection/components/select-option/select-option.js +1 -1
  298. package/dist/collection/components/select-popover/select-popover.js +1 -1
  299. package/dist/collection/components/select-popover/test/a11y/select-popover.e2e.js +1 -1
  300. package/dist/collection/components/skeleton-text/skeleton-text.js +2 -2
  301. package/dist/collection/components/spinner/spinner.js +1 -1
  302. package/dist/collection/components/split-pane/split-pane.js +2 -2
  303. package/dist/collection/components/tab/tab.js +2 -2
  304. package/dist/collection/components/tab-bar/tab-bar.js +2 -2
  305. package/dist/collection/components/tab-button/tab-button.js +2 -2
  306. package/dist/collection/components/tabs/tabs.js +1 -1
  307. package/dist/collection/components/text/text.js +2 -2
  308. package/dist/collection/components/textarea/test/a11y/textarea.e2e.js +1 -1
  309. package/dist/collection/components/textarea/test/highlight/textarea.e2e.js +144 -0
  310. package/dist/collection/components/textarea/test/item/textarea.e2e.js +21 -0
  311. package/dist/collection/components/textarea/test/slot/textarea.e2e.js +8 -0
  312. package/dist/collection/components/textarea/textarea.ios.css +4 -22
  313. package/dist/collection/components/textarea/textarea.js +2 -26
  314. package/dist/collection/components/textarea/textarea.md.css +6 -17
  315. package/dist/collection/components/thumbnail/thumbnail.js +1 -1
  316. package/dist/collection/components/title/title.js +2 -2
  317. package/dist/collection/components/toast/test/a11y/toast.e2e.js +2 -2
  318. package/dist/collection/components/toast/toast.js +2 -2
  319. package/dist/collection/components/toggle/test/a11y/toggle.e2e.js +1 -1
  320. package/dist/collection/components/toggle/toggle.js +4 -4
  321. package/dist/collection/components/toolbar/toolbar.js +2 -2
  322. package/dist/collection/css/test/a11y/typography.e2e.js +1 -1
  323. package/dist/collection/themes/test/colors/theme.e2e.js +2 -2
  324. package/dist/collection/utils/animation/animation-utils.js +0 -102
  325. package/dist/collection/utils/animation/animation.js +10 -141
  326. package/dist/collection/utils/animation/test/animation.spec.js +0 -89
  327. package/dist/collection/utils/animation/test/animationbuilder/animation.e2e.js +0 -4
  328. package/dist/collection/utils/animation/test/basic/animation.e2e.js +0 -4
  329. package/dist/collection/utils/animation/test/display/animation.e2e.js +0 -4
  330. package/dist/collection/utils/animation/test/hooks/animation.e2e.js +0 -4
  331. package/dist/collection/utils/animation/test/multiple/animation.e2e.js +0 -7
  332. package/dist/collection/utils/focus-trap.js +78 -0
  333. package/dist/collection/utils/forms/index.js +0 -1
  334. package/dist/collection/utils/hardware-back-button.js +2 -2
  335. package/dist/collection/utils/helpers.js +0 -53
  336. package/dist/collection/utils/native/haptic.js +6 -54
  337. package/dist/collection/utils/overlays.js +64 -53
  338. package/dist/collection/utils/slot-mutation-controller.js +12 -0
  339. package/dist/collection/utils/test/overlays/overlays.spec.js +53 -0
  340. package/dist/collection/utils/test/playwright/generator.js +17 -17
  341. package/dist/collection/utils/test/playwright/page/utils/set-content.js +6 -6
  342. package/dist/docs.json +341 -193
  343. package/dist/esm/{animation-a4acf150.js → animation-eab5a4ca.js} +9 -250
  344. package/dist/esm/{app-globals-5cf6195b.js → app-globals-80842d68.js} +1 -1
  345. package/dist/esm/{button-active-4407b98c.js → button-active-824983fa.js} +2 -2
  346. package/dist/esm/{data-691286f1.js → data-ae11fd43.js} +23 -38
  347. package/dist/esm/{framework-delegate-1eb3236c.js → framework-delegate-3dede018.js} +1 -1
  348. package/dist/esm/{haptic-554688a5.js → haptic-ac164e4c.js} +6 -54
  349. package/dist/esm/{hardware-back-button-b410a047.js → hardware-back-button-fb295e3a.js} +5 -5
  350. package/dist/esm/{helpers-ae74b3c9.js → helpers-eab4f597.js} +1 -54
  351. package/dist/esm/{index-8758824c.js → index-0089f1fa.js} +4 -4
  352. package/dist/esm/{index-66871a1d.js → index-044b5a86.js} +1 -1
  353. package/dist/esm/{index-4c30cddd.js → index-5d6a0317.js} +443 -15
  354. package/dist/esm/{index-f7dc70ba.js → index-e2cf2ceb.js} +3 -1
  355. package/dist/esm/{index-1eff8599.js → index-f27077ac.js} +4 -4
  356. package/dist/esm/{index-1f563746.js → index-fa221975.js} +1 -1
  357. package/dist/esm/index.js +11 -11
  358. package/dist/esm/{input-shims-56c1f603.js → input-shims-196afa11.js} +2 -2
  359. package/dist/esm/{input.utils-482fc893.js → input.utils-426cc674.js} +13 -1
  360. package/dist/esm/ion-accordion_2.entry.js +4 -4
  361. package/dist/esm/ion-action-sheet.entry.js +12 -12
  362. package/dist/esm/ion-alert.entry.js +11 -11
  363. package/dist/esm/ion-app_8.entry.js +30 -30
  364. package/dist/esm/ion-avatar_3.entry.js +6 -6
  365. package/dist/esm/ion-back-button.entry.js +6 -6
  366. package/dist/esm/ion-backdrop.entry.js +3 -3
  367. package/dist/esm/ion-breadcrumb_2.entry.js +8 -8
  368. package/dist/esm/ion-button_2.entry.js +5 -5
  369. package/dist/esm/ion-card_5.entry.js +11 -11
  370. package/dist/esm/ion-checkbox.entry.js +6 -6
  371. package/dist/esm/ion-chip.entry.js +4 -4
  372. package/dist/esm/ion-col_3.entry.js +7 -7
  373. package/dist/esm/ion-datetime-button.entry.js +14 -13
  374. package/dist/esm/ion-datetime_3.entry.js +85 -25
  375. package/dist/esm/ion-fab_3.entry.js +10 -10
  376. package/dist/esm/ion-img.entry.js +4 -4
  377. package/dist/esm/ion-infinite-scroll_2.entry.js +7 -7
  378. package/dist/esm/ion-input-password-toggle.entry.js +89 -0
  379. package/dist/esm/ion-input.entry.js +30 -12
  380. package/dist/esm/ion-item-option_3.entry.js +4 -4
  381. package/dist/esm/ion-item_8.entry.js +37 -92
  382. package/dist/esm/ion-loading.entry.js +9 -9
  383. package/dist/esm/ion-menu_3.entry.js +18 -39
  384. package/dist/esm/ion-modal.entry.js +46 -14
  385. package/dist/esm/ion-nav_2.entry.js +8 -8
  386. package/dist/esm/ion-picker-column-option.entry.js +5 -5
  387. package/dist/esm/ion-picker-column.entry.js +29 -10
  388. package/dist/esm/ion-picker.entry.js +4 -4
  389. package/dist/esm/ion-popover.entry.js +11 -11
  390. package/dist/esm/ion-progress-bar.entry.js +4 -4
  391. package/dist/esm/ion-radio_2.entry.js +3 -3
  392. package/dist/esm/ion-range.entry.js +140 -48
  393. package/dist/esm/ion-refresher_2.entry.js +9 -9
  394. package/dist/esm/ion-reorder_2.entry.js +8 -8
  395. package/dist/esm/ion-ripple-effect.entry.js +3 -3
  396. package/dist/esm/ion-route_4.entry.js +5 -5
  397. package/dist/esm/ion-searchbar.entry.js +32 -8
  398. package/dist/esm/ion-segment_2.entry.js +8 -8
  399. package/dist/esm/ion-select_3.entry.js +18 -18
  400. package/dist/esm/ion-spinner.entry.js +3 -3
  401. package/dist/esm/ion-split-pane.entry.js +4 -4
  402. package/dist/esm/ion-tab-bar_2.entry.js +7 -7
  403. package/dist/esm/ion-tab_2.entry.js +6 -6
  404. package/dist/esm/ion-text.entry.js +4 -4
  405. package/dist/esm/ion-textarea.entry.js +9 -10
  406. package/dist/esm/ion-toast.entry.js +9 -9
  407. package/dist/esm/ion-toggle.entry.js +8 -8
  408. package/dist/esm/{ionic-global-ad9a1810.js → ionic-global-a589c12c.js} +1 -1
  409. package/dist/esm/ionic.js +29 -6
  410. package/dist/esm/{ios.transition-189b73b7.js → ios.transition-632deb95.js} +4 -4
  411. package/dist/esm/loader.js +5 -5
  412. package/dist/esm/{md.transition-c9761eef.js → md.transition-3bcf4011.js} +4 -4
  413. package/dist/esm/{notch-controller-18bf9f76.js → notch-controller-cff691e5.js} +1 -1
  414. package/dist/esm/{overlays-c69d2a07.js → overlays-d41f74ac.js} +142 -57
  415. package/dist/esm/{status-tap-1d638ee6.js → status-tap-45595148.js} +3 -3
  416. package/dist/esm/{swipe-back-348f1971.js → swipe-back-57844616.js} +1 -1
  417. package/dist/esm-es5/animation-eab5a4ca.js +4 -0
  418. package/dist/esm-es5/app-globals-80842d68.js +4 -0
  419. package/dist/esm-es5/{button-active-4407b98c.js → button-active-824983fa.js} +1 -1
  420. package/dist/esm-es5/data-ae11fd43.js +4 -0
  421. package/dist/esm-es5/{framework-delegate-1eb3236c.js → framework-delegate-3dede018.js} +1 -1
  422. package/dist/esm-es5/haptic-ac164e4c.js +4 -0
  423. package/dist/esm-es5/hardware-back-button-fb295e3a.js +4 -0
  424. package/dist/esm-es5/helpers-eab4f597.js +4 -0
  425. package/dist/esm-es5/{index-8758824c.js → index-0089f1fa.js} +1 -1
  426. package/dist/esm-es5/{index-66871a1d.js → index-044b5a86.js} +1 -1
  427. package/dist/esm-es5/index-5d6a0317.js +5 -0
  428. package/dist/esm-es5/{index-f7dc70ba.js → index-e2cf2ceb.js} +1 -1
  429. package/dist/esm-es5/{index-1eff8599.js → index-f27077ac.js} +1 -1
  430. package/dist/esm-es5/{index-1f563746.js → index-fa221975.js} +1 -1
  431. package/dist/esm-es5/index.js +1 -1
  432. package/dist/esm-es5/{input-shims-56c1f603.js → input-shims-196afa11.js} +1 -1
  433. package/dist/esm-es5/input.utils-426cc674.js +4 -0
  434. package/dist/esm-es5/ion-accordion_2.entry.js +1 -1
  435. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  436. package/dist/esm-es5/ion-alert.entry.js +1 -1
  437. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  438. package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
  439. package/dist/esm-es5/ion-back-button.entry.js +1 -1
  440. package/dist/esm-es5/ion-backdrop.entry.js +1 -1
  441. package/dist/esm-es5/ion-breadcrumb_2.entry.js +1 -1
  442. package/dist/esm-es5/ion-button_2.entry.js +1 -1
  443. package/dist/esm-es5/ion-card_5.entry.js +1 -1
  444. package/dist/esm-es5/ion-checkbox.entry.js +1 -1
  445. package/dist/esm-es5/ion-chip.entry.js +1 -1
  446. package/dist/esm-es5/ion-col_3.entry.js +1 -1
  447. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  448. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  449. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  450. package/dist/esm-es5/ion-img.entry.js +1 -1
  451. package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
  452. package/dist/esm-es5/ion-input-password-toggle.entry.js +4 -0
  453. package/dist/esm-es5/ion-input.entry.js +1 -1
  454. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  455. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  456. package/dist/esm-es5/ion-loading.entry.js +1 -1
  457. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  458. package/dist/esm-es5/ion-modal.entry.js +1 -1
  459. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  460. package/dist/esm-es5/ion-picker-column-option.entry.js +1 -1
  461. package/dist/esm-es5/ion-picker-column.entry.js +1 -1
  462. package/dist/esm-es5/ion-picker.entry.js +1 -1
  463. package/dist/esm-es5/ion-popover.entry.js +1 -1
  464. package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
  465. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  466. package/dist/esm-es5/ion-range.entry.js +1 -1
  467. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  468. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  469. package/dist/esm-es5/ion-ripple-effect.entry.js +1 -1
  470. package/dist/esm-es5/ion-route_4.entry.js +1 -1
  471. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  472. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  473. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  474. package/dist/esm-es5/ion-spinner.entry.js +1 -1
  475. package/dist/esm-es5/ion-split-pane.entry.js +1 -1
  476. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  477. package/dist/esm-es5/ion-tab_2.entry.js +1 -1
  478. package/dist/esm-es5/ion-text.entry.js +1 -1
  479. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  480. package/dist/esm-es5/ion-toast.entry.js +1 -1
  481. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  482. package/dist/esm-es5/{ionic-global-ad9a1810.js → ionic-global-a589c12c.js} +1 -1
  483. package/dist/esm-es5/ionic.js +1 -1
  484. package/dist/esm-es5/{ios.transition-189b73b7.js → ios.transition-632deb95.js} +1 -1
  485. package/dist/esm-es5/loader.js +1 -1
  486. package/dist/esm-es5/md.transition-3bcf4011.js +4 -0
  487. package/dist/esm-es5/{notch-controller-18bf9f76.js → notch-controller-cff691e5.js} +1 -1
  488. package/dist/esm-es5/overlays-d41f74ac.js +4 -0
  489. package/dist/esm-es5/{status-tap-1d638ee6.js → status-tap-45595148.js} +1 -1
  490. package/dist/esm-es5/{swipe-back-348f1971.js → swipe-back-57844616.js} +1 -1
  491. package/dist/html.html-data.json +93 -27
  492. package/dist/ionic/index.esm.js +1 -1
  493. package/dist/ionic/ionic.esm.js +1 -1
  494. package/dist/ionic/ionic.js +1 -1
  495. package/dist/ionic/{p-5d7e32ce.js → p-031c5621.js} +1 -1
  496. package/dist/ionic/{p-1a4db355.system.entry.js → p-04bdc816.system.entry.js} +2 -2
  497. package/dist/ionic/p-07759435.system.js +4 -0
  498. package/dist/ionic/{p-4bbc949f.system.entry.js → p-07927036.system.entry.js} +1 -1
  499. package/dist/ionic/p-0e4c9e45.system.js +4 -0
  500. package/dist/ionic/{p-3c51cf97.system.entry.js → p-103ec049.system.entry.js} +1 -1
  501. package/dist/ionic/{p-f7d802e1.entry.js → p-126207f8.entry.js} +1 -1
  502. package/dist/ionic/{p-4dfe0487.system.entry.js → p-1d3f79b2.system.entry.js} +1 -1
  503. package/dist/ionic/{p-6e14d3ca.system.entry.js → p-1d528988.system.entry.js} +1 -1
  504. package/dist/ionic/p-1e955a45.system.js +4 -0
  505. package/dist/ionic/p-20bf9f84.entry.js +4 -0
  506. package/dist/ionic/{p-6dbea874.system.entry.js → p-210248f5.system.entry.js} +1 -1
  507. package/dist/ionic/{p-3d77b300.system.entry.js → p-219c17cf.system.entry.js} +1 -1
  508. package/dist/ionic/{p-de0a7606.system.entry.js → p-23838a94.system.entry.js} +1 -1
  509. package/dist/ionic/{p-ceceac26.js → p-239906f1.js} +1 -1
  510. package/dist/ionic/{p-916a4e14.entry.js → p-2807660b.entry.js} +1 -1
  511. package/dist/ionic/{p-0612cdcc.system.entry.js → p-282bd5f9.system.entry.js} +1 -1
  512. package/dist/ionic/p-29ef3b9b.entry.js +4 -0
  513. package/dist/ionic/{p-8a50f8d6.system.js → p-2cc2c631.system.js} +1 -1
  514. package/dist/ionic/p-2d34b04a.system.entry.js +4 -0
  515. package/dist/ionic/p-2f53c3eb.js +4 -0
  516. package/dist/ionic/{p-174856b4.system.js → p-31794e40.system.js} +1 -1
  517. package/dist/ionic/{p-c880c809.js → p-325c61a4.js} +1 -1
  518. package/dist/ionic/p-34b8c5bc.entry.js +4 -0
  519. package/dist/ionic/{p-cefbb7b7.entry.js → p-3599e243.entry.js} +1 -1
  520. package/dist/ionic/p-364044f0.js +4 -0
  521. package/dist/ionic/{p-3807cd45.system.entry.js → p-3739de23.system.entry.js} +1 -1
  522. package/dist/ionic/{p-d84c9fc4.entry.js → p-3785c067.entry.js} +1 -1
  523. package/dist/ionic/p-3895e131.system.entry.js +4 -0
  524. package/dist/ionic/p-38b129b6.entry.js +4 -0
  525. package/dist/ionic/p-38e25e67.js +4 -0
  526. package/dist/ionic/{p-3209217f.entry.js → p-3ad1b1c5.entry.js} +1 -1
  527. package/dist/ionic/p-3bf7a38d.system.entry.js +4 -0
  528. package/dist/ionic/{p-2dcf2ec2.system.entry.js → p-3c1aac30.system.entry.js} +1 -1
  529. package/dist/ionic/{p-d7c78a97.system.entry.js → p-3d55c50f.system.entry.js} +1 -1
  530. package/dist/ionic/{p-fd783a38.system.entry.js → p-3e6e53fe.system.entry.js} +1 -1
  531. package/dist/ionic/{p-174b0d50.system.entry.js → p-40976b1c.system.entry.js} +1 -1
  532. package/dist/ionic/{p-acf70e64.system.entry.js → p-456ae20a.system.entry.js} +1 -1
  533. package/dist/ionic/p-468e20c0.system.entry.js +4 -0
  534. package/dist/ionic/p-49e5401f.entry.js +4 -0
  535. package/dist/ionic/{p-c9e21694.system.entry.js → p-4a20a758.system.entry.js} +1 -1
  536. package/dist/ionic/p-4a3055ef.system.js +4 -0
  537. package/dist/ionic/{p-e46adaf1.system.entry.js → p-4b318f5e.system.entry.js} +1 -1
  538. package/dist/ionic/{p-b2d58604.system.entry.js → p-4d21e85e.system.entry.js} +2 -2
  539. package/dist/ionic/p-4decdc16.system.entry.js +4 -0
  540. package/dist/ionic/{p-ef9736b9.entry.js → p-50633cad.entry.js} +1 -1
  541. package/dist/ionic/{p-1f79e54a.entry.js → p-527e1d8a.entry.js} +1 -1
  542. package/dist/ionic/{p-6aeb0272.entry.js → p-5644df37.entry.js} +1 -1
  543. package/dist/ionic/p-564554d0.system.js +4 -0
  544. package/dist/ionic/{p-16e06393.system.js → p-56864c25.system.js} +1 -1
  545. package/dist/ionic/{p-f7c3d736.system.entry.js → p-57a3b59e.system.entry.js} +1 -1
  546. package/dist/ionic/{p-8fe3c4ef.entry.js → p-5b4b977f.entry.js} +1 -1
  547. package/dist/ionic/p-5b52897c.js +4 -0
  548. package/dist/ionic/{p-415ccddd.entry.js → p-5c6d4276.entry.js} +1 -1
  549. package/dist/ionic/{p-9f84474d.entry.js → p-5f6c0372.entry.js} +1 -1
  550. package/dist/ionic/{p-97248203.system.entry.js → p-647981a4.system.entry.js} +1 -1
  551. package/dist/ionic/{p-f0a7e80b.js → p-652a7913.js} +1 -1
  552. package/dist/ionic/p-659d8f84.entry.js +4 -0
  553. package/dist/ionic/p-668607c2.system.js +4 -0
  554. package/dist/ionic/{p-5d530ae5.entry.js → p-66e50777.entry.js} +1 -1
  555. package/dist/ionic/{p-eb9803e9.system.js → p-6a62da36.system.js} +1 -1
  556. package/dist/ionic/p-6f734552.system.entry.js +4 -0
  557. package/dist/ionic/{p-1df25966.entry.js → p-7002bc75.entry.js} +1 -1
  558. package/dist/ionic/{p-de55ec45.js → p-78b3da77.js} +1 -1
  559. package/dist/ionic/{p-5133c4a3.system.entry.js → p-7abeea68.system.entry.js} +1 -1
  560. package/dist/ionic/{p-df6a1571.entry.js → p-7b8ece87.entry.js} +1 -1
  561. package/dist/ionic/p-7c4c37ae.system.js +4 -0
  562. package/dist/ionic/p-7c7e495d.system.js +4 -0
  563. package/dist/ionic/p-84025e3c.entry.js +4 -0
  564. package/dist/ionic/{p-ec77b7ad.system.entry.js → p-8412860b.system.entry.js} +1 -1
  565. package/dist/ionic/p-8543c360.system.entry.js +4 -0
  566. package/dist/ionic/{p-12b55b00.system.entry.js → p-86bdb32e.system.entry.js} +1 -1
  567. package/dist/ionic/p-8818519d.entry.js +4 -0
  568. package/dist/ionic/{p-ef636601.entry.js → p-887984fc.entry.js} +1 -1
  569. package/dist/ionic/p-89b61afc.js +4 -0
  570. package/dist/ionic/{p-1d545773.entry.js → p-8ed900e4.entry.js} +1 -1
  571. package/dist/ionic/p-9146695e.system.js +4 -0
  572. package/dist/ionic/{p-0dca0eee.system.entry.js → p-91567c90.system.entry.js} +1 -1
  573. package/dist/ionic/{p-f2473724.js → p-91a83ede.js} +1 -1
  574. package/dist/ionic/{p-c8d61b6c.system.entry.js → p-92b05b70.system.entry.js} +1 -1
  575. package/dist/ionic/p-96c06026.entry.js +4 -0
  576. package/dist/ionic/p-978f4710.js +4 -0
  577. package/dist/ionic/{p-973c7550.system.entry.js → p-9a4b9c91.system.entry.js} +1 -1
  578. package/dist/ionic/p-9b5d033a.system.entry.js +4 -0
  579. package/dist/ionic/p-9d00a694.system.entry.js +4 -0
  580. package/dist/ionic/{p-6525a8cd.system.js → p-9e3177a5.system.js} +1 -1
  581. package/dist/ionic/p-9fd5857a.system.entry.js +4 -0
  582. package/dist/ionic/{p-1e07fdb2.system.entry.js → p-a2dc2ef1.system.entry.js} +2 -2
  583. package/dist/ionic/p-a3dae2ce.js +4 -0
  584. package/dist/ionic/{p-8d4d902b.js → p-a600a3e3.js} +1 -1
  585. package/dist/ionic/{p-5f9fbad0.entry.js → p-a668e0d4.entry.js} +1 -1
  586. package/dist/ionic/{p-80704be1.entry.js → p-a6ac25f2.entry.js} +1 -1
  587. package/dist/ionic/p-a6bce1f5.js +4 -0
  588. package/dist/ionic/{p-34d0f143.system.entry.js → p-a7270027.system.entry.js} +1 -1
  589. package/dist/ionic/p-a93873de.system.js +4 -0
  590. package/dist/ionic/p-a9d2fa95.entry.js +4 -0
  591. package/dist/ionic/{p-98e6b3b8.system.js → p-ab6879e7.system.js} +1 -1
  592. package/dist/ionic/{p-717c4b72.entry.js → p-ac585dba.entry.js} +1 -1
  593. package/dist/ionic/{p-89ca4c4b.system.js → p-af9256a0.system.js} +1 -1
  594. package/dist/ionic/p-b05c33d0.system.entry.js +4 -0
  595. package/dist/ionic/{p-2b3544ad.entry.js → p-b141e253.entry.js} +1 -1
  596. package/dist/ionic/{p-5d64e680.entry.js → p-b6d1ce6c.entry.js} +1 -1
  597. package/dist/ionic/p-bb01ff24.system.entry.js +4 -0
  598. package/dist/ionic/p-bb151f4b.entry.js +4 -0
  599. package/dist/ionic/p-c385e49d.entry.js +4 -0
  600. package/dist/ionic/p-c3f5d0e7.js +4 -0
  601. package/dist/ionic/p-c629d22b.system.js +5 -0
  602. package/dist/ionic/{p-15708968.js → p-c6f9f3eb.js} +1 -1
  603. package/dist/ionic/p-c7e16491.js +4 -0
  604. package/dist/ionic/p-c83741f7.entry.js +4 -0
  605. package/dist/ionic/{p-993da5df.entry.js → p-c8383c20.entry.js} +1 -1
  606. package/dist/ionic/{p-d7dc29c5.entry.js → p-c947155d.entry.js} +1 -1
  607. package/dist/ionic/{p-00a762c9.entry.js → p-cb970588.entry.js} +1 -1
  608. package/dist/ionic/{p-31e02742.system.js → p-cbb9269d.system.js} +1 -1
  609. package/dist/ionic/{p-dd7c79ce.system.entry.js → p-cc769fb6.system.entry.js} +1 -1
  610. package/dist/ionic/{p-5797981d.system.entry.js → p-cc978d16.system.entry.js} +2 -2
  611. package/dist/ionic/{p-b434ded7.system.entry.js → p-ce436e94.system.entry.js} +1 -1
  612. package/dist/ionic/{p-6ad90d41.entry.js → p-ce9eafa3.entry.js} +1 -1
  613. package/dist/ionic/p-cf07fee5.entry.js +4 -0
  614. package/dist/ionic/p-d0adc028.system.entry.js +4 -0
  615. package/dist/ionic/p-d0d674d0.entry.js +4 -0
  616. package/dist/ionic/p-d35d485c.entry.js +4 -0
  617. package/dist/ionic/p-d60342e3.js +4 -0
  618. package/dist/ionic/{p-816476b0.system.js → p-d704f798.system.js} +1 -1
  619. package/dist/ionic/p-d80b7e31.system.js +4 -0
  620. package/dist/ionic/p-d834c508.entry.js +4 -0
  621. package/dist/ionic/p-da2b833b.js +4 -0
  622. package/dist/ionic/{p-385f66bc.entry.js → p-da5bbd4f.entry.js} +1 -1
  623. package/dist/ionic/{p-5e70f800.system.entry.js → p-dbd782ec.system.entry.js} +1 -1
  624. package/dist/ionic/{p-e1819aee.js → p-e066780e.js} +1 -1
  625. package/dist/ionic/{p-1ea88de9.system.js → p-e0d52ee3.system.js} +2 -2
  626. package/dist/ionic/p-e170e351.js +4 -0
  627. package/dist/ionic/{p-0a8a78db.system.entry.js → p-e1d4298f.system.entry.js} +1 -1
  628. package/dist/ionic/p-e7b0b64d.system.js +4 -0
  629. package/dist/ionic/p-e7cd7553.system.js +4 -0
  630. package/dist/ionic/p-f270059b.entry.js +4 -0
  631. package/dist/ionic/p-f40aa619.entry.js +4 -0
  632. package/dist/ionic/{p-c6dbc089.system.entry.js → p-f47c47f2.system.entry.js} +1 -1
  633. package/dist/ionic/p-f687573e.system.js +4 -0
  634. package/dist/ionic/p-f8502e85.js +5 -0
  635. package/dist/ionic/p-facad328.entry.js +4 -0
  636. package/dist/ionic/{p-ab427719.entry.js → p-fbf23235.entry.js} +1 -1
  637. package/dist/ionic/{p-3c47c5c8.system.entry.js → p-fe5ff8fb.system.entry.js} +1 -1
  638. package/dist/ionic/{p-9d795c4b.entry.js → p-fe8f0dd2.entry.js} +1 -1
  639. package/dist/types/components/datetime/datetime-interface.d.ts +10 -0
  640. package/dist/types/components/datetime/datetime.d.ts +10 -1
  641. package/dist/types/components/datetime/utils/format.d.ts +7 -13
  642. package/dist/types/components/datetime/utils/validate.d.ts +8 -0
  643. package/dist/types/components/input/input.d.ts +7 -6
  644. package/dist/types/components/input-password-toggle/input-password-toggle.d.ts +37 -0
  645. package/dist/types/components/item/item.d.ts +0 -32
  646. package/dist/types/components/menu/menu-interface.d.ts +1 -0
  647. package/dist/types/components/menu/menu.d.ts +2 -4
  648. package/dist/types/components/range/range.d.ts +29 -0
  649. package/dist/types/components/searchbar/searchbar.d.ts +38 -0
  650. package/dist/types/components/textarea/textarea.d.ts +1 -6
  651. package/dist/types/components/toggle/toggle.d.ts +1 -1
  652. package/dist/types/components.d.ts +86 -50
  653. package/dist/types/utils/animation/animation-utils.d.ts +0 -12
  654. package/dist/types/utils/focus-trap.d.ts +35 -0
  655. package/dist/types/utils/forms/index.d.ts +0 -1
  656. package/dist/types/utils/hardware-back-button.d.ts +1 -1
  657. package/dist/types/utils/helpers.d.ts +0 -19
  658. package/dist/types/utils/overlays.d.ts +0 -6
  659. package/dist/types/utils/test/playwright/generator.d.ts +3 -3
  660. package/hydrate/index.js +853 -821
  661. package/package.json +7 -2
  662. package/components/note.js +0 -48
  663. package/css/themes/dark.always.css.map +0 -1
  664. package/css/themes/dark.class.css.map +0 -1
  665. package/css/themes/dark.system.css.map +0 -1
  666. package/css/themes/high-contrast-dark.always.css.map +0 -1
  667. package/css/themes/high-contrast-dark.class.css.map +0 -1
  668. package/css/themes/high-contrast-dark.system.css.map +0 -1
  669. package/css/themes/high-contrast.always.css.map +0 -1
  670. package/css/themes/high-contrast.class.css.map +0 -1
  671. package/css/themes/high-contrast.system.css.map +0 -1
  672. package/dist/collection/components/item/test/legacy/disabled/item.e2e.js +0 -14
  673. package/dist/collection/components/modal/test/a11y/modal.spec.js +0 -22
  674. package/dist/collection/utils/forms/form-controller.js +0 -61
  675. package/dist/collection/utils/test/aria.spec.js +0 -80
  676. package/dist/esm-es5/animation-a4acf150.js +0 -4
  677. package/dist/esm-es5/app-globals-5cf6195b.js +0 -4
  678. package/dist/esm-es5/data-691286f1.js +0 -4
  679. package/dist/esm-es5/haptic-554688a5.js +0 -4
  680. package/dist/esm-es5/hardware-back-button-b410a047.js +0 -4
  681. package/dist/esm-es5/helpers-ae74b3c9.js +0 -4
  682. package/dist/esm-es5/index-4c30cddd.js +0 -5
  683. package/dist/esm-es5/input.utils-482fc893.js +0 -4
  684. package/dist/esm-es5/md.transition-c9761eef.js +0 -4
  685. package/dist/esm-es5/overlays-c69d2a07.js +0 -4
  686. package/dist/ionic/p-069388dd.system.js +0 -4
  687. package/dist/ionic/p-0b34d3a7.system.js +0 -4
  688. package/dist/ionic/p-0dfbbdbe.entry.js +0 -4
  689. package/dist/ionic/p-0f25a7bb.system.js +0 -4
  690. package/dist/ionic/p-11bb459e.system.entry.js +0 -4
  691. package/dist/ionic/p-13e8ad2e.entry.js +0 -4
  692. package/dist/ionic/p-17082c91.system.js +0 -4
  693. package/dist/ionic/p-19f6ac6c.system.js +0 -4
  694. package/dist/ionic/p-1deadb7f.system.js +0 -4
  695. package/dist/ionic/p-2c768965.entry.js +0 -4
  696. package/dist/ionic/p-32fb7d95.entry.js +0 -4
  697. package/dist/ionic/p-42f189f4.js +0 -4
  698. package/dist/ionic/p-446f3909.system.entry.js +0 -4
  699. package/dist/ionic/p-4a8f173c.system.js +0 -4
  700. package/dist/ionic/p-4aba0454.system.entry.js +0 -4
  701. package/dist/ionic/p-4e7abe76.js +0 -4
  702. package/dist/ionic/p-5289aade.js +0 -4
  703. package/dist/ionic/p-5dbf7222.entry.js +0 -4
  704. package/dist/ionic/p-5eabaa80.js +0 -4
  705. package/dist/ionic/p-60a92a48.system.entry.js +0 -4
  706. package/dist/ionic/p-640fac4a.system.entry.js +0 -4
  707. package/dist/ionic/p-66e6860f.system.js +0 -4
  708. package/dist/ionic/p-67c4deed.system.entry.js +0 -4
  709. package/dist/ionic/p-6d659d62.entry.js +0 -4
  710. package/dist/ionic/p-7292add8.entry.js +0 -4
  711. package/dist/ionic/p-72fa96bf.system.js +0 -5
  712. package/dist/ionic/p-75861cd3.entry.js +0 -4
  713. package/dist/ionic/p-760dbd5e.js +0 -4
  714. package/dist/ionic/p-7e185a31.entry.js +0 -4
  715. package/dist/ionic/p-831269de.js +0 -4
  716. package/dist/ionic/p-842777af.js +0 -4
  717. package/dist/ionic/p-892e2567.system.entry.js +0 -4
  718. package/dist/ionic/p-8ab308e9.js +0 -4
  719. package/dist/ionic/p-8b8b900d.entry.js +0 -4
  720. package/dist/ionic/p-93e79b55.js +0 -4
  721. package/dist/ionic/p-94f85e19.system.entry.js +0 -4
  722. package/dist/ionic/p-96107183.js +0 -4
  723. package/dist/ionic/p-986a47ee.system.entry.js +0 -4
  724. package/dist/ionic/p-9c93fdcd.js +0 -4
  725. package/dist/ionic/p-9d6f351e.js +0 -4
  726. package/dist/ionic/p-9e3b3f15.system.js +0 -4
  727. package/dist/ionic/p-9ecc1e42.entry.js +0 -4
  728. package/dist/ionic/p-a6cc38d4.js +0 -4
  729. package/dist/ionic/p-aaaefef6.entry.js +0 -4
  730. package/dist/ionic/p-bca27ea7.entry.js +0 -4
  731. package/dist/ionic/p-c68e75ea.system.js +0 -4
  732. package/dist/ionic/p-c995da88.system.js +0 -4
  733. package/dist/ionic/p-cb944b1a.system.js +0 -4
  734. package/dist/ionic/p-cd0ffc8c.entry.js +0 -4
  735. package/dist/ionic/p-d13689a6.entry.js +0 -4
  736. package/dist/ionic/p-d47a1a78.system.entry.js +0 -4
  737. package/dist/ionic/p-d8643420.system.entry.js +0 -4
  738. package/dist/ionic/p-d9b6b588.entry.js +0 -4
  739. package/dist/ionic/p-df504a37.system.js +0 -4
  740. package/dist/ionic/p-dfb6de03.system.js +0 -4
  741. package/dist/ionic/p-e311af42.entry.js +0 -4
  742. package/dist/ionic/p-e4eeb3af.entry.js +0 -4
  743. package/dist/ionic/p-e755046f.system.entry.js +0 -4
  744. package/dist/ionic/p-ed7a529f.js +0 -5
  745. package/dist/ionic/p-f7ccf8d9.entry.js +0 -4
  746. package/dist/types/utils/forms/form-controller.d.ts +0 -15
  747. package/css/{themes → palettes}/dark.always.css +0 -0
  748. package/css/{themes → palettes}/dark.css +0 -0
  749. package/css/{themes → palettes}/dark.css.map +0 -0
  750. package/css/{themes → palettes}/dark.system.css +0 -0
  751. package/css/{themes → palettes}/high-contrast-dark.always.css +1 -1
  752. package/css/{themes → palettes}/high-contrast-dark.css +0 -0
  753. package/css/{themes → palettes}/high-contrast-dark.css.map +0 -0
  754. package/css/{themes → palettes}/high-contrast-dark.system.css +1 -1
  755. package/css/{themes → palettes}/high-contrast.always.css +25 -25
  756. package/css/{themes → palettes}/high-contrast.css +0 -0
  757. package/css/{themes → palettes}/high-contrast.css.map +0 -0
  758. package/css/{themes → palettes}/high-contrast.system.css +25 -25
@@ -2,36 +2,6 @@
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
4
  let animationPrefix;
5
- /**
6
- * Web Animations requires hyphenated CSS properties
7
- * to be written in camelCase when animating
8
- */
9
- export const processKeyframes = (keyframes) => {
10
- keyframes.forEach((keyframe) => {
11
- for (const key in keyframe) {
12
- // eslint-disable-next-line no-prototype-builtins
13
- if (keyframe.hasOwnProperty(key)) {
14
- const value = keyframe[key];
15
- if (key === 'easing') {
16
- const newKey = 'animation-timing-function';
17
- keyframe[newKey] = value;
18
- delete keyframe[key];
19
- }
20
- else {
21
- const newKey = convertCamelCaseToHypen(key);
22
- if (newKey !== key) {
23
- keyframe[newKey] = value;
24
- delete keyframe[key];
25
- }
26
- }
27
- }
28
- }
29
- });
30
- return keyframes;
31
- };
32
- const convertCamelCaseToHypen = (str) => {
33
- return str.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();
34
- };
35
5
  export const getAnimationPrefix = (el) => {
36
6
  if (animationPrefix === undefined) {
37
7
  const supportsUnprefixed = el.style.animationName !== undefined;
@@ -44,78 +14,6 @@ export const setStyleProperty = (element, propertyName, value) => {
44
14
  const prefix = propertyName.startsWith('animation') ? getAnimationPrefix(element) : '';
45
15
  element.style.setProperty(prefix + propertyName, value);
46
16
  };
47
- export const removeStyleProperty = (element, propertyName) => {
48
- const prefix = propertyName.startsWith('animation') ? getAnimationPrefix(element) : '';
49
- element.style.removeProperty(prefix + propertyName);
50
- };
51
- export const animationEnd = (el, callback) => {
52
- let unRegTrans;
53
- const opts = { passive: true };
54
- const unregister = () => {
55
- if (unRegTrans) {
56
- unRegTrans();
57
- }
58
- };
59
- const onTransitionEnd = (ev) => {
60
- if (el === ev.target) {
61
- unregister();
62
- callback(ev);
63
- }
64
- };
65
- if (el) {
66
- el.addEventListener('webkitAnimationEnd', onTransitionEnd, opts);
67
- el.addEventListener('animationend', onTransitionEnd, opts);
68
- unRegTrans = () => {
69
- el.removeEventListener('webkitAnimationEnd', onTransitionEnd, opts);
70
- el.removeEventListener('animationend', onTransitionEnd, opts);
71
- };
72
- }
73
- return unregister;
74
- };
75
- // TODO(FW-2832): type
76
- export const generateKeyframeRules = (keyframes = []) => {
77
- return keyframes
78
- .map((keyframe) => {
79
- const offset = keyframe.offset;
80
- const frameString = [];
81
- for (const property in keyframe) {
82
- // eslint-disable-next-line no-prototype-builtins
83
- if (keyframe.hasOwnProperty(property) && property !== 'offset') {
84
- frameString.push(`${property}: ${keyframe[property]};`);
85
- }
86
- }
87
- return `${offset * 100}% { ${frameString.join(' ')} }`;
88
- })
89
- .join(' ');
90
- };
91
- const keyframeIds = [];
92
- export const generateKeyframeName = (keyframeRules) => {
93
- let index = keyframeIds.indexOf(keyframeRules);
94
- if (index < 0) {
95
- index = keyframeIds.push(keyframeRules) - 1;
96
- }
97
- return `ion-animation-${index}`;
98
- };
99
- export const getStyleContainer = (element) => {
100
- // getRootNode is not always available in SSR environments.
101
- // TODO(FW-2832): types
102
- const rootNode = element.getRootNode !== undefined ? element.getRootNode() : element;
103
- return rootNode.head || rootNode;
104
- };
105
- export const createKeyframeStylesheet = (keyframeName, keyframeRules, element) => {
106
- var _a;
107
- const styleContainer = getStyleContainer(element);
108
- const keyframePrefix = getAnimationPrefix(element);
109
- const existingStylesheet = styleContainer.querySelector('#' + keyframeName);
110
- if (existingStylesheet) {
111
- return existingStylesheet;
112
- }
113
- const stylesheet = ((_a = element.ownerDocument) !== null && _a !== void 0 ? _a : document).createElement('style');
114
- stylesheet.id = keyframeName;
115
- stylesheet.textContent = `@${keyframePrefix}keyframes ${keyframeName} { ${keyframeRules} } @${keyframePrefix}keyframes ${keyframeName}-alt { ${keyframeRules} }`;
116
- styleContainer.appendChild(stylesheet);
117
- return stylesheet;
118
- };
119
17
  export const addClassToArray = (classes = [], className) => {
120
18
  if (className !== undefined) {
121
19
  const classNameToAppend = Array.isArray(className) ? className : [className];
@@ -2,8 +2,7 @@
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
4
  import { win } from "../browser";
5
- import { raf } from "../helpers";
6
- import { addClassToArray, animationEnd, createKeyframeStylesheet, generateKeyframeName, generateKeyframeRules, processKeyframes, removeStyleProperty, setStyleProperty, } from "./animation-utils";
5
+ import { addClassToArray, setStyleProperty } from "./animation-utils";
7
6
  export const createAnimation = (animationId) => {
8
7
  let _delay;
9
8
  let _duration;
@@ -30,7 +29,6 @@ export const createAnimation = (animationId) => {
30
29
  let willComplete = true;
31
30
  let finished = false;
32
31
  let shouldCalculateNumAnimations = true;
33
- let keyframeName;
34
32
  let ani;
35
33
  let paused = false;
36
34
  const id = animationId;
@@ -47,10 +45,16 @@ export const createAnimation = (animationId) => {
47
45
  const webAnimations = [];
48
46
  const supportsAnimationEffect = typeof AnimationEffect === 'function' ||
49
47
  (win !== undefined && typeof win.AnimationEffect === 'function');
48
+ /**
49
+ * This is a feature detection for Web Animations.
50
+ *
51
+ * Certain environments such as emulated browser environments for testing,
52
+ * do not support Web Animations. As a result, we need to check for support
53
+ * and provide a fallback to test certain functionality related to Web Animations.
54
+ */
50
55
  const supportsWebAnimations = typeof Element === 'function' &&
51
56
  typeof Element.prototype.animate === 'function' &&
52
57
  supportsAnimationEffect;
53
- const ANIMATION_END_FALLBACK_PADDING_MS = 100;
54
58
  const getWebAnimations = () => {
55
59
  return webAnimations;
56
60
  };
@@ -138,21 +142,6 @@ export const createAnimation = (animationId) => {
138
142
  });
139
143
  webAnimations.length = 0;
140
144
  }
141
- else {
142
- const elementsArray = elements.slice();
143
- raf(() => {
144
- elementsArray.forEach((element) => {
145
- removeStyleProperty(element, 'animation-name');
146
- removeStyleProperty(element, 'animation-duration');
147
- removeStyleProperty(element, 'animation-timing-function');
148
- removeStyleProperty(element, 'animation-iteration-count');
149
- removeStyleProperty(element, 'animation-delay');
150
- removeStyleProperty(element, 'animation-play-state');
151
- removeStyleProperty(element, 'animation-fill-mode');
152
- removeStyleProperty(element, 'animation-direction');
153
- });
154
- });
155
- }
156
145
  };
157
146
  /**
158
147
  * Removes the animation's stylesheets
@@ -410,9 +399,6 @@ export const createAnimation = (animationId) => {
410
399
  }
411
400
  });
412
401
  }
413
- else {
414
- initializeCSSAnimation();
415
- }
416
402
  };
417
403
  /**
418
404
  * Run all "before" animation hooks.
@@ -498,32 +484,6 @@ export const createAnimation = (animationId) => {
498
484
  }
499
485
  }
500
486
  };
501
- const initializeCSSAnimation = (toggleAnimationName = true) => {
502
- cleanUpStyleSheets();
503
- const processedKeyframes = processKeyframes(_keyframes);
504
- elements.forEach((element) => {
505
- if (processedKeyframes.length > 0) {
506
- const keyframeRules = generateKeyframeRules(processedKeyframes);
507
- keyframeName = animationId !== undefined ? animationId : generateKeyframeName(keyframeRules);
508
- const stylesheet = createKeyframeStylesheet(keyframeName, keyframeRules, element);
509
- stylesheets.push(stylesheet);
510
- setStyleProperty(element, 'animation-duration', `${getDuration()}ms`);
511
- setStyleProperty(element, 'animation-timing-function', getEasing());
512
- setStyleProperty(element, 'animation-delay', `${getDelay()}ms`);
513
- setStyleProperty(element, 'animation-fill-mode', getFill());
514
- setStyleProperty(element, 'animation-direction', getDirection());
515
- const iterationsCount = getIterations() === Infinity ? 'infinite' : getIterations().toString();
516
- setStyleProperty(element, 'animation-iteration-count', iterationsCount);
517
- setStyleProperty(element, 'animation-play-state', 'paused');
518
- if (toggleAnimationName) {
519
- setStyleProperty(element, 'animation-name', `${stylesheet.id}-alt`);
520
- }
521
- raf(() => {
522
- setStyleProperty(element, 'animation-name', stylesheet.id || null);
523
- });
524
- }
525
- });
526
- };
527
487
  const initializeWebAnimation = () => {
528
488
  elements.forEach((element) => {
529
489
  const animation = element.animate(_keyframes, {
@@ -544,15 +504,12 @@ export const createAnimation = (animationId) => {
544
504
  };
545
505
  }
546
506
  };
547
- const initializeAnimation = (toggleAnimationName = true) => {
507
+ const initializeAnimation = () => {
548
508
  beforeAnimation();
549
509
  if (_keyframes.length > 0) {
550
510
  if (supportsWebAnimations) {
551
511
  initializeWebAnimation();
552
512
  }
553
- else {
554
- initializeCSSAnimation(toggleAnimationName);
555
- }
556
513
  }
557
514
  initialized = true;
558
515
  };
@@ -565,15 +522,6 @@ export const createAnimation = (animationId) => {
565
522
  animation.pause();
566
523
  });
567
524
  }
568
- else {
569
- const animationDuration = `-${getDuration() * step}ms`;
570
- elements.forEach((element) => {
571
- if (_keyframes.length > 0) {
572
- setStyleProperty(element, 'animation-delay', animationDuration);
573
- setStyleProperty(element, 'animation-play-state', 'paused');
574
- }
575
- });
576
- }
577
525
  };
578
526
  const updateWebAnimation = (step) => {
579
527
  webAnimations.forEach((animation) => {
@@ -590,26 +538,6 @@ export const createAnimation = (animationId) => {
590
538
  setAnimationStep(step);
591
539
  }
592
540
  };
593
- const updateCSSAnimation = (toggleAnimationName = true, step) => {
594
- raf(() => {
595
- elements.forEach((element) => {
596
- setStyleProperty(element, 'animation-name', keyframeName || null);
597
- setStyleProperty(element, 'animation-duration', `${getDuration()}ms`);
598
- setStyleProperty(element, 'animation-timing-function', getEasing());
599
- setStyleProperty(element, 'animation-delay', step !== undefined ? `-${step * getDuration()}ms` : `${getDelay()}ms`);
600
- setStyleProperty(element, 'animation-fill-mode', getFill() || null);
601
- setStyleProperty(element, 'animation-direction', getDirection() || null);
602
- const iterationsCount = getIterations() === Infinity ? 'infinite' : getIterations().toString();
603
- setStyleProperty(element, 'animation-iteration-count', iterationsCount);
604
- if (toggleAnimationName) {
605
- setStyleProperty(element, 'animation-name', `${keyframeName}-alt`);
606
- }
607
- raf(() => {
608
- setStyleProperty(element, 'animation-name', keyframeName || null);
609
- });
610
- });
611
- });
612
- };
613
541
  const update = (deep = false, toggleAnimationName = true, step) => {
614
542
  if (deep) {
615
543
  childAnimations.forEach((animation) => {
@@ -619,9 +547,6 @@ export const createAnimation = (animationId) => {
619
547
  if (supportsWebAnimations) {
620
548
  updateWebAnimation(step);
621
549
  }
622
- else {
623
- updateCSSAnimation(toggleAnimationName, step);
624
- }
625
550
  return ani;
626
551
  };
627
552
  const progressStart = (forceLinearEasing = false, step) => {
@@ -704,10 +629,6 @@ export const createAnimation = (animationId) => {
704
629
  pauseAnimation();
705
630
  return ani;
706
631
  };
707
- const onAnimationEndFallback = () => {
708
- cssAnimationsTimerFallback = undefined;
709
- animationFinish();
710
- };
711
632
  const clearCSSAnimationsTimeout = () => {
712
633
  if (cssAnimationsTimerFallback) {
713
634
  clearTimeout(cssAnimationsTimerFallback);
@@ -715,56 +636,7 @@ export const createAnimation = (animationId) => {
715
636
  };
716
637
  const playCSSAnimations = () => {
717
638
  clearCSSAnimationsTimeout();
718
- raf(() => {
719
- elements.forEach((element) => {
720
- if (_keyframes.length > 0) {
721
- setStyleProperty(element, 'animation-play-state', 'running');
722
- }
723
- });
724
- });
725
- if (_keyframes.length === 0 || elements.length === 0) {
726
- animationFinish();
727
- }
728
- else {
729
- /**
730
- * This is a catchall in the event that a CSS Animation did not finish.
731
- * The Web Animations API has mechanisms in place for preventing this.
732
- * CSS Animations will not fire an `animationend` event
733
- * for elements with `display: none`. The Web Animations API
734
- * accounts for this, but using raw CSS Animations requires
735
- * this workaround.
736
- */
737
- const animationDelay = getDelay() || 0;
738
- const animationDuration = getDuration() || 0;
739
- const animationIterations = getIterations() || 1;
740
- // No need to set a timeout when animation has infinite iterations
741
- if (isFinite(animationIterations)) {
742
- cssAnimationsTimerFallback = setTimeout(onAnimationEndFallback, animationDelay + animationDuration * animationIterations + ANIMATION_END_FALLBACK_PADDING_MS);
743
- }
744
- animationEnd(elements[0], () => {
745
- clearCSSAnimationsTimeout();
746
- /**
747
- * Ensure that clean up
748
- * is always done a frame
749
- * before the onFinish handlers
750
- * are fired. Otherwise, there
751
- * may be flickering if a new
752
- * animation is started on the same
753
- * element too quickly
754
- */
755
- raf(() => {
756
- clearCSSAnimationPlayState();
757
- raf(animationFinish);
758
- });
759
- });
760
- }
761
- };
762
- const clearCSSAnimationPlayState = () => {
763
- elements.forEach((element) => {
764
- removeStyleProperty(element, 'animation-duration');
765
- removeStyleProperty(element, 'animation-delay');
766
- removeStyleProperty(element, 'animation-play-state');
767
- });
639
+ animationFinish();
768
640
  };
769
641
  const playWebAnimations = () => {
770
642
  webAnimations.forEach((animation) => {
@@ -779,9 +651,6 @@ export const createAnimation = (animationId) => {
779
651
  setAnimationStep(0);
780
652
  updateWebAnimation();
781
653
  }
782
- else {
783
- updateCSSAnimation();
784
- }
785
654
  };
786
655
  const play = (opts) => {
787
656
  return new Promise((resolve) => {
@@ -2,7 +2,6 @@
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
4
  import { createAnimation } from "../animation";
5
- import { processKeyframes } from "../animation-utils";
6
5
  import { getTimeGivenProgression } from "../cubic-bezier";
7
6
  describe('Animation Class', () => {
8
7
  describe('progressEnd callbacks', () => {
@@ -48,84 +47,6 @@ describe('Animation Class', () => {
48
47
  animation.play();
49
48
  expect(animation.isRunning()).toEqual(false);
50
49
  });
51
- it('should be running', () => {
52
- const el = document.createElement('div');
53
- animation.addElement(el);
54
- animation.keyframes([
55
- { transform: 'scale(1)', opacity: 1, offset: 0 },
56
- { transform: 'scale(0)', opacity: 0, offset: 1 },
57
- ]);
58
- animation.duration(250);
59
- animation.play();
60
- expect(animation.isRunning()).toEqual(true);
61
- });
62
- it('should not be running after finishing the animation', async () => {
63
- const el = document.createElement('div');
64
- animation.addElement(el);
65
- animation.keyframes([
66
- { transform: 'scale(1)', opacity: 1, offset: 0 },
67
- { transform: 'scale(0)', opacity: 0, offset: 1 },
68
- ]);
69
- animation.duration(250);
70
- await animation.play();
71
- expect(animation.isRunning()).toEqual(false);
72
- });
73
- it('should not be running after calling pause', () => {
74
- const el = document.createElement('div');
75
- animation.addElement(el);
76
- animation.keyframes([
77
- { transform: 'scale(1)', opacity: 1, offset: 0 },
78
- { transform: 'scale(0)', opacity: 0, offset: 1 },
79
- ]);
80
- animation.duration(250);
81
- animation.play();
82
- expect(animation.isRunning()).toEqual(true);
83
- animation.pause();
84
- expect(animation.isRunning()).toEqual(false);
85
- });
86
- it('should not be running when doing progress steps', () => {
87
- const el = document.createElement('div');
88
- animation.addElement(el);
89
- animation.keyframes([
90
- { transform: 'scale(1)', opacity: 1, offset: 0 },
91
- { transform: 'scale(0)', opacity: 0, offset: 1 },
92
- ]);
93
- animation.duration(250);
94
- animation.play();
95
- animation.progressStart();
96
- expect(animation.isRunning()).toEqual(false);
97
- });
98
- it('should be running after calling progressEnd', () => {
99
- const el = document.createElement('div');
100
- animation.addElement(el);
101
- animation.keyframes([
102
- { transform: 'scale(1)', opacity: 1, offset: 0 },
103
- { transform: 'scale(0)', opacity: 0, offset: 1 },
104
- ]);
105
- animation.duration(250);
106
- animation.play();
107
- animation.progressStart();
108
- animation.progressEnd(1, 0);
109
- expect(animation.isRunning()).toEqual(true);
110
- });
111
- it('should not be running after playing to beginning', async () => {
112
- const el = document.createElement('div');
113
- animation.addElement(el);
114
- animation.keyframes([
115
- { transform: 'scale(1)', opacity: 1, offset: 0 },
116
- { transform: 'scale(0)', opacity: 0, offset: 1 },
117
- ]);
118
- animation.duration(250);
119
- await animation.play();
120
- animation.progressStart();
121
- animation.progressEnd(0, 0);
122
- await new Promise((resolve) => {
123
- animation.onFinish(() => {
124
- expect(animation.isRunning()).toEqual(false);
125
- resolve();
126
- });
127
- });
128
- });
129
50
  });
130
51
  describe('addElement()', () => {
131
52
  let animation;
@@ -183,16 +104,6 @@ describe('Animation Class', () => {
183
104
  ]);
184
105
  expect(animation.getKeyframes().length).toEqual(3);
185
106
  });
186
- it('should convert properties for CSS Animations', () => {
187
- const processedKeyframes = processKeyframes([
188
- { borderRadius: '0px', easing: 'ease-in', offset: 0 },
189
- { borderRadius: '4px', easing: 'ease-out', offset: 1 },
190
- ]);
191
- expect(processedKeyframes).toEqual([
192
- { 'border-radius': '0px', 'animation-timing-function': 'ease-in', offset: 0 },
193
- { 'border-radius': '4px', 'animation-timing-function': 'ease-out', offset: 1 },
194
- ]);
195
- });
196
107
  it('should set the from keyframe properly', () => {
197
108
  animation.from('opacity', 0).from('background', 'red').from('color', 'purple');
198
109
  const keyframes = animation.getKeyframes();
@@ -12,10 +12,6 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
12
12
  await page.goto('/src/utils/animation/test/animationbuilder', config);
13
13
  await testNavigation(page);
14
14
  });
15
- test('ios-transition css', async ({ page }) => {
16
- await page.goto('/src/utils/animation/test/animationbuilder?ionic:_forceCSSAnimations=true', config);
17
- await testNavigation(page);
18
- });
19
15
  });
20
16
  });
21
17
  const testNavigation = async (page) => {
@@ -8,10 +8,6 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
8
8
  await page.goto('/src/utils/animation/test/basic', config);
9
9
  await testPage(page);
10
10
  });
11
- test(`should resolve using css animations`, async ({ page }) => {
12
- await page.goto('/src/utils/animation/test/basic?ionic:_forceCSSAnimations=true', config);
13
- await testPage(page);
14
- });
15
11
  });
16
12
  });
17
13
  const testPage = async (page) => {
@@ -9,10 +9,6 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
9
9
  await page.goto('/src/utils/animation/test/display', config);
10
10
  await testDisplay(page);
11
11
  });
12
- test(`should resolve using css animations`, async ({ page }) => {
13
- await page.goto('/src/utils/animation/test/display?ionic:_forceCSSAnimations=true', config);
14
- await testDisplay(page);
15
- });
16
12
  });
17
13
  });
18
14
  const testDisplay = async (page) => {
@@ -9,10 +9,6 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
9
9
  await page.goto('/src/utils/animation/test/hooks', config);
10
10
  await testHooks(page);
11
11
  });
12
- test(`should fire hooks using css animations`, async ({ page }) => {
13
- await page.goto('/src/utils/animation/test/hooks?ionic:_forceCSSAnimations=true', config);
14
- await testHooks(page);
15
- });
16
12
  });
17
13
  });
18
14
  const testHooks = async (page) => {
@@ -9,13 +9,6 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
9
9
  await page.goto('/src/utils/animation/test/multiple', config);
10
10
  await testMultiple(page);
11
11
  });
12
- /**
13
- * CSS animations will occasionally resolve out of order, so we skip for now
14
- */
15
- test.skip(`should resolve grouped animations using css animations`, async ({ page }) => {
16
- await page.goto('/src/utils/animation/test/multiple?ionic:_forceCSSAnimations=true', config);
17
- await testMultiple(page);
18
- });
19
12
  });
20
13
  });
21
14
  const testMultiple = async (page) => {
@@ -0,0 +1,78 @@
1
+ /*!
2
+ * (C) Ionic http://ionicframework.com - MIT License
3
+ */
4
+ import { focusVisibleElement } from "./helpers";
5
+ /**
6
+ * This query string selects elements that
7
+ * are eligible to receive focus. We select
8
+ * interactive elements that meet the following
9
+ * criteria:
10
+ * 1. Element does not have a negative tabindex
11
+ * 2. Element does not have `hidden`
12
+ * 3. Element does not have `disabled` for non-Ionic components.
13
+ * 4. Element does not have `disabled` or `disabled="true"` for Ionic components.
14
+ * Note: We need this distinction because `disabled="false"` is
15
+ * valid usage for the disabled property on ion-button.
16
+ */
17
+ export const focusableQueryString = '[tabindex]:not([tabindex^="-"]):not([hidden]):not([disabled]), input:not([type=hidden]):not([tabindex^="-"]):not([hidden]):not([disabled]), textarea:not([tabindex^="-"]):not([hidden]):not([disabled]), button:not([tabindex^="-"]):not([hidden]):not([disabled]), select:not([tabindex^="-"]):not([hidden]):not([disabled]), .ion-focusable:not([tabindex^="-"]):not([hidden]):not([disabled]), .ion-focusable[disabled="false"]:not([tabindex^="-"]):not([hidden])';
18
+ /**
19
+ * Focuses the first descendant in a context
20
+ * that can receive focus. If none exists,
21
+ * a fallback element will be focused.
22
+ * This fallback is typically an ancestor
23
+ * container such as a menu or overlay so focus does not
24
+ * leave the container we are trying to trap focus in.
25
+ *
26
+ * If no fallback is specified then we focus the container itself.
27
+ */
28
+ export const focusFirstDescendant = (ref, fallbackElement) => {
29
+ const firstInput = ref.querySelector(focusableQueryString);
30
+ focusElementInContext(firstInput, fallbackElement !== null && fallbackElement !== void 0 ? fallbackElement : ref);
31
+ };
32
+ /**
33
+ * Focuses the last descendant in a context
34
+ * that can receive focus. If none exists,
35
+ * a fallback element will be focused.
36
+ * This fallback is typically an ancestor
37
+ * container such as a menu or overlay so focus does not
38
+ * leave the container we are trying to trap focus in.
39
+ *
40
+ * If no fallback is specified then we focus the container itself.
41
+ */
42
+ export const focusLastDescendant = (ref, fallbackElement) => {
43
+ const inputs = Array.from(ref.querySelectorAll(focusableQueryString));
44
+ const lastInput = inputs.length > 0 ? inputs[inputs.length - 1] : null;
45
+ focusElementInContext(lastInput, fallbackElement !== null && fallbackElement !== void 0 ? fallbackElement : ref);
46
+ };
47
+ /**
48
+ * Focuses a particular element in a context. If the element
49
+ * doesn't have anything focusable associated with it then
50
+ * a fallback element will be focused.
51
+ *
52
+ * This fallback is typically an ancestor
53
+ * container such as a menu or overlay so focus does not
54
+ * leave the container we are trying to trap focus in.
55
+ * This should be used instead of the focus() method
56
+ * on most elements because the focusable element
57
+ * may not be the host element.
58
+ *
59
+ * For example, if an ion-button should be focused
60
+ * then we should actually focus the native <button>
61
+ * element inside of ion-button's shadow root, not
62
+ * the host element itself.
63
+ */
64
+ const focusElementInContext = (hostToFocus, fallbackElement) => {
65
+ let elementToFocus = hostToFocus;
66
+ const shadowRoot = hostToFocus === null || hostToFocus === void 0 ? void 0 : hostToFocus.shadowRoot;
67
+ if (shadowRoot) {
68
+ // If there are no inner focusable elements, just focus the host element.
69
+ elementToFocus = shadowRoot.querySelector(focusableQueryString) || hostToFocus;
70
+ }
71
+ if (elementToFocus) {
72
+ focusVisibleElement(elementToFocus);
73
+ }
74
+ else {
75
+ // Focus fallback element instead of letting focus escape
76
+ fallbackElement.focus();
77
+ }
78
+ };
@@ -1,6 +1,5 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- export * from './form-controller';
5
4
  export * from './notch-controller';
6
5
  export * from './compare-with-utils';
@@ -15,7 +15,7 @@ import { config } from "../global/config";
15
15
  * moment this file is evaluated which could be
16
16
  * before the config is set.
17
17
  */
18
- export const shoudUseCloseWatcher = () => config.get('experimentalCloseWatcher', false) && win !== undefined && 'CloseWatcher' in win;
18
+ export const shouldUseCloseWatcher = () => config.get('experimentalCloseWatcher', false) && win !== undefined && 'CloseWatcher' in win;
19
19
  /**
20
20
  * When hardwareBackButton: false in config,
21
21
  * we need to make sure we also block the default
@@ -85,7 +85,7 @@ export const startHardwareBackButton = () => {
85
85
  * backbutton event otherwise we may get duplicate
86
86
  * events firing.
87
87
  */
88
- if (shoudUseCloseWatcher()) {
88
+ if (shouldUseCloseWatcher()) {
89
89
  let watcher;
90
90
  const configureWatcher = () => {
91
91
  watcher === null || watcher === void 0 ? void 0 : watcher.destroy();