voyager-ionic-core 8.0.0-beta.3 → 8.0.0-rc.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 (562) 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-49825f1f.js → swipe-back-f38a434a.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-5aa5feeb.js → swipe-back-b613d7db.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-5aa5feeb.js → swipe-back-b613d7db.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-184fbc9e.system.js +4 -0
  376. package/dist/ionic/{p-2cc2c631.system.js → p-19ea7bff.system.js} +1 -1
  377. package/dist/ionic/{p-29ef3b9b.entry.js → p-1b235142.entry.js} +1 -1
  378. package/dist/ionic/{p-fe35b5c0.entry.js → p-1cff9cad.entry.js} +1 -1
  379. package/dist/ionic/p-1e955a45.system.js +4 -0
  380. package/dist/ionic/p-1f9cdee2.entry.js +4 -0
  381. package/dist/ionic/p-23b89985.entry.js +4 -0
  382. package/dist/ionic/{p-07759435.system.js → p-25575222.system.js} +1 -1
  383. package/dist/ionic/{p-6d9f8fac.system.js → p-266fc56e.system.js} +1 -1
  384. package/dist/ionic/{p-3ae4a2a2.entry.js → p-2e12bda2.entry.js} +1 -1
  385. package/dist/ionic/{p-23838a94.system.entry.js → p-2f6cedaf.system.entry.js} +1 -1
  386. package/dist/ionic/{p-78b3da77.js → p-3040730e.js} +1 -1
  387. package/dist/ionic/{p-ebc5b98f.entry.js → p-3391d9a3.entry.js} +1 -1
  388. package/dist/ionic/{p-a600a3e3.js → p-34b11c24.js} +1 -1
  389. package/dist/ionic/{p-4d325220.system.entry.js → p-352f7037.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-9e6a5e3d.system.entry.js → p-43505ff8.system.entry.js} +1 -1
  398. package/dist/ionic/{p-a88b41d1.system.entry.js → p-4429fc97.system.entry.js} +2 -2
  399. package/dist/ionic/{p-70c278c4.system.entry.js → p-4511ba0e.system.entry.js} +1 -1
  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-f85a4df5.system.js → p-4dd82d9d.system.js} +1 -1
  405. package/dist/ionic/{p-6a62da36.system.js → p-5033128d.system.js} +2 -2
  406. package/dist/ionic/{p-17ee2784.system.entry.js → p-510578f3.system.entry.js} +1 -1
  407. package/dist/ionic/{p-40976b1c.system.entry.js → p-51b68ec9.system.entry.js} +1 -1
  408. package/dist/ionic/{p-610f0e12.entry.js → p-51ff648c.entry.js} +1 -1
  409. package/dist/ionic/p-546433d2.js +4 -0
  410. package/dist/ionic/{p-976c7c54.js → p-54f76ced.js} +1 -1
  411. package/dist/ionic/{p-66e50777.entry.js → p-56c3b69c.entry.js} +1 -1
  412. package/dist/ionic/p-58ea73f7.system.entry.js +4 -0
  413. package/dist/ionic/p-596e0cf8.system.entry.js +4 -0
  414. package/dist/ionic/{p-ba0290d1.entry.js → p-5ae49f12.entry.js} +1 -1
  415. package/dist/ionic/{p-ec34194e.system.entry.js → p-5b1273f4.system.entry.js} +2 -2
  416. package/dist/ionic/p-5d3f6707.entry.js +4 -0
  417. package/dist/ionic/{p-bb5eba12.entry.js → p-5da04d11.entry.js} +1 -1
  418. package/dist/ionic/p-5e7c32e8.system.entry.js +4 -0
  419. package/dist/ionic/p-65d26d94.system.entry.js +4 -0
  420. package/dist/ionic/{p-5e39b9d8.entry.js → p-6744e460.entry.js} +1 -1
  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-74a9cafe.system.js +5 -0
  431. package/dist/ionic/{p-2bb65deb.entry.js → p-75280815.entry.js} +1 -1
  432. package/dist/ionic/{p-98c86cdd.js → p-75cddcc9.js} +1 -1
  433. package/dist/ionic/{p-85f43165.system.entry.js → p-76907c2f.system.entry.js} +1 -1
  434. package/dist/ionic/p-7d9eefb3.system.js +4 -0
  435. package/dist/ionic/{p-3cd3214e.entry.js → p-7df2c495.entry.js} +1 -1
  436. package/dist/ionic/p-7fc505bf.entry.js +4 -0
  437. package/dist/ionic/{p-8a881b39.entry.js → p-83321ee8.entry.js} +1 -1
  438. package/dist/ionic/p-8635f5e6.system.js +4 -0
  439. package/dist/ionic/{p-da5bbd4f.entry.js → p-88cff52d.entry.js} +1 -1
  440. package/dist/ionic/{p-ed3463be.entry.js → p-896111fa.entry.js} +1 -1
  441. package/dist/ionic/p-89b61afc.js +4 -0
  442. package/dist/ionic/{p-db7fcadb.system.entry.js → p-8bd567ba.system.entry.js} +2 -2
  443. package/dist/ionic/{p-02a803dc.entry.js → p-8e9ac22d.entry.js} +1 -1
  444. package/dist/ionic/p-9146695e.system.js +4 -0
  445. package/dist/ionic/{p-a3dae2ce.js → p-96cc4814.js} +1 -1
  446. package/dist/ionic/{p-7680d0ec.entry.js → p-99daf8b7.entry.js} +1 -1
  447. package/dist/ionic/p-9ad82dba.js +5 -0
  448. package/dist/ionic/{p-af9256a0.system.js → p-9d7fc908.system.js} +1 -1
  449. package/dist/ionic/{p-e0d52ee3.system.js → p-9ea607bd.system.js} +2 -2
  450. package/dist/ionic/p-a15ddedb.system.js +4 -0
  451. package/dist/ionic/{p-a6b8342e.system.entry.js → p-a1b4e619.system.entry.js} +1 -1
  452. package/dist/ionic/{p-d372938e.system.entry.js → p-a1f9f629.system.entry.js} +1 -1
  453. package/dist/ionic/{p-7c7e495d.system.js → p-a7ba2dcc.system.js} +1 -1
  454. package/dist/ionic/{p-54c31b4f.entry.js → p-a88fdfac.entry.js} +1 -1
  455. package/dist/ionic/{p-853bd866.system.js → p-a8f02173.system.js} +1 -1
  456. package/dist/ionic/p-a93873de.system.js +4 -0
  457. package/dist/ionic/{p-9b5d033a.system.entry.js → p-aa110ca0.system.entry.js} +1 -1
  458. package/dist/ionic/{p-103ec049.system.entry.js → p-aa4f2703.system.entry.js} +1 -1
  459. package/dist/ionic/{p-a94092b9.entry.js → p-ab85debb.entry.js} +1 -1
  460. package/dist/ionic/{p-1bb1ef31.system.entry.js → p-ac4e2a74.system.entry.js} +1 -1
  461. package/dist/ionic/p-ac9f44a8.system.entry.js +4 -0
  462. package/dist/ionic/{p-364044f0.js → p-b51e4004.js} +1 -1
  463. package/dist/ionic/{p-d5ab02f5.entry.js → p-b689b8d4.entry.js} +1 -1
  464. package/dist/ionic/p-b7af48c0.js +4 -0
  465. package/dist/ionic/p-bb835b4d.system.entry.js +4 -0
  466. package/dist/ionic/{p-7002bc75.entry.js → p-c04d5a75.entry.js} +1 -1
  467. package/dist/ionic/{p-cbf0a046.system.entry.js → p-c198e1e1.system.entry.js} +1 -1
  468. package/dist/ionic/{p-bb608006.system.entry.js → p-c1d1d004.system.entry.js} +1 -1
  469. package/dist/ionic/{p-239906f1.js → p-c222f76a.js} +1 -1
  470. package/dist/ionic/{p-c8383c20.entry.js → p-c41af68a.entry.js} +1 -1
  471. package/dist/ionic/p-c7e16491.js +4 -0
  472. package/dist/ionic/p-c80d05c9.js +4 -0
  473. package/dist/ionic/{p-23efc001.entry.js → p-c8510ca2.entry.js} +1 -1
  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-8dd3d9c3.system.entry.js → p-ea2c16b5.system.entry.js} +2 -2
  490. package/dist/ionic/p-ea4be6ac.system.js +4 -0
  491. package/dist/ionic/{p-43c751c6.system.entry.js → p-eb3da535.system.entry.js} +1 -1
  492. package/dist/ionic/{p-2f6bc4a9.system.entry.js → p-ec2d3928.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/modal/animations/sheet.d.ts +4 -4
  507. package/dist/types/components/refresher/refresher.utils.d.ts +2 -2
  508. package/dist/types/components/searchbar/searchbar.d.ts +0 -14
  509. package/dist/types/components/textarea/textarea.d.ts +1 -6
  510. package/dist/types/components.d.ts +47 -3
  511. package/dist/types/utils/animation/animation-utils.d.ts +0 -12
  512. package/dist/types/utils/focus-trap.d.ts +2 -2
  513. package/dist/types/utils/overlays.d.ts +2 -2
  514. package/hydrate/index.js +282 -428
  515. package/package.json +1 -1
  516. package/dist/esm-es5/animation-6a3c0abb.js +0 -4
  517. package/dist/esm-es5/app-globals-80842d68.js +0 -4
  518. package/dist/esm-es5/framework-delegate-3dede018.js +0 -4
  519. package/dist/esm-es5/haptic-554688a5.js +0 -4
  520. package/dist/esm-es5/index-5d6a0317.js +0 -5
  521. package/dist/esm-es5/index-95a691d4.js +0 -4
  522. package/dist/esm-es5/index-fa221975.js +0 -4
  523. package/dist/esm-es5/input-shims-196afa11.js +0 -4
  524. package/dist/esm-es5/md.transition-0d2de76d.js +0 -4
  525. package/dist/ionic/p-0051ceb9.entry.js +0 -4
  526. package/dist/ionic/p-08a8971e.system.js +0 -4
  527. package/dist/ionic/p-0e4c9e45.system.js +0 -4
  528. package/dist/ionic/p-17043350.system.js +0 -4
  529. package/dist/ionic/p-1c801dd4.entry.js +0 -4
  530. package/dist/ionic/p-22b5c888.system.entry.js +0 -4
  531. package/dist/ionic/p-23cff6c1.system.js +0 -4
  532. package/dist/ionic/p-244f56fd.js +0 -4
  533. package/dist/ionic/p-27c668a0.entry.js +0 -4
  534. package/dist/ionic/p-2f53c3eb.js +0 -4
  535. package/dist/ionic/p-34c50a42.system.entry.js +0 -4
  536. package/dist/ionic/p-3785c067.entry.js +0 -4
  537. package/dist/ionic/p-3e6e53fe.system.entry.js +0 -4
  538. package/dist/ionic/p-42f189f4.js +0 -4
  539. package/dist/ionic/p-5b2951c1.system.entry.js +0 -4
  540. package/dist/ionic/p-5b52897c.js +0 -4
  541. package/dist/ionic/p-7d4d9c40.system.entry.js +0 -4
  542. package/dist/ionic/p-7e7d534c.js +0 -4
  543. package/dist/ionic/p-831269de.js +0 -4
  544. package/dist/ionic/p-86c17a09.entry.js +0 -4
  545. package/dist/ionic/p-ac6db4c2.js +0 -4
  546. package/dist/ionic/p-b0aaa59a.system.entry.js +0 -4
  547. package/dist/ionic/p-c385e49d.entry.js +0 -4
  548. package/dist/ionic/p-c3f5d0e7.js +0 -4
  549. package/dist/ionic/p-c629d22b.system.js +0 -5
  550. package/dist/ionic/p-c995da88.system.js +0 -4
  551. package/dist/ionic/p-d704f798.system.js +0 -4
  552. package/dist/ionic/p-d80b7e31.system.js +0 -4
  553. package/dist/ionic/p-dad515dc.js +0 -4
  554. package/dist/ionic/p-dfb6de03.system.js +0 -4
  555. package/dist/ionic/p-e3611c25.entry.js +0 -4
  556. package/dist/ionic/p-e4ca94bd.js +0 -4
  557. package/dist/ionic/p-e7b0b64d.system.js +0 -4
  558. package/dist/ionic/p-ec613387.entry.js +0 -4
  559. package/dist/ionic/p-f7a1318d.system.entry.js +0 -4
  560. package/dist/ionic/p-f7af3144.system.entry.js +0 -4
  561. package/dist/ionic/p-f8502e85.js +0 -5
  562. package/dist/ionic/p-fe1fd531.system.js +0 -4
@@ -2,39 +2,8 @@
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
4
  import { w as win } from './index5.js';
5
- import { r as raf } from './helpers.js';
6
5
 
7
6
  let animationPrefix;
8
- /**
9
- * Web Animations requires hyphenated CSS properties
10
- * to be written in camelCase when animating
11
- */
12
- const processKeyframes = (keyframes) => {
13
- keyframes.forEach((keyframe) => {
14
- for (const key in keyframe) {
15
- // eslint-disable-next-line no-prototype-builtins
16
- if (keyframe.hasOwnProperty(key)) {
17
- const value = keyframe[key];
18
- if (key === 'easing') {
19
- const newKey = 'animation-timing-function';
20
- keyframe[newKey] = value;
21
- delete keyframe[key];
22
- }
23
- else {
24
- const newKey = convertCamelCaseToHypen(key);
25
- if (newKey !== key) {
26
- keyframe[newKey] = value;
27
- delete keyframe[key];
28
- }
29
- }
30
- }
31
- }
32
- });
33
- return keyframes;
34
- };
35
- const convertCamelCaseToHypen = (str) => {
36
- return str.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();
37
- };
38
7
  const getAnimationPrefix = (el) => {
39
8
  if (animationPrefix === undefined) {
40
9
  const supportsUnprefixed = el.style.animationName !== undefined;
@@ -47,78 +16,6 @@ const setStyleProperty = (element, propertyName, value) => {
47
16
  const prefix = propertyName.startsWith('animation') ? getAnimationPrefix(element) : '';
48
17
  element.style.setProperty(prefix + propertyName, value);
49
18
  };
50
- const removeStyleProperty = (element, propertyName) => {
51
- const prefix = propertyName.startsWith('animation') ? getAnimationPrefix(element) : '';
52
- element.style.removeProperty(prefix + propertyName);
53
- };
54
- const animationEnd = (el, callback) => {
55
- let unRegTrans;
56
- const opts = { passive: true };
57
- const unregister = () => {
58
- if (unRegTrans) {
59
- unRegTrans();
60
- }
61
- };
62
- const onTransitionEnd = (ev) => {
63
- if (el === ev.target) {
64
- unregister();
65
- callback(ev);
66
- }
67
- };
68
- if (el) {
69
- el.addEventListener('webkitAnimationEnd', onTransitionEnd, opts);
70
- el.addEventListener('animationend', onTransitionEnd, opts);
71
- unRegTrans = () => {
72
- el.removeEventListener('webkitAnimationEnd', onTransitionEnd, opts);
73
- el.removeEventListener('animationend', onTransitionEnd, opts);
74
- };
75
- }
76
- return unregister;
77
- };
78
- // TODO(FW-2832): type
79
- const generateKeyframeRules = (keyframes = []) => {
80
- return keyframes
81
- .map((keyframe) => {
82
- const offset = keyframe.offset;
83
- const frameString = [];
84
- for (const property in keyframe) {
85
- // eslint-disable-next-line no-prototype-builtins
86
- if (keyframe.hasOwnProperty(property) && property !== 'offset') {
87
- frameString.push(`${property}: ${keyframe[property]};`);
88
- }
89
- }
90
- return `${offset * 100}% { ${frameString.join(' ')} }`;
91
- })
92
- .join(' ');
93
- };
94
- const keyframeIds = [];
95
- const generateKeyframeName = (keyframeRules) => {
96
- let index = keyframeIds.indexOf(keyframeRules);
97
- if (index < 0) {
98
- index = keyframeIds.push(keyframeRules) - 1;
99
- }
100
- return `ion-animation-${index}`;
101
- };
102
- const getStyleContainer = (element) => {
103
- // getRootNode is not always available in SSR environments.
104
- // TODO(FW-2832): types
105
- const rootNode = element.getRootNode !== undefined ? element.getRootNode() : element;
106
- return rootNode.head || rootNode;
107
- };
108
- const createKeyframeStylesheet = (keyframeName, keyframeRules, element) => {
109
- var _a;
110
- const styleContainer = getStyleContainer(element);
111
- const keyframePrefix = getAnimationPrefix(element);
112
- const existingStylesheet = styleContainer.querySelector('#' + keyframeName);
113
- if (existingStylesheet) {
114
- return existingStylesheet;
115
- }
116
- const stylesheet = ((_a = element.ownerDocument) !== null && _a !== void 0 ? _a : document).createElement('style');
117
- stylesheet.id = keyframeName;
118
- stylesheet.textContent = `@${keyframePrefix}keyframes ${keyframeName} { ${keyframeRules} } @${keyframePrefix}keyframes ${keyframeName}-alt { ${keyframeRules} }`;
119
- styleContainer.appendChild(stylesheet);
120
- return stylesheet;
121
- };
122
19
  const addClassToArray = (classes = [], className) => {
123
20
  if (className !== undefined) {
124
21
  const classNameToAppend = Array.isArray(className) ? className : [className];
@@ -146,14 +43,12 @@ const createAnimation = (animationId) => {
146
43
  let numAnimationsRunning = 0;
147
44
  let shouldForceLinearEasing = false;
148
45
  let shouldForceSyncPlayback = false;
149
- let cssAnimationsTimerFallback;
150
46
  let forceDirectionValue;
151
47
  let forceDurationValue;
152
48
  let forceDelayValue;
153
49
  let willComplete = true;
154
50
  let finished = false;
155
51
  let shouldCalculateNumAnimations = true;
156
- let keyframeName;
157
52
  let ani;
158
53
  let paused = false;
159
54
  const id = animationId;
@@ -170,10 +65,16 @@ const createAnimation = (animationId) => {
170
65
  const webAnimations = [];
171
66
  const supportsAnimationEffect = typeof AnimationEffect === 'function' ||
172
67
  (win !== undefined && typeof win.AnimationEffect === 'function');
68
+ /**
69
+ * This is a feature detection for Web Animations.
70
+ *
71
+ * Certain environments such as emulated browser environments for testing,
72
+ * do not support Web Animations. As a result, we need to check for support
73
+ * and provide a fallback to test certain functionality related to Web Animations.
74
+ */
173
75
  const supportsWebAnimations = typeof Element === 'function' &&
174
76
  typeof Element.prototype.animate === 'function' &&
175
77
  supportsAnimationEffect;
176
- const ANIMATION_END_FALLBACK_PADDING_MS = 100;
177
78
  const getWebAnimations = () => {
178
79
  return webAnimations;
179
80
  };
@@ -261,21 +162,6 @@ const createAnimation = (animationId) => {
261
162
  });
262
163
  webAnimations.length = 0;
263
164
  }
264
- else {
265
- const elementsArray = elements.slice();
266
- raf(() => {
267
- elementsArray.forEach((element) => {
268
- removeStyleProperty(element, 'animation-name');
269
- removeStyleProperty(element, 'animation-duration');
270
- removeStyleProperty(element, 'animation-timing-function');
271
- removeStyleProperty(element, 'animation-iteration-count');
272
- removeStyleProperty(element, 'animation-delay');
273
- removeStyleProperty(element, 'animation-play-state');
274
- removeStyleProperty(element, 'animation-fill-mode');
275
- removeStyleProperty(element, 'animation-direction');
276
- });
277
- });
278
- }
279
165
  };
280
166
  /**
281
167
  * Removes the animation's stylesheets
@@ -533,9 +419,6 @@ const createAnimation = (animationId) => {
533
419
  }
534
420
  });
535
421
  }
536
- else {
537
- initializeCSSAnimation();
538
- }
539
422
  };
540
423
  /**
541
424
  * Run all "before" animation hooks.
@@ -565,7 +448,6 @@ const createAnimation = (animationId) => {
565
448
  * Run all "after" animation hooks.
566
449
  */
567
450
  const afterAnimation = () => {
568
- clearCSSAnimationsTimeout();
569
451
  // Runs all after read callbacks
570
452
  _afterAddReadFunctions.forEach((callback) => callback());
571
453
  // Runs all after write callbacks
@@ -621,32 +503,6 @@ const createAnimation = (animationId) => {
621
503
  }
622
504
  }
623
505
  };
624
- const initializeCSSAnimation = (toggleAnimationName = true) => {
625
- cleanUpStyleSheets();
626
- const processedKeyframes = processKeyframes(_keyframes);
627
- elements.forEach((element) => {
628
- if (processedKeyframes.length > 0) {
629
- const keyframeRules = generateKeyframeRules(processedKeyframes);
630
- keyframeName = animationId !== undefined ? animationId : generateKeyframeName(keyframeRules);
631
- const stylesheet = createKeyframeStylesheet(keyframeName, keyframeRules, element);
632
- stylesheets.push(stylesheet);
633
- setStyleProperty(element, 'animation-duration', `${getDuration()}ms`);
634
- setStyleProperty(element, 'animation-timing-function', getEasing());
635
- setStyleProperty(element, 'animation-delay', `${getDelay()}ms`);
636
- setStyleProperty(element, 'animation-fill-mode', getFill());
637
- setStyleProperty(element, 'animation-direction', getDirection());
638
- const iterationsCount = getIterations() === Infinity ? 'infinite' : getIterations().toString();
639
- setStyleProperty(element, 'animation-iteration-count', iterationsCount);
640
- setStyleProperty(element, 'animation-play-state', 'paused');
641
- if (toggleAnimationName) {
642
- setStyleProperty(element, 'animation-name', `${stylesheet.id}-alt`);
643
- }
644
- raf(() => {
645
- setStyleProperty(element, 'animation-name', stylesheet.id || null);
646
- });
647
- }
648
- });
649
- };
650
506
  const initializeWebAnimation = () => {
651
507
  elements.forEach((element) => {
652
508
  const animation = element.animate(_keyframes, {
@@ -667,15 +523,12 @@ const createAnimation = (animationId) => {
667
523
  };
668
524
  }
669
525
  };
670
- const initializeAnimation = (toggleAnimationName = true) => {
526
+ const initializeAnimation = () => {
671
527
  beforeAnimation();
672
528
  if (_keyframes.length > 0) {
673
529
  if (supportsWebAnimations) {
674
530
  initializeWebAnimation();
675
531
  }
676
- else {
677
- initializeCSSAnimation(toggleAnimationName);
678
- }
679
532
  }
680
533
  initialized = true;
681
534
  };
@@ -688,15 +541,6 @@ const createAnimation = (animationId) => {
688
541
  animation.pause();
689
542
  });
690
543
  }
691
- else {
692
- const animationDuration = `-${getDuration() * step}ms`;
693
- elements.forEach((element) => {
694
- if (_keyframes.length > 0) {
695
- setStyleProperty(element, 'animation-delay', animationDuration);
696
- setStyleProperty(element, 'animation-play-state', 'paused');
697
- }
698
- });
699
- }
700
544
  };
701
545
  const updateWebAnimation = (step) => {
702
546
  webAnimations.forEach((animation) => {
@@ -713,26 +557,6 @@ const createAnimation = (animationId) => {
713
557
  setAnimationStep(step);
714
558
  }
715
559
  };
716
- const updateCSSAnimation = (toggleAnimationName = true, step) => {
717
- raf(() => {
718
- elements.forEach((element) => {
719
- setStyleProperty(element, 'animation-name', keyframeName || null);
720
- setStyleProperty(element, 'animation-duration', `${getDuration()}ms`);
721
- setStyleProperty(element, 'animation-timing-function', getEasing());
722
- setStyleProperty(element, 'animation-delay', step !== undefined ? `-${step * getDuration()}ms` : `${getDelay()}ms`);
723
- setStyleProperty(element, 'animation-fill-mode', getFill() || null);
724
- setStyleProperty(element, 'animation-direction', getDirection() || null);
725
- const iterationsCount = getIterations() === Infinity ? 'infinite' : getIterations().toString();
726
- setStyleProperty(element, 'animation-iteration-count', iterationsCount);
727
- if (toggleAnimationName) {
728
- setStyleProperty(element, 'animation-name', `${keyframeName}-alt`);
729
- }
730
- raf(() => {
731
- setStyleProperty(element, 'animation-name', keyframeName || null);
732
- });
733
- });
734
- });
735
- };
736
560
  const update = (deep = false, toggleAnimationName = true, step) => {
737
561
  if (deep) {
738
562
  childAnimations.forEach((animation) => {
@@ -742,9 +566,6 @@ const createAnimation = (animationId) => {
742
566
  if (supportsWebAnimations) {
743
567
  updateWebAnimation(step);
744
568
  }
745
- else {
746
- updateCSSAnimation(toggleAnimationName, step);
747
- }
748
569
  return ani;
749
570
  };
750
571
  const progressStart = (forceLinearEasing = false, step) => {
@@ -827,67 +648,8 @@ const createAnimation = (animationId) => {
827
648
  pauseAnimation();
828
649
  return ani;
829
650
  };
830
- const onAnimationEndFallback = () => {
831
- cssAnimationsTimerFallback = undefined;
832
- animationFinish();
833
- };
834
- const clearCSSAnimationsTimeout = () => {
835
- if (cssAnimationsTimerFallback) {
836
- clearTimeout(cssAnimationsTimerFallback);
837
- }
838
- };
839
651
  const playCSSAnimations = () => {
840
- clearCSSAnimationsTimeout();
841
- raf(() => {
842
- elements.forEach((element) => {
843
- if (_keyframes.length > 0) {
844
- setStyleProperty(element, 'animation-play-state', 'running');
845
- }
846
- });
847
- });
848
- if (_keyframes.length === 0 || elements.length === 0) {
849
- animationFinish();
850
- }
851
- else {
852
- /**
853
- * This is a catchall in the event that a CSS Animation did not finish.
854
- * The Web Animations API has mechanisms in place for preventing this.
855
- * CSS Animations will not fire an `animationend` event
856
- * for elements with `display: none`. The Web Animations API
857
- * accounts for this, but using raw CSS Animations requires
858
- * this workaround.
859
- */
860
- const animationDelay = getDelay() || 0;
861
- const animationDuration = getDuration() || 0;
862
- const animationIterations = getIterations() || 1;
863
- // No need to set a timeout when animation has infinite iterations
864
- if (isFinite(animationIterations)) {
865
- cssAnimationsTimerFallback = setTimeout(onAnimationEndFallback, animationDelay + animationDuration * animationIterations + ANIMATION_END_FALLBACK_PADDING_MS);
866
- }
867
- animationEnd(elements[0], () => {
868
- clearCSSAnimationsTimeout();
869
- /**
870
- * Ensure that clean up
871
- * is always done a frame
872
- * before the onFinish handlers
873
- * are fired. Otherwise, there
874
- * may be flickering if a new
875
- * animation is started on the same
876
- * element too quickly
877
- */
878
- raf(() => {
879
- clearCSSAnimationPlayState();
880
- raf(animationFinish);
881
- });
882
- });
883
- }
884
- };
885
- const clearCSSAnimationPlayState = () => {
886
- elements.forEach((element) => {
887
- removeStyleProperty(element, 'animation-duration');
888
- removeStyleProperty(element, 'animation-delay');
889
- removeStyleProperty(element, 'animation-play-state');
890
- });
652
+ animationFinish();
891
653
  };
892
654
  const playWebAnimations = () => {
893
655
  webAnimations.forEach((animation) => {
@@ -902,9 +664,6 @@ const createAnimation = (animationId) => {
902
664
  setAnimationStep(0);
903
665
  updateWebAnimation();
904
666
  }
905
- else {
906
- updateCSSAnimation();
907
- }
908
667
  };
909
668
  const play = (opts) => {
910
669
  return new Promise((resolve) => {
@@ -8,10 +8,10 @@ import { o as openURL, c as createColorClasses, h as hostContext } from './theme
8
8
  import { b as getIonMode } from './ionic-global.js';
9
9
  import { d as defineCustomElement$1 } from './ripple-effect.js';
10
10
 
11
- const buttonIosCss = ":host{--overflow:hidden;--ripple-color:currentColor;--border-width:initial;--border-color:initial;--border-style:initial;--color-activated:var(--color);--color-focused:var(--color);--color-hover:var(--color);--box-shadow:none;display:inline-block;width:auto;color:var(--color);font-family:var(--ion-font-family, inherit);text-align:center;text-decoration:none;white-space:normal;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:top;vertical-align:-webkit-baseline-middle;-webkit-font-kerning:none;font-kerning:none}:host(.button-disabled){cursor:default;opacity:0.5;pointer-events:none}:host(.button-solid){--background:var(--ion-color-primary, #0054e9);--color:var(--ion-color-primary-contrast, #fff)}:host(.button-outline){--border-color:var(--ion-color-primary, #0054e9);--background:transparent;--color:var(--ion-color-primary, #0054e9)}:host(.button-clear){--border-width:0;--background:transparent;--color:var(--ion-color-primary, #0054e9)}:host(.button-block){display:block}:host(.button-block) .button-native{margin-left:0;margin-right:0;width:100%;clear:both;contain:content}:host(.button-block) .button-native::after{clear:both}:host(.button-full){display:block}:host(.button-full) .button-native{margin-left:0;margin-right:0;width:100%;contain:content}:host(.button-full:not(.button-round)) .button-native{border-radius:0;border-right-width:0;border-left-width:0}.button-native{border-radius:var(--border-radius);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;width:100%;height:100%;min-height:inherit;-webkit-transition:var(--transition);transition:var(--transition);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);outline:none;background:var(--background);line-height:1;-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);contain:layout style;cursor:pointer;opacity:var(--opacity);overflow:var(--overflow);z-index:0;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;appearance:none}.button-native::-moz-focus-inner{border:0}.button-inner{display:-ms-flexbox;display:flex;position:relative;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;z-index:1}::slotted([slot=start]),::slotted([slot=end]){-ms-flex-negative:0;flex-shrink:0}::slotted(ion-icon){font-size:1.35em;pointer-events:none}::slotted(ion-icon[slot=start]){-webkit-margin-start:-0.3em;margin-inline-start:-0.3em;-webkit-margin-end:0.3em;margin-inline-end:0.3em;margin-top:0;margin-bottom:0}::slotted(ion-icon[slot=end]){-webkit-margin-start:0.3em;margin-inline-start:0.3em;-webkit-margin-end:-0.2em;margin-inline-end:-0.2em;margin-top:0;margin-bottom:0}::slotted(ion-icon[slot=icon-only]){font-size:1.8em}ion-ripple-effect{color:var(--ripple-color)}.button-native::after{left:0;right:0;top:0;bottom:0;position:absolute;content:\"\";opacity:0}:host(.ion-focused){color:var(--color-focused)}:host(.ion-focused) .button-native::after{background:var(--background-focused);opacity:var(--background-focused-opacity)}@media (any-hover: hover){:host(:hover){color:var(--color-hover)}:host(:hover) .button-native::after{background:var(--background-hover);opacity:var(--background-hover-opacity)}}:host(.ion-activated){color:var(--color-activated)}:host(.ion-activated) .button-native::after{background:var(--background-activated);opacity:var(--background-activated-opacity)}:host(.button-solid.ion-color) .button-native{background:var(--ion-color-base);color:var(--ion-color-contrast)}:host(.button-outline.ion-color) .button-native{border-color:var(--ion-color-base);background:transparent;color:var(--ion-color-base)}:host(.button-clear.ion-color) .button-native{background:transparent;color:var(--ion-color-base)}:host(.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native{color:var(--ion-toolbar-color, var(--color))}:host(.button-outline.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native{border-color:var(--ion-toolbar-color, var(--color, var(--border-color)))}:host(.button-solid.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native{background:var(--ion-toolbar-color, var(--background));color:var(--ion-toolbar-background, var(--color))}:host(.button-outline.ion-activated.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native{background:var(--ion-toolbar-color, var(--color));color:var(--ion-toolbar-background, var(--background), var(--ion-color-primary-contrast, #fff))}:host{--border-radius:14px;--padding-top:13px;--padding-bottom:13px;--padding-start:1em;--padding-end:1em;--transition:background-color, opacity 100ms linear;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;margin-top:4px;margin-bottom:4px;min-height:3.1em;font-size:min(1rem, 48px);font-weight:500;letter-spacing:0}:host(.button-solid){--background-activated:var(--ion-color-primary-shade, #004acd);--background-focused:var(--ion-color-primary-shade, #004acd);--background-hover:var(--ion-color-primary-tint, #1a65eb);--background-activated-opacity:1;--background-focused-opacity:1;--background-hover-opacity:1}:host(.button-outline){--border-radius:14px;--border-width:1px;--border-style:solid;--background-activated:var(--ion-color-primary, #0054e9);--background-focused:var(--ion-color-primary, #0054e9);--background-hover:transparent;--background-focused-opacity:.1;--color-activated:var(--ion-color-primary-contrast, #fff)}:host(.button-clear){--background-activated:transparent;--background-activated-opacity:0;--background-focused:var(--ion-color-primary, #0054e9);--background-hover:transparent;--background-focused-opacity:.1;font-size:min(1.0625rem, 51px);font-weight:normal}:host(.in-buttons){font-size:clamp(17px, 1.0625rem, 21.08px);font-weight:400}:host(.button-large){--border-radius:16px;--padding-top:17px;--padding-start:1em;--padding-end:1em;--padding-bottom:17px;min-height:3.1em;font-size:min(1.25rem, 60px)}:host(.button-small){--border-radius:6px;--padding-top:4px;--padding-start:0.9em;--padding-end:0.9em;--padding-bottom:4px;min-height:2.1em;font-size:min(0.8125rem, 39px)}:host(.button-has-icon-only){--padding-top:0;--padding-bottom:0}:host(.button-round){--border-radius:64px;--padding-top:0;--padding-start:26px;--padding-end:26px;--padding-bottom:0}:host(.button-strong){font-weight:600}:host(.button-outline.ion-focused.ion-color) .button-native,:host(.button-clear.ion-focused.ion-color) .button-native{color:var(--ion-color-base)}:host(.button-outline.ion-focused.ion-color) .button-native::after,:host(.button-clear.ion-focused.ion-color) .button-native::after{background:var(--ion-color-base)}:host(.button-solid.ion-color.ion-focused) .button-native::after{background:var(--ion-color-shade)}@media (any-hover: hover){:host(.button-clear:not(.ion-activated):hover),:host(.button-outline:not(.ion-activated):hover){opacity:0.6}:host(.button-clear.ion-color:hover) .button-native,:host(.button-outline.ion-color:hover) .button-native{color:var(--ion-color-base)}:host(.button-clear.ion-color:hover) .button-native::after,:host(.button-outline.ion-color:hover) .button-native::after{background:transparent}:host(.button-solid.ion-color:hover) .button-native::after{background:var(--ion-color-tint)}:host(:hover.button-solid.in-toolbar:not(.ion-color):not(.in-toolbar-color):not(.ion-activated)) .button-native::after{background:#fff;opacity:0.1}}:host(.button-clear.ion-activated){opacity:0.4}:host(.button-outline.ion-activated.ion-color) .button-native{color:var(--ion-color-contrast)}:host(.button-outline.ion-activated.ion-color) .button-native::after{background:var(--ion-color-base)}:host(.button-solid.ion-color.ion-activated) .button-native::after{background:var(--ion-color-shade)}";
11
+ const buttonIosCss = ":host{--overflow:hidden;--ripple-color:currentColor;--border-width:initial;--border-color:initial;--border-style:initial;--color-activated:var(--color);--color-focused:var(--color);--color-hover:var(--color);--box-shadow:none;display:inline-block;width:auto;color:var(--color);font-family:var(--ion-font-family, inherit);text-align:center;text-decoration:none;white-space:normal;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:top;vertical-align:-webkit-baseline-middle;-webkit-font-kerning:none;font-kerning:none}:host(.button-disabled){cursor:default;opacity:0.5;pointer-events:none}:host(.button-solid){--background:var(--ion-color-primary, #0054e9);--color:var(--ion-color-primary-contrast, #fff)}:host(.button-outline){--border-color:var(--ion-color-primary, #0054e9);--background:transparent;--color:var(--ion-color-primary, #0054e9)}:host(.button-clear){--border-width:0;--background:transparent;--color:var(--ion-color-primary, #0054e9)}:host(.button-block){display:block}:host(.button-block) .button-native{margin-left:0;margin-right:0;width:100%;clear:both;contain:content}:host(.button-block) .button-native::after{clear:both}:host(.button-full){display:block}:host(.button-full) .button-native{margin-left:0;margin-right:0;width:100%;contain:content}:host(.button-full:not(.button-round)) .button-native{border-radius:0;border-right-width:0;border-left-width:0}.button-native{border-radius:var(--border-radius);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;width:100%;height:100%;min-height:inherit;-webkit-transition:var(--transition);transition:var(--transition);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);outline:none;background:var(--background);line-height:1;-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);contain:layout style;cursor:pointer;opacity:var(--opacity);overflow:var(--overflow);z-index:0;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;appearance:none}.button-native::-moz-focus-inner{border:0}.button-inner{display:-ms-flexbox;display:flex;position:relative;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;z-index:1}::slotted([slot=start]),::slotted([slot=end]){-ms-flex-negative:0;flex-shrink:0}::slotted(ion-icon){font-size:1.35em;pointer-events:none}::slotted(ion-icon[slot=start]){-webkit-margin-start:-0.3em;margin-inline-start:-0.3em;-webkit-margin-end:0.3em;margin-inline-end:0.3em;margin-top:0;margin-bottom:0}::slotted(ion-icon[slot=end]){-webkit-margin-start:0.3em;margin-inline-start:0.3em;-webkit-margin-end:-0.2em;margin-inline-end:-0.2em;margin-top:0;margin-bottom:0}ion-ripple-effect{color:var(--ripple-color)}.button-native::after{left:0;right:0;top:0;bottom:0;position:absolute;content:\"\";opacity:0}:host(.ion-focused){color:var(--color-focused)}:host(.ion-focused) .button-native::after{background:var(--background-focused);opacity:var(--background-focused-opacity)}@media (any-hover: hover){:host(:hover){color:var(--color-hover)}:host(:hover) .button-native::after{background:var(--background-hover);opacity:var(--background-hover-opacity)}}:host(.ion-activated){color:var(--color-activated)}:host(.ion-activated) .button-native::after{background:var(--background-activated);opacity:var(--background-activated-opacity)}:host(.button-solid.ion-color) .button-native{background:var(--ion-color-base);color:var(--ion-color-contrast)}:host(.button-outline.ion-color) .button-native{border-color:var(--ion-color-base);background:transparent;color:var(--ion-color-base)}:host(.button-clear.ion-color) .button-native{background:transparent;color:var(--ion-color-base)}:host(.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native{color:var(--ion-toolbar-color, var(--color))}:host(.button-outline.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native{border-color:var(--ion-toolbar-color, var(--color, var(--border-color)))}:host(.button-solid.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native{background:var(--ion-toolbar-color, var(--background));color:var(--ion-toolbar-background, var(--color))}:host(.button-outline.ion-activated.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native{background:var(--ion-toolbar-color, var(--color));color:var(--ion-toolbar-background, var(--background), var(--ion-color-primary-contrast, #fff))}:host{--border-radius:14px;--padding-top:13px;--padding-bottom:13px;--padding-start:1em;--padding-end:1em;--transition:background-color, opacity 100ms linear;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;margin-top:4px;margin-bottom:4px;min-height:3.1em;font-size:min(1rem, 48px);font-weight:500;letter-spacing:0}:host(.button-solid){--background-activated:var(--ion-color-primary-shade, #004acd);--background-focused:var(--ion-color-primary-shade, #004acd);--background-hover:var(--ion-color-primary-tint, #1a65eb);--background-activated-opacity:1;--background-focused-opacity:1;--background-hover-opacity:1}:host(.button-outline){--border-radius:14px;--border-width:1px;--border-style:solid;--background-activated:var(--ion-color-primary, #0054e9);--background-focused:var(--ion-color-primary, #0054e9);--background-hover:transparent;--background-focused-opacity:.1;--color-activated:var(--ion-color-primary-contrast, #fff)}:host(.button-clear){--background-activated:transparent;--background-activated-opacity:0;--background-focused:var(--ion-color-primary, #0054e9);--background-hover:transparent;--background-focused-opacity:.1;font-size:min(1.0625rem, 51px);font-weight:normal}:host(.in-buttons){font-size:clamp(17px, 1.0625rem, 21.08px);font-weight:400}:host(.button-large){--border-radius:16px;--padding-top:17px;--padding-start:1em;--padding-end:1em;--padding-bottom:17px;min-height:3.1em;font-size:min(1.25rem, 60px)}:host(.button-small){--border-radius:6px;--padding-top:4px;--padding-start:0.9em;--padding-end:0.9em;--padding-bottom:4px;min-height:2.1em;font-size:min(0.8125rem, 39px)}:host(.button-round){--border-radius:999px;--padding-top:0;--padding-start:26px;--padding-end:26px;--padding-bottom:0}:host(.button-strong){font-weight:600}:host(.button-has-icon-only){--padding-top:0;--padding-bottom:var(--padding-top);--padding-end:var(--padding-top);--padding-start:var(--padding-end);min-width:clamp(30px, 2.125em, 60px);min-height:clamp(30px, 2.125em, 60px)}::slotted(ion-icon[slot=icon-only]){font-size:1.125em}:host(.button-small.button-has-icon-only){min-width:clamp(23px, 2.16em, 54px);min-height:clamp(23px, 2.16em, 54px)}:host(.button-small) ::slotted(ion-icon[slot=icon-only]){font-size:1.4em}:host(.button-large.button-has-icon-only){min-width:clamp(46px, 2.5em, 78px);min-height:clamp(46px, 2.5em, 78px)}:host(.button-large) ::slotted(ion-icon[slot=icon-only]){font-size:1em}:host(.button-outline.ion-focused.ion-color) .button-native,:host(.button-clear.ion-focused.ion-color) .button-native{color:var(--ion-color-base)}:host(.button-outline.ion-focused.ion-color) .button-native::after,:host(.button-clear.ion-focused.ion-color) .button-native::after{background:var(--ion-color-base)}:host(.button-solid.ion-color.ion-focused) .button-native::after{background:var(--ion-color-shade)}@media (any-hover: hover){:host(.button-clear:not(.ion-activated):hover),:host(.button-outline:not(.ion-activated):hover){opacity:0.6}:host(.button-clear.ion-color:hover) .button-native,:host(.button-outline.ion-color:hover) .button-native{color:var(--ion-color-base)}:host(.button-clear.ion-color:hover) .button-native::after,:host(.button-outline.ion-color:hover) .button-native::after{background:transparent}:host(.button-solid.ion-color:hover) .button-native::after{background:var(--ion-color-tint)}:host(:hover.button-solid.in-toolbar:not(.ion-color):not(.in-toolbar-color):not(.ion-activated)) .button-native::after{background:#fff;opacity:0.1}}:host(.button-clear.ion-activated){opacity:0.4}:host(.button-outline.ion-activated.ion-color) .button-native{color:var(--ion-color-contrast)}:host(.button-outline.ion-activated.ion-color) .button-native::after{background:var(--ion-color-base)}:host(.button-solid.ion-color.ion-activated) .button-native::after{background:var(--ion-color-shade)}";
12
12
  const IonButtonIosStyle0 = buttonIosCss;
13
13
 
14
- const buttonMdCss = ":host{--overflow:hidden;--ripple-color:currentColor;--border-width:initial;--border-color:initial;--border-style:initial;--color-activated:var(--color);--color-focused:var(--color);--color-hover:var(--color);--box-shadow:none;display:inline-block;width:auto;color:var(--color);font-family:var(--ion-font-family, inherit);text-align:center;text-decoration:none;white-space:normal;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:top;vertical-align:-webkit-baseline-middle;-webkit-font-kerning:none;font-kerning:none}:host(.button-disabled){cursor:default;opacity:0.5;pointer-events:none}:host(.button-solid){--background:var(--ion-color-primary, #0054e9);--color:var(--ion-color-primary-contrast, #fff)}:host(.button-outline){--border-color:var(--ion-color-primary, #0054e9);--background:transparent;--color:var(--ion-color-primary, #0054e9)}:host(.button-clear){--border-width:0;--background:transparent;--color:var(--ion-color-primary, #0054e9)}:host(.button-block){display:block}:host(.button-block) .button-native{margin-left:0;margin-right:0;width:100%;clear:both;contain:content}:host(.button-block) .button-native::after{clear:both}:host(.button-full){display:block}:host(.button-full) .button-native{margin-left:0;margin-right:0;width:100%;contain:content}:host(.button-full:not(.button-round)) .button-native{border-radius:0;border-right-width:0;border-left-width:0}.button-native{border-radius:var(--border-radius);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;width:100%;height:100%;min-height:inherit;-webkit-transition:var(--transition);transition:var(--transition);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);outline:none;background:var(--background);line-height:1;-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);contain:layout style;cursor:pointer;opacity:var(--opacity);overflow:var(--overflow);z-index:0;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;appearance:none}.button-native::-moz-focus-inner{border:0}.button-inner{display:-ms-flexbox;display:flex;position:relative;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;z-index:1}::slotted([slot=start]),::slotted([slot=end]){-ms-flex-negative:0;flex-shrink:0}::slotted(ion-icon){font-size:1.35em;pointer-events:none}::slotted(ion-icon[slot=start]){-webkit-margin-start:-0.3em;margin-inline-start:-0.3em;-webkit-margin-end:0.3em;margin-inline-end:0.3em;margin-top:0;margin-bottom:0}::slotted(ion-icon[slot=end]){-webkit-margin-start:0.3em;margin-inline-start:0.3em;-webkit-margin-end:-0.2em;margin-inline-end:-0.2em;margin-top:0;margin-bottom:0}::slotted(ion-icon[slot=icon-only]){font-size:1.8em}ion-ripple-effect{color:var(--ripple-color)}.button-native::after{left:0;right:0;top:0;bottom:0;position:absolute;content:\"\";opacity:0}:host(.ion-focused){color:var(--color-focused)}:host(.ion-focused) .button-native::after{background:var(--background-focused);opacity:var(--background-focused-opacity)}@media (any-hover: hover){:host(:hover){color:var(--color-hover)}:host(:hover) .button-native::after{background:var(--background-hover);opacity:var(--background-hover-opacity)}}:host(.ion-activated){color:var(--color-activated)}:host(.ion-activated) .button-native::after{background:var(--background-activated);opacity:var(--background-activated-opacity)}:host(.button-solid.ion-color) .button-native{background:var(--ion-color-base);color:var(--ion-color-contrast)}:host(.button-outline.ion-color) .button-native{border-color:var(--ion-color-base);background:transparent;color:var(--ion-color-base)}:host(.button-clear.ion-color) .button-native{background:transparent;color:var(--ion-color-base)}:host(.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native{color:var(--ion-toolbar-color, var(--color))}:host(.button-outline.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native{border-color:var(--ion-toolbar-color, var(--color, var(--border-color)))}:host(.button-solid.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native{background:var(--ion-toolbar-color, var(--background));color:var(--ion-toolbar-background, var(--color))}:host(.button-outline.ion-activated.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native{background:var(--ion-toolbar-color, var(--color));color:var(--ion-toolbar-background, var(--background), var(--ion-color-primary-contrast, #fff))}:host{--border-radius:4px;--padding-top:8px;--padding-bottom:8px;--padding-start:1.1em;--padding-end:1.1em;--transition:box-shadow 280ms cubic-bezier(.4, 0, .2, 1),\n background-color 15ms linear,\n color 15ms linear;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;margin-top:4px;margin-bottom:4px;min-height:36px;font-size:0.875rem;font-weight:500;letter-spacing:0.06em;text-transform:uppercase}:host(.button-solid){--background-activated:transparent;--background-hover:var(--ion-color-primary-contrast, #fff);--background-focused:var(--ion-color-primary-contrast, #fff);--background-activated-opacity:0;--background-focused-opacity:.24;--background-hover-opacity:.08;--box-shadow:0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12)}:host(.button-solid.ion-activated){--box-shadow:0 5px 5px -3px rgba(0, 0, 0, 0.2), 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12)}:host(.button-outline){--border-width:2px;--border-style:solid;--box-shadow:none;--background-activated:transparent;--background-focused:var(--ion-color-primary, #0054e9);--background-hover:var(--ion-color-primary, #0054e9);--background-activated-opacity:0;--background-focused-opacity:.12;--background-hover-opacity:.04}:host(.button-outline.ion-activated.ion-color) .button-native{background:transparent}:host(.button-clear){--background-activated:transparent;--background-focused:var(--ion-color-primary, #0054e9);--background-hover:var(--ion-color-primary, #0054e9);--background-activated-opacity:0;--background-focused-opacity:.12;--background-hover-opacity:.04}:host(.button-round){--border-radius:64px;--padding-top:0;--padding-start:26px;--padding-end:26px;--padding-bottom:0}:host(.button-large){--padding-top:14px;--padding-start:1em;--padding-end:1em;--padding-bottom:14px;min-height:2.8em;font-size:1.25rem}:host(.button-small){--padding-top:4px;--padding-start:0.9em;--padding-end:0.9em;--padding-bottom:4px;min-height:2.1em;font-size:0.8125rem}:host(.button-has-icon-only){--padding-top:0;--padding-bottom:0}:host(.button-strong){font-weight:bold}::slotted(ion-icon[slot=icon-only]){padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}:host(.button-solid.ion-color.ion-focused) .button-native::after{background:var(--ion-color-contrast)}:host(.button-clear.ion-color.ion-focused) .button-native::after,:host(.button-outline.ion-color.ion-focused) .button-native::after{background:var(--ion-color-base)}@media (any-hover: hover){:host(.button-solid.ion-color:hover) .button-native::after{background:var(--ion-color-contrast)}:host(.button-clear.ion-color:hover) .button-native::after,:host(.button-outline.ion-color:hover) .button-native::after{background:var(--ion-color-base)}}";
14
+ const buttonMdCss = ":host{--overflow:hidden;--ripple-color:currentColor;--border-width:initial;--border-color:initial;--border-style:initial;--color-activated:var(--color);--color-focused:var(--color);--color-hover:var(--color);--box-shadow:none;display:inline-block;width:auto;color:var(--color);font-family:var(--ion-font-family, inherit);text-align:center;text-decoration:none;white-space:normal;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:top;vertical-align:-webkit-baseline-middle;-webkit-font-kerning:none;font-kerning:none}:host(.button-disabled){cursor:default;opacity:0.5;pointer-events:none}:host(.button-solid){--background:var(--ion-color-primary, #0054e9);--color:var(--ion-color-primary-contrast, #fff)}:host(.button-outline){--border-color:var(--ion-color-primary, #0054e9);--background:transparent;--color:var(--ion-color-primary, #0054e9)}:host(.button-clear){--border-width:0;--background:transparent;--color:var(--ion-color-primary, #0054e9)}:host(.button-block){display:block}:host(.button-block) .button-native{margin-left:0;margin-right:0;width:100%;clear:both;contain:content}:host(.button-block) .button-native::after{clear:both}:host(.button-full){display:block}:host(.button-full) .button-native{margin-left:0;margin-right:0;width:100%;contain:content}:host(.button-full:not(.button-round)) .button-native{border-radius:0;border-right-width:0;border-left-width:0}.button-native{border-radius:var(--border-radius);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;width:100%;height:100%;min-height:inherit;-webkit-transition:var(--transition);transition:var(--transition);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);outline:none;background:var(--background);line-height:1;-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);contain:layout style;cursor:pointer;opacity:var(--opacity);overflow:var(--overflow);z-index:0;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;appearance:none}.button-native::-moz-focus-inner{border:0}.button-inner{display:-ms-flexbox;display:flex;position:relative;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;z-index:1}::slotted([slot=start]),::slotted([slot=end]){-ms-flex-negative:0;flex-shrink:0}::slotted(ion-icon){font-size:1.35em;pointer-events:none}::slotted(ion-icon[slot=start]){-webkit-margin-start:-0.3em;margin-inline-start:-0.3em;-webkit-margin-end:0.3em;margin-inline-end:0.3em;margin-top:0;margin-bottom:0}::slotted(ion-icon[slot=end]){-webkit-margin-start:0.3em;margin-inline-start:0.3em;-webkit-margin-end:-0.2em;margin-inline-end:-0.2em;margin-top:0;margin-bottom:0}ion-ripple-effect{color:var(--ripple-color)}.button-native::after{left:0;right:0;top:0;bottom:0;position:absolute;content:\"\";opacity:0}:host(.ion-focused){color:var(--color-focused)}:host(.ion-focused) .button-native::after{background:var(--background-focused);opacity:var(--background-focused-opacity)}@media (any-hover: hover){:host(:hover){color:var(--color-hover)}:host(:hover) .button-native::after{background:var(--background-hover);opacity:var(--background-hover-opacity)}}:host(.ion-activated){color:var(--color-activated)}:host(.ion-activated) .button-native::after{background:var(--background-activated);opacity:var(--background-activated-opacity)}:host(.button-solid.ion-color) .button-native{background:var(--ion-color-base);color:var(--ion-color-contrast)}:host(.button-outline.ion-color) .button-native{border-color:var(--ion-color-base);background:transparent;color:var(--ion-color-base)}:host(.button-clear.ion-color) .button-native{background:transparent;color:var(--ion-color-base)}:host(.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native{color:var(--ion-toolbar-color, var(--color))}:host(.button-outline.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native{border-color:var(--ion-toolbar-color, var(--color, var(--border-color)))}:host(.button-solid.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native{background:var(--ion-toolbar-color, var(--background));color:var(--ion-toolbar-background, var(--color))}:host(.button-outline.ion-activated.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native{background:var(--ion-toolbar-color, var(--color));color:var(--ion-toolbar-background, var(--background), var(--ion-color-primary-contrast, #fff))}:host{--border-radius:4px;--padding-top:8px;--padding-bottom:8px;--padding-start:1.1em;--padding-end:1.1em;--transition:box-shadow 280ms cubic-bezier(.4, 0, .2, 1),\n background-color 15ms linear,\n color 15ms linear;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;margin-top:4px;margin-bottom:4px;min-height:36px;font-size:0.875rem;font-weight:500;letter-spacing:0.06em;text-transform:uppercase}:host(.button-solid){--background-activated:transparent;--background-hover:var(--ion-color-primary-contrast, #fff);--background-focused:var(--ion-color-primary-contrast, #fff);--background-activated-opacity:0;--background-focused-opacity:.24;--background-hover-opacity:.08;--box-shadow:0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12)}:host(.button-solid.ion-activated){--box-shadow:0 5px 5px -3px rgba(0, 0, 0, 0.2), 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12)}:host(.button-outline){--border-width:2px;--border-style:solid;--box-shadow:none;--background-activated:transparent;--background-focused:var(--ion-color-primary, #0054e9);--background-hover:var(--ion-color-primary, #0054e9);--background-activated-opacity:0;--background-focused-opacity:.12;--background-hover-opacity:.04}:host(.button-outline.ion-activated.ion-color) .button-native{background:transparent}:host(.button-clear){--background-activated:transparent;--background-focused:var(--ion-color-primary, #0054e9);--background-hover:var(--ion-color-primary, #0054e9);--background-activated-opacity:0;--background-focused-opacity:.12;--background-hover-opacity:.04}:host(.button-round){--border-radius:999px;--padding-top:0;--padding-start:26px;--padding-end:26px;--padding-bottom:0}:host(.button-large){--padding-top:14px;--padding-start:1em;--padding-end:1em;--padding-bottom:14px;min-height:2.8em;font-size:1.25rem}:host(.button-small){--padding-top:4px;--padding-start:0.9em;--padding-end:0.9em;--padding-bottom:4px;min-height:2.1em;font-size:0.8125rem}:host(.button-strong){font-weight:bold}:host(.button-has-icon-only){--padding-top:0;--padding-bottom:var(--padding-top);--padding-end:var(--padding-top);--padding-start:var(--padding-end);min-width:clamp(30px, 2.86em, 60px);min-height:clamp(30px, 2.86em, 60px)}::slotted(ion-icon[slot=icon-only]){font-size:1.6em}:host(.button-small.button-has-icon-only){min-width:clamp(23px, 2.16em, 54px);min-height:clamp(23px, 2.16em, 54px)}:host(.button-small) ::slotted(ion-icon[slot=icon-only]){font-size:1.23em}:host(.button-large.button-has-icon-only){min-width:clamp(46px, 2.5em, 78px);min-height:clamp(46px, 2.5em, 78px)}:host(.button-large) ::slotted(ion-icon[slot=icon-only]){font-size:1.4em}:host(.button-solid.ion-color.ion-focused) .button-native::after{background:var(--ion-color-contrast)}:host(.button-clear.ion-color.ion-focused) .button-native::after,:host(.button-outline.ion-color.ion-focused) .button-native::after{background:var(--ion-color-base)}@media (any-hover: hover){:host(.button-solid.ion-color:hover) .button-native::after{background:var(--ion-color-contrast)}:host(.button-clear.ion-color:hover) .button-native::after,:host(.button-outline.ion-color:hover) .button-native::after{background:var(--ion-color-base)}}";
15
15
  const IonButtonMdStyle0 = buttonMdCss;
16
16
 
17
17
  const Button = /*@__PURE__*/ proxyCustomElement(class Button extends HTMLElement {
@@ -42,6 +42,18 @@ const Button = /*@__PURE__*/ proxyCustomElement(class Button extends HTMLElement
42
42
  this.onBlur = () => {
43
43
  this.ionBlur.emit();
44
44
  };
45
+ this.slotChanged = () => {
46
+ /**
47
+ * Ensures that the 'has-icon-only' class is properly added
48
+ * or removed from `ion-button` when manipulating the
49
+ * `icon-only` slot.
50
+ *
51
+ * Without this, the 'has-icon-only' class is only checked
52
+ * or added when `ion-button` component first renders.
53
+ */
54
+ this.isCircle = this.hasIconOnly;
55
+ };
56
+ this.isCircle = false;
45
57
  this.color = undefined;
46
58
  this.buttonType = 'button';
47
59
  this.disabled = false;
@@ -202,7 +214,7 @@ const Button = /*@__PURE__*/ proxyCustomElement(class Button extends HTMLElement
202
214
  {
203
215
  type !== 'button' && this.renderHiddenButton();
204
216
  }
205
- return (h(Host, { key: 'cb5af107c877f0c1926045acfd4f6922f7dbcb8d', onClick: this.handleClick, "aria-disabled": disabled ? 'true' : null, class: createColorClasses(color, {
217
+ return (h(Host, { key: 'e926c8ca019c15a5fdf5ac95632f78d8b791fba0', onClick: this.handleClick, "aria-disabled": disabled ? 'true' : null, class: createColorClasses(color, {
206
218
  [mode]: true,
207
219
  [buttonType]: true,
208
220
  [`${buttonType}-${expand}`]: expand !== undefined,
@@ -217,7 +229,7 @@ const Button = /*@__PURE__*/ proxyCustomElement(class Button extends HTMLElement
217
229
  'button-disabled': disabled,
218
230
  'ion-activatable': true,
219
231
  'ion-focusable': true,
220
- }) }, h(TagType, Object.assign({ key: 'bc4c5e6a17fa90e172e56bd481ba24c69419dd1a' }, attrs, { class: "button-native", part: "native", disabled: disabled, onFocus: this.onFocus, onBlur: this.onBlur }, inheritedAttributes), h("span", { key: 'f1eac679bcdf2b40177f920025a49705f726bf0c', class: "button-inner" }, h("slot", { key: '19aa897289923c8e7d16a354f9acac312f0641ea', name: "icon-only" }), h("slot", { key: '0a321ca359f631a2c8708566b3f1b936fe9a4d00', name: "start" }), h("slot", { key: '9ec1b7197ec1b4d858338f45433f6bfa46b81a3d' }), h("slot", { key: 'e632fd3b918ec94e119a5e766371886072292d75', name: "end" })), mode === 'md' && h("ion-ripple-effect", { type: this.rippleType }))));
232
+ }) }, h(TagType, Object.assign({ key: 'e964fd7945ff046464a98e6148256b8bb12b07a8' }, attrs, { class: "button-native", part: "native", disabled: disabled, onFocus: this.onFocus, onBlur: this.onBlur }, inheritedAttributes), h("span", { key: '5eac1c991616ead47b6b7f5ab095dc25831633ad', class: "button-inner" }, h("slot", { key: '8383cfaa82e50dddff7dfe82ca6e1bcb3328871b', name: "icon-only", onSlotchange: this.slotChanged }), h("slot", { key: '423445d26533850b86171095f431caab437ff4f3', name: "start" }), h("slot", { key: 'dcbdc7c3f827e01b8e3792272b72a13e2d99c179' }), h("slot", { key: '9c345224e1d415cfa96460f94626d9bcf49d3829', name: "end" })), mode === 'md' && h("ion-ripple-effect", { type: this.rippleType }))));
221
233
  }
222
234
  get el() { return this; }
223
235
  static get watchers() { return {
@@ -243,7 +255,8 @@ const Button = /*@__PURE__*/ proxyCustomElement(class Button extends HTMLElement
243
255
  "strong": [4],
244
256
  "target": [1],
245
257
  "type": [1],
246
- "form": [1]
258
+ "form": [1],
259
+ "isCircle": [32]
247
260
  }, undefined, {
248
261
  "disabled": ["disabledChanged"]
249
262
  }]);
@@ -47,12 +47,6 @@ var NotificationType;
47
47
  })(NotificationType || (NotificationType = {}));
48
48
  const HapticEngine = {
49
49
  getEngine() {
50
- const tapticEngine = window.TapticEngine;
51
- if (tapticEngine) {
52
- // Cordova
53
- // TODO FW-4707 - Remove this in Ionic 8
54
- return tapticEngine;
55
- }
56
50
  const capacitor = getCapacitor();
57
51
  if (capacitor === null || capacitor === void 0 ? void 0 : capacitor.isPluginAvailable('Haptics')) {
58
52
  // Capacitor
@@ -81,85 +75,43 @@ const HapticEngine = {
81
75
  }
82
76
  return true;
83
77
  },
84
- isCordova() {
85
- return window.TapticEngine !== undefined;
86
- },
87
- isCapacitor() {
88
- return getCapacitor() !== undefined;
89
- },
90
78
  impact(options) {
91
79
  const engine = this.getEngine();
92
80
  if (!engine) {
93
81
  return;
94
82
  }
95
- /**
96
- * To provide backwards compatibility with Cordova apps,
97
- * we convert the style to lowercase.
98
- *
99
- * TODO: FW-4707 - Remove this in Ionic 8
100
- */
101
- const style = this.isCapacitor() ? options.style : options.style.toLowerCase();
102
- engine.impact({ style });
83
+ engine.impact({ style: options.style });
103
84
  },
104
85
  notification(options) {
105
86
  const engine = this.getEngine();
106
87
  if (!engine) {
107
88
  return;
108
89
  }
109
- /**
110
- * To provide backwards compatibility with Cordova apps,
111
- * we convert the style to lowercase.
112
- *
113
- * TODO: FW-4707 - Remove this in Ionic 8
114
- */
115
- const type = this.isCapacitor() ? options.type : options.type.toLowerCase();
116
- engine.notification({ type });
90
+ engine.notification({ type: options.type });
117
91
  },
118
92
  selection() {
119
- /**
120
- * To provide backwards compatibility with Cordova apps,
121
- * we convert the style to lowercase.
122
- *
123
- * TODO: FW-4707 - Remove this in Ionic 8
124
- */
125
- const style = this.isCapacitor() ? ImpactStyle.Light : 'light';
126
- this.impact({ style });
93
+ this.impact({ style: ImpactStyle.Light });
127
94
  },
128
95
  selectionStart() {
129
96
  const engine = this.getEngine();
130
97
  if (!engine) {
131
98
  return;
132
99
  }
133
- if (this.isCapacitor()) {
134
- engine.selectionStart();
135
- }
136
- else {
137
- engine.gestureSelectionStart();
138
- }
100
+ engine.selectionStart();
139
101
  },
140
102
  selectionChanged() {
141
103
  const engine = this.getEngine();
142
104
  if (!engine) {
143
105
  return;
144
106
  }
145
- if (this.isCapacitor()) {
146
- engine.selectionChanged();
147
- }
148
- else {
149
- engine.gestureSelectionChanged();
150
- }
107
+ engine.selectionChanged();
151
108
  },
152
109
  selectionEnd() {
153
110
  const engine = this.getEngine();
154
111
  if (!engine) {
155
112
  return;
156
113
  }
157
- if (this.isCapacitor()) {
158
- engine.selectionEnd();
159
- }
160
- else {
161
- engine.gestureSelectionEnd();
162
- }
114
+ engine.selectionEnd();
163
115
  },
164
116
  };
165
117
  /**
@@ -284,9 +284,6 @@ const assert = (actual, reason) => {
284
284
  throw new Error(message);
285
285
  }
286
286
  };
287
- const now = (ev) => {
288
- return ev.timeStamp || Date.now();
289
- };
290
287
  const pointerCoord = (ev) => {
291
288
  // get X coordinates for either a mouse click
292
289
  // or a touch depending on the given event
@@ -362,4 +359,4 @@ const shallowEqualStringMap = (map1, map2) => {
362
359
  return true;
363
360
  };
364
361
 
365
- export { addEventListener as a, removeEventListener as b, componentOnReady as c, inheritAttributes as d, renderHiddenInput as e, focusVisibleElement as f, getElementRoot as g, hasShadowDom as h, inheritAriaAttributes as i, hasLazyBuild as j, clamp as k, debounceEvent as l, isEndSide as m, assert as n, debounce as o, now as p, pointerCoord as q, raf as r, shallowEqualStringMap as s, transitionEndAsync as t };
362
+ export { addEventListener as a, removeEventListener as b, componentOnReady as c, inheritAttributes as d, renderHiddenInput as e, focusVisibleElement as f, getElementRoot as g, hasShadowDom as h, inheritAriaAttributes as i, hasLazyBuild as j, clamp as k, debounceEvent as l, isEndSide as m, assert as n, debounce as o, pointerCoord as p, raf as r, shallowEqualStringMap as s, transitionEndAsync as t };
@@ -18,6 +18,8 @@ const closeCircle = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/
18
18
  const closeSharp = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M400 145.49L366.51 112 256 222.51 145.49 112 112 145.49 222.51 256 112 366.51 145.49 400 256 289.49 366.51 400 400 366.51 289.49 256 400 145.49z'/></svg>";
19
19
  const ellipseOutline = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><circle cx='256' cy='256' r='192' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>";
20
20
  const ellipsisHorizontal = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><circle cx='256' cy='256' r='48'/><circle cx='416' cy='256' r='48'/><circle cx='96' cy='256' r='48'/></svg>";
21
+ const eye = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><circle cx='256' cy='256' r='64'/><path d='M490.84 238.6c-26.46-40.92-60.79-75.68-99.27-100.53C349 110.55 302 96 255.66 96c-42.52 0-84.33 12.15-124.27 36.11-40.73 24.43-77.63 60.12-109.68 106.07a31.92 31.92 0 00-.64 35.54c26.41 41.33 60.4 76.14 98.28 100.65C162 402 207.9 416 255.66 416c46.71 0 93.81-14.43 136.2-41.72 38.46-24.77 72.72-59.66 99.08-100.92a32.2 32.2 0 00-.1-34.76zM256 352a96 96 0 1196-96 96.11 96.11 0 01-96 96z'/></svg>";
22
+ const eyeOff = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M432 448a15.92 15.92 0 01-11.31-4.69l-352-352a16 16 0 0122.62-22.62l352 352A16 16 0 01432 448zM248 315.85l-51.79-51.79a2 2 0 00-3.39 1.69 64.11 64.11 0 0053.49 53.49 2 2 0 001.69-3.39zM264 196.15L315.87 248a2 2 0 003.4-1.69 64.13 64.13 0 00-53.55-53.55 2 2 0 00-1.72 3.39z'/><path d='M491 273.36a32.2 32.2 0 00-.1-34.76c-26.46-40.92-60.79-75.68-99.27-100.53C349 110.55 302 96 255.68 96a226.54 226.54 0 00-71.82 11.79 4 4 0 00-1.56 6.63l47.24 47.24a4 4 0 003.82 1.05 96 96 0 01116 116 4 4 0 001.05 3.81l67.95 68a4 4 0 005.4.24 343.81 343.81 0 0067.24-77.4zM256 352a96 96 0 01-93.3-118.63 4 4 0 00-1.05-3.81l-66.84-66.87a4 4 0 00-5.41-.23c-24.39 20.81-47 46.13-67.67 75.72a31.92 31.92 0 00-.64 35.54c26.41 41.33 60.39 76.14 98.28 100.65C162.06 402 207.92 416 255.68 416a238.22 238.22 0 0072.64-11.55 4 4 0 001.61-6.64l-47.47-47.46a4 4 0 00-3.81-1.05A96 96 0 01256 352z'/></svg>";
21
23
  const menuOutline = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path stroke-linecap='round' stroke-miterlimit='10' d='M80 160h352M80 256h352M80 352h352' class='ionicon-fill-none ionicon-stroke-width'/></svg>";
22
24
  const menuSharp = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M64 384h384v-42.67H64zm0-106.67h384v-42.66H64zM64 128v42.67h384V128z'/></svg>";
23
25
  const removeOutline = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path stroke-linecap='round' stroke-linejoin='round' d='M400 256H112' class='ionicon-fill-none ionicon-stroke-width'/></svg>";
@@ -26,4 +28,4 @@ const reorderTwoSharp = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2
26
28
  const searchOutline = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M221.09 64a157.09 157.09 0 10157.09 157.09A157.1 157.1 0 00221.09 64z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path stroke-linecap='round' stroke-miterlimit='10' d='M338.29 338.29L448 448' class='ionicon-fill-none ionicon-stroke-width'/></svg>";
27
29
  const searchSharp = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M464 428L339.92 303.9a160.48 160.48 0 0030.72-94.58C370.64 120.37 298.27 48 209.32 48S48 120.37 48 209.32s72.37 161.32 161.32 161.32a160.48 160.48 0 0094.58-30.72L428 464zM209.32 319.69a110.38 110.38 0 11110.37-110.37 110.5 110.5 0 01-110.37 110.37z'/></svg>";
28
30
 
29
- export { chevronBack as a, arrowBackSharp as b, chevronDown as c, chevronForwardOutline as d, ellipsisHorizontal as e, chevronForward as f, caretUpSharp as g, caretDownSharp as h, close as i, closeCircle as j, closeSharp as k, menuSharp as l, menuOutline as m, caretBackSharp as n, arrowDown as o, reorderTwoSharp as p, searchSharp as q, reorderThreeOutline as r, searchOutline as s, chevronExpand as t, checkmarkOutline as u, removeOutline as v, ellipseOutline as w };
31
+ export { chevronBack as a, arrowBackSharp as b, chevronDown as c, chevronForwardOutline as d, ellipsisHorizontal as e, chevronForward as f, caretUpSharp as g, caretDownSharp as h, close as i, closeCircle as j, closeSharp as k, eye as l, eyeOff as m, menuOutline as n, menuSharp as o, caretBackSharp as p, arrowDown as q, reorderThreeOutline as r, reorderTwoSharp as s, searchOutline as t, searchSharp as u, chevronExpand as v, checkmarkOutline as w, removeOutline as x, ellipseOutline as y };