@ionic/core 7.5.8-dev.11701876182.1e71e7a0 → 7.5.8-dev.11702056888.11188f48

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 (553) hide show
  1. package/components/animation.js +11 -12
  2. package/components/backdrop.js +0 -12
  3. package/components/checkbox.js +3 -5
  4. package/components/data.js +1 -1
  5. package/components/gesture-controller.js +1 -1
  6. package/components/index4.js +12 -10
  7. package/components/index5.js +22 -0
  8. package/components/input-shims.js +7 -12
  9. package/components/input.utils.js +2 -3
  10. package/components/ion-content.js +1 -1
  11. package/components/ion-datetime.js +40 -64
  12. package/components/ion-infinite-scroll.js +3 -11
  13. package/components/ion-input.js +8 -31
  14. package/components/ion-modal.js +2 -2
  15. package/components/ion-picker-column-option.d.ts +11 -0
  16. package/components/ion-picker-column-option.js +9 -0
  17. package/components/ion-picker-column.js +2 -2
  18. package/components/ion-picker-legacy-column.d.ts +11 -0
  19. package/components/ion-picker-legacy-column.js +9 -0
  20. package/components/{ion-picker-internal.d.ts → ion-picker-legacy.d.ts} +4 -4
  21. package/components/ion-picker-legacy.js +309 -0
  22. package/components/ion-picker.js +1 -309
  23. package/components/ion-range.js +3 -5
  24. package/components/ion-select.js +29 -44
  25. package/components/ion-skeleton-text.js +1 -14
  26. package/components/ion-textarea.js +7 -30
  27. package/components/ion-toast.js +74 -419
  28. package/components/ion-toggle.js +3 -5
  29. package/components/item.js +2 -2
  30. package/components/label.js +2 -2
  31. package/components/overlays.js +12 -6
  32. package/components/picker-column-option.js +122 -0
  33. package/components/picker-column.js +351 -322
  34. package/components/picker-column2.js +379 -0
  35. package/components/{picker-internal.js → picker.js} +29 -22
  36. package/components/radio-group.js +0 -2
  37. package/components/radio.js +5 -45
  38. package/dist/cjs/{animation-9b401d39.js → animation-cc40e39c.js} +12 -13
  39. package/dist/cjs/{button-active-a5185907.js → button-active-9d7e0640.js} +2 -2
  40. package/dist/cjs/{capacitor-c04564bf.js → capacitor-46980811.js} +1 -1
  41. package/dist/cjs/{data-36b9094e.js → data-e7526b58.js} +1 -1
  42. package/dist/cjs/{gesture-controller-c40c045a.js → gesture-controller-9436f482.js} +1 -0
  43. package/dist/cjs/{haptic-b882e0bb.js → haptic-216df36c.js} +1 -1
  44. package/dist/cjs/index-306a7476.js +32 -0
  45. package/dist/cjs/{index-ce101dc9.js → index-5cbb20f9.js} +13 -11
  46. package/dist/cjs/{index-b4f986cd.js → index-8c1e77d6.js} +1 -1
  47. package/dist/cjs/{index-f8f13389.js → index-d4c2e02c.js} +2 -2
  48. package/dist/cjs/{index-d1b59ffa.js → index-ee07ed59.js} +1 -1
  49. package/dist/cjs/index.cjs.js +10 -10
  50. package/dist/cjs/{input-shims-a23bb0f4.js → input-shims-87102b6a.js} +10 -15
  51. package/dist/cjs/{input.utils-3d0166a2.js → input.utils-2a11c1fe.js} +3 -4
  52. package/dist/cjs/ion-action-sheet.cjs.entry.js +8 -8
  53. package/dist/cjs/ion-alert.cjs.entry.js +8 -8
  54. package/dist/cjs/ion-app_8.cjs.entry.js +10 -10
  55. package/dist/cjs/ion-backdrop.cjs.entry.js +0 -12
  56. package/dist/cjs/ion-checkbox.cjs.entry.js +3 -5
  57. package/dist/cjs/ion-datetime-button.cjs.entry.js +1 -1
  58. package/dist/cjs/ion-datetime_3.cjs.entry.js +40 -60
  59. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +3 -11
  60. package/dist/cjs/ion-input.cjs.entry.js +11 -34
  61. package/dist/cjs/ion-item-option_3.cjs.entry.js +1 -1
  62. package/dist/cjs/ion-item_8.cjs.entry.js +4 -17
  63. package/dist/cjs/ion-loading.cjs.entry.js +4 -3
  64. package/dist/cjs/ion-menu_3.cjs.entry.js +7 -7
  65. package/dist/cjs/ion-modal.cjs.entry.js +10 -10
  66. package/dist/cjs/ion-nav_2.cjs.entry.js +2 -2
  67. package/dist/cjs/ion-picker-column-option.cjs.entry.js +104 -0
  68. package/dist/cjs/{ion-picker-column-internal.cjs.entry.js → ion-picker-column.cjs.entry.js} +106 -89
  69. package/dist/cjs/{ion-picker-internal.cjs.entry.js → ion-picker.cjs.entry.js} +26 -19
  70. package/dist/cjs/ion-popover.cjs.entry.js +5 -4
  71. package/dist/cjs/ion-radio_2.cjs.entry.js +4 -9
  72. package/dist/cjs/ion-range.cjs.entry.js +4 -6
  73. package/dist/cjs/ion-refresher_2.cjs.entry.js +7 -7
  74. package/dist/cjs/ion-reorder_2.cjs.entry.js +4 -4
  75. package/dist/cjs/ion-segment_2.cjs.entry.js +1 -1
  76. package/dist/cjs/ion-select_3.cjs.entry.js +36 -51
  77. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +4 -4
  78. package/dist/cjs/ion-textarea.cjs.entry.js +10 -33
  79. package/dist/cjs/ion-toast.cjs.entry.js +93 -434
  80. package/dist/cjs/ion-toggle.cjs.entry.js +7 -9
  81. package/dist/cjs/ionic.cjs.js +1 -1
  82. package/dist/cjs/{ios.transition-6787b799.js → ios.transition-a4ffb5a2.js} +3 -3
  83. package/dist/cjs/{keyboard-af1bb365.js → keyboard-7d621ee9.js} +3 -3
  84. package/dist/cjs/{keyboard-0272231f.js → keyboard-9390928c.js} +1 -1
  85. package/dist/cjs/{keyboard-controller-c05e747a.js → keyboard-controller-2158b478.js} +2 -2
  86. package/dist/cjs/loader.cjs.js +1 -1
  87. package/dist/cjs/{md.transition-e033d20a.js → md.transition-292abe1c.js} +3 -3
  88. package/dist/cjs/{notch-controller-9735e7ac.js → notch-controller-1dce508a.js} +1 -1
  89. package/dist/cjs/{overlays-27a6fb16.js → overlays-e8e05b0e.js} +12 -7
  90. package/dist/cjs/{swipe-back-2a858bbd.js → swipe-back-b8f2330b.js} +2 -2
  91. package/dist/collection/collection-manifest.json +7 -6
  92. package/dist/collection/components/backdrop/backdrop.js +0 -12
  93. package/dist/collection/components/checkbox/checkbox.ios.css +6 -0
  94. package/dist/collection/components/checkbox/checkbox.js +1 -4
  95. package/dist/collection/components/checkbox/checkbox.md.css +6 -0
  96. package/dist/collection/components/checkbox/test/checkbox.spec.js +0 -14
  97. package/dist/collection/components/content/content.css +0 -4
  98. package/dist/collection/components/datetime/datetime.ios.css +85 -38
  99. package/dist/collection/components/datetime/datetime.js +24 -36
  100. package/dist/collection/components/datetime/datetime.md.css +90 -38
  101. package/dist/collection/components/datetime/test/a11y/datetime.e2e.js +1 -1
  102. package/dist/collection/components/datetime/test/a11y/datetime.spec.js +6 -9
  103. package/dist/collection/components/datetime/test/basic/datetime.e2e.js +10 -0
  104. package/dist/collection/components/datetime/test/datetime.e2e.js +2 -2
  105. package/dist/collection/components/datetime/test/disabled/datetime.spec.js +4 -4
  106. package/dist/collection/components/datetime/test/locale/datetime.e2e.js +2 -2
  107. package/dist/collection/components/datetime/test/minmax/datetime.e2e.js +6 -6
  108. package/dist/collection/components/datetime/test/month-year-picker/datetime.e2e.js +1 -1
  109. package/dist/collection/components/datetime/test/prefer-wheel/datetime.e2e.js +43 -41
  110. package/dist/collection/components/datetime/test/presentation/datetime.e2e.js +1 -1
  111. package/dist/collection/components/datetime/test/readonly/datetime.e2e.js +4 -4
  112. package/dist/collection/components/datetime/test/values/datetime.e2e.js +15 -12
  113. package/dist/collection/components/datetime/utils/data.js +1 -1
  114. package/dist/collection/components/infinite-scroll/infinite-scroll.js +3 -11
  115. package/dist/collection/components/input/input.ios.css +3 -10
  116. package/dist/collection/components/input/input.js +6 -31
  117. package/dist/collection/components/input/input.md.css +12 -13
  118. package/dist/collection/components/item/item.ios.css +3 -41
  119. package/dist/collection/components/item/item.md.css +3 -41
  120. package/dist/collection/components/item/test/basic/item.e2e.js +1 -1
  121. package/dist/collection/components/item/test/disabled/item.e2e.js +1 -0
  122. package/dist/collection/components/item/test/text/item.e2e.js +14 -0
  123. package/dist/collection/components/label/label.ios.css +3 -14
  124. package/dist/collection/components/label/label.md.css +3 -14
  125. package/dist/collection/components/modal/gestures/swipe-to-close.js +1 -2
  126. package/dist/collection/components/note/test/a11y/note.e2e.js +0 -43
  127. package/dist/collection/components/picker/picker.ios.css +113 -211
  128. package/dist/collection/components/picker/picker.js +468 -743
  129. package/dist/collection/components/picker/picker.md.css +109 -198
  130. package/dist/collection/components/{picker-internal/test/a11y/picker-internal.e2e.js → picker/test/a11y/picker.e2e.js} +2 -2
  131. package/dist/collection/components/picker/test/basic/picker.e2e.js +99 -13
  132. package/dist/collection/components/picker/test/custom/picker.e2e.js +85 -0
  133. package/dist/collection/components/{picker-internal/test/keyboard-entry/picker-internal.e2e.js → picker/test/keyboard-entry/picker.e2e.js} +63 -32
  134. package/dist/collection/components/{picker-column-internal/picker-column-internal.md.css → picker-column/picker-column.css} +96 -83
  135. package/dist/collection/components/picker-column/picker-column.js +497 -335
  136. package/dist/collection/components/{picker-column-internal/test/basic/picker-column-internal.e2e.js → picker-column/test/basic/picker-column.e2e.js} +8 -8
  137. package/dist/collection/components/picker-column/test/disabled/picker-column.e2e.js +91 -0
  138. package/dist/collection/components/picker-column/test/slots/picker-column.e2e.js +39 -0
  139. package/dist/collection/components/picker-column-option/picker-column-option.ios.css +87 -0
  140. package/dist/collection/components/picker-column-option/picker-column-option.js +173 -0
  141. package/dist/collection/components/{picker-column-internal/picker-column-internal.ios.css → picker-column-option/picker-column-option.md.css} +6 -53
  142. package/dist/collection/components/picker-column-option/test/a11y/picker-column-option.e2e.js +18 -0
  143. package/dist/collection/components/picker-column-option/test/basic/picker-column-option.e2e.js +37 -0
  144. package/dist/collection/components/picker-column-option/test/picker-column-option.spec.js +29 -0
  145. package/dist/collection/components/{picker-internal/picker-internal.md.css → picker-legacy/picker.ios.css} +207 -98
  146. package/dist/collection/components/picker-legacy/picker.js +817 -0
  147. package/dist/collection/components/{picker-internal/picker-internal.ios.css → picker-legacy/picker.md.css} +192 -100
  148. package/dist/collection/components/picker-legacy/test/basic/picker.e2e.js +25 -0
  149. package/dist/collection/components/{picker → picker-legacy}/test/is-open/picker.e2e.js +4 -4
  150. package/dist/collection/components/{picker → picker-legacy}/test/picker-id.spec.js +5 -5
  151. package/dist/collection/components/{picker → picker-legacy}/test/trigger/picker.e2e.js +1 -1
  152. package/dist/collection/components/picker-legacy-column/picker-column.js +419 -0
  153. package/dist/collection/components/{picker-column → picker-legacy-column}/test/picker-column-aria.spec.js +3 -3
  154. package/dist/collection/components/{picker-column → picker-legacy-column}/test/picker-column-dynamic.spec.js +2 -2
  155. package/dist/collection/components/{picker-column → picker-legacy-column}/test/picker-column.spec.js +2 -2
  156. package/dist/collection/components/{picker-column → picker-legacy-column}/test/standalone/picker-column.e2e.js +3 -3
  157. package/dist/collection/components/radio/radio.ios.css +6 -0
  158. package/dist/collection/components/radio/radio.js +3 -7
  159. package/dist/collection/components/radio/radio.md.css +6 -0
  160. package/dist/collection/components/radio/test/radio.spec.js +0 -14
  161. package/dist/collection/components/radio-group/radio-group.js +0 -24
  162. package/dist/collection/components/range/range.ios.css +6 -0
  163. package/dist/collection/components/range/range.js +1 -4
  164. package/dist/collection/components/range/range.md.css +6 -0
  165. package/dist/collection/components/range/test/range.spec.js +0 -16
  166. package/dist/collection/components/select/select.ios.css +7 -60
  167. package/dist/collection/components/select/select.js +28 -45
  168. package/dist/collection/components/select/select.md.css +19 -63
  169. package/dist/collection/components/select/test/item/select.e2e.js +0 -15
  170. package/dist/collection/components/select/test/label/select.e2e.js +1 -1
  171. package/dist/collection/components/select/test/legacy/wrapping/select.e2e.js +1 -1
  172. package/dist/collection/components/skeleton-text/skeleton-text.js +0 -39
  173. package/dist/collection/components/textarea/textarea.ios.css +5 -37
  174. package/dist/collection/components/textarea/textarea.js +5 -30
  175. package/dist/collection/components/textarea/textarea.md.css +14 -47
  176. package/dist/collection/components/toast/animations/ios.enter.js +1 -2
  177. package/dist/collection/components/toast/animations/md.enter.js +3 -4
  178. package/dist/collection/components/toast/animations/utils.js +14 -20
  179. package/dist/collection/components/toast/test/toast.spec.js +0 -80
  180. package/dist/collection/components/toast/toast.ios.css +10 -10
  181. package/dist/collection/components/toast/toast.js +1 -104
  182. package/dist/collection/components/toast/toast.md.css +0 -10
  183. package/dist/collection/components/toggle/test/toggle.spec.js +0 -12
  184. package/dist/collection/components/toggle/toggle.ios.css +6 -0
  185. package/dist/collection/components/toggle/toggle.js +1 -4
  186. package/dist/collection/components/toggle/toggle.md.css +6 -0
  187. package/dist/collection/utils/animation/animation.js +11 -12
  188. package/dist/collection/utils/animation/test/animation.spec.js +0 -16
  189. package/dist/collection/utils/browser/index.js +22 -0
  190. package/dist/collection/utils/forms/index.js +0 -1
  191. package/dist/collection/utils/gesture/gesture-controller.js +1 -1
  192. package/dist/collection/utils/input-shims/input-shims.js +6 -12
  193. package/dist/collection/utils/menu-controller/index.js +12 -10
  194. package/dist/collection/utils/overlays.js +11 -5
  195. package/dist/collection/utils/slot-mutation-controller.js +2 -3
  196. package/dist/collection/utils/test/overlays/overlays-scroll-blocking.spec.js +65 -0
  197. package/dist/docs.json +573 -272
  198. package/dist/esm/{animation-dde8cc0d.js → animation-fb0e0f6f.js} +12 -13
  199. package/dist/esm/{button-active-c6ee4f50.js → button-active-ed9d848c.js} +2 -2
  200. package/dist/esm/{capacitor-59395cbd.js → capacitor-b0e5fe83.js} +1 -1
  201. package/dist/esm/{data-f5c75b4e.js → data-4b9508c9.js} +1 -1
  202. package/dist/esm/{gesture-controller-1bf57181.js → gesture-controller-314a54f6.js} +1 -1
  203. package/dist/esm/{haptic-554688a5.js → haptic-152c4172.js} +1 -1
  204. package/dist/esm/{index-2cf77112.js → index-39782642.js} +2 -2
  205. package/dist/esm/index-7a14ecec.js +29 -0
  206. package/dist/esm/{index-0c12c22b.js → index-80492ed3.js} +13 -11
  207. package/dist/esm/{index-82eeb47f.js → index-ba9976bb.js} +1 -1
  208. package/dist/esm/{index-1932b201.js → index-d8817fb0.js} +2 -2
  209. package/dist/esm/index.js +10 -10
  210. package/dist/esm/{input-shims-6539ce13.js → input-shims-0a2e541d.js} +9 -14
  211. package/dist/esm/{input.utils-a5a2d164.js → input.utils-2846d430.js} +3 -4
  212. package/dist/esm/ion-action-sheet.entry.js +8 -8
  213. package/dist/esm/ion-alert.entry.js +8 -8
  214. package/dist/esm/ion-app_8.entry.js +10 -10
  215. package/dist/esm/ion-backdrop.entry.js +0 -12
  216. package/dist/esm/ion-checkbox.entry.js +3 -5
  217. package/dist/esm/ion-datetime-button.entry.js +1 -1
  218. package/dist/esm/ion-datetime_3.entry.js +39 -59
  219. package/dist/esm/ion-infinite-scroll_2.entry.js +3 -11
  220. package/dist/esm/ion-input.entry.js +11 -34
  221. package/dist/esm/ion-item-option_3.entry.js +1 -1
  222. package/dist/esm/ion-item_8.entry.js +4 -17
  223. package/dist/esm/ion-loading.entry.js +4 -3
  224. package/dist/esm/ion-menu_3.entry.js +7 -7
  225. package/dist/esm/ion-modal.entry.js +10 -10
  226. package/dist/esm/ion-nav_2.entry.js +2 -2
  227. package/dist/esm/ion-picker-column-option.entry.js +100 -0
  228. package/dist/esm/{ion-picker-column-internal.entry.js → ion-picker-column.entry.js} +106 -89
  229. package/dist/esm/{ion-picker-internal.entry.js → ion-picker.entry.js} +26 -19
  230. package/dist/esm/ion-popover.entry.js +5 -4
  231. package/dist/esm/ion-radio_2.entry.js +4 -9
  232. package/dist/esm/ion-range.entry.js +4 -6
  233. package/dist/esm/ion-refresher_2.entry.js +7 -7
  234. package/dist/esm/ion-reorder_2.entry.js +4 -4
  235. package/dist/esm/ion-segment_2.entry.js +1 -1
  236. package/dist/esm/ion-select_3.entry.js +32 -47
  237. package/dist/esm/ion-tab-bar_2.entry.js +4 -4
  238. package/dist/esm/ion-textarea.entry.js +10 -33
  239. package/dist/esm/ion-toast.entry.js +76 -417
  240. package/dist/esm/ion-toggle.entry.js +7 -9
  241. package/dist/esm/ionic.js +1 -1
  242. package/dist/esm/{ios.transition-802a84a6.js → ios.transition-fd16bec1.js} +3 -3
  243. package/dist/esm/{keyboard-52278bd7.js → keyboard-c402e885.js} +3 -3
  244. package/dist/esm/{keyboard-controller-ec5c2bfa.js → keyboard-controller-5d90929a.js} +2 -2
  245. package/dist/esm/{keyboard-73175e24.js → keyboard-dbb05fb9.js} +1 -1
  246. package/dist/esm/loader.js +1 -1
  247. package/dist/esm/{md.transition-43c2874d.js → md.transition-94ac93e1.js} +3 -3
  248. package/dist/esm/{notch-controller-fea7f9c5.js → notch-controller-d09b6aca.js} +1 -1
  249. package/dist/esm/{overlays-32ef481d.js → overlays-fbc5cab5.js} +13 -7
  250. package/dist/esm/{swipe-back-a6f386fc.js → swipe-back-a8ca7f93.js} +2 -2
  251. package/dist/esm-es5/{animation-dde8cc0d.js → animation-fb0e0f6f.js} +1 -1
  252. package/dist/esm-es5/{button-active-c6ee4f50.js → button-active-ed9d848c.js} +1 -1
  253. package/dist/esm-es5/{capacitor-59395cbd.js → capacitor-b0e5fe83.js} +1 -1
  254. package/dist/esm-es5/{gesture-controller-1bf57181.js → gesture-controller-314a54f6.js} +1 -1
  255. package/dist/esm-es5/{haptic-554688a5.js → haptic-152c4172.js} +1 -1
  256. package/dist/esm-es5/{index-2cf77112.js → index-39782642.js} +1 -1
  257. package/dist/esm-es5/index-80492ed3.js +4 -0
  258. package/dist/esm-es5/{index-82eeb47f.js → index-ba9976bb.js} +1 -1
  259. package/dist/esm-es5/{index-1932b201.js → index-d8817fb0.js} +1 -1
  260. package/dist/esm-es5/index.js +1 -1
  261. package/dist/esm-es5/input-shims-0a2e541d.js +4 -0
  262. package/dist/esm-es5/input.utils-2846d430.js +4 -0
  263. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  264. package/dist/esm-es5/ion-alert.entry.js +1 -1
  265. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  266. package/dist/esm-es5/ion-backdrop.entry.js +1 -1
  267. package/dist/esm-es5/ion-checkbox.entry.js +1 -1
  268. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  269. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  270. package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
  271. package/dist/esm-es5/ion-input.entry.js +1 -1
  272. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  273. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  274. package/dist/esm-es5/ion-loading.entry.js +1 -1
  275. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  276. package/dist/esm-es5/ion-modal.entry.js +1 -1
  277. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  278. package/dist/esm-es5/ion-picker-column-option.entry.js +4 -0
  279. package/dist/esm-es5/ion-picker-column.entry.js +4 -0
  280. package/dist/esm-es5/ion-picker.entry.js +4 -0
  281. package/dist/esm-es5/ion-popover.entry.js +1 -1
  282. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  283. package/dist/esm-es5/ion-range.entry.js +1 -1
  284. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  285. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  286. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  287. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  288. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  289. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  290. package/dist/esm-es5/ion-toast.entry.js +1 -1
  291. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  292. package/dist/esm-es5/ionic.js +1 -1
  293. package/dist/esm-es5/{ios.transition-802a84a6.js → ios.transition-fd16bec1.js} +1 -1
  294. package/dist/esm-es5/{keyboard-52278bd7.js → keyboard-c402e885.js} +1 -1
  295. package/dist/esm-es5/{keyboard-controller-ec5c2bfa.js → keyboard-controller-5d90929a.js} +1 -1
  296. package/dist/esm-es5/{keyboard-73175e24.js → keyboard-dbb05fb9.js} +1 -1
  297. package/dist/esm-es5/loader.js +1 -1
  298. package/dist/esm-es5/md.transition-94ac93e1.js +4 -0
  299. package/dist/esm-es5/{notch-controller-fea7f9c5.js → notch-controller-d09b6aca.js} +1 -1
  300. package/dist/esm-es5/overlays-fbc5cab5.js +4 -0
  301. package/dist/esm-es5/swipe-back-a8ca7f93.js +4 -0
  302. package/dist/html.html-data.json +153 -15
  303. package/dist/ionic/index.esm.js +1 -1
  304. package/dist/ionic/ionic.esm.js +1 -1
  305. package/dist/ionic/{p-8985cdb6.system.js → p-0e4f2e17.system.js} +1 -1
  306. package/dist/ionic/{p-33a37fad.system.js → p-1d624e03.system.js} +1 -1
  307. package/dist/ionic/{p-3dd98a73.entry.js → p-1fc72959.entry.js} +1 -1
  308. package/dist/ionic/{p-c7c8429a.system.js → p-20d469d0.system.js} +1 -1
  309. package/dist/ionic/{p-251666e2.entry.js → p-21c3515a.entry.js} +1 -1
  310. package/dist/ionic/p-22e5af95.entry.js +4 -0
  311. package/dist/ionic/p-232d1f22.entry.js +4 -0
  312. package/dist/ionic/p-23672c82.system.entry.js +4 -0
  313. package/dist/ionic/p-26798a7b.system.entry.js +4 -0
  314. package/dist/ionic/p-27bcbbc7.system.entry.js +4 -0
  315. package/dist/ionic/p-2ab4e925.system.entry.js +4 -0
  316. package/dist/ionic/p-2d5aeccc.js +4 -0
  317. package/dist/ionic/p-2d600c25.system.js +4 -0
  318. package/dist/ionic/{p-31fcb233.system.js → p-30029cc2.system.js} +1 -1
  319. package/dist/ionic/{p-cabad15b.system.js → p-304383f9.system.js} +1 -1
  320. package/dist/ionic/p-308e1341.js +4 -0
  321. package/dist/ionic/{p-cdbeaadc.js → p-31158892.js} +1 -1
  322. package/dist/ionic/p-32303650.system.entry.js +4 -0
  323. package/dist/ionic/{p-0bd51c34.system.js → p-32e19bee.system.js} +1 -1
  324. package/dist/ionic/p-34c39c48.entry.js +4 -0
  325. package/dist/ionic/p-36d194c5.entry.js +4 -0
  326. package/dist/ionic/p-3ba01a9c.system.entry.js +4 -0
  327. package/dist/ionic/p-3c58a71b.js +4 -0
  328. package/dist/ionic/{p-31b2326e.system.js → p-3e1e14d9.system.js} +1 -1
  329. package/dist/ionic/{p-78aadecb.entry.js → p-3f6270b3.entry.js} +1 -1
  330. package/dist/ionic/p-3fd26bd6.system.entry.js +4 -0
  331. package/dist/ionic/p-3fe96156.system.js +4 -0
  332. package/dist/ionic/p-42ba3902.entry.js +4 -0
  333. package/dist/ionic/{p-6de472cb.js → p-4890093d.js} +1 -1
  334. package/dist/ionic/{p-88fde0e0.entry.js → p-4911a5d6.entry.js} +1 -1
  335. package/dist/ionic/p-4a081ea9.entry.js +4 -0
  336. package/dist/ionic/p-4a31c99f.entry.js +4 -0
  337. package/dist/ionic/p-4a36430f.system.entry.js +4 -0
  338. package/dist/ionic/{p-27281edd.js → p-4e8e09e1.js} +1 -1
  339. package/dist/ionic/p-51abefb7.system.js +4 -0
  340. package/dist/ionic/{p-4f3ae45a.entry.js → p-535d2a67.entry.js} +1 -1
  341. package/dist/ionic/{p-e24ce1e5.system.js → p-54dfc9b5.system.js} +1 -1
  342. package/dist/ionic/p-563c41f0.system.entry.js +4 -0
  343. package/dist/ionic/{p-5e745192.system.js → p-57477107.system.js} +1 -1
  344. package/dist/ionic/p-5a1aac13.system.entry.js +4 -0
  345. package/dist/ionic/p-5a68960f.entry.js +4 -0
  346. package/dist/ionic/{p-4d67d27a.entry.js → p-5d42b6b4.entry.js} +1 -1
  347. package/dist/ionic/{p-42f189f4.js → p-643a8fae.js} +1 -1
  348. package/dist/ionic/{p-a9978d08.entry.js → p-6b7c55cd.entry.js} +1 -1
  349. package/dist/ionic/p-6c37f051.js +4 -0
  350. package/dist/ionic/{p-a1987850.entry.js → p-6d72fb44.entry.js} +1 -1
  351. package/dist/ionic/{p-e6d68e02.system.entry.js → p-6fd64e7c.system.entry.js} +1 -1
  352. package/dist/ionic/p-73190c5f.entry.js +4 -0
  353. package/dist/ionic/p-73aa7604.entry.js +4 -0
  354. package/dist/ionic/{p-3a75d7fd.js → p-75445583.js} +1 -1
  355. package/dist/ionic/{p-f70970cf.js → p-76d3765d.js} +1 -1
  356. package/dist/ionic/{p-a0bb7b92.system.entry.js → p-77965464.system.entry.js} +1 -1
  357. package/dist/ionic/p-7b725280.entry.js +4 -0
  358. package/dist/ionic/p-8017aad2.system.entry.js +4 -0
  359. package/dist/ionic/p-83af3685.system.js +4 -0
  360. package/dist/ionic/p-846ee227.entry.js +4 -0
  361. package/dist/ionic/p-856c430d.js +4 -0
  362. package/dist/ionic/p-8a1ad27c.system.entry.js +4 -0
  363. package/dist/ionic/p-8ab2d8be.entry.js +4 -0
  364. package/dist/ionic/p-8c97cdc0.entry.js +4 -0
  365. package/dist/ionic/{p-f5d2dc9b.js → p-8ededb41.js} +1 -1
  366. package/dist/ionic/p-8fa6583d.system.js +4 -0
  367. package/dist/ionic/p-93000a81.system.entry.js +4 -0
  368. package/dist/ionic/{p-1cca10d6.system.js → p-95c26010.system.js} +1 -1
  369. package/dist/ionic/{p-8acae6b0.system.entry.js → p-96dbbac1.system.entry.js} +1 -1
  370. package/dist/ionic/{p-ddbb2d5b.system.js → p-98d82c73.system.js} +1 -1
  371. package/dist/ionic/p-990ffd0e.js +4 -0
  372. package/dist/ionic/{p-bb3615f7.js → p-9b97df10.js} +1 -1
  373. package/dist/ionic/{p-3137c025.system.entry.js → p-9c229210.system.entry.js} +2 -2
  374. package/dist/ionic/p-a225bf0f.system.entry.js +4 -0
  375. package/dist/ionic/p-a60a1ce5.js +4 -0
  376. package/dist/ionic/p-a8baa23e.entry.js +4 -0
  377. package/dist/ionic/p-a98dc0c1.entry.js +4 -0
  378. package/dist/ionic/{p-5eda1d7d.entry.js → p-a9a80f5b.entry.js} +1 -1
  379. package/dist/ionic/p-a9e3b5be.system.entry.js +4 -0
  380. package/dist/ionic/p-ab9456e9.system.entry.js +4 -0
  381. package/dist/ionic/p-afcf4620.entry.js +4 -0
  382. package/dist/ionic/{p-ddb30596.entry.js → p-b133e9b4.entry.js} +1 -1
  383. package/dist/ionic/{p-6de62649.system.entry.js → p-b4d31b30.system.entry.js} +1 -1
  384. package/dist/ionic/{p-46d400b4.system.entry.js → p-b752714f.system.entry.js} +1 -1
  385. package/dist/ionic/{p-fba0a6e7.system.entry.js → p-c18de88a.system.entry.js} +1 -1
  386. package/dist/ionic/p-c8f0a036.entry.js +4 -0
  387. package/dist/ionic/p-ca8938f4.js +4 -0
  388. package/dist/ionic/p-cde52378.system.entry.js +4 -0
  389. package/dist/ionic/p-d43f1f3d.system.js +4 -0
  390. package/dist/ionic/p-d662d908.js +4 -0
  391. package/dist/ionic/p-d9695ad9.system.js +4 -0
  392. package/dist/ionic/p-da15f571.system.entry.js +4 -0
  393. package/dist/ionic/p-e3584231.system.js +1 -1
  394. package/dist/ionic/p-e4d90573.js +4 -0
  395. package/dist/ionic/{p-6577aea9.system.entry.js → p-e8e86f69.system.entry.js} +1 -1
  396. package/dist/ionic/p-f54c72b0.system.js +4 -0
  397. package/dist/ionic/p-f7a36cd0.system.js +4 -0
  398. package/dist/ionic/{p-9eec42cc.system.entry.js → p-f910cc73.system.entry.js} +1 -1
  399. package/dist/ionic/p-f967631d.js +4 -0
  400. package/dist/ionic/{p-ada96dd0.system.entry.js → p-fbf3a689.system.entry.js} +1 -1
  401. package/dist/ionic/p-fe4dde76.entry.js +4 -0
  402. package/dist/ionic/p-ffd5dba4.system.entry.js +4 -0
  403. package/dist/types/components/backdrop/backdrop.d.ts +0 -3
  404. package/dist/types/components/checkbox/checkbox.d.ts +0 -1
  405. package/dist/types/components/datetime/datetime.d.ts +0 -1
  406. package/dist/types/components/datetime/utils/data.d.ts +11 -7
  407. package/dist/types/components/infinite-scroll/infinite-scroll.d.ts +0 -7
  408. package/dist/types/components/input/input.d.ts +0 -2
  409. package/dist/types/components/menu/menu.d.ts +1 -1
  410. package/dist/types/components/picker/picker-interfaces.d.ts +8 -0
  411. package/dist/types/components/picker/picker.d.ts +74 -131
  412. package/dist/types/components/picker-column/picker-column-interfaces.d.ts +4 -0
  413. package/dist/types/components/picker-column/picker-column.d.ts +99 -39
  414. package/dist/types/components/picker-column-option/picker-column-option.d.ts +66 -0
  415. package/dist/types/components/picker-legacy/picker.d.ts +158 -0
  416. package/dist/types/components/picker-legacy-column/picker-column.d.ts +46 -0
  417. package/dist/types/components/radio/radio.d.ts +0 -1
  418. package/dist/types/components/radio-group/radio-group-interface.d.ts +0 -1
  419. package/dist/types/components/radio-group/radio-group.d.ts +1 -8
  420. package/dist/types/components/range/range.d.ts +0 -1
  421. package/dist/types/components/router/router.d.ts +1 -2
  422. package/dist/types/components/select/select.d.ts +1 -6
  423. package/dist/types/components/skeleton-text/skeleton-text.d.ts +1 -9
  424. package/dist/types/components/textarea/textarea.d.ts +0 -2
  425. package/dist/types/components/toast/animations/utils.d.ts +4 -15
  426. package/dist/types/components/toast/toast-interface.d.ts +0 -2
  427. package/dist/types/components/toast/toast.d.ts +1 -28
  428. package/dist/types/components/toggle/toggle.d.ts +0 -1
  429. package/dist/types/components.d.ts +161 -159
  430. package/dist/types/interface.d.ts +6 -2
  431. package/dist/types/utils/animation/animation-interface.d.ts +4 -4
  432. package/dist/types/utils/browser/index.d.ts +2 -11
  433. package/dist/types/utils/config.d.ts +2 -2
  434. package/dist/types/utils/forms/index.d.ts +0 -1
  435. package/dist/types/utils/gesture/gesture-controller.d.ts +1 -0
  436. package/dist/types/utils/hardware-back-button.d.ts +0 -4
  437. package/dist/types/utils/overlays.d.ts +5 -3
  438. package/dist/types/utils/slot-mutation-controller.d.ts +2 -2
  439. package/hydrate/index.js +1528 -1886
  440. package/package.json +1 -1
  441. package/components/ion-picker-column-internal.d.ts +0 -11
  442. package/components/ion-picker-column-internal.js +0 -9
  443. package/components/ion-picker-internal.js +0 -9
  444. package/components/picker-column-internal.js +0 -390
  445. package/dist/cjs/compare-with-utils-df1001d7.js +0 -44
  446. package/dist/cjs/index-c8d52405.js +0 -10
  447. package/dist/collection/components/infinite-scroll/test/small-dom-update/infinite-scroll.e2e.js +0 -31
  448. package/dist/collection/components/input/test/slot/input.e2e.js +0 -51
  449. package/dist/collection/components/picker-column-internal/picker-column-internal.js +0 -565
  450. package/dist/collection/components/picker-column-internal/test/disabled/picker-column-internal.e2e.js +0 -162
  451. package/dist/collection/components/picker-internal/picker-internal.js +0 -544
  452. package/dist/collection/components/picker-internal/test/basic/picker-internal.e2e.js +0 -118
  453. package/dist/collection/components/radio-group/test/radio-group.spec.js +0 -69
  454. package/dist/collection/components/select/test/slot/select.e2e.js +0 -67
  455. package/dist/collection/components/textarea/test/slot/textarea.e2e.js +0 -51
  456. package/dist/collection/components/toast/gestures/swipe-to-dismiss.js +0 -267
  457. package/dist/collection/components/toast/test/swipe-gesture/toast.e2e.js +0 -84
  458. package/dist/collection/components/toast/test/toast-config.spec.js +0 -25
  459. package/dist/collection/utils/forms/compare-with-utils.js +0 -39
  460. package/dist/esm/compare-with-utils-a96ff2ea.js +0 -41
  461. package/dist/esm/index-a5d50daf.js +0 -7
  462. package/dist/esm-es5/compare-with-utils-a96ff2ea.js +0 -4
  463. package/dist/esm-es5/index-0c12c22b.js +0 -4
  464. package/dist/esm-es5/input-shims-6539ce13.js +0 -4
  465. package/dist/esm-es5/input.utils-a5a2d164.js +0 -4
  466. package/dist/esm-es5/ion-picker-column-internal.entry.js +0 -4
  467. package/dist/esm-es5/ion-picker-internal.entry.js +0 -4
  468. package/dist/esm-es5/md.transition-43c2874d.js +0 -4
  469. package/dist/esm-es5/overlays-32ef481d.js +0 -4
  470. package/dist/esm-es5/swipe-back-a6f386fc.js +0 -4
  471. package/dist/ionic/p-01d14eba.system.entry.js +0 -4
  472. package/dist/ionic/p-042e6f4b.entry.js +0 -4
  473. package/dist/ionic/p-05d83227.system.entry.js +0 -4
  474. package/dist/ionic/p-16756e94.system.entry.js +0 -4
  475. package/dist/ionic/p-1b19c04b.entry.js +0 -4
  476. package/dist/ionic/p-1e4371bd.js +0 -4
  477. package/dist/ionic/p-28249b10.system.entry.js +0 -4
  478. package/dist/ionic/p-28a2c2a2.entry.js +0 -4
  479. package/dist/ionic/p-29d03b3a.js +0 -4
  480. package/dist/ionic/p-2b7827c7.js +0 -4
  481. package/dist/ionic/p-2d3b9fa3.system.entry.js +0 -4
  482. package/dist/ionic/p-2d539df1.entry.js +0 -4
  483. package/dist/ionic/p-35ce400e.system.js +0 -4
  484. package/dist/ionic/p-36d187af.js +0 -4
  485. package/dist/ionic/p-376a6063.js +0 -4
  486. package/dist/ionic/p-38f2c6bb.system.js +0 -4
  487. package/dist/ionic/p-39c31982.system.entry.js +0 -4
  488. package/dist/ionic/p-3e6b47e8.system.entry.js +0 -4
  489. package/dist/ionic/p-3f5179b5.entry.js +0 -4
  490. package/dist/ionic/p-40f68333.system.js +0 -4
  491. package/dist/ionic/p-438e1b8a.entry.js +0 -4
  492. package/dist/ionic/p-47b6ba5b.js +0 -4
  493. package/dist/ionic/p-517a9885.system.entry.js +0 -4
  494. package/dist/ionic/p-53ec4f1c.system.js +0 -4
  495. package/dist/ionic/p-5e4eec2e.entry.js +0 -4
  496. package/dist/ionic/p-6a6477b2.js +0 -4
  497. package/dist/ionic/p-72f6ff89.js +0 -4
  498. package/dist/ionic/p-765f4dde.entry.js +0 -4
  499. package/dist/ionic/p-7d92bf15.system.entry.js +0 -4
  500. package/dist/ionic/p-7ee0f3f2.entry.js +0 -4
  501. package/dist/ionic/p-80fa068e.entry.js +0 -4
  502. package/dist/ionic/p-8314281e.system.js +0 -4
  503. package/dist/ionic/p-88d5fbd3.js +0 -4
  504. package/dist/ionic/p-8d69a624.entry.js +0 -4
  505. package/dist/ionic/p-8de17614.system.entry.js +0 -4
  506. package/dist/ionic/p-908475e7.system.entry.js +0 -4
  507. package/dist/ionic/p-91d33c4a.js +0 -4
  508. package/dist/ionic/p-979d4f5c.system.js +0 -4
  509. package/dist/ionic/p-9b7f0b0f.entry.js +0 -4
  510. package/dist/ionic/p-9e447eb1.system.js +0 -4
  511. package/dist/ionic/p-9f6ee2c0.system.entry.js +0 -4
  512. package/dist/ionic/p-a0d7bb5e.system.js +0 -4
  513. package/dist/ionic/p-a3277a67.entry.js +0 -4
  514. package/dist/ionic/p-afd6ca9d.entry.js +0 -4
  515. package/dist/ionic/p-b56d0866.system.entry.js +0 -4
  516. package/dist/ionic/p-b6f9d32a.entry.js +0 -4
  517. package/dist/ionic/p-c61cc894.js +0 -4
  518. package/dist/ionic/p-cce9f61a.system.entry.js +0 -4
  519. package/dist/ionic/p-d032f825.system.entry.js +0 -4
  520. package/dist/ionic/p-d51674c5.system.js +0 -4
  521. package/dist/ionic/p-de6f8b28.system.js +0 -4
  522. package/dist/ionic/p-de756e5c.js +0 -4
  523. package/dist/ionic/p-dee7c1d0.system.entry.js +0 -4
  524. package/dist/ionic/p-dfd9432a.entry.js +0 -4
  525. package/dist/ionic/p-e94c392d.entry.js +0 -4
  526. package/dist/ionic/p-f0445d82.system.entry.js +0 -4
  527. package/dist/ionic/p-f656e032.system.entry.js +0 -4
  528. package/dist/ionic/p-feae5133.entry.js +0 -4
  529. package/dist/types/components/picker-column-internal/picker-column-internal-interfaces.d.ts +0 -5
  530. package/dist/types/components/picker-column-internal/picker-column-internal.d.ts +0 -102
  531. package/dist/types/components/picker-internal/picker-internal-interfaces.d.ts +0 -8
  532. package/dist/types/components/picker-internal/picker-internal.d.ts +0 -102
  533. package/dist/types/components/toast/gestures/swipe-to-dismiss.d.ts +0 -9
  534. package/dist/types/jest.d.ts +0 -5
  535. package/dist/types/utils/forms/compare-with-utils.d.ts +0 -18
  536. /package/dist/collection/components/{picker-internal/picker-internal-interfaces.js → picker/picker-interfaces.js} +0 -0
  537. /package/dist/collection/components/{picker-column-internal/picker-column-internal-interfaces.js → picker-column/picker-column-interfaces.js} +0 -0
  538. /package/dist/collection/components/{picker → picker-legacy}/animations/ios.enter.js +0 -0
  539. /package/dist/collection/components/{picker → picker-legacy}/animations/ios.leave.js +0 -0
  540. /package/dist/collection/components/{picker → picker-legacy}/picker-interface.js +0 -0
  541. /package/dist/collection/components/{picker-column → picker-legacy-column}/picker-column.ios.css +0 -0
  542. /package/dist/collection/components/{picker-column → picker-legacy-column}/picker-column.md.css +0 -0
  543. /package/dist/collection/components/{picker-column → picker-legacy-column}/test/test.utils.js +0 -0
  544. /package/dist/esm-es5/{data-f5c75b4e.js → data-4b9508c9.js} +0 -0
  545. /package/dist/esm-es5/{index-a5d50daf.js → index-7a14ecec.js} +0 -0
  546. /package/dist/ionic/{p-792919fd.system.js → p-0e94957a.system.js} +0 -0
  547. /package/dist/ionic/{p-2aea8b1e.js → p-368f5215.js} +0 -0
  548. /package/dist/ionic/{p-7b30edcc.js → p-b347cfd1.js} +0 -0
  549. /package/dist/ionic/{p-82e3d633.system.js → p-f58981c2.system.js} +0 -0
  550. /package/dist/types/components/{picker → picker-legacy}/animations/ios.enter.d.ts +0 -0
  551. /package/dist/types/components/{picker → picker-legacy}/animations/ios.leave.d.ts +0 -0
  552. /package/dist/types/components/{picker → picker-legacy}/picker-interface.d.ts +0 -0
  553. /package/dist/types/components/{picker-column → picker-legacy-column}/test/test.utils.d.ts +0 -0
@@ -202,20 +202,4 @@ describe('range: item adjustments', () => {
202
202
  expect(range.classList.contains('range-item-start-adjustment')).toBe(false);
203
203
  expect(range.classList.contains('range-item-end-adjustment')).toBe(false);
204
204
  });
205
- describe('shadow parts', () => {
206
- it('should have shadow parts', async () => {
207
- const page = await newSpecPage({
208
- components: [Range],
209
- html: `<ion-range pin="true" snaps="true" value="50" label="Label"></ion-range>`,
210
- });
211
- const range = page.body.querySelector('ion-range');
212
- expect(range).toHaveShadowPart('label');
213
- expect(range).toHaveShadowPart('pin');
214
- expect(range).toHaveShadowPart('knob');
215
- expect(range).toHaveShadowPart('bar');
216
- expect(range).toHaveShadowPart('bar-active');
217
- expect(range).toHaveShadowPart('tick');
218
- expect(range).toHaveShadowPart('tick-active');
219
- });
220
- });
221
205
  });
@@ -132,10 +132,6 @@
132
132
  overflow: hidden;
133
133
  }
134
134
 
135
- :host(.in-item:not(.legacy-select)) {
136
- flex: 1 1 0;
137
- }
138
-
139
135
  :host(.in-item.legacy-select) {
140
136
  position: static;
141
137
  max-width: 45%;
@@ -236,12 +232,6 @@ button {
236
232
  margin-top: 0;
237
233
  margin-bottom: 0;
238
234
  position: relative;
239
- /**
240
- * Prevent the icon from shrinking when the label and/or
241
- * selected item text is long enough to fill the rest of
242
- * the container.
243
- */
244
- flex-shrink: 0;
245
235
  }
246
236
 
247
237
  /**
@@ -325,23 +315,6 @@ button {
325
315
  transition: opacity 150ms cubic-bezier(0.4, 0, 0.2, 1);
326
316
  }
327
317
 
328
- .select-wrapper-inner {
329
- display: flex;
330
- align-items: center;
331
- overflow: hidden;
332
- }
333
-
334
- :host(.select-label-placement-stacked) .select-wrapper-inner,
335
- :host(.select-label-placement-floating) .select-wrapper-inner {
336
- /**
337
- * When using a stacked/floating label, the inner wrapper is
338
- * stacked vertically under the label container. This line
339
- * ensures that the inner wrapper fills all the remaining height
340
- * of the component.
341
- */
342
- flex-grow: 1;
343
- }
344
-
345
318
  :host(.ion-touched.ion-invalid) {
346
319
  --highlight-color: var(--highlight-color-invalid);
347
320
  }
@@ -582,23 +555,11 @@ button {
582
555
  * The placeholder should be hidden when the label
583
556
  * is on top of the select. This prevents the label
584
557
  * from overlapping any placeholder value.
585
- *
586
- * TODO(FW-5592): Remove :not(.label-floating) piece
587
558
  */
588
- :host(.select-label-placement-floating:not(.label-floating)) .native-wrapper .select-placeholder {
559
+ :host(.select-label-placement-floating) .native-wrapper .select-placeholder {
589
560
  opacity: 0;
590
561
  }
591
562
 
592
- /**
593
- * We don't use .label-floating here because that would
594
- * also include the case where the label is floating due
595
- * to content in the start/end slot. We want the opacity
596
- * to remain at the default in this case, since the select
597
- * isn't being actively interacted with.
598
- *
599
- * TODO(FW-5592): Change entire selector to:
600
- * :host(.label-floating.select-label-placement-floating) .native-wrapper .select-placeholder
601
- */
602
563
  :host(.select-expanded.select-label-placement-floating) .native-wrapper .select-placeholder,
603
564
  :host(.ion-focused.select-label-placement-floating) .native-wrapper .select-placeholder,
604
565
  :host(.has-value.select-label-placement-floating) .native-wrapper .select-placeholder {
@@ -608,7 +569,10 @@ button {
608
569
  /**
609
570
  * This makes the label sit above the input.
610
571
  */
611
- :host(.label-floating) .label-text-wrapper {
572
+ :host(.select-label-placement-stacked) .label-text-wrapper,
573
+ :host(.select-expanded.select-label-placement-floating) .label-text-wrapper,
574
+ :host(.ion-focused.select-label-placement-floating) .label-text-wrapper,
575
+ :host(.has-value.select-label-placement-floating) .label-text-wrapper {
612
576
  transform: translateY(50%) scale(0.75);
613
577
  /**
614
578
  * Label text should not extend
@@ -617,23 +581,6 @@ button {
617
581
  max-width: calc(100% / 0.75);
618
582
  }
619
583
 
620
- ::slotted([slot=start]), ::slotted([slot=end]) {
621
- /**
622
- * Prevent the slots from shrinking when the label and/or
623
- * selected item text is long enough to fill the rest of
624
- * the container.
625
- */
626
- flex-shrink: 0;
627
- }
628
-
629
- ::slotted([slot=start]) {
630
- margin-inline-end: 16px;
631
- }
632
-
633
- ::slotted([slot=end]) {
634
- margin-inline-start: 16px;
635
- }
636
-
637
584
  /**
638
585
  * Convert a font size to a dynamic font size.
639
586
  * Fonts that participate in Dynamic Type should use
@@ -757,8 +704,8 @@ button {
757
704
  color: var(--ion-color-step-650, #595959);
758
705
  }
759
706
 
760
- :host(.select-label-placement-stacked) .select-wrapper-inner,
761
- :host(.select-label-placement-floating) .select-wrapper-inner {
707
+ :host(.select-label-placement-stacked) .native-wrapper,
708
+ :host(.select-label-placement-floating) .native-wrapper {
762
709
  width: calc(100% - 1.125rem - 4px);
763
710
  }
764
711
 
@@ -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 { compareOptions, createLegacyFormController, createNotchController, isOptionSelected } from "../../utils/forms/index";
5
+ import { createLegacyFormController, createNotchController } 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";
@@ -16,8 +16,6 @@ import { getIonMode } from "../../global/ionic-global";
16
16
  * @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
17
17
  *
18
18
  * @slot label - The label text to associate with the select. Use the `labelPlacement` property to control where the label is placed relative to the select. Use this if you need to render a label with custom HTML.
19
- * @slot start - Content to display at the leading edge of the select.
20
- * @slot end - Content to display at the trailing edge of the select.
21
19
  *
22
20
  * @part placeholder - The text displayed in the select when there is no value.
23
21
  * @part text - The displayed value of the select.
@@ -32,22 +30,8 @@ export class Select {
32
30
  // This flag ensures we log the deprecation warning at most once.
33
31
  this.hasLoggedDeprecationWarning = false;
34
32
  this.onClick = (ev) => {
35
- const target = ev.target;
36
- const closestSlot = target.closest('[slot="start"], [slot="end"]');
37
- if (target === this.el || closestSlot === null) {
38
- this.setFocus();
39
- this.open(ev);
40
- }
41
- else {
42
- /**
43
- * Prevent clicks to the start/end slots from opening the select.
44
- * We ensure the target isn't this element in case the select is slotted
45
- * in, for example, an item. This would prevent the select from ever
46
- * being opened since the element itself has slot="start"/"end".
47
- */
48
- ev.stopPropagation();
49
- ev.preventDefault();
50
- }
33
+ this.setFocus();
34
+ this.open(ev);
51
35
  };
52
36
  this.onFocus = () => {
53
37
  this.ionFocus.emit();
@@ -481,8 +465,6 @@ export class Select {
481
465
  style['has-placeholder'] = this.placeholder !== undefined;
482
466
  style['has-value'] = this.hasValue();
483
467
  style['has-focus'] = this.isExpanded;
484
- // TODO(FW-3194): remove this
485
- style['legacy'] = !!this.legacy;
486
468
  }
487
469
  this.ionStyle.emit(style);
488
470
  }
@@ -550,27 +532,7 @@ export class Select {
550
532
  const rtl = isRTL(el) ? 'rtl' : 'ltr';
551
533
  const inItem = hostContext('ion-item', this.el);
552
534
  const shouldRenderHighlight = mode === 'md' && fill !== 'outline' && !inItem;
553
- const hasValue = this.hasValue();
554
- const hasStartEndSlots = el.querySelector('[slot="start"], [slot="end"]') !== null;
555
535
  renderHiddenInput(true, el, name, parseValue(value), disabled);
556
- /**
557
- * If the label is stacked, it should always sit above the select.
558
- * For floating labels, the label should move above the select if
559
- * the select has a value, is open, or has anything in either
560
- * the start or end slot.
561
- *
562
- * If there is content in the start slot, the label would overlap
563
- * it if not forced to float. This is also applied to the end slot
564
- * because with the default or solid fills, the select is not
565
- * vertically centered in the container, but the label is. This
566
- * causes the slots and label to appear vertically offset from each
567
- * other when the label isn't floating above the input. This doesn't
568
- * apply to the outline fill, but this was not accounted for to keep
569
- * things consistent.
570
- *
571
- * TODO(FW-5592): Remove hasStartEndSlots condition
572
- */
573
- const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || isExpanded || hasStartEndSlots));
574
536
  return (h(Host, { onClick: this.onClick, class: createColorClasses(this.color, {
575
537
  [mode]: true,
576
538
  'in-item': inItem,
@@ -578,8 +540,7 @@ export class Select {
578
540
  'select-disabled': disabled,
579
541
  'select-expanded': isExpanded,
580
542
  'has-expanded-icon': expandedIcon !== undefined,
581
- 'has-value': hasValue,
582
- 'label-floating': labelShouldFloat,
543
+ 'has-value': this.hasValue(),
583
544
  'has-placeholder': placeholder !== undefined,
584
545
  'ion-focusable': true,
585
546
  [`select-${rtl}`]: true,
@@ -587,7 +548,7 @@ export class Select {
587
548
  [`select-justify-${justify}`]: justifyEnabled,
588
549
  [`select-shape-${shape}`]: shape !== undefined,
589
550
  [`select-label-placement-${labelPlacement}`]: true,
590
- }) }, h("label", { class: "select-wrapper", id: "select-label" }, this.renderLabelContainer(), h("div", { class: "select-wrapper-inner" }, h("slot", { name: "start" }), h("div", { class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), h("slot", { name: "end" }), !hasFloatingOrStackedLabel && this.renderSelectIcon()), hasFloatingOrStackedLabel && this.renderSelectIcon(), shouldRenderHighlight && h("div", { class: "select-highlight" }))));
551
+ }) }, h("label", { class: "select-wrapper", id: "select-label" }, this.renderLabelContainer(), h("div", { class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), !hasFloatingOrStackedLabel && this.renderSelectIcon(), this.renderListbox()), hasFloatingOrStackedLabel && this.renderSelectIcon(), shouldRenderHighlight && h("div", { class: "select-highlight" }))));
591
552
  }
592
553
  // TODO FW-3194 - Remove this
593
554
  renderLegacySelect() {
@@ -776,7 +737,7 @@ Developers can use the "legacy" property to continue using the legacy form marku
776
737
  "optional": true,
777
738
  "docs": {
778
739
  "tags": [],
779
- "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 strict\nequality (===) for comparison."
740
+ "text": "A property name or function used to compare object values"
780
741
  },
781
742
  "attribute": "compare-with",
782
743
  "reflect": false
@@ -1254,6 +1215,17 @@ Developers can use the "legacy" property to continue using the legacy form marku
1254
1215
  }];
1255
1216
  }
1256
1217
  }
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
+ };
1257
1229
  const getOptionValue = (el) => {
1258
1230
  const value = el.value;
1259
1231
  return value === undefined ? el.textContent || '' : value;
@@ -1267,6 +1239,17 @@ const parseValue = (value) => {
1267
1239
  }
1268
1240
  return value.toString();
1269
1241
  };
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
+ };
1270
1253
  const generateText = (opts, value, compareWith) => {
1271
1254
  if (value === undefined) {
1272
1255
  return '';
@@ -132,10 +132,6 @@
132
132
  overflow: hidden;
133
133
  }
134
134
 
135
- :host(.in-item:not(.legacy-select)) {
136
- flex: 1 1 0;
137
- }
138
-
139
135
  :host(.in-item.legacy-select) {
140
136
  position: static;
141
137
  max-width: 45%;
@@ -236,12 +232,6 @@ button {
236
232
  margin-top: 0;
237
233
  margin-bottom: 0;
238
234
  position: relative;
239
- /**
240
- * Prevent the icon from shrinking when the label and/or
241
- * selected item text is long enough to fill the rest of
242
- * the container.
243
- */
244
- flex-shrink: 0;
245
235
  }
246
236
 
247
237
  /**
@@ -325,23 +315,6 @@ button {
325
315
  transition: opacity 150ms cubic-bezier(0.4, 0, 0.2, 1);
326
316
  }
327
317
 
328
- .select-wrapper-inner {
329
- display: flex;
330
- align-items: center;
331
- overflow: hidden;
332
- }
333
-
334
- :host(.select-label-placement-stacked) .select-wrapper-inner,
335
- :host(.select-label-placement-floating) .select-wrapper-inner {
336
- /**
337
- * When using a stacked/floating label, the inner wrapper is
338
- * stacked vertically under the label container. This line
339
- * ensures that the inner wrapper fills all the remaining height
340
- * of the component.
341
- */
342
- flex-grow: 1;
343
- }
344
-
345
318
  :host(.ion-touched.ion-invalid) {
346
319
  --highlight-color: var(--highlight-color-invalid);
347
320
  }
@@ -582,23 +555,11 @@ button {
582
555
  * The placeholder should be hidden when the label
583
556
  * is on top of the select. This prevents the label
584
557
  * from overlapping any placeholder value.
585
- *
586
- * TODO(FW-5592): Remove :not(.label-floating) piece
587
558
  */
588
- :host(.select-label-placement-floating:not(.label-floating)) .native-wrapper .select-placeholder {
559
+ :host(.select-label-placement-floating) .native-wrapper .select-placeholder {
589
560
  opacity: 0;
590
561
  }
591
562
 
592
- /**
593
- * We don't use .label-floating here because that would
594
- * also include the case where the label is floating due
595
- * to content in the start/end slot. We want the opacity
596
- * to remain at the default in this case, since the select
597
- * isn't being actively interacted with.
598
- *
599
- * TODO(FW-5592): Change entire selector to:
600
- * :host(.label-floating.select-label-placement-floating) .native-wrapper .select-placeholder
601
- */
602
563
  :host(.select-expanded.select-label-placement-floating) .native-wrapper .select-placeholder,
603
564
  :host(.ion-focused.select-label-placement-floating) .native-wrapper .select-placeholder,
604
565
  :host(.has-value.select-label-placement-floating) .native-wrapper .select-placeholder {
@@ -608,7 +569,10 @@ button {
608
569
  /**
609
570
  * This makes the label sit above the input.
610
571
  */
611
- :host(.label-floating) .label-text-wrapper {
572
+ :host(.select-label-placement-stacked) .label-text-wrapper,
573
+ :host(.select-expanded.select-label-placement-floating) .label-text-wrapper,
574
+ :host(.ion-focused.select-label-placement-floating) .label-text-wrapper,
575
+ :host(.has-value.select-label-placement-floating) .label-text-wrapper {
612
576
  transform: translateY(50%) scale(0.75);
613
577
  /**
614
578
  * Label text should not extend
@@ -617,23 +581,6 @@ button {
617
581
  max-width: calc(100% / 0.75);
618
582
  }
619
583
 
620
- ::slotted([slot=start]), ::slotted([slot=end]) {
621
- /**
622
- * Prevent the slots from shrinking when the label and/or
623
- * selected item text is long enough to fill the rest of
624
- * the container.
625
- */
626
- flex-shrink: 0;
627
- }
628
-
629
- ::slotted([slot=start]) {
630
- margin-inline-end: 16px;
631
- }
632
-
633
- ::slotted([slot=end]) {
634
- margin-inline-start: 16px;
635
- }
636
-
637
584
  /**
638
585
  * Convert a font size to a dynamic font size.
639
586
  * Fonts that participate in Dynamic Type should use
@@ -877,7 +824,10 @@ button {
877
824
  }
878
825
  }
879
826
 
880
- :host(.label-floating.select-fill-solid) .label-text-wrapper {
827
+ :host(.select-fill-solid.select-label-placement-stacked) .label-text-wrapper,
828
+ :host(.select-expanded.select-fill-solid.select-label-placement-floating) .label-text-wrapper,
829
+ :host(.ion-focused.select-fill-solid.select-label-placement-floating) .label-text-wrapper,
830
+ :host(.has-value.select-fill-solid.select-label-placement-floating) .label-text-wrapper {
881
831
  /**
882
832
  * Label text should not extend
883
833
  * beyond the bounds of the select.
@@ -1033,7 +983,10 @@ button {
1033
983
  /**
1034
984
  * This makes the label sit above the select.
1035
985
  */
1036
- :host(.label-floating.select-fill-outline) .label-text-wrapper {
986
+ :host(.select-expanded.select-fill-outline.select-label-placement-floating) .label-text-wrapper,
987
+ :host(.ion-focused.select-fill-outline.select-label-placement-floating) .label-text-wrapper,
988
+ :host(.has-value.select-fill-outline.select-label-placement-floating) .label-text-wrapper,
989
+ :host(.select-fill-outline.select-label-placement-stacked) .label-text-wrapper {
1037
990
  transform: translateY(-32%) scale(0.75);
1038
991
  margin-left: 0;
1039
992
  margin-right: 0;
@@ -1178,7 +1131,10 @@ button {
1178
1131
  * the floating/stacked label. We simulate this "cut out"
1179
1132
  * by removing the top border from the notch fragment.
1180
1133
  */
1181
- :host(.label-floating.select-fill-outline) .select-outline-notch {
1134
+ :host(.select-expanded.select-fill-outline.select-label-placement-floating) .select-outline-notch,
1135
+ :host(.ion-focused.select-fill-outline.select-label-placement-floating) .select-outline-notch,
1136
+ :host(.has-value.select-fill-outline.select-label-placement-floating) .select-outline-notch,
1137
+ :host(.select-fill-outline.select-label-placement-stacked) .select-outline-notch {
1182
1138
  border-top: none;
1183
1139
  }
1184
1140
 
@@ -1343,8 +1299,8 @@ button {
1343
1299
  --border-radius: 16px;
1344
1300
  }
1345
1301
 
1346
- :host(.select-label-placement-stacked) .select-wrapper-inner,
1347
- :host(.select-label-placement-floating) .select-wrapper-inner {
1302
+ :host(.select-label-placement-stacked) .native-wrapper,
1303
+ :host(.select-label-placement-floating) .native-wrapper {
1348
1304
  width: calc(100% - 0.8125rem - 4px);
1349
1305
  }
1350
1306
 
@@ -37,20 +37,5 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
37
37
  const list = page.locator('ion-list');
38
38
  await expect(list).toHaveScreenshot(screenshot(`select-inset-list-no-fill`));
39
39
  });
40
- test('should render correctly in an item inside of a flex container', async ({ page }) => {
41
- await page.setContent(`
42
- <div id="container" style="display: flex">
43
- <ion-list>
44
- <ion-item>
45
- <ion-select label="Fruit" value="apple">
46
- <ion-select-option value="apple">Apple</ion-select-option>
47
- </ion-select>
48
- </ion-item>
49
- <ion-list>
50
- </div>
51
- `, config);
52
- const container = page.locator('#container');
53
- await expect(container).toHaveScreenshot(screenshot(`select-item-flex-container`));
54
- });
55
40
  });
56
41
  });
@@ -121,7 +121,7 @@ configs().forEach(({ title, screenshot, config }) => {
121
121
  });
122
122
  test('label should appear on top of the select when the select is expanded', async ({ page }) => {
123
123
  await page.setContent(`
124
- <ion-select class="select-expanded label-floating" label="Label" label-placement="floating" placeholder="Select a Fruit">
124
+ <ion-select class="select-expanded" label="Label" label-placement="floating" placeholder="Select a Fruit">
125
125
  <ion-select-option value="apples">Apples</ion-select-option>
126
126
  </ion-select>
127
127
  `, config);
@@ -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
  }
@@ -356,7 +356,9 @@
356
356
  }
357
357
 
358
358
  .native-wrapper {
359
+ display: flex;
359
360
  position: relative;
361
+ flex-grow: 1;
360
362
  width: 100%;
361
363
  height: 100%;
362
364
  }
@@ -427,12 +429,6 @@
427
429
  word-break: break-word;
428
430
  }
429
431
 
430
- .textarea-wrapper-inner {
431
- display: flex;
432
- width: 100%;
433
- min-height: inherit;
434
- }
435
-
436
432
  :host(.ion-touched.ion-invalid) {
437
433
  --highlight-color: var(--highlight-color-invalid);
438
434
  }
@@ -708,13 +704,6 @@
708
704
  margin-bottom: 0px;
709
705
  }
710
706
 
711
- :host(.textarea-label-placement-stacked) ::slotted([slot=start]),
712
- :host(.textarea-label-placement-stacked) ::slotted([slot=end]),
713
- :host(.textarea-label-placement-floating) ::slotted([slot=start]),
714
- :host(.textarea-label-placement-floating) ::slotted([slot=end]) {
715
- margin-top: 8px;
716
- }
717
-
718
707
  /**
719
708
  * This makes the label sit over the textarea
720
709
  * when the textarea is blurred and has no value.
@@ -740,7 +729,9 @@
740
729
  /**
741
730
  * This makes the label sit above the textarea.
742
731
  */
743
- :host(.label-floating) .label-text-wrapper {
732
+ :host(.textarea-label-placement-stacked) .label-text-wrapper,
733
+ :host(.has-focus.textarea-label-placement-floating) .label-text-wrapper,
734
+ :host(.has-value.textarea-label-placement-floating) .label-text-wrapper {
744
735
  transform: translateY(50%) scale(0.75);
745
736
  /**
746
737
  * Label text should not extend
@@ -749,29 +740,6 @@
749
740
  max-width: calc(100% / 0.75);
750
741
  }
751
742
 
752
- .start-slot-wrapper, .end-slot-wrapper {
753
- padding-left: 0;
754
- padding-right: 0;
755
- padding-top: var(--padding-top);
756
- padding-bottom: var(--padding-bottom);
757
- display: flex;
758
- flex-shrink: 0;
759
- align-self: start;
760
- }
761
-
762
- ::slotted([slot=start]),
763
- ::slotted([slot=end]) {
764
- margin-top: 0;
765
- }
766
-
767
- ::slotted([slot=start]) {
768
- margin-inline-end: 16px;
769
- }
770
-
771
- ::slotted([slot=end]) {
772
- margin-inline-start: 16px;
773
- }
774
-
775
743
  /**
776
744
  * Convert a font size to a dynamic font size.
777
745
  * Fonts that participate in Dynamic Type should use