@ionic/core 8.0.0-dev.11711035263.183d2423 → 8.0.0-dev.11711476529.17eae6ec

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 (978) hide show
  1. package/components/action-sheet.js +11 -6
  2. package/components/alert.js +12 -8
  3. package/components/backdrop.js +8 -4
  4. package/components/button.js +41 -11
  5. package/components/buttons.js +9 -5
  6. package/components/checkbox.js +13 -9
  7. package/components/data.js +4 -4
  8. package/components/helpers.js +1 -4
  9. package/components/index4.js +8 -7
  10. package/components/index6.js +25 -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 +10 -6
  17. package/components/ion-app.js +5 -6
  18. package/components/ion-avatar.js +9 -2
  19. package/components/ion-back-button.js +12 -8
  20. package/components/ion-badge.js +9 -5
  21. package/components/ion-breadcrumb.js +11 -7
  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 +11 -7
  28. package/components/ion-chip.js +9 -5
  29. package/components/ion-col.js +5 -5
  30. package/components/ion-content.js +10 -10
  31. package/components/ion-datetime-button.js +9 -6
  32. package/components/ion-datetime.js +20 -17
  33. package/components/ion-fab-button.js +10 -6
  34. package/components/ion-fab-list.js +5 -5
  35. package/components/ion-fab.js +5 -5
  36. package/components/ion-footer.js +14 -10
  37. package/components/ion-grid.js +5 -5
  38. package/components/ion-header.js +14 -10
  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.js +18 -34
  43. package/components/ion-item-divider.js +9 -5
  44. package/components/ion-item-group.js +9 -5
  45. package/components/ion-item-option.js +9 -5
  46. package/components/ion-item-options.js +9 -5
  47. package/components/ion-item-sliding.js +5 -5
  48. package/components/ion-loading.js +10 -6
  49. package/components/ion-menu-button.js +11 -7
  50. package/components/ion-menu-toggle.js +5 -5
  51. package/components/ion-menu.js +9 -5
  52. package/components/ion-modal.js +11 -8
  53. package/components/ion-nav-link.js +1 -1
  54. package/components/ion-nav.js +6 -5
  55. package/components/ion-note.js +9 -5
  56. package/components/ion-picker-legacy.js +5 -6
  57. package/components/ion-progress-bar.js +8 -4
  58. package/components/ion-range.js +11 -8
  59. package/components/ion-refresher-content.js +9 -8
  60. package/components/ion-refresher.js +10 -6
  61. package/components/ion-reorder-group.js +5 -5
  62. package/components/ion-reorder.js +11 -5
  63. package/components/ion-router-link.js +5 -5
  64. package/components/ion-router-outlet.js +1 -1
  65. package/components/ion-row.js +5 -2
  66. package/components/ion-searchbar.js +16 -12
  67. package/components/ion-segment-button.js +10 -6
  68. package/components/ion-segment.js +9 -5
  69. package/components/ion-select-option.js +5 -2
  70. package/components/ion-select.js +23 -19
  71. package/components/ion-skeleton-text.js +5 -5
  72. package/components/ion-split-pane.js +10 -6
  73. package/components/ion-tab-bar.js +9 -5
  74. package/components/ion-tab-button.js +9 -5
  75. package/components/ion-tab.js +2 -2
  76. package/components/ion-tabs.js +1 -1
  77. package/components/ion-text.js +5 -5
  78. package/components/ion-textarea.js +12 -8
  79. package/components/ion-thumbnail.js +5 -2
  80. package/components/ion-title.js +9 -5
  81. package/components/ion-toast.js +13 -9
  82. package/components/ion-toggle.js +17 -13
  83. package/components/ion-toolbar.js +9 -5
  84. package/components/ionic-global.js +190 -13
  85. package/components/ios.transition.js +1 -0
  86. package/components/item.js +11 -7
  87. package/components/label.js +9 -5
  88. package/components/list-header.js +9 -5
  89. package/components/list.js +10 -6
  90. package/components/overlays.js +1 -2
  91. package/components/picker-column-option.js +9 -5
  92. package/components/picker-column.js +6 -6
  93. package/components/picker-column2.js +4 -4
  94. package/components/picker.js +6 -2
  95. package/components/popover.js +9 -6
  96. package/components/radio-group.js +5 -3
  97. package/components/radio.js +10 -6
  98. package/components/ripple-effect.js +4 -4
  99. package/components/select-popover.js +9 -2
  100. package/components/spinner.js +6 -6
  101. package/components/status-tap.js +1 -1
  102. package/css/core.css +18 -0
  103. package/css/core.css.map +1 -1
  104. package/css/display.css +6 -0
  105. package/css/display.css.map +1 -1
  106. package/css/float-elements.css +6 -0
  107. package/css/float-elements.css.map +1 -1
  108. package/css/global.bundle.css +12 -0
  109. package/css/global.bundle.css.map +1 -1
  110. package/css/ionic-swiper.css +6 -0
  111. package/css/ionic-swiper.css.map +1 -1
  112. package/css/ionic.bundle.css.map +1 -1
  113. package/css/padding.css +6 -0
  114. package/css/padding.css.map +1 -1
  115. package/css/structure.css +6 -0
  116. package/css/structure.css.map +1 -1
  117. package/css/text-alignment.css +6 -0
  118. package/css/text-alignment.css.map +1 -1
  119. package/css/text-transformation.css +6 -0
  120. package/css/text-transformation.css.map +1 -1
  121. package/css/typography.css +6 -0
  122. package/css/typography.css.map +1 -1
  123. package/css/utils.bundle.css +30 -0
  124. package/css/utils.bundle.css.map +1 -1
  125. package/dist/cjs/{app-globals-e132c781.js → app-globals-98e49326.js} +1 -1
  126. package/dist/cjs/{data-21dc0f81.js → data-f2ccf911.js} +6 -6
  127. package/dist/cjs/{framework-delegate-df3a2b04.js → framework-delegate-55f5683a.js} +1 -1
  128. package/dist/cjs/{hardware-back-button-1c67a5a2.js → hardware-back-button-f66bce00.js} +1 -1
  129. package/dist/cjs/{helpers-71097d9c.js → helpers-afaa9001.js} +0 -4
  130. package/dist/cjs/{index-ef9261f8.js → index-5643c839.js} +3 -3
  131. package/dist/cjs/{index-7479ea5a.js → index-91435ed0.js} +3 -3
  132. package/dist/cjs/{index-a91a3e24.js → index-9509ecad.js} +5 -34
  133. package/dist/cjs/{index-073c7cdc.js → index-f52c6d38.js} +0 -4
  134. package/dist/cjs/{index-c2191aa0.js → index-f5fcf972.js} +14 -13
  135. package/dist/cjs/index.cjs.js +9 -10
  136. package/dist/cjs/{input-shims-77b14f24.js → input-shims-837af288.js} +4 -3
  137. package/dist/cjs/{input.utils-ca74d73a.js → input.utils-01c2fa15.js} +3 -3
  138. package/dist/cjs/ion-accordion_2.cjs.entry.js +20 -13
  139. package/dist/cjs/ion-action-sheet.cjs.entry.js +15 -11
  140. package/dist/cjs/ion-alert.cjs.entry.js +16 -13
  141. package/dist/cjs/ion-app_8.cjs.entry.js +83 -64
  142. package/dist/cjs/ion-avatar_3.cjs.entry.js +21 -7
  143. package/dist/cjs/ion-back-button.cjs.entry.js +13 -9
  144. package/dist/cjs/ion-backdrop.cjs.entry.js +8 -4
  145. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +20 -12
  146. package/dist/cjs/ion-button_2.cjs.entry.js +43 -14
  147. package/dist/cjs/ion-card_5.cjs.entry.js +44 -24
  148. package/dist/cjs/ion-checkbox.cjs.entry.js +14 -10
  149. package/dist/cjs/ion-chip.cjs.entry.js +9 -5
  150. package/dist/cjs/ion-col_3.cjs.entry.js +13 -10
  151. package/dist/cjs/ion-datetime-button.cjs.entry.js +15 -12
  152. package/dist/cjs/ion-datetime_3.cjs.entry.js +108 -105
  153. package/dist/cjs/ion-fab_3.cjs.entry.js +19 -15
  154. package/dist/cjs/ion-img.cjs.entry.js +6 -3
  155. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +17 -14
  156. package/dist/cjs/ion-input.cjs.entry.js +19 -35
  157. package/dist/cjs/ion-item-option_3.cjs.entry.js +22 -15
  158. package/dist/cjs/ion-item_8.cjs.entry.js +65 -37
  159. package/dist/cjs/ion-loading.cjs.entry.js +14 -11
  160. package/dist/cjs/ion-menu_3.cjs.entry.js +28 -21
  161. package/dist/cjs/ion-modal.cjs.entry.js +21 -18
  162. package/dist/cjs/ion-nav_2.cjs.entry.js +11 -9
  163. package/dist/cjs/ion-picker-column-option.cjs.entry.js +10 -6
  164. package/dist/cjs/ion-picker-column.cjs.entry.js +7 -7
  165. package/dist/cjs/ion-picker.cjs.entry.js +7 -3
  166. package/dist/cjs/ion-popover.cjs.entry.js +17 -14
  167. package/dist/cjs/ion-progress-bar.cjs.entry.js +9 -5
  168. package/dist/cjs/ion-radio_2.cjs.entry.js +15 -9
  169. package/dist/cjs/ion-range.cjs.entry.js +17 -14
  170. package/dist/cjs/ion-refresher_2.cjs.entry.js +19 -15
  171. package/dist/cjs/ion-reorder_2.cjs.entry.js +16 -11
  172. package/dist/cjs/ion-ripple-effect.cjs.entry.js +4 -4
  173. package/dist/cjs/ion-route_4.cjs.entry.js +6 -6
  174. package/dist/cjs/ion-searchbar.cjs.entry.js +17 -13
  175. package/dist/cjs/ion-segment_2.cjs.entry.js +19 -11
  176. package/dist/cjs/ion-select_3.cjs.entry.js +40 -27
  177. package/dist/cjs/ion-spinner.cjs.entry.js +6 -6
  178. package/dist/cjs/ion-split-pane.cjs.entry.js +10 -6
  179. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +18 -10
  180. package/dist/cjs/ion-tab_2.cjs.entry.js +5 -5
  181. package/dist/cjs/ion-text.cjs.entry.js +5 -5
  182. package/dist/cjs/ion-textarea.cjs.entry.js +15 -12
  183. package/dist/cjs/ion-toast.cjs.entry.js +38 -34
  184. package/dist/cjs/ion-toggle.cjs.entry.js +18 -14
  185. package/dist/cjs/ionic-global-94d8021d.js +411 -0
  186. package/dist/cjs/ionic.cjs.js +3 -3
  187. package/dist/cjs/{ios.transition-2bb1c4d1.js → ios.transition-19155451.js} +3 -2
  188. package/dist/cjs/loader.cjs.js +3 -3
  189. package/dist/cjs/{md.transition-c0afd670.js → md.transition-1b1135b1.js} +2 -2
  190. package/dist/cjs/{notch-controller-0042ad49.js → notch-controller-d69150f5.js} +1 -1
  191. package/dist/cjs/{overlays-30b83581.js → overlays-de847251.js} +5 -6
  192. package/dist/cjs/{status-tap-dc3b8fda.js → status-tap-3ef7ca2b.js} +3 -3
  193. package/dist/cjs/{swipe-back-29e88360.js → swipe-back-0303a5e4.js} +1 -1
  194. package/dist/collection/collection-manifest.json +0 -1
  195. package/dist/collection/components/accordion/accordion.ios.css +12 -0
  196. package/dist/collection/components/accordion/accordion.js +11 -8
  197. package/dist/collection/components/accordion/accordion.md.css +6 -0
  198. package/dist/collection/components/accordion-group/accordion-group.ios.css +12 -0
  199. package/dist/collection/components/accordion-group/accordion-group.js +11 -8
  200. package/dist/collection/components/accordion-group/accordion-group.md.css +18 -0
  201. package/dist/collection/components/action-sheet/action-sheet.ios.css +12 -0
  202. package/dist/collection/components/action-sheet/action-sheet.js +14 -10
  203. package/dist/collection/components/action-sheet/action-sheet.md.css +12 -0
  204. package/dist/collection/components/alert/alert.ios.css +18 -0
  205. package/dist/collection/components/alert/alert.js +15 -12
  206. package/dist/collection/components/alert/alert.md.css +18 -0
  207. package/dist/collection/components/app/app.js +8 -4
  208. package/dist/collection/components/avatar/avatar.ios.css +12 -0
  209. package/dist/collection/components/avatar/avatar.js +13 -4
  210. package/dist/collection/components/avatar/avatar.md.css +12 -0
  211. package/dist/collection/components/back-button/back-button.ios.css +12 -0
  212. package/dist/collection/components/back-button/back-button.js +13 -10
  213. package/dist/collection/components/back-button/back-button.md.css +12 -0
  214. package/dist/collection/components/backdrop/backdrop.ios.css +12 -0
  215. package/dist/collection/components/backdrop/backdrop.js +12 -6
  216. package/dist/collection/components/backdrop/backdrop.md.css +12 -0
  217. package/dist/collection/components/badge/badge.ios.css +12 -0
  218. package/dist/collection/components/badge/badge.js +11 -8
  219. package/dist/collection/components/badge/badge.md.css +12 -0
  220. package/dist/collection/components/breadcrumb/breadcrumb.ios.css +12 -0
  221. package/dist/collection/components/breadcrumb/breadcrumb.js +12 -9
  222. package/dist/collection/components/breadcrumb/breadcrumb.md.css +12 -0
  223. package/dist/collection/components/breadcrumbs/breadcrumbs.ios.css +6 -0
  224. package/dist/collection/components/breadcrumbs/breadcrumbs.js +11 -9
  225. package/dist/collection/components/breadcrumbs/breadcrumbs.md.css +6 -0
  226. package/dist/collection/components/button/button.ionic.css +565 -0
  227. package/dist/collection/components/button/button.ios.css +50 -10
  228. package/dist/collection/components/button/button.js +48 -14
  229. package/dist/collection/components/button/button.md.css +40 -13
  230. package/dist/collection/components/button/test/clear/button.e2e.js +6 -3
  231. package/dist/collection/components/button/test/shape/button.e2e.js +88 -0
  232. package/dist/collection/components/button/test/size/button.e2e.js +19 -1
  233. package/dist/collection/components/buttons/buttons.ios.css +18 -0
  234. package/dist/collection/components/buttons/buttons.js +14 -8
  235. package/dist/collection/components/buttons/buttons.md.css +18 -0
  236. package/dist/collection/components/card/card.ios.css +12 -0
  237. package/dist/collection/components/card/card.js +13 -10
  238. package/dist/collection/components/card/card.md.css +12 -0
  239. package/dist/collection/components/card-content/card-content.ios.css +12 -0
  240. package/dist/collection/components/card-content/card-content.js +11 -8
  241. package/dist/collection/components/card-content/card-content.md.css +12 -0
  242. package/dist/collection/components/card-header/card-header.ios.css +12 -0
  243. package/dist/collection/components/card-header/card-header.js +12 -9
  244. package/dist/collection/components/card-header/card-header.md.css +12 -0
  245. package/dist/collection/components/card-subtitle/card-subtitle.ios.css +12 -0
  246. package/dist/collection/components/card-subtitle/card-subtitle.js +11 -8
  247. package/dist/collection/components/card-subtitle/card-subtitle.md.css +12 -0
  248. package/dist/collection/components/card-title/card-title.ios.css +12 -0
  249. package/dist/collection/components/card-title/card-title.js +11 -8
  250. package/dist/collection/components/card-title/card-title.md.css +12 -0
  251. package/dist/collection/components/checkbox/checkbox.ios.css +18 -0
  252. package/dist/collection/components/checkbox/checkbox.js +15 -12
  253. package/dist/collection/components/checkbox/checkbox.md.css +18 -0
  254. package/dist/collection/components/chip/chip.ios.css +6 -0
  255. package/dist/collection/components/chip/chip.js +11 -8
  256. package/dist/collection/components/chip/chip.md.css +6 -0
  257. package/dist/collection/components/col/col.css +12 -0
  258. package/dist/collection/components/col/col.js +9 -5
  259. package/dist/collection/components/content/content.css +6 -0
  260. package/dist/collection/components/content/content.js +13 -10
  261. package/dist/collection/components/datetime/datetime.ios.css +12 -0
  262. package/dist/collection/components/datetime/datetime.js +21 -18
  263. package/dist/collection/components/datetime/datetime.md.css +12 -0
  264. package/dist/collection/components/datetime/utils/data.js +3 -3
  265. package/dist/collection/components/datetime-button/datetime-button.ios.css +6 -0
  266. package/dist/collection/components/datetime-button/datetime-button.js +11 -8
  267. package/dist/collection/components/datetime-button/datetime-button.md.css +6 -0
  268. package/dist/collection/components/fab/fab.css +24 -0
  269. package/dist/collection/components/fab/fab.js +9 -5
  270. package/dist/collection/components/fab-button/fab-button.ios.css +12 -0
  271. package/dist/collection/components/fab-button/fab-button.js +12 -9
  272. package/dist/collection/components/fab-button/fab-button.md.css +12 -0
  273. package/dist/collection/components/fab-list/fab-list.css +12 -0
  274. package/dist/collection/components/fab-list/fab-list.js +9 -5
  275. package/dist/collection/components/footer/footer.ios.css +12 -0
  276. package/dist/collection/components/footer/footer.js +17 -14
  277. package/dist/collection/components/footer/footer.md.css +12 -0
  278. package/dist/collection/components/grid/grid.css +12 -0
  279. package/dist/collection/components/grid/grid.js +9 -5
  280. package/dist/collection/components/header/header.ios.css +12 -0
  281. package/dist/collection/components/header/header.js +17 -14
  282. package/dist/collection/components/header/header.md.css +12 -0
  283. package/dist/collection/components/img/img.js +8 -2
  284. package/dist/collection/components/infinite-scroll/infinite-scroll.js +8 -4
  285. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.ios.css +12 -0
  286. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +16 -10
  287. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.md.css +12 -0
  288. package/dist/collection/components/input/input.ios.css +17 -9
  289. package/dist/collection/components/input/input.js +18 -36
  290. package/dist/collection/components/input/input.md.css +35 -9
  291. package/dist/collection/components/item/item.ios.css +12 -0
  292. package/dist/collection/components/item/item.js +13 -10
  293. package/dist/collection/components/item/item.md.css +24 -0
  294. package/dist/collection/components/item-divider/item-divider.ios.css +18 -0
  295. package/dist/collection/components/item-divider/item-divider.js +11 -8
  296. package/dist/collection/components/item-divider/item-divider.md.css +18 -0
  297. package/dist/collection/components/item-group/item-group.ios.css +12 -0
  298. package/dist/collection/components/item-group/item-group.js +13 -7
  299. package/dist/collection/components/item-group/item-group.md.css +12 -0
  300. package/dist/collection/components/item-option/item-option.ios.css +12 -0
  301. package/dist/collection/components/item-option/item-option.js +11 -8
  302. package/dist/collection/components/item-option/item-option.md.css +12 -0
  303. package/dist/collection/components/item-options/item-options.ios.css +18 -0
  304. package/dist/collection/components/item-options/item-options.js +13 -7
  305. package/dist/collection/components/item-options/item-options.md.css +18 -0
  306. package/dist/collection/components/item-sliding/item-sliding.css +6 -0
  307. package/dist/collection/components/item-sliding/item-sliding.js +8 -4
  308. package/dist/collection/components/label/label.ios.css +18 -0
  309. package/dist/collection/components/label/label.js +11 -8
  310. package/dist/collection/components/label/label.md.css +18 -0
  311. package/dist/collection/components/list/list.ios.css +18 -0
  312. package/dist/collection/components/list/list.js +12 -9
  313. package/dist/collection/components/list/list.md.css +18 -0
  314. package/dist/collection/components/list-header/list-header.ios.css +18 -0
  315. package/dist/collection/components/list-header/list-header.js +11 -8
  316. package/dist/collection/components/list-header/list-header.md.css +18 -0
  317. package/dist/collection/components/loading/loading.ios.css +12 -0
  318. package/dist/collection/components/loading/loading.js +13 -10
  319. package/dist/collection/components/loading/loading.md.css +12 -0
  320. package/dist/collection/components/menu/menu.ios.css +12 -0
  321. package/dist/collection/components/menu/menu.js +12 -7
  322. package/dist/collection/components/menu/menu.md.css +12 -0
  323. package/dist/collection/components/menu-button/menu-button.ios.css +12 -0
  324. package/dist/collection/components/menu-button/menu-button.js +12 -9
  325. package/dist/collection/components/menu-button/menu-button.md.css +12 -0
  326. package/dist/collection/components/menu-toggle/menu-toggle.js +8 -5
  327. package/dist/collection/components/modal/modal.ios.css +12 -0
  328. package/dist/collection/components/modal/modal.js +12 -9
  329. package/dist/collection/components/modal/modal.md.css +12 -0
  330. package/dist/collection/components/nav/nav.css +6 -0
  331. package/dist/collection/components/nav/nav.js +11 -5
  332. package/dist/collection/components/nav-link/nav-link.js +5 -1
  333. package/dist/collection/components/note/note.ios.css +12 -0
  334. package/dist/collection/components/note/note.js +11 -8
  335. package/dist/collection/components/note/note.md.css +12 -0
  336. package/dist/collection/components/picker/picker.ios.css +12 -0
  337. package/dist/collection/components/picker/picker.js +8 -5
  338. package/dist/collection/components/picker/picker.md.css +12 -0
  339. package/dist/collection/components/picker-column/picker-column.css +6 -0
  340. package/dist/collection/components/picker-column/picker-column.js +8 -7
  341. package/dist/collection/components/picker-column-option/picker-column-option.ios.css +6 -0
  342. package/dist/collection/components/picker-column-option/picker-column-option.js +13 -7
  343. package/dist/collection/components/picker-column-option/picker-column-option.md.css +6 -0
  344. package/dist/collection/components/picker-legacy/picker.ios.css +12 -0
  345. package/dist/collection/components/picker-legacy/picker.js +7 -6
  346. package/dist/collection/components/picker-legacy/picker.md.css +12 -0
  347. package/dist/collection/components/picker-legacy-column/picker-column.ios.css +12 -0
  348. package/dist/collection/components/picker-legacy-column/picker-column.js +4 -4
  349. package/dist/collection/components/picker-legacy-column/picker-column.md.css +12 -0
  350. package/dist/collection/components/popover/popover.ios.css +12 -0
  351. package/dist/collection/components/popover/popover.js +15 -12
  352. package/dist/collection/components/popover/popover.md.css +12 -0
  353. package/dist/collection/components/progress-bar/progress-bar.ios.css +6 -0
  354. package/dist/collection/components/progress-bar/progress-bar.js +10 -7
  355. package/dist/collection/components/progress-bar/progress-bar.md.css +6 -0
  356. package/dist/collection/components/radio/radio.ios.css +18 -0
  357. package/dist/collection/components/radio/radio.js +12 -9
  358. package/dist/collection/components/radio/radio.md.css +18 -0
  359. package/dist/collection/components/radio-group/radio-group.js +9 -3
  360. package/dist/collection/components/range/range.ios.css +12 -0
  361. package/dist/collection/components/range/range.js +12 -9
  362. package/dist/collection/components/range/range.md.css +12 -0
  363. package/dist/collection/components/refresher/refresher.ios.css +12 -0
  364. package/dist/collection/components/refresher/refresher.js +11 -8
  365. package/dist/collection/components/refresher/refresher.md.css +12 -0
  366. package/dist/collection/components/refresher-content/refresher-content.js +12 -7
  367. package/dist/collection/components/reorder/reorder.ios.css +6 -0
  368. package/dist/collection/components/reorder/reorder.js +13 -6
  369. package/dist/collection/components/reorder/reorder.md.css +6 -0
  370. package/dist/collection/components/reorder-group/reorder-group.css +6 -0
  371. package/dist/collection/components/reorder-group/reorder-group.js +8 -4
  372. package/dist/collection/components/ripple-effect/ripple-effect.css +6 -0
  373. package/dist/collection/components/ripple-effect/ripple-effect.js +8 -4
  374. package/dist/collection/components/route/route.js +4 -0
  375. package/dist/collection/components/router/router.js +4 -0
  376. package/dist/collection/components/router-link/router-link.css +6 -0
  377. package/dist/collection/components/router-link/router-link.js +9 -5
  378. package/dist/collection/components/router-outlet/router-outlet.css +6 -0
  379. package/dist/collection/components/router-outlet/router-outlet.js +5 -2
  380. package/dist/collection/components/row/row.css +12 -0
  381. package/dist/collection/components/row/row.js +9 -2
  382. package/dist/collection/components/searchbar/searchbar.ios.css +12 -0
  383. package/dist/collection/components/searchbar/searchbar.js +21 -18
  384. package/dist/collection/components/searchbar/searchbar.md.css +12 -0
  385. package/dist/collection/components/segment/segment.ios.css +18 -0
  386. package/dist/collection/components/segment/segment.js +11 -8
  387. package/dist/collection/components/segment/segment.md.css +18 -0
  388. package/dist/collection/components/segment-button/segment-button.ios.css +12 -0
  389. package/dist/collection/components/segment-button/segment-button.js +12 -9
  390. package/dist/collection/components/segment-button/segment-button.md.css +12 -0
  391. package/dist/collection/components/select/select.ios.css +18 -0
  392. package/dist/collection/components/select/select.js +27 -24
  393. package/dist/collection/components/select/select.md.css +30 -0
  394. package/dist/collection/components/select-option/select-option.js +9 -2
  395. package/dist/collection/components/select-popover/select-popover.ios.css +18 -0
  396. package/dist/collection/components/select-popover/select-popover.js +12 -4
  397. package/dist/collection/components/select-popover/select-popover.md.css +18 -0
  398. package/dist/collection/components/skeleton-text/skeleton-text.css +6 -0
  399. package/dist/collection/components/skeleton-text/skeleton-text.js +9 -5
  400. package/dist/collection/components/spinner/spinner.css +6 -0
  401. package/dist/collection/components/spinner/spinner.js +10 -6
  402. package/dist/collection/components/split-pane/split-pane.ios.css +18 -0
  403. package/dist/collection/components/split-pane/split-pane.js +14 -8
  404. package/dist/collection/components/split-pane/split-pane.md.css +18 -0
  405. package/dist/collection/components/tab/tab.js +6 -2
  406. package/dist/collection/components/tab-bar/tab-bar.ios.css +18 -0
  407. package/dist/collection/components/tab-bar/tab-bar.js +12 -9
  408. package/dist/collection/components/tab-bar/tab-bar.md.css +18 -0
  409. package/dist/collection/components/tab-button/tab-button.ios.css +12 -0
  410. package/dist/collection/components/tab-button/tab-button.js +11 -8
  411. package/dist/collection/components/tab-button/tab-button.md.css +12 -0
  412. package/dist/collection/components/tabs/tabs.css +6 -0
  413. package/dist/collection/components/tabs/tabs.js +4 -1
  414. package/dist/collection/components/text/text.css +6 -0
  415. package/dist/collection/components/text/text.js +7 -6
  416. package/dist/collection/components/textarea/textarea.ios.css +24 -0
  417. package/dist/collection/components/textarea/textarea.js +15 -12
  418. package/dist/collection/components/textarea/textarea.md.css +36 -0
  419. package/dist/collection/components/thumbnail/thumbnail.css +6 -0
  420. package/dist/collection/components/thumbnail/thumbnail.js +9 -2
  421. package/dist/collection/components/title/title.ios.css +6 -0
  422. package/dist/collection/components/title/title.js +13 -7
  423. package/dist/collection/components/title/title.md.css +6 -0
  424. package/dist/collection/components/toast/animations/utils.js +1 -1
  425. package/dist/collection/components/toast/toast.ios.css +12 -0
  426. package/dist/collection/components/toast/toast.js +15 -11
  427. package/dist/collection/components/toast/toast.md.css +12 -0
  428. package/dist/collection/components/toggle/toggle.ios.css +18 -0
  429. package/dist/collection/components/toggle/toggle.js +18 -15
  430. package/dist/collection/components/toggle/toggle.md.css +18 -0
  431. package/dist/collection/components/toolbar/toolbar.ios.css +12 -0
  432. package/dist/collection/components/toolbar/toolbar.js +13 -10
  433. package/dist/collection/components/toolbar/toolbar.md.css +12 -0
  434. package/dist/collection/global/ionic-global.js +160 -12
  435. package/dist/collection/global/test/ionic-global.spec.js +109 -0
  436. package/dist/collection/utils/menu-controller/animations/overlay.js +3 -3
  437. package/dist/collection/utils/menu-controller/animations/push.js +2 -1
  438. package/dist/collection/utils/menu-controller/animations/reveal.js +2 -1
  439. package/dist/collection/utils/tap-click/index.js +5 -34
  440. package/dist/collection/utils/test/playwright/generator.js +45 -22
  441. package/dist/collection/utils/test/playwright/page/utils/goto.js +13 -4
  442. package/dist/collection/utils/test/playwright/page/utils/set-content.js +13 -1
  443. package/dist/collection/utils/transition/ios.transition.js +1 -0
  444. package/dist/docs.json +3896 -518
  445. package/dist/esm/{app-globals-80842d68.js → app-globals-4194f7b0.js} +1 -1
  446. package/dist/esm/{button-active-824983fa.js → button-active-6f657ae4.js} +1 -1
  447. package/dist/esm/{data-ae11fd43.js → data-735635b1.js} +4 -4
  448. package/dist/esm/{framework-delegate-3dede018.js → framework-delegate-63d1a679.js} +1 -1
  449. package/dist/esm/{hardware-back-button-fb295e3a.js → hardware-back-button-ff84501f.js} +2 -2
  450. package/dist/esm/{helpers-eab4f597.js → helpers-da915de8.js} +1 -4
  451. package/dist/esm/{index-5d6a0317.js → index-3a495cc6.js} +1 -1
  452. package/dist/esm/{index-044b5a86.js → index-4bbc4ca3.js} +2 -2
  453. package/dist/esm/{index-0089f1fa.js → index-62041d9c.js} +10 -9
  454. package/dist/esm/{index-fa221975.js → index-79b30591.js} +5 -34
  455. package/dist/esm/{index-f27077ac.js → index-e3f4491c.js} +4 -4
  456. package/dist/esm/{index-e2cf2ceb.js → index-f7dc70ba.js} +1 -3
  457. package/dist/esm/index.js +10 -11
  458. package/dist/esm/{input-shims-196afa11.js → input-shims-131a3f9f.js} +4 -3
  459. package/dist/esm/{input.utils-426cc674.js → input.utils-41b26b54.js} +2 -2
  460. package/dist/esm/ion-accordion_2.entry.js +20 -13
  461. package/dist/esm/ion-action-sheet.entry.js +17 -13
  462. package/dist/esm/ion-alert.entry.js +18 -15
  463. package/dist/esm/ion-app_8.entry.js +73 -54
  464. package/dist/esm/ion-avatar_3.entry.js +22 -8
  465. package/dist/esm/ion-back-button.entry.js +14 -10
  466. package/dist/esm/ion-backdrop.entry.js +9 -5
  467. package/dist/esm/ion-breadcrumb_2.entry.js +21 -13
  468. package/dist/esm/ion-button_2.entry.js +41 -12
  469. package/dist/esm/ion-card_5.entry.js +45 -25
  470. package/dist/esm/ion-checkbox.entry.js +15 -11
  471. package/dist/esm/ion-chip.entry.js +10 -6
  472. package/dist/esm/ion-col_3.entry.js +14 -11
  473. package/dist/esm/ion-datetime-button.entry.js +12 -9
  474. package/dist/esm/ion-datetime_3.entry.js +33 -30
  475. package/dist/esm/ion-fab_3.entry.js +20 -16
  476. package/dist/esm/ion-img.entry.js +7 -4
  477. package/dist/esm/ion-infinite-scroll_2.entry.js +18 -15
  478. package/dist/esm/ion-input.entry.js +20 -36
  479. package/dist/esm/ion-item-option_3.entry.js +23 -16
  480. package/dist/esm/ion-item_8.entry.js +66 -38
  481. package/dist/esm/ion-loading.entry.js +15 -12
  482. package/dist/esm/ion-menu_3.entry.js +29 -22
  483. package/dist/esm/ion-modal.entry.js +17 -14
  484. package/dist/esm/ion-nav_2.entry.js +12 -10
  485. package/dist/esm/ion-picker-column-option.entry.js +11 -7
  486. package/dist/esm/ion-picker-column.entry.js +8 -8
  487. package/dist/esm/ion-picker.entry.js +8 -4
  488. package/dist/esm/ion-popover.entry.js +15 -12
  489. package/dist/esm/ion-progress-bar.entry.js +10 -6
  490. package/dist/esm/ion-radio_2.entry.js +16 -10
  491. package/dist/esm/ion-range.entry.js +13 -10
  492. package/dist/esm/ion-refresher_2.entry.js +20 -16
  493. package/dist/esm/ion-reorder_2.entry.js +17 -12
  494. package/dist/esm/ion-ripple-effect.entry.js +5 -5
  495. package/dist/esm/ion-route_4.entry.js +7 -7
  496. package/dist/esm/ion-searchbar.entry.js +18 -14
  497. package/dist/esm/ion-segment_2.entry.js +20 -12
  498. package/dist/esm/ion-select_3.entry.js +41 -28
  499. package/dist/esm/ion-spinner.entry.js +7 -7
  500. package/dist/esm/ion-split-pane.entry.js +11 -7
  501. package/dist/esm/ion-tab-bar_2.entry.js +19 -11
  502. package/dist/esm/ion-tab_2.entry.js +6 -6
  503. package/dist/esm/ion-text.entry.js +6 -6
  504. package/dist/esm/ion-textarea.entry.js +16 -13
  505. package/dist/esm/ion-toast.entry.js +18 -14
  506. package/dist/esm/ion-toggle.entry.js +19 -15
  507. package/dist/esm/ionic-global-d47e129d.js +401 -0
  508. package/dist/esm/ionic.js +5 -5
  509. package/dist/esm/{ios.transition-632deb95.js → ios.transition-2187a9fd.js} +4 -3
  510. package/dist/esm/loader.js +5 -5
  511. package/dist/esm/{md.transition-3bcf4011.js → md.transition-a8d52fcb.js} +3 -3
  512. package/dist/esm/{notch-controller-cff691e5.js → notch-controller-55b09e11.js} +1 -1
  513. package/dist/esm/{overlays-d41f74ac.js → overlays-213b5a21.js} +4 -5
  514. package/dist/esm/{status-tap-45595148.js → status-tap-8838c434.js} +4 -4
  515. package/dist/esm/{swipe-back-57844616.js → swipe-back-e5394307.js} +1 -1
  516. package/dist/esm-es5/app-globals-4194f7b0.js +4 -0
  517. package/dist/esm-es5/{button-active-824983fa.js → button-active-6f657ae4.js} +1 -1
  518. package/dist/esm-es5/data-735635b1.js +4 -0
  519. package/dist/esm-es5/{framework-delegate-3dede018.js → framework-delegate-63d1a679.js} +1 -1
  520. package/dist/esm-es5/{hardware-back-button-fb295e3a.js → hardware-back-button-ff84501f.js} +1 -1
  521. package/dist/esm-es5/{helpers-eab4f597.js → helpers-da915de8.js} +1 -1
  522. package/dist/esm-es5/{index-5d6a0317.js → index-3a495cc6.js} +1 -1
  523. package/dist/esm-es5/index-4bbc4ca3.js +4 -0
  524. package/dist/esm-es5/index-62041d9c.js +4 -0
  525. package/dist/esm-es5/index-79b30591.js +4 -0
  526. package/dist/esm-es5/{index-f27077ac.js → index-e3f4491c.js} +1 -1
  527. package/dist/esm-es5/{index-e2cf2ceb.js → index-f7dc70ba.js} +1 -1
  528. package/dist/esm-es5/index.js +1 -1
  529. package/dist/esm-es5/input-shims-131a3f9f.js +4 -0
  530. package/dist/esm-es5/input.utils-41b26b54.js +4 -0
  531. package/dist/esm-es5/ion-accordion_2.entry.js +1 -1
  532. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  533. package/dist/esm-es5/ion-alert.entry.js +1 -1
  534. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  535. package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
  536. package/dist/esm-es5/ion-back-button.entry.js +1 -1
  537. package/dist/esm-es5/ion-backdrop.entry.js +1 -1
  538. package/dist/esm-es5/ion-breadcrumb_2.entry.js +1 -1
  539. package/dist/esm-es5/ion-button_2.entry.js +1 -1
  540. package/dist/esm-es5/ion-card_5.entry.js +1 -1
  541. package/dist/esm-es5/ion-checkbox.entry.js +1 -1
  542. package/dist/esm-es5/ion-chip.entry.js +1 -1
  543. package/dist/esm-es5/ion-col_3.entry.js +1 -1
  544. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  545. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  546. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  547. package/dist/esm-es5/ion-img.entry.js +1 -1
  548. package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
  549. package/dist/esm-es5/ion-input.entry.js +1 -1
  550. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  551. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  552. package/dist/esm-es5/ion-loading.entry.js +1 -1
  553. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  554. package/dist/esm-es5/ion-modal.entry.js +1 -1
  555. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  556. package/dist/esm-es5/ion-picker-column-option.entry.js +1 -1
  557. package/dist/esm-es5/ion-picker-column.entry.js +1 -1
  558. package/dist/esm-es5/ion-picker.entry.js +1 -1
  559. package/dist/esm-es5/ion-popover.entry.js +1 -1
  560. package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
  561. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  562. package/dist/esm-es5/ion-range.entry.js +1 -1
  563. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  564. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  565. package/dist/esm-es5/ion-ripple-effect.entry.js +1 -1
  566. package/dist/esm-es5/ion-route_4.entry.js +1 -1
  567. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  568. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  569. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  570. package/dist/esm-es5/ion-spinner.entry.js +1 -1
  571. package/dist/esm-es5/ion-split-pane.entry.js +1 -1
  572. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  573. package/dist/esm-es5/ion-tab_2.entry.js +1 -1
  574. package/dist/esm-es5/ion-text.entry.js +1 -1
  575. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  576. package/dist/esm-es5/ion-toast.entry.js +1 -1
  577. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  578. package/dist/esm-es5/ionic-global-d47e129d.js +4 -0
  579. package/dist/esm-es5/ionic.js +1 -1
  580. package/dist/esm-es5/ios.transition-2187a9fd.js +4 -0
  581. package/dist/esm-es5/loader.js +1 -1
  582. package/dist/esm-es5/md.transition-a8d52fcb.js +4 -0
  583. package/dist/esm-es5/{notch-controller-cff691e5.js → notch-controller-55b09e11.js} +1 -1
  584. package/dist/esm-es5/overlays-213b5a21.js +4 -0
  585. package/dist/esm-es5/status-tap-8838c434.js +4 -0
  586. package/dist/esm-es5/{swipe-back-57844616.js → swipe-back-e5394307.js} +1 -1
  587. package/dist/html.html-data.json +1900 -173
  588. package/dist/ionic/index.esm.js +1 -1
  589. package/dist/ionic/ionic.esm.js +1 -1
  590. package/dist/ionic/ionic.js +1 -1
  591. package/dist/ionic/p-0507489e.system.entry.js +4 -0
  592. package/dist/ionic/p-09b71030.entry.js +4 -0
  593. package/dist/ionic/p-0c0065e8.js +4 -0
  594. package/dist/ionic/p-0daf382b.system.entry.js +4 -0
  595. package/dist/ionic/p-1126b6fb.entry.js +4 -0
  596. package/dist/ionic/p-116239e0.system.entry.js +4 -0
  597. package/dist/ionic/p-11f25a12.system.js +4 -0
  598. package/dist/ionic/{p-78b3da77.js → p-139e8ff1.js} +1 -1
  599. package/dist/ionic/p-13aa1338.entry.js +4 -0
  600. package/dist/ionic/p-16b3b748.system.js +4 -0
  601. package/dist/ionic/p-18d1e318.system.js +4 -0
  602. package/dist/ionic/p-197fca36.system.entry.js +4 -0
  603. package/dist/ionic/{p-2cc2c631.system.js → p-19ea7bff.system.js} +1 -1
  604. package/dist/ionic/{p-ab6879e7.system.js → p-1a488d6f.system.js} +1 -1
  605. package/dist/ionic/p-1cc1ce24.system.entry.js +4 -0
  606. package/dist/ionic/p-1f04779e.entry.js +4 -0
  607. package/dist/ionic/p-226bdf0f.entry.js +4 -0
  608. package/dist/ionic/p-23132e1f.js +4 -0
  609. package/dist/ionic/p-23a3320b.js +4 -0
  610. package/dist/ionic/p-23e053d0.system.entry.js +4 -0
  611. package/dist/ionic/p-24cc69ab.entry.js +4 -0
  612. package/dist/ionic/p-24e9aa21.entry.js +4 -0
  613. package/dist/ionic/p-29ceda88.js +4 -0
  614. package/dist/ionic/p-2a4641fb.system.entry.js +4 -0
  615. package/dist/ionic/p-2bc784c2.system.entry.js +4 -0
  616. package/dist/ionic/p-2c8cb8c0.system.entry.js +4 -0
  617. package/dist/ionic/p-2fad37de.system.entry.js +4 -0
  618. package/dist/ionic/p-30aed000.system.entry.js +4 -0
  619. package/dist/ionic/p-30b7a6a6.system.entry.js +4 -0
  620. package/dist/ionic/{p-4a3055ef.system.js → p-322eb715.system.js} +1 -1
  621. package/dist/ionic/{p-a600a3e3.js → p-34b11c24.js} +1 -1
  622. package/dist/ionic/p-35b46c05.entry.js +4 -0
  623. package/dist/ionic/p-365d2cfe.system.entry.js +4 -0
  624. package/dist/ionic/p-385c76dc.system.entry.js +4 -0
  625. package/dist/ionic/{p-668607c2.system.js → p-3ad285e3.system.js} +1 -1
  626. package/dist/ionic/p-3b03dd5b.entry.js +4 -0
  627. package/dist/ionic/{p-c6f9f3eb.js → p-3cc276f4.js} +1 -1
  628. package/dist/ionic/p-3d7001d7.js +4 -0
  629. package/dist/ionic/p-3e47e61e.entry.js +4 -0
  630. package/dist/ionic/p-3e8cfe35.system.entry.js +4 -0
  631. package/dist/ionic/p-3e9e667a.entry.js +4 -0
  632. package/dist/ionic/p-3ecd1809.entry.js +4 -0
  633. package/dist/ionic/p-3ed32307.system.entry.js +4 -0
  634. package/dist/ionic/p-44d8d5c3.entry.js +4 -0
  635. package/dist/ionic/p-45684f75.system.entry.js +4 -0
  636. package/dist/ionic/p-46e489c1.entry.js +4 -0
  637. package/dist/ionic/p-4c2d5b80.system.js +4 -0
  638. package/dist/ionic/{p-b141e253.entry.js → p-4c55c5ce.entry.js} +1 -1
  639. package/dist/ionic/p-4c6278ca.system.entry.js +4 -0
  640. package/dist/ionic/p-4e7a18b3.entry.js +4 -0
  641. package/dist/ionic/p-4f30e4c3.system.entry.js +4 -0
  642. package/dist/ionic/p-52698131.entry.js +4 -0
  643. package/dist/ionic/p-56dfd814.entry.js +4 -0
  644. package/dist/ionic/{p-fbf23235.entry.js → p-57082094.entry.js} +1 -1
  645. package/dist/ionic/{p-239906f1.js → p-57a4c6c3.js} +1 -1
  646. package/dist/ionic/{p-92b05b70.system.entry.js → p-57b76977.system.entry.js} +1 -1
  647. package/dist/ionic/p-5919403e.js +4 -0
  648. package/dist/ionic/p-5fed4c24.system.entry.js +4 -0
  649. package/dist/ionic/p-605c456e.system.entry.js +4 -0
  650. package/dist/ionic/p-6087c7ac.system.entry.js +4 -0
  651. package/dist/ionic/p-617a8c10.system.entry.js +4 -0
  652. package/dist/ionic/p-62ad354a.system.entry.js +4 -0
  653. package/dist/ionic/{p-e1d4298f.system.entry.js → p-644df0cc.system.entry.js} +1 -1
  654. package/dist/ionic/p-6718dfd8.system.entry.js +4 -0
  655. package/dist/ionic/p-6770c46d.system.entry.js +4 -0
  656. package/dist/ionic/p-6981ada8.entry.js +4 -0
  657. package/dist/ionic/p-69e691df.system.entry.js +4 -0
  658. package/dist/ionic/p-6a5b979b.system.js +4 -0
  659. package/dist/ionic/p-6d1854de.system.entry.js +4 -0
  660. package/dist/ionic/p-70a396e0.entry.js +4 -0
  661. package/dist/ionic/p-716cc857.entry.js +4 -0
  662. package/dist/ionic/p-71784639.entry.js +4 -0
  663. package/dist/ionic/p-72812e99.js +4 -0
  664. package/dist/ionic/{p-91a83ede.js → p-72bc8a1c.js} +1 -1
  665. package/dist/ionic/{p-c629d22b.system.js → p-75257a79.system.js} +2 -2
  666. package/dist/ionic/p-77cdf8f0.system.entry.js +4 -0
  667. package/dist/ionic/{p-a2dc2ef1.system.entry.js → p-7c6ba817.system.entry.js} +1 -1
  668. package/dist/ionic/p-7d6993fa.entry.js +4 -0
  669. package/dist/ionic/{p-e0d52ee3.system.js → p-7fefe43e.system.js} +1 -1
  670. package/dist/ionic/{p-5b4b977f.entry.js → p-820be1bf.entry.js} +1 -1
  671. package/dist/ionic/p-831269de.js +4 -0
  672. package/dist/ionic/p-84dd4f6c.system.entry.js +4 -0
  673. package/dist/ionic/p-8635f5e6.system.js +4 -0
  674. package/dist/ionic/{p-86bdb32e.system.entry.js → p-8cd83c08.system.entry.js} +1 -1
  675. package/dist/ionic/p-8fbf7c49.entry.js +4 -0
  676. package/dist/ionic/p-8fd110c6.entry.js +4 -0
  677. package/dist/ionic/p-92b3df98.system.js +4 -0
  678. package/dist/ionic/p-9385f3c5.entry.js +4 -0
  679. package/dist/ionic/{p-9a4b9c91.system.entry.js → p-98ced5a7.system.entry.js} +2 -2
  680. package/dist/ionic/p-9a76dbbb.entry.js +4 -0
  681. package/dist/ionic/p-a15ddedb.system.js +4 -0
  682. package/dist/ionic/p-a5456295.entry.js +4 -0
  683. package/dist/ionic/p-a68b1b19.entry.js +4 -0
  684. package/dist/ionic/p-ac1eb107.system.js +4 -0
  685. package/dist/ionic/p-ae2c6708.system.entry.js +4 -0
  686. package/dist/ionic/p-ae3fdd38.entry.js +4 -0
  687. package/dist/ionic/{p-6a62da36.system.js → p-af732189.system.js} +1 -1
  688. package/dist/ionic/p-afeebbc2.entry.js +4 -0
  689. package/dist/ionic/p-b0bd2f28.system.entry.js +4 -0
  690. package/dist/ionic/p-b0da0e7e.entry.js +4 -0
  691. package/dist/ionic/{p-364044f0.js → p-b51e4004.js} +1 -1
  692. package/dist/ionic/p-b69db5bf.entry.js +4 -0
  693. package/dist/ionic/{p-5f6c0372.entry.js → p-b8df09fa.entry.js} +1 -1
  694. package/dist/ionic/p-bb01995b.entry.js +4 -0
  695. package/dist/ionic/p-bb4431d3.entry.js +4 -0
  696. package/dist/ionic/{p-cbb9269d.system.js → p-c11232d6.system.js} +1 -1
  697. package/dist/ionic/p-c1d0861e.entry.js +4 -0
  698. package/dist/ionic/p-c78731fc.system.js +4 -0
  699. package/dist/ionic/p-c7e3ef1f.js +4 -0
  700. package/dist/ionic/p-c8985963.system.js +4 -0
  701. package/dist/ionic/p-c957dcbd.system.entry.js +4 -0
  702. package/dist/ionic/{p-f8502e85.js → p-cb4da696.js} +1 -1
  703. package/dist/ionic/p-cc1dabd2.system.entry.js +4 -0
  704. package/dist/ionic/p-cd1250d7.js +4 -0
  705. package/dist/ionic/p-cd94b05a.system.entry.js +4 -0
  706. package/dist/ionic/{p-d60342e3.js → p-d2a65df9.js} +1 -1
  707. package/dist/ionic/p-d6788bde.system.entry.js +4 -0
  708. package/dist/ionic/p-d83f3852.system.entry.js +4 -0
  709. package/dist/ionic/p-de5f6929.system.entry.js +4 -0
  710. package/dist/ionic/{p-af9256a0.system.js → p-df92bab7.system.js} +1 -1
  711. package/dist/ionic/p-dfb6de03.system.js +4 -0
  712. package/dist/ionic/{p-f687573e.system.js → p-dff73ffc.system.js} +1 -1
  713. package/dist/ionic/p-e399a113.entry.js +4 -0
  714. package/dist/ionic/p-e557901b.entry.js +4 -0
  715. package/dist/ionic/p-e62f29e0.system.entry.js +4 -0
  716. package/dist/ionic/p-e7522003.js +4 -0
  717. package/dist/ionic/p-e86fef55.system.js +4 -0
  718. package/dist/ionic/p-eab67c46.system.entry.js +4 -0
  719. package/dist/ionic/{p-20bf9f84.entry.js → p-ed454419.entry.js} +1 -1
  720. package/dist/ionic/p-efdba78a.system.entry.js +4 -0
  721. package/dist/ionic/p-f7a041dc.js +4 -0
  722. package/dist/ionic/p-f85988bd.entry.js +4 -0
  723. package/dist/ionic/p-f9398178.entry.js +4 -0
  724. package/dist/ionic/p-f977c8c5.entry.js +4 -0
  725. package/dist/ionic/{p-a3dae2ce.js → p-fe1345b7.js} +1 -1
  726. package/dist/ionic/{p-647981a4.system.entry.js → p-fea6e789.system.entry.js} +1 -1
  727. package/dist/ionic/p-ff584ff5.entry.js +4 -0
  728. package/dist/ionic/p-ff93a0f3.entry.js +4 -0
  729. package/dist/types/components/accordion/accordion.d.ts +2 -1
  730. package/dist/types/components/accordion-group/accordion-group.d.ts +2 -1
  731. package/dist/types/components/action-sheet/action-sheet-interface.d.ts +3 -7
  732. package/dist/types/components/action-sheet/action-sheet.d.ts +3 -2
  733. package/dist/types/components/alert/alert-interface.d.ts +3 -7
  734. package/dist/types/components/alert/alert.d.ts +3 -2
  735. package/dist/types/components/app/app.d.ts +4 -0
  736. package/dist/types/components/avatar/avatar.d.ts +4 -0
  737. package/dist/types/components/back-button/back-button.d.ts +2 -1
  738. package/dist/types/components/backdrop/backdrop.d.ts +4 -0
  739. package/dist/types/components/badge/badge.d.ts +2 -1
  740. package/dist/types/components/breadcrumb/breadcrumb.d.ts +2 -1
  741. package/dist/types/components/breadcrumbs/breadcrumbs.d.ts +2 -2
  742. package/dist/types/components/button/button.d.ts +13 -3
  743. package/dist/types/components/buttons/buttons.d.ts +5 -1
  744. package/dist/types/components/card/card.d.ts +2 -1
  745. package/dist/types/components/card-content/card-content.d.ts +2 -1
  746. package/dist/types/components/card-header/card-header.d.ts +3 -2
  747. package/dist/types/components/card-subtitle/card-subtitle.d.ts +2 -1
  748. package/dist/types/components/card-title/card-title.d.ts +2 -1
  749. package/dist/types/components/checkbox/checkbox.d.ts +2 -1
  750. package/dist/types/components/chip/chip.d.ts +2 -1
  751. package/dist/types/components/col/col.d.ts +4 -0
  752. package/dist/types/components/content/content.d.ts +3 -0
  753. package/dist/types/components/datetime/datetime.d.ts +2 -1
  754. package/dist/types/components/datetime/utils/data.d.ts +3 -3
  755. package/dist/types/components/datetime-button/datetime-button.d.ts +2 -1
  756. package/dist/types/components/fab/fab.d.ts +4 -0
  757. package/dist/types/components/fab-button/fab-button.d.ts +3 -2
  758. package/dist/types/components/fab-list/fab-list.d.ts +4 -0
  759. package/dist/types/components/footer/footer.d.ts +4 -3
  760. package/dist/types/components/grid/grid.d.ts +4 -0
  761. package/dist/types/components/header/header.d.ts +4 -3
  762. package/dist/types/components/img/img.d.ts +3 -0
  763. package/dist/types/components/infinite-scroll/infinite-scroll.d.ts +4 -0
  764. package/dist/types/components/infinite-scroll-content/infinite-scroll-content.d.ts +4 -0
  765. package/dist/types/components/input/input.d.ts +3 -8
  766. package/dist/types/components/item/item.d.ts +4 -3
  767. package/dist/types/components/item-divider/item-divider.d.ts +2 -1
  768. package/dist/types/components/item-group/item-group.d.ts +4 -0
  769. package/dist/types/components/item-option/item-option.d.ts +2 -1
  770. package/dist/types/components/item-options/item-options.d.ts +4 -0
  771. package/dist/types/components/item-sliding/item-sliding.d.ts +4 -0
  772. package/dist/types/components/label/label.d.ts +2 -1
  773. package/dist/types/components/list/list.d.ts +2 -1
  774. package/dist/types/components/list-header/list-header.d.ts +2 -1
  775. package/dist/types/components/loading/loading-interface.d.ts +2 -7
  776. package/dist/types/components/loading/loading.d.ts +3 -2
  777. package/dist/types/components/menu/menu.d.ts +3 -0
  778. package/dist/types/components/menu-button/menu-button.d.ts +2 -1
  779. package/dist/types/components/menu-toggle/menu-toggle.d.ts +3 -0
  780. package/dist/types/components/modal/modal-interface.d.ts +3 -7
  781. package/dist/types/components/modal/modal.d.ts +2 -1
  782. package/dist/types/components/nav/nav-interface.d.ts +9 -1
  783. package/dist/types/components/nav/nav.d.ts +5 -1
  784. package/dist/types/components/nav-link/nav-link.d.ts +4 -0
  785. package/dist/types/components/note/note.d.ts +2 -1
  786. package/dist/types/components/picker/picker.d.ts +2 -1
  787. package/dist/types/components/picker-column/picker-column.d.ts +2 -1
  788. package/dist/types/components/picker-column-option/picker-column-option.d.ts +4 -0
  789. package/dist/types/components/picker-legacy/picker.d.ts +2 -1
  790. package/dist/types/components/popover/popover-interface.d.ts +3 -7
  791. package/dist/types/components/popover/popover.d.ts +6 -5
  792. package/dist/types/components/progress-bar/progress-bar.d.ts +2 -1
  793. package/dist/types/components/radio/radio.d.ts +2 -1
  794. package/dist/types/components/radio-group/radio-group.d.ts +4 -0
  795. package/dist/types/components/range/range.d.ts +2 -1
  796. package/dist/types/components/refresher/refresher.d.ts +2 -1
  797. package/dist/types/components/refresher-content/refresher-content.d.ts +4 -0
  798. package/dist/types/components/reorder/reorder.d.ts +3 -0
  799. package/dist/types/components/reorder-group/reorder-group.d.ts +4 -0
  800. package/dist/types/components/ripple-effect/ripple-effect.d.ts +4 -0
  801. package/dist/types/components/route/route.d.ts +4 -0
  802. package/dist/types/components/router/router.d.ts +4 -0
  803. package/dist/types/components/router-link/router-link.d.ts +4 -0
  804. package/dist/types/components/router-outlet/router-outlet.d.ts +4 -1
  805. package/dist/types/components/row/row.d.ts +4 -0
  806. package/dist/types/components/searchbar/searchbar.d.ts +8 -7
  807. package/dist/types/components/segment/segment.d.ts +2 -1
  808. package/dist/types/components/segment-button/segment-button.d.ts +2 -1
  809. package/dist/types/components/select/select.d.ts +6 -5
  810. package/dist/types/components/select-option/select-option.d.ts +4 -0
  811. package/dist/types/components/select-popover/select-popover.d.ts +3 -0
  812. package/dist/types/components/skeleton-text/skeleton-text.d.ts +4 -0
  813. package/dist/types/components/spinner/spinner.d.ts +4 -0
  814. package/dist/types/components/split-pane/split-pane.d.ts +4 -0
  815. package/dist/types/components/tab/tab.d.ts +4 -0
  816. package/dist/types/components/tab-bar/tab-bar.d.ts +3 -2
  817. package/dist/types/components/tab-button/tab-button.d.ts +2 -1
  818. package/dist/types/components/tabs/tabs.d.ts +3 -0
  819. package/dist/types/components/text/text.d.ts +2 -1
  820. package/dist/types/components/textarea/textarea.d.ts +3 -2
  821. package/dist/types/components/thumbnail/thumbnail.d.ts +4 -0
  822. package/dist/types/components/title/title.d.ts +4 -0
  823. package/dist/types/components/toast/animations/utils.d.ts +2 -2
  824. package/dist/types/components/toast/toast-interface.d.ts +3 -7
  825. package/dist/types/components/toast/toast.d.ts +3 -2
  826. package/dist/types/components/toggle/toggle.d.ts +2 -1
  827. package/dist/types/components/toolbar/toolbar.d.ts +4 -3
  828. package/dist/types/components.d.ts +1186 -208
  829. package/dist/types/global/ionic-global.d.ts +25 -2
  830. package/dist/types/interface.d.ts +3 -0
  831. package/dist/types/utils/config.d.ts +17 -2
  832. package/dist/types/utils/overlays-interface.d.ts +31 -1
  833. package/dist/types/utils/test/playwright/generator.d.ts +8 -1
  834. package/hydrate/index.js +1155 -630
  835. package/package.json +1 -1
  836. package/components/index9.js +0 -196
  837. package/components/ion-input-password-toggle.d.ts +0 -11
  838. package/components/ion-input-password-toggle.js +0 -132
  839. package/dist/cjs/index-5915f9b3.js +0 -38
  840. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +0 -93
  841. package/dist/cjs/ionic-global-5762eca9.js +0 -230
  842. package/dist/collection/components/button/test/round/button.e2e.js +0 -17
  843. package/dist/collection/components/input-password-toggle/input-password-toggle.ios.css +0 -0
  844. package/dist/collection/components/input-password-toggle/input-password-toggle.js +0 -183
  845. package/dist/collection/components/input-password-toggle/input-password-toggle.md.css +0 -0
  846. package/dist/collection/components/input-password-toggle/test/a11y/input-password-toggle.e2e.js +0 -21
  847. package/dist/collection/components/input-password-toggle/test/basic/input-password-toggle.e2e.js +0 -38
  848. package/dist/collection/components/input-password-toggle/test/input-password-toggle.spec.js +0 -76
  849. package/dist/esm/index-9b0d46f4.js +0 -34
  850. package/dist/esm/ion-input-password-toggle.entry.js +0 -89
  851. package/dist/esm/ionic-global-a589c12c.js +0 -224
  852. package/dist/esm-es5/app-globals-80842d68.js +0 -4
  853. package/dist/esm-es5/data-ae11fd43.js +0 -4
  854. package/dist/esm-es5/index-0089f1fa.js +0 -4
  855. package/dist/esm-es5/index-044b5a86.js +0 -4
  856. package/dist/esm-es5/index-9b0d46f4.js +0 -4
  857. package/dist/esm-es5/index-fa221975.js +0 -4
  858. package/dist/esm-es5/input-shims-196afa11.js +0 -4
  859. package/dist/esm-es5/input.utils-426cc674.js +0 -4
  860. package/dist/esm-es5/ion-input-password-toggle.entry.js +0 -4
  861. package/dist/esm-es5/ionic-global-a589c12c.js +0 -4
  862. package/dist/esm-es5/ios.transition-632deb95.js +0 -4
  863. package/dist/esm-es5/md.transition-3bcf4011.js +0 -4
  864. package/dist/esm-es5/overlays-d41f74ac.js +0 -4
  865. package/dist/esm-es5/status-tap-45595148.js +0 -4
  866. package/dist/ionic/p-031c5621.js +0 -4
  867. package/dist/ionic/p-04bdc816.system.entry.js +0 -4
  868. package/dist/ionic/p-06fee233.js +0 -4
  869. package/dist/ionic/p-07759435.system.js +0 -4
  870. package/dist/ionic/p-07927036.system.entry.js +0 -4
  871. package/dist/ionic/p-0e4c9e45.system.js +0 -4
  872. package/dist/ionic/p-103ec049.system.entry.js +0 -4
  873. package/dist/ionic/p-126207f8.entry.js +0 -4
  874. package/dist/ionic/p-1d3f79b2.system.entry.js +0 -4
  875. package/dist/ionic/p-1d528988.system.entry.js +0 -4
  876. package/dist/ionic/p-1e955a45.system.js +0 -4
  877. package/dist/ionic/p-210248f5.system.entry.js +0 -4
  878. package/dist/ionic/p-219c17cf.system.entry.js +0 -4
  879. package/dist/ionic/p-23838a94.system.entry.js +0 -4
  880. package/dist/ionic/p-2807660b.entry.js +0 -4
  881. package/dist/ionic/p-282bd5f9.system.entry.js +0 -4
  882. package/dist/ionic/p-29ef3b9b.entry.js +0 -4
  883. package/dist/ionic/p-2d34b04a.system.entry.js +0 -4
  884. package/dist/ionic/p-2f53c3eb.js +0 -4
  885. package/dist/ionic/p-31794e40.system.js +0 -4
  886. package/dist/ionic/p-325c61a4.js +0 -4
  887. package/dist/ionic/p-34b8c5bc.entry.js +0 -4
  888. package/dist/ionic/p-3599e243.entry.js +0 -4
  889. package/dist/ionic/p-3739de23.system.entry.js +0 -4
  890. package/dist/ionic/p-3785c067.entry.js +0 -4
  891. package/dist/ionic/p-3895e131.system.entry.js +0 -4
  892. package/dist/ionic/p-38b129b6.entry.js +0 -4
  893. package/dist/ionic/p-38e25e67.js +0 -4
  894. package/dist/ionic/p-3ad1b1c5.entry.js +0 -4
  895. package/dist/ionic/p-3bf7a38d.system.entry.js +0 -4
  896. package/dist/ionic/p-3c1aac30.system.entry.js +0 -4
  897. package/dist/ionic/p-3d55c50f.system.entry.js +0 -4
  898. package/dist/ionic/p-3e6e53fe.system.entry.js +0 -4
  899. package/dist/ionic/p-40976b1c.system.entry.js +0 -4
  900. package/dist/ionic/p-456ae20a.system.entry.js +0 -4
  901. package/dist/ionic/p-468e20c0.system.entry.js +0 -4
  902. package/dist/ionic/p-49e5401f.entry.js +0 -4
  903. package/dist/ionic/p-4a20a758.system.entry.js +0 -4
  904. package/dist/ionic/p-4b318f5e.system.entry.js +0 -4
  905. package/dist/ionic/p-4d21e85e.system.entry.js +0 -4
  906. package/dist/ionic/p-4decdc16.system.entry.js +0 -4
  907. package/dist/ionic/p-50633cad.entry.js +0 -4
  908. package/dist/ionic/p-527e1d8a.entry.js +0 -4
  909. package/dist/ionic/p-5644df37.entry.js +0 -4
  910. package/dist/ionic/p-564554d0.system.js +0 -4
  911. package/dist/ionic/p-56864c25.system.js +0 -4
  912. package/dist/ionic/p-57a3b59e.system.entry.js +0 -4
  913. package/dist/ionic/p-5b52897c.js +0 -4
  914. package/dist/ionic/p-5c6d4276.entry.js +0 -4
  915. package/dist/ionic/p-652a7913.js +0 -4
  916. package/dist/ionic/p-659d8f84.entry.js +0 -4
  917. package/dist/ionic/p-66e50777.entry.js +0 -4
  918. package/dist/ionic/p-6f734552.system.entry.js +0 -4
  919. package/dist/ionic/p-7002bc75.entry.js +0 -4
  920. package/dist/ionic/p-7abeea68.system.entry.js +0 -4
  921. package/dist/ionic/p-7b8ece87.entry.js +0 -4
  922. package/dist/ionic/p-7c4c37ae.system.js +0 -4
  923. package/dist/ionic/p-7c7e495d.system.js +0 -4
  924. package/dist/ionic/p-84025e3c.entry.js +0 -4
  925. package/dist/ionic/p-8412860b.system.entry.js +0 -4
  926. package/dist/ionic/p-8543c360.system.entry.js +0 -4
  927. package/dist/ionic/p-8818519d.entry.js +0 -4
  928. package/dist/ionic/p-887984fc.entry.js +0 -4
  929. package/dist/ionic/p-8ed900e4.entry.js +0 -4
  930. package/dist/ionic/p-91567c90.system.entry.js +0 -4
  931. package/dist/ionic/p-96c06026.entry.js +0 -4
  932. package/dist/ionic/p-978f4710.js +0 -4
  933. package/dist/ionic/p-9b5d033a.system.entry.js +0 -4
  934. package/dist/ionic/p-9d00a694.system.entry.js +0 -4
  935. package/dist/ionic/p-9e3177a5.system.js +0 -4
  936. package/dist/ionic/p-9fd5857a.system.entry.js +0 -4
  937. package/dist/ionic/p-a668e0d4.entry.js +0 -4
  938. package/dist/ionic/p-a6ac25f2.entry.js +0 -4
  939. package/dist/ionic/p-a6bce1f5.js +0 -4
  940. package/dist/ionic/p-a7270027.system.entry.js +0 -4
  941. package/dist/ionic/p-a9d2fa95.entry.js +0 -4
  942. package/dist/ionic/p-ac585dba.entry.js +0 -4
  943. package/dist/ionic/p-b05c33d0.system.entry.js +0 -4
  944. package/dist/ionic/p-b6d1ce6c.entry.js +0 -4
  945. package/dist/ionic/p-bb01ff24.system.entry.js +0 -4
  946. package/dist/ionic/p-bb151f4b.entry.js +0 -4
  947. package/dist/ionic/p-c385e49d.entry.js +0 -4
  948. package/dist/ionic/p-c3f5d0e7.js +0 -4
  949. package/dist/ionic/p-c83741f7.entry.js +0 -4
  950. package/dist/ionic/p-c8383c20.entry.js +0 -4
  951. package/dist/ionic/p-c947155d.entry.js +0 -4
  952. package/dist/ionic/p-cb970588.entry.js +0 -4
  953. package/dist/ionic/p-cc769fb6.system.entry.js +0 -4
  954. package/dist/ionic/p-cc978d16.system.entry.js +0 -4
  955. package/dist/ionic/p-ce436e94.system.entry.js +0 -4
  956. package/dist/ionic/p-ce9eafa3.entry.js +0 -4
  957. package/dist/ionic/p-cf07fee5.entry.js +0 -4
  958. package/dist/ionic/p-d0adc028.system.entry.js +0 -4
  959. package/dist/ionic/p-d0d674d0.entry.js +0 -4
  960. package/dist/ionic/p-d35d485c.entry.js +0 -4
  961. package/dist/ionic/p-d704f798.system.js +0 -4
  962. package/dist/ionic/p-d80b7e31.system.js +0 -4
  963. package/dist/ionic/p-d834c508.entry.js +0 -4
  964. package/dist/ionic/p-da2b833b.js +0 -4
  965. package/dist/ionic/p-da5bbd4f.entry.js +0 -4
  966. package/dist/ionic/p-dbd782ec.system.entry.js +0 -4
  967. package/dist/ionic/p-e066780e.js +0 -4
  968. package/dist/ionic/p-e170e351.js +0 -4
  969. package/dist/ionic/p-e7b0b64d.system.js +0 -4
  970. package/dist/ionic/p-e7cd7553.system.js +0 -4
  971. package/dist/ionic/p-f270059b.entry.js +0 -4
  972. package/dist/ionic/p-f40aa619.entry.js +0 -4
  973. package/dist/ionic/p-f47c47f2.system.entry.js +0 -4
  974. package/dist/ionic/p-facad328.entry.js +0 -4
  975. package/dist/ionic/p-fe5ff8fb.system.entry.js +0 -4
  976. package/dist/ionic/p-fe8f0dd2.entry.js +0 -4
  977. package/dist/ionic/p-ff4b7e40.system.js +0 -4
  978. package/dist/types/components/input-password-toggle/input-password-toggle.d.ts +0 -37
@@ -1,13 +1,120 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import { getMode, setMode, setPlatformHelpers } from "@stencil/core";
4
+ import { getMode, setMode, setPlatformHelpers, getElement } from "@stencil/core";
5
+ import { printIonWarning } from "../utils/logging/index";
5
6
  import { isPlatform, setupPlatforms } from "../utils/platform";
6
7
  import { config, configFromSession, configFromURL, saveConfig } from "./config";
7
- // TODO(FW-2832): types
8
8
  let defaultMode;
9
- export const getIonMode = (ref) => {
10
- return (ref && getMode(ref)) || defaultMode;
9
+ let defaultTheme = 'md';
10
+ /**
11
+ * Prints a warning message to the developer to inform them of
12
+ * an invalid configuration of mode and theme.
13
+ * @param mode The invalid mode configuration.
14
+ * @param theme The invalid theme configuration.
15
+ */
16
+ const printInvalidModeWarning = (mode, theme, ref) => {
17
+ printIonWarning(`Invalid mode and theme combination provided: mode: ${mode}, theme: ${theme}. Fallback mode ${getDefaultModeForTheme(theme)} will be used.`, ref);
18
+ };
19
+ /**
20
+ * Validates if a mode is accepted for a theme configuration.
21
+ * @param mode The mode to validate.
22
+ * @param theme The theme the mode is being used with.
23
+ * @returns `true` if the mode is valid for the theme, `false` if invalid.
24
+ */
25
+ export const isModeValidForTheme = (mode, theme) => {
26
+ if (mode === 'md') {
27
+ return theme === 'md' || theme === 'ionic';
28
+ }
29
+ else if (mode === 'ios') {
30
+ return theme === 'ios' || theme === 'ionic';
31
+ }
32
+ return false;
33
+ };
34
+ /**
35
+ * Returns the default mode for a specified theme.
36
+ * @param theme The theme to return a default mode for.
37
+ * @returns The default mode, either `ios` or `md`.
38
+ */
39
+ const getDefaultModeForTheme = (theme) => {
40
+ if (theme === 'ios') {
41
+ return 'ios';
42
+ }
43
+ return 'md';
44
+ };
45
+ /**
46
+ * Returns the default theme for a specified mode.
47
+ * @param mode The mode to return a default theme for.
48
+ * @returns The default theme.
49
+ */
50
+ const getDefaultThemeForMode = (mode) => {
51
+ if (mode === 'ios') {
52
+ return 'ios';
53
+ }
54
+ return 'md';
55
+ };
56
+ const isModeSupported = (elmMode) => ['ios', 'md'].includes(elmMode);
57
+ const isThemeSupported = (theme) => ['ios', 'md', 'ionic'].includes(theme);
58
+ const isIonicElement = (elm) => { var _a; return (_a = elm.tagName) === null || _a === void 0 ? void 0 : _a.startsWith('ION-'); };
59
+ /**
60
+ * Returns the mode value of the element reference or the closest
61
+ * parent with a valid mode.
62
+ * @param ref The element reference to look up the mode for.
63
+ * @param theme Optionally can provide the theme to avoid an additional look-up.
64
+ * @returns The mode value for the element reference.
65
+ */
66
+ export const getIonMode = (ref, theme = getIonTheme(ref)) => {
67
+ var _a;
68
+ if ((ref === null || ref === void 0 ? void 0 : ref.mode) && isModeValidForTheme(ref === null || ref === void 0 ? void 0 : ref.mode, theme)) {
69
+ /**
70
+ * If the reference already has a mode configuration,
71
+ * use it instead of performing a look-up.
72
+ */
73
+ return ref.mode;
74
+ }
75
+ else {
76
+ const el = getElement(ref);
77
+ const mode = ((_a = el.closest('[mode]')) === null || _a === void 0 ? void 0 : _a.getAttribute('mode')) || defaultMode;
78
+ if (isModeValidForTheme(mode, theme)) {
79
+ /**
80
+ * The mode configuration is supported for the configured theme.
81
+ */
82
+ return mode;
83
+ }
84
+ else {
85
+ printInvalidModeWarning(mode, theme, ref);
86
+ }
87
+ }
88
+ return getDefaultModeForTheme(theme);
89
+ };
90
+ /**
91
+ * Returns the theme value of the element reference or the closest
92
+ * parent with a valid theme.
93
+ *
94
+ * @param ref The element reference to look up the theme for.
95
+ * @returns The theme value for the element reference, defaults to
96
+ * the default theme if it cannot be determined.
97
+ */
98
+ export const getIonTheme = (ref) => {
99
+ var _a, _b;
100
+ const theme = ref && getMode(ref);
101
+ if (theme) {
102
+ return theme;
103
+ }
104
+ /**
105
+ * If the theme cannot be detected, then fallback to using
106
+ * the `mode` attribute to determine the style sheets to use.
107
+ */
108
+ const el = getElement(ref);
109
+ const mode = (_a = ref === null || ref === void 0 ? void 0 : ref.mode) !== null && _a !== void 0 ? _a : (_b = el.closest('[mode]')) === null || _b === void 0 ? void 0 : _b.getAttribute('mode');
110
+ if (mode) {
111
+ return getDefaultThemeForMode(mode);
112
+ }
113
+ /**
114
+ * If a mode is not detected, then fallback to using the
115
+ * default theme.
116
+ */
117
+ return defaultTheme;
11
118
  };
12
119
  export const initialize = (userConfig = {}) => {
13
120
  if (typeof window === 'undefined') {
@@ -36,33 +143,74 @@ export const initialize = (userConfig = {}) => {
36
143
  }
37
144
  // Setup platforms
38
145
  setupPlatforms(win);
39
- // first see if the mode was set as an attribute on <html>
40
- // which could have been set by the user, or by pre-rendering
41
- // otherwise get the mode via config settings, and fallback to md
42
146
  Ionic.config = config;
147
+ /**
148
+ * Check if the mode was set as an attribute on <html>
149
+ * which could have been set by the user, or by pre-rendering
150
+ * otherwise get the mode via config settings, and fallback to md.
151
+ */
43
152
  Ionic.mode = defaultMode = config.get('mode', doc.documentElement.getAttribute('mode') || (isPlatform(win, 'ios') ? 'ios' : 'md'));
153
+ /**
154
+ * Check if the theme was set as an attribute on <html>
155
+ * which could have been set by the user, or by pre-rendering
156
+ * otherwise get the theme via config settings, and fallback to md.
157
+ */
158
+ Ionic.theme = defaultTheme = config.get('theme', doc.documentElement.getAttribute('theme') || getDefaultThemeForMode(defaultMode));
159
+ if (!isModeValidForTheme(defaultMode, defaultTheme)) {
160
+ printInvalidModeWarning(defaultMode, defaultTheme, configObj);
161
+ defaultMode = getDefaultModeForTheme(defaultTheme);
162
+ }
44
163
  config.set('mode', defaultMode);
45
164
  doc.documentElement.setAttribute('mode', defaultMode);
46
165
  doc.documentElement.classList.add(defaultMode);
166
+ config.set('theme', defaultTheme);
167
+ doc.documentElement.setAttribute('theme', defaultTheme);
168
+ doc.documentElement.classList.add(defaultTheme);
47
169
  if (config.getBoolean('_testing')) {
48
170
  config.set('animated', false);
49
171
  }
50
- const isIonicElement = (elm) => { var _a; return (_a = elm.tagName) === null || _a === void 0 ? void 0 : _a.startsWith('ION-'); };
51
- const isAllowedIonicModeValue = (elmMode) => ['ios', 'md'].includes(elmMode);
52
172
  setMode((elm) => {
173
+ /**
174
+ * Iterate over all the element nodes, to both validate and
175
+ * set the "mode" that is used for determining the styles to
176
+ * apply to the element.
177
+ *
178
+ * setMode refers to Stencil's internal metadata for "mode",
179
+ * which is used to set the correct styleUrl for the component.
180
+ *
181
+ * If the "theme" attribute or property is set, then use it
182
+ * to determine the style sheets to use.
183
+ *
184
+ * If the "mode" attribute or property is set, then use it
185
+ * to determine the style sheets to use. This is fallback
186
+ * behavior for applications that are not setting the "theme".
187
+ */
53
188
  while (elm) {
189
+ const theme = elm.theme || elm.getAttribute('theme');
190
+ if (theme) {
191
+ if (isThemeSupported(theme)) {
192
+ return theme;
193
+ }
194
+ else if (isIonicElement(elm)) {
195
+ printIonWarning(`Invalid theme: "${theme}". Supported themes include: "ios" or "md".`);
196
+ }
197
+ }
198
+ /**
199
+ * If a theme is not detected, then fallback to using the
200
+ * `mode` attribute to determine the style sheets to use.
201
+ */
54
202
  const elmMode = elm.mode || elm.getAttribute('mode');
55
203
  if (elmMode) {
56
- if (isAllowedIonicModeValue(elmMode)) {
204
+ if (isModeSupported(elmMode)) {
57
205
  return elmMode;
58
206
  }
59
207
  else if (isIonicElement(elm)) {
60
- console.warn('Invalid ionic mode: "' + elmMode + '", expected: "ios" or "md"');
208
+ printIonWarning(`Invalid mode: "${elmMode}". Ionic modes can be only "ios" or "md"`);
61
209
  }
62
210
  }
63
211
  elm = elm.parentElement;
64
212
  }
65
- return defaultMode;
213
+ return defaultTheme;
66
214
  });
67
215
  };
68
216
  export default initialize;
@@ -0,0 +1,109 @@
1
+ /*!
2
+ * (C) Ionic http://ionicframework.com - MIT License
3
+ */
4
+ const getMode = jest.fn();
5
+ const getElement = jest.fn();
6
+ jest.mock('@stencil/core', () => {
7
+ const original = jest.requireActual('@stencil/core');
8
+ return Object.assign(Object.assign({}, original), { getMode,
9
+ getElement });
10
+ });
11
+ /**
12
+ * The implementation needs to be mocked before the implementation is imported.
13
+ */
14
+ // eslint-disable-next-line import/first
15
+ import { getIonTheme, isModeValidForTheme, getIonMode } from "../ionic-global";
16
+ describe('Ionic Global', () => {
17
+ describe('isModeValidForTheme', () => {
18
+ it('should return true for md mode with md theme', () => {
19
+ expect(isModeValidForTheme('md', 'md')).toBe(true);
20
+ });
21
+ it('should return true for md mode with ionic theme', () => {
22
+ expect(isModeValidForTheme('md', 'ionic')).toBe(true);
23
+ });
24
+ it('should return true for ios mode with ios theme', () => {
25
+ expect(isModeValidForTheme('ios', 'ios')).toBe(true);
26
+ });
27
+ it('should return true for ios mode with ionic theme', () => {
28
+ expect(isModeValidForTheme('ios', 'ionic')).toBe(true);
29
+ });
30
+ it('should return false for md mode with ios theme', () => {
31
+ expect(isModeValidForTheme('md', 'ios')).toBe(false);
32
+ });
33
+ it('should return false for ios mode with md theme', () => {
34
+ expect(isModeValidForTheme('ios', 'md')).toBe(false);
35
+ });
36
+ });
37
+ describe('getIonMode', () => {
38
+ const parentRef = { mode: 'md' };
39
+ const ref = { parentElement: parentRef };
40
+ beforeEach(() => {
41
+ getMode.mockImplementation((ref) => { var _a; return (_a = ref.mode) !== null && _a !== void 0 ? _a : parentRef.mode; });
42
+ getElement.mockImplementation(() => ({
43
+ closest: () => ({
44
+ getAttribute: () => parentRef.mode,
45
+ }),
46
+ }));
47
+ });
48
+ afterEach(() => {
49
+ getMode.mockReset();
50
+ getElement.mockReset();
51
+ });
52
+ it('should return the mode value of the element reference', () => {
53
+ const ref = { mode: 'ios' };
54
+ getMode.mockImplementation((ref) => ref.mode);
55
+ getElement.mockImplementation(() => ({
56
+ closest: () => ({
57
+ getAttribute: () => ref.mode,
58
+ }),
59
+ }));
60
+ expect(getIonMode(ref, 'ios')).toBe('ios');
61
+ });
62
+ it('should return the mode value of the closest parent with a valid mode', () => {
63
+ expect(getIonMode(ref)).toBe('md');
64
+ });
65
+ it('should return the default mode if the mode cannot be determined', () => {
66
+ expect(getIonMode()).toBe('md');
67
+ });
68
+ it('should return the theme value if provided and no mode is found', () => {
69
+ const ref = { mode: undefined };
70
+ const theme = 'ios';
71
+ expect(getIonMode(ref, theme)).toBe('ios');
72
+ });
73
+ });
74
+ describe('getIonTheme', () => {
75
+ const parentRef = { mode: 'md' };
76
+ beforeEach(() => {
77
+ getMode.mockImplementation((ref) => { var _a; return (_a = ref === null || ref === void 0 ? void 0 : ref.mode) !== null && _a !== void 0 ? _a : parentRef.mode; });
78
+ getElement.mockImplementation(() => ({
79
+ closest: () => ({
80
+ getAttribute: () => parentRef.mode,
81
+ }),
82
+ }));
83
+ });
84
+ afterEach(() => {
85
+ getMode.mockReset();
86
+ getElement.mockReset();
87
+ });
88
+ it('should return the theme value of the element reference', () => {
89
+ const ref = { mode: 'ios' };
90
+ expect(getIonTheme(ref)).toBe('ios');
91
+ });
92
+ it('should return the theme value of the closest parent with a valid theme', () => {
93
+ getElement.mockImplementation(() => ({
94
+ closest: () => ({
95
+ getAttribute: () => 'ios',
96
+ }),
97
+ }));
98
+ expect(getIonTheme()).toBe('ios');
99
+ });
100
+ it('should return the default theme if it cannot be determined', () => {
101
+ getElement.mockImplementation(() => ({
102
+ closest: () => ({
103
+ getAttribute: () => null,
104
+ }),
105
+ }));
106
+ expect(getIonTheme()).toBe('md');
107
+ });
108
+ });
109
+ });
@@ -27,8 +27,8 @@ export const menuOverlayAnimation = (menu) => {
27
27
  }
28
28
  menuAnimation.addElement(menu.menuInnerEl).fromTo('transform', `translateX(${closedX})`, `translateX(${openedX})`);
29
29
  const mode = getIonMode(menu);
30
- const isIos = mode === 'ios';
31
- const opacity = isIos ? 0.2 : 0.25;
30
+ const isIOS = mode === 'ios';
31
+ const opacity = isIOS ? 0.2 : 0.25;
32
32
  backdropAnimation.addElement(menu.backdropEl).fromTo('opacity', 0.01, opacity);
33
- return baseAnimation(isIos).addAnimation([menuAnimation, backdropAnimation]);
33
+ return baseAnimation(isIOS).addAnimation([menuAnimation, backdropAnimation]);
34
34
  };
@@ -14,6 +14,7 @@ export const menuPushAnimation = (menu) => {
14
14
  let menuClosedX;
15
15
  const mode = getIonMode(menu);
16
16
  const width = menu.width;
17
+ const isIOS = mode === 'ios';
17
18
  if (menu.isEndSide) {
18
19
  contentOpenedX = -width + 'px';
19
20
  menuClosedX = width + 'px';
@@ -29,5 +30,5 @@ export const menuPushAnimation = (menu) => {
29
30
  .addElement(menu.contentEl)
30
31
  .fromTo('transform', 'translateX(0px)', `translateX(${contentOpenedX})`);
31
32
  const backdropAnimation = createAnimation().addElement(menu.backdropEl).fromTo('opacity', 0.01, 0.32);
32
- return baseAnimation(mode === 'ios').addAnimation([menuAnimation, contentAnimation, backdropAnimation]);
33
+ return baseAnimation(isIOS).addAnimation([menuAnimation, contentAnimation, backdropAnimation]);
33
34
  };
@@ -11,9 +11,10 @@ import { baseAnimation } from "./base";
11
11
  */
12
12
  export const menuRevealAnimation = (menu) => {
13
13
  const mode = getIonMode(menu);
14
+ const isIOS = mode === 'ios';
14
15
  const openedX = menu.width * (menu.isEndSide ? -1 : 1) + 'px';
15
16
  const contentOpen = createAnimation()
16
17
  .addElement(menu.contentEl) // REVIEW
17
18
  .fromTo('transform', 'translateX(0px)', `translateX(${openedX})`);
18
- return baseAnimation(mode === 'ios').addAnimation(contentOpen);
19
+ return baseAnimation(isIOS).addAnimation(contentOpen);
19
20
  };
@@ -2,43 +2,17 @@
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
4
  import { doc } from "../browser/index";
5
- import { now, pointerCoord } from "../helpers";
5
+ import { pointerCoord } from "../helpers";
6
6
  export const startTapClick = (config) => {
7
7
  if (doc === undefined) {
8
8
  return;
9
9
  }
10
- let lastTouch = -MOUSE_WAIT * 10;
11
10
  let lastActivated = 0;
12
11
  let activatableEle;
13
12
  let activeRipple;
14
13
  let activeDefer;
15
14
  const useRippleEffect = config.getBoolean('animated', true) && config.getBoolean('rippleEffect', true);
16
15
  const clearDefers = new WeakMap();
17
- // Touch Events
18
- const onTouchStart = (ev) => {
19
- lastTouch = now(ev);
20
- pointerDown(ev);
21
- };
22
- const onTouchEnd = (ev) => {
23
- lastTouch = now(ev);
24
- pointerUp(ev);
25
- };
26
- const onMouseDown = (ev) => {
27
- // Ignore right clicks
28
- if (ev.button === 2) {
29
- return;
30
- }
31
- const t = now(ev) - MOUSE_WAIT;
32
- if (lastTouch < t) {
33
- pointerDown(ev);
34
- }
35
- };
36
- const onMouseUp = (ev) => {
37
- const t = now(ev) - MOUSE_WAIT;
38
- if (lastTouch < t) {
39
- pointerUp(ev);
40
- }
41
- };
42
16
  const cancelActive = () => {
43
17
  if (activeDefer)
44
18
  clearTimeout(activeDefer);
@@ -49,7 +23,8 @@ export const startTapClick = (config) => {
49
23
  }
50
24
  };
51
25
  const pointerDown = (ev) => {
52
- if (activatableEle) {
26
+ // Ignore right clicks
27
+ if (activatableEle || ev.button === 2) {
53
28
  return;
54
29
  }
55
30
  setActivatedElement(getActivatableTarget(ev), ev);
@@ -133,9 +108,8 @@ export const startTapClick = (config) => {
133
108
  }
134
109
  };
135
110
  doc.addEventListener('ionGestureCaptured', cancelActive);
136
- doc.addEventListener('touchstart', onTouchStart, true);
137
- doc.addEventListener('touchcancel', onTouchEnd, true);
138
- doc.addEventListener('touchend', onTouchEnd, true);
111
+ doc.addEventListener('pointerdown', pointerDown, true);
112
+ doc.addEventListener('pointerup', pointerUp, true);
139
113
  /**
140
114
  * Tap click effects such as the ripple effect should
141
115
  * not happen when scrolling. For example, if a user scrolls
@@ -149,8 +123,6 @@ export const startTapClick = (config) => {
149
123
  * ion-content's scroll events.
150
124
  */
151
125
  doc.addEventListener('pointercancel', cancelActive, true);
152
- doc.addEventListener('mousedown', onMouseDown, true);
153
- doc.addEventListener('mouseup', onMouseUp, true);
154
126
  };
155
127
  // TODO(FW-2832): type
156
128
  const getActivatableTarget = (ev) => {
@@ -190,4 +162,3 @@ const getRippleEffect = (el) => {
190
162
  const ACTIVATED = 'ion-activated';
191
163
  const ADD_ACTIVATED_DEFERS = 100;
192
164
  const CLEAR_STATE_DEFERS = 150;
193
- const MOUSE_WAIT = 2500;
@@ -1,6 +1,7 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
+ import { isModeValidForTheme } from "../../../global/ionic-global";
4
5
  /**
5
6
  * Generates a unique test title based on a base title
6
7
  * and a test config. Playwright uses test titles to generate
@@ -8,53 +9,73 @@
8
9
  * each test title is unique.
9
10
  */
10
11
  const generateTitle = (title, config) => {
11
- const { mode, direction, palette } = config;
12
- if (palette === 'light') {
12
+ const { direction, palette, theme, mode } = config;
13
+ if (theme === mode) {
13
14
  /**
14
- * Ionic has many existing tests that existed prior to
15
- * the introduction of palette testing. To maintain backwards
16
- * compatibility, we will not include the palette in the test
17
- * title if the palette is set to light.
15
+ * Fallback to the old test title naming convention
16
+ * when the theme and mode are the same.
18
17
  */
19
- return `${title} - ${mode}/${direction}`;
18
+ if (palette === 'light') {
19
+ /**
20
+ * Ionic has many existing tests that existed prior to
21
+ * the introduction of theme testing. To maintain backwards
22
+ * compatibility, we will not include the theme in the test
23
+ * title if the theme is set to light.
24
+ */
25
+ return `${title} - ${theme}/${direction}`;
26
+ }
27
+ return `${title} - ${theme}/${direction}/${palette}`;
20
28
  }
21
- return `${title} - ${mode}/${direction}/${palette}`;
29
+ return `${title} - ${theme}/${mode}/${direction}/${palette}`;
22
30
  };
23
31
  /**
24
32
  * Generates a unique filename based on a base filename
25
33
  * and a test config.
26
34
  */
27
35
  const generateScreenshotName = (fileName, config) => {
28
- const { mode, direction, palette } = config;
29
- if (palette === 'light') {
36
+ const { theme, direction, palette, mode } = config;
37
+ if (theme === mode) {
30
38
  /**
31
- * Ionic has many existing tests that existed prior to
32
- * the introduction of palette testing. To maintain backwards
33
- * compatibility, we will not include the palette in the screenshot
34
- * name if the palette is set to light.
39
+ * Fallback to the old screenshot naming convention
40
+ * when the theme and mode are the same.
35
41
  */
36
- return `${fileName}-${mode}-${direction}.png`;
42
+ if (palette === 'light') {
43
+ /**
44
+ * Ionic has many existing tests that existed prior to
45
+ * the introduction of theme testing. To maintain backwards
46
+ * compatibility, we will not include the theme in the screenshot
47
+ * name if the theme is set to light.
48
+ */
49
+ return `${fileName}-${theme}-${direction}.png`;
50
+ }
51
+ return `${fileName}-${theme}-${direction}-${palette}.png`;
37
52
  }
38
- return `${fileName}-${mode}-${direction}-${palette}.png`;
53
+ return `${fileName}-${theme}-${mode}-${direction}-${palette}.png`;
39
54
  };
40
55
  /**
41
56
  * Given a config generate an array of test variants.
42
57
  */
43
58
  export const configs = (testConfig = DEFAULT_TEST_CONFIG_OPTION) => {
44
59
  var _a;
45
- const { modes, directions } = testConfig;
60
+ const { modes, themes, directions } = testConfig;
46
61
  const configs = [];
47
62
  /**
48
63
  * If certain options are not provided,
49
64
  * fall back to the defaults.
50
65
  */
51
- const processedMode = modes !== null && modes !== void 0 ? modes : DEFAULT_MODES;
66
+ const processedModes = modes !== null && modes !== void 0 ? modes : DEFAULT_MODES;
67
+ const processedTheme = themes !== null && themes !== void 0 ? themes : DEFAULT_THEMES;
52
68
  const processedDirection = directions !== null && directions !== void 0 ? directions : DEFAULT_DIRECTIONS;
53
69
  const processedPalette = (_a = testConfig.palettes) !== null && _a !== void 0 ? _a : DEFAULT_PALETTES;
54
- processedMode.forEach((mode) => {
55
- processedDirection.forEach((direction) => {
56
- processedPalette.forEach((palette) => {
57
- configs.push({ mode, direction, palette });
70
+ processedModes.forEach((mode) => {
71
+ processedTheme.forEach((theme) => {
72
+ if (!isModeValidForTheme(mode, theme)) {
73
+ return;
74
+ }
75
+ processedDirection.forEach((direction) => {
76
+ processedPalette.forEach((palette) => {
77
+ configs.push({ theme, direction, palette, mode });
78
+ });
58
79
  });
59
80
  });
60
81
  });
@@ -67,10 +88,12 @@ export const configs = (testConfig = DEFAULT_TEST_CONFIG_OPTION) => {
67
88
  });
68
89
  };
69
90
  const DEFAULT_MODES = ['ios', 'md'];
91
+ const DEFAULT_THEMES = ['ios', 'md'];
70
92
  const DEFAULT_DIRECTIONS = ['ltr', 'rtl'];
71
93
  const DEFAULT_PALETTES = ['light'];
72
94
  const DEFAULT_TEST_CONFIG_OPTION = {
73
95
  modes: DEFAULT_MODES,
96
+ themes: DEFAULT_THEMES,
74
97
  directions: DEFAULT_DIRECTIONS,
75
98
  palettes: DEFAULT_PALETTES,
76
99
  };
@@ -9,7 +9,7 @@
9
9
  * to be hydrated before proceeding with the test.
10
10
  */
11
11
  export const goto = async (page, url, testInfo, originalFn, options) => {
12
- var _a, _b, _c;
12
+ var _a, _b, _c, _d;
13
13
  if (options === undefined && testInfo.project.metadata.mode === undefined) {
14
14
  throw new Error(`
15
15
  A config must be passed to page.goto to use a generator test:
@@ -21,13 +21,16 @@ configs().forEach(({ config, title }) => {
21
21
  });`);
22
22
  }
23
23
  let mode;
24
+ let theme;
24
25
  let direction;
25
26
  if (options == undefined) {
26
27
  mode = testInfo.project.metadata.mode;
28
+ theme = testInfo.project.metadata.theme;
27
29
  direction = testInfo.project.metadata.rtl ? 'rtl' : 'ltr';
28
30
  }
29
31
  else {
30
32
  mode = options.mode;
33
+ theme = options.theme;
31
34
  direction = options.direction;
32
35
  }
33
36
  const rtlString = direction === 'rtl' ? 'true' : undefined;
@@ -39,12 +42,14 @@ configs().forEach(({ config, title }) => {
39
42
  */
40
43
  const urlToParams = new URLSearchParams(paramsString);
41
44
  const formattedMode = (_a = urlToParams.get('ionic:mode')) !== null && _a !== void 0 ? _a : mode;
42
- const formattedRtl = (_b = urlToParams.get('rtl')) !== null && _b !== void 0 ? _b : rtlString;
43
- const ionicTesting = (_c = urlToParams.get('ionic:_testing')) !== null && _c !== void 0 ? _c : true;
45
+ const formattedTheme = (_b = urlToParams.get('ionic:theme')) !== null && _b !== void 0 ? _b : theme;
46
+ const formattedRtl = (_c = urlToParams.get('rtl')) !== null && _c !== void 0 ? _c : rtlString;
47
+ const ionicTesting = (_d = urlToParams.get('ionic:_testing')) !== null && _d !== void 0 ? _d : true;
44
48
  /**
45
49
  * Pass through other custom query params
46
50
  */
47
51
  urlToParams.delete('ionic:mode');
52
+ urlToParams.delete('ionic:theme');
48
53
  urlToParams.delete('rtl');
49
54
  urlToParams.delete('ionic:_testing');
50
55
  /**
@@ -54,11 +59,15 @@ configs().forEach(({ config, title }) => {
54
59
  */
55
60
  const remainingQueryParams = decodeURIComponent(urlToParams.toString());
56
61
  const remainingQueryParamsString = remainingQueryParams == '' ? '' : `&${remainingQueryParams}`;
57
- const formattedUrl = `${splitUrl[0]}?ionic:_testing=${ionicTesting}&ionic:mode=${formattedMode}&rtl=${formattedRtl}${remainingQueryParamsString}`;
62
+ const formattedUrl = `${splitUrl[0]}?ionic:_testing=${ionicTesting}&ionic:mode=${formattedMode}&ionic:theme=${formattedTheme}&rtl=${formattedRtl}${remainingQueryParamsString}`;
58
63
  testInfo.annotations.push({
59
64
  type: 'mode',
60
65
  description: formattedMode,
61
66
  });
67
+ testInfo.annotations.push({
68
+ type: 'theme',
69
+ description: formattedTheme,
70
+ });
62
71
  testInfo.annotations.push({
63
72
  type: 'direction',
64
73
  description: formattedRtl === 'true' ? 'rtl' : 'ltr',
@@ -18,15 +18,18 @@ export const setContent = async (page, html, testInfo, options) => {
18
18
  }
19
19
  let mode;
20
20
  let direction;
21
+ let theme;
21
22
  let palette;
22
23
  if (options == undefined) {
23
24
  mode = testInfo.project.metadata.mode;
24
25
  direction = testInfo.project.metadata.rtl ? 'rtl' : 'ltr';
26
+ theme = testInfo.project.metadata.theme;
25
27
  palette = testInfo.project.metadata.palette;
26
28
  }
27
29
  else {
28
30
  mode = options.mode;
29
31
  direction = options.direction;
32
+ theme = options.theme;
30
33
  palette = options.palette;
31
34
  }
32
35
  const baseUrl = process.env.PLAYWRIGHT_TEST_BASE_URL;
@@ -45,7 +48,8 @@ export const setContent = async (page, html, testInfo, options) => {
45
48
  <script>
46
49
  window.Ionic = {
47
50
  config: {
48
- mode: '${mode}'
51
+ mode: '${mode}',
52
+ theme: '${theme}'
49
53
  }
50
54
  }
51
55
  </script>
@@ -55,10 +59,18 @@ export const setContent = async (page, html, testInfo, options) => {
55
59
  </body>
56
60
  </html>
57
61
  `;
62
+ testInfo.annotations.push({
63
+ type: 'mode',
64
+ description: mode,
65
+ });
58
66
  testInfo.annotations.push({
59
67
  type: 'palette',
60
68
  description: palette,
61
69
  });
70
+ testInfo.annotations.push({
71
+ type: 'theme',
72
+ description: theme,
73
+ });
62
74
  if (baseUrl) {
63
75
  await page.route(baseUrl, (route) => {
64
76
  if (route.request().url() === `${baseUrl}/`) {
@@ -184,6 +184,7 @@ const animateBackButton = (rootAnimation, rtl, backDirection, backButtonEl, back
184
184
  const clonedBackButtonIconEl = shadow(clonedBackButtonEl).querySelector('ion-icon');
185
185
  clonedBackButtonEl.text = backButtonEl.text;
186
186
  clonedBackButtonEl.mode = backButtonEl.mode;
187
+ clonedBackButtonEl.theme = backButtonEl.theme;
187
188
  clonedBackButtonEl.icon = backButtonEl.icon;
188
189
  clonedBackButtonEl.color = backButtonEl.color;
189
190
  clonedBackButtonEl.disabled = backButtonEl.disabled;