@ionic/core 8.8.20-dev.11787158518.168a2fea → 8.8.20-dev.11789504012.1a675914

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 (1221) 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-divider.d.ts +11 -0
  27. package/components/ion-divider.js +4 -0
  28. package/components/ion-fab-button.js +1 -1
  29. package/components/ion-fab-list.js +1 -1
  30. package/components/ion-fab.js +1 -1
  31. package/components/ion-footer.js +1 -1
  32. package/components/ion-gallery-item.d.ts +11 -0
  33. package/components/ion-gallery-item.js +4 -0
  34. package/components/ion-gallery.d.ts +11 -0
  35. package/components/ion-gallery.js +4 -0
  36. package/components/ion-grid.js +1 -1
  37. package/components/ion-header.js +1 -1
  38. package/components/ion-icon.js +1 -1
  39. package/components/ion-img.js +1 -1
  40. package/components/ion-infinite-scroll-content.js +1 -1
  41. package/components/ion-infinite-scroll.js +1 -1
  42. package/components/ion-input-otp.js +1 -1
  43. package/components/ion-input-password-toggle.js +1 -1
  44. package/components/ion-input.js +1 -1
  45. package/components/ion-item-divider.js +1 -1
  46. package/components/ion-item-group.js +1 -1
  47. package/components/ion-item-option.js +1 -1
  48. package/components/ion-item-options.js +1 -1
  49. package/components/ion-item-sliding.js +1 -1
  50. package/components/ion-item.js +1 -1
  51. package/components/ion-label.js +1 -1
  52. package/components/ion-list-header.js +1 -1
  53. package/components/ion-list.js +1 -1
  54. package/components/ion-loading.js +1 -1
  55. package/components/ion-menu-button.js +1 -1
  56. package/components/ion-menu-toggle.js +1 -1
  57. package/components/ion-menu.js +1 -1
  58. package/components/ion-modal.js +1 -1
  59. package/components/ion-nav-link.js +1 -1
  60. package/components/ion-nav.js +1 -1
  61. package/components/ion-note.js +1 -1
  62. package/components/ion-picker-column-option.js +1 -1
  63. package/components/ion-picker-column.js +1 -1
  64. package/components/ion-picker-legacy-column.d.ts +11 -0
  65. package/components/ion-picker-legacy-column.js +4 -0
  66. package/components/ion-picker-legacy.d.ts +11 -0
  67. package/components/ion-picker-legacy.js +4 -0
  68. package/components/ion-picker.js +1 -1
  69. package/components/ion-popover.js +1 -1
  70. package/components/ion-progress-bar.js +1 -1
  71. package/components/ion-radio-group.js +1 -1
  72. package/components/ion-radio.js +1 -1
  73. package/components/ion-range.js +1 -1
  74. package/components/ion-refresher-content.js +1 -1
  75. package/components/ion-refresher.js +1 -1
  76. package/components/ion-reorder-group.js +1 -1
  77. package/components/ion-reorder.js +1 -1
  78. package/components/ion-ripple-effect.js +1 -1
  79. package/components/ion-route-redirect.js +1 -1
  80. package/components/ion-route.js +1 -1
  81. package/components/ion-router-link.js +1 -1
  82. package/components/ion-router-outlet.js +1 -1
  83. package/components/ion-router.js +1 -1
  84. package/components/ion-row.js +1 -1
  85. package/components/ion-searchbar.js +1 -1
  86. package/components/ion-segment-button.js +1 -1
  87. package/components/ion-segment-content.js +1 -1
  88. package/components/ion-segment-view.js +1 -1
  89. package/components/ion-segment.js +1 -1
  90. package/components/ion-select-modal.js +1 -1
  91. package/components/ion-select-option.js +1 -1
  92. package/components/ion-select-popover.js +1 -1
  93. package/components/ion-select.js +1 -1
  94. package/components/ion-skeleton-text.js +1 -1
  95. package/components/ion-spinner.js +1 -1
  96. package/components/ion-split-pane.js +1 -1
  97. package/components/ion-tab-bar.js +1 -1
  98. package/components/ion-tab-button.js +1 -1
  99. package/components/ion-tab.js +1 -1
  100. package/components/ion-tabs.js +1 -1
  101. package/components/ion-text.js +1 -1
  102. package/components/ion-textarea.js +1 -1
  103. package/components/ion-thumbnail.js +1 -1
  104. package/components/ion-title.js +1 -1
  105. package/components/ion-toast.js +1 -1
  106. package/components/ion-toggle.js +1 -1
  107. package/components/ion-toolbar.js +1 -1
  108. package/components/p-0MMiHJhx.js +4 -0
  109. package/components/p-0rXxxCTt.js +4 -0
  110. package/components/{p-DwpKZ6rl.js → p-B2SvA6NE.js} +1 -1
  111. package/components/p-B4GJERAm.js +4 -0
  112. package/components/p-B9_sPaDw.js +4 -0
  113. package/components/p-BE21dB_a.js +4 -0
  114. package/components/p-BJyeT56g.js +4 -0
  115. package/components/p-BTBa_wH7.js +4 -0
  116. package/components/p-BTEOs1at.js +4 -0
  117. package/components/p-BU8Blvqg.js +4 -0
  118. package/components/p-BXXTyrCp.js +4 -0
  119. package/components/p-BXjGM4gW.js +4 -0
  120. package/components/p-BXuZo5-p.js +4 -0
  121. package/components/p-BYRVyMu9.js +4 -0
  122. package/components/{p-ryyf_ItD.js → p-BZwQa9ey.js} +1 -1
  123. package/components/p-BZxBDeEU.js +4 -0
  124. package/components/p-BcWO94Sl.js +4 -0
  125. package/components/p-BjW8SOqw.js +4 -0
  126. package/components/p-Br6q6Rgq.js +4 -0
  127. package/components/p-BwKpO3Is.js +4 -0
  128. package/components/p-BwzRqsq1.js +4 -0
  129. package/components/p-C-cw-bM-.js +4 -0
  130. package/components/p-C0K6CGg9.js +4 -0
  131. package/components/p-C2J-Hvv3.js +4 -0
  132. package/components/p-C3ydXg9O.js +4 -0
  133. package/components/p-C5Bnq_Hm.js +4 -0
  134. package/components/p-C5JYXyPD.js +4 -0
  135. package/components/p-C898H5L0.js +4 -0
  136. package/components/p-C8kcgEG7.js +4 -0
  137. package/components/p-CEz0vNHD.js +4 -0
  138. package/components/p-CH8ypgvS.js +4 -0
  139. package/components/{p-CMLAwl_N.js → p-CKLXmqy1.js} +1 -1
  140. package/components/p-CMtmHGrE.js +4 -0
  141. package/components/p-CNlz8OTE.js +4 -0
  142. package/components/p-CODBQrPj.js +4 -0
  143. package/components/p-CToV3-ig.js +4 -0
  144. package/components/p-CV7PNBGr.js +4 -0
  145. package/components/p-CVYFPBs-.js +4 -0
  146. package/components/p-CgbD1udy.js +4 -0
  147. package/components/p-CjlmHeGM.js +4 -0
  148. package/components/p-ClTdIlic.js +4 -0
  149. package/components/p-CstXr-x9.js +4 -0
  150. package/components/{p-DzRT60Tw.js → p-Cu8FoYIJ.js} +1 -1
  151. package/components/p-CxhjkdQ_.js +4 -0
  152. package/components/p-D0Iqw6OZ.js +4 -0
  153. package/components/p-D12Xsfh7.js +4 -0
  154. package/components/p-DExJ63jR.js +4 -0
  155. package/components/p-DHvfufkW.js +4 -0
  156. package/components/p-DRUGmlKi.js +4 -0
  157. package/components/p-DYq-5riI.js +4 -0
  158. package/components/p-DaJxRxSQ.js +4 -0
  159. package/components/p-Db3A3kHi.js +4 -0
  160. package/components/p-Df6AAcu8.js +4 -0
  161. package/components/p-Dh1f5tAK.js +4 -0
  162. package/components/{p-63OhffQv.js → p-Di8NbWfs.js} +1 -1
  163. package/components/p-DqkLOArC.js +4 -0
  164. package/components/p-DriGEn08.js +4 -0
  165. package/components/p-DylrHLJF.js +4 -0
  166. package/components/p-WeNgVmOy.js +4 -0
  167. package/components/p-Wn4ujuPW.js +4 -0
  168. package/components/p-X6YgGSBf.js +4 -0
  169. package/components/p-dLA3JnNJ.js +4 -0
  170. package/components/p-eRqVSlkn.js +4 -0
  171. package/components/p-fUXE2zLc.js +4 -0
  172. package/components/p-o8OKV5aD.js +4 -0
  173. package/components/p-pztWcmzj.js +4 -0
  174. package/components/p-vXpMhGrs.js +4 -0
  175. package/css/core.css +1 -1
  176. package/css/core.css.map +1 -1
  177. package/css/display.css +1 -1
  178. package/css/display.css.map +1 -1
  179. package/css/flex-utils.css +1 -1
  180. package/css/flex-utils.css.map +1 -1
  181. package/css/float-elements.css.map +1 -1
  182. package/css/global.bundle.css.map +1 -1
  183. package/css/ionic/bundle.ionic.css +1 -0
  184. package/css/ionic/bundle.ionic.css.map +1 -0
  185. package/css/ionic/core.ionic.css +1 -0
  186. package/css/ionic/core.ionic.css.map +1 -0
  187. package/css/ionic/global.bundle.ionic.css +1 -0
  188. package/css/ionic/global.bundle.ionic.css.map +1 -0
  189. package/css/ionic/ionic-swiper.ionic.css +1 -0
  190. package/css/ionic/ionic-swiper.ionic.css.map +1 -0
  191. package/css/ionic/link.ionic.css +1 -0
  192. package/css/ionic/link.ionic.css.map +1 -0
  193. package/css/ionic/structure.ionic.css +1 -0
  194. package/css/ionic/structure.ionic.css.map +1 -0
  195. package/css/ionic/typography.ionic.css +1 -0
  196. package/css/ionic/typography.ionic.css.map +1 -0
  197. package/css/ionic/utils.bundle.ionic.css +1 -0
  198. package/css/ionic/utils.bundle.ionic.css.map +1 -0
  199. package/css/ionic-swiper.css +1 -1
  200. package/css/ionic-swiper.css.map +1 -1
  201. package/css/ionic.bundle.css +1 -1
  202. package/css/ionic.bundle.css.map +1 -1
  203. package/css/normalize.css.map +1 -1
  204. package/css/padding.css.map +1 -1
  205. package/css/palettes/dark.always.css.map +1 -1
  206. package/css/palettes/dark.class.css.map +1 -1
  207. package/css/palettes/dark.system.css.map +1 -1
  208. package/css/palettes/high-contrast-dark.always.css.map +1 -1
  209. package/css/palettes/high-contrast-dark.class.css.map +1 -1
  210. package/css/palettes/high-contrast-dark.system.css.map +1 -1
  211. package/css/palettes/high-contrast.always.css.map +1 -1
  212. package/css/palettes/high-contrast.class.css.map +1 -1
  213. package/css/palettes/high-contrast.system.css.map +1 -1
  214. package/css/structure.css.map +1 -1
  215. package/css/text-alignment.css.map +1 -1
  216. package/css/text-transformation.css.map +1 -1
  217. package/css/typography.css.map +1 -1
  218. package/css/utils.bundle.css +1 -1
  219. package/css/utils.bundle.css.map +1 -1
  220. package/dist/cjs/{animation-C0mOHzej.js → animation-CxRPIayb.js} +6 -6
  221. package/dist/cjs/{app-globals-BREG4twP.js → app-globals-BwvlV6g7.js} +1 -1
  222. package/dist/cjs/{button-active-CVMevT9a.js → button-active-qCQDwE2m.js} +3 -3
  223. package/dist/cjs/{capacitor-DmA66EwP.js → capacitor-CRl0exFC.js} +3 -3
  224. package/dist/cjs/clear-button-press-controller-C7B9kyMa.js +45 -0
  225. package/dist/cjs/{config-CjUbvdPW.js → config-DWdFbSNK.js} +4 -5
  226. package/dist/cjs/{dir-zwDPRE5K.js → dir-DD0jPVH3.js} +3 -2
  227. package/dist/cjs/{focus-visible-CCvKiLh3.js → focus-visible-BIj-I3-C.js} +24 -0
  228. package/dist/cjs/{format-pp0Du3K-.js → format-COAsdjOc.js} +30 -40
  229. package/dist/cjs/{framework-delegate-Dfo5XsGv.js → framework-delegate-IvkF1VuM.js} +10 -6
  230. package/dist/cjs/{gesture-controller-BDUH7687.js → gesture-controller-dtqlP_q4.js} +8 -15
  231. package/dist/cjs/{haptic-Ch-X4gRx.js → haptic-DG25gZzb.js} +4 -3
  232. package/dist/cjs/{helpers-YPQybDph.js → helpers-Dhimwhpn.js} +74 -7
  233. package/dist/cjs/{index-DwlRtFZe.js → index-BJ2-LydH.js} +3 -9
  234. package/dist/cjs/{index-zVCah4Uz.js → index-Bsq0SbXc.js} +2 -2
  235. package/dist/cjs/{index-uvry__L4.js → index-C1knGA9x.js} +65 -33
  236. package/dist/cjs/{index-wOmugbdg.js → index-CxDnX7hd.js} +2 -0
  237. package/dist/cjs/{index-DXsPSne6.js → index-DhDV4RxJ.js} +16 -15
  238. package/dist/cjs/{index-BLdJCcJY.js → index-DuleInoh.js} +5 -5
  239. package/dist/cjs/{index-B7zJsYWS.js → index-YYUVCfP-.js} +3 -3
  240. package/dist/cjs/{index-DDg31ZF5.js → index-yon1HGB7.js} +10 -9
  241. package/dist/cjs/index.cjs.js +18 -18
  242. package/dist/cjs/{input-shims-Cbu1fcye.js → input-shims-BgJcHtqI.js} +23 -20
  243. package/dist/cjs/input.utils--RmR5lVe.js +150 -0
  244. package/dist/cjs/ion-accordion_2.cjs.entry.js +376 -376
  245. package/dist/cjs/ion-action-sheet.cjs.entry.js +87 -179
  246. package/dist/cjs/ion-alert.cjs.entry.js +126 -251
  247. package/dist/cjs/ion-app_8.cjs.entry.js +608 -461
  248. package/dist/cjs/ion-avatar_3.cjs.entry.js +125 -19
  249. package/dist/cjs/ion-back-button.cjs.entry.js +49 -65
  250. package/dist/cjs/ion-backdrop.cjs.entry.js +22 -23
  251. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +157 -210
  252. package/dist/cjs/ion-button_2.cjs.entry.js +118 -153
  253. package/dist/cjs/ion-card_5.cjs.entry.js +80 -110
  254. package/dist/cjs/ion-checkbox.cjs.entry.js +134 -160
  255. package/dist/cjs/ion-chip.cjs.entry.js +56 -21
  256. package/dist/cjs/ion-col_3.cjs.entry.js +61 -186
  257. package/dist/cjs/ion-datetime-button.cjs.entry.js +248 -256
  258. package/dist/cjs/ion-datetime_3.cjs.entry.js +3210 -0
  259. package/dist/cjs/ion-divider.cjs.entry.js +51 -0
  260. package/dist/cjs/ion-fab_3.cjs.entry.js +109 -155
  261. package/dist/cjs/ion-gallery-item.cjs.entry.js +59 -0
  262. package/dist/cjs/ion-gallery.cjs.entry.js +608 -0
  263. package/dist/cjs/ion-img.cjs.entry.js +17 -35
  264. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +157 -109
  265. package/dist/cjs/ion-input-otp.cjs.entry.js +437 -435
  266. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +54 -40
  267. package/dist/cjs/ion-input.cjs.entry.js +305 -351
  268. package/dist/cjs/ion-item-option_3.cjs.entry.js +512 -137
  269. package/dist/cjs/ion-item_8.cjs.entry.js +186 -218
  270. package/dist/cjs/ion-loading.cjs.entry.js +69 -152
  271. package/dist/cjs/ion-menu_3.cjs.entry.js +136 -182
  272. package/dist/cjs/ion-modal.cjs.entry.js +501 -571
  273. package/dist/cjs/ion-nav_2.cjs.entry.js +164 -104
  274. package/dist/cjs/ion-picker-column-option.cjs.entry.js +40 -40
  275. package/dist/cjs/ion-picker-column.cjs.entry.js +410 -422
  276. package/dist/cjs/ion-picker.cjs.entry.js +401 -406
  277. package/dist/cjs/ion-popover.cjs.entry.js +212 -324
  278. package/dist/cjs/ion-progress-bar.cjs.entry.js +48 -36
  279. package/dist/cjs/ion-radio_2.cjs.entry.js +162 -217
  280. package/dist/cjs/ion-range.cjs.entry.js +251 -309
  281. package/dist/cjs/ion-refresher_2.cjs.entry.js +127 -175
  282. package/dist/cjs/ion-reorder_2.cjs.entry.js +47 -60
  283. package/dist/cjs/ion-ripple-effect.cjs.entry.js +26 -18
  284. package/dist/cjs/ion-route_4.cjs.entry.js +76 -179
  285. package/dist/cjs/ion-searchbar.cjs.entry.js +305 -308
  286. package/dist/cjs/ion-segment-content.cjs.entry.js +2 -2
  287. package/dist/cjs/ion-segment-view.cjs.entry.js +27 -28
  288. package/dist/cjs/ion-segment_2.cjs.entry.js +141 -177
  289. package/dist/cjs/ion-select-modal.cjs.entry.js +71 -50
  290. package/dist/cjs/ion-select_3.cjs.entry.js +416 -507
  291. package/dist/cjs/ion-spinner.cjs.entry.js +36 -28
  292. package/dist/cjs/ion-split-pane.cjs.entry.js +25 -34
  293. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +180 -117
  294. package/dist/cjs/ion-tab_2.cjs.entry.js +30 -55
  295. package/dist/cjs/ion-text.cjs.entry.js +7 -13
  296. package/dist/cjs/ion-textarea.cjs.entry.js +310 -303
  297. package/dist/cjs/ion-toast.cjs.entry.js +170 -265
  298. package/dist/cjs/ion-toggle.cjs.entry.js +172 -184
  299. package/dist/cjs/ionic-global-DYLhJaw7.js +519 -0
  300. package/dist/cjs/ionic.cjs.js +4 -4
  301. package/dist/cjs/{ios.transition-zTmJz8T-.js → ios.transition-Blgf-vZU.js} +21 -15
  302. package/dist/cjs/{item-multiple-inputs-BdYSbfKN.js → item-multiple-inputs-DKn76MYO.js} +1 -1
  303. package/dist/cjs/{keyboard-cHxZlTyz.js → keyboard-BgioTbwQ.js} +3 -3
  304. package/dist/cjs/{keyboard-Cix5TVkD.js → keyboard-Otnp8OQI.js} +5 -4
  305. package/dist/cjs/loader.cjs.js +4 -4
  306. package/dist/cjs/{md.transition-nb_4pUXu.js → md.transition-ClgvbGfq.js} +11 -9
  307. package/dist/cjs/notch-controller-0hkmmSGo.js +155 -0
  308. package/dist/cjs/{overlay-control-label-D2sdL2O8.js → overlay-control-label-DnRLQR1t.js} +13 -11
  309. package/dist/cjs/{overlays-KaNVDNqC.js → overlays-Bxjqh2m3.js} +336 -60
  310. package/dist/cjs/scroll-hide-controller-qWMU5yOk.js +345 -0
  311. package/dist/cjs/{select-option-render-pULCGldr.js → select-option-render-BqJEK1N1.js} +4 -3
  312. package/dist/cjs/{status-tap-o9IIymsP.js → status-tap-ClA8u57t.js} +5 -4
  313. package/dist/cjs/{swipe-back-B7X9VOlH.js → swipe-back-4vY7mi8i.js} +6 -5
  314. package/dist/cjs/{theme-Bw0rpaNN.js → theme-IlOsGAz7.js} +26 -7
  315. package/dist/cjs/validity-QmuwEptc.js +51 -0
  316. package/dist/collection/collection-manifest.json +13 -1
  317. package/dist/collection/components/accordion/accordion.ionic.css +201 -0
  318. package/dist/collection/components/accordion/accordion.ios.css +73 -58
  319. package/dist/collection/components/accordion/accordion.js +331 -324
  320. package/dist/collection/components/accordion/accordion.md.css +67 -59
  321. package/dist/collection/components/accordion-group/accordion-group.ionic.css +93 -0
  322. package/dist/collection/components/accordion-group/accordion-group.ios.css +16 -4
  323. package/dist/collection/components/accordion-group/accordion-group.js +69 -56
  324. package/dist/collection/components/accordion-group/accordion-group.md.css +22 -4
  325. package/dist/collection/components/action-sheet/action-sheet.ionic.css +494 -0
  326. package/dist/collection/components/action-sheet/action-sheet.ios.css +184 -54
  327. package/dist/collection/components/action-sheet/action-sheet.js +76 -166
  328. package/dist/collection/components/action-sheet/action-sheet.md.css +179 -55
  329. package/dist/collection/components/action-sheet/test/basic/fixture.js +0 -3
  330. package/dist/collection/components/alert/alert.ionic.css +787 -0
  331. package/dist/collection/components/alert/alert.ios.css +247 -54
  332. package/dist/collection/components/alert/alert.js +113 -236
  333. package/dist/collection/components/alert/alert.md.css +243 -56
  334. package/dist/collection/components/app/app.js +15 -86
  335. package/dist/collection/components/avatar/avatar.ionic.css +385 -0
  336. package/dist/collection/components/avatar/avatar.ios.css +7 -33
  337. package/dist/collection/components/avatar/avatar.js +120 -4
  338. package/dist/collection/components/avatar/avatar.md.css +51 -0
  339. package/dist/collection/components/back-button/back-button.ios.css +60 -48
  340. package/dist/collection/components/back-button/back-button.js +45 -61
  341. package/dist/collection/components/back-button/back-button.md.css +60 -48
  342. package/dist/collection/components/backdrop/backdrop.ionic.css +109 -0
  343. package/dist/collection/components/backdrop/backdrop.ios.css +56 -19
  344. package/dist/collection/components/backdrop/backdrop.js +26 -22
  345. package/dist/collection/components/backdrop/backdrop.md.css +56 -19
  346. package/dist/collection/components/badge/badge.ionic.css +272 -0
  347. package/dist/collection/components/badge/badge.ios.css +137 -12
  348. package/dist/collection/components/badge/badge.js +145 -15
  349. package/dist/collection/components/badge/badge.md.css +122 -12
  350. package/dist/collection/components/breadcrumb/breadcrumb.ios.css +20 -8
  351. package/dist/collection/components/breadcrumb/breadcrumb.js +60 -99
  352. package/dist/collection/components/breadcrumb/breadcrumb.md.css +20 -8
  353. package/dist/collection/components/breadcrumbs/breadcrumbs.ios.css +6 -0
  354. package/dist/collection/components/breadcrumbs/breadcrumbs.js +99 -112
  355. package/dist/collection/components/breadcrumbs/breadcrumbs.md.css +6 -0
  356. package/dist/collection/components/button/button.ionic.css +644 -0
  357. package/dist/collection/components/button/button.ios.css +154 -46
  358. package/dist/collection/components/button/button.js +122 -157
  359. package/dist/collection/components/button/button.md.css +150 -50
  360. package/dist/collection/components/buttons/buttons.ionic.css +97 -0
  361. package/dist/collection/components/buttons/buttons.ios.css +59 -7
  362. package/dist/collection/components/buttons/buttons.js +29 -21
  363. package/dist/collection/components/buttons/buttons.md.css +55 -3
  364. package/dist/collection/components/card/card.ionic.css +144 -0
  365. package/dist/collection/components/card/card.ios.css +65 -14
  366. package/dist/collection/components/card/card.js +61 -63
  367. package/dist/collection/components/card/card.md.css +65 -14
  368. package/dist/collection/components/card-content/card-content.ionic.css +89 -0
  369. package/dist/collection/components/card-content/card-content.ios.css +20 -35
  370. package/dist/collection/components/card-content/card-content.js +12 -10
  371. package/dist/collection/components/card-content/card-content.md.css +20 -35
  372. package/dist/collection/components/card-header/card-header.ionic.css +85 -0
  373. package/dist/collection/components/card-header/card-header.ios.css +27 -15
  374. package/dist/collection/components/card-header/card-header.js +20 -21
  375. package/dist/collection/components/card-header/card-header.md.css +27 -15
  376. package/dist/collection/components/card-subtitle/card-subtitle.ionic.css +144 -0
  377. package/dist/collection/components/card-subtitle/card-subtitle.ios.css +12 -0
  378. package/dist/collection/components/card-subtitle/card-subtitle.js +11 -14
  379. package/dist/collection/components/card-subtitle/card-subtitle.md.css +12 -0
  380. package/dist/collection/components/card-title/card-title.ios.css +73 -0
  381. package/dist/collection/components/card-title/card-title.js +11 -14
  382. package/dist/collection/components/card-title/card-title.md.css +73 -0
  383. package/dist/collection/components/checkbox/checkbox.ionic.css +536 -0
  384. package/dist/collection/components/checkbox/checkbox.ios.css +246 -115
  385. package/dist/collection/components/checkbox/checkbox.js +172 -157
  386. package/dist/collection/components/checkbox/checkbox.md.css +247 -116
  387. package/dist/collection/components/chip/chip.ionic.css +217 -0
  388. package/dist/collection/components/chip/chip.ios.css +67 -14
  389. package/dist/collection/components/chip/chip.js +116 -20
  390. package/dist/collection/components/chip/chip.md.css +67 -14
  391. package/dist/collection/components/col/col.css +192 -4
  392. package/dist/collection/components/col/col.js +212 -186
  393. package/dist/collection/components/content/content.css +47 -2
  394. package/dist/collection/components/content/content.js +78 -102
  395. package/dist/collection/components/datetime/datetime.ionic.css +703 -0
  396. package/dist/collection/components/datetime/datetime.ios.css +304 -148
  397. package/dist/collection/components/datetime/datetime.js +900 -1090
  398. package/dist/collection/components/datetime/datetime.md.css +294 -138
  399. package/dist/collection/components/datetime/utils/data.js +19 -18
  400. package/dist/collection/components/datetime/utils/format.js +11 -21
  401. package/dist/collection/components/datetime/utils/manipulation.js +8 -8
  402. package/dist/collection/components/datetime/utils/parse.js +10 -10
  403. package/dist/collection/components/datetime/utils/state.js +2 -8
  404. package/dist/collection/components/datetime/utils/validate.js +5 -4
  405. package/dist/collection/components/datetime-button/datetime-button.ios.css +6 -5
  406. package/dist/collection/components/datetime-button/datetime-button.js +246 -253
  407. package/dist/collection/components/datetime-button/datetime-button.md.css +6 -5
  408. package/dist/collection/components/divider/divider.ionic.css +148 -0
  409. package/dist/collection/components/divider/divider.ios.css +87 -0
  410. package/dist/collection/components/divider/divider.js +94 -0
  411. package/dist/collection/components/divider/divider.md.css +87 -0
  412. package/dist/collection/components/fab/fab.css +25 -1
  413. package/dist/collection/components/fab/fab.js +22 -25
  414. package/dist/collection/components/fab-button/fab-button.ios.css +18 -6
  415. package/dist/collection/components/fab-button/fab-button.js +79 -117
  416. package/dist/collection/components/fab-button/fab-button.md.css +20 -8
  417. package/dist/collection/components/fab-list/fab-list.css +12 -0
  418. package/dist/collection/components/fab-list/fab-list.js +20 -15
  419. package/dist/collection/components/footer/footer-interface.js +1 -0
  420. package/dist/collection/components/footer/footer.ios.css +33 -6
  421. package/dist/collection/components/footer/footer.js +151 -65
  422. package/dist/collection/components/footer/footer.md.css +40 -0
  423. package/dist/collection/components/gallery/gallery-constants.js +12 -0
  424. package/dist/collection/components/gallery/gallery-interface.js +1 -0
  425. package/dist/collection/components/gallery/gallery.css +15 -0
  426. package/dist/collection/components/gallery/gallery.js +679 -0
  427. package/dist/collection/components/gallery/test/utils.js +100 -0
  428. package/dist/collection/components/gallery-item/gallery-item.css +49 -0
  429. package/dist/collection/components/gallery-item/gallery-item.js +99 -0
  430. package/dist/collection/components/grid/grid.css +12 -0
  431. package/dist/collection/components/grid/grid.js +15 -9
  432. package/dist/collection/components/header/header-interface.js +1 -0
  433. package/dist/collection/components/header/header.ionic.css +250 -0
  434. package/dist/collection/components/header/header.ios.css +178 -133
  435. package/dist/collection/components/header/header.js +202 -70
  436. package/dist/collection/components/header/header.md.css +199 -9
  437. package/dist/collection/components/header/header.utils.js +6 -13
  438. package/dist/collection/components/img/img.js +16 -34
  439. package/dist/collection/components/infinite-scroll/infinite-scroll.js +164 -76
  440. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.ios.css +12 -0
  441. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +19 -30
  442. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.md.css +12 -0
  443. package/dist/collection/components/input/input.ionic.css +891 -0
  444. package/dist/collection/components/input/input.ios.css +247 -191
  445. package/dist/collection/components/input/input.js +333 -357
  446. package/dist/collection/components/input/input.md.css +234 -285
  447. package/dist/collection/components/input-otp/input-otp.ionic.css +371 -0
  448. package/dist/collection/components/input-otp/input-otp.ios.css +105 -60
  449. package/dist/collection/components/input-otp/input-otp.js +437 -432
  450. package/dist/collection/components/input-otp/input-otp.md.css +105 -60
  451. package/dist/collection/components/input-password-toggle/input-password-toggle.ionic.css +78 -0
  452. package/dist/collection/components/input-password-toggle/input-password-toggle.js +51 -36
  453. package/dist/collection/components/input-password-toggle/input-password-toggle.native.css +61 -0
  454. package/dist/collection/components/item/item.ionic.css +496 -0
  455. package/dist/collection/components/item/item.ios.css +120 -80
  456. package/dist/collection/components/item/item.js +98 -113
  457. package/dist/collection/components/item/item.md.css +131 -79
  458. package/dist/collection/components/item-divider/item-divider.ios.css +18 -0
  459. package/dist/collection/components/item-divider/item-divider.js +21 -23
  460. package/dist/collection/components/item-divider/item-divider.md.css +18 -0
  461. package/dist/collection/components/item-group/item-group.ios.css +12 -0
  462. package/dist/collection/components/item-group/item-group.js +13 -7
  463. package/dist/collection/components/item-group/item-group.md.css +12 -0
  464. package/dist/collection/components/item-option/item-option.ionic.css +277 -0
  465. package/dist/collection/components/item-option/item-option.ios.css +136 -29
  466. package/dist/collection/components/item-option/item-option.js +92 -56
  467. package/dist/collection/components/item-option/item-option.md.css +136 -29
  468. package/dist/collection/components/item-options/item-options.ionic.css +221 -0
  469. package/dist/collection/components/item-options/item-options.ios.css +77 -34
  470. package/dist/collection/components/item-options/item-options.js +20 -17
  471. package/dist/collection/components/item-options/item-options.md.css +77 -34
  472. package/dist/collection/components/item-sliding/item-sliding.ionic.css +211 -0
  473. package/dist/collection/components/item-sliding/item-sliding.js +441 -61
  474. package/dist/collection/components/item-sliding/{item-sliding.css → item-sliding.native.css} +84 -9
  475. package/dist/collection/components/item-sliding/test/test.utils.js +13 -0
  476. package/dist/collection/components/label/label.ios.css +18 -0
  477. package/dist/collection/components/label/label.js +15 -32
  478. package/dist/collection/components/label/label.md.css +18 -0
  479. package/dist/collection/components/list/list.ionic.css +212 -0
  480. package/dist/collection/components/list/list.ios.css +54 -14
  481. package/dist/collection/components/list/list.js +55 -19
  482. package/dist/collection/components/list/list.md.css +56 -16
  483. package/dist/collection/components/list-header/list-header.ionic.css +190 -0
  484. package/dist/collection/components/list-header/list-header.ios.css +82 -38
  485. package/dist/collection/components/list-header/list-header.js +11 -18
  486. package/dist/collection/components/list-header/list-header.md.css +82 -38
  487. package/dist/collection/components/loading/loading.ios.css +13 -1
  488. package/dist/collection/components/loading/loading.js +62 -143
  489. package/dist/collection/components/loading/loading.md.css +13 -1
  490. package/dist/collection/components/menu/menu.ios.css +15 -3
  491. package/dist/collection/components/menu/menu.js +71 -108
  492. package/dist/collection/components/menu/menu.md.css +15 -3
  493. package/dist/collection/components/menu-button/menu-button.ionic.css +236 -0
  494. package/dist/collection/components/menu-button/menu-button.ios.css +48 -14
  495. package/dist/collection/components/menu-button/menu-button.js +43 -38
  496. package/dist/collection/components/menu-button/menu-button.md.css +49 -15
  497. package/dist/collection/components/menu-toggle/menu-toggle.js +21 -25
  498. package/dist/collection/components/modal/animations/ionic.enter.js +40 -0
  499. package/dist/collection/components/modal/animations/ionic.leave.js +28 -0
  500. package/dist/collection/components/modal/animations/ios.enter.js +1 -1
  501. package/dist/collection/components/modal/animations/md.enter.js +1 -1
  502. package/dist/collection/components/modal/animations/sheet.js +8 -2
  503. package/dist/collection/components/modal/gestures/sheet.js +86 -32
  504. package/dist/collection/components/modal/gestures/swipe-to-close.js +3 -15
  505. package/dist/collection/components/modal/modal.ionic.css +255 -0
  506. package/dist/collection/components/modal/modal.ios.css +178 -70
  507. package/dist/collection/components/modal/modal.js +272 -404
  508. package/dist/collection/components/modal/modal.md.css +178 -70
  509. package/dist/collection/components/modal/safe-area-utils.js +7 -6
  510. package/dist/collection/components/modal/test/fixtures.js +0 -3
  511. package/dist/collection/components/nav/nav.css +7 -1
  512. package/dist/collection/components/nav/nav.js +256 -72
  513. package/dist/collection/components/nav/view-controller.js +1 -7
  514. package/dist/collection/components/nav-link/nav-link.js +14 -21
  515. package/dist/collection/components/note/note.ios.css +12 -0
  516. package/dist/collection/components/note/note.js +11 -14
  517. package/dist/collection/components/note/note.md.css +12 -0
  518. package/dist/collection/components/picker/picker.ios.css +15 -3
  519. package/dist/collection/components/picker/picker.js +398 -403
  520. package/dist/collection/components/picker/picker.md.css +15 -3
  521. package/dist/collection/components/picker-column/picker-column.css +9 -5
  522. package/dist/collection/components/picker-column/picker-column.js +409 -418
  523. package/dist/collection/components/picker-column-option/picker-column-option.ios.css +6 -0
  524. package/dist/collection/components/picker-column-option/picker-column-option.js +42 -38
  525. package/dist/collection/components/picker-column-option/picker-column-option.md.css +7 -6
  526. package/dist/collection/components/picker-legacy/animations/ios.enter.js +27 -0
  527. package/dist/collection/components/picker-legacy/animations/ios.leave.js +23 -0
  528. package/dist/collection/components/picker-legacy/picker-interface.js +1 -0
  529. package/dist/collection/components/picker-legacy/picker.ios.css +312 -0
  530. package/dist/collection/components/picker-legacy/picker.js +891 -0
  531. package/dist/collection/components/picker-legacy/picker.md.css +299 -0
  532. package/dist/collection/components/picker-legacy-column/picker-column.ios.css +243 -0
  533. package/dist/collection/components/picker-legacy-column/picker-column.js +422 -0
  534. package/dist/collection/components/picker-legacy-column/picker-column.md.css +234 -0
  535. package/dist/collection/components/picker-legacy-column/test/test.utils.js +43 -0
  536. package/dist/collection/components/popover/animations/ios.enter.js +2 -1
  537. package/dist/collection/components/popover/animations/md.enter.js +2 -1
  538. package/dist/collection/components/popover/popover.ionic.css +290 -0
  539. package/dist/collection/components/popover/popover.ios.css +15 -2
  540. package/dist/collection/components/popover/popover.js +199 -313
  541. package/dist/collection/components/popover/popover.md.css +15 -2
  542. package/dist/collection/components/popover/test/fixture.js +0 -1
  543. package/dist/collection/components/popover/utils.js +6 -4
  544. package/dist/collection/components/progress-bar/progress-bar.ionic.css +287 -0
  545. package/dist/collection/components/progress-bar/progress-bar.ios.css +48 -17
  546. package/dist/collection/components/progress-bar/progress-bar.js +65 -33
  547. package/dist/collection/components/progress-bar/progress-bar.md.css +48 -17
  548. package/dist/collection/components/radio/radio.ionic.css +422 -0
  549. package/dist/collection/components/radio/radio.ios.css +207 -102
  550. package/dist/collection/components/radio/radio.js +77 -108
  551. package/dist/collection/components/radio/radio.md.css +207 -102
  552. package/dist/collection/components/radio-group/radio-group.ionic.css +119 -0
  553. package/dist/collection/components/radio-group/radio-group.ios.css +43 -19
  554. package/dist/collection/components/radio-group/radio-group.js +113 -107
  555. package/dist/collection/components/radio-group/radio-group.md.css +43 -19
  556. package/dist/collection/components/radio-group/test/fixtures.js +0 -2
  557. package/dist/collection/components/range/range.ionic.css +567 -0
  558. package/dist/collection/components/range/range.ios.css +128 -85
  559. package/dist/collection/components/range/range.js +247 -305
  560. package/dist/collection/components/range/range.md.css +128 -85
  561. package/dist/collection/components/refresher/refresher.ios.css +14 -1
  562. package/dist/collection/components/refresher/refresher.js +88 -117
  563. package/dist/collection/components/refresher/refresher.md.css +15 -2
  564. package/dist/collection/components/refresher-content/refresher-content.js +37 -47
  565. package/dist/collection/components/reorder/reorder.ios.css +6 -0
  566. package/dist/collection/components/reorder/reorder.js +26 -7
  567. package/dist/collection/components/reorder/reorder.md.css +6 -0
  568. package/dist/collection/components/reorder-group/reorder-group.css +6 -0
  569. package/dist/collection/components/reorder-group/reorder-group.js +22 -47
  570. package/dist/collection/components/ripple-effect/{ripple-effect.css → ripple-effect.common.css} +7 -1
  571. package/dist/collection/components/ripple-effect/ripple-effect.ionic.css +215 -0
  572. package/dist/collection/components/ripple-effect/ripple-effect.js +26 -17
  573. package/dist/collection/components/route/route.js +14 -39
  574. package/dist/collection/components/route-redirect/route-redirect.js +0 -31
  575. package/dist/collection/components/router/router.js +37 -37
  576. package/dist/collection/components/router/utils/dom.js +7 -25
  577. package/dist/collection/components/router/utils/matching.js +9 -7
  578. package/dist/collection/components/router/utils/parser.js +1 -1
  579. package/dist/collection/components/router/utils/path.js +1 -0
  580. package/dist/collection/components/router-link/router-link.css +8 -2
  581. package/dist/collection/components/router-link/router-link.js +19 -40
  582. package/dist/collection/components/router-outlet/router-outlet.css +7 -1
  583. package/dist/collection/components/router-outlet/router-outlet.js +25 -83
  584. package/dist/collection/components/row/row.css +16 -0
  585. package/dist/collection/components/row/row.js +9 -2
  586. package/dist/collection/components/searchbar/searchbar.ionic.css +622 -0
  587. package/dist/collection/components/searchbar/searchbar.ios.css +56 -18
  588. package/dist/collection/components/searchbar/searchbar.js +356 -321
  589. package/dist/collection/components/searchbar/searchbar.md.css +56 -18
  590. package/dist/collection/components/segment/segment.ionic.css +115 -0
  591. package/dist/collection/components/segment/segment.ios.css +45 -2
  592. package/dist/collection/components/segment/segment.js +94 -126
  593. package/dist/collection/components/segment/segment.md.css +45 -2
  594. package/dist/collection/components/segment-button/segment-button.ionic.css +352 -0
  595. package/dist/collection/components/segment-button/segment-button.ios.css +146 -105
  596. package/dist/collection/components/segment-button/segment-button.js +46 -49
  597. package/dist/collection/components/segment-button/segment-button.md.css +148 -107
  598. package/dist/collection/components/segment-content/segment-content.js +1 -1
  599. package/dist/collection/components/segment-view/segment-view.ios.css +6 -0
  600. package/dist/collection/components/segment-view/segment-view.js +27 -28
  601. package/dist/collection/components/segment-view/segment-view.md.css +6 -0
  602. package/dist/collection/components/select/select.ionic.css +809 -0
  603. package/dist/collection/components/select/select.ios.css +351 -206
  604. package/dist/collection/components/select/select.js +431 -431
  605. package/dist/collection/components/select/select.md.css +383 -230
  606. package/dist/collection/components/select-modal/select-modal.ionic.css +257 -0
  607. package/dist/collection/components/select-modal/select-modal.ios.css +293 -45
  608. package/dist/collection/components/select-modal/select-modal.js +81 -37
  609. package/dist/collection/components/select-modal/select-modal.md.css +273 -43
  610. package/dist/collection/components/select-modal/test/fixtures.js +1 -8
  611. package/dist/collection/components/select-option/select-option.js +15 -48
  612. package/dist/collection/components/select-popover/select-popover.ionic.css +255 -0
  613. package/dist/collection/components/select-popover/select-popover.ios.css +188 -124
  614. package/dist/collection/components/select-popover/select-popover.js +37 -44
  615. package/dist/collection/components/select-popover/select-popover.md.css +228 -47
  616. package/dist/collection/components/select-popover/test/fixtures.js +1 -8
  617. package/dist/collection/components/skeleton-text/skeleton-text.css +6 -0
  618. package/dist/collection/components/skeleton-text/skeleton-text.js +15 -15
  619. package/dist/collection/components/spinner/{spinner.css → spinner.ionic.css} +78 -10
  620. package/dist/collection/components/spinner/spinner.js +55 -26
  621. package/dist/collection/components/spinner/spinner.native.css +199 -0
  622. package/dist/collection/components/split-pane/split-pane.ios.css +20 -2
  623. package/dist/collection/components/split-pane/split-pane.js +28 -33
  624. package/dist/collection/components/split-pane/split-pane.md.css +20 -2
  625. package/dist/collection/components/tab/tab.js +10 -17
  626. package/dist/collection/components/tab-bar/tab-bar.ionic.css +249 -0
  627. package/dist/collection/components/tab-bar/tab-bar.ios.css +86 -43
  628. package/dist/collection/components/tab-bar/tab-bar.js +190 -44
  629. package/dist/collection/components/tab-bar/tab-bar.md.css +86 -43
  630. package/dist/collection/components/tab-button/tab-button.ionic.css +373 -0
  631. package/dist/collection/components/tab-button/tab-button.ios.css +171 -95
  632. package/dist/collection/components/tab-button/tab-button.js +74 -68
  633. package/dist/collection/components/tab-button/tab-button.md.css +137 -93
  634. package/dist/collection/components/tabs/tabs.css +7 -1
  635. package/dist/collection/components/tabs/tabs.js +23 -33
  636. package/dist/collection/components/text/text.css +6 -0
  637. package/dist/collection/components/text/text.js +7 -12
  638. package/dist/collection/components/textarea/textarea.ionic.css +898 -0
  639. package/dist/collection/components/textarea/textarea.ios.css +329 -221
  640. package/dist/collection/components/textarea/textarea.js +334 -302
  641. package/dist/collection/components/textarea/textarea.md.css +358 -231
  642. package/dist/collection/components/thumbnail/thumbnail.css +6 -0
  643. package/dist/collection/components/thumbnail/thumbnail.js +9 -2
  644. package/dist/collection/components/title/title.ionic.css +127 -0
  645. package/dist/collection/components/title/title.ios.css +32 -4
  646. package/dist/collection/components/title/title.js +13 -23
  647. package/dist/collection/components/title/title.md.css +39 -4
  648. package/dist/collection/components/toast/animations/utils.js +1 -1
  649. package/dist/collection/components/toast/toast.ionic.css +394 -0
  650. package/dist/collection/components/toast/toast.ios.css +84 -45
  651. package/dist/collection/components/toast/toast.js +178 -232
  652. package/dist/collection/components/toast/toast.md.css +84 -45
  653. package/dist/collection/components/toggle/toggle.ionic.css +512 -0
  654. package/dist/collection/components/toggle/toggle.ios.css +247 -127
  655. package/dist/collection/components/toggle/toggle.js +164 -175
  656. package/dist/collection/components/toggle/toggle.md.css +245 -127
  657. package/dist/collection/components/toolbar/test/image.svg +1 -0
  658. package/dist/collection/components/toolbar/toolbar.ionic.css +249 -0
  659. package/dist/collection/components/toolbar/toolbar.ios.css +90 -47
  660. package/dist/collection/components/toolbar/toolbar.js +222 -25
  661. package/dist/collection/components/toolbar/toolbar.md.css +90 -47
  662. package/dist/collection/global/config.js +6 -4
  663. package/dist/collection/global/ionic-global.js +242 -20
  664. package/dist/collection/index.js +1 -1
  665. package/dist/collection/utils/animation/animation.js +3 -3
  666. package/dist/collection/utils/config.js +4 -5
  667. package/dist/collection/utils/css-value-validation.js +39 -0
  668. package/dist/collection/utils/focus-controller/index.js +1 -1
  669. package/dist/collection/utils/focus-trap.js +16 -5
  670. package/dist/collection/utils/focus-visible.js +22 -0
  671. package/dist/collection/utils/forms/clear-button-press-controller.js +40 -0
  672. package/dist/collection/utils/forms/index.js +1 -1
  673. package/dist/collection/utils/forms/validity.js +31 -0
  674. package/dist/collection/utils/framework-delegate.js +9 -5
  675. package/dist/collection/utils/gesture/gesture-controller.js +8 -15
  676. package/dist/collection/utils/gesture/index.js +2 -10
  677. package/dist/collection/utils/hardware-back-button.js +18 -3
  678. package/dist/collection/utils/helpers.js +72 -5
  679. package/dist/collection/utils/input-shims/hacks/scroll-assist.js +5 -4
  680. package/dist/collection/utils/input-shims/hacks/scroll-data.js +2 -1
  681. package/dist/collection/utils/keyboard/keyboard-controller.js +8 -6
  682. package/dist/collection/utils/keyboard/keyboard.js +1 -1
  683. package/dist/collection/utils/logging/index.js +4 -23
  684. package/dist/collection/utils/media.js +1 -0
  685. package/dist/collection/utils/menu-controller/animations/overlay.js +3 -3
  686. package/dist/collection/utils/menu-controller/animations/push.js +2 -1
  687. package/dist/collection/utils/menu-controller/animations/reveal.js +2 -1
  688. package/dist/collection/utils/menu-controller/index.js +2 -1
  689. package/dist/collection/utils/native/haptic.js +3 -2
  690. package/dist/collection/utils/native/keyboard.js +2 -2
  691. package/dist/collection/utils/native/status-bar.js +1 -1
  692. package/dist/collection/utils/overlay-control-label.js +13 -11
  693. package/dist/collection/utils/overlays.js +312 -45
  694. package/dist/collection/utils/platform.js +5 -4
  695. package/dist/collection/utils/rtl/dir.js +3 -2
  696. package/dist/collection/utils/sanitization/index.js +2 -2
  697. package/dist/collection/utils/scroll-hide-controller.js +178 -0
  698. package/dist/collection/utils/select-option-render.js +2 -1
  699. package/dist/collection/utils/slot-mutation-controller.js +2 -1
  700. package/dist/collection/utils/test/playwright/apply-keyboard-focus.js +1 -1
  701. package/dist/collection/utils/test/playwright/drag-element.js +35 -11
  702. package/dist/collection/utils/test/playwright/generator.js +51 -25
  703. package/dist/collection/utils/test/playwright/page/event-spy.js +12 -11
  704. package/dist/collection/utils/test/playwright/page/utils/goto.js +15 -5
  705. package/dist/collection/utils/test/playwright/page/utils/set-content.js +27 -4
  706. package/dist/collection/utils/test/playwright/page/utils/set-ion-viewport.js +3 -2
  707. package/dist/collection/utils/test/press-keys.js +17 -10
  708. package/dist/collection/utils/theme.js +26 -7
  709. package/dist/collection/utils/transition/ios.transition.js +14 -9
  710. package/dist/collection/utils/transition/md.transition.js +4 -3
  711. package/dist/docs.json +10054 -537
  712. package/dist/esm/{animation-CGFdmGk9.js → animation-BsVixxLP.js} +5 -5
  713. package/dist/esm/{app-globals-CYmMeGdU.js → app-globals-rPvWQFXp.js} +1 -1
  714. package/dist/esm/{button-active-BDOsVAiZ.js → button-active-BS8YgJRD.js} +3 -3
  715. package/dist/esm/{capacitor-CFERIeaU.js → capacitor-BnXrCBvt.js} +1 -1
  716. package/dist/esm/clear-button-press-controller-Ci6Q_x5-.js +43 -0
  717. package/dist/esm/{config-DWCzVL3Y.js → config-BwKpO3Is.js} +4 -5
  718. package/dist/esm/{dir-Dojwmvde.js → dir-o8OKV5aD.js} +3 -2
  719. package/dist/esm/{focus-visible-BmVRXR1y.js → focus-visible-vXpMhGrs.js} +23 -1
  720. package/dist/esm/{format-Dcwga61t.js → format-2WlZcMvG.js} +31 -41
  721. package/dist/esm/{framework-delegate-BHTU2Ip9.js → framework-delegate-P5K_3uYw.js} +10 -6
  722. package/dist/esm/{gesture-controller-TXPDHL13.js → gesture-controller-BTEOs1at.js} +8 -15
  723. package/dist/esm/{haptic-Cq4UAeka.js → haptic-ByW74Ow9.js} +4 -3
  724. package/dist/esm/{helpers-CAGf8Wgp.js → helpers-ChPZH7zh.js} +74 -8
  725. package/dist/esm/{index-DcPaH5uL.js → index-Bck1OwMs.js} +3 -9
  726. package/dist/esm/{index-ChhhtsGZ.js → index-C0EQceqV.js} +66 -34
  727. package/dist/esm/{index-Clc-28O1.js → index-C7EAbm0C.js} +5 -4
  728. package/dist/esm/{index-CqneaaGd.js → index-C7F1yJyV.js} +13 -12
  729. package/dist/esm/{index-WlteAIqz.js → index-CXSPjEca.js} +5 -5
  730. package/dist/esm/{index-CKM1DdGm.js → index-Mq5pCWmZ.js} +3 -3
  731. package/dist/esm/{index-BvabGprD.js → index-PnwG0glX.js} +2 -1
  732. package/dist/esm/{index-T0JxBI8V.js → index-niemeDYi.js} +2 -2
  733. package/dist/esm/index.js +17 -18
  734. package/dist/esm/{input-shims-B8sfni1e.js → input-shims-CM5m0K8T.js} +15 -12
  735. package/dist/esm/input.utils-DhJNJPiU.js +147 -0
  736. package/dist/esm/ion-accordion_2.entry.js +376 -376
  737. package/dist/esm/ion-action-sheet.entry.js +87 -179
  738. package/dist/esm/ion-alert.entry.js +126 -251
  739. package/dist/esm/ion-app_8.entry.js +607 -460
  740. package/dist/esm/ion-avatar_3.entry.js +125 -19
  741. package/dist/esm/ion-back-button.entry.js +49 -65
  742. package/dist/esm/ion-backdrop.entry.js +22 -23
  743. package/dist/esm/ion-breadcrumb_2.entry.js +157 -210
  744. package/dist/esm/ion-button_2.entry.js +118 -153
  745. package/dist/esm/ion-card_5.entry.js +80 -110
  746. package/dist/esm/ion-checkbox.entry.js +134 -160
  747. package/dist/esm/ion-chip.entry.js +56 -21
  748. package/dist/esm/ion-col_3.entry.js +61 -186
  749. package/dist/esm/ion-datetime-button.entry.js +248 -256
  750. package/dist/esm/ion-datetime_3.entry.js +3206 -0
  751. package/dist/esm/ion-divider.entry.js +49 -0
  752. package/dist/esm/ion-fab_3.entry.js +109 -155
  753. package/dist/esm/ion-gallery-item.entry.js +57 -0
  754. package/dist/esm/ion-gallery.entry.js +606 -0
  755. package/dist/esm/ion-img.entry.js +17 -35
  756. package/dist/esm/ion-infinite-scroll_2.entry.js +157 -109
  757. package/dist/esm/ion-input-otp.entry.js +437 -435
  758. package/dist/esm/ion-input-password-toggle.entry.js +54 -40
  759. package/dist/esm/ion-input.entry.js +303 -349
  760. package/dist/esm/ion-item-option_3.entry.js +512 -137
  761. package/dist/esm/ion-item_8.entry.js +186 -218
  762. package/dist/esm/ion-loading.entry.js +69 -152
  763. package/dist/esm/ion-menu_3.entry.js +136 -182
  764. package/dist/esm/ion-modal.entry.js +459 -529
  765. package/dist/esm/ion-nav_2.entry.js +164 -104
  766. package/dist/esm/ion-picker-column-option.entry.js +40 -40
  767. package/dist/esm/ion-picker-column.entry.js +410 -422
  768. package/dist/esm/ion-picker.entry.js +401 -406
  769. package/dist/esm/ion-popover.entry.js +212 -324
  770. package/dist/esm/ion-progress-bar.entry.js +48 -36
  771. package/dist/esm/ion-radio_2.entry.js +162 -217
  772. package/dist/esm/ion-range.entry.js +251 -309
  773. package/dist/esm/ion-refresher_2.entry.js +127 -175
  774. package/dist/esm/ion-reorder_2.entry.js +47 -60
  775. package/dist/esm/ion-ripple-effect.entry.js +26 -18
  776. package/dist/esm/ion-route_4.entry.js +76 -179
  777. package/dist/esm/ion-searchbar.entry.js +305 -308
  778. package/dist/esm/ion-segment-content.entry.js +2 -2
  779. package/dist/esm/ion-segment-view.entry.js +27 -28
  780. package/dist/esm/ion-segment_2.entry.js +141 -177
  781. package/dist/esm/ion-select-modal.entry.js +71 -50
  782. package/dist/esm/ion-select_3.entry.js +416 -507
  783. package/dist/esm/ion-spinner.entry.js +36 -28
  784. package/dist/esm/ion-split-pane.entry.js +25 -34
  785. package/dist/esm/ion-tab-bar_2.entry.js +179 -116
  786. package/dist/esm/ion-tab_2.entry.js +30 -55
  787. package/dist/esm/ion-text.entry.js +7 -13
  788. package/dist/esm/ion-textarea.entry.js +309 -302
  789. package/dist/esm/ion-toast.entry.js +149 -244
  790. package/dist/esm/ion-toggle.entry.js +172 -184
  791. package/dist/esm/ionic-global-BJDU78B6.js +508 -0
  792. package/dist/esm/ionic.js +5 -5
  793. package/dist/esm/{ios.transition-DXRCmcbC.js → ios.transition-6oGu53GR.js} +21 -15
  794. package/dist/esm/{item-multiple-inputs-rU8VaNNg.js → item-multiple-inputs-C6onMFOo.js} +1 -1
  795. package/dist/esm/{keyboard-Cj8mLJeq.js → keyboard-XukEYIFf.js} +5 -4
  796. package/dist/esm/{keyboard-DAF8GNJ9.js → keyboard-x-uHYVoq.js} +3 -3
  797. package/dist/esm/loader.js +5 -5
  798. package/dist/esm/{md.transition-BMngO4i_.js → md.transition-Dy5HxiSE.js} +11 -9
  799. package/dist/esm/notch-controller-BYB7mUMg.js +153 -0
  800. package/dist/esm/{overlay-control-label-BSQPZ79H.js → overlay-control-label-CODBQrPj.js} +13 -11
  801. package/dist/esm/{overlays-CPmIs9Ls.js → overlays-C3YvaMgX.js} +333 -57
  802. package/dist/esm/scroll-hide-controller-B3MRYNXh.js +342 -0
  803. package/dist/esm/{select-option-render-C4m76VGH.js → select-option-render-BlKZ2H83.js} +4 -3
  804. package/dist/esm/{status-tap-CHB7KwIb.js → status-tap-DK-ylvU7.js} +5 -4
  805. package/dist/esm/{swipe-back-C9HW1bug.js → swipe-back-DFICtpMC.js} +6 -5
  806. package/dist/esm/theme-DaJxRxSQ.js +67 -0
  807. package/dist/esm/validity-BjW8SOqw.js +48 -0
  808. package/dist/html.html-data.json +2690 -123
  809. package/dist/ionic/index.esm.js +1 -1
  810. package/dist/ionic/ionic.esm.js +1 -1
  811. package/dist/ionic/p--sroV-k-.js +4 -0
  812. package/dist/ionic/p-0115c2fa.entry.js +4 -0
  813. package/dist/ionic/p-0ac15b5f.entry.js +4 -0
  814. package/dist/ionic/p-0b2c58e0.entry.js +4 -0
  815. package/dist/ionic/p-0bfb8d9e.entry.js +4 -0
  816. package/dist/ionic/p-1147fa06.entry.js +4 -0
  817. package/dist/ionic/p-1e45586e.entry.js +4 -0
  818. package/dist/ionic/p-1febf200.entry.js +4 -0
  819. package/dist/ionic/p-208cecae.entry.js +4 -0
  820. package/dist/ionic/p-29f69d29.entry.js +4 -0
  821. package/dist/ionic/p-2b5e04c5.entry.js +4 -0
  822. package/dist/ionic/p-311ef139.entry.js +4 -0
  823. package/dist/ionic/p-3eff3411.entry.js +4 -0
  824. package/dist/ionic/p-3f17704b.entry.js +4 -0
  825. package/dist/ionic/p-46e754ae.entry.js +4 -0
  826. package/dist/ionic/p-4901a10b.entry.js +4 -0
  827. package/dist/ionic/p-4c8178d8.entry.js +4 -0
  828. package/dist/ionic/p-5196bee9.entry.js +4 -0
  829. package/dist/ionic/p-5386b094.entry.js +4 -0
  830. package/dist/ionic/p-54579b68.entry.js +4 -0
  831. package/dist/ionic/p-54baa1af.entry.js +4 -0
  832. package/dist/ionic/p-59e59209.entry.js +4 -0
  833. package/dist/ionic/p-5ad0c670.entry.js +4 -0
  834. package/dist/ionic/p-62602fbd.entry.js +4 -0
  835. package/dist/ionic/p-6b86cb62.entry.js +4 -0
  836. package/dist/ionic/p-7134537b.entry.js +4 -0
  837. package/dist/ionic/p-72eacca0.entry.js +4 -0
  838. package/dist/ionic/p-7ae06f6f.entry.js +4 -0
  839. package/dist/ionic/p-7bde9ee1.entry.js +4 -0
  840. package/dist/ionic/p-7f59020c.entry.js +4 -0
  841. package/dist/ionic/p-7k7Q1A38.js +4 -0
  842. package/dist/ionic/p-87ab986c.entry.js +4 -0
  843. package/dist/ionic/p-9dff6288.entry.js +4 -0
  844. package/dist/ionic/p-9e09cb80.entry.js +4 -0
  845. package/dist/ionic/p-BFhQ1N-L.js +4 -0
  846. package/dist/ionic/p-BG7tpRhR.js +4 -0
  847. package/dist/ionic/p-BITyMTKr.js +4 -0
  848. package/dist/ionic/p-BRPONI7N.js +4 -0
  849. package/dist/ionic/p-BTEOs1at.js +4 -0
  850. package/dist/ionic/p-BVdSuKmt.js +4 -0
  851. package/dist/ionic/p-BYRVyMu9.js +4 -0
  852. package/dist/ionic/p-BjW8SOqw.js +4 -0
  853. package/dist/ionic/p-Bpx1lBiP.js +4 -0
  854. package/dist/ionic/p-BwKpO3Is.js +4 -0
  855. package/dist/ionic/p-C-BLhfUi.js +4 -0
  856. package/dist/ionic/p-C-aO35cw.js +4 -0
  857. package/dist/ionic/p-C0EQceqV.js +5 -0
  858. package/dist/ionic/p-CDrQfM-I.js +4 -0
  859. package/dist/ionic/p-CODBQrPj.js +4 -0
  860. package/dist/ionic/p-CTSaffvS.js +4 -0
  861. package/dist/ionic/p-CaM5HwzM.js +4 -0
  862. package/dist/ionic/p-CgaW5Zy8.js +4 -0
  863. package/dist/ionic/p-Cipl19Qe.js +4 -0
  864. package/dist/ionic/p-CnBfCmL2.js +4 -0
  865. package/dist/ionic/p-D-Xit5Ye.js +4 -0
  866. package/dist/ionic/p-D7LIC84Z.js +4 -0
  867. package/dist/ionic/p-D844sgjq.js +4 -0
  868. package/dist/ionic/p-DWDKFjrH.js +4 -0
  869. package/dist/ionic/p-DaJxRxSQ.js +4 -0
  870. package/dist/ionic/p-DhyWlGap.js +4 -0
  871. package/dist/ionic/p-DiyY-i-5.js +4 -0
  872. package/dist/ionic/p-DrxPmT9E.js +4 -0
  873. package/dist/ionic/p-PnwG0glX.js +4 -0
  874. package/dist/ionic/p-YIsE5bNG.js +4 -0
  875. package/dist/ionic/p-a320cdb2.entry.js +4 -0
  876. package/dist/ionic/p-a37444b3.entry.js +4 -0
  877. package/dist/ionic/p-a4bed36b.entry.js +4 -0
  878. package/dist/ionic/p-a7914fe5.entry.js +4 -0
  879. package/dist/ionic/p-aa298c58.entry.js +4 -0
  880. package/dist/ionic/p-ace3062d.entry.js +4 -0
  881. package/dist/ionic/p-b70775b0.entry.js +4 -0
  882. package/dist/ionic/p-b7c75507.entry.js +4 -0
  883. package/dist/ionic/p-b920f149.entry.js +4 -0
  884. package/dist/ionic/p-c39025c0.entry.js +4 -0
  885. package/dist/ionic/p-c9cda5ce.entry.js +4 -0
  886. package/dist/ionic/p-cc314123.entry.js +4 -0
  887. package/dist/ionic/p-d1f42864.entry.js +4 -0
  888. package/dist/ionic/p-d4506138.entry.js +4 -0
  889. package/dist/ionic/p-dbd06d8d.entry.js +4 -0
  890. package/dist/ionic/p-dda49380.entry.js +4 -0
  891. package/dist/ionic/p-de4e8418.entry.js +4 -0
  892. package/dist/ionic/p-e95618c4.entry.js +4 -0
  893. package/dist/ionic/p-f89fcf62.entry.js +4 -0
  894. package/dist/ionic/p-fcce2dda.entry.js +4 -0
  895. package/dist/ionic/p-fd2a869f.entry.js +4 -0
  896. package/dist/ionic/p-fd95a423.entry.js +4 -0
  897. package/dist/ionic/p-fe14205b.entry.js +4 -0
  898. package/dist/ionic/p-i6iV8hMy.js +4 -0
  899. package/dist/ionic/p-nUlpIttM.js +4 -0
  900. package/dist/ionic/p-o8OKV5aD.js +4 -0
  901. package/dist/ionic/p-vXpMhGrs.js +4 -0
  902. package/dist/ionic/p-zRFin7iz.js +4 -0
  903. package/dist/ionic/p-zn4qAQ_d.js +4 -0
  904. package/dist/types/components/accordion/accordion.d.ts +12 -3
  905. package/dist/types/components/accordion-group/accordion-group.d.ts +12 -1
  906. package/dist/types/components/action-sheet/action-sheet-interface.d.ts +3 -7
  907. package/dist/types/components/action-sheet/action-sheet.d.ts +3 -2
  908. package/dist/types/components/alert/alert-interface.d.ts +3 -7
  909. package/dist/types/components/alert/alert.d.ts +3 -2
  910. package/dist/types/components/app/app.d.ts +4 -5
  911. package/dist/types/components/avatar/avatar.d.ts +32 -0
  912. package/dist/types/components/back-button/back-button.d.ts +8 -1
  913. package/dist/types/components/backdrop/backdrop.d.ts +4 -0
  914. package/dist/types/components/badge/badge.d.ts +34 -1
  915. package/dist/types/components/breadcrumb/breadcrumb.d.ts +14 -1
  916. package/dist/types/components/breadcrumbs/breadcrumbs.d.ts +2 -2
  917. package/dist/types/components/button/button.d.ts +23 -8
  918. package/dist/types/components/buttons/buttons.d.ts +5 -1
  919. package/dist/types/components/card/card.d.ts +8 -1
  920. package/dist/types/components/card-content/card-content.d.ts +2 -1
  921. package/dist/types/components/card-header/card-header.d.ts +3 -2
  922. package/dist/types/components/card-subtitle/card-subtitle.d.ts +2 -1
  923. package/dist/types/components/card-title/card-title.d.ts +2 -1
  924. package/dist/types/components/checkbox/checkbox.d.ts +26 -5
  925. package/dist/types/components/chip/chip.d.ts +26 -1
  926. package/dist/types/components/col/col.d.ts +52 -5
  927. package/dist/types/components/content/content.d.ts +3 -0
  928. package/dist/types/components/datetime/datetime.d.ts +26 -1
  929. package/dist/types/components/datetime/utils/data.d.ts +5 -5
  930. package/dist/types/components/datetime-button/datetime-button.d.ts +2 -1
  931. package/dist/types/components/divider/divider.d.ts +20 -0
  932. package/dist/types/components/fab/fab.d.ts +4 -0
  933. package/dist/types/components/fab-button/fab-button.d.ts +11 -3
  934. package/dist/types/components/fab-list/fab-list.d.ts +4 -0
  935. package/dist/types/components/footer/footer-interface.d.ts +1 -0
  936. package/dist/types/components/footer/footer.d.ts +20 -3
  937. package/dist/types/components/gallery/gallery-constants.d.ts +9 -0
  938. package/dist/types/components/gallery/gallery-interface.d.ts +10 -0
  939. package/dist/types/components/gallery/gallery.d.ts +218 -0
  940. package/dist/types/components/gallery/test/utils.d.ts +3 -0
  941. package/dist/types/components/gallery-item/gallery-item.d.ts +33 -0
  942. package/dist/types/components/grid/grid.d.ts +4 -0
  943. package/dist/types/components/header/header-interface.d.ts +1 -0
  944. package/dist/types/components/header/header.d.ts +26 -3
  945. package/dist/types/components/header/header.utils.d.ts +4 -5
  946. package/dist/types/components/img/img.d.ts +2 -1
  947. package/dist/types/components/infinite-scroll/infinite-scroll.d.ts +21 -0
  948. package/dist/types/components/infinite-scroll-content/infinite-scroll-content.d.ts +4 -0
  949. package/dist/types/components/input/input.d.ts +40 -17
  950. package/dist/types/components/input-otp/input-otp.d.ts +37 -0
  951. package/dist/types/components/input-password-toggle/input-password-toggle.d.ts +14 -0
  952. package/dist/types/components/item/item.d.ts +17 -4
  953. package/dist/types/components/item-divider/item-divider.d.ts +2 -1
  954. package/dist/types/components/item-group/item-group.d.ts +4 -0
  955. package/dist/types/components/item-option/item-option.d.ts +18 -1
  956. package/dist/types/components/item-options/item-options.d.ts +4 -0
  957. package/dist/types/components/item-sliding/item-sliding.d.ts +47 -1
  958. package/dist/types/components/item-sliding/test/test.utils.d.ts +13 -0
  959. package/dist/types/components/label/label.d.ts +2 -1
  960. package/dist/types/components/list/list.d.ts +15 -1
  961. package/dist/types/components/list-header/list-header.d.ts +2 -1
  962. package/dist/types/components/loading/loading-interface.d.ts +2 -7
  963. package/dist/types/components/loading/loading.d.ts +3 -2
  964. package/dist/types/components/menu/menu.d.ts +3 -0
  965. package/dist/types/components/menu-button/menu-button.d.ts +8 -1
  966. package/dist/types/components/menu-toggle/menu-toggle.d.ts +3 -0
  967. package/dist/types/components/modal/animations/ionic.enter.d.ts +6 -0
  968. package/dist/types/components/modal/animations/ionic.leave.d.ts +6 -0
  969. package/dist/types/components/modal/gestures/sheet.d.ts +1 -1
  970. package/dist/types/components/modal/modal-interface.d.ts +4 -16
  971. package/dist/types/components/modal/modal.d.ts +15 -12
  972. package/dist/types/components/nav/nav-interface.d.ts +10 -1
  973. package/dist/types/components/nav/nav.d.ts +27 -3
  974. package/dist/types/components/nav-link/nav-link.d.ts +4 -0
  975. package/dist/types/components/note/note.d.ts +2 -1
  976. package/dist/types/components/picker/picker.d.ts +2 -1
  977. package/dist/types/components/picker-column/picker-column.d.ts +2 -1
  978. package/dist/types/components/picker-column-option/picker-column-option.d.ts +4 -0
  979. package/dist/types/components/picker-legacy/animations/ios.enter.d.ts +5 -0
  980. package/dist/types/components/picker-legacy/animations/ios.leave.d.ts +5 -0
  981. package/dist/types/components/picker-legacy/picker-interface.d.ts +52 -0
  982. package/dist/types/components/picker-legacy/picker.d.ts +159 -0
  983. package/dist/types/components/picker-legacy-column/picker-column.d.ts +46 -0
  984. package/dist/types/components/picker-legacy-column/test/test.utils.d.ts +9 -0
  985. package/dist/types/components/popover/popover-interface.d.ts +3 -6
  986. package/dist/types/components/popover/popover.d.ts +6 -5
  987. package/dist/types/components/progress-bar/progress-bar.d.ts +10 -1
  988. package/dist/types/components/radio/radio.d.ts +2 -1
  989. package/dist/types/components/radio-group/radio-group.d.ts +12 -0
  990. package/dist/types/components/range/range.d.ts +2 -1
  991. package/dist/types/components/refresher/refresher.d.ts +2 -1
  992. package/dist/types/components/refresher-content/refresher-content.d.ts +10 -0
  993. package/dist/types/components/reorder/reorder.d.ts +9 -0
  994. package/dist/types/components/reorder-group/reorder-group.d.ts +4 -0
  995. package/dist/types/components/ripple-effect/ripple-effect.d.ts +4 -0
  996. package/dist/types/components/route/route.d.ts +5 -1
  997. package/dist/types/components/router/router.d.ts +4 -0
  998. package/dist/types/components/router-link/router-link.d.ts +4 -0
  999. package/dist/types/components/router-outlet/router-outlet.d.ts +4 -8
  1000. package/dist/types/components/row/row.d.ts +4 -0
  1001. package/dist/types/components/searchbar/searchbar.d.ts +57 -11
  1002. package/dist/types/components/segment/segment.d.ts +2 -1
  1003. package/dist/types/components/segment-button/segment-button.d.ts +2 -1
  1004. package/dist/types/components/select/select.d.ts +55 -26
  1005. package/dist/types/components/select-modal/select-modal.d.ts +13 -0
  1006. package/dist/types/components/select-option/select-option.d.ts +7 -4
  1007. package/dist/types/components/select-popover/select-popover.d.ts +3 -0
  1008. package/dist/types/components/skeleton-text/skeleton-text.d.ts +4 -0
  1009. package/dist/types/components/spinner/spinner.d.ts +15 -0
  1010. package/dist/types/components/split-pane/split-pane.d.ts +4 -0
  1011. package/dist/types/components/tab/tab.d.ts +4 -0
  1012. package/dist/types/components/tab-bar/tab-bar-interface.d.ts +1 -0
  1013. package/dist/types/components/tab-bar/tab-bar.d.ts +41 -3
  1014. package/dist/types/components/tab-button/tab-button.d.ts +12 -1
  1015. package/dist/types/components/tabs/tabs.d.ts +3 -0
  1016. package/dist/types/components/text/text.d.ts +2 -1
  1017. package/dist/types/components/textarea/textarea.d.ts +58 -16
  1018. package/dist/types/components/thumbnail/thumbnail.d.ts +4 -0
  1019. package/dist/types/components/title/title.d.ts +4 -0
  1020. package/dist/types/components/toast/animations/utils.d.ts +2 -2
  1021. package/dist/types/components/toast/toast-interface.d.ts +3 -7
  1022. package/dist/types/components/toast/toast.d.ts +19 -2
  1023. package/dist/types/components/toggle/toggle.d.ts +18 -1
  1024. package/dist/types/components/toolbar/toolbar.d.ts +43 -3
  1025. package/dist/types/components.d.ts +2171 -263
  1026. package/dist/types/global/ionic-global.d.ts +28 -2
  1027. package/dist/types/index.d.ts +1 -1
  1028. package/dist/types/interface.d.ts +4 -0
  1029. package/dist/types/utils/config.d.ts +133 -3
  1030. package/dist/types/utils/css-value-validation.d.ts +21 -0
  1031. package/dist/types/utils/focus-trap.d.ts +1 -1
  1032. package/dist/types/utils/focus-visible.d.ts +13 -0
  1033. package/dist/types/utils/forms/clear-button-press-controller.d.ts +20 -0
  1034. package/dist/types/utils/forms/index.d.ts +1 -1
  1035. package/dist/types/utils/forms/validity.d.ts +7 -0
  1036. package/dist/types/utils/helpers.d.ts +22 -0
  1037. package/dist/types/utils/logging/index.d.ts +1 -2
  1038. package/dist/types/utils/overlay-control-label.d.ts +11 -9
  1039. package/dist/types/utils/overlays-interface.d.ts +31 -1
  1040. package/dist/types/utils/overlays.d.ts +10 -12
  1041. package/dist/types/utils/scroll-hide-controller.d.ts +56 -0
  1042. package/dist/types/utils/test/playwright/drag-element.d.ts +16 -3
  1043. package/dist/types/utils/test/playwright/generator.d.ts +31 -2
  1044. package/dist/types/utils/test/playwright/playwright-page.d.ts +1 -1
  1045. package/dist/types/utils/test/playwright/testExpect.d.ts +1 -1
  1046. package/dist/types/utils/theme.d.ts +9 -0
  1047. package/hydrate/index.js +12008 -10485
  1048. package/hydrate/index.mjs +12008 -10485
  1049. package/package.json +16 -56
  1050. package/components/p--m5cCjbK.js +0 -4
  1051. package/components/p-1jI5oW-W.js +0 -4
  1052. package/components/p-8FN7p701.js +0 -4
  1053. package/components/p-B4uHHhPK.js +0 -4
  1054. package/components/p-BMPN55of.js +0 -4
  1055. package/components/p-BNJOu1Q2.js +0 -4
  1056. package/components/p-BOvLNVKq.js +0 -4
  1057. package/components/p-BSQPZ79H.js +0 -4
  1058. package/components/p-BeamQXHF.js +0 -4
  1059. package/components/p-BhamHSw3.js +0 -4
  1060. package/components/p-Bjig0DJK.js +0 -4
  1061. package/components/p-BjluhQMI.js +0 -4
  1062. package/components/p-BlsIikdZ.js +0 -4
  1063. package/components/p-BmVRXR1y.js +0 -4
  1064. package/components/p-BqPNzJf6.js +0 -4
  1065. package/components/p-BrD9Xv62.js +0 -4
  1066. package/components/p-BvJqoZ5R.js +0 -4
  1067. package/components/p-Bz6z3Asd.js +0 -4
  1068. package/components/p-C5KYjZWD.js +0 -4
  1069. package/components/p-C6HnVvHO.js +0 -4
  1070. package/components/p-C7jvh5Wy.js +0 -4
  1071. package/components/p-C9BGR5fy.js +0 -4
  1072. package/components/p-CB-y1CdP.js +0 -4
  1073. package/components/p-CEW4RXZO.js +0 -4
  1074. package/components/p-CHH3loEE.js +0 -4
  1075. package/components/p-CIGNaXM1.js +0 -4
  1076. package/components/p-CJKUWjmg.js +0 -4
  1077. package/components/p-C_phlPMC.js +0 -4
  1078. package/components/p-CbhUdtjf.js +0 -4
  1079. package/components/p-CejmQs3h.js +0 -4
  1080. package/components/p-CtZqa4HM.js +0 -4
  1081. package/components/p-D7-vHX0A.js +0 -4
  1082. package/components/p-D9qIVSWm.js +0 -4
  1083. package/components/p-DD5fQ4EQ.js +0 -4
  1084. package/components/p-DE-3iMNW.js +0 -4
  1085. package/components/p-DFvZn99E.js +0 -4
  1086. package/components/p-DHFt2rdc.js +0 -4
  1087. package/components/p-DJztqcrH.js +0 -4
  1088. package/components/p-DM-PrAoh.js +0 -4
  1089. package/components/p-DSzSbVP2.js +0 -4
  1090. package/components/p-DV85C0e0.js +0 -4
  1091. package/components/p-DWCzVL3Y.js +0 -4
  1092. package/components/p-D_RCyzwu.js +0 -4
  1093. package/components/p-D_tD8r3L.js +0 -4
  1094. package/components/p-DaA_8eqt.js +0 -4
  1095. package/components/p-DjCtLZbF.js +0 -4
  1096. package/components/p-Dmd2xqCe.js +0 -4
  1097. package/components/p-Dojwmvde.js +0 -4
  1098. package/components/p-G0TxqHfe.js +0 -4
  1099. package/components/p-G6JR-cr_.js +0 -4
  1100. package/components/p-GG5GhznE.js +0 -4
  1101. package/components/p-LpMHEu3v.js +0 -4
  1102. package/components/p-TXPDHL13.js +0 -4
  1103. package/components/p-UIBJkZf8.js +0 -4
  1104. package/components/p-ZjP4CjeZ.js +0 -4
  1105. package/components/p-_IKFD3ID.js +0 -4
  1106. package/components/p-byZM6qHV.js +0 -4
  1107. package/components/p-dKq2jIum.js +0 -4
  1108. package/components/p-fruGqVHh.js +0 -4
  1109. package/components/p-iYhH60Tc.js +0 -4
  1110. package/components/p-ia3IDdJS.js +0 -4
  1111. package/dist/cjs/hardware-back-button-fqpYh-kd.js +0 -121
  1112. package/dist/cjs/index-DkNv4J_i.js +0 -10
  1113. package/dist/cjs/input.utils-BZdMWVrt.js +0 -35
  1114. package/dist/cjs/ion-datetime.cjs.entry.js +0 -2770
  1115. package/dist/cjs/ionic-global-k6hOWWpn.js +0 -156
  1116. package/dist/cjs/keyboard-controller-PtZoN2GS.js +0 -167
  1117. package/dist/cjs/slot-mutation-controller-DPHmqXdV.js +0 -397
  1118. package/dist/cjs/validity-BpS37YFM.js +0 -19
  1119. package/dist/collection/utils/forms/start-container-controller.js +0 -132
  1120. package/dist/esm/hardware-back-button-gLJHMX_F.js +0 -115
  1121. package/dist/esm/index-ZjP4CjeZ.js +0 -7
  1122. package/dist/esm/input.utils-B1ValN_N.js +0 -33
  1123. package/dist/esm/ion-datetime.entry.js +0 -2768
  1124. package/dist/esm/ionic-global-BVB7BrLT.js +0 -151
  1125. package/dist/esm/keyboard-controller-DEwoa1ev.js +0 -165
  1126. package/dist/esm/slot-mutation-controller-DiE_C9un.js +0 -393
  1127. package/dist/esm/theme-byZM6qHV.js +0 -48
  1128. package/dist/esm/validity-DJztqcrH.js +0 -17
  1129. package/dist/ionic/p-06ec7136.entry.js +0 -4
  1130. package/dist/ionic/p-09fe4fa3.entry.js +0 -4
  1131. package/dist/ionic/p-10d45a07.entry.js +0 -4
  1132. package/dist/ionic/p-208c8a07.entry.js +0 -4
  1133. package/dist/ionic/p-212474fa.entry.js +0 -4
  1134. package/dist/ionic/p-2eef1396.entry.js +0 -4
  1135. package/dist/ionic/p-347e005d.entry.js +0 -4
  1136. package/dist/ionic/p-3a0b3f1d.entry.js +0 -4
  1137. package/dist/ionic/p-3b071259.entry.js +0 -4
  1138. package/dist/ionic/p-40424a88.entry.js +0 -4
  1139. package/dist/ionic/p-4204184c.entry.js +0 -4
  1140. package/dist/ionic/p-47464391.entry.js +0 -4
  1141. package/dist/ionic/p-4eOQC00Z.js +0 -4
  1142. package/dist/ionic/p-4f9c9126.entry.js +0 -4
  1143. package/dist/ionic/p-5JsKPLJD.js +0 -4
  1144. package/dist/ionic/p-5bc485c6.entry.js +0 -4
  1145. package/dist/ionic/p-603a61e6.entry.js +0 -4
  1146. package/dist/ionic/p-60576951.entry.js +0 -4
  1147. package/dist/ionic/p-67a81d33.entry.js +0 -4
  1148. package/dist/ionic/p-6affb775.entry.js +0 -4
  1149. package/dist/ionic/p-6f120c25.entry.js +0 -4
  1150. package/dist/ionic/p-71c82b60.entry.js +0 -4
  1151. package/dist/ionic/p-79325ffe.entry.js +0 -4
  1152. package/dist/ionic/p-7CBuOvEo.js +0 -4
  1153. package/dist/ionic/p-7e4d51fa.entry.js +0 -4
  1154. package/dist/ionic/p-7f5d4664.entry.js +0 -4
  1155. package/dist/ionic/p-80ee82fc.entry.js +0 -4
  1156. package/dist/ionic/p-84af7dbc.entry.js +0 -4
  1157. package/dist/ionic/p-89ca830a.entry.js +0 -4
  1158. package/dist/ionic/p-93b8ec8f.entry.js +0 -4
  1159. package/dist/ionic/p-946f65c2.entry.js +0 -4
  1160. package/dist/ionic/p-9c4b39fb.entry.js +0 -4
  1161. package/dist/ionic/p-B1NEZUzQ.js +0 -4
  1162. package/dist/ionic/p-B1ck5iy-.js +0 -4
  1163. package/dist/ionic/p-B4FrqdW0.js +0 -4
  1164. package/dist/ionic/p-BB0LlG4y.js +0 -4
  1165. package/dist/ionic/p-BMPN55of.js +0 -4
  1166. package/dist/ionic/p-BSQPZ79H.js +0 -4
  1167. package/dist/ionic/p-BYEAtHr-.js +0 -4
  1168. package/dist/ionic/p-BhamHSw3.js +0 -4
  1169. package/dist/ionic/p-BmVRXR1y.js +0 -4
  1170. package/dist/ionic/p-BvabGprD.js +0 -4
  1171. package/dist/ionic/p-C-94tAim.js +0 -4
  1172. package/dist/ionic/p-C-eHZMYE.js +0 -4
  1173. package/dist/ionic/p-CBR_W98Z.js +0 -4
  1174. package/dist/ionic/p-CBWAXjA5.js +0 -4
  1175. package/dist/ionic/p-CIGNaXM1.js +0 -4
  1176. package/dist/ionic/p-CMRtMbJc.js +0 -4
  1177. package/dist/ionic/p-CPcPmkGv.js +0 -4
  1178. package/dist/ionic/p-CaRuIadB.js +0 -4
  1179. package/dist/ionic/p-Cdjxf_yg.js +0 -4
  1180. package/dist/ionic/p-ChhhtsGZ.js +0 -5
  1181. package/dist/ionic/p-CzS1qWve.js +0 -4
  1182. package/dist/ionic/p-D5t_-oMk.js +0 -4
  1183. package/dist/ionic/p-D94_RztK.js +0 -4
  1184. package/dist/ionic/p-DJztqcrH.js +0 -4
  1185. package/dist/ionic/p-DWCzVL3Y.js +0 -4
  1186. package/dist/ionic/p-DjjfauRM.js +0 -4
  1187. package/dist/ionic/p-DkUB-ROc.js +0 -4
  1188. package/dist/ionic/p-Dn0mqQ_R.js +0 -4
  1189. package/dist/ionic/p-Dojwmvde.js +0 -4
  1190. package/dist/ionic/p-DplOqGUv.js +0 -4
  1191. package/dist/ionic/p-Dst_XmZh.js +0 -4
  1192. package/dist/ionic/p-T71k3C35.js +0 -4
  1193. package/dist/ionic/p-TXPDHL13.js +0 -4
  1194. package/dist/ionic/p-UIBJkZf8.js +0 -4
  1195. package/dist/ionic/p-ZjP4CjeZ.js +0 -4
  1196. package/dist/ionic/p-a438b193.entry.js +0 -4
  1197. package/dist/ionic/p-babaaaa7.entry.js +0 -4
  1198. package/dist/ionic/p-be08d500.entry.js +0 -4
  1199. package/dist/ionic/p-be9a4f51.entry.js +0 -4
  1200. package/dist/ionic/p-byZM6qHV.js +0 -4
  1201. package/dist/ionic/p-c00d3092.entry.js +0 -4
  1202. package/dist/ionic/p-c36dc8f5.entry.js +0 -4
  1203. package/dist/ionic/p-c72a7e17.entry.js +0 -4
  1204. package/dist/ionic/p-c8edd88c.entry.js +0 -4
  1205. package/dist/ionic/p-ce0e380b.entry.js +0 -4
  1206. package/dist/ionic/p-ce32912b.entry.js +0 -4
  1207. package/dist/ionic/p-d07cf130.entry.js +0 -4
  1208. package/dist/ionic/p-d27edeb3.entry.js +0 -4
  1209. package/dist/ionic/p-d5d2c506.entry.js +0 -4
  1210. package/dist/ionic/p-d5e31ca9.entry.js +0 -4
  1211. package/dist/ionic/p-de91444f.entry.js +0 -4
  1212. package/dist/ionic/p-ded69ceb.entry.js +0 -4
  1213. package/dist/ionic/p-df72866d.entry.js +0 -4
  1214. package/dist/ionic/p-e47e3151.entry.js +0 -4
  1215. package/dist/ionic/p-e621e5e8.entry.js +0 -4
  1216. package/dist/ionic/p-eea9cf93.entry.js +0 -4
  1217. package/dist/ionic/p-f402f5a4.entry.js +0 -4
  1218. package/dist/ionic/p-fe1bfbcf.entry.js +0 -4
  1219. package/dist/ionic/p-ffb90460.entry.js +0 -4
  1220. package/dist/types/utils/forms/start-container-controller.d.ts +0 -34
  1221. /package/dist/collection/components/{input-password-toggle/input-password-toggle.css → refresher-content/refresher-content.css} +0 -0
@@ -3,261 +3,442 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-uvry__L4.js');
7
- var helpers = require('./helpers-YPQybDph.js');
8
- require('./dir-zwDPRE5K.js');
6
+ var index = require('./index-C1knGA9x.js');
7
+ var helpers = require('./helpers-Dhimwhpn.js');
8
+ require('./focus-visible-BIj-I3-C.js');
9
+ require('./dir-DD0jPVH3.js');
9
10
 
10
- const pickerIosCss = () => `:host{display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:200px;direction:ltr;z-index:0}:host .picker-before,:host .picker-after{position:absolute;width:100%;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:1;pointer-events:none}:host .picker-before{top:0;height:83px}:host .picker-before{inset-inline-start:0}:host .picker-after{top:116px;height:84px}:host .picker-after{inset-inline-start:0}:host .picker-highlight{border-radius:var(--highlight-border-radius, 8px);left:0;right:0;top:50%;bottom:0;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0;position:absolute;width:calc(100% - 16px);height:34px;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:var(--highlight-background);z-index:-1}:host input{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;margin:0;padding:0;border:0;outline:0;clip:rect(0 0 0 0);opacity:0;overflow:hidden;-webkit-appearance:none;-moz-appearance:none}:host ::slotted(ion-picker-column:first-of-type){text-align:start}:host ::slotted(ion-picker-column:last-of-type){text-align:end}:host ::slotted(ion-picker-column:only-child){text-align:center}:host .picker-before{background:-webkit-gradient(linear, left top, left bottom, color-stop(20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), to(rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8)));background:linear-gradient(to bottom, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8) 100%)}:host .picker-after{background:-webkit-gradient(linear, left bottom, left top, color-stop(20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), to(rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8)));background:linear-gradient(to top, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8) 100%)}:host .picker-highlight{background:var(--highlight-background, var(--ion-color-step-150, var(--ion-background-color-step-150, #eeeeef)))}`;
11
+ const ionicPickerMdCss = () => `:host{display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:200px;direction:ltr;z-index:0}:host .picker-before,:host .picker-after{position:absolute;width:100%;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:1;pointer-events:none}:host .picker-before{top:0;height:83px}:host .picker-before{inset-inline-start:0}:host .picker-after{top:116px;height:84px}:host .picker-after{inset-inline-start:0}:host .picker-highlight{border-radius:var(--highlight-border-radius, 8px);right:0;left:0;top:50%;bottom:0;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0;position:absolute;width:calc(100% - 16px);height:34px;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:var(--highlight-background);z-index:-1}:host input{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;margin:0;padding:0;border:0;outline:0;opacity:0;overflow:hidden;clip:rect(0 0 0 0);-webkit-appearance:none;-moz-appearance:none}:host ::slotted(ion-picker-column:first-of-type){text-align:start}:host ::slotted(ion-picker-column:last-of-type){text-align:end}:host ::slotted(ion-picker-column:only-child){text-align:center}:host .picker-before{background:-webkit-gradient(linear, left top, left bottom, color-stop(20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), color-stop(90%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0)));background:linear-gradient(to bottom, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0) 90%)}:host .picker-after{background:-webkit-gradient(linear, left bottom, left top, color-stop(30%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), color-stop(90%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0)));background:linear-gradient(to top, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 30%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0) 90%)}`;
11
12
 
12
- const pickerMdCss = () => `:host{display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:200px;direction:ltr;z-index:0}:host .picker-before,:host .picker-after{position:absolute;width:100%;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:1;pointer-events:none}:host .picker-before{top:0;height:83px}:host .picker-before{inset-inline-start:0}:host .picker-after{top:116px;height:84px}:host .picker-after{inset-inline-start:0}:host .picker-highlight{border-radius:var(--highlight-border-radius, 8px);left:0;right:0;top:50%;bottom:0;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0;position:absolute;width:calc(100% - 16px);height:34px;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:var(--highlight-background);z-index:-1}:host input{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;margin:0;padding:0;border:0;outline:0;clip:rect(0 0 0 0);opacity:0;overflow:hidden;-webkit-appearance:none;-moz-appearance:none}:host ::slotted(ion-picker-column:first-of-type){text-align:start}:host ::slotted(ion-picker-column:last-of-type){text-align:end}:host ::slotted(ion-picker-column:only-child){text-align:center}:host .picker-before{background:-webkit-gradient(linear, left top, left bottom, color-stop(20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), color-stop(90%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0)));background:linear-gradient(to bottom, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0) 90%)}:host .picker-after{background:-webkit-gradient(linear, left bottom, left top, color-stop(30%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), color-stop(90%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0)));background:linear-gradient(to top, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 30%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0) 90%)}`;
13
+ const pickerIosCss = () => `:host{display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:200px;direction:ltr;z-index:0}:host .picker-before,:host .picker-after{position:absolute;width:100%;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:1;pointer-events:none}:host .picker-before{top:0;height:83px}:host .picker-before{inset-inline-start:0}:host .picker-after{top:116px;height:84px}:host .picker-after{inset-inline-start:0}:host .picker-highlight{border-radius:var(--highlight-border-radius, 8px);right:0;left:0;top:50%;bottom:0;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0;position:absolute;width:calc(100% - 16px);height:34px;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:var(--highlight-background);z-index:-1}:host input{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;margin:0;padding:0;border:0;outline:0;opacity:0;overflow:hidden;clip:rect(0 0 0 0);-webkit-appearance:none;-moz-appearance:none}:host ::slotted(ion-picker-column:first-of-type){text-align:start}:host ::slotted(ion-picker-column:last-of-type){text-align:end}:host ::slotted(ion-picker-column:only-child){text-align:center}:host .picker-before{background:-webkit-gradient(linear, left top, left bottom, color-stop(20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), to(rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8)));background:linear-gradient(to bottom, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8) 100%)}:host .picker-after{background:-webkit-gradient(linear, left bottom, left top, color-stop(20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), to(rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8)));background:linear-gradient(to top, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8) 100%)}:host .picker-highlight{background:var(--highlight-background, var(--ion-color-step-150, var(--ion-background-color-step-150, #eeeeef)))}`;
14
+
15
+ const pickerMdCss = () => `:host{display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:200px;direction:ltr;z-index:0}:host .picker-before,:host .picker-after{position:absolute;width:100%;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:1;pointer-events:none}:host .picker-before{top:0;height:83px}:host .picker-before{inset-inline-start:0}:host .picker-after{top:116px;height:84px}:host .picker-after{inset-inline-start:0}:host .picker-highlight{border-radius:var(--highlight-border-radius, 8px);right:0;left:0;top:50%;bottom:0;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0;position:absolute;width:calc(100% - 16px);height:34px;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:var(--highlight-background);z-index:-1}:host input{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;margin:0;padding:0;border:0;outline:0;opacity:0;overflow:hidden;clip:rect(0 0 0 0);-webkit-appearance:none;-moz-appearance:none}:host ::slotted(ion-picker-column:first-of-type){text-align:start}:host ::slotted(ion-picker-column:last-of-type){text-align:end}:host ::slotted(ion-picker-column:only-child){text-align:center}:host .picker-before{background:-webkit-gradient(linear, left top, left bottom, color-stop(20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), color-stop(90%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0)));background:linear-gradient(to bottom, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0) 90%)}:host .picker-after{background:-webkit-gradient(linear, left bottom, left top, color-stop(30%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), color-stop(90%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0)));background:linear-gradient(to top, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 30%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0) 90%)}`;
13
16
 
14
17
  const Picker = class {
15
18
  constructor(hostRef) {
16
19
  index.registerInstance(this, hostRef);
17
20
  this.ionInputModeChange = index.createEvent(this, "ionInputModeChange", 7);
18
- }
19
- inputEl;
20
- useInputMode = false;
21
- inputModeColumn;
22
- highlightEl;
23
- actionOnClick;
24
- destroyKeypressListener;
25
- singleColumnSearchTimeout;
26
- get el() { return index.getElement(this); }
27
- /**
28
- * @internal
29
- */
30
- ionInputModeChange;
31
- /**
32
- * When the picker is interacted with
33
- * we need to prevent touchstart so other
34
- * gestures do not fire. For example,
35
- * scrolling on the wheel picker
36
- * in ion-datetime should not cause
37
- * a card modal to swipe to close.
38
- */
39
- preventTouchStartPropagation(ev) {
40
- ev.stopPropagation();
41
- }
42
- componentWillLoad() {
43
- helpers.getElementRoot(this.el).addEventListener('focusin', this.onFocusIn);
44
- helpers.getElementRoot(this.el).addEventListener('focusout', this.onFocusOut);
45
- }
46
- isInHighlightBounds = (ev) => {
47
- const { highlightEl } = this;
48
- if (!highlightEl) {
49
- return false;
50
- }
51
- const bbox = highlightEl.getBoundingClientRect();
52
- /**
53
- * Check to see if the user clicked
54
- * outside the bounds of the highlight.
55
- */
56
- const outsideX = ev.clientX < bbox.left || ev.clientX > bbox.right;
57
- const outsideY = ev.clientY < bbox.top || ev.clientY > bbox.bottom;
58
- if (outsideX || outsideY) {
59
- return false;
60
- }
61
- return true;
62
- };
63
- /**
64
- * If we are no longer focused
65
- * on a picker column, then we should
66
- * exit input mode. An exception is made
67
- * for the input in the picker since having
68
- * that focused means we are still in input mode.
69
- */
70
- onFocusOut = (ev) => {
71
- // TODO(FW-2832): type
72
- const { relatedTarget } = ev;
73
- if (!relatedTarget || (relatedTarget.tagName !== 'ION-PICKER-COLUMN' && relatedTarget !== this.inputEl)) {
74
- this.exitInputMode();
75
- }
76
- };
77
- /**
78
- * When picker columns receive focus
79
- * the parent picker needs to determine
80
- * whether to enter/exit input mode.
81
- */
82
- onFocusIn = (ev) => {
83
- // TODO(FW-2832): type
84
- const { target } = ev;
21
+ this.useInputMode = false;
22
+ this.isInHighlightBounds = (ev) => {
23
+ const { highlightEl } = this;
24
+ if (!highlightEl) {
25
+ return false;
26
+ }
27
+ const bbox = highlightEl.getBoundingClientRect();
28
+ /**
29
+ * Check to see if the user clicked
30
+ * outside the bounds of the highlight.
31
+ */
32
+ const outsideX = ev.clientX < bbox.left || ev.clientX > bbox.right;
33
+ const outsideY = ev.clientY < bbox.top || ev.clientY > bbox.bottom;
34
+ if (outsideX || outsideY) {
35
+ return false;
36
+ }
37
+ return true;
38
+ };
85
39
  /**
86
- * Due to browser differences in how/when focus
87
- * is dispatched on certain elements, we need to
88
- * make sure that this function only ever runs when
89
- * focusing a picker column.
40
+ * If we are no longer focused
41
+ * on a picker column, then we should
42
+ * exit input mode. An exception is made
43
+ * for the input in the picker since having
44
+ * that focused means we are still in input mode.
90
45
  */
91
- if (target.tagName !== 'ION-PICKER-COLUMN') {
92
- return;
93
- }
46
+ this.onFocusOut = (ev) => {
47
+ // TODO(FW-2832): type
48
+ const { relatedTarget } = ev;
49
+ if (!relatedTarget || (relatedTarget.tagName !== 'ION-PICKER-COLUMN' && relatedTarget !== this.inputEl)) {
50
+ this.exitInputMode();
51
+ }
52
+ };
94
53
  /**
95
- * If we have actionOnClick
96
- * then this means the user focused
97
- * a picker column via mouse or
98
- * touch (i.e. a PointerEvent). As a result,
99
- * we should not enter/exit input mode
100
- * until the click event has fired, which happens
101
- * after the `focusin` event.
102
- *
103
- * Otherwise, the user likely focused
104
- * the column using their keyboard and
105
- * we should enter/exit input mode automatically.
54
+ * When picker columns receive focus
55
+ * the parent picker needs to determine
56
+ * whether to enter/exit input mode.
106
57
  */
107
- if (!this.actionOnClick) {
108
- const columnEl = target;
109
- const allowInput = columnEl.numericInput;
110
- if (allowInput) {
111
- this.enterInputMode(columnEl, false);
112
- }
113
- else {
114
- this.exitInputMode();
58
+ this.onFocusIn = (ev) => {
59
+ // TODO(FW-2832): type
60
+ const { target } = ev;
61
+ /**
62
+ * Due to browser differences in how/when focus
63
+ * is dispatched on certain elements, we need to
64
+ * make sure that this function only ever runs when
65
+ * focusing a picker column.
66
+ */
67
+ if (target.tagName !== 'ION-PICKER-COLUMN') {
68
+ return;
115
69
  }
116
- }
117
- };
118
- /**
119
- * On click we need to run an actionOnClick
120
- * function that has been set in onPointerDown
121
- * so that we enter/exit input mode correctly.
122
- */
123
- onClick = () => {
124
- const { actionOnClick } = this;
125
- if (actionOnClick) {
126
- actionOnClick();
127
- this.actionOnClick = undefined;
128
- }
129
- };
130
- /**
131
- * Clicking a column also focuses the column on
132
- * certain browsers, so we use onPointerDown
133
- * to tell the onFocusIn function that users
134
- * are trying to click the column rather than
135
- * focus the column using the keyboard. When the
136
- * user completes the click, the onClick function
137
- * runs and runs the actionOnClick callback.
138
- */
139
- onPointerDown = (ev) => {
140
- const { useInputMode, inputModeColumn, el } = this;
141
- if (this.isInHighlightBounds(ev)) {
142
70
  /**
143
- * If we were already in
144
- * input mode, then we should determine
145
- * if we tapped a particular column and
146
- * should switch to input mode for
147
- * that specific column.
71
+ * If we have actionOnClick
72
+ * then this means the user focused
73
+ * a picker column via mouse or
74
+ * touch (i.e. a PointerEvent). As a result,
75
+ * we should not enter/exit input mode
76
+ * until the click event has fired, which happens
77
+ * after the `focusin` event.
78
+ *
79
+ * Otherwise, the user likely focused
80
+ * the column using their keyboard and
81
+ * we should enter/exit input mode automatically.
148
82
  */
149
- if (useInputMode) {
83
+ if (!this.actionOnClick) {
84
+ const columnEl = target;
85
+ const allowInput = columnEl.numericInput;
86
+ if (allowInput) {
87
+ this.enterInputMode(columnEl, false);
88
+ }
89
+ else {
90
+ this.exitInputMode();
91
+ }
92
+ }
93
+ };
94
+ /**
95
+ * On click we need to run an actionOnClick
96
+ * function that has been set in onPointerDown
97
+ * so that we enter/exit input mode correctly.
98
+ */
99
+ this.onClick = () => {
100
+ const { actionOnClick } = this;
101
+ if (actionOnClick) {
102
+ actionOnClick();
103
+ this.actionOnClick = undefined;
104
+ }
105
+ };
106
+ /**
107
+ * Clicking a column also focuses the column on
108
+ * certain browsers, so we use onPointerDown
109
+ * to tell the onFocusIn function that users
110
+ * are trying to click the column rather than
111
+ * focus the column using the keyboard. When the
112
+ * user completes the click, the onClick function
113
+ * runs and runs the actionOnClick callback.
114
+ */
115
+ this.onPointerDown = (ev) => {
116
+ const { useInputMode, inputModeColumn, el } = this;
117
+ if (this.isInHighlightBounds(ev)) {
150
118
  /**
151
- * If we tapped a picker column
152
- * then we should either switch to input
153
- * mode for that column or all columns.
154
- * Otherwise we should exit input mode
155
- * since we just tapped the highlight and
156
- * not a column.
119
+ * If we were already in
120
+ * input mode, then we should determine
121
+ * if we tapped a particular column and
122
+ * should switch to input mode for
123
+ * that specific column.
157
124
  */
158
- if (ev.target.tagName === 'ION-PICKER-COLUMN') {
125
+ if (useInputMode) {
159
126
  /**
160
- * If user taps 2 different columns
161
- * then we should just switch to input mode
162
- * for the new column rather than switching to
163
- * input mode for all columns.
127
+ * If we tapped a picker column
128
+ * then we should either switch to input
129
+ * mode for that column or all columns.
130
+ * Otherwise we should exit input mode
131
+ * since we just tapped the highlight and
132
+ * not a column.
164
133
  */
165
- if (inputModeColumn && inputModeColumn === ev.target) {
166
- this.actionOnClick = () => {
167
- this.enterInputMode();
168
- };
134
+ if (ev.target.tagName === 'ION-PICKER-COLUMN') {
135
+ /**
136
+ * If user taps 2 different columns
137
+ * then we should just switch to input mode
138
+ * for the new column rather than switching to
139
+ * input mode for all columns.
140
+ */
141
+ if (inputModeColumn && inputModeColumn === ev.target) {
142
+ this.actionOnClick = () => {
143
+ this.enterInputMode();
144
+ };
145
+ }
146
+ else {
147
+ this.actionOnClick = () => {
148
+ this.enterInputMode(ev.target);
149
+ };
150
+ }
169
151
  }
170
152
  else {
171
153
  this.actionOnClick = () => {
172
- this.enterInputMode(ev.target);
154
+ this.exitInputMode();
173
155
  };
174
156
  }
157
+ /**
158
+ * If we were not already in
159
+ * input mode, then we should
160
+ * enter input mode for all columns.
161
+ */
175
162
  }
176
163
  else {
164
+ /**
165
+ * If there is only 1 numeric input column
166
+ * then we should skip multi column input.
167
+ */
168
+ const columns = el.querySelectorAll('ion-picker-column.picker-column-numeric-input');
169
+ const columnEl = columns.length === 1 ? ev.target : undefined;
177
170
  this.actionOnClick = () => {
178
- this.exitInputMode();
171
+ this.enterInputMode(columnEl);
179
172
  };
180
173
  }
181
- /**
182
- * If we were not already in
183
- * input mode, then we should
184
- * enter input mode for all columns.
185
- */
174
+ return;
175
+ }
176
+ this.actionOnClick = () => {
177
+ this.exitInputMode();
178
+ };
179
+ };
180
+ /**
181
+ * Enters input mode to allow
182
+ * for text entry of numeric values.
183
+ * If on mobile, we focus a hidden input
184
+ * field so that the on screen keyboard
185
+ * is brought up. When tabbing using a
186
+ * keyboard, picker columns receive an outline
187
+ * to indicate they are focused. As a result,
188
+ * we should not focus the hidden input as it
189
+ * would cause the outline to go away, preventing
190
+ * users from having any visual indication of which
191
+ * column is focused.
192
+ */
193
+ this.enterInputMode = (columnEl, focusInput = true) => {
194
+ const { inputEl, el } = this;
195
+ if (!inputEl) {
196
+ return;
197
+ }
198
+ /**
199
+ * Only active input mode if there is at
200
+ * least one column that accepts numeric input.
201
+ */
202
+ const hasInputColumn = el.querySelector('ion-picker-column.picker-column-numeric-input');
203
+ if (!hasInputColumn) {
204
+ return;
205
+ }
206
+ /**
207
+ * If columnEl is undefined then
208
+ * it is assumed that all numeric pickers
209
+ * are eligible for text entry.
210
+ * (i.e. hour and minute columns)
211
+ */
212
+ this.useInputMode = true;
213
+ this.inputModeColumn = columnEl;
214
+ /**
215
+ * Users with a keyboard and mouse can
216
+ * activate input mode where the input is
217
+ * focused as well as when it is not focused,
218
+ * so we need to make sure we clean up any
219
+ * old listeners.
220
+ */
221
+ if (focusInput) {
222
+ if (this.destroyKeypressListener) {
223
+ this.destroyKeypressListener();
224
+ this.destroyKeypressListener = undefined;
225
+ }
226
+ inputEl.focus();
186
227
  }
187
228
  else {
229
+ // TODO FW-5900 Use keydown instead
230
+ el.addEventListener('keypress', this.onKeyPress);
231
+ this.destroyKeypressListener = () => {
232
+ el.removeEventListener('keypress', this.onKeyPress);
233
+ };
234
+ }
235
+ this.emitInputModeChange();
236
+ };
237
+ this.onKeyPress = (ev) => {
238
+ const { inputEl } = this;
239
+ if (!inputEl) {
240
+ return;
241
+ }
242
+ const parsedValue = parseInt(ev.key, 10);
243
+ /**
244
+ * Only numbers should be allowed
245
+ */
246
+ if (!Number.isNaN(parsedValue)) {
247
+ inputEl.value += ev.key;
248
+ this.onInputChange();
249
+ }
250
+ };
251
+ this.selectSingleColumn = () => {
252
+ const { inputEl, inputModeColumn, singleColumnSearchTimeout } = this;
253
+ if (!inputEl || !inputModeColumn) {
254
+ return;
255
+ }
256
+ const options = Array.from(inputModeColumn.querySelectorAll('ion-picker-column-option')).filter((el) => el.disabled !== true);
257
+ /**
258
+ * If users pause for a bit, the search
259
+ * value should be reset similar to how a
260
+ * <select> behaves. So typing "34", waiting,
261
+ * then typing "5" should select "05".
262
+ */
263
+ if (singleColumnSearchTimeout) {
264
+ clearTimeout(singleColumnSearchTimeout);
265
+ }
266
+ this.singleColumnSearchTimeout = setTimeout(() => {
267
+ inputEl.value = '';
268
+ this.singleColumnSearchTimeout = undefined;
269
+ }, 1000);
270
+ /**
271
+ * For values that are longer than 2 digits long
272
+ * we should shift the value over 1 character
273
+ * to the left. So typing "456" would result in "56".
274
+ * TODO: If we want to support more than just
275
+ * time entry, we should update this value to be
276
+ * the max length of all of the picker items.
277
+ */
278
+ if (inputEl.value.length >= 3) {
279
+ const startIndex = inputEl.value.length - 2;
280
+ const newString = inputEl.value.substring(startIndex);
281
+ inputEl.value = newString;
282
+ this.selectSingleColumn();
283
+ return;
284
+ }
285
+ /**
286
+ * Checking the value of the input gets priority
287
+ * first. For example, if the value of the input
288
+ * is "1" and we entered "2", then the complete value
289
+ * is "12" and we should select hour 12.
290
+ *
291
+ * Regex removes any leading zeros from values like "02",
292
+ * but it keeps a single zero if there are only zeros in the string.
293
+ * 0+(?=[1-9]) --> Match 1 or more zeros that are followed by 1-9
294
+ * 0+(?=0$) --> Match 1 or more zeros that must be followed by one 0 and end.
295
+ */
296
+ const findItemFromCompleteValue = options.find(({ textContent }) => {
188
297
  /**
189
- * If there is only 1 numeric input column
190
- * then we should skip multi column input.
298
+ * Keyboard entry is currently only used inside of Datetime
299
+ * where we guarantee textContent is set.
300
+ * If we end up exposing this feature publicly we should revisit this assumption.
191
301
  */
192
- const columns = el.querySelectorAll('ion-picker-column.picker-column-numeric-input');
193
- const columnEl = columns.length === 1 ? ev.target : undefined;
194
- this.actionOnClick = () => {
195
- this.enterInputMode(columnEl);
196
- };
302
+ const parsedText = textContent.replace(/^0+(?=[1-9])|0+(?=0$)/, '');
303
+ return parsedText === inputEl.value;
304
+ });
305
+ if (findItemFromCompleteValue) {
306
+ inputModeColumn.setValue(findItemFromCompleteValue.value);
307
+ return;
308
+ }
309
+ /**
310
+ * If we typed "56" to get minute 56, then typed "7",
311
+ * we should select "07" as "567" is not a valid minute.
312
+ */
313
+ if (inputEl.value.length === 2) {
314
+ const changedCharacter = inputEl.value.substring(inputEl.value.length - 1);
315
+ inputEl.value = changedCharacter;
316
+ this.selectSingleColumn();
197
317
  }
198
- return;
199
- }
200
- this.actionOnClick = () => {
201
- this.exitInputMode();
202
318
  };
203
- };
204
- /**
205
- * Enters input mode to allow
206
- * for text entry of numeric values.
207
- * If on mobile, we focus a hidden input
208
- * field so that the on screen keyboard
209
- * is brought up. When tabbing using a
210
- * keyboard, picker columns receive an outline
211
- * to indicate they are focused. As a result,
212
- * we should not focus the hidden input as it
213
- * would cause the outline to go away, preventing
214
- * users from having any visual indication of which
215
- * column is focused.
216
- */
217
- enterInputMode = (columnEl, focusInput = true) => {
218
- const { inputEl, el } = this;
219
- if (!inputEl) {
220
- return;
221
- }
222
319
  /**
223
- * Only active input mode if there is at
224
- * least one column that accepts numeric input.
320
+ * Searches a list of column items for a particular
321
+ * value. This is currently used for numeric values.
322
+ * The zeroBehavior can be set to account for leading
323
+ * or trailing zeros when looking at the item text.
225
324
  */
226
- const hasInputColumn = el.querySelector('ion-picker-column.picker-column-numeric-input');
227
- if (!hasInputColumn) {
228
- return;
229
- }
325
+ this.searchColumn = (colEl, value, zeroBehavior = 'start') => {
326
+ if (!value) {
327
+ return false;
328
+ }
329
+ const behavior = zeroBehavior === 'start' ? /^0+/ : /0$/;
330
+ value = value.replace(behavior, '');
331
+ const option = Array.from(colEl.querySelectorAll('ion-picker-column-option')).find((el) => {
332
+ return el.disabled !== true && el.textContent.replace(behavior, '') === value;
333
+ });
334
+ if (option) {
335
+ colEl.setValue(option.value);
336
+ }
337
+ return !!option;
338
+ };
230
339
  /**
231
- * If columnEl is undefined then
232
- * it is assumed that all numeric pickers
233
- * are eligible for text entry.
234
- * (i.e. hour and minute columns)
340
+ * Attempts to intelligently search the first and second
341
+ * column as if they're number columns for the provided numbers
342
+ * where the first two numbers are the first column
343
+ * and the last 2 are the last column. Tries to allow for the first
344
+ * number to be ignored for situations where typos occurred.
235
345
  */
236
- this.useInputMode = true;
237
- this.inputModeColumn = columnEl;
346
+ this.multiColumnSearch = (firstColumn, secondColumn, input) => {
347
+ if (input.length === 0) {
348
+ return;
349
+ }
350
+ const inputArray = input.split('');
351
+ const hourValue = inputArray.slice(0, 2).join('');
352
+ // Try to find a match for the first two digits in the first column
353
+ const foundHour = this.searchColumn(firstColumn, hourValue);
354
+ // If we have more than 2 digits and found a match for hours,
355
+ // use the remaining digits for the second column (minutes)
356
+ if (inputArray.length > 2 && foundHour) {
357
+ const minuteValue = inputArray.slice(2, 4).join('');
358
+ this.searchColumn(secondColumn, minuteValue);
359
+ }
360
+ // If we couldn't find a match for the two-digit hour, try single digit approaches
361
+ else if (!foundHour && inputArray.length >= 1) {
362
+ // First try the first digit as a single-digit hour
363
+ let singleDigitHour = inputArray[0];
364
+ let singleDigitFound = this.searchColumn(firstColumn, singleDigitHour);
365
+ // If that didn't work, try the second digit as a single-digit hour
366
+ // (handles case where user made a typo in the first digit, or they typed over themselves)
367
+ if (!singleDigitFound) {
368
+ inputArray.shift();
369
+ singleDigitHour = inputArray[0];
370
+ singleDigitFound = this.searchColumn(firstColumn, singleDigitHour);
371
+ }
372
+ // If we found a single-digit hour and have remaining digits,
373
+ // use up to 2 of the remaining digits for the second column
374
+ if (singleDigitFound && inputArray.length > 1) {
375
+ const remainingDigits = inputArray.slice(1, 3).join('');
376
+ this.searchColumn(secondColumn, remainingDigits);
377
+ }
378
+ }
379
+ };
380
+ this.selectMultiColumn = () => {
381
+ const { inputEl, el } = this;
382
+ if (!inputEl) {
383
+ return;
384
+ }
385
+ const numericPickers = Array.from(el.querySelectorAll('ion-picker-column')).filter((col) => col.numericInput);
386
+ const firstColumn = numericPickers[0];
387
+ const lastColumn = numericPickers[1];
388
+ let value = inputEl.value;
389
+ if (value.length > 4) {
390
+ const startIndex = inputEl.value.length - 4;
391
+ const newString = inputEl.value.substring(startIndex);
392
+ inputEl.value = newString;
393
+ value = newString;
394
+ }
395
+ this.multiColumnSearch(firstColumn, lastColumn, value);
396
+ };
238
397
  /**
239
- * Users with a keyboard and mouse can
240
- * activate input mode where the input is
241
- * focused as well as when it is not focused,
242
- * so we need to make sure we clean up any
243
- * old listeners.
398
+ * Searches the value of the active column
399
+ * to determine which value users are trying
400
+ * to select
244
401
  */
245
- if (focusInput) {
246
- if (this.destroyKeypressListener) {
247
- this.destroyKeypressListener();
248
- this.destroyKeypressListener = undefined;
402
+ this.onInputChange = () => {
403
+ const { useInputMode, inputEl, inputModeColumn } = this;
404
+ if (!useInputMode || !inputEl) {
405
+ return;
249
406
  }
250
- inputEl.focus();
251
- }
252
- else {
253
- // TODO FW-5900 Use keydown instead
254
- el.addEventListener('keypress', this.onKeyPress);
255
- this.destroyKeypressListener = () => {
256
- el.removeEventListener('keypress', this.onKeyPress);
257
- };
258
- }
259
- this.emitInputModeChange();
260
- };
407
+ if (inputModeColumn) {
408
+ this.selectSingleColumn();
409
+ }
410
+ else {
411
+ this.selectMultiColumn();
412
+ }
413
+ };
414
+ /**
415
+ * Emit ionInputModeChange. Picker columns
416
+ * listen for this event to determine whether
417
+ * or not their column is "active" for text input.
418
+ */
419
+ this.emitInputModeChange = () => {
420
+ const { useInputMode, inputModeColumn } = this;
421
+ this.ionInputModeChange.emit({
422
+ useInputMode,
423
+ inputModeColumn,
424
+ });
425
+ };
426
+ }
427
+ /**
428
+ * When the picker is interacted with
429
+ * we need to prevent touchstart so other
430
+ * gestures do not fire. For example,
431
+ * scrolling on the wheel picker
432
+ * in ion-datetime should not cause
433
+ * a card modal to swipe to close.
434
+ */
435
+ preventTouchStartPropagation(ev) {
436
+ ev.stopPropagation();
437
+ }
438
+ componentWillLoad() {
439
+ helpers.getElementRoot(this.el).addEventListener('focusin', this.onFocusIn);
440
+ helpers.getElementRoot(this.el).addEventListener('focusout', this.onFocusOut);
441
+ }
261
442
  /**
262
443
  * @internal
263
444
  * Exits text entry mode for the picker
@@ -279,197 +460,9 @@ const Picker = class {
279
460
  }
280
461
  this.emitInputModeChange();
281
462
  }
282
- onKeyPress = (ev) => {
283
- const { inputEl } = this;
284
- if (!inputEl) {
285
- return;
286
- }
287
- const parsedValue = parseInt(ev.key, 10);
288
- /**
289
- * Only numbers should be allowed
290
- */
291
- if (!Number.isNaN(parsedValue)) {
292
- inputEl.value += ev.key;
293
- this.onInputChange();
294
- }
295
- };
296
- selectSingleColumn = () => {
297
- const { inputEl, inputModeColumn, singleColumnSearchTimeout } = this;
298
- if (!inputEl || !inputModeColumn) {
299
- return;
300
- }
301
- const options = Array.from(inputModeColumn.querySelectorAll('ion-picker-column-option')).filter((el) => el.disabled !== true);
302
- /**
303
- * If users pause for a bit, the search
304
- * value should be reset similar to how a
305
- * <select> behaves. So typing "34", waiting,
306
- * then typing "5" should select "05".
307
- */
308
- if (singleColumnSearchTimeout) {
309
- clearTimeout(singleColumnSearchTimeout);
310
- }
311
- this.singleColumnSearchTimeout = setTimeout(() => {
312
- inputEl.value = '';
313
- this.singleColumnSearchTimeout = undefined;
314
- }, 1000);
315
- /**
316
- * For values that are longer than 2 digits long
317
- * we should shift the value over 1 character
318
- * to the left. So typing "456" would result in "56".
319
- * TODO: If we want to support more than just
320
- * time entry, we should update this value to be
321
- * the max length of all of the picker items.
322
- */
323
- if (inputEl.value.length >= 3) {
324
- const startIndex = inputEl.value.length - 2;
325
- const newString = inputEl.value.substring(startIndex);
326
- inputEl.value = newString;
327
- this.selectSingleColumn();
328
- return;
329
- }
330
- /**
331
- * Checking the value of the input gets priority
332
- * first. For example, if the value of the input
333
- * is "1" and we entered "2", then the complete value
334
- * is "12" and we should select hour 12.
335
- *
336
- * Regex removes any leading zeros from values like "02",
337
- * but it keeps a single zero if there are only zeros in the string.
338
- * 0+(?=[1-9]) --> Match 1 or more zeros that are followed by 1-9
339
- * 0+(?=0$) --> Match 1 or more zeros that must be followed by one 0 and end.
340
- */
341
- const findItemFromCompleteValue = options.find(({ textContent }) => {
342
- /**
343
- * Keyboard entry is currently only used inside of Datetime
344
- * where we guarantee textContent is set.
345
- * If we end up exposing this feature publicly we should revisit this assumption.
346
- */
347
- const parsedText = textContent.replace(/^0+(?=[1-9])|0+(?=0$)/, '');
348
- return parsedText === inputEl.value;
349
- });
350
- if (findItemFromCompleteValue) {
351
- inputModeColumn.setValue(findItemFromCompleteValue.value);
352
- return;
353
- }
354
- /**
355
- * If we typed "56" to get minute 56, then typed "7",
356
- * we should select "07" as "567" is not a valid minute.
357
- */
358
- if (inputEl.value.length === 2) {
359
- const changedCharacter = inputEl.value.substring(inputEl.value.length - 1);
360
- inputEl.value = changedCharacter;
361
- this.selectSingleColumn();
362
- }
363
- };
364
- /**
365
- * Searches a list of column items for a particular
366
- * value. This is currently used for numeric values.
367
- * The zeroBehavior can be set to account for leading
368
- * or trailing zeros when looking at the item text.
369
- */
370
- searchColumn = (colEl, value, zeroBehavior = 'start') => {
371
- if (!value) {
372
- return false;
373
- }
374
- const behavior = zeroBehavior === 'start' ? /^0+/ : /0$/;
375
- value = value.replace(behavior, '');
376
- const option = Array.from(colEl.querySelectorAll('ion-picker-column-option')).find((el) => {
377
- return el.disabled !== true && el.textContent.replace(behavior, '') === value;
378
- });
379
- if (option) {
380
- colEl.setValue(option.value);
381
- }
382
- return !!option;
383
- };
384
- /**
385
- * Attempts to intelligently search the first and second
386
- * column as if they're number columns for the provided numbers
387
- * where the first two numbers are the first column
388
- * and the last 2 are the last column. Tries to allow for the first
389
- * number to be ignored for situations where typos occurred.
390
- */
391
- multiColumnSearch = (firstColumn, secondColumn, input) => {
392
- if (input.length === 0) {
393
- return;
394
- }
395
- const inputArray = input.split('');
396
- const hourValue = inputArray.slice(0, 2).join('');
397
- // Try to find a match for the first two digits in the first column
398
- const foundHour = this.searchColumn(firstColumn, hourValue);
399
- // If we have more than 2 digits and found a match for hours,
400
- // use the remaining digits for the second column (minutes)
401
- if (inputArray.length > 2 && foundHour) {
402
- const minuteValue = inputArray.slice(2, 4).join('');
403
- this.searchColumn(secondColumn, minuteValue);
404
- }
405
- // If we couldn't find a match for the two-digit hour, try single digit approaches
406
- else if (!foundHour && inputArray.length >= 1) {
407
- // First try the first digit as a single-digit hour
408
- let singleDigitHour = inputArray[0];
409
- let singleDigitFound = this.searchColumn(firstColumn, singleDigitHour);
410
- // If that didn't work, try the second digit as a single-digit hour
411
- // (handles case where user made a typo in the first digit, or they typed over themselves)
412
- if (!singleDigitFound) {
413
- inputArray.shift();
414
- singleDigitHour = inputArray[0];
415
- singleDigitFound = this.searchColumn(firstColumn, singleDigitHour);
416
- }
417
- // If we found a single-digit hour and have remaining digits,
418
- // use up to 2 of the remaining digits for the second column
419
- if (singleDigitFound && inputArray.length > 1) {
420
- const remainingDigits = inputArray.slice(1, 3).join('');
421
- this.searchColumn(secondColumn, remainingDigits);
422
- }
423
- }
424
- };
425
- selectMultiColumn = () => {
426
- const { inputEl, el } = this;
427
- if (!inputEl) {
428
- return;
429
- }
430
- const numericPickers = Array.from(el.querySelectorAll('ion-picker-column')).filter((col) => col.numericInput);
431
- const firstColumn = numericPickers[0];
432
- const lastColumn = numericPickers[1];
433
- let value = inputEl.value;
434
- if (value.length > 4) {
435
- const startIndex = inputEl.value.length - 4;
436
- const newString = inputEl.value.substring(startIndex);
437
- inputEl.value = newString;
438
- value = newString;
439
- }
440
- this.multiColumnSearch(firstColumn, lastColumn, value);
441
- };
442
- /**
443
- * Searches the value of the active column
444
- * to determine which value users are trying
445
- * to select
446
- */
447
- onInputChange = () => {
448
- const { useInputMode, inputEl, inputModeColumn } = this;
449
- if (!useInputMode || !inputEl) {
450
- return;
451
- }
452
- if (inputModeColumn) {
453
- this.selectSingleColumn();
454
- }
455
- else {
456
- this.selectMultiColumn();
457
- }
458
- };
459
- /**
460
- * Emit ionInputModeChange. Picker columns
461
- * listen for this event to determine whether
462
- * or not their column is "active" for text input.
463
- */
464
- emitInputModeChange = () => {
465
- const { useInputMode, inputModeColumn } = this;
466
- this.ionInputModeChange.emit({
467
- useInputMode,
468
- inputModeColumn,
469
- });
470
- };
471
463
  render() {
472
- return (index.h(index.Host, { key: '28f81e4ed44a633178561757c5199c2c98f94b74', onPointerDown: (ev) => this.onPointerDown(ev), onClick: () => this.onClick() }, index.h("input", { key: 'abb3d1ad25ef63856af7804111175a4d50008bc0', "aria-hidden": "true", tabindex: -1, inputmode: "numeric", type: "number", onKeyDown: (ev) => {
464
+ return (index.h(index.Host, { key: '7bd377eae3c0fe70f0bc34820d5f7e66a8c1f280', onPointerDown: (ev) => this.onPointerDown(ev), onClick: () => this.onClick() }, index.h("input", { key: '81e4494104e755f8c05a4dcbceb3ad2edb426bfc', "aria-hidden": "true", tabindex: -1, inputmode: "numeric", type: "number", onKeyDown: (ev) => {
465
+ var _a;
473
466
  /**
474
467
  * The "Enter" key represents
475
468
  * the user submitting their time
@@ -481,12 +474,14 @@ const Picker = class {
481
474
  * callback below.
482
475
  */
483
476
  if (ev.key === 'Enter') {
484
- this.inputEl?.blur();
477
+ (_a = this.inputEl) === null || _a === void 0 ? void 0 : _a.blur();
485
478
  }
486
- }, ref: (el) => (this.inputEl = el), onInput: () => this.onInputChange(), onBlur: () => this.exitInputMode() }), index.h("div", { key: '334a5abdc02e6b127c57177f626d7e4ff5526183', class: "picker-before" }), index.h("div", { key: 'ffd6271931129e88fc7c820e919d684899e420c5', class: "picker-after" }), index.h("div", { key: '78d1d95fd09e04f154ea59f24a1cece72c47ed7b', class: "picker-highlight", ref: (el) => (this.highlightEl = el) }), index.h("slot", { key: '0bd5b9f875d3c71f6cbbde2054baeb1b0a2e8cd5' })));
479
+ }, ref: (el) => (this.inputEl = el), onInput: () => this.onInputChange(), onBlur: () => this.exitInputMode() }), index.h("div", { key: '64a1ed7261384f8b8880458684140dabb2886bc4', class: "picker-before" }), index.h("div", { key: 'b1cb9d14bb7171695ffb138b3ad3150264adee95', class: "picker-after" }), index.h("div", { key: '11db19b2aab0ca2b84171892a6158c612e8e2642', class: "picker-highlight", ref: (el) => (this.highlightEl = el) }), index.h("slot", { key: '8cbf25b4282541e3d33aa67bc34e59b46541e64f' })));
487
480
  }
481
+ get el() { return index.getElement(this); }
488
482
  };
489
483
  Picker.style = {
484
+ ionic: ionicPickerMdCss(),
490
485
  ios: pickerIosCss(),
491
486
  md: pickerMdCss()
492
487
  };