@ionic/core 7.6.7-dev.11706551494.19e19037 → 7.6.7-dev.11706551842.118ce6e0

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 (521) hide show
  1. package/components/action-sheet.js +1 -1
  2. package/components/alert.js +2 -2
  3. package/components/backdrop.js +0 -12
  4. package/components/button.js +2 -2
  5. package/components/checkbox.js +2 -2
  6. package/components/data.js +1 -1
  7. package/components/gesture-controller.js +1 -1
  8. package/components/ion-back-button.js +1 -1
  9. package/components/ion-badge.js +2 -2
  10. package/components/ion-content.js +3 -4
  11. package/components/ion-datetime.js +40 -64
  12. package/components/ion-fab-button.js +2 -2
  13. package/components/ion-input.js +2 -2
  14. package/components/ion-item-option.js +2 -2
  15. package/components/ion-loading.js +1 -1
  16. package/components/ion-menu-button.js +1 -1
  17. package/components/ion-menu.js +21 -15
  18. package/components/ion-nav.js +7 -3
  19. package/components/ion-picker-column-option.d.ts +11 -0
  20. package/components/ion-picker-column-option.js +9 -0
  21. package/components/ion-picker-column.js +2 -2
  22. package/components/ion-picker-legacy-column.d.ts +11 -0
  23. package/components/ion-picker-legacy-column.js +9 -0
  24. package/components/{ion-picker-internal.d.ts → ion-picker-legacy.d.ts} +4 -4
  25. package/components/ion-picker-legacy.js +309 -0
  26. package/components/ion-picker.js +1 -309
  27. package/components/ion-progress-bar.js +2 -2
  28. package/components/ion-range.js +2 -2
  29. package/components/ion-refresher-content.js +1 -1
  30. package/components/ion-refresher.js +1 -1
  31. package/components/ion-router-link.js +1 -1
  32. package/components/ion-searchbar.js +1 -1
  33. package/components/ion-segment-button.js +1 -1
  34. package/components/ion-select.js +2 -2
  35. package/components/ion-split-pane.js +26 -15
  36. package/components/ion-tab-bar.js +2 -2
  37. package/components/ion-textarea.js +2 -2
  38. package/components/ion-toast.js +2 -2
  39. package/components/ion-toggle.js +2 -2
  40. package/components/item.js +2 -8
  41. package/components/label.js +1 -1
  42. package/components/overlays.js +11 -4
  43. package/components/picker-column-option.js +122 -0
  44. package/components/picker-column.js +351 -322
  45. package/components/picker-column2.js +379 -0
  46. package/components/{picker-internal.js → picker.js} +29 -22
  47. package/components/radio.js +2 -2
  48. package/components/select-popover.js +1 -1
  49. package/css/core.css +101 -34
  50. package/css/core.css.map +1 -1
  51. package/css/global.bundle.css +1 -1
  52. package/css/ionic.bundle.css +1 -1
  53. package/css/ionic.bundle.css.map +1 -1
  54. package/css/themes/dark.always.css +122 -0
  55. package/css/themes/dark.always.css.map +1 -0
  56. package/css/themes/dark.class.css +122 -0
  57. package/css/themes/dark.class.css.map +1 -0
  58. package/css/themes/dark.css +3 -0
  59. package/css/themes/dark.css.map +1 -0
  60. package/css/themes/dark.system.css +124 -0
  61. package/css/themes/dark.system.css.map +1 -0
  62. package/css/typography.css +1 -1
  63. package/dist/cjs/{button-active-85665616.js → button-active-d432e262.js} +1 -1
  64. package/dist/cjs/{data-a5109f09.js → data-e2bf21de.js} +1 -1
  65. package/dist/cjs/{gesture-controller-c40c045a.js → gesture-controller-9436f482.js} +1 -0
  66. package/dist/cjs/{index-d1b59ffa.js → index-ee07ed59.js} +1 -1
  67. package/dist/cjs/index.cjs.js +3 -3
  68. package/dist/cjs/ion-action-sheet.cjs.entry.js +5 -5
  69. package/dist/cjs/ion-alert.cjs.entry.js +6 -6
  70. package/dist/cjs/ion-app_8.cjs.entry.js +4 -5
  71. package/dist/cjs/ion-avatar_3.cjs.entry.js +2 -2
  72. package/dist/cjs/ion-back-button.cjs.entry.js +1 -1
  73. package/dist/cjs/ion-backdrop.cjs.entry.js +0 -12
  74. package/dist/cjs/ion-button_2.cjs.entry.js +2 -2
  75. package/dist/cjs/ion-checkbox.cjs.entry.js +2 -2
  76. package/dist/cjs/ion-datetime-button.cjs.entry.js +1 -1
  77. package/dist/cjs/ion-datetime_3.cjs.entry.js +37 -57
  78. package/dist/cjs/ion-fab_3.cjs.entry.js +2 -2
  79. package/dist/cjs/ion-input.cjs.entry.js +2 -2
  80. package/dist/cjs/ion-item-option_3.cjs.entry.js +3 -3
  81. package/dist/cjs/ion-item_8.cjs.entry.js +3 -8
  82. package/dist/cjs/ion-loading.cjs.entry.js +3 -2
  83. package/dist/cjs/ion-menu_3.cjs.entry.js +25 -20
  84. package/dist/cjs/ion-modal.cjs.entry.js +3 -3
  85. package/dist/cjs/ion-nav_2.cjs.entry.js +6 -3
  86. package/dist/cjs/ion-picker-column-option.cjs.entry.js +104 -0
  87. package/dist/cjs/{ion-picker-column-internal.cjs.entry.js → ion-picker-column.cjs.entry.js} +104 -87
  88. package/dist/cjs/{ion-picker-internal.cjs.entry.js → ion-picker.cjs.entry.js} +26 -19
  89. package/dist/cjs/ion-popover.cjs.entry.js +2 -1
  90. package/dist/cjs/ion-progress-bar.cjs.entry.js +2 -2
  91. package/dist/cjs/ion-radio_2.cjs.entry.js +2 -2
  92. package/dist/cjs/ion-range.cjs.entry.js +3 -3
  93. package/dist/cjs/ion-refresher_2.cjs.entry.js +5 -5
  94. package/dist/cjs/ion-reorder_2.cjs.entry.js +1 -1
  95. package/dist/cjs/ion-route_4.cjs.entry.js +1 -1
  96. package/dist/cjs/ion-searchbar.cjs.entry.js +1 -1
  97. package/dist/cjs/ion-segment_2.cjs.entry.js +2 -2
  98. package/dist/cjs/ion-select_3.cjs.entry.js +5 -4
  99. package/dist/cjs/ion-split-pane.cjs.entry.js +24 -14
  100. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +2 -2
  101. package/dist/cjs/ion-textarea.cjs.entry.js +2 -2
  102. package/dist/cjs/ion-toast.cjs.entry.js +5 -5
  103. package/dist/cjs/ion-toggle.cjs.entry.js +3 -3
  104. package/dist/cjs/ionic.cjs.js +1 -1
  105. package/dist/cjs/loader.cjs.js +1 -1
  106. package/dist/cjs/{overlays-8285b485.js → overlays-3afa911d.js} +11 -4
  107. package/dist/cjs/{swipe-back-2a858bbd.js → swipe-back-b8f2330b.js} +2 -2
  108. package/dist/collection/collection-manifest.json +7 -6
  109. package/dist/collection/components/action-sheet/action-sheet.ios.css +3 -3
  110. package/dist/collection/components/action-sheet/test/a11y/action-sheet.e2e.js +23 -14
  111. package/dist/collection/components/alert/alert.ios.css +6 -6
  112. package/dist/collection/components/alert/alert.md.css +6 -6
  113. package/dist/collection/components/alert/test/a11y/alert.e2e.js +22 -9
  114. package/dist/collection/components/back-button/back-button.ios.css +1 -1
  115. package/dist/collection/components/back-button/test/a11y/back-button.e2e.js +21 -0
  116. package/dist/collection/components/backdrop/backdrop.js +0 -12
  117. package/dist/collection/components/badge/badge.ios.css +1 -1
  118. package/dist/collection/components/badge/badge.md.css +1 -1
  119. package/dist/collection/components/badge/test/a11y/badge.e2e.js +18 -0
  120. package/dist/collection/components/button/button.ios.css +11 -11
  121. package/dist/collection/components/button/button.md.css +9 -9
  122. package/dist/collection/components/button/test/a11y/button.e2e.js +48 -0
  123. package/dist/collection/components/button/test/basic/button.e2e.js +1 -1
  124. package/dist/collection/components/button/test/wrap/button.e2e.js +12 -24
  125. package/dist/collection/components/checkbox/checkbox.ios.css +2 -2
  126. package/dist/collection/components/checkbox/checkbox.md.css +2 -2
  127. package/dist/collection/components/checkbox/test/a11y/checkbox.e2e.js +11 -2
  128. package/dist/collection/components/content/content.css +0 -4
  129. package/dist/collection/components/content/content.js +2 -3
  130. package/dist/collection/components/datetime/datetime.ios.css +93 -40
  131. package/dist/collection/components/datetime/datetime.js +24 -36
  132. package/dist/collection/components/datetime/datetime.md.css +96 -38
  133. package/dist/collection/components/datetime/test/a11y/datetime.e2e.js +4 -4
  134. package/dist/collection/components/datetime/test/a11y/datetime.spec.js +6 -9
  135. package/dist/collection/components/datetime/test/basic/datetime.e2e.js +22 -12
  136. package/dist/collection/components/datetime/test/datetime.e2e.js +3 -3
  137. package/dist/collection/components/datetime/test/disable-dates/datetime.e2e.js +1 -1
  138. package/dist/collection/components/datetime/test/disabled/datetime.e2e.js +4 -4
  139. package/dist/collection/components/datetime/test/disabled/datetime.spec.js +4 -4
  140. package/dist/collection/components/datetime/test/display/datetime.e2e.js +9 -9
  141. package/dist/collection/components/datetime/test/locale/datetime.e2e.js +5 -5
  142. package/dist/collection/components/datetime/test/minmax/datetime.e2e.js +17 -17
  143. package/dist/collection/components/datetime/test/month-year-picker/datetime.e2e.js +2 -2
  144. package/dist/collection/components/datetime/test/multiple/datetime.e2e.js +2 -2
  145. package/dist/collection/components/datetime/test/position/datetime.e2e.js +1 -1
  146. package/dist/collection/components/datetime/test/prefer-wheel/datetime.e2e.js +75 -73
  147. package/dist/collection/components/datetime/test/presentation/datetime.e2e.js +4 -4
  148. package/dist/collection/components/datetime/test/readonly/datetime.e2e.js +8 -8
  149. package/dist/collection/components/datetime/test/set-value/datetime.e2e.js +4 -4
  150. package/dist/collection/components/datetime/test/time-label/datetime.e2e.js +2 -2
  151. package/dist/collection/components/datetime/test/values/datetime.e2e.js +19 -16
  152. package/dist/collection/components/datetime/utils/data.js +1 -1
  153. package/dist/collection/components/datetime-button/test/basic/datetime-button.e2e.js +14 -14
  154. package/dist/collection/components/datetime-button/test/disabled/datetime-button.e2e.js +2 -2
  155. package/dist/collection/components/datetime-button/test/multiple/datetime-button.e2e.js +6 -6
  156. package/dist/collection/components/fab-button/fab-button.ios.css +13 -13
  157. package/dist/collection/components/fab-button/fab-button.md.css +4 -4
  158. package/dist/collection/components/fab-button/test/a11y/fab-button.e2e.js +50 -0
  159. package/dist/collection/components/header/test/condense/header.e2e.js +2 -2
  160. package/dist/collection/components/input/input.ios.css +3 -3
  161. package/dist/collection/components/input/input.md.css +3 -3
  162. package/dist/collection/components/input/test/a11y/input.e2e.js +41 -3
  163. package/dist/collection/components/item/item.ios.css +42 -5
  164. package/dist/collection/components/item/item.js +0 -7
  165. package/dist/collection/components/item/item.md.css +43 -6
  166. package/dist/collection/components/item-option/item-option.ios.css +2 -2
  167. package/dist/collection/components/item-option/item-option.md.css +1 -1
  168. package/dist/collection/components/item-sliding/test/a11y/item-sliding.e2e.js +28 -0
  169. package/dist/collection/components/label/label.md.css +1 -1
  170. package/dist/collection/components/label/test/a11y/label.e2e.js +20 -0
  171. package/dist/collection/components/loading/loading.md.css +1 -1
  172. package/dist/collection/components/loading/test/a11y/loading.e2e.js +21 -5
  173. package/dist/collection/components/menu/menu.ios.css +64 -3
  174. package/dist/collection/components/menu/menu.js +19 -13
  175. package/dist/collection/components/menu/menu.md.css +64 -3
  176. package/dist/collection/components/menu-button/menu-button.ios.css +1 -1
  177. package/dist/collection/components/menu-button/test/a11y/menu-button.e2e.js +14 -0
  178. package/dist/collection/components/modal/test/standalone/modal.e2e.js +1 -1
  179. package/dist/collection/components/nav/nav.js +22 -2
  180. package/dist/collection/components/nav/test/nav-controller.spec.js +36 -36
  181. package/dist/collection/components/note/test/a11y/note.e2e.js +6 -6
  182. package/dist/collection/components/picker/picker.ios.css +112 -211
  183. package/dist/collection/components/picker/picker.js +488 -738
  184. package/dist/collection/components/picker/picker.md.css +108 -198
  185. package/dist/collection/components/{picker-internal/test/a11y/picker-internal.e2e.js → picker/test/a11y/picker.e2e.js} +2 -2
  186. package/dist/collection/components/picker/test/basic/picker.e2e.js +99 -13
  187. package/dist/collection/components/picker/test/custom/picker.e2e.js +85 -0
  188. package/dist/collection/components/{picker-internal/test/keyboard-entry/picker-internal.e2e.js → picker/test/keyboard-entry/picker.e2e.js} +79 -42
  189. package/dist/collection/components/{picker-column-internal/picker-column-internal.md.css → picker-column/picker-column.css} +96 -83
  190. package/dist/collection/components/picker-column/picker-column.js +499 -335
  191. package/dist/collection/components/{picker-column-internal/test/basic/picker-column-internal.e2e.js → picker-column/test/basic/picker-column.e2e.js} +8 -8
  192. package/dist/collection/components/picker-column/test/disabled/picker-column.e2e.js +91 -0
  193. package/dist/collection/components/picker-column/test/slots/picker-column.e2e.js +39 -0
  194. package/dist/collection/components/picker-column-option/picker-column-option.ios.css +87 -0
  195. package/dist/collection/components/picker-column-option/picker-column-option.js +173 -0
  196. package/dist/collection/components/{picker-column-internal/picker-column-internal.ios.css → picker-column-option/picker-column-option.md.css} +6 -53
  197. package/dist/collection/components/picker-column-option/test/a11y/picker-column-option.e2e.js +18 -0
  198. package/dist/collection/components/picker-column-option/test/basic/picker-column-option.e2e.js +37 -0
  199. package/dist/collection/components/picker-column-option/test/picker-column-option.spec.js +29 -0
  200. package/dist/collection/components/{picker-internal/picker-internal.md.css → picker-legacy/picker.ios.css} +207 -98
  201. package/dist/collection/components/picker-legacy/picker.js +811 -0
  202. package/dist/collection/components/{picker-internal/picker-internal.ios.css → picker-legacy/picker.md.css} +192 -100
  203. package/dist/collection/components/picker-legacy/test/basic/picker.e2e.js +25 -0
  204. package/dist/collection/components/{picker → picker-legacy}/test/is-open/picker.e2e.js +4 -4
  205. package/dist/collection/components/{picker → picker-legacy}/test/picker-id.spec.js +5 -5
  206. package/dist/collection/components/{picker → picker-legacy}/test/trigger/picker.e2e.js +1 -1
  207. package/dist/collection/components/picker-legacy-column/picker-column.js +419 -0
  208. package/dist/collection/components/{picker-column → picker-legacy-column}/picker-column.md.css +1 -1
  209. package/dist/collection/components/{picker-column → picker-legacy-column}/test/picker-column-aria.spec.js +3 -3
  210. package/dist/collection/components/{picker-column → picker-legacy-column}/test/picker-column-dynamic.spec.js +2 -2
  211. package/dist/collection/components/{picker-column → picker-legacy-column}/test/picker-column.spec.js +2 -2
  212. package/dist/collection/components/{picker-column → picker-legacy-column}/test/standalone/picker-column.e2e.js +3 -3
  213. package/dist/collection/components/progress-bar/progress-bar.ios.css +2 -2
  214. package/dist/collection/components/progress-bar/progress-bar.md.css +2 -2
  215. package/dist/collection/components/progress-bar/test/a11y/progress-bar.e2e.js +24 -0
  216. package/dist/collection/components/radio/radio.ios.css +2 -2
  217. package/dist/collection/components/radio/radio.md.css +2 -2
  218. package/dist/collection/components/radio/test/a11y/radio.e2e.js +114 -81
  219. package/dist/collection/components/range/range.ios.css +1 -1
  220. package/dist/collection/components/range/range.md.css +3 -3
  221. package/dist/collection/components/range/test/a11y/range.e2e.js +18 -8
  222. package/dist/collection/components/refresher/refresher.md.css +2 -2
  223. package/dist/collection/components/refresher/test/a11y/refresher.e2e.js +25 -0
  224. package/dist/collection/components/refresher/test/test.utils.js +1 -1
  225. package/dist/collection/components/refresher-content/refresher-content.js +1 -1
  226. package/dist/collection/components/ripple-effect/test/basic/ripple-effect.e2e.js +2 -2
  227. package/dist/collection/components/router-link/router-link.css +1 -1
  228. package/dist/collection/components/router-link/test/a11y/router-link.e2e.js +23 -0
  229. package/dist/collection/components/searchbar/searchbar.ios.css +1 -1
  230. package/dist/collection/components/segment/test/a11y/segment.e2e.js +23 -0
  231. package/dist/collection/components/segment-button/segment-button.md.css +2 -2
  232. package/dist/collection/components/select/select.ios.css +3 -3
  233. package/dist/collection/components/select/select.md.css +3 -3
  234. package/dist/collection/components/select/test/a11y/select.e2e.js +68 -4
  235. package/dist/collection/components/select-popover/select-popover.md.css +4 -4
  236. package/dist/collection/components/select-popover/test/a11y/select-popover.e2e.js +32 -0
  237. package/dist/collection/components/split-pane/split-pane.ios.css +2 -54
  238. package/dist/collection/components/split-pane/split-pane.js +46 -12
  239. package/dist/collection/components/split-pane/split-pane.md.css +2 -54
  240. package/dist/collection/components/split-pane/test/wrapped-menu/split-pane.e2e.js +41 -0
  241. package/dist/collection/components/tab-bar/tab-bar.ios.css +1 -1
  242. package/dist/collection/components/tab-bar/tab-bar.md.css +1 -1
  243. package/dist/collection/components/textarea/test/a11y/textarea.e2e.js +41 -3
  244. package/dist/collection/components/textarea/textarea.ios.css +3 -3
  245. package/dist/collection/components/textarea/textarea.md.css +3 -3
  246. package/dist/collection/components/toast/test/a11y/toast.e2e.js +56 -24
  247. package/dist/collection/components/toast/toast.ios.css +1 -1
  248. package/dist/collection/components/toast/toast.md.css +2 -2
  249. package/dist/collection/components/toggle/test/a11y/toggle.e2e.js +8 -2
  250. package/dist/collection/components/toggle/toggle.ios.css +2 -2
  251. package/dist/collection/components/toggle/toggle.md.css +2 -2
  252. package/dist/collection/css/test/a11y/typography.e2e.js +18 -0
  253. package/dist/collection/themes/test/colors/theme.e2e.js +114 -0
  254. package/dist/collection/utils/gesture/gesture-controller.js +1 -1
  255. package/dist/collection/utils/overlays.js +11 -4
  256. package/dist/collection/utils/test/overlays/overlays-scroll-blocking.spec.js +65 -0
  257. package/dist/collection/utils/test/playwright/generator.js +1 -0
  258. package/dist/collection/utils/test/playwright/page/utils/set-content.js +1 -1
  259. package/dist/docs.json +500 -41
  260. package/dist/esm/{button-active-b62776db.js → button-active-3bcbd115.js} +1 -1
  261. package/dist/esm/{data-775093f5.js → data-6a31d701.js} +1 -1
  262. package/dist/esm/{gesture-controller-1bf57181.js → gesture-controller-314a54f6.js} +1 -1
  263. package/dist/esm/{index-2cf77112.js → index-39782642.js} +2 -2
  264. package/dist/esm/index.js +3 -3
  265. package/dist/esm/ion-action-sheet.entry.js +5 -5
  266. package/dist/esm/ion-alert.entry.js +6 -6
  267. package/dist/esm/ion-app_8.entry.js +4 -5
  268. package/dist/esm/ion-avatar_3.entry.js +2 -2
  269. package/dist/esm/ion-back-button.entry.js +1 -1
  270. package/dist/esm/ion-backdrop.entry.js +0 -12
  271. package/dist/esm/ion-button_2.entry.js +2 -2
  272. package/dist/esm/ion-checkbox.entry.js +2 -2
  273. package/dist/esm/ion-datetime-button.entry.js +1 -1
  274. package/dist/esm/ion-datetime_3.entry.js +36 -56
  275. package/dist/esm/ion-fab_3.entry.js +2 -2
  276. package/dist/esm/ion-input.entry.js +2 -2
  277. package/dist/esm/ion-item-option_3.entry.js +3 -3
  278. package/dist/esm/ion-item_8.entry.js +3 -8
  279. package/dist/esm/ion-loading.entry.js +3 -2
  280. package/dist/esm/ion-menu_3.entry.js +25 -20
  281. package/dist/esm/ion-modal.entry.js +3 -3
  282. package/dist/esm/ion-nav_2.entry.js +6 -3
  283. package/dist/esm/ion-picker-column-option.entry.js +100 -0
  284. package/dist/esm/{ion-picker-column-internal.entry.js → ion-picker-column.entry.js} +104 -87
  285. package/dist/esm/{ion-picker-internal.entry.js → ion-picker.entry.js} +26 -19
  286. package/dist/esm/ion-popover.entry.js +2 -1
  287. package/dist/esm/ion-progress-bar.entry.js +2 -2
  288. package/dist/esm/ion-radio_2.entry.js +2 -2
  289. package/dist/esm/ion-range.entry.js +3 -3
  290. package/dist/esm/ion-refresher_2.entry.js +5 -5
  291. package/dist/esm/ion-reorder_2.entry.js +1 -1
  292. package/dist/esm/ion-route_4.entry.js +1 -1
  293. package/dist/esm/ion-searchbar.entry.js +1 -1
  294. package/dist/esm/ion-segment_2.entry.js +2 -2
  295. package/dist/esm/ion-select_3.entry.js +5 -4
  296. package/dist/esm/ion-split-pane.entry.js +24 -14
  297. package/dist/esm/ion-tab-bar_2.entry.js +2 -2
  298. package/dist/esm/ion-textarea.entry.js +2 -2
  299. package/dist/esm/ion-toast.entry.js +5 -5
  300. package/dist/esm/ion-toggle.entry.js +3 -3
  301. package/dist/esm/ionic.js +1 -1
  302. package/dist/esm/loader.js +1 -1
  303. package/dist/esm/{overlays-bb824d56.js → overlays-8b24f0d5.js} +11 -4
  304. package/dist/esm/{swipe-back-a6f386fc.js → swipe-back-a8ca7f93.js} +2 -2
  305. package/dist/esm-es5/{button-active-b62776db.js → button-active-3bcbd115.js} +1 -1
  306. package/dist/esm-es5/{gesture-controller-1bf57181.js → gesture-controller-314a54f6.js} +1 -1
  307. package/dist/esm-es5/{index-2cf77112.js → index-39782642.js} +1 -1
  308. package/dist/esm-es5/index.js +1 -1
  309. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  310. package/dist/esm-es5/ion-alert.entry.js +1 -1
  311. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  312. package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
  313. package/dist/esm-es5/ion-back-button.entry.js +1 -1
  314. package/dist/esm-es5/ion-backdrop.entry.js +1 -1
  315. package/dist/esm-es5/ion-button_2.entry.js +1 -1
  316. package/dist/esm-es5/ion-checkbox.entry.js +1 -1
  317. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  318. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  319. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  320. package/dist/esm-es5/ion-input.entry.js +1 -1
  321. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  322. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  323. package/dist/esm-es5/ion-loading.entry.js +1 -1
  324. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  325. package/dist/esm-es5/ion-modal.entry.js +1 -1
  326. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  327. package/dist/esm-es5/ion-picker-column-option.entry.js +4 -0
  328. package/dist/esm-es5/ion-picker-column.entry.js +4 -0
  329. package/dist/esm-es5/ion-picker.entry.js +4 -0
  330. package/dist/esm-es5/ion-popover.entry.js +1 -1
  331. package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
  332. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  333. package/dist/esm-es5/ion-range.entry.js +1 -1
  334. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  335. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  336. package/dist/esm-es5/ion-route_4.entry.js +1 -1
  337. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  338. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  339. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  340. package/dist/esm-es5/ion-split-pane.entry.js +1 -1
  341. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  342. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  343. package/dist/esm-es5/ion-toast.entry.js +1 -1
  344. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  345. package/dist/esm-es5/ionic.js +1 -1
  346. package/dist/esm-es5/loader.js +1 -1
  347. package/dist/esm-es5/overlays-8b24f0d5.js +4 -0
  348. package/dist/esm-es5/swipe-back-a8ca7f93.js +4 -0
  349. package/dist/html.html-data.json +152 -1
  350. package/dist/ionic/index.esm.js +1 -1
  351. package/dist/ionic/ionic.esm.js +1 -1
  352. package/dist/ionic/{p-249633a4.entry.js → p-0055506a.entry.js} +1 -1
  353. package/dist/ionic/p-0708a9c1.system.js +4 -0
  354. package/dist/ionic/p-09890dd9.entry.js +4 -0
  355. package/dist/ionic/{p-c1c57873.system.entry.js → p-0a0a84ce.system.entry.js} +1 -1
  356. package/dist/ionic/p-0d3c5eaa.system.entry.js +4 -0
  357. package/dist/ionic/p-10607f89.entry.js +4 -0
  358. package/dist/ionic/{p-d2707f9d.system.js → p-114ea79c.system.js} +1 -1
  359. package/dist/ionic/{p-41040a92.system.entry.js → p-14311a1d.system.entry.js} +1 -1
  360. package/dist/ionic/p-1a5f0313.system.js +1 -1
  361. package/dist/ionic/{p-c3bfe92d.entry.js → p-1d1ce54e.entry.js} +1 -1
  362. package/dist/ionic/{p-c7c8429a.system.js → p-20d469d0.system.js} +1 -1
  363. package/dist/ionic/p-26976bfc.system.entry.js +4 -0
  364. package/dist/ionic/{p-8084e9cb.entry.js → p-28525772.entry.js} +1 -1
  365. package/dist/ionic/p-2c02fb1c.system.entry.js +4 -0
  366. package/dist/ionic/{p-928e945d.system.entry.js → p-2fda36b6.system.entry.js} +1 -1
  367. package/dist/ionic/p-3065cecc.entry.js +4 -0
  368. package/dist/ionic/{p-b43cf55f.entry.js → p-34f05cec.entry.js} +1 -1
  369. package/dist/ionic/p-381ca6f8.system.entry.js +4 -0
  370. package/dist/ionic/{p-31b2326e.system.js → p-3e1e14d9.system.js} +1 -1
  371. package/dist/ionic/{p-3b83e483.system.entry.js → p-3f3ae637.system.entry.js} +2 -2
  372. package/dist/ionic/{p-d6beb1c9.system.entry.js → p-41dcd6c0.system.entry.js} +1 -1
  373. package/dist/ionic/{p-54c92c77.entry.js → p-42d5f6ae.entry.js} +1 -1
  374. package/dist/ionic/p-4a13a07c.system.entry.js +4 -0
  375. package/dist/ionic/{p-bc6d16ca.entry.js → p-4b94c354.entry.js} +1 -1
  376. package/dist/ionic/p-51abefb7.system.js +4 -0
  377. package/dist/ionic/{p-e150f8fc.entry.js → p-598bd8e2.entry.js} +1 -1
  378. package/dist/ionic/p-5d22095a.entry.js +4 -0
  379. package/dist/ionic/{p-e814f9c0.entry.js → p-67b167bc.entry.js} +1 -1
  380. package/dist/ionic/p-67c1996d.entry.js +4 -0
  381. package/dist/ionic/p-6d42a37b.entry.js +4 -0
  382. package/dist/ionic/p-6db68be9.system.entry.js +4 -0
  383. package/dist/ionic/p-71f30cfc.system.entry.js +4 -0
  384. package/dist/ionic/{p-eb210b21.system.entry.js → p-75017f39.system.entry.js} +1 -1
  385. package/dist/ionic/{p-10c34f0a.system.entry.js → p-7a1ef06a.system.entry.js} +1 -1
  386. package/dist/ionic/{p-b09c8228.entry.js → p-7a2c6bb5.entry.js} +1 -1
  387. package/dist/ionic/p-7a343dca.system.entry.js +4 -0
  388. package/dist/ionic/p-7a3e1f37.system.entry.js +4 -0
  389. package/dist/ionic/{p-4dc3bc8b.entry.js → p-7acc89e0.entry.js} +1 -1
  390. package/dist/ionic/p-7ae141f1.entry.js +4 -0
  391. package/dist/ionic/p-7e8ef0bb.system.entry.js +4 -0
  392. package/dist/ionic/{p-5628d04e.entry.js → p-870453fd.entry.js} +1 -1
  393. package/dist/ionic/{p-cdce5ba3.system.entry.js → p-8a1d33e3.system.entry.js} +1 -1
  394. package/dist/ionic/{p-1f7fc88d.entry.js → p-8aaade76.entry.js} +1 -1
  395. package/dist/ionic/{p-f5d2dc9b.js → p-8ededb41.js} +1 -1
  396. package/dist/ionic/p-94265b3d.entry.js +4 -0
  397. package/dist/ionic/{p-35e1a80f.system.entry.js → p-943caced.system.entry.js} +1 -1
  398. package/dist/ionic/p-95d8071f.entry.js +4 -0
  399. package/dist/ionic/{p-7bae84aa.entry.js → p-9928b546.entry.js} +1 -1
  400. package/dist/ionic/{p-6b9eee40.system.entry.js → p-9a9deb33.system.entry.js} +1 -1
  401. package/dist/ionic/{p-bb3615f7.js → p-9b97df10.js} +1 -1
  402. package/dist/ionic/p-9c9eb63f.system.entry.js +4 -0
  403. package/dist/ionic/{p-db798370.system.entry.js → p-9cbfb298.system.entry.js} +1 -1
  404. package/dist/ionic/{p-0d2b6901.entry.js → p-9cd05453.entry.js} +1 -1
  405. package/dist/ionic/p-a01d6784.system.entry.js +4 -0
  406. package/dist/ionic/{p-c10cc51e.system.entry.js → p-a068b1c7.system.entry.js} +2 -2
  407. package/dist/ionic/{p-2c3842e8.system.entry.js → p-a11e45fe.system.entry.js} +1 -1
  408. package/dist/ionic/p-a259fa5f.system.entry.js +4 -0
  409. package/dist/ionic/p-a60a1ce5.js +4 -0
  410. package/dist/ionic/{p-436bd99a.entry.js → p-a72be676.entry.js} +1 -1
  411. package/dist/ionic/p-acbb36a1.entry.js +4 -0
  412. package/dist/ionic/{p-f865bc9a.entry.js → p-adba40e6.entry.js} +1 -1
  413. package/dist/ionic/{p-1052ef2b.entry.js → p-ae8747aa.entry.js} +1 -1
  414. package/dist/ionic/{p-525b6ac4.system.entry.js → p-bad61026.system.entry.js} +1 -1
  415. package/dist/ionic/p-c33d312f.js +4 -0
  416. package/dist/ionic/{p-688a36c7.entry.js → p-c7bdd72f.entry.js} +1 -1
  417. package/dist/ionic/{p-df62accd.entry.js → p-c9028fdc.entry.js} +1 -1
  418. package/dist/ionic/p-c9b8f9e5.system.entry.js +4 -0
  419. package/dist/ionic/{p-5c2da581.system.entry.js → p-cb0cfc39.system.entry.js} +1 -1
  420. package/dist/ionic/{p-49c52149.system.entry.js → p-cb304e5f.system.entry.js} +1 -1
  421. package/dist/ionic/{p-7510e462.entry.js → p-d545e325.entry.js} +1 -1
  422. package/dist/ionic/p-d6674fed.entry.js +4 -0
  423. package/dist/ionic/{p-8f1ebb7d.system.js → p-df75bd2c.system.js} +1 -1
  424. package/dist/ionic/p-dfd21411.system.entry.js +4 -0
  425. package/dist/ionic/p-e22bf111.js +4 -0
  426. package/dist/ionic/p-e652d9e4.entry.js +4 -0
  427. package/dist/ionic/p-ea4b254e.entry.js +4 -0
  428. package/dist/ionic/p-ea9a8424.system.entry.js +4 -0
  429. package/dist/ionic/p-eaa4e76f.system.entry.js +4 -0
  430. package/dist/ionic/{p-dc1d883c.system.entry.js → p-ee1214e0.system.entry.js} +1 -1
  431. package/dist/ionic/{p-41aa2662.entry.js → p-eeb87a49.entry.js} +1 -1
  432. package/dist/ionic/{p-b6f6f00e.entry.js → p-efa1c7f0.entry.js} +1 -1
  433. package/dist/ionic/{p-3dbaaa5b.system.entry.js → p-f2ed3039.system.entry.js} +1 -1
  434. package/dist/ionic/{p-1a0bf247.system.entry.js → p-fc58a772.system.entry.js} +1 -1
  435. package/dist/ionic/p-fdc3ff96.entry.js +4 -0
  436. package/dist/types/components/backdrop/backdrop.d.ts +0 -3
  437. package/dist/types/components/datetime/datetime.d.ts +0 -1
  438. package/dist/types/components/datetime/utils/data.d.ts +11 -7
  439. package/dist/types/components/item/item.d.ts +0 -1
  440. package/dist/types/components/menu/menu.d.ts +12 -2
  441. package/dist/types/components/nav/nav.d.ts +4 -1
  442. package/dist/types/components/picker/picker-interfaces.d.ts +8 -0
  443. package/dist/types/components/picker/picker.d.ts +75 -129
  444. package/dist/types/components/picker-column/picker-column-interfaces.d.ts +4 -0
  445. package/dist/types/components/picker-column/picker-column.d.ts +99 -39
  446. package/dist/types/components/picker-column-option/picker-column-option.d.ts +66 -0
  447. package/dist/types/components/picker-legacy/picker.d.ts +158 -0
  448. package/dist/types/components/picker-legacy-column/picker-column.d.ts +46 -0
  449. package/dist/types/components/split-pane/split-pane.d.ts +14 -2
  450. package/dist/types/components.d.ts +159 -122
  451. package/dist/types/interface.d.ts +1 -1
  452. package/dist/types/utils/config.d.ts +2 -2
  453. package/dist/types/utils/gesture/gesture-controller.d.ts +1 -0
  454. package/dist/types/utils/overlays.d.ts +5 -2
  455. package/hydrate/index.js +1462 -1350
  456. package/package.json +2 -2
  457. package/components/ion-picker-column-internal.d.ts +0 -11
  458. package/components/ion-picker-column-internal.js +0 -9
  459. package/components/ion-picker-internal.js +0 -9
  460. package/components/picker-column-internal.js +0 -390
  461. package/dist/collection/components/item/test/item.spec.js +0 -20
  462. package/dist/collection/components/picker-column-internal/picker-column-internal.js +0 -566
  463. package/dist/collection/components/picker-column-internal/test/disabled/picker-column-internal.e2e.js +0 -162
  464. package/dist/collection/components/picker-internal/picker-internal.js +0 -560
  465. package/dist/collection/components/picker-internal/test/basic/picker-internal.e2e.js +0 -118
  466. package/dist/esm-es5/ion-picker-column-internal.entry.js +0 -4
  467. package/dist/esm-es5/ion-picker-internal.entry.js +0 -4
  468. package/dist/esm-es5/overlays-bb824d56.js +0 -4
  469. package/dist/esm-es5/swipe-back-a6f386fc.js +0 -4
  470. package/dist/ionic/p-024e2739.entry.js +0 -4
  471. package/dist/ionic/p-06128c8c.entry.js +0 -4
  472. package/dist/ionic/p-06f72943.system.entry.js +0 -4
  473. package/dist/ionic/p-35ce400e.system.js +0 -4
  474. package/dist/ionic/p-3de38800.system.entry.js +0 -4
  475. package/dist/ionic/p-5aecd304.system.entry.js +0 -4
  476. package/dist/ionic/p-5f698182.entry.js +0 -4
  477. package/dist/ionic/p-61bf9f6f.system.entry.js +0 -4
  478. package/dist/ionic/p-6899d5af.entry.js +0 -4
  479. package/dist/ionic/p-6a6477b2.js +0 -4
  480. package/dist/ionic/p-6e165986.system.entry.js +0 -4
  481. package/dist/ionic/p-719ad110.system.entry.js +0 -4
  482. package/dist/ionic/p-73547cf9.entry.js +0 -4
  483. package/dist/ionic/p-7a02dd61.system.entry.js +0 -4
  484. package/dist/ionic/p-7ffe791a.system.js +0 -4
  485. package/dist/ionic/p-80ddd0c1.entry.js +0 -4
  486. package/dist/ionic/p-87e10168.system.entry.js +0 -4
  487. package/dist/ionic/p-89c28901.system.entry.js +0 -4
  488. package/dist/ionic/p-8bad1486.system.entry.js +0 -4
  489. package/dist/ionic/p-90000ff6.js +0 -4
  490. package/dist/ionic/p-9cf0846d.system.entry.js +0 -4
  491. package/dist/ionic/p-a0953474.entry.js +0 -4
  492. package/dist/ionic/p-a2d75455.entry.js +0 -4
  493. package/dist/ionic/p-a706cf11.system.entry.js +0 -4
  494. package/dist/ionic/p-aca77953.entry.js +0 -4
  495. package/dist/ionic/p-afafbba0.entry.js +0 -4
  496. package/dist/ionic/p-ba4890eb.system.entry.js +0 -4
  497. package/dist/ionic/p-beeceaf5.system.entry.js +0 -4
  498. package/dist/ionic/p-c4177035.entry.js +0 -4
  499. package/dist/ionic/p-c48a9ef3.system.entry.js +0 -4
  500. package/dist/ionic/p-cb301b9a.entry.js +0 -4
  501. package/dist/ionic/p-eb80ca40.entry.js +0 -4
  502. package/dist/ionic/p-f48a49ae.system.entry.js +0 -4
  503. package/dist/ionic/p-fd1a0431.js +0 -4
  504. package/dist/types/components/picker-column-internal/picker-column-internal-interfaces.d.ts +0 -5
  505. package/dist/types/components/picker-column-internal/picker-column-internal.d.ts +0 -102
  506. package/dist/types/components/picker-internal/picker-internal-interfaces.d.ts +0 -8
  507. package/dist/types/components/picker-internal/picker-internal.d.ts +0 -102
  508. /package/dist/collection/components/{picker-internal/picker-internal-interfaces.js → picker/picker-interfaces.js} +0 -0
  509. /package/dist/collection/components/{picker-column-internal/picker-column-internal-interfaces.js → picker-column/picker-column-interfaces.js} +0 -0
  510. /package/dist/collection/components/{picker → picker-legacy}/animations/ios.enter.js +0 -0
  511. /package/dist/collection/components/{picker → picker-legacy}/animations/ios.leave.js +0 -0
  512. /package/dist/collection/components/{picker → picker-legacy}/picker-interface.js +0 -0
  513. /package/dist/collection/components/{picker-column → picker-legacy-column}/picker-column.ios.css +0 -0
  514. /package/dist/collection/components/{picker-column → picker-legacy-column}/test/test.utils.js +0 -0
  515. /package/dist/esm-es5/{data-775093f5.js → data-6a31d701.js} +0 -0
  516. /package/dist/ionic/{p-87bb3735.system.js → p-7ff4359e.system.js} +0 -0
  517. /package/dist/ionic/{p-18cae04f.js → p-a64accf5.js} +0 -0
  518. /package/dist/types/components/{picker → picker-legacy}/animations/ios.enter.d.ts +0 -0
  519. /package/dist/types/components/{picker → picker-legacy}/animations/ios.leave.d.ts +0 -0
  520. /package/dist/types/components/{picker → picker-legacy}/picker-interface.d.ts +0 -0
  521. /package/dist/types/components/{picker-column → picker-legacy-column}/test/test.utils.d.ts +0 -0
@@ -7,20 +7,20 @@ import { configs, test } from "../../../../utils/test/playwright/index";
7
7
  * This behavior does not vary across modes/directions.
8
8
  */
9
9
  configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => {
10
- test.describe(title('picker-column-internal'), () => {
10
+ test.describe(title('picker-column'), () => {
11
11
  test.beforeEach(async ({ page }) => {
12
- await page.goto('/src/components/picker-column-internal/test/basic', config);
12
+ await page.goto('/src/components/picker-column/test/basic', config);
13
13
  });
14
14
  test('should render a picker item for each item', async ({ page }) => {
15
- const columns = page.locator('ion-picker-column-internal .picker-item:not(.picker-item-empty)');
15
+ const columns = page.locator('ion-picker-column ion-picker-column-option');
16
16
  await expect(columns).toHaveCount(24);
17
17
  });
18
18
  test('should render 6 empty picker items', async ({ page }) => {
19
- const columns = page.locator('ion-picker-column-internal .picker-item-empty');
19
+ const columns = page.locator('ion-picker-column .picker-item-empty');
20
20
  await expect(columns).toHaveCount(6);
21
21
  });
22
22
  test('should not have an active item when value is not set', async ({ page }) => {
23
- const activeColumn = page.locator('ion-picker-column-internal .picker-item-active');
23
+ const activeColumn = page.locator('ion-picker-column ion-picker-column-option.option-active');
24
24
  await expect(activeColumn).toHaveCount(0);
25
25
  });
26
26
  test('should have an active item when value is set', async ({ page }) => {
@@ -28,7 +28,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
28
28
  el.value = '12';
29
29
  });
30
30
  await page.waitForChanges();
31
- const activeColumn = page.locator('ion-picker-column-internal .picker-item-active');
31
+ const activeColumn = page.locator('ion-picker-column ion-picker-column-option.option-active');
32
32
  expect(activeColumn).not.toBeNull();
33
33
  });
34
34
  // TODO FW-3616
@@ -38,8 +38,8 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
38
38
  el.scrollTop = 801;
39
39
  });
40
40
  await page.waitForChanges();
41
- const activeColumn = page.locator('ion-picker-column-internal .picker-item-active');
42
- expect(await (activeColumn === null || activeColumn === void 0 ? void 0 : activeColumn.innerText())).toEqual('23');
41
+ const activeColumn = page.locator('ion-picker-column ion-picker-column-option.option-active');
42
+ await expect(activeColumn).toHaveJSProperty('value', 23);
43
43
  });
44
44
  test('should not emit ionChange when the value is modified externally', async ({ page, skip }) => {
45
45
  skip.browser('firefox', 'https://bugzilla.mozilla.org/show_bug.cgi?id=1766890');
@@ -0,0 +1,91 @@
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
+ /**
7
+ * This behavior does not vary across modes/directions.
8
+ */
9
+ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => {
10
+ test.describe(title('picker-column: disabled items'), () => {
11
+ test('disabled picker item should not be considered active', async ({ page }) => {
12
+ await page.setContent(`
13
+ <ion-picker>
14
+ <ion-picker-column value="b">
15
+ <ion-picker-column-option value="a">A</ion-picker-column-option>
16
+ <ion-picker-column-option value="b" disabled="true">B</ion-picker-column-option>
17
+ <ion-picker-column-option value="c">C</ion-picker-column-option>
18
+ </ion-picker-column>
19
+ </ion-picker>
20
+ `, config);
21
+ const disabledItem = page.locator('ion-picker-column-option').nth(1);
22
+ await expect(disabledItem).not.toHaveClass(/option-active/);
23
+ });
24
+ test('setting the value to a disabled item should not cause that item to be active', async ({ page }) => {
25
+ await page.setContent(`
26
+ <ion-picker>
27
+ <ion-picker-column>
28
+ <ion-picker-column-option value="a">A</ion-picker-column-option>
29
+ <ion-picker-column-option value="b" disabled="true">B</ion-picker-column-option>
30
+ <ion-picker-column-option value="c">C</ion-picker-column-option>
31
+ </ion-picker-column>
32
+ </ion-picker>
33
+ `, config);
34
+ const pickerColumn = page.locator('ion-picker-column');
35
+ await pickerColumn.evaluate((el) => (el.value = 'b'));
36
+ await page.waitForChanges();
37
+ const disabledItem = page.locator('ion-picker-column ion-picker-column-option').nth(1);
38
+ await expect(disabledItem).not.toHaveClass(/option-active/);
39
+ });
40
+ test('defaulting the value to a disabled item should not cause that item to be active', async ({ page }) => {
41
+ await page.setContent(`
42
+ <ion-picker>
43
+ <ion-picker-column value="b">
44
+ <ion-picker-column-option value="a">A</ion-picker-column-option>
45
+ <ion-picker-column-option value="b" disabled="true">B</ion-picker-column-option>
46
+ <ion-picker-column-option value="c">C</ion-picker-column-option>
47
+ </ion-picker-column>
48
+ </ion-picker>
49
+ `, config);
50
+ const disabledItem = page.locator('ion-picker-column ion-picker-column-option').nth(1);
51
+ await expect(disabledItem).not.toHaveClass(/option-active/);
52
+ });
53
+ });
54
+ });
55
+ /**
56
+ * This behavior does not vary across directions.
57
+ */
58
+ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
59
+ test.describe(title('picker-column: disabled column rendering'), () => {
60
+ test.beforeEach(async ({ page }) => {
61
+ await page.goto('/src/components/picker-column/test/disabled', config);
62
+ });
63
+ test('disabled column should not have visual regressions', async ({ page }) => {
64
+ const disabledColumn = page.locator('#column-disabled');
65
+ await page.waitForChanges();
66
+ await expect(disabledColumn).toHaveScreenshot(screenshot('picker-disabled-column'));
67
+ });
68
+ });
69
+ });
70
+ /**
71
+ * This behavior does not vary across modes/directions.
72
+ */
73
+ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => {
74
+ test.describe(title('picker-column: disabled column'), () => {
75
+ test.beforeEach(async ({ page }) => {
76
+ await page.goto('/src/components/picker-column/test/disabled', config);
77
+ });
78
+ test('clicking option in disabled column should not change value', async ({ page }) => {
79
+ const column = page.locator('#column-disabled');
80
+ const option = column.locator('ion-picker-column-option').nth(1);
81
+ await expect(column).toHaveJSProperty('value', 11);
82
+ /**
83
+ * Options do not receive pointer events
84
+ * so we need to forcibly click the element.
85
+ */
86
+ await option.click({ force: true });
87
+ await page.waitForChanges();
88
+ await expect(column).toHaveJSProperty('value', 11);
89
+ });
90
+ });
91
+ });
@@ -0,0 +1,39 @@
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
+ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
7
+ test.describe(title('picker-column: slots'), () => {
8
+ test('should not have visual regressions with prefix and suffix', async ({ page }) => {
9
+ await page.setContent(`
10
+ <ion-picker>
11
+ <ion-picker-column value="b">
12
+ <ion-picker-column-option value="a">A</ion-picker-column-option>
13
+ <ion-picker-column-option value="b">B</ion-picker-column-option>
14
+ <ion-picker-column-option value="c">C</ion-picker-column-option>
15
+ <div slot="prefix">Prefix</div>
16
+ <div slot="suffix">Suffix</div>
17
+ </ion-picker-column>
18
+ </ion-picker>
19
+ `, config);
20
+ const picker = page.locator('ion-picker');
21
+ await expect(picker).toHaveScreenshot(screenshot(`picker-prefix-suffix`));
22
+ });
23
+ test('should not have visual regressions with a long prefix and suffix', async ({ page }) => {
24
+ await page.setContent(`
25
+ <ion-picker>
26
+ <ion-picker-column value="b">
27
+ <ion-picker-column-option value="a">A</ion-picker-column-option>
28
+ <ion-picker-column-option value="b">B</ion-picker-column-option>
29
+ <ion-picker-column-option value="c">C</ion-picker-column-option>
30
+ <div slot="prefix">Long prefix long prefix long prefix</div>
31
+ <div slot="suffix">Long suffix long suffix long suffix</div>
32
+ </ion-picker-column>
33
+ </ion-picker>
34
+ `, config);
35
+ const picker = page.locator('ion-picker');
36
+ await expect(picker).toHaveScreenshot(screenshot(`picker-long-prefix-suffix`));
37
+ });
38
+ });
39
+ });
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Convert a font size to a dynamic font size.
3
+ * Fonts that participate in Dynamic Type should use
4
+ * dynamic font sizes.
5
+ * @param size - The initial font size including the unit (i.e. px or pt)
6
+ * @param unit (optional) - The unit to convert to. Use this if you want to
7
+ * convert to a unit other than $baselineUnit.
8
+ */
9
+ /**
10
+ * Convert a font size to a dynamic font size but impose
11
+ * a maximum font size.
12
+ * @param size - The initial font size including the unit (i.e. px or pt)
13
+ * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
14
+ * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
15
+ * convert to a unit other than $baselineUnit.
16
+ */
17
+ /**
18
+ * Convert a font size to a dynamic font size but impose
19
+ * a minimum font size.
20
+ * @param size - The initial font size including the unit (i.e. px or pt)
21
+ * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
22
+ * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
23
+ * convert to a unit other than $baselineUnit.
24
+ */
25
+ /**
26
+ * Convert a font size to a dynamic font size but impose
27
+ * maximum and minimum font sizes.
28
+ * @param size - The initial font size including the unit (i.e. px or pt)
29
+ * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
30
+ * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
31
+ * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
32
+ * convert to a unit other than $baselineUnit.
33
+ */
34
+ /**
35
+ * A heuristic that applies CSS to tablet
36
+ * viewports.
37
+ *
38
+ * Usage:
39
+ * @include tablet-viewport() {
40
+ * :host {
41
+ * background-color: green;
42
+ * }
43
+ * }
44
+ */
45
+ /**
46
+ * A heuristic that applies CSS to mobile
47
+ * viewports (i.e. phones, not tablets).
48
+ *
49
+ * Usage:
50
+ * @include mobile-viewport() {
51
+ * :host {
52
+ * background-color: blue;
53
+ * }
54
+ * }
55
+ */
56
+ button {
57
+ padding-left: 0;
58
+ padding-right: 0;
59
+ padding-top: 0;
60
+ padding-bottom: 0;
61
+ margin-left: 0;
62
+ margin-right: 0;
63
+ margin-top: 0;
64
+ margin-bottom: 0;
65
+ width: 100%;
66
+ height: 34px;
67
+ border: 0px;
68
+ outline: none;
69
+ background: transparent;
70
+ color: inherit;
71
+ font-family: var(--ion-font-family, inherit);
72
+ font-size: inherit;
73
+ line-height: 34px;
74
+ text-align: inherit;
75
+ text-overflow: ellipsis;
76
+ white-space: nowrap;
77
+ cursor: pointer;
78
+ overflow: hidden;
79
+ }
80
+
81
+ :host(.option-disabled) {
82
+ opacity: 0.4;
83
+ }
84
+
85
+ :host(.option-disabled) button {
86
+ cursor: default;
87
+ }
@@ -0,0 +1,173 @@
1
+ /*!
2
+ * (C) Ionic http://ionicframework.com - MIT License
3
+ */
4
+ import { Host, h } from "@stencil/core";
5
+ import { inheritAttributes } from "../../utils/helpers";
6
+ import { createColorClasses } from "../../utils/theme";
7
+ import { getIonMode } from "../../global/ionic-global";
8
+ export class PickerColumnOption {
9
+ constructor() {
10
+ /**
11
+ * We keep track of the parent picker column
12
+ * so we can update the value of it when
13
+ * clicking an enable option.
14
+ */
15
+ this.pickerColumn = null;
16
+ this.ariaLabel = null;
17
+ this.disabled = false;
18
+ this.value = undefined;
19
+ this.color = 'primary';
20
+ }
21
+ /**
22
+ * The aria-label of the option has changed after the
23
+ * first render and needs to be updated within the component.
24
+ *
25
+ * @param ariaLbl The new aria-label value.
26
+ */
27
+ onAriaLabelChange(ariaLbl) {
28
+ this.ariaLabel = ariaLbl;
29
+ }
30
+ componentWillLoad() {
31
+ const inheritedAttributes = inheritAttributes(this.el, ['aria-label']);
32
+ /**
33
+ * The initial value of `aria-label` needs to be set for
34
+ * the first render.
35
+
36
+ */
37
+ this.ariaLabel = inheritedAttributes['aria-label'] || null;
38
+ }
39
+ connectedCallback() {
40
+ this.pickerColumn = this.el.closest('ion-picker-column');
41
+ }
42
+ disconnectedCallback() {
43
+ this.pickerColumn = null;
44
+ }
45
+ /**
46
+ * The column options can load at any time
47
+ * so the options needs to tell the
48
+ * parent picker column when it is loaded
49
+ * so the picker column can ensure it is
50
+ * centered in the view.
51
+ *
52
+ * We intentionally run this for every
53
+ * option. If we only ran this from
54
+ * the selected option then if the newly
55
+ * loaded options were not selected then
56
+ * scrollActiveItemIntoView would not be called.
57
+ */
58
+ componentDidLoad() {
59
+ const { pickerColumn } = this;
60
+ if (pickerColumn !== null) {
61
+ pickerColumn.scrollActiveItemIntoView();
62
+ }
63
+ }
64
+ /**
65
+ * When an option is clicked, update the
66
+ * parent picker column value. This
67
+ * component will handle centering the option
68
+ * in the column view.
69
+ */
70
+ onClick() {
71
+ const { pickerColumn } = this;
72
+ if (pickerColumn !== null) {
73
+ pickerColumn.setValue(this.value);
74
+ }
75
+ }
76
+ render() {
77
+ const { color, disabled, ariaLabel } = this;
78
+ const mode = getIonMode(this);
79
+ return (h(Host, { class: createColorClasses(color, {
80
+ [mode]: true,
81
+ ['option-disabled']: disabled,
82
+ }) }, h("button", { tabindex: "-1", "aria-label": ariaLabel, disabled: disabled, onClick: () => this.onClick() }, h("slot", null))));
83
+ }
84
+ static get is() { return "ion-picker-column-option"; }
85
+ static get encapsulation() { return "shadow"; }
86
+ static get originalStyleUrls() {
87
+ return {
88
+ "ios": ["picker-column-option.ios.scss"],
89
+ "md": ["picker-column-option.md.scss"]
90
+ };
91
+ }
92
+ static get styleUrls() {
93
+ return {
94
+ "ios": ["picker-column-option.ios.css"],
95
+ "md": ["picker-column-option.md.css"]
96
+ };
97
+ }
98
+ static get properties() {
99
+ return {
100
+ "disabled": {
101
+ "type": "boolean",
102
+ "mutable": false,
103
+ "complexType": {
104
+ "original": "boolean",
105
+ "resolved": "boolean",
106
+ "references": {}
107
+ },
108
+ "required": false,
109
+ "optional": false,
110
+ "docs": {
111
+ "tags": [],
112
+ "text": "If `true`, the user cannot interact with the picker column option."
113
+ },
114
+ "attribute": "disabled",
115
+ "reflect": false,
116
+ "defaultValue": "false"
117
+ },
118
+ "value": {
119
+ "type": "any",
120
+ "mutable": false,
121
+ "complexType": {
122
+ "original": "any | null",
123
+ "resolved": "any",
124
+ "references": {}
125
+ },
126
+ "required": false,
127
+ "optional": true,
128
+ "docs": {
129
+ "tags": [],
130
+ "text": "The text value of the option."
131
+ },
132
+ "attribute": "value",
133
+ "reflect": false
134
+ },
135
+ "color": {
136
+ "type": "string",
137
+ "mutable": false,
138
+ "complexType": {
139
+ "original": "Color",
140
+ "resolved": "\"danger\" | \"dark\" | \"light\" | \"medium\" | \"primary\" | \"secondary\" | \"success\" | \"tertiary\" | \"warning\" | string & Record<never, never> | undefined",
141
+ "references": {
142
+ "Color": {
143
+ "location": "import",
144
+ "path": "../../interface",
145
+ "id": "src/interface.d.ts::Color"
146
+ }
147
+ }
148
+ },
149
+ "required": false,
150
+ "optional": true,
151
+ "docs": {
152
+ "tags": [],
153
+ "text": "The color to use from your application's color palette.\nDefault options are: `\"primary\"`, `\"secondary\"`, `\"tertiary\"`, `\"success\"`, `\"warning\"`, `\"danger\"`, `\"light\"`, `\"medium\"`, and `\"dark\"`.\nFor more information on colors, see [theming](/docs/theming/basics)."
154
+ },
155
+ "attribute": "color",
156
+ "reflect": true,
157
+ "defaultValue": "'primary'"
158
+ }
159
+ };
160
+ }
161
+ static get states() {
162
+ return {
163
+ "ariaLabel": {}
164
+ };
165
+ }
166
+ static get elementRef() { return "el"; }
167
+ static get watchers() {
168
+ return [{
169
+ "propName": "aria-label",
170
+ "methodName": "onAriaLabelChange"
171
+ }];
172
+ }
173
+ }
@@ -53,35 +53,7 @@
53
53
  * }
54
54
  * }
55
55
  */
56
- :host {
57
- -webkit-padding-start: 16px;
58
- padding-inline-start: 16px;
59
- -webkit-padding-end: 16px;
60
- padding-inline-end: 16px;
61
- padding-top: 0px;
62
- padding-bottom: 0px;
63
- height: 200px;
64
- outline: none;
65
- font-size: 22px;
66
- scroll-snap-type: y mandatory;
67
- /**
68
- * Need to explicitly set overflow-x: hidden
69
- * for older implementations of scroll snapping.
70
- */
71
- overflow-x: hidden;
72
- overflow-y: scroll;
73
- scrollbar-width: none;
74
- text-align: center;
75
- }
76
-
77
- /**
78
- * Hide scrollbars on Chrome and Safari
79
- */
80
- :host::-webkit-scrollbar {
81
- display: none;
82
- }
83
-
84
- :host .picker-item {
56
+ button {
85
57
  padding-left: 0;
86
58
  padding-right: 0;
87
59
  padding-top: 0;
@@ -90,7 +62,6 @@
90
62
  margin-right: 0;
91
63
  margin-top: 0;
92
64
  margin-bottom: 0;
93
- display: block;
94
65
  width: 100%;
95
66
  height: 34px;
96
67
  border: 0px;
@@ -105,34 +76,16 @@
105
76
  white-space: nowrap;
106
77
  cursor: pointer;
107
78
  overflow: hidden;
108
- scroll-snap-align: center;
109
79
  }
110
80
 
111
- :host .picker-item-empty,
112
- :host .picker-item[disabled] {
113
- cursor: default;
114
- }
115
-
116
- :host .picker-item-empty,
117
- :host(:not([disabled])) .picker-item[disabled] {
118
- scroll-snap-align: none;
119
- }
120
-
121
- :host([disabled]) {
122
- overflow-y: hidden;
123
- }
124
-
125
- :host .picker-item[disabled] {
81
+ :host(.option-disabled) {
126
82
  opacity: 0.4;
127
83
  }
128
84
 
129
- :host(.picker-column-active) .picker-item.picker-item-active {
130
- color: var(--ion-color-base);
85
+ :host(.option-disabled) button {
86
+ cursor: default;
131
87
  }
132
88
 
133
- @media (any-hover: hover) {
134
- :host(:focus) {
135
- outline: none;
136
- background: rgba(var(--ion-color-base-rgb), 0.2);
137
- }
89
+ :host(.option-active) {
90
+ color: var(--ion-color-base);
138
91
  }
@@ -0,0 +1,18 @@
1
+ /*!
2
+ * (C) Ionic http://ionicframework.com - MIT License
3
+ */
4
+ import AxeBuilder from "@axe-core/playwright";
5
+ import { expect } from "@playwright/test";
6
+ import { configs, test } from "../../../../utils/test/playwright/index";
7
+ /**
8
+ * This behavior does not vary across directions
9
+ */
10
+ configs({ directions: ['ltr'] }).forEach(({ config, title }) => {
11
+ test.describe(title('picker column option: a11y'), () => {
12
+ test('should not have accessibility violations', async ({ page }) => {
13
+ await page.goto(`/src/components/picker-column-option/test/a11y`, config);
14
+ const results = await new AxeBuilder({ page }).analyze();
15
+ expect(results.violations).toEqual([]);
16
+ });
17
+ });
18
+ });
@@ -0,0 +1,37 @@
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
+ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
7
+ test.describe(title('picker-column-option: rendering'), () => {
8
+ test('picker option should not have visual regressions', async ({ page }) => {
9
+ await page.setContent(`
10
+ <ion-picker-column-option value="option">My Option</ion-picker-column-option>
11
+ `, config);
12
+ const option = page.locator('ion-picker-column-option');
13
+ await expect(option).toHaveScreenshot(screenshot('picker-column-option'));
14
+ });
15
+ test('disabled picker option should not have visual regressions', async ({ page }) => {
16
+ await page.setContent(`
17
+ <ion-picker-column-option disabled="true" value="option">My Option</ion-picker-column-option>
18
+ `, config);
19
+ const option = page.locator('ion-picker-column-option');
20
+ await expect(option).toHaveScreenshot(screenshot('disabled-picker-column-option'));
21
+ });
22
+ test('active picker option should not have visual regressions', async ({ page }) => {
23
+ await page.setContent(`
24
+ <ion-picker-column-option class="option-active" value="option">My Option</ion-picker-column-option>
25
+ `, config);
26
+ const option = page.locator('ion-picker-column-option');
27
+ await expect(option).toHaveScreenshot(screenshot('active-picker-column-option'));
28
+ });
29
+ test('disabled active picker option should not have visual regressions', async ({ page }) => {
30
+ await page.setContent(`
31
+ <ion-picker-column-option class="option-active" disabled="true" value="option">My Option</ion-picker-column-option>
32
+ `, config);
33
+ const option = page.locator('ion-picker-column-option');
34
+ await expect(option).toHaveScreenshot(screenshot('disabled-active-picker-column-option'));
35
+ });
36
+ });
37
+ });
@@ -0,0 +1,29 @@
1
+ /*!
2
+ * (C) Ionic http://ionicframework.com - MIT License
3
+ */
4
+ import { newSpecPage } from "@stencil/core/testing";
5
+ import { PickerColumnOption } from "../picker-column-option";
6
+ describe('picker column option', () => {
7
+ it('button should be enabled by default', async () => {
8
+ const page = await newSpecPage({
9
+ components: [PickerColumnOption],
10
+ html: `
11
+ <ion-picker-column-option value="test">Test</ion-picker-column-otion>
12
+ `,
13
+ });
14
+ const option = page.body.querySelector('ion-picker-column-option');
15
+ const button = option.shadowRoot.querySelector('button');
16
+ await expect(button.hasAttribute('disabled')).toEqual(false);
17
+ });
18
+ it('button should be disabled if specified', async () => {
19
+ const page = await newSpecPage({
20
+ components: [PickerColumnOption],
21
+ html: `
22
+ <ion-picker-column-option disabled="true" value="test">Test</ion-picker-column-otion>
23
+ `,
24
+ });
25
+ const option = page.body.querySelector('ion-picker-column-option');
26
+ const button = option.shadowRoot.querySelector('button');
27
+ await expect(button.hasAttribute('disabled')).toEqual(true);
28
+ });
29
+ });