@ionic/core 7.3.4-dev.11694608913.1bc64f72 → 7.3.4-dev.11694698515.1504c90b

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 (411) hide show
  1. package/components/button-active.js +1 -1
  2. package/components/checkbox.js +3 -6
  3. package/components/data.js +7 -31
  4. package/components/index.js +2 -2
  5. package/components/index2.js +429 -203
  6. package/components/index3.js +203 -429
  7. package/components/input-shims.js +88 -7
  8. package/components/ion-datetime-button.js +0 -3
  9. package/components/ion-datetime.js +92 -132
  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 +4 -7
  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 +3 -6
  25. package/components/swipe-back.js +1 -1
  26. package/dist/cjs/{app-globals-a579aafd.js → app-globals-a63c2a19.js} +1 -1
  27. package/dist/cjs/{button-active-dfd2756e.js → button-active-0ff8e82c.js} +1 -1
  28. package/dist/cjs/{data-db832785.js → data-967b9c15.js} +7 -31
  29. package/dist/cjs/{index-484b1104.js → index-184fdd62.js} +6 -6
  30. package/dist/cjs/{index-8568bedb.js → index-be8a2ab9.js} +3 -3
  31. package/dist/cjs/{index-653be4df.js → index-e6416850.js} +1 -1
  32. package/dist/cjs/index.cjs.js +14 -15
  33. package/dist/cjs/{input-shims-f8569707.js → input-shims-5d7b09e8.js} +92 -12
  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 +5 -7
  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 +3 -6
  48. package/dist/cjs/ion-datetime_3.cjs.entry.js +96 -135
  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 +5 -7
  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 +5 -7
  80. package/dist/cjs/{ionic-global-f81d8b73.js → ionic-global-6d5d27b5.js} +1 -1
  81. package/dist/cjs/ionic.cjs.js +5 -5
  82. package/dist/cjs/{ios.transition-f7c78d7c.js → ios.transition-80582b44.js} +2 -2
  83. package/dist/cjs/loader.cjs.js +4 -4
  84. package/dist/cjs/{md.transition-65dc7dce.js → md.transition-eeca9fb5.js} +2 -2
  85. package/dist/cjs/{overlays-5c1706ed.js → overlays-c78a0148.js} +1 -1
  86. package/dist/cjs/{status-tap-4564b66c.js → status-tap-cc4c6539.js} +1 -1
  87. package/dist/collection/collection-manifest.json +1 -1
  88. package/dist/collection/components/checkbox/checkbox.ios.css +0 -35
  89. package/dist/collection/components/checkbox/checkbox.js +4 -24
  90. package/dist/collection/components/checkbox/checkbox.md.css +0 -35
  91. package/dist/collection/components/checkbox/test/item/checkbox.e2e.js +0 -13
  92. package/dist/collection/components/checkbox/test/label/checkbox.e2e.js +0 -16
  93. package/dist/collection/components/datetime/datetime.ios.css +29 -32
  94. package/dist/collection/components/datetime/datetime.js +93 -137
  95. package/dist/collection/components/datetime/datetime.md.css +28 -20
  96. package/dist/collection/components/datetime/test/basic/datetime.e2e.js +0 -25
  97. package/dist/collection/components/datetime/test/color/datetime.e2e.js +1 -1
  98. package/dist/collection/components/datetime/test/custom/datetime.e2e.js +1 -27
  99. package/dist/collection/components/datetime/test/prefer-wheel/datetime.e2e.js +0 -15
  100. package/dist/collection/components/datetime/test/set-value/datetime.e2e.js +12 -9
  101. package/dist/collection/components/datetime/utils/data.js +6 -14
  102. package/dist/collection/components/datetime/utils/parse.js +1 -18
  103. package/dist/collection/components/datetime-button/datetime-button.js +0 -3
  104. package/dist/collection/components/radio/radio.ios.css +0 -35
  105. package/dist/collection/components/radio/radio.js +4 -24
  106. package/dist/collection/components/radio/radio.md.css +0 -35
  107. package/dist/collection/components/radio/test/item/radio.e2e.js +0 -15
  108. package/dist/collection/components/radio/test/label-placement/radio.e2e.js +0 -20
  109. package/dist/collection/components/range/range.ios.css +1 -41
  110. package/dist/collection/components/range/range.js +3 -3
  111. package/dist/collection/components/range/range.md.css +1 -41
  112. package/dist/collection/components/range/test/label/range.e2e.js +0 -48
  113. package/dist/collection/components/toggle/test/item/toggle.e2e.js +0 -15
  114. package/dist/collection/components/toggle/test/label/toggle.e2e.js +0 -16
  115. package/dist/collection/components/toggle/toggle.ios.css +1 -35
  116. package/dist/collection/components/toggle/toggle.js +4 -24
  117. package/dist/collection/components/toggle/toggle.md.css +1 -35
  118. package/dist/collection/index.js +0 -1
  119. package/dist/collection/utils/input-shims/hacks/scroll-assist.js +86 -4
  120. package/dist/collection/utils/input-shims/hacks/scroll-data.js +2 -3
  121. package/dist/docs.json +19 -148
  122. package/dist/esm/{app-globals-e8ddf830.js → app-globals-c7886b40.js} +1 -1
  123. package/dist/esm/{button-active-2da0f611.js → button-active-b76ae4ec.js} +1 -1
  124. package/dist/esm/{data-009dbf15.js → data-4b448e3a.js} +7 -31
  125. package/dist/esm/{index-6391de89.js → index-01839411.js} +3 -3
  126. package/dist/esm/{index-b3e05099.js → index-48f5e259.js} +1 -1
  127. package/dist/esm/{index-847f2fde.js → index-adfb2000.js} +6 -6
  128. package/dist/esm/index.js +7 -7
  129. package/dist/esm/{input-shims-af993f05.js → input-shims-451757bd.js} +88 -8
  130. package/dist/esm/ion-accordion_2.entry.js +2 -2
  131. package/dist/esm/ion-action-sheet.entry.js +4 -4
  132. package/dist/esm/ion-alert.entry.js +4 -4
  133. package/dist/esm/ion-app_8.entry.js +5 -5
  134. package/dist/esm/ion-avatar_3.entry.js +2 -2
  135. package/dist/esm/ion-back-button.entry.js +2 -2
  136. package/dist/esm/ion-backdrop.entry.js +2 -2
  137. package/dist/esm/ion-breadcrumb_2.entry.js +2 -2
  138. package/dist/esm/ion-button_2.entry.js +2 -2
  139. package/dist/esm/ion-card_5.entry.js +2 -2
  140. package/dist/esm/ion-checkbox.entry.js +5 -7
  141. package/dist/esm/ion-chip.entry.js +2 -2
  142. package/dist/esm/ion-col_3.entry.js +2 -2
  143. package/dist/esm/ion-datetime-button.entry.js +3 -6
  144. package/dist/esm/ion-datetime_3.entry.js +96 -135
  145. package/dist/esm/ion-fab_3.entry.js +2 -2
  146. package/dist/esm/ion-img.entry.js +2 -2
  147. package/dist/esm/ion-infinite-scroll_2.entry.js +2 -2
  148. package/dist/esm/ion-input.entry.js +2 -2
  149. package/dist/esm/ion-item-option_3.entry.js +2 -2
  150. package/dist/esm/ion-item_8.entry.js +2 -2
  151. package/dist/esm/ion-loading.entry.js +3 -3
  152. package/dist/esm/ion-menu_3.entry.js +4 -4
  153. package/dist/esm/ion-modal.entry.js +4 -4
  154. package/dist/esm/ion-nav_2.entry.js +3 -3
  155. package/dist/esm/ion-picker-column-internal.entry.js +2 -2
  156. package/dist/esm/ion-picker-internal.entry.js +1 -1
  157. package/dist/esm/ion-popover.entry.js +4 -4
  158. package/dist/esm/ion-progress-bar.entry.js +2 -2
  159. package/dist/esm/ion-radio_2.entry.js +5 -7
  160. package/dist/esm/ion-range.entry.js +4 -4
  161. package/dist/esm/ion-refresher_2.entry.js +2 -2
  162. package/dist/esm/ion-reorder_2.entry.js +2 -2
  163. package/dist/esm/ion-ripple-effect.entry.js +2 -2
  164. package/dist/esm/ion-route_4.entry.js +2 -2
  165. package/dist/esm/ion-searchbar.entry.js +2 -2
  166. package/dist/esm/ion-segment_2.entry.js +2 -2
  167. package/dist/esm/ion-select_3.entry.js +3 -3
  168. package/dist/esm/ion-spinner.entry.js +2 -2
  169. package/dist/esm/ion-split-pane.entry.js +2 -2
  170. package/dist/esm/ion-tab-bar_2.entry.js +2 -2
  171. package/dist/esm/ion-tab_2.entry.js +1 -1
  172. package/dist/esm/ion-text.entry.js +2 -2
  173. package/dist/esm/ion-textarea.entry.js +2 -2
  174. package/dist/esm/ion-toast.entry.js +3 -3
  175. package/dist/esm/ion-toggle.entry.js +5 -7
  176. package/dist/esm/{ionic-global-1ef19007.js → ionic-global-9080266a.js} +1 -1
  177. package/dist/esm/ionic.js +6 -6
  178. package/dist/esm/{ios.transition-3137d23e.js → ios.transition-f43871cd.js} +2 -2
  179. package/dist/esm/loader.js +5 -5
  180. package/dist/esm/{md.transition-48b3b77c.js → md.transition-12d21ad0.js} +2 -2
  181. package/dist/esm/{overlays-e1dadfe6.js → overlays-4565894b.js} +1 -1
  182. package/dist/esm/{status-tap-823a0df3.js → status-tap-121c711d.js} +1 -1
  183. package/dist/esm-es5/app-globals-c7886b40.js +4 -0
  184. package/dist/esm-es5/{button-active-2da0f611.js → button-active-b76ae4ec.js} +1 -1
  185. package/dist/esm-es5/data-4b448e3a.js +4 -0
  186. package/dist/esm-es5/{index-6391de89.js → index-01839411.js} +1 -1
  187. package/dist/esm-es5/{index-b3e05099.js → index-48f5e259.js} +1 -1
  188. package/dist/esm-es5/index.js +1 -1
  189. package/dist/esm-es5/input-shims-451757bd.js +4 -0
  190. package/dist/esm-es5/ion-accordion_2.entry.js +1 -1
  191. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  192. package/dist/esm-es5/ion-alert.entry.js +1 -1
  193. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  194. package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
  195. package/dist/esm-es5/ion-back-button.entry.js +1 -1
  196. package/dist/esm-es5/ion-backdrop.entry.js +1 -1
  197. package/dist/esm-es5/ion-breadcrumb_2.entry.js +1 -1
  198. package/dist/esm-es5/ion-button_2.entry.js +1 -1
  199. package/dist/esm-es5/ion-card_5.entry.js +1 -1
  200. package/dist/esm-es5/ion-checkbox.entry.js +1 -1
  201. package/dist/esm-es5/ion-chip.entry.js +1 -1
  202. package/dist/esm-es5/ion-col_3.entry.js +1 -1
  203. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  204. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  205. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  206. package/dist/esm-es5/ion-img.entry.js +1 -1
  207. package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
  208. package/dist/esm-es5/ion-input.entry.js +1 -1
  209. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  210. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  211. package/dist/esm-es5/ion-loading.entry.js +1 -1
  212. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  213. package/dist/esm-es5/ion-modal.entry.js +1 -1
  214. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  215. package/dist/esm-es5/ion-picker-column-internal.entry.js +1 -1
  216. package/dist/esm-es5/ion-picker-internal.entry.js +1 -1
  217. package/dist/esm-es5/ion-popover.entry.js +1 -1
  218. package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
  219. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  220. package/dist/esm-es5/ion-range.entry.js +1 -1
  221. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  222. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  223. package/dist/esm-es5/ion-ripple-effect.entry.js +1 -1
  224. package/dist/esm-es5/ion-route_4.entry.js +1 -1
  225. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  226. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  227. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  228. package/dist/esm-es5/ion-spinner.entry.js +1 -1
  229. package/dist/esm-es5/ion-split-pane.entry.js +1 -1
  230. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  231. package/dist/esm-es5/ion-tab_2.entry.js +1 -1
  232. package/dist/esm-es5/ion-text.entry.js +1 -1
  233. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  234. package/dist/esm-es5/ion-toast.entry.js +1 -1
  235. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  236. package/dist/esm-es5/{ionic-global-1ef19007.js → ionic-global-9080266a.js} +1 -1
  237. package/dist/esm-es5/ionic.js +1 -1
  238. package/dist/esm-es5/{ios.transition-3137d23e.js → ios.transition-f43871cd.js} +1 -1
  239. package/dist/esm-es5/loader.js +1 -1
  240. package/dist/esm-es5/md.transition-12d21ad0.js +4 -0
  241. package/dist/esm-es5/{overlays-e1dadfe6.js → overlays-4565894b.js} +1 -1
  242. package/dist/esm-es5/{status-tap-823a0df3.js → status-tap-121c711d.js} +1 -1
  243. package/dist/html.html-data.json +4 -52
  244. package/dist/ionic/index.esm.js +1 -1
  245. package/dist/ionic/ionic.esm.js +1 -1
  246. package/dist/ionic/ionic.js +1 -1
  247. package/dist/ionic/{p-fac1660b.entry.js → p-041ac2c3.entry.js} +1 -1
  248. package/dist/ionic/{p-fabb7294.entry.js → p-072f99fd.entry.js} +1 -1
  249. package/dist/ionic/{p-99028088.entry.js → p-07656a8a.entry.js} +1 -1
  250. package/dist/ionic/{p-e9c112ba.entry.js → p-07f5e286.entry.js} +1 -1
  251. package/dist/ionic/{p-4a153fbc.system.entry.js → p-0ce43a8f.system.entry.js} +1 -1
  252. package/dist/ionic/{p-98ebc376.entry.js → p-0dbfa45f.entry.js} +1 -1
  253. package/dist/ionic/{p-38dd9aec.entry.js → p-11d0977d.entry.js} +1 -1
  254. package/dist/ionic/p-17e961cf.entry.js +4 -0
  255. package/dist/ionic/{p-fe83e3e2.entry.js → p-1916030e.entry.js} +1 -1
  256. package/dist/ionic/p-1b533a76.system.entry.js +4 -0
  257. package/dist/ionic/{p-bbae0ac3.system.entry.js → p-1c236453.system.entry.js} +1 -1
  258. package/dist/ionic/{p-b2514862.system.entry.js → p-204fb8f0.system.entry.js} +1 -1
  259. package/dist/ionic/{p-82f5c07e.system.entry.js → p-23ddd787.system.entry.js} +1 -1
  260. package/dist/ionic/{p-f5b7b710.system.entry.js → p-26276eb7.system.entry.js} +1 -1
  261. package/dist/ionic/{p-208f640c.entry.js → p-28d8b87b.entry.js} +1 -1
  262. package/dist/ionic/{p-e805ff9f.system.entry.js → p-2ac2278e.system.entry.js} +1 -1
  263. package/dist/ionic/p-2b0ecc04.entry.js +4 -0
  264. package/dist/ionic/{p-69303bb5.system.js → p-2e5930dd.system.js} +1 -1
  265. package/dist/ionic/{p-bf4b8d8a.system.entry.js → p-32983529.system.entry.js} +1 -1
  266. package/dist/ionic/{p-b9654781.system.entry.js → p-3bf120f8.system.entry.js} +1 -1
  267. package/dist/ionic/{p-e3cba96d.js → p-3c325277.js} +1 -1
  268. package/dist/ionic/{p-82632e15.system.js → p-3d5a6d14.system.js} +1 -1
  269. package/dist/ionic/{p-77f91ca9.entry.js → p-3f15f60b.entry.js} +1 -1
  270. package/dist/ionic/{p-6b3afb0f.entry.js → p-42e0558f.entry.js} +1 -1
  271. package/dist/ionic/{p-06d6e9c0.system.entry.js → p-4446e19f.system.entry.js} +1 -1
  272. package/dist/ionic/p-44a6f15d.system.entry.js +4 -0
  273. package/dist/ionic/{p-9c32000a.entry.js → p-47a11fc4.entry.js} +1 -1
  274. package/dist/ionic/{p-1ec4dc01.entry.js → p-48d378cf.entry.js} +1 -1
  275. package/dist/ionic/{p-93e47822.entry.js → p-49f2eaa6.entry.js} +1 -1
  276. package/dist/ionic/{p-1fb9aab8.entry.js → p-4d2807fa.entry.js} +1 -1
  277. package/dist/ionic/{p-32d11ce2.system.entry.js → p-4e1a58c6.system.entry.js} +1 -1
  278. package/dist/ionic/p-4f7109fa.entry.js +4 -0
  279. package/dist/ionic/{p-11a42c03.system.entry.js → p-5080e623.system.entry.js} +1 -1
  280. package/dist/ionic/{p-c4afbed8.system.entry.js → p-5163baf4.system.entry.js} +1 -1
  281. package/dist/ionic/{p-0219ac12.system.entry.js → p-516421e2.system.entry.js} +1 -1
  282. package/dist/ionic/{p-d1d3b740.system.entry.js → p-5260588f.system.entry.js} +1 -1
  283. package/dist/ionic/{p-b22ee0dc.js → p-563068af.js} +1 -1
  284. package/dist/ionic/p-56495958.js +4 -0
  285. package/dist/ionic/{p-dc49c681.system.entry.js → p-574411f2.system.entry.js} +1 -1
  286. package/dist/ionic/{p-8a676776.entry.js → p-57847936.entry.js} +1 -1
  287. package/dist/ionic/{p-d3378c35.entry.js → p-59b40b60.entry.js} +1 -1
  288. package/dist/ionic/{p-af0bc751.system.entry.js → p-5a9dc764.system.entry.js} +1 -1
  289. package/dist/ionic/{p-0ff17c93.entry.js → p-5df94bf8.entry.js} +1 -1
  290. package/dist/ionic/{p-81597423.system.js → p-5e549223.system.js} +1 -1
  291. package/dist/ionic/p-5e5c1e58.js +4 -0
  292. package/dist/ionic/{p-8ba724fa.system.js → p-5fc777e6.system.js} +1 -1
  293. package/dist/ionic/p-601fd53c.js +4 -0
  294. package/dist/ionic/{p-e112994b.system.entry.js → p-6276ba2f.system.entry.js} +1 -1
  295. package/dist/ionic/{p-7c938ad6.js → p-629b0629.js} +1 -1
  296. package/dist/ionic/{p-5c17f888.entry.js → p-68deb933.entry.js} +1 -1
  297. package/dist/ionic/{p-b0e9e0b8.system.entry.js → p-6ccffb74.system.entry.js} +1 -1
  298. package/dist/ionic/{p-98a189f3.entry.js → p-6dff4431.entry.js} +1 -1
  299. package/dist/ionic/{p-fa3327e8.system.entry.js → p-6eb7b33c.system.entry.js} +1 -1
  300. package/dist/ionic/p-7106c152.system.js +4 -0
  301. package/dist/ionic/{p-839bd69f.system.entry.js → p-7474a472.system.entry.js} +1 -1
  302. package/dist/ionic/{p-0b68c41d.system.entry.js → p-74834696.system.entry.js} +1 -1
  303. package/dist/ionic/p-75d4ceab.js +4 -0
  304. package/dist/ionic/{p-430e902d.entry.js → p-765e6339.entry.js} +1 -1
  305. package/dist/ionic/{p-f95f798a.system.entry.js → p-810f1bc9.system.entry.js} +1 -1
  306. package/dist/ionic/{p-57f0efcc.entry.js → p-83459b99.entry.js} +1 -1
  307. package/dist/ionic/{p-99140340.entry.js → p-84084b75.entry.js} +1 -1
  308. package/dist/ionic/{p-68e0ea3c.entry.js → p-8bcd482b.entry.js} +1 -1
  309. package/dist/ionic/{p-48144921.entry.js → p-8db97b90.entry.js} +1 -1
  310. package/dist/ionic/p-8f7edf3e.js +4 -0
  311. package/dist/ionic/{p-87383d00.system.entry.js → p-95188051.system.entry.js} +1 -1
  312. package/dist/ionic/{p-57dc87eb.system.entry.js → p-98bfaff3.system.entry.js} +1 -1
  313. package/dist/ionic/p-99a3df5c.entry.js +4 -0
  314. package/dist/ionic/{p-0142ba6d.entry.js → p-9b53c813.entry.js} +1 -1
  315. package/dist/ionic/{p-83bcaec9.system.entry.js → p-9be96bf3.system.entry.js} +1 -1
  316. package/dist/ionic/p-9dc4d33e.system.js +4 -0
  317. package/dist/ionic/{p-f7faa32d.entry.js → p-9e8727d6.entry.js} +1 -1
  318. package/dist/ionic/p-9eaaa910.entry.js +4 -0
  319. package/dist/ionic/{p-653f2fc6.entry.js → p-9eced28c.entry.js} +1 -1
  320. package/dist/ionic/{p-2061c86f.system.entry.js → p-9f3ad626.system.entry.js} +1 -1
  321. package/dist/ionic/{p-d1bab5e7.system.entry.js → p-a033a91d.system.entry.js} +1 -1
  322. package/dist/ionic/{p-62324608.system.entry.js → p-a037b6d5.system.entry.js} +1 -1
  323. package/dist/ionic/{p-df6743df.system.js → p-a122ecd0.system.js} +1 -1
  324. package/dist/ionic/{p-83008f7c.system.js → p-a314559e.system.js} +2 -2
  325. package/dist/ionic/p-a533868d.system.js +4 -0
  326. package/dist/ionic/{p-1d82df31.system.entry.js → p-a8270ae8.system.entry.js} +1 -1
  327. package/dist/ionic/p-af6125d1.system.entry.js +4 -0
  328. package/dist/ionic/{p-785b0913.entry.js → p-b052b578.entry.js} +1 -1
  329. package/dist/ionic/{p-91459620.js → p-b3f6f321.js} +1 -1
  330. package/dist/ionic/{p-82f8ee51.entry.js → p-b453b38d.entry.js} +1 -1
  331. package/dist/ionic/{p-fea46870.system.entry.js → p-b703ebeb.system.entry.js} +1 -1
  332. package/dist/ionic/p-b8d7f0eb.system.entry.js +4 -0
  333. package/dist/ionic/{p-67b891af.entry.js → p-b9179eab.entry.js} +1 -1
  334. package/dist/ionic/{p-a3f9d271.entry.js → p-bacf09d3.entry.js} +1 -1
  335. package/dist/ionic/{p-f9567c67.entry.js → p-bcabbf15.entry.js} +1 -1
  336. package/dist/ionic/{p-341d5877.entry.js → p-be187db3.entry.js} +1 -1
  337. package/dist/ionic/{p-b32742f3.system.js → p-bfee11b2.system.js} +1 -1
  338. package/dist/ionic/{p-0660215f.entry.js → p-c2d6088f.entry.js} +1 -1
  339. package/dist/ionic/p-c68a8814.system.js +4 -0
  340. package/dist/ionic/p-c7ce7e18.entry.js +4 -0
  341. package/dist/ionic/{p-336420f9.system.entry.js → p-c8c0d58a.system.entry.js} +1 -1
  342. package/dist/ionic/p-cc8910e7.system.js +4 -0
  343. package/dist/ionic/{p-a34669bf.system.entry.js → p-ccc90dcb.system.entry.js} +1 -1
  344. package/dist/ionic/{p-728ac2b3.entry.js → p-cd002251.entry.js} +1 -1
  345. package/dist/ionic/{p-11248f01.js → p-d57e8b06.js} +1 -1
  346. package/dist/ionic/{p-2539e967.system.entry.js → p-d8d30fd1.system.entry.js} +1 -1
  347. package/dist/ionic/p-dacb0258.js +4 -0
  348. package/dist/ionic/{p-d693e765.system.entry.js → p-dc4c9086.system.entry.js} +1 -1
  349. package/dist/ionic/p-dc7d392d.entry.js +4 -0
  350. package/dist/ionic/{p-0cc2bf5a.system.entry.js → p-e239ab05.system.entry.js} +1 -1
  351. package/dist/ionic/p-e65aed58.system.entry.js +4 -0
  352. package/dist/ionic/{p-d5e3bff3.entry.js → p-eb91aee6.entry.js} +1 -1
  353. package/dist/ionic/{p-6bf632d0.system.entry.js → p-ec344ed1.system.entry.js} +1 -1
  354. package/dist/ionic/{p-ed7b205b.entry.js → p-ec7ff98b.entry.js} +1 -1
  355. package/dist/ionic/{p-5ba27716.system.entry.js → p-ee55302a.system.entry.js} +1 -1
  356. package/dist/ionic/{p-dbb48066.system.entry.js → p-ef8a8827.system.entry.js} +1 -1
  357. package/dist/ionic/p-f3ec1f2b.entry.js +4 -0
  358. package/dist/ionic/{p-639d7b25.entry.js → p-f62bed60.entry.js} +1 -1
  359. package/dist/ionic/{p-96c2a273.system.entry.js → p-fa8fc77b.system.entry.js} +1 -1
  360. package/dist/ionic/p-fb26fa56.system.entry.js +4 -0
  361. package/dist/ionic/{p-3ef88fc2.system.entry.js → p-fde174d6.system.entry.js} +1 -1
  362. package/dist/ionic/{p-7b16490a.system.js → p-ff3d728d.system.js} +1 -1
  363. package/dist/types/components/checkbox/checkbox.d.ts +1 -8
  364. package/dist/types/components/datetime/datetime.d.ts +10 -23
  365. package/dist/types/components/datetime/utils/data.d.ts +1 -1
  366. package/dist/types/components/datetime/utils/parse.d.ts +3 -3
  367. package/dist/types/components/radio/radio.d.ts +1 -8
  368. package/dist/types/components/range/range.d.ts +1 -2
  369. package/dist/types/components/toast/toast-interface.d.ts +0 -3
  370. package/dist/types/components/toggle/toggle.d.ts +1 -8
  371. package/dist/types/components.d.ts +16 -40
  372. package/dist/types/index.d.ts +0 -1
  373. package/dist/types/interface.d.ts +0 -1
  374. package/dist/types/stencil-public-runtime.d.ts +3 -3
  375. package/dist/types/utils/browser/index.d.ts +16 -1
  376. package/dist/types/utils/input-shims/hacks/scroll-data.d.ts +1 -1
  377. package/hydrate/index.d.ts +5 -5
  378. package/hydrate/index.js +150 -234
  379. package/package.json +3 -3
  380. package/dist/esm-es5/app-globals-e8ddf830.js +0 -4
  381. package/dist/esm-es5/data-009dbf15.js +0 -4
  382. package/dist/esm-es5/input-shims-af993f05.js +0 -4
  383. package/dist/esm-es5/md.transition-48b3b77c.js +0 -4
  384. package/dist/ionic/p-06902103.system.js +0 -4
  385. package/dist/ionic/p-1f4adf06.system.entry.js +0 -4
  386. package/dist/ionic/p-218b6f33.entry.js +0 -4
  387. package/dist/ionic/p-273e78ae.entry.js +0 -4
  388. package/dist/ionic/p-2da6ba37.system.entry.js +0 -4
  389. package/dist/ionic/p-40138199.entry.js +0 -4
  390. package/dist/ionic/p-44ef7224.system.js +0 -4
  391. package/dist/ionic/p-4531b920.system.js +0 -4
  392. package/dist/ionic/p-4ca1ce6b.system.entry.js +0 -4
  393. package/dist/ionic/p-51b165af.system.js +0 -4
  394. package/dist/ionic/p-582dc7c1.js +0 -4
  395. package/dist/ionic/p-64ad5765.entry.js +0 -4
  396. package/dist/ionic/p-778460f7.js +0 -4
  397. package/dist/ionic/p-7cfd253c.js +0 -4
  398. package/dist/ionic/p-86c5c320.entry.js +0 -4
  399. package/dist/ionic/p-90ec5785.system.entry.js +0 -4
  400. package/dist/ionic/p-a2b25750.js +0 -4
  401. package/dist/ionic/p-a62c0ff4.js +0 -4
  402. package/dist/ionic/p-af986299.system.entry.js +0 -4
  403. package/dist/ionic/p-b321c999.entry.js +0 -4
  404. package/dist/ionic/p-c53dd7a2.entry.js +0 -4
  405. package/dist/ionic/p-d898dd46.js +0 -4
  406. package/dist/ionic/p-d8a0267b.system.entry.js +0 -4
  407. package/dist/ionic/p-e3d5608d.system.js +0 -4
  408. package/dist/ionic/p-f5c19164.entry.js +0 -4
  409. /package/dist/esm-es5/{index-847f2fde.js → index-adfb2000.js} +0 -0
  410. /package/dist/ionic/{p-5b553dc0.system.js → p-2441ba84.system.js} +0 -0
  411. /package/dist/ionic/{p-156967ec.js → p-a18eb556.js} +0 -0
@@ -4,6 +4,7 @@
4
4
  import { g as getScrollElement, c as scrollByPoint, a as findClosestIonContent } from './index8.js';
5
5
  import { a as addEventListener, b as removeEventListener, r as raf, c as componentOnReady } from './helpers.js';
6
6
  import { a as KeyboardResize, K as Keyboard } from './keyboard.js';
7
+ import { w as win } from './index5.js';
7
8
 
8
9
  const cloneMap = new WeakMap();
9
10
  const relocateInput = (componentEl, inputEl, shouldRelocate, inputRelativeY = 0, disabledClonedInput = false) => {
@@ -150,11 +151,10 @@ const enableInputBlurring = () => {
150
151
  };
151
152
 
152
153
  const SCROLL_ASSIST_SPEED = 0.3;
153
- const getScrollData = (componentEl, contentEl, keyboardHeight) => {
154
+ const getScrollData = (componentEl, contentEl, keyboardHeight, platformHeight) => {
154
155
  var _a;
155
156
  const itemEl = (_a = componentEl.closest('ion-item,[ion-item]')) !== null && _a !== void 0 ? _a : componentEl;
156
- return calcScrollData(itemEl.getBoundingClientRect(), contentEl.getBoundingClientRect(), keyboardHeight, componentEl.ownerDocument.defaultView.innerHeight // TODO(FW-2832): type
157
- );
157
+ return calcScrollData(itemEl.getBoundingClientRect(), contentEl.getBoundingClientRect(), keyboardHeight, platformHeight);
158
158
  };
159
159
  const calcScrollData = (inputRect, contentRect, keyboardHeight, platformHeight) => {
160
160
  // compute input's Y values relative to the body
@@ -253,6 +253,83 @@ 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
+ * When adding scroll padding we need to know
266
+ * how much of the viewport the keyboard obscures.
267
+ * We do this by subtracting the keyboard height
268
+ * from the platform height.
269
+ *
270
+ * If we compute this value when switching between
271
+ * inputs then the webview may already be resized.
272
+ * At this point, `win.innerHeight` has already accounted
273
+ * for the keyboard meaning we would then subtract
274
+ * the keyboard height again. This will result in the input
275
+ * being scrolled more than it needs to.
276
+ */
277
+ const platformHeight = win !== undefined ? win.innerHeight : 0;
278
+ /**
279
+ * Scroll assist is run when a text field
280
+ * is focused. However, it may need to
281
+ * re-run when the keyboard size changes
282
+ * such that the text field is now hidden
283
+ * underneath the keyboard.
284
+ * This function re-runs scroll assist
285
+ * when that happens.
286
+ *
287
+ * One limitation of this is on a web browser
288
+ * where native keyboard APIs do not have cross-browser
289
+ * support. `ionKeyboardDidShow` relies on the Visual Viewport API.
290
+ * This means that if the keyboard changes but does not change
291
+ * geometry, then scroll assist will not re-run even if
292
+ * the user has scrolled the text field under the keyboard.
293
+ * This should not be a problem when running in Cordova/Capacitor
294
+ * because `ionKeyboardDidShow` uses the native events
295
+ * which fire every time the keyboard changes.
296
+ */
297
+ const keyboardShow = (ev) => {
298
+ /**
299
+ * If the keyboard has not yet been presented
300
+ * for this text field then the text field has just
301
+ * received focus. In that case, the focusin listener
302
+ * will run scroll assist.
303
+ */
304
+ if (hasKeyboardBeenPresentedForTextField === false) {
305
+ hasKeyboardBeenPresentedForTextField = true;
306
+ return;
307
+ }
308
+ /**
309
+ * Otherwise, the keyboard has already been presented
310
+ * for the focused text field.
311
+ * This means that the keyboard likely changed
312
+ * geometry, and we need to re-run scroll assist.
313
+ * This can happen when the user rotates their device
314
+ * or when they switch keyboards.
315
+ *
316
+ * Make sure we pass in the computed keyboard height
317
+ * rather than the estimated keyboard height.
318
+ *
319
+ * Since the keyboard is already open then we do not
320
+ * need to wait for the webview to resize, so we pass
321
+ * "waitForResize: false".
322
+ */
323
+ jsSetFocus(componentEl, inputEl, contentEl, footerEl, ev.detail.keyboardHeight, addScrollPadding, disableClonedInput, platformHeight, false);
324
+ };
325
+ /**
326
+ * Reset the internal state when the text field loses focus.
327
+ */
328
+ const focusOut = () => {
329
+ hasKeyboardBeenPresentedForTextField = false;
330
+ win === null || win === void 0 ? void 0 : win.removeEventListener('ionKeyboardDidShow', keyboardShow);
331
+ componentEl.removeEventListener('focusout', focusOut, true);
332
+ };
256
333
  /**
257
334
  * When the input is about to receive
258
335
  * focus, we need to move it to prevent
@@ -269,11 +346,15 @@ const enableScrollAssist = (componentEl, inputEl, contentEl, footerEl, keyboardH
269
346
  inputEl.removeAttribute(SKIP_SCROLL_ASSIST);
270
347
  return;
271
348
  }
272
- jsSetFocus(componentEl, inputEl, contentEl, footerEl, keyboardHeight, addScrollPadding, disableClonedInput);
349
+ jsSetFocus(componentEl, inputEl, contentEl, footerEl, keyboardHeight, addScrollPadding, disableClonedInput, platformHeight);
350
+ win === null || win === void 0 ? void 0 : win.addEventListener('ionKeyboardDidShow', keyboardShow);
351
+ componentEl.addEventListener('focusout', focusOut, true);
273
352
  };
274
353
  componentEl.addEventListener('focusin', focusIn, true);
275
354
  return () => {
276
355
  componentEl.removeEventListener('focusin', focusIn, true);
356
+ win === null || win === void 0 ? void 0 : win.removeEventListener('ionKeyboardDidShow', keyboardShow);
357
+ componentEl.removeEventListener('focusout', focusOut, true);
277
358
  };
278
359
  };
279
360
  /**
@@ -292,11 +373,11 @@ const setManualFocus = (el) => {
292
373
  el.setAttribute(SKIP_SCROLL_ASSIST, 'true');
293
374
  el.focus();
294
375
  };
295
- const jsSetFocus = async (componentEl, inputEl, contentEl, footerEl, keyboardHeight, enableScrollPadding, disableClonedInput = false) => {
376
+ const jsSetFocus = async (componentEl, inputEl, contentEl, footerEl, keyboardHeight, enableScrollPadding, disableClonedInput = false, platformHeight = 0, waitForResize = true) => {
296
377
  if (!contentEl && !footerEl) {
297
378
  return;
298
379
  }
299
- const scrollData = getScrollData(componentEl, (contentEl || footerEl), keyboardHeight);
380
+ const scrollData = getScrollData(componentEl, (contentEl || footerEl), keyboardHeight, platformHeight);
300
381
  if (contentEl && Math.abs(scrollData.scrollAmount) < 4) {
301
382
  // the text input is in a safe position that doesn't
302
383
  // require it to be scrolled into view, just set focus now
@@ -383,7 +464,7 @@ const jsSetFocus = async (componentEl, inputEl, contentEl, footerEl, keyboardHei
383
464
  * bandwidth to become available.
384
465
  */
385
466
  const totalScrollAmount = scrollEl.scrollHeight - scrollEl.clientHeight;
386
- if (scrollData.scrollAmount > totalScrollAmount - scrollEl.scrollTop) {
467
+ if (waitForResize && scrollData.scrollAmount > totalScrollAmount - scrollEl.scrollTop) {
387
468
  /**
388
469
  * On iOS devices, the system will show a "Passwords" bar above the keyboard
389
470
  * after the initial keyboard is shown. This prevents the webview from resizing
@@ -52,9 +52,6 @@ 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
- }
58
55
  /**
59
56
  * If developers incorrectly use multiple="true"
60
57
  * 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{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%}";
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%}";
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{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)}";
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)}";
195
195
 
196
196
  const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLElement {
197
197
  constructor() {
@@ -207,6 +207,11 @@ 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 = [];
210
215
  this.warnIfIncorrectValueUsage = () => {
211
216
  const { multiple, value } = this;
212
217
  if (!multiple && Array.isArray(value)) {
@@ -234,9 +239,9 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
234
239
  * data. This should be used when rendering an
235
240
  * interface in an environment where the `value`
236
241
  * may not be set. This function works
237
- * by returning the first selected date and then
238
- * falling back to defaultParts if no active date
239
- * is selected.
242
+ * by returning the first selected date in
243
+ * "activePartsClone" and then falling back to
244
+ * defaultParts if no active date is selected.
240
245
  */
241
246
  this.getActivePartsWithFallback = () => {
242
247
  var _a;
@@ -244,8 +249,8 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
244
249
  return (_a = this.getActivePart()) !== null && _a !== void 0 ? _a : defaultParts;
245
250
  };
246
251
  this.getActivePart = () => {
247
- const { activeParts } = this;
248
- return Array.isArray(activeParts) ? activeParts[0] : activeParts;
252
+ const { activePartsClone } = this;
253
+ return Array.isArray(activePartsClone) ? activePartsClone[0] : activePartsClone;
249
254
  };
250
255
  this.closeParentOverlay = () => {
251
256
  const popoverOrModal = this.el.closest('ion-modal, ion-popover');
@@ -257,7 +262,7 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
257
262
  this.workingParts = Object.assign({}, parts);
258
263
  };
259
264
  this.setActiveParts = (parts, removeDate = false) => {
260
- const { multiple, minParts, maxParts, activeParts } = this;
265
+ const { multiple, minParts, maxParts, activePartsClone } = this;
261
266
  /**
262
267
  * When setting the active parts, it is possible
263
268
  * to set invalid data. For example,
@@ -271,7 +276,16 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
271
276
  const validatedParts = validateParts(parts, minParts, maxParts);
272
277
  this.setWorkingParts(validatedParts);
273
278
  if (multiple) {
274
- const activePartsArray = Array.isArray(activeParts) ? activeParts : [activeParts];
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];
275
289
  if (removeDate) {
276
290
  this.activeParts = activePartsArray.filter((p) => !isSameDay(p, validatedParts));
277
291
  }
@@ -396,7 +410,7 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
396
410
  /**
397
411
  * Get the number of padding days so
398
412
  * we know how much to offset our next selector by
399
- * to grab the correct calendar-day element.
413
+ * to grab the correct calenday-day element.
400
414
  */
401
415
  const padding = currentMonth.querySelectorAll('.calendar-day-padding');
402
416
  const { day } = this.workingParts;
@@ -407,7 +421,7 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
407
421
  * Get the calendar day element
408
422
  * and focus it.
409
423
  */
410
- const dayEl = currentMonth.querySelector(`.calendar-day-wrapper:nth-of-type(${padding.length + day}) .calendar-day`);
424
+ const dayEl = currentMonth.querySelector(`.calendar-day:nth-of-type(${padding.length + day})`);
411
425
  if (dayEl) {
412
426
  dayEl.focus();
413
427
  }
@@ -488,19 +502,6 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
488
502
  const monthBox = month.getBoundingClientRect();
489
503
  if (Math.abs(monthBox.x - box.x) > 2)
490
504
  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
- }
504
505
  /**
505
506
  * From here, we can determine if the start
506
507
  * month or the end month was scrolled into view.
@@ -555,9 +556,6 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
555
556
  this.setWorkingParts(Object.assign(Object.assign({}, this.workingParts), { month, day: day, year }));
556
557
  calendarBodyRef.scrollLeft = workingMonth.clientWidth * (isRTL(this.el) ? -1 : 1);
557
558
  calendarBodyRef.style.removeProperty('overflow');
558
- if (this.resolveForceDateScrolling) {
559
- this.resolveForceDateScrolling();
560
- }
561
559
  });
562
560
  };
563
561
  /**
@@ -612,17 +610,10 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
612
610
  }
613
611
  };
614
612
  this.processValue = (value) => {
615
- const hasValue = value !== null && value !== undefined && (!Array.isArray(value) || value.length > 0);
613
+ const hasValue = value !== null && value !== undefined;
616
614
  const valueToProcess = hasValue ? parseDate(value) : this.defaultParts;
617
- const { minParts, maxParts, workingParts, el } = this;
615
+ const { minParts, maxParts } = this;
618
616
  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
- }
626
617
  /**
627
618
  * Datetime should only warn of out of bounds values
628
619
  * if set by the user. If the `value` is undefined,
@@ -640,9 +631,16 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
640
631
  * that the values don't necessarily have to be in order.
641
632
  */
642
633
  const singleValue = Array.isArray(valueToProcess) ? valueToProcess[0] : valueToProcess;
643
- const targetValue = clampDate(singleValue, minParts, maxParts);
644
- const { month, day, year, hour, minute } = targetValue;
634
+ const { month, day, year, hour, minute } = clampDate(singleValue, minParts, maxParts);
645
635
  const ampm = parseAmPm(hour);
636
+ this.setWorkingParts({
637
+ month,
638
+ day,
639
+ year,
640
+ hour,
641
+ minute,
642
+ ampm,
643
+ });
646
644
  /**
647
645
  * Since `activeParts` indicates a value that
648
646
  * been explicitly selected either by the
@@ -672,62 +670,6 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
672
670
  */
673
671
  this.activeParts = [];
674
672
  }
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;
731
673
  };
732
674
  this.onFocus = () => {
733
675
  this.ionFocus.emit();
@@ -783,7 +725,6 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
783
725
  ampm: 'pm',
784
726
  };
785
727
  this.isTimePopoverOpen = false;
786
- this.forceRenderDate = undefined;
787
728
  this.color = 'primary';
788
729
  this.name = this.inputId;
789
730
  this.disabled = false;
@@ -823,11 +764,6 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
823
764
  maxChanged() {
824
765
  this.processMaxParts();
825
766
  }
826
- get isGridStyle() {
827
- const { presentation, preferWheel } = this;
828
- const hasDatePresentation = presentation === 'date' || presentation === 'date-time' || presentation === 'time-date';
829
- return hasDatePresentation && !preferWheel;
830
- }
831
767
  yearValuesChanged() {
832
768
  this.parsedYearValues = convertToArrayOfNumbers(this.yearValues);
833
769
  }
@@ -843,13 +779,51 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
843
779
  minuteValuesChanged() {
844
780
  this.parsedMinuteValues = convertToArrayOfNumbers(this.minuteValues);
845
781
  }
782
+ activePartsChanged() {
783
+ this.activePartsClone = this.activeParts;
784
+ }
846
785
  /**
847
786
  * Update the datetime value when the value changes
848
787
  */
849
- async valueChanged() {
850
- const { value } = this;
788
+ valueChanged() {
789
+ const { value, minParts, maxParts, workingParts } = this;
851
790
  if (this.hasValue()) {
852
- this.processValue(value);
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
+ }
853
827
  }
854
828
  this.emitStyle();
855
829
  this.ionValueChange.emit({ value });
@@ -1052,6 +1026,8 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
1052
1026
  printIonWarning('The highlightedDates property is not supported with preferWheel="true".', el);
1053
1027
  }
1054
1028
  }
1029
+ this.processMinParts();
1030
+ this.processMaxParts();
1055
1031
  const hourValues = (this.parsedHourValues = convertToArrayOfNumbers(this.hourValues));
1056
1032
  const minuteValues = (this.parsedMinuteValues = convertToArrayOfNumbers(this.minuteValues));
1057
1033
  const monthValues = (this.parsedMonthValues = convertToArrayOfNumbers(this.monthValues));
@@ -1059,8 +1035,6 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
1059
1035
  const dayValues = (this.parsedDayValues = convertToArrayOfNumbers(this.dayValues));
1060
1036
  const todayParts = (this.todayParts = parseDate(getToday()));
1061
1037
  this.defaultParts = getClosestValidDate(todayParts, monthValues, dayValues, yearValues, hourValues, minuteValues);
1062
- this.processMinParts();
1063
- this.processMaxParts();
1064
1038
  this.processValue(this.value);
1065
1039
  this.emitStyle();
1066
1040
  }
@@ -1445,7 +1419,7 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
1445
1419
  const { el, highlightedDates, isDateEnabled, multiple } = this;
1446
1420
  const referenceParts = { month, day, year };
1447
1421
  const isCalendarPadding = day === null;
1448
- const { isActive, isToday, ariaLabel, ariaSelected, disabled, text } = getCalendarDayState(this.locale, referenceParts, this.activeParts, this.todayParts, this.minParts, this.maxParts, this.parsedDayValues);
1422
+ const { isActive, isToday, ariaLabel, ariaSelected, disabled, text } = getCalendarDayState(this.locale, referenceParts, this.activePartsClone, this.todayParts, this.minParts, this.maxParts, this.parsedDayValues);
1449
1423
  const dateIsoString = convertDataToISO(referenceParts);
1450
1424
  let isCalDayDisabled = isCalMonthDisabled || disabled;
1451
1425
  if (!isCalDayDisabled && isDateEnabled !== undefined) {
@@ -1469,30 +1443,14 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
1469
1443
  if (highlightedDates !== undefined && !isActive && day !== null) {
1470
1444
  dateStyle = getHighlightStyles(highlightedDates, dateIsoString, el);
1471
1445
  }
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: {
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: {
1491
1447
  'calendar-day-padding': isCalendarPadding,
1492
1448
  'calendar-day': true,
1493
1449
  'calendar-day-active': isActive,
1494
1450
  'calendar-day-today': isToday,
1495
- }, part: dateParts, "aria-hidden": isCalendarPadding ? 'true' : null, "aria-selected": ariaSelected, "aria-label": ariaLabel, onClick: () => {
1451
+ }, style: dateStyle && {
1452
+ color: dateStyle.textColor,
1453
+ }, "aria-hidden": isCalendarPadding ? 'true' : null, "aria-selected": ariaSelected, "aria-label": ariaLabel, onClick: () => {
1496
1454
  if (isCalendarPadding) {
1497
1455
  return;
1498
1456
  }
@@ -1512,12 +1470,13 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
1512
1470
  day,
1513
1471
  year }));
1514
1472
  }
1515
- }
1516
- }, text)));
1473
+ } }, h("div", { class: "calendar-day-highlight", style: {
1474
+ backgroundColor: dateStyle === null || dateStyle === void 0 ? void 0 : dateStyle.backgroundColor,
1475
+ } }), text));
1517
1476
  }))));
1518
1477
  }
1519
1478
  renderCalendarBody() {
1520
- return (h("div", { class: "calendar-body ion-focusable", ref: (el) => (this.calendarBodyRef = el), tabindex: "0" }, generateMonths(this.workingParts, this.forceRenderDate).map(({ month, year }) => {
1479
+ return (h("div", { class: "calendar-body ion-focusable", ref: (el) => (this.calendarBodyRef = el), tabindex: "0" }, generateMonths(this.workingParts).map(({ month, year }) => {
1521
1480
  return this.renderMonth(month, year);
1522
1481
  })));
1523
1482
  }
@@ -1672,13 +1631,14 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
1672
1631
  }
1673
1632
  }
1674
1633
  render() {
1675
- const { name, value, disabled, el, color, readonly, showMonthAndYear, preferWheel, presentation, size, isGridStyle, } = this;
1634
+ const { name, value, disabled, el, color, readonly, showMonthAndYear, preferWheel, presentation, size } = this;
1676
1635
  const mode = getIonMode(this);
1677
1636
  const isMonthAndYearPresentation = presentation === 'year' || presentation === 'month' || presentation === 'month-year';
1678
1637
  const shouldShowMonthAndYear = showMonthAndYear || isMonthAndYearPresentation;
1679
1638
  const monthYearPickerOpen = showMonthAndYear && !isMonthAndYearPresentation;
1680
1639
  const hasDatePresentation = presentation === 'date' || presentation === 'date-time' || presentation === 'time-date';
1681
1640
  const hasWheelVariant = hasDatePresentation && preferWheel;
1641
+ const hasGrid = hasDatePresentation && !preferWheel;
1682
1642
  renderHiddenInput(true, el, name, formatValue(value), disabled);
1683
1643
  return (h(Host, { "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: Object.assign({}, createColorClasses(color, {
1684
1644
  [mode]: true,
@@ -1689,7 +1649,7 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
1689
1649
  [`datetime-presentation-${presentation}`]: true,
1690
1650
  [`datetime-size-${size}`]: true,
1691
1651
  [`datetime-prefer-wheel`]: hasWheelVariant,
1692
- [`datetime-grid`]: isGridStyle,
1652
+ [`datetime-grid`]: hasGrid,
1693
1653
  })) }, this.renderDatetime(mode)));
1694
1654
  }
1695
1655
  get el() { return this; }
@@ -1702,6 +1662,7 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
1702
1662
  "dayValues": ["dayValuesChanged"],
1703
1663
  "hourValues": ["hourValuesChanged"],
1704
1664
  "minuteValues": ["minuteValuesChanged"],
1665
+ "activeParts": ["activePartsChanged"],
1705
1666
  "value": ["valueChanged"]
1706
1667
  }; }
1707
1668
  static get style() { return {
@@ -1742,7 +1703,6 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
1742
1703
  "activeParts": [32],
1743
1704
  "workingParts": [32],
1744
1705
  "isTimePopoverOpen": [32],
1745
- "forceRenderDate": [32],
1746
1706
  "confirm": [64],
1747
1707
  "reset": [64],
1748
1708
  "cancel": [64]