@ionic/core 7.7.5 → 7.8.1-dev.11710449785.14ebd5a0

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 (326) hide show
  1. package/components/data.js +23 -38
  2. package/components/ion-datetime-button.js +11 -10
  3. package/components/ion-datetime.js +75 -12
  4. package/components/ion-fab-button.js +2 -2
  5. package/components/ion-fab-list.js +2 -2
  6. package/components/ion-fab.js +2 -2
  7. package/components/ion-footer.js +2 -2
  8. package/components/ion-grid.js +2 -2
  9. package/components/ion-header.js +2 -2
  10. package/components/ion-img.js +1 -1
  11. package/components/ion-infinite-scroll-content.js +2 -2
  12. package/components/ion-infinite-scroll.js +1 -1
  13. package/components/ion-item-divider.js +2 -2
  14. package/components/ion-item-group.js +1 -1
  15. package/components/ion-item-option.js +2 -2
  16. package/components/ion-item-options.js +1 -1
  17. package/components/ion-item-sliding.js +1 -1
  18. package/components/ion-loading.js +2 -2
  19. package/components/ion-menu-button.js +2 -2
  20. package/components/ion-menu-toggle.js +2 -2
  21. package/components/ion-menu.js +2 -2
  22. package/components/ion-modal.js +3 -3
  23. package/components/ion-nav-link.js +1 -1
  24. package/components/ion-nav.js +1 -1
  25. package/components/ion-picker.js +2 -2
  26. package/components/ion-progress-bar.js +1 -1
  27. package/components/ion-refresher-content.js +1 -1
  28. package/components/ion-refresher.js +1 -1
  29. package/components/ion-reorder-group.js +1 -1
  30. package/components/ion-reorder.js +1 -1
  31. package/components/ion-router-link.js +2 -2
  32. package/components/ion-router-outlet.js +1 -1
  33. package/components/ion-row.js +1 -1
  34. package/components/ion-searchbar.js +34 -5
  35. package/components/ion-segment-button.js +3 -3
  36. package/components/ion-segment.js +2 -2
  37. package/components/ion-select-option.js +1 -1
  38. package/components/ion-skeleton-text.js +2 -2
  39. package/components/ion-split-pane.js +2 -2
  40. package/components/ion-tab-bar.js +2 -2
  41. package/components/ion-tab-button.js +2 -2
  42. package/components/ion-tab.js +2 -2
  43. package/components/ion-tabs.js +1 -1
  44. package/components/ion-text.js +2 -2
  45. package/components/ion-thumbnail.js +1 -1
  46. package/components/ion-title.js +2 -2
  47. package/components/ion-toast.js +2 -2
  48. package/components/ion-toolbar.js +2 -2
  49. package/components/label.js +1 -1
  50. package/components/list-header.js +2 -2
  51. package/components/list.js +1 -1
  52. package/components/note.js +2 -2
  53. package/components/picker-column-internal.js +8 -4
  54. package/components/picker-column.js +2 -2
  55. package/components/picker-internal.js +2 -2
  56. package/components/popover.js +2 -2
  57. package/components/radio-group.js +1 -1
  58. package/components/ripple-effect.js +1 -1
  59. package/components/select-popover.js +1 -1
  60. package/components/spinner.js +1 -1
  61. package/dist/cjs/{data-a5109f09.js → data-4487a815.js} +22 -39
  62. package/dist/cjs/ion-app_8.cjs.entry.js +9 -9
  63. package/dist/cjs/ion-avatar_3.cjs.entry.js +1 -1
  64. package/dist/cjs/ion-col_3.cjs.entry.js +3 -3
  65. package/dist/cjs/ion-datetime-button.cjs.entry.js +11 -10
  66. package/dist/cjs/ion-datetime_3.cjs.entry.js +76 -16
  67. package/dist/cjs/ion-fab_3.cjs.entry.js +6 -6
  68. package/dist/cjs/ion-img.cjs.entry.js +1 -1
  69. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +3 -3
  70. package/dist/cjs/ion-item-option_3.cjs.entry.js +4 -4
  71. package/dist/cjs/ion-item_8.cjs.entry.js +11 -11
  72. package/dist/cjs/ion-loading.cjs.entry.js +2 -2
  73. package/dist/cjs/ion-menu_3.cjs.entry.js +6 -6
  74. package/dist/cjs/ion-modal.cjs.entry.js +3 -3
  75. package/dist/cjs/ion-nav_2.cjs.entry.js +2 -2
  76. package/dist/cjs/ion-picker-column-internal.cjs.entry.js +8 -4
  77. package/dist/cjs/ion-picker-internal.cjs.entry.js +2 -2
  78. package/dist/cjs/ion-popover.cjs.entry.js +2 -2
  79. package/dist/cjs/ion-progress-bar.cjs.entry.js +1 -1
  80. package/dist/cjs/ion-radio_2.cjs.entry.js +1 -1
  81. package/dist/cjs/ion-refresher_2.cjs.entry.js +2 -2
  82. package/dist/cjs/ion-reorder_2.cjs.entry.js +2 -2
  83. package/dist/cjs/ion-ripple-effect.cjs.entry.js +1 -1
  84. package/dist/cjs/ion-route_4.cjs.entry.js +2 -2
  85. package/dist/cjs/ion-searchbar.cjs.entry.js +28 -4
  86. package/dist/cjs/ion-segment_2.cjs.entry.js +5 -5
  87. package/dist/cjs/ion-select_3.cjs.entry.js +2 -2
  88. package/dist/cjs/ion-spinner.cjs.entry.js +1 -1
  89. package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
  90. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +4 -4
  91. package/dist/cjs/ion-tab_2.cjs.entry.js +3 -3
  92. package/dist/cjs/ion-text.cjs.entry.js +2 -2
  93. package/dist/cjs/ion-toast.cjs.entry.js +2 -2
  94. package/dist/cjs/ionic.cjs.js +1 -1
  95. package/dist/cjs/loader.cjs.js +1 -1
  96. package/dist/collection/components/alert/test/a11y/alert.e2e.js +4 -0
  97. package/dist/collection/components/datetime/datetime.js +56 -12
  98. package/dist/collection/components/datetime/test/basic/datetime.e2e.js +77 -0
  99. package/dist/collection/components/datetime/test/format.spec.js +65 -15
  100. package/dist/collection/components/datetime/utils/format.js +24 -37
  101. package/dist/collection/components/datetime/utils/validate.js +45 -0
  102. package/dist/collection/components/datetime-button/datetime-button.js +11 -10
  103. package/dist/collection/components/datetime-button/test/basic/datetime-button.e2e.js +65 -0
  104. package/dist/collection/components/fab/fab.js +2 -2
  105. package/dist/collection/components/fab-button/fab-button.js +2 -2
  106. package/dist/collection/components/fab-list/fab-list.js +2 -2
  107. package/dist/collection/components/footer/footer.js +2 -2
  108. package/dist/collection/components/grid/grid.js +2 -2
  109. package/dist/collection/components/header/header.js +2 -2
  110. package/dist/collection/components/img/img.js +1 -1
  111. package/dist/collection/components/infinite-scroll/infinite-scroll.js +1 -1
  112. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +2 -2
  113. package/dist/collection/components/item-divider/item-divider.js +2 -2
  114. package/dist/collection/components/item-group/item-group.js +1 -1
  115. package/dist/collection/components/item-option/item-option.js +2 -2
  116. package/dist/collection/components/item-options/item-options.js +1 -1
  117. package/dist/collection/components/item-sliding/item-sliding.js +1 -1
  118. package/dist/collection/components/label/label.js +1 -1
  119. package/dist/collection/components/list/list.js +1 -1
  120. package/dist/collection/components/list-header/list-header.js +2 -2
  121. package/dist/collection/components/loading/loading.js +2 -2
  122. package/dist/collection/components/menu/menu.js +2 -2
  123. package/dist/collection/components/menu-button/menu-button.js +2 -2
  124. package/dist/collection/components/menu-toggle/menu-toggle.js +2 -2
  125. package/dist/collection/components/modal/modal.js +3 -3
  126. package/dist/collection/components/nav/nav.js +1 -1
  127. package/dist/collection/components/nav-link/nav-link.js +1 -1
  128. package/dist/collection/components/note/note.js +2 -2
  129. package/dist/collection/components/picker/picker.js +2 -2
  130. package/dist/collection/components/picker-column/picker-column.js +2 -2
  131. package/dist/collection/components/picker-column-internal/picker-column-internal.js +8 -4
  132. package/dist/collection/components/picker-internal/picker-internal.js +2 -2
  133. package/dist/collection/components/popover/popover.js +2 -2
  134. package/dist/collection/components/progress-bar/progress-bar.js +1 -1
  135. package/dist/collection/components/radio-group/radio-group.js +1 -1
  136. package/dist/collection/components/refresher/refresher.js +1 -1
  137. package/dist/collection/components/refresher-content/refresher-content.js +1 -1
  138. package/dist/collection/components/reorder/reorder.js +1 -1
  139. package/dist/collection/components/reorder-group/reorder-group.js +1 -1
  140. package/dist/collection/components/ripple-effect/ripple-effect.js +1 -1
  141. package/dist/collection/components/router-link/router-link.js +2 -2
  142. package/dist/collection/components/router-outlet/router-outlet.js +1 -1
  143. package/dist/collection/components/row/row.js +1 -1
  144. package/dist/collection/components/searchbar/searchbar.js +84 -5
  145. package/dist/collection/components/searchbar/test/searchbar.spec.js +20 -2
  146. package/dist/collection/components/segment/segment.js +2 -2
  147. package/dist/collection/components/segment-button/segment-button.js +3 -3
  148. package/dist/collection/components/select-option/select-option.js +1 -1
  149. package/dist/collection/components/select-popover/select-popover.js +1 -1
  150. package/dist/collection/components/skeleton-text/skeleton-text.js +2 -2
  151. package/dist/collection/components/spinner/spinner.js +1 -1
  152. package/dist/collection/components/split-pane/split-pane.js +2 -2
  153. package/dist/collection/components/tab/tab.js +2 -2
  154. package/dist/collection/components/tab-bar/tab-bar.js +2 -2
  155. package/dist/collection/components/tab-button/tab-button.js +2 -2
  156. package/dist/collection/components/tabs/tabs.js +1 -1
  157. package/dist/collection/components/text/text.js +2 -2
  158. package/dist/collection/components/thumbnail/thumbnail.js +1 -1
  159. package/dist/collection/components/title/title.js +2 -2
  160. package/dist/collection/components/toast/toast.js +2 -2
  161. package/dist/collection/components/toggle/toggle.js +1 -1
  162. package/dist/collection/components/toolbar/toolbar.js +2 -2
  163. package/dist/docs.json +114 -2
  164. package/dist/esm/{data-0f3ab200.js → data-bb424ba8.js} +23 -38
  165. package/dist/esm/ion-app_8.entry.js +9 -9
  166. package/dist/esm/ion-avatar_3.entry.js +1 -1
  167. package/dist/esm/ion-col_3.entry.js +3 -3
  168. package/dist/esm/ion-datetime-button.entry.js +11 -10
  169. package/dist/esm/ion-datetime_3.entry.js +76 -16
  170. package/dist/esm/ion-fab_3.entry.js +6 -6
  171. package/dist/esm/ion-img.entry.js +1 -1
  172. package/dist/esm/ion-infinite-scroll_2.entry.js +3 -3
  173. package/dist/esm/ion-item-option_3.entry.js +4 -4
  174. package/dist/esm/ion-item_8.entry.js +11 -11
  175. package/dist/esm/ion-loading.entry.js +2 -2
  176. package/dist/esm/ion-menu_3.entry.js +6 -6
  177. package/dist/esm/ion-modal.entry.js +3 -3
  178. package/dist/esm/ion-nav_2.entry.js +2 -2
  179. package/dist/esm/ion-picker-column-internal.entry.js +8 -4
  180. package/dist/esm/ion-picker-internal.entry.js +2 -2
  181. package/dist/esm/ion-popover.entry.js +2 -2
  182. package/dist/esm/ion-progress-bar.entry.js +1 -1
  183. package/dist/esm/ion-radio_2.entry.js +1 -1
  184. package/dist/esm/ion-refresher_2.entry.js +2 -2
  185. package/dist/esm/ion-reorder_2.entry.js +2 -2
  186. package/dist/esm/ion-ripple-effect.entry.js +1 -1
  187. package/dist/esm/ion-route_4.entry.js +2 -2
  188. package/dist/esm/ion-searchbar.entry.js +29 -5
  189. package/dist/esm/ion-segment_2.entry.js +5 -5
  190. package/dist/esm/ion-select_3.entry.js +2 -2
  191. package/dist/esm/ion-spinner.entry.js +1 -1
  192. package/dist/esm/ion-split-pane.entry.js +2 -2
  193. package/dist/esm/ion-tab-bar_2.entry.js +4 -4
  194. package/dist/esm/ion-tab_2.entry.js +3 -3
  195. package/dist/esm/ion-text.entry.js +2 -2
  196. package/dist/esm/ion-toast.entry.js +2 -2
  197. package/dist/esm/ionic.js +1 -1
  198. package/dist/esm/loader.js +1 -1
  199. package/dist/esm-es5/data-bb424ba8.js +4 -0
  200. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  201. package/dist/esm-es5/ion-avatar_3.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-item-option_3.entry.js +1 -1
  209. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  210. package/dist/esm-es5/ion-loading.entry.js +1 -1
  211. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  212. package/dist/esm-es5/ion-modal.entry.js +1 -1
  213. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  214. package/dist/esm-es5/ion-picker-column-internal.entry.js +1 -1
  215. package/dist/esm-es5/ion-picker-internal.entry.js +1 -1
  216. package/dist/esm-es5/ion-popover.entry.js +1 -1
  217. package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
  218. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  219. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  220. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  221. package/dist/esm-es5/ion-ripple-effect.entry.js +1 -1
  222. package/dist/esm-es5/ion-route_4.entry.js +1 -1
  223. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  224. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  225. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  226. package/dist/esm-es5/ion-spinner.entry.js +1 -1
  227. package/dist/esm-es5/ion-split-pane.entry.js +1 -1
  228. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  229. package/dist/esm-es5/ion-tab_2.entry.js +1 -1
  230. package/dist/esm-es5/ion-text.entry.js +1 -1
  231. package/dist/esm-es5/ion-toast.entry.js +1 -1
  232. package/dist/esm-es5/ionic.js +1 -1
  233. package/dist/esm-es5/loader.js +1 -1
  234. package/dist/html.html-data.json +13 -1
  235. package/dist/ionic/ionic.esm.js +1 -1
  236. package/dist/ionic/{p-08a5d8eb.entry.js → p-0188824c.entry.js} +1 -1
  237. package/dist/ionic/{p-ba385465.system.entry.js → p-079817f9.system.entry.js} +1 -1
  238. package/dist/ionic/{p-b13b7128.system.entry.js → p-0971ee6d.system.entry.js} +1 -1
  239. package/dist/ionic/{p-db6a5af3.system.entry.js → p-0dbbf52a.system.entry.js} +1 -1
  240. package/dist/ionic/{p-f5bc27d6.system.entry.js → p-0eb111e7.system.entry.js} +1 -1
  241. package/dist/ionic/{p-996922b4.system.entry.js → p-0ef05e5d.system.entry.js} +1 -1
  242. package/dist/ionic/{p-86438241.system.entry.js → p-0fa9c8f7.system.entry.js} +1 -1
  243. package/dist/ionic/{p-8f466a2c.system.entry.js → p-11d480a7.system.entry.js} +1 -1
  244. package/dist/ionic/{p-f9f7b24a.system.entry.js → p-1561982b.system.entry.js} +1 -1
  245. package/dist/ionic/{p-45ea497f.entry.js → p-15ced5aa.entry.js} +1 -1
  246. package/dist/ionic/p-2055bdba.entry.js +4 -0
  247. package/dist/ionic/{p-cf88a096.system.entry.js → p-25f56cd7.system.entry.js} +1 -1
  248. package/dist/ionic/{p-6a0a3e18.system.entry.js → p-2791b018.system.entry.js} +1 -1
  249. package/dist/ionic/{p-e59803ca.entry.js → p-2b78245e.entry.js} +1 -1
  250. package/dist/ionic/{p-72c8ca65.system.entry.js → p-2bc25d50.system.entry.js} +2 -2
  251. package/dist/ionic/{p-479402e1.entry.js → p-2c94053b.entry.js} +1 -1
  252. package/dist/ionic/{p-9074a84e.system.entry.js → p-2d88f64e.system.entry.js} +1 -1
  253. package/dist/ionic/p-2fec06f2.entry.js +4 -0
  254. package/dist/ionic/p-327f8d66.entry.js +4 -0
  255. package/dist/ionic/p-3789920e.js +4 -0
  256. package/dist/ionic/{p-c7d8cec2.entry.js → p-3b85bb44.entry.js} +1 -1
  257. package/dist/ionic/{p-059fcb53.system.entry.js → p-43438ce1.system.entry.js} +2 -2
  258. package/dist/ionic/p-45362829.system.entry.js +4 -0
  259. package/dist/ionic/p-46ca8bb1.entry.js +4 -0
  260. package/dist/ionic/{p-08410e29.system.entry.js → p-4e74f845.system.entry.js} +1 -1
  261. package/dist/ionic/{p-7b809cc0.system.entry.js → p-4f73a163.system.entry.js} +1 -1
  262. package/dist/ionic/{p-345e2dac.system.entry.js → p-51dd4f12.system.entry.js} +1 -1
  263. package/dist/ionic/{p-5d8fca58.entry.js → p-51ebe7c6.entry.js} +1 -1
  264. package/dist/ionic/{p-cfe767f1.entry.js → p-526258be.entry.js} +1 -1
  265. package/dist/ionic/{p-fef4907e.system.entry.js → p-58b335fd.system.entry.js} +1 -1
  266. package/dist/ionic/{p-3377236e.entry.js → p-5e3e64b5.entry.js} +1 -1
  267. package/dist/ionic/{p-b9b8e462.system.entry.js → p-5f3fc112.system.entry.js} +1 -1
  268. package/dist/ionic/p-60c9fd9e.system.js +1 -1
  269. package/dist/ionic/{p-3ca0c7f2.entry.js → p-62f36e54.entry.js} +1 -1
  270. package/dist/ionic/{p-e8d46a2e.entry.js → p-65409f36.entry.js} +1 -1
  271. package/dist/ionic/p-6a110cb2.entry.js +4 -0
  272. package/dist/ionic/p-6ec0c1ee.system.entry.js +4 -0
  273. package/dist/ionic/{p-4830fae8.system.entry.js → p-7126abb8.system.entry.js} +1 -1
  274. package/dist/ionic/{p-b0ccd173.system.entry.js → p-7186eb03.system.entry.js} +1 -1
  275. package/dist/ionic/{p-6b5630b9.system.entry.js → p-7c91266e.system.entry.js} +1 -1
  276. package/dist/ionic/{p-f5dce0c6.entry.js → p-80808af6.entry.js} +1 -1
  277. package/dist/ionic/p-8a1b0abb.system.js +4 -0
  278. package/dist/ionic/{p-33dd4d0b.system.entry.js → p-8a21c7b4.system.entry.js} +1 -1
  279. package/dist/ionic/{p-09fc100a.entry.js → p-8be61e52.entry.js} +1 -1
  280. package/dist/ionic/{p-e4bf5d87.system.entry.js → p-8e127a08.system.entry.js} +1 -1
  281. package/dist/ionic/{p-0e7c8334.system.entry.js → p-966a5ae4.system.entry.js} +1 -1
  282. package/dist/ionic/{p-ae3aeb39.entry.js → p-98bac954.entry.js} +1 -1
  283. package/dist/ionic/{p-231a3636.system.entry.js → p-a53d569a.system.entry.js} +1 -1
  284. package/dist/ionic/{p-3270e211.entry.js → p-a7959307.entry.js} +1 -1
  285. package/dist/ionic/{p-7f865669.entry.js → p-ab7c79d9.entry.js} +1 -1
  286. package/dist/ionic/p-b7aec03b.entry.js +4 -0
  287. package/dist/ionic/p-bbb655e2.system.entry.js +4 -0
  288. package/dist/ionic/{p-ca935c03.entry.js → p-bc68a14a.entry.js} +1 -1
  289. package/dist/ionic/{p-36a80e5c.entry.js → p-c0d7aace.entry.js} +1 -1
  290. package/dist/ionic/{p-04721936.system.entry.js → p-c1a58ab3.system.entry.js} +1 -1
  291. package/dist/ionic/{p-84283745.entry.js → p-c63a69cd.entry.js} +1 -1
  292. package/dist/ionic/{p-8ce6d551.entry.js → p-c99bfffe.entry.js} +1 -1
  293. package/dist/ionic/{p-c6f9f608.entry.js → p-d637b857.entry.js} +1 -1
  294. package/dist/ionic/{p-09b047e0.entry.js → p-dd5a925f.entry.js} +1 -1
  295. package/dist/ionic/{p-c711b464.entry.js → p-deb09b58.entry.js} +1 -1
  296. package/dist/ionic/{p-95c2fa04.entry.js → p-e2236935.entry.js} +1 -1
  297. package/dist/ionic/{p-abcc9680.entry.js → p-e631799d.entry.js} +1 -1
  298. package/dist/ionic/{p-e155f315.system.entry.js → p-e6c115f6.system.entry.js} +1 -1
  299. package/dist/ionic/{p-8c74bd0e.system.entry.js → p-e7bdaac8.system.entry.js} +2 -2
  300. package/dist/ionic/p-f520f6a5.entry.js +4 -0
  301. package/dist/ionic/p-f89380a5.system.entry.js +4 -0
  302. package/dist/ionic/p-f98bd898.entry.js +4 -0
  303. package/dist/types/components/datetime/datetime-interface.d.ts +10 -0
  304. package/dist/types/components/datetime/datetime.d.ts +10 -1
  305. package/dist/types/components/datetime/utils/format.d.ts +7 -13
  306. package/dist/types/components/datetime/utils/validate.d.ts +8 -0
  307. package/dist/types/components/searchbar/searchbar.d.ts +38 -0
  308. package/dist/types/components/toggle/toggle.d.ts +1 -1
  309. package/dist/types/components.d.ts +36 -4
  310. package/hydrate/index.js +230 -154
  311. package/package.json +1 -1
  312. package/dist/esm-es5/data-0f3ab200.js +0 -4
  313. package/dist/ionic/p-1522bf28.entry.js +0 -4
  314. package/dist/ionic/p-6f5b32c7.system.entry.js +0 -4
  315. package/dist/ionic/p-7330c044.system.js +0 -4
  316. package/dist/ionic/p-76afa95f.entry.js +0 -4
  317. package/dist/ionic/p-81f18ed1.system.entry.js +0 -4
  318. package/dist/ionic/p-addb7662.entry.js +0 -4
  319. package/dist/ionic/p-b80ef521.entry.js +0 -4
  320. package/dist/ionic/p-c05202a7.entry.js +0 -4
  321. package/dist/ionic/p-c67c9644.entry.js +0 -4
  322. package/dist/ionic/p-d070ab1e.system.entry.js +0 -4
  323. package/dist/ionic/p-de0392f4.entry.js +0 -4
  324. package/dist/ionic/p-e447e552.entry.js +0 -4
  325. package/dist/ionic/p-ef269a56.system.entry.js +0 -4
  326. package/dist/ionic/p-f7dce541.js +0 -4
@@ -9,7 +9,7 @@ import { i as isRTL } from './dir-babeabeb.js';
9
9
  import { c as createColorClasses, g as getClassMap } from './theme-01f3f29c.js';
10
10
  import { c as chevronBack, o as chevronForward, l as chevronDown, p as caretUpSharp, q as caretDownSharp } from './index-f7dc70ba.js';
11
11
  import { b as getIonMode } from './ionic-global-c836c8c6.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 getDaysOfWeek, J as getMonthAndYear, 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-0f3ab200.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 getDaysOfWeek, J as getMonthAndYear, 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-bb424ba8.js';
13
13
  import { c as createLockController } from './lock-controller-316928be.js';
14
14
  import { d as createDelegateController, e as createTriggerController, B as BACKDROP, i as isCancel, j as prepareOverlay, k as setOverlayId, f as present, g as dismiss, h as eventMethod, s as safeCall } from './overlays-d99a4d6a.js';
15
15
  import { c as createAnimation } from './animation-6a0c5338.js';
@@ -186,6 +186,48 @@ const getHighlightStyles = (highlightedDates, dateIsoString, el) => {
186
186
  return undefined;
187
187
  };
188
188
 
189
+ /**
190
+ * If a time zone is provided in the format options, the rendered text could
191
+ * differ from what was selected in the Datetime, which could cause
192
+ * confusion.
193
+ */
194
+ const warnIfTimeZoneProvided = (el, formatOptions) => {
195
+ var _a, _b, _c, _d;
196
+ if (((_a = formatOptions === null || formatOptions === void 0 ? void 0 : formatOptions.date) === null || _a === void 0 ? void 0 : _a.timeZone) ||
197
+ ((_b = formatOptions === null || formatOptions === void 0 ? void 0 : formatOptions.date) === null || _b === void 0 ? void 0 : _b.timeZoneName) ||
198
+ ((_c = formatOptions === null || formatOptions === void 0 ? void 0 : formatOptions.time) === null || _c === void 0 ? void 0 : _c.timeZone) ||
199
+ ((_d = formatOptions === null || formatOptions === void 0 ? void 0 : formatOptions.time) === null || _d === void 0 ? void 0 : _d.timeZoneName)) {
200
+ printIonWarning('Datetime: "timeZone" and "timeZoneName" are not supported in "formatOptions".', el);
201
+ }
202
+ };
203
+ const checkForPresentationFormatMismatch = (el, presentation, formatOptions) => {
204
+ // formatOptions is not required
205
+ if (!formatOptions)
206
+ return;
207
+ // If formatOptions is provided, the date and/or time objects are required, depending on the presentation
208
+ switch (presentation) {
209
+ case 'date':
210
+ case 'month-year':
211
+ case 'month':
212
+ case 'year':
213
+ if (formatOptions.date === undefined) {
214
+ printIonWarning(`Datetime: The '${presentation}' presentation requires a date object in formatOptions.`, el);
215
+ }
216
+ break;
217
+ case 'time':
218
+ if (formatOptions.time === undefined) {
219
+ printIonWarning(`Datetime: The 'time' presentation requires a time object in formatOptions.`, el);
220
+ }
221
+ break;
222
+ case 'date-time':
223
+ case 'time-date':
224
+ if (formatOptions.date === undefined && formatOptions.time === undefined) {
225
+ printIonWarning(`Datetime: The '${presentation}' presentation requires either a date or time object (or both) in formatOptions.`, el);
226
+ }
227
+ break;
228
+ }
229
+ };
230
+
189
231
  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:dir(rtl)) .calendar-next-prev,:host(.show-month-and-year:dir(rtl)) .calendar-days-of-week,:host(.show-month-and-year:dir(rtl)) .calendar-body,:host(.show-month-and-year:dir(rtl)) .datetime-time{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-disabled){pointer-events:none}:host(.datetime-disabled) .calendar-days-of-week,:host(.datetime-disabled) .datetime-time{opacity:0.4}:host(.datetime-readonly){pointer-events:none;}:host(.datetime-readonly) .calendar-action-buttons,:host(.datetime-readonly) .calendar-body,:host(.datetime-readonly) .datetime-year{pointer-events:initial}:host(.datetime-readonly) .calendar-day[disabled]:not(.calendar-day-constrained),:host(.datetime-readonly) .datetime-action-buttons ion-button[disabled]{opacity:1}: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}.datetime-action-buttons .datetime-action-buttons-container{display:-ms-flexbox;display:flex}: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;width:auto}: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}.calendar-days-of-week .day-of-week{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0}: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}.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:min(0.875rem, 22.4px)}: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:min(1rem, 25.6px);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:min(0.75rem, 19.2px);font-weight:600;line-height:24px;text-transform:uppercase}@supports (border-radius: mod(1px, 1px)){.calendar-days-of-week .day-of-week{width:clamp(20px, calc(mod(min(1rem, 24px), 24px) * 10), 100%);height:24px;overflow:hidden}.calendar-day{border-radius:max(8px, mod(min(1rem, 24px), 24px) * 10)}}@supports ((border-radius: mod(1px, 1px)) and (background: -webkit-named-image(apple-pay-logo-black)) and (not (contain-intrinsic-size: none))) or (not (border-radius: mod(1px, 1px))){.calendar-days-of-week .day-of-week{width:auto;height:auto;overflow:initial}.calendar-day{border-radius:32px}}: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:1rem}:host .calendar-day{width:40px;min-width:40px;height:40px;font-size:min(1.25rem, 32px)}.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{background:var(--ion-color-base);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:min(1rem, 25.6px)}: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%}";
190
232
  const IonDatetimeIosStyle0 = datetimeIosCss;
191
233
 
@@ -810,6 +852,7 @@ const Datetime = class {
810
852
  this.color = 'primary';
811
853
  this.name = this.inputId;
812
854
  this.disabled = false;
855
+ this.formatOptions = undefined;
813
856
  this.readonly = false;
814
857
  this.isDateEnabled = undefined;
815
858
  this.min = undefined;
@@ -837,6 +880,11 @@ const Datetime = class {
837
880
  this.size = 'fixed';
838
881
  this.preferWheel = false;
839
882
  }
883
+ formatOptionsChanged() {
884
+ const { el, formatOptions, presentation } = this;
885
+ checkForPresentationFormatMismatch(el, presentation, formatOptions);
886
+ warnIfTimeZoneProvided(el, formatOptions);
887
+ }
840
888
  disabledChanged() {
841
889
  this.emitStyle();
842
890
  }
@@ -846,6 +894,10 @@ const Datetime = class {
846
894
  maxChanged() {
847
895
  this.processMaxParts();
848
896
  }
897
+ presentationChanged() {
898
+ const { el, formatOptions, presentation } = this;
899
+ checkForPresentationFormatMismatch(el, presentation, formatOptions);
900
+ }
849
901
  get isGridStyle() {
850
902
  const { presentation, preferWheel } = this;
851
903
  const hasDatePresentation = presentation === 'date' || presentation === 'date-time' || presentation === 'time-date';
@@ -948,6 +1000,7 @@ const Datetime = class {
948
1000
  this.initializeKeyboardListeners();
949
1001
  }
950
1002
  componentDidLoad() {
1003
+ const { el, intersectionTrackerRef } = this;
951
1004
  /**
952
1005
  * If a scrollable element is hidden using `display: none`,
953
1006
  * it will not have a scroll height meaning we cannot scroll elements
@@ -973,14 +1026,14 @@ const Datetime = class {
973
1026
  this.el.classList.add('datetime-ready');
974
1027
  });
975
1028
  };
976
- const visibleIO = new IntersectionObserver(visibleCallback, { threshold: 0.01 });
1029
+ const visibleIO = new IntersectionObserver(visibleCallback, { threshold: 0.01, root: el });
977
1030
  /**
978
1031
  * Use raf to avoid a race condition between the component loading and
979
1032
  * its display animation starting (such as when shown in a modal). This
980
1033
  * could cause the datetime to start at a visibility of 0, erroneously
981
1034
  * triggering the `hiddenIO` observer below.
982
1035
  */
983
- raf(() => visibleIO === null || visibleIO === void 0 ? void 0 : visibleIO.observe(this.el));
1036
+ raf(() => visibleIO === null || visibleIO === void 0 ? void 0 : visibleIO.observe(intersectionTrackerRef));
984
1037
  /**
985
1038
  * We need to clean up listeners when the datetime is hidden
986
1039
  * in a popover/modal so that we can properly scroll containers
@@ -1006,8 +1059,8 @@ const Datetime = class {
1006
1059
  this.el.classList.remove('datetime-ready');
1007
1060
  });
1008
1061
  };
1009
- const hiddenIO = new IntersectionObserver(hiddenCallback, { threshold: 0 });
1010
- raf(() => hiddenIO === null || hiddenIO === void 0 ? void 0 : hiddenIO.observe(this.el));
1062
+ const hiddenIO = new IntersectionObserver(hiddenCallback, { threshold: 0, root: el });
1063
+ raf(() => hiddenIO === null || hiddenIO === void 0 ? void 0 : hiddenIO.observe(intersectionTrackerRef));
1011
1064
  /**
1012
1065
  * Datetime uses Ionic components that emit
1013
1066
  * ionFocus and ionBlur. These events are
@@ -1081,7 +1134,7 @@ const Datetime = class {
1081
1134
  });
1082
1135
  }
1083
1136
  componentWillLoad() {
1084
- const { el, highlightedDates, multiple, presentation, preferWheel } = this;
1137
+ const { el, formatOptions, highlightedDates, multiple, presentation, preferWheel } = this;
1085
1138
  if (multiple) {
1086
1139
  if (presentation !== 'date') {
1087
1140
  printIonWarning('Multiple date selection is only supported for presentation="date".', el);
@@ -1098,6 +1151,10 @@ const Datetime = class {
1098
1151
  printIonWarning('The highlightedDates property is not supported with preferWheel="true".', el);
1099
1152
  }
1100
1153
  }
1154
+ if (formatOptions) {
1155
+ checkForPresentationFormatMismatch(el, presentation, formatOptions);
1156
+ warnIfTimeZoneProvided(el, formatOptions);
1157
+ }
1101
1158
  const hourValues = (this.parsedHourValues = convertToArrayOfNumbers(this.hourValues));
1102
1159
  const minuteValues = (this.parsedMinuteValues = convertToArrayOfNumbers(this.minuteValues));
1103
1160
  const monthValues = (this.parsedMonthValues = convertToArrayOfNumbers(this.monthValues));
@@ -1605,7 +1662,7 @@ const Datetime = class {
1605
1662
  return h("slot", { name: "time-label" }, "Time");
1606
1663
  }
1607
1664
  renderTimeOverlay() {
1608
- const { disabled, hourCycle, isTimePopoverOpen, locale } = this;
1665
+ const { disabled, hourCycle, isTimePopoverOpen, locale, formatOptions } = this;
1609
1666
  const computedHourCycle = getHourCycle(locale, hourCycle);
1610
1667
  const activePart = this.getActivePartsWithFallback();
1611
1668
  return [
@@ -1625,7 +1682,7 @@ const Datetime = class {
1625
1682
  await popoverRef.onWillDismiss();
1626
1683
  this.isTimePopoverOpen = false;
1627
1684
  }
1628
- } }, getLocalizedTime(locale, activePart, computedHourCycle)),
1685
+ } }, getLocalizedTime(locale, activePart, computedHourCycle, formatOptions === null || formatOptions === void 0 ? void 0 : formatOptions.time)),
1629
1686
  h("ion-popover", { alignment: "center", translucent: true, overlayIndex: 1, arrow: false, onWillPresent: (ev) => {
1630
1687
  /**
1631
1688
  * Intersection Observers do not consistently fire between Blink and Webkit
@@ -1648,7 +1705,8 @@ const Datetime = class {
1648
1705
  ];
1649
1706
  }
1650
1707
  getHeaderSelectedDateText() {
1651
- const { activeParts, multiple, titleSelectedDatesFormatter } = this;
1708
+ var _a;
1709
+ const { activeParts, formatOptions, multiple, titleSelectedDatesFormatter } = this;
1652
1710
  const isArray = Array.isArray(activeParts);
1653
1711
  let headerText;
1654
1712
  if (multiple && isArray && activeParts.length !== 1) {
@@ -1664,7 +1722,7 @@ const Datetime = class {
1664
1722
  }
1665
1723
  else {
1666
1724
  // for exactly 1 day selected (multiple set or not), show a formatted version of that
1667
- headerText = getMonthAndDay(this.locale, this.getActivePartsWithFallback());
1725
+ 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' });
1668
1726
  }
1669
1727
  return headerText;
1670
1728
  }
@@ -1753,7 +1811,7 @@ const Datetime = class {
1753
1811
  const hasDatePresentation = presentation === 'date' || presentation === 'date-time' || presentation === 'time-date';
1754
1812
  const hasWheelVariant = hasDatePresentation && preferWheel;
1755
1813
  renderHiddenInput(true, el, name, formatValue(value), disabled);
1756
- return (h(Host, { key: 'b00545b7bbba3ccf35d53c1eec4f1614fb830c11', "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: Object.assign({}, createColorClasses(color, {
1814
+ return (h(Host, { key: '064dc72b5494a687e93e7605f7e1ec2d00f523ad', "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: Object.assign({}, createColorClasses(color, {
1757
1815
  [mode]: true,
1758
1816
  ['datetime-readonly']: readonly,
1759
1817
  ['datetime-disabled']: disabled,
@@ -1763,13 +1821,15 @@ const Datetime = class {
1763
1821
  [`datetime-size-${size}`]: true,
1764
1822
  [`datetime-prefer-wheel`]: hasWheelVariant,
1765
1823
  [`datetime-grid`]: isGridStyle,
1766
- })) }, this.renderDatetime(mode)));
1824
+ })) }, h("div", { key: '258b34ca5d9bacfaa886a7de278f41a30be48c44', class: "intersection-tracker", ref: (el) => (this.intersectionTrackerRef = el) }), this.renderDatetime(mode)));
1767
1825
  }
1768
1826
  get el() { return getElement(this); }
1769
1827
  static get watchers() { return {
1828
+ "formatOptions": ["formatOptionsChanged"],
1770
1829
  "disabled": ["disabledChanged"],
1771
1830
  "min": ["minChanged"],
1772
1831
  "max": ["maxChanged"],
1832
+ "presentation": ["presentationChanged"],
1773
1833
  "yearValues": ["yearValuesChanged"],
1774
1834
  "monthValues": ["monthValuesChanged"],
1775
1835
  "dayValues": ["dayValuesChanged"],
@@ -2014,11 +2074,11 @@ const Picker = class {
2014
2074
  render() {
2015
2075
  const { htmlAttributes } = this;
2016
2076
  const mode = getIonMode(this);
2017
- return (h(Host, Object.assign({ key: 'c266cc072afaba2da22f70d8b62dc4bc6756d188', "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
2077
+ return (h(Host, Object.assign({ key: 'd2a0406625c8de0604a926a807f63c7f25bf4bab', "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
2018
2078
  zIndex: `${20000 + this.overlayIndex}`,
2019
2079
  }, class: Object.assign({ [mode]: true,
2020
2080
  // Used internally for styling
2021
- [`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" })));
2081
+ [`picker-${mode}`]: true, 'overlay-hidden': true }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonPickerWillDismiss: this.dispatchCancelHandler }), h("ion-backdrop", { key: '776a45c3df93ab4683727bb5c8ba0085f4336586', visible: this.showBackdrop, tappable: this.backdropDismiss }), h("div", { key: 'fc34d3838cfc5c38097dac9e749dbf7433e1a10a', tabindex: "0" }), h("div", { key: '49bf9e92e301cbe12e2e683df110cccd6c9b8042', class: "picker-wrapper ion-overlay-wrapper", role: "dialog" }, h("div", { key: 'f2810a07ea067be31c169f36cbb44ca8a5dc219b', 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: 'f2d2a4652a8e368e40d4462d2b5e4c8095001b64', class: "picker-columns" }, h("div", { key: '143ee78c8e0543f3a2f897097ff09e18f5b68016', class: "picker-above-highlight" }), this.presented && this.columns.map((c) => h("ion-picker-column", { col: c })), h("div", { key: '47716d2e923ca096a0bd48a07fee2deae1b1a567', class: "picker-below-highlight" }))), h("div", { key: 'ecd3b459cae6492330c7c5847c2b4cd214c9c615', tabindex: "0" })));
2022
2082
  }
2023
2083
  get el() { return getElement(this); }
2024
2084
  static get watchers() { return {
@@ -2375,9 +2435,9 @@ const PickerColumnCmp = class {
2375
2435
  render() {
2376
2436
  const col = this.col;
2377
2437
  const mode = getIonMode(this);
2378
- return (h(Host, { key: '06e2ae483a3bcf4fe721ad0c48cded6a1efdc6c0', class: Object.assign({ [mode]: true, 'picker-col': true, 'picker-opts-left': this.col.align === 'left', 'picker-opts-right': this.col.align === 'right' }, getClassMap(col.cssClass)), style: {
2438
+ return (h(Host, { key: 'b0d3c8b8315f130f1bcddcbc53ee9949676423bf', class: Object.assign({ [mode]: true, 'picker-col': true, 'picker-opts-left': this.col.align === 'left', 'picker-opts-right': this.col.align === 'right' }, getClassMap(col.cssClass)), style: {
2379
2439
  'max-width': this.col.columnWidth,
2380
- } }, col.prefix && (h("div", { class: "picker-prefix", style: { width: col.prefixWidth } }, col.prefix)), h("div", { key: '14bea013788d899edf7155eb3cc10f79fe8e4690', class: "picker-opts", style: { maxWidth: col.optionsWidth }, ref: (el) => (this.optsEl = el) }, col.options.map((o, index) => (h("button", { "aria-label": o.ariaLabel, class: { 'picker-opt': true, 'picker-opt-disabled': !!o.disabled }, "opt-index": index }, o.text)))), col.suffix && (h("div", { class: "picker-suffix", style: { width: col.suffixWidth } }, col.suffix))));
2440
+ } }, col.prefix && (h("div", { class: "picker-prefix", style: { width: col.prefixWidth } }, col.prefix)), h("div", { key: '2c0471c265bc3dfa2d415da77b8a70850e74458e', class: "picker-opts", style: { maxWidth: col.optionsWidth }, ref: (el) => (this.optsEl = el) }, col.options.map((o, index) => (h("button", { "aria-label": o.ariaLabel, class: { 'picker-opt': true, 'picker-opt-disabled': !!o.disabled }, "opt-index": index }, o.text)))), col.suffix && (h("div", { class: "picker-suffix", style: { width: col.suffixWidth } }, col.suffix))));
2381
2441
  }
2382
2442
  get el() { return getElement(this); }
2383
2443
  static get watchers() { return {
@@ -55,12 +55,12 @@ const Fab = class {
55
55
  render() {
56
56
  const { horizontal, vertical, edge } = this;
57
57
  const mode = getIonMode(this);
58
- return (h(Host, { key: 'eb7470763cfaadd229036fe4e04913cb4a0551c7', class: {
58
+ return (h(Host, { key: '2960656845d8ab1d643e56870cfeefbceb44fb20', class: {
59
59
  [mode]: true,
60
60
  [`fab-horizontal-${horizontal}`]: horizontal !== undefined,
61
61
  [`fab-vertical-${vertical}`]: vertical !== undefined,
62
62
  'fab-edge': edge,
63
- } }, h("slot", { key: 'daf53f8c644db866f69d41401dba7a2791c37ac3' })));
63
+ } }, h("slot", { key: 'eed164a50594167959905a90d678d417bc99098d' })));
64
64
  }
65
65
  get el() { return getElement(this); }
66
66
  static get watchers() { return {
@@ -129,7 +129,7 @@ const FabButton = class {
129
129
  rel: this.rel,
130
130
  target: this.target,
131
131
  };
132
- return (h(Host, { key: '78f11aaac39bf0fcb25b64885ee61619223e4241', onClick: this.onClick, "aria-disabled": disabled ? 'true' : null, class: createColorClasses(color, {
132
+ return (h(Host, { key: 'c6d1a3ea95ee1fb6c86447881ff8ed7d885b9fb5', onClick: this.onClick, "aria-disabled": disabled ? 'true' : null, class: createColorClasses(color, {
133
133
  [mode]: true,
134
134
  'fab-button-in-list': inList,
135
135
  'fab-button-translucent-in-list': inList && translucent,
@@ -140,7 +140,7 @@ const FabButton = class {
140
140
  'ion-activatable': true,
141
141
  'ion-focusable': true,
142
142
  [`fab-button-${size}`]: size !== undefined,
143
- }) }, h(TagType, Object.assign({ key: 'a29b5eff122006d463ef3e10e1abe8378de07dc5' }, attrs, { class: "button-native", part: "native", disabled: disabled, onFocus: this.onFocus, onBlur: this.onBlur, onClick: (ev) => openURL(href, ev, this.routerDirection, this.routerAnimation) }, inheritedAttributes), h("ion-icon", { key: 'e554c978fd9825eec9ca958f5b481f662ed6daa4', "aria-hidden": "true", icon: this.closeIcon, part: "close-icon", class: "close-icon", lazy: false }), h("span", { key: 'd7dd93e93343767d223800899f0fd4c405845023', class: "button-inner" }, h("slot", { key: 'dd5df0945385480e7551e24117d136cd6b231638' })), mode === 'md' && h("ion-ripple-effect", null))));
143
+ }) }, h(TagType, Object.assign({ key: 'd57e55e43e3e1fa7a255e25bfb9eb81a20200aa4' }, attrs, { class: "button-native", part: "native", disabled: disabled, onFocus: this.onFocus, onBlur: this.onBlur, onClick: (ev) => openURL(href, ev, this.routerDirection, this.routerAnimation) }, inheritedAttributes), h("ion-icon", { key: '561252585dc5f5ed260987fc8fef2558700b2700', "aria-hidden": "true", icon: this.closeIcon, part: "close-icon", class: "close-icon", lazy: false }), h("span", { key: 'd156660a55d4d849c24368ee79217e66c6423b37', class: "button-inner" }, h("slot", { key: '35d4507eec7e4f646e1ef9206b8d6c9fd5a43c37' })), mode === 'md' && h("ion-ripple-effect", null))));
144
144
  }
145
145
  get el() { return getElement(this); }
146
146
  };
@@ -168,11 +168,11 @@ const FabList = class {
168
168
  }
169
169
  render() {
170
170
  const mode = getIonMode(this);
171
- return (h(Host, { key: 'c786680f9868700913a182f908f25a612ec08498', class: {
171
+ return (h(Host, { key: 'edbed7730aa2f177a6fb39a89af805b9699bc9ae', class: {
172
172
  [mode]: true,
173
173
  'fab-list-active': this.activated,
174
174
  [`fab-list-side-${this.side}`]: true,
175
- } }, h("slot", { key: '547f8cb69ab2371095e3deeef1dc13fc1053bdf6' })));
175
+ } }, h("slot", { key: '3ecb467b6d09dc02a1ab3cb76403f7c56e8ec6b2' })));
176
176
  }
177
177
  get el() { return getElement(this); }
178
178
  static get watchers() { return {
@@ -76,7 +76,7 @@ const Img = class {
76
76
  render() {
77
77
  const { loadSrc, alt, onLoad, loadError, inheritedAttributes } = this;
78
78
  const { draggable } = inheritedAttributes;
79
- return (h(Host, { key: '1983ddd575d8f870f249d37a3897dbcc110bf4d7', class: getIonMode(this) }, h("img", { key: 'f2ba013804f6ed9e5dadb08c75e47c0f844e67f3', decoding: "async", src: loadSrc, alt: alt, onLoad: onLoad, onError: loadError, part: "image", draggable: isDraggable(draggable) })));
79
+ return (h(Host, { key: '212cb19b83defa47a677e44659eccc5e7e1bc5a2', class: getIonMode(this) }, h("img", { key: '975230d5ef5f262c8e5f040eb59cd1033241f3c8', decoding: "async", src: loadSrc, alt: alt, onLoad: onLoad, onError: loadError, part: "image", draggable: isDraggable(draggable) })));
80
80
  }
81
81
  get el() { return getElement(this); }
82
82
  static get watchers() { return {
@@ -176,7 +176,7 @@ const InfiniteScroll = class {
176
176
  render() {
177
177
  const mode = getIonMode(this);
178
178
  const disabled = this.disabled;
179
- return (h(Host, { key: '8b5da92c7a1c118cd6c6a6be8f21b11b79f166bd', class: {
179
+ return (h(Host, { key: 'cf712b0f22fe89b41377402da44f5575118ed34f', class: {
180
180
  [mode]: true,
181
181
  'infinite-scroll-loading': this.isLoading,
182
182
  'infinite-scroll-enabled': !disabled,
@@ -218,11 +218,11 @@ const InfiniteScrollContent = class {
218
218
  }
219
219
  render() {
220
220
  const mode = getIonMode(this);
221
- return (h(Host, { key: '8ffd8ff4c951be0c2b1f48fd4be3a2d7765a989f', class: {
221
+ return (h(Host, { key: '38c67d2c7ea4c304e71dacea64add0bffab69906', class: {
222
222
  [mode]: true,
223
223
  // Used internally for styling
224
224
  [`infinite-scroll-content-${mode}`]: true,
225
- } }, h("div", { key: 'd7d03485501b5e2fde7c132309bb6358818eb0cd', class: "infinite-loading" }, this.loadingSpinner && (h("div", { class: "infinite-loading-spinner" }, h("ion-spinner", { name: this.loadingSpinner }))), this.loadingText !== undefined && this.renderLoadingText())));
225
+ } }, h("div", { key: 'a23484ccbaf65e0e3ecb59befea425cfdbc782fd', class: "infinite-loading" }, this.loadingSpinner && (h("div", { class: "infinite-loading-spinner" }, h("ion-spinner", { name: this.loadingSpinner }))), this.loadingText !== undefined && this.renderLoadingText())));
226
226
  }
227
227
  };
228
228
  InfiniteScrollContent.style = {
@@ -44,12 +44,12 @@ const ItemOption = class {
44
44
  href: this.href,
45
45
  target: this.target,
46
46
  };
47
- return (h(Host, { key: '8d8ef0455e0e46d31a84b6f9e83e377e0579f04b', onClick: this.onClick, class: createColorClasses(this.color, {
47
+ return (h(Host, { key: '7e208b463b2d36984791a7c9c1d24af88b468a03', onClick: this.onClick, class: createColorClasses(this.color, {
48
48
  [mode]: true,
49
49
  'item-option-disabled': disabled,
50
50
  'item-option-expandable': expandable,
51
51
  'ion-activatable': true,
52
- }) }, h(TagType, Object.assign({ key: '0d4833cefd206862a75fdef8744e659cff24a39f' }, attrs, { class: "button-native", part: "native", disabled: disabled }), h("span", { key: 'bfbdab3ee6cfc884eb2bd60c92cf919f4b671c27', class: "button-inner" }, h("slot", { key: '968ebecbd9e8ca5015106d79e5d29b4a1999d39b', name: "top" }), h("div", { key: '38677cd72df6447a4e934695ab08857460be800d', class: "horizontal-wrapper" }, h("slot", { key: 'e65131d2e3f12c3743c7229b0a7f381824a45281', name: "start" }), h("slot", { key: 'c3a9bd83c455a79395574ff4d862299fd9340cd2', name: "icon-only" }), h("slot", { key: '161ca1daed265e8990d28f74744476a37d555d85' }), h("slot", { key: 'd5ecafceada1f8c3c16a2cb6511368828009081f', name: "end" })), h("slot", { key: '39e6a9dffc2cb9e2e9a200f6c669ed47f9a485aa', name: "bottom" })), mode === 'md' && h("ion-ripple-effect", null))));
52
+ }) }, h(TagType, Object.assign({ key: '9f48210793e88f25b675add863453432e6d8be51' }, attrs, { class: "button-native", part: "native", disabled: disabled }), h("span", { key: '3ebb5d9b7369f77ca49c8d700a95e4e2335a7f24', class: "button-inner" }, h("slot", { key: '7df01a2c40554effe0e36e7fe29ac469a89ad395', name: "top" }), h("div", { key: '1bdc411990a89a0523dd170bf4d61c2f28af3018', class: "horizontal-wrapper" }, h("slot", { key: '967a0cc8ff611439fddf28c20c3f197be1a314a5', name: "start" }), h("slot", { key: '7848ded44ce1b0e303f1c1a423fc1ae51e5997d4', name: "icon-only" }), h("slot", { key: '6076bb1a50cebe374ecd8507133eaccd2ee2d08b' }), h("slot", { key: '71505008df081744492fb22b41229ada64506834', name: "end" })), h("slot", { key: 'c213321eafe801c1ace8573b4736c2f0ab585703', name: "bottom" })), mode === 'md' && h("ion-ripple-effect", null))));
53
53
  }
54
54
  get el() { return getElement(this); }
55
55
  };
@@ -79,7 +79,7 @@ const ItemOptions = class {
79
79
  render() {
80
80
  const mode = getIonMode(this);
81
81
  const isEnd = isEndSide(this.side);
82
- return (h(Host, { key: '04d6baf62154da6ab9db5e679f982fe3fe276f89', class: {
82
+ return (h(Host, { key: '42ec58a1a2a6a886309595103468d2c39e81f58b', class: {
83
83
  [mode]: true,
84
84
  // Used internally for styling
85
85
  [`item-options-${mode}`]: true,
@@ -487,7 +487,7 @@ const ItemSliding = class {
487
487
  }
488
488
  render() {
489
489
  const mode = getIonMode(this);
490
- return (h(Host, { key: 'f666dd119a72247feac11dcd704059fce7677325', class: {
490
+ return (h(Host, { key: '83e1673fc5af892612deb9b49d5e792b8b0b6473', class: {
491
491
  [mode]: true,
492
492
  'item-sliding-active-slide': this.state !== 2 /* SlidingState.Disabled */,
493
493
  'item-sliding-active-options-end': (this.state & 8 /* SlidingState.End */) !== 0,
@@ -293,11 +293,11 @@ const ItemDivider = class {
293
293
  }
294
294
  render() {
295
295
  const mode = getIonMode(this);
296
- return (h(Host, { key: '8422b960dfcce4ff1370d9c185e285bb4a3688d5', class: createColorClasses(this.color, {
296
+ return (h(Host, { key: 'd9d5993694639e8f1ed589f0e8c3f4920ce30e02', class: createColorClasses(this.color, {
297
297
  [mode]: true,
298
298
  'item-divider-sticky': this.sticky,
299
299
  item: true,
300
- }) }, h("slot", { key: '240514b96ec48262040460775c8eb0a58d6acfa8', name: "start" }), h("div", { key: 'ec18c092c81cb96f8c49ed7d4dede96c9a3e3f97', class: "item-divider-inner" }, h("div", { key: '9c3f3dcb9b14fd1d37fb1104b3ba953dc9a3e894', class: "item-divider-wrapper" }, h("slot", { key: '6b8e51eb86a5567b80a91034b26228105796a82d' })), h("slot", { key: '7ccb661e1309c1ecca09a823f8e08b1cf90d95dd', name: "end" }))));
300
+ }) }, h("slot", { key: '1da8c38cbf07ef591ceae94b0d70bf620990e568', name: "start" }), h("div", { key: '349a581fd1688b01ce7c67da99ae22cb4a5a85f7', class: "item-divider-inner" }, h("div", { key: '80e22ba4f5da2af40bb32a445b840baa59edfbcc', class: "item-divider-wrapper" }, h("slot", { key: '6d3fb95c8eba128e56defccbcc5d4b1fa3ec4c4a' })), h("slot", { key: '83a97c131348c8cf840c30ccbf83c78edc125c14', name: "end" }))));
301
301
  }
302
302
  get el() { return getElement(this); }
303
303
  };
@@ -318,7 +318,7 @@ const ItemGroup = class {
318
318
  }
319
319
  render() {
320
320
  const mode = getIonMode(this);
321
- return (h(Host, { key: 'b33f23544ddeeeb61847b146b1dcb7a9ba30af18', role: "group", class: {
321
+ return (h(Host, { key: '1d7de42c40d5f37324342fa7be2420bf6499705e', role: "group", class: {
322
322
  [mode]: true,
323
323
  // Used internally for styling
324
324
  [`item-group-${mode}`]: true,
@@ -388,7 +388,7 @@ const Label = class {
388
388
  render() {
389
389
  const position = this.position;
390
390
  const mode = getIonMode(this);
391
- return (h(Host, { key: '813192a6460057c6d1e42f50f3f257bee2f550d8', class: createColorClasses(this.color, {
391
+ return (h(Host, { key: 'c80cc1b4dcd56f614efc1e63ca80bca2f20a7151', class: createColorClasses(this.color, {
392
392
  [mode]: true,
393
393
  'in-item-color': hostContext('ion-item.ion-color', this.el),
394
394
  [`label-${position}`]: position !== undefined,
@@ -435,7 +435,7 @@ const List = class {
435
435
  render() {
436
436
  const mode = getIonMode(this);
437
437
  const { lines, inset } = this;
438
- return (h(Host, { key: '2cb1b689d9460d9576b471bb8b13d14fe34d1c2c', role: "list", class: {
438
+ return (h(Host, { key: '7f259d2a107807065a440cca848ececa0da60458', role: "list", class: {
439
439
  [mode]: true,
440
440
  // Used internally for styling
441
441
  [`list-${mode}`]: true,
@@ -466,10 +466,10 @@ const ListHeader = class {
466
466
  render() {
467
467
  const { lines } = this;
468
468
  const mode = getIonMode(this);
469
- return (h(Host, { key: '1b832a6882307d40fe4afc9a95a5db4fbdff60a3', class: createColorClasses(this.color, {
469
+ return (h(Host, { key: '27a08e9dc880db9377608ea262e254b0856b0d5c', class: createColorClasses(this.color, {
470
470
  [mode]: true,
471
471
  [`list-header-lines-${lines}`]: lines !== undefined,
472
- }) }, h("div", { key: 'a53a3f05727b510d1b912c10c92a4aa58f4fe860', class: "list-header-inner" }, h("slot", { key: '9377dee83f050b2cb2c5b7c5d106668cc81d8f90' }))));
472
+ }) }, h("div", { key: 'edd68f126ee5d815e6ae13e9662e8cedbd2d46e5', class: "list-header-inner" }, h("slot", { key: 'dae94a382ef09bb90d3ff3fbb2306515acfc2014' }))));
473
473
  }
474
474
  };
475
475
  ListHeader.style = {
@@ -490,9 +490,9 @@ const Note = class {
490
490
  }
491
491
  render() {
492
492
  const mode = getIonMode(this);
493
- return (h(Host, { key: 'eebc0ea94483a248192408a1546739700281d2ae', class: createColorClasses(this.color, {
493
+ return (h(Host, { key: 'de9f59a3e1700776780e61def3044901e1d1bef5', class: createColorClasses(this.color, {
494
494
  [mode]: true,
495
- }) }, h("slot", { key: '33018e11967398327a0e7c20522547a4d9e8f55b' })));
495
+ }) }, h("slot", { key: '30f98649d4d31a297ab71d23ed38fa021540a8f2' })));
496
496
  }
497
497
  };
498
498
  Note.style = {
@@ -525,11 +525,11 @@ const SkeletonText = class {
525
525
  const animated = this.animated && config.getBoolean('animated', true);
526
526
  const inMedia = hostContext('ion-avatar', this.el) || hostContext('ion-thumbnail', this.el);
527
527
  const mode = getIonMode(this);
528
- return (h(Host, { key: 'ee3cd9a5448fb69c8ddfc88a993f9968e1a381ff', class: {
528
+ return (h(Host, { key: '2d9e785d3026faf76d0e970e3bfe33258f29046b', class: {
529
529
  [mode]: true,
530
530
  'skeleton-text-animated': animated,
531
531
  'in-media': inMedia,
532
- } }, h("span", { key: '8aa792724a3b77877062e9aae838d9e1572b576f' }, "\u00A0")));
532
+ } }, h("span", { key: 'd1800f5fd176a8daa216e8b889e427770bf64a05' }, "\u00A0")));
533
533
  }
534
534
  get el() { return getElement(this); }
535
535
  };
@@ -257,9 +257,9 @@ const Loading = class {
257
257
  * Otherwise, don't set aria-labelledby.
258
258
  */
259
259
  const ariaLabelledBy = message !== undefined ? msgId : null;
260
- return (h(Host, Object.assign({ key: '95123f54ba1db5e59563d79db075315b43ed20f7', role: "dialog", "aria-modal": "true", "aria-labelledby": ariaLabelledBy, tabindex: "-1" }, htmlAttributes, { style: {
260
+ return (h(Host, Object.assign({ key: '7d4f3df4a869e66b59ce237b50b374cac4a296d3', role: "dialog", "aria-modal": "true", "aria-labelledby": ariaLabelledBy, tabindex: "-1" }, htmlAttributes, { style: {
261
261
  zIndex: `${40000 + this.overlayIndex}`,
262
- }, 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" })));
262
+ }, onIonBackdropTap: this.onBackdropTap, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'loading-translucent': this.translucent }) }), h("ion-backdrop", { key: '9d72026f73b56bc38a5317992caa17068f8402b5', visible: this.showBackdrop, tappable: this.backdropDismiss }), h("div", { key: '67848b3058d4875b55cef88ccc0b5160cc9f5d9d', tabindex: "0" }), h("div", { key: 'c275700b6cd77d7a0404b59e89ea97a75a4a22e9', 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: '2333ff2f0d76bebe58cba85da0e5a38262ce33e7', tabindex: "0" })));
263
263
  }
264
264
  get el() { return getElement(this); }
265
265
  static get watchers() { return {
@@ -612,13 +612,13 @@ const Menu = class {
612
612
  * the ionBackButton listener in the menu controller
613
613
  * will handle closing the menu when Escape is pressed.
614
614
  */
615
- return (h(Host, { key: 'c6bf01fd87e31cda09c0c35900cb01ea19d61781', onKeyDown: shouldUseCloseWatcher() ? null : this.onKeydown, role: "navigation", "aria-label": inheritedAttributes['aria-label'] || 'menu', class: {
615
+ return (h(Host, { key: '6c63bd340b8e2fc19b638189af44eae3627f8c0a', onKeyDown: shouldUseCloseWatcher() ? null : this.onKeydown, role: "navigation", "aria-label": inheritedAttributes['aria-label'] || 'menu', class: {
616
616
  [mode]: true,
617
617
  [`menu-type-${type}`]: true,
618
618
  'menu-enabled': !disabled,
619
619
  [`menu-side-${side}`]: true,
620
620
  'menu-pane-visible': isPaneVisible,
621
- } }, h("div", { key: '6d818a470a74c11c10554d45d8586436a51f961e', class: "menu-inner", part: "container", ref: (el) => (this.menuInnerEl = el) }, h("slot", { key: '3512e444ec6c6bf2a719b1dd713be9a7652f77c9' })), h("ion-backdrop", { key: '618a5316462406fa47929e4dcd5a8e8c9057a418', ref: (el) => (this.backdropEl = el), class: "menu-backdrop", tappable: false, stopPropagation: false, part: "backdrop" })));
621
+ } }, h("div", { key: '8cad9e601c8ca1d1dca32681937362a55311e015', class: "menu-inner", part: "container", ref: (el) => (this.menuInnerEl = el) }, h("slot", { key: 'ce8ab737360c3a71ac6408d21fcb71485a189827' })), h("ion-backdrop", { key: 'a7e5f9ebe98996c7f5ab0ef27223a2f24bf63646', ref: (el) => (this.backdropEl = el), class: "menu-backdrop", tappable: false, stopPropagation: false, part: "backdrop" })));
622
622
  }
623
623
  get el() { return getElement(this); }
624
624
  static get watchers() { return {
@@ -691,7 +691,7 @@ const MenuButton = class {
691
691
  type: this.type,
692
692
  };
693
693
  const ariaLabel = inheritedAttributes['aria-label'] || 'menu';
694
- return (h(Host, { key: '2fd7130b8d28695162f7efebbd2131e5e9e4f330', onClick: this.onClick, "aria-disabled": disabled ? 'true' : null, "aria-hidden": hidden ? 'true' : null, class: createColorClasses(color, {
694
+ return (h(Host, { key: '23364bf8eae83c3a422bacb0f43bf957551a7b7a', onClick: this.onClick, "aria-disabled": disabled ? 'true' : null, "aria-hidden": hidden ? 'true' : null, class: createColorClasses(color, {
695
695
  [mode]: true,
696
696
  button: true, // ion-buttons target .button
697
697
  'menu-button-hidden': hidden,
@@ -700,7 +700,7 @@ const MenuButton = class {
700
700
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
701
701
  'ion-activatable': true,
702
702
  'ion-focusable': true,
703
- }) }, h("button", Object.assign({ key: 'fa6b1fb9291df812b04065b4b0ebdfd28e5217eb' }, attrs, { disabled: disabled, class: "button-native", part: "native", "aria-label": ariaLabel }), h("span", { key: '88106a08070ebff7457c581301efe649829aded2', class: "button-inner" }, h("slot", { key: 'e3edfb89e5705b2c08c66f3d3452457667de3657' }, h("ion-icon", { key: '24678e9c3bb2f1f3db113a2ae0ec93e407a7de0c', part: "icon", icon: menuIcon, mode: mode, lazy: false, "aria-hidden": "true" }))), mode === 'md' && h("ion-ripple-effect", { type: "unbounded" }))));
703
+ }) }, h("button", Object.assign({ key: 'dacfa6f0881366385f3c3305fb656e5e8d4eaab8' }, attrs, { disabled: disabled, class: "button-native", part: "native", "aria-label": ariaLabel }), h("span", { key: '2a11edcf830bde847cca810af461f4bcffd6aa30', class: "button-inner" }, h("slot", { key: 'f6b1299cf096abe6f25e1f60ce6be2bbdfddcc73' }, h("ion-icon", { key: '32c900a4b75ab90b149227075df4598539d09b5f', part: "icon", icon: menuIcon, mode: mode, lazy: false, "aria-hidden": "true" }))), mode === 'md' && h("ion-ripple-effect", { type: "unbounded" }))));
704
704
  }
705
705
  get el() { return getElement(this); }
706
706
  };
@@ -731,10 +731,10 @@ const MenuToggle = class {
731
731
  render() {
732
732
  const mode = getIonMode(this);
733
733
  const hidden = this.autoHide && !this.visible;
734
- return (h(Host, { key: '5b75baade530bf9e7ed9165a5db3e513975e22f2', onClick: this.onClick, "aria-hidden": hidden ? 'true' : null, class: {
734
+ return (h(Host, { key: '981008b9e03870363f2eba75d9d22823ed79753e', onClick: this.onClick, "aria-hidden": hidden ? 'true' : null, class: {
735
735
  [mode]: true,
736
736
  'menu-toggle-hidden': hidden,
737
- } }, h("slot", { key: '65dea458274b685125c22af54aa153cf4977113c' })));
737
+ } }, h("slot", { key: '1c88aec9c2ee7c67ee37be71814fed35144bbea7' })));
738
738
  }
739
739
  };
740
740
  MenuToggle.style = IonMenuToggleStyle0;
@@ -1645,9 +1645,9 @@ const Modal = class {
1645
1645
  const mode = getIonMode(this);
1646
1646
  const isCardModal = presentingElement !== undefined && mode === 'ios';
1647
1647
  const isHandleCycle = handleBehavior === 'cycle';
1648
- return (h(Host, Object.assign({ key: '856aa156d687382cbd4a7ee47f553b96105fcf7d', "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
1648
+ return (h(Host, Object.assign({ key: '67ef0269a5e9b542d0c2acaa03a2f7f46b8cf0b5', "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
1649
1649
  zIndex: `${20000 + this.overlayIndex}`,
1650
- }, 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: '98205df704505f77c4878cd0b92598c1525b1a85', 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: '412e76909a459f80bdd3c311d88407890c9aed4f',
1650
+ }, 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: 'edd98375e98d887dbea232adb81b74f164fa058b', 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: '40437670391544b57b8a9943ef3b49de7acbd873',
1651
1651
  /*
1652
1652
  role and aria-modal must be used on the
1653
1653
  same element. They must also be set inside the
@@ -1656,7 +1656,7 @@ const Modal = class {
1656
1656
  */
1657
1657
  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",
1658
1658
  // Prevents the handle from receiving keyboard focus when it does not cycle
1659
- 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: '3e532328bc1eeb1d1213f9b3c098e89b77590620' }))));
1659
+ 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: 'dfe2095d9e1adb075dc09d1927ef24ea09ea5435' }))));
1660
1660
  }
1661
1661
  get el() { return getElement(this); }
1662
1662
  static get watchers() { return {
@@ -895,7 +895,7 @@ const Nav = class {
895
895
  }
896
896
  }
897
897
  render() {
898
- return h("slot", { key: '654286a8a7ef03d4a22497eb51e781a9a8979774' });
898
+ return h("slot", { key: '8254ea10bef0575c13f8b0ddbe4643bec19f2366' });
899
899
  }
900
900
  get el() { return getElement(this); }
901
901
  static get watchers() { return {
@@ -937,7 +937,7 @@ const NavLink = class {
937
937
  this.routerAnimation = undefined;
938
938
  }
939
939
  render() {
940
- return h(Host, { key: 'a781794425ad0866705bc6691256184b93477a74', onClick: this.onClick });
940
+ return h(Host, { key: 'dfbfc1a69c48248a8861463ed31c693be6543f32', onClick: this.onClick });
941
941
  }
942
942
  get el() { return getElement(this); }
943
943
  };
@@ -250,7 +250,11 @@ const PickerColumnInternal = class {
250
250
  */
251
251
  componentWillLoad() {
252
252
  const visibleCallback = (entries) => {
253
- const ev = entries[0];
253
+ /**
254
+ * Browsers will sometimes group multiple IO events into a single callback.
255
+ * As a result, we want to grab the last/most recent event in case there are multiple events.
256
+ */
257
+ const ev = entries[entries.length - 1];
254
258
  if (ev.isIntersecting) {
255
259
  const { activeItem, el } = this;
256
260
  this.isColumnVisible = true;
@@ -339,18 +343,18 @@ const PickerColumnInternal = class {
339
343
  * the attribute can be moved to datetime.tsx and set on every
340
344
  * instance of ion-picker-column-internal there instead.
341
345
  */
342
- return (h(Host, { key: 'd0e3818aa4ab06aefd988d1b42ae754244727b8f', exportparts: `${PICKER_ITEM_PART}, ${PICKER_ITEM_ACTIVE_PART}`, disabled: pickerDisabled, tabindex: pickerDisabled ? null : 0, class: createColorClasses(color, {
346
+ return (h(Host, { key: 'eeb70e31fca7bff943a2fc29a3da0383520fdd84', exportparts: `${PICKER_ITEM_PART}, ${PICKER_ITEM_ACTIVE_PART}`, disabled: pickerDisabled, tabindex: pickerDisabled ? null : 0, class: createColorClasses(color, {
343
347
  [mode]: true,
344
348
  ['picker-column-active']: isActive,
345
349
  ['picker-column-numeric-input']: numericInput,
346
- }) }, h("div", { key: 'ec3b16415db5f64e3fab37fda023560ebcdc9423', class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: '40c78c9a1277807572d73e23048c2730cab88f5a', class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: 'c51fa817f6999356cf3568a46098e954936b45d5', class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0"), items.map((item, index) => {
350
+ }) }, h("div", { key: '08cffb51ab2ce1a4b83e35b25afd2880d6949d8e', class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: '88389ba5287ee5e251fa36a0e13a888c8dfbf8e8', class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: '2dc958f37a939a0fbbc35d92482e9c64741d8f5a', class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0"), items.map((item, index) => {
347
351
  const isItemDisabled = pickerDisabled || item.disabled || false;
348
352
  return (h("button", { tabindex: "-1", class: {
349
353
  'picker-item': true,
350
354
  }, "data-value": item.value, "data-index": index, onClick: (ev) => {
351
355
  this.centerPickerItemInView(ev.target, true);
352
356
  }, disabled: isItemDisabled, part: PICKER_ITEM_PART }, item.text));
353
- }), h("div", { key: '80a7461dfe571f46466219b05007b021711aed32', class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: 'fed82263295f58c51e2b753d0c06c7d71872b8a7', class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: 'e805dff4122cc4e5fb4d7dcb96054fee8ad3bd07', class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0")));
357
+ }), h("div", { key: 'd31f134aa67a10ad1b796a4e1ffbea439b2b3723', class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: '3015f7f774b44d349f445e585b73295814c76326', class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: 'df165c76253e51bd6968bdcd8071ad69467bda4c', class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0")));
354
358
  }
355
359
  get el() { return getElement(this); }
356
360
  static get watchers() { return {