@ionic/core 8.0.0-beta.3 → 8.0.0-beta.4

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 (559) hide show
  1. package/components/animation.js +9 -250
  2. package/components/button.js +18 -5
  3. package/components/haptic.js +6 -54
  4. package/components/helpers.js +1 -4
  5. package/components/index7.js +3 -1
  6. package/components/index9.js +5 -34
  7. package/components/ion-input-password-toggle.d.ts +11 -0
  8. package/components/ion-input-password-toggle.js +132 -0
  9. package/components/ion-input.js +27 -8
  10. package/components/ion-item-divider.js +2 -2
  11. package/components/ion-item-group.js +1 -1
  12. package/components/ion-item-option.js +2 -2
  13. package/components/ion-item-options.js +1 -1
  14. package/components/ion-item-sliding.js +1 -1
  15. package/components/ion-loading.js +2 -2
  16. package/components/ion-menu-button.js +3 -3
  17. package/components/ion-menu-toggle.js +2 -2
  18. package/components/ion-menu.js +2 -2
  19. package/components/ion-modal.js +3 -3
  20. package/components/ion-nav-link.js +1 -1
  21. package/components/ion-nav.js +1 -1
  22. package/components/ion-note.js +2 -2
  23. package/components/ion-picker-legacy.js +2 -2
  24. package/components/ion-progress-bar.js +1 -1
  25. package/components/ion-range.js +3 -3
  26. package/components/ion-refresher-content.js +2 -2
  27. package/components/ion-refresher.js +1 -1
  28. package/components/ion-reorder-group.js +1 -1
  29. package/components/ion-reorder.js +2 -2
  30. package/components/ion-router-link.js +2 -2
  31. package/components/ion-router-outlet.js +1 -1
  32. package/components/ion-row.js +1 -1
  33. package/components/ion-searchbar.js +7 -7
  34. package/components/ion-segment-button.js +3 -3
  35. package/components/ion-segment.js +2 -2
  36. package/components/ion-select-option.js +1 -1
  37. package/components/ion-select.js +3 -3
  38. package/components/ion-skeleton-text.js +2 -2
  39. package/components/ion-split-pane.js +2 -2
  40. package/components/ion-tab-bar.js +2 -2
  41. package/components/ion-tab-button.js +2 -2
  42. package/components/ion-tab.js +2 -2
  43. package/components/ion-tabs.js +1 -1
  44. package/components/ion-text.js +2 -2
  45. package/components/ion-textarea.js +2 -3
  46. package/components/ion-thumbnail.js +1 -1
  47. package/components/ion-title.js +2 -2
  48. package/components/ion-toast.js +2 -2
  49. package/components/ion-toggle.js +4 -4
  50. package/components/ion-toolbar.js +2 -2
  51. package/components/label.js +2 -2
  52. package/components/list-header.js +2 -2
  53. package/components/list.js +1 -1
  54. package/components/picker-column-option.js +2 -2
  55. package/components/picker-column2.js +2 -2
  56. package/components/popover.js +2 -2
  57. package/components/radio-group.js +1 -1
  58. package/components/radio.js +3 -3
  59. package/components/ripple-effect.js +1 -1
  60. package/components/select-popover.js +1 -1
  61. package/components/spinner.js +1 -1
  62. package/dist/cjs/{animation-58ecfe20.js → animation-b4fdf128.js} +9 -250
  63. package/dist/cjs/{app-globals-e132c781.js → app-globals-63aebf89.js} +1 -1
  64. package/dist/cjs/{button-active-60ecf64d.js → button-active-bd13859e.js} +2 -2
  65. package/dist/cjs/{framework-delegate-df3a2b04.js → framework-delegate-55f5683a.js} +1 -1
  66. package/dist/cjs/{haptic-b882e0bb.js → haptic-f6b37aa3.js} +6 -54
  67. package/dist/cjs/{hardware-back-button-1c67a5a2.js → hardware-back-button-ad9299b4.js} +2 -2
  68. package/dist/cjs/{helpers-71097d9c.js → helpers-afaa9001.js} +0 -4
  69. package/dist/cjs/{index-f52c6d38.js → index-073c7cdc.js} +4 -0
  70. package/dist/cjs/{index-7479ea5a.js → index-5b6a7459.js} +1 -1
  71. package/dist/cjs/{index-289297dc.js → index-5cf05f94.js} +4 -4
  72. package/dist/cjs/{index-a91a3e24.js → index-9509ecad.js} +5 -34
  73. package/dist/cjs/{index-2d21d526.js → index-af6d0fbb.js} +16 -4
  74. package/dist/cjs/{index-14ae0c27.js → index-ff66cc7c.js} +4 -4
  75. package/dist/cjs/index.cjs.js +11 -11
  76. package/dist/cjs/{input-shims-77b14f24.js → input-shims-20d639e6.js} +2 -2
  77. package/dist/cjs/{input.utils-ca74d73a.js → input.utils-611cde0b.js} +1 -1
  78. package/dist/cjs/ion-accordion_2.cjs.entry.js +4 -4
  79. package/dist/cjs/ion-action-sheet.cjs.entry.js +9 -9
  80. package/dist/cjs/ion-alert.cjs.entry.js +9 -9
  81. package/dist/cjs/ion-app_8.cjs.entry.js +17 -17
  82. package/dist/cjs/ion-avatar_3.cjs.entry.js +3 -3
  83. package/dist/cjs/ion-back-button.cjs.entry.js +4 -4
  84. package/dist/cjs/ion-backdrop.cjs.entry.js +2 -2
  85. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +4 -4
  86. package/dist/cjs/ion-button_2.cjs.entry.js +19 -7
  87. package/dist/cjs/ion-card_5.cjs.entry.js +3 -3
  88. package/dist/cjs/ion-checkbox.cjs.entry.js +3 -3
  89. package/dist/cjs/ion-chip.cjs.entry.js +2 -2
  90. package/dist/cjs/ion-col_3.cjs.entry.js +3 -3
  91. package/dist/cjs/ion-datetime-button.cjs.entry.js +3 -3
  92. package/dist/cjs/ion-datetime_3.cjs.entry.js +13 -13
  93. package/dist/cjs/ion-fab_3.cjs.entry.js +4 -4
  94. package/dist/cjs/ion-img.cjs.entry.js +3 -3
  95. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +4 -4
  96. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +93 -0
  97. package/dist/cjs/ion-input.cjs.entry.js +30 -12
  98. package/dist/cjs/ion-item-option_3.cjs.entry.js +8 -8
  99. package/dist/cjs/ion-item_8.cjs.entry.js +16 -16
  100. package/dist/cjs/ion-loading.cjs.entry.js +9 -9
  101. package/dist/cjs/ion-menu_3.cjs.entry.js +15 -15
  102. package/dist/cjs/ion-modal.cjs.entry.js +12 -12
  103. package/dist/cjs/ion-nav_2.cjs.entry.js +8 -8
  104. package/dist/cjs/ion-picker-column-option.cjs.entry.js +5 -5
  105. package/dist/cjs/ion-picker-column.cjs.entry.js +4 -4
  106. package/dist/cjs/ion-picker.cjs.entry.js +2 -2
  107. package/dist/cjs/ion-popover.cjs.entry.js +10 -10
  108. package/dist/cjs/ion-progress-bar.cjs.entry.js +4 -4
  109. package/dist/cjs/ion-radio_2.cjs.entry.js +7 -7
  110. package/dist/cjs/ion-range.cjs.entry.js +7 -7
  111. package/dist/cjs/ion-refresher_2.cjs.entry.js +9 -9
  112. package/dist/cjs/ion-reorder_2.cjs.entry.js +8 -8
  113. package/dist/cjs/ion-ripple-effect.cjs.entry.js +3 -3
  114. package/dist/cjs/ion-route_4.cjs.entry.js +5 -5
  115. package/dist/cjs/ion-searchbar.cjs.entry.js +10 -10
  116. package/dist/cjs/ion-segment_2.cjs.entry.js +8 -8
  117. package/dist/cjs/ion-select_3.cjs.entry.js +12 -12
  118. package/dist/cjs/ion-spinner.cjs.entry.js +3 -3
  119. package/dist/cjs/ion-split-pane.cjs.entry.js +4 -4
  120. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +7 -7
  121. package/dist/cjs/ion-tab_2.cjs.entry.js +6 -6
  122. package/dist/cjs/ion-text.cjs.entry.js +4 -4
  123. package/dist/cjs/ion-textarea.cjs.entry.js +7 -8
  124. package/dist/cjs/ion-toast.cjs.entry.js +9 -9
  125. package/dist/cjs/ion-toggle.cjs.entry.js +8 -8
  126. package/dist/cjs/{ionic-global-5762eca9.js → ionic-global-1adf9bc4.js} +1 -1
  127. package/dist/cjs/ionic.cjs.js +5 -5
  128. package/dist/cjs/{ios.transition-8e0ca8ed.js → ios.transition-06673f18.js} +4 -4
  129. package/dist/cjs/loader.cjs.js +4 -4
  130. package/dist/cjs/{md.transition-5d0f134b.js → md.transition-4d7bb4b1.js} +4 -4
  131. package/dist/cjs/{notch-controller-0042ad49.js → notch-controller-d69150f5.js} +1 -1
  132. package/dist/cjs/{overlays-30b83581.js → overlays-6487955a.js} +4 -4
  133. package/dist/cjs/{status-tap-dc3b8fda.js → status-tap-0be20572.js} +3 -3
  134. package/dist/cjs/{swipe-back-29e88360.js → swipe-back-0303a5e4.js} +1 -1
  135. package/dist/collection/collection-manifest.json +3 -2
  136. package/dist/collection/components/button/button.ios.css +32 -10
  137. package/dist/collection/components/button/button.js +19 -2
  138. package/dist/collection/components/button/button.md.css +28 -13
  139. package/dist/collection/components/button/test/round/button.e2e.js +39 -4
  140. package/dist/collection/components/input/input.ios.css +9 -0
  141. package/dist/collection/components/input/input.js +27 -30
  142. package/dist/collection/components/input/input.md.css +9 -0
  143. package/dist/collection/components/input-password-toggle/input-password-toggle.css +0 -0
  144. package/dist/collection/components/input-password-toggle/input-password-toggle.js +183 -0
  145. package/dist/collection/components/input-password-toggle/test/a11y/input-password-toggle.e2e.js +21 -0
  146. package/dist/collection/components/input-password-toggle/test/basic/input-password-toggle.e2e.js +38 -0
  147. package/dist/collection/components/input-password-toggle/test/input-password-toggle.spec.js +76 -0
  148. package/dist/collection/components/item-divider/item-divider.js +2 -2
  149. package/dist/collection/components/item-group/item-group.js +1 -1
  150. package/dist/collection/components/item-option/item-option.js +2 -2
  151. package/dist/collection/components/item-options/item-options.js +1 -1
  152. package/dist/collection/components/item-sliding/item-sliding.js +1 -1
  153. package/dist/collection/components/label/label.js +2 -2
  154. package/dist/collection/components/list/list.js +1 -1
  155. package/dist/collection/components/list-header/list-header.js +2 -2
  156. package/dist/collection/components/loading/loading.js +2 -2
  157. package/dist/collection/components/menu/menu.js +2 -2
  158. package/dist/collection/components/menu-button/menu-button.js +2 -2
  159. package/dist/collection/components/menu-toggle/menu-toggle.js +2 -2
  160. package/dist/collection/components/modal/modal.js +3 -3
  161. package/dist/collection/components/nav/nav.js +1 -1
  162. package/dist/collection/components/nav-link/nav-link.js +1 -1
  163. package/dist/collection/components/note/note.js +2 -2
  164. package/dist/collection/components/picker-column-option/picker-column-option.js +2 -2
  165. package/dist/collection/components/picker-legacy/picker.js +2 -2
  166. package/dist/collection/components/picker-legacy-column/picker-column.js +2 -2
  167. package/dist/collection/components/popover/popover.js +2 -2
  168. package/dist/collection/components/progress-bar/progress-bar.js +1 -1
  169. package/dist/collection/components/radio/radio.js +3 -3
  170. package/dist/collection/components/radio-group/radio-group.js +1 -1
  171. package/dist/collection/components/range/range.js +3 -3
  172. package/dist/collection/components/refresher/refresher.js +1 -1
  173. package/dist/collection/components/refresher-content/refresher-content.js +1 -1
  174. package/dist/collection/components/reorder/reorder.js +1 -1
  175. package/dist/collection/components/reorder-group/reorder-group.js +1 -1
  176. package/dist/collection/components/ripple-effect/ripple-effect.js +1 -1
  177. package/dist/collection/components/router-link/router-link.js +2 -2
  178. package/dist/collection/components/router-outlet/router-outlet.js +1 -1
  179. package/dist/collection/components/row/row.js +1 -1
  180. package/dist/collection/components/searchbar/searchbar.js +10 -9
  181. package/dist/collection/components/segment/segment.js +2 -2
  182. package/dist/collection/components/segment-button/segment-button.js +3 -3
  183. package/dist/collection/components/select/select.js +2 -2
  184. package/dist/collection/components/select-option/select-option.js +1 -1
  185. package/dist/collection/components/select-popover/select-popover.js +1 -1
  186. package/dist/collection/components/skeleton-text/skeleton-text.js +2 -2
  187. package/dist/collection/components/spinner/spinner.js +1 -1
  188. package/dist/collection/components/split-pane/split-pane.js +2 -2
  189. package/dist/collection/components/tab/tab.js +2 -2
  190. package/dist/collection/components/tab-bar/tab-bar.js +2 -2
  191. package/dist/collection/components/tab-button/tab-button.js +2 -2
  192. package/dist/collection/components/tabs/tabs.js +1 -1
  193. package/dist/collection/components/text/text.js +2 -2
  194. package/dist/collection/components/textarea/textarea.js +2 -26
  195. package/dist/collection/components/thumbnail/thumbnail.js +1 -1
  196. package/dist/collection/components/title/title.js +2 -2
  197. package/dist/collection/components/toast/toast.js +2 -2
  198. package/dist/collection/components/toggle/toggle.js +3 -3
  199. package/dist/collection/components/toolbar/toolbar.js +2 -2
  200. package/dist/collection/utils/animation/animation-utils.js +0 -102
  201. package/dist/collection/utils/animation/animation.js +10 -141
  202. package/dist/collection/utils/animation/test/animation.spec.js +0 -89
  203. package/dist/collection/utils/animation/test/animationbuilder/animation.e2e.js +0 -4
  204. package/dist/collection/utils/animation/test/basic/animation.e2e.js +0 -4
  205. package/dist/collection/utils/animation/test/display/animation.e2e.js +0 -4
  206. package/dist/collection/utils/animation/test/hooks/animation.e2e.js +0 -4
  207. package/dist/collection/utils/animation/test/multiple/animation.e2e.js +0 -7
  208. package/dist/collection/utils/native/haptic.js +6 -54
  209. package/dist/collection/utils/tap-click/index.js +5 -34
  210. package/dist/docs.json +210 -35
  211. package/dist/esm/{animation-6a3c0abb.js → animation-eab5a4ca.js} +9 -250
  212. package/dist/esm/{app-globals-80842d68.js → app-globals-b8e5e7fa.js} +1 -1
  213. package/dist/esm/{button-active-c6e18fac.js → button-active-a411da52.js} +2 -2
  214. package/dist/esm/{framework-delegate-3dede018.js → framework-delegate-63d1a679.js} +1 -1
  215. package/dist/esm/{haptic-554688a5.js → haptic-ac164e4c.js} +6 -54
  216. package/dist/esm/{hardware-back-button-fb295e3a.js → hardware-back-button-329c81fd.js} +2 -2
  217. package/dist/esm/{helpers-eab4f597.js → helpers-da915de8.js} +1 -4
  218. package/dist/esm/{index-95a691d4.js → index-10916999.js} +4 -4
  219. package/dist/esm/{index-044b5a86.js → index-5cc724f3.js} +1 -1
  220. package/dist/esm/{index-5d6a0317.js → index-6e4709ff.js} +16 -4
  221. package/dist/esm/{index-fa221975.js → index-79b30591.js} +5 -34
  222. package/dist/esm/{index-f7dc70ba.js → index-e2cf2ceb.js} +3 -1
  223. package/dist/esm/{index-136e99c8.js → index-f1f5de26.js} +4 -4
  224. package/dist/esm/index.js +11 -11
  225. package/dist/esm/{input-shims-196afa11.js → input-shims-4530285e.js} +2 -2
  226. package/dist/esm/{input.utils-426cc674.js → input.utils-09c71bc7.js} +1 -1
  227. package/dist/esm/ion-accordion_2.entry.js +4 -4
  228. package/dist/esm/ion-action-sheet.entry.js +9 -9
  229. package/dist/esm/ion-alert.entry.js +9 -9
  230. package/dist/esm/ion-app_8.entry.js +17 -17
  231. package/dist/esm/ion-avatar_3.entry.js +3 -3
  232. package/dist/esm/ion-back-button.entry.js +4 -4
  233. package/dist/esm/ion-backdrop.entry.js +2 -2
  234. package/dist/esm/ion-breadcrumb_2.entry.js +4 -4
  235. package/dist/esm/ion-button_2.entry.js +19 -7
  236. package/dist/esm/ion-card_5.entry.js +3 -3
  237. package/dist/esm/ion-checkbox.entry.js +3 -3
  238. package/dist/esm/ion-chip.entry.js +2 -2
  239. package/dist/esm/ion-col_3.entry.js +3 -3
  240. package/dist/esm/ion-datetime-button.entry.js +3 -3
  241. package/dist/esm/ion-datetime_3.entry.js +13 -13
  242. package/dist/esm/ion-fab_3.entry.js +4 -4
  243. package/dist/esm/ion-img.entry.js +3 -3
  244. package/dist/esm/ion-infinite-scroll_2.entry.js +4 -4
  245. package/dist/esm/ion-input-password-toggle.entry.js +89 -0
  246. package/dist/esm/ion-input.entry.js +30 -12
  247. package/dist/esm/ion-item-option_3.entry.js +8 -8
  248. package/dist/esm/ion-item_8.entry.js +16 -16
  249. package/dist/esm/ion-loading.entry.js +9 -9
  250. package/dist/esm/ion-menu_3.entry.js +15 -15
  251. package/dist/esm/ion-modal.entry.js +12 -12
  252. package/dist/esm/ion-nav_2.entry.js +8 -8
  253. package/dist/esm/ion-picker-column-option.entry.js +5 -5
  254. package/dist/esm/ion-picker-column.entry.js +4 -4
  255. package/dist/esm/ion-picker.entry.js +2 -2
  256. package/dist/esm/ion-popover.entry.js +10 -10
  257. package/dist/esm/ion-progress-bar.entry.js +4 -4
  258. package/dist/esm/ion-radio_2.entry.js +7 -7
  259. package/dist/esm/ion-range.entry.js +7 -7
  260. package/dist/esm/ion-refresher_2.entry.js +9 -9
  261. package/dist/esm/ion-reorder_2.entry.js +8 -8
  262. package/dist/esm/ion-ripple-effect.entry.js +3 -3
  263. package/dist/esm/ion-route_4.entry.js +5 -5
  264. package/dist/esm/ion-searchbar.entry.js +10 -10
  265. package/dist/esm/ion-segment_2.entry.js +8 -8
  266. package/dist/esm/ion-select_3.entry.js +12 -12
  267. package/dist/esm/ion-spinner.entry.js +3 -3
  268. package/dist/esm/ion-split-pane.entry.js +4 -4
  269. package/dist/esm/ion-tab-bar_2.entry.js +7 -7
  270. package/dist/esm/ion-tab_2.entry.js +6 -6
  271. package/dist/esm/ion-text.entry.js +4 -4
  272. package/dist/esm/ion-textarea.entry.js +7 -8
  273. package/dist/esm/ion-toast.entry.js +9 -9
  274. package/dist/esm/ion-toggle.entry.js +8 -8
  275. package/dist/esm/{ionic-global-a589c12c.js → ionic-global-c4e0c089.js} +1 -1
  276. package/dist/esm/ionic.js +6 -6
  277. package/dist/esm/{ios.transition-d1c8eea2.js → ios.transition-8e181a7e.js} +4 -4
  278. package/dist/esm/loader.js +5 -5
  279. package/dist/esm/{md.transition-0d2de76d.js → md.transition-f1c3c737.js} +4 -4
  280. package/dist/esm/{notch-controller-cff691e5.js → notch-controller-55b09e11.js} +1 -1
  281. package/dist/esm/{overlays-d41f74ac.js → overlays-9472c98b.js} +4 -4
  282. package/dist/esm/{status-tap-45595148.js → status-tap-39da9160.js} +3 -3
  283. package/dist/esm/{swipe-back-57844616.js → swipe-back-e5394307.js} +1 -1
  284. package/dist/esm-es5/animation-eab5a4ca.js +4 -0
  285. package/dist/esm-es5/app-globals-b8e5e7fa.js +4 -0
  286. package/dist/esm-es5/{button-active-c6e18fac.js → button-active-a411da52.js} +1 -1
  287. package/dist/esm-es5/framework-delegate-63d1a679.js +4 -0
  288. package/dist/esm-es5/haptic-ac164e4c.js +4 -0
  289. package/dist/esm-es5/{hardware-back-button-fb295e3a.js → hardware-back-button-329c81fd.js} +1 -1
  290. package/dist/esm-es5/{helpers-eab4f597.js → helpers-da915de8.js} +1 -1
  291. package/dist/esm-es5/index-10916999.js +4 -0
  292. package/dist/esm-es5/{index-044b5a86.js → index-5cc724f3.js} +1 -1
  293. package/dist/esm-es5/index-6e4709ff.js +5 -0
  294. package/dist/esm-es5/index-79b30591.js +4 -0
  295. package/dist/esm-es5/{index-f7dc70ba.js → index-e2cf2ceb.js} +1 -1
  296. package/dist/esm-es5/{index-136e99c8.js → index-f1f5de26.js} +1 -1
  297. package/dist/esm-es5/index.js +1 -1
  298. package/dist/esm-es5/input-shims-4530285e.js +4 -0
  299. package/dist/esm-es5/{input.utils-426cc674.js → input.utils-09c71bc7.js} +1 -1
  300. package/dist/esm-es5/ion-accordion_2.entry.js +1 -1
  301. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  302. package/dist/esm-es5/ion-alert.entry.js +1 -1
  303. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  304. package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
  305. package/dist/esm-es5/ion-back-button.entry.js +1 -1
  306. package/dist/esm-es5/ion-backdrop.entry.js +1 -1
  307. package/dist/esm-es5/ion-breadcrumb_2.entry.js +1 -1
  308. package/dist/esm-es5/ion-button_2.entry.js +1 -1
  309. package/dist/esm-es5/ion-card_5.entry.js +1 -1
  310. package/dist/esm-es5/ion-checkbox.entry.js +1 -1
  311. package/dist/esm-es5/ion-chip.entry.js +1 -1
  312. package/dist/esm-es5/ion-col_3.entry.js +1 -1
  313. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  314. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  315. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  316. package/dist/esm-es5/ion-img.entry.js +1 -1
  317. package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
  318. package/dist/esm-es5/ion-input-password-toggle.entry.js +4 -0
  319. package/dist/esm-es5/ion-input.entry.js +1 -1
  320. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  321. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  322. package/dist/esm-es5/ion-loading.entry.js +1 -1
  323. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  324. package/dist/esm-es5/ion-modal.entry.js +1 -1
  325. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  326. package/dist/esm-es5/ion-picker-column-option.entry.js +1 -1
  327. package/dist/esm-es5/ion-picker-column.entry.js +1 -1
  328. package/dist/esm-es5/ion-picker.entry.js +1 -1
  329. package/dist/esm-es5/ion-popover.entry.js +1 -1
  330. package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
  331. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  332. package/dist/esm-es5/ion-range.entry.js +1 -1
  333. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  334. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  335. package/dist/esm-es5/ion-ripple-effect.entry.js +1 -1
  336. package/dist/esm-es5/ion-route_4.entry.js +1 -1
  337. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  338. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  339. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  340. package/dist/esm-es5/ion-spinner.entry.js +1 -1
  341. package/dist/esm-es5/ion-split-pane.entry.js +1 -1
  342. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  343. package/dist/esm-es5/ion-tab_2.entry.js +1 -1
  344. package/dist/esm-es5/ion-text.entry.js +1 -1
  345. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  346. package/dist/esm-es5/ion-toast.entry.js +1 -1
  347. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  348. package/dist/esm-es5/{ionic-global-a589c12c.js → ionic-global-c4e0c089.js} +1 -1
  349. package/dist/esm-es5/ionic.js +1 -1
  350. package/dist/esm-es5/{ios.transition-d1c8eea2.js → ios.transition-8e181a7e.js} +1 -1
  351. package/dist/esm-es5/loader.js +1 -1
  352. package/dist/esm-es5/md.transition-f1c3c737.js +4 -0
  353. package/dist/esm-es5/{notch-controller-cff691e5.js → notch-controller-55b09e11.js} +1 -1
  354. package/dist/esm-es5/{overlays-d41f74ac.js → overlays-9472c98b.js} +1 -1
  355. package/dist/esm-es5/{status-tap-45595148.js → status-tap-39da9160.js} +1 -1
  356. package/dist/esm-es5/{swipe-back-57844616.js → swipe-back-e5394307.js} +1 -1
  357. package/dist/html.html-data.json +86 -18
  358. package/dist/ionic/index.esm.js +1 -1
  359. package/dist/ionic/ionic.esm.js +1 -1
  360. package/dist/ionic/ionic.js +1 -1
  361. package/dist/ionic/{p-92b05b70.system.entry.js → p-04070329.system.entry.js} +1 -1
  362. package/dist/ionic/p-049fa018.system.entry.js +4 -0
  363. package/dist/ionic/{p-325c61a4.js → p-06e58c4e.js} +1 -1
  364. package/dist/ionic/{p-7adde43c.system.entry.js → p-07ae133d.system.entry.js} +1 -1
  365. package/dist/ionic/p-0aa4682e.entry.js +4 -0
  366. package/dist/ionic/{p-d286cfbe.system.entry.js → p-0bbb6edf.system.entry.js} +1 -1
  367. package/dist/ionic/{p-4a3055ef.system.js → p-0c06e09b.system.js} +1 -1
  368. package/dist/ionic/{p-d8090ce4.entry.js → p-0de546bb.entry.js} +1 -1
  369. package/dist/ionic/{p-2852c537.system.entry.js → p-0ebb1fe7.system.entry.js} +1 -1
  370. package/dist/ionic/p-0f2d99a6.entry.js +4 -0
  371. package/dist/ionic/{p-1685d81c.system.entry.js → p-100bedc4.system.entry.js} +1 -1
  372. package/dist/ionic/{p-91567c90.system.entry.js → p-105f7d62.system.entry.js} +1 -1
  373. package/dist/ionic/{p-185db19b.system.entry.js → p-1672c4fd.system.entry.js} +1 -1
  374. package/dist/ionic/{p-fb870c48.entry.js → p-17978fce.entry.js} +1 -1
  375. package/dist/ionic/{p-2cc2c631.system.js → p-19ea7bff.system.js} +1 -1
  376. package/dist/ionic/{p-29ef3b9b.entry.js → p-1b235142.entry.js} +1 -1
  377. package/dist/ionic/{p-fe35b5c0.entry.js → p-1cff9cad.entry.js} +1 -1
  378. package/dist/ionic/p-1e955a45.system.js +4 -0
  379. package/dist/ionic/p-1f9cdee2.entry.js +4 -0
  380. package/dist/ionic/p-23b89985.entry.js +4 -0
  381. package/dist/ionic/{p-07759435.system.js → p-25575222.system.js} +1 -1
  382. package/dist/ionic/{p-6d9f8fac.system.js → p-266fc56e.system.js} +1 -1
  383. package/dist/ionic/{p-3ae4a2a2.entry.js → p-2e12bda2.entry.js} +1 -1
  384. package/dist/ionic/{p-23838a94.system.entry.js → p-2f6cedaf.system.entry.js} +1 -1
  385. package/dist/ionic/{p-78b3da77.js → p-3040730e.js} +1 -1
  386. package/dist/ionic/{p-ebc5b98f.entry.js → p-3391d9a3.entry.js} +1 -1
  387. package/dist/ionic/{p-a600a3e3.js → p-34b11c24.js} +1 -1
  388. package/dist/ionic/{p-4d325220.system.entry.js → p-352f7037.system.entry.js} +1 -1
  389. package/dist/ionic/{p-d6b84d5a.system.entry.js → p-35722bba.system.entry.js} +1 -1
  390. package/dist/ionic/{p-2130b526.entry.js → p-35b9e842.entry.js} +1 -1
  391. package/dist/ionic/{p-668607c2.system.js → p-3ad285e3.system.js} +1 -1
  392. package/dist/ionic/{p-dd9168f3.entry.js → p-3c70b01b.entry.js} +1 -1
  393. package/dist/ionic/{p-c6f9f3eb.js → p-3cc276f4.js} +1 -1
  394. package/dist/ionic/{p-d0496c22.system.entry.js → p-3d6e882f.system.entry.js} +1 -1
  395. package/dist/ionic/{p-d8ffe61c.system.entry.js → p-3e3b34f7.system.entry.js} +1 -1
  396. package/dist/ionic/{p-f1d1524c.entry.js → p-3f70bfba.entry.js} +1 -1
  397. package/dist/ionic/{p-ebe45d27.system.entry.js → p-4196b2d1.system.entry.js} +1 -1
  398. package/dist/ionic/{p-9e6a5e3d.system.entry.js → p-43505ff8.system.entry.js} +1 -1
  399. package/dist/ionic/{p-a88b41d1.system.entry.js → p-4429fc97.system.entry.js} +2 -2
  400. package/dist/ionic/p-46111310.js +4 -0
  401. package/dist/ionic/p-46f407f0.system.js +4 -0
  402. package/dist/ionic/{p-7d29dff0.system.entry.js → p-49b6fee0.system.entry.js} +1 -1
  403. package/dist/ionic/{p-6a448415.entry.js → p-4a615fea.entry.js} +1 -1
  404. package/dist/ionic/p-4c2d5b80.system.js +4 -0
  405. package/dist/ionic/{p-f85a4df5.system.js → p-4dd82d9d.system.js} +1 -1
  406. package/dist/ionic/{p-6a62da36.system.js → p-5033128d.system.js} +2 -2
  407. package/dist/ionic/{p-17ee2784.system.entry.js → p-510578f3.system.entry.js} +1 -1
  408. package/dist/ionic/{p-40976b1c.system.entry.js → p-51b68ec9.system.entry.js} +1 -1
  409. package/dist/ionic/{p-610f0e12.entry.js → p-51ff648c.entry.js} +1 -1
  410. package/dist/ionic/p-546433d2.js +4 -0
  411. package/dist/ionic/{p-976c7c54.js → p-54f76ced.js} +1 -1
  412. package/dist/ionic/{p-66e50777.entry.js → p-56c3b69c.entry.js} +1 -1
  413. package/dist/ionic/p-58ea73f7.system.entry.js +4 -0
  414. package/dist/ionic/p-596e0cf8.system.entry.js +4 -0
  415. package/dist/ionic/{p-ba0290d1.entry.js → p-5ae49f12.entry.js} +1 -1
  416. package/dist/ionic/{p-ec34194e.system.entry.js → p-5b1273f4.system.entry.js} +2 -2
  417. package/dist/ionic/p-5d3f6707.entry.js +4 -0
  418. package/dist/ionic/{p-bb5eba12.entry.js → p-5da04d11.entry.js} +1 -1
  419. package/dist/ionic/p-5e7c32e8.system.entry.js +4 -0
  420. package/dist/ionic/p-5fa8587e.system.entry.js +4 -0
  421. package/dist/ionic/{p-42fecf9c.system.entry.js → p-68a1e274.system.entry.js} +1 -1
  422. package/dist/ionic/{p-031c5621.js → p-6994c97a.js} +1 -1
  423. package/dist/ionic/p-69bc14fd.entry.js +4 -0
  424. package/dist/ionic/p-6a7eac5a.js +4 -0
  425. package/dist/ionic/p-6f4db5ce.system.entry.js +4 -0
  426. package/dist/ionic/{p-30dfa360.system.js → p-71215c1d.system.js} +1 -1
  427. package/dist/ionic/{p-5a277399.system.entry.js → p-71688099.system.entry.js} +1 -1
  428. package/dist/ionic/{p-282bd5f9.system.entry.js → p-716ab5f8.system.entry.js} +1 -1
  429. package/dist/ionic/p-72812e99.js +4 -0
  430. package/dist/ionic/{p-91a83ede.js → p-72bc8a1c.js} +1 -1
  431. package/dist/ionic/p-74a9cafe.system.js +5 -0
  432. package/dist/ionic/{p-2bb65deb.entry.js → p-75280815.entry.js} +1 -1
  433. package/dist/ionic/{p-98c86cdd.js → p-75cddcc9.js} +1 -1
  434. package/dist/ionic/{p-85f43165.system.entry.js → p-76907c2f.system.entry.js} +1 -1
  435. package/dist/ionic/p-7d9eefb3.system.js +4 -0
  436. package/dist/ionic/{p-3cd3214e.entry.js → p-7df2c495.entry.js} +1 -1
  437. package/dist/ionic/p-7fc505bf.entry.js +4 -0
  438. package/dist/ionic/{p-8a881b39.entry.js → p-83321ee8.entry.js} +1 -1
  439. package/dist/ionic/p-8635f5e6.system.js +4 -0
  440. package/dist/ionic/{p-da5bbd4f.entry.js → p-88cff52d.entry.js} +1 -1
  441. package/dist/ionic/{p-ed3463be.entry.js → p-896111fa.entry.js} +1 -1
  442. package/dist/ionic/{p-2ce3691f.entry.js → p-89b59bd7.entry.js} +1 -1
  443. package/dist/ionic/p-89b61afc.js +4 -0
  444. package/dist/ionic/{p-db7fcadb.system.entry.js → p-8bd567ba.system.entry.js} +2 -2
  445. package/dist/ionic/{p-02a803dc.entry.js → p-8e9ac22d.entry.js} +1 -1
  446. package/dist/ionic/p-9146695e.system.js +4 -0
  447. package/dist/ionic/{p-02a8b73b.entry.js → p-9540561f.entry.js} +1 -1
  448. package/dist/ionic/{p-a3dae2ce.js → p-96cc4814.js} +1 -1
  449. package/dist/ionic/{p-7680d0ec.entry.js → p-99daf8b7.entry.js} +1 -1
  450. package/dist/ionic/p-9ad82dba.js +5 -0
  451. package/dist/ionic/{p-af9256a0.system.js → p-9d7fc908.system.js} +1 -1
  452. package/dist/ionic/{p-e0d52ee3.system.js → p-9ea607bd.system.js} +2 -2
  453. package/dist/ionic/p-a15ddedb.system.js +4 -0
  454. package/dist/ionic/{p-a6b8342e.system.entry.js → p-a1b4e619.system.entry.js} +1 -1
  455. package/dist/ionic/{p-d372938e.system.entry.js → p-a1f9f629.system.entry.js} +1 -1
  456. package/dist/ionic/{p-7c7e495d.system.js → p-a7ba2dcc.system.js} +1 -1
  457. package/dist/ionic/{p-54c31b4f.entry.js → p-a88fdfac.entry.js} +1 -1
  458. package/dist/ionic/{p-853bd866.system.js → p-a8f02173.system.js} +1 -1
  459. package/dist/ionic/p-a93873de.system.js +4 -0
  460. package/dist/ionic/{p-9b5d033a.system.entry.js → p-aa110ca0.system.entry.js} +1 -1
  461. package/dist/ionic/{p-103ec049.system.entry.js → p-aa4f2703.system.entry.js} +1 -1
  462. package/dist/ionic/{p-a94092b9.entry.js → p-ab85debb.entry.js} +1 -1
  463. package/dist/ionic/{p-1bb1ef31.system.entry.js → p-ac4e2a74.system.entry.js} +1 -1
  464. package/dist/ionic/p-ac9f44a8.system.entry.js +4 -0
  465. package/dist/ionic/{p-364044f0.js → p-b51e4004.js} +1 -1
  466. package/dist/ionic/p-bb835b4d.system.entry.js +4 -0
  467. package/dist/ionic/{p-7002bc75.entry.js → p-c04d5a75.entry.js} +1 -1
  468. package/dist/ionic/{p-cbf0a046.system.entry.js → p-c198e1e1.system.entry.js} +1 -1
  469. package/dist/ionic/{p-bb608006.system.entry.js → p-c1d1d004.system.entry.js} +1 -1
  470. package/dist/ionic/{p-239906f1.js → p-c222f76a.js} +1 -1
  471. package/dist/ionic/{p-c8383c20.entry.js → p-c41af68a.entry.js} +1 -1
  472. package/dist/ionic/p-c7e16491.js +4 -0
  473. package/dist/ionic/p-c80d05c9.js +4 -0
  474. package/dist/ionic/{p-a4c287f9.entry.js → p-c8f2b769.entry.js} +1 -1
  475. package/dist/ionic/{p-b1d9b078.entry.js → p-c99ccdc9.entry.js} +1 -1
  476. package/dist/ionic/{p-af2e3481.system.entry.js → p-c9c39c98.system.entry.js} +1 -1
  477. package/dist/ionic/{p-8ed900e4.entry.js → p-cae889f9.entry.js} +1 -1
  478. package/dist/ionic/{p-9e3177a5.system.js → p-d2544865.system.js} +1 -1
  479. package/dist/ionic/{p-219c17cf.system.entry.js → p-d5f48185.system.entry.js} +1 -1
  480. package/dist/ionic/p-d79542bd.system.js +4 -0
  481. package/dist/ionic/p-d8067ea4.system.entry.js +4 -0
  482. package/dist/ionic/p-d8f66669.entry.js +4 -0
  483. package/dist/ionic/{p-b141e253.entry.js → p-d98c0112.entry.js} +1 -1
  484. package/dist/ionic/p-da2b833b.js +4 -0
  485. package/dist/ionic/{p-4d361c89.entry.js → p-dc1372e0.entry.js} +1 -1
  486. package/dist/ionic/{p-1807190c.entry.js → p-df48edd6.entry.js} +1 -1
  487. package/dist/ionic/{p-a0e8f913.entry.js → p-df6fa126.entry.js} +1 -1
  488. package/dist/ionic/{p-fa8ee4c3.entry.js → p-e8a0e731.entry.js} +1 -1
  489. package/dist/ionic/{p-334ad9e4.entry.js → p-e955bf61.entry.js} +1 -1
  490. package/dist/ionic/{p-8dd3d9c3.system.entry.js → p-ea2c16b5.system.entry.js} +2 -2
  491. package/dist/ionic/p-ea4be6ac.system.js +4 -0
  492. package/dist/ionic/{p-43c751c6.system.entry.js → p-eb3da535.system.entry.js} +1 -1
  493. package/dist/ionic/p-f0392d49.entry.js +4 -0
  494. package/dist/ionic/{p-978f4710.js → p-f4cb521c.js} +1 -1
  495. package/dist/ionic/{p-00a6f38d.entry.js → p-f818b01a.entry.js} +1 -1
  496. package/dist/ionic/p-f94cbfe9.js +4 -0
  497. package/dist/ionic/{p-c41e0b5f.system.entry.js → p-fab4ecad.system.entry.js} +1 -1
  498. package/dist/ionic/{p-6a888b39.system.entry.js → p-fb02eeec.system.entry.js} +1 -1
  499. package/dist/ionic/{p-5ac63b19.system.entry.js → p-fb97326f.system.entry.js} +1 -1
  500. package/dist/ionic/{p-1a8bbd2e.entry.js → p-fbd30ec7.entry.js} +1 -1
  501. package/dist/ionic/{p-d4d17d47.entry.js → p-fda4872f.entry.js} +1 -1
  502. package/dist/ionic/{p-294c47cd.system.entry.js → p-ff2323ba.system.entry.js} +1 -1
  503. package/dist/types/components/button/button.d.ts +5 -0
  504. package/dist/types/components/input/input.d.ts +7 -6
  505. package/dist/types/components/input-password-toggle/input-password-toggle.d.ts +37 -0
  506. package/dist/types/components/searchbar/searchbar.d.ts +0 -14
  507. package/dist/types/components/textarea/textarea.d.ts +1 -6
  508. package/dist/types/components.d.ts +47 -3
  509. package/dist/types/utils/animation/animation-utils.d.ts +0 -12
  510. package/dist/types/utils/focus-trap.d.ts +2 -2
  511. package/dist/types/utils/overlays.d.ts +2 -2
  512. package/hydrate/index.js +282 -428
  513. package/package.json +1 -1
  514. package/dist/esm-es5/animation-6a3c0abb.js +0 -4
  515. package/dist/esm-es5/app-globals-80842d68.js +0 -4
  516. package/dist/esm-es5/framework-delegate-3dede018.js +0 -4
  517. package/dist/esm-es5/haptic-554688a5.js +0 -4
  518. package/dist/esm-es5/index-5d6a0317.js +0 -5
  519. package/dist/esm-es5/index-95a691d4.js +0 -4
  520. package/dist/esm-es5/index-fa221975.js +0 -4
  521. package/dist/esm-es5/input-shims-196afa11.js +0 -4
  522. package/dist/esm-es5/md.transition-0d2de76d.js +0 -4
  523. package/dist/ionic/p-0051ceb9.entry.js +0 -4
  524. package/dist/ionic/p-08a8971e.system.js +0 -4
  525. package/dist/ionic/p-0e4c9e45.system.js +0 -4
  526. package/dist/ionic/p-17043350.system.js +0 -4
  527. package/dist/ionic/p-1c801dd4.entry.js +0 -4
  528. package/dist/ionic/p-22b5c888.system.entry.js +0 -4
  529. package/dist/ionic/p-244f56fd.js +0 -4
  530. package/dist/ionic/p-27c668a0.entry.js +0 -4
  531. package/dist/ionic/p-2f53c3eb.js +0 -4
  532. package/dist/ionic/p-3785c067.entry.js +0 -4
  533. package/dist/ionic/p-3e6e53fe.system.entry.js +0 -4
  534. package/dist/ionic/p-42f189f4.js +0 -4
  535. package/dist/ionic/p-5b2951c1.system.entry.js +0 -4
  536. package/dist/ionic/p-5b52897c.js +0 -4
  537. package/dist/ionic/p-68f131a7.system.entry.js +0 -4
  538. package/dist/ionic/p-7c4c37ae.system.js +0 -4
  539. package/dist/ionic/p-7d4d9c40.system.entry.js +0 -4
  540. package/dist/ionic/p-7e7d534c.js +0 -4
  541. package/dist/ionic/p-831269de.js +0 -4
  542. package/dist/ionic/p-86c17a09.entry.js +0 -4
  543. package/dist/ionic/p-ac6db4c2.js +0 -4
  544. package/dist/ionic/p-b0aaa59a.system.entry.js +0 -4
  545. package/dist/ionic/p-c385e49d.entry.js +0 -4
  546. package/dist/ionic/p-c3f5d0e7.js +0 -4
  547. package/dist/ionic/p-c629d22b.system.js +0 -5
  548. package/dist/ionic/p-c995da88.system.js +0 -4
  549. package/dist/ionic/p-d704f798.system.js +0 -4
  550. package/dist/ionic/p-d80b7e31.system.js +0 -4
  551. package/dist/ionic/p-dad515dc.js +0 -4
  552. package/dist/ionic/p-dfb6de03.system.js +0 -4
  553. package/dist/ionic/p-e3611c25.entry.js +0 -4
  554. package/dist/ionic/p-e7b0b64d.system.js +0 -4
  555. package/dist/ionic/p-ec613387.entry.js +0 -4
  556. package/dist/ionic/p-f7a1318d.system.entry.js +0 -4
  557. package/dist/ionic/p-f7af3144.system.entry.js +0 -4
  558. package/dist/ionic/p-f8502e85.js +0 -5
  559. package/dist/ionic/p-fe1fd531.system.js +0 -4
@@ -117,6 +117,17 @@ export class Input {
117
117
  */
118
118
  this.ionInput = debounce === undefined ? originalIonInput !== null && originalIonInput !== void 0 ? originalIonInput : ionInput : debounceEvent(ionInput, debounce);
119
119
  }
120
+ /**
121
+ * Whenever the type on the input changes we need
122
+ * to update the internal type prop on the password
123
+ * toggle so that that correct icon is shown.
124
+ */
125
+ onTypeChange() {
126
+ const passwordToggle = this.el.querySelector('ion-input-password-toggle');
127
+ if (passwordToggle) {
128
+ passwordToggle.type = this.type;
129
+ }
130
+ }
120
131
  /**
121
132
  * Update the native input element when the value changes
122
133
  */
@@ -151,6 +162,13 @@ export class Input {
151
162
  }
152
163
  componentDidLoad() {
153
164
  this.originalIonInput = this.ionInput;
165
+ /**
166
+ * Set the type on the password toggle in the event that this input's
167
+ * type was set async and does not match the default type for the password toggle.
168
+ * This can happen when the type is bound using a JS framework binding syntax
169
+ * such as [type] in Angular.
170
+ */
171
+ this.onTypeChange();
154
172
  }
155
173
  componentDidRender() {
156
174
  var _a;
@@ -377,7 +395,7 @@ export class Input {
377
395
  * TODO(FW-5592): Remove hasStartEndSlots condition
378
396
  */
379
397
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
380
- return (h(Host, { key: '0b1c4fc7e71413c82badab2af3cbf568bebf8abd', class: createColorClasses(this.color, {
398
+ return (h(Host, { key: 'f1007469471c9610950749d87f1aa8165cea4dbb', class: createColorClasses(this.color, {
381
399
  [mode]: true,
382
400
  'has-value': hasValue,
383
401
  'has-focus': hasFocus,
@@ -388,14 +406,14 @@ export class Input {
388
406
  'in-item': inItem,
389
407
  'in-item-color': hostContext('ion-item.ion-color', this.el),
390
408
  'input-disabled': disabled,
391
- }) }, h("label", { key: 'fd40ad2a23abf651bc3ff9fd5631632efea47a01', class: "input-wrapper", htmlFor: inputId }, this.renderLabelContainer(), h("div", { key: '85eaadcee636cdf7bf8f40c3dc4bbfabfc5b36a0', class: "native-wrapper" }, h("slot", { key: 'acb7f7e2c3723568a209f8074da92fe6ed5169cd', name: "start" }), h("input", Object.assign({ key: 'b9a9184965601e2eb428a5ca8ca64f15aac47cda', class: "native-input", ref: (input) => (this.nativeInput = input), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, min: this.min, max: this.max, minLength: this.minlength, maxLength: this.maxlength, multiple: this.multiple, name: this.name, pattern: this.pattern, placeholder: this.placeholder || '', readOnly: readonly, required: this.required, spellcheck: this.spellcheck, step: this.step, type: this.type, value: value, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeydown, onCompositionstart: this.onCompositionStart, onCompositionend: this.onCompositionEnd }, this.inheritedAttributes)), this.clearInput && !readonly && !disabled && (h("button", { "aria-label": "reset", type: "button", class: "input-clear-icon", onPointerDown: (ev) => {
409
+ }) }, h("label", { key: '12a5a2a2b942e4d7420b7e10b98dc3f5b15c6e28', class: "input-wrapper", htmlFor: inputId }, this.renderLabelContainer(), h("div", { key: '938381505753fbc842583215e32d74dd3a383742', class: "native-wrapper" }, h("slot", { key: '0e835fd6b94f7407696d4ab097a02c6e4b742fc9', name: "start" }), h("input", Object.assign({ key: '1835e2bbbdcaf8a80e3a7665536afb02d571bcb9', class: "native-input", ref: (input) => (this.nativeInput = input), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, min: this.min, max: this.max, minLength: this.minlength, maxLength: this.maxlength, multiple: this.multiple, name: this.name, pattern: this.pattern, placeholder: this.placeholder || '', readOnly: readonly, required: this.required, spellcheck: this.spellcheck, step: this.step, type: this.type, value: value, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeydown, onCompositionstart: this.onCompositionStart, onCompositionend: this.onCompositionEnd }, this.inheritedAttributes)), this.clearInput && !readonly && !disabled && (h("button", { "aria-label": "reset", type: "button", class: "input-clear-icon", onPointerDown: (ev) => {
392
410
  /**
393
411
  * This prevents mobile browsers from
394
412
  * blurring the input when the clear
395
413
  * button is activated.
396
414
  */
397
415
  ev.preventDefault();
398
- }, onClick: this.clearTextInput }, h("ion-icon", { "aria-hidden": "true", icon: mode === 'ios' ? closeCircle : closeSharp }))), h("slot", { key: '46513ac42e68143d04b2cf1f4c3f1f70b68d8802', name: "end" })), shouldRenderHighlight && h("div", { class: "input-highlight" })), this.renderBottomContent()));
416
+ }, onClick: this.clearTextInput }, h("ion-icon", { "aria-hidden": "true", icon: mode === 'ios' ? closeCircle : closeSharp }))), h("slot", { key: 'bdcffc81c8d07c793a06d9880a02d7b94ddfff2e', name: "end" })), shouldRenderHighlight && h("div", { class: "input-highlight" })), this.renderBottomContent()));
399
417
  }
400
418
  static get is() { return "ion-input"; }
401
419
  static get encapsulation() { return "scoped"; }
@@ -459,7 +477,7 @@ export class Input {
459
477
  "mutable": false,
460
478
  "complexType": {
461
479
  "original": "AutocompleteTypes",
462
- "resolved": "\"name\" | \"email\" | \"tel\" | \"url\" | \"on\" | \"off\" | \"honorific-prefix\" | \"given-name\" | \"additional-name\" | \"family-name\" | \"honorific-suffix\" | \"nickname\" | \"username\" | \"new-password\" | \"current-password\" | \"one-time-code\" | \"organization-title\" | \"organization\" | \"street-address\" | \"address-line1\" | \"address-line2\" | \"address-line3\" | \"address-level4\" | \"address-level3\" | \"address-level2\" | \"address-level1\" | \"country\" | \"country-name\" | \"postal-code\" | \"cc-name\" | \"cc-given-name\" | \"cc-additional-name\" | \"cc-family-name\" | \"cc-number\" | \"cc-exp\" | \"cc-exp-month\" | \"cc-exp-year\" | \"cc-csc\" | \"cc-type\" | \"transaction-currency\" | \"transaction-amount\" | \"language\" | \"bday\" | \"bday-day\" | \"bday-month\" | \"bday-year\" | \"sex\" | \"tel-country-code\" | \"tel-national\" | \"tel-area-code\" | \"tel-local\" | \"tel-extension\" | \"impp\" | \"photo\"",
480
+ "resolved": "\"name\" | \"on\" | \"off\" | \"honorific-prefix\" | \"given-name\" | \"additional-name\" | \"family-name\" | \"honorific-suffix\" | \"nickname\" | \"email\" | \"username\" | \"new-password\" | \"current-password\" | \"one-time-code\" | \"organization-title\" | \"organization\" | \"street-address\" | \"address-line1\" | \"address-line2\" | \"address-line3\" | \"address-level4\" | \"address-level3\" | \"address-level2\" | \"address-level1\" | \"country\" | \"country-name\" | \"postal-code\" | \"cc-name\" | \"cc-given-name\" | \"cc-additional-name\" | \"cc-family-name\" | \"cc-number\" | \"cc-exp\" | \"cc-exp-month\" | \"cc-exp-year\" | \"cc-csc\" | \"cc-type\" | \"transaction-currency\" | \"transaction-amount\" | \"language\" | \"bday\" | \"bday-day\" | \"bday-month\" | \"bday-year\" | \"sex\" | \"tel\" | \"tel-country-code\" | \"tel-national\" | \"tel-area-code\" | \"tel-local\" | \"tel-extension\" | \"impp\" | \"url\" | \"photo\"",
463
481
  "references": {
464
482
  "AutocompleteTypes": {
465
483
  "location": "import",
@@ -614,7 +632,7 @@ export class Input {
614
632
  "text": "If `true`, the user cannot interact with the input."
615
633
  },
616
634
  "attribute": "disabled",
617
- "reflect": false,
635
+ "reflect": true,
618
636
  "defaultValue": "false"
619
637
  },
620
638
  "enterkeyhint": {
@@ -889,7 +907,7 @@ export class Input {
889
907
  "text": "If `true`, the user cannot modify the value."
890
908
  },
891
909
  "attribute": "readonly",
892
- "reflect": false,
910
+ "reflect": true,
893
911
  "defaultValue": "false"
894
912
  },
895
913
  "required": {
@@ -1094,30 +1112,6 @@ export class Input {
1094
1112
  }
1095
1113
  }
1096
1114
  }
1097
- }, {
1098
- "method": "ionStyle",
1099
- "name": "ionStyle",
1100
- "bubbles": true,
1101
- "cancelable": true,
1102
- "composed": true,
1103
- "docs": {
1104
- "tags": [{
1105
- "name": "internal",
1106
- "text": undefined
1107
- }],
1108
- "text": "Emitted when the styles change."
1109
- },
1110
- "complexType": {
1111
- "original": "StyleEventDetail",
1112
- "resolved": "StyleEventDetail",
1113
- "references": {
1114
- "StyleEventDetail": {
1115
- "location": "import",
1116
- "path": "../../interface",
1117
- "id": "src/interface.d.ts::StyleEventDetail"
1118
- }
1119
- }
1120
- }
1121
1115
  }];
1122
1116
  }
1123
1117
  static get methods() {
@@ -1167,6 +1161,9 @@ export class Input {
1167
1161
  return [{
1168
1162
  "propName": "debounce",
1169
1163
  "methodName": "debounceChanged"
1164
+ }, {
1165
+ "propName": "type",
1166
+ "methodName": "onTypeChange"
1170
1167
  }, {
1171
1168
  "propName": "value",
1172
1169
  "methodName": "valueChanged"
@@ -597,6 +597,15 @@
597
597
  margin-inline-end: 0;
598
598
  }
599
599
 
600
+ /**
601
+ * The input password toggle component should be hidden when the input is readonly/disabled
602
+ * because it is not possible to edit a password.
603
+ */
604
+ :host([disabled]) ::slotted(ion-input-password-toggle),
605
+ :host([readonly]) ::slotted(ion-input-password-toggle) {
606
+ display: none;
607
+ }
608
+
600
609
  /**
601
610
  * Convert a font size to a dynamic font size.
602
611
  * Fonts that participate in Dynamic Type should use
@@ -0,0 +1,183 @@
1
+ /*!
2
+ * (C) Ionic http://ionicframework.com - MIT License
3
+ */
4
+ import { Host, h } from "@stencil/core";
5
+ import { printIonWarning } from "../../utils/logging/index";
6
+ import { createColorClasses } from "../../utils/theme";
7
+ import { eyeOff, eye } from "ionicons/icons";
8
+ import { getIonMode } from "../../global/ionic-global";
9
+ /**
10
+ * @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
11
+ */
12
+ export class InputPasswordToggle {
13
+ constructor() {
14
+ this.togglePasswordVisibility = () => {
15
+ const { inputElRef } = this;
16
+ if (!inputElRef) {
17
+ return;
18
+ }
19
+ inputElRef.type = inputElRef.type === 'text' ? 'password' : 'text';
20
+ };
21
+ this.color = undefined;
22
+ this.showIcon = undefined;
23
+ this.hideIcon = undefined;
24
+ this.type = 'password';
25
+ }
26
+ /**
27
+ * Whenever the input type changes we need to re-run validation to ensure the password
28
+ * toggle is being used with the correct input type. If the application changes the type
29
+ * outside of this component we also need to re-render so the correct icon is shown.
30
+ */
31
+ onTypeChange(newValue) {
32
+ if (newValue !== 'text' && newValue !== 'password') {
33
+ printIonWarning(`ion-input-password-toggle only supports inputs of type "text" or "password". Input of type "${newValue}" is not compatible.`, this.el);
34
+ return;
35
+ }
36
+ }
37
+ connectedCallback() {
38
+ const { el } = this;
39
+ const inputElRef = (this.inputElRef = el.closest('ion-input'));
40
+ if (!inputElRef) {
41
+ printIonWarning('No ancestor ion-input found for ion-input-password-toggle. This component must be slotted inside of an ion-input.', el);
42
+ return;
43
+ }
44
+ /**
45
+ * Important: Set the type in connectedCallback because the default value
46
+ * of this.type may not always be accurate. Usually inputs have the "password" type
47
+ * but it is possible to have the input to initially have the "text" type. In that scenario
48
+ * the wrong icon will show briefly before switching to the correct icon. Setting the
49
+ * type here allows us to avoid that flicker.
50
+ */
51
+ this.type = inputElRef.type;
52
+ }
53
+ disconnectedCallback() {
54
+ this.inputElRef = null;
55
+ }
56
+ render() {
57
+ var _a, _b;
58
+ const { color, type } = this;
59
+ const mode = getIonMode(this);
60
+ const showPasswordIcon = (_a = this.showIcon) !== null && _a !== void 0 ? _a : eye;
61
+ const hidePasswordIcon = (_b = this.hideIcon) !== null && _b !== void 0 ? _b : eyeOff;
62
+ const isPasswordVisible = type === 'text';
63
+ return (h(Host, { key: '1cb075999e41c2fde3a3d6cafe6f37c9b5429299', class: createColorClasses(color, {
64
+ [mode]: true,
65
+ }) }, h("ion-button", { key: 'cfaaec221f530ecc475690b6508c2333e32ff609', mode: mode, color: color, fill: "clear", shape: "round", "aria-checked": isPasswordVisible ? 'true' : 'false', "aria-label": "show password", role: "switch", type: "button", onPointerDown: (ev) => {
66
+ /**
67
+ * This prevents mobile browsers from
68
+ * blurring the input when the password toggle
69
+ * button is activated.
70
+ */
71
+ ev.preventDefault();
72
+ }, onClick: this.togglePasswordVisibility }, h("ion-icon", { key: 'dc0fc5fe8df4df4c145e29b30e589f159aab9cd9', slot: "icon-only", "aria-hidden": "true", icon: isPasswordVisible ? hidePasswordIcon : showPasswordIcon }))));
73
+ }
74
+ static get is() { return "ion-input-password-toggle"; }
75
+ static get encapsulation() { return "shadow"; }
76
+ static get originalStyleUrls() {
77
+ return {
78
+ "ios": ["input-password-toggle.scss"],
79
+ "md": ["input-password-toggle.scss"]
80
+ };
81
+ }
82
+ static get styleUrls() {
83
+ return {
84
+ "ios": ["input-password-toggle.css"],
85
+ "md": ["input-password-toggle.css"]
86
+ };
87
+ }
88
+ static get properties() {
89
+ return {
90
+ "color": {
91
+ "type": "string",
92
+ "mutable": false,
93
+ "complexType": {
94
+ "original": "Color",
95
+ "resolved": "\"danger\" | \"dark\" | \"light\" | \"medium\" | \"primary\" | \"secondary\" | \"success\" | \"tertiary\" | \"warning\" | string & Record<never, never> | undefined",
96
+ "references": {
97
+ "Color": {
98
+ "location": "import",
99
+ "path": "../../interface",
100
+ "id": "src/interface.d.ts::Color"
101
+ }
102
+ }
103
+ },
104
+ "required": false,
105
+ "optional": true,
106
+ "docs": {
107
+ "tags": [],
108
+ "text": "The color to use from your application's color palette.\nDefault options are: `\"primary\"`, `\"secondary\"`, `\"tertiary\"`, `\"success\"`, `\"warning\"`, `\"danger\"`, `\"light\"`, `\"medium\"`, and `\"dark\"`.\nFor more information on colors, see [theming](/docs/theming/basics)."
109
+ },
110
+ "attribute": "color",
111
+ "reflect": true
112
+ },
113
+ "showIcon": {
114
+ "type": "string",
115
+ "mutable": false,
116
+ "complexType": {
117
+ "original": "string",
118
+ "resolved": "string | undefined",
119
+ "references": {}
120
+ },
121
+ "required": false,
122
+ "optional": true,
123
+ "docs": {
124
+ "tags": [],
125
+ "text": "The icon that can be used to represent showing a password. If not set, the \"eye\" Ionicon will be used."
126
+ },
127
+ "attribute": "show-icon",
128
+ "reflect": false
129
+ },
130
+ "hideIcon": {
131
+ "type": "string",
132
+ "mutable": false,
133
+ "complexType": {
134
+ "original": "string",
135
+ "resolved": "string | undefined",
136
+ "references": {}
137
+ },
138
+ "required": false,
139
+ "optional": true,
140
+ "docs": {
141
+ "tags": [],
142
+ "text": "The icon that can be used to represent hiding a password. If not set, the \"eyeOff\" Ionicon will be used."
143
+ },
144
+ "attribute": "hide-icon",
145
+ "reflect": false
146
+ },
147
+ "type": {
148
+ "type": "string",
149
+ "mutable": true,
150
+ "complexType": {
151
+ "original": "TextFieldTypes",
152
+ "resolved": "\"date\" | \"datetime-local\" | \"email\" | \"month\" | \"number\" | \"password\" | \"search\" | \"tel\" | \"text\" | \"time\" | \"url\" | \"week\"",
153
+ "references": {
154
+ "TextFieldTypes": {
155
+ "location": "import",
156
+ "path": "../../interface",
157
+ "id": "src/interface.d.ts::TextFieldTypes"
158
+ }
159
+ }
160
+ },
161
+ "required": false,
162
+ "optional": false,
163
+ "docs": {
164
+ "tags": [{
165
+ "name": "internal",
166
+ "text": undefined
167
+ }],
168
+ "text": ""
169
+ },
170
+ "attribute": "type",
171
+ "reflect": false,
172
+ "defaultValue": "'password'"
173
+ }
174
+ };
175
+ }
176
+ static get elementRef() { return "el"; }
177
+ static get watchers() {
178
+ return [{
179
+ "propName": "type",
180
+ "methodName": "onTypeChange"
181
+ }];
182
+ }
183
+ }
@@ -0,0 +1,21 @@
1
+ /*!
2
+ * (C) Ionic http://ionicframework.com - MIT License
3
+ */
4
+ import AxeBuilder from "@axe-core/playwright";
5
+ import { expect } from "@playwright/test";
6
+ import { configs, test } from "../../../../utils/test/playwright/index";
7
+ configs({ directions: ['ltr'] }).forEach(({ title, config }) => {
8
+ test.describe(title('input password toggle: a11y'), () => {
9
+ test('should not have accessibility violations', async ({ page }) => {
10
+ await page.setContent(`
11
+ <main>
12
+ <ion-input label="input" type="password">
13
+ <ion-input-password-toggle slot="end"></ion-input-password-toggle>
14
+ </ion-input>
15
+ </main>
16
+ `, config);
17
+ const results = await new AxeBuilder({ page }).analyze();
18
+ expect(results.violations).toEqual([]);
19
+ });
20
+ });
21
+ });
@@ -0,0 +1,38 @@
1
+ /*!
2
+ * (C) Ionic http://ionicframework.com - MIT License
3
+ */
4
+ import { expect } from "@playwright/test";
5
+ import { configs, test } from "../../../../utils/test/playwright/index";
6
+ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
7
+ test.describe(title('input password toggle: states'), () => {
8
+ test('should be hidden when inside of a readonly input', async ({ page }) => {
9
+ await page.setContent(`
10
+ <ion-input label="input" type="password" readonly="true">
11
+ <ion-input-password-toggle slot="end"></ion-input-password-toggle>
12
+ </ion-input>
13
+ `, config);
14
+ const inputPasswordToggle = page.locator('ion-input-password-toggle');
15
+ await expect(inputPasswordToggle).toBeHidden();
16
+ });
17
+ test('should be hidden when inside of a disabled input', async ({ page }) => {
18
+ await page.setContent(`
19
+ <ion-input label="input" type="password" disabled="true">
20
+ <ion-input-password-toggle slot="end"></ion-input-password-toggle>
21
+ </ion-input>
22
+ `, config);
23
+ const inputPasswordToggle = page.locator('ion-input-password-toggle');
24
+ await expect(inputPasswordToggle).toBeHidden();
25
+ });
26
+ });
27
+ test.describe(title('input password toggle: rendering'), () => {
28
+ test('should not have visual regressions', async ({ page }) => {
29
+ await page.setContent(`
30
+ <ion-input label="input" type="password">
31
+ <ion-input-password-toggle slot="end"></ion-input-password-toggle>
32
+ </ion-input>
33
+ `, config);
34
+ const inputPasswordToggle = page.locator('ion-input-password-toggle');
35
+ await expect(inputPasswordToggle).toHaveScreenshot(screenshot('input-password-toggle'));
36
+ });
37
+ });
38
+ });
@@ -0,0 +1,76 @@
1
+ /*!
2
+ * (C) Ionic http://ionicframework.com - MIT License
3
+ */
4
+ import { h } from "@stencil/core";
5
+ import { newSpecPage } from "@stencil/core/testing";
6
+ import { Input } from "../../input/input";
7
+ import { InputPasswordToggle } from "../input-password-toggle";
8
+ import { Button } from "../../button/button";
9
+ import { initialize } from "../../../global/ionic-global";
10
+ describe('input password toggle', () => {
11
+ it('should toggle input type when clicked', async () => {
12
+ const page = await newSpecPage({
13
+ components: [Input, InputPasswordToggle, Button],
14
+ template: () => (h("ion-input", { type: "password" }, h("ion-input-password-toggle", { slot: "end" }))),
15
+ });
16
+ const inputPasswordToggle = page.body.querySelector('ion-input-password-toggle');
17
+ const button = inputPasswordToggle.shadowRoot.querySelector('ion-button');
18
+ const input = page.body.querySelector('ion-input');
19
+ expect(input.type).toBe('password');
20
+ button.click();
21
+ await page.waitForChanges();
22
+ expect(input.type).toBe('text');
23
+ button.click();
24
+ await page.waitForChanges();
25
+ expect(input.type).toBe('password');
26
+ });
27
+ it('should render custom icons', async () => {
28
+ const page = await newSpecPage({
29
+ components: [Input, InputPasswordToggle, Button],
30
+ template: () => (h("ion-input", { type: "password" }, h("ion-input-password-toggle", { showIcon: "show", hideIcon: "hide", slot: "end" }))),
31
+ });
32
+ const inputPasswordToggle = page.body.querySelector('ion-input-password-toggle');
33
+ const button = inputPasswordToggle.shadowRoot.querySelector('ion-button');
34
+ const icon = inputPasswordToggle.shadowRoot.querySelector('ion-icon');
35
+ // Grab the attribute to test since we are not actually passing in a valid SVG
36
+ expect(icon.getAttribute('icon')).toBe('show');
37
+ button.click();
38
+ await page.waitForChanges();
39
+ expect(icon.getAttribute('icon')).toBe('hide');
40
+ });
41
+ it('changing the type on the input should update the icon used in password toggle', async () => {
42
+ const page = await newSpecPage({
43
+ components: [Input, InputPasswordToggle, Button],
44
+ template: () => (h("ion-input", { type: "password" }, h("ion-input-password-toggle", { showIcon: "show", hideIcon: "hide", slot: "end" }))),
45
+ });
46
+ const inputPasswordToggle = page.body.querySelector('ion-input-password-toggle');
47
+ const input = page.body.querySelector('ion-input');
48
+ const icon = inputPasswordToggle.shadowRoot.querySelector('ion-icon');
49
+ // Grab the attribute to test since we are not actually passing in a valid SVG
50
+ expect(icon.getAttribute('icon')).toBe('show');
51
+ input.type = 'text';
52
+ await page.waitForChanges();
53
+ expect(icon.getAttribute('icon')).toBe('hide');
54
+ input.type = 'password';
55
+ await page.waitForChanges();
56
+ expect(icon.getAttribute('icon')).toBe('show');
57
+ });
58
+ it('should inherit the mode and color to internal ionic components', async () => {
59
+ /**
60
+ * This initialize script tells Stencil how to determine the mode on components.
61
+ * This is required for any getIonMode internal logic to function properly in spec tests.
62
+ */
63
+ initialize();
64
+ const page = await newSpecPage({
65
+ components: [Input, InputPasswordToggle, Button],
66
+ template: () => (h("ion-input", { type: "password", color: "primary" }, h("ion-input-password-toggle", { slot: "end", mode: "ios", color: "danger" }))),
67
+ });
68
+ const inputPasswordToggle = page.body.querySelector('ion-input-password-toggle');
69
+ const button = inputPasswordToggle.shadowRoot.querySelector('ion-button');
70
+ await page.waitForChanges();
71
+ // mode is a virtual prop so we need to access it as an attribute
72
+ expect(button.getAttribute('mode')).toBe('ios');
73
+ // color is an actual prop so we can access the element property
74
+ expect(button.color).toBe('danger');
75
+ });
76
+ });
@@ -18,11 +18,11 @@ export class ItemDivider {
18
18
  }
19
19
  render() {
20
20
  const mode = getIonMode(this);
21
- return (h(Host, { key: '669dfc87b2046b431539676ef99888a003989559', class: createColorClasses(this.color, {
21
+ return (h(Host, { key: '18d1b78568247bfbf0b0274971b752ace7531f58', class: createColorClasses(this.color, {
22
22
  [mode]: true,
23
23
  'item-divider-sticky': this.sticky,
24
24
  item: true,
25
- }) }, h("slot", { key: 'ebf9e249bc490200d8d39fd83d60d2b7ee55cfdb', name: "start" }), h("div", { key: '492fb40aee6215ec450477dfd2eb2362ab3e6395', class: "item-divider-inner" }, h("div", { key: '7e0fe9b876612ae6363b0dc698e58c0577c6888a', class: "item-divider-wrapper" }, h("slot", { key: '5165aecc360ed102f62b2eafc108e926e63a958e' })), h("slot", { key: 'dd7c743e2c28f13412c1319219a75802d6264051', name: "end" }))));
25
+ }) }, h("slot", { key: 'cbf5fe1a9f4233a303d2366d1fc032d7c445f5c7', name: "start" }), h("div", { key: 'ca2608689325a350b23eb026053dd588ea3004e9', class: "item-divider-inner" }, h("div", { key: '00af1d58d5fc7995754a5266534cdf989a3294eb', class: "item-divider-wrapper" }, h("slot", { key: 'bfa2547fe8de49dcfbfccaeb46736182e514ffbc' })), h("slot", { key: '650dd1153d211eb992e69ff7e98c381cf0555e25', name: "end" }))));
26
26
  }
27
27
  static get is() { return "ion-item-divider"; }
28
28
  static get encapsulation() { return "shadow"; }
@@ -6,7 +6,7 @@ import { getIonMode } from "../../global/ionic-global";
6
6
  export class ItemGroup {
7
7
  render() {
8
8
  const mode = getIonMode(this);
9
- return (h(Host, { key: '2406e238ec8ecf7a012922b054268c52ef4aaeae', role: "group", class: {
9
+ return (h(Host, { key: '2443d9e64c1867a9582a2965ed9ac78263965d70', role: "group", class: {
10
10
  [mode]: true,
11
11
  // Used internally for styling
12
12
  [`item-group-${mode}`]: true,
@@ -44,12 +44,12 @@ export class ItemOption {
44
44
  href: this.href,
45
45
  target: this.target,
46
46
  };
47
- return (h(Host, { key: '515775f7e2c5d8a58b96f1147307ab74d81e2485', onClick: this.onClick, class: createColorClasses(this.color, {
47
+ return (h(Host, { key: '85fe8f529ab0673f1ddba299473690590a1bca88', onClick: this.onClick, class: createColorClasses(this.color, {
48
48
  [mode]: true,
49
49
  'item-option-disabled': disabled,
50
50
  'item-option-expandable': expandable,
51
51
  'ion-activatable': true,
52
- }) }, h(TagType, Object.assign({ key: 'f693d6ab5c7c6d2e2f9408d73c029dcf6abf07ed' }, attrs, { class: "button-native", part: "native", disabled: disabled }), h("span", { key: '2ff80908f299daa20140be78ef9d82126b2706c0', class: "button-inner" }, h("slot", { key: '3e34d6564db8a9062ee05d4209c5dba5f90c5c67', name: "top" }), h("div", { key: '6bf1ace707675849f4bab1925531ee2fffc3a057', class: "horizontal-wrapper" }, h("slot", { key: 'd53ea0f90ea03224a021f141a628c7e226d1cbe2', name: "start" }), h("slot", { key: '114f0bfd8c8ffa26a927d02a185d772c77f31cd8', name: "icon-only" }), h("slot", { key: '6a432a9a7b780da5e6bea789185a4c9c46049059' }), h("slot", { key: 'd2c904f6006e4c101cc2cc8c854a6f6dfe015015', name: "end" })), h("slot", { key: '4bf61ad7ac392366c200243094bb8598293ad7ec', name: "bottom" })), mode === 'md' && h("ion-ripple-effect", null))));
52
+ }) }, h(TagType, Object.assign({ key: 'cde9bca980cb5589204017d80483baab0996586e' }, attrs, { class: "button-native", part: "native", disabled: disabled }), h("span", { key: 'e2b7886b53b0b85d81fbfd9209c2989673cdb863', class: "button-inner" }, h("slot", { key: 'eaf089857ff0a22d3a9c12574596002e32a28c75', name: "top" }), h("div", { key: '12f5d46fe5b8b5d2a5d2bd9e4782376c5af86f1c', class: "horizontal-wrapper" }, h("slot", { key: 'ba6d89b7c7f9470f73e17808f90d578fbcceba48', name: "start" }), h("slot", { key: '22ad963dd37ae40c03a5723c3e3b05970f40d871', name: "icon-only" }), h("slot", { key: 'a1596a1961b5757828fafaa9edf9da3381482ff3' }), h("slot", { key: 'ad0d2b50de279a712e18985ce9aceda7b5d45712', name: "end" })), h("slot", { key: '2940933c947f7e2d9875f0fb980aff392d5ea7fa', name: "bottom" })), mode === 'md' && h("ion-ripple-effect", null))));
53
53
  }
54
54
  static get is() { return "ion-item-option"; }
55
55
  static get encapsulation() { return "shadow"; }
@@ -17,7 +17,7 @@ export class ItemOptions {
17
17
  render() {
18
18
  const mode = getIonMode(this);
19
19
  const isEnd = isEndSide(this.side);
20
- return (h(Host, { key: 'c41b1f121563c51e6405d8b085ce5bb532ef8222', class: {
20
+ return (h(Host, { key: 'ac0cec6a2ea83c9633c10bce379ffdcc99221b52', class: {
21
21
  [mode]: true,
22
22
  // Used internally for styling
23
23
  [`item-options-${mode}`]: true,
@@ -386,7 +386,7 @@ export class ItemSliding {
386
386
  }
387
387
  render() {
388
388
  const mode = getIonMode(this);
389
- return (h(Host, { key: '827bb81f1d66efde0d20dda0360d5c2712ec6605', class: {
389
+ return (h(Host, { key: 'ae9da267d130e2875b2d854952b70daa739effd8', class: {
390
390
  [mode]: true,
391
391
  'item-sliding-active-slide': this.state !== 2 /* SlidingState.Disabled */,
392
392
  'item-sliding-active-options-end': (this.state & 8 /* SlidingState.End */) !== 0,
@@ -55,13 +55,13 @@ export class Label {
55
55
  render() {
56
56
  const position = this.position;
57
57
  const mode = getIonMode(this);
58
- return (h(Host, { key: 'baf8dbc49818749f4e3bfe797ee8cca7ae0db374', class: createColorClasses(this.color, {
58
+ return (h(Host, { key: '6820fe45a0aa73dca665a43f588f952e94c194c7', class: createColorClasses(this.color, {
59
59
  [mode]: true,
60
60
  'in-item-color': hostContext('ion-item.ion-color', this.el),
61
61
  [`label-${position}`]: position !== undefined,
62
62
  [`label-no-animate`]: this.noAnimate,
63
63
  'label-rtl': document.dir === 'rtl',
64
- }) }, h("slot", { key: '6cf0ae428262ebd6c6999be7818a86d363e239ac' })));
64
+ }) }, h("slot", { key: '79815d03fbfc141573f69eb037592837ca3428ce' })));
65
65
  }
66
66
  static get is() { return "ion-label"; }
67
67
  static get encapsulation() { return "scoped"; }
@@ -27,7 +27,7 @@ export class List {
27
27
  render() {
28
28
  const mode = getIonMode(this);
29
29
  const { lines, inset } = this;
30
- return (h(Host, { key: '47eead4d1ec73bedac86f8a8dce8db5e308ad12d', role: "list", class: {
30
+ return (h(Host, { key: '9a0eab31e53ae22dbfa7aa58d779d3976797ea08', role: "list", class: {
31
31
  [mode]: true,
32
32
  // Used internally for styling
33
33
  [`list-${mode}`]: true,
@@ -15,10 +15,10 @@ export class ListHeader {
15
15
  render() {
16
16
  const { lines } = this;
17
17
  const mode = getIonMode(this);
18
- return (h(Host, { key: '93f1b0c39a26c48a845d5f367c66e76bf4167f05', class: createColorClasses(this.color, {
18
+ return (h(Host, { key: '8788351ca44861f264661da2412d6ce7906126bd', class: createColorClasses(this.color, {
19
19
  [mode]: true,
20
20
  [`list-header-lines-${lines}`]: lines !== undefined,
21
- }) }, h("div", { key: '6a1fc2e6f21c1bc4497797474d5b58011255b6d3', class: "list-header-inner" }, h("slot", { key: '1a2167142e719a48fe49bee51a0df25bc8ccbd59' }))));
21
+ }) }, h("div", { key: '8801cb2fdddb2dab0c649aef1ffbac8f0ba9fbe0', class: "list-header-inner" }, h("slot", { key: '7fc87318333b7ee0c3eee91abc64a9275ad43a26' }))));
22
22
  }
23
23
  static get is() { return "ion-list-header"; }
24
24
  static get encapsulation() { return "shadow"; }
@@ -158,9 +158,9 @@ export class Loading {
158
158
  * Otherwise, don't set aria-labelledby.
159
159
  */
160
160
  const ariaLabelledBy = message !== undefined ? msgId : null;
161
- return (h(Host, Object.assign({ key: 'aac7cb449530a6d6f567e53c48f42a216d0f9b07', role: "dialog", "aria-modal": "true", "aria-labelledby": ariaLabelledBy, tabindex: "-1" }, htmlAttributes, { style: {
161
+ return (h(Host, Object.assign({ key: '255c2d52a0788769ca8ac027eababc903f525d0e', role: "dialog", "aria-modal": "true", "aria-labelledby": ariaLabelledBy, tabindex: "-1" }, htmlAttributes, { style: {
162
162
  zIndex: `${40000 + this.overlayIndex}`,
163
- }, onIonBackdropTap: this.onBackdropTap, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'loading-translucent': this.translucent }) }), h("ion-backdrop", { key: '44e430f7a79745af164b1eb04ac8f94269a1bbda', visible: this.showBackdrop, tappable: this.backdropDismiss }), h("div", { key: '72e42c320c4a69788fab0051a3a537ff8a2ac61d', tabindex: "0" }), h("div", { key: '7805fff86c4996317fba188ce21e42dd964b5a88', class: "loading-wrapper ion-overlay-wrapper" }, spinner && (h("div", { class: "loading-spinner" }, h("ion-spinner", { name: spinner, "aria-hidden": "true" }))), message !== undefined && this.renderLoadingMessage(msgId)), h("div", { key: '733928417d9aef2eae34842bfa6836a2902bace8', tabindex: "0" })));
163
+ }, onIonBackdropTap: this.onBackdropTap, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'loading-translucent': this.translucent }) }), h("ion-backdrop", { key: 'd3a70d4e67a6578b01a82f97cb54f79342e7fd62', visible: this.showBackdrop, tappable: this.backdropDismiss }), h("div", { key: '9641470dc2f759e674cd176662c12161bf22e078', tabindex: "0" }), h("div", { key: 'a1b986633eff28e8da49eec08dfb27acab63a88e', class: "loading-wrapper ion-overlay-wrapper" }, spinner && (h("div", { class: "loading-spinner" }, h("ion-spinner", { name: spinner, "aria-hidden": "true" }))), message !== undefined && this.renderLoadingMessage(msgId)), h("div", { key: 'ab8a43e8d71756be287f92961ebdc0bbe2d1882b', tabindex: "0" })));
164
164
  }
165
165
  static get is() { return "ion-loading"; }
166
166
  static get encapsulation() { return "scoped"; }
@@ -586,14 +586,14 @@ export class Menu {
586
586
  * the ionBackButton listener in the menu controller
587
587
  * will handle closing the menu when Escape is pressed.
588
588
  */
589
- return (h(Host, { key: 'e8d4e08518fb44c1b66271ef9cf41c188a6e8446', onKeyDown: shouldUseCloseWatcher() ? null : this.onKeydown, role: "navigation", "aria-label": inheritedAttributes['aria-label'] || 'menu', class: {
589
+ return (h(Host, { key: 'f5f151ca5bf4963c0300656327bb9c38bc7869fb', onKeyDown: shouldUseCloseWatcher() ? null : this.onKeydown, role: "navigation", "aria-label": inheritedAttributes['aria-label'] || 'menu', class: {
590
590
  [mode]: true,
591
591
  [`menu-type-${type}`]: true,
592
592
  'menu-enabled': !disabled,
593
593
  [`menu-side-${side}`]: true,
594
594
  'menu-pane-visible': isPaneVisible,
595
595
  'split-pane-side': hostContext('ion-split-pane', el),
596
- } }, h("div", { key: '12dc0844cd577e514002a3936b488c0a69147644', class: "menu-inner", part: "container", ref: (el) => (this.menuInnerEl = el) }, h("slot", { key: 'ca93bc3b81a542a148b30b96afad92883af06709' })), h("ion-backdrop", { key: 'f887e38faa59a85ea6dcef92193ee68b8d0cc59c', ref: (el) => (this.backdropEl = el), class: "menu-backdrop", tappable: false, stopPropagation: false, part: "backdrop" })));
596
+ } }, h("div", { key: '39ddd64f884cc667e45f99a2922077d87f209205', class: "menu-inner", part: "container", ref: (el) => (this.menuInnerEl = el) }, h("slot", { key: '1ccce2c24ec0dfc81a34580c8be60c69c68d2d2d' })), h("ion-backdrop", { key: 'cf2bdf7f4171a4ada3cb55dd15f6b921b626a347', ref: (el) => (this.backdropEl = el), class: "menu-backdrop", tappable: false, stopPropagation: false, part: "backdrop" })));
597
597
  }
598
598
  static get is() { return "ion-menu"; }
599
599
  static get encapsulation() { return "shadow"; }