@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
@@ -53,134 +53,6 @@
53
53
  * }
54
54
  * }
55
55
  */
56
- :host {
57
- /**
58
- * @prop --background: Background of the picker
59
- * @prop --background-rgb: Background of the picker in rgb format
60
- *
61
- * @prop --border-radius: Border radius of the picker
62
- * @prop --border-color: Border color of the picker
63
- * @prop --border-width: Border width of the picker
64
- * @prop --border-style: Border style of the picker
65
- *
66
- * @prop --min-width: Minimum width of the picker
67
- * @prop --width: Width of the picker
68
- * @prop --max-width: Maximum width of the picker
69
- *
70
- * @prop --min-height: Minimum height of the picker
71
- * @prop --height: Height of the picker
72
- * @prop --max-height: Maximum height of the picker
73
- *
74
- * @prop --backdrop-opacity: Opacity of the backdrop
75
- */
76
- --border-radius: 0;
77
- --border-style: solid;
78
- --min-width: auto;
79
- --width: 100%;
80
- --max-width: 500px;
81
- --min-height: auto;
82
- --max-height: auto;
83
- -moz-osx-font-smoothing: grayscale;
84
- -webkit-font-smoothing: antialiased;
85
- top: 0;
86
- display: block;
87
- position: absolute;
88
- width: 100%;
89
- height: 100%;
90
- outline: none;
91
- font-family: var(--ion-font-family, inherit);
92
- contain: strict;
93
- user-select: none;
94
- z-index: 1001;
95
- }
96
- @supports (inset-inline-start: 0) {
97
- :host {
98
- inset-inline-start: 0;
99
- }
100
- }
101
- @supports not (inset-inline-start: 0) {
102
- :host {
103
- left: 0;
104
- }
105
- :host-context([dir=rtl]) {
106
- left: unset;
107
- right: unset;
108
- right: 0;
109
- }
110
- @supports selector(:dir(rtl)) {
111
- :host(:dir(rtl)) {
112
- left: unset;
113
- right: unset;
114
- right: 0;
115
- }
116
- }
117
- }
118
-
119
- :host(.overlay-hidden) {
120
- display: none;
121
- }
122
-
123
- .picker-wrapper {
124
- border-radius: var(--border-radius);
125
- left: 0;
126
- right: 0;
127
- bottom: 0;
128
- -webkit-margin-start: auto;
129
- margin-inline-start: auto;
130
- -webkit-margin-end: auto;
131
- margin-inline-end: auto;
132
- margin-top: auto;
133
- margin-bottom: auto;
134
- transform: translate3d(0, 100%, 0);
135
- display: flex;
136
- position: absolute;
137
- flex-direction: column;
138
- width: var(--width);
139
- min-width: var(--min-width);
140
- max-width: var(--max-width);
141
- height: var(--height);
142
- min-height: var(--min-height);
143
- max-height: var(--max-height);
144
- border-width: var(--border-width);
145
- border-style: var(--border-style);
146
- border-color: var(--border-color);
147
- background: var(--background);
148
- contain: strict;
149
- overflow: hidden;
150
- z-index: 10;
151
- }
152
-
153
- .picker-toolbar {
154
- width: 100%;
155
- background: transparent;
156
- contain: strict;
157
- z-index: 1;
158
- }
159
-
160
- .picker-button {
161
- border: 0;
162
- font-family: inherit;
163
- }
164
-
165
- .picker-button:active, .picker-button:focus {
166
- outline: none;
167
- }
168
-
169
- .picker-columns {
170
- display: flex;
171
- position: relative;
172
- justify-content: center;
173
- margin-bottom: var(--ion-safe-area-bottom, 0);
174
- contain: strict;
175
- overflow: hidden;
176
- }
177
-
178
- .picker-above-highlight,
179
- .picker-below-highlight {
180
- display: none;
181
- pointer-events: none;
182
- }
183
-
184
56
  /**
185
57
  * Convert a font size to a dynamic font size.
186
58
  * Fonts that participate in Dynamic Type should use
@@ -237,77 +109,67 @@
237
109
  * }
238
110
  */
239
111
  :host {
240
- --background: var(--ion-background-color, #fff);
241
- --border-width: 0.55px 0 0;
242
- --border-color: var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-150, rgba(0, 0, 0, 0.13))));
243
- --height: 260px;
244
- --backdrop-opacity: var(--ion-backdrop-opacity, 0.26);
245
- color: var(--ion-item-color, var(--ion-text-color, #000));
246
- }
247
-
248
- .picker-toolbar {
112
+ /**
113
+ * @prop --highlight-background: Background of the picker highlight for the selected item
114
+ * @prop --highlight-border-radius: Border radius of the picker highlight for the selected item
115
+ *
116
+ * @prop --fade-background-rgb: Background of the gradient covering non-selected items in rgb format
117
+ */
249
118
  display: flex;
250
- justify-content: flex-end;
251
- height: 44px;
252
- }
253
-
254
- .picker-button,
255
- .picker-button.ion-activated {
256
- margin-left: 0;
257
- margin-right: 0;
258
- margin-top: 0;
259
- margin-bottom: 0;
260
- -webkit-padding-start: 1.1em;
261
- padding-inline-start: 1.1em;
262
- -webkit-padding-end: 1.1em;
263
- padding-inline-end: 1.1em;
264
- padding-top: 0;
265
- padding-bottom: 0;
266
- height: 44px;
267
- background: transparent;
268
- color: var(--ion-color-primary, #3880ff);
269
- font-size: 14px;
270
- font-weight: 500;
271
- text-transform: uppercase;
272
- box-shadow: none;
119
+ position: relative;
120
+ align-items: center;
121
+ justify-content: center;
122
+ width: 100%;
123
+ height: 200px;
124
+ /**
125
+ * Picker columns should display
126
+ * in the order in which developers
127
+ * added them and should ignore
128
+ * LTR vs RTL directions.
129
+ */
130
+ direction: ltr;
131
+ /**
132
+ * This is required otherwise the
133
+ * highlight will appear behind
134
+ * the picker when used inline.
135
+ */
136
+ z-index: 0;
273
137
  }
274
138
 
275
- .picker-columns {
276
- height: 216px;
277
- perspective: 1800px;
139
+ :host .picker-before,
140
+ :host .picker-after {
141
+ position: absolute;
142
+ width: 100%;
143
+ /**
144
+ * The transform and z-index
145
+ * are needed for WebKit otherwise
146
+ * the fade will appear underneath the picker.
147
+ */
148
+ transform: translateZ(0);
149
+ z-index: 1;
150
+ pointer-events: none;
278
151
  }
279
152
 
280
- .picker-above-highlight {
153
+ :host .picker-before {
281
154
  top: 0;
282
- transform: translate3d(0, 0, 90px);
283
- position: absolute;
284
- width: 100%;
285
- height: 81px;
286
- border-bottom: 1px solid var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-150, rgba(0, 0, 0, 0.13))));
287
- background: linear-gradient(to bottom, var(--ion-background-color, #fff) 20%, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8) 100%);
288
- z-index: 10;
155
+ height: 83px;
289
156
  }
290
157
  @supports (inset-inline-start: 0) {
291
- .picker-above-highlight {
158
+ :host .picker-before {
292
159
  inset-inline-start: 0;
293
160
  }
294
161
  }
295
162
  @supports not (inset-inline-start: 0) {
296
- .picker-above-highlight {
163
+ :host .picker-before {
297
164
  left: 0;
298
165
  }
299
- :host-context([dir=rtl]) .picker-above-highlight {
300
- left: unset;
301
- right: unset;
302
- right: 0;
303
- }
304
- [dir=rtl] .picker-above-highlight {
166
+ :host-context([dir=rtl]) .picker-before {
305
167
  left: unset;
306
168
  right: unset;
307
169
  right: 0;
308
170
  }
309
171
  @supports selector(:dir(rtl)) {
310
- .picker-above-highlight:dir(rtl) {
172
+ :host(:dir(rtl)) .picker-before {
311
173
  left: unset;
312
174
  right: unset;
313
175
  right: 0;
@@ -315,40 +177,88 @@
315
177
  }
316
178
  }
317
179
 
318
- .picker-below-highlight {
319
- top: 115px;
320
- transform: translate3d(0, 0, 90px);
321
- position: absolute;
322
- width: 100%;
323
- height: 119px;
324
- border-top: 1px solid var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-150, rgba(0, 0, 0, 0.13))));
325
- background: linear-gradient(to top, var(--ion-background-color, #fff) 30%, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8) 100%);
326
- z-index: 11;
180
+ :host .picker-after {
181
+ top: 116px;
182
+ height: 84px;
327
183
  }
328
184
  @supports (inset-inline-start: 0) {
329
- .picker-below-highlight {
185
+ :host .picker-after {
330
186
  inset-inline-start: 0;
331
187
  }
332
188
  }
333
189
  @supports not (inset-inline-start: 0) {
334
- .picker-below-highlight {
190
+ :host .picker-after {
335
191
  left: 0;
336
192
  }
337
- :host-context([dir=rtl]) .picker-below-highlight {
338
- left: unset;
339
- right: unset;
340
- right: 0;
341
- }
342
- [dir=rtl] .picker-below-highlight {
193
+ :host-context([dir=rtl]) .picker-after {
343
194
  left: unset;
344
195
  right: unset;
345
196
  right: 0;
346
197
  }
347
198
  @supports selector(:dir(rtl)) {
348
- .picker-below-highlight:dir(rtl) {
199
+ :host(:dir(rtl)) .picker-after {
349
200
  left: unset;
350
201
  right: unset;
351
202
  right: 0;
352
203
  }
353
204
  }
205
+ }
206
+
207
+ :host .picker-highlight {
208
+ border-radius: var(--highlight-border-radius, 8px);
209
+ left: 0;
210
+ right: 0;
211
+ top: 50%;
212
+ bottom: 0;
213
+ -webkit-margin-start: auto;
214
+ margin-inline-start: auto;
215
+ -webkit-margin-end: auto;
216
+ margin-inline-end: auto;
217
+ margin-top: 0;
218
+ margin-bottom: 0;
219
+ position: absolute;
220
+ width: calc(100% - 16px);
221
+ height: 34px;
222
+ transform: translateY(-50%);
223
+ background: var(--highlight-background);
224
+ z-index: -1;
225
+ }
226
+
227
+ :host input {
228
+ position: absolute;
229
+ top: 0;
230
+ left: 0;
231
+ right: 0;
232
+ bottom: 0;
233
+ width: 100%;
234
+ height: 100%;
235
+ margin: 0;
236
+ padding: 0;
237
+ border: 0;
238
+ outline: 0;
239
+ clip: rect(0 0 0 0);
240
+ opacity: 0;
241
+ overflow: hidden;
242
+ -webkit-appearance: none;
243
+ -moz-appearance: none;
244
+ }
245
+
246
+ :host ::slotted(ion-picker-column:first-of-type) {
247
+ text-align: start;
248
+ }
249
+
250
+ :host ::slotted(ion-picker-column:last-of-type) {
251
+ text-align: end;
252
+ }
253
+
254
+ :host ::slotted(ion-picker-column:only-child) {
255
+ text-align: center;
256
+ }
257
+
258
+ :host .picker-before {
259
+ background: linear-gradient(to bottom, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0) 90%);
260
+ }
261
+
262
+ :host .picker-after {
263
+ background: linear-gradient(to top, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 30%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0) 90%);
354
264
  }
@@ -5,9 +5,9 @@ import AxeBuilder from "@axe-core/playwright";
5
5
  import { expect } from "@playwright/test";
6
6
  import { configs, test } from "../../../../utils/test/playwright/index";
7
7
  configs().forEach(({ title, config }) => {
8
- test.describe(title('picker-internal: a11y'), () => {
8
+ test.describe(title('picker: a11y'), () => {
9
9
  test('should not have accessibility violations', async ({ page }) => {
10
- await page.goto(`/src/components/picker-internal/test/a11y`, config);
10
+ await page.goto(`/src/components/picker/test/a11y`, config);
11
11
  const results = await new AxeBuilder({ page }).analyze();
12
12
  expect(results.violations).toEqual([]);
13
13
  });
@@ -3,23 +3,109 @@
3
3
  */
4
4
  import { expect } from "@playwright/test";
5
5
  import { configs, test } from "../../../../utils/test/playwright/index";
6
- configs().forEach(({ title, screenshot, config }) => {
7
- test.describe(title('picker: basic'), () => {
8
- test('should not have visual regressions', async ({ page }) => {
6
+ /**
7
+ * This behavior does not vary across directions.
8
+ */
9
+ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
10
+ test.describe(title('picker: rendering'), () => {
11
+ test('inline pickers should not have visual regression', async ({ page }) => {
12
+ await page.goto(`/src/components/picker/test/basic`, config);
13
+ const fullStack = page.locator('#inline ion-picker-column-option[data-test-value="full-stack"]');
14
+ const onion = page.locator('#inline ion-picker-column-option[data-test-value="onion"]');
15
+ await expect(fullStack).toHaveClass(/option-active/);
16
+ await expect(onion).toHaveClass(/option-active/);
17
+ await page.waitForChanges();
18
+ await expect(page.locator('#inline')).toHaveScreenshot(screenshot(`picker-inline-diff`));
19
+ });
20
+ });
21
+ test.describe(title('picker: overlay rendering'), () => {
22
+ test('popover: should not have visual regression', async ({ page }) => {
23
+ await page.goto(`/src/components/picker/test/basic`, config);
24
+ const button = page.locator('#popover');
25
+ const didPresent = await page.spyOnEvent('ionPopoverDidPresent');
26
+ const picker = page.locator('ion-popover ion-picker');
27
+ await button.click();
28
+ await didPresent.next();
29
+ await expect(picker).toBeVisible();
30
+ const popoverContent = page.locator('ion-popover .ion-delegate-host');
31
+ await expect(popoverContent).toHaveScreenshot(screenshot(`picker-popover-diff`), {
32
+ /**
33
+ * Animations must be enabled to capture the screenshot.
34
+ * By default, animations are disabled with toHaveScreenshot,
35
+ * and when capturing the screenshot will call animation.finish().
36
+ * This will cause the popover to close and the screenshot capture
37
+ * to be invalid.
38
+ */
39
+ animations: 'allow',
40
+ });
41
+ });
42
+ test('modal: should not have visual regression', async ({ page }) => {
9
43
  await page.goto('/src/components/picker/test/basic', config);
10
- const didPresent = await page.spyOnEvent('ionPickerDidPresent');
11
- const didDismiss = await page.spyOnEvent('ionPickerDidDismiss');
12
- await page.click('#basic');
44
+ const button = page.locator('#modal');
45
+ const didPresent = await page.spyOnEvent('ionModalDidPresent');
46
+ const picker = page.locator('ion-modal ion-picker');
47
+ await button.click();
13
48
  await didPresent.next();
49
+ await expect(picker).toBeVisible();
50
+ const modalContent = page.locator('ion-modal .ion-delegate-host');
51
+ await expect(modalContent).toHaveScreenshot(screenshot(`picker-modal-diff`), {
52
+ /**
53
+ * Animations must be enabled to capture the screenshot.
54
+ * By default, animations are disabled with toHaveScreenshot,
55
+ * and when capturing the screenshot will call animation.finish().
56
+ * This will cause the modal to close and the screenshot capture
57
+ * to be invalid.
58
+ */
59
+ animations: 'allow',
60
+ });
61
+ });
62
+ });
63
+ });
64
+ /**
65
+ * This behavior does not vary across modes/directions.
66
+ */
67
+ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => {
68
+ test.describe(title('picker: focus'), () => {
69
+ test.beforeEach(async ({ page }) => {
70
+ await page.setContent(`
71
+ <ion-picker>
72
+ <ion-picker-column value="full-stack" id="first">
73
+ <ion-picker-column-option value="minified">Minified</ion-picker-column-option>
74
+ <ion-picker-column-option value="responsive">Responsive</ion-picker-column-option>
75
+ <ion-picker-column-option value="full-stack">Full Stack</ion-picker-column-option>
76
+ <ion-picker-column-option value="mobile-first">Mobile First</ion-picker-column-option>
77
+ <ion-picker-column-option value="serverless">Serverless</ion-picker-column-option>
78
+ </ion-picker-column>
79
+ <ion-picker-column value="onion" id="second">
80
+ <ion-picker-column-option value="tomato">Tomato</ion-picker-column-option>
81
+ <ion-picker-column-option value="avocado">Avocado</ion-picker-column-option>
82
+ <ion-picker-column-option value="onion">Onion</ion-picker-column-option>
83
+ <ion-picker-column-option value="potato">Potato</ion-picker-column-option>
84
+ <ion-picker-column-option value="artichoke">Artichoke</ion-picker-column-option>
85
+ </ion-picker-column>
86
+ </ion-picker>
87
+ `, config);
88
+ });
89
+ test('tabbing should correctly move focus between columns', async ({ page }) => {
90
+ const firstColumn = page.locator('ion-picker-column#first');
91
+ const secondColumn = page.locator('ion-picker-column#second');
92
+ // Focus first column
93
+ await page.keyboard.press('Tab');
94
+ await expect(firstColumn).toBeFocused();
14
95
  await page.waitForChanges();
15
- await expect(page).toHaveScreenshot(screenshot(`picker-basic`));
16
- await page.click('.picker-opt:nth-child(2)');
17
- await page.click('ion-picker .save-btn');
18
- await didDismiss.next();
19
- await page.click('#basic');
20
- await didPresent.next();
96
+ // Focus second column
97
+ await page.keyboard.press('Tab');
98
+ await expect(secondColumn).toBeFocused();
99
+ });
100
+ test('tabbing should correctly move focus back', async ({ page }) => {
101
+ const firstColumn = page.locator('ion-picker-column#first');
102
+ const secondColumn = page.locator('ion-picker-column#second');
103
+ await secondColumn.evaluate((el) => el.setFocus());
104
+ await expect(secondColumn).toBeFocused();
21
105
  await page.waitForChanges();
22
- await expect(page).toHaveScreenshot(screenshot(`picker-value-selected`));
106
+ // Focus first column
107
+ await page.keyboard.press('Shift+Tab');
108
+ await expect(firstColumn).toBeFocused();
23
109
  });
24
110
  });
25
111
  });
@@ -0,0 +1,85 @@
1
+ /*!
2
+ * (C) Ionic http://ionicframework.com - MIT License
3
+ */
4
+ import { expect } from "@playwright/test";
5
+ import { configs, test } from "../../../../utils/test/playwright/index";
6
+ const pickerElement = `
7
+ <ion-picker>
8
+ <ion-picker-column id="first"></ion-picker-column>
9
+ <ion-picker-column id="second"></ion-picker-column>
10
+ </ion-picker>
11
+
12
+ <script>
13
+ const setPickerColumn = (selector, items, value) => {
14
+ const column = document.querySelector(selector);
15
+
16
+ items.forEach((item) => {
17
+ const option = document.createElement('ion-picker-column-option');
18
+ option.value = item.value;
19
+ option.textContent = item.text;
20
+
21
+ option.setAttribute('data-test-value', item.value);
22
+
23
+ column.appendChild(option);
24
+ });
25
+
26
+ column.value = value;
27
+ };
28
+
29
+ setPickerColumn(
30
+ '#first',
31
+ [
32
+ { text: 'Minified', value: 'minified' },
33
+ { text: 'Responsive', value: 'responsive' },
34
+ { text: 'Full Stack', value: 'full-stack' },
35
+ { text: 'Mobile First', value: 'mobile-first' },
36
+ { text: 'Serverless', value: 'serverless' },
37
+ ],
38
+ 'minified'
39
+ );
40
+
41
+ setPickerColumn(
42
+ '#second',
43
+ [
44
+ { text: 'Tomato', value: 'tomato' },
45
+ { text: 'Avocado', value: 'avocado' },
46
+ { text: 'Onion', value: 'onion' },
47
+ { text: 'Potato', value: 'potato' },
48
+ { text: 'Artichoke', value: 'artichoke' },
49
+ ],
50
+ 'tomato'
51
+ );
52
+ </script>
53
+ `;
54
+ /**
55
+ * This behavior does not vary across directions.
56
+ */
57
+ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
58
+ test.describe(title('picker: custom'), () => {
59
+ test('should allow styling of the picker highlight', async ({ page }) => {
60
+ await page.setContent(`
61
+ <style>
62
+ ion-picker {
63
+ --highlight-background: rgb(0, 255, 0, 0.4);
64
+ --highlight-border-radius: 48px;
65
+ }
66
+ </style>
67
+ ${pickerElement}
68
+ `, config);
69
+ const picker = page.locator('ion-picker');
70
+ await expect(picker).toHaveScreenshot(screenshot(`picker-custom-highlight`));
71
+ });
72
+ test('should allow styling of the picker fade', async ({ page }) => {
73
+ await page.setContent(`
74
+ <style>
75
+ ion-picker {
76
+ --fade-background-rgb: 40, 40, 40;
77
+ }
78
+ </style>
79
+ ${pickerElement}
80
+ `, config);
81
+ const picker = page.locator('ion-picker');
82
+ await expect(picker).toHaveScreenshot(screenshot(`picker-custom-fade`));
83
+ });
84
+ });
85
+ });