@ionic/core 8.8.18 → 8.8.19-dev.11786730389.1a1927bf

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 (786) hide show
  1. package/components/index.js +1 -1
  2. package/components/ion-accordion-group.js +1 -1
  3. package/components/ion-accordion.js +1 -1
  4. package/components/ion-action-sheet.js +1 -1
  5. package/components/ion-alert.js +1 -1
  6. package/components/ion-app.js +1 -1
  7. package/components/ion-avatar.js +1 -1
  8. package/components/ion-back-button.js +1 -1
  9. package/components/ion-backdrop.js +1 -1
  10. package/components/ion-badge.js +1 -1
  11. package/components/ion-breadcrumb.js +1 -1
  12. package/components/ion-breadcrumbs.js +1 -1
  13. package/components/ion-button.js +1 -1
  14. package/components/ion-buttons.js +1 -1
  15. package/components/ion-card-content.js +1 -1
  16. package/components/ion-card-header.js +1 -1
  17. package/components/ion-card-subtitle.js +1 -1
  18. package/components/ion-card-title.js +1 -1
  19. package/components/ion-card.js +1 -1
  20. package/components/ion-checkbox.js +1 -1
  21. package/components/ion-chip.js +1 -1
  22. package/components/ion-col.js +1 -1
  23. package/components/ion-content.js +1 -1
  24. package/components/ion-datetime-button.js +1 -1
  25. package/components/ion-datetime.js +1 -1
  26. package/components/ion-fab-button.js +1 -1
  27. package/components/ion-fab-list.js +1 -1
  28. package/components/ion-fab.js +1 -1
  29. package/components/ion-footer.js +1 -1
  30. package/components/ion-grid.js +1 -1
  31. package/components/ion-header.js +1 -1
  32. package/components/ion-icon.js +1 -1
  33. package/components/ion-img.js +1 -1
  34. package/components/ion-infinite-scroll-content.js +1 -1
  35. package/components/ion-infinite-scroll.js +1 -1
  36. package/components/ion-input-otp.js +1 -1
  37. package/components/ion-input-password-toggle.js +1 -1
  38. package/components/ion-input.js +1 -1
  39. package/components/ion-item-divider.js +1 -1
  40. package/components/ion-item-group.js +1 -1
  41. package/components/ion-item-option.js +1 -1
  42. package/components/ion-item-options.js +1 -1
  43. package/components/ion-item-sliding.js +1 -1
  44. package/components/ion-item.js +1 -1
  45. package/components/ion-label.js +1 -1
  46. package/components/ion-list-header.js +1 -1
  47. package/components/ion-list.js +1 -1
  48. package/components/ion-loading.js +1 -1
  49. package/components/ion-menu-button.js +1 -1
  50. package/components/ion-menu-toggle.js +1 -1
  51. package/components/ion-menu.js +1 -1
  52. package/components/ion-modal.js +1 -1
  53. package/components/ion-nav-link.js +1 -1
  54. package/components/ion-nav.js +1 -1
  55. package/components/ion-note.js +1 -1
  56. package/components/ion-picker-column-option.js +1 -1
  57. package/components/ion-picker-column.js +1 -1
  58. package/components/ion-picker.js +1 -1
  59. package/components/ion-popover.js +1 -1
  60. package/components/ion-progress-bar.js +1 -1
  61. package/components/ion-radio-group.js +1 -1
  62. package/components/ion-radio.js +1 -1
  63. package/components/ion-range.js +1 -1
  64. package/components/ion-refresher-content.js +1 -1
  65. package/components/ion-refresher.js +1 -1
  66. package/components/ion-reorder-group.js +1 -1
  67. package/components/ion-reorder.js +1 -1
  68. package/components/ion-ripple-effect.js +1 -1
  69. package/components/ion-route-redirect.js +1 -1
  70. package/components/ion-route.js +1 -1
  71. package/components/ion-router-link.js +1 -1
  72. package/components/ion-router-outlet.js +1 -1
  73. package/components/ion-router.js +1 -1
  74. package/components/ion-row.js +1 -1
  75. package/components/ion-searchbar.js +1 -1
  76. package/components/ion-segment-button.js +1 -1
  77. package/components/ion-segment-content.js +1 -1
  78. package/components/ion-segment-view.js +1 -1
  79. package/components/ion-segment.js +1 -1
  80. package/components/ion-select-modal.js +1 -1
  81. package/components/ion-select-option.js +1 -1
  82. package/components/ion-select-popover.js +1 -1
  83. package/components/ion-select.js +1 -1
  84. package/components/ion-skeleton-text.js +1 -1
  85. package/components/ion-spinner.js +1 -1
  86. package/components/ion-split-pane.js +1 -1
  87. package/components/ion-tab-bar.js +1 -1
  88. package/components/ion-tab-button.js +1 -1
  89. package/components/ion-tab.js +1 -1
  90. package/components/ion-tabs.js +1 -1
  91. package/components/ion-text.js +1 -1
  92. package/components/ion-textarea.js +1 -1
  93. package/components/ion-thumbnail.js +1 -1
  94. package/components/ion-title.js +1 -1
  95. package/components/ion-toast.js +1 -1
  96. package/components/ion-toggle.js +1 -1
  97. package/components/ion-toolbar.js +1 -1
  98. package/components/p-0Pyit076.js +4 -0
  99. package/components/{p-C_hpsif8.js → p-30_sZS2V.js} +1 -1
  100. package/components/p-83oP9gzn.js +4 -0
  101. package/components/p-8FN7p701.js +4 -0
  102. package/components/p-B-FxiyeI.js +4 -0
  103. package/components/p-B6dUPQXq.js +4 -0
  104. package/components/p-BMPN55of.js +4 -0
  105. package/components/p-BMS4t-kJ.js +4 -0
  106. package/components/p-BO4sUqUv.js +4 -0
  107. package/components/p-BSQPZ79H.js +4 -0
  108. package/components/p-Bc4wROfM.js +4 -0
  109. package/components/p-BhamHSw3.js +4 -0
  110. package/components/{p-D3xo7hqU.js → p-BpG8kBfD.js} +1 -1
  111. package/components/p-BqPNzJf6.js +4 -0
  112. package/components/p-BsVxQGUT.js +4 -0
  113. package/components/p-BxUIQcD9.js +4 -0
  114. package/components/p-C1O9GEug.js +4 -0
  115. package/components/p-C5KYjZWD.js +4 -0
  116. package/components/p-C9BGR5fy.js +4 -0
  117. package/components/p-CD4fmpem.js +4 -0
  118. package/components/p-CEW4RXZO.js +4 -0
  119. package/components/p-CKhiNOEg.js +4 -0
  120. package/components/p-CO2zzh3W.js +4 -0
  121. package/components/p-CVnwvOBD.js +4 -0
  122. package/components/p-CbhUdtjf.js +4 -0
  123. package/components/p-CejmQs3h.js +4 -0
  124. package/components/p-CfnGxjv-.js +4 -0
  125. package/components/p-ClFYbgND.js +4 -0
  126. package/components/p-CmKf4pgI.js +4 -0
  127. package/components/p-Cs5f-uOS.js +4 -0
  128. package/components/p-D7-vHX0A.js +4 -0
  129. package/{dist/ionic/p-DC3RagnA.js → components/p-DIgGHN7D.js} +1 -1
  130. package/components/p-DRfgH82D.js +4 -0
  131. package/components/p-DTY4otpr.js +4 -0
  132. package/components/{p--JUspHvy.js → p-DV85C0e0.js} +1 -1
  133. package/components/p-DVKS-ovH.js +4 -0
  134. package/components/p-DWCzVL3Y.js +4 -0
  135. package/components/p-D_XD0pVT.js +4 -0
  136. package/components/p-Dd8ajo9a.js +4 -0
  137. package/components/p-DdnhY_oj.js +4 -0
  138. package/components/p-Dm7h4Nyv.js +4 -0
  139. package/components/{p-BkKAANMJ.js → p-DwpKZ6rl.js} +1 -1
  140. package/components/p-DyePCNGr.js +4 -0
  141. package/components/p-G0TxqHfe.js +4 -0
  142. package/components/{p-ChIZKXUu.js → p-J-p0EtHR.js} +1 -1
  143. package/components/p-LXu5-6Ti.js +4 -0
  144. package/components/p-MCJ7HjWe.js +4 -0
  145. package/components/p-Obm7si-x.js +4 -0
  146. package/components/p-TXPDHL13.js +4 -0
  147. package/components/p-UuPYCOZE.js +4 -0
  148. package/components/p-WeeS7GvC.js +4 -0
  149. package/components/{p-D7uN07a3.js → p-_0JhwClE.js} +1 -1
  150. package/components/p-_IKFD3ID.js +4 -0
  151. package/components/p-byZM6qHV.js +4 -0
  152. package/components/p-hh7qIC-X.js +4 -0
  153. package/components/p-idq4JFo2.js +4 -0
  154. package/components/{p-DqLB8yFQ.js → p-ryyf_ItD.js} +1 -1
  155. package/components/p-tYCT3JGl.js +4 -0
  156. package/components/p-wzAhIh03.js +4 -0
  157. package/components/p-xOjr4bwc.js +4 -0
  158. package/components/p-yuj4Nkm_.js +4 -0
  159. package/dist/cjs/{animation-Ch16T-Nb.js → animation-C0mOHzej.js} +4 -4
  160. package/dist/cjs/{app-globals-Dd89e0MR.js → app-globals-BREG4twP.js} +1 -1
  161. package/dist/cjs/{button-active-COnxOe4X.js → button-active-BKj1rdFx.js} +3 -3
  162. package/dist/cjs/config-CjUbvdPW.js +36 -0
  163. package/dist/cjs/{dir-Cn0z1rJH.js → dir-Brx7VkvP.js} +1 -1
  164. package/dist/cjs/{format-BUFWn4Bn.js → format-pp0Du3K-.js} +40 -30
  165. package/dist/cjs/{framework-delegate-BgU6U9Ez.js → framework-delegate-NTLQ5YzV.js} +5 -7
  166. package/dist/cjs/{gesture-controller-dtqlP_q4.js → gesture-controller-BDUH7687.js} +15 -8
  167. package/dist/cjs/{haptic-ClPPQ_PS.js → haptic-Ch-X4gRx.js} +2 -3
  168. package/dist/cjs/{hardware-back-button-CXmUnTJC.js → hardware-back-button-fqpYh-kd.js} +4 -4
  169. package/dist/cjs/{helpers-gntk8bfm.js → helpers-CaLhEmTE.js} +3 -3
  170. package/dist/cjs/index-B7zJsYWS.js +429 -0
  171. package/dist/cjs/{index-BhhuJ1Yx.js → index-BlshL9ib.js} +2 -2
  172. package/dist/cjs/{index-BS2uhvhT.js → index-Ck9advCT.js} +5 -5
  173. package/dist/cjs/{index-ooS8B4p9.js → index-D2X6b92x.js} +6 -7
  174. package/dist/cjs/{index-BiRrzGDi.js → index-D48vawBq.js} +2 -2
  175. package/dist/cjs/{index-CAvQ7Tka.js → index-P1nQxrpZ.js} +10 -4
  176. package/dist/cjs/{index-BfaXsATC.js → index-uvry__L4.js} +31 -14
  177. package/dist/cjs/{index-DqmRDbxg.js → index-wOmugbdg.js} +1 -1
  178. package/dist/cjs/index.cjs.js +18 -18
  179. package/dist/cjs/{input-shims-Bn1cXfCM.js → input-shims-DvHAFqiP.js} +9 -11
  180. package/dist/cjs/{input.utils-BwhxZooW.js → input.utils-CP4fzrqk.js} +3 -4
  181. package/dist/cjs/ion-accordion_2.cjs.entry.js +368 -340
  182. package/dist/cjs/ion-action-sheet.cjs.entry.js +187 -76
  183. package/dist/cjs/ion-alert.cjs.entry.js +273 -111
  184. package/dist/cjs/ion-app_8.cjs.entry.js +307 -190
  185. package/dist/cjs/ion-avatar_3.cjs.entry.js +10 -4
  186. package/dist/cjs/ion-back-button.cjs.entry.js +47 -23
  187. package/dist/cjs/ion-backdrop.cjs.entry.js +18 -14
  188. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +199 -121
  189. package/dist/cjs/ion-button_2.cjs.entry.js +138 -66
  190. package/dist/cjs/ion-card_5.cjs.entry.js +82 -30
  191. package/dist/cjs/ion-checkbox.cjs.entry.js +152 -101
  192. package/dist/cjs/ion-chip.cjs.entry.js +17 -11
  193. package/dist/cjs/ion-col_3.cjs.entry.js +134 -10
  194. package/dist/cjs/ion-datetime-button.cjs.entry.js +253 -241
  195. package/dist/cjs/ion-datetime.cjs.entry.js +2770 -0
  196. package/dist/cjs/ion-fab_3.cjs.entry.js +139 -81
  197. package/dist/cjs/ion-img.cjs.entry.js +34 -12
  198. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +100 -72
  199. package/dist/cjs/ion-input-otp.cjs.entry.js +433 -370
  200. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +33 -19
  201. package/dist/cjs/ion-input.cjs.entry.js +314 -168
  202. package/dist/cjs/ion-item-option_3.cjs.entry.js +91 -51
  203. package/dist/cjs/ion-item_8.cjs.entry.js +181 -82
  204. package/dist/cjs/ion-loading.cjs.entry.js +146 -60
  205. package/dist/cjs/ion-menu_3.cjs.entry.js +163 -101
  206. package/dist/cjs/ion-modal.cjs.entry.js +455 -261
  207. package/dist/cjs/ion-nav_2.cjs.entry.js +100 -157
  208. package/dist/cjs/ion-picker-column-option.cjs.entry.js +37 -33
  209. package/dist/cjs/ion-picker-column.cjs.entry.js +417 -405
  210. package/dist/cjs/ion-picker.cjs.entry.js +401 -392
  211. package/dist/cjs/ion-popover.cjs.entry.js +319 -205
  212. package/dist/cjs/ion-progress-bar.cjs.entry.js +31 -25
  213. package/dist/cjs/ion-radio_2.cjs.entry.js +206 -133
  214. package/dist/cjs/ion-range.cjs.entry.js +302 -237
  215. package/dist/cjs/ion-refresher_2.cjs.entry.js +165 -93
  216. package/dist/cjs/ion-reorder_2.cjs.entry.js +53 -23
  217. package/dist/cjs/ion-ripple-effect.cjs.entry.js +14 -14
  218. package/dist/cjs/ion-route_4.cjs.entry.js +175 -71
  219. package/dist/cjs/ion-searchbar.cjs.entry.js +291 -200
  220. package/dist/cjs/ion-segment-content.cjs.entry.js +2 -2
  221. package/dist/cjs/ion-segment-view.cjs.entry.js +28 -17
  222. package/dist/cjs/ion-segment_2.cjs.entry.js +169 -126
  223. package/dist/cjs/ion-select-modal.cjs.entry.js +104 -48
  224. package/dist/cjs/ion-select_3.cjs.entry.js +759 -214
  225. package/dist/cjs/ion-spinner.cjs.entry.js +24 -10
  226. package/dist/cjs/ion-split-pane.cjs.entry.js +29 -16
  227. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +100 -41
  228. package/dist/cjs/ion-tab_2.cjs.entry.js +53 -27
  229. package/dist/cjs/ion-text.cjs.entry.js +11 -5
  230. package/dist/cjs/ion-textarea.cjs.entry.js +263 -144
  231. package/dist/cjs/ion-toast.cjs.entry.js +236 -117
  232. package/dist/cjs/ion-toggle.cjs.entry.js +175 -122
  233. package/dist/cjs/{ionic-global-BerQGEpE.js → ionic-global-k6hOWWpn.js} +13 -8
  234. package/dist/cjs/ionic.cjs.js +4 -4
  235. package/dist/cjs/{ios.transition-IMJRwn29.js → ios.transition-KvuRAe2W.js} +13 -17
  236. package/dist/cjs/{item-multiple-inputs-jOJZE_I0.js → item-multiple-inputs-BdYSbfKN.js} +1 -1
  237. package/dist/cjs/{keyboard-hHzlEQpk.js → keyboard-Cix5TVkD.js} +2 -2
  238. package/dist/cjs/{keyboard-UuAS4D_9.js → keyboard-cHxZlTyz.js} +2 -2
  239. package/dist/cjs/{keyboard-controller-GXBiBRKS.js → keyboard-controller-PtZoN2GS.js} +6 -6
  240. package/dist/cjs/loader.cjs.js +4 -4
  241. package/dist/cjs/{md.transition-CgQZxcoT.js → md.transition-Bjl5Ozph.js} +7 -8
  242. package/dist/cjs/{notch-controller-_SwR025y.js → notch-controller-BEUpEgb5.js} +1 -1
  243. package/dist/cjs/overlay-control-label-D2sdL2O8.js +50 -0
  244. package/dist/cjs/{overlays-DuSEMhIW.js → overlays-IlP4H2Gn.js} +48 -33
  245. package/dist/cjs/select-option-render-pULCGldr.js +123 -0
  246. package/dist/cjs/{status-tap-CSvBT7FV.js → status-tap-BR_ujYHg.js} +3 -3
  247. package/dist/cjs/{swipe-back-CuIiziaa.js → swipe-back-DzQKEl5g.js} +5 -5
  248. package/dist/cjs/{theme-CeDs6Hcv.js → theme-Bw0rpaNN.js} +6 -1
  249. package/dist/collection/collection-manifest.json +6 -10
  250. package/dist/collection/components/accordion/accordion.js +315 -312
  251. package/dist/collection/components/accordion-group/accordion-group.js +48 -25
  252. package/dist/collection/components/action-sheet/action-sheet.ios.css +228 -2
  253. package/dist/collection/components/action-sheet/action-sheet.js +173 -64
  254. package/dist/collection/components/action-sheet/action-sheet.md.css +174 -2
  255. package/dist/collection/components/action-sheet/test/basic/fixture.js +3 -0
  256. package/dist/collection/components/alert/alert.ios.css +279 -10
  257. package/dist/collection/components/alert/alert.js +257 -97
  258. package/dist/collection/components/alert/alert.md.css +268 -20
  259. package/dist/collection/components/app/app.js +3 -0
  260. package/dist/collection/components/back-button/back-button.js +42 -19
  261. package/dist/collection/components/backdrop/backdrop.js +16 -14
  262. package/dist/collection/components/badge/badge.js +6 -0
  263. package/dist/collection/components/breadcrumb/breadcrumb.js +91 -30
  264. package/dist/collection/components/breadcrumbs/breadcrumbs.js +103 -88
  265. package/dist/collection/components/button/button.js +132 -61
  266. package/dist/collection/components/buttons/buttons.js +13 -15
  267. package/dist/collection/components/card/card.js +54 -21
  268. package/dist/collection/components/card-header/card-header.js +12 -8
  269. package/dist/collection/components/card-subtitle/card-subtitle.js +6 -0
  270. package/dist/collection/components/card-title/card-title.js +6 -0
  271. package/dist/collection/components/checkbox/checkbox.js +147 -97
  272. package/dist/collection/components/chip/chip.js +14 -10
  273. package/dist/collection/components/col/col.js +127 -3
  274. package/dist/collection/components/content/content.js +93 -64
  275. package/dist/collection/components/datetime/datetime.ios.css +42 -2
  276. package/dist/collection/components/datetime/datetime.js +1042 -807
  277. package/dist/collection/components/datetime/datetime.md.css +42 -1
  278. package/dist/collection/components/datetime/utils/data.js +13 -14
  279. package/dist/collection/components/datetime/utils/format.js +21 -11
  280. package/dist/collection/components/datetime/utils/manipulation.js +8 -8
  281. package/dist/collection/components/datetime/utils/parse.js +10 -10
  282. package/dist/collection/components/datetime/utils/state.js +8 -2
  283. package/dist/collection/components/datetime/utils/validate.js +4 -5
  284. package/dist/collection/components/datetime-button/datetime-button.ios.css +5 -0
  285. package/dist/collection/components/datetime-button/datetime-button.js +247 -237
  286. package/dist/collection/components/datetime-button/datetime-button.md.css +5 -0
  287. package/dist/collection/components/fab/fab.js +20 -13
  288. package/dist/collection/components/fab-button/fab-button.js +104 -55
  289. package/dist/collection/components/fab-list/fab-list.js +10 -11
  290. package/dist/collection/components/footer/footer.js +50 -44
  291. package/dist/collection/components/grid/grid.js +4 -6
  292. package/dist/collection/components/header/header.js +35 -25
  293. package/dist/collection/components/img/img.js +34 -10
  294. package/dist/collection/components/infinite-scroll/infinite-scroll.js +73 -66
  295. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +20 -3
  296. package/dist/collection/components/input/input.ios.css +1 -2
  297. package/dist/collection/components/input/input.js +309 -164
  298. package/dist/collection/components/input/input.md.css +1 -2
  299. package/dist/collection/components/input-otp/input-otp.js +428 -366
  300. package/dist/collection/components/input-password-toggle/input-password-toggle.js +29 -16
  301. package/dist/collection/components/item/item.js +99 -53
  302. package/dist/collection/components/item-divider/item-divider.js +15 -10
  303. package/dist/collection/components/item-option/item-option.js +49 -21
  304. package/dist/collection/components/item-options/item-options.js +10 -7
  305. package/dist/collection/components/item-sliding/item-sliding.js +26 -20
  306. package/dist/collection/components/label/label.js +24 -4
  307. package/dist/collection/components/list/list.js +10 -7
  308. package/dist/collection/components/list-header/list-header.js +10 -0
  309. package/dist/collection/components/loading/loading.js +135 -51
  310. package/dist/collection/components/menu/menu.js +101 -59
  311. package/dist/collection/components/menu-button/menu-button.js +29 -20
  312. package/dist/collection/components/menu-toggle/menu-toggle.js +20 -13
  313. package/dist/collection/components/modal/animations/ios.enter.js +1 -1
  314. package/dist/collection/components/modal/animations/md.enter.js +1 -1
  315. package/dist/collection/components/modal/gestures/sheet.js +22 -10
  316. package/dist/collection/components/modal/gestures/swipe-to-close.js +15 -3
  317. package/dist/collection/components/modal/modal.js +398 -228
  318. package/dist/collection/components/modal/safe-area-utils.js +6 -7
  319. package/dist/collection/components/modal/test/fixtures.js +3 -0
  320. package/dist/collection/components/nav/nav.js +69 -247
  321. package/dist/collection/components/nav/view-controller.js +7 -1
  322. package/dist/collection/components/nav-link/nav-link.js +20 -9
  323. package/dist/collection/components/note/note.js +6 -0
  324. package/dist/collection/components/picker/picker.js +398 -390
  325. package/dist/collection/components/picker-column/picker-column.css +3 -0
  326. package/dist/collection/components/picker-column/picker-column.js +414 -404
  327. package/dist/collection/components/picker-column-option/picker-column-option.js +33 -31
  328. package/dist/collection/components/picker-column-option/picker-column-option.md.css +6 -1
  329. package/dist/collection/components/popover/animations/ios.enter.js +1 -2
  330. package/dist/collection/components/popover/animations/md.enter.js +1 -2
  331. package/dist/collection/components/popover/popover.ios.css +15 -0
  332. package/dist/collection/components/popover/popover.js +302 -185
  333. package/dist/collection/components/popover/popover.md.css +15 -0
  334. package/dist/collection/components/popover/test/fixture.js +1 -0
  335. package/dist/collection/components/popover/utils.js +4 -6
  336. package/dist/collection/components/progress-bar/progress-bar.js +27 -23
  337. package/dist/collection/components/radio/radio.js +102 -66
  338. package/dist/collection/components/radio-group/radio-group.js +100 -65
  339. package/dist/collection/components/radio-group/test/fixtures.js +2 -0
  340. package/dist/collection/components/range/range.js +296 -232
  341. package/dist/collection/components/refresher/refresher.js +110 -78
  342. package/dist/collection/components/refresher-content/refresher-content.js +41 -4
  343. package/dist/collection/components/reorder/reorder.js +2 -1
  344. package/dist/collection/components/reorder-group/reorder-group.js +44 -15
  345. package/dist/collection/components/ripple-effect/ripple-effect.js +12 -13
  346. package/dist/collection/components/route/route.js +39 -10
  347. package/dist/collection/components/route-redirect/route-redirect.js +31 -0
  348. package/dist/collection/components/router/router.js +37 -33
  349. package/dist/collection/components/router/utils/dom.js +25 -7
  350. package/dist/collection/components/router/utils/matching.js +7 -9
  351. package/dist/collection/components/router/utils/parser.js +1 -1
  352. package/dist/collection/components/router/utils/path.js +0 -1
  353. package/dist/collection/components/router-link/router-link.js +37 -12
  354. package/dist/collection/components/router-outlet/router-outlet.js +82 -21
  355. package/dist/collection/components/row/row.js +1 -1
  356. package/dist/collection/components/searchbar/searchbar.js +289 -199
  357. package/dist/collection/components/segment/segment.js +120 -85
  358. package/dist/collection/components/segment-button/segment-button.js +43 -37
  359. package/dist/collection/components/segment-content/segment-content.js +1 -1
  360. package/dist/collection/components/segment-view/segment-view.js +26 -16
  361. package/dist/collection/components/select/select.ios.css +33 -0
  362. package/dist/collection/components/select/select.js +597 -166
  363. package/dist/collection/components/select/select.md.css +33 -0
  364. package/dist/collection/components/select-modal/select-modal.ios.css +218 -0
  365. package/dist/collection/components/select-modal/select-modal.js +92 -38
  366. package/dist/collection/components/select-modal/select-modal.md.css +164 -0
  367. package/dist/collection/components/select-modal/test/fixtures.js +8 -1
  368. package/dist/collection/components/select-option/select-option.js +110 -9
  369. package/dist/collection/components/select-popover/select-popover.ios.css +218 -0
  370. package/dist/collection/components/select-popover/select-popover.js +103 -36
  371. package/dist/collection/components/select-popover/select-popover.md.css +164 -0
  372. package/dist/collection/components/select-popover/test/fixtures.js +8 -1
  373. package/dist/collection/components/skeleton-text/skeleton-text.js +12 -8
  374. package/dist/collection/components/spinner/spinner.js +21 -9
  375. package/dist/collection/components/split-pane/split-pane.js +27 -15
  376. package/dist/collection/components/tab/tab.js +17 -6
  377. package/dist/collection/components/tab-bar/tab-bar.js +32 -14
  378. package/dist/collection/components/tab-button/tab-button.js +62 -23
  379. package/dist/collection/components/tabs/tabs.js +33 -20
  380. package/dist/collection/components/text/text.js +8 -2
  381. package/dist/collection/components/textarea/textarea.js +257 -139
  382. package/dist/collection/components/thumbnail/thumbnail.js +1 -1
  383. package/dist/collection/components/title/title.js +18 -2
  384. package/dist/collection/components/toast/toast.js +223 -106
  385. package/dist/collection/components/toggle/toggle.js +167 -115
  386. package/dist/collection/components/toolbar/toolbar.js +15 -7
  387. package/dist/collection/global/config.js +4 -6
  388. package/dist/collection/global/ionic-global.js +8 -2
  389. package/dist/collection/index.js +1 -1
  390. package/dist/collection/utils/animation/animation.js +3 -3
  391. package/dist/collection/utils/config.js +5 -4
  392. package/dist/collection/utils/focus-controller/index.js +1 -1
  393. package/dist/collection/utils/focus-trap.js +3 -3
  394. package/dist/collection/utils/framework-delegate.js +4 -6
  395. package/dist/collection/utils/gesture/gesture-controller.js +15 -8
  396. package/dist/collection/utils/gesture/index.js +10 -2
  397. package/dist/collection/utils/gesture/listener.js +1 -1
  398. package/dist/collection/utils/hardware-back-button.js +3 -3
  399. package/dist/collection/utils/helpers.js +2 -2
  400. package/dist/collection/utils/input-shims/hacks/scroll-assist.js +4 -5
  401. package/dist/collection/utils/input-shims/hacks/scroll-data.js +1 -2
  402. package/dist/collection/utils/keyboard/keyboard-controller.js +5 -5
  403. package/dist/collection/utils/keyboard/keyboard.js +1 -1
  404. package/dist/collection/utils/logging/index.js +23 -4
  405. package/dist/collection/utils/menu-controller/index.js +1 -2
  406. package/dist/collection/utils/native/haptic.js +2 -3
  407. package/dist/collection/utils/native/keyboard.js +2 -2
  408. package/dist/collection/utils/native/status-bar.js +1 -1
  409. package/dist/collection/utils/overlay-control-label.js +45 -0
  410. package/dist/collection/utils/overlays.js +38 -23
  411. package/dist/collection/utils/platform.js +4 -5
  412. package/dist/collection/utils/rtl/dir.js +1 -1
  413. package/dist/collection/utils/sanitization/index.js +276 -20
  414. package/dist/collection/utils/select-option-render.js +118 -0
  415. package/dist/collection/utils/slot-mutation-controller.js +1 -2
  416. package/dist/collection/utils/test/playwright/apply-keyboard-focus.js +1 -1
  417. package/dist/collection/utils/test/playwright/drag-element.js +2 -3
  418. package/dist/collection/utils/test/playwright/generator.js +3 -4
  419. package/dist/collection/utils/test/playwright/page/event-spy.js +11 -12
  420. package/dist/collection/utils/test/playwright/page/utils/goto.js +4 -5
  421. package/dist/collection/utils/test/playwright/page/utils/set-content.js +1 -1
  422. package/dist/collection/utils/test/playwright/page/utils/set-ion-viewport.js +2 -3
  423. package/dist/collection/utils/test/press-keys.js +10 -17
  424. package/dist/collection/utils/theme.js +6 -1
  425. package/dist/collection/utils/transition/ios.transition.js +9 -13
  426. package/dist/collection/utils/transition/md.transition.js +3 -4
  427. package/dist/docs.json +557 -1273
  428. package/dist/esm/{animation-DLJpuoEz.js → animation-CGFdmGk9.js} +4 -4
  429. package/dist/esm/{app-globals-D0C5S4hU.js → app-globals-CYmMeGdU.js} +1 -1
  430. package/dist/esm/{button-active-BSpTQmS9.js → button-active--80YqSHA.js} +3 -3
  431. package/dist/esm/config-DWCzVL3Y.js +32 -0
  432. package/dist/esm/{dir-C53feagD.js → dir-B-FxiyeI.js} +1 -1
  433. package/dist/esm/{format-CAmvpAez.js → format-Dcwga61t.js} +41 -31
  434. package/dist/esm/{framework-delegate-FnPGymXL.js → framework-delegate--ajhSeKH.js} +5 -7
  435. package/dist/esm/{gesture-controller-BTEOs1at.js → gesture-controller-TXPDHL13.js} +15 -8
  436. package/dist/esm/{haptic-DzAMWJuk.js → haptic-Cq4UAeka.js} +2 -3
  437. package/dist/esm/{hardware-back-button-B93Gru0Y.js → hardware-back-button-gLJHMX_F.js} +4 -4
  438. package/dist/esm/{helpers-HEqiOzXb.js → helpers-DexiPLIC.js} +3 -3
  439. package/dist/esm/{index-B_dQk_WE.js → index-8s8kZKJ7.js} +5 -5
  440. package/dist/esm/{index-BRHzoo00.js → index-BCgUwrV0.js} +2 -2
  441. package/dist/esm/{index-DV3sJJW8.js → index-BvabGprD.js} +2 -2
  442. package/dist/esm/index-CKM1DdGm.js +424 -0
  443. package/dist/esm/{index-tcQvqkiX.js → index-ChhhtsGZ.js} +32 -15
  444. package/dist/esm/{index-Q6UPU0Ay.js → index-CumkqGQF.js} +6 -7
  445. package/dist/esm/{index-CfgBF1SE.js → index-DppOcPFQ.js} +10 -4
  446. package/dist/esm/{index-Dw-wN0Ja.js → index-_Za5VB9w.js} +2 -2
  447. package/dist/esm/index.js +16 -15
  448. package/dist/esm/{input-shims-LXhI7LEx.js → input-shims-BB0AKb_k.js} +9 -11
  449. package/dist/esm/{input.utils-Y6NgW8bw.js → input.utils-J6HWocLA.js} +3 -4
  450. package/dist/esm/ion-accordion_2.entry.js +368 -340
  451. package/dist/esm/ion-action-sheet.entry.js +187 -76
  452. package/dist/esm/ion-alert.entry.js +272 -110
  453. package/dist/esm/ion-app_8.entry.js +307 -190
  454. package/dist/esm/ion-avatar_3.entry.js +10 -4
  455. package/dist/esm/ion-back-button.entry.js +47 -23
  456. package/dist/esm/ion-backdrop.entry.js +18 -14
  457. package/dist/esm/ion-breadcrumb_2.entry.js +199 -121
  458. package/dist/esm/ion-button_2.entry.js +138 -66
  459. package/dist/esm/ion-card_5.entry.js +82 -30
  460. package/dist/esm/ion-checkbox.entry.js +152 -101
  461. package/dist/esm/ion-chip.entry.js +17 -11
  462. package/dist/esm/ion-col_3.entry.js +134 -10
  463. package/dist/esm/ion-datetime-button.entry.js +253 -241
  464. package/dist/esm/ion-datetime.entry.js +2768 -0
  465. package/dist/esm/ion-fab_3.entry.js +139 -81
  466. package/dist/esm/ion-img.entry.js +34 -12
  467. package/dist/esm/ion-infinite-scroll_2.entry.js +99 -71
  468. package/dist/esm/ion-input-otp.entry.js +433 -370
  469. package/dist/esm/ion-input-password-toggle.entry.js +33 -19
  470. package/dist/esm/ion-input.entry.js +314 -168
  471. package/dist/esm/ion-item-option_3.entry.js +91 -51
  472. package/dist/esm/ion-item_8.entry.js +181 -82
  473. package/dist/esm/ion-loading.entry.js +145 -59
  474. package/dist/esm/ion-menu_3.entry.js +163 -101
  475. package/dist/esm/ion-modal.entry.js +455 -261
  476. package/dist/esm/ion-nav_2.entry.js +100 -157
  477. package/dist/esm/ion-picker-column-option.entry.js +37 -33
  478. package/dist/esm/ion-picker-column.entry.js +417 -405
  479. package/dist/esm/ion-picker.entry.js +401 -392
  480. package/dist/esm/ion-popover.entry.js +319 -205
  481. package/dist/esm/ion-progress-bar.entry.js +31 -25
  482. package/dist/esm/ion-radio_2.entry.js +206 -133
  483. package/dist/esm/ion-range.entry.js +302 -237
  484. package/dist/esm/ion-refresher_2.entry.js +163 -91
  485. package/dist/esm/ion-reorder_2.entry.js +53 -23
  486. package/dist/esm/ion-ripple-effect.entry.js +14 -14
  487. package/dist/esm/ion-route_4.entry.js +175 -71
  488. package/dist/esm/ion-searchbar.entry.js +291 -200
  489. package/dist/esm/ion-segment-content.entry.js +2 -2
  490. package/dist/esm/ion-segment-view.entry.js +28 -17
  491. package/dist/esm/ion-segment_2.entry.js +169 -126
  492. package/dist/esm/ion-select-modal.entry.js +104 -48
  493. package/dist/esm/ion-select_3.entry.js +760 -215
  494. package/dist/esm/ion-spinner.entry.js +24 -10
  495. package/dist/esm/ion-split-pane.entry.js +29 -16
  496. package/dist/esm/ion-tab-bar_2.entry.js +100 -41
  497. package/dist/esm/ion-tab_2.entry.js +53 -27
  498. package/dist/esm/ion-text.entry.js +11 -5
  499. package/dist/esm/ion-textarea.entry.js +263 -144
  500. package/dist/esm/ion-toast.entry.js +235 -116
  501. package/dist/esm/ion-toggle.entry.js +175 -122
  502. package/dist/esm/{ionic-global-Cp_eT4sZ.js → ionic-global-BVB7BrLT.js} +13 -8
  503. package/dist/esm/ionic.js +5 -5
  504. package/dist/esm/{ios.transition-ClFrsIrS.js → ios.transition-BdhybwLl.js} +13 -17
  505. package/dist/esm/{item-multiple-inputs-DlNuqNJm.js → item-multiple-inputs-rU8VaNNg.js} +1 -1
  506. package/dist/esm/{keyboard-ywgs5efA.js → keyboard-Cj8mLJeq.js} +2 -2
  507. package/dist/esm/{keyboard-CUw4ekVy.js → keyboard-DAF8GNJ9.js} +2 -2
  508. package/dist/esm/{keyboard-controller-BaaVITYt.js → keyboard-controller-DEwoa1ev.js} +6 -6
  509. package/dist/esm/loader.js +5 -5
  510. package/dist/esm/{md.transition-D0msQmzI.js → md.transition-B5lqKGCs.js} +7 -8
  511. package/dist/esm/{notch-controller-DKDjU_O7.js → notch-controller-CrUGyHYz.js} +1 -1
  512. package/dist/esm/overlay-control-label-BSQPZ79H.js +47 -0
  513. package/dist/esm/{overlays-Dg0q2_tJ.js → overlays-CjWwtvf1.js} +48 -33
  514. package/dist/esm/select-option-render-C4m76VGH.js +121 -0
  515. package/dist/esm/{status-tap-vO-6s4Yp.js → status-tap-DpLhkDWs.js} +3 -3
  516. package/dist/esm/{swipe-back-DQ1q5MgD.js → swipe-back-cz4-lyG3.js} +5 -5
  517. package/dist/esm/{theme-DiVJyqlX.js → theme-byZM6qHV.js} +6 -1
  518. package/dist/html.html-data.json +52 -80
  519. package/dist/ionic/index.esm.js +1 -1
  520. package/dist/ionic/ionic.esm.js +1 -1
  521. package/dist/ionic/p-0266b7e1.entry.js +4 -0
  522. package/dist/ionic/p-08443c08.entry.js +4 -0
  523. package/dist/ionic/p-08f1ed1c.entry.js +4 -0
  524. package/dist/ionic/p-09b47b7d.entry.js +4 -0
  525. package/dist/ionic/p-0FNc80PN.js +4 -0
  526. package/dist/ionic/p-12589d59.entry.js +4 -0
  527. package/dist/ionic/p-1d2e53e8.entry.js +4 -0
  528. package/dist/ionic/p-1edf0573.entry.js +4 -0
  529. package/dist/ionic/p-214e000a.entry.js +4 -0
  530. package/dist/ionic/p-21a7fb2a.entry.js +4 -0
  531. package/dist/ionic/p-2ce59395.entry.js +4 -0
  532. package/dist/ionic/p-33829e94.entry.js +4 -0
  533. package/dist/ionic/p-374b10cb.entry.js +4 -0
  534. package/dist/ionic/p-3835a020.entry.js +4 -0
  535. package/dist/ionic/p-3c5fdd27.entry.js +4 -0
  536. package/dist/ionic/{p-c6e49f3f.entry.js → p-40424a88.entry.js} +1 -1
  537. package/dist/ionic/p-48b6835f.entry.js +4 -0
  538. package/dist/ionic/p-4eOQC00Z.js +4 -0
  539. package/dist/ionic/p-5394e1d4.entry.js +4 -0
  540. package/dist/ionic/p-53bac1c9.entry.js +4 -0
  541. package/dist/ionic/p-5506caeb.entry.js +4 -0
  542. package/dist/ionic/p-5993a77f.entry.js +4 -0
  543. package/dist/ionic/p-6277efba.entry.js +4 -0
  544. package/dist/ionic/p-62e71297.entry.js +4 -0
  545. package/dist/ionic/p-6b286c5c.entry.js +4 -0
  546. package/dist/ionic/p-7116e558.entry.js +4 -0
  547. package/dist/ionic/p-74f30659.entry.js +4 -0
  548. package/dist/ionic/p-7bb3e957.entry.js +4 -0
  549. package/dist/ionic/p-82525fb0.entry.js +4 -0
  550. package/dist/ionic/p-865fa114.entry.js +4 -0
  551. package/dist/ionic/p-8a21bdbd.entry.js +4 -0
  552. package/dist/ionic/p-8e1d9e3a.entry.js +4 -0
  553. package/dist/ionic/p-8f3a1995.entry.js +4 -0
  554. package/dist/ionic/p-91c6faf1.entry.js +4 -0
  555. package/dist/ionic/{p-aaeedb6b.entry.js → p-9b865fe6.entry.js} +1 -1
  556. package/dist/ionic/p-9nmHvEvw.js +4 -0
  557. package/dist/ionic/p-B-FxiyeI.js +4 -0
  558. package/dist/ionic/p-BB0LlG4y.js +4 -0
  559. package/dist/ionic/p-BMPN55of.js +4 -0
  560. package/dist/ionic/p-BQ8oNV0v.js +4 -0
  561. package/dist/ionic/p-BSQPZ79H.js +4 -0
  562. package/dist/ionic/p-BhamHSw3.js +4 -0
  563. package/dist/ionic/p-BjvtSsVI.js +4 -0
  564. package/dist/ionic/p-BkfAWuv6.js +4 -0
  565. package/dist/ionic/p-BnMQxWON.js +4 -0
  566. package/dist/ionic/{p-DV3sJJW8.js → p-BvabGprD.js} +1 -1
  567. package/dist/ionic/p-BwIp10KV.js +4 -0
  568. package/dist/ionic/p-C-94tAim.js +4 -0
  569. package/dist/ionic/p-C6eME8Ey.js +4 -0
  570. package/dist/ionic/{p-DIuEbVLu.js → p-CKUuSnDR.js} +1 -1
  571. package/dist/ionic/p-CMRtMbJc.js +4 -0
  572. package/dist/ionic/p-CPcPmkGv.js +4 -0
  573. package/dist/ionic/{p-biz8zWmJ.js → p-CQ_4TirR.js} +1 -1
  574. package/dist/ionic/p-CaRuIadB.js +4 -0
  575. package/dist/ionic/p-Cdjxf_yg.js +4 -0
  576. package/dist/ionic/p-ChhhtsGZ.js +5 -0
  577. package/dist/ionic/p-CmKf4pgI.js +4 -0
  578. package/dist/ionic/p-D5t_-oMk.js +4 -0
  579. package/dist/ionic/p-D94b61er.js +4 -0
  580. package/dist/ionic/p-DCI3rXQo.js +4 -0
  581. package/dist/ionic/p-DDhtUaaA.js +4 -0
  582. package/dist/ionic/p-DWCzVL3Y.js +4 -0
  583. package/dist/ionic/p-Dn0mqQ_R.js +4 -0
  584. package/dist/ionic/{p-KjNvRoEp.js → p-I3In7hMC.js} +1 -1
  585. package/dist/ionic/p-T71k3C35.js +4 -0
  586. package/dist/ionic/p-TXPDHL13.js +4 -0
  587. package/dist/ionic/p-a641d428.entry.js +4 -0
  588. package/dist/ionic/p-ac6ef997.entry.js +4 -0
  589. package/dist/ionic/p-acf0a6af.entry.js +4 -0
  590. package/dist/ionic/p-ad98e3ff.entry.js +4 -0
  591. package/dist/ionic/p-af5166f5.entry.js +4 -0
  592. package/dist/ionic/p-b24dc0a1.entry.js +4 -0
  593. package/dist/ionic/p-ba8a598f.entry.js +4 -0
  594. package/dist/ionic/p-bf7c1f05.entry.js +4 -0
  595. package/dist/ionic/p-byZM6qHV.js +4 -0
  596. package/dist/ionic/p-c3f65965.entry.js +4 -0
  597. package/dist/ionic/p-c8fbe544.entry.js +4 -0
  598. package/dist/ionic/p-cb12f6c3.entry.js +4 -0
  599. package/dist/ionic/p-cec87704.entry.js +4 -0
  600. package/dist/ionic/p-dbfd2d52.entry.js +4 -0
  601. package/dist/ionic/p-e1e5b507.entry.js +4 -0
  602. package/dist/ionic/p-ede019ef.entry.js +4 -0
  603. package/dist/ionic/p-efef6788.entry.js +4 -0
  604. package/dist/ionic/p-f046aa37.entry.js +4 -0
  605. package/dist/ionic/p-f402f5a4.entry.js +4 -0
  606. package/dist/ionic/p-f622796d.entry.js +4 -0
  607. package/{components/p-B-JJgYSG.js → dist/ionic/p-kJA95YWg.js} +1 -1
  608. package/dist/types/components/img/img.d.ts +2 -0
  609. package/dist/types/components/input/input.d.ts +1 -1
  610. package/dist/types/components/modal/modal-interface.d.ts +9 -0
  611. package/dist/types/components/modal/modal.d.ts +11 -4
  612. package/dist/types/components/nav/nav-interface.d.ts +0 -1
  613. package/dist/types/components/nav/nav.d.ts +2 -22
  614. package/dist/types/components/route/route.d.ts +1 -1
  615. package/dist/types/components/router-outlet/router-outlet.d.ts +7 -0
  616. package/dist/types/components/searchbar/searchbar.d.ts +1 -1
  617. package/dist/types/components/select/select-interface.d.ts +31 -0
  618. package/dist/types/components/select/select.d.ts +18 -0
  619. package/dist/types/components/select-option/select-option.d.ts +42 -1
  620. package/dist/types/components.d.ts +74 -311
  621. package/dist/types/index.d.ts +1 -1
  622. package/dist/types/interface.d.ts +0 -1
  623. package/dist/types/utils/config.d.ts +1 -8
  624. package/dist/types/utils/logging/index.d.ts +2 -1
  625. package/dist/types/utils/overlay-control-label.d.ts +32 -0
  626. package/dist/types/utils/overlays.d.ts +11 -9
  627. package/dist/types/utils/sanitization/index.d.ts +58 -2
  628. package/dist/types/utils/select-option-render.d.ts +53 -0
  629. package/dist/types/utils/test/playwright/playwright-page.d.ts +1 -1
  630. package/dist/types/utils/test/playwright/testExpect.d.ts +1 -1
  631. package/hydrate/index.js +10343 -7070
  632. package/hydrate/index.mjs +10343 -7070
  633. package/package.json +55 -12
  634. package/components/ion-picker-legacy-column.d.ts +0 -11
  635. package/components/ion-picker-legacy-column.js +0 -4
  636. package/components/ion-picker-legacy.d.ts +0 -11
  637. package/components/ion-picker-legacy.js +0 -4
  638. package/components/p-A3O24YmY.js +0 -4
  639. package/components/p-ABkNVeU9.js +0 -4
  640. package/components/p-B9jFTlwE.js +0 -4
  641. package/components/p-BLmJ0zRm.js +0 -4
  642. package/components/p-BMI53wYL.js +0 -4
  643. package/components/p-BSEgsdFI.js +0 -4
  644. package/components/p-BTEOs1at.js +0 -4
  645. package/components/p-BlIAuGv2.js +0 -4
  646. package/components/p-Bnsn6KaP.js +0 -4
  647. package/components/p-BsBCoGa-.js +0 -4
  648. package/components/p-Bz0dSlXZ.js +0 -4
  649. package/components/p-C53feagD.js +0 -4
  650. package/components/p-CHqRYvYm.js +0 -4
  651. package/components/p-CQGnMY3n.js +0 -4
  652. package/components/p-CSZf8_j0.js +0 -4
  653. package/components/p-C_xFdyXe.js +0 -4
  654. package/components/p-Cf2jSDS8.js +0 -4
  655. package/components/p-Cfx4M1Bn.js +0 -4
  656. package/components/p-CkMSOsFF.js +0 -4
  657. package/components/p-Cl0B-RWe.js +0 -4
  658. package/components/p-CmR5uXej.js +0 -4
  659. package/components/p-Cp4GRDqq.js +0 -4
  660. package/components/p-CsNJ1ULL.js +0 -4
  661. package/components/p-CtWGkNnJ.js +0 -4
  662. package/components/p-CzCbeKys.js +0 -4
  663. package/components/p-D-aHdMxW.js +0 -4
  664. package/components/p-D0d8qTwj.js +0 -4
  665. package/components/p-D13Eaw-8.js +0 -4
  666. package/components/p-D6Ynv7Xh.js +0 -4
  667. package/components/p-DCnGU1fF.js +0 -4
  668. package/components/p-DGvrK8dD.js +0 -4
  669. package/components/p-DOFCbuQR.js +0 -4
  670. package/components/p-DRxvM2Ic.js +0 -4
  671. package/components/p-DV5mPYQS.js +0 -4
  672. package/components/p-DWkAgceV.js +0 -4
  673. package/components/p-DiVJyqlX.js +0 -4
  674. package/components/p-DqZAXv2t.js +0 -4
  675. package/components/p-Osve4qkc.js +0 -4
  676. package/components/p-R8zmRi4c.js +0 -4
  677. package/components/p-SLS1rDZM.js +0 -4
  678. package/components/p-aJ6PBUvj.js +0 -4
  679. package/components/p-cyNmxje6.js +0 -4
  680. package/components/p-gAg0kXZp.js +0 -4
  681. package/components/p-gYiraiT_.js +0 -4
  682. package/components/p-j5IxBIan.js +0 -4
  683. package/components/p-k_E4tX5Z.js +0 -4
  684. package/components/p-oD4kcBRX.js +0 -4
  685. package/components/p-rCa2eL0j.js +0 -4
  686. package/components/p-vRBNsYbs.js +0 -4
  687. package/components/p-yEQxMl70.js +0 -4
  688. package/components/p-yzCsOZE2.js +0 -4
  689. package/dist/cjs/config-D6C-KlA9.js +0 -201
  690. package/dist/cjs/ion-datetime_3.cjs.entry.js +0 -3167
  691. package/dist/collection/components/picker-legacy/animations/ios.enter.js +0 -27
  692. package/dist/collection/components/picker-legacy/animations/ios.leave.js +0 -23
  693. package/dist/collection/components/picker-legacy/picker-interface.js +0 -1
  694. package/dist/collection/components/picker-legacy/picker.ios.css +0 -300
  695. package/dist/collection/components/picker-legacy/picker.js +0 -890
  696. package/dist/collection/components/picker-legacy/picker.md.css +0 -287
  697. package/dist/collection/components/picker-legacy-column/picker-column.ios.css +0 -231
  698. package/dist/collection/components/picker-legacy-column/picker-column.js +0 -422
  699. package/dist/collection/components/picker-legacy-column/picker-column.md.css +0 -222
  700. package/dist/collection/components/picker-legacy-column/test/test.utils.js +0 -43
  701. package/dist/esm/config-DQCONYYp.js +0 -195
  702. package/dist/esm/ion-datetime_3.entry.js +0 -3163
  703. package/dist/ionic/p-01f81ea5.entry.js +0 -4
  704. package/dist/ionic/p-06c232a4.entry.js +0 -4
  705. package/dist/ionic/p-0caa922c.entry.js +0 -4
  706. package/dist/ionic/p-0dc33652.entry.js +0 -4
  707. package/dist/ionic/p-0fa9c382.entry.js +0 -4
  708. package/dist/ionic/p-10e833ef.entry.js +0 -4
  709. package/dist/ionic/p-21eb76d5.entry.js +0 -4
  710. package/dist/ionic/p-27d30585.entry.js +0 -4
  711. package/dist/ionic/p-2a05aa64.entry.js +0 -4
  712. package/dist/ionic/p-2b204c59.entry.js +0 -4
  713. package/dist/ionic/p-2bb2cb18.entry.js +0 -4
  714. package/dist/ionic/p-2fa58e80.entry.js +0 -4
  715. package/dist/ionic/p-3353c229.entry.js +0 -4
  716. package/dist/ionic/p-34586ead.entry.js +0 -4
  717. package/dist/ionic/p-37e720da.entry.js +0 -4
  718. package/dist/ionic/p-390ca786.entry.js +0 -4
  719. package/dist/ionic/p-3ae5f277.entry.js +0 -4
  720. package/dist/ionic/p-4654ae1c.entry.js +0 -4
  721. package/dist/ionic/p-4745f534.entry.js +0 -4
  722. package/dist/ionic/p-4858af1f.entry.js +0 -4
  723. package/dist/ionic/p-4baa5b82.entry.js +0 -4
  724. package/dist/ionic/p-4e92a11f.entry.js +0 -4
  725. package/dist/ionic/p-50e1194a.entry.js +0 -4
  726. package/dist/ionic/p-5334df12.entry.js +0 -4
  727. package/dist/ionic/p-5d1da0a2.entry.js +0 -4
  728. package/dist/ionic/p-5e2f73ee.entry.js +0 -4
  729. package/dist/ionic/p-5eb8e86d.entry.js +0 -4
  730. package/dist/ionic/p-65ebdf1b.entry.js +0 -4
  731. package/dist/ionic/p-746fa988.entry.js +0 -4
  732. package/dist/ionic/p-75dc25ba.entry.js +0 -4
  733. package/dist/ionic/p-7c319341.entry.js +0 -4
  734. package/dist/ionic/p-829367ed.entry.js +0 -4
  735. package/dist/ionic/p-84d5ce05.entry.js +0 -4
  736. package/dist/ionic/p-874b4bd8.entry.js +0 -4
  737. package/dist/ionic/p-8eb8ee76.entry.js +0 -4
  738. package/dist/ionic/p-9eeaBrnk.js +0 -4
  739. package/dist/ionic/p-9f9db3a2.entry.js +0 -4
  740. package/dist/ionic/p-9fa3c405.entry.js +0 -4
  741. package/dist/ionic/p-BGqMS-oh.js +0 -4
  742. package/dist/ionic/p-BTEOs1at.js +0 -4
  743. package/dist/ionic/p-BUFIpxKM.js +0 -4
  744. package/dist/ionic/p-C0eMdTCW.js +0 -4
  745. package/dist/ionic/p-C53feagD.js +0 -4
  746. package/dist/ionic/p-CFlfIb2g.js +0 -4
  747. package/dist/ionic/p-CKvCXMs9.js +0 -4
  748. package/dist/ionic/p-Cl0B-RWe.js +0 -4
  749. package/dist/ionic/p-CmcFnK-B.js +0 -4
  750. package/dist/ionic/p-CtWGkNnJ.js +0 -4
  751. package/dist/ionic/p-Cx3IXROA.js +0 -4
  752. package/dist/ionic/p-D-3ycHmd.js +0 -4
  753. package/dist/ionic/p-D13Eaw-8.js +0 -4
  754. package/dist/ionic/p-D4uTWt4-.js +0 -4
  755. package/dist/ionic/p-DiVJyqlX.js +0 -4
  756. package/dist/ionic/p-DoJvtrbw.js +0 -4
  757. package/dist/ionic/p-DqN5EA2O.js +0 -4
  758. package/dist/ionic/p-DzWaWHGc.js +0 -4
  759. package/dist/ionic/p-Nqf6uvGh.js +0 -4
  760. package/dist/ionic/p-SNAkTDfm.js +0 -4
  761. package/dist/ionic/p-VAemlbDS.js +0 -4
  762. package/dist/ionic/p-a3bdcae6.entry.js +0 -4
  763. package/dist/ionic/p-af55a72f.entry.js +0 -4
  764. package/dist/ionic/p-b2020591.entry.js +0 -4
  765. package/dist/ionic/p-b9fadbfe.entry.js +0 -4
  766. package/dist/ionic/p-c0fb8edd.entry.js +0 -4
  767. package/dist/ionic/p-c38b648e.entry.js +0 -4
  768. package/dist/ionic/p-c4d8641b.entry.js +0 -4
  769. package/dist/ionic/p-ca2ab74d.entry.js +0 -4
  770. package/dist/ionic/p-d889ff6d.entry.js +0 -4
  771. package/dist/ionic/p-dfa8d673.entry.js +0 -4
  772. package/dist/ionic/p-ea56626d.entry.js +0 -4
  773. package/dist/ionic/p-ef4c3bee.entry.js +0 -4
  774. package/dist/ionic/p-f386f6ae.entry.js +0 -4
  775. package/dist/ionic/p-mjKAFv89.js +0 -4
  776. package/dist/ionic/p-tcQvqkiX.js +0 -5
  777. package/dist/ionic/p-uWtqTrG8.js +0 -4
  778. package/dist/ionic/p-viFHDgRs.js +0 -4
  779. package/dist/ionic/p-xWb6fgfq.js +0 -4
  780. package/dist/types/components/picker-legacy/animations/ios.enter.d.ts +0 -5
  781. package/dist/types/components/picker-legacy/animations/ios.leave.d.ts +0 -5
  782. package/dist/types/components/picker-legacy/picker-interface.d.ts +0 -52
  783. package/dist/types/components/picker-legacy/picker.d.ts +0 -158
  784. package/dist/types/components/picker-legacy-column/picker-column.d.ts +0 -46
  785. package/dist/types/components/picker-legacy-column/test/test.utils.d.ts +0 -9
  786. /package/components/{p-CO7fmmxt.js → p-LpMHEu3v.js} +0 -0
@@ -20,330 +20,93 @@ import { getIonMode } from "../../global/ionic-global";
20
20
  * with the `header` and `content` parts (i.e. `::part(header expanded)`).
21
21
  */
22
22
  export class Accordion {
23
- constructor() {
24
- this.accordionGroupUpdateHandler = () => {
25
- /**
26
- * Determine if this update will cause an actual state change.
27
- * We only want to mark as "interacted" if the state is changing.
28
- */
29
- const accordionGroup = this.accordionGroupEl;
30
- if (accordionGroup) {
31
- const value = accordionGroup.value;
32
- const accordionValue = this.value;
33
- const shouldExpand = Array.isArray(value) ? value.includes(accordionValue) : value === accordionValue;
34
- const isExpanded = this.state === 4 /* AccordionState.Expanded */ || this.state === 8 /* AccordionState.Expanding */;
35
- const stateWillChange = shouldExpand !== isExpanded;
36
- /**
37
- * Only mark as interacted if:
38
- * 1. This is not the first update we've received with a defined value
39
- * 2. The state is actually changing (prevents redundant updates from enabling animations)
40
- */
41
- if (this.hasReceivedFirstUpdate && stateWillChange) {
42
- this.hasInteracted = true;
43
- }
44
- /**
45
- * Only count this as the first update if the group value is defined.
46
- * This prevents the initial undefined value from the group's componentDidLoad
47
- * from being treated as the first real update.
48
- */
49
- if (value !== undefined) {
50
- this.hasReceivedFirstUpdate = true;
51
- }
52
- }
53
- this.updateState();
54
- };
55
- this.state = 1 /* AccordionState.Collapsed */;
56
- this.isNext = false;
57
- this.isPrevious = false;
58
- /**
59
- * Tracks whether a user-initiated interaction has occurred.
60
- * Animations are disabled until the first interaction happens.
61
- * This prevents the accordion from animating when it's programmatically
62
- * set to an expanded or collapsed state on initial load.
63
- */
64
- this.hasInteracted = false;
65
- /**
66
- * Tracks if this accordion has ever been expanded.
67
- * Used to prevent the first expansion from animating.
68
- */
69
- this.hasEverBeenExpanded = false;
70
- /**
71
- * Tracks if this accordion has received its first update from the group.
72
- * Used to distinguish initial programmatic sets from user interactions.
73
- */
74
- this.hasReceivedFirstUpdate = false;
23
+ accordionGroupEl;
24
+ accordionGroupUpdateHandler = () => {
75
25
  /**
76
- * The value of the accordion. Defaults to an autogenerated
77
- * value.
26
+ * Determine if this update will cause an actual state change.
27
+ * We only want to mark as "interacted" if the state is changing.
78
28
  */
79
- this.value = `ion-accordion-${accordionIds++}`;
80
- /**
81
- * If `true`, the accordion cannot be interacted with.
82
- */
83
- this.disabled = false;
84
- /**
85
- * If `true`, the accordion cannot be interacted with,
86
- * but does not alter the opacity.
87
- */
88
- this.readonly = false;
89
- /**
90
- * The toggle icon to use. This icon will be
91
- * rotated when the accordion is expanded
92
- * or collapsed.
93
- */
94
- this.toggleIcon = chevronDown;
95
- /**
96
- * The slot inside of `ion-item` to
97
- * place the toggle icon. Defaults to `"end"`.
98
- */
99
- this.toggleIconSlot = 'end';
100
- this.setItemDefaults = () => {
101
- const ionItem = this.getSlottedHeaderIonItem();
102
- if (!ionItem) {
103
- return;
104
- }
105
- /**
106
- * For a11y purposes, we make
107
- * the ion-item a button so users
108
- * can tab to it and use keyboard
109
- * navigation to get around.
110
- */
111
- ionItem.button = true;
112
- ionItem.detail = false;
113
- /**
114
- * By default, the lines in an
115
- * item should be full here, but
116
- * only do that if a user has
117
- * not explicitly overridden them
118
- */
119
- if (ionItem.lines === undefined) {
120
- ionItem.lines = 'full';
121
- }
122
- };
123
- this.getSlottedHeaderIonItem = () => {
124
- const { headerEl } = this;
125
- if (!headerEl) {
126
- return;
127
- }
128
- /**
129
- * Get the first ion-item
130
- * slotted in the header slot
131
- */
132
- const slot = headerEl.querySelector('slot');
133
- if (!slot) {
134
- return;
135
- }
136
- // This is not defined in unit tests
137
- if (slot.assignedElements === undefined)
138
- return;
139
- return slot.assignedElements().find((el) => el.tagName === 'ION-ITEM');
140
- };
141
- this.setAria = (expanded = false) => {
142
- const ionItem = this.getSlottedHeaderIonItem();
143
- if (!ionItem) {
144
- return;
145
- }
146
- /**
147
- * Get the native <button> element inside of
148
- * ion-item because that is what will be focused
149
- */
150
- const root = getElementRoot(ionItem);
151
- const button = root.querySelector('button');
152
- if (!button) {
153
- return;
154
- }
155
- button.setAttribute('aria-expanded', `${expanded}`);
156
- };
157
- this.slotToggleIcon = () => {
158
- const ionItem = this.getSlottedHeaderIonItem();
159
- if (!ionItem) {
160
- return;
161
- }
162
- const { toggleIconSlot, toggleIcon } = this;
163
- /**
164
- * Check if there already is a toggle icon.
165
- * If so, do not add another one.
166
- */
167
- const existingToggleIcon = ionItem.querySelector('.ion-accordion-toggle-icon');
168
- if (existingToggleIcon) {
169
- return;
170
- }
171
- const iconEl = document.createElement('ion-icon');
172
- iconEl.slot = toggleIconSlot;
173
- iconEl.lazy = false;
174
- iconEl.classList.add('ion-accordion-toggle-icon');
175
- iconEl.icon = toggleIcon;
176
- iconEl.setAttribute('aria-hidden', 'true');
177
- ionItem.appendChild(iconEl);
178
- };
179
- this.expandAccordion = () => {
180
- const { contentEl, contentElWrapper } = this;
181
- /**
182
- * If the content elements aren't available yet, just set the state.
183
- * This happens on initial render before the DOM is ready.
184
- */
185
- if (contentEl === undefined || contentElWrapper === undefined) {
186
- this.state = 4 /* AccordionState.Expanded */;
187
- this.hasEverBeenExpanded = true;
188
- return;
189
- }
190
- if (this.state === 4 /* AccordionState.Expanded */) {
191
- return;
192
- }
193
- if (this.currentRaf !== undefined) {
194
- cancelAnimationFrame(this.currentRaf);
195
- }
196
- /**
197
- * Mark that this accordion has been expanded at least once.
198
- * This allows subsequent expansions to animate.
199
- */
200
- this.hasEverBeenExpanded = true;
201
- if (this.shouldAnimate()) {
202
- raf(() => {
203
- this.state = 8 /* AccordionState.Expanding */;
204
- this.currentRaf = raf(async () => {
205
- const contentHeight = contentElWrapper.offsetHeight;
206
- const waitForTransition = transitionEndAsync(contentEl, 2000);
207
- contentEl.style.setProperty('max-height', `${contentHeight}px`);
208
- await waitForTransition;
209
- this.state = 4 /* AccordionState.Expanded */;
210
- contentEl.style.removeProperty('max-height');
211
- });
212
- });
213
- }
214
- else {
215
- this.state = 4 /* AccordionState.Expanded */;
216
- }
217
- };
218
- this.collapseAccordion = () => {
219
- const { contentEl } = this;
29
+ const accordionGroup = this.accordionGroupEl;
30
+ if (accordionGroup) {
31
+ const value = accordionGroup.value;
32
+ const accordionValue = this.value;
33
+ const shouldExpand = Array.isArray(value) ? value.includes(accordionValue) : value === accordionValue;
34
+ const isExpanded = this.state === 4 /* AccordionState.Expanded */ || this.state === 8 /* AccordionState.Expanding */;
35
+ const stateWillChange = shouldExpand !== isExpanded;
220
36
  /**
221
- * If the content element isn't available yet, just set the state.
222
- * This happens on initial render before the DOM is ready.
37
+ * Only mark as interacted if:
38
+ * 1. This is not the first update we've received with a defined value
39
+ * 2. The state is actually changing (prevents redundant updates from enabling animations)
223
40
  */
224
- if (contentEl === undefined) {
225
- this.state = 1 /* AccordionState.Collapsed */;
226
- return;
227
- }
228
- if (this.state === 1 /* AccordionState.Collapsed */) {
229
- return;
230
- }
231
- if (this.currentRaf !== undefined) {
232
- cancelAnimationFrame(this.currentRaf);
233
- }
234
- if (this.shouldAnimate()) {
235
- this.currentRaf = raf(async () => {
236
- const contentHeight = contentEl.offsetHeight;
237
- contentEl.style.setProperty('max-height', `${contentHeight}px`);
238
- raf(async () => {
239
- const waitForTransition = transitionEndAsync(contentEl, 2000);
240
- this.state = 2 /* AccordionState.Collapsing */;
241
- await waitForTransition;
242
- this.state = 1 /* AccordionState.Collapsed */;
243
- contentEl.style.removeProperty('max-height');
244
- });
245
- });
246
- }
247
- else {
248
- this.state = 1 /* AccordionState.Collapsed */;
41
+ if (this.hasReceivedFirstUpdate && stateWillChange) {
42
+ this.hasInteracted = true;
249
43
  }
250
- };
251
- /**
252
- * Helper function to determine if
253
- * something should animate.
254
- * If prefers-reduced-motion is set
255
- * then we should not animate, regardless
256
- * of what is set in the config.
257
- */
258
- this.shouldAnimate = () => {
259
44
  /**
260
- * Don't animate until after the first user interaction.
261
- * This prevents animations on initial load when accordions
262
- * start in an expanded or collapsed state programmatically.
263
- *
264
- * Additionally, don't animate the very first expansion even if
265
- * hasInteracted is true. This handles edge cases like React StrictMode
266
- * where effects run twice and might incorrectly mark as interacted.
45
+ * Only count this as the first update if the group value is defined.
46
+ * This prevents the initial undefined value from the group's componentDidLoad
47
+ * from being treated as the first real update.
267
48
  */
268
- if (!this.hasInteracted || !this.hasEverBeenExpanded) {
269
- return false;
270
- }
271
- if (typeof window === 'undefined') {
272
- return false;
273
- }
274
- const prefersReducedMotion = matchMedia('(prefers-reduced-motion: reduce)').matches;
275
- if (prefersReducedMotion) {
276
- return false;
277
- }
278
- const animated = config.get('animated', true);
279
- if (!animated) {
280
- return false;
281
- }
282
- if (this.accordionGroupEl && !this.accordionGroupEl.animated) {
283
- return false;
284
- }
285
- return true;
286
- };
287
- this.updateState = async () => {
288
- const accordionGroup = this.accordionGroupEl;
289
- const accordionValue = this.value;
290
- if (!accordionGroup) {
291
- return;
292
- }
293
- const value = accordionGroup.value;
294
- const shouldExpand = Array.isArray(value) ? value.includes(accordionValue) : value === accordionValue;
295
- if (shouldExpand) {
296
- this.expandAccordion();
297
- this.isNext = this.isPrevious = false;
49
+ if (value !== undefined) {
50
+ this.hasReceivedFirstUpdate = true;
298
51
  }
299
- else {
300
- this.collapseAccordion();
301
- /**
302
- * When using popout or inset,
303
- * the collapsed accordion items
304
- * may need additional border radius
305
- * applied. Check to see if the
306
- * next or previous accordion is selected.
307
- */
308
- const nextAccordion = this.getNextSibling();
309
- const nextAccordionValue = nextAccordion === null || nextAccordion === void 0 ? void 0 : nextAccordion.value;
310
- if (nextAccordionValue !== undefined) {
311
- this.isPrevious = Array.isArray(value) ? value.includes(nextAccordionValue) : value === nextAccordionValue;
312
- }
313
- const previousAccordion = this.getPreviousSibling();
314
- const previousAccordionValue = previousAccordion === null || previousAccordion === void 0 ? void 0 : previousAccordion.value;
315
- if (previousAccordionValue !== undefined) {
316
- this.isNext = Array.isArray(value) ? value.includes(previousAccordionValue) : value === previousAccordionValue;
317
- }
318
- }
319
- };
320
- this.getNextSibling = () => {
321
- if (!this.el) {
322
- return;
323
- }
324
- const nextSibling = this.el.nextElementSibling;
325
- if ((nextSibling === null || nextSibling === void 0 ? void 0 : nextSibling.tagName) !== 'ION-ACCORDION') {
326
- return;
327
- }
328
- return nextSibling;
329
- };
330
- this.getPreviousSibling = () => {
331
- if (!this.el) {
332
- return;
333
- }
334
- const previousSibling = this.el.previousElementSibling;
335
- if ((previousSibling === null || previousSibling === void 0 ? void 0 : previousSibling.tagName) !== 'ION-ACCORDION') {
336
- return;
337
- }
338
- return previousSibling;
339
- };
340
- }
52
+ }
53
+ this.updateState();
54
+ };
55
+ contentEl;
56
+ contentElWrapper;
57
+ headerEl;
58
+ currentRaf;
59
+ el;
60
+ state = 1 /* AccordionState.Collapsed */;
61
+ isNext = false;
62
+ isPrevious = false;
63
+ /**
64
+ * Tracks whether a user-initiated interaction has occurred.
65
+ * Animations are disabled until the first interaction happens.
66
+ * This prevents the accordion from animating when it's programmatically
67
+ * set to an expanded or collapsed state on initial load.
68
+ */
69
+ hasInteracted = false;
70
+ /**
71
+ * Tracks if this accordion has ever been expanded.
72
+ * Used to prevent the first expansion from animating.
73
+ */
74
+ hasEverBeenExpanded = false;
75
+ /**
76
+ * Tracks if this accordion has received its first update from the group.
77
+ * Used to distinguish initial programmatic sets from user interactions.
78
+ */
79
+ hasReceivedFirstUpdate = false;
80
+ /**
81
+ * The value of the accordion. Defaults to an autogenerated
82
+ * value.
83
+ */
84
+ value = `ion-accordion-${accordionIds++}`;
341
85
  valueChanged() {
342
86
  this.updateState();
343
87
  }
88
+ /**
89
+ * If `true`, the accordion cannot be interacted with.
90
+ */
91
+ disabled = false;
92
+ /**
93
+ * If `true`, the accordion cannot be interacted with,
94
+ * but does not alter the opacity.
95
+ */
96
+ readonly = false;
97
+ /**
98
+ * The toggle icon to use. This icon will be
99
+ * rotated when the accordion is expanded
100
+ * or collapsed.
101
+ */
102
+ toggleIcon = chevronDown;
103
+ /**
104
+ * The slot inside of `ion-item` to
105
+ * place the toggle icon. Defaults to `"end"`.
106
+ */
107
+ toggleIconSlot = 'end';
344
108
  connectedCallback() {
345
- var _a;
346
- const accordionGroupEl = (this.accordionGroupEl = (_a = this.el) === null || _a === void 0 ? void 0 : _a.closest('ion-accordion-group'));
109
+ const accordionGroupEl = (this.accordionGroupEl = this.el?.closest('ion-accordion-group'));
347
110
  if (accordionGroupEl) {
348
111
  this.updateState();
349
112
  addEventListener(accordionGroupEl, 'ionValueChange', this.accordionGroupUpdateHandler);
@@ -372,6 +135,246 @@ export class Accordion {
372
135
  this.setAria(expanded);
373
136
  });
374
137
  }
138
+ setItemDefaults = () => {
139
+ const ionItem = this.getSlottedHeaderIonItem();
140
+ if (!ionItem) {
141
+ return;
142
+ }
143
+ /**
144
+ * For a11y purposes, we make
145
+ * the ion-item a button so users
146
+ * can tab to it and use keyboard
147
+ * navigation to get around.
148
+ */
149
+ ionItem.button = true;
150
+ ionItem.detail = false;
151
+ /**
152
+ * By default, the lines in an
153
+ * item should be full here, but
154
+ * only do that if a user has
155
+ * not explicitly overridden them
156
+ */
157
+ if (ionItem.lines === undefined) {
158
+ ionItem.lines = 'full';
159
+ }
160
+ };
161
+ getSlottedHeaderIonItem = () => {
162
+ const { headerEl } = this;
163
+ if (!headerEl) {
164
+ return;
165
+ }
166
+ /**
167
+ * Get the first ion-item
168
+ * slotted in the header slot
169
+ */
170
+ const slot = headerEl.querySelector('slot');
171
+ if (!slot) {
172
+ return;
173
+ }
174
+ // This is not defined in unit tests
175
+ if (slot.assignedElements === undefined)
176
+ return;
177
+ return slot.assignedElements().find((el) => el.tagName === 'ION-ITEM');
178
+ };
179
+ setAria = (expanded = false) => {
180
+ const ionItem = this.getSlottedHeaderIonItem();
181
+ if (!ionItem) {
182
+ return;
183
+ }
184
+ /**
185
+ * Get the native <button> element inside of
186
+ * ion-item because that is what will be focused
187
+ */
188
+ const root = getElementRoot(ionItem);
189
+ const button = root.querySelector('button');
190
+ if (!button) {
191
+ return;
192
+ }
193
+ button.setAttribute('aria-expanded', `${expanded}`);
194
+ };
195
+ slotToggleIcon = () => {
196
+ const ionItem = this.getSlottedHeaderIonItem();
197
+ if (!ionItem) {
198
+ return;
199
+ }
200
+ const { toggleIconSlot, toggleIcon } = this;
201
+ /**
202
+ * Check if there already is a toggle icon.
203
+ * If so, do not add another one.
204
+ */
205
+ const existingToggleIcon = ionItem.querySelector('.ion-accordion-toggle-icon');
206
+ if (existingToggleIcon) {
207
+ return;
208
+ }
209
+ const iconEl = document.createElement('ion-icon');
210
+ iconEl.slot = toggleIconSlot;
211
+ iconEl.lazy = false;
212
+ iconEl.classList.add('ion-accordion-toggle-icon');
213
+ iconEl.icon = toggleIcon;
214
+ iconEl.setAttribute('aria-hidden', 'true');
215
+ ionItem.appendChild(iconEl);
216
+ };
217
+ expandAccordion = () => {
218
+ const { contentEl, contentElWrapper } = this;
219
+ /**
220
+ * If the content elements aren't available yet, just set the state.
221
+ * This happens on initial render before the DOM is ready.
222
+ */
223
+ if (contentEl === undefined || contentElWrapper === undefined) {
224
+ this.state = 4 /* AccordionState.Expanded */;
225
+ this.hasEverBeenExpanded = true;
226
+ return;
227
+ }
228
+ if (this.state === 4 /* AccordionState.Expanded */) {
229
+ return;
230
+ }
231
+ if (this.currentRaf !== undefined) {
232
+ cancelAnimationFrame(this.currentRaf);
233
+ }
234
+ /**
235
+ * Mark that this accordion has been expanded at least once.
236
+ * This allows subsequent expansions to animate.
237
+ */
238
+ this.hasEverBeenExpanded = true;
239
+ if (this.shouldAnimate()) {
240
+ raf(() => {
241
+ this.state = 8 /* AccordionState.Expanding */;
242
+ this.currentRaf = raf(async () => {
243
+ const contentHeight = contentElWrapper.offsetHeight;
244
+ const waitForTransition = transitionEndAsync(contentEl, 2000);
245
+ contentEl.style.setProperty('max-height', `${contentHeight}px`);
246
+ await waitForTransition;
247
+ this.state = 4 /* AccordionState.Expanded */;
248
+ contentEl.style.removeProperty('max-height');
249
+ });
250
+ });
251
+ }
252
+ else {
253
+ this.state = 4 /* AccordionState.Expanded */;
254
+ }
255
+ };
256
+ collapseAccordion = () => {
257
+ const { contentEl } = this;
258
+ /**
259
+ * If the content element isn't available yet, just set the state.
260
+ * This happens on initial render before the DOM is ready.
261
+ */
262
+ if (contentEl === undefined) {
263
+ this.state = 1 /* AccordionState.Collapsed */;
264
+ return;
265
+ }
266
+ if (this.state === 1 /* AccordionState.Collapsed */) {
267
+ return;
268
+ }
269
+ if (this.currentRaf !== undefined) {
270
+ cancelAnimationFrame(this.currentRaf);
271
+ }
272
+ if (this.shouldAnimate()) {
273
+ this.currentRaf = raf(async () => {
274
+ const contentHeight = contentEl.offsetHeight;
275
+ contentEl.style.setProperty('max-height', `${contentHeight}px`);
276
+ raf(async () => {
277
+ const waitForTransition = transitionEndAsync(contentEl, 2000);
278
+ this.state = 2 /* AccordionState.Collapsing */;
279
+ await waitForTransition;
280
+ this.state = 1 /* AccordionState.Collapsed */;
281
+ contentEl.style.removeProperty('max-height');
282
+ });
283
+ });
284
+ }
285
+ else {
286
+ this.state = 1 /* AccordionState.Collapsed */;
287
+ }
288
+ };
289
+ /**
290
+ * Helper function to determine if
291
+ * something should animate.
292
+ * If prefers-reduced-motion is set
293
+ * then we should not animate, regardless
294
+ * of what is set in the config.
295
+ */
296
+ shouldAnimate = () => {
297
+ /**
298
+ * Don't animate until after the first user interaction.
299
+ * This prevents animations on initial load when accordions
300
+ * start in an expanded or collapsed state programmatically.
301
+ *
302
+ * Additionally, don't animate the very first expansion even if
303
+ * hasInteracted is true. This handles edge cases like React StrictMode
304
+ * where effects run twice and might incorrectly mark as interacted.
305
+ */
306
+ if (!this.hasInteracted || !this.hasEverBeenExpanded) {
307
+ return false;
308
+ }
309
+ if (typeof window === 'undefined') {
310
+ return false;
311
+ }
312
+ const prefersReducedMotion = matchMedia('(prefers-reduced-motion: reduce)').matches;
313
+ if (prefersReducedMotion) {
314
+ return false;
315
+ }
316
+ const animated = config.get('animated', true);
317
+ if (!animated) {
318
+ return false;
319
+ }
320
+ if (this.accordionGroupEl && !this.accordionGroupEl.animated) {
321
+ return false;
322
+ }
323
+ return true;
324
+ };
325
+ updateState = async () => {
326
+ const accordionGroup = this.accordionGroupEl;
327
+ const accordionValue = this.value;
328
+ if (!accordionGroup) {
329
+ return;
330
+ }
331
+ const value = accordionGroup.value;
332
+ const shouldExpand = Array.isArray(value) ? value.includes(accordionValue) : value === accordionValue;
333
+ if (shouldExpand) {
334
+ this.expandAccordion();
335
+ this.isNext = this.isPrevious = false;
336
+ }
337
+ else {
338
+ this.collapseAccordion();
339
+ /**
340
+ * When using popout or inset,
341
+ * the collapsed accordion items
342
+ * may need additional border radius
343
+ * applied. Check to see if the
344
+ * next or previous accordion is selected.
345
+ */
346
+ const nextAccordion = this.getNextSibling();
347
+ const nextAccordionValue = nextAccordion?.value;
348
+ if (nextAccordionValue !== undefined) {
349
+ this.isPrevious = Array.isArray(value) ? value.includes(nextAccordionValue) : value === nextAccordionValue;
350
+ }
351
+ const previousAccordion = this.getPreviousSibling();
352
+ const previousAccordionValue = previousAccordion?.value;
353
+ if (previousAccordionValue !== undefined) {
354
+ this.isNext = Array.isArray(value) ? value.includes(previousAccordionValue) : value === previousAccordionValue;
355
+ }
356
+ }
357
+ };
358
+ getNextSibling = () => {
359
+ if (!this.el) {
360
+ return;
361
+ }
362
+ const nextSibling = this.el.nextElementSibling;
363
+ if (nextSibling?.tagName !== 'ION-ACCORDION') {
364
+ return;
365
+ }
366
+ return nextSibling;
367
+ };
368
+ getPreviousSibling = () => {
369
+ if (!this.el) {
370
+ return;
371
+ }
372
+ const previousSibling = this.el.previousElementSibling;
373
+ if (previousSibling?.tagName !== 'ION-ACCORDION') {
374
+ return;
375
+ }
376
+ return previousSibling;
377
+ };
375
378
  toggleExpanded() {
376
379
  const { accordionGroupEl, disabled, readonly, value, state } = this;
377
380
  if (disabled || readonly)