@ionic/core 7.3.4-dev.11694542086.1f624b36 → 7.3.4-dev.11694608913.1bc64f72

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 (408) hide show
  1. package/components/button-active.js +1 -1
  2. package/components/checkbox.js +6 -3
  3. package/components/data.js +31 -7
  4. package/components/index.js +2 -2
  5. package/components/index2.js +203 -429
  6. package/components/index3.js +429 -203
  7. package/components/input-shims.js +2 -76
  8. package/components/ion-datetime-button.js +3 -0
  9. package/components/ion-datetime.js +132 -92
  10. package/components/ion-item-sliding.js +1 -1
  11. package/components/ion-menu.js +1 -1
  12. package/components/ion-modal.js +2 -2
  13. package/components/ion-nav.js +1 -1
  14. package/components/ion-range.js +3 -3
  15. package/components/ion-refresher.js +3 -3
  16. package/components/ion-reorder-group.js +1 -1
  17. package/components/ion-router-outlet.js +1 -1
  18. package/components/ion-segment.js +1 -1
  19. package/components/ion-toggle.js +7 -4
  20. package/components/ios.transition.js +1 -1
  21. package/components/md.transition.js +1 -1
  22. package/components/picker-column.js +1 -1
  23. package/components/popover.js +1 -1
  24. package/components/radio.js +6 -3
  25. package/components/swipe-back.js +1 -1
  26. package/dist/cjs/{app-globals-a63c2a19.js → app-globals-a579aafd.js} +1 -1
  27. package/dist/cjs/{button-active-0ff8e82c.js → button-active-dfd2756e.js} +1 -1
  28. package/dist/cjs/{data-967b9c15.js → data-db832785.js} +31 -7
  29. package/dist/cjs/{index-184fdd62.js → index-484b1104.js} +6 -6
  30. package/dist/cjs/{index-e6416850.js → index-653be4df.js} +1 -1
  31. package/dist/cjs/{index-be8a2ab9.js → index-8568bedb.js} +3 -3
  32. package/dist/cjs/index.cjs.js +15 -14
  33. package/dist/cjs/{input-shims-d8e322aa.js → input-shims-f8569707.js} +2 -76
  34. package/dist/cjs/ion-accordion_2.cjs.entry.js +2 -2
  35. package/dist/cjs/ion-action-sheet.cjs.entry.js +4 -4
  36. package/dist/cjs/ion-alert.cjs.entry.js +4 -4
  37. package/dist/cjs/ion-app_8.cjs.entry.js +5 -5
  38. package/dist/cjs/ion-avatar_3.cjs.entry.js +2 -2
  39. package/dist/cjs/ion-back-button.cjs.entry.js +2 -2
  40. package/dist/cjs/ion-backdrop.cjs.entry.js +2 -2
  41. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +2 -2
  42. package/dist/cjs/ion-button_2.cjs.entry.js +2 -2
  43. package/dist/cjs/ion-card_5.cjs.entry.js +2 -2
  44. package/dist/cjs/ion-checkbox.cjs.entry.js +7 -5
  45. package/dist/cjs/ion-chip.cjs.entry.js +2 -2
  46. package/dist/cjs/ion-col_3.cjs.entry.js +2 -2
  47. package/dist/cjs/ion-datetime-button.cjs.entry.js +6 -3
  48. package/dist/cjs/ion-datetime_3.cjs.entry.js +135 -96
  49. package/dist/cjs/ion-fab_3.cjs.entry.js +2 -2
  50. package/dist/cjs/ion-img.cjs.entry.js +2 -2
  51. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +2 -2
  52. package/dist/cjs/ion-input.cjs.entry.js +2 -2
  53. package/dist/cjs/ion-item-option_3.cjs.entry.js +2 -2
  54. package/dist/cjs/ion-item_8.cjs.entry.js +2 -2
  55. package/dist/cjs/ion-loading.cjs.entry.js +3 -3
  56. package/dist/cjs/ion-menu_3.cjs.entry.js +4 -4
  57. package/dist/cjs/ion-modal.cjs.entry.js +4 -4
  58. package/dist/cjs/ion-nav_2.cjs.entry.js +3 -3
  59. package/dist/cjs/ion-picker-column-internal.cjs.entry.js +2 -2
  60. package/dist/cjs/ion-picker-internal.cjs.entry.js +1 -1
  61. package/dist/cjs/ion-popover.cjs.entry.js +4 -4
  62. package/dist/cjs/ion-progress-bar.cjs.entry.js +2 -2
  63. package/dist/cjs/ion-radio_2.cjs.entry.js +7 -5
  64. package/dist/cjs/ion-range.cjs.entry.js +4 -4
  65. package/dist/cjs/ion-refresher_2.cjs.entry.js +2 -2
  66. package/dist/cjs/ion-reorder_2.cjs.entry.js +2 -2
  67. package/dist/cjs/ion-ripple-effect.cjs.entry.js +2 -2
  68. package/dist/cjs/ion-route_4.cjs.entry.js +2 -2
  69. package/dist/cjs/ion-searchbar.cjs.entry.js +2 -2
  70. package/dist/cjs/ion-segment_2.cjs.entry.js +2 -2
  71. package/dist/cjs/ion-select_3.cjs.entry.js +3 -3
  72. package/dist/cjs/ion-spinner.cjs.entry.js +2 -2
  73. package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
  74. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +2 -2
  75. package/dist/cjs/ion-tab_2.cjs.entry.js +1 -1
  76. package/dist/cjs/ion-text.cjs.entry.js +2 -2
  77. package/dist/cjs/ion-textarea.cjs.entry.js +2 -2
  78. package/dist/cjs/ion-toast.cjs.entry.js +3 -3
  79. package/dist/cjs/ion-toggle.cjs.entry.js +7 -5
  80. package/dist/cjs/{ionic-global-6d5d27b5.js → ionic-global-f81d8b73.js} +1 -1
  81. package/dist/cjs/ionic.cjs.js +5 -5
  82. package/dist/cjs/{ios.transition-80582b44.js → ios.transition-f7c78d7c.js} +2 -2
  83. package/dist/cjs/loader.cjs.js +4 -4
  84. package/dist/cjs/{md.transition-eeca9fb5.js → md.transition-65dc7dce.js} +2 -2
  85. package/dist/cjs/{overlays-c78a0148.js → overlays-5c1706ed.js} +1 -1
  86. package/dist/cjs/{status-tap-cc4c6539.js → status-tap-4564b66c.js} +1 -1
  87. package/dist/collection/collection-manifest.json +1 -1
  88. package/dist/collection/components/checkbox/checkbox.ios.css +35 -0
  89. package/dist/collection/components/checkbox/checkbox.js +24 -4
  90. package/dist/collection/components/checkbox/checkbox.md.css +35 -0
  91. package/dist/collection/components/checkbox/test/item/checkbox.e2e.js +13 -0
  92. package/dist/collection/components/checkbox/test/label/checkbox.e2e.js +16 -0
  93. package/dist/collection/components/datetime/datetime.ios.css +32 -29
  94. package/dist/collection/components/datetime/datetime.js +137 -93
  95. package/dist/collection/components/datetime/datetime.md.css +20 -28
  96. package/dist/collection/components/datetime/test/basic/datetime.e2e.js +25 -0
  97. package/dist/collection/components/datetime/test/color/datetime.e2e.js +1 -1
  98. package/dist/collection/components/datetime/test/custom/datetime.e2e.js +27 -1
  99. package/dist/collection/components/datetime/test/prefer-wheel/datetime.e2e.js +15 -0
  100. package/dist/collection/components/datetime/test/set-value/datetime.e2e.js +9 -12
  101. package/dist/collection/components/datetime/utils/data.js +14 -6
  102. package/dist/collection/components/datetime/utils/parse.js +18 -1
  103. package/dist/collection/components/datetime-button/datetime-button.js +3 -0
  104. package/dist/collection/components/radio/radio.ios.css +35 -0
  105. package/dist/collection/components/radio/radio.js +24 -4
  106. package/dist/collection/components/radio/radio.md.css +35 -0
  107. package/dist/collection/components/radio/test/item/radio.e2e.js +15 -0
  108. package/dist/collection/components/radio/test/label-placement/radio.e2e.js +20 -0
  109. package/dist/collection/components/range/range.ios.css +41 -1
  110. package/dist/collection/components/range/range.js +3 -3
  111. package/dist/collection/components/range/range.md.css +41 -1
  112. package/dist/collection/components/range/test/label/range.e2e.js +48 -0
  113. package/dist/collection/components/toggle/test/item/toggle.e2e.js +15 -0
  114. package/dist/collection/components/toggle/test/label/toggle.e2e.js +16 -0
  115. package/dist/collection/components/toggle/toggle.ios.css +35 -1
  116. package/dist/collection/components/toggle/toggle.js +24 -4
  117. package/dist/collection/components/toggle/toggle.md.css +35 -1
  118. package/dist/collection/index.js +1 -0
  119. package/dist/collection/utils/input-shims/hacks/scroll-assist.js +2 -76
  120. package/dist/docs.json +148 -19
  121. package/dist/esm/{app-globals-c7886b40.js → app-globals-e8ddf830.js} +1 -1
  122. package/dist/esm/{button-active-b76ae4ec.js → button-active-2da0f611.js} +1 -1
  123. package/dist/esm/{data-4b448e3a.js → data-009dbf15.js} +31 -7
  124. package/dist/esm/{index-01839411.js → index-6391de89.js} +3 -3
  125. package/dist/esm/{index-adfb2000.js → index-847f2fde.js} +6 -6
  126. package/dist/esm/{index-48f5e259.js → index-b3e05099.js} +1 -1
  127. package/dist/esm/index.js +7 -7
  128. package/dist/esm/{input-shims-c738363e.js → input-shims-af993f05.js} +2 -76
  129. package/dist/esm/ion-accordion_2.entry.js +2 -2
  130. package/dist/esm/ion-action-sheet.entry.js +4 -4
  131. package/dist/esm/ion-alert.entry.js +4 -4
  132. package/dist/esm/ion-app_8.entry.js +5 -5
  133. package/dist/esm/ion-avatar_3.entry.js +2 -2
  134. package/dist/esm/ion-back-button.entry.js +2 -2
  135. package/dist/esm/ion-backdrop.entry.js +2 -2
  136. package/dist/esm/ion-breadcrumb_2.entry.js +2 -2
  137. package/dist/esm/ion-button_2.entry.js +2 -2
  138. package/dist/esm/ion-card_5.entry.js +2 -2
  139. package/dist/esm/ion-checkbox.entry.js +7 -5
  140. package/dist/esm/ion-chip.entry.js +2 -2
  141. package/dist/esm/ion-col_3.entry.js +2 -2
  142. package/dist/esm/ion-datetime-button.entry.js +6 -3
  143. package/dist/esm/ion-datetime_3.entry.js +135 -96
  144. package/dist/esm/ion-fab_3.entry.js +2 -2
  145. package/dist/esm/ion-img.entry.js +2 -2
  146. package/dist/esm/ion-infinite-scroll_2.entry.js +2 -2
  147. package/dist/esm/ion-input.entry.js +2 -2
  148. package/dist/esm/ion-item-option_3.entry.js +2 -2
  149. package/dist/esm/ion-item_8.entry.js +2 -2
  150. package/dist/esm/ion-loading.entry.js +3 -3
  151. package/dist/esm/ion-menu_3.entry.js +4 -4
  152. package/dist/esm/ion-modal.entry.js +4 -4
  153. package/dist/esm/ion-nav_2.entry.js +3 -3
  154. package/dist/esm/ion-picker-column-internal.entry.js +2 -2
  155. package/dist/esm/ion-picker-internal.entry.js +1 -1
  156. package/dist/esm/ion-popover.entry.js +4 -4
  157. package/dist/esm/ion-progress-bar.entry.js +2 -2
  158. package/dist/esm/ion-radio_2.entry.js +7 -5
  159. package/dist/esm/ion-range.entry.js +4 -4
  160. package/dist/esm/ion-refresher_2.entry.js +2 -2
  161. package/dist/esm/ion-reorder_2.entry.js +2 -2
  162. package/dist/esm/ion-ripple-effect.entry.js +2 -2
  163. package/dist/esm/ion-route_4.entry.js +2 -2
  164. package/dist/esm/ion-searchbar.entry.js +2 -2
  165. package/dist/esm/ion-segment_2.entry.js +2 -2
  166. package/dist/esm/ion-select_3.entry.js +3 -3
  167. package/dist/esm/ion-spinner.entry.js +2 -2
  168. package/dist/esm/ion-split-pane.entry.js +2 -2
  169. package/dist/esm/ion-tab-bar_2.entry.js +2 -2
  170. package/dist/esm/ion-tab_2.entry.js +1 -1
  171. package/dist/esm/ion-text.entry.js +2 -2
  172. package/dist/esm/ion-textarea.entry.js +2 -2
  173. package/dist/esm/ion-toast.entry.js +3 -3
  174. package/dist/esm/ion-toggle.entry.js +7 -5
  175. package/dist/esm/{ionic-global-9080266a.js → ionic-global-1ef19007.js} +1 -1
  176. package/dist/esm/ionic.js +6 -6
  177. package/dist/esm/{ios.transition-f43871cd.js → ios.transition-3137d23e.js} +2 -2
  178. package/dist/esm/loader.js +5 -5
  179. package/dist/esm/{md.transition-12d21ad0.js → md.transition-48b3b77c.js} +2 -2
  180. package/dist/esm/{overlays-4565894b.js → overlays-e1dadfe6.js} +1 -1
  181. package/dist/esm/{status-tap-121c711d.js → status-tap-823a0df3.js} +1 -1
  182. package/dist/esm-es5/app-globals-e8ddf830.js +4 -0
  183. package/dist/esm-es5/{button-active-b76ae4ec.js → button-active-2da0f611.js} +1 -1
  184. package/dist/esm-es5/data-009dbf15.js +4 -0
  185. package/dist/esm-es5/{index-01839411.js → index-6391de89.js} +1 -1
  186. package/dist/esm-es5/{index-48f5e259.js → index-b3e05099.js} +1 -1
  187. package/dist/esm-es5/index.js +1 -1
  188. package/dist/esm-es5/input-shims-af993f05.js +4 -0
  189. package/dist/esm-es5/ion-accordion_2.entry.js +1 -1
  190. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  191. package/dist/esm-es5/ion-alert.entry.js +1 -1
  192. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  193. package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
  194. package/dist/esm-es5/ion-back-button.entry.js +1 -1
  195. package/dist/esm-es5/ion-backdrop.entry.js +1 -1
  196. package/dist/esm-es5/ion-breadcrumb_2.entry.js +1 -1
  197. package/dist/esm-es5/ion-button_2.entry.js +1 -1
  198. package/dist/esm-es5/ion-card_5.entry.js +1 -1
  199. package/dist/esm-es5/ion-checkbox.entry.js +1 -1
  200. package/dist/esm-es5/ion-chip.entry.js +1 -1
  201. package/dist/esm-es5/ion-col_3.entry.js +1 -1
  202. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  203. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  204. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  205. package/dist/esm-es5/ion-img.entry.js +1 -1
  206. package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
  207. package/dist/esm-es5/ion-input.entry.js +1 -1
  208. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  209. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  210. package/dist/esm-es5/ion-loading.entry.js +1 -1
  211. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  212. package/dist/esm-es5/ion-modal.entry.js +1 -1
  213. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  214. package/dist/esm-es5/ion-picker-column-internal.entry.js +1 -1
  215. package/dist/esm-es5/ion-picker-internal.entry.js +1 -1
  216. package/dist/esm-es5/ion-popover.entry.js +1 -1
  217. package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
  218. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  219. package/dist/esm-es5/ion-range.entry.js +1 -1
  220. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  221. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  222. package/dist/esm-es5/ion-ripple-effect.entry.js +1 -1
  223. package/dist/esm-es5/ion-route_4.entry.js +1 -1
  224. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  225. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  226. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  227. package/dist/esm-es5/ion-spinner.entry.js +1 -1
  228. package/dist/esm-es5/ion-split-pane.entry.js +1 -1
  229. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  230. package/dist/esm-es5/ion-tab_2.entry.js +1 -1
  231. package/dist/esm-es5/ion-text.entry.js +1 -1
  232. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  233. package/dist/esm-es5/ion-toast.entry.js +1 -1
  234. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  235. package/dist/esm-es5/{ionic-global-9080266a.js → ionic-global-1ef19007.js} +1 -1
  236. package/dist/esm-es5/ionic.js +1 -1
  237. package/dist/esm-es5/{ios.transition-f43871cd.js → ios.transition-3137d23e.js} +1 -1
  238. package/dist/esm-es5/loader.js +1 -1
  239. package/dist/esm-es5/md.transition-48b3b77c.js +4 -0
  240. package/dist/esm-es5/{overlays-4565894b.js → overlays-e1dadfe6.js} +1 -1
  241. package/dist/esm-es5/{status-tap-121c711d.js → status-tap-823a0df3.js} +1 -1
  242. package/dist/html.html-data.json +52 -4
  243. package/dist/ionic/index.esm.js +1 -1
  244. package/dist/ionic/ionic.esm.js +1 -1
  245. package/dist/ionic/ionic.js +1 -1
  246. package/dist/ionic/{p-9b53c813.entry.js → p-0142ba6d.entry.js} +1 -1
  247. package/dist/ionic/{p-516421e2.system.entry.js → p-0219ac12.system.entry.js} +1 -1
  248. package/dist/ionic/{p-c2d6088f.entry.js → p-0660215f.entry.js} +1 -1
  249. package/dist/ionic/p-06902103.system.js +4 -0
  250. package/dist/ionic/{p-4446e19f.system.entry.js → p-06d6e9c0.system.entry.js} +1 -1
  251. package/dist/ionic/{p-74834696.system.entry.js → p-0b68c41d.system.entry.js} +1 -1
  252. package/dist/ionic/{p-e239ab05.system.entry.js → p-0cc2bf5a.system.entry.js} +1 -1
  253. package/dist/ionic/{p-5df94bf8.entry.js → p-0ff17c93.entry.js} +1 -1
  254. package/dist/ionic/{p-d57e8b06.js → p-11248f01.js} +1 -1
  255. package/dist/ionic/{p-5080e623.system.entry.js → p-11a42c03.system.entry.js} +1 -1
  256. package/dist/ionic/{p-a8270ae8.system.entry.js → p-1d82df31.system.entry.js} +1 -1
  257. package/dist/ionic/{p-48d378cf.entry.js → p-1ec4dc01.entry.js} +1 -1
  258. package/dist/ionic/p-1f4adf06.system.entry.js +4 -0
  259. package/dist/ionic/{p-4d2807fa.entry.js → p-1fb9aab8.entry.js} +1 -1
  260. package/dist/ionic/{p-9f3ad626.system.entry.js → p-2061c86f.system.entry.js} +1 -1
  261. package/dist/ionic/{p-28d8b87b.entry.js → p-208f640c.entry.js} +1 -1
  262. package/dist/ionic/p-218b6f33.entry.js +4 -0
  263. package/dist/ionic/{p-d8d30fd1.system.entry.js → p-2539e967.system.entry.js} +1 -1
  264. package/dist/ionic/p-273e78ae.entry.js +4 -0
  265. package/dist/ionic/p-2da6ba37.system.entry.js +4 -0
  266. package/dist/ionic/{p-4e1a58c6.system.entry.js → p-32d11ce2.system.entry.js} +1 -1
  267. package/dist/ionic/{p-c8c0d58a.system.entry.js → p-336420f9.system.entry.js} +1 -1
  268. package/dist/ionic/{p-be187db3.entry.js → p-341d5877.entry.js} +1 -1
  269. package/dist/ionic/{p-11d0977d.entry.js → p-38dd9aec.entry.js} +1 -1
  270. package/dist/ionic/{p-fde174d6.system.entry.js → p-3ef88fc2.system.entry.js} +1 -1
  271. package/dist/ionic/p-40138199.entry.js +4 -0
  272. package/dist/ionic/{p-765e6339.entry.js → p-430e902d.entry.js} +1 -1
  273. package/dist/ionic/p-44ef7224.system.js +4 -0
  274. package/dist/ionic/p-4531b920.system.js +4 -0
  275. package/dist/ionic/{p-8db97b90.entry.js → p-48144921.entry.js} +1 -1
  276. package/dist/ionic/{p-0ce43a8f.system.entry.js → p-4a153fbc.system.entry.js} +1 -1
  277. package/dist/ionic/p-4ca1ce6b.system.entry.js +4 -0
  278. package/dist/ionic/p-51b165af.system.js +4 -0
  279. package/dist/ionic/{p-98bfaff3.system.entry.js → p-57dc87eb.system.entry.js} +1 -1
  280. package/dist/ionic/{p-83459b99.entry.js → p-57f0efcc.entry.js} +1 -1
  281. package/dist/ionic/p-582dc7c1.js +4 -0
  282. package/dist/ionic/{p-ee55302a.system.entry.js → p-5ba27716.system.entry.js} +1 -1
  283. package/dist/ionic/{p-68deb933.entry.js → p-5c17f888.entry.js} +1 -1
  284. package/dist/ionic/{p-a037b6d5.system.entry.js → p-62324608.system.entry.js} +1 -1
  285. package/dist/ionic/{p-f62bed60.entry.js → p-639d7b25.entry.js} +1 -1
  286. package/dist/ionic/p-64ad5765.entry.js +4 -0
  287. package/dist/ionic/{p-9eced28c.entry.js → p-653f2fc6.entry.js} +1 -1
  288. package/dist/ionic/{p-b9179eab.entry.js → p-67b891af.entry.js} +1 -1
  289. package/dist/ionic/{p-8bcd482b.entry.js → p-68e0ea3c.entry.js} +1 -1
  290. package/dist/ionic/{p-2e5930dd.system.js → p-69303bb5.system.js} +1 -1
  291. package/dist/ionic/{p-42e0558f.entry.js → p-6b3afb0f.entry.js} +1 -1
  292. package/dist/ionic/{p-ec344ed1.system.entry.js → p-6bf632d0.system.entry.js} +1 -1
  293. package/dist/ionic/{p-cd002251.entry.js → p-728ac2b3.entry.js} +1 -1
  294. package/dist/ionic/p-778460f7.js +4 -0
  295. package/dist/ionic/{p-3f15f60b.entry.js → p-77f91ca9.entry.js} +1 -1
  296. package/dist/ionic/{p-b052b578.entry.js → p-785b0913.entry.js} +1 -1
  297. package/dist/ionic/{p-ff3d728d.system.js → p-7b16490a.system.js} +1 -1
  298. package/dist/ionic/{p-629b0629.js → p-7c938ad6.js} +1 -1
  299. package/dist/ionic/p-7cfd253c.js +4 -0
  300. package/dist/ionic/{p-5e549223.system.js → p-81597423.system.js} +1 -1
  301. package/dist/ionic/{p-3d5a6d14.system.js → p-82632e15.system.js} +1 -1
  302. package/dist/ionic/{p-23ddd787.system.entry.js → p-82f5c07e.system.entry.js} +1 -1
  303. package/dist/ionic/{p-b453b38d.entry.js → p-82f8ee51.entry.js} +1 -1
  304. package/dist/ionic/{p-a314559e.system.js → p-83008f7c.system.js} +2 -2
  305. package/dist/ionic/{p-7474a472.system.entry.js → p-839bd69f.system.entry.js} +1 -1
  306. package/dist/ionic/{p-9be96bf3.system.entry.js → p-83bcaec9.system.entry.js} +1 -1
  307. package/dist/ionic/p-86c5c320.entry.js +4 -0
  308. package/dist/ionic/{p-95188051.system.entry.js → p-87383d00.system.entry.js} +1 -1
  309. package/dist/ionic/{p-57847936.entry.js → p-8a676776.entry.js} +1 -1
  310. package/dist/ionic/{p-5fc777e6.system.js → p-8ba724fa.system.js} +1 -1
  311. package/dist/ionic/p-90ec5785.system.entry.js +4 -0
  312. package/dist/ionic/{p-b3f6f321.js → p-91459620.js} +1 -1
  313. package/dist/ionic/{p-49f2eaa6.entry.js → p-93e47822.entry.js} +1 -1
  314. package/dist/ionic/{p-fa8fc77b.system.entry.js → p-96c2a273.system.entry.js} +1 -1
  315. package/dist/ionic/{p-6dff4431.entry.js → p-98a189f3.entry.js} +1 -1
  316. package/dist/ionic/{p-0dbfa45f.entry.js → p-98ebc376.entry.js} +1 -1
  317. package/dist/ionic/{p-07656a8a.entry.js → p-99028088.entry.js} +1 -1
  318. package/dist/ionic/{p-84084b75.entry.js → p-99140340.entry.js} +1 -1
  319. package/dist/ionic/{p-47a11fc4.entry.js → p-9c32000a.entry.js} +1 -1
  320. package/dist/ionic/p-a2b25750.js +4 -0
  321. package/dist/ionic/{p-c2b524f3.system.entry.js → p-a34669bf.system.entry.js} +1 -1
  322. package/dist/ionic/{p-bacf09d3.entry.js → p-a3f9d271.entry.js} +1 -1
  323. package/dist/ionic/p-a62c0ff4.js +4 -0
  324. package/dist/ionic/{p-5a9dc764.system.entry.js → p-af0bc751.system.entry.js} +1 -1
  325. package/dist/ionic/p-af986299.system.entry.js +4 -0
  326. package/dist/ionic/{p-6ccffb74.system.entry.js → p-b0e9e0b8.system.entry.js} +1 -1
  327. package/dist/ionic/{p-563068af.js → p-b22ee0dc.js} +1 -1
  328. package/dist/ionic/{p-204fb8f0.system.entry.js → p-b2514862.system.entry.js} +1 -1
  329. package/dist/ionic/p-b321c999.entry.js +4 -0
  330. package/dist/ionic/{p-bfee11b2.system.js → p-b32742f3.system.js} +1 -1
  331. package/dist/ionic/{p-3bf120f8.system.entry.js → p-b9654781.system.entry.js} +1 -1
  332. package/dist/ionic/{p-1c236453.system.entry.js → p-bbae0ac3.system.entry.js} +1 -1
  333. package/dist/ionic/{p-32983529.system.entry.js → p-bf4b8d8a.system.entry.js} +1 -1
  334. package/dist/ionic/{p-5163baf4.system.entry.js → p-c4afbed8.system.entry.js} +1 -1
  335. package/dist/ionic/p-c53dd7a2.entry.js +4 -0
  336. package/dist/ionic/{p-a033a91d.system.entry.js → p-d1bab5e7.system.entry.js} +1 -1
  337. package/dist/ionic/{p-5260588f.system.entry.js → p-d1d3b740.system.entry.js} +1 -1
  338. package/dist/ionic/{p-59b40b60.entry.js → p-d3378c35.entry.js} +1 -1
  339. package/dist/ionic/{p-eb91aee6.entry.js → p-d5e3bff3.entry.js} +1 -1
  340. package/dist/ionic/{p-dc4c9086.system.entry.js → p-d693e765.system.entry.js} +1 -1
  341. package/dist/ionic/p-d898dd46.js +4 -0
  342. package/dist/ionic/p-d8a0267b.system.entry.js +4 -0
  343. package/dist/ionic/{p-ef8a8827.system.entry.js → p-dbb48066.system.entry.js} +1 -1
  344. package/dist/ionic/{p-574411f2.system.entry.js → p-dc49c681.system.entry.js} +1 -1
  345. package/dist/ionic/{p-a122ecd0.system.js → p-df6743df.system.js} +1 -1
  346. package/dist/ionic/{p-6276ba2f.system.entry.js → p-e112994b.system.entry.js} +1 -1
  347. package/dist/ionic/{p-3c325277.js → p-e3cba96d.js} +1 -1
  348. package/dist/ionic/p-e3d5608d.system.js +4 -0
  349. package/dist/ionic/{p-2ac2278e.system.entry.js → p-e805ff9f.system.entry.js} +1 -1
  350. package/dist/ionic/{p-07f5e286.entry.js → p-e9c112ba.entry.js} +1 -1
  351. package/dist/ionic/{p-ec7ff98b.entry.js → p-ed7b205b.entry.js} +1 -1
  352. package/dist/ionic/{p-26276eb7.system.entry.js → p-f5b7b710.system.entry.js} +1 -1
  353. package/dist/ionic/p-f5c19164.entry.js +4 -0
  354. package/dist/ionic/{p-9e8727d6.entry.js → p-f7faa32d.entry.js} +1 -1
  355. package/dist/ionic/{p-7b14f1a9.entry.js → p-f9567c67.entry.js} +1 -1
  356. package/dist/ionic/{p-810f1bc9.system.entry.js → p-f95f798a.system.entry.js} +1 -1
  357. package/dist/ionic/{p-6eb7b33c.system.entry.js → p-fa3327e8.system.entry.js} +1 -1
  358. package/dist/ionic/{p-072f99fd.entry.js → p-fabb7294.entry.js} +1 -1
  359. package/dist/ionic/{p-041ac2c3.entry.js → p-fac1660b.entry.js} +1 -1
  360. package/dist/ionic/{p-1916030e.entry.js → p-fe83e3e2.entry.js} +1 -1
  361. package/dist/ionic/{p-b703ebeb.system.entry.js → p-fea46870.system.entry.js} +1 -1
  362. package/dist/types/components/checkbox/checkbox.d.ts +8 -1
  363. package/dist/types/components/datetime/datetime.d.ts +23 -10
  364. package/dist/types/components/datetime/utils/data.d.ts +1 -1
  365. package/dist/types/components/datetime/utils/parse.d.ts +3 -3
  366. package/dist/types/components/radio/radio.d.ts +8 -1
  367. package/dist/types/components/range/range.d.ts +2 -1
  368. package/dist/types/components/toast/toast-interface.d.ts +3 -0
  369. package/dist/types/components/toggle/toggle.d.ts +8 -1
  370. package/dist/types/components.d.ts +40 -16
  371. package/dist/types/index.d.ts +1 -0
  372. package/dist/types/interface.d.ts +1 -0
  373. package/dist/types/stencil-public-runtime.d.ts +3 -3
  374. package/hydrate/index.d.ts +5 -5
  375. package/hydrate/index.js +234 -150
  376. package/package.json +3 -3
  377. package/dist/esm-es5/app-globals-c7886b40.js +0 -4
  378. package/dist/esm-es5/data-4b448e3a.js +0 -4
  379. package/dist/esm-es5/input-shims-c738363e.js +0 -4
  380. package/dist/esm-es5/md.transition-12d21ad0.js +0 -4
  381. package/dist/ionic/p-17e961cf.entry.js +0 -4
  382. package/dist/ionic/p-1b533a76.system.entry.js +0 -4
  383. package/dist/ionic/p-2b0ecc04.entry.js +0 -4
  384. package/dist/ionic/p-44a6f15d.system.entry.js +0 -4
  385. package/dist/ionic/p-4f7109fa.entry.js +0 -4
  386. package/dist/ionic/p-56495958.js +0 -4
  387. package/dist/ionic/p-601fd53c.js +0 -4
  388. package/dist/ionic/p-7106c152.system.js +0 -4
  389. package/dist/ionic/p-75d4ceab.js +0 -4
  390. package/dist/ionic/p-8f7edf3e.js +0 -4
  391. package/dist/ionic/p-99a3df5c.entry.js +0 -4
  392. package/dist/ionic/p-9eaaa910.entry.js +0 -4
  393. package/dist/ionic/p-a533868d.system.js +0 -4
  394. package/dist/ionic/p-af6125d1.system.entry.js +0 -4
  395. package/dist/ionic/p-b8d7f0eb.system.entry.js +0 -4
  396. package/dist/ionic/p-c254bde2.js +0 -4
  397. package/dist/ionic/p-c68a8814.system.js +0 -4
  398. package/dist/ionic/p-c7ce7e18.entry.js +0 -4
  399. package/dist/ionic/p-cc8910e7.system.js +0 -4
  400. package/dist/ionic/p-dacb0258.js +0 -4
  401. package/dist/ionic/p-dc7d392d.entry.js +0 -4
  402. package/dist/ionic/p-e65aed58.system.entry.js +0 -4
  403. package/dist/ionic/p-f3ec1f2b.entry.js +0 -4
  404. package/dist/ionic/p-f58cbf92.system.js +0 -4
  405. package/dist/ionic/p-fb26fa56.system.entry.js +0 -4
  406. /package/dist/esm-es5/{index-adfb2000.js → index-847f2fde.js} +0 -0
  407. /package/dist/ionic/{p-a18eb556.js → p-156967ec.js} +0 -0
  408. /package/dist/ionic/{p-2441ba84.system.js → p-5b553dc0.system.js} +0 -0
@@ -253,68 +253,6 @@ const enableScrollAssist = (componentEl, inputEl, contentEl, footerEl, keyboardH
253
253
  * Resize info is available on Capacitor 4+
254
254
  */
255
255
  const addScrollPadding = enableScrollPadding && (keyboardResize === undefined || keyboardResize.mode === KeyboardResize.None);
256
- /**
257
- * This tracks whether or not the keyboard has been
258
- * presented for a single focused text field. Note
259
- * that it does not track if the keyboard is open
260
- * in general such as if the keyboard is open for
261
- * a different focused text field.
262
- */
263
- let hasKeyboardBeenPresentedForTextField = false;
264
- /**
265
- * Scroll assist is run when a text field
266
- * is focused. However, it may need to
267
- * re-run when the keyboard size changes
268
- * such that the text field is now hidden
269
- * underneath the keyboard.
270
- * This function re-runs scroll assist
271
- * when that happens.
272
- *
273
- * One limitation of this is on a web browser
274
- * where native keyboard APIs do not have cross-browser
275
- * support. `ionKeyboardDidShow` relies on the Visual Viewport API.
276
- * This means that if the keyboard changes but does not change
277
- * geometry, then scroll assist will not re-run even if
278
- * the user has scrolled the text field under the keyboard.
279
- * This should not be a problem when running in Cordova/Capacitor
280
- * because `ionKeyboardDidShow` uses the native events
281
- * which fire every time the keyboard changes.
282
- */
283
- const keyboardShow = (ev) => {
284
- /**
285
- * If the keyboard has not yet been presented
286
- * for this text field then the text field has just
287
- * received focus. In that case, the focusin listener
288
- * will run scroll assist.
289
- */
290
- if (hasKeyboardBeenPresentedForTextField === false) {
291
- hasKeyboardBeenPresentedForTextField = true;
292
- return;
293
- }
294
- /**
295
- * Otherwise, the keyboard has already been presented
296
- * for the focused text field.
297
- * This means that the keyboard likely changed
298
- * geometry, and we need to re-run scroll assist.
299
- * This can happen when the user rotates their device
300
- * or when they switch keyboards.
301
- *
302
- * Make sure we pass in the computed keyboard height
303
- * rather than the estimated keyboard height.
304
- *
305
- * Since the keyboard is already open then we do not
306
- * need to wait for the webview to resize, so we pass
307
- * "waitForResize: false".
308
- */
309
- jsSetFocus(componentEl, inputEl, contentEl, footerEl, ev.detail.keyboardHeight, addScrollPadding, disableClonedInput, false);
310
- };
311
- /**
312
- * Reset the internal state when the text field loses focus.
313
- */
314
- const focusOut = () => {
315
- hasKeyboardBeenPresentedForTextField = false;
316
- window.removeEventListener('ionKeyboardDidShow', keyboardShow);
317
- };
318
256
  /**
319
257
  * When the input is about to receive
320
258
  * focus, we need to move it to prevent
@@ -332,22 +270,10 @@ const enableScrollAssist = (componentEl, inputEl, contentEl, footerEl, keyboardH
332
270
  return;
333
271
  }
334
272
  jsSetFocus(componentEl, inputEl, contentEl, footerEl, keyboardHeight, addScrollPadding, disableClonedInput);
335
- /**
336
- * Listen for any changes to the keyboard
337
- * dimensions in case we need to re-run scroll assist.
338
- */
339
- window.addEventListener('ionKeyboardDidShow', keyboardShow);
340
- componentEl.addEventListener('focusout', focusOut, true);
341
273
  };
342
274
  componentEl.addEventListener('focusin', focusIn, true);
343
- /**
344
- * Scroll assist is being destroyed for this
345
- * text field instance, so remove any remaining listeners.
346
- */
347
275
  return () => {
348
276
  componentEl.removeEventListener('focusin', focusIn, true);
349
- window.removeEventListener('ionKeyboardDidShow', keyboardShow);
350
- componentEl.removeEventListener('focusout', focusOut, true);
351
277
  };
352
278
  };
353
279
  /**
@@ -366,7 +292,7 @@ const setManualFocus = (el) => {
366
292
  el.setAttribute(SKIP_SCROLL_ASSIST, 'true');
367
293
  el.focus();
368
294
  };
369
- const jsSetFocus = async (componentEl, inputEl, contentEl, footerEl, keyboardHeight, enableScrollPadding, disableClonedInput = false, waitForResize = true) => {
295
+ const jsSetFocus = async (componentEl, inputEl, contentEl, footerEl, keyboardHeight, enableScrollPadding, disableClonedInput = false) => {
370
296
  if (!contentEl && !footerEl) {
371
297
  return;
372
298
  }
@@ -457,7 +383,7 @@ const jsSetFocus = async (componentEl, inputEl, contentEl, footerEl, keyboardHei
457
383
  * bandwidth to become available.
458
384
  */
459
385
  const totalScrollAmount = scrollEl.scrollHeight - scrollEl.clientHeight;
460
- if (waitForResize && scrollData.scrollAmount > totalScrollAmount - scrollEl.scrollTop) {
386
+ if (scrollData.scrollAmount > totalScrollAmount - scrollEl.scrollTop) {
461
387
  /**
462
388
  * On iOS devices, the system will show a "Passwords" bar above the keyboard
463
389
  * after the initial keyboard is shown. This prevents the webview from resizing
@@ -52,6 +52,9 @@ const DatetimeButton = /*@__PURE__*/ proxyCustomElement(class DatetimeButton ext
52
52
  * to today's date and time if no value is set.
53
53
  */
54
54
  const parsedDatetimes = parseDate(parsedValues.length > 0 ? parsedValues : [getToday()]);
55
+ if (!parsedDatetimes) {
56
+ return;
57
+ }
55
58
  /**
56
59
  * If developers incorrectly use multiple="true"
57
60
  * with non "date" datetimes, then just select
@@ -189,9 +189,9 @@ const getHighlightStyles = (highlightedDates, dateIsoString, el) => {
189
189
  return undefined;
190
190
  };
191
191
 
192
- const datetimeIosCss = ":host{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;background:var(--background);overflow:hidden}ion-picker-column-internal{min-width:26px}:host(.datetime-size-fixed){width:auto;height:auto}:host(.datetime-size-fixed:not(.datetime-prefer-wheel)){max-width:350px}:host(.datetime-size-fixed.datetime-prefer-wheel){min-width:350px;max-width:-webkit-max-content;max-width:-moz-max-content;max-width:max-content}:host(.datetime-size-cover){width:100%}:host .calendar-body,:host .datetime-year{opacity:0}:host(:not(.datetime-ready)) .datetime-year{position:absolute;pointer-events:none}:host(.datetime-ready) .calendar-body{opacity:1}:host(.datetime-ready) .datetime-year{display:none;opacity:1}:host .wheel-order-year-first .day-column{-ms-flex-order:3;order:3;text-align:end}:host .wheel-order-year-first .month-column{-ms-flex-order:2;order:2;text-align:end}:host .wheel-order-year-first .year-column{-ms-flex-order:1;order:1;text-align:start}:host .datetime-calendar,:host .datetime-year{display:-ms-flexbox;display:flex;-ms-flex:1 1 auto;flex:1 1 auto;-ms-flex-flow:column;flex-flow:column}:host(.show-month-and-year) .datetime-year{display:-ms-flexbox;display:flex}@supports (background: -webkit-named-image(apple-pay-logo-black)) and (not (aspect-ratio: 1/1)){:host(.show-month-and-year) .calendar-next-prev,:host(.show-month-and-year) .calendar-days-of-week,:host(.show-month-and-year) .calendar-body,:host(.show-month-and-year) .datetime-time{position:absolute;visibility:hidden;pointer-events:none}@supports (inset-inline-start: 0){:host(.show-month-and-year) .calendar-next-prev,:host(.show-month-and-year) .calendar-days-of-week,:host(.show-month-and-year) .calendar-body,:host(.show-month-and-year) .datetime-time{inset-inline-start:-99999px}}@supports not (inset-inline-start: 0){:host(.show-month-and-year) .calendar-next-prev,:host(.show-month-and-year) .calendar-days-of-week,:host(.show-month-and-year) .calendar-body,:host(.show-month-and-year) .datetime-time{left:-99999px}:host-context([dir=rtl]):host(.show-month-and-year) .calendar-next-prev,:host-context([dir=rtl]).show-month-and-year .calendar-next-prev,:host-context([dir=rtl]):host(.show-month-and-year) .calendar-days-of-week,:host-context([dir=rtl]).show-month-and-year .calendar-days-of-week,:host-context([dir=rtl]):host(.show-month-and-year) .calendar-body,:host-context([dir=rtl]).show-month-and-year .calendar-body,:host-context([dir=rtl]):host(.show-month-and-year) .datetime-time,:host-context([dir=rtl]).show-month-and-year .datetime-time{left:unset;right:unset;right:-99999px}@supports selector(:dir(rtl)){:host(.show-month-and-year) .calendar-next-prev:dir(rtl),:host(.show-month-and-year) .calendar-days-of-week:dir(rtl),:host(.show-month-and-year) .calendar-body:dir(rtl),:host(.show-month-and-year) .datetime-time:dir(rtl){left:unset;right:unset;right:-99999px}}}}@supports (not (background: -webkit-named-image(apple-pay-logo-black))) or ((background: -webkit-named-image(apple-pay-logo-black)) and (aspect-ratio: 1/1)){:host(.show-month-and-year) .calendar-next-prev,:host(.show-month-and-year) .calendar-days-of-week,:host(.show-month-and-year) .calendar-body,:host(.show-month-and-year) .datetime-time{display:none}}:host(.month-year-picker-open) .datetime-footer{display:none}:host(.datetime-readonly),:host(.datetime-disabled){pointer-events:none}:host(.datetime-disabled){opacity:0.4}:host .datetime-header .datetime-title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}:host .datetime-action-buttons.has-clear-button{width:100%}:host .datetime-action-buttons ion-buttons{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}:host .calendar-action-buttons{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}:host .calendar-action-buttons ion-item,:host .calendar-action-buttons ion-button{--background:translucent}:host .calendar-action-buttons ion-item ion-label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}:host .calendar-action-buttons ion-item ion-icon{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:0;padding-inline-end:0;padding-top:0;padding-bottom:0}:host .calendar-days-of-week{display:grid;grid-template-columns:repeat(7, 1fr);text-align:center}:host .calendar-body{display:-ms-flexbox;display:flex;-ms-flex-positive:1;flex-grow:1;-webkit-scroll-snap-type:x mandatory;-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory;overflow-x:scroll;overflow-y:hidden;scrollbar-width:none;outline:none}:host .calendar-body .calendar-month{scroll-snap-align:start;scroll-snap-stop:always;-ms-flex-negative:0;flex-shrink:0;width:100%}:host .calendar-body .calendar-month-disabled{scroll-snap-align:none}:host .calendar-body::-webkit-scrollbar{display:none}:host .calendar-body .calendar-month-grid{display:grid;grid-template-columns:repeat(7, 1fr)}:host .calendar-day{-webkit-padding-start:0px;padding-inline-start:0px;-webkit-padding-end:0px;padding-inline-end:0px;padding-top:0px;padding-bottom:0px;-webkit-margin-start:0px;margin-inline-start:0px;-webkit-margin-end:0px;margin-inline-end:0px;margin-top:0px;margin-bottom:0px;display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;border:none;outline:none;background:none;color:currentColor;font-family:var(--ion-font-family, inherit);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;z-index:0}:host .calendar-day[disabled]{pointer-events:none;opacity:0.4}.calendar-day-highlight{border-radius:32px;-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;position:absolute;width:32px;height:32px;z-index:-1}:host .datetime-time{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}:host(.datetime-presentation-time) .datetime-time{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}:host ion-popover{--height:200px}:host .time-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}:host .time-body{border-radius:8px;-webkit-padding-start:12px;padding-inline-start:12px;-webkit-padding-end:12px;padding-inline-end:12px;padding-top:6px;padding-bottom:6px;display:-ms-flexbox;display:flex;border:none;background:var(--ion-color-step-300, #edeef0);color:var(--ion-text-color, #000);font-family:inherit;font-size:inherit;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}:host .time-body-active{color:var(--ion-color-base)}:host(.in-item){position:static}:host(.show-month-and-year) .calendar-action-buttons ion-item{--color:var(--ion-color-base)}:host{--background:var(--ion-color-light, #ffffff);--background-rgb:var(--ion-color-light-rgb);--title-color:var(--ion-color-step-600, #666666)}:host(.datetime-presentation-date-time:not(.datetime-prefer-wheel)),:host(.datetime-presentation-time-date:not(.datetime-prefer-wheel)),:host(.datetime-presentation-date:not(.datetime-prefer-wheel)){min-height:350px}:host .datetime-header{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:16px;padding-bottom:16px;border-bottom:0.55px solid var(--ion-color-step-200, #cccccc);font-size:14px}:host .datetime-header .datetime-title{color:var(--title-color)}:host .datetime-header .datetime-selected-date{margin-top:10px}:host .calendar-action-buttons ion-item{--padding-start:16px;--background-hover:transparent;--background-activated:transparent;font-size:16px;font-weight:600}:host .calendar-action-buttons ion-item ion-icon,:host .calendar-action-buttons ion-buttons ion-button{color:var(--ion-color-base)}:host .calendar-action-buttons ion-buttons{padding-left:0;padding-right:0;padding-top:8px;padding-bottom:0}:host .calendar-action-buttons ion-buttons ion-button{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}:host .calendar-days-of-week{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:0;padding-bottom:0;color:var(--ion-color-step-300, #b3b3b3);font-size:12px;font-weight:600;line-height:24px;text-transform:uppercase}:host .calendar-body .calendar-month .calendar-month-grid{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:8px;padding-bottom:8px;height:calc(100% - 16px)}:host .calendar-day{font-size:20px}.calendar-day:focus .calendar-day-highlight,.calendar-day.calendar-day-active .calendar-day-highlight{opacity:0.2}.calendar-day.calendar-day-active .calendar-day-highlight{background:var(--ion-color-base)}.calendar-day:focus .calendar-day-highlight{background:var(--ion-color-base) !important}:host .calendar-day.calendar-day-today{color:var(--ion-color-base)}:host .calendar-day.calendar-day-active{color:var(--ion-color-base);font-weight:600}:host .calendar-day.calendar-day-today.calendar-day-active{color:var(--ion-color-contrast)}.calendar-day.calendar-day-today.calendar-day-active .calendar-day-highlight{background:var(--ion-color-base);opacity:1}:host .datetime-time{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:8px;padding-bottom:16px;font-size:16px}:host .datetime-time .time-header{font-weight:600}:host .datetime-buttons{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:8px;padding-bottom:8px;border-top:0.55px solid var(--ion-color-step-200, #cccccc)}:host .datetime-buttons ::slotted(ion-buttons),:host .datetime-buttons ion-buttons{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}:host .datetime-action-buttons{width:100%}";
192
+ const datetimeIosCss = ":host{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;background:var(--background);overflow:hidden}ion-picker-column-internal{min-width:26px}:host(.datetime-size-fixed){width:auto;height:auto}:host(.datetime-size-fixed:not(.datetime-prefer-wheel)){max-width:350px}:host(.datetime-size-fixed.datetime-prefer-wheel){min-width:350px;max-width:-webkit-max-content;max-width:-moz-max-content;max-width:max-content}:host(.datetime-size-cover){width:100%}:host .calendar-body,:host .datetime-year{opacity:0}:host(:not(.datetime-ready)) .datetime-year{position:absolute;pointer-events:none}:host(.datetime-ready) .calendar-body{opacity:1}:host(.datetime-ready) .datetime-year{display:none;opacity:1}:host .wheel-order-year-first .day-column{-ms-flex-order:3;order:3;text-align:end}:host .wheel-order-year-first .month-column{-ms-flex-order:2;order:2;text-align:end}:host .wheel-order-year-first .year-column{-ms-flex-order:1;order:1;text-align:start}:host .datetime-calendar,:host .datetime-year{display:-ms-flexbox;display:flex;-ms-flex:1 1 auto;flex:1 1 auto;-ms-flex-flow:column;flex-flow:column}:host(.show-month-and-year) .datetime-year{display:-ms-flexbox;display:flex}@supports (background: -webkit-named-image(apple-pay-logo-black)) and (not (aspect-ratio: 1/1)){:host(.show-month-and-year) .calendar-next-prev,:host(.show-month-and-year) .calendar-days-of-week,:host(.show-month-and-year) .calendar-body,:host(.show-month-and-year) .datetime-time{position:absolute;visibility:hidden;pointer-events:none}@supports (inset-inline-start: 0){:host(.show-month-and-year) .calendar-next-prev,:host(.show-month-and-year) .calendar-days-of-week,:host(.show-month-and-year) .calendar-body,:host(.show-month-and-year) .datetime-time{inset-inline-start:-99999px}}@supports not (inset-inline-start: 0){:host(.show-month-and-year) .calendar-next-prev,:host(.show-month-and-year) .calendar-days-of-week,:host(.show-month-and-year) .calendar-body,:host(.show-month-and-year) .datetime-time{left:-99999px}:host-context([dir=rtl]):host(.show-month-and-year) .calendar-next-prev,:host-context([dir=rtl]).show-month-and-year .calendar-next-prev,:host-context([dir=rtl]):host(.show-month-and-year) .calendar-days-of-week,:host-context([dir=rtl]).show-month-and-year .calendar-days-of-week,:host-context([dir=rtl]):host(.show-month-and-year) .calendar-body,:host-context([dir=rtl]).show-month-and-year .calendar-body,:host-context([dir=rtl]):host(.show-month-and-year) .datetime-time,:host-context([dir=rtl]).show-month-and-year .datetime-time{left:unset;right:unset;right:-99999px}@supports selector(:dir(rtl)){:host(.show-month-and-year) .calendar-next-prev:dir(rtl),:host(.show-month-and-year) .calendar-days-of-week:dir(rtl),:host(.show-month-and-year) .calendar-body:dir(rtl),:host(.show-month-and-year) .datetime-time:dir(rtl){left:unset;right:unset;right:-99999px}}}}@supports (not (background: -webkit-named-image(apple-pay-logo-black))) or ((background: -webkit-named-image(apple-pay-logo-black)) and (aspect-ratio: 1/1)){:host(.show-month-and-year) .calendar-next-prev,:host(.show-month-and-year) .calendar-days-of-week,:host(.show-month-and-year) .calendar-body,:host(.show-month-and-year) .datetime-time{display:none}}:host(.month-year-picker-open) .datetime-footer{display:none}:host(.datetime-readonly),:host(.datetime-disabled){pointer-events:none}:host(.datetime-disabled){opacity:0.4}:host .datetime-header .datetime-title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}:host .datetime-action-buttons.has-clear-button{width:100%}:host .datetime-action-buttons ion-buttons{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}:host .calendar-action-buttons{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}:host .calendar-action-buttons ion-item,:host .calendar-action-buttons ion-button{--background:translucent}:host .calendar-action-buttons ion-item ion-label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}:host .calendar-action-buttons ion-item ion-icon{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:0;padding-inline-end:0;padding-top:0;padding-bottom:0}:host .calendar-days-of-week{display:grid;grid-template-columns:repeat(7, 1fr);text-align:center}:host .calendar-body{display:-ms-flexbox;display:flex;-ms-flex-positive:1;flex-grow:1;-webkit-scroll-snap-type:x mandatory;-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory;overflow-x:scroll;overflow-y:hidden;scrollbar-width:none;outline:none}:host .calendar-body .calendar-month{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;scroll-snap-align:start;scroll-snap-stop:always;-ms-flex-negative:0;flex-shrink:0;width:100%}:host .calendar-body .calendar-month-disabled{scroll-snap-align:none}:host .calendar-body::-webkit-scrollbar{display:none}:host .calendar-body .calendar-month-grid{display:grid;grid-template-columns:repeat(7, 1fr)}:host .calendar-day-wrapper{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;min-width:0;min-height:0;overflow:visible}:host .calendar-day{border-radius:50%;-webkit-padding-start:0px;padding-inline-start:0px;-webkit-padding-end:0px;padding-inline-end:0px;padding-top:0px;padding-bottom:0px;-webkit-margin-start:0px;margin-inline-start:0px;-webkit-margin-end:0px;margin-inline-end:0px;margin-top:0px;margin-bottom:0px;display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;border:none;outline:none;background:none;color:currentColor;font-family:var(--ion-font-family, inherit);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;z-index:0}:host .calendar-day[disabled]{pointer-events:none;opacity:0.4}.calendar-day:focus{background:rgba(var(--ion-color-base-rgb), 0.2);-webkit-box-shadow:0px 0px 0px 4px rgba(var(--ion-color-base-rgb), 0.2);box-shadow:0px 0px 0px 4px rgba(var(--ion-color-base-rgb), 0.2)}:host .datetime-time{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}:host(.datetime-presentation-time) .datetime-time{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}:host ion-popover{--height:200px}:host .time-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}:host .time-body{border-radius:8px;-webkit-padding-start:12px;padding-inline-start:12px;-webkit-padding-end:12px;padding-inline-end:12px;padding-top:6px;padding-bottom:6px;display:-ms-flexbox;display:flex;border:none;background:var(--ion-color-step-300, #edeef0);color:var(--ion-text-color, #000);font-family:inherit;font-size:inherit;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}:host .time-body-active{color:var(--ion-color-base)}:host(.in-item){position:static}:host(.show-month-and-year) .calendar-action-buttons ion-item{--color:var(--ion-color-base)}:host{--background:var(--ion-color-light, #ffffff);--background-rgb:var(--ion-color-light-rgb);--title-color:var(--ion-color-step-600, #666666)}:host(.datetime-presentation-date-time:not(.datetime-prefer-wheel)),:host(.datetime-presentation-time-date:not(.datetime-prefer-wheel)),:host(.datetime-presentation-date:not(.datetime-prefer-wheel)){min-height:350px}:host .datetime-header{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:16px;padding-bottom:16px;border-bottom:0.55px solid var(--ion-color-step-200, #cccccc);font-size:14px}:host .datetime-header .datetime-title{color:var(--title-color)}:host .datetime-header .datetime-selected-date{margin-top:10px}:host .calendar-action-buttons ion-item{--padding-start:16px;--background-hover:transparent;--background-activated:transparent;font-size:16px;font-weight:600}:host .calendar-action-buttons ion-item ion-icon,:host .calendar-action-buttons ion-buttons ion-button{color:var(--ion-color-base)}:host .calendar-action-buttons ion-buttons{padding-left:0;padding-right:0;padding-top:8px;padding-bottom:0}:host .calendar-action-buttons ion-buttons ion-button{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}:host .calendar-days-of-week{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:0;padding-bottom:0;color:var(--ion-color-step-300, #b3b3b3);font-size:12px;font-weight:600;line-height:24px;text-transform:uppercase}:host .calendar-body .calendar-month .calendar-month-grid{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:8px;padding-bottom:8px;-ms-flex-align:center;align-items:center;height:calc(100% - 16px)}:host .calendar-day-wrapper{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;height:0;min-height:16px}:host .calendar-day{width:40px;min-width:40px;height:40px;font-size:20px}.calendar-day.calendar-day-active{background:rgba(var(--ion-color-base-rgb), 0.2)}:host .calendar-day.calendar-day-today{color:var(--ion-color-base)}:host .calendar-day.calendar-day-active{color:var(--ion-color-base);font-weight:600}:host .calendar-day.calendar-day-today.calendar-day-active{color:var(--ion-color-contrast)}:host .datetime-time{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:8px;padding-bottom:16px;font-size:16px}:host .datetime-time .time-header{font-weight:600}:host .datetime-buttons{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:8px;padding-bottom:8px;border-top:0.55px solid var(--ion-color-step-200, #cccccc)}:host .datetime-buttons ::slotted(ion-buttons),:host .datetime-buttons ion-buttons{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}:host .datetime-action-buttons{width:100%}";
193
193
 
194
- const datetimeMdCss = ":host{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;background:var(--background);overflow:hidden}ion-picker-column-internal{min-width:26px}:host(.datetime-size-fixed){width:auto;height:auto}:host(.datetime-size-fixed:not(.datetime-prefer-wheel)){max-width:350px}:host(.datetime-size-fixed.datetime-prefer-wheel){min-width:350px;max-width:-webkit-max-content;max-width:-moz-max-content;max-width:max-content}:host(.datetime-size-cover){width:100%}:host .calendar-body,:host .datetime-year{opacity:0}:host(:not(.datetime-ready)) .datetime-year{position:absolute;pointer-events:none}:host(.datetime-ready) .calendar-body{opacity:1}:host(.datetime-ready) .datetime-year{display:none;opacity:1}:host .wheel-order-year-first .day-column{-ms-flex-order:3;order:3;text-align:end}:host .wheel-order-year-first .month-column{-ms-flex-order:2;order:2;text-align:end}:host .wheel-order-year-first .year-column{-ms-flex-order:1;order:1;text-align:start}:host .datetime-calendar,:host .datetime-year{display:-ms-flexbox;display:flex;-ms-flex:1 1 auto;flex:1 1 auto;-ms-flex-flow:column;flex-flow:column}:host(.show-month-and-year) .datetime-year{display:-ms-flexbox;display:flex}@supports (background: -webkit-named-image(apple-pay-logo-black)) and (not (aspect-ratio: 1/1)){:host(.show-month-and-year) .calendar-next-prev,:host(.show-month-and-year) .calendar-days-of-week,:host(.show-month-and-year) .calendar-body,:host(.show-month-and-year) .datetime-time{position:absolute;visibility:hidden;pointer-events:none}@supports (inset-inline-start: 0){:host(.show-month-and-year) .calendar-next-prev,:host(.show-month-and-year) .calendar-days-of-week,:host(.show-month-and-year) .calendar-body,:host(.show-month-and-year) .datetime-time{inset-inline-start:-99999px}}@supports not (inset-inline-start: 0){:host(.show-month-and-year) .calendar-next-prev,:host(.show-month-and-year) .calendar-days-of-week,:host(.show-month-and-year) .calendar-body,:host(.show-month-and-year) .datetime-time{left:-99999px}:host-context([dir=rtl]):host(.show-month-and-year) .calendar-next-prev,:host-context([dir=rtl]).show-month-and-year .calendar-next-prev,:host-context([dir=rtl]):host(.show-month-and-year) .calendar-days-of-week,:host-context([dir=rtl]).show-month-and-year .calendar-days-of-week,:host-context([dir=rtl]):host(.show-month-and-year) .calendar-body,:host-context([dir=rtl]).show-month-and-year .calendar-body,:host-context([dir=rtl]):host(.show-month-and-year) .datetime-time,:host-context([dir=rtl]).show-month-and-year .datetime-time{left:unset;right:unset;right:-99999px}@supports selector(:dir(rtl)){:host(.show-month-and-year) .calendar-next-prev:dir(rtl),:host(.show-month-and-year) .calendar-days-of-week:dir(rtl),:host(.show-month-and-year) .calendar-body:dir(rtl),:host(.show-month-and-year) .datetime-time:dir(rtl){left:unset;right:unset;right:-99999px}}}}@supports (not (background: -webkit-named-image(apple-pay-logo-black))) or ((background: -webkit-named-image(apple-pay-logo-black)) and (aspect-ratio: 1/1)){:host(.show-month-and-year) .calendar-next-prev,:host(.show-month-and-year) .calendar-days-of-week,:host(.show-month-and-year) .calendar-body,:host(.show-month-and-year) .datetime-time{display:none}}:host(.month-year-picker-open) .datetime-footer{display:none}:host(.datetime-readonly),:host(.datetime-disabled){pointer-events:none}:host(.datetime-disabled){opacity:0.4}:host .datetime-header .datetime-title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}:host .datetime-action-buttons.has-clear-button{width:100%}:host .datetime-action-buttons ion-buttons{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}:host .calendar-action-buttons{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}:host .calendar-action-buttons ion-item,:host .calendar-action-buttons ion-button{--background:translucent}:host .calendar-action-buttons ion-item ion-label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}:host .calendar-action-buttons ion-item ion-icon{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:0;padding-inline-end:0;padding-top:0;padding-bottom:0}:host .calendar-days-of-week{display:grid;grid-template-columns:repeat(7, 1fr);text-align:center}:host .calendar-body{display:-ms-flexbox;display:flex;-ms-flex-positive:1;flex-grow:1;-webkit-scroll-snap-type:x mandatory;-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory;overflow-x:scroll;overflow-y:hidden;scrollbar-width:none;outline:none}:host .calendar-body .calendar-month{scroll-snap-align:start;scroll-snap-stop:always;-ms-flex-negative:0;flex-shrink:0;width:100%}:host .calendar-body .calendar-month-disabled{scroll-snap-align:none}:host .calendar-body::-webkit-scrollbar{display:none}:host .calendar-body .calendar-month-grid{display:grid;grid-template-columns:repeat(7, 1fr)}:host .calendar-day{-webkit-padding-start:0px;padding-inline-start:0px;-webkit-padding-end:0px;padding-inline-end:0px;padding-top:0px;padding-bottom:0px;-webkit-margin-start:0px;margin-inline-start:0px;-webkit-margin-end:0px;margin-inline-end:0px;margin-top:0px;margin-bottom:0px;display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;border:none;outline:none;background:none;color:currentColor;font-family:var(--ion-font-family, inherit);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;z-index:0}:host .calendar-day[disabled]{pointer-events:none;opacity:0.4}.calendar-day-highlight{border-radius:32px;-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;position:absolute;width:32px;height:32px;z-index:-1}:host .datetime-time{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}:host(.datetime-presentation-time) .datetime-time{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}:host ion-popover{--height:200px}:host .time-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}:host .time-body{border-radius:8px;-webkit-padding-start:12px;padding-inline-start:12px;-webkit-padding-end:12px;padding-inline-end:12px;padding-top:6px;padding-bottom:6px;display:-ms-flexbox;display:flex;border:none;background:var(--ion-color-step-300, #edeef0);color:var(--ion-text-color, #000);font-family:inherit;font-size:inherit;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}:host .time-body-active{color:var(--ion-color-base)}:host(.in-item){position:static}:host(.show-month-and-year) .calendar-action-buttons ion-item{--color:var(--ion-color-base)}:host{--background:var(--ion-color-step-100, #ffffff);--title-color:var(--ion-color-contrast)}:host .datetime-header{-webkit-padding-start:20px;padding-inline-start:20px;-webkit-padding-end:20px;padding-inline-end:20px;padding-top:20px;padding-bottom:20px;background:var(--ion-color-base);color:var(--title-color)}:host .datetime-header .datetime-title{font-size:12px;text-transform:uppercase}:host .datetime-header .datetime-selected-date{margin-top:30px;font-size:34px}:host .datetime-calendar .calendar-action-buttons ion-item{--padding-start:20px}:host .calendar-action-buttons ion-item,:host .calendar-action-buttons ion-button{--color:var(--ion-color-step-650, #595959)}:host .calendar-days-of-week{-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px;padding-top:0px;padding-bottom:0px;color:var(--ion-color-step-500, gray);font-size:14px;line-height:36px}:host .calendar-body .calendar-month .calendar-month-grid{-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px;padding-top:4px;padding-bottom:4px;grid-template-rows:repeat(6, 1fr)}:host .calendar-day{-webkit-padding-start:0px;padding-inline-start:0px;-webkit-padding-end:0;padding-inline-end:0;padding-top:13px;padding-bottom:13px;font-size:14px}.calendar-day:focus .calendar-day-highlight{background:rgba(var(--ion-color-base-rgb), 0.2);-webkit-box-shadow:0px 0px 0px 4px rgba(var(--ion-color-base-rgb), 0.2);box-shadow:0px 0px 0px 4px rgba(var(--ion-color-base-rgb), 0.2)}:host .calendar-day.calendar-day-today{color:var(--ion-color-base)}.calendar-day.calendar-day-today .calendar-day-highlight{border:1px solid var(--ion-color-base)}:host .calendar-day.calendar-day-active{color:var(--ion-color-contrast)}.calendar-day.calendar-day-active .calendar-day-highlight{border:1px solid var(--ion-color-base);background:var(--ion-color-base)}:host .datetime-time{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:8px;padding-bottom:8px}:host .time-header{color:var(--ion-color-step-650, #595959)}:host(.datetime-presentation-month) .datetime-year,:host(.datetime-presentation-year) .datetime-year,:host(.datetime-presentation-month-year) .datetime-year{margin-top:20px;margin-bottom:20px}:host .datetime-buttons{-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px;padding-top:10px;padding-bottom:10px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end}:host .datetime-view-buttons ion-button{color:var(--ion-color-step-800, #333333)}";
194
+ const datetimeMdCss = ":host{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;background:var(--background);overflow:hidden}ion-picker-column-internal{min-width:26px}:host(.datetime-size-fixed){width:auto;height:auto}:host(.datetime-size-fixed:not(.datetime-prefer-wheel)){max-width:350px}:host(.datetime-size-fixed.datetime-prefer-wheel){min-width:350px;max-width:-webkit-max-content;max-width:-moz-max-content;max-width:max-content}:host(.datetime-size-cover){width:100%}:host .calendar-body,:host .datetime-year{opacity:0}:host(:not(.datetime-ready)) .datetime-year{position:absolute;pointer-events:none}:host(.datetime-ready) .calendar-body{opacity:1}:host(.datetime-ready) .datetime-year{display:none;opacity:1}:host .wheel-order-year-first .day-column{-ms-flex-order:3;order:3;text-align:end}:host .wheel-order-year-first .month-column{-ms-flex-order:2;order:2;text-align:end}:host .wheel-order-year-first .year-column{-ms-flex-order:1;order:1;text-align:start}:host .datetime-calendar,:host .datetime-year{display:-ms-flexbox;display:flex;-ms-flex:1 1 auto;flex:1 1 auto;-ms-flex-flow:column;flex-flow:column}:host(.show-month-and-year) .datetime-year{display:-ms-flexbox;display:flex}@supports (background: -webkit-named-image(apple-pay-logo-black)) and (not (aspect-ratio: 1/1)){:host(.show-month-and-year) .calendar-next-prev,:host(.show-month-and-year) .calendar-days-of-week,:host(.show-month-and-year) .calendar-body,:host(.show-month-and-year) .datetime-time{position:absolute;visibility:hidden;pointer-events:none}@supports (inset-inline-start: 0){:host(.show-month-and-year) .calendar-next-prev,:host(.show-month-and-year) .calendar-days-of-week,:host(.show-month-and-year) .calendar-body,:host(.show-month-and-year) .datetime-time{inset-inline-start:-99999px}}@supports not (inset-inline-start: 0){:host(.show-month-and-year) .calendar-next-prev,:host(.show-month-and-year) .calendar-days-of-week,:host(.show-month-and-year) .calendar-body,:host(.show-month-and-year) .datetime-time{left:-99999px}:host-context([dir=rtl]):host(.show-month-and-year) .calendar-next-prev,:host-context([dir=rtl]).show-month-and-year .calendar-next-prev,:host-context([dir=rtl]):host(.show-month-and-year) .calendar-days-of-week,:host-context([dir=rtl]).show-month-and-year .calendar-days-of-week,:host-context([dir=rtl]):host(.show-month-and-year) .calendar-body,:host-context([dir=rtl]).show-month-and-year .calendar-body,:host-context([dir=rtl]):host(.show-month-and-year) .datetime-time,:host-context([dir=rtl]).show-month-and-year .datetime-time{left:unset;right:unset;right:-99999px}@supports selector(:dir(rtl)){:host(.show-month-and-year) .calendar-next-prev:dir(rtl),:host(.show-month-and-year) .calendar-days-of-week:dir(rtl),:host(.show-month-and-year) .calendar-body:dir(rtl),:host(.show-month-and-year) .datetime-time:dir(rtl){left:unset;right:unset;right:-99999px}}}}@supports (not (background: -webkit-named-image(apple-pay-logo-black))) or ((background: -webkit-named-image(apple-pay-logo-black)) and (aspect-ratio: 1/1)){:host(.show-month-and-year) .calendar-next-prev,:host(.show-month-and-year) .calendar-days-of-week,:host(.show-month-and-year) .calendar-body,:host(.show-month-and-year) .datetime-time{display:none}}:host(.month-year-picker-open) .datetime-footer{display:none}:host(.datetime-readonly),:host(.datetime-disabled){pointer-events:none}:host(.datetime-disabled){opacity:0.4}:host .datetime-header .datetime-title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}:host .datetime-action-buttons.has-clear-button{width:100%}:host .datetime-action-buttons ion-buttons{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}:host .calendar-action-buttons{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}:host .calendar-action-buttons ion-item,:host .calendar-action-buttons ion-button{--background:translucent}:host .calendar-action-buttons ion-item ion-label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}:host .calendar-action-buttons ion-item ion-icon{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:0;padding-inline-end:0;padding-top:0;padding-bottom:0}:host .calendar-days-of-week{display:grid;grid-template-columns:repeat(7, 1fr);text-align:center}:host .calendar-body{display:-ms-flexbox;display:flex;-ms-flex-positive:1;flex-grow:1;-webkit-scroll-snap-type:x mandatory;-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory;overflow-x:scroll;overflow-y:hidden;scrollbar-width:none;outline:none}:host .calendar-body .calendar-month{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;scroll-snap-align:start;scroll-snap-stop:always;-ms-flex-negative:0;flex-shrink:0;width:100%}:host .calendar-body .calendar-month-disabled{scroll-snap-align:none}:host .calendar-body::-webkit-scrollbar{display:none}:host .calendar-body .calendar-month-grid{display:grid;grid-template-columns:repeat(7, 1fr)}:host .calendar-day-wrapper{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;min-width:0;min-height:0;overflow:visible}:host .calendar-day{border-radius:50%;-webkit-padding-start:0px;padding-inline-start:0px;-webkit-padding-end:0px;padding-inline-end:0px;padding-top:0px;padding-bottom:0px;-webkit-margin-start:0px;margin-inline-start:0px;-webkit-margin-end:0px;margin-inline-end:0px;margin-top:0px;margin-bottom:0px;display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;border:none;outline:none;background:none;color:currentColor;font-family:var(--ion-font-family, inherit);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;z-index:0}:host .calendar-day[disabled]{pointer-events:none;opacity:0.4}.calendar-day:focus{background:rgba(var(--ion-color-base-rgb), 0.2);-webkit-box-shadow:0px 0px 0px 4px rgba(var(--ion-color-base-rgb), 0.2);box-shadow:0px 0px 0px 4px rgba(var(--ion-color-base-rgb), 0.2)}:host .datetime-time{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}:host(.datetime-presentation-time) .datetime-time{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}:host ion-popover{--height:200px}:host .time-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}:host .time-body{border-radius:8px;-webkit-padding-start:12px;padding-inline-start:12px;-webkit-padding-end:12px;padding-inline-end:12px;padding-top:6px;padding-bottom:6px;display:-ms-flexbox;display:flex;border:none;background:var(--ion-color-step-300, #edeef0);color:var(--ion-text-color, #000);font-family:inherit;font-size:inherit;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}:host .time-body-active{color:var(--ion-color-base)}:host(.in-item){position:static}:host(.show-month-and-year) .calendar-action-buttons ion-item{--color:var(--ion-color-base)}:host{--background:var(--ion-color-step-100, #ffffff);--title-color:var(--ion-color-contrast)}:host .datetime-header{-webkit-padding-start:20px;padding-inline-start:20px;-webkit-padding-end:20px;padding-inline-end:20px;padding-top:20px;padding-bottom:20px;background:var(--ion-color-base);color:var(--title-color)}:host .datetime-header .datetime-title{font-size:12px;text-transform:uppercase}:host .datetime-header .datetime-selected-date{margin-top:30px;font-size:34px}:host .datetime-calendar .calendar-action-buttons ion-item{--padding-start:20px}:host .calendar-action-buttons ion-item,:host .calendar-action-buttons ion-button{--color:var(--ion-color-step-650, #595959)}:host .calendar-days-of-week{-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px;padding-top:0px;padding-bottom:0px;color:var(--ion-color-step-500, gray);font-size:14px;line-height:36px}:host .calendar-body .calendar-month .calendar-month-grid{-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px;padding-top:4px;padding-bottom:4px;grid-template-rows:repeat(6, 1fr)}:host .calendar-day{width:42px;min-width:42px;height:42px;font-size:14px}:host .calendar-day.calendar-day-today{border:1px solid var(--ion-color-base);color:var(--ion-color-base)}:host .calendar-day.calendar-day-active{color:var(--ion-color-contrast)}.calendar-day.calendar-day-active{border:1px solid var(--ion-color-base);background:var(--ion-color-base)}:host .datetime-time{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:8px;padding-bottom:8px}:host .time-header{color:var(--ion-color-step-650, #595959)}:host(.datetime-presentation-month) .datetime-year,:host(.datetime-presentation-year) .datetime-year,:host(.datetime-presentation-month-year) .datetime-year{margin-top:20px;margin-bottom:20px}:host .datetime-buttons{-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px;padding-top:10px;padding-bottom:10px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end}:host .datetime-view-buttons ion-button{color:var(--ion-color-step-800, #333333)}";
195
195
 
196
196
  const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLElement {
197
197
  constructor() {
@@ -207,11 +207,6 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
207
207
  this.ionRender = createEvent(this, "ionRender", 7);
208
208
  this.inputId = `ion-dt-${datetimeIds++}`;
209
209
  this.prevPresentation = null;
210
- /**
211
- * Duplicate reference to `activeParts` that does not trigger a re-render of the component.
212
- * Allows caching an instance of the `activeParts` in between render cycles.
213
- */
214
- this.activePartsClone = [];
215
210
  this.warnIfIncorrectValueUsage = () => {
216
211
  const { multiple, value } = this;
217
212
  if (!multiple && Array.isArray(value)) {
@@ -239,9 +234,9 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
239
234
  * data. This should be used when rendering an
240
235
  * interface in an environment where the `value`
241
236
  * may not be set. This function works
242
- * by returning the first selected date in
243
- * "activePartsClone" and then falling back to
244
- * defaultParts if no active date is selected.
237
+ * by returning the first selected date and then
238
+ * falling back to defaultParts if no active date
239
+ * is selected.
245
240
  */
246
241
  this.getActivePartsWithFallback = () => {
247
242
  var _a;
@@ -249,8 +244,8 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
249
244
  return (_a = this.getActivePart()) !== null && _a !== void 0 ? _a : defaultParts;
250
245
  };
251
246
  this.getActivePart = () => {
252
- const { activePartsClone } = this;
253
- return Array.isArray(activePartsClone) ? activePartsClone[0] : activePartsClone;
247
+ const { activeParts } = this;
248
+ return Array.isArray(activeParts) ? activeParts[0] : activeParts;
254
249
  };
255
250
  this.closeParentOverlay = () => {
256
251
  const popoverOrModal = this.el.closest('ion-modal, ion-popover');
@@ -262,7 +257,7 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
262
257
  this.workingParts = Object.assign({}, parts);
263
258
  };
264
259
  this.setActiveParts = (parts, removeDate = false) => {
265
- const { multiple, minParts, maxParts, activePartsClone } = this;
260
+ const { multiple, minParts, maxParts, activeParts } = this;
266
261
  /**
267
262
  * When setting the active parts, it is possible
268
263
  * to set invalid data. For example,
@@ -276,16 +271,7 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
276
271
  const validatedParts = validateParts(parts, minParts, maxParts);
277
272
  this.setWorkingParts(validatedParts);
278
273
  if (multiple) {
279
- /**
280
- * We read from activePartsClone here because valueChanged() only updates that,
281
- * so it's the more reliable source of truth. If we read from activeParts, then
282
- * if you click July 1, manually set the value to July 2, and then click July 3,
283
- * the new value would be [July 1, July 3], ignoring the value set.
284
- *
285
- * We can then pass the new value to activeParts (rather than activePartsClone)
286
- * since the clone will be updated automatically by activePartsChanged().
287
- */
288
- const activePartsArray = Array.isArray(activePartsClone) ? activePartsClone : [activePartsClone];
274
+ const activePartsArray = Array.isArray(activeParts) ? activeParts : [activeParts];
289
275
  if (removeDate) {
290
276
  this.activeParts = activePartsArray.filter((p) => !isSameDay(p, validatedParts));
291
277
  }
@@ -410,7 +396,7 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
410
396
  /**
411
397
  * Get the number of padding days so
412
398
  * we know how much to offset our next selector by
413
- * to grab the correct calenday-day element.
399
+ * to grab the correct calendar-day element.
414
400
  */
415
401
  const padding = currentMonth.querySelectorAll('.calendar-day-padding');
416
402
  const { day } = this.workingParts;
@@ -421,7 +407,7 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
421
407
  * Get the calendar day element
422
408
  * and focus it.
423
409
  */
424
- const dayEl = currentMonth.querySelector(`.calendar-day:nth-of-type(${padding.length + day})`);
410
+ const dayEl = currentMonth.querySelector(`.calendar-day-wrapper:nth-of-type(${padding.length + day}) .calendar-day`);
425
411
  if (dayEl) {
426
412
  dayEl.focus();
427
413
  }
@@ -502,6 +488,19 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
502
488
  const monthBox = month.getBoundingClientRect();
503
489
  if (Math.abs(monthBox.x - box.x) > 2)
504
490
  return;
491
+ /**
492
+ * If we're force-rendering a month, assume we've
493
+ * scrolled to that and return it.
494
+ *
495
+ * If forceRenderDate is ever used in a context where the
496
+ * forced month is not immediately auto-scrolled to, this
497
+ * should be updated to also check whether `month` has the
498
+ * same month and year as the forced date.
499
+ */
500
+ const { forceRenderDate } = this;
501
+ if (forceRenderDate !== undefined) {
502
+ return { month: forceRenderDate.month, year: forceRenderDate.year, day: forceRenderDate.day };
503
+ }
505
504
  /**
506
505
  * From here, we can determine if the start
507
506
  * month or the end month was scrolled into view.
@@ -556,6 +555,9 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
556
555
  this.setWorkingParts(Object.assign(Object.assign({}, this.workingParts), { month, day: day, year }));
557
556
  calendarBodyRef.scrollLeft = workingMonth.clientWidth * (isRTL(this.el) ? -1 : 1);
558
557
  calendarBodyRef.style.removeProperty('overflow');
558
+ if (this.resolveForceDateScrolling) {
559
+ this.resolveForceDateScrolling();
560
+ }
559
561
  });
560
562
  };
561
563
  /**
@@ -610,10 +612,17 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
610
612
  }
611
613
  };
612
614
  this.processValue = (value) => {
613
- const hasValue = value !== null && value !== undefined;
615
+ const hasValue = value !== null && value !== undefined && (!Array.isArray(value) || value.length > 0);
614
616
  const valueToProcess = hasValue ? parseDate(value) : this.defaultParts;
615
- const { minParts, maxParts } = this;
617
+ const { minParts, maxParts, workingParts, el } = this;
616
618
  this.warnIfIncorrectValueUsage();
619
+ /**
620
+ * Return early if the value wasn't parsed correctly, such as
621
+ * if an improperly formatted date string was provided.
622
+ */
623
+ if (!valueToProcess) {
624
+ return;
625
+ }
617
626
  /**
618
627
  * Datetime should only warn of out of bounds values
619
628
  * if set by the user. If the `value` is undefined,
@@ -631,16 +640,9 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
631
640
  * that the values don't necessarily have to be in order.
632
641
  */
633
642
  const singleValue = Array.isArray(valueToProcess) ? valueToProcess[0] : valueToProcess;
634
- const { month, day, year, hour, minute } = clampDate(singleValue, minParts, maxParts);
643
+ const targetValue = clampDate(singleValue, minParts, maxParts);
644
+ const { month, day, year, hour, minute } = targetValue;
635
645
  const ampm = parseAmPm(hour);
636
- this.setWorkingParts({
637
- month,
638
- day,
639
- year,
640
- hour,
641
- minute,
642
- ampm,
643
- });
644
646
  /**
645
647
  * Since `activeParts` indicates a value that
646
648
  * been explicitly selected either by the
@@ -670,6 +672,62 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
670
672
  */
671
673
  this.activeParts = [];
672
674
  }
675
+ /**
676
+ * Only animate if:
677
+ * 1. We're using grid style (wheel style pickers should just jump to new value)
678
+ * 2. The month and/or year actually changed, and both are defined (otherwise there's nothing to animate to)
679
+ * 3. The calendar body is visible (prevents animation when in collapsed datetime-button, for example)
680
+ * 4. The month/year picker is not open (since you wouldn't see the animation anyway)
681
+ */
682
+ const didChangeMonth = (month !== undefined && month !== workingParts.month) || (year !== undefined && year !== workingParts.year);
683
+ const bodyIsVisible = el.classList.contains('datetime-ready');
684
+ const { isGridStyle, showMonthAndYear } = this;
685
+ if (isGridStyle && didChangeMonth && bodyIsVisible && !showMonthAndYear) {
686
+ this.animateToDate(targetValue);
687
+ }
688
+ else {
689
+ /**
690
+ * We only need to do this if we didn't just animate to a new month,
691
+ * since that calls prevMonth/nextMonth which calls setWorkingParts for us.
692
+ */
693
+ this.setWorkingParts({
694
+ month,
695
+ day,
696
+ year,
697
+ hour,
698
+ minute,
699
+ ampm,
700
+ });
701
+ }
702
+ };
703
+ this.animateToDate = async (targetValue) => {
704
+ const { workingParts } = this;
705
+ /**
706
+ * Tell other render functions that we need to force the
707
+ * target month to appear in place of the actual next/prev month.
708
+ * Because this is a State variable, a rerender will be triggered
709
+ * automatically, updating the rendered months.
710
+ */
711
+ this.forceRenderDate = targetValue;
712
+ /**
713
+ * Flag that we've started scrolling to the forced date.
714
+ * The resolve function will be called by the datetime's
715
+ * scroll listener when it's done updating everything.
716
+ * This is a replacement for making prev/nextMonth async,
717
+ * since the logic we're waiting on is in a listener.
718
+ */
719
+ const forceDateScrollingPromise = new Promise((resolve) => {
720
+ this.resolveForceDateScrolling = resolve;
721
+ });
722
+ /**
723
+ * Animate smoothly to the forced month. This will also update
724
+ * workingParts and correct the surrounding months for us.
725
+ */
726
+ const targetMonthIsBefore = isBefore(targetValue, workingParts);
727
+ targetMonthIsBefore ? this.prevMonth() : this.nextMonth();
728
+ await forceDateScrollingPromise;
729
+ this.resolveForceDateScrolling = undefined;
730
+ this.forceRenderDate = undefined;
673
731
  };
674
732
  this.onFocus = () => {
675
733
  this.ionFocus.emit();
@@ -725,6 +783,7 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
725
783
  ampm: 'pm',
726
784
  };
727
785
  this.isTimePopoverOpen = false;
786
+ this.forceRenderDate = undefined;
728
787
  this.color = 'primary';
729
788
  this.name = this.inputId;
730
789
  this.disabled = false;
@@ -764,6 +823,11 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
764
823
  maxChanged() {
765
824
  this.processMaxParts();
766
825
  }
826
+ get isGridStyle() {
827
+ const { presentation, preferWheel } = this;
828
+ const hasDatePresentation = presentation === 'date' || presentation === 'date-time' || presentation === 'time-date';
829
+ return hasDatePresentation && !preferWheel;
830
+ }
767
831
  yearValuesChanged() {
768
832
  this.parsedYearValues = convertToArrayOfNumbers(this.yearValues);
769
833
  }
@@ -779,51 +843,13 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
779
843
  minuteValuesChanged() {
780
844
  this.parsedMinuteValues = convertToArrayOfNumbers(this.minuteValues);
781
845
  }
782
- activePartsChanged() {
783
- this.activePartsClone = this.activeParts;
784
- }
785
846
  /**
786
847
  * Update the datetime value when the value changes
787
848
  */
788
- valueChanged() {
789
- const { value, minParts, maxParts, workingParts } = this;
849
+ async valueChanged() {
850
+ const { value } = this;
790
851
  if (this.hasValue()) {
791
- this.warnIfIncorrectValueUsage();
792
- /**
793
- * Clones the value of the `activeParts` to the private clone, to update
794
- * the date display on the current render cycle without causing another render.
795
- *
796
- * This allows us to update the current value's date/time display without
797
- * refocusing or shifting the user's display (leaves the user in place).
798
- */
799
- const valueDateParts = parseDate(value);
800
- if (valueDateParts) {
801
- warnIfValueOutOfBounds(valueDateParts, minParts, maxParts);
802
- if (Array.isArray(valueDateParts)) {
803
- this.activePartsClone = [...valueDateParts];
804
- }
805
- else {
806
- const { month, day, year, hour, minute } = valueDateParts;
807
- const ampm = hour != null ? (hour >= 12 ? 'pm' : 'am') : undefined;
808
- this.activePartsClone = Object.assign(Object.assign({}, this.activeParts), { month,
809
- day,
810
- year,
811
- hour,
812
- minute,
813
- ampm });
814
- /**
815
- * The working parts am/pm value must be updated when the value changes, to
816
- * ensure the time picker hour column values are generated correctly.
817
- *
818
- * Note that we don't need to do this if valueDateParts is an array, since
819
- * multiple="true" does not apply to time pickers.
820
- */
821
- this.setWorkingParts(Object.assign(Object.assign({}, workingParts), { ampm }));
822
- }
823
- }
824
- else {
825
- printIonWarning(`Unable to parse date string: ${value}. Please provide a valid ISO 8601 datetime string.`);
826
- }
852
+ this.processValue(value);
827
853
  }
828
854
  this.emitStyle();
829
855
  this.ionValueChange.emit({ value });
@@ -1026,8 +1052,6 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
1026
1052
  printIonWarning('The highlightedDates property is not supported with preferWheel="true".', el);
1027
1053
  }
1028
1054
  }
1029
- this.processMinParts();
1030
- this.processMaxParts();
1031
1055
  const hourValues = (this.parsedHourValues = convertToArrayOfNumbers(this.hourValues));
1032
1056
  const minuteValues = (this.parsedMinuteValues = convertToArrayOfNumbers(this.minuteValues));
1033
1057
  const monthValues = (this.parsedMonthValues = convertToArrayOfNumbers(this.monthValues));
@@ -1035,6 +1059,8 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
1035
1059
  const dayValues = (this.parsedDayValues = convertToArrayOfNumbers(this.dayValues));
1036
1060
  const todayParts = (this.todayParts = parseDate(getToday()));
1037
1061
  this.defaultParts = getClosestValidDate(todayParts, monthValues, dayValues, yearValues, hourValues, minuteValues);
1062
+ this.processMinParts();
1063
+ this.processMaxParts();
1038
1064
  this.processValue(this.value);
1039
1065
  this.emitStyle();
1040
1066
  }
@@ -1419,7 +1445,7 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
1419
1445
  const { el, highlightedDates, isDateEnabled, multiple } = this;
1420
1446
  const referenceParts = { month, day, year };
1421
1447
  const isCalendarPadding = day === null;
1422
- const { isActive, isToday, ariaLabel, ariaSelected, disabled, text } = getCalendarDayState(this.locale, referenceParts, this.activePartsClone, this.todayParts, this.minParts, this.maxParts, this.parsedDayValues);
1448
+ const { isActive, isToday, ariaLabel, ariaSelected, disabled, text } = getCalendarDayState(this.locale, referenceParts, this.activeParts, this.todayParts, this.minParts, this.maxParts, this.parsedDayValues);
1423
1449
  const dateIsoString = convertDataToISO(referenceParts);
1424
1450
  let isCalDayDisabled = isCalMonthDisabled || disabled;
1425
1451
  if (!isCalDayDisabled && isDateEnabled !== undefined) {
@@ -1443,14 +1469,30 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
1443
1469
  if (highlightedDates !== undefined && !isActive && day !== null) {
1444
1470
  dateStyle = getHighlightStyles(highlightedDates, dateIsoString, el);
1445
1471
  }
1446
- return (h("button", { tabindex: "-1", "data-day": day, "data-month": month, "data-year": year, "data-index": index, "data-day-of-week": dayOfWeek, disabled: isCalDayDisabled, class: {
1472
+ let dateParts = undefined;
1473
+ // "Filler days" at the beginning of the grid should not get the calendar day
1474
+ // CSS parts added to them
1475
+ if (!isCalendarPadding) {
1476
+ dateParts = `calendar-day${isActive ? ' active' : ''}${isToday ? ' today' : ''}${isCalDayDisabled ? ' disabled' : ''}`;
1477
+ }
1478
+ return (h("div", { class: "calendar-day-wrapper" }, h("button", {
1479
+ // We need to use !important for the inline styles here because
1480
+ // otherwise the CSS shadow parts will override these styles.
1481
+ // See https://github.com/WICG/webcomponents/issues/847
1482
+ // Both the CSS shadow parts and highlightedDates styles are
1483
+ // provided by the developer, but highlightedDates styles should
1484
+ // always take priority.
1485
+ ref: (el) => {
1486
+ if (el) {
1487
+ el.style.setProperty('color', `${dateStyle ? dateStyle.textColor : ''}`, 'important');
1488
+ el.style.setProperty('background-color', `${dateStyle ? dateStyle.backgroundColor : ''}`, 'important');
1489
+ }
1490
+ }, tabindex: "-1", "data-day": day, "data-month": month, "data-year": year, "data-index": index, "data-day-of-week": dayOfWeek, disabled: isCalDayDisabled, class: {
1447
1491
  'calendar-day-padding': isCalendarPadding,
1448
1492
  'calendar-day': true,
1449
1493
  'calendar-day-active': isActive,
1450
1494
  'calendar-day-today': isToday,
1451
- }, style: dateStyle && {
1452
- color: dateStyle.textColor,
1453
- }, "aria-hidden": isCalendarPadding ? 'true' : null, "aria-selected": ariaSelected, "aria-label": ariaLabel, onClick: () => {
1495
+ }, part: dateParts, "aria-hidden": isCalendarPadding ? 'true' : null, "aria-selected": ariaSelected, "aria-label": ariaLabel, onClick: () => {
1454
1496
  if (isCalendarPadding) {
1455
1497
  return;
1456
1498
  }
@@ -1470,13 +1512,12 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
1470
1512
  day,
1471
1513
  year }));
1472
1514
  }
1473
- } }, h("div", { class: "calendar-day-highlight", style: {
1474
- backgroundColor: dateStyle === null || dateStyle === void 0 ? void 0 : dateStyle.backgroundColor,
1475
- } }), text));
1515
+ }
1516
+ }, text)));
1476
1517
  }))));
1477
1518
  }
1478
1519
  renderCalendarBody() {
1479
- return (h("div", { class: "calendar-body ion-focusable", ref: (el) => (this.calendarBodyRef = el), tabindex: "0" }, generateMonths(this.workingParts).map(({ month, year }) => {
1520
+ return (h("div", { class: "calendar-body ion-focusable", ref: (el) => (this.calendarBodyRef = el), tabindex: "0" }, generateMonths(this.workingParts, this.forceRenderDate).map(({ month, year }) => {
1480
1521
  return this.renderMonth(month, year);
1481
1522
  })));
1482
1523
  }
@@ -1631,14 +1672,13 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
1631
1672
  }
1632
1673
  }
1633
1674
  render() {
1634
- const { name, value, disabled, el, color, readonly, showMonthAndYear, preferWheel, presentation, size } = this;
1675
+ const { name, value, disabled, el, color, readonly, showMonthAndYear, preferWheel, presentation, size, isGridStyle, } = this;
1635
1676
  const mode = getIonMode(this);
1636
1677
  const isMonthAndYearPresentation = presentation === 'year' || presentation === 'month' || presentation === 'month-year';
1637
1678
  const shouldShowMonthAndYear = showMonthAndYear || isMonthAndYearPresentation;
1638
1679
  const monthYearPickerOpen = showMonthAndYear && !isMonthAndYearPresentation;
1639
1680
  const hasDatePresentation = presentation === 'date' || presentation === 'date-time' || presentation === 'time-date';
1640
1681
  const hasWheelVariant = hasDatePresentation && preferWheel;
1641
- const hasGrid = hasDatePresentation && !preferWheel;
1642
1682
  renderHiddenInput(true, el, name, formatValue(value), disabled);
1643
1683
  return (h(Host, { "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: Object.assign({}, createColorClasses(color, {
1644
1684
  [mode]: true,
@@ -1649,7 +1689,7 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
1649
1689
  [`datetime-presentation-${presentation}`]: true,
1650
1690
  [`datetime-size-${size}`]: true,
1651
1691
  [`datetime-prefer-wheel`]: hasWheelVariant,
1652
- [`datetime-grid`]: hasGrid,
1692
+ [`datetime-grid`]: isGridStyle,
1653
1693
  })) }, this.renderDatetime(mode)));
1654
1694
  }
1655
1695
  get el() { return this; }
@@ -1662,7 +1702,6 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
1662
1702
  "dayValues": ["dayValuesChanged"],
1663
1703
  "hourValues": ["hourValuesChanged"],
1664
1704
  "minuteValues": ["minuteValuesChanged"],
1665
- "activeParts": ["activePartsChanged"],
1666
1705
  "value": ["valueChanged"]
1667
1706
  }; }
1668
1707
  static get style() { return {
@@ -1703,6 +1742,7 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
1703
1742
  "activeParts": [32],
1704
1743
  "workingParts": [32],
1705
1744
  "isTimePopoverOpen": [32],
1745
+ "forceRenderDate": [32],
1706
1746
  "confirm": [64],
1707
1747
  "reset": [64],
1708
1748
  "cancel": [64]
@@ -49,7 +49,7 @@ const ItemSliding = /*@__PURE__*/ proxyCustomElement(class ItemSliding extends H
49
49
  await this.updateOptions();
50
50
  });
51
51
  await this.updateOptions();
52
- this.gesture = (await import('./index2.js')).createGesture({
52
+ this.gesture = (await import('./index3.js')).createGesture({
53
53
  el,
54
54
  gestureName: 'item-swipe',
55
55
  gesturePriority: 100,
@@ -121,7 +121,7 @@ const Menu = /*@__PURE__*/ proxyCustomElement(class Menu extends HTMLElement {
121
121
  // register this menu with the app's menu controller
122
122
  menuController._register(this);
123
123
  this.menuChanged();
124
- this.gesture = (await import('./index2.js')).createGesture({
124
+ this.gesture = (await import('./index3.js')).createGesture({
125
125
  el: document,
126
126
  gestureName: 'menu-swipe',
127
127
  gesturePriority: 30,
@@ -10,12 +10,12 @@ import { p as printIonWarning } from './index6.js';
10
10
  import { g as getCapacitor } from './capacitor.js';
11
11
  import { G as GESTURE, e as createTriggerController, B as BACKDROP, j as prepareOverlay, k as setOverlayId, f as present, q as activeAnimations, g as dismiss, h as eventMethod } from './overlays.js';
12
12
  import { g as getClassMap } from './theme.js';
13
- import { e as deepReady, w as waitForMount } from './index3.js';
13
+ import { e as deepReady, w as waitForMount } from './index2.js';
14
14
  import { b as getIonMode, c as config } from './ionic-global.js';
15
15
  import { KEYBOARD_DID_OPEN } from './keyboard2.js';
16
16
  import { c as createAnimation } from './animation.js';
17
17
  import { g as getTimeGivenProgression } from './cubic-bezier.js';
18
- import { createGesture } from './index2.js';
18
+ import { createGesture } from './index3.js';
19
19
  import { w as win } from './index5.js';
20
20
  import { d as defineCustomElement$2 } from './backdrop.js';
21
21