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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (521) hide show
  1. package/components/action-sheet.js +1 -1
  2. package/components/alert.js +2 -2
  3. package/components/backdrop.js +0 -12
  4. package/components/button.js +2 -2
  5. package/components/checkbox.js +2 -2
  6. package/components/data.js +1 -1
  7. package/components/gesture-controller.js +1 -1
  8. package/components/ion-back-button.js +1 -1
  9. package/components/ion-badge.js +2 -2
  10. package/components/ion-content.js +3 -4
  11. package/components/ion-datetime.js +40 -64
  12. package/components/ion-fab-button.js +2 -2
  13. package/components/ion-input.js +2 -2
  14. package/components/ion-item-option.js +2 -2
  15. package/components/ion-loading.js +1 -1
  16. package/components/ion-menu-button.js +1 -1
  17. package/components/ion-menu.js +21 -15
  18. package/components/ion-nav.js +7 -3
  19. package/components/ion-picker-column-option.d.ts +11 -0
  20. package/components/ion-picker-column-option.js +9 -0
  21. package/components/ion-picker-column.js +2 -2
  22. package/components/ion-picker-legacy-column.d.ts +11 -0
  23. package/components/ion-picker-legacy-column.js +9 -0
  24. package/components/{ion-picker-internal.d.ts → ion-picker-legacy.d.ts} +4 -4
  25. package/components/ion-picker-legacy.js +309 -0
  26. package/components/ion-picker.js +1 -309
  27. package/components/ion-progress-bar.js +2 -2
  28. package/components/ion-range.js +2 -2
  29. package/components/ion-refresher-content.js +1 -1
  30. package/components/ion-refresher.js +1 -1
  31. package/components/ion-router-link.js +1 -1
  32. package/components/ion-searchbar.js +1 -1
  33. package/components/ion-segment-button.js +1 -1
  34. package/components/ion-select.js +2 -2
  35. package/components/ion-split-pane.js +26 -15
  36. package/components/ion-tab-bar.js +2 -2
  37. package/components/ion-textarea.js +2 -2
  38. package/components/ion-toast.js +2 -2
  39. package/components/ion-toggle.js +2 -2
  40. package/components/item.js +2 -8
  41. package/components/label.js +1 -1
  42. package/components/overlays.js +11 -4
  43. package/components/picker-column-option.js +122 -0
  44. package/components/picker-column.js +351 -322
  45. package/components/picker-column2.js +379 -0
  46. package/components/{picker-internal.js → picker.js} +29 -22
  47. package/components/radio.js +2 -2
  48. package/components/select-popover.js +1 -1
  49. package/css/core.css +101 -34
  50. package/css/core.css.map +1 -1
  51. package/css/global.bundle.css +1 -1
  52. package/css/ionic.bundle.css +1 -1
  53. package/css/ionic.bundle.css.map +1 -1
  54. package/css/themes/dark.always.css +122 -0
  55. package/css/themes/dark.always.css.map +1 -0
  56. package/css/themes/dark.class.css +122 -0
  57. package/css/themes/dark.class.css.map +1 -0
  58. package/css/themes/dark.css +3 -0
  59. package/css/themes/dark.css.map +1 -0
  60. package/css/themes/dark.system.css +124 -0
  61. package/css/themes/dark.system.css.map +1 -0
  62. package/css/typography.css +1 -1
  63. package/dist/cjs/{button-active-85665616.js → button-active-d432e262.js} +1 -1
  64. package/dist/cjs/{data-a5109f09.js → data-e2bf21de.js} +1 -1
  65. package/dist/cjs/{gesture-controller-c40c045a.js → gesture-controller-9436f482.js} +1 -0
  66. package/dist/cjs/{index-d1b59ffa.js → index-ee07ed59.js} +1 -1
  67. package/dist/cjs/index.cjs.js +3 -3
  68. package/dist/cjs/ion-action-sheet.cjs.entry.js +5 -5
  69. package/dist/cjs/ion-alert.cjs.entry.js +6 -6
  70. package/dist/cjs/ion-app_8.cjs.entry.js +4 -5
  71. package/dist/cjs/ion-avatar_3.cjs.entry.js +2 -2
  72. package/dist/cjs/ion-back-button.cjs.entry.js +1 -1
  73. package/dist/cjs/ion-backdrop.cjs.entry.js +0 -12
  74. package/dist/cjs/ion-button_2.cjs.entry.js +2 -2
  75. package/dist/cjs/ion-checkbox.cjs.entry.js +2 -2
  76. package/dist/cjs/ion-datetime-button.cjs.entry.js +1 -1
  77. package/dist/cjs/ion-datetime_3.cjs.entry.js +37 -57
  78. package/dist/cjs/ion-fab_3.cjs.entry.js +2 -2
  79. package/dist/cjs/ion-input.cjs.entry.js +2 -2
  80. package/dist/cjs/ion-item-option_3.cjs.entry.js +3 -3
  81. package/dist/cjs/ion-item_8.cjs.entry.js +3 -8
  82. package/dist/cjs/ion-loading.cjs.entry.js +3 -2
  83. package/dist/cjs/ion-menu_3.cjs.entry.js +25 -20
  84. package/dist/cjs/ion-modal.cjs.entry.js +3 -3
  85. package/dist/cjs/ion-nav_2.cjs.entry.js +6 -3
  86. package/dist/cjs/ion-picker-column-option.cjs.entry.js +104 -0
  87. package/dist/cjs/{ion-picker-column-internal.cjs.entry.js → ion-picker-column.cjs.entry.js} +104 -87
  88. package/dist/cjs/{ion-picker-internal.cjs.entry.js → ion-picker.cjs.entry.js} +26 -19
  89. package/dist/cjs/ion-popover.cjs.entry.js +2 -1
  90. package/dist/cjs/ion-progress-bar.cjs.entry.js +2 -2
  91. package/dist/cjs/ion-radio_2.cjs.entry.js +2 -2
  92. package/dist/cjs/ion-range.cjs.entry.js +3 -3
  93. package/dist/cjs/ion-refresher_2.cjs.entry.js +5 -5
  94. package/dist/cjs/ion-reorder_2.cjs.entry.js +1 -1
  95. package/dist/cjs/ion-route_4.cjs.entry.js +1 -1
  96. package/dist/cjs/ion-searchbar.cjs.entry.js +1 -1
  97. package/dist/cjs/ion-segment_2.cjs.entry.js +2 -2
  98. package/dist/cjs/ion-select_3.cjs.entry.js +5 -4
  99. package/dist/cjs/ion-split-pane.cjs.entry.js +24 -14
  100. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +2 -2
  101. package/dist/cjs/ion-textarea.cjs.entry.js +2 -2
  102. package/dist/cjs/ion-toast.cjs.entry.js +5 -5
  103. package/dist/cjs/ion-toggle.cjs.entry.js +3 -3
  104. package/dist/cjs/ionic.cjs.js +1 -1
  105. package/dist/cjs/loader.cjs.js +1 -1
  106. package/dist/cjs/{overlays-8285b485.js → overlays-3afa911d.js} +11 -4
  107. package/dist/cjs/{swipe-back-2a858bbd.js → swipe-back-b8f2330b.js} +2 -2
  108. package/dist/collection/collection-manifest.json +7 -6
  109. package/dist/collection/components/action-sheet/action-sheet.ios.css +3 -3
  110. package/dist/collection/components/action-sheet/test/a11y/action-sheet.e2e.js +23 -14
  111. package/dist/collection/components/alert/alert.ios.css +6 -6
  112. package/dist/collection/components/alert/alert.md.css +6 -6
  113. package/dist/collection/components/alert/test/a11y/alert.e2e.js +22 -9
  114. package/dist/collection/components/back-button/back-button.ios.css +1 -1
  115. package/dist/collection/components/back-button/test/a11y/back-button.e2e.js +21 -0
  116. package/dist/collection/components/backdrop/backdrop.js +0 -12
  117. package/dist/collection/components/badge/badge.ios.css +1 -1
  118. package/dist/collection/components/badge/badge.md.css +1 -1
  119. package/dist/collection/components/badge/test/a11y/badge.e2e.js +18 -0
  120. package/dist/collection/components/button/button.ios.css +11 -11
  121. package/dist/collection/components/button/button.md.css +9 -9
  122. package/dist/collection/components/button/test/a11y/button.e2e.js +48 -0
  123. package/dist/collection/components/button/test/basic/button.e2e.js +1 -1
  124. package/dist/collection/components/button/test/wrap/button.e2e.js +12 -24
  125. package/dist/collection/components/checkbox/checkbox.ios.css +2 -2
  126. package/dist/collection/components/checkbox/checkbox.md.css +2 -2
  127. package/dist/collection/components/checkbox/test/a11y/checkbox.e2e.js +11 -2
  128. package/dist/collection/components/content/content.css +0 -4
  129. package/dist/collection/components/content/content.js +2 -3
  130. package/dist/collection/components/datetime/datetime.ios.css +93 -40
  131. package/dist/collection/components/datetime/datetime.js +24 -36
  132. package/dist/collection/components/datetime/datetime.md.css +96 -38
  133. package/dist/collection/components/datetime/test/a11y/datetime.e2e.js +4 -4
  134. package/dist/collection/components/datetime/test/a11y/datetime.spec.js +6 -9
  135. package/dist/collection/components/datetime/test/basic/datetime.e2e.js +22 -12
  136. package/dist/collection/components/datetime/test/datetime.e2e.js +3 -3
  137. package/dist/collection/components/datetime/test/disable-dates/datetime.e2e.js +1 -1
  138. package/dist/collection/components/datetime/test/disabled/datetime.e2e.js +4 -4
  139. package/dist/collection/components/datetime/test/disabled/datetime.spec.js +4 -4
  140. package/dist/collection/components/datetime/test/display/datetime.e2e.js +9 -9
  141. package/dist/collection/components/datetime/test/locale/datetime.e2e.js +5 -5
  142. package/dist/collection/components/datetime/test/minmax/datetime.e2e.js +17 -17
  143. package/dist/collection/components/datetime/test/month-year-picker/datetime.e2e.js +2 -2
  144. package/dist/collection/components/datetime/test/multiple/datetime.e2e.js +2 -2
  145. package/dist/collection/components/datetime/test/position/datetime.e2e.js +1 -1
  146. package/dist/collection/components/datetime/test/prefer-wheel/datetime.e2e.js +75 -73
  147. package/dist/collection/components/datetime/test/presentation/datetime.e2e.js +4 -4
  148. package/dist/collection/components/datetime/test/readonly/datetime.e2e.js +8 -8
  149. package/dist/collection/components/datetime/test/set-value/datetime.e2e.js +4 -4
  150. package/dist/collection/components/datetime/test/time-label/datetime.e2e.js +2 -2
  151. package/dist/collection/components/datetime/test/values/datetime.e2e.js +19 -16
  152. package/dist/collection/components/datetime/utils/data.js +1 -1
  153. package/dist/collection/components/datetime-button/test/basic/datetime-button.e2e.js +14 -14
  154. package/dist/collection/components/datetime-button/test/disabled/datetime-button.e2e.js +2 -2
  155. package/dist/collection/components/datetime-button/test/multiple/datetime-button.e2e.js +6 -6
  156. package/dist/collection/components/fab-button/fab-button.ios.css +13 -13
  157. package/dist/collection/components/fab-button/fab-button.md.css +4 -4
  158. package/dist/collection/components/fab-button/test/a11y/fab-button.e2e.js +50 -0
  159. package/dist/collection/components/header/test/condense/header.e2e.js +2 -2
  160. package/dist/collection/components/input/input.ios.css +3 -3
  161. package/dist/collection/components/input/input.md.css +3 -3
  162. package/dist/collection/components/input/test/a11y/input.e2e.js +41 -3
  163. package/dist/collection/components/item/item.ios.css +42 -5
  164. package/dist/collection/components/item/item.js +0 -7
  165. package/dist/collection/components/item/item.md.css +43 -6
  166. package/dist/collection/components/item-option/item-option.ios.css +2 -2
  167. package/dist/collection/components/item-option/item-option.md.css +1 -1
  168. package/dist/collection/components/item-sliding/test/a11y/item-sliding.e2e.js +28 -0
  169. package/dist/collection/components/label/label.md.css +1 -1
  170. package/dist/collection/components/label/test/a11y/label.e2e.js +20 -0
  171. package/dist/collection/components/loading/loading.md.css +1 -1
  172. package/dist/collection/components/loading/test/a11y/loading.e2e.js +21 -5
  173. package/dist/collection/components/menu/menu.ios.css +64 -3
  174. package/dist/collection/components/menu/menu.js +19 -13
  175. package/dist/collection/components/menu/menu.md.css +64 -3
  176. package/dist/collection/components/menu-button/menu-button.ios.css +1 -1
  177. package/dist/collection/components/menu-button/test/a11y/menu-button.e2e.js +14 -0
  178. package/dist/collection/components/modal/test/standalone/modal.e2e.js +1 -1
  179. package/dist/collection/components/nav/nav.js +22 -2
  180. package/dist/collection/components/nav/test/nav-controller.spec.js +36 -36
  181. package/dist/collection/components/note/test/a11y/note.e2e.js +6 -6
  182. package/dist/collection/components/picker/picker.ios.css +112 -211
  183. package/dist/collection/components/picker/picker.js +488 -738
  184. package/dist/collection/components/picker/picker.md.css +108 -198
  185. package/dist/collection/components/{picker-internal/test/a11y/picker-internal.e2e.js → picker/test/a11y/picker.e2e.js} +2 -2
  186. package/dist/collection/components/picker/test/basic/picker.e2e.js +99 -13
  187. package/dist/collection/components/picker/test/custom/picker.e2e.js +85 -0
  188. package/dist/collection/components/{picker-internal/test/keyboard-entry/picker-internal.e2e.js → picker/test/keyboard-entry/picker.e2e.js} +79 -42
  189. package/dist/collection/components/{picker-column-internal/picker-column-internal.md.css → picker-column/picker-column.css} +96 -83
  190. package/dist/collection/components/picker-column/picker-column.js +499 -335
  191. package/dist/collection/components/{picker-column-internal/test/basic/picker-column-internal.e2e.js → picker-column/test/basic/picker-column.e2e.js} +8 -8
  192. package/dist/collection/components/picker-column/test/disabled/picker-column.e2e.js +91 -0
  193. package/dist/collection/components/picker-column/test/slots/picker-column.e2e.js +39 -0
  194. package/dist/collection/components/picker-column-option/picker-column-option.ios.css +87 -0
  195. package/dist/collection/components/picker-column-option/picker-column-option.js +173 -0
  196. package/dist/collection/components/{picker-column-internal/picker-column-internal.ios.css → picker-column-option/picker-column-option.md.css} +6 -53
  197. package/dist/collection/components/picker-column-option/test/a11y/picker-column-option.e2e.js +18 -0
  198. package/dist/collection/components/picker-column-option/test/basic/picker-column-option.e2e.js +37 -0
  199. package/dist/collection/components/picker-column-option/test/picker-column-option.spec.js +29 -0
  200. package/dist/collection/components/{picker-internal/picker-internal.md.css → picker-legacy/picker.ios.css} +207 -98
  201. package/dist/collection/components/picker-legacy/picker.js +811 -0
  202. package/dist/collection/components/{picker-internal/picker-internal.ios.css → picker-legacy/picker.md.css} +192 -100
  203. package/dist/collection/components/picker-legacy/test/basic/picker.e2e.js +25 -0
  204. package/dist/collection/components/{picker → picker-legacy}/test/is-open/picker.e2e.js +4 -4
  205. package/dist/collection/components/{picker → picker-legacy}/test/picker-id.spec.js +5 -5
  206. package/dist/collection/components/{picker → picker-legacy}/test/trigger/picker.e2e.js +1 -1
  207. package/dist/collection/components/picker-legacy-column/picker-column.js +419 -0
  208. package/dist/collection/components/{picker-column → picker-legacy-column}/picker-column.md.css +1 -1
  209. package/dist/collection/components/{picker-column → picker-legacy-column}/test/picker-column-aria.spec.js +3 -3
  210. package/dist/collection/components/{picker-column → picker-legacy-column}/test/picker-column-dynamic.spec.js +2 -2
  211. package/dist/collection/components/{picker-column → picker-legacy-column}/test/picker-column.spec.js +2 -2
  212. package/dist/collection/components/{picker-column → picker-legacy-column}/test/standalone/picker-column.e2e.js +3 -3
  213. package/dist/collection/components/progress-bar/progress-bar.ios.css +2 -2
  214. package/dist/collection/components/progress-bar/progress-bar.md.css +2 -2
  215. package/dist/collection/components/progress-bar/test/a11y/progress-bar.e2e.js +24 -0
  216. package/dist/collection/components/radio/radio.ios.css +2 -2
  217. package/dist/collection/components/radio/radio.md.css +2 -2
  218. package/dist/collection/components/radio/test/a11y/radio.e2e.js +114 -81
  219. package/dist/collection/components/range/range.ios.css +1 -1
  220. package/dist/collection/components/range/range.md.css +3 -3
  221. package/dist/collection/components/range/test/a11y/range.e2e.js +18 -8
  222. package/dist/collection/components/refresher/refresher.md.css +2 -2
  223. package/dist/collection/components/refresher/test/a11y/refresher.e2e.js +25 -0
  224. package/dist/collection/components/refresher/test/test.utils.js +1 -1
  225. package/dist/collection/components/refresher-content/refresher-content.js +1 -1
  226. package/dist/collection/components/ripple-effect/test/basic/ripple-effect.e2e.js +2 -2
  227. package/dist/collection/components/router-link/router-link.css +1 -1
  228. package/dist/collection/components/router-link/test/a11y/router-link.e2e.js +23 -0
  229. package/dist/collection/components/searchbar/searchbar.ios.css +1 -1
  230. package/dist/collection/components/segment/test/a11y/segment.e2e.js +23 -0
  231. package/dist/collection/components/segment-button/segment-button.md.css +2 -2
  232. package/dist/collection/components/select/select.ios.css +3 -3
  233. package/dist/collection/components/select/select.md.css +3 -3
  234. package/dist/collection/components/select/test/a11y/select.e2e.js +68 -4
  235. package/dist/collection/components/select-popover/select-popover.md.css +4 -4
  236. package/dist/collection/components/select-popover/test/a11y/select-popover.e2e.js +32 -0
  237. package/dist/collection/components/split-pane/split-pane.ios.css +2 -54
  238. package/dist/collection/components/split-pane/split-pane.js +46 -12
  239. package/dist/collection/components/split-pane/split-pane.md.css +2 -54
  240. package/dist/collection/components/split-pane/test/wrapped-menu/split-pane.e2e.js +41 -0
  241. package/dist/collection/components/tab-bar/tab-bar.ios.css +1 -1
  242. package/dist/collection/components/tab-bar/tab-bar.md.css +1 -1
  243. package/dist/collection/components/textarea/test/a11y/textarea.e2e.js +41 -3
  244. package/dist/collection/components/textarea/textarea.ios.css +3 -3
  245. package/dist/collection/components/textarea/textarea.md.css +3 -3
  246. package/dist/collection/components/toast/test/a11y/toast.e2e.js +56 -24
  247. package/dist/collection/components/toast/toast.ios.css +1 -1
  248. package/dist/collection/components/toast/toast.md.css +2 -2
  249. package/dist/collection/components/toggle/test/a11y/toggle.e2e.js +8 -2
  250. package/dist/collection/components/toggle/toggle.ios.css +2 -2
  251. package/dist/collection/components/toggle/toggle.md.css +2 -2
  252. package/dist/collection/css/test/a11y/typography.e2e.js +18 -0
  253. package/dist/collection/themes/test/colors/theme.e2e.js +114 -0
  254. package/dist/collection/utils/gesture/gesture-controller.js +1 -1
  255. package/dist/collection/utils/overlays.js +11 -4
  256. package/dist/collection/utils/test/overlays/overlays-scroll-blocking.spec.js +65 -0
  257. package/dist/collection/utils/test/playwright/generator.js +1 -0
  258. package/dist/collection/utils/test/playwright/page/utils/set-content.js +1 -1
  259. package/dist/docs.json +500 -41
  260. package/dist/esm/{button-active-b62776db.js → button-active-3bcbd115.js} +1 -1
  261. package/dist/esm/{data-775093f5.js → data-6a31d701.js} +1 -1
  262. package/dist/esm/{gesture-controller-1bf57181.js → gesture-controller-314a54f6.js} +1 -1
  263. package/dist/esm/{index-2cf77112.js → index-39782642.js} +2 -2
  264. package/dist/esm/index.js +3 -3
  265. package/dist/esm/ion-action-sheet.entry.js +5 -5
  266. package/dist/esm/ion-alert.entry.js +6 -6
  267. package/dist/esm/ion-app_8.entry.js +4 -5
  268. package/dist/esm/ion-avatar_3.entry.js +2 -2
  269. package/dist/esm/ion-back-button.entry.js +1 -1
  270. package/dist/esm/ion-backdrop.entry.js +0 -12
  271. package/dist/esm/ion-button_2.entry.js +2 -2
  272. package/dist/esm/ion-checkbox.entry.js +2 -2
  273. package/dist/esm/ion-datetime-button.entry.js +1 -1
  274. package/dist/esm/ion-datetime_3.entry.js +36 -56
  275. package/dist/esm/ion-fab_3.entry.js +2 -2
  276. package/dist/esm/ion-input.entry.js +2 -2
  277. package/dist/esm/ion-item-option_3.entry.js +3 -3
  278. package/dist/esm/ion-item_8.entry.js +3 -8
  279. package/dist/esm/ion-loading.entry.js +3 -2
  280. package/dist/esm/ion-menu_3.entry.js +25 -20
  281. package/dist/esm/ion-modal.entry.js +3 -3
  282. package/dist/esm/ion-nav_2.entry.js +6 -3
  283. package/dist/esm/ion-picker-column-option.entry.js +100 -0
  284. package/dist/esm/{ion-picker-column-internal.entry.js → ion-picker-column.entry.js} +104 -87
  285. package/dist/esm/{ion-picker-internal.entry.js → ion-picker.entry.js} +26 -19
  286. package/dist/esm/ion-popover.entry.js +2 -1
  287. package/dist/esm/ion-progress-bar.entry.js +2 -2
  288. package/dist/esm/ion-radio_2.entry.js +2 -2
  289. package/dist/esm/ion-range.entry.js +3 -3
  290. package/dist/esm/ion-refresher_2.entry.js +5 -5
  291. package/dist/esm/ion-reorder_2.entry.js +1 -1
  292. package/dist/esm/ion-route_4.entry.js +1 -1
  293. package/dist/esm/ion-searchbar.entry.js +1 -1
  294. package/dist/esm/ion-segment_2.entry.js +2 -2
  295. package/dist/esm/ion-select_3.entry.js +5 -4
  296. package/dist/esm/ion-split-pane.entry.js +24 -14
  297. package/dist/esm/ion-tab-bar_2.entry.js +2 -2
  298. package/dist/esm/ion-textarea.entry.js +2 -2
  299. package/dist/esm/ion-toast.entry.js +5 -5
  300. package/dist/esm/ion-toggle.entry.js +3 -3
  301. package/dist/esm/ionic.js +1 -1
  302. package/dist/esm/loader.js +1 -1
  303. package/dist/esm/{overlays-bb824d56.js → overlays-8b24f0d5.js} +11 -4
  304. package/dist/esm/{swipe-back-a6f386fc.js → swipe-back-a8ca7f93.js} +2 -2
  305. package/dist/esm-es5/{button-active-b62776db.js → button-active-3bcbd115.js} +1 -1
  306. package/dist/esm-es5/{gesture-controller-1bf57181.js → gesture-controller-314a54f6.js} +1 -1
  307. package/dist/esm-es5/{index-2cf77112.js → index-39782642.js} +1 -1
  308. package/dist/esm-es5/index.js +1 -1
  309. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  310. package/dist/esm-es5/ion-alert.entry.js +1 -1
  311. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  312. package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
  313. package/dist/esm-es5/ion-back-button.entry.js +1 -1
  314. package/dist/esm-es5/ion-backdrop.entry.js +1 -1
  315. package/dist/esm-es5/ion-button_2.entry.js +1 -1
  316. package/dist/esm-es5/ion-checkbox.entry.js +1 -1
  317. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  318. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  319. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  320. package/dist/esm-es5/ion-input.entry.js +1 -1
  321. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  322. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  323. package/dist/esm-es5/ion-loading.entry.js +1 -1
  324. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  325. package/dist/esm-es5/ion-modal.entry.js +1 -1
  326. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  327. package/dist/esm-es5/ion-picker-column-option.entry.js +4 -0
  328. package/dist/esm-es5/ion-picker-column.entry.js +4 -0
  329. package/dist/esm-es5/ion-picker.entry.js +4 -0
  330. package/dist/esm-es5/ion-popover.entry.js +1 -1
  331. package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
  332. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  333. package/dist/esm-es5/ion-range.entry.js +1 -1
  334. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  335. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  336. package/dist/esm-es5/ion-route_4.entry.js +1 -1
  337. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  338. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  339. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  340. package/dist/esm-es5/ion-split-pane.entry.js +1 -1
  341. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  342. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  343. package/dist/esm-es5/ion-toast.entry.js +1 -1
  344. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  345. package/dist/esm-es5/ionic.js +1 -1
  346. package/dist/esm-es5/loader.js +1 -1
  347. package/dist/esm-es5/overlays-8b24f0d5.js +4 -0
  348. package/dist/esm-es5/swipe-back-a8ca7f93.js +4 -0
  349. package/dist/html.html-data.json +152 -1
  350. package/dist/ionic/index.esm.js +1 -1
  351. package/dist/ionic/ionic.esm.js +1 -1
  352. package/dist/ionic/{p-249633a4.entry.js → p-0055506a.entry.js} +1 -1
  353. package/dist/ionic/p-0708a9c1.system.js +4 -0
  354. package/dist/ionic/p-09890dd9.entry.js +4 -0
  355. package/dist/ionic/{p-c1c57873.system.entry.js → p-0a0a84ce.system.entry.js} +1 -1
  356. package/dist/ionic/p-0d3c5eaa.system.entry.js +4 -0
  357. package/dist/ionic/p-10607f89.entry.js +4 -0
  358. package/dist/ionic/{p-d2707f9d.system.js → p-114ea79c.system.js} +1 -1
  359. package/dist/ionic/{p-41040a92.system.entry.js → p-14311a1d.system.entry.js} +1 -1
  360. package/dist/ionic/p-1a5f0313.system.js +1 -1
  361. package/dist/ionic/{p-c3bfe92d.entry.js → p-1d1ce54e.entry.js} +1 -1
  362. package/dist/ionic/{p-c7c8429a.system.js → p-20d469d0.system.js} +1 -1
  363. package/dist/ionic/p-26976bfc.system.entry.js +4 -0
  364. package/dist/ionic/{p-8084e9cb.entry.js → p-28525772.entry.js} +1 -1
  365. package/dist/ionic/p-2c02fb1c.system.entry.js +4 -0
  366. package/dist/ionic/{p-928e945d.system.entry.js → p-2fda36b6.system.entry.js} +1 -1
  367. package/dist/ionic/p-3065cecc.entry.js +4 -0
  368. package/dist/ionic/{p-b43cf55f.entry.js → p-34f05cec.entry.js} +1 -1
  369. package/dist/ionic/p-381ca6f8.system.entry.js +4 -0
  370. package/dist/ionic/{p-31b2326e.system.js → p-3e1e14d9.system.js} +1 -1
  371. package/dist/ionic/{p-3b83e483.system.entry.js → p-3f3ae637.system.entry.js} +2 -2
  372. package/dist/ionic/{p-d6beb1c9.system.entry.js → p-41dcd6c0.system.entry.js} +1 -1
  373. package/dist/ionic/{p-54c92c77.entry.js → p-42d5f6ae.entry.js} +1 -1
  374. package/dist/ionic/p-4a13a07c.system.entry.js +4 -0
  375. package/dist/ionic/{p-bc6d16ca.entry.js → p-4b94c354.entry.js} +1 -1
  376. package/dist/ionic/p-51abefb7.system.js +4 -0
  377. package/dist/ionic/{p-e150f8fc.entry.js → p-598bd8e2.entry.js} +1 -1
  378. package/dist/ionic/p-5d22095a.entry.js +4 -0
  379. package/dist/ionic/{p-e814f9c0.entry.js → p-67b167bc.entry.js} +1 -1
  380. package/dist/ionic/p-67c1996d.entry.js +4 -0
  381. package/dist/ionic/p-6d42a37b.entry.js +4 -0
  382. package/dist/ionic/p-6db68be9.system.entry.js +4 -0
  383. package/dist/ionic/p-71f30cfc.system.entry.js +4 -0
  384. package/dist/ionic/{p-eb210b21.system.entry.js → p-75017f39.system.entry.js} +1 -1
  385. package/dist/ionic/{p-10c34f0a.system.entry.js → p-7a1ef06a.system.entry.js} +1 -1
  386. package/dist/ionic/{p-b09c8228.entry.js → p-7a2c6bb5.entry.js} +1 -1
  387. package/dist/ionic/p-7a343dca.system.entry.js +4 -0
  388. package/dist/ionic/p-7a3e1f37.system.entry.js +4 -0
  389. package/dist/ionic/{p-4dc3bc8b.entry.js → p-7acc89e0.entry.js} +1 -1
  390. package/dist/ionic/p-7ae141f1.entry.js +4 -0
  391. package/dist/ionic/p-7e8ef0bb.system.entry.js +4 -0
  392. package/dist/ionic/{p-5628d04e.entry.js → p-870453fd.entry.js} +1 -1
  393. package/dist/ionic/{p-cdce5ba3.system.entry.js → p-8a1d33e3.system.entry.js} +1 -1
  394. package/dist/ionic/{p-1f7fc88d.entry.js → p-8aaade76.entry.js} +1 -1
  395. package/dist/ionic/{p-f5d2dc9b.js → p-8ededb41.js} +1 -1
  396. package/dist/ionic/p-94265b3d.entry.js +4 -0
  397. package/dist/ionic/{p-35e1a80f.system.entry.js → p-943caced.system.entry.js} +1 -1
  398. package/dist/ionic/p-95d8071f.entry.js +4 -0
  399. package/dist/ionic/{p-7bae84aa.entry.js → p-9928b546.entry.js} +1 -1
  400. package/dist/ionic/{p-6b9eee40.system.entry.js → p-9a9deb33.system.entry.js} +1 -1
  401. package/dist/ionic/{p-bb3615f7.js → p-9b97df10.js} +1 -1
  402. package/dist/ionic/p-9c9eb63f.system.entry.js +4 -0
  403. package/dist/ionic/{p-db798370.system.entry.js → p-9cbfb298.system.entry.js} +1 -1
  404. package/dist/ionic/{p-0d2b6901.entry.js → p-9cd05453.entry.js} +1 -1
  405. package/dist/ionic/p-a01d6784.system.entry.js +4 -0
  406. package/dist/ionic/{p-c10cc51e.system.entry.js → p-a068b1c7.system.entry.js} +2 -2
  407. package/dist/ionic/{p-2c3842e8.system.entry.js → p-a11e45fe.system.entry.js} +1 -1
  408. package/dist/ionic/p-a259fa5f.system.entry.js +4 -0
  409. package/dist/ionic/p-a60a1ce5.js +4 -0
  410. package/dist/ionic/{p-436bd99a.entry.js → p-a72be676.entry.js} +1 -1
  411. package/dist/ionic/p-acbb36a1.entry.js +4 -0
  412. package/dist/ionic/{p-f865bc9a.entry.js → p-adba40e6.entry.js} +1 -1
  413. package/dist/ionic/{p-1052ef2b.entry.js → p-ae8747aa.entry.js} +1 -1
  414. package/dist/ionic/{p-525b6ac4.system.entry.js → p-bad61026.system.entry.js} +1 -1
  415. package/dist/ionic/p-c33d312f.js +4 -0
  416. package/dist/ionic/{p-688a36c7.entry.js → p-c7bdd72f.entry.js} +1 -1
  417. package/dist/ionic/{p-df62accd.entry.js → p-c9028fdc.entry.js} +1 -1
  418. package/dist/ionic/p-c9b8f9e5.system.entry.js +4 -0
  419. package/dist/ionic/{p-5c2da581.system.entry.js → p-cb0cfc39.system.entry.js} +1 -1
  420. package/dist/ionic/{p-49c52149.system.entry.js → p-cb304e5f.system.entry.js} +1 -1
  421. package/dist/ionic/{p-7510e462.entry.js → p-d545e325.entry.js} +1 -1
  422. package/dist/ionic/p-d6674fed.entry.js +4 -0
  423. package/dist/ionic/{p-8f1ebb7d.system.js → p-df75bd2c.system.js} +1 -1
  424. package/dist/ionic/p-dfd21411.system.entry.js +4 -0
  425. package/dist/ionic/p-e22bf111.js +4 -0
  426. package/dist/ionic/p-e652d9e4.entry.js +4 -0
  427. package/dist/ionic/p-ea4b254e.entry.js +4 -0
  428. package/dist/ionic/p-ea9a8424.system.entry.js +4 -0
  429. package/dist/ionic/p-eaa4e76f.system.entry.js +4 -0
  430. package/dist/ionic/{p-dc1d883c.system.entry.js → p-ee1214e0.system.entry.js} +1 -1
  431. package/dist/ionic/{p-41aa2662.entry.js → p-eeb87a49.entry.js} +1 -1
  432. package/dist/ionic/{p-b6f6f00e.entry.js → p-efa1c7f0.entry.js} +1 -1
  433. package/dist/ionic/{p-3dbaaa5b.system.entry.js → p-f2ed3039.system.entry.js} +1 -1
  434. package/dist/ionic/{p-1a0bf247.system.entry.js → p-fc58a772.system.entry.js} +1 -1
  435. package/dist/ionic/p-fdc3ff96.entry.js +4 -0
  436. package/dist/types/components/backdrop/backdrop.d.ts +0 -3
  437. package/dist/types/components/datetime/datetime.d.ts +0 -1
  438. package/dist/types/components/datetime/utils/data.d.ts +11 -7
  439. package/dist/types/components/item/item.d.ts +0 -1
  440. package/dist/types/components/menu/menu.d.ts +12 -2
  441. package/dist/types/components/nav/nav.d.ts +4 -1
  442. package/dist/types/components/picker/picker-interfaces.d.ts +8 -0
  443. package/dist/types/components/picker/picker.d.ts +75 -129
  444. package/dist/types/components/picker-column/picker-column-interfaces.d.ts +4 -0
  445. package/dist/types/components/picker-column/picker-column.d.ts +99 -39
  446. package/dist/types/components/picker-column-option/picker-column-option.d.ts +66 -0
  447. package/dist/types/components/picker-legacy/picker.d.ts +158 -0
  448. package/dist/types/components/picker-legacy-column/picker-column.d.ts +46 -0
  449. package/dist/types/components/split-pane/split-pane.d.ts +14 -2
  450. package/dist/types/components.d.ts +159 -122
  451. package/dist/types/interface.d.ts +1 -1
  452. package/dist/types/utils/config.d.ts +2 -2
  453. package/dist/types/utils/gesture/gesture-controller.d.ts +1 -0
  454. package/dist/types/utils/overlays.d.ts +5 -2
  455. package/hydrate/index.js +1462 -1350
  456. package/package.json +2 -2
  457. package/components/ion-picker-column-internal.d.ts +0 -11
  458. package/components/ion-picker-column-internal.js +0 -9
  459. package/components/ion-picker-internal.js +0 -9
  460. package/components/picker-column-internal.js +0 -390
  461. package/dist/collection/components/item/test/item.spec.js +0 -20
  462. package/dist/collection/components/picker-column-internal/picker-column-internal.js +0 -566
  463. package/dist/collection/components/picker-column-internal/test/disabled/picker-column-internal.e2e.js +0 -162
  464. package/dist/collection/components/picker-internal/picker-internal.js +0 -560
  465. package/dist/collection/components/picker-internal/test/basic/picker-internal.e2e.js +0 -118
  466. package/dist/esm-es5/ion-picker-column-internal.entry.js +0 -4
  467. package/dist/esm-es5/ion-picker-internal.entry.js +0 -4
  468. package/dist/esm-es5/overlays-bb824d56.js +0 -4
  469. package/dist/esm-es5/swipe-back-a6f386fc.js +0 -4
  470. package/dist/ionic/p-024e2739.entry.js +0 -4
  471. package/dist/ionic/p-06128c8c.entry.js +0 -4
  472. package/dist/ionic/p-06f72943.system.entry.js +0 -4
  473. package/dist/ionic/p-35ce400e.system.js +0 -4
  474. package/dist/ionic/p-3de38800.system.entry.js +0 -4
  475. package/dist/ionic/p-5aecd304.system.entry.js +0 -4
  476. package/dist/ionic/p-5f698182.entry.js +0 -4
  477. package/dist/ionic/p-61bf9f6f.system.entry.js +0 -4
  478. package/dist/ionic/p-6899d5af.entry.js +0 -4
  479. package/dist/ionic/p-6a6477b2.js +0 -4
  480. package/dist/ionic/p-6e165986.system.entry.js +0 -4
  481. package/dist/ionic/p-719ad110.system.entry.js +0 -4
  482. package/dist/ionic/p-73547cf9.entry.js +0 -4
  483. package/dist/ionic/p-7a02dd61.system.entry.js +0 -4
  484. package/dist/ionic/p-7ffe791a.system.js +0 -4
  485. package/dist/ionic/p-80ddd0c1.entry.js +0 -4
  486. package/dist/ionic/p-87e10168.system.entry.js +0 -4
  487. package/dist/ionic/p-89c28901.system.entry.js +0 -4
  488. package/dist/ionic/p-8bad1486.system.entry.js +0 -4
  489. package/dist/ionic/p-90000ff6.js +0 -4
  490. package/dist/ionic/p-9cf0846d.system.entry.js +0 -4
  491. package/dist/ionic/p-a0953474.entry.js +0 -4
  492. package/dist/ionic/p-a2d75455.entry.js +0 -4
  493. package/dist/ionic/p-a706cf11.system.entry.js +0 -4
  494. package/dist/ionic/p-aca77953.entry.js +0 -4
  495. package/dist/ionic/p-afafbba0.entry.js +0 -4
  496. package/dist/ionic/p-ba4890eb.system.entry.js +0 -4
  497. package/dist/ionic/p-beeceaf5.system.entry.js +0 -4
  498. package/dist/ionic/p-c4177035.entry.js +0 -4
  499. package/dist/ionic/p-c48a9ef3.system.entry.js +0 -4
  500. package/dist/ionic/p-cb301b9a.entry.js +0 -4
  501. package/dist/ionic/p-eb80ca40.entry.js +0 -4
  502. package/dist/ionic/p-f48a49ae.system.entry.js +0 -4
  503. package/dist/ionic/p-fd1a0431.js +0 -4
  504. package/dist/types/components/picker-column-internal/picker-column-internal-interfaces.d.ts +0 -5
  505. package/dist/types/components/picker-column-internal/picker-column-internal.d.ts +0 -102
  506. package/dist/types/components/picker-internal/picker-internal-interfaces.d.ts +0 -8
  507. package/dist/types/components/picker-internal/picker-internal.d.ts +0 -102
  508. /package/dist/collection/components/{picker-internal/picker-internal-interfaces.js → picker/picker-interfaces.js} +0 -0
  509. /package/dist/collection/components/{picker-column-internal/picker-column-internal-interfaces.js → picker-column/picker-column-interfaces.js} +0 -0
  510. /package/dist/collection/components/{picker → picker-legacy}/animations/ios.enter.js +0 -0
  511. /package/dist/collection/components/{picker → picker-legacy}/animations/ios.leave.js +0 -0
  512. /package/dist/collection/components/{picker → picker-legacy}/picker-interface.js +0 -0
  513. /package/dist/collection/components/{picker-column → picker-legacy-column}/picker-column.ios.css +0 -0
  514. /package/dist/collection/components/{picker-column → picker-legacy-column}/test/test.utils.js +0 -0
  515. /package/dist/esm-es5/{data-775093f5.js → data-6a31d701.js} +0 -0
  516. /package/dist/ionic/{p-87bb3735.system.js → p-7ff4359e.system.js} +0 -0
  517. /package/dist/ionic/{p-18cae04f.js → p-a64accf5.js} +0 -0
  518. /package/dist/types/components/{picker → picker-legacy}/animations/ios.enter.d.ts +0 -0
  519. /package/dist/types/components/{picker → picker-legacy}/animations/ios.leave.d.ts +0 -0
  520. /package/dist/types/components/{picker → picker-legacy}/picker-interface.d.ts +0 -0
  521. /package/dist/types/components/{picker-column → picker-legacy-column}/test/test.utils.d.ts +0 -0
@@ -100,6 +100,14 @@
100
100
  * @prop --highlight-color-valid: The color of the highlight on the item when valid. Only applies to inputs and textareas using the legacy form syntax. DEPRECATED: Highlights can be styled on `ion-input` or `ion-textarea` when using the modern form syntax.
101
101
  * @prop --highlight-color-invalid: The color of the highlight on the item when invalid. Only applies to inputs and textareas using the legacy form syntax. DEPRECATED: Highlights can be styled on `ion-input` or `ion-textarea` when using the modern form syntax.
102
102
  */
103
+ /**
104
+ * We change the minimum width as the
105
+ * font size changes. Using a fixed minimum
106
+ * width means that fewer and fewer characters
107
+ * can be displayed in the same space as the
108
+ * text grows.
109
+ */
110
+ --inner-min-width: 4rem;
103
111
  --border-radius: 0px;
104
112
  --border-width: 0px;
105
113
  --border-style: solid;
@@ -230,6 +238,7 @@
230
238
  /* stylelint-enable */
231
239
  display: flex;
232
240
  position: relative;
241
+ flex-wrap: wrap;
233
242
  align-items: inherit;
234
243
  justify-content: inherit;
235
244
  width: 100%;
@@ -261,6 +270,10 @@
261
270
  }
262
271
  }
263
272
 
273
+ :host(.item-legacy) .item-native {
274
+ flex-wrap: unset;
275
+ }
276
+
264
277
  .item-native::-moz-focus-inner {
265
278
  border: 0;
266
279
  }
@@ -296,10 +309,20 @@ button, a {
296
309
  /* stylelint-enable */
297
310
  display: flex;
298
311
  position: relative;
299
- flex: 1;
312
+ flex: 1 0 0;
300
313
  flex-direction: inherit;
314
+ flex-wrap: wrap;
301
315
  align-items: inherit;
302
316
  align-self: stretch;
317
+ /**
318
+ * The min-width defines when the
319
+ * content in the default slot should
320
+ * stop wrapping/truncating within its own
321
+ * container. At this point the entire
322
+ * container will wrap to the next line.
323
+ */
324
+ min-width: var(--inner-min-width);
325
+ max-width: 100%;
303
326
  min-height: inherit;
304
327
  border-width: var(--inner-border-width);
305
328
  border-style: var(--border-style);
@@ -325,6 +348,12 @@ button, a {
325
348
  }
326
349
  }
327
350
 
351
+ :host(.item-legacy) .item-inner {
352
+ flex: 1;
353
+ flex-wrap: unset;
354
+ max-width: unset;
355
+ }
356
+
328
357
  .item-bottom {
329
358
  margin-left: 0;
330
359
  margin-right: 0;
@@ -403,15 +432,23 @@ button, a {
403
432
 
404
433
  .input-wrapper {
405
434
  display: flex;
406
- flex: 1;
435
+ flex: 1 0 auto;
407
436
  flex-direction: inherit;
437
+ flex-wrap: wrap;
408
438
  align-items: inherit;
409
439
  align-self: stretch;
440
+ max-width: 100%;
410
441
  text-overflow: ellipsis;
411
442
  overflow: inherit;
412
443
  box-sizing: border-box;
413
444
  }
414
445
 
446
+ :host(.item-legacy) .input-wrapper {
447
+ flex: 1;
448
+ flex-wrap: unset;
449
+ max-width: unset;
450
+ }
451
+
415
452
  :host(.item-label-stacked),
416
453
  :host(.item-label-floating) {
417
454
  align-items: start;
@@ -663,9 +700,9 @@ ion-ripple-effect {
663
700
  --border-color: var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-250, #c8c7cc)));
664
701
  --color: var(--ion-item-color, var(--ion-text-color, #000));
665
702
  --highlight-height: 0px;
666
- --highlight-color-focused: var(--ion-color-primary, #3880ff);
667
- --highlight-color-valid: var(--ion-color-success, #2dd36f);
668
- --highlight-color-invalid: var(--ion-color-danger, #eb445a);
703
+ --highlight-color-focused: var(--ion-color-primary, #0054e9);
704
+ --highlight-color-valid: var(--ion-color-success, #2dd55b);
705
+ --highlight-color-invalid: var(--ion-color-danger, #c5000f);
669
706
  --bottom-padding-start: 0px;
670
707
  font-size: 1rem;
671
708
  }
@@ -45,10 +45,6 @@ export class Item {
45
45
  this.counterFormatter = undefined;
46
46
  this.counterString = undefined;
47
47
  }
48
- buttonChanged() {
49
- // Update the focusable option when the button option is changed
50
- this.focusable = this.isFocusable();
51
- }
52
48
  counterFormatterChanged() {
53
49
  this.updateCounterOutput(this.getFirstInput());
54
50
  }
@@ -633,9 +629,6 @@ export class Item {
633
629
  static get elementRef() { return "el"; }
634
630
  static get watchers() {
635
631
  return [{
636
- "propName": "button",
637
- "methodName": "buttonChanged"
638
- }, {
639
632
  "propName": "counterFormatter",
640
633
  "methodName": "counterFormatterChanged"
641
634
  }];
@@ -100,6 +100,14 @@
100
100
  * @prop --highlight-color-valid: The color of the highlight on the item when valid. Only applies to inputs and textareas using the legacy form syntax. DEPRECATED: Highlights can be styled on `ion-input` or `ion-textarea` when using the modern form syntax.
101
101
  * @prop --highlight-color-invalid: The color of the highlight on the item when invalid. Only applies to inputs and textareas using the legacy form syntax. DEPRECATED: Highlights can be styled on `ion-input` or `ion-textarea` when using the modern form syntax.
102
102
  */
103
+ /**
104
+ * We change the minimum width as the
105
+ * font size changes. Using a fixed minimum
106
+ * width means that fewer and fewer characters
107
+ * can be displayed in the same space as the
108
+ * text grows.
109
+ */
110
+ --inner-min-width: 4rem;
103
111
  --border-radius: 0px;
104
112
  --border-width: 0px;
105
113
  --border-style: solid;
@@ -230,6 +238,7 @@
230
238
  /* stylelint-enable */
231
239
  display: flex;
232
240
  position: relative;
241
+ flex-wrap: wrap;
233
242
  align-items: inherit;
234
243
  justify-content: inherit;
235
244
  width: 100%;
@@ -261,6 +270,10 @@
261
270
  }
262
271
  }
263
272
 
273
+ :host(.item-legacy) .item-native {
274
+ flex-wrap: unset;
275
+ }
276
+
264
277
  .item-native::-moz-focus-inner {
265
278
  border: 0;
266
279
  }
@@ -296,10 +309,20 @@ button, a {
296
309
  /* stylelint-enable */
297
310
  display: flex;
298
311
  position: relative;
299
- flex: 1;
312
+ flex: 1 0 0;
300
313
  flex-direction: inherit;
314
+ flex-wrap: wrap;
301
315
  align-items: inherit;
302
316
  align-self: stretch;
317
+ /**
318
+ * The min-width defines when the
319
+ * content in the default slot should
320
+ * stop wrapping/truncating within its own
321
+ * container. At this point the entire
322
+ * container will wrap to the next line.
323
+ */
324
+ min-width: var(--inner-min-width);
325
+ max-width: 100%;
303
326
  min-height: inherit;
304
327
  border-width: var(--inner-border-width);
305
328
  border-style: var(--border-style);
@@ -325,6 +348,12 @@ button, a {
325
348
  }
326
349
  }
327
350
 
351
+ :host(.item-legacy) .item-inner {
352
+ flex: 1;
353
+ flex-wrap: unset;
354
+ max-width: unset;
355
+ }
356
+
328
357
  .item-bottom {
329
358
  margin-left: 0;
330
359
  margin-right: 0;
@@ -403,15 +432,23 @@ button, a {
403
432
 
404
433
  .input-wrapper {
405
434
  display: flex;
406
- flex: 1;
435
+ flex: 1 0 auto;
407
436
  flex-direction: inherit;
437
+ flex-wrap: wrap;
408
438
  align-items: inherit;
409
439
  align-self: stretch;
440
+ max-width: 100%;
410
441
  text-overflow: ellipsis;
411
442
  overflow: inherit;
412
443
  box-sizing: border-box;
413
444
  }
414
445
 
446
+ :host(.item-legacy) .input-wrapper {
447
+ flex: 1;
448
+ flex-wrap: unset;
449
+ max-width: unset;
450
+ }
451
+
415
452
  :host(.item-label-stacked),
416
453
  :host(.item-label-floating) {
417
454
  align-items: start;
@@ -763,9 +800,9 @@ ion-ripple-effect {
763
800
  --inner-padding-end: 16px;
764
801
  --inner-border-width: 0 0 1px 0;
765
802
  --highlight-height: 1px;
766
- --highlight-color-focused: var(--ion-color-primary, #3880ff);
767
- --highlight-color-valid: var(--ion-color-success, #2dd36f);
768
- --highlight-color-invalid: var(--ion-color-danger, #eb445a);
803
+ --highlight-color-focused: var(--ion-color-primary, #0054e9);
804
+ --highlight-color-valid: var(--ion-color-success, #2dd55b);
805
+ --highlight-color-invalid: var(--ion-color-danger, #c5000f);
769
806
  font-size: 1rem;
770
807
  font-weight: normal;
771
808
  text-transform: none;
@@ -1063,7 +1100,7 @@ ion-ripple-effect {
1063
1100
  :host(.ion-focused:not(.ion-color)) ::slotted(.label-floating),
1064
1101
  :host(.item-has-focus:not(.ion-color)) ::slotted(.label-stacked),
1065
1102
  :host(.item-has-focus:not(.ion-color)) ::slotted(.label-floating) {
1066
- color: var(--ion-color-primary, #3880ff);
1103
+ color: var(--ion-color-primary, #0054e9);
1067
1104
  }
1068
1105
 
1069
1106
  :host(.ion-color) {
@@ -58,7 +58,7 @@
58
58
  * @prop --background: Background of the item option
59
59
  * @prop --color: Color of the item option
60
60
  */
61
- --background: var(--ion-color-primary, #3880ff);
61
+ --background: var(--ion-color-primary, #0054e9);
62
62
  --color: var(--ion-color-primary-contrast, #fff);
63
63
  background: var(--background);
64
64
  color: var(--color);
@@ -234,7 +234,7 @@
234
234
  }
235
235
 
236
236
  :host(.ion-activated) {
237
- background: var(--ion-color-primary-shade, #3171e0);
237
+ background: var(--ion-color-primary-shade, #004acd);
238
238
  }
239
239
 
240
240
  :host(.ion-color.ion-activated) {
@@ -58,7 +58,7 @@
58
58
  * @prop --background: Background of the item option
59
59
  * @prop --color: Color of the item option
60
60
  */
61
- --background: var(--ion-color-primary, #3880ff);
61
+ --background: var(--ion-color-primary, #0054e9);
62
62
  --color: var(--ion-color-primary-contrast, #fff);
63
63
  background: var(--background);
64
64
  color: var(--color);
@@ -1,8 +1,36 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
+ import AxeBuilder from "@axe-core/playwright";
5
+ import { expect } from "@playwright/test";
4
6
  import { configs, test } from "../../../../utils/test/playwright/index";
5
7
  import { testSlidingItem } from "../test.utils";
8
+ configs({ directions: ['ltr'], themes: ['light', 'dark'] }).forEach(({ title, config }) => {
9
+ test.describe(title('item-sliding: a11y for ion-color()'), () => {
10
+ test('should not have accessibility violations', async ({ page }) => {
11
+ await page.setContent(`
12
+ <main>
13
+ <ion-item-sliding id="axe">
14
+ <ion-item>
15
+ <ion-label>Sliding Item with End Options</ion-label>
16
+ </ion-item>
17
+
18
+ <ion-item-options>
19
+ <ion-item-option>Favorite</ion-item-option>
20
+ <ion-item-option class="ion-activated">Activated</ion-item-option>
21
+ </ion-item-options>
22
+ </ion-item-sliding>
23
+ </main>
24
+ `, config);
25
+ await page.locator(`#axe`).evaluate(async (el) => {
26
+ await el.open('end');
27
+ });
28
+ await page.waitForChanges();
29
+ const results = await new AxeBuilder({ page }).analyze();
30
+ expect(results.violations).toEqual([]);
31
+ });
32
+ });
33
+ });
6
34
  /**
7
35
  * This behavior does not vary across directions
8
36
  */
@@ -348,7 +348,7 @@
348
348
  :host-context(.ion-focused).label-floating:not(.ion-color),
349
349
  :host-context(.item-has-focus).label-stacked:not(.ion-color),
350
350
  :host-context(.item-has-focus).label-floating:not(.ion-color) {
351
- color: var(--ion-color-primary, #3880ff);
351
+ color: var(--ion-color-primary, #0054e9);
352
352
  }
353
353
 
354
354
  :host-context(.ion-focused.ion-color).label-stacked:not(.ion-color),
@@ -1,6 +1,7 @@
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";
6
7
  configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
@@ -64,6 +65,25 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
64
65
  });
65
66
  });
66
67
  });
68
+ configs({ directions: ['ltr'], modes: ['md'], themes: ['light', 'dark'] }).forEach(({ title, config }) => {
69
+ test.describe(title('label: a11y for ion-color()'), () => {
70
+ test('should not have accessibility violations when focused', async ({ page }) => {
71
+ /**
72
+ * All page content should be contained by landmarks (main, nav, etc.)
73
+ * By containing the badge in a main element, we can avoid this violation.
74
+ */
75
+ await page.setContent(`
76
+ <main>
77
+ <div class="ion-focused">
78
+ <ion-label position="stacked">Default Label</ion-label>
79
+ </div>
80
+ </main>
81
+ `, config);
82
+ const results = await new AxeBuilder({ page }).analyze();
83
+ expect(results.violations).toEqual([]);
84
+ });
85
+ });
86
+ });
67
87
  configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
68
88
  test.describe(title('label: text wrapping in item'), () => {
69
89
  test('long text should not cause label to expand infinitely', async ({ page }) => {
@@ -173,7 +173,7 @@ ion-spinner {
173
173
  --background: var(--ion-color-step-50, #f2f2f2);
174
174
  --max-width: 280px;
175
175
  --max-height: 90%;
176
- --spinner-color: var(--ion-color-primary, #3880ff);
176
+ --spinner-color: var(--ion-color-primary, #0054e9);
177
177
  --backdrop-opacity: var(--ion-backdrop-opacity, 0.32);
178
178
  color: var(--ion-color-step-850, #262626);
179
179
  font-size: 0.875rem;
@@ -4,20 +4,36 @@
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({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => {
7
+ configs({ modes: ['ios'], directions: ['ltr'], themes: ['light', 'dark'] }).forEach(({ title, config }) => {
8
8
  test.describe(title('loading: a11y'), () => {
9
9
  test('should set aria-labelledby with a message', async ({ page }) => {
10
- await page.goto('/src/components/loading/test/a11y', config);
10
+ await page.setContent(`
11
+ <ion-loading></ion-loading>
12
+
13
+ <script>
14
+ const loading = document.querySelector('ion-loading');
15
+ loading.message = 'Loading';
16
+ </script>
17
+ `, config);
11
18
  const ionLoadingDidPresent = await page.spyOnEvent('ionLoadingDidPresent');
12
- await page.click('#open-message-loading');
19
+ const loading = page.locator('ion-loading');
20
+ await loading.evaluate((el) => el.present());
13
21
  await ionLoadingDidPresent.next();
14
22
  const results = await new AxeBuilder({ page }).analyze();
15
23
  expect(results.violations).toEqual([]);
16
24
  });
17
25
  test('should set aria-labelledby with a label', async ({ page }) => {
18
- await page.goto('/src/components/loading/test/a11y', config);
26
+ await page.setContent(`
27
+ <ion-loading aria-label="Loading"></ion-loading>
28
+
29
+ <script>
30
+ const loading = document.querySelector('ion-loading');
31
+ loading.spinner = 'bubbles';
32
+ </script>
33
+ `, config);
19
34
  const ionLoadingDidPresent = await page.spyOnEvent('ionLoadingDidPresent');
20
- await page.click('#open-label-loading');
35
+ const loading = page.locator('ion-loading');
36
+ await loading.evaluate((el) => el.present());
21
37
  await ionLoadingDidPresent.next();
22
38
  const results = await new AxeBuilder({ page }).analyze();
23
39
  expect(results.violations).toEqual([]);
@@ -295,10 +295,49 @@ ion-backdrop {
295
295
  cursor: pointer;
296
296
  }
297
297
 
298
+ /**
299
+ * The split pane styles for menu are defined
300
+ * in the menu stylesheets instead in the split pane
301
+ * stylesheets with ::slotted to allow for menus
302
+ * to be wrapped in custom components.
303
+ * If we used ::slotted to target the menu
304
+ * then menus wrapped in components would never
305
+ * receive these styles because they are not
306
+ * children of the split pane.
307
+ */
308
+ /**
309
+ * Do not pass CSS Variables down on larger
310
+ * screens as we want them to affect the outer
311
+ * `ion-menu` rather than the inner content
312
+ */
298
313
  :host(.menu-pane-visible) {
299
- width: var(--width);
300
- min-width: var(--min-width);
301
- max-width: var(--max-width);
314
+ flex: 0 1 auto;
315
+ width: var(--side-width, var(--width));
316
+ min-width: var(--side-min-width, var(--min-width));
317
+ max-width: var(--side-max-width, var(--max-width));
318
+ }
319
+
320
+ :host(.menu-pane-visible.split-pane-side) {
321
+ left: 0;
322
+ right: 0;
323
+ top: 0;
324
+ bottom: 0;
325
+ position: relative;
326
+ box-shadow: none;
327
+ z-index: 0;
328
+ }
329
+
330
+ :host(.menu-pane-visible.split-pane-side.menu-enabled) {
331
+ display: flex;
332
+ flex-shrink: 0;
333
+ }
334
+
335
+ :host(.menu-pane-visible.split-pane-side) {
336
+ order: -1;
337
+ }
338
+
339
+ :host(.menu-pane-visible.split-pane-side[side=end]) {
340
+ order: 1;
302
341
  }
303
342
 
304
343
  :host(.menu-pane-visible) .menu-inner {
@@ -314,6 +353,28 @@ ion-backdrop {
314
353
  display: hidden !important;
315
354
  }
316
355
 
356
+ :host(.menu-pane-visible.split-pane-side) {
357
+ -webkit-border-start: 0;
358
+ border-inline-start: 0;
359
+ -webkit-border-end: var(--border);
360
+ border-inline-end: var(--border);
361
+ border-top: 0;
362
+ border-bottom: 0;
363
+ min-width: var(--side-min-width);
364
+ max-width: var(--side-max-width);
365
+ }
366
+
367
+ :host(.menu-pane-visible.split-pane-side[side=end]) {
368
+ -webkit-border-start: var(--border);
369
+ border-inline-start: var(--border);
370
+ -webkit-border-end: 0;
371
+ border-inline-end: 0;
372
+ border-top: 0;
373
+ border-bottom: 0;
374
+ min-width: var(--side-min-width);
375
+ max-width: var(--side-max-width);
376
+ }
377
+
317
378
  /**
318
379
  * Convert a font size to a dynamic font size.
319
380
  * Fonts that participate in Dynamic Type should use
@@ -7,6 +7,7 @@ import { GESTURE_CONTROLLER } from "../../utils/gesture/index";
7
7
  import { inheritAriaAttributes, assert, clamp, isEndSide as isEnd } from "../../utils/helpers";
8
8
  import { menuController } from "../../utils/menu-controller/index";
9
9
  import { getPresentedOverlay } from "../../utils/overlays";
10
+ import { hostContext } from "../../utils/theme";
10
11
  import { config } from "../../global/config";
11
12
  import { getIonMode } from "../../global/ionic-global";
12
13
  const iosEasing = 'cubic-bezier(0.32,0.72,0,1)';
@@ -138,6 +139,19 @@ export class Menu {
138
139
  }
139
140
  async componentDidLoad() {
140
141
  this.didLoad = true;
142
+ /**
143
+ * A menu inside of a split pane is assumed
144
+ * to be a side pane.
145
+ *
146
+ * When the menu is loaded it needs to
147
+ * see if it should be considered visible inside
148
+ * of the split pane. If the split pane is
149
+ * hidden then the menu should be too.
150
+ */
151
+ const splitPane = this.el.closest('ion-split-pane');
152
+ if (splitPane !== null) {
153
+ this.isPaneVisible = await splitPane.isVisible();
154
+ }
141
155
  this.menuChanged();
142
156
  this.updateState();
143
157
  }
@@ -173,20 +187,11 @@ export class Menu {
173
187
  this.contentEl = undefined;
174
188
  }
175
189
  onSplitPaneChanged(ev) {
176
- const { target } = ev;
177
190
  const closestSplitPane = this.el.closest('ion-split-pane');
178
- /**
179
- * Menu listens on the body for "ionSplitPaneVisible".
180
- * However, this means the callback will run any time
181
- * a SplitPane changes visibility. As a result, we only want
182
- * Menu's visibility state to update if its parent SplitPane
183
- * changes visibility.
184
- */
185
- if (target !== closestSplitPane) {
186
- return;
191
+ if (closestSplitPane !== null && closestSplitPane === ev.target) {
192
+ this.isPaneVisible = ev.detail.visible;
193
+ this.updateState();
187
194
  }
188
- this.isPaneVisible = ev.detail.isPane(this.el);
189
- this.updateState();
190
195
  }
191
196
  onBackdropClick(ev) {
192
197
  // TODO(FW-2832): type (CustomEvent triggers errors which should be sorted)
@@ -593,7 +598,7 @@ export class Menu {
593
598
  }
594
599
  }
595
600
  render() {
596
- const { type, disabled, isPaneVisible, inheritedAttributes, side } = this;
601
+ const { type, disabled, el, isPaneVisible, inheritedAttributes, side } = this;
597
602
  const mode = getIonMode(this);
598
603
  return (h(Host, { role: "navigation", "aria-label": inheritedAttributes['aria-label'] || 'menu', class: {
599
604
  [mode]: true,
@@ -601,6 +606,7 @@ export class Menu {
601
606
  'menu-enabled': !disabled,
602
607
  [`menu-side-${side}`]: true,
603
608
  'menu-pane-visible': isPaneVisible,
609
+ 'split-pane-side': hostContext('ion-split-pane', el),
604
610
  } }, h("div", { class: "menu-inner", part: "container", ref: (el) => (this.menuInnerEl = el) }, h("slot", null)), h("ion-backdrop", { ref: (el) => (this.backdropEl = el), class: "menu-backdrop", tappable: false, stopPropagation: false, part: "backdrop" })));
605
611
  }
606
612
  static get is() { return "ion-menu"; }
@@ -295,10 +295,49 @@ ion-backdrop {
295
295
  cursor: pointer;
296
296
  }
297
297
 
298
+ /**
299
+ * The split pane styles for menu are defined
300
+ * in the menu stylesheets instead in the split pane
301
+ * stylesheets with ::slotted to allow for menus
302
+ * to be wrapped in custom components.
303
+ * If we used ::slotted to target the menu
304
+ * then menus wrapped in components would never
305
+ * receive these styles because they are not
306
+ * children of the split pane.
307
+ */
308
+ /**
309
+ * Do not pass CSS Variables down on larger
310
+ * screens as we want them to affect the outer
311
+ * `ion-menu` rather than the inner content
312
+ */
298
313
  :host(.menu-pane-visible) {
299
- width: var(--width);
300
- min-width: var(--min-width);
301
- max-width: var(--max-width);
314
+ flex: 0 1 auto;
315
+ width: var(--side-width, var(--width));
316
+ min-width: var(--side-min-width, var(--min-width));
317
+ max-width: var(--side-max-width, var(--max-width));
318
+ }
319
+
320
+ :host(.menu-pane-visible.split-pane-side) {
321
+ left: 0;
322
+ right: 0;
323
+ top: 0;
324
+ bottom: 0;
325
+ position: relative;
326
+ box-shadow: none;
327
+ z-index: 0;
328
+ }
329
+
330
+ :host(.menu-pane-visible.split-pane-side.menu-enabled) {
331
+ display: flex;
332
+ flex-shrink: 0;
333
+ }
334
+
335
+ :host(.menu-pane-visible.split-pane-side) {
336
+ order: -1;
337
+ }
338
+
339
+ :host(.menu-pane-visible.split-pane-side[side=end]) {
340
+ order: 1;
302
341
  }
303
342
 
304
343
  :host(.menu-pane-visible) .menu-inner {
@@ -314,6 +353,28 @@ ion-backdrop {
314
353
  display: hidden !important;
315
354
  }
316
355
 
356
+ :host(.menu-pane-visible.split-pane-side) {
357
+ -webkit-border-start: 0;
358
+ border-inline-start: 0;
359
+ -webkit-border-end: var(--border);
360
+ border-inline-end: var(--border);
361
+ border-top: 0;
362
+ border-bottom: 0;
363
+ min-width: var(--side-min-width);
364
+ max-width: var(--side-max-width);
365
+ }
366
+
367
+ :host(.menu-pane-visible.split-pane-side[side=end]) {
368
+ -webkit-border-start: var(--border);
369
+ border-inline-start: var(--border);
370
+ -webkit-border-end: 0;
371
+ border-inline-end: 0;
372
+ border-top: 0;
373
+ border-bottom: 0;
374
+ min-width: var(--side-min-width);
375
+ max-width: var(--side-max-width);
376
+ }
377
+
317
378
  /**
318
379
  * Convert a font size to a dynamic font size.
319
380
  * Fonts that participate in Dynamic Type should use
@@ -261,7 +261,7 @@ ion-icon {
261
261
  --background-focused: currentColor;
262
262
  --background-focused-opacity: .1;
263
263
  --border-radius: 4px;
264
- --color: var(--ion-color-primary, #3880ff);
264
+ --color: var(--ion-color-primary, #0054e9);
265
265
  --padding-start: 5px;
266
266
  --padding-end: 5px;
267
267
  min-height: 32px;
@@ -4,6 +4,20 @@
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 ios mode uses ion-color() for the menu button
9
+ */
10
+ configs({ directions: ['ltr'], modes: ['ios'], themes: ['light', 'dark'] }).forEach(({ title, config }) => {
11
+ test.describe(title('menu-button: a11y for ion-color()'), () => {
12
+ test('should not have accessibility violations', async ({ page }) => {
13
+ await page.setContent(`
14
+ <ion-menu-button auto-hide="false"></ion-menu-button>
15
+ `, config);
16
+ const results = await new AxeBuilder({ page }).analyze();
17
+ expect(results.violations).toEqual([]);
18
+ });
19
+ });
20
+ });
7
21
  configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
8
22
  test.describe(title('menu-button: a11y'), () => {
9
23
  test('should not have accessibility violations', async ({ page }) => {
@@ -13,7 +13,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
13
13
  const modal = page.locator('ion-modal');
14
14
  await modal.evaluate((el) => el.dismiss());
15
15
  await ionModalDidDismiss.next();
16
- await page.locator('ion-modal').waitFor({ state: 'detached' });
16
+ await page.waitForSelector('ion-modal', { state: 'detached' });
17
17
  });
18
18
  });
19
19
  });