@ionic/core 7.5.8-dev.11704294569.1abc989d → 7.5.8-dev.11705350665.1a40ee3a

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 (443) hide show
  1. package/components/action-sheet.js +1 -1
  2. package/components/alert.js +2 -2
  3. package/components/button.js +2 -2
  4. package/components/checkbox.js +2 -2
  5. package/components/data.js +1 -1
  6. package/components/index2.js +91 -0
  7. package/components/ion-back-button.js +1 -1
  8. package/components/ion-badge.js +2 -2
  9. package/components/ion-datetime.js +39 -30
  10. package/components/ion-fab-button.js +2 -2
  11. package/components/ion-input.js +2 -2
  12. package/components/ion-item-option.js +2 -2
  13. package/components/ion-loading.js +1 -1
  14. package/components/ion-menu-button.js +1 -1
  15. package/components/ion-picker-column-option.d.ts +11 -0
  16. package/components/ion-picker-column-option.js +9 -0
  17. package/components/ion-picker-column.js +2 -2
  18. package/components/ion-picker-legacy-column.d.ts +11 -0
  19. package/components/ion-picker-legacy-column.js +9 -0
  20. package/components/{ion-picker-internal.d.ts → ion-picker-legacy.d.ts} +4 -4
  21. package/components/ion-picker-legacy.js +309 -0
  22. package/components/ion-picker.js +1 -309
  23. package/components/ion-progress-bar.js +2 -2
  24. package/components/ion-range.js +2 -2
  25. package/components/ion-refresher-content.js +1 -1
  26. package/components/ion-refresher.js +1 -1
  27. package/components/ion-router-link.js +1 -1
  28. package/components/ion-searchbar.js +1 -1
  29. package/components/ion-segment-button.js +1 -1
  30. package/components/ion-select.js +2 -2
  31. package/components/ion-tab-bar.js +2 -2
  32. package/components/ion-textarea.js +2 -2
  33. package/components/ion-toast.js +2 -2
  34. package/components/ion-toggle.js +2 -2
  35. package/components/item.js +2 -2
  36. package/components/label.js +1 -1
  37. package/components/overlays.js +6 -3
  38. package/components/picker-column-option.js +122 -0
  39. package/components/picker-column.js +351 -322
  40. package/components/picker-column2.js +379 -0
  41. package/components/{picker-internal.js → picker.js} +29 -22
  42. package/components/radio.js +2 -2
  43. package/components/select-popover.js +1 -1
  44. package/css/core.css +44 -35
  45. package/css/core.css.map +1 -1
  46. package/css/global.bundle.css +1 -1
  47. package/css/ionic.bundle.css +1 -1
  48. package/css/ionic.bundle.css.map +1 -1
  49. package/css/typography.css +1 -1
  50. package/dist/cjs/{data-36b9094e.js → data-e7526b58.js} +1 -1
  51. package/dist/cjs/{index-d4c2e02c.js → index-ec51e99c.js} +93 -2
  52. package/dist/cjs/index.cjs.js +5 -5
  53. package/dist/cjs/ion-action-sheet.cjs.entry.js +2 -2
  54. package/dist/cjs/ion-alert.cjs.entry.js +3 -3
  55. package/dist/cjs/ion-app_8.cjs.entry.js +1 -1
  56. package/dist/cjs/ion-avatar_3.cjs.entry.js +2 -2
  57. package/dist/cjs/ion-back-button.cjs.entry.js +1 -1
  58. package/dist/cjs/ion-button_2.cjs.entry.js +2 -2
  59. package/dist/cjs/ion-checkbox.cjs.entry.js +2 -2
  60. package/dist/cjs/ion-datetime-button.cjs.entry.js +1 -1
  61. package/dist/cjs/ion-datetime_3.cjs.entry.js +30 -36
  62. package/dist/cjs/ion-fab_3.cjs.entry.js +2 -2
  63. package/dist/cjs/ion-input.cjs.entry.js +2 -2
  64. package/dist/cjs/ion-item-option_3.cjs.entry.js +2 -2
  65. package/dist/cjs/ion-item_8.cjs.entry.js +3 -3
  66. package/dist/cjs/ion-loading.cjs.entry.js +2 -2
  67. package/dist/cjs/ion-menu_3.cjs.entry.js +2 -2
  68. package/dist/cjs/ion-modal.cjs.entry.js +2 -2
  69. package/dist/cjs/ion-nav_2.cjs.entry.js +2 -1
  70. package/dist/cjs/ion-picker-column-option.cjs.entry.js +104 -0
  71. package/dist/cjs/{ion-picker-column-internal.cjs.entry.js → ion-picker-column.cjs.entry.js} +104 -87
  72. package/dist/cjs/{ion-picker-internal.cjs.entry.js → ion-picker.cjs.entry.js} +26 -19
  73. package/dist/cjs/ion-popover.cjs.entry.js +2 -2
  74. package/dist/cjs/ion-progress-bar.cjs.entry.js +2 -2
  75. package/dist/cjs/ion-radio_2.cjs.entry.js +2 -2
  76. package/dist/cjs/ion-range.cjs.entry.js +2 -2
  77. package/dist/cjs/ion-refresher_2.cjs.entry.js +2 -2
  78. package/dist/cjs/ion-route_4.cjs.entry.js +1 -1
  79. package/dist/cjs/ion-searchbar.cjs.entry.js +1 -1
  80. package/dist/cjs/ion-segment_2.cjs.entry.js +1 -1
  81. package/dist/cjs/ion-select_3.cjs.entry.js +4 -4
  82. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +2 -2
  83. package/dist/cjs/ion-textarea.cjs.entry.js +2 -2
  84. package/dist/cjs/ion-toast.cjs.entry.js +3 -3
  85. package/dist/cjs/ion-toggle.cjs.entry.js +2 -2
  86. package/dist/cjs/ionic.cjs.js +1 -1
  87. package/dist/cjs/{ios.transition-a4ffb5a2.js → ios.transition-039d6aeb.js} +3 -1
  88. package/dist/cjs/loader.cjs.js +1 -1
  89. package/dist/cjs/{md.transition-292abe1c.js → md.transition-ce763350.js} +3 -1
  90. package/dist/cjs/{overlays-2c6b1072.js → overlays-e8e05b0e.js} +6 -3
  91. package/dist/collection/collection-manifest.json +7 -6
  92. package/dist/collection/components/action-sheet/action-sheet.ios.css +3 -3
  93. package/dist/collection/components/action-sheet/test/a11y/action-sheet.e2e.js +14 -23
  94. package/dist/collection/components/alert/alert.ios.css +6 -6
  95. package/dist/collection/components/alert/alert.md.css +6 -6
  96. package/dist/collection/components/alert/test/a11y/alert.e2e.js +9 -22
  97. package/dist/collection/components/back-button/back-button.ios.css +1 -1
  98. package/dist/collection/components/back-button/test/a11y/back-button.e2e.js +0 -21
  99. package/dist/collection/components/badge/badge.ios.css +1 -1
  100. package/dist/collection/components/badge/badge.md.css +1 -1
  101. package/dist/collection/components/badge/test/a11y/badge.e2e.js +0 -18
  102. package/dist/collection/components/button/button.ios.css +11 -11
  103. package/dist/collection/components/button/button.md.css +9 -9
  104. package/dist/collection/components/button/test/a11y/button.e2e.js +0 -48
  105. package/dist/collection/components/button/test/wrap/button.e2e.js +12 -24
  106. package/dist/collection/components/checkbox/checkbox.ios.css +2 -2
  107. package/dist/collection/components/checkbox/checkbox.md.css +2 -2
  108. package/dist/collection/components/checkbox/test/a11y/checkbox.e2e.js +2 -11
  109. package/dist/collection/components/datetime/datetime.ios.css +8 -13
  110. package/dist/collection/components/datetime/datetime.js +19 -16
  111. package/dist/collection/components/datetime/datetime.md.css +8 -13
  112. package/dist/collection/components/datetime/test/datetime.e2e.js +2 -2
  113. package/dist/collection/components/datetime/test/disabled/datetime.spec.js +4 -4
  114. package/dist/collection/components/datetime/test/locale/datetime.e2e.js +2 -2
  115. package/dist/collection/components/datetime/test/minmax/datetime.e2e.js +6 -6
  116. package/dist/collection/components/datetime/test/prefer-wheel/datetime.e2e.js +43 -41
  117. package/dist/collection/components/datetime/test/presentation/datetime.e2e.js +1 -1
  118. package/dist/collection/components/datetime/test/readonly/datetime.e2e.js +2 -2
  119. package/dist/collection/components/datetime/test/values/datetime.e2e.js +15 -12
  120. package/dist/collection/components/datetime/utils/data.js +1 -1
  121. package/dist/collection/components/fab-button/fab-button.ios.css +13 -13
  122. package/dist/collection/components/fab-button/fab-button.md.css +4 -4
  123. package/dist/collection/components/fab-button/test/a11y/fab-button.e2e.js +0 -50
  124. package/dist/collection/components/input/input.ios.css +3 -3
  125. package/dist/collection/components/input/input.md.css +3 -3
  126. package/dist/collection/components/input/test/a11y/input.e2e.js +3 -35
  127. package/dist/collection/components/item/item.ios.css +3 -3
  128. package/dist/collection/components/item/item.md.css +4 -4
  129. package/dist/collection/components/item-option/item-option.ios.css +2 -2
  130. package/dist/collection/components/item-option/item-option.md.css +1 -1
  131. package/dist/collection/components/item-sliding/test/a11y/item-sliding.e2e.js +0 -28
  132. package/dist/collection/components/label/label.md.css +1 -1
  133. package/dist/collection/components/label/test/a11y/label.e2e.js +0 -20
  134. package/dist/collection/components/loading/loading.md.css +1 -1
  135. package/dist/collection/components/loading/test/a11y/loading.e2e.js +5 -21
  136. package/dist/collection/components/menu-button/menu-button.ios.css +1 -1
  137. package/dist/collection/components/menu-button/test/a11y/menu-button.e2e.js +0 -14
  138. package/dist/collection/components/picker/picker.ios.css +112 -211
  139. package/dist/collection/components/picker/picker.js +472 -744
  140. package/dist/collection/components/picker/picker.md.css +108 -198
  141. package/dist/collection/components/picker/test/a11y/picker.e2e.js +15 -0
  142. package/dist/collection/components/picker/test/basic/picker.e2e.js +99 -13
  143. package/dist/collection/components/picker/test/custom/picker.e2e.js +85 -0
  144. package/dist/collection/components/{picker-internal/test/keyboard-entry/picker-internal.e2e.js → picker/test/keyboard-entry/picker.e2e.js} +63 -32
  145. package/dist/collection/components/{picker-column-internal/picker-column-internal.md.css → picker-column/picker-column.css} +96 -83
  146. package/dist/collection/components/picker-column/picker-column.js +497 -335
  147. package/dist/collection/components/{picker-column-internal/test/basic/picker-column-internal.e2e.js → picker-column/test/basic/picker-column.e2e.js} +8 -8
  148. package/dist/collection/components/picker-column/test/disabled/picker-column.e2e.js +91 -0
  149. package/dist/collection/components/picker-column/test/slots/picker-column.e2e.js +39 -0
  150. package/dist/collection/components/picker-column-option/picker-column-option.ios.css +87 -0
  151. package/dist/collection/components/picker-column-option/picker-column-option.js +173 -0
  152. package/dist/collection/components/{picker-column-internal/picker-column-internal.ios.css → picker-column-option/picker-column-option.md.css} +6 -53
  153. package/dist/collection/components/picker-column-option/test/a11y/picker-column-option.e2e.js +18 -0
  154. package/dist/collection/components/picker-column-option/test/basic/picker-column-option.e2e.js +37 -0
  155. package/dist/collection/components/picker-column-option/test/picker-column-option.spec.js +29 -0
  156. package/dist/collection/components/{picker-internal/picker-internal.md.css → picker-legacy/picker.ios.css} +207 -98
  157. package/dist/collection/components/picker-legacy/picker.js +817 -0
  158. package/dist/collection/components/{picker-internal/picker-internal.ios.css → picker-legacy/picker.md.css} +192 -100
  159. package/dist/collection/components/picker-legacy/test/basic/picker.e2e.js +25 -0
  160. package/dist/collection/components/{picker → picker-legacy}/test/is-open/picker.e2e.js +4 -4
  161. package/dist/collection/components/{picker → picker-legacy}/test/picker-id.spec.js +5 -5
  162. package/dist/collection/components/{picker → picker-legacy}/test/trigger/picker.e2e.js +1 -1
  163. package/dist/collection/components/picker-legacy-column/picker-column.js +419 -0
  164. package/dist/collection/components/{picker-column → picker-legacy-column}/picker-column.md.css +1 -1
  165. package/dist/collection/components/{picker-column → picker-legacy-column}/test/picker-column-aria.spec.js +3 -3
  166. package/dist/collection/components/{picker-column → picker-legacy-column}/test/picker-column-dynamic.spec.js +2 -2
  167. package/dist/collection/components/{picker-column → picker-legacy-column}/test/picker-column.spec.js +2 -2
  168. package/dist/collection/components/{picker-column → picker-legacy-column}/test/standalone/picker-column.e2e.js +3 -3
  169. package/dist/collection/components/progress-bar/progress-bar.ios.css +2 -2
  170. package/dist/collection/components/progress-bar/progress-bar.md.css +2 -2
  171. package/dist/collection/components/radio/radio.ios.css +2 -2
  172. package/dist/collection/components/radio/radio.md.css +2 -2
  173. package/dist/collection/components/radio/test/a11y/radio.e2e.js +6 -44
  174. package/dist/collection/components/range/range.ios.css +1 -1
  175. package/dist/collection/components/range/range.md.css +3 -3
  176. package/dist/collection/components/range/test/a11y/range.e2e.js +8 -18
  177. package/dist/collection/components/refresher/refresher.md.css +2 -2
  178. package/dist/collection/components/refresher-content/refresher-content.js +1 -1
  179. package/dist/collection/components/router-link/router-link.css +1 -1
  180. package/dist/collection/components/searchbar/searchbar.ios.css +1 -1
  181. package/dist/collection/components/segment/test/a11y/segment.e2e.js +0 -23
  182. package/dist/collection/components/segment-button/segment-button.md.css +2 -2
  183. package/dist/collection/components/select/select.ios.css +3 -3
  184. package/dist/collection/components/select/select.md.css +3 -3
  185. package/dist/collection/components/select/test/a11y/select.e2e.js +4 -59
  186. package/dist/collection/components/select-popover/select-popover.md.css +4 -4
  187. package/dist/collection/components/tab-bar/tab-bar.ios.css +1 -1
  188. package/dist/collection/components/tab-bar/tab-bar.md.css +1 -1
  189. package/dist/collection/components/textarea/test/a11y/textarea.e2e.js +3 -35
  190. package/dist/collection/components/textarea/textarea.ios.css +3 -3
  191. package/dist/collection/components/textarea/textarea.md.css +3 -3
  192. package/dist/collection/components/toast/test/a11y/toast.e2e.js +24 -56
  193. package/dist/collection/components/toast/toast.ios.css +1 -1
  194. package/dist/collection/components/toast/toast.md.css +2 -2
  195. package/dist/collection/components/toggle/test/a11y/toggle.e2e.js +2 -8
  196. package/dist/collection/components/toggle/toggle.ios.css +1 -1
  197. package/dist/collection/components/toggle/toggle.md.css +2 -2
  198. package/dist/collection/css/test/a11y/typography.e2e.js +0 -18
  199. package/dist/collection/utils/overlays.js +6 -3
  200. package/dist/collection/utils/test/playwright/generator.js +0 -1
  201. package/dist/collection/utils/test/playwright/page/utils/set-content.js +1 -1
  202. package/dist/collection/utils/transition/index.js +91 -0
  203. package/dist/docs.json +472 -24
  204. package/dist/esm/{data-f5c75b4e.js → data-4b9508c9.js} +1 -1
  205. package/dist/esm/{index-d8817fb0.js → index-933484ae.js} +93 -2
  206. package/dist/esm/index.js +5 -5
  207. package/dist/esm/ion-action-sheet.entry.js +2 -2
  208. package/dist/esm/ion-alert.entry.js +3 -3
  209. package/dist/esm/ion-app_8.entry.js +1 -1
  210. package/dist/esm/ion-avatar_3.entry.js +2 -2
  211. package/dist/esm/ion-back-button.entry.js +1 -1
  212. package/dist/esm/ion-button_2.entry.js +2 -2
  213. package/dist/esm/ion-checkbox.entry.js +2 -2
  214. package/dist/esm/ion-datetime-button.entry.js +1 -1
  215. package/dist/esm/ion-datetime_3.entry.js +29 -35
  216. package/dist/esm/ion-fab_3.entry.js +2 -2
  217. package/dist/esm/ion-input.entry.js +2 -2
  218. package/dist/esm/ion-item-option_3.entry.js +2 -2
  219. package/dist/esm/ion-item_8.entry.js +3 -3
  220. package/dist/esm/ion-loading.entry.js +2 -2
  221. package/dist/esm/ion-menu_3.entry.js +2 -2
  222. package/dist/esm/ion-modal.entry.js +2 -2
  223. package/dist/esm/ion-nav_2.entry.js +2 -1
  224. package/dist/esm/ion-picker-column-option.entry.js +100 -0
  225. package/dist/esm/{ion-picker-column-internal.entry.js → ion-picker-column.entry.js} +104 -87
  226. package/dist/esm/{ion-picker-internal.entry.js → ion-picker.entry.js} +26 -19
  227. package/dist/esm/ion-popover.entry.js +2 -2
  228. package/dist/esm/ion-progress-bar.entry.js +2 -2
  229. package/dist/esm/ion-radio_2.entry.js +2 -2
  230. package/dist/esm/ion-range.entry.js +2 -2
  231. package/dist/esm/ion-refresher_2.entry.js +2 -2
  232. package/dist/esm/ion-route_4.entry.js +1 -1
  233. package/dist/esm/ion-searchbar.entry.js +1 -1
  234. package/dist/esm/ion-segment_2.entry.js +1 -1
  235. package/dist/esm/ion-select_3.entry.js +4 -4
  236. package/dist/esm/ion-tab-bar_2.entry.js +2 -2
  237. package/dist/esm/ion-textarea.entry.js +2 -2
  238. package/dist/esm/ion-toast.entry.js +3 -3
  239. package/dist/esm/ion-toggle.entry.js +2 -2
  240. package/dist/esm/ionic.js +1 -1
  241. package/dist/esm/{ios.transition-fd16bec1.js → ios.transition-9e42996d.js} +3 -1
  242. package/dist/esm/loader.js +1 -1
  243. package/dist/esm/{md.transition-94ac93e1.js → md.transition-8cbb4e1d.js} +3 -1
  244. package/dist/esm/{overlays-d23ea6e1.js → overlays-fbc5cab5.js} +6 -3
  245. package/dist/esm-es5/index-933484ae.js +4 -0
  246. package/dist/esm-es5/index.js +1 -1
  247. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  248. package/dist/esm-es5/ion-alert.entry.js +1 -1
  249. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  250. package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
  251. package/dist/esm-es5/ion-back-button.entry.js +1 -1
  252. package/dist/esm-es5/ion-button_2.entry.js +1 -1
  253. package/dist/esm-es5/ion-checkbox.entry.js +1 -1
  254. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  255. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  256. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  257. package/dist/esm-es5/ion-input.entry.js +1 -1
  258. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  259. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  260. package/dist/esm-es5/ion-loading.entry.js +1 -1
  261. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  262. package/dist/esm-es5/ion-modal.entry.js +1 -1
  263. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  264. package/dist/esm-es5/ion-picker-column-option.entry.js +4 -0
  265. package/dist/esm-es5/ion-picker-column.entry.js +4 -0
  266. package/dist/esm-es5/ion-picker.entry.js +4 -0
  267. package/dist/esm-es5/ion-popover.entry.js +1 -1
  268. package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
  269. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  270. package/dist/esm-es5/ion-range.entry.js +1 -1
  271. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  272. package/dist/esm-es5/ion-route_4.entry.js +1 -1
  273. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  274. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  275. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  276. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  277. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  278. package/dist/esm-es5/ion-toast.entry.js +1 -1
  279. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  280. package/dist/esm-es5/ionic.js +1 -1
  281. package/dist/esm-es5/ios.transition-9e42996d.js +4 -0
  282. package/dist/esm-es5/loader.js +1 -1
  283. package/dist/esm-es5/md.transition-8cbb4e1d.js +4 -0
  284. package/dist/esm-es5/overlays-fbc5cab5.js +4 -0
  285. package/dist/html.html-data.json +152 -1
  286. package/dist/ionic/index.esm.js +1 -1
  287. package/dist/ionic/ionic.esm.js +1 -1
  288. package/dist/ionic/{p-fff7a57e.system.js → p-16bd5224.system.js} +1 -1
  289. package/dist/ionic/p-17da5ed1.entry.js +4 -0
  290. package/dist/ionic/{p-be6344dd.entry.js → p-18ba8221.entry.js} +1 -1
  291. package/dist/ionic/{p-29bf41bd.entry.js → p-21c3515a.entry.js} +1 -1
  292. package/dist/ionic/{p-1de103b7.entry.js → p-22e5af95.entry.js} +1 -1
  293. package/dist/ionic/{p-02e066a0.entry.js → p-232d1f22.entry.js} +1 -1
  294. package/dist/ionic/{p-8e086176.system.entry.js → p-26798a7b.system.entry.js} +1 -1
  295. package/dist/ionic/{p-b1a2a195.system.entry.js → p-27bcbbc7.system.entry.js} +1 -1
  296. package/dist/ionic/p-294725bb.js +4 -0
  297. package/dist/ionic/{p-6f96f7b1.system.entry.js → p-2ab4e925.system.entry.js} +1 -1
  298. package/dist/ionic/{p-98c798de.system.entry.js → p-32303650.system.entry.js} +1 -1
  299. package/dist/ionic/{p-1286049a.entry.js → p-34c39c48.entry.js} +1 -1
  300. package/dist/ionic/p-36d194c5.entry.js +4 -0
  301. package/dist/ionic/p-3993ae66.entry.js +4 -0
  302. package/dist/ionic/{p-55a0cd33.entry.js → p-3f6270b3.entry.js} +1 -1
  303. package/dist/ionic/{p-0339b688.system.entry.js → p-3fd26bd6.system.entry.js} +1 -1
  304. package/dist/ionic/p-400b61c7.system.entry.js +4 -0
  305. package/dist/ionic/{p-d51019a8.entry.js → p-42ba3902.entry.js} +1 -1
  306. package/dist/ionic/{p-ed25b7cc.system.entry.js → p-464975c5.system.entry.js} +1 -1
  307. package/dist/ionic/{p-023b1cf4.entry.js → p-4911a5d6.entry.js} +1 -1
  308. package/dist/ionic/p-49c5f1a3.js +4 -0
  309. package/dist/ionic/{p-7c7e21a7.entry.js → p-4a31c99f.entry.js} +1 -1
  310. package/dist/ionic/{p-7a63e024.entry.js → p-4bee86bd.entry.js} +1 -1
  311. package/dist/ionic/p-510d9b43.js +4 -0
  312. package/dist/ionic/{p-0ebcff25.entry.js → p-51a087d6.entry.js} +1 -1
  313. package/dist/ionic/p-5a1aac13.system.entry.js +4 -0
  314. package/dist/ionic/{p-12869199.system.entry.js → p-5bebc7b3.system.entry.js} +1 -1
  315. package/dist/ionic/{p-5b834053.entry.js → p-5d42b6b4.entry.js} +1 -1
  316. package/dist/ionic/{p-2f2293da.system.entry.js → p-6555a5e7.system.entry.js} +1 -1
  317. package/dist/ionic/{p-60b386c9.system.entry.js → p-65e27aae.system.entry.js} +1 -1
  318. package/dist/ionic/{p-cef8c5c2.entry.js → p-6b7c55cd.entry.js} +1 -1
  319. package/dist/ionic/{p-0941a5d7.entry.js → p-6d72fb44.entry.js} +1 -1
  320. package/dist/ionic/p-6e70dd1a.system.entry.js +4 -0
  321. package/dist/ionic/{p-d1025b3d.entry.js → p-6fbecbda.entry.js} +1 -1
  322. package/dist/ionic/{p-ad8bed54.system.entry.js → p-6fd64e7c.system.entry.js} +1 -1
  323. package/dist/ionic/{p-0afef6b9.entry.js → p-73190c5f.entry.js} +1 -1
  324. package/dist/ionic/{p-c7c7c110.entry.js → p-73aa7604.entry.js} +1 -1
  325. package/dist/ionic/{p-5b20db28.entry.js → p-7b725280.entry.js} +1 -1
  326. package/dist/ionic/{p-de74582b.system.entry.js → p-8017aad2.system.entry.js} +1 -1
  327. package/dist/ionic/{p-3b568d18.entry.js → p-8adc9a45.entry.js} +1 -1
  328. package/dist/ionic/p-8c0e5060.system.js +4 -0
  329. package/dist/ionic/p-8e42850f.entry.js +4 -0
  330. package/dist/ionic/{p-5fbfa8c9.entry.js → p-8f5d30f5.entry.js} +1 -1
  331. package/dist/ionic/p-8fa6583d.system.js +4 -0
  332. package/dist/ionic/p-91af3c52.system.entry.js +4 -0
  333. package/dist/ionic/{p-3e625023.system.entry.js → p-93000a81.system.entry.js} +1 -1
  334. package/dist/ionic/{p-90483001.system.entry.js → p-96dbbac1.system.entry.js} +1 -1
  335. package/dist/ionic/p-9e48593b.system.js +4 -0
  336. package/dist/ionic/{p-a8e90d15.system.entry.js → p-a225bf0f.system.entry.js} +1 -1
  337. package/dist/ionic/{p-57798ba6.entry.js → p-a8baa23e.entry.js} +1 -1
  338. package/dist/ionic/{p-bcd073dd.entry.js → p-a98dc0c1.entry.js} +1 -1
  339. package/dist/ionic/{p-9588396d.entry.js → p-a9a80f5b.entry.js} +1 -1
  340. package/dist/ionic/{p-098f4d12.system.entry.js → p-ab9456e9.system.entry.js} +1 -1
  341. package/dist/ionic/{p-ebcf6eca.entry.js → p-ae712b95.entry.js} +1 -1
  342. package/dist/ionic/p-afcf4620.entry.js +4 -0
  343. package/dist/ionic/{p-ddb30596.entry.js → p-b133e9b4.entry.js} +1 -1
  344. package/dist/ionic/{p-d32188f3.system.entry.js → p-b4d31b30.system.entry.js} +1 -1
  345. package/dist/ionic/p-b7010c69.system.entry.js +4 -0
  346. package/dist/ionic/{p-7828a27f.system.entry.js → p-b752714f.system.entry.js} +1 -1
  347. package/dist/ionic/p-c006d974.entry.js +4 -0
  348. package/dist/ionic/{p-ec040c06.system.entry.js → p-c18de88a.system.entry.js} +1 -1
  349. package/dist/ionic/p-c41bff4e.system.entry.js +4 -0
  350. package/dist/ionic/{p-76c94634.system.entry.js → p-c9a21dfd.system.entry.js} +1 -1
  351. package/dist/ionic/p-ca8938f4.js +4 -0
  352. package/dist/ionic/p-cde52378.system.entry.js +4 -0
  353. package/dist/ionic/{p-1e57bd24.entry.js → p-d3c773d0.entry.js} +1 -1
  354. package/dist/ionic/p-d9ec6cf0.system.js +4 -0
  355. package/dist/ionic/p-e3584231.system.js +1 -1
  356. package/dist/ionic/{p-f957d584.system.entry.js → p-e7ea9815.system.entry.js} +1 -1
  357. package/dist/ionic/{p-93f25d0d.system.entry.js → p-e8e86f69.system.entry.js} +1 -1
  358. package/dist/ionic/{p-31cf9613.entry.js → p-ea69616e.entry.js} +1 -1
  359. package/dist/ionic/{p-d39db09e.system.entry.js → p-ef126ae8.system.entry.js} +1 -1
  360. package/dist/ionic/{p-5ff60387.system.entry.js → p-f6160677.system.entry.js} +1 -1
  361. package/dist/ionic/{p-9eec42cc.system.entry.js → p-f910cc73.system.entry.js} +1 -1
  362. package/dist/ionic/{p-193ff029.system.entry.js → p-fbf3a689.system.entry.js} +1 -1
  363. package/dist/ionic/p-ffd5dba4.system.entry.js +4 -0
  364. package/dist/types/components/datetime/utils/data.d.ts +11 -7
  365. package/dist/types/components/picker/picker-interfaces.d.ts +8 -0
  366. package/dist/types/components/picker/picker.d.ts +75 -129
  367. package/dist/types/components/picker-column/picker-column-interfaces.d.ts +4 -0
  368. package/dist/types/components/picker-column/picker-column.d.ts +99 -39
  369. package/dist/types/components/picker-column-option/picker-column-option.d.ts +66 -0
  370. package/dist/types/components/picker-legacy/picker.d.ts +158 -0
  371. package/dist/types/components/picker-legacy-column/picker-column.d.ts +46 -0
  372. package/dist/types/components.d.ts +154 -122
  373. package/dist/types/interface.d.ts +1 -1
  374. package/dist/types/utils/config.d.ts +8 -2
  375. package/dist/types/utils/overlays.d.ts +5 -2
  376. package/hydrate/index.js +1617 -1404
  377. package/package.json +1 -1
  378. package/components/ion-picker-column-internal.d.ts +0 -11
  379. package/components/ion-picker-column-internal.js +0 -9
  380. package/components/ion-picker-internal.js +0 -9
  381. package/components/picker-column-internal.js +0 -390
  382. package/css/themes/dark.always.css +0 -122
  383. package/css/themes/dark.always.css.map +0 -1
  384. package/css/themes/dark.class.css +0 -122
  385. package/css/themes/dark.class.css.map +0 -1
  386. package/css/themes/dark.css +0 -3
  387. package/css/themes/dark.css.map +0 -1
  388. package/css/themes/dark.system.css +0 -124
  389. package/css/themes/dark.system.css.map +0 -1
  390. package/dist/collection/components/picker-column-internal/picker-column-internal.js +0 -565
  391. package/dist/collection/components/picker-column-internal/test/disabled/picker-column-internal.e2e.js +0 -162
  392. package/dist/collection/components/picker-internal/picker-internal.js +0 -544
  393. package/dist/collection/components/picker-internal/test/a11y/picker-internal.e2e.js +0 -31
  394. package/dist/collection/components/picker-internal/test/basic/picker-internal.e2e.js +0 -118
  395. package/dist/collection/components/progress-bar/test/a11y/progress-bar.e2e.js +0 -24
  396. package/dist/collection/components/refresher/test/a11y/refresher.e2e.js +0 -25
  397. package/dist/collection/components/router-link/test/a11y/router-link.e2e.js +0 -23
  398. package/dist/collection/components/select-popover/test/a11y/select-popover.e2e.js +0 -32
  399. package/dist/collection/themes/test/colors/theme.e2e.js +0 -114
  400. package/dist/esm-es5/index-d8817fb0.js +0 -4
  401. package/dist/esm-es5/ion-picker-column-internal.entry.js +0 -4
  402. package/dist/esm-es5/ion-picker-internal.entry.js +0 -4
  403. package/dist/esm-es5/ios.transition-fd16bec1.js +0 -4
  404. package/dist/esm-es5/md.transition-94ac93e1.js +0 -4
  405. package/dist/esm-es5/overlays-d23ea6e1.js +0 -4
  406. package/dist/ionic/p-2dd0355d.system.entry.js +0 -4
  407. package/dist/ionic/p-30029cc2.system.js +0 -4
  408. package/dist/ionic/p-31158892.js +0 -4
  409. package/dist/ionic/p-3e13501a.system.entry.js +0 -4
  410. package/dist/ionic/p-4890093d.js +0 -4
  411. package/dist/ionic/p-535d2a67.entry.js +0 -4
  412. package/dist/ionic/p-57477107.system.js +0 -4
  413. package/dist/ionic/p-67da080d.entry.js +0 -4
  414. package/dist/ionic/p-73ea8f82.system.entry.js +0 -4
  415. package/dist/ionic/p-80fa068e.entry.js +0 -4
  416. package/dist/ionic/p-9c229210.system.entry.js +0 -4
  417. package/dist/ionic/p-9eae578e.system.entry.js +0 -4
  418. package/dist/ionic/p-ab11130c.system.js +0 -4
  419. package/dist/ionic/p-c14f8ac8.js +0 -4
  420. package/dist/ionic/p-c9e07b2f.entry.js +0 -4
  421. package/dist/ionic/p-ccc2fb62.system.entry.js +0 -4
  422. package/dist/ionic/p-cce9f61a.system.entry.js +0 -4
  423. package/dist/ionic/p-d7e9a0ac.entry.js +0 -4
  424. package/dist/ionic/p-e4d90573.js +0 -4
  425. package/dist/ionic/p-f7a36cd0.system.js +0 -4
  426. package/dist/types/components/picker-column-internal/picker-column-internal-interfaces.d.ts +0 -5
  427. package/dist/types/components/picker-column-internal/picker-column-internal.d.ts +0 -102
  428. package/dist/types/components/picker-internal/picker-internal-interfaces.d.ts +0 -8
  429. package/dist/types/components/picker-internal/picker-internal.d.ts +0 -102
  430. /package/dist/collection/components/{picker-internal/picker-internal-interfaces.js → picker/picker-interfaces.js} +0 -0
  431. /package/dist/collection/components/{picker-column-internal/picker-column-internal-interfaces.js → picker-column/picker-column-interfaces.js} +0 -0
  432. /package/dist/collection/components/{picker → picker-legacy}/animations/ios.enter.js +0 -0
  433. /package/dist/collection/components/{picker → picker-legacy}/animations/ios.leave.js +0 -0
  434. /package/dist/collection/components/{picker → picker-legacy}/picker-interface.js +0 -0
  435. /package/dist/collection/components/{picker-column → picker-legacy-column}/picker-column.ios.css +0 -0
  436. /package/dist/collection/components/{picker-column → picker-legacy-column}/test/test.utils.js +0 -0
  437. /package/dist/esm-es5/{data-f5c75b4e.js → data-4b9508c9.js} +0 -0
  438. /package/dist/ionic/{p-2aea8b1e.js → p-368f5215.js} +0 -0
  439. /package/dist/ionic/{p-82e3d633.system.js → p-f58981c2.system.js} +0 -0
  440. /package/dist/types/components/{picker → picker-legacy}/animations/ios.enter.d.ts +0 -0
  441. /package/dist/types/components/{picker → picker-legacy}/animations/ios.leave.d.ts +0 -0
  442. /package/dist/types/components/{picker → picker-legacy}/picker-interface.d.ts +0 -0
  443. /package/dist/types/components/{picker-column → picker-legacy-column}/test/test.utils.d.ts +0 -0
@@ -4,28 +4,18 @@
4
4
  import AxeBuilder from "@axe-core/playwright";
5
5
  import { expect } from "@playwright/test";
6
6
  import { configs, test } from "../../../../utils/test/playwright/index";
7
- configs({ directions: ['ltr'], themes: ['light', 'dark'] }).forEach(({ title, config }) => {
7
+ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
8
8
  test.describe(title('range: a11y'), () => {
9
9
  test('should not have accessibility violations', async ({ page }) => {
10
- await page.setContent(`
11
- <main>
12
- <ion-range value="50"><span slot="label">my label</span></ion-range>
13
- <ion-range label="my label"></ion-range>
14
- <ion-range aria-label="my aria label"></ion-range>
15
- <ion-range>
16
- <span slot="label">temperature</span>
17
- <ion-icon name="snow" slot="start" aria-hidden="true"></ion-icon>
18
- <ion-icon name="flame" slot="end" aria-hidden="true"></ion-icon>
19
- </ion-range>
20
- </main>
21
- `, config);
22
- const results = await new AxeBuilder({ page }).analyze();
10
+ await page.goto(`/src/components/range/test/a11y`, config);
11
+ /**
12
+ * Axe does not take <slot> elements into account
13
+ * when checking color-contrast. As a result, it will
14
+ * incorrectly report color-contrast issues: https://github.com/dequelabs/axe-core/issues/3329
15
+ */
16
+ const results = await new AxeBuilder({ page }).disableRules('color-contrast').analyze();
23
17
  expect(results.violations).toEqual([]);
24
18
  });
25
- });
26
- });
27
- configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
28
- test.describe(title('range: a11y'), () => {
29
19
  test('should not have visual regressions', async ({ page }) => {
30
20
  await page.setContent(`<ion-app>
31
21
  <ion-content>
@@ -260,7 +260,7 @@ ion-refresher.refresher-native ion-spinner {
260
260
  margin-bottom: 0;
261
261
  width: 24px;
262
262
  height: 24px;
263
- color: var(--ion-color-primary, #0054e9);
263
+ color: var(--ion-color-primary, #3880ff);
264
264
  }
265
265
  ion-refresher.refresher-native .spinner-arrow-container {
266
266
  display: inherit;
@@ -282,7 +282,7 @@ ion-refresher.refresher-native .arrow-container ion-icon {
282
282
  right: 0;
283
283
  bottom: -4px;
284
284
  position: absolute;
285
- color: var(--ion-color-primary, #0054e9);
285
+ color: var(--ion-color-primary, #3880ff);
286
286
  font-size: 12px;
287
287
  }
288
288
  ion-refresher.refresher-native.refresher-pulling ion-refresher-content .refresher-pulling, ion-refresher.refresher-native.refresher-ready ion-refresher-content .refresher-pulling {
@@ -46,7 +46,7 @@ export class RefresherContent {
46
46
  const pullingIcon = this.pullingIcon;
47
47
  const hasSpinner = pullingIcon != null && SPINNERS[pullingIcon] !== undefined;
48
48
  const mode = getIonMode(this);
49
- return (h(Host, { class: mode }, h("div", { class: "refresher-pulling" }, this.pullingIcon && hasSpinner && (h("div", { class: "refresher-pulling-icon" }, h("div", { class: "spinner-arrow-container" }, h("ion-spinner", { name: this.pullingIcon, "aria-label": "pulling icon", paused: true }), mode === 'md' && this.pullingIcon === 'circular' && (h("div", { class: "arrow-container" }, h("ion-icon", { icon: caretBackSharp, "aria-hidden": "true" })))))), this.pullingIcon && !hasSpinner && (h("div", { class: "refresher-pulling-icon" }, h("ion-icon", { icon: this.pullingIcon, lazy: false, "aria-hidden": "true" }))), this.pullingText !== undefined && this.renderPullingText()), h("div", { class: "refresher-refreshing" }, this.refreshingSpinner && (h("div", { class: "refresher-refreshing-icon" }, h("ion-spinner", { name: this.refreshingSpinner, "aria-label": "refreshing icon" }))), this.refreshingText !== undefined && this.renderRefreshingText())));
49
+ return (h(Host, { class: mode }, h("div", { class: "refresher-pulling" }, this.pullingIcon && hasSpinner && (h("div", { class: "refresher-pulling-icon" }, h("div", { class: "spinner-arrow-container" }, h("ion-spinner", { name: this.pullingIcon, paused: true }), mode === 'md' && this.pullingIcon === 'circular' && (h("div", { class: "arrow-container" }, h("ion-icon", { icon: caretBackSharp, "aria-hidden": "true" })))))), this.pullingIcon && !hasSpinner && (h("div", { class: "refresher-pulling-icon" }, h("ion-icon", { icon: this.pullingIcon, lazy: false, "aria-hidden": "true" }))), this.pullingText !== undefined && this.renderPullingText()), h("div", { class: "refresher-refreshing" }, this.refreshingSpinner && (h("div", { class: "refresher-refreshing-icon" }, h("ion-spinner", { name: this.refreshingSpinner }))), this.refreshingText !== undefined && this.renderRefreshingText())));
50
50
  }
51
51
  static get is() { return "ion-refresher-content"; }
52
52
  static get properties() {
@@ -59,7 +59,7 @@
59
59
  * @prop --color: Text color of the router link
60
60
  */
61
61
  --background: transparent;
62
- --color: var(--ion-color-primary, #0054e9);
62
+ --color: var(--ion-color-primary, #3880ff);
63
63
  background: var(--background);
64
64
  color: var(--color);
65
65
  }
@@ -262,7 +262,7 @@
262
262
  --background: rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.07);
263
263
  --border-radius: 10px;
264
264
  --box-shadow: none;
265
- --cancel-button-color: var(--ion-color-primary, #0054e9);
265
+ --cancel-button-color: var(--ion-color-primary, #3880ff);
266
266
  --clear-button-color: var(--ion-color-step-600, #666666);
267
267
  --color: var(--ion-text-color, #000);
268
268
  --icon-color: var(--ion-color-step-600, #666666);
@@ -4,29 +4,6 @@
4
4
  import AxeBuilder from "@axe-core/playwright";
5
5
  import { expect } from "@playwright/test";
6
6
  import { configs, test } from "../../../../utils/test/playwright/index";
7
- /**
8
- * Only md mode uses ion-color() for the segment button
9
- */
10
- configs({ directions: ['ltr'], modes: ['md'], themes: ['light', 'dark'] }).forEach(({ title, config }) => {
11
- test.describe(title('segment: a11y for ion-color()'), () => {
12
- test('should not have accessibility violations', async ({ page }) => {
13
- await page.setContent(`
14
- <main>
15
- <ion-segment aria-label="Tab Options" value="bookmarks">
16
- <ion-segment-button value="bookmarks">
17
- <ion-label>Bookmarks</ion-label>
18
- </ion-segment-button>
19
- <ion-segment-button value="reading-list">
20
- <ion-label>Reading List</ion-label>
21
- </ion-segment-button>
22
- </ion-segment>
23
- </main>
24
- `, config);
25
- const results = await new AxeBuilder({ page }).analyze();
26
- expect(results.violations).toEqual([]);
27
- });
28
- });
29
- });
30
7
  configs().forEach(({ title, config }) => {
31
8
  test.describe(title('segment: a11y'), () => {
32
9
  test('should not have any axe violations', async ({ page }) => {
@@ -362,7 +362,7 @@ ion-ripple-effect {
362
362
  --background-focused-opacity: .12;
363
363
  --background-hover-opacity: .04;
364
364
  --color: rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.6);
365
- --color-checked: var(--ion-color-primary, #0054e9);
365
+ --color-checked: var(--ion-color-primary, #3880ff);
366
366
  --indicator-box-shadow: none;
367
367
  --indicator-color: var(--color-checked);
368
368
  --indicator-height: 2px;
@@ -425,7 +425,7 @@ ion-ripple-effect {
425
425
  --background: var(--ion-toolbar-segment-background, none);
426
426
  --background-checked: var(--ion-toolbar-segment-background-checked, none);
427
427
  --color: var(--ion-toolbar-segment-color, rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.6));
428
- --color-checked: var(--ion-toolbar-segment-color-checked, var(--ion-color-primary, #0054e9));
428
+ --color-checked: var(--ion-toolbar-segment-color-checked, var(--ion-color-primary, #3880ff));
429
429
  --indicator-color: var(--ion-toolbar-segment-color-checked, var(--color-checked));
430
430
  }
431
431
 
@@ -83,9 +83,9 @@
83
83
  --placeholder-opacity: 0.6;
84
84
  --background: transparent;
85
85
  --border-style: solid;
86
- --highlight-color-focused: var(--ion-color-primary, #0054e9);
87
- --highlight-color-valid: var(--ion-color-success, #2dd55b);
88
- --highlight-color-invalid: var(--ion-color-danger, #c5000f);
86
+ --highlight-color-focused: var(--ion-color-primary, #3880ff);
87
+ --highlight-color-valid: var(--ion-color-success, #2dd36f);
88
+ --highlight-color-invalid: var(--ion-color-danger, #eb445a);
89
89
  /**
90
90
  * This is a private API that is used to switch
91
91
  * out the highlight color based on the state
@@ -83,9 +83,9 @@
83
83
  --placeholder-opacity: 0.6;
84
84
  --background: transparent;
85
85
  --border-style: solid;
86
- --highlight-color-focused: var(--ion-color-primary, #0054e9);
87
- --highlight-color-valid: var(--ion-color-success, #2dd55b);
88
- --highlight-color-invalid: var(--ion-color-danger, #c5000f);
86
+ --highlight-color-focused: var(--ion-color-primary, #3880ff);
87
+ --highlight-color-valid: var(--ion-color-success, #2dd36f);
88
+ --highlight-color-invalid: var(--ion-color-danger, #eb445a);
89
89
  /**
90
90
  * This is a private API that is used to switch
91
91
  * out the highlight color based on the state
@@ -4,65 +4,10 @@
4
4
  import AxeBuilder from "@axe-core/playwright";
5
5
  import { expect } from "@playwright/test";
6
6
  import { configs, test } from "../../../../utils/test/playwright/index";
7
- configs({ directions: ['ltr'], themes: ['light', 'dark'] }).forEach(({ title, config }) => {
8
- test.describe(title('textarea: a11y'), () => {
9
- test('default layout should not have accessibility violations', async ({ page }) => {
10
- await page.setContent(`
11
- <main>
12
- <ion-select label="Label" placeholder="Placeholder"></ion-select>
13
- <ion-select placeholder="Placeholder">
14
- <div slot="label">Label</div>
15
- </ion-select>
16
- <ion-select label="Label" value="a">
17
- <ion-select-option value="a">Apple</ion-select-option>
18
- </ion-select>
19
- <ion-select aria-label="Label"></ion-select>
20
- <ion-item>
21
- <ion-select label="My Label" value="apples">
22
- <ion-select-option value="apples">Apples</ion-select-option>
23
- <ion-select-option value="bananas">Bananas</ion-select-option>
24
- <ion-select-option value="oranges">Oranges</ion-select-option>
25
- </ion-select>
26
- </ion-item>
27
- <ion-select id="multiple" multiple="true" label="My Label">
28
- <ion-select-option value="apples">Apples</ion-select-option>
29
- <ion-select-option value="bananas">Bananas</ion-select-option>
30
- <ion-select-option value="oranges">Oranges</ion-select-option>
31
- </ion-select>
32
-
33
- <script>
34
- const multiple = document.querySelector('#multiple');
35
- multiple.value = ['apples', 'bananas'];
36
- </script>
37
- </main>
38
- `, config);
39
- const results = await new AxeBuilder({ page }).analyze();
40
- expect(results.violations).toEqual([]);
41
- });
42
- test('focused state should not have accessibility violations', async ({ page }) => {
43
- /**
44
- * The primary color against the focus background
45
- * when using fill="solid" does not meet AA
46
- * contrast guidelines so it excluded from the test.
47
- * The contrast here is a significant improvement
48
- * over what Ionic has had in the past, so the team
49
- * has decided that this tradeoff is acceptable since
50
- * the scope of the problem is limited to the focus
51
- * state with the primary color when fill="solid".
52
- */
53
- await page.setContent(`
54
- <main>
55
- <ion-select class="has-focus" label="Label" value="a">
56
- <ion-select-option value="a">Apple</ion-select-option>
57
- </ion-select>
58
- <ion-select class="has-focus" label-placement="floating" label="Label" value="a">
59
- <ion-select-option value="a">Apple</ion-select-option>
60
- </ion-select>
61
- <ion-select class="has-focus" fill="outline" label-placement="floating" label="Label" value="a">
62
- <ion-select-option value="a">Apple</ion-select-option>
63
- </ion-select>
64
- </main>
65
- `, config);
7
+ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => {
8
+ test.describe(title('select: a11y'), () => {
9
+ test('should not have accessibility violations', async ({ page }) => {
10
+ await page.goto(`/src/components/select/test/a11y`, config);
66
11
  const results = await new AxeBuilder({ page }).analyze();
67
12
  expect(results.violations).toEqual([]);
68
13
  });
@@ -187,10 +187,10 @@ ion-item {
187
187
  }
188
188
 
189
189
  .item-radio-checked {
190
- --background: rgba(var(--ion-color-primary-rgb, 0, 84, 233), 0.08);
191
- --background-focused: var(--ion-color-primary, #0054e9);
190
+ --background: rgba(var(--ion-color-primary-rgb, 56, 128, 255), 0.08);
191
+ --background-focused: var(--ion-color-primary, #3880ff);
192
192
  --background-focused-opacity: 0.2;
193
- --background-hover: var(--ion-color-primary, #0054e9);
193
+ --background-hover: var(--ion-color-primary, #3880ff);
194
194
  --background-hover-opacity: 0.12;
195
195
  }
196
196
 
@@ -198,5 +198,5 @@ ion-item {
198
198
  --background-activated: var(--ion-item-color, var(--ion-text-color, #000));
199
199
  --background-focused: var(--ion-item-color, var(--ion-text-color, #000));
200
200
  --background-hover: var(--ion-item-color, var(--ion-text-color, #000));
201
- --color: var(--ion-color-primary, #0054e9);
201
+ --color: var(--ion-color-primary, #3880ff);
202
202
  }
@@ -234,7 +234,7 @@
234
234
  --background-focused: var(--ion-tab-bar-background-focused, #e0e0e0);
235
235
  --border: 0.55px solid var(--ion-tab-bar-border-color, var(--ion-border-color, var(--ion-color-step-150, rgba(0, 0, 0, 0.2))));
236
236
  --color: var(--ion-tab-bar-color, var(--ion-color-step-600, #666666));
237
- --color-selected: var(--ion-tab-bar-color-selected, var(--ion-color-primary, #0054e9));
237
+ --color-selected: var(--ion-tab-bar-color-selected, var(--ion-color-primary, #3880ff));
238
238
  height: 50px;
239
239
  }
240
240
 
@@ -234,6 +234,6 @@
234
234
  --background-focused: var(--ion-tab-bar-background-focused, #e0e0e0);
235
235
  --border: 1px solid var(--ion-tab-bar-border-color, var(--ion-border-color, var(--ion-color-step-150, rgba(0, 0, 0, 0.07))));
236
236
  --color: var(--ion-tab-bar-color, var(--ion-color-step-650, #595959));
237
- --color-selected: var(--ion-tab-bar-color-selected, var(--ion-color-primary, #0054e9));
237
+ --color-selected: var(--ion-tab-bar-color-selected, var(--ion-color-primary, #3880ff));
238
238
  height: 56px;
239
239
  }
@@ -4,46 +4,14 @@
4
4
  import AxeBuilder from "@axe-core/playwright";
5
5
  import { expect } from "@playwright/test";
6
6
  import { configs, test } from "../../../../utils/test/playwright/index";
7
- configs({ directions: ['ltr'], themes: ['light', 'dark'] }).forEach(({ title, config }) => {
7
+ configs({ directions: ['ltr'] }).forEach(({ title, config, screenshot }) => {
8
8
  test.describe(title('textarea: a11y'), () => {
9
- test('default layout should not have accessibility violations', async ({ page }) => {
10
- await page.setContent(`
11
- <main>
12
- <ion-textarea label="Label" placeholder="Placeholder"></ion-textarea>
13
- <ion-textarea placeholder="Placeholder">
14
- <div slot="label">Label"></div>
15
- </ion-textarea>
16
- <ion-textarea label="Label" value="My Text"></ion-textarea>
17
- <ion-textarea aria-label="Label"></ion-textarea>
18
- </main>
19
- `, config);
20
- const results = await new AxeBuilder({ page }).analyze();
21
- expect(results.violations).toEqual([]);
22
- });
23
- test('focused state should not have accessibility violations', async ({ page }) => {
24
- /**
25
- * The primary color against the focus background
26
- * when using fill="solid" does not meet AA
27
- * contrast guidelines so it excluded from the test.
28
- * The contrast here is a significant improvement
29
- * over what Ionic has had in the past, so the team
30
- * has decided that this tradeoff is acceptable since
31
- * the scope of the problem is limited to the focus
32
- * state with the primary color when fill="solid".
33
- */
34
- await page.setContent(`
35
- <main>
36
- <ion-textarea class="has-focus" label="Label" value="My Text"></ion-textarea>
37
- <ion-textarea class="has-focus" label-placement="floating" label="Label" value="My Text"></ion-textarea>
38
- <ion-textarea class="has-focus" fill="outline" label-placement="floating" label="Label" value="My Text"></ion-textarea>
39
- </main>
40
- `, config);
9
+ test('should not have accessibility violations', async ({ page }) => {
10
+ await page.goto(`/src/components/textarea/test/a11y`, config);
41
11
  const results = await new AxeBuilder({ page }).analyze();
42
12
  expect(results.violations).toEqual([]);
43
13
  });
44
14
  });
45
- });
46
- configs({ directions: ['ltr'] }).forEach(({ title, config, screenshot }) => {
47
15
  test.describe(title('textarea: font scaling'), () => {
48
16
  test('should scale text on larger font sizes', async ({ page }) => {
49
17
  await page.setContent(`
@@ -91,9 +91,9 @@
91
91
  --padding-start: 0;
92
92
  --border-radius: 0;
93
93
  --border-style: solid;
94
- --highlight-color-focused: var(--ion-color-primary, #0054e9);
95
- --highlight-color-valid: var(--ion-color-success, #2dd55b);
96
- --highlight-color-invalid: var(--ion-color-danger, #c5000f);
94
+ --highlight-color-focused: var(--ion-color-primary, #3880ff);
95
+ --highlight-color-valid: var(--ion-color-success, #2dd36f);
96
+ --highlight-color-invalid: var(--ion-color-danger, #eb445a);
97
97
  /**
98
98
  * This is a private API that is used to switch
99
99
  * out the highlight color based on the state
@@ -91,9 +91,9 @@
91
91
  --padding-start: 0;
92
92
  --border-radius: 0;
93
93
  --border-style: solid;
94
- --highlight-color-focused: var(--ion-color-primary, #0054e9);
95
- --highlight-color-valid: var(--ion-color-success, #2dd55b);
96
- --highlight-color-invalid: var(--ion-color-danger, #c5000f);
94
+ --highlight-color-focused: var(--ion-color-primary, #3880ff);
95
+ --highlight-color-valid: var(--ion-color-success, #2dd36f);
96
+ --highlight-color-invalid: var(--ion-color-danger, #eb445a);
97
97
  /**
98
98
  * This is a private API that is used to switch
99
99
  * out the highlight color based on the state
@@ -4,62 +4,6 @@
4
4
  import AxeBuilder from "@axe-core/playwright";
5
5
  import { expect } from "@playwright/test";
6
6
  import { configs, test } from "../../../../utils/test/playwright/index";
7
- configs({ directions: ['ltr'], themes: ['dark', 'light'] }).forEach(({ title, config }) => {
8
- test.describe(title('toast: Axe testing'), () => {
9
- test('should not have any axe violations with inline toasts', async ({ page }) => {
10
- await page.setContent(`
11
- <ion-toast></ion-toast>
12
-
13
- <script>
14
- const toast = document.querySelector('ion-toast');
15
- toast.icon = 'person';
16
- toast.header = 'Inline Toast Header';
17
- toast.message = 'Inline Toast Message';
18
- toast.buttons = ['OK'];
19
- </script>
20
- `, config);
21
- const ionToastDidPresent = await page.spyOnEvent('ionToastDidPresent');
22
- const toast = page.locator('ion-toast');
23
- await toast.evaluate((el) => el.present());
24
- await ionToastDidPresent.next();
25
- const results = await new AxeBuilder({ page }).analyze();
26
- expect(results.violations).toEqual([]);
27
- });
28
- test('should not have any axe violations with controller toasts', async ({ page }) => {
29
- await page.setContent(`
30
- <script type="module">
31
- import { toastController } from '../../../../dist/ionic/index.esm.js';
32
- window.toastController = toastController;
33
- </script>
34
-
35
- <ion-button onclick="presentToast()">Present</ion-button>
36
-
37
- <script>
38
- const presentToast = async () => {
39
- // we only want to test color contrast on the toast itself
40
- const button = document.querySelector('ion-button');
41
- button.style.display = 'none';
42
-
43
- const toast = await toastController.create({
44
- icon: 'person',
45
- header: 'Controller Toast Header',
46
- message: 'Controller Toast Message',
47
- buttons: ['OK']
48
- });
49
-
50
- await toast.present();
51
- };
52
- </script>
53
- `, config);
54
- const ionToastDidPresent = await page.spyOnEvent('ionToastDidPresent');
55
- const button = page.locator('ion-button');
56
- await button.click();
57
- await ionToastDidPresent.next();
58
- const results = await new AxeBuilder({ page }).analyze();
59
- expect(results.violations).toEqual([]);
60
- });
61
- });
62
- });
63
7
  /**
64
8
  * This test does not check LTR vs RTL layouts
65
9
  */
@@ -68,6 +12,30 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
68
12
  test.beforeEach(async ({ page }) => {
69
13
  await page.goto(`/src/components/toast/test/a11y`, config);
70
14
  });
15
+ test('should not have any axe violations with inline toasts', async ({ page }) => {
16
+ const didPresent = await page.spyOnEvent('ionToastDidPresent');
17
+ await page.click('#inline-toast-trigger');
18
+ await didPresent.next();
19
+ /**
20
+ * IonToast overlays the entire screen, so
21
+ * Axe will be unable to verify color contrast
22
+ * on elements under the toast.
23
+ */
24
+ const results = await new AxeBuilder({ page }).disableRules('color-contrast').analyze();
25
+ expect(results.violations).toEqual([]);
26
+ });
27
+ test('should not have any axe violations with controller toasts', async ({ page }) => {
28
+ const didPresent = await page.spyOnEvent('ionToastDidPresent');
29
+ await page.click('#controller-toast-trigger');
30
+ await didPresent.next();
31
+ /**
32
+ * IonToast overlays the entire screen, so
33
+ * Axe will be unable to verify color contrast
34
+ * on elements under the toast.
35
+ */
36
+ const results = await new AxeBuilder({ page }).disableRules('color-contrast').analyze();
37
+ expect(results.violations).toEqual([]);
38
+ });
71
39
  test('should have aria-labelledby and aria-label added to the button when htmlAttributes is set', async ({ page, }) => {
72
40
  const didPresent = await page.spyOnEvent('ionToastDidPresent');
73
41
  await page.click('#aria-label-toast-trigger');
@@ -313,7 +313,7 @@
313
313
  :host {
314
314
  --background: var(--ion-color-step-50, #f2f2f2);
315
315
  --border-radius: 14px;
316
- --button-color: var(--ion-color-primary, #0054e9);
316
+ --button-color: var(--ion-color-primary, #3880ff);
317
317
  --color: var(--ion-color-step-850, #262626);
318
318
  --max-width: 700px;
319
319
  --max-height: 478px;
@@ -314,7 +314,7 @@
314
314
  --background: var(--ion-color-step-800, #333333);
315
315
  --border-radius: 4px;
316
316
  --box-shadow: 0 3px 5px -1px rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.14), 0 1px 18px 0 rgba(0, 0, 0, 0.12);
317
- --button-color: var(--ion-color-primary, #0054e9);
317
+ --button-color: var(--ion-color-primary, #3880ff);
318
318
  --color: var(--ion-color-step-50, #f2f2f2);
319
319
  --max-width: 700px;
320
320
  --start: 8px;
@@ -411,7 +411,7 @@
411
411
 
412
412
  @media (any-hover: hover) {
413
413
  .toast-button:hover {
414
- background-color: rgba(var(--ion-color-primary-rgb, 0, 84, 233), 0.08);
414
+ background-color: rgba(var(--ion-color-primary-rgb, 56, 128, 255), 0.08);
415
415
  }
416
416
  .toast-button-cancel:hover {
417
417
  background-color: rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.08);
@@ -4,16 +4,10 @@
4
4
  import AxeBuilder from "@axe-core/playwright";
5
5
  import { expect } from "@playwright/test";
6
6
  import { configs, test } from "../../../../utils/test/playwright/index";
7
- configs({ directions: ['ltr'], themes: ['light', 'dark'] }).forEach(({ title, config }) => {
7
+ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => {
8
8
  test.describe(title('toggle: a11y'), () => {
9
9
  test('should not have accessibility violations', async ({ page }) => {
10
- await page.setContent(`
11
- <main>
12
- <ion-toggle>my label</ion-toggle>
13
- <ion-toggle aria-label="my aria label"></ion-toggle>
14
- <ion-toggle checked="true">Checked</ion-toggle>
15
- </main>
16
- `, config);
10
+ await page.goto(`/src/components/toggle/test/a11y`, config);
17
11
  const results = await new AxeBuilder({ page }).analyze();
18
12
  expect(results.violations).toEqual([]);
19
13
  });
@@ -538,7 +538,7 @@ input {
538
538
  */
539
539
  :host {
540
540
  --track-background: rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.088);
541
- --track-background-checked: var(--ion-color-primary, #0054e9);
541
+ --track-background-checked: var(--ion-color-primary, #3880ff);
542
542
  --border-radius: 16px;
543
543
  --handle-background: #ffffff;
544
544
  --handle-background-checked: #ffffff;
@@ -538,10 +538,10 @@ input {
538
538
  */
539
539
  :host {
540
540
  --track-background: rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.39);
541
- --track-background-checked: rgba(var(--ion-color-primary-rgb, 0, 84, 233), 0.5);
541
+ --track-background-checked: rgba(var(--ion-color-primary-rgb, 56, 128, 255), 0.5);
542
542
  --border-radius: 14px;
543
543
  --handle-background: #ffffff;
544
- --handle-background-checked: var(--ion-color-primary, #0054e9);
544
+ --handle-background-checked: var(--ion-color-primary, #3880ff);
545
545
  --handle-border-radius: 50%;
546
546
  --handle-box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
547
547
  --handle-width: 20px;
@@ -1,7 +1,6 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import AxeBuilder from "@axe-core/playwright";
5
4
  import { expect } from "@playwright/test";
6
5
  import { configs, test } from "../../../utils/test/playwright/index";
7
6
  configs({ directions: ['ltr'], modes: ['ios'] }).forEach(({ title, screenshot, config }) => {
@@ -31,20 +30,3 @@ configs({ directions: ['ltr'], modes: ['ios'] }).forEach(({ title, screenshot, c
31
30
  });
32
31
  });
33
32
  });
34
- configs({ directions: ['ltr'], themes: ['light', 'dark'] }).forEach(({ config, title }) => {
35
- test.describe(title('typography: a11y'), () => {
36
- test('should not have accessibility violations for anchor tags', async ({ page }) => {
37
- /**
38
- * All page content should be contained by landmarks (main, nav, etc.)
39
- * By containing the badge in a main element, we can avoid this violation.
40
- */
41
- await page.setContent(`
42
- <main>
43
- <a href="#">Link</a>
44
- </main>
45
- `, config);
46
- const results = await new AxeBuilder({ page }).analyze();
47
- expect(results.violations).toEqual([]);
48
- });
49
- });
50
- });
@@ -29,7 +29,10 @@ export const alertController = /*@__PURE__*/ createController('ion-alert');
29
29
  export const actionSheetController = /*@__PURE__*/ createController('ion-action-sheet');
30
30
  export const loadingController = /*@__PURE__*/ createController('ion-loading');
31
31
  export const modalController = /*@__PURE__*/ createController('ion-modal');
32
- export const pickerController = /*@__PURE__*/ createController('ion-picker');
32
+ /**
33
+ * @deprecated Use the inline ion-picker component instead.
34
+ */
35
+ export const pickerController = /*@__PURE__*/ createController('ion-picker-legacy');
33
36
  export const popoverController = /*@__PURE__*/ createController('ion-popover');
34
37
  export const toastController = /*@__PURE__*/ createController('ion-toast');
35
38
  /**
@@ -139,7 +142,7 @@ const focusLastDescendant = (ref, overlay) => {
139
142
  * Should NOT include: Toast
140
143
  */
141
144
  const trapKeyboardFocus = (ev, doc) => {
142
- const lastOverlay = getPresentedOverlay(doc, 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-picker,ion-popover');
145
+ const lastOverlay = getPresentedOverlay(doc, 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-picker-legacy,ion-popover');
143
146
  const target = ev.target;
144
147
  /**
145
148
  * If no active overlay, ignore this event.
@@ -324,7 +327,7 @@ export const dismissOverlay = (doc, data, role, overlayTag, id) => {
324
327
  */
325
328
  export const getOverlays = (doc, selector) => {
326
329
  if (selector === undefined) {
327
- selector = 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-picker,ion-popover,ion-toast';
330
+ selector = 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-picker-legacy,ion-popover,ion-toast';
328
331
  }
329
332
  return Array.from(doc.querySelectorAll(selector)).filter((c) => c.overlayIndex > 0);
330
333
  };
@@ -72,5 +72,4 @@ const DEFAULT_THEMES = ['light'];
72
72
  const DEFAULT_TEST_CONFIG_OPTION = {
73
73
  modes: DEFAULT_MODES,
74
74
  directions: DEFAULT_DIRECTIONS,
75
- themes: DEFAULT_THEMES,
76
75
  };
@@ -39,7 +39,7 @@ export const setContent = async (page, html, testInfo, options) => {
39
39
  <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0" />
40
40
  <link href="${baseUrl}/css/ionic.bundle.css" rel="stylesheet" />
41
41
  <link href="${baseUrl}/scripts/testing/styles.css" rel="stylesheet" />
42
- ${theme !== 'light' ? `<link href="${baseUrl}/src/themes/test/${theme}.css" rel="stylesheet" />` : ''}
42
+ ${theme !== 'light' ? `<link href="${baseUrl}/scripts/testing/themes/${theme}.css" rel="stylesheet" />` : ''}
43
43
  <script src="${baseUrl}/scripts/testing/scripts.js"></script>
44
44
  <script type="module" src="${baseUrl}/dist/ionic/ionic.esm.js"></script>
45
45
  <script>