@ionic/core 7.6.7-dev.11706551083.17301493 → 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
@@ -9,7 +9,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
9
9
  await page.setContent(`
10
10
  <ion-datetime locale="en-US" presentation="date" day-values="1,2,3"></ion-datetime>
11
11
  `, config);
12
- await page.locator('.datetime-ready').waitFor();
12
+ await page.waitForSelector('.datetime-ready');
13
13
  const items = page.locator('.calendar-day:not([disabled])');
14
14
  /**
15
15
  * Datetime calendar grid renders 3 months by default,
@@ -22,28 +22,28 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
22
22
  await page.setContent(`
23
23
  <ion-datetime locale="en-US" presentation="month-year" month-values="5,6,10"></ion-datetime>
24
24
  `, config);
25
- const items = page.locator('.month-column .picker-item:not(.picker-item-empty)');
25
+ const items = page.locator('.month-column ion-picker-column-option');
26
26
  await expect(items).toHaveText(['May', 'June', 'October']);
27
27
  });
28
28
  test('should render correct years', async ({ page }) => {
29
29
  await page.setContent(`
30
30
  <ion-datetime locale="en-US" presentation="month-year" year-values="2022,2021,2020"></ion-datetime>
31
31
  `, config);
32
- const items = page.locator('.year-column .picker-item:not(.picker-item-empty)');
32
+ const items = page.locator('.year-column ion-picker-column-option');
33
33
  await expect(items).toHaveText(['2022', '2021', '2020']);
34
34
  });
35
35
  test('should render correct hours', async ({ page }) => {
36
36
  await page.setContent(`
37
37
  <ion-datetime locale="en-US" presentation="time" hour-values="1,2,3"></ion-datetime>
38
38
  `, config);
39
- const items = page.locator('ion-picker-column-internal:first-of-type .picker-item:not(.picker-item-empty)');
39
+ const items = page.locator('ion-picker-column:first-of-type ion-picker-column-option');
40
40
  await expect(items).toHaveText(['1', '2', '3']);
41
41
  });
42
42
  test('should render correct minutes', async ({ page }) => {
43
43
  await page.setContent(`
44
44
  <ion-datetime locale="en-US" presentation="time" minute-values="1,2,3"></ion-datetime>
45
45
  `, config);
46
- const items = page.locator('ion-picker-column-internal:nth-of-type(2) .picker-item:not(.picker-item-empty)');
46
+ const items = page.locator('ion-picker-column:nth-of-type(2) ion-picker-column-option');
47
47
  await expect(items).toHaveText(['01', '02', '03']);
48
48
  });
49
49
  test('should adjust default parts for allowed hour and minute values', async ({ page }) => {
@@ -68,20 +68,23 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
68
68
  }
69
69
  </script>
70
70
  `, config);
71
- await page.locator('.datetime-ready').waitFor();
72
- const minuteItems = page.locator('ion-picker-column-internal:nth-of-type(2) .picker-item:not(.picker-item-empty)');
71
+ await page.waitForSelector('.datetime-ready');
72
+ const minuteColumn = page.locator('ion-picker-column').nth(1);
73
+ const minuteItems = minuteColumn.locator('ion-picker-column-option');
73
74
  await expect(minuteItems).toHaveText(['00', '15', '30', '45']);
74
- await expect(minuteItems.nth(1)).toHaveClass(/picker-item-active/);
75
- const hourItems = page.locator('ion-picker-column-internal:nth-of-type(1) .picker-item:not(.picker-item-empty)');
75
+ await expect(minuteColumn).toHaveJSProperty('value', 15);
76
+ const hourColumn = page.locator('ion-picker-column').nth(0);
77
+ const hourItems = hourColumn.locator('ion-picker-column-option');
76
78
  await expect(hourItems).toHaveText(['2']);
77
- await expect(hourItems.nth(0)).toHaveClass(/picker-item-active/);
79
+ await expect(hourColumn).toHaveJSProperty('value', 2);
78
80
  /**
79
81
  * Since the allowed hour is 2AM, the time period
80
82
  * should switch from PM to AM.
81
83
  */
82
- const ampmItems = page.locator('ion-picker-column-internal:nth-of-type(3) .picker-item:not(.picker-item-empty)');
84
+ const ampmColumn = page.locator('ion-picker-column').nth(2);
85
+ const ampmItems = ampmColumn.locator('ion-picker-column-option');
83
86
  await expect(ampmItems).toHaveText(['AM', 'PM']);
84
- await expect(ampmItems.nth(0)).toHaveClass(/picker-item-active/);
87
+ await expect(ampmColumn).toHaveJSProperty('value', 'am');
85
88
  });
86
89
  test('should adjust default parts month for allowed month values', async ({ page }) => {
87
90
  /**
@@ -105,10 +108,10 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
105
108
  }
106
109
  </script>
107
110
  `, config);
108
- await page.locator('.datetime-ready').waitFor();
109
- const monthItems = page.locator('.month-column .picker-item:not(.picker-item-empty)');
111
+ await page.waitForSelector('.datetime-ready');
112
+ const monthItems = page.locator('.month-column ion-picker-column-option');
110
113
  await expect(monthItems).toHaveText(['January']);
111
- await expect(monthItems.nth(0)).toHaveClass(/picker-item-active/);
114
+ await expect(monthItems.nth(0)).toHaveClass(/option-active/);
112
115
  });
113
116
  test('today date highlight should persist even if disallowed from dayValues', async ({ page }) => {
114
117
  /**
@@ -132,7 +135,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
132
135
  }
133
136
  </script>
134
137
  `, config);
135
- await page.locator('.datetime-ready').waitFor();
138
+ await page.waitForSelector('.datetime-ready');
136
139
  const todayButton = page.locator('.calendar-day[data-day="10"][data-month="10"][data-year="2022"]');
137
140
  await expect(todayButton).toHaveClass(/calendar-day-today/);
138
141
  });
@@ -323,7 +323,7 @@ export const getMonthColumnData = (locale, refParts, minParts, maxParts, monthVa
323
323
  * @param minParts The minimum bound on the date that can be returned
324
324
  * @param maxParts The maximum bound on the date that can be returned
325
325
  * @param dayValues The allowed date values
326
- * @returns Date data to be used in ion-picker-column-internal
326
+ * @returns Date data to be used in ion-picker-column
327
327
  */
328
328
  export const getDayColumnData = (locale, refParts, minParts, maxParts, dayValues, formatOptions = {
329
329
  day: 'numeric',
@@ -14,7 +14,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
14
14
  <ion-datetime-button datetime="datetime"></ion-datetime-button>
15
15
  <ion-datetime id="datetime" presentation="date-time"></ion-datetime>
16
16
  `, config);
17
- await page.locator('.datetime-ready').waitFor();
17
+ await page.waitForSelector('.datetime-ready');
18
18
  });
19
19
  test('should switch to a date-only view when the date button is clicked', async ({ page }) => {
20
20
  const datetime = page.locator('ion-datetime');
@@ -37,7 +37,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
37
37
  <ion-datetime-button locale="en-US" datetime="datetime"></ion-datetime-button>
38
38
  <ion-datetime id="datetime" value="2022-01-01T06:30:00" presentation="date-time"></ion-datetime>
39
39
  `, config);
40
- await page.locator('.datetime-ready').waitFor();
40
+ await page.waitForSelector('.datetime-ready');
41
41
  await expect(page.locator('#date-button')).toContainText('Jan 1, 2022');
42
42
  await expect(page.locator('#time-button')).toContainText('6:30 AM');
43
43
  });
@@ -46,7 +46,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
46
46
  <ion-datetime-button locale="en-US" datetime="datetime"></ion-datetime-button>
47
47
  <ion-datetime id="datetime" value="2022-01-01T06:30:00" presentation="month-year"></ion-datetime>
48
48
  `, config);
49
- await page.locator('.datetime-ready').waitFor();
49
+ await page.waitForSelector('.datetime-ready');
50
50
  await expect(page.locator('#date-button')).toContainText('January 2022');
51
51
  await expect(page.locator('#time-button')).toBeHidden();
52
52
  });
@@ -55,7 +55,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
55
55
  <ion-datetime-button locale="en-US" datetime="datetime"></ion-datetime-button>
56
56
  <ion-datetime id="datetime" value="2022-01-01T06:30:00" presentation="year"></ion-datetime>
57
57
  `, config);
58
- await page.locator('.datetime-ready').waitFor();
58
+ await page.waitForSelector('.datetime-ready');
59
59
  await expect(page.locator('#date-button')).toContainText('2022');
60
60
  await expect(page.locator('#time-button')).toBeHidden();
61
61
  });
@@ -64,7 +64,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
64
64
  <ion-datetime-button locale="en-US" datetime="datetime"></ion-datetime-button>
65
65
  <ion-datetime id="datetime" value="2022-01-01T06:30:00" presentation="month"></ion-datetime>
66
66
  `, config);
67
- await page.locator('.datetime-ready').waitFor();
67
+ await page.waitForSelector('.datetime-ready');
68
68
  await expect(page.locator('#date-button')).toContainText('January');
69
69
  await expect(page.locator('#time-button')).toBeHidden();
70
70
  });
@@ -73,7 +73,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
73
73
  <ion-datetime-button locale="en-US" datetime="datetime"></ion-datetime-button>
74
74
  <ion-datetime id="datetime" value="2022-01-01T06:30:00" presentation="time"></ion-datetime>
75
75
  `, config);
76
- await page.locator('.datetime-ready').waitFor();
76
+ await page.waitForSelector('.datetime-ready');
77
77
  await expect(page.locator('#time-button')).toContainText('6:30 AM');
78
78
  await expect(page.locator('#date-button')).toBeHidden();
79
79
  });
@@ -82,7 +82,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
82
82
  <ion-datetime-button locale="en-US" datetime="datetime"></ion-datetime-button>
83
83
  <ion-datetime id="datetime" value="2022-01-01T06:30:00" presentation="date"></ion-datetime>
84
84
  `, config);
85
- await page.locator('.datetime-ready').waitFor();
85
+ await page.waitForSelector('.datetime-ready');
86
86
  const datetime = page.locator('ion-datetime');
87
87
  const dateTarget = page.locator('#date-button');
88
88
  await expect(dateTarget).toContainText('Jan 1, 2022');
@@ -99,7 +99,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
99
99
  <ion-datetime-button locale="en-US" datetime="datetime"></ion-datetime-button>
100
100
  <ion-datetime id="datetime" value="2022-01" presentation="month-year"></ion-datetime>
101
101
  `, config);
102
- await page.locator('.datetime-ready').waitFor();
102
+ await page.waitForSelector('.datetime-ready');
103
103
  await expect(page.locator('#date-button')).toContainText('January 2022');
104
104
  await expect(page.locator('#time-button')).toBeHidden();
105
105
  });
@@ -112,7 +112,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
112
112
  <ion-datetime-button locale="en-US" datetime="datetime"></ion-datetime-button>
113
113
  <ion-datetime id="datetime" value="2022" presentation="year"></ion-datetime>
114
114
  `, config);
115
- await page.locator('.datetime-ready').waitFor();
115
+ await page.waitForSelector('.datetime-ready');
116
116
  await expect(page.locator('#date-button')).toContainText('2022');
117
117
  await expect(page.locator('#time-button')).toBeHidden();
118
118
  });
@@ -123,7 +123,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
123
123
  <ion-datetime-button datetime="datetime"></ion-datetime-button>
124
124
  <ion-datetime locale="es-ES" id="datetime" value="2022-01-01T06:30:00" presentation="date-time"></ion-datetime>
125
125
  `, config);
126
- await page.locator('.datetime-ready').waitFor();
126
+ await page.waitForSelector('.datetime-ready');
127
127
  /**
128
128
  * The entire text reads 1 ene 2022, but some browsers will add
129
129
  * a period after "ene". Just checking ene allows us to verify the
@@ -137,7 +137,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
137
137
  <ion-datetime-button datetime="datetime"></ion-datetime-button>
138
138
  <ion-datetime hour-cycle="h23" locale="en-US" id="datetime" value="2022-01-01T16:30:00" presentation="date-time"></ion-datetime>
139
139
  `, config);
140
- await page.locator('.datetime-ready').waitFor();
140
+ await page.waitForSelector('.datetime-ready');
141
141
  await expect(page.locator('#time-button')).toContainText('16:30');
142
142
  });
143
143
  test('should ignore the timezone when selecting a date', async ({ page }) => {
@@ -145,7 +145,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
145
145
  <ion-datetime-button datetime="datetime"></ion-datetime-button>
146
146
  <ion-datetime locale="en-US" id="datetime" value="2022-01-02T06:30:00" presentation="date-time"></ion-datetime>
147
147
  `, config);
148
- await page.locator('.datetime-ready').waitFor();
148
+ await page.waitForSelector('.datetime-ready');
149
149
  const timeTarget = page.locator('#time-button');
150
150
  await expect(timeTarget).toContainText('6:30');
151
151
  const firstOfMonth = page.locator('ion-datetime .calendar-day[data-month="1"][data-day="1"]');
@@ -160,7 +160,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
160
160
  <ion-datetime-button datetime="datetime"></ion-datetime-button>
161
161
  <ion-datetime locale="en-US" id="datetime" value="2022-01-01T06:30:00" presentation="date-time" prefer-wheel="true"></ion-datetime>
162
162
  `, config);
163
- await page.locator('.datetime-ready').waitFor();
163
+ await page.waitForSelector('.datetime-ready');
164
164
  await expect(page.locator('#date-button')).toContainText('Jan 1, 2022 6:30 AM');
165
165
  await expect(page.locator('#time-button')).not.toBeVisible();
166
166
  });
@@ -169,7 +169,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
169
169
  <ion-datetime-button datetime="datetime"></ion-datetime-button>
170
170
  <ion-datetime locale="en-US" id="datetime" value="2022-01-01T06:30:00" presentation="time-date" prefer-wheel="true"></ion-datetime>
171
171
  `, config);
172
- await page.locator('.datetime-ready').waitFor();
172
+ await page.waitForSelector('.datetime-ready');
173
173
  await expect(page.locator('#date-button')).toContainText('Jan 1, 2022 6:30 AM');
174
174
  await expect(page.locator('#time-button')).not.toBeVisible();
175
175
  });
@@ -10,7 +10,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, screenshot, co
10
10
  <ion-datetime-button datetime="datetime" disabled="true"></ion-datetime-button>
11
11
  <ion-datetime id="datetime" presentation="date-time"></ion-datetime>
12
12
  `, config);
13
- await page.locator('.datetime-ready').waitFor();
13
+ await page.waitForSelector('.datetime-ready');
14
14
  await expect(page.locator('#date-button')).toBeDisabled();
15
15
  await expect(page.locator('#time-button')).toBeDisabled();
16
16
  });
@@ -19,7 +19,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, screenshot, co
19
19
  <ion-datetime-button datetime="datetime" disabled="true"></ion-datetime-button>
20
20
  <ion-datetime id="datetime" presentation="date-time" value="2022-01-01T16:30:00"></ion-datetime>
21
21
  `, config);
22
- await page.locator('.datetime-ready').waitFor();
22
+ await page.waitForSelector('.datetime-ready');
23
23
  const datetimeButton = page.locator('ion-datetime-button');
24
24
  await expect(datetimeButton).toHaveScreenshot(screenshot(`datetime-button-disabled`));
25
25
  });
@@ -19,7 +19,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
19
19
  datetime.value = ['2022-06-01', '2022-06-02', '2022-06-03'];
20
20
  </script>
21
21
  `, config);
22
- await page.locator('.datetime-ready').waitFor();
22
+ await page.waitForSelector('.datetime-ready');
23
23
  await expect(page.locator('#date-button')).toContainText('3 days');
24
24
  });
25
25
  test('should render number of dates when 0 dates are selected', async ({ page }) => {
@@ -27,7 +27,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
27
27
  <ion-datetime-button datetime="datetime"></ion-datetime-button>
28
28
  <ion-datetime locale="en-US" id="datetime" presentation="date" multiple="true"></ion-datetime>
29
29
  `, config);
30
- await page.locator('.datetime-ready').waitFor();
30
+ await page.waitForSelector('.datetime-ready');
31
31
  await expect(page.locator('#date-button')).toHaveText('0 days');
32
32
  });
33
33
  test('should render date when only 1 day is selected', async ({ page }) => {
@@ -40,7 +40,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
40
40
  datetime.value = ['2022-06-01'];
41
41
  </script>
42
42
  `, config);
43
- await page.locator('.datetime-ready').waitFor();
43
+ await page.waitForSelector('.datetime-ready');
44
44
  await expect(page.locator('#date-button')).toHaveText('Jun 1, 2022');
45
45
  });
46
46
  test('should use customFormatter', async ({ page }) => {
@@ -56,7 +56,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
56
56
  datetime.value = ['2022-06-01', '2022-06-02', '2022-06-03'];
57
57
  </script>
58
58
  `, config);
59
- await page.locator('.datetime-ready').waitFor();
59
+ await page.waitForSelector('.datetime-ready');
60
60
  await expect(page.locator('#date-button')).toHaveText('Selected: 3');
61
61
  });
62
62
  test('should re-render when value is programmatically changed', async ({ page }) => {
@@ -69,7 +69,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
69
69
  datetime.value = ['2022-06-01', '2022-06-02'];
70
70
  </script>
71
71
  `, config);
72
- await page.locator('.datetime-ready').waitFor();
72
+ await page.waitForSelector('.datetime-ready');
73
73
  const datetime = page.locator('ion-datetime');
74
74
  const ionValueChange = await page.spyOnEvent('ionValueChange');
75
75
  const dateButton = page.locator('#date-button');
@@ -88,7 +88,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
88
88
  datetime.value = ['2022-06-01T16:30', '2022-06-02'];
89
89
  </script>
90
90
  `, config);
91
- await page.locator('.datetime-ready').waitFor();
91
+ await page.waitForSelector('.datetime-ready');
92
92
  await expect(page.locator('#date-button')).toHaveText('Jun 1, 2022');
93
93
  await expect(page.locator('#time-button')).toHaveText('4:30 PM');
94
94
  });
@@ -334,10 +334,10 @@ ion-ripple-effect {
334
334
  * }
335
335
  */
336
336
  :host {
337
- --background: var(--ion-color-primary, #3880ff);
338
- --background-activated: var(--ion-color-primary-shade, #3171e0);
339
- --background-focused: var(--ion-color-primary-shade, #3171e0);
340
- --background-hover: var(--ion-color-primary-tint, #4c8dff);
337
+ --background: var(--ion-color-primary, #0054e9);
338
+ --background-activated: var(--ion-color-primary-shade, #004acd);
339
+ --background-focused: var(--ion-color-primary-shade, #004acd);
340
+ --background-hover: var(--ion-color-primary-tint, #1a65eb);
341
341
  --background-activated-opacity: 1;
342
342
  --background-focused-opacity: 1;
343
343
  --background-hover-opacity: 1;
@@ -358,10 +358,10 @@ ion-ripple-effect {
358
358
  }
359
359
 
360
360
  :host(.fab-button-in-list) {
361
- --background: var(--ion-color-light, #f4f5f8);
362
- --background-activated: var(--ion-color-light-shade, #d7d8da);
361
+ --background: var(--ion-color-light, #f6f8fc);
362
+ --background-activated: var(--ion-color-light-shade, #d8dade);
363
363
  --background-focused: var(--background-activated);
364
- --background-hover: var(--ion-color-light-tint, #f5f6f9);
364
+ --background-hover: var(--ion-color-light-tint, #f7f9fc);
365
365
  --color: var(--ion-color-light-contrast, #000);
366
366
  --color-activated: var(--ion-color-light-contrast, #000);
367
367
  --color-focused: var(--color-activated);
@@ -395,15 +395,15 @@ ion-ripple-effect {
395
395
  }
396
396
  @supports (backdrop-filter: blur(0)) {
397
397
  :host(.fab-button-translucent) {
398
- --background: rgba(var(--ion-color-primary-rgb, 56, 128, 255), 0.9);
399
- --background-hover: rgba(var(--ion-color-primary-rgb, 56, 128, 255), 0.8);
400
- --background-focused: rgba(var(--ion-color-primary-rgb, 56, 128, 255), 0.82);
398
+ --background: rgba(var(--ion-color-primary-rgb, 0, 84, 233), 0.9);
399
+ --background-hover: rgba(var(--ion-color-primary-rgb, 0, 84, 233), 0.8);
400
+ --background-focused: rgba(var(--ion-color-primary-rgb, 0, 84, 233), 0.82);
401
401
  --backdrop-filter: saturate(180%) blur(20px);
402
402
  }
403
403
  :host(.fab-button-translucent-in-list) {
404
- --background: rgba(var(--ion-color-light-rgb, 244, 245, 248), 0.9);
405
- --background-hover: rgba(var(--ion-color-light-rgb, 244, 245, 248), 0.8);
406
- --background-focused: rgba(var(--ion-color-light-rgb, 244, 245, 248), 0.82);
404
+ --background: rgba(var(--ion-color-light-rgb, 246, 248, 252), 0.9);
405
+ --background-hover: rgba(var(--ion-color-light-rgb, 246, 248, 252), 0.8);
406
+ --background-focused: rgba(var(--ion-color-light-rgb, 246, 248, 252), 0.82);
407
407
  }
408
408
  }
409
409
  @supports (backdrop-filter: blur(0)) {
@@ -334,7 +334,7 @@ ion-ripple-effect {
334
334
  * }
335
335
  */
336
336
  :host {
337
- --background: var(--ion-color-primary, #3880ff);
337
+ --background: var(--ion-color-primary, #0054e9);
338
338
  --background-activated: transparent;
339
339
  --background-focused: currentColor;
340
340
  --background-hover: currentColor;
@@ -359,10 +359,10 @@ ion-ripple-effect {
359
359
  --color: rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.54);
360
360
  --color-activated: rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.54);
361
361
  --color-focused: var(--color-activated);
362
- --background: var(--ion-color-light, #f4f5f8);
362
+ --background: var(--ion-color-light, #f6f8fc);
363
363
  --background-activated: transparent;
364
- --background-focused: var(--ion-color-light-shade, #d7d8da);
365
- --background-hover: var(--ion-color-light-tint, #f5f6f9);
364
+ --background-focused: var(--ion-color-light-shade, #d8dade);
365
+ --background-hover: var(--ion-color-light-tint, #f7f9fc);
366
366
  }
367
367
 
368
368
  :host(.fab-button-in-list) ::slotted(ion-icon) {
@@ -1,8 +1,58 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
+ import AxeBuilder from "@axe-core/playwright";
4
5
  import { expect } from "@playwright/test";
5
6
  import { configs, test } from "../../../../utils/test/playwright/index";
7
+ configs({ directions: ['ltr'], themes: ['light', 'dark'] }).forEach(({ title, config }) => {
8
+ test.describe(title('fab-button: a11y'), () => {
9
+ test('should not have accessibility violations', async ({ page }) => {
10
+ await page.setContent(`
11
+ <ion-fab-button>FAB</ion-fab-button>
12
+ <ion-fab-button class="ion-activated">FAB</ion-fab-button>
13
+ `, config);
14
+ const results = await new AxeBuilder({ page }).analyze();
15
+ expect(results.violations).toEqual([]);
16
+ });
17
+ });
18
+ test.describe(title('fab-list: contrast'), () => {
19
+ test('should not have accessibility violations', async ({ page }) => {
20
+ await page.setContent(`
21
+ <ion-fab activated="true">
22
+ <ion-fab-button>
23
+ Open
24
+ </ion-fab-button>
25
+ <ion-fab-list side="bottom">
26
+ <ion-fab-button>Down</ion-fab-button>
27
+ <ion-fab-button class="ion-activated">Down</ion-fab-button>
28
+ <ion-fab-button class="ion-focused">Down</ion-fab-button>
29
+ </ion-fab-list>
30
+ </ion-fab>
31
+ `, config);
32
+ const results = await new AxeBuilder({ page }).analyze();
33
+ expect(results.violations).toEqual([]);
34
+ });
35
+ });
36
+ test.describe(title('fab: translucent contrast'), () => {
37
+ test('should not have accessibility violations', async ({ page }) => {
38
+ await page.setContent(`
39
+ <ion-fab-button translucent="true">FAB</ion-fab-button>
40
+ <ion-fab-button class="ion-focused" translucent="true">FAB</ion-fab-button>
41
+ <ion-fab activated="true">
42
+ <ion-fab-button>
43
+ Open
44
+ </ion-fab-button>
45
+ <ion-fab-list side="bottom">
46
+ <ion-fab-button translucent="true">Down</ion-fab-button>
47
+ <ion-fab-button class="ion-focused" translucent="true">Down</ion-fab-button>
48
+ </ion-fab-list>
49
+ </ion-fab>
50
+ `, config);
51
+ const results = await new AxeBuilder({ page }).analyze();
52
+ expect(results.violations).toEqual([]);
53
+ });
54
+ });
55
+ });
6
56
  configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
7
57
  test.describe(title('fab-button: aria attributes'), () => {
8
58
  test('should inherit aria attributes to inner button', async ({ page }) => {
@@ -15,7 +15,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, screenshot, c
15
15
  await content.evaluate(async (el) => {
16
16
  await el.scrollToBottom();
17
17
  });
18
- await page.locator('#largeTitleHeader.header-collapse-condense-inactive').waitFor();
18
+ await page.waitForSelector('#largeTitleHeader.header-collapse-condense-inactive');
19
19
  await expect(smallTitleHeader).toHaveScreenshot(screenshot(`header-condense-large-title-collapsed-diff`));
20
20
  /**
21
21
  * Playwright can't do .not.toHaveAttribute() because a value is expected,
@@ -26,7 +26,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, screenshot, c
26
26
  await content.evaluate(async (el) => {
27
27
  await el.scrollToTop();
28
28
  });
29
- await page.locator('#smallTitleHeader.header-collapse-condense-inactive').waitFor();
29
+ await page.waitForSelector('#smallTitleHeader.header-collapse-condense-inactive');
30
30
  await expect(smallTitleHeader).toHaveAttribute('aria-hidden', 'true');
31
31
  });
32
32
  });
@@ -89,9 +89,9 @@
89
89
  --background: transparent;
90
90
  --color: initial;
91
91
  --border-style: solid;
92
- --highlight-color-focused: var(--ion-color-primary, #3880ff);
93
- --highlight-color-valid: var(--ion-color-success, #2dd36f);
94
- --highlight-color-invalid: var(--ion-color-danger, #eb445a);
92
+ --highlight-color-focused: var(--ion-color-primary, #0054e9);
93
+ --highlight-color-valid: var(--ion-color-success, #2dd55b);
94
+ --highlight-color-invalid: var(--ion-color-danger, #c5000f);
95
95
  /**
96
96
  * This is a private API that is used to switch
97
97
  * out the highlight color based on the state
@@ -89,9 +89,9 @@
89
89
  --background: transparent;
90
90
  --color: initial;
91
91
  --border-style: solid;
92
- --highlight-color-focused: var(--ion-color-primary, #3880ff);
93
- --highlight-color-valid: var(--ion-color-success, #2dd36f);
94
- --highlight-color-invalid: var(--ion-color-danger, #eb445a);
92
+ --highlight-color-focused: var(--ion-color-primary, #0054e9);
93
+ --highlight-color-valid: var(--ion-color-success, #2dd55b);
94
+ --highlight-color-invalid: var(--ion-color-danger, #c5000f);
95
95
  /**
96
96
  * This is a private API that is used to switch
97
97
  * out the highlight color based on the state
@@ -4,14 +4,52 @@
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'] }).forEach(({ title, config, screenshot }) => {
7
+ configs({ directions: ['ltr'], themes: ['light', 'dark'] }).forEach(({ title, config }) => {
8
8
  test.describe(title('input: a11y'), () => {
9
- test('should not have accessibility violations', async ({ page }) => {
10
- await page.goto(`/src/components/input/test/a11y`, config);
9
+ test('default layout should not have accessibility violations', async ({ page }) => {
10
+ await page.setContent(`
11
+ <main>
12
+ <ion-input label="Label" placeholder="Placeholder"></ion-input>
13
+ <ion-input placeholder="Placeholder">
14
+ <div slot="label">Label"></div>
15
+ </ion-input>
16
+ <ion-input label="Label" value="My Text"></ion-input>
17
+ <ion-input aria-label="Label"></ion-input>
18
+ <ion-input label="Email" fill="solid" value="hi@ionic.io">
19
+ <ion-icon slot="start" name="lock-closed" aria-hidden="true"></ion-icon>
20
+ <ion-button slot="end" aria-label="button">
21
+ <ion-icon slot="icon-only" name="lock-closed" aria-hidden="true"></ion-icon>
22
+ </ion-button>
23
+ </ion-input>
24
+ </main>
25
+ `, config);
26
+ const results = await new AxeBuilder({ page }).analyze();
27
+ expect(results.violations).toEqual([]);
28
+ });
29
+ test('focused state should not have accessibility violations', async ({ page }) => {
30
+ /**
31
+ * The primary color against the focus background
32
+ * when using fill="solid" does not meet AA
33
+ * contrast guidelines so it excluded from the test.
34
+ * The contrast here is a significant improvement
35
+ * over what Ionic has had in the past, so the team
36
+ * has decided that this tradeoff is acceptable since
37
+ * the scope of the problem is limited to the focus
38
+ * state with the primary color when fill="solid".
39
+ */
40
+ await page.setContent(`
41
+ <main>
42
+ <ion-input class="has-focus" label="Label" value="My Text"></ion-input>
43
+ <ion-input class="has-focus" label-placement="floating" label="Label" value="My Text"></ion-input>
44
+ <ion-input class="has-focus" fill="outline" label-placement="floating" label="Label" value="My Text"></ion-input>
45
+ </main>
46
+ `, config);
11
47
  const results = await new AxeBuilder({ page }).analyze();
12
48
  expect(results.violations).toEqual([]);
13
49
  });
14
50
  });
51
+ });
52
+ configs({ directions: ['ltr'] }).forEach(({ title, config, screenshot }) => {
15
53
  test.describe(title('input: font scaling'), () => {
16
54
  test('should scale text on larger font sizes', async ({ page }) => {
17
55
  await page.setContent(`