@ionic/core 7.4.1-nightly.20230918 → 7.4.1-nightly.20230920

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 (396) hide show
  1. package/components/action-sheet.js +3 -0
  2. package/components/alert.js +6 -1
  3. package/components/button.js +2 -0
  4. package/components/checkbox.js +9 -4
  5. package/components/icon.js +6 -0
  6. package/components/input-shims.js +88 -7
  7. package/components/ion-accordion-group.js +5 -1
  8. package/components/ion-accordion.js +2 -0
  9. package/components/ion-breadcrumbs.js +5 -1
  10. package/components/ion-datetime.js +10 -0
  11. package/components/ion-fab-list.js +2 -0
  12. package/components/ion-fab.js +2 -0
  13. package/components/ion-img.js +2 -0
  14. package/components/ion-infinite-scroll.js +3 -0
  15. package/components/ion-input.js +5 -0
  16. package/components/ion-item-sliding.js +2 -0
  17. package/components/ion-loading.js +3 -0
  18. package/components/ion-menu.js +10 -5
  19. package/components/ion-modal.js +3 -0
  20. package/components/ion-nav.js +3 -0
  21. package/components/ion-picker.js +3 -0
  22. package/components/ion-range.js +39 -5
  23. package/components/ion-refresher.js +2 -0
  24. package/components/ion-reorder-group.js +2 -0
  25. package/components/ion-route-redirect.js +3 -0
  26. package/components/ion-route.js +4 -0
  27. package/components/ion-router-outlet.js +2 -0
  28. package/components/ion-searchbar.js +4 -0
  29. package/components/ion-segment-button.js +2 -0
  30. package/components/ion-segment.js +6 -1
  31. package/components/ion-select.js +5 -0
  32. package/components/ion-split-pane.js +4 -0
  33. package/components/ion-tab-bar.js +2 -0
  34. package/components/ion-tab.js +2 -0
  35. package/components/ion-textarea.js +4 -0
  36. package/components/ion-title.js +2 -0
  37. package/components/ion-toast.js +3 -0
  38. package/components/ion-toggle.js +2 -0
  39. package/components/item.js +48 -10
  40. package/components/label.js +3 -0
  41. package/components/overlays.js +30 -10
  42. package/components/picker-column-internal.js +2 -0
  43. package/components/picker-column.js +2 -0
  44. package/components/popover.js +4 -0
  45. package/components/radio-group.js +3 -1
  46. package/components/radio.js +5 -0
  47. package/dist/cjs/{app-globals-a63c2a19.js → app-globals-56164d1a.js} +1 -1
  48. package/dist/cjs/{button-active-0ff8e82c.js → button-active-32f15660.js} +1 -1
  49. package/dist/cjs/{index-e6416850.js → index-5121bb90.js} +1 -1
  50. package/dist/cjs/{index-184fdd62.js → index-6f887430.js} +44 -14
  51. package/dist/cjs/{index-be8a2ab9.js → index-b183138a.js} +3 -3
  52. package/dist/cjs/index.cjs.js +7 -7
  53. package/dist/cjs/{input-shims-f8569707.js → input-shims-da7dc0de.js} +92 -12
  54. package/dist/cjs/ion-accordion_2.cjs.entry.js +2 -2
  55. package/dist/cjs/ion-action-sheet.cjs.entry.js +4 -4
  56. package/dist/cjs/ion-alert.cjs.entry.js +4 -4
  57. package/dist/cjs/ion-app_8.cjs.entry.js +5 -5
  58. package/dist/cjs/ion-avatar_3.cjs.entry.js +2 -2
  59. package/dist/cjs/ion-back-button.cjs.entry.js +2 -2
  60. package/dist/cjs/ion-backdrop.cjs.entry.js +2 -2
  61. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +2 -2
  62. package/dist/cjs/ion-button_2.cjs.entry.js +2 -2
  63. package/dist/cjs/ion-card_5.cjs.entry.js +2 -2
  64. package/dist/cjs/ion-checkbox.cjs.entry.js +8 -6
  65. package/dist/cjs/ion-chip.cjs.entry.js +2 -2
  66. package/dist/cjs/ion-col_3.cjs.entry.js +2 -2
  67. package/dist/cjs/ion-datetime-button.cjs.entry.js +2 -2
  68. package/dist/cjs/ion-datetime_3.cjs.entry.js +4 -4
  69. package/dist/cjs/ion-fab_3.cjs.entry.js +2 -2
  70. package/dist/cjs/ion-img.cjs.entry.js +2 -2
  71. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +2 -2
  72. package/dist/cjs/ion-input.cjs.entry.js +2 -2
  73. package/dist/cjs/ion-item-option_3.cjs.entry.js +2 -2
  74. package/dist/cjs/ion-item_8.cjs.entry.js +37 -10
  75. package/dist/cjs/ion-loading.cjs.entry.js +4 -4
  76. package/dist/cjs/ion-menu_3.cjs.entry.js +7 -7
  77. package/dist/cjs/ion-modal.cjs.entry.js +4 -4
  78. package/dist/cjs/ion-nav_2.cjs.entry.js +3 -3
  79. package/dist/cjs/ion-picker-column-internal.cjs.entry.js +2 -2
  80. package/dist/cjs/ion-picker-internal.cjs.entry.js +1 -1
  81. package/dist/cjs/ion-popover.cjs.entry.js +5 -5
  82. package/dist/cjs/ion-progress-bar.cjs.entry.js +2 -2
  83. package/dist/cjs/ion-radio_2.cjs.entry.js +2 -2
  84. package/dist/cjs/ion-range.cjs.entry.js +34 -7
  85. package/dist/cjs/ion-refresher_2.cjs.entry.js +2 -2
  86. package/dist/cjs/ion-reorder_2.cjs.entry.js +2 -2
  87. package/dist/cjs/ion-ripple-effect.cjs.entry.js +2 -2
  88. package/dist/cjs/ion-route_4.cjs.entry.js +2 -2
  89. package/dist/cjs/ion-searchbar.cjs.entry.js +2 -2
  90. package/dist/cjs/ion-segment_2.cjs.entry.js +2 -2
  91. package/dist/cjs/ion-select_3.cjs.entry.js +3 -3
  92. package/dist/cjs/ion-spinner.cjs.entry.js +2 -2
  93. package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
  94. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +2 -2
  95. package/dist/cjs/ion-tab_2.cjs.entry.js +1 -1
  96. package/dist/cjs/ion-text.cjs.entry.js +2 -2
  97. package/dist/cjs/ion-textarea.cjs.entry.js +2 -2
  98. package/dist/cjs/ion-toast.cjs.entry.js +4 -4
  99. package/dist/cjs/ion-toggle.cjs.entry.js +2 -2
  100. package/dist/cjs/{ionic-global-6d5d27b5.js → ionic-global-14a0604b.js} +1 -1
  101. package/dist/cjs/ionic.cjs.js +5 -5
  102. package/dist/cjs/{ios.transition-80582b44.js → ios.transition-4b93903d.js} +2 -2
  103. package/dist/cjs/loader.cjs.js +4 -4
  104. package/dist/cjs/{md.transition-eeca9fb5.js → md.transition-79f3a215.js} +2 -2
  105. package/dist/cjs/{overlays-c78a0148.js → overlays-d3a13e61.js} +33 -13
  106. package/dist/cjs/{status-tap-cc4c6539.js → status-tap-e2e45ff8.js} +1 -1
  107. package/dist/collection/collection-manifest.json +1 -1
  108. package/dist/collection/components/checkbox/checkbox.js +6 -4
  109. package/dist/collection/components/checkbox/test/basic/checkbox.e2e.js +17 -0
  110. package/dist/collection/components/checkbox/test/legacy/basic/checkbox.e2e.js +17 -0
  111. package/dist/collection/components/item/item.ios.css +4 -0
  112. package/dist/collection/components/item/item.js +43 -7
  113. package/dist/collection/components/item/item.md.css +4 -0
  114. package/dist/collection/components/menu/menu.ios.css +20 -12
  115. package/dist/collection/components/menu/menu.js +2 -2
  116. package/dist/collection/components/menu/menu.md.css +20 -12
  117. package/dist/collection/components/menu/test/safe-area/menu.e2e.js +87 -0
  118. package/dist/collection/components/radio/test/item/radio.e2e.js +23 -0
  119. package/dist/collection/components/range/range.ios.css +14 -0
  120. package/dist/collection/components/range/range.js +30 -3
  121. package/dist/collection/components/range/range.md.css +14 -0
  122. package/dist/collection/components/range/test/item/range.e2e.js +11 -0
  123. package/dist/collection/components/select/test/basic/select.e2e.js +21 -0
  124. package/dist/collection/components/toggle/test/item/toggle.e2e.js +28 -0
  125. package/dist/collection/utils/input-shims/hacks/scroll-assist.js +86 -4
  126. package/dist/collection/utils/input-shims/hacks/scroll-data.js +2 -3
  127. package/dist/collection/utils/overlays.js +29 -9
  128. package/dist/docs.json +2 -2
  129. package/dist/esm/{app-globals-c7886b40.js → app-globals-8ae762aa.js} +1 -1
  130. package/dist/esm/{button-active-b76ae4ec.js → button-active-513e9fff.js} +1 -1
  131. package/dist/esm/{index-adfb2000.js → index-2d388930.js} +44 -14
  132. package/dist/esm/{index-48f5e259.js → index-61bddc90.js} +1 -1
  133. package/dist/esm/{index-01839411.js → index-87684bba.js} +3 -3
  134. package/dist/esm/index.js +7 -7
  135. package/dist/esm/{input-shims-af993f05.js → input-shims-d78a3c77.js} +88 -8
  136. package/dist/esm/ion-accordion_2.entry.js +2 -2
  137. package/dist/esm/ion-action-sheet.entry.js +4 -4
  138. package/dist/esm/ion-alert.entry.js +4 -4
  139. package/dist/esm/ion-app_8.entry.js +5 -5
  140. package/dist/esm/ion-avatar_3.entry.js +2 -2
  141. package/dist/esm/ion-back-button.entry.js +2 -2
  142. package/dist/esm/ion-backdrop.entry.js +2 -2
  143. package/dist/esm/ion-breadcrumb_2.entry.js +2 -2
  144. package/dist/esm/ion-button_2.entry.js +2 -2
  145. package/dist/esm/ion-card_5.entry.js +2 -2
  146. package/dist/esm/ion-checkbox.entry.js +8 -6
  147. package/dist/esm/ion-chip.entry.js +2 -2
  148. package/dist/esm/ion-col_3.entry.js +2 -2
  149. package/dist/esm/ion-datetime-button.entry.js +2 -2
  150. package/dist/esm/ion-datetime_3.entry.js +4 -4
  151. package/dist/esm/ion-fab_3.entry.js +2 -2
  152. package/dist/esm/ion-img.entry.js +2 -2
  153. package/dist/esm/ion-infinite-scroll_2.entry.js +2 -2
  154. package/dist/esm/ion-input.entry.js +2 -2
  155. package/dist/esm/ion-item-option_3.entry.js +2 -2
  156. package/dist/esm/ion-item_8.entry.js +37 -10
  157. package/dist/esm/ion-loading.entry.js +4 -4
  158. package/dist/esm/ion-menu_3.entry.js +7 -7
  159. package/dist/esm/ion-modal.entry.js +4 -4
  160. package/dist/esm/ion-nav_2.entry.js +3 -3
  161. package/dist/esm/ion-picker-column-internal.entry.js +2 -2
  162. package/dist/esm/ion-picker-internal.entry.js +1 -1
  163. package/dist/esm/ion-popover.entry.js +5 -5
  164. package/dist/esm/ion-progress-bar.entry.js +2 -2
  165. package/dist/esm/ion-radio_2.entry.js +2 -2
  166. package/dist/esm/ion-range.entry.js +34 -7
  167. package/dist/esm/ion-refresher_2.entry.js +2 -2
  168. package/dist/esm/ion-reorder_2.entry.js +2 -2
  169. package/dist/esm/ion-ripple-effect.entry.js +2 -2
  170. package/dist/esm/ion-route_4.entry.js +2 -2
  171. package/dist/esm/ion-searchbar.entry.js +2 -2
  172. package/dist/esm/ion-segment_2.entry.js +2 -2
  173. package/dist/esm/ion-select_3.entry.js +3 -3
  174. package/dist/esm/ion-spinner.entry.js +2 -2
  175. package/dist/esm/ion-split-pane.entry.js +2 -2
  176. package/dist/esm/ion-tab-bar_2.entry.js +2 -2
  177. package/dist/esm/ion-tab_2.entry.js +1 -1
  178. package/dist/esm/ion-text.entry.js +2 -2
  179. package/dist/esm/ion-textarea.entry.js +2 -2
  180. package/dist/esm/ion-toast.entry.js +4 -4
  181. package/dist/esm/ion-toggle.entry.js +2 -2
  182. package/dist/esm/{ionic-global-9080266a.js → ionic-global-b3fc28dd.js} +1 -1
  183. package/dist/esm/ionic.js +6 -6
  184. package/dist/esm/{ios.transition-f43871cd.js → ios.transition-81e1aed6.js} +2 -2
  185. package/dist/esm/loader.js +5 -5
  186. package/dist/esm/{md.transition-12d21ad0.js → md.transition-5becd8b5.js} +2 -2
  187. package/dist/esm/{overlays-4565894b.js → overlays-8fc6656c.js} +31 -11
  188. package/dist/esm/{status-tap-121c711d.js → status-tap-c5af0dba.js} +1 -1
  189. package/dist/esm-es5/app-globals-8ae762aa.js +4 -0
  190. package/dist/esm-es5/{button-active-b76ae4ec.js → button-active-513e9fff.js} +1 -1
  191. package/dist/esm-es5/{index-adfb2000.js → index-2d388930.js} +1 -1
  192. package/dist/esm-es5/{index-48f5e259.js → index-61bddc90.js} +1 -1
  193. package/dist/esm-es5/{index-01839411.js → index-87684bba.js} +1 -1
  194. package/dist/esm-es5/index.js +1 -1
  195. package/dist/esm-es5/input-shims-d78a3c77.js +4 -0
  196. package/dist/esm-es5/ion-accordion_2.entry.js +1 -1
  197. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  198. package/dist/esm-es5/ion-alert.entry.js +1 -1
  199. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  200. package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
  201. package/dist/esm-es5/ion-back-button.entry.js +1 -1
  202. package/dist/esm-es5/ion-backdrop.entry.js +1 -1
  203. package/dist/esm-es5/ion-breadcrumb_2.entry.js +1 -1
  204. package/dist/esm-es5/ion-button_2.entry.js +1 -1
  205. package/dist/esm-es5/ion-card_5.entry.js +1 -1
  206. package/dist/esm-es5/ion-checkbox.entry.js +1 -1
  207. package/dist/esm-es5/ion-chip.entry.js +1 -1
  208. package/dist/esm-es5/ion-col_3.entry.js +1 -1
  209. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  210. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  211. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  212. package/dist/esm-es5/ion-img.entry.js +1 -1
  213. package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
  214. package/dist/esm-es5/ion-input.entry.js +1 -1
  215. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  216. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  217. package/dist/esm-es5/ion-loading.entry.js +1 -1
  218. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  219. package/dist/esm-es5/ion-modal.entry.js +1 -1
  220. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  221. package/dist/esm-es5/ion-picker-column-internal.entry.js +1 -1
  222. package/dist/esm-es5/ion-picker-internal.entry.js +1 -1
  223. package/dist/esm-es5/ion-popover.entry.js +1 -1
  224. package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
  225. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  226. package/dist/esm-es5/ion-range.entry.js +1 -1
  227. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  228. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  229. package/dist/esm-es5/ion-ripple-effect.entry.js +1 -1
  230. package/dist/esm-es5/ion-route_4.entry.js +1 -1
  231. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  232. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  233. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  234. package/dist/esm-es5/ion-spinner.entry.js +1 -1
  235. package/dist/esm-es5/ion-split-pane.entry.js +1 -1
  236. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  237. package/dist/esm-es5/ion-tab_2.entry.js +1 -1
  238. package/dist/esm-es5/ion-text.entry.js +1 -1
  239. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  240. package/dist/esm-es5/ion-toast.entry.js +1 -1
  241. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  242. package/dist/esm-es5/{ionic-global-9080266a.js → ionic-global-b3fc28dd.js} +1 -1
  243. package/dist/esm-es5/ionic.js +1 -1
  244. package/dist/esm-es5/{ios.transition-f43871cd.js → ios.transition-81e1aed6.js} +1 -1
  245. package/dist/esm-es5/loader.js +1 -1
  246. package/dist/esm-es5/{md.transition-12d21ad0.js → md.transition-5becd8b5.js} +1 -1
  247. package/dist/esm-es5/overlays-8fc6656c.js +4 -0
  248. package/dist/esm-es5/{status-tap-121c711d.js → status-tap-c5af0dba.js} +1 -1
  249. package/dist/ionic/index.esm.js +1 -1
  250. package/dist/ionic/ionic.esm.js +1 -1
  251. package/dist/ionic/ionic.js +1 -1
  252. package/dist/ionic/{p-5fc777e6.system.js → p-00aed720.system.js} +1 -1
  253. package/dist/ionic/{p-a033a91d.system.entry.js → p-03e2e541.system.entry.js} +1 -1
  254. package/dist/ionic/{p-59b40b60.entry.js → p-04ef1ba6.entry.js} +1 -1
  255. package/dist/ionic/{p-2b0ecc04.entry.js → p-05f10762.entry.js} +1 -1
  256. package/dist/ionic/{p-3bf120f8.system.entry.js → p-08c5b9f4.system.entry.js} +1 -1
  257. package/dist/ionic/p-09e15a2a.system.entry.js +4 -0
  258. package/dist/ionic/p-0bd3cc92.entry.js +4 -0
  259. package/dist/ionic/{p-57847936.entry.js → p-116641fe.entry.js} +1 -1
  260. package/dist/ionic/{p-cd002251.entry.js → p-13a91505.entry.js} +1 -1
  261. package/dist/ionic/p-13ce151b.entry.js +4 -0
  262. package/dist/ionic/{p-6ccffb74.system.entry.js → p-1a36bf45.system.entry.js} +1 -1
  263. package/dist/ionic/{p-1916030e.entry.js → p-1bce805b.entry.js} +1 -1
  264. package/dist/ionic/{p-46058a1e.system.entry.js → p-1c406ee0.system.entry.js} +1 -1
  265. package/dist/ionic/{p-42e0558f.entry.js → p-20e5eb3e.entry.js} +1 -1
  266. package/dist/ionic/{p-3d5a6d14.system.js → p-2309dba2.system.js} +1 -1
  267. package/dist/ionic/{p-aa702daf.entry.js → p-270aa06b.entry.js} +1 -1
  268. package/dist/ionic/{p-9eced28c.entry.js → p-27614d55.entry.js} +1 -1
  269. package/dist/ionic/{p-c7ce7e18.entry.js → p-327fc1bf.entry.js} +1 -1
  270. package/dist/ionic/p-33630008.system.entry.js +4 -0
  271. package/dist/ionic/{p-8bcd482b.entry.js → p-3730f493.entry.js} +1 -1
  272. package/dist/ionic/{p-95188051.system.entry.js → p-37456282.system.entry.js} +1 -1
  273. package/dist/ionic/{p-07656a8a.entry.js → p-39715fcf.entry.js} +1 -1
  274. package/dist/ionic/{p-f62bed60.entry.js → p-3ae2faf0.entry.js} +1 -1
  275. package/dist/ionic/{p-fa8fc77b.system.entry.js → p-3af01ae0.system.entry.js} +1 -1
  276. package/dist/ionic/p-3cbcb899.entry.js +4 -0
  277. package/dist/ionic/{p-9e8727d6.entry.js → p-3e5676b7.entry.js} +1 -1
  278. package/dist/ionic/p-40e16caa.system.entry.js +4 -0
  279. package/dist/ionic/{p-48d378cf.entry.js → p-42a7b112.entry.js} +1 -1
  280. package/dist/ionic/{p-e239ab05.system.entry.js → p-4616f20a.system.entry.js} +1 -1
  281. package/dist/ionic/{p-4e1a58c6.system.entry.js → p-486b567b.system.entry.js} +1 -1
  282. package/dist/ionic/{p-dfee12f6.entry.js → p-4912b933.entry.js} +1 -1
  283. package/dist/ionic/{p-3d575698.system.entry.js → p-4a1ac160.system.entry.js} +1 -1
  284. package/dist/ionic/{p-b052b578.entry.js → p-4eab1bb4.entry.js} +1 -1
  285. package/dist/ionic/{p-264b5dd9.system.entry.js → p-53bbd357.system.entry.js} +1 -1
  286. package/dist/ionic/{p-9b53c813.entry.js → p-55b99166.entry.js} +1 -1
  287. package/dist/ionic/{p-e3ca182a.entry.js → p-568fec78.entry.js} +1 -1
  288. package/dist/ionic/{p-9be96bf3.system.entry.js → p-5c8c9748.system.entry.js} +1 -1
  289. package/dist/ionic/{p-d57e8b06.js → p-5e2dc8e0.js} +1 -1
  290. package/dist/ionic/{p-3c325277.js → p-5e43aa8b.js} +1 -1
  291. package/dist/ionic/{p-810f1bc9.system.entry.js → p-5e84b718.system.entry.js} +1 -1
  292. package/dist/ionic/{p-60f22efc.system.entry.js → p-60838ce3.system.entry.js} +1 -1
  293. package/dist/ionic/{p-5080e623.system.entry.js → p-62428e04.system.entry.js} +1 -1
  294. package/dist/ionic/{p-516421e2.system.entry.js → p-626f7142.system.entry.js} +1 -1
  295. package/dist/ionic/{p-a8270ae8.system.entry.js → p-63a73b69.system.entry.js} +1 -1
  296. package/dist/ionic/{p-5163baf4.system.entry.js → p-6522a762.system.entry.js} +1 -1
  297. package/dist/ionic/{p-a037b6d5.system.entry.js → p-65a4c12f.system.entry.js} +1 -1
  298. package/dist/ionic/{p-563068af.js → p-6b7e74ba.js} +1 -1
  299. package/dist/ionic/{p-6eb7b33c.system.entry.js → p-6ba07931.system.entry.js} +1 -1
  300. package/dist/ionic/{p-c8c0d58a.system.entry.js → p-6bbf2815.system.entry.js} +1 -1
  301. package/dist/ionic/{p-74834696.system.entry.js → p-6bc9c436.system.entry.js} +1 -1
  302. package/dist/ionic/{p-ec344ed1.system.entry.js → p-6ca0e4b2.system.entry.js} +1 -1
  303. package/dist/ionic/p-6edbc09b.system.js +4 -0
  304. package/dist/ionic/{p-4446e19f.system.entry.js → p-700a2cb1.system.entry.js} +1 -1
  305. package/dist/ionic/p-70ab8b73.js +5 -0
  306. package/dist/ionic/{p-52edd6b0.entry.js → p-7129d04e.entry.js} +1 -1
  307. package/dist/ionic/p-72a1cbc7.js +4 -0
  308. package/dist/ionic/{p-2e5930dd.system.js → p-73f50e29.system.js} +1 -1
  309. package/dist/ionic/{p-204fb8f0.system.entry.js → p-76e8336d.system.entry.js} +1 -1
  310. package/dist/ionic/p-78a293a5.js +4 -0
  311. package/dist/ionic/p-7a3caa4e.system.js +4 -0
  312. package/dist/ionic/{p-32983529.system.entry.js → p-7dc0ee11.system.entry.js} +1 -1
  313. package/dist/ionic/{p-ab051966.entry.js → p-7e46b6ab.entry.js} +1 -1
  314. package/dist/ionic/p-7e9e16bf.system.entry.js +4 -0
  315. package/dist/ionic/{p-6276ba2f.system.entry.js → p-82da795c.system.entry.js} +1 -1
  316. package/dist/ionic/{p-9f3ad626.system.entry.js → p-82f58c25.system.entry.js} +1 -1
  317. package/dist/ionic/{p-5df94bf8.entry.js → p-83b7bbf9.entry.js} +1 -1
  318. package/dist/ionic/{p-ec7ff98b.entry.js → p-88ad9cb6.entry.js} +1 -1
  319. package/dist/ionic/{p-fdfc7b98.entry.js → p-8b79baf0.entry.js} +1 -1
  320. package/dist/ionic/{p-5260588f.system.entry.js → p-8e28945a.system.entry.js} +1 -1
  321. package/dist/ionic/p-8fdd4a2f.system.js +4 -0
  322. package/dist/ionic/{p-49f2eaa6.entry.js → p-90d892fd.entry.js} +1 -1
  323. package/dist/ionic/{p-2441ba84.system.js → p-91546be9.system.js} +1 -1
  324. package/dist/ionic/{p-a122ecd0.system.js → p-918d5f19.system.js} +1 -1
  325. package/dist/ionic/{p-ff3d728d.system.js → p-93616477.system.js} +1 -1
  326. package/dist/ionic/{p-629b0629.js → p-972763df.js} +1 -1
  327. package/dist/ionic/p-9f2e0db9.js +4 -0
  328. package/dist/ionic/{p-c2d6088f.entry.js → p-a1a2dd4d.entry.js} +1 -1
  329. package/dist/ionic/{p-c005eb67.system.entry.js → p-a6d8476b.system.entry.js} +1 -1
  330. package/dist/ionic/{p-28d8b87b.entry.js → p-a720dc73.entry.js} +1 -1
  331. package/dist/ionic/{p-84084b75.entry.js → p-a8d33949.entry.js} +1 -1
  332. package/dist/ionic/{p-70f4fbac.entry.js → p-ab7f8f4c.entry.js} +1 -1
  333. package/dist/ionic/{p-26276eb7.system.entry.js → p-abf426cd.system.entry.js} +1 -1
  334. package/dist/ionic/{p-9fccec52.system.js → p-b098f738.system.js} +1 -1
  335. package/dist/ionic/{p-eb91aee6.entry.js → p-b0dd4f33.entry.js} +1 -1
  336. package/dist/ionic/p-b132c2c0.system.js +4 -0
  337. package/dist/ionic/{p-b453b38d.entry.js → p-b49fe110.entry.js} +1 -1
  338. package/dist/ionic/{p-b703ebeb.system.entry.js → p-b5637aeb.system.entry.js} +1 -1
  339. package/dist/ionic/p-b95fd3c6.entry.js +4 -0
  340. package/dist/ionic/{p-ff0611e6.system.entry.js → p-be321bb6.system.entry.js} +1 -1
  341. package/dist/ionic/{p-7474a472.system.entry.js → p-bf8224f4.system.entry.js} +1 -1
  342. package/dist/ionic/{p-0dbfa45f.entry.js → p-bf9b1560.entry.js} +1 -1
  343. package/dist/ionic/{p-98bfaff3.system.entry.js → p-bfac43d7.system.entry.js} +1 -1
  344. package/dist/ionic/{p-574411f2.system.entry.js → p-c4d08d6d.system.entry.js} +1 -1
  345. package/dist/ionic/{p-d8d30fd1.system.entry.js → p-c5729044.system.entry.js} +1 -1
  346. package/dist/ionic/{p-07f5e286.entry.js → p-c7fca267.entry.js} +1 -1
  347. package/dist/ionic/{p-041ac2c3.entry.js → p-cc3aa152.entry.js} +1 -1
  348. package/dist/ionic/{p-6dff4431.entry.js → p-cd12dcd9.entry.js} +1 -1
  349. package/dist/ionic/{p-d0d09178.system.entry.js → p-cd675d89.system.entry.js} +1 -1
  350. package/dist/ionic/{p-ef8a8827.system.entry.js → p-ce24ddd7.system.entry.js} +1 -1
  351. package/dist/ionic/{p-b3f6f321.js → p-ce7a651e.js} +1 -1
  352. package/dist/ionic/{p-5e549223.system.js → p-d4cea1ba.system.js} +1 -1
  353. package/dist/ionic/{p-765e6339.entry.js → p-d8b2c214.entry.js} +1 -1
  354. package/dist/ionic/{p-2ac2278e.system.entry.js → p-de0f1af2.system.entry.js} +1 -1
  355. package/dist/ionic/{p-5a9dc764.system.entry.js → p-de676d36.system.entry.js} +1 -1
  356. package/dist/ionic/{p-22e92b06.system.entry.js → p-df699a02.system.entry.js} +1 -1
  357. package/dist/ionic/{p-99a3df5c.entry.js → p-e24630f9.entry.js} +1 -1
  358. package/dist/ionic/{p-3f15f60b.entry.js → p-e57a38f3.entry.js} +1 -1
  359. package/dist/ionic/{p-74ef17ea.system.entry.js → p-e89abe38.system.entry.js} +1 -1
  360. package/dist/ionic/{p-37c9e295.entry.js → p-ea88031d.entry.js} +1 -1
  361. package/dist/ionic/{p-47a11fc4.entry.js → p-ebaeeee8.entry.js} +1 -1
  362. package/dist/ionic/{p-a314559e.system.js → p-ec102360.system.js} +1 -1
  363. package/dist/ionic/{p-072f99fd.entry.js → p-ee6d9730.entry.js} +1 -1
  364. package/dist/ionic/{p-bacf09d3.entry.js → p-f0dcf99b.entry.js} +1 -1
  365. package/dist/ionic/p-f9015336.js +4 -0
  366. package/dist/ionic/{p-11d0977d.entry.js → p-f920f5ca.entry.js} +1 -1
  367. package/dist/ionic/p-f978ccd1.js +4 -0
  368. package/dist/types/components/checkbox/checkbox.d.ts +1 -0
  369. package/dist/types/components/item/item.d.ts +1 -0
  370. package/dist/types/components/range/range.d.ts +8 -0
  371. package/dist/types/utils/browser/index.d.ts +16 -1
  372. package/dist/types/utils/input-shims/hacks/scroll-data.d.ts +1 -1
  373. package/dist/types/utils/overlays.d.ts +5 -2
  374. package/hydrate/index.js +128 -40
  375. package/package.json +2 -2
  376. package/dist/esm-es5/app-globals-c7886b40.js +0 -4
  377. package/dist/esm-es5/input-shims-af993f05.js +0 -4
  378. package/dist/esm-es5/overlays-4565894b.js +0 -4
  379. package/dist/ionic/p-23ddd787.system.entry.js +0 -4
  380. package/dist/ionic/p-4531b920.system.js +0 -4
  381. package/dist/ionic/p-56495958.js +0 -4
  382. package/dist/ionic/p-6d640b2b.entry.js +0 -4
  383. package/dist/ionic/p-75d4ceab.js +0 -4
  384. package/dist/ionic/p-83459b99.entry.js +0 -4
  385. package/dist/ionic/p-8f7edf3e.js +0 -4
  386. package/dist/ionic/p-a18eb556.js +0 -5
  387. package/dist/ionic/p-a533868d.system.js +0 -4
  388. package/dist/ionic/p-be187db3.entry.js +0 -4
  389. package/dist/ionic/p-bfee11b2.system.js +0 -4
  390. package/dist/ionic/p-c68a8814.system.js +0 -4
  391. package/dist/ionic/p-cc758251.system.entry.js +0 -4
  392. package/dist/ionic/p-d898dd46.js +0 -4
  393. package/dist/ionic/p-dacb0258.js +0 -4
  394. package/dist/ionic/p-ee55302a.system.entry.js +0 -4
  395. package/dist/ionic/p-f0c28fbd.entry.js +0 -4
  396. package/dist/ionic/p-fde174d6.system.entry.js +0 -4
@@ -1,6 +1,7 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
+ import { d as doc } from './index5.js';
4
5
  import { b as getIonMode, c as config } from './ionic-global.js';
5
6
  import { C as CoreDelegate } from './framework-delegate.js';
6
7
  import { OVERLAY_BACK_BUTTON_PRIORITY } from './hardware-back-button.js';
@@ -19,7 +20,7 @@ const createController = (tagName) => {
19
20
  return dismissOverlay(document, data, role, tagName, id);
20
21
  },
21
22
  async getTop() {
22
- return getOverlay(document, tagName);
23
+ return getPresentedOverlay(document, tagName);
23
24
  },
24
25
  };
25
26
  };
@@ -136,7 +137,7 @@ const focusLastDescendant = (ref, overlay) => {
136
137
  * Should NOT include: Toast
137
138
  */
138
139
  const trapKeyboardFocus = (ev, doc) => {
139
- const lastOverlay = getOverlay(doc, 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-picker,ion-popover');
140
+ const lastOverlay = getPresentedOverlay(doc, 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-picker,ion-popover');
140
141
  const target = ev.target;
141
142
  /**
142
143
  * If no active overlay, ignore this event.
@@ -291,7 +292,7 @@ const connectListeners = (doc) => {
291
292
  }, true);
292
293
  // handle back-button click
293
294
  doc.addEventListener('ionBackButton', (ev) => {
294
- const lastOverlay = getOverlay(doc);
295
+ const lastOverlay = getPresentedOverlay(doc);
295
296
  if (lastOverlay === null || lastOverlay === void 0 ? void 0 : lastOverlay.backdropDismiss) {
296
297
  ev.detail.register(OVERLAY_BACK_BUTTON_PRIORITY, () => {
297
298
  return lastOverlay.dismiss(undefined, BACKDROP);
@@ -301,7 +302,7 @@ const connectListeners = (doc) => {
301
302
  // handle ESC to close overlay
302
303
  doc.addEventListener('keydown', (ev) => {
303
304
  if (ev.key === 'Escape') {
304
- const lastOverlay = getOverlay(doc);
305
+ const lastOverlay = getPresentedOverlay(doc);
305
306
  if (lastOverlay === null || lastOverlay === void 0 ? void 0 : lastOverlay.backdropDismiss) {
306
307
  lastOverlay.dismiss(undefined, BACKDROP);
307
308
  }
@@ -310,12 +311,15 @@ const connectListeners = (doc) => {
310
311
  }
311
312
  };
312
313
  const dismissOverlay = (doc, data, role, overlayTag, id) => {
313
- const overlay = getOverlay(doc, overlayTag, id);
314
+ const overlay = getPresentedOverlay(doc, overlayTag, id);
314
315
  if (!overlay) {
315
316
  return Promise.reject('overlay does not exist');
316
317
  }
317
318
  return overlay.dismiss(data, role);
318
319
  };
320
+ /**
321
+ * Returns a list of all overlays in the DOM even if they are not presented.
322
+ */
319
323
  const getOverlays = (doc, selector) => {
320
324
  if (selector === undefined) {
321
325
  selector = 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-picker,ion-popover,ion-toast';
@@ -323,14 +327,24 @@ const getOverlays = (doc, selector) => {
323
327
  return Array.from(doc.querySelectorAll(selector)).filter((c) => c.overlayIndex > 0);
324
328
  };
325
329
  /**
326
- * Returns an overlay element
330
+ * Returns a list of all presented overlays.
331
+ * Inline overlays can exist in the DOM but not be presented,
332
+ * so there are times when we want to exclude those.
333
+ * @param doc The document to find the element within.
334
+ * @param overlayTag The selector for the overlay, defaults to Ionic overlay components.
335
+ */
336
+ const getPresentedOverlays = (doc, overlayTag) => {
337
+ return getOverlays(doc, overlayTag).filter((o) => !isOverlayHidden(o));
338
+ };
339
+ /**
340
+ * Returns a presented overlay element.
327
341
  * @param doc The document to find the element within.
328
342
  * @param overlayTag The selector for the overlay, defaults to Ionic overlay components.
329
343
  * @param id The unique identifier for the overlay instance.
330
344
  * @returns The overlay element or `undefined` if no overlay element is found.
331
345
  */
332
- const getOverlay = (doc, overlayTag, id) => {
333
- const overlays = getOverlays(doc, overlayTag).filter((o) => !isOverlayHidden(o));
346
+ const getPresentedOverlay = (doc, overlayTag, id) => {
347
+ const overlays = getPresentedOverlays(doc, overlayTag);
334
348
  return id === undefined ? overlays[overlays.length - 1] : overlays.find((o) => o.id === id);
335
349
  };
336
350
  /**
@@ -436,7 +450,13 @@ const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnim
436
450
  if (!overlay.presented) {
437
451
  return false;
438
452
  }
439
- setRootAriaHidden(false);
453
+ /**
454
+ * If this is the last visible overlay then
455
+ * we want to re-add the root to the accessibility tree.
456
+ */
457
+ if (doc !== undefined && getPresentedOverlays(doc).length === 1) {
458
+ setRootAriaHidden(false);
459
+ }
440
460
  overlay.presented = false;
441
461
  try {
442
462
  // Overlay contents should not be clickable during dismiss
@@ -668,4 +688,4 @@ const createTriggerController = () => {
668
688
  };
669
689
  };
670
690
 
671
- export { BACKDROP as B, GESTURE as G, alertController as a, actionSheetController as b, popoverController as c, createDelegateController as d, createTriggerController as e, present as f, dismiss as g, eventMethod as h, isCancel as i, prepareOverlay as j, setOverlayId as k, loadingController as l, modalController as m, focusFirstDescendant as n, getOverlay as o, pickerController as p, activeAnimations as q, safeCall as s, toastController as t };
691
+ export { BACKDROP as B, GESTURE as G, alertController as a, actionSheetController as b, popoverController as c, createDelegateController as d, createTriggerController as e, present as f, dismiss as g, eventMethod as h, isCancel as i, prepareOverlay as j, setOverlayId as k, loadingController as l, modalController as m, focusFirstDescendant as n, getPresentedOverlay as o, pickerController as p, activeAnimations as q, safeCall as s, toastController as t };
@@ -362,6 +362,8 @@ const PickerColumnInternal = /*@__PURE__*/ proxyCustomElement(class PickerColumn
362
362
  "isActive": [32],
363
363
  "scrollActiveItemIntoView": [64],
364
364
  "setValue": [64]
365
+ }, undefined, {
366
+ "value": ["valueChange"]
365
367
  }]);
366
368
  const PICKER_ITEM_ACTIVE_CLASS = 'picker-item-active';
367
369
  const PICKER_ITEM_PART = 'wheel-item';
@@ -355,6 +355,8 @@ const PickerColumnCmp = /*@__PURE__*/ proxyCustomElement(class PickerColumnCmp e
355
355
  }; }
356
356
  }, [32, "ion-picker-column", {
357
357
  "col": [16]
358
+ }, undefined, {
359
+ "col": ["colChanged"]
358
360
  }]);
359
361
  const PICKER_OPT_SELECTED = 'picker-opt-selected';
360
362
  const DECELERATION_FRICTION = 0.97;
@@ -1324,6 +1324,10 @@ const Popover = /*@__PURE__*/ proxyCustomElement(class Popover extends HTMLEleme
1324
1324
  "getParentPopover": [64],
1325
1325
  "onDidDismiss": [64],
1326
1326
  "onWillDismiss": [64]
1327
+ }, undefined, {
1328
+ "trigger": ["onTriggerChange"],
1329
+ "triggerAction": ["onTriggerChange"],
1330
+ "isOpen": ["onIsOpenChange"]
1327
1331
  }]);
1328
1332
  const LIFECYCLE_MAP = {
1329
1333
  ionPopoverDidPresent: 'ionViewDidEnter',
@@ -150,7 +150,9 @@ const RadioGroup = /*@__PURE__*/ proxyCustomElement(class RadioGroup extends HTM
150
150
  "allowEmptySelection": [4, "allow-empty-selection"],
151
151
  "name": [1],
152
152
  "value": [1032]
153
- }, [[4, "keydown", "onKeydown"]]]);
153
+ }, [[4, "keydown", "onKeydown"]], {
154
+ "value": ["valueChanged"]
155
+ }]);
154
156
  let radioGroupIds = 0;
155
157
  function defineCustomElement() {
156
158
  if (typeof customElements === "undefined") {
@@ -208,6 +208,11 @@ Developers can dismiss this warning by removing their usage of the "legacy" prop
208
208
  "buttonTabindex": [32],
209
209
  "setFocus": [64],
210
210
  "setButtonTabindex": [64]
211
+ }, undefined, {
212
+ "value": ["valueChanged"],
213
+ "checked": ["styleChanged"],
214
+ "color": ["styleChanged"],
215
+ "disabled": ["styleChanged"]
211
216
  }]);
212
217
  let radioButtonIds = 0;
213
218
  function defineCustomElement() {
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- const ionicGlobal = require('./ionic-global-6d5d27b5.js');
6
+ const ionicGlobal = require('./ionic-global-14a0604b.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-184fdd62.js');
6
+ const index$1 = require('./index-6f887430.js');
7
7
  const haptic = require('./haptic-c5f6b4d5.js');
8
8
  const index = require('./index-0ee995e4.js');
9
9
 
@@ -5,7 +5,7 @@
5
5
 
6
6
  const hardwareBackButton = require('./hardware-back-button-b67c8e75.js');
7
7
  const helpers = require('./helpers-ea4ccbcb.js');
8
- const ionicGlobal = require('./ionic-global-6d5d27b5.js');
8
+ const ionicGlobal = require('./ionic-global-14a0604b.js');
9
9
  const animation = require('./animation-2bb33618.js');
10
10
 
11
11
  /**
@@ -1976,6 +1976,7 @@ const setValue = (ref, propName, newVal, cmpMeta) => {
1976
1976
  * @returns a reference to the same constructor passed in (but now mutated)
1977
1977
  */
1978
1978
  const proxyComponent = (Cstr, cmpMeta, flags) => {
1979
+ var _a;
1979
1980
  if (cmpMeta.$members$) {
1980
1981
  if (Cstr.watchers) {
1981
1982
  cmpMeta.$watchers$ = Cstr.watchers;
@@ -2013,7 +2014,7 @@ const proxyComponent = (Cstr, cmpMeta, flags) => {
2013
2014
  });
2014
2015
  if ((flags & 1 /* PROXY_FLAGS.isElementConstructor */)) {
2015
2016
  const attrNameToPropName = new Map();
2016
- prototype.attributeChangedCallback = function (attrName, _oldValue, newValue) {
2017
+ prototype.attributeChangedCallback = function (attrName, oldValue, newValue) {
2017
2018
  plt.jmp(() => {
2018
2019
  const propName = attrNameToPropName.get(attrName);
2019
2020
  // In a web component lifecycle the attributeChangedCallback runs prior to connectedCallback
@@ -2061,21 +2062,49 @@ const proxyComponent = (Cstr, cmpMeta, flags) => {
2061
2062
  // `propName` to be converted to a `DOMString`, which may not be what we want for other primitive props.
2062
2063
  return;
2063
2064
  }
2065
+ else if (propName == null) {
2066
+ // At this point we should know this is not a "member", so we can treat it like watching an attribute
2067
+ // on a vanilla web component
2068
+ const hostRef = getHostRef(this);
2069
+ const flags = hostRef === null || hostRef === void 0 ? void 0 : hostRef.$flags$;
2070
+ // We only want to trigger the callback(s) if:
2071
+ // 1. The instance is ready
2072
+ // 2. The watchers are ready
2073
+ // 3. The value has changed
2074
+ if (!(flags & 8 /* HOST_FLAGS.isConstructingInstance */) &&
2075
+ flags & 128 /* HOST_FLAGS.isWatchReady */ &&
2076
+ newValue !== oldValue) {
2077
+ const instance = hostRef.$lazyInstance$ ;
2078
+ const entry = cmpMeta.$watchers$[attrName];
2079
+ entry === null || entry === void 0 ? void 0 : entry.forEach((callbackName) => {
2080
+ if (instance[callbackName] != null) {
2081
+ instance[callbackName].call(instance, newValue, oldValue, attrName);
2082
+ }
2083
+ });
2084
+ }
2085
+ return;
2086
+ }
2064
2087
  this[propName] = newValue === null && typeof this[propName] === 'boolean' ? false : newValue;
2065
2088
  });
2066
2089
  };
2067
- // create an array of attributes to observe
2068
- // and also create a map of html attribute name to js property name
2069
- Cstr.observedAttributes = members
2070
- .filter(([_, m]) => m[0] & 15 /* MEMBER_FLAGS.HasAttribute */) // filter to only keep props that should match attributes
2071
- .map(([propName, m]) => {
2072
- const attrName = m[1] || propName;
2073
- attrNameToPropName.set(attrName, propName);
2074
- if (m[0] & 512 /* MEMBER_FLAGS.ReflectAttr */) {
2075
- cmpMeta.$attrsToReflect$.push([propName, attrName]);
2076
- }
2077
- return attrName;
2078
- });
2090
+ // Create an array of attributes to observe
2091
+ // This list in comprised of all strings used within a `@Watch()` decorator
2092
+ // on a component as well as any Stencil-specific "members" (`@Prop()`s and `@State()`s).
2093
+ // As such, there is no way to guarantee type-safety here that a user hasn't entered
2094
+ // an invalid attribute.
2095
+ Cstr.observedAttributes = Array.from(new Set([
2096
+ ...Object.keys((_a = cmpMeta.$watchers$) !== null && _a !== void 0 ? _a : {}),
2097
+ ...members
2098
+ .filter(([_, m]) => m[0] & 15 /* MEMBER_FLAGS.HasAttribute */)
2099
+ .map(([propName, m]) => {
2100
+ const attrName = m[1] || propName;
2101
+ attrNameToPropName.set(attrName, propName);
2102
+ if (m[0] & 512 /* MEMBER_FLAGS.ReflectAttr */) {
2103
+ cmpMeta.$attrsToReflect$.push([propName, attrName]);
2104
+ }
2105
+ return attrName;
2106
+ }),
2107
+ ]));
2079
2108
  }
2080
2109
  }
2081
2110
  return Cstr;
@@ -2307,6 +2336,7 @@ const bootstrapLazy = (lazyBundles, options = {}) => {
2307
2336
  }
2308
2337
  lazyBundles.map((lazyBundle) => {
2309
2338
  lazyBundle[1].map((compactMeta) => {
2339
+ var _a;
2310
2340
  const cmpMeta = {
2311
2341
  $flags$: compactMeta[0],
2312
2342
  $tagName$: compactMeta[1],
@@ -2323,7 +2353,7 @@ const bootstrapLazy = (lazyBundles, options = {}) => {
2323
2353
  cmpMeta.$attrsToReflect$ = [];
2324
2354
  }
2325
2355
  {
2326
- cmpMeta.$watchers$ = {};
2356
+ cmpMeta.$watchers$ = (_a = compactMeta[4]) !== null && _a !== void 0 ? _a : {};
2327
2357
  }
2328
2358
  const tagName = cmpMeta.$tagName$;
2329
2359
  const HostElement = class extends HTMLElement {
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- const index = require('./index-184fdd62.js');
6
+ const index = require('./index-6f887430.js');
7
7
  const helpers = require('./helpers-ea4ccbcb.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-80582b44.js'); });
16
- const mdTransitionAnimation = () => Promise.resolve().then(function () { return require('./md.transition-eeca9fb5.js'); });
15
+ const iosTransitionAnimation = () => Promise.resolve().then(function () { return require('./ios.transition-4b93903d.js'); });
16
+ const mdTransitionAnimation = () => Promise.resolve().then(function () { return require('./md.transition-79f3a215.js'); });
17
17
  // TODO(FW-2832): types
18
18
  const transition = (opts) => {
19
19
  return new Promise((resolve, reject) => {
@@ -6,18 +6,18 @@
6
6
  Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
8
  const animation = require('./animation-2bb33618.js');
9
- const index = require('./index-be8a2ab9.js');
10
- const ios_transition = require('./ios.transition-80582b44.js');
11
- const md_transition = require('./md.transition-eeca9fb5.js');
9
+ const index = require('./index-b183138a.js');
10
+ const ios_transition = require('./ios.transition-4b93903d.js');
11
+ const md_transition = require('./md.transition-79f3a215.js');
12
12
  const cubicBezier = require('./cubic-bezier-6b9222ad.js');
13
13
  const index$1 = require('./index-0ee995e4.js');
14
- const ionicGlobal = require('./ionic-global-6d5d27b5.js');
14
+ const ionicGlobal = require('./ionic-global-14a0604b.js');
15
15
  const helpers = require('./helpers-ea4ccbcb.js');
16
16
  const config = require('./config-d5882735.js');
17
- const index$2 = require('./index-e6416850.js');
18
- const overlays = require('./overlays-c78a0148.js');
17
+ const index$2 = require('./index-5121bb90.js');
18
+ const overlays = require('./overlays-d3a13e61.js');
19
19
  require('./index-306a7476.js');
20
- require('./index-184fdd62.js');
20
+ require('./index-6f887430.js');
21
21
  require('./gesture-controller-b46721be.js');
22
22
  require('./hardware-back-button-b67c8e75.js');
23
23
  require('./framework-delegate-c0873a6f.js');
@@ -3,12 +3,12 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- const index = require('./index-10873539.js');
6
+ const index$1 = require('./index-10873539.js');
7
7
  const helpers = require('./helpers-ea4ccbcb.js');
8
8
  const keyboard = require('./keyboard-fd7db491.js');
9
+ const index = require('./index-306a7476.js');
9
10
  require('./index-cc7dfb7c.js');
10
11
  require('./capacitor-2ffba62a.js');
11
- require('./index-306a7476.js');
12
12
 
13
13
  const cloneMap = new WeakMap();
14
14
  const relocateInput = (componentEl, inputEl, shouldRelocate, inputRelativeY = 0, disabledClonedInput = false) => {
@@ -155,11 +155,10 @@ const enableInputBlurring = () => {
155
155
  };
156
156
 
157
157
  const SCROLL_ASSIST_SPEED = 0.3;
158
- const getScrollData = (componentEl, contentEl, keyboardHeight) => {
158
+ const getScrollData = (componentEl, contentEl, keyboardHeight, platformHeight) => {
159
159
  var _a;
160
160
  const itemEl = (_a = componentEl.closest('ion-item,[ion-item]')) !== null && _a !== void 0 ? _a : componentEl;
161
- return calcScrollData(itemEl.getBoundingClientRect(), contentEl.getBoundingClientRect(), keyboardHeight, componentEl.ownerDocument.defaultView.innerHeight // TODO(FW-2832): type
162
- );
161
+ return calcScrollData(itemEl.getBoundingClientRect(), contentEl.getBoundingClientRect(), keyboardHeight, platformHeight);
163
162
  };
164
163
  const calcScrollData = (inputRect, contentRect, keyboardHeight, platformHeight) => {
165
164
  // compute input's Y values relative to the body
@@ -258,6 +257,83 @@ const enableScrollAssist = (componentEl, inputEl, contentEl, footerEl, keyboardH
258
257
  * Resize info is available on Capacitor 4+
259
258
  */
260
259
  const addScrollPadding = enableScrollPadding && (keyboardResize === undefined || keyboardResize.mode === keyboard.KeyboardResize.None);
260
+ /**
261
+ * This tracks whether or not the keyboard has been
262
+ * presented for a single focused text field. Note
263
+ * that it does not track if the keyboard is open
264
+ * in general such as if the keyboard is open for
265
+ * a different focused text field.
266
+ */
267
+ let hasKeyboardBeenPresentedForTextField = false;
268
+ /**
269
+ * When adding scroll padding we need to know
270
+ * how much of the viewport the keyboard obscures.
271
+ * We do this by subtracting the keyboard height
272
+ * from the platform height.
273
+ *
274
+ * If we compute this value when switching between
275
+ * inputs then the webview may already be resized.
276
+ * At this point, `win.innerHeight` has already accounted
277
+ * for the keyboard meaning we would then subtract
278
+ * the keyboard height again. This will result in the input
279
+ * being scrolled more than it needs to.
280
+ */
281
+ const platformHeight = index.win !== undefined ? index.win.innerHeight : 0;
282
+ /**
283
+ * Scroll assist is run when a text field
284
+ * is focused. However, it may need to
285
+ * re-run when the keyboard size changes
286
+ * such that the text field is now hidden
287
+ * underneath the keyboard.
288
+ * This function re-runs scroll assist
289
+ * when that happens.
290
+ *
291
+ * One limitation of this is on a web browser
292
+ * where native keyboard APIs do not have cross-browser
293
+ * support. `ionKeyboardDidShow` relies on the Visual Viewport API.
294
+ * This means that if the keyboard changes but does not change
295
+ * geometry, then scroll assist will not re-run even if
296
+ * the user has scrolled the text field under the keyboard.
297
+ * This is not a problem when running in Cordova/Capacitor
298
+ * because `ionKeyboardDidShow` uses the native events
299
+ * which fire every time the keyboard changes.
300
+ */
301
+ const keyboardShow = (ev) => {
302
+ /**
303
+ * If the keyboard has not yet been presented
304
+ * for this text field then the text field has just
305
+ * received focus. In that case, the focusin listener
306
+ * will run scroll assist.
307
+ */
308
+ if (hasKeyboardBeenPresentedForTextField === false) {
309
+ hasKeyboardBeenPresentedForTextField = true;
310
+ return;
311
+ }
312
+ /**
313
+ * Otherwise, the keyboard has already been presented
314
+ * for the focused text field.
315
+ * This means that the keyboard likely changed
316
+ * geometry, and we need to re-run scroll assist.
317
+ * This can happen when the user rotates their device
318
+ * or when they switch keyboards.
319
+ *
320
+ * Make sure we pass in the computed keyboard height
321
+ * rather than the estimated keyboard height.
322
+ *
323
+ * Since the keyboard is already open then we do not
324
+ * need to wait for the webview to resize, so we pass
325
+ * "waitForResize: false".
326
+ */
327
+ jsSetFocus(componentEl, inputEl, contentEl, footerEl, ev.detail.keyboardHeight, addScrollPadding, disableClonedInput, platformHeight, false);
328
+ };
329
+ /**
330
+ * Reset the internal state when the text field loses focus.
331
+ */
332
+ const focusOut = () => {
333
+ hasKeyboardBeenPresentedForTextField = false;
334
+ index.win === null || index.win === void 0 ? void 0 : index.win.removeEventListener('ionKeyboardDidShow', keyboardShow);
335
+ componentEl.removeEventListener('focusout', focusOut, true);
336
+ };
261
337
  /**
262
338
  * When the input is about to receive
263
339
  * focus, we need to move it to prevent
@@ -274,11 +350,15 @@ const enableScrollAssist = (componentEl, inputEl, contentEl, footerEl, keyboardH
274
350
  inputEl.removeAttribute(SKIP_SCROLL_ASSIST);
275
351
  return;
276
352
  }
277
- jsSetFocus(componentEl, inputEl, contentEl, footerEl, keyboardHeight, addScrollPadding, disableClonedInput);
353
+ jsSetFocus(componentEl, inputEl, contentEl, footerEl, keyboardHeight, addScrollPadding, disableClonedInput, platformHeight);
354
+ index.win === null || index.win === void 0 ? void 0 : index.win.addEventListener('ionKeyboardDidShow', keyboardShow);
355
+ componentEl.addEventListener('focusout', focusOut, true);
278
356
  };
279
357
  componentEl.addEventListener('focusin', focusIn, true);
280
358
  return () => {
281
359
  componentEl.removeEventListener('focusin', focusIn, true);
360
+ index.win === null || index.win === void 0 ? void 0 : index.win.removeEventListener('ionKeyboardDidShow', keyboardShow);
361
+ componentEl.removeEventListener('focusout', focusOut, true);
282
362
  };
283
363
  };
284
364
  /**
@@ -297,11 +377,11 @@ const setManualFocus = (el) => {
297
377
  el.setAttribute(SKIP_SCROLL_ASSIST, 'true');
298
378
  el.focus();
299
379
  };
300
- const jsSetFocus = async (componentEl, inputEl, contentEl, footerEl, keyboardHeight, enableScrollPadding, disableClonedInput = false) => {
380
+ const jsSetFocus = async (componentEl, inputEl, contentEl, footerEl, keyboardHeight, enableScrollPadding, disableClonedInput = false, platformHeight = 0, waitForResize = true) => {
301
381
  if (!contentEl && !footerEl) {
302
382
  return;
303
383
  }
304
- const scrollData = getScrollData(componentEl, (contentEl || footerEl), keyboardHeight);
384
+ const scrollData = getScrollData(componentEl, (contentEl || footerEl), keyboardHeight, platformHeight);
305
385
  if (contentEl && Math.abs(scrollData.scrollAmount) < 4) {
306
386
  // the text input is in a safe position that doesn't
307
387
  // require it to be scrolled into view, just set focus now
@@ -353,7 +433,7 @@ const jsSetFocus = async (componentEl, inputEl, contentEl, footerEl, keyboardHei
353
433
  window.removeEventListener('ionKeyboardDidShow', scrollContent);
354
434
  // scroll the input into place
355
435
  if (contentEl) {
356
- await index.scrollByPoint(contentEl, 0, scrollData.scrollAmount, scrollData.scrollDuration);
436
+ await index$1.scrollByPoint(contentEl, 0, scrollData.scrollAmount, scrollData.scrollDuration);
357
437
  }
358
438
  // the scroll view is in the correct position now
359
439
  // give the native text input focus
@@ -374,7 +454,7 @@ const jsSetFocus = async (componentEl, inputEl, contentEl, footerEl, keyboardHei
374
454
  window.addEventListener('ionKeyboardDidShow', scrollContent);
375
455
  };
376
456
  if (contentEl) {
377
- const scrollEl = await index.getScrollElement(contentEl);
457
+ const scrollEl = await index$1.getScrollElement(contentEl);
378
458
  /**
379
459
  * scrollData will only consider the amount we need
380
460
  * to scroll in order to properly bring the input
@@ -388,7 +468,7 @@ const jsSetFocus = async (componentEl, inputEl, contentEl, footerEl, keyboardHei
388
468
  * bandwidth to become available.
389
469
  */
390
470
  const totalScrollAmount = scrollEl.scrollHeight - scrollEl.clientHeight;
391
- if (scrollData.scrollAmount > totalScrollAmount - scrollEl.scrollTop) {
471
+ if (waitForResize && scrollData.scrollAmount > totalScrollAmount - scrollEl.scrollTop) {
392
472
  /**
393
473
  * On iOS devices, the system will show a "Passwords" bar above the keyboard
394
474
  * after the initial keyboard is shown. This prevents the webview from resizing
@@ -447,7 +527,7 @@ const startInputShims = async (config, platform) => {
447
527
  await new Promise((resolve) => helpers.componentOnReady(componentEl, resolve));
448
528
  const inputRoot = componentEl.shadowRoot || componentEl;
449
529
  const inputEl = inputRoot.querySelector('input') || inputRoot.querySelector('textarea');
450
- const scrollEl = index.findClosestIonContent(componentEl);
530
+ const scrollEl = index$1.findClosestIonContent(componentEl);
451
531
  const footerEl = !scrollEl ? componentEl.closest('ion-footer') : null;
452
532
  if (!inputEl) {
453
533
  return;
@@ -5,10 +5,10 @@
5
5
 
6
6
  Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
- const index = require('./index-184fdd62.js');
8
+ const index = require('./index-6f887430.js');
9
9
  const helpers = require('./helpers-ea4ccbcb.js');
10
10
  const index$1 = require('./index-d8d1fc0b.js');
11
- const ionicGlobal = require('./ionic-global-6d5d27b5.js');
11
+ const ionicGlobal = require('./ionic-global-14a0604b.js');
12
12
  const index$2 = require('./index-cc7dfb7c.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-184fdd62.js');
9
- const buttonActive = require('./button-active-0ff8e82c.js');
8
+ const index = require('./index-6f887430.js');
9
+ const buttonActive = require('./button-active-32f15660.js');
10
10
  const helpers = require('./helpers-ea4ccbcb.js');
11
11
  const lockController = require('./lock-controller-4ae2eb59.js');
12
- const overlays = require('./overlays-c78a0148.js');
12
+ const overlays = require('./overlays-d3a13e61.js');
13
13
  const theme = require('./theme-fbc56b3b.js');
14
- const ionicGlobal = require('./ionic-global-6d5d27b5.js');
14
+ const ionicGlobal = require('./ionic-global-14a0604b.js');
15
15
  const animation = require('./animation-2bb33618.js');
16
16
  require('./haptic-c5f6b4d5.js');
17
17
  require('./capacitor-2ffba62a.js');
@@ -5,14 +5,14 @@
5
5
 
6
6
  Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
- const index = require('./index-184fdd62.js');
8
+ const index = require('./index-6f887430.js');
9
9
  const config = require('./config-d5882735.js');
10
- const buttonActive = require('./button-active-0ff8e82c.js');
10
+ const buttonActive = require('./button-active-32f15660.js');
11
11
  const helpers = require('./helpers-ea4ccbcb.js');
12
12
  const lockController = require('./lock-controller-4ae2eb59.js');
13
- const overlays = require('./overlays-c78a0148.js');
13
+ const overlays = require('./overlays-d3a13e61.js');
14
14
  const theme = require('./theme-fbc56b3b.js');
15
- const ionicGlobal = require('./ionic-global-6d5d27b5.js');
15
+ const ionicGlobal = require('./ionic-global-14a0604b.js');
16
16
  const animation = require('./animation-2bb33618.js');
17
17
  require('./haptic-c5f6b4d5.js');
18
18
  require('./capacitor-2ffba62a.js');
@@ -5,8 +5,8 @@
5
5
 
6
6
  Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
- const index = require('./index-184fdd62.js');
9
- const ionicGlobal = require('./ionic-global-6d5d27b5.js');
8
+ const index = require('./index-6f887430.js');
9
+ const ionicGlobal = require('./ionic-global-14a0604b.js');
10
10
  const helpers = require('./helpers-ea4ccbcb.js');
11
11
  const dir = require('./dir-f1e0ca26.js');
12
12
  const theme = require('./theme-fbc56b3b.js');
@@ -14,7 +14,7 @@ const index$1 = require('./index-10873539.js');
14
14
  const keyboardController = require('./keyboard-controller-50beb83a.js');
15
15
  const cubicBezier = require('./cubic-bezier-6b9222ad.js');
16
16
  const frameworkDelegate = require('./framework-delegate-c0873a6f.js');
17
- const index$2 = require('./index-be8a2ab9.js');
17
+ const index$2 = require('./index-b183138a.js');
18
18
  require('./index-cc7dfb7c.js');
19
19
  require('./index-306a7476.js');
20
20
  require('./keyboard-fd7db491.js');
@@ -34,7 +34,7 @@ const App = class {
34
34
  Promise.resolve().then(function () { return require('./index-9f379eaa.js'); }).then((module) => module.startTapClick(ionicGlobal.config));
35
35
  }
36
36
  if (ionicGlobal.config.getBoolean('statusTap', isHybrid)) {
37
- Promise.resolve().then(function () { return require('./status-tap-cc4c6539.js'); }).then((module) => module.startStatusTap());
37
+ Promise.resolve().then(function () { return require('./status-tap-e2e45ff8.js'); }).then((module) => module.startStatusTap());
38
38
  }
39
39
  if (ionicGlobal.config.getBoolean('inputShims', needInputShims())) {
40
40
  /**
@@ -42,7 +42,7 @@ const App = class {
42
42
  * platforms proceed into this block.
43
43
  */
44
44
  const platform = ionicGlobal.isPlatform(window, 'ios') ? 'ios' : 'android';
45
- Promise.resolve().then(function () { return require('./input-shims-f8569707.js'); }).then((module) => module.startInputShims(ionicGlobal.config, platform));
45
+ Promise.resolve().then(function () { return require('./input-shims-da7dc0de.js'); }).then((module) => module.startInputShims(ionicGlobal.config, platform));
46
46
  }
47
47
  const hardwareBackButtonModule = await Promise.resolve().then(function () { return require('./hardware-back-button-b67c8e75.js'); });
48
48
  if (ionicGlobal.config.getBoolean('hardwareBackButton', isHybrid)) {
@@ -5,8 +5,8 @@
5
5
 
6
6
  Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
- const index = require('./index-184fdd62.js');
9
- const ionicGlobal = require('./ionic-global-6d5d27b5.js');
8
+ const index = require('./index-6f887430.js');
9
+ const ionicGlobal = require('./ionic-global-14a0604b.js');
10
10
  const theme = require('./theme-fbc56b3b.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}";