@ionic/core 8.1.2 → 8.1.3-dev.11717426643.18ac3ae5

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 (995) hide show
  1. package/components/action-sheet.js +13 -8
  2. package/components/alert.js +14 -10
  3. package/components/backdrop.js +10 -6
  4. package/components/button.js +41 -12
  5. package/components/buttons.js +10 -6
  6. package/components/checkbox.js +26 -13
  7. package/components/data.js +4 -4
  8. package/components/index2.js +1 -2
  9. package/components/index4.js +8 -7
  10. package/components/index6.js +27 -30
  11. package/components/index7.js +124 -27
  12. package/components/index8.js +150 -111
  13. package/components/input-shims.js +1 -1
  14. package/components/input.utils.js +1 -1
  15. package/components/ion-accordion-group.js +9 -6
  16. package/components/ion-accordion.js +15 -9
  17. package/components/ion-app.js +5 -6
  18. package/components/ion-avatar.js +48 -3
  19. package/components/ion-back-button.js +15 -11
  20. package/components/ion-badge.js +42 -6
  21. package/components/ion-breadcrumb.js +16 -10
  22. package/components/ion-breadcrumbs.js +9 -5
  23. package/components/ion-card-content.js +9 -5
  24. package/components/ion-card-header.js +9 -5
  25. package/components/ion-card-subtitle.js +9 -5
  26. package/components/ion-card-title.js +9 -5
  27. package/components/ion-card.js +17 -9
  28. package/components/ion-chip.js +45 -8
  29. package/components/ion-col.js +5 -5
  30. package/components/ion-content.js +11 -11
  31. package/components/ion-datetime-button.js +9 -6
  32. package/components/ion-datetime.js +47 -20
  33. package/components/ion-fab-button.js +15 -9
  34. package/components/ion-fab-list.js +5 -5
  35. package/components/ion-fab.js +6 -6
  36. package/components/ion-footer.js +15 -11
  37. package/components/ion-grid.js +5 -5
  38. package/components/ion-header.js +15 -11
  39. package/components/ion-img.js +5 -2
  40. package/components/ion-infinite-scroll-content.js +12 -8
  41. package/components/ion-infinite-scroll.js +5 -5
  42. package/components/ion-input-password-toggle.js +7 -8
  43. package/components/ion-input.js +101 -20
  44. package/components/ion-item-divider.js +9 -5
  45. package/components/ion-item-group.js +9 -5
  46. package/components/ion-item-option.js +11 -7
  47. package/components/ion-item-options.js +9 -5
  48. package/components/ion-item-sliding.js +5 -5
  49. package/components/ion-loading.js +12 -8
  50. package/components/ion-menu-button.js +13 -9
  51. package/components/ion-menu-toggle.js +5 -5
  52. package/components/ion-menu.js +11 -7
  53. package/components/ion-modal.js +14 -11
  54. package/components/ion-nav-link.js +1 -1
  55. package/components/ion-nav.js +7 -6
  56. package/components/ion-note.js +9 -5
  57. package/components/ion-picker-legacy.js +7 -8
  58. package/components/ion-progress-bar.js +10 -6
  59. package/components/ion-range.js +11 -8
  60. package/components/ion-refresher-content.js +9 -8
  61. package/components/ion-refresher.js +11 -7
  62. package/components/ion-reorder-group.js +5 -5
  63. package/components/ion-reorder.js +23 -5
  64. package/components/ion-router-link.js +6 -6
  65. package/components/ion-router-outlet.js +2 -2
  66. package/components/ion-row.js +5 -2
  67. package/components/ion-searchbar.js +62 -16
  68. package/components/ion-segment-button.js +12 -8
  69. package/components/ion-segment.js +9 -5
  70. package/components/ion-select-option.js +5 -2
  71. package/components/ion-select.js +67 -28
  72. package/components/ion-skeleton-text.js +5 -5
  73. package/components/ion-split-pane.js +12 -8
  74. package/components/ion-tab-bar.js +9 -5
  75. package/components/ion-tab-button.js +11 -7
  76. package/components/ion-tab.js +2 -2
  77. package/components/ion-tabs.js +2 -2
  78. package/components/ion-text.js +5 -5
  79. package/components/ion-textarea.js +13 -9
  80. package/components/ion-thumbnail.js +5 -2
  81. package/components/ion-title.js +9 -5
  82. package/components/ion-toast.js +13 -9
  83. package/components/ion-toggle.js +56 -18
  84. package/components/ion-toolbar.js +11 -7
  85. package/components/ionic-global.js +199 -15
  86. package/components/ios.transition.js +1 -0
  87. package/components/item.js +17 -11
  88. package/components/label.js +9 -5
  89. package/components/list-header.js +9 -5
  90. package/components/list.js +10 -6
  91. package/components/overlays.js +1 -2
  92. package/components/picker-column-option.js +9 -5
  93. package/components/picker-column.js +7 -7
  94. package/components/picker-column2.js +4 -4
  95. package/components/picker.js +8 -4
  96. package/components/popover.js +11 -8
  97. package/components/radio-group.js +5 -3
  98. package/components/radio.js +12 -8
  99. package/components/ripple-effect.js +5 -5
  100. package/components/select-popover.js +9 -2
  101. package/components/spinner.js +6 -6
  102. package/components/status-tap.js +1 -1
  103. package/css/core.css +1 -1
  104. package/css/core.css.map +1 -1
  105. package/css/display.css.map +1 -1
  106. package/css/flex-utils.css.map +1 -1
  107. package/css/float-elements.css.map +1 -1
  108. package/css/global.bundle.css.map +1 -1
  109. package/css/ionic/bundle.ionic.css +1 -0
  110. package/css/ionic/bundle.ionic.css.map +1 -0
  111. package/css/ionic/core.ionic.css +1 -0
  112. package/css/ionic/core.ionic.css.map +1 -0
  113. package/css/ionic/global.bundle.ionic.css +1 -0
  114. package/css/ionic/global.bundle.ionic.css.map +1 -0
  115. package/css/ionic/ionic-swiper.ionic.css +1 -0
  116. package/css/ionic/ionic-swiper.ionic.css.map +1 -0
  117. package/css/ionic/link.ionic.css +1 -0
  118. package/css/ionic/link.ionic.css.map +1 -0
  119. package/css/ionic/structure.ionic.css +1 -0
  120. package/css/ionic/structure.ionic.css.map +1 -0
  121. package/css/ionic/typography.ionic.css +1 -0
  122. package/css/ionic/typography.ionic.css.map +1 -0
  123. package/css/ionic/utils.bundle.ionic.css +1 -0
  124. package/css/ionic/utils.bundle.ionic.css.map +1 -0
  125. package/css/ionic-swiper.css +1 -1
  126. package/css/ionic-swiper.css.map +1 -1
  127. package/css/ionic.bundle.css +1 -1
  128. package/css/ionic.bundle.css.map +1 -1
  129. package/css/normalize.css.map +1 -1
  130. package/css/padding.css.map +1 -1
  131. package/css/palettes/dark.always.css.map +1 -1
  132. package/css/palettes/dark.class.css.map +1 -1
  133. package/css/palettes/dark.system.css.map +1 -1
  134. package/css/palettes/high-contrast-dark.always.css.map +1 -1
  135. package/css/palettes/high-contrast-dark.class.css.map +1 -1
  136. package/css/palettes/high-contrast-dark.system.css.map +1 -1
  137. package/css/palettes/high-contrast.always.css.map +1 -1
  138. package/css/palettes/high-contrast.class.css.map +1 -1
  139. package/css/palettes/high-contrast.system.css.map +1 -1
  140. package/css/structure.css.map +1 -1
  141. package/css/text-alignment.css.map +1 -1
  142. package/css/text-transformation.css.map +1 -1
  143. package/css/typography.css.map +1 -1
  144. package/css/utils.bundle.css.map +1 -1
  145. package/dist/cjs/{app-globals-66b7dc06.js → app-globals-2c313e1f.js} +1 -1
  146. package/dist/cjs/{button-active-9135c809.js → button-active-fb712da0.js} +1 -1
  147. package/dist/cjs/{data-21dc0f81.js → data-a69212d7.js} +6 -6
  148. package/dist/cjs/{hardware-back-button-ed931127.js → hardware-back-button-f0e55605.js} +2 -2
  149. package/dist/cjs/{index-8709af32.js → index-77bec042.js} +10 -3
  150. package/dist/cjs/{index-c0b7f8f4.js → index-b049f91b.js} +7 -8
  151. package/dist/cjs/{index-c54654c6.js → index-b2a647db.js} +13 -12
  152. package/dist/cjs/{index-5b6a7459.js → index-fd54455c.js} +2 -2
  153. package/dist/cjs/index.cjs.js +8 -9
  154. package/dist/cjs/{input-shims-9e59ef62.js → input-shims-f247986f.js} +3 -2
  155. package/dist/cjs/{input.utils-611cde0b.js → input.utils-95a72bcb.js} +2 -2
  156. package/dist/cjs/ion-accordion_2.cjs.entry.js +24 -15
  157. package/dist/cjs/ion-action-sheet.cjs.entry.js +17 -13
  158. package/dist/cjs/ion-alert.cjs.entry.js +18 -15
  159. package/dist/cjs/ion-app_8.cjs.entry.js +87 -68
  160. package/dist/cjs/ion-avatar_3.cjs.entry.js +87 -8
  161. package/dist/cjs/ion-back-button.cjs.entry.js +15 -11
  162. package/dist/cjs/ion-backdrop.cjs.entry.js +11 -7
  163. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +24 -14
  164. package/dist/cjs/ion-button_2.cjs.entry.js +45 -16
  165. package/dist/cjs/ion-card_5.cjs.entry.js +49 -26
  166. package/dist/cjs/ion-checkbox.cjs.entry.js +24 -13
  167. package/dist/cjs/ion-chip.cjs.entry.js +43 -8
  168. package/dist/cjs/ion-col_3.cjs.entry.js +14 -11
  169. package/dist/cjs/ion-datetime-button.cjs.entry.js +15 -12
  170. package/dist/cjs/ion-datetime_3.cjs.entry.js +135 -108
  171. package/dist/cjs/ion-fab_3.cjs.entry.js +24 -18
  172. package/dist/cjs/ion-img.cjs.entry.js +6 -3
  173. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +17 -14
  174. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +10 -11
  175. package/dist/cjs/ion-input.cjs.entry.js +100 -21
  176. package/dist/cjs/ion-item-option_3.cjs.entry.js +24 -17
  177. package/dist/cjs/ion-item_8.cjs.entry.js +70 -40
  178. package/dist/cjs/ion-loading.cjs.entry.js +15 -12
  179. package/dist/cjs/ion-menu_3.cjs.entry.js +30 -23
  180. package/dist/cjs/ion-modal.cjs.entry.js +23 -20
  181. package/dist/cjs/ion-nav_2.cjs.entry.js +10 -9
  182. package/dist/cjs/ion-picker-column-option.cjs.entry.js +10 -6
  183. package/dist/cjs/ion-picker-column.cjs.entry.js +8 -8
  184. package/dist/cjs/ion-picker.cjs.entry.js +9 -5
  185. package/dist/cjs/ion-popover.cjs.entry.js +18 -15
  186. package/dist/cjs/ion-progress-bar.cjs.entry.js +11 -7
  187. package/dist/cjs/ion-radio_2.cjs.entry.js +17 -11
  188. package/dist/cjs/ion-range.cjs.entry.js +17 -14
  189. package/dist/cjs/ion-refresher_2.cjs.entry.js +19 -15
  190. package/dist/cjs/ion-reorder_2.cjs.entry.js +27 -10
  191. package/dist/cjs/ion-ripple-effect.cjs.entry.js +6 -6
  192. package/dist/cjs/ion-route_4.cjs.entry.js +7 -7
  193. package/dist/cjs/ion-searchbar.cjs.entry.js +62 -16
  194. package/dist/cjs/ion-segment_2.cjs.entry.js +21 -13
  195. package/dist/cjs/ion-select_3.cjs.entry.js +81 -33
  196. package/dist/cjs/ion-spinner.cjs.entry.js +7 -7
  197. package/dist/cjs/ion-split-pane.cjs.entry.js +13 -9
  198. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +20 -12
  199. package/dist/cjs/ion-tab_2.cjs.entry.js +5 -5
  200. package/dist/cjs/ion-text.cjs.entry.js +6 -6
  201. package/dist/cjs/ion-textarea.cjs.entry.js +15 -12
  202. package/dist/cjs/ion-toast.cjs.entry.js +36 -32
  203. package/dist/cjs/ion-toggle.cjs.entry.js +56 -18
  204. package/dist/cjs/ionic-global-ecb21da6.js +418 -0
  205. package/dist/cjs/ionic.cjs.js +5 -5
  206. package/dist/cjs/{ios.transition-5ddf92f1.js → ios.transition-9f318fa2.js} +4 -4
  207. package/dist/cjs/loader.cjs.js +4 -4
  208. package/dist/cjs/{md.transition-047c18c5.js → md.transition-d9a93005.js} +3 -4
  209. package/dist/cjs/{overlays-cb04d075.js → overlays-06e33ba5.js} +3 -4
  210. package/dist/cjs/{status-tap-5b2775cd.js → status-tap-66bfb163.js} +3 -3
  211. package/dist/collection/collection-manifest.json +1 -1
  212. package/dist/collection/components/accordion/accordion.ios.css +12 -0
  213. package/dist/collection/components/accordion/accordion.js +19 -15
  214. package/dist/collection/components/accordion/accordion.md.css +6 -0
  215. package/dist/collection/components/accordion-group/accordion-group.ios.css +12 -0
  216. package/dist/collection/components/accordion-group/accordion-group.js +11 -8
  217. package/dist/collection/components/accordion-group/accordion-group.md.css +18 -0
  218. package/dist/collection/components/action-sheet/action-sheet.ios.css +18 -6
  219. package/dist/collection/components/action-sheet/action-sheet.js +14 -10
  220. package/dist/collection/components/action-sheet/action-sheet.md.css +17 -5
  221. package/dist/collection/components/alert/alert.ios.css +19 -1
  222. package/dist/collection/components/alert/alert.js +15 -12
  223. package/dist/collection/components/alert/alert.md.css +19 -1
  224. package/dist/collection/components/app/app.js +8 -4
  225. package/dist/collection/components/avatar/avatar.ionic.css +223 -0
  226. package/dist/collection/components/avatar/avatar.ios.css +12 -0
  227. package/dist/collection/components/avatar/avatar.js +88 -4
  228. package/dist/collection/components/avatar/avatar.md.css +12 -0
  229. package/dist/collection/components/avatar/test/shape/avatar.e2e.js +134 -0
  230. package/dist/collection/components/avatar/test/size/avatar.e2e.js +147 -0
  231. package/dist/collection/components/back-button/back-button.ios.css +60 -48
  232. package/dist/collection/components/back-button/back-button.js +14 -11
  233. package/dist/collection/components/back-button/back-button.md.css +60 -48
  234. package/dist/collection/components/backdrop/backdrop.ios.css +13 -1
  235. package/dist/collection/components/backdrop/backdrop.js +12 -6
  236. package/dist/collection/components/backdrop/backdrop.md.css +13 -1
  237. package/dist/collection/components/badge/badge.ionic.css +250 -0
  238. package/dist/collection/components/badge/badge.ios.css +12 -0
  239. package/dist/collection/components/badge/badge.js +75 -8
  240. package/dist/collection/components/badge/badge.md.css +12 -0
  241. package/dist/collection/components/badge/test/shape/badge.e2e.js +70 -0
  242. package/dist/collection/components/badge/test/size/badge.e2e.js +96 -0
  243. package/dist/collection/components/breadcrumb/breadcrumb.ios.css +20 -8
  244. package/dist/collection/components/breadcrumb/breadcrumb.js +16 -10
  245. package/dist/collection/components/breadcrumb/breadcrumb.md.css +20 -8
  246. package/dist/collection/components/breadcrumbs/breadcrumbs.ios.css +6 -0
  247. package/dist/collection/components/breadcrumbs/breadcrumbs.js +11 -9
  248. package/dist/collection/components/breadcrumbs/breadcrumbs.md.css +6 -0
  249. package/dist/collection/components/button/button.ionic.css +630 -0
  250. package/dist/collection/components/button/button.ios.css +42 -16
  251. package/dist/collection/components/button/button.js +46 -17
  252. package/dist/collection/components/button/button.md.css +33 -20
  253. package/dist/collection/components/button/test/clear/button.e2e.js +6 -3
  254. package/dist/collection/components/button/test/outline/button.e2e.js +1 -0
  255. package/dist/collection/components/button/test/shape/button.e2e.js +250 -0
  256. package/dist/collection/components/button/test/size/button.e2e.js +18 -1
  257. package/dist/collection/components/button/test/states/button.e2e.js +51 -0
  258. package/dist/collection/components/buttons/buttons.ios.css +22 -4
  259. package/dist/collection/components/buttons/buttons.js +14 -8
  260. package/dist/collection/components/buttons/buttons.md.css +18 -0
  261. package/dist/collection/components/card/card.ionic.css +88 -0
  262. package/dist/collection/components/card/card.ios.css +30 -4
  263. package/dist/collection/components/card/card.js +34 -10
  264. package/dist/collection/components/card/card.md.css +30 -4
  265. package/dist/collection/components/card/test/shape/card.e2e.js +40 -0
  266. package/dist/collection/components/card-content/card-content.ios.css +12 -0
  267. package/dist/collection/components/card-content/card-content.js +11 -8
  268. package/dist/collection/components/card-content/card-content.md.css +12 -0
  269. package/dist/collection/components/card-header/card-header.ios.css +12 -0
  270. package/dist/collection/components/card-header/card-header.js +12 -9
  271. package/dist/collection/components/card-header/card-header.md.css +12 -0
  272. package/dist/collection/components/card-subtitle/card-subtitle.ios.css +12 -0
  273. package/dist/collection/components/card-subtitle/card-subtitle.js +11 -8
  274. package/dist/collection/components/card-subtitle/card-subtitle.md.css +12 -0
  275. package/dist/collection/components/card-title/card-title.ios.css +12 -0
  276. package/dist/collection/components/card-title/card-title.js +11 -8
  277. package/dist/collection/components/card-title/card-title.md.css +12 -0
  278. package/dist/collection/components/checkbox/checkbox.ionic.css +498 -0
  279. package/dist/collection/components/checkbox/checkbox.ios.css +20 -2
  280. package/dist/collection/components/checkbox/checkbox.js +59 -14
  281. package/dist/collection/components/checkbox/checkbox.md.css +21 -3
  282. package/dist/collection/components/checkbox/test/basic/checkbox.e2e.js +66 -1
  283. package/dist/collection/components/checkbox/test/label/checkbox.e2e.js +1 -1
  284. package/dist/collection/components/checkbox/test/states/checkbox.e2e.js +32 -1
  285. package/dist/collection/components/chip/chip.ionic.css +141 -0
  286. package/dist/collection/components/chip/chip.ios.css +20 -1
  287. package/dist/collection/components/chip/chip.js +77 -8
  288. package/dist/collection/components/chip/chip.md.css +20 -1
  289. package/dist/collection/components/chip/test/shape/chip.e2e.js +39 -0
  290. package/dist/collection/components/chip/test/size/chip.e2e.js +26 -0
  291. package/dist/collection/components/chip/test/states/chip.e2e.js +16 -0
  292. package/dist/collection/components/col/col.css +12 -0
  293. package/dist/collection/components/col/col.js +9 -5
  294. package/dist/collection/components/content/content.css +8 -2
  295. package/dist/collection/components/content/content.js +13 -10
  296. package/dist/collection/components/datetime/datetime.ios.css +15 -3
  297. package/dist/collection/components/datetime/datetime.js +47 -19
  298. package/dist/collection/components/datetime/datetime.md.css +15 -3
  299. package/dist/collection/components/datetime/utils/data.js +3 -3
  300. package/dist/collection/components/datetime-button/datetime-button.ios.css +6 -0
  301. package/dist/collection/components/datetime-button/datetime-button.js +11 -8
  302. package/dist/collection/components/datetime-button/datetime-button.md.css +6 -0
  303. package/dist/collection/components/fab/fab.css +25 -1
  304. package/dist/collection/components/fab/fab.js +9 -5
  305. package/dist/collection/components/fab-button/fab-button.ios.css +18 -6
  306. package/dist/collection/components/fab-button/fab-button.js +19 -14
  307. package/dist/collection/components/fab-button/fab-button.md.css +20 -8
  308. package/dist/collection/components/fab-list/fab-list.css +12 -0
  309. package/dist/collection/components/fab-list/fab-list.js +9 -5
  310. package/dist/collection/components/footer/footer.ios.css +14 -2
  311. package/dist/collection/components/footer/footer.js +17 -14
  312. package/dist/collection/components/footer/footer.md.css +12 -0
  313. package/dist/collection/components/grid/grid.css +12 -0
  314. package/dist/collection/components/grid/grid.js +9 -5
  315. package/dist/collection/components/header/header.ios.css +14 -2
  316. package/dist/collection/components/header/header.js +17 -14
  317. package/dist/collection/components/header/header.md.css +12 -0
  318. package/dist/collection/components/img/img.js +8 -2
  319. package/dist/collection/components/infinite-scroll/infinite-scroll.js +8 -4
  320. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.ios.css +12 -0
  321. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +16 -10
  322. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.md.css +12 -0
  323. package/dist/collection/components/input/input.ionic.css +1031 -0
  324. package/dist/collection/components/input/input.ios.css +21 -2
  325. package/dist/collection/components/input/input.js +127 -29
  326. package/dist/collection/components/input/input.md.css +43 -4
  327. package/dist/collection/components/input/test/basic/input.e2e.js +66 -0
  328. package/dist/collection/components/input/test/bottom-content/input.e2e.js +24 -5
  329. package/dist/collection/components/input/test/fill/input.e2e.js +37 -39
  330. package/dist/collection/components/input/test/highlight/input.e2e.js +94 -0
  331. package/dist/collection/components/input/test/shape/input.e2e.js +165 -0
  332. package/dist/collection/components/input/test/size/input.e2e.js +164 -0
  333. package/dist/collection/components/input/test/slot/input.e2e.js +14 -0
  334. package/dist/collection/components/input/test/states/input.e2e.js +173 -0
  335. package/dist/collection/components/input-password-toggle/input-password-toggle.js +6 -5
  336. package/dist/collection/components/item/item.ios.css +20 -8
  337. package/dist/collection/components/item/item.js +21 -16
  338. package/dist/collection/components/item/item.md.css +31 -7
  339. package/dist/collection/components/item-divider/item-divider.ios.css +18 -0
  340. package/dist/collection/components/item-divider/item-divider.js +11 -8
  341. package/dist/collection/components/item-divider/item-divider.md.css +18 -0
  342. package/dist/collection/components/item-group/item-group.ios.css +12 -0
  343. package/dist/collection/components/item-group/item-group.js +13 -7
  344. package/dist/collection/components/item-group/item-group.md.css +12 -0
  345. package/dist/collection/components/item-option/item-option.ios.css +14 -2
  346. package/dist/collection/components/item-option/item-option.js +11 -8
  347. package/dist/collection/components/item-option/item-option.md.css +14 -2
  348. package/dist/collection/components/item-options/item-options.ios.css +18 -0
  349. package/dist/collection/components/item-options/item-options.js +13 -7
  350. package/dist/collection/components/item-options/item-options.md.css +18 -0
  351. package/dist/collection/components/item-sliding/item-sliding.css +6 -0
  352. package/dist/collection/components/item-sliding/item-sliding.js +8 -4
  353. package/dist/collection/components/label/label.ios.css +18 -0
  354. package/dist/collection/components/label/label.js +11 -8
  355. package/dist/collection/components/label/label.md.css +18 -0
  356. package/dist/collection/components/list/list.ios.css +18 -0
  357. package/dist/collection/components/list/list.js +12 -9
  358. package/dist/collection/components/list/list.md.css +18 -0
  359. package/dist/collection/components/list-header/list-header.ios.css +18 -0
  360. package/dist/collection/components/list-header/list-header.js +11 -8
  361. package/dist/collection/components/list-header/list-header.md.css +18 -0
  362. package/dist/collection/components/loading/loading.ios.css +13 -1
  363. package/dist/collection/components/loading/loading.js +13 -10
  364. package/dist/collection/components/loading/loading.md.css +13 -1
  365. package/dist/collection/components/menu/menu.ios.css +15 -3
  366. package/dist/collection/components/menu/menu.js +12 -7
  367. package/dist/collection/components/menu/menu.md.css +15 -3
  368. package/dist/collection/components/menu-button/menu-button.ios.css +16 -4
  369. package/dist/collection/components/menu-button/menu-button.js +12 -9
  370. package/dist/collection/components/menu-button/menu-button.md.css +17 -5
  371. package/dist/collection/components/menu-toggle/menu-toggle.js +8 -5
  372. package/dist/collection/components/modal/modal.ios.css +14 -2
  373. package/dist/collection/components/modal/modal.js +13 -10
  374. package/dist/collection/components/modal/modal.md.css +14 -2
  375. package/dist/collection/components/nav/nav.css +7 -1
  376. package/dist/collection/components/nav/nav.js +11 -5
  377. package/dist/collection/components/nav-link/nav-link.js +5 -1
  378. package/dist/collection/components/note/note.ios.css +12 -0
  379. package/dist/collection/components/note/note.js +11 -8
  380. package/dist/collection/components/note/note.md.css +12 -0
  381. package/dist/collection/components/picker/picker.ios.css +15 -3
  382. package/dist/collection/components/picker/picker.js +8 -5
  383. package/dist/collection/components/picker/picker.md.css +15 -3
  384. package/dist/collection/components/picker-column/picker-column.css +9 -2
  385. package/dist/collection/components/picker-column/picker-column.js +8 -7
  386. package/dist/collection/components/picker-column-option/picker-column-option.ios.css +6 -0
  387. package/dist/collection/components/picker-column-option/picker-column-option.js +13 -7
  388. package/dist/collection/components/picker-column-option/picker-column-option.md.css +6 -0
  389. package/dist/collection/components/picker-legacy/picker.ios.css +13 -1
  390. package/dist/collection/components/picker-legacy/picker.js +7 -6
  391. package/dist/collection/components/picker-legacy/picker.md.css +13 -1
  392. package/dist/collection/components/picker-legacy-column/picker-column.ios.css +12 -0
  393. package/dist/collection/components/picker-legacy-column/picker-column.js +4 -4
  394. package/dist/collection/components/picker-legacy-column/picker-column.md.css +12 -0
  395. package/dist/collection/components/popover/popover.ios.css +13 -1
  396. package/dist/collection/components/popover/popover.js +15 -12
  397. package/dist/collection/components/popover/popover.md.css +13 -1
  398. package/dist/collection/components/progress-bar/progress-bar.ios.css +8 -2
  399. package/dist/collection/components/progress-bar/progress-bar.js +10 -7
  400. package/dist/collection/components/progress-bar/progress-bar.md.css +8 -2
  401. package/dist/collection/components/radio/radio.ios.css +20 -2
  402. package/dist/collection/components/radio/radio.js +12 -9
  403. package/dist/collection/components/radio/radio.md.css +20 -2
  404. package/dist/collection/components/radio-group/radio-group.js +9 -3
  405. package/dist/collection/components/range/range.ios.css +12 -0
  406. package/dist/collection/components/range/range.js +12 -9
  407. package/dist/collection/components/range/range.md.css +12 -0
  408. package/dist/collection/components/refresher/refresher.ios.css +14 -1
  409. package/dist/collection/components/refresher/refresher.js +11 -8
  410. package/dist/collection/components/refresher/refresher.md.css +15 -2
  411. package/dist/collection/components/refresher-content/refresher-content.js +12 -7
  412. package/dist/collection/components/reorder/reorder.ios.css +6 -0
  413. package/dist/collection/components/reorder/reorder.js +26 -6
  414. package/dist/collection/components/reorder/reorder.md.css +6 -0
  415. package/dist/collection/components/reorder-group/reorder-group.css +6 -0
  416. package/dist/collection/components/reorder-group/reorder-group.js +8 -4
  417. package/dist/collection/components/ripple-effect/ripple-effect.css +7 -1
  418. package/dist/collection/components/ripple-effect/ripple-effect.js +8 -4
  419. package/dist/collection/components/route/route.js +4 -0
  420. package/dist/collection/components/router/router.js +4 -0
  421. package/dist/collection/components/router-link/router-link.css +8 -2
  422. package/dist/collection/components/router-link/router-link.js +9 -5
  423. package/dist/collection/components/router-outlet/router-outlet.css +7 -1
  424. package/dist/collection/components/router-outlet/router-outlet.js +5 -2
  425. package/dist/collection/components/row/row.css +12 -0
  426. package/dist/collection/components/row/row.js +9 -2
  427. package/dist/collection/components/searchbar/searchbar.ios.css +14 -2
  428. package/dist/collection/components/searchbar/searchbar.js +68 -24
  429. package/dist/collection/components/searchbar/searchbar.md.css +14 -2
  430. package/dist/collection/components/segment/segment.ios.css +18 -0
  431. package/dist/collection/components/segment/segment.js +11 -8
  432. package/dist/collection/components/segment/segment.md.css +18 -0
  433. package/dist/collection/components/segment-button/segment-button.ios.css +16 -4
  434. package/dist/collection/components/segment-button/segment-button.js +12 -9
  435. package/dist/collection/components/segment-button/segment-button.md.css +18 -6
  436. package/dist/collection/components/select/select.ios.css +22 -3
  437. package/dist/collection/components/select/select.js +70 -31
  438. package/dist/collection/components/select/select.md.css +38 -5
  439. package/dist/collection/components/select-option/select-option.js +9 -2
  440. package/dist/collection/components/select-popover/select-popover.ios.css +18 -0
  441. package/dist/collection/components/select-popover/select-popover.js +12 -4
  442. package/dist/collection/components/select-popover/select-popover.md.css +18 -0
  443. package/dist/collection/components/skeleton-text/skeleton-text.css +6 -0
  444. package/dist/collection/components/skeleton-text/skeleton-text.js +9 -5
  445. package/dist/collection/components/spinner/spinner.css +6 -0
  446. package/dist/collection/components/spinner/spinner.js +10 -6
  447. package/dist/collection/components/split-pane/split-pane.ios.css +20 -2
  448. package/dist/collection/components/split-pane/split-pane.js +14 -8
  449. package/dist/collection/components/split-pane/split-pane.md.css +20 -2
  450. package/dist/collection/components/tab/tab.js +6 -2
  451. package/dist/collection/components/tab-bar/tab-bar.ionic.css +163 -0
  452. package/dist/collection/components/tab-bar/tab-bar.ios.css +18 -0
  453. package/dist/collection/components/tab-bar/tab-bar.js +12 -9
  454. package/dist/collection/components/tab-bar/tab-bar.md.css +18 -0
  455. package/dist/collection/components/tab-bar/test/basic/tab-bar.e2e.js +34 -0
  456. package/dist/collection/components/tab-button/tab-button.ionic.css +264 -0
  457. package/dist/collection/components/tab-button/tab-button.ios.css +15 -3
  458. package/dist/collection/components/tab-button/tab-button.js +11 -8
  459. package/dist/collection/components/tab-button/tab-button.md.css +15 -3
  460. package/dist/collection/components/tabs/tabs.css +7 -1
  461. package/dist/collection/components/tabs/tabs.js +4 -1
  462. package/dist/collection/components/text/text.css +6 -0
  463. package/dist/collection/components/text/text.js +7 -6
  464. package/dist/collection/components/textarea/textarea.ios.css +26 -1
  465. package/dist/collection/components/textarea/textarea.js +15 -12
  466. package/dist/collection/components/textarea/textarea.md.css +39 -2
  467. package/dist/collection/components/thumbnail/thumbnail.css +6 -0
  468. package/dist/collection/components/thumbnail/thumbnail.js +9 -2
  469. package/dist/collection/components/title/title.ios.css +6 -0
  470. package/dist/collection/components/title/title.js +13 -7
  471. package/dist/collection/components/title/title.md.css +6 -0
  472. package/dist/collection/components/toast/animations/utils.js +1 -1
  473. package/dist/collection/components/toast/toast.ios.css +12 -0
  474. package/dist/collection/components/toast/toast.js +15 -11
  475. package/dist/collection/components/toast/toast.md.css +12 -0
  476. package/dist/collection/components/toggle/toggle.ios.css +23 -2
  477. package/dist/collection/components/toggle/toggle.js +55 -18
  478. package/dist/collection/components/toggle/toggle.md.css +20 -2
  479. package/dist/collection/components/toolbar/toolbar.ios.css +14 -2
  480. package/dist/collection/components/toolbar/toolbar.js +13 -10
  481. package/dist/collection/components/toolbar/toolbar.md.css +14 -2
  482. package/dist/collection/css/test/link/basic/link.e2e.js +35 -0
  483. package/dist/collection/css/test/{a11y → typography/a11y}/typography.e2e.js +1 -1
  484. package/dist/collection/css/test/typography/basic/typography.e2e.js +90 -0
  485. package/dist/collection/global/config.js +8 -1
  486. package/dist/collection/global/ionic-global.js +161 -13
  487. package/dist/collection/global/test/config-controller.spec.js +9 -1
  488. package/dist/collection/global/test/ionic-global.spec.js +109 -0
  489. package/dist/collection/themes/{test → native/test}/colors/theme.e2e.js +1 -1
  490. package/dist/collection/utils/menu-controller/animations/overlay.js +3 -3
  491. package/dist/collection/utils/menu-controller/animations/push.js +2 -1
  492. package/dist/collection/utils/menu-controller/animations/reveal.js +2 -1
  493. package/dist/collection/utils/test/playwright/generator.js +48 -23
  494. package/dist/collection/utils/test/playwright/page/utils/goto.js +14 -5
  495. package/dist/collection/utils/test/playwright/page/utils/set-content.js +13 -1
  496. package/dist/collection/utils/transition/ios.transition.js +1 -0
  497. package/dist/docs.d.ts +34 -0
  498. package/dist/docs.json +10237 -769
  499. package/dist/esm/{app-globals-b99e6d29.js → app-globals-b6113f52.js} +1 -1
  500. package/dist/esm/{button-active-920addb8.js → button-active-65828010.js} +1 -1
  501. package/dist/esm/{data-ae11fd43.js → data-164d6834.js} +4 -4
  502. package/dist/esm/{hardware-back-button-2d9760b6.js → hardware-back-button-dabd9bb5.js} +2 -2
  503. package/dist/esm/{index-9aab3bcf.js → index-05e49c52.js} +11 -4
  504. package/dist/esm/{index-8e6b6a24.js → index-6203f8c3.js} +4 -5
  505. package/dist/esm/{index-7ae7186a.js → index-be63bab1.js} +9 -8
  506. package/dist/esm/{index-5cc724f3.js → index-daf9f480.js} +1 -1
  507. package/dist/esm/index.js +8 -9
  508. package/dist/esm/{input-shims-0314bbe5.js → input-shims-ca8b89f2.js} +3 -2
  509. package/dist/esm/{input.utils-09c71bc7.js → input.utils-e548b60f.js} +1 -1
  510. package/dist/esm/ion-accordion_2.entry.js +23 -14
  511. package/dist/esm/ion-action-sheet.entry.js +17 -13
  512. package/dist/esm/ion-alert.entry.js +18 -15
  513. package/dist/esm/ion-app_8.entry.js +76 -57
  514. package/dist/esm/ion-avatar_3.entry.js +87 -8
  515. package/dist/esm/ion-back-button.entry.js +15 -11
  516. package/dist/esm/ion-backdrop.entry.js +11 -7
  517. package/dist/esm/ion-breadcrumb_2.entry.js +24 -14
  518. package/dist/esm/ion-button_2.entry.js +42 -13
  519. package/dist/esm/ion-card_5.entry.js +49 -26
  520. package/dist/esm/ion-checkbox.entry.js +24 -13
  521. package/dist/esm/ion-chip.entry.js +43 -8
  522. package/dist/esm/ion-col_3.entry.js +14 -11
  523. package/dist/esm/ion-datetime-button.entry.js +11 -8
  524. package/dist/esm/ion-datetime_3.entry.js +60 -33
  525. package/dist/esm/ion-fab_3.entry.js +24 -18
  526. package/dist/esm/ion-img.entry.js +6 -3
  527. package/dist/esm/ion-infinite-scroll_2.entry.js +17 -14
  528. package/dist/esm/ion-input-password-toggle.entry.js +7 -8
  529. package/dist/esm/ion-input.entry.js +100 -21
  530. package/dist/esm/ion-item-option_3.entry.js +24 -17
  531. package/dist/esm/ion-item_8.entry.js +70 -40
  532. package/dist/esm/ion-loading.entry.js +15 -12
  533. package/dist/esm/ion-menu_3.entry.js +30 -23
  534. package/dist/esm/ion-modal.entry.js +18 -15
  535. package/dist/esm/ion-nav_2.entry.js +10 -9
  536. package/dist/esm/ion-picker-column-option.entry.js +10 -6
  537. package/dist/esm/ion-picker-column.entry.js +8 -8
  538. package/dist/esm/ion-picker.entry.js +9 -5
  539. package/dist/esm/ion-popover.entry.js +15 -12
  540. package/dist/esm/ion-progress-bar.entry.js +11 -7
  541. package/dist/esm/ion-radio_2.entry.js +17 -11
  542. package/dist/esm/ion-range.entry.js +12 -9
  543. package/dist/esm/ion-refresher_2.entry.js +19 -15
  544. package/dist/esm/ion-reorder_2.entry.js +27 -10
  545. package/dist/esm/ion-ripple-effect.entry.js +6 -6
  546. package/dist/esm/ion-route_4.entry.js +7 -7
  547. package/dist/esm/ion-searchbar.entry.js +62 -16
  548. package/dist/esm/ion-segment_2.entry.js +21 -13
  549. package/dist/esm/ion-select_3.entry.js +81 -33
  550. package/dist/esm/ion-spinner.entry.js +7 -7
  551. package/dist/esm/ion-split-pane.entry.js +13 -9
  552. package/dist/esm/ion-tab-bar_2.entry.js +20 -12
  553. package/dist/esm/ion-tab_2.entry.js +5 -5
  554. package/dist/esm/ion-text.entry.js +6 -6
  555. package/dist/esm/ion-textarea.entry.js +15 -12
  556. package/dist/esm/ion-toast.entry.js +16 -12
  557. package/dist/esm/ion-toggle.entry.js +56 -18
  558. package/dist/esm/ionic-global-3a78dab3.js +408 -0
  559. package/dist/esm/ionic.js +6 -6
  560. package/dist/esm/{ios.transition-e35d0940.js → ios.transition-31e880a0.js} +4 -4
  561. package/dist/esm/loader.js +5 -5
  562. package/dist/esm/{md.transition-4b90a1f0.js → md.transition-059ed0a2.js} +3 -4
  563. package/dist/esm/{overlays-df2c06b2.js → overlays-65d2b329.js} +2 -3
  564. package/dist/esm/{status-tap-12c27922.js → status-tap-c43a12b6.js} +3 -3
  565. package/dist/esm-es5/app-globals-b6113f52.js +4 -0
  566. package/dist/esm-es5/{button-active-920addb8.js → button-active-65828010.js} +1 -1
  567. package/dist/esm-es5/data-164d6834.js +4 -0
  568. package/dist/esm-es5/{hardware-back-button-2d9760b6.js → hardware-back-button-dabd9bb5.js} +1 -1
  569. package/dist/esm-es5/index-05e49c52.js +5 -0
  570. package/dist/esm-es5/index-6203f8c3.js +4 -0
  571. package/dist/esm-es5/index-be63bab1.js +4 -0
  572. package/dist/esm-es5/index-daf9f480.js +4 -0
  573. package/dist/esm-es5/index.js +1 -1
  574. package/dist/esm-es5/input-shims-ca8b89f2.js +4 -0
  575. package/dist/esm-es5/input.utils-e548b60f.js +4 -0
  576. package/dist/esm-es5/ion-accordion_2.entry.js +1 -1
  577. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  578. package/dist/esm-es5/ion-alert.entry.js +1 -1
  579. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  580. package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
  581. package/dist/esm-es5/ion-back-button.entry.js +1 -1
  582. package/dist/esm-es5/ion-backdrop.entry.js +1 -1
  583. package/dist/esm-es5/ion-breadcrumb_2.entry.js +1 -1
  584. package/dist/esm-es5/ion-button_2.entry.js +1 -1
  585. package/dist/esm-es5/ion-card_5.entry.js +1 -1
  586. package/dist/esm-es5/ion-checkbox.entry.js +1 -1
  587. package/dist/esm-es5/ion-chip.entry.js +1 -1
  588. package/dist/esm-es5/ion-col_3.entry.js +1 -1
  589. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  590. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  591. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  592. package/dist/esm-es5/ion-img.entry.js +1 -1
  593. package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
  594. package/dist/esm-es5/ion-input-password-toggle.entry.js +1 -1
  595. package/dist/esm-es5/ion-input.entry.js +1 -1
  596. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  597. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  598. package/dist/esm-es5/ion-loading.entry.js +1 -1
  599. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  600. package/dist/esm-es5/ion-modal.entry.js +1 -1
  601. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  602. package/dist/esm-es5/ion-picker-column-option.entry.js +1 -1
  603. package/dist/esm-es5/ion-picker-column.entry.js +1 -1
  604. package/dist/esm-es5/ion-picker.entry.js +1 -1
  605. package/dist/esm-es5/ion-popover.entry.js +1 -1
  606. package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
  607. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  608. package/dist/esm-es5/ion-range.entry.js +1 -1
  609. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  610. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  611. package/dist/esm-es5/ion-ripple-effect.entry.js +1 -1
  612. package/dist/esm-es5/ion-route_4.entry.js +1 -1
  613. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  614. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  615. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  616. package/dist/esm-es5/ion-spinner.entry.js +1 -1
  617. package/dist/esm-es5/ion-split-pane.entry.js +1 -1
  618. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  619. package/dist/esm-es5/ion-tab_2.entry.js +1 -1
  620. package/dist/esm-es5/ion-text.entry.js +1 -1
  621. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  622. package/dist/esm-es5/ion-toast.entry.js +1 -1
  623. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  624. package/dist/esm-es5/ionic-global-3a78dab3.js +4 -0
  625. package/dist/esm-es5/ionic.js +1 -1
  626. package/dist/esm-es5/ios.transition-31e880a0.js +4 -0
  627. package/dist/esm-es5/loader.js +1 -1
  628. package/dist/esm-es5/md.transition-059ed0a2.js +4 -0
  629. package/dist/esm-es5/overlays-65d2b329.js +4 -0
  630. package/dist/esm-es5/status-tap-c43a12b6.js +4 -0
  631. package/dist/html.html-data.json +2054 -100
  632. package/dist/ionic/index.esm.js +1 -1
  633. package/dist/ionic/ionic.esm.js +1 -1
  634. package/dist/ionic/ionic.js +1 -1
  635. package/dist/ionic/p-00c68658.entry.js +4 -0
  636. package/dist/ionic/p-0559f877.entry.js +4 -0
  637. package/dist/ionic/p-09e2b04c.system.entry.js +4 -0
  638. package/dist/ionic/p-0afcfb02.system.entry.js +4 -0
  639. package/dist/ionic/p-0c0571e1.entry.js +4 -0
  640. package/dist/ionic/p-1046984f.system.entry.js +4 -0
  641. package/dist/ionic/p-120aeab9.system.entry.js +4 -0
  642. package/dist/ionic/p-1210e7e6.system.entry.js +4 -0
  643. package/dist/ionic/{p-e81f22e3.system.js → p-1398cb39.system.js} +1 -1
  644. package/dist/ionic/p-140acfec.system.entry.js +4 -0
  645. package/dist/ionic/p-15492684.system.entry.js +4 -0
  646. package/dist/ionic/p-16f7ebeb.entry.js +4 -0
  647. package/dist/ionic/p-17c596d4.system.js +4 -0
  648. package/dist/ionic/p-18e4c1d7.system.js +4 -0
  649. package/dist/ionic/{p-acd933c3.entry.js → p-18f147cb.entry.js} +1 -1
  650. package/dist/ionic/p-1cf323bb.system.js +4 -0
  651. package/dist/ionic/p-1f6ae933.entry.js +4 -0
  652. package/dist/ionic/p-21cc0d0e.system.entry.js +4 -0
  653. package/dist/ionic/p-22a20774.system.entry.js +4 -0
  654. package/dist/ionic/p-24e958d0.entry.js +4 -0
  655. package/dist/ionic/p-26216f78.entry.js +4 -0
  656. package/dist/ionic/{p-5734ac17.system.js → p-2634392b.system.js} +1 -1
  657. package/dist/ionic/{p-380efbfa.system.entry.js → p-27289c7c.system.entry.js} +2 -2
  658. package/dist/ionic/p-293e6d2c.system.js +4 -0
  659. package/dist/ionic/p-2e043e7d.entry.js +4 -0
  660. package/dist/ionic/p-2e6189bb.system.js +4 -0
  661. package/dist/ionic/p-3289e5b7.entry.js +4 -0
  662. package/dist/ionic/p-34ae5439.entry.js +4 -0
  663. package/dist/ionic/p-37b929e0.system.entry.js +4 -0
  664. package/dist/ionic/p-3801e2c8.entry.js +4 -0
  665. package/dist/ionic/p-3b6a0ea0.system.entry.js +4 -0
  666. package/dist/ionic/p-3c2945cf.entry.js +4 -0
  667. package/dist/ionic/p-3e03af13.entry.js +4 -0
  668. package/dist/ionic/p-42c83ece.entry.js +4 -0
  669. package/dist/ionic/{p-1cc0b31f.js → p-4884bc90.js} +1 -1
  670. package/dist/ionic/p-4960184a.entry.js +4 -0
  671. package/dist/ionic/p-4c744e5a.system.entry.js +4 -0
  672. package/dist/ionic/p-4e74f29e.system.entry.js +4 -0
  673. package/dist/ionic/p-4f4973cf.system.entry.js +4 -0
  674. package/dist/ionic/{p-ba70039f.entry.js → p-50093167.entry.js} +1 -1
  675. package/dist/ionic/p-5361e53f.entry.js +4 -0
  676. package/dist/ionic/p-55592ab8.system.entry.js +4 -0
  677. package/dist/ionic/p-56e809b4.system.js +4 -0
  678. package/dist/ionic/p-57879ac4.entry.js +4 -0
  679. package/dist/ionic/p-59143930.js +4 -0
  680. package/dist/ionic/p-5c7f7524.entry.js +4 -0
  681. package/dist/ionic/p-5ffed477.system.entry.js +4 -0
  682. package/dist/ionic/p-61329893.js +4 -0
  683. package/dist/ionic/p-63a97e2a.system.entry.js +4 -0
  684. package/dist/ionic/p-64d0dd0c.entry.js +4 -0
  685. package/dist/ionic/p-67cf88d6.system.entry.js +4 -0
  686. package/dist/ionic/p-6880f3bf.system.entry.js +4 -0
  687. package/dist/ionic/p-68ba8b7d.system.entry.js +4 -0
  688. package/dist/ionic/{p-9ea607bd.system.js → p-6a6ca185.system.js} +2 -2
  689. package/dist/ionic/{p-a953ef66.js → p-6aa85e65.js} +1 -1
  690. package/dist/ionic/p-72e47c16.system.entry.js +4 -0
  691. package/dist/ionic/p-76a448e5.system.js +4 -0
  692. package/dist/ionic/{p-bbbe869e.entry.js → p-7997648e.entry.js} +1 -1
  693. package/dist/ionic/p-7a49ab01.system.js +4 -0
  694. package/dist/ionic/p-7d601bfc.entry.js +4 -0
  695. package/dist/ionic/p-807cec2a.system.entry.js +4 -0
  696. package/dist/ionic/p-83211bad.entry.js +4 -0
  697. package/dist/ionic/{p-fcecca8f.entry.js → p-83ad624c.entry.js} +1 -1
  698. package/dist/ionic/p-84ebfbb1.entry.js +4 -0
  699. package/dist/ionic/p-852a2c61.entry.js +4 -0
  700. package/dist/ionic/p-85aade10.entry.js +4 -0
  701. package/dist/ionic/p-8912f40f.entry.js +4 -0
  702. package/dist/ionic/p-89e54d1f.entry.js +4 -0
  703. package/dist/ionic/p-8afbfd6e.entry.js +4 -0
  704. package/dist/ionic/{p-f357707e.entry.js → p-8c0fb5ed.entry.js} +1 -1
  705. package/dist/ionic/p-8c2a594c.system.entry.js +4 -0
  706. package/dist/ionic/{p-96cc4814.js → p-8d3e8b53.js} +1 -1
  707. package/dist/ionic/p-8d759008.js +4 -0
  708. package/dist/ionic/p-8f00c3bb.system.entry.js +4 -0
  709. package/dist/ionic/p-9049ce21.entry.js +4 -0
  710. package/dist/ionic/p-90dfe07e.entry.js +4 -0
  711. package/dist/ionic/{p-a39d3482.system.js → p-936bdf9c.system.js} +2 -2
  712. package/dist/ionic/p-9489e106.entry.js +4 -0
  713. package/dist/ionic/p-950322fc.system.entry.js +4 -0
  714. package/dist/ionic/p-96ae2c43.js +4 -0
  715. package/dist/ionic/p-9933b7e3.system.js +4 -0
  716. package/dist/ionic/{p-b07affd5.system.entry.js → p-9a4d9e9c.system.entry.js} +1 -1
  717. package/dist/ionic/p-9ae90d0a.js +4 -0
  718. package/dist/ionic/p-9cae5041.js +4 -0
  719. package/dist/ionic/p-9d4d32fb.entry.js +4 -0
  720. package/dist/ionic/p-a0e82f96.entry.js +4 -0
  721. package/dist/ionic/{p-f687573e.system.js → p-a206b791.system.js} +1 -1
  722. package/dist/ionic/{p-83d748f8.system.entry.js → p-a3164615.system.entry.js} +2 -2
  723. package/dist/ionic/p-a6bcec0a.system.entry.js +4 -0
  724. package/dist/ionic/p-a6ef1875.js +5 -0
  725. package/dist/ionic/p-aa02bb2b.system.js +5 -0
  726. package/dist/ionic/p-aaa25d2b.system.entry.js +4 -0
  727. package/dist/ionic/p-adddf232.js +4 -0
  728. package/dist/ionic/p-afdb4b5e.system.entry.js +4 -0
  729. package/dist/ionic/{p-e36e2c94.system.entry.js → p-b7824524.system.entry.js} +1 -1
  730. package/dist/ionic/p-bc91eb01.system.entry.js +4 -0
  731. package/dist/ionic/p-bf0d4fd7.entry.js +4 -0
  732. package/dist/ionic/p-c1a692be.entry.js +4 -0
  733. package/dist/ionic/p-ceb147e2.system.entry.js +4 -0
  734. package/dist/ionic/p-cf5223da.system.entry.js +4 -0
  735. package/dist/ionic/p-d2a092eb.system.entry.js +4 -0
  736. package/dist/ionic/p-d8c15dd8.system.entry.js +4 -0
  737. package/dist/ionic/p-d91a74be.entry.js +4 -0
  738. package/dist/ionic/p-d99aacc8.entry.js +4 -0
  739. package/dist/ionic/p-d9f9872a.system.entry.js +4 -0
  740. package/dist/ionic/{p-0c06e09b.system.js → p-db61f08b.system.js} +1 -1
  741. package/dist/ionic/{p-0a6d801e.system.entry.js → p-dbfcfe2b.system.entry.js} +1 -1
  742. package/dist/ionic/p-dcb64ec6.js +4 -0
  743. package/dist/ionic/p-dd5ae216.system.entry.js +4 -0
  744. package/dist/ionic/p-dea26835.js +4 -0
  745. package/dist/ionic/p-e0d0f75a.entry.js +4 -0
  746. package/dist/ionic/{p-d69b26d9.system.entry.js → p-e10dbddf.system.entry.js} +1 -1
  747. package/dist/ionic/p-e178169e.entry.js +4 -0
  748. package/dist/ionic/p-e40c6bfd.entry.js +4 -0
  749. package/dist/ionic/p-e90ee10a.entry.js +4 -0
  750. package/dist/ionic/p-e91cdd26.system.entry.js +4 -0
  751. package/dist/ionic/{p-06e58c4e.js → p-e9436e94.js} +1 -1
  752. package/dist/ionic/{p-f9baf25c.entry.js → p-ea15a05b.entry.js} +1 -1
  753. package/dist/ionic/p-eadac5f0.entry.js +4 -0
  754. package/dist/ionic/p-ecfe04bf.system.entry.js +4 -0
  755. package/dist/ionic/{p-d60342e3.js → p-eef7ad58.js} +1 -1
  756. package/dist/ionic/p-efacf3c0.system.entry.js +4 -0
  757. package/dist/ionic/p-f3fe071d.entry.js +4 -0
  758. package/dist/ionic/p-f5190213.system.js +4 -0
  759. package/dist/ionic/p-f691f64b.system.entry.js +4 -0
  760. package/dist/ionic/p-f8d22ba7.system.entry.js +4 -0
  761. package/dist/ionic/{p-ed5aebaa.system.entry.js → p-f98c2e75.system.entry.js} +1 -1
  762. package/dist/ionic/p-fc6bb4a2.system.entry.js +4 -0
  763. package/dist/types/components/accordion/accordion.d.ts +3 -2
  764. package/dist/types/components/accordion-group/accordion-group.d.ts +2 -1
  765. package/dist/types/components/action-sheet/action-sheet-interface.d.ts +3 -7
  766. package/dist/types/components/action-sheet/action-sheet.d.ts +3 -2
  767. package/dist/types/components/alert/alert-interface.d.ts +3 -7
  768. package/dist/types/components/alert/alert.d.ts +3 -2
  769. package/dist/types/components/app/app.d.ts +4 -0
  770. package/dist/types/components/avatar/avatar.d.ts +24 -0
  771. package/dist/types/components/back-button/back-button.d.ts +2 -1
  772. package/dist/types/components/backdrop/backdrop.d.ts +4 -0
  773. package/dist/types/components/badge/badge.d.ts +22 -1
  774. package/dist/types/components/breadcrumb/breadcrumb.d.ts +2 -1
  775. package/dist/types/components/breadcrumbs/breadcrumbs.d.ts +2 -2
  776. package/dist/types/components/button/button.d.ts +15 -4
  777. package/dist/types/components/buttons/buttons.d.ts +5 -1
  778. package/dist/types/components/card/card.d.ts +8 -1
  779. package/dist/types/components/card-content/card-content.d.ts +2 -1
  780. package/dist/types/components/card-header/card-header.d.ts +3 -2
  781. package/dist/types/components/card-subtitle/card-subtitle.d.ts +2 -1
  782. package/dist/types/components/card-title/card-title.d.ts +2 -1
  783. package/dist/types/components/checkbox/checkbox.d.ts +14 -4
  784. package/dist/types/components/chip/chip.d.ts +19 -1
  785. package/dist/types/components/col/col.d.ts +4 -0
  786. package/dist/types/components/content/content.d.ts +3 -0
  787. package/dist/types/components/datetime/datetime.d.ts +18 -1
  788. package/dist/types/components/datetime/utils/data.d.ts +3 -3
  789. package/dist/types/components/datetime-button/datetime-button.d.ts +2 -1
  790. package/dist/types/components/fab/fab.d.ts +4 -0
  791. package/dist/types/components/fab-button/fab-button.d.ts +4 -3
  792. package/dist/types/components/fab-list/fab-list.d.ts +4 -0
  793. package/dist/types/components/footer/footer.d.ts +4 -3
  794. package/dist/types/components/grid/grid.d.ts +4 -0
  795. package/dist/types/components/header/header.d.ts +4 -3
  796. package/dist/types/components/img/img.d.ts +3 -0
  797. package/dist/types/components/infinite-scroll/infinite-scroll.d.ts +4 -0
  798. package/dist/types/components/infinite-scroll-content/infinite-scroll-content.d.ts +4 -0
  799. package/dist/types/components/input/input.d.ts +31 -5
  800. package/dist/types/components/item/item.d.ts +5 -4
  801. package/dist/types/components/item-divider/item-divider.d.ts +2 -1
  802. package/dist/types/components/item-group/item-group.d.ts +4 -0
  803. package/dist/types/components/item-option/item-option.d.ts +2 -1
  804. package/dist/types/components/item-options/item-options.d.ts +4 -0
  805. package/dist/types/components/item-sliding/item-sliding.d.ts +4 -0
  806. package/dist/types/components/label/label.d.ts +2 -1
  807. package/dist/types/components/list/list.d.ts +2 -1
  808. package/dist/types/components/list-header/list-header.d.ts +2 -1
  809. package/dist/types/components/loading/loading-interface.d.ts +2 -7
  810. package/dist/types/components/loading/loading.d.ts +3 -2
  811. package/dist/types/components/menu/menu.d.ts +3 -0
  812. package/dist/types/components/menu-button/menu-button.d.ts +2 -1
  813. package/dist/types/components/menu-toggle/menu-toggle.d.ts +3 -0
  814. package/dist/types/components/modal/modal-interface.d.ts +3 -7
  815. package/dist/types/components/modal/modal.d.ts +2 -1
  816. package/dist/types/components/nav/nav-interface.d.ts +9 -1
  817. package/dist/types/components/nav/nav.d.ts +5 -1
  818. package/dist/types/components/nav-link/nav-link.d.ts +4 -0
  819. package/dist/types/components/note/note.d.ts +2 -1
  820. package/dist/types/components/picker/picker.d.ts +2 -1
  821. package/dist/types/components/picker-column/picker-column.d.ts +2 -1
  822. package/dist/types/components/picker-column-option/picker-column-option.d.ts +4 -0
  823. package/dist/types/components/picker-legacy/picker.d.ts +2 -1
  824. package/dist/types/components/popover/popover-interface.d.ts +3 -6
  825. package/dist/types/components/popover/popover.d.ts +6 -5
  826. package/dist/types/components/progress-bar/progress-bar.d.ts +2 -1
  827. package/dist/types/components/radio/radio.d.ts +2 -1
  828. package/dist/types/components/radio-group/radio-group.d.ts +4 -0
  829. package/dist/types/components/range/range.d.ts +2 -1
  830. package/dist/types/components/refresher/refresher.d.ts +2 -1
  831. package/dist/types/components/refresher-content/refresher-content.d.ts +4 -0
  832. package/dist/types/components/reorder/reorder.d.ts +11 -0
  833. package/dist/types/components/reorder-group/reorder-group.d.ts +4 -0
  834. package/dist/types/components/ripple-effect/ripple-effect.d.ts +4 -0
  835. package/dist/types/components/route/route.d.ts +4 -0
  836. package/dist/types/components/router/router.d.ts +4 -0
  837. package/dist/types/components/router-link/router-link.d.ts +4 -0
  838. package/dist/types/components/router-outlet/router-outlet.d.ts +4 -1
  839. package/dist/types/components/row/row.d.ts +4 -0
  840. package/dist/types/components/searchbar/searchbar.d.ts +27 -8
  841. package/dist/types/components/segment/segment.d.ts +2 -1
  842. package/dist/types/components/segment-button/segment-button.d.ts +2 -1
  843. package/dist/types/components/select/select.d.ts +24 -5
  844. package/dist/types/components/select-option/select-option.d.ts +4 -0
  845. package/dist/types/components/select-popover/select-popover.d.ts +3 -0
  846. package/dist/types/components/skeleton-text/skeleton-text.d.ts +4 -0
  847. package/dist/types/components/spinner/spinner.d.ts +4 -0
  848. package/dist/types/components/split-pane/split-pane.d.ts +4 -0
  849. package/dist/types/components/tab/tab.d.ts +4 -0
  850. package/dist/types/components/tab-bar/tab-bar.d.ts +3 -2
  851. package/dist/types/components/tab-button/tab-button.d.ts +2 -1
  852. package/dist/types/components/tabs/tabs.d.ts +3 -0
  853. package/dist/types/components/text/text.d.ts +2 -1
  854. package/dist/types/components/textarea/textarea.d.ts +3 -2
  855. package/dist/types/components/thumbnail/thumbnail.d.ts +4 -0
  856. package/dist/types/components/title/title.d.ts +4 -0
  857. package/dist/types/components/toast/animations/utils.d.ts +2 -2
  858. package/dist/types/components/toast/toast-interface.d.ts +3 -7
  859. package/dist/types/components/toast/toast.d.ts +3 -2
  860. package/dist/types/components/toggle/toggle.d.ts +19 -1
  861. package/dist/types/components/toolbar/toolbar.d.ts +4 -3
  862. package/dist/types/components.d.ts +1278 -174
  863. package/dist/types/global/ionic-global.d.ts +25 -2
  864. package/dist/types/interface.d.ts +3 -0
  865. package/dist/types/utils/config.d.ts +99 -2
  866. package/dist/types/utils/overlays-interface.d.ts +31 -1
  867. package/dist/types/utils/test/playwright/generator.d.ts +31 -2
  868. package/hydrate/index.js +1571 -618
  869. package/package.json +7 -4
  870. package/components/index9.js +0 -167
  871. package/dist/cjs/index-5915f9b3.js +0 -38
  872. package/dist/cjs/ionic-global-35b86a09.js +0 -230
  873. package/dist/collection/components/button/test/round/button.e2e.js +0 -52
  874. package/dist/esm/index-9b0d46f4.js +0 -34
  875. package/dist/esm/ionic-global-4528d288.js +0 -224
  876. package/dist/esm-es5/app-globals-b99e6d29.js +0 -4
  877. package/dist/esm-es5/data-ae11fd43.js +0 -4
  878. package/dist/esm-es5/index-5cc724f3.js +0 -4
  879. package/dist/esm-es5/index-7ae7186a.js +0 -4
  880. package/dist/esm-es5/index-8e6b6a24.js +0 -4
  881. package/dist/esm-es5/index-9aab3bcf.js +0 -5
  882. package/dist/esm-es5/index-9b0d46f4.js +0 -4
  883. package/dist/esm-es5/input-shims-0314bbe5.js +0 -4
  884. package/dist/esm-es5/input.utils-09c71bc7.js +0 -4
  885. package/dist/esm-es5/ionic-global-4528d288.js +0 -4
  886. package/dist/esm-es5/ios.transition-e35d0940.js +0 -4
  887. package/dist/esm-es5/md.transition-4b90a1f0.js +0 -4
  888. package/dist/esm-es5/overlays-df2c06b2.js +0 -4
  889. package/dist/esm-es5/status-tap-12c27922.js +0 -4
  890. package/dist/ionic/p-0395be73.entry.js +0 -4
  891. package/dist/ionic/p-03b86a5e.js +0 -4
  892. package/dist/ionic/p-0536574e.entry.js +0 -4
  893. package/dist/ionic/p-06fee233.js +0 -4
  894. package/dist/ionic/p-08ea3402.system.entry.js +0 -4
  895. package/dist/ionic/p-09538818.entry.js +0 -4
  896. package/dist/ionic/p-0978924b.system.entry.js +0 -4
  897. package/dist/ionic/p-09b4e9ec.entry.js +0 -4
  898. package/dist/ionic/p-0b007acc.system.entry.js +0 -4
  899. package/dist/ionic/p-10feef7e.system.entry.js +0 -4
  900. package/dist/ionic/p-15d1ddba.js +0 -4
  901. package/dist/ionic/p-199f826f.system.entry.js +0 -4
  902. package/dist/ionic/p-1b435d20.entry.js +0 -4
  903. package/dist/ionic/p-1eb63fa4.entry.js +0 -4
  904. package/dist/ionic/p-207e11dc.entry.js +0 -4
  905. package/dist/ionic/p-2690b1de.js +0 -4
  906. package/dist/ionic/p-279f3bac.system.entry.js +0 -4
  907. package/dist/ionic/p-29de09dd.entry.js +0 -4
  908. package/dist/ionic/p-2c588aa2.entry.js +0 -4
  909. package/dist/ionic/p-2ff0e0aa.system.js +0 -4
  910. package/dist/ionic/p-30baae57.system.js +0 -4
  911. package/dist/ionic/p-31d27232.system.js +0 -4
  912. package/dist/ionic/p-33e10509.system.js +0 -4
  913. package/dist/ionic/p-3d015cdb.system.js +0 -5
  914. package/dist/ionic/p-3f53a0b1.entry.js +0 -4
  915. package/dist/ionic/p-433157a4.entry.js +0 -4
  916. package/dist/ionic/p-498eb648.system.entry.js +0 -4
  917. package/dist/ionic/p-4d8f408d.system.entry.js +0 -4
  918. package/dist/ionic/p-5091f63c.entry.js +0 -4
  919. package/dist/ionic/p-509620b8.system.entry.js +0 -4
  920. package/dist/ionic/p-5109a566.entry.js +0 -4
  921. package/dist/ionic/p-51f35fe8.system.entry.js +0 -4
  922. package/dist/ionic/p-52ce473d.entry.js +0 -4
  923. package/dist/ionic/p-52f53904.entry.js +0 -4
  924. package/dist/ionic/p-55f99a39.system.entry.js +0 -4
  925. package/dist/ionic/p-57bc32e2.system.entry.js +0 -4
  926. package/dist/ionic/p-5cc6dcf5.js +0 -4
  927. package/dist/ionic/p-5dc9f99a.entry.js +0 -4
  928. package/dist/ionic/p-606f069c.entry.js +0 -4
  929. package/dist/ionic/p-628967e3.system.entry.js +0 -4
  930. package/dist/ionic/p-62e44e4a.system.entry.js +0 -4
  931. package/dist/ionic/p-66ed603b.js +0 -4
  932. package/dist/ionic/p-68bb9870.system.entry.js +0 -4
  933. package/dist/ionic/p-6a2cf398.system.entry.js +0 -4
  934. package/dist/ionic/p-6c3666d5.entry.js +0 -4
  935. package/dist/ionic/p-6ec88301.entry.js +0 -4
  936. package/dist/ionic/p-6f008ad2.js +0 -4
  937. package/dist/ionic/p-6fc11592.entry.js +0 -4
  938. package/dist/ionic/p-700567ab.system.entry.js +0 -4
  939. package/dist/ionic/p-712d54ae.js +0 -4
  940. package/dist/ionic/p-7349de07.entry.js +0 -4
  941. package/dist/ionic/p-77731f19.system.entry.js +0 -4
  942. package/dist/ionic/p-78405458.entry.js +0 -4
  943. package/dist/ionic/p-7c3d391b.system.entry.js +0 -4
  944. package/dist/ionic/p-7d6fd45f.system.entry.js +0 -4
  945. package/dist/ionic/p-80265a58.entry.js +0 -4
  946. package/dist/ionic/p-842c9fca.system.js +0 -4
  947. package/dist/ionic/p-897fac22.system.entry.js +0 -4
  948. package/dist/ionic/p-8a03fbee.entry.js +0 -4
  949. package/dist/ionic/p-8cb80f83.system.entry.js +0 -4
  950. package/dist/ionic/p-8d14ee8c.system.entry.js +0 -4
  951. package/dist/ionic/p-9213681c.system.entry.js +0 -4
  952. package/dist/ionic/p-92d7e99d.system.js +0 -4
  953. package/dist/ionic/p-9664a1a2.system.entry.js +0 -4
  954. package/dist/ionic/p-9797f6eb.entry.js +0 -4
  955. package/dist/ionic/p-9848d7be.system.entry.js +0 -4
  956. package/dist/ionic/p-98f6116f.entry.js +0 -4
  957. package/dist/ionic/p-99884813.entry.js +0 -4
  958. package/dist/ionic/p-99ca9787.system.entry.js +0 -4
  959. package/dist/ionic/p-9bfd7cda.system.entry.js +0 -4
  960. package/dist/ionic/p-9c6dcf78.system.entry.js +0 -4
  961. package/dist/ionic/p-9da86308.js +0 -4
  962. package/dist/ionic/p-9ec42be0.js +0 -4
  963. package/dist/ionic/p-a488b7ab.system.js +0 -4
  964. package/dist/ionic/p-a4ab7449.entry.js +0 -4
  965. package/dist/ionic/p-a50f23bf.system.entry.js +0 -4
  966. package/dist/ionic/p-a6a7ac93.system.entry.js +0 -4
  967. package/dist/ionic/p-a6a8b478.system.entry.js +0 -4
  968. package/dist/ionic/p-aaaaaea1.entry.js +0 -4
  969. package/dist/ionic/p-b02eda30.entry.js +0 -4
  970. package/dist/ionic/p-b28d3ccb.system.entry.js +0 -4
  971. package/dist/ionic/p-b563b6ac.entry.js +0 -4
  972. package/dist/ionic/p-b9181033.system.entry.js +0 -4
  973. package/dist/ionic/p-b9e6494b.entry.js +0 -4
  974. package/dist/ionic/p-bd1173d3.entry.js +0 -4
  975. package/dist/ionic/p-c0e9ba51.entry.js +0 -4
  976. package/dist/ionic/p-c41435e6.system.entry.js +0 -4
  977. package/dist/ionic/p-c5dd0892.system.entry.js +0 -4
  978. package/dist/ionic/p-cd96c996.entry.js +0 -4
  979. package/dist/ionic/p-cec8589b.system.js +0 -4
  980. package/dist/ionic/p-d9f3d68a.entry.js +0 -4
  981. package/dist/ionic/p-dba5cb84.js +0 -5
  982. package/dist/ionic/p-dc0d9ff5.system.entry.js +0 -4
  983. package/dist/ionic/p-dc1e363a.entry.js +0 -4
  984. package/dist/ionic/p-df517d1f.entry.js +0 -4
  985. package/dist/ionic/p-dfb78785.system.js +0 -4
  986. package/dist/ionic/p-e0a8ffd0.system.entry.js +0 -4
  987. package/dist/ionic/p-e6e197f5.system.entry.js +0 -4
  988. package/dist/ionic/p-e6e88ab9.entry.js +0 -4
  989. package/dist/ionic/p-e9f9e7dd.entry.js +0 -4
  990. package/dist/ionic/p-eb3023c9.system.js +0 -4
  991. package/dist/ionic/p-ecbdbf25.system.entry.js +0 -4
  992. package/dist/ionic/p-f0e81ddb.entry.js +0 -4
  993. package/dist/ionic/p-f53bcebd.entry.js +0 -4
  994. package/dist/ionic/p-fb21fd1c.system.entry.js +0 -4
  995. package/dist/ionic/p-ff4b7e40.system.js +0 -4
@@ -1,3 +1,9 @@
1
+ /**
2
+ * Convert a pixels given value into rem
3
+ *
4
+ * @param pixels - Value in pixels to be converted (i.e. px)
5
+ * @param context (optional) - Baseline value
6
+ */
1
7
  /**
2
8
  * Convert a font size to a dynamic font size.
3
9
  * Fonts that participate in Dynamic Type should use
@@ -73,6 +79,7 @@
73
79
  * @prop --highlight-color-focused: The color of the highlight on the input when focused
74
80
  * @prop --highlight-color-valid: The color of the highlight on the input when valid
75
81
  * @prop --highlight-color-invalid: The color of the highlight on the input when invalid
82
+ * @prop --text-color-invalid: The color of the error text on the input when invalid. Only applies to ionic theme.
76
83
  *
77
84
  * @prop --border-color: Color of the border below the input when using helper text, error text, or counter
78
85
  * @prop --border-radius: Radius of the input. A large radius may display unevenly when using fill="outline"; if needed, use shape="round" instead or increase --padding-start.
@@ -135,18 +142,18 @@
135
142
  padding-right: 0;
136
143
  padding-top: 0;
137
144
  padding-bottom: 0;
145
+ color: inherit;
138
146
  font-family: inherit;
139
147
  font-size: inherit;
140
148
  font-style: inherit;
141
149
  font-weight: inherit;
142
150
  letter-spacing: inherit;
151
+ text-align: inherit;
143
152
  text-decoration: inherit;
144
153
  text-indent: inherit;
145
154
  text-overflow: inherit;
146
155
  text-transform: inherit;
147
- text-align: inherit;
148
156
  white-space: inherit;
149
- color: inherit;
150
157
  display: inline-block;
151
158
  position: relative;
152
159
  flex: 1;
@@ -606,6 +613,12 @@
606
613
  display: none;
607
614
  }
608
615
 
616
+ /**
617
+ * Convert a pixels given value into rem
618
+ *
619
+ * @param pixels - Value in pixels to be converted (i.e. px)
620
+ * @param context (optional) - Baseline value
621
+ */
609
622
  /**
610
623
  * Convert a font size to a dynamic font size.
611
624
  * Fonts that participate in Dynamic Type should use
@@ -661,6 +674,12 @@
661
674
  * }
662
675
  * }
663
676
  */
677
+ /**
678
+ * Convert a pixels given value into rem
679
+ *
680
+ * @param pixels - Value in pixels to be converted (i.e. px)
681
+ * @param context (optional) - Baseline value
682
+ */
664
683
  /**
665
684
  * Convert a font size to a dynamic font size.
666
685
  * Fonts that participate in Dynamic Type should use
@@ -4,13 +4,16 @@
4
4
  import { Build, Host, forceUpdate, h } from "@stencil/core";
5
5
  import { createNotchController } from "../../utils/forms/index";
6
6
  import { inheritAriaAttributes, debounceEvent, inheritAttributes, componentOnReady } from "../../utils/helpers";
7
+ import { printIonWarning } from "../../utils/logging/index";
7
8
  import { createSlotMutationController } from "../../utils/slot-mutation-controller";
8
9
  import { createColorClasses, hostContext } from "../../utils/theme";
9
10
  import { closeCircle, closeSharp } from "ionicons/icons";
10
- import { getIonMode } from "../../global/ionic-global";
11
+ import { config } from "../../global/config";
12
+ import { getIonTheme } from "../../global/ionic-global";
11
13
  import { getCounterText } from "./input.utils";
12
14
  /**
13
- * @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
15
+ * @virtualProp {"ios" | "md"} mode - The mode determines the platform behaviors of the component.
16
+ * @virtualProp {"ios" | "md" | "ionic"} theme - The theme determines the visual appearance of the component.
14
17
  *
15
18
  * @slot label - The label text to associate with the input. Use the `labelPlacement` property to control where the label is placed relative to the input. Use this if you need to render a label with custom HTML. (EXPERIMENTAL)
16
19
  * @slot start - Content to display at the leading edge of the input. (EXPERIMENTAL)
@@ -93,7 +96,7 @@ export class Input {
93
96
  this.inputmode = undefined;
94
97
  this.helperText = undefined;
95
98
  this.label = undefined;
96
- this.labelPlacement = 'start';
99
+ this.labelPlacement = undefined;
97
100
  this.max = undefined;
98
101
  this.maxlength = undefined;
99
102
  this.min = undefined;
@@ -107,6 +110,7 @@ export class Input {
107
110
  this.shape = undefined;
108
111
  this.spellcheck = false;
109
112
  this.step = undefined;
113
+ this.size = 'medium';
110
114
  this.type = 'text';
111
115
  this.value = '';
112
116
  }
@@ -149,6 +153,9 @@ export class Input {
149
153
  }
150
154
  componentWillLoad() {
151
155
  this.inheritedAttributes = Object.assign(Object.assign({}, inheritAriaAttributes(this.el)), inheritAttributes(this.el, ['tabindex', 'title', 'data-form-type']));
156
+ if (this.labelPlacement === undefined) {
157
+ this.labelPlacement = getIonTheme(this) === 'ionic' ? ionicThemeDefaultLabelPlacement : 'start';
158
+ }
152
159
  }
153
160
  connectedCallback() {
154
161
  const { el } = this;
@@ -251,6 +258,44 @@ export class Input {
251
258
  getValue() {
252
259
  return typeof this.value === 'number' ? this.value.toString() : (this.value || '').toString();
253
260
  }
261
+ getLabelPlacement() {
262
+ const theme = getIonTheme(this);
263
+ const { el, labelPlacement } = this;
264
+ if (theme === 'ionic' && labelPlacement !== 'stacked' && labelPlacement !== 'floating') {
265
+ printIonWarning(`The "${labelPlacement}" label placement is not supported in the ${theme} theme. The default value of "${ionicThemeDefaultLabelPlacement}" will be used instead.`, el);
266
+ return ionicThemeDefaultLabelPlacement;
267
+ }
268
+ return labelPlacement;
269
+ }
270
+ // TODO(FW-6201): Remove this method when size is supported in ios and md
271
+ getSize() {
272
+ const theme = getIonTheme(this);
273
+ const { size } = this;
274
+ if (theme !== 'ionic' && (size === 'large' || size === 'xlarge')) {
275
+ printIonWarning(`The "${size}" size is not supported in the ${theme} theme.`);
276
+ // Fallback to medium size, which is the default size for all themes.
277
+ return 'medium';
278
+ }
279
+ return size;
280
+ }
281
+ getShape() {
282
+ const theme = getIonTheme(this);
283
+ const { shape } = this;
284
+ // TODO(ROU-5475): Remove the check for `soft` when the shape is supported in ios and md.
285
+ if ((theme === 'ios' && shape === 'round') || (theme !== 'ionic' && shape === 'soft')) {
286
+ printIonWarning(`The "${shape}" shape is not supported in the ${theme} theme.`);
287
+ return undefined;
288
+ }
289
+ if (shape !== undefined) {
290
+ return shape;
291
+ }
292
+ // TODO(FW-6229): Update this when the default shape has been decided.
293
+ if (theme !== 'ionic') {
294
+ return undefined;
295
+ }
296
+ // Fallback to round shape, which is the default shape for the ionic theme.
297
+ return 'round';
298
+ }
254
299
  checkClearOnEdit(ev) {
255
300
  if (!this.shouldClearOnEdit()) {
256
301
  return;
@@ -347,9 +392,9 @@ export class Input {
347
392
  * when fill="outline".
348
393
  */
349
394
  renderLabelContainer() {
350
- const mode = getIonMode(this);
351
- const hasOutlineFill = mode === 'md' && this.fill === 'outline';
352
- if (hasOutlineFill) {
395
+ const theme = getIonTheme(this);
396
+ const hasOutlineFill = this.fill === 'outline';
397
+ if (hasOutlineFill && theme === 'md') {
353
398
  /**
354
399
  * The outline fill has a special outline
355
400
  * that appears around the input and the label.
@@ -366,19 +411,40 @@ export class Input {
366
411
  ];
367
412
  }
368
413
  /**
369
- * If not using the outline style,
370
- * we can render just the label.
414
+ * If not using the outline style, OR if using the
415
+ * ionic theme, just render the label. For the ionic
416
+ * theme, the outline will be rendered elsewhere.
371
417
  */
372
418
  return this.renderLabel();
373
419
  }
420
+ /**
421
+ * Get the icon to use for the clear icon.
422
+ * If an icon is set on the component, use that.
423
+ * Otherwise, use the icon set in the config.
424
+ * If no icon is set in the config, use the default icon.
425
+ *
426
+ * @internal
427
+ * @returns {string} The icon to use for the clear icon.
428
+ */
429
+ get inputClearIcon() {
430
+ const theme = getIonTheme(this);
431
+ const defaultClearIcon = theme === 'ios' ? closeCircle : closeSharp;
432
+ const icon = this.clearInputIcon;
433
+ if (icon !== undefined) {
434
+ // Icon is set on the component.
435
+ return icon;
436
+ }
437
+ return config.get('inputClearIcon', defaultClearIcon);
438
+ }
374
439
  render() {
375
- const { disabled, fill, readonly, shape, inputId, labelPlacement, el, hasFocus, clearInputIcon } = this;
376
- const mode = getIonMode(this);
440
+ const { disabled, fill, readonly, inputId, el, hasFocus, clearInput, inputClearIcon } = this;
441
+ const theme = getIonTheme(this);
377
442
  const value = this.getValue();
443
+ const size = this.getSize();
444
+ const shape = this.getShape();
378
445
  const inItem = hostContext('ion-item', this.el);
379
- const shouldRenderHighlight = mode === 'md' && fill !== 'outline' && !inItem;
380
- const defaultClearIcon = mode === 'ios' ? closeCircle : closeSharp;
381
- const clearIconData = clearInputIcon !== null && clearInputIcon !== void 0 ? clearInputIcon : defaultClearIcon;
446
+ const shouldRenderHighlight = (theme === 'md' || theme === 'ionic') && fill !== 'outline' && !inItem;
447
+ const labelPlacement = this.getLabelPlacement();
382
448
  const hasValue = this.hasValue();
383
449
  const hasStartEndSlots = el.querySelector('[slot="start"], [slot="end"]') !== null;
384
450
  /**
@@ -399,18 +465,30 @@ export class Input {
399
465
  * TODO(FW-5592): Remove hasStartEndSlots condition
400
466
  */
401
467
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
402
- return (h(Host, { key: '907ce98a82b5cfae5a08504cd79e00a2330b7444', class: createColorClasses(this.color, {
403
- [mode]: true,
468
+ return (h(Host, { key: 'f5c126fcd87a30885bc624b39c3ad46efa1717f3', class: createColorClasses(this.color, {
469
+ [theme]: true,
404
470
  'has-value': hasValue,
405
471
  'has-focus': hasFocus,
406
472
  'label-floating': labelShouldFloat,
407
473
  [`input-fill-${fill}`]: fill !== undefined,
408
474
  [`input-shape-${shape}`]: shape !== undefined,
475
+ [`input-size-${size}`]: true,
409
476
  [`input-label-placement-${labelPlacement}`]: true,
410
477
  'in-item': inItem,
411
478
  'in-item-color': hostContext('ion-item.ion-color', this.el),
412
479
  'input-disabled': disabled,
413
- }) }, h("label", { key: '59d5bb45d2a5b828bba0ed8687a632a551e2f4d8', class: "input-wrapper", htmlFor: inputId }, this.renderLabelContainer(), h("div", { key: 'f93f129d08246d0e9a601c100d718534d6403853', class: "native-wrapper" }, h("slot", { key: '54eeb1a6bace662b7eb0d7e27180ea3d7e3a3729', name: "start" }), h("input", Object.assign({ key: 'b3e0be55bc1a4a539ae3b0fdcf7fc078723cca16', class: "native-input", ref: (input) => (this.nativeInput = input), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, min: this.min, max: this.max, minLength: this.minlength, maxLength: this.maxlength, multiple: this.multiple, name: this.name, pattern: this.pattern, placeholder: this.placeholder || '', readOnly: readonly, required: this.required, spellcheck: this.spellcheck, step: this.step, type: this.type, value: value, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeydown, onCompositionstart: this.onCompositionStart, onCompositionend: this.onCompositionEnd }, this.inheritedAttributes)), this.clearInput && !readonly && !disabled && (h("button", { key: '5f6373504a6d0d074bfbf875c794d45ea2748175', "aria-label": "reset", type: "button", class: "input-clear-icon", onPointerDown: (ev) => {
480
+ 'input-readonly': readonly,
481
+ }) }, h("label", { key: '350594ad2c6a512616d4a49a328c407ff18c6933', class: "input-wrapper", htmlFor: inputId }, this.renderLabelContainer(), h("div", { key: 'bfd407e6b4ce04f70531ab368f24ff7005004c78', class: "native-wrapper" },
482
+ /**
483
+ * For the ionic theme, we render the outline container here
484
+ * instead of higher up, so it can be positioned relative to
485
+ * the native wrapper instead of the <label> element or the
486
+ * entire component. This allows the label text to be positioned
487
+ * above the outline, while staying within the bounds of the
488
+ * <label> element, ensuring that clicking the label text
489
+ * focuses the input.
490
+ */
491
+ theme === 'ionic' && fill === 'outline' && h("div", { key: 'ce9a9c1be75fdb7db26c6896fef7540b5095066f', class: "input-outline" }), h("slot", { key: '0bb13e899d99e049aa8abfaa37368ea564ef9f60', name: "start" }), h("input", Object.assign({ key: '09aa379cebd047867a5e147866dd159f6b2d03ab', class: "native-input", ref: (input) => (this.nativeInput = input), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, min: this.min, max: this.max, minLength: this.minlength, maxLength: this.maxlength, multiple: this.multiple, name: this.name, pattern: this.pattern, placeholder: this.placeholder || '', readOnly: readonly, required: this.required, spellcheck: this.spellcheck, step: this.step, type: this.type, value: value, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeydown, onCompositionstart: this.onCompositionStart, onCompositionend: this.onCompositionEnd }, this.inheritedAttributes)), clearInput && !readonly && !disabled && (h("button", { key: '39c27ad8c71f8c87617fedd9b7fc22d67e6b3c43', "aria-label": "reset", type: "button", class: "input-clear-icon", onPointerDown: (ev) => {
414
492
  /**
415
493
  * This prevents mobile browsers from
416
494
  * blurring the input when the clear
@@ -425,20 +503,22 @@ export class Input {
425
503
  * for screen readers as it means users would be unable to swipe past the clear button.
426
504
  */
427
505
  ev.stopPropagation();
428
- }, onClick: this.clearTextInput }, h("ion-icon", { key: '230d77973aa83458ceb32bf52e3abe9bc322cfe6', "aria-hidden": "true", icon: clearIconData }))), h("slot", { key: '9d69ac6e8a3c4b2b303dba2478f82695d5755ed2', name: "end" })), shouldRenderHighlight && h("div", { key: 'ac61f16237ce731e0745ab72d0fc3f066252464a', class: "input-highlight" })), this.renderBottomContent()));
506
+ }, onClick: this.clearTextInput }, h("ion-icon", { key: '1f820cc16d73a79a056132595b299b8eeda59aee', "aria-hidden": "true", icon: inputClearIcon }))), h("slot", { key: '7830b2e2f67aa96238a514d1c3d701dd7ee17929', name: "end" })), shouldRenderHighlight && h("div", { key: '81ba6e5c63b3d9f025f689455b7b9442043ae6a3', class: "input-highlight" })), this.renderBottomContent()));
429
507
  }
430
508
  static get is() { return "ion-input"; }
431
509
  static get encapsulation() { return "scoped"; }
432
510
  static get originalStyleUrls() {
433
511
  return {
434
512
  "ios": ["input.ios.scss"],
435
- "md": ["input.md.scss"]
513
+ "md": ["input.md.scss"],
514
+ "ionic": ["input.ionic.scss"]
436
515
  };
437
516
  }
438
517
  static get styleUrls() {
439
518
  return {
440
519
  "ios": ["input.ios.css"],
441
- "md": ["input.md.css"]
520
+ "md": ["input.md.css"],
521
+ "ionic": ["input.ionic.css"]
442
522
  };
443
523
  }
444
524
  static get properties() {
@@ -710,7 +790,7 @@ export class Input {
710
790
  "optional": true,
711
791
  "docs": {
712
792
  "tags": [],
713
- "text": "The fill for the item. If `\"solid\"` the item will have a background. If\n`\"outline\"` the item will be transparent with a border. Only available in `md` mode."
793
+ "text": "The fill for the item. If `\"solid\"` the item will have a background. If\n`\"outline\"` the item will be transparent with a border. Only available when the theme is `\"md\"`."
714
794
  },
715
795
  "attribute": "fill",
716
796
  "reflect": false
@@ -768,21 +848,20 @@ export class Input {
768
848
  },
769
849
  "labelPlacement": {
770
850
  "type": "string",
771
- "mutable": false,
851
+ "mutable": true,
772
852
  "complexType": {
773
853
  "original": "'start' | 'end' | 'floating' | 'stacked' | 'fixed'",
774
- "resolved": "\"end\" | \"fixed\" | \"floating\" | \"stacked\" | \"start\"",
854
+ "resolved": "\"end\" | \"fixed\" | \"floating\" | \"stacked\" | \"start\" | undefined",
775
855
  "references": {}
776
856
  },
777
857
  "required": false,
778
- "optional": false,
858
+ "optional": true,
779
859
  "docs": {
780
860
  "tags": [],
781
- "text": "Where to place the label relative to the input.\n`\"start\"`: The label will appear to the left of the input in LTR and to the right in RTL.\n`\"end\"`: The label will appear to the right of the input in LTR and to the left in RTL.\n`\"floating\"`: The label will appear smaller and above the input when the input is focused or it has a value. Otherwise it will appear on top of the input.\n`\"stacked\"`: The label will appear smaller and above the input regardless even when the input is blurred or has no value.\n`\"fixed\"`: The label has the same behavior as `\"start\"` except it also has a fixed width. Long text will be truncated with ellipses (\"...\")."
861
+ "text": "Where to place the label relative to the input.\n`\"start\"`: The label will appear to the left of the input in LTR and to the right in RTL.\n`\"end\"`: The label will appear to the right of the input in LTR and to the left in RTL.\n`\"floating\"`: The label will appear smaller and above the input when the input is focused or it has a value. Otherwise it will appear on top of the input.\n`\"stacked\"`: The label will appear smaller and above the input regardless even when the input is blurred or has no value.\n`\"fixed\"`: The label has the same behavior as `\"start\"` except it also has a fixed width. Long text will be truncated with ellipses (\"...\").\n\nDefaults to \"stacked\" for the ionic theme, or \"start\" for all other themes.\n\nIn the ionic theme, only the values \"stacked\" and \"floating\" are supported."
782
862
  },
783
863
  "attribute": "label-placement",
784
- "reflect": false,
785
- "defaultValue": "'start'"
864
+ "reflect": false
786
865
  },
787
866
  "max": {
788
867
  "type": "any",
@@ -961,15 +1040,15 @@ export class Input {
961
1040
  "type": "string",
962
1041
  "mutable": false,
963
1042
  "complexType": {
964
- "original": "'round'",
965
- "resolved": "\"round\" | undefined",
1043
+ "original": "'soft' | 'round' | 'rectangular'",
1044
+ "resolved": "\"rectangular\" | \"round\" | \"soft\" | undefined",
966
1045
  "references": {}
967
1046
  },
968
1047
  "required": false,
969
1048
  "optional": true,
970
1049
  "docs": {
971
1050
  "tags": [],
972
- "text": "The shape of the input. If \"round\" it will have an increased border radius."
1051
+ "text": "Set to `\"soft\"` for an input with slightly rounded corners, `\"round\"` for an input with fully\nrounded corners, or `\"rectangular\"` for an input without rounded corners.\nDefaults to `\"round\"` for the ionic theme, and `undefined` for all other themes.\nOnly applies when the fill is set to `\"solid\"` or `\"outline\"`."
973
1052
  },
974
1053
  "attribute": "shape",
975
1054
  "reflect": false
@@ -1009,6 +1088,24 @@ export class Input {
1009
1088
  "attribute": "step",
1010
1089
  "reflect": false
1011
1090
  },
1091
+ "size": {
1092
+ "type": "string",
1093
+ "mutable": false,
1094
+ "complexType": {
1095
+ "original": "'medium' | 'large' | 'xlarge'",
1096
+ "resolved": "\"large\" | \"medium\" | \"xlarge\" | undefined",
1097
+ "references": {}
1098
+ },
1099
+ "required": false,
1100
+ "optional": true,
1101
+ "docs": {
1102
+ "tags": [],
1103
+ "text": "The size of the input. If \"large\", it will have an increased height. By default the\nsize is medium. This property only applies to the `\"ionic\"` theme."
1104
+ },
1105
+ "attribute": "size",
1106
+ "reflect": false,
1107
+ "defaultValue": "'medium'"
1108
+ },
1012
1109
  "type": {
1013
1110
  "type": "string",
1014
1111
  "mutable": false,
@@ -1200,3 +1297,4 @@ export class Input {
1200
1297
  }
1201
1298
  }
1202
1299
  let inputIds = 0;
1300
+ const ionicThemeDefaultLabelPlacement = 'stacked';
@@ -1,3 +1,9 @@
1
+ /**
2
+ * Convert a pixels given value into rem
3
+ *
4
+ * @param pixels - Value in pixels to be converted (i.e. px)
5
+ * @param context (optional) - Baseline value
6
+ */
1
7
  /**
2
8
  * Convert a font size to a dynamic font size.
3
9
  * Fonts that participate in Dynamic Type should use
@@ -73,6 +79,7 @@
73
79
  * @prop --highlight-color-focused: The color of the highlight on the input when focused
74
80
  * @prop --highlight-color-valid: The color of the highlight on the input when valid
75
81
  * @prop --highlight-color-invalid: The color of the highlight on the input when invalid
82
+ * @prop --text-color-invalid: The color of the error text on the input when invalid. Only applies to ionic theme.
76
83
  *
77
84
  * @prop --border-color: Color of the border below the input when using helper text, error text, or counter
78
85
  * @prop --border-radius: Radius of the input. A large radius may display unevenly when using fill="outline"; if needed, use shape="round" instead or increase --padding-start.
@@ -135,18 +142,18 @@
135
142
  padding-right: 0;
136
143
  padding-top: 0;
137
144
  padding-bottom: 0;
145
+ color: inherit;
138
146
  font-family: inherit;
139
147
  font-size: inherit;
140
148
  font-style: inherit;
141
149
  font-weight: inherit;
142
150
  letter-spacing: inherit;
151
+ text-align: inherit;
143
152
  text-decoration: inherit;
144
153
  text-indent: inherit;
145
154
  text-overflow: inherit;
146
155
  text-transform: inherit;
147
- text-align: inherit;
148
156
  white-space: inherit;
149
- color: inherit;
150
157
  display: inline-block;
151
158
  position: relative;
152
159
  flex: 1;
@@ -606,6 +613,12 @@
606
613
  display: none;
607
614
  }
608
615
 
616
+ /**
617
+ * Convert a pixels given value into rem
618
+ *
619
+ * @param pixels - Value in pixels to be converted (i.e. px)
620
+ * @param context (optional) - Baseline value
621
+ */
609
622
  /**
610
623
  * Convert a font size to a dynamic font size.
611
624
  * Fonts that participate in Dynamic Type should use
@@ -661,6 +674,12 @@
661
674
  * }
662
675
  * }
663
676
  */
677
+ /**
678
+ * Convert a pixels given value into rem
679
+ *
680
+ * @param pixels - Value in pixels to be converted (i.e. px)
681
+ * @param context (optional) - Baseline value
682
+ */
664
683
  /**
665
684
  * Convert a font size to a dynamic font size.
666
685
  * Fonts that participate in Dynamic Type should use
@@ -716,6 +735,12 @@
716
735
  * }
717
736
  * }
718
737
  */
738
+ /**
739
+ * Convert a pixels given value into rem
740
+ *
741
+ * @param pixels - Value in pixels to be converted (i.e. px)
742
+ * @param context (optional) - Baseline value
743
+ */
719
744
  /**
720
745
  * Convert a font size to a dynamic font size.
721
746
  * Fonts that participate in Dynamic Type should use
@@ -841,6 +866,12 @@
841
866
  max-width: calc(100% / 0.75);
842
867
  }
843
868
 
869
+ /**
870
+ * Convert a pixels given value into rem
871
+ *
872
+ * @param pixels - Value in pixels to be converted (i.e. px)
873
+ * @param context (optional) - Baseline value
874
+ */
844
875
  /**
845
876
  * Convert a font size to a dynamic font size.
846
877
  * Fonts that participate in Dynamic Type should use
@@ -997,7 +1028,9 @@
997
1028
  * Label text should not extend
998
1029
  * beyond the bounds of the input.
999
1030
  */
1000
- max-width: calc((100% - var(--padding-start) - var(--padding-end) - 8px) / 0.75);
1031
+ max-width: calc(
1032
+ (100% - var(--padding-start) - var(--padding-end) - 8px) / 0.75
1033
+ );
1001
1034
  }
1002
1035
 
1003
1036
  /**
@@ -1014,8 +1047,8 @@
1014
1047
  }
1015
1048
 
1016
1049
  :host(.input-fill-outline) .input-outline-container {
1017
- left: 0;
1018
1050
  right: 0;
1051
+ left: 0;
1019
1052
  top: 0;
1020
1053
  bottom: 0;
1021
1054
  display: flex;
@@ -1122,6 +1155,12 @@
1122
1155
  border-top: none;
1123
1156
  }
1124
1157
 
1158
+ /**
1159
+ * Convert a pixels given value into rem
1160
+ *
1161
+ * @param pixels - Value in pixels to be converted (i.e. px)
1162
+ * @param context (optional) - Baseline value
1163
+ */
1125
1164
  /**
1126
1165
  * Convert a font size to a dynamic font size.
1127
1166
  * Fonts that participate in Dynamic Type should use
@@ -100,3 +100,69 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, screenshot, c
100
100
  });
101
101
  });
102
102
  });
103
+ configs({ modes: ['ionic-md'] }).forEach(({ title, screenshot, config }) => {
104
+ test.describe(title('input: clear button in ionic theme, visual checks'), () => {
105
+ test('should not have visual regressions', async ({ page }) => {
106
+ await page.setContent(`
107
+ <ion-input
108
+ label="Label"
109
+ label-placement="stacked"
110
+ clear-input="true"
111
+ value="Text"
112
+ ></ion-input>
113
+ `, config);
114
+ const input = page.locator('ion-input');
115
+ await input.evaluate((el) => el.setFocus());
116
+ await page.waitForChanges();
117
+ await expect(input).toHaveScreenshot(screenshot(`input-with-clear-button`));
118
+ });
119
+ test('should not have visual regressions when clear button is focused', async ({ page, pageUtils }) => {
120
+ // extra padding around input ensures focus ring doesn't get cut off at screenshot edges
121
+ await page.setContent(`
122
+ <style>
123
+ #container {
124
+ padding: 10px;
125
+ }
126
+ </style>
127
+
128
+ <div id="container">
129
+ <ion-input
130
+ label="Label"
131
+ label-placement="stacked"
132
+ clear-input="true"
133
+ value="Text"
134
+ ></ion-input>
135
+ </div>
136
+ `, config);
137
+ const input = page.locator('ion-input');
138
+ await input.evaluate((el) => el.setFocus());
139
+ await page.waitForChanges();
140
+ await pageUtils.pressKeys('Tab');
141
+ const container = page.locator('#container');
142
+ await expect(container).toHaveScreenshot(screenshot(`input-clear-button-focused`));
143
+ });
144
+ });
145
+ });
146
+ configs({ modes: ['ionic-md'], directions: ['ltr'] }).forEach(({ title, config }) => {
147
+ test.describe(title('input: clear button in ionic theme, functionality checks'), () => {
148
+ test('should show clear button when any part of input is focused', async ({ page, pageUtils }) => {
149
+ await page.setContent(`
150
+ <ion-input
151
+ label="Label"
152
+ label-placement="stacked"
153
+ clear-input="true"
154
+ value="Text"
155
+ ></ion-input>
156
+ `, config);
157
+ const input = page.locator('ion-input');
158
+ const clearButton = input.locator('.input-clear-icon');
159
+ await expect(clearButton).not.toBeVisible();
160
+ await input.evaluate((el) => el.setFocus());
161
+ await expect(clearButton).toBeVisible();
162
+ // ensure blurring native input doesn't immediately hide clear button
163
+ await pageUtils.pressKeys('Tab');
164
+ await expect(clearButton).toBeFocused();
165
+ await expect(clearButton).toBeVisible();
166
+ });
167
+ });
168
+ });
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import { expect } from "@playwright/test";
5
5
  import { configs, test } from "../../../../utils/test/playwright/index";
6
- configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
6
+ configs({ directions: ['ltr'], modes: ['md', 'ios'] }).forEach(({ title, screenshot, config }) => {
7
7
  test.describe(title('input: bottom content'), () => {
8
8
  test('entire input component should render correctly with no fill', async ({ page }) => {
9
9
  await page.setContent(`
@@ -28,6 +28,24 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
28
28
  });
29
29
  });
30
30
  });
31
+ configs({ directions: ['ltr'], modes: ['ionic-md'] }).forEach(({ title, screenshot, config }) => {
32
+ test.describe(title('input: bottom content'), () => {
33
+ test('entire input component should render correctly with no fill', async ({ page }) => {
34
+ await page.setContent(`
35
+ <ion-input value="hi@ionic.io" label="Email" helper-text="Enter an email" maxlength="20" counter="true"></ion-input>
36
+ `, config);
37
+ const input = page.locator('ion-input');
38
+ await expect(input).toHaveScreenshot(screenshot(`input-full-bottom-no-fill`));
39
+ });
40
+ test('entire input component should render correctly with outline fill', async ({ page }) => {
41
+ await page.setContent(`
42
+ <ion-input fill="outline" value="hi@ionic.io" label="Email" helper-text="Enter an email" maxlength="20" counter="true"></ion-input>
43
+ `, config);
44
+ const input = page.locator('ion-input');
45
+ await expect(input).toHaveScreenshot(screenshot(`input-full-bottom-outline`));
46
+ });
47
+ });
48
+ });
31
49
  /**
32
50
  * Rendering is the same across modes
33
51
  */
@@ -43,7 +61,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
43
61
  /**
44
62
  * Rendering is the same across modes
45
63
  */
46
- configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
64
+ configs({ modes: ['md', 'ionic-md'], directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
47
65
  test.describe(title('input: hint text'), () => {
48
66
  test.describe('input: hint text functionality', () => {
49
67
  test('helper text should be visible initially', async ({ page }) => {
@@ -62,17 +80,18 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, screenshot, co
62
80
  await expect(errorText).toBeVisible();
63
81
  await expect(errorText).toHaveText('my error');
64
82
  });
65
- test('error text should change when variable is customized', async ({ page }) => {
83
+ test('error text and highlight should change when variable is customized', async ({ page }) => {
66
84
  await page.setContent(`
67
85
  <style>
68
86
  ion-input.custom-input {
69
87
  --highlight-color-invalid: purple;
88
+ --text-color-invalid: purple; /* ionic only */
70
89
  }
71
90
  </style>
72
91
  <ion-input class="ion-invalid ion-touched custom-input" label="my label" error-text="my error"></ion-input>
73
92
  `, config);
74
- const errorText = page.locator('ion-input .error-text');
75
- await expect(errorText).toHaveScreenshot(screenshot(`input-error-custom-color`));
93
+ const bottomEl = page.locator('ion-input .input-bottom');
94
+ await expect(bottomEl).toHaveScreenshot(screenshot(`input-error-custom-color`));
76
95
  });
77
96
  });
78
97
  test.describe('input: hint text rendering', () => {