voyager-ionic-core 8.0.0-beta.3 → 8.0.0

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 (716) hide show
  1. package/components/action-sheet.js +3 -3
  2. package/components/alert.js +2 -2
  3. package/components/animation.js +9 -250
  4. package/components/backdrop.js +1 -1
  5. package/components/button.js +18 -5
  6. package/components/buttons.js +2 -2
  7. package/components/checkbox.js +5 -5
  8. package/components/haptic.js +6 -54
  9. package/components/helpers.js +1 -4
  10. package/components/index7.js +3 -1
  11. package/components/index9.js +5 -34
  12. package/components/ion-app.js +1 -1
  13. package/components/ion-avatar.js +1 -1
  14. package/components/ion-back-button.js +2 -2
  15. package/components/ion-badge.js +2 -2
  16. package/components/ion-breadcrumb.js +4 -4
  17. package/components/ion-breadcrumbs.js +2 -2
  18. package/components/ion-card-content.js +1 -1
  19. package/components/ion-card-header.js +2 -2
  20. package/components/ion-card-subtitle.js +2 -2
  21. package/components/ion-card-title.js +2 -2
  22. package/components/ion-card.js +1 -1
  23. package/components/ion-chip.js +2 -2
  24. package/components/ion-col.js +2 -2
  25. package/components/ion-content.js +3 -3
  26. package/components/ion-datetime-button.js +2 -2
  27. package/components/ion-datetime.js +2 -2
  28. package/components/ion-fab-button.js +2 -2
  29. package/components/ion-fab-list.js +2 -2
  30. package/components/ion-fab.js +2 -2
  31. package/components/ion-footer.js +2 -2
  32. package/components/ion-grid.js +2 -2
  33. package/components/ion-header.js +2 -2
  34. package/components/ion-img.js +1 -1
  35. package/components/ion-infinite-scroll-content.js +2 -2
  36. package/components/ion-infinite-scroll.js +1 -1
  37. package/components/ion-input-password-toggle.d.ts +11 -0
  38. package/components/ion-input-password-toggle.js +132 -0
  39. package/components/ion-input.js +27 -8
  40. package/components/ion-item-divider.js +2 -2
  41. package/components/ion-item-group.js +1 -1
  42. package/components/ion-item-option.js +2 -2
  43. package/components/ion-item-options.js +1 -1
  44. package/components/ion-item-sliding.js +1 -1
  45. package/components/ion-loading.js +2 -2
  46. package/components/ion-menu-button.js +3 -3
  47. package/components/ion-menu-toggle.js +2 -2
  48. package/components/ion-menu.js +2 -2
  49. package/components/ion-modal.js +47 -23
  50. package/components/ion-nav-link.js +1 -1
  51. package/components/ion-nav.js +1 -1
  52. package/components/ion-note.js +2 -2
  53. package/components/ion-picker-legacy.js +2 -2
  54. package/components/ion-progress-bar.js +1 -1
  55. package/components/ion-range.js +3 -3
  56. package/components/ion-refresher-content.js +2 -2
  57. package/components/ion-refresher.js +1 -1
  58. package/components/ion-reorder-group.js +1 -1
  59. package/components/ion-reorder.js +2 -2
  60. package/components/ion-router-link.js +2 -2
  61. package/components/ion-router-outlet.js +1 -1
  62. package/components/ion-row.js +1 -1
  63. package/components/ion-searchbar.js +7 -7
  64. package/components/ion-segment-button.js +3 -3
  65. package/components/ion-segment.js +2 -2
  66. package/components/ion-select-option.js +1 -1
  67. package/components/ion-select.js +3 -3
  68. package/components/ion-skeleton-text.js +2 -2
  69. package/components/ion-split-pane.js +2 -2
  70. package/components/ion-tab-bar.js +2 -2
  71. package/components/ion-tab-button.js +2 -2
  72. package/components/ion-tab.js +2 -2
  73. package/components/ion-tabs.js +1 -1
  74. package/components/ion-text.js +2 -2
  75. package/components/ion-textarea.js +2 -3
  76. package/components/ion-thumbnail.js +1 -1
  77. package/components/ion-title.js +2 -2
  78. package/components/ion-toast.js +2 -2
  79. package/components/ion-toggle.js +6 -6
  80. package/components/ion-toolbar.js +2 -2
  81. package/components/item.js +1 -1
  82. package/components/label.js +2 -2
  83. package/components/list-header.js +2 -2
  84. package/components/list.js +1 -1
  85. package/components/picker-column-option.js +2 -2
  86. package/components/picker-column.js +3 -3
  87. package/components/picker-column2.js +2 -2
  88. package/components/picker.js +2 -2
  89. package/components/popover.js +4 -4
  90. package/components/radio-group.js +1 -1
  91. package/components/radio.js +5 -5
  92. package/components/ripple-effect.js +1 -1
  93. package/components/select-popover.js +1 -1
  94. package/components/spinner.js +1 -1
  95. package/css/core.css +1 -624
  96. package/css/core.css.map +1 -1
  97. package/css/display.css +1 -131
  98. package/css/display.css.map +1 -1
  99. package/css/flex-utils.css +1 -81
  100. package/css/flex-utils.css.map +1 -1
  101. package/css/float-elements.css +1 -293
  102. package/css/float-elements.css.map +1 -1
  103. package/css/global.bundle.css +1 -457
  104. package/css/global.bundle.css.map +1 -1
  105. package/css/ionic-swiper.css +1 -127
  106. package/css/ionic-swiper.css.map +1 -1
  107. package/css/ionic.bundle.css +1 -1
  108. package/css/ionic.bundle.css.map +1 -1
  109. package/css/normalize.css +1 -150
  110. package/css/normalize.css.map +1 -1
  111. package/css/padding.css +1 -202
  112. package/css/padding.css.map +1 -1
  113. package/css/palettes/dark.always.css +1 -160
  114. package/css/palettes/dark.always.css.map +1 -1
  115. package/css/palettes/dark.class.css +1 -160
  116. package/css/palettes/dark.class.css.map +1 -1
  117. package/css/palettes/dark.css +0 -2
  118. package/css/palettes/dark.system.css +1 -162
  119. package/css/palettes/dark.system.css.map +1 -1
  120. package/css/palettes/high-contrast-dark.always.css +1 -180
  121. package/css/palettes/high-contrast-dark.always.css.map +1 -1
  122. package/css/palettes/high-contrast-dark.class.css +1 -180
  123. package/css/palettes/high-contrast-dark.class.css.map +1 -1
  124. package/css/palettes/high-contrast-dark.css +0 -2
  125. package/css/palettes/high-contrast-dark.system.css +1 -182
  126. package/css/palettes/high-contrast-dark.system.css.map +1 -1
  127. package/css/palettes/high-contrast.always.css +1 -101
  128. package/css/palettes/high-contrast.always.css.map +1 -1
  129. package/css/palettes/high-contrast.class.css +1 -101
  130. package/css/palettes/high-contrast.class.css.map +1 -1
  131. package/css/palettes/high-contrast.css +0 -2
  132. package/css/palettes/high-contrast.system.css +1 -103
  133. package/css/palettes/high-contrast.system.css.map +1 -1
  134. package/css/structure.css +1 -152
  135. package/css/structure.css.map +1 -1
  136. package/css/text-alignment.css +1 -243
  137. package/css/text-alignment.css.map +1 -1
  138. package/css/text-transformation.css +1 -158
  139. package/css/text-transformation.css.map +1 -1
  140. package/css/typography.css +1 -157
  141. package/css/typography.css.map +1 -1
  142. package/css/utils.bundle.css +1 -1100
  143. package/css/utils.bundle.css.map +1 -1
  144. package/dist/cjs/{animation-58ecfe20.js → animation-b4fdf128.js} +9 -250
  145. package/dist/cjs/{app-globals-e132c781.js → app-globals-5bfa2d7f.js} +1 -1
  146. package/dist/cjs/{button-active-60ecf64d.js → button-active-564be49f.js} +2 -2
  147. package/dist/cjs/{framework-delegate-df3a2b04.js → framework-delegate-55f5683a.js} +1 -1
  148. package/dist/cjs/{haptic-b882e0bb.js → haptic-f6b37aa3.js} +6 -54
  149. package/dist/cjs/{hardware-back-button-1c67a5a2.js → hardware-back-button-44e7c052.js} +2 -2
  150. package/dist/cjs/{helpers-71097d9c.js → helpers-afaa9001.js} +0 -4
  151. package/dist/cjs/{index-f52c6d38.js → index-073c7cdc.js} +4 -0
  152. package/dist/cjs/{index-7479ea5a.js → index-5b6a7459.js} +1 -1
  153. package/dist/cjs/{index-14ae0c27.js → index-6d6ac424.js} +4 -4
  154. package/dist/cjs/{index-a91a3e24.js → index-9509ecad.js} +5 -34
  155. package/dist/cjs/{index-2d21d526.js → index-bbc6c29f.js} +48 -12
  156. package/dist/cjs/{index-289297dc.js → index-defd575f.js} +4 -4
  157. package/dist/cjs/index.cjs.js +11 -11
  158. package/dist/cjs/{input-shims-77b14f24.js → input-shims-20d639e6.js} +2 -2
  159. package/dist/cjs/{input.utils-ca74d73a.js → input.utils-611cde0b.js} +1 -1
  160. package/dist/cjs/ion-accordion_2.cjs.entry.js +4 -4
  161. package/dist/cjs/ion-action-sheet.cjs.entry.js +12 -12
  162. package/dist/cjs/ion-alert.cjs.entry.js +11 -11
  163. package/dist/cjs/ion-app_8.cjs.entry.js +27 -27
  164. package/dist/cjs/ion-avatar_3.cjs.entry.js +6 -6
  165. package/dist/cjs/ion-back-button.cjs.entry.js +6 -6
  166. package/dist/cjs/ion-backdrop.cjs.entry.js +3 -3
  167. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +10 -10
  168. package/dist/cjs/ion-button_2.cjs.entry.js +19 -7
  169. package/dist/cjs/ion-card_5.cjs.entry.js +11 -11
  170. package/dist/cjs/ion-checkbox.cjs.entry.js +8 -8
  171. package/dist/cjs/ion-chip.cjs.entry.js +4 -4
  172. package/dist/cjs/ion-col_3.cjs.entry.js +7 -7
  173. package/dist/cjs/ion-datetime-button.cjs.entry.js +5 -5
  174. package/dist/cjs/ion-datetime_3.cjs.entry.js +15 -15
  175. package/dist/cjs/ion-fab_3.cjs.entry.js +10 -10
  176. package/dist/cjs/ion-img.cjs.entry.js +4 -4
  177. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +7 -7
  178. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +93 -0
  179. package/dist/cjs/ion-input.cjs.entry.js +30 -12
  180. package/dist/cjs/ion-item-option_3.cjs.entry.js +8 -8
  181. package/dist/cjs/ion-item_8.cjs.entry.js +17 -17
  182. package/dist/cjs/ion-loading.cjs.entry.js +9 -9
  183. package/dist/cjs/ion-menu_3.cjs.entry.js +15 -15
  184. package/dist/cjs/ion-modal.cjs.entry.js +56 -32
  185. package/dist/cjs/ion-nav_2.cjs.entry.js +8 -8
  186. package/dist/cjs/ion-picker-column-option.cjs.entry.js +5 -5
  187. package/dist/cjs/ion-picker-column.cjs.entry.js +7 -7
  188. package/dist/cjs/ion-picker.cjs.entry.js +4 -4
  189. package/dist/cjs/ion-popover.cjs.entry.js +12 -12
  190. package/dist/cjs/ion-progress-bar.cjs.entry.js +4 -4
  191. package/dist/cjs/ion-radio_2.cjs.entry.js +9 -9
  192. package/dist/cjs/ion-range.cjs.entry.js +7 -7
  193. package/dist/cjs/ion-refresher_2.cjs.entry.js +9 -9
  194. package/dist/cjs/ion-reorder_2.cjs.entry.js +8 -8
  195. package/dist/cjs/ion-ripple-effect.cjs.entry.js +3 -3
  196. package/dist/cjs/ion-route_4.cjs.entry.js +5 -5
  197. package/dist/cjs/ion-searchbar.cjs.entry.js +10 -10
  198. package/dist/cjs/ion-segment_2.cjs.entry.js +8 -8
  199. package/dist/cjs/ion-select_3.cjs.entry.js +12 -12
  200. package/dist/cjs/ion-spinner.cjs.entry.js +3 -3
  201. package/dist/cjs/ion-split-pane.cjs.entry.js +4 -4
  202. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +7 -7
  203. package/dist/cjs/ion-tab_2.cjs.entry.js +6 -6
  204. package/dist/cjs/ion-text.cjs.entry.js +4 -4
  205. package/dist/cjs/ion-textarea.cjs.entry.js +7 -8
  206. package/dist/cjs/ion-toast.cjs.entry.js +9 -9
  207. package/dist/cjs/ion-toggle.cjs.entry.js +10 -10
  208. package/dist/cjs/{ionic-global-5762eca9.js → ionic-global-62487d02.js} +1 -1
  209. package/dist/cjs/ionic.cjs.js +5 -5
  210. package/dist/cjs/{ios.transition-8e0ca8ed.js → ios.transition-d4f0ca4e.js} +4 -4
  211. package/dist/cjs/loader.cjs.js +4 -4
  212. package/dist/cjs/{md.transition-5d0f134b.js → md.transition-857328f3.js} +4 -4
  213. package/dist/cjs/{notch-controller-0042ad49.js → notch-controller-d69150f5.js} +1 -1
  214. package/dist/cjs/{overlays-30b83581.js → overlays-10c452b2.js} +4 -4
  215. package/dist/cjs/{status-tap-dc3b8fda.js → status-tap-81daddfa.js} +3 -3
  216. package/dist/cjs/{swipe-back-49825f1f.js → swipe-back-f38a434a.js} +1 -1
  217. package/dist/collection/collection-manifest.json +3 -2
  218. package/dist/collection/components/action-sheet/action-sheet.js +3 -3
  219. package/dist/collection/components/alert/alert.js +2 -2
  220. package/dist/collection/components/app/app.js +1 -1
  221. package/dist/collection/components/avatar/avatar.js +1 -1
  222. package/dist/collection/components/back-button/back-button.js +2 -2
  223. package/dist/collection/components/backdrop/backdrop.js +1 -1
  224. package/dist/collection/components/badge/badge.js +2 -2
  225. package/dist/collection/components/breadcrumb/breadcrumb.js +4 -4
  226. package/dist/collection/components/breadcrumbs/breadcrumbs.js +2 -2
  227. package/dist/collection/components/button/button.ios.css +76 -15
  228. package/dist/collection/components/button/button.js +19 -2
  229. package/dist/collection/components/button/button.md.css +75 -19
  230. package/dist/collection/components/button/test/round/button.e2e.js +39 -4
  231. package/dist/collection/components/buttons/buttons.js +2 -2
  232. package/dist/collection/components/card/card.js +1 -1
  233. package/dist/collection/components/card-content/card-content.js +1 -1
  234. package/dist/collection/components/card-header/card-header.js +2 -2
  235. package/dist/collection/components/card-subtitle/card-subtitle.js +2 -2
  236. package/dist/collection/components/card-title/card-title.js +2 -2
  237. package/dist/collection/components/checkbox/checkbox.ios.css +1 -0
  238. package/dist/collection/components/checkbox/checkbox.js +3 -3
  239. package/dist/collection/components/checkbox/checkbox.md.css +1 -0
  240. package/dist/collection/components/chip/chip.js +2 -2
  241. package/dist/collection/components/col/col.js +2 -2
  242. package/dist/collection/components/content/content.js +3 -3
  243. package/dist/collection/components/datetime/datetime.js +2 -2
  244. package/dist/collection/components/datetime-button/datetime-button.js +2 -2
  245. package/dist/collection/components/fab/fab.js +2 -2
  246. package/dist/collection/components/fab-button/fab-button.js +2 -2
  247. package/dist/collection/components/fab-list/fab-list.js +2 -2
  248. package/dist/collection/components/footer/footer.js +2 -2
  249. package/dist/collection/components/grid/grid.js +2 -2
  250. package/dist/collection/components/header/header.js +2 -2
  251. package/dist/collection/components/img/img.js +1 -1
  252. package/dist/collection/components/infinite-scroll/infinite-scroll.js +1 -1
  253. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +2 -2
  254. package/dist/collection/components/input/input.ios.css +9 -0
  255. package/dist/collection/components/input/input.js +26 -29
  256. package/dist/collection/components/input/input.md.css +9 -0
  257. package/dist/collection/components/input-password-toggle/input-password-toggle.css +0 -0
  258. package/dist/collection/components/input-password-toggle/input-password-toggle.js +183 -0
  259. package/dist/collection/components/input-password-toggle/test/a11y/input-password-toggle.e2e.js +21 -0
  260. package/dist/collection/components/input-password-toggle/test/basic/input-password-toggle.e2e.js +38 -0
  261. package/dist/collection/components/input-password-toggle/test/input-password-toggle.spec.js +76 -0
  262. package/dist/collection/components/item/item.js +1 -1
  263. package/dist/collection/components/item-divider/item-divider.js +2 -2
  264. package/dist/collection/components/item-group/item-group.js +1 -1
  265. package/dist/collection/components/item-option/item-option.js +2 -2
  266. package/dist/collection/components/item-options/item-options.js +1 -1
  267. package/dist/collection/components/item-sliding/item-sliding.js +1 -1
  268. package/dist/collection/components/label/label.js +2 -2
  269. package/dist/collection/components/list/list.js +1 -1
  270. package/dist/collection/components/list-header/list-header.js +2 -2
  271. package/dist/collection/components/loading/loading.js +2 -2
  272. package/dist/collection/components/menu/menu.js +2 -2
  273. package/dist/collection/components/menu-button/menu-button.js +2 -2
  274. package/dist/collection/components/menu-toggle/menu-toggle.js +2 -2
  275. package/dist/collection/components/modal/gestures/sheet.js +45 -20
  276. package/dist/collection/components/modal/modal.js +4 -4
  277. package/dist/collection/components/nav/nav.js +1 -1
  278. package/dist/collection/components/nav-link/nav-link.js +1 -1
  279. package/dist/collection/components/note/note.js +2 -2
  280. package/dist/collection/components/picker/picker.js +2 -2
  281. package/dist/collection/components/picker-column/picker-column.js +3 -3
  282. package/dist/collection/components/picker-column-option/picker-column-option.js +2 -2
  283. package/dist/collection/components/picker-legacy/picker.js +2 -2
  284. package/dist/collection/components/picker-legacy-column/picker-column.js +2 -2
  285. package/dist/collection/components/popover/popover.ios.css +0 -1
  286. package/dist/collection/components/popover/popover.js +2 -2
  287. package/dist/collection/components/popover/popover.md.css +0 -1
  288. package/dist/collection/components/popover/test/basic/popover.e2e.js +76 -0
  289. package/dist/collection/components/progress-bar/progress-bar.js +1 -1
  290. package/dist/collection/components/radio/radio.ios.css +1 -0
  291. package/dist/collection/components/radio/radio.js +3 -3
  292. package/dist/collection/components/radio/radio.md.css +1 -0
  293. package/dist/collection/components/radio-group/radio-group.js +1 -1
  294. package/dist/collection/components/range/range.js +3 -3
  295. package/dist/collection/components/refresher/refresher.js +1 -1
  296. package/dist/collection/components/refresher-content/refresher-content.js +1 -1
  297. package/dist/collection/components/reorder/reorder.js +1 -1
  298. package/dist/collection/components/reorder-group/reorder-group.js +1 -1
  299. package/dist/collection/components/ripple-effect/ripple-effect.js +1 -1
  300. package/dist/collection/components/router-link/router-link.js +2 -2
  301. package/dist/collection/components/router-outlet/router-outlet.js +1 -1
  302. package/dist/collection/components/row/row.js +1 -1
  303. package/dist/collection/components/searchbar/searchbar.js +9 -8
  304. package/dist/collection/components/segment/segment.js +2 -2
  305. package/dist/collection/components/segment-button/segment-button.js +3 -3
  306. package/dist/collection/components/select/select.js +2 -2
  307. package/dist/collection/components/select-option/select-option.js +1 -1
  308. package/dist/collection/components/select-popover/select-popover.js +1 -1
  309. package/dist/collection/components/skeleton-text/skeleton-text.js +2 -2
  310. package/dist/collection/components/spinner/spinner.js +1 -1
  311. package/dist/collection/components/split-pane/split-pane.js +2 -2
  312. package/dist/collection/components/tab/tab.js +2 -2
  313. package/dist/collection/components/tab-bar/tab-bar.js +2 -2
  314. package/dist/collection/components/tab-button/tab-button.js +2 -2
  315. package/dist/collection/components/tabs/tabs.js +1 -1
  316. package/dist/collection/components/text/text.js +2 -2
  317. package/dist/collection/components/textarea/textarea.js +2 -26
  318. package/dist/collection/components/thumbnail/thumbnail.js +1 -1
  319. package/dist/collection/components/title/title.js +2 -2
  320. package/dist/collection/components/toast/toast.js +2 -2
  321. package/dist/collection/components/toggle/toggle.ios.css +1 -0
  322. package/dist/collection/components/toggle/toggle.js +3 -3
  323. package/dist/collection/components/toggle/toggle.md.css +1 -0
  324. package/dist/collection/components/toolbar/test/basic/toolbar.e2e.js +133 -5
  325. package/dist/collection/components/toolbar/toolbar.js +2 -2
  326. package/dist/collection/utils/animation/animation-utils.js +0 -102
  327. package/dist/collection/utils/animation/animation.js +10 -141
  328. package/dist/collection/utils/animation/test/animation.spec.js +0 -89
  329. package/dist/collection/utils/animation/test/animationbuilder/animation.e2e.js +0 -4
  330. package/dist/collection/utils/animation/test/basic/animation.e2e.js +0 -4
  331. package/dist/collection/utils/animation/test/display/animation.e2e.js +0 -4
  332. package/dist/collection/utils/animation/test/hooks/animation.e2e.js +0 -4
  333. package/dist/collection/utils/animation/test/multiple/animation.e2e.js +0 -7
  334. package/dist/collection/utils/native/haptic.js +6 -54
  335. package/dist/collection/utils/tap-click/index.js +5 -34
  336. package/dist/docs.json +182 -7
  337. package/dist/esm/{animation-6a3c0abb.js → animation-eab5a4ca.js} +9 -250
  338. package/dist/esm/{app-globals-80842d68.js → app-globals-49873df1.js} +1 -1
  339. package/dist/esm/{button-active-c6e18fac.js → button-active-46df59c1.js} +2 -2
  340. package/dist/esm/{framework-delegate-3dede018.js → framework-delegate-63d1a679.js} +1 -1
  341. package/dist/esm/{haptic-554688a5.js → haptic-ac164e4c.js} +6 -54
  342. package/dist/esm/{hardware-back-button-fb295e3a.js → hardware-back-button-ba8f64c2.js} +2 -2
  343. package/dist/esm/{helpers-eab4f597.js → helpers-da915de8.js} +1 -4
  344. package/dist/esm/{index-95a691d4.js → index-56d90da9.js} +4 -4
  345. package/dist/esm/{index-044b5a86.js → index-5cc724f3.js} +1 -1
  346. package/dist/esm/{index-fa221975.js → index-79b30591.js} +5 -34
  347. package/dist/esm/{index-5d6a0317.js → index-bcd8859b.js} +48 -12
  348. package/dist/esm/{index-f7dc70ba.js → index-e2cf2ceb.js} +3 -1
  349. package/dist/esm/{index-136e99c8.js → index-f0d7371a.js} +4 -4
  350. package/dist/esm/index.js +11 -11
  351. package/dist/esm/{input-shims-196afa11.js → input-shims-4530285e.js} +2 -2
  352. package/dist/esm/{input.utils-426cc674.js → input.utils-09c71bc7.js} +1 -1
  353. package/dist/esm/ion-accordion_2.entry.js +4 -4
  354. package/dist/esm/ion-action-sheet.entry.js +12 -12
  355. package/dist/esm/ion-alert.entry.js +11 -11
  356. package/dist/esm/ion-app_8.entry.js +27 -27
  357. package/dist/esm/ion-avatar_3.entry.js +6 -6
  358. package/dist/esm/ion-back-button.entry.js +6 -6
  359. package/dist/esm/ion-backdrop.entry.js +3 -3
  360. package/dist/esm/ion-breadcrumb_2.entry.js +10 -10
  361. package/dist/esm/ion-button_2.entry.js +19 -7
  362. package/dist/esm/ion-card_5.entry.js +11 -11
  363. package/dist/esm/ion-checkbox.entry.js +8 -8
  364. package/dist/esm/ion-chip.entry.js +4 -4
  365. package/dist/esm/ion-col_3.entry.js +7 -7
  366. package/dist/esm/ion-datetime-button.entry.js +5 -5
  367. package/dist/esm/ion-datetime_3.entry.js +15 -15
  368. package/dist/esm/ion-fab_3.entry.js +10 -10
  369. package/dist/esm/ion-img.entry.js +4 -4
  370. package/dist/esm/ion-infinite-scroll_2.entry.js +7 -7
  371. package/dist/esm/ion-input-password-toggle.entry.js +89 -0
  372. package/dist/esm/ion-input.entry.js +30 -12
  373. package/dist/esm/ion-item-option_3.entry.js +8 -8
  374. package/dist/esm/ion-item_8.entry.js +17 -17
  375. package/dist/esm/ion-loading.entry.js +9 -9
  376. package/dist/esm/ion-menu_3.entry.js +15 -15
  377. package/dist/esm/ion-modal.entry.js +56 -32
  378. package/dist/esm/ion-nav_2.entry.js +8 -8
  379. package/dist/esm/ion-picker-column-option.entry.js +5 -5
  380. package/dist/esm/ion-picker-column.entry.js +7 -7
  381. package/dist/esm/ion-picker.entry.js +4 -4
  382. package/dist/esm/ion-popover.entry.js +12 -12
  383. package/dist/esm/ion-progress-bar.entry.js +4 -4
  384. package/dist/esm/ion-radio_2.entry.js +9 -9
  385. package/dist/esm/ion-range.entry.js +7 -7
  386. package/dist/esm/ion-refresher_2.entry.js +9 -9
  387. package/dist/esm/ion-reorder_2.entry.js +8 -8
  388. package/dist/esm/ion-ripple-effect.entry.js +3 -3
  389. package/dist/esm/ion-route_4.entry.js +5 -5
  390. package/dist/esm/ion-searchbar.entry.js +10 -10
  391. package/dist/esm/ion-segment_2.entry.js +8 -8
  392. package/dist/esm/ion-select_3.entry.js +12 -12
  393. package/dist/esm/ion-spinner.entry.js +3 -3
  394. package/dist/esm/ion-split-pane.entry.js +4 -4
  395. package/dist/esm/ion-tab-bar_2.entry.js +7 -7
  396. package/dist/esm/ion-tab_2.entry.js +6 -6
  397. package/dist/esm/ion-text.entry.js +4 -4
  398. package/dist/esm/ion-textarea.entry.js +7 -8
  399. package/dist/esm/ion-toast.entry.js +9 -9
  400. package/dist/esm/ion-toggle.entry.js +10 -10
  401. package/dist/esm/{ionic-global-a589c12c.js → ionic-global-e6c98cd0.js} +1 -1
  402. package/dist/esm/ionic.js +6 -6
  403. package/dist/esm/{ios.transition-d1c8eea2.js → ios.transition-71bfa932.js} +4 -4
  404. package/dist/esm/loader.js +5 -5
  405. package/dist/esm/{md.transition-0d2de76d.js → md.transition-86aef3c0.js} +4 -4
  406. package/dist/esm/{notch-controller-cff691e5.js → notch-controller-55b09e11.js} +1 -1
  407. package/dist/esm/{overlays-d41f74ac.js → overlays-6fb4a2f2.js} +4 -4
  408. package/dist/esm/{status-tap-45595148.js → status-tap-299361cd.js} +3 -3
  409. package/dist/esm/{swipe-back-5aa5feeb.js → swipe-back-b613d7db.js} +1 -1
  410. package/dist/esm-es5/animation-eab5a4ca.js +4 -0
  411. package/dist/esm-es5/app-globals-49873df1.js +4 -0
  412. package/dist/esm-es5/{button-active-c6e18fac.js → button-active-46df59c1.js} +1 -1
  413. package/dist/esm-es5/framework-delegate-63d1a679.js +4 -0
  414. package/dist/esm-es5/haptic-ac164e4c.js +4 -0
  415. package/dist/esm-es5/{hardware-back-button-fb295e3a.js → hardware-back-button-ba8f64c2.js} +1 -1
  416. package/dist/esm-es5/{helpers-eab4f597.js → helpers-da915de8.js} +1 -1
  417. package/dist/esm-es5/index-56d90da9.js +4 -0
  418. package/dist/esm-es5/{index-044b5a86.js → index-5cc724f3.js} +1 -1
  419. package/dist/esm-es5/index-79b30591.js +4 -0
  420. package/dist/esm-es5/index-bcd8859b.js +5 -0
  421. package/dist/esm-es5/{index-f7dc70ba.js → index-e2cf2ceb.js} +1 -1
  422. package/dist/esm-es5/{index-136e99c8.js → index-f0d7371a.js} +1 -1
  423. package/dist/esm-es5/index.js +1 -1
  424. package/dist/esm-es5/input-shims-4530285e.js +4 -0
  425. package/dist/esm-es5/{input.utils-426cc674.js → input.utils-09c71bc7.js} +1 -1
  426. package/dist/esm-es5/ion-accordion_2.entry.js +1 -1
  427. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  428. package/dist/esm-es5/ion-alert.entry.js +1 -1
  429. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  430. package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
  431. package/dist/esm-es5/ion-back-button.entry.js +1 -1
  432. package/dist/esm-es5/ion-backdrop.entry.js +1 -1
  433. package/dist/esm-es5/ion-breadcrumb_2.entry.js +1 -1
  434. package/dist/esm-es5/ion-button_2.entry.js +1 -1
  435. package/dist/esm-es5/ion-card_5.entry.js +1 -1
  436. package/dist/esm-es5/ion-checkbox.entry.js +1 -1
  437. package/dist/esm-es5/ion-chip.entry.js +1 -1
  438. package/dist/esm-es5/ion-col_3.entry.js +1 -1
  439. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  440. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  441. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  442. package/dist/esm-es5/ion-img.entry.js +1 -1
  443. package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
  444. package/dist/esm-es5/ion-input-password-toggle.entry.js +4 -0
  445. package/dist/esm-es5/ion-input.entry.js +1 -1
  446. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  447. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  448. package/dist/esm-es5/ion-loading.entry.js +1 -1
  449. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  450. package/dist/esm-es5/ion-modal.entry.js +1 -1
  451. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  452. package/dist/esm-es5/ion-picker-column-option.entry.js +1 -1
  453. package/dist/esm-es5/ion-picker-column.entry.js +1 -1
  454. package/dist/esm-es5/ion-picker.entry.js +1 -1
  455. package/dist/esm-es5/ion-popover.entry.js +1 -1
  456. package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
  457. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  458. package/dist/esm-es5/ion-range.entry.js +1 -1
  459. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  460. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  461. package/dist/esm-es5/ion-ripple-effect.entry.js +1 -1
  462. package/dist/esm-es5/ion-route_4.entry.js +1 -1
  463. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  464. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  465. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  466. package/dist/esm-es5/ion-spinner.entry.js +1 -1
  467. package/dist/esm-es5/ion-split-pane.entry.js +1 -1
  468. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  469. package/dist/esm-es5/ion-tab_2.entry.js +1 -1
  470. package/dist/esm-es5/ion-text.entry.js +1 -1
  471. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  472. package/dist/esm-es5/ion-toast.entry.js +1 -1
  473. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  474. package/dist/esm-es5/{ionic-global-a589c12c.js → ionic-global-e6c98cd0.js} +1 -1
  475. package/dist/esm-es5/ionic.js +1 -1
  476. package/dist/esm-es5/{ios.transition-d1c8eea2.js → ios.transition-71bfa932.js} +1 -1
  477. package/dist/esm-es5/loader.js +1 -1
  478. package/dist/esm-es5/md.transition-86aef3c0.js +4 -0
  479. package/dist/esm-es5/{notch-controller-cff691e5.js → notch-controller-55b09e11.js} +1 -1
  480. package/dist/esm-es5/{overlays-d41f74ac.js → overlays-6fb4a2f2.js} +1 -1
  481. package/dist/esm-es5/{status-tap-45595148.js → status-tap-299361cd.js} +1 -1
  482. package/dist/esm-es5/{swipe-back-5aa5feeb.js → swipe-back-b613d7db.js} +1 -1
  483. package/dist/html.html-data.json +68 -0
  484. package/dist/ionic/index.esm.js +1 -1
  485. package/dist/ionic/ionic.esm.js +1 -1
  486. package/dist/ionic/ionic.js +1 -1
  487. package/dist/ionic/{p-91567c90.system.entry.js → p-005deca1.system.entry.js} +1 -1
  488. package/dist/ionic/{p-325c61a4.js → p-06e58c4e.js} +1 -1
  489. package/dist/ionic/{p-853bd866.system.js → p-07584ab4.system.js} +1 -1
  490. package/dist/ionic/p-0bd47555.js +4 -0
  491. package/dist/ionic/{p-4a3055ef.system.js → p-0c06e09b.system.js} +1 -1
  492. package/dist/ionic/{p-98c86cdd.js → p-0e713efe.js} +1 -1
  493. package/dist/ionic/p-13cc6ee6.entry.js +4 -0
  494. package/dist/ionic/p-1472c130.entry.js +4 -0
  495. package/dist/ionic/{p-bb5eba12.entry.js → p-151e8afd.entry.js} +1 -1
  496. package/dist/ionic/p-184fbc9e.system.js +4 -0
  497. package/dist/ionic/{p-2cc2c631.system.js → p-19ea7bff.system.js} +1 -1
  498. package/dist/ionic/{p-d5ab02f5.entry.js → p-1b0f4e6c.entry.js} +1 -1
  499. package/dist/ionic/p-1ba197b6.entry.js +4 -0
  500. package/dist/ionic/p-1c42ad90.entry.js +4 -0
  501. package/dist/ionic/p-1e955a45.system.js +4 -0
  502. package/dist/ionic/{p-a94092b9.entry.js → p-1fa53d02.entry.js} +1 -1
  503. package/dist/ionic/{p-7680d0ec.entry.js → p-1fe1f512.entry.js} +1 -1
  504. package/dist/ionic/{p-fb870c48.entry.js → p-23fdee0e.entry.js} +1 -1
  505. package/dist/ionic/{p-f85a4df5.system.js → p-2613c305.system.js} +1 -1
  506. package/dist/ionic/{p-a6b8342e.system.entry.js → p-275dd0ba.system.entry.js} +1 -1
  507. package/dist/ionic/{p-42fecf9c.system.entry.js → p-2b86020c.system.entry.js} +1 -1
  508. package/dist/ionic/{p-d0496c22.system.entry.js → p-3008ca4e.system.entry.js} +1 -1
  509. package/dist/ionic/p-332aa81e.entry.js +4 -0
  510. package/dist/ionic/p-341b3f37.entry.js +4 -0
  511. package/dist/ionic/{p-a600a3e3.js → p-34b11c24.js} +1 -1
  512. package/dist/ionic/{p-668607c2.system.js → p-3ad285e3.system.js} +1 -1
  513. package/dist/ionic/{p-c6f9f3eb.js → p-3cc276f4.js} +1 -1
  514. package/dist/ionic/{p-40976b1c.system.entry.js → p-3d977e09.system.entry.js} +2 -2
  515. package/dist/ionic/{p-219c17cf.system.entry.js → p-3de2aab8.system.entry.js} +1 -1
  516. package/dist/ionic/p-405fd996.entry.js +4 -0
  517. package/dist/ionic/p-46111310.js +4 -0
  518. package/dist/ionic/p-46f407f0.system.js +4 -0
  519. package/dist/ionic/{p-bb608006.system.entry.js → p-4809ddae.system.entry.js} +1 -1
  520. package/dist/ionic/{p-8a881b39.entry.js → p-48f60474.entry.js} +1 -1
  521. package/dist/ionic/p-495ed1c3.entry.js +4 -0
  522. package/dist/ionic/{p-7002bc75.entry.js → p-4a01cec0.entry.js} +1 -1
  523. package/dist/ionic/p-4de53118.js +4 -0
  524. package/dist/ionic/p-4edce583.system.entry.js +4 -0
  525. package/dist/ionic/p-4f6ebc2b.entry.js +4 -0
  526. package/dist/ionic/p-4f77a080.system.entry.js +4 -0
  527. package/dist/ionic/{p-da5bbd4f.entry.js → p-4fadf4b0.entry.js} +1 -1
  528. package/dist/ionic/{p-db7fcadb.system.entry.js → p-50205ef9.system.entry.js} +2 -2
  529. package/dist/ionic/{p-6d9f8fac.system.js → p-510cb8e6.system.js} +1 -1
  530. package/dist/ionic/p-530207f9.entry.js +4 -0
  531. package/dist/ionic/p-53d37363.entry.js +4 -0
  532. package/dist/ionic/{p-7d29dff0.system.entry.js → p-53d69c70.system.entry.js} +1 -1
  533. package/dist/ionic/{p-af2e3481.system.entry.js → p-55bc2a11.system.entry.js} +1 -1
  534. package/dist/ionic/p-582db405.system.entry.js +4 -0
  535. package/dist/ionic/p-5ad55625.entry.js +4 -0
  536. package/dist/ionic/p-5c26fed5.system.entry.js +4 -0
  537. package/dist/ionic/p-5f28cb75.js +4 -0
  538. package/dist/ionic/{p-239906f1.js → p-67f5b57a.js} +1 -1
  539. package/dist/ionic/{p-f7af3144.system.entry.js → p-68afa357.system.entry.js} +2 -2
  540. package/dist/ionic/{p-af9256a0.system.js → p-6ac30fc3.system.js} +1 -1
  541. package/dist/ionic/p-6c5c1bb5.system.js +4 -0
  542. package/dist/ionic/{p-92b05b70.system.entry.js → p-6cf780b6.system.entry.js} +1 -1
  543. package/dist/ionic/p-6dc81903.entry.js +4 -0
  544. package/dist/ionic/{p-8ed900e4.entry.js → p-6e4dac1a.entry.js} +1 -1
  545. package/dist/ionic/{p-6a888b39.system.entry.js → p-6ef17d86.system.entry.js} +1 -1
  546. package/dist/ionic/p-72812e99.js +4 -0
  547. package/dist/ionic/p-7372cf23.system.entry.js +4 -0
  548. package/dist/ionic/p-7492572a.entry.js +4 -0
  549. package/dist/ionic/p-7596e24d.system.js +5 -0
  550. package/dist/ionic/p-76971b4f.entry.js +4 -0
  551. package/dist/ionic/{p-9e3177a5.system.js → p-7a7ff5e3.system.js} +1 -1
  552. package/dist/ionic/{p-6a62da36.system.js → p-7bbcce53.system.js} +1 -1
  553. package/dist/ionic/{p-5ac63b19.system.entry.js → p-7c93f00b.system.entry.js} +1 -1
  554. package/dist/ionic/{p-9e6a5e3d.system.entry.js → p-7f33a6e2.system.entry.js} +2 -2
  555. package/dist/ionic/{p-7adde43c.system.entry.js → p-814efd87.system.entry.js} +1 -1
  556. package/dist/ionic/{p-031c5621.js → p-83b445c3.js} +1 -1
  557. package/dist/ionic/p-8635f5e6.system.js +4 -0
  558. package/dist/ionic/p-89b61afc.js +4 -0
  559. package/dist/ionic/{p-00a6f38d.entry.js → p-8a5152e5.entry.js} +1 -1
  560. package/dist/ionic/{p-976c7c54.js → p-8f9e2850.js} +1 -1
  561. package/dist/ionic/{p-c41e0b5f.system.entry.js → p-904df2ee.system.entry.js} +2 -2
  562. package/dist/ionic/{p-02a803dc.entry.js → p-90f8498c.entry.js} +1 -1
  563. package/dist/ionic/p-9146695e.system.js +4 -0
  564. package/dist/ionic/p-91b568e2.system.entry.js +4 -0
  565. package/dist/ionic/{p-07759435.system.js → p-91dabef7.system.js} +1 -1
  566. package/dist/ionic/{p-78b3da77.js → p-96a561dd.js} +1 -1
  567. package/dist/ionic/{p-a3dae2ce.js → p-96cc4814.js} +1 -1
  568. package/dist/ionic/p-987e38ef.system.entry.js +4 -0
  569. package/dist/ionic/{p-a88b41d1.system.entry.js → p-98af538a.system.entry.js} +2 -2
  570. package/dist/ionic/p-9ccc8035.system.entry.js +4 -0
  571. package/dist/ionic/{p-e0d52ee3.system.js → p-9ea607bd.system.js} +2 -2
  572. package/dist/ionic/p-9fa5ff32.system.js +4 -0
  573. package/dist/ionic/{p-8dd3d9c3.system.entry.js → p-9fd3ca09.system.entry.js} +1 -1
  574. package/dist/ionic/p-a15ddedb.system.js +4 -0
  575. package/dist/ionic/p-a28ea4d8.system.entry.js +4 -0
  576. package/dist/ionic/{p-2bb65deb.entry.js → p-a39a73e3.entry.js} +1 -1
  577. package/dist/ionic/{p-978f4710.js → p-a90201f2.js} +1 -1
  578. package/dist/ionic/p-a93873de.system.js +4 -0
  579. package/dist/ionic/{p-185db19b.system.entry.js → p-aa79cc0e.system.entry.js} +2 -2
  580. package/dist/ionic/{p-1bb1ef31.system.entry.js → p-aa8a2f40.system.entry.js} +1 -1
  581. package/dist/ionic/p-ac045dad.entry.js +4 -0
  582. package/dist/ionic/{p-dd9168f3.entry.js → p-ad2b9596.entry.js} +1 -1
  583. package/dist/ionic/p-ae42c907.entry.js +4 -0
  584. package/dist/ionic/{p-23838a94.system.entry.js → p-aea5f293.system.entry.js} +1 -1
  585. package/dist/ionic/p-b4a7f856.system.entry.js +4 -0
  586. package/dist/ionic/{p-364044f0.js → p-b51e4004.js} +1 -1
  587. package/dist/ionic/p-b6519a42.entry.js +4 -0
  588. package/dist/ionic/p-b7af48c0.js +4 -0
  589. package/dist/ionic/{p-54c31b4f.entry.js → p-ba35f07f.entry.js} +1 -1
  590. package/dist/ionic/{p-d4d17d47.entry.js → p-bc3d649d.entry.js} +1 -1
  591. package/dist/ionic/p-c1c77386.js +5 -0
  592. package/dist/ionic/{p-85f43165.system.entry.js → p-c2762c6a.system.entry.js} +1 -1
  593. package/dist/ionic/p-c4e495a3.system.js +4 -0
  594. package/dist/ionic/p-c4eafa12.system.entry.js +4 -0
  595. package/dist/ionic/{p-294c47cd.system.entry.js → p-c54b167f.system.entry.js} +1 -1
  596. package/dist/ionic/p-c7e16491.js +4 -0
  597. package/dist/ionic/{p-17ee2784.system.entry.js → p-c927dbe2.system.entry.js} +1 -1
  598. package/dist/ionic/{p-282bd5f9.system.entry.js → p-ca5bb110.system.entry.js} +1 -1
  599. package/dist/ionic/p-ca6decbd.entry.js +4 -0
  600. package/dist/ionic/p-cbd87df6.entry.js +4 -0
  601. package/dist/ionic/p-cf45a5c7.system.entry.js +4 -0
  602. package/dist/ionic/{p-1685d81c.system.entry.js → p-cf8101a6.system.entry.js} +1 -1
  603. package/dist/ionic/p-d061515d.system.entry.js +4 -0
  604. package/dist/ionic/{p-3ae4a2a2.entry.js → p-d73f49d0.entry.js} +1 -1
  605. package/dist/ionic/p-da2b833b.js +4 -0
  606. package/dist/ionic/p-dbc3e90c.entry.js +4 -0
  607. package/dist/ionic/{p-70c278c4.system.entry.js → p-dc4406d7.system.entry.js} +1 -1
  608. package/dist/ionic/p-dec86943.entry.js +4 -0
  609. package/dist/ionic/p-df0d39c7.system.entry.js +4 -0
  610. package/dist/ionic/{p-1a8bbd2e.entry.js → p-e099a6f3.entry.js} +1 -1
  611. package/dist/ionic/p-e1ad8e76.entry.js +4 -0
  612. package/dist/ionic/{p-d286cfbe.system.entry.js → p-e292247e.system.entry.js} +1 -1
  613. package/dist/ionic/p-e548fedf.system.entry.js +4 -0
  614. package/dist/ionic/{p-7c7e495d.system.js → p-e5a3659f.system.js} +1 -1
  615. package/dist/ionic/{p-5a277399.system.entry.js → p-e6d46b5d.system.entry.js} +1 -1
  616. package/dist/ionic/p-e781c893.entry.js +4 -0
  617. package/dist/ionic/{p-d8ffe61c.system.entry.js → p-e81c3ca2.system.entry.js} +1 -1
  618. package/dist/ionic/{p-fa8ee4c3.entry.js → p-e8a713b5.entry.js} +1 -1
  619. package/dist/ionic/{p-b141e253.entry.js → p-e93cd31c.entry.js} +1 -1
  620. package/dist/ionic/p-ec178f19.entry.js +4 -0
  621. package/dist/ionic/{p-3cd3214e.entry.js → p-eda2459e.entry.js} +1 -1
  622. package/dist/ionic/p-f13dc6bd.system.entry.js +4 -0
  623. package/dist/ionic/p-f6ca4d02.js +4 -0
  624. package/dist/ionic/{p-1807190c.entry.js → p-f6fec6a0.entry.js} +1 -1
  625. package/dist/ionic/{p-2852c537.system.entry.js → p-f8f8c5a8.system.entry.js} +1 -1
  626. package/dist/ionic/p-f956e38a.entry.js +4 -0
  627. package/dist/ionic/p-fea11771.entry.js +4 -0
  628. package/dist/ionic/{p-30dfa360.system.js → p-ffbc80ae.system.js} +1 -1
  629. package/dist/types/components/button/button.d.ts +5 -0
  630. package/dist/types/components/datetime/utils/manipulation.d.ts +7 -7
  631. package/dist/types/components/datetime/utils/state.d.ts +2 -2
  632. package/dist/types/components/input/input.d.ts +7 -6
  633. package/dist/types/components/input/input.utils.d.ts +1 -1
  634. package/dist/types/components/input-password-toggle/input-password-toggle.d.ts +37 -0
  635. package/dist/types/components/searchbar/searchbar.d.ts +0 -14
  636. package/dist/types/components/textarea/textarea.d.ts +1 -6
  637. package/dist/types/components.d.ts +47 -3
  638. package/dist/types/utils/animation/animation-utils.d.ts +0 -12
  639. package/dist/types/utils/focus-trap.d.ts +2 -2
  640. package/dist/types/utils/framework-delegate.d.ts +1 -1
  641. package/dist/types/utils/keyboard/keyboard-controller.d.ts +1 -1
  642. package/dist/types/utils/overlays.d.ts +2 -2
  643. package/hydrate/index.js +425 -525
  644. package/package.json +6 -6
  645. package/dist/esm-es5/animation-6a3c0abb.js +0 -4
  646. package/dist/esm-es5/app-globals-80842d68.js +0 -4
  647. package/dist/esm-es5/framework-delegate-3dede018.js +0 -4
  648. package/dist/esm-es5/haptic-554688a5.js +0 -4
  649. package/dist/esm-es5/index-5d6a0317.js +0 -5
  650. package/dist/esm-es5/index-95a691d4.js +0 -4
  651. package/dist/esm-es5/index-fa221975.js +0 -4
  652. package/dist/esm-es5/input-shims-196afa11.js +0 -4
  653. package/dist/esm-es5/md.transition-0d2de76d.js +0 -4
  654. package/dist/ionic/p-0051ceb9.entry.js +0 -4
  655. package/dist/ionic/p-08a8971e.system.js +0 -4
  656. package/dist/ionic/p-0e4c9e45.system.js +0 -4
  657. package/dist/ionic/p-103ec049.system.entry.js +0 -4
  658. package/dist/ionic/p-17043350.system.js +0 -4
  659. package/dist/ionic/p-1c801dd4.entry.js +0 -4
  660. package/dist/ionic/p-2130b526.entry.js +0 -4
  661. package/dist/ionic/p-22b5c888.system.entry.js +0 -4
  662. package/dist/ionic/p-23cff6c1.system.js +0 -4
  663. package/dist/ionic/p-23efc001.entry.js +0 -4
  664. package/dist/ionic/p-244f56fd.js +0 -4
  665. package/dist/ionic/p-27c668a0.entry.js +0 -4
  666. package/dist/ionic/p-29ef3b9b.entry.js +0 -4
  667. package/dist/ionic/p-2f53c3eb.js +0 -4
  668. package/dist/ionic/p-2f6bc4a9.system.entry.js +0 -4
  669. package/dist/ionic/p-34c50a42.system.entry.js +0 -4
  670. package/dist/ionic/p-3785c067.entry.js +0 -4
  671. package/dist/ionic/p-3e6e53fe.system.entry.js +0 -4
  672. package/dist/ionic/p-42f189f4.js +0 -4
  673. package/dist/ionic/p-43c751c6.system.entry.js +0 -4
  674. package/dist/ionic/p-4d325220.system.entry.js +0 -4
  675. package/dist/ionic/p-4d361c89.entry.js +0 -4
  676. package/dist/ionic/p-5b2951c1.system.entry.js +0 -4
  677. package/dist/ionic/p-5b52897c.js +0 -4
  678. package/dist/ionic/p-5e39b9d8.entry.js +0 -4
  679. package/dist/ionic/p-610f0e12.entry.js +0 -4
  680. package/dist/ionic/p-66e50777.entry.js +0 -4
  681. package/dist/ionic/p-6a448415.entry.js +0 -4
  682. package/dist/ionic/p-7d4d9c40.system.entry.js +0 -4
  683. package/dist/ionic/p-7e7d534c.js +0 -4
  684. package/dist/ionic/p-831269de.js +0 -4
  685. package/dist/ionic/p-86c17a09.entry.js +0 -4
  686. package/dist/ionic/p-9b5d033a.system.entry.js +0 -4
  687. package/dist/ionic/p-a0e8f913.entry.js +0 -4
  688. package/dist/ionic/p-a4c287f9.entry.js +0 -4
  689. package/dist/ionic/p-ac6db4c2.js +0 -4
  690. package/dist/ionic/p-b0aaa59a.system.entry.js +0 -4
  691. package/dist/ionic/p-b1d9b078.entry.js +0 -4
  692. package/dist/ionic/p-ba0290d1.entry.js +0 -4
  693. package/dist/ionic/p-c385e49d.entry.js +0 -4
  694. package/dist/ionic/p-c3f5d0e7.js +0 -4
  695. package/dist/ionic/p-c629d22b.system.js +0 -5
  696. package/dist/ionic/p-c8383c20.entry.js +0 -4
  697. package/dist/ionic/p-c995da88.system.js +0 -4
  698. package/dist/ionic/p-cbf0a046.system.entry.js +0 -4
  699. package/dist/ionic/p-d372938e.system.entry.js +0 -4
  700. package/dist/ionic/p-d704f798.system.js +0 -4
  701. package/dist/ionic/p-d8090ce4.entry.js +0 -4
  702. package/dist/ionic/p-d80b7e31.system.js +0 -4
  703. package/dist/ionic/p-dad515dc.js +0 -4
  704. package/dist/ionic/p-dfb6de03.system.js +0 -4
  705. package/dist/ionic/p-e3611c25.entry.js +0 -4
  706. package/dist/ionic/p-e4ca94bd.js +0 -4
  707. package/dist/ionic/p-e7b0b64d.system.js +0 -4
  708. package/dist/ionic/p-ebc5b98f.entry.js +0 -4
  709. package/dist/ionic/p-ec34194e.system.entry.js +0 -4
  710. package/dist/ionic/p-ec613387.entry.js +0 -4
  711. package/dist/ionic/p-ed3463be.entry.js +0 -4
  712. package/dist/ionic/p-f1d1524c.entry.js +0 -4
  713. package/dist/ionic/p-f7a1318d.system.entry.js +0 -4
  714. package/dist/ionic/p-f8502e85.js +0 -5
  715. package/dist/ionic/p-fe1fd531.system.js +0 -4
  716. package/dist/ionic/p-fe35b5c0.entry.js +0 -4
@@ -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: 'd9811e25bfeb2aa197352bb9be852e9e420739d5', class: createColorClasses(color, {
64
+ [mode]: true,
65
+ }) }, h("ion-button", { key: '1eaea1442b248fb2b8d61538b27274e647a07804', 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: '9c88de8f4631d9bde222ce2edf6950d639e04773', 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
+ });
@@ -214,7 +214,7 @@ export class Item {
214
214
  'ion-activatable': canActivate,
215
215
  'ion-focusable': this.focusable,
216
216
  'item-rtl': document.dir === 'rtl',
217
- })), role: inList ? 'listitem' : null }, h(TagType, Object.assign({ key: 'fcfcffacb7d4e52f9458724332efa93d140cf637' }, attrs, inheritedAriaAttributes, { class: "item-native", part: "native", disabled: disabled }, clickFn), h("slot", { key: '2c1be89990d1b4264f056f3afca2657dc25e868f', name: "start" }), h("div", { key: 'a12010f2f251c29870806050357e247f297f752d', class: "item-inner" }, h("div", { key: 'd0dc5901d634d3b7d8c9b4339ed02585b5b88828', class: "input-wrapper" }, h("slot", { key: '5589d491f6058858310c72971de50ddf441379b1' })), h("slot", { key: '7b2d2182336abef508d00882759df1a99a1cf93e', name: "end" }), showDetail && (h("ion-icon", { icon: detailIcon, lazy: false, class: "item-detail-icon", part: "detail-icon", "aria-hidden": "true", "flip-rtl": detailIcon === chevronForward }))), canActivate && mode === 'md' && h("ion-ripple-effect", null))));
217
+ })), role: inList ? 'listitem' : null }, h(TagType, Object.assign({ key: 'fcfcffacb7d4e52f9458724332efa93d140cf637' }, attrs, inheritedAriaAttributes, { class: "item-native", part: "native", disabled: disabled }, clickFn), h("slot", { key: '2c1be89990d1b4264f056f3afca2657dc25e868f', name: "start" }), h("div", { key: 'a12010f2f251c29870806050357e247f297f752d', class: "item-inner" }, h("div", { key: 'd0dc5901d634d3b7d8c9b4339ed02585b5b88828', class: "input-wrapper" }, h("slot", { key: '5589d491f6058858310c72971de50ddf441379b1' })), h("slot", { key: '7b2d2182336abef508d00882759df1a99a1cf93e', name: "end" }), showDetail && (h("ion-icon", { key: 'f93f7e7166413f1f2691430dcda83ecf858f7e1f', icon: detailIcon, lazy: false, class: "item-detail-icon", part: "detail-icon", "aria-hidden": "true", "flip-rtl": detailIcon === chevronForward }))), canActivate && mode === 'md' && h("ion-ripple-effect", { key: '3d13ce7623813d650ada97974b29a2e94e2405b1' }))));
218
218
  }
219
219
  static get is() { return "ion-item"; }
220
220
  static get encapsulation() { return "shadow"; }
@@ -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: '6cff318230a9b2a9db529df154285d3dd9822efe', 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: 'eb50dfab74ab0fd13697db17ecd60e8fa0bf1750', name: "start" }), h("div", { key: '2806efd89d086f4fb844a479d9c095e1e0775713', class: "item-divider-inner" }, h("div", { key: '77b7d5fa987e5f1c26d8023cd1f974a8a263a3de', class: "item-divider-wrapper" }, h("slot", { key: 'dbafb0deb140a19a2a9748fd5b48760c39c6fd2e' })), h("slot", { key: 'ef9a848fe21e84ef21cd273b8a4d9f95f558175b', 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: 'f9ffe0290d3fa546494fe55f952d8554f2a8abf8', 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: '89310624997821858c1abde60c0ffb142ca466e0', 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: 'e4dfbb3048eed03a7f7e84c6f75545e0ca9b45fb' }, attrs, { class: "button-native", part: "native", disabled: disabled }), h("span", { key: 'dffcf437fbdc15f2e7a19e60a015e90c73c8377d', class: "button-inner" }, h("slot", { key: '48a23512e0601e062118d8b2c46c8bb96f25509f', name: "top" }), h("div", { key: '952a9a9aa3a476aa1f4408d7e208bf9e916b8c30', class: "horizontal-wrapper" }, h("slot", { key: 'f8d18a61c1ecec4a22a55443cf72bbc51383b64f', name: "start" }), h("slot", { key: '1f9f219e6f879d2e0bf6d80cf0d3f518eb14ce0e', name: "icon-only" }), h("slot", { key: 'a55adcdbe68131e5b1855c2dd45dd9454ab544fb' }), h("slot", { key: '3c4c85a4fbb7efc797d8bc5adf6d238da022ff9f', name: "end" })), h("slot", { key: '503c7e4b306745c523f57f24399ea06ba9b1e21d', name: "bottom" })), mode === 'md' && h("ion-ripple-effect", { key: 'b0e270b0c4f3ff9f9b6d74bad12a9278d7633226' }))));
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: '6d91399d2aaaa81d514d0bbc8dffe53eeec25d36', 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: '47a3edd2ef2080ed9cfc2784277dea09785c7dc4', 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: '6353a70565ef6fbbbf4042b000e536c61bcf99a9', 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: '6ef9c2758c0168442aa84941af0a6cec1ef1ec21' })));
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: '5ff2b0b3989cc99ce17abb8bcd7ec1847940d1ec', 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: 'fb78bd8601cbd7b90ec84a96e0c8325be1132b1e', 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: '2580ad49f3a54973e15f14d645a1e55a6fa066ac', class: "list-header-inner" }, h("slot", { key: '677b2e2ec8eeb3ae6ad329e86c76451cf3ae6c2f' }))));
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: 'f48fc35c38f3c200f39a44f3e741c1676057248e', 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: 'e46058f693235c8ce5474df167595f6a80e4559d', visible: this.showBackdrop, tappable: this.backdropDismiss }), h("div", { key: '2ecd77581a2f130616033b8a78fb9da9d508b588', tabindex: "0" }), h("div", { key: '0243f93c41684f30c81623a8fbb533fd8f17b679', class: "loading-wrapper ion-overlay-wrapper" }, spinner && (h("div", { key: '0643bc42b6e691580d29af27ea5a9fe395a6c5ce', class: "loading-spinner" }, h("ion-spinner", { key: 'f0417802dfbcad6ab9903b84bad692eedd326c88', name: spinner, "aria-hidden": "true" }))), message !== undefined && this.renderLoadingMessage(msgId)), h("div", { key: '3d3a256fe1074bda91cd09212460aa6460c4c723', 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: '68ea0bdf902c1f6369db93d69cacc0f30e1df32b', 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: '7f32097faa4dcf64a568c7cf4b8397bbffc9f7a4', class: "menu-inner", part: "container", ref: (el) => (this.menuInnerEl = el) }, h("slot", { key: '3d4fbc9142297708aa1b31eed875afe6ea79de04' })), h("ion-backdrop", { key: 'f29f4615913da302212d54a43dce94ca5bfa86a5', 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"; }
@@ -46,7 +46,7 @@ export class MenuButton {
46
46
  type: this.type,
47
47
  };
48
48
  const ariaLabel = inheritedAttributes['aria-label'] || 'menu';
49
- return (h(Host, { key: '74a9fa037fba7c8a6c0b2a63201ba47053eef181', onClick: this.onClick, "aria-disabled": disabled ? 'true' : null, "aria-hidden": hidden ? 'true' : null, class: createColorClasses(color, {
49
+ return (h(Host, { key: '7ec29715ce7926b7c2b08f3d9cac8aaa16b3dc28', onClick: this.onClick, "aria-disabled": disabled ? 'true' : null, "aria-hidden": hidden ? 'true' : null, class: createColorClasses(color, {
50
50
  [mode]: true,
51
51
  button: true, // ion-buttons target .button
52
52
  'menu-button-hidden': hidden,
@@ -55,7 +55,7 @@ export class MenuButton {
55
55
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
56
56
  'ion-activatable': true,
57
57
  'ion-focusable': true,
58
- }) }, h("button", Object.assign({ key: 'beea50b1748cb1932289eefa43f5b28bcf8757dd' }, attrs, { disabled: disabled, class: "button-native", part: "native", "aria-label": ariaLabel }), h("span", { key: 'cac396f4e92541a10bf94c2afcf6be515a2f3bb7', class: "button-inner" }, h("slot", { key: 'abad3080be6f8e16f6eb459165f69836f76df126' }, h("ion-icon", { key: '322d013bab64750e88899eefda6e3cc688029077', part: "icon", icon: menuIcon, mode: mode, lazy: false, "aria-hidden": "true" }))), mode === 'md' && h("ion-ripple-effect", { type: "unbounded" }))));
58
+ }) }, h("button", Object.assign({ key: 'd4c5929264af3ba0328118bcc27d2ab7ef5d3809' }, attrs, { disabled: disabled, class: "button-native", part: "native", "aria-label": ariaLabel }), h("span", { key: '7bfa6e9a93105486623d044861e879ec79ff64f1', class: "button-inner" }, h("slot", { key: '071ab58e285832fc188706166f5547d45d501ac5' }, h("ion-icon", { key: '918ec5d791921de9821c347af4f65f97dd94aabf', part: "icon", icon: menuIcon, mode: mode, lazy: false, "aria-hidden": "true" }))), mode === 'md' && h("ion-ripple-effect", { key: '00ffdd53f635e706c1dbd01b8e7944498650fe81', type: "unbounded" }))));
59
59
  }
60
60
  static get is() { return "ion-menu-button"; }
61
61
  static get encapsulation() { return "shadow"; }
@@ -26,10 +26,10 @@ export class MenuToggle {
26
26
  render() {
27
27
  const mode = getIonMode(this);
28
28
  const hidden = this.autoHide && !this.visible;
29
- return (h(Host, { key: '78202849633b083bb3310e1a8d7a43b0b9226764', onClick: this.onClick, "aria-hidden": hidden ? 'true' : null, class: {
29
+ return (h(Host, { key: '7c27ea5b0795676bf5cb33e1f83aa142c197f64e', onClick: this.onClick, "aria-hidden": hidden ? 'true' : null, class: {
30
30
  [mode]: true,
31
31
  'menu-toggle-hidden': hidden,
32
- } }, h("slot", { key: '9587bbb3a5315e11f57183e52f89609526e3879b' })));
32
+ } }, h("slot", { key: '69f187becedc0fe34603d41d279f043cf0fdf776' })));
33
33
  }
34
34
  static get is() { return "ion-menu-toggle"; }
35
35
  static get encapsulation() { return "shadow"; }
@@ -1,8 +1,9 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
+ import { isIonContent, findClosestIonContent } from "../../../utils/content/index";
4
5
  import { createGesture } from "../../../utils/gesture/index";
5
- import { clamp, raf } from "../../../utils/helpers";
6
+ import { clamp, raf, getElementRoot } from "../../../utils/helpers";
6
7
  import { getBackdropValueForSheet } from "../utils";
7
8
  import { calculateSpringStep, handleCanDismiss } from "./utils";
8
9
  export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, animation, breakpoints = [], getCurrentBreakpoint, onDismiss, onBreakpointChange) => {
@@ -87,19 +88,32 @@ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpo
87
88
  }
88
89
  const canStart = (detail) => {
89
90
  /**
90
- * If the sheet is fully expanded and
91
- * the user is swiping on the content,
92
- * the gesture should not start to
93
- * allow for scrolling on the content.
91
+ * If we are swiping on the content, swiping should only be possible if the content
92
+ * is scrolled all the way to the top so that we do not interfere with scrolling.
93
+ *
94
+ * We cannot assume that the `ion-content` target will remain consistent between swipes.
95
+ * For example, when using ion-nav within a modal it is possible to swipe, push a view,
96
+ * and then swipe again. The target content will not be the same between swipes.
94
97
  */
95
- const content = detail.event.target.closest('ion-content');
98
+ const contentEl = findClosestIonContent(detail.event.target);
96
99
  currentBreakpoint = getCurrentBreakpoint();
97
- if (currentBreakpoint === 1 && content) {
98
- return false;
100
+ if (currentBreakpoint === 1 && contentEl) {
101
+ /**
102
+ * The modal should never swipe to close on the content with a refresher.
103
+ * Note 1: We cannot solve this by making this gesture have a higher priority than
104
+ * the refresher gesture as the iOS native refresh gesture uses a scroll listener in
105
+ * addition to a gesture.
106
+ *
107
+ * Note 2: Do not use getScrollElement here because we need this to be a synchronous
108
+ * operation, and getScrollElement is asynchronous.
109
+ */
110
+ const scrollEl = isIonContent(contentEl) ? getElementRoot(contentEl).querySelector('.inner-scroll') : contentEl;
111
+ const hasRefresherInContent = !!contentEl.querySelector('ion-refresher');
112
+ return !hasRefresherInContent && scrollEl.scrollTop === 0;
99
113
  }
100
114
  return true;
101
115
  };
102
- const onStart = () => {
116
+ const onStart = (detail) => {
103
117
  /**
104
118
  * If canDismiss is anything other than `true`
105
119
  * then users should be able to swipe down
@@ -114,11 +128,10 @@ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpo
114
128
  */
115
129
  canDismissBlocksGesture = baseEl.canDismiss !== undefined && baseEl.canDismiss !== true && minBreakpoint === 0;
116
130
  /**
117
- * If swiping on the content
118
- * we should disable scrolling otherwise
119
- * the sheet will expand and the content will scroll.
131
+ * If we are pulling down, then it is possible we are pulling on the content.
132
+ * We do not want scrolling to happen at the same time as the gesture.
120
133
  */
121
- if (contentEl) {
134
+ if (detail.deltaY > 0 && contentEl) {
122
135
  contentEl.scrollY = false;
123
136
  }
124
137
  raf(() => {
@@ -131,6 +144,15 @@ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpo
131
144
  animation.progressStart(true, 1 - currentBreakpoint);
132
145
  };
133
146
  const onMove = (detail) => {
147
+ /**
148
+ * If we are pulling down, then it is possible we are pulling on the content.
149
+ * We do not want scrolling to happen at the same time as the gesture.
150
+ * This accounts for when the user scrolls down, scrolls all the way up, and then
151
+ * pulls down again such that the modal should start to move.
152
+ */
153
+ if (detail.deltaY > 0 && contentEl) {
154
+ contentEl.scrollY = false;
155
+ }
134
156
  /**
135
157
  * Given the change in gesture position on the Y axis,
136
158
  * compute where the offset of the animation should be
@@ -233,6 +255,16 @@ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpo
233
255
  else if (!shouldRemainOpen) {
234
256
  onDismiss();
235
257
  }
258
+ /**
259
+ * If the sheet is going to be fully expanded then we should enable
260
+ * scrolling immediately. The sheet modal animation takes ~500ms to finish
261
+ * so if we wait until then there is a visible delay for when scrolling is
262
+ * re-enabled. Native iOS allows for scrolling on the sheet modal as soon
263
+ * as the gesture is released, so we align with that.
264
+ */
265
+ if (contentEl && snapToBreakpoint === breakpoints[breakpoints.length - 1]) {
266
+ contentEl.scrollY = true;
267
+ }
236
268
  return new Promise((resolve) => {
237
269
  animation
238
270
  .onFinish(() => {
@@ -251,13 +283,6 @@ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpo
251
283
  animation.progressStart(true, 1 - snapToBreakpoint);
252
284
  currentBreakpoint = snapToBreakpoint;
253
285
  onBreakpointChange(currentBreakpoint);
254
- /**
255
- * If the sheet is fully expanded, we can safely
256
- * enable scrolling again.
257
- */
258
- if (contentEl && currentBreakpoint === breakpoints[breakpoints.length - 1]) {
259
- contentEl.scrollY = true;
260
- }
261
286
  /**
262
287
  * Backdrop should become enabled
263
288
  * after the backdropBreakpoint value