@ionic/core 7.5.4-dev.11699023297.172bb30f → 7.5.4-dev.11699037031.16f5cbc8

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 (469) hide show
  1. package/components/animation.js +12 -11
  2. package/components/checkbox.js +2 -0
  3. package/components/index4.js +10 -12
  4. package/components/index5.js +0 -22
  5. package/components/index7.js +1 -1
  6. package/components/input-shims.js +12 -7
  7. package/components/ion-datetime.js +2 -2
  8. package/components/ion-input.js +2 -0
  9. package/components/ion-range.js +2 -0
  10. package/components/ion-select.js +5 -25
  11. package/components/ion-skeleton-text.js +14 -1
  12. package/components/ion-textarea.js +2 -0
  13. package/components/ion-toast.js +13 -18
  14. package/components/ion-toggle.js +2 -0
  15. package/components/item.js +2 -2
  16. package/components/label.js +2 -2
  17. package/components/radio-group.js +2 -0
  18. package/components/radio.js +35 -2
  19. package/dist/cjs/{animation-1083855c.js → animation-d101aa7a.js} +13 -12
  20. package/dist/cjs/{app-globals-e7d3f834.js → app-globals-ef077808.js} +1 -1
  21. package/dist/cjs/{button-active-f48a98c0.js → button-active-69c3bee4.js} +2 -2
  22. package/dist/cjs/{capacitor-2ffba62a.js → capacitor-f68447d3.js} +1 -1
  23. package/dist/cjs/compare-with-utils-50c82573.js +37 -0
  24. package/dist/cjs/{haptic-678abc9f.js → haptic-a74c2767.js} +1 -1
  25. package/dist/cjs/{index-df87d46d.js → index-09471526.js} +1 -1
  26. package/dist/cjs/{index-b5b25afb.js → index-73186843.js} +1 -1
  27. package/dist/cjs/{index-04f92f05.js → index-9146d04a.js} +12 -14
  28. package/dist/cjs/{index-936b1c6e.js → index-adbcffee.js} +3 -3
  29. package/dist/cjs/index-c8d52405.js +10 -0
  30. package/dist/cjs/{index-9f379eaa.js → index-e9634bc9.js} +1 -1
  31. package/dist/cjs/index.cjs.js +10 -10
  32. package/dist/cjs/{input-shims-b0a75a01.js → input-shims-3e3f35b9.js} +15 -10
  33. package/dist/cjs/{input.utils-0fe3097c.js → input.utils-590f0f18.js} +1 -1
  34. package/dist/cjs/ion-accordion_2.cjs.entry.js +3 -3
  35. package/dist/cjs/ion-action-sheet.cjs.entry.js +8 -8
  36. package/dist/cjs/ion-alert.cjs.entry.js +8 -8
  37. package/dist/cjs/ion-app_8.cjs.entry.js +11 -11
  38. package/dist/cjs/ion-avatar_3.cjs.entry.js +2 -2
  39. package/dist/cjs/ion-back-button.cjs.entry.js +3 -3
  40. package/dist/cjs/ion-backdrop.cjs.entry.js +2 -2
  41. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +3 -3
  42. package/dist/cjs/ion-button_2.cjs.entry.js +2 -2
  43. package/dist/cjs/ion-card_5.cjs.entry.js +2 -2
  44. package/dist/cjs/ion-checkbox.cjs.entry.js +4 -2
  45. package/dist/cjs/ion-chip.cjs.entry.js +2 -2
  46. package/dist/cjs/ion-col_3.cjs.entry.js +2 -2
  47. package/dist/cjs/ion-datetime-button.cjs.entry.js +2 -2
  48. package/dist/cjs/ion-datetime_3.cjs.entry.js +10 -10
  49. package/dist/cjs/ion-fab_3.cjs.entry.js +3 -3
  50. package/dist/cjs/ion-img.cjs.entry.js +2 -2
  51. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +2 -2
  52. package/dist/cjs/ion-input.cjs.entry.js +8 -6
  53. package/dist/cjs/ion-item-option_3.cjs.entry.js +2 -2
  54. package/dist/cjs/ion-item_8.cjs.entry.js +20 -7
  55. package/dist/cjs/ion-loading.cjs.entry.js +5 -5
  56. package/dist/cjs/ion-menu_3.cjs.entry.js +8 -8
  57. package/dist/cjs/ion-modal.cjs.entry.js +9 -9
  58. package/dist/cjs/ion-nav_2.cjs.entry.js +3 -3
  59. package/dist/cjs/ion-picker-column-internal.cjs.entry.js +5 -5
  60. package/dist/cjs/ion-picker-internal.cjs.entry.js +1 -1
  61. package/dist/cjs/ion-popover.cjs.entry.js +6 -6
  62. package/dist/cjs/ion-progress-bar.cjs.entry.js +2 -2
  63. package/dist/cjs/ion-radio_2.cjs.entry.js +8 -3
  64. package/dist/cjs/ion-range.cjs.entry.js +4 -2
  65. package/dist/cjs/ion-refresher_2.cjs.entry.js +7 -7
  66. package/dist/cjs/ion-reorder_2.cjs.entry.js +6 -6
  67. package/dist/cjs/ion-ripple-effect.cjs.entry.js +2 -2
  68. package/dist/cjs/ion-route_4.cjs.entry.js +2 -2
  69. package/dist/cjs/ion-searchbar.cjs.entry.js +3 -3
  70. package/dist/cjs/ion-segment_2.cjs.entry.js +2 -2
  71. package/dist/cjs/ion-select_3.cjs.entry.js +15 -34
  72. package/dist/cjs/ion-spinner.cjs.entry.js +2 -2
  73. package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
  74. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +6 -6
  75. package/dist/cjs/ion-tab_2.cjs.entry.js +1 -1
  76. package/dist/cjs/ion-text.cjs.entry.js +2 -2
  77. package/dist/cjs/ion-textarea.cjs.entry.js +7 -5
  78. package/dist/cjs/ion-toast.cjs.entry.js +18 -23
  79. package/dist/cjs/ion-toggle.cjs.entry.js +8 -6
  80. package/dist/cjs/{ionic-global-a8da299a.js → ionic-global-4538d91c.js} +1 -1
  81. package/dist/cjs/ionic.cjs.js +5 -5
  82. package/dist/cjs/{ios.transition-f200285c.js → ios.transition-7972d9e3.js} +4 -4
  83. package/dist/cjs/{keyboard-fd7db491.js → keyboard-43df0428.js} +1 -1
  84. package/dist/cjs/{keyboard-38f2bb7b.js → keyboard-840107b3.js} +3 -3
  85. package/dist/cjs/{keyboard-controller-50beb83a.js → keyboard-controller-019f42df.js} +2 -2
  86. package/dist/cjs/loader.cjs.js +4 -4
  87. package/dist/cjs/{md.transition-29531994.js → md.transition-6e61a10f.js} +4 -4
  88. package/dist/cjs/{notch-controller-f4f6af5d.js → notch-controller-c22d1344.js} +1 -1
  89. package/dist/cjs/{overlays-43270ca7.js → overlays-d80a2cf2.js} +2 -2
  90. package/dist/cjs/{status-tap-4a84c3f6.js → status-tap-2e9f9c86.js} +1 -1
  91. package/dist/collection/collection-manifest.json +1 -1
  92. package/dist/collection/components/checkbox/checkbox.js +2 -0
  93. package/dist/collection/components/datetime/datetime.ios.css +1 -0
  94. package/dist/collection/components/datetime/datetime.md.css +1 -0
  95. package/dist/collection/components/input/input.js +2 -0
  96. package/dist/collection/components/item/item.ios.css +25 -3
  97. package/dist/collection/components/item/item.md.css +25 -3
  98. package/dist/collection/components/item/test/basic/item.e2e.js +1 -1
  99. package/dist/collection/components/item/test/disabled/item.e2e.js +0 -1
  100. package/dist/collection/components/label/label.ios.css +14 -3
  101. package/dist/collection/components/label/label.md.css +14 -3
  102. package/dist/collection/components/note/test/a11y/note.e2e.js +43 -0
  103. package/dist/collection/components/picker-internal/test/basic/picker-internal.e2e.js +0 -5
  104. package/dist/collection/components/radio/radio.js +5 -2
  105. package/dist/collection/components/radio-group/radio-group.js +24 -0
  106. package/dist/collection/components/radio-group/test/compare-with/radio-group.e2e.js +93 -0
  107. package/dist/collection/components/range/range.js +2 -0
  108. package/dist/collection/components/select/select.ios.css +5 -0
  109. package/dist/collection/components/select/select.js +4 -24
  110. package/dist/collection/components/select/select.md.css +5 -0
  111. package/dist/collection/components/select/test/legacy/wrapping/select.e2e.js +1 -1
  112. package/dist/collection/components/skeleton-text/skeleton-text.js +39 -0
  113. package/dist/collection/components/textarea/textarea.js +2 -0
  114. package/dist/collection/components/toast/animations/md.enter.js +2 -2
  115. package/dist/collection/components/toast/animations/utils.js +9 -14
  116. package/dist/collection/components/toast/toast.ios.css +10 -10
  117. package/dist/collection/components/toast/toast.md.css +10 -0
  118. package/dist/collection/components/toggle/toggle.js +2 -0
  119. package/dist/collection/utils/animation/animation.js +12 -11
  120. package/dist/collection/utils/browser/index.js +0 -22
  121. package/dist/collection/utils/forms/compare-with-utils.js +32 -0
  122. package/dist/collection/utils/forms/index.js +1 -0
  123. package/dist/collection/utils/input-shims/input-shims.js +12 -6
  124. package/dist/collection/utils/menu-controller/index.js +10 -12
  125. package/dist/docs.json +44 -3
  126. package/dist/esm/{animation-8aa13916.js → animation-cf3dd234.js} +13 -12
  127. package/dist/esm/{app-globals-298479d6.js → app-globals-ba8b3a06.js} +1 -1
  128. package/dist/esm/{button-active-61e81700.js → button-active-109ba60d.js} +2 -2
  129. package/dist/esm/{capacitor-b4979570.js → capacitor-f1f25364.js} +1 -1
  130. package/dist/esm/compare-with-utils-363d00b3.js +34 -0
  131. package/dist/esm/{haptic-1243b917.js → haptic-1a66d69f.js} +1 -1
  132. package/dist/esm/{index-6226a5f4.js → index-4392ebcb.js} +1 -1
  133. package/dist/esm/{index-3a662ef8.js → index-50582f1c.js} +3 -3
  134. package/dist/esm/{index-fb1db216.js → index-6a48e009.js} +12 -14
  135. package/dist/esm/index-a5d50daf.js +7 -0
  136. package/dist/esm/{index-4344dbb2.js → index-c132c5f1.js} +1 -1
  137. package/dist/esm/{index-f0cc4e14.js → index-c9e82353.js} +1 -1
  138. package/dist/esm/index.js +10 -10
  139. package/dist/esm/{input-shims-d0c93e5d.js → input-shims-1d767845.js} +14 -9
  140. package/dist/esm/{input.utils-ec063df4.js → input.utils-d04a7212.js} +1 -1
  141. package/dist/esm/ion-accordion_2.entry.js +3 -3
  142. package/dist/esm/ion-action-sheet.entry.js +8 -8
  143. package/dist/esm/ion-alert.entry.js +8 -8
  144. package/dist/esm/ion-app_8.entry.js +11 -11
  145. package/dist/esm/ion-avatar_3.entry.js +2 -2
  146. package/dist/esm/ion-back-button.entry.js +3 -3
  147. package/dist/esm/ion-backdrop.entry.js +2 -2
  148. package/dist/esm/ion-breadcrumb_2.entry.js +3 -3
  149. package/dist/esm/ion-button_2.entry.js +2 -2
  150. package/dist/esm/ion-card_5.entry.js +2 -2
  151. package/dist/esm/ion-checkbox.entry.js +4 -2
  152. package/dist/esm/ion-chip.entry.js +2 -2
  153. package/dist/esm/ion-col_3.entry.js +2 -2
  154. package/dist/esm/ion-datetime-button.entry.js +2 -2
  155. package/dist/esm/ion-datetime_3.entry.js +10 -10
  156. package/dist/esm/ion-fab_3.entry.js +3 -3
  157. package/dist/esm/ion-img.entry.js +2 -2
  158. package/dist/esm/ion-infinite-scroll_2.entry.js +2 -2
  159. package/dist/esm/ion-input.entry.js +8 -6
  160. package/dist/esm/ion-item-option_3.entry.js +2 -2
  161. package/dist/esm/ion-item_8.entry.js +20 -7
  162. package/dist/esm/ion-loading.entry.js +5 -5
  163. package/dist/esm/ion-menu_3.entry.js +8 -8
  164. package/dist/esm/ion-modal.entry.js +9 -9
  165. package/dist/esm/ion-nav_2.entry.js +3 -3
  166. package/dist/esm/ion-picker-column-internal.entry.js +5 -5
  167. package/dist/esm/ion-picker-internal.entry.js +1 -1
  168. package/dist/esm/ion-popover.entry.js +6 -6
  169. package/dist/esm/ion-progress-bar.entry.js +2 -2
  170. package/dist/esm/ion-radio_2.entry.js +8 -3
  171. package/dist/esm/ion-range.entry.js +4 -2
  172. package/dist/esm/ion-refresher_2.entry.js +7 -7
  173. package/dist/esm/ion-reorder_2.entry.js +6 -6
  174. package/dist/esm/ion-ripple-effect.entry.js +2 -2
  175. package/dist/esm/ion-route_4.entry.js +2 -2
  176. package/dist/esm/ion-searchbar.entry.js +3 -3
  177. package/dist/esm/ion-segment_2.entry.js +2 -2
  178. package/dist/esm/ion-select_3.entry.js +11 -30
  179. package/dist/esm/ion-spinner.entry.js +2 -2
  180. package/dist/esm/ion-split-pane.entry.js +2 -2
  181. package/dist/esm/ion-tab-bar_2.entry.js +6 -6
  182. package/dist/esm/ion-tab_2.entry.js +1 -1
  183. package/dist/esm/ion-text.entry.js +2 -2
  184. package/dist/esm/ion-textarea.entry.js +7 -5
  185. package/dist/esm/ion-toast.entry.js +18 -23
  186. package/dist/esm/ion-toggle.entry.js +8 -6
  187. package/dist/esm/{ionic-global-f96e58a3.js → ionic-global-7efdecd0.js} +1 -1
  188. package/dist/esm/ionic.js +6 -6
  189. package/dist/esm/{ios.transition-8d26edec.js → ios.transition-e20d71bc.js} +4 -4
  190. package/dist/esm/{keyboard-b551279d.js → keyboard-9f771a04.js} +3 -3
  191. package/dist/esm/{keyboard-b063f012.js → keyboard-b6230bfb.js} +1 -1
  192. package/dist/esm/{keyboard-controller-0c2dce71.js → keyboard-controller-3f0faa10.js} +2 -2
  193. package/dist/esm/loader.js +5 -5
  194. package/dist/esm/{md.transition-00f3fafd.js → md.transition-a8469407.js} +4 -4
  195. package/dist/esm/{notch-controller-8c9c0e54.js → notch-controller-3f79197e.js} +1 -1
  196. package/dist/esm/{overlays-153881c5.js → overlays-a31c8878.js} +2 -2
  197. package/dist/esm/{status-tap-76a65f04.js → status-tap-7ca28a1c.js} +1 -1
  198. package/dist/esm-es5/{animation-8aa13916.js → animation-cf3dd234.js} +1 -1
  199. package/dist/esm-es5/app-globals-ba8b3a06.js +4 -0
  200. package/dist/esm-es5/{button-active-61e81700.js → button-active-109ba60d.js} +1 -1
  201. package/dist/esm-es5/{capacitor-b4979570.js → capacitor-f1f25364.js} +1 -1
  202. package/dist/esm-es5/compare-with-utils-363d00b3.js +4 -0
  203. package/dist/esm-es5/{haptic-1243b917.js → haptic-1a66d69f.js} +1 -1
  204. package/dist/esm-es5/{index-3a662ef8.js → index-50582f1c.js} +1 -1
  205. package/dist/esm-es5/index-6a48e009.js +4 -0
  206. package/dist/esm-es5/index-c9e82353.js +4 -0
  207. package/dist/esm-es5/index.js +1 -1
  208. package/dist/esm-es5/input-shims-1d767845.js +4 -0
  209. package/dist/esm-es5/input.utils-d04a7212.js +4 -0
  210. package/dist/esm-es5/ion-accordion_2.entry.js +1 -1
  211. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  212. package/dist/esm-es5/ion-alert.entry.js +1 -1
  213. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  214. package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
  215. package/dist/esm-es5/ion-back-button.entry.js +1 -1
  216. package/dist/esm-es5/ion-backdrop.entry.js +1 -1
  217. package/dist/esm-es5/ion-breadcrumb_2.entry.js +1 -1
  218. package/dist/esm-es5/ion-button_2.entry.js +1 -1
  219. package/dist/esm-es5/ion-card_5.entry.js +1 -1
  220. package/dist/esm-es5/ion-checkbox.entry.js +1 -1
  221. package/dist/esm-es5/ion-chip.entry.js +1 -1
  222. package/dist/esm-es5/ion-col_3.entry.js +1 -1
  223. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  224. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  225. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  226. package/dist/esm-es5/ion-img.entry.js +1 -1
  227. package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
  228. package/dist/esm-es5/ion-input.entry.js +1 -1
  229. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  230. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  231. package/dist/esm-es5/ion-loading.entry.js +1 -1
  232. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  233. package/dist/esm-es5/ion-modal.entry.js +1 -1
  234. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  235. package/dist/esm-es5/ion-picker-column-internal.entry.js +1 -1
  236. package/dist/esm-es5/ion-picker-internal.entry.js +1 -1
  237. package/dist/esm-es5/ion-popover.entry.js +1 -1
  238. package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
  239. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  240. package/dist/esm-es5/ion-range.entry.js +1 -1
  241. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  242. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  243. package/dist/esm-es5/ion-ripple-effect.entry.js +1 -1
  244. package/dist/esm-es5/ion-route_4.entry.js +1 -1
  245. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  246. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  247. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  248. package/dist/esm-es5/ion-spinner.entry.js +1 -1
  249. package/dist/esm-es5/ion-split-pane.entry.js +1 -1
  250. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  251. package/dist/esm-es5/ion-tab_2.entry.js +1 -1
  252. package/dist/esm-es5/ion-text.entry.js +1 -1
  253. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  254. package/dist/esm-es5/ion-toast.entry.js +1 -1
  255. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  256. package/dist/esm-es5/{ionic-global-f96e58a3.js → ionic-global-7efdecd0.js} +1 -1
  257. package/dist/esm-es5/ionic.js +1 -1
  258. package/dist/esm-es5/{ios.transition-8d26edec.js → ios.transition-e20d71bc.js} +1 -1
  259. package/dist/esm-es5/{keyboard-b551279d.js → keyboard-9f771a04.js} +1 -1
  260. package/dist/esm-es5/{keyboard-b063f012.js → keyboard-b6230bfb.js} +1 -1
  261. package/dist/esm-es5/{keyboard-controller-0c2dce71.js → keyboard-controller-3f0faa10.js} +1 -1
  262. package/dist/esm-es5/loader.js +1 -1
  263. package/dist/esm-es5/md.transition-a8469407.js +4 -0
  264. package/dist/esm-es5/{notch-controller-8c9c0e54.js → notch-controller-3f79197e.js} +1 -1
  265. package/dist/esm-es5/{overlays-153881c5.js → overlays-a31c8878.js} +1 -1
  266. package/dist/esm-es5/{status-tap-76a65f04.js → status-tap-7ca28a1c.js} +1 -1
  267. package/dist/html.html-data.json +5 -1
  268. package/dist/ionic/index.esm.js +1 -1
  269. package/dist/ionic/ionic.esm.js +1 -1
  270. package/dist/ionic/ionic.js +1 -1
  271. package/dist/ionic/{p-5c58e994.system.entry.js → p-00a10b94.system.entry.js} +1 -1
  272. package/dist/ionic/{p-82ebb358.system.js → p-0148306b.system.js} +1 -1
  273. package/dist/ionic/{p-819aa862.system.js → p-02663394.system.js} +1 -1
  274. package/dist/ionic/{p-8f442691.entry.js → p-03a36678.entry.js} +1 -1
  275. package/dist/ionic/{p-c13d6387.system.entry.js → p-0becf7b5.system.entry.js} +1 -1
  276. package/dist/ionic/{p-84201f4c.system.js → p-0c40f7d3.system.js} +1 -1
  277. package/dist/ionic/{p-fe32d671.entry.js → p-0e8335b9.entry.js} +1 -1
  278. package/dist/ionic/p-11104d0d.entry.js +4 -0
  279. package/dist/ionic/{p-81c818e7.js → p-11cb4e19.js} +1 -1
  280. package/dist/ionic/{p-037a9c42.entry.js → p-12d62aa9.entry.js} +1 -1
  281. package/dist/ionic/p-139bd79d.system.entry.js +4 -0
  282. package/dist/ionic/{p-feed1576.system.js → p-13dd7d20.system.js} +1 -1
  283. package/dist/ionic/{p-8895d31c.system.entry.js → p-152998a6.system.entry.js} +1 -1
  284. package/dist/ionic/{p-1fa2e793.system.entry.js → p-15512a5e.system.entry.js} +1 -1
  285. package/dist/ionic/{p-276afddd.js → p-1667596c.js} +1 -1
  286. package/dist/ionic/{p-1b50c850.system.entry.js → p-1b5b6845.system.entry.js} +1 -1
  287. package/dist/ionic/{p-e265b755.system.entry.js → p-1e59dd04.system.entry.js} +1 -1
  288. package/dist/ionic/{p-3729c4e3.system.entry.js → p-20ff4d7f.system.entry.js} +1 -1
  289. package/dist/ionic/{p-6add3c7e.entry.js → p-25b8d65c.entry.js} +1 -1
  290. package/dist/ionic/p-265fec8a.entry.js +4 -0
  291. package/dist/ionic/{p-4541ec29.system.entry.js → p-27923249.system.entry.js} +1 -1
  292. package/dist/ionic/{p-960b96e5.entry.js → p-2d86b19a.entry.js} +1 -1
  293. package/dist/ionic/{p-552710bd.entry.js → p-2fb115dc.entry.js} +1 -1
  294. package/dist/ionic/{p-da78083d.js → p-307963db.js} +1 -1
  295. package/dist/ionic/p-314c4dee.js +4 -0
  296. package/dist/ionic/p-3554b264.js +4 -0
  297. package/dist/ionic/{p-fde5fd7d.entry.js → p-35787a6f.entry.js} +1 -1
  298. package/dist/ionic/{p-5f852328.system.entry.js → p-35e25602.system.entry.js} +1 -1
  299. package/dist/ionic/{p-bae78456.system.entry.js → p-3962542f.system.entry.js} +1 -1
  300. package/dist/ionic/{p-39a75970.system.entry.js → p-3a769110.system.entry.js} +1 -1
  301. package/dist/ionic/p-3afb9c3d.entry.js +4 -0
  302. package/dist/ionic/{p-fd797fb2.system.entry.js → p-3e1deb37.system.entry.js} +1 -1
  303. package/dist/ionic/{p-69ba35e5.js → p-3e8d7ed8.js} +1 -1
  304. package/dist/ionic/{p-54a2e58f.entry.js → p-3fc0b7ba.entry.js} +1 -1
  305. package/dist/ionic/{p-2d975093.system.entry.js → p-400a78f3.system.entry.js} +1 -1
  306. package/dist/ionic/{p-b72bf9bf.system.js → p-40dd5937.system.js} +1 -1
  307. package/dist/ionic/{p-24d1ade7.entry.js → p-4430713b.entry.js} +1 -1
  308. package/dist/ionic/{p-786950a4.entry.js → p-47826f19.entry.js} +1 -1
  309. package/dist/ionic/p-494e75ad.js +4 -0
  310. package/dist/ionic/{p-26a5154f.system.entry.js → p-4c50b357.system.entry.js} +1 -1
  311. package/dist/ionic/{p-c6ac3aac.system.js → p-4c75cb48.system.js} +1 -1
  312. package/dist/ionic/p-4e3c07a6.system.js +4 -0
  313. package/dist/ionic/p-4e4ee05e.js +4 -0
  314. package/dist/ionic/{p-ca824787.system.entry.js → p-50375f3b.system.entry.js} +1 -1
  315. package/dist/ionic/{p-89a0384e.entry.js → p-510bc27b.entry.js} +1 -1
  316. package/dist/ionic/{p-4687559d.system.entry.js → p-51b94085.system.entry.js} +1 -1
  317. package/dist/ionic/{p-c8139d7d.entry.js → p-53b1930e.entry.js} +1 -1
  318. package/dist/ionic/p-561cc050.system.js +4 -0
  319. package/dist/ionic/p-57b14769.js +4 -0
  320. package/dist/ionic/{p-8cf94fc1.js → p-5885e9af.js} +1 -1
  321. package/dist/ionic/{p-c98b2418.system.entry.js → p-59107f99.system.entry.js} +1 -1
  322. package/dist/ionic/{p-de03cdd4.entry.js → p-5a7df436.entry.js} +1 -1
  323. package/dist/ionic/{p-0739476e.system.js → p-5b978c94.system.js} +1 -1
  324. package/dist/ionic/{p-3373ebb4.system.entry.js → p-5c7107b4.system.entry.js} +1 -1
  325. package/dist/ionic/{p-beeb9776.js → p-60f25049.js} +1 -1
  326. package/dist/ionic/p-647fcea8.entry.js +4 -0
  327. package/dist/ionic/{p-7af580d7.entry.js → p-6825ff8d.entry.js} +1 -1
  328. package/dist/ionic/{p-c371dde4.system.entry.js → p-696c63fb.system.entry.js} +1 -1
  329. package/dist/ionic/{p-b923f3d7.js → p-6a309574.js} +1 -1
  330. package/dist/ionic/{p-536884b0.system.entry.js → p-6abde4f1.system.entry.js} +1 -1
  331. package/dist/ionic/p-6d3ba3ba.system.entry.js +4 -0
  332. package/dist/ionic/p-6dc21cd1.system.entry.js +4 -0
  333. package/dist/ionic/{p-d145f9e8.system.entry.js → p-70bf6086.system.entry.js} +1 -1
  334. package/dist/ionic/p-70dcf429.js +4 -0
  335. package/dist/ionic/p-710cea83.system.js +4 -0
  336. package/dist/ionic/{p-f47fd2a4.system.entry.js → p-71e70a57.system.entry.js} +1 -1
  337. package/dist/ionic/p-73df8d76.system.js +4 -0
  338. package/dist/ionic/{p-7f735b2b.entry.js → p-75338011.entry.js} +1 -1
  339. package/dist/ionic/p-7ac30f6a.entry.js +4 -0
  340. package/dist/ionic/p-7acd17bc.entry.js +4 -0
  341. package/dist/ionic/p-7d68e4ea.entry.js +4 -0
  342. package/dist/ionic/{p-3bc5eba9.system.entry.js → p-7dafac2c.system.entry.js} +1 -1
  343. package/dist/ionic/{p-3632220b.system.js → p-7def197f.system.js} +1 -1
  344. package/dist/ionic/p-8140a084.entry.js +4 -0
  345. package/dist/ionic/{p-dbba25f4.entry.js → p-89703003.entry.js} +1 -1
  346. package/dist/ionic/{p-81da7f67.system.entry.js → p-8a9760f7.system.entry.js} +1 -1
  347. package/dist/ionic/{p-71442f7d.entry.js → p-8be2b964.entry.js} +1 -1
  348. package/dist/ionic/p-8e7ff561.entry.js +4 -0
  349. package/dist/ionic/{p-d8902d90.system.entry.js → p-90020ef0.system.entry.js} +1 -1
  350. package/dist/ionic/{p-b4b4bb29.system.js → p-9292fd42.system.js} +1 -1
  351. package/dist/ionic/p-92ac915c.system.js +4 -0
  352. package/dist/ionic/{p-721f76e8.system.entry.js → p-9471d511.system.entry.js} +1 -1
  353. package/dist/ionic/{p-87d0853a.system.entry.js → p-957f3028.system.entry.js} +1 -1
  354. package/dist/ionic/{p-41477ad9.system.js → p-958f1c70.system.js} +1 -1
  355. package/dist/ionic/{p-c0f58952.system.js → p-98c70e3c.system.js} +1 -1
  356. package/dist/ionic/{p-e2bf71db.entry.js → p-9939c98e.entry.js} +1 -1
  357. package/dist/ionic/{p-ec402706.entry.js → p-999a7271.entry.js} +1 -1
  358. package/dist/ionic/{p-71201419.system.entry.js → p-9b34caa0.system.entry.js} +1 -1
  359. package/dist/ionic/{p-536ea109.system.entry.js → p-a03566c4.system.entry.js} +2 -2
  360. package/dist/ionic/{p-419eb426.js → p-a135e3ba.js} +1 -1
  361. package/dist/ionic/{p-aa45eab2.system.entry.js → p-a3434028.system.entry.js} +1 -1
  362. package/dist/ionic/{p-9d0b9923.system.entry.js → p-a6880f79.system.entry.js} +1 -1
  363. package/dist/ionic/p-a6b819ca.entry.js +4 -0
  364. package/dist/ionic/{p-ef3bd315.system.js → p-abaa9b48.system.js} +1 -1
  365. package/dist/ionic/{p-ab4cff27.system.js → p-aec8a70a.system.js} +1 -1
  366. package/dist/ionic/{p-383617af.entry.js → p-b3d50a72.entry.js} +1 -1
  367. package/dist/ionic/{p-9395c1b8.entry.js → p-b86c6c05.entry.js} +1 -1
  368. package/dist/ionic/{p-99703352.system.entry.js → p-bc48e521.system.entry.js} +1 -1
  369. package/dist/ionic/{p-2efba848.entry.js → p-bc6e32d2.entry.js} +1 -1
  370. package/dist/ionic/{p-cbaf41c2.system.entry.js → p-bedc16f0.system.entry.js} +1 -1
  371. package/dist/ionic/{p-6ef73ad8.entry.js → p-bf3396e1.entry.js} +1 -1
  372. package/dist/ionic/{p-bb5ddd9b.entry.js → p-c09fa14d.entry.js} +1 -1
  373. package/dist/ionic/p-c2db1374.system.js +4 -0
  374. package/dist/ionic/{p-e147a36c.entry.js → p-c2e199ac.entry.js} +1 -1
  375. package/dist/ionic/{p-1d8333db.entry.js → p-c32a6c04.entry.js} +1 -1
  376. package/dist/ionic/p-c3547c7a.system.js +4 -0
  377. package/dist/ionic/{p-9bb47c8b.entry.js → p-c4381a06.entry.js} +1 -1
  378. package/dist/ionic/{p-37421c6b.system.entry.js → p-c7138053.system.entry.js} +1 -1
  379. package/dist/ionic/{p-e005611b.entry.js → p-ce20c101.entry.js} +1 -1
  380. package/dist/ionic/{p-187c1f3d.entry.js → p-d2de097b.entry.js} +1 -1
  381. package/dist/ionic/{p-9ca56fec.entry.js → p-d3278cb8.entry.js} +1 -1
  382. package/dist/ionic/p-d54a8393.system.entry.js +4 -0
  383. package/dist/ionic/{p-795a3808.entry.js → p-d73eb00e.entry.js} +1 -1
  384. package/dist/ionic/{p-827bcd74.js → p-df18d20d.js} +1 -1
  385. package/dist/ionic/{p-3cd0d943.system.entry.js → p-e4d66e2d.system.entry.js} +1 -1
  386. package/dist/ionic/{p-1ee18e20.entry.js → p-e53f2605.entry.js} +1 -1
  387. package/dist/ionic/{p-3bad5c1a.js → p-e5fd9f10.js} +1 -1
  388. package/dist/ionic/{p-7d980409.system.entry.js → p-e66f7d10.system.entry.js} +1 -1
  389. package/dist/ionic/{p-ccdcb022.system.js → p-e7d20dfb.system.js} +1 -1
  390. package/dist/ionic/{p-7b3f59df.system.entry.js → p-e91c7eb4.system.entry.js} +1 -1
  391. package/dist/ionic/p-e9fe3c8b.system.entry.js +4 -0
  392. package/dist/ionic/p-ea78392c.js +4 -0
  393. package/dist/ionic/{p-6283f89b.entry.js → p-ebdaf11b.entry.js} +1 -1
  394. package/dist/ionic/{p-676b5c18.system.entry.js → p-ed8a02a2.system.entry.js} +1 -1
  395. package/dist/ionic/{p-bf556399.js → p-edd568c5.js} +1 -1
  396. package/dist/ionic/{p-42761cc1.system.entry.js → p-eec1aa12.system.entry.js} +1 -1
  397. package/dist/ionic/p-f4ccdc77.js +4 -0
  398. package/dist/ionic/{p-b8406f0a.entry.js → p-f6d089a7.entry.js} +1 -1
  399. package/dist/ionic/p-f7769c83.js +4 -0
  400. package/dist/ionic/p-f7bc6157.system.entry.js +4 -0
  401. package/dist/ionic/{p-574ca59a.system.entry.js → p-f8febce9.system.entry.js} +1 -1
  402. package/dist/ionic/{p-bba2ce59.system.js → p-f9a641fa.system.js} +1 -1
  403. package/dist/ionic/p-fa67d712.entry.js +4 -0
  404. package/dist/ionic/p-fdcd4618.entry.js +4 -0
  405. package/dist/types/components/radio-group/radio-group-interface.d.ts +1 -0
  406. package/dist/types/components/radio-group/radio-group.d.ts +8 -1
  407. package/dist/types/components/router/router.d.ts +2 -1
  408. package/dist/types/components/select/select.d.ts +4 -1
  409. package/dist/types/components/skeleton-text/skeleton-text.d.ts +9 -1
  410. package/dist/types/components/toast/animations/utils.d.ts +6 -4
  411. package/dist/types/components.d.ts +27 -4
  412. package/dist/types/interface.d.ts +1 -5
  413. package/dist/types/utils/animation/animation-interface.d.ts +4 -4
  414. package/dist/types/utils/browser/index.d.ts +11 -2
  415. package/dist/types/utils/forms/compare-with-utils.d.ts +11 -0
  416. package/dist/types/utils/forms/index.d.ts +1 -0
  417. package/dist/types/utils/hardware-back-button.d.ts +4 -0
  418. package/hydrate/index.js +119 -110
  419. package/package.json +3 -3
  420. package/dist/cjs/index-306a7476.js +0 -32
  421. package/dist/collection/components/item/test/text/item.e2e.js +0 -14
  422. package/dist/esm/index-7a14ecec.js +0 -29
  423. package/dist/esm-es5/app-globals-298479d6.js +0 -4
  424. package/dist/esm-es5/index-f0cc4e14.js +0 -4
  425. package/dist/esm-es5/index-fb1db216.js +0 -4
  426. package/dist/esm-es5/input-shims-d0c93e5d.js +0 -4
  427. package/dist/esm-es5/input.utils-ec063df4.js +0 -4
  428. package/dist/esm-es5/md.transition-00f3fafd.js +0 -4
  429. package/dist/ionic/p-12ee0ff1.entry.js +0 -4
  430. package/dist/ionic/p-1c79e0e9.entry.js +0 -4
  431. package/dist/ionic/p-1ee73abd.entry.js +0 -4
  432. package/dist/ionic/p-2575d01b.system.entry.js +0 -4
  433. package/dist/ionic/p-2c0a20f6.system.js +0 -4
  434. package/dist/ionic/p-2e8e0045.js +0 -4
  435. package/dist/ionic/p-3106351f.entry.js +0 -4
  436. package/dist/ionic/p-329e086c.system.js +0 -4
  437. package/dist/ionic/p-3602001b.system.js +0 -4
  438. package/dist/ionic/p-3aebd535.js +0 -4
  439. package/dist/ionic/p-400e6669.system.entry.js +0 -4
  440. package/dist/ionic/p-4436b8db.entry.js +0 -4
  441. package/dist/ionic/p-47a0a2d7.js +0 -4
  442. package/dist/ionic/p-5f473d39.system.entry.js +0 -4
  443. package/dist/ionic/p-67eecef4.system.js +0 -4
  444. package/dist/ionic/p-6e938423.system.entry.js +0 -4
  445. package/dist/ionic/p-70d86e30.system.entry.js +0 -4
  446. package/dist/ionic/p-8b5b4bcd.entry.js +0 -4
  447. package/dist/ionic/p-8efea65b.js +0 -4
  448. package/dist/ionic/p-9730a670.entry.js +0 -4
  449. package/dist/ionic/p-97c65aa5.js +0 -4
  450. package/dist/ionic/p-9978d7c7.system.entry.js +0 -4
  451. package/dist/ionic/p-9a266f94.js +0 -4
  452. package/dist/ionic/p-9ab6f3e6.system.js +0 -4
  453. package/dist/ionic/p-9ee6a2b8.entry.js +0 -4
  454. package/dist/ionic/p-a2364b7c.entry.js +0 -4
  455. package/dist/ionic/p-c63c564a.entry.js +0 -4
  456. package/dist/ionic/p-c6cc8a3e.entry.js +0 -4
  457. package/dist/ionic/p-cb8c2339.entry.js +0 -4
  458. package/dist/ionic/p-cc196b34.js +0 -4
  459. package/dist/ionic/p-d1de1188.js +0 -4
  460. package/dist/ionic/p-ff5a10f9.system.js +0 -4
  461. /package/dist/esm-es5/{index-6226a5f4.js → index-4392ebcb.js} +0 -0
  462. /package/dist/esm-es5/{index-7a14ecec.js → index-a5d50daf.js} +0 -0
  463. /package/dist/esm-es5/{index-4344dbb2.js → index-c132c5f1.js} +0 -0
  464. /package/dist/ionic/{p-0e94957a.system.js → p-792919fd.system.js} +0 -0
  465. /package/dist/ionic/{p-b347cfd1.js → p-7b30edcc.js} +0 -0
  466. /package/dist/ionic/{p-9234a852.system.js → p-8050b9b9.system.js} +0 -0
  467. /package/dist/ionic/{p-d8aac5aa.system.js → p-dab42c1b.system.js} +0 -0
  468. /package/dist/ionic/{p-fbd26564.js → p-ea96fa73.js} +0 -0
  469. /package/dist/ionic/{p-86fa8554.js → p-f5e886cd.js} +0 -0
@@ -208,6 +208,7 @@
208
208
  /* stylelint-enable */
209
209
  display: flex;
210
210
  position: relative;
211
+ flex-wrap: wrap;
211
212
  align-items: inherit;
212
213
  justify-content: inherit;
213
214
  width: 100%;
@@ -219,8 +220,8 @@
219
220
  outline: none;
220
221
  background: var(--background);
221
222
  overflow: inherit;
222
- box-sizing: border-box;
223
223
  z-index: 1;
224
+ box-sizing: border-box;
224
225
  }
225
226
  :host-context([dir=rtl]) .item-native {
226
227
  padding-right: calc(var(--padding-start) + var(--ion-safe-area-right, 0px));
@@ -239,6 +240,10 @@
239
240
  }
240
241
  }
241
242
 
243
+ :host(.item-legacy) .item-native {
244
+ flex-wrap: unset;
245
+ }
246
+
242
247
  .item-native::-moz-focus-inner {
243
248
  border: 0;
244
249
  }
@@ -274,10 +279,12 @@ button, a {
274
279
  /* stylelint-enable */
275
280
  display: flex;
276
281
  position: relative;
277
- flex: 1;
282
+ flex: 1 0 auto;
278
283
  flex-direction: inherit;
284
+ flex-wrap: wrap;
279
285
  align-items: inherit;
280
286
  align-self: stretch;
287
+ max-width: 100%;
281
288
  min-height: inherit;
282
289
  border-width: var(--inner-border-width);
283
290
  border-style: var(--border-style);
@@ -303,6 +310,12 @@ button, a {
303
310
  }
304
311
  }
305
312
 
313
+ :host(.item-legacy) .item-inner {
314
+ flex: 1;
315
+ flex-wrap: unset;
316
+ max-width: unset;
317
+ }
318
+
306
319
  .item-bottom {
307
320
  margin-left: 0;
308
321
  margin-right: 0;
@@ -366,6 +379,7 @@ button, a {
366
379
 
367
380
  ::slotted(ion-label:not([slot=end])) {
368
381
  flex: 1;
382
+ width: min-content;
369
383
  }
370
384
 
371
385
  :host(.item-input) {
@@ -374,15 +388,23 @@ button, a {
374
388
 
375
389
  .input-wrapper {
376
390
  display: flex;
377
- flex: 1;
391
+ flex: 1 0 auto;
378
392
  flex-direction: inherit;
393
+ flex-wrap: wrap;
379
394
  align-items: inherit;
380
395
  align-self: stretch;
396
+ max-width: 100%;
381
397
  text-overflow: ellipsis;
382
398
  overflow: inherit;
383
399
  box-sizing: border-box;
384
400
  }
385
401
 
402
+ :host(.item-legacy) .input-wrapper {
403
+ flex: 1;
404
+ flex-wrap: unset;
405
+ max-width: unset;
406
+ }
407
+
386
408
  :host(.item-label-stacked),
387
409
  :host(.item-label-floating) {
388
410
  align-items: start;
@@ -208,6 +208,7 @@
208
208
  /* stylelint-enable */
209
209
  display: flex;
210
210
  position: relative;
211
+ flex-wrap: wrap;
211
212
  align-items: inherit;
212
213
  justify-content: inherit;
213
214
  width: 100%;
@@ -219,8 +220,8 @@
219
220
  outline: none;
220
221
  background: var(--background);
221
222
  overflow: inherit;
222
- box-sizing: border-box;
223
223
  z-index: 1;
224
+ box-sizing: border-box;
224
225
  }
225
226
  :host-context([dir=rtl]) .item-native {
226
227
  padding-right: calc(var(--padding-start) + var(--ion-safe-area-right, 0px));
@@ -239,6 +240,10 @@
239
240
  }
240
241
  }
241
242
 
243
+ :host(.item-legacy) .item-native {
244
+ flex-wrap: unset;
245
+ }
246
+
242
247
  .item-native::-moz-focus-inner {
243
248
  border: 0;
244
249
  }
@@ -274,10 +279,12 @@ button, a {
274
279
  /* stylelint-enable */
275
280
  display: flex;
276
281
  position: relative;
277
- flex: 1;
282
+ flex: 1 0 auto;
278
283
  flex-direction: inherit;
284
+ flex-wrap: wrap;
279
285
  align-items: inherit;
280
286
  align-self: stretch;
287
+ max-width: 100%;
281
288
  min-height: inherit;
282
289
  border-width: var(--inner-border-width);
283
290
  border-style: var(--border-style);
@@ -303,6 +310,12 @@ button, a {
303
310
  }
304
311
  }
305
312
 
313
+ :host(.item-legacy) .item-inner {
314
+ flex: 1;
315
+ flex-wrap: unset;
316
+ max-width: unset;
317
+ }
318
+
306
319
  .item-bottom {
307
320
  margin-left: 0;
308
321
  margin-right: 0;
@@ -366,6 +379,7 @@ button, a {
366
379
 
367
380
  ::slotted(ion-label:not([slot=end])) {
368
381
  flex: 1;
382
+ width: min-content;
369
383
  }
370
384
 
371
385
  :host(.item-input) {
@@ -374,15 +388,23 @@ button, a {
374
388
 
375
389
  .input-wrapper {
376
390
  display: flex;
377
- flex: 1;
391
+ flex: 1 0 auto;
378
392
  flex-direction: inherit;
393
+ flex-wrap: wrap;
379
394
  align-items: inherit;
380
395
  align-self: stretch;
396
+ max-width: 100%;
381
397
  text-overflow: ellipsis;
382
398
  overflow: inherit;
383
399
  box-sizing: border-box;
384
400
  }
385
401
 
402
+ :host(.item-legacy) .input-wrapper {
403
+ flex: 1;
404
+ flex-wrap: unset;
405
+ max-width: unset;
406
+ }
407
+
386
408
  :host(.item-label-stacked),
387
409
  :host(.item-label-floating) {
388
410
  align-items: start;
@@ -29,7 +29,7 @@ configs().forEach(({ title, screenshot, config }) => {
29
29
  </ion-item>
30
30
 
31
31
  <ion-item>
32
- <ion-label> Single line text that should have ellipses when it doesn't all fit in the item</ion-label>
32
+ <ion-label class="ion-text-nowrap"> Single line text that should have ellipses when it doesn't all fit in the item</ion-label>
33
33
  </ion-item>
34
34
  </ion-list>
35
35
  `, config);
@@ -11,7 +11,6 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
11
11
  test('should not have visual regressions', async ({ page }) => {
12
12
  await page.goto(`/src/components/item/test/disabled`, config);
13
13
  await page.setIonViewport();
14
- // TODO: FW-4037 - Fix label color inconsistency between disabled controls
15
14
  await expect(page).toHaveScreenshot(screenshot(`item-disabled-diff`));
16
15
  });
17
16
  });
@@ -41,17 +41,24 @@
41
41
  font-family: var(--ion-font-family, inherit);
42
42
  font-size: inherit;
43
43
  text-overflow: ellipsis;
44
+ box-sizing: border-box;
45
+ }
46
+
47
+ :host-context(.item-legacy) {
44
48
  white-space: nowrap;
45
49
  overflow: hidden;
46
- box-sizing: border-box;
50
+ }
51
+
52
+ :host-context(.item:not(.item-input):not(.item-legacy)) {
53
+ flex-grow: 1;
47
54
  }
48
55
 
49
56
  :host(.ion-color) {
50
57
  color: var(--ion-color-base);
51
58
  }
52
59
 
53
- :host(.ion-text-wrap) {
54
- white-space: normal;
60
+ :host(.ion-text-nowrap) {
61
+ overflow: hidden;
55
62
  }
56
63
 
57
64
  :host-context(.item-interactive-disabled:not(.item-multiple-inputs)) {
@@ -70,6 +77,10 @@
70
77
  align-self: baseline;
71
78
  }
72
79
 
80
+ :host-context(.item-skeleton-text) {
81
+ overflow: hidden;
82
+ }
83
+
73
84
  :host(.label-fixed) {
74
85
  flex: 0 0 100px;
75
86
  width: 100px;
@@ -41,17 +41,24 @@
41
41
  font-family: var(--ion-font-family, inherit);
42
42
  font-size: inherit;
43
43
  text-overflow: ellipsis;
44
+ box-sizing: border-box;
45
+ }
46
+
47
+ :host-context(.item-legacy) {
44
48
  white-space: nowrap;
45
49
  overflow: hidden;
46
- box-sizing: border-box;
50
+ }
51
+
52
+ :host-context(.item:not(.item-input):not(.item-legacy)) {
53
+ flex-grow: 1;
47
54
  }
48
55
 
49
56
  :host(.ion-color) {
50
57
  color: var(--ion-color-base);
51
58
  }
52
59
 
53
- :host(.ion-text-wrap) {
54
- white-space: normal;
60
+ :host(.ion-text-nowrap) {
61
+ overflow: hidden;
55
62
  }
56
63
 
57
64
  :host-context(.item-interactive-disabled:not(.item-multiple-inputs)) {
@@ -70,6 +77,10 @@
70
77
  align-self: baseline;
71
78
  }
72
79
 
80
+ :host-context(.item-skeleton-text) {
81
+ overflow: hidden;
82
+ }
83
+
73
84
  :host(.label-fixed) {
74
85
  flex: 0 0 100px;
75
86
  width: 100px;
@@ -48,5 +48,48 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
48
48
  const note = page.locator('ion-note');
49
49
  await expect(note).toHaveScreenshot(screenshot(`note-item-divider-scale`));
50
50
  });
51
+ test('should wrap label to the next line without truncating', async ({ page }) => {
52
+ await page.setContent(`
53
+ <style>
54
+ html {
55
+ font-size: 310%;
56
+ }
57
+ </style>
58
+
59
+ <ion-list>
60
+ <ion-item>
61
+ <ion-note slot="start">Really really long note</ion-note>
62
+ <ion-label>Label</ion-label>
63
+ </ion-item>
64
+
65
+ <ion-item>
66
+ <ion-label>Label</ion-label>
67
+ <ion-note slot="end">Really really long note</ion-note>
68
+ </ion-item>
69
+
70
+ <ion-item>
71
+ <ion-note slot="start">Note</ion-note>
72
+ <ion-label>Really really long label</ion-label>
73
+ </ion-item>
74
+
75
+ <ion-item>
76
+ <ion-label>Really really long label</ion-label>
77
+ <ion-note slot="end">Note</ion-note>
78
+ </ion-item>
79
+
80
+ <ion-item>
81
+ <ion-note slot="start">Really really long note</ion-note>
82
+ <ion-label>Really really long label</ion-label>
83
+ </ion-item>
84
+
85
+ <ion-item>
86
+ <ion-label>Really really long label</ion-label>
87
+ <ion-note slot="end">Really really long note</ion-note>
88
+ </ion-item>
89
+ </ion-list>
90
+ `, config);
91
+ const list = page.locator('ion-list');
92
+ await expect(list).toHaveScreenshot(screenshot(`note-wrapping-label-scale`));
93
+ });
51
94
  });
52
95
  });
@@ -10,11 +10,6 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
10
10
  test.describe(title('picker-internal: rendering'), () => {
11
11
  test('inline pickers should not have visual regression', async ({ page }) => {
12
12
  await page.goto(`/src/components/picker-internal/test/basic`, config);
13
- const fullStack = page.locator('#inline button[data-value="full-stack"]');
14
- const onion = page.locator('#inline button[data-value="onion"]');
15
- await expect(fullStack).toHaveClass(/picker-item-active/);
16
- await expect(onion).toHaveClass(/picker-item-active/);
17
- await page.waitForChanges();
18
13
  await expect(page.locator('#inline')).toHaveScreenshot(screenshot(`picker-internal-inline-diff`));
19
14
  });
20
15
  });
@@ -2,7 +2,7 @@
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
4
  import { Host, h } from "@stencil/core";
5
- import { createLegacyFormController } from "../../utils/forms/index";
5
+ import { createLegacyFormController, isOptionSelected } from "../../utils/forms/index";
6
6
  import { addEventListener, getAriaLabel, removeEventListener } from "../../utils/helpers";
7
7
  import { printIonWarning } from "../../utils/logging/index";
8
8
  import { createColorClasses, hostContext } from "../../utils/theme";
@@ -23,7 +23,8 @@ export class Radio {
23
23
  this.hasLoggedDeprecationWarning = false;
24
24
  this.updateState = () => {
25
25
  if (this.radioGroup) {
26
- this.checked = this.radioGroup.value === this.value;
26
+ const { compareWith, value: radioGroupValue } = this.radioGroup;
27
+ this.checked = isOptionSelected(radioGroupValue, this.value, compareWith);
27
28
  }
28
29
  };
29
30
  this.onClick = () => {
@@ -120,6 +121,8 @@ export class Radio {
120
121
  emitStyle() {
121
122
  const style = {
122
123
  'interactive-disabled': this.disabled,
124
+ // TODO(FW-3125): remove this
125
+ legacy: !!this.legacy,
123
126
  };
124
127
  if (this.legacyFormController.hasLegacyControl()) {
125
128
  style['radio-checked'] = this.checked;
@@ -47,6 +47,7 @@ export class RadioGroup {
47
47
  }
48
48
  };
49
49
  this.allowEmptySelection = false;
50
+ this.compareWith = undefined;
50
51
  this.name = this.inputId;
51
52
  this.value = undefined;
52
53
  }
@@ -158,6 +159,29 @@ export class RadioGroup {
158
159
  "reflect": false,
159
160
  "defaultValue": "false"
160
161
  },
162
+ "compareWith": {
163
+ "type": "string",
164
+ "mutable": false,
165
+ "complexType": {
166
+ "original": "string | RadioGroupCompareFn | null",
167
+ "resolved": "((currentValue: any, compareValue: any) => boolean) | null | string | undefined",
168
+ "references": {
169
+ "RadioGroupCompareFn": {
170
+ "location": "import",
171
+ "path": "./radio-group-interface",
172
+ "id": "src/components/radio-group/radio-group-interface.ts::RadioGroupCompareFn"
173
+ }
174
+ }
175
+ },
176
+ "required": false,
177
+ "optional": true,
178
+ "docs": {
179
+ "tags": [],
180
+ "text": "This property allows developers to specify a custom function or property\nname for comparing objects when determining the selected option in the\nion-radio-group. When not specified, the default behavior will use object\nequality (===) for comparison."
181
+ },
182
+ "attribute": "compare-with",
183
+ "reflect": false
184
+ },
161
185
  "name": {
162
186
  "type": "string",
163
187
  "mutable": false,
@@ -0,0 +1,93 @@
1
+ /*!
2
+ * (C) Ionic http://ionicframework.com - MIT License
3
+ */
4
+ import { expect } from "@playwright/test";
5
+ import { configs, test } from "../../../../utils/test/playwright/index";
6
+ /**
7
+ * This behavior does not vary across modes/directions.
8
+ */
9
+ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => {
10
+ test.describe(title('radio-group: compare-with'), () => {
11
+ test('should correctly set value when using compareWith string', async ({ page }) => {
12
+ await page.goto('/src/components/radio-group/test/compare-with', config);
13
+ const radioGroupWithString = page.locator('#compareWithString');
14
+ const lastRadio = radioGroupWithString.locator('ion-radio').last();
15
+ await lastRadio.click();
16
+ await page.waitForChanges();
17
+ await expect(radioGroupWithString).toHaveJSProperty('value', {
18
+ label: 'Green',
19
+ value: 'green',
20
+ });
21
+ await expect(lastRadio).toHaveAttribute('aria-checked', 'true');
22
+ });
23
+ test('should correctly set value when using compareWith function', async ({ page }) => {
24
+ await page.goto('/src/components/radio-group/test/compare-with', config);
25
+ const radioGroupWithFn = page.locator('#compareWithFn');
26
+ const lastRadio = radioGroupWithFn.locator('ion-radio').last();
27
+ await lastRadio.click();
28
+ await page.waitForChanges();
29
+ await expect(radioGroupWithFn).toHaveJSProperty('value', {
30
+ label: 'Green',
31
+ value: 'green',
32
+ });
33
+ await expect(lastRadio).toHaveAttribute('aria-checked', 'true');
34
+ });
35
+ test('should correctly set value when using null compareWith', async ({ page }) => {
36
+ await page.goto('/src/components/radio-group/test/compare-with', config);
37
+ const radioGroupWithNull = page.locator('#compareWithNull');
38
+ const lastRadio = radioGroupWithNull.locator('ion-radio').last();
39
+ await lastRadio.click();
40
+ await page.waitForChanges();
41
+ await expect(radioGroupWithNull).toHaveJSProperty('value', {
42
+ label: 'Green',
43
+ value: 'green',
44
+ });
45
+ await expect(lastRadio).toHaveAttribute('aria-checked', 'true');
46
+ });
47
+ test('should work with different parameter types', async ({ page }) => {
48
+ test.info().annotations.push({
49
+ type: 'issue',
50
+ description: 'https://github.com/ionic-team/ionic-framework/issues/25759',
51
+ });
52
+ await page.setContent(`
53
+ <ion-radio-group value="3"></ion-radio-group>
54
+
55
+ <script>
56
+ const data = [
57
+ { id: 1, name: 'Option #1' },
58
+ { id: 2, name: 'Option #2' },
59
+ { id: 3, name: 'Option #3' },
60
+ ]
61
+ const radioGroup = document.querySelector('ion-radio-group');
62
+ radioGroup.compareWith = (val1, val2) => {
63
+ // convert val1 to a number
64
+ return +val1 === val2;
65
+ }
66
+
67
+ data.forEach((d) => {
68
+ const radio = document.createElement('ion-radio');
69
+
70
+ radio.value = d.id;
71
+ radio.textContent = d.name;
72
+
73
+ const item = document.createElement('ion-item');
74
+ item.appendChild(radio);
75
+
76
+ radioGroup.appendChild(item);
77
+ });
78
+ </script>
79
+ `, config);
80
+ const radioGroup = page.locator('ion-radio-group');
81
+ const radios = page.locator('ion-radio');
82
+ await expect(radios.nth(0)).toHaveAttribute('aria-checked', 'false');
83
+ await expect(radios.nth(1)).toHaveAttribute('aria-checked', 'false');
84
+ await expect(radios.nth(2)).toHaveAttribute('aria-checked', 'true');
85
+ await radios.nth(0).click();
86
+ await page.waitForChanges();
87
+ await expect(radios.nth(0)).toHaveAttribute('aria-checked', 'true');
88
+ await expect(radios.nth(1)).toHaveAttribute('aria-checked', 'false');
89
+ await expect(radios.nth(2)).toHaveAttribute('aria-checked', 'false');
90
+ await expect(radioGroup).toHaveJSProperty('value', 1);
91
+ });
92
+ });
93
+ });
@@ -226,6 +226,8 @@ export class Range {
226
226
  this.ionStyle.emit({
227
227
  interactive: true,
228
228
  'interactive-disabled': this.disabled,
229
+ // TODO(FW-2997): remove this
230
+ legacy: !!this.legacy,
229
231
  });
230
232
  }
231
233
  }
@@ -110,6 +110,11 @@
110
110
  overflow: hidden;
111
111
  }
112
112
 
113
+ :host(.in-item:not(.legacy-select)) {
114
+ flex: 1 1 0;
115
+ width: 0;
116
+ }
117
+
113
118
  :host(.in-item.legacy-select) {
114
119
  position: static;
115
120
  max-width: 45%;
@@ -2,7 +2,7 @@
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
4
  import { Host, h, forceUpdate } from "@stencil/core";
5
- import { createLegacyFormController, createNotchController } from "../../utils/forms/index";
5
+ import { compareOptions, createLegacyFormController, createNotchController, isOptionSelected } from "../../utils/forms/index";
6
6
  import { findItemLabel, focusElement, getAriaLabel, renderHiddenInput, inheritAttributes } from "../../utils/helpers";
7
7
  import { printIonWarning } from "../../utils/logging/index";
8
8
  import { actionSheetController, alertController, popoverController } from "../../utils/overlays";
@@ -465,6 +465,8 @@ export class Select {
465
465
  style['has-placeholder'] = this.placeholder !== undefined;
466
466
  style['has-value'] = this.hasValue();
467
467
  style['has-focus'] = this.isExpanded;
468
+ // TODO(FW-3194): remove this
469
+ style['legacy'] = !!this.legacy;
468
470
  }
469
471
  this.ionStyle.emit(style);
470
472
  }
@@ -737,7 +739,7 @@ Developers can use the "legacy" property to continue using the legacy form marku
737
739
  "optional": true,
738
740
  "docs": {
739
741
  "tags": [],
740
- "text": "A property name or function used to compare object values"
742
+ "text": "This property allows developers to specify a custom function or property\nname for comparing objects when determining the selected option in the\nion-select. When not specified, the default behavior will use object\nequality (===) for comparison."
741
743
  },
742
744
  "attribute": "compare-with",
743
745
  "reflect": false
@@ -1215,17 +1217,6 @@ Developers can use the "legacy" property to continue using the legacy form marku
1215
1217
  }];
1216
1218
  }
1217
1219
  }
1218
- const isOptionSelected = (currentValue, compareValue, compareWith) => {
1219
- if (currentValue === undefined) {
1220
- return false;
1221
- }
1222
- if (Array.isArray(currentValue)) {
1223
- return currentValue.some((val) => compareOptions(val, compareValue, compareWith));
1224
- }
1225
- else {
1226
- return compareOptions(currentValue, compareValue, compareWith);
1227
- }
1228
- };
1229
1220
  const getOptionValue = (el) => {
1230
1221
  const value = el.value;
1231
1222
  return value === undefined ? el.textContent || '' : value;
@@ -1239,17 +1230,6 @@ const parseValue = (value) => {
1239
1230
  }
1240
1231
  return value.toString();
1241
1232
  };
1242
- const compareOptions = (currentValue, compareValue, compareWith) => {
1243
- if (typeof compareWith === 'function') {
1244
- return compareWith(currentValue, compareValue);
1245
- }
1246
- else if (typeof compareWith === 'string') {
1247
- return currentValue[compareWith] === compareValue[compareWith];
1248
- }
1249
- else {
1250
- return Array.isArray(compareValue) ? compareValue.includes(currentValue) : currentValue === compareValue;
1251
- }
1252
- };
1253
1233
  const generateText = (opts, value, compareWith) => {
1254
1234
  if (value === undefined) {
1255
1235
  return '';
@@ -110,6 +110,11 @@
110
110
  overflow: hidden;
111
111
  }
112
112
 
113
+ :host(.in-item:not(.legacy-select)) {
114
+ flex: 1 1 0;
115
+ width: 0;
116
+ }
117
+
113
118
  :host(.in-item.legacy-select) {
114
119
  position: static;
115
120
  max-width: 45%;
@@ -27,7 +27,7 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
27
27
  await page.setContent(`
28
28
  <ion-item>
29
29
  <ion-label>Really long label should not wrap</ion-label>
30
- <ion-select value="wrap" class="ion-text-wrap">
30
+ <ion-select value="wrap" legacy="true" class="ion-text-wrap">
31
31
  <ion-select-option value="wrap">Should wrap value only when label exists and really long text exists to make it wrap the text</ion-select-option>
32
32
  </ion-select>
33
33
  </ion-item>
@@ -9,6 +9,18 @@ export class SkeletonText {
9
9
  constructor() {
10
10
  this.animated = false;
11
11
  }
12
+ componentWillLoad() {
13
+ this.emitStyle();
14
+ }
15
+ emitStyle() {
16
+ // The emitted property is used by item in order
17
+ // to add the item-skeleton-text class which applies
18
+ // overflow: hidden to its label
19
+ const style = {
20
+ 'skeleton-text': true,
21
+ };
22
+ this.ionStyle.emit(style);
23
+ }
12
24
  render() {
13
25
  const animated = this.animated && config.getBoolean('animated', true);
14
26
  const inMedia = hostContext('ion-avatar', this.el) || hostContext('ion-thumbnail', this.el);
@@ -53,5 +65,32 @@ export class SkeletonText {
53
65
  }
54
66
  };
55
67
  }
68
+ static get events() {
69
+ return [{
70
+ "method": "ionStyle",
71
+ "name": "ionStyle",
72
+ "bubbles": true,
73
+ "cancelable": true,
74
+ "composed": true,
75
+ "docs": {
76
+ "tags": [{
77
+ "name": "internal",
78
+ "text": undefined
79
+ }],
80
+ "text": "Emitted when the styles change."
81
+ },
82
+ "complexType": {
83
+ "original": "StyleEventDetail",
84
+ "resolved": "StyleEventDetail",
85
+ "references": {
86
+ "StyleEventDetail": {
87
+ "location": "import",
88
+ "path": "../../interface",
89
+ "id": "src/interface.d.ts::StyleEventDetail"
90
+ }
91
+ }
92
+ }
93
+ }];
94
+ }
56
95
  static get elementRef() { return "el"; }
57
96
  }
@@ -189,6 +189,8 @@ export class Textarea {
189
189
  'has-placeholder': this.placeholder !== undefined,
190
190
  'has-value': this.hasValue(),
191
191
  'has-focus': this.hasFocus,
192
+ // TODO(FW-2876): remove this
193
+ legacy: !!this.legacy,
192
194
  });
193
195
  }
194
196
  }
@@ -15,7 +15,7 @@ export const mdEnterAnimation = (baseEl, opts) => {
15
15
  wrapperAnimation.addElement(wrapperEl);
16
16
  switch (position) {
17
17
  case 'top':
18
- wrapperEl.style.top = top;
18
+ wrapperEl.style.setProperty('transform', `translateY(${top})`);
19
19
  wrapperAnimation.fromTo('opacity', 0.01, 1);
20
20
  break;
21
21
  case 'middle':
@@ -24,7 +24,7 @@ export const mdEnterAnimation = (baseEl, opts) => {
24
24
  wrapperAnimation.fromTo('opacity', 0.01, 1);
25
25
  break;
26
26
  default:
27
- wrapperEl.style.bottom = bottom;
27
+ wrapperEl.style.setProperty('transform', `translateY(${bottom})`);
28
28
  wrapperAnimation.fromTo('opacity', 0.01, 1);
29
29
  break;
30
30
  }