@ionic/core 7.5.4-dev.11699031793.11a4baba → 7.5.4-dev.11699037031.16f5cbc8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (476) hide show
  1. package/components/animation.js +12 -11
  2. package/components/checkbox.js +2 -0
  3. package/components/index4.js +10 -12
  4. package/components/index5.js +0 -22
  5. package/components/input-shims.js +12 -7
  6. package/components/ion-datetime.js +2 -2
  7. package/components/ion-input.js +2 -0
  8. package/components/ion-range.js +2 -0
  9. package/components/ion-select.js +5 -25
  10. package/components/ion-skeleton-text.js +14 -1
  11. package/components/ion-textarea.js +2 -0
  12. package/components/ion-toast.js +13 -18
  13. package/components/ion-toggle.js +2 -0
  14. package/components/item.js +2 -2
  15. package/components/label.js +2 -2
  16. package/components/radio-group.js +2 -0
  17. package/components/radio.js +35 -2
  18. package/dist/cjs/{animation-1083855c.js → animation-d101aa7a.js} +13 -12
  19. package/dist/cjs/{app-globals-d1892126.js → app-globals-ef077808.js} +1 -1
  20. package/dist/cjs/{button-active-e93ab34d.js → button-active-69c3bee4.js} +2 -2
  21. package/dist/cjs/{capacitor-2ffba62a.js → capacitor-f68447d3.js} +1 -1
  22. package/dist/cjs/compare-with-utils-50c82573.js +37 -0
  23. package/dist/cjs/{haptic-678abc9f.js → haptic-a74c2767.js} +1 -1
  24. package/dist/cjs/{index-4323b635.js → index-9146d04a.js} +12 -14
  25. package/dist/cjs/{index-84c4c696.js → index-adbcffee.js} +3 -3
  26. package/dist/cjs/index-c8d52405.js +10 -0
  27. package/dist/cjs/{index-9f379eaa.js → index-e9634bc9.js} +1 -1
  28. package/dist/cjs/index.cjs.js +10 -10
  29. package/dist/cjs/{input-shims-b0a75a01.js → input-shims-3e3f35b9.js} +15 -10
  30. package/dist/cjs/{input.utils-0fe3097c.js → input.utils-590f0f18.js} +1 -1
  31. package/dist/cjs/ion-accordion_2.cjs.entry.js +3 -3
  32. package/dist/cjs/ion-action-sheet.cjs.entry.js +8 -8
  33. package/dist/cjs/ion-alert.cjs.entry.js +8 -8
  34. package/dist/cjs/ion-app_8.cjs.entry.js +11 -11
  35. package/dist/cjs/ion-avatar_3.cjs.entry.js +2 -2
  36. package/dist/cjs/ion-back-button.cjs.entry.js +3 -3
  37. package/dist/cjs/ion-backdrop.cjs.entry.js +2 -2
  38. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +3 -3
  39. package/dist/cjs/ion-button_2.cjs.entry.js +2 -2
  40. package/dist/cjs/ion-card_5.cjs.entry.js +2 -2
  41. package/dist/cjs/ion-checkbox.cjs.entry.js +4 -2
  42. package/dist/cjs/ion-chip.cjs.entry.js +2 -2
  43. package/dist/cjs/ion-col_3.cjs.entry.js +2 -2
  44. package/dist/cjs/ion-datetime-button.cjs.entry.js +2 -2
  45. package/dist/cjs/ion-datetime_3.cjs.entry.js +10 -10
  46. package/dist/cjs/ion-fab_3.cjs.entry.js +3 -3
  47. package/dist/cjs/ion-img.cjs.entry.js +2 -2
  48. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +2 -2
  49. package/dist/cjs/ion-input.cjs.entry.js +8 -6
  50. package/dist/cjs/ion-item-option_3.cjs.entry.js +2 -2
  51. package/dist/cjs/ion-item_8.cjs.entry.js +20 -7
  52. package/dist/cjs/ion-loading.cjs.entry.js +5 -5
  53. package/dist/cjs/ion-menu_3.cjs.entry.js +8 -8
  54. package/dist/cjs/ion-modal.cjs.entry.js +9 -9
  55. package/dist/cjs/ion-nav_2.cjs.entry.js +3 -3
  56. package/dist/cjs/ion-picker-column-internal.cjs.entry.js +5 -5
  57. package/dist/cjs/ion-picker-internal.cjs.entry.js +1 -1
  58. package/dist/cjs/ion-popover.cjs.entry.js +6 -6
  59. package/dist/cjs/ion-progress-bar.cjs.entry.js +2 -2
  60. package/dist/cjs/ion-radio_2.cjs.entry.js +8 -3
  61. package/dist/cjs/ion-range.cjs.entry.js +4 -2
  62. package/dist/cjs/ion-refresher_2.cjs.entry.js +7 -7
  63. package/dist/cjs/ion-reorder_2.cjs.entry.js +6 -6
  64. package/dist/cjs/ion-ripple-effect.cjs.entry.js +2 -2
  65. package/dist/cjs/ion-route_4.cjs.entry.js +2 -2
  66. package/dist/cjs/ion-searchbar.cjs.entry.js +3 -3
  67. package/dist/cjs/ion-segment_2.cjs.entry.js +2 -2
  68. package/dist/cjs/ion-select_3.cjs.entry.js +15 -34
  69. package/dist/cjs/ion-spinner.cjs.entry.js +2 -2
  70. package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
  71. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +6 -6
  72. package/dist/cjs/ion-tab_2.cjs.entry.js +1 -1
  73. package/dist/cjs/ion-text.cjs.entry.js +2 -2
  74. package/dist/cjs/ion-textarea.cjs.entry.js +7 -5
  75. package/dist/cjs/ion-toast.cjs.entry.js +18 -23
  76. package/dist/cjs/ion-toggle.cjs.entry.js +8 -6
  77. package/dist/cjs/{ionic-global-91f1f8f2.js → ionic-global-4538d91c.js} +1 -1
  78. package/dist/cjs/ionic.cjs.js +4 -4
  79. package/dist/cjs/{ios.transition-facbe500.js → ios.transition-7972d9e3.js} +4 -4
  80. package/dist/cjs/{keyboard-fd7db491.js → keyboard-43df0428.js} +1 -1
  81. package/dist/cjs/{keyboard-38f2bb7b.js → keyboard-840107b3.js} +3 -3
  82. package/dist/cjs/{keyboard-controller-50beb83a.js → keyboard-controller-019f42df.js} +2 -2
  83. package/dist/cjs/loader.cjs.js +4 -4
  84. package/dist/cjs/{md.transition-0a7d53f1.js → md.transition-6e61a10f.js} +4 -4
  85. package/dist/cjs/{notch-controller-f4f6af5d.js → notch-controller-c22d1344.js} +1 -1
  86. package/dist/cjs/{overlays-91bb8ff7.js → overlays-d80a2cf2.js} +2 -2
  87. package/dist/cjs/{status-tap-a9d8edcf.js → status-tap-2e9f9c86.js} +1 -1
  88. package/dist/collection/components/checkbox/checkbox.js +2 -0
  89. package/dist/collection/components/datetime/datetime.ios.css +1 -0
  90. package/dist/collection/components/datetime/datetime.md.css +1 -0
  91. package/dist/collection/components/icon/test/dir/heart-broken.svg +0 -0
  92. package/dist/collection/components/input/input.js +2 -0
  93. package/dist/collection/components/item/item.ios.css +85 -15
  94. package/dist/collection/components/item/item.md.css +85 -15
  95. package/dist/collection/components/item/test/basic/item.e2e.js +26 -0
  96. package/dist/collection/components/item/test/disabled/item.e2e.js +0 -1
  97. package/dist/collection/components/item/test/icons/heart-broken.svg +0 -0
  98. package/dist/collection/components/label/label.ios.css +14 -3
  99. package/dist/collection/components/label/label.md.css +14 -3
  100. package/dist/collection/components/note/test/a11y/note.e2e.js +43 -0
  101. package/dist/collection/components/radio/radio.js +5 -2
  102. package/dist/collection/components/radio-group/radio-group.js +24 -0
  103. package/dist/collection/components/radio-group/test/compare-with/radio-group.e2e.js +93 -0
  104. package/dist/collection/components/range/range.js +2 -0
  105. package/dist/collection/components/select/select.ios.css +5 -0
  106. package/dist/collection/components/select/select.js +4 -24
  107. package/dist/collection/components/select/select.md.css +5 -0
  108. package/dist/collection/components/select/test/legacy/wrapping/select.e2e.js +1 -1
  109. package/dist/collection/components/skeleton-text/skeleton-text.js +39 -0
  110. package/dist/collection/components/textarea/textarea.js +2 -0
  111. package/dist/collection/components/toast/animations/md.enter.js +2 -2
  112. package/dist/collection/components/toast/animations/utils.js +9 -14
  113. package/dist/collection/components/toast/toast.ios.css +10 -10
  114. package/dist/collection/components/toast/toast.md.css +10 -0
  115. package/dist/collection/components/toggle/toggle.js +2 -0
  116. package/dist/collection/utils/animation/animation.js +12 -11
  117. package/dist/collection/utils/browser/index.js +0 -22
  118. package/dist/collection/utils/forms/compare-with-utils.js +32 -0
  119. package/dist/collection/utils/forms/index.js +1 -0
  120. package/dist/collection/utils/input-shims/input-shims.js +12 -6
  121. package/dist/collection/utils/menu-controller/index.js +10 -12
  122. package/dist/docs.json +43 -2
  123. package/dist/esm/{animation-8aa13916.js → animation-cf3dd234.js} +13 -12
  124. package/dist/esm/{app-globals-8d413354.js → app-globals-ba8b3a06.js} +1 -1
  125. package/dist/esm/{button-active-c7a04c9a.js → button-active-109ba60d.js} +2 -2
  126. package/dist/esm/{capacitor-b4979570.js → capacitor-f1f25364.js} +1 -1
  127. package/dist/esm/compare-with-utils-363d00b3.js +34 -0
  128. package/dist/esm/{haptic-1243b917.js → haptic-1a66d69f.js} +1 -1
  129. package/dist/esm/{index-d62333a6.js → index-50582f1c.js} +3 -3
  130. package/dist/esm/{index-e2052f20.js → index-6a48e009.js} +12 -14
  131. package/dist/esm/index-a5d50daf.js +7 -0
  132. package/dist/esm/{index-f0cc4e14.js → index-c9e82353.js} +1 -1
  133. package/dist/esm/index.js +10 -10
  134. package/dist/esm/{input-shims-d0c93e5d.js → input-shims-1d767845.js} +14 -9
  135. package/dist/esm/{input.utils-ec063df4.js → input.utils-d04a7212.js} +1 -1
  136. package/dist/esm/ion-accordion_2.entry.js +3 -3
  137. package/dist/esm/ion-action-sheet.entry.js +8 -8
  138. package/dist/esm/ion-alert.entry.js +8 -8
  139. package/dist/esm/ion-app_8.entry.js +11 -11
  140. package/dist/esm/ion-avatar_3.entry.js +2 -2
  141. package/dist/esm/ion-back-button.entry.js +3 -3
  142. package/dist/esm/ion-backdrop.entry.js +2 -2
  143. package/dist/esm/ion-breadcrumb_2.entry.js +3 -3
  144. package/dist/esm/ion-button_2.entry.js +2 -2
  145. package/dist/esm/ion-card_5.entry.js +2 -2
  146. package/dist/esm/ion-checkbox.entry.js +4 -2
  147. package/dist/esm/ion-chip.entry.js +2 -2
  148. package/dist/esm/ion-col_3.entry.js +2 -2
  149. package/dist/esm/ion-datetime-button.entry.js +2 -2
  150. package/dist/esm/ion-datetime_3.entry.js +10 -10
  151. package/dist/esm/ion-fab_3.entry.js +3 -3
  152. package/dist/esm/ion-img.entry.js +2 -2
  153. package/dist/esm/ion-infinite-scroll_2.entry.js +2 -2
  154. package/dist/esm/ion-input.entry.js +8 -6
  155. package/dist/esm/ion-item-option_3.entry.js +2 -2
  156. package/dist/esm/ion-item_8.entry.js +20 -7
  157. package/dist/esm/ion-loading.entry.js +5 -5
  158. package/dist/esm/ion-menu_3.entry.js +8 -8
  159. package/dist/esm/ion-modal.entry.js +9 -9
  160. package/dist/esm/ion-nav_2.entry.js +3 -3
  161. package/dist/esm/ion-picker-column-internal.entry.js +5 -5
  162. package/dist/esm/ion-picker-internal.entry.js +1 -1
  163. package/dist/esm/ion-popover.entry.js +6 -6
  164. package/dist/esm/ion-progress-bar.entry.js +2 -2
  165. package/dist/esm/ion-radio_2.entry.js +8 -3
  166. package/dist/esm/ion-range.entry.js +4 -2
  167. package/dist/esm/ion-refresher_2.entry.js +7 -7
  168. package/dist/esm/ion-reorder_2.entry.js +6 -6
  169. package/dist/esm/ion-ripple-effect.entry.js +2 -2
  170. package/dist/esm/ion-route_4.entry.js +2 -2
  171. package/dist/esm/ion-searchbar.entry.js +3 -3
  172. package/dist/esm/ion-segment_2.entry.js +2 -2
  173. package/dist/esm/ion-select_3.entry.js +11 -30
  174. package/dist/esm/ion-spinner.entry.js +2 -2
  175. package/dist/esm/ion-split-pane.entry.js +2 -2
  176. package/dist/esm/ion-tab-bar_2.entry.js +6 -6
  177. package/dist/esm/ion-tab_2.entry.js +1 -1
  178. package/dist/esm/ion-text.entry.js +2 -2
  179. package/dist/esm/ion-textarea.entry.js +7 -5
  180. package/dist/esm/ion-toast.entry.js +18 -23
  181. package/dist/esm/ion-toggle.entry.js +8 -6
  182. package/dist/esm/{ionic-global-8673c5ce.js → ionic-global-7efdecd0.js} +1 -1
  183. package/dist/esm/ionic.js +5 -5
  184. package/dist/esm/{ios.transition-2fdb6f26.js → ios.transition-e20d71bc.js} +4 -4
  185. package/dist/esm/{keyboard-b551279d.js → keyboard-9f771a04.js} +3 -3
  186. package/dist/esm/{keyboard-b063f012.js → keyboard-b6230bfb.js} +1 -1
  187. package/dist/esm/{keyboard-controller-0c2dce71.js → keyboard-controller-3f0faa10.js} +2 -2
  188. package/dist/esm/loader.js +5 -5
  189. package/dist/esm/{md.transition-6f8b3cd0.js → md.transition-a8469407.js} +4 -4
  190. package/dist/esm/{notch-controller-8c9c0e54.js → notch-controller-3f79197e.js} +1 -1
  191. package/dist/esm/{overlays-d4c45da6.js → overlays-a31c8878.js} +2 -2
  192. package/dist/esm/polyfills/core-js.js +0 -0
  193. package/dist/esm/polyfills/dom.js +0 -0
  194. package/dist/esm/polyfills/es5-html-element.js +0 -0
  195. package/dist/esm/polyfills/index.js +0 -0
  196. package/dist/esm/polyfills/system.js +0 -0
  197. package/dist/esm/{status-tap-71db1a8f.js → status-tap-7ca28a1c.js} +1 -1
  198. package/dist/esm-es5/{animation-8aa13916.js → animation-cf3dd234.js} +1 -1
  199. package/dist/esm-es5/app-globals-ba8b3a06.js +4 -0
  200. package/dist/esm-es5/{button-active-c7a04c9a.js → button-active-109ba60d.js} +1 -1
  201. package/dist/esm-es5/{capacitor-b4979570.js → capacitor-f1f25364.js} +1 -1
  202. package/dist/esm-es5/compare-with-utils-363d00b3.js +4 -0
  203. package/dist/esm-es5/{haptic-1243b917.js → haptic-1a66d69f.js} +1 -1
  204. package/dist/esm-es5/{index-d62333a6.js → index-50582f1c.js} +1 -1
  205. package/dist/esm-es5/index-6a48e009.js +4 -0
  206. package/dist/esm-es5/index-c9e82353.js +4 -0
  207. package/dist/esm-es5/index.js +1 -1
  208. package/dist/esm-es5/input-shims-1d767845.js +4 -0
  209. package/dist/esm-es5/input.utils-d04a7212.js +4 -0
  210. package/dist/esm-es5/ion-accordion_2.entry.js +1 -1
  211. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  212. package/dist/esm-es5/ion-alert.entry.js +1 -1
  213. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  214. package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
  215. package/dist/esm-es5/ion-back-button.entry.js +1 -1
  216. package/dist/esm-es5/ion-backdrop.entry.js +1 -1
  217. package/dist/esm-es5/ion-breadcrumb_2.entry.js +1 -1
  218. package/dist/esm-es5/ion-button_2.entry.js +1 -1
  219. package/dist/esm-es5/ion-card_5.entry.js +1 -1
  220. package/dist/esm-es5/ion-checkbox.entry.js +1 -1
  221. package/dist/esm-es5/ion-chip.entry.js +1 -1
  222. package/dist/esm-es5/ion-col_3.entry.js +1 -1
  223. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  224. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  225. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  226. package/dist/esm-es5/ion-img.entry.js +1 -1
  227. package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
  228. package/dist/esm-es5/ion-input.entry.js +1 -1
  229. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  230. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  231. package/dist/esm-es5/ion-loading.entry.js +1 -1
  232. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  233. package/dist/esm-es5/ion-modal.entry.js +1 -1
  234. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  235. package/dist/esm-es5/ion-picker-column-internal.entry.js +1 -1
  236. package/dist/esm-es5/ion-picker-internal.entry.js +1 -1
  237. package/dist/esm-es5/ion-popover.entry.js +1 -1
  238. package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
  239. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  240. package/dist/esm-es5/ion-range.entry.js +1 -1
  241. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  242. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  243. package/dist/esm-es5/ion-ripple-effect.entry.js +1 -1
  244. package/dist/esm-es5/ion-route_4.entry.js +1 -1
  245. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  246. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  247. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  248. package/dist/esm-es5/ion-spinner.entry.js +1 -1
  249. package/dist/esm-es5/ion-split-pane.entry.js +1 -1
  250. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  251. package/dist/esm-es5/ion-tab_2.entry.js +1 -1
  252. package/dist/esm-es5/ion-text.entry.js +1 -1
  253. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  254. package/dist/esm-es5/ion-toast.entry.js +1 -1
  255. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  256. package/dist/esm-es5/{ionic-global-8673c5ce.js → ionic-global-7efdecd0.js} +1 -1
  257. package/dist/esm-es5/ionic.js +1 -1
  258. package/dist/esm-es5/{ios.transition-2fdb6f26.js → ios.transition-e20d71bc.js} +1 -1
  259. package/dist/esm-es5/{keyboard-b551279d.js → keyboard-9f771a04.js} +1 -1
  260. package/dist/esm-es5/{keyboard-b063f012.js → keyboard-b6230bfb.js} +1 -1
  261. package/dist/esm-es5/{keyboard-controller-0c2dce71.js → keyboard-controller-3f0faa10.js} +1 -1
  262. package/dist/esm-es5/loader.js +1 -1
  263. package/dist/esm-es5/md.transition-a8469407.js +4 -0
  264. package/dist/esm-es5/{notch-controller-8c9c0e54.js → notch-controller-3f79197e.js} +1 -1
  265. package/dist/esm-es5/{overlays-d4c45da6.js → overlays-a31c8878.js} +1 -1
  266. package/dist/esm-es5/{status-tap-71db1a8f.js → status-tap-7ca28a1c.js} +1 -1
  267. package/dist/html.html-data.json +5 -1
  268. package/dist/ionic/index.esm.js +1 -1
  269. package/dist/ionic/ionic.esm.js +1 -1
  270. package/dist/ionic/ionic.js +1 -1
  271. package/dist/ionic/{p-793625e5.system.entry.js → p-00a10b94.system.entry.js} +1 -1
  272. package/dist/ionic/{p-1e87e3fb.system.js → p-0148306b.system.js} +1 -1
  273. package/dist/ionic/{p-c096895d.system.js → p-02663394.system.js} +1 -1
  274. package/dist/ionic/{p-d1ac0094.entry.js → p-03a36678.entry.js} +1 -1
  275. package/dist/ionic/{p-8c44e074.system.entry.js → p-0becf7b5.system.entry.js} +1 -1
  276. package/dist/ionic/{p-3d074f21.system.js → p-0c40f7d3.system.js} +1 -1
  277. package/dist/ionic/{p-44723fa5.entry.js → p-0e8335b9.entry.js} +1 -1
  278. package/dist/ionic/p-11104d0d.entry.js +4 -0
  279. package/dist/ionic/{p-81c818e7.js → p-11cb4e19.js} +1 -1
  280. package/dist/ionic/{p-ef0d410f.entry.js → p-12d62aa9.entry.js} +1 -1
  281. package/dist/ionic/p-139bd79d.system.entry.js +4 -0
  282. package/dist/ionic/{p-3b3046e8.system.js → p-13dd7d20.system.js} +1 -1
  283. package/dist/ionic/{p-d9c86724.system.entry.js → p-152998a6.system.entry.js} +1 -1
  284. package/dist/ionic/{p-1acd1607.system.entry.js → p-15512a5e.system.entry.js} +1 -1
  285. package/dist/ionic/{p-276afddd.js → p-1667596c.js} +1 -1
  286. package/dist/ionic/{p-076e622f.system.entry.js → p-1b5b6845.system.entry.js} +1 -1
  287. package/dist/ionic/{p-3878d22f.system.entry.js → p-1e59dd04.system.entry.js} +1 -1
  288. package/dist/ionic/{p-2954d245.system.entry.js → p-20ff4d7f.system.entry.js} +1 -1
  289. package/dist/ionic/{p-b95cc39b.entry.js → p-25b8d65c.entry.js} +1 -1
  290. package/dist/ionic/p-265fec8a.entry.js +4 -0
  291. package/dist/ionic/{p-6a61d423.system.entry.js → p-27923249.system.entry.js} +1 -1
  292. package/dist/ionic/{p-6008efa0.entry.js → p-2d86b19a.entry.js} +1 -1
  293. package/dist/ionic/{p-c5106edf.entry.js → p-2fb115dc.entry.js} +1 -1
  294. package/dist/ionic/{p-4f91b9c6.js → p-307963db.js} +1 -1
  295. package/dist/ionic/p-314c4dee.js +4 -0
  296. package/dist/ionic/p-3554b264.js +4 -0
  297. package/dist/ionic/{p-08dcf03a.entry.js → p-35787a6f.entry.js} +1 -1
  298. package/dist/ionic/{p-14be0381.system.entry.js → p-35e25602.system.entry.js} +1 -1
  299. package/dist/ionic/{p-202654b4.system.entry.js → p-3962542f.system.entry.js} +1 -1
  300. package/dist/ionic/{p-0993782a.system.entry.js → p-3a769110.system.entry.js} +1 -1
  301. package/dist/ionic/p-3afb9c3d.entry.js +4 -0
  302. package/dist/ionic/{p-f323209c.system.entry.js → p-3e1deb37.system.entry.js} +1 -1
  303. package/dist/ionic/{p-b977b57a.js → p-3e8d7ed8.js} +1 -1
  304. package/dist/ionic/{p-1289df52.entry.js → p-3fc0b7ba.entry.js} +1 -1
  305. package/dist/ionic/{p-b4085a03.system.entry.js → p-400a78f3.system.entry.js} +1 -1
  306. package/dist/ionic/p-40dd5937.system.js +4 -0
  307. package/dist/ionic/{p-da6b2907.entry.js → p-4430713b.entry.js} +1 -1
  308. package/dist/ionic/{p-93a2c76b.entry.js → p-47826f19.entry.js} +1 -1
  309. package/dist/ionic/p-494e75ad.js +4 -0
  310. package/dist/ionic/{p-091702af.system.entry.js → p-4c50b357.system.entry.js} +1 -1
  311. package/dist/ionic/{p-cc68ad40.system.js → p-4c75cb48.system.js} +1 -1
  312. package/dist/ionic/p-4e3c07a6.system.js +4 -0
  313. package/dist/ionic/p-4e4ee05e.js +4 -0
  314. package/dist/ionic/{p-a134a81b.system.entry.js → p-50375f3b.system.entry.js} +1 -1
  315. package/dist/ionic/{p-40f5a803.entry.js → p-510bc27b.entry.js} +1 -1
  316. package/dist/ionic/{p-9c933855.system.entry.js → p-51b94085.system.entry.js} +1 -1
  317. package/dist/ionic/{p-6e4225ed.entry.js → p-53b1930e.entry.js} +1 -1
  318. package/dist/ionic/p-561cc050.system.js +4 -0
  319. package/dist/ionic/p-57b14769.js +4 -0
  320. package/dist/ionic/{p-8cf94fc1.js → p-5885e9af.js} +1 -1
  321. package/dist/ionic/{p-889118cf.system.entry.js → p-59107f99.system.entry.js} +1 -1
  322. package/dist/ionic/{p-8f518e79.entry.js → p-5a7df436.entry.js} +1 -1
  323. package/dist/ionic/{p-4639874e.system.js → p-5b978c94.system.js} +2 -2
  324. package/dist/ionic/{p-ae2e4e30.system.entry.js → p-5c7107b4.system.entry.js} +1 -1
  325. package/dist/ionic/{p-959e7a7a.js → p-60f25049.js} +1 -1
  326. package/dist/ionic/p-647fcea8.entry.js +4 -0
  327. package/dist/ionic/{p-cd1c8ab2.entry.js → p-6825ff8d.entry.js} +1 -1
  328. package/dist/ionic/{p-7fd77f56.system.entry.js → p-696c63fb.system.entry.js} +1 -1
  329. package/dist/ionic/{p-b923f3d7.js → p-6a309574.js} +1 -1
  330. package/dist/ionic/{p-f2743f0f.system.entry.js → p-6abde4f1.system.entry.js} +1 -1
  331. package/dist/ionic/p-6d3ba3ba.system.entry.js +4 -0
  332. package/dist/ionic/p-6dc21cd1.system.entry.js +4 -0
  333. package/dist/ionic/{p-3299adbf.system.entry.js → p-70bf6086.system.entry.js} +1 -1
  334. package/dist/ionic/p-70dcf429.js +4 -0
  335. package/dist/ionic/p-710cea83.system.js +4 -0
  336. package/dist/ionic/{p-d0c701d0.system.entry.js → p-71e70a57.system.entry.js} +1 -1
  337. package/dist/ionic/p-73df8d76.system.js +4 -0
  338. package/dist/ionic/{p-f33808d4.entry.js → p-75338011.entry.js} +1 -1
  339. package/dist/ionic/p-7ac30f6a.entry.js +4 -0
  340. package/dist/ionic/p-7acd17bc.entry.js +4 -0
  341. package/dist/ionic/p-7d68e4ea.entry.js +4 -0
  342. package/dist/ionic/{p-ce62bf2c.system.entry.js → p-7dafac2c.system.entry.js} +1 -1
  343. package/dist/ionic/{p-3632220b.system.js → p-7def197f.system.js} +1 -1
  344. package/dist/ionic/p-8140a084.entry.js +4 -0
  345. package/dist/ionic/{p-7e6cf80c.entry.js → p-89703003.entry.js} +1 -1
  346. package/dist/ionic/{p-10a2ab8c.system.entry.js → p-8a9760f7.system.entry.js} +1 -1
  347. package/dist/ionic/{p-b1200f55.entry.js → p-8be2b964.entry.js} +1 -1
  348. package/dist/ionic/p-8e7ff561.entry.js +4 -0
  349. package/dist/ionic/{p-153ea88b.system.entry.js → p-90020ef0.system.entry.js} +1 -1
  350. package/dist/ionic/{p-b4b4bb29.system.js → p-9292fd42.system.js} +1 -1
  351. package/dist/ionic/p-92ac915c.system.js +4 -0
  352. package/dist/ionic/{p-88cfa8f1.system.entry.js → p-9471d511.system.entry.js} +1 -1
  353. package/dist/ionic/{p-38fbf9f5.system.entry.js → p-957f3028.system.entry.js} +1 -1
  354. package/dist/ionic/{p-41477ad9.system.js → p-958f1c70.system.js} +1 -1
  355. package/dist/ionic/{p-8c63eccf.system.js → p-98c70e3c.system.js} +1 -1
  356. package/dist/ionic/{p-e23c3d22.entry.js → p-9939c98e.entry.js} +1 -1
  357. package/dist/ionic/{p-8708a93c.entry.js → p-999a7271.entry.js} +1 -1
  358. package/dist/ionic/{p-a30595f3.system.entry.js → p-9b34caa0.system.entry.js} +1 -1
  359. package/dist/ionic/{p-c2af8468.system.entry.js → p-a03566c4.system.entry.js} +2 -2
  360. package/dist/ionic/{p-419eb426.js → p-a135e3ba.js} +1 -1
  361. package/dist/ionic/{p-1df460d5.system.entry.js → p-a3434028.system.entry.js} +1 -1
  362. package/dist/ionic/{p-cd3a87bd.system.entry.js → p-a6880f79.system.entry.js} +1 -1
  363. package/dist/ionic/p-a6b819ca.entry.js +4 -0
  364. package/dist/ionic/{p-5504ca9b.system.js → p-abaa9b48.system.js} +1 -1
  365. package/dist/ionic/{p-ab4cff27.system.js → p-aec8a70a.system.js} +1 -1
  366. package/dist/ionic/{p-d59f70db.entry.js → p-b3d50a72.entry.js} +1 -1
  367. package/dist/ionic/{p-31589ed7.entry.js → p-b86c6c05.entry.js} +1 -1
  368. package/dist/ionic/{p-ecbc7728.system.entry.js → p-bc48e521.system.entry.js} +1 -1
  369. package/dist/ionic/{p-f3d770d2.entry.js → p-bc6e32d2.entry.js} +1 -1
  370. package/dist/ionic/{p-5b9cb91d.system.entry.js → p-bedc16f0.system.entry.js} +1 -1
  371. package/dist/ionic/{p-0335e66c.entry.js → p-bf3396e1.entry.js} +1 -1
  372. package/dist/ionic/{p-f30dabf4.entry.js → p-c09fa14d.entry.js} +1 -1
  373. package/dist/ionic/p-c2db1374.system.js +4 -0
  374. package/dist/ionic/{p-9da6eef4.entry.js → p-c2e199ac.entry.js} +1 -1
  375. package/dist/ionic/{p-55a8f9a3.entry.js → p-c32a6c04.entry.js} +1 -1
  376. package/dist/ionic/p-c3547c7a.system.js +4 -0
  377. package/dist/ionic/{p-952c64ea.entry.js → p-c4381a06.entry.js} +1 -1
  378. package/dist/ionic/{p-7eaa28eb.system.entry.js → p-c7138053.system.entry.js} +1 -1
  379. package/dist/ionic/{p-287d76e0.entry.js → p-ce20c101.entry.js} +1 -1
  380. package/dist/ionic/{p-fc758470.entry.js → p-d2de097b.entry.js} +1 -1
  381. package/dist/ionic/{p-a7c33806.entry.js → p-d3278cb8.entry.js} +1 -1
  382. package/dist/ionic/p-d54a8393.system.entry.js +4 -0
  383. package/dist/ionic/{p-bd946be0.entry.js → p-d73eb00e.entry.js} +1 -1
  384. package/dist/ionic/{p-da26ba41.js → p-df18d20d.js} +1 -1
  385. package/dist/ionic/{p-176a386b.system.entry.js → p-e4d66e2d.system.entry.js} +1 -1
  386. package/dist/ionic/{p-094dbfa5.entry.js → p-e53f2605.entry.js} +1 -1
  387. package/dist/ionic/{p-3bad5c1a.js → p-e5fd9f10.js} +1 -1
  388. package/dist/ionic/{p-0d8e9076.system.entry.js → p-e66f7d10.system.entry.js} +1 -1
  389. package/dist/ionic/{p-ccdcb022.system.js → p-e7d20dfb.system.js} +1 -1
  390. package/dist/ionic/{p-664cb3ad.system.entry.js → p-e91c7eb4.system.entry.js} +1 -1
  391. package/dist/ionic/p-e9fe3c8b.system.entry.js +4 -0
  392. package/dist/ionic/p-ea78392c.js +4 -0
  393. package/dist/ionic/{p-ce9bf0ed.entry.js → p-ebdaf11b.entry.js} +1 -1
  394. package/dist/ionic/{p-51086b36.system.entry.js → p-ed8a02a2.system.entry.js} +1 -1
  395. package/dist/ionic/{p-8bda8767.js → p-edd568c5.js} +1 -1
  396. package/dist/ionic/{p-1b16c2ef.system.entry.js → p-eec1aa12.system.entry.js} +1 -1
  397. package/dist/ionic/p-f4ccdc77.js +4 -0
  398. package/dist/ionic/{p-4d06fd5b.entry.js → p-f6d089a7.entry.js} +1 -1
  399. package/dist/ionic/p-f7769c83.js +4 -0
  400. package/dist/ionic/p-f7bc6157.system.entry.js +4 -0
  401. package/dist/ionic/{p-d27ade6f.system.entry.js → p-f8febce9.system.entry.js} +1 -1
  402. package/dist/ionic/{p-bba2ce59.system.js → p-f9a641fa.system.js} +1 -1
  403. package/dist/ionic/p-fa67d712.entry.js +4 -0
  404. package/dist/ionic/p-fdcd4618.entry.js +4 -0
  405. package/dist/node_modules/ionicons/dist/collection/components/icon/icon.css +144 -0
  406. package/dist/types/components/radio-group/radio-group-interface.d.ts +1 -0
  407. package/dist/types/components/radio-group/radio-group.d.ts +8 -1
  408. package/dist/types/components/router/router.d.ts +2 -1
  409. package/dist/types/components/select/select.d.ts +4 -1
  410. package/dist/types/components/skeleton-text/skeleton-text.d.ts +9 -1
  411. package/dist/types/components/toast/animations/utils.d.ts +6 -4
  412. package/dist/types/components.d.ts +27 -4
  413. package/dist/types/interface.d.ts +1 -5
  414. package/dist/types/utils/animation/animation-interface.d.ts +4 -4
  415. package/dist/types/utils/browser/index.d.ts +11 -2
  416. package/dist/types/utils/forms/compare-with-utils.d.ts +11 -0
  417. package/dist/types/utils/forms/index.d.ts +1 -0
  418. package/dist/types/utils/hardware-back-button.d.ts +4 -0
  419. package/dist/types/utils/test/playwright/page/utils/goto.d.ts +1 -1
  420. package/hydrate/index.js +102 -93
  421. package/package.json +30 -31
  422. package/dist/cjs/index-306a7476.js +0 -32
  423. package/dist/collection/components/item/test/text/item.e2e.js +0 -14
  424. package/dist/esm/index-7a14ecec.js +0 -29
  425. package/dist/esm-es5/app-globals-8d413354.js +0 -4
  426. package/dist/esm-es5/index-e2052f20.js +0 -4
  427. package/dist/esm-es5/index-f0cc4e14.js +0 -4
  428. package/dist/esm-es5/input-shims-d0c93e5d.js +0 -4
  429. package/dist/esm-es5/input.utils-ec063df4.js +0 -4
  430. package/dist/esm-es5/md.transition-6f8b3cd0.js +0 -4
  431. package/dist/ionic/p-02863edb.system.js +0 -4
  432. package/dist/ionic/p-0f23c3a5.entry.js +0 -4
  433. package/dist/ionic/p-0f4f11eb.entry.js +0 -4
  434. package/dist/ionic/p-2ac243b7.entry.js +0 -4
  435. package/dist/ionic/p-2e8e0045.js +0 -4
  436. package/dist/ionic/p-3602001b.system.js +0 -4
  437. package/dist/ionic/p-3daa6ecf.js +0 -4
  438. package/dist/ionic/p-4c724478.entry.js +0 -4
  439. package/dist/ionic/p-5916b355.system.entry.js +0 -4
  440. package/dist/ionic/p-67eecef4.system.js +0 -4
  441. package/dist/ionic/p-843fe6e3.entry.js +0 -4
  442. package/dist/ionic/p-8d9c5be5.system.entry.js +0 -4
  443. package/dist/ionic/p-910c1904.system.entry.js +0 -4
  444. package/dist/ionic/p-94154db4.js +0 -4
  445. package/dist/ionic/p-97c65aa5.js +0 -4
  446. package/dist/ionic/p-9ab6f3e6.system.js +0 -4
  447. package/dist/ionic/p-9c7a56f0.entry.js +0 -4
  448. package/dist/ionic/p-9e4bb700.entry.js +0 -4
  449. package/dist/ionic/p-a3b6e1b2.entry.js +0 -4
  450. package/dist/ionic/p-a809a205.js +0 -4
  451. package/dist/ionic/p-ad227931.system.js +0 -4
  452. package/dist/ionic/p-c3b62be8.system.entry.js +0 -4
  453. package/dist/ionic/p-c75422d5.entry.js +0 -4
  454. package/dist/ionic/p-c87d155e.entry.js +0 -4
  455. package/dist/ionic/p-cbe7738f.entry.js +0 -4
  456. package/dist/ionic/p-cc196b34.js +0 -4
  457. package/dist/ionic/p-d05b431a.system.entry.js +0 -4
  458. package/dist/ionic/p-d1de1188.js +0 -4
  459. package/dist/ionic/p-d37d3ebc.system.entry.js +0 -4
  460. package/dist/ionic/p-dee844d7.js +0 -4
  461. package/dist/ionic/p-f47f2024.entry.js +0 -4
  462. package/dist/ionic/p-f9336ef9.system.js +0 -4
  463. package/dist/ionic/p-ff5a10f9.system.js +0 -4
  464. /package/dist/cjs/{index-677c4d13.js → index-09471526.js} +0 -0
  465. /package/dist/cjs/{index-53026db1.js → index-73186843.js} +0 -0
  466. /package/dist/esm/{index-8eb0239b.js → index-4392ebcb.js} +0 -0
  467. /package/dist/esm/{index-4d016006.js → index-c132c5f1.js} +0 -0
  468. /package/dist/esm-es5/{index-8eb0239b.js → index-4392ebcb.js} +0 -0
  469. /package/dist/esm-es5/{index-7a14ecec.js → index-a5d50daf.js} +0 -0
  470. /package/dist/esm-es5/{index-4d016006.js → index-c132c5f1.js} +0 -0
  471. /package/dist/ionic/{p-0e94957a.system.js → p-792919fd.system.js} +0 -0
  472. /package/dist/ionic/{p-b347cfd1.js → p-7b30edcc.js} +0 -0
  473. /package/dist/ionic/{p-0c55ffe1.system.js → p-8050b9b9.system.js} +0 -0
  474. /package/dist/ionic/{p-2814c8e5.system.js → p-dab42c1b.system.js} +0 -0
  475. /package/dist/ionic/{p-e90d610c.js → p-ea96fa73.js} +0 -0
  476. /package/dist/ionic/{p-8a40746c.js → p-f5e886cd.js} +0 -0
@@ -110,6 +110,11 @@
110
110
  overflow: hidden;
111
111
  }
112
112
 
113
+ :host(.in-item:not(.legacy-select)) {
114
+ flex: 1 1 0;
115
+ width: 0;
116
+ }
117
+
113
118
  :host(.in-item.legacy-select) {
114
119
  position: static;
115
120
  max-width: 45%;
@@ -2,7 +2,7 @@
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
4
  import { Host, h, forceUpdate } from "@stencil/core";
5
- import { createLegacyFormController, createNotchController } from "../../utils/forms/index";
5
+ import { compareOptions, createLegacyFormController, createNotchController, isOptionSelected } from "../../utils/forms/index";
6
6
  import { findItemLabel, focusElement, getAriaLabel, renderHiddenInput, inheritAttributes } from "../../utils/helpers";
7
7
  import { printIonWarning } from "../../utils/logging/index";
8
8
  import { actionSheetController, alertController, popoverController } from "../../utils/overlays";
@@ -465,6 +465,8 @@ export class Select {
465
465
  style['has-placeholder'] = this.placeholder !== undefined;
466
466
  style['has-value'] = this.hasValue();
467
467
  style['has-focus'] = this.isExpanded;
468
+ // TODO(FW-3194): remove this
469
+ style['legacy'] = !!this.legacy;
468
470
  }
469
471
  this.ionStyle.emit(style);
470
472
  }
@@ -737,7 +739,7 @@ Developers can use the "legacy" property to continue using the legacy form marku
737
739
  "optional": true,
738
740
  "docs": {
739
741
  "tags": [],
740
- "text": "A property name or function used to compare object values"
742
+ "text": "This property allows developers to specify a custom function or property\nname for comparing objects when determining the selected option in the\nion-select. When not specified, the default behavior will use object\nequality (===) for comparison."
741
743
  },
742
744
  "attribute": "compare-with",
743
745
  "reflect": false
@@ -1215,17 +1217,6 @@ Developers can use the "legacy" property to continue using the legacy form marku
1215
1217
  }];
1216
1218
  }
1217
1219
  }
1218
- const isOptionSelected = (currentValue, compareValue, compareWith) => {
1219
- if (currentValue === undefined) {
1220
- return false;
1221
- }
1222
- if (Array.isArray(currentValue)) {
1223
- return currentValue.some((val) => compareOptions(val, compareValue, compareWith));
1224
- }
1225
- else {
1226
- return compareOptions(currentValue, compareValue, compareWith);
1227
- }
1228
- };
1229
1220
  const getOptionValue = (el) => {
1230
1221
  const value = el.value;
1231
1222
  return value === undefined ? el.textContent || '' : value;
@@ -1239,17 +1230,6 @@ const parseValue = (value) => {
1239
1230
  }
1240
1231
  return value.toString();
1241
1232
  };
1242
- const compareOptions = (currentValue, compareValue, compareWith) => {
1243
- if (typeof compareWith === 'function') {
1244
- return compareWith(currentValue, compareValue);
1245
- }
1246
- else if (typeof compareWith === 'string') {
1247
- return currentValue[compareWith] === compareValue[compareWith];
1248
- }
1249
- else {
1250
- return Array.isArray(compareValue) ? compareValue.includes(currentValue) : currentValue === compareValue;
1251
- }
1252
- };
1253
1233
  const generateText = (opts, value, compareWith) => {
1254
1234
  if (value === undefined) {
1255
1235
  return '';
@@ -110,6 +110,11 @@
110
110
  overflow: hidden;
111
111
  }
112
112
 
113
+ :host(.in-item:not(.legacy-select)) {
114
+ flex: 1 1 0;
115
+ width: 0;
116
+ }
117
+
113
118
  :host(.in-item.legacy-select) {
114
119
  position: static;
115
120
  max-width: 45%;
@@ -27,7 +27,7 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
27
27
  await page.setContent(`
28
28
  <ion-item>
29
29
  <ion-label>Really long label should not wrap</ion-label>
30
- <ion-select value="wrap" class="ion-text-wrap">
30
+ <ion-select value="wrap" legacy="true" class="ion-text-wrap">
31
31
  <ion-select-option value="wrap">Should wrap value only when label exists and really long text exists to make it wrap the text</ion-select-option>
32
32
  </ion-select>
33
33
  </ion-item>
@@ -9,6 +9,18 @@ export class SkeletonText {
9
9
  constructor() {
10
10
  this.animated = false;
11
11
  }
12
+ componentWillLoad() {
13
+ this.emitStyle();
14
+ }
15
+ emitStyle() {
16
+ // The emitted property is used by item in order
17
+ // to add the item-skeleton-text class which applies
18
+ // overflow: hidden to its label
19
+ const style = {
20
+ 'skeleton-text': true,
21
+ };
22
+ this.ionStyle.emit(style);
23
+ }
12
24
  render() {
13
25
  const animated = this.animated && config.getBoolean('animated', true);
14
26
  const inMedia = hostContext('ion-avatar', this.el) || hostContext('ion-thumbnail', this.el);
@@ -53,5 +65,32 @@ export class SkeletonText {
53
65
  }
54
66
  };
55
67
  }
68
+ static get events() {
69
+ return [{
70
+ "method": "ionStyle",
71
+ "name": "ionStyle",
72
+ "bubbles": true,
73
+ "cancelable": true,
74
+ "composed": true,
75
+ "docs": {
76
+ "tags": [{
77
+ "name": "internal",
78
+ "text": undefined
79
+ }],
80
+ "text": "Emitted when the styles change."
81
+ },
82
+ "complexType": {
83
+ "original": "StyleEventDetail",
84
+ "resolved": "StyleEventDetail",
85
+ "references": {
86
+ "StyleEventDetail": {
87
+ "location": "import",
88
+ "path": "../../interface",
89
+ "id": "src/interface.d.ts::StyleEventDetail"
90
+ }
91
+ }
92
+ }
93
+ }];
94
+ }
56
95
  static get elementRef() { return "el"; }
57
96
  }
@@ -189,6 +189,8 @@ export class Textarea {
189
189
  'has-placeholder': this.placeholder !== undefined,
190
190
  'has-value': this.hasValue(),
191
191
  'has-focus': this.hasFocus,
192
+ // TODO(FW-2876): remove this
193
+ legacy: !!this.legacy,
192
194
  });
193
195
  }
194
196
  }
@@ -15,7 +15,7 @@ export const mdEnterAnimation = (baseEl, opts) => {
15
15
  wrapperAnimation.addElement(wrapperEl);
16
16
  switch (position) {
17
17
  case 'top':
18
- wrapperEl.style.top = top;
18
+ wrapperEl.style.setProperty('transform', `translateY(${top})`);
19
19
  wrapperAnimation.fromTo('opacity', 0.01, 1);
20
20
  break;
21
21
  case 'middle':
@@ -24,7 +24,7 @@ export const mdEnterAnimation = (baseEl, opts) => {
24
24
  wrapperAnimation.fromTo('opacity', 0.01, 1);
25
25
  break;
26
26
  default:
27
- wrapperEl.style.bottom = bottom;
27
+ wrapperEl.style.setProperty('transform', `translateY(${bottom})`);
28
28
  wrapperAnimation.fromTo('opacity', 0.01, 1);
29
29
  break;
30
30
  }
@@ -7,10 +7,12 @@ import { printIonWarning } from "../../../utils/logging/index";
7
7
  * Calculate the CSS top and bottom position of the toast, to be used
8
8
  * as starting points for the animation keyframes.
9
9
  *
10
- * Note that MD animates bottom-positioned toasts using style.bottom,
11
- * which calculates from the bottom edge of the screen, while iOS uses
12
- * translateY, which calculates from the top edge of the screen. This
13
- * is why the bottom calculates differ slightly between modes.
10
+ * The default animations for both MD and iOS
11
+ * use translateY, which calculates from the
12
+ * top edge of the screen. This behavior impacts
13
+ * how we compute the offset when a toast has
14
+ * position='bottom' since we need to calculate from
15
+ * the bottom edge of the screen instead.
14
16
  *
15
17
  * @param position The value of the toast's position prop.
16
18
  * @param positionAnchor The element the toast should be anchored to,
@@ -25,7 +27,7 @@ export function getAnimationPosition(position, positionAnchor, mode, toast) {
25
27
  */
26
28
  let offset;
27
29
  if (mode === 'md') {
28
- offset = 8;
30
+ offset = position === 'top' ? 8 : -8;
29
31
  }
30
32
  else {
31
33
  offset = position === 'top' ? 10 : -10;
@@ -48,12 +50,7 @@ export function getAnimationPosition(position, positionAnchor, mode, toast) {
48
50
  * to the top edge of the anchor. We want to calculate from the
49
51
  * bottom edge of the screen instead.
50
52
  */
51
- if (mode === 'md') {
52
- offset += win.innerHeight - box.top;
53
- }
54
- else {
55
- offset -= win.innerHeight - box.top;
56
- }
53
+ offset -= win.innerHeight - box.top;
57
54
  }
58
55
  /**
59
56
  * We don't include safe area here because that should already be
@@ -67,9 +64,7 @@ export function getAnimationPosition(position, positionAnchor, mode, toast) {
67
64
  else {
68
65
  return {
69
66
  top: `calc(${offset}px + var(--ion-safe-area-top, 0px))`,
70
- bottom: mode === 'md'
71
- ? `calc(${offset}px + var(--ion-safe-area-bottom, 0px))`
72
- : `calc(${offset}px - var(--ion-safe-area-bottom, 0px))`,
67
+ bottom: `calc(${offset}px - var(--ion-safe-area-bottom, 0px))`,
73
68
  };
74
69
  }
75
70
  }
@@ -167,6 +167,16 @@
167
167
  }
168
168
  }
169
169
 
170
+ .toast-wrapper.toast-top {
171
+ transform: translate3d(0, -100%, 0);
172
+ top: 0;
173
+ }
174
+
175
+ .toast-wrapper.toast-bottom {
176
+ transform: translate3d(0, 100%, 0);
177
+ bottom: 0;
178
+ }
179
+
170
180
  .toast-container {
171
181
  display: flex;
172
182
  align-items: center;
@@ -299,20 +309,10 @@
299
309
  background: rgba(var(--ion-color-base-rgb), 0.8);
300
310
  }
301
311
  }
302
- .toast-wrapper.toast-top {
303
- transform: translate3d(0, -100%, 0);
304
- top: 0;
305
- }
306
-
307
312
  .toast-wrapper.toast-middle {
308
313
  opacity: 0.01;
309
314
  }
310
315
 
311
- .toast-wrapper.toast-bottom {
312
- transform: translate3d(0, 100%, 0);
313
- bottom: 0;
314
- }
315
-
316
316
  .toast-content {
317
317
  -webkit-padding-start: 15px;
318
318
  padding-inline-start: 15px;
@@ -167,6 +167,16 @@
167
167
  }
168
168
  }
169
169
 
170
+ .toast-wrapper.toast-top {
171
+ transform: translate3d(0, -100%, 0);
172
+ top: 0;
173
+ }
174
+
175
+ .toast-wrapper.toast-bottom {
176
+ transform: translate3d(0, 100%, 0);
177
+ bottom: 0;
178
+ }
179
+
170
180
  .toast-container {
171
181
  display: flex;
172
182
  align-items: center;
@@ -123,6 +123,8 @@ export class Toggle {
123
123
  if (this.legacyFormController.hasLegacyControl()) {
124
124
  this.ionStyle.emit({
125
125
  'interactive-disabled': this.disabled,
126
+ // TODO(FW-2990): remove this
127
+ legacy: !!this.legacy,
126
128
  });
127
129
  }
128
130
  }
@@ -463,6 +463,16 @@ export const createAnimation = (animationId) => {
463
463
  }
464
464
  }
465
465
  });
466
+ /**
467
+ * Clean up any value coercion before
468
+ * the user callbacks fire otherwise
469
+ * they may get stale values. For example,
470
+ * if someone calls progressStart(0) the
471
+ * animation may still be reversed.
472
+ */
473
+ forceDurationValue = undefined;
474
+ forceDirectionValue = undefined;
475
+ forceDelayValue = undefined;
466
476
  onFinishCallbacks.forEach((onFinishCallback) => {
467
477
  return onFinishCallback.c(currentStep, ani);
468
478
  });
@@ -667,17 +677,8 @@ export const createAnimation = (animationId) => {
667
677
  update(false, false);
668
678
  }
669
679
  }
670
- if (playTo !== undefined) {
671
- onFinish(() => {
672
- forceDurationValue = undefined;
673
- forceDirectionValue = undefined;
674
- forceDelayValue = undefined;
675
- }, {
676
- oneTimeCallback: true,
677
- });
678
- if (!parentAnimation) {
679
- play();
680
- }
680
+ if (playTo !== undefined && !parentAnimation) {
681
+ play();
681
682
  }
682
683
  return ani;
683
684
  };
@@ -1,27 +1,5 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- /**
5
- * When accessing the document or window, it is important
6
- * to account for SSR applications where the
7
- * window is not available. Code that accesses
8
- * window when it is not available will crash.
9
- * Even checking if `window === undefined` will cause
10
- * apps to crash in SSR.
11
- *
12
- * Use win below to access an SSR-safe version
13
- * of the window.
14
- *
15
- * Example 1:
16
- * Before:
17
- * if (window.innerWidth > 768) { ... }
18
- *
19
- * After:
20
- * import { win } from 'path/to/this/file';
21
- * if (win?.innerWidth > 768) { ... }
22
- *
23
- * Note: Code inside of this if-block will
24
- * not run in an SSR environment.
25
- */
26
4
  export const win = typeof window !== 'undefined' ? window : undefined;
27
5
  export const doc = typeof document !== 'undefined' ? document : undefined;
@@ -0,0 +1,32 @@
1
+ /*!
2
+ * (C) Ionic http://ionicframework.com - MIT License
3
+ */
4
+ export const compareOptions = (currentValue, compareValue, compareWith) => {
5
+ if (typeof compareWith === 'function') {
6
+ return compareWith(currentValue, compareValue);
7
+ }
8
+ else if (typeof compareWith === 'string') {
9
+ return currentValue[compareWith] === compareValue[compareWith];
10
+ }
11
+ else {
12
+ return Array.isArray(compareValue) ? compareValue.includes(currentValue) : currentValue === compareValue;
13
+ }
14
+ };
15
+ /**
16
+ * Compares a value against the current value to determine if it is selected.
17
+ *
18
+ * @param currentValue The current value of the control.
19
+ * @param compareValue The value to compare against.
20
+ * @param compareWith The function to use to compare values.
21
+ */
22
+ export const isOptionSelected = (currentValue, compareValue, compareWith) => {
23
+ if (currentValue === undefined) {
24
+ return false;
25
+ }
26
+ if (Array.isArray(currentValue)) {
27
+ return currentValue.some((val) => compareOptions(val, compareValue, compareWith));
28
+ }
29
+ else {
30
+ return compareOptions(currentValue, compareValue, compareWith);
31
+ }
32
+ };
@@ -3,3 +3,4 @@
3
3
  */
4
4
  export * from './form-controller';
5
5
  export * from './notch-controller';
6
+ export * from './compare-with-utils';
@@ -1,6 +1,7 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
+ import { doc } from "../browser/index";
4
5
  import { findClosestIonContent } from "../content";
5
6
  import { componentOnReady } from "../helpers";
6
7
  import { Keyboard } from "../native/keyboard";
@@ -11,7 +12,13 @@ const INPUT_BLURRING = true;
11
12
  const SCROLL_ASSIST = true;
12
13
  const HIDE_CARET = true;
13
14
  export const startInputShims = async (config, platform) => {
14
- const doc = document;
15
+ /**
16
+ * If doc is undefined then we are in an SSR environment
17
+ * where input shims do not apply.
18
+ */
19
+ if (doc === undefined) {
20
+ return;
21
+ }
15
22
  const isIOS = platform === 'ios';
16
23
  const isAndroid = platform === 'android';
17
24
  /**
@@ -90,11 +97,10 @@ export const startInputShims = async (config, platform) => {
90
97
  for (const input of inputs) {
91
98
  registerInput(input);
92
99
  }
93
- // TODO(FW-2832): types
94
- doc.addEventListener('ionInputDidLoad', ((ev) => {
100
+ doc.addEventListener('ionInputDidLoad', (ev) => {
95
101
  registerInput(ev.detail);
96
- }));
97
- doc.addEventListener('ionInputDidUnload', ((ev) => {
102
+ });
103
+ doc.addEventListener('ionInputDidUnload', (ev) => {
98
104
  unregisterInput(ev.detail);
99
- }));
105
+ });
100
106
  };
@@ -1,8 +1,9 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import { printIonWarning } from "../logging/index";
4
+ import { doc } from "../browser/index";
5
5
  import { MENU_BACK_BUTTON_PRIORITY } from "../hardware-back-button";
6
+ import { printIonWarning } from "../logging/index";
6
7
  import { componentOnReady } from "../helpers";
7
8
  import { menuOverlayAnimation } from "./animations/overlay";
8
9
  import { menuPushAnimation } from "./animations/push";
@@ -184,17 +185,14 @@ const createMenuController = () => {
184
185
  registerAnimation('reveal', menuRevealAnimation);
185
186
  registerAnimation('push', menuPushAnimation);
186
187
  registerAnimation('overlay', menuOverlayAnimation);
187
- if (typeof document !== 'undefined') {
188
- document.addEventListener('ionBackButton', (ev) => {
189
- // TODO(FW-2832): type
190
- const openMenu = _getOpenSync();
191
- if (openMenu) {
192
- ev.detail.register(MENU_BACK_BUTTON_PRIORITY, () => {
193
- return openMenu.close();
194
- });
195
- }
196
- });
197
- }
188
+ doc === null || doc === void 0 ? void 0 : doc.addEventListener('ionBackButton', (ev) => {
189
+ const openMenu = _getOpenSync();
190
+ if (openMenu) {
191
+ ev.detail.register(MENU_BACK_BUTTON_PRIORITY, () => {
192
+ return openMenu.close();
193
+ });
194
+ }
195
+ });
198
196
  return {
199
197
  registerAnimation,
200
198
  get,
package/dist/docs.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "timestamp": "2023-11-03T17:18:50",
2
+ "timestamp": "2023-11-03T18:45:37",
3
3
  "compiler": {
4
4
  "name": "@stencil/core",
5
5
  "version": "4.7.0",
@@ -19711,6 +19711,42 @@
19711
19711
  "optional": false,
19712
19712
  "required": false
19713
19713
  },
19714
+ {
19715
+ "name": "compareWith",
19716
+ "type": "((currentValue: any, compareValue: any) => boolean) | null | string | undefined",
19717
+ "complexType": {
19718
+ "original": "string | RadioGroupCompareFn | null",
19719
+ "resolved": "((currentValue: any, compareValue: any) => boolean) | null | string | undefined",
19720
+ "references": {
19721
+ "RadioGroupCompareFn": {
19722
+ "location": "import",
19723
+ "path": "./radio-group-interface",
19724
+ "id": "src/components/radio-group/radio-group-interface.ts::RadioGroupCompareFn"
19725
+ }
19726
+ }
19727
+ },
19728
+ "mutable": false,
19729
+ "attr": "compare-with",
19730
+ "reflectToAttr": false,
19731
+ "docs": "This property allows developers to specify a custom function or property\nname for comparing objects when determining the selected option in the\nion-radio-group. When not specified, the default behavior will use object\nequality (===) for comparison.",
19732
+ "docsTags": [],
19733
+ "values": [
19734
+ {
19735
+ "type": "((currentValue: any, compareValue: any) => boolean)"
19736
+ },
19737
+ {
19738
+ "type": "null"
19739
+ },
19740
+ {
19741
+ "type": "string"
19742
+ },
19743
+ {
19744
+ "type": "undefined"
19745
+ }
19746
+ ],
19747
+ "optional": true,
19748
+ "required": false
19749
+ },
19714
19750
  {
19715
19751
  "name": "name",
19716
19752
  "type": "string",
@@ -23909,7 +23945,7 @@
23909
23945
  "mutable": false,
23910
23946
  "attr": "compare-with",
23911
23947
  "reflectToAttr": false,
23912
- "docs": "A property name or function used to compare object values",
23948
+ "docs": "This property allows developers to specify a custom function or property\nname for comparing objects when determining the selected option in the\nion-select. When not specified, the default behavior will use object\nequality (===) for comparison.",
23913
23949
  "docsTags": [],
23914
23950
  "values": [
23915
23951
  {
@@ -29198,6 +29234,11 @@
29198
29234
  "docstring": "",
29199
29235
  "path": "src/components/popover/popover-interface.ts"
29200
29236
  },
29237
+ "src/components/radio-group/radio-group-interface.ts::RadioGroupCompareFn": {
29238
+ "declaration": "(currentValue: any, compareValue: any) => boolean",
29239
+ "docstring": "",
29240
+ "path": "src/components/radio-group/radio-group-interface.ts"
29241
+ },
29201
29242
  "src/components/radio-group/radio-group-interface.ts::RadioGroupChangeEventDetail": {
29202
29243
  "declaration": "export interface RadioGroupChangeEventDetail<T = any> {\n value: T;\n event?: Event;\n}",
29203
29244
  "docstring": "",
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import { w as win } from './index-7a14ecec.js';
4
+ import { w as win } from './index-a5d50daf.js';
5
5
  import { r as raf } from './helpers-3379ba19.js';
6
6
 
7
7
  let animationPrefix;
@@ -586,6 +586,16 @@ const createAnimation = (animationId) => {
586
586
  }
587
587
  }
588
588
  });
589
+ /**
590
+ * Clean up any value coercion before
591
+ * the user callbacks fire otherwise
592
+ * they may get stale values. For example,
593
+ * if someone calls progressStart(0) the
594
+ * animation may still be reversed.
595
+ */
596
+ forceDurationValue = undefined;
597
+ forceDirectionValue = undefined;
598
+ forceDelayValue = undefined;
589
599
  onFinishCallbacks.forEach((onFinishCallback) => {
590
600
  return onFinishCallback.c(currentStep, ani);
591
601
  });
@@ -790,17 +800,8 @@ const createAnimation = (animationId) => {
790
800
  update(false, false);
791
801
  }
792
802
  }
793
- if (playTo !== undefined) {
794
- onFinish(() => {
795
- forceDurationValue = undefined;
796
- forceDirectionValue = undefined;
797
- forceDelayValue = undefined;
798
- }, {
799
- oneTimeCallback: true,
800
- });
801
- if (!parentAnimation) {
802
- play();
803
- }
803
+ if (playTo !== undefined && !parentAnimation) {
804
+ play();
804
805
  }
805
806
  return ani;
806
807
  };
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import { i as initialize } from './ionic-global-8673c5ce.js';
4
+ import { i as initialize } from './ionic-global-7efdecd0.js';
5
5
 
6
6
  const globalScripts = initialize;
7
7
 
@@ -1,8 +1,8 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import { w as writeTask } from './index-8eb0239b.js';
5
- import { h as hapticSelectionEnd, a as hapticSelectionStart, b as hapticSelectionChanged } from './haptic-1243b917.js';
4
+ import { w as writeTask } from './index-4392ebcb.js';
5
+ import { h as hapticSelectionEnd, a as hapticSelectionStart, b as hapticSelectionChanged } from './haptic-1a66d69f.js';
6
6
  import { createGesture } from './index-ff313b19.js';
7
7
 
8
8
  const createButtonActiveGesture = (el, isButton) => {
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import { w as win } from './index-7a14ecec.js';
4
+ import { w as win } from './index-a5d50daf.js';
5
5
 
6
6
  const getCapacitor = () => {
7
7
  if (win !== undefined) {
@@ -0,0 +1,34 @@
1
+ /*!
2
+ * (C) Ionic http://ionicframework.com - MIT License
3
+ */
4
+ const compareOptions = (currentValue, compareValue, compareWith) => {
5
+ if (typeof compareWith === 'function') {
6
+ return compareWith(currentValue, compareValue);
7
+ }
8
+ else if (typeof compareWith === 'string') {
9
+ return currentValue[compareWith] === compareValue[compareWith];
10
+ }
11
+ else {
12
+ return Array.isArray(compareValue) ? compareValue.includes(currentValue) : currentValue === compareValue;
13
+ }
14
+ };
15
+ /**
16
+ * Compares a value against the current value to determine if it is selected.
17
+ *
18
+ * @param currentValue The current value of the control.
19
+ * @param compareValue The value to compare against.
20
+ * @param compareWith The function to use to compare values.
21
+ */
22
+ const isOptionSelected = (currentValue, compareValue, compareWith) => {
23
+ if (currentValue === undefined) {
24
+ return false;
25
+ }
26
+ if (Array.isArray(currentValue)) {
27
+ return currentValue.some((val) => compareOptions(val, compareValue, compareWith));
28
+ }
29
+ else {
30
+ return compareOptions(currentValue, compareValue, compareWith);
31
+ }
32
+ };
33
+
34
+ export { compareOptions as c, isOptionSelected as i };