@ionic/core 7.3.4-dev.11694608913.1bc64f72 → 7.3.4-dev.11694700050.1d868b6b

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 (411) hide show
  1. package/components/button-active.js +1 -1
  2. package/components/checkbox.js +3 -6
  3. package/components/data.js +7 -31
  4. package/components/index.js +2 -2
  5. package/components/index2.js +429 -203
  6. package/components/index3.js +203 -429
  7. package/components/input-shims.js +114 -7
  8. package/components/ion-datetime-button.js +0 -3
  9. package/components/ion-datetime.js +92 -132
  10. package/components/ion-item-sliding.js +1 -1
  11. package/components/ion-menu.js +1 -1
  12. package/components/ion-modal.js +2 -2
  13. package/components/ion-nav.js +1 -1
  14. package/components/ion-range.js +3 -3
  15. package/components/ion-refresher.js +3 -3
  16. package/components/ion-reorder-group.js +1 -1
  17. package/components/ion-router-outlet.js +1 -1
  18. package/components/ion-segment.js +1 -1
  19. package/components/ion-toggle.js +4 -7
  20. package/components/ios.transition.js +1 -1
  21. package/components/md.transition.js +1 -1
  22. package/components/picker-column.js +1 -1
  23. package/components/popover.js +1 -1
  24. package/components/radio.js +3 -6
  25. package/components/swipe-back.js +1 -1
  26. package/dist/cjs/{app-globals-a579aafd.js → app-globals-a63c2a19.js} +1 -1
  27. package/dist/cjs/{button-active-dfd2756e.js → button-active-0ff8e82c.js} +1 -1
  28. package/dist/cjs/{data-db832785.js → data-967b9c15.js} +7 -31
  29. package/dist/cjs/{index-484b1104.js → index-184fdd62.js} +6 -6
  30. package/dist/cjs/{index-8568bedb.js → index-be8a2ab9.js} +3 -3
  31. package/dist/cjs/{index-653be4df.js → index-e6416850.js} +1 -1
  32. package/dist/cjs/index.cjs.js +14 -15
  33. package/dist/cjs/{input-shims-f8569707.js → input-shims-8d1ba420.js} +118 -12
  34. package/dist/cjs/ion-accordion_2.cjs.entry.js +2 -2
  35. package/dist/cjs/ion-action-sheet.cjs.entry.js +4 -4
  36. package/dist/cjs/ion-alert.cjs.entry.js +4 -4
  37. package/dist/cjs/ion-app_8.cjs.entry.js +5 -5
  38. package/dist/cjs/ion-avatar_3.cjs.entry.js +2 -2
  39. package/dist/cjs/ion-back-button.cjs.entry.js +2 -2
  40. package/dist/cjs/ion-backdrop.cjs.entry.js +2 -2
  41. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +2 -2
  42. package/dist/cjs/ion-button_2.cjs.entry.js +2 -2
  43. package/dist/cjs/ion-card_5.cjs.entry.js +2 -2
  44. package/dist/cjs/ion-checkbox.cjs.entry.js +5 -7
  45. package/dist/cjs/ion-chip.cjs.entry.js +2 -2
  46. package/dist/cjs/ion-col_3.cjs.entry.js +2 -2
  47. package/dist/cjs/ion-datetime-button.cjs.entry.js +3 -6
  48. package/dist/cjs/ion-datetime_3.cjs.entry.js +96 -135
  49. package/dist/cjs/ion-fab_3.cjs.entry.js +2 -2
  50. package/dist/cjs/ion-img.cjs.entry.js +2 -2
  51. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +2 -2
  52. package/dist/cjs/ion-input.cjs.entry.js +2 -2
  53. package/dist/cjs/ion-item-option_3.cjs.entry.js +2 -2
  54. package/dist/cjs/ion-item_8.cjs.entry.js +2 -2
  55. package/dist/cjs/ion-loading.cjs.entry.js +3 -3
  56. package/dist/cjs/ion-menu_3.cjs.entry.js +4 -4
  57. package/dist/cjs/ion-modal.cjs.entry.js +4 -4
  58. package/dist/cjs/ion-nav_2.cjs.entry.js +3 -3
  59. package/dist/cjs/ion-picker-column-internal.cjs.entry.js +2 -2
  60. package/dist/cjs/ion-picker-internal.cjs.entry.js +1 -1
  61. package/dist/cjs/ion-popover.cjs.entry.js +4 -4
  62. package/dist/cjs/ion-progress-bar.cjs.entry.js +2 -2
  63. package/dist/cjs/ion-radio_2.cjs.entry.js +5 -7
  64. package/dist/cjs/ion-range.cjs.entry.js +4 -4
  65. package/dist/cjs/ion-refresher_2.cjs.entry.js +2 -2
  66. package/dist/cjs/ion-reorder_2.cjs.entry.js +2 -2
  67. package/dist/cjs/ion-ripple-effect.cjs.entry.js +2 -2
  68. package/dist/cjs/ion-route_4.cjs.entry.js +2 -2
  69. package/dist/cjs/ion-searchbar.cjs.entry.js +2 -2
  70. package/dist/cjs/ion-segment_2.cjs.entry.js +2 -2
  71. package/dist/cjs/ion-select_3.cjs.entry.js +3 -3
  72. package/dist/cjs/ion-spinner.cjs.entry.js +2 -2
  73. package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
  74. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +2 -2
  75. package/dist/cjs/ion-tab_2.cjs.entry.js +1 -1
  76. package/dist/cjs/ion-text.cjs.entry.js +2 -2
  77. package/dist/cjs/ion-textarea.cjs.entry.js +2 -2
  78. package/dist/cjs/ion-toast.cjs.entry.js +3 -3
  79. package/dist/cjs/ion-toggle.cjs.entry.js +5 -7
  80. package/dist/cjs/{ionic-global-f81d8b73.js → ionic-global-6d5d27b5.js} +1 -1
  81. package/dist/cjs/ionic.cjs.js +5 -5
  82. package/dist/cjs/{ios.transition-f7c78d7c.js → ios.transition-80582b44.js} +2 -2
  83. package/dist/cjs/loader.cjs.js +4 -4
  84. package/dist/cjs/{md.transition-65dc7dce.js → md.transition-eeca9fb5.js} +2 -2
  85. package/dist/cjs/{overlays-5c1706ed.js → overlays-c78a0148.js} +1 -1
  86. package/dist/cjs/{status-tap-4564b66c.js → status-tap-cc4c6539.js} +1 -1
  87. package/dist/collection/collection-manifest.json +1 -1
  88. package/dist/collection/components/checkbox/checkbox.ios.css +0 -35
  89. package/dist/collection/components/checkbox/checkbox.js +4 -24
  90. package/dist/collection/components/checkbox/checkbox.md.css +0 -35
  91. package/dist/collection/components/checkbox/test/item/checkbox.e2e.js +0 -13
  92. package/dist/collection/components/checkbox/test/label/checkbox.e2e.js +0 -16
  93. package/dist/collection/components/datetime/datetime.ios.css +29 -32
  94. package/dist/collection/components/datetime/datetime.js +93 -137
  95. package/dist/collection/components/datetime/datetime.md.css +28 -20
  96. package/dist/collection/components/datetime/test/basic/datetime.e2e.js +0 -25
  97. package/dist/collection/components/datetime/test/color/datetime.e2e.js +1 -1
  98. package/dist/collection/components/datetime/test/custom/datetime.e2e.js +1 -27
  99. package/dist/collection/components/datetime/test/prefer-wheel/datetime.e2e.js +0 -15
  100. package/dist/collection/components/datetime/test/set-value/datetime.e2e.js +12 -9
  101. package/dist/collection/components/datetime/utils/data.js +6 -14
  102. package/dist/collection/components/datetime/utils/parse.js +1 -18
  103. package/dist/collection/components/datetime-button/datetime-button.js +0 -3
  104. package/dist/collection/components/radio/radio.ios.css +0 -35
  105. package/dist/collection/components/radio/radio.js +4 -24
  106. package/dist/collection/components/radio/radio.md.css +0 -35
  107. package/dist/collection/components/radio/test/item/radio.e2e.js +0 -15
  108. package/dist/collection/components/radio/test/label-placement/radio.e2e.js +0 -20
  109. package/dist/collection/components/range/range.ios.css +1 -41
  110. package/dist/collection/components/range/range.js +3 -3
  111. package/dist/collection/components/range/range.md.css +1 -41
  112. package/dist/collection/components/range/test/label/range.e2e.js +0 -48
  113. package/dist/collection/components/toggle/test/item/toggle.e2e.js +0 -15
  114. package/dist/collection/components/toggle/test/label/toggle.e2e.js +0 -16
  115. package/dist/collection/components/toggle/toggle.ios.css +1 -35
  116. package/dist/collection/components/toggle/toggle.js +4 -24
  117. package/dist/collection/components/toggle/toggle.md.css +1 -35
  118. package/dist/collection/index.js +0 -1
  119. package/dist/collection/utils/input-shims/hacks/scroll-assist.js +112 -4
  120. package/dist/collection/utils/input-shims/hacks/scroll-data.js +2 -3
  121. package/dist/docs.json +19 -148
  122. package/dist/esm/{app-globals-e8ddf830.js → app-globals-c7886b40.js} +1 -1
  123. package/dist/esm/{button-active-2da0f611.js → button-active-b76ae4ec.js} +1 -1
  124. package/dist/esm/{data-009dbf15.js → data-4b448e3a.js} +7 -31
  125. package/dist/esm/{index-6391de89.js → index-01839411.js} +3 -3
  126. package/dist/esm/{index-b3e05099.js → index-48f5e259.js} +1 -1
  127. package/dist/esm/{index-847f2fde.js → index-adfb2000.js} +6 -6
  128. package/dist/esm/index.js +7 -7
  129. package/dist/esm/{input-shims-af993f05.js → input-shims-62af6bcc.js} +114 -8
  130. package/dist/esm/ion-accordion_2.entry.js +2 -2
  131. package/dist/esm/ion-action-sheet.entry.js +4 -4
  132. package/dist/esm/ion-alert.entry.js +4 -4
  133. package/dist/esm/ion-app_8.entry.js +5 -5
  134. package/dist/esm/ion-avatar_3.entry.js +2 -2
  135. package/dist/esm/ion-back-button.entry.js +2 -2
  136. package/dist/esm/ion-backdrop.entry.js +2 -2
  137. package/dist/esm/ion-breadcrumb_2.entry.js +2 -2
  138. package/dist/esm/ion-button_2.entry.js +2 -2
  139. package/dist/esm/ion-card_5.entry.js +2 -2
  140. package/dist/esm/ion-checkbox.entry.js +5 -7
  141. package/dist/esm/ion-chip.entry.js +2 -2
  142. package/dist/esm/ion-col_3.entry.js +2 -2
  143. package/dist/esm/ion-datetime-button.entry.js +3 -6
  144. package/dist/esm/ion-datetime_3.entry.js +96 -135
  145. package/dist/esm/ion-fab_3.entry.js +2 -2
  146. package/dist/esm/ion-img.entry.js +2 -2
  147. package/dist/esm/ion-infinite-scroll_2.entry.js +2 -2
  148. package/dist/esm/ion-input.entry.js +2 -2
  149. package/dist/esm/ion-item-option_3.entry.js +2 -2
  150. package/dist/esm/ion-item_8.entry.js +2 -2
  151. package/dist/esm/ion-loading.entry.js +3 -3
  152. package/dist/esm/ion-menu_3.entry.js +4 -4
  153. package/dist/esm/ion-modal.entry.js +4 -4
  154. package/dist/esm/ion-nav_2.entry.js +3 -3
  155. package/dist/esm/ion-picker-column-internal.entry.js +2 -2
  156. package/dist/esm/ion-picker-internal.entry.js +1 -1
  157. package/dist/esm/ion-popover.entry.js +4 -4
  158. package/dist/esm/ion-progress-bar.entry.js +2 -2
  159. package/dist/esm/ion-radio_2.entry.js +5 -7
  160. package/dist/esm/ion-range.entry.js +4 -4
  161. package/dist/esm/ion-refresher_2.entry.js +2 -2
  162. package/dist/esm/ion-reorder_2.entry.js +2 -2
  163. package/dist/esm/ion-ripple-effect.entry.js +2 -2
  164. package/dist/esm/ion-route_4.entry.js +2 -2
  165. package/dist/esm/ion-searchbar.entry.js +2 -2
  166. package/dist/esm/ion-segment_2.entry.js +2 -2
  167. package/dist/esm/ion-select_3.entry.js +3 -3
  168. package/dist/esm/ion-spinner.entry.js +2 -2
  169. package/dist/esm/ion-split-pane.entry.js +2 -2
  170. package/dist/esm/ion-tab-bar_2.entry.js +2 -2
  171. package/dist/esm/ion-tab_2.entry.js +1 -1
  172. package/dist/esm/ion-text.entry.js +2 -2
  173. package/dist/esm/ion-textarea.entry.js +2 -2
  174. package/dist/esm/ion-toast.entry.js +3 -3
  175. package/dist/esm/ion-toggle.entry.js +5 -7
  176. package/dist/esm/{ionic-global-1ef19007.js → ionic-global-9080266a.js} +1 -1
  177. package/dist/esm/ionic.js +6 -6
  178. package/dist/esm/{ios.transition-3137d23e.js → ios.transition-f43871cd.js} +2 -2
  179. package/dist/esm/loader.js +5 -5
  180. package/dist/esm/{md.transition-48b3b77c.js → md.transition-12d21ad0.js} +2 -2
  181. package/dist/esm/{overlays-e1dadfe6.js → overlays-4565894b.js} +1 -1
  182. package/dist/esm/{status-tap-823a0df3.js → status-tap-121c711d.js} +1 -1
  183. package/dist/esm-es5/app-globals-c7886b40.js +4 -0
  184. package/dist/esm-es5/{button-active-2da0f611.js → button-active-b76ae4ec.js} +1 -1
  185. package/dist/esm-es5/data-4b448e3a.js +4 -0
  186. package/dist/esm-es5/{index-6391de89.js → index-01839411.js} +1 -1
  187. package/dist/esm-es5/{index-b3e05099.js → index-48f5e259.js} +1 -1
  188. package/dist/esm-es5/index.js +1 -1
  189. package/dist/esm-es5/input-shims-62af6bcc.js +4 -0
  190. package/dist/esm-es5/ion-accordion_2.entry.js +1 -1
  191. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  192. package/dist/esm-es5/ion-alert.entry.js +1 -1
  193. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  194. package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
  195. package/dist/esm-es5/ion-back-button.entry.js +1 -1
  196. package/dist/esm-es5/ion-backdrop.entry.js +1 -1
  197. package/dist/esm-es5/ion-breadcrumb_2.entry.js +1 -1
  198. package/dist/esm-es5/ion-button_2.entry.js +1 -1
  199. package/dist/esm-es5/ion-card_5.entry.js +1 -1
  200. package/dist/esm-es5/ion-checkbox.entry.js +1 -1
  201. package/dist/esm-es5/ion-chip.entry.js +1 -1
  202. package/dist/esm-es5/ion-col_3.entry.js +1 -1
  203. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  204. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  205. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  206. package/dist/esm-es5/ion-img.entry.js +1 -1
  207. package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
  208. package/dist/esm-es5/ion-input.entry.js +1 -1
  209. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  210. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  211. package/dist/esm-es5/ion-loading.entry.js +1 -1
  212. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  213. package/dist/esm-es5/ion-modal.entry.js +1 -1
  214. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  215. package/dist/esm-es5/ion-picker-column-internal.entry.js +1 -1
  216. package/dist/esm-es5/ion-picker-internal.entry.js +1 -1
  217. package/dist/esm-es5/ion-popover.entry.js +1 -1
  218. package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
  219. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  220. package/dist/esm-es5/ion-range.entry.js +1 -1
  221. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  222. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  223. package/dist/esm-es5/ion-ripple-effect.entry.js +1 -1
  224. package/dist/esm-es5/ion-route_4.entry.js +1 -1
  225. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  226. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  227. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  228. package/dist/esm-es5/ion-spinner.entry.js +1 -1
  229. package/dist/esm-es5/ion-split-pane.entry.js +1 -1
  230. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  231. package/dist/esm-es5/ion-tab_2.entry.js +1 -1
  232. package/dist/esm-es5/ion-text.entry.js +1 -1
  233. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  234. package/dist/esm-es5/ion-toast.entry.js +1 -1
  235. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  236. package/dist/esm-es5/{ionic-global-1ef19007.js → ionic-global-9080266a.js} +1 -1
  237. package/dist/esm-es5/ionic.js +1 -1
  238. package/dist/esm-es5/{ios.transition-3137d23e.js → ios.transition-f43871cd.js} +1 -1
  239. package/dist/esm-es5/loader.js +1 -1
  240. package/dist/esm-es5/md.transition-12d21ad0.js +4 -0
  241. package/dist/esm-es5/{overlays-e1dadfe6.js → overlays-4565894b.js} +1 -1
  242. package/dist/esm-es5/{status-tap-823a0df3.js → status-tap-121c711d.js} +1 -1
  243. package/dist/html.html-data.json +4 -52
  244. package/dist/ionic/index.esm.js +1 -1
  245. package/dist/ionic/ionic.esm.js +1 -1
  246. package/dist/ionic/ionic.js +1 -1
  247. package/dist/ionic/{p-fac1660b.entry.js → p-041ac2c3.entry.js} +1 -1
  248. package/dist/ionic/{p-fabb7294.entry.js → p-072f99fd.entry.js} +1 -1
  249. package/dist/ionic/{p-99028088.entry.js → p-07656a8a.entry.js} +1 -1
  250. package/dist/ionic/{p-e9c112ba.entry.js → p-07f5e286.entry.js} +1 -1
  251. package/dist/ionic/{p-4a153fbc.system.entry.js → p-0ce43a8f.system.entry.js} +1 -1
  252. package/dist/ionic/{p-98ebc376.entry.js → p-0dbfa45f.entry.js} +1 -1
  253. package/dist/ionic/{p-38dd9aec.entry.js → p-11d0977d.entry.js} +1 -1
  254. package/dist/ionic/p-17e961cf.entry.js +4 -0
  255. package/dist/ionic/{p-fe83e3e2.entry.js → p-1916030e.entry.js} +1 -1
  256. package/dist/ionic/p-1b533a76.system.entry.js +4 -0
  257. package/dist/ionic/{p-bbae0ac3.system.entry.js → p-1c236453.system.entry.js} +1 -1
  258. package/dist/ionic/{p-b2514862.system.entry.js → p-204fb8f0.system.entry.js} +1 -1
  259. package/dist/ionic/{p-82f5c07e.system.entry.js → p-23ddd787.system.entry.js} +1 -1
  260. package/dist/ionic/{p-f5b7b710.system.entry.js → p-26276eb7.system.entry.js} +1 -1
  261. package/dist/ionic/{p-208f640c.entry.js → p-28d8b87b.entry.js} +1 -1
  262. package/dist/ionic/{p-e805ff9f.system.entry.js → p-2ac2278e.system.entry.js} +1 -1
  263. package/dist/ionic/p-2b0ecc04.entry.js +4 -0
  264. package/dist/ionic/{p-69303bb5.system.js → p-2e5930dd.system.js} +1 -1
  265. package/dist/ionic/{p-bf4b8d8a.system.entry.js → p-32983529.system.entry.js} +1 -1
  266. package/dist/ionic/{p-b9654781.system.entry.js → p-3bf120f8.system.entry.js} +1 -1
  267. package/dist/ionic/{p-e3cba96d.js → p-3c325277.js} +1 -1
  268. package/dist/ionic/{p-82632e15.system.js → p-3d5a6d14.system.js} +1 -1
  269. package/dist/ionic/{p-77f91ca9.entry.js → p-3f15f60b.entry.js} +1 -1
  270. package/dist/ionic/{p-6b3afb0f.entry.js → p-42e0558f.entry.js} +1 -1
  271. package/dist/ionic/{p-06d6e9c0.system.entry.js → p-4446e19f.system.entry.js} +1 -1
  272. package/dist/ionic/p-44a6f15d.system.entry.js +4 -0
  273. package/dist/ionic/{p-9c32000a.entry.js → p-47a11fc4.entry.js} +1 -1
  274. package/dist/ionic/{p-1ec4dc01.entry.js → p-48d378cf.entry.js} +1 -1
  275. package/dist/ionic/{p-93e47822.entry.js → p-49f2eaa6.entry.js} +1 -1
  276. package/dist/ionic/{p-1fb9aab8.entry.js → p-4d2807fa.entry.js} +1 -1
  277. package/dist/ionic/p-4d4f504b.system.js +4 -0
  278. package/dist/ionic/{p-32d11ce2.system.entry.js → p-4e1a58c6.system.entry.js} +1 -1
  279. package/dist/ionic/p-4f7109fa.entry.js +4 -0
  280. package/dist/ionic/{p-11a42c03.system.entry.js → p-5080e623.system.entry.js} +1 -1
  281. package/dist/ionic/{p-c4afbed8.system.entry.js → p-5163baf4.system.entry.js} +1 -1
  282. package/dist/ionic/{p-0219ac12.system.entry.js → p-516421e2.system.entry.js} +1 -1
  283. package/dist/ionic/{p-d1d3b740.system.entry.js → p-5260588f.system.entry.js} +1 -1
  284. package/dist/ionic/{p-b22ee0dc.js → p-563068af.js} +1 -1
  285. package/dist/ionic/p-56495958.js +4 -0
  286. package/dist/ionic/{p-dc49c681.system.entry.js → p-574411f2.system.entry.js} +1 -1
  287. package/dist/ionic/{p-8a676776.entry.js → p-57847936.entry.js} +1 -1
  288. package/dist/ionic/{p-d3378c35.entry.js → p-59b40b60.entry.js} +1 -1
  289. package/dist/ionic/{p-af0bc751.system.entry.js → p-5a9dc764.system.entry.js} +1 -1
  290. package/dist/ionic/{p-0ff17c93.entry.js → p-5df94bf8.entry.js} +1 -1
  291. package/dist/ionic/{p-81597423.system.js → p-5e549223.system.js} +1 -1
  292. package/dist/ionic/{p-8ba724fa.system.js → p-5fc777e6.system.js} +1 -1
  293. package/dist/ionic/p-601fd53c.js +4 -0
  294. package/dist/ionic/{p-e112994b.system.entry.js → p-6276ba2f.system.entry.js} +1 -1
  295. package/dist/ionic/{p-7c938ad6.js → p-629b0629.js} +1 -1
  296. package/dist/ionic/{p-5c17f888.entry.js → p-68deb933.entry.js} +1 -1
  297. package/dist/ionic/{p-b0e9e0b8.system.entry.js → p-6ccffb74.system.entry.js} +1 -1
  298. package/dist/ionic/{p-98a189f3.entry.js → p-6dff4431.entry.js} +1 -1
  299. package/dist/ionic/{p-fa3327e8.system.entry.js → p-6eb7b33c.system.entry.js} +1 -1
  300. package/dist/ionic/p-7106c152.system.js +4 -0
  301. package/dist/ionic/{p-839bd69f.system.entry.js → p-7474a472.system.entry.js} +1 -1
  302. package/dist/ionic/{p-0b68c41d.system.entry.js → p-74834696.system.entry.js} +1 -1
  303. package/dist/ionic/p-75d4ceab.js +4 -0
  304. package/dist/ionic/{p-430e902d.entry.js → p-765e6339.entry.js} +1 -1
  305. package/dist/ionic/{p-f95f798a.system.entry.js → p-810f1bc9.system.entry.js} +1 -1
  306. package/dist/ionic/{p-57f0efcc.entry.js → p-83459b99.entry.js} +1 -1
  307. package/dist/ionic/{p-99140340.entry.js → p-84084b75.entry.js} +1 -1
  308. package/dist/ionic/{p-68e0ea3c.entry.js → p-8bcd482b.entry.js} +1 -1
  309. package/dist/ionic/{p-48144921.entry.js → p-8db97b90.entry.js} +1 -1
  310. package/dist/ionic/p-8f7edf3e.js +4 -0
  311. package/dist/ionic/{p-87383d00.system.entry.js → p-95188051.system.entry.js} +1 -1
  312. package/dist/ionic/{p-57dc87eb.system.entry.js → p-98bfaff3.system.entry.js} +1 -1
  313. package/dist/ionic/p-99a3df5c.entry.js +4 -0
  314. package/dist/ionic/{p-0142ba6d.entry.js → p-9b53c813.entry.js} +1 -1
  315. package/dist/ionic/{p-83bcaec9.system.entry.js → p-9be96bf3.system.entry.js} +1 -1
  316. package/dist/ionic/{p-f7faa32d.entry.js → p-9e8727d6.entry.js} +1 -1
  317. package/dist/ionic/p-9eaaa910.entry.js +4 -0
  318. package/dist/ionic/{p-653f2fc6.entry.js → p-9eced28c.entry.js} +1 -1
  319. package/dist/ionic/{p-2061c86f.system.entry.js → p-9f3ad626.system.entry.js} +1 -1
  320. package/dist/ionic/{p-d1bab5e7.system.entry.js → p-a033a91d.system.entry.js} +1 -1
  321. package/dist/ionic/{p-62324608.system.entry.js → p-a037b6d5.system.entry.js} +1 -1
  322. package/dist/ionic/{p-df6743df.system.js → p-a122ecd0.system.js} +1 -1
  323. package/dist/ionic/{p-83008f7c.system.js → p-a314559e.system.js} +2 -2
  324. package/dist/ionic/p-a533868d.system.js +4 -0
  325. package/dist/ionic/{p-1d82df31.system.entry.js → p-a8270ae8.system.entry.js} +1 -1
  326. package/dist/ionic/{p-a34669bf.system.entry.js → p-acc9adcf.system.entry.js} +1 -1
  327. package/dist/ionic/p-af6125d1.system.entry.js +4 -0
  328. package/dist/ionic/{p-785b0913.entry.js → p-b052b578.entry.js} +1 -1
  329. package/dist/ionic/{p-91459620.js → p-b3f6f321.js} +1 -1
  330. package/dist/ionic/{p-82f8ee51.entry.js → p-b453b38d.entry.js} +1 -1
  331. package/dist/ionic/{p-fea46870.system.entry.js → p-b703ebeb.system.entry.js} +1 -1
  332. package/dist/ionic/p-b8d7f0eb.system.entry.js +4 -0
  333. package/dist/ionic/{p-67b891af.entry.js → p-b9179eab.entry.js} +1 -1
  334. package/dist/ionic/{p-a3f9d271.entry.js → p-bacf09d3.entry.js} +1 -1
  335. package/dist/ionic/{p-341d5877.entry.js → p-be187db3.entry.js} +1 -1
  336. package/dist/ionic/{p-b32742f3.system.js → p-bfee11b2.system.js} +1 -1
  337. package/dist/ionic/{p-0660215f.entry.js → p-c2d6088f.entry.js} +1 -1
  338. package/dist/ionic/p-c68a8814.system.js +4 -0
  339. package/dist/ionic/p-c7ce7e18.entry.js +4 -0
  340. package/dist/ionic/{p-336420f9.system.entry.js → p-c8c0d58a.system.entry.js} +1 -1
  341. package/dist/ionic/p-cc8910e7.system.js +4 -0
  342. package/dist/ionic/{p-728ac2b3.entry.js → p-cd002251.entry.js} +1 -1
  343. package/dist/ionic/{p-11248f01.js → p-d57e8b06.js} +1 -1
  344. package/dist/ionic/{p-2539e967.system.entry.js → p-d8d30fd1.system.entry.js} +1 -1
  345. package/dist/ionic/p-dacb0258.js +4 -0
  346. package/dist/ionic/{p-d693e765.system.entry.js → p-dc4c9086.system.entry.js} +1 -1
  347. package/dist/ionic/p-dc7d392d.entry.js +4 -0
  348. package/dist/ionic/{p-f9567c67.entry.js → p-e00f2bf2.entry.js} +1 -1
  349. package/dist/ionic/{p-0cc2bf5a.system.entry.js → p-e239ab05.system.entry.js} +1 -1
  350. package/dist/ionic/p-e65aed58.system.entry.js +4 -0
  351. package/dist/ionic/{p-d5e3bff3.entry.js → p-eb91aee6.entry.js} +1 -1
  352. package/dist/ionic/{p-6bf632d0.system.entry.js → p-ec344ed1.system.entry.js} +1 -1
  353. package/dist/ionic/{p-ed7b205b.entry.js → p-ec7ff98b.entry.js} +1 -1
  354. package/dist/ionic/{p-5ba27716.system.entry.js → p-ee55302a.system.entry.js} +1 -1
  355. package/dist/ionic/{p-dbb48066.system.entry.js → p-ef8a8827.system.entry.js} +1 -1
  356. package/dist/ionic/p-f3ec1f2b.entry.js +4 -0
  357. package/dist/ionic/{p-639d7b25.entry.js → p-f62bed60.entry.js} +1 -1
  358. package/dist/ionic/p-f7377240.js +4 -0
  359. package/dist/ionic/{p-96c2a273.system.entry.js → p-fa8fc77b.system.entry.js} +1 -1
  360. package/dist/ionic/p-fb26fa56.system.entry.js +4 -0
  361. package/dist/ionic/{p-3ef88fc2.system.entry.js → p-fde174d6.system.entry.js} +1 -1
  362. package/dist/ionic/{p-7b16490a.system.js → p-ff3d728d.system.js} +1 -1
  363. package/dist/types/components/checkbox/checkbox.d.ts +1 -8
  364. package/dist/types/components/datetime/datetime.d.ts +10 -23
  365. package/dist/types/components/datetime/utils/data.d.ts +1 -1
  366. package/dist/types/components/datetime/utils/parse.d.ts +3 -3
  367. package/dist/types/components/radio/radio.d.ts +1 -8
  368. package/dist/types/components/range/range.d.ts +1 -2
  369. package/dist/types/components/toast/toast-interface.d.ts +0 -3
  370. package/dist/types/components/toggle/toggle.d.ts +1 -8
  371. package/dist/types/components.d.ts +16 -40
  372. package/dist/types/index.d.ts +0 -1
  373. package/dist/types/interface.d.ts +0 -1
  374. package/dist/types/stencil-public-runtime.d.ts +3 -3
  375. package/dist/types/utils/browser/index.d.ts +16 -1
  376. package/dist/types/utils/input-shims/hacks/scroll-data.d.ts +1 -1
  377. package/hydrate/index.d.ts +5 -5
  378. package/hydrate/index.js +150 -234
  379. package/package.json +3 -3
  380. package/dist/esm-es5/app-globals-e8ddf830.js +0 -4
  381. package/dist/esm-es5/data-009dbf15.js +0 -4
  382. package/dist/esm-es5/input-shims-af993f05.js +0 -4
  383. package/dist/esm-es5/md.transition-48b3b77c.js +0 -4
  384. package/dist/ionic/p-06902103.system.js +0 -4
  385. package/dist/ionic/p-1f4adf06.system.entry.js +0 -4
  386. package/dist/ionic/p-218b6f33.entry.js +0 -4
  387. package/dist/ionic/p-273e78ae.entry.js +0 -4
  388. package/dist/ionic/p-2da6ba37.system.entry.js +0 -4
  389. package/dist/ionic/p-40138199.entry.js +0 -4
  390. package/dist/ionic/p-44ef7224.system.js +0 -4
  391. package/dist/ionic/p-4531b920.system.js +0 -4
  392. package/dist/ionic/p-4ca1ce6b.system.entry.js +0 -4
  393. package/dist/ionic/p-51b165af.system.js +0 -4
  394. package/dist/ionic/p-582dc7c1.js +0 -4
  395. package/dist/ionic/p-64ad5765.entry.js +0 -4
  396. package/dist/ionic/p-778460f7.js +0 -4
  397. package/dist/ionic/p-7cfd253c.js +0 -4
  398. package/dist/ionic/p-86c5c320.entry.js +0 -4
  399. package/dist/ionic/p-90ec5785.system.entry.js +0 -4
  400. package/dist/ionic/p-a2b25750.js +0 -4
  401. package/dist/ionic/p-a62c0ff4.js +0 -4
  402. package/dist/ionic/p-af986299.system.entry.js +0 -4
  403. package/dist/ionic/p-b321c999.entry.js +0 -4
  404. package/dist/ionic/p-c53dd7a2.entry.js +0 -4
  405. package/dist/ionic/p-d898dd46.js +0 -4
  406. package/dist/ionic/p-d8a0267b.system.entry.js +0 -4
  407. package/dist/ionic/p-e3d5608d.system.js +0 -4
  408. package/dist/ionic/p-f5c19164.entry.js +0 -4
  409. /package/dist/esm-es5/{index-847f2fde.js → index-adfb2000.js} +0 -0
  410. /package/dist/ionic/{p-5b553dc0.system.js → p-2441ba84.system.js} +0 -0
  411. /package/dist/ionic/{p-156967ec.js → p-a18eb556.js} +0 -0
@@ -220,20 +220,12 @@ export const generateTime = (refParts, hourCycle = 'h12', minParts, maxParts, ho
220
220
  * Given DatetimeParts, generate the previous,
221
221
  * current, and and next months.
222
222
  */
223
- export const generateMonths = (refParts, forcedDate) => {
224
- const current = { month: refParts.month, year: refParts.year, day: refParts.day };
225
- /**
226
- * If we're forcing a month to appear, and it's different from the current month,
227
- * ensure it appears by replacing the next or previous month as appropriate.
228
- */
229
- if (forcedDate !== undefined && (refParts.month !== forcedDate.month || refParts.year !== forcedDate.year)) {
230
- const forced = { month: forcedDate.month, year: forcedDate.year, day: forcedDate.day };
231
- const forcedMonthIsBefore = isBefore(forced, current);
232
- return forcedMonthIsBefore
233
- ? [forced, current, getNextMonth(refParts)]
234
- : [getPreviousMonth(refParts), current, forced];
235
- }
236
- return [getPreviousMonth(refParts), current, getNextMonth(refParts)];
223
+ export const generateMonths = (refParts) => {
224
+ return [
225
+ getPreviousMonth(refParts),
226
+ { month: refParts.month, year: refParts.year, day: refParts.day },
227
+ getNextMonth(refParts),
228
+ ];
237
229
  };
238
230
  export const getMonthColumnData = (locale, refParts, minParts, maxParts, monthValues, formatOptions = {
239
231
  month: 'long',
@@ -1,7 +1,6 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import { printIonWarning } from "../../../utils/logging/index";
5
4
  import { isAfter, isBefore } from "./comparison";
6
5
  import { getNumDaysInMonth } from "./helpers";
7
6
  const ISO_8601_REGEXP =
@@ -48,22 +47,7 @@ export const getPartsFromCalendarDay = (el) => {
48
47
  };
49
48
  export function parseDate(val) {
50
49
  if (Array.isArray(val)) {
51
- const parsedArray = [];
52
- for (const valStr of val) {
53
- const parsedVal = parseDate(valStr);
54
- /**
55
- * If any of the values weren't parsed correctly, consider
56
- * the entire batch incorrect. This simplifies the type
57
- * signatures by having "undefined" be a general error case
58
- * instead of returning (Datetime | undefined)[], which is
59
- * harder for TS to perform type narrowing on.
60
- */
61
- if (!parsedVal) {
62
- return undefined;
63
- }
64
- parsedArray.push(parsedVal);
65
- }
66
- return parsedArray;
50
+ return val.map((valStr) => parseDate(valStr));
67
51
  }
68
52
  // manually parse IS0 cuz Date.parse cannot be trusted
69
53
  // ISO 8601 format: 1994-12-15T13:47:20Z
@@ -83,7 +67,6 @@ export function parseDate(val) {
83
67
  }
84
68
  if (parse === null) {
85
69
  // wasn't able to parse the ISO datetime
86
- printIonWarning(`Unable to parse date string: ${val}. Please provide a valid ISO 8601 datetime string.`);
87
70
  return undefined;
88
71
  }
89
72
  // ensure all the parse values exist with at least 0
@@ -54,9 +54,6 @@ export class DatetimeButton {
54
54
  * to today's date and time if no value is set.
55
55
  */
56
56
  const parsedDatetimes = parseDate(parsedValues.length > 0 ? parsedValues : [getToday()]);
57
- if (!parsedDatetimes) {
58
- return;
59
- }
60
57
  /**
61
58
  * If developers incorrectly use multiple="true"
62
59
  * with non "date" datetimes, then just select
@@ -147,15 +147,6 @@ input {
147
147
  margin-bottom: 10px;
148
148
  }
149
149
 
150
- :host(.in-item.radio-label-placement-stacked) .label-text-wrapper {
151
- margin-top: 10px;
152
- margin-bottom: 16px;
153
- }
154
-
155
- :host(.in-item.radio-label-placement-stacked) .native-wrapper {
156
- margin-bottom: 10px;
157
- }
158
-
159
150
  /**
160
151
  * If no label text is placed into the slot
161
152
  * then the element should be hidden otherwise
@@ -182,14 +173,6 @@ input {
182
173
  justify-content: end;
183
174
  }
184
175
 
185
- :host(.radio-alignment-start) .radio-wrapper {
186
- align-items: start;
187
- }
188
-
189
- :host(.radio-alignment-center) .radio-wrapper {
190
- align-items: center;
191
- }
192
-
193
176
  /**
194
177
  * Label is on the left of the radio in LTR and
195
178
  * on the right in RTL.
@@ -252,24 +235,6 @@ input {
252
235
  min-width: 100px;
253
236
  }
254
237
 
255
- /**
256
- * Label is on top of the radio.
257
- */
258
- :host(.radio-label-placement-stacked) .radio-wrapper {
259
- flex-direction: column;
260
- }
261
-
262
- :host(.radio-label-placement-stacked) .label-text-wrapper {
263
- /**
264
- * The margin between the label and
265
- * the radio should be on the bottom
266
- * when the label sits on top.
267
- */
268
- margin-left: 0;
269
- margin-right: 0;
270
- margin-bottom: 16px;
271
- }
272
-
273
238
  :host {
274
239
  --color-checked: var(--ion-color-primary, #3880ff);
275
240
  }
@@ -70,7 +70,6 @@ export class Radio {
70
70
  this.labelPlacement = 'start';
71
71
  this.legacy = undefined;
72
72
  this.justify = 'space-between';
73
- this.alignment = 'center';
74
73
  }
75
74
  valueChanged() {
76
75
  /**
@@ -135,7 +134,7 @@ export class Radio {
135
134
  return legacyFormController.hasLegacyControl() ? this.renderLegacyRadio() : this.renderRadio();
136
135
  }
137
136
  renderRadio() {
138
- const { checked, disabled, color, el, justify, labelPlacement, hasLabel, buttonTabindex, alignment } = this;
137
+ const { checked, disabled, color, el, justify, labelPlacement, hasLabel, buttonTabindex } = this;
139
138
  const mode = getIonMode(this);
140
139
  const inItem = hostContext('ion-item', el);
141
140
  return (h(Host, { onFocus: this.onFocus, onBlur: this.onBlur, onClick: this.onClick, class: createColorClasses(color, {
@@ -144,7 +143,6 @@ export class Radio {
144
143
  'radio-checked': checked,
145
144
  'radio-disabled': disabled,
146
145
  [`radio-justify-${justify}`]: true,
147
- [`radio-alignment-${alignment}`]: true,
148
146
  [`radio-label-placement-${labelPlacement}`]: true,
149
147
  // Focus and active styling should not apply when the radio is in an item
150
148
  'ion-activatable': !inItem,
@@ -277,15 +275,15 @@ Developers can dismiss this warning by removing their usage of the "legacy" prop
277
275
  "type": "string",
278
276
  "mutable": false,
279
277
  "complexType": {
280
- "original": "'start' | 'end' | 'fixed' | 'stacked'",
281
- "resolved": "\"end\" | \"fixed\" | \"stacked\" | \"start\"",
278
+ "original": "'start' | 'end' | 'fixed'",
279
+ "resolved": "\"end\" | \"fixed\" | \"start\"",
282
280
  "references": {}
283
281
  },
284
282
  "required": false,
285
283
  "optional": false,
286
284
  "docs": {
287
285
  "tags": [],
288
- "text": "Where to place the label relative to the radio.\n`\"start\"`: The label will appear to the left of the radio in LTR and to the right in RTL.\n`\"end\"`: The label will appear to the right of the radio in LTR and to the left in RTL.\n`\"fixed\"`: The label has the same behavior as `\"start\"` except it also has a fixed width. Long text will be truncated with ellipses (\"...\").\n`\"stacked\"`: The label will appear above the radio regardless of the direction. The alignment of the label can be controlled with the `alignment` property."
286
+ "text": "Where to place the label relative to the radio.\n`\"start\"`: The label will appear to the left of the radio in LTR and to the right in RTL.\n`\"end\"`: The label will appear to the right of the radio in LTR and to the left in RTL.\n`\"fixed\"`: The label has the same behavior as `\"start\"` except it also has a fixed width. Long text will be truncated with ellipses (\"...\")."
289
287
  },
290
288
  "attribute": "label-placement",
291
289
  "reflect": false,
@@ -325,24 +323,6 @@ Developers can dismiss this warning by removing their usage of the "legacy" prop
325
323
  "attribute": "justify",
326
324
  "reflect": false,
327
325
  "defaultValue": "'space-between'"
328
- },
329
- "alignment": {
330
- "type": "string",
331
- "mutable": false,
332
- "complexType": {
333
- "original": "'start' | 'center'",
334
- "resolved": "\"center\" | \"start\"",
335
- "references": {}
336
- },
337
- "required": false,
338
- "optional": false,
339
- "docs": {
340
- "tags": [],
341
- "text": "How to control the alignment of the radio and label on the cross axis.\n`\"start\"`: The label and control will appear on the left of the cross axis in LTR, and on the right side in RTL.\n`\"center\"`: The label and control will appear at the center of the cross axis in both LTR and RTL."
342
- },
343
- "attribute": "alignment",
344
- "reflect": false,
345
- "defaultValue": "'center'"
346
326
  }
347
327
  };
348
328
  }
@@ -147,15 +147,6 @@ input {
147
147
  margin-bottom: 10px;
148
148
  }
149
149
 
150
- :host(.in-item.radio-label-placement-stacked) .label-text-wrapper {
151
- margin-top: 10px;
152
- margin-bottom: 16px;
153
- }
154
-
155
- :host(.in-item.radio-label-placement-stacked) .native-wrapper {
156
- margin-bottom: 10px;
157
- }
158
-
159
150
  /**
160
151
  * If no label text is placed into the slot
161
152
  * then the element should be hidden otherwise
@@ -182,14 +173,6 @@ input {
182
173
  justify-content: end;
183
174
  }
184
175
 
185
- :host(.radio-alignment-start) .radio-wrapper {
186
- align-items: start;
187
- }
188
-
189
- :host(.radio-alignment-center) .radio-wrapper {
190
- align-items: center;
191
- }
192
-
193
176
  /**
194
177
  * Label is on the left of the radio in LTR and
195
178
  * on the right in RTL.
@@ -252,24 +235,6 @@ input {
252
235
  min-width: 100px;
253
236
  }
254
237
 
255
- /**
256
- * Label is on top of the radio.
257
- */
258
- :host(.radio-label-placement-stacked) .radio-wrapper {
259
- flex-direction: column;
260
- }
261
-
262
- :host(.radio-label-placement-stacked) .label-text-wrapper {
263
- /**
264
- * The margin between the label and
265
- * the radio should be on the bottom
266
- * when the label sits on top.
267
- */
268
- margin-left: 0;
269
- margin-right: 0;
270
- margin-bottom: 16px;
271
- }
272
-
273
238
  :host {
274
239
  --color: rgb(var(--ion-text-color-rgb, 0, 0, 0), 0.6);
275
240
  --color-checked: var(--ion-color-primary, #3880ff);
@@ -51,19 +51,4 @@ configs({ directions: ['ltr'], modes: ['md'] }).forEach(({ title, screenshot, co
51
51
  await expect(list).toHaveScreenshot(screenshot(`radio-long-label-in-item`));
52
52
  });
53
53
  });
54
- test.describe(title('radio: stacked label in item'), () => {
55
- test('should render margins correctly when using stacked label in item', async ({ page }) => {
56
- await page.setContent(`
57
- <ion-list>
58
- <ion-radio-group>
59
- <ion-item>
60
- <ion-radio label-placement="stacked">Enable Notifications</ion-radio>
61
- </ion-item>
62
- </ion-radio-group>
63
- </ion-list>
64
- `, config);
65
- const list = page.locator('ion-list');
66
- await expect(list).toHaveScreenshot(screenshot(`radio-stacked-label-in-item`));
67
- });
68
- });
69
54
  });
@@ -100,25 +100,5 @@ configs().forEach(({ title, screenshot, config }) => {
100
100
  await expect(radio).toHaveScreenshot(screenshot(`radio-label-fixed-justify-space-between`));
101
101
  });
102
102
  });
103
- test.describe('radio: stacked placement', () => {
104
- test('should align the label to the start of the container in the stacked position', async ({ page }) => {
105
- await page.setContent(`
106
- <ion-radio-group value="1">
107
- <ion-radio label-placement="stacked" alignment="start" style="width: 200px" value="1">This is a long label</ion-radio>
108
- </ion-radio-group>
109
- `, config);
110
- const radio = page.locator('ion-radio');
111
- await expect(radio).toHaveScreenshot(screenshot(`radio-label-stacked-align-start`));
112
- });
113
- test('should align the label to the center of the container in the stacked position', async ({ page }) => {
114
- await page.setContent(`
115
- <ion-radio-group value="1">
116
- <ion-radio label-placement="stacked" alignment="center" style="width: 200px" value="1">This is a long label</ion-radio>
117
- </ion-radio-group>
118
- `, config);
119
- const radio = page.locator('ion-radio');
120
- await expect(radio).toHaveScreenshot(screenshot(`radio-label-stacked-align-center`));
121
- });
122
- });
123
103
  });
124
104
  });
@@ -363,25 +363,6 @@
363
363
  max-width: 200px;
364
364
  }
365
365
 
366
- /**
367
- * Label is on top of the range.
368
- */
369
- :host(.range-label-placement-stacked) .range-wrapper {
370
- flex-direction: column;
371
- align-items: stretch;
372
- }
373
-
374
- :host(.range-label-placement-stacked) .label-text-wrapper {
375
- /**
376
- * The margin between the label and
377
- * the range should be on the bottom
378
- * when the label sits on top.
379
- */
380
- margin-left: 0;
381
- margin-right: 0;
382
- margin-bottom: 16px;
383
- }
384
-
385
366
  :host {
386
367
  --knob-border-radius: 50%;
387
368
  --knob-background: #ffffff;
@@ -426,31 +407,10 @@
426
407
  margin-bottom: 0;
427
408
  }
428
409
 
429
- :host(.range-has-pin:not(.range-label-placement-stacked)) {
430
- /**
431
- * The pin should not overlap any elements that are
432
- * above the range. By adding padding to the top of the
433
- * range, it provides a buffer for the pin to move into
434
- * when it is pressed.
435
- *
436
- * The padding is not included when the label is stacked
437
- * because the pin is below the label.
438
- * It still requires a buffer to prevent the pin from
439
- * overlapping the range. The buffer is added to the
440
- * bottom of the range label instead of the host.
441
- */
410
+ :host(.range-has-pin) {
442
411
  padding-top: 20px;
443
412
  }
444
413
 
445
- :host(.range-has-pin.range-label-placement-stacked) .label-text-wrapper {
446
- /**
447
- * The pin should not overlap the stacked label. By adding
448
- * margin to the bottom of the label, it provides a buffer
449
- * for the pin to move into when it is pressed.
450
- */
451
- margin-bottom: 20px;
452
- }
453
-
454
414
  .range-bar-active {
455
415
  bottom: 0;
456
416
  width: auto;
@@ -808,15 +808,15 @@ Developers can dismiss this warning by removing their usage of the "legacy" prop
808
808
  "type": "string",
809
809
  "mutable": false,
810
810
  "complexType": {
811
- "original": "'start' | 'end' | 'fixed' | 'stacked'",
812
- "resolved": "\"end\" | \"fixed\" | \"stacked\" | \"start\"",
811
+ "original": "'start' | 'end' | 'fixed'",
812
+ "resolved": "\"end\" | \"fixed\" | \"start\"",
813
813
  "references": {}
814
814
  },
815
815
  "required": false,
816
816
  "optional": false,
817
817
  "docs": {
818
818
  "tags": [],
819
- "text": "Where to place the label relative to the range.\n`\"start\"`: The label will appear to the left of the range in LTR and to the right in RTL.\n`\"end\"`: The label will appear to the right of the range in LTR and to the left in RTL.\n`\"fixed\"`: The label has the same behavior as `\"start\"` except it also has a fixed width. Long text will be truncated with ellipses (\"...\").\n`\"stacked\"`: The label will appear above the range regardless of the direction."
819
+ "text": "Where to place the label relative to the range.\n`\"start\"`: The label will appear to the left of the range in LTR and to the right in RTL.\n`\"end\"`: The label will appear to the right of the range in LTR and to the left in RTL.\n`\"fixed\"`: The label has the same behavior as `\"start\"` except it also has a fixed width. Long text will be truncated with ellipses (\"...\")."
820
820
  },
821
821
  "attribute": "label-placement",
822
822
  "reflect": false,
@@ -363,25 +363,6 @@
363
363
  max-width: 200px;
364
364
  }
365
365
 
366
- /**
367
- * Label is on top of the range.
368
- */
369
- :host(.range-label-placement-stacked) .range-wrapper {
370
- flex-direction: column;
371
- align-items: stretch;
372
- }
373
-
374
- :host(.range-label-placement-stacked) .label-text-wrapper {
375
- /**
376
- * The margin between the label and
377
- * the range should be on the bottom
378
- * when the label sits on top.
379
- */
380
- margin-left: 0;
381
- margin-right: 0;
382
- margin-bottom: 16px;
383
- }
384
-
385
366
  :host {
386
367
  --knob-border-radius: 50%;
387
368
  --knob-background: var(--bar-background-active);
@@ -442,31 +423,10 @@
442
423
  margin-bottom: 0;
443
424
  }
444
425
 
445
- :host(.range-has-pin:not(.range-label-placement-stacked)) {
446
- /**
447
- * The pin should not overlap any elements that are
448
- * above the range. By adding padding to the top of the
449
- * range, it provides a buffer for the pin to move into
450
- * when it is pressed.
451
- *
452
- * The padding is not included when the label is stacked
453
- * because the pin is below the label.
454
- * It still requires a buffer to prevent the pin from
455
- * overlapping the range. The buffer is added to the
456
- * bottom of the range label instead of the host.
457
- */
426
+ :host(.range-has-pin) {
458
427
  padding-top: 28px;
459
428
  }
460
429
 
461
- :host(.range-has-pin.range-label-placement-stacked) .label-text-wrapper {
462
- /**
463
- * The pin should not overlap the stacked label. By adding
464
- * margin to the bottom of the label, it provides a buffer
465
- * for the pin to move into when it is pressed.
466
- */
467
- margin-bottom: 28px;
468
- }
469
-
470
430
  .range-bar-active {
471
431
  bottom: 0;
472
432
  width: auto;
@@ -40,17 +40,6 @@ configs().forEach(({ title, screenshot, config }) => {
40
40
  const range = page.locator('ion-range');
41
41
  await expect(range).toHaveScreenshot(screenshot(`range-no-items-fixed`));
42
42
  });
43
- test('should render label above the range slider', async ({ page }) => {
44
- await page.setContent(`
45
- <div id="container" style="padding-inline-start: 20px;">
46
- <ion-range label-placement="stacked">
47
- <span slot="label">Volume</span>
48
- </ion-range>
49
- </div>
50
- `, config);
51
- const range = page.locator('#container');
52
- await expect(range).toHaveScreenshot(screenshot(`range-no-items-stacked`));
53
- });
54
43
  });
55
44
  test.describe('range: start and end items', () => {
56
45
  test('should render a range with no visible label', async ({ page }) => {
@@ -96,17 +85,6 @@ configs().forEach(({ title, screenshot, config }) => {
96
85
  const range = page.locator('ion-range');
97
86
  await expect(range).toHaveScreenshot(screenshot(`range-items-fixed`));
98
87
  });
99
- test('should render label above the range slider', async ({ page }) => {
100
- await page.setContent(`
101
- <ion-range label-placement="stacked">
102
- <ion-icon name="volume-off" slot="start"></ion-icon>
103
- <ion-icon name="volume-high" slot="end"></ion-icon>
104
- <span slot="label">Volume</span>
105
- </ion-range>
106
- `, config);
107
- const range = page.locator('ion-range');
108
- await expect(range).toHaveScreenshot(screenshot(`range-items-stacked`));
109
- });
110
88
  });
111
89
  test.describe('range: label prop', () => {
112
90
  test('should render label in the start placement', async ({ page }) => {
@@ -124,15 +102,6 @@ configs().forEach(({ title, screenshot, config }) => {
124
102
  const range = page.locator('ion-range');
125
103
  await expect(range).toHaveScreenshot(screenshot(`range-label-prop-fixed`));
126
104
  });
127
- test('should render label above the range slider', async ({ page }) => {
128
- await page.setContent(`
129
- <div id="container" style="padding-inline-start: 20px;">
130
- <ion-range label-placement="stacked" label="Volume"></ion-range>
131
- </div>
132
- `, config);
133
- const range = page.locator('#container');
134
- await expect(range).toHaveScreenshot(screenshot(`range-label-prop-stacked`));
135
- });
136
105
  });
137
106
  });
138
107
  });
@@ -148,21 +117,4 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, screenshot, co
148
117
  await expect(range).toHaveScreenshot(screenshot(`range-label-truncate`));
149
118
  });
150
119
  });
151
- test.describe(title('range: with pin'), () => {
152
- test('should render pin below a stacked label', async ({ page }) => {
153
- await page.setContent(`
154
- <div id="container" style="padding-inline-start: 20px;">
155
- <ion-range label-placement="stacked" pin="true">
156
- <span slot="label">Volume</span>
157
- </ion-range>
158
- </div>
159
- `, config);
160
- const container = page.locator('#container');
161
- const range = page.locator('ion-range');
162
- const knob = range.locator('.range-knob-handle');
163
- // Force the pin to show
164
- await knob.evaluate((el) => el.classList.add('ion-focused'));
165
- await expect(container).toHaveScreenshot(screenshot(`range-stacked-pin`));
166
- });
167
- });
168
120
  });
@@ -58,19 +58,4 @@ configs({ directions: ['ltr'], modes: ['md'] }).forEach(({ title, screenshot, co
58
58
  await expect(list).toHaveScreenshot(screenshot(`toggle-long-label-in-item`));
59
59
  });
60
60
  });
61
- test.describe(title('toggle: stacked label in item'), () => {
62
- test('should render margins correctly when using stacked label in item', async ({ page }) => {
63
- await page.setContent(`
64
- <ion-list>
65
- <ion-radio-group>
66
- <ion-item>
67
- <ion-toggle label-placement="stacked">Enable Notifications</ion-toggle>
68
- </ion-item>
69
- </ion-radio-group>
70
- </ion-list>
71
- `, config);
72
- const list = page.locator('ion-list');
73
- await expect(list).toHaveScreenshot(screenshot(`toggle-stacked-label-in-item`));
74
- });
75
- });
76
61
  });
@@ -90,20 +90,4 @@ configs().forEach(({ title, screenshot, config }) => {
90
90
  await expect(toggle).toHaveScreenshot(screenshot(`toggle-label-fixed-justify-space-between`));
91
91
  });
92
92
  });
93
- test.describe(title('toggle: stacked placement'), () => {
94
- test('should align the label to the start of the container in the stacked position', async ({ page }) => {
95
- await page.setContent(`
96
- <ion-toggle label-placement="stacked" alignment="start" style="width: 200px">This is a long label</ion-toggle>
97
- `, config);
98
- const toggle = page.locator('ion-toggle');
99
- await expect(toggle).toHaveScreenshot(screenshot(`toggle-label-stacked-align-start`));
100
- });
101
- test('should align the label to the center of the container in the stacked position', async ({ page }) => {
102
- await page.setContent(`
103
- <ion-toggle label-placement="stacked" alignment="center" style="width: 200px">This is a long label</ion-toggle>
104
- `, config);
105
- const toggle = page.locator('ion-toggle');
106
- await expect(toggle).toHaveScreenshot(screenshot(`toggle-label-stacked-align-center`));
107
- });
108
- });
109
93
  });
@@ -123,6 +123,7 @@ input {
123
123
  display: flex;
124
124
  position: relative;
125
125
  flex-grow: 1;
126
+ align-items: center;
126
127
  height: inherit;
127
128
  transition: background-color 15ms linear;
128
129
  cursor: inherit;
@@ -145,15 +146,6 @@ input {
145
146
  margin-bottom: 10px;
146
147
  }
147
148
 
148
- :host(.in-item.toggle-label-placement-stacked) .label-text-wrapper {
149
- margin-top: 10px;
150
- margin-bottom: 16px;
151
- }
152
-
153
- :host(.in-item.toggle-label-placement-stacked) .native-wrapper {
154
- margin-bottom: 10px;
155
- }
156
-
157
149
  /**
158
150
  * If no label text is placed into the slot
159
151
  * then the element should be hidden otherwise
@@ -180,14 +172,6 @@ input {
180
172
  justify-content: end;
181
173
  }
182
174
 
183
- :host(.toggle-alignment-start) .toggle-wrapper {
184
- align-items: start;
185
- }
186
-
187
- :host(.toggle-alignment-center) .toggle-wrapper {
188
- align-items: center;
189
- }
190
-
191
175
  /**
192
176
  * Label is on the left of the input in LTR and
193
177
  * on the right in RTL.
@@ -251,24 +235,6 @@ input {
251
235
  max-width: 200px;
252
236
  }
253
237
 
254
- /**
255
- * Label is on top of the toggle.
256
- */
257
- :host(.toggle-label-placement-stacked) .toggle-wrapper {
258
- flex-direction: column;
259
- }
260
-
261
- :host(.toggle-label-placement-stacked) .label-text-wrapper {
262
- /**
263
- * The margin between the label and
264
- * the toggle should be on the bottom
265
- * when the label sits on top.
266
- */
267
- margin-left: 0;
268
- margin-right: 0;
269
- margin-bottom: 16px;
270
- }
271
-
272
238
  .toggle-icon-wrapper {
273
239
  display: flex;
274
240
  position: relative;