voyager-ionic-core 7.7.3 → 8.0.0-beta.1

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 (939) hide show
  1. package/components/action-sheet.js +4 -4
  2. package/components/alert.js +2 -2
  3. package/components/backdrop.js +1 -13
  4. package/components/button-active.js +1 -1
  5. package/components/button.js +2 -2
  6. package/components/checkbox.js +8 -80
  7. package/components/data.js +1 -1
  8. package/components/gesture-controller.js +1 -1
  9. package/components/helpers.js +1 -1
  10. package/components/index9.js +1 -1
  11. package/components/input-shims.js +8 -1
  12. package/components/ion-accordion-group.js +1 -1
  13. package/components/ion-back-button.js +1 -1
  14. package/components/ion-badge.js +2 -2
  15. package/components/ion-breadcrumb.js +2 -2
  16. package/components/ion-card-subtitle.js +2 -2
  17. package/components/ion-card-title.js +1 -1
  18. package/components/ion-card.js +2 -2
  19. package/components/ion-chip.js +2 -2
  20. package/components/ion-col.js +2 -2
  21. package/components/ion-content.js +5 -6
  22. package/components/ion-datetime-button.js +5 -5
  23. package/components/ion-datetime.js +41 -105
  24. package/components/ion-fab-button.js +4 -4
  25. package/components/ion-fab-list.js +3 -3
  26. package/components/ion-fab.js +2 -2
  27. package/components/ion-footer.js +3 -3
  28. package/components/ion-grid.js +2 -2
  29. package/components/ion-header.js +3 -3
  30. package/components/ion-img.js +1 -1
  31. package/components/ion-infinite-scroll-content.js +4 -4
  32. package/components/ion-infinite-scroll.js +1 -1
  33. package/components/ion-input.js +7 -93
  34. package/components/ion-item-divider.js +4 -4
  35. package/components/ion-item-group.js +1 -1
  36. package/components/ion-item-option.js +4 -4
  37. package/components/ion-item-options.js +4 -4
  38. package/components/ion-item-sliding.js +2 -2
  39. package/components/ion-loading.js +4 -4
  40. package/components/ion-menu-button.js +3 -3
  41. package/components/ion-menu-toggle.js +2 -2
  42. package/components/ion-menu.js +28 -43
  43. package/components/ion-modal.js +43 -28
  44. package/components/ion-nav-link.js +1 -1
  45. package/components/ion-nav.js +9 -5
  46. package/components/ion-picker-column-option.d.ts +11 -0
  47. package/components/ion-picker-column-option.js +9 -0
  48. package/components/ion-picker-column.js +2 -2
  49. package/components/ion-picker-legacy-column.d.ts +11 -0
  50. package/components/ion-picker-legacy-column.js +9 -0
  51. package/components/{ion-picker-internal.d.ts → ion-picker-legacy.d.ts} +4 -4
  52. package/components/ion-picker-legacy.js +321 -0
  53. package/components/ion-picker.js +1 -315
  54. package/components/ion-progress-bar.js +7 -4
  55. package/components/ion-range.js +34 -88
  56. package/components/ion-refresher-content.js +1 -1
  57. package/components/ion-refresher.js +4 -4
  58. package/components/ion-reorder-group.js +1 -1
  59. package/components/ion-reorder.js +1 -1
  60. package/components/ion-router-link.js +3 -3
  61. package/components/ion-router-outlet.js +2 -2
  62. package/components/ion-router.js +1 -1
  63. package/components/ion-row.js +1 -1
  64. package/components/ion-searchbar.js +7 -7
  65. package/components/ion-segment-button.js +5 -5
  66. package/components/ion-segment.js +2 -2
  67. package/components/ion-select-option.js +1 -1
  68. package/components/ion-select.js +65 -159
  69. package/components/ion-skeleton-text.js +2 -2
  70. package/components/ion-split-pane.js +28 -17
  71. package/components/ion-tab-bar.js +4 -4
  72. package/components/ion-tab-button.js +4 -4
  73. package/components/ion-tab.js +2 -2
  74. package/components/ion-tabs.js +1 -1
  75. package/components/ion-text.js +2 -2
  76. package/components/ion-textarea.js +7 -70
  77. package/components/ion-thumbnail.js +1 -1
  78. package/components/ion-title.js +3 -3
  79. package/components/ion-toast.js +12 -6
  80. package/components/ion-toggle.js +7 -64
  81. package/components/ion-toolbar.js +4 -4
  82. package/components/item.js +22 -7
  83. package/components/label.js +3 -3
  84. package/components/list-header.js +4 -4
  85. package/components/list.js +2 -2
  86. package/components/note.js +4 -4
  87. package/components/overlays.js +90 -40
  88. package/components/picker-column-option.js +124 -0
  89. package/components/picker-column.js +367 -324
  90. package/components/picker-column2.js +381 -0
  91. package/components/{picker-internal.js → picker.js} +33 -26
  92. package/components/popover.js +6 -6
  93. package/components/radio-group.js +1 -1
  94. package/components/radio.js +8 -81
  95. package/components/refresher.utils.js +1 -1
  96. package/components/ripple-effect.js +1 -1
  97. package/components/select-popover.js +2 -2
  98. package/components/spinner.js +1 -1
  99. package/components/swipe-back.js +1 -1
  100. package/css/core.css +90 -27
  101. package/css/core.css.map +1 -1
  102. package/css/display.css.map +1 -1
  103. package/css/float-elements.css.map +1 -1
  104. package/css/global.bundle.css +1 -1
  105. package/css/global.bundle.css.map +1 -1
  106. package/css/ionic-swiper.css.map +1 -1
  107. package/css/ionic.bundle.css +1 -1
  108. package/css/ionic.bundle.css.map +1 -1
  109. package/css/padding.css.map +1 -1
  110. package/css/structure.css.map +1 -1
  111. package/css/text-alignment.css.map +1 -1
  112. package/css/text-transformation.css.map +1 -1
  113. package/css/themes/dark.always.css +160 -0
  114. package/css/themes/dark.always.css.map +1 -0
  115. package/css/themes/dark.class.css +160 -0
  116. package/css/themes/dark.class.css.map +1 -0
  117. package/css/themes/dark.css +3 -0
  118. package/css/themes/dark.css.map +1 -0
  119. package/css/themes/dark.system.css +162 -0
  120. package/css/themes/dark.system.css.map +1 -0
  121. package/css/themes/high-contrast-dark.always.css +180 -0
  122. package/css/themes/high-contrast-dark.always.css.map +1 -0
  123. package/css/themes/high-contrast-dark.class.css +180 -0
  124. package/css/themes/high-contrast-dark.class.css.map +1 -0
  125. package/css/themes/high-contrast-dark.css +3 -0
  126. package/css/themes/high-contrast-dark.css.map +1 -0
  127. package/css/themes/high-contrast-dark.system.css +182 -0
  128. package/css/themes/high-contrast-dark.system.css.map +1 -0
  129. package/css/themes/high-contrast.always.css +101 -0
  130. package/css/themes/high-contrast.always.css.map +1 -0
  131. package/css/themes/high-contrast.class.css +101 -0
  132. package/css/themes/high-contrast.class.css.map +1 -0
  133. package/css/themes/high-contrast.css +3 -0
  134. package/css/themes/high-contrast.css.map +1 -0
  135. package/css/themes/high-contrast.system.css +103 -0
  136. package/css/themes/high-contrast.system.css.map +1 -0
  137. package/css/typography.css +1 -1
  138. package/css/typography.css.map +1 -1
  139. package/css/utils.bundle.css.map +1 -1
  140. package/dist/cjs/{animation-c2840aea.js → animation-4ad55058.js} +1 -1
  141. package/dist/cjs/{app-globals-92ad1b3d.js → app-globals-4d26cb5a.js} +1 -1
  142. package/dist/cjs/{button-active-2d6520ec.js → button-active-e447f58b.js} +3 -3
  143. package/dist/cjs/{data-a5109f09.js → data-e2bf21de.js} +1 -1
  144. package/dist/cjs/{framework-delegate-e0e13baa.js → framework-delegate-53817ef1.js} +1 -1
  145. package/dist/cjs/{gesture-controller-c40c045a.js → gesture-controller-9436f482.js} +1 -0
  146. package/dist/cjs/{hardware-back-button-2696acaf.js → hardware-back-button-4cb049f1.js} +2 -2
  147. package/dist/cjs/{helpers-da4c0ed1.js → helpers-b71ca811.js} +0 -1
  148. package/dist/cjs/{index-bef98850.js → index-347883f6.js} +1 -1
  149. package/dist/cjs/{index-62290fec.js → index-7574e3d2.js} +1 -1
  150. package/dist/cjs/{index-9bfcb6e8.js → index-92bb95d6.js} +4 -4
  151. package/dist/cjs/{index-4c96691f.js → index-bbc5b1f7.js} +4 -4
  152. package/dist/cjs/{index-0ffe376d.js → index-ea266398.js} +2 -2
  153. package/dist/cjs/{index-d1b59ffa.js → index-ee07ed59.js} +1 -1
  154. package/dist/cjs/index.cjs.js +13 -13
  155. package/dist/cjs/{input-shims-a9a85bb9.js → input-shims-679d87bc.js} +10 -3
  156. package/dist/cjs/{input.utils-d7dca90f.js → input.utils-5175aea1.js} +1 -1
  157. package/dist/cjs/ion-accordion_2.cjs.entry.js +4 -4
  158. package/dist/cjs/ion-action-sheet.cjs.entry.js +14 -14
  159. package/dist/cjs/ion-alert.cjs.entry.js +12 -12
  160. package/dist/cjs/ion-app_8.cjs.entry.js +28 -29
  161. package/dist/cjs/ion-avatar_3.cjs.entry.js +5 -5
  162. package/dist/cjs/ion-back-button.cjs.entry.js +4 -4
  163. package/dist/cjs/ion-backdrop.cjs.entry.js +3 -15
  164. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +5 -5
  165. package/dist/cjs/ion-button_2.cjs.entry.js +5 -5
  166. package/dist/cjs/ion-card_5.cjs.entry.js +8 -8
  167. package/dist/cjs/ion-checkbox.cjs.entry.js +9 -77
  168. package/dist/cjs/ion-chip.cjs.entry.js +4 -4
  169. package/dist/cjs/ion-col_3.cjs.entry.js +7 -7
  170. package/dist/cjs/ion-datetime-button.cjs.entry.js +9 -9
  171. package/dist/cjs/ion-datetime_3.cjs.entry.js +56 -110
  172. package/dist/cjs/ion-fab_3.cjs.entry.js +12 -12
  173. package/dist/cjs/ion-img.cjs.entry.js +4 -4
  174. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +9 -9
  175. package/dist/cjs/ion-input.cjs.entry.js +12 -92
  176. package/dist/cjs/ion-item-option_3.cjs.entry.js +13 -13
  177. package/dist/cjs/ion-item_8.cjs.entry.js +45 -30
  178. package/dist/cjs/ion-loading.cjs.entry.js +12 -11
  179. package/dist/cjs/ion-menu_3.cjs.entry.js +40 -56
  180. package/dist/cjs/ion-modal.cjs.entry.js +53 -38
  181. package/dist/cjs/ion-nav_2.cjs.entry.js +13 -10
  182. package/dist/cjs/ion-picker-column-option.cjs.entry.js +106 -0
  183. package/dist/cjs/{ion-picker-column-internal.cjs.entry.js → ion-picker-column.cjs.entry.js} +124 -93
  184. package/dist/cjs/{ion-picker-internal.cjs.entry.js → ion-picker.cjs.entry.js} +32 -25
  185. package/dist/cjs/ion-popover.cjs.entry.js +13 -12
  186. package/dist/cjs/ion-progress-bar.cjs.entry.js +9 -6
  187. package/dist/cjs/ion-radio_2.cjs.entry.js +10 -79
  188. package/dist/cjs/ion-range.cjs.entry.js +37 -90
  189. package/dist/cjs/ion-refresher_2.cjs.entry.js +12 -12
  190. package/dist/cjs/ion-reorder_2.cjs.entry.js +7 -7
  191. package/dist/cjs/ion-ripple-effect.cjs.entry.js +3 -3
  192. package/dist/cjs/ion-route_4.cjs.entry.js +6 -6
  193. package/dist/cjs/ion-searchbar.cjs.entry.js +9 -9
  194. package/dist/cjs/ion-segment_2.cjs.entry.js +11 -11
  195. package/dist/cjs/ion-select_3.cjs.entry.js +78 -169
  196. package/dist/cjs/ion-spinner.cjs.entry.js +3 -3
  197. package/dist/cjs/ion-split-pane.cjs.entry.js +28 -18
  198. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +11 -11
  199. package/dist/cjs/ion-tab_2.cjs.entry.js +6 -6
  200. package/dist/cjs/ion-text.cjs.entry.js +4 -4
  201. package/dist/cjs/ion-textarea.cjs.entry.js +11 -71
  202. package/dist/cjs/ion-toast.cjs.entry.js +20 -14
  203. package/dist/cjs/ion-toggle.cjs.entry.js +10 -66
  204. package/dist/cjs/{ionic-global-59a10130.js → ionic-global-59aa7eb7.js} +1 -1
  205. package/dist/cjs/ionic.cjs.js +5 -5
  206. package/dist/cjs/{ios.transition-96679580.js → ios.transition-997fe325.js} +4 -4
  207. package/dist/cjs/loader.cjs.js +4 -4
  208. package/dist/cjs/{md.transition-d6c98822.js → md.transition-2b76c2c6.js} +4 -4
  209. package/dist/cjs/{notch-controller-bfbcbb7a.js → notch-controller-8e0ae870.js} +1 -1
  210. package/dist/cjs/{overlays-db5d96f3.js → overlays-3d02b54f.js} +93 -42
  211. package/dist/cjs/{status-tap-7ad5f0fb.js → status-tap-3761c2d4.js} +3 -3
  212. package/dist/cjs/{swipe-back-dcd0d4a9.js → swipe-back-5b71fc62.js} +3 -3
  213. package/dist/collection/collection-manifest.json +8 -7
  214. package/dist/collection/components/accordion-group/accordion-group.md.css +4 -26
  215. package/dist/collection/components/action-sheet/action-sheet.ios.css +16 -9
  216. package/dist/collection/components/action-sheet/action-sheet.js +2 -2
  217. package/dist/collection/components/action-sheet/action-sheet.md.css +10 -3
  218. package/dist/collection/components/action-sheet/test/a11y/action-sheet.e2e.js +23 -14
  219. package/dist/collection/components/action-sheet/test/basic/action-sheet-rendering.e2e.js +19 -0
  220. package/dist/collection/components/action-sheet/test/basic/action-sheet.spec.js +22 -0
  221. package/dist/collection/components/alert/alert.ios.css +33 -80
  222. package/dist/collection/components/alert/alert.md.css +25 -121
  223. package/dist/collection/components/alert/test/a11y/alert.e2e.js +22 -9
  224. package/dist/collection/components/back-button/back-button.ios.css +1 -1
  225. package/dist/collection/components/back-button/test/a11y/back-button.e2e.js +21 -0
  226. package/dist/collection/components/backdrop/backdrop.js +1 -13
  227. package/dist/collection/components/badge/badge.ios.css +1 -1
  228. package/dist/collection/components/badge/badge.md.css +1 -1
  229. package/dist/collection/components/badge/test/a11y/badge.e2e.js +18 -0
  230. package/dist/collection/components/breadcrumb/breadcrumb.ios.css +9 -9
  231. package/dist/collection/components/breadcrumb/breadcrumb.md.css +9 -9
  232. package/dist/collection/components/button/button.ios.css +11 -11
  233. package/dist/collection/components/button/button.md.css +9 -9
  234. package/dist/collection/components/button/test/a11y/button.e2e.js +48 -0
  235. package/dist/collection/components/button/test/wrap/button.e2e.js +12 -24
  236. package/dist/collection/components/card/card.ios.css +1 -1
  237. package/dist/collection/components/card/card.md.css +1 -1
  238. package/dist/collection/components/card-subtitle/card-subtitle.ios.css +1 -1
  239. package/dist/collection/components/card-subtitle/card-subtitle.md.css +1 -1
  240. package/dist/collection/components/card-title/card-title.md.css +1 -1
  241. package/dist/collection/components/checkbox/checkbox.ios.css +10 -88
  242. package/dist/collection/components/checkbox/checkbox.js +5 -118
  243. package/dist/collection/components/checkbox/checkbox.md.css +7 -85
  244. package/dist/collection/components/checkbox/test/a11y/checkbox.e2e.js +11 -2
  245. package/dist/collection/components/checkbox/test/basic/checkbox.e2e.js +10 -0
  246. package/dist/collection/components/chip/chip.js +2 -2
  247. package/dist/collection/components/col/col.js +2 -2
  248. package/dist/collection/components/content/content.css +0 -4
  249. package/dist/collection/components/content/content.js +3 -4
  250. package/dist/collection/components/datetime/datetime.ios.css +105 -117
  251. package/dist/collection/components/datetime/datetime.js +25 -77
  252. package/dist/collection/components/datetime/datetime.md.css +106 -114
  253. package/dist/collection/components/datetime/test/a11y/datetime.e2e.js +1 -1
  254. package/dist/collection/components/datetime/test/a11y/datetime.spec.js +6 -9
  255. package/dist/collection/components/datetime/test/basic/datetime.e2e.js +13 -1
  256. package/dist/collection/components/datetime/test/datetime.e2e.js +2 -2
  257. package/dist/collection/components/datetime/test/disabled/datetime.spec.js +4 -4
  258. package/dist/collection/components/datetime/test/locale/datetime.e2e.js +2 -2
  259. package/dist/collection/components/datetime/test/minmax/datetime.e2e.js +6 -6
  260. package/dist/collection/components/datetime/test/month-year-picker/datetime.e2e.js +1 -1
  261. package/dist/collection/components/datetime/test/prefer-wheel/datetime.e2e.js +43 -41
  262. package/dist/collection/components/datetime/test/presentation/datetime.e2e.js +1 -1
  263. package/dist/collection/components/datetime/test/readonly/datetime.e2e.js +4 -4
  264. package/dist/collection/components/datetime/test/values/datetime.e2e.js +15 -12
  265. package/dist/collection/components/datetime/utils/data.js +1 -1
  266. package/dist/collection/components/datetime-button/datetime-button.ios.css +107 -0
  267. package/dist/collection/components/datetime-button/datetime-button.js +5 -5
  268. package/dist/collection/components/datetime-button/{datetime-button.css → datetime-button.md.css} +10 -7
  269. package/dist/collection/components/datetime-button/test/basic/datetime-button.e2e.js +12 -0
  270. package/dist/collection/components/fab/fab.js +2 -2
  271. package/dist/collection/components/fab-button/fab-button.ios.css +7 -7
  272. package/dist/collection/components/fab-button/fab-button.js +2 -2
  273. package/dist/collection/components/fab-button/fab-button.md.css +1 -1
  274. package/dist/collection/components/fab-button/test/a11y/fab-button.e2e.js +50 -0
  275. package/dist/collection/components/fab-list/fab-list.css +4 -42
  276. package/dist/collection/components/fab-list/fab-list.js +2 -2
  277. package/dist/collection/components/footer/footer.js +2 -2
  278. package/dist/collection/components/grid/grid.js +2 -2
  279. package/dist/collection/components/header/header.js +2 -2
  280. package/dist/collection/components/img/img.js +1 -1
  281. package/dist/collection/components/infinite-scroll/infinite-scroll.js +1 -1
  282. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.ios.css +3 -3
  283. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +2 -2
  284. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.md.css +3 -3
  285. package/dist/collection/components/input/input.ios.css +11 -104
  286. package/dist/collection/components/input/input.js +6 -144
  287. package/dist/collection/components/input/input.md.css +35 -216
  288. package/dist/collection/components/input/test/a11y/input.e2e.js +41 -3
  289. package/dist/collection/components/input/test/item/input.e2e.js +21 -0
  290. package/dist/collection/components/item/item.ios.css +7 -31
  291. package/dist/collection/components/item/item.js +20 -5
  292. package/dist/collection/components/item/item.md.css +29 -112
  293. package/dist/collection/components/item/test/a11y/item.e2e.js +0 -40
  294. package/dist/collection/components/item-divider/item-divider.ios.css +3 -3
  295. package/dist/collection/components/item-divider/item-divider.js +2 -2
  296. package/dist/collection/components/item-divider/item-divider.md.css +7 -17
  297. package/dist/collection/components/item-group/item-group.js +1 -1
  298. package/dist/collection/components/item-option/item-option.ios.css +2 -2
  299. package/dist/collection/components/item-option/item-option.js +2 -2
  300. package/dist/collection/components/item-option/item-option.md.css +1 -1
  301. package/dist/collection/components/item-options/item-options.ios.css +1 -1
  302. package/dist/collection/components/item-options/item-options.js +1 -1
  303. package/dist/collection/components/item-options/item-options.md.css +1 -1
  304. package/dist/collection/components/item-sliding/item-sliding.js +1 -1
  305. package/dist/collection/components/item-sliding/test/a11y/item-sliding.e2e.js +28 -0
  306. package/dist/collection/components/label/label.ios.css +1 -1
  307. package/dist/collection/components/label/label.js +1 -1
  308. package/dist/collection/components/label/label.md.css +2 -2
  309. package/dist/collection/components/label/test/a11y/label.e2e.js +20 -0
  310. package/dist/collection/components/list/list.js +1 -1
  311. package/dist/collection/components/list/list.md.css +2 -26
  312. package/dist/collection/components/list-header/list-header.ios.css +2 -2
  313. package/dist/collection/components/list-header/list-header.js +2 -2
  314. package/dist/collection/components/list-header/list-header.md.css +1 -1
  315. package/dist/collection/components/loading/loading.ios.css +2 -2
  316. package/dist/collection/components/loading/loading.js +2 -2
  317. package/dist/collection/components/loading/loading.md.css +3 -3
  318. package/dist/collection/components/loading/test/a11y/loading.e2e.js +21 -5
  319. package/dist/collection/components/menu/menu.ios.css +72 -53
  320. package/dist/collection/components/menu/menu.js +25 -39
  321. package/dist/collection/components/menu/menu.md.css +72 -53
  322. package/dist/collection/components/menu-button/menu-button.ios.css +1 -1
  323. package/dist/collection/components/menu-button/menu-button.js +2 -2
  324. package/dist/collection/components/menu-button/test/a11y/menu-button.e2e.js +14 -0
  325. package/dist/collection/components/menu-toggle/menu-toggle.js +2 -2
  326. package/dist/collection/components/modal/gestures/swipe-to-close.js +1 -1
  327. package/dist/collection/components/modal/modal.ios.css +9 -38
  328. package/dist/collection/components/modal/modal.js +37 -5
  329. package/dist/collection/components/modal/modal.md.css +1 -1
  330. package/dist/collection/components/modal/test/modal-attributes.spec.js +32 -0
  331. package/dist/collection/components/modal/utils.js +2 -8
  332. package/dist/collection/components/nav/nav.js +23 -3
  333. package/dist/collection/components/nav/test/nav-controller.spec.js +36 -36
  334. package/dist/collection/components/nav-link/nav-link.js +1 -1
  335. package/dist/collection/components/note/note.ios.css +1 -1
  336. package/dist/collection/components/note/note.js +2 -2
  337. package/dist/collection/components/note/note.md.css +1 -1
  338. package/dist/collection/components/picker/picker.ios.css +97 -234
  339. package/dist/collection/components/picker/picker.js +488 -742
  340. package/dist/collection/components/picker/picker.md.css +98 -226
  341. package/dist/collection/components/{picker-internal/test/a11y/picker-internal.e2e.js → picker/test/a11y/picker.e2e.js} +2 -2
  342. package/dist/collection/components/picker/test/basic/picker.e2e.js +99 -13
  343. package/dist/collection/components/picker/test/custom/picker.e2e.js +85 -0
  344. package/dist/collection/components/{picker-internal/test/keyboard-entry/picker-internal.e2e.js → picker/test/keyboard-entry/picker.e2e.js} +79 -42
  345. package/dist/collection/components/{picker-column-internal/picker-column-internal.md.css → picker-column/picker-column.css} +96 -83
  346. package/dist/collection/components/picker-column/picker-column.js +514 -335
  347. package/dist/collection/components/{picker-column-internal/test/basic/picker-column-internal.e2e.js → picker-column/test/basic/picker-column.e2e.js} +8 -8
  348. package/dist/collection/components/picker-column/test/disabled/picker-column.e2e.js +91 -0
  349. package/dist/collection/components/picker-column/test/slots/picker-column.e2e.js +39 -0
  350. package/dist/collection/components/picker-column-option/picker-column-option.ios.css +87 -0
  351. package/dist/collection/components/picker-column-option/picker-column-option.js +173 -0
  352. package/dist/collection/components/{picker-column-internal/picker-column-internal.ios.css → picker-column-option/picker-column-option.md.css} +6 -53
  353. package/dist/collection/components/picker-column-option/test/a11y/picker-column-option.e2e.js +18 -0
  354. package/dist/collection/components/picker-column-option/test/basic/picker-column-option.e2e.js +37 -0
  355. package/dist/collection/components/picker-column-option/test/picker-column-option.spec.js +29 -0
  356. package/dist/collection/components/{picker-internal/picker-internal.ios.css → picker-legacy/picker.ios.css} +155 -117
  357. package/dist/collection/components/picker-legacy/picker.js +821 -0
  358. package/dist/collection/components/{picker-internal/picker-internal.md.css → picker-legacy/picker.md.css} +144 -115
  359. package/dist/collection/components/picker-legacy/test/basic/picker.e2e.js +25 -0
  360. package/dist/collection/components/{picker → picker-legacy}/test/is-open/picker.e2e.js +4 -4
  361. package/dist/collection/components/{picker → picker-legacy}/test/picker-id.spec.js +5 -5
  362. package/dist/collection/components/{picker → picker-legacy}/test/trigger/picker.e2e.js +1 -1
  363. package/dist/collection/components/{picker-column → picker-legacy-column}/picker-column.ios.css +2 -26
  364. package/dist/collection/components/picker-legacy-column/picker-column.js +419 -0
  365. package/dist/collection/components/{picker-column → picker-legacy-column}/picker-column.md.css +3 -27
  366. package/dist/collection/components/{picker-column → picker-legacy-column}/test/picker-column-aria.spec.js +3 -3
  367. package/dist/collection/components/{picker-column → picker-legacy-column}/test/picker-column-dynamic.spec.js +2 -2
  368. package/dist/collection/components/{picker-column → picker-legacy-column}/test/picker-column.spec.js +2 -2
  369. package/dist/collection/components/{picker-column → picker-legacy-column}/test/standalone/picker-column.e2e.js +3 -3
  370. package/dist/collection/components/popover/popover.ios.css +3 -27
  371. package/dist/collection/components/popover/popover.js +5 -4
  372. package/dist/collection/components/progress-bar/progress-bar.ios.css +17 -11
  373. package/dist/collection/components/progress-bar/progress-bar.js +4 -1
  374. package/dist/collection/components/progress-bar/progress-bar.md.css +8 -10
  375. package/dist/collection/components/progress-bar/test/a11y/progress-bar.e2e.js +24 -0
  376. package/dist/collection/components/radio/radio.ios.css +10 -101
  377. package/dist/collection/components/radio/radio.js +5 -119
  378. package/dist/collection/components/radio/radio.md.css +8 -105
  379. package/dist/collection/components/radio/test/a11y/radio.e2e.js +114 -81
  380. package/dist/collection/components/radio-group/radio-group.js +1 -1
  381. package/dist/collection/components/range/range.ios.css +12 -90
  382. package/dist/collection/components/range/range.js +30 -123
  383. package/dist/collection/components/range/range.md.css +22 -152
  384. package/dist/collection/components/range/test/a11y/range.e2e.js +20 -10
  385. package/dist/collection/components/range/test/range-events.e2e.js +1 -1
  386. package/dist/collection/components/range/test/range.spec.js +0 -12
  387. package/dist/collection/components/refresher/refresher.ios.css +4 -27
  388. package/dist/collection/components/refresher/refresher.js +1 -1
  389. package/dist/collection/components/refresher/refresher.md.css +7 -30
  390. package/dist/collection/components/refresher/test/a11y/refresher.e2e.js +26 -0
  391. package/dist/collection/components/refresher-content/refresher-content.js +1 -1
  392. package/dist/collection/components/reorder/reorder.js +1 -1
  393. package/dist/collection/components/reorder-group/reorder-group.js +1 -1
  394. package/dist/collection/components/ripple-effect/ripple-effect.js +1 -1
  395. package/dist/collection/components/router-link/router-link.css +1 -1
  396. package/dist/collection/components/router-link/router-link.js +2 -2
  397. package/dist/collection/components/router-link/test/a11y/router-link.e2e.js +23 -0
  398. package/dist/collection/components/router-outlet/router-outlet.js +1 -1
  399. package/dist/collection/components/row/row.js +1 -1
  400. package/dist/collection/components/searchbar/searchbar.ios.css +11 -59
  401. package/dist/collection/components/searchbar/searchbar.js +4 -4
  402. package/dist/collection/components/searchbar/searchbar.md.css +10 -82
  403. package/dist/collection/components/segment/segment.js +2 -2
  404. package/dist/collection/components/segment/test/a11y/segment.e2e.js +23 -0
  405. package/dist/collection/components/segment-button/segment-button.ios.css +3 -3
  406. package/dist/collection/components/segment-button/segment-button.js +3 -3
  407. package/dist/collection/components/segment-button/segment-button.md.css +2 -2
  408. package/dist/collection/components/select/select.ios.css +10 -81
  409. package/dist/collection/components/select/select.js +64 -173
  410. package/dist/collection/components/select/select.md.css +38 -169
  411. package/dist/collection/components/select/test/a11y/select.e2e.js +68 -4
  412. package/dist/collection/components/select-option/select-option.js +1 -1
  413. package/dist/collection/components/select-popover/select-popover.js +1 -1
  414. package/dist/collection/components/select-popover/select-popover.md.css +4 -4
  415. package/dist/collection/components/select-popover/test/a11y/select-popover.e2e.js +32 -0
  416. package/dist/collection/components/skeleton-text/skeleton-text.js +2 -2
  417. package/dist/collection/components/spinner/spinner.js +1 -1
  418. package/dist/collection/components/split-pane/split-pane.ios.css +3 -55
  419. package/dist/collection/components/split-pane/split-pane.js +48 -14
  420. package/dist/collection/components/split-pane/split-pane.md.css +3 -55
  421. package/dist/collection/components/split-pane/test/wrapped-menu/split-pane.e2e.js +41 -0
  422. package/dist/collection/components/tab/tab.js +2 -2
  423. package/dist/collection/components/tab-bar/tab-bar.ios.css +4 -4
  424. package/dist/collection/components/tab-bar/tab-bar.js +2 -2
  425. package/dist/collection/components/tab-bar/tab-bar.md.css +3 -3
  426. package/dist/collection/components/tab-button/tab-button.ios.css +16 -94
  427. package/dist/collection/components/tab-button/tab-button.js +2 -2
  428. package/dist/collection/components/tab-button/tab-button.md.css +10 -93
  429. package/dist/collection/components/tabs/tabs.js +1 -1
  430. package/dist/collection/components/text/text.js +2 -2
  431. package/dist/collection/components/textarea/test/a11y/textarea.e2e.js +41 -3
  432. package/dist/collection/components/textarea/test/item/textarea.e2e.js +21 -0
  433. package/dist/collection/components/textarea/textarea.ios.css +13 -103
  434. package/dist/collection/components/textarea/textarea.js +5 -84
  435. package/dist/collection/components/textarea/textarea.md.css +37 -226
  436. package/dist/collection/components/thumbnail/thumbnail.js +1 -1
  437. package/dist/collection/components/title/title.ios.css +2 -21
  438. package/dist/collection/components/title/title.js +2 -2
  439. package/dist/collection/components/toast/test/a11y/toast.e2e.js +89 -24
  440. package/dist/collection/components/toast/toast.ios.css +8 -55
  441. package/dist/collection/components/toast/toast.js +9 -3
  442. package/dist/collection/components/toast/toast.md.css +10 -57
  443. package/dist/collection/components/toggle/test/a11y/toggle.e2e.js +8 -2
  444. package/dist/collection/components/toggle/toggle.ios.css +11 -90
  445. package/dist/collection/components/toggle/toggle.js +5 -101
  446. package/dist/collection/components/toggle/toggle.md.css +6 -91
  447. package/dist/collection/components/toolbar/toolbar.ios.css +2 -2
  448. package/dist/collection/components/toolbar/toolbar.js +2 -2
  449. package/dist/collection/components/toolbar/toolbar.md.css +1 -1
  450. package/dist/collection/css/test/a11y/typography.e2e.js +18 -0
  451. package/dist/collection/themes/test/colors/theme.e2e.js +170 -0
  452. package/dist/collection/utils/focus-trap.js +78 -0
  453. package/dist/collection/utils/gesture/button-active.js +1 -1
  454. package/dist/collection/utils/gesture/gesture-controller.js +1 -1
  455. package/dist/collection/utils/input-shims/input-shims.js +8 -1
  456. package/dist/collection/utils/native/status-bar.js +0 -11
  457. package/dist/collection/utils/overlays.js +14 -38
  458. package/dist/collection/utils/test/aria.spec.js +2 -1
  459. package/dist/collection/utils/test/overlays/overlays-scroll-blocking.spec.js +65 -0
  460. package/dist/collection/utils/test/playwright/generator.js +1 -0
  461. package/dist/collection/utils/test/playwright/page/utils/set-content.js +1 -1
  462. package/dist/docs.json +569 -331
  463. package/dist/esm/{animation-6a0c5338.js → animation-a4acf150.js} +1 -1
  464. package/dist/esm/{app-globals-5cf6195b.js → app-globals-cfb6787b.js} +1 -1
  465. package/dist/esm/{button-active-47ac8092.js → button-active-454e5c57.js} +3 -3
  466. package/dist/esm/{data-0f3ab200.js → data-691286f1.js} +1 -1
  467. package/dist/esm/{framework-delegate-ed4ba327.js → framework-delegate-1eb3236c.js} +1 -1
  468. package/dist/esm/{gesture-controller-1bf57181.js → gesture-controller-314a54f6.js} +1 -1
  469. package/dist/esm/{hardware-back-button-b410a047.js → hardware-back-button-3a14f99e.js} +2 -2
  470. package/dist/esm/{helpers-be245865.js → helpers-ae74b3c9.js} +1 -1
  471. package/dist/esm/{index-e1b622e3.js → index-03086279.js} +4 -4
  472. package/dist/esm/{index-020f5464.js → index-1f563746.js} +1 -1
  473. package/dist/esm/{index-2cf77112.js → index-39782642.js} +2 -2
  474. package/dist/esm/{index-348ed70a.js → index-5847f4a9.js} +4 -4
  475. package/dist/esm/{index-f3946ac1.js → index-66871a1d.js} +1 -1
  476. package/dist/esm/{index-4c30cddd.js → index-9b6d6df3.js} +2 -2
  477. package/dist/esm/index.js +13 -13
  478. package/dist/esm/{input-shims-5329bbe8.js → input-shims-56c1f603.js} +10 -3
  479. package/dist/esm/{input.utils-a445f677.js → input.utils-482fc893.js} +1 -1
  480. package/dist/esm/ion-accordion_2.entry.js +4 -4
  481. package/dist/esm/ion-action-sheet.entry.js +14 -14
  482. package/dist/esm/ion-alert.entry.js +12 -12
  483. package/dist/esm/ion-app_8.entry.js +28 -29
  484. package/dist/esm/ion-avatar_3.entry.js +5 -5
  485. package/dist/esm/ion-back-button.entry.js +4 -4
  486. package/dist/esm/ion-backdrop.entry.js +3 -15
  487. package/dist/esm/ion-breadcrumb_2.entry.js +5 -5
  488. package/dist/esm/ion-button_2.entry.js +5 -5
  489. package/dist/esm/ion-card_5.entry.js +8 -8
  490. package/dist/esm/ion-checkbox.entry.js +9 -77
  491. package/dist/esm/ion-chip.entry.js +4 -4
  492. package/dist/esm/ion-col_3.entry.js +7 -7
  493. package/dist/esm/ion-datetime-button.entry.js +9 -9
  494. package/dist/esm/ion-datetime_3.entry.js +55 -109
  495. package/dist/esm/ion-fab_3.entry.js +12 -12
  496. package/dist/esm/ion-img.entry.js +4 -4
  497. package/dist/esm/ion-infinite-scroll_2.entry.js +9 -9
  498. package/dist/esm/ion-input.entry.js +12 -92
  499. package/dist/esm/ion-item-option_3.entry.js +13 -13
  500. package/dist/esm/ion-item_8.entry.js +45 -30
  501. package/dist/esm/ion-loading.entry.js +12 -11
  502. package/dist/esm/ion-menu_3.entry.js +41 -57
  503. package/dist/esm/ion-modal.entry.js +53 -38
  504. package/dist/esm/ion-nav_2.entry.js +13 -10
  505. package/dist/esm/ion-picker-column-option.entry.js +102 -0
  506. package/dist/esm/{ion-picker-column-internal.entry.js → ion-picker-column.entry.js} +124 -93
  507. package/dist/esm/{ion-picker-internal.entry.js → ion-picker.entry.js} +32 -25
  508. package/dist/esm/ion-popover.entry.js +13 -12
  509. package/dist/esm/ion-progress-bar.entry.js +9 -6
  510. package/dist/esm/ion-radio_2.entry.js +10 -79
  511. package/dist/esm/ion-range.entry.js +38 -91
  512. package/dist/esm/ion-refresher_2.entry.js +12 -12
  513. package/dist/esm/ion-reorder_2.entry.js +7 -7
  514. package/dist/esm/ion-ripple-effect.entry.js +3 -3
  515. package/dist/esm/ion-route_4.entry.js +6 -6
  516. package/dist/esm/ion-searchbar.entry.js +9 -9
  517. package/dist/esm/ion-segment_2.entry.js +11 -11
  518. package/dist/esm/ion-select_3.entry.js +76 -167
  519. package/dist/esm/ion-spinner.entry.js +3 -3
  520. package/dist/esm/ion-split-pane.entry.js +28 -18
  521. package/dist/esm/ion-tab-bar_2.entry.js +11 -11
  522. package/dist/esm/ion-tab_2.entry.js +6 -6
  523. package/dist/esm/ion-text.entry.js +4 -4
  524. package/dist/esm/ion-textarea.entry.js +12 -72
  525. package/dist/esm/ion-toast.entry.js +21 -15
  526. package/dist/esm/ion-toggle.entry.js +10 -66
  527. package/dist/esm/{ionic-global-ad9a1810.js → ionic-global-c976d684.js} +1 -1
  528. package/dist/esm/ionic.js +6 -6
  529. package/dist/esm/{ios.transition-7459f819.js → ios.transition-a097dbf5.js} +4 -4
  530. package/dist/esm/loader.js +5 -5
  531. package/dist/esm/{md.transition-b8224313.js → md.transition-b4170ef7.js} +4 -4
  532. package/dist/esm/{notch-controller-6bd3e0f9.js → notch-controller-18bf9f76.js} +1 -1
  533. package/dist/esm/{overlays-19b26885.js → overlays-4ba3b255.js} +93 -43
  534. package/dist/esm/{status-tap-b41ece3c.js → status-tap-7a12f017.js} +3 -3
  535. package/dist/esm/{swipe-back-c6d0e5d9.js → swipe-back-ae14449a.js} +3 -3
  536. package/dist/esm-es5/{animation-6a0c5338.js → animation-a4acf150.js} +1 -1
  537. package/dist/esm-es5/app-globals-cfb6787b.js +4 -0
  538. package/dist/esm-es5/button-active-454e5c57.js +4 -0
  539. package/dist/esm-es5/{framework-delegate-ed4ba327.js → framework-delegate-1eb3236c.js} +1 -1
  540. package/dist/esm-es5/{gesture-controller-1bf57181.js → gesture-controller-314a54f6.js} +1 -1
  541. package/dist/esm-es5/{hardware-back-button-b410a047.js → hardware-back-button-3a14f99e.js} +1 -1
  542. package/dist/esm-es5/{helpers-be245865.js → helpers-ae74b3c9.js} +1 -1
  543. package/dist/esm-es5/{index-e1b622e3.js → index-03086279.js} +1 -1
  544. package/dist/esm-es5/{index-020f5464.js → index-1f563746.js} +1 -1
  545. package/dist/esm-es5/{index-2cf77112.js → index-39782642.js} +1 -1
  546. package/dist/esm-es5/{index-348ed70a.js → index-5847f4a9.js} +1 -1
  547. package/dist/esm-es5/{index-f3946ac1.js → index-66871a1d.js} +1 -1
  548. package/dist/esm-es5/{index-4c30cddd.js → index-9b6d6df3.js} +1 -1
  549. package/dist/esm-es5/index.js +1 -1
  550. package/dist/esm-es5/{input-shims-5329bbe8.js → input-shims-56c1f603.js} +1 -1
  551. package/dist/esm-es5/{input.utils-a445f677.js → input.utils-482fc893.js} +1 -1
  552. package/dist/esm-es5/ion-accordion_2.entry.js +1 -1
  553. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  554. package/dist/esm-es5/ion-alert.entry.js +1 -1
  555. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  556. package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
  557. package/dist/esm-es5/ion-back-button.entry.js +1 -1
  558. package/dist/esm-es5/ion-backdrop.entry.js +1 -1
  559. package/dist/esm-es5/ion-breadcrumb_2.entry.js +1 -1
  560. package/dist/esm-es5/ion-button_2.entry.js +1 -1
  561. package/dist/esm-es5/ion-card_5.entry.js +1 -1
  562. package/dist/esm-es5/ion-checkbox.entry.js +1 -1
  563. package/dist/esm-es5/ion-chip.entry.js +1 -1
  564. package/dist/esm-es5/ion-col_3.entry.js +1 -1
  565. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  566. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  567. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  568. package/dist/esm-es5/ion-img.entry.js +1 -1
  569. package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
  570. package/dist/esm-es5/ion-input.entry.js +1 -1
  571. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  572. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  573. package/dist/esm-es5/ion-loading.entry.js +1 -1
  574. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  575. package/dist/esm-es5/ion-modal.entry.js +1 -1
  576. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  577. package/dist/esm-es5/ion-picker-column-option.entry.js +4 -0
  578. package/dist/esm-es5/ion-picker-column.entry.js +4 -0
  579. package/dist/esm-es5/ion-picker.entry.js +4 -0
  580. package/dist/esm-es5/ion-popover.entry.js +1 -1
  581. package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
  582. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  583. package/dist/esm-es5/ion-range.entry.js +1 -1
  584. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  585. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  586. package/dist/esm-es5/ion-ripple-effect.entry.js +1 -1
  587. package/dist/esm-es5/ion-route_4.entry.js +1 -1
  588. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  589. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  590. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  591. package/dist/esm-es5/ion-spinner.entry.js +1 -1
  592. package/dist/esm-es5/ion-split-pane.entry.js +1 -1
  593. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  594. package/dist/esm-es5/ion-tab_2.entry.js +1 -1
  595. package/dist/esm-es5/ion-text.entry.js +1 -1
  596. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  597. package/dist/esm-es5/ion-toast.entry.js +1 -1
  598. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  599. package/dist/esm-es5/{ionic-global-ad9a1810.js → ionic-global-c976d684.js} +1 -1
  600. package/dist/esm-es5/ionic.js +1 -1
  601. package/dist/esm-es5/{ios.transition-7459f819.js → ios.transition-a097dbf5.js} +1 -1
  602. package/dist/esm-es5/loader.js +1 -1
  603. package/dist/esm-es5/md.transition-b4170ef7.js +4 -0
  604. package/dist/esm-es5/{notch-controller-6bd3e0f9.js → notch-controller-18bf9f76.js} +1 -1
  605. package/dist/esm-es5/overlays-4ba3b255.js +4 -0
  606. package/dist/esm-es5/{status-tap-b41ece3c.js → status-tap-7a12f017.js} +1 -1
  607. package/dist/esm-es5/{swipe-back-c6d0e5d9.js → swipe-back-ae14449a.js} +1 -1
  608. package/dist/html.html-data.json +152 -37
  609. package/dist/ionic/index.esm.js +1 -1
  610. package/dist/ionic/ionic.esm.js +1 -1
  611. package/dist/ionic/ionic.js +1 -1
  612. package/dist/ionic/p-03f63663.system.js +4 -0
  613. package/dist/ionic/p-060fdc03.entry.js +4 -0
  614. package/dist/ionic/{p-1bc9b5f5.system.js → p-069388dd.system.js} +1 -1
  615. package/dist/ionic/p-06fccad7.entry.js +4 -0
  616. package/dist/ionic/p-09872ec8.system.entry.js +4 -0
  617. package/dist/ionic/p-0ca35c1d.system.entry.js +4 -0
  618. package/dist/ionic/p-134d4936.system.js +4 -0
  619. package/dist/ionic/{p-779aede8.js → p-15708968.js} +1 -1
  620. package/dist/ionic/p-1600d68c.system.entry.js +4 -0
  621. package/dist/ionic/p-19e79fe8.entry.js +4 -0
  622. package/dist/ionic/{p-6afef6c1.system.js → p-19f6ac6c.system.js} +1 -1
  623. package/dist/ionic/{p-ebc86ce9.system.entry.js → p-1a5ed3fe.system.entry.js} +1 -1
  624. package/dist/ionic/p-1a68de09.entry.js +4 -0
  625. package/dist/ionic/p-1bca443b.system.entry.js +4 -0
  626. package/dist/ionic/p-1c436e95.system.entry.js +4 -0
  627. package/dist/ionic/{p-657ccdd6.entry.js → p-1ce172db.entry.js} +1 -1
  628. package/dist/ionic/p-1e0a18a1.system.entry.js +4 -0
  629. package/dist/ionic/p-1ea88de9.system.js +4 -0
  630. package/dist/ionic/p-1ed99eba.system.entry.js +4 -0
  631. package/dist/ionic/{p-de55ec45.js → p-1fa738c4.js} +1 -1
  632. package/dist/ionic/{p-c7c8429a.system.js → p-20d469d0.system.js} +1 -1
  633. package/dist/ionic/p-22d2a891.js +4 -0
  634. package/dist/ionic/p-239262e4.system.entry.js +4 -0
  635. package/dist/ionic/p-25850474.entry.js +4 -0
  636. package/dist/ionic/{p-ceceac26.js → p-27594fc2.js} +1 -1
  637. package/dist/ionic/{p-288649db.system.entry.js → p-2b3e0d99.system.entry.js} +1 -1
  638. package/dist/ionic/p-300b2cf1.entry.js +4 -0
  639. package/dist/ionic/{p-6525a8cd.system.js → p-30892e0c.system.js} +1 -1
  640. package/dist/ionic/p-32bd7ed7.entry.js +4 -0
  641. package/dist/ionic/{p-2c86025e.system.js → p-3410a9cb.system.js} +1 -1
  642. package/dist/ionic/{p-717e2526.system.entry.js → p-3bac30bf.system.entry.js} +2 -2
  643. package/dist/ionic/{p-31b2326e.system.js → p-3e1e14d9.system.js} +1 -1
  644. package/dist/ionic/p-41970e75.entry.js +4 -0
  645. package/dist/ionic/p-43322b14.js +4 -0
  646. package/dist/ionic/p-4523be60.entry.js +4 -0
  647. package/dist/ionic/p-454b36f7.system.entry.js +4 -0
  648. package/dist/ionic/p-466bdeae.entry.js +4 -0
  649. package/dist/ionic/p-4825e380.entry.js +4 -0
  650. package/dist/ionic/{p-62b7320a.system.js → p-4a8f173c.system.js} +1 -1
  651. package/dist/ionic/p-4ad02639.entry.js +4 -0
  652. package/dist/ionic/p-4c2cac66.entry.js +4 -0
  653. package/dist/ionic/{p-6e23d039.entry.js → p-5a055df4.entry.js} +1 -1
  654. package/dist/ionic/{p-5d7e32ce.js → p-5aa60929.js} +1 -1
  655. package/dist/ionic/p-5afb6e48.entry.js +4 -0
  656. package/dist/ionic/p-5c3991e3.system.entry.js +4 -0
  657. package/dist/ionic/p-602494c6.entry.js +4 -0
  658. package/dist/ionic/{p-ed7a529f.js → p-60efe117.js} +1 -1
  659. package/dist/ionic/p-62f15daf.system.entry.js +4 -0
  660. package/dist/ionic/{p-05253db9.js → p-65d3f0e9.js} +1 -1
  661. package/dist/ionic/p-6657681b.system.entry.js +4 -0
  662. package/dist/ionic/p-6d95943d.system.js +4 -0
  663. package/dist/ionic/p-6e1fa025.js +4 -0
  664. package/dist/ionic/{p-84b85535.entry.js → p-6e5eeb35.entry.js} +1 -1
  665. package/dist/ionic/p-6ef5f4da.entry.js +4 -0
  666. package/dist/ionic/{p-e1c52dc6.entry.js → p-6f6d56f1.entry.js} +1 -1
  667. package/dist/ionic/{p-a6c0a380.js → p-6fd26009.js} +1 -1
  668. package/dist/ionic/p-70218e28.system.entry.js +4 -0
  669. package/dist/ionic/p-72bc2484.system.entry.js +4 -0
  670. package/dist/ionic/p-7541ca9f.system.entry.js +4 -0
  671. package/dist/ionic/{p-56ee6d9a.js → p-760dbd5e.js} +1 -1
  672. package/dist/ionic/p-7665bbbc.system.entry.js +4 -0
  673. package/dist/ionic/{p-822730c4.entry.js → p-77982637.entry.js} +1 -1
  674. package/dist/ionic/{p-644d03d7.system.entry.js → p-780ff3b5.system.entry.js} +1 -1
  675. package/dist/ionic/p-7a3fa32c.entry.js +4 -0
  676. package/dist/ionic/{p-88e9052d.entry.js → p-7b44b443.entry.js} +1 -1
  677. package/dist/ionic/p-7b795aee.system.entry.js +4 -0
  678. package/dist/ionic/p-7cc01684.js +4 -0
  679. package/dist/ionic/{p-97ca0cb9.system.js → p-816476b0.system.js} +1 -1
  680. package/dist/ionic/p-81869a97.system.entry.js +4 -0
  681. package/dist/ionic/p-82d459c1.js +4 -0
  682. package/dist/ionic/{p-a85d9047.system.entry.js → p-82f5375e.system.entry.js} +1 -1
  683. package/dist/ionic/p-842777af.js +4 -0
  684. package/dist/ionic/p-85464e28.system.entry.js +4 -0
  685. package/dist/ionic/{p-d425b1de.entry.js → p-85cb4733.entry.js} +1 -1
  686. package/dist/ionic/{p-4b8a620f.system.entry.js → p-874510e9.system.entry.js} +1 -1
  687. package/dist/ionic/{p-bd313b73.system.js → p-8a50f8d6.system.js} +1 -1
  688. package/dist/ionic/{p-1b3ffb2f.js → p-8ab308e9.js} +1 -1
  689. package/dist/ionic/{p-baf8eeac.system.entry.js → p-8aeed464.system.entry.js} +1 -1
  690. package/dist/ionic/p-8ba5912c.entry.js +4 -0
  691. package/dist/ionic/{p-2c118b1e.js → p-8d4d902b.js} +1 -1
  692. package/dist/ionic/p-8d50220b.system.js +4 -0
  693. package/dist/ionic/{p-72fa96bf.system.js → p-8d602214.system.js} +1 -1
  694. package/dist/ionic/p-8e3ee444.system.entry.js +4 -0
  695. package/dist/ionic/{p-ce1c0a0e.system.entry.js → p-8e83b7f1.system.entry.js} +2 -2
  696. package/dist/ionic/{p-f5d2dc9b.js → p-8ededb41.js} +1 -1
  697. package/dist/ionic/p-91a72ad6.system.entry.js +4 -0
  698. package/dist/ionic/p-9382ebab.entry.js +4 -0
  699. package/dist/ionic/p-942c19cb.entry.js +4 -0
  700. package/dist/ionic/p-95e14c7b.system.js +4 -0
  701. package/dist/ionic/p-96391c0e.entry.js +4 -0
  702. package/dist/ionic/{p-2c4bfe1c.entry.js → p-97135baa.entry.js} +1 -1
  703. package/dist/ionic/{p-bb3615f7.js → p-9b97df10.js} +1 -1
  704. package/dist/ionic/{p-a1036ce7.js → p-9d6f351e.js} +1 -1
  705. package/dist/ionic/{p-5fc8d5ef.system.js → p-9e3b3f15.system.js} +1 -1
  706. package/dist/ionic/{p-f02c41af.system.js → p-a06af32c.system.js} +1 -1
  707. package/dist/ionic/p-a375c9f6.system.entry.js +4 -0
  708. package/dist/ionic/p-a58ec401.js +4 -0
  709. package/dist/ionic/p-a5b7a286.entry.js +4 -0
  710. package/dist/ionic/{p-942a9358.js → p-a6cc38d4.js} +1 -1
  711. package/dist/ionic/{p-125f8cdd.system.js → p-a71dc777.system.js} +1 -1
  712. package/dist/ionic/{p-cbcffe6e.system.js → p-a8cc0027.system.js} +1 -1
  713. package/dist/ionic/{p-18918a24.system.entry.js → p-aaca8dd4.system.entry.js} +1 -1
  714. package/dist/ionic/p-ad2b216a.system.entry.js +4 -0
  715. package/dist/ionic/p-add93c7a.entry.js +4 -0
  716. package/dist/ionic/{p-3079950e.entry.js → p-afcd4f49.entry.js} +1 -1
  717. package/dist/ionic/p-b1a9e85a.system.entry.js +4 -0
  718. package/dist/ionic/p-b4bb9cd0.system.entry.js +4 -0
  719. package/dist/ionic/p-baa409f1.system.entry.js +4 -0
  720. package/dist/ionic/p-bcb58446.entry.js +4 -0
  721. package/dist/ionic/p-c2336a9e.system.entry.js +4 -0
  722. package/dist/ionic/{p-bcd9cad8.system.js → p-c38c5dfc.system.js} +1 -1
  723. package/dist/ionic/{p-337ac0f5.entry.js → p-c3a2e5cc.entry.js} +1 -1
  724. package/dist/ionic/{p-a3df16b9.system.entry.js → p-c5b77291.system.entry.js} +1 -1
  725. package/dist/ionic/{p-12a8643e.js → p-c880c809.js} +1 -1
  726. package/dist/ionic/{p-91f4e611.system.entry.js → p-cb0e4100.system.entry.js} +2 -2
  727. package/dist/ionic/{p-fe320051.system.js → p-cb944b1a.system.js} +1 -1
  728. package/dist/ionic/p-cbc3840e.entry.js +4 -0
  729. package/dist/ionic/p-cd366840.system.entry.js +4 -0
  730. package/dist/ionic/p-cf852615.system.entry.js +4 -0
  731. package/dist/ionic/{p-9998cb62.system.entry.js → p-d4d0538c.system.entry.js} +1 -1
  732. package/dist/ionic/{p-1a680496.entry.js → p-d504bc71.entry.js} +1 -1
  733. package/dist/ionic/{p-86813176.system.entry.js → p-da83d833.system.entry.js} +1 -1
  734. package/dist/ionic/p-dcfc297d.system.entry.js +4 -0
  735. package/dist/ionic/p-ddc4e717.entry.js +4 -0
  736. package/dist/ionic/p-ded27993.entry.js +4 -0
  737. package/dist/ionic/p-e15eda82.system.js +4 -0
  738. package/dist/ionic/{p-b727af6a.entry.js → p-e38b3c29.entry.js} +1 -1
  739. package/dist/ionic/p-e470466e.entry.js +4 -0
  740. package/dist/ionic/p-e64277c4.entry.js +4 -0
  741. package/dist/ionic/{p-abcedc15.system.entry.js → p-ebe0be94.system.entry.js} +1 -1
  742. package/dist/ionic/{p-89ca4c4b.system.js → p-eec92f77.system.js} +1 -1
  743. package/dist/ionic/{p-cb9812f7.entry.js → p-ef99a759.entry.js} +1 -1
  744. package/dist/ionic/{p-7670acd8.entry.js → p-f16bfd53.entry.js} +1 -1
  745. package/dist/ionic/{p-b6279412.entry.js → p-f3d6085c.entry.js} +1 -1
  746. package/dist/ionic/p-f6a6b7ef.system.entry.js +4 -0
  747. package/dist/ionic/p-f71082f7.entry.js +4 -0
  748. package/dist/ionic/p-f7ed6a44.system.entry.js +4 -0
  749. package/dist/ionic/p-fc5ddbf6.entry.js +4 -0
  750. package/dist/ionic/p-fd94dd20.system.entry.js +4 -0
  751. package/dist/ionic/p-feb66f6f.entry.js +4 -0
  752. package/dist/types/components/action-sheet/action-sheet-interface.d.ts +8 -0
  753. package/dist/types/components/backdrop/backdrop.d.ts +0 -3
  754. package/dist/types/components/checkbox/checkbox.d.ts +1 -24
  755. package/dist/types/components/datetime/datetime.d.ts +0 -1
  756. package/dist/types/components/datetime/utils/data.d.ts +11 -7
  757. package/dist/types/components/input/input.d.ts +0 -26
  758. package/dist/types/components/menu/menu.d.ts +12 -4
  759. package/dist/types/components/modal/utils.d.ts +0 -4
  760. package/dist/types/components/nav/nav.d.ts +4 -1
  761. package/dist/types/components/picker/picker-interfaces.d.ts +8 -0
  762. package/dist/types/components/picker/picker.d.ts +75 -133
  763. package/dist/types/components/picker-column/picker-column-interfaces.d.ts +4 -0
  764. package/dist/types/components/picker-column/picker-column.d.ts +99 -39
  765. package/dist/types/components/picker-column-option/picker-column-option.d.ts +66 -0
  766. package/dist/types/components/picker-legacy/picker.d.ts +158 -0
  767. package/dist/types/components/picker-legacy-column/picker-column.d.ts +46 -0
  768. package/dist/types/components/radio/radio.d.ts +1 -24
  769. package/dist/types/components/range/range.d.ts +1 -21
  770. package/dist/types/components/select/select.d.ts +0 -15
  771. package/dist/types/components/split-pane/split-pane.d.ts +14 -2
  772. package/dist/types/components/textarea/textarea.d.ts +0 -17
  773. package/dist/types/components/toast/toast-interface.d.ts +0 -4
  774. package/dist/types/components/toggle/toggle.d.ts +1 -21
  775. package/dist/types/components.d.ts +160 -195
  776. package/dist/types/interface.d.ts +1 -1
  777. package/dist/types/utils/config.d.ts +2 -2
  778. package/dist/types/utils/focus-trap.d.ts +35 -0
  779. package/dist/types/utils/gesture/gesture-controller.d.ts +1 -0
  780. package/dist/types/utils/native/status-bar.d.ts +0 -1
  781. package/dist/types/utils/overlays.d.ts +5 -8
  782. package/dist/types/utils/test/playwright/generator.d.ts +3 -1
  783. package/hydrate/index.js +2044 -2393
  784. package/package.json +1 -2
  785. package/components/form-controller.js +0 -64
  786. package/components/ion-picker-column-internal.d.ts +0 -11
  787. package/components/ion-picker-column-internal.js +0 -9
  788. package/components/ion-picker-internal.js +0 -9
  789. package/components/picker-column-internal.js +0 -392
  790. package/dist/cjs/form-controller-c83330c0.js +0 -66
  791. package/dist/collection/components/checkbox/test/legacy/basic/checkbox.e2e.js +0 -68
  792. package/dist/collection/components/checkbox/test/legacy/indeterminate/checkbox.e2e.js +0 -14
  793. package/dist/collection/components/input/test/item/input.spec.js +0 -24
  794. package/dist/collection/components/input/test/legacy/a11y/input.e2e.js +0 -28
  795. package/dist/collection/components/input/test/legacy/basic/input.e2e.js +0 -181
  796. package/dist/collection/components/input/test/legacy/clear-on-edit/input.e2e.js +0 -55
  797. package/dist/collection/components/input/test/legacy/input-events.e2e.js +0 -71
  798. package/dist/collection/components/input/test/legacy/masking/input.e2e.js +0 -26
  799. package/dist/collection/components/input/test/legacy/spec/input.e2e.js +0 -16
  800. package/dist/collection/components/item/test/counter/item.e2e.js +0 -49
  801. package/dist/collection/components/item/test/highlight/item.e2e.js +0 -14
  802. package/dist/collection/components/item/test/legacy/alignment/item.e2e.js +0 -14
  803. package/dist/collection/components/item/test/legacy/fill/item.e2e.js +0 -14
  804. package/dist/collection/components/item/test/legacy/form/item.e2e.js +0 -14
  805. package/dist/collection/components/modal/test/a11y/modal.spec.js +0 -22
  806. package/dist/collection/components/picker-column-internal/picker-column-internal.js +0 -566
  807. package/dist/collection/components/picker-column-internal/test/disabled/picker-column-internal.e2e.js +0 -162
  808. package/dist/collection/components/picker-internal/picker-internal.js +0 -560
  809. package/dist/collection/components/picker-internal/test/basic/picker-internal.e2e.js +0 -118
  810. package/dist/collection/components/radio/test/legacy/a11y/radio.e2e.js +0 -53
  811. package/dist/collection/components/radio/test/legacy/basic/radio.e2e.js +0 -127
  812. package/dist/collection/components/radio-group/test/legacy/basic/radio-group.e2e.js +0 -122
  813. package/dist/collection/components/radio-group/test/legacy/form/radio-group.e2e.js +0 -30
  814. package/dist/collection/components/radio-group/test/legacy/search/radio-group.e2e.js +0 -38
  815. package/dist/collection/components/range/test/legacy/a11y/range.e2e.js +0 -49
  816. package/dist/collection/components/range/test/legacy/active-bar-start/range.e2e.js +0 -14
  817. package/dist/collection/components/range/test/legacy/basic/range.e2e.js +0 -75
  818. package/dist/collection/components/range/test/legacy/range-events.e2e.js +0 -90
  819. package/dist/collection/components/range/test/legacy/scroll-target/range.e2e.js +0 -32
  820. package/dist/collection/components/select/test/legacy/async/select.e2e.js +0 -19
  821. package/dist/collection/components/select/test/legacy/basic/select.e2e.js +0 -145
  822. package/dist/collection/components/select/test/legacy/compare-with/select.e2e.js +0 -67
  823. package/dist/collection/components/select/test/legacy/custom/custom.e2e.js +0 -13
  824. package/dist/collection/components/select/test/legacy/single-value/select.e2e.js +0 -16
  825. package/dist/collection/components/select/test/legacy/spec/select.e2e.js +0 -14
  826. package/dist/collection/components/select/test/legacy/standalone/select.e2e.js +0 -18
  827. package/dist/collection/components/select/test/legacy/wrapping/select.e2e.js +0 -39
  828. package/dist/collection/components/textarea/test/legacy/a11y/textarea.e2e.js +0 -31
  829. package/dist/collection/components/textarea/test/legacy/autogrow/textarea.e2e.js +0 -58
  830. package/dist/collection/components/textarea/test/legacy/basic/textarea.e2e.js +0 -43
  831. package/dist/collection/components/textarea/test/legacy/clear-on-edit/textarea.e2e.js +0 -25
  832. package/dist/collection/components/toggle/test/legacy/basic/toggle.e2e.js +0 -83
  833. package/dist/collection/components/toggle/test/legacy/enable-on-off-labels/toggle.e2e.js +0 -37
  834. package/dist/collection/components/toggle/test/legacy/sizes/power-outline.svg +0 -1
  835. package/dist/collection/components/toggle/test/legacy/sizes/toggle.e2e.js +0 -14
  836. package/dist/esm/form-controller-21dd62b1.js +0 -64
  837. package/dist/esm-es5/app-globals-5cf6195b.js +0 -4
  838. package/dist/esm-es5/button-active-47ac8092.js +0 -4
  839. package/dist/esm-es5/form-controller-21dd62b1.js +0 -4
  840. package/dist/esm-es5/ion-picker-column-internal.entry.js +0 -4
  841. package/dist/esm-es5/ion-picker-internal.entry.js +0 -4
  842. package/dist/esm-es5/md.transition-b8224313.js +0 -4
  843. package/dist/esm-es5/overlays-19b26885.js +0 -4
  844. package/dist/ionic/p-021f9d72.entry.js +0 -4
  845. package/dist/ionic/p-02542247.system.entry.js +0 -4
  846. package/dist/ionic/p-02ad4bbe.js +0 -4
  847. package/dist/ionic/p-079da3df.entry.js +0 -4
  848. package/dist/ionic/p-0b34d3a7.system.js +0 -4
  849. package/dist/ionic/p-12527c4b.entry.js +0 -4
  850. package/dist/ionic/p-15a40a0b.system.entry.js +0 -4
  851. package/dist/ionic/p-1636923f.system.js +0 -4
  852. package/dist/ionic/p-16a61810.entry.js +0 -4
  853. package/dist/ionic/p-1846513c.js +0 -4
  854. package/dist/ionic/p-1f16d040.entry.js +0 -4
  855. package/dist/ionic/p-1f19958f.system.entry.js +0 -4
  856. package/dist/ionic/p-2178329b.entry.js +0 -4
  857. package/dist/ionic/p-257046d2.system.js +0 -4
  858. package/dist/ionic/p-262024fd.entry.js +0 -4
  859. package/dist/ionic/p-2765a571.system.entry.js +0 -4
  860. package/dist/ionic/p-2ea71956.system.entry.js +0 -4
  861. package/dist/ionic/p-2fd3c3dd.entry.js +0 -4
  862. package/dist/ionic/p-36be3332.js +0 -4
  863. package/dist/ionic/p-437f4d02.system.entry.js +0 -4
  864. package/dist/ionic/p-46bcc2f5.js +0 -4
  865. package/dist/ionic/p-4788693d.entry.js +0 -4
  866. package/dist/ionic/p-479f5926.system.entry.js +0 -4
  867. package/dist/ionic/p-482ea916.system.entry.js +0 -4
  868. package/dist/ionic/p-49f481cc.system.entry.js +0 -4
  869. package/dist/ionic/p-521b3971.entry.js +0 -4
  870. package/dist/ionic/p-5cb5f63d.system.entry.js +0 -4
  871. package/dist/ionic/p-5de920f4.system.entry.js +0 -4
  872. package/dist/ionic/p-6812d37d.js +0 -4
  873. package/dist/ionic/p-6b6ca3f5.system.entry.js +0 -4
  874. package/dist/ionic/p-6c45c617.js +0 -4
  875. package/dist/ionic/p-6f59cdbc.system.entry.js +0 -4
  876. package/dist/ionic/p-70fbf4e2.entry.js +0 -4
  877. package/dist/ionic/p-741a0f0d.system.entry.js +0 -4
  878. package/dist/ionic/p-76b8bcb8.system.entry.js +0 -4
  879. package/dist/ionic/p-7a615a5a.entry.js +0 -4
  880. package/dist/ionic/p-7e16220b.entry.js +0 -4
  881. package/dist/ionic/p-7e838f43.system.entry.js +0 -4
  882. package/dist/ionic/p-7f30ad48.entry.js +0 -4
  883. package/dist/ionic/p-80aed9fb.system.entry.js +0 -4
  884. package/dist/ionic/p-85f66c3c.entry.js +0 -4
  885. package/dist/ionic/p-860e2539.system.entry.js +0 -4
  886. package/dist/ionic/p-8cc34120.entry.js +0 -4
  887. package/dist/ionic/p-8e651c29.entry.js +0 -4
  888. package/dist/ionic/p-9056778e.system.entry.js +0 -4
  889. package/dist/ionic/p-96084f36.entry.js +0 -4
  890. package/dist/ionic/p-973b4db3.entry.js +0 -4
  891. package/dist/ionic/p-98aa0553.entry.js +0 -4
  892. package/dist/ionic/p-9de75bac.system.entry.js +0 -4
  893. package/dist/ionic/p-a02ea777.entry.js +0 -4
  894. package/dist/ionic/p-a1222c24.entry.js +0 -4
  895. package/dist/ionic/p-a4aa6dd2.system.entry.js +0 -4
  896. package/dist/ionic/p-a667dd1f.system.js +0 -4
  897. package/dist/ionic/p-a8459bfb.entry.js +0 -4
  898. package/dist/ionic/p-ae2b3a7a.system.entry.js +0 -4
  899. package/dist/ionic/p-ae828bd9.system.entry.js +0 -4
  900. package/dist/ionic/p-b0aa3806.system.entry.js +0 -4
  901. package/dist/ionic/p-b27bba38.system.entry.js +0 -4
  902. package/dist/ionic/p-b4d2f43c.system.js +0 -4
  903. package/dist/ionic/p-b58686e0.entry.js +0 -4
  904. package/dist/ionic/p-ba0fbecc.entry.js +0 -4
  905. package/dist/ionic/p-bdca4784.js +0 -4
  906. package/dist/ionic/p-c1a871ff.system.entry.js +0 -4
  907. package/dist/ionic/p-c1c7309e.entry.js +0 -4
  908. package/dist/ionic/p-c7288e78.system.entry.js +0 -4
  909. package/dist/ionic/p-cb3065b8.entry.js +0 -4
  910. package/dist/ionic/p-cfb4d7e0.js +0 -4
  911. package/dist/ionic/p-d143fefa.system.entry.js +0 -4
  912. package/dist/ionic/p-d6c6541b.system.entry.js +0 -4
  913. package/dist/ionic/p-df504a37.system.js +0 -4
  914. package/dist/ionic/p-dff97cfa.entry.js +0 -4
  915. package/dist/ionic/p-e4e74b5f.system.entry.js +0 -4
  916. package/dist/ionic/p-e626800f.system.entry.js +0 -4
  917. package/dist/ionic/p-e94c1402.entry.js +0 -4
  918. package/dist/ionic/p-ebc1ca90.system.js +0 -4
  919. package/dist/ionic/p-ed4760ef.entry.js +0 -4
  920. package/dist/ionic/p-f0e54781.system.entry.js +0 -4
  921. package/dist/ionic/p-fa8d3b01.entry.js +0 -4
  922. package/dist/ionic/p-fbd01db3.system.js +0 -4
  923. package/dist/types/components/picker-column-internal/picker-column-internal-interfaces.d.ts +0 -5
  924. package/dist/types/components/picker-column-internal/picker-column-internal.d.ts +0 -102
  925. package/dist/types/components/picker-internal/picker-internal-interfaces.d.ts +0 -8
  926. package/dist/types/components/picker-internal/picker-internal.d.ts +0 -102
  927. /package/dist/collection/components/{picker-internal/picker-internal-interfaces.js → picker/picker-interfaces.js} +0 -0
  928. /package/dist/collection/components/{picker-column-internal/picker-column-internal-interfaces.js → picker-column/picker-column-interfaces.js} +0 -0
  929. /package/dist/collection/components/{picker → picker-legacy}/animations/ios.enter.js +0 -0
  930. /package/dist/collection/components/{picker → picker-legacy}/animations/ios.leave.js +0 -0
  931. /package/dist/collection/components/{picker → picker-legacy}/picker-interface.js +0 -0
  932. /package/dist/collection/components/{picker-column → picker-legacy-column}/test/test.utils.js +0 -0
  933. /package/dist/esm-es5/{data-0f3ab200.js → data-691286f1.js} +0 -0
  934. /package/dist/ionic/{p-f7dce541.js → p-5289aade.js} +0 -0
  935. /package/dist/ionic/{p-7330c044.system.js → p-66e6860f.system.js} +0 -0
  936. /package/dist/types/components/{picker → picker-legacy}/animations/ios.enter.d.ts +0 -0
  937. /package/dist/types/components/{picker → picker-legacy}/animations/ios.leave.d.ts +0 -0
  938. /package/dist/types/components/{picker → picker-legacy}/picker-interface.d.ts +0 -0
  939. /package/dist/types/components/{picker-column → picker-legacy-column}/test/test.utils.d.ts +0 -0
@@ -2,418 +2,597 @@
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
4
  import { Host, h } from "@stencil/core";
5
- import { clamp } from "../../utils/helpers";
5
+ import { doc } from "../../utils/browser/index";
6
+ import { getElementRoot, raf } from "../../utils/helpers";
6
7
  import { hapticSelectionChanged, hapticSelectionEnd, hapticSelectionStart } from "../../utils/native/haptic";
7
- import { getClassMap } from "../../utils/theme";
8
+ import { isPlatform } from "../../utils/platform";
9
+ import { createColorClasses } from "../../utils/theme";
8
10
  import { getIonMode } from "../../global/ionic-global";
9
11
  /**
10
- * @internal
12
+ * @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
13
+ *
14
+ * @slot prefix - Content to show on the left side of the picker options.
15
+ * @slot suffix - Content to show on the right side of the picker options.
11
16
  */
12
- export class PickerColumnCmp {
17
+ export class PickerColumn {
13
18
  constructor() {
14
- this.optHeight = 0;
15
- this.rotateFactor = 0;
16
- this.scaleFactor = 1;
17
- this.velocity = 0;
18
- this.y = 0;
19
- this.noAnimate = true;
20
- // `colDidChange` is a flag that gets set when the column is changed
21
- // dynamically. When this flag is set, the column will refresh
22
- // after the component re-renders to incorporate the new column data.
23
- // This is necessary because `this.refresh` queries for the option elements,
24
- // so it needs to wait for the latest elements to be available in the DOM.
25
- // Ex: column is created with 3 options. User updates the column data
26
- // to have 5 options. The column will still think it only has 3 options.
27
- this.colDidChange = false;
28
- this.col = undefined;
29
- }
30
- colChanged() {
31
- this.colDidChange = true;
32
- }
33
- async connectedCallback() {
34
- let pickerRotateFactor = 0;
35
- let pickerScaleFactor = 0.81;
36
- const mode = getIonMode(this);
37
- if (mode === 'ios') {
38
- pickerRotateFactor = -0.46;
39
- pickerScaleFactor = 1;
40
- }
41
- this.rotateFactor = pickerRotateFactor;
42
- this.scaleFactor = pickerScaleFactor;
43
- this.gesture = (await import('../../utils/gesture')).createGesture({
44
- el: this.el,
45
- gestureName: 'picker-swipe',
46
- gesturePriority: 100,
47
- threshold: 0,
48
- passive: false,
49
- onStart: (ev) => this.onStart(ev),
50
- onMove: (ev) => this.onMove(ev),
51
- onEnd: (ev) => this.onEnd(ev),
52
- });
53
- this.gesture.enable();
54
- // Options have not been initialized yet
55
- // Animation must be disabled through the `noAnimate` flag
56
- // Otherwise, the options will render
57
- // at the top of the column and transition down
58
- this.tmrId = setTimeout(() => {
59
- this.noAnimate = false;
60
- // After initialization, `refresh()` will be called
61
- // At this point, animation will be enabled. The options will
62
- // animate as they are being selected.
63
- this.refresh(true);
64
- }, 250);
65
- }
66
- componentDidLoad() {
67
- this.onDomChange();
68
- }
69
- componentDidUpdate() {
70
- // Options may have changed since last update.
71
- if (this.colDidChange) {
72
- // Animation must be disabled through the `onDomChange` parameter.
73
- // Otherwise, the recently added options will render
74
- // at the top of the column and transition down
75
- this.onDomChange(true, false);
76
- this.colDidChange = false;
77
- }
78
- }
79
- disconnectedCallback() {
80
- if (this.rafId !== undefined)
81
- cancelAnimationFrame(this.rafId);
82
- if (this.tmrId)
83
- clearTimeout(this.tmrId);
84
- if (this.gesture) {
85
- this.gesture.destroy();
86
- this.gesture = undefined;
87
- }
88
- }
89
- emitColChange() {
90
- this.ionPickerColChange.emit(this.col);
91
- }
92
- setSelected(selectedIndex, duration) {
93
- // if there is a selected index, then figure out it's y position
94
- // if there isn't a selected index, then just use the top y position
95
- const y = selectedIndex > -1 ? -(selectedIndex * this.optHeight) : 0;
96
- this.velocity = 0;
97
- // set what y position we're at
98
- if (this.rafId !== undefined)
99
- cancelAnimationFrame(this.rafId);
100
- this.update(y, duration, true);
101
- this.emitColChange();
102
- }
103
- update(y, duration, saveY) {
104
- if (!this.optsEl) {
105
- return;
106
- }
107
- // ensure we've got a good round number :)
108
- let translateY = 0;
109
- let translateZ = 0;
110
- const { col, rotateFactor } = this;
111
- const prevSelected = col.selectedIndex;
112
- const selectedIndex = (col.selectedIndex = this.indexForY(-y));
113
- const durationStr = duration === 0 ? '' : duration + 'ms';
114
- const scaleStr = `scale(${this.scaleFactor})`;
115
- const children = this.optsEl.children;
116
- for (let i = 0; i < children.length; i++) {
117
- const button = children[i];
118
- const opt = col.options[i];
119
- const optOffset = i * this.optHeight + y;
120
- let transform = '';
121
- if (rotateFactor !== 0) {
122
- const rotateX = optOffset * rotateFactor;
123
- if (Math.abs(rotateX) <= 90) {
124
- translateY = 0;
125
- translateZ = 90;
126
- transform = `rotateX(${rotateX}deg) `;
19
+ this.isScrolling = false;
20
+ this.isColumnVisible = false;
21
+ this.canExitInputMode = true;
22
+ this.centerPickerItemInView = (target, smooth = true, canExitInputMode = true) => {
23
+ const { isColumnVisible, scrollEl } = this;
24
+ if (isColumnVisible && scrollEl) {
25
+ // (Vertical offset from parent) - (three empty picker rows) + (half the height of the target to ensure the scroll triggers)
26
+ const top = target.offsetTop - 3 * target.clientHeight + target.clientHeight / 2;
27
+ if (scrollEl.scrollTop !== top) {
28
+ /**
29
+ * Setting this flag prevents input
30
+ * mode from exiting in the picker column's
31
+ * scroll callback. This is useful when the user manually
32
+ * taps an item or types on the keyboard as both
33
+ * of these can cause a scroll to occur.
34
+ */
35
+ this.canExitInputMode = canExitInputMode;
36
+ scrollEl.scroll({
37
+ top,
38
+ left: 0,
39
+ behavior: smooth ? 'smooth' : undefined,
40
+ });
127
41
  }
128
- else {
129
- translateY = -9999;
130
- }
131
- }
132
- else {
133
- translateZ = 0;
134
- translateY = optOffset;
135
42
  }
136
- const selected = selectedIndex === i;
137
- transform += `translate3d(0px,${translateY}px,${translateZ}px) `;
138
- if (this.scaleFactor !== 1 && !selected) {
139
- transform += scaleStr;
140
- }
141
- // Update transition duration
142
- if (this.noAnimate) {
143
- opt.duration = 0;
144
- button.style.transitionDuration = '';
43
+ };
44
+ this.setPickerItemActiveState = (item, isActive) => {
45
+ if (isActive) {
46
+ item.classList.add(PICKER_ITEM_ACTIVE_CLASS);
145
47
  }
146
- else if (duration !== opt.duration) {
147
- opt.duration = duration;
148
- button.style.transitionDuration = durationStr;
48
+ else {
49
+ item.classList.remove(PICKER_ITEM_ACTIVE_CLASS);
149
50
  }
150
- // Update transform
151
- if (transform !== opt.transform) {
152
- opt.transform = transform;
51
+ };
52
+ /**
53
+ * When ionInputModeChange is emitted, each column
54
+ * needs to check if it is the one being made available
55
+ * for text entry.
56
+ */
57
+ this.inputModeChange = (ev) => {
58
+ if (!this.numericInput) {
59
+ return;
153
60
  }
154
- button.style.transform = transform;
61
+ const { useInputMode, inputModeColumn } = ev.detail;
155
62
  /**
156
- * Ensure that the select column
157
- * item has the selected class
63
+ * If inputModeColumn is undefined then this means
64
+ * all numericInput columns are being selected.
158
65
  */
159
- opt.selected = selected;
160
- if (selected) {
161
- button.classList.add(PICKER_OPT_SELECTED);
66
+ const isColumnActive = inputModeColumn === undefined || inputModeColumn === this.el;
67
+ if (!useInputMode || !isColumnActive) {
68
+ this.setInputModeActive(false);
69
+ return;
162
70
  }
163
- else {
164
- button.classList.remove(PICKER_OPT_SELECTED);
71
+ this.setInputModeActive(true);
72
+ };
73
+ /**
74
+ * Setting isActive will cause a re-render.
75
+ * As a result, we do not want to cause the
76
+ * re-render mid scroll as this will cause
77
+ * the picker column to jump back to
78
+ * whatever value was selected at the
79
+ * start of the scroll interaction.
80
+ */
81
+ this.setInputModeActive = (state) => {
82
+ if (this.isScrolling) {
83
+ this.scrollEndCallback = () => {
84
+ this.isActive = state;
85
+ };
86
+ return;
165
87
  }
166
- }
167
- this.col.prevSelected = prevSelected;
168
- if (saveY) {
169
- this.y = y;
170
- }
171
- if (this.lastIndex !== selectedIndex) {
172
- // have not set a last index yet
173
- hapticSelectionChanged();
174
- this.lastIndex = selectedIndex;
88
+ this.isActive = state;
89
+ };
90
+ /**
91
+ * When the column scrolls, the component
92
+ * needs to determine which item is centered
93
+ * in the view and will emit an ionChange with
94
+ * the item object.
95
+ */
96
+ this.initializeScrollListener = () => {
97
+ /**
98
+ * The haptics for the wheel picker are
99
+ * an iOS-only feature. As a result, they should
100
+ * be disabled on Android.
101
+ */
102
+ const enableHaptics = isPlatform('ios');
103
+ const { el, scrollEl } = this;
104
+ let timeout;
105
+ let activeEl = this.activeItem;
106
+ const scrollCallback = () => {
107
+ raf(() => {
108
+ if (!scrollEl)
109
+ return;
110
+ if (timeout) {
111
+ clearTimeout(timeout);
112
+ timeout = undefined;
113
+ }
114
+ if (!this.isScrolling) {
115
+ enableHaptics && hapticSelectionStart();
116
+ this.isScrolling = true;
117
+ }
118
+ /**
119
+ * Select item in the center of the column
120
+ * which is the month/year that we want to select
121
+ */
122
+ const bbox = scrollEl.getBoundingClientRect();
123
+ const centerX = bbox.x + bbox.width / 2;
124
+ const centerY = bbox.y + bbox.height / 2;
125
+ /**
126
+ * elementFromPoint returns the top-most element.
127
+ * This means that if an ion-backdrop is overlaying the
128
+ * picker then the appropriate picker column option will
129
+ * not be selected. To account for this, we use elementsFromPoint
130
+ * and use an Array.find to find the appropriate column option
131
+ * at that point.
132
+ *
133
+ * Additionally, the picker column could be used in the
134
+ * Shadow DOM (i.e. in ion-datetime) so we need to make
135
+ * sure we are choosing the correct host otherwise
136
+ * the elements returns by elementsFromPoint will be
137
+ * retargeted. To account for this, we check to see
138
+ * if the picker column has a parent shadow root. If
139
+ * so, we use that shadow root when doing elementsFromPoint.
140
+ * Otherwise, we just use the document.
141
+ */
142
+ const rootNode = el.getRootNode();
143
+ const hasParentShadow = rootNode instanceof ShadowRoot;
144
+ const referenceNode = hasParentShadow ? rootNode : doc;
145
+ /**
146
+ * If the reference node is undefined
147
+ * then it's likely that doc is undefined
148
+ * due to being in an SSR environment.
149
+ */
150
+ if (referenceNode === undefined) {
151
+ return;
152
+ }
153
+ const elementsAtPoint = referenceNode.elementsFromPoint(centerX, centerY);
154
+ /**
155
+ * elementsFromPoint can returns multiple elements
156
+ * so find the relevant picker column option if one exists.
157
+ */
158
+ const newActiveElement = elementsAtPoint.find((el) => el.tagName === 'ION-PICKER-COLUMN-OPTION');
159
+ if (activeEl !== undefined) {
160
+ this.setPickerItemActiveState(activeEl, false);
161
+ }
162
+ if (newActiveElement === undefined || newActiveElement.disabled) {
163
+ return;
164
+ }
165
+ /**
166
+ * If we are selecting a new value,
167
+ * we need to run haptics again.
168
+ */
169
+ if (newActiveElement !== activeEl) {
170
+ enableHaptics && hapticSelectionChanged();
171
+ if (this.canExitInputMode) {
172
+ /**
173
+ * The native iOS wheel picker
174
+ * only dismisses the keyboard
175
+ * once the selected item has changed
176
+ * as a result of a swipe
177
+ * from the user. If `canExitInputMode` is
178
+ * `false` then this means that the
179
+ * scroll is happening as a result of
180
+ * the `value` property programmatically changing
181
+ * either by an application or by the user via the keyboard.
182
+ */
183
+ this.exitInputMode();
184
+ }
185
+ }
186
+ activeEl = newActiveElement;
187
+ this.setPickerItemActiveState(newActiveElement, true);
188
+ timeout = setTimeout(() => {
189
+ this.isScrolling = false;
190
+ enableHaptics && hapticSelectionEnd();
191
+ /**
192
+ * Certain tasks (such as those that
193
+ * cause re-renders) should only be done
194
+ * once scrolling has finished, otherwise
195
+ * flickering may occur.
196
+ */
197
+ const { scrollEndCallback } = this;
198
+ if (scrollEndCallback) {
199
+ scrollEndCallback();
200
+ this.scrollEndCallback = undefined;
201
+ }
202
+ /**
203
+ * Reset this flag as the
204
+ * next scroll interaction could
205
+ * be a scroll from the user. In this
206
+ * case, we should exit input mode.
207
+ */
208
+ this.canExitInputMode = true;
209
+ this.setValue(newActiveElement.value);
210
+ }, 250);
211
+ });
212
+ };
213
+ /**
214
+ * Wrap this in an raf so that the scroll callback
215
+ * does not fire when component is initially shown.
216
+ */
217
+ raf(() => {
218
+ if (!scrollEl)
219
+ return;
220
+ scrollEl.addEventListener('scroll', scrollCallback);
221
+ this.destroyScrollListener = () => {
222
+ scrollEl.removeEventListener('scroll', scrollCallback);
223
+ };
224
+ });
225
+ };
226
+ /**
227
+ * Tells the parent picker to
228
+ * exit text entry mode. This is only called
229
+ * when the selected item changes during scroll, so
230
+ * we know that the user likely wants to scroll
231
+ * instead of type.
232
+ */
233
+ this.exitInputMode = () => {
234
+ const { parentEl } = this;
235
+ if (parentEl == null)
236
+ return;
237
+ parentEl.exitInputMode();
238
+ /**
239
+ * setInputModeActive only takes
240
+ * effect once scrolling stops to avoid
241
+ * a component re-render while scrolling.
242
+ * However, we want the visual active
243
+ * indicator to go away immediately, so
244
+ * we call classList.remove here.
245
+ */
246
+ this.el.classList.remove('picker-column-active');
247
+ };
248
+ this.isActive = false;
249
+ this.disabled = false;
250
+ this.value = undefined;
251
+ this.color = 'primary';
252
+ this.numericInput = false;
253
+ }
254
+ valueChange() {
255
+ if (this.isColumnVisible) {
256
+ /**
257
+ * Only scroll the active item into view when the picker column
258
+ * is actively visible to the user.
259
+ */
260
+ this.scrollActiveItemIntoView(true);
175
261
  }
176
262
  }
177
- decelerate() {
178
- if (this.velocity !== 0) {
179
- // still decelerating
180
- this.velocity *= DECELERATION_FRICTION;
181
- // do not let it go slower than a velocity of 1
182
- this.velocity = this.velocity > 0 ? Math.max(this.velocity, 1) : Math.min(this.velocity, -1);
183
- let y = this.y + this.velocity;
184
- if (y > this.minY) {
185
- // whoops, it's trying to scroll up farther than the options we have!
186
- y = this.minY;
187
- this.velocity = 0;
188
- }
189
- else if (y < this.maxY) {
190
- // gahh, it's trying to scroll down farther than we can!
191
- y = this.maxY;
192
- this.velocity = 0;
193
- }
194
- this.update(y, 0, true);
195
- const notLockedIn = Math.round(y) % this.optHeight !== 0 || Math.abs(this.velocity) > 1;
196
- if (notLockedIn) {
197
- // isn't locked in yet, keep decelerating until it is
198
- this.rafId = requestAnimationFrame(() => this.decelerate());
263
+ /**
264
+ * Only setup scroll listeners
265
+ * when the picker is visible, otherwise
266
+ * the container will have a scroll
267
+ * height of 0px.
268
+ */
269
+ componentWillLoad() {
270
+ /**
271
+ * We cache parentEl in a local variable
272
+ * so we don't need to keep accessing
273
+ * the class variable (which comes with
274
+ * a small performance hit)
275
+ */
276
+ const parentEl = (this.parentEl = this.el.closest('ion-picker'));
277
+ const visibleCallback = (entries) => {
278
+ const ev = entries[0];
279
+ if (ev.isIntersecting) {
280
+ const { activeItem, el } = this;
281
+ this.isColumnVisible = true;
282
+ /**
283
+ * Because this initial call to scrollActiveItemIntoView has to fire before
284
+ * the scroll listener is set up, we need to manage the active class manually.
285
+ */
286
+ const oldActive = getElementRoot(el).querySelector(`.${PICKER_ITEM_ACTIVE_CLASS}`);
287
+ if (oldActive) {
288
+ this.setPickerItemActiveState(oldActive, false);
289
+ }
290
+ this.scrollActiveItemIntoView();
291
+ if (activeItem) {
292
+ this.setPickerItemActiveState(activeItem, true);
293
+ }
294
+ this.initializeScrollListener();
199
295
  }
200
296
  else {
201
- this.velocity = 0;
202
- this.emitColChange();
203
- hapticSelectionEnd();
297
+ this.isColumnVisible = false;
298
+ if (this.destroyScrollListener) {
299
+ this.destroyScrollListener();
300
+ this.destroyScrollListener = undefined;
301
+ }
204
302
  }
303
+ };
304
+ /**
305
+ * Set the root to be the parent picker element
306
+ * This causes the IO callback
307
+ * to be fired in WebKit as soon as the element
308
+ * is visible. If we used the default root value
309
+ * then WebKit would only fire the IO callback
310
+ * after any animations (such as a modal transition)
311
+ * finished, and there would potentially be a flicker.
312
+ */
313
+ new IntersectionObserver(visibleCallback, { threshold: 0.001, root: this.parentEl }).observe(this.el);
314
+ if (parentEl !== null) {
315
+ // TODO(FW-2832): type
316
+ parentEl.addEventListener('ionInputModeChange', (ev) => this.inputModeChange(ev));
205
317
  }
206
- else if (this.y % this.optHeight !== 0) {
207
- // needs to still get locked into a position so options line up
208
- const currentPos = Math.abs(this.y % this.optHeight);
209
- // create a velocity in the direction it needs to scroll
210
- this.velocity = currentPos > this.optHeight / 2 ? 1 : -1;
211
- this.decelerate();
212
- }
213
- }
214
- indexForY(y) {
215
- return Math.min(Math.max(Math.abs(Math.round(y / this.optHeight)), 0), this.col.options.length - 1);
216
318
  }
217
- onStart(detail) {
218
- // We have to prevent default in order to block scrolling under the picker
219
- // but we DO NOT have to stop propagation, since we still want
220
- // some "click" events to capture
221
- if (detail.event.cancelable) {
222
- detail.event.preventDefault();
223
- }
224
- detail.event.stopPropagation();
225
- hapticSelectionStart();
226
- // reset everything
227
- if (this.rafId !== undefined)
228
- cancelAnimationFrame(this.rafId);
229
- const options = this.col.options;
230
- let minY = options.length - 1;
231
- let maxY = 0;
232
- for (let i = 0; i < options.length; i++) {
233
- if (!options[i].disabled) {
234
- minY = Math.min(minY, i);
235
- maxY = Math.max(maxY, i);
319
+ componentDidRender() {
320
+ const { el, activeItem, isColumnVisible, value } = this;
321
+ if (isColumnVisible && !activeItem) {
322
+ const firstOption = el.querySelector('ion-picker-column-option');
323
+ /**
324
+ * If the picker column does not have an active item and the current value
325
+ * does not match the first item in the picker column, that means
326
+ * the value is out of bounds. In this case, we assign the value to the
327
+ * first item to match the scroll position of the column.
328
+ *
329
+ */
330
+ if (firstOption !== null && firstOption.value !== value) {
331
+ this.setValue(firstOption.value);
236
332
  }
237
333
  }
238
- this.minY = -(minY * this.optHeight);
239
- this.maxY = -(maxY * this.optHeight);
240
334
  }
241
- onMove(detail) {
242
- if (detail.event.cancelable) {
243
- detail.event.preventDefault();
244
- }
245
- detail.event.stopPropagation();
246
- // update the scroll position relative to pointer start position
247
- let y = this.y + detail.deltaY;
248
- if (y > this.minY) {
249
- // scrolling up higher than scroll area
250
- y = Math.pow(y, 0.8);
251
- this.bounceFrom = y;
252
- }
253
- else if (y < this.maxY) {
254
- // scrolling down below scroll area
255
- y += Math.pow(this.maxY - y, 0.9);
256
- this.bounceFrom = y;
335
+ /** @internal */
336
+ async scrollActiveItemIntoView(smooth = false) {
337
+ const activeEl = this.activeItem;
338
+ if (activeEl) {
339
+ this.centerPickerItemInView(activeEl, smooth, false);
257
340
  }
258
- else {
259
- this.bounceFrom = 0;
260
- }
261
- this.update(y, 0, false);
262
341
  }
263
- onEnd(detail) {
264
- if (this.bounceFrom > 0) {
265
- // bounce back up
266
- this.update(this.minY, 100, true);
267
- this.emitColChange();
342
+ /**
343
+ * Sets the value prop and fires the ionChange event.
344
+ * This is used when we need to fire ionChange from
345
+ * user-generated events that cannot be caught with normal
346
+ * input/change event listeners.
347
+ * @internal
348
+ */
349
+ async setValue(value) {
350
+ if (this.disabled === true || this.value === value) {
268
351
  return;
269
352
  }
270
- else if (this.bounceFrom < 0) {
271
- // bounce back down
272
- this.update(this.maxY, 100, true);
273
- this.emitColChange();
274
- return;
275
- }
276
- this.velocity = clamp(-MAX_PICKER_SPEED, detail.velocityY * 23, MAX_PICKER_SPEED);
277
- if (this.velocity === 0 && detail.deltaY === 0) {
278
- const opt = detail.event.target.closest('.picker-opt');
279
- if (opt === null || opt === void 0 ? void 0 : opt.hasAttribute('opt-index')) {
280
- this.setSelected(parseInt(opt.getAttribute('opt-index'), 10), TRANSITION_DURATION);
281
- }
282
- }
283
- else {
284
- this.y += detail.deltaY;
285
- if (Math.abs(detail.velocityY) < 0.05) {
286
- const isScrollingUp = detail.deltaY > 0;
287
- const optHeightFraction = (Math.abs(this.y) % this.optHeight) / this.optHeight;
288
- if (isScrollingUp && optHeightFraction > 0.5) {
289
- this.velocity = Math.abs(this.velocity) * -1;
290
- }
291
- else if (!isScrollingUp && optHeightFraction <= 0.5) {
292
- this.velocity = Math.abs(this.velocity);
293
- }
294
- }
295
- this.decelerate();
296
- }
353
+ this.value = value;
354
+ this.ionChange.emit({ value });
297
355
  }
298
- refresh(forceRefresh, animated) {
299
- var _a;
300
- let min = this.col.options.length - 1;
301
- let max = 0;
302
- const options = this.col.options;
303
- for (let i = 0; i < options.length; i++) {
304
- if (!options[i].disabled) {
305
- min = Math.min(min, i);
306
- max = Math.max(max, i);
307
- }
308
- }
309
- /**
310
- * Only update selected value if column has a
311
- * velocity of 0. If it does not, then the
312
- * column is animating might land on
313
- * a value different than the value at
314
- * selectedIndex
315
- */
316
- if (this.velocity !== 0) {
317
- return;
318
- }
319
- const selectedIndex = clamp(min, (_a = this.col.selectedIndex) !== null && _a !== void 0 ? _a : 0, max);
320
- if (this.col.prevSelected !== selectedIndex || forceRefresh) {
321
- const y = selectedIndex * this.optHeight * -1;
322
- const duration = animated ? TRANSITION_DURATION : 0;
323
- this.velocity = 0;
324
- this.update(y, duration, true);
356
+ /**
357
+ * Sets focus on the scrollable container within the picker column.
358
+ * Use this method instead of the global `pickerColumn.focus()`.
359
+ */
360
+ async setFocus() {
361
+ if (this.scrollEl) {
362
+ this.scrollEl.focus();
325
363
  }
326
364
  }
327
- onDomChange(forceRefresh, animated) {
328
- const colEl = this.optsEl;
329
- if (colEl) {
330
- // DOM READ
331
- // We perfom a DOM read over a rendered item, this needs to happen after the first render or after the the column has changed
332
- this.optHeight = colEl.firstElementChild ? colEl.firstElementChild.clientHeight : 0;
333
- }
334
- this.refresh(forceRefresh, animated);
365
+ get activeItem() {
366
+ const { value } = this;
367
+ const options = Array.from(this.el.querySelectorAll('ion-picker-column-option'));
368
+ return options.find((option) => {
369
+ /**
370
+ * If the whole picker column is disabled, the current value should appear active
371
+ * If the current value item is specifically disabled, it should not appear active
372
+ */
373
+ if (!this.disabled && option.disabled) {
374
+ return false;
375
+ }
376
+ return option.value === value;
377
+ });
335
378
  }
336
379
  render() {
337
- const col = this.col;
380
+ const { color, disabled, isActive, numericInput } = this;
338
381
  const mode = getIonMode(this);
339
- return (h(Host, { key: '06e2ae483a3bcf4fe721ad0c48cded6a1efdc6c0', class: Object.assign({ [mode]: true, 'picker-col': true, 'picker-opts-left': this.col.align === 'left', 'picker-opts-right': this.col.align === 'right' }, getClassMap(col.cssClass)), style: {
340
- 'max-width': this.col.columnWidth,
341
- } }, col.prefix && (h("div", { class: "picker-prefix", style: { width: col.prefixWidth } }, col.prefix)), h("div", { key: '14bea013788d899edf7155eb3cc10f79fe8e4690', class: "picker-opts", style: { maxWidth: col.optionsWidth }, ref: (el) => (this.optsEl = el) }, col.options.map((o, index) => (h("button", { "aria-label": o.ariaLabel, class: { 'picker-opt': true, 'picker-opt-disabled': !!o.disabled }, "opt-index": index }, o.text)))), col.suffix && (h("div", { class: "picker-suffix", style: { width: col.suffixWidth } }, col.suffix))));
382
+ return (h(Host, { key: '0b055a464237262bab4d99b2de320c9ea1312f29', class: createColorClasses(color, {
383
+ [mode]: true,
384
+ ['picker-column-active']: isActive,
385
+ ['picker-column-numeric-input']: numericInput,
386
+ ['picker-column-disabled']: disabled,
387
+ }) }, h("slot", { key: 'a162598e503c1f4eef59dbadaa5ecc11dc45d82c', name: "prefix" }), h("div", { key: '23f0370a1639adcdacde40fc59ced3cd49fc8e91', class: "picker-opts", tabindex: disabled ? undefined : 0, ref: (el) => {
388
+ this.scrollEl = el;
389
+ } }, h("div", { key: '9b86b9b11a53f06b3afea9b76ecca9344e025bc4', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: 'c95a1998f3d4c13ca60b81f0de01f1f5811d86df', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: '04381e68d992a247a38942aea307d1f863876eb5', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("slot", { key: '379fda12a9e49c5616e590deb9ddaea908fbed9b' }), h("div", { key: 'c911bf19f4bb531d1ca46d1b3f9d6286d0ac3801', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: '9dc907617ad53c1542d492ab1d60c986dd869348', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: '219691c9c450dd1eecaf1304eac5870dad1d76e8', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0")), h("slot", { key: '8471ea689166cd864ad0fcdb959b7a9db15dfb8d', name: "suffix" })));
342
390
  }
343
391
  static get is() { return "ion-picker-column"; }
392
+ static get encapsulation() { return "shadow"; }
344
393
  static get originalStyleUrls() {
345
394
  return {
346
- "ios": ["picker-column.ios.scss"],
347
- "md": ["picker-column.md.scss"]
395
+ "$": ["picker-column.scss"]
348
396
  };
349
397
  }
350
398
  static get styleUrls() {
351
399
  return {
352
- "ios": ["picker-column.ios.css"],
353
- "md": ["picker-column.md.css"]
400
+ "$": ["picker-column.css"]
354
401
  };
355
402
  }
356
403
  static get properties() {
357
404
  return {
358
- "col": {
359
- "type": "unknown",
405
+ "disabled": {
406
+ "type": "boolean",
407
+ "mutable": false,
408
+ "complexType": {
409
+ "original": "boolean",
410
+ "resolved": "boolean",
411
+ "references": {}
412
+ },
413
+ "required": false,
414
+ "optional": false,
415
+ "docs": {
416
+ "tags": [],
417
+ "text": "If `true`, the user cannot interact with the picker."
418
+ },
419
+ "attribute": "disabled",
420
+ "reflect": false,
421
+ "defaultValue": "false"
422
+ },
423
+ "value": {
424
+ "type": "any",
425
+ "mutable": true,
426
+ "complexType": {
427
+ "original": "string | number",
428
+ "resolved": "number | string | undefined",
429
+ "references": {}
430
+ },
431
+ "required": false,
432
+ "optional": true,
433
+ "docs": {
434
+ "tags": [],
435
+ "text": "The selected option in the picker."
436
+ },
437
+ "attribute": "value",
438
+ "reflect": false
439
+ },
440
+ "color": {
441
+ "type": "string",
360
442
  "mutable": false,
361
443
  "complexType": {
362
- "original": "PickerColumn",
363
- "resolved": "PickerColumn",
444
+ "original": "Color",
445
+ "resolved": "\"danger\" | \"dark\" | \"light\" | \"medium\" | \"primary\" | \"secondary\" | \"success\" | \"tertiary\" | \"warning\" | string & Record<never, never> | undefined",
364
446
  "references": {
365
- "PickerColumn": {
447
+ "Color": {
366
448
  "location": "import",
367
- "path": "../picker/picker-interface",
368
- "id": "src/components/picker/picker-interface.ts::PickerColumn"
449
+ "path": "../../interface",
450
+ "id": "src/interface.d.ts::Color"
369
451
  }
370
452
  }
371
453
  },
372
- "required": true,
373
- "optional": false,
454
+ "required": false,
455
+ "optional": true,
374
456
  "docs": {
375
457
  "tags": [],
376
- "text": "Picker column data"
377
- }
458
+ "text": "The color to use from your application's color palette.\nDefault options are: `\"primary\"`, `\"secondary\"`, `\"tertiary\"`, `\"success\"`, `\"warning\"`, `\"danger\"`, `\"light\"`, `\"medium\"`, and `\"dark\"`.\nFor more information on colors, see [theming](/docs/theming/basics)."
459
+ },
460
+ "attribute": "color",
461
+ "reflect": true,
462
+ "defaultValue": "'primary'"
463
+ },
464
+ "numericInput": {
465
+ "type": "boolean",
466
+ "mutable": false,
467
+ "complexType": {
468
+ "original": "boolean",
469
+ "resolved": "boolean",
470
+ "references": {}
471
+ },
472
+ "required": false,
473
+ "optional": false,
474
+ "docs": {
475
+ "tags": [{
476
+ "name": "internal",
477
+ "text": undefined
478
+ }],
479
+ "text": "If `true`, tapping the picker will\nreveal a number input keyboard that lets\nthe user type in values for each picker\ncolumn. This is useful when working\nwith time pickers."
480
+ },
481
+ "attribute": "numeric-input",
482
+ "reflect": false,
483
+ "defaultValue": "false"
378
484
  }
379
485
  };
380
486
  }
487
+ static get states() {
488
+ return {
489
+ "isActive": {}
490
+ };
491
+ }
381
492
  static get events() {
382
493
  return [{
383
- "method": "ionPickerColChange",
384
- "name": "ionPickerColChange",
494
+ "method": "ionChange",
495
+ "name": "ionChange",
385
496
  "bubbles": true,
386
497
  "cancelable": true,
387
498
  "composed": true,
388
499
  "docs": {
500
+ "tags": [],
501
+ "text": "Emitted when the value has changed."
502
+ },
503
+ "complexType": {
504
+ "original": "PickerColumnChangeEventDetail",
505
+ "resolved": "PickerColumnChangeEventDetail",
506
+ "references": {
507
+ "PickerColumnChangeEventDetail": {
508
+ "location": "import",
509
+ "path": "./picker-column-interfaces",
510
+ "id": "src/components/picker-column/picker-column-interfaces.ts::PickerColumnChangeEventDetail"
511
+ }
512
+ }
513
+ }
514
+ }];
515
+ }
516
+ static get methods() {
517
+ return {
518
+ "scrollActiveItemIntoView": {
519
+ "complexType": {
520
+ "signature": "(smooth?: boolean) => Promise<void>",
521
+ "parameters": [{
522
+ "name": "smooth",
523
+ "type": "boolean",
524
+ "docs": ""
525
+ }],
526
+ "references": {
527
+ "Promise": {
528
+ "location": "global",
529
+ "id": "global::Promise"
530
+ }
531
+ },
532
+ "return": "Promise<void>"
533
+ },
534
+ "docs": {
535
+ "text": "",
389
536
  "tags": [{
390
537
  "name": "internal",
391
538
  "text": undefined
539
+ }]
540
+ }
541
+ },
542
+ "setValue": {
543
+ "complexType": {
544
+ "signature": "(value: PickerColumnValue) => Promise<void>",
545
+ "parameters": [{
546
+ "name": "value",
547
+ "type": "string | number | undefined",
548
+ "docs": ""
392
549
  }],
393
- "text": "Emitted when the selected value has changed"
550
+ "references": {
551
+ "Promise": {
552
+ "location": "global",
553
+ "id": "global::Promise"
554
+ },
555
+ "PickerColumnValue": {
556
+ "location": "import",
557
+ "path": "./picker-column-interfaces",
558
+ "id": "src/components/picker-column/picker-column-interfaces.ts::PickerColumnValue"
559
+ }
560
+ },
561
+ "return": "Promise<void>"
394
562
  },
563
+ "docs": {
564
+ "text": "Sets the value prop and fires the ionChange event.\nThis is used when we need to fire ionChange from\nuser-generated events that cannot be caught with normal\ninput/change event listeners.",
565
+ "tags": [{
566
+ "name": "internal",
567
+ "text": undefined
568
+ }]
569
+ }
570
+ },
571
+ "setFocus": {
395
572
  "complexType": {
396
- "original": "PickerColumn",
397
- "resolved": "PickerColumn",
573
+ "signature": "() => Promise<void>",
574
+ "parameters": [],
398
575
  "references": {
399
- "PickerColumn": {
400
- "location": "import",
401
- "path": "../picker/picker-interface",
402
- "id": "src/components/picker/picker-interface.ts::PickerColumn"
576
+ "Promise": {
577
+ "location": "global",
578
+ "id": "global::Promise"
403
579
  }
404
- }
580
+ },
581
+ "return": "Promise<void>"
582
+ },
583
+ "docs": {
584
+ "text": "Sets focus on the scrollable container within the picker column.\nUse this method instead of the global `pickerColumn.focus()`.",
585
+ "tags": []
405
586
  }
406
- }];
587
+ }
588
+ };
407
589
  }
408
590
  static get elementRef() { return "el"; }
409
591
  static get watchers() {
410
592
  return [{
411
- "propName": "col",
412
- "methodName": "colChanged"
593
+ "propName": "value",
594
+ "methodName": "valueChange"
413
595
  }];
414
596
  }
415
597
  }
416
- const PICKER_OPT_SELECTED = 'picker-opt-selected';
417
- const DECELERATION_FRICTION = 0.97;
418
- const MAX_PICKER_SPEED = 90;
419
- const TRANSITION_DURATION = 150;
598
+ const PICKER_ITEM_ACTIVE_CLASS = 'option-active';