@ionic/core 9.0.0 → 9.0.1-dev.11787248963.10a00c73

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 (596) 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-63OhffQv.js → p-66ogmUZU.js} +1 -1
  99. package/components/p-6Vp915Y7.js +4 -0
  100. package/components/p-7PNwKFZi.js +4 -0
  101. package/components/{p-G0TxqHfe.js → p-A8MJRBIY.js} +1 -1
  102. package/components/p-AQcCdH2_.js +4 -0
  103. package/{dist/ionic/p-Dn0mqQ_R.js → components/p-B6x5_b9w.js} +1 -1
  104. package/components/p-B8MQjdvk.js +4 -0
  105. package/components/p-BA_4ZIEg.js +4 -0
  106. package/components/p-BFtL8t1r.js +4 -0
  107. package/components/{p-DaA_8eqt.js → p-BMfgF-Tv.js} +1 -1
  108. package/components/p-BPDxVIRr.js +4 -0
  109. package/components/p-BSARlp49.js +4 -0
  110. package/components/p-B_gJaBk0.js +4 -0
  111. package/components/p-BdwCtX8Y.js +4 -0
  112. package/components/p-Bg4OwDwb.js +4 -0
  113. package/components/{p-DV85C0e0.js → p-BgUIV8NQ.js} +1 -1
  114. package/components/p-Bnc0m4SW.js +4 -0
  115. package/components/p-BpLt_Ptn.js +4 -0
  116. package/components/p-BqBDq1Ma.js +4 -0
  117. package/components/{p-C_phlPMC.js → p-BrFaQbGY.js} +1 -1
  118. package/{dist/ionic/p-Cdjxf_yg.js → components/p-BuPAFTWI.js} +1 -1
  119. package/components/p-Bx2saTHs.js +4 -0
  120. package/components/p-BxhE2W85.js +4 -0
  121. package/components/p-CHswSpKy.js +4 -0
  122. package/components/{p-fruGqVHh.js → p-CQAjyETU.js} +1 -1
  123. package/components/{p-1jI5oW-W.js → p-CR9OgE6N.js} +1 -1
  124. package/components/p-CWETxTjE.js +4 -0
  125. package/components/p-CaZeZIL2.js +4 -0
  126. package/components/p-CaiZOhfC.js +4 -0
  127. package/components/p-CgvDC7hC.js +4 -0
  128. package/components/{p-BqPNzJf6.js → p-CqyGR9Aq.js} +1 -1
  129. package/components/{p-UIBJkZf8.js → p-D0YpjgON.js} +1 -1
  130. package/components/p-D7ysFE2B.js +4 -0
  131. package/{dist/ionic/p-4eOQC00Z.js → components/p-DCWfzDM8.js} +1 -1
  132. package/components/{p-DwpKZ6rl.js → p-DDdkefwf.js} +1 -1
  133. package/components/{p-DzRT60Tw.js → p-DEW7CnUc.js} +1 -1
  134. package/components/p-DQ1IPvZO.js +4 -0
  135. package/components/p-DcOH6-o5.js +4 -0
  136. package/components/{p-DD5fQ4EQ.js → p-DfdYCsov.js} +1 -1
  137. package/components/{p-DSzSbVP2.js → p-DhOoEIAs.js} +1 -1
  138. package/components/{p-DM-PrAoh.js → p-Dl_7b_UJ.js} +1 -1
  139. package/components/p-DqAI6tg7.js +4 -0
  140. package/components/p-DrehWDfv.js +4 -0
  141. package/components/{p-ryyf_ItD.js → p-DysqCsJu.js} +1 -1
  142. package/components/p-H1f2qsk4.js +4 -0
  143. package/components/p-HVYBAhFx.js +4 -0
  144. package/components/{p-CbhUdtjf.js → p-Kmrg3Fed.js} +1 -1
  145. package/components/{p-Bjig0DJK.js → p-RFfE9hF6.js} +1 -1
  146. package/{dist/ionic/p-CBWAXjA5.js → components/p-SR-LLqp_.js} +1 -1
  147. package/components/p-eFI3mtEX.js +4 -0
  148. package/components/p-gFwXiYC_.js +4 -0
  149. package/components/p-tX3UxCnU.js +4 -0
  150. package/components/p-v2NpoOHp.js +4 -0
  151. package/dist/cjs/{animation-C0mOHzej.js → animation-D-OqR4a4.js} +1 -1
  152. package/dist/cjs/{app-globals-BREG4twP.js → app-globals-BzgwARwJ.js} +1 -1
  153. package/dist/cjs/{button-active-CVMevT9a.js → button-active-BlWSD7uK.js} +2 -2
  154. package/dist/cjs/{format-pp0Du3K-.js → format-D7ig6Vm0.js} +1 -1
  155. package/dist/cjs/{framework-delegate-Dfo5XsGv.js → framework-delegate-BZUx4TnE.js} +1 -1
  156. package/dist/cjs/{gesture-controller-BDUH7687.js → gesture-controller-CeJslptU.js} +6 -14
  157. package/dist/cjs/{hardware-back-button-fqpYh-kd.js → hardware-back-button-JOAEFSzc.js} +1 -1
  158. package/dist/cjs/{helpers-YPQybDph.js → helpers-Dj5o76mq.js} +1 -1
  159. package/dist/cjs/{index-BLdJCcJY.js → index-2sO-zkZ2.js} +4 -4
  160. package/dist/cjs/{index-uvry__L4.js → index-BrVMoqUk.js} +3 -1
  161. package/dist/cjs/{index-zVCah4Uz.js → index-C8zH6b3d.js} +2 -2
  162. package/dist/cjs/{index-DXsPSne6.js → index-CZ6vzt_q.js} +5 -5
  163. package/dist/cjs/{index-DDg31ZF5.js → index-Csue6G3m.js} +2 -2
  164. package/dist/cjs/{index-DwlRtFZe.js → index-DRPqwSvU.js} +1 -1
  165. package/dist/cjs/{index-B7zJsYWS.js → index-EJLjthTK.js} +1 -2
  166. package/dist/cjs/index.cjs.js +14 -14
  167. package/dist/cjs/{input-shims-Cbu1fcye.js → input-shims-Bh7bnt2v.js} +3 -3
  168. package/dist/cjs/{input.utils-BZdMWVrt.js → input.utils-Cq3g9uHy.js} +1 -1
  169. package/dist/cjs/ion-accordion_2.cjs.entry.js +335 -364
  170. package/dist/cjs/ion-action-sheet.cjs.entry.js +60 -140
  171. package/dist/cjs/ion-alert.cjs.entry.js +67 -159
  172. package/dist/cjs/ion-app_8.cjs.entry.js +163 -258
  173. package/dist/cjs/ion-avatar_3.cjs.entry.js +2 -8
  174. package/dist/cjs/ion-back-button.cjs.entry.js +21 -45
  175. package/dist/cjs/ion-backdrop.cjs.entry.js +14 -18
  176. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +117 -195
  177. package/dist/cjs/ion-button_2.cjs.entry.js +61 -130
  178. package/dist/cjs/ion-card_5.cjs.entry.js +28 -80
  179. package/dist/cjs/ion-checkbox.cjs.entry.js +98 -147
  180. package/dist/cjs/ion-chip.cjs.entry.js +10 -16
  181. package/dist/cjs/ion-col_3.cjs.entry.js +6 -126
  182. package/dist/cjs/ion-datetime-button.cjs.entry.js +232 -248
  183. package/dist/cjs/ion-datetime.cjs.entry.js +775 -953
  184. package/dist/cjs/ion-fab_3.cjs.entry.js +78 -136
  185. package/dist/cjs/ion-img.cjs.entry.js +11 -31
  186. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +71 -98
  187. package/dist/cjs/ion-input-otp.cjs.entry.js +352 -424
  188. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +14 -29
  189. package/dist/cjs/ion-input.cjs.entry.js +158 -302
  190. package/dist/cjs/ion-item-option_3.cjs.entry.js +54 -98
  191. package/dist/cjs/ion-item_8.cjs.entry.js +61 -157
  192. package/dist/cjs/ion-loading.cjs.entry.js +54 -131
  193. package/dist/cjs/ion-menu_3.cjs.entry.js +94 -158
  194. package/dist/cjs/ion-modal.cjs.entry.js +206 -362
  195. package/dist/cjs/ion-nav_2.cjs.entry.js +26 -78
  196. package/dist/cjs/ion-picker-column-option.cjs.entry.js +23 -33
  197. package/dist/cjs/ion-picker-column.cjs.entry.js +389 -410
  198. package/dist/cjs/ion-picker.cjs.entry.js +390 -400
  199. package/dist/cjs/ion-popover.cjs.entry.js +184 -292
  200. package/dist/cjs/ion-progress-bar.cjs.entry.js +23 -29
  201. package/dist/cjs/ion-radio_2.cjs.entry.js +128 -201
  202. package/dist/cjs/ion-range.cjs.entry.js +223 -293
  203. package/dist/cjs/ion-refresher_2.cjs.entry.js +89 -154
  204. package/dist/cjs/ion-reorder_2.cjs.entry.js +19 -49
  205. package/dist/cjs/ion-ripple-effect.cjs.entry.js +13 -13
  206. package/dist/cjs/ion-route_4.cjs.entry.js +45 -144
  207. package/dist/cjs/ion-searchbar.cjs.entry.js +182 -268
  208. package/dist/cjs/ion-segment-content.cjs.entry.js +1 -1
  209. package/dist/cjs/ion-segment-view.cjs.entry.js +12 -24
  210. package/dist/cjs/ion-segment_2.cjs.entry.js +122 -161
  211. package/dist/cjs/ion-select-modal.cjs.entry.js +19 -21
  212. package/dist/cjs/ion-select_3.cjs.entry.js +151 -319
  213. package/dist/cjs/ion-spinner.cjs.entry.js +6 -21
  214. package/dist/cjs/ion-split-pane.cjs.entry.js +14 -27
  215. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +32 -89
  216. package/dist/cjs/ion-tab_2.cjs.entry.js +22 -49
  217. package/dist/cjs/ion-text.cjs.entry.js +2 -8
  218. package/dist/cjs/ion-textarea.cjs.entry.js +139 -256
  219. package/dist/cjs/ion-toast.cjs.entry.js +106 -221
  220. package/dist/cjs/ion-toggle.cjs.entry.js +114 -165
  221. package/dist/cjs/{ionic-global-k6hOWWpn.js → ionic-global-DvgIzM2F.js} +1 -1
  222. package/dist/cjs/ionic.cjs.js +4 -4
  223. package/dist/cjs/{ios.transition-zTmJz8T-.js → ios.transition-zIgdoSYe.js} +4 -4
  224. package/dist/cjs/{item-multiple-inputs-BdYSbfKN.js → item-multiple-inputs-DG-ZGm6j.js} +1 -1
  225. package/dist/cjs/loader.cjs.js +4 -4
  226. package/dist/cjs/{md.transition-nb_4pUXu.js → md.transition-CXeJ9rfh.js} +4 -4
  227. package/dist/cjs/{overlays-KaNVDNqC.js → overlays-Bg0auTQa.js} +6 -6
  228. package/dist/cjs/{select-option-render-pULCGldr.js → select-option-render-7m1WdFzF.js} +2 -2
  229. package/dist/cjs/{slot-mutation-controller-DPHmqXdV.js → slot-mutation-controller-BJEJzx_e.js} +1 -1
  230. package/dist/cjs/{status-tap-o9IIymsP.js → status-tap-DxbUM5XX.js} +3 -3
  231. package/dist/cjs/{swipe-back-B7X9VOlH.js → swipe-back-F_DBt-Aw.js} +4 -4
  232. package/dist/collection/components/accordion/accordion.js +310 -314
  233. package/dist/collection/components/accordion-group/accordion-group.js +23 -46
  234. package/dist/collection/components/action-sheet/action-sheet.js +49 -128
  235. package/dist/collection/components/action-sheet/test/basic/fixture.js +0 -3
  236. package/dist/collection/components/alert/alert.js +56 -147
  237. package/dist/collection/components/app/app.js +0 -3
  238. package/dist/collection/components/back-button/back-button.js +19 -42
  239. package/dist/collection/components/backdrop/backdrop.js +14 -16
  240. package/dist/collection/components/badge/badge.js +0 -6
  241. package/dist/collection/components/breadcrumb/breadcrumb.js +29 -90
  242. package/dist/collection/components/breadcrumbs/breadcrumbs.js +87 -102
  243. package/dist/collection/components/button/button.js +59 -127
  244. package/dist/collection/components/buttons/buttons.js +15 -13
  245. package/dist/collection/components/card/card.js +20 -53
  246. package/dist/collection/components/card-header/card-header.js +8 -12
  247. package/dist/collection/components/card-subtitle/card-subtitle.js +0 -6
  248. package/dist/collection/components/card-title/card-title.js +0 -6
  249. package/dist/collection/components/checkbox/checkbox.js +95 -143
  250. package/dist/collection/components/chip/chip.js +10 -14
  251. package/dist/collection/components/col/col.js +0 -120
  252. package/dist/collection/components/content/content.js +60 -90
  253. package/dist/collection/components/datetime/datetime.js +762 -939
  254. package/dist/collection/components/datetime-button/datetime-button.js +229 -244
  255. package/dist/collection/components/fab/fab.js +13 -20
  256. package/dist/collection/components/fab-button/fab-button.js +54 -103
  257. package/dist/collection/components/fab-list/fab-list.js +11 -10
  258. package/dist/collection/components/footer/footer.js +43 -49
  259. package/dist/collection/components/grid/grid.js +6 -4
  260. package/dist/collection/components/header/header.js +23 -33
  261. package/dist/collection/components/img/img.js +9 -28
  262. package/dist/collection/components/infinite-scroll/infinite-scroll.js +66 -73
  263. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +3 -20
  264. package/dist/collection/components/input/input.js +154 -297
  265. package/dist/collection/components/input-otp/input-otp.js +350 -421
  266. package/dist/collection/components/input-password-toggle/input-password-toggle.js +13 -27
  267. package/dist/collection/components/item/item.js +37 -80
  268. package/dist/collection/components/item-divider/item-divider.js +10 -15
  269. package/dist/collection/components/item-option/item-option.js +20 -48
  270. package/dist/collection/components/item-options/item-options.js +7 -10
  271. package/dist/collection/components/item-sliding/item-sliding.js +26 -36
  272. package/dist/collection/components/label/label.js +4 -24
  273. package/dist/collection/components/list/list.js +6 -9
  274. package/dist/collection/components/list-header/list-header.js +0 -10
  275. package/dist/collection/components/loading/loading.js +46 -122
  276. package/dist/collection/components/menu/menu.js +55 -99
  277. package/dist/collection/components/menu-button/menu-button.js +19 -28
  278. package/dist/collection/components/menu-toggle/menu-toggle.js +13 -20
  279. package/dist/collection/components/modal/modal.js +196 -351
  280. package/dist/collection/components/modal/test/fixtures.js +0 -3
  281. package/dist/collection/components/nav/nav.js +12 -45
  282. package/dist/collection/components/nav/view-controller.js +1 -7
  283. package/dist/collection/components/nav-link/nav-link.js +9 -20
  284. package/dist/collection/components/note/note.js +0 -6
  285. package/dist/collection/components/picker/picker.js +388 -397
  286. package/dist/collection/components/picker-column/picker-column.js +389 -409
  287. package/dist/collection/components/picker-column-option/picker-column-option.js +21 -30
  288. package/dist/collection/components/popover/popover.js +176 -283
  289. package/dist/collection/components/popover/test/fixture.js +0 -1
  290. package/dist/collection/components/progress-bar/progress-bar.js +22 -26
  291. package/dist/collection/components/radio/radio.js +62 -98
  292. package/dist/collection/components/radio-group/radio-group.js +64 -99
  293. package/dist/collection/components/radio-group/test/fixtures.js +0 -2
  294. package/dist/collection/components/range/range.js +220 -289
  295. package/dist/collection/components/refresher/refresher.js +79 -105
  296. package/dist/collection/components/refresher-content/refresher-content.js +3 -40
  297. package/dist/collection/components/reorder/reorder.js +0 -1
  298. package/dist/collection/components/reorder-group/reorder-group.js +14 -43
  299. package/dist/collection/components/ripple-effect/ripple-effect.js +12 -11
  300. package/dist/collection/components/route/route.js +9 -38
  301. package/dist/collection/components/route-redirect/route-redirect.js +0 -31
  302. package/dist/collection/components/router/router.js +27 -35
  303. package/dist/collection/components/router/utils/matching.js +0 -1
  304. package/dist/collection/components/router-link/router-link.js +10 -35
  305. package/dist/collection/components/router-outlet/router-outlet.js +12 -34
  306. package/dist/collection/components/searchbar/searchbar.js +180 -265
  307. package/dist/collection/components/segment/segment.js +76 -113
  308. package/dist/collection/components/segment-button/segment-button.js +44 -44
  309. package/dist/collection/components/segment-view/segment-view.js +12 -23
  310. package/dist/collection/components/select/select.js +127 -240
  311. package/dist/collection/components/select-modal/select-modal.js +11 -12
  312. package/dist/collection/components/select-modal/test/fixtures.js +1 -8
  313. package/dist/collection/components/select-option/select-option.js +7 -44
  314. package/dist/collection/components/select-popover/select-popover.js +10 -25
  315. package/dist/collection/components/select-popover/test/fixtures.js +1 -8
  316. package/dist/collection/components/skeleton-text/skeleton-text.js +6 -10
  317. package/dist/collection/components/spinner/spinner.js +6 -19
  318. package/dist/collection/components/split-pane/split-pane.js +13 -25
  319. package/dist/collection/components/tab/tab.js +4 -15
  320. package/dist/collection/components/tab-bar/tab-bar.js +12 -30
  321. package/dist/collection/components/tab-button/tab-button.js +19 -56
  322. package/dist/collection/components/tabs/tabs.js +17 -31
  323. package/dist/collection/components/text/text.js +0 -6
  324. package/dist/collection/components/textarea/textarea.js +135 -251
  325. package/dist/collection/components/title/title.js +0 -16
  326. package/dist/collection/components/toast/toast.js +97 -211
  327. package/dist/collection/components/toggle/toggle.js +111 -161
  328. package/dist/collection/components/toolbar/toolbar.js +3 -8
  329. package/dist/collection/global/config.js +3 -1
  330. package/dist/collection/utils/gesture/gesture-controller.js +6 -14
  331. package/dist/collection/utils/sanitization/index.js +0 -1
  332. package/dist/collection/utils/test/late-props/late-props.js +69 -0
  333. package/dist/collection/utils/test/playwright/page/event-spy.js +8 -9
  334. package/dist/collection/utils/test/press-keys.js +1 -4
  335. package/dist/docs.json +1 -1
  336. package/dist/esm/{animation-CGFdmGk9.js → animation-TxGPYeDn.js} +1 -1
  337. package/dist/esm/{app-globals-CYmMeGdU.js → app-globals-Do8rJest.js} +1 -1
  338. package/dist/esm/{button-active-BDOsVAiZ.js → button-active-ChA4D-ml.js} +2 -2
  339. package/dist/esm/{format-Dcwga61t.js → format-CVk5e_GP.js} +2 -2
  340. package/dist/esm/{framework-delegate-BHTU2Ip9.js → framework-delegate-DaLWnISz.js} +1 -1
  341. package/dist/esm/{gesture-controller-TXPDHL13.js → gesture-controller-B_gJaBk0.js} +6 -14
  342. package/dist/esm/{hardware-back-button-gLJHMX_F.js → hardware-back-button-D8W4L0JP.js} +1 -1
  343. package/dist/esm/{helpers-CAGf8Wgp.js → helpers-BIgoInJU.js} +1 -1
  344. package/dist/esm/{index-DcPaH5uL.js → index-BmLuEdV7.js} +1 -1
  345. package/dist/esm/{index-T0JxBI8V.js → index-BmOR8tCv.js} +2 -2
  346. package/dist/esm/{index-CqneaaGd.js → index-C5ZdL0qp.js} +5 -5
  347. package/dist/esm/{index-WlteAIqz.js → index-C8Dsa6li.js} +4 -4
  348. package/dist/esm/{index-ChhhtsGZ.js → index-CKYcsw8f.js} +3 -1
  349. package/dist/esm/{index-Clc-28O1.js → index-DHw2lZxe.js} +2 -2
  350. package/dist/esm/{index-CKM1DdGm.js → index-elneMH8y.js} +1 -2
  351. package/dist/esm/index.js +14 -14
  352. package/dist/esm/{input-shims-B8sfni1e.js → input-shims-09NN97kF.js} +3 -3
  353. package/dist/esm/{input.utils-B1ValN_N.js → input.utils-BxyH9l1w.js} +1 -1
  354. package/dist/esm/ion-accordion_2.entry.js +335 -364
  355. package/dist/esm/ion-action-sheet.entry.js +60 -140
  356. package/dist/esm/ion-alert.entry.js +67 -159
  357. package/dist/esm/ion-app_8.entry.js +163 -258
  358. package/dist/esm/ion-avatar_3.entry.js +2 -8
  359. package/dist/esm/ion-back-button.entry.js +21 -45
  360. package/dist/esm/ion-backdrop.entry.js +14 -18
  361. package/dist/esm/ion-breadcrumb_2.entry.js +117 -195
  362. package/dist/esm/ion-button_2.entry.js +61 -130
  363. package/dist/esm/ion-card_5.entry.js +28 -80
  364. package/dist/esm/ion-checkbox.entry.js +98 -147
  365. package/dist/esm/ion-chip.entry.js +10 -16
  366. package/dist/esm/ion-col_3.entry.js +6 -126
  367. package/dist/esm/ion-datetime-button.entry.js +232 -248
  368. package/dist/esm/ion-datetime.entry.js +775 -953
  369. package/dist/esm/ion-fab_3.entry.js +78 -136
  370. package/dist/esm/ion-img.entry.js +11 -31
  371. package/dist/esm/ion-infinite-scroll_2.entry.js +71 -98
  372. package/dist/esm/ion-input-otp.entry.js +352 -424
  373. package/dist/esm/ion-input-password-toggle.entry.js +14 -29
  374. package/dist/esm/ion-input.entry.js +158 -302
  375. package/dist/esm/ion-item-option_3.entry.js +54 -98
  376. package/dist/esm/ion-item_8.entry.js +61 -157
  377. package/dist/esm/ion-loading.entry.js +54 -131
  378. package/dist/esm/ion-menu_3.entry.js +94 -158
  379. package/dist/esm/ion-modal.entry.js +206 -362
  380. package/dist/esm/ion-nav_2.entry.js +26 -78
  381. package/dist/esm/ion-picker-column-option.entry.js +23 -33
  382. package/dist/esm/ion-picker-column.entry.js +389 -410
  383. package/dist/esm/ion-picker.entry.js +390 -400
  384. package/dist/esm/ion-popover.entry.js +184 -292
  385. package/dist/esm/ion-progress-bar.entry.js +23 -29
  386. package/dist/esm/ion-radio_2.entry.js +128 -201
  387. package/dist/esm/ion-range.entry.js +223 -293
  388. package/dist/esm/ion-refresher_2.entry.js +89 -154
  389. package/dist/esm/ion-reorder_2.entry.js +19 -49
  390. package/dist/esm/ion-ripple-effect.entry.js +13 -13
  391. package/dist/esm/ion-route_4.entry.js +45 -144
  392. package/dist/esm/ion-searchbar.entry.js +182 -268
  393. package/dist/esm/ion-segment-content.entry.js +1 -1
  394. package/dist/esm/ion-segment-view.entry.js +12 -24
  395. package/dist/esm/ion-segment_2.entry.js +122 -161
  396. package/dist/esm/ion-select-modal.entry.js +19 -21
  397. package/dist/esm/ion-select_3.entry.js +151 -319
  398. package/dist/esm/ion-spinner.entry.js +6 -21
  399. package/dist/esm/ion-split-pane.entry.js +14 -27
  400. package/dist/esm/ion-tab-bar_2.entry.js +32 -89
  401. package/dist/esm/ion-tab_2.entry.js +22 -49
  402. package/dist/esm/ion-text.entry.js +2 -8
  403. package/dist/esm/ion-textarea.entry.js +139 -256
  404. package/dist/esm/ion-toast.entry.js +106 -221
  405. package/dist/esm/ion-toggle.entry.js +114 -165
  406. package/dist/esm/{ionic-global-BVB7BrLT.js → ionic-global-lrowsHfi.js} +1 -1
  407. package/dist/esm/ionic.js +5 -5
  408. package/dist/esm/{ios.transition-DXRCmcbC.js → ios.transition-BQhADrk1.js} +4 -4
  409. package/dist/esm/{item-multiple-inputs-rU8VaNNg.js → item-multiple-inputs-D_N3fDkD.js} +1 -1
  410. package/dist/esm/loader.js +5 -5
  411. package/dist/esm/{md.transition-BMngO4i_.js → md.transition-D58NpmRa.js} +4 -4
  412. package/dist/esm/{overlays-CPmIs9Ls.js → overlays-BpnIFlXI.js} +6 -6
  413. package/dist/esm/{select-option-render-C4m76VGH.js → select-option-render-lIuu64EV.js} +2 -2
  414. package/dist/esm/{slot-mutation-controller-DiE_C9un.js → slot-mutation-controller-rS_T3FDR.js} +1 -1
  415. package/dist/esm/{status-tap-CHB7KwIb.js → status-tap-CpFQMLl6.js} +3 -3
  416. package/dist/esm/{swipe-back-C9HW1bug.js → swipe-back-rmc7zeNW.js} +4 -4
  417. package/dist/ionic/index.esm.js +1 -1
  418. package/dist/ionic/ionic.esm.js +1 -1
  419. package/dist/ionic/p-05800a02.entry.js +4 -0
  420. package/dist/ionic/p-0eb50dca.entry.js +4 -0
  421. package/dist/ionic/p-16e9f542.entry.js +4 -0
  422. package/dist/ionic/p-18d532a3.entry.js +4 -0
  423. package/dist/ionic/p-1db2afb4.entry.js +4 -0
  424. package/dist/ionic/p-1df75f9e.entry.js +4 -0
  425. package/dist/ionic/p-295ff427.entry.js +4 -0
  426. package/dist/ionic/p-34b9379b.entry.js +4 -0
  427. package/dist/ionic/p-39a8d4e0.entry.js +4 -0
  428. package/dist/ionic/p-4437015c.entry.js +4 -0
  429. package/dist/ionic/p-478035a7.entry.js +4 -0
  430. package/dist/ionic/p-485fb218.entry.js +4 -0
  431. package/dist/ionic/p-48c859fe.entry.js +4 -0
  432. package/dist/ionic/p-49b9d405.entry.js +4 -0
  433. package/dist/ionic/p-56307aea.entry.js +4 -0
  434. package/dist/ionic/p-5b906fd6.entry.js +4 -0
  435. package/dist/ionic/p-5ee2d7b1.entry.js +4 -0
  436. package/dist/ionic/p-5f216b79.entry.js +4 -0
  437. package/dist/ionic/p-61c799d1.entry.js +4 -0
  438. package/dist/ionic/p-63bbba8d.entry.js +4 -0
  439. package/dist/ionic/p-68507e70.entry.js +4 -0
  440. package/dist/ionic/{p-ded69ceb.entry.js → p-6f048604.entry.js} +1 -1
  441. package/dist/ionic/p-70ee8888.entry.js +4 -0
  442. package/dist/ionic/p-72ad7c64.entry.js +4 -0
  443. package/dist/ionic/p-75887ee0.entry.js +4 -0
  444. package/dist/ionic/p-873a315a.entry.js +4 -0
  445. package/dist/ionic/p-881b6954.entry.js +4 -0
  446. package/dist/ionic/p-886d9e66.entry.js +4 -0
  447. package/dist/ionic/p-8dd4c026.entry.js +4 -0
  448. package/dist/ionic/p-8e007f11.entry.js +4 -0
  449. package/dist/ionic/p-8f51110d.entry.js +4 -0
  450. package/dist/ionic/p-90ba736e.entry.js +4 -0
  451. package/dist/ionic/p-959df5f8.entry.js +4 -0
  452. package/dist/ionic/p-9e455875.entry.js +4 -0
  453. package/dist/ionic/{p-CBR_W98Z.js → p-9wczfs_v.js} +1 -1
  454. package/dist/ionic/p-B1Y7LZhV.js +4 -0
  455. package/dist/ionic/p-B5RyLYvl.js +4 -0
  456. package/dist/ionic/{p-CPcPmkGv.js → p-BQv5i5Kf.js} +1 -1
  457. package/{components/p-8FN7p701.js → dist/ionic/p-BZVE25Gu.js} +1 -1
  458. package/{components/p-DFvZn99E.js → dist/ionic/p-BZxjcGRP.js} +1 -1
  459. package/dist/ionic/p-B_gJaBk0.js +4 -0
  460. package/dist/ionic/p-BnGA34Pd.js +4 -0
  461. package/dist/ionic/p-ByLaqOPm.js +4 -0
  462. package/dist/ionic/p-C06QNN45.js +4 -0
  463. package/dist/ionic/p-C4IBDDj6.js +4 -0
  464. package/dist/ionic/p-CCVlNZ__.js +4 -0
  465. package/dist/ionic/{p-CMRtMbJc.js → p-CDBop-kz.js} +1 -1
  466. package/dist/ionic/p-CKYcsw8f.js +5 -0
  467. package/dist/ionic/p-CazSodad.js +4 -0
  468. package/{components/p-ia3IDdJS.js → dist/ionic/p-ClrlQU2y.js} +1 -1
  469. package/dist/ionic/{p-UIBJkZf8.js → p-D0YpjgON.js} +1 -1
  470. package/dist/ionic/p-D0dfUysx.js +4 -0
  471. package/dist/ionic/{p-BB0LlG4y.js → p-D9yvytgv.js} +1 -1
  472. package/{components/p-C5KYjZWD.js → dist/ionic/p-DF_Uqql8.js} +1 -1
  473. package/dist/ionic/{p-BYEAtHr-.js → p-DXJgZWgi.js} +1 -1
  474. package/dist/ionic/{p-D94_RztK.js → p-DdhHqKj-.js} +1 -1
  475. package/dist/ionic/p-De0eY881.js +4 -0
  476. package/dist/ionic/p-DgUL3JbO.js +4 -0
  477. package/dist/ionic/{p-7CBuOvEo.js → p-RzUn7cKs.js} +1 -1
  478. package/dist/ionic/p-VquyMbjp.js +4 -0
  479. package/dist/ionic/p-a0fee899.entry.js +4 -0
  480. package/dist/ionic/p-a54bcd16.entry.js +4 -0
  481. package/dist/ionic/p-aebc4d69.entry.js +4 -0
  482. package/dist/ionic/p-b5f37106.entry.js +4 -0
  483. package/dist/ionic/{p-40424a88.entry.js → p-b62bfce8.entry.js} +1 -1
  484. package/dist/ionic/p-b7a11b58.entry.js +4 -0
  485. package/dist/ionic/p-bbf6878c.entry.js +4 -0
  486. package/dist/ionic/p-c49165af.entry.js +4 -0
  487. package/dist/ionic/p-cad4eccf.entry.js +4 -0
  488. package/dist/ionic/p-cdc5115e.entry.js +4 -0
  489. package/dist/ionic/p-d3384a40.entry.js +4 -0
  490. package/dist/ionic/p-d8bae128.entry.js +4 -0
  491. package/dist/ionic/p-d8deff43.entry.js +4 -0
  492. package/dist/ionic/p-ddfb7e5f.entry.js +4 -0
  493. package/dist/ionic/p-e538f18d.entry.js +4 -0
  494. package/dist/ionic/p-f376876b.entry.js +4 -0
  495. package/dist/ionic/p-f7dd1ed9.entry.js +4 -0
  496. package/dist/ionic/p-fbd83d4c.entry.js +4 -0
  497. package/dist/types/components/refresher/refresher.d.ts +7 -0
  498. package/hydrate/index.js +5450 -8380
  499. package/hydrate/index.mjs +5450 -8380
  500. package/package.json +1 -1
  501. package/components/p--m5cCjbK.js +0 -4
  502. package/components/p-B4uHHhPK.js +0 -4
  503. package/components/p-BNJOu1Q2.js +0 -4
  504. package/components/p-BOvLNVKq.js +0 -4
  505. package/components/p-BeamQXHF.js +0 -4
  506. package/components/p-BjluhQMI.js +0 -4
  507. package/components/p-BlsIikdZ.js +0 -4
  508. package/components/p-BrD9Xv62.js +0 -4
  509. package/components/p-BvJqoZ5R.js +0 -4
  510. package/components/p-Bz6z3Asd.js +0 -4
  511. package/components/p-C6HnVvHO.js +0 -4
  512. package/components/p-C7jvh5Wy.js +0 -4
  513. package/components/p-C9BGR5fy.js +0 -4
  514. package/components/p-CB-y1CdP.js +0 -4
  515. package/components/p-CHH3loEE.js +0 -4
  516. package/components/p-CJKUWjmg.js +0 -4
  517. package/components/p-CMLAwl_N.js +0 -4
  518. package/components/p-CejmQs3h.js +0 -4
  519. package/components/p-CtZqa4HM.js +0 -4
  520. package/components/p-D9qIVSWm.js +0 -4
  521. package/components/p-DE-3iMNW.js +0 -4
  522. package/components/p-DHFt2rdc.js +0 -4
  523. package/components/p-D_RCyzwu.js +0 -4
  524. package/components/p-D_tD8r3L.js +0 -4
  525. package/components/p-DjCtLZbF.js +0 -4
  526. package/components/p-Dmd2xqCe.js +0 -4
  527. package/components/p-G6JR-cr_.js +0 -4
  528. package/components/p-GG5GhznE.js +0 -4
  529. package/components/p-TXPDHL13.js +0 -4
  530. package/components/p-_IKFD3ID.js +0 -4
  531. package/components/p-dKq2jIum.js +0 -4
  532. package/components/p-iYhH60Tc.js +0 -4
  533. package/dist/ionic/p-06ec7136.entry.js +0 -4
  534. package/dist/ionic/p-09fe4fa3.entry.js +0 -4
  535. package/dist/ionic/p-10d45a07.entry.js +0 -4
  536. package/dist/ionic/p-208c8a07.entry.js +0 -4
  537. package/dist/ionic/p-212474fa.entry.js +0 -4
  538. package/dist/ionic/p-2eef1396.entry.js +0 -4
  539. package/dist/ionic/p-347e005d.entry.js +0 -4
  540. package/dist/ionic/p-3a0b3f1d.entry.js +0 -4
  541. package/dist/ionic/p-3b071259.entry.js +0 -4
  542. package/dist/ionic/p-4204184c.entry.js +0 -4
  543. package/dist/ionic/p-47464391.entry.js +0 -4
  544. package/dist/ionic/p-4f9c9126.entry.js +0 -4
  545. package/dist/ionic/p-5JsKPLJD.js +0 -4
  546. package/dist/ionic/p-5bc485c6.entry.js +0 -4
  547. package/dist/ionic/p-603a61e6.entry.js +0 -4
  548. package/dist/ionic/p-60576951.entry.js +0 -4
  549. package/dist/ionic/p-67a81d33.entry.js +0 -4
  550. package/dist/ionic/p-6affb775.entry.js +0 -4
  551. package/dist/ionic/p-6f120c25.entry.js +0 -4
  552. package/dist/ionic/p-71c82b60.entry.js +0 -4
  553. package/dist/ionic/p-79325ffe.entry.js +0 -4
  554. package/dist/ionic/p-7e4d51fa.entry.js +0 -4
  555. package/dist/ionic/p-7f5d4664.entry.js +0 -4
  556. package/dist/ionic/p-80ee82fc.entry.js +0 -4
  557. package/dist/ionic/p-84af7dbc.entry.js +0 -4
  558. package/dist/ionic/p-89ca830a.entry.js +0 -4
  559. package/dist/ionic/p-93b8ec8f.entry.js +0 -4
  560. package/dist/ionic/p-946f65c2.entry.js +0 -4
  561. package/dist/ionic/p-9c4b39fb.entry.js +0 -4
  562. package/dist/ionic/p-B1NEZUzQ.js +0 -4
  563. package/dist/ionic/p-B1ck5iy-.js +0 -4
  564. package/dist/ionic/p-B4FrqdW0.js +0 -4
  565. package/dist/ionic/p-C-94tAim.js +0 -4
  566. package/dist/ionic/p-C-eHZMYE.js +0 -4
  567. package/dist/ionic/p-CaRuIadB.js +0 -4
  568. package/dist/ionic/p-ChhhtsGZ.js +0 -5
  569. package/dist/ionic/p-CzS1qWve.js +0 -4
  570. package/dist/ionic/p-DjjfauRM.js +0 -4
  571. package/dist/ionic/p-DkUB-ROc.js +0 -4
  572. package/dist/ionic/p-DplOqGUv.js +0 -4
  573. package/dist/ionic/p-Dst_XmZh.js +0 -4
  574. package/dist/ionic/p-TXPDHL13.js +0 -4
  575. package/dist/ionic/p-a438b193.entry.js +0 -4
  576. package/dist/ionic/p-babaaaa7.entry.js +0 -4
  577. package/dist/ionic/p-be08d500.entry.js +0 -4
  578. package/dist/ionic/p-be9a4f51.entry.js +0 -4
  579. package/dist/ionic/p-c00d3092.entry.js +0 -4
  580. package/dist/ionic/p-c36dc8f5.entry.js +0 -4
  581. package/dist/ionic/p-c72a7e17.entry.js +0 -4
  582. package/dist/ionic/p-c8edd88c.entry.js +0 -4
  583. package/dist/ionic/p-ce0e380b.entry.js +0 -4
  584. package/dist/ionic/p-ce32912b.entry.js +0 -4
  585. package/dist/ionic/p-d07cf130.entry.js +0 -4
  586. package/dist/ionic/p-d27edeb3.entry.js +0 -4
  587. package/dist/ionic/p-d5d2c506.entry.js +0 -4
  588. package/dist/ionic/p-d5e31ca9.entry.js +0 -4
  589. package/dist/ionic/p-de91444f.entry.js +0 -4
  590. package/dist/ionic/p-df72866d.entry.js +0 -4
  591. package/dist/ionic/p-e47e3151.entry.js +0 -4
  592. package/dist/ionic/p-e621e5e8.entry.js +0 -4
  593. package/dist/ionic/p-eea9cf93.entry.js +0 -4
  594. package/dist/ionic/p-f402f5a4.entry.js +0 -4
  595. package/dist/ionic/p-fe1bfbcf.entry.js +0 -4
  596. package/dist/ionic/p-ffb90460.entry.js +0 -4
@@ -43,48 +43,226 @@ import { roundToMaxDecimalPlaces } from "../../utils/floating-point";
43
43
  * @part pressed - Added to the knob-handle, knob, and pin that is currently being pressed to drag. Only one set has this part at a time when `dualKnobs` is `true`.
44
44
  */
45
45
  export class Range {
46
- rangeId = `ion-r-${rangeIds++}`;
47
- didLoad = false;
48
- noUpdate = false;
49
- rect;
50
- hasFocus = false;
51
- rangeSlider;
52
- gesture;
53
- inheritedAttributes = {};
54
- contentEl = null;
55
- initialContentScrollY = true;
56
- originalIonInput;
57
- /**
58
- * Used to avoid setting the focused state on click or tap. The focused
59
- * state is only set when the focus comes from the keyboard (e.g. Tab).
60
- * This is set to true on pointer down (mouse/touch).
61
- */
62
- focusFromPointer = false;
63
- /**
64
- * Observes class changes on the knob handles to keep the activatedKnob
65
- * state in sync with the ion-activated class. This is necessary to
66
- * determine which knob the user is dragging when using dual knobs and
67
- * apply the activated part correctly.
68
- */
69
- activatedObserver;
70
- el;
71
- ratioA = 0;
72
- ratioB = 0;
73
- activatedKnob;
74
- focusedKnob;
75
- hoveredKnob;
76
- pressedKnob;
77
- /**
78
- * The color to use from your application's color palette.
79
- * Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`.
80
- * For more information on colors, see [theming](/docs/theming/basics).
81
- */
82
- color;
83
- /**
84
- * How long, in milliseconds, to wait to trigger the
85
- * `ionInput` event after each change in the range value.
86
- */
87
- debounce;
46
+ constructor() {
47
+ this.rangeId = `ion-r-${rangeIds++}`;
48
+ this.didLoad = false;
49
+ this.noUpdate = false;
50
+ this.hasFocus = false;
51
+ this.inheritedAttributes = {};
52
+ this.contentEl = null;
53
+ this.initialContentScrollY = true;
54
+ /**
55
+ * Used to avoid setting the focused state on click or tap. The focused
56
+ * state is only set when the focus comes from the keyboard (e.g. Tab).
57
+ * This is set to true on pointer down (mouse/touch).
58
+ */
59
+ this.focusFromPointer = false;
60
+ this.ratioA = 0;
61
+ this.ratioB = 0;
62
+ /**
63
+ * The name of the control, which is submitted with the form data.
64
+ */
65
+ this.name = this.rangeId;
66
+ /**
67
+ * If `true`, the range shows two knobs and `value` is an object with `lower`
68
+ * and `upper` properties. If `false`, the range shows one knob and `value` is
69
+ * a number.
70
+ */
71
+ this.dualKnobs = false;
72
+ /**
73
+ * Minimum integer value of the range.
74
+ */
75
+ this.min = 0;
76
+ /**
77
+ * Maximum integer value of the range.
78
+ */
79
+ this.max = 100;
80
+ /**
81
+ * If `true`, a pin with integer value is shown when the knob
82
+ * is pressed.
83
+ */
84
+ this.pin = false;
85
+ /**
86
+ * A callback used to format the pin text.
87
+ * By default the pin text is set to `Math.round(value)`.
88
+ *
89
+ * See https://ionicframework.com/docs/troubleshooting/runtime#accessing-this
90
+ * if you need to access `this` from within the callback.
91
+ */
92
+ this.pinFormatter = (value) => Math.round(value);
93
+ /**
94
+ * If `true`, the knob snaps to tick marks evenly spaced based
95
+ * on the step property value.
96
+ */
97
+ this.snaps = false;
98
+ /**
99
+ * Specifies the value granularity.
100
+ */
101
+ this.step = 1;
102
+ /**
103
+ * If `true`, tick marks are displayed based on the step value.
104
+ * Only applies when `snaps` is `true`.
105
+ */
106
+ this.ticks = true;
107
+ /**
108
+ * If `true`, the user cannot interact with the range.
109
+ */
110
+ this.disabled = false;
111
+ /**
112
+ * the value of the range.
113
+ */
114
+ this.value = 0;
115
+ /**
116
+ * Compares two RangeValue inputs to determine if they are different.
117
+ *
118
+ * @param newVal - The new value.
119
+ * @param oldVal - The old value.
120
+ * @returns `true` if the values are different, `false` otherwise.
121
+ */
122
+ this.compareValues = (newVal, oldVal) => {
123
+ if (typeof newVal === 'object' && typeof oldVal === 'object') {
124
+ return newVal.lower !== oldVal.lower || newVal.upper !== oldVal.upper;
125
+ }
126
+ return newVal !== oldVal;
127
+ };
128
+ this.clampBounds = (value) => {
129
+ return clamp(this.min, value, this.max);
130
+ };
131
+ this.ensureValueInBounds = (value) => {
132
+ if (this.dualKnobs) {
133
+ return {
134
+ lower: this.clampBounds(value.lower),
135
+ upper: this.clampBounds(value.upper),
136
+ };
137
+ }
138
+ else {
139
+ return this.clampBounds(value);
140
+ }
141
+ };
142
+ /**
143
+ * Where to place the label relative to the range.
144
+ * `"start"`: The label will appear to the left of the range in LTR and to the right in RTL.
145
+ * `"end"`: The label will appear to the right of the range in LTR and to the left in RTL.
146
+ * `"fixed"`: The label has the same behavior as `"start"` except it also has a fixed width. Long text will be truncated with ellipses ("...").
147
+ * `"stacked"`: The label will appear above the range regardless of the direction.
148
+ */
149
+ this.labelPlacement = 'start';
150
+ this.setupGesture = async () => {
151
+ const rangeSlider = this.rangeSlider;
152
+ if (rangeSlider) {
153
+ this.gesture = (await import('../../utils/gesture')).createGesture({
154
+ el: rangeSlider,
155
+ gestureName: 'range',
156
+ gesturePriority: 100,
157
+ /**
158
+ * Provide a threshold since the drag movement
159
+ * might be a user scrolling the view.
160
+ * If this is true, then the range
161
+ * should not move.
162
+ */
163
+ threshold: 10,
164
+ onStart: () => this.onStart(),
165
+ onMove: (ev) => this.onMove(ev),
166
+ onEnd: (ev) => this.onEnd(ev),
167
+ });
168
+ this.gesture.enable(!this.disabled);
169
+ }
170
+ };
171
+ /**
172
+ * Observes the knob handles for the ion-activated class and syncs
173
+ * activatedKnob so the activated part is correctly set on the handle,
174
+ * knob, and pin.
175
+ */
176
+ this.setupActivatedObserver = () => {
177
+ const knobHandleA = this.el.shadowRoot.querySelector('.range-knob-handle-a');
178
+ const knobHandleB = this.el.shadowRoot.querySelector('.range-knob-handle-b');
179
+ const syncActivated = () => {
180
+ this.activatedKnob = knobHandleA?.classList.contains('ion-activated')
181
+ ? 'A'
182
+ : knobHandleB?.classList.contains('ion-activated')
183
+ ? 'B'
184
+ : undefined;
185
+ };
186
+ if (Build.isBrowser && typeof MutationObserver !== 'undefined') {
187
+ this.activatedObserver = new MutationObserver(syncActivated);
188
+ this.activatedObserver.observe(this.el.shadowRoot, {
189
+ attributes: true,
190
+ attributeFilter: ['class'],
191
+ subtree: true,
192
+ });
193
+ }
194
+ syncActivated();
195
+ };
196
+ this.handleKeyboard = (knob, isIncrease) => {
197
+ const { ensureValueInBounds } = this;
198
+ let step = this.step;
199
+ step = step > 0 ? step : 1;
200
+ step = step / (this.max - this.min);
201
+ if (!isIncrease) {
202
+ step *= -1;
203
+ }
204
+ if (knob === 'A') {
205
+ this.ratioA = clamp(0, this.ratioA + step, 1);
206
+ }
207
+ else {
208
+ this.ratioB = clamp(0, this.ratioB + step, 1);
209
+ }
210
+ this.ionKnobMoveStart.emit({ value: ensureValueInBounds(this.value) });
211
+ this.updateValue();
212
+ this.emitValueChange();
213
+ this.ionKnobMoveEnd.emit({ value: ensureValueInBounds(this.value) });
214
+ };
215
+ this.onBlur = () => {
216
+ if (this.hasFocus) {
217
+ this.hasFocus = false;
218
+ this.focusedKnob = undefined;
219
+ this.ionBlur.emit();
220
+ }
221
+ };
222
+ this.onFocus = () => {
223
+ if (!this.hasFocus) {
224
+ this.hasFocus = true;
225
+ this.ionFocus.emit();
226
+ }
227
+ };
228
+ this.onKnobFocus = (knob) => {
229
+ // Clicking focuses the range which is needed for the keyboard,
230
+ // but we only want to add the ion-focused class when focused via Tab.
231
+ if (!this.focusFromPointer) {
232
+ this.focusedKnob = knob;
233
+ }
234
+ else {
235
+ this.focusFromPointer = false;
236
+ this.focusedKnob = undefined;
237
+ }
238
+ // If the knob was not already focused, emit the focus event
239
+ if (!this.hasFocus) {
240
+ this.hasFocus = true;
241
+ this.ionFocus.emit();
242
+ }
243
+ };
244
+ this.onKnobBlur = () => {
245
+ // Check if focus is moving to another knob within the same range
246
+ // by delaying the reset to allow the new focus to register
247
+ setTimeout(() => {
248
+ const activeElement = this.el.shadowRoot?.activeElement;
249
+ const isStillFocusedOnKnob = activeElement && activeElement.classList.contains('range-knob-handle');
250
+ if (!isStillFocusedOnKnob) {
251
+ if (this.hasFocus) {
252
+ this.hasFocus = false;
253
+ this.focusedKnob = undefined;
254
+ this.ionBlur.emit();
255
+ }
256
+ }
257
+ }, 0);
258
+ };
259
+ this.onKnobMouseEnter = (knob) => {
260
+ this.hoveredKnob = knob;
261
+ };
262
+ this.onKnobMouseLeave = () => {
263
+ this.hoveredKnob = undefined;
264
+ };
265
+ }
88
266
  debounceChanged() {
89
267
  const { ionInput, debounce, originalIonInput } = this;
90
268
  /**
@@ -93,31 +271,11 @@ export class Range {
93
271
  */
94
272
  this.ionInput = debounce === undefined ? originalIonInput ?? ionInput : debounceEvent(ionInput, debounce);
95
273
  }
96
- /**
97
- * The name of the control, which is submitted with the form data.
98
- */
99
- name = this.rangeId;
100
- /**
101
- * The text to display as the control's label. Use this over the `label` slot if
102
- * you only need plain text. The `label` property will take priority over the
103
- * `label` slot if both are used.
104
- */
105
- label;
106
- /**
107
- * If `true`, the range shows two knobs and `value` is an object with `lower`
108
- * and `upper` properties. If `false`, the range shows one knob and `value` is
109
- * a number.
110
- */
111
- dualKnobs = false;
112
274
  dualKnobsChanged() {
113
275
  if (!this.noUpdate) {
114
276
  this.updateRatio();
115
277
  }
116
278
  }
117
- /**
118
- * Minimum integer value of the range.
119
- */
120
- min = 0;
121
279
  minChanged(newValue) {
122
280
  if (!isSafeNumber(newValue)) {
123
281
  this.min = 0;
@@ -126,10 +284,6 @@ export class Range {
126
284
  this.updateRatio();
127
285
  }
128
286
  }
129
- /**
130
- * Maximum integer value of the range.
131
- */
132
- max = 100;
133
287
  maxChanged(newValue) {
134
288
  if (!isSafeNumber(newValue)) {
135
289
  this.max = 100;
@@ -138,43 +292,11 @@ export class Range {
138
292
  this.updateRatio();
139
293
  }
140
294
  }
141
- /**
142
- * If `true`, a pin with integer value is shown when the knob
143
- * is pressed.
144
- */
145
- pin = false;
146
- /**
147
- * A callback used to format the pin text.
148
- * By default the pin text is set to `Math.round(value)`.
149
- *
150
- * See https://ionicframework.com/docs/troubleshooting/runtime#accessing-this
151
- * if you need to access `this` from within the callback.
152
- */
153
- pinFormatter = (value) => Math.round(value);
154
- /**
155
- * If `true`, the knob snaps to tick marks evenly spaced based
156
- * on the step property value.
157
- */
158
- snaps = false;
159
- /**
160
- * Specifies the value granularity.
161
- */
162
- step = 1;
163
295
  stepChanged(newValue) {
164
296
  if (!isSafeNumber(newValue)) {
165
297
  this.step = 1;
166
298
  }
167
299
  }
168
- /**
169
- * If `true`, tick marks are displayed based on the step value.
170
- * Only applies when `snaps` is `true`.
171
- */
172
- ticks = true;
173
- /**
174
- * The start position of the range active bar. This feature is only available with a single knob (dualKnobs="false").
175
- * Valid values are greater than or equal to the min value and less than or equal to the max value.
176
- */
177
- activeBarStart;
178
300
  activeBarStartChanged() {
179
301
  const { activeBarStart } = this;
180
302
  if (activeBarStart !== undefined) {
@@ -188,19 +310,11 @@ export class Range {
188
310
  }
189
311
  }
190
312
  }
191
- /**
192
- * If `true`, the user cannot interact with the range.
193
- */
194
- disabled = false;
195
313
  disabledChanged() {
196
314
  if (this.gesture) {
197
315
  this.gesture.enable(!this.disabled);
198
316
  }
199
317
  }
200
- /**
201
- * the value of the range.
202
- */
203
- value = 0;
204
318
  valueChanged(newValue, oldValue) {
205
319
  const valuesChanged = this.compareValues(newValue, oldValue);
206
320
  if (valuesChanged) {
@@ -210,120 +324,6 @@ export class Range {
210
324
  this.updateRatio();
211
325
  }
212
326
  }
213
- /**
214
- * Compares two RangeValue inputs to determine if they are different.
215
- *
216
- * @param newVal - The new value.
217
- * @param oldVal - The old value.
218
- * @returns `true` if the values are different, `false` otherwise.
219
- */
220
- compareValues = (newVal, oldVal) => {
221
- if (typeof newVal === 'object' && typeof oldVal === 'object') {
222
- return newVal.lower !== oldVal.lower || newVal.upper !== oldVal.upper;
223
- }
224
- return newVal !== oldVal;
225
- };
226
- clampBounds = (value) => {
227
- return clamp(this.min, value, this.max);
228
- };
229
- ensureValueInBounds = (value) => {
230
- if (this.dualKnobs) {
231
- return {
232
- lower: this.clampBounds(value.lower),
233
- upper: this.clampBounds(value.upper),
234
- };
235
- }
236
- else {
237
- return this.clampBounds(value);
238
- }
239
- };
240
- /**
241
- * Where to place the label relative to the range.
242
- * `"start"`: The label will appear to the left of the range in LTR and to the right in RTL.
243
- * `"end"`: The label will appear to the right of the range in LTR and to the left in RTL.
244
- * `"fixed"`: The label has the same behavior as `"start"` except it also has a fixed width. Long text will be truncated with ellipses ("...").
245
- * `"stacked"`: The label will appear above the range regardless of the direction.
246
- */
247
- labelPlacement = 'start';
248
- /**
249
- * The `ionChange` event is fired for `<ion-range>` elements when the user
250
- * modifies the element's value:
251
- * - When the user releases the knob after dragging;
252
- * - When the user moves the knob with keyboard arrows
253
- *
254
- * This event will not emit when programmatically setting the `value` property.
255
- */
256
- ionChange;
257
- /**
258
- * The `ionInput` event is fired for `<ion-range>` elements when the value
259
- * is modified. Unlike `ionChange`, `ionInput` is fired continuously
260
- * while the user is dragging the knob.
261
- */
262
- ionInput;
263
- /**
264
- * Emitted when the range has focus.
265
- */
266
- ionFocus;
267
- /**
268
- * Emitted when the range loses focus.
269
- */
270
- ionBlur;
271
- /**
272
- * Emitted when the user starts moving the range knob, whether through
273
- * mouse drag, touch gesture, or keyboard interaction.
274
- */
275
- ionKnobMoveStart;
276
- /**
277
- * Emitted when the user finishes moving the range knob, whether through
278
- * mouse drag, touch gesture, or keyboard interaction.
279
- */
280
- ionKnobMoveEnd;
281
- setupGesture = async () => {
282
- const rangeSlider = this.rangeSlider;
283
- if (rangeSlider) {
284
- this.gesture = (await import('../../utils/gesture')).createGesture({
285
- el: rangeSlider,
286
- gestureName: 'range',
287
- gesturePriority: 100,
288
- /**
289
- * Provide a threshold since the drag movement
290
- * might be a user scrolling the view.
291
- * If this is true, then the range
292
- * should not move.
293
- */
294
- threshold: 10,
295
- onStart: () => this.onStart(),
296
- onMove: (ev) => this.onMove(ev),
297
- onEnd: (ev) => this.onEnd(ev),
298
- });
299
- this.gesture.enable(!this.disabled);
300
- }
301
- };
302
- /**
303
- * Observes the knob handles for the ion-activated class and syncs
304
- * activatedKnob so the activated part is correctly set on the handle,
305
- * knob, and pin.
306
- */
307
- setupActivatedObserver = () => {
308
- const knobHandleA = this.el.shadowRoot.querySelector('.range-knob-handle-a');
309
- const knobHandleB = this.el.shadowRoot.querySelector('.range-knob-handle-b');
310
- const syncActivated = () => {
311
- this.activatedKnob = knobHandleA?.classList.contains('ion-activated')
312
- ? 'A'
313
- : knobHandleB?.classList.contains('ion-activated')
314
- ? 'B'
315
- : undefined;
316
- };
317
- if (Build.isBrowser && typeof MutationObserver !== 'undefined') {
318
- this.activatedObserver = new MutationObserver(syncActivated);
319
- this.activatedObserver.observe(this.el.shadowRoot, {
320
- attributes: true,
321
- attributeFilter: ['class'],
322
- subtree: true,
323
- });
324
- }
325
- syncActivated();
326
- };
327
327
  componentWillLoad() {
328
328
  /**
329
329
  * If user has custom ID set then we should
@@ -374,25 +374,6 @@ export class Range {
374
374
  this.activatedObserver = undefined;
375
375
  }
376
376
  }
377
- handleKeyboard = (knob, isIncrease) => {
378
- const { ensureValueInBounds } = this;
379
- let step = this.step;
380
- step = step > 0 ? step : 1;
381
- step = step / (this.max - this.min);
382
- if (!isIncrease) {
383
- step *= -1;
384
- }
385
- if (knob === 'A') {
386
- this.ratioA = clamp(0, this.ratioA + step, 1);
387
- }
388
- else {
389
- this.ratioB = clamp(0, this.ratioB + step, 1);
390
- }
391
- this.ionKnobMoveStart.emit({ value: ensureValueInBounds(this.value) });
392
- this.updateValue();
393
- this.emitValueChange();
394
- this.ionKnobMoveEnd.emit({ value: ensureValueInBounds(this.value) });
395
- };
396
377
  getValue() {
397
378
  const value = this.value ?? 0;
398
379
  if (this.dualKnobs) {
@@ -601,56 +582,6 @@ export class Range {
601
582
  };
602
583
  this.noUpdate = false;
603
584
  }
604
- onBlur = () => {
605
- if (this.hasFocus) {
606
- this.hasFocus = false;
607
- this.focusedKnob = undefined;
608
- this.ionBlur.emit();
609
- }
610
- };
611
- onFocus = () => {
612
- if (!this.hasFocus) {
613
- this.hasFocus = true;
614
- this.ionFocus.emit();
615
- }
616
- };
617
- onKnobFocus = (knob) => {
618
- // Clicking focuses the range which is needed for the keyboard,
619
- // but we only want to add the ion-focused class when focused via Tab.
620
- if (!this.focusFromPointer) {
621
- this.focusedKnob = knob;
622
- }
623
- else {
624
- this.focusFromPointer = false;
625
- this.focusedKnob = undefined;
626
- }
627
- // If the knob was not already focused, emit the focus event
628
- if (!this.hasFocus) {
629
- this.hasFocus = true;
630
- this.ionFocus.emit();
631
- }
632
- };
633
- onKnobBlur = () => {
634
- // Check if focus is moving to another knob within the same range
635
- // by delaying the reset to allow the new focus to register
636
- setTimeout(() => {
637
- const activeElement = this.el.shadowRoot?.activeElement;
638
- const isStillFocusedOnKnob = activeElement && activeElement.classList.contains('range-knob-handle');
639
- if (!isStillFocusedOnKnob) {
640
- if (this.hasFocus) {
641
- this.hasFocus = false;
642
- this.focusedKnob = undefined;
643
- this.ionBlur.emit();
644
- }
645
- }
646
- }, 0);
647
- };
648
- onKnobMouseEnter = (knob) => {
649
- this.hoveredKnob = knob;
650
- };
651
- onKnobMouseLeave = () => {
652
- this.hoveredKnob = undefined;
653
- };
654
585
  /**
655
586
  * Returns true if content was passed to the "start" slot
656
587
  */