@ionic/core 8.0.0-dev.11711035263.183d2423 → 8.0.0-dev.11711408410.14d71406

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 (815) 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 +25 -9
  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.ionic.css +13 -0
  103. package/css/core.ionic.css.map +1 -0
  104. package/dist/cjs/{app-globals-e132c781.js → app-globals-98e49326.js} +1 -1
  105. package/dist/cjs/{data-21dc0f81.js → data-f2ccf911.js} +6 -6
  106. package/dist/cjs/{framework-delegate-df3a2b04.js → framework-delegate-55f5683a.js} +1 -1
  107. package/dist/cjs/{hardware-back-button-1c67a5a2.js → hardware-back-button-f66bce00.js} +1 -1
  108. package/dist/cjs/{helpers-71097d9c.js → helpers-afaa9001.js} +0 -4
  109. package/dist/cjs/{index-ef9261f8.js → index-5643c839.js} +3 -3
  110. package/dist/cjs/{index-7479ea5a.js → index-91435ed0.js} +3 -3
  111. package/dist/cjs/{index-a91a3e24.js → index-9509ecad.js} +5 -34
  112. package/dist/cjs/{index-073c7cdc.js → index-f52c6d38.js} +0 -4
  113. package/dist/cjs/{index-c2191aa0.js → index-f5fcf972.js} +14 -13
  114. package/dist/cjs/index.cjs.js +9 -10
  115. package/dist/cjs/{input-shims-77b14f24.js → input-shims-837af288.js} +4 -3
  116. package/dist/cjs/{input.utils-ca74d73a.js → input.utils-01c2fa15.js} +3 -3
  117. package/dist/cjs/ion-accordion_2.cjs.entry.js +20 -13
  118. package/dist/cjs/ion-action-sheet.cjs.entry.js +15 -11
  119. package/dist/cjs/ion-alert.cjs.entry.js +16 -13
  120. package/dist/cjs/ion-app_8.cjs.entry.js +83 -64
  121. package/dist/cjs/ion-avatar_3.cjs.entry.js +21 -7
  122. package/dist/cjs/ion-back-button.cjs.entry.js +13 -9
  123. package/dist/cjs/ion-backdrop.cjs.entry.js +8 -4
  124. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +20 -12
  125. package/dist/cjs/ion-button_2.cjs.entry.js +27 -12
  126. package/dist/cjs/ion-card_5.cjs.entry.js +44 -24
  127. package/dist/cjs/ion-checkbox.cjs.entry.js +14 -10
  128. package/dist/cjs/ion-chip.cjs.entry.js +9 -5
  129. package/dist/cjs/ion-col_3.cjs.entry.js +13 -10
  130. package/dist/cjs/ion-datetime-button.cjs.entry.js +15 -12
  131. package/dist/cjs/ion-datetime_3.cjs.entry.js +108 -105
  132. package/dist/cjs/ion-fab_3.cjs.entry.js +19 -15
  133. package/dist/cjs/ion-img.cjs.entry.js +6 -3
  134. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +17 -14
  135. package/dist/cjs/ion-input.cjs.entry.js +19 -35
  136. package/dist/cjs/ion-item-option_3.cjs.entry.js +22 -15
  137. package/dist/cjs/ion-item_8.cjs.entry.js +65 -37
  138. package/dist/cjs/ion-loading.cjs.entry.js +14 -11
  139. package/dist/cjs/ion-menu_3.cjs.entry.js +28 -21
  140. package/dist/cjs/ion-modal.cjs.entry.js +21 -18
  141. package/dist/cjs/ion-nav_2.cjs.entry.js +11 -9
  142. package/dist/cjs/ion-picker-column-option.cjs.entry.js +10 -6
  143. package/dist/cjs/ion-picker-column.cjs.entry.js +7 -7
  144. package/dist/cjs/ion-picker.cjs.entry.js +7 -3
  145. package/dist/cjs/ion-popover.cjs.entry.js +17 -14
  146. package/dist/cjs/ion-progress-bar.cjs.entry.js +9 -5
  147. package/dist/cjs/ion-radio_2.cjs.entry.js +15 -9
  148. package/dist/cjs/ion-range.cjs.entry.js +17 -14
  149. package/dist/cjs/ion-refresher_2.cjs.entry.js +19 -15
  150. package/dist/cjs/ion-reorder_2.cjs.entry.js +16 -11
  151. package/dist/cjs/ion-ripple-effect.cjs.entry.js +4 -4
  152. package/dist/cjs/ion-route_4.cjs.entry.js +6 -6
  153. package/dist/cjs/ion-searchbar.cjs.entry.js +17 -13
  154. package/dist/cjs/ion-segment_2.cjs.entry.js +19 -11
  155. package/dist/cjs/ion-select_3.cjs.entry.js +40 -27
  156. package/dist/cjs/ion-spinner.cjs.entry.js +6 -6
  157. package/dist/cjs/ion-split-pane.cjs.entry.js +10 -6
  158. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +18 -10
  159. package/dist/cjs/ion-tab_2.cjs.entry.js +5 -5
  160. package/dist/cjs/ion-text.cjs.entry.js +5 -5
  161. package/dist/cjs/ion-textarea.cjs.entry.js +15 -12
  162. package/dist/cjs/ion-toast.cjs.entry.js +38 -34
  163. package/dist/cjs/ion-toggle.cjs.entry.js +18 -14
  164. package/dist/cjs/ionic-global-94d8021d.js +411 -0
  165. package/dist/cjs/ionic.cjs.js +3 -3
  166. package/dist/cjs/{ios.transition-2bb1c4d1.js → ios.transition-19155451.js} +3 -2
  167. package/dist/cjs/loader.cjs.js +3 -3
  168. package/dist/cjs/{md.transition-c0afd670.js → md.transition-1b1135b1.js} +2 -2
  169. package/dist/cjs/{notch-controller-0042ad49.js → notch-controller-d69150f5.js} +1 -1
  170. package/dist/cjs/{overlays-30b83581.js → overlays-de847251.js} +5 -6
  171. package/dist/cjs/{status-tap-dc3b8fda.js → status-tap-3ef7ca2b.js} +3 -3
  172. package/dist/cjs/{swipe-back-29e88360.js → swipe-back-0303a5e4.js} +1 -1
  173. package/dist/collection/collection-manifest.json +0 -1
  174. package/dist/collection/components/accordion/accordion.js +11 -8
  175. package/dist/collection/components/accordion-group/accordion-group.js +11 -8
  176. package/dist/collection/components/action-sheet/action-sheet.js +14 -10
  177. package/dist/collection/components/alert/alert.js +15 -12
  178. package/dist/collection/components/app/app.js +8 -4
  179. package/dist/collection/components/avatar/avatar.js +13 -4
  180. package/dist/collection/components/back-button/back-button.js +13 -10
  181. package/dist/collection/components/backdrop/backdrop.js +12 -6
  182. package/dist/collection/components/badge/badge.js +11 -8
  183. package/dist/collection/components/breadcrumb/breadcrumb.js +12 -9
  184. package/dist/collection/components/breadcrumbs/breadcrumbs.js +11 -9
  185. package/dist/collection/components/button/button.ios.css +32 -10
  186. package/dist/collection/components/button/button.js +28 -8
  187. package/dist/collection/components/button/button.md.css +28 -13
  188. package/dist/collection/components/button/test/round/button.e2e.js +39 -4
  189. package/dist/collection/components/buttons/buttons.js +14 -8
  190. package/dist/collection/components/card/card.js +13 -10
  191. package/dist/collection/components/card-content/card-content.js +11 -8
  192. package/dist/collection/components/card-header/card-header.js +12 -9
  193. package/dist/collection/components/card-subtitle/card-subtitle.js +11 -8
  194. package/dist/collection/components/card-title/card-title.js +11 -8
  195. package/dist/collection/components/checkbox/checkbox.js +15 -12
  196. package/dist/collection/components/chip/chip.js +11 -8
  197. package/dist/collection/components/col/col.js +9 -5
  198. package/dist/collection/components/content/content.js +13 -10
  199. package/dist/collection/components/datetime/datetime.js +21 -18
  200. package/dist/collection/components/datetime/utils/data.js +3 -3
  201. package/dist/collection/components/datetime-button/datetime-button.js +11 -8
  202. package/dist/collection/components/fab/fab.js +9 -5
  203. package/dist/collection/components/fab-button/fab-button.js +12 -9
  204. package/dist/collection/components/fab-list/fab-list.js +9 -5
  205. package/dist/collection/components/footer/footer.js +17 -14
  206. package/dist/collection/components/grid/grid.js +9 -5
  207. package/dist/collection/components/header/header.js +17 -14
  208. package/dist/collection/components/img/img.js +8 -2
  209. package/dist/collection/components/infinite-scroll/infinite-scroll.js +8 -4
  210. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +16 -10
  211. package/dist/collection/components/input/input.ios.css +1 -11
  212. package/dist/collection/components/input/input.js +18 -36
  213. package/dist/collection/components/input/input.md.css +1 -11
  214. package/dist/collection/components/item/item.js +13 -10
  215. package/dist/collection/components/item-divider/item-divider.js +11 -8
  216. package/dist/collection/components/item-group/item-group.js +13 -7
  217. package/dist/collection/components/item-option/item-option.js +11 -8
  218. package/dist/collection/components/item-options/item-options.js +13 -7
  219. package/dist/collection/components/item-sliding/item-sliding.js +8 -4
  220. package/dist/collection/components/label/label.js +11 -8
  221. package/dist/collection/components/list/list.js +12 -9
  222. package/dist/collection/components/list-header/list-header.js +11 -8
  223. package/dist/collection/components/loading/loading.js +13 -10
  224. package/dist/collection/components/menu/menu.js +12 -7
  225. package/dist/collection/components/menu-button/menu-button.js +12 -9
  226. package/dist/collection/components/menu-toggle/menu-toggle.js +8 -5
  227. package/dist/collection/components/modal/modal.js +12 -9
  228. package/dist/collection/components/nav/nav.js +11 -5
  229. package/dist/collection/components/nav-link/nav-link.js +5 -1
  230. package/dist/collection/components/note/note.js +11 -8
  231. package/dist/collection/components/picker/picker.js +8 -5
  232. package/dist/collection/components/picker-column/picker-column.js +8 -7
  233. package/dist/collection/components/picker-column-option/picker-column-option.js +13 -7
  234. package/dist/collection/components/picker-legacy/picker.js +7 -6
  235. package/dist/collection/components/picker-legacy-column/picker-column.js +4 -4
  236. package/dist/collection/components/popover/popover.js +15 -12
  237. package/dist/collection/components/progress-bar/progress-bar.js +10 -7
  238. package/dist/collection/components/radio/radio.js +12 -9
  239. package/dist/collection/components/radio-group/radio-group.js +9 -3
  240. package/dist/collection/components/range/range.js +12 -9
  241. package/dist/collection/components/refresher/refresher.js +11 -8
  242. package/dist/collection/components/refresher-content/refresher-content.js +12 -7
  243. package/dist/collection/components/reorder/reorder.js +13 -6
  244. package/dist/collection/components/reorder-group/reorder-group.js +8 -4
  245. package/dist/collection/components/ripple-effect/ripple-effect.js +8 -4
  246. package/dist/collection/components/route/route.js +4 -0
  247. package/dist/collection/components/router/router.js +4 -0
  248. package/dist/collection/components/router-link/router-link.js +9 -5
  249. package/dist/collection/components/router-outlet/router-outlet.js +5 -2
  250. package/dist/collection/components/row/row.js +9 -2
  251. package/dist/collection/components/searchbar/searchbar.js +21 -18
  252. package/dist/collection/components/segment/segment.js +11 -8
  253. package/dist/collection/components/segment-button/segment-button.js +12 -9
  254. package/dist/collection/components/select/select.js +27 -24
  255. package/dist/collection/components/select-option/select-option.js +9 -2
  256. package/dist/collection/components/select-popover/select-popover.js +12 -4
  257. package/dist/collection/components/skeleton-text/skeleton-text.js +9 -5
  258. package/dist/collection/components/spinner/spinner.js +10 -6
  259. package/dist/collection/components/split-pane/split-pane.js +14 -8
  260. package/dist/collection/components/tab/tab.js +6 -2
  261. package/dist/collection/components/tab-bar/tab-bar.js +12 -9
  262. package/dist/collection/components/tab-button/tab-button.js +11 -8
  263. package/dist/collection/components/tabs/tabs.js +4 -1
  264. package/dist/collection/components/text/text.js +7 -6
  265. package/dist/collection/components/textarea/textarea.js +15 -12
  266. package/dist/collection/components/thumbnail/thumbnail.js +9 -2
  267. package/dist/collection/components/title/title.js +13 -7
  268. package/dist/collection/components/toast/animations/utils.js +1 -1
  269. package/dist/collection/components/toast/toast.js +15 -11
  270. package/dist/collection/components/toggle/toggle.js +18 -15
  271. package/dist/collection/components/toolbar/toolbar.js +13 -10
  272. package/dist/collection/global/ionic-global.js +160 -12
  273. package/dist/collection/global/test/ionic-global.spec.js +109 -0
  274. package/dist/collection/utils/menu-controller/animations/overlay.js +3 -3
  275. package/dist/collection/utils/menu-controller/animations/push.js +2 -1
  276. package/dist/collection/utils/menu-controller/animations/reveal.js +2 -1
  277. package/dist/collection/utils/tap-click/index.js +5 -34
  278. package/dist/collection/utils/test/playwright/generator.js +45 -22
  279. package/dist/collection/utils/test/playwright/page/utils/goto.js +13 -4
  280. package/dist/collection/utils/test/playwright/page/utils/set-content.js +13 -1
  281. package/dist/collection/utils/transition/ios.transition.js +1 -0
  282. package/dist/docs.json +3884 -518
  283. package/dist/esm/{app-globals-80842d68.js → app-globals-4194f7b0.js} +1 -1
  284. package/dist/esm/{button-active-824983fa.js → button-active-6f657ae4.js} +1 -1
  285. package/dist/esm/{data-ae11fd43.js → data-735635b1.js} +4 -4
  286. package/dist/esm/{framework-delegate-3dede018.js → framework-delegate-63d1a679.js} +1 -1
  287. package/dist/esm/{hardware-back-button-fb295e3a.js → hardware-back-button-ff84501f.js} +2 -2
  288. package/dist/esm/{helpers-eab4f597.js → helpers-da915de8.js} +1 -4
  289. package/dist/esm/{index-5d6a0317.js → index-3a495cc6.js} +1 -1
  290. package/dist/esm/{index-044b5a86.js → index-4bbc4ca3.js} +2 -2
  291. package/dist/esm/{index-0089f1fa.js → index-62041d9c.js} +10 -9
  292. package/dist/esm/{index-fa221975.js → index-79b30591.js} +5 -34
  293. package/dist/esm/{index-f27077ac.js → index-e3f4491c.js} +4 -4
  294. package/dist/esm/{index-e2cf2ceb.js → index-f7dc70ba.js} +1 -3
  295. package/dist/esm/index.js +10 -11
  296. package/dist/esm/{input-shims-196afa11.js → input-shims-131a3f9f.js} +4 -3
  297. package/dist/esm/{input.utils-426cc674.js → input.utils-41b26b54.js} +2 -2
  298. package/dist/esm/ion-accordion_2.entry.js +20 -13
  299. package/dist/esm/ion-action-sheet.entry.js +17 -13
  300. package/dist/esm/ion-alert.entry.js +18 -15
  301. package/dist/esm/ion-app_8.entry.js +73 -54
  302. package/dist/esm/ion-avatar_3.entry.js +22 -8
  303. package/dist/esm/ion-back-button.entry.js +14 -10
  304. package/dist/esm/ion-backdrop.entry.js +9 -5
  305. package/dist/esm/ion-breadcrumb_2.entry.js +21 -13
  306. package/dist/esm/ion-button_2.entry.js +25 -10
  307. package/dist/esm/ion-card_5.entry.js +45 -25
  308. package/dist/esm/ion-checkbox.entry.js +15 -11
  309. package/dist/esm/ion-chip.entry.js +10 -6
  310. package/dist/esm/ion-col_3.entry.js +14 -11
  311. package/dist/esm/ion-datetime-button.entry.js +12 -9
  312. package/dist/esm/ion-datetime_3.entry.js +33 -30
  313. package/dist/esm/ion-fab_3.entry.js +20 -16
  314. package/dist/esm/ion-img.entry.js +7 -4
  315. package/dist/esm/ion-infinite-scroll_2.entry.js +18 -15
  316. package/dist/esm/ion-input.entry.js +20 -36
  317. package/dist/esm/ion-item-option_3.entry.js +23 -16
  318. package/dist/esm/ion-item_8.entry.js +66 -38
  319. package/dist/esm/ion-loading.entry.js +15 -12
  320. package/dist/esm/ion-menu_3.entry.js +29 -22
  321. package/dist/esm/ion-modal.entry.js +17 -14
  322. package/dist/esm/ion-nav_2.entry.js +12 -10
  323. package/dist/esm/ion-picker-column-option.entry.js +11 -7
  324. package/dist/esm/ion-picker-column.entry.js +8 -8
  325. package/dist/esm/ion-picker.entry.js +8 -4
  326. package/dist/esm/ion-popover.entry.js +15 -12
  327. package/dist/esm/ion-progress-bar.entry.js +10 -6
  328. package/dist/esm/ion-radio_2.entry.js +16 -10
  329. package/dist/esm/ion-range.entry.js +13 -10
  330. package/dist/esm/ion-refresher_2.entry.js +20 -16
  331. package/dist/esm/ion-reorder_2.entry.js +17 -12
  332. package/dist/esm/ion-ripple-effect.entry.js +5 -5
  333. package/dist/esm/ion-route_4.entry.js +7 -7
  334. package/dist/esm/ion-searchbar.entry.js +18 -14
  335. package/dist/esm/ion-segment_2.entry.js +20 -12
  336. package/dist/esm/ion-select_3.entry.js +41 -28
  337. package/dist/esm/ion-spinner.entry.js +7 -7
  338. package/dist/esm/ion-split-pane.entry.js +11 -7
  339. package/dist/esm/ion-tab-bar_2.entry.js +19 -11
  340. package/dist/esm/ion-tab_2.entry.js +6 -6
  341. package/dist/esm/ion-text.entry.js +6 -6
  342. package/dist/esm/ion-textarea.entry.js +16 -13
  343. package/dist/esm/ion-toast.entry.js +18 -14
  344. package/dist/esm/ion-toggle.entry.js +19 -15
  345. package/dist/esm/ionic-global-d47e129d.js +401 -0
  346. package/dist/esm/ionic.js +5 -5
  347. package/dist/esm/{ios.transition-632deb95.js → ios.transition-2187a9fd.js} +4 -3
  348. package/dist/esm/loader.js +5 -5
  349. package/dist/esm/{md.transition-3bcf4011.js → md.transition-a8d52fcb.js} +3 -3
  350. package/dist/esm/{notch-controller-cff691e5.js → notch-controller-55b09e11.js} +1 -1
  351. package/dist/esm/{overlays-d41f74ac.js → overlays-213b5a21.js} +4 -5
  352. package/dist/esm/{status-tap-45595148.js → status-tap-8838c434.js} +4 -4
  353. package/dist/esm/{swipe-back-57844616.js → swipe-back-e5394307.js} +1 -1
  354. package/dist/esm-es5/app-globals-4194f7b0.js +4 -0
  355. package/dist/esm-es5/{button-active-824983fa.js → button-active-6f657ae4.js} +1 -1
  356. package/dist/esm-es5/data-735635b1.js +4 -0
  357. package/dist/esm-es5/{framework-delegate-3dede018.js → framework-delegate-63d1a679.js} +1 -1
  358. package/dist/esm-es5/{hardware-back-button-fb295e3a.js → hardware-back-button-ff84501f.js} +1 -1
  359. package/dist/esm-es5/{helpers-eab4f597.js → helpers-da915de8.js} +1 -1
  360. package/dist/esm-es5/{index-5d6a0317.js → index-3a495cc6.js} +1 -1
  361. package/dist/esm-es5/index-4bbc4ca3.js +4 -0
  362. package/dist/esm-es5/index-62041d9c.js +4 -0
  363. package/dist/esm-es5/index-79b30591.js +4 -0
  364. package/dist/esm-es5/{index-f27077ac.js → index-e3f4491c.js} +1 -1
  365. package/dist/esm-es5/{index-e2cf2ceb.js → index-f7dc70ba.js} +1 -1
  366. package/dist/esm-es5/index.js +1 -1
  367. package/dist/esm-es5/input-shims-131a3f9f.js +4 -0
  368. package/dist/esm-es5/input.utils-41b26b54.js +4 -0
  369. package/dist/esm-es5/ion-accordion_2.entry.js +1 -1
  370. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  371. package/dist/esm-es5/ion-alert.entry.js +1 -1
  372. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  373. package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
  374. package/dist/esm-es5/ion-back-button.entry.js +1 -1
  375. package/dist/esm-es5/ion-backdrop.entry.js +1 -1
  376. package/dist/esm-es5/ion-breadcrumb_2.entry.js +1 -1
  377. package/dist/esm-es5/ion-button_2.entry.js +1 -1
  378. package/dist/esm-es5/ion-card_5.entry.js +1 -1
  379. package/dist/esm-es5/ion-checkbox.entry.js +1 -1
  380. package/dist/esm-es5/ion-chip.entry.js +1 -1
  381. package/dist/esm-es5/ion-col_3.entry.js +1 -1
  382. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  383. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  384. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  385. package/dist/esm-es5/ion-img.entry.js +1 -1
  386. package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
  387. package/dist/esm-es5/ion-input.entry.js +1 -1
  388. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  389. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  390. package/dist/esm-es5/ion-loading.entry.js +1 -1
  391. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  392. package/dist/esm-es5/ion-modal.entry.js +1 -1
  393. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  394. package/dist/esm-es5/ion-picker-column-option.entry.js +1 -1
  395. package/dist/esm-es5/ion-picker-column.entry.js +1 -1
  396. package/dist/esm-es5/ion-picker.entry.js +1 -1
  397. package/dist/esm-es5/ion-popover.entry.js +1 -1
  398. package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
  399. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  400. package/dist/esm-es5/ion-range.entry.js +1 -1
  401. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  402. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  403. package/dist/esm-es5/ion-ripple-effect.entry.js +1 -1
  404. package/dist/esm-es5/ion-route_4.entry.js +1 -1
  405. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  406. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  407. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  408. package/dist/esm-es5/ion-spinner.entry.js +1 -1
  409. package/dist/esm-es5/ion-split-pane.entry.js +1 -1
  410. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  411. package/dist/esm-es5/ion-tab_2.entry.js +1 -1
  412. package/dist/esm-es5/ion-text.entry.js +1 -1
  413. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  414. package/dist/esm-es5/ion-toast.entry.js +1 -1
  415. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  416. package/dist/esm-es5/ionic-global-d47e129d.js +4 -0
  417. package/dist/esm-es5/ionic.js +1 -1
  418. package/dist/esm-es5/ios.transition-2187a9fd.js +4 -0
  419. package/dist/esm-es5/loader.js +1 -1
  420. package/dist/esm-es5/md.transition-a8d52fcb.js +4 -0
  421. package/dist/esm-es5/{notch-controller-cff691e5.js → notch-controller-55b09e11.js} +1 -1
  422. package/dist/esm-es5/overlays-213b5a21.js +4 -0
  423. package/dist/esm-es5/status-tap-8838c434.js +4 -0
  424. package/dist/esm-es5/{swipe-back-57844616.js → swipe-back-e5394307.js} +1 -1
  425. package/dist/html.html-data.json +1878 -160
  426. package/dist/ionic/index.esm.js +1 -1
  427. package/dist/ionic/ionic.esm.js +1 -1
  428. package/dist/ionic/ionic.js +1 -1
  429. package/dist/ionic/p-0507489e.system.entry.js +4 -0
  430. package/dist/ionic/p-09b71030.entry.js +4 -0
  431. package/dist/ionic/p-0c0065e8.js +4 -0
  432. package/dist/ionic/p-0daf382b.system.entry.js +4 -0
  433. package/dist/ionic/p-1126b6fb.entry.js +4 -0
  434. package/dist/ionic/p-116239e0.system.entry.js +4 -0
  435. package/dist/ionic/p-11f25a12.system.js +4 -0
  436. package/dist/ionic/{p-78b3da77.js → p-139e8ff1.js} +1 -1
  437. package/dist/ionic/p-13aa1338.entry.js +4 -0
  438. package/dist/ionic/p-16b3b748.system.js +4 -0
  439. package/dist/ionic/p-18d1e318.system.js +4 -0
  440. package/dist/ionic/p-197fca36.system.entry.js +4 -0
  441. package/dist/ionic/{p-2cc2c631.system.js → p-19ea7bff.system.js} +1 -1
  442. package/dist/ionic/{p-ab6879e7.system.js → p-1a488d6f.system.js} +1 -1
  443. package/dist/ionic/p-1f04779e.entry.js +4 -0
  444. package/dist/ionic/p-226bdf0f.entry.js +4 -0
  445. package/dist/ionic/p-23132e1f.js +4 -0
  446. package/dist/ionic/p-23a3320b.js +4 -0
  447. package/dist/ionic/p-23e053d0.system.entry.js +4 -0
  448. package/dist/ionic/p-24cc69ab.entry.js +4 -0
  449. package/dist/ionic/p-24e9aa21.entry.js +4 -0
  450. package/dist/ionic/p-29ceda88.js +4 -0
  451. package/dist/ionic/p-2a4641fb.system.entry.js +4 -0
  452. package/dist/ionic/p-2bc784c2.system.entry.js +4 -0
  453. package/dist/ionic/p-2c8cb8c0.system.entry.js +4 -0
  454. package/dist/ionic/p-2fad37de.system.entry.js +4 -0
  455. package/dist/ionic/p-30aed000.system.entry.js +4 -0
  456. package/dist/ionic/p-30b7a6a6.system.entry.js +4 -0
  457. package/dist/ionic/{p-4a3055ef.system.js → p-322eb715.system.js} +1 -1
  458. package/dist/ionic/{p-a600a3e3.js → p-34b11c24.js} +1 -1
  459. package/dist/ionic/p-35b46c05.entry.js +4 -0
  460. package/dist/ionic/p-365d2cfe.system.entry.js +4 -0
  461. package/dist/ionic/p-385c76dc.system.entry.js +4 -0
  462. package/dist/ionic/{p-668607c2.system.js → p-3ad285e3.system.js} +1 -1
  463. package/dist/ionic/p-3b03dd5b.entry.js +4 -0
  464. package/dist/ionic/{p-c6f9f3eb.js → p-3cc276f4.js} +1 -1
  465. package/dist/ionic/p-3d7001d7.js +4 -0
  466. package/dist/ionic/p-3e47e61e.entry.js +4 -0
  467. package/dist/ionic/p-3e8cfe35.system.entry.js +4 -0
  468. package/dist/ionic/p-3e9e667a.entry.js +4 -0
  469. package/dist/ionic/p-3ecd1809.entry.js +4 -0
  470. package/dist/ionic/p-3ed32307.system.entry.js +4 -0
  471. package/dist/ionic/p-41908d5c.entry.js +4 -0
  472. package/dist/ionic/p-44d8d5c3.entry.js +4 -0
  473. package/dist/ionic/p-45684f75.system.entry.js +4 -0
  474. package/dist/ionic/p-46e489c1.entry.js +4 -0
  475. package/dist/ionic/p-4c2d5b80.system.js +4 -0
  476. package/dist/ionic/{p-b141e253.entry.js → p-4c55c5ce.entry.js} +1 -1
  477. package/dist/ionic/p-4c6278ca.system.entry.js +4 -0
  478. package/dist/ionic/p-4e7a18b3.entry.js +4 -0
  479. package/dist/ionic/p-4f30e4c3.system.entry.js +4 -0
  480. package/dist/ionic/p-52698131.entry.js +4 -0
  481. package/dist/ionic/p-56dfd814.entry.js +4 -0
  482. package/dist/ionic/{p-fbf23235.entry.js → p-57082094.entry.js} +1 -1
  483. package/dist/ionic/{p-239906f1.js → p-57a4c6c3.js} +1 -1
  484. package/dist/ionic/{p-92b05b70.system.entry.js → p-57b76977.system.entry.js} +1 -1
  485. package/dist/ionic/p-5919403e.js +4 -0
  486. package/dist/ionic/p-5fed4c24.system.entry.js +4 -0
  487. package/dist/ionic/p-605c456e.system.entry.js +4 -0
  488. package/dist/ionic/p-6087c7ac.system.entry.js +4 -0
  489. package/dist/ionic/p-617a8c10.system.entry.js +4 -0
  490. package/dist/ionic/p-62ad354a.system.entry.js +4 -0
  491. package/dist/ionic/{p-e1d4298f.system.entry.js → p-644df0cc.system.entry.js} +1 -1
  492. package/dist/ionic/p-6718dfd8.system.entry.js +4 -0
  493. package/dist/ionic/p-6770c46d.system.entry.js +4 -0
  494. package/dist/ionic/p-6981ada8.entry.js +4 -0
  495. package/dist/ionic/p-69e691df.system.entry.js +4 -0
  496. package/dist/ionic/p-6a5b979b.system.js +4 -0
  497. package/dist/ionic/p-6d1854de.system.entry.js +4 -0
  498. package/dist/ionic/p-70a396e0.entry.js +4 -0
  499. package/dist/ionic/p-716cc857.entry.js +4 -0
  500. package/dist/ionic/p-71784639.entry.js +4 -0
  501. package/dist/ionic/p-72812e99.js +4 -0
  502. package/dist/ionic/{p-91a83ede.js → p-72bc8a1c.js} +1 -1
  503. package/dist/ionic/{p-c629d22b.system.js → p-75257a79.system.js} +2 -2
  504. package/dist/ionic/p-77cdf8f0.system.entry.js +4 -0
  505. package/dist/ionic/{p-a2dc2ef1.system.entry.js → p-7c6ba817.system.entry.js} +1 -1
  506. package/dist/ionic/p-7d6993fa.entry.js +4 -0
  507. package/dist/ionic/{p-e0d52ee3.system.js → p-7fefe43e.system.js} +1 -1
  508. package/dist/ionic/{p-5b4b977f.entry.js → p-820be1bf.entry.js} +1 -1
  509. package/dist/ionic/p-831269de.js +4 -0
  510. package/dist/ionic/p-84dd4f6c.system.entry.js +4 -0
  511. package/dist/ionic/p-8635f5e6.system.js +4 -0
  512. package/dist/ionic/{p-86bdb32e.system.entry.js → p-8cd83c08.system.entry.js} +1 -1
  513. package/dist/ionic/p-8fbf7c49.entry.js +4 -0
  514. package/dist/ionic/p-8fd110c6.entry.js +4 -0
  515. package/dist/ionic/p-92b3df98.system.js +4 -0
  516. package/dist/ionic/{p-9a4b9c91.system.entry.js → p-98ced5a7.system.entry.js} +2 -2
  517. package/dist/ionic/p-9a76dbbb.entry.js +4 -0
  518. package/dist/ionic/p-a15ddedb.system.js +4 -0
  519. package/dist/ionic/p-a5456295.entry.js +4 -0
  520. package/dist/ionic/p-a68b1b19.entry.js +4 -0
  521. package/dist/ionic/p-ac1eb107.system.js +4 -0
  522. package/dist/ionic/p-ae2c6708.system.entry.js +4 -0
  523. package/dist/ionic/p-ae3fdd38.entry.js +4 -0
  524. package/dist/ionic/{p-6a62da36.system.js → p-af732189.system.js} +1 -1
  525. package/dist/ionic/p-afeebbc2.entry.js +4 -0
  526. package/dist/ionic/p-b0bd2f28.system.entry.js +4 -0
  527. package/dist/ionic/p-b0da0e7e.entry.js +4 -0
  528. package/dist/ionic/{p-364044f0.js → p-b51e4004.js} +1 -1
  529. package/dist/ionic/p-b69db5bf.entry.js +4 -0
  530. package/dist/ionic/{p-5f6c0372.entry.js → p-b8df09fa.entry.js} +1 -1
  531. package/dist/ionic/p-bb01995b.entry.js +4 -0
  532. package/dist/ionic/p-bb4431d3.entry.js +4 -0
  533. package/dist/ionic/{p-cbb9269d.system.js → p-c11232d6.system.js} +1 -1
  534. package/dist/ionic/p-c1d0861e.entry.js +4 -0
  535. package/dist/ionic/p-c78731fc.system.js +4 -0
  536. package/dist/ionic/p-c7e3ef1f.js +4 -0
  537. package/dist/ionic/p-c8985963.system.js +4 -0
  538. package/dist/ionic/p-c957dcbd.system.entry.js +4 -0
  539. package/dist/ionic/{p-f8502e85.js → p-cb4da696.js} +1 -1
  540. package/dist/ionic/p-cc1dabd2.system.entry.js +4 -0
  541. package/dist/ionic/p-cd1250d7.js +4 -0
  542. package/dist/ionic/p-cd94b05a.system.entry.js +4 -0
  543. package/dist/ionic/{p-d60342e3.js → p-d2a65df9.js} +1 -1
  544. package/dist/ionic/p-d6788bde.system.entry.js +4 -0
  545. package/dist/ionic/p-d83f3852.system.entry.js +4 -0
  546. package/dist/ionic/p-de5f6929.system.entry.js +4 -0
  547. package/dist/ionic/{p-af9256a0.system.js → p-df92bab7.system.js} +1 -1
  548. package/dist/ionic/p-dfb6de03.system.js +4 -0
  549. package/dist/ionic/{p-f687573e.system.js → p-dff73ffc.system.js} +1 -1
  550. package/dist/ionic/p-e399a113.entry.js +4 -0
  551. package/dist/ionic/p-e4cd4316.system.entry.js +4 -0
  552. package/dist/ionic/p-e557901b.entry.js +4 -0
  553. package/dist/ionic/p-e62f29e0.system.entry.js +4 -0
  554. package/dist/ionic/p-e7522003.js +4 -0
  555. package/dist/ionic/p-e86fef55.system.js +4 -0
  556. package/dist/ionic/p-eab67c46.system.entry.js +4 -0
  557. package/dist/ionic/{p-20bf9f84.entry.js → p-ed454419.entry.js} +1 -1
  558. package/dist/ionic/p-efdba78a.system.entry.js +4 -0
  559. package/dist/ionic/p-f7a041dc.js +4 -0
  560. package/dist/ionic/p-f85988bd.entry.js +4 -0
  561. package/dist/ionic/p-f9398178.entry.js +4 -0
  562. package/dist/ionic/p-f977c8c5.entry.js +4 -0
  563. package/dist/ionic/{p-a3dae2ce.js → p-fe1345b7.js} +1 -1
  564. package/dist/ionic/{p-647981a4.system.entry.js → p-fea6e789.system.entry.js} +1 -1
  565. package/dist/ionic/p-ff584ff5.entry.js +4 -0
  566. package/dist/ionic/p-ff93a0f3.entry.js +4 -0
  567. package/dist/types/components/accordion/accordion.d.ts +2 -1
  568. package/dist/types/components/accordion-group/accordion-group.d.ts +2 -1
  569. package/dist/types/components/action-sheet/action-sheet-interface.d.ts +3 -7
  570. package/dist/types/components/action-sheet/action-sheet.d.ts +3 -2
  571. package/dist/types/components/alert/alert-interface.d.ts +3 -7
  572. package/dist/types/components/alert/alert.d.ts +3 -2
  573. package/dist/types/components/app/app.d.ts +4 -0
  574. package/dist/types/components/avatar/avatar.d.ts +4 -0
  575. package/dist/types/components/back-button/back-button.d.ts +2 -1
  576. package/dist/types/components/backdrop/backdrop.d.ts +4 -0
  577. package/dist/types/components/badge/badge.d.ts +2 -1
  578. package/dist/types/components/breadcrumb/breadcrumb.d.ts +2 -1
  579. package/dist/types/components/breadcrumbs/breadcrumbs.d.ts +2 -2
  580. package/dist/types/components/button/button.d.ts +7 -1
  581. package/dist/types/components/buttons/buttons.d.ts +5 -1
  582. package/dist/types/components/card/card.d.ts +2 -1
  583. package/dist/types/components/card-content/card-content.d.ts +2 -1
  584. package/dist/types/components/card-header/card-header.d.ts +3 -2
  585. package/dist/types/components/card-subtitle/card-subtitle.d.ts +2 -1
  586. package/dist/types/components/card-title/card-title.d.ts +2 -1
  587. package/dist/types/components/checkbox/checkbox.d.ts +2 -1
  588. package/dist/types/components/chip/chip.d.ts +2 -1
  589. package/dist/types/components/col/col.d.ts +4 -0
  590. package/dist/types/components/content/content.d.ts +3 -0
  591. package/dist/types/components/datetime/datetime.d.ts +2 -1
  592. package/dist/types/components/datetime/utils/data.d.ts +3 -3
  593. package/dist/types/components/datetime-button/datetime-button.d.ts +2 -1
  594. package/dist/types/components/fab/fab.d.ts +4 -0
  595. package/dist/types/components/fab-button/fab-button.d.ts +3 -2
  596. package/dist/types/components/fab-list/fab-list.d.ts +4 -0
  597. package/dist/types/components/footer/footer.d.ts +4 -3
  598. package/dist/types/components/grid/grid.d.ts +4 -0
  599. package/dist/types/components/header/header.d.ts +4 -3
  600. package/dist/types/components/img/img.d.ts +3 -0
  601. package/dist/types/components/infinite-scroll/infinite-scroll.d.ts +4 -0
  602. package/dist/types/components/infinite-scroll-content/infinite-scroll-content.d.ts +4 -0
  603. package/dist/types/components/input/input.d.ts +3 -8
  604. package/dist/types/components/item/item.d.ts +4 -3
  605. package/dist/types/components/item-divider/item-divider.d.ts +2 -1
  606. package/dist/types/components/item-group/item-group.d.ts +4 -0
  607. package/dist/types/components/item-option/item-option.d.ts +2 -1
  608. package/dist/types/components/item-options/item-options.d.ts +4 -0
  609. package/dist/types/components/item-sliding/item-sliding.d.ts +4 -0
  610. package/dist/types/components/label/label.d.ts +2 -1
  611. package/dist/types/components/list/list.d.ts +2 -1
  612. package/dist/types/components/list-header/list-header.d.ts +2 -1
  613. package/dist/types/components/loading/loading-interface.d.ts +2 -7
  614. package/dist/types/components/loading/loading.d.ts +3 -2
  615. package/dist/types/components/menu/menu.d.ts +3 -0
  616. package/dist/types/components/menu-button/menu-button.d.ts +2 -1
  617. package/dist/types/components/menu-toggle/menu-toggle.d.ts +3 -0
  618. package/dist/types/components/modal/modal-interface.d.ts +3 -7
  619. package/dist/types/components/modal/modal.d.ts +2 -1
  620. package/dist/types/components/nav/nav-interface.d.ts +9 -1
  621. package/dist/types/components/nav/nav.d.ts +5 -1
  622. package/dist/types/components/nav-link/nav-link.d.ts +4 -0
  623. package/dist/types/components/note/note.d.ts +2 -1
  624. package/dist/types/components/picker/picker.d.ts +2 -1
  625. package/dist/types/components/picker-column/picker-column.d.ts +2 -1
  626. package/dist/types/components/picker-column-option/picker-column-option.d.ts +4 -0
  627. package/dist/types/components/picker-legacy/picker.d.ts +2 -1
  628. package/dist/types/components/popover/popover-interface.d.ts +3 -7
  629. package/dist/types/components/popover/popover.d.ts +6 -5
  630. package/dist/types/components/progress-bar/progress-bar.d.ts +2 -1
  631. package/dist/types/components/radio/radio.d.ts +2 -1
  632. package/dist/types/components/radio-group/radio-group.d.ts +4 -0
  633. package/dist/types/components/range/range.d.ts +2 -1
  634. package/dist/types/components/refresher/refresher.d.ts +2 -1
  635. package/dist/types/components/refresher-content/refresher-content.d.ts +4 -0
  636. package/dist/types/components/reorder/reorder.d.ts +3 -0
  637. package/dist/types/components/reorder-group/reorder-group.d.ts +4 -0
  638. package/dist/types/components/ripple-effect/ripple-effect.d.ts +4 -0
  639. package/dist/types/components/route/route.d.ts +4 -0
  640. package/dist/types/components/router/router.d.ts +4 -0
  641. package/dist/types/components/router-link/router-link.d.ts +4 -0
  642. package/dist/types/components/router-outlet/router-outlet.d.ts +4 -1
  643. package/dist/types/components/row/row.d.ts +4 -0
  644. package/dist/types/components/searchbar/searchbar.d.ts +8 -7
  645. package/dist/types/components/segment/segment.d.ts +2 -1
  646. package/dist/types/components/segment-button/segment-button.d.ts +2 -1
  647. package/dist/types/components/select/select.d.ts +6 -5
  648. package/dist/types/components/select-option/select-option.d.ts +4 -0
  649. package/dist/types/components/select-popover/select-popover.d.ts +3 -0
  650. package/dist/types/components/skeleton-text/skeleton-text.d.ts +4 -0
  651. package/dist/types/components/spinner/spinner.d.ts +4 -0
  652. package/dist/types/components/split-pane/split-pane.d.ts +4 -0
  653. package/dist/types/components/tab/tab.d.ts +4 -0
  654. package/dist/types/components/tab-bar/tab-bar.d.ts +3 -2
  655. package/dist/types/components/tab-button/tab-button.d.ts +2 -1
  656. package/dist/types/components/tabs/tabs.d.ts +3 -0
  657. package/dist/types/components/text/text.d.ts +2 -1
  658. package/dist/types/components/textarea/textarea.d.ts +3 -2
  659. package/dist/types/components/thumbnail/thumbnail.d.ts +4 -0
  660. package/dist/types/components/title/title.d.ts +4 -0
  661. package/dist/types/components/toast/animations/utils.d.ts +2 -2
  662. package/dist/types/components/toast/toast-interface.d.ts +3 -7
  663. package/dist/types/components/toast/toast.d.ts +3 -2
  664. package/dist/types/components/toggle/toggle.d.ts +2 -1
  665. package/dist/types/components/toolbar/toolbar.d.ts +4 -3
  666. package/dist/types/components.d.ts +1180 -202
  667. package/dist/types/global/ionic-global.d.ts +25 -2
  668. package/dist/types/interface.d.ts +3 -0
  669. package/dist/types/utils/config.d.ts +17 -2
  670. package/dist/types/utils/overlays-interface.d.ts +31 -1
  671. package/dist/types/utils/test/playwright/generator.d.ts +8 -1
  672. package/hydrate/index.js +1139 -628
  673. package/package.json +1 -1
  674. package/components/index9.js +0 -196
  675. package/components/ion-input-password-toggle.d.ts +0 -11
  676. package/components/ion-input-password-toggle.js +0 -132
  677. package/dist/cjs/index-5915f9b3.js +0 -38
  678. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +0 -93
  679. package/dist/cjs/ionic-global-5762eca9.js +0 -230
  680. package/dist/collection/components/input-password-toggle/input-password-toggle.ios.css +0 -0
  681. package/dist/collection/components/input-password-toggle/input-password-toggle.js +0 -183
  682. package/dist/collection/components/input-password-toggle/input-password-toggle.md.css +0 -0
  683. package/dist/collection/components/input-password-toggle/test/a11y/input-password-toggle.e2e.js +0 -21
  684. package/dist/collection/components/input-password-toggle/test/basic/input-password-toggle.e2e.js +0 -38
  685. package/dist/collection/components/input-password-toggle/test/input-password-toggle.spec.js +0 -76
  686. package/dist/esm/index-9b0d46f4.js +0 -34
  687. package/dist/esm/ion-input-password-toggle.entry.js +0 -89
  688. package/dist/esm/ionic-global-a589c12c.js +0 -224
  689. package/dist/esm-es5/app-globals-80842d68.js +0 -4
  690. package/dist/esm-es5/data-ae11fd43.js +0 -4
  691. package/dist/esm-es5/index-0089f1fa.js +0 -4
  692. package/dist/esm-es5/index-044b5a86.js +0 -4
  693. package/dist/esm-es5/index-9b0d46f4.js +0 -4
  694. package/dist/esm-es5/index-fa221975.js +0 -4
  695. package/dist/esm-es5/input-shims-196afa11.js +0 -4
  696. package/dist/esm-es5/input.utils-426cc674.js +0 -4
  697. package/dist/esm-es5/ion-input-password-toggle.entry.js +0 -4
  698. package/dist/esm-es5/ionic-global-a589c12c.js +0 -4
  699. package/dist/esm-es5/ios.transition-632deb95.js +0 -4
  700. package/dist/esm-es5/md.transition-3bcf4011.js +0 -4
  701. package/dist/esm-es5/overlays-d41f74ac.js +0 -4
  702. package/dist/esm-es5/status-tap-45595148.js +0 -4
  703. package/dist/ionic/p-031c5621.js +0 -4
  704. package/dist/ionic/p-04bdc816.system.entry.js +0 -4
  705. package/dist/ionic/p-06fee233.js +0 -4
  706. package/dist/ionic/p-07759435.system.js +0 -4
  707. package/dist/ionic/p-07927036.system.entry.js +0 -4
  708. package/dist/ionic/p-0e4c9e45.system.js +0 -4
  709. package/dist/ionic/p-103ec049.system.entry.js +0 -4
  710. package/dist/ionic/p-126207f8.entry.js +0 -4
  711. package/dist/ionic/p-1d3f79b2.system.entry.js +0 -4
  712. package/dist/ionic/p-1d528988.system.entry.js +0 -4
  713. package/dist/ionic/p-1e955a45.system.js +0 -4
  714. package/dist/ionic/p-210248f5.system.entry.js +0 -4
  715. package/dist/ionic/p-219c17cf.system.entry.js +0 -4
  716. package/dist/ionic/p-23838a94.system.entry.js +0 -4
  717. package/dist/ionic/p-2807660b.entry.js +0 -4
  718. package/dist/ionic/p-282bd5f9.system.entry.js +0 -4
  719. package/dist/ionic/p-29ef3b9b.entry.js +0 -4
  720. package/dist/ionic/p-2d34b04a.system.entry.js +0 -4
  721. package/dist/ionic/p-2f53c3eb.js +0 -4
  722. package/dist/ionic/p-31794e40.system.js +0 -4
  723. package/dist/ionic/p-325c61a4.js +0 -4
  724. package/dist/ionic/p-34b8c5bc.entry.js +0 -4
  725. package/dist/ionic/p-3599e243.entry.js +0 -4
  726. package/dist/ionic/p-3739de23.system.entry.js +0 -4
  727. package/dist/ionic/p-3785c067.entry.js +0 -4
  728. package/dist/ionic/p-3895e131.system.entry.js +0 -4
  729. package/dist/ionic/p-38b129b6.entry.js +0 -4
  730. package/dist/ionic/p-38e25e67.js +0 -4
  731. package/dist/ionic/p-3ad1b1c5.entry.js +0 -4
  732. package/dist/ionic/p-3bf7a38d.system.entry.js +0 -4
  733. package/dist/ionic/p-3c1aac30.system.entry.js +0 -4
  734. package/dist/ionic/p-3d55c50f.system.entry.js +0 -4
  735. package/dist/ionic/p-3e6e53fe.system.entry.js +0 -4
  736. package/dist/ionic/p-40976b1c.system.entry.js +0 -4
  737. package/dist/ionic/p-456ae20a.system.entry.js +0 -4
  738. package/dist/ionic/p-468e20c0.system.entry.js +0 -4
  739. package/dist/ionic/p-49e5401f.entry.js +0 -4
  740. package/dist/ionic/p-4a20a758.system.entry.js +0 -4
  741. package/dist/ionic/p-4b318f5e.system.entry.js +0 -4
  742. package/dist/ionic/p-4d21e85e.system.entry.js +0 -4
  743. package/dist/ionic/p-4decdc16.system.entry.js +0 -4
  744. package/dist/ionic/p-50633cad.entry.js +0 -4
  745. package/dist/ionic/p-527e1d8a.entry.js +0 -4
  746. package/dist/ionic/p-5644df37.entry.js +0 -4
  747. package/dist/ionic/p-564554d0.system.js +0 -4
  748. package/dist/ionic/p-56864c25.system.js +0 -4
  749. package/dist/ionic/p-57a3b59e.system.entry.js +0 -4
  750. package/dist/ionic/p-5b52897c.js +0 -4
  751. package/dist/ionic/p-5c6d4276.entry.js +0 -4
  752. package/dist/ionic/p-652a7913.js +0 -4
  753. package/dist/ionic/p-659d8f84.entry.js +0 -4
  754. package/dist/ionic/p-66e50777.entry.js +0 -4
  755. package/dist/ionic/p-6f734552.system.entry.js +0 -4
  756. package/dist/ionic/p-7002bc75.entry.js +0 -4
  757. package/dist/ionic/p-7abeea68.system.entry.js +0 -4
  758. package/dist/ionic/p-7b8ece87.entry.js +0 -4
  759. package/dist/ionic/p-7c4c37ae.system.js +0 -4
  760. package/dist/ionic/p-7c7e495d.system.js +0 -4
  761. package/dist/ionic/p-84025e3c.entry.js +0 -4
  762. package/dist/ionic/p-8412860b.system.entry.js +0 -4
  763. package/dist/ionic/p-8543c360.system.entry.js +0 -4
  764. package/dist/ionic/p-8818519d.entry.js +0 -4
  765. package/dist/ionic/p-887984fc.entry.js +0 -4
  766. package/dist/ionic/p-8ed900e4.entry.js +0 -4
  767. package/dist/ionic/p-91567c90.system.entry.js +0 -4
  768. package/dist/ionic/p-96c06026.entry.js +0 -4
  769. package/dist/ionic/p-978f4710.js +0 -4
  770. package/dist/ionic/p-9b5d033a.system.entry.js +0 -4
  771. package/dist/ionic/p-9d00a694.system.entry.js +0 -4
  772. package/dist/ionic/p-9e3177a5.system.js +0 -4
  773. package/dist/ionic/p-9fd5857a.system.entry.js +0 -4
  774. package/dist/ionic/p-a668e0d4.entry.js +0 -4
  775. package/dist/ionic/p-a6ac25f2.entry.js +0 -4
  776. package/dist/ionic/p-a6bce1f5.js +0 -4
  777. package/dist/ionic/p-a7270027.system.entry.js +0 -4
  778. package/dist/ionic/p-a9d2fa95.entry.js +0 -4
  779. package/dist/ionic/p-ac585dba.entry.js +0 -4
  780. package/dist/ionic/p-b05c33d0.system.entry.js +0 -4
  781. package/dist/ionic/p-b6d1ce6c.entry.js +0 -4
  782. package/dist/ionic/p-bb01ff24.system.entry.js +0 -4
  783. package/dist/ionic/p-bb151f4b.entry.js +0 -4
  784. package/dist/ionic/p-c385e49d.entry.js +0 -4
  785. package/dist/ionic/p-c3f5d0e7.js +0 -4
  786. package/dist/ionic/p-c83741f7.entry.js +0 -4
  787. package/dist/ionic/p-c8383c20.entry.js +0 -4
  788. package/dist/ionic/p-c947155d.entry.js +0 -4
  789. package/dist/ionic/p-cb970588.entry.js +0 -4
  790. package/dist/ionic/p-cc769fb6.system.entry.js +0 -4
  791. package/dist/ionic/p-cc978d16.system.entry.js +0 -4
  792. package/dist/ionic/p-ce436e94.system.entry.js +0 -4
  793. package/dist/ionic/p-ce9eafa3.entry.js +0 -4
  794. package/dist/ionic/p-cf07fee5.entry.js +0 -4
  795. package/dist/ionic/p-d0adc028.system.entry.js +0 -4
  796. package/dist/ionic/p-d0d674d0.entry.js +0 -4
  797. package/dist/ionic/p-d35d485c.entry.js +0 -4
  798. package/dist/ionic/p-d704f798.system.js +0 -4
  799. package/dist/ionic/p-d80b7e31.system.js +0 -4
  800. package/dist/ionic/p-d834c508.entry.js +0 -4
  801. package/dist/ionic/p-da2b833b.js +0 -4
  802. package/dist/ionic/p-da5bbd4f.entry.js +0 -4
  803. package/dist/ionic/p-dbd782ec.system.entry.js +0 -4
  804. package/dist/ionic/p-e066780e.js +0 -4
  805. package/dist/ionic/p-e170e351.js +0 -4
  806. package/dist/ionic/p-e7b0b64d.system.js +0 -4
  807. package/dist/ionic/p-e7cd7553.system.js +0 -4
  808. package/dist/ionic/p-f270059b.entry.js +0 -4
  809. package/dist/ionic/p-f40aa619.entry.js +0 -4
  810. package/dist/ionic/p-f47c47f2.system.entry.js +0 -4
  811. package/dist/ionic/p-facad328.entry.js +0 -4
  812. package/dist/ionic/p-fe5ff8fb.system.entry.js +0 -4
  813. package/dist/ionic/p-fe8f0dd2.entry.js +0 -4
  814. package/dist/ionic/p-ff4b7e40.system.js +0 -4
  815. package/dist/types/components/input-password-toggle/input-password-toggle.d.ts +0 -37
@@ -6,10 +6,11 @@ import { createNotchController } from "../../utils/forms/index";
6
6
  import { inheritAriaAttributes, debounceEvent, inheritAttributes, componentOnReady } from "../../utils/helpers";
7
7
  import { createSlotMutationController } from "../../utils/slot-mutation-controller";
8
8
  import { createColorClasses, hostContext } from "../../utils/theme";
9
- import { getIonMode } from "../../global/ionic-global";
9
+ import { getIonTheme } from "../../global/ionic-global";
10
10
  import { getCounterText } from "../input/input.utils";
11
11
  /**
12
- * @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
12
+ * @virtualProp {"ios" | "md"} mode - The mode determines the platform behaviors of the component.
13
+ * @virtualProp {"ios" | "md" | "ionic"} theme - The theme determines the visual appearance of the component.
13
14
  *
14
15
  * @slot label - The label text to associate with the textarea. Use the `labelPlacement` property to control where the label is placed relative to the textarea. Use this if you need to render a label with custom HTML. (EXPERIMENTAL)
15
16
  * @slot start - Content to display at the leading edge of the textarea. (EXPERIMENTAL)
@@ -277,8 +278,8 @@ export class Textarea {
277
278
  * Renders the border container when fill="outline".
278
279
  */
279
280
  renderLabelContainer() {
280
- const mode = getIonMode(this);
281
- const hasOutlineFill = mode === 'md' && this.fill === 'outline';
281
+ const theme = getIonTheme(this);
282
+ const hasOutlineFill = theme === 'md' && this.fill === 'outline';
282
283
  if (hasOutlineFill) {
283
284
  /**
284
285
  * The outline fill has a special outline
@@ -335,10 +336,10 @@ export class Textarea {
335
336
  }
336
337
  render() {
337
338
  const { inputId, disabled, fill, shape, labelPlacement, el, hasFocus } = this;
338
- const mode = getIonMode(this);
339
+ const theme = getIonTheme(this);
339
340
  const value = this.getValue();
340
341
  const inItem = hostContext('ion-item', this.el);
341
- const shouldRenderHighlight = mode === 'md' && fill !== 'outline' && !inItem;
342
+ const shouldRenderHighlight = theme === 'md' && fill !== 'outline' && !inItem;
342
343
  const hasValue = this.hasValue();
343
344
  const hasStartEndSlots = el.querySelector('[slot="start"], [slot="end"]') !== null;
344
345
  /**
@@ -359,8 +360,8 @@ export class Textarea {
359
360
  * TODO(FW-5592): Remove hasStartEndSlots condition
360
361
  */
361
362
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
362
- return (h(Host, { key: 'bb02bfa6a2f0f80d98df5a556941dfe4e6167f1a', class: createColorClasses(this.color, {
363
- [mode]: true,
363
+ return (h(Host, { key: 'd1b73299b7e55d87bdca6a026409801b8e4c793c', class: createColorClasses(this.color, {
364
+ [theme]: true,
364
365
  'has-value': hasValue,
365
366
  'has-focus': hasFocus,
366
367
  'label-floating': labelShouldFloat,
@@ -368,20 +369,22 @@ export class Textarea {
368
369
  [`textarea-shape-${shape}`]: shape !== undefined,
369
370
  [`textarea-label-placement-${labelPlacement}`]: true,
370
371
  'textarea-disabled': disabled,
371
- }) }, h("label", { key: '1b94ad5bc71dd4441fe6d35690ba2d8e19e4f59c', class: "textarea-wrapper", htmlFor: inputId }, this.renderLabelContainer(), h("div", { key: 'cd3143f63bf715782f849a4d29549473d5ee9a80', class: "textarea-wrapper-inner" }, h("div", { key: 'bebcda4eed228f9742fb3446e5b5d27daf2d2dd4', class: "start-slot-wrapper" }, h("slot", { key: '4cc32fbeae35ae04914183abc4e300aa21863ec6', name: "start" })), h("div", { key: '6f43f54dd8e0a548bc8b376025fb8f914d705130', class: "native-wrapper", ref: (el) => (this.textareaWrapper = el) }, h("textarea", Object.assign({ key: '11b30015d9b5daf6781651a1d0111d2be893f4c6', class: "native-textarea", ref: (el) => (this.nativeInput = el), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, minLength: this.minlength, maxLength: this.maxlength, name: this.name, placeholder: this.placeholder || '', readOnly: this.readonly, required: this.required, spellcheck: this.spellcheck, cols: this.cols, rows: this.rows, wrap: this.wrap, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeyDown }, this.inheritedAttributes), value)), h("div", { key: '7dc55f082b3268b78b1f8230ce81c9b870d945a8', class: "end-slot-wrapper" }, h("slot", { key: '054c0a7e052a301c00f8fe3cb975e61e7a7b4d3c', name: "end" }))), shouldRenderHighlight && h("div", { class: "textarea-highlight" })), this.renderBottomContent()));
372
+ }) }, h("label", { key: '56a14c9be398e0f4dbf1f9a71999dc0aecaa732e', class: "textarea-wrapper", htmlFor: inputId }, this.renderLabelContainer(), h("div", { key: '0c2ead1040301502244e7afc38f14051b40e4711', class: "textarea-wrapper-inner" }, h("div", { key: '3a2f6d8db60c807e7ff11342f45082197fba5abe', class: "start-slot-wrapper" }, h("slot", { key: '3a8238e824f737c0c99081bac7c02dc1b519a3aa', name: "start" })), h("div", { key: '7704ec78ff12ea56f6a8193dd78b4333750051dc', class: "native-wrapper", ref: (el) => (this.textareaWrapper = el) }, h("textarea", Object.assign({ key: '434da6f41cde5833cfe9cefd469ea54e8204e6a6', class: "native-textarea", ref: (el) => (this.nativeInput = el), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, minLength: this.minlength, maxLength: this.maxlength, name: this.name, placeholder: this.placeholder || '', readOnly: this.readonly, required: this.required, spellcheck: this.spellcheck, cols: this.cols, rows: this.rows, wrap: this.wrap, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeyDown }, this.inheritedAttributes), value)), h("div", { key: 'ea8d0e2fc46aa2565c9ca075bd5813b79b090942', class: "end-slot-wrapper" }, h("slot", { key: '5b0924fcf975858005da294df8cabc46d5d0c751', name: "end" }))), shouldRenderHighlight && h("div", { class: "textarea-highlight" })), this.renderBottomContent()));
372
373
  }
373
374
  static get is() { return "ion-textarea"; }
374
375
  static get encapsulation() { return "scoped"; }
375
376
  static get originalStyleUrls() {
376
377
  return {
377
378
  "ios": ["textarea.ios.scss"],
378
- "md": ["textarea.md.scss"]
379
+ "md": ["textarea.md.scss"],
380
+ "ionic": ["textarea.md.scss"]
379
381
  };
380
382
  }
381
383
  static get styleUrls() {
382
384
  return {
383
385
  "ios": ["textarea.ios.css"],
384
- "md": ["textarea.md.css"]
386
+ "md": ["textarea.md.css"],
387
+ "ionic": ["textarea.md.css"]
385
388
  };
386
389
  }
387
390
  static get properties() {
@@ -510,7 +513,7 @@ export class Textarea {
510
513
  "optional": true,
511
514
  "docs": {
512
515
  "tags": [],
513
- "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."
516
+ "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\"`."
514
517
  },
515
518
  "attribute": "fill",
516
519
  "reflect": false
@@ -2,10 +2,17 @@
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
4
  import { Host, h } from "@stencil/core";
5
- import { getIonMode } from "../../global/ionic-global";
5
+ import { getIonTheme } from "../../global/ionic-global";
6
+ /**
7
+ * @virtualProp {"ios" | "md"} mode - The mode determines the platform behaviors of the component.
8
+ * @virtualProp {"ios" | "md" | "ionic"} theme - The theme determines the visual appearance of the component.
9
+ */
6
10
  export class Thumbnail {
7
11
  render() {
8
- return (h(Host, { key: 'b1fe245cf42f0462336519d07afd6c91eef388cf', class: getIonMode(this) }, h("slot", { key: '5e0f575864fcd9ae03ec8f5f7eb915efcf568337' })));
12
+ const theme = getIonTheme(this);
13
+ return (h(Host, { key: '6fefc1480c867df5356d30a82f264b46187ae42a', class: {
14
+ [theme]: true,
15
+ } }, h("slot", { key: '6b9c3f5ea26f9232659be03e127a050bc54c0f7d' })));
9
16
  }
10
17
  static get is() { return "ion-thumbnail"; }
11
18
  static get encapsulation() { return "shadow"; }
@@ -3,7 +3,11 @@
3
3
  */
4
4
  import { Host, h } from "@stencil/core";
5
5
  import { createColorClasses } from "../../utils/theme";
6
- import { getIonMode } from "../../global/ionic-global";
6
+ import { getIonTheme } from "../../global/ionic-global";
7
+ /**
8
+ * @virtualProp {"ios" | "md"} mode - The mode determines the platform behaviors of the component.
9
+ * @virtualProp {"ios" | "md" | "ionic"} theme - The theme determines the visual appearance of the component.
10
+ */
7
11
  export class ToolbarTitle {
8
12
  constructor() {
9
13
  this.color = undefined;
@@ -25,26 +29,28 @@ export class ToolbarTitle {
25
29
  return this.size !== undefined ? this.size : 'default';
26
30
  }
27
31
  render() {
28
- const mode = getIonMode(this);
32
+ const theme = getIonTheme(this);
29
33
  const size = this.getSize();
30
- return (h(Host, { key: '4e7a269caceb9cf7a71c3ba5dc15903a72203132', class: createColorClasses(this.color, {
31
- [mode]: true,
34
+ return (h(Host, { key: 'c91cf5a67925ad559db86d1b70c1623bdf78103e', class: createColorClasses(this.color, {
35
+ [theme]: true,
32
36
  [`title-${size}`]: true,
33
37
  'title-rtl': document.dir === 'rtl',
34
- }) }, h("div", { key: 'e42d43e85a57a2ac16579021df43ade524f1d9bf', class: "toolbar-title" }, h("slot", { key: '2319bcfdb2b79eec9c03db84bea2a9f133cc8576' }))));
38
+ }) }, h("div", { key: '6417cbb5210735a8ef10cac63787ee2b0b0fcf58', class: "toolbar-title" }, h("slot", { key: '1e1787d82734bcd1e195767d535c8e5310af3cfb' }))));
35
39
  }
36
40
  static get is() { return "ion-title"; }
37
41
  static get encapsulation() { return "shadow"; }
38
42
  static get originalStyleUrls() {
39
43
  return {
40
44
  "ios": ["title.ios.scss"],
41
- "md": ["title.md.scss"]
45
+ "md": ["title.md.scss"],
46
+ "ionic": ["title.md.scss"]
42
47
  };
43
48
  }
44
49
  static get styleUrls() {
45
50
  return {
46
51
  "ios": ["title.ios.css"],
47
- "md": ["title.md.css"]
52
+ "md": ["title.md.css"],
53
+ "ionic": ["title.md.css"]
48
54
  };
49
55
  }
50
56
  static get properties() {
@@ -17,7 +17,7 @@ import { printIonWarning } from "../../../utils/logging/index";
17
17
  * @param position The value of the toast's position prop.
18
18
  * @param positionAnchor The element the toast should be anchored to,
19
19
  * if applicable.
20
- * @param mode The toast component's mode (md, ios, etc).
20
+ * @param mode The toast component's platform (md or ios).
21
21
  * @param toast A reference to the toast element itself.
22
22
  */
23
23
  export function getAnimationPosition(position, positionAnchor, mode, toast) {
@@ -10,7 +10,7 @@ import { GESTURE, createDelegateController, createTriggerController, dismiss, ev
10
10
  import { sanitizeDOMString } from "../../utils/sanitization/index";
11
11
  import { createColorClasses, getClassMap } from "../../utils/theme";
12
12
  import { config } from "../../global/config";
13
- import { getIonMode } from "../../global/ionic-global";
13
+ import { getIonMode, getIonTheme } from "../../global/ionic-global";
14
14
  import { iosEnterAnimation } from "./animations/ios.enter";
15
15
  import { iosLeaveAnimation } from "./animations/ios.leave";
16
16
  import { mdEnterAnimation } from "./animations/md.enter";
@@ -19,7 +19,8 @@ import { getAnimationPosition } from "./animations/utils";
19
19
  import { createSwipeToDismissGesture } from "./gestures/swipe-to-dismiss";
20
20
  // TODO(FW-2832): types
21
21
  /**
22
- * @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
22
+ * @virtualProp {"ios" | "md"} mode - The mode determines the platform behaviors of the component.
23
+ * @virtualProp {"ios" | "md" | "ionic"} theme - The theme determines the visual appearance of the component.
23
24
  *
24
25
  * @part button - Any button element that is displayed inside of the toast.
25
26
  * @part button cancel - Any button element with role "cancel" that is displayed inside of the toast.
@@ -175,11 +176,12 @@ export class Toast {
175
176
  * Present the toast overlay after it has been created.
176
177
  */
177
178
  async present() {
179
+ const mode = getIonMode(this);
178
180
  const unlock = await this.lockController.lock();
179
181
  await this.delegateController.attachViewToDom();
180
182
  const { el, position } = this;
181
183
  const anchor = this.getAnchorElement();
182
- const animationPosition = getAnimationPosition(position, anchor, getIonMode(this), el);
184
+ const animationPosition = getAnimationPosition(position, anchor, mode, el);
183
185
  /**
184
186
  * Cache the calculated position of the toast, so we can re-use it
185
187
  * in the dismiss animation.
@@ -343,12 +345,12 @@ export class Toast {
343
345
  if (buttons.length === 0) {
344
346
  return;
345
347
  }
346
- const mode = getIonMode(this);
348
+ const theme = getIonTheme(this);
347
349
  const buttonGroupsClasses = {
348
350
  'toast-button-group': true,
349
351
  [`toast-button-group-${side}`]: true,
350
352
  };
351
- return (h("div", { class: buttonGroupsClasses }, buttons.map((b) => (h("button", Object.assign({}, b.htmlAttributes, { type: "button", class: buttonClass(b), tabIndex: 0, onClick: () => this.buttonClick(b), part: buttonPart(b) }), h("div", { class: "toast-button-inner" }, b.icon && (h("ion-icon", { "aria-hidden": "true", icon: b.icon, slot: b.text === undefined ? 'icon-only' : undefined, class: "toast-button-icon" })), b.text), mode === 'md' && (h("ion-ripple-effect", { type: b.icon !== undefined && b.text === undefined ? 'unbounded' : 'bounded' })))))));
353
+ return (h("div", { class: buttonGroupsClasses }, buttons.map((b) => (h("button", Object.assign({}, b.htmlAttributes, { type: "button", class: buttonClass(b), tabIndex: 0, onClick: () => this.buttonClick(b), part: buttonPart(b) }), h("div", { class: "toast-button-inner" }, b.icon && (h("ion-icon", { "aria-hidden": "true", icon: b.icon, slot: b.text === undefined ? 'icon-only' : undefined, class: "toast-button-icon" })), b.text), theme === 'md' && (h("ion-ripple-effect", { type: b.icon !== undefined && b.text === undefined ? 'unbounded' : 'bounded' })))))));
352
354
  }
353
355
  /**
354
356
  * Render the `message` property.
@@ -375,7 +377,7 @@ export class Toast {
375
377
  const allButtons = this.getButtons();
376
378
  const startButtons = allButtons.filter((b) => b.side === 'start');
377
379
  const endButtons = allButtons.filter((b) => b.side !== 'start');
378
- const mode = getIonMode(this);
380
+ const theme = getIonTheme(this);
379
381
  const wrapperClass = {
380
382
  'toast-wrapper': true,
381
383
  [`toast-${this.position}`]: true,
@@ -388,22 +390,24 @@ export class Toast {
388
390
  if (layout === 'stacked' && startButtons.length > 0 && endButtons.length > 0) {
389
391
  printIonWarning('This toast is using start and end buttons with the stacked toast layout. We recommend following the best practice of using either start or end buttons with the stacked toast layout.', el);
390
392
  }
391
- return (h(Host, Object.assign({ key: 'ebab697ab245b8ffe7163c59ee059d143242845a', tabindex: "-1" }, this.htmlAttributes, { style: {
393
+ return (h(Host, Object.assign({ key: '61ff00b35f1d50b1dc8d6bd76029f9da43ad267f', tabindex: "-1" }, this.htmlAttributes, { style: {
392
394
  zIndex: `${60000 + this.overlayIndex}`,
393
- }, class: createColorClasses(this.color, Object.assign(Object.assign({ [mode]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'toast-translucent': this.translucent })), onIonToastWillDismiss: this.dispatchCancelHandler }), h("div", { key: '94d1bcbb17cb4ed81ec67d63ccf61822fedbed94', class: wrapperClass }, h("div", { key: 'd10a99dcdf94d70003b70dea7d965c05baefa934', class: "toast-container", part: "container" }, this.renderButtons(startButtons, 'start'), this.icon !== undefined && (h("ion-icon", { class: "toast-icon", part: "icon", icon: this.icon, lazy: false, "aria-hidden": "true" })), h("div", { key: '6475020a6890eb79bb37638c0ad0267f1cbf89fb', class: "toast-content", role: "status", "aria-atomic": "true", "aria-live": "polite" }, !revealContentToScreenReader && header !== undefined && this.renderHeader('oldHeader', 'true'), !revealContentToScreenReader && message !== undefined && this.renderToastMessage('oldMessage', 'true'), revealContentToScreenReader && header !== undefined && this.renderHeader('header'), revealContentToScreenReader && message !== undefined && this.renderToastMessage('header')), this.renderButtons(endButtons, 'end')))));
395
+ }, class: createColorClasses(this.color, Object.assign(Object.assign({ [theme]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'toast-translucent': this.translucent })), onIonToastWillDismiss: this.dispatchCancelHandler }), h("div", { key: 'd10db4d59d1c65654796d778eaa206b4c8f8816d', class: wrapperClass }, h("div", { key: '3e565de041d1904a49bf1533137ef60b1efa270a', class: "toast-container", part: "container" }, this.renderButtons(startButtons, 'start'), this.icon !== undefined && (h("ion-icon", { class: "toast-icon", part: "icon", icon: this.icon, lazy: false, "aria-hidden": "true" })), h("div", { key: 'c7196926c58c075f5a825856641661d6c88ba591', class: "toast-content", role: "status", "aria-atomic": "true", "aria-live": "polite" }, !revealContentToScreenReader && header !== undefined && this.renderHeader('oldHeader', 'true'), !revealContentToScreenReader && message !== undefined && this.renderToastMessage('oldMessage', 'true'), revealContentToScreenReader && header !== undefined && this.renderHeader('header'), revealContentToScreenReader && message !== undefined && this.renderToastMessage('header')), this.renderButtons(endButtons, 'end')))));
394
396
  }
395
397
  static get is() { return "ion-toast"; }
396
398
  static get encapsulation() { return "shadow"; }
397
399
  static get originalStyleUrls() {
398
400
  return {
399
401
  "ios": ["toast.ios.scss"],
400
- "md": ["toast.md.scss"]
402
+ "md": ["toast.md.scss"],
403
+ "ionic": ["toast.md.scss"]
401
404
  };
402
405
  }
403
406
  static get styleUrls() {
404
407
  return {
405
408
  "ios": ["toast.ios.css"],
406
- "md": ["toast.md.css"]
409
+ "md": ["toast.md.css"],
410
+ "ionic": ["toast.md.css"]
407
411
  };
408
412
  }
409
413
  static get properties() {
@@ -734,7 +738,7 @@ export class Toast {
734
738
  "optional": false,
735
739
  "docs": {
736
740
  "tags": [],
737
- "text": "If `true`, the toast will be translucent.\nOnly applies when the mode is `\"ios\"` and the device supports\n[`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility)."
741
+ "text": "If `true`, the toast will be translucent.\nOnly applies when the theme is `\"ios\"` and the device supports\n[`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility)."
738
742
  },
739
743
  "attribute": "translucent",
740
744
  "reflect": false,
@@ -8,9 +8,10 @@ import { isRTL } from "../../utils/rtl/index";
8
8
  import { createColorClasses, hostContext } from "../../utils/theme";
9
9
  import { checkmarkOutline, removeOutline, ellipseOutline } from "ionicons/icons";
10
10
  import { config } from "../../global/config";
11
- import { getIonMode } from "../../global/ionic-global";
11
+ import { getIonTheme } from "../../global/ionic-global";
12
12
  /**
13
- * @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
13
+ * @virtualProp {"ios" | "md"} mode - The mode determines the platform behaviors of the component.
14
+ * @virtualProp {"ios" | "md" | "ionic"} theme - The theme determines the visual appearance of the component.
14
15
  *
15
16
  * @slot - The label text to associate with the toggle. Use the "labelPlacement" property to control where the label is placed relative to the toggle.
16
17
  *
@@ -55,8 +56,8 @@ export class Toggle {
55
56
  this.onBlur = () => {
56
57
  this.ionBlur.emit();
57
58
  };
58
- this.getSwitchLabelIcon = (mode, checked) => {
59
- if (mode === 'md') {
59
+ this.getSwitchLabelIcon = (theme, checked) => {
60
+ if (theme === 'md') {
60
61
  return checked ? checkmarkOutline : removeOutline;
61
62
  }
62
63
  return checked ? removeOutline : ellipseOutline;
@@ -135,30 +136,30 @@ export class Toggle {
135
136
  this.focusEl.focus();
136
137
  }
137
138
  }
138
- renderOnOffSwitchLabels(mode, checked) {
139
- const icon = this.getSwitchLabelIcon(mode, checked);
139
+ renderOnOffSwitchLabels(theme, checked) {
140
+ const icon = this.getSwitchLabelIcon(theme, checked);
140
141
  return (h("ion-icon", { class: {
141
142
  'toggle-switch-icon': true,
142
143
  'toggle-switch-icon-checked': checked,
143
144
  }, icon: icon, "aria-hidden": "true" }));
144
145
  }
145
146
  renderToggleControl() {
146
- const mode = getIonMode(this);
147
+ const theme = getIonTheme(this);
147
148
  const { enableOnOffLabels, checked } = this;
148
149
  return (h("div", { class: "toggle-icon", part: "track", ref: (el) => (this.toggleTrack = el) }, enableOnOffLabels &&
149
- mode === 'ios' && [this.renderOnOffSwitchLabels(mode, true), this.renderOnOffSwitchLabels(mode, false)], h("div", { class: "toggle-icon-wrapper" }, h("div", { class: "toggle-inner", part: "handle" }, enableOnOffLabels && mode === 'md' && this.renderOnOffSwitchLabels(mode, checked)))));
150
+ theme === 'ios' && [this.renderOnOffSwitchLabels(theme, true), this.renderOnOffSwitchLabels(theme, false)], h("div", { class: "toggle-icon-wrapper" }, h("div", { class: "toggle-inner", part: "handle" }, enableOnOffLabels && theme === 'md' && this.renderOnOffSwitchLabels(theme, checked)))));
150
151
  }
151
152
  get hasLabel() {
152
153
  return this.el.textContent !== '';
153
154
  }
154
155
  render() {
155
156
  const { activated, color, checked, disabled, el, justify, labelPlacement, inputId, name, alignment } = this;
156
- const mode = getIonMode(this);
157
+ const theme = getIonTheme(this);
157
158
  const value = this.getValue();
158
159
  const rtl = isRTL(el) ? 'rtl' : 'ltr';
159
160
  renderHiddenInput(true, el, name, checked ? value : '', disabled);
160
- return (h(Host, { key: '9ea705862e0a6c8c3250d19d6487ba5a312557f4', onClick: this.onClick, class: createColorClasses(color, {
161
- [mode]: true,
161
+ return (h(Host, { key: 'cdedec897515f4886941e1b1a5b399daab7a12a5', onClick: this.onClick, class: createColorClasses(color, {
162
+ [theme]: true,
162
163
  'in-item': hostContext('ion-item', el),
163
164
  'toggle-activated': activated,
164
165
  'toggle-checked': checked,
@@ -167,23 +168,25 @@ export class Toggle {
167
168
  [`toggle-alignment-${alignment}`]: true,
168
169
  [`toggle-label-placement-${labelPlacement}`]: true,
169
170
  [`toggle-${rtl}`]: true,
170
- }) }, h("label", { key: '6347141bd48c42c10f358bdf95ee5c3e9719f7e7', class: "toggle-wrapper" }, h("input", Object.assign({ key: 'a81935c322ccdec55723986bc69556833e057b7b', type: "checkbox", role: "switch", "aria-checked": `${checked}`, checked: checked, disabled: disabled, id: inputId, onFocus: () => this.onFocus(), onBlur: () => this.onBlur(), ref: (focusEl) => (this.focusEl = focusEl) }, this.inheritedAttributes)), h("div", { key: '0ab294895807335c63c9a31685d861a9f75f0129', class: {
171
+ }) }, h("label", { key: '638e45188e2f7ce2f55a7b5198e2d4bc7dea6059', class: "toggle-wrapper" }, h("input", Object.assign({ key: 'de5111280d7fcbe9d4fb9806f64d92aeb3866e69', type: "checkbox", role: "switch", "aria-checked": `${checked}`, checked: checked, disabled: disabled, id: inputId, onFocus: () => this.onFocus(), onBlur: () => this.onBlur(), ref: (focusEl) => (this.focusEl = focusEl) }, this.inheritedAttributes)), h("div", { key: '33da5d9383db0d4b9609c57325940ad1663a06ff', class: {
171
172
  'label-text-wrapper': true,
172
173
  'label-text-wrapper-hidden': !this.hasLabel,
173
- }, part: "label" }, h("slot", { key: '918de14911b5c1453ac1b817a92614d80fe81082' })), h("div", { key: 'f7f8b23c1de4eacdf912034286d51d88dde09699', class: "native-wrapper" }, this.renderToggleControl()))));
174
+ }, part: "label" }, h("slot", { key: '06eeabe77eeeddd43cd214c857841f0e3306b058' })), h("div", { key: 'f1c38e2678a9181558eb01f41f0db5fe9d47e4f9', class: "native-wrapper" }, this.renderToggleControl()))));
174
175
  }
175
176
  static get is() { return "ion-toggle"; }
176
177
  static get encapsulation() { return "shadow"; }
177
178
  static get originalStyleUrls() {
178
179
  return {
179
180
  "ios": ["toggle.ios.scss"],
180
- "md": ["toggle.md.scss"]
181
+ "md": ["toggle.md.scss"],
182
+ "ionic": ["toggle.md.scss"]
181
183
  };
182
184
  }
183
185
  static get styleUrls() {
184
186
  return {
185
187
  "ios": ["toggle.ios.css"],
186
- "md": ["toggle.md.css"]
188
+ "md": ["toggle.md.css"],
189
+ "ionic": ["toggle.md.css"]
187
190
  };
188
191
  }
189
192
  static get properties() {
@@ -3,14 +3,15 @@
3
3
  */
4
4
  import { Host, forceUpdate, h } from "@stencil/core";
5
5
  import { createColorClasses, hostContext } from "../../utils/theme";
6
- import { getIonMode } from "../../global/ionic-global";
6
+ import { getIonTheme } from "../../global/ionic-global";
7
7
  /**
8
- * @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
8
+ * @virtualProp {"ios" | "md"} mode - The mode determines the platform behaviors of the component.
9
+ * @virtualProp {"ios" | "md" | "ionic"} theme - The theme determines the visual appearance of the component.
9
10
  *
10
11
  * @slot - Content is placed between the named slots if provided without a slot.
11
12
  * @slot start - Content is placed to the left of the toolbar text in LTR, and to the right in RTL.
12
- * @slot secondary - Content is placed to the left of the toolbar text in `ios` mode, and directly to the right in `md` mode.
13
- * @slot primary - Content is placed to the right of the toolbar text in `ios` mode, and to the far right in `md` mode.
13
+ * @slot secondary - Content is placed to the left of the toolbar text in the `"ios"` theme, and directly to the right in the `"md"` theme.
14
+ * @slot primary - Content is placed to the right of the toolbar text in the `"ios"` theme, and to the far right in the `"md"` theme.
14
15
  * @slot end - Content is placed to the right of the toolbar text in LTR, and to the left in RTL.
15
16
  */
16
17
  export class Toolbar {
@@ -57,28 +58,30 @@ export class Toolbar {
57
58
  }
58
59
  }
59
60
  render() {
60
- const mode = getIonMode(this);
61
+ const theme = getIonTheme(this);
61
62
  const childStyles = {};
62
63
  this.childrenStyles.forEach((value) => {
63
64
  Object.assign(childStyles, value);
64
65
  });
65
- return (h(Host, { key: 'f11da98ce3398f95930cd6f5b95783a5b658e206', class: Object.assign(Object.assign({}, childStyles), createColorClasses(this.color, {
66
- [mode]: true,
66
+ return (h(Host, { key: '2711e902335d342681ab2177306394bdf7c58a92', class: Object.assign(Object.assign({}, childStyles), createColorClasses(this.color, {
67
+ [theme]: true,
67
68
  'in-toolbar': hostContext('ion-toolbar', this.el),
68
- })) }, h("div", { key: '2e473c8bebf448f411ec1a579f0c81eb05310c56', class: "toolbar-background" }), h("div", { key: 'cf2d7c69bc028410338942aaea37527c570ccec5', class: "toolbar-container" }, h("slot", { key: '445cbd5299188eef4761c605b4a8d20a61079590', name: "start" }), h("slot", { key: '77675b5c0c0afffe5251ba271f5db23f87339859', name: "secondary" }), h("div", { key: '7d5967c4ad6c0fca7573aa48da707c8b0dfcd052', class: "toolbar-content" }, h("slot", { key: 'ad5530d63df9ca101760fb9f71e3641c66e95b6c' })), h("slot", { key: '35837ac1b7a4a59f000149d480900bc19015b258', name: "primary" }), h("slot", { key: '504904cf46e2190dd0a3aa5b7855b5fc54f73726', name: "end" }))));
69
+ })) }, h("div", { key: '91cc5f10fc55306440c9166ace3b6f3fe7693c88', class: "toolbar-background" }), h("div", { key: 'd992f91b1b06b7562622efa724f78155e1054876', class: "toolbar-container" }, h("slot", { key: 'cc31b508759b647b8b3b45b975511dcc114308f2', name: "start" }), h("slot", { key: '603dde2505ee9707b5dec2365b620bd812992a80', name: "secondary" }), h("div", { key: 'd8d488d7e80d228177d2b395bb7412144d7c463d', class: "toolbar-content" }, h("slot", { key: '6be987bbafe3ee476dd87ac15f20dc6f26bb20c0' })), h("slot", { key: 'da160d1e71ae7639290a3ce98c4d2998ab42fc6d', name: "primary" }), h("slot", { key: 'f6d25957e4d60e306031fa9b248448c9bdba9479', name: "end" }))));
69
70
  }
70
71
  static get is() { return "ion-toolbar"; }
71
72
  static get encapsulation() { return "shadow"; }
72
73
  static get originalStyleUrls() {
73
74
  return {
74
75
  "ios": ["toolbar.ios.scss"],
75
- "md": ["toolbar.md.scss"]
76
+ "md": ["toolbar.md.scss"],
77
+ "ionic": ["toolbar.md.scss"]
76
78
  };
77
79
  }
78
80
  static get styleUrls() {
79
81
  return {
80
82
  "ios": ["toolbar.ios.css"],
81
- "md": ["toolbar.md.css"]
83
+ "md": ["toolbar.md.css"],
84
+ "ionic": ["toolbar.md.css"]
82
85
  };
83
86
  }
84
87
  static get properties() {
@@ -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;