@ionic/core 8.8.19 → 8.8.20-dev.11787158518.168a2fea

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 (799) 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--m5cCjbK.js +4 -0
  99. package/components/p-1jI5oW-W.js +4 -0
  100. package/components/{p-6J0vc7Z8.js → p-63OhffQv.js} +1 -1
  101. package/components/p-8FN7p701.js +4 -0
  102. package/components/p-B4uHHhPK.js +4 -0
  103. package/components/p-BMPN55of.js +4 -0
  104. package/components/p-BNJOu1Q2.js +4 -0
  105. package/components/p-BOvLNVKq.js +4 -0
  106. package/components/p-BSQPZ79H.js +4 -0
  107. package/components/p-BeamQXHF.js +4 -0
  108. package/components/p-BhamHSw3.js +4 -0
  109. package/components/p-Bjig0DJK.js +4 -0
  110. package/components/p-BjluhQMI.js +4 -0
  111. package/components/p-BlsIikdZ.js +4 -0
  112. package/components/p-BqPNzJf6.js +4 -0
  113. package/components/p-BrD9Xv62.js +4 -0
  114. package/components/p-BvJqoZ5R.js +4 -0
  115. package/components/p-Bz6z3Asd.js +4 -0
  116. package/components/p-C5KYjZWD.js +4 -0
  117. package/components/p-C6HnVvHO.js +4 -0
  118. package/components/p-C7jvh5Wy.js +4 -0
  119. package/components/p-C9BGR5fy.js +4 -0
  120. package/components/p-CB-y1CdP.js +4 -0
  121. package/components/p-CEW4RXZO.js +4 -0
  122. package/components/p-CHH3loEE.js +4 -0
  123. package/components/p-CJKUWjmg.js +4 -0
  124. package/components/{p-qMmFisyx.js → p-CMLAwl_N.js} +1 -1
  125. package/components/{p-C7II1iDj.js → p-C_phlPMC.js} +1 -1
  126. package/components/p-CbhUdtjf.js +4 -0
  127. package/components/p-CejmQs3h.js +4 -0
  128. package/components/p-CtZqa4HM.js +4 -0
  129. package/components/p-D7-vHX0A.js +4 -0
  130. package/components/p-D9qIVSWm.js +4 -0
  131. package/components/p-DD5fQ4EQ.js +4 -0
  132. package/components/p-DE-3iMNW.js +4 -0
  133. package/components/p-DFvZn99E.js +4 -0
  134. package/components/p-DHFt2rdc.js +4 -0
  135. package/components/p-DM-PrAoh.js +4 -0
  136. package/components/p-DSzSbVP2.js +4 -0
  137. package/components/{p--JUspHvy.js → p-DV85C0e0.js} +1 -1
  138. package/components/p-DWCzVL3Y.js +4 -0
  139. package/components/p-D_RCyzwu.js +4 -0
  140. package/components/p-D_tD8r3L.js +4 -0
  141. package/components/p-DaA_8eqt.js +4 -0
  142. package/components/p-DjCtLZbF.js +4 -0
  143. package/components/p-Dmd2xqCe.js +4 -0
  144. package/components/p-Dojwmvde.js +4 -0
  145. package/components/{p-BkKAANMJ.js → p-DwpKZ6rl.js} +1 -1
  146. package/components/p-DzRT60Tw.js +4 -0
  147. package/components/p-G0TxqHfe.js +4 -0
  148. package/components/p-G6JR-cr_.js +4 -0
  149. package/components/p-GG5GhznE.js +4 -0
  150. package/components/p-TXPDHL13.js +4 -0
  151. package/components/p-UIBJkZf8.js +4 -0
  152. package/components/p-_IKFD3ID.js +4 -0
  153. package/components/p-byZM6qHV.js +4 -0
  154. package/components/p-dKq2jIum.js +4 -0
  155. package/components/p-fruGqVHh.js +4 -0
  156. package/components/p-iYhH60Tc.js +4 -0
  157. package/components/p-ia3IDdJS.js +4 -0
  158. package/components/{p-DqLB8yFQ.js → p-ryyf_ItD.js} +1 -1
  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-AWp_ygDP.js → button-active-CVMevT9a.js} +3 -3
  162. package/dist/cjs/config-CjUbvdPW.js +36 -0
  163. package/dist/cjs/{dir-DD0jPVH3.js → dir-zwDPRE5K.js} +2 -3
  164. package/dist/cjs/{format-BUFWn4Bn.js → format-pp0Du3K-.js} +40 -30
  165. package/dist/cjs/{framework-delegate-CEzl4MEA.js → framework-delegate-Dfo5XsGv.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-DdZyl6WL.js → helpers-YPQybDph.js} +4 -4
  170. package/dist/cjs/index-B7zJsYWS.js +429 -0
  171. package/dist/cjs/{index-CukZnH1U.js → index-BLdJCcJY.js} +5 -5
  172. package/dist/cjs/{index-MWAIyVLl.js → index-DDg31ZF5.js} +3 -3
  173. package/dist/cjs/{index-DOiZqxWZ.js → index-DXsPSne6.js} +6 -7
  174. package/dist/cjs/{index-BJ2-LydH.js → index-DwlRtFZe.js} +9 -3
  175. package/dist/cjs/{index-BfaXsATC.js → index-uvry__L4.js} +31 -14
  176. package/dist/cjs/{index-DqmRDbxg.js → index-wOmugbdg.js} +1 -1
  177. package/dist/cjs/{index-CD92bI7B.js → index-zVCah4Uz.js} +2 -2
  178. package/dist/cjs/index.cjs.js +19 -19
  179. package/dist/cjs/{input-shims-CPKgrIe3.js → input-shims-Cbu1fcye.js} +10 -12
  180. package/dist/cjs/input.utils-BZdMWVrt.js +35 -0
  181. package/dist/cjs/ion-accordion_2.cjs.entry.js +369 -341
  182. package/dist/cjs/ion-action-sheet.cjs.entry.js +188 -77
  183. package/dist/cjs/ion-alert.cjs.entry.js +274 -112
  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 +48 -24
  187. package/dist/cjs/ion-backdrop.cjs.entry.js +18 -14
  188. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +200 -122
  189. package/dist/cjs/ion-button_2.cjs.entry.js +139 -67
  190. package/dist/cjs/ion-card_5.cjs.entry.js +83 -31
  191. package/dist/cjs/ion-checkbox.cjs.entry.js +153 -102
  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 +254 -242
  195. package/dist/cjs/ion-datetime.cjs.entry.js +2770 -0
  196. package/dist/cjs/ion-fab_3.cjs.entry.js +140 -82
  197. package/dist/cjs/ion-img.cjs.entry.js +35 -13
  198. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +101 -73
  199. package/dist/cjs/ion-input-otp.cjs.entry.js +435 -372
  200. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +36 -22
  201. package/dist/cjs/ion-input.cjs.entry.js +343 -212
  202. package/dist/cjs/ion-item-option_3.cjs.entry.js +95 -55
  203. package/dist/cjs/ion-item_8.cjs.entry.js +192 -93
  204. package/dist/cjs/ion-loading.cjs.entry.js +147 -61
  205. package/dist/cjs/ion-menu_3.cjs.entry.js +169 -107
  206. package/dist/cjs/ion-modal.cjs.entry.js +456 -262
  207. package/dist/cjs/ion-nav_2.cjs.entry.js +102 -159
  208. package/dist/cjs/ion-picker-column-option.cjs.entry.js +38 -34
  209. package/dist/cjs/ion-picker-column.cjs.entry.js +418 -406
  210. package/dist/cjs/ion-picker.cjs.entry.js +402 -393
  211. package/dist/cjs/ion-popover.cjs.entry.js +320 -206
  212. package/dist/cjs/ion-progress-bar.cjs.entry.js +32 -26
  213. package/dist/cjs/ion-radio_2.cjs.entry.js +208 -135
  214. package/dist/cjs/ion-range.cjs.entry.js +304 -239
  215. package/dist/cjs/ion-refresher_2.cjs.entry.js +166 -94
  216. package/dist/cjs/ion-reorder_2.cjs.entry.js +54 -24
  217. package/dist/cjs/ion-ripple-effect.cjs.entry.js +14 -14
  218. package/dist/cjs/ion-route_4.cjs.entry.js +176 -72
  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 +105 -49
  224. package/dist/cjs/ion-select_3.cjs.entry.js +787 -260
  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 +101 -42
  228. package/dist/cjs/ion-tab_2.cjs.entry.js +54 -28
  229. package/dist/cjs/ion-text.cjs.entry.js +11 -5
  230. package/dist/cjs/ion-textarea.cjs.entry.js +296 -189
  231. package/dist/cjs/ion-toast.cjs.entry.js +237 -118
  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-CTiTDh3m.js → ios.transition-zTmJz8T-.js} +14 -18
  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-BpiTAaqF.js → md.transition-nb_4pUXu.js} +8 -9
  242. package/dist/cjs/overlay-control-label-D2sdL2O8.js +50 -0
  243. package/dist/cjs/{overlays-CQ_c1fko.js → overlays-KaNVDNqC.js} +48 -33
  244. package/dist/cjs/select-option-render-pULCGldr.js +123 -0
  245. package/dist/cjs/slot-mutation-controller-DPHmqXdV.js +397 -0
  246. package/dist/cjs/{status-tap-7FzRlXNr.js → status-tap-o9IIymsP.js} +4 -4
  247. package/dist/cjs/{swipe-back-DwTZiAc9.js → swipe-back-B7X9VOlH.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 +57 -26
  297. package/dist/collection/components/input/input.js +336 -206
  298. package/dist/collection/components/input/input.md.css +79 -43
  299. package/dist/collection/components/input-otp/input-otp.js +430 -368
  300. package/dist/collection/components/input-password-toggle/input-password-toggle.js +32 -19
  301. package/dist/collection/components/item/item.js +99 -53
  302. package/dist/collection/components/item-divider/item-divider.js +17 -12
  303. package/dist/collection/components/item-group/item-group.js +1 -1
  304. package/dist/collection/components/item-option/item-option.js +50 -22
  305. package/dist/collection/components/item-options/item-options.js +11 -8
  306. package/dist/collection/components/item-sliding/item-sliding.js +27 -21
  307. package/dist/collection/components/label/label.js +26 -6
  308. package/dist/collection/components/list/list.js +11 -8
  309. package/dist/collection/components/list-header/list-header.js +12 -2
  310. package/dist/collection/components/loading/loading.js +135 -51
  311. package/dist/collection/components/menu/menu.js +103 -61
  312. package/dist/collection/components/menu-button/menu-button.js +30 -21
  313. package/dist/collection/components/menu-toggle/menu-toggle.js +22 -15
  314. package/dist/collection/components/modal/animations/ios.enter.js +1 -1
  315. package/dist/collection/components/modal/animations/md.enter.js +1 -1
  316. package/dist/collection/components/modal/gestures/sheet.js +22 -10
  317. package/dist/collection/components/modal/gestures/swipe-to-close.js +15 -3
  318. package/dist/collection/components/modal/modal.js +398 -228
  319. package/dist/collection/components/modal/safe-area-utils.js +6 -7
  320. package/dist/collection/components/modal/test/fixtures.js +3 -0
  321. package/dist/collection/components/nav/nav.js +69 -247
  322. package/dist/collection/components/nav/view-controller.js +7 -1
  323. package/dist/collection/components/nav-link/nav-link.js +21 -10
  324. package/dist/collection/components/note/note.js +8 -2
  325. package/dist/collection/components/picker/picker.js +398 -390
  326. package/dist/collection/components/picker-column/picker-column.css +3 -0
  327. package/dist/collection/components/picker-column/picker-column.js +414 -404
  328. package/dist/collection/components/picker-column-option/picker-column-option.js +33 -31
  329. package/dist/collection/components/picker-column-option/picker-column-option.md.css +6 -1
  330. package/dist/collection/components/popover/animations/ios.enter.js +1 -2
  331. package/dist/collection/components/popover/animations/md.enter.js +1 -2
  332. package/dist/collection/components/popover/popover.ios.css +15 -0
  333. package/dist/collection/components/popover/popover.js +302 -185
  334. package/dist/collection/components/popover/popover.md.css +15 -0
  335. package/dist/collection/components/popover/test/fixture.js +1 -0
  336. package/dist/collection/components/popover/utils.js +4 -6
  337. package/dist/collection/components/progress-bar/progress-bar.js +27 -23
  338. package/dist/collection/components/radio/radio.js +102 -66
  339. package/dist/collection/components/radio-group/radio-group.js +101 -66
  340. package/dist/collection/components/radio-group/test/fixtures.js +2 -0
  341. package/dist/collection/components/range/range.js +298 -234
  342. package/dist/collection/components/refresher/refresher.js +110 -78
  343. package/dist/collection/components/refresher-content/refresher-content.js +41 -4
  344. package/dist/collection/components/reorder/reorder.js +2 -1
  345. package/dist/collection/components/reorder-group/reorder-group.js +44 -15
  346. package/dist/collection/components/ripple-effect/ripple-effect.js +12 -13
  347. package/dist/collection/components/route/route.js +39 -10
  348. package/dist/collection/components/route-redirect/route-redirect.js +31 -0
  349. package/dist/collection/components/router/router.js +37 -33
  350. package/dist/collection/components/router/utils/dom.js +25 -7
  351. package/dist/collection/components/router/utils/matching.js +7 -9
  352. package/dist/collection/components/router/utils/parser.js +1 -1
  353. package/dist/collection/components/router/utils/path.js +0 -1
  354. package/dist/collection/components/router-link/router-link.js +37 -12
  355. package/dist/collection/components/router-outlet/router-outlet.js +82 -21
  356. package/dist/collection/components/row/row.js +1 -1
  357. package/dist/collection/components/searchbar/searchbar.js +289 -199
  358. package/dist/collection/components/segment/segment.js +120 -85
  359. package/dist/collection/components/segment-button/segment-button.js +43 -37
  360. package/dist/collection/components/segment-content/segment-content.js +1 -1
  361. package/dist/collection/components/segment-view/segment-view.js +26 -16
  362. package/dist/collection/components/select/select.ios.css +96 -69
  363. package/dist/collection/components/select/select.js +629 -213
  364. package/dist/collection/components/select/select.md.css +118 -85
  365. package/dist/collection/components/select-modal/select-modal.ios.css +218 -0
  366. package/dist/collection/components/select-modal/select-modal.js +92 -38
  367. package/dist/collection/components/select-modal/select-modal.md.css +164 -0
  368. package/dist/collection/components/select-modal/test/fixtures.js +8 -1
  369. package/dist/collection/components/select-option/select-option.js +110 -9
  370. package/dist/collection/components/select-popover/select-popover.ios.css +218 -0
  371. package/dist/collection/components/select-popover/select-popover.js +103 -36
  372. package/dist/collection/components/select-popover/select-popover.md.css +164 -0
  373. package/dist/collection/components/select-popover/test/fixtures.js +8 -1
  374. package/dist/collection/components/skeleton-text/skeleton-text.js +12 -8
  375. package/dist/collection/components/spinner/spinner.js +21 -9
  376. package/dist/collection/components/split-pane/split-pane.js +27 -15
  377. package/dist/collection/components/tab/tab.js +17 -6
  378. package/dist/collection/components/tab-bar/tab-bar.js +32 -14
  379. package/dist/collection/components/tab-button/tab-button.js +62 -23
  380. package/dist/collection/components/tabs/tabs.js +33 -20
  381. package/dist/collection/components/text/text.js +8 -2
  382. package/dist/collection/components/textarea/textarea.ios.css +94 -62
  383. package/dist/collection/components/textarea/textarea.js +287 -181
  384. package/dist/collection/components/textarea/textarea.md.css +103 -77
  385. package/dist/collection/components/thumbnail/thumbnail.js +1 -1
  386. package/dist/collection/components/title/title.js +18 -2
  387. package/dist/collection/components/toast/toast.js +223 -106
  388. package/dist/collection/components/toggle/toggle.js +167 -115
  389. package/dist/collection/components/toolbar/toolbar.js +15 -7
  390. package/dist/collection/global/config.js +4 -6
  391. package/dist/collection/global/ionic-global.js +8 -2
  392. package/dist/collection/index.js +1 -1
  393. package/dist/collection/utils/animation/animation.js +3 -3
  394. package/dist/collection/utils/config.js +5 -4
  395. package/dist/collection/utils/focus-controller/index.js +1 -1
  396. package/dist/collection/utils/focus-trap.js +3 -3
  397. package/dist/collection/utils/forms/index.js +1 -0
  398. package/dist/collection/utils/forms/start-container-controller.js +132 -0
  399. package/dist/collection/utils/framework-delegate.js +4 -6
  400. package/dist/collection/utils/gesture/gesture-controller.js +15 -8
  401. package/dist/collection/utils/gesture/index.js +10 -2
  402. package/dist/collection/utils/hardware-back-button.js +3 -3
  403. package/dist/collection/utils/helpers.js +2 -2
  404. package/dist/collection/utils/input-shims/hacks/scroll-assist.js +4 -5
  405. package/dist/collection/utils/input-shims/hacks/scroll-data.js +1 -2
  406. package/dist/collection/utils/keyboard/keyboard-controller.js +5 -5
  407. package/dist/collection/utils/keyboard/keyboard.js +1 -1
  408. package/dist/collection/utils/logging/index.js +23 -4
  409. package/dist/collection/utils/menu-controller/index.js +1 -2
  410. package/dist/collection/utils/native/haptic.js +2 -3
  411. package/dist/collection/utils/native/keyboard.js +2 -2
  412. package/dist/collection/utils/native/status-bar.js +1 -1
  413. package/dist/collection/utils/overlay-control-label.js +45 -0
  414. package/dist/collection/utils/overlays.js +38 -23
  415. package/dist/collection/utils/platform.js +4 -5
  416. package/dist/collection/utils/rtl/dir.js +2 -3
  417. package/dist/collection/utils/sanitization/index.js +276 -20
  418. package/dist/collection/utils/select-option-render.js +118 -0
  419. package/dist/collection/utils/slot-mutation-controller.js +1 -2
  420. package/dist/collection/utils/test/playwright/apply-keyboard-focus.js +1 -1
  421. package/dist/collection/utils/test/playwright/drag-element.js +2 -3
  422. package/dist/collection/utils/test/playwright/generator.js +3 -4
  423. package/dist/collection/utils/test/playwright/page/event-spy.js +11 -12
  424. package/dist/collection/utils/test/playwright/page/utils/goto.js +4 -5
  425. package/dist/collection/utils/test/playwright/page/utils/set-content.js +1 -1
  426. package/dist/collection/utils/test/playwright/page/utils/set-ion-viewport.js +2 -3
  427. package/dist/collection/utils/test/press-keys.js +10 -17
  428. package/dist/collection/utils/theme.js +6 -1
  429. package/dist/collection/utils/transition/ios.transition.js +9 -13
  430. package/dist/collection/utils/transition/md.transition.js +3 -4
  431. package/dist/docs.json +557 -1257
  432. package/dist/esm/{animation-DLJpuoEz.js → animation-CGFdmGk9.js} +4 -4
  433. package/dist/esm/{app-globals-D0C5S4hU.js → app-globals-CYmMeGdU.js} +1 -1
  434. package/dist/esm/{button-active-CXXy0FIE.js → button-active-BDOsVAiZ.js} +3 -3
  435. package/dist/esm/config-DWCzVL3Y.js +32 -0
  436. package/dist/esm/{dir-o8OKV5aD.js → dir-Dojwmvde.js} +2 -3
  437. package/dist/esm/{format-CAmvpAez.js → format-Dcwga61t.js} +41 -31
  438. package/dist/esm/{framework-delegate-B9yvYzqV.js → framework-delegate-BHTU2Ip9.js} +5 -7
  439. package/dist/esm/{gesture-controller-BTEOs1at.js → gesture-controller-TXPDHL13.js} +15 -8
  440. package/dist/esm/{haptic-DzAMWJuk.js → haptic-Cq4UAeka.js} +2 -3
  441. package/dist/esm/{hardware-back-button-B93Gru0Y.js → hardware-back-button-gLJHMX_F.js} +4 -4
  442. package/dist/esm/{helpers-DkCLSLI9.js → helpers-CAGf8Wgp.js} +4 -4
  443. package/dist/esm/{index-DV3sJJW8.js → index-BvabGprD.js} +2 -2
  444. package/dist/esm/index-CKM1DdGm.js +424 -0
  445. package/dist/esm/{index-tcQvqkiX.js → index-ChhhtsGZ.js} +32 -15
  446. package/dist/esm/{index-DwNKJodj.js → index-Clc-28O1.js} +3 -3
  447. package/dist/esm/{index-DdeElWma.js → index-CqneaaGd.js} +6 -7
  448. package/dist/esm/{index-Bck1OwMs.js → index-DcPaH5uL.js} +9 -3
  449. package/dist/esm/{index-B_8X7INq.js → index-T0JxBI8V.js} +2 -2
  450. package/dist/esm/{index-Dsz7OTeL.js → index-WlteAIqz.js} +5 -5
  451. package/dist/esm/index.js +17 -16
  452. package/dist/esm/{input-shims-d-hDv86G.js → input-shims-B8sfni1e.js} +10 -12
  453. package/dist/esm/input.utils-B1ValN_N.js +33 -0
  454. package/dist/esm/ion-accordion_2.entry.js +369 -341
  455. package/dist/esm/ion-action-sheet.entry.js +188 -77
  456. package/dist/esm/ion-alert.entry.js +273 -111
  457. package/dist/esm/ion-app_8.entry.js +307 -190
  458. package/dist/esm/ion-avatar_3.entry.js +10 -4
  459. package/dist/esm/ion-back-button.entry.js +48 -24
  460. package/dist/esm/ion-backdrop.entry.js +18 -14
  461. package/dist/esm/ion-breadcrumb_2.entry.js +200 -122
  462. package/dist/esm/ion-button_2.entry.js +139 -67
  463. package/dist/esm/ion-card_5.entry.js +83 -31
  464. package/dist/esm/ion-checkbox.entry.js +153 -102
  465. package/dist/esm/ion-chip.entry.js +17 -11
  466. package/dist/esm/ion-col_3.entry.js +134 -10
  467. package/dist/esm/ion-datetime-button.entry.js +254 -242
  468. package/dist/esm/ion-datetime.entry.js +2768 -0
  469. package/dist/esm/ion-fab_3.entry.js +140 -82
  470. package/dist/esm/ion-img.entry.js +35 -13
  471. package/dist/esm/ion-infinite-scroll_2.entry.js +100 -72
  472. package/dist/esm/ion-input-otp.entry.js +435 -372
  473. package/dist/esm/ion-input-password-toggle.entry.js +36 -22
  474. package/dist/esm/ion-input.entry.js +341 -210
  475. package/dist/esm/ion-item-option_3.entry.js +95 -55
  476. package/dist/esm/ion-item_8.entry.js +192 -93
  477. package/dist/esm/ion-loading.entry.js +146 -60
  478. package/dist/esm/ion-menu_3.entry.js +169 -107
  479. package/dist/esm/ion-modal.entry.js +456 -262
  480. package/dist/esm/ion-nav_2.entry.js +102 -159
  481. package/dist/esm/ion-picker-column-option.entry.js +38 -34
  482. package/dist/esm/ion-picker-column.entry.js +418 -406
  483. package/dist/esm/ion-picker.entry.js +402 -393
  484. package/dist/esm/ion-popover.entry.js +320 -206
  485. package/dist/esm/ion-progress-bar.entry.js +32 -26
  486. package/dist/esm/ion-radio_2.entry.js +208 -135
  487. package/dist/esm/ion-range.entry.js +304 -239
  488. package/dist/esm/ion-refresher_2.entry.js +164 -92
  489. package/dist/esm/ion-reorder_2.entry.js +54 -24
  490. package/dist/esm/ion-ripple-effect.entry.js +14 -14
  491. package/dist/esm/ion-route_4.entry.js +176 -72
  492. package/dist/esm/ion-searchbar.entry.js +291 -200
  493. package/dist/esm/ion-segment-content.entry.js +2 -2
  494. package/dist/esm/ion-segment-view.entry.js +28 -17
  495. package/dist/esm/ion-segment_2.entry.js +169 -126
  496. package/dist/esm/ion-select-modal.entry.js +105 -49
  497. package/dist/esm/ion-select_3.entry.js +787 -260
  498. package/dist/esm/ion-spinner.entry.js +24 -10
  499. package/dist/esm/ion-split-pane.entry.js +29 -16
  500. package/dist/esm/ion-tab-bar_2.entry.js +101 -42
  501. package/dist/esm/ion-tab_2.entry.js +54 -28
  502. package/dist/esm/ion-text.entry.js +11 -5
  503. package/dist/esm/ion-textarea.entry.js +295 -188
  504. package/dist/esm/ion-toast.entry.js +236 -117
  505. package/dist/esm/ion-toggle.entry.js +175 -122
  506. package/dist/esm/{ionic-global-Cp_eT4sZ.js → ionic-global-BVB7BrLT.js} +13 -8
  507. package/dist/esm/ionic.js +5 -5
  508. package/dist/esm/{ios.transition-CxNhMt4a.js → ios.transition-DXRCmcbC.js} +14 -18
  509. package/dist/esm/{item-multiple-inputs-DlNuqNJm.js → item-multiple-inputs-rU8VaNNg.js} +1 -1
  510. package/dist/esm/{keyboard-ywgs5efA.js → keyboard-Cj8mLJeq.js} +2 -2
  511. package/dist/esm/{keyboard-CUw4ekVy.js → keyboard-DAF8GNJ9.js} +2 -2
  512. package/dist/esm/{keyboard-controller-BaaVITYt.js → keyboard-controller-DEwoa1ev.js} +6 -6
  513. package/dist/esm/loader.js +5 -5
  514. package/dist/esm/{md.transition-IE4mC3kp.js → md.transition-BMngO4i_.js} +8 -9
  515. package/dist/esm/overlay-control-label-BSQPZ79H.js +47 -0
  516. package/dist/esm/{overlays-COCl_nm9.js → overlays-CPmIs9Ls.js} +48 -33
  517. package/dist/esm/select-option-render-C4m76VGH.js +121 -0
  518. package/dist/esm/slot-mutation-controller-DiE_C9un.js +393 -0
  519. package/dist/esm/{status-tap-HhO5eQI9.js → status-tap-CHB7KwIb.js} +4 -4
  520. package/dist/esm/{swipe-back-DK6afpuO.js → swipe-back-C9HW1bug.js} +5 -5
  521. package/dist/esm/{theme-DiVJyqlX.js → theme-byZM6qHV.js} +6 -1
  522. package/dist/html.html-data.json +52 -80
  523. package/dist/ionic/index.esm.js +1 -1
  524. package/dist/ionic/ionic.esm.js +1 -1
  525. package/dist/ionic/p-06ec7136.entry.js +4 -0
  526. package/dist/ionic/p-09fe4fa3.entry.js +4 -0
  527. package/dist/ionic/p-10d45a07.entry.js +4 -0
  528. package/dist/ionic/p-208c8a07.entry.js +4 -0
  529. package/dist/ionic/p-212474fa.entry.js +4 -0
  530. package/dist/ionic/p-2eef1396.entry.js +4 -0
  531. package/dist/ionic/p-347e005d.entry.js +4 -0
  532. package/dist/ionic/p-3a0b3f1d.entry.js +4 -0
  533. package/dist/ionic/p-3b071259.entry.js +4 -0
  534. package/dist/ionic/{p-c6e49f3f.entry.js → p-40424a88.entry.js} +1 -1
  535. package/dist/ionic/p-4204184c.entry.js +4 -0
  536. package/dist/ionic/p-47464391.entry.js +4 -0
  537. package/dist/ionic/p-4eOQC00Z.js +4 -0
  538. package/dist/ionic/p-4f9c9126.entry.js +4 -0
  539. package/dist/ionic/p-5JsKPLJD.js +4 -0
  540. package/dist/ionic/p-5bc485c6.entry.js +4 -0
  541. package/dist/ionic/p-603a61e6.entry.js +4 -0
  542. package/dist/ionic/p-60576951.entry.js +4 -0
  543. package/dist/ionic/p-67a81d33.entry.js +4 -0
  544. package/dist/ionic/p-6affb775.entry.js +4 -0
  545. package/dist/ionic/p-6f120c25.entry.js +4 -0
  546. package/dist/ionic/p-71c82b60.entry.js +4 -0
  547. package/dist/ionic/p-79325ffe.entry.js +4 -0
  548. package/dist/ionic/{p-DZaO33Mw.js → p-7CBuOvEo.js} +1 -1
  549. package/dist/ionic/p-7e4d51fa.entry.js +4 -0
  550. package/dist/ionic/p-7f5d4664.entry.js +4 -0
  551. package/dist/ionic/p-80ee82fc.entry.js +4 -0
  552. package/dist/ionic/p-84af7dbc.entry.js +4 -0
  553. package/dist/ionic/p-89ca830a.entry.js +4 -0
  554. package/dist/ionic/p-93b8ec8f.entry.js +4 -0
  555. package/dist/ionic/p-946f65c2.entry.js +4 -0
  556. package/dist/ionic/p-9c4b39fb.entry.js +4 -0
  557. package/dist/ionic/p-B1NEZUzQ.js +4 -0
  558. package/dist/ionic/p-B1ck5iy-.js +4 -0
  559. package/dist/ionic/{p-Cd4H8ft-.js → p-B4FrqdW0.js} +1 -1
  560. package/dist/ionic/p-BB0LlG4y.js +4 -0
  561. package/dist/ionic/p-BMPN55of.js +4 -0
  562. package/dist/ionic/p-BSQPZ79H.js +4 -0
  563. package/dist/ionic/p-BYEAtHr-.js +4 -0
  564. package/dist/ionic/p-BhamHSw3.js +4 -0
  565. package/dist/ionic/{p-DV3sJJW8.js → p-BvabGprD.js} +1 -1
  566. package/dist/ionic/p-C-94tAim.js +4 -0
  567. package/dist/ionic/{p-DipZFfzN.js → p-C-eHZMYE.js} +1 -1
  568. package/dist/ionic/p-CBR_W98Z.js +4 -0
  569. package/dist/ionic/{p-ClM02LPk.js → p-CBWAXjA5.js} +1 -1
  570. package/dist/ionic/p-CMRtMbJc.js +4 -0
  571. package/dist/ionic/p-CPcPmkGv.js +4 -0
  572. package/dist/ionic/p-CaRuIadB.js +4 -0
  573. package/dist/ionic/p-Cdjxf_yg.js +4 -0
  574. package/dist/ionic/p-ChhhtsGZ.js +5 -0
  575. package/dist/ionic/p-CzS1qWve.js +4 -0
  576. package/dist/ionic/p-D5t_-oMk.js +4 -0
  577. package/dist/ionic/p-D94_RztK.js +4 -0
  578. package/dist/ionic/p-DWCzVL3Y.js +4 -0
  579. package/dist/ionic/p-DjjfauRM.js +4 -0
  580. package/dist/ionic/p-DkUB-ROc.js +4 -0
  581. package/dist/ionic/p-Dn0mqQ_R.js +4 -0
  582. package/dist/ionic/p-Dojwmvde.js +4 -0
  583. package/dist/ionic/p-DplOqGUv.js +4 -0
  584. package/dist/ionic/p-Dst_XmZh.js +4 -0
  585. package/dist/ionic/p-T71k3C35.js +4 -0
  586. package/dist/ionic/p-TXPDHL13.js +4 -0
  587. package/dist/ionic/p-UIBJkZf8.js +4 -0
  588. package/dist/ionic/p-a438b193.entry.js +4 -0
  589. package/dist/ionic/p-babaaaa7.entry.js +4 -0
  590. package/dist/ionic/p-be08d500.entry.js +4 -0
  591. package/dist/ionic/p-be9a4f51.entry.js +4 -0
  592. package/dist/ionic/p-byZM6qHV.js +4 -0
  593. package/dist/ionic/p-c00d3092.entry.js +4 -0
  594. package/dist/ionic/p-c36dc8f5.entry.js +4 -0
  595. package/dist/ionic/p-c72a7e17.entry.js +4 -0
  596. package/dist/ionic/p-c8edd88c.entry.js +4 -0
  597. package/dist/ionic/p-ce0e380b.entry.js +4 -0
  598. package/dist/ionic/p-ce32912b.entry.js +4 -0
  599. package/dist/ionic/p-d07cf130.entry.js +4 -0
  600. package/dist/ionic/p-d27edeb3.entry.js +4 -0
  601. package/dist/ionic/p-d5d2c506.entry.js +4 -0
  602. package/dist/ionic/p-d5e31ca9.entry.js +4 -0
  603. package/dist/ionic/p-de91444f.entry.js +4 -0
  604. package/dist/ionic/p-ded69ceb.entry.js +4 -0
  605. package/dist/ionic/p-df72866d.entry.js +4 -0
  606. package/dist/ionic/p-e47e3151.entry.js +4 -0
  607. package/dist/ionic/p-e621e5e8.entry.js +4 -0
  608. package/dist/ionic/p-eea9cf93.entry.js +4 -0
  609. package/dist/ionic/p-f402f5a4.entry.js +4 -0
  610. package/dist/ionic/p-fe1bfbcf.entry.js +4 -0
  611. package/{components/p-9GFIh9p1.js → dist/ionic/p-ffb90460.entry.js} +1 -1
  612. package/dist/types/components/img/img.d.ts +2 -0
  613. package/dist/types/components/input/input.d.ts +12 -6
  614. package/dist/types/components/modal/modal-interface.d.ts +9 -0
  615. package/dist/types/components/modal/modal.d.ts +11 -4
  616. package/dist/types/components/nav/nav-interface.d.ts +0 -1
  617. package/dist/types/components/nav/nav.d.ts +2 -22
  618. package/dist/types/components/route/route.d.ts +1 -1
  619. package/dist/types/components/router-outlet/router-outlet.d.ts +7 -0
  620. package/dist/types/components/searchbar/searchbar.d.ts +1 -1
  621. package/dist/types/components/select/select-interface.d.ts +31 -0
  622. package/dist/types/components/select/select.d.ts +30 -6
  623. package/dist/types/components/select-option/select-option.d.ts +42 -1
  624. package/dist/types/components/textarea/textarea.d.ts +12 -5
  625. package/dist/types/components.d.ts +74 -311
  626. package/dist/types/index.d.ts +1 -1
  627. package/dist/types/interface.d.ts +0 -1
  628. package/dist/types/utils/config.d.ts +1 -8
  629. package/dist/types/utils/forms/index.d.ts +1 -0
  630. package/dist/types/utils/forms/start-container-controller.d.ts +34 -0
  631. package/dist/types/utils/logging/index.d.ts +2 -1
  632. package/dist/types/utils/overlay-control-label.d.ts +32 -0
  633. package/dist/types/utils/overlays.d.ts +11 -9
  634. package/dist/types/utils/sanitization/index.d.ts +58 -2
  635. package/dist/types/utils/select-option-render.d.ts +53 -0
  636. package/dist/types/utils/test/playwright/playwright-page.d.ts +1 -1
  637. package/dist/types/utils/test/playwright/testExpect.d.ts +1 -1
  638. package/hydrate/index.js +10660 -7305
  639. package/hydrate/index.mjs +10660 -7305
  640. package/package.json +55 -12
  641. package/components/ion-picker-legacy-column.d.ts +0 -11
  642. package/components/ion-picker-legacy-column.js +0 -4
  643. package/components/ion-picker-legacy.d.ts +0 -11
  644. package/components/ion-picker-legacy.js +0 -4
  645. package/components/p-0LM2oPMC.js +0 -4
  646. package/components/p-B21528L5.js +0 -4
  647. package/components/p-B2nSfLHH.js +0 -4
  648. package/components/p-B3qf4bEn.js +0 -4
  649. package/components/p-B9jFTlwE.js +0 -4
  650. package/components/p-BDd9Zrb9.js +0 -4
  651. package/components/p-BLmJ0zRm.js +0 -4
  652. package/components/p-BMYNBJgf.js +0 -4
  653. package/components/p-BRYd8D-I.js +0 -4
  654. package/components/p-BSEgsdFI.js +0 -4
  655. package/components/p-BTEOs1at.js +0 -4
  656. package/components/p-BTJrYwxN.js +0 -4
  657. package/components/p-BV-zKay-.js +0 -4
  658. package/components/p-BYRVyMu9.js +0 -4
  659. package/components/p-Bmq8qlkW.js +0 -4
  660. package/components/p-BuxQcfHK.js +0 -4
  661. package/components/p-Bz0dSlXZ.js +0 -4
  662. package/components/p-CHqRYvYm.js +0 -4
  663. package/components/p-CSZf8_j0.js +0 -4
  664. package/components/p-CTdRooFV.js +0 -4
  665. package/components/p-Cf2jSDS8.js +0 -4
  666. package/components/p-Cfx4M1Bn.js +0 -4
  667. package/components/p-CgkrslTX.js +0 -4
  668. package/components/p-CiCzYG2V.js +0 -4
  669. package/components/p-Ck0lEczL.js +0 -4
  670. package/components/p-CmR5uXej.js +0 -4
  671. package/components/p-CniZht3v.js +0 -4
  672. package/components/p-CsaojgEs.js +0 -4
  673. package/components/p-CtWGkNnJ.js +0 -4
  674. package/components/p-D13Eaw-8.js +0 -4
  675. package/components/p-D4FYu-4R.js +0 -4
  676. package/components/p-D6Ynv7Xh.js +0 -4
  677. package/components/p-DARjq3GM.js +0 -4
  678. package/components/p-DEZ2myA3.js +0 -4
  679. package/components/p-DOFCbuQR.js +0 -4
  680. package/components/p-DVe41iHI.js +0 -4
  681. package/components/p-DX5m9g56.js +0 -4
  682. package/components/p-DboHi2CL.js +0 -4
  683. package/components/p-DiVJyqlX.js +0 -4
  684. package/components/p-DmzFY5IC.js +0 -4
  685. package/components/p-DqZAXv2t.js +0 -4
  686. package/components/p-Dv8w0kqz.js +0 -4
  687. package/components/p-Dw7GNDKq.js +0 -4
  688. package/components/p-Dww01PNs.js +0 -4
  689. package/components/p-Gy276IJk.js +0 -4
  690. package/components/p-ZzLXTvyt.js +0 -4
  691. package/components/p-cyNmxje6.js +0 -4
  692. package/components/p-j5IxBIan.js +0 -4
  693. package/components/p-k_E4tX5Z.js +0 -4
  694. package/components/p-lVAbdiAu.js +0 -4
  695. package/components/p-o8OKV5aD.js +0 -4
  696. package/components/p-rCa2eL0j.js +0 -4
  697. package/dist/cjs/config-D6C-KlA9.js +0 -201
  698. package/dist/cjs/input.utils-DQaUGGed.js +0 -150
  699. package/dist/cjs/ion-datetime_3.cjs.entry.js +0 -3167
  700. package/dist/cjs/notch-controller-aiy8aQb-.js +0 -155
  701. package/dist/collection/components/picker-legacy/animations/ios.enter.js +0 -27
  702. package/dist/collection/components/picker-legacy/animations/ios.leave.js +0 -23
  703. package/dist/collection/components/picker-legacy/picker-interface.js +0 -1
  704. package/dist/collection/components/picker-legacy/picker.ios.css +0 -300
  705. package/dist/collection/components/picker-legacy/picker.js +0 -890
  706. package/dist/collection/components/picker-legacy/picker.md.css +0 -287
  707. package/dist/collection/components/picker-legacy-column/picker-column.ios.css +0 -231
  708. package/dist/collection/components/picker-legacy-column/picker-column.js +0 -422
  709. package/dist/collection/components/picker-legacy-column/picker-column.md.css +0 -222
  710. package/dist/collection/components/picker-legacy-column/test/test.utils.js +0 -43
  711. package/dist/esm/config-DQCONYYp.js +0 -195
  712. package/dist/esm/input.utils-Cd23Gdd1.js +0 -147
  713. package/dist/esm/ion-datetime_3.entry.js +0 -3163
  714. package/dist/esm/notch-controller-Doqis1td.js +0 -153
  715. package/dist/ionic/p-01f81ea5.entry.js +0 -4
  716. package/dist/ionic/p-0283ea73.entry.js +0 -4
  717. package/dist/ionic/p-02ecae65.entry.js +0 -4
  718. package/dist/ionic/p-0672f677.entry.js +0 -4
  719. package/dist/ionic/p-0c06fe60.entry.js +0 -4
  720. package/dist/ionic/p-0fa9c382.entry.js +0 -4
  721. package/dist/ionic/p-1af4d74c.entry.js +0 -4
  722. package/dist/ionic/p-1d7ef0d2.entry.js +0 -4
  723. package/dist/ionic/p-26f05d3a.entry.js +0 -4
  724. package/dist/ionic/p-27d30585.entry.js +0 -4
  725. package/dist/ionic/p-2bb2cb18.entry.js +0 -4
  726. package/dist/ionic/p-31e7bd05.entry.js +0 -4
  727. package/dist/ionic/p-32f53010.entry.js +0 -4
  728. package/dist/ionic/p-35eb8b5c.entry.js +0 -4
  729. package/dist/ionic/p-37e720da.entry.js +0 -4
  730. package/dist/ionic/p-3efa137b.entry.js +0 -4
  731. package/dist/ionic/p-432bd72c.entry.js +0 -4
  732. package/dist/ionic/p-47214c72.entry.js +0 -4
  733. package/dist/ionic/p-4e172429.entry.js +0 -4
  734. package/dist/ionic/p-5c3da84e.entry.js +0 -4
  735. package/dist/ionic/p-5d1da0a2.entry.js +0 -4
  736. package/dist/ionic/p-5d8082fe.entry.js +0 -4
  737. package/dist/ionic/p-613d3c43.entry.js +0 -4
  738. package/dist/ionic/p-616e4d4f.entry.js +0 -4
  739. package/dist/ionic/p-65d611b2.entry.js +0 -4
  740. package/dist/ionic/p-67806e3f.entry.js +0 -4
  741. package/dist/ionic/p-68cbb2fc.entry.js +0 -4
  742. package/dist/ionic/p-737ae9eb.entry.js +0 -4
  743. package/dist/ionic/p-7b0d6248.entry.js +0 -4
  744. package/dist/ionic/p-7e71e470.entry.js +0 -4
  745. package/dist/ionic/p-84d5ce05.entry.js +0 -4
  746. package/dist/ionic/p-85d49987.entry.js +0 -4
  747. package/dist/ionic/p-8945088b.entry.js +0 -4
  748. package/dist/ionic/p-8b155568.entry.js +0 -4
  749. package/dist/ionic/p-90267c4b.entry.js +0 -4
  750. package/dist/ionic/p-92ad8a67.entry.js +0 -4
  751. package/dist/ionic/p-9a97d4e0.entry.js +0 -4
  752. package/dist/ionic/p-9e4b0894.entry.js +0 -4
  753. package/dist/ionic/p-9eeaBrnk.js +0 -4
  754. package/dist/ionic/p-B2kaj8sx.js +0 -4
  755. package/dist/ionic/p-B4y7nxsg.js +0 -4
  756. package/dist/ionic/p-B8t9Ro6f.js +0 -4
  757. package/dist/ionic/p-BEOxsxBw.js +0 -4
  758. package/dist/ionic/p-BJ2NxSHp.js +0 -4
  759. package/dist/ionic/p-BLiL8g0v.js +0 -4
  760. package/dist/ionic/p-BTEOs1at.js +0 -4
  761. package/dist/ionic/p-BUFIpxKM.js +0 -4
  762. package/dist/ionic/p-BYRVyMu9.js +0 -4
  763. package/dist/ionic/p-C0eMdTCW.js +0 -4
  764. package/dist/ionic/p-CKvCXMs9.js +0 -4
  765. package/dist/ionic/p-CPTv7G9B.js +0 -4
  766. package/dist/ionic/p-CtWGkNnJ.js +0 -4
  767. package/dist/ionic/p-CxMyXUtt.js +0 -4
  768. package/dist/ionic/p-D13Eaw-8.js +0 -4
  769. package/dist/ionic/p-DCoy2elM.js +0 -4
  770. package/dist/ionic/p-DiVJyqlX.js +0 -4
  771. package/dist/ionic/p-DqN5EA2O.js +0 -4
  772. package/dist/ionic/p-Dr9fTCb1.js +0 -4
  773. package/dist/ionic/p-DzWaWHGc.js +0 -4
  774. package/dist/ionic/p-EkpneKVM.js +0 -4
  775. package/dist/ionic/p-Nqf6uvGh.js +0 -4
  776. package/dist/ionic/p-SNAkTDfm.js +0 -4
  777. package/dist/ionic/p-ab00b0d8.entry.js +0 -4
  778. package/dist/ionic/p-c2175309.entry.js +0 -4
  779. package/dist/ionic/p-c4b69d9b.entry.js +0 -4
  780. package/dist/ionic/p-c4d8641b.entry.js +0 -4
  781. package/dist/ionic/p-ce637936.entry.js +0 -4
  782. package/dist/ionic/p-da85e958.entry.js +0 -4
  783. package/dist/ionic/p-dfa8d673.entry.js +0 -4
  784. package/dist/ionic/p-e139357c.entry.js +0 -4
  785. package/dist/ionic/p-e7b7a7b1.entry.js +0 -4
  786. package/dist/ionic/p-f37ca594.entry.js +0 -4
  787. package/dist/ionic/p-f8dd336e.entry.js +0 -4
  788. package/dist/ionic/p-f9de757b.entry.js +0 -4
  789. package/dist/ionic/p-fe11cf51.entry.js +0 -4
  790. package/dist/ionic/p-mjKAFv89.js +0 -4
  791. package/dist/ionic/p-o8OKV5aD.js +0 -4
  792. package/dist/ionic/p-tcQvqkiX.js +0 -5
  793. package/dist/types/components/picker-legacy/animations/ios.enter.d.ts +0 -5
  794. package/dist/types/components/picker-legacy/animations/ios.leave.d.ts +0 -5
  795. package/dist/types/components/picker-legacy/picker-interface.d.ts +0 -52
  796. package/dist/types/components/picker-legacy/picker.d.ts +0 -158
  797. package/dist/types/components/picker-legacy-column/picker-column.d.ts +0 -46
  798. package/dist/types/components/picker-legacy-column/test/test.utils.d.ts +0 -9
  799. /package/components/{p-CO7fmmxt.js → p-LpMHEu3v.js} +0 -0
@@ -1,11 +1,11 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import { r as registerInstance, e as config, h, d as Host, g as getElement, c as createEvent, f as printIonWarning } from './index-tcQvqkiX.js';
5
- import { g as getElementRoot, r as raf, f as addEventListener, m as removeEventListener, t as transitionEndAsync } from './helpers-DkCLSLI9.js';
6
- import { l as chevronDown } from './index-DV3sJJW8.js';
7
- import { b as getIonMode } from './ionic-global-Cp_eT4sZ.js';
8
- import './dir-o8OKV5aD.js';
4
+ import { r as registerInstance, g as getElement, e as config, h, d as Host, c as createEvent, f as printIonWarning } from './index-ChhhtsGZ.js';
5
+ import { f as addEventListener, m as removeEventListener, r as raf, g as getElementRoot, t as transitionEndAsync } from './helpers-CAGf8Wgp.js';
6
+ import { b as chevronDown } from './index-BvabGprD.js';
7
+ import { b as getIonMode } from './ionic-global-BVB7BrLT.js';
8
+ import './dir-Dojwmvde.js';
9
9
 
10
10
  const accordionIosCss = () => `:host{display:block;position:relative;width:100%;background-color:var(--ion-background-color, #ffffff);overflow:hidden;z-index:0}:host(.accordion-expanding) ::slotted(ion-item[slot=header]),:host(.accordion-expanded) ::slotted(ion-item[slot=header]){--border-width:0px}:host(.accordion-animated){-webkit-transition:all 300ms cubic-bezier(0.25, 0.8, 0.5, 1);transition:all 300ms cubic-bezier(0.25, 0.8, 0.5, 1)}:host(.accordion-animated) #content{-webkit-transition:max-height 300ms cubic-bezier(0.25, 0.8, 0.5, 1);transition:max-height 300ms cubic-bezier(0.25, 0.8, 0.5, 1)}#content{overflow:hidden;will-change:max-height}:host(.accordion-collapsing) #content{max-height:0 !important}:host(.accordion-collapsed) #content{display:none}:host(.accordion-expanding) #content{max-height:0}:host(.accordion-expanding) #content-wrapper{overflow:auto}:host(.accordion-disabled) #header,:host(.accordion-readonly) #header,:host(.accordion-disabled) #content,:host(.accordion-readonly) #content{pointer-events:none}:host(.accordion-disabled) #header,:host(.accordion-disabled) #content{opacity:0.4}@media (prefers-reduced-motion: reduce){:host,#content{-webkit-transition:none !important;transition:none !important}}:host(.accordion-next) ::slotted(ion-item[slot=header]){--border-width:0.55px 0px 0.55px 0px}`;
11
11
 
@@ -14,329 +14,94 @@ const accordionMdCss = () => `:host{display:block;position:relative;width:100%;b
14
14
  const Accordion = class {
15
15
  constructor(hostRef) {
16
16
  registerInstance(this, hostRef);
17
- this.accordionGroupUpdateHandler = () => {
18
- /**
19
- * Determine if this update will cause an actual state change.
20
- * We only want to mark as "interacted" if the state is changing.
21
- */
22
- const accordionGroup = this.accordionGroupEl;
23
- if (accordionGroup) {
24
- const value = accordionGroup.value;
25
- const accordionValue = this.value;
26
- const shouldExpand = Array.isArray(value) ? value.includes(accordionValue) : value === accordionValue;
27
- const isExpanded = this.state === 4 /* AccordionState.Expanded */ || this.state === 8 /* AccordionState.Expanding */;
28
- const stateWillChange = shouldExpand !== isExpanded;
29
- /**
30
- * Only mark as interacted if:
31
- * 1. This is not the first update we've received with a defined value
32
- * 2. The state is actually changing (prevents redundant updates from enabling animations)
33
- */
34
- if (this.hasReceivedFirstUpdate && stateWillChange) {
35
- this.hasInteracted = true;
36
- }
37
- /**
38
- * Only count this as the first update if the group value is defined.
39
- * This prevents the initial undefined value from the group's componentDidLoad
40
- * from being treated as the first real update.
41
- */
42
- if (value !== undefined) {
43
- this.hasReceivedFirstUpdate = true;
44
- }
45
- }
46
- this.updateState();
47
- };
48
- this.state = 1 /* AccordionState.Collapsed */;
49
- this.isNext = false;
50
- this.isPrevious = false;
51
- /**
52
- * Tracks whether a user-initiated interaction has occurred.
53
- * Animations are disabled until the first interaction happens.
54
- * This prevents the accordion from animating when it's programmatically
55
- * set to an expanded or collapsed state on initial load.
56
- */
57
- this.hasInteracted = false;
58
- /**
59
- * Tracks if this accordion has ever been expanded.
60
- * Used to prevent the first expansion from animating.
61
- */
62
- this.hasEverBeenExpanded = false;
63
- /**
64
- * Tracks if this accordion has received its first update from the group.
65
- * Used to distinguish initial programmatic sets from user interactions.
66
- */
67
- this.hasReceivedFirstUpdate = false;
68
- /**
69
- * The value of the accordion. Defaults to an autogenerated
70
- * value.
71
- */
72
- this.value = `ion-accordion-${accordionIds++}`;
73
- /**
74
- * If `true`, the accordion cannot be interacted with.
75
- */
76
- this.disabled = false;
77
- /**
78
- * If `true`, the accordion cannot be interacted with,
79
- * but does not alter the opacity.
80
- */
81
- this.readonly = false;
82
- /**
83
- * The toggle icon to use. This icon will be
84
- * rotated when the accordion is expanded
85
- * or collapsed.
86
- */
87
- this.toggleIcon = chevronDown;
17
+ }
18
+ accordionGroupEl;
19
+ accordionGroupUpdateHandler = () => {
88
20
  /**
89
- * The slot inside of `ion-item` to
90
- * place the toggle icon. Defaults to `"end"`.
21
+ * Determine if this update will cause an actual state change.
22
+ * We only want to mark as "interacted" if the state is changing.
91
23
  */
92
- this.toggleIconSlot = 'end';
93
- this.setItemDefaults = () => {
94
- const ionItem = this.getSlottedHeaderIonItem();
95
- if (!ionItem) {
96
- return;
97
- }
98
- /**
99
- * For a11y purposes, we make
100
- * the ion-item a button so users
101
- * can tab to it and use keyboard
102
- * navigation to get around.
103
- */
104
- ionItem.button = true;
105
- ionItem.detail = false;
106
- /**
107
- * By default, the lines in an
108
- * item should be full here, but
109
- * only do that if a user has
110
- * not explicitly overridden them
111
- */
112
- if (ionItem.lines === undefined) {
113
- ionItem.lines = 'full';
114
- }
115
- };
116
- this.getSlottedHeaderIonItem = () => {
117
- const { headerEl } = this;
118
- if (!headerEl) {
119
- return;
120
- }
121
- /**
122
- * Get the first ion-item
123
- * slotted in the header slot
124
- */
125
- const slot = headerEl.querySelector('slot');
126
- if (!slot) {
127
- return;
128
- }
129
- // This is not defined in unit tests
130
- if (slot.assignedElements === undefined)
131
- return;
132
- return slot.assignedElements().find((el) => el.tagName === 'ION-ITEM');
133
- };
134
- this.setAria = (expanded = false) => {
135
- const ionItem = this.getSlottedHeaderIonItem();
136
- if (!ionItem) {
137
- return;
138
- }
139
- /**
140
- * Get the native <button> element inside of
141
- * ion-item because that is what will be focused
142
- */
143
- const root = getElementRoot(ionItem);
144
- const button = root.querySelector('button');
145
- if (!button) {
146
- return;
147
- }
148
- button.setAttribute('aria-expanded', `${expanded}`);
149
- };
150
- this.slotToggleIcon = () => {
151
- const ionItem = this.getSlottedHeaderIonItem();
152
- if (!ionItem) {
153
- return;
154
- }
155
- const { toggleIconSlot, toggleIcon } = this;
156
- /**
157
- * Check if there already is a toggle icon.
158
- * If so, do not add another one.
159
- */
160
- const existingToggleIcon = ionItem.querySelector('.ion-accordion-toggle-icon');
161
- if (existingToggleIcon) {
162
- return;
163
- }
164
- const iconEl = document.createElement('ion-icon');
165
- iconEl.slot = toggleIconSlot;
166
- iconEl.lazy = false;
167
- iconEl.classList.add('ion-accordion-toggle-icon');
168
- iconEl.icon = toggleIcon;
169
- iconEl.setAttribute('aria-hidden', 'true');
170
- ionItem.appendChild(iconEl);
171
- };
172
- this.expandAccordion = () => {
173
- const { contentEl, contentElWrapper } = this;
174
- /**
175
- * If the content elements aren't available yet, just set the state.
176
- * This happens on initial render before the DOM is ready.
177
- */
178
- if (contentEl === undefined || contentElWrapper === undefined) {
179
- this.state = 4 /* AccordionState.Expanded */;
180
- this.hasEverBeenExpanded = true;
181
- return;
182
- }
183
- if (this.state === 4 /* AccordionState.Expanded */) {
184
- return;
185
- }
186
- if (this.currentRaf !== undefined) {
187
- cancelAnimationFrame(this.currentRaf);
188
- }
189
- /**
190
- * Mark that this accordion has been expanded at least once.
191
- * This allows subsequent expansions to animate.
192
- */
193
- this.hasEverBeenExpanded = true;
194
- if (this.shouldAnimate()) {
195
- raf(() => {
196
- this.state = 8 /* AccordionState.Expanding */;
197
- this.currentRaf = raf(async () => {
198
- const contentHeight = contentElWrapper.offsetHeight;
199
- const waitForTransition = transitionEndAsync(contentEl, 2000);
200
- contentEl.style.setProperty('max-height', `${contentHeight}px`);
201
- await waitForTransition;
202
- this.state = 4 /* AccordionState.Expanded */;
203
- contentEl.style.removeProperty('max-height');
204
- });
205
- });
206
- }
207
- else {
208
- this.state = 4 /* AccordionState.Expanded */;
209
- }
210
- };
211
- this.collapseAccordion = () => {
212
- const { contentEl } = this;
24
+ const accordionGroup = this.accordionGroupEl;
25
+ if (accordionGroup) {
26
+ const value = accordionGroup.value;
27
+ const accordionValue = this.value;
28
+ const shouldExpand = Array.isArray(value) ? value.includes(accordionValue) : value === accordionValue;
29
+ const isExpanded = this.state === 4 /* AccordionState.Expanded */ || this.state === 8 /* AccordionState.Expanding */;
30
+ const stateWillChange = shouldExpand !== isExpanded;
213
31
  /**
214
- * If the content element isn't available yet, just set the state.
215
- * This happens on initial render before the DOM is ready.
32
+ * Only mark as interacted if:
33
+ * 1. This is not the first update we've received with a defined value
34
+ * 2. The state is actually changing (prevents redundant updates from enabling animations)
216
35
  */
217
- if (contentEl === undefined) {
218
- this.state = 1 /* AccordionState.Collapsed */;
219
- return;
220
- }
221
- if (this.state === 1 /* AccordionState.Collapsed */) {
222
- return;
223
- }
224
- if (this.currentRaf !== undefined) {
225
- cancelAnimationFrame(this.currentRaf);
36
+ if (this.hasReceivedFirstUpdate && stateWillChange) {
37
+ this.hasInteracted = true;
226
38
  }
227
- if (this.shouldAnimate()) {
228
- this.currentRaf = raf(async () => {
229
- const contentHeight = contentEl.offsetHeight;
230
- contentEl.style.setProperty('max-height', `${contentHeight}px`);
231
- raf(async () => {
232
- const waitForTransition = transitionEndAsync(contentEl, 2000);
233
- this.state = 2 /* AccordionState.Collapsing */;
234
- await waitForTransition;
235
- this.state = 1 /* AccordionState.Collapsed */;
236
- contentEl.style.removeProperty('max-height');
237
- });
238
- });
239
- }
240
- else {
241
- this.state = 1 /* AccordionState.Collapsed */;
242
- }
243
- };
244
- /**
245
- * Helper function to determine if
246
- * something should animate.
247
- * If prefers-reduced-motion is set
248
- * then we should not animate, regardless
249
- * of what is set in the config.
250
- */
251
- this.shouldAnimate = () => {
252
39
  /**
253
- * Don't animate until after the first user interaction.
254
- * This prevents animations on initial load when accordions
255
- * start in an expanded or collapsed state programmatically.
256
- *
257
- * Additionally, don't animate the very first expansion even if
258
- * hasInteracted is true. This handles edge cases like React StrictMode
259
- * where effects run twice and might incorrectly mark as interacted.
40
+ * Only count this as the first update if the group value is defined.
41
+ * This prevents the initial undefined value from the group's componentDidLoad
42
+ * from being treated as the first real update.
260
43
  */
261
- if (!this.hasInteracted || !this.hasEverBeenExpanded) {
262
- return false;
263
- }
264
- if (typeof window === 'undefined') {
265
- return false;
266
- }
267
- const prefersReducedMotion = matchMedia('(prefers-reduced-motion: reduce)').matches;
268
- if (prefersReducedMotion) {
269
- return false;
270
- }
271
- const animated = config.get('animated', true);
272
- if (!animated) {
273
- return false;
274
- }
275
- if (this.accordionGroupEl && !this.accordionGroupEl.animated) {
276
- return false;
277
- }
278
- return true;
279
- };
280
- this.updateState = async () => {
281
- const accordionGroup = this.accordionGroupEl;
282
- const accordionValue = this.value;
283
- if (!accordionGroup) {
284
- return;
285
- }
286
- const value = accordionGroup.value;
287
- const shouldExpand = Array.isArray(value) ? value.includes(accordionValue) : value === accordionValue;
288
- if (shouldExpand) {
289
- this.expandAccordion();
290
- this.isNext = this.isPrevious = false;
291
- }
292
- else {
293
- this.collapseAccordion();
294
- /**
295
- * When using popout or inset,
296
- * the collapsed accordion items
297
- * may need additional border radius
298
- * applied. Check to see if the
299
- * next or previous accordion is selected.
300
- */
301
- const nextAccordion = this.getNextSibling();
302
- const nextAccordionValue = nextAccordion === null || nextAccordion === void 0 ? void 0 : nextAccordion.value;
303
- if (nextAccordionValue !== undefined) {
304
- this.isPrevious = Array.isArray(value) ? value.includes(nextAccordionValue) : value === nextAccordionValue;
305
- }
306
- const previousAccordion = this.getPreviousSibling();
307
- const previousAccordionValue = previousAccordion === null || previousAccordion === void 0 ? void 0 : previousAccordion.value;
308
- if (previousAccordionValue !== undefined) {
309
- this.isNext = Array.isArray(value) ? value.includes(previousAccordionValue) : value === previousAccordionValue;
310
- }
311
- }
312
- };
313
- this.getNextSibling = () => {
314
- if (!this.el) {
315
- return;
44
+ if (value !== undefined) {
45
+ this.hasReceivedFirstUpdate = true;
316
46
  }
317
- const nextSibling = this.el.nextElementSibling;
318
- if ((nextSibling === null || nextSibling === void 0 ? void 0 : nextSibling.tagName) !== 'ION-ACCORDION') {
319
- return;
320
- }
321
- return nextSibling;
322
- };
323
- this.getPreviousSibling = () => {
324
- if (!this.el) {
325
- return;
326
- }
327
- const previousSibling = this.el.previousElementSibling;
328
- if ((previousSibling === null || previousSibling === void 0 ? void 0 : previousSibling.tagName) !== 'ION-ACCORDION') {
329
- return;
330
- }
331
- return previousSibling;
332
- };
333
- }
47
+ }
48
+ this.updateState();
49
+ };
50
+ contentEl;
51
+ contentElWrapper;
52
+ headerEl;
53
+ currentRaf;
54
+ get el() { return getElement(this); }
55
+ state = 1 /* AccordionState.Collapsed */;
56
+ isNext = false;
57
+ 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
+ hasInteracted = false;
65
+ /**
66
+ * Tracks if this accordion has ever been expanded.
67
+ * Used to prevent the first expansion from animating.
68
+ */
69
+ 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
+ hasReceivedFirstUpdate = false;
75
+ /**
76
+ * The value of the accordion. Defaults to an autogenerated
77
+ * value.
78
+ */
79
+ value = `ion-accordion-${accordionIds++}`;
334
80
  valueChanged() {
335
81
  this.updateState();
336
82
  }
83
+ /**
84
+ * If `true`, the accordion cannot be interacted with.
85
+ */
86
+ disabled = false;
87
+ /**
88
+ * If `true`, the accordion cannot be interacted with,
89
+ * but does not alter the opacity.
90
+ */
91
+ readonly = false;
92
+ /**
93
+ * The toggle icon to use. This icon will be
94
+ * rotated when the accordion is expanded
95
+ * or collapsed.
96
+ */
97
+ toggleIcon = chevronDown;
98
+ /**
99
+ * The slot inside of `ion-item` to
100
+ * place the toggle icon. Defaults to `"end"`.
101
+ */
102
+ toggleIconSlot = 'end';
337
103
  connectedCallback() {
338
- var _a;
339
- const accordionGroupEl = (this.accordionGroupEl = (_a = this.el) === null || _a === void 0 ? void 0 : _a.closest('ion-accordion-group'));
104
+ const accordionGroupEl = (this.accordionGroupEl = this.el?.closest('ion-accordion-group'));
340
105
  if (accordionGroupEl) {
341
106
  this.updateState();
342
107
  addEventListener(accordionGroupEl, 'ionValueChange', this.accordionGroupUpdateHandler);
@@ -365,6 +130,246 @@ const Accordion = class {
365
130
  this.setAria(expanded);
366
131
  });
367
132
  }
133
+ setItemDefaults = () => {
134
+ const ionItem = this.getSlottedHeaderIonItem();
135
+ if (!ionItem) {
136
+ return;
137
+ }
138
+ /**
139
+ * For a11y purposes, we make
140
+ * the ion-item a button so users
141
+ * can tab to it and use keyboard
142
+ * navigation to get around.
143
+ */
144
+ ionItem.button = true;
145
+ ionItem.detail = false;
146
+ /**
147
+ * By default, the lines in an
148
+ * item should be full here, but
149
+ * only do that if a user has
150
+ * not explicitly overridden them
151
+ */
152
+ if (ionItem.lines === undefined) {
153
+ ionItem.lines = 'full';
154
+ }
155
+ };
156
+ getSlottedHeaderIonItem = () => {
157
+ const { headerEl } = this;
158
+ if (!headerEl) {
159
+ return;
160
+ }
161
+ /**
162
+ * Get the first ion-item
163
+ * slotted in the header slot
164
+ */
165
+ const slot = headerEl.querySelector('slot');
166
+ if (!slot) {
167
+ return;
168
+ }
169
+ // This is not defined in unit tests
170
+ if (slot.assignedElements === undefined)
171
+ return;
172
+ return slot.assignedElements().find((el) => el.tagName === 'ION-ITEM');
173
+ };
174
+ setAria = (expanded = false) => {
175
+ const ionItem = this.getSlottedHeaderIonItem();
176
+ if (!ionItem) {
177
+ return;
178
+ }
179
+ /**
180
+ * Get the native <button> element inside of
181
+ * ion-item because that is what will be focused
182
+ */
183
+ const root = getElementRoot(ionItem);
184
+ const button = root.querySelector('button');
185
+ if (!button) {
186
+ return;
187
+ }
188
+ button.setAttribute('aria-expanded', `${expanded}`);
189
+ };
190
+ slotToggleIcon = () => {
191
+ const ionItem = this.getSlottedHeaderIonItem();
192
+ if (!ionItem) {
193
+ return;
194
+ }
195
+ const { toggleIconSlot, toggleIcon } = this;
196
+ /**
197
+ * Check if there already is a toggle icon.
198
+ * If so, do not add another one.
199
+ */
200
+ const existingToggleIcon = ionItem.querySelector('.ion-accordion-toggle-icon');
201
+ if (existingToggleIcon) {
202
+ return;
203
+ }
204
+ const iconEl = document.createElement('ion-icon');
205
+ iconEl.slot = toggleIconSlot;
206
+ iconEl.lazy = false;
207
+ iconEl.classList.add('ion-accordion-toggle-icon');
208
+ iconEl.icon = toggleIcon;
209
+ iconEl.setAttribute('aria-hidden', 'true');
210
+ ionItem.appendChild(iconEl);
211
+ };
212
+ expandAccordion = () => {
213
+ const { contentEl, contentElWrapper } = this;
214
+ /**
215
+ * If the content elements aren't available yet, just set the state.
216
+ * This happens on initial render before the DOM is ready.
217
+ */
218
+ if (contentEl === undefined || contentElWrapper === undefined) {
219
+ this.state = 4 /* AccordionState.Expanded */;
220
+ this.hasEverBeenExpanded = true;
221
+ return;
222
+ }
223
+ if (this.state === 4 /* AccordionState.Expanded */) {
224
+ return;
225
+ }
226
+ if (this.currentRaf !== undefined) {
227
+ cancelAnimationFrame(this.currentRaf);
228
+ }
229
+ /**
230
+ * Mark that this accordion has been expanded at least once.
231
+ * This allows subsequent expansions to animate.
232
+ */
233
+ this.hasEverBeenExpanded = true;
234
+ if (this.shouldAnimate()) {
235
+ raf(() => {
236
+ this.state = 8 /* AccordionState.Expanding */;
237
+ this.currentRaf = raf(async () => {
238
+ const contentHeight = contentElWrapper.offsetHeight;
239
+ const waitForTransition = transitionEndAsync(contentEl, 2000);
240
+ contentEl.style.setProperty('max-height', `${contentHeight}px`);
241
+ await waitForTransition;
242
+ this.state = 4 /* AccordionState.Expanded */;
243
+ contentEl.style.removeProperty('max-height');
244
+ });
245
+ });
246
+ }
247
+ else {
248
+ this.state = 4 /* AccordionState.Expanded */;
249
+ }
250
+ };
251
+ collapseAccordion = () => {
252
+ const { contentEl } = this;
253
+ /**
254
+ * If the content element isn't available yet, just set the state.
255
+ * This happens on initial render before the DOM is ready.
256
+ */
257
+ if (contentEl === undefined) {
258
+ this.state = 1 /* AccordionState.Collapsed */;
259
+ return;
260
+ }
261
+ if (this.state === 1 /* AccordionState.Collapsed */) {
262
+ return;
263
+ }
264
+ if (this.currentRaf !== undefined) {
265
+ cancelAnimationFrame(this.currentRaf);
266
+ }
267
+ if (this.shouldAnimate()) {
268
+ this.currentRaf = raf(async () => {
269
+ const contentHeight = contentEl.offsetHeight;
270
+ contentEl.style.setProperty('max-height', `${contentHeight}px`);
271
+ raf(async () => {
272
+ const waitForTransition = transitionEndAsync(contentEl, 2000);
273
+ this.state = 2 /* AccordionState.Collapsing */;
274
+ await waitForTransition;
275
+ this.state = 1 /* AccordionState.Collapsed */;
276
+ contentEl.style.removeProperty('max-height');
277
+ });
278
+ });
279
+ }
280
+ else {
281
+ this.state = 1 /* AccordionState.Collapsed */;
282
+ }
283
+ };
284
+ /**
285
+ * Helper function to determine if
286
+ * something should animate.
287
+ * If prefers-reduced-motion is set
288
+ * then we should not animate, regardless
289
+ * of what is set in the config.
290
+ */
291
+ shouldAnimate = () => {
292
+ /**
293
+ * Don't animate until after the first user interaction.
294
+ * This prevents animations on initial load when accordions
295
+ * start in an expanded or collapsed state programmatically.
296
+ *
297
+ * Additionally, don't animate the very first expansion even if
298
+ * hasInteracted is true. This handles edge cases like React StrictMode
299
+ * where effects run twice and might incorrectly mark as interacted.
300
+ */
301
+ if (!this.hasInteracted || !this.hasEverBeenExpanded) {
302
+ return false;
303
+ }
304
+ if (typeof window === 'undefined') {
305
+ return false;
306
+ }
307
+ const prefersReducedMotion = matchMedia('(prefers-reduced-motion: reduce)').matches;
308
+ if (prefersReducedMotion) {
309
+ return false;
310
+ }
311
+ const animated = config.get('animated', true);
312
+ if (!animated) {
313
+ return false;
314
+ }
315
+ if (this.accordionGroupEl && !this.accordionGroupEl.animated) {
316
+ return false;
317
+ }
318
+ return true;
319
+ };
320
+ updateState = async () => {
321
+ const accordionGroup = this.accordionGroupEl;
322
+ const accordionValue = this.value;
323
+ if (!accordionGroup) {
324
+ return;
325
+ }
326
+ const value = accordionGroup.value;
327
+ const shouldExpand = Array.isArray(value) ? value.includes(accordionValue) : value === accordionValue;
328
+ if (shouldExpand) {
329
+ this.expandAccordion();
330
+ this.isNext = this.isPrevious = false;
331
+ }
332
+ else {
333
+ this.collapseAccordion();
334
+ /**
335
+ * When using popout or inset,
336
+ * the collapsed accordion items
337
+ * may need additional border radius
338
+ * applied. Check to see if the
339
+ * next or previous accordion is selected.
340
+ */
341
+ const nextAccordion = this.getNextSibling();
342
+ const nextAccordionValue = nextAccordion?.value;
343
+ if (nextAccordionValue !== undefined) {
344
+ this.isPrevious = Array.isArray(value) ? value.includes(nextAccordionValue) : value === nextAccordionValue;
345
+ }
346
+ const previousAccordion = this.getPreviousSibling();
347
+ const previousAccordionValue = previousAccordion?.value;
348
+ if (previousAccordionValue !== undefined) {
349
+ this.isNext = Array.isArray(value) ? value.includes(previousAccordionValue) : value === previousAccordionValue;
350
+ }
351
+ }
352
+ };
353
+ getNextSibling = () => {
354
+ if (!this.el) {
355
+ return;
356
+ }
357
+ const nextSibling = this.el.nextElementSibling;
358
+ if (nextSibling?.tagName !== 'ION-ACCORDION') {
359
+ return;
360
+ }
361
+ return nextSibling;
362
+ };
363
+ getPreviousSibling = () => {
364
+ if (!this.el) {
365
+ return;
366
+ }
367
+ const previousSibling = this.el.previousElementSibling;
368
+ if (previousSibling?.tagName !== 'ION-ACCORDION') {
369
+ return;
370
+ }
371
+ return previousSibling;
372
+ };
368
373
  toggleExpanded() {
369
374
  const { accordionGroupEl, disabled, readonly, value, state } = this;
370
375
  if (disabled || readonly)
@@ -408,7 +413,6 @@ const Accordion = class {
408
413
  }, tabindex: disabled ? '-1' : undefined }, h("div", { key: 'f76bc02347639b41c9a5be8a9488a8be8559cba7', onClick: () => this.toggleExpanded(), id: "header", part: headerPart, "aria-controls": "content", ref: (headerEl) => (this.headerEl = headerEl) }, h("slot", { key: 'e01744bf0af3200239e82c60c632ed36295db2da', name: "header" })), h("div", { key: 'c613345a7e244ee361f76ff4ebed139d2a1b9572', id: "content", part: contentPart, role: "region", "aria-labelledby": "header", ref: (contentEl) => (this.contentEl = contentEl) }, h("div", { key: '943b65d9a129759b4c213974ae5ed777b5f6166e', id: "content-wrapper", ref: (contentElWrapper) => (this.contentElWrapper = contentElWrapper) }, h("slot", { key: 'b0df520dad9d5557df63a35f8206ada4a765d238', name: "content" })))));
409
414
  }
410
415
  static get delegatesFocus() { return true; }
411
- get el() { return getElement(this); }
412
416
  static get watchers() { return {
413
417
  "value": [{
414
418
  "valueChanged": 0
@@ -430,28 +434,53 @@ const AccordionGroup = class {
430
434
  registerInstance(this, hostRef);
431
435
  this.ionChange = createEvent(this, "ionChange", 7);
432
436
  this.ionValueChange = createEvent(this, "ionValueChange", 7);
433
- /**
434
- * If `true`, all accordions inside of the
435
- * accordion group will animate when expanding
436
- * or collapsing.
437
- */
438
- this.animated = true;
439
- /**
440
- * If `true`, the accordion group cannot be interacted with.
441
- */
442
- this.disabled = false;
443
- /**
444
- * If `true`, the accordion group cannot be interacted with,
445
- * but does not alter the opacity.
446
- */
447
- this.readonly = false;
448
- /**
449
- * Describes the expansion behavior for each accordion.
450
- * Possible values are `"compact"` and `"inset"`.
451
- * Defaults to `"compact"`.
452
- */
453
- this.expand = 'compact';
454
437
  }
438
+ get el() { return getElement(this); }
439
+ /**
440
+ * If `true`, all accordions inside of the
441
+ * accordion group will animate when expanding
442
+ * or collapsing.
443
+ */
444
+ animated = true;
445
+ /**
446
+ * If `true`, the accordion group can have multiple
447
+ * accordion components expanded at the same time.
448
+ */
449
+ multiple;
450
+ /**
451
+ * The value of the accordion group. This controls which
452
+ * accordions are expanded.
453
+ * This should be an array of strings only when `multiple="true"`
454
+ */
455
+ value;
456
+ /**
457
+ * If `true`, the accordion group cannot be interacted with.
458
+ */
459
+ disabled = false;
460
+ /**
461
+ * If `true`, the accordion group cannot be interacted with,
462
+ * but does not alter the opacity.
463
+ */
464
+ readonly = false;
465
+ /**
466
+ * Describes the expansion behavior for each accordion.
467
+ * Possible values are `"compact"` and `"inset"`.
468
+ * Defaults to `"compact"`.
469
+ */
470
+ expand = 'compact';
471
+ /**
472
+ * Emitted when the value property has changed as a result of a user action such as a click.
473
+ *
474
+ * This event will not emit when programmatically setting the `value` property.
475
+ */
476
+ ionChange;
477
+ /**
478
+ * Emitted when the value property has changed.
479
+ * This is used to ensure that ion-accordion can respond
480
+ * to any value property changes.
481
+ * @internal
482
+ */
483
+ ionValueChange;
455
484
  valueChanged() {
456
485
  const { value, multiple } = this;
457
486
  if (!multiple && Array.isArray(value)) {
@@ -584,7 +613,7 @@ const AccordionGroup = class {
584
613
  * to the array.
585
614
  */
586
615
  if (multiple) {
587
- const groupValue = value !== null && value !== void 0 ? value : [];
616
+ const groupValue = value ?? [];
588
617
  const processedValue = Array.isArray(groupValue) ? groupValue : [groupValue];
589
618
  const valueExists = processedValue.find((v) => v === accordionValue);
590
619
  if (valueExists === undefined && accordionValue !== undefined) {
@@ -601,7 +630,7 @@ const AccordionGroup = class {
601
630
  * out of the values array or unset the value.
602
631
  */
603
632
  if (multiple) {
604
- const groupValue = value !== null && value !== void 0 ? value : [];
633
+ const groupValue = value ?? [];
605
634
  const processedValue = Array.isArray(groupValue) ? groupValue : [groupValue];
606
635
  this.setValue(processedValue.filter((v) => v !== accordionValue));
607
636
  }
@@ -640,7 +669,6 @@ const AccordionGroup = class {
640
669
  [`accordion-group-expand-${expand}`]: true,
641
670
  }, role: "presentation" }, h("slot", { key: 'e6b8954b686d1fbb4fc92adb07fddc97a24b0a31' })));
642
671
  }
643
- get el() { return getElement(this); }
644
672
  static get watchers() { return {
645
673
  "value": [{
646
674
  "valueChanged": 0