@ionic/core 7.5.8-dev.11701876182.1e71e7a0 → 7.5.8-dev.11702056888.11188f48

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 (553) hide show
  1. package/components/animation.js +11 -12
  2. package/components/backdrop.js +0 -12
  3. package/components/checkbox.js +3 -5
  4. package/components/data.js +1 -1
  5. package/components/gesture-controller.js +1 -1
  6. package/components/index4.js +12 -10
  7. package/components/index5.js +22 -0
  8. package/components/input-shims.js +7 -12
  9. package/components/input.utils.js +2 -3
  10. package/components/ion-content.js +1 -1
  11. package/components/ion-datetime.js +40 -64
  12. package/components/ion-infinite-scroll.js +3 -11
  13. package/components/ion-input.js +8 -31
  14. package/components/ion-modal.js +2 -2
  15. package/components/ion-picker-column-option.d.ts +11 -0
  16. package/components/ion-picker-column-option.js +9 -0
  17. package/components/ion-picker-column.js +2 -2
  18. package/components/ion-picker-legacy-column.d.ts +11 -0
  19. package/components/ion-picker-legacy-column.js +9 -0
  20. package/components/{ion-picker-internal.d.ts → ion-picker-legacy.d.ts} +4 -4
  21. package/components/ion-picker-legacy.js +309 -0
  22. package/components/ion-picker.js +1 -309
  23. package/components/ion-range.js +3 -5
  24. package/components/ion-select.js +29 -44
  25. package/components/ion-skeleton-text.js +1 -14
  26. package/components/ion-textarea.js +7 -30
  27. package/components/ion-toast.js +74 -419
  28. package/components/ion-toggle.js +3 -5
  29. package/components/item.js +2 -2
  30. package/components/label.js +2 -2
  31. package/components/overlays.js +12 -6
  32. package/components/picker-column-option.js +122 -0
  33. package/components/picker-column.js +351 -322
  34. package/components/picker-column2.js +379 -0
  35. package/components/{picker-internal.js → picker.js} +29 -22
  36. package/components/radio-group.js +0 -2
  37. package/components/radio.js +5 -45
  38. package/dist/cjs/{animation-9b401d39.js → animation-cc40e39c.js} +12 -13
  39. package/dist/cjs/{button-active-a5185907.js → button-active-9d7e0640.js} +2 -2
  40. package/dist/cjs/{capacitor-c04564bf.js → capacitor-46980811.js} +1 -1
  41. package/dist/cjs/{data-36b9094e.js → data-e7526b58.js} +1 -1
  42. package/dist/cjs/{gesture-controller-c40c045a.js → gesture-controller-9436f482.js} +1 -0
  43. package/dist/cjs/{haptic-b882e0bb.js → haptic-216df36c.js} +1 -1
  44. package/dist/cjs/index-306a7476.js +32 -0
  45. package/dist/cjs/{index-ce101dc9.js → index-5cbb20f9.js} +13 -11
  46. package/dist/cjs/{index-b4f986cd.js → index-8c1e77d6.js} +1 -1
  47. package/dist/cjs/{index-f8f13389.js → index-d4c2e02c.js} +2 -2
  48. package/dist/cjs/{index-d1b59ffa.js → index-ee07ed59.js} +1 -1
  49. package/dist/cjs/index.cjs.js +10 -10
  50. package/dist/cjs/{input-shims-a23bb0f4.js → input-shims-87102b6a.js} +10 -15
  51. package/dist/cjs/{input.utils-3d0166a2.js → input.utils-2a11c1fe.js} +3 -4
  52. package/dist/cjs/ion-action-sheet.cjs.entry.js +8 -8
  53. package/dist/cjs/ion-alert.cjs.entry.js +8 -8
  54. package/dist/cjs/ion-app_8.cjs.entry.js +10 -10
  55. package/dist/cjs/ion-backdrop.cjs.entry.js +0 -12
  56. package/dist/cjs/ion-checkbox.cjs.entry.js +3 -5
  57. package/dist/cjs/ion-datetime-button.cjs.entry.js +1 -1
  58. package/dist/cjs/ion-datetime_3.cjs.entry.js +40 -60
  59. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +3 -11
  60. package/dist/cjs/ion-input.cjs.entry.js +11 -34
  61. package/dist/cjs/ion-item-option_3.cjs.entry.js +1 -1
  62. package/dist/cjs/ion-item_8.cjs.entry.js +4 -17
  63. package/dist/cjs/ion-loading.cjs.entry.js +4 -3
  64. package/dist/cjs/ion-menu_3.cjs.entry.js +7 -7
  65. package/dist/cjs/ion-modal.cjs.entry.js +10 -10
  66. package/dist/cjs/ion-nav_2.cjs.entry.js +2 -2
  67. package/dist/cjs/ion-picker-column-option.cjs.entry.js +104 -0
  68. package/dist/cjs/{ion-picker-column-internal.cjs.entry.js → ion-picker-column.cjs.entry.js} +106 -89
  69. package/dist/cjs/{ion-picker-internal.cjs.entry.js → ion-picker.cjs.entry.js} +26 -19
  70. package/dist/cjs/ion-popover.cjs.entry.js +5 -4
  71. package/dist/cjs/ion-radio_2.cjs.entry.js +4 -9
  72. package/dist/cjs/ion-range.cjs.entry.js +4 -6
  73. package/dist/cjs/ion-refresher_2.cjs.entry.js +7 -7
  74. package/dist/cjs/ion-reorder_2.cjs.entry.js +4 -4
  75. package/dist/cjs/ion-segment_2.cjs.entry.js +1 -1
  76. package/dist/cjs/ion-select_3.cjs.entry.js +36 -51
  77. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +4 -4
  78. package/dist/cjs/ion-textarea.cjs.entry.js +10 -33
  79. package/dist/cjs/ion-toast.cjs.entry.js +93 -434
  80. package/dist/cjs/ion-toggle.cjs.entry.js +7 -9
  81. package/dist/cjs/ionic.cjs.js +1 -1
  82. package/dist/cjs/{ios.transition-6787b799.js → ios.transition-a4ffb5a2.js} +3 -3
  83. package/dist/cjs/{keyboard-af1bb365.js → keyboard-7d621ee9.js} +3 -3
  84. package/dist/cjs/{keyboard-0272231f.js → keyboard-9390928c.js} +1 -1
  85. package/dist/cjs/{keyboard-controller-c05e747a.js → keyboard-controller-2158b478.js} +2 -2
  86. package/dist/cjs/loader.cjs.js +1 -1
  87. package/dist/cjs/{md.transition-e033d20a.js → md.transition-292abe1c.js} +3 -3
  88. package/dist/cjs/{notch-controller-9735e7ac.js → notch-controller-1dce508a.js} +1 -1
  89. package/dist/cjs/{overlays-27a6fb16.js → overlays-e8e05b0e.js} +12 -7
  90. package/dist/cjs/{swipe-back-2a858bbd.js → swipe-back-b8f2330b.js} +2 -2
  91. package/dist/collection/collection-manifest.json +7 -6
  92. package/dist/collection/components/backdrop/backdrop.js +0 -12
  93. package/dist/collection/components/checkbox/checkbox.ios.css +6 -0
  94. package/dist/collection/components/checkbox/checkbox.js +1 -4
  95. package/dist/collection/components/checkbox/checkbox.md.css +6 -0
  96. package/dist/collection/components/checkbox/test/checkbox.spec.js +0 -14
  97. package/dist/collection/components/content/content.css +0 -4
  98. package/dist/collection/components/datetime/datetime.ios.css +85 -38
  99. package/dist/collection/components/datetime/datetime.js +24 -36
  100. package/dist/collection/components/datetime/datetime.md.css +90 -38
  101. package/dist/collection/components/datetime/test/a11y/datetime.e2e.js +1 -1
  102. package/dist/collection/components/datetime/test/a11y/datetime.spec.js +6 -9
  103. package/dist/collection/components/datetime/test/basic/datetime.e2e.js +10 -0
  104. package/dist/collection/components/datetime/test/datetime.e2e.js +2 -2
  105. package/dist/collection/components/datetime/test/disabled/datetime.spec.js +4 -4
  106. package/dist/collection/components/datetime/test/locale/datetime.e2e.js +2 -2
  107. package/dist/collection/components/datetime/test/minmax/datetime.e2e.js +6 -6
  108. package/dist/collection/components/datetime/test/month-year-picker/datetime.e2e.js +1 -1
  109. package/dist/collection/components/datetime/test/prefer-wheel/datetime.e2e.js +43 -41
  110. package/dist/collection/components/datetime/test/presentation/datetime.e2e.js +1 -1
  111. package/dist/collection/components/datetime/test/readonly/datetime.e2e.js +4 -4
  112. package/dist/collection/components/datetime/test/values/datetime.e2e.js +15 -12
  113. package/dist/collection/components/datetime/utils/data.js +1 -1
  114. package/dist/collection/components/infinite-scroll/infinite-scroll.js +3 -11
  115. package/dist/collection/components/input/input.ios.css +3 -10
  116. package/dist/collection/components/input/input.js +6 -31
  117. package/dist/collection/components/input/input.md.css +12 -13
  118. package/dist/collection/components/item/item.ios.css +3 -41
  119. package/dist/collection/components/item/item.md.css +3 -41
  120. package/dist/collection/components/item/test/basic/item.e2e.js +1 -1
  121. package/dist/collection/components/item/test/disabled/item.e2e.js +1 -0
  122. package/dist/collection/components/item/test/text/item.e2e.js +14 -0
  123. package/dist/collection/components/label/label.ios.css +3 -14
  124. package/dist/collection/components/label/label.md.css +3 -14
  125. package/dist/collection/components/modal/gestures/swipe-to-close.js +1 -2
  126. package/dist/collection/components/note/test/a11y/note.e2e.js +0 -43
  127. package/dist/collection/components/picker/picker.ios.css +113 -211
  128. package/dist/collection/components/picker/picker.js +468 -743
  129. package/dist/collection/components/picker/picker.md.css +109 -198
  130. package/dist/collection/components/{picker-internal/test/a11y/picker-internal.e2e.js → picker/test/a11y/picker.e2e.js} +2 -2
  131. package/dist/collection/components/picker/test/basic/picker.e2e.js +99 -13
  132. package/dist/collection/components/picker/test/custom/picker.e2e.js +85 -0
  133. package/dist/collection/components/{picker-internal/test/keyboard-entry/picker-internal.e2e.js → picker/test/keyboard-entry/picker.e2e.js} +63 -32
  134. package/dist/collection/components/{picker-column-internal/picker-column-internal.md.css → picker-column/picker-column.css} +96 -83
  135. package/dist/collection/components/picker-column/picker-column.js +497 -335
  136. package/dist/collection/components/{picker-column-internal/test/basic/picker-column-internal.e2e.js → picker-column/test/basic/picker-column.e2e.js} +8 -8
  137. package/dist/collection/components/picker-column/test/disabled/picker-column.e2e.js +91 -0
  138. package/dist/collection/components/picker-column/test/slots/picker-column.e2e.js +39 -0
  139. package/dist/collection/components/picker-column-option/picker-column-option.ios.css +87 -0
  140. package/dist/collection/components/picker-column-option/picker-column-option.js +173 -0
  141. package/dist/collection/components/{picker-column-internal/picker-column-internal.ios.css → picker-column-option/picker-column-option.md.css} +6 -53
  142. package/dist/collection/components/picker-column-option/test/a11y/picker-column-option.e2e.js +18 -0
  143. package/dist/collection/components/picker-column-option/test/basic/picker-column-option.e2e.js +37 -0
  144. package/dist/collection/components/picker-column-option/test/picker-column-option.spec.js +29 -0
  145. package/dist/collection/components/{picker-internal/picker-internal.md.css → picker-legacy/picker.ios.css} +207 -98
  146. package/dist/collection/components/picker-legacy/picker.js +817 -0
  147. package/dist/collection/components/{picker-internal/picker-internal.ios.css → picker-legacy/picker.md.css} +192 -100
  148. package/dist/collection/components/picker-legacy/test/basic/picker.e2e.js +25 -0
  149. package/dist/collection/components/{picker → picker-legacy}/test/is-open/picker.e2e.js +4 -4
  150. package/dist/collection/components/{picker → picker-legacy}/test/picker-id.spec.js +5 -5
  151. package/dist/collection/components/{picker → picker-legacy}/test/trigger/picker.e2e.js +1 -1
  152. package/dist/collection/components/picker-legacy-column/picker-column.js +419 -0
  153. package/dist/collection/components/{picker-column → picker-legacy-column}/test/picker-column-aria.spec.js +3 -3
  154. package/dist/collection/components/{picker-column → picker-legacy-column}/test/picker-column-dynamic.spec.js +2 -2
  155. package/dist/collection/components/{picker-column → picker-legacy-column}/test/picker-column.spec.js +2 -2
  156. package/dist/collection/components/{picker-column → picker-legacy-column}/test/standalone/picker-column.e2e.js +3 -3
  157. package/dist/collection/components/radio/radio.ios.css +6 -0
  158. package/dist/collection/components/radio/radio.js +3 -7
  159. package/dist/collection/components/radio/radio.md.css +6 -0
  160. package/dist/collection/components/radio/test/radio.spec.js +0 -14
  161. package/dist/collection/components/radio-group/radio-group.js +0 -24
  162. package/dist/collection/components/range/range.ios.css +6 -0
  163. package/dist/collection/components/range/range.js +1 -4
  164. package/dist/collection/components/range/range.md.css +6 -0
  165. package/dist/collection/components/range/test/range.spec.js +0 -16
  166. package/dist/collection/components/select/select.ios.css +7 -60
  167. package/dist/collection/components/select/select.js +28 -45
  168. package/dist/collection/components/select/select.md.css +19 -63
  169. package/dist/collection/components/select/test/item/select.e2e.js +0 -15
  170. package/dist/collection/components/select/test/label/select.e2e.js +1 -1
  171. package/dist/collection/components/select/test/legacy/wrapping/select.e2e.js +1 -1
  172. package/dist/collection/components/skeleton-text/skeleton-text.js +0 -39
  173. package/dist/collection/components/textarea/textarea.ios.css +5 -37
  174. package/dist/collection/components/textarea/textarea.js +5 -30
  175. package/dist/collection/components/textarea/textarea.md.css +14 -47
  176. package/dist/collection/components/toast/animations/ios.enter.js +1 -2
  177. package/dist/collection/components/toast/animations/md.enter.js +3 -4
  178. package/dist/collection/components/toast/animations/utils.js +14 -20
  179. package/dist/collection/components/toast/test/toast.spec.js +0 -80
  180. package/dist/collection/components/toast/toast.ios.css +10 -10
  181. package/dist/collection/components/toast/toast.js +1 -104
  182. package/dist/collection/components/toast/toast.md.css +0 -10
  183. package/dist/collection/components/toggle/test/toggle.spec.js +0 -12
  184. package/dist/collection/components/toggle/toggle.ios.css +6 -0
  185. package/dist/collection/components/toggle/toggle.js +1 -4
  186. package/dist/collection/components/toggle/toggle.md.css +6 -0
  187. package/dist/collection/utils/animation/animation.js +11 -12
  188. package/dist/collection/utils/animation/test/animation.spec.js +0 -16
  189. package/dist/collection/utils/browser/index.js +22 -0
  190. package/dist/collection/utils/forms/index.js +0 -1
  191. package/dist/collection/utils/gesture/gesture-controller.js +1 -1
  192. package/dist/collection/utils/input-shims/input-shims.js +6 -12
  193. package/dist/collection/utils/menu-controller/index.js +12 -10
  194. package/dist/collection/utils/overlays.js +11 -5
  195. package/dist/collection/utils/slot-mutation-controller.js +2 -3
  196. package/dist/collection/utils/test/overlays/overlays-scroll-blocking.spec.js +65 -0
  197. package/dist/docs.json +573 -272
  198. package/dist/esm/{animation-dde8cc0d.js → animation-fb0e0f6f.js} +12 -13
  199. package/dist/esm/{button-active-c6ee4f50.js → button-active-ed9d848c.js} +2 -2
  200. package/dist/esm/{capacitor-59395cbd.js → capacitor-b0e5fe83.js} +1 -1
  201. package/dist/esm/{data-f5c75b4e.js → data-4b9508c9.js} +1 -1
  202. package/dist/esm/{gesture-controller-1bf57181.js → gesture-controller-314a54f6.js} +1 -1
  203. package/dist/esm/{haptic-554688a5.js → haptic-152c4172.js} +1 -1
  204. package/dist/esm/{index-2cf77112.js → index-39782642.js} +2 -2
  205. package/dist/esm/index-7a14ecec.js +29 -0
  206. package/dist/esm/{index-0c12c22b.js → index-80492ed3.js} +13 -11
  207. package/dist/esm/{index-82eeb47f.js → index-ba9976bb.js} +1 -1
  208. package/dist/esm/{index-1932b201.js → index-d8817fb0.js} +2 -2
  209. package/dist/esm/index.js +10 -10
  210. package/dist/esm/{input-shims-6539ce13.js → input-shims-0a2e541d.js} +9 -14
  211. package/dist/esm/{input.utils-a5a2d164.js → input.utils-2846d430.js} +3 -4
  212. package/dist/esm/ion-action-sheet.entry.js +8 -8
  213. package/dist/esm/ion-alert.entry.js +8 -8
  214. package/dist/esm/ion-app_8.entry.js +10 -10
  215. package/dist/esm/ion-backdrop.entry.js +0 -12
  216. package/dist/esm/ion-checkbox.entry.js +3 -5
  217. package/dist/esm/ion-datetime-button.entry.js +1 -1
  218. package/dist/esm/ion-datetime_3.entry.js +39 -59
  219. package/dist/esm/ion-infinite-scroll_2.entry.js +3 -11
  220. package/dist/esm/ion-input.entry.js +11 -34
  221. package/dist/esm/ion-item-option_3.entry.js +1 -1
  222. package/dist/esm/ion-item_8.entry.js +4 -17
  223. package/dist/esm/ion-loading.entry.js +4 -3
  224. package/dist/esm/ion-menu_3.entry.js +7 -7
  225. package/dist/esm/ion-modal.entry.js +10 -10
  226. package/dist/esm/ion-nav_2.entry.js +2 -2
  227. package/dist/esm/ion-picker-column-option.entry.js +100 -0
  228. package/dist/esm/{ion-picker-column-internal.entry.js → ion-picker-column.entry.js} +106 -89
  229. package/dist/esm/{ion-picker-internal.entry.js → ion-picker.entry.js} +26 -19
  230. package/dist/esm/ion-popover.entry.js +5 -4
  231. package/dist/esm/ion-radio_2.entry.js +4 -9
  232. package/dist/esm/ion-range.entry.js +4 -6
  233. package/dist/esm/ion-refresher_2.entry.js +7 -7
  234. package/dist/esm/ion-reorder_2.entry.js +4 -4
  235. package/dist/esm/ion-segment_2.entry.js +1 -1
  236. package/dist/esm/ion-select_3.entry.js +32 -47
  237. package/dist/esm/ion-tab-bar_2.entry.js +4 -4
  238. package/dist/esm/ion-textarea.entry.js +10 -33
  239. package/dist/esm/ion-toast.entry.js +76 -417
  240. package/dist/esm/ion-toggle.entry.js +7 -9
  241. package/dist/esm/ionic.js +1 -1
  242. package/dist/esm/{ios.transition-802a84a6.js → ios.transition-fd16bec1.js} +3 -3
  243. package/dist/esm/{keyboard-52278bd7.js → keyboard-c402e885.js} +3 -3
  244. package/dist/esm/{keyboard-controller-ec5c2bfa.js → keyboard-controller-5d90929a.js} +2 -2
  245. package/dist/esm/{keyboard-73175e24.js → keyboard-dbb05fb9.js} +1 -1
  246. package/dist/esm/loader.js +1 -1
  247. package/dist/esm/{md.transition-43c2874d.js → md.transition-94ac93e1.js} +3 -3
  248. package/dist/esm/{notch-controller-fea7f9c5.js → notch-controller-d09b6aca.js} +1 -1
  249. package/dist/esm/{overlays-32ef481d.js → overlays-fbc5cab5.js} +13 -7
  250. package/dist/esm/{swipe-back-a6f386fc.js → swipe-back-a8ca7f93.js} +2 -2
  251. package/dist/esm-es5/{animation-dde8cc0d.js → animation-fb0e0f6f.js} +1 -1
  252. package/dist/esm-es5/{button-active-c6ee4f50.js → button-active-ed9d848c.js} +1 -1
  253. package/dist/esm-es5/{capacitor-59395cbd.js → capacitor-b0e5fe83.js} +1 -1
  254. package/dist/esm-es5/{gesture-controller-1bf57181.js → gesture-controller-314a54f6.js} +1 -1
  255. package/dist/esm-es5/{haptic-554688a5.js → haptic-152c4172.js} +1 -1
  256. package/dist/esm-es5/{index-2cf77112.js → index-39782642.js} +1 -1
  257. package/dist/esm-es5/index-80492ed3.js +4 -0
  258. package/dist/esm-es5/{index-82eeb47f.js → index-ba9976bb.js} +1 -1
  259. package/dist/esm-es5/{index-1932b201.js → index-d8817fb0.js} +1 -1
  260. package/dist/esm-es5/index.js +1 -1
  261. package/dist/esm-es5/input-shims-0a2e541d.js +4 -0
  262. package/dist/esm-es5/input.utils-2846d430.js +4 -0
  263. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  264. package/dist/esm-es5/ion-alert.entry.js +1 -1
  265. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  266. package/dist/esm-es5/ion-backdrop.entry.js +1 -1
  267. package/dist/esm-es5/ion-checkbox.entry.js +1 -1
  268. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  269. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  270. package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
  271. package/dist/esm-es5/ion-input.entry.js +1 -1
  272. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  273. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  274. package/dist/esm-es5/ion-loading.entry.js +1 -1
  275. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  276. package/dist/esm-es5/ion-modal.entry.js +1 -1
  277. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  278. package/dist/esm-es5/ion-picker-column-option.entry.js +4 -0
  279. package/dist/esm-es5/ion-picker-column.entry.js +4 -0
  280. package/dist/esm-es5/ion-picker.entry.js +4 -0
  281. package/dist/esm-es5/ion-popover.entry.js +1 -1
  282. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  283. package/dist/esm-es5/ion-range.entry.js +1 -1
  284. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  285. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  286. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  287. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  288. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  289. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  290. package/dist/esm-es5/ion-toast.entry.js +1 -1
  291. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  292. package/dist/esm-es5/ionic.js +1 -1
  293. package/dist/esm-es5/{ios.transition-802a84a6.js → ios.transition-fd16bec1.js} +1 -1
  294. package/dist/esm-es5/{keyboard-52278bd7.js → keyboard-c402e885.js} +1 -1
  295. package/dist/esm-es5/{keyboard-controller-ec5c2bfa.js → keyboard-controller-5d90929a.js} +1 -1
  296. package/dist/esm-es5/{keyboard-73175e24.js → keyboard-dbb05fb9.js} +1 -1
  297. package/dist/esm-es5/loader.js +1 -1
  298. package/dist/esm-es5/md.transition-94ac93e1.js +4 -0
  299. package/dist/esm-es5/{notch-controller-fea7f9c5.js → notch-controller-d09b6aca.js} +1 -1
  300. package/dist/esm-es5/overlays-fbc5cab5.js +4 -0
  301. package/dist/esm-es5/swipe-back-a8ca7f93.js +4 -0
  302. package/dist/html.html-data.json +153 -15
  303. package/dist/ionic/index.esm.js +1 -1
  304. package/dist/ionic/ionic.esm.js +1 -1
  305. package/dist/ionic/{p-8985cdb6.system.js → p-0e4f2e17.system.js} +1 -1
  306. package/dist/ionic/{p-33a37fad.system.js → p-1d624e03.system.js} +1 -1
  307. package/dist/ionic/{p-3dd98a73.entry.js → p-1fc72959.entry.js} +1 -1
  308. package/dist/ionic/{p-c7c8429a.system.js → p-20d469d0.system.js} +1 -1
  309. package/dist/ionic/{p-251666e2.entry.js → p-21c3515a.entry.js} +1 -1
  310. package/dist/ionic/p-22e5af95.entry.js +4 -0
  311. package/dist/ionic/p-232d1f22.entry.js +4 -0
  312. package/dist/ionic/p-23672c82.system.entry.js +4 -0
  313. package/dist/ionic/p-26798a7b.system.entry.js +4 -0
  314. package/dist/ionic/p-27bcbbc7.system.entry.js +4 -0
  315. package/dist/ionic/p-2ab4e925.system.entry.js +4 -0
  316. package/dist/ionic/p-2d5aeccc.js +4 -0
  317. package/dist/ionic/p-2d600c25.system.js +4 -0
  318. package/dist/ionic/{p-31fcb233.system.js → p-30029cc2.system.js} +1 -1
  319. package/dist/ionic/{p-cabad15b.system.js → p-304383f9.system.js} +1 -1
  320. package/dist/ionic/p-308e1341.js +4 -0
  321. package/dist/ionic/{p-cdbeaadc.js → p-31158892.js} +1 -1
  322. package/dist/ionic/p-32303650.system.entry.js +4 -0
  323. package/dist/ionic/{p-0bd51c34.system.js → p-32e19bee.system.js} +1 -1
  324. package/dist/ionic/p-34c39c48.entry.js +4 -0
  325. package/dist/ionic/p-36d194c5.entry.js +4 -0
  326. package/dist/ionic/p-3ba01a9c.system.entry.js +4 -0
  327. package/dist/ionic/p-3c58a71b.js +4 -0
  328. package/dist/ionic/{p-31b2326e.system.js → p-3e1e14d9.system.js} +1 -1
  329. package/dist/ionic/{p-78aadecb.entry.js → p-3f6270b3.entry.js} +1 -1
  330. package/dist/ionic/p-3fd26bd6.system.entry.js +4 -0
  331. package/dist/ionic/p-3fe96156.system.js +4 -0
  332. package/dist/ionic/p-42ba3902.entry.js +4 -0
  333. package/dist/ionic/{p-6de472cb.js → p-4890093d.js} +1 -1
  334. package/dist/ionic/{p-88fde0e0.entry.js → p-4911a5d6.entry.js} +1 -1
  335. package/dist/ionic/p-4a081ea9.entry.js +4 -0
  336. package/dist/ionic/p-4a31c99f.entry.js +4 -0
  337. package/dist/ionic/p-4a36430f.system.entry.js +4 -0
  338. package/dist/ionic/{p-27281edd.js → p-4e8e09e1.js} +1 -1
  339. package/dist/ionic/p-51abefb7.system.js +4 -0
  340. package/dist/ionic/{p-4f3ae45a.entry.js → p-535d2a67.entry.js} +1 -1
  341. package/dist/ionic/{p-e24ce1e5.system.js → p-54dfc9b5.system.js} +1 -1
  342. package/dist/ionic/p-563c41f0.system.entry.js +4 -0
  343. package/dist/ionic/{p-5e745192.system.js → p-57477107.system.js} +1 -1
  344. package/dist/ionic/p-5a1aac13.system.entry.js +4 -0
  345. package/dist/ionic/p-5a68960f.entry.js +4 -0
  346. package/dist/ionic/{p-4d67d27a.entry.js → p-5d42b6b4.entry.js} +1 -1
  347. package/dist/ionic/{p-42f189f4.js → p-643a8fae.js} +1 -1
  348. package/dist/ionic/{p-a9978d08.entry.js → p-6b7c55cd.entry.js} +1 -1
  349. package/dist/ionic/p-6c37f051.js +4 -0
  350. package/dist/ionic/{p-a1987850.entry.js → p-6d72fb44.entry.js} +1 -1
  351. package/dist/ionic/{p-e6d68e02.system.entry.js → p-6fd64e7c.system.entry.js} +1 -1
  352. package/dist/ionic/p-73190c5f.entry.js +4 -0
  353. package/dist/ionic/p-73aa7604.entry.js +4 -0
  354. package/dist/ionic/{p-3a75d7fd.js → p-75445583.js} +1 -1
  355. package/dist/ionic/{p-f70970cf.js → p-76d3765d.js} +1 -1
  356. package/dist/ionic/{p-a0bb7b92.system.entry.js → p-77965464.system.entry.js} +1 -1
  357. package/dist/ionic/p-7b725280.entry.js +4 -0
  358. package/dist/ionic/p-8017aad2.system.entry.js +4 -0
  359. package/dist/ionic/p-83af3685.system.js +4 -0
  360. package/dist/ionic/p-846ee227.entry.js +4 -0
  361. package/dist/ionic/p-856c430d.js +4 -0
  362. package/dist/ionic/p-8a1ad27c.system.entry.js +4 -0
  363. package/dist/ionic/p-8ab2d8be.entry.js +4 -0
  364. package/dist/ionic/p-8c97cdc0.entry.js +4 -0
  365. package/dist/ionic/{p-f5d2dc9b.js → p-8ededb41.js} +1 -1
  366. package/dist/ionic/p-8fa6583d.system.js +4 -0
  367. package/dist/ionic/p-93000a81.system.entry.js +4 -0
  368. package/dist/ionic/{p-1cca10d6.system.js → p-95c26010.system.js} +1 -1
  369. package/dist/ionic/{p-8acae6b0.system.entry.js → p-96dbbac1.system.entry.js} +1 -1
  370. package/dist/ionic/{p-ddbb2d5b.system.js → p-98d82c73.system.js} +1 -1
  371. package/dist/ionic/p-990ffd0e.js +4 -0
  372. package/dist/ionic/{p-bb3615f7.js → p-9b97df10.js} +1 -1
  373. package/dist/ionic/{p-3137c025.system.entry.js → p-9c229210.system.entry.js} +2 -2
  374. package/dist/ionic/p-a225bf0f.system.entry.js +4 -0
  375. package/dist/ionic/p-a60a1ce5.js +4 -0
  376. package/dist/ionic/p-a8baa23e.entry.js +4 -0
  377. package/dist/ionic/p-a98dc0c1.entry.js +4 -0
  378. package/dist/ionic/{p-5eda1d7d.entry.js → p-a9a80f5b.entry.js} +1 -1
  379. package/dist/ionic/p-a9e3b5be.system.entry.js +4 -0
  380. package/dist/ionic/p-ab9456e9.system.entry.js +4 -0
  381. package/dist/ionic/p-afcf4620.entry.js +4 -0
  382. package/dist/ionic/{p-ddb30596.entry.js → p-b133e9b4.entry.js} +1 -1
  383. package/dist/ionic/{p-6de62649.system.entry.js → p-b4d31b30.system.entry.js} +1 -1
  384. package/dist/ionic/{p-46d400b4.system.entry.js → p-b752714f.system.entry.js} +1 -1
  385. package/dist/ionic/{p-fba0a6e7.system.entry.js → p-c18de88a.system.entry.js} +1 -1
  386. package/dist/ionic/p-c8f0a036.entry.js +4 -0
  387. package/dist/ionic/p-ca8938f4.js +4 -0
  388. package/dist/ionic/p-cde52378.system.entry.js +4 -0
  389. package/dist/ionic/p-d43f1f3d.system.js +4 -0
  390. package/dist/ionic/p-d662d908.js +4 -0
  391. package/dist/ionic/p-d9695ad9.system.js +4 -0
  392. package/dist/ionic/p-da15f571.system.entry.js +4 -0
  393. package/dist/ionic/p-e3584231.system.js +1 -1
  394. package/dist/ionic/p-e4d90573.js +4 -0
  395. package/dist/ionic/{p-6577aea9.system.entry.js → p-e8e86f69.system.entry.js} +1 -1
  396. package/dist/ionic/p-f54c72b0.system.js +4 -0
  397. package/dist/ionic/p-f7a36cd0.system.js +4 -0
  398. package/dist/ionic/{p-9eec42cc.system.entry.js → p-f910cc73.system.entry.js} +1 -1
  399. package/dist/ionic/p-f967631d.js +4 -0
  400. package/dist/ionic/{p-ada96dd0.system.entry.js → p-fbf3a689.system.entry.js} +1 -1
  401. package/dist/ionic/p-fe4dde76.entry.js +4 -0
  402. package/dist/ionic/p-ffd5dba4.system.entry.js +4 -0
  403. package/dist/types/components/backdrop/backdrop.d.ts +0 -3
  404. package/dist/types/components/checkbox/checkbox.d.ts +0 -1
  405. package/dist/types/components/datetime/datetime.d.ts +0 -1
  406. package/dist/types/components/datetime/utils/data.d.ts +11 -7
  407. package/dist/types/components/infinite-scroll/infinite-scroll.d.ts +0 -7
  408. package/dist/types/components/input/input.d.ts +0 -2
  409. package/dist/types/components/menu/menu.d.ts +1 -1
  410. package/dist/types/components/picker/picker-interfaces.d.ts +8 -0
  411. package/dist/types/components/picker/picker.d.ts +74 -131
  412. package/dist/types/components/picker-column/picker-column-interfaces.d.ts +4 -0
  413. package/dist/types/components/picker-column/picker-column.d.ts +99 -39
  414. package/dist/types/components/picker-column-option/picker-column-option.d.ts +66 -0
  415. package/dist/types/components/picker-legacy/picker.d.ts +158 -0
  416. package/dist/types/components/picker-legacy-column/picker-column.d.ts +46 -0
  417. package/dist/types/components/radio/radio.d.ts +0 -1
  418. package/dist/types/components/radio-group/radio-group-interface.d.ts +0 -1
  419. package/dist/types/components/radio-group/radio-group.d.ts +1 -8
  420. package/dist/types/components/range/range.d.ts +0 -1
  421. package/dist/types/components/router/router.d.ts +1 -2
  422. package/dist/types/components/select/select.d.ts +1 -6
  423. package/dist/types/components/skeleton-text/skeleton-text.d.ts +1 -9
  424. package/dist/types/components/textarea/textarea.d.ts +0 -2
  425. package/dist/types/components/toast/animations/utils.d.ts +4 -15
  426. package/dist/types/components/toast/toast-interface.d.ts +0 -2
  427. package/dist/types/components/toast/toast.d.ts +1 -28
  428. package/dist/types/components/toggle/toggle.d.ts +0 -1
  429. package/dist/types/components.d.ts +161 -159
  430. package/dist/types/interface.d.ts +6 -2
  431. package/dist/types/utils/animation/animation-interface.d.ts +4 -4
  432. package/dist/types/utils/browser/index.d.ts +2 -11
  433. package/dist/types/utils/config.d.ts +2 -2
  434. package/dist/types/utils/forms/index.d.ts +0 -1
  435. package/dist/types/utils/gesture/gesture-controller.d.ts +1 -0
  436. package/dist/types/utils/hardware-back-button.d.ts +0 -4
  437. package/dist/types/utils/overlays.d.ts +5 -3
  438. package/dist/types/utils/slot-mutation-controller.d.ts +2 -2
  439. package/hydrate/index.js +1528 -1886
  440. package/package.json +1 -1
  441. package/components/ion-picker-column-internal.d.ts +0 -11
  442. package/components/ion-picker-column-internal.js +0 -9
  443. package/components/ion-picker-internal.js +0 -9
  444. package/components/picker-column-internal.js +0 -390
  445. package/dist/cjs/compare-with-utils-df1001d7.js +0 -44
  446. package/dist/cjs/index-c8d52405.js +0 -10
  447. package/dist/collection/components/infinite-scroll/test/small-dom-update/infinite-scroll.e2e.js +0 -31
  448. package/dist/collection/components/input/test/slot/input.e2e.js +0 -51
  449. package/dist/collection/components/picker-column-internal/picker-column-internal.js +0 -565
  450. package/dist/collection/components/picker-column-internal/test/disabled/picker-column-internal.e2e.js +0 -162
  451. package/dist/collection/components/picker-internal/picker-internal.js +0 -544
  452. package/dist/collection/components/picker-internal/test/basic/picker-internal.e2e.js +0 -118
  453. package/dist/collection/components/radio-group/test/radio-group.spec.js +0 -69
  454. package/dist/collection/components/select/test/slot/select.e2e.js +0 -67
  455. package/dist/collection/components/textarea/test/slot/textarea.e2e.js +0 -51
  456. package/dist/collection/components/toast/gestures/swipe-to-dismiss.js +0 -267
  457. package/dist/collection/components/toast/test/swipe-gesture/toast.e2e.js +0 -84
  458. package/dist/collection/components/toast/test/toast-config.spec.js +0 -25
  459. package/dist/collection/utils/forms/compare-with-utils.js +0 -39
  460. package/dist/esm/compare-with-utils-a96ff2ea.js +0 -41
  461. package/dist/esm/index-a5d50daf.js +0 -7
  462. package/dist/esm-es5/compare-with-utils-a96ff2ea.js +0 -4
  463. package/dist/esm-es5/index-0c12c22b.js +0 -4
  464. package/dist/esm-es5/input-shims-6539ce13.js +0 -4
  465. package/dist/esm-es5/input.utils-a5a2d164.js +0 -4
  466. package/dist/esm-es5/ion-picker-column-internal.entry.js +0 -4
  467. package/dist/esm-es5/ion-picker-internal.entry.js +0 -4
  468. package/dist/esm-es5/md.transition-43c2874d.js +0 -4
  469. package/dist/esm-es5/overlays-32ef481d.js +0 -4
  470. package/dist/esm-es5/swipe-back-a6f386fc.js +0 -4
  471. package/dist/ionic/p-01d14eba.system.entry.js +0 -4
  472. package/dist/ionic/p-042e6f4b.entry.js +0 -4
  473. package/dist/ionic/p-05d83227.system.entry.js +0 -4
  474. package/dist/ionic/p-16756e94.system.entry.js +0 -4
  475. package/dist/ionic/p-1b19c04b.entry.js +0 -4
  476. package/dist/ionic/p-1e4371bd.js +0 -4
  477. package/dist/ionic/p-28249b10.system.entry.js +0 -4
  478. package/dist/ionic/p-28a2c2a2.entry.js +0 -4
  479. package/dist/ionic/p-29d03b3a.js +0 -4
  480. package/dist/ionic/p-2b7827c7.js +0 -4
  481. package/dist/ionic/p-2d3b9fa3.system.entry.js +0 -4
  482. package/dist/ionic/p-2d539df1.entry.js +0 -4
  483. package/dist/ionic/p-35ce400e.system.js +0 -4
  484. package/dist/ionic/p-36d187af.js +0 -4
  485. package/dist/ionic/p-376a6063.js +0 -4
  486. package/dist/ionic/p-38f2c6bb.system.js +0 -4
  487. package/dist/ionic/p-39c31982.system.entry.js +0 -4
  488. package/dist/ionic/p-3e6b47e8.system.entry.js +0 -4
  489. package/dist/ionic/p-3f5179b5.entry.js +0 -4
  490. package/dist/ionic/p-40f68333.system.js +0 -4
  491. package/dist/ionic/p-438e1b8a.entry.js +0 -4
  492. package/dist/ionic/p-47b6ba5b.js +0 -4
  493. package/dist/ionic/p-517a9885.system.entry.js +0 -4
  494. package/dist/ionic/p-53ec4f1c.system.js +0 -4
  495. package/dist/ionic/p-5e4eec2e.entry.js +0 -4
  496. package/dist/ionic/p-6a6477b2.js +0 -4
  497. package/dist/ionic/p-72f6ff89.js +0 -4
  498. package/dist/ionic/p-765f4dde.entry.js +0 -4
  499. package/dist/ionic/p-7d92bf15.system.entry.js +0 -4
  500. package/dist/ionic/p-7ee0f3f2.entry.js +0 -4
  501. package/dist/ionic/p-80fa068e.entry.js +0 -4
  502. package/dist/ionic/p-8314281e.system.js +0 -4
  503. package/dist/ionic/p-88d5fbd3.js +0 -4
  504. package/dist/ionic/p-8d69a624.entry.js +0 -4
  505. package/dist/ionic/p-8de17614.system.entry.js +0 -4
  506. package/dist/ionic/p-908475e7.system.entry.js +0 -4
  507. package/dist/ionic/p-91d33c4a.js +0 -4
  508. package/dist/ionic/p-979d4f5c.system.js +0 -4
  509. package/dist/ionic/p-9b7f0b0f.entry.js +0 -4
  510. package/dist/ionic/p-9e447eb1.system.js +0 -4
  511. package/dist/ionic/p-9f6ee2c0.system.entry.js +0 -4
  512. package/dist/ionic/p-a0d7bb5e.system.js +0 -4
  513. package/dist/ionic/p-a3277a67.entry.js +0 -4
  514. package/dist/ionic/p-afd6ca9d.entry.js +0 -4
  515. package/dist/ionic/p-b56d0866.system.entry.js +0 -4
  516. package/dist/ionic/p-b6f9d32a.entry.js +0 -4
  517. package/dist/ionic/p-c61cc894.js +0 -4
  518. package/dist/ionic/p-cce9f61a.system.entry.js +0 -4
  519. package/dist/ionic/p-d032f825.system.entry.js +0 -4
  520. package/dist/ionic/p-d51674c5.system.js +0 -4
  521. package/dist/ionic/p-de6f8b28.system.js +0 -4
  522. package/dist/ionic/p-de756e5c.js +0 -4
  523. package/dist/ionic/p-dee7c1d0.system.entry.js +0 -4
  524. package/dist/ionic/p-dfd9432a.entry.js +0 -4
  525. package/dist/ionic/p-e94c392d.entry.js +0 -4
  526. package/dist/ionic/p-f0445d82.system.entry.js +0 -4
  527. package/dist/ionic/p-f656e032.system.entry.js +0 -4
  528. package/dist/ionic/p-feae5133.entry.js +0 -4
  529. package/dist/types/components/picker-column-internal/picker-column-internal-interfaces.d.ts +0 -5
  530. package/dist/types/components/picker-column-internal/picker-column-internal.d.ts +0 -102
  531. package/dist/types/components/picker-internal/picker-internal-interfaces.d.ts +0 -8
  532. package/dist/types/components/picker-internal/picker-internal.d.ts +0 -102
  533. package/dist/types/components/toast/gestures/swipe-to-dismiss.d.ts +0 -9
  534. package/dist/types/jest.d.ts +0 -5
  535. package/dist/types/utils/forms/compare-with-utils.d.ts +0 -18
  536. /package/dist/collection/components/{picker-internal/picker-internal-interfaces.js → picker/picker-interfaces.js} +0 -0
  537. /package/dist/collection/components/{picker-column-internal/picker-column-internal-interfaces.js → picker-column/picker-column-interfaces.js} +0 -0
  538. /package/dist/collection/components/{picker → picker-legacy}/animations/ios.enter.js +0 -0
  539. /package/dist/collection/components/{picker → picker-legacy}/animations/ios.leave.js +0 -0
  540. /package/dist/collection/components/{picker → picker-legacy}/picker-interface.js +0 -0
  541. /package/dist/collection/components/{picker-column → picker-legacy-column}/picker-column.ios.css +0 -0
  542. /package/dist/collection/components/{picker-column → picker-legacy-column}/picker-column.md.css +0 -0
  543. /package/dist/collection/components/{picker-column → picker-legacy-column}/test/test.utils.js +0 -0
  544. /package/dist/esm-es5/{data-f5c75b4e.js → data-4b9508c9.js} +0 -0
  545. /package/dist/esm-es5/{index-a5d50daf.js → index-7a14ecec.js} +0 -0
  546. /package/dist/ionic/{p-792919fd.system.js → p-0e94957a.system.js} +0 -0
  547. /package/dist/ionic/{p-2aea8b1e.js → p-368f5215.js} +0 -0
  548. /package/dist/ionic/{p-7b30edcc.js → p-b347cfd1.js} +0 -0
  549. /package/dist/ionic/{p-82e3d633.system.js → p-f58981c2.system.js} +0 -0
  550. /package/dist/types/components/{picker → picker-legacy}/animations/ios.enter.d.ts +0 -0
  551. /package/dist/types/components/{picker → picker-legacy}/animations/ios.leave.d.ts +0 -0
  552. /package/dist/types/components/{picker → picker-legacy}/picker-interface.d.ts +0 -0
  553. /package/dist/types/components/{picker-column → picker-legacy-column}/test/test.utils.d.ts +0 -0
@@ -18,7 +18,6 @@ import { getIonMode } from "../../global/ionic-global";
18
18
  *
19
19
  * @part track - The background track of the toggle.
20
20
  * @part handle - The toggle handle, or knob, used to change the checked state.
21
- * @part label - The label text describing the toggle.
22
21
  */
23
22
  export class Toggle {
24
23
  constructor() {
@@ -124,8 +123,6 @@ export class Toggle {
124
123
  if (this.legacyFormController.hasLegacyControl()) {
125
124
  this.ionStyle.emit({
126
125
  'interactive-disabled': this.disabled,
127
- // TODO(FW-2990): remove this
128
- legacy: !!this.legacy,
129
126
  });
130
127
  }
131
128
  }
@@ -193,7 +190,7 @@ export class Toggle {
193
190
  }) }, h("label", { class: "toggle-wrapper" }, h("input", Object.assign({ type: "checkbox", role: "switch", "aria-checked": `${checked}`, checked: checked, disabled: disabled, id: inputId, onFocus: () => this.onFocus(), onBlur: () => this.onBlur(), ref: (focusEl) => (this.focusEl = focusEl) }, this.inheritedAttributes)), h("div", { class: {
194
191
  'label-text-wrapper': true,
195
192
  'label-text-wrapper-hidden': !this.hasLabel,
196
- }, part: "label" }, h("slot", null)), h("div", { class: "native-wrapper" }, this.renderToggleControl()))));
193
+ } }, h("slot", null)), h("div", { class: "native-wrapper" }, this.renderToggleControl()))));
197
194
  }
198
195
  renderLegacyToggle() {
199
196
  if (!this.hasLoggedDeprecationWarning) {
@@ -184,6 +184,12 @@ input {
184
184
  }
185
185
 
186
186
  .label-text-wrapper {
187
+ /**
188
+ * This ensures that double tapping this text
189
+ * clicks the <label> and focuses the input
190
+ * when a screen reader is enabled.
191
+ */
192
+ pointer-events: none;
187
193
  text-overflow: ellipsis;
188
194
  white-space: nowrap;
189
195
  overflow: hidden;
@@ -463,16 +463,6 @@ export const createAnimation = (animationId) => {
463
463
  }
464
464
  }
465
465
  });
466
- /**
467
- * Clean up any value coercion before
468
- * the user callbacks fire otherwise
469
- * they may get stale values. For example,
470
- * if someone calls progressStart(0) the
471
- * animation may still be reversed.
472
- */
473
- forceDurationValue = undefined;
474
- forceDirectionValue = undefined;
475
- forceDelayValue = undefined;
476
466
  onFinishCallbacks.forEach((onFinishCallback) => {
477
467
  return onFinishCallback.c(currentStep, ani);
478
468
  });
@@ -677,8 +667,17 @@ export const createAnimation = (animationId) => {
677
667
  update(false, false);
678
668
  }
679
669
  }
680
- if (playTo !== undefined && !parentAnimation) {
681
- play();
670
+ if (playTo !== undefined) {
671
+ onFinish(() => {
672
+ forceDurationValue = undefined;
673
+ forceDirectionValue = undefined;
674
+ forceDelayValue = undefined;
675
+ }, {
676
+ oneTimeCallback: true,
677
+ });
678
+ if (!parentAnimation) {
679
+ play();
680
+ }
682
681
  }
683
682
  return ani;
684
683
  };
@@ -5,22 +5,6 @@ import { createAnimation } from "../animation";
5
5
  import { processKeyframes } from "../animation-utils";
6
6
  import { getTimeGivenProgression } from "../cubic-bezier";
7
7
  describe('Animation Class', () => {
8
- describe('progressEnd callbacks', () => {
9
- test('coerced state should be reset before onFinish runs', (done) => {
10
- const el = document.createElement('div');
11
- const animation = createAnimation()
12
- .addElement(el)
13
- .fromTo('transform', 'translateX(0px)', 'translateX(100px)')
14
- .duration(50);
15
- animation
16
- .onFinish(() => {
17
- expect(animation.getDirection()).toBe('normal');
18
- expect(animation.getDuration()).toBe(50);
19
- done();
20
- })
21
- .progressEnd(0, 0.5, 10);
22
- });
23
- });
24
8
  describe('play()', () => {
25
9
  it('should resolve when the animation is cancelled', async () => {
26
10
  // Tell Jest to expect 1 assertion for async code
@@ -1,5 +1,27 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
+ /**
5
+ * When accessing the document or window, it is important
6
+ * to account for SSR applications where the
7
+ * window is not available. Code that accesses
8
+ * window when it is not available will crash.
9
+ * Even checking if `window === undefined` will cause
10
+ * apps to crash in SSR.
11
+ *
12
+ * Use win below to access an SSR-safe version
13
+ * of the window.
14
+ *
15
+ * Example 1:
16
+ * Before:
17
+ * if (window.innerWidth > 768) { ... }
18
+ *
19
+ * After:
20
+ * import { win } from 'path/to/this/file';
21
+ * if (win?.innerWidth > 768) { ... }
22
+ *
23
+ * Note: Code inside of this if-block will
24
+ * not run in an SSR environment.
25
+ */
4
26
  export const win = typeof window !== 'undefined' ? window : undefined;
5
27
  export const doc = typeof document !== 'undefined' ? document : undefined;
@@ -3,4 +3,3 @@
3
3
  */
4
4
  export * from './form-controller';
5
5
  export * from './notch-controller';
6
- export * from './compare-with-utils';
@@ -189,5 +189,5 @@ class BlockerDelegate {
189
189
  this.ctrl = undefined;
190
190
  }
191
191
  }
192
- const BACKDROP_NO_SCROLL = 'backdrop-no-scroll';
192
+ export const BACKDROP_NO_SCROLL = 'backdrop-no-scroll';
193
193
  export const GESTURE_CONTROLLER = new GestureController();
@@ -1,7 +1,6 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import { doc } from "../browser/index";
5
4
  import { findClosestIonContent } from "../content";
6
5
  import { componentOnReady } from "../helpers";
7
6
  import { Keyboard } from "../native/keyboard";
@@ -12,13 +11,7 @@ const INPUT_BLURRING = true;
12
11
  const SCROLL_ASSIST = true;
13
12
  const HIDE_CARET = true;
14
13
  export const startInputShims = async (config, platform) => {
15
- /**
16
- * If doc is undefined then we are in an SSR environment
17
- * where input shims do not apply.
18
- */
19
- if (doc === undefined) {
20
- return;
21
- }
14
+ const doc = document;
22
15
  const isIOS = platform === 'ios';
23
16
  const isAndroid = platform === 'android';
24
17
  /**
@@ -97,10 +90,11 @@ export const startInputShims = async (config, platform) => {
97
90
  for (const input of inputs) {
98
91
  registerInput(input);
99
92
  }
100
- doc.addEventListener('ionInputDidLoad', (ev) => {
93
+ // TODO(FW-2832): types
94
+ doc.addEventListener('ionInputDidLoad', ((ev) => {
101
95
  registerInput(ev.detail);
102
- });
103
- doc.addEventListener('ionInputDidUnload', (ev) => {
96
+ }));
97
+ doc.addEventListener('ionInputDidUnload', ((ev) => {
104
98
  unregisterInput(ev.detail);
105
- });
99
+ }));
106
100
  };
@@ -1,9 +1,8 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import { doc } from "../browser/index";
5
- import { MENU_BACK_BUTTON_PRIORITY } from "../hardware-back-button";
6
4
  import { printIonWarning } from "../logging/index";
5
+ import { MENU_BACK_BUTTON_PRIORITY } from "../hardware-back-button";
7
6
  import { componentOnReady } from "../helpers";
8
7
  import { menuOverlayAnimation } from "./animations/overlay";
9
8
  import { menuPushAnimation } from "./animations/push";
@@ -185,14 +184,17 @@ const createMenuController = () => {
185
184
  registerAnimation('reveal', menuRevealAnimation);
186
185
  registerAnimation('push', menuPushAnimation);
187
186
  registerAnimation('overlay', menuOverlayAnimation);
188
- doc === null || doc === void 0 ? void 0 : doc.addEventListener('ionBackButton', (ev) => {
189
- const openMenu = _getOpenSync();
190
- if (openMenu) {
191
- ev.detail.register(MENU_BACK_BUTTON_PRIORITY, () => {
192
- return openMenu.close();
193
- });
194
- }
195
- });
187
+ if (typeof document !== 'undefined') {
188
+ document.addEventListener('ionBackButton', (ev) => {
189
+ // TODO(FW-2832): type
190
+ const openMenu = _getOpenSync();
191
+ if (openMenu) {
192
+ ev.detail.register(MENU_BACK_BUTTON_PRIORITY, () => {
193
+ return openMenu.close();
194
+ });
195
+ }
196
+ });
197
+ }
196
198
  return {
197
199
  registerAnimation,
198
200
  get,
@@ -5,6 +5,7 @@ import { doc } from "./browser/index";
5
5
  import { config } from "../global/config";
6
6
  import { getIonMode } from "../global/ionic-global";
7
7
  import { CoreDelegate } from "./framework-delegate";
8
+ import { BACKDROP_NO_SCROLL } from "./gesture/gesture-controller";
8
9
  import { OVERLAY_BACK_BUTTON_PRIORITY } from "./hardware-back-button";
9
10
  import { addEventListener, componentOnReady, focusElement, getElementRoot, removeEventListener } from "./helpers";
10
11
  import { printIonWarning } from "./logging";
@@ -28,7 +29,10 @@ export const alertController = /*@__PURE__*/ createController('ion-alert');
28
29
  export const actionSheetController = /*@__PURE__*/ createController('ion-action-sheet');
29
30
  export const loadingController = /*@__PURE__*/ createController('ion-loading');
30
31
  export const modalController = /*@__PURE__*/ createController('ion-modal');
31
- export const pickerController = /*@__PURE__*/ createController('ion-picker');
32
+ /**
33
+ * @deprecated Use the inline ion-picker component instead.
34
+ */
35
+ export const pickerController = /*@__PURE__*/ createController('ion-picker-legacy');
32
36
  export const popoverController = /*@__PURE__*/ createController('ion-popover');
33
37
  export const toastController = /*@__PURE__*/ createController('ion-toast');
34
38
  /**
@@ -138,7 +142,7 @@ const focusLastDescendant = (ref, overlay) => {
138
142
  * Should NOT include: Toast
139
143
  */
140
144
  const trapKeyboardFocus = (ev, doc) => {
141
- const lastOverlay = getPresentedOverlay(doc, 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-picker,ion-popover');
145
+ const lastOverlay = getPresentedOverlay(doc, 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-picker-legacy,ion-popover');
142
146
  const target = ev.target;
143
147
  /**
144
148
  * If no active overlay, ignore this event.
@@ -323,7 +327,7 @@ export const dismissOverlay = (doc, data, role, overlayTag, id) => {
323
327
  */
324
328
  export const getOverlays = (doc, selector) => {
325
329
  if (selector === undefined) {
326
- selector = 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-picker,ion-popover,ion-toast';
330
+ selector = 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-picker-legacy,ion-popover,ion-toast';
327
331
  }
328
332
  return Array.from(doc.querySelectorAll(selector)).filter((c) => c.overlayIndex > 0);
329
333
  };
@@ -389,6 +393,7 @@ export const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation
389
393
  return;
390
394
  }
391
395
  setRootAriaHidden(true);
396
+ document.body.classList.add(BACKDROP_NO_SCROLL);
392
397
  overlay.presented = true;
393
398
  overlay.willPresent.emit();
394
399
  (_a = overlay.willPresentShorthand) === null || _a === void 0 ? void 0 : _a.emit();
@@ -451,12 +456,14 @@ export const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLe
451
456
  if (!overlay.presented) {
452
457
  return false;
453
458
  }
459
+ const lastOverlay = doc !== undefined && getPresentedOverlays(doc).length === 1;
454
460
  /**
455
461
  * If this is the last visible overlay then
456
462
  * we want to re-add the root to the accessibility tree.
457
463
  */
458
- if (doc !== undefined && getPresentedOverlays(doc).length === 1) {
464
+ if (lastOverlay) {
459
465
  setRootAriaHidden(false);
466
+ document.body.classList.remove(BACKDROP_NO_SCROLL);
460
467
  }
461
468
  overlay.presented = false;
462
469
  try {
@@ -562,7 +569,6 @@ export const safeCall = (handler, arg) => {
562
569
  };
563
570
  export const BACKDROP = 'backdrop';
564
571
  export const GESTURE = 'gesture';
565
- export const OVERLAY_GESTURE_PRIORITY = 39;
566
572
  /**
567
573
  * Creates a delegate controller.
568
574
  *
@@ -9,14 +9,13 @@ import { raf } from "./helpers";
9
9
  * This is not needed for components using native slots in the Shadow DOM.
10
10
  * @internal
11
11
  * @param el The host element to observe
12
- * @param slotName mutationCallback will fire when nodes on these slot(s) change
12
+ * @param slotName mutationCallback will fire when nodes on this slot change
13
13
  * @param mutationCallback The callback to fire whenever the slotted content changes
14
14
  */
15
15
  export const createSlotMutationController = (el, slotName, mutationCallback) => {
16
16
  let hostMutationObserver;
17
17
  let slottedContentMutationObserver;
18
18
  if (win !== undefined && 'MutationObserver' in win) {
19
- const slots = Array.isArray(slotName) ? slotName : [slotName];
20
19
  hostMutationObserver = new MutationObserver((entries) => {
21
20
  for (const entry of entries) {
22
21
  for (const node of entry.addedNodes) {
@@ -24,7 +23,7 @@ export const createSlotMutationController = (el, slotName, mutationCallback) =>
24
23
  * Check to see if the added node
25
24
  * is our slotted content.
26
25
  */
27
- if (node.nodeType === Node.ELEMENT_NODE && slots.includes(node.slot)) {
26
+ if (node.nodeType === Node.ELEMENT_NODE && node.slot === slotName) {
28
27
  /**
29
28
  * If so, we want to watch the slotted
30
29
  * content itself for changes. This lets us
@@ -0,0 +1,65 @@
1
+ /*!
2
+ * (C) Ionic http://ionicframework.com - MIT License
3
+ */
4
+ import { newSpecPage } from "@stencil/core/testing";
5
+ import { Modal } from "../../../components/modal/modal";
6
+ describe('overlays: scroll blocking', () => {
7
+ it('should not block scroll when the overlay is created', async () => {
8
+ const page = await newSpecPage({
9
+ components: [Modal],
10
+ html: `
11
+ <ion-modal></ion-modal>
12
+ `,
13
+ });
14
+ const body = page.doc.querySelector('body');
15
+ expect(body).not.toHaveClass('backdrop-no-scroll');
16
+ });
17
+ it('should block scroll when the overlay is presented', async () => {
18
+ const page = await newSpecPage({
19
+ components: [Modal],
20
+ html: `
21
+ <ion-modal></ion-modal>
22
+ `,
23
+ });
24
+ const modal = page.body.querySelector('ion-modal');
25
+ const body = page.doc.querySelector('body');
26
+ await modal.present();
27
+ expect(body).toHaveClass('backdrop-no-scroll');
28
+ await modal.dismiss();
29
+ expect(body).not.toHaveClass('backdrop-no-scroll');
30
+ });
31
+ it('should not block scroll when the overlay is dismissed', async () => {
32
+ const page = await newSpecPage({
33
+ components: [Modal],
34
+ html: `
35
+ <ion-modal></ion-modal>
36
+ `,
37
+ });
38
+ const modal = page.body.querySelector('ion-modal');
39
+ const body = page.doc.querySelector('body');
40
+ await modal.present();
41
+ expect(body).toHaveClass('backdrop-no-scroll');
42
+ await modal.dismiss();
43
+ expect(body).not.toHaveClass('backdrop-no-scroll');
44
+ });
45
+ it('should not enable scroll until last overlay is dismissed', async () => {
46
+ const page = await newSpecPage({
47
+ components: [Modal],
48
+ html: `
49
+ <ion-modal id="one"></ion-modal>
50
+ <ion-modal id="two"></ion-modal>
51
+ `,
52
+ });
53
+ const modalOne = page.body.querySelector('#one');
54
+ const modalTwo = page.body.querySelector('#two');
55
+ const body = page.doc.querySelector('body');
56
+ await modalOne.present();
57
+ expect(body).toHaveClass('backdrop-no-scroll');
58
+ await modalTwo.present();
59
+ expect(body).toHaveClass('backdrop-no-scroll');
60
+ await modalOne.dismiss();
61
+ expect(body).toHaveClass('backdrop-no-scroll');
62
+ await modalTwo.dismiss();
63
+ expect(body).not.toHaveClass('backdrop-no-scroll');
64
+ });
65
+ });