@ionic/core 7.6.2-dev.11702924017.193c825c → 7.6.2-dev.11702926577.1a448647

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 (313) hide show
  1. package/components/action-sheet.js +4 -4
  2. package/components/backdrop.js +12 -0
  3. package/components/button-active.js +1 -1
  4. package/components/button.js +2 -2
  5. package/components/data.js +1 -1
  6. package/components/gesture-controller.js +1 -1
  7. package/components/ion-content.js +1 -1
  8. package/components/ion-datetime.js +64 -40
  9. package/components/ion-picker-column-internal.d.ts +11 -0
  10. package/components/ion-picker-column-internal.js +9 -0
  11. package/components/ion-picker-column.js +2 -2
  12. package/components/{ion-picker-legacy.d.ts → ion-picker-internal.d.ts} +4 -4
  13. package/components/ion-picker-internal.js +9 -0
  14. package/components/ion-picker.js +309 -1
  15. package/components/overlays.js +4 -11
  16. package/components/picker-column-internal.js +390 -0
  17. package/components/picker-column.js +322 -351
  18. package/components/{picker.js → picker-internal.js} +22 -29
  19. package/dist/cjs/{button-active-466dfc8a.js → button-active-962fe442.js} +2 -2
  20. package/dist/cjs/{data-e2bf21de.js → data-a5109f09.js} +1 -1
  21. package/dist/cjs/{gesture-controller-9436f482.js → gesture-controller-c40c045a.js} +0 -1
  22. package/dist/cjs/{index-ee07ed59.js → index-d1b59ffa.js} +1 -1
  23. package/dist/cjs/index.cjs.js +3 -3
  24. package/dist/cjs/ion-action-sheet.cjs.entry.js +8 -8
  25. package/dist/cjs/ion-alert.cjs.entry.js +4 -4
  26. package/dist/cjs/ion-app_8.cjs.entry.js +2 -2
  27. package/dist/cjs/ion-backdrop.cjs.entry.js +12 -0
  28. package/dist/cjs/ion-button_2.cjs.entry.js +2 -2
  29. package/dist/cjs/ion-datetime-button.cjs.entry.js +1 -1
  30. package/dist/cjs/ion-datetime_3.cjs.entry.js +56 -36
  31. package/dist/cjs/ion-item-option_3.cjs.entry.js +1 -1
  32. package/dist/cjs/ion-loading.cjs.entry.js +1 -2
  33. package/dist/cjs/ion-menu_3.cjs.entry.js +3 -3
  34. package/dist/cjs/ion-modal.cjs.entry.js +3 -3
  35. package/dist/cjs/ion-nav_2.cjs.entry.js +1 -1
  36. package/dist/cjs/{ion-picker-column.cjs.entry.js → ion-picker-column-internal.cjs.entry.js} +87 -104
  37. package/dist/cjs/{ion-picker.cjs.entry.js → ion-picker-internal.cjs.entry.js} +19 -26
  38. package/dist/cjs/ion-popover.cjs.entry.js +1 -2
  39. package/dist/cjs/ion-range.cjs.entry.js +1 -1
  40. package/dist/cjs/ion-refresher_2.cjs.entry.js +3 -3
  41. package/dist/cjs/ion-reorder_2.cjs.entry.js +1 -1
  42. package/dist/cjs/ion-segment_2.cjs.entry.js +1 -1
  43. package/dist/cjs/ion-select_3.cjs.entry.js +1 -2
  44. package/dist/cjs/ion-toast.cjs.entry.js +3 -3
  45. package/dist/cjs/ion-toggle.cjs.entry.js +1 -1
  46. package/dist/cjs/ionic.cjs.js +1 -1
  47. package/dist/cjs/loader.cjs.js +1 -1
  48. package/dist/cjs/{overlays-7773cbe1.js → overlays-e77cc023.js} +4 -11
  49. package/dist/cjs/{swipe-back-b8f2330b.js → swipe-back-2a858bbd.js} +2 -2
  50. package/dist/collection/collection-manifest.json +6 -7
  51. package/dist/collection/components/action-sheet/action-sheet.ios.css +2 -9
  52. package/dist/collection/components/action-sheet/action-sheet.js +2 -2
  53. package/dist/collection/components/action-sheet/action-sheet.md.css +2 -9
  54. package/dist/collection/components/action-sheet/test/basic/action-sheet-rendering.e2e.js +0 -20
  55. package/dist/collection/components/backdrop/backdrop.js +12 -0
  56. package/dist/collection/components/button/button.ios.css +1 -1
  57. package/dist/collection/components/button/button.md.css +1 -1
  58. package/dist/collection/components/button/test/wrap/button.e2e.js +24 -12
  59. package/dist/collection/components/content/content.css +4 -0
  60. package/dist/collection/components/datetime/datetime.ios.css +38 -91
  61. package/dist/collection/components/datetime/datetime.js +36 -24
  62. package/dist/collection/components/datetime/datetime.md.css +38 -96
  63. package/dist/collection/components/datetime/test/a11y/datetime.e2e.js +1 -1
  64. package/dist/collection/components/datetime/test/a11y/datetime.spec.js +9 -6
  65. package/dist/collection/components/datetime/test/basic/datetime.e2e.js +0 -10
  66. package/dist/collection/components/datetime/test/datetime.e2e.js +2 -2
  67. package/dist/collection/components/datetime/test/disabled/datetime.spec.js +4 -4
  68. package/dist/collection/components/datetime/test/locale/datetime.e2e.js +2 -2
  69. package/dist/collection/components/datetime/test/minmax/datetime.e2e.js +6 -6
  70. package/dist/collection/components/datetime/test/month-year-picker/datetime.e2e.js +1 -1
  71. package/dist/collection/components/datetime/test/prefer-wheel/datetime.e2e.js +41 -43
  72. package/dist/collection/components/datetime/test/presentation/datetime.e2e.js +1 -1
  73. package/dist/collection/components/datetime/test/readonly/datetime.e2e.js +4 -4
  74. package/dist/collection/components/datetime/test/values/datetime.e2e.js +12 -15
  75. package/dist/collection/components/datetime/utils/data.js +1 -1
  76. package/dist/collection/components/picker/picker.ios.css +211 -112
  77. package/dist/collection/components/picker/picker.js +744 -472
  78. package/dist/collection/components/picker/picker.md.css +198 -108
  79. package/dist/collection/components/picker/test/basic/picker.e2e.js +13 -99
  80. package/dist/collection/components/{picker-legacy → picker}/test/is-open/picker.e2e.js +4 -4
  81. package/dist/collection/components/{picker-legacy → picker}/test/picker-id.spec.js +5 -5
  82. package/dist/collection/components/{picker-legacy → picker}/test/trigger/picker.e2e.js +1 -1
  83. package/dist/collection/components/picker-column/picker-column.js +335 -497
  84. package/dist/collection/components/{picker-legacy-column → picker-column}/test/picker-column-aria.spec.js +3 -3
  85. package/dist/collection/components/{picker-legacy-column → picker-column}/test/picker-column-dynamic.spec.js +2 -2
  86. package/dist/collection/components/{picker-legacy-column → picker-column}/test/picker-column.spec.js +2 -2
  87. package/dist/collection/components/{picker-legacy-column → picker-column}/test/standalone/picker-column.e2e.js +3 -3
  88. package/dist/collection/components/{picker-column-option/picker-column-option.md.css → picker-column-internal/picker-column-internal.ios.css} +53 -6
  89. package/dist/collection/components/picker-column-internal/picker-column-internal.js +565 -0
  90. package/dist/collection/components/{picker-column/picker-column.css → picker-column-internal/picker-column-internal.md.css} +83 -96
  91. package/dist/collection/components/{picker-column/test/basic/picker-column.e2e.js → picker-column-internal/test/basic/picker-column-internal.e2e.js} +8 -8
  92. package/dist/collection/components/picker-column-internal/test/disabled/picker-column-internal.e2e.js +162 -0
  93. package/dist/collection/components/{picker-legacy/picker.md.css → picker-internal/picker-internal.ios.css} +100 -192
  94. package/dist/collection/components/picker-internal/picker-internal.js +544 -0
  95. package/dist/collection/components/{picker-legacy/picker.ios.css → picker-internal/picker-internal.md.css} +98 -207
  96. package/dist/collection/components/{picker/test/a11y/picker.e2e.js → picker-internal/test/a11y/picker-internal.e2e.js} +2 -2
  97. package/dist/collection/components/picker-internal/test/basic/picker-internal.e2e.js +118 -0
  98. package/dist/collection/components/{picker/test/keyboard-entry/picker.e2e.js → picker-internal/test/keyboard-entry/picker-internal.e2e.js} +32 -63
  99. package/dist/collection/utils/gesture/button-active.js +1 -1
  100. package/dist/collection/utils/gesture/gesture-controller.js +1 -1
  101. package/dist/collection/utils/overlays.js +4 -11
  102. package/dist/docs.json +42 -484
  103. package/dist/esm/{button-active-2758ff14.js → button-active-308d3edd.js} +2 -2
  104. package/dist/esm/{data-6a31d701.js → data-775093f5.js} +1 -1
  105. package/dist/esm/{gesture-controller-314a54f6.js → gesture-controller-1bf57181.js} +1 -1
  106. package/dist/esm/{index-39782642.js → index-2cf77112.js} +2 -2
  107. package/dist/esm/index.js +3 -3
  108. package/dist/esm/ion-action-sheet.entry.js +8 -8
  109. package/dist/esm/ion-alert.entry.js +4 -4
  110. package/dist/esm/ion-app_8.entry.js +2 -2
  111. package/dist/esm/ion-backdrop.entry.js +12 -0
  112. package/dist/esm/ion-button_2.entry.js +2 -2
  113. package/dist/esm/ion-datetime-button.entry.js +1 -1
  114. package/dist/esm/ion-datetime_3.entry.js +55 -35
  115. package/dist/esm/ion-item-option_3.entry.js +1 -1
  116. package/dist/esm/ion-loading.entry.js +1 -2
  117. package/dist/esm/ion-menu_3.entry.js +3 -3
  118. package/dist/esm/ion-modal.entry.js +3 -3
  119. package/dist/esm/ion-nav_2.entry.js +1 -1
  120. package/dist/esm/{ion-picker-column.entry.js → ion-picker-column-internal.entry.js} +87 -104
  121. package/dist/esm/{ion-picker.entry.js → ion-picker-internal.entry.js} +19 -26
  122. package/dist/esm/ion-popover.entry.js +1 -2
  123. package/dist/esm/ion-range.entry.js +1 -1
  124. package/dist/esm/ion-refresher_2.entry.js +3 -3
  125. package/dist/esm/ion-reorder_2.entry.js +1 -1
  126. package/dist/esm/ion-segment_2.entry.js +1 -1
  127. package/dist/esm/ion-select_3.entry.js +1 -2
  128. package/dist/esm/ion-toast.entry.js +3 -3
  129. package/dist/esm/ion-toggle.entry.js +1 -1
  130. package/dist/esm/ionic.js +1 -1
  131. package/dist/esm/loader.js +1 -1
  132. package/dist/esm/{overlays-94dac1cb.js → overlays-b33f6bca.js} +4 -11
  133. package/dist/esm/{swipe-back-a8ca7f93.js → swipe-back-a6f386fc.js} +2 -2
  134. package/dist/esm-es5/button-active-308d3edd.js +4 -0
  135. package/dist/esm-es5/{gesture-controller-314a54f6.js → gesture-controller-1bf57181.js} +1 -1
  136. package/dist/esm-es5/{index-39782642.js → index-2cf77112.js} +1 -1
  137. package/dist/esm-es5/index.js +1 -1
  138. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  139. package/dist/esm-es5/ion-alert.entry.js +1 -1
  140. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  141. package/dist/esm-es5/ion-backdrop.entry.js +1 -1
  142. package/dist/esm-es5/ion-button_2.entry.js +1 -1
  143. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  144. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  145. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  146. package/dist/esm-es5/ion-loading.entry.js +1 -1
  147. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  148. package/dist/esm-es5/ion-modal.entry.js +1 -1
  149. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  150. package/dist/esm-es5/ion-picker-column-internal.entry.js +4 -0
  151. package/dist/esm-es5/ion-picker-internal.entry.js +4 -0
  152. package/dist/esm-es5/ion-popover.entry.js +1 -1
  153. package/dist/esm-es5/ion-range.entry.js +1 -1
  154. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  155. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  156. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  157. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  158. package/dist/esm-es5/ion-toast.entry.js +1 -1
  159. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  160. package/dist/esm-es5/ionic.js +1 -1
  161. package/dist/esm-es5/loader.js +1 -1
  162. package/dist/esm-es5/overlays-b33f6bca.js +4 -0
  163. package/dist/esm-es5/swipe-back-a6f386fc.js +4 -0
  164. package/dist/html.html-data.json +1 -152
  165. package/dist/ionic/index.esm.js +1 -1
  166. package/dist/ionic/ionic.esm.js +1 -1
  167. package/dist/ionic/p-0235067a.js +4 -0
  168. package/dist/ionic/{p-f6cae0b2.system.entry.js → p-06abe918.system.entry.js} +1 -1
  169. package/dist/ionic/{p-5ff211d0.system.entry.js → p-10ec9af7.system.entry.js} +1 -1
  170. package/dist/ionic/{p-10339dcc.entry.js → p-11786dc7.entry.js} +1 -1
  171. package/dist/ionic/{p-1b14f0f8.entry.js → p-11a3973f.entry.js} +1 -1
  172. package/dist/ionic/p-12a62500.entry.js +4 -0
  173. package/dist/ionic/p-19d9ceb8.system.js +1 -1
  174. package/dist/ionic/{p-642ac927.entry.js → p-1b27ac67.entry.js} +1 -1
  175. package/dist/ionic/p-1c249831.entry.js +4 -0
  176. package/dist/ionic/{p-e2737fef.system.entry.js → p-22827063.system.entry.js} +1 -1
  177. package/dist/ionic/{p-d2634efe.system.entry.js → p-28740823.system.entry.js} +1 -1
  178. package/dist/ionic/{p-c01803db.entry.js → p-2894d5f6.entry.js} +1 -1
  179. package/dist/ionic/{p-b2b5d761.entry.js → p-2a583966.entry.js} +1 -1
  180. package/dist/ionic/{p-beed2450.system.entry.js → p-2df97906.system.entry.js} +1 -1
  181. package/dist/ionic/{p-3e1e14d9.system.js → p-31b2326e.system.js} +1 -1
  182. package/dist/ionic/p-35ce400e.system.js +4 -0
  183. package/dist/ionic/p-3671f1b9.system.js +4 -0
  184. package/dist/ionic/{p-bb3fd397.entry.js → p-3e8d5e53.entry.js} +1 -1
  185. package/dist/ionic/p-47bb15a1.entry.js +4 -0
  186. package/dist/ionic/p-4d145435.entry.js +4 -0
  187. package/dist/ionic/p-507ddbfe.system.entry.js +4 -0
  188. package/dist/ionic/p-648ad047.system.entry.js +4 -0
  189. package/dist/ionic/p-6a6477b2.js +4 -0
  190. package/dist/ionic/p-6ab03751.js +4 -0
  191. package/dist/ionic/{p-25312768.system.entry.js → p-6b0ce9b4.system.entry.js} +1 -1
  192. package/dist/ionic/p-6c277fa2.system.entry.js +4 -0
  193. package/dist/ionic/p-6fba0ce1.system.entry.js +4 -0
  194. package/dist/ionic/{p-3af5faf8.system.entry.js → p-745e3339.system.entry.js} +1 -1
  195. package/dist/ionic/{p-ba5d9e27.entry.js → p-767f1a92.entry.js} +1 -1
  196. package/dist/ionic/p-7dc892f8.entry.js +4 -0
  197. package/dist/ionic/p-85f48531.entry.js +4 -0
  198. package/dist/ionic/p-8f301ac5.system.entry.js +4 -0
  199. package/dist/ionic/p-932f2259.system.entry.js +4 -0
  200. package/dist/ionic/{p-0e908476.system.entry.js → p-96d4814f.system.entry.js} +1 -1
  201. package/dist/ionic/{p-964dcdb2.system.entry.js → p-9fda6824.system.entry.js} +1 -1
  202. package/dist/ionic/{p-bec6ae40.entry.js → p-a3ca2e64.entry.js} +1 -1
  203. package/dist/ionic/{p-4793c14c.system.entry.js → p-a42ef163.system.entry.js} +1 -1
  204. package/dist/ionic/{p-6e4c7340.system.entry.js → p-a821750c.system.entry.js} +1 -1
  205. package/dist/ionic/{p-ed8402d6.entry.js → p-aee39e06.entry.js} +1 -1
  206. package/dist/ionic/{p-1ab2642a.system.js → p-afa9f205.system.js} +1 -1
  207. package/dist/ionic/p-b1f29949.system.entry.js +4 -0
  208. package/dist/ionic/p-b7a2ffc9.system.entry.js +4 -0
  209. package/dist/ionic/{p-92bfb607.entry.js → p-b964aba3.entry.js} +1 -1
  210. package/dist/ionic/{p-9b97df10.js → p-bb3615f7.js} +1 -1
  211. package/dist/ionic/{p-3dc1b0f9.entry.js → p-c1701827.entry.js} +1 -1
  212. package/dist/ionic/{p-20755eb0.entry.js → p-c5acfeb1.entry.js} +1 -1
  213. package/dist/ionic/{p-20d469d0.system.js → p-c7c8429a.system.js} +1 -1
  214. package/dist/ionic/p-cd1b920b.entry.js +4 -0
  215. package/dist/ionic/p-da5e2652.entry.js +4 -0
  216. package/dist/ionic/{p-3b434dee.system.entry.js → p-dc71e4ef.system.entry.js} +1 -1
  217. package/dist/ionic/{p-db05ecb6.system.entry.js → p-ddd48faf.system.entry.js} +1 -1
  218. package/dist/ionic/p-ec652bc0.system.entry.js +4 -0
  219. package/dist/ionic/{p-13d4dfe7.entry.js → p-f2bfd3d7.entry.js} +1 -1
  220. package/dist/ionic/{p-8ededb41.js → p-f5d2dc9b.js} +1 -1
  221. package/dist/ionic/p-f6e9c227.system.js +4 -0
  222. package/dist/ionic/p-f894e0ad.entry.js +4 -0
  223. package/dist/types/components/action-sheet/action-sheet-interface.d.ts +0 -1
  224. package/dist/types/components/backdrop/backdrop.d.ts +3 -0
  225. package/dist/types/components/datetime/datetime.d.ts +1 -0
  226. package/dist/types/components/datetime/utils/data.d.ts +7 -11
  227. package/dist/types/components/menu/menu.d.ts +1 -1
  228. package/dist/types/components/picker/picker.d.ts +129 -75
  229. package/dist/types/components/picker-column/picker-column.d.ts +39 -99
  230. package/dist/types/components/picker-column-internal/picker-column-internal-interfaces.d.ts +5 -0
  231. package/dist/types/components/picker-column-internal/picker-column-internal.d.ts +102 -0
  232. package/dist/types/components/picker-internal/picker-internal-interfaces.d.ts +8 -0
  233. package/dist/types/components/picker-internal/picker-internal.d.ts +102 -0
  234. package/dist/types/components.d.ts +122 -154
  235. package/dist/types/interface.d.ts +1 -1
  236. package/dist/types/utils/config.d.ts +2 -2
  237. package/dist/types/utils/gesture/gesture-controller.d.ts +0 -1
  238. package/dist/types/utils/overlays.d.ts +2 -5
  239. package/hydrate/index.js +1199 -1300
  240. package/package.json +2 -2
  241. package/components/ion-picker-column-option.d.ts +0 -11
  242. package/components/ion-picker-column-option.js +0 -9
  243. package/components/ion-picker-legacy-column.d.ts +0 -11
  244. package/components/ion-picker-legacy-column.js +0 -9
  245. package/components/ion-picker-legacy.js +0 -309
  246. package/components/picker-column-option.js +0 -122
  247. package/components/picker-column2.js +0 -379
  248. package/dist/cjs/ion-picker-column-option.cjs.entry.js +0 -104
  249. package/dist/collection/components/picker/test/custom/picker.e2e.js +0 -85
  250. package/dist/collection/components/picker-column/test/disabled/picker-column.e2e.js +0 -91
  251. package/dist/collection/components/picker-column/test/slots/picker-column.e2e.js +0 -39
  252. package/dist/collection/components/picker-column-option/picker-column-option.ios.css +0 -87
  253. package/dist/collection/components/picker-column-option/picker-column-option.js +0 -173
  254. package/dist/collection/components/picker-column-option/test/a11y/picker-column-option.e2e.js +0 -18
  255. package/dist/collection/components/picker-column-option/test/basic/picker-column-option.e2e.js +0 -37
  256. package/dist/collection/components/picker-column-option/test/picker-column-option.spec.js +0 -29
  257. package/dist/collection/components/picker-legacy/picker.js +0 -817
  258. package/dist/collection/components/picker-legacy/test/basic/picker.e2e.js +0 -25
  259. package/dist/collection/components/picker-legacy-column/picker-column.js +0 -419
  260. package/dist/collection/utils/test/overlays/overlays-scroll-blocking.spec.js +0 -65
  261. package/dist/esm/ion-picker-column-option.entry.js +0 -100
  262. package/dist/esm-es5/button-active-2758ff14.js +0 -4
  263. package/dist/esm-es5/ion-picker-column-option.entry.js +0 -4
  264. package/dist/esm-es5/ion-picker-column.entry.js +0 -4
  265. package/dist/esm-es5/ion-picker.entry.js +0 -4
  266. package/dist/esm-es5/overlays-94dac1cb.js +0 -4
  267. package/dist/esm-es5/swipe-back-a8ca7f93.js +0 -4
  268. package/dist/ionic/p-26ff1180.entry.js +0 -4
  269. package/dist/ionic/p-2f449cdf.system.entry.js +0 -4
  270. package/dist/ionic/p-3717e641.system.entry.js +0 -4
  271. package/dist/ionic/p-51abefb7.system.js +0 -4
  272. package/dist/ionic/p-71483cbb.entry.js +0 -4
  273. package/dist/ionic/p-73fbf18d.entry.js +0 -4
  274. package/dist/ionic/p-75a3e35b.entry.js +0 -4
  275. package/dist/ionic/p-77d78f68.system.entry.js +0 -4
  276. package/dist/ionic/p-7c0d778d.system.js +0 -4
  277. package/dist/ionic/p-80ad9792.system.js +0 -4
  278. package/dist/ionic/p-85a67421.system.entry.js +0 -4
  279. package/dist/ionic/p-8ad6d643.entry.js +0 -4
  280. package/dist/ionic/p-9164a09d.entry.js +0 -4
  281. package/dist/ionic/p-a1bd098f.system.entry.js +0 -4
  282. package/dist/ionic/p-a41eaff2.system.entry.js +0 -4
  283. package/dist/ionic/p-a60a1ce5.js +0 -4
  284. package/dist/ionic/p-c001b24f.entry.js +0 -4
  285. package/dist/ionic/p-c19bf524.entry.js +0 -4
  286. package/dist/ionic/p-c6176849.system.entry.js +0 -4
  287. package/dist/ionic/p-cf350317.entry.js +0 -4
  288. package/dist/ionic/p-d3525765.js +0 -4
  289. package/dist/ionic/p-dc63dccb.system.entry.js +0 -4
  290. package/dist/ionic/p-f0717d98.js +0 -4
  291. package/dist/ionic/p-f0dea903.system.entry.js +0 -4
  292. package/dist/ionic/p-f60807dd.system.entry.js +0 -4
  293. package/dist/ionic/p-f8c5008f.entry.js +0 -4
  294. package/dist/types/components/picker/picker-interfaces.d.ts +0 -8
  295. package/dist/types/components/picker-column/picker-column-interfaces.d.ts +0 -4
  296. package/dist/types/components/picker-column-option/picker-column-option.d.ts +0 -66
  297. package/dist/types/components/picker-legacy/picker.d.ts +0 -158
  298. package/dist/types/components/picker-legacy-column/picker-column.d.ts +0 -46
  299. /package/dist/collection/components/{picker-legacy → picker}/animations/ios.enter.js +0 -0
  300. /package/dist/collection/components/{picker-legacy → picker}/animations/ios.leave.js +0 -0
  301. /package/dist/collection/components/picker/{picker-interfaces.js → picker-interface.js} +0 -0
  302. /package/dist/collection/components/{picker-legacy-column → picker-column}/picker-column.ios.css +0 -0
  303. /package/dist/collection/components/{picker-legacy-column → picker-column}/picker-column.md.css +0 -0
  304. /package/dist/collection/components/{picker-legacy-column → picker-column}/test/test.utils.js +0 -0
  305. /package/dist/collection/components/{picker-column/picker-column-interfaces.js → picker-column-internal/picker-column-internal-interfaces.js} +0 -0
  306. /package/dist/collection/components/{picker-legacy/picker-interface.js → picker-internal/picker-internal-interfaces.js} +0 -0
  307. /package/dist/esm-es5/{data-6a31d701.js → data-775093f5.js} +0 -0
  308. /package/dist/ionic/{p-a64accf5.js → p-18cae04f.js} +0 -0
  309. /package/dist/ionic/{p-7ff4359e.system.js → p-87bb3735.system.js} +0 -0
  310. /package/dist/types/components/{picker-legacy → picker}/animations/ios.enter.d.ts +0 -0
  311. /package/dist/types/components/{picker-legacy → picker}/animations/ios.leave.d.ts +0 -0
  312. /package/dist/types/components/{picker-legacy → picker}/picker-interface.d.ts +0 -0
  313. /package/dist/types/components/{picker-legacy-column → picker-column}/test/test.utils.d.ts +0 -0
@@ -2,13 +2,25 @@
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
4
  import { Host, h } from "@stencil/core";
5
+ import { GESTURE_CONTROLLER } from "../../utils/gesture/index";
5
6
  import { getIonMode } from "../../global/ionic-global";
6
7
  export class Backdrop {
7
8
  constructor() {
9
+ this.blocker = GESTURE_CONTROLLER.createBlocker({
10
+ disableScroll: true,
11
+ });
8
12
  this.visible = true;
9
13
  this.tappable = true;
10
14
  this.stopPropagation = true;
11
15
  }
16
+ connectedCallback() {
17
+ if (this.stopPropagation) {
18
+ this.blocker.block();
19
+ }
20
+ }
21
+ disconnectedCallback() {
22
+ this.blocker.unblock();
23
+ }
12
24
  onMouseDown(ev) {
13
25
  this.emitTap(ev);
14
26
  }
@@ -100,7 +100,7 @@
100
100
  font-family: var(--ion-font-family, inherit);
101
101
  text-align: center;
102
102
  text-decoration: none;
103
- white-space: normal;
103
+ white-space: nowrap;
104
104
  user-select: none;
105
105
  vertical-align: top;
106
106
  vertical-align: -webkit-baseline-middle;
@@ -100,7 +100,7 @@
100
100
  font-family: var(--ion-font-family, inherit);
101
101
  text-align: center;
102
102
  text-decoration: none;
103
- white-space: normal;
103
+ white-space: nowrap;
104
104
  user-select: none;
105
105
  vertical-align: top;
106
106
  vertical-align: -webkit-baseline-middle;
@@ -6,29 +6,33 @@ import { configs, test } from "../../../../utils/test/playwright/index";
6
6
  configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
7
7
  test.describe(title('button: wrap'), () => {
8
8
  test('should render button with long text', async ({ page }) => {
9
+ // TODO(FW-4599): remove ion-text-wrap class
9
10
  await page.setContent(`
10
- <ion-button>This is the button that never ends it just goes on and on and on and on and on and on and on and on my friends</ion-button>
11
+ <ion-button class="ion-text-wrap">This is the button that never ends it just goes on and on and on and on and on and on and on and on my friends</ion-button>
11
12
  `, config);
12
13
  const button = page.locator('ion-button');
13
14
  await expect(button).toHaveScreenshot(screenshot(`button-wrap`));
14
15
  });
15
16
  test('should render small button with long text', async ({ page }) => {
17
+ // TODO(FW-4599): remove ion-text-wrap class
16
18
  await page.setContent(`
17
- <ion-button size="small">This is the button that never ends it just goes on and on and on and on and on and on and on and on my friends</ion-button>
19
+ <ion-button class="ion-text-wrap" size="small">This is the button that never ends it just goes on and on and on and on and on and on and on and on my friends</ion-button>
18
20
  `, config);
19
21
  const button = page.locator('ion-button');
20
22
  await expect(button).toHaveScreenshot(screenshot(`button-wrap-small`));
21
23
  });
22
24
  test('should render large button with long text', async ({ page }) => {
25
+ // TODO(FW-4599): remove ion-text-wrap class
23
26
  await page.setContent(`
24
- <ion-button size="large">This is the button that never ends it just goes on and on and on and on and on and on and on and on my friends</ion-button>
27
+ <ion-button class="ion-text-wrap" size="large">This is the button that never ends it just goes on and on and on and on and on and on and on and on my friends</ion-button>
25
28
  `, config);
26
29
  const button = page.locator('ion-button');
27
30
  await expect(button).toHaveScreenshot(screenshot(`button-wrap-large`));
28
31
  });
29
32
  test('should render button with long text and icons', async ({ page }) => {
33
+ // TODO(FW-4599): remove ion-text-wrap class
30
34
  await page.setContent(`
31
- <ion-button>
35
+ <ion-button class="ion-text-wrap">
32
36
  <ion-icon slot="start" name="heart"></ion-icon>
33
37
  This is the button that never ends it just goes on and on and on and on and on and on and on and on my friends
34
38
  <ion-icon slot="end" name="star"></ion-icon>
@@ -38,15 +42,17 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
38
42
  await expect(button).toHaveScreenshot(screenshot(`button-wrap-icons`));
39
43
  });
40
44
  test('should render block button with long text', async ({ page }) => {
45
+ // TODO(FW-4599): remove ion-text-wrap class
41
46
  await page.setContent(`
42
- <ion-button expand="block">This is the button that never ends it just goes on and on and on and on and on and on and on and on my friends</ion-button>
47
+ <ion-button class="ion-text-wrap" expand="block">This is the button that never ends it just goes on and on and on and on and on and on and on and on my friends</ion-button>
43
48
  `, config);
44
49
  const button = page.locator('ion-button');
45
50
  await expect(button).toHaveScreenshot(screenshot(`button-wrap-block`));
46
51
  });
47
52
  test('should render block button with long text and icons', async ({ page }) => {
53
+ // TODO(FW-4599): remove ion-text-wrap class
48
54
  await page.setContent(`
49
- <ion-button expand="block">
55
+ <ion-button class="ion-text-wrap" expand="block">
50
56
  <ion-icon slot="start" name="heart"></ion-icon>
51
57
  This is the button that never ends it just goes on and on and on and on and on and on and on and on my friends
52
58
  <ion-icon slot="end" name="star"></ion-icon>
@@ -56,15 +62,17 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
56
62
  await expect(button).toHaveScreenshot(screenshot(`button-wrap-block-icons`));
57
63
  });
58
64
  test('should render full button with long text', async ({ page }) => {
65
+ // TODO(FW-4599): remove ion-text-wrap class
59
66
  await page.setContent(`
60
- <ion-button expand="full">This is the button that never ends it just goes on and on and on and on and on and on and on and on my friends</ion-button>
67
+ <ion-button class="ion-text-wrap" expand="full">This is the button that never ends it just goes on and on and on and on and on and on and on and on my friends</ion-button>
61
68
  `, config);
62
69
  const button = page.locator('ion-button');
63
70
  await expect(button).toHaveScreenshot(screenshot(`button-wrap-full`));
64
71
  });
65
72
  test('should render full button with long text and icons', async ({ page }) => {
73
+ // TODO(FW-4599): remove ion-text-wrap class
66
74
  await page.setContent(`
67
- <ion-button expand="full">
75
+ <ion-button class="ion-text-wrap" expand="full">
68
76
  <ion-icon slot="start" name="heart"></ion-icon>
69
77
  This is the button that never ends it just goes on and on and on and on and on and on and on and on my friends
70
78
  <ion-icon slot="end" name="star"></ion-icon>
@@ -74,9 +82,10 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
74
82
  await expect(button).toHaveScreenshot(screenshot(`button-wrap-full-icons`));
75
83
  });
76
84
  test('should render an item button with long text', async ({ page }) => {
85
+ // TODO(FW-4599): remove ion-text-wrap class
77
86
  await page.setContent(`
78
87
  <ion-item>
79
- <ion-button slot="end">
88
+ <ion-button class="ion-text-wrap" slot="end">
80
89
  This is the button that never ends it just goes on and on and on and on and on and on and on and on my friends
81
90
  </ion-button>
82
91
  </ion-item>
@@ -85,9 +94,10 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
85
94
  await expect(item).toHaveScreenshot(screenshot(`button-wrap-item-button`));
86
95
  });
87
96
  test('should render an item button with long text and icons', async ({ page }) => {
97
+ // TODO(FW-4599): remove ion-text-wrap class
88
98
  await page.setContent(`
89
99
  <ion-item>
90
- <ion-button slot="end">
100
+ <ion-button class="ion-text-wrap" slot="end">
91
101
  <ion-icon slot="start" name="heart"></ion-icon>
92
102
  This is the button that never ends it just goes on and on and on and on and on and on and on and on my friends
93
103
  <ion-icon slot="end" name="star"></ion-icon>
@@ -98,10 +108,11 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
98
108
  await expect(item).toHaveScreenshot(screenshot(`button-wrap-item-button-icons`));
99
109
  });
100
110
  test('should render a list header button with long text', async ({ page }) => {
111
+ // TODO(FW-4599): remove ion-text-wrap class
101
112
  await page.setContent(`
102
113
  <ion-list-header>
103
114
  <ion-label>List Header</ion-label>
104
- <ion-button>
115
+ <ion-button class="ion-text-wrap">
105
116
  This is the button that never ends it just goes on and on and on and on and on and on and on and on my friends
106
117
  </ion-button>
107
118
  </ion-list-header>
@@ -110,10 +121,11 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
110
121
  await expect(listHeader).toHaveScreenshot(screenshot(`button-wrap-list-header-button`));
111
122
  });
112
123
  test('should render a toolbar button with long text', async ({ page }) => {
124
+ // TODO(FW-4599): remove ion-text-wrap class
113
125
  await page.setContent(`
114
126
  <ion-toolbar>
115
127
  <ion-buttons slot="end">
116
- <ion-button>
128
+ <ion-button class="ion-text-wrap">
117
129
  This is the button that never ends it just goes on and on and on and on and on and on and on and on my friends
118
130
  </ion-button>
119
131
  </ion-buttons>
@@ -97,6 +97,10 @@
97
97
  color: var(--ion-color-contrast);
98
98
  }
99
99
 
100
+ :host(.outer-content) {
101
+ --background: var(--ion-color-step-50, #f2f2f2);
102
+ }
103
+
100
104
  #background-content {
101
105
  left: 0px;
102
106
  right: 0px;
@@ -61,8 +61,6 @@
61
61
  *
62
62
  * @prop --wheel-highlight-background: The background of the highlight under the selected
63
63
  * item when using a wheel style layout, or in the month/year picker for grid style layouts.
64
- * @prop --wheel-highlight-border-radius: The border radius of the highlight under the selected
65
- * item when using a wheel style layout, or in the month/year picker for grid style layouts.
66
64
  * @prop --wheel-fade-background-rgb: The color of the gradient covering non-selected items
67
65
  * when using a wheel style layout, or in the month/year picker for grid style layouts. Must
68
66
  * be in RGB format, e.g. `255, 255, 255`.
@@ -73,6 +71,19 @@
73
71
  overflow: hidden;
74
72
  }
75
73
 
74
+ /**
75
+ * When using the wheel picker to switch
76
+ * between months, sometimes the allowed
77
+ * dates may be filtered. As a result, it
78
+ * is possible to get a layout shift as
79
+ * the picker column will shrink to fit the
80
+ * widest item in the column. Setting a minimum
81
+ * width avoids this layout shifting.
82
+ */
83
+ ion-picker-column-internal {
84
+ min-width: 26px;
85
+ }
86
+
76
87
  :host(.datetime-size-fixed) {
77
88
  width: auto;
78
89
  height: auto;
@@ -83,7 +94,7 @@
83
94
  }
84
95
 
85
96
  /**
86
- * This ensures that the picker is appropriately
97
+ * This ensures that the picker is apppropriately
87
98
  * sized and never truncates the text.
88
99
  */
89
100
  :host(.datetime-size-fixed.datetime-prefer-wheel) {
@@ -306,8 +317,24 @@
306
317
  justify-content: space-between;
307
318
  }
308
319
 
320
+ :host .calendar-action-buttons ion-item,
309
321
  :host .calendar-action-buttons ion-button {
310
- --background: transparent;
322
+ --background: translucent;
323
+ }
324
+
325
+ :host .calendar-action-buttons ion-item ion-label {
326
+ display: flex;
327
+ align-items: center;
328
+ width: auto;
329
+ }
330
+
331
+ :host .calendar-action-buttons ion-item ion-icon {
332
+ -webkit-padding-start: 4px;
333
+ padding-inline-start: 4px;
334
+ -webkit-padding-end: 0;
335
+ padding-inline-end: 0;
336
+ padding-top: 0;
337
+ padding-bottom: 0;
311
338
  }
312
339
 
313
340
  :host .calendar-days-of-week {
@@ -489,72 +516,8 @@
489
516
  position: static;
490
517
  }
491
518
 
492
- :host(.show-month-and-year) .calendar-action-buttons .calendar-month-year-toggle {
493
- color: var(--ion-color-base);
494
- }
495
-
496
- .calendar-month-year {
497
- min-width: 0;
498
- }
499
-
500
- .calendar-month-year-toggle {
501
- font-family: inherit;
502
- font-size: inherit;
503
- font-style: inherit;
504
- font-weight: inherit;
505
- letter-spacing: inherit;
506
- text-decoration: inherit;
507
- text-indent: inherit;
508
- text-overflow: inherit;
509
- text-transform: inherit;
510
- text-align: inherit;
511
- white-space: inherit;
512
- color: inherit;
513
- position: relative;
514
- border: 0;
515
- outline: none;
516
- background: transparent;
517
- cursor: pointer;
518
- z-index: 1;
519
- }
520
- .calendar-month-year-toggle::after {
521
- left: 0;
522
- right: 0;
523
- top: 0;
524
- bottom: 0;
525
- position: absolute;
526
- content: "";
527
- opacity: 0;
528
- transition: opacity 15ms linear, background-color 15ms linear;
529
- z-index: -1;
530
- }
531
- .calendar-month-year-toggle.ion-focused::after {
532
- background: currentColor;
533
- }
534
- .calendar-month-year-toggle:disabled {
535
- opacity: 0.3;
536
- pointer-events: none;
537
- }
538
-
539
- .calendar-month-year-toggle ion-icon {
540
- -webkit-padding-start: 4px;
541
- padding-inline-start: 4px;
542
- -webkit-padding-end: 0;
543
- padding-inline-end: 0;
544
- padding-top: 0;
545
- padding-bottom: 0;
546
- flex-shrink: 0;
547
- }
548
-
549
- .calendar-month-year-toggle #toggle-wrapper {
550
- display: inline-flex;
551
- align-items: center;
552
- }
553
-
554
- ion-picker {
555
- --highlight-background: var(--wheel-highlight-background);
556
- --highlight-border-radius: var(--wheel-highlight-border-radius);
557
- --fade-background-rgb: var(--wheel-fade-background-rgb);
519
+ :host(.show-month-and-year) .calendar-action-buttons ion-item {
520
+ --color: var(--ion-color-base);
558
521
  }
559
522
 
560
523
  /**
@@ -643,31 +606,15 @@ ion-picker {
643
606
  margin-top: 10px;
644
607
  }
645
608
 
646
- .calendar-month-year-toggle {
647
- -webkit-padding-start: 16px;
648
- padding-inline-start: 16px;
649
- -webkit-padding-end: 16px;
650
- padding-inline-end: 16px;
651
- padding-top: 0px;
652
- padding-bottom: 0px;
653
- min-height: 44px;
609
+ :host .calendar-action-buttons ion-item {
610
+ --padding-start: 16px;
611
+ --background-hover: transparent;
612
+ --background-activated: transparent;
654
613
  font-size: min(1rem, 25.6px);
655
614
  font-weight: 600;
656
615
  }
657
- .calendar-month-year-toggle.ion-focused::after {
658
- opacity: 0.15;
659
- }
660
-
661
- .calendar-month-year-toggle #toggle-wrapper {
662
- -webkit-margin-start: 0;
663
- margin-inline-start: 0;
664
- -webkit-margin-end: 8px;
665
- margin-inline-end: 8px;
666
- margin-top: 10px;
667
- margin-bottom: 10px;
668
- }
669
616
 
670
- :host .calendar-action-buttons .calendar-month-year-toggle ion-icon,
617
+ :host .calendar-action-buttons ion-item ion-icon,
671
618
  :host .calendar-action-buttons ion-buttons ion-button {
672
619
  color: var(--ion-color-base);
673
620
  }
@@ -996,7 +996,7 @@ export class Datetime {
996
996
  const renderArray = forcePresentation === 'time-date'
997
997
  ? [this.renderTimePickerColumns(forcePresentation), this.renderDatePickerColumns(forcePresentation)]
998
998
  : [this.renderDatePickerColumns(forcePresentation), this.renderTimePickerColumns(forcePresentation)];
999
- return h("ion-picker", null, renderArray);
999
+ return h("ion-picker-internal", null, renderArray);
1000
1000
  }
1001
1001
  renderDatePickerColumns(forcePresentation) {
1002
1002
  return forcePresentation === 'date-time' || forcePresentation === 'time-date'
@@ -1055,7 +1055,7 @@ export class Datetime {
1055
1055
  const todayString = workingParts.day !== null
1056
1056
  ? `${workingParts.year}-${workingParts.month}-${workingParts.day}`
1057
1057
  : `${defaultParts.year}-${defaultParts.month}-${defaultParts.day}`;
1058
- return (h("ion-picker-column", { class: "date-column", color: this.color, disabled: disabled, value: todayString, onIonChange: (ev) => {
1058
+ return (h("ion-picker-column-internal", { class: "date-column", color: this.color, disabled: disabled, items: items, value: todayString, onIonChange: (ev) => {
1059
1059
  // TODO(FW-1823) Remove this when iOS 14 support is dropped.
1060
1060
  // Due to a Safari 14 issue we need to destroy
1061
1061
  // the scroll listener before we update state
@@ -1071,7 +1071,7 @@ export class Datetime {
1071
1071
  // the working parts have been updated.
1072
1072
  this.initializeCalendarListener();
1073
1073
  ev.stopPropagation();
1074
- } }, items.map((item) => (h("ion-picker-column-option", { part: item.value === todayString ? `${WHEEL_ITEM_PART} ${WHEEL_ITEM_ACTIVE_PART}` : WHEEL_ITEM_PART, key: item.value, disabled: item.disabled, value: item.value }, item.text)))));
1074
+ } }));
1075
1075
  }
1076
1076
  renderIndividualDatePickerColumns(forcePresentation) {
1077
1077
  const { workingParts, isDateEnabled } = this;
@@ -1139,8 +1139,7 @@ export class Datetime {
1139
1139
  }
1140
1140
  const { disabled, workingParts } = this;
1141
1141
  const activePart = this.getActivePartsWithFallback();
1142
- const pickerColumnValue = (_a = (workingParts.day !== null ? workingParts.day : this.defaultParts.day)) !== null && _a !== void 0 ? _a : undefined;
1143
- return (h("ion-picker-column", { class: "day-column", color: this.color, disabled: disabled, value: pickerColumnValue, onIonChange: (ev) => {
1142
+ return (h("ion-picker-column-internal", { class: "day-column", color: this.color, disabled: disabled, items: days, value: (_a = (workingParts.day !== null ? workingParts.day : this.defaultParts.day)) !== null && _a !== void 0 ? _a : undefined, onIonChange: (ev) => {
1144
1143
  // TODO(FW-1823) Remove this when iOS 14 support is dropped.
1145
1144
  // Due to a Safari 14 issue we need to destroy
1146
1145
  // the scroll listener before we update state
@@ -1154,7 +1153,7 @@ export class Datetime {
1154
1153
  // the working parts have been updated.
1155
1154
  this.initializeCalendarListener();
1156
1155
  ev.stopPropagation();
1157
- } }, days.map((day) => (h("ion-picker-column-option", { part: day.value === pickerColumnValue ? `${WHEEL_ITEM_PART} ${WHEEL_ITEM_ACTIVE_PART}` : WHEEL_ITEM_PART, key: day.value, disabled: day.disabled, value: day.value }, day.text)))));
1156
+ } }));
1158
1157
  }
1159
1158
  renderMonthPickerColumn(months) {
1160
1159
  if (months.length === 0) {
@@ -1162,7 +1161,7 @@ export class Datetime {
1162
1161
  }
1163
1162
  const { disabled, workingParts } = this;
1164
1163
  const activePart = this.getActivePartsWithFallback();
1165
- return (h("ion-picker-column", { class: "month-column", color: this.color, disabled: disabled, value: workingParts.month, onIonChange: (ev) => {
1164
+ return (h("ion-picker-column-internal", { class: "month-column", color: this.color, disabled: disabled, items: months, value: workingParts.month, onIonChange: (ev) => {
1166
1165
  // TODO(FW-1823) Remove this when iOS 14 support is dropped.
1167
1166
  // Due to a Safari 14 issue we need to destroy
1168
1167
  // the scroll listener before we update state
@@ -1176,7 +1175,7 @@ export class Datetime {
1176
1175
  // the working parts have been updated.
1177
1176
  this.initializeCalendarListener();
1178
1177
  ev.stopPropagation();
1179
- } }, months.map((month) => (h("ion-picker-column-option", { part: month.value === workingParts.month ? `${WHEEL_ITEM_PART} ${WHEEL_ITEM_ACTIVE_PART}` : WHEEL_ITEM_PART, key: month.value, disabled: month.disabled, value: month.value }, month.text)))));
1178
+ } }));
1180
1179
  }
1181
1180
  renderYearPickerColumn(years) {
1182
1181
  if (years.length === 0) {
@@ -1184,7 +1183,7 @@ export class Datetime {
1184
1183
  }
1185
1184
  const { disabled, workingParts } = this;
1186
1185
  const activePart = this.getActivePartsWithFallback();
1187
- return (h("ion-picker-column", { class: "year-column", color: this.color, disabled: disabled, value: workingParts.year, onIonChange: (ev) => {
1186
+ return (h("ion-picker-column-internal", { class: "year-column", color: this.color, disabled: disabled, items: years, value: workingParts.year, onIonChange: (ev) => {
1188
1187
  // TODO(FW-1823) Remove this when iOS 14 support is dropped.
1189
1188
  // Due to a Safari 14 issue we need to destroy
1190
1189
  // the scroll listener before we update state
@@ -1198,7 +1197,7 @@ export class Datetime {
1198
1197
  // the working parts have been updated.
1199
1198
  this.initializeCalendarListener();
1200
1199
  ev.stopPropagation();
1201
- } }, years.map((year) => (h("ion-picker-column-option", { part: year.value === workingParts.year ? `${WHEEL_ITEM_PART} ${WHEEL_ITEM_ACTIVE_PART}` : WHEEL_ITEM_PART, key: year.value, disabled: year.disabled, value: year.value }, year.text)))));
1200
+ } }));
1202
1201
  }
1203
1202
  renderTimePickerColumns(forcePresentation) {
1204
1203
  if (['date', 'month', 'month-year', 'year'].includes(forcePresentation)) {
@@ -1227,22 +1226,22 @@ export class Datetime {
1227
1226
  if (hoursData.length === 0)
1228
1227
  return [];
1229
1228
  const activePart = this.getActivePartsWithFallback();
1230
- return (h("ion-picker-column", { color: this.color, disabled: disabled, value: activePart.hour, numericInput: true, onIonChange: (ev) => {
1229
+ return (h("ion-picker-column-internal", { color: this.color, disabled: disabled, value: activePart.hour, items: hoursData, numericInput: true, onIonChange: (ev) => {
1231
1230
  this.setWorkingParts(Object.assign(Object.assign({}, workingParts), { hour: ev.detail.value }));
1232
1231
  this.setActiveParts(Object.assign(Object.assign({}, activePart), { hour: ev.detail.value }));
1233
1232
  ev.stopPropagation();
1234
- } }, hoursData.map((hour) => (h("ion-picker-column-option", { part: hour.value === activePart.hour ? `${WHEEL_ITEM_PART} ${WHEEL_ITEM_ACTIVE_PART}` : WHEEL_ITEM_PART, key: hour.value, disabled: hour.disabled, value: hour.value }, hour.text)))));
1233
+ } }));
1235
1234
  }
1236
1235
  renderMinutePickerColumn(minutesData) {
1237
1236
  const { disabled, workingParts } = this;
1238
1237
  if (minutesData.length === 0)
1239
1238
  return [];
1240
1239
  const activePart = this.getActivePartsWithFallback();
1241
- return (h("ion-picker-column", { color: this.color, disabled: disabled, value: activePart.minute, numericInput: true, onIonChange: (ev) => {
1240
+ return (h("ion-picker-column-internal", { color: this.color, disabled: disabled, value: activePart.minute, items: minutesData, numericInput: true, onIonChange: (ev) => {
1242
1241
  this.setWorkingParts(Object.assign(Object.assign({}, workingParts), { minute: ev.detail.value }));
1243
1242
  this.setActiveParts(Object.assign(Object.assign({}, activePart), { minute: ev.detail.value }));
1244
1243
  ev.stopPropagation();
1245
- } }, minutesData.map((minute) => (h("ion-picker-column-option", { part: minute.value === activePart.minute ? `${WHEEL_ITEM_PART} ${WHEEL_ITEM_ACTIVE_PART}` : WHEEL_ITEM_PART, key: minute.value, disabled: minute.disabled, value: minute.value }, minute.text)))));
1244
+ } }));
1246
1245
  }
1247
1246
  renderDayPeriodPickerColumn(dayPeriodData) {
1248
1247
  const { disabled, workingParts } = this;
@@ -1251,12 +1250,12 @@ export class Datetime {
1251
1250
  }
1252
1251
  const activePart = this.getActivePartsWithFallback();
1253
1252
  const isDayPeriodRTL = isLocaleDayPeriodRTL(this.locale);
1254
- return (h("ion-picker-column", { style: isDayPeriodRTL ? { order: '-1' } : {}, color: this.color, disabled: disabled, value: activePart.ampm, onIonChange: (ev) => {
1253
+ return (h("ion-picker-column-internal", { style: isDayPeriodRTL ? { order: '-1' } : {}, color: this.color, disabled: disabled, value: activePart.ampm, items: dayPeriodData, onIonChange: (ev) => {
1255
1254
  const hour = calculateHourFromAMPM(workingParts, ev.detail.value);
1256
1255
  this.setWorkingParts(Object.assign(Object.assign({}, workingParts), { ampm: ev.detail.value, hour }));
1257
1256
  this.setActiveParts(Object.assign(Object.assign({}, activePart), { ampm: ev.detail.value, hour }));
1258
1257
  ev.stopPropagation();
1259
- } }, dayPeriodData.map((dayPeriod) => (h("ion-picker-column-option", { part: dayPeriod.value === activePart.ampm ? `${WHEEL_ITEM_PART} ${WHEEL_ITEM_ACTIVE_PART}` : WHEEL_ITEM_PART, key: dayPeriod.value, disabled: dayPeriod.disabled, value: dayPeriod.value }, dayPeriod.text)))));
1258
+ } }));
1260
1259
  }
1261
1260
  renderWheelView(forcePresentation) {
1262
1261
  const { locale } = this;
@@ -1277,11 +1276,26 @@ export class Datetime {
1277
1276
  const nextMonthDisabled = disabled || isNextMonthDisabled(this.workingParts, this.maxParts);
1278
1277
  // don't use the inheritAttributes util because it removes dir from the host, and we still need that
1279
1278
  const hostDir = this.el.getAttribute('dir') || undefined;
1280
- return (h("div", { class: "calendar-header" }, h("div", { class: "calendar-action-buttons" }, h("div", { class: "calendar-month-year" }, h("button", { class: {
1281
- 'calendar-month-year-toggle': true,
1282
- 'ion-activatable': true,
1283
- 'ion-focusable': true,
1284
- }, part: "month-year-button", disabled: disabled, "aria-label": this.showMonthAndYear ? 'Hide year picker' : 'Show year picker', onClick: () => this.toggleMonthAndYearView() }, h("span", { id: "toggle-wrapper" }, getMonthAndYear(this.locale, this.workingParts), h("ion-icon", { "aria-hidden": "true", icon: this.showMonthAndYear ? expandedIcon : collapsedIcon, lazy: false, flipRtl: true })), mode === 'md' && h("ion-ripple-effect", null))), h("div", { class: "calendar-next-prev" }, h("ion-buttons", null, h("ion-button", { "aria-label": "Previous month", disabled: prevMonthDisabled, onClick: () => this.prevMonth() }, h("ion-icon", { dir: hostDir, "aria-hidden": "true", slot: "icon-only", icon: chevronBack, lazy: false, flipRtl: true })), h("ion-button", { "aria-label": "Next month", disabled: nextMonthDisabled, onClick: () => this.nextMonth() }, h("ion-icon", { dir: hostDir, "aria-hidden": "true", slot: "icon-only", icon: chevronForward, lazy: false, flipRtl: true }))))), h("div", { class: "calendar-days-of-week", "aria-hidden": "true" }, getDaysOfWeek(this.locale, mode, this.firstDayOfWeek % 7).map((d) => {
1279
+ return (h("div", { class: "calendar-header" }, h("div", { class: "calendar-action-buttons" }, h("div", { class: "calendar-month-year" }, h("ion-item", { part: "month-year-button", ref: (el) => (this.monthYearToggleItemRef = el), button: true, "aria-label": "Show year picker", detail: false, lines: "none", disabled: disabled, onClick: () => {
1280
+ var _a;
1281
+ this.toggleMonthAndYearView();
1282
+ /**
1283
+ * TODO: FW-3547
1284
+ *
1285
+ * Currently there is not a way to set the aria-label on the inner button
1286
+ * on the `ion-item` and have it be reactive to changes. This is a workaround
1287
+ * until we either refactor `ion-item` to a button or Stencil adds a way to
1288
+ * have reactive props for built-in properties, such as `aria-label`.
1289
+ */
1290
+ const { monthYearToggleItemRef } = this;
1291
+ if (monthYearToggleItemRef) {
1292
+ const btn = (_a = monthYearToggleItemRef.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.item-native');
1293
+ if (btn) {
1294
+ const monthYearAriaLabel = this.showMonthAndYear ? 'Hide year picker' : 'Show year picker';
1295
+ btn.setAttribute('aria-label', monthYearAriaLabel);
1296
+ }
1297
+ }
1298
+ } }, h("ion-label", null, getMonthAndYear(this.locale, this.workingParts), h("ion-icon", { "aria-hidden": "true", icon: this.showMonthAndYear ? expandedIcon : collapsedIcon, lazy: false, flipRtl: true })))), h("div", { class: "calendar-next-prev" }, h("ion-buttons", null, h("ion-button", { "aria-label": "Previous month", disabled: prevMonthDisabled, onClick: () => this.prevMonth() }, h("ion-icon", { dir: hostDir, "aria-hidden": "true", slot: "icon-only", icon: chevronBack, lazy: false, flipRtl: true })), h("ion-button", { "aria-label": "Next month", disabled: nextMonthDisabled, onClick: () => this.nextMonth() }, h("ion-icon", { dir: hostDir, "aria-hidden": "true", slot: "icon-only", icon: chevronForward, lazy: false, flipRtl: true }))))), h("div", { class: "calendar-days-of-week", "aria-hidden": "true" }, getDaysOfWeek(this.locale, mode, this.firstDayOfWeek % 7).map((d) => {
1285
1299
  return h("div", { class: "day-of-week" }, d);
1286
1300
  }))));
1287
1301
  }
@@ -1442,7 +1456,7 @@ export class Datetime {
1442
1456
  * This will correctly scroll the element position to the correct time value,
1443
1457
  * before the popover is fully presented.
1444
1458
  */
1445
- const cols = ev.target.querySelectorAll('ion-picker-column');
1459
+ const cols = ev.target.querySelectorAll('ion-picker-column-internal');
1446
1460
  // TODO (FW-615): Potentially remove this when intersection observers are fixed in picker column
1447
1461
  cols.forEach((col) => col.scrollActiveItemIntoView());
1448
1462
  }, style: {
@@ -2370,5 +2384,3 @@ export class Datetime {
2370
2384
  }
2371
2385
  }
2372
2386
  let datetimeIds = 0;
2373
- const WHEEL_ITEM_PART = 'wheel-item';
2374
- const WHEEL_ITEM_ACTIVE_PART = `active`;