@ionic/core 7.5.8-dev.11701448395.18799530 → 7.5.8-dev.11701788142.11dcb825

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 (330) hide show
  1. package/components/ion-input.js +21 -2
  2. package/components/ion-refresher-content.js +3 -10
  3. package/components/ion-refresher.js +183 -4
  4. package/components/ion-searchbar.js +2 -0
  5. package/components/ion-textarea.js +25 -2
  6. package/dist/cjs/{app-globals-28656db1.js → app-globals-0af482c7.js} +1 -1
  7. package/dist/cjs/{button-active-75b38d77.js → button-active-417ccdcb.js} +1 -1
  8. package/dist/cjs/{index-097270a3.js → index-5cbb20f9.js} +1 -1
  9. package/dist/cjs/{index-b0102f48.js → index-bbb4336c.js} +39 -1
  10. package/dist/cjs/{index-cb3e0ab7.js → index-d4c2e02c.js} +3 -3
  11. package/dist/cjs/index.cjs.js +7 -7
  12. package/dist/cjs/ion-accordion_2.cjs.entry.js +2 -2
  13. package/dist/cjs/ion-action-sheet.cjs.entry.js +4 -4
  14. package/dist/cjs/ion-alert.cjs.entry.js +4 -4
  15. package/dist/cjs/ion-app_8.cjs.entry.js +4 -4
  16. package/dist/cjs/ion-avatar_3.cjs.entry.js +2 -2
  17. package/dist/cjs/ion-back-button.cjs.entry.js +2 -2
  18. package/dist/cjs/ion-backdrop.cjs.entry.js +2 -2
  19. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +2 -2
  20. package/dist/cjs/ion-button_2.cjs.entry.js +2 -2
  21. package/dist/cjs/ion-card_5.cjs.entry.js +2 -2
  22. package/dist/cjs/ion-checkbox.cjs.entry.js +2 -2
  23. package/dist/cjs/ion-chip.cjs.entry.js +2 -2
  24. package/dist/cjs/ion-col_3.cjs.entry.js +2 -2
  25. package/dist/cjs/ion-datetime-button.cjs.entry.js +2 -2
  26. package/dist/cjs/ion-datetime_3.cjs.entry.js +3 -3
  27. package/dist/cjs/ion-fab_3.cjs.entry.js +2 -2
  28. package/dist/cjs/ion-img.cjs.entry.js +2 -2
  29. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +2 -2
  30. package/dist/cjs/ion-input.cjs.entry.js +23 -4
  31. package/dist/cjs/ion-item-option_3.cjs.entry.js +2 -2
  32. package/dist/cjs/ion-item_8.cjs.entry.js +2 -2
  33. package/dist/cjs/ion-loading.cjs.entry.js +3 -3
  34. package/dist/cjs/ion-menu_3.cjs.entry.js +4 -4
  35. package/dist/cjs/ion-modal.cjs.entry.js +4 -4
  36. package/dist/cjs/ion-nav_2.cjs.entry.js +3 -3
  37. package/dist/cjs/ion-picker-column-internal.cjs.entry.js +2 -2
  38. package/dist/cjs/ion-picker-internal.cjs.entry.js +1 -1
  39. package/dist/cjs/ion-popover.cjs.entry.js +4 -4
  40. package/dist/cjs/ion-progress-bar.cjs.entry.js +2 -2
  41. package/dist/cjs/ion-radio_2.cjs.entry.js +2 -2
  42. package/dist/cjs/ion-range.cjs.entry.js +2 -2
  43. package/dist/cjs/ion-refresher_2.cjs.entry.js +14 -30
  44. package/dist/cjs/ion-reorder_2.cjs.entry.js +2 -2
  45. package/dist/cjs/ion-ripple-effect.cjs.entry.js +2 -2
  46. package/dist/cjs/ion-route_4.cjs.entry.js +2 -2
  47. package/dist/cjs/ion-searchbar.cjs.entry.js +4 -2
  48. package/dist/cjs/ion-segment_2.cjs.entry.js +2 -2
  49. package/dist/cjs/ion-select_3.cjs.entry.js +3 -3
  50. package/dist/cjs/ion-spinner.cjs.entry.js +2 -2
  51. package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
  52. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +2 -2
  53. package/dist/cjs/ion-tab_2.cjs.entry.js +1 -1
  54. package/dist/cjs/ion-text.cjs.entry.js +2 -2
  55. package/dist/cjs/ion-textarea.cjs.entry.js +27 -4
  56. package/dist/cjs/ion-toast.cjs.entry.js +3 -3
  57. package/dist/cjs/ion-toggle.cjs.entry.js +2 -2
  58. package/dist/cjs/{ionic-global-62510d64.js → ionic-global-f4a2093b.js} +1 -1
  59. package/dist/cjs/ionic.cjs.js +4 -4
  60. package/dist/cjs/{ios.transition-d9c0e4fb.js → ios.transition-a4ffb5a2.js} +2 -2
  61. package/dist/cjs/loader.cjs.js +3 -3
  62. package/dist/cjs/{md.transition-4fac8a87.js → md.transition-292abe1c.js} +2 -2
  63. package/dist/cjs/{overlays-b1471172.js → overlays-5c379703.js} +1 -1
  64. package/dist/cjs/{status-tap-0aa8e1f2.js → status-tap-415acac6.js} +1 -1
  65. package/dist/collection/collection-manifest.json +1 -1
  66. package/dist/collection/components/input/input.js +23 -4
  67. package/dist/collection/components/input/test/clear-on-edit/input.e2e.js +21 -9
  68. package/dist/collection/components/refresher/refresher.utils.js +10 -20
  69. package/dist/collection/components/refresher-content/refresher-content.js +3 -9
  70. package/dist/collection/components/searchbar/searchbar.js +3 -1
  71. package/dist/collection/components/textarea/test/clear-on-edit/textarea.e2e.js +28 -0
  72. package/dist/collection/components/textarea/textarea.js +27 -4
  73. package/dist/docs.json +7 -7
  74. package/dist/esm/{app-globals-c23144fc.js → app-globals-722340c4.js} +1 -1
  75. package/dist/esm/{button-active-7013b5a1.js → button-active-3fdf3e4f.js} +1 -1
  76. package/dist/esm/{index-39329c6f.js → index-08d686eb.js} +39 -1
  77. package/dist/esm/{index-7a818ed3.js → index-80492ed3.js} +1 -1
  78. package/dist/esm/{index-bebaae5d.js → index-d8817fb0.js} +3 -3
  79. package/dist/esm/index.js +7 -7
  80. package/dist/esm/ion-accordion_2.entry.js +2 -2
  81. package/dist/esm/ion-action-sheet.entry.js +4 -4
  82. package/dist/esm/ion-alert.entry.js +4 -4
  83. package/dist/esm/ion-app_8.entry.js +4 -4
  84. package/dist/esm/ion-avatar_3.entry.js +2 -2
  85. package/dist/esm/ion-back-button.entry.js +2 -2
  86. package/dist/esm/ion-backdrop.entry.js +2 -2
  87. package/dist/esm/ion-breadcrumb_2.entry.js +2 -2
  88. package/dist/esm/ion-button_2.entry.js +2 -2
  89. package/dist/esm/ion-card_5.entry.js +2 -2
  90. package/dist/esm/ion-checkbox.entry.js +2 -2
  91. package/dist/esm/ion-chip.entry.js +2 -2
  92. package/dist/esm/ion-col_3.entry.js +2 -2
  93. package/dist/esm/ion-datetime-button.entry.js +2 -2
  94. package/dist/esm/ion-datetime_3.entry.js +3 -3
  95. package/dist/esm/ion-fab_3.entry.js +2 -2
  96. package/dist/esm/ion-img.entry.js +2 -2
  97. package/dist/esm/ion-infinite-scroll_2.entry.js +2 -2
  98. package/dist/esm/ion-input.entry.js +23 -4
  99. package/dist/esm/ion-item-option_3.entry.js +2 -2
  100. package/dist/esm/ion-item_8.entry.js +2 -2
  101. package/dist/esm/ion-loading.entry.js +3 -3
  102. package/dist/esm/ion-menu_3.entry.js +4 -4
  103. package/dist/esm/ion-modal.entry.js +4 -4
  104. package/dist/esm/ion-nav_2.entry.js +3 -3
  105. package/dist/esm/ion-picker-column-internal.entry.js +2 -2
  106. package/dist/esm/ion-picker-internal.entry.js +1 -1
  107. package/dist/esm/ion-popover.entry.js +4 -4
  108. package/dist/esm/ion-progress-bar.entry.js +2 -2
  109. package/dist/esm/ion-radio_2.entry.js +2 -2
  110. package/dist/esm/ion-range.entry.js +2 -2
  111. package/dist/esm/ion-refresher_2.entry.js +14 -30
  112. package/dist/esm/ion-reorder_2.entry.js +2 -2
  113. package/dist/esm/ion-ripple-effect.entry.js +2 -2
  114. package/dist/esm/ion-route_4.entry.js +2 -2
  115. package/dist/esm/ion-searchbar.entry.js +4 -2
  116. package/dist/esm/ion-segment_2.entry.js +2 -2
  117. package/dist/esm/ion-select_3.entry.js +3 -3
  118. package/dist/esm/ion-spinner.entry.js +2 -2
  119. package/dist/esm/ion-split-pane.entry.js +2 -2
  120. package/dist/esm/ion-tab-bar_2.entry.js +2 -2
  121. package/dist/esm/ion-tab_2.entry.js +1 -1
  122. package/dist/esm/ion-text.entry.js +2 -2
  123. package/dist/esm/ion-textarea.entry.js +27 -4
  124. package/dist/esm/ion-toast.entry.js +3 -3
  125. package/dist/esm/ion-toggle.entry.js +2 -2
  126. package/dist/esm/{ionic-global-6c78e871.js → ionic-global-c0cda98e.js} +1 -1
  127. package/dist/esm/ionic.js +5 -5
  128. package/dist/esm/{ios.transition-daa373e9.js → ios.transition-fd16bec1.js} +2 -2
  129. package/dist/esm/loader.js +4 -4
  130. package/dist/esm/{md.transition-91c3d3cc.js → md.transition-94ac93e1.js} +2 -2
  131. package/dist/esm/{overlays-64e67e2c.js → overlays-abf58489.js} +1 -1
  132. package/dist/esm/{status-tap-9dd45200.js → status-tap-2b93b1b5.js} +1 -1
  133. package/dist/esm-es5/app-globals-722340c4.js +4 -0
  134. package/dist/esm-es5/{button-active-7013b5a1.js → button-active-3fdf3e4f.js} +1 -1
  135. package/dist/esm-es5/{index-39329c6f.js → index-08d686eb.js} +1 -1
  136. package/dist/esm-es5/{index-7a818ed3.js → index-80492ed3.js} +1 -1
  137. package/dist/esm-es5/{index-bebaae5d.js → index-d8817fb0.js} +1 -1
  138. package/dist/esm-es5/index.js +1 -1
  139. package/dist/esm-es5/ion-accordion_2.entry.js +1 -1
  140. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  141. package/dist/esm-es5/ion-alert.entry.js +1 -1
  142. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  143. package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
  144. package/dist/esm-es5/ion-back-button.entry.js +1 -1
  145. package/dist/esm-es5/ion-backdrop.entry.js +1 -1
  146. package/dist/esm-es5/ion-breadcrumb_2.entry.js +1 -1
  147. package/dist/esm-es5/ion-button_2.entry.js +1 -1
  148. package/dist/esm-es5/ion-card_5.entry.js +1 -1
  149. package/dist/esm-es5/ion-checkbox.entry.js +1 -1
  150. package/dist/esm-es5/ion-chip.entry.js +1 -1
  151. package/dist/esm-es5/ion-col_3.entry.js +1 -1
  152. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  153. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  154. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  155. package/dist/esm-es5/ion-img.entry.js +1 -1
  156. package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
  157. package/dist/esm-es5/ion-input.entry.js +1 -1
  158. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  159. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  160. package/dist/esm-es5/ion-loading.entry.js +1 -1
  161. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  162. package/dist/esm-es5/ion-modal.entry.js +1 -1
  163. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  164. package/dist/esm-es5/ion-picker-column-internal.entry.js +1 -1
  165. package/dist/esm-es5/ion-picker-internal.entry.js +1 -1
  166. package/dist/esm-es5/ion-popover.entry.js +1 -1
  167. package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
  168. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  169. package/dist/esm-es5/ion-range.entry.js +1 -1
  170. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  171. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  172. package/dist/esm-es5/ion-ripple-effect.entry.js +1 -1
  173. package/dist/esm-es5/ion-route_4.entry.js +1 -1
  174. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  175. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  176. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  177. package/dist/esm-es5/ion-spinner.entry.js +1 -1
  178. package/dist/esm-es5/ion-split-pane.entry.js +1 -1
  179. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  180. package/dist/esm-es5/ion-tab_2.entry.js +1 -1
  181. package/dist/esm-es5/ion-text.entry.js +1 -1
  182. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  183. package/dist/esm-es5/ion-toast.entry.js +1 -1
  184. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  185. package/dist/esm-es5/{ionic-global-6c78e871.js → ionic-global-c0cda98e.js} +1 -1
  186. package/dist/esm-es5/ionic.js +1 -1
  187. package/dist/esm-es5/{ios.transition-daa373e9.js → ios.transition-fd16bec1.js} +1 -1
  188. package/dist/esm-es5/loader.js +1 -1
  189. package/dist/esm-es5/{md.transition-91c3d3cc.js → md.transition-94ac93e1.js} +1 -1
  190. package/dist/esm-es5/{overlays-64e67e2c.js → overlays-abf58489.js} +1 -1
  191. package/dist/esm-es5/{status-tap-9dd45200.js → status-tap-2b93b1b5.js} +1 -1
  192. package/dist/html.html-data.json +2 -2
  193. package/dist/ionic/index.esm.js +1 -1
  194. package/dist/ionic/ionic.esm.js +1 -1
  195. package/dist/ionic/ionic.js +1 -1
  196. package/dist/ionic/{p-46dbd723.entry.js → p-0519cd21.entry.js} +1 -1
  197. package/dist/ionic/p-08f196ce.system.entry.js +4 -0
  198. package/dist/ionic/p-093033ee.entry.js +4 -0
  199. package/dist/ionic/{p-f34d6a49.entry.js → p-0add7211.entry.js} +1 -1
  200. package/dist/ionic/{p-e8e530fc.entry.js → p-0b1bc636.entry.js} +1 -1
  201. package/dist/ionic/{p-a0945c3a.system.entry.js → p-0e53f8ea.system.entry.js} +1 -1
  202. package/dist/ionic/{p-161d0916.entry.js → p-1161a793.entry.js} +1 -1
  203. package/dist/ionic/{p-89026d53.entry.js → p-1208f939.entry.js} +1 -1
  204. package/dist/ionic/p-1786bc72.js +4 -0
  205. package/dist/ionic/{p-312221db.entry.js → p-17da5ed1.entry.js} +1 -1
  206. package/dist/ionic/p-17f893be.js +4 -0
  207. package/dist/ionic/{p-83fada9e.system.entry.js → p-18b6bd23.system.entry.js} +1 -1
  208. package/dist/ionic/{p-5fb707e0.entry.js → p-18ba8221.entry.js} +1 -1
  209. package/dist/ionic/{p-d1530ea9.entry.js → p-1d17219f.entry.js} +1 -1
  210. package/dist/ionic/{p-1ff22253.entry.js → p-2092f39f.entry.js} +1 -1
  211. package/dist/ionic/{p-2507b0c0.entry.js → p-25b32c3d.entry.js} +1 -1
  212. package/dist/ionic/{p-b81a8111.system.entry.js → p-2938823a.system.entry.js} +1 -1
  213. package/dist/ionic/{p-df361680.system.entry.js → p-2ab4e925.system.entry.js} +1 -1
  214. package/dist/ionic/{p-45db7949.system.entry.js → p-2ba0657d.system.entry.js} +1 -1
  215. package/dist/ionic/{p-0263eb49.system.js → p-30029cc2.system.js} +1 -1
  216. package/dist/ionic/{p-ac4a7fc0.js → p-31158892.js} +1 -1
  217. package/dist/ionic/{p-18032a93.entry.js → p-34c39c48.entry.js} +1 -1
  218. package/dist/ionic/p-350f7292.system.entry.js +4 -0
  219. package/dist/ionic/{p-86c2bbc8.entry.js → p-353b349d.entry.js} +1 -1
  220. package/dist/ionic/{p-bc97b5cd.system.entry.js → p-3b686a65.system.entry.js} +1 -1
  221. package/dist/ionic/{p-33f3cd49.entry.js → p-3de71759.entry.js} +1 -1
  222. package/dist/ionic/{p-f0384573.system.entry.js → p-3e960213.system.entry.js} +1 -1
  223. package/dist/ionic/{p-a3a145d3.entry.js → p-3f6270b3.entry.js} +1 -1
  224. package/dist/ionic/{p-23a27e78.system.entry.js → p-3fd37993.system.entry.js} +1 -1
  225. package/dist/ionic/{p-426bdba9.system.js → p-3fe96156.system.js} +1 -1
  226. package/dist/ionic/{p-e26030f8.system.js → p-4155f352.system.js} +1 -1
  227. package/dist/ionic/p-4890093d.js +4 -0
  228. package/dist/ionic/{p-5f46d93e.entry.js → p-4a31c99f.entry.js} +1 -1
  229. package/dist/ionic/{p-2cd9cb80.system.entry.js → p-4fb51e61.system.entry.js} +1 -1
  230. package/dist/ionic/{p-71d986ae.entry.js → p-50880712.entry.js} +1 -1
  231. package/dist/ionic/{p-d3e123c0.entry.js → p-51a087d6.entry.js} +1 -1
  232. package/dist/ionic/{p-aac289d2.system.entry.js → p-564af202.system.entry.js} +1 -1
  233. package/dist/ionic/{p-abab375b.system.js → p-57477107.system.js} +1 -1
  234. package/dist/ionic/p-588fdf40.entry.js +4 -0
  235. package/dist/ionic/{p-a5c81b99.entry.js → p-5a68960f.entry.js} +1 -1
  236. package/dist/ionic/{p-34d6f520.system.js → p-5b365ca7.system.js} +1 -1
  237. package/dist/ionic/{p-eef8d7e8.system.entry.js → p-5bebc7b3.system.entry.js} +1 -1
  238. package/dist/ionic/{p-21f015cf.js → p-5ecae037.js} +1 -1
  239. package/dist/ionic/{p-06600f70.js → p-61d7d7fb.js} +1 -1
  240. package/dist/ionic/{p-2657f213.entry.js → p-6470b136.entry.js} +1 -1
  241. package/dist/ionic/{p-5f127075.system.entry.js → p-6577aea9.system.entry.js} +1 -1
  242. package/dist/ionic/{p-d0251fc4.entry.js → p-67da080d.entry.js} +1 -1
  243. package/dist/ionic/{p-2a7e6572.system.entry.js → p-6ad34705.system.entry.js} +1 -1
  244. package/dist/ionic/{p-1cbc21e2.system.entry.js → p-6e70dd1a.system.entry.js} +1 -1
  245. package/dist/ionic/{p-64af4468.entry.js → p-6fbecbda.entry.js} +1 -1
  246. package/dist/ionic/{p-0827d00e.system.entry.js → p-73637557.system.entry.js} +1 -1
  247. package/dist/ionic/{p-fcf49977.system.entry.js → p-73ea8f82.system.entry.js} +1 -1
  248. package/dist/ionic/{p-57c0d5bf.system.entry.js → p-7b8d0af2.system.entry.js} +1 -1
  249. package/dist/ionic/{p-315ad733.system.entry.js → p-7faba551.system.entry.js} +1 -1
  250. package/dist/ionic/{p-bbe3feee.entry.js → p-80fa068e.entry.js} +1 -1
  251. package/dist/ionic/{p-b11ceee2.entry.js → p-82045bc1.entry.js} +1 -1
  252. package/dist/ionic/{p-8c202d6e.system.entry.js → p-868d0165.system.entry.js} +1 -1
  253. package/dist/ionic/{p-ee4a54e3.entry.js → p-88fde0e0.entry.js} +1 -1
  254. package/dist/ionic/{p-67598744.entry.js → p-8f5d30f5.entry.js} +1 -1
  255. package/dist/ionic/{p-edc5c693.system.entry.js → p-908475e7.system.entry.js} +1 -1
  256. package/dist/ionic/{p-3acad8ff.system.entry.js → p-93000a81.system.entry.js} +1 -1
  257. package/dist/ionic/{p-2ac9d078.system.entry.js → p-94389114.system.entry.js} +1 -1
  258. package/dist/ionic/{p-a0db3de9.system.entry.js → p-9709ebd8.system.entry.js} +1 -1
  259. package/dist/ionic/{p-12cdcb59.js → p-9738fd82.js} +1 -1
  260. package/dist/ionic/{p-6cf08720.entry.js → p-98b14ece.entry.js} +1 -1
  261. package/dist/ionic/{p-a70b5d24.entry.js → p-98f3d827.entry.js} +1 -1
  262. package/dist/ionic/{p-58dd7c15.entry.js → p-9c3b6849.entry.js} +1 -1
  263. package/dist/ionic/{p-93dac17a.system.entry.js → p-9eec42cc.system.entry.js} +1 -1
  264. package/dist/ionic/{p-89cfbc88.system.entry.js → p-a0126dd5.system.entry.js} +1 -1
  265. package/dist/ionic/{p-70ecb18b.entry.js → p-a1987850.entry.js} +1 -1
  266. package/dist/ionic/{p-53a3283e.entry.js → p-a4afcc88.entry.js} +1 -1
  267. package/dist/ionic/{p-27e6473f.entry.js → p-a6f9dd7b.entry.js} +1 -1
  268. package/dist/ionic/{p-99fe0543.entry.js → p-a98dc0c1.entry.js} +1 -1
  269. package/dist/ionic/{p-90db28f8.system.entry.js → p-a9e3b5be.system.entry.js} +1 -1
  270. package/dist/ionic/{p-a843a90e.system.entry.js → p-ab9456e9.system.entry.js} +1 -1
  271. package/dist/ionic/p-ad019ef0.entry.js +4 -0
  272. package/dist/ionic/{p-ad78c421.system.js → p-af5cfad2.system.js} +1 -1
  273. package/dist/ionic/{p-a1b4dba7.entry.js → p-b04e4d62.entry.js} +1 -1
  274. package/dist/ionic/{p-1631b52f.system.js → p-b0dc1cf9.system.js} +1 -1
  275. package/dist/ionic/{p-98ac0e27.system.entry.js → p-b3b3efba.system.entry.js} +2 -2
  276. package/dist/ionic/{p-58ff9e5b.system.js → p-b4a51c42.system.js} +1 -1
  277. package/dist/ionic/{p-b5e33ebc.system.entry.js → p-b4bad293.system.entry.js} +1 -1
  278. package/dist/ionic/{p-3cb5466e.entry.js → p-b5f9f14c.entry.js} +1 -1
  279. package/dist/ionic/{p-b0fcf130.system.entry.js → p-b6f5e4f2.system.entry.js} +1 -1
  280. package/dist/ionic/{p-7ae5ca1f.system.entry.js → p-b7010c69.system.entry.js} +1 -1
  281. package/dist/ionic/{p-a99f14a7.system.entry.js → p-b752714f.system.entry.js} +1 -1
  282. package/dist/ionic/{p-f444fea5.entry.js → p-c3289ef2.entry.js} +1 -1
  283. package/dist/ionic/{p-acdd8148.js → p-c3c3333a.js} +1 -1
  284. package/dist/ionic/{p-5a7d5905.system.entry.js → p-c3d09cf2.system.entry.js} +1 -1
  285. package/dist/ionic/{p-8261be6c.system.entry.js → p-c847fb35.system.entry.js} +1 -1
  286. package/dist/ionic/{p-e3c44332.system.entry.js → p-c91ccbfa.system.entry.js} +1 -1
  287. package/dist/ionic/{p-9f376964.system.entry.js → p-c9a21dfd.system.entry.js} +1 -1
  288. package/dist/ionic/{p-ad953217.system.entry.js → p-caf21b46.system.entry.js} +1 -1
  289. package/dist/ionic/{p-19545a49.system.entry.js → p-cce9f61a.system.entry.js} +1 -1
  290. package/dist/ionic/{p-1c6c6098.entry.js → p-cfe57b1b.entry.js} +1 -1
  291. package/dist/ionic/p-cff478d8.entry.js +4 -0
  292. package/dist/ionic/{p-742e11cf.system.entry.js → p-d1cb29a8.system.entry.js} +1 -1
  293. package/dist/ionic/{p-c04accad.entry.js → p-d37b441e.entry.js} +1 -1
  294. package/dist/ionic/{p-f8c5a0dd.system.js → p-d3b030b8.system.js} +1 -1
  295. package/dist/ionic/{p-3f5ae764.entry.js → p-d40a974a.entry.js} +1 -1
  296. package/dist/ionic/{p-91f9e81b.js → p-d662d908.js} +1 -1
  297. package/dist/ionic/{p-41f7af3f.system.entry.js → p-d7be6b7e.system.entry.js} +1 -1
  298. package/dist/ionic/{p-3535a36c.entry.js → p-ddb30596.entry.js} +1 -1
  299. package/dist/ionic/{p-c5ae50be.system.js → p-e3584231.system.js} +1 -1
  300. package/dist/ionic/p-e4d90573.js +4 -0
  301. package/dist/ionic/{p-ca32685b.system.entry.js → p-e553006f.system.entry.js} +1 -1
  302. package/dist/ionic/{p-27a5f2c7.system.entry.js → p-e6d68e02.system.entry.js} +1 -1
  303. package/dist/ionic/{p-8a75f7bf.system.entry.js → p-e7ea9815.system.entry.js} +1 -1
  304. package/dist/ionic/{p-8a10752d.entry.js → p-e94c392d.entry.js} +1 -1
  305. package/dist/ionic/p-ea69616e.entry.js +4 -0
  306. package/dist/ionic/{p-4f71a9cf.system.entry.js → p-ef126ae8.system.entry.js} +1 -1
  307. package/dist/ionic/{p-f10de9d5.system.js → p-f2c21dae.system.js} +1 -1
  308. package/dist/ionic/{p-7484b1d6.system.js → p-f7a36cd0.system.js} +1 -1
  309. package/dist/ionic/{p-e4045e04.entry.js → p-f8a5bb89.entry.js} +1 -1
  310. package/dist/types/components/input/input.d.ts +5 -1
  311. package/dist/types/components/refresher/refresher.utils.d.ts +0 -17
  312. package/dist/types/components/searchbar/searchbar.d.ts +2 -0
  313. package/dist/types/components/textarea/textarea.d.ts +5 -1
  314. package/dist/types/components.d.ts +7 -7
  315. package/hydrate/index.d.ts +1 -1
  316. package/hydrate/index.js +61 -33
  317. package/package.json +2 -2
  318. package/components/refresher.utils.js +0 -198
  319. package/dist/esm-es5/app-globals-c23144fc.js +0 -4
  320. package/dist/ionic/p-079eb722.system.entry.js +0 -4
  321. package/dist/ionic/p-405f1a72.entry.js +0 -4
  322. package/dist/ionic/p-5c7f13cd.system.entry.js +0 -4
  323. package/dist/ionic/p-6744eca5.entry.js +0 -4
  324. package/dist/ionic/p-af959b5d.entry.js +0 -4
  325. package/dist/ionic/p-b8f2134e.js +0 -4
  326. package/dist/ionic/p-c53c8d83.entry.js +0 -4
  327. package/dist/ionic/p-cde72008.js +0 -4
  328. package/dist/ionic/p-ddccf1f4.js +0 -4
  329. package/dist/ionic/p-e145b9f9.entry.js +0 -4
  330. package/dist/ionic/p-eab6401e.js +0 -4
@@ -206,6 +206,8 @@ const Input = /*@__PURE__*/ proxyCustomElement(class Input extends HTMLElement {
206
206
  *
207
207
  * Developers who wish to focus an input when an overlay is presented
208
208
  * should call `setFocus` after `didPresent` has resolved.
209
+ *
210
+ * See [managing focus](/docs/developing/managing-focus) for more information.
209
211
  */
210
212
  async setFocus() {
211
213
  if (this.nativeInput) {
@@ -271,15 +273,32 @@ const Input = /*@__PURE__*/ proxyCustomElement(class Input extends HTMLElement {
271
273
  if (!this.shouldClearOnEdit()) {
272
274
  return;
273
275
  }
276
+ /**
277
+ * The following keys do not modify the
278
+ * contents of the input. As a result, pressing
279
+ * them should not edit the input.
280
+ *
281
+ * We can't check to see if the value of the input
282
+ * was changed because we call checkClearOnEdit
283
+ * in a keydown listener, and the key has not yet
284
+ * been added to the input.
285
+ */
286
+ const IGNORED_KEYS = ['Enter', 'Tab', 'Shift', 'Meta', 'Alt', 'Control'];
274
287
  /**
275
288
  * Clear the input if the control has not been previously cleared during focus.
276
289
  * Do not clear if the user hitting enter to submit a form.
277
290
  */
278
- if (!this.didInputClearOnEdit && this.hasValue() && ev.key !== 'Enter' && ev.key !== 'Tab') {
291
+ if (!this.didInputClearOnEdit && this.hasValue() && !IGNORED_KEYS.includes(ev.key)) {
279
292
  this.value = '';
280
293
  this.emitInputChange(ev);
294
+ /**
295
+ * Only set this flag if we cleared the input.
296
+ * Otherwise pressing an IGNORED_KEYS first and
297
+ * then an allowed key will cause the input to not
298
+ * be cleared.
299
+ */
300
+ this.didInputClearOnEdit = true;
281
301
  }
282
- this.didInputClearOnEdit = true;
283
302
  }
284
303
  hasValue() {
285
304
  return this.getValue().length > 0;
@@ -3,9 +3,8 @@
3
3
  */
4
4
  import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
5
5
  import { E as ENABLE_HTML_CONTENT_DEFAULT, a as sanitizeDOMString } from './config.js';
6
+ import { c as config, b as getIonMode, a as isPlatform } from './ionic-global.js';
6
7
  import { n as caretBackSharp, o as arrowDown } from './index7.js';
7
- import { c as config, b as getIonMode } from './ionic-global.js';
8
- import { e as supportsRubberBandScrolling } from './refresher.utils.js';
9
8
  import { d as defineCustomElement$2, S as SPINNERS } from './spinner.js';
10
9
  import { d as defineCustomElement$3 } from './icon.js';
11
10
 
@@ -21,15 +20,9 @@ const RefresherContent = /*@__PURE__*/ proxyCustomElement(class RefresherContent
21
20
  }
22
21
  componentWillLoad() {
23
22
  if (this.pullingIcon === undefined) {
24
- /**
25
- * The native iOS refresher uses a spinner instead of
26
- * an icon, so we need to see if this device supports
27
- * the native iOS refresher.
28
- */
29
- const hasRubberBandScrolling = supportsRubberBandScrolling();
30
23
  const mode = getIonMode(this);
31
- const overflowRefresher = hasRubberBandScrolling ? 'lines' : arrowDown;
32
- this.pullingIcon = config.get('refreshingIcon', mode === 'ios' && hasRubberBandScrolling ? config.get('spinner', overflowRefresher) : 'circular');
24
+ const overflowRefresher = this.el.style.webkitOverflowScrolling !== undefined ? 'lines' : arrowDown;
25
+ this.pullingIcon = config.get('refreshingIcon', mode === 'ios' && isPlatform('mobile') ? config.get('spinner', overflowRefresher) : 'circular');
33
26
  }
34
27
  if (this.refreshingSpinner === undefined) {
35
28
  const mode = getIonMode(this);
@@ -1,13 +1,192 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import { proxyCustomElement, HTMLElement, createEvent, writeTask, readTask, h, Host } from '@stencil/core/internal/client';
4
+ import { writeTask, proxyCustomElement, HTMLElement, createEvent, readTask, h, Host } from '@stencil/core/internal/client';
5
5
  import { g as getTimeGivenProgression } from './cubic-bezier.js';
6
6
  import { I as ION_CONTENT_CLASS_SELECTOR, b as ION_CONTENT_ELEMENT_SELECTOR, p as printIonContentErrorMsg, g as getScrollElement } from './index8.js';
7
- import { t as transitionEndAsync, m as clamp, g as getElementRoot, c as componentOnReady, r as raf } from './helpers.js';
7
+ import { t as transitionEndAsync, c as componentOnReady, m as clamp, g as getElementRoot, r as raf } from './helpers.js';
8
8
  import { c as hapticImpact, I as ImpactStyle } from './haptic.js';
9
- import { b as getIonMode } from './ionic-global.js';
10
- import { s as shouldUseNativeRefresher, t as translateElement, a as setSpinnerOpacity, h as handleScrollWhileRefreshing, b as handleScrollWhilePulling, c as createPullingAnimation, d as createSnapBackAnimation, g as getRefresherAnimationType } from './refresher.utils.js';
9
+ import { a as isPlatform, b as getIonMode } from './ionic-global.js';
10
+ import { c as createAnimation } from './animation.js';
11
+
12
+ const getRefresherAnimationType = (contentEl) => {
13
+ const previousSibling = contentEl.previousElementSibling;
14
+ const hasHeader = previousSibling !== null && previousSibling.tagName === 'ION-HEADER';
15
+ return hasHeader ? 'translate' : 'scale';
16
+ };
17
+ const createPullingAnimation = (type, pullingSpinner, refresherEl) => {
18
+ return type === 'scale'
19
+ ? createScaleAnimation(pullingSpinner, refresherEl)
20
+ : createTranslateAnimation(pullingSpinner, refresherEl);
21
+ };
22
+ const createBaseAnimation = (pullingRefresherIcon) => {
23
+ const spinner = pullingRefresherIcon.querySelector('ion-spinner');
24
+ const circle = spinner.shadowRoot.querySelector('circle');
25
+ const spinnerArrowContainer = pullingRefresherIcon.querySelector('.spinner-arrow-container');
26
+ const arrowContainer = pullingRefresherIcon.querySelector('.arrow-container');
27
+ const arrow = arrowContainer ? arrowContainer.querySelector('ion-icon') : null;
28
+ const baseAnimation = createAnimation().duration(1000).easing('ease-out');
29
+ const spinnerArrowContainerAnimation = createAnimation()
30
+ .addElement(spinnerArrowContainer)
31
+ .keyframes([
32
+ { offset: 0, opacity: '0.3' },
33
+ { offset: 0.45, opacity: '0.3' },
34
+ { offset: 0.55, opacity: '1' },
35
+ { offset: 1, opacity: '1' },
36
+ ]);
37
+ const circleInnerAnimation = createAnimation()
38
+ .addElement(circle)
39
+ .keyframes([
40
+ { offset: 0, strokeDasharray: '1px, 200px' },
41
+ { offset: 0.2, strokeDasharray: '1px, 200px' },
42
+ { offset: 0.55, strokeDasharray: '100px, 200px' },
43
+ { offset: 1, strokeDasharray: '100px, 200px' },
44
+ ]);
45
+ const circleOuterAnimation = createAnimation()
46
+ .addElement(spinner)
47
+ .keyframes([
48
+ { offset: 0, transform: 'rotate(-90deg)' },
49
+ { offset: 1, transform: 'rotate(210deg)' },
50
+ ]);
51
+ /**
52
+ * Only add arrow animation if present
53
+ * this allows users to customize the spinners
54
+ * without errors being thrown
55
+ */
56
+ if (arrowContainer && arrow) {
57
+ const arrowContainerAnimation = createAnimation()
58
+ .addElement(arrowContainer)
59
+ .keyframes([
60
+ { offset: 0, transform: 'rotate(0deg)' },
61
+ { offset: 0.3, transform: 'rotate(0deg)' },
62
+ { offset: 0.55, transform: 'rotate(280deg)' },
63
+ { offset: 1, transform: 'rotate(400deg)' },
64
+ ]);
65
+ const arrowAnimation = createAnimation()
66
+ .addElement(arrow)
67
+ .keyframes([
68
+ { offset: 0, transform: 'translateX(2px) scale(0)' },
69
+ { offset: 0.3, transform: 'translateX(2px) scale(0)' },
70
+ { offset: 0.55, transform: 'translateX(-1.5px) scale(1)' },
71
+ { offset: 1, transform: 'translateX(-1.5px) scale(1)' },
72
+ ]);
73
+ baseAnimation.addAnimation([arrowContainerAnimation, arrowAnimation]);
74
+ }
75
+ return baseAnimation.addAnimation([spinnerArrowContainerAnimation, circleInnerAnimation, circleOuterAnimation]);
76
+ };
77
+ const createScaleAnimation = (pullingRefresherIcon, refresherEl) => {
78
+ /**
79
+ * Do not take the height of the refresher icon
80
+ * because at this point the DOM has not updated,
81
+ * so the refresher icon is still hidden with
82
+ * display: none.
83
+ * The `ion-refresher` container height
84
+ * is roughly the amount we need to offset
85
+ * the icon by when pulling down.
86
+ */
87
+ const height = refresherEl.clientHeight;
88
+ const spinnerAnimation = createAnimation()
89
+ .addElement(pullingRefresherIcon)
90
+ .keyframes([
91
+ { offset: 0, transform: `scale(0) translateY(-${height}px)` },
92
+ { offset: 1, transform: 'scale(1) translateY(100px)' },
93
+ ]);
94
+ return createBaseAnimation(pullingRefresherIcon).addAnimation([spinnerAnimation]);
95
+ };
96
+ const createTranslateAnimation = (pullingRefresherIcon, refresherEl) => {
97
+ /**
98
+ * Do not take the height of the refresher icon
99
+ * because at this point the DOM has not updated,
100
+ * so the refresher icon is still hidden with
101
+ * display: none.
102
+ * The `ion-refresher` container height
103
+ * is roughly the amount we need to offset
104
+ * the icon by when pulling down.
105
+ */
106
+ const height = refresherEl.clientHeight;
107
+ const spinnerAnimation = createAnimation()
108
+ .addElement(pullingRefresherIcon)
109
+ .keyframes([
110
+ { offset: 0, transform: `translateY(-${height}px)` },
111
+ { offset: 1, transform: 'translateY(100px)' },
112
+ ]);
113
+ return createBaseAnimation(pullingRefresherIcon).addAnimation([spinnerAnimation]);
114
+ };
115
+ const createSnapBackAnimation = (pullingRefresherIcon) => {
116
+ return createAnimation()
117
+ .duration(125)
118
+ .addElement(pullingRefresherIcon)
119
+ .fromTo('transform', 'translateY(var(--ion-pulling-refresher-translate, 100px))', 'translateY(0px)');
120
+ };
121
+ // iOS Native Refresher
122
+ // -----------------------------
123
+ const setSpinnerOpacity = (spinner, opacity) => {
124
+ spinner.style.setProperty('opacity', opacity.toString());
125
+ };
126
+ const handleScrollWhilePulling = (ticks, numTicks, pullAmount) => {
127
+ const max = 1;
128
+ writeTask(() => {
129
+ ticks.forEach((el, i) => {
130
+ /**
131
+ * Compute the opacity of each tick
132
+ * mark as a percentage of the pullAmount
133
+ * offset by max / numTicks so
134
+ * the tick marks are shown staggered.
135
+ */
136
+ const min = i * (max / numTicks);
137
+ const range = max - min;
138
+ const start = pullAmount - min;
139
+ const progression = clamp(0, start / range, 1);
140
+ el.style.setProperty('opacity', progression.toString());
141
+ });
142
+ });
143
+ };
144
+ const handleScrollWhileRefreshing = (spinner, lastVelocityY) => {
145
+ writeTask(() => {
146
+ // If user pulls down quickly, the spinner should spin faster
147
+ spinner.style.setProperty('--refreshing-rotation-duration', lastVelocityY >= 1.0 ? '0.5s' : '2s');
148
+ spinner.style.setProperty('opacity', '1');
149
+ });
150
+ };
151
+ const translateElement = (el, value, duration = 200) => {
152
+ if (!el) {
153
+ return Promise.resolve();
154
+ }
155
+ const trans = transitionEndAsync(el, duration);
156
+ writeTask(() => {
157
+ el.style.setProperty('transition', `${duration}ms all ease-out`);
158
+ if (value === undefined) {
159
+ el.style.removeProperty('transform');
160
+ }
161
+ else {
162
+ el.style.setProperty('transform', `translate3d(0px, ${value}, 0px)`);
163
+ }
164
+ });
165
+ return trans;
166
+ };
167
+ // Utils
168
+ // -----------------------------
169
+ const shouldUseNativeRefresher = async (referenceEl, mode) => {
170
+ const refresherContent = referenceEl.querySelector('ion-refresher-content');
171
+ if (!refresherContent) {
172
+ return Promise.resolve(false);
173
+ }
174
+ await new Promise((resolve) => componentOnReady(refresherContent, resolve));
175
+ const pullingSpinner = referenceEl.querySelector('ion-refresher-content .refresher-pulling ion-spinner');
176
+ const refreshingSpinner = referenceEl.querySelector('ion-refresher-content .refresher-refreshing ion-spinner');
177
+ return (pullingSpinner !== null &&
178
+ refreshingSpinner !== null &&
179
+ /**
180
+ * We use webkitOverflowScrolling for feature detection with rubber band scrolling
181
+ * on iOS. When doing referenceEl.style, webkitOverflowScrolling is undefined on non-iOS platforms.
182
+ * However, it will be the empty string on iOS.
183
+ * Note that we do not use getPropertyValue (and thus need to cast as any) because calling
184
+ * getPropertyValue('-webkit-overflow-scrolling') will return the empty string if it is not
185
+ * set on the element, even if the platform does not support that.
186
+ */
187
+ ((mode === 'ios' && isPlatform('mobile') && referenceEl.style.webkitOverflowScrolling !== undefined) ||
188
+ mode === 'md'));
189
+ };
11
190
 
12
191
  const refresherIosCss = "ion-refresher{top:0;display:none;position:absolute;width:100%;height:60px;pointer-events:none;z-index:-1}@supports (inset-inline-start: 0){ion-refresher{inset-inline-start:0}}@supports not (inset-inline-start: 0){ion-refresher{left:0}:host-context([dir=rtl]) ion-refresher{left:unset;right:unset;right:0}[dir=rtl] ion-refresher{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){ion-refresher:dir(rtl){left:unset;right:unset;right:0}}}ion-refresher.refresher-active{display:block}ion-refresher-content{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.refresher-pulling,.refresher-refreshing{display:none;width:100%}.refresher-pulling-icon,.refresher-refreshing-icon{-webkit-transform-origin:center;transform-origin:center;-webkit-transition:200ms;transition:200ms;font-size:30px;text-align:center}:host-context([dir=rtl]) .refresher-pulling-icon,:host-context([dir=rtl]) .refresher-refreshing-icon{-webkit-transform-origin:calc(100% - center);transform-origin:calc(100% - center)}[dir=rtl] .refresher-pulling-icon,[dir=rtl] .refresher-refreshing-icon{-webkit-transform-origin:calc(100% - center);transform-origin:calc(100% - center)}@supports selector(:dir(rtl)){.refresher-pulling-icon:dir(rtl),.refresher-refreshing-icon:dir(rtl){-webkit-transform-origin:calc(100% - center);transform-origin:calc(100% - center)}}.refresher-pulling-text,.refresher-refreshing-text{font-size:16px;text-align:center}ion-refresher-content .arrow-container{display:none}.refresher-pulling ion-refresher-content .refresher-pulling{display:block}.refresher-ready ion-refresher-content .refresher-pulling{display:block}.refresher-ready ion-refresher-content .refresher-pulling-icon{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.refresher-refreshing ion-refresher-content .refresher-refreshing{display:block}.refresher-cancelling ion-refresher-content .refresher-pulling{display:block}.refresher-cancelling ion-refresher-content .refresher-pulling-icon{-webkit-transform:scale(0);transform:scale(0)}.refresher-completing ion-refresher-content .refresher-refreshing{display:block}.refresher-completing ion-refresher-content .refresher-refreshing-icon{-webkit-transform:scale(0);transform:scale(0)}.refresher-native .refresher-pulling-text,.refresher-native .refresher-refreshing-text{display:none}.refresher-ios .refresher-pulling-icon,.refresher-ios .refresher-refreshing-icon{color:var(--ion-text-color, #000)}.refresher-ios .refresher-pulling-text,.refresher-ios .refresher-refreshing-text{color:var(--ion-text-color, #000)}.refresher-ios .refresher-refreshing .spinner-lines-ios line,.refresher-ios .refresher-refreshing .spinner-lines-small-ios line,.refresher-ios .refresher-refreshing .spinner-crescent circle{stroke:var(--ion-text-color, #000)}.refresher-ios .refresher-refreshing .spinner-bubbles circle,.refresher-ios .refresher-refreshing .spinner-circles circle,.refresher-ios .refresher-refreshing .spinner-dots circle{fill:var(--ion-text-color, #000)}ion-refresher.refresher-native{display:block;z-index:1}ion-refresher.refresher-native ion-spinner{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0}.refresher-native .refresher-refreshing ion-spinner{--refreshing-rotation-duration:2s;display:none;-webkit-animation:var(--refreshing-rotation-duration) ease-out refresher-rotate forwards;animation:var(--refreshing-rotation-duration) ease-out refresher-rotate forwards}.refresher-native .refresher-refreshing{display:none;-webkit-animation:250ms linear refresher-pop forwards;animation:250ms linear refresher-pop forwards}.refresher-native ion-spinner{width:32px;height:32px;color:var(--ion-color-step-450, #747577)}.refresher-native.refresher-refreshing .refresher-pulling ion-spinner,.refresher-native.refresher-completing .refresher-pulling ion-spinner{display:none}.refresher-native.refresher-refreshing .refresher-refreshing ion-spinner,.refresher-native.refresher-completing .refresher-refreshing ion-spinner{display:block}.refresher-native.refresher-pulling .refresher-pulling ion-spinner{display:block}.refresher-native.refresher-pulling .refresher-refreshing ion-spinner{display:none}.refresher-native.refresher-completing ion-refresher-content .refresher-refreshing-icon{-webkit-transform:scale(0) rotate(180deg);transform:scale(0) rotate(180deg);-webkit-transition:300ms;transition:300ms}@-webkit-keyframes refresher-pop{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}50%{-webkit-transform:scale(1.2);transform:scale(1.2);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}100%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes refresher-pop{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}50%{-webkit-transform:scale(1.2);transform:scale(1.2);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}100%{-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes refresher-rotate{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(180deg);transform:rotate(180deg)}}@keyframes refresher-rotate{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(180deg);transform:rotate(180deg)}}";
13
192
 
@@ -191,6 +191,8 @@ const Searchbar = /*@__PURE__*/ proxyCustomElement(class Searchbar extends HTMLE
191
191
  *
192
192
  * Developers who wish to focus an input when an overlay is presented
193
193
  * should call `setFocus` after `didPresent` has resolved.
194
+ *
195
+ * See [managing focus](/docs/developing/managing-focus) for more information.
194
196
  */
195
197
  async setFocus() {
196
198
  if (this.nativeInput) {
@@ -167,6 +167,8 @@ const Textarea = /*@__PURE__*/ proxyCustomElement(class Textarea extends HTMLEle
167
167
  /**
168
168
  * Sets focus on the native `textarea` in `ion-textarea`. Use this method instead of the global
169
169
  * `textarea.focus()`.
170
+ *
171
+ * See [managing focus](/docs/developing/managing-focus) for more information.
170
172
  */
171
173
  async setFocus() {
172
174
  if (this.nativeInput) {
@@ -239,15 +241,36 @@ const Textarea = /*@__PURE__*/ proxyCustomElement(class Textarea extends HTMLEle
239
241
  if (!this.clearOnEdit) {
240
242
  return;
241
243
  }
244
+ /**
245
+ * The following keys do not modify the
246
+ * contents of the input. As a result, pressing
247
+ * them should not edit the textarea.
248
+ *
249
+ * We can't check to see if the value of the textarea
250
+ * was changed because we call checkClearOnEdit
251
+ * in a keydown listener, and the key has not yet
252
+ * been added to the textarea.
253
+ *
254
+ * Unlike ion-input, the "Enter" key does modify the
255
+ * textarea by adding a new line, so "Enter" is not
256
+ * included in the IGNORED_KEYS array.
257
+ */
258
+ const IGNORED_KEYS = ['Tab', 'Shift', 'Meta', 'Alt', 'Control'];
242
259
  /**
243
260
  * Clear the textarea if the control has not been previously cleared
244
261
  * during focus.
245
262
  */
246
- if (!this.didTextareaClearOnEdit && this.hasValue() && ev.key !== 'Tab') {
263
+ if (!this.didTextareaClearOnEdit && this.hasValue() && !IGNORED_KEYS.includes(ev.key)) {
247
264
  this.value = '';
248
265
  this.emitInputChange(ev);
266
+ /**
267
+ * Only set this flag if we cleared the input.
268
+ * Otherwise pressing an IGNORED_KEYS first and
269
+ * then an allowed key will cause the input to not
270
+ * be cleared.
271
+ */
272
+ this.didTextareaClearOnEdit = true;
249
273
  }
250
- this.didTextareaClearOnEdit = true;
251
274
  }
252
275
  focusChange() {
253
276
  this.emitStyle();
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- const ionicGlobal = require('./ionic-global-62510d64.js');
6
+ const ionicGlobal = require('./ionic-global-f4a2093b.js');
7
7
 
8
8
  const globalScripts = ionicGlobal.initialize;
9
9
 
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- const index$1 = require('./index-b0102f48.js');
6
+ const index$1 = require('./index-bbb4336c.js');
7
7
  const haptic = require('./haptic-216df36c.js');
8
8
  const index = require('./index-d1b59ffa.js');
9
9
 
@@ -6,7 +6,7 @@
6
6
  const index = require('./index-5915f9b3.js');
7
7
  const hardwareBackButton = require('./hardware-back-button-76833cac.js');
8
8
  const helpers = require('./helpers-76bb7efb.js');
9
- const ionicGlobal = require('./ionic-global-62510d64.js');
9
+ const ionicGlobal = require('./ionic-global-f4a2093b.js');
10
10
  const animation = require('./animation-cc40e39c.js');
11
11
 
12
12
  /**
@@ -285,6 +285,17 @@ const convertToPrivate = (node) => {
285
285
  vnode.$name$ = node.vname;
286
286
  return vnode;
287
287
  };
288
+ /**
289
+ * Entrypoint of the client-side hydration process. Facilitates calls to hydrate the
290
+ * document and all its nodes.
291
+ *
292
+ * This process will also reconstruct the shadow root and slot DOM nodes for components using shadow DOM.
293
+ *
294
+ * @param hostElm The element to hydrate.
295
+ * @param tagName The element's tag name.
296
+ * @param hostId The host ID assigned to the element by the server.
297
+ * @param hostRef The host reference for the element.
298
+ */
288
299
  const initializeClientHydrate = (hostElm, tagName, hostId, hostRef) => {
289
300
  const endHydrate = createTime('hydrateClient', tagName);
290
301
  const shadowRoot = hostElm.shadowRoot;
@@ -302,6 +313,8 @@ const initializeClientHydrate = (hostElm, tagName, hostId, hostRef) => {
302
313
  const orgLocationId = c.$hostId$ + '.' + c.$nodeId$;
303
314
  const orgLocationNode = plt.$orgLocNodes$.get(orgLocationId);
304
315
  const node = c.$elm$;
316
+ // Put the node back in its original location since the native Shadow DOM
317
+ // can handle rendering it its correct location now
305
318
  if (orgLocationNode && supportsShadow && orgLocationNode['s-en'] === '') {
306
319
  orgLocationNode.parentNode.insertBefore(node, orgLocationNode.nextSibling);
307
320
  }
@@ -323,6 +336,22 @@ const initializeClientHydrate = (hostElm, tagName, hostId, hostRef) => {
323
336
  }
324
337
  endHydrate();
325
338
  };
339
+ /**
340
+ * Recursively constructs the virtual node tree for a host element and its children.
341
+ * The tree is constructed by parsing the annotations set on the nodes by the server.
342
+ *
343
+ * In addition to constructing the vNode tree, we also track information about the node's
344
+ * descendants like which are slots, which should exist in the shadow root, and which
345
+ * are nodes that should be rendered as children of the parent node.
346
+ *
347
+ * @param parentVNode The vNode representing the parent node.
348
+ * @param childRenderNodes An array of all child nodes in the parent's node tree.
349
+ * @param slotNodes An array of all slot nodes in the parent's node tree.
350
+ * @param shadowRootNodes An array all nodes that should be rendered in the shadow root in the parent's node tree.
351
+ * @param hostElm The parent element.
352
+ * @param node The node to construct the vNode tree for.
353
+ * @param hostId The host ID assigned to the element by the server.
354
+ */
326
355
  const clientHydrate = (parentVNode, childRenderNodes, slotNodes, shadowRootNodes, hostElm, node, hostId) => {
327
356
  let childNodeType;
328
357
  let childIdSplt;
@@ -467,6 +496,13 @@ const clientHydrate = (parentVNode, childRenderNodes, slotNodes, shadowRootNodes
467
496
  parentVNode.$children$ = [vnode];
468
497
  }
469
498
  };
499
+ /**
500
+ * Recursively locate any comments representing an original location for a node in a node's
501
+ * children or shadowRoot children.
502
+ *
503
+ * @param node The node to search.
504
+ * @param orgLocNodes A map of the original location annotation and the current node being searched.
505
+ */
470
506
  const initializeDocumentHydrate = (node, orgLocNodes) => {
471
507
  if (node.nodeType === 1 /* NODE_TYPE.ElementNode */) {
472
508
  let i = 0;
@@ -2549,12 +2585,14 @@ const bootstrapLazy = (lazyBundles, options = {}) => {
2549
2585
  // If we have styles, add them to the DOM
2550
2586
  if (dataStyles.innerHTML.length) {
2551
2587
  dataStyles.setAttribute('data-styles', '');
2552
- head.insertBefore(dataStyles, metaCharset ? metaCharset.nextSibling : head.firstChild);
2553
2588
  // Apply CSP nonce to the style tag if it exists
2554
2589
  const nonce = (_a = plt.$nonce$) !== null && _a !== void 0 ? _a : queryNonceMetaTagContent(doc);
2555
2590
  if (nonce != null) {
2556
2591
  dataStyles.setAttribute('nonce', nonce);
2557
2592
  }
2593
+ // Insert the styles into the document head
2594
+ // NOTE: this _needs_ to happen last so we can ensure the nonce (and other attributes) are applied
2595
+ head.insertBefore(dataStyles, metaCharset ? metaCharset.nextSibling : head.firstChild);
2558
2596
  }
2559
2597
  // Process deferred connectedCallbacks now all components have been registered
2560
2598
  isBootstrapping = false;
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- const index = require('./index-b0102f48.js');
6
+ const index = require('./index-bbb4336c.js');
7
7
  const helpers = require('./helpers-76bb7efb.js');
8
8
 
9
9
  const LIFECYCLE_WILL_ENTER = 'ionViewWillEnter';
@@ -12,8 +12,8 @@ const LIFECYCLE_WILL_LEAVE = 'ionViewWillLeave';
12
12
  const LIFECYCLE_DID_LEAVE = 'ionViewDidLeave';
13
13
  const LIFECYCLE_WILL_UNLOAD = 'ionViewWillUnload';
14
14
 
15
- const iosTransitionAnimation = () => Promise.resolve().then(function () { return require('./ios.transition-d9c0e4fb.js'); });
16
- const mdTransitionAnimation = () => Promise.resolve().then(function () { return require('./md.transition-4fac8a87.js'); });
15
+ const iosTransitionAnimation = () => Promise.resolve().then(function () { return require('./ios.transition-a4ffb5a2.js'); });
16
+ const mdTransitionAnimation = () => Promise.resolve().then(function () { return require('./md.transition-292abe1c.js'); });
17
17
  // TODO(FW-2832): types
18
18
  const transition = (opts) => {
19
19
  return new Promise((resolve, reject) => {
@@ -6,19 +6,19 @@
6
6
  Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
8
  const animation = require('./animation-cc40e39c.js');
9
- const index = require('./index-cb3e0ab7.js');
10
- const ios_transition = require('./ios.transition-d9c0e4fb.js');
11
- const md_transition = require('./md.transition-4fac8a87.js');
9
+ const index = require('./index-d4c2e02c.js');
10
+ const ios_transition = require('./ios.transition-a4ffb5a2.js');
11
+ const md_transition = require('./md.transition-292abe1c.js');
12
12
  const cubicBezier = require('./cubic-bezier-f2dccc53.js');
13
13
  const index$1 = require('./index-d1b59ffa.js');
14
- const ionicGlobal = require('./ionic-global-62510d64.js');
14
+ const ionicGlobal = require('./ionic-global-f4a2093b.js');
15
15
  const helpers = require('./helpers-76bb7efb.js');
16
16
  const config = require('./config-4f60b98a.js');
17
17
  const theme = require('./theme-d1c573d2.js');
18
- const index$2 = require('./index-097270a3.js');
19
- const overlays = require('./overlays-b1471172.js');
18
+ const index$2 = require('./index-5cbb20f9.js');
19
+ const overlays = require('./overlays-5c379703.js');
20
20
  require('./index-306a7476.js');
21
- require('./index-b0102f48.js');
21
+ require('./index-bbb4336c.js');
22
22
  require('./gesture-controller-c40c045a.js');
23
23
  require('./index-5915f9b3.js');
24
24
  require('./hardware-back-button-76833cac.js');
@@ -5,10 +5,10 @@
5
5
 
6
6
  Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
- const index = require('./index-b0102f48.js');
8
+ const index = require('./index-bbb4336c.js');
9
9
  const helpers = require('./helpers-76bb7efb.js');
10
10
  const index$1 = require('./index-09471526.js');
11
- const ionicGlobal = require('./ionic-global-62510d64.js');
11
+ const ionicGlobal = require('./ionic-global-f4a2093b.js');
12
12
  const index$2 = require('./index-5915f9b3.js');
13
13
 
14
14
  const accordionIosCss = ":host{display:block;position:relative;width:100%;background-color:var(--ion-background-color, #ffffff);overflow:hidden;z-index:0}:host(.accordion-expanding) ::slotted(ion-item[slot=header]),:host(.accordion-expanded) ::slotted(ion-item[slot=header]){--border-width:0px}:host(.accordion-animated){-webkit-transition:all 300ms cubic-bezier(0.25, 0.8, 0.5, 1);transition:all 300ms cubic-bezier(0.25, 0.8, 0.5, 1)}:host(.accordion-animated) #content{-webkit-transition:max-height 300ms cubic-bezier(0.25, 0.8, 0.5, 1);transition:max-height 300ms cubic-bezier(0.25, 0.8, 0.5, 1)}#content{overflow:hidden;will-change:max-height}:host(.accordion-collapsing) #content{max-height:0 !important}:host(.accordion-collapsed) #content{display:none}:host(.accordion-expanding) #content{max-height:0}:host(.accordion-expanding) #content-wrapper{overflow:auto}:host(.accordion-disabled) #header,:host(.accordion-readonly) #header,:host(.accordion-disabled) #content,:host(.accordion-readonly) #content{pointer-events:none}:host(.accordion-disabled) #header,:host(.accordion-disabled) #content{opacity:0.4}@media (prefers-reduced-motion: reduce){:host,#content{-webkit-transition:none !important;transition:none !important}}:host(.accordion-next) ::slotted(ion-item[slot=header]){--border-width:0.55px 0px 0.55px 0px}";
@@ -5,13 +5,13 @@
5
5
 
6
6
  Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
- const index = require('./index-b0102f48.js');
9
- const buttonActive = require('./button-active-75b38d77.js');
8
+ const index = require('./index-bbb4336c.js');
9
+ const buttonActive = require('./button-active-417ccdcb.js');
10
10
  const helpers = require('./helpers-76bb7efb.js');
11
11
  const lockController = require('./lock-controller-6585a42a.js');
12
- const overlays = require('./overlays-b1471172.js');
12
+ const overlays = require('./overlays-5c379703.js');
13
13
  const theme = require('./theme-d1c573d2.js');
14
- const ionicGlobal = require('./ionic-global-62510d64.js');
14
+ const ionicGlobal = require('./ionic-global-f4a2093b.js');
15
15
  const animation = require('./animation-cc40e39c.js');
16
16
  require('./haptic-216df36c.js');
17
17
  require('./capacitor-46980811.js');
@@ -5,14 +5,14 @@
5
5
 
6
6
  Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
- const index = require('./index-b0102f48.js');
8
+ const index = require('./index-bbb4336c.js');
9
9
  const config = require('./config-4f60b98a.js');
10
- const buttonActive = require('./button-active-75b38d77.js');
10
+ const buttonActive = require('./button-active-417ccdcb.js');
11
11
  const helpers = require('./helpers-76bb7efb.js');
12
12
  const lockController = require('./lock-controller-6585a42a.js');
13
- const overlays = require('./overlays-b1471172.js');
13
+ const overlays = require('./overlays-5c379703.js');
14
14
  const theme = require('./theme-d1c573d2.js');
15
- const ionicGlobal = require('./ionic-global-62510d64.js');
15
+ const ionicGlobal = require('./ionic-global-f4a2093b.js');
16
16
  const animation = require('./animation-cc40e39c.js');
17
17
  require('./haptic-216df36c.js');
18
18
  require('./capacitor-46980811.js');
@@ -5,8 +5,8 @@
5
5
 
6
6
  Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
- const index = require('./index-b0102f48.js');
9
- const ionicGlobal = require('./ionic-global-62510d64.js');
8
+ const index = require('./index-bbb4336c.js');
9
+ const ionicGlobal = require('./ionic-global-f4a2093b.js');
10
10
  const helpers = require('./helpers-76bb7efb.js');
11
11
  const dir = require('./dir-94c21456.js');
12
12
  const theme = require('./theme-d1c573d2.js');
@@ -15,7 +15,7 @@ const keyboardController = require('./keyboard-controller-2158b478.js');
15
15
  const cubicBezier = require('./cubic-bezier-f2dccc53.js');
16
16
  const frameworkDelegate = require('./framework-delegate-1c29b14a.js');
17
17
  const lockController = require('./lock-controller-6585a42a.js');
18
- const index$2 = require('./index-cb3e0ab7.js');
18
+ const index$2 = require('./index-d4c2e02c.js');
19
19
  require('./index-5915f9b3.js');
20
20
  require('./index-306a7476.js');
21
21
  require('./keyboard-9390928c.js');
@@ -35,7 +35,7 @@ const App = class {
35
35
  Promise.resolve().then(function () { return require('./index-8c1e77d6.js'); }).then((module) => module.startTapClick(ionicGlobal.config));
36
36
  }
37
37
  if (ionicGlobal.config.getBoolean('statusTap', isHybrid)) {
38
- Promise.resolve().then(function () { return require('./status-tap-0aa8e1f2.js'); }).then((module) => module.startStatusTap());
38
+ Promise.resolve().then(function () { return require('./status-tap-415acac6.js'); }).then((module) => module.startStatusTap());
39
39
  }
40
40
  if (ionicGlobal.config.getBoolean('inputShims', needInputShims())) {
41
41
  /**
@@ -5,8 +5,8 @@
5
5
 
6
6
  Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
- const index = require('./index-b0102f48.js');
9
- const ionicGlobal = require('./ionic-global-62510d64.js');
8
+ const index = require('./index-bbb4336c.js');
9
+ const ionicGlobal = require('./ionic-global-f4a2093b.js');
10
10
  const theme = require('./theme-d1c573d2.js');
11
11
 
12
12
  const avatarIosCss = ":host{border-radius:var(--border-radius);display:block}::slotted(ion-img),::slotted(img){border-radius:var(--border-radius);width:100%;height:100%;-o-object-fit:cover;object-fit:cover;overflow:hidden}:host{--border-radius:50%;width:48px;height:48px}";
@@ -5,11 +5,11 @@
5
5
 
6
6
  Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
- const index = require('./index-b0102f48.js');
8
+ const index = require('./index-bbb4336c.js');
9
9
  const helpers = require('./helpers-76bb7efb.js');
10
10
  const theme = require('./theme-d1c573d2.js');
11
11
  const index$1 = require('./index-09471526.js');
12
- const ionicGlobal = require('./ionic-global-62510d64.js');
12
+ const ionicGlobal = require('./ionic-global-f4a2093b.js');
13
13
 
14
14
  const backButtonIosCss = ":host{--background:transparent;--color-focused:currentColor;--color-hover:currentColor;--icon-margin-top:0;--icon-margin-bottom:0;--icon-padding-top:0;--icon-padding-end:0;--icon-padding-bottom:0;--icon-padding-start:0;--margin-top:0;--margin-end:0;--margin-bottom:0;--margin-start:0;--min-width:auto;--min-height:auto;--padding-top:0;--padding-end:0;--padding-bottom:0;--padding-start:0;--opacity:1;--ripple-color:currentColor;--transition:background-color, opacity 100ms linear;display:none;min-width:var(--min-width);min-height:var(--min-height);color:var(--color);font-family:var(--ion-font-family, inherit);text-align:center;text-decoration:none;text-overflow:ellipsis;text-transform:none;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-font-kerning:none;font-kerning:none}ion-ripple-effect{color:var(--ripple-color)}:host(.ion-color) .button-native{color:var(--ion-color-base)}:host(.show-back-button){display:block}:host(.back-button-disabled){cursor:default;opacity:0.5;pointer-events:none}.button-native{border-radius:var(--border-radius);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;-webkit-margin-start:var(--margin-start);margin-inline-start:var(--margin-start);-webkit-margin-end:var(--margin-end);margin-inline-end:var(--margin-end);margin-top:var(--margin-top);margin-bottom:var(--margin-bottom);-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:block;position:relative;width:100%;height:100%;min-height:inherit;-webkit-transition:var(--transition);transition:var(--transition);border:0;outline:none;background:var(--background);line-height:1;cursor:pointer;opacity:var(--opacity);overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.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}ion-icon{-webkit-padding-start:var(--icon-padding-start);padding-inline-start:var(--icon-padding-start);-webkit-padding-end:var(--icon-padding-end);padding-inline-end:var(--icon-padding-end);padding-top:var(--icon-padding-top);padding-bottom:var(--icon-padding-bottom);-webkit-margin-start:var(--icon-margin-start);margin-inline-start:var(--icon-margin-start);-webkit-margin-end:var(--icon-margin-end);margin-inline-end:var(--icon-margin-end);margin-top:var(--icon-margin-top);margin-bottom:var(--icon-margin-bottom);display:inherit;font-size:var(--icon-font-size);font-weight:var(--icon-font-weight);pointer-events:none}:host(.ion-focused) .button-native{color:var(--color-focused)}:host(.ion-focused) .button-native::after{background:var(--background-focused);opacity:var(--background-focused-opacity)}.button-native::after{left:0;right:0;top:0;bottom:0;position:absolute;content:\"\";opacity:0}@media (any-hover: hover){:host(:hover) .button-native{color:var(--color-hover)}:host(:hover) .button-native::after{background:var(--background-hover);opacity:var(--background-hover-opacity)}}:host(.ion-color.ion-focused) .button-native{color:var(--ion-color-base)}@media (any-hover: hover){:host(.ion-color:hover) .button-native{color:var(--ion-color-base)}}:host(.in-toolbar:not(.in-toolbar-color)){color:var(--ion-toolbar-color, var(--color))}:host{--background-hover:transparent;--background-hover-opacity:1;--background-focused:currentColor;--background-focused-opacity:.1;--border-radius:4px;--color:var(--ion-color-primary, #3880ff);--icon-margin-end:1px;--icon-margin-start:-4px;--icon-font-size:1.6em;--min-height:32px;font-size:clamp(17px, 1.0625rem, 21.998px)}.button-native{-webkit-transform:translateZ(0);transform:translateZ(0);overflow:visible;z-index:99}:host(.ion-activated) .button-native{opacity:0.4}@media (any-hover: hover){:host(:hover){opacity:0.6}}";
15
15
 
@@ -5,9 +5,9 @@
5
5
 
6
6
  Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
- const index = require('./index-b0102f48.js');
8
+ const index = require('./index-bbb4336c.js');
9
9
  const gestureController = require('./gesture-controller-c40c045a.js');
10
- const ionicGlobal = require('./ionic-global-62510d64.js');
10
+ const ionicGlobal = require('./ionic-global-f4a2093b.js');
11
11
 
12
12
  const backdropIosCss = ":host{left:0;right:0;top:0;bottom:0;display:block;position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0);contain:strict;cursor:pointer;opacity:0.01;-ms-touch-action:none;touch-action:none;z-index:2}:host(.backdrop-hide){background:transparent}:host(.backdrop-no-tappable){cursor:auto}:host{background-color:var(--ion-backdrop-color, #000)}";
13
13