@ionic/core 9.0.10-dev.11792788258.1f71cfee → 9.0.10-dev.11793383958.19a7d413

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 (376) hide show
  1. package/components/index.js +1 -1
  2. package/components/ion-accordion.js +1 -1
  3. package/components/ion-action-sheet.js +1 -1
  4. package/components/ion-alert.js +1 -1
  5. package/components/ion-app.js +1 -1
  6. package/components/ion-back-button.js +1 -1
  7. package/components/ion-breadcrumb.js +1 -1
  8. package/components/ion-button.js +1 -1
  9. package/components/ion-card.js +1 -1
  10. package/components/ion-checkbox.js +1 -1
  11. package/components/ion-col.js +1 -1
  12. package/components/ion-content.js +1 -1
  13. package/components/ion-datetime-button.js +1 -1
  14. package/components/ion-datetime.js +1 -1
  15. package/components/ion-fab-button.js +1 -1
  16. package/components/ion-footer.js +1 -1
  17. package/components/ion-header.js +1 -1
  18. package/components/ion-img.js +1 -1
  19. package/components/ion-infinite-scroll.js +1 -1
  20. package/components/ion-input-otp.js +1 -1
  21. package/components/ion-input-password-toggle.js +1 -1
  22. package/components/ion-input.js +1 -1
  23. package/components/ion-item-options.js +1 -1
  24. package/components/ion-item-sliding.js +1 -1
  25. package/components/ion-item.js +1 -1
  26. package/components/ion-label.js +1 -1
  27. package/components/ion-loading.js +1 -1
  28. package/components/ion-menu-button.js +1 -1
  29. package/components/ion-menu-toggle.js +1 -1
  30. package/components/ion-menu.js +1 -1
  31. package/components/ion-modal.js +1 -1
  32. package/components/ion-nav.js +1 -1
  33. package/components/ion-picker-column-option.js +1 -1
  34. package/components/ion-picker-column.js +1 -1
  35. package/components/ion-picker.js +1 -1
  36. package/components/ion-popover.js +1 -1
  37. package/components/ion-progress-bar.js +1 -1
  38. package/components/ion-radio-group.js +1 -1
  39. package/components/ion-radio.js +1 -1
  40. package/components/ion-range.js +1 -1
  41. package/components/ion-refresher-content.js +1 -1
  42. package/components/ion-refresher.js +1 -1
  43. package/components/ion-reorder-group.js +1 -1
  44. package/components/ion-router-outlet.js +1 -1
  45. package/components/ion-router.js +1 -1
  46. package/components/ion-searchbar.js +1 -1
  47. package/components/ion-segment-button.js +1 -1
  48. package/components/ion-segment-view.js +1 -1
  49. package/components/ion-segment.js +1 -1
  50. package/components/ion-select-modal.js +1 -1
  51. package/components/ion-select-popover.js +1 -1
  52. package/components/ion-select.js +1 -1
  53. package/components/ion-tab-button.js +1 -1
  54. package/components/ion-tab.js +1 -1
  55. package/components/ion-textarea.js +1 -1
  56. package/components/ion-title.js +1 -1
  57. package/components/ion-toast.js +1 -1
  58. package/components/ion-toggle.js +1 -1
  59. package/components/{p-PkD1iLNN.js → p--cshUOAU.js} +1 -1
  60. package/components/{p-D8FyR2IB.js → p-B02CcbPD.js} +1 -1
  61. package/components/{p-CUQjkOdi.js → p-B4IBdPVJ.js} +1 -1
  62. package/components/p-BODcC-C0.js +4 -0
  63. package/components/p-BVNUhOOf.js +4 -0
  64. package/components/{p-BZ1k9WL7.js → p-Ba9_OzSY.js} +1 -1
  65. package/components/p-Bd8hg9FK.js +4 -0
  66. package/components/{p-3avHDbEF.js → p-BqyLLYLm.js} +1 -1
  67. package/components/p-C1AxSUnp.js +4 -0
  68. package/components/{p-DwTzX8Vi.js → p-CKTjkpAq.js} +1 -1
  69. package/components/{p-Dah8BCNg.js → p-CKiqp4Vl.js} +1 -1
  70. package/components/p-CONpe3oX.js +4 -0
  71. package/components/p-CVrOcN5N.js +4 -0
  72. package/components/p-CYctYy9B.js +4 -0
  73. package/components/{p-C-SO5kIs.js → p-C_gnmBt2.js} +1 -1
  74. package/components/{p-DnBabjgY.js → p-CxEV3Vwy.js} +1 -1
  75. package/components/p-Cyajikho.js +4 -0
  76. package/components/p-D0nwlsl_.js +4 -0
  77. package/components/{p-BT2InaHz.js → p-DBtFJlTi.js} +1 -1
  78. package/components/{p-BBsseItU.js → p-DD92Fw3n.js} +1 -1
  79. package/components/{p-kKGBuIkf.js → p-DDI6VLW9.js} +1 -1
  80. package/components/{p-LkEGRiq0.js → p-DfDIY2oP.js} +1 -1
  81. package/components/{p-Dj4J3LkD.js → p-Dojwmvde.js} +1 -1
  82. package/components/p-Drpw2dyl.js +4 -0
  83. package/components/{p-07wRJfkt.js → p-GpqwNbxf.js} +1 -1
  84. package/components/p-IQN1T5zw.js +4 -0
  85. package/components/{p-DTGCMApY.js → p-ODGeXc3M.js} +1 -1
  86. package/components/p-SHHIB5F0.js +4 -0
  87. package/components/{p-D5_mEbGJ.js → p-V1THdfzs.js} +1 -1
  88. package/components/p-YNnH1_Hs.js +4 -0
  89. package/components/{p-C8BAigo3.js → p-ZrYBjOcc.js} +1 -1
  90. package/components/p-_y7kwBO8.js +4 -0
  91. package/components/{p-BrrMFd9K.js → p-jsVMT15X.js} +1 -1
  92. package/components/{p-7NbIvzb4.js → p-r59A3wQk.js} +1 -1
  93. package/components/{p-Dy7x-KDF.js → p-yGD6MBgf.js} +1 -1
  94. package/dist/cjs/{animation-UiXhXV49.js → animation-DcgLg_PI.js} +1 -1
  95. package/dist/cjs/{attribute-controller-0-lwbVEj.js → attribute-controller-BjTE2TOf.js} +1 -1
  96. package/dist/cjs/{button-active-DzN1aPt-.js → button-active-FdsfRDY_.js} +1 -1
  97. package/dist/cjs/{capacitor-BTjfXFlK.js → capacitor-C6Pp4Z7A.js} +1 -1
  98. package/dist/cjs/{dir-Bma_9Lqh.js → dir-zwDPRE5K.js} +1 -1
  99. package/dist/cjs/{framework-delegate-hNMKEiQC.js → framework-delegate-JbKIVMzR.js} +1 -1
  100. package/dist/cjs/{haptic-BD5qPgy8.js → haptic--4QteuuM.js} +1 -1
  101. package/dist/cjs/{helpers-BrETKUUX.js → helpers-Cqr69qxA.js} +3 -2
  102. package/dist/cjs/{index-bwclzjks.js → index-BQpSekmz.js} +2 -2
  103. package/dist/cjs/{index-BTc0Jnhx.js → index-BhWiDK25.js} +3 -3
  104. package/dist/cjs/{index-DMz2Eyis.js → index-CNaZ6SYM.js} +1 -1
  105. package/dist/cjs/{index-DNBYnlrc.js → index-DCfr5hz-.js} +3 -3
  106. package/dist/cjs/index.cjs.js +9 -9
  107. package/dist/cjs/{input-shims-CRmdShL9.js → input-shims-2AsXPZ5m.js} +9 -8
  108. package/dist/cjs/ion-accordion_2.cjs.entry.js +2 -2
  109. package/dist/cjs/ion-action-sheet.cjs.entry.js +8 -8
  110. package/dist/cjs/ion-alert.cjs.entry.js +19 -19
  111. package/dist/cjs/ion-app_8.cjs.entry.js +18 -18
  112. package/dist/cjs/ion-back-button.cjs.entry.js +2 -2
  113. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +2 -2
  114. package/dist/cjs/ion-button_2.cjs.entry.js +3 -3
  115. package/dist/cjs/ion-card_5.cjs.entry.js +3 -3
  116. package/dist/cjs/ion-checkbox.cjs.entry.js +2 -2
  117. package/dist/cjs/ion-col_3.cjs.entry.js +12 -14
  118. package/dist/cjs/ion-datetime-button.cjs.entry.js +2 -2
  119. package/dist/cjs/ion-datetime.cjs.entry.js +9 -8
  120. package/dist/cjs/ion-fab_3.cjs.entry.js +2 -2
  121. package/dist/cjs/ion-img.cjs.entry.js +2 -2
  122. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +3 -3
  123. package/dist/cjs/ion-input-otp.cjs.entry.js +128 -12
  124. package/dist/cjs/ion-input.cjs.entry.js +3 -3
  125. package/dist/cjs/ion-item-option_3.cjs.entry.js +9 -9
  126. package/dist/cjs/ion-item_8.cjs.entry.js +10 -10
  127. package/dist/cjs/ion-loading.cjs.entry.js +5 -5
  128. package/dist/cjs/ion-menu_3.cjs.entry.js +6 -6
  129. package/dist/cjs/ion-modal.cjs.entry.js +10 -10
  130. package/dist/cjs/ion-nav_2.cjs.entry.js +5 -5
  131. package/dist/cjs/ion-picker-column-option.cjs.entry.js +2 -2
  132. package/dist/cjs/ion-picker-column.cjs.entry.js +4 -4
  133. package/dist/cjs/ion-picker.cjs.entry.js +2 -2
  134. package/dist/cjs/ion-popover.cjs.entry.js +14 -28
  135. package/dist/cjs/ion-progress-bar.cjs.entry.js +5 -6
  136. package/dist/cjs/ion-radio_2.cjs.entry.js +2 -2
  137. package/dist/cjs/ion-range.cjs.entry.js +3 -3
  138. package/dist/cjs/ion-refresher_2.cjs.entry.js +6 -6
  139. package/dist/cjs/ion-reorder_2.cjs.entry.js +5 -5
  140. package/dist/cjs/ion-route_4.cjs.entry.js +124 -19
  141. package/dist/cjs/ion-searchbar.cjs.entry.js +2 -2
  142. package/dist/cjs/ion-segment-view.cjs.entry.js +1 -1
  143. package/dist/cjs/ion-segment_2.cjs.entry.js +2 -2
  144. package/dist/cjs/ion-select-modal.cjs.entry.js +4 -4
  145. package/dist/cjs/ion-select_3.cjs.entry.js +5 -5
  146. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +5 -5
  147. package/dist/cjs/ion-tab_2.cjs.entry.js +3 -3
  148. package/dist/cjs/ion-textarea.cjs.entry.js +3 -3
  149. package/dist/cjs/ion-toast.cjs.entry.js +5 -5
  150. package/dist/cjs/ion-toggle.cjs.entry.js +4 -4
  151. package/dist/cjs/ionic.cjs.js +1 -1
  152. package/dist/cjs/{ios.transition-CN092Fh6.js → ios.transition-Ca6XODo9.js} +15 -15
  153. package/dist/cjs/{keyboard-BMpscicm.js → keyboard-BlHp4a_c.js} +1 -1
  154. package/dist/cjs/{keyboard-4OBzkjOG.js → keyboard-c2_I35b-.js} +4 -4
  155. package/dist/cjs/{keyboard-controller-DZE97OtR.js → keyboard-controller-DHS0BgXp.js} +2 -2
  156. package/dist/cjs/loader.cjs.js +1 -1
  157. package/dist/cjs/{md.transition-B6961Ny9.js → md.transition-D8SfNYEp.js} +4 -4
  158. package/dist/cjs/{overlays-BbVQG3UT.js → overlays-CLld3axA.js} +2 -2
  159. package/dist/cjs/{slot-mutation-controller-CRa_cKOh.js → slot-mutation-controller-B2OfJEBH.js} +2 -2
  160. package/dist/cjs/{status-tap-hRIvObiJ.js → status-tap-CDA0Y3Ad.js} +3 -3
  161. package/dist/cjs/{swipe-back-C-aigThB.js → swipe-back-Idb4gqUk.js} +2 -2
  162. package/dist/collection/components/alert/alert.js +11 -11
  163. package/dist/collection/components/col/col.js +12 -14
  164. package/dist/collection/components/datetime/datetime.js +5 -4
  165. package/dist/collection/components/input-otp/input-otp.ios.css +30 -5
  166. package/dist/collection/components/input-otp/input-otp.js +191 -12
  167. package/dist/collection/components/input-otp/input-otp.md.css +30 -5
  168. package/dist/collection/components/item/item.js +4 -5
  169. package/dist/collection/components/item-options/item-options.js +2 -2
  170. package/dist/collection/components/item-sliding/item-sliding.js +4 -5
  171. package/dist/collection/components/label/label.js +3 -4
  172. package/dist/collection/components/popover/animations/ios.enter.js +3 -4
  173. package/dist/collection/components/popover/animations/md.enter.js +3 -4
  174. package/dist/collection/components/popover/popover.js +2 -17
  175. package/dist/collection/components/progress-bar/progress-bar.js +3 -5
  176. package/dist/collection/components/route/route.js +9 -1
  177. package/dist/collection/components/route-redirect/route-redirect.js +1 -1
  178. package/dist/collection/components/router/utils/constants.js +2 -0
  179. package/dist/collection/components/router/utils/matching.js +97 -14
  180. package/dist/collection/components/router/utils/path.js +17 -3
  181. package/dist/collection/components/title/title.js +3 -4
  182. package/dist/collection/utils/helpers.js +2 -1
  183. package/dist/collection/utils/input-shims/hacks/common.js +4 -4
  184. package/dist/collection/utils/rtl/dir.js +1 -1
  185. package/dist/collection/utils/transition/ios.transition.js +11 -12
  186. package/dist/docs.json +92 -3
  187. package/dist/esm/{animation-C_V9lXzL.js → animation-DmtJpz89.js} +1 -1
  188. package/dist/esm/{attribute-controller-ItNOXNp9.js → attribute-controller-DPMIcbef.js} +1 -1
  189. package/dist/esm/{button-active-rB-Ct9KZ.js → button-active-DVk40Sjl.js} +1 -1
  190. package/dist/esm/{capacitor-BY7l8HgR.js → capacitor-CHJaJ9aX.js} +1 -1
  191. package/dist/esm/{dir-Dj4J3LkD.js → dir-Dojwmvde.js} +1 -1
  192. package/dist/esm/{framework-delegate-CW5_kWfc.js → framework-delegate-CDjM1vRH.js} +1 -1
  193. package/dist/esm/{haptic-ES_sSPLn.js → haptic-WXfMCob9.js} +1 -1
  194. package/dist/esm/{helpers-p94IkmEA.js → helpers-BJqKF1pr.js} +3 -2
  195. package/dist/esm/{index-DLDbwWW7.js → index-Clv8QC5L.js} +2 -2
  196. package/dist/esm/{index-txcXIB3P.js → index-DIouXecD.js} +3 -3
  197. package/dist/esm/{index-CBkVO5D0.js → index-TkLga3ma.js} +1 -1
  198. package/dist/esm/{index-vgPixHgF.js → index-z9vdZN7I.js} +3 -3
  199. package/dist/esm/index.js +9 -9
  200. package/dist/esm/{input-shims-KNXj3DAv.js → input-shims-C1iYF5JK.js} +9 -8
  201. package/dist/esm/ion-accordion_2.entry.js +2 -2
  202. package/dist/esm/ion-action-sheet.entry.js +8 -8
  203. package/dist/esm/ion-alert.entry.js +19 -19
  204. package/dist/esm/ion-app_8.entry.js +18 -18
  205. package/dist/esm/ion-back-button.entry.js +2 -2
  206. package/dist/esm/ion-breadcrumb_2.entry.js +2 -2
  207. package/dist/esm/ion-button_2.entry.js +3 -3
  208. package/dist/esm/ion-card_5.entry.js +3 -3
  209. package/dist/esm/ion-checkbox.entry.js +2 -2
  210. package/dist/esm/ion-col_3.entry.js +13 -15
  211. package/dist/esm/ion-datetime-button.entry.js +2 -2
  212. package/dist/esm/ion-datetime.entry.js +9 -8
  213. package/dist/esm/ion-fab_3.entry.js +2 -2
  214. package/dist/esm/ion-img.entry.js +2 -2
  215. package/dist/esm/ion-infinite-scroll_2.entry.js +3 -3
  216. package/dist/esm/ion-input-otp.entry.js +129 -13
  217. package/dist/esm/ion-input.entry.js +3 -3
  218. package/dist/esm/ion-item-option_3.entry.js +9 -9
  219. package/dist/esm/ion-item_8.entry.js +10 -10
  220. package/dist/esm/ion-loading.entry.js +5 -5
  221. package/dist/esm/ion-menu_3.entry.js +6 -6
  222. package/dist/esm/ion-modal.entry.js +10 -10
  223. package/dist/esm/ion-nav_2.entry.js +5 -5
  224. package/dist/esm/ion-picker-column-option.entry.js +2 -2
  225. package/dist/esm/ion-picker-column.entry.js +4 -4
  226. package/dist/esm/ion-picker.entry.js +2 -2
  227. package/dist/esm/ion-popover.entry.js +14 -28
  228. package/dist/esm/ion-progress-bar.entry.js +6 -7
  229. package/dist/esm/ion-radio_2.entry.js +2 -2
  230. package/dist/esm/ion-range.entry.js +3 -3
  231. package/dist/esm/ion-refresher_2.entry.js +6 -6
  232. package/dist/esm/ion-reorder_2.entry.js +5 -5
  233. package/dist/esm/ion-route_4.entry.js +124 -19
  234. package/dist/esm/ion-searchbar.entry.js +2 -2
  235. package/dist/esm/ion-segment-view.entry.js +1 -1
  236. package/dist/esm/ion-segment_2.entry.js +2 -2
  237. package/dist/esm/ion-select-modal.entry.js +4 -4
  238. package/dist/esm/ion-select_3.entry.js +5 -5
  239. package/dist/esm/ion-tab-bar_2.entry.js +5 -5
  240. package/dist/esm/ion-tab_2.entry.js +3 -3
  241. package/dist/esm/ion-textarea.entry.js +3 -3
  242. package/dist/esm/ion-toast.entry.js +5 -5
  243. package/dist/esm/ion-toggle.entry.js +4 -4
  244. package/dist/esm/ionic.js +1 -1
  245. package/dist/esm/{ios.transition-CW92wRDL.js → ios.transition-BkUGiDUz.js} +15 -15
  246. package/dist/esm/{keyboard-BumguZrM.js → keyboard-B4Y-Gph8.js} +4 -4
  247. package/dist/esm/{keyboard-CutS8BPd.js → keyboard-Cmqp5iZD.js} +1 -1
  248. package/dist/esm/{keyboard-controller-DqohyEsZ.js → keyboard-controller-B2NoF7bV.js} +2 -2
  249. package/dist/esm/loader.js +1 -1
  250. package/dist/esm/{md.transition-yhfkYX1P.js → md.transition-B6hlrWjR.js} +4 -4
  251. package/dist/esm/{overlays-BBgMM61s.js → overlays-DmDY-El7.js} +2 -2
  252. package/dist/esm/{slot-mutation-controller-uKdPbY9K.js → slot-mutation-controller-Btpr9-9O.js} +2 -2
  253. package/dist/esm/{status-tap-BskkGI4e.js → status-tap-VGRBYwiC.js} +3 -3
  254. package/dist/esm/{swipe-back-BZdyM2Q-.js → swipe-back-DV3UpWzz.js} +2 -2
  255. package/dist/html.html-data.json +10 -2
  256. package/dist/ionic/index.esm.js +1 -1
  257. package/dist/ionic/ionic.esm.js +1 -1
  258. package/dist/ionic/{p-013b9aba.entry.js → p-01b7e3f2.entry.js} +1 -1
  259. package/dist/ionic/{p-9515f840.entry.js → p-095da8ec.entry.js} +1 -1
  260. package/dist/ionic/{p-ec08a7e6.entry.js → p-0b09c60e.entry.js} +1 -1
  261. package/dist/ionic/{p-5b47b8d5.entry.js → p-0c32c626.entry.js} +1 -1
  262. package/dist/ionic/p-0f97175e.entry.js +4 -0
  263. package/dist/ionic/{p-b0faaae2.entry.js → p-107a81a6.entry.js} +1 -1
  264. package/dist/ionic/{p-27960f65.entry.js → p-293cb1d5.entry.js} +1 -1
  265. package/dist/ionic/{p-1ffa5577.entry.js → p-362dcd86.entry.js} +1 -1
  266. package/dist/ionic/{p-0562139b.entry.js → p-4bd80334.entry.js} +1 -1
  267. package/dist/ionic/{p-16de8fd9.entry.js → p-4f25b926.entry.js} +1 -1
  268. package/dist/ionic/{p-0f1613f2.entry.js → p-52a16f94.entry.js} +1 -1
  269. package/dist/ionic/{p-436d4ac8.entry.js → p-5bb24bce.entry.js} +1 -1
  270. package/dist/ionic/{p-9d7e5a0b.entry.js → p-60780b88.entry.js} +1 -1
  271. package/dist/ionic/{p-1f342c2d.entry.js → p-62c87f3d.entry.js} +1 -1
  272. package/dist/ionic/{p-7868eb92.entry.js → p-64ac3864.entry.js} +1 -1
  273. package/dist/ionic/{p-f37e6ed2.entry.js → p-67f004eb.entry.js} +1 -1
  274. package/dist/ionic/p-6c7b5930.entry.js +4 -0
  275. package/dist/ionic/p-705759fd.entry.js +4 -0
  276. package/dist/ionic/{p-a45caa30.entry.js → p-7db20410.entry.js} +1 -1
  277. package/dist/ionic/{p-694f3e78.entry.js → p-7e9c2a97.entry.js} +1 -1
  278. package/dist/ionic/p-7l6ENjIV.js +4 -0
  279. package/dist/ionic/{p-77540bcb.entry.js → p-82abf431.entry.js} +1 -1
  280. package/dist/ionic/p-8d2ccf0c.entry.js +4 -0
  281. package/dist/ionic/{p-87fb6d59.entry.js → p-8d651adb.entry.js} +1 -1
  282. package/dist/ionic/{p-51af4728.entry.js → p-8db08782.entry.js} +1 -1
  283. package/dist/ionic/{p-af15fc5d.entry.js → p-91f3cd8b.entry.js} +1 -1
  284. package/dist/ionic/{p-c7ea2647.entry.js → p-930c3538.entry.js} +1 -1
  285. package/dist/ionic/p-94f1f7df.entry.js +4 -0
  286. package/dist/ionic/p-99c518de.entry.js +4 -0
  287. package/dist/ionic/{p-014c3633.entry.js → p-9ffccbf1.entry.js} +1 -1
  288. package/dist/ionic/p-BNXIurCt.js +4 -0
  289. package/dist/ionic/p-BOLqP2-V.js +4 -0
  290. package/dist/ionic/{p-5a3UxQAh.js → p-BY4FwwBp.js} +1 -1
  291. package/dist/ionic/p-BZTgGzGK.js +4 -0
  292. package/dist/ionic/p-BdHBcCZF.js +4 -0
  293. package/dist/ionic/{p-8B39TMv-.js → p-BpED_ep_.js} +1 -1
  294. package/dist/ionic/p-BuLlVedw.js +4 -0
  295. package/dist/ionic/p-Bx5x5GJV.js +4 -0
  296. package/dist/ionic/{p-C4SpVvhx.js → p-C1WYZOZj.js} +1 -1
  297. package/dist/ionic/p-C2LaBx3E.js +4 -0
  298. package/dist/ionic/{p-BWKtcudz.js → p-CXs4J83x.js} +1 -1
  299. package/dist/ionic/p-CgcGX08t.js +4 -0
  300. package/dist/ionic/p-CngfKMRU.js +4 -0
  301. package/dist/ionic/p-Co7eql8D.js +4 -0
  302. package/dist/ionic/{p-DArnNWiu.js → p-D13gXhdC.js} +1 -1
  303. package/dist/ionic/p-D926OmIX.js +4 -0
  304. package/dist/ionic/{p-BBZQUbCq.js → p-DPNVo1nr.js} +1 -1
  305. package/dist/ionic/{p-B0afqOUt.js → p-DXXGkPA8.js} +1 -1
  306. package/dist/ionic/{p-CJmyfI8x.js → p-Dk4Mdaru.js} +1 -1
  307. package/dist/ionic/{p-Dj4J3LkD.js → p-Dojwmvde.js} +1 -1
  308. package/dist/ionic/p-a4389f13.entry.js +4 -0
  309. package/dist/ionic/p-af8fb360.entry.js +4 -0
  310. package/dist/ionic/{p-f6a1ab48.entry.js → p-b9ed3a52.entry.js} +1 -1
  311. package/dist/ionic/p-bfdbe24b.entry.js +4 -0
  312. package/dist/ionic/{p-77e7b612.entry.js → p-c250b6b0.entry.js} +1 -1
  313. package/dist/ionic/p-c83dbc12.entry.js +4 -0
  314. package/dist/ionic/{p-1bb1be7e.entry.js → p-d0e374f8.entry.js} +1 -1
  315. package/dist/ionic/{p-af4b4719.entry.js → p-d2406889.entry.js} +1 -1
  316. package/dist/ionic/{p-cbc73380.entry.js → p-d72accc4.entry.js} +1 -1
  317. package/dist/ionic/{p-1252621e.entry.js → p-e7ab4def.entry.js} +1 -1
  318. package/dist/ionic/{p-5dcddfd5.entry.js → p-e8e69c21.entry.js} +1 -1
  319. package/dist/ionic/{p-96d040b0.entry.js → p-eb989dc9.entry.js} +1 -1
  320. package/dist/ionic/{p-59e4b521.entry.js → p-ec259ac5.entry.js} +1 -1
  321. package/dist/ionic/p-f2116a54.entry.js +4 -0
  322. package/dist/ionic/{p-B2JD8_LP.js → p-nCAPr1Ah.js} +1 -1
  323. package/dist/types/components/alert/alert.d.ts +0 -4
  324. package/dist/types/components/col/col.d.ts +0 -1
  325. package/dist/types/components/input-otp/input-otp-interface.d.ts +1 -0
  326. package/dist/types/components/input-otp/input-otp.d.ts +40 -2
  327. package/dist/types/components/popover/popover.d.ts +0 -1
  328. package/dist/types/components/progress-bar/progress-bar.d.ts +0 -1
  329. package/dist/types/components/route/route.d.ts +8 -0
  330. package/dist/types/components/route-redirect/route-redirect.d.ts +3 -1
  331. package/dist/types/components/router/utils/constants.d.ts +2 -0
  332. package/dist/types/components/router/utils/matching.d.ts +10 -0
  333. package/dist/types/components/router/utils/path.d.ts +5 -1
  334. package/dist/types/components.d.ts +32 -6
  335. package/dist/types/utils/helpers.d.ts +3 -2
  336. package/dist/types/utils/rtl/dir.d.ts +1 -1
  337. package/hydrate/index.js +301 -109
  338. package/hydrate/index.mjs +301 -109
  339. package/package.json +1 -1
  340. package/components/p-B3dSuofL.js +0 -4
  341. package/components/p-BWbz71uB.js +0 -4
  342. package/components/p-C0TdbIVo.js +0 -4
  343. package/components/p-C6Y0cCH_.js +0 -4
  344. package/components/p-CCFj0kgH.js +0 -4
  345. package/components/p-CRb2xRCz.js +0 -4
  346. package/components/p-DLEJ61lJ.js +0 -4
  347. package/components/p-DRm4t-by.js +0 -4
  348. package/components/p-D_U0pDe5.js +0 -4
  349. package/components/p-DaW9OZ6S.js +0 -4
  350. package/components/p-DaojW_d_.js +0 -4
  351. package/components/p-Ds5vN3iu.js +0 -4
  352. package/components/p-RhI78AKb.js +0 -4
  353. package/components/p-z-EWo6r-.js +0 -4
  354. package/dist/ionic/p-129f7b95.entry.js +0 -4
  355. package/dist/ionic/p-210f906e.entry.js +0 -4
  356. package/dist/ionic/p-3c6fc2e8.entry.js +0 -4
  357. package/dist/ionic/p-43729675.entry.js +0 -4
  358. package/dist/ionic/p-4468e439.entry.js +0 -4
  359. package/dist/ionic/p-800ce1e0.entry.js +0 -4
  360. package/dist/ionic/p-84470714.entry.js +0 -4
  361. package/dist/ionic/p-8af85fa8.entry.js +0 -4
  362. package/dist/ionic/p-8dQB1sG_.js +0 -4
  363. package/dist/ionic/p-B2y1T0dN.js +0 -4
  364. package/dist/ionic/p-BHBb21Hp.js +0 -4
  365. package/dist/ionic/p-BgkRGRO3.js +0 -4
  366. package/dist/ionic/p-CNdt1FPc.js +0 -4
  367. package/dist/ionic/p-Cf6KtUnA.js +0 -4
  368. package/dist/ionic/p-CfccUand.js +0 -4
  369. package/dist/ionic/p-DBFcFCH5.js +0 -4
  370. package/dist/ionic/p-DCmOKz8e.js +0 -4
  371. package/dist/ionic/p-DFPZa_No.js +0 -4
  372. package/dist/ionic/p-DYKDWM2f.js +0 -4
  373. package/dist/ionic/p-DzQk7Lu8.js +0 -4
  374. package/dist/ionic/p-c56c23b6.entry.js +0 -4
  375. package/dist/ionic/p-c8c77f7b.entry.js +0 -4
  376. package/dist/ionic/p-d58e9da3.entry.js +0 -4
@@ -4,12 +4,12 @@
4
4
  'use strict';
5
5
 
6
6
  var index = require('./index-BiQyIvoc.js');
7
- var helpers = require('./helpers-BrETKUUX.js');
8
- var haptic = require('./haptic-BD5qPgy8.js');
7
+ var helpers = require('./helpers-Cqr69qxA.js');
8
+ var haptic = require('./haptic--4QteuuM.js');
9
9
  var ionicGlobal = require('./ionic-global-48ceLiJ6.js');
10
10
  var theme = require('./theme-Bw0rpaNN.js');
11
- require('./dir-Bma_9Lqh.js');
12
- require('./capacitor-BTjfXFlK.js');
11
+ require('./dir-zwDPRE5K.js');
12
+ require('./capacitor-C6Pp4Z7A.js');
13
13
 
14
14
  const pickerColumnCss = () => `:host{display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;max-width:100%;height:200px;font-size:22px;text-align:center}.assistive-focusable{left:0;right:0;top:0;bottom:0;position:absolute;z-index:1;pointer-events:none}.assistive-focusable:focus{outline:none}.picker-opts{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0px;padding-bottom:0px;min-width:26px;max-height:200px;outline:none;text-align:inherit;-webkit-scroll-snap-type:y mandatory;-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory;overflow-x:hidden;overflow-y:scroll;scrollbar-width:none}.picker-item-empty{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;display:block;width:100%;height:34px;border:0px;outline:none;background:transparent;color:inherit;font-family:var(--ion-font-family, inherit);font-size:inherit;line-height:34px;text-align:inherit;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.picker-opts::-webkit-scrollbar{display:none}::slotted(ion-picker-column-option){display:block;scroll-snap-align:center}.picker-item-empty,:host(:not([disabled])) ::slotted(ion-picker-column-option.option-disabled){scroll-snap-align:none}::slotted([slot=prefix]),::slotted([slot=suffix]){max-width:200px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::slotted([slot=prefix]){-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0;padding-bottom:0;-ms-flex-pack:end;justify-content:end}::slotted([slot=suffix]){-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0;padding-bottom:0;-ms-flex-pack:start;justify-content:start}:host(.picker-column-disabled) .picker-opts{overflow-y:hidden}:host(.picker-column-disabled) ::slotted(ion-picker-column-option){cursor:default;opacity:0.4;pointer-events:none}@media (any-hover: hover){:host(:focus) .picker-opts{outline:none;background:rgba(var(--ion-color-primary-rgb, 0, 84, 233), 0.2)}:host(.ion-color:focus) .picker-opts{background:rgba(var(--ion-color-base-rgb), 0.2)}}`;
15
15
 
@@ -4,8 +4,8 @@
4
4
  'use strict';
5
5
 
6
6
  var index = require('./index-BiQyIvoc.js');
7
- var helpers = require('./helpers-BrETKUUX.js');
8
- require('./dir-Bma_9Lqh.js');
7
+ var helpers = require('./helpers-Cqr69qxA.js');
8
+ require('./dir-zwDPRE5K.js');
9
9
 
10
10
  const pickerIosCss = () => `:host{display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:200px;direction:ltr;z-index:0}:host .picker-before,:host .picker-after{position:absolute;width:100%;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:1;pointer-events:none}:host .picker-before{top:0;height:83px}:host .picker-before{inset-inline-start:0}:host .picker-after{top:116px;height:84px}:host .picker-after{inset-inline-start:0}:host .picker-highlight{border-radius:var(--highlight-border-radius, 8px);left:0;right:0;top:50%;bottom:0;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0;position:absolute;width:calc(100% - 16px);height:34px;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:var(--highlight-background);z-index:-1}:host input{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;margin:0;padding:0;border:0;outline:0;clip:rect(0 0 0 0);opacity:0;overflow:hidden;-webkit-appearance:none;-moz-appearance:none}:host ::slotted(ion-picker-column:first-of-type){text-align:start}:host ::slotted(ion-picker-column:last-of-type){text-align:end}:host ::slotted(ion-picker-column:only-child){text-align:center}:host .picker-before{background:-webkit-gradient(linear, left top, left bottom, color-stop(20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), to(rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8)));background:linear-gradient(to bottom, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8) 100%)}:host .picker-after{background:-webkit-gradient(linear, left bottom, left top, color-stop(20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), to(rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8)));background:linear-gradient(to top, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8) 100%)}:host .picker-highlight{background:var(--highlight-background, var(--ion-color-step-150, var(--ion-background-color-step-150, #eeeeef)))}`;
11
11
 
@@ -4,16 +4,16 @@
4
4
  'use strict';
5
5
 
6
6
  var index = require('./index-BiQyIvoc.js');
7
- var hardwareBackButton = require('./overlays-BbVQG3UT.js');
8
- var frameworkDelegate = require('./framework-delegate-hNMKEiQC.js');
9
- var helpers = require('./helpers-BrETKUUX.js');
7
+ var hardwareBackButton = require('./overlays-CLld3axA.js');
8
+ var frameworkDelegate = require('./framework-delegate-JbKIVMzR.js');
9
+ var helpers = require('./helpers-Cqr69qxA.js');
10
10
  var lockController = require('./lock-controller-aDB9wrEf.js');
11
11
  var ionicGlobal = require('./ionic-global-48ceLiJ6.js');
12
- var dir = require('./dir-Bma_9Lqh.js');
13
12
  var theme = require('./theme-Bw0rpaNN.js');
14
- var index$1 = require('./index-DNBYnlrc.js');
15
- var animation = require('./animation-UiXhXV49.js');
13
+ var index$1 = require('./index-DCfr5hz-.js');
14
+ var animation = require('./animation-DcgLg_PI.js');
16
15
  require('./gesture-controller-CeJslptU.js');
16
+ require('./dir-zwDPRE5K.js');
17
17
 
18
18
  /**
19
19
  * Shared per-frame cache for safe-area insets. Avoids creating a temporary
@@ -898,7 +898,7 @@ const POPOVER_IOS_MIN_EDGE_MARGIN = 25;
898
898
  const iosEnterAnimation = (baseEl, opts) => {
899
899
  const { event: ev, size, trigger, reference, side, align } = opts;
900
900
  const doc = baseEl.ownerDocument;
901
- const rtl = dir.isRTL(baseEl);
901
+ const isRTL = doc.dir === 'rtl';
902
902
  const root = helpers.getElementRoot(baseEl);
903
903
  const contentEl = root.querySelector('.popover-content');
904
904
  const arrowEl = root.querySelector('.popover-arrow');
@@ -924,10 +924,10 @@ const iosEnterAnimation = (baseEl, opts) => {
924
924
  const defaultPosition = {
925
925
  top: bodyHeight / 2 - contentHeight / 2,
926
926
  left: bodyWidth / 2 - contentWidth / 2,
927
- originX: rtl ? 'right' : 'left',
927
+ originX: isRTL ? 'right' : 'left',
928
928
  originY: 'top',
929
929
  };
930
- const results = getPopoverPosition(rtl, contentWidth, contentHeight, arrowWidth, arrowHeight, reference, side, align, defaultPosition, trigger, ev, zoom);
930
+ const results = getPopoverPosition(isRTL, contentWidth, contentHeight, arrowWidth, arrowHeight, reference, side, align, defaultPosition, trigger, ev, zoom);
931
931
  const padding = size === 'cover' ? 0 : POPOVER_IOS_BODY_PADDING;
932
932
  const rawSafeArea = getSafeAreaInsets(doc);
933
933
  const safeArea = size === 'cover'
@@ -1048,7 +1048,7 @@ const POPOVER_MD_BODY_PADDING = 12;
1048
1048
  const mdEnterAnimation = (baseEl, opts) => {
1049
1049
  const { event: ev, size, trigger, reference, side, align } = opts;
1050
1050
  const doc = baseEl.ownerDocument;
1051
- const rtl = dir.isRTL(baseEl);
1051
+ const isRTL = doc.dir === 'rtl';
1052
1052
  const root = helpers.getElementRoot(baseEl);
1053
1053
  const contentEl = root.querySelector('.popover-content');
1054
1054
  /**
@@ -1072,10 +1072,10 @@ const mdEnterAnimation = (baseEl, opts) => {
1072
1072
  const defaultPosition = {
1073
1073
  top: bodyHeight / 2 - contentHeight / 2,
1074
1074
  left: bodyWidth / 2 - contentWidth / 2,
1075
- originX: rtl ? 'right' : 'left',
1075
+ originX: isRTL ? 'right' : 'left',
1076
1076
  originY: 'top',
1077
1077
  };
1078
- const results = getPopoverPosition(rtl, contentWidth, contentHeight, 0, 0, reference, side, align, defaultPosition, trigger, ev, zoom);
1078
+ const results = getPopoverPosition(isRTL, contentWidth, contentHeight, 0, 0, reference, side, align, defaultPosition, trigger, ev, zoom);
1079
1079
  const padding = size === 'cover' ? 0 : POPOVER_MD_BODY_PADDING;
1080
1080
  // MD mode now applies safe-area insets (previously passed 0, ignoring all safe areas).
1081
1081
  // This is needed for Android edge-to-edge (API 36+) where system bars overlap content.
@@ -1185,7 +1185,6 @@ const Popover = class {
1185
1185
  this.lockController = lockController.createLockController();
1186
1186
  this.inline = false;
1187
1187
  this.focusDescendantOnPresent = false;
1188
- this.dirSetOnPresent = false;
1189
1188
  this.presented = false;
1190
1189
  /** @internal */
1191
1190
  this.hasController = false;
@@ -1486,15 +1485,6 @@ const Popover = class {
1486
1485
  }
1487
1486
  const { el } = this;
1488
1487
  const { inline, delegate } = this.getDelegate(true);
1489
- /**
1490
- * When presented, ion-popover is hoisted from its place in the element
1491
- * hierarchy. Copy the current direction onto this element so that child
1492
- * elements can match.
1493
- */
1494
- if (!el.hasAttribute('dir')) {
1495
- el.setAttribute('dir', dir.isRTL(el) ? 'rtl' : 'ltr');
1496
- this.dirSetOnPresent = true;
1497
- }
1498
1488
  /**
1499
1489
  * Emit ionMount so JS Frameworks have an opportunity
1500
1490
  * to add the child component to the DOM. The child
@@ -1615,10 +1605,6 @@ const Popover = class {
1615
1605
  */
1616
1606
  const { delegate } = this.getDelegate();
1617
1607
  await frameworkDelegate.detachComponent(delegate, this.usersElement);
1618
- if (this.dirSetOnPresent) {
1619
- this.el.removeAttribute('dir');
1620
- this.dirSetOnPresent = false;
1621
- }
1622
1608
  }
1623
1609
  unlock();
1624
1610
  return shouldDismiss;
@@ -1646,7 +1632,7 @@ const Popover = class {
1646
1632
  const { onLifecycle, parentPopover, dismissOnSelect, side, arrow, htmlAttributes, focusTrap } = this;
1647
1633
  const desktop = ionicGlobal.isPlatform('desktop');
1648
1634
  const enableArrow = arrow && !parentPopover;
1649
- return (index.h(index.Host, { key: '083f06f04d2c2657e510b471fba81cc459e0e878', "aria-modal": "true", "no-router": true, tabindex: "-1", ...htmlAttributes, style: {
1635
+ return (index.h(index.Host, { key: 'b5e9c788f58397203976d5f8302dfb89e916efe1', "aria-modal": "true", "no-router": true, tabindex: "-1", ...htmlAttributes, style: {
1650
1636
  zIndex: `${20000 + this.overlayIndex}`,
1651
1637
  }, class: {
1652
1638
  ...theme.getClassMap(this.cssClass),
@@ -1657,7 +1643,7 @@ const Popover = class {
1657
1643
  [`popover-side-${side}`]: true,
1658
1644
  [hardwareBackButton.FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false,
1659
1645
  'popover-nested': !!parentPopover,
1660
- }, onIonPopoverDidPresent: onLifecycle, onIonPopoverWillPresent: onLifecycle, onIonPopoverWillDismiss: onLifecycle, onIonPopoverDidDismiss: onLifecycle, onIonBackdropTap: this.onBackdropTap }, !parentPopover && index.h("ion-backdrop", { key: 'afd9bfa3edfde061603acfc251eb8ac54c85ec6f', tappable: this.backdropDismiss, visible: this.showBackdrop, part: "backdrop" }), index.h("div", { key: '04314c9b510342f152027a6d62394b74d2888b88', class: "popover-wrapper ion-overlay-wrapper", onClick: dismissOnSelect ? () => this.dismiss() : undefined }, enableArrow && index.h("div", { key: 'e1bc715a4ca37012d109b512e2288c932485bf45', class: "popover-arrow", part: "arrow" }), index.h("div", { key: '5ab527ca65b483865954005239618de7daf2c621', class: "popover-content", part: "content" }, index.h("slot", { key: '4d3abb569347f6156d426f98b897e79ffd6b53bc' })))));
1646
+ }, onIonPopoverDidPresent: onLifecycle, onIonPopoverWillPresent: onLifecycle, onIonPopoverWillDismiss: onLifecycle, onIonPopoverDidDismiss: onLifecycle, onIonBackdropTap: this.onBackdropTap }, !parentPopover && index.h("ion-backdrop", { key: 'f3977833c5b2c0087c286ee54363b478d69eb115', tappable: this.backdropDismiss, visible: this.showBackdrop, part: "backdrop" }), index.h("div", { key: '1059893d6fd2932ca8adcdf8d45a5d66f4794727', class: "popover-wrapper ion-overlay-wrapper", onClick: dismissOnSelect ? () => this.dismiss() : undefined }, enableArrow && index.h("div", { key: '24d7988bdd95882ad77fcaa7112aeda55878bee4', class: "popover-arrow", part: "arrow" }), index.h("div", { key: '4d6992e0a9d629f11763045f9199f9a77fa521ab', class: "popover-content", part: "content" }, index.h("slot", { key: 'b29747419620a01a6c34e9e846cd529b0b210145' })))));
1661
1647
  }
1662
1648
  get el() { return index.getElement(this); }
1663
1649
  static get watchers() { return {
@@ -4,10 +4,10 @@
4
4
  'use strict';
5
5
 
6
6
  var index = require('./index-BiQyIvoc.js');
7
- var helpers = require('./helpers-BrETKUUX.js');
8
- var dir = require('./dir-Bma_9Lqh.js');
7
+ var helpers = require('./helpers-Cqr69qxA.js');
9
8
  var theme = require('./theme-Bw0rpaNN.js');
10
9
  var ionicGlobal = require('./ionic-global-48ceLiJ6.js');
10
+ require('./dir-zwDPRE5K.js');
11
11
 
12
12
  const progressBarIosCss = () => `:host{--background:rgba(var(--ion-color-primary-rgb, 0, 84, 233), 0.3);--progress-background:var(--ion-color-primary, #0054e9);display:block;position:relative;width:100%;contain:strict;direction:ltr;overflow:hidden}.progress,.progress-indeterminate,.indeterminate-bar-primary,.indeterminate-bar-secondary,.progress-buffer-bar{left:0;right:0;top:0;bottom:0;position:absolute;width:100%;height:100%}.buffer-circles-container,.buffer-circles{left:0;right:0;top:0;bottom:0;position:absolute}.buffer-circles{right:-10px;left:-10px;}.progress,.progress-buffer-bar,.buffer-circles-container{-webkit-transform-origin:left top;transform-origin:left top;-webkit-transition:-webkit-transform 150ms linear;transition:-webkit-transform 150ms linear;transition:transform 150ms linear;transition:transform 150ms linear, -webkit-transform 150ms linear}.progress,.progress-indeterminate{background:var(--progress-background);z-index:2}.progress-buffer-bar{background:var(--background);z-index:1}.buffer-circles-container{overflow:hidden}.indeterminate-bar-primary{top:0;right:0;bottom:0;left:-145.166611%;-webkit-animation:primary-indeterminate-translate 2s infinite linear;animation:primary-indeterminate-translate 2s infinite linear}.indeterminate-bar-primary .progress-indeterminate{-webkit-animation:primary-indeterminate-scale 2s infinite linear;animation:primary-indeterminate-scale 2s infinite linear;-webkit-animation-play-state:inherit;animation-play-state:inherit}.indeterminate-bar-secondary{top:0;right:0;bottom:0;left:-54.888891%;-webkit-animation:secondary-indeterminate-translate 2s infinite linear;animation:secondary-indeterminate-translate 2s infinite linear}.indeterminate-bar-secondary .progress-indeterminate{-webkit-animation:secondary-indeterminate-scale 2s infinite linear;animation:secondary-indeterminate-scale 2s infinite linear;-webkit-animation-play-state:inherit;animation-play-state:inherit}.buffer-circles{background-image:radial-gradient(ellipse at center, var(--background) 0%, var(--background) 30%, transparent 30%);background-repeat:repeat-x;background-position:5px center;background-size:10px 10px;z-index:0;-webkit-animation:buffering 450ms infinite linear;animation:buffering 450ms infinite linear}:host(.progress-bar-reversed){-webkit-transform:scaleX(-1);transform:scaleX(-1)}:host(.progress-paused) .indeterminate-bar-secondary,:host(.progress-paused) .indeterminate-bar-primary,:host(.progress-paused) .buffer-circles{-webkit-animation-play-state:paused;animation-play-state:paused}:host(.ion-color) .buffer-circles{background-image:radial-gradient(ellipse at center, rgba(var(--ion-color-base-rgb), 0.3) 0%, rgba(var(--ion-color-base-rgb), 0.3) 30%, transparent 30%)}:host(.ion-color) .progress,:host(.ion-color) .progress-indeterminate{background:var(--ion-color-base)}@-webkit-keyframes primary-indeterminate-translate{0%{-webkit-transform:translateX(0);transform:translateX(0)}20%{-webkit-animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);-webkit-transform:translateX(0);transform:translateX(0)}59.15%{-webkit-animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);-webkit-transform:translateX(83.67142%);transform:translateX(83.67142%)}100%{-webkit-transform:translateX(200.611057%);transform:translateX(200.611057%)}}@keyframes primary-indeterminate-translate{0%{-webkit-transform:translateX(0);transform:translateX(0)}20%{-webkit-animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);-webkit-transform:translateX(0);transform:translateX(0)}59.15%{-webkit-animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);-webkit-transform:translateX(83.67142%);transform:translateX(83.67142%)}100%{-webkit-transform:translateX(200.611057%);transform:translateX(200.611057%)}}@-webkit-keyframes primary-indeterminate-scale{0%{-webkit-transform:scaleX(0.08);transform:scaleX(0.08)}36.65%{-webkit-animation-timing-function:cubic-bezier(0.334731, 0.12482, 0.785844, 1);animation-timing-function:cubic-bezier(0.334731, 0.12482, 0.785844, 1);-webkit-transform:scaleX(0.08);transform:scaleX(0.08)}69.15%{-webkit-animation-timing-function:cubic-bezier(0.06, 0.11, 0.6, 1);animation-timing-function:cubic-bezier(0.06, 0.11, 0.6, 1);-webkit-transform:scaleX(0.661479);transform:scaleX(0.661479)}100%{-webkit-transform:scaleX(0.08);transform:scaleX(0.08)}}@keyframes primary-indeterminate-scale{0%{-webkit-transform:scaleX(0.08);transform:scaleX(0.08)}36.65%{-webkit-animation-timing-function:cubic-bezier(0.334731, 0.12482, 0.785844, 1);animation-timing-function:cubic-bezier(0.334731, 0.12482, 0.785844, 1);-webkit-transform:scaleX(0.08);transform:scaleX(0.08)}69.15%{-webkit-animation-timing-function:cubic-bezier(0.06, 0.11, 0.6, 1);animation-timing-function:cubic-bezier(0.06, 0.11, 0.6, 1);-webkit-transform:scaleX(0.661479);transform:scaleX(0.661479)}100%{-webkit-transform:scaleX(0.08);transform:scaleX(0.08)}}@-webkit-keyframes secondary-indeterminate-translate{0%{-webkit-animation-timing-function:cubic-bezier(0.15, 0, 0.515058, 0.409685);animation-timing-function:cubic-bezier(0.15, 0, 0.515058, 0.409685);-webkit-transform:translateX(0);transform:translateX(0)}25%{-webkit-animation-timing-function:cubic-bezier(0.31033, 0.284058, 0.8, 0.733712);animation-timing-function:cubic-bezier(0.31033, 0.284058, 0.8, 0.733712);-webkit-transform:translateX(37.651913%);transform:translateX(37.651913%)}48.35%{-webkit-animation-timing-function:cubic-bezier(0.4, 0.627035, 0.6, 0.902026);animation-timing-function:cubic-bezier(0.4, 0.627035, 0.6, 0.902026);-webkit-transform:translateX(84.386165%);transform:translateX(84.386165%)}100%{-webkit-transform:translateX(160.277782%);transform:translateX(160.277782%)}}@keyframes secondary-indeterminate-translate{0%{-webkit-animation-timing-function:cubic-bezier(0.15, 0, 0.515058, 0.409685);animation-timing-function:cubic-bezier(0.15, 0, 0.515058, 0.409685);-webkit-transform:translateX(0);transform:translateX(0)}25%{-webkit-animation-timing-function:cubic-bezier(0.31033, 0.284058, 0.8, 0.733712);animation-timing-function:cubic-bezier(0.31033, 0.284058, 0.8, 0.733712);-webkit-transform:translateX(37.651913%);transform:translateX(37.651913%)}48.35%{-webkit-animation-timing-function:cubic-bezier(0.4, 0.627035, 0.6, 0.902026);animation-timing-function:cubic-bezier(0.4, 0.627035, 0.6, 0.902026);-webkit-transform:translateX(84.386165%);transform:translateX(84.386165%)}100%{-webkit-transform:translateX(160.277782%);transform:translateX(160.277782%)}}@-webkit-keyframes secondary-indeterminate-scale{0%{-webkit-animation-timing-function:cubic-bezier(0.205028, 0.057051, 0.57661, 0.453971);animation-timing-function:cubic-bezier(0.205028, 0.057051, 0.57661, 0.453971);-webkit-transform:scaleX(0.08);transform:scaleX(0.08)}19.15%{-webkit-animation-timing-function:cubic-bezier(0.152313, 0.196432, 0.648374, 1.004315);animation-timing-function:cubic-bezier(0.152313, 0.196432, 0.648374, 1.004315);-webkit-transform:scaleX(0.457104);transform:scaleX(0.457104)}44.15%{-webkit-animation-timing-function:cubic-bezier(0.257759, -0.003163, 0.211762, 1.38179);animation-timing-function:cubic-bezier(0.257759, -0.003163, 0.211762, 1.38179);-webkit-transform:scaleX(0.72796);transform:scaleX(0.72796)}100%{-webkit-transform:scaleX(0.08);transform:scaleX(0.08)}}@keyframes secondary-indeterminate-scale{0%{-webkit-animation-timing-function:cubic-bezier(0.205028, 0.057051, 0.57661, 0.453971);animation-timing-function:cubic-bezier(0.205028, 0.057051, 0.57661, 0.453971);-webkit-transform:scaleX(0.08);transform:scaleX(0.08)}19.15%{-webkit-animation-timing-function:cubic-bezier(0.152313, 0.196432, 0.648374, 1.004315);animation-timing-function:cubic-bezier(0.152313, 0.196432, 0.648374, 1.004315);-webkit-transform:scaleX(0.457104);transform:scaleX(0.457104)}44.15%{-webkit-animation-timing-function:cubic-bezier(0.257759, -0.003163, 0.211762, 1.38179);animation-timing-function:cubic-bezier(0.257759, -0.003163, 0.211762, 1.38179);-webkit-transform:scaleX(0.72796);transform:scaleX(0.72796)}100%{-webkit-transform:scaleX(0.08);transform:scaleX(0.08)}}@-webkit-keyframes buffering{to{-webkit-transform:translateX(-10px);transform:translateX(-10px)}}@keyframes buffering{to{-webkit-transform:translateX(-10px);transform:translateX(-10px)}}:host{border-radius:9999px;height:4px}:host(.progress-bar-solid){--background:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6))}`;
13
13
 
@@ -38,20 +38,19 @@ const ProgressBar = class {
38
38
  this.buffer = 1;
39
39
  }
40
40
  render() {
41
- const { color, type, reversed, value, buffer, el } = this;
41
+ const { color, type, reversed, value, buffer } = this;
42
42
  const paused = index.config.getBoolean('_testing');
43
43
  const mode = ionicGlobal.getIonMode(this);
44
44
  // If the progress is displayed as a solid bar.
45
45
  const progressSolid = buffer === 1;
46
- return (index.h(index.Host, { key: '0a5c76361cf8df0c294e0fb2477892e23ecebe38', role: "progressbar", "aria-valuenow": type === 'determinate' ? value : null, "aria-valuemin": "0", "aria-valuemax": "1", class: theme.createColorClasses(color, {
46
+ return (index.h(index.Host, { key: 'd53d39a3e2c0198164a9face62d3775f357b6914', role: "progressbar", "aria-valuenow": type === 'determinate' ? value : null, "aria-valuemin": "0", "aria-valuemax": "1", class: theme.createColorClasses(color, {
47
47
  [mode]: true,
48
48
  [`progress-bar-${type}`]: true,
49
49
  'progress-paused': paused,
50
- 'progress-bar-reversed': dir.isRTL(el) ? !reversed : reversed,
50
+ 'progress-bar-reversed': document.dir === 'rtl' ? !reversed : reversed,
51
51
  'progress-bar-solid': progressSolid,
52
52
  }) }, type === 'indeterminate' ? renderIndeterminate() : renderProgress(value, buffer)));
53
53
  }
54
- get el() { return index.getElement(this); }
55
54
  };
56
55
  const renderIndeterminate = () => {
57
56
  return (index.h("div", { part: "track", class: "progress-buffer-bar" }, index.h("div", { class: "indeterminate-bar-primary" }, index.h("span", { part: "progress", class: "progress-indeterminate" })), index.h("div", { class: "indeterminate-bar-secondary" }, index.h("span", { part: "progress", class: "progress-indeterminate" }))));
@@ -4,13 +4,13 @@
4
4
  'use strict';
5
5
 
6
6
  var index = require('./index-BiQyIvoc.js');
7
- var helpers = require('./helpers-BrETKUUX.js');
7
+ var helpers = require('./helpers-Cqr69qxA.js');
8
8
  var compareWithUtils = require('./compare-with-utils-DSicavqM.js');
9
9
  var itemMultipleInputs = require('./item-multiple-inputs-C-hz7xrh.js');
10
10
  var theme = require('./theme-Bw0rpaNN.js');
11
11
  var ionicGlobal = require('./ionic-global-48ceLiJ6.js');
12
12
  var validity = require('./validity-BpS37YFM.js');
13
- require('./dir-Bma_9Lqh.js');
13
+ require('./dir-zwDPRE5K.js');
14
14
 
15
15
  const radioIosCss = () => `:host{--inner-border-radius:50%;display:inline-block;position:relative;max-width:100%;min-height:inherit;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:2;-webkit-box-sizing:border-box;box-sizing:border-box}:host(.radio-disabled){pointer-events:none}.radio-icon{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;contain:layout size style}.radio-icon,.radio-inner{-webkit-box-sizing:border-box;box-sizing:border-box}input{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;margin:0;padding:0;border:0;outline:0;clip:rect(0 0 0 0);opacity:0;overflow:hidden;-webkit-appearance:none;-moz-appearance:none}:host(:focus){outline:none}:host(.in-item){-ms-flex:1 1 0px;flex:1 1 0;width:100%;height:100%}:host([slot=start]),:host([slot=end]){-ms-flex:initial;flex:initial;width:auto}:host(.ion-focused) .radio-icon::after{border-radius:var(--inner-border-radius);display:block;position:absolute;width:36px;height:36px;background:var(--ion-color-primary-tint, #1a65eb);content:"";opacity:0.2}.radio-wrapper{display:-ms-flexbox;display:flex;position:relative;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;height:inherit;min-height:inherit;cursor:inherit}.label-text-wrapper{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}:host(.in-item) .label-text-wrapper{margin-top:10px;margin-bottom:10px}:host(.in-item.radio-label-placement-stacked) .label-text-wrapper{margin-top:10px;margin-bottom:16px}:host(.in-item.radio-label-placement-stacked) .native-wrapper{margin-bottom:10px}.label-text-wrapper-hidden{display:none}.native-wrapper{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}:host(.radio-justify-space-between) .radio-wrapper{-ms-flex-pack:justify;justify-content:space-between}:host(.radio-justify-start) .radio-wrapper{-ms-flex-pack:start;justify-content:start}:host(.radio-justify-end) .radio-wrapper{-ms-flex-pack:end;justify-content:end}:host(.radio-alignment-start) .radio-wrapper{-ms-flex-align:start;align-items:start}:host(.radio-alignment-center) .radio-wrapper{-ms-flex-align:center;align-items:center}:host(.radio-justify-space-between),:host(.radio-justify-start),:host(.radio-justify-end),:host(.radio-alignment-start),:host(.radio-alignment-center){display:block}:host(.radio-label-placement-start) .radio-wrapper{-ms-flex-direction:row;flex-direction:row}:host(.radio-label-placement-start) .label-text-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px}:host(.radio-label-placement-end) .radio-wrapper{-ms-flex-direction:row-reverse;flex-direction:row-reverse}:host(.radio-label-placement-end) .label-text-wrapper{-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:0;margin-inline-end:0}:host(.radio-label-placement-fixed) .label-text-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px}:host(.radio-label-placement-fixed) .label-text-wrapper{-ms-flex:0 0 100px;flex:0 0 100px;width:100px;min-width:100px}:host(.radio-label-placement-stacked) .radio-wrapper{-ms-flex-direction:column;flex-direction:column}:host(.radio-label-placement-stacked) .label-text-wrapper{-webkit-transform:scale(0.75);transform:scale(0.75);margin-left:0;margin-right:0;margin-bottom:16px;max-width:calc(100% / 0.75)}:host(.radio-label-placement-stacked.radio-alignment-start) .label-text-wrapper{-webkit-transform-origin:left top;transform-origin:left top}:host-context([dir=rtl]):host(.radio-label-placement-stacked.radio-alignment-start) .label-text-wrapper,:host-context([dir=rtl]).radio-label-placement-stacked.radio-alignment-start .label-text-wrapper{-webkit-transform-origin:right top;transform-origin:right top}@supports selector(:dir(rtl)){:host(.radio-label-placement-stacked.radio-alignment-start:dir(rtl)) .label-text-wrapper{-webkit-transform-origin:right top;transform-origin:right top}}:host(.radio-label-placement-stacked.radio-alignment-center) .label-text-wrapper{-webkit-transform-origin:center top;transform-origin:center top}:host-context([dir=rtl]):host(.radio-label-placement-stacked.radio-alignment-center) .label-text-wrapper,:host-context([dir=rtl]).radio-label-placement-stacked.radio-alignment-center .label-text-wrapper{-webkit-transform-origin:calc(100% - center) top;transform-origin:calc(100% - center) top}@supports selector(:dir(rtl)){:host(.radio-label-placement-stacked.radio-alignment-center:dir(rtl)) .label-text-wrapper{-webkit-transform-origin:calc(100% - center) top;transform-origin:calc(100% - center) top}}:host{--color-checked:var(--ion-color-primary, #0054e9)}:host(.ion-color.radio-checked) .radio-inner{border-color:var(--ion-color-base)}.item-radio.item-ios ion-label{-webkit-margin-start:0;margin-inline-start:0}.radio-inner{width:33%;height:50%}:host(.radio-checked) .radio-inner{-webkit-transform:rotate(45deg);transform:rotate(45deg);border-width:0.125rem;border-top-width:0;border-left-width:0;border-style:solid;border-color:var(--color-checked)}:host(.radio-disabled){opacity:0.3}.native-wrapper .radio-icon{width:0.9375rem;height:1.5rem}`;
16
16
 
@@ -4,9 +4,9 @@
4
4
  'use strict';
5
5
 
6
6
  var index = require('./index-BiQyIvoc.js');
7
- var index$1 = require('./index-DMz2Eyis.js');
8
- var helpers = require('./helpers-BrETKUUX.js');
9
- var dir = require('./dir-Bma_9Lqh.js');
7
+ var index$1 = require('./index-CNaZ6SYM.js');
8
+ var helpers = require('./helpers-Cqr69qxA.js');
9
+ var dir = require('./dir-zwDPRE5K.js');
10
10
  var theme = require('./theme-Bw0rpaNN.js');
11
11
  var ionicGlobal = require('./ionic-global-48ceLiJ6.js');
12
12
 
@@ -5,17 +5,17 @@
5
5
 
6
6
  var index = require('./index-BiQyIvoc.js');
7
7
  var cubicBezier = require('./cubic-bezier-DAjy1V-e.js');
8
- var index$1 = require('./index-DMz2Eyis.js');
9
- var helpers = require('./helpers-BrETKUUX.js');
10
- var haptic = require('./haptic-BD5qPgy8.js');
8
+ var index$1 = require('./index-CNaZ6SYM.js');
9
+ var helpers = require('./helpers-Cqr69qxA.js');
10
+ var haptic = require('./haptic--4QteuuM.js');
11
11
  var ionicGlobal = require('./ionic-global-48ceLiJ6.js');
12
- var animation = require('./animation-UiXhXV49.js');
12
+ var animation = require('./animation-DcgLg_PI.js');
13
13
  var config = require('./config-CjUbvdPW.js');
14
14
  var index$3 = require('./index-B4ONUQRp.js');
15
15
  var index$2 = require('./index-wOmugbdg.js');
16
16
  var spinnerConfigs = require('./spinner-configs-DxHKnd3-.js');
17
- require('./dir-Bma_9Lqh.js');
18
- require('./capacitor-BTjfXFlK.js');
17
+ require('./dir-zwDPRE5K.js');
18
+ require('./capacitor-C6Pp4Z7A.js');
19
19
 
20
20
  const getRefresherAnimationType = (contentEl) => {
21
21
  const previousSibling = contentEl.previousElementSibling;
@@ -6,11 +6,11 @@
6
6
  var index = require('./index-BiQyIvoc.js');
7
7
  var index$1 = require('./index-wOmugbdg.js');
8
8
  var ionicGlobal = require('./ionic-global-48ceLiJ6.js');
9
- var index$2 = require('./index-DMz2Eyis.js');
10
- var helpers = require('./helpers-BrETKUUX.js');
11
- var haptic = require('./haptic-BD5qPgy8.js');
12
- require('./dir-Bma_9Lqh.js');
13
- require('./capacitor-BTjfXFlK.js');
9
+ var index$2 = require('./index-CNaZ6SYM.js');
10
+ var helpers = require('./helpers-Cqr69qxA.js');
11
+ var haptic = require('./haptic--4QteuuM.js');
12
+ require('./dir-zwDPRE5K.js');
13
+ require('./capacitor-C6Pp4Z7A.js');
14
14
 
15
15
  const reorderIosCss = () => `:host([slot]){display:none;line-height:0;z-index:100}.reorder-icon{display:block}::slotted(ion-icon){font-size:dynamic-font(16px)}.reorder-icon{font-size:2.125rem;opacity:0.4}`;
16
16
 
@@ -4,11 +4,11 @@
4
4
  'use strict';
5
5
 
6
6
  var index = require('./index-BiQyIvoc.js');
7
- var helpers = require('./helpers-BrETKUUX.js');
8
- var index$1 = require('./index-DMz2Eyis.js');
7
+ var helpers = require('./helpers-Cqr69qxA.js');
8
+ var index$1 = require('./index-CNaZ6SYM.js');
9
9
  var theme = require('./theme-Bw0rpaNN.js');
10
10
  var ionicGlobal = require('./ionic-global-48ceLiJ6.js');
11
- require('./dir-Bma_9Lqh.js');
11
+ require('./dir-zwDPRE5K.js');
12
12
 
13
13
  const Route = class {
14
14
  constructor(hostRef) {
@@ -19,6 +19,14 @@ const Route = class {
19
19
  *
20
20
  * Accepts paths similar to expressjs so that you can define parameters
21
21
  * in the url /foo/:bar where bar would be available in incoming props.
22
+ *
23
+ * A url ending in `*`, such as `*` or `/admin/*`, matches any remaining path,
24
+ * including none, so `/admin/*` also matches `/admin`. It only wins over a
25
+ * route that matches the whole path when it has more fixed segments, so
26
+ * `/admin/*` wins over `/:section/:id` but not over `/admin/:id`. It always
27
+ * wins over a route that matches by ignoring trailing segments, such as
28
+ * `/admin` for `/admin/users`. The matched path is passed in the `pathMatch`
29
+ * prop without a leading `/`. A `*` on a route with child routes is ignored.
22
30
  */
23
31
  this.url = '';
24
32
  }
@@ -82,6 +90,8 @@ const RouteRedirect = class {
82
90
  const ROUTER_INTENT_NONE = 'root';
83
91
  const ROUTER_INTENT_FORWARD = 'forward';
84
92
  const ROUTER_INTENT_BACK = 'back';
93
+ /** Param that holds the path matched by a trailing `*` in an `ion-route` url. */
94
+ const WILDCARD_PARAM = 'pathMatch';
85
95
 
86
96
  /** Join the non empty segments with "/". */
87
97
  const generatePath = (segments) => {
@@ -115,12 +125,13 @@ const writeSegments = (history, root, useHash, segments, direction, state, query
115
125
  *
116
126
  * Notes:
117
127
  * - parameter segments of the form :param are replaced with their value,
118
- * - null is returned when a value is missing for any parameter segment.
128
+ * - null is returned when a value is missing for any parameter segment,
129
+ * - a trailing wildcard is replaced with the path it matched.
119
130
  */
120
131
  const chainToSegments = (chain) => {
121
132
  const segments = [];
122
133
  for (const route of chain) {
123
- for (const segment of route.segments) {
134
+ for (const segment of withoutWildcard(route.segments)) {
124
135
  if (segment[0] === ':') {
125
136
  const param = route.params && route.params[segment.slice(1)];
126
137
  if (!param) {
@@ -132,9 +143,22 @@ const chainToSegments = (chain) => {
132
143
  segments.push(segment);
133
144
  }
134
145
  }
146
+ segments.push(...wildcardSegments(route));
135
147
  }
136
148
  return segments;
137
149
  };
150
+ /** Only a `*` in the last segment of a route url is a wildcard. Elsewhere it's matched literally. */
151
+ const endsWithWildcard = (segments) => {
152
+ return segments[segments.length - 1] === '*';
153
+ };
154
+ /** Returns the path segments matched by the trailing wildcard of the route. */
155
+ const wildcardSegments = (route) => {
156
+ const pathMatch = endsWithWildcard(route.segments) ? route.params?.[WILDCARD_PARAM] : undefined;
157
+ return pathMatch ? pathMatch.split('/').filter((s) => s.length > 0) : [];
158
+ };
159
+ const withoutWildcard = (segments) => {
160
+ return endsWithWildcard(segments) ? segments.slice(0, -1) : segments;
161
+ };
138
162
  /**
139
163
  * Removes the prefix segments from the path segments.
140
164
  *
@@ -467,6 +491,10 @@ const matchesIDs = (ids, chain) => {
467
491
  if (routeId.id.toLowerCase() !== routeChain.id) {
468
492
  break;
469
493
  }
494
+ // Weight a wildcard route when the outlet reports its `pathMatch`
495
+ if (routeId.params?.[WILDCARD_PARAM] !== undefined && endsWithWildcard(routeChain.segments)) {
496
+ score++;
497
+ }
470
498
  if (routeId.params) {
471
499
  const routeIdParams = Object.keys(routeId.params);
472
500
  // Only compare routes with the chain that have the same number of parameters.
@@ -522,21 +550,28 @@ const matchesSegments = (segments, chain) => {
522
550
  matchesDefault = true;
523
551
  }
524
552
  else {
525
- for (const segment of chainSegments) {
553
+ const params = {};
554
+ for (const segment of withoutWildcard(chainSegments)) {
526
555
  const data = inputSegments.next();
527
556
  // data param
528
557
  if (segment[0] === ':') {
529
558
  if (data === '') {
530
559
  return null;
531
560
  }
532
- allparams = allparams || [];
533
- const params = allparams[i] || (allparams[i] = {});
534
561
  params[segment.slice(1)] = data;
535
562
  }
536
563
  else if (data !== segment) {
537
564
  return null;
538
565
  }
539
566
  }
567
+ // A trailing `*` on a parent route has no effect. Its children match the rest of the path.
568
+ if (i === chain.length - 1 && endsWithWildcard(chainSegments)) {
569
+ params[WILDCARD_PARAM] = inputSegments.rest().join('/');
570
+ }
571
+ if (Object.keys(params).length > 0) {
572
+ allparams = allparams || [];
573
+ allparams[i] = params;
574
+ }
540
575
  matchesDefault = false;
541
576
  }
542
577
  }
@@ -568,25 +603,38 @@ const mergeParams = (a, b) => {
568
603
  * Returns the best match or null when no match is found.
569
604
  * When a chain is returned the parameters are updated from the RouteIDs.
570
605
  * That is they contain both the componentProps of the <ion-route> and the parameter segment.
606
+ *
607
+ * When a wildcard route ties with other routes, a route without a wildcard that can build a url wins,
608
+ * then the wildcard route. Otherwise the first route declared wins a tie.
571
609
  */
572
610
  const findChainForIDs = (ids, chains) => {
573
- let match = null;
574
611
  let maxMatches = 0;
612
+ let tied = [];
575
613
  for (const chain of chains) {
576
614
  const score = matchesIDs(ids, chain);
577
615
  if (score > maxMatches) {
578
- match = chain;
579
616
  maxMatches = score;
617
+ tied = [chain];
618
+ }
619
+ else if (score > 0 && score === maxMatches) {
620
+ tied.push(chain);
580
621
  }
581
622
  }
582
- if (match) {
583
- return match.map((route, i) => ({
584
- id: route.id,
585
- segments: route.segments,
586
- params: mergeParams(route.params, ids[i]?.params),
587
- }));
623
+ const matches = tied.map((chain) => chain.map((route, i) => ({
624
+ id: route.id,
625
+ segments: route.segments,
626
+ params: mergeParams(route.params, ids[i]?.params),
627
+ })));
628
+ if (!matches.some(chainEndsWithWildcard)) {
629
+ return matches.length > 0 ? matches[0] : null;
588
630
  }
589
- return null;
631
+ return matches.reduce((best, chain) => (tieRank(chain) > tieRank(best) ? chain : best));
632
+ };
633
+ const tieRank = (chain) => {
634
+ if (chainEndsWithWildcard(chain)) {
635
+ return 1;
636
+ }
637
+ return chainToSegments(chain) !== null ? 2 : 0;
590
638
  };
591
639
  /**
592
640
  * Finds the best match for the segments in the chains.
@@ -594,10 +642,17 @@ const findChainForIDs = (ids, chains) => {
594
642
  * Returns the best match or null when no match is found.
595
643
  * When a chain is returned the parameters are updated from the segments.
596
644
  * That is they contain both the componentProps of the <ion-route> and the parameter segments.
645
+ *
646
+ * When wildcard routes match, the one with the most fixed segments wins if it has more fixed segments than every
647
+ * route that matched the whole path. Routes that only matched by ignoring trailing segments don't count.
597
648
  */
598
649
  const findChainForSegments = (segments, chains) => {
599
650
  let match = null;
600
651
  let bestScore = 0;
652
+ let fullMatch = null;
653
+ let bestFullScore = 0;
654
+ let maxFullFixed = -1;
655
+ let wildcard = null;
601
656
  for (const chain of chains) {
602
657
  const matchedChain = matchesSegments(segments, chain);
603
658
  if (matchedChain !== null) {
@@ -606,9 +661,51 @@ const findChainForSegments = (segments, chains) => {
606
661
  bestScore = score;
607
662
  match = matchedChain;
608
663
  }
664
+ if (chainEndsWithWildcard(matchedChain)) {
665
+ if (wildcard === null || winsWildcard(matchedChain, wildcard)) {
666
+ wildcard = matchedChain;
667
+ }
668
+ }
669
+ else if (!isPartialMatch(segments, matchedChain)) {
670
+ if (score > bestFullScore) {
671
+ bestFullScore = score;
672
+ fullMatch = matchedChain;
673
+ }
674
+ maxFullFixed = Math.max(maxFullFixed, countFixedSegments(matchedChain));
675
+ }
676
+ }
677
+ }
678
+ // Without a wildcard to match the rest of the path, routes can still ignore trailing segments.
679
+ if (wildcard === null) {
680
+ return match;
681
+ }
682
+ // Compare fixed segments rather than priority, since nesting under default routes raises the priority
683
+ return countFixedSegments(wildcard) > maxFullFixed ? wildcard : fullMatch;
684
+ };
685
+ /** Returns whether the chain matched the path segments only by ignoring some trailing segments. */
686
+ const isPartialMatch = (segments, chain) => {
687
+ const matched = chainToSegments(chain);
688
+ return matched !== null && matched.length < segments.filter((s) => s !== '').length;
689
+ };
690
+ const chainEndsWithWildcard = (chain) => {
691
+ return endsWithWildcard(chain[chain.length - 1].segments);
692
+ };
693
+ /** Returns whether the wildcard chain beats `best` by fixed segments, then by priority. */
694
+ const winsWildcard = (chain, best) => {
695
+ const chainFixed = countFixedSegments(chain);
696
+ const bestFixed = countFixedSegments(best);
697
+ return chainFixed > bestFixed || (chainFixed === bestFixed && computePriority(chain) > computePriority(best));
698
+ };
699
+ const countFixedSegments = (chain) => {
700
+ let count = 0;
701
+ for (const route of chain) {
702
+ for (const segment of withoutWildcard(route.segments)) {
703
+ if (segment !== '' && segment[0] !== ':') {
704
+ count++;
705
+ }
609
706
  }
610
707
  }
611
- return match;
708
+ return count;
612
709
  };
613
710
  /**
614
711
  * Computes the priority of a chain.
@@ -620,12 +717,14 @@ const findChainForSegments = (segments, chains) => {
620
717
  * - /path/to/page
621
718
  *
622
719
  * The second one will be given a higher priority because "page" is a fixed segment (vs ":where", a parameter segment).
720
+ *
721
+ * A trailing wildcard is not counted.
623
722
  */
624
723
  const computePriority = (chain) => {
625
724
  let score = 1;
626
725
  let level = 1;
627
726
  for (const route of chain) {
628
- for (const segment of route.segments) {
727
+ for (const segment of withoutWildcard(route.segments)) {
629
728
  if (segment[0] === ':') {
630
729
  score += Math.pow(1, level);
631
730
  }
@@ -647,6 +746,12 @@ class RouterSegments {
647
746
  }
648
747
  return '';
649
748
  }
749
+ /** Consumes and returns the remaining non empty segments. */
750
+ rest() {
751
+ const rest = this.segments.filter((s) => s !== '');
752
+ this.segments = [];
753
+ return rest;
754
+ }
650
755
  }
651
756
 
652
757
  const readProp = (el, prop) => {
@@ -4,8 +4,8 @@
4
4
  'use strict';
5
5
 
6
6
  var index = require('./index-BiQyIvoc.js');
7
- var helpers = require('./helpers-BrETKUUX.js');
8
- var dir = require('./dir-Bma_9Lqh.js');
7
+ var helpers = require('./helpers-Cqr69qxA.js');
8
+ var dir = require('./dir-zwDPRE5K.js');
9
9
  var theme = require('./theme-Bw0rpaNN.js');
10
10
  var index$1 = require('./index-wOmugbdg.js');
11
11
  var ionicGlobal = require('./ionic-global-48ceLiJ6.js');
@@ -4,7 +4,7 @@
4
4
  'use strict';
5
5
 
6
6
  var index = require('./index-BiQyIvoc.js');
7
- var dir = require('./dir-Bma_9Lqh.js');
7
+ var dir = require('./dir-zwDPRE5K.js');
8
8
 
9
9
  const segmentViewIosCss = () => `:host{display:-ms-flexbox;display:flex;height:100%;overflow-x:scroll;-webkit-scroll-snap-type:x mandatory;-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory;scrollbar-width:none;-ms-overflow-style:none}:host::-webkit-scrollbar{display:none}:host(.segment-view-disabled),:host(.segment-view-swipe-disabled){-ms-touch-action:none;touch-action:none;overflow-x:hidden}:host(.segment-view-scroll-disabled){pointer-events:none}:host(.segment-view-disabled){opacity:0.3}`;
10
10
 
@@ -4,8 +4,8 @@
4
4
  'use strict';
5
5
 
6
6
  var index = require('./index-BiQyIvoc.js');
7
- var helpers = require('./helpers-BrETKUUX.js');
8
- var dir = require('./dir-Bma_9Lqh.js');
7
+ var helpers = require('./helpers-Cqr69qxA.js');
8
+ var dir = require('./dir-zwDPRE5K.js');
9
9
  var theme = require('./theme-Bw0rpaNN.js');
10
10
  var ionicGlobal = require('./ionic-global-48ceLiJ6.js');
11
11
 
@@ -6,12 +6,12 @@
6
6
  var index = require('./index-BiQyIvoc.js');
7
7
  var ionicGlobal = require('./ionic-global-48ceLiJ6.js');
8
8
  var overlayControlLabel = require('./overlay-control-label-D2sdL2O8.js');
9
- var hardwareBackButton = require('./overlays-BbVQG3UT.js');
9
+ var hardwareBackButton = require('./overlays-CLld3axA.js');
10
10
  var selectOptionRender = require('./select-option-render-CzyhrkOu.js');
11
11
  var theme = require('./theme-Bw0rpaNN.js');
12
- require('./helpers-BrETKUUX.js');
13
- require('./dir-Bma_9Lqh.js');
14
- require('./framework-delegate-hNMKEiQC.js');
12
+ require('./helpers-Cqr69qxA.js');
13
+ require('./dir-zwDPRE5K.js');
14
+ require('./framework-delegate-JbKIVMzR.js');
15
15
  require('./gesture-controller-CeJslptU.js');
16
16
  require('./index-B4ONUQRp.js');
17
17