@ionic/core 9.0.0 → 9.0.1-nightly.20260820

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 (594) 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 +45 -87
  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 +79 -151
  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 +111 -154
  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 +16 -24
  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 +69 -102
  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 +33 -37
  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/playwright/page/event-spy.js +8 -9
  333. package/dist/collection/utils/test/press-keys.js +1 -4
  334. package/dist/docs.json +1 -1
  335. package/dist/esm/{animation-CGFdmGk9.js → animation-TxGPYeDn.js} +1 -1
  336. package/dist/esm/{app-globals-CYmMeGdU.js → app-globals-Do8rJest.js} +1 -1
  337. package/dist/esm/{button-active-BDOsVAiZ.js → button-active-ChA4D-ml.js} +2 -2
  338. package/dist/esm/{format-Dcwga61t.js → format-CVk5e_GP.js} +2 -2
  339. package/dist/esm/{framework-delegate-BHTU2Ip9.js → framework-delegate-DaLWnISz.js} +1 -1
  340. package/dist/esm/{gesture-controller-TXPDHL13.js → gesture-controller-B_gJaBk0.js} +6 -14
  341. package/dist/esm/{hardware-back-button-gLJHMX_F.js → hardware-back-button-D8W4L0JP.js} +1 -1
  342. package/dist/esm/{helpers-CAGf8Wgp.js → helpers-BIgoInJU.js} +1 -1
  343. package/dist/esm/{index-DcPaH5uL.js → index-BmLuEdV7.js} +1 -1
  344. package/dist/esm/{index-T0JxBI8V.js → index-BmOR8tCv.js} +2 -2
  345. package/dist/esm/{index-CqneaaGd.js → index-C5ZdL0qp.js} +5 -5
  346. package/dist/esm/{index-WlteAIqz.js → index-C8Dsa6li.js} +4 -4
  347. package/dist/esm/{index-ChhhtsGZ.js → index-CKYcsw8f.js} +3 -1
  348. package/dist/esm/{index-Clc-28O1.js → index-DHw2lZxe.js} +2 -2
  349. package/dist/esm/{index-CKM1DdGm.js → index-elneMH8y.js} +1 -2
  350. package/dist/esm/index.js +14 -14
  351. package/dist/esm/{input-shims-B8sfni1e.js → input-shims-09NN97kF.js} +3 -3
  352. package/dist/esm/{input.utils-B1ValN_N.js → input.utils-BxyH9l1w.js} +1 -1
  353. package/dist/esm/ion-accordion_2.entry.js +335 -364
  354. package/dist/esm/ion-action-sheet.entry.js +60 -140
  355. package/dist/esm/ion-alert.entry.js +67 -159
  356. package/dist/esm/ion-app_8.entry.js +163 -258
  357. package/dist/esm/ion-avatar_3.entry.js +2 -8
  358. package/dist/esm/ion-back-button.entry.js +21 -45
  359. package/dist/esm/ion-backdrop.entry.js +14 -18
  360. package/dist/esm/ion-breadcrumb_2.entry.js +117 -195
  361. package/dist/esm/ion-button_2.entry.js +61 -130
  362. package/dist/esm/ion-card_5.entry.js +28 -80
  363. package/dist/esm/ion-checkbox.entry.js +98 -147
  364. package/dist/esm/ion-chip.entry.js +10 -16
  365. package/dist/esm/ion-col_3.entry.js +6 -126
  366. package/dist/esm/ion-datetime-button.entry.js +232 -248
  367. package/dist/esm/ion-datetime.entry.js +775 -953
  368. package/dist/esm/ion-fab_3.entry.js +78 -136
  369. package/dist/esm/ion-img.entry.js +11 -31
  370. package/dist/esm/ion-infinite-scroll_2.entry.js +71 -98
  371. package/dist/esm/ion-input-otp.entry.js +352 -424
  372. package/dist/esm/ion-input-password-toggle.entry.js +14 -29
  373. package/dist/esm/ion-input.entry.js +158 -302
  374. package/dist/esm/ion-item-option_3.entry.js +45 -87
  375. package/dist/esm/ion-item_8.entry.js +61 -157
  376. package/dist/esm/ion-loading.entry.js +54 -131
  377. package/dist/esm/ion-menu_3.entry.js +94 -158
  378. package/dist/esm/ion-modal.entry.js +206 -362
  379. package/dist/esm/ion-nav_2.entry.js +26 -78
  380. package/dist/esm/ion-picker-column-option.entry.js +23 -33
  381. package/dist/esm/ion-picker-column.entry.js +389 -410
  382. package/dist/esm/ion-picker.entry.js +390 -400
  383. package/dist/esm/ion-popover.entry.js +184 -292
  384. package/dist/esm/ion-progress-bar.entry.js +23 -29
  385. package/dist/esm/ion-radio_2.entry.js +128 -201
  386. package/dist/esm/ion-range.entry.js +223 -293
  387. package/dist/esm/ion-refresher_2.entry.js +79 -151
  388. package/dist/esm/ion-reorder_2.entry.js +19 -49
  389. package/dist/esm/ion-ripple-effect.entry.js +13 -13
  390. package/dist/esm/ion-route_4.entry.js +45 -144
  391. package/dist/esm/ion-searchbar.entry.js +182 -268
  392. package/dist/esm/ion-segment-content.entry.js +1 -1
  393. package/dist/esm/ion-segment-view.entry.js +12 -24
  394. package/dist/esm/ion-segment_2.entry.js +111 -154
  395. package/dist/esm/ion-select-modal.entry.js +19 -21
  396. package/dist/esm/ion-select_3.entry.js +151 -319
  397. package/dist/esm/ion-spinner.entry.js +6 -21
  398. package/dist/esm/ion-split-pane.entry.js +14 -27
  399. package/dist/esm/ion-tab-bar_2.entry.js +32 -89
  400. package/dist/esm/ion-tab_2.entry.js +22 -49
  401. package/dist/esm/ion-text.entry.js +2 -8
  402. package/dist/esm/ion-textarea.entry.js +139 -256
  403. package/dist/esm/ion-toast.entry.js +106 -221
  404. package/dist/esm/ion-toggle.entry.js +114 -165
  405. package/dist/esm/{ionic-global-BVB7BrLT.js → ionic-global-lrowsHfi.js} +1 -1
  406. package/dist/esm/ionic.js +5 -5
  407. package/dist/esm/{ios.transition-DXRCmcbC.js → ios.transition-BQhADrk1.js} +4 -4
  408. package/dist/esm/{item-multiple-inputs-rU8VaNNg.js → item-multiple-inputs-D_N3fDkD.js} +1 -1
  409. package/dist/esm/loader.js +5 -5
  410. package/dist/esm/{md.transition-BMngO4i_.js → md.transition-D58NpmRa.js} +4 -4
  411. package/dist/esm/{overlays-CPmIs9Ls.js → overlays-BpnIFlXI.js} +6 -6
  412. package/dist/esm/{select-option-render-C4m76VGH.js → select-option-render-lIuu64EV.js} +2 -2
  413. package/dist/esm/{slot-mutation-controller-DiE_C9un.js → slot-mutation-controller-rS_T3FDR.js} +1 -1
  414. package/dist/esm/{status-tap-CHB7KwIb.js → status-tap-CpFQMLl6.js} +3 -3
  415. package/dist/esm/{swipe-back-C9HW1bug.js → swipe-back-rmc7zeNW.js} +4 -4
  416. package/dist/ionic/index.esm.js +1 -1
  417. package/dist/ionic/ionic.esm.js +1 -1
  418. package/dist/ionic/p-05800a02.entry.js +4 -0
  419. package/dist/ionic/p-0eb50dca.entry.js +4 -0
  420. package/dist/ionic/p-16e9f542.entry.js +4 -0
  421. package/dist/ionic/p-18d532a3.entry.js +4 -0
  422. package/dist/ionic/p-1d694d39.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-5ee2d7b1.entry.js +4 -0
  435. package/dist/ionic/p-5f216b79.entry.js +4 -0
  436. package/dist/ionic/p-61c799d1.entry.js +4 -0
  437. package/dist/ionic/p-63bbba8d.entry.js +4 -0
  438. package/dist/ionic/p-68507e70.entry.js +4 -0
  439. package/dist/ionic/{p-ded69ceb.entry.js → p-6f048604.entry.js} +1 -1
  440. package/dist/ionic/p-70ee8888.entry.js +4 -0
  441. package/dist/ionic/p-72ad7c64.entry.js +4 -0
  442. package/dist/ionic/p-75887ee0.entry.js +4 -0
  443. package/dist/ionic/p-873a315a.entry.js +4 -0
  444. package/dist/ionic/p-881b6954.entry.js +4 -0
  445. package/dist/ionic/p-886d9e66.entry.js +4 -0
  446. package/dist/ionic/p-8e007f11.entry.js +4 -0
  447. package/dist/ionic/p-8f464a8f.entry.js +4 -0
  448. package/dist/ionic/p-8f51110d.entry.js +4 -0
  449. package/dist/ionic/p-90ba736e.entry.js +4 -0
  450. package/dist/ionic/p-959df5f8.entry.js +4 -0
  451. package/dist/ionic/p-9e455875.entry.js +4 -0
  452. package/dist/ionic/{p-CBR_W98Z.js → p-9wczfs_v.js} +1 -1
  453. package/dist/ionic/p-B1Y7LZhV.js +4 -0
  454. package/dist/ionic/p-B5RyLYvl.js +4 -0
  455. package/dist/ionic/{p-CPcPmkGv.js → p-BQv5i5Kf.js} +1 -1
  456. package/{components/p-8FN7p701.js → dist/ionic/p-BZVE25Gu.js} +1 -1
  457. package/{components/p-DFvZn99E.js → dist/ionic/p-BZxjcGRP.js} +1 -1
  458. package/dist/ionic/p-B_gJaBk0.js +4 -0
  459. package/dist/ionic/p-BnGA34Pd.js +4 -0
  460. package/dist/ionic/p-ByLaqOPm.js +4 -0
  461. package/dist/ionic/p-C06QNN45.js +4 -0
  462. package/dist/ionic/p-C4IBDDj6.js +4 -0
  463. package/dist/ionic/p-CCVlNZ__.js +4 -0
  464. package/dist/ionic/{p-CMRtMbJc.js → p-CDBop-kz.js} +1 -1
  465. package/dist/ionic/p-CKYcsw8f.js +5 -0
  466. package/dist/ionic/p-CazSodad.js +4 -0
  467. package/{components/p-ia3IDdJS.js → dist/ionic/p-ClrlQU2y.js} +1 -1
  468. package/dist/ionic/{p-UIBJkZf8.js → p-D0YpjgON.js} +1 -1
  469. package/dist/ionic/p-D0dfUysx.js +4 -0
  470. package/dist/ionic/{p-BB0LlG4y.js → p-D9yvytgv.js} +1 -1
  471. package/{components/p-C5KYjZWD.js → dist/ionic/p-DF_Uqql8.js} +1 -1
  472. package/dist/ionic/{p-BYEAtHr-.js → p-DXJgZWgi.js} +1 -1
  473. package/dist/ionic/{p-D94_RztK.js → p-DdhHqKj-.js} +1 -1
  474. package/dist/ionic/p-De0eY881.js +4 -0
  475. package/dist/ionic/p-DgUL3JbO.js +4 -0
  476. package/dist/ionic/{p-7CBuOvEo.js → p-RzUn7cKs.js} +1 -1
  477. package/dist/ionic/p-VquyMbjp.js +4 -0
  478. package/dist/ionic/p-a0fee899.entry.js +4 -0
  479. package/dist/ionic/p-a54bcd16.entry.js +4 -0
  480. package/dist/ionic/p-aebc4d69.entry.js +4 -0
  481. package/dist/ionic/p-b5f37106.entry.js +4 -0
  482. package/dist/ionic/{p-40424a88.entry.js → p-b62bfce8.entry.js} +1 -1
  483. package/dist/ionic/p-b7a11b58.entry.js +4 -0
  484. package/dist/ionic/p-bbf6878c.entry.js +4 -0
  485. package/dist/ionic/p-c49165af.entry.js +4 -0
  486. package/dist/ionic/p-cad4eccf.entry.js +4 -0
  487. package/dist/ionic/p-cdc5115e.entry.js +4 -0
  488. package/dist/ionic/p-d3384a40.entry.js +4 -0
  489. package/dist/ionic/p-d8bae128.entry.js +4 -0
  490. package/dist/ionic/p-d8deff43.entry.js +4 -0
  491. package/dist/ionic/p-ddfb7e5f.entry.js +4 -0
  492. package/dist/ionic/p-e538f18d.entry.js +4 -0
  493. package/dist/ionic/p-f376876b.entry.js +4 -0
  494. package/dist/ionic/p-f521b13c.entry.js +4 -0
  495. package/dist/ionic/p-fbd83d4c.entry.js +4 -0
  496. package/hydrate/index.js +5420 -8359
  497. package/hydrate/index.mjs +5420 -8359
  498. package/package.json +1 -1
  499. package/components/p--m5cCjbK.js +0 -4
  500. package/components/p-B4uHHhPK.js +0 -4
  501. package/components/p-BNJOu1Q2.js +0 -4
  502. package/components/p-BOvLNVKq.js +0 -4
  503. package/components/p-BeamQXHF.js +0 -4
  504. package/components/p-BjluhQMI.js +0 -4
  505. package/components/p-BlsIikdZ.js +0 -4
  506. package/components/p-BrD9Xv62.js +0 -4
  507. package/components/p-BvJqoZ5R.js +0 -4
  508. package/components/p-Bz6z3Asd.js +0 -4
  509. package/components/p-C6HnVvHO.js +0 -4
  510. package/components/p-C7jvh5Wy.js +0 -4
  511. package/components/p-C9BGR5fy.js +0 -4
  512. package/components/p-CB-y1CdP.js +0 -4
  513. package/components/p-CHH3loEE.js +0 -4
  514. package/components/p-CJKUWjmg.js +0 -4
  515. package/components/p-CMLAwl_N.js +0 -4
  516. package/components/p-CejmQs3h.js +0 -4
  517. package/components/p-CtZqa4HM.js +0 -4
  518. package/components/p-D9qIVSWm.js +0 -4
  519. package/components/p-DE-3iMNW.js +0 -4
  520. package/components/p-DHFt2rdc.js +0 -4
  521. package/components/p-D_RCyzwu.js +0 -4
  522. package/components/p-D_tD8r3L.js +0 -4
  523. package/components/p-DjCtLZbF.js +0 -4
  524. package/components/p-Dmd2xqCe.js +0 -4
  525. package/components/p-G6JR-cr_.js +0 -4
  526. package/components/p-GG5GhznE.js +0 -4
  527. package/components/p-TXPDHL13.js +0 -4
  528. package/components/p-_IKFD3ID.js +0 -4
  529. package/components/p-dKq2jIum.js +0 -4
  530. package/components/p-iYhH60Tc.js +0 -4
  531. package/dist/ionic/p-06ec7136.entry.js +0 -4
  532. package/dist/ionic/p-09fe4fa3.entry.js +0 -4
  533. package/dist/ionic/p-10d45a07.entry.js +0 -4
  534. package/dist/ionic/p-208c8a07.entry.js +0 -4
  535. package/dist/ionic/p-212474fa.entry.js +0 -4
  536. package/dist/ionic/p-2eef1396.entry.js +0 -4
  537. package/dist/ionic/p-347e005d.entry.js +0 -4
  538. package/dist/ionic/p-3a0b3f1d.entry.js +0 -4
  539. package/dist/ionic/p-3b071259.entry.js +0 -4
  540. package/dist/ionic/p-4204184c.entry.js +0 -4
  541. package/dist/ionic/p-47464391.entry.js +0 -4
  542. package/dist/ionic/p-4f9c9126.entry.js +0 -4
  543. package/dist/ionic/p-5JsKPLJD.js +0 -4
  544. package/dist/ionic/p-5bc485c6.entry.js +0 -4
  545. package/dist/ionic/p-603a61e6.entry.js +0 -4
  546. package/dist/ionic/p-60576951.entry.js +0 -4
  547. package/dist/ionic/p-67a81d33.entry.js +0 -4
  548. package/dist/ionic/p-6affb775.entry.js +0 -4
  549. package/dist/ionic/p-6f120c25.entry.js +0 -4
  550. package/dist/ionic/p-71c82b60.entry.js +0 -4
  551. package/dist/ionic/p-79325ffe.entry.js +0 -4
  552. package/dist/ionic/p-7e4d51fa.entry.js +0 -4
  553. package/dist/ionic/p-7f5d4664.entry.js +0 -4
  554. package/dist/ionic/p-80ee82fc.entry.js +0 -4
  555. package/dist/ionic/p-84af7dbc.entry.js +0 -4
  556. package/dist/ionic/p-89ca830a.entry.js +0 -4
  557. package/dist/ionic/p-93b8ec8f.entry.js +0 -4
  558. package/dist/ionic/p-946f65c2.entry.js +0 -4
  559. package/dist/ionic/p-9c4b39fb.entry.js +0 -4
  560. package/dist/ionic/p-B1NEZUzQ.js +0 -4
  561. package/dist/ionic/p-B1ck5iy-.js +0 -4
  562. package/dist/ionic/p-B4FrqdW0.js +0 -4
  563. package/dist/ionic/p-C-94tAim.js +0 -4
  564. package/dist/ionic/p-C-eHZMYE.js +0 -4
  565. package/dist/ionic/p-CaRuIadB.js +0 -4
  566. package/dist/ionic/p-ChhhtsGZ.js +0 -5
  567. package/dist/ionic/p-CzS1qWve.js +0 -4
  568. package/dist/ionic/p-DjjfauRM.js +0 -4
  569. package/dist/ionic/p-DkUB-ROc.js +0 -4
  570. package/dist/ionic/p-DplOqGUv.js +0 -4
  571. package/dist/ionic/p-Dst_XmZh.js +0 -4
  572. package/dist/ionic/p-TXPDHL13.js +0 -4
  573. package/dist/ionic/p-a438b193.entry.js +0 -4
  574. package/dist/ionic/p-babaaaa7.entry.js +0 -4
  575. package/dist/ionic/p-be08d500.entry.js +0 -4
  576. package/dist/ionic/p-be9a4f51.entry.js +0 -4
  577. package/dist/ionic/p-c00d3092.entry.js +0 -4
  578. package/dist/ionic/p-c36dc8f5.entry.js +0 -4
  579. package/dist/ionic/p-c72a7e17.entry.js +0 -4
  580. package/dist/ionic/p-c8edd88c.entry.js +0 -4
  581. package/dist/ionic/p-ce0e380b.entry.js +0 -4
  582. package/dist/ionic/p-ce32912b.entry.js +0 -4
  583. package/dist/ionic/p-d07cf130.entry.js +0 -4
  584. package/dist/ionic/p-d27edeb3.entry.js +0 -4
  585. package/dist/ionic/p-d5d2c506.entry.js +0 -4
  586. package/dist/ionic/p-d5e31ca9.entry.js +0 -4
  587. package/dist/ionic/p-de91444f.entry.js +0 -4
  588. package/dist/ionic/p-df72866d.entry.js +0 -4
  589. package/dist/ionic/p-e47e3151.entry.js +0 -4
  590. package/dist/ionic/p-e621e5e8.entry.js +0 -4
  591. package/dist/ionic/p-eea9cf93.entry.js +0 -4
  592. package/dist/ionic/p-f402f5a4.entry.js +0 -4
  593. package/dist/ionic/p-fe1bfbcf.entry.js +0 -4
  594. package/dist/ionic/p-ffb90460.entry.js +0 -4
@@ -12,22 +12,186 @@ import { getIonMode } from "../../global/ionic-global";
12
12
  * @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
13
13
  */
14
14
  export class Searchbar {
15
- nativeInput;
16
- isCancelVisible = false;
17
- shouldAlignLeft = true;
18
- originalIonInput;
19
- inputId = `ion-searchbar-${searchbarIds++}`;
20
- inheritedAttributes = {};
21
- loadTimeout;
22
- clearTimeout;
23
- searchIconResizeObserver;
24
- /**
25
- * The value of the input when the textarea is focused.
26
- */
27
- focusedValue;
28
- el;
29
- focused = false;
30
- noAnimate = true;
15
+ constructor() {
16
+ this.isCancelVisible = false;
17
+ this.shouldAlignLeft = true;
18
+ this.inputId = `ion-searchbar-${searchbarIds++}`;
19
+ this.inheritedAttributes = {};
20
+ this.focused = false;
21
+ this.noAnimate = true;
22
+ /**
23
+ * If `true`, enable searchbar animation.
24
+ */
25
+ this.animated = false;
26
+ /**
27
+ * Indicates whether and how the text value should be automatically capitalized as it is entered/edited by the user.
28
+ * Available options: `"off"`, `"none"`, `"on"`, `"sentences"`, `"words"`, `"characters"`.
29
+ */
30
+ this.autocapitalize = 'off';
31
+ /**
32
+ * Set the input's autocomplete property.
33
+ */
34
+ this.autocomplete = 'off';
35
+ /**
36
+ * Set the input's autocorrect property.
37
+ */
38
+ this.autocorrect = false;
39
+ /**
40
+ * Set the cancel button icon. Only applies to `md` mode.
41
+ * Defaults to `arrow-back-sharp`.
42
+ */
43
+ this.cancelButtonIcon = config.get('backButtonIcon', arrowBackSharp);
44
+ /**
45
+ * Set the cancel button text. Only applies to `ios` mode.
46
+ */
47
+ this.cancelButtonText = 'Cancel';
48
+ /**
49
+ * If `true`, the user cannot interact with the input.
50
+ */
51
+ this.disabled = false;
52
+ /**
53
+ * If used in a form, set the name of the control, which is submitted with the form data.
54
+ */
55
+ this.name = this.inputId;
56
+ /**
57
+ * Set the input's placeholder.
58
+ * `placeholder` can accept either plaintext or HTML as a string.
59
+ * To display characters normally reserved for HTML, they
60
+ * must be escaped. For example `<Ionic>` would become
61
+ * `&lt;Ionic&gt;`
62
+ *
63
+ * For more information: [Security Documentation](https://ionicframework.com/docs/faq/security)
64
+ */
65
+ this.placeholder = 'Search';
66
+ /**
67
+ * Sets the behavior for the cancel button. Defaults to `"never"`.
68
+ * Setting to `"focus"` shows the cancel button on focus.
69
+ * Setting to `"never"` hides the cancel button.
70
+ * Setting to `"always"` shows the cancel button regardless
71
+ * of focus state.
72
+ */
73
+ this.showCancelButton = 'never';
74
+ /**
75
+ * Sets the behavior for the clear button. Defaults to `"focus"`.
76
+ * Setting to `"focus"` shows the clear button on focus if the
77
+ * input is not empty.
78
+ * Setting to `"never"` hides the clear button.
79
+ * Setting to `"always"` shows the clear button regardless
80
+ * of focus state, but only if the input is not empty.
81
+ */
82
+ this.showClearButton = 'always';
83
+ /**
84
+ * If `true`, enable spellcheck on the input.
85
+ */
86
+ this.spellcheck = false;
87
+ /**
88
+ * Set the type of the input.
89
+ */
90
+ this.type = 'search';
91
+ /**
92
+ * the value of the searchbar.
93
+ */
94
+ this.value = '';
95
+ /**
96
+ * Clears the input field and triggers the control change.
97
+ */
98
+ this.onClearInput = async (shouldFocus) => {
99
+ if (this.clearTimeout) {
100
+ clearTimeout(this.clearTimeout);
101
+ }
102
+ this.ionClear.emit();
103
+ return new Promise((resolve) => {
104
+ // setTimeout() fixes https://github.com/ionic-team/ionic-framework/issues/7527
105
+ // wait for 4 frames
106
+ this.clearTimeout = setTimeout(() => {
107
+ const value = this.getValue();
108
+ if (value !== '') {
109
+ this.value = '';
110
+ this.emitInputChange();
111
+ /**
112
+ * When tapping clear button
113
+ * ensure input is focused after
114
+ * clearing input so users
115
+ * can quickly start typing.
116
+ */
117
+ if (shouldFocus && !this.focused) {
118
+ this.setFocus();
119
+ /**
120
+ * The setFocus call above will clear focusedValue,
121
+ * but ionChange will never have gotten a chance to
122
+ * fire. Manually revert focusedValue so onBlur can
123
+ * compare against what was in the box before the clear.
124
+ */
125
+ this.focusedValue = value;
126
+ }
127
+ }
128
+ resolve();
129
+ }, 16 * 4);
130
+ });
131
+ };
132
+ /**
133
+ * Clears the input field and tells the input to blur since
134
+ * the clearInput function doesn't want the input to blur
135
+ * then calls the custom cancel function if the user passed one in.
136
+ */
137
+ this.onCancelSearchbar = async (ev) => {
138
+ if (ev) {
139
+ ev.preventDefault();
140
+ ev.stopPropagation();
141
+ }
142
+ this.ionCancel.emit();
143
+ // get cached values before clearing the input
144
+ const value = this.getValue();
145
+ const focused = this.focused;
146
+ await this.onClearInput();
147
+ /**
148
+ * If there used to be something in the box, and we weren't focused
149
+ * beforehand (meaning no blur fired that would already handle this),
150
+ * manually fire ionChange.
151
+ */
152
+ if (value && !focused) {
153
+ this.emitValueChange(ev);
154
+ }
155
+ if (this.nativeInput) {
156
+ this.nativeInput.blur();
157
+ }
158
+ };
159
+ /**
160
+ * Update the Searchbar input value when the input changes
161
+ */
162
+ this.onInput = (ev) => {
163
+ const input = ev.target;
164
+ if (input) {
165
+ this.value = input.value;
166
+ }
167
+ this.emitInputChange(ev);
168
+ };
169
+ this.onChange = (ev) => {
170
+ this.emitValueChange(ev);
171
+ };
172
+ /**
173
+ * Sets the Searchbar to not focused and checks if it should align left
174
+ * based on whether there is a value in the searchbar or not.
175
+ */
176
+ this.onBlur = (ev) => {
177
+ this.focused = false;
178
+ this.ionBlur.emit();
179
+ this.positionElements();
180
+ if (this.focusedValue !== this.value) {
181
+ this.emitValueChange(ev);
182
+ }
183
+ this.focusedValue = undefined;
184
+ };
185
+ /**
186
+ * Sets the Searchbar to focused and active on input focus.
187
+ */
188
+ this.onFocus = () => {
189
+ this.focused = true;
190
+ this.focusedValue = this.value;
191
+ this.ionFocus.emit();
192
+ this.positionElements();
193
+ };
194
+ }
31
195
  /**
32
196
  * lang and dir are globally enumerated attributes.
33
197
  * As a result, creating these as properties
@@ -49,46 +213,6 @@ export class Searchbar {
49
213
  };
50
214
  forceUpdate(this);
51
215
  }
52
- /**
53
- * The color to use from your application's color palette.
54
- * Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`.
55
- * For more information on colors, see [theming](/docs/theming/basics).
56
- */
57
- color;
58
- /**
59
- * If `true`, enable searchbar animation.
60
- */
61
- animated = false;
62
- /**
63
- * Indicates whether and how the text value should be automatically capitalized as it is entered/edited by the user.
64
- * Available options: `"off"`, `"none"`, `"on"`, `"sentences"`, `"words"`, `"characters"`.
65
- */
66
- autocapitalize = 'off';
67
- /**
68
- * Set the input's autocomplete property.
69
- */
70
- autocomplete = 'off';
71
- /**
72
- * Set the input's autocorrect property.
73
- */
74
- autocorrect = false;
75
- /**
76
- * Set the cancel button icon. Only applies to `md` mode.
77
- * Defaults to `arrow-back-sharp`.
78
- */
79
- cancelButtonIcon = config.get('backButtonIcon', arrowBackSharp);
80
- /**
81
- * Set the cancel button text. Only applies to `ios` mode.
82
- */
83
- cancelButtonText = 'Cancel';
84
- /**
85
- * Set the clear icon. Defaults to `close-circle` for `ios` and `close-sharp` for `md`.
86
- */
87
- clearIcon;
88
- /**
89
- * Set the amount of time, in milliseconds, to wait to trigger the `ionInput` event after each keystroke.
90
- */
91
- debounce;
92
216
  debounceChanged() {
93
217
  const { ionInput, debounce, originalIonInput } = this;
94
218
  /**
@@ -97,116 +221,6 @@ export class Searchbar {
97
221
  */
98
222
  this.ionInput = debounce === undefined ? originalIonInput ?? ionInput : debounceEvent(ionInput, debounce);
99
223
  }
100
- /**
101
- * If `true`, the user cannot interact with the input.
102
- */
103
- disabled = false;
104
- /**
105
- * A hint to the browser for which keyboard to display.
106
- * Possible values: `"none"`, `"text"`, `"tel"`, `"url"`,
107
- * `"email"`, `"numeric"`, `"decimal"`, and `"search"`.
108
- */
109
- inputmode;
110
- /**
111
- * A hint to the browser for which enter key to display.
112
- * Possible values: `"enter"`, `"done"`, `"go"`, `"next"`,
113
- * `"previous"`, `"search"`, and `"send"`.
114
- */
115
- enterkeyhint;
116
- /**
117
- * This attribute specifies the maximum number of characters that the user can enter.
118
- */
119
- maxlength;
120
- /**
121
- * This attribute specifies the minimum number of characters that the user can enter.
122
- */
123
- minlength;
124
- /**
125
- * If used in a form, set the name of the control, which is submitted with the form data.
126
- */
127
- name = this.inputId;
128
- /**
129
- * Set the input's placeholder.
130
- * `placeholder` can accept either plaintext or HTML as a string.
131
- * To display characters normally reserved for HTML, they
132
- * must be escaped. For example `<Ionic>` would become
133
- * `&lt;Ionic&gt;`
134
- *
135
- * For more information: [Security Documentation](https://ionicframework.com/docs/faq/security)
136
- */
137
- placeholder = 'Search';
138
- /**
139
- * The icon to use as the search icon. Defaults to `search-outline` in
140
- * `ios` mode and `search-sharp` in `md` mode.
141
- */
142
- searchIcon;
143
- /**
144
- * Sets the behavior for the cancel button. Defaults to `"never"`.
145
- * Setting to `"focus"` shows the cancel button on focus.
146
- * Setting to `"never"` hides the cancel button.
147
- * Setting to `"always"` shows the cancel button regardless
148
- * of focus state.
149
- */
150
- showCancelButton = 'never';
151
- /**
152
- * Sets the behavior for the clear button. Defaults to `"focus"`.
153
- * Setting to `"focus"` shows the clear button on focus if the
154
- * input is not empty.
155
- * Setting to `"never"` hides the clear button.
156
- * Setting to `"always"` shows the clear button regardless
157
- * of focus state, but only if the input is not empty.
158
- */
159
- showClearButton = 'always';
160
- /**
161
- * If `true`, enable spellcheck on the input.
162
- */
163
- spellcheck = false;
164
- /**
165
- * Set the type of the input.
166
- */
167
- type = 'search';
168
- /**
169
- * the value of the searchbar.
170
- */
171
- value = '';
172
- /**
173
- * Emitted when the `value` of the `ion-searchbar` element has changed.
174
- */
175
- ionInput;
176
- /**
177
- * The `ionChange` event is fired for `<ion-searchbar>` elements when the user
178
- * modifies the element's value. Unlike the `ionInput` event, the `ionChange`
179
- * event is not necessarily fired for each alteration to an element's value.
180
- *
181
- * The `ionChange` event is fired when the value has been committed
182
- * by the user. This can happen when the element loses focus or
183
- * when the "Enter" key is pressed. `ionChange` can also fire
184
- * when clicking the clear or cancel buttons.
185
- *
186
- * This event will not emit when programmatically setting the `value` property.
187
- */
188
- ionChange;
189
- /**
190
- * Emitted when the cancel button is clicked.
191
- */
192
- ionCancel;
193
- /**
194
- * Emitted when the clear input button is clicked.
195
- */
196
- ionClear;
197
- /**
198
- * Emitted when the input loses focus.
199
- */
200
- ionBlur;
201
- /**
202
- * Emitted when the input has focus.
203
- */
204
- ionFocus;
205
- /**
206
- * Emitted when the styles change.
207
- * @internal
208
- */
209
- ionStyle;
210
224
  valueChanged() {
211
225
  const inputEl = this.nativeInput;
212
226
  const value = this.getValue();
@@ -299,105 +313,6 @@ export class Searchbar {
299
313
  const { value } = this;
300
314
  this.ionInput.emit({ value, event });
301
315
  }
302
- /**
303
- * Clears the input field and triggers the control change.
304
- */
305
- onClearInput = async (shouldFocus) => {
306
- if (this.clearTimeout) {
307
- clearTimeout(this.clearTimeout);
308
- }
309
- this.ionClear.emit();
310
- return new Promise((resolve) => {
311
- // setTimeout() fixes https://github.com/ionic-team/ionic-framework/issues/7527
312
- // wait for 4 frames
313
- this.clearTimeout = setTimeout(() => {
314
- const value = this.getValue();
315
- if (value !== '') {
316
- this.value = '';
317
- this.emitInputChange();
318
- /**
319
- * When tapping clear button
320
- * ensure input is focused after
321
- * clearing input so users
322
- * can quickly start typing.
323
- */
324
- if (shouldFocus && !this.focused) {
325
- this.setFocus();
326
- /**
327
- * The setFocus call above will clear focusedValue,
328
- * but ionChange will never have gotten a chance to
329
- * fire. Manually revert focusedValue so onBlur can
330
- * compare against what was in the box before the clear.
331
- */
332
- this.focusedValue = value;
333
- }
334
- }
335
- resolve();
336
- }, 16 * 4);
337
- });
338
- };
339
- /**
340
- * Clears the input field and tells the input to blur since
341
- * the clearInput function doesn't want the input to blur
342
- * then calls the custom cancel function if the user passed one in.
343
- */
344
- onCancelSearchbar = async (ev) => {
345
- if (ev) {
346
- ev.preventDefault();
347
- ev.stopPropagation();
348
- }
349
- this.ionCancel.emit();
350
- // get cached values before clearing the input
351
- const value = this.getValue();
352
- const focused = this.focused;
353
- await this.onClearInput();
354
- /**
355
- * If there used to be something in the box, and we weren't focused
356
- * beforehand (meaning no blur fired that would already handle this),
357
- * manually fire ionChange.
358
- */
359
- if (value && !focused) {
360
- this.emitValueChange(ev);
361
- }
362
- if (this.nativeInput) {
363
- this.nativeInput.blur();
364
- }
365
- };
366
- /**
367
- * Update the Searchbar input value when the input changes
368
- */
369
- onInput = (ev) => {
370
- const input = ev.target;
371
- if (input) {
372
- this.value = input.value;
373
- }
374
- this.emitInputChange(ev);
375
- };
376
- onChange = (ev) => {
377
- this.emitValueChange(ev);
378
- };
379
- /**
380
- * Sets the Searchbar to not focused and checks if it should align left
381
- * based on whether there is a value in the searchbar or not.
382
- */
383
- onBlur = (ev) => {
384
- this.focused = false;
385
- this.ionBlur.emit();
386
- this.positionElements();
387
- if (this.focusedValue !== this.value) {
388
- this.emitValueChange(ev);
389
- }
390
- this.focusedValue = undefined;
391
- };
392
- /**
393
- * Sets the Searchbar to focused and active on input focus.
394
- */
395
- onFocus = () => {
396
- this.focused = true;
397
- this.focusedValue = this.value;
398
- this.ionFocus.emit();
399
- this.positionElements();
400
- };
401
316
  /**
402
317
  * Positions the input search icon, placeholder, and the cancel button
403
318
  * based on the input value and if it is focused. (ios only)
@@ -10,25 +10,82 @@ import { getIonMode } from "../../global/ionic-global";
10
10
  * @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
11
11
  */
12
12
  export class Segment {
13
- gesture;
14
- // Value before the segment is dragged
15
- valueBeforeGesture;
16
- segmentViewEl = null;
17
- lastNextIndex;
18
- /**
19
- * Whether to update the segment view, if exists, when the value changes.
20
- * This behavior is enabled by default, but is set false when scrolling content views
21
- * since we don't want to "double scroll" the segment view.
22
- */
23
- triggerScrollOnValueChange;
24
- el;
25
- activated = false;
26
- /**
27
- * The color to use from your application's color palette.
28
- * Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`.
29
- * For more information on colors, see [theming](/docs/theming/basics).
30
- */
31
- color;
13
+ constructor() {
14
+ this.segmentViewEl = null;
15
+ this.activated = false;
16
+ /**
17
+ * If `true`, the user cannot interact with the segment.
18
+ */
19
+ this.disabled = false;
20
+ /**
21
+ * If `true`, the segment buttons will overflow and the user can swipe to see them.
22
+ * In addition, this will disable the gesture to drag the indicator between the buttons
23
+ * in order to swipe to see hidden buttons.
24
+ */
25
+ this.scrollable = false;
26
+ /**
27
+ * If `true`, users will be able to swipe between segment buttons to activate them.
28
+ */
29
+ this.swipeGesture = true;
30
+ /**
31
+ * If `true`, navigating to an `ion-segment-button` with the keyboard will focus and select the element.
32
+ * If `false`, keyboard navigation will only focus the `ion-segment-button` element.
33
+ */
34
+ this.selectOnFocus = false;
35
+ this.onClick = (ev) => {
36
+ const current = ev.target;
37
+ const previous = this.checked;
38
+ // If the current element is a segment then that means
39
+ // the user tried to swipe to a segment button and
40
+ // click a segment button at the same time so we should
41
+ // not update the checked segment button
42
+ if (current.tagName === 'ION-SEGMENT') {
43
+ return;
44
+ }
45
+ this.value = current.value;
46
+ if (current !== previous) {
47
+ this.emitValueChange();
48
+ }
49
+ if (this.segmentViewEl) {
50
+ this.updateSegmentView();
51
+ if (this.scrollable && previous) {
52
+ this.checkButton(previous, current);
53
+ }
54
+ }
55
+ else if (this.scrollable || !this.swipeGesture) {
56
+ if (previous) {
57
+ this.checkButton(previous, current);
58
+ }
59
+ else {
60
+ this.setCheckedClasses();
61
+ }
62
+ }
63
+ };
64
+ this.onSlottedItemsChange = () => {
65
+ /**
66
+ * When the slotted segment buttons change we need to
67
+ * ensure that the new segment buttons are checked if
68
+ * the value matches the segment button value.
69
+ */
70
+ this.valueChanged(this.value);
71
+ };
72
+ this.getSegmentButton = (selector) => {
73
+ const buttons = this.getButtons().filter((button) => !button.disabled);
74
+ const currIndex = buttons.findIndex((button) => button === document.activeElement);
75
+ switch (selector) {
76
+ case 'first':
77
+ return buttons[0];
78
+ case 'last':
79
+ return buttons[buttons.length - 1];
80
+ case 'next':
81
+ return buttons[currIndex + 1] ?? buttons[0];
82
+ case 'previous':
83
+ return buttons[currIndex - 1] ?? buttons[buttons.length - 1];
84
+ default:
85
+ return null;
86
+ }
87
+ };
88
+ }
32
89
  colorChanged(value, oldValue) {
33
90
  /**
34
91
  * If color is set after not having
@@ -40,27 +97,9 @@ export class Segment {
40
97
  this.emitStyle();
41
98
  }
42
99
  }
43
- /**
44
- * If `true`, the user cannot interact with the segment.
45
- */
46
- disabled = false;
47
- /**
48
- * If `true`, the segment buttons will overflow and the user can swipe to see them.
49
- * In addition, this will disable the gesture to drag the indicator between the buttons
50
- * in order to swipe to see hidden buttons.
51
- */
52
- scrollable = false;
53
- /**
54
- * If `true`, users will be able to swipe between segment buttons to activate them.
55
- */
56
- swipeGesture = true;
57
100
  swipeGestureChanged() {
58
101
  this.gestureChanged();
59
102
  }
60
- /**
61
- * the value of the segment.
62
- */
63
- value;
64
103
  valueChanged(value, oldValue) {
65
104
  // Force a value to exist if we're using a segment view
66
105
  if (this.segmentViewEl && value === undefined) {
@@ -94,29 +133,6 @@ export class Segment {
94
133
  }
95
134
  this.triggerScrollOnValueChange = undefined;
96
135
  }
97
- /**
98
- * If `true`, navigating to an `ion-segment-button` with the keyboard will focus and select the element.
99
- * If `false`, keyboard navigation will only focus the `ion-segment-button` element.
100
- */
101
- selectOnFocus = false;
102
- /**
103
- * Emitted when the value property has changed and any dragging pointer has been released from `ion-segment`.
104
- *
105
- * This event will not emit when programmatically setting the `value` property.
106
- */
107
- ionChange;
108
- /**
109
- * Emitted when the value of the segment changes from user committed actions
110
- * or from externally assigning a value.
111
- *
112
- * @internal
113
- */
114
- ionSelect;
115
- /**
116
- * Emitted when the styles change.
117
- * @internal
118
- */
119
- ionStyle;
120
136
  disabledChanged() {
121
137
  this.gestureChanged();
122
138
  if (!this.segmentViewEl) {
@@ -486,59 +502,6 @@ export class Segment {
486
502
  segment: true,
487
503
  });
488
504
  }
489
- onClick = (ev) => {
490
- const current = ev.target;
491
- const previous = this.checked;
492
- // If the current element is a segment then that means
493
- // the user tried to swipe to a segment button and
494
- // click a segment button at the same time so we should
495
- // not update the checked segment button
496
- if (current.tagName === 'ION-SEGMENT') {
497
- return;
498
- }
499
- this.value = current.value;
500
- if (current !== previous) {
501
- this.emitValueChange();
502
- }
503
- if (this.segmentViewEl) {
504
- this.updateSegmentView();
505
- if (this.scrollable && previous) {
506
- this.checkButton(previous, current);
507
- }
508
- }
509
- else if (this.scrollable || !this.swipeGesture) {
510
- if (previous) {
511
- this.checkButton(previous, current);
512
- }
513
- else {
514
- this.setCheckedClasses();
515
- }
516
- }
517
- };
518
- onSlottedItemsChange = () => {
519
- /**
520
- * When the slotted segment buttons change we need to
521
- * ensure that the new segment buttons are checked if
522
- * the value matches the segment button value.
523
- */
524
- this.valueChanged(this.value);
525
- };
526
- getSegmentButton = (selector) => {
527
- const buttons = this.getButtons().filter((button) => !button.disabled);
528
- const currIndex = buttons.findIndex((button) => button === document.activeElement);
529
- switch (selector) {
530
- case 'first':
531
- return buttons[0];
532
- case 'last':
533
- return buttons[buttons.length - 1];
534
- case 'next':
535
- return buttons[currIndex + 1] ?? buttons[0];
536
- case 'previous':
537
- return buttons[currIndex - 1] ?? buttons[buttons.length - 1];
538
- default:
539
- return null;
540
- }
541
- };
542
505
  onKeyDown(ev) {
543
506
  const rtl = isRTL(this.el);
544
507
  let keyDownSelectsButton = this.selectOnFocus;