@ionic/core 7.7.2-dev.11707881769.185d2a14 → 7.7.2-dev.11707926434.1affaed4

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 (365) hide show
  1. package/components/action-sheet.js +3 -7
  2. package/components/alert.js +2 -6
  3. package/components/data.js +28 -38
  4. package/components/ion-datetime-button.js +11 -10
  5. package/components/ion-datetime.js +68 -7
  6. package/components/ion-loading.js +2 -6
  7. package/components/ion-modal.js +3 -7
  8. package/components/ion-picker.js +2 -6
  9. package/components/ion-toast.js +2 -6
  10. package/components/item.js +12 -3
  11. package/components/overlays.js +4 -54
  12. package/components/popover.js +2 -6
  13. package/dist/cjs/{app-globals-92ad1b3d.js → app-globals-5a17c5e1.js} +1 -1
  14. package/dist/cjs/{button-active-2d6520ec.js → button-active-b8c3f603.js} +1 -1
  15. package/dist/cjs/{data-a5109f09.js → data-6246812e.js} +27 -39
  16. package/dist/cjs/{hardware-back-button-2696acaf.js → hardware-back-button-d23873bb.js} +2 -2
  17. package/dist/cjs/{index-0ffe376d.js → index-5a471146.js} +22 -25
  18. package/dist/cjs/{index-c3580a90.js → index-84351d21.js} +3 -3
  19. package/dist/cjs/{index-a43f7a0f.js → index-8c679cbf.js} +2 -2
  20. package/dist/cjs/index.cjs.js +8 -8
  21. package/dist/cjs/ion-accordion_2.cjs.entry.js +2 -2
  22. package/dist/cjs/ion-action-sheet.cjs.entry.js +8 -12
  23. package/dist/cjs/ion-alert.cjs.entry.js +7 -11
  24. package/dist/cjs/ion-app_8.cjs.entry.js +6 -6
  25. package/dist/cjs/ion-avatar_3.cjs.entry.js +2 -2
  26. package/dist/cjs/ion-back-button.cjs.entry.js +2 -2
  27. package/dist/cjs/ion-backdrop.cjs.entry.js +2 -2
  28. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +2 -2
  29. package/dist/cjs/ion-button_2.cjs.entry.js +2 -2
  30. package/dist/cjs/ion-card_5.cjs.entry.js +2 -2
  31. package/dist/cjs/ion-checkbox.cjs.entry.js +2 -2
  32. package/dist/cjs/ion-chip.cjs.entry.js +2 -2
  33. package/dist/cjs/ion-col_3.cjs.entry.js +2 -2
  34. package/dist/cjs/ion-datetime-button.cjs.entry.js +13 -12
  35. package/dist/cjs/ion-datetime_3.cjs.entry.js +71 -17
  36. package/dist/cjs/ion-fab_3.cjs.entry.js +2 -2
  37. package/dist/cjs/ion-img.cjs.entry.js +2 -2
  38. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +2 -2
  39. package/dist/cjs/ion-input.cjs.entry.js +2 -2
  40. package/dist/cjs/ion-item-option_3.cjs.entry.js +2 -2
  41. package/dist/cjs/ion-item_8.cjs.entry.js +4 -4
  42. package/dist/cjs/ion-loading.cjs.entry.js +6 -10
  43. package/dist/cjs/ion-menu_3.cjs.entry.js +5 -5
  44. package/dist/cjs/ion-modal.cjs.entry.js +8 -12
  45. package/dist/cjs/ion-nav_2.cjs.entry.js +3 -3
  46. package/dist/cjs/ion-picker-column-internal.cjs.entry.js +2 -2
  47. package/dist/cjs/ion-picker-internal.cjs.entry.js +1 -1
  48. package/dist/cjs/ion-popover.cjs.entry.js +7 -11
  49. package/dist/cjs/ion-progress-bar.cjs.entry.js +2 -2
  50. package/dist/cjs/ion-radio_2.cjs.entry.js +2 -2
  51. package/dist/cjs/ion-range.cjs.entry.js +2 -2
  52. package/dist/cjs/ion-refresher_2.cjs.entry.js +2 -2
  53. package/dist/cjs/ion-reorder_2.cjs.entry.js +2 -2
  54. package/dist/cjs/ion-ripple-effect.cjs.entry.js +2 -2
  55. package/dist/cjs/ion-route_4.cjs.entry.js +2 -2
  56. package/dist/cjs/ion-searchbar.cjs.entry.js +2 -2
  57. package/dist/cjs/ion-segment_2.cjs.entry.js +2 -2
  58. package/dist/cjs/ion-select_3.cjs.entry.js +4 -4
  59. package/dist/cjs/ion-spinner.cjs.entry.js +2 -2
  60. package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
  61. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +2 -2
  62. package/dist/cjs/ion-tab_2.cjs.entry.js +1 -1
  63. package/dist/cjs/ion-text.cjs.entry.js +2 -2
  64. package/dist/cjs/ion-textarea.cjs.entry.js +2 -2
  65. package/dist/cjs/ion-toast.cjs.entry.js +6 -10
  66. package/dist/cjs/ion-toggle.cjs.entry.js +2 -2
  67. package/dist/cjs/{ionic-global-59a10130.js → ionic-global-7358c23e.js} +1 -1
  68. package/dist/cjs/ionic.cjs.js +7 -7
  69. package/dist/cjs/{ios.transition-c3b11cc3.js → ios.transition-8e40c54e.js} +2 -2
  70. package/dist/cjs/loader.cjs.js +6 -6
  71. package/dist/cjs/{md.transition-82a8c649.js → md.transition-597a2479.js} +2 -2
  72. package/dist/cjs/{overlays-fb7ca451.js → overlays-330df245.js} +6 -56
  73. package/dist/cjs/{status-tap-692f6d32.js → status-tap-b0bfea34.js} +1 -1
  74. package/dist/collection/collection-manifest.json +1 -1
  75. package/dist/collection/components/action-sheet/action-sheet.js +5 -9
  76. package/dist/collection/components/alert/alert.js +4 -8
  77. package/dist/collection/components/datetime/datetime.js +90 -7
  78. package/dist/collection/components/datetime/test/basic/datetime.e2e.js +79 -0
  79. package/dist/collection/components/datetime/test/format.spec.js +65 -1
  80. package/dist/collection/components/datetime/utils/format.js +28 -20
  81. package/dist/collection/components/datetime-button/datetime-button.js +11 -10
  82. package/dist/collection/components/datetime-button/test/basic/datetime-button.e2e.js +66 -0
  83. package/dist/collection/components/item/item.js +12 -3
  84. package/dist/collection/components/loading/loading.js +4 -8
  85. package/dist/collection/components/modal/modal.js +5 -9
  86. package/dist/collection/components/picker/picker.js +4 -8
  87. package/dist/collection/components/popover/popover.js +4 -8
  88. package/dist/collection/components/toast/test/toast.spec.js +0 -12
  89. package/dist/collection/components/toast/toast.js +4 -8
  90. package/dist/collection/utils/overlays.js +4 -54
  91. package/dist/collection/utils/test/overlays/overlays.e2e.js +0 -33
  92. package/dist/collection/utils/test/overlays/overlays.spec.js +0 -51
  93. package/dist/docs.json +66 -23
  94. package/dist/esm/{app-globals-5cf6195b.js → app-globals-47226a12.js} +1 -1
  95. package/dist/esm/{button-active-47ac8092.js → button-active-4bee452c.js} +1 -1
  96. package/dist/esm/{data-0f3ab200.js → data-25d50209.js} +28 -38
  97. package/dist/esm/{hardware-back-button-b410a047.js → hardware-back-button-f42b9c80.js} +2 -2
  98. package/dist/esm/{index-47b2066d.js → index-48209844.js} +2 -2
  99. package/dist/esm/{index-0b4beb69.js → index-4b98143d.js} +3 -3
  100. package/dist/esm/{index-4c30cddd.js → index-73881b51.js} +22 -25
  101. package/dist/esm/index.js +8 -8
  102. package/dist/esm/ion-accordion_2.entry.js +2 -2
  103. package/dist/esm/ion-action-sheet.entry.js +8 -12
  104. package/dist/esm/ion-alert.entry.js +7 -11
  105. package/dist/esm/ion-app_8.entry.js +6 -6
  106. package/dist/esm/ion-avatar_3.entry.js +2 -2
  107. package/dist/esm/ion-back-button.entry.js +2 -2
  108. package/dist/esm/ion-backdrop.entry.js +2 -2
  109. package/dist/esm/ion-breadcrumb_2.entry.js +2 -2
  110. package/dist/esm/ion-button_2.entry.js +2 -2
  111. package/dist/esm/ion-card_5.entry.js +2 -2
  112. package/dist/esm/ion-checkbox.entry.js +2 -2
  113. package/dist/esm/ion-chip.entry.js +2 -2
  114. package/dist/esm/ion-col_3.entry.js +2 -2
  115. package/dist/esm/ion-datetime-button.entry.js +13 -12
  116. package/dist/esm/ion-datetime_3.entry.js +71 -17
  117. package/dist/esm/ion-fab_3.entry.js +2 -2
  118. package/dist/esm/ion-img.entry.js +2 -2
  119. package/dist/esm/ion-infinite-scroll_2.entry.js +2 -2
  120. package/dist/esm/ion-input.entry.js +2 -2
  121. package/dist/esm/ion-item-option_3.entry.js +2 -2
  122. package/dist/esm/ion-item_8.entry.js +4 -4
  123. package/dist/esm/ion-loading.entry.js +6 -10
  124. package/dist/esm/ion-menu_3.entry.js +5 -5
  125. package/dist/esm/ion-modal.entry.js +8 -12
  126. package/dist/esm/ion-nav_2.entry.js +3 -3
  127. package/dist/esm/ion-picker-column-internal.entry.js +2 -2
  128. package/dist/esm/ion-picker-internal.entry.js +1 -1
  129. package/dist/esm/ion-popover.entry.js +7 -11
  130. package/dist/esm/ion-progress-bar.entry.js +2 -2
  131. package/dist/esm/ion-radio_2.entry.js +2 -2
  132. package/dist/esm/ion-range.entry.js +2 -2
  133. package/dist/esm/ion-refresher_2.entry.js +2 -2
  134. package/dist/esm/ion-reorder_2.entry.js +2 -2
  135. package/dist/esm/ion-ripple-effect.entry.js +2 -2
  136. package/dist/esm/ion-route_4.entry.js +2 -2
  137. package/dist/esm/ion-searchbar.entry.js +2 -2
  138. package/dist/esm/ion-segment_2.entry.js +2 -2
  139. package/dist/esm/ion-select_3.entry.js +4 -4
  140. package/dist/esm/ion-spinner.entry.js +2 -2
  141. package/dist/esm/ion-split-pane.entry.js +2 -2
  142. package/dist/esm/ion-tab-bar_2.entry.js +2 -2
  143. package/dist/esm/ion-tab_2.entry.js +1 -1
  144. package/dist/esm/ion-text.entry.js +2 -2
  145. package/dist/esm/ion-textarea.entry.js +2 -2
  146. package/dist/esm/ion-toast.entry.js +6 -10
  147. package/dist/esm/ion-toggle.entry.js +2 -2
  148. package/dist/esm/{ionic-global-ad9a1810.js → ionic-global-778b7863.js} +1 -1
  149. package/dist/esm/ionic.js +8 -8
  150. package/dist/esm/{ios.transition-b76c7020.js → ios.transition-7ff7381d.js} +2 -2
  151. package/dist/esm/loader.js +7 -7
  152. package/dist/esm/{md.transition-564937a7.js → md.transition-28a9a26b.js} +2 -2
  153. package/dist/esm/{overlays-04a9a43f.js → overlays-33ae3ea0.js} +6 -56
  154. package/dist/esm/{status-tap-5a95077d.js → status-tap-2b335fb7.js} +1 -1
  155. package/dist/esm-es5/app-globals-47226a12.js +4 -0
  156. package/dist/esm-es5/{button-active-47ac8092.js → button-active-4bee452c.js} +1 -1
  157. package/dist/esm-es5/data-25d50209.js +4 -0
  158. package/dist/esm-es5/{hardware-back-button-b410a047.js → hardware-back-button-f42b9c80.js} +1 -1
  159. package/dist/esm-es5/{index-47b2066d.js → index-48209844.js} +1 -1
  160. package/dist/esm-es5/{index-0b4beb69.js → index-4b98143d.js} +1 -1
  161. package/dist/esm-es5/{index-4c30cddd.js → index-73881b51.js} +1 -1
  162. package/dist/esm-es5/index.js +1 -1
  163. package/dist/esm-es5/ion-accordion_2.entry.js +1 -1
  164. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  165. package/dist/esm-es5/ion-alert.entry.js +1 -1
  166. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  167. package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
  168. package/dist/esm-es5/ion-back-button.entry.js +1 -1
  169. package/dist/esm-es5/ion-backdrop.entry.js +1 -1
  170. package/dist/esm-es5/ion-breadcrumb_2.entry.js +1 -1
  171. package/dist/esm-es5/ion-button_2.entry.js +1 -1
  172. package/dist/esm-es5/ion-card_5.entry.js +1 -1
  173. package/dist/esm-es5/ion-checkbox.entry.js +1 -1
  174. package/dist/esm-es5/ion-chip.entry.js +1 -1
  175. package/dist/esm-es5/ion-col_3.entry.js +1 -1
  176. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  177. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  178. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  179. package/dist/esm-es5/ion-img.entry.js +1 -1
  180. package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
  181. package/dist/esm-es5/ion-input.entry.js +1 -1
  182. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  183. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  184. package/dist/esm-es5/ion-loading.entry.js +1 -1
  185. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  186. package/dist/esm-es5/ion-modal.entry.js +1 -1
  187. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  188. package/dist/esm-es5/ion-picker-column-internal.entry.js +1 -1
  189. package/dist/esm-es5/ion-picker-internal.entry.js +1 -1
  190. package/dist/esm-es5/ion-popover.entry.js +1 -1
  191. package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
  192. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  193. package/dist/esm-es5/ion-range.entry.js +1 -1
  194. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  195. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  196. package/dist/esm-es5/ion-ripple-effect.entry.js +1 -1
  197. package/dist/esm-es5/ion-route_4.entry.js +1 -1
  198. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  199. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  200. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  201. package/dist/esm-es5/ion-spinner.entry.js +1 -1
  202. package/dist/esm-es5/ion-split-pane.entry.js +1 -1
  203. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  204. package/dist/esm-es5/ion-tab_2.entry.js +1 -1
  205. package/dist/esm-es5/ion-text.entry.js +1 -1
  206. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  207. package/dist/esm-es5/ion-toast.entry.js +1 -1
  208. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  209. package/dist/esm-es5/{ionic-global-ad9a1810.js → ionic-global-778b7863.js} +1 -1
  210. package/dist/esm-es5/ionic.js +2 -2
  211. package/dist/esm-es5/{ios.transition-b76c7020.js → ios.transition-7ff7381d.js} +1 -1
  212. package/dist/esm-es5/loader.js +2 -2
  213. package/dist/esm-es5/md.transition-28a9a26b.js +4 -0
  214. package/dist/esm-es5/{overlays-04a9a43f.js → overlays-33ae3ea0.js} +1 -1
  215. package/dist/esm-es5/{status-tap-5a95077d.js → status-tap-2b335fb7.js} +1 -1
  216. package/dist/ionic/index.esm.js +1 -1
  217. package/dist/ionic/ionic.esm.js +1 -1
  218. package/dist/ionic/ionic.js +1 -1
  219. package/dist/ionic/{p-df504a37.system.js → p-001010b6.system.js} +1 -1
  220. package/dist/ionic/{p-1924f2e0.system.entry.js → p-016976a7.system.entry.js} +2 -2
  221. package/dist/ionic/{p-a0b28c69.system.entry.js → p-078fd095.system.entry.js} +1 -1
  222. package/dist/ionic/{p-ae35294f.system.entry.js → p-0ae25399.system.entry.js} +1 -1
  223. package/dist/ionic/p-0b955124.system.js +4 -0
  224. package/dist/ionic/{p-3481d54e.system.entry.js → p-0e29919c.system.entry.js} +1 -1
  225. package/dist/ionic/{p-8794fa00.system.entry.js → p-0eef8b34.system.entry.js} +1 -1
  226. package/dist/ionic/{p-fb9f8495.system.entry.js → p-0fd295ef.system.entry.js} +1 -1
  227. package/dist/ionic/{p-508a4c87.entry.js → p-108f730a.entry.js} +1 -1
  228. package/dist/ionic/{p-5d7e32ce.js → p-1aa7c019.js} +1 -1
  229. package/dist/ionic/{p-601e17b4.entry.js → p-1c531ca2.entry.js} +1 -1
  230. package/dist/ionic/{p-91cb3f9a.entry.js → p-1f583f73.entry.js} +1 -1
  231. package/dist/ionic/{p-ea25b4c8.system.entry.js → p-1f6cdf2c.system.entry.js} +1 -1
  232. package/dist/ionic/{p-717e2526.system.entry.js → p-20a6513f.system.entry.js} +1 -1
  233. package/dist/ionic/{p-cde3ac34.system.entry.js → p-20f7a91e.system.entry.js} +1 -1
  234. package/dist/ionic/{p-74deb358.system.js → p-25b08bc4.system.js} +1 -1
  235. package/dist/ionic/p-26138fed.js +4 -0
  236. package/dist/ionic/{p-bf05cbc7.entry.js → p-2da0a76c.entry.js} +1 -1
  237. package/dist/ionic/{p-70e34286.system.entry.js → p-2f66e177.system.entry.js} +1 -1
  238. package/dist/ionic/{p-5cb5f63d.system.entry.js → p-30c9e049.system.entry.js} +1 -1
  239. package/dist/ionic/{p-16a61810.entry.js → p-333f06ed.entry.js} +1 -1
  240. package/dist/ionic/{p-de55ec45.js → p-341b4519.js} +1 -1
  241. package/dist/ionic/{p-bd314f1e.system.entry.js → p-389ff4d2.system.entry.js} +1 -1
  242. package/dist/ionic/{p-1f16d040.entry.js → p-396c1a55.entry.js} +1 -1
  243. package/dist/ionic/{p-5e23bea8.system.entry.js → p-3a54c070.system.entry.js} +1 -1
  244. package/dist/ionic/{p-275705e5.entry.js → p-3a98f8db.entry.js} +1 -1
  245. package/dist/ionic/{p-502780e4.entry.js → p-3cdbaa49.entry.js} +1 -1
  246. package/dist/ionic/{p-49aba878.js → p-3eb2da31.js} +1 -1
  247. package/dist/ionic/{p-6525a8cd.system.js → p-3f028207.system.js} +1 -1
  248. package/dist/ionic/{p-43a5edee.entry.js → p-400574bf.entry.js} +1 -1
  249. package/dist/ionic/{p-18beebdf.system.entry.js → p-48af4316.system.entry.js} +2 -2
  250. package/dist/ionic/{p-ceceac26.js → p-4b2d5b9c.js} +1 -1
  251. package/dist/ionic/{p-a022b684.system.entry.js → p-4c256bc2.system.entry.js} +1 -1
  252. package/dist/ionic/{p-b7efc743.system.entry.js → p-4dfc27eb.system.entry.js} +1 -1
  253. package/dist/ionic/{p-396083cc.entry.js → p-51f08a9f.entry.js} +1 -1
  254. package/dist/ionic/{p-86813176.system.entry.js → p-58e3ae88.system.entry.js} +1 -1
  255. package/dist/ionic/{p-31450f73.entry.js → p-5b6aa59a.entry.js} +1 -1
  256. package/dist/ionic/{p-4fda5c35.entry.js → p-5e60dbc8.entry.js} +1 -1
  257. package/dist/ionic/{p-1636923f.system.js → p-5eea8b4c.system.js} +1 -1
  258. package/dist/ionic/{p-cd9a7017.system.entry.js → p-5f456b3c.system.entry.js} +1 -1
  259. package/dist/ionic/{p-2e1f014a.system.entry.js → p-61c0f8bf.system.entry.js} +1 -1
  260. package/dist/ionic/{p-a5951821.system.js → p-62a3c609.system.js} +1 -1
  261. package/dist/ionic/{p-f53d074d.system.entry.js → p-680f96e8.system.entry.js} +1 -1
  262. package/dist/ionic/p-68ae6719.system.entry.js +4 -0
  263. package/dist/ionic/{p-5b40d967.entry.js → p-6a34980d.entry.js} +1 -1
  264. package/dist/ionic/p-6b02edd6.js +4 -0
  265. package/dist/ionic/{p-afd6d696.system.entry.js → p-6f38d0c5.system.entry.js} +1 -1
  266. package/dist/ionic/{p-42a9f663.system.entry.js → p-70026e8f.system.entry.js} +1 -1
  267. package/dist/ionic/{p-72fa96bf.system.js → p-76893257.system.js} +1 -1
  268. package/dist/ionic/{p-c1797ec5.system.entry.js → p-78edc0cd.system.entry.js} +1 -1
  269. package/dist/ionic/{p-f0194418.system.entry.js → p-7c32fb95.system.entry.js} +1 -1
  270. package/dist/ionic/p-7c5e8706.entry.js +4 -0
  271. package/dist/ionic/{p-05d560ec.entry.js → p-7dc7514a.entry.js} +1 -1
  272. package/dist/ionic/{p-bd4787eb.entry.js → p-84513dfb.entry.js} +1 -1
  273. package/dist/ionic/{p-e04b9647.system.entry.js → p-84879f61.system.entry.js} +1 -1
  274. package/dist/ionic/{p-1131946f.system.entry.js → p-8569d759.system.entry.js} +1 -1
  275. package/dist/ionic/p-87ae4f6c.system.entry.js +4 -0
  276. package/dist/ionic/{p-eb07b88f.entry.js → p-8a671f16.entry.js} +1 -1
  277. package/dist/ionic/{p-123b4809.js → p-8ddc00f7.js} +1 -1
  278. package/dist/ionic/p-8e16390d.system.js +4 -0
  279. package/dist/ionic/{p-a8a56449.entry.js → p-8ebd9951.entry.js} +1 -1
  280. package/dist/ionic/p-8f1ce253.js +4 -0
  281. package/dist/ionic/{p-c747f89b.system.entry.js → p-92c2178e.system.entry.js} +1 -1
  282. package/dist/ionic/{p-9cd7ba27.system.js → p-95c44e02.system.js} +1 -1
  283. package/dist/ionic/{p-95d5a097.entry.js → p-97eca294.entry.js} +1 -1
  284. package/dist/ionic/{p-a85d9047.system.entry.js → p-9a6ab80a.system.entry.js} +1 -1
  285. package/dist/ionic/{p-e9f9388e.system.js → p-9beb5039.system.js} +1 -1
  286. package/dist/ionic/{p-5928fac9.system.entry.js → p-9f5b40c0.system.entry.js} +1 -1
  287. package/dist/ionic/{p-3d961d93.entry.js → p-9f6397ce.entry.js} +1 -1
  288. package/dist/ionic/{p-5c6a04bd.entry.js → p-a02b2d75.entry.js} +1 -1
  289. package/dist/ionic/{p-88e9052d.entry.js → p-a051c371.entry.js} +1 -1
  290. package/dist/ionic/{p-cb9e71e0.entry.js → p-a19f5ae1.entry.js} +1 -1
  291. package/dist/ionic/{p-7b1ed642.system.entry.js → p-a1bfaa5c.system.entry.js} +1 -1
  292. package/dist/ionic/{p-5c580e89.entry.js → p-a2ad515b.entry.js} +1 -1
  293. package/dist/ionic/{p-3079950e.entry.js → p-aa7ae6aa.entry.js} +1 -1
  294. package/dist/ionic/{p-caeefe16.system.entry.js → p-aaa4ffb3.system.entry.js} +1 -1
  295. package/dist/ionic/{p-abcedc15.system.entry.js → p-ac20160b.system.entry.js} +1 -1
  296. package/dist/ionic/{p-ba97a133.system.entry.js → p-ac979ebf.system.entry.js} +1 -1
  297. package/dist/ionic/{p-dbd70d97.system.entry.js → p-b37e4ee5.system.entry.js} +1 -1
  298. package/dist/ionic/{p-c771a6ef.entry.js → p-b498de69.entry.js} +1 -1
  299. package/dist/ionic/{p-30cd5e7b.js → p-b4d8fe47.js} +1 -1
  300. package/dist/ionic/{p-337ac0f5.entry.js → p-b8c4df21.entry.js} +1 -1
  301. package/dist/ionic/{p-89ca4c4b.system.js → p-b94882a9.system.js} +1 -1
  302. package/dist/ionic/{p-edcada2b.system.entry.js → p-b96699d3.system.entry.js} +1 -1
  303. package/dist/ionic/{p-64856c3c.system.entry.js → p-bc2c03d7.system.entry.js} +1 -1
  304. package/dist/ionic/{p-8f872991.entry.js → p-c3790581.entry.js} +1 -1
  305. package/dist/ionic/p-c5c3710c.js +4 -0
  306. package/dist/ionic/{p-2e14c533.system.js → p-c6fef62b.system.js} +1 -1
  307. package/dist/ionic/{p-aaaa615c.system.entry.js → p-c851b204.system.entry.js} +1 -1
  308. package/dist/ionic/{p-d39ab63d.entry.js → p-ccd419ae.entry.js} +1 -1
  309. package/dist/ionic/{p-68ba8e77.system.entry.js → p-cd055d60.system.entry.js} +1 -1
  310. package/dist/ionic/{p-027f3674.entry.js → p-ce2eabd5.entry.js} +1 -1
  311. package/dist/ionic/{p-b0ff8075.entry.js → p-d7260b87.entry.js} +1 -1
  312. package/dist/ionic/{p-f840d817.entry.js → p-d74ca358.entry.js} +1 -1
  313. package/dist/ionic/{p-657ccdd6.entry.js → p-d8607ede.entry.js} +1 -1
  314. package/dist/ionic/{p-c308f773.entry.js → p-d95c8e90.entry.js} +1 -1
  315. package/dist/ionic/{p-c11bab7e.entry.js → p-dbb4c012.entry.js} +1 -1
  316. package/dist/ionic/{p-0457213c.entry.js → p-dce9bc53.entry.js} +1 -1
  317. package/dist/ionic/{p-7173ba59.system.entry.js → p-df281664.system.entry.js} +1 -1
  318. package/dist/ionic/{p-2327064c.entry.js → p-df468a8f.entry.js} +1 -1
  319. package/dist/ionic/p-e1271366.js +5 -0
  320. package/dist/ionic/{p-b2595011.system.entry.js → p-e68980ff.system.entry.js} +1 -1
  321. package/dist/ionic/{p-1f19958f.system.entry.js → p-e6aaff14.system.entry.js} +1 -1
  322. package/dist/ionic/{p-dcb5711d.entry.js → p-ea8fbf09.entry.js} +1 -1
  323. package/dist/ionic/{p-a3df16b9.system.entry.js → p-eda7a1db.system.entry.js} +1 -1
  324. package/dist/ionic/{p-64db1331.entry.js → p-efe9180b.entry.js} +1 -1
  325. package/dist/ionic/{p-64761c90.entry.js → p-f1ad3b3d.entry.js} +1 -1
  326. package/dist/ionic/{p-94ff532b.entry.js → p-f1cc690e.entry.js} +1 -1
  327. package/dist/ionic/{p-8e651c29.entry.js → p-f46775e4.entry.js} +1 -1
  328. package/dist/ionic/p-f74afe3b.entry.js +4 -0
  329. package/dist/ionic/{p-c39cc96d.system.entry.js → p-f7b43141.system.entry.js} +1 -1
  330. package/dist/ionic/{p-3a7de59c.entry.js → p-f88dd429.entry.js} +1 -1
  331. package/dist/ionic/p-f89ae259.js +4 -0
  332. package/dist/ionic/{p-9056778e.system.entry.js → p-f97b9cdd.system.entry.js} +1 -1
  333. package/dist/ionic/{p-9ec7208d.system.js → p-fd36799d.system.js} +1 -1
  334. package/dist/ionic/{p-7ce40e7b.entry.js → p-fd3f475f.entry.js} +1 -1
  335. package/dist/ionic/{p-d4cadd34.system.js → p-fd9a9db3.system.js} +1 -1
  336. package/dist/ionic/{p-b6279412.entry.js → p-fe92da17.entry.js} +1 -1
  337. package/dist/types/components/action-sheet/action-sheet.d.ts +0 -4
  338. package/dist/types/components/alert/alert.d.ts +0 -4
  339. package/dist/types/components/datetime/datetime-interface.d.ts +10 -0
  340. package/dist/types/components/datetime/datetime.d.ts +16 -1
  341. package/dist/types/components/datetime/utils/format.d.ts +7 -1
  342. package/dist/types/components/loading/loading.d.ts +0 -4
  343. package/dist/types/components/modal/modal.d.ts +0 -4
  344. package/dist/types/components/picker/picker.d.ts +0 -4
  345. package/dist/types/components/popover/popover.d.ts +0 -4
  346. package/dist/types/components/toast/toast.d.ts +0 -4
  347. package/dist/types/components.d.ts +17 -9
  348. package/hydrate/index.d.ts +1 -1
  349. package/hydrate/index.js +136 -271
  350. package/package.json +4 -4
  351. package/dist/esm-es5/app-globals-5cf6195b.js +0 -4
  352. package/dist/esm-es5/data-0f3ab200.js +0 -4
  353. package/dist/esm-es5/md.transition-564937a7.js +0 -4
  354. package/dist/ionic/p-0b34d3a7.system.js +0 -4
  355. package/dist/ionic/p-0e23c289.system.entry.js +0 -4
  356. package/dist/ionic/p-21ca1f1c.js +0 -4
  357. package/dist/ionic/p-23c73017.entry.js +0 -4
  358. package/dist/ionic/p-5c2ae448.js +0 -4
  359. package/dist/ionic/p-7330c044.system.js +0 -4
  360. package/dist/ionic/p-a6e465f5.entry.js +0 -4
  361. package/dist/ionic/p-bdca4784.js +0 -4
  362. package/dist/ionic/p-dbcba5a2.js +0 -4
  363. package/dist/ionic/p-e81bf09e.system.entry.js +0 -4
  364. package/dist/ionic/p-ed7a529f.js +0 -5
  365. package/dist/ionic/p-f7dce541.js +0 -4
@@ -177,10 +177,6 @@ const ActionSheet = /*@__PURE__*/ proxyCustomElement(class ActionSheet extends H
177
177
  * This can be useful in a button handler for determining which button was
178
178
  * clicked to dismiss the action sheet.
179
179
  * Some examples include: ``"cancel"`, `"destructive"`, "selected"`, and `"backdrop"`.
180
- *
181
- * This is a no-op if the overlay has not been presented yet. If you want
182
- * to remove an overlay from the DOM that was never presented, use the
183
- * [remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method.
184
180
  */
185
181
  async dismiss(data, role) {
186
182
  const unlock = await this.lockController.lock();
@@ -289,12 +285,12 @@ const ActionSheet = /*@__PURE__*/ proxyCustomElement(class ActionSheet extends H
289
285
  const cancelButton = allButtons.find((b) => b.role === 'cancel');
290
286
  const buttons = allButtons.filter((b) => b.role !== 'cancel');
291
287
  const headerID = `action-sheet-${overlayIndex}-header`;
292
- return (h(Host, Object.assign({ key: 'cd141d12d7d86d3402fd220c4afb61cdbf064c04', role: "dialog", "aria-modal": "true", "aria-labelledby": header !== undefined ? headerID : null, tabindex: "-1" }, htmlAttributes, { style: {
288
+ return (h(Host, Object.assign({ key: '98851ef73ef85bb1e364111f090480102929a197', role: "dialog", "aria-modal": "true", "aria-labelledby": header !== undefined ? headerID : null, tabindex: "-1" }, htmlAttributes, { style: {
293
289
  zIndex: `${20000 + this.overlayIndex}`,
294
- }, class: Object.assign(Object.assign({ [mode]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'action-sheet-translucent': this.translucent }), onIonActionSheetWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }), h("ion-backdrop", { key: 'b6a051e2cf5e101edbf59c8a40a04d8f7107fb3c', tappable: this.backdropDismiss }), h("div", { key: '5bfa2b37a417aaff3776f06d92a8544dfcbf714f', tabindex: "0" }), h("div", { key: '77d5a217803fd7be8f8dbedcd0ef5e59f0fd9800', class: "action-sheet-wrapper ion-overlay-wrapper", ref: (el) => (this.wrapperEl = el) }, h("div", { key: '3901d56215f05cdab074e2ec321391281a165097', class: "action-sheet-container" }, h("div", { key: '275f5c7981b2ee44fb632b3d137c7209cbfcf45c', class: "action-sheet-group", ref: (el) => (this.groupEl = el) }, header !== undefined && (h("div", { id: headerID, class: {
290
+ }, class: Object.assign(Object.assign({ [mode]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'action-sheet-translucent': this.translucent }), onIonActionSheetWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }), h("ion-backdrop", { key: 'e2520342ca16aae4dac0bd7bff59b2150aeb2171', tappable: this.backdropDismiss }), h("div", { key: 'c95f2ec4edde1dc3a8860e68b4a86b82f6797aee', tabindex: "0" }), h("div", { key: '7af9edad368e308508801c8ef2225928ced63159', class: "action-sheet-wrapper ion-overlay-wrapper", ref: (el) => (this.wrapperEl = el) }, h("div", { key: 'd1d92b4d1814d34eb7d8134ff77ee260ca521a6d', class: "action-sheet-container" }, h("div", { key: 'cc774b45a9992e95bfee788cb484d99364b76d22', class: "action-sheet-group", ref: (el) => (this.groupEl = el) }, header !== undefined && (h("div", { id: headerID, class: {
295
291
  'action-sheet-title': true,
296
292
  'action-sheet-has-sub-title': this.subHeader !== undefined,
297
- } }, header, this.subHeader && h("div", { class: "action-sheet-sub-title" }, this.subHeader))), buttons.map((b) => (h("button", Object.assign({}, b.htmlAttributes, { type: "button", id: b.id, class: buttonClass(b), onClick: () => this.buttonClick(b) }), h("span", { class: "action-sheet-button-inner" }, b.icon && h("ion-icon", { icon: b.icon, "aria-hidden": "true", lazy: false, class: "action-sheet-icon" }), b.text), mode === 'md' && h("ion-ripple-effect", null))))), cancelButton && (h("div", { class: "action-sheet-group action-sheet-group-cancel" }, h("button", Object.assign({}, cancelButton.htmlAttributes, { type: "button", class: buttonClass(cancelButton), onClick: () => this.buttonClick(cancelButton) }), h("span", { class: "action-sheet-button-inner" }, cancelButton.icon && (h("ion-icon", { icon: cancelButton.icon, "aria-hidden": "true", lazy: false, class: "action-sheet-icon" })), cancelButton.text), mode === 'md' && h("ion-ripple-effect", null)))))), h("div", { key: '4285893438675be9b40838a93c2ff382a1074cd3', tabindex: "0" })));
293
+ } }, header, this.subHeader && h("div", { class: "action-sheet-sub-title" }, this.subHeader))), buttons.map((b) => (h("button", Object.assign({}, b.htmlAttributes, { type: "button", id: b.id, class: buttonClass(b), onClick: () => this.buttonClick(b) }), h("span", { class: "action-sheet-button-inner" }, b.icon && h("ion-icon", { icon: b.icon, "aria-hidden": "true", lazy: false, class: "action-sheet-icon" }), b.text), mode === 'md' && h("ion-ripple-effect", null))))), cancelButton && (h("div", { class: "action-sheet-group action-sheet-group-cancel" }, h("button", Object.assign({}, cancelButton.htmlAttributes, { type: "button", class: buttonClass(cancelButton), onClick: () => this.buttonClick(cancelButton) }), h("span", { class: "action-sheet-button-inner" }, cancelButton.icon && (h("ion-icon", { icon: cancelButton.icon, "aria-hidden": "true", lazy: false, class: "action-sheet-icon" })), cancelButton.text), mode === 'md' && h("ion-ripple-effect", null)))))), h("div", { key: '9a013adda7dec101cf0c90feb02f5b7f5582a0b3', tabindex: "0" })));
298
294
  }
299
295
  get el() { return this; }
300
296
  static get watchers() { return {
@@ -315,10 +315,6 @@ const Alert = /*@__PURE__*/ proxyCustomElement(class Alert extends HTMLElement {
315
315
  * This can be useful in a button handler for determining which button was
316
316
  * clicked to dismiss the alert.
317
317
  * Some examples include: ``"cancel"`, `"destructive"`, "selected"`, and `"backdrop"`.
318
- *
319
- * This is a no-op if the overlay has not been presented yet. If you want
320
- * to remove an overlay from the DOM that was never presented, use the
321
- * [remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method.
322
318
  */
323
319
  async dismiss(data, role) {
324
320
  const unlock = await this.lockController.lock();
@@ -486,9 +482,9 @@ const Alert = /*@__PURE__*/ proxyCustomElement(class Alert extends HTMLElement {
486
482
  * If neither is defined, don't set aria-labelledby.
487
483
  */
488
484
  const ariaLabelledBy = header ? hdrId : subHeader ? subHdrId : null;
489
- return (h(Host, Object.assign({ key: '4b7f7880dc5f39aa9b61981af0a821ac0350af7f', role: role, "aria-modal": "true", "aria-labelledby": ariaLabelledBy, "aria-describedby": message !== undefined ? msgId : null, tabindex: "-1" }, htmlAttributes, { style: {
485
+ return (h(Host, Object.assign({ key: '8327e1aef6c404c2021d43aaa542d86e839817f5', role: role, "aria-modal": "true", "aria-labelledby": ariaLabelledBy, "aria-describedby": message !== undefined ? msgId : null, tabindex: "-1" }, htmlAttributes, { style: {
490
486
  zIndex: `${20000 + overlayIndex}`,
491
- }, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'alert-translucent': this.translucent }), onIonAlertWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }), h("ion-backdrop", { key: '961a2684013ac61d59882914fd8d759ddb542fe7', tappable: this.backdropDismiss }), h("div", { key: '2ec08c3719b3cd8a4cae09d2c6ac778ffad5f940', tabindex: "0" }), h("div", { key: 'ee543683d20693c9a9497aca4d41f032aa580c9c', class: "alert-wrapper ion-overlay-wrapper", ref: (el) => (this.wrapperEl = el) }, h("div", { key: '55015102b67d080249a8859fc8788f3a82d5ead9', class: "alert-head" }, header && (h("h2", { id: hdrId, class: "alert-title" }, header)), subHeader && (h("h2", { id: subHdrId, class: "alert-sub-title" }, subHeader))), this.renderAlertMessage(msgId), this.renderAlertInputs(), this.renderAlertButtons()), h("div", { key: 'df7bcfb0cb41965f169de05edd631a050d5ce648', tabindex: "0" })));
487
+ }, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'alert-translucent': this.translucent }), onIonAlertWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }), h("ion-backdrop", { key: '814a4e1b4f7560026b089b762c68401b6277355e', tappable: this.backdropDismiss }), h("div", { key: 'b31ce08019e7223a098d18cb857f72eddc245e98', tabindex: "0" }), h("div", { key: '77efa4b9f7062f55ba0998a09a24550ec0b9b4f5', class: "alert-wrapper ion-overlay-wrapper", ref: (el) => (this.wrapperEl = el) }, h("div", { key: '648e0768610ee57f9e5c84b8955da497ec9b0b82', class: "alert-head" }, header && (h("h2", { id: hdrId, class: "alert-title" }, header)), subHeader && (h("h2", { id: subHdrId, class: "alert-sub-title" }, subHeader))), this.renderAlertMessage(msgId), this.renderAlertInputs(), this.renderAlertButtons()), h("div", { key: 'f3d752cce77ca021dc959611ad5078b94b7f3cec', tabindex: "0" })));
492
488
  }
493
489
  get el() { return this; }
494
490
  static get watchers() { return {
@@ -832,7 +832,25 @@ const getFormattedDayPeriod = (dayPeriod) => {
832
832
  }
833
833
  return dayPeriod.toUpperCase();
834
834
  };
835
- const getLocalizedTime = (locale, refParts, hourCycle) => {
835
+ /**
836
+ * Including time zone options may lead to the rendered text showing a
837
+ * different time from what was selected in the Datetime, which could cause
838
+ * confusion.
839
+ */
840
+ const stripTimeZone = (formatOptions) => {
841
+ /**
842
+ * We do not want to display the time zone name
843
+ */
844
+ delete formatOptions.timeZoneName;
845
+ /**
846
+ * Setting the time zone to UTC ensures that the value shown is always the
847
+ * same as what was selected and safeguards against older Safari bugs with
848
+ * Intl.DateTimeFormat.
849
+ */
850
+ formatOptions.timeZone = 'UTC';
851
+ return formatOptions;
852
+ };
853
+ const getLocalizedTime = (locale, refParts, hourCycle, formatOptions) => {
836
854
  const timeParts = {
837
855
  hour: refParts.hour,
838
856
  minute: refParts.minute,
@@ -840,28 +858,17 @@ const getLocalizedTime = (locale, refParts, hourCycle) => {
840
858
  if (timeParts.hour === undefined || timeParts.minute === undefined) {
841
859
  return 'Invalid Time';
842
860
  }
843
- return new Intl.DateTimeFormat(locale, {
844
- hour: 'numeric',
845
- minute: 'numeric',
846
- /**
847
- * Setting the timeZone to UTC prevents
848
- * new Intl.DatetimeFormat from subtracting
849
- * the user's current timezone offset
850
- * when formatting the time.
851
- */
852
- timeZone: 'UTC',
861
+ const defaultFormatOptions = { hour: 'numeric', minute: 'numeric' };
862
+ /**
863
+ * If any options are provided, don't use any of the defaults.
864
+ */
865
+ const options = stripTimeZone(formatOptions !== null && formatOptions !== void 0 ? formatOptions : defaultFormatOptions);
866
+ return new Intl.DateTimeFormat(locale, Object.assign(Object.assign({}, options), {
853
867
  /**
854
868
  * We use hourCycle here instead of hour12 due to:
855
869
  * https://bugs.chromium.org/p/chromium/issues/detail?id=1347316&q=hour12&can=2
856
870
  */
857
- hourCycle,
858
- /**
859
- * Setting Z at the end indicates that this
860
- * date string is in the UTC time zone. This
861
- * prevents new Date from adding the time zone
862
- * offset when getting the ISO string.
863
- */
864
- }).format(new Date(convertDataToISO(Object.assign({
871
+ hourCycle })).format(new Date(convertDataToISO(Object.assign({
865
872
  /**
866
873
  * JS uses a simplified ISO 8601 format which allows for
867
874
  * date-only formats and date-time formats, but not
@@ -947,14 +954,6 @@ const generateDayAriaLabel = (locale, today, refParts) => {
947
954
  */
948
955
  return today ? `Today, ${labelString}` : labelString;
949
956
  };
950
- /**
951
- * Gets the day of the week, month, and day
952
- * Used for the header in MD mode.
953
- */
954
- const getMonthAndDay = (locale, refParts) => {
955
- const date = getNormalizedDate(refParts);
956
- return new Intl.DateTimeFormat(locale, { weekday: 'short', month: 'short', day: 'numeric', timeZone: 'UTC' }).format(date);
957
- };
958
957
  /**
959
958
  * Given a locale and a date object,
960
959
  * return a formatted string that includes
@@ -965,15 +964,6 @@ const getMonthAndYear = (locale, refParts) => {
965
964
  const date = getNormalizedDate(refParts);
966
965
  return new Intl.DateTimeFormat(locale, { month: 'long', year: 'numeric', timeZone: 'UTC' }).format(date);
967
966
  };
968
- /**
969
- * Given a locale and a date object,
970
- * return a formatted string that includes
971
- * the short month, numeric day, and full year.
972
- * Example: Apr 22, 2021
973
- */
974
- const getMonthDayAndYear = (locale, refParts) => {
975
- return getLocalizedDateTime(locale, refParts, { month: 'short', day: 'numeric', year: 'numeric' });
976
- };
977
967
  /**
978
968
  * Given a locale and a date object,
979
969
  * return a formatted string that includes
@@ -1023,7 +1013,7 @@ const getNormalizedDate = (refParts) => {
1023
1013
  */
1024
1014
  const getLocalizedDateTime = (locale, refParts, options) => {
1025
1015
  const date = getNormalizedDate(refParts);
1026
- return getDateTimeFormat(locale, options).format(date);
1016
+ return getDateTimeFormat(locale, stripTimeZone(options)).format(date);
1027
1017
  };
1028
1018
  /**
1029
1019
  * Given a locale, DatetimeParts, and options
@@ -1622,4 +1612,4 @@ const getTimeColumnsData = (locale, refParts, hourCycle, minParts, maxParts, all
1622
1612
  };
1623
1613
  };
1624
1614
 
1625
- export { getNumDaysInMonth as A, getCombinedDateColumnData as B, getMonthColumnData as C, getDayColumnData as D, getYearColumnData as E, isMonthFirstLocale as F, getTimeColumnsData as G, isLocaleDayPeriodRTL as H, getMonthAndYear as I, getDaysOfWeek as J, getDaysOfMonth as K, getHourCycle as L, getLocalizedTime as M, getMonthAndDay as N, formatValue as O, clampDate as P, parseAmPm as Q, calculateHourFromAMPM as R, getLocalizedDateTime as S, getMonthDayAndYear as T, getDay as a, isAfter as b, isSameDay as c, getPreviousMonth as d, getNextMonth as e, getPartsFromCalendarDay as f, generateDayAriaLabel as g, getNextYear as h, isBefore as i, getPreviousYear as j, getEndOfWeek as k, getStartOfWeek as l, getPreviousDay as m, getNextDay as n, getPreviousWeek as o, getNextWeek as p, parseMinParts as q, parseMaxParts as r, parseDate as s, convertToArrayOfNumbers as t, convertDataToISO as u, validateParts as v, warnIfValueOutOfBounds as w, getToday as x, getClosestValidDate as y, generateMonths as z };
1615
+ export { getNumDaysInMonth as A, getCombinedDateColumnData as B, getMonthColumnData as C, getDayColumnData as D, getYearColumnData as E, isMonthFirstLocale as F, getTimeColumnsData as G, isLocaleDayPeriodRTL as H, getMonthAndYear as I, getDaysOfWeek as J, getDaysOfMonth as K, getHourCycle as L, getLocalizedTime as M, getLocalizedDateTime as N, formatValue as O, clampDate as P, parseAmPm as Q, calculateHourFromAMPM as R, getDay as a, isAfter as b, isSameDay as c, getPreviousMonth as d, getNextMonth as e, getPartsFromCalendarDay as f, generateDayAriaLabel as g, getNextYear as h, isBefore as i, getPreviousYear as j, getEndOfWeek as k, getStartOfWeek as l, getPreviousDay as m, getNextDay as n, getPreviousWeek as o, getNextWeek as p, parseMinParts as q, parseMaxParts as r, parseDate as s, convertToArrayOfNumbers as t, convertDataToISO as u, validateParts as v, warnIfValueOutOfBounds as w, getToday as x, getClosestValidDate as y, generateMonths as z };
@@ -6,7 +6,7 @@ import { a as addEventListener, c as componentOnReady } from './helpers.js';
6
6
  import { a as printIonError } from './index6.js';
7
7
  import { c as createColorClasses } from './theme.js';
8
8
  import { b as getIonMode } from './ionic-global.js';
9
- import { s as parseDate, x as getToday, L as getHourCycle, S as getLocalizedDateTime, I as getMonthAndYear, M as getLocalizedTime, T as getMonthDayAndYear } from './data.js';
9
+ import { s as parseDate, x as getToday, L as getHourCycle, N as getLocalizedDateTime, M as getLocalizedTime } from './data.js';
10
10
  import { d as defineCustomElement$2 } from './ripple-effect.js';
11
11
 
12
12
  const iosDatetimeButtonCss = ":host{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}:host button{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;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;margin-top:0px;margin-bottom:0px;position:relative;-webkit-transition:150ms color ease-in-out;transition:150ms color ease-in-out;border:none;background:var(--ion-color-step-300, #edeef0);color:var(--ion-text-color, #000);font-family:inherit;font-size:1rem;cursor:pointer;overflow:hidden;-webkit-appearance:none;-moz-appearance:none;appearance:none}:host(.time-active) #time-button,:host(.date-active) #date-button{color:var(--ion-color-base)}:host(.datetime-button-disabled){pointer-events:none}:host(.datetime-button-disabled) button{opacity:0.4}";
@@ -43,11 +43,12 @@ const DatetimeButton = /*@__PURE__*/ proxyCustomElement(class DatetimeButton ext
43
43
  * to the locale specified on ion-datetime.
44
44
  */
45
45
  this.setDateTimeText = () => {
46
+ var _a, _b, _c, _d, _e;
46
47
  const { datetimeEl, datetimePresentation } = this;
47
48
  if (!datetimeEl) {
48
49
  return;
49
50
  }
50
- const { value, locale, hourCycle, preferWheel, multiple, titleSelectedDatesFormatter } = datetimeEl;
51
+ const { value, locale, formatOptions, hourCycle, preferWheel, multiple, titleSelectedDatesFormatter } = datetimeEl;
51
52
  const parsedValues = this.getParsedDateValues(value);
52
53
  /**
53
54
  * Both ion-datetime and ion-datetime-button default
@@ -70,8 +71,8 @@ const DatetimeButton = /*@__PURE__*/ proxyCustomElement(class DatetimeButton ext
70
71
  switch (datetimePresentation) {
71
72
  case 'date-time':
72
73
  case 'time-date':
73
- const dateText = getMonthDayAndYear(locale, firstParsedDatetime);
74
- const timeText = getLocalizedTime(locale, firstParsedDatetime, computedHourCycle);
74
+ const dateText = getLocalizedDateTime(locale, firstParsedDatetime, (_a = formatOptions === null || formatOptions === void 0 ? void 0 : formatOptions.date) !== null && _a !== void 0 ? _a : { month: 'short', day: 'numeric', year: 'numeric' });
75
+ const timeText = getLocalizedTime(locale, firstParsedDatetime, computedHourCycle, formatOptions === null || formatOptions === void 0 ? void 0 : formatOptions.time);
75
76
  if (preferWheel) {
76
77
  this.dateText = `${dateText} ${timeText}`;
77
78
  }
@@ -94,20 +95,20 @@ const DatetimeButton = /*@__PURE__*/ proxyCustomElement(class DatetimeButton ext
94
95
  this.dateText = headerText;
95
96
  }
96
97
  else {
97
- this.dateText = getMonthDayAndYear(locale, firstParsedDatetime);
98
+ this.dateText = getLocalizedDateTime(locale, firstParsedDatetime, (_b = formatOptions === null || formatOptions === void 0 ? void 0 : formatOptions.date) !== null && _b !== void 0 ? _b : { month: 'short', day: 'numeric', year: 'numeric' });
98
99
  }
99
100
  break;
100
101
  case 'time':
101
- this.timeText = getLocalizedTime(locale, firstParsedDatetime, computedHourCycle);
102
+ this.timeText = getLocalizedTime(locale, firstParsedDatetime, computedHourCycle, formatOptions === null || formatOptions === void 0 ? void 0 : formatOptions.time);
102
103
  break;
103
104
  case 'month-year':
104
- this.dateText = getMonthAndYear(locale, firstParsedDatetime);
105
+ this.dateText = getLocalizedDateTime(locale, firstParsedDatetime, (_c = formatOptions === null || formatOptions === void 0 ? void 0 : formatOptions.date) !== null && _c !== void 0 ? _c : { month: 'long', year: 'numeric' });
105
106
  break;
106
107
  case 'month':
107
- this.dateText = getLocalizedDateTime(locale, firstParsedDatetime, { month: 'long' });
108
+ this.dateText = getLocalizedDateTime(locale, firstParsedDatetime, (_d = formatOptions === null || formatOptions === void 0 ? void 0 : formatOptions.time) !== null && _d !== void 0 ? _d : { month: 'long' });
108
109
  break;
109
110
  case 'year':
110
- this.dateText = getLocalizedDateTime(locale, firstParsedDatetime, { year: 'numeric' });
111
+ this.dateText = getLocalizedDateTime(locale, firstParsedDatetime, (_e = formatOptions === null || formatOptions === void 0 ? void 0 : formatOptions.time) !== null && _e !== void 0 ? _e : { year: 'numeric' });
111
112
  break;
112
113
  }
113
114
  };
@@ -336,7 +337,7 @@ const DatetimeButton = /*@__PURE__*/ proxyCustomElement(class DatetimeButton ext
336
337
  render() {
337
338
  const { color, dateText, timeText, selectedButton, datetimeActive, disabled } = this;
338
339
  const mode = getIonMode(this);
339
- return (h(Host, { key: '36fe34d4225940611d74bdef5b954d54749d2dca', class: createColorClasses(color, {
340
+ return (h(Host, { key: '861a08f4a239de771875aee9b505e06ac7064b32', class: createColorClasses(color, {
340
341
  [mode]: true,
341
342
  [`${selectedButton}-active`]: datetimeActive,
342
343
  ['datetime-button-disabled']: disabled,
@@ -9,7 +9,7 @@ import { i as isRTL } from './dir.js';
9
9
  import { c as createColorClasses } from './theme.js';
10
10
  import { a as chevronBack, f as chevronForward, c as chevronDown, g as caretUpSharp, h as caretDownSharp } from './index7.js';
11
11
  import { b as getIonMode } from './ionic-global.js';
12
- import { g as generateDayAriaLabel, a as getDay, i as isBefore, b as isAfter, c as isSameDay, d as getPreviousMonth, e as getNextMonth, v as validateParts, f as getPartsFromCalendarDay, h as getNextYear, j as getPreviousYear, k as getEndOfWeek, l as getStartOfWeek, m as getPreviousDay, n as getNextDay, o as getPreviousWeek, p as getNextWeek, q as parseMinParts, r as parseMaxParts, s as parseDate, w as warnIfValueOutOfBounds, t as convertToArrayOfNumbers, u as convertDataToISO, x as getToday, y as getClosestValidDate, z as generateMonths, A as getNumDaysInMonth, B as getCombinedDateColumnData, C as getMonthColumnData, D as getDayColumnData, E as getYearColumnData, F as isMonthFirstLocale, G as getTimeColumnsData, H as isLocaleDayPeriodRTL, I as getMonthAndYear, J as getDaysOfWeek, K as getDaysOfMonth, L as getHourCycle, M as getLocalizedTime, N as getMonthAndDay, O as formatValue, P as clampDate, Q as parseAmPm, R as calculateHourFromAMPM } from './data.js';
12
+ import { g as generateDayAriaLabel, a as getDay, i as isBefore, b as isAfter, c as isSameDay, d as getPreviousMonth, e as getNextMonth, v as validateParts, f as getPartsFromCalendarDay, h as getNextYear, j as getPreviousYear, k as getEndOfWeek, l as getStartOfWeek, m as getPreviousDay, n as getNextDay, o as getPreviousWeek, p as getNextWeek, q as parseMinParts, r as parseMaxParts, s as parseDate, w as warnIfValueOutOfBounds, t as convertToArrayOfNumbers, u as convertDataToISO, x as getToday, y as getClosestValidDate, z as generateMonths, A as getNumDaysInMonth, B as getCombinedDateColumnData, C as getMonthColumnData, D as getDayColumnData, E as getYearColumnData, F as isMonthFirstLocale, G as getTimeColumnsData, H as isLocaleDayPeriodRTL, I as getMonthAndYear, J as getDaysOfWeek, K as getDaysOfMonth, L as getHourCycle, M as getLocalizedTime, N as getLocalizedDateTime, O as formatValue, P as clampDate, Q as parseAmPm, R as calculateHourFromAMPM } from './data.js';
13
13
  import { d as defineCustomElement$c } from './backdrop.js';
14
14
  import { d as defineCustomElement$b } from './button.js';
15
15
  import { d as defineCustomElement$a } from './buttons.js';
@@ -757,6 +757,34 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
757
757
  this.resolveForceDateScrolling = undefined;
758
758
  this.forceRenderDate = undefined;
759
759
  };
760
+ this.checkForPresentationFormatMismatch = () => {
761
+ const { formatOptions, presentation } = this;
762
+ // formatOptions is not required
763
+ if (!formatOptions)
764
+ return;
765
+ // If formatOptions is provided, the date and/or time objects are required, depending on the presentation
766
+ switch (presentation) {
767
+ case 'date':
768
+ case 'month-year':
769
+ case 'month':
770
+ case 'year':
771
+ if (formatOptions.date === undefined) {
772
+ printIonWarning(`Datetime: The '${presentation}' presentation requires a date object in formatOptions.`, this.el);
773
+ }
774
+ break;
775
+ case 'time':
776
+ if (formatOptions.time === undefined) {
777
+ printIonWarning(`Datetime: The 'time' presentation requires a time object in formatOptions.`, this.el);
778
+ }
779
+ break;
780
+ case 'date-time':
781
+ case 'time-date':
782
+ if (formatOptions.date === undefined || formatOptions.time === undefined) {
783
+ printIonWarning(`Datetime: The '${presentation}' presentation requires both a date and time object in formatOptions.`, this.el);
784
+ }
785
+ break;
786
+ }
787
+ };
760
788
  this.onFocus = () => {
761
789
  this.ionFocus.emit();
762
790
  };
@@ -815,6 +843,7 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
815
843
  this.color = 'primary';
816
844
  this.name = this.inputId;
817
845
  this.disabled = false;
846
+ this.formatOptions = undefined;
818
847
  this.readonly = false;
819
848
  this.isDateEnabled = undefined;
820
849
  this.min = undefined;
@@ -842,6 +871,10 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
842
871
  this.size = 'fixed';
843
872
  this.preferWheel = false;
844
873
  }
874
+ formatOptionsChanged() {
875
+ this.checkForPresentationFormatMismatch();
876
+ this.errorIfTimeZoneProvided();
877
+ }
845
878
  disabledChanged() {
846
879
  this.emitStyle();
847
880
  }
@@ -851,6 +884,9 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
851
884
  maxChanged() {
852
885
  this.processMaxParts();
853
886
  }
887
+ presentationChanged() {
888
+ this.checkForPresentationFormatMismatch();
889
+ }
854
890
  get isGridStyle() {
855
891
  const { presentation, preferWheel } = this;
856
892
  const hasDatePresentation = presentation === 'date' || presentation === 'date-time' || presentation === 'time-date';
@@ -1086,7 +1122,7 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
1086
1122
  });
1087
1123
  }
1088
1124
  componentWillLoad() {
1089
- const { el, highlightedDates, multiple, presentation, preferWheel } = this;
1125
+ const { el, formatOptions, highlightedDates, multiple, presentation, preferWheel } = this;
1090
1126
  if (multiple) {
1091
1127
  if (presentation !== 'date') {
1092
1128
  printIonWarning('Multiple date selection is only supported for presentation="date".', el);
@@ -1103,6 +1139,10 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
1103
1139
  printIonWarning('The highlightedDates property is not supported with preferWheel="true".', el);
1104
1140
  }
1105
1141
  }
1142
+ if (formatOptions) {
1143
+ this.checkForPresentationFormatMismatch();
1144
+ this.errorIfTimeZoneProvided();
1145
+ }
1106
1146
  const hourValues = (this.parsedHourValues = convertToArrayOfNumbers(this.hourValues));
1107
1147
  const minuteValues = (this.parsedMinuteValues = convertToArrayOfNumbers(this.minuteValues));
1108
1148
  const monthValues = (this.parsedMonthValues = convertToArrayOfNumbers(this.monthValues));
@@ -1124,6 +1164,21 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
1124
1164
  this.processValue(this.value);
1125
1165
  this.emitStyle();
1126
1166
  }
1167
+ /**
1168
+ * If a time zone is provided in the format options, the rendered text could
1169
+ * differ from what was selected in the Datetime, which could cause
1170
+ * confusion.
1171
+ */
1172
+ errorIfTimeZoneProvided() {
1173
+ var _a, _b, _c, _d;
1174
+ const { formatOptions } = this;
1175
+ if (((_a = formatOptions === null || formatOptions === void 0 ? void 0 : formatOptions.date) === null || _a === void 0 ? void 0 : _a.timeZone) ||
1176
+ ((_b = formatOptions === null || formatOptions === void 0 ? void 0 : formatOptions.date) === null || _b === void 0 ? void 0 : _b.timeZoneName) ||
1177
+ ((_c = formatOptions === null || formatOptions === void 0 ? void 0 : formatOptions.time) === null || _c === void 0 ? void 0 : _c.timeZone) ||
1178
+ ((_d = formatOptions === null || formatOptions === void 0 ? void 0 : formatOptions.time) === null || _d === void 0 ? void 0 : _d.timeZoneName)) {
1179
+ printIonWarning('Datetime: "timeZone" and "timeZoneName" are not supported in "formatOptions".');
1180
+ }
1181
+ }
1127
1182
  emitStyle() {
1128
1183
  this.ionStyle.emit({
1129
1184
  interactive: true,
@@ -1610,7 +1665,7 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
1610
1665
  return h("slot", { name: "time-label" }, "Time");
1611
1666
  }
1612
1667
  renderTimeOverlay() {
1613
- const { disabled, hourCycle, isTimePopoverOpen, locale } = this;
1668
+ const { disabled, hourCycle, isTimePopoverOpen, locale, formatOptions } = this;
1614
1669
  const computedHourCycle = getHourCycle(locale, hourCycle);
1615
1670
  const activePart = this.getActivePartsWithFallback();
1616
1671
  return [
@@ -1630,7 +1685,7 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
1630
1685
  await popoverRef.onWillDismiss();
1631
1686
  this.isTimePopoverOpen = false;
1632
1687
  }
1633
- } }, getLocalizedTime(locale, activePart, computedHourCycle)),
1688
+ } }, getLocalizedTime(locale, activePart, computedHourCycle, formatOptions === null || formatOptions === void 0 ? void 0 : formatOptions.time)),
1634
1689
  h("ion-popover", { alignment: "center", translucent: true, overlayIndex: 1, arrow: false, onWillPresent: (ev) => {
1635
1690
  /**
1636
1691
  * Intersection Observers do not consistently fire between Blink and Webkit
@@ -1653,7 +1708,8 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
1653
1708
  ];
1654
1709
  }
1655
1710
  getHeaderSelectedDateText() {
1656
- const { activeParts, multiple, titleSelectedDatesFormatter } = this;
1711
+ var _a;
1712
+ const { activeParts, formatOptions, multiple, titleSelectedDatesFormatter } = this;
1657
1713
  const isArray = Array.isArray(activeParts);
1658
1714
  let headerText;
1659
1715
  if (multiple && isArray && activeParts.length !== 1) {
@@ -1669,7 +1725,7 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
1669
1725
  }
1670
1726
  else {
1671
1727
  // for exactly 1 day selected (multiple set or not), show a formatted version of that
1672
- headerText = getMonthAndDay(this.locale, this.getActivePartsWithFallback());
1728
+ headerText = getLocalizedDateTime(this.locale, this.getActivePartsWithFallback(), (_a = formatOptions === null || formatOptions === void 0 ? void 0 : formatOptions.date) !== null && _a !== void 0 ? _a : { weekday: 'short', month: 'short', day: 'numeric' });
1673
1729
  }
1674
1730
  return headerText;
1675
1731
  }
@@ -1758,7 +1814,7 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
1758
1814
  const hasDatePresentation = presentation === 'date' || presentation === 'date-time' || presentation === 'time-date';
1759
1815
  const hasWheelVariant = hasDatePresentation && preferWheel;
1760
1816
  renderHiddenInput(true, el, name, formatValue(value), disabled);
1761
- return (h(Host, { key: 'b00545b7bbba3ccf35d53c1eec4f1614fb830c11', "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: Object.assign({}, createColorClasses(color, {
1817
+ return (h(Host, { key: 'ff50a7d344831b3af2e7f5cfe52b0a71c8c4b8d1', "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: Object.assign({}, createColorClasses(color, {
1762
1818
  [mode]: true,
1763
1819
  ['datetime-readonly']: readonly,
1764
1820
  ['datetime-disabled']: disabled,
@@ -1772,9 +1828,11 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
1772
1828
  }
1773
1829
  get el() { return this; }
1774
1830
  static get watchers() { return {
1831
+ "formatOptions": ["formatOptionsChanged"],
1775
1832
  "disabled": ["disabledChanged"],
1776
1833
  "min": ["minChanged"],
1777
1834
  "max": ["maxChanged"],
1835
+ "presentation": ["presentationChanged"],
1778
1836
  "yearValues": ["yearValuesChanged"],
1779
1837
  "monthValues": ["monthValuesChanged"],
1780
1838
  "dayValues": ["dayValuesChanged"],
@@ -1790,6 +1848,7 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
1790
1848
  "color": [1],
1791
1849
  "name": [1],
1792
1850
  "disabled": [4],
1851
+ "formatOptions": [16],
1793
1852
  "readonly": [4],
1794
1853
  "isDateEnabled": [16],
1795
1854
  "min": [1025],
@@ -1825,9 +1884,11 @@ const Datetime = /*@__PURE__*/ proxyCustomElement(class Datetime extends HTMLEle
1825
1884
  "reset": [64],
1826
1885
  "cancel": [64]
1827
1886
  }, undefined, {
1887
+ "formatOptions": ["formatOptionsChanged"],
1828
1888
  "disabled": ["disabledChanged"],
1829
1889
  "min": ["minChanged"],
1830
1890
  "max": ["maxChanged"],
1891
+ "presentation": ["presentationChanged"],
1831
1892
  "yearValues": ["yearValuesChanged"],
1832
1893
  "monthValues": ["monthValuesChanged"],
1833
1894
  "dayValues": ["dayValuesChanged"],
@@ -211,10 +211,6 @@ const Loading = /*@__PURE__*/ proxyCustomElement(class Loading extends HTMLEleme
211
211
  * This can be useful in a button handler for determining which button was
212
212
  * clicked to dismiss the loading.
213
213
  * Some examples include: ``"cancel"`, `"destructive"`, "selected"`, and `"backdrop"`.
214
- *
215
- * This is a no-op if the overlay has not been presented yet. If you want
216
- * to remove an overlay from the DOM that was never presented, use the
217
- * [remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method.
218
214
  */
219
215
  async dismiss(data, role) {
220
216
  const unlock = await this.lockController.lock();
@@ -256,9 +252,9 @@ const Loading = /*@__PURE__*/ proxyCustomElement(class Loading extends HTMLEleme
256
252
  * Otherwise, don't set aria-labelledby.
257
253
  */
258
254
  const ariaLabelledBy = message !== undefined ? msgId : null;
259
- return (h(Host, Object.assign({ key: '95123f54ba1db5e59563d79db075315b43ed20f7', role: "dialog", "aria-modal": "true", "aria-labelledby": ariaLabelledBy, tabindex: "-1" }, htmlAttributes, { style: {
255
+ return (h(Host, Object.assign({ key: '81295894ca6e047124918420f2483c092ebf91b9', role: "dialog", "aria-modal": "true", "aria-labelledby": ariaLabelledBy, tabindex: "-1" }, htmlAttributes, { style: {
260
256
  zIndex: `${40000 + this.overlayIndex}`,
261
- }, onIonBackdropTap: this.onBackdropTap, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'loading-translucent': this.translucent }) }), h("ion-backdrop", { key: 'e113bf123eaad38f2dafce8ea5d2ebef409d0c0f', visible: this.showBackdrop, tappable: this.backdropDismiss }), h("div", { key: '1268c9480854383c7883a79d597350540ade93c2', tabindex: "0" }), h("div", { key: 'e86fc71504ebd578117dea2232d9740a087d1249', class: "loading-wrapper ion-overlay-wrapper" }, spinner && (h("div", { class: "loading-spinner" }, h("ion-spinner", { name: spinner, "aria-hidden": "true" }))), message !== undefined && this.renderLoadingMessage(msgId)), h("div", { key: '3b91e2492e06aa65ebe77ed2b6ffb9d2f84bdd9c', tabindex: "0" })));
257
+ }, onIonBackdropTap: this.onBackdropTap, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'loading-translucent': this.translucent }) }), h("ion-backdrop", { key: 'db9fbd946cf3eb03c3a70f2e71c49ab233df1879', visible: this.showBackdrop, tappable: this.backdropDismiss }), h("div", { key: 'd27b03de0b450c0668d4b4077d76bc5b283f03cf', tabindex: "0" }), h("div", { key: '7112719ddd487365c1e36fc4dec32aac888dbb52', class: "loading-wrapper ion-overlay-wrapper" }, spinner && (h("div", { class: "loading-spinner" }, h("ion-spinner", { name: spinner, "aria-hidden": "true" }))), message !== undefined && this.renderLoadingMessage(msgId)), h("div", { key: '5715dd7dae209ae58e5557cb60f3ae514752b822', tabindex: "0" })));
262
258
  }
263
259
  get el() { return this; }
264
260
  static get watchers() { return {
@@ -1479,10 +1479,6 @@ const Modal = /*@__PURE__*/ proxyCustomElement(class Modal extends HTMLElement {
1479
1479
  *
1480
1480
  * @param data Any data to emit in the dismiss events.
1481
1481
  * @param role The role of the element that is dismissing the modal. For example, 'cancel' or 'backdrop'.
1482
- *
1483
- * This is a no-op if the overlay has not been presented yet. If you want
1484
- * to remove an overlay from the DOM that was never presented, use the
1485
- * [remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method.
1486
1482
  */
1487
1483
  async dismiss(data, role) {
1488
1484
  var _a;
@@ -1613,9 +1609,9 @@ const Modal = /*@__PURE__*/ proxyCustomElement(class Modal extends HTMLElement {
1613
1609
  const mode = getIonMode(this);
1614
1610
  const isCardModal = presentingElement !== undefined && mode === 'ios';
1615
1611
  const isHandleCycle = handleBehavior === 'cycle';
1616
- return (h(Host, Object.assign({ key: '0c2c4369ab2df4ef4660addea5e927c6a0232864', "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
1612
+ return (h(Host, Object.assign({ key: '9a305d82f123283b6200c42d67393b378bb309a8', "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
1617
1613
  zIndex: `${20000 + this.overlayIndex}`,
1618
- }, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, 'overlay-hidden': true }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle }), h("ion-backdrop", { key: 'd044383a776c2ee1703f996caedaedca47f2948f', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && h("div", { class: "modal-shadow" }), h("div", Object.assign({ key: '8d23b6a3cc9069e4d46fa0645cde9db3e6f89507',
1614
+ }, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, 'overlay-hidden': true }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle }), h("ion-backdrop", { key: '85e8dc6f19b30fd95db518445929fb0c1d5cdef0', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && h("div", { class: "modal-shadow" }), h("div", Object.assign({ key: '893a0202d91828e60099311442c2677bee5464e2',
1619
1615
  /*
1620
1616
  role and aria-modal must be used on the
1621
1617
  same element. They must also be set inside the
@@ -1624,7 +1620,7 @@ const Modal = /*@__PURE__*/ proxyCustomElement(class Modal extends HTMLElement {
1624
1620
  */
1625
1621
  role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (h("button", { class: "modal-handle",
1626
1622
  // Prevents the handle from receiving keyboard focus when it does not cycle
1627
- tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle" })), h("slot", { key: '3fbb689e4bf5575fbb26ad1000f6ac5993f3bf8f' }))));
1623
+ tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle" })), h("slot", { key: '25187bf4c69d9022930227b8b8748a294176be5f' }))));
1628
1624
  }
1629
1625
  get el() { return this; }
1630
1626
  static get watchers() { return {
@@ -167,10 +167,6 @@ const Picker = /*@__PURE__*/ proxyCustomElement(class Picker extends HTMLElement
167
167
  * This can be useful in a button handler for determining which button was
168
168
  * clicked to dismiss the picker.
169
169
  * Some examples include: ``"cancel"`, `"destructive"`, "selected"`, and `"backdrop"`.
170
- *
171
- * This is a no-op if the overlay has not been presented yet. If you want
172
- * to remove an overlay from the DOM that was never presented, use the
173
- * [remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method.
174
170
  */
175
171
  async dismiss(data, role) {
176
172
  const unlock = await this.lockController.lock();
@@ -242,11 +238,11 @@ const Picker = /*@__PURE__*/ proxyCustomElement(class Picker extends HTMLElement
242
238
  render() {
243
239
  const { htmlAttributes } = this;
244
240
  const mode = getIonMode(this);
245
- return (h(Host, Object.assign({ key: 'c266cc072afaba2da22f70d8b62dc4bc6756d188', "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
241
+ return (h(Host, Object.assign({ key: '8b9049c5315e701dff3f7457be646941bb3cc0df', "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
246
242
  zIndex: `${20000 + this.overlayIndex}`,
247
243
  }, class: Object.assign({ [mode]: true,
248
244
  // Used internally for styling
249
- [`picker-${mode}`]: true, 'overlay-hidden': true }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonPickerWillDismiss: this.dispatchCancelHandler }), h("ion-backdrop", { key: '35ee3e5028028835580e28ac2c8db65a924d5d6a', visible: this.showBackdrop, tappable: this.backdropDismiss }), h("div", { key: '8b454e6edbcfc45c57d3d8baf7c14b7905921a6e', tabindex: "0" }), h("div", { key: 'e0fee78ec6d097bf0963190f748e5daad602e0f7', class: "picker-wrapper ion-overlay-wrapper", role: "dialog" }, h("div", { key: 'ce66bca18fc3e982ad7d6660f27cb1a03fb8247b', class: "picker-toolbar" }, this.buttons.map((b) => (h("div", { class: buttonWrapperClass(b) }, h("button", { type: "button", onClick: () => this.buttonClick(b), class: buttonClass(b) }, b.text))))), h("div", { key: 'a58b9523fe16f109dd6de0610717c5077fed964b', class: "picker-columns" }, h("div", { key: 'acd54c0314cff51e8513a08dd9755c4b847c0617', class: "picker-above-highlight" }), this.presented && this.columns.map((c) => h("ion-picker-column", { col: c })), h("div", { key: '604730bd87582d048d850c6e0a0f29ba33258918', class: "picker-below-highlight" }))), h("div", { key: '93baf5e6e57aec5f084d7d5b24af14e7d8126b5a', tabindex: "0" })));
245
+ [`picker-${mode}`]: true, 'overlay-hidden': true }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonPickerWillDismiss: this.dispatchCancelHandler }), h("ion-backdrop", { key: '4f62ae6c088108189bfab18b680f0ae50b4cc395', visible: this.showBackdrop, tappable: this.backdropDismiss }), h("div", { key: 'c5fd2584ca4470c69bf61582cef2ac72289addba', tabindex: "0" }), h("div", { key: '2e68572dd5ddc4911c1e6bca57a2157b47477348', class: "picker-wrapper ion-overlay-wrapper", role: "dialog" }, h("div", { key: '218526e531998a4d5a6377499acb42f99b347729', class: "picker-toolbar" }, this.buttons.map((b) => (h("div", { class: buttonWrapperClass(b) }, h("button", { type: "button", onClick: () => this.buttonClick(b), class: buttonClass(b) }, b.text))))), h("div", { key: '4dd711f1fa1f2a4bd24696ae1633da16bbf55879', class: "picker-columns" }, h("div", { key: '440ebd807ca3675b0055e67e0354ac4625ae375d', class: "picker-above-highlight" }), this.presented && this.columns.map((c) => h("ion-picker-column", { col: c })), h("div", { key: '5cdceda410904470e3742ab416ed3d3a661b6859', class: "picker-below-highlight" }))), h("div", { key: '0c96e8a43a6d4cd4b8b7c9e81c54414eb1d989bf', tabindex: "0" })));
250
246
  }
251
247
  get el() { return this; }
252
248
  static get watchers() { return {
@@ -657,10 +657,6 @@ const Toast = /*@__PURE__*/ proxyCustomElement(class Toast extends HTMLElement {
657
657
  * This can be useful in a button handler for determining which button was
658
658
  * clicked to dismiss the toast.
659
659
  * Some examples include: ``"cancel"`, `"destructive"`, "selected"`, and `"backdrop"`.
660
- *
661
- * This is a no-op if the overlay has not been presented yet. If you want
662
- * to remove an overlay from the DOM that was never presented, use the
663
- * [remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method.
664
660
  */
665
661
  async dismiss(data, role) {
666
662
  var _a, _b;
@@ -828,9 +824,9 @@ const Toast = /*@__PURE__*/ proxyCustomElement(class Toast extends HTMLElement {
828
824
  if (layout === 'stacked' && startButtons.length > 0 && endButtons.length > 0) {
829
825
  printIonWarning('This toast is using start and end buttons with the stacked toast layout. We recommend following the best practice of using either start or end buttons with the stacked toast layout.', el);
830
826
  }
831
- return (h(Host, Object.assign({ key: 'c8d7e7d2baa01d3ed5d65a845bc61acf087c0b18', tabindex: "-1" }, this.htmlAttributes, { style: {
827
+ return (h(Host, Object.assign({ key: '15a5c3e8d475435c838b70c55ef2e7cc12d6abfb', tabindex: "-1" }, this.htmlAttributes, { style: {
832
828
  zIndex: `${60000 + this.overlayIndex}`,
833
- }, class: createColorClasses(this.color, Object.assign(Object.assign({ [mode]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'toast-translucent': this.translucent })), onIonToastWillDismiss: this.dispatchCancelHandler }), h("div", { key: '27c0feeb89c4efb47c42623a4b036ed84338ed10', class: wrapperClass }, h("div", { key: '41d5a3069f92e4a6acef2793fa4e236cdbdaae88', class: "toast-container", part: "container" }, this.renderButtons(startButtons, 'start'), this.icon !== undefined && (h("ion-icon", { class: "toast-icon", part: "icon", icon: this.icon, lazy: false, "aria-hidden": "true" })), h("div", { key: '176f497bc990ef2ecc14c7fa90dd3a54a912030a', class: "toast-content", role: "status", "aria-atomic": "true", "aria-live": "polite" }, !revealContentToScreenReader && header !== undefined && this.renderHeader('oldHeader', 'true'), !revealContentToScreenReader && message !== undefined && this.renderToastMessage('oldMessage', 'true'), revealContentToScreenReader && header !== undefined && this.renderHeader('header'), revealContentToScreenReader && message !== undefined && this.renderToastMessage('header')), this.renderButtons(endButtons, 'end')))));
829
+ }, class: createColorClasses(this.color, Object.assign(Object.assign({ [mode]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'toast-translucent': this.translucent })), onIonToastWillDismiss: this.dispatchCancelHandler }), h("div", { key: 'a6ed7fb75ab098dc632d1a546b4d5298675c14c1', class: wrapperClass }, h("div", { key: '68ff7219e9abae0b7c2030369ebffd2fe0edf7de', class: "toast-container", part: "container" }, this.renderButtons(startButtons, 'start'), this.icon !== undefined && (h("ion-icon", { class: "toast-icon", part: "icon", icon: this.icon, lazy: false, "aria-hidden": "true" })), h("div", { key: '6b45ca5e283d3507c682cbe733e27a94460a7f69', class: "toast-content", role: "status", "aria-atomic": "true", "aria-live": "polite" }, !revealContentToScreenReader && header !== undefined && this.renderHeader('oldHeader', 'true'), !revealContentToScreenReader && message !== undefined && this.renderToastMessage('oldMessage', 'true'), revealContentToScreenReader && header !== undefined && this.renderHeader('header'), revealContentToScreenReader && message !== undefined && this.renderToastMessage('header')), this.renderButtons(endButtons, 'end')))));
834
830
  }
835
831
  get el() { return this; }
836
832
  static get watchers() { return {
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import { proxyCustomElement, HTMLElement, forceUpdate, h, Host } from '@stencil/core/internal/client';
4
+ import { proxyCustomElement, HTMLElement, forceUpdate, Build, h, Host } from '@stencil/core/internal/client';
5
5
  import { d as inheritAttributes, r as raf } from './helpers.js';
6
6
  import { p as printIonWarning, a as printIonError } from './index6.js';
7
7
  import { h as hostContext, c as createColorClasses, o as openURL } from './theme.js';
@@ -200,6 +200,15 @@ const Item = /*@__PURE__*/ proxyCustomElement(class Item extends HTMLElement {
200
200
  }
201
201
  }
202
202
  getFirstInteractive() {
203
+ if (Build.isTesting) {
204
+ /**
205
+ * Pseudo selectors can't be tested in unit tests.
206
+ * It will cause an error when running the tests.
207
+ *
208
+ * TODO: FW-5205 - Remove the build conditional when this is fixed in Stencil
209
+ */
210
+ return undefined;
211
+ }
203
212
  const controls = this.el.querySelectorAll('ion-toggle:not([disabled]), ion-checkbox:not([disabled]), ion-radio:not([disabled]), ion-select:not([disabled])');
204
213
  return controls[0];
205
214
  }
@@ -256,7 +265,7 @@ const Item = /*@__PURE__*/ proxyCustomElement(class Item extends HTMLElement {
256
265
  const ariaDisabled = disabled || childStyles['item-interactive-disabled'] ? 'true' : null;
257
266
  const fillValue = fill || 'none';
258
267
  const inList = hostContext('ion-list', this.el) && !hostContext('ion-radio-group', this.el);
259
- return (h(Host, { key: '077c9ab04985292f79c30691151d2778a26285fb', "aria-disabled": ariaDisabled, class: Object.assign(Object.assign(Object.assign({}, childStyles), labelColorStyles), createColorClasses(this.color, {
268
+ return (h(Host, { key: '941d21ee0c46e9fbc566469708579f8871d19c73', "aria-disabled": ariaDisabled, class: Object.assign(Object.assign(Object.assign({}, childStyles), labelColorStyles), createColorClasses(this.color, {
260
269
  item: true,
261
270
  [mode]: true,
262
271
  'item-lines-default': lines === undefined,
@@ -270,7 +279,7 @@ const Item = /*@__PURE__*/ proxyCustomElement(class Item extends HTMLElement {
270
279
  'ion-activatable': canActivate,
271
280
  'ion-focusable': this.focusable,
272
281
  'item-rtl': document.dir === 'rtl',
273
- })), role: inList ? 'listitem' : null }, h(TagType, Object.assign({ key: '08bb75c85d0584e9fb7f461e9e06b9b651ef3515' }, attrs, inheritedAriaAttributes, { class: "item-native", part: "native", disabled: disabled }, clickFn), h("slot", { key: '3f742b07c4a58eadedf675be4878a3e00070750e', name: "start" }), h("div", { key: '0160b8963434f3107856a2df2fb96f1abb4fdbfe', class: "item-inner" }, h("div", { key: '9439b21474443341f06a651d7c44aef90bd4c591', class: "input-wrapper" }, h("slot", { key: '8034e1337a6c950b7725bc9aa46d55de980827bf' })), h("slot", { key: '690de6d3dd3a238ab7a2d3dfea69daa6647e5134', name: "end" }), showDetail && (h("ion-icon", { icon: detailIcon, lazy: false, class: "item-detail-icon", part: "detail-icon", "aria-hidden": "true", "flip-rtl": detailIcon === chevronForward })), h("div", { key: 'e96885084ca845656fd4d18902528ce7de207c86', class: "item-inner-highlight" })), canActivate && mode === 'md' && h("ion-ripple-effect", null), h("div", { key: '64e5323c380e05aa183e8dd7fbe560d084725f5e', class: "item-highlight" })), h("div", { key: '677132e6193981697f494b215ddc02407fdd96a5', class: "item-bottom" }, h("slot", { key: 'cda34a9208020bbb18ca5313e0bfbf270f024012', name: "error" }), h("slot", { key: 'c1b3541b11ece13309d0e28dd3a95c048dfab43f', name: "helper" }), counterString && h("ion-note", { class: "item-counter" }, counterString))));
282
+ })), role: inList ? 'listitem' : null }, h(TagType, Object.assign({ key: 'f0be78f964215caea21b54ffac6c2b2988967f7d' }, attrs, inheritedAriaAttributes, { class: "item-native", part: "native", disabled: disabled }, clickFn), h("slot", { key: '255e76ba8f6b5c2d75103dcd787908132f1a84a4', name: "start" }), h("div", { key: '1dee3e342b4fc1703500a545e90ad681582c1292', class: "item-inner" }, h("div", { key: '045c1cf4f03687f41147144c9c714ec426b81829', class: "input-wrapper" }, h("slot", { key: '4f1edcce6cc918e521bb98e70602dfee2b492428' })), h("slot", { key: '2dd468bc4bed5e5dab4372133bcbf4a472e417a3', name: "end" }), showDetail && (h("ion-icon", { icon: detailIcon, lazy: false, class: "item-detail-icon", part: "detail-icon", "aria-hidden": "true", "flip-rtl": detailIcon === chevronForward })), h("div", { key: '116b9c332c6e28f0eb9cb513c36aa3ac5ada17d0', class: "item-inner-highlight" })), canActivate && mode === 'md' && h("ion-ripple-effect", null), h("div", { key: '0bd92b2e3039c34b5d01d9361941af360d68a335', class: "item-highlight" })), h("div", { key: '9287c851c10b8438c787b34a2bf6d76c87af3c15', class: "item-bottom" }, h("slot", { key: '7db1f90077bbc63f3adbf873e0b1721e131d8d8d', name: "error" }), h("slot", { key: '6e90f564af916893a6a9fe6fe30dee15655a554e', name: "helper" }), counterString && h("ion-note", { class: "item-counter" }, counterString))));
274
283
  }
275
284
  static get delegatesFocus() { return true; }
276
285
  get el() { return this; }