voyager-ionic-core 7.5.0 → 7.5.5

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 (594) hide show
  1. package/components/action-sheet.js +2 -2
  2. package/components/alert.js +2 -2
  3. package/components/animation.js +18 -3
  4. package/components/checkbox.js +2 -2
  5. package/components/form-controller.js +1 -5
  6. package/components/index8.js +0 -1
  7. package/components/input-shims.js +9 -1
  8. package/components/ion-accordion-group.js +11 -1
  9. package/components/ion-datetime.js +48 -23
  10. package/components/ion-fab-list.js +1 -1
  11. package/components/ion-fab.js +1 -1
  12. package/components/ion-header.js +1 -1
  13. package/components/ion-input.js +11 -4
  14. package/components/ion-item-divider.js +2 -2
  15. package/components/ion-item-option.js +2 -2
  16. package/components/ion-menu.js +17 -5
  17. package/components/ion-modal.js +8 -8
  18. package/components/ion-range.js +2 -2
  19. package/components/ion-refresher.js +8 -1
  20. package/components/ion-reorder.js +2 -2
  21. package/components/ion-searchbar.js +10 -3
  22. package/components/ion-segment.js +43 -17
  23. package/components/ion-select.js +2 -2
  24. package/components/ion-tab-bar.js +2 -2
  25. package/components/ion-tab-button.js +2 -2
  26. package/components/ion-textarea.js +11 -4
  27. package/components/ion-title.js +1 -1
  28. package/components/ion-toast.js +2 -2
  29. package/components/ion-toggle.js +2 -2
  30. package/components/ios.transition.js +209 -41
  31. package/components/item.js +2 -2
  32. package/components/list-header.js +2 -2
  33. package/components/list.js +2 -2
  34. package/components/picker-internal.js +2 -2
  35. package/components/popover.js +2 -2
  36. package/components/radio-group.js +10 -1
  37. package/components/radio.js +2 -3
  38. package/components/watch-options.js +14 -3
  39. package/css/core.css.map +1 -1
  40. package/css/display.css.map +1 -1
  41. package/css/float-elements.css.map +1 -1
  42. package/css/global.bundle.css.map +1 -1
  43. package/css/ionic.bundle.css.map +1 -1
  44. package/css/padding.css.map +1 -1
  45. package/css/structure.css.map +1 -1
  46. package/css/text-alignment.css.map +1 -1
  47. package/css/text-transformation.css.map +1 -1
  48. package/css/typography.css.map +1 -1
  49. package/css/utils.bundle.css.map +1 -1
  50. package/dist/cjs/{animation-c8bdd3c7.js → animation-1083855c.js} +18 -3
  51. package/dist/cjs/{app-globals-fe1ad535.js → app-globals-1d4c1dbf.js} +1 -1
  52. package/dist/cjs/{button-active-c0ff1915.js → button-active-af897e0e.js} +1 -1
  53. package/dist/cjs/{form-controller-5e223b54.js → form-controller-9343050c.js} +1 -5
  54. package/dist/cjs/{index-d93fb71d.js → index-573877f3.js} +3 -3
  55. package/dist/cjs/{index-305a23dc.js → index-c2940dc1.js} +127 -57
  56. package/dist/cjs/{index-5e7529f6.js → index-d7561763.js} +2 -2
  57. package/dist/cjs/{index-10873539.js → index-da2c7a37.js} +0 -1
  58. package/dist/cjs/index.cjs.js +8 -8
  59. package/dist/cjs/{input-shims-da7dc0de.js → input-shims-b0a75a01.js} +10 -2
  60. package/dist/cjs/ion-accordion_2.cjs.entry.js +13 -3
  61. package/dist/cjs/ion-action-sheet.cjs.entry.js +7 -7
  62. package/dist/cjs/ion-alert.cjs.entry.js +7 -7
  63. package/dist/cjs/ion-app_8.cjs.entry.js +8 -8
  64. package/dist/cjs/ion-avatar_3.cjs.entry.js +2 -2
  65. package/dist/cjs/ion-back-button.cjs.entry.js +2 -2
  66. package/dist/cjs/ion-backdrop.cjs.entry.js +2 -2
  67. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +2 -2
  68. package/dist/cjs/ion-button_2.cjs.entry.js +2 -2
  69. package/dist/cjs/ion-card_5.cjs.entry.js +2 -2
  70. package/dist/cjs/ion-checkbox.cjs.entry.js +5 -5
  71. package/dist/cjs/ion-chip.cjs.entry.js +2 -2
  72. package/dist/cjs/ion-col_3.cjs.entry.js +2 -2
  73. package/dist/cjs/ion-datetime-button.cjs.entry.js +2 -2
  74. package/dist/cjs/ion-datetime_3.cjs.entry.js +52 -27
  75. package/dist/cjs/ion-fab_3.cjs.entry.js +4 -4
  76. package/dist/cjs/ion-img.cjs.entry.js +2 -2
  77. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +3 -3
  78. package/dist/cjs/ion-input.cjs.entry.js +13 -6
  79. package/dist/cjs/ion-item-option_3.cjs.entry.js +6 -6
  80. package/dist/cjs/ion-item_8.cjs.entry.js +10 -10
  81. package/dist/cjs/ion-loading.cjs.entry.js +4 -4
  82. package/dist/cjs/ion-menu_3.cjs.entry.js +22 -10
  83. package/dist/cjs/ion-modal.cjs.entry.js +14 -14
  84. package/dist/cjs/ion-nav_2.cjs.entry.js +3 -3
  85. package/dist/cjs/ion-picker-column-internal.cjs.entry.js +2 -2
  86. package/dist/cjs/ion-picker-internal.cjs.entry.js +3 -3
  87. package/dist/cjs/ion-popover.cjs.entry.js +7 -7
  88. package/dist/cjs/ion-progress-bar.cjs.entry.js +2 -2
  89. package/dist/cjs/ion-radio_2.cjs.entry.js +15 -7
  90. package/dist/cjs/ion-range.cjs.entry.js +6 -6
  91. package/dist/cjs/ion-refresher_2.cjs.entry.js +12 -5
  92. package/dist/cjs/ion-reorder_2.cjs.entry.js +5 -5
  93. package/dist/cjs/ion-ripple-effect.cjs.entry.js +2 -2
  94. package/dist/cjs/ion-route_4.cjs.entry.js +2 -2
  95. package/dist/cjs/ion-searchbar.cjs.entry.js +11 -4
  96. package/dist/cjs/ion-segment_2.cjs.entry.js +45 -19
  97. package/dist/cjs/ion-select_3.cjs.entry.js +7 -7
  98. package/dist/cjs/ion-spinner.cjs.entry.js +2 -2
  99. package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
  100. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +6 -6
  101. package/dist/cjs/ion-tab_2.cjs.entry.js +1 -1
  102. package/dist/cjs/ion-text.cjs.entry.js +2 -2
  103. package/dist/cjs/ion-textarea.cjs.entry.js +13 -6
  104. package/dist/cjs/ion-toast.cjs.entry.js +6 -6
  105. package/dist/cjs/ion-toggle.cjs.entry.js +5 -5
  106. package/dist/cjs/{ionic-global-fb752503.js → ionic-global-ea2901a3.js} +1 -1
  107. package/dist/cjs/ionic.cjs.js +4 -4
  108. package/dist/cjs/{ios.transition-a4d545dd.js → ios.transition-ac909bc8.js} +212 -44
  109. package/dist/cjs/loader.cjs.js +3 -3
  110. package/dist/cjs/{md.transition-80bb961b.js → md.transition-907af519.js} +3 -3
  111. package/dist/cjs/{overlays-1a734051.js → overlays-2ffc5f27.js} +1 -1
  112. package/dist/cjs/{status-tap-778e8054.js → status-tap-3fb2391a.js} +2 -2
  113. package/dist/cjs/{watch-options-f3f77e54.js → watch-options-53bbb124.js} +14 -3
  114. package/dist/collection/collection-manifest.json +1 -1
  115. package/dist/collection/components/accordion-group/accordion-group.js +10 -0
  116. package/dist/collection/components/accordion-group/accordion-group.md.css +2 -2
  117. package/dist/collection/components/action-sheet/action-sheet.ios.css +18 -5
  118. package/dist/collection/components/action-sheet/action-sheet.md.css +18 -5
  119. package/dist/collection/components/action-sheet/test/basic/action-sheet.e2e.js +59 -0
  120. package/dist/collection/components/alert/alert.ios.css +37 -4
  121. package/dist/collection/components/alert/alert.md.css +37 -4
  122. package/dist/collection/components/alert/test/a11y/alert.e2e.js +48 -0
  123. package/dist/collection/components/checkbox/checkbox.ios.css +3 -3
  124. package/dist/collection/components/checkbox/checkbox.md.css +3 -3
  125. package/dist/collection/components/datetime/datetime.ios.css +24 -4
  126. package/dist/collection/components/datetime/datetime.js +47 -22
  127. package/dist/collection/components/datetime/datetime.md.css +24 -8
  128. package/dist/collection/components/datetime/test/a11y/datetime.e2e.js +66 -0
  129. package/dist/collection/components/datetime/test/disabled/datetime.e2e.js +68 -0
  130. package/dist/collection/components/datetime/test/readonly/datetime.e2e.js +113 -0
  131. package/dist/collection/components/fab/fab.css +24 -36
  132. package/dist/collection/components/fab/test/safe-area/fab.e2e.js +63 -0
  133. package/dist/collection/components/fab-list/fab-list.css +2 -2
  134. package/dist/collection/components/header/header.ios.css +4 -1
  135. package/dist/collection/components/input/input.ios.css +15 -15
  136. package/dist/collection/components/input/input.js +9 -2
  137. package/dist/collection/components/input/input.md.css +22 -10
  138. package/dist/collection/components/item/item.ios.css +60 -12
  139. package/dist/collection/components/item/item.md.css +63 -15
  140. package/dist/collection/components/item/test/basic/item.e2e.js +26 -0
  141. package/dist/collection/components/item-divider/item-divider.ios.css +35 -8
  142. package/dist/collection/components/item-divider/item-divider.md.css +35 -8
  143. package/dist/collection/components/item-divider/test/basic/item-divider.e2e.js +22 -0
  144. package/dist/collection/components/item-option/item-option.ios.css +0 -10
  145. package/dist/collection/components/item-option/item-option.md.css +0 -10
  146. package/dist/collection/components/item-sliding/test/basic/item-sliding.e2e.js +77 -0
  147. package/dist/collection/components/label/label.ios.css +1 -1
  148. package/dist/collection/components/list/list.ios.css +15 -1
  149. package/dist/collection/components/list/list.md.css +41 -3
  150. package/dist/collection/components/list/test/lines/list.e2e.js +143 -0
  151. package/dist/collection/components/list-header/list-header.ios.css +15 -2
  152. package/dist/collection/components/list-header/list-header.md.css +15 -2
  153. package/dist/collection/components/list-header/test/basic/list-header.e2e.js +28 -0
  154. package/dist/collection/components/menu/menu.ios.css +4 -4
  155. package/dist/collection/components/menu/menu.js +15 -3
  156. package/dist/collection/components/menu/menu.md.css +4 -4
  157. package/dist/collection/components/modal/animations/ios.enter.js +3 -3
  158. package/dist/collection/components/modal/animations/ios.leave.js +4 -4
  159. package/dist/collection/components/modal/modal.ios.css +2 -2
  160. package/dist/collection/components/picker/picker.ios.css +1 -1
  161. package/dist/collection/components/picker/picker.md.css +1 -1
  162. package/dist/collection/components/picker-internal/picker-internal.ios.css +2 -2
  163. package/dist/collection/components/picker-internal/picker-internal.md.css +2 -2
  164. package/dist/collection/components/picker-internal/test/basic/picker-internal.e2e.js +5 -0
  165. package/dist/collection/components/popover/popover.ios.css +4 -4
  166. package/dist/collection/components/popover/popover.md.css +2 -2
  167. package/dist/collection/components/radio/radio.ios.css +4 -4
  168. package/dist/collection/components/radio/radio.js +5 -2
  169. package/dist/collection/components/radio/radio.md.css +4 -4
  170. package/dist/collection/components/radio/test/legacy/a11y/radio.e2e.js +5 -5
  171. package/dist/collection/components/radio-group/radio-group.js +10 -1
  172. package/dist/collection/components/range/range.ios.css +1 -1
  173. package/dist/collection/components/range/range.md.css +1 -1
  174. package/dist/collection/components/refresher/refresher.utils.js +8 -1
  175. package/dist/collection/components/reorder/reorder.ios.css +1 -34
  176. package/dist/collection/components/reorder/reorder.md.css +1 -34
  177. package/dist/collection/components/searchbar/searchbar.js +9 -2
  178. package/dist/collection/components/searchbar/searchbar.md.css +12 -6
  179. package/dist/collection/components/searchbar/test/basic/searchbar.e2e.js +25 -0
  180. package/dist/collection/components/segment/segment.js +43 -17
  181. package/dist/collection/components/select/select.ios.css +12 -15
  182. package/dist/collection/components/select/select.md.css +16 -7
  183. package/dist/collection/components/split-pane/test/multiple/split-pane.e2e.js +31 -0
  184. package/dist/collection/components/tab-bar/tab-bar.ios.css +4 -4
  185. package/dist/collection/components/tab-bar/tab-bar.md.css +4 -4
  186. package/dist/collection/components/tab-bar/test/basic/tab-bar.e2e.js +43 -0
  187. package/dist/collection/components/tab-button/tab-button.ios.css +3 -3
  188. package/dist/collection/components/tab-button/tab-button.md.css +3 -3
  189. package/dist/collection/components/textarea/textarea.ios.css +19 -19
  190. package/dist/collection/components/textarea/textarea.js +9 -2
  191. package/dist/collection/components/textarea/textarea.md.css +26 -20
  192. package/dist/collection/components/title/title.ios.css +11 -2
  193. package/dist/collection/components/toast/toast.ios.css +1 -1
  194. package/dist/collection/components/toast/toast.md.css +1 -1
  195. package/dist/collection/components/toggle/toggle.ios.css +3 -3
  196. package/dist/collection/components/toggle/toggle.md.css +3 -3
  197. package/dist/collection/utils/animation/animation.js +18 -3
  198. package/dist/collection/utils/content/index.js +0 -1
  199. package/dist/collection/utils/forms/form-controller.js +1 -5
  200. package/dist/collection/utils/input-shims/hacks/common.js +9 -1
  201. package/dist/collection/utils/transition/ios.transition.js +209 -41
  202. package/dist/collection/utils/watch-options.js +14 -3
  203. package/dist/docs.json +3 -3
  204. package/dist/esm/{animation-92066c62.js → animation-8aa13916.js} +18 -3
  205. package/dist/esm/{app-globals-ec816a70.js → app-globals-2398e405.js} +1 -1
  206. package/dist/esm/{button-active-d926d4f4.js → button-active-ce5cba4c.js} +1 -1
  207. package/dist/esm/{form-controller-ed77647a.js → form-controller-64edeaad.js} +1 -5
  208. package/dist/esm/{index-df55802d.js → index-0aa6e61f.js} +2 -2
  209. package/dist/esm/{index-746a238e.js → index-4392efa5.js} +0 -1
  210. package/dist/esm/{index-7d2b2808.js → index-6a0ccabb.js} +3 -3
  211. package/dist/esm/{index-b49b173c.js → index-7c9b1bca.js} +127 -57
  212. package/dist/esm/index.js +8 -8
  213. package/dist/esm/{input-shims-d78a3c77.js → input-shims-d0c93e5d.js} +10 -2
  214. package/dist/esm/ion-accordion_2.entry.js +13 -3
  215. package/dist/esm/ion-action-sheet.entry.js +7 -7
  216. package/dist/esm/ion-alert.entry.js +7 -7
  217. package/dist/esm/ion-app_8.entry.js +8 -8
  218. package/dist/esm/ion-avatar_3.entry.js +2 -2
  219. package/dist/esm/ion-back-button.entry.js +2 -2
  220. package/dist/esm/ion-backdrop.entry.js +2 -2
  221. package/dist/esm/ion-breadcrumb_2.entry.js +2 -2
  222. package/dist/esm/ion-button_2.entry.js +2 -2
  223. package/dist/esm/ion-card_5.entry.js +2 -2
  224. package/dist/esm/ion-checkbox.entry.js +5 -5
  225. package/dist/esm/ion-chip.entry.js +2 -2
  226. package/dist/esm/ion-col_3.entry.js +2 -2
  227. package/dist/esm/ion-datetime-button.entry.js +2 -2
  228. package/dist/esm/ion-datetime_3.entry.js +52 -27
  229. package/dist/esm/ion-fab_3.entry.js +4 -4
  230. package/dist/esm/ion-img.entry.js +2 -2
  231. package/dist/esm/ion-infinite-scroll_2.entry.js +3 -3
  232. package/dist/esm/ion-input.entry.js +14 -7
  233. package/dist/esm/ion-item-option_3.entry.js +6 -6
  234. package/dist/esm/ion-item_8.entry.js +10 -10
  235. package/dist/esm/ion-loading.entry.js +4 -4
  236. package/dist/esm/ion-menu_3.entry.js +22 -10
  237. package/dist/esm/ion-modal.entry.js +14 -14
  238. package/dist/esm/ion-nav_2.entry.js +3 -3
  239. package/dist/esm/ion-picker-column-internal.entry.js +2 -2
  240. package/dist/esm/ion-picker-internal.entry.js +3 -3
  241. package/dist/esm/ion-popover.entry.js +7 -7
  242. package/dist/esm/ion-progress-bar.entry.js +2 -2
  243. package/dist/esm/ion-radio_2.entry.js +15 -7
  244. package/dist/esm/ion-range.entry.js +6 -6
  245. package/dist/esm/ion-refresher_2.entry.js +12 -5
  246. package/dist/esm/ion-reorder_2.entry.js +5 -5
  247. package/dist/esm/ion-ripple-effect.entry.js +2 -2
  248. package/dist/esm/ion-route_4.entry.js +2 -2
  249. package/dist/esm/ion-searchbar.entry.js +12 -5
  250. package/dist/esm/ion-segment_2.entry.js +45 -19
  251. package/dist/esm/ion-select_3.entry.js +7 -7
  252. package/dist/esm/ion-spinner.entry.js +2 -2
  253. package/dist/esm/ion-split-pane.entry.js +2 -2
  254. package/dist/esm/ion-tab-bar_2.entry.js +6 -6
  255. package/dist/esm/ion-tab_2.entry.js +1 -1
  256. package/dist/esm/ion-text.entry.js +2 -2
  257. package/dist/esm/ion-textarea.entry.js +14 -7
  258. package/dist/esm/ion-toast.entry.js +6 -6
  259. package/dist/esm/ion-toggle.entry.js +5 -5
  260. package/dist/esm/{ionic-global-246ca78f.js → ionic-global-40e42e7f.js} +1 -1
  261. package/dist/esm/ionic.js +5 -5
  262. package/dist/esm/{ios.transition-a86d7bbe.js → ios.transition-1651c430.js} +212 -44
  263. package/dist/esm/loader.js +4 -4
  264. package/dist/esm/{md.transition-365ef6b6.js → md.transition-66f18369.js} +3 -3
  265. package/dist/esm/{overlays-cec6bac8.js → overlays-6c9feb7e.js} +1 -1
  266. package/dist/esm/{status-tap-9aeeaca5.js → status-tap-9ce68758.js} +2 -2
  267. package/dist/esm/{watch-options-355a920a.js → watch-options-02d8498b.js} +14 -3
  268. package/dist/esm-es5/animation-8aa13916.js +4 -0
  269. package/dist/esm-es5/app-globals-2398e405.js +4 -0
  270. package/dist/esm-es5/{button-active-d926d4f4.js → button-active-ce5cba4c.js} +1 -1
  271. package/dist/esm-es5/config-96c9ace3.js +1 -1
  272. package/dist/esm-es5/cubic-bezier-66542bc5.js +1 -1
  273. package/dist/esm-es5/data-44d9e816.js +1 -1
  274. package/dist/esm-es5/dir-912e3e13.js +1 -1
  275. package/dist/esm-es5/focus-visible-85493433.js +1 -1
  276. package/dist/esm-es5/form-controller-64edeaad.js +4 -0
  277. package/dist/esm-es5/framework-delegate-aa433dea.js +1 -1
  278. package/dist/esm-es5/gesture-controller-0fa396c4.js +1 -1
  279. package/dist/esm-es5/haptic-1243b917.js +1 -1
  280. package/dist/esm-es5/hardware-back-button-39299f84.js +1 -1
  281. package/dist/esm-es5/helpers-3379ba19.js +1 -1
  282. package/dist/esm-es5/index-0aa6e61f.js +4 -0
  283. package/dist/esm-es5/index-4392efa5.js +4 -0
  284. package/dist/esm-es5/index-6a0ccabb.js +4 -0
  285. package/dist/esm-es5/index-7c9b1bca.js +5 -0
  286. package/dist/esm-es5/index-f0cc4e14.js +1 -1
  287. package/dist/esm-es5/index-ff313b19.js +1 -1
  288. package/dist/esm-es5/index.js +1 -1
  289. package/dist/esm-es5/input-shims-d0c93e5d.js +4 -0
  290. package/dist/esm-es5/input.utils-ec063df4.js +1 -1
  291. package/dist/esm-es5/ion-accordion_2.entry.js +1 -1
  292. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  293. package/dist/esm-es5/ion-alert.entry.js +1 -1
  294. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  295. package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
  296. package/dist/esm-es5/ion-back-button.entry.js +1 -1
  297. package/dist/esm-es5/ion-backdrop.entry.js +1 -1
  298. package/dist/esm-es5/ion-breadcrumb_2.entry.js +1 -1
  299. package/dist/esm-es5/ion-button_2.entry.js +1 -1
  300. package/dist/esm-es5/ion-card_5.entry.js +1 -1
  301. package/dist/esm-es5/ion-checkbox.entry.js +1 -1
  302. package/dist/esm-es5/ion-chip.entry.js +1 -1
  303. package/dist/esm-es5/ion-col_3.entry.js +1 -1
  304. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  305. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  306. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  307. package/dist/esm-es5/ion-img.entry.js +1 -1
  308. package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
  309. package/dist/esm-es5/ion-input.entry.js +1 -1
  310. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  311. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  312. package/dist/esm-es5/ion-loading.entry.js +1 -1
  313. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  314. package/dist/esm-es5/ion-modal.entry.js +1 -1
  315. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  316. package/dist/esm-es5/ion-picker-column-internal.entry.js +1 -1
  317. package/dist/esm-es5/ion-picker-internal.entry.js +1 -1
  318. package/dist/esm-es5/ion-popover.entry.js +1 -1
  319. package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
  320. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  321. package/dist/esm-es5/ion-range.entry.js +1 -1
  322. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  323. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  324. package/dist/esm-es5/ion-ripple-effect.entry.js +1 -1
  325. package/dist/esm-es5/ion-route_4.entry.js +1 -1
  326. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  327. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  328. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  329. package/dist/esm-es5/ion-spinner.entry.js +1 -1
  330. package/dist/esm-es5/ion-split-pane.entry.js +1 -1
  331. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  332. package/dist/esm-es5/ion-tab_2.entry.js +1 -1
  333. package/dist/esm-es5/ion-text.entry.js +1 -1
  334. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  335. package/dist/esm-es5/ion-toast.entry.js +1 -1
  336. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  337. package/dist/esm-es5/ionic-global-40e42e7f.js +4 -0
  338. package/dist/esm-es5/ionic.js +1 -1
  339. package/dist/esm-es5/ios.transition-1651c430.js +4 -0
  340. package/dist/esm-es5/keyboard-b551279d.js +1 -1
  341. package/dist/esm-es5/keyboard-controller-0c2dce71.js +1 -1
  342. package/dist/esm-es5/loader.js +1 -1
  343. package/dist/esm-es5/md.transition-66f18369.js +4 -0
  344. package/dist/esm-es5/notch-controller-8c9c0e54.js +1 -1
  345. package/dist/esm-es5/overlays-6c9feb7e.js +4 -0
  346. package/dist/esm-es5/spinner-configs-d09fbbbb.js +1 -1
  347. package/dist/esm-es5/status-tap-9ce68758.js +4 -0
  348. package/dist/esm-es5/swipe-back-cd4295f3.js +1 -1
  349. package/dist/esm-es5/watch-options-02d8498b.js +4 -0
  350. package/dist/html.html-data.json +1 -1
  351. package/dist/ionic/index.esm.js +1 -1
  352. package/dist/ionic/ionic.esm.js +1 -1
  353. package/dist/ionic/ionic.js +1 -1
  354. package/dist/ionic/p-0330f0a3.system.entry.js +4 -0
  355. package/dist/ionic/{p-a7f8dc42.entry.js → p-0492946a.entry.js} +1 -1
  356. package/dist/ionic/{p-78030c1f.system.entry.js → p-07d9e9cd.system.entry.js} +1 -1
  357. package/dist/ionic/{p-ced41304.system.js → p-09d142b3.system.js} +1 -1
  358. package/dist/ionic/{p-fcf47f80.entry.js → p-0a794e83.entry.js} +1 -1
  359. package/dist/ionic/p-0d8e9393.entry.js +4 -0
  360. package/dist/ionic/p-0dc0d9b5.entry.js +4 -0
  361. package/dist/ionic/p-0e23256e.system.entry.js +4 -0
  362. package/dist/ionic/p-14aca3fb.entry.js +4 -0
  363. package/dist/ionic/p-14b4348c.system.js +4 -0
  364. package/dist/ionic/{p-108f9d49.entry.js → p-174f3446.entry.js} +1 -1
  365. package/dist/ionic/p-18e01b30.system.entry.js +4 -0
  366. package/dist/ionic/p-1a8ae7a7.system.entry.js +4 -0
  367. package/dist/ionic/p-1cb5f2f8.system.entry.js +4 -0
  368. package/dist/ionic/{p-c42c86c0.system.entry.js → p-1d269117.system.entry.js} +1 -1
  369. package/dist/ionic/{p-0ac3fb2c.entry.js → p-1dc91702.entry.js} +1 -1
  370. package/dist/ionic/p-1e5165db.system.entry.js +4 -0
  371. package/dist/ionic/{p-0b00b937.entry.js → p-1e86a71b.entry.js} +1 -1
  372. package/dist/ionic/p-1f4f0d59.system.entry.js +4 -0
  373. package/dist/ionic/p-20cf4994.js +4 -0
  374. package/dist/ionic/p-236063ec.system.entry.js +4 -0
  375. package/dist/ionic/p-2b89ea1b.system.js +1 -1
  376. package/dist/ionic/p-2e8e0045.js +4 -0
  377. package/dist/ionic/{p-ce7d67a7.system.entry.js → p-34d2de14.system.entry.js} +2 -2
  378. package/dist/ionic/{p-303bf1e8.system.entry.js → p-352c0232.system.entry.js} +2 -2
  379. package/dist/ionic/p-3602001b.system.js +4 -0
  380. package/dist/ionic/p-3632220b.system.js +1 -1
  381. package/dist/ionic/p-377c636c.system.entry.js +4 -0
  382. package/dist/ionic/{p-f9fa802c.system.entry.js → p-39044fe6.system.entry.js} +2 -2
  383. package/dist/ionic/{p-38089641.entry.js → p-3ce8c3e3.entry.js} +1 -1
  384. package/dist/ionic/p-3d7fea9b.system.entry.js +4 -0
  385. package/dist/ionic/p-3de79805.entry.js +4 -0
  386. package/dist/ionic/{p-0bbede6a.system.entry.js → p-3fb57e1b.system.entry.js} +1 -1
  387. package/dist/ionic/{p-5c3e72a8.system.js → p-40903d34.system.js} +1 -1
  388. package/dist/ionic/p-41122cd6.system.js +4 -0
  389. package/dist/ionic/p-41477ad9.system.js +1 -1
  390. package/dist/ionic/p-44bc8b45.system.js +2 -2
  391. package/dist/ionic/p-4518e4c0.system.entry.js +4 -0
  392. package/dist/ionic/{p-eab10949.system.entry.js → p-45da1e68.system.entry.js} +1 -1
  393. package/dist/ionic/p-4794e0ac.system.entry.js +4 -0
  394. package/dist/ionic/p-479cdbf8.system.js +2 -2
  395. package/dist/ionic/{p-4e50b8d1.entry.js → p-48d9faa7.entry.js} +1 -1
  396. package/dist/ionic/{p-8d6728a1.system.entry.js → p-4a142496.system.entry.js} +1 -1
  397. package/dist/ionic/p-4c80afe1.system.entry.js +4 -0
  398. package/dist/ionic/p-4cd588b3.system.entry.js +4 -0
  399. package/dist/ionic/{p-afb6658f.entry.js → p-4dbac22d.entry.js} +1 -1
  400. package/dist/ionic/p-4e6a1efb.system.entry.js +4 -0
  401. package/dist/ionic/p-4ecb5692.entry.js +4 -0
  402. package/dist/ionic/p-5370e786.js +4 -0
  403. package/dist/ionic/p-55ed230e.system.js +4 -0
  404. package/dist/ionic/p-56dc022e.system.js +1 -1
  405. package/dist/ionic/p-5aac9314.system.js +4 -0
  406. package/dist/ionic/p-5bd4e009.entry.js +4 -0
  407. package/dist/ionic/{p-6f8a95a3.system.entry.js → p-5cfb3feb.system.entry.js} +2 -2
  408. package/dist/ionic/{p-181b7c2a.js → p-5d711127.js} +1 -1
  409. package/dist/ionic/p-5da0eb3e.system.entry.js +4 -0
  410. package/dist/ionic/p-5deff017.entry.js +4 -0
  411. package/dist/ionic/p-613d4042.system.js +2 -2
  412. package/dist/ionic/p-63d519fb.entry.js +4 -0
  413. package/dist/ionic/{p-8083aadb.entry.js → p-63f08fe3.entry.js} +1 -1
  414. package/dist/ionic/{p-35b26732.entry.js → p-64296b15.entry.js} +1 -1
  415. package/dist/ionic/p-64ed03a3.entry.js +4 -0
  416. package/dist/ionic/p-664d2b07.system.entry.js +4 -0
  417. package/dist/ionic/p-67aab78f.js +4 -0
  418. package/dist/ionic/{p-e0f52215.system.entry.js → p-67e18f02.system.entry.js} +1 -1
  419. package/dist/ionic/{p-572cce26.system.entry.js → p-67ed452a.system.entry.js} +2 -2
  420. package/dist/ionic/p-67eecef4.system.js +4 -0
  421. package/dist/ionic/{p-76378400.js → p-6c3d5383.js} +1 -1
  422. package/dist/ionic/{p-1289b3b5.system.entry.js → p-6e23777e.system.entry.js} +2 -2
  423. package/dist/ionic/p-702d85d8.system.js +4 -0
  424. package/dist/ionic/{p-1edb53a1.entry.js → p-7176cea3.entry.js} +1 -1
  425. package/dist/ionic/p-73411c1b.entry.js +4 -0
  426. package/dist/ionic/p-73420380.js +4 -0
  427. package/dist/ionic/{p-6ea2e653.entry.js → p-744973f3.entry.js} +1 -1
  428. package/dist/ionic/p-772f6c84.system.js +2 -2
  429. package/dist/ionic/p-77e7a9c8.entry.js +4 -0
  430. package/dist/ionic/p-7ab6fc5a.system.entry.js +4 -0
  431. package/dist/ionic/{p-31119a15.entry.js → p-7cee75c0.entry.js} +1 -1
  432. package/dist/ionic/{p-cf62e1c8.js → p-800ef057.js} +1 -1
  433. package/dist/ionic/p-815c2fba.system.js +2 -2
  434. package/dist/ionic/p-819ff3b9.system.js +1 -1
  435. package/dist/ionic/p-87411e39.system.js +1 -1
  436. package/dist/ionic/p-8a308596.system.js +4 -0
  437. package/dist/ionic/{p-3818f63f.entry.js → p-8ad82eb3.entry.js} +1 -1
  438. package/dist/ionic/{p-c4a5de01.entry.js → p-8b29691f.entry.js} +1 -1
  439. package/dist/ionic/p-8c15eda7.system.js +2 -2
  440. package/dist/ionic/p-8e1bded3.entry.js +4 -0
  441. package/dist/ionic/{p-15decbec.entry.js → p-9209d90c.entry.js} +1 -1
  442. package/dist/ionic/{p-96ba8eac.entry.js → p-92800752.entry.js} +1 -1
  443. package/dist/ionic/p-965677f1.entry.js +4 -0
  444. package/dist/ionic/{p-446230d7.js → p-97c65aa5.js} +1 -1
  445. package/dist/ionic/p-97e31c0a.system.js +4 -0
  446. package/dist/ionic/p-9ab6f3e6.system.js +1 -1
  447. package/dist/ionic/{p-62e7d4fa.js → p-9b89cbde.js} +1 -1
  448. package/dist/ionic/p-9e852ff1.system.js +1 -1
  449. package/dist/ionic/p-a0b6d438.js +4 -0
  450. package/dist/ionic/p-a545b4f1.system.js +4 -0
  451. package/dist/ionic/p-a5c1e6ce.entry.js +4 -0
  452. package/dist/ionic/p-a6d83a03.system.entry.js +4 -0
  453. package/dist/ionic/p-a8e68fd9.entry.js +4 -0
  454. package/dist/ionic/{p-aa377971.system.js → p-a936d224.system.js} +1 -1
  455. package/dist/ionic/{p-beb864e4.system.entry.js → p-a9c3699b.system.entry.js} +1 -1
  456. package/dist/ionic/p-ab4cff27.system.js +1 -1
  457. package/dist/ionic/{p-012952cd.system.entry.js → p-abacb44b.system.entry.js} +2 -2
  458. package/dist/ionic/{p-1f81b5be.entry.js → p-af016cd3.entry.js} +1 -1
  459. package/dist/ionic/{p-a9c32660.entry.js → p-b0cee324.entry.js} +1 -1
  460. package/dist/ionic/{p-f4309ac7.entry.js → p-b1142133.entry.js} +1 -1
  461. package/dist/ionic/p-b17b7c3c.system.entry.js +4 -0
  462. package/dist/ionic/p-b203659a.system.entry.js +4 -0
  463. package/dist/ionic/{p-c679fcb5.entry.js → p-b2a74a72.entry.js} +1 -1
  464. package/dist/ionic/p-b4b4bb29.system.js +1 -1
  465. package/dist/ionic/p-b6f8ee31.entry.js +4 -0
  466. package/dist/ionic/p-b8c3f071.system.js +1 -1
  467. package/dist/ionic/p-b906c5ca.entry.js +4 -0
  468. package/dist/ionic/p-b912e055.system.js +1 -1
  469. package/dist/ionic/{p-e42aaa8b.entry.js → p-b91fe549.entry.js} +1 -1
  470. package/dist/ionic/p-bba2ce59.system.js +1 -1
  471. package/dist/ionic/p-beb64be7.system.entry.js +4 -0
  472. package/dist/ionic/p-bed722c4.system.entry.js +4 -0
  473. package/dist/ionic/p-c0c81820.system.js +4 -0
  474. package/dist/ionic/p-c224b9a9.js +5 -0
  475. package/dist/ionic/p-c4042875.system.js +4 -0
  476. package/dist/ionic/p-c4f2dce7.system.js +1 -1
  477. package/dist/ionic/{p-6f6646bf.system.entry.js → p-c7b8c2ef.system.entry.js} +1 -1
  478. package/dist/ionic/{p-1ecba429.entry.js → p-c7d30db9.entry.js} +1 -1
  479. package/dist/ionic/{p-db1a1e00.entry.js → p-c919498d.entry.js} +1 -1
  480. package/dist/ionic/{p-54200074.entry.js → p-ca5219df.entry.js} +1 -1
  481. package/dist/ionic/p-ccdcb022.system.js +1 -1
  482. package/dist/ionic/p-cf425ec5.system.entry.js +4 -0
  483. package/dist/ionic/p-d2597b3e.system.js +5 -0
  484. package/dist/ionic/p-d3952bd5.system.entry.js +4 -0
  485. package/dist/ionic/{p-8c1805f4.system.entry.js → p-d7ea6a0d.system.entry.js} +1 -1
  486. package/dist/ionic/p-db5043df.system.entry.js +4 -0
  487. package/dist/ionic/p-dfa756ed.system.js +4 -0
  488. package/dist/ionic/{p-28ea45b9.js → p-e6b240a0.js} +1 -1
  489. package/dist/ionic/{p-cabd2c6d.entry.js → p-e76a4bc8.entry.js} +1 -1
  490. package/dist/ionic/{p-cf0c93e3.system.entry.js → p-e8400078.system.entry.js} +2 -2
  491. package/dist/ionic/{p-4e6e43c1.entry.js → p-ed636a74.entry.js} +1 -1
  492. package/dist/ionic/p-f10de93b.js +4 -0
  493. package/dist/ionic/{p-f919c026.entry.js → p-f4cc91f6.entry.js} +1 -1
  494. package/dist/ionic/p-f5a750e4.system.entry.js +4 -0
  495. package/dist/ionic/p-f8e620f1.entry.js +4 -0
  496. package/dist/ionic/p-fa8d4788.system.js +1 -1
  497. package/dist/ionic/{p-8a2801f1.system.entry.js → p-ff5144f3.system.entry.js} +1 -1
  498. package/dist/ionic/p-ff5a10f9.system.js +2 -2
  499. package/dist/ionic/{p-6129af0a.system.entry.js → p-ffb876b0.system.entry.js} +1 -1
  500. package/dist/types/components/datetime/datetime.d.ts +1 -1
  501. package/dist/types/components/menu/menu-interface.d.ts +15 -4
  502. package/dist/types/components/radio/radio.d.ts +1 -1
  503. package/dist/types/components.d.ts +627 -3
  504. package/dist/types/stencil-public-runtime.d.ts +21 -0
  505. package/dist/types/utils/content/index.d.ts +1 -1
  506. package/dist/types/utils/focus-visible.d.ts +3 -2
  507. package/dist/types/utils/menu-controller/index.d.ts +2 -21
  508. package/dist/types/utils/test/platform.utils.d.ts +9 -9
  509. package/dist/types/utils/watch-options.d.ts +9 -1
  510. package/hydrate/index.d.ts +1 -1
  511. package/hydrate/index.js +567 -238
  512. package/package.json +11 -14
  513. package/dist/esm-es5/animation-92066c62.js +0 -4
  514. package/dist/esm-es5/app-globals-ec816a70.js +0 -4
  515. package/dist/esm-es5/form-controller-ed77647a.js +0 -4
  516. package/dist/esm-es5/index-746a238e.js +0 -4
  517. package/dist/esm-es5/index-7d2b2808.js +0 -4
  518. package/dist/esm-es5/index-b49b173c.js +0 -5
  519. package/dist/esm-es5/index-df55802d.js +0 -4
  520. package/dist/esm-es5/input-shims-d78a3c77.js +0 -4
  521. package/dist/esm-es5/ionic-global-246ca78f.js +0 -4
  522. package/dist/esm-es5/ios.transition-a86d7bbe.js +0 -4
  523. package/dist/esm-es5/md.transition-365ef6b6.js +0 -4
  524. package/dist/esm-es5/overlays-cec6bac8.js +0 -4
  525. package/dist/esm-es5/status-tap-9aeeaca5.js +0 -4
  526. package/dist/esm-es5/watch-options-355a920a.js +0 -4
  527. package/dist/ionic/p-015187e5.system.js +0 -4
  528. package/dist/ionic/p-06ac429a.js +0 -5
  529. package/dist/ionic/p-0b7c25ee.system.entry.js +0 -4
  530. package/dist/ionic/p-0f1f59da.system.entry.js +0 -4
  531. package/dist/ionic/p-128a98e8.system.js +0 -4
  532. package/dist/ionic/p-16e44585.js +0 -4
  533. package/dist/ionic/p-19fba51c.entry.js +0 -4
  534. package/dist/ionic/p-1a463b1e.system.entry.js +0 -4
  535. package/dist/ionic/p-1f260a7b.entry.js +0 -4
  536. package/dist/ionic/p-29073efe.system.entry.js +0 -4
  537. package/dist/ionic/p-2bbf3ac4.system.entry.js +0 -4
  538. package/dist/ionic/p-33a8349a.system.entry.js +0 -4
  539. package/dist/ionic/p-34259245.system.entry.js +0 -4
  540. package/dist/ionic/p-35e399bd.entry.js +0 -4
  541. package/dist/ionic/p-38c5fe2b.system.entry.js +0 -4
  542. package/dist/ionic/p-3a58e3a4.system.entry.js +0 -4
  543. package/dist/ionic/p-3d726a67.system.js +0 -4
  544. package/dist/ionic/p-3f3da911.system.entry.js +0 -4
  545. package/dist/ionic/p-4215652f.system.entry.js +0 -4
  546. package/dist/ionic/p-4f97c112.entry.js +0 -4
  547. package/dist/ionic/p-54f6cd27.system.entry.js +0 -4
  548. package/dist/ionic/p-5b976d70.entry.js +0 -4
  549. package/dist/ionic/p-5bf16a18.js +0 -4
  550. package/dist/ionic/p-629aa3fd.system.js +0 -5
  551. package/dist/ionic/p-64475ab5.system.js +0 -4
  552. package/dist/ionic/p-673846f6.entry.js +0 -4
  553. package/dist/ionic/p-6ce0a709.system.entry.js +0 -4
  554. package/dist/ionic/p-818b2e75.entry.js +0 -4
  555. package/dist/ionic/p-81ef7437.system.entry.js +0 -4
  556. package/dist/ionic/p-8e24ebbc.js +0 -4
  557. package/dist/ionic/p-8f01a9a2.system.js +0 -4
  558. package/dist/ionic/p-939e0fa1.system.js +0 -4
  559. package/dist/ionic/p-95817276.system.entry.js +0 -4
  560. package/dist/ionic/p-9b9dcc3e.system.entry.js +0 -4
  561. package/dist/ionic/p-9dc85536.system.entry.js +0 -4
  562. package/dist/ionic/p-9f2e0db9.js +0 -4
  563. package/dist/ionic/p-a04bfada.entry.js +0 -4
  564. package/dist/ionic/p-a164e3ab.system.entry.js +0 -4
  565. package/dist/ionic/p-a200a7fc.entry.js +0 -4
  566. package/dist/ionic/p-a34fc12e.system.entry.js +0 -4
  567. package/dist/ionic/p-ad48dd13.system.js +0 -4
  568. package/dist/ionic/p-b132c2c0.system.js +0 -4
  569. package/dist/ionic/p-b3c68723.system.js +0 -4
  570. package/dist/ionic/p-b61a2fa0.system.entry.js +0 -4
  571. package/dist/ionic/p-b753ec0d.system.entry.js +0 -4
  572. package/dist/ionic/p-b9047b05.system.js +0 -4
  573. package/dist/ionic/p-c05315f5.system.entry.js +0 -4
  574. package/dist/ionic/p-c105bd36.entry.js +0 -4
  575. package/dist/ionic/p-c49672d8.system.js +0 -4
  576. package/dist/ionic/p-c87827ca.system.js +0 -4
  577. package/dist/ionic/p-c8c9d699.system.entry.js +0 -4
  578. package/dist/ionic/p-c92f0a6d.system.entry.js +0 -4
  579. package/dist/ionic/p-c956e82c.system.entry.js +0 -4
  580. package/dist/ionic/p-c994fff0.system.js +0 -4
  581. package/dist/ionic/p-ca5cf574.js +0 -4
  582. package/dist/ionic/p-cd2d17c3.system.entry.js +0 -4
  583. package/dist/ionic/p-d35217be.entry.js +0 -4
  584. package/dist/ionic/p-d6e53e66.entry.js +0 -4
  585. package/dist/ionic/p-e1d5752d.system.entry.js +0 -4
  586. package/dist/ionic/p-e2bb634f.js +0 -4
  587. package/dist/ionic/p-e38a5f77.js +0 -4
  588. package/dist/ionic/p-e65ebe96.entry.js +0 -4
  589. package/dist/ionic/p-e74faf2a.entry.js +0 -4
  590. package/dist/ionic/p-eac263dd.entry.js +0 -4
  591. package/dist/ionic/p-f34f001c.entry.js +0 -4
  592. package/dist/ionic/p-f5bf698b.entry.js +0 -4
  593. package/dist/ionic/p-f7566bad.entry.js +0 -4
  594. /package/dist/ionic/{p-b24aa895.js → p-114a36ed.js} +0 -0
@@ -55,7 +55,16 @@ export class RadioGroup {
55
55
  this.ionValueChange.emit({ value });
56
56
  }
57
57
  componentDidLoad() {
58
- this.setRadioTabindex(this.value);
58
+ /**
59
+ * There's an issue when assigning a value to the radio group
60
+ * within the Angular primary content (rendering within the
61
+ * app component template). When the template is isolated to a route,
62
+ * the value is assigned correctly.
63
+ * To address this issue, we need to ensure that the watcher is
64
+ * called after the component has finished loading,
65
+ * allowing the emit to be dispatched correctly.
66
+ */
67
+ this.valueChanged(this.value);
59
68
  }
60
69
  async connectedCallback() {
61
70
  // Get the list header if it exists and set the id
@@ -428,7 +428,7 @@
428
428
  }
429
429
 
430
430
  @supports selector(:dir(rtl)) {
431
- :host(.range-label-placement-stacked) .label-text-wrapper:dir(rtl) {
431
+ :host(.range-label-placement-stacked:dir(rtl)) .label-text-wrapper {
432
432
  transform-origin: right top;
433
433
  }
434
434
  }
@@ -428,7 +428,7 @@
428
428
  }
429
429
 
430
430
  @supports selector(:dir(rtl)) {
431
- :host(.range-label-placement-stacked) .label-text-wrapper:dir(rtl) {
431
+ :host(.range-label-placement-stacked:dir(rtl)) .label-text-wrapper {
432
432
  transform-origin: right top;
433
433
  }
434
434
  }
@@ -16,7 +16,6 @@ export const createPullingAnimation = (type, pullingSpinner, refresherEl) => {
16
16
  : createTranslateAnimation(pullingSpinner, refresherEl);
17
17
  };
18
18
  const createBaseAnimation = (pullingRefresherIcon) => {
19
- // TODO(FW-2832): add types/re-evaluate asserting so many things
20
19
  const spinner = pullingRefresherIcon.querySelector('ion-spinner');
21
20
  const circle = spinner.shadowRoot.querySelector('circle');
22
21
  const spinnerArrowContainer = pullingRefresherIcon.querySelector('.spinner-arrow-container');
@@ -173,6 +172,14 @@ export const shouldUseNativeRefresher = async (referenceEl, mode) => {
173
172
  const refreshingSpinner = referenceEl.querySelector('ion-refresher-content .refresher-refreshing ion-spinner');
174
173
  return (pullingSpinner !== null &&
175
174
  refreshingSpinner !== null &&
175
+ /**
176
+ * We use webkitOverflowScrolling for feature detection with rubber band scrolling
177
+ * on iOS. When doing referenceEl.style, webkitOverflowScrolling is undefined on non-iOS platforms.
178
+ * However, it will be the empty string on iOS.
179
+ * Note that we do not use getPropertyValue (and thus need to cast as any) because calling
180
+ * getPropertyValue('-webkit-overflow-scrolling') will return the empty string if it is not
181
+ * set on the element, even if the platform does not support that.
182
+ */
176
183
  ((mode === 'ios' && isPlatform('mobile') && referenceEl.style.webkitOverflowScrolling !== undefined) ||
177
184
  mode === 'md'));
178
185
  };
@@ -1,36 +1,3 @@
1
- /**
2
- * Convert a font size to a dynamic font size.
3
- * Fonts that participate in Dynamic Type should use
4
- * dynamic font sizes.
5
- * @param size - The initial font size including the unit (i.e. px or pt)
6
- * @param unit (optional) - The unit to convert to. Use this if you want to
7
- * convert to a unit other than $baselineUnit.
8
- */
9
- /**
10
- * Convert a font size to a dynamic font size but impose
11
- * a maximum font size.
12
- * @param size - The initial font size including the unit (i.e. px or pt)
13
- * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
14
- * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
15
- * convert to a unit other than $baselineUnit.
16
- */
17
- /**
18
- * Convert a font size to a dynamic font size but impose
19
- * a minimum font size.
20
- * @param size - The initial font size including the unit (i.e. px or pt)
21
- * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
22
- * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
23
- * convert to a unit other than $baselineUnit.
24
- */
25
- /**
26
- * Convert a font size to a dynamic font size but impose
27
- * maximum and minimum font sizes.
28
- * @param size - The initial font size including the unit (i.e. px or pt)
29
- * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
30
- * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
31
- * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
32
- * convert to a unit other than $baselineUnit.
33
- */
34
1
  :host([slot]) {
35
2
  display: none;
36
3
  line-height: 0;
@@ -46,7 +13,7 @@
46
13
  * icons resize with Dynamic Type.
47
14
  */
48
15
  ::slotted(ion-icon) {
49
- font-size: 1rem;
16
+ font-size: dynamic-font(16px);
50
17
  }
51
18
 
52
19
  /**
@@ -1,36 +1,3 @@
1
- /**
2
- * Convert a font size to a dynamic font size.
3
- * Fonts that participate in Dynamic Type should use
4
- * dynamic font sizes.
5
- * @param size - The initial font size including the unit (i.e. px or pt)
6
- * @param unit (optional) - The unit to convert to. Use this if you want to
7
- * convert to a unit other than $baselineUnit.
8
- */
9
- /**
10
- * Convert a font size to a dynamic font size but impose
11
- * a maximum font size.
12
- * @param size - The initial font size including the unit (i.e. px or pt)
13
- * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
14
- * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
15
- * convert to a unit other than $baselineUnit.
16
- */
17
- /**
18
- * Convert a font size to a dynamic font size but impose
19
- * a minimum font size.
20
- * @param size - The initial font size including the unit (i.e. px or pt)
21
- * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
22
- * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
23
- * convert to a unit other than $baselineUnit.
24
- */
25
- /**
26
- * Convert a font size to a dynamic font size but impose
27
- * maximum and minimum font sizes.
28
- * @param size - The initial font size including the unit (i.e. px or pt)
29
- * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
30
- * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
31
- * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
32
- * convert to a unit other than $baselineUnit.
33
- */
34
1
  :host([slot]) {
35
2
  display: none;
36
3
  line-height: 0;
@@ -46,7 +13,7 @@
46
13
  * icons resize with Dynamic Type.
47
14
  */
48
15
  ::slotted(ion-icon) {
49
- font-size: 1rem;
16
+ font-size: dynamic-font(16px);
50
17
  }
51
18
 
52
19
  /**
@@ -2,7 +2,7 @@
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
4
  import { Host, forceUpdate, h } from "@stencil/core";
5
- import { debounceEvent, raf } from "../../utils/helpers";
5
+ import { debounceEvent, raf, componentOnReady } from "../../utils/helpers";
6
6
  import { isRTL } from "../../utils/rtl/index";
7
7
  import { createColorClasses } from "../../utils/theme";
8
8
  import { arrowBackSharp, closeCircle, closeSharp, searchOutline, searchSharp } from "ionicons/icons";
@@ -189,7 +189,14 @@ export class Searchbar {
189
189
  /**
190
190
  * Returns the native `<input>` element used under the hood.
191
191
  */
192
- getInputElement() {
192
+ async getInputElement() {
193
+ /**
194
+ * If this gets called in certain early lifecycle hooks (ex: Vue onMounted),
195
+ * nativeInput won't be defined yet with the custom elements build, so wait for it to load in.
196
+ */
197
+ if (!this.nativeInput) {
198
+ await new Promise((resolve) => componentOnReady(this.el, resolve));
199
+ }
193
200
  return Promise.resolve(this.nativeInput);
194
201
  }
195
202
  /**
@@ -265,34 +265,40 @@
265
265
  }
266
266
 
267
267
  .searchbar-cancel-button {
268
+ /**
269
+ * The left edge of the cancel button
270
+ * should align with the left edge
271
+ * of the back button if the searchbar
272
+ * is used in a toolbar.
273
+ */
268
274
  top: 0;
269
275
  background-color: transparent;
270
- font-size: 1.6em;
276
+ font-size: 1.5em;
271
277
  }
272
278
  @supports (inset-inline-start: 0) {
273
279
  .searchbar-cancel-button {
274
- inset-inline-start: 5px;
280
+ inset-inline-start: 9px;
275
281
  }
276
282
  }
277
283
  @supports not (inset-inline-start: 0) {
278
284
  .searchbar-cancel-button {
279
- left: 5px;
285
+ left: 9px;
280
286
  }
281
287
  :host-context([dir=rtl]) .searchbar-cancel-button {
282
288
  left: unset;
283
289
  right: unset;
284
- right: 5px;
290
+ right: 9px;
285
291
  }
286
292
  [dir=rtl] .searchbar-cancel-button {
287
293
  left: unset;
288
294
  right: unset;
289
- right: 5px;
295
+ right: 9px;
290
296
  }
291
297
  @supports selector(:dir(rtl)) {
292
298
  .searchbar-cancel-button:dir(rtl) {
293
299
  left: unset;
294
300
  right: unset;
295
- right: 5px;
301
+ right: 9px;
296
302
  }
297
303
  }
298
304
  }
@@ -134,3 +134,28 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, screenshot, c
134
134
  });
135
135
  });
136
136
  });
137
+ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
138
+ test.describe(title('searchbar: cancel button alignment'), () => {
139
+ test('should align with the back button when used in a toolbar', async ({ page }, testInfo) => {
140
+ testInfo.annotations.push({
141
+ type: 'issue',
142
+ description: 'https://github.com/ionic-team/ionic-framework/issues/28468',
143
+ });
144
+ await page.setContent(`
145
+ <ion-header>
146
+ <ion-toolbar>
147
+ <ion-buttons slot="start">
148
+ <ion-back-button default-href="#"></ion-back-button>
149
+ </ion-buttons>
150
+ <ion-title>Test</ion-title>
151
+ </ion-toolbar>
152
+ <ion-toolbar>
153
+ <ion-searchbar show-cancel-button="always"></ion-searchbar>
154
+ </ion-toolbar>
155
+ </ion-header>
156
+ `, config);
157
+ const header = page.locator('ion-header');
158
+ await expect(header).toHaveScreenshot(screenshot(`searchbar-back-button-align`));
159
+ });
160
+ });
161
+ });
@@ -106,7 +106,13 @@ export class Segment {
106
106
  * before we can scroll.
107
107
  */
108
108
  raf(() => {
109
- this.scrollActiveButtonIntoView();
109
+ /**
110
+ * When the segment loads for the first
111
+ * time we just want to snap the active button into
112
+ * place instead of scroll. Smooth scrolling should only
113
+ * happen when the user interacts with the segment.
114
+ */
115
+ this.scrollActiveButtonIntoView(false);
110
116
  });
111
117
  this.gesture = (await import('../../utils/gesture')).createGesture({
112
118
  el: this.el,
@@ -236,28 +242,48 @@ export class Segment {
236
242
  buttons[next].classList.add('segment-button-after-checked');
237
243
  }
238
244
  }
239
- scrollActiveButtonIntoView() {
240
- const { scrollable, value } = this;
245
+ scrollActiveButtonIntoView(smoothScroll = true) {
246
+ const { scrollable, value, el } = this;
241
247
  if (scrollable) {
242
248
  const buttons = this.getButtons();
243
249
  const activeButton = buttons.find((button) => button.value === value);
244
250
  if (activeButton !== undefined) {
251
+ const scrollContainerBox = el.getBoundingClientRect();
252
+ const activeButtonBox = activeButton.getBoundingClientRect();
253
+ /**
254
+ * Subtract the active button x position from the scroll
255
+ * container x position. This will give us the x position
256
+ * of the active button within the scroll container.
257
+ */
258
+ const activeButtonLeft = activeButtonBox.x - scrollContainerBox.x;
259
+ /**
260
+ * If we just used activeButtonLeft, then the active button
261
+ * would be aligned with the left edge of the scroll container.
262
+ * Instead, we want the segment button to be centered. As a result,
263
+ * we subtract half of the scroll container width. This will position
264
+ * the left edge of the active button at the midpoint of the scroll container.
265
+ * We then add half of the active button width. This will position the active
266
+ * button such that the midpoint of the active button is at the midpoint of the
267
+ * scroll container.
268
+ */
269
+ const centeredX = activeButtonLeft - scrollContainerBox.width / 2 + activeButtonBox.width / 2;
245
270
  /**
246
- * Scrollable segment buttons should be
247
- * centered within the view including
248
- * buttons that are partially offscreen.
271
+ * We intentionally use scrollBy here instead of scrollIntoView
272
+ * to avoid a WebKit bug where accelerated animations break
273
+ * when using scrollIntoView. Using scrollIntoView will cause the
274
+ * segment container to jump during the transition and then snap into place.
275
+ * This is because scrollIntoView can potentially cause parent element
276
+ * containers to also scroll. scrollBy does not have this same behavior, so
277
+ * we use this API instead.
278
+ *
279
+ * Note that if there is not enough scrolling space to center the element
280
+ * within the scroll container, the browser will attempt
281
+ * to center by as much as it can.
249
282
  */
250
- activeButton.scrollIntoView({
251
- behavior: 'smooth',
252
- inline: 'center',
253
- /**
254
- * Segment should scroll on the
255
- * horizontal axis. `block: 'nearest'`
256
- * ensures that the vertical axis
257
- * does not scroll if the segment
258
- * as a whole is already in view.
259
- */
260
- block: 'nearest',
283
+ el.scrollBy({
284
+ top: 0,
285
+ left: centeredX,
286
+ behavior: smoothScroll ? 'smooth' : 'instant',
261
287
  });
262
288
  }
263
289
  }
@@ -81,6 +81,17 @@
81
81
 
82
82
  :host(:not(.legacy-select)) {
83
83
  width: 100%;
84
+ min-height: 44px;
85
+ }
86
+
87
+ /**
88
+ * Since the label sits on top of the element,
89
+ * the component needs to be taller otherwise the
90
+ * label will appear too close to the select text.
91
+ */
92
+ :host(.select-label-placement-floating),
93
+ :host(.select-label-placement-stacked) {
94
+ min-height: 56px;
84
95
  }
85
96
 
86
97
  :host(.ion-color) {
@@ -161,7 +172,7 @@
161
172
  right: 0;
162
173
  }
163
174
  @supports selector(:dir(rtl)) {
164
- :host(.legacy-select) label:dir(rtl) {
175
+ :host(.legacy-select:dir(rtl)) label {
165
176
  left: unset;
166
177
  right: unset;
167
178
  right: 0;
@@ -621,20 +632,6 @@ button {
621
632
  --padding-start: 16px;
622
633
  }
623
634
 
624
- :host(:not(.legacy-select)) {
625
- min-height: 44px;
626
- }
627
-
628
- /**
629
- * Since the label sits on top of the element,
630
- * the component needs to be taller otherwise the
631
- * label will appear too close to the select text.
632
- */
633
- :host(.select-label-placement-floating),
634
- :host(.select-label-placement-stacked) {
635
- min-height: 56px;
636
- }
637
-
638
635
  .select-icon {
639
636
  width: 1.125rem;
640
637
  height: 1.125rem;
@@ -81,6 +81,17 @@
81
81
 
82
82
  :host(:not(.legacy-select)) {
83
83
  width: 100%;
84
+ min-height: 44px;
85
+ }
86
+
87
+ /**
88
+ * Since the label sits on top of the element,
89
+ * the component needs to be taller otherwise the
90
+ * label will appear too close to the select text.
91
+ */
92
+ :host(.select-label-placement-floating),
93
+ :host(.select-label-placement-stacked) {
94
+ min-height: 56px;
84
95
  }
85
96
 
86
97
  :host(.ion-color) {
@@ -161,7 +172,7 @@
161
172
  right: 0;
162
173
  }
163
174
  @supports selector(:dir(rtl)) {
164
- :host(.legacy-select) label:dir(rtl) {
175
+ :host(.legacy-select:dir(rtl)) label {
165
176
  left: unset;
166
177
  right: unset;
167
178
  right: 0;
@@ -653,6 +664,7 @@ button {
653
664
  --border-radius: 4px;
654
665
  --padding-start: 16px;
655
666
  --padding-end: 16px;
667
+ min-height: 56px;
656
668
  }
657
669
 
658
670
  /**
@@ -716,7 +728,7 @@ button {
716
728
  }
717
729
 
718
730
  @supports selector(:dir(rtl)) {
719
- :host(.select-fill-solid) .select-wrapper:dir(rtl) {
731
+ :host(.select-fill-solid:dir(rtl)) .select-wrapper {
720
732
  border-top-left-radius: var(--border-radius);
721
733
  border-top-right-radius: var(--border-radius);
722
734
  border-bottom-right-radius: 0px;
@@ -773,6 +785,7 @@ button {
773
785
  --border-radius: 4px;
774
786
  --padding-start: 16px;
775
787
  --padding-end: 16px;
788
+ min-height: 56px;
776
789
  }
777
790
 
778
791
  :host(.select-fill-outline.select-shape-round) {
@@ -1027,10 +1040,6 @@ button {
1027
1040
  --padding-start: 16px;
1028
1041
  }
1029
1042
 
1030
- :host(:not(.legacy-select)) {
1031
- min-height: 56px;
1032
- }
1033
-
1034
1043
  .select-icon {
1035
1044
  width: 0.8125rem;
1036
1045
  transition: transform 0.15s cubic-bezier(0.4, 0, 0.2, 1);
@@ -1121,7 +1130,7 @@ button {
1121
1130
  right: 0;
1122
1131
  }
1123
1132
  @supports selector(:dir(rtl)) {
1124
- :host(.in-item) .select-highlight:dir(rtl) {
1133
+ :host(.in-item:dir(rtl)) .select-highlight {
1125
1134
  left: unset;
1126
1135
  right: unset;
1127
1136
  right: 0;
@@ -0,0 +1,31 @@
1
+ /*!
2
+ * (C) Ionic http://ionicframework.com - MIT License
3
+ */
4
+ import { expect } from "@playwright/test";
5
+ import { configs, test, Viewports } from "../../../../utils/test/playwright/index";
6
+ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => {
7
+ test.describe(title('split-pane: multiple'), () => {
8
+ test('using multiple split panes should not hide a menu in another split pane', async ({ page }) => {
9
+ test.info().annotations.push({
10
+ type: 'issue',
11
+ description: 'https://github.com/ionic-team/ionic-framework/issues/18683',
12
+ });
13
+ await page.setViewportSize(Viewports.large);
14
+ await page.goto(`/src/components/split-pane/test/multiple`, config);
15
+ const paneOneMenuOne = page.locator('ion-menu#pane-one-menu-one');
16
+ const paneOneMenuTwo = page.locator('ion-menu#pane-one-menu-two');
17
+ const paneTwoMenuOne = page.locator('ion-menu#pane-two-menu-one');
18
+ const paneTwoMenuTwo = page.locator('ion-menu#pane-two-menu-two');
19
+ const showPaneOne = page.locator('button#show-pane-one');
20
+ const showPaneTwo = page.locator('button#show-pane-two');
21
+ await expect(paneOneMenuOne).toBeVisible();
22
+ await expect(paneOneMenuTwo).toBeVisible();
23
+ await showPaneTwo.click();
24
+ await expect(paneTwoMenuOne).toBeVisible();
25
+ await expect(paneTwoMenuTwo).toBeVisible();
26
+ await showPaneOne.click();
27
+ await expect(paneOneMenuOne).toBeVisible();
28
+ await expect(paneOneMenuTwo).toBeVisible();
29
+ });
30
+ });
31
+ });
@@ -37,15 +37,15 @@
37
37
  * @prop --border: Border of the tab bar
38
38
  * @prop --color: Color of the tab bar
39
39
  */
40
- -webkit-padding-start: var(--ion-safe-area-left);
41
- padding-inline-start: var(--ion-safe-area-left);
42
- -webkit-padding-end: var(--ion-safe-area-right);
43
- padding-inline-end: var(--ion-safe-area-right);
44
40
  display: flex;
45
41
  align-items: center;
46
42
  justify-content: center;
47
43
  width: auto;
44
+ /* stylelint-disable */
45
+ padding-right: var(--ion-safe-area-right);
48
46
  padding-bottom: var(--ion-safe-area-bottom, 0);
47
+ padding-left: var(--ion-safe-area-left);
48
+ /* stylelint-enable */
49
49
  border-top: var(--border);
50
50
  background: var(--background);
51
51
  color: var(--color);
@@ -37,15 +37,15 @@
37
37
  * @prop --border: Border of the tab bar
38
38
  * @prop --color: Color of the tab bar
39
39
  */
40
- -webkit-padding-start: var(--ion-safe-area-left);
41
- padding-inline-start: var(--ion-safe-area-left);
42
- -webkit-padding-end: var(--ion-safe-area-right);
43
- padding-inline-end: var(--ion-safe-area-right);
44
40
  display: flex;
45
41
  align-items: center;
46
42
  justify-content: center;
47
43
  width: auto;
44
+ /* stylelint-disable */
45
+ padding-right: var(--ion-safe-area-right);
48
46
  padding-bottom: var(--ion-safe-area-bottom, 0);
47
+ padding-left: var(--ion-safe-area-left);
48
+ /* stylelint-enable */
49
49
  border-top: var(--border);
50
50
  background: var(--background);
51
51
  color: var(--color);
@@ -0,0 +1,43 @@
1
+ /*!
2
+ * (C) Ionic http://ionicframework.com - MIT License
3
+ */
4
+ import { expect } from "@playwright/test";
5
+ import { configs, test } from "../../../../utils/test/playwright/index";
6
+ /**
7
+ * This behavior needs to be tested in both modes and directions to
8
+ * make sure the safe area padding is applied only to that side
9
+ * regardless of direction
10
+ */
11
+ configs().forEach(({ title, screenshot, config }) => {
12
+ test.describe(title('tab-bar: basic'), () => {
13
+ test.describe('safe area', () => {
14
+ test('should have padding added by the safe area', async ({ page }) => {
15
+ await page.setContent(`
16
+ <style>
17
+ :root {
18
+ --ion-safe-area-left: 40px;
19
+ --ion-safe-area-right: 20px;
20
+ }
21
+ </style>
22
+
23
+ <ion-tab-bar selected-tab="1">
24
+ <ion-tab-button tab="1">
25
+ <ion-label>Recents</ion-label>
26
+ </ion-tab-button>
27
+
28
+ <ion-tab-button tab="2">
29
+ <ion-label>Favorites</ion-label>
30
+ <ion-badge>23</ion-badge>
31
+ </ion-tab-button>
32
+
33
+ <ion-tab-button tab="3">
34
+ <ion-label>Settings</ion-label>
35
+ </ion-tab-button>
36
+ </ion-tab-bar>
37
+ `, config);
38
+ const tabBar = page.locator('ion-tab-bar');
39
+ await expect(tabBar).toHaveScreenshot(screenshot(`tab-bar-safe-area`));
40
+ });
41
+ });
42
+ });
43
+ });
@@ -345,7 +345,7 @@ ion-ripple-effect {
345
345
  right: calc(50% + 12px);
346
346
  }
347
347
  @supports selector(:dir(rtl)) {
348
- :host(.tab-layout-icon-bottom) ::slotted(ion-badge):dir(rtl) {
348
+ :host(.tab-layout-icon-bottom:dir(rtl)) ::slotted(ion-badge) {
349
349
  left: unset;
350
350
  right: unset;
351
351
  right: calc(50% + 12px);
@@ -383,7 +383,7 @@ ion-ripple-effect {
383
383
  right: calc(50% + 35px);
384
384
  }
385
385
  @supports selector(:dir(rtl)) {
386
- :host(.tab-layout-icon-start) ::slotted(ion-badge):dir(rtl), :host(.tab-layout-icon-end) ::slotted(ion-badge):dir(rtl) {
386
+ :host(.tab-layout-icon-start:dir(rtl)) ::slotted(ion-badge), :host(.tab-layout-icon-end:dir(rtl)) ::slotted(ion-badge) {
387
387
  left: unset;
388
388
  right: unset;
389
389
  right: calc(50% + 35px);
@@ -412,7 +412,7 @@ ion-ripple-effect {
412
412
  right: calc(50% + 30px);
413
413
  }
414
414
  @supports selector(:dir(rtl)) {
415
- :host(.tab-layout-icon-hide) ::slotted(ion-badge):dir(rtl), :host(.tab-has-label-only) ::slotted(ion-badge):dir(rtl) {
415
+ :host(.tab-layout-icon-hide:dir(rtl)) ::slotted(ion-badge), :host(.tab-has-label-only:dir(rtl)) ::slotted(ion-badge) {
416
416
  left: unset;
417
417
  right: unset;
418
418
  right: calc(50% + 30px);
@@ -352,7 +352,7 @@ ion-ripple-effect {
352
352
  right: 70%;
353
353
  }
354
354
  @supports selector(:dir(rtl)) {
355
- :host(.tab-layout-icon-bottom) ::slotted(ion-badge):dir(rtl) {
355
+ :host(.tab-layout-icon-bottom:dir(rtl)) ::slotted(ion-badge) {
356
356
  left: unset;
357
357
  right: unset;
358
358
  right: 70%;
@@ -391,7 +391,7 @@ ion-ripple-effect {
391
391
  right: 80%;
392
392
  }
393
393
  @supports selector(:dir(rtl)) {
394
- :host(.tab-layout-icon-start) ::slotted(ion-badge):dir(rtl), :host(.tab-layout-icon-end) ::slotted(ion-badge):dir(rtl) {
394
+ :host(.tab-layout-icon-start:dir(rtl)) ::slotted(ion-badge), :host(.tab-layout-icon-end:dir(rtl)) ::slotted(ion-badge) {
395
395
  left: unset;
396
396
  right: unset;
397
397
  right: 80%;
@@ -430,7 +430,7 @@ ion-ripple-effect {
430
430
  right: 70%;
431
431
  }
432
432
  @supports selector(:dir(rtl)) {
433
- :host(.tab-layout-icon-hide) ::slotted(ion-badge):dir(rtl), :host(.tab-has-label-only) ::slotted(ion-badge):dir(rtl) {
433
+ :host(.tab-layout-icon-hide:dir(rtl)) ::slotted(ion-badge), :host(.tab-has-label-only:dir(rtl)) ::slotted(ion-badge) {
434
434
  left: unset;
435
435
  right: unset;
436
436
  right: 70%;