@ionic/core 7.5.2-dev.11697834896.1fed55cc → 7.5.2-dev.11698187124.1b7ea660

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 (280) hide show
  1. package/components/action-sheet.js +2 -2
  2. package/components/alert.js +2 -2
  3. package/components/animation.js +29 -15
  4. package/components/checkbox.js +0 -2
  5. package/components/index8.js +0 -1
  6. package/components/input-shims.js +9 -1
  7. package/components/ion-datetime.js +2 -2
  8. package/components/ion-fab.js +1 -1
  9. package/components/ion-input.js +9 -4
  10. package/components/ion-menu.js +15 -3
  11. package/components/ion-range.js +0 -2
  12. package/components/ion-refresher.js +8 -1
  13. package/components/ion-reorder.js +2 -2
  14. package/components/ion-searchbar.js +9 -2
  15. package/components/ion-select.js +2 -4
  16. package/components/ion-skeleton-text.js +1 -14
  17. package/components/ion-textarea.js +9 -4
  18. package/components/ion-toggle.js +0 -2
  19. package/components/item.js +2 -2
  20. package/components/label.js +2 -2
  21. package/components/radio.js +0 -3
  22. package/components/watch-options.js +14 -3
  23. package/css/core.css.map +1 -1
  24. package/css/ionic.bundle.css.map +1 -1
  25. package/dist/cjs/{animation-1a53c50e.js → animation-1083855c.js} +29 -15
  26. package/dist/cjs/{index-d0fdb56d.js → index-174dc666.js} +2 -2
  27. package/dist/cjs/{index-4eedbc59.js → index-5a2463aa.js} +1 -1
  28. package/dist/cjs/{index-10873539.js → index-da2c7a37.js} +0 -1
  29. package/dist/cjs/index.cjs.js +5 -5
  30. package/dist/cjs/{input-shims-da7dc0de.js → input-shims-b0a75a01.js} +10 -2
  31. package/dist/cjs/ion-action-sheet.cjs.entry.js +3 -3
  32. package/dist/cjs/ion-alert.cjs.entry.js +3 -3
  33. package/dist/cjs/ion-app_8.cjs.entry.js +4 -4
  34. package/dist/cjs/ion-checkbox.cjs.entry.js +0 -2
  35. package/dist/cjs/ion-datetime_3.cjs.entry.js +3 -3
  36. package/dist/cjs/ion-fab_3.cjs.entry.js +1 -1
  37. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +1 -1
  38. package/dist/cjs/ion-input.cjs.entry.js +8 -3
  39. package/dist/cjs/ion-item-option_3.cjs.entry.js +2 -2
  40. package/dist/cjs/ion-item_8.cjs.entry.js +4 -17
  41. package/dist/cjs/ion-loading.cjs.entry.js +1 -1
  42. package/dist/cjs/ion-menu_3.cjs.entry.js +17 -5
  43. package/dist/cjs/ion-modal.cjs.entry.js +3 -3
  44. package/dist/cjs/ion-nav_2.cjs.entry.js +1 -1
  45. package/dist/cjs/ion-popover.cjs.entry.js +2 -2
  46. package/dist/cjs/ion-radio_2.cjs.entry.js +0 -3
  47. package/dist/cjs/ion-range.cjs.entry.js +1 -3
  48. package/dist/cjs/ion-refresher_2.cjs.entry.js +10 -3
  49. package/dist/cjs/ion-reorder_2.cjs.entry.js +3 -3
  50. package/dist/cjs/ion-searchbar.cjs.entry.js +8 -1
  51. package/dist/cjs/ion-select_3.cjs.entry.js +3 -5
  52. package/dist/cjs/ion-textarea.cjs.entry.js +8 -3
  53. package/dist/cjs/ion-toast.cjs.entry.js +1 -1
  54. package/dist/cjs/ion-toggle.cjs.entry.js +0 -2
  55. package/dist/cjs/ionic.cjs.js +1 -1
  56. package/dist/cjs/{ios.transition-2af7c625.js → ios.transition-74ad019b.js} +2 -2
  57. package/dist/cjs/{md.transition-992379b5.js → md.transition-efcc0ad3.js} +2 -2
  58. package/dist/cjs/{status-tap-778e8054.js → status-tap-b19eb3c8.js} +1 -1
  59. package/dist/cjs/{watch-options-f3f77e54.js → watch-options-53bbb124.js} +14 -3
  60. package/dist/collection/collection-manifest.json +1 -1
  61. package/dist/collection/components/action-sheet/action-sheet.ios.css +16 -3
  62. package/dist/collection/components/action-sheet/action-sheet.md.css +16 -3
  63. package/dist/collection/components/alert/alert.ios.css +18 -5
  64. package/dist/collection/components/alert/alert.md.css +18 -5
  65. package/dist/collection/components/checkbox/checkbox.js +0 -2
  66. package/dist/collection/components/datetime/datetime.ios.css +0 -1
  67. package/dist/collection/components/datetime/datetime.md.css +0 -1
  68. package/dist/collection/components/fab/fab.css +24 -36
  69. package/dist/collection/components/fab/test/safe-area/fab.e2e.js +63 -0
  70. package/dist/collection/components/input/input.js +9 -4
  71. package/dist/collection/components/item/item.ios.css +3 -25
  72. package/dist/collection/components/item/item.md.css +3 -25
  73. package/dist/collection/components/item/test/disabled/item.e2e.js +1 -0
  74. package/dist/collection/components/item/test/text/item.e2e.js +14 -0
  75. package/dist/collection/components/label/label.ios.css +3 -14
  76. package/dist/collection/components/label/label.md.css +3 -14
  77. package/dist/collection/components/menu/menu.js +15 -3
  78. package/dist/collection/components/note/test/a11y/note.e2e.js +0 -43
  79. package/dist/collection/components/radio/radio.js +5 -4
  80. package/dist/collection/components/radio/test/legacy/a11y/radio.e2e.js +5 -5
  81. package/dist/collection/components/range/range.js +0 -2
  82. package/dist/collection/components/refresher/refresher.utils.js +8 -1
  83. package/dist/collection/components/reorder/reorder.ios.css +1 -34
  84. package/dist/collection/components/reorder/reorder.md.css +1 -34
  85. package/dist/collection/components/searchbar/searchbar.js +9 -2
  86. package/dist/collection/components/select/select.ios.css +0 -5
  87. package/dist/collection/components/select/select.js +0 -2
  88. package/dist/collection/components/select/select.md.css +0 -5
  89. package/dist/collection/components/select/test/legacy/wrapping/select.e2e.js +1 -1
  90. package/dist/collection/components/skeleton-text/skeleton-text.js +0 -39
  91. package/dist/collection/components/split-pane/test/multiple/split-pane.e2e.js +31 -0
  92. package/dist/collection/components/textarea/textarea.js +9 -4
  93. package/dist/collection/components/toggle/toggle.js +0 -2
  94. package/dist/collection/utils/animation/animation.js +29 -15
  95. package/dist/collection/utils/content/index.js +0 -1
  96. package/dist/collection/utils/input-shims/hacks/common.js +9 -1
  97. package/dist/collection/utils/watch-options.js +14 -3
  98. package/dist/docs.json +2 -2
  99. package/dist/esm/{animation-a9cdd18b.js → animation-8aa13916.js} +29 -15
  100. package/dist/esm/{index-746a238e.js → index-4392efa5.js} +0 -1
  101. package/dist/esm/{index-5c647d55.js → index-aae132ba.js} +1 -1
  102. package/dist/esm/{index-533d569d.js → index-ec72506a.js} +2 -2
  103. package/dist/esm/index.js +5 -5
  104. package/dist/esm/{input-shims-d78a3c77.js → input-shims-d0c93e5d.js} +10 -2
  105. package/dist/esm/ion-action-sheet.entry.js +3 -3
  106. package/dist/esm/ion-alert.entry.js +3 -3
  107. package/dist/esm/ion-app_8.entry.js +4 -4
  108. package/dist/esm/ion-checkbox.entry.js +0 -2
  109. package/dist/esm/ion-datetime_3.entry.js +3 -3
  110. package/dist/esm/ion-fab_3.entry.js +1 -1
  111. package/dist/esm/ion-infinite-scroll_2.entry.js +1 -1
  112. package/dist/esm/ion-input.entry.js +9 -4
  113. package/dist/esm/ion-item-option_3.entry.js +2 -2
  114. package/dist/esm/ion-item_8.entry.js +4 -17
  115. package/dist/esm/ion-loading.entry.js +1 -1
  116. package/dist/esm/ion-menu_3.entry.js +17 -5
  117. package/dist/esm/ion-modal.entry.js +3 -3
  118. package/dist/esm/ion-nav_2.entry.js +1 -1
  119. package/dist/esm/ion-popover.entry.js +2 -2
  120. package/dist/esm/ion-radio_2.entry.js +0 -3
  121. package/dist/esm/ion-range.entry.js +1 -3
  122. package/dist/esm/ion-refresher_2.entry.js +10 -3
  123. package/dist/esm/ion-reorder_2.entry.js +3 -3
  124. package/dist/esm/ion-searchbar.entry.js +9 -2
  125. package/dist/esm/ion-select_3.entry.js +3 -5
  126. package/dist/esm/ion-textarea.entry.js +9 -4
  127. package/dist/esm/ion-toast.entry.js +1 -1
  128. package/dist/esm/ion-toggle.entry.js +0 -2
  129. package/dist/esm/ionic.js +1 -1
  130. package/dist/esm/{ios.transition-b3053722.js → ios.transition-f1cea7e0.js} +2 -2
  131. package/dist/esm/{md.transition-bdf2eec2.js → md.transition-1bf39c32.js} +2 -2
  132. package/dist/esm/{status-tap-9aeeaca5.js → status-tap-4e96ecf3.js} +1 -1
  133. package/dist/esm/{watch-options-355a920a.js → watch-options-02d8498b.js} +14 -3
  134. package/dist/esm-es5/animation-8aa13916.js +4 -0
  135. package/dist/esm-es5/{index-5c647d55.js → index-aae132ba.js} +1 -1
  136. package/dist/esm-es5/{index-533d569d.js → index-ec72506a.js} +1 -1
  137. package/dist/esm-es5/index.js +1 -1
  138. package/dist/esm-es5/{input-shims-d78a3c77.js → input-shims-d0c93e5d.js} +1 -1
  139. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  140. package/dist/esm-es5/ion-alert.entry.js +1 -1
  141. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  142. package/dist/esm-es5/ion-checkbox.entry.js +1 -1
  143. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  144. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  145. package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
  146. package/dist/esm-es5/ion-input.entry.js +1 -1
  147. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  148. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  149. package/dist/esm-es5/ion-loading.entry.js +1 -1
  150. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  151. package/dist/esm-es5/ion-modal.entry.js +1 -1
  152. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  153. package/dist/esm-es5/ion-popover.entry.js +1 -1
  154. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  155. package/dist/esm-es5/ion-range.entry.js +1 -1
  156. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  157. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  158. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  159. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  160. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  161. package/dist/esm-es5/ion-toast.entry.js +1 -1
  162. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  163. package/dist/esm-es5/{ios.transition-b3053722.js → ios.transition-f1cea7e0.js} +1 -1
  164. package/dist/esm-es5/{md.transition-bdf2eec2.js → md.transition-1bf39c32.js} +1 -1
  165. package/dist/esm-es5/{status-tap-9aeeaca5.js → status-tap-4e96ecf3.js} +1 -1
  166. package/dist/esm-es5/{watch-options-355a920a.js → watch-options-02d8498b.js} +1 -1
  167. package/dist/ionic/index.esm.js +1 -1
  168. package/dist/ionic/ionic.esm.js +1 -1
  169. package/dist/ionic/ionic.js +1 -1
  170. package/dist/ionic/p-017631df.system.entry.js +4 -0
  171. package/dist/ionic/{p-307b0e77.entry.js → p-0362c48a.entry.js} +1 -1
  172. package/dist/ionic/{p-ec4f26da.system.entry.js → p-07989b03.system.entry.js} +1 -1
  173. package/dist/ionic/p-0c0d536f.system.entry.js +4 -0
  174. package/dist/ionic/p-0e0b3668.system.entry.js +4 -0
  175. package/dist/ionic/{p-755b2917.system.js → p-0fb53284.system.js} +1 -1
  176. package/dist/ionic/p-15e6ef90.system.entry.js +4 -0
  177. package/dist/ionic/{p-5a12d57c.system.entry.js → p-1676eeff.system.entry.js} +1 -1
  178. package/dist/ionic/{p-ad12e632.system.entry.js → p-2222b68a.system.entry.js} +1 -1
  179. package/dist/ionic/{p-b45118c0.system.entry.js → p-23410b18.system.entry.js} +1 -1
  180. package/dist/ionic/{p-7b3cfd36.system.entry.js → p-26d0ec66.system.entry.js} +1 -1
  181. package/dist/ionic/p-2debdac3.entry.js +4 -0
  182. package/dist/ionic/p-2e8e0045.js +4 -0
  183. package/dist/ionic/{p-408e5ee6.system.entry.js → p-306d845d.system.entry.js} +1 -1
  184. package/dist/ionic/{p-8e24ebbc.js → p-311d91cc.js} +1 -1
  185. package/dist/ionic/{p-bc08029e.system.entry.js → p-3574440a.system.entry.js} +1 -1
  186. package/dist/ionic/p-3602001b.system.js +4 -0
  187. package/dist/ionic/{p-12445803.system.entry.js → p-372f1f80.system.entry.js} +1 -1
  188. package/dist/ionic/{p-aac723ac.system.entry.js → p-3e2ddf5e.system.entry.js} +1 -1
  189. package/dist/ionic/p-498f031c.entry.js +4 -0
  190. package/dist/ionic/p-4a329bd3.entry.js +4 -0
  191. package/dist/ionic/{p-32d17eee.entry.js → p-4e70a7cc.entry.js} +1 -1
  192. package/dist/ionic/{p-1f81b5be.entry.js → p-4e9114af.entry.js} +1 -1
  193. package/dist/ionic/{p-074d4971.js → p-507845ca.js} +1 -1
  194. package/dist/ionic/{p-c87827ca.system.js → p-5aac9314.system.js} +1 -1
  195. package/dist/ionic/p-5c92c941.entry.js +4 -0
  196. package/dist/ionic/p-5fba0b2d.entry.js +4 -0
  197. package/dist/ionic/{p-5416c18a.system.js → p-62b29300.system.js} +1 -1
  198. package/dist/ionic/p-62bfd4cb.system.entry.js +4 -0
  199. package/dist/ionic/{p-5ffd6742.system.js → p-664d1430.system.js} +1 -1
  200. package/dist/ionic/{p-b132c2c0.system.js → p-67eecef4.system.js} +1 -1
  201. package/dist/ionic/{p-7e77a185.system.entry.js → p-68f78c9b.system.entry.js} +1 -1
  202. package/dist/ionic/p-70263330.entry.js +4 -0
  203. package/dist/ionic/p-79d430f7.system.entry.js +4 -0
  204. package/dist/ionic/{p-2743fb40.js → p-79fdc224.js} +1 -1
  205. package/dist/ionic/p-7b48cf4f.system.entry.js +4 -0
  206. package/dist/ionic/p-83198481.entry.js +4 -0
  207. package/dist/ionic/{p-49367d48.entry.js → p-892710a8.entry.js} +1 -1
  208. package/dist/ionic/p-8b1237b9.entry.js +4 -0
  209. package/dist/ionic/{p-acbcc508.system.entry.js → p-8fdd6396.system.entry.js} +1 -1
  210. package/dist/ionic/p-97c65aa5.js +4 -0
  211. package/dist/ionic/{p-0b24c4e7.entry.js → p-99eba967.entry.js} +1 -1
  212. package/dist/ionic/p-9d166dc1.js +4 -0
  213. package/dist/ionic/p-9ebd9c24.system.entry.js +4 -0
  214. package/dist/ionic/p-a7f83510.entry.js +4 -0
  215. package/dist/ionic/{p-c49672d8.system.js → p-b216de09.system.js} +1 -1
  216. package/dist/ionic/p-b9a17fcb.system.entry.js +4 -0
  217. package/dist/ionic/{p-64416e79.system.js → p-be7fcb09.system.js} +1 -1
  218. package/dist/ionic/{p-64b36ecd.system.js → p-c50ea33f.system.js} +1 -1
  219. package/dist/ionic/{p-0f10b5f5.system.entry.js → p-c6cae705.system.entry.js} +1 -1
  220. package/dist/ionic/{p-b20b49ba.js → p-c842da0a.js} +1 -1
  221. package/dist/ionic/p-c9f70283.entry.js +4 -0
  222. package/dist/ionic/p-ce56d7b5.system.entry.js +4 -0
  223. package/dist/ionic/p-cf67c66c.entry.js +4 -0
  224. package/dist/ionic/p-d3ba42e6.system.entry.js +4 -0
  225. package/dist/ionic/{p-a3fe2e01.entry.js → p-db0140c0.entry.js} +1 -1
  226. package/dist/ionic/{p-f094de62.system.entry.js → p-db6fb00c.system.entry.js} +1 -1
  227. package/dist/ionic/{p-623dd07e.entry.js → p-df189fa7.entry.js} +1 -1
  228. package/dist/ionic/p-e552cf80.entry.js +4 -0
  229. package/dist/ionic/p-ebdf4f41.entry.js +4 -0
  230. package/dist/ionic/{p-0ae4c173.entry.js → p-f089f3b1.entry.js} +1 -1
  231. package/dist/ionic/p-f10de93b.js +4 -0
  232. package/dist/ionic/p-f1e15f7a.entry.js +4 -0
  233. package/dist/ionic/p-f4bd51c5.entry.js +4 -0
  234. package/dist/ionic/{p-7c08106a.entry.js → p-f5e7ed0e.entry.js} +1 -1
  235. package/dist/ionic/{p-8286f6d4.system.js → p-fe08d5d6.system.js} +1 -1
  236. package/dist/types/components/radio/radio.d.ts +1 -1
  237. package/dist/types/components/skeleton-text/skeleton-text.d.ts +1 -9
  238. package/dist/types/components.d.ts +625 -5
  239. package/dist/types/stencil-public-runtime.d.ts +2 -0
  240. package/dist/types/utils/animation/animation-interface.d.ts +4 -4
  241. package/dist/types/utils/content/index.d.ts +1 -1
  242. package/dist/types/utils/focus-visible.d.ts +3 -2
  243. package/dist/types/utils/watch-options.d.ts +9 -1
  244. package/hydrate/index.js +123 -84
  245. package/package.json +2 -2
  246. package/dist/esm-es5/animation-a9cdd18b.js +0 -4
  247. package/dist/ionic/p-0866bf93.entry.js +0 -4
  248. package/dist/ionic/p-22beb08d.entry.js +0 -4
  249. package/dist/ionic/p-23f57624.system.entry.js +0 -4
  250. package/dist/ionic/p-27381a03.entry.js +0 -4
  251. package/dist/ionic/p-29b56db6.system.entry.js +0 -4
  252. package/dist/ionic/p-31a8fd9a.entry.js +0 -4
  253. package/dist/ionic/p-35e399bd.entry.js +0 -4
  254. package/dist/ionic/p-449f4377.js +0 -4
  255. package/dist/ionic/p-4ba4bbf8.entry.js +0 -4
  256. package/dist/ionic/p-4f97c112.entry.js +0 -4
  257. package/dist/ionic/p-505cc23b.entry.js +0 -4
  258. package/dist/ionic/p-5bf16a18.js +0 -4
  259. package/dist/ionic/p-69613961.system.entry.js +0 -4
  260. package/dist/ionic/p-6b097e5f.entry.js +0 -4
  261. package/dist/ionic/p-75cba889.entry.js +0 -4
  262. package/dist/ionic/p-7a4bb59b.entry.js +0 -4
  263. package/dist/ionic/p-7c6a16c1.system.entry.js +0 -4
  264. package/dist/ionic/p-7f8844bd.system.entry.js +0 -4
  265. package/dist/ionic/p-8277369c.entry.js +0 -4
  266. package/dist/ionic/p-87c3c4ec.entry.js +0 -4
  267. package/dist/ionic/p-9d93e024.system.entry.js +0 -4
  268. package/dist/ionic/p-9f2e0db9.js +0 -4
  269. package/dist/ionic/p-b77734e0.entry.js +0 -4
  270. package/dist/ionic/p-c2e6cc69.entry.js +0 -4
  271. package/dist/ionic/p-c7612d99.system.entry.js +0 -4
  272. package/dist/ionic/p-d0c77b0e.system.entry.js +0 -4
  273. package/dist/ionic/p-d625ae76.js +0 -4
  274. package/dist/ionic/p-d6f6b311.system.entry.js +0 -4
  275. package/dist/ionic/p-f63446a2.system.entry.js +0 -4
  276. package/dist/ionic/p-f6c370f4.system.entry.js +0 -4
  277. package/dist/ionic/p-f735392d.system.js +0 -4
  278. /package/dist/esm-es5/{index-746a238e.js → index-4392efa5.js} +0 -0
  279. /package/dist/ionic/{p-b24aa895.js → p-114a36ed.js} +0 -0
  280. /package/dist/ionic/{p-64475ab5.system.js → p-8a308596.system.js} +0 -0
@@ -208,7 +208,6 @@
208
208
  color: inherit;
209
209
  display: flex;
210
210
  position: relative;
211
- flex-wrap: wrap;
212
211
  align-items: inherit;
213
212
  justify-content: inherit;
214
213
  width: 100%;
@@ -220,12 +219,8 @@
220
219
  outline: none;
221
220
  background: var(--background);
222
221
  overflow: inherit;
223
- z-index: 1;
224
222
  box-sizing: border-box;
225
- }
226
-
227
- :host(.item-legacy) .item-native {
228
- flex-wrap: unset;
223
+ z-index: 1;
229
224
  }
230
225
 
231
226
  .item-native::-moz-focus-inner {
@@ -263,12 +258,10 @@ button, a {
263
258
  padding-bottom: var(--inner-padding-bottom);
264
259
  display: flex;
265
260
  position: relative;
266
- flex: 1 0 auto;
261
+ flex: 1;
267
262
  flex-direction: inherit;
268
- flex-wrap: wrap;
269
263
  align-items: inherit;
270
264
  align-self: stretch;
271
- max-width: 100%;
272
265
  min-height: inherit;
273
266
  border-width: var(--inner-border-width);
274
267
  border-style: var(--border-style);
@@ -278,12 +271,6 @@ button, a {
278
271
  box-sizing: border-box;
279
272
  }
280
273
 
281
- :host(.item-legacy) .item-inner {
282
- flex: 1;
283
- flex-wrap: unset;
284
- max-width: unset;
285
- }
286
-
287
274
  .item-bottom {
288
275
  margin-left: 0;
289
276
  margin-right: 0;
@@ -331,7 +318,6 @@ button, a {
331
318
 
332
319
  ::slotted(ion-label:not([slot=end])) {
333
320
  flex: 1;
334
- width: min-content;
335
321
  }
336
322
 
337
323
  :host(.item-input) {
@@ -340,23 +326,15 @@ button, a {
340
326
 
341
327
  .input-wrapper {
342
328
  display: flex;
343
- flex: 1 0 auto;
329
+ flex: 1;
344
330
  flex-direction: inherit;
345
- flex-wrap: wrap;
346
331
  align-items: inherit;
347
332
  align-self: stretch;
348
- max-width: 100%;
349
333
  text-overflow: ellipsis;
350
334
  overflow: inherit;
351
335
  box-sizing: border-box;
352
336
  }
353
337
 
354
- :host(.item-legacy) .input-wrapper {
355
- flex: 1;
356
- flex-wrap: unset;
357
- max-width: unset;
358
- }
359
-
360
338
  :host(.item-label-stacked),
361
339
  :host(.item-label-floating) {
362
340
  align-items: start;
@@ -208,7 +208,6 @@
208
208
  color: inherit;
209
209
  display: flex;
210
210
  position: relative;
211
- flex-wrap: wrap;
212
211
  align-items: inherit;
213
212
  justify-content: inherit;
214
213
  width: 100%;
@@ -220,12 +219,8 @@
220
219
  outline: none;
221
220
  background: var(--background);
222
221
  overflow: inherit;
223
- z-index: 1;
224
222
  box-sizing: border-box;
225
- }
226
-
227
- :host(.item-legacy) .item-native {
228
- flex-wrap: unset;
223
+ z-index: 1;
229
224
  }
230
225
 
231
226
  .item-native::-moz-focus-inner {
@@ -263,12 +258,10 @@ button, a {
263
258
  padding-bottom: var(--inner-padding-bottom);
264
259
  display: flex;
265
260
  position: relative;
266
- flex: 1 0 auto;
261
+ flex: 1;
267
262
  flex-direction: inherit;
268
- flex-wrap: wrap;
269
263
  align-items: inherit;
270
264
  align-self: stretch;
271
- max-width: 100%;
272
265
  min-height: inherit;
273
266
  border-width: var(--inner-border-width);
274
267
  border-style: var(--border-style);
@@ -278,12 +271,6 @@ button, a {
278
271
  box-sizing: border-box;
279
272
  }
280
273
 
281
- :host(.item-legacy) .item-inner {
282
- flex: 1;
283
- flex-wrap: unset;
284
- max-width: unset;
285
- }
286
-
287
274
  .item-bottom {
288
275
  margin-left: 0;
289
276
  margin-right: 0;
@@ -331,7 +318,6 @@ button, a {
331
318
 
332
319
  ::slotted(ion-label:not([slot=end])) {
333
320
  flex: 1;
334
- width: min-content;
335
321
  }
336
322
 
337
323
  :host(.item-input) {
@@ -340,23 +326,15 @@ button, a {
340
326
 
341
327
  .input-wrapper {
342
328
  display: flex;
343
- flex: 1 0 auto;
329
+ flex: 1;
344
330
  flex-direction: inherit;
345
- flex-wrap: wrap;
346
331
  align-items: inherit;
347
332
  align-self: stretch;
348
- max-width: 100%;
349
333
  text-overflow: ellipsis;
350
334
  overflow: inherit;
351
335
  box-sizing: border-box;
352
336
  }
353
337
 
354
- :host(.item-legacy) .input-wrapper {
355
- flex: 1;
356
- flex-wrap: unset;
357
- max-width: unset;
358
- }
359
-
360
338
  :host(.item-label-stacked),
361
339
  :host(.item-label-floating) {
362
340
  align-items: start;
@@ -11,6 +11,7 @@ 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
14
15
  await expect(page).toHaveScreenshot(screenshot(`item-disabled-diff`));
15
16
  });
16
17
  });
@@ -0,0 +1,14 @@
1
+ /*!
2
+ * (C) Ionic http://ionicframework.com - MIT License
3
+ */
4
+ import { expect } from "@playwright/test";
5
+ import { configs, test } from "../../../../utils/test/playwright/index";
6
+ configs().forEach(({ title, screenshot, config }) => {
7
+ test.describe(title('item: text'), () => {
8
+ test('should not have visual regressions', async ({ page }) => {
9
+ await page.goto(`/src/components/item/test/text`, config);
10
+ await page.setIonViewport();
11
+ await expect(page).toHaveScreenshot(screenshot(`item-text-diff`));
12
+ });
13
+ });
14
+ });
@@ -41,24 +41,17 @@
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) {
48
44
  white-space: nowrap;
49
45
  overflow: hidden;
50
- }
51
-
52
- :host-context(.item:not(.item-input):not(.item-legacy)) {
53
- flex-grow: 1;
46
+ box-sizing: border-box;
54
47
  }
55
48
 
56
49
  :host(.ion-color) {
57
50
  color: var(--ion-color-base);
58
51
  }
59
52
 
60
- :host(.ion-text-nowrap) {
61
- overflow: hidden;
53
+ :host(.ion-text-wrap) {
54
+ white-space: normal;
62
55
  }
63
56
 
64
57
  :host-context(.item-interactive-disabled:not(.item-multiple-inputs)) {
@@ -77,10 +70,6 @@
77
70
  align-self: baseline;
78
71
  }
79
72
 
80
- :host-context(.item-skeleton-text) {
81
- overflow: hidden;
82
- }
83
-
84
73
  :host(.label-fixed) {
85
74
  flex: 0 0 100px;
86
75
  width: 100px;
@@ -41,24 +41,17 @@
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) {
48
44
  white-space: nowrap;
49
45
  overflow: hidden;
50
- }
51
-
52
- :host-context(.item:not(.item-input):not(.item-legacy)) {
53
- flex-grow: 1;
46
+ box-sizing: border-box;
54
47
  }
55
48
 
56
49
  :host(.ion-color) {
57
50
  color: var(--ion-color-base);
58
51
  }
59
52
 
60
- :host(.ion-text-nowrap) {
61
- overflow: hidden;
53
+ :host(.ion-text-wrap) {
54
+ white-space: normal;
62
55
  }
63
56
 
64
57
  :host-context(.item-interactive-disabled:not(.item-multiple-inputs)) {
@@ -77,10 +70,6 @@
77
70
  align-self: baseline;
78
71
  }
79
72
 
80
- :host-context(.item-skeleton-text) {
81
- overflow: hidden;
82
- }
83
-
84
73
  :host(.label-fixed) {
85
74
  flex: 0 0 100px;
86
75
  width: 100px;
@@ -173,6 +173,18 @@ export class Menu {
173
173
  this.contentEl = undefined;
174
174
  }
175
175
  onSplitPaneChanged(ev) {
176
+ const { target } = ev;
177
+ 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;
187
+ }
176
188
  this.isPaneVisible = ev.detail.isPane(this.el);
177
189
  this.updateState();
178
190
  }
@@ -331,11 +343,11 @@ export class Menu {
331
343
  this.animation = undefined;
332
344
  }
333
345
  // Create new animation
334
- this.animation = await menuController._createAnimation(this.type, this);
346
+ const animation = (this.animation = await menuController._createAnimation(this.type, this));
335
347
  if (!config.getBoolean('animated', true)) {
336
- this.animation.duration(0);
348
+ animation.duration(0);
337
349
  }
338
- this.animation.fill('both');
350
+ animation.fill('both');
339
351
  }
340
352
  async startAnimation(shouldOpen, animated) {
341
353
  const isReversed = !shouldOpen;
@@ -48,48 +48,5 @@ 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
- });
94
51
  });
95
52
  });
@@ -85,7 +85,6 @@ export class Radio {
85
85
  }
86
86
  /** @internal */
87
87
  async setFocus(ev) {
88
- // TODO(FW-2832): type (using Event triggers a build error due to conflict with Stencil Event import)
89
88
  ev.stopPropagation();
90
89
  ev.preventDefault();
91
90
  this.el.focus();
@@ -121,8 +120,6 @@ export class Radio {
121
120
  emitStyle() {
122
121
  const style = {
123
122
  'interactive-disabled': this.disabled,
124
- // TODO(FW-3125): remove this
125
- legacy: !!this.legacy,
126
123
  };
127
124
  if (this.legacyFormController.hasLegacyControl()) {
128
125
  style['radio-checked'] = this.checked;
@@ -418,7 +415,7 @@ Developers can dismiss this warning by removing their usage of the "legacy" prop
418
415
  return {
419
416
  "setFocus": {
420
417
  "complexType": {
421
- "signature": "(ev: any) => Promise<void>",
418
+ "signature": "(ev: globalThis.Event) => Promise<void>",
422
419
  "parameters": [{
423
420
  "tags": [],
424
421
  "text": ""
@@ -427,6 +424,10 @@ Developers can dismiss this warning by removing their usage of the "legacy" prop
427
424
  "Promise": {
428
425
  "location": "global",
429
426
  "id": "global::Promise"
427
+ },
428
+ "globalThis": {
429
+ "location": "global",
430
+ "id": "global::globalThis"
430
431
  }
431
432
  },
432
433
  "return": "Promise<void>"
@@ -8,9 +8,11 @@ import { configs, test } from "../../../../../utils/test/playwright/index";
8
8
  */
9
9
  configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => {
10
10
  test.describe(title('radio: a11y'), () => {
11
- // TODO(FW-5218)
12
- test.fixme('tabbing should switch between radio groups', async ({ page, pageUtils }) => {
11
+ test.beforeEach(async ({ page, skip }) => {
12
+ skip.browser('webkit', 'Tabbing is flaky in Safari');
13
13
  await page.goto(`/src/components/radio/test/legacy/a11y`, config);
14
+ });
15
+ test('tabbing should switch between radio groups', async ({ page, pageUtils }) => {
14
16
  const firstGroupRadios = page.locator('#first-group ion-radio');
15
17
  const secondGroupRadios = page.locator('#second-group ion-radio');
16
18
  await pageUtils.pressKeys('Tab');
@@ -20,9 +22,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
20
22
  await pageUtils.pressKeys('shift+Tab');
21
23
  await expect(firstGroupRadios.nth(0)).toBeFocused();
22
24
  });
23
- // TODO(FW-5218)
24
- test.fixme('using arrow keys should move between enabled radios within group', async ({ page, pageUtils }) => {
25
- await page.goto(`/src/components/radio/test/legacy/a11y`, config);
25
+ test('using arrow keys should move between enabled radios within group', async ({ page, pageUtils }) => {
26
26
  const firstGroupRadios = page.locator('#first-group ion-radio');
27
27
  await pageUtils.pressKeys('Tab');
28
28
  await expect(firstGroupRadios.nth(0)).toBeFocused();
@@ -226,8 +226,6 @@ 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,
231
229
  });
232
230
  }
233
231
  }
@@ -16,7 +16,6 @@ export const createPullingAnimation = (type, pullingSpinner, refresherEl) => {
16
16
  : createTranslateAnimation(pullingSpinner, refresherEl);
17
17
  };
18
18
  const createBaseAnimation = (pullingRefresherIcon) => {
19
- // TODO(FW-2832): add types/re-evaluate asserting so many things
20
19
  const spinner = pullingRefresherIcon.querySelector('ion-spinner');
21
20
  const circle = spinner.shadowRoot.querySelector('circle');
22
21
  const spinnerArrowContainer = pullingRefresherIcon.querySelector('.spinner-arrow-container');
@@ -173,6 +172,14 @@ export const shouldUseNativeRefresher = async (referenceEl, mode) => {
173
172
  const refreshingSpinner = referenceEl.querySelector('ion-refresher-content .refresher-refreshing ion-spinner');
174
173
  return (pullingSpinner !== null &&
175
174
  refreshingSpinner !== null &&
175
+ /**
176
+ * We use webkitOverflowScrolling for feature detection with rubber band scrolling
177
+ * on iOS. When doing referenceEl.style, webkitOverflowScrolling is undefined on non-iOS platforms.
178
+ * However, it will be the empty string on iOS.
179
+ * Note that we do not use getPropertyValue (and thus need to cast as any) because calling
180
+ * getPropertyValue('-webkit-overflow-scrolling') will return the empty string if it is not
181
+ * set on the element, even if the platform does not support that.
182
+ */
176
183
  ((mode === 'ios' && isPlatform('mobile') && referenceEl.style.webkitOverflowScrolling !== undefined) ||
177
184
  mode === 'md'));
178
185
  };
@@ -1,36 +1,3 @@
1
- /**
2
- * Convert a font size to a dynamic font size.
3
- * Fonts that participate in Dynamic Type should use
4
- * dynamic font sizes.
5
- * @param size - The initial font size including the unit (i.e. px or pt)
6
- * @param unit (optional) - The unit to convert to. Use this if you want to
7
- * convert to a unit other than $baselineUnit.
8
- */
9
- /**
10
- * Convert a font size to a dynamic font size but impose
11
- * a maximum font size.
12
- * @param size - The initial font size including the unit (i.e. px or pt)
13
- * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
14
- * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
15
- * convert to a unit other than $baselineUnit.
16
- */
17
- /**
18
- * Convert a font size to a dynamic font size but impose
19
- * a minimum font size.
20
- * @param size - The initial font size including the unit (i.e. px or pt)
21
- * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
22
- * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
23
- * convert to a unit other than $baselineUnit.
24
- */
25
- /**
26
- * Convert a font size to a dynamic font size but impose
27
- * maximum and minimum font sizes.
28
- * @param size - The initial font size including the unit (i.e. px or pt)
29
- * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
30
- * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
31
- * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
32
- * convert to a unit other than $baselineUnit.
33
- */
34
1
  :host([slot]) {
35
2
  display: none;
36
3
  line-height: 0;
@@ -46,7 +13,7 @@
46
13
  * icons resize with Dynamic Type.
47
14
  */
48
15
  ::slotted(ion-icon) {
49
- font-size: 1rem;
16
+ font-size: dynamic-font(16px);
50
17
  }
51
18
 
52
19
  /**
@@ -1,36 +1,3 @@
1
- /**
2
- * Convert a font size to a dynamic font size.
3
- * Fonts that participate in Dynamic Type should use
4
- * dynamic font sizes.
5
- * @param size - The initial font size including the unit (i.e. px or pt)
6
- * @param unit (optional) - The unit to convert to. Use this if you want to
7
- * convert to a unit other than $baselineUnit.
8
- */
9
- /**
10
- * Convert a font size to a dynamic font size but impose
11
- * a maximum font size.
12
- * @param size - The initial font size including the unit (i.e. px or pt)
13
- * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
14
- * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
15
- * convert to a unit other than $baselineUnit.
16
- */
17
- /**
18
- * Convert a font size to a dynamic font size but impose
19
- * a minimum font size.
20
- * @param size - The initial font size including the unit (i.e. px or pt)
21
- * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
22
- * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
23
- * convert to a unit other than $baselineUnit.
24
- */
25
- /**
26
- * Convert a font size to a dynamic font size but impose
27
- * maximum and minimum font sizes.
28
- * @param size - The initial font size including the unit (i.e. px or pt)
29
- * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
30
- * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
31
- * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
32
- * convert to a unit other than $baselineUnit.
33
- */
34
1
  :host([slot]) {
35
2
  display: none;
36
3
  line-height: 0;
@@ -46,7 +13,7 @@
46
13
  * icons resize with Dynamic Type.
47
14
  */
48
15
  ::slotted(ion-icon) {
49
- font-size: 1rem;
16
+ font-size: dynamic-font(16px);
50
17
  }
51
18
 
52
19
  /**
@@ -2,7 +2,7 @@
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
4
  import { Host, forceUpdate, h } from "@stencil/core";
5
- import { debounceEvent, raf } from "../../utils/helpers";
5
+ import { debounceEvent, raf, componentOnReady } from "../../utils/helpers";
6
6
  import { isRTL } from "../../utils/rtl/index";
7
7
  import { createColorClasses } from "../../utils/theme";
8
8
  import { arrowBackSharp, closeCircle, closeSharp, searchOutline, searchSharp } from "ionicons/icons";
@@ -189,7 +189,14 @@ export class Searchbar {
189
189
  /**
190
190
  * Returns the native `<input>` element used under the hood.
191
191
  */
192
- getInputElement() {
192
+ async getInputElement() {
193
+ /**
194
+ * If this gets called in certain early lifecycle hooks (ex: Vue onMounted),
195
+ * nativeInput won't be defined yet with the custom elements build, so wait for it to load in.
196
+ */
197
+ if (!this.nativeInput) {
198
+ await new Promise((resolve) => componentOnReady(this.el, resolve));
199
+ }
193
200
  return Promise.resolve(this.nativeInput);
194
201
  }
195
202
  /**
@@ -99,11 +99,6 @@
99
99
  overflow: hidden;
100
100
  }
101
101
 
102
- :host(.in-item:not(.legacy-select)) {
103
- flex: 1 1 0;
104
- width: 0;
105
- }
106
-
107
102
  :host(.in-item.legacy-select) {
108
103
  position: static;
109
104
  max-width: 45%;
@@ -465,8 +465,6 @@ 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;
470
468
  }
471
469
  this.ionStyle.emit(style);
472
470
  }
@@ -99,11 +99,6 @@
99
99
  overflow: hidden;
100
100
  }
101
101
 
102
- :host(.in-item:not(.legacy-select)) {
103
- flex: 1 1 0;
104
- width: 0;
105
- }
106
-
107
102
  :host(.in-item.legacy-select) {
108
103
  position: static;
109
104
  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" legacy="true" class="ion-text-wrap">
30
+ <ion-select value="wrap" 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,18 +9,6 @@ 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
- }
24
12
  render() {
25
13
  const animated = this.animated && config.getBoolean('animated', true);
26
14
  const inMedia = hostContext('ion-avatar', this.el) || hostContext('ion-thumbnail', this.el);
@@ -65,32 +53,5 @@ export class SkeletonText {
65
53
  }
66
54
  };
67
55
  }
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
- }
95
56
  static get elementRef() { return "el"; }
96
57
  }