@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
@@ -3,12 +3,12 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-BfaXsATC.js');
7
- var index$1 = require('./index-CD92bI7B.js');
8
- var helpers = require('./helpers-DdZyl6WL.js');
9
- var dir = require('./dir-DD0jPVH3.js');
10
- var theme = require('./theme-CeDs6Hcv.js');
11
- var ionicGlobal = require('./ionic-global-BerQGEpE.js');
6
+ var index = require('./index-uvry__L4.js');
7
+ var index$1 = require('./index-zVCah4Uz.js');
8
+ var helpers = require('./helpers-YPQybDph.js');
9
+ var dir = require('./dir-zwDPRE5K.js');
10
+ var theme = require('./theme-Bw0rpaNN.js');
11
+ var ionicGlobal = require('./ionic-global-k6hOWWpn.js');
12
12
 
13
13
  function getDecimalPlaces(n) {
14
14
  if (!helpers.isSafeNumber(n))
@@ -69,239 +69,82 @@ const Range = class {
69
69
  this.ionBlur = index.createEvent(this, "ionBlur", 7);
70
70
  this.ionKnobMoveStart = index.createEvent(this, "ionKnobMoveStart", 7);
71
71
  this.ionKnobMoveEnd = index.createEvent(this, "ionKnobMoveEnd", 7);
72
- this.rangeId = `ion-r-${rangeIds++}`;
73
- this.didLoad = false;
74
- this.noUpdate = false;
75
- this.hasFocus = false;
76
- this.inheritedAttributes = {};
77
- this.contentEl = null;
78
- this.initialContentScrollY = true;
79
- /**
80
- * Used to avoid setting the focused state on click or tap. The focused
81
- * state is only set when the focus comes from the keyboard (e.g. Tab).
82
- * This is set to true on pointer down (mouse/touch).
83
- */
84
- this.focusFromPointer = false;
85
- this.ratioA = 0;
86
- this.ratioB = 0;
87
- /**
88
- * The name of the control, which is submitted with the form data.
89
- */
90
- this.name = this.rangeId;
91
- /**
92
- * If `true`, the range shows two knobs and `value` is an object with `lower`
93
- * and `upper` properties. If `false`, the range shows one knob and `value` is
94
- * a number.
95
- */
96
- this.dualKnobs = false;
97
- /**
98
- * Minimum integer value of the range.
99
- */
100
- this.min = 0;
101
- /**
102
- * Maximum integer value of the range.
103
- */
104
- this.max = 100;
105
- /**
106
- * If `true`, a pin with integer value is shown when the knob
107
- * is pressed.
108
- */
109
- this.pin = false;
110
- /**
111
- * A callback used to format the pin text.
112
- * By default the pin text is set to `Math.round(value)`.
113
- *
114
- * See https://ionicframework.com/docs/troubleshooting/runtime#accessing-this
115
- * if you need to access `this` from within the callback.
116
- */
117
- this.pinFormatter = (value) => Math.round(value);
118
- /**
119
- * If `true`, the knob snaps to tick marks evenly spaced based
120
- * on the step property value.
121
- */
122
- this.snaps = false;
123
- /**
124
- * Specifies the value granularity.
125
- */
126
- this.step = 1;
127
- /**
128
- * If `true`, tick marks are displayed based on the step value.
129
- * Only applies when `snaps` is `true`.
130
- */
131
- this.ticks = true;
132
- /**
133
- * If `true`, the user cannot interact with the range.
134
- */
135
- this.disabled = false;
136
- /**
137
- * the value of the range.
138
- */
139
- this.value = 0;
140
- /**
141
- * Compares two RangeValue inputs to determine if they are different.
142
- *
143
- * @param newVal - The new value.
144
- * @param oldVal - The old value.
145
- * @returns `true` if the values are different, `false` otherwise.
146
- */
147
- this.compareValues = (newVal, oldVal) => {
148
- if (typeof newVal === 'object' && typeof oldVal === 'object') {
149
- return newVal.lower !== oldVal.lower || newVal.upper !== oldVal.upper;
150
- }
151
- return newVal !== oldVal;
152
- };
153
- this.clampBounds = (value) => {
154
- return helpers.clamp(this.min, value, this.max);
155
- };
156
- this.ensureValueInBounds = (value) => {
157
- if (this.dualKnobs) {
158
- return {
159
- lower: this.clampBounds(value.lower),
160
- upper: this.clampBounds(value.upper),
161
- };
162
- }
163
- else {
164
- return this.clampBounds(value);
165
- }
166
- };
167
- /**
168
- * Where to place the label relative to the range.
169
- * `"start"`: The label will appear to the left of the range in LTR and to the right in RTL.
170
- * `"end"`: The label will appear to the right of the range in LTR and to the left in RTL.
171
- * `"fixed"`: The label has the same behavior as `"start"` except it also has a fixed width. Long text will be truncated with ellipses ("...").
172
- * `"stacked"`: The label will appear above the range regardless of the direction.
173
- */
174
- this.labelPlacement = 'start';
175
- this.setupGesture = async () => {
176
- const rangeSlider = this.rangeSlider;
177
- if (rangeSlider) {
178
- this.gesture = (await Promise.resolve().then(function () { return require('./index-BJ2-LydH.js'); })).createGesture({
179
- el: rangeSlider,
180
- gestureName: 'range',
181
- gesturePriority: 100,
182
- /**
183
- * Provide a threshold since the drag movement
184
- * might be a user scrolling the view.
185
- * If this is true, then the range
186
- * should not move.
187
- */
188
- threshold: 10,
189
- onStart: () => this.onStart(),
190
- onMove: (ev) => this.onMove(ev),
191
- onEnd: (ev) => this.onEnd(ev),
192
- });
193
- this.gesture.enable(!this.disabled);
194
- }
195
- };
196
- /**
197
- * Observes the knob handles for the ion-activated class and syncs
198
- * activatedKnob so the activated part is correctly set on the handle,
199
- * knob, and pin.
200
- */
201
- this.setupActivatedObserver = () => {
202
- const knobHandleA = this.el.shadowRoot.querySelector('.range-knob-handle-a');
203
- const knobHandleB = this.el.shadowRoot.querySelector('.range-knob-handle-b');
204
- const syncActivated = () => {
205
- this.activatedKnob = (knobHandleA === null || knobHandleA === void 0 ? void 0 : knobHandleA.classList.contains('ion-activated'))
206
- ? 'A'
207
- : (knobHandleB === null || knobHandleB === void 0 ? void 0 : knobHandleB.classList.contains('ion-activated'))
208
- ? 'B'
209
- : undefined;
210
- };
211
- if (typeof MutationObserver !== 'undefined') {
212
- this.activatedObserver = new MutationObserver(syncActivated);
213
- this.activatedObserver.observe(this.el.shadowRoot, {
214
- attributes: true,
215
- attributeFilter: ['class'],
216
- subtree: true,
217
- });
218
- }
219
- syncActivated();
220
- };
221
- this.handleKeyboard = (knob, isIncrease) => {
222
- const { ensureValueInBounds } = this;
223
- let step = this.step;
224
- step = step > 0 ? step : 1;
225
- step = step / (this.max - this.min);
226
- if (!isIncrease) {
227
- step *= -1;
228
- }
229
- if (knob === 'A') {
230
- this.ratioA = helpers.clamp(0, this.ratioA + step, 1);
231
- }
232
- else {
233
- this.ratioB = helpers.clamp(0, this.ratioB + step, 1);
234
- }
235
- this.ionKnobMoveStart.emit({ value: ensureValueInBounds(this.value) });
236
- this.updateValue();
237
- this.emitValueChange();
238
- this.ionKnobMoveEnd.emit({ value: ensureValueInBounds(this.value) });
239
- };
240
- this.onBlur = () => {
241
- if (this.hasFocus) {
242
- this.hasFocus = false;
243
- this.focusedKnob = undefined;
244
- this.ionBlur.emit();
245
- }
246
- };
247
- this.onFocus = () => {
248
- if (!this.hasFocus) {
249
- this.hasFocus = true;
250
- this.ionFocus.emit();
251
- }
252
- };
253
- this.onKnobFocus = (knob) => {
254
- // Clicking focuses the range which is needed for the keyboard,
255
- // but we only want to add the ion-focused class when focused via Tab.
256
- if (!this.focusFromPointer) {
257
- this.focusedKnob = knob;
258
- }
259
- else {
260
- this.focusFromPointer = false;
261
- this.focusedKnob = undefined;
262
- }
263
- // If the knob was not already focused, emit the focus event
264
- if (!this.hasFocus) {
265
- this.hasFocus = true;
266
- this.ionFocus.emit();
267
- }
268
- };
269
- this.onKnobBlur = () => {
270
- // Check if focus is moving to another knob within the same range
271
- // by delaying the reset to allow the new focus to register
272
- setTimeout(() => {
273
- var _a;
274
- const activeElement = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.activeElement;
275
- const isStillFocusedOnKnob = activeElement && activeElement.classList.contains('range-knob-handle');
276
- if (!isStillFocusedOnKnob) {
277
- if (this.hasFocus) {
278
- this.hasFocus = false;
279
- this.focusedKnob = undefined;
280
- this.ionBlur.emit();
281
- }
282
- }
283
- }, 0);
284
- };
285
- this.onKnobMouseEnter = (knob) => {
286
- this.hoveredKnob = knob;
287
- };
288
- this.onKnobMouseLeave = () => {
289
- this.hoveredKnob = undefined;
290
- };
291
72
  }
73
+ rangeId = `ion-r-${rangeIds++}`;
74
+ didLoad = false;
75
+ noUpdate = false;
76
+ rect;
77
+ hasFocus = false;
78
+ rangeSlider;
79
+ gesture;
80
+ inheritedAttributes = {};
81
+ contentEl = null;
82
+ initialContentScrollY = true;
83
+ originalIonInput;
84
+ /**
85
+ * Used to avoid setting the focused state on click or tap. The focused
86
+ * state is only set when the focus comes from the keyboard (e.g. Tab).
87
+ * This is set to true on pointer down (mouse/touch).
88
+ */
89
+ focusFromPointer = false;
90
+ /**
91
+ * Observes class changes on the knob handles to keep the activatedKnob
92
+ * state in sync with the ion-activated class. This is necessary to
93
+ * determine which knob the user is dragging when using dual knobs and
94
+ * apply the activated part correctly.
95
+ */
96
+ activatedObserver;
97
+ get el() { return index.getElement(this); }
98
+ ratioA = 0;
99
+ ratioB = 0;
100
+ activatedKnob;
101
+ focusedKnob;
102
+ hoveredKnob;
103
+ pressedKnob;
104
+ /**
105
+ * The color to use from your application's color palette.
106
+ * Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`.
107
+ * For more information on colors, see [theming](/docs/theming/basics).
108
+ */
109
+ color;
110
+ /**
111
+ * How long, in milliseconds, to wait to trigger the
112
+ * `ionInput` event after each change in the range value.
113
+ */
114
+ debounce;
292
115
  debounceChanged() {
293
116
  const { ionInput, debounce, originalIonInput } = this;
294
117
  /**
295
118
  * If debounce is undefined, we have to manually revert the ionInput emitter in case
296
119
  * debounce used to be set to a number. Otherwise, the event would stay debounced.
297
120
  */
298
- this.ionInput = debounce === undefined ? originalIonInput !== null && originalIonInput !== void 0 ? originalIonInput : ionInput : helpers.debounceEvent(ionInput, debounce);
121
+ this.ionInput = debounce === undefined ? originalIonInput ?? ionInput : helpers.debounceEvent(ionInput, debounce);
299
122
  }
123
+ /**
124
+ * The name of the control, which is submitted with the form data.
125
+ */
126
+ name = this.rangeId;
127
+ /**
128
+ * The text to display as the control's label. Use this over the `label` slot if
129
+ * you only need plain text. The `label` property will take priority over the
130
+ * `label` slot if both are used.
131
+ */
132
+ label;
133
+ /**
134
+ * If `true`, the range shows two knobs and `value` is an object with `lower`
135
+ * and `upper` properties. If `false`, the range shows one knob and `value` is
136
+ * a number.
137
+ */
138
+ dualKnobs = false;
300
139
  dualKnobsChanged() {
301
140
  if (!this.noUpdate) {
302
141
  this.updateRatio();
303
142
  }
304
143
  }
144
+ /**
145
+ * Minimum integer value of the range.
146
+ */
147
+ min = 0;
305
148
  minChanged(newValue) {
306
149
  if (!helpers.isSafeNumber(newValue)) {
307
150
  this.min = 0;
@@ -310,6 +153,10 @@ const Range = class {
310
153
  this.updateRatio();
311
154
  }
312
155
  }
156
+ /**
157
+ * Maximum integer value of the range.
158
+ */
159
+ max = 100;
313
160
  maxChanged(newValue) {
314
161
  if (!helpers.isSafeNumber(newValue)) {
315
162
  this.max = 100;
@@ -318,11 +165,43 @@ const Range = class {
318
165
  this.updateRatio();
319
166
  }
320
167
  }
168
+ /**
169
+ * If `true`, a pin with integer value is shown when the knob
170
+ * is pressed.
171
+ */
172
+ pin = false;
173
+ /**
174
+ * A callback used to format the pin text.
175
+ * By default the pin text is set to `Math.round(value)`.
176
+ *
177
+ * See https://ionicframework.com/docs/troubleshooting/runtime#accessing-this
178
+ * if you need to access `this` from within the callback.
179
+ */
180
+ pinFormatter = (value) => Math.round(value);
181
+ /**
182
+ * If `true`, the knob snaps to tick marks evenly spaced based
183
+ * on the step property value.
184
+ */
185
+ snaps = false;
186
+ /**
187
+ * Specifies the value granularity.
188
+ */
189
+ step = 1;
321
190
  stepChanged(newValue) {
322
191
  if (!helpers.isSafeNumber(newValue)) {
323
192
  this.step = 1;
324
193
  }
325
194
  }
195
+ /**
196
+ * If `true`, tick marks are displayed based on the step value.
197
+ * Only applies when `snaps` is `true`.
198
+ */
199
+ ticks = true;
200
+ /**
201
+ * The start position of the range active bar. This feature is only available with a single knob (dualKnobs="false").
202
+ * Valid values are greater than or equal to the min value and less than or equal to the max value.
203
+ */
204
+ activeBarStart;
326
205
  activeBarStartChanged() {
327
206
  const { activeBarStart } = this;
328
207
  if (activeBarStart !== undefined) {
@@ -336,11 +215,19 @@ const Range = class {
336
215
  }
337
216
  }
338
217
  }
218
+ /**
219
+ * If `true`, the user cannot interact with the range.
220
+ */
221
+ disabled = false;
339
222
  disabledChanged() {
340
223
  if (this.gesture) {
341
224
  this.gesture.enable(!this.disabled);
342
225
  }
343
226
  }
227
+ /**
228
+ * the value of the range.
229
+ */
230
+ value = 0;
344
231
  valueChanged(newValue, oldValue) {
345
232
  const valuesChanged = this.compareValues(newValue, oldValue);
346
233
  if (valuesChanged) {
@@ -350,6 +237,120 @@ const Range = class {
350
237
  this.updateRatio();
351
238
  }
352
239
  }
240
+ /**
241
+ * Compares two RangeValue inputs to determine if they are different.
242
+ *
243
+ * @param newVal - The new value.
244
+ * @param oldVal - The old value.
245
+ * @returns `true` if the values are different, `false` otherwise.
246
+ */
247
+ compareValues = (newVal, oldVal) => {
248
+ if (typeof newVal === 'object' && typeof oldVal === 'object') {
249
+ return newVal.lower !== oldVal.lower || newVal.upper !== oldVal.upper;
250
+ }
251
+ return newVal !== oldVal;
252
+ };
253
+ clampBounds = (value) => {
254
+ return helpers.clamp(this.min, value, this.max);
255
+ };
256
+ ensureValueInBounds = (value) => {
257
+ if (this.dualKnobs) {
258
+ return {
259
+ lower: this.clampBounds(value.lower),
260
+ upper: this.clampBounds(value.upper),
261
+ };
262
+ }
263
+ else {
264
+ return this.clampBounds(value);
265
+ }
266
+ };
267
+ /**
268
+ * Where to place the label relative to the range.
269
+ * `"start"`: The label will appear to the left of the range in LTR and to the right in RTL.
270
+ * `"end"`: The label will appear to the right of the range in LTR and to the left in RTL.
271
+ * `"fixed"`: The label has the same behavior as `"start"` except it also has a fixed width. Long text will be truncated with ellipses ("...").
272
+ * `"stacked"`: The label will appear above the range regardless of the direction.
273
+ */
274
+ labelPlacement = 'start';
275
+ /**
276
+ * The `ionChange` event is fired for `<ion-range>` elements when the user
277
+ * modifies the element's value:
278
+ * - When the user releases the knob after dragging;
279
+ * - When the user moves the knob with keyboard arrows
280
+ *
281
+ * This event will not emit when programmatically setting the `value` property.
282
+ */
283
+ ionChange;
284
+ /**
285
+ * The `ionInput` event is fired for `<ion-range>` elements when the value
286
+ * is modified. Unlike `ionChange`, `ionInput` is fired continuously
287
+ * while the user is dragging the knob.
288
+ */
289
+ ionInput;
290
+ /**
291
+ * Emitted when the range has focus.
292
+ */
293
+ ionFocus;
294
+ /**
295
+ * Emitted when the range loses focus.
296
+ */
297
+ ionBlur;
298
+ /**
299
+ * Emitted when the user starts moving the range knob, whether through
300
+ * mouse drag, touch gesture, or keyboard interaction.
301
+ */
302
+ ionKnobMoveStart;
303
+ /**
304
+ * Emitted when the user finishes moving the range knob, whether through
305
+ * mouse drag, touch gesture, or keyboard interaction.
306
+ */
307
+ ionKnobMoveEnd;
308
+ setupGesture = async () => {
309
+ const rangeSlider = this.rangeSlider;
310
+ if (rangeSlider) {
311
+ this.gesture = (await Promise.resolve().then(function () { return require('./index-DwlRtFZe.js'); })).createGesture({
312
+ el: rangeSlider,
313
+ gestureName: 'range',
314
+ gesturePriority: 100,
315
+ /**
316
+ * Provide a threshold since the drag movement
317
+ * might be a user scrolling the view.
318
+ * If this is true, then the range
319
+ * should not move.
320
+ */
321
+ threshold: 10,
322
+ onStart: () => this.onStart(),
323
+ onMove: (ev) => this.onMove(ev),
324
+ onEnd: (ev) => this.onEnd(ev),
325
+ });
326
+ this.gesture.enable(!this.disabled);
327
+ }
328
+ };
329
+ /**
330
+ * Observes the knob handles for the ion-activated class and syncs
331
+ * activatedKnob so the activated part is correctly set on the handle,
332
+ * knob, and pin.
333
+ */
334
+ setupActivatedObserver = () => {
335
+ const knobHandleA = this.el.shadowRoot.querySelector('.range-knob-handle-a');
336
+ const knobHandleB = this.el.shadowRoot.querySelector('.range-knob-handle-b');
337
+ const syncActivated = () => {
338
+ this.activatedKnob = knobHandleA?.classList.contains('ion-activated')
339
+ ? 'A'
340
+ : knobHandleB?.classList.contains('ion-activated')
341
+ ? 'B'
342
+ : undefined;
343
+ };
344
+ if (typeof MutationObserver !== 'undefined') {
345
+ this.activatedObserver = new MutationObserver(syncActivated);
346
+ this.activatedObserver.observe(this.el.shadowRoot, {
347
+ attributes: true,
348
+ attributeFilter: ['class'],
349
+ subtree: true,
350
+ });
351
+ }
352
+ syncActivated();
353
+ };
353
354
  componentWillLoad() {
354
355
  /**
355
356
  * If user has custom ID set then we should
@@ -373,7 +374,6 @@ const Range = class {
373
374
  this.didLoad = true;
374
375
  }
375
376
  connectedCallback() {
376
- var _a;
377
377
  this.updateRatio();
378
378
  this.debounceChanged();
379
379
  this.disabledChanged();
@@ -389,7 +389,7 @@ const Range = class {
389
389
  this.setupActivatedObserver();
390
390
  }
391
391
  const ionContent = index$1.findClosestIonContent(this.el);
392
- this.contentEl = (_a = ionContent === null || ionContent === void 0 ? void 0 : ionContent.querySelector('.ion-content-scroll-host')) !== null && _a !== void 0 ? _a : ionContent;
392
+ this.contentEl = ionContent?.querySelector('.ion-content-scroll-host') ?? ionContent;
393
393
  }
394
394
  disconnectedCallback() {
395
395
  if (this.gesture) {
@@ -401,9 +401,27 @@ const Range = class {
401
401
  this.activatedObserver = undefined;
402
402
  }
403
403
  }
404
+ handleKeyboard = (knob, isIncrease) => {
405
+ const { ensureValueInBounds } = this;
406
+ let step = this.step;
407
+ step = step > 0 ? step : 1;
408
+ step = step / (this.max - this.min);
409
+ if (!isIncrease) {
410
+ step *= -1;
411
+ }
412
+ if (knob === 'A') {
413
+ this.ratioA = helpers.clamp(0, this.ratioA + step, 1);
414
+ }
415
+ else {
416
+ this.ratioB = helpers.clamp(0, this.ratioB + step, 1);
417
+ }
418
+ this.ionKnobMoveStart.emit({ value: ensureValueInBounds(this.value) });
419
+ this.updateValue();
420
+ this.emitValueChange();
421
+ this.ionKnobMoveEnd.emit({ value: ensureValueInBounds(this.value) });
422
+ };
404
423
  getValue() {
405
- var _a;
406
- const value = (_a = this.value) !== null && _a !== void 0 ? _a : 0;
424
+ const value = this.value ?? 0;
407
425
  if (this.dualKnobs) {
408
426
  if (typeof value === 'object') {
409
427
  return value;
@@ -489,9 +507,8 @@ const Range = class {
489
507
  * @param detail The details of the gesture or mouse event.
490
508
  */
491
509
  onEnd(detail) {
492
- var _a;
493
510
  const { contentEl, initialContentScrollY } = this;
494
- const currentX = (_a = detail.currentX) !== null && _a !== void 0 ? _a : detail.clientX;
511
+ const currentX = detail.currentX ?? detail.clientX;
495
512
  /**
496
513
  * The `pressedKnob` can be undefined if the user never
497
514
  * dragged the knob. They just tapped on the bar.
@@ -611,6 +628,56 @@ const Range = class {
611
628
  };
612
629
  this.noUpdate = false;
613
630
  }
631
+ onBlur = () => {
632
+ if (this.hasFocus) {
633
+ this.hasFocus = false;
634
+ this.focusedKnob = undefined;
635
+ this.ionBlur.emit();
636
+ }
637
+ };
638
+ onFocus = () => {
639
+ if (!this.hasFocus) {
640
+ this.hasFocus = true;
641
+ this.ionFocus.emit();
642
+ }
643
+ };
644
+ onKnobFocus = (knob) => {
645
+ // Clicking focuses the range which is needed for the keyboard,
646
+ // but we only want to add the ion-focused class when focused via Tab.
647
+ if (!this.focusFromPointer) {
648
+ this.focusedKnob = knob;
649
+ }
650
+ else {
651
+ this.focusFromPointer = false;
652
+ this.focusedKnob = undefined;
653
+ }
654
+ // If the knob was not already focused, emit the focus event
655
+ if (!this.hasFocus) {
656
+ this.hasFocus = true;
657
+ this.ionFocus.emit();
658
+ }
659
+ };
660
+ onKnobBlur = () => {
661
+ // Check if focus is moving to another knob within the same range
662
+ // by delaying the reset to allow the new focus to register
663
+ setTimeout(() => {
664
+ const activeElement = this.el.shadowRoot?.activeElement;
665
+ const isStillFocusedOnKnob = activeElement && activeElement.classList.contains('range-knob-handle');
666
+ if (!isStillFocusedOnKnob) {
667
+ if (this.hasFocus) {
668
+ this.hasFocus = false;
669
+ this.focusedKnob = undefined;
670
+ this.ionBlur.emit();
671
+ }
672
+ }
673
+ }, 0);
674
+ };
675
+ onKnobMouseEnter = (knob) => {
676
+ this.hoveredKnob = knob;
677
+ };
678
+ onKnobMouseLeave = () => {
679
+ this.hoveredKnob = undefined;
680
+ };
614
681
  /**
615
682
  * Returns true if content was passed to the "start" slot
616
683
  */
@@ -627,7 +694,6 @@ const Range = class {
627
694
  return this.label !== undefined || this.el.querySelector('[slot="label"]') !== null;
628
695
  }
629
696
  renderRangeSlider() {
630
- var _a;
631
697
  const { min, max, step, handleKeyboard, activatedKnob, focusedKnob, hoveredKnob, pressedKnob, disabled, pin, ratioLower, ratioUpper, pinFormatter, inheritedAttributes, } = this;
632
698
  let barStart = `${ratioLower * 100}%`;
633
699
  let barEnd = `${100 - ratioUpper * 100}%`;
@@ -644,7 +710,7 @@ const Range = class {
644
710
  * When the value is less than the activeBarStart or the min value,
645
711
  * the knob will display at the start of the active bar.
646
712
  */
647
- if (this.valA < ((_a = this.activeBarStart) !== null && _a !== void 0 ? _a : this.min)) {
713
+ if (this.valA < (this.activeBarStart ?? this.min)) {
648
714
  /**
649
715
  * Sets the bar positions relative to the upper and lower limits.
650
716
  * Converts the ratio values into percentages, used as offsets for left/right styles.
@@ -792,7 +858,7 @@ const Range = class {
792
858
  * Determine the name and position of the pressed knob to apply
793
859
  * Host classes for styling.
794
860
  */
795
- const pressedKnobName = dualKnobs ? pressedKnob === null || pressedKnob === void 0 ? void 0 : pressedKnob.toLowerCase() : undefined;
861
+ const pressedKnobName = dualKnobs ? pressedKnob?.toLowerCase() : undefined;
796
862
  const pressedKnobPosition = dualKnobs && pressedKnob ? getKnobPosition(pressedKnob, this.ratioA, this.ratioB, dualKnobs) : undefined;
797
863
  /**
798
864
  * Determine if any knob is at the min or max value to
@@ -801,7 +867,7 @@ const Range = class {
801
867
  const valueAtMin = dualKnobs ? this.valA === min || this.valB === min : this.valA === min;
802
868
  const valueAtMax = dualKnobs ? this.valA === max || this.valB === max : this.valA === max;
803
869
  helpers.renderHiddenInput(true, el, this.name, JSON.stringify(this.getValue()), disabled);
804
- return (index.h(index.Host, { key: '81119ccd58016522bdac455a4e832d28b8d22d13', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: theme.createColorClasses(this.color, {
870
+ return (index.h(index.Host, { key: '72f253ee1514b4c5874a6720c2f954fae7a7c4d4', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: theme.createColorClasses(this.color, {
805
871
  [mode]: true,
806
872
  'in-item': inItem,
807
873
  'range-disabled': disabled,
@@ -815,12 +881,11 @@ const Range = class {
815
881
  'range-item-end-adjustment': needsEndAdjustment,
816
882
  'range-value-min': valueAtMin,
817
883
  'range-value-max': valueAtMax,
818
- }) }, index.h("label", { key: 'fac472b1d252560e83ca85bcc3eec6fec90d2cdf', class: "range-wrapper", id: "range-label" }, index.h("div", { key: '2d920cde50fdac003caa902c945e2ac71160e701', class: {
884
+ }) }, index.h("label", { key: '9b96b83a6118ee2a79d8adbb0a58197470308179', class: "range-wrapper", id: "range-label" }, index.h("div", { key: 'c7b31a7c87c20857a26624bd94501df6420fceec', class: {
819
885
  'label-text-wrapper': true,
820
886
  'label-text-wrapper-hidden': !hasLabel,
821
- }, part: "label" }, label !== undefined ? index.h("div", { class: "label-text" }, label) : index.h("slot", { name: "label" })), index.h("div", { key: 'f81e7c7c9f6620b7c5f848689adb67402aa508d1', class: "native-wrapper" }, index.h("slot", { key: '29bcf499b855fa4f3d3069b8a9efbdc1a5b32f0e', name: "start" }), this.renderRangeSlider(), index.h("slot", { key: '5c1b25c5ca6a8a05e102648db85b9c8d1c86de25', name: "end" })))));
887
+ }, part: "label" }, label !== undefined ? index.h("div", { class: "label-text" }, label) : index.h("slot", { name: "label" })), index.h("div", { key: '4ca15b9370097e140550489ff24979f3a959e65b', class: "native-wrapper" }, index.h("slot", { key: 'f110896c68741bad92239f98b6028cbe0ad5122f', name: "start" }), this.renderRangeSlider(), index.h("slot", { key: '5c4031c4403fa643ee2e11637b2420ddd8cbc4ce', name: "end" })))));
822
888
  }
823
- get el() { return index.getElement(this); }
824
889
  static get watchers() { return {
825
890
  "debounce": [{
826
891
  "debounceChanged": 0