@ionic/core 7.4.2-dev.11695944163.13e7414e → 7.4.2-dev.11696878562.16da82aa

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 (527) hide show
  1. package/components/action-sheet.js +2 -2
  2. package/components/alert.js +8 -0
  3. package/components/button.js +2 -2
  4. package/components/buttons.js +2 -2
  5. package/components/checkbox.js +2 -2
  6. package/components/data.js +96 -22
  7. package/components/haptic.js +1 -0
  8. package/components/index.js +1 -0
  9. package/components/ion-back-button.js +2 -2
  10. package/components/ion-badge.js +2 -2
  11. package/components/ion-breadcrumb.js +2 -2
  12. package/components/ion-card-content.js +2 -2
  13. package/components/ion-card-subtitle.js +2 -2
  14. package/components/ion-card-title.js +2 -2
  15. package/components/ion-card.js +2 -2
  16. package/components/ion-chip.js +3 -8
  17. package/components/ion-datetime-button.js +6 -6
  18. package/components/ion-datetime.js +6 -6
  19. package/components/ion-header.js +1 -1
  20. package/components/ion-input.js +2 -2
  21. package/components/ion-item-divider.js +2 -2
  22. package/components/ion-item-option.js +2 -2
  23. package/components/ion-item-options.js +2 -2
  24. package/components/ion-loading.js +2 -2
  25. package/components/ion-menu-button.js +2 -2
  26. package/components/ion-nav.js +1 -0
  27. package/components/ion-range.js +2 -2
  28. package/components/ion-reorder.js +2 -2
  29. package/components/ion-router.js +3 -0
  30. package/components/ion-searchbar.js +3 -9
  31. package/components/ion-select.js +3 -3
  32. package/components/ion-textarea.js +2 -2
  33. package/components/ion-title.js +2 -2
  34. package/components/ion-toast.js +152 -15
  35. package/components/ion-toolbar.js +1 -1
  36. package/components/ios.transition.js +5 -4
  37. package/components/item.js +2 -2
  38. package/components/label.js +2 -2
  39. package/components/list-header.js +2 -2
  40. package/components/note.js +2 -2
  41. package/components/overlays.js +1 -0
  42. package/components/radio.js +2 -2
  43. package/css/core.css +0 -100
  44. package/css/core.css.map +1 -1
  45. package/css/display.css +0 -33
  46. package/css/display.css.map +1 -1
  47. package/css/float-elements.css +0 -33
  48. package/css/float-elements.css.map +1 -1
  49. package/css/global.bundle.css +6 -84
  50. package/css/global.bundle.css.map +1 -1
  51. package/css/ionic-swiper.css +0 -33
  52. package/css/ionic-swiper.css.map +1 -1
  53. package/css/ionic.bundle.css +1 -1
  54. package/css/ionic.bundle.css.map +1 -1
  55. package/css/padding.css +0 -33
  56. package/css/padding.css.map +1 -1
  57. package/css/structure.css +0 -33
  58. package/css/structure.css.map +1 -1
  59. package/css/text-alignment.css +0 -33
  60. package/css/text-alignment.css.map +1 -1
  61. package/css/text-transformation.css +0 -33
  62. package/css/text-transformation.css.map +1 -1
  63. package/css/typography.css +6 -51
  64. package/css/typography.css.map +1 -1
  65. package/css/utils.bundle.css +0 -165
  66. package/css/utils.bundle.css.map +1 -1
  67. package/dist/cjs/{button-active-32f15660.js → button-active-19cc8cae.js} +1 -1
  68. package/dist/cjs/{data-db832785.js → data-c8d21093.js} +96 -22
  69. package/dist/cjs/{haptic-c5f6b4d5.js → haptic-678abc9f.js} +1 -0
  70. package/dist/cjs/{index-4e502bd1.js → index-77d4b2e7.js} +2 -2
  71. package/dist/cjs/index.cjs.js +6 -4
  72. package/dist/cjs/ion-action-sheet.cjs.entry.js +5 -5
  73. package/dist/cjs/ion-alert.cjs.entry.js +11 -3
  74. package/dist/cjs/ion-app_8.cjs.entry.js +7 -7
  75. package/dist/cjs/ion-avatar_3.cjs.entry.js +2 -2
  76. package/dist/cjs/ion-back-button.cjs.entry.js +2 -2
  77. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +2 -2
  78. package/dist/cjs/ion-button_2.cjs.entry.js +2 -2
  79. package/dist/cjs/ion-card_5.cjs.entry.js +8 -8
  80. package/dist/cjs/ion-checkbox.cjs.entry.js +2 -2
  81. package/dist/cjs/ion-chip.cjs.entry.js +2 -7
  82. package/dist/cjs/ion-datetime-button.cjs.entry.js +6 -6
  83. package/dist/cjs/ion-datetime_3.cjs.entry.js +8 -8
  84. package/dist/cjs/ion-input.cjs.entry.js +2 -2
  85. package/dist/cjs/ion-item-option_3.cjs.entry.js +4 -4
  86. package/dist/cjs/ion-item_8.cjs.entry.js +10 -10
  87. package/dist/cjs/ion-loading.cjs.entry.js +3 -3
  88. package/dist/cjs/ion-menu_3.cjs.entry.js +3 -3
  89. package/dist/cjs/ion-modal.cjs.entry.js +2 -2
  90. package/dist/cjs/ion-nav_2.cjs.entry.js +2 -1
  91. package/dist/cjs/ion-picker-column-internal.cjs.entry.js +1 -1
  92. package/dist/cjs/ion-popover.cjs.entry.js +2 -2
  93. package/dist/cjs/ion-radio_2.cjs.entry.js +2 -2
  94. package/dist/cjs/ion-range.cjs.entry.js +2 -2
  95. package/dist/cjs/ion-refresher_2.cjs.entry.js +1 -1
  96. package/dist/cjs/ion-reorder_2.cjs.entry.js +3 -3
  97. package/dist/cjs/ion-route_4.cjs.entry.js +3 -0
  98. package/dist/cjs/ion-searchbar.cjs.entry.js +3 -9
  99. package/dist/cjs/ion-select_3.cjs.entry.js +4 -4
  100. package/dist/cjs/ion-textarea.cjs.entry.js +2 -2
  101. package/dist/cjs/ion-toast.cjs.entry.js +169 -34
  102. package/dist/cjs/ion-toggle.cjs.entry.js +1 -1
  103. package/dist/cjs/ionic.cjs.js +1 -1
  104. package/dist/cjs/{ios.transition-7ff33297.js → ios.transition-458ee399.js} +6 -5
  105. package/dist/cjs/loader.cjs.js +1 -1
  106. package/dist/cjs/{md.transition-2224e480.js → md.transition-3423dd44.js} +1 -1
  107. package/dist/cjs/{overlays-d3a13e61.js → overlays-817dca17.js} +1 -0
  108. package/dist/collection/components/accordion/accordion.ios.css +0 -66
  109. package/dist/collection/components/accordion/accordion.md.css +0 -33
  110. package/dist/collection/components/accordion-group/accordion-group.ios.css +0 -66
  111. package/dist/collection/components/accordion-group/accordion-group.md.css +0 -99
  112. package/dist/collection/components/action-sheet/action-sheet.ios.css +12 -80
  113. package/dist/collection/components/action-sheet/action-sheet.md.css +8 -76
  114. package/dist/collection/components/action-sheet/test/a11y/action-sheet.e2e.js +0 -27
  115. package/dist/collection/components/alert/alert.ios.css +0 -99
  116. package/dist/collection/components/alert/alert.js +8 -0
  117. package/dist/collection/components/alert/alert.md.css +0 -99
  118. package/dist/collection/components/alert/test/a11y/alert.e2e.js +11 -0
  119. package/dist/collection/components/avatar/avatar.ios.css +0 -66
  120. package/dist/collection/components/avatar/avatar.md.css +0 -66
  121. package/dist/collection/components/back-button/back-button.ios.css +1 -83
  122. package/dist/collection/components/back-button/back-button.md.css +3 -75
  123. package/dist/collection/components/backdrop/backdrop.ios.css +0 -66
  124. package/dist/collection/components/backdrop/backdrop.md.css +0 -66
  125. package/dist/collection/components/badge/badge.ios.css +1 -75
  126. package/dist/collection/components/badge/badge.md.css +1 -67
  127. package/dist/collection/components/breadcrumb/breadcrumb.ios.css +3 -80
  128. package/dist/collection/components/breadcrumb/breadcrumb.md.css +3 -69
  129. package/dist/collection/components/breadcrumbs/breadcrumbs.ios.css +0 -33
  130. package/dist/collection/components/breadcrumbs/breadcrumbs.md.css +0 -33
  131. package/dist/collection/components/breadcrumbs/test/a11y/breadcrumbs.e2e.js +0 -21
  132. package/dist/collection/components/button/button.ios.css +19 -118
  133. package/dist/collection/components/button/button.md.css +3 -69
  134. package/dist/collection/components/buttons/buttons.ios.css +3 -102
  135. package/dist/collection/components/buttons/buttons.md.css +2 -101
  136. package/dist/collection/components/card/card.ios.css +1 -67
  137. package/dist/collection/components/card/card.md.css +1 -67
  138. package/dist/collection/components/card-content/card-content.ios.css +5 -71
  139. package/dist/collection/components/card-content/card-content.md.css +5 -71
  140. package/dist/collection/components/card-header/card-header.ios.css +0 -66
  141. package/dist/collection/components/card-header/card-header.md.css +0 -66
  142. package/dist/collection/components/card-subtitle/card-subtitle.ios.css +1 -67
  143. package/dist/collection/components/card-subtitle/card-subtitle.md.css +1 -67
  144. package/dist/collection/components/card-title/card-title.ios.css +1 -67
  145. package/dist/collection/components/card-title/card-title.md.css +1 -67
  146. package/dist/collection/components/checkbox/checkbox.ios.css +2 -101
  147. package/dist/collection/components/checkbox/checkbox.md.css +2 -101
  148. package/dist/collection/components/checkbox/test/a11y/checkbox.e2e.js +0 -18
  149. package/dist/collection/components/chip/{chip.md.css → chip.css} +7 -43
  150. package/dist/collection/components/chip/chip.js +2 -4
  151. package/dist/collection/components/col/col.css +0 -66
  152. package/dist/collection/components/content/content.css +0 -33
  153. package/dist/collection/components/datetime/datetime.ios.css +7 -198
  154. package/dist/collection/components/datetime/datetime.js +13 -7
  155. package/dist/collection/components/datetime/datetime.md.css +5 -97
  156. package/dist/collection/components/datetime/test/hour-cycle/datetime.e2e.js +14 -0
  157. package/dist/collection/components/datetime/utils/data.js +33 -7
  158. package/dist/collection/components/datetime/utils/format.js +27 -10
  159. package/dist/collection/components/datetime/utils/helpers.js +37 -5
  160. package/dist/collection/components/datetime-button/datetime-button.css +2 -36
  161. package/dist/collection/components/datetime-button/datetime-button.js +4 -4
  162. package/dist/collection/components/fab/fab.css +0 -66
  163. package/dist/collection/components/fab-button/fab-button.ios.css +0 -66
  164. package/dist/collection/components/fab-button/fab-button.md.css +0 -66
  165. package/dist/collection/components/fab-list/fab-list.css +0 -66
  166. package/dist/collection/components/footer/footer.ios.css +0 -66
  167. package/dist/collection/components/footer/footer.md.css +0 -66
  168. package/dist/collection/components/grid/grid.css +0 -66
  169. package/dist/collection/components/header/header.ios.css +2 -71
  170. package/dist/collection/components/header/header.md.css +0 -66
  171. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.ios.css +0 -66
  172. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.md.css +0 -66
  173. package/dist/collection/components/input/input.ios.css +1 -100
  174. package/dist/collection/components/input/input.md.css +1 -199
  175. package/dist/collection/components/input/test/a11y/input.e2e.js +1 -15
  176. package/dist/collection/components/item/item.ios.css +4 -70
  177. package/dist/collection/components/item/item.md.css +6 -138
  178. package/dist/collection/components/item/test/a11y/item.e2e.js +1 -116
  179. package/dist/collection/components/item-divider/item-divider.ios.css +9 -101
  180. package/dist/collection/components/item-divider/item-divider.md.css +11 -103
  181. package/dist/collection/components/item-group/item-group.ios.css +1 -68
  182. package/dist/collection/components/item-group/item-group.md.css +1 -68
  183. package/dist/collection/components/item-option/item-option.ios.css +1 -67
  184. package/dist/collection/components/item-option/item-option.md.css +1 -67
  185. package/dist/collection/components/item-options/item-options.ios.css +1 -99
  186. package/dist/collection/components/item-options/item-options.md.css +1 -99
  187. package/dist/collection/components/item-sliding/item-sliding.css +0 -33
  188. package/dist/collection/components/label/label.ios.css +6 -105
  189. package/dist/collection/components/label/label.md.css +5 -104
  190. package/dist/collection/components/list/list.ios.css +0 -99
  191. package/dist/collection/components/list/list.md.css +0 -99
  192. package/dist/collection/components/list-header/list-header.ios.css +1 -100
  193. package/dist/collection/components/list-header/list-header.md.css +1 -100
  194. package/dist/collection/components/loading/loading.ios.css +1 -67
  195. package/dist/collection/components/loading/loading.md.css +1 -67
  196. package/dist/collection/components/loading/test/a11y/loading.e2e.js +0 -19
  197. package/dist/collection/components/menu/menu.ios.css +0 -66
  198. package/dist/collection/components/menu/menu.md.css +0 -66
  199. package/dist/collection/components/menu-button/menu-button.ios.css +2 -70
  200. package/dist/collection/components/menu-button/menu-button.md.css +3 -71
  201. package/dist/collection/components/menu-button/test/a11y/menu-button.e2e.js +1 -20
  202. package/dist/collection/components/modal/modal.ios.css +0 -66
  203. package/dist/collection/components/modal/modal.md.css +0 -66
  204. package/dist/collection/components/nav/nav.css +0 -33
  205. package/dist/collection/components/nav/nav.js +1 -0
  206. package/dist/collection/components/note/note.ios.css +0 -67
  207. package/dist/collection/components/note/note.md.css +1 -67
  208. package/dist/collection/components/picker/picker.ios.css +0 -66
  209. package/dist/collection/components/picker/picker.md.css +0 -66
  210. package/dist/collection/components/picker-column/picker-column.ios.css +0 -66
  211. package/dist/collection/components/picker-column/picker-column.md.css +0 -66
  212. package/dist/collection/components/picker-column-internal/picker-column-internal.ios.css +0 -33
  213. package/dist/collection/components/picker-column-internal/picker-column-internal.md.css +0 -66
  214. package/dist/collection/components/picker-internal/picker-internal.ios.css +0 -66
  215. package/dist/collection/components/picker-internal/picker-internal.md.css +0 -66
  216. package/dist/collection/components/popover/popover.ios.css +0 -66
  217. package/dist/collection/components/popover/popover.md.css +0 -66
  218. package/dist/collection/components/progress-bar/progress-bar.ios.css +0 -33
  219. package/dist/collection/components/progress-bar/progress-bar.md.css +0 -33
  220. package/dist/collection/components/radio/radio.ios.css +5 -104
  221. package/dist/collection/components/radio/radio.md.css +5 -104
  222. package/dist/collection/components/radio/test/a11y/radio.e2e.js +0 -21
  223. package/dist/collection/components/range/range.ios.css +8 -82
  224. package/dist/collection/components/range/range.md.css +11 -99
  225. package/dist/collection/components/range/test/a11y/range.e2e.js +0 -22
  226. package/dist/collection/components/refresher/refresher.ios.css +0 -66
  227. package/dist/collection/components/refresher/refresher.md.css +0 -66
  228. package/dist/collection/components/reorder/reorder.ios.css +2 -75
  229. package/dist/collection/components/reorder/reorder.md.css +2 -75
  230. package/dist/collection/components/reorder-group/reorder-group.css +0 -33
  231. package/dist/collection/components/ripple-effect/ripple-effect.css +0 -33
  232. package/dist/collection/components/router/router.js +2 -0
  233. package/dist/collection/components/router/utils/path.js +1 -0
  234. package/dist/collection/components/router-link/router-link.css +0 -33
  235. package/dist/collection/components/router-outlet/router-outlet.css +0 -33
  236. package/dist/collection/components/row/row.css +0 -66
  237. package/dist/collection/components/searchbar/searchbar.ios.css +16 -95
  238. package/dist/collection/components/searchbar/searchbar.js +1 -7
  239. package/dist/collection/components/searchbar/searchbar.md.css +10 -77
  240. package/dist/collection/components/searchbar/test/basic/searchbar.e2e.js +0 -18
  241. package/dist/collection/components/segment/segment.ios.css +0 -99
  242. package/dist/collection/components/segment/segment.md.css +0 -99
  243. package/dist/collection/components/segment-button/segment-button.ios.css +0 -66
  244. package/dist/collection/components/segment-button/segment-button.md.css +0 -66
  245. package/dist/collection/components/select/select.ios.css +3 -102
  246. package/dist/collection/components/select/select.js +1 -1
  247. package/dist/collection/components/select/select.md.css +2 -167
  248. package/dist/collection/components/select/test/a11y/select.e2e.js +0 -22
  249. package/dist/collection/components/select-popover/select-popover.ios.css +1 -101
  250. package/dist/collection/components/select-popover/select-popover.md.css +0 -99
  251. package/dist/collection/components/skeleton-text/skeleton-text.css +0 -33
  252. package/dist/collection/components/spinner/spinner.css +0 -33
  253. package/dist/collection/components/split-pane/split-pane.ios.css +0 -99
  254. package/dist/collection/components/split-pane/split-pane.md.css +0 -99
  255. package/dist/collection/components/tab-bar/tab-bar.ios.css +0 -99
  256. package/dist/collection/components/tab-bar/tab-bar.md.css +0 -99
  257. package/dist/collection/components/tab-button/tab-button.ios.css +0 -66
  258. package/dist/collection/components/tab-button/tab-button.md.css +0 -66
  259. package/dist/collection/components/tabs/tabs.css +0 -33
  260. package/dist/collection/components/text/text.css +0 -33
  261. package/dist/collection/components/textarea/test/a11y/textarea.e2e.js +1 -15
  262. package/dist/collection/components/textarea/textarea.ios.css +1 -133
  263. package/dist/collection/components/textarea/textarea.md.css +1 -199
  264. package/dist/collection/components/thumbnail/thumbnail.css +0 -33
  265. package/dist/collection/components/title/title.ios.css +10 -44
  266. package/dist/collection/components/title/title.md.css +2 -35
  267. package/dist/collection/components/toast/animations/ios.enter.js +2 -3
  268. package/dist/collection/components/toast/animations/ios.leave.js +2 -3
  269. package/dist/collection/components/toast/animations/md.enter.js +2 -3
  270. package/dist/collection/components/toast/animations/utils.js +85 -0
  271. package/dist/collection/components/toast/test/a11y/toast.e2e.js +1 -98
  272. package/dist/collection/components/toast/test/position-anchor/toast.e2e.js +45 -0
  273. package/dist/collection/components/toast/toast.ios.css +3 -74
  274. package/dist/collection/components/toast/toast.js +91 -9
  275. package/dist/collection/components/toast/toast.md.css +4 -74
  276. package/dist/collection/components/toggle/toggle.ios.css +0 -99
  277. package/dist/collection/components/toggle/toggle.md.css +0 -99
  278. package/dist/collection/components/toolbar/toolbar.ios.css +14 -66
  279. package/dist/collection/components/toolbar/toolbar.md.css +0 -66
  280. package/dist/collection/index.js +1 -0
  281. package/dist/collection/utils/native/haptic.js +1 -0
  282. package/dist/collection/utils/overlays.js +1 -0
  283. package/dist/collection/utils/transition/ios.transition.js +5 -4
  284. package/dist/docs.json +73 -10
  285. package/dist/esm/{button-active-513e9fff.js → button-active-d2346892.js} +1 -1
  286. package/dist/esm/{data-009dbf15.js → data-44d9e816.js} +96 -22
  287. package/dist/esm/{haptic-6447af60.js → haptic-1243b917.js} +1 -0
  288. package/dist/esm/{index-39bc1180.js → index-dac72b4c.js} +2 -2
  289. package/dist/esm/index.js +5 -4
  290. package/dist/esm/ion-action-sheet.entry.js +5 -5
  291. package/dist/esm/ion-alert.entry.js +11 -3
  292. package/dist/esm/ion-app_8.entry.js +7 -7
  293. package/dist/esm/ion-avatar_3.entry.js +2 -2
  294. package/dist/esm/ion-back-button.entry.js +2 -2
  295. package/dist/esm/ion-breadcrumb_2.entry.js +2 -2
  296. package/dist/esm/ion-button_2.entry.js +2 -2
  297. package/dist/esm/ion-card_5.entry.js +8 -8
  298. package/dist/esm/ion-checkbox.entry.js +2 -2
  299. package/dist/esm/ion-chip.entry.js +2 -7
  300. package/dist/esm/ion-datetime-button.entry.js +6 -6
  301. package/dist/esm/ion-datetime_3.entry.js +8 -8
  302. package/dist/esm/ion-input.entry.js +2 -2
  303. package/dist/esm/ion-item-option_3.entry.js +4 -4
  304. package/dist/esm/ion-item_8.entry.js +10 -10
  305. package/dist/esm/ion-loading.entry.js +3 -3
  306. package/dist/esm/ion-menu_3.entry.js +3 -3
  307. package/dist/esm/ion-modal.entry.js +2 -2
  308. package/dist/esm/ion-nav_2.entry.js +2 -1
  309. package/dist/esm/ion-picker-column-internal.entry.js +1 -1
  310. package/dist/esm/ion-popover.entry.js +2 -2
  311. package/dist/esm/ion-radio_2.entry.js +2 -2
  312. package/dist/esm/ion-range.entry.js +2 -2
  313. package/dist/esm/ion-refresher_2.entry.js +1 -1
  314. package/dist/esm/ion-reorder_2.entry.js +3 -3
  315. package/dist/esm/ion-route_4.entry.js +3 -0
  316. package/dist/esm/ion-searchbar.entry.js +3 -9
  317. package/dist/esm/ion-select_3.entry.js +4 -4
  318. package/dist/esm/ion-textarea.entry.js +2 -2
  319. package/dist/esm/ion-toast.entry.js +152 -17
  320. package/dist/esm/ion-toggle.entry.js +1 -1
  321. package/dist/esm/ionic.js +1 -1
  322. package/dist/esm/{ios.transition-72ffa6ed.js → ios.transition-991c1a56.js} +6 -5
  323. package/dist/esm/loader.js +1 -1
  324. package/dist/esm/{md.transition-e6a907d4.js → md.transition-fb443521.js} +1 -1
  325. package/dist/esm/{overlays-8fc6656c.js → overlays-e064e499.js} +1 -0
  326. package/dist/esm-es5/{button-active-513e9fff.js → button-active-d2346892.js} +1 -1
  327. package/dist/esm-es5/data-44d9e816.js +4 -0
  328. package/dist/esm-es5/{index-39bc1180.js → index-dac72b4c.js} +1 -1
  329. package/dist/esm-es5/index.js +1 -1
  330. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  331. package/dist/esm-es5/ion-alert.entry.js +1 -1
  332. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  333. package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
  334. package/dist/esm-es5/ion-back-button.entry.js +1 -1
  335. package/dist/esm-es5/ion-breadcrumb_2.entry.js +1 -1
  336. package/dist/esm-es5/ion-button_2.entry.js +1 -1
  337. package/dist/esm-es5/ion-card_5.entry.js +1 -1
  338. package/dist/esm-es5/ion-checkbox.entry.js +1 -1
  339. package/dist/esm-es5/ion-chip.entry.js +1 -1
  340. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  341. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  342. package/dist/esm-es5/ion-input.entry.js +1 -1
  343. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  344. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  345. package/dist/esm-es5/ion-loading.entry.js +1 -1
  346. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  347. package/dist/esm-es5/ion-modal.entry.js +1 -1
  348. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  349. package/dist/esm-es5/ion-picker-column-internal.entry.js +1 -1
  350. package/dist/esm-es5/ion-popover.entry.js +1 -1
  351. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  352. package/dist/esm-es5/ion-range.entry.js +1 -1
  353. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  354. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  355. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  356. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  357. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  358. package/dist/esm-es5/ion-toast.entry.js +1 -1
  359. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  360. package/dist/esm-es5/ionic.js +1 -1
  361. package/dist/esm-es5/ios.transition-991c1a56.js +4 -0
  362. package/dist/esm-es5/loader.js +1 -1
  363. package/dist/esm-es5/{md.transition-e6a907d4.js → md.transition-fb443521.js} +1 -1
  364. package/dist/html.html-data.json +11 -1
  365. package/dist/ionic/index.esm.js +1 -1
  366. package/dist/ionic/ionic.esm.js +1 -1
  367. package/dist/ionic/{p-7ea21b21.system.entry.js → p-06116432.system.entry.js} +1 -1
  368. package/dist/ionic/p-06c94b76.entry.js +4 -0
  369. package/dist/ionic/p-09e15a2a.system.entry.js +4 -0
  370. package/dist/ionic/p-0bd3cc92.entry.js +4 -0
  371. package/dist/ionic/{p-a0a87b9c.entry.js → p-13ce151b.entry.js} +1 -1
  372. package/dist/ionic/{p-270aa06b.entry.js → p-14dec15f.entry.js} +1 -1
  373. package/dist/ionic/p-161a6465.system.entry.js +4 -0
  374. package/dist/ionic/p-17240d90.js +4 -0
  375. package/dist/ionic/p-17e6836b.system.entry.js +4 -0
  376. package/dist/ionic/p-1bce805b.entry.js +4 -0
  377. package/dist/ionic/p-1c406ee0.system.entry.js +4 -0
  378. package/dist/ionic/{p-c5729044.system.entry.js → p-1e207aa7.system.entry.js} +1 -1
  379. package/dist/ionic/p-20e5eb3e.entry.js +4 -0
  380. package/dist/ionic/{p-972763df.js → p-2b70878e.js} +1 -1
  381. package/dist/ionic/p-2bea5600.entry.js +4 -0
  382. package/dist/ionic/{p-380ef450.entry.js → p-2d74ee51.entry.js} +1 -1
  383. package/dist/ionic/{p-2c35490e.entry.js → p-2dac36bf.entry.js} +1 -1
  384. package/dist/ionic/p-2ffbf4bc.system.entry.js +4 -0
  385. package/dist/ionic/p-30bd5385.system.entry.js +4 -0
  386. package/dist/ionic/{p-00aed720.system.js → p-315dd3f8.system.js} +1 -1
  387. package/dist/ionic/{p-08c5b9f4.system.entry.js → p-3b1a8994.system.entry.js} +1 -1
  388. package/dist/ionic/p-3cbcb899.entry.js +4 -0
  389. package/dist/ionic/p-419b8565.entry.js +4 -0
  390. package/dist/ionic/p-420da334.system.entry.js +4 -0
  391. package/dist/ionic/p-48393630.system.js +4 -0
  392. package/dist/ionic/{p-ca9b6832.system.js → p-4cf29e23.system.js} +1 -1
  393. package/dist/ionic/p-4e312f80.system.entry.js +4 -0
  394. package/dist/ionic/p-50b11c2b.system.entry.js +4 -0
  395. package/dist/ionic/p-568fec78.entry.js +4 -0
  396. package/dist/ionic/p-5c8c9748.system.entry.js +4 -0
  397. package/dist/ionic/p-5f6605c4.entry.js +4 -0
  398. package/dist/ionic/{p-3730f493.entry.js → p-62f05fd2.entry.js} +1 -1
  399. package/dist/ionic/p-674e6f0c.js +4 -0
  400. package/dist/ionic/p-6ba07931.system.entry.js +4 -0
  401. package/dist/ionic/p-6ca0e4b2.system.entry.js +4 -0
  402. package/dist/ionic/p-6cb04881.system.entry.js +4 -0
  403. package/dist/ionic/p-6edbc09b.system.js +1 -1
  404. package/dist/ionic/p-716fbba9.js +4 -0
  405. package/dist/ionic/p-7779d376.entry.js +4 -0
  406. package/dist/ionic/{p-3b104ae6.entry.js → p-78f204ee.entry.js} +1 -1
  407. package/dist/ionic/p-7dc0ee11.system.entry.js +4 -0
  408. package/dist/ionic/p-7e9e16bf.system.entry.js +4 -0
  409. package/dist/ionic/p-82f58c25.system.entry.js +4 -0
  410. package/dist/ionic/{p-f474437d.system.entry.js → p-86e73df8.system.entry.js} +1 -1
  411. package/dist/ionic/p-88ad9cb6.entry.js +4 -0
  412. package/dist/ionic/p-8a1faf2c.system.js +4 -0
  413. package/dist/ionic/p-8b79baf0.entry.js +4 -0
  414. package/dist/ionic/p-974cbc3a.entry.js +4 -0
  415. package/dist/ionic/{p-f39999bb.system.js → p-9eb5455c.system.js} +1 -1
  416. package/dist/ionic/{p-784863dd.entry.js → p-a27a6256.entry.js} +1 -1
  417. package/dist/ionic/p-b0dd4f33.entry.js +4 -0
  418. package/dist/ionic/p-b49fe110.entry.js +4 -0
  419. package/dist/ionic/{p-2a393411.entry.js → p-b61cf76c.entry.js} +1 -1
  420. package/dist/ionic/{p-09babc88.entry.js → p-b7dad585.entry.js} +1 -1
  421. package/dist/ionic/p-b8c3f071.system.js +4 -0
  422. package/dist/ionic/p-be321bb6.system.entry.js +4 -0
  423. package/dist/ionic/{p-2f1ba678.system.entry.js → p-be337735.system.entry.js} +1 -1
  424. package/dist/ionic/p-c4d08d6d.system.entry.js +4 -0
  425. package/dist/ionic/{p-c7fca267.entry.js → p-c8251e8c.entry.js} +1 -1
  426. package/dist/ionic/{p-c68b68b1.entry.js → p-cc3aa152.entry.js} +1 -1
  427. package/dist/ionic/p-cd675d89.system.entry.js +4 -0
  428. package/dist/ionic/p-ce24ddd7.system.entry.js +4 -0
  429. package/dist/ionic/p-d6dcbd7c.js +4 -0
  430. package/dist/ionic/p-de0f1af2.system.entry.js +4 -0
  431. package/dist/ionic/p-e89abe38.system.entry.js +4 -0
  432. package/dist/ionic/p-ea88031d.entry.js +4 -0
  433. package/dist/ionic/p-ebaeeee8.entry.js +4 -0
  434. package/dist/ionic/{p-e64ce6ad.system.entry.js → p-ec3fa33b.system.entry.js} +1 -1
  435. package/dist/ionic/p-f0dcf99b.entry.js +4 -0
  436. package/dist/ionic/p-f180d2b6.entry.js +4 -0
  437. package/dist/ionic/{p-4a1ac160.system.entry.js → p-f767d6b4.system.entry.js} +1 -1
  438. package/dist/ionic/{p-63a73b69.system.entry.js → p-f7f6af24.system.entry.js} +1 -1
  439. package/dist/types/components/datetime/datetime-interface.d.ts +1 -0
  440. package/dist/types/components/datetime/datetime.d.ts +2 -2
  441. package/dist/types/components/datetime/utils/data.d.ts +3 -3
  442. package/dist/types/components/datetime/utils/format.d.ts +3 -3
  443. package/dist/types/components/datetime/utils/helpers.d.ts +15 -1
  444. package/dist/types/components/toast/animations/ios.enter.d.ts +2 -1
  445. package/dist/types/components/toast/animations/ios.leave.d.ts +2 -2
  446. package/dist/types/components/toast/animations/md.enter.d.ts +2 -1
  447. package/dist/types/components/toast/animations/utils.d.ts +18 -0
  448. package/dist/types/components/toast/toast-interface.d.ts +11 -0
  449. package/dist/types/components/toast/toast.d.ts +21 -1
  450. package/dist/types/components.d.ts +16 -8
  451. package/dist/types/index.d.ts +1 -0
  452. package/hydrate/index.js +338 -124
  453. package/package.json +5 -6
  454. package/dist/collection/components/back-button/test/a11y/back-button.e2e.js +0 -26
  455. package/dist/collection/components/badge/test/a11y/badge.e2e.js +0 -22
  456. package/dist/collection/components/button/test/a11y/button.e2e.js +0 -61
  457. package/dist/collection/components/buttons/test/a11y/buttons.e2e.js +0 -74
  458. package/dist/collection/components/card/test/a11y/card.e2e.js +0 -31
  459. package/dist/collection/components/chip/chip.ios.css +0 -190
  460. package/dist/collection/components/chip/test/a11y/chip.e2e.js +0 -58
  461. package/dist/collection/components/datetime/test/a11y/datetime.e2e.js +0 -28
  462. package/dist/collection/components/datetime-button/test/a11y/datetime-button.e2e.js +0 -38
  463. package/dist/collection/components/item-divider/test/a11y/item-divider.e2e.js +0 -44
  464. package/dist/collection/components/item-sliding/test/a11y/item-sliding.e2e.js +0 -34
  465. package/dist/collection/components/label/test/a11y/label.e2e.js +0 -66
  466. package/dist/collection/components/list-header/test/a11y/list-header.e2e.js +0 -24
  467. package/dist/collection/components/note/test/a11y/note.e2e.js +0 -52
  468. package/dist/collection/components/reorder-group/test/a11y/reorder-group.e2e.js +0 -33
  469. package/dist/collection/components/searchbar/test/a11y/searchbar.e2e.js +0 -37
  470. package/dist/collection/components/title/test/a11y/title.e2e.js +0 -61
  471. package/dist/collection/css/test/a11y/typography.e2e.js +0 -32
  472. package/dist/esm-es5/data-009dbf15.js +0 -4
  473. package/dist/esm-es5/ios.transition-72ffa6ed.js +0 -4
  474. package/dist/ionic/p-0610d658.entry.js +0 -4
  475. package/dist/ionic/p-06c29a8b.entry.js +0 -4
  476. package/dist/ionic/p-0c535e5a.system.entry.js +0 -4
  477. package/dist/ionic/p-160d0dfd.system.entry.js +0 -4
  478. package/dist/ionic/p-1c1c18b3.system.entry.js +0 -4
  479. package/dist/ionic/p-234a7edb.js +0 -4
  480. package/dist/ionic/p-2b8cd28f.entry.js +0 -4
  481. package/dist/ionic/p-2e93e3db.entry.js +0 -4
  482. package/dist/ionic/p-3e1b4045.system.entry.js +0 -4
  483. package/dist/ionic/p-4342501d.entry.js +0 -4
  484. package/dist/ionic/p-442f2497.system.js +0 -4
  485. package/dist/ionic/p-44ef7224.system.js +0 -4
  486. package/dist/ionic/p-450fe187.system.entry.js +0 -4
  487. package/dist/ionic/p-47c15b22.system.entry.js +0 -4
  488. package/dist/ionic/p-4d0eb845.system.entry.js +0 -4
  489. package/dist/ionic/p-4e4bedbd.entry.js +0 -4
  490. package/dist/ionic/p-50d2e748.js +0 -4
  491. package/dist/ionic/p-5a5ff46b.system.entry.js +0 -4
  492. package/dist/ionic/p-5c790762.system.js +0 -4
  493. package/dist/ionic/p-622d7b0e.system.entry.js +0 -4
  494. package/dist/ionic/p-6f940aec.system.entry.js +0 -4
  495. package/dist/ionic/p-7302a3e1.entry.js +0 -4
  496. package/dist/ionic/p-74824d64.entry.js +0 -4
  497. package/dist/ionic/p-7cfd253c.js +0 -4
  498. package/dist/ionic/p-857591f7.system.entry.js +0 -4
  499. package/dist/ionic/p-86859d57.system.entry.js +0 -4
  500. package/dist/ionic/p-8d5c7b4e.system.entry.js +0 -4
  501. package/dist/ionic/p-8e06ca5e.entry.js +0 -4
  502. package/dist/ionic/p-90d892fd.entry.js +0 -4
  503. package/dist/ionic/p-9493d5e8.system.entry.js +0 -4
  504. package/dist/ionic/p-969e9fce.system.entry.js +0 -4
  505. package/dist/ionic/p-972817e1.js +0 -4
  506. package/dist/ionic/p-9ad5893a.entry.js +0 -4
  507. package/dist/ionic/p-af14deab.system.entry.js +0 -4
  508. package/dist/ionic/p-b2215bd4.entry.js +0 -4
  509. package/dist/ionic/p-b8846173.entry.js +0 -4
  510. package/dist/ionic/p-bb8365af.system.entry.js +0 -4
  511. package/dist/ionic/p-be22efa8.entry.js +0 -4
  512. package/dist/ionic/p-c3d501f5.system.entry.js +0 -4
  513. package/dist/ionic/p-c872a0a0.entry.js +0 -4
  514. package/dist/ionic/p-daf85ebe.entry.js +0 -4
  515. package/dist/ionic/p-db3f69d6.entry.js +0 -4
  516. package/dist/ionic/p-df16bb3f.system.entry.js +0 -4
  517. package/dist/ionic/p-e8fa3573.system.entry.js +0 -4
  518. package/dist/ionic/p-edbec144.entry.js +0 -4
  519. package/dist/ionic/p-f5ebccec.entry.js +0 -4
  520. package/dist/ionic/p-f8eaac8b.system.entry.js +0 -4
  521. package/dist/ionic/p-fa1a57ae.system.entry.js +0 -4
  522. /package/dist/esm-es5/{haptic-6447af60.js → haptic-1243b917.js} +0 -0
  523. /package/dist/esm-es5/{overlays-8fc6656c.js → overlays-e064e499.js} +0 -0
  524. /package/dist/ionic/{p-f9015336.js → p-3faf56ab.js} +0 -0
  525. /package/dist/ionic/{p-7a3caa4e.system.js → p-40bd36f3.system.js} +0 -0
  526. /package/dist/ionic/{p-14d7b7e2.system.js → p-b4b4bb29.system.js} +0 -0
  527. /package/dist/ionic/{p-bb6f38ed.js → p-b923f3d7.js} +0 -0
@@ -1,36 +1,3 @@
1
- /**
2
- * Convert a font size to a dynamic font size.
3
- * Fonts that participate in Dynamic Type should use
4
- * dynamic font sizes.
5
- * @param size - The initial font size including the unit (i.e. px or pt)
6
- * @param unit (optional) - The unit to convert to. Use this if you want to
7
- * convert to a unit other than $baselineUnit.
8
- */
9
- /**
10
- * Convert a font size to a dynamic font size but impose
11
- * a maximum font size.
12
- * @param size - The initial font size including the unit (i.e. px or pt)
13
- * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
14
- * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
15
- * convert to a unit other than $baselineUnit.
16
- */
17
- /**
18
- * Convert a font size to a dynamic font size but impose
19
- * a minimum font size.
20
- * @param size - The initial font size including the unit (i.e. px or pt)
21
- * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
22
- * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
23
- * convert to a unit other than $baselineUnit.
24
- */
25
- /**
26
- * Convert a font size to a dynamic font size but impose
27
- * maximum and minimum font sizes.
28
- * @param size - The initial font size including the unit (i.e. px or pt)
29
- * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
30
- * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
31
- * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
32
- * convert to a unit other than $baselineUnit.
33
- */
34
1
  :host {
35
2
  /**
36
3
  * @prop --background: The primary background of the datetime component.
@@ -253,18 +220,6 @@ ion-picker-column-internal {
253
220
  justify-content: space-between;
254
221
  }
255
222
 
256
- /**
257
- * The confirm and clear buttons are grouped in a
258
- * container so that they appear on the end opposite
259
- * of the cancel button.
260
- * We use display: flex so that the
261
- * wrapper only takes up as much
262
- * height as it needs.
263
- */
264
- .datetime-action-buttons .datetime-action-buttons-container {
265
- display: flex;
266
- }
267
-
268
223
  /**
269
224
  * Date/Year button should be on
270
225
  * the opposite side of the component
@@ -300,20 +255,6 @@ ion-picker-column-internal {
300
255
  text-align: center;
301
256
  }
302
257
 
303
- .calendar-days-of-week .day-of-week {
304
- /**
305
- * Center the days of the week within each cell
306
- * if the container size is changed as a result
307
- * of Dynamic Type.
308
- */
309
- -webkit-margin-start: auto;
310
- margin-inline-start: auto;
311
- -webkit-margin-end: auto;
312
- margin-inline-end: auto;
313
- margin-top: 0;
314
- margin-bottom: 0;
315
- }
316
-
317
258
  :host .calendar-body {
318
259
  /**
319
260
  * Show all calendar months inline
@@ -388,7 +329,7 @@ ion-picker-column-internal {
388
329
  * Center the day text vertically
389
330
  * and horizontally within its grid cell.
390
331
  */
391
- .calendar-day {
332
+ :host .calendar-day {
392
333
  border-radius: 50%;
393
334
  -webkit-padding-start: 0px;
394
335
  padding-inline-start: 0px;
@@ -477,39 +418,6 @@ ion-picker-column-internal {
477
418
  --color: var(--ion-color-base);
478
419
  }
479
420
 
480
- /**
481
- * Convert a font size to a dynamic font size.
482
- * Fonts that participate in Dynamic Type should use
483
- * dynamic font sizes.
484
- * @param size - The initial font size including the unit (i.e. px or pt)
485
- * @param unit (optional) - The unit to convert to. Use this if you want to
486
- * convert to a unit other than $baselineUnit.
487
- */
488
- /**
489
- * Convert a font size to a dynamic font size but impose
490
- * a maximum font size.
491
- * @param size - The initial font size including the unit (i.e. px or pt)
492
- * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
493
- * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
494
- * convert to a unit other than $baselineUnit.
495
- */
496
- /**
497
- * Convert a font size to a dynamic font size but impose
498
- * a minimum font size.
499
- * @param size - The initial font size including the unit (i.e. px or pt)
500
- * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
501
- * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
502
- * convert to a unit other than $baselineUnit.
503
- */
504
- /**
505
- * Convert a font size to a dynamic font size but impose
506
- * maximum and minimum font sizes.
507
- * @param size - The initial font size including the unit (i.e. px or pt)
508
- * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
509
- * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
510
- * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
511
- * convert to a unit other than $baselineUnit.
512
- */
513
421
  :host {
514
422
  --background: var(--ion-color-step-100, #ffffff);
515
423
  --title-color: var(--ion-color-contrast);
@@ -527,13 +435,13 @@ ion-picker-column-internal {
527
435
  }
528
436
 
529
437
  :host .datetime-header .datetime-title {
530
- font-size: 0.75rem;
438
+ font-size: 12px;
531
439
  text-transform: uppercase;
532
440
  }
533
441
 
534
442
  :host .datetime-header .datetime-selected-date {
535
443
  margin-top: 30px;
536
- font-size: 2.125rem;
444
+ font-size: 34px;
537
445
  }
538
446
 
539
447
  :host .datetime-calendar .calendar-action-buttons ion-item {
@@ -553,7 +461,7 @@ ion-picker-column-internal {
553
461
  padding-top: 0px;
554
462
  padding-bottom: 0px;
555
463
  color: var(--ion-color-step-500, gray);
556
- font-size: 0.875rem;
464
+ font-size: 14px;
557
465
  line-height: 36px;
558
466
  }
559
467
 
@@ -578,7 +486,7 @@ ion-picker-column-internal {
578
486
  width: 42px;
579
487
  min-width: 42px;
580
488
  height: 42px;
581
- font-size: 0.875rem;
489
+ font-size: 14px;
582
490
  }
583
491
 
584
492
  /**
@@ -19,5 +19,19 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
19
19
  const timeButton = page.locator('ion-datetime .time-body');
20
20
  await expect(timeButton).toHaveText('4:30 PM');
21
21
  });
22
+ test('should set the h11 hour cycle correctly', async ({ page }) => {
23
+ await page.setContent(`
24
+ <ion-datetime hour-cycle="h11" value="2022-01-01T00:30:00"></ion-datetime>
25
+ `, config);
26
+ const timeButton = page.locator('ion-datetime .time-body');
27
+ await expect(timeButton).toHaveText('0:30 AM');
28
+ });
29
+ test('should set the h24 hour cycle correctly', async ({ page }) => {
30
+ await page.setContent(`
31
+ <ion-datetime hour-cycle="h24" value="2022-01-01T00:30:00"></ion-datetime>
32
+ `, config);
33
+ const timeButton = page.locator('ion-datetime .time-body');
34
+ await expect(timeButton).toHaveText('24:30');
35
+ });
22
36
  });
23
37
  });
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import { isAfter, isBefore, isSameDay } from "./comparison";
5
5
  import { getLocalizedDayPeriod, removeDateTzOffset, getFormattedHour, addTimePadding, getTodayLabel, getYear, } from "./format";
6
- import { getNumDaysInMonth, is24Hour } from "./helpers";
6
+ import { getNumDaysInMonth, is24Hour, getHourCycle } from "./helpers";
7
7
  import { getNextMonth, getPreviousMonth, getInternalHourValue } from "./manipulation";
8
8
  /**
9
9
  * Returns the current date as
@@ -34,8 +34,14 @@ const minutes = [
34
34
  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
35
35
  32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
36
36
  ];
37
+ // h11 hour system uses 0-11. Midnight starts at 0:00am.
38
+ const hour11 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
39
+ // h12 hour system uses 0-12. Midnight starts at 12:00am.
37
40
  const hour12 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
41
+ // h23 hour system uses 0-23. Midnight starts at 0:00.
38
42
  const hour23 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23];
43
+ // h24 hour system uses 1-24. Midnight starts at 24:00.
44
+ const hour24 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0];
39
45
  /**
40
46
  * Given a locale and a mode,
41
47
  * return an array with formatted days
@@ -104,14 +110,33 @@ export const getDaysOfMonth = (month, year, firstDayOfWeek) => {
104
110
  }
105
111
  return days;
106
112
  };
113
+ /**
114
+ * Returns an array of pre-defined hour
115
+ * values based on the provided hourCycle.
116
+ */
117
+ const getHourData = (hourCycle) => {
118
+ switch (hourCycle) {
119
+ case 'h11':
120
+ return hour11;
121
+ case 'h12':
122
+ return hour12;
123
+ case 'h23':
124
+ return hour23;
125
+ case 'h24':
126
+ return hour24;
127
+ default:
128
+ throw new Error(`Invalid hour cycle "${hourCycle}"`);
129
+ }
130
+ };
107
131
  /**
108
132
  * Given a local, reference datetime parts and option
109
133
  * max/min bound datetime parts, calculate the acceptable
110
134
  * hour and minute values according to the bounds and locale.
111
135
  */
112
- export const generateTime = (refParts, hourCycle = 'h12', minParts, maxParts, hourValues, minuteValues) => {
113
- const use24Hour = hourCycle === 'h23';
114
- let processedHours = use24Hour ? hour23 : hour12;
136
+ export const generateTime = (locale, refParts, hourCycle = 'h12', minParts, maxParts, hourValues, minuteValues) => {
137
+ const computedHourCycle = getHourCycle(locale, hourCycle);
138
+ const use24Hour = is24Hour(computedHourCycle);
139
+ let processedHours = getHourData(computedHourCycle);
115
140
  let processedMinutes = minutes;
116
141
  let isAMAllowed = true;
117
142
  let isPMAllowed = true;
@@ -443,11 +468,12 @@ export const getCombinedDateColumnData = (locale, todayParts, minParts, maxParts
443
468
  };
444
469
  };
445
470
  export const getTimeColumnsData = (locale, refParts, hourCycle, minParts, maxParts, allowedHourValues, allowedMinuteValues) => {
446
- const use24Hour = is24Hour(locale, hourCycle);
447
- const { hours, minutes, am, pm } = generateTime(refParts, use24Hour ? 'h23' : 'h12', minParts, maxParts, allowedHourValues, allowedMinuteValues);
471
+ const computedHourCycle = getHourCycle(locale, hourCycle);
472
+ const use24Hour = is24Hour(computedHourCycle);
473
+ const { hours, minutes, am, pm } = generateTime(locale, refParts, computedHourCycle, minParts, maxParts, allowedHourValues, allowedMinuteValues);
448
474
  const hoursItems = hours.map((hour) => {
449
475
  return {
450
- text: getFormattedHour(hour, use24Hour),
476
+ text: getFormattedHour(hour, computedHourCycle),
451
477
  value: getInternalHourValue(hour, use24Hour, refParts.ampm),
452
478
  };
453
479
  });
@@ -1,6 +1,7 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
+ import { is24Hour } from "./helpers";
4
5
  import { convertDataToISO } from "./manipulation";
5
6
  const getFormattedDayPeriod = (dayPeriod) => {
6
7
  if (dayPeriod === undefined) {
@@ -8,7 +9,7 @@ const getFormattedDayPeriod = (dayPeriod) => {
8
9
  }
9
10
  return dayPeriod.toUpperCase();
10
11
  };
11
- export const getLocalizedTime = (locale, refParts, use24Hour) => {
12
+ export const getLocalizedTime = (locale, refParts, hourCycle) => {
12
13
  const timeParts = {
13
14
  hour: refParts.hour,
14
15
  minute: refParts.minute,
@@ -30,7 +31,7 @@ export const getLocalizedTime = (locale, refParts, use24Hour) => {
30
31
  * We use hourCycle here instead of hour12 due to:
31
32
  * https://bugs.chromium.org/p/chromium/issues/detail?id=1347316&q=hour12&can=2
32
33
  */
33
- hourCycle: use24Hour ? 'h23' : 'h12',
34
+ hourCycle,
34
35
  /**
35
36
  * Setting Z at the end indicates that this
36
37
  * date string is in the UTC time zone. This
@@ -69,17 +70,33 @@ export const addTimePadding = (value) => {
69
70
  * 12 hour times it ensures that
70
71
  * hour 0 is formatted as '12'.
71
72
  */
72
- export const getFormattedHour = (hour, use24Hour) => {
73
- if (use24Hour) {
74
- return addTimePadding(hour);
75
- }
73
+ export const getFormattedHour = (hour, hourCycle) => {
76
74
  /**
77
- * If using 12 hour
78
- * format, make sure hour
79
- * 0 is formatted as '12'.
75
+ * Midnight for h11 starts at 0:00am
76
+ * Midnight for h12 starts at 12:00am
77
+ * Midnight for h23 starts at 00:00
78
+ * Midnight for h24 starts at 24:00
80
79
  */
81
80
  if (hour === 0) {
82
- return '12';
81
+ switch (hourCycle) {
82
+ case 'h11':
83
+ return '0';
84
+ case 'h12':
85
+ return '12';
86
+ case 'h23':
87
+ return '00';
88
+ case 'h24':
89
+ return '24';
90
+ default:
91
+ throw new Error(`Invalid hour cycle "${hourCycle}"`);
92
+ }
93
+ }
94
+ const use24Hour = is24Hour(hourCycle);
95
+ /**
96
+ * h23 and h24 use 24 hour times.
97
+ */
98
+ if (use24Hour) {
99
+ return addTimePadding(hour);
83
100
  }
84
101
  return hour.toString();
85
102
  };
@@ -10,13 +10,19 @@
10
10
  export const isLeapYear = (year) => {
11
11
  return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
12
12
  };
13
- export const is24Hour = (locale, hourCycle) => {
13
+ /**
14
+ * Determines the hour cycle for a user.
15
+ * If the hour cycle is explicitly defined, just use that.
16
+ * Otherwise, we try to derive it from either the specified
17
+ * locale extension tags or from Intl.DateTimeFormat directly.
18
+ */
19
+ export const getHourCycle = (locale, hourCycle) => {
14
20
  /**
15
- * If developer has explicitly enabled h23 time
21
+ * If developer has explicitly enabled 24-hour time
16
22
  * then return early and do not look at the system default.
17
23
  */
18
24
  if (hourCycle !== undefined) {
19
- return hourCycle === 'h23';
25
+ return hourCycle;
20
26
  }
21
27
  /**
22
28
  * If hourCycle was not specified, check the locale
@@ -27,7 +33,7 @@ export const is24Hour = (locale, hourCycle) => {
27
33
  const formatted = new Intl.DateTimeFormat(locale, { hour: 'numeric' });
28
34
  const options = formatted.resolvedOptions();
29
35
  if (options.hourCycle !== undefined) {
30
- return options.hourCycle === 'h23';
36
+ return options.hourCycle;
31
37
  }
32
38
  /**
33
39
  * If hourCycle is not specified (either through lack
@@ -40,7 +46,33 @@ export const is24Hour = (locale, hourCycle) => {
40
46
  if (!hour) {
41
47
  throw new Error('Hour value not found from DateTimeFormat');
42
48
  }
43
- return hour.value === '00';
49
+ /**
50
+ * Midnight for h11 starts at 0:00am
51
+ * Midnight for h12 starts at 12:00am
52
+ * Midnight for h23 starts at 00:00
53
+ * Midnight for h24 starts at 24:00
54
+ */
55
+ switch (hour.value) {
56
+ case '0':
57
+ return 'h11';
58
+ case '12':
59
+ return 'h12';
60
+ case '00':
61
+ return 'h23';
62
+ case '24':
63
+ return 'h24';
64
+ default:
65
+ throw new Error(`Invalid hour cycle "${hourCycle}"`);
66
+ }
67
+ };
68
+ /**
69
+ * Determine if the hour cycle uses a 24-hour format.
70
+ * Returns true for h23 and h24. Returns false otherwise.
71
+ * If you don't know the hourCycle, use getHourCycle above
72
+ * and pass the result into this function.
73
+ */
74
+ export const is24Hour = (hourCycle) => {
75
+ return hourCycle === 'h23' || hourCycle === 'h24';
44
76
  };
45
77
  /**
46
78
  * Given a date object, returns the number
@@ -1,39 +1,5 @@
1
- /**
2
- * Convert a font size to a dynamic font size.
3
- * Fonts that participate in Dynamic Type should use
4
- * dynamic font sizes.
5
- * @param size - The initial font size including the unit (i.e. px or pt)
6
- * @param unit (optional) - The unit to convert to. Use this if you want to
7
- * convert to a unit other than $baselineUnit.
8
- */
9
- /**
10
- * Convert a font size to a dynamic font size but impose
11
- * a maximum font size.
12
- * @param size - The initial font size including the unit (i.e. px or pt)
13
- * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
14
- * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
15
- * convert to a unit other than $baselineUnit.
16
- */
17
- /**
18
- * Convert a font size to a dynamic font size but impose
19
- * a minimum font size.
20
- * @param size - The initial font size including the unit (i.e. px or pt)
21
- * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
22
- * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
23
- * convert to a unit other than $baselineUnit.
24
- */
25
- /**
26
- * Convert a font size to a dynamic font size but impose
27
- * maximum and minimum font sizes.
28
- * @param size - The initial font size including the unit (i.e. px or pt)
29
- * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
30
- * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
31
- * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
32
- * convert to a unit other than $baselineUnit.
33
- */
34
1
  :host {
35
2
  display: flex;
36
- flex-wrap: wrap;
37
3
  align-items: center;
38
4
  justify-content: center;
39
5
  }
@@ -58,10 +24,10 @@
58
24
  background: var(--ion-color-step-300, #edeef0);
59
25
  color: var(--ion-text-color, #000);
60
26
  font-family: inherit;
61
- font-size: 1rem;
27
+ font-size: inherit;
62
28
  cursor: pointer;
63
- overflow: hidden;
64
29
  appearance: none;
30
+ overflow: hidden;
65
31
  }
66
32
 
67
33
  :host(.time-active) #time-button,
@@ -8,7 +8,7 @@ import { createColorClasses } from "../../utils/theme";
8
8
  import { getIonMode } from "../../global/ionic-global";
9
9
  import { getToday } from "../datetime/utils/data";
10
10
  import { getMonthAndYear, getMonthDayAndYear, getLocalizedDateTime, getLocalizedTime } from "../datetime/utils/format";
11
- import { is24Hour } from "../datetime/utils/helpers";
11
+ import { getHourCycle } from "../datetime/utils/helpers";
12
12
  import { parseDate } from "../datetime/utils/parse";
13
13
  /**
14
14
  * @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
@@ -65,13 +65,13 @@ export class DatetimeButton {
65
65
  * warning in the console.
66
66
  */
67
67
  const firstParsedDatetime = parsedDatetimes[0];
68
- const use24Hour = is24Hour(locale, hourCycle);
68
+ const computedHourCycle = getHourCycle(locale, hourCycle);
69
69
  this.dateText = this.timeText = undefined;
70
70
  switch (datetimePresentation) {
71
71
  case 'date-time':
72
72
  case 'time-date':
73
73
  const dateText = getMonthDayAndYear(locale, firstParsedDatetime);
74
- const timeText = getLocalizedTime(locale, firstParsedDatetime, use24Hour);
74
+ const timeText = getLocalizedTime(locale, firstParsedDatetime, computedHourCycle);
75
75
  if (preferWheel) {
76
76
  this.dateText = `${dateText} ${timeText}`;
77
77
  }
@@ -98,7 +98,7 @@ export class DatetimeButton {
98
98
  }
99
99
  break;
100
100
  case 'time':
101
- this.timeText = getLocalizedTime(locale, firstParsedDatetime, use24Hour);
101
+ this.timeText = getLocalizedTime(locale, firstParsedDatetime, computedHourCycle);
102
102
  break;
103
103
  case 'month-year':
104
104
  this.dateText = getMonthAndYear(locale, firstParsedDatetime);
@@ -1,69 +1,3 @@
1
- /**
2
- * Convert a font size to a dynamic font size.
3
- * Fonts that participate in Dynamic Type should use
4
- * dynamic font sizes.
5
- * @param size - The initial font size including the unit (i.e. px or pt)
6
- * @param unit (optional) - The unit to convert to. Use this if you want to
7
- * convert to a unit other than $baselineUnit.
8
- */
9
- /**
10
- * Convert a font size to a dynamic font size but impose
11
- * a maximum font size.
12
- * @param size - The initial font size including the unit (i.e. px or pt)
13
- * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
14
- * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
15
- * convert to a unit other than $baselineUnit.
16
- */
17
- /**
18
- * Convert a font size to a dynamic font size but impose
19
- * a minimum font size.
20
- * @param size - The initial font size including the unit (i.e. px or pt)
21
- * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
22
- * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
23
- * convert to a unit other than $baselineUnit.
24
- */
25
- /**
26
- * Convert a font size to a dynamic font size but impose
27
- * maximum and minimum font sizes.
28
- * @param size - The initial font size including the unit (i.e. px or pt)
29
- * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
30
- * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
31
- * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
32
- * convert to a unit other than $baselineUnit.
33
- */
34
- /**
35
- * Convert a font size to a dynamic font size.
36
- * Fonts that participate in Dynamic Type should use
37
- * dynamic font sizes.
38
- * @param size - The initial font size including the unit (i.e. px or pt)
39
- * @param unit (optional) - The unit to convert to. Use this if you want to
40
- * convert to a unit other than $baselineUnit.
41
- */
42
- /**
43
- * Convert a font size to a dynamic font size but impose
44
- * a maximum font size.
45
- * @param size - The initial font size including the unit (i.e. px or pt)
46
- * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
47
- * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
48
- * convert to a unit other than $baselineUnit.
49
- */
50
- /**
51
- * Convert a font size to a dynamic font size but impose
52
- * a minimum font size.
53
- * @param size - The initial font size including the unit (i.e. px or pt)
54
- * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
55
- * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
56
- * convert to a unit other than $baselineUnit.
57
- */
58
- /**
59
- * Convert a font size to a dynamic font size but impose
60
- * maximum and minimum font sizes.
61
- * @param size - The initial font size including the unit (i.e. px or pt)
62
- * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
63
- * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
64
- * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
65
- * convert to a unit other than $baselineUnit.
66
- */
67
1
  :host {
68
2
  position: absolute;
69
3
  z-index: 999;
@@ -1,36 +1,3 @@
1
- /**
2
- * Convert a font size to a dynamic font size.
3
- * Fonts that participate in Dynamic Type should use
4
- * dynamic font sizes.
5
- * @param size - The initial font size including the unit (i.e. px or pt)
6
- * @param unit (optional) - The unit to convert to. Use this if you want to
7
- * convert to a unit other than $baselineUnit.
8
- */
9
- /**
10
- * Convert a font size to a dynamic font size but impose
11
- * a maximum font size.
12
- * @param size - The initial font size including the unit (i.e. px or pt)
13
- * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
14
- * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
15
- * convert to a unit other than $baselineUnit.
16
- */
17
- /**
18
- * Convert a font size to a dynamic font size but impose
19
- * a minimum font size.
20
- * @param size - The initial font size including the unit (i.e. px or pt)
21
- * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
22
- * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
23
- * convert to a unit other than $baselineUnit.
24
- */
25
- /**
26
- * Convert a font size to a dynamic font size but impose
27
- * maximum and minimum font sizes.
28
- * @param size - The initial font size including the unit (i.e. px or pt)
29
- * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
30
- * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
31
- * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
32
- * convert to a unit other than $baselineUnit.
33
- */
34
1
  :host {
35
2
  /**
36
3
  * @prop --background: Background of the button
@@ -256,39 +223,6 @@ ion-ripple-effect {
256
223
  color: var(--ion-color-contrast);
257
224
  }
258
225
 
259
- /**
260
- * Convert a font size to a dynamic font size.
261
- * Fonts that participate in Dynamic Type should use
262
- * dynamic font sizes.
263
- * @param size - The initial font size including the unit (i.e. px or pt)
264
- * @param unit (optional) - The unit to convert to. Use this if you want to
265
- * convert to a unit other than $baselineUnit.
266
- */
267
- /**
268
- * Convert a font size to a dynamic font size but impose
269
- * a maximum font size.
270
- * @param size - The initial font size including the unit (i.e. px or pt)
271
- * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
272
- * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
273
- * convert to a unit other than $baselineUnit.
274
- */
275
- /**
276
- * Convert a font size to a dynamic font size but impose
277
- * a minimum font size.
278
- * @param size - The initial font size including the unit (i.e. px or pt)
279
- * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
280
- * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
281
- * convert to a unit other than $baselineUnit.
282
- */
283
- /**
284
- * Convert a font size to a dynamic font size but impose
285
- * maximum and minimum font sizes.
286
- * @param size - The initial font size including the unit (i.e. px or pt)
287
- * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
288
- * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
289
- * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
290
- * convert to a unit other than $baselineUnit.
291
- */
292
226
  :host {
293
227
  --background: var(--ion-color-primary, #3880ff);
294
228
  --background-activated: var(--ion-color-primary-shade, #3171e0);