@ionic/core 7.6.2-dev.11703182244.1165aeec → 7.6.2-dev.11704390532.1202188d

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 (307) hide show
  1. package/components/backdrop.js +0 -12
  2. package/components/button.js +2 -2
  3. package/components/data.js +1 -1
  4. package/components/gesture-controller.js +1 -1
  5. package/components/ion-content.js +1 -1
  6. package/components/ion-datetime.js +40 -64
  7. package/components/ion-picker-column-option.d.ts +11 -0
  8. package/components/ion-picker-column-option.js +9 -0
  9. package/components/ion-picker-column.js +2 -2
  10. package/components/ion-picker-legacy-column.d.ts +11 -0
  11. package/components/ion-picker-legacy-column.js +9 -0
  12. package/components/{ion-picker-internal.d.ts → ion-picker-legacy.d.ts} +4 -4
  13. package/components/ion-picker-legacy.js +309 -0
  14. package/components/ion-picker.js +1 -309
  15. package/components/overlays.js +11 -4
  16. package/components/picker-column-option.js +122 -0
  17. package/components/picker-column.js +351 -322
  18. package/components/picker-column2.js +379 -0
  19. package/components/{picker-internal.js → picker.js} +29 -22
  20. package/components/radio-group.js +1 -9
  21. package/dist/cjs/{button-active-962fe442.js → button-active-5bf1cac0.js} +1 -1
  22. package/dist/cjs/{data-a5109f09.js → data-e2bf21de.js} +1 -1
  23. package/dist/cjs/{gesture-controller-c40c045a.js → gesture-controller-9436f482.js} +1 -0
  24. package/dist/cjs/{index-d1b59ffa.js → index-ee07ed59.js} +1 -1
  25. package/dist/cjs/index.cjs.js +3 -3
  26. package/dist/cjs/ion-action-sheet.cjs.entry.js +4 -4
  27. package/dist/cjs/ion-alert.cjs.entry.js +4 -4
  28. package/dist/cjs/ion-app_8.cjs.entry.js +2 -2
  29. package/dist/cjs/ion-backdrop.cjs.entry.js +0 -12
  30. package/dist/cjs/ion-button_2.cjs.entry.js +2 -2
  31. package/dist/cjs/ion-datetime-button.cjs.entry.js +1 -1
  32. package/dist/cjs/ion-datetime_3.cjs.entry.js +36 -56
  33. package/dist/cjs/ion-item-option_3.cjs.entry.js +1 -1
  34. package/dist/cjs/ion-loading.cjs.entry.js +2 -1
  35. package/dist/cjs/ion-menu_3.cjs.entry.js +3 -3
  36. package/dist/cjs/ion-modal.cjs.entry.js +3 -3
  37. package/dist/cjs/ion-nav_2.cjs.entry.js +1 -1
  38. package/dist/cjs/ion-picker-column-option.cjs.entry.js +104 -0
  39. package/dist/cjs/{ion-picker-column-internal.cjs.entry.js → ion-picker-column.cjs.entry.js} +104 -87
  40. package/dist/cjs/{ion-picker-internal.cjs.entry.js → ion-picker.cjs.entry.js} +26 -19
  41. package/dist/cjs/ion-popover.cjs.entry.js +2 -1
  42. package/dist/cjs/ion-radio_2.cjs.entry.js +1 -9
  43. package/dist/cjs/ion-range.cjs.entry.js +1 -1
  44. package/dist/cjs/ion-refresher_2.cjs.entry.js +3 -3
  45. package/dist/cjs/ion-reorder_2.cjs.entry.js +1 -1
  46. package/dist/cjs/ion-segment_2.cjs.entry.js +1 -1
  47. package/dist/cjs/ion-select_3.cjs.entry.js +2 -1
  48. package/dist/cjs/ion-toast.cjs.entry.js +3 -3
  49. package/dist/cjs/ion-toggle.cjs.entry.js +1 -1
  50. package/dist/cjs/ionic.cjs.js +1 -1
  51. package/dist/cjs/loader.cjs.js +1 -1
  52. package/dist/cjs/{overlays-e77cc023.js → overlays-7773cbe1.js} +11 -4
  53. package/dist/cjs/{swipe-back-2a858bbd.js → swipe-back-b8f2330b.js} +2 -2
  54. package/dist/collection/collection-manifest.json +7 -6
  55. package/dist/collection/components/backdrop/backdrop.js +0 -12
  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 +12 -24
  59. package/dist/collection/components/content/content.css +0 -4
  60. package/dist/collection/components/datetime/datetime.ios.css +91 -38
  61. package/dist/collection/components/datetime/datetime.js +24 -36
  62. package/dist/collection/components/datetime/datetime.md.css +96 -38
  63. package/dist/collection/components/datetime/test/a11y/datetime.e2e.js +1 -1
  64. package/dist/collection/components/datetime/test/a11y/datetime.spec.js +6 -9
  65. package/dist/collection/components/datetime/test/basic/datetime.e2e.js +10 -0
  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 +43 -41
  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 +15 -12
  75. package/dist/collection/components/datetime/utils/data.js +1 -1
  76. package/dist/collection/components/picker/picker.ios.css +112 -211
  77. package/dist/collection/components/picker/picker.js +472 -744
  78. package/dist/collection/components/picker/picker.md.css +108 -198
  79. package/dist/collection/components/{picker-internal/test/a11y/picker-internal.e2e.js → picker/test/a11y/picker.e2e.js} +2 -2
  80. package/dist/collection/components/picker/test/basic/picker.e2e.js +99 -13
  81. package/dist/collection/components/picker/test/custom/picker.e2e.js +85 -0
  82. package/dist/collection/components/{picker-internal/test/keyboard-entry/picker-internal.e2e.js → picker/test/keyboard-entry/picker.e2e.js} +63 -32
  83. package/dist/collection/components/{picker-column-internal/picker-column-internal.md.css → picker-column/picker-column.css} +96 -83
  84. package/dist/collection/components/picker-column/picker-column.js +497 -335
  85. package/dist/collection/components/{picker-column-internal/test/basic/picker-column-internal.e2e.js → picker-column/test/basic/picker-column.e2e.js} +8 -8
  86. package/dist/collection/components/picker-column/test/disabled/picker-column.e2e.js +91 -0
  87. package/dist/collection/components/picker-column/test/slots/picker-column.e2e.js +39 -0
  88. package/dist/collection/components/picker-column-option/picker-column-option.ios.css +87 -0
  89. package/dist/collection/components/picker-column-option/picker-column-option.js +173 -0
  90. package/dist/collection/components/{picker-column-internal/picker-column-internal.ios.css → picker-column-option/picker-column-option.md.css} +6 -53
  91. package/dist/collection/components/picker-column-option/test/a11y/picker-column-option.e2e.js +18 -0
  92. package/dist/collection/components/picker-column-option/test/basic/picker-column-option.e2e.js +37 -0
  93. package/dist/collection/components/picker-column-option/test/picker-column-option.spec.js +29 -0
  94. package/dist/collection/components/{picker-internal/picker-internal.md.css → picker-legacy/picker.ios.css} +207 -98
  95. package/dist/collection/components/picker-legacy/picker.js +817 -0
  96. package/dist/collection/components/{picker-internal/picker-internal.ios.css → picker-legacy/picker.md.css} +192 -100
  97. package/dist/collection/components/picker-legacy/test/basic/picker.e2e.js +25 -0
  98. package/dist/collection/components/{picker → picker-legacy}/test/is-open/picker.e2e.js +4 -4
  99. package/dist/collection/components/{picker → picker-legacy}/test/picker-id.spec.js +5 -5
  100. package/dist/collection/components/{picker → picker-legacy}/test/trigger/picker.e2e.js +1 -1
  101. package/dist/collection/components/picker-legacy-column/picker-column.js +419 -0
  102. package/dist/collection/components/{picker-column → picker-legacy-column}/test/picker-column-aria.spec.js +3 -3
  103. package/dist/collection/components/{picker-column → picker-legacy-column}/test/picker-column-dynamic.spec.js +2 -2
  104. package/dist/collection/components/{picker-column → picker-legacy-column}/test/picker-column.spec.js +2 -2
  105. package/dist/collection/components/{picker-column → picker-legacy-column}/test/standalone/picker-column.e2e.js +3 -3
  106. package/dist/collection/components/radio-group/radio-group.js +1 -9
  107. package/dist/collection/utils/gesture/gesture-controller.js +1 -1
  108. package/dist/collection/utils/overlays.js +11 -4
  109. package/dist/collection/utils/test/overlays/overlays-scroll-blocking.spec.js +65 -0
  110. package/dist/docs.json +478 -41
  111. package/dist/esm/{button-active-308d3edd.js → button-active-48379dd2.js} +1 -1
  112. package/dist/esm/{data-775093f5.js → data-6a31d701.js} +1 -1
  113. package/dist/esm/{gesture-controller-1bf57181.js → gesture-controller-314a54f6.js} +1 -1
  114. package/dist/esm/{index-2cf77112.js → index-39782642.js} +2 -2
  115. package/dist/esm/index.js +3 -3
  116. package/dist/esm/ion-action-sheet.entry.js +4 -4
  117. package/dist/esm/ion-alert.entry.js +4 -4
  118. package/dist/esm/ion-app_8.entry.js +2 -2
  119. package/dist/esm/ion-backdrop.entry.js +0 -12
  120. package/dist/esm/ion-button_2.entry.js +2 -2
  121. package/dist/esm/ion-datetime-button.entry.js +1 -1
  122. package/dist/esm/ion-datetime_3.entry.js +35 -55
  123. package/dist/esm/ion-item-option_3.entry.js +1 -1
  124. package/dist/esm/ion-loading.entry.js +2 -1
  125. package/dist/esm/ion-menu_3.entry.js +3 -3
  126. package/dist/esm/ion-modal.entry.js +3 -3
  127. package/dist/esm/ion-nav_2.entry.js +1 -1
  128. package/dist/esm/ion-picker-column-option.entry.js +100 -0
  129. package/dist/esm/{ion-picker-column-internal.entry.js → ion-picker-column.entry.js} +104 -87
  130. package/dist/esm/{ion-picker-internal.entry.js → ion-picker.entry.js} +26 -19
  131. package/dist/esm/ion-popover.entry.js +2 -1
  132. package/dist/esm/ion-radio_2.entry.js +1 -9
  133. package/dist/esm/ion-range.entry.js +1 -1
  134. package/dist/esm/ion-refresher_2.entry.js +3 -3
  135. package/dist/esm/ion-reorder_2.entry.js +1 -1
  136. package/dist/esm/ion-segment_2.entry.js +1 -1
  137. package/dist/esm/ion-select_3.entry.js +2 -1
  138. package/dist/esm/ion-toast.entry.js +3 -3
  139. package/dist/esm/ion-toggle.entry.js +1 -1
  140. package/dist/esm/ionic.js +1 -1
  141. package/dist/esm/loader.js +1 -1
  142. package/dist/esm/{overlays-b33f6bca.js → overlays-94dac1cb.js} +11 -4
  143. package/dist/esm/{swipe-back-a6f386fc.js → swipe-back-a8ca7f93.js} +2 -2
  144. package/dist/esm-es5/{button-active-308d3edd.js → button-active-48379dd2.js} +1 -1
  145. package/dist/esm-es5/{gesture-controller-1bf57181.js → gesture-controller-314a54f6.js} +1 -1
  146. package/dist/esm-es5/{index-2cf77112.js → index-39782642.js} +1 -1
  147. package/dist/esm-es5/index.js +1 -1
  148. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  149. package/dist/esm-es5/ion-alert.entry.js +1 -1
  150. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  151. package/dist/esm-es5/ion-backdrop.entry.js +1 -1
  152. package/dist/esm-es5/ion-button_2.entry.js +1 -1
  153. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  154. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  155. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  156. package/dist/esm-es5/ion-loading.entry.js +1 -1
  157. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  158. package/dist/esm-es5/ion-modal.entry.js +1 -1
  159. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  160. package/dist/esm-es5/ion-picker-column-option.entry.js +4 -0
  161. package/dist/esm-es5/ion-picker-column.entry.js +4 -0
  162. package/dist/esm-es5/ion-picker.entry.js +4 -0
  163. package/dist/esm-es5/ion-popover.entry.js +1 -1
  164. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  165. package/dist/esm-es5/ion-range.entry.js +1 -1
  166. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  167. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  168. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  169. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  170. package/dist/esm-es5/ion-toast.entry.js +1 -1
  171. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  172. package/dist/esm-es5/ionic.js +1 -1
  173. package/dist/esm-es5/loader.js +1 -1
  174. package/dist/esm-es5/overlays-94dac1cb.js +4 -0
  175. package/dist/esm-es5/swipe-back-a8ca7f93.js +4 -0
  176. package/dist/html.html-data.json +152 -1
  177. package/dist/ionic/index.esm.js +1 -1
  178. package/dist/ionic/ionic.esm.js +1 -1
  179. package/dist/ionic/{p-254ec7c0.system.entry.js → p-0dfa4ab4.system.entry.js} +2 -2
  180. package/dist/ionic/{p-96d4814f.system.entry.js → p-0e908476.system.entry.js} +1 -1
  181. package/dist/ionic/{p-11786dc7.entry.js → p-10339dcc.entry.js} +1 -1
  182. package/dist/ionic/{p-f6e9c227.system.js → p-11c55ac8.system.js} +1 -1
  183. package/dist/ionic/{p-f2bfd3d7.entry.js → p-13d4dfe7.entry.js} +1 -1
  184. package/dist/ionic/p-19d9ceb8.system.js +1 -1
  185. package/dist/ionic/{p-afa9f205.system.js → p-1ab2642a.system.js} +1 -1
  186. package/dist/ionic/{p-11a3973f.entry.js → p-1b14f0f8.entry.js} +1 -1
  187. package/dist/ionic/{p-0235067a.js → p-1b60cc53.js} +1 -1
  188. package/dist/ionic/{p-c5acfeb1.entry.js → p-20755eb0.entry.js} +1 -1
  189. package/dist/ionic/{p-c7c8429a.system.js → p-20d469d0.system.js} +1 -1
  190. package/dist/ionic/{p-6b0ce9b4.system.entry.js → p-25312768.system.entry.js} +1 -1
  191. package/dist/ionic/p-26ff1180.entry.js +4 -0
  192. package/dist/ionic/p-2f449cdf.system.entry.js +4 -0
  193. package/dist/ionic/p-3717e641.system.entry.js +4 -0
  194. package/dist/ionic/{p-745e3339.system.entry.js → p-3af5faf8.system.entry.js} +1 -1
  195. package/dist/ionic/{p-dc71e4ef.system.entry.js → p-3b434dee.system.entry.js} +1 -1
  196. package/dist/ionic/{p-31b2326e.system.js → p-3e1e14d9.system.js} +1 -1
  197. package/dist/ionic/{p-a42ef163.system.entry.js → p-4793c14c.system.entry.js} +1 -1
  198. package/dist/ionic/p-51abefb7.system.js +4 -0
  199. package/dist/ionic/{p-10ec9af7.system.entry.js → p-5ff211d0.system.entry.js} +1 -1
  200. package/dist/ionic/{p-1b27ac67.entry.js → p-642ac927.entry.js} +1 -1
  201. package/dist/ionic/{p-a821750c.system.entry.js → p-6e4c7340.system.entry.js} +1 -1
  202. package/dist/ionic/p-71483cbb.entry.js +4 -0
  203. package/dist/ionic/p-75a3e35b.entry.js +4 -0
  204. package/dist/ionic/p-77d78f68.system.entry.js +4 -0
  205. package/dist/ionic/{p-06abe918.system.entry.js → p-7be412e8.system.entry.js} +1 -1
  206. package/dist/ionic/p-7c0d778d.system.js +4 -0
  207. package/dist/ionic/{p-c1701827.entry.js → p-80c6c078.entry.js} +1 -1
  208. package/dist/ionic/p-8ad6d643.entry.js +4 -0
  209. package/dist/ionic/{p-648ad047.system.entry.js → p-8ce4e506.system.entry.js} +1 -1
  210. package/dist/ionic/{p-f5d2dc9b.js → p-8ededb41.js} +1 -1
  211. package/dist/ionic/p-9164a09d.entry.js +4 -0
  212. package/dist/ionic/{p-b964aba3.entry.js → p-92bfb607.entry.js} +1 -1
  213. package/dist/ionic/{p-f894e0ad.entry.js → p-92d35b6a.entry.js} +1 -1
  214. package/dist/ionic/{p-9fda6824.system.entry.js → p-964dcdb2.system.entry.js} +1 -1
  215. package/dist/ionic/{p-bb3615f7.js → p-9b97df10.js} +1 -1
  216. package/dist/ionic/p-a1bd098f.system.entry.js +4 -0
  217. package/dist/ionic/p-a41eaff2.system.entry.js +4 -0
  218. package/dist/ionic/p-a60a1ce5.js +4 -0
  219. package/dist/ionic/{p-2a583966.entry.js → p-b2b5d761.entry.js} +1 -1
  220. package/dist/ionic/{p-767f1a92.entry.js → p-ba5d9e27.entry.js} +1 -1
  221. package/dist/ionic/{p-3e8d5e53.entry.js → p-bb3fd397.entry.js} +1 -1
  222. package/dist/ionic/{p-a3ca2e64.entry.js → p-bec6ae40.entry.js} +1 -1
  223. package/dist/ionic/{p-2df97906.system.entry.js → p-beed2450.system.entry.js} +1 -1
  224. package/dist/ionic/p-c001b24f.entry.js +4 -0
  225. package/dist/ionic/{p-2894d5f6.entry.js → p-c01803db.entry.js} +1 -1
  226. package/dist/ionic/p-c19bf524.entry.js +4 -0
  227. package/dist/ionic/p-c6176849.system.entry.js +4 -0
  228. package/dist/ionic/p-cf350317.entry.js +4 -0
  229. package/dist/ionic/{p-bdf71399.entry.js → p-cf53213c.entry.js} +1 -1
  230. package/dist/ionic/{p-28740823.system.entry.js → p-d2634efe.system.entry.js} +1 -1
  231. package/dist/ionic/{p-ddd48faf.system.entry.js → p-db05ecb6.system.entry.js} +1 -1
  232. package/dist/ionic/p-dc63dccb.system.entry.js +4 -0
  233. package/dist/ionic/{p-22827063.system.entry.js → p-e2737fef.system.entry.js} +1 -1
  234. package/dist/ionic/{p-aee39e06.entry.js → p-ed8402d6.entry.js} +1 -1
  235. package/dist/ionic/p-f0717d98.js +4 -0
  236. package/dist/ionic/p-f0dea903.system.entry.js +4 -0
  237. package/dist/ionic/p-f60807dd.system.entry.js +4 -0
  238. package/dist/ionic/p-f8c5008f.entry.js +4 -0
  239. package/dist/types/components/backdrop/backdrop.d.ts +0 -3
  240. package/dist/types/components/datetime/datetime.d.ts +0 -1
  241. package/dist/types/components/datetime/utils/data.d.ts +11 -7
  242. package/dist/types/components/menu/menu.d.ts +1 -1
  243. package/dist/types/components/picker/picker-interfaces.d.ts +8 -0
  244. package/dist/types/components/picker/picker.d.ts +75 -129
  245. package/dist/types/components/picker-column/picker-column-interfaces.d.ts +4 -0
  246. package/dist/types/components/picker-column/picker-column.d.ts +99 -39
  247. package/dist/types/components/picker-column-option/picker-column-option.d.ts +66 -0
  248. package/dist/types/components/picker-legacy/picker.d.ts +158 -0
  249. package/dist/types/components/picker-legacy-column/picker-column.d.ts +46 -0
  250. package/dist/types/components.d.ts +154 -122
  251. package/dist/types/interface.d.ts +1 -1
  252. package/dist/types/utils/config.d.ts +2 -2
  253. package/dist/types/utils/gesture/gesture-controller.d.ts +1 -0
  254. package/dist/types/utils/overlays.d.ts +5 -2
  255. package/hydrate/index.js +1497 -1404
  256. package/package.json +1 -1
  257. package/components/ion-picker-column-internal.d.ts +0 -11
  258. package/components/ion-picker-column-internal.js +0 -9
  259. package/components/ion-picker-internal.js +0 -9
  260. package/components/picker-column-internal.js +0 -390
  261. package/dist/collection/components/picker-column-internal/picker-column-internal.js +0 -565
  262. package/dist/collection/components/picker-column-internal/test/disabled/picker-column-internal.e2e.js +0 -162
  263. package/dist/collection/components/picker-internal/picker-internal.js +0 -544
  264. package/dist/collection/components/picker-internal/test/basic/picker-internal.e2e.js +0 -118
  265. package/dist/esm-es5/ion-picker-column-internal.entry.js +0 -4
  266. package/dist/esm-es5/ion-picker-internal.entry.js +0 -4
  267. package/dist/esm-es5/overlays-b33f6bca.js +0 -4
  268. package/dist/esm-es5/swipe-back-a6f386fc.js +0 -4
  269. package/dist/ionic/p-12a62500.entry.js +0 -4
  270. package/dist/ionic/p-1c249831.entry.js +0 -4
  271. package/dist/ionic/p-35ce400e.system.js +0 -4
  272. package/dist/ionic/p-3671f1b9.system.js +0 -4
  273. package/dist/ionic/p-47bb15a1.entry.js +0 -4
  274. package/dist/ionic/p-4d145435.entry.js +0 -4
  275. package/dist/ionic/p-507ddbfe.system.entry.js +0 -4
  276. package/dist/ionic/p-6a6477b2.js +0 -4
  277. package/dist/ionic/p-6ab03751.js +0 -4
  278. package/dist/ionic/p-6c277fa2.system.entry.js +0 -4
  279. package/dist/ionic/p-6fba0ce1.system.entry.js +0 -4
  280. package/dist/ionic/p-7dc892f8.entry.js +0 -4
  281. package/dist/ionic/p-85f48531.entry.js +0 -4
  282. package/dist/ionic/p-8f301ac5.system.entry.js +0 -4
  283. package/dist/ionic/p-932f2259.system.entry.js +0 -4
  284. package/dist/ionic/p-b1f29949.system.entry.js +0 -4
  285. package/dist/ionic/p-b7a2ffc9.system.entry.js +0 -4
  286. package/dist/ionic/p-cd1b920b.entry.js +0 -4
  287. package/dist/ionic/p-da5e2652.entry.js +0 -4
  288. package/dist/ionic/p-ec652bc0.system.entry.js +0 -4
  289. package/dist/types/components/picker-column-internal/picker-column-internal-interfaces.d.ts +0 -5
  290. package/dist/types/components/picker-column-internal/picker-column-internal.d.ts +0 -102
  291. package/dist/types/components/picker-internal/picker-internal-interfaces.d.ts +0 -8
  292. package/dist/types/components/picker-internal/picker-internal.d.ts +0 -102
  293. /package/dist/collection/components/{picker-internal/picker-internal-interfaces.js → picker/picker-interfaces.js} +0 -0
  294. /package/dist/collection/components/{picker-column-internal/picker-column-internal-interfaces.js → picker-column/picker-column-interfaces.js} +0 -0
  295. /package/dist/collection/components/{picker → picker-legacy}/animations/ios.enter.js +0 -0
  296. /package/dist/collection/components/{picker → picker-legacy}/animations/ios.leave.js +0 -0
  297. /package/dist/collection/components/{picker → picker-legacy}/picker-interface.js +0 -0
  298. /package/dist/collection/components/{picker-column → picker-legacy-column}/picker-column.ios.css +0 -0
  299. /package/dist/collection/components/{picker-column → picker-legacy-column}/picker-column.md.css +0 -0
  300. /package/dist/collection/components/{picker-column → picker-legacy-column}/test/test.utils.js +0 -0
  301. /package/dist/esm-es5/{data-775093f5.js → data-6a31d701.js} +0 -0
  302. /package/dist/ionic/{p-87bb3735.system.js → p-7ff4359e.system.js} +0 -0
  303. /package/dist/ionic/{p-18cae04f.js → p-a64accf5.js} +0 -0
  304. /package/dist/types/components/{picker → picker-legacy}/animations/ios.enter.d.ts +0 -0
  305. /package/dist/types/components/{picker → picker-legacy}/animations/ios.leave.d.ts +0 -0
  306. /package/dist/types/components/{picker → picker-legacy}/picker-interface.d.ts +0 -0
  307. /package/dist/types/components/{picker-column → picker-legacy-column}/test/test.utils.d.ts +0 -0
@@ -143,7 +143,7 @@ const ItemSliding = class {
143
143
  await this.updateOptions();
144
144
  });
145
145
  await this.updateOptions();
146
- this.gesture = (await Promise.resolve().then(function () { return require('./index-d1b59ffa.js'); })).createGesture({
146
+ this.gesture = (await Promise.resolve().then(function () { return require('./index-ee07ed59.js'); })).createGesture({
147
147
  el,
148
148
  gestureName: 'item-swipe',
149
149
  gesturePriority: 100,
@@ -9,12 +9,13 @@ const index = require('./index-50dcfe2f.js');
9
9
  const config = require('./config-4f60b98a.js');
10
10
  const helpers = require('./helpers-76bb7efb.js');
11
11
  const lockController = require('./lock-controller-6585a42a.js');
12
- const overlays = require('./overlays-e77cc023.js');
12
+ const overlays = require('./overlays-7773cbe1.js');
13
13
  const theme = require('./theme-d1c573d2.js');
14
14
  const ionicGlobal = require('./ionic-global-a4edbf03.js');
15
15
  const animation = require('./animation-9b401d39.js');
16
16
  require('./index-c8d52405.js');
17
17
  require('./framework-delegate-1c29b14a.js');
18
+ require('./gesture-controller-9436f482.js');
18
19
  require('./hardware-back-button-76833cac.js');
19
20
  require('./index-5915f9b3.js');
20
21
 
@@ -7,10 +7,10 @@ Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
8
  const index = require('./index-50dcfe2f.js');
9
9
  const cubicBezier = require('./cubic-bezier-f2dccc53.js');
10
- const gestureController = require('./gesture-controller-c40c045a.js');
10
+ const gestureController = require('./gesture-controller-9436f482.js');
11
11
  const helpers = require('./helpers-76bb7efb.js');
12
12
  const index$1 = require('./index-3b012034.js');
13
- const overlays = require('./overlays-e77cc023.js');
13
+ const overlays = require('./overlays-7773cbe1.js');
14
14
  const ionicGlobal = require('./ionic-global-a4edbf03.js');
15
15
  const theme = require('./theme-d1c573d2.js');
16
16
  const index$2 = require('./index-09471526.js');
@@ -133,7 +133,7 @@ const Menu = class {
133
133
  // register this menu with the app's menu controller
134
134
  index$1.menuController._register(this);
135
135
  this.menuChanged();
136
- this.gesture = (await Promise.resolve().then(function () { return require('./index-d1b59ffa.js'); })).createGesture({
136
+ this.gesture = (await Promise.resolve().then(function () { return require('./index-ee07ed59.js'); })).createGesture({
137
137
  el: document,
138
138
  gestureName: 'menu-swipe',
139
139
  gesturePriority: 30,
@@ -12,18 +12,18 @@ const helpers = require('./helpers-76bb7efb.js');
12
12
  const lockController = require('./lock-controller-6585a42a.js');
13
13
  const index$4 = require('./index-5915f9b3.js');
14
14
  const capacitor = require('./capacitor-c04564bf.js');
15
- const overlays = require('./overlays-e77cc023.js');
15
+ const overlays = require('./overlays-7773cbe1.js');
16
16
  const theme = require('./theme-d1c573d2.js');
17
17
  const index$5 = require('./index-17ab7794.js');
18
18
  const ionicGlobal = require('./ionic-global-a4edbf03.js');
19
19
  const keyboard = require('./keyboard-af1bb365.js');
20
20
  const animation = require('./animation-9b401d39.js');
21
21
  const cubicBezier = require('./cubic-bezier-f2dccc53.js');
22
- const index$1 = require('./index-d1b59ffa.js');
22
+ const index$1 = require('./index-ee07ed59.js');
23
23
  const index = require('./index-c8d52405.js');
24
+ require('./gesture-controller-9436f482.js');
24
25
  require('./hardware-back-button-76833cac.js');
25
26
  require('./keyboard-0272231f.js');
26
- require('./gesture-controller-c40c045a.js');
27
27
 
28
28
  var Style;
29
29
  (function (Style) {
@@ -135,7 +135,7 @@ const Nav = class {
135
135
  // We want to set this flag before any watch callbacks are manually called
136
136
  this.didLoad = true;
137
137
  this.rootChanged();
138
- this.gesture = (await Promise.resolve().then(function () { return require('./swipe-back-2a858bbd.js'); })).createSwipeBackGesture(this.el, this.canStart.bind(this), this.onStart.bind(this), this.onMove.bind(this), this.onEnd.bind(this));
138
+ this.gesture = (await Promise.resolve().then(function () { return require('./swipe-back-b8f2330b.js'); })).createSwipeBackGesture(this.el, this.canStart.bind(this), this.onStart.bind(this), this.onMove.bind(this), this.onEnd.bind(this));
139
139
  this.swipeGestureChanged();
140
140
  }
141
141
  connectedCallback() {
@@ -0,0 +1,104 @@
1
+ /*!
2
+ * (C) Ionic http://ionicframework.com - MIT License
3
+ */
4
+ 'use strict';
5
+
6
+ Object.defineProperty(exports, '__esModule', { value: true });
7
+
8
+ const index = require('./index-50dcfe2f.js');
9
+ const helpers = require('./helpers-76bb7efb.js');
10
+ const theme = require('./theme-d1c573d2.js');
11
+ const ionicGlobal = require('./ionic-global-a4edbf03.js');
12
+
13
+ const pickerColumnOptionIosCss = "button{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;width:100%;height:34px;border:0px;outline:none;background:transparent;color:inherit;font-family:var(--ion-font-family, inherit);font-size:inherit;line-height:34px;text-align:inherit;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;overflow:hidden}:host(.option-disabled){opacity:0.4}:host(.option-disabled) button{cursor:default}";
14
+
15
+ const pickerColumnOptionMdCss = "button{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;width:100%;height:34px;border:0px;outline:none;background:transparent;color:inherit;font-family:var(--ion-font-family, inherit);font-size:inherit;line-height:34px;text-align:inherit;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;overflow:hidden}:host(.option-disabled){opacity:0.4}:host(.option-disabled) button{cursor:default}:host(.option-active){color:var(--ion-color-base)}";
16
+
17
+ const PickerColumnOption = class {
18
+ constructor(hostRef) {
19
+ index.registerInstance(this, hostRef);
20
+ /**
21
+ * We keep track of the parent picker column
22
+ * so we can update the value of it when
23
+ * clicking an enable option.
24
+ */
25
+ this.pickerColumn = null;
26
+ this.ariaLabel = null;
27
+ this.disabled = false;
28
+ this.value = undefined;
29
+ this.color = 'primary';
30
+ }
31
+ /**
32
+ * The aria-label of the option has changed after the
33
+ * first render and needs to be updated within the component.
34
+ *
35
+ * @param ariaLbl The new aria-label value.
36
+ */
37
+ onAriaLabelChange(ariaLbl) {
38
+ this.ariaLabel = ariaLbl;
39
+ }
40
+ componentWillLoad() {
41
+ const inheritedAttributes = helpers.inheritAttributes(this.el, ['aria-label']);
42
+ /**
43
+ * The initial value of `aria-label` needs to be set for
44
+ * the first render.
45
+
46
+ */
47
+ this.ariaLabel = inheritedAttributes['aria-label'] || null;
48
+ }
49
+ connectedCallback() {
50
+ this.pickerColumn = this.el.closest('ion-picker-column');
51
+ }
52
+ disconnectedCallback() {
53
+ this.pickerColumn = null;
54
+ }
55
+ /**
56
+ * The column options can load at any time
57
+ * so the options needs to tell the
58
+ * parent picker column when it is loaded
59
+ * so the picker column can ensure it is
60
+ * centered in the view.
61
+ *
62
+ * We intentionally run this for every
63
+ * option. If we only ran this from
64
+ * the selected option then if the newly
65
+ * loaded options were not selected then
66
+ * scrollActiveItemIntoView would not be called.
67
+ */
68
+ componentDidLoad() {
69
+ const { pickerColumn } = this;
70
+ if (pickerColumn !== null) {
71
+ pickerColumn.scrollActiveItemIntoView();
72
+ }
73
+ }
74
+ /**
75
+ * When an option is clicked, update the
76
+ * parent picker column value. This
77
+ * component will handle centering the option
78
+ * in the column view.
79
+ */
80
+ onClick() {
81
+ const { pickerColumn } = this;
82
+ if (pickerColumn !== null) {
83
+ pickerColumn.setValue(this.value);
84
+ }
85
+ }
86
+ render() {
87
+ const { color, disabled, ariaLabel } = this;
88
+ const mode = ionicGlobal.getIonMode(this);
89
+ return (index.h(index.Host, { class: theme.createColorClasses(color, {
90
+ [mode]: true,
91
+ ['option-disabled']: disabled,
92
+ }) }, index.h("button", { tabindex: "-1", "aria-label": ariaLabel, disabled: disabled, onClick: () => this.onClick() }, index.h("slot", null))));
93
+ }
94
+ get el() { return index.getElement(this); }
95
+ static get watchers() { return {
96
+ "aria-label": ["onAriaLabelChange"]
97
+ }; }
98
+ };
99
+ PickerColumnOption.style = {
100
+ ios: pickerColumnOptionIosCss,
101
+ md: pickerColumnOptionMdCss
102
+ };
103
+
104
+ exports.ion_picker_column_option = PickerColumnOption;
@@ -6,18 +6,16 @@
6
6
  Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
8
  const index = require('./index-50dcfe2f.js');
9
+ const index$1 = require('./index-c8d52405.js');
9
10
  const helpers = require('./helpers-76bb7efb.js');
10
11
  const haptic = require('./haptic-b882e0bb.js');
11
12
  const ionicGlobal = require('./ionic-global-a4edbf03.js');
12
13
  const theme = require('./theme-d1c573d2.js');
13
14
  require('./capacitor-c04564bf.js');
14
- require('./index-c8d52405.js');
15
15
 
16
- const pickerColumnInternalIosCss = ":host{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0px;padding-bottom:0px;height:200px;outline:none;font-size:22px;-webkit-scroll-snap-type:y mandatory;-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory;overflow-x:hidden;overflow-y:scroll;scrollbar-width:none;text-align:center}:host::-webkit-scrollbar{display:none}:host .picker-item{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;display:block;width:100%;height:34px;border:0px;outline:none;background:transparent;color:inherit;font-family:var(--ion-font-family, inherit);font-size:inherit;line-height:34px;text-align:inherit;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;overflow:hidden;scroll-snap-align:center}:host .picker-item-empty,:host .picker-item[disabled]{cursor:default}:host .picker-item-empty,:host(:not([disabled])) .picker-item[disabled]{scroll-snap-align:none}:host([disabled]){overflow-y:hidden}:host .picker-item[disabled]{opacity:0.4}:host(.picker-column-active) .picker-item.picker-item-active{color:var(--ion-color-base)}@media (any-hover: hover){:host(:focus){outline:none;background:rgba(var(--ion-color-base-rgb), 0.2)}}";
16
+ const pickerColumnCss = ":host{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;max-width:100%;height:200px;font-size:22px;text-align:center}.picker-opts{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0px;padding-bottom:0px;min-width:26px;max-height:200px;outline:none;text-align:inherit;-webkit-scroll-snap-type:y mandatory;-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory;overflow-x:hidden;overflow-y:scroll;scrollbar-width:none}.picker-item-empty{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;display:block;width:100%;height:34px;border:0px;outline:none;background:transparent;color:inherit;font-family:var(--ion-font-family, inherit);font-size:inherit;line-height:34px;text-align:inherit;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.picker-opts::-webkit-scrollbar{display:none}::slotted(ion-picker-column-option){display:block;scroll-snap-align:center}.picker-item-empty,:host(:not([disabled])) ::slotted(ion-picker-column-option.option-disabled){scroll-snap-align:none}::slotted([slot=prefix]),::slotted([slot=suffix]){max-width:200px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::slotted([slot=prefix]){-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0;padding-bottom:0;-ms-flex-pack:end;justify-content:end}::slotted([slot=suffix]){-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0;padding-bottom:0;-ms-flex-pack:start;justify-content:start}:host(.picker-column-disabled) .picker-opts{overflow-y:hidden}:host(.picker-column-disabled) ::slotted(ion-picker-column-option){cursor:default;opacity:0.4;pointer-events:none}@media (any-hover: hover){:host(:focus) .picker-opts{outline:none;background:rgba(var(--ion-color-base-rgb), 0.2)}}";
17
17
 
18
- const pickerColumnInternalMdCss = ":host{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0px;padding-bottom:0px;height:200px;outline:none;font-size:22px;-webkit-scroll-snap-type:y mandatory;-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory;overflow-x:hidden;overflow-y:scroll;scrollbar-width:none;text-align:center}:host::-webkit-scrollbar{display:none}:host .picker-item{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;display:block;width:100%;height:34px;border:0px;outline:none;background:transparent;color:inherit;font-family:var(--ion-font-family, inherit);font-size:inherit;line-height:34px;text-align:inherit;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;overflow:hidden;scroll-snap-align:center}:host .picker-item-empty,:host .picker-item[disabled]{cursor:default}:host .picker-item-empty,:host(:not([disabled])) .picker-item[disabled]{scroll-snap-align:none}:host([disabled]){overflow-y:hidden}:host .picker-item[disabled]{opacity:0.4}:host(.picker-column-active) .picker-item.picker-item-active{color:var(--ion-color-base)}@media (any-hover: hover){:host(:focus){outline:none;background:rgba(var(--ion-color-base-rgb), 0.2)}}:host .picker-item-active{color:var(--ion-color-base)}";
19
-
20
- const PickerColumnInternal = class {
18
+ const PickerColumn = class {
21
19
  constructor(hostRef) {
22
20
  index.registerInstance(this, hostRef);
23
21
  this.ionChange = index.createEvent(this, "ionChange", 7);
@@ -25,11 +23,11 @@ const PickerColumnInternal = class {
25
23
  this.isColumnVisible = false;
26
24
  this.canExitInputMode = true;
27
25
  this.centerPickerItemInView = (target, smooth = true, canExitInputMode = true) => {
28
- const { el, isColumnVisible } = this;
29
- if (isColumnVisible) {
26
+ const { isColumnVisible, scrollEl } = this;
27
+ if (isColumnVisible && scrollEl) {
30
28
  // (Vertical offset from parent) - (three empty picker rows) + (half the height of the target to ensure the scroll triggers)
31
29
  const top = target.offsetTop - 3 * target.clientHeight + target.clientHeight / 2;
32
- if (el.scrollTop !== top) {
30
+ if (scrollEl.scrollTop !== top) {
33
31
  /**
34
32
  * Setting this flag prevents input
35
33
  * mode from exiting in the picker column's
@@ -38,7 +36,7 @@ const PickerColumnInternal = class {
38
36
  * of these can cause a scroll to occur.
39
37
  */
40
38
  this.canExitInputMode = canExitInputMode;
41
- el.scroll({
39
+ scrollEl.scroll({
42
40
  top,
43
41
  left: 0,
44
42
  behavior: smooth ? 'smooth' : undefined,
@@ -49,11 +47,9 @@ const PickerColumnInternal = class {
49
47
  this.setPickerItemActiveState = (item, isActive) => {
50
48
  if (isActive) {
51
49
  item.classList.add(PICKER_ITEM_ACTIVE_CLASS);
52
- item.part.add(PICKER_ITEM_ACTIVE_PART);
53
50
  }
54
51
  else {
55
52
  item.classList.remove(PICKER_ITEM_ACTIVE_CLASS);
56
- item.part.remove(PICKER_ITEM_ACTIVE_PART);
57
53
  }
58
54
  };
59
55
  /**
@@ -107,11 +103,13 @@ const PickerColumnInternal = class {
107
103
  * be disabled on Android.
108
104
  */
109
105
  const enableHaptics = ionicGlobal.isPlatform('ios');
110
- const { el } = this;
106
+ const { el, scrollEl } = this;
111
107
  let timeout;
112
108
  let activeEl = this.activeItem;
113
109
  const scrollCallback = () => {
114
110
  helpers.raf(() => {
111
+ if (!scrollEl)
112
+ return;
115
113
  if (timeout) {
116
114
  clearTimeout(timeout);
117
115
  timeout = undefined;
@@ -124,21 +122,54 @@ const PickerColumnInternal = class {
124
122
  * Select item in the center of the column
125
123
  * which is the month/year that we want to select
126
124
  */
127
- const bbox = el.getBoundingClientRect();
125
+ const bbox = scrollEl.getBoundingClientRect();
128
126
  const centerX = bbox.x + bbox.width / 2;
129
127
  const centerY = bbox.y + bbox.height / 2;
130
- const activeElement = el.shadowRoot.elementFromPoint(centerX, centerY);
131
- if (activeEl !== null) {
128
+ /**
129
+ * elementFromPoint returns the top-most element.
130
+ * This means that if an ion-backdrop is overlaying the
131
+ * picker then the appropriate picker column option will
132
+ * not be selected. To account for this, we use elementsFromPoint
133
+ * and use an Array.find to find the appropriate column option
134
+ * at that point.
135
+ *
136
+ * Additionally, the picker column could be used in the
137
+ * Shadow DOM (i.e. in ion-datetime) so we need to make
138
+ * sure we are choosing the correct host otherwise
139
+ * the elements returns by elementsFromPoint will be
140
+ * retargeted. To account for this, we check to see
141
+ * if the picker column has a parent shadow root. If
142
+ * so, we use that shadow root when doing elementsFromPoint.
143
+ * Otherwise, we just use the document.
144
+ */
145
+ const rootNode = el.getRootNode();
146
+ const hasParentShadow = rootNode instanceof ShadowRoot;
147
+ const referenceNode = hasParentShadow ? rootNode : index$1.doc;
148
+ /**
149
+ * If the reference node is undefined
150
+ * then it's likely that doc is undefined
151
+ * due to being in an SSR environment.
152
+ */
153
+ if (referenceNode === undefined) {
154
+ return;
155
+ }
156
+ const elementsAtPoint = referenceNode.elementsFromPoint(centerX, centerY);
157
+ /**
158
+ * elementsFromPoint can returns multiple elements
159
+ * so find the relevant picker column option if one exists.
160
+ */
161
+ const newActiveElement = elementsAtPoint.find((el) => el.tagName === 'ION-PICKER-COLUMN-OPTION');
162
+ if (activeEl !== undefined) {
132
163
  this.setPickerItemActiveState(activeEl, false);
133
164
  }
134
- if (activeElement === null || activeElement.disabled) {
165
+ if (newActiveElement === undefined || newActiveElement.disabled) {
135
166
  return;
136
167
  }
137
168
  /**
138
169
  * If we are selecting a new value,
139
170
  * we need to run haptics again.
140
171
  */
141
- if (activeElement !== activeEl) {
172
+ if (newActiveElement !== activeEl) {
142
173
  enableHaptics && haptic.hapticSelectionChanged();
143
174
  if (this.canExitInputMode) {
144
175
  /**
@@ -155,8 +186,8 @@ const PickerColumnInternal = class {
155
186
  this.exitInputMode();
156
187
  }
157
188
  }
158
- activeEl = activeElement;
159
- this.setPickerItemActiveState(activeElement, true);
189
+ activeEl = newActiveElement;
190
+ this.setPickerItemActiveState(newActiveElement, true);
160
191
  timeout = setTimeout(() => {
161
192
  this.isScrolling = false;
162
193
  enableHaptics && haptic.hapticSelectionEnd();
@@ -178,20 +209,7 @@ const PickerColumnInternal = class {
178
209
  * case, we should exit input mode.
179
210
  */
180
211
  this.canExitInputMode = true;
181
- const dataIndex = activeElement.getAttribute('data-index');
182
- /**
183
- * If no value it is
184
- * possible we hit one of the
185
- * empty padding columns.
186
- */
187
- if (dataIndex === null) {
188
- return;
189
- }
190
- const index = parseInt(dataIndex, 10);
191
- const selectedItem = this.items[index];
192
- if (selectedItem.value !== this.value) {
193
- this.setValue(selectedItem.value);
194
- }
212
+ this.setValue(newActiveElement.value);
195
213
  }, 250);
196
214
  });
197
215
  };
@@ -200,9 +218,11 @@ const PickerColumnInternal = class {
200
218
  * does not fire when component is initially shown.
201
219
  */
202
220
  helpers.raf(() => {
203
- el.addEventListener('scroll', scrollCallback);
221
+ if (!scrollEl)
222
+ return;
223
+ scrollEl.addEventListener('scroll', scrollCallback);
204
224
  this.destroyScrollListener = () => {
205
- el.removeEventListener('scroll', scrollCallback);
225
+ scrollEl.removeEventListener('scroll', scrollCallback);
206
226
  };
207
227
  });
208
228
  };
@@ -230,7 +250,6 @@ const PickerColumnInternal = class {
230
250
  };
231
251
  this.isActive = false;
232
252
  this.disabled = false;
233
- this.items = [];
234
253
  this.value = undefined;
235
254
  this.color = 'primary';
236
255
  this.numericInput = false;
@@ -241,7 +260,7 @@ const PickerColumnInternal = class {
241
260
  * Only scroll the active item into view when the picker column
242
261
  * is actively visible to the user.
243
262
  */
244
- this.scrollActiveItemIntoView();
263
+ this.scrollActiveItemIntoView(true);
245
264
  }
246
265
  }
247
266
  /**
@@ -279,36 +298,33 @@ const PickerColumnInternal = class {
279
298
  }
280
299
  };
281
300
  new IntersectionObserver(visibleCallback, { threshold: 0.001 }).observe(this.el);
282
- const parentEl = (this.parentEl = this.el.closest('ion-picker-internal'));
301
+ const parentEl = (this.parentEl = this.el.closest('ion-picker'));
283
302
  if (parentEl !== null) {
284
303
  // TODO(FW-2832): type
285
304
  parentEl.addEventListener('ionInputModeChange', (ev) => this.inputModeChange(ev));
286
305
  }
287
306
  }
288
307
  componentDidRender() {
289
- var _a;
290
- const { activeItem, items, isColumnVisible, value } = this;
291
- if (isColumnVisible) {
292
- if (activeItem) {
293
- this.scrollActiveItemIntoView();
294
- }
295
- else if (((_a = items[0]) === null || _a === void 0 ? void 0 : _a.value) !== value) {
296
- /**
297
- * If the picker column does not have an active item and the current value
298
- * does not match the first item in the picker column, that means
299
- * the value is out of bounds. In this case, we assign the value to the
300
- * first item to match the scroll position of the column.
301
- *
302
- */
303
- this.setValue(items[0].value);
308
+ const { el, activeItem, isColumnVisible, value } = this;
309
+ if (isColumnVisible && !activeItem) {
310
+ const firstOption = el.querySelector('ion-picker-column-option');
311
+ /**
312
+ * If the picker column does not have an active item and the current value
313
+ * does not match the first item in the picker column, that means
314
+ * the value is out of bounds. In this case, we assign the value to the
315
+ * first item to match the scroll position of the column.
316
+ *
317
+ */
318
+ if (firstOption !== null && firstOption.value !== value) {
319
+ this.setValue(firstOption.value);
304
320
  }
305
321
  }
306
322
  }
307
323
  /** @internal */
308
- async scrollActiveItemIntoView() {
324
+ async scrollActiveItemIntoView(smooth = false) {
309
325
  const activeEl = this.activeItem;
310
326
  if (activeEl) {
311
- this.centerPickerItemInView(activeEl, false, false);
327
+ this.centerPickerItemInView(activeEl, smooth, false);
312
328
  }
313
329
  }
314
330
  /**
@@ -319,52 +335,53 @@ const PickerColumnInternal = class {
319
335
  * @internal
320
336
  */
321
337
  async setValue(value) {
322
- const { items } = this;
338
+ if (this.disabled === true || this.value === value) {
339
+ return;
340
+ }
323
341
  this.value = value;
324
- const findItem = items.find((item) => item.value === value && item.disabled !== true);
325
- if (findItem) {
326
- this.ionChange.emit(findItem);
342
+ this.ionChange.emit({ value });
343
+ }
344
+ /**
345
+ * Sets focus on the scrollable container within the picker column.
346
+ * Use this method instead of the global `pickerColumn.focus()`.
347
+ */
348
+ async setFocus() {
349
+ if (this.scrollEl) {
350
+ this.scrollEl.focus();
327
351
  }
328
352
  }
329
353
  get activeItem() {
330
- // If the whole picker column is disabled, the current value should appear active
331
- // If the current value item is specifically disabled, it should not appear active
332
- const selector = `.picker-item[data-value="${this.value}"]${this.disabled ? '' : ':not([disabled])'}`;
333
- return helpers.getElementRoot(this.el).querySelector(selector);
354
+ const { value } = this;
355
+ const options = Array.from(this.el.querySelectorAll('ion-picker-column-option'));
356
+ return options.find((option) => {
357
+ /**
358
+ * If the whole picker column is disabled, the current value should appear active
359
+ * If the current value item is specifically disabled, it should not appear active
360
+ */
361
+ if (!this.disabled && option.disabled) {
362
+ return false;
363
+ }
364
+ return option.value === value;
365
+ });
334
366
  }
335
367
  render() {
336
- const { items, color, disabled: pickerDisabled, isActive, numericInput } = this;
368
+ const { color, disabled, isActive, numericInput } = this;
337
369
  const mode = ionicGlobal.getIonMode(this);
338
- /**
339
- * exportparts is needed so ion-datetime can expose the parts
340
- * from two layers of shadow nesting. If this causes problems,
341
- * the attribute can be moved to datetime.tsx and set on every
342
- * instance of ion-picker-column-internal there instead.
343
- */
344
- return (index.h(index.Host, { exportparts: `${PICKER_ITEM_PART}, ${PICKER_ITEM_ACTIVE_PART}`, disabled: pickerDisabled, tabindex: pickerDisabled ? null : 0, class: theme.createColorClasses(color, {
370
+ return (index.h(index.Host, { class: theme.createColorClasses(color, {
345
371
  [mode]: true,
346
372
  ['picker-column-active']: isActive,
347
373
  ['picker-column-numeric-input']: numericInput,
348
- }) }, index.h("div", { class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0"), index.h("div", { class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0"), index.h("div", { class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0"), items.map((item, index$1) => {
349
- const isItemDisabled = pickerDisabled || item.disabled || false;
350
- return (index.h("button", { tabindex: "-1", class: {
351
- 'picker-item': true,
352
- }, "data-value": item.value, "data-index": index$1, onClick: (ev) => {
353
- this.centerPickerItemInView(ev.target, true);
354
- }, disabled: isItemDisabled, part: PICKER_ITEM_PART }, item.text));
355
- }), index.h("div", { class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0"), index.h("div", { class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0"), index.h("div", { class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0")));
374
+ ['picker-column-disabled']: disabled,
375
+ }) }, index.h("slot", { name: "prefix" }), index.h("div", { class: "picker-opts", tabindex: disabled ? undefined : 0, ref: (el) => {
376
+ this.scrollEl = el;
377
+ } }, index.h("div", { class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), index.h("div", { class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), index.h("div", { class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), index.h("slot", null), index.h("div", { class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), index.h("div", { class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), index.h("div", { class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0")), index.h("slot", { name: "suffix" })));
356
378
  }
357
379
  get el() { return index.getElement(this); }
358
380
  static get watchers() { return {
359
381
  "value": ["valueChange"]
360
382
  }; }
361
383
  };
362
- const PICKER_ITEM_ACTIVE_CLASS = 'picker-item-active';
363
- const PICKER_ITEM_PART = 'wheel-item';
364
- const PICKER_ITEM_ACTIVE_PART = 'active';
365
- PickerColumnInternal.style = {
366
- ios: pickerColumnInternalIosCss,
367
- md: pickerColumnInternalMdCss
368
- };
384
+ const PICKER_ITEM_ACTIVE_CLASS = 'option-active';
385
+ PickerColumn.style = pickerColumnCss;
369
386
 
370
- exports.ion_picker_column_internal = PickerColumnInternal;
387
+ exports.ion_picker_column = PickerColumn;