@ionic/core 7.5.8-dev.11701876182.1e71e7a0 → 7.5.8-dev.11701894917.1c1465bd

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 (442) 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/gesture-controller.js +1 -1
  5. package/components/index4.js +12 -10
  6. package/components/index5.js +22 -0
  7. package/components/input-shims.js +7 -12
  8. package/components/input.utils.js +2 -3
  9. package/components/ion-content.js +1 -1
  10. package/components/ion-datetime.js +15 -48
  11. package/components/ion-infinite-scroll.js +3 -11
  12. package/components/ion-input.js +8 -31
  13. package/components/ion-modal.js +2 -2
  14. package/components/ion-range.js +3 -5
  15. package/components/ion-select.js +29 -44
  16. package/components/ion-skeleton-text.js +1 -14
  17. package/components/ion-textarea.js +7 -30
  18. package/components/ion-toast.js +74 -419
  19. package/components/ion-toggle.js +3 -5
  20. package/components/item.js +2 -2
  21. package/components/label.js +2 -2
  22. package/components/overlays.js +6 -3
  23. package/components/radio-group.js +0 -2
  24. package/components/radio.js +5 -45
  25. package/dist/cjs/{animation-9b401d39.js → animation-cc40e39c.js} +12 -13
  26. package/dist/cjs/{button-active-a5185907.js → button-active-9d7e0640.js} +2 -2
  27. package/dist/cjs/{capacitor-c04564bf.js → capacitor-46980811.js} +1 -1
  28. package/dist/cjs/{gesture-controller-c40c045a.js → gesture-controller-9436f482.js} +1 -0
  29. package/dist/cjs/{haptic-b882e0bb.js → haptic-216df36c.js} +1 -1
  30. package/dist/cjs/index-306a7476.js +32 -0
  31. package/dist/cjs/{index-ce101dc9.js → index-5cbb20f9.js} +13 -11
  32. package/dist/cjs/{index-b4f986cd.js → index-8c1e77d6.js} +1 -1
  33. package/dist/cjs/{index-f8f13389.js → index-d4c2e02c.js} +2 -2
  34. package/dist/cjs/{index-d1b59ffa.js → index-ee07ed59.js} +1 -1
  35. package/dist/cjs/index.cjs.js +10 -10
  36. package/dist/cjs/{input-shims-a23bb0f4.js → input-shims-87102b6a.js} +10 -15
  37. package/dist/cjs/{input.utils-3d0166a2.js → input.utils-2a11c1fe.js} +3 -4
  38. package/dist/cjs/ion-action-sheet.cjs.entry.js +8 -8
  39. package/dist/cjs/ion-alert.cjs.entry.js +8 -8
  40. package/dist/cjs/ion-app_8.cjs.entry.js +10 -10
  41. package/dist/cjs/ion-backdrop.cjs.entry.js +0 -12
  42. package/dist/cjs/ion-checkbox.cjs.entry.js +3 -5
  43. package/dist/cjs/ion-datetime_3.cjs.entry.js +14 -28
  44. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +3 -11
  45. package/dist/cjs/ion-input.cjs.entry.js +11 -34
  46. package/dist/cjs/ion-item-option_3.cjs.entry.js +1 -1
  47. package/dist/cjs/ion-item_8.cjs.entry.js +4 -17
  48. package/dist/cjs/ion-loading.cjs.entry.js +4 -3
  49. package/dist/cjs/ion-menu_3.cjs.entry.js +7 -7
  50. package/dist/cjs/ion-modal.cjs.entry.js +10 -10
  51. package/dist/cjs/ion-nav_2.cjs.entry.js +2 -2
  52. package/dist/cjs/ion-picker-column-internal.cjs.entry.js +3 -3
  53. package/dist/cjs/ion-popover.cjs.entry.js +5 -4
  54. package/dist/cjs/ion-radio_2.cjs.entry.js +4 -9
  55. package/dist/cjs/ion-range.cjs.entry.js +4 -6
  56. package/dist/cjs/ion-refresher_2.cjs.entry.js +7 -7
  57. package/dist/cjs/ion-reorder_2.cjs.entry.js +4 -4
  58. package/dist/cjs/ion-segment_2.cjs.entry.js +1 -1
  59. package/dist/cjs/ion-select_3.cjs.entry.js +36 -51
  60. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +4 -4
  61. package/dist/cjs/ion-textarea.cjs.entry.js +10 -33
  62. package/dist/cjs/ion-toast.cjs.entry.js +93 -434
  63. package/dist/cjs/ion-toggle.cjs.entry.js +7 -9
  64. package/dist/cjs/ionic.cjs.js +1 -1
  65. package/dist/cjs/{ios.transition-6787b799.js → ios.transition-a4ffb5a2.js} +3 -3
  66. package/dist/cjs/{keyboard-af1bb365.js → keyboard-7d621ee9.js} +3 -3
  67. package/dist/cjs/{keyboard-0272231f.js → keyboard-9390928c.js} +1 -1
  68. package/dist/cjs/{keyboard-controller-c05e747a.js → keyboard-controller-2158b478.js} +2 -2
  69. package/dist/cjs/loader.cjs.js +1 -1
  70. package/dist/cjs/{md.transition-e033d20a.js → md.transition-292abe1c.js} +3 -3
  71. package/dist/cjs/{notch-controller-9735e7ac.js → notch-controller-1dce508a.js} +1 -1
  72. package/dist/cjs/{overlays-27a6fb16.js → overlays-2c6b1072.js} +6 -4
  73. package/dist/cjs/{swipe-back-2a858bbd.js → swipe-back-b8f2330b.js} +2 -2
  74. package/dist/collection/components/backdrop/backdrop.js +0 -12
  75. package/dist/collection/components/checkbox/checkbox.ios.css +6 -0
  76. package/dist/collection/components/checkbox/checkbox.js +1 -4
  77. package/dist/collection/components/checkbox/checkbox.md.css +6 -0
  78. package/dist/collection/components/checkbox/test/checkbox.spec.js +0 -14
  79. package/dist/collection/components/content/content.css +0 -4
  80. package/dist/collection/components/datetime/datetime.ios.css +83 -25
  81. package/dist/collection/components/datetime/datetime.js +5 -20
  82. package/dist/collection/components/datetime/datetime.md.css +88 -25
  83. package/dist/collection/components/datetime/test/a11y/datetime.e2e.js +1 -1
  84. package/dist/collection/components/datetime/test/a11y/datetime.spec.js +6 -9
  85. package/dist/collection/components/datetime/test/basic/datetime.e2e.js +10 -0
  86. package/dist/collection/components/datetime/test/month-year-picker/datetime.e2e.js +1 -1
  87. package/dist/collection/components/datetime/test/readonly/datetime.e2e.js +2 -2
  88. package/dist/collection/components/infinite-scroll/infinite-scroll.js +3 -11
  89. package/dist/collection/components/input/input.ios.css +3 -10
  90. package/dist/collection/components/input/input.js +6 -31
  91. package/dist/collection/components/input/input.md.css +12 -13
  92. package/dist/collection/components/item/item.ios.css +3 -41
  93. package/dist/collection/components/item/item.md.css +3 -41
  94. package/dist/collection/components/item/test/basic/item.e2e.js +1 -1
  95. package/dist/collection/components/item/test/disabled/item.e2e.js +1 -0
  96. package/dist/collection/components/item/test/text/item.e2e.js +14 -0
  97. package/dist/collection/components/label/label.ios.css +3 -14
  98. package/dist/collection/components/label/label.md.css +3 -14
  99. package/dist/collection/components/modal/gestures/swipe-to-close.js +1 -2
  100. package/dist/collection/components/note/test/a11y/note.e2e.js +0 -43
  101. package/dist/collection/components/radio/radio.ios.css +6 -0
  102. package/dist/collection/components/radio/radio.js +3 -7
  103. package/dist/collection/components/radio/radio.md.css +6 -0
  104. package/dist/collection/components/radio/test/radio.spec.js +0 -14
  105. package/dist/collection/components/radio-group/radio-group.js +0 -24
  106. package/dist/collection/components/range/range.ios.css +6 -0
  107. package/dist/collection/components/range/range.js +1 -4
  108. package/dist/collection/components/range/range.md.css +6 -0
  109. package/dist/collection/components/range/test/range.spec.js +0 -16
  110. package/dist/collection/components/select/select.ios.css +7 -60
  111. package/dist/collection/components/select/select.js +28 -45
  112. package/dist/collection/components/select/select.md.css +19 -63
  113. package/dist/collection/components/select/test/item/select.e2e.js +0 -15
  114. package/dist/collection/components/select/test/label/select.e2e.js +1 -1
  115. package/dist/collection/components/select/test/legacy/wrapping/select.e2e.js +1 -1
  116. package/dist/collection/components/skeleton-text/skeleton-text.js +0 -39
  117. package/dist/collection/components/textarea/textarea.ios.css +5 -37
  118. package/dist/collection/components/textarea/textarea.js +5 -30
  119. package/dist/collection/components/textarea/textarea.md.css +14 -47
  120. package/dist/collection/components/toast/animations/ios.enter.js +1 -2
  121. package/dist/collection/components/toast/animations/md.enter.js +3 -4
  122. package/dist/collection/components/toast/animations/utils.js +14 -20
  123. package/dist/collection/components/toast/test/toast.spec.js +0 -80
  124. package/dist/collection/components/toast/toast.ios.css +10 -10
  125. package/dist/collection/components/toast/toast.js +1 -104
  126. package/dist/collection/components/toast/toast.md.css +0 -10
  127. package/dist/collection/components/toggle/test/toggle.spec.js +0 -12
  128. package/dist/collection/components/toggle/toggle.ios.css +6 -0
  129. package/dist/collection/components/toggle/toggle.js +1 -4
  130. package/dist/collection/components/toggle/toggle.md.css +6 -0
  131. package/dist/collection/utils/animation/animation.js +11 -12
  132. package/dist/collection/utils/animation/test/animation.spec.js +0 -16
  133. package/dist/collection/utils/browser/index.js +22 -0
  134. package/dist/collection/utils/forms/index.js +0 -1
  135. package/dist/collection/utils/gesture/gesture-controller.js +1 -1
  136. package/dist/collection/utils/input-shims/input-shims.js +6 -12
  137. package/dist/collection/utils/menu-controller/index.js +12 -10
  138. package/dist/collection/utils/overlays.js +5 -2
  139. package/dist/collection/utils/slot-mutation-controller.js +2 -3
  140. package/dist/collection/utils/test/overlays/overlays-scroll-blocking.spec.js +65 -0
  141. package/dist/docs.json +8 -176
  142. package/dist/esm/{animation-dde8cc0d.js → animation-fb0e0f6f.js} +12 -13
  143. package/dist/esm/{button-active-c6ee4f50.js → button-active-ed9d848c.js} +2 -2
  144. package/dist/esm/{capacitor-59395cbd.js → capacitor-b0e5fe83.js} +1 -1
  145. package/dist/esm/{gesture-controller-1bf57181.js → gesture-controller-314a54f6.js} +1 -1
  146. package/dist/esm/{haptic-554688a5.js → haptic-152c4172.js} +1 -1
  147. package/dist/esm/{index-2cf77112.js → index-39782642.js} +2 -2
  148. package/dist/esm/index-7a14ecec.js +29 -0
  149. package/dist/esm/{index-0c12c22b.js → index-80492ed3.js} +13 -11
  150. package/dist/esm/{index-82eeb47f.js → index-ba9976bb.js} +1 -1
  151. package/dist/esm/{index-1932b201.js → index-d8817fb0.js} +2 -2
  152. package/dist/esm/index.js +10 -10
  153. package/dist/esm/{input-shims-6539ce13.js → input-shims-0a2e541d.js} +9 -14
  154. package/dist/esm/{input.utils-a5a2d164.js → input.utils-2846d430.js} +3 -4
  155. package/dist/esm/ion-action-sheet.entry.js +8 -8
  156. package/dist/esm/ion-alert.entry.js +8 -8
  157. package/dist/esm/ion-app_8.entry.js +10 -10
  158. package/dist/esm/ion-backdrop.entry.js +0 -12
  159. package/dist/esm/ion-checkbox.entry.js +3 -5
  160. package/dist/esm/ion-datetime_3.entry.js +14 -28
  161. package/dist/esm/ion-infinite-scroll_2.entry.js +3 -11
  162. package/dist/esm/ion-input.entry.js +11 -34
  163. package/dist/esm/ion-item-option_3.entry.js +1 -1
  164. package/dist/esm/ion-item_8.entry.js +4 -17
  165. package/dist/esm/ion-loading.entry.js +4 -3
  166. package/dist/esm/ion-menu_3.entry.js +7 -7
  167. package/dist/esm/ion-modal.entry.js +10 -10
  168. package/dist/esm/ion-nav_2.entry.js +2 -2
  169. package/dist/esm/ion-picker-column-internal.entry.js +3 -3
  170. package/dist/esm/ion-popover.entry.js +5 -4
  171. package/dist/esm/ion-radio_2.entry.js +4 -9
  172. package/dist/esm/ion-range.entry.js +4 -6
  173. package/dist/esm/ion-refresher_2.entry.js +7 -7
  174. package/dist/esm/ion-reorder_2.entry.js +4 -4
  175. package/dist/esm/ion-segment_2.entry.js +1 -1
  176. package/dist/esm/ion-select_3.entry.js +32 -47
  177. package/dist/esm/ion-tab-bar_2.entry.js +4 -4
  178. package/dist/esm/ion-textarea.entry.js +10 -33
  179. package/dist/esm/ion-toast.entry.js +76 -417
  180. package/dist/esm/ion-toggle.entry.js +7 -9
  181. package/dist/esm/ionic.js +1 -1
  182. package/dist/esm/{ios.transition-802a84a6.js → ios.transition-fd16bec1.js} +3 -3
  183. package/dist/esm/{keyboard-52278bd7.js → keyboard-c402e885.js} +3 -3
  184. package/dist/esm/{keyboard-controller-ec5c2bfa.js → keyboard-controller-5d90929a.js} +2 -2
  185. package/dist/esm/{keyboard-73175e24.js → keyboard-dbb05fb9.js} +1 -1
  186. package/dist/esm/loader.js +1 -1
  187. package/dist/esm/{md.transition-43c2874d.js → md.transition-94ac93e1.js} +3 -3
  188. package/dist/esm/{notch-controller-fea7f9c5.js → notch-controller-d09b6aca.js} +1 -1
  189. package/dist/esm/{overlays-32ef481d.js → overlays-d23ea6e1.js} +7 -4
  190. package/dist/esm/{swipe-back-a6f386fc.js → swipe-back-a8ca7f93.js} +2 -2
  191. package/dist/esm-es5/{animation-dde8cc0d.js → animation-fb0e0f6f.js} +1 -1
  192. package/dist/esm-es5/{button-active-c6ee4f50.js → button-active-ed9d848c.js} +1 -1
  193. package/dist/esm-es5/{capacitor-59395cbd.js → capacitor-b0e5fe83.js} +1 -1
  194. package/dist/esm-es5/{gesture-controller-1bf57181.js → gesture-controller-314a54f6.js} +1 -1
  195. package/dist/esm-es5/{haptic-554688a5.js → haptic-152c4172.js} +1 -1
  196. package/dist/esm-es5/{index-2cf77112.js → index-39782642.js} +1 -1
  197. package/dist/esm-es5/index-80492ed3.js +4 -0
  198. package/dist/esm-es5/{index-82eeb47f.js → index-ba9976bb.js} +1 -1
  199. package/dist/esm-es5/{index-1932b201.js → index-d8817fb0.js} +1 -1
  200. package/dist/esm-es5/index.js +1 -1
  201. package/dist/esm-es5/input-shims-0a2e541d.js +4 -0
  202. package/dist/esm-es5/input.utils-2846d430.js +4 -0
  203. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  204. package/dist/esm-es5/ion-alert.entry.js +1 -1
  205. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  206. package/dist/esm-es5/ion-backdrop.entry.js +1 -1
  207. package/dist/esm-es5/ion-checkbox.entry.js +1 -1
  208. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  209. package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
  210. package/dist/esm-es5/ion-input.entry.js +1 -1
  211. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  212. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  213. package/dist/esm-es5/ion-loading.entry.js +1 -1
  214. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  215. package/dist/esm-es5/ion-modal.entry.js +1 -1
  216. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  217. package/dist/esm-es5/ion-picker-column-internal.entry.js +1 -1
  218. package/dist/esm-es5/ion-popover.entry.js +1 -1
  219. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  220. package/dist/esm-es5/ion-range.entry.js +1 -1
  221. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  222. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  223. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  224. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  225. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  226. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  227. package/dist/esm-es5/ion-toast.entry.js +1 -1
  228. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  229. package/dist/esm-es5/ionic.js +1 -1
  230. package/dist/esm-es5/{ios.transition-802a84a6.js → ios.transition-fd16bec1.js} +1 -1
  231. package/dist/esm-es5/{keyboard-52278bd7.js → keyboard-c402e885.js} +1 -1
  232. package/dist/esm-es5/{keyboard-controller-ec5c2bfa.js → keyboard-controller-5d90929a.js} +1 -1
  233. package/dist/esm-es5/{keyboard-73175e24.js → keyboard-dbb05fb9.js} +1 -1
  234. package/dist/esm-es5/loader.js +1 -1
  235. package/dist/esm-es5/md.transition-94ac93e1.js +4 -0
  236. package/dist/esm-es5/{notch-controller-fea7f9c5.js → notch-controller-d09b6aca.js} +1 -1
  237. package/dist/esm-es5/overlays-d23ea6e1.js +4 -0
  238. package/dist/esm-es5/swipe-back-a8ca7f93.js +4 -0
  239. package/dist/html.html-data.json +1 -14
  240. package/dist/ionic/index.esm.js +1 -1
  241. package/dist/ionic/ionic.esm.js +1 -1
  242. package/dist/ionic/{p-8985cdb6.system.js → p-0e4f2e17.system.js} +1 -1
  243. package/dist/ionic/{p-33a37fad.system.js → p-1d624e03.system.js} +1 -1
  244. package/dist/ionic/p-1e57bd24.entry.js +4 -0
  245. package/dist/ionic/p-1f620cd4.system.entry.js +4 -0
  246. package/dist/ionic/{p-3dd98a73.entry.js → p-1fc72959.entry.js} +1 -1
  247. package/dist/ionic/{p-c7c8429a.system.js → p-20d469d0.system.js} +1 -1
  248. package/dist/ionic/p-22e5af95.entry.js +4 -0
  249. package/dist/ionic/p-232d1f22.entry.js +4 -0
  250. package/dist/ionic/{p-4d67d27a.entry.js → p-27ea6f4e.entry.js} +1 -1
  251. package/dist/ionic/p-2ab4e925.system.entry.js +4 -0
  252. package/dist/ionic/p-2d5aeccc.js +4 -0
  253. package/dist/ionic/p-2d600c25.system.js +4 -0
  254. package/dist/ionic/{p-a9978d08.entry.js → p-2dc43d20.entry.js} +1 -1
  255. package/dist/ionic/p-2f2293da.system.entry.js +4 -0
  256. package/dist/ionic/{p-251666e2.entry.js → p-2f300cca.entry.js} +1 -1
  257. package/dist/ionic/{p-31fcb233.system.js → p-30029cc2.system.js} +1 -1
  258. package/dist/ionic/{p-cabad15b.system.js → p-304383f9.system.js} +1 -1
  259. package/dist/ionic/p-308e1341.js +4 -0
  260. package/dist/ionic/{p-cdbeaadc.js → p-31158892.js} +1 -1
  261. package/dist/ionic/p-32303650.system.entry.js +4 -0
  262. package/dist/ionic/{p-0bd51c34.system.js → p-32e19bee.system.js} +1 -1
  263. package/dist/ionic/p-34c39c48.entry.js +4 -0
  264. package/dist/ionic/p-39a335b6.system.entry.js +4 -0
  265. package/dist/ionic/p-3b568d18.entry.js +4 -0
  266. package/dist/ionic/p-3ba01a9c.system.entry.js +4 -0
  267. package/dist/ionic/p-3c58a71b.js +4 -0
  268. package/dist/ionic/{p-31b2326e.system.js → p-3e1e14d9.system.js} +1 -1
  269. package/dist/ionic/{p-fba0a6e7.system.entry.js → p-3e3d06a6.system.entry.js} +1 -1
  270. package/dist/ionic/{p-78aadecb.entry.js → p-3f6270b3.entry.js} +1 -1
  271. package/dist/ionic/p-3fd26bd6.system.entry.js +4 -0
  272. package/dist/ionic/p-3fe96156.system.js +4 -0
  273. package/dist/ionic/p-42ba3902.entry.js +4 -0
  274. package/dist/ionic/{p-6de472cb.js → p-4890093d.js} +1 -1
  275. package/dist/ionic/{p-88fde0e0.entry.js → p-4911a5d6.entry.js} +1 -1
  276. package/dist/ionic/p-4a31c99f.entry.js +4 -0
  277. package/dist/ionic/{p-8acae6b0.system.entry.js → p-4df97e3c.system.entry.js} +1 -1
  278. package/dist/ionic/{p-27281edd.js → p-4e8e09e1.js} +1 -1
  279. package/dist/ionic/p-51abefb7.system.js +4 -0
  280. package/dist/ionic/{p-4f3ae45a.entry.js → p-535d2a67.entry.js} +1 -1
  281. package/dist/ionic/{p-5e745192.system.js → p-57477107.system.js} +1 -1
  282. package/dist/ionic/p-5a68960f.entry.js +4 -0
  283. package/dist/ionic/p-60502e3f.system.entry.js +4 -0
  284. package/dist/ionic/p-60b386c9.system.entry.js +4 -0
  285. package/dist/ionic/{p-42f189f4.js → p-643a8fae.js} +1 -1
  286. package/dist/ionic/{p-b6f9d32a.entry.js → p-67da080d.entry.js} +1 -1
  287. package/dist/ionic/p-6c37f051.js +4 -0
  288. package/dist/ionic/{p-a1987850.entry.js → p-6d72fb44.entry.js} +1 -1
  289. package/dist/ionic/{p-e6d68e02.system.entry.js → p-6fd64e7c.system.entry.js} +1 -1
  290. package/dist/ionic/{p-dee7c1d0.system.entry.js → p-73ea8f82.system.entry.js} +1 -1
  291. package/dist/ionic/{p-3a75d7fd.js → p-75445583.js} +1 -1
  292. package/dist/ionic/{p-f70970cf.js → p-76d3765d.js} +1 -1
  293. package/dist/ionic/{p-a0bb7b92.system.entry.js → p-77965464.system.entry.js} +1 -1
  294. package/dist/ionic/p-7b725280.entry.js +4 -0
  295. package/dist/ionic/p-83af3685.system.js +4 -0
  296. package/dist/ionic/p-856c430d.js +4 -0
  297. package/dist/ionic/p-8780cc2a.entry.js +4 -0
  298. package/dist/ionic/p-8c97cdc0.entry.js +4 -0
  299. package/dist/ionic/{p-f5d2dc9b.js → p-8ededb41.js} +1 -1
  300. package/dist/ionic/p-93000a81.system.entry.js +4 -0
  301. package/dist/ionic/{p-1cca10d6.system.js → p-95c26010.system.js} +1 -1
  302. package/dist/ionic/{p-ddbb2d5b.system.js → p-98d82c73.system.js} +1 -1
  303. package/dist/ionic/p-990ffd0e.js +4 -0
  304. package/dist/ionic/{p-bb3615f7.js → p-9b97df10.js} +1 -1
  305. package/dist/ionic/{p-3137c025.system.entry.js → p-9c229210.system.entry.js} +2 -2
  306. package/dist/ionic/p-a225bf0f.system.entry.js +4 -0
  307. package/dist/ionic/p-a60a1ce5.js +4 -0
  308. package/dist/ionic/p-a98dc0c1.entry.js +4 -0
  309. package/dist/ionic/{p-5eda1d7d.entry.js → p-a9a80f5b.entry.js} +1 -1
  310. package/dist/ionic/p-a9e3b5be.system.entry.js +4 -0
  311. package/dist/ionic/p-ab11130c.system.js +4 -0
  312. package/dist/ionic/p-ab9456e9.system.entry.js +4 -0
  313. package/dist/ionic/p-af16fe62.entry.js +4 -0
  314. package/dist/ionic/p-af19a573.entry.js +4 -0
  315. package/dist/ionic/{p-6de62649.system.entry.js → p-b4d31b30.system.entry.js} +1 -1
  316. package/dist/ionic/{p-46d400b4.system.entry.js → p-b752714f.system.entry.js} +1 -1
  317. package/dist/ionic/p-c14f8ac8.js +4 -0
  318. package/dist/ionic/p-cde52378.system.entry.js +4 -0
  319. package/dist/ionic/p-d43f1f3d.system.js +4 -0
  320. package/dist/ionic/p-d662d908.js +4 -0
  321. package/dist/ionic/p-d9695ad9.system.js +4 -0
  322. package/dist/ionic/p-da15f571.system.entry.js +4 -0
  323. package/dist/ionic/p-e1e5afe1.system.entry.js +4 -0
  324. package/dist/ionic/p-e3584231.system.js +1 -1
  325. package/dist/ionic/{p-ada96dd0.system.entry.js → p-e3ad9607.system.entry.js} +1 -1
  326. package/dist/ionic/p-e4d90573.js +4 -0
  327. package/dist/ionic/{p-6577aea9.system.entry.js → p-e8e86f69.system.entry.js} +1 -1
  328. package/dist/ionic/p-f54c72b0.system.js +4 -0
  329. package/dist/ionic/p-f78efbd1.entry.js +4 -0
  330. package/dist/ionic/p-f7a36cd0.system.js +4 -0
  331. package/dist/ionic/p-f967631d.js +4 -0
  332. package/dist/ionic/p-fe4dde76.entry.js +4 -0
  333. package/dist/ionic/{p-e24ce1e5.system.js → p-fff7a57e.system.js} +1 -1
  334. package/dist/types/components/backdrop/backdrop.d.ts +0 -3
  335. package/dist/types/components/checkbox/checkbox.d.ts +0 -1
  336. package/dist/types/components/datetime/datetime.d.ts +0 -1
  337. package/dist/types/components/infinite-scroll/infinite-scroll.d.ts +0 -7
  338. package/dist/types/components/input/input.d.ts +0 -2
  339. package/dist/types/components/menu/menu.d.ts +1 -1
  340. package/dist/types/components/radio/radio.d.ts +0 -1
  341. package/dist/types/components/radio-group/radio-group-interface.d.ts +0 -1
  342. package/dist/types/components/radio-group/radio-group.d.ts +1 -8
  343. package/dist/types/components/range/range.d.ts +0 -1
  344. package/dist/types/components/router/router.d.ts +1 -2
  345. package/dist/types/components/select/select.d.ts +1 -6
  346. package/dist/types/components/skeleton-text/skeleton-text.d.ts +1 -9
  347. package/dist/types/components/textarea/textarea.d.ts +0 -2
  348. package/dist/types/components/toast/animations/utils.d.ts +4 -15
  349. package/dist/types/components/toast/toast-interface.d.ts +0 -2
  350. package/dist/types/components/toast/toast.d.ts +1 -28
  351. package/dist/types/components/toggle/toggle.d.ts +0 -1
  352. package/dist/types/components.d.ts +6 -37
  353. package/dist/types/interface.d.ts +5 -1
  354. package/dist/types/utils/animation/animation-interface.d.ts +4 -4
  355. package/dist/types/utils/browser/index.d.ts +2 -11
  356. package/dist/types/utils/forms/index.d.ts +0 -1
  357. package/dist/types/utils/gesture/gesture-controller.d.ts +1 -0
  358. package/dist/types/utils/hardware-back-button.d.ts +0 -4
  359. package/dist/types/utils/overlays.d.ts +0 -1
  360. package/dist/types/utils/slot-mutation-controller.d.ts +2 -2
  361. package/hydrate/index.js +194 -676
  362. package/package.json +1 -1
  363. package/dist/cjs/compare-with-utils-df1001d7.js +0 -44
  364. package/dist/cjs/index-c8d52405.js +0 -10
  365. package/dist/collection/components/infinite-scroll/test/small-dom-update/infinite-scroll.e2e.js +0 -31
  366. package/dist/collection/components/input/test/slot/input.e2e.js +0 -51
  367. package/dist/collection/components/radio-group/test/radio-group.spec.js +0 -69
  368. package/dist/collection/components/select/test/slot/select.e2e.js +0 -67
  369. package/dist/collection/components/textarea/test/slot/textarea.e2e.js +0 -51
  370. package/dist/collection/components/toast/gestures/swipe-to-dismiss.js +0 -267
  371. package/dist/collection/components/toast/test/swipe-gesture/toast.e2e.js +0 -84
  372. package/dist/collection/components/toast/test/toast-config.spec.js +0 -25
  373. package/dist/collection/utils/forms/compare-with-utils.js +0 -39
  374. package/dist/esm/compare-with-utils-a96ff2ea.js +0 -41
  375. package/dist/esm/index-a5d50daf.js +0 -7
  376. package/dist/esm-es5/compare-with-utils-a96ff2ea.js +0 -4
  377. package/dist/esm-es5/index-0c12c22b.js +0 -4
  378. package/dist/esm-es5/input-shims-6539ce13.js +0 -4
  379. package/dist/esm-es5/input.utils-a5a2d164.js +0 -4
  380. package/dist/esm-es5/md.transition-43c2874d.js +0 -4
  381. package/dist/esm-es5/overlays-32ef481d.js +0 -4
  382. package/dist/esm-es5/swipe-back-a6f386fc.js +0 -4
  383. package/dist/ionic/p-01d14eba.system.entry.js +0 -4
  384. package/dist/ionic/p-042e6f4b.entry.js +0 -4
  385. package/dist/ionic/p-05d83227.system.entry.js +0 -4
  386. package/dist/ionic/p-16756e94.system.entry.js +0 -4
  387. package/dist/ionic/p-1b19c04b.entry.js +0 -4
  388. package/dist/ionic/p-1e4371bd.js +0 -4
  389. package/dist/ionic/p-28249b10.system.entry.js +0 -4
  390. package/dist/ionic/p-28a2c2a2.entry.js +0 -4
  391. package/dist/ionic/p-29d03b3a.js +0 -4
  392. package/dist/ionic/p-2b7827c7.js +0 -4
  393. package/dist/ionic/p-2d3b9fa3.system.entry.js +0 -4
  394. package/dist/ionic/p-2d539df1.entry.js +0 -4
  395. package/dist/ionic/p-35ce400e.system.js +0 -4
  396. package/dist/ionic/p-36d187af.js +0 -4
  397. package/dist/ionic/p-376a6063.js +0 -4
  398. package/dist/ionic/p-38f2c6bb.system.js +0 -4
  399. package/dist/ionic/p-39c31982.system.entry.js +0 -4
  400. package/dist/ionic/p-3e6b47e8.system.entry.js +0 -4
  401. package/dist/ionic/p-3f5179b5.entry.js +0 -4
  402. package/dist/ionic/p-40f68333.system.js +0 -4
  403. package/dist/ionic/p-438e1b8a.entry.js +0 -4
  404. package/dist/ionic/p-47b6ba5b.js +0 -4
  405. package/dist/ionic/p-517a9885.system.entry.js +0 -4
  406. package/dist/ionic/p-53ec4f1c.system.js +0 -4
  407. package/dist/ionic/p-5e4eec2e.entry.js +0 -4
  408. package/dist/ionic/p-6a6477b2.js +0 -4
  409. package/dist/ionic/p-72f6ff89.js +0 -4
  410. package/dist/ionic/p-765f4dde.entry.js +0 -4
  411. package/dist/ionic/p-7d92bf15.system.entry.js +0 -4
  412. package/dist/ionic/p-7ee0f3f2.entry.js +0 -4
  413. package/dist/ionic/p-8314281e.system.js +0 -4
  414. package/dist/ionic/p-88d5fbd3.js +0 -4
  415. package/dist/ionic/p-8d69a624.entry.js +0 -4
  416. package/dist/ionic/p-8de17614.system.entry.js +0 -4
  417. package/dist/ionic/p-908475e7.system.entry.js +0 -4
  418. package/dist/ionic/p-91d33c4a.js +0 -4
  419. package/dist/ionic/p-979d4f5c.system.js +0 -4
  420. package/dist/ionic/p-9b7f0b0f.entry.js +0 -4
  421. package/dist/ionic/p-9e447eb1.system.js +0 -4
  422. package/dist/ionic/p-9f6ee2c0.system.entry.js +0 -4
  423. package/dist/ionic/p-a0d7bb5e.system.js +0 -4
  424. package/dist/ionic/p-a3277a67.entry.js +0 -4
  425. package/dist/ionic/p-afd6ca9d.entry.js +0 -4
  426. package/dist/ionic/p-b56d0866.system.entry.js +0 -4
  427. package/dist/ionic/p-c61cc894.js +0 -4
  428. package/dist/ionic/p-d032f825.system.entry.js +0 -4
  429. package/dist/ionic/p-d51674c5.system.js +0 -4
  430. package/dist/ionic/p-de6f8b28.system.js +0 -4
  431. package/dist/ionic/p-de756e5c.js +0 -4
  432. package/dist/ionic/p-dfd9432a.entry.js +0 -4
  433. package/dist/ionic/p-e94c392d.entry.js +0 -4
  434. package/dist/ionic/p-f0445d82.system.entry.js +0 -4
  435. package/dist/ionic/p-f656e032.system.entry.js +0 -4
  436. package/dist/ionic/p-feae5133.entry.js +0 -4
  437. package/dist/types/components/toast/gestures/swipe-to-dismiss.d.ts +0 -9
  438. package/dist/types/jest.d.ts +0 -5
  439. package/dist/types/utils/forms/compare-with-utils.d.ts +0 -18
  440. /package/dist/esm-es5/{index-a5d50daf.js → index-7a14ecec.js} +0 -0
  441. /package/dist/ionic/{p-792919fd.system.js → p-0e94957a.system.js} +0 -0
  442. /package/dist/ionic/{p-7b30edcc.js → p-b347cfd1.js} +0 -0
@@ -3,9 +3,10 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- const index = require('./index-c8d52405.js');
6
+ const index = require('./index-306a7476.js');
7
7
  const ionicGlobal = require('./ionic-global-f4a2093b.js');
8
8
  const frameworkDelegate = require('./framework-delegate-1c29b14a.js');
9
+ const gestureController = require('./gesture-controller-9436f482.js');
9
10
  const hardwareBackButton = require('./hardware-back-button-76833cac.js');
10
11
  const helpers = require('./helpers-76bb7efb.js');
11
12
  const index$1 = require('./index-5915f9b3.js');
@@ -391,6 +392,7 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
391
392
  return;
392
393
  }
393
394
  setRootAriaHidden(true);
395
+ document.body.classList.add(gestureController.BACKDROP_NO_SCROLL);
394
396
  overlay.presented = true;
395
397
  overlay.willPresent.emit();
396
398
  (_a = overlay.willPresentShorthand) === null || _a === void 0 ? void 0 : _a.emit();
@@ -453,12 +455,14 @@ const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnim
453
455
  if (!overlay.presented) {
454
456
  return false;
455
457
  }
458
+ const lastOverlay = index.doc !== undefined && getPresentedOverlays(index.doc).length === 1;
456
459
  /**
457
460
  * If this is the last visible overlay then
458
461
  * we want to re-add the root to the accessibility tree.
459
462
  */
460
- if (index.doc !== undefined && getPresentedOverlays(index.doc).length === 1) {
463
+ if (lastOverlay) {
461
464
  setRootAriaHidden(false);
465
+ document.body.classList.remove(gestureController.BACKDROP_NO_SCROLL);
462
466
  }
463
467
  overlay.presented = false;
464
468
  try {
@@ -564,7 +568,6 @@ const safeCall = (handler, arg) => {
564
568
  };
565
569
  const BACKDROP = 'backdrop';
566
570
  const GESTURE = 'gesture';
567
- const OVERLAY_GESTURE_PRIORITY = 39;
568
571
  /**
569
572
  * Creates a delegate controller.
570
573
  *
@@ -694,7 +697,6 @@ const createTriggerController = () => {
694
697
 
695
698
  exports.BACKDROP = BACKDROP;
696
699
  exports.GESTURE = GESTURE;
697
- exports.OVERLAY_GESTURE_PRIORITY = OVERLAY_GESTURE_PRIORITY;
698
700
  exports.actionSheetController = actionSheetController;
699
701
  exports.activeAnimations = activeAnimations;
700
702
  exports.alertController = alertController;
@@ -5,8 +5,8 @@
5
5
 
6
6
  const helpers = require('./helpers-76bb7efb.js');
7
7
  const dir = require('./dir-94c21456.js');
8
- const index = require('./index-d1b59ffa.js');
9
- require('./gesture-controller-c40c045a.js');
8
+ const index = require('./index-ee07ed59.js');
9
+ require('./gesture-controller-9436f482.js');
10
10
 
11
11
  const createSwipeBackGesture = (el, canStartHandler, onStartHandler, onMoveHandler, onEndHandler) => {
12
12
  const win = el.ownerDocument.defaultView;
@@ -2,25 +2,13 @@
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
4
  import { Host, h } from "@stencil/core";
5
- import { GESTURE_CONTROLLER } from "../../utils/gesture/index";
6
5
  import { getIonMode } from "../../global/ionic-global";
7
6
  export class Backdrop {
8
7
  constructor() {
9
- this.blocker = GESTURE_CONTROLLER.createBlocker({
10
- disableScroll: true,
11
- });
12
8
  this.visible = true;
13
9
  this.tappable = true;
14
10
  this.stopPropagation = true;
15
11
  }
16
- connectedCallback() {
17
- if (this.stopPropagation) {
18
- this.blocker.block();
19
- }
20
- }
21
- disconnectedCallback() {
22
- this.blocker.unblock();
23
- }
24
12
  onMouseDown(ev) {
25
13
  this.emitTap(ev);
26
14
  }
@@ -163,6 +163,12 @@
163
163
  }
164
164
 
165
165
  .label-text-wrapper {
166
+ /**
167
+ * This ensures that double tapping this text
168
+ * clicks the <label> and focuses the checkbox
169
+ * when a screen reader is enabled.
170
+ */
171
+ pointer-events: none;
166
172
  text-overflow: ellipsis;
167
173
  white-space: nowrap;
168
174
  overflow: hidden;
@@ -13,7 +13,6 @@ import { getIonMode } from "../../global/ionic-global";
13
13
  * @slot - The label text to associate with the checkbox. Use the "labelPlacement" property to control where the label is placed relative to the checkbox.
14
14
  *
15
15
  * @part container - The container for the checkbox mark.
16
- * @part label - The label text describing the checkbox.
17
16
  * @part mark - The checkmark used to indicate the checked state.
18
17
  */
19
18
  export class Checkbox {
@@ -81,8 +80,6 @@ export class Checkbox {
81
80
  emitStyle() {
82
81
  const style = {
83
82
  'interactive-disabled': this.disabled,
84
- // TODO(FW-3100): remove this
85
- legacy: !!this.legacy,
86
83
  };
87
84
  // TODO(FW-3100): remove this
88
85
  if (this.legacyFormController.hasLegacyControl()) {
@@ -118,7 +115,7 @@ export class Checkbox {
118
115
  }), onClick: this.onClick }, h("label", { class: "checkbox-wrapper" }, h("input", Object.assign({ type: "checkbox", checked: checked ? true : undefined, disabled: disabled, id: inputId, onChange: this.toggleChecked, onFocus: () => this.onFocus(), onBlur: () => this.onBlur(), ref: (focusEl) => (this.focusEl = focusEl) }, inheritedAttributes)), h("div", { class: {
119
116
  'label-text-wrapper': true,
120
117
  'label-text-wrapper-hidden': el.textContent === '',
121
- }, part: "label" }, h("slot", null)), h("div", { class: "native-wrapper" }, h("svg", { class: "checkbox-icon", viewBox: "0 0 24 24", part: "container" }, path)))));
118
+ } }, h("slot", null)), h("div", { class: "native-wrapper" }, h("svg", { class: "checkbox-icon", viewBox: "0 0 24 24", part: "container" }, path)))));
122
119
  }
123
120
  // TODO(FW-3100): remove this
124
121
  renderLegacyCheckbox() {
@@ -163,6 +163,12 @@
163
163
  }
164
164
 
165
165
  .label-text-wrapper {
166
+ /**
167
+ * This ensures that double tapping this text
168
+ * clicks the <label> and focuses the checkbox
169
+ * when a screen reader is enabled.
170
+ */
171
+ pointer-events: none;
166
172
  text-overflow: ellipsis;
167
173
  white-space: nowrap;
168
174
  overflow: hidden;
@@ -3,20 +3,6 @@
3
3
  */
4
4
  import { newSpecPage } from "@stencil/core/testing";
5
5
  import { Checkbox } from "../checkbox";
6
- describe('ion-checkbox: shadow parts', () => {
7
- it('should render the checkbox with shadow parts', async () => {
8
- const page = await newSpecPage({
9
- components: [Checkbox],
10
- html: `
11
- <ion-checkbox>Checkbox</ion-checkbox>
12
- `,
13
- });
14
- const checkbox = page.body.querySelector('ion-checkbox');
15
- expect(checkbox).toHaveShadowPart('container');
16
- expect(checkbox).toHaveShadowPart('label');
17
- expect(checkbox).toHaveShadowPart('mark');
18
- });
19
- });
20
6
  describe('ion-checkbox: disabled', () => {
21
7
  it('clicking disabled checkbox should not toggle checked state', async () => {
22
8
  const page = await newSpecPage({
@@ -97,10 +97,6 @@
97
97
  color: var(--ion-color-contrast);
98
98
  }
99
99
 
100
- :host(.outer-content) {
101
- --background: var(--ion-color-step-50, #f2f2f2);
102
- }
103
-
104
100
  #background-content {
105
101
  left: 0px;
106
102
  right: 0px;
@@ -94,7 +94,7 @@ ion-picker-column-internal {
94
94
  }
95
95
 
96
96
  /**
97
- * This ensures that the picker is apppropriately
97
+ * This ensures that the picker is appropriately
98
98
  * sized and never truncates the text.
99
99
  */
100
100
  :host(.datetime-size-fixed.datetime-prefer-wheel) {
@@ -317,24 +317,8 @@ ion-picker-column-internal {
317
317
  justify-content: space-between;
318
318
  }
319
319
 
320
- :host .calendar-action-buttons ion-item,
321
320
  :host .calendar-action-buttons ion-button {
322
- --background: translucent;
323
- }
324
-
325
- :host .calendar-action-buttons ion-item ion-label {
326
- display: flex;
327
- align-items: center;
328
- width: auto;
329
- }
330
-
331
- :host .calendar-action-buttons ion-item ion-icon {
332
- -webkit-padding-start: 4px;
333
- padding-inline-start: 4px;
334
- -webkit-padding-end: 0;
335
- padding-inline-end: 0;
336
- padding-top: 0;
337
- padding-bottom: 0;
321
+ --background: transparent;
338
322
  }
339
323
 
340
324
  :host .calendar-days-of-week {
@@ -516,8 +500,66 @@ ion-picker-column-internal {
516
500
  position: static;
517
501
  }
518
502
 
519
- :host(.show-month-and-year) .calendar-action-buttons ion-item {
520
- --color: var(--ion-color-base);
503
+ :host(.show-month-and-year) .calendar-action-buttons .calendar-month-year-toggle {
504
+ color: var(--ion-color-base);
505
+ }
506
+
507
+ .calendar-month-year {
508
+ min-width: 0;
509
+ }
510
+
511
+ .calendar-month-year-toggle {
512
+ font-family: inherit;
513
+ font-size: inherit;
514
+ font-style: inherit;
515
+ font-weight: inherit;
516
+ letter-spacing: inherit;
517
+ text-decoration: inherit;
518
+ text-indent: inherit;
519
+ text-overflow: inherit;
520
+ text-transform: inherit;
521
+ text-align: inherit;
522
+ white-space: inherit;
523
+ color: inherit;
524
+ position: relative;
525
+ border: 0;
526
+ outline: none;
527
+ background: transparent;
528
+ cursor: pointer;
529
+ z-index: 1;
530
+ }
531
+ .calendar-month-year-toggle::after {
532
+ left: 0;
533
+ right: 0;
534
+ top: 0;
535
+ bottom: 0;
536
+ position: absolute;
537
+ content: "";
538
+ opacity: 0;
539
+ transition: opacity 15ms linear, background-color 15ms linear;
540
+ z-index: -1;
541
+ }
542
+ .calendar-month-year-toggle.ion-focused::after {
543
+ background: currentColor;
544
+ }
545
+ .calendar-month-year-toggle:disabled {
546
+ opacity: 0.3;
547
+ pointer-events: none;
548
+ }
549
+
550
+ .calendar-month-year-toggle ion-icon {
551
+ -webkit-padding-start: 4px;
552
+ padding-inline-start: 4px;
553
+ -webkit-padding-end: 0;
554
+ padding-inline-end: 0;
555
+ padding-top: 0;
556
+ padding-bottom: 0;
557
+ flex-shrink: 0;
558
+ }
559
+
560
+ .calendar-month-year-toggle #toggle-wrapper {
561
+ display: inline-flex;
562
+ align-items: center;
521
563
  }
522
564
 
523
565
  /**
@@ -606,15 +648,31 @@ ion-picker-column-internal {
606
648
  margin-top: 10px;
607
649
  }
608
650
 
609
- :host .calendar-action-buttons ion-item {
610
- --padding-start: 16px;
611
- --background-hover: transparent;
612
- --background-activated: transparent;
651
+ .calendar-month-year-toggle {
652
+ -webkit-padding-start: 16px;
653
+ padding-inline-start: 16px;
654
+ -webkit-padding-end: 16px;
655
+ padding-inline-end: 16px;
656
+ padding-top: 0px;
657
+ padding-bottom: 0px;
658
+ min-height: 44px;
613
659
  font-size: min(1rem, 25.6px);
614
660
  font-weight: 600;
615
661
  }
662
+ .calendar-month-year-toggle.ion-focused::after {
663
+ opacity: 0.15;
664
+ }
665
+
666
+ .calendar-month-year-toggle #toggle-wrapper {
667
+ -webkit-margin-start: 0;
668
+ margin-inline-start: 0;
669
+ -webkit-margin-end: 8px;
670
+ margin-inline-end: 8px;
671
+ margin-top: 10px;
672
+ margin-bottom: 10px;
673
+ }
616
674
 
617
- :host .calendar-action-buttons ion-item ion-icon,
675
+ :host .calendar-action-buttons .calendar-month-year-toggle ion-icon,
618
676
  :host .calendar-action-buttons ion-buttons ion-button {
619
677
  color: var(--ion-color-base);
620
678
  }
@@ -1257,26 +1257,11 @@ export class Datetime {
1257
1257
  const nextMonthDisabled = disabled || isNextMonthDisabled(this.workingParts, this.maxParts);
1258
1258
  // don't use the inheritAttributes util because it removes dir from the host, and we still need that
1259
1259
  const hostDir = this.el.getAttribute('dir') || undefined;
1260
- return (h("div", { class: "calendar-header" }, h("div", { class: "calendar-action-buttons" }, h("div", { class: "calendar-month-year" }, h("ion-item", { part: "month-year-button", ref: (el) => (this.monthYearToggleItemRef = el), button: true, "aria-label": "Show year picker", detail: false, lines: "none", disabled: disabled, onClick: () => {
1261
- var _a;
1262
- this.toggleMonthAndYearView();
1263
- /**
1264
- * TODO: FW-3547
1265
- *
1266
- * Currently there is not a way to set the aria-label on the inner button
1267
- * on the `ion-item` and have it be reactive to changes. This is a workaround
1268
- * until we either refactor `ion-item` to a button or Stencil adds a way to
1269
- * have reactive props for built-in properties, such as `aria-label`.
1270
- */
1271
- const { monthYearToggleItemRef } = this;
1272
- if (monthYearToggleItemRef) {
1273
- const btn = (_a = monthYearToggleItemRef.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.item-native');
1274
- if (btn) {
1275
- const monthYearAriaLabel = this.showMonthAndYear ? 'Hide year picker' : 'Show year picker';
1276
- btn.setAttribute('aria-label', monthYearAriaLabel);
1277
- }
1278
- }
1279
- } }, h("ion-label", null, getMonthAndYear(this.locale, this.workingParts), h("ion-icon", { "aria-hidden": "true", icon: this.showMonthAndYear ? expandedIcon : collapsedIcon, lazy: false, flipRtl: true })))), h("div", { class: "calendar-next-prev" }, h("ion-buttons", null, h("ion-button", { "aria-label": "Previous month", disabled: prevMonthDisabled, onClick: () => this.prevMonth() }, h("ion-icon", { dir: hostDir, "aria-hidden": "true", slot: "icon-only", icon: chevronBack, lazy: false, flipRtl: true })), h("ion-button", { "aria-label": "Next month", disabled: nextMonthDisabled, onClick: () => this.nextMonth() }, h("ion-icon", { dir: hostDir, "aria-hidden": "true", slot: "icon-only", icon: chevronForward, lazy: false, flipRtl: true }))))), h("div", { class: "calendar-days-of-week", "aria-hidden": "true" }, getDaysOfWeek(this.locale, mode, this.firstDayOfWeek % 7).map((d) => {
1260
+ return (h("div", { class: "calendar-header" }, h("div", { class: "calendar-action-buttons" }, h("div", { class: "calendar-month-year" }, h("button", { class: {
1261
+ 'calendar-month-year-toggle': true,
1262
+ 'ion-activatable': true,
1263
+ 'ion-focusable': true,
1264
+ }, part: "month-year-button", disabled: disabled, "aria-label": this.showMonthAndYear ? 'Hide year picker' : 'Show year picker', onClick: () => this.toggleMonthAndYearView() }, h("span", { id: "toggle-wrapper" }, getMonthAndYear(this.locale, this.workingParts), h("ion-icon", { "aria-hidden": "true", icon: this.showMonthAndYear ? expandedIcon : collapsedIcon, lazy: false, flipRtl: true })), mode === 'md' && h("ion-ripple-effect", null))), h("div", { class: "calendar-next-prev" }, h("ion-buttons", null, h("ion-button", { "aria-label": "Previous month", disabled: prevMonthDisabled, onClick: () => this.prevMonth() }, h("ion-icon", { dir: hostDir, "aria-hidden": "true", slot: "icon-only", icon: chevronBack, lazy: false, flipRtl: true })), h("ion-button", { "aria-label": "Next month", disabled: nextMonthDisabled, onClick: () => this.nextMonth() }, h("ion-icon", { dir: hostDir, "aria-hidden": "true", slot: "icon-only", icon: chevronForward, lazy: false, flipRtl: true }))))), h("div", { class: "calendar-days-of-week", "aria-hidden": "true" }, getDaysOfWeek(this.locale, mode, this.firstDayOfWeek % 7).map((d) => {
1280
1265
  return h("div", { class: "day-of-week" }, d);
1281
1266
  }))));
1282
1267
  }
@@ -94,7 +94,7 @@ ion-picker-column-internal {
94
94
  }
95
95
 
96
96
  /**
97
- * This ensures that the picker is apppropriately
97
+ * This ensures that the picker is appropriately
98
98
  * sized and never truncates the text.
99
99
  */
100
100
  :host(.datetime-size-fixed.datetime-prefer-wheel) {
@@ -317,24 +317,8 @@ ion-picker-column-internal {
317
317
  justify-content: space-between;
318
318
  }
319
319
 
320
- :host .calendar-action-buttons ion-item,
321
320
  :host .calendar-action-buttons ion-button {
322
- --background: translucent;
323
- }
324
-
325
- :host .calendar-action-buttons ion-item ion-label {
326
- display: flex;
327
- align-items: center;
328
- width: auto;
329
- }
330
-
331
- :host .calendar-action-buttons ion-item ion-icon {
332
- -webkit-padding-start: 4px;
333
- padding-inline-start: 4px;
334
- -webkit-padding-end: 0;
335
- padding-inline-end: 0;
336
- padding-top: 0;
337
- padding-bottom: 0;
321
+ --background: transparent;
338
322
  }
339
323
 
340
324
  :host .calendar-days-of-week {
@@ -516,8 +500,66 @@ ion-picker-column-internal {
516
500
  position: static;
517
501
  }
518
502
 
519
- :host(.show-month-and-year) .calendar-action-buttons ion-item {
520
- --color: var(--ion-color-base);
503
+ :host(.show-month-and-year) .calendar-action-buttons .calendar-month-year-toggle {
504
+ color: var(--ion-color-base);
505
+ }
506
+
507
+ .calendar-month-year {
508
+ min-width: 0;
509
+ }
510
+
511
+ .calendar-month-year-toggle {
512
+ font-family: inherit;
513
+ font-size: inherit;
514
+ font-style: inherit;
515
+ font-weight: inherit;
516
+ letter-spacing: inherit;
517
+ text-decoration: inherit;
518
+ text-indent: inherit;
519
+ text-overflow: inherit;
520
+ text-transform: inherit;
521
+ text-align: inherit;
522
+ white-space: inherit;
523
+ color: inherit;
524
+ position: relative;
525
+ border: 0;
526
+ outline: none;
527
+ background: transparent;
528
+ cursor: pointer;
529
+ z-index: 1;
530
+ }
531
+ .calendar-month-year-toggle::after {
532
+ left: 0;
533
+ right: 0;
534
+ top: 0;
535
+ bottom: 0;
536
+ position: absolute;
537
+ content: "";
538
+ opacity: 0;
539
+ transition: opacity 15ms linear, background-color 15ms linear;
540
+ z-index: -1;
541
+ }
542
+ .calendar-month-year-toggle.ion-focused::after {
543
+ background: currentColor;
544
+ }
545
+ .calendar-month-year-toggle:disabled {
546
+ opacity: 0.3;
547
+ pointer-events: none;
548
+ }
549
+
550
+ .calendar-month-year-toggle ion-icon {
551
+ -webkit-padding-start: 4px;
552
+ padding-inline-start: 4px;
553
+ -webkit-padding-end: 0;
554
+ padding-inline-end: 0;
555
+ padding-top: 0;
556
+ padding-bottom: 0;
557
+ flex-shrink: 0;
558
+ }
559
+
560
+ .calendar-month-year-toggle #toggle-wrapper {
561
+ display: inline-flex;
562
+ align-items: center;
521
563
  }
522
564
 
523
565
  /**
@@ -601,15 +643,36 @@ ion-picker-column-internal {
601
643
  font-size: 2.125rem;
602
644
  }
603
645
 
604
- :host .datetime-calendar .calendar-action-buttons ion-item {
605
- --padding-start: 20px;
606
- }
607
-
608
- :host .calendar-action-buttons ion-item,
609
646
  :host .calendar-action-buttons ion-button {
610
647
  --color: var(--ion-color-step-650, #595959);
611
648
  }
612
649
 
650
+ .calendar-month-year-toggle {
651
+ -webkit-padding-start: 20px;
652
+ padding-inline-start: 20px;
653
+ -webkit-padding-end: 16px;
654
+ padding-inline-end: 16px;
655
+ padding-top: 12px;
656
+ padding-bottom: 12px;
657
+ min-height: 48px;
658
+ background: transparent;
659
+ color: var(--ion-color-step-650, #595959);
660
+ z-index: 1;
661
+ }
662
+ .calendar-month-year-toggle.ion-focused::after {
663
+ opacity: 0.04;
664
+ }
665
+
666
+ .calendar-month-year-toggle ion-ripple-effect {
667
+ color: currentColor;
668
+ }
669
+
670
+ @media (any-hover: hover) {
671
+ .calendar-month-year-toggle.ion-activatable:not(.ion-focused):hover::after {
672
+ background: currentColor;
673
+ opacity: 0.04;
674
+ }
675
+ }
613
676
  :host .calendar-days-of-week {
614
677
  -webkit-padding-start: 10px;
615
678
  padding-inline-start: 10px;
@@ -38,7 +38,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
38
38
  `, config);
39
39
  const tabKey = browserName === 'webkit' ? 'Alt+Tab' : 'Tab';
40
40
  const datetime = page.locator('ion-datetime');
41
- const monthYearButton = page.locator('.calendar-month-year ion-item');
41
+ const monthYearButton = page.locator('.calendar-month-year-toggle');
42
42
  const prevButton = page.locator('.calendar-next-prev ion-button:nth-child(1)');
43
43
  const nextButton = page.locator('.calendar-next-prev ion-button:nth-child(2)');
44
44
  await page.keyboard.press(tabKey);
@@ -2,7 +2,6 @@
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
4
  import { newSpecPage } from "@stencil/core/testing";
5
- import { Item } from "../../../item/item";
6
5
  import { Datetime } from "../../datetime";
7
6
  describe('datetime', () => {
8
7
  beforeEach(() => {
@@ -18,25 +17,23 @@ describe('datetime', () => {
18
17
  let page;
19
18
  beforeEach(async () => {
20
19
  page = await newSpecPage({
21
- components: [Datetime, Item],
20
+ components: [Datetime],
22
21
  html: `<ion-datetime></ion-datetime>`,
23
22
  });
24
23
  });
25
24
  it('should have aria-label "Show year picker" when collapsed', async () => {
26
25
  const datetime = page.body.querySelector('ion-datetime');
27
- const item = datetime.shadowRoot.querySelector('.calendar-month-year ion-item');
28
- const monthYearToggleBtn = item.shadowRoot.querySelector('button');
26
+ const monthYearToggleBtn = datetime.shadowRoot.querySelector('.calendar-month-year .calendar-month-year-toggle');
29
27
  const ariaLabel = monthYearToggleBtn.getAttribute('aria-label');
30
28
  expect(ariaLabel).toContain('Show year picker');
31
29
  });
32
30
  it('should have aria-label "Hide year picker" when expanded', async () => {
33
31
  const datetime = page.body.querySelector('ion-datetime');
34
- const item = datetime.shadowRoot.querySelector('.calendar-month-year ion-item');
35
- item.click();
32
+ const monthYearToggleBtn = datetime.shadowRoot.querySelector('.calendar-month-year .calendar-month-year-toggle');
33
+ monthYearToggleBtn.click();
36
34
  await page.waitForChanges();
37
- const itemAfter = datetime.shadowRoot.querySelector('.calendar-month-year ion-item');
38
- const monthYearToggleBtn = itemAfter.shadowRoot.querySelector('button');
39
- const ariaLabel = monthYearToggleBtn.getAttribute('aria-label');
35
+ const monthYearToggleBtnAfter = datetime.shadowRoot.querySelector('.calendar-month-year .calendar-month-year-toggle');
36
+ const ariaLabel = monthYearToggleBtnAfter.getAttribute('aria-label');
40
37
  expect(ariaLabel).toContain('Hide year picker');
41
38
  });
42
39
  });
@@ -372,4 +372,14 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
372
372
  await expect(datetime).toHaveScreenshot(screenshot(`datetime-focus-calendar-day`));
373
373
  });
374
374
  });
375
+ test.describe(title('datetime: calendar month toggle'), () => {
376
+ test('should have focus styles', async ({ page }) => {
377
+ await page.setContent('<ion-datetime value="2021-01-01"></ion-datetime>', config);
378
+ const datetime = page.locator('ion-datetime');
379
+ await page.waitForSelector('.datetime-ready');
380
+ const monthYearToggle = datetime.locator('.calendar-month-year-toggle');
381
+ monthYearToggle.evaluate((el) => el.classList.add('ion-focused'));
382
+ await expect(datetime).toHaveScreenshot(screenshot(`date-month-toggle-focused`));
383
+ });
384
+ });
375
385
  });
@@ -16,7 +16,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
16
16
  test('should hide the footer when picker is open', async ({ page }) => {
17
17
  const datetimeFooter = page.locator('#date-time .datetime-footer');
18
18
  await expect(datetimeFooter).toBeVisible();
19
- const pickerButton = page.locator('#date-time .calendar-month-year > ion-item');
19
+ const pickerButton = page.locator('#date-time .calendar-month-year > .calendar-month-year-toggle');
20
20
  await pickerButton.click();
21
21
  await page.waitForChanges();
22
22
  await expect(datetimeFooter).not.toBeVisible();
@@ -46,7 +46,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config, scree
46
46
  const tabKey = browserName === 'webkit' ? 'Alt+Tab' : 'Tab';
47
47
  await page.waitForSelector('.datetime-ready');
48
48
  const calendarMonthYear = page.locator('ion-datetime .calendar-month-year');
49
- const monthYearButton = page.locator('.calendar-month-year ion-item');
49
+ const monthYearButton = page.locator('.calendar-month-year-toggle');
50
50
  await expect(calendarMonthYear).toHaveText('February 2022');
51
51
  await page.keyboard.press(tabKey);
52
52
  await expect(monthYearButton).toBeFocused();
@@ -75,7 +75,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config, scree
75
75
  `, config);
76
76
  const tabKey = browserName === 'webkit' ? 'Alt+Tab' : 'Tab';
77
77
  const datetime = page.locator('ion-datetime');
78
- const monthYearButton = page.locator('.calendar-month-year ion-item');
78
+ const monthYearButton = page.locator('.calendar-month-year-toggle');
79
79
  const prevButton = page.locator('.calendar-next-prev ion-button:nth-child(1)');
80
80
  const nextButton = page.locator('.calendar-next-prev ion-button:nth-child(2)');
81
81
  const calendarMonthYear = page.locator('ion-datetime .calendar-month-year');
@@ -8,13 +8,6 @@ export class InfiniteScroll {
8
8
  constructor() {
9
9
  this.thrPx = 0;
10
10
  this.thrPc = 0;
11
- /**
12
- * didFire exists so that ionInfinite
13
- * does not fire multiple times if
14
- * users continue to scroll after
15
- * scrolling into the infinite
16
- * scroll threshold.
17
- */
18
11
  this.didFire = false;
19
12
  this.isBusy = false;
20
13
  this.onScroll = () => {
@@ -42,6 +35,9 @@ export class InfiniteScroll {
42
35
  return 3;
43
36
  }
44
37
  }
38
+ else {
39
+ this.didFire = false;
40
+ }
45
41
  return 4;
46
42
  };
47
43
  this.isLoading = false;
@@ -141,15 +137,11 @@ export class InfiniteScroll {
141
137
  writeTask(() => {
142
138
  scrollEl.scrollTop = newScrollTop;
143
139
  this.isBusy = false;
144
- this.didFire = false;
145
140
  });
146
141
  });
147
142
  });
148
143
  });
149
144
  }
150
- else {
151
- this.didFire = false;
152
- }
153
145
  }
154
146
  canStart() {
155
147
  return !this.disabled && !this.isBusy && !!this.scrollEl && !this.isLoading;
@@ -350,7 +350,6 @@
350
350
  display: flex;
351
351
  position: relative;
352
352
  flex-grow: 1;
353
- align-items: center;
354
353
  width: 100%;
355
354
  }
356
355
 
@@ -655,7 +654,9 @@
655
654
  /**
656
655
  * This makes the label sit above the input.
657
656
  */
658
- :host(.label-floating) .label-text-wrapper {
657
+ :host(.input-label-placement-stacked) .label-text-wrapper,
658
+ :host(.has-focus.input-label-placement-floating) .label-text-wrapper,
659
+ :host(.has-value.input-label-placement-floating) .label-text-wrapper {
659
660
  transform: translateY(50%) scale(0.75);
660
661
  /**
661
662
  * Label text should not extend
@@ -664,14 +665,6 @@
664
665
  max-width: calc(100% / 0.75);
665
666
  }
666
667
 
667
- ::slotted([slot=start]) {
668
- margin-inline-end: 16px;
669
- }
670
-
671
- ::slotted([slot=end]) {
672
- margin-inline-start: 16px;
673
- }
674
-
675
668
  /**
676
669
  * Convert a font size to a dynamic font size.
677
670
  * Fonts that participate in Dynamic Type should use