@ionic/core 7.7.4 → 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 (911) 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 +9 -26
  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 +23 -9
  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/{button-active-fcf4bd60.js → button-active-e447f58b.js} +2 -2
  142. package/dist/cjs/{data-a5109f09.js → data-e2bf21de.js} +1 -1
  143. package/dist/cjs/{framework-delegate-e0e13baa.js → framework-delegate-53817ef1.js} +1 -1
  144. package/dist/cjs/{gesture-controller-c40c045a.js → gesture-controller-9436f482.js} +1 -0
  145. package/dist/cjs/{helpers-da4c0ed1.js → helpers-b71ca811.js} +0 -1
  146. package/dist/cjs/{index-bef98850.js → index-347883f6.js} +1 -1
  147. package/dist/cjs/{index-62290fec.js → index-7574e3d2.js} +1 -1
  148. package/dist/cjs/{index-905e8955.js → index-92bb95d6.js} +3 -3
  149. package/dist/cjs/{index-19f1b25e.js → index-bbc5b1f7.js} +2 -2
  150. package/dist/cjs/{index-d1b59ffa.js → index-ee07ed59.js} +1 -1
  151. package/dist/cjs/index.cjs.js +10 -10
  152. package/dist/cjs/{input-shims-a9a85bb9.js → input-shims-679d87bc.js} +10 -3
  153. package/dist/cjs/{input.utils-d7dca90f.js → input.utils-5175aea1.js} +1 -1
  154. package/dist/cjs/ion-accordion_2.cjs.entry.js +2 -2
  155. package/dist/cjs/ion-action-sheet.cjs.entry.js +11 -11
  156. package/dist/cjs/ion-alert.cjs.entry.js +9 -9
  157. package/dist/cjs/ion-app_8.cjs.entry.js +24 -25
  158. package/dist/cjs/ion-avatar_3.cjs.entry.js +3 -3
  159. package/dist/cjs/ion-back-button.cjs.entry.js +2 -2
  160. package/dist/cjs/ion-backdrop.cjs.entry.js +1 -13
  161. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +3 -3
  162. package/dist/cjs/ion-button_2.cjs.entry.js +3 -3
  163. package/dist/cjs/ion-card_5.cjs.entry.js +6 -6
  164. package/dist/cjs/ion-checkbox.cjs.entry.js +7 -75
  165. package/dist/cjs/ion-chip.cjs.entry.js +2 -2
  166. package/dist/cjs/ion-col_3.cjs.entry.js +5 -5
  167. package/dist/cjs/ion-datetime-button.cjs.entry.js +7 -7
  168. package/dist/cjs/ion-datetime_3.cjs.entry.js +53 -107
  169. package/dist/cjs/ion-fab_3.cjs.entry.js +10 -10
  170. package/dist/cjs/ion-img.cjs.entry.js +2 -2
  171. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +7 -7
  172. package/dist/cjs/ion-input.cjs.entry.js +10 -90
  173. package/dist/cjs/ion-item-option_3.cjs.entry.js +11 -11
  174. package/dist/cjs/ion-item_8.cjs.entry.js +43 -29
  175. package/dist/cjs/ion-loading.cjs.entry.js +9 -8
  176. package/dist/cjs/ion-menu_3.cjs.entry.js +38 -54
  177. package/dist/cjs/ion-modal.cjs.entry.js +16 -33
  178. package/dist/cjs/ion-nav_2.cjs.entry.js +11 -8
  179. package/dist/cjs/ion-picker-column-option.cjs.entry.js +106 -0
  180. package/dist/cjs/{ion-picker-column-internal.cjs.entry.js → ion-picker-column.cjs.entry.js} +122 -91
  181. package/dist/cjs/{ion-picker-internal.cjs.entry.js → ion-picker.cjs.entry.js} +31 -24
  182. package/dist/cjs/ion-popover.cjs.entry.js +10 -9
  183. package/dist/cjs/ion-progress-bar.cjs.entry.js +7 -4
  184. package/dist/cjs/ion-radio_2.cjs.entry.js +8 -77
  185. package/dist/cjs/ion-range.cjs.entry.js +35 -88
  186. package/dist/cjs/ion-refresher_2.cjs.entry.js +10 -10
  187. package/dist/cjs/ion-reorder_2.cjs.entry.js +5 -5
  188. package/dist/cjs/ion-ripple-effect.cjs.entry.js +1 -1
  189. package/dist/cjs/ion-route_4.cjs.entry.js +4 -4
  190. package/dist/cjs/ion-searchbar.cjs.entry.js +7 -7
  191. package/dist/cjs/ion-segment_2.cjs.entry.js +9 -9
  192. package/dist/cjs/ion-select_3.cjs.entry.js +75 -166
  193. package/dist/cjs/ion-spinner.cjs.entry.js +1 -1
  194. package/dist/cjs/ion-split-pane.cjs.entry.js +26 -16
  195. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +9 -9
  196. package/dist/cjs/ion-tab_2.cjs.entry.js +5 -5
  197. package/dist/cjs/ion-text.cjs.entry.js +2 -2
  198. package/dist/cjs/ion-textarea.cjs.entry.js +9 -69
  199. package/dist/cjs/ion-toast.cjs.entry.js +17 -11
  200. package/dist/cjs/ion-toggle.cjs.entry.js +8 -64
  201. package/dist/cjs/ionic.cjs.js +1 -1
  202. package/dist/cjs/{ios.transition-b03f91d9.js → ios.transition-997fe325.js} +3 -3
  203. package/dist/cjs/loader.cjs.js +1 -1
  204. package/dist/cjs/{md.transition-27c337ce.js → md.transition-2b76c2c6.js} +3 -3
  205. package/dist/cjs/{notch-controller-bfbcbb7a.js → notch-controller-8e0ae870.js} +1 -1
  206. package/dist/cjs/{overlays-53b60f81.js → overlays-3d02b54f.js} +91 -40
  207. package/dist/cjs/{status-tap-dbe2342f.js → status-tap-3761c2d4.js} +2 -2
  208. package/dist/cjs/{swipe-back-cf8aa1ec.js → swipe-back-72c5c8b7.js} +3 -3
  209. package/dist/collection/collection-manifest.json +7 -6
  210. package/dist/collection/components/accordion-group/accordion-group.md.css +4 -26
  211. package/dist/collection/components/action-sheet/action-sheet.ios.css +16 -9
  212. package/dist/collection/components/action-sheet/action-sheet.js +2 -2
  213. package/dist/collection/components/action-sheet/action-sheet.md.css +10 -3
  214. package/dist/collection/components/action-sheet/test/a11y/action-sheet.e2e.js +23 -14
  215. package/dist/collection/components/action-sheet/test/basic/action-sheet-rendering.e2e.js +19 -0
  216. package/dist/collection/components/action-sheet/test/basic/action-sheet.spec.js +22 -0
  217. package/dist/collection/components/alert/alert.ios.css +33 -80
  218. package/dist/collection/components/alert/alert.md.css +25 -121
  219. package/dist/collection/components/alert/test/a11y/alert.e2e.js +22 -9
  220. package/dist/collection/components/back-button/back-button.ios.css +1 -1
  221. package/dist/collection/components/back-button/test/a11y/back-button.e2e.js +21 -0
  222. package/dist/collection/components/backdrop/backdrop.js +1 -13
  223. package/dist/collection/components/badge/badge.ios.css +1 -1
  224. package/dist/collection/components/badge/badge.md.css +1 -1
  225. package/dist/collection/components/badge/test/a11y/badge.e2e.js +18 -0
  226. package/dist/collection/components/breadcrumb/breadcrumb.ios.css +9 -9
  227. package/dist/collection/components/breadcrumb/breadcrumb.md.css +9 -9
  228. package/dist/collection/components/button/button.ios.css +11 -11
  229. package/dist/collection/components/button/button.md.css +9 -9
  230. package/dist/collection/components/button/test/a11y/button.e2e.js +48 -0
  231. package/dist/collection/components/button/test/wrap/button.e2e.js +12 -24
  232. package/dist/collection/components/card/card.ios.css +1 -1
  233. package/dist/collection/components/card/card.md.css +1 -1
  234. package/dist/collection/components/card-subtitle/card-subtitle.ios.css +1 -1
  235. package/dist/collection/components/card-subtitle/card-subtitle.md.css +1 -1
  236. package/dist/collection/components/card-title/card-title.md.css +1 -1
  237. package/dist/collection/components/checkbox/checkbox.ios.css +10 -88
  238. package/dist/collection/components/checkbox/checkbox.js +5 -118
  239. package/dist/collection/components/checkbox/checkbox.md.css +7 -85
  240. package/dist/collection/components/checkbox/test/a11y/checkbox.e2e.js +11 -2
  241. package/dist/collection/components/checkbox/test/basic/checkbox.e2e.js +10 -0
  242. package/dist/collection/components/chip/chip.js +2 -2
  243. package/dist/collection/components/col/col.js +2 -2
  244. package/dist/collection/components/content/content.css +0 -4
  245. package/dist/collection/components/content/content.js +3 -4
  246. package/dist/collection/components/datetime/datetime.ios.css +105 -117
  247. package/dist/collection/components/datetime/datetime.js +25 -77
  248. package/dist/collection/components/datetime/datetime.md.css +106 -114
  249. package/dist/collection/components/datetime/test/a11y/datetime.e2e.js +1 -1
  250. package/dist/collection/components/datetime/test/a11y/datetime.spec.js +6 -9
  251. package/dist/collection/components/datetime/test/basic/datetime.e2e.js +10 -0
  252. package/dist/collection/components/datetime/test/datetime.e2e.js +2 -2
  253. package/dist/collection/components/datetime/test/disabled/datetime.spec.js +4 -4
  254. package/dist/collection/components/datetime/test/locale/datetime.e2e.js +2 -2
  255. package/dist/collection/components/datetime/test/minmax/datetime.e2e.js +6 -6
  256. package/dist/collection/components/datetime/test/month-year-picker/datetime.e2e.js +1 -1
  257. package/dist/collection/components/datetime/test/prefer-wheel/datetime.e2e.js +43 -41
  258. package/dist/collection/components/datetime/test/presentation/datetime.e2e.js +1 -1
  259. package/dist/collection/components/datetime/test/readonly/datetime.e2e.js +4 -4
  260. package/dist/collection/components/datetime/test/values/datetime.e2e.js +15 -12
  261. package/dist/collection/components/datetime/utils/data.js +1 -1
  262. package/dist/collection/components/datetime-button/datetime-button.ios.css +107 -0
  263. package/dist/collection/components/datetime-button/datetime-button.js +5 -5
  264. package/dist/collection/components/datetime-button/{datetime-button.css → datetime-button.md.css} +10 -7
  265. package/dist/collection/components/datetime-button/test/basic/datetime-button.e2e.js +12 -0
  266. package/dist/collection/components/fab/fab.js +2 -2
  267. package/dist/collection/components/fab-button/fab-button.ios.css +7 -7
  268. package/dist/collection/components/fab-button/fab-button.js +2 -2
  269. package/dist/collection/components/fab-button/fab-button.md.css +1 -1
  270. package/dist/collection/components/fab-button/test/a11y/fab-button.e2e.js +50 -0
  271. package/dist/collection/components/fab-list/fab-list.css +4 -42
  272. package/dist/collection/components/fab-list/fab-list.js +2 -2
  273. package/dist/collection/components/footer/footer.js +2 -2
  274. package/dist/collection/components/grid/grid.js +2 -2
  275. package/dist/collection/components/header/header.js +2 -2
  276. package/dist/collection/components/img/img.js +1 -1
  277. package/dist/collection/components/infinite-scroll/infinite-scroll.js +1 -1
  278. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.ios.css +3 -3
  279. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +2 -2
  280. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.md.css +3 -3
  281. package/dist/collection/components/input/input.ios.css +11 -104
  282. package/dist/collection/components/input/input.js +6 -144
  283. package/dist/collection/components/input/input.md.css +35 -216
  284. package/dist/collection/components/input/test/a11y/input.e2e.js +41 -3
  285. package/dist/collection/components/input/test/item/input.e2e.js +21 -0
  286. package/dist/collection/components/item/item.ios.css +7 -31
  287. package/dist/collection/components/item/item.js +20 -6
  288. package/dist/collection/components/item/item.md.css +29 -112
  289. package/dist/collection/components/item/test/a11y/item.e2e.js +0 -40
  290. package/dist/collection/components/item-divider/item-divider.ios.css +3 -3
  291. package/dist/collection/components/item-divider/item-divider.js +2 -2
  292. package/dist/collection/components/item-divider/item-divider.md.css +7 -17
  293. package/dist/collection/components/item-group/item-group.js +1 -1
  294. package/dist/collection/components/item-option/item-option.ios.css +2 -2
  295. package/dist/collection/components/item-option/item-option.js +2 -2
  296. package/dist/collection/components/item-option/item-option.md.css +1 -1
  297. package/dist/collection/components/item-options/item-options.ios.css +1 -1
  298. package/dist/collection/components/item-options/item-options.js +1 -1
  299. package/dist/collection/components/item-options/item-options.md.css +1 -1
  300. package/dist/collection/components/item-sliding/item-sliding.js +1 -1
  301. package/dist/collection/components/item-sliding/test/a11y/item-sliding.e2e.js +28 -0
  302. package/dist/collection/components/label/label.ios.css +1 -1
  303. package/dist/collection/components/label/label.js +1 -1
  304. package/dist/collection/components/label/label.md.css +2 -2
  305. package/dist/collection/components/label/test/a11y/label.e2e.js +20 -0
  306. package/dist/collection/components/list/list.js +1 -1
  307. package/dist/collection/components/list/list.md.css +2 -26
  308. package/dist/collection/components/list-header/list-header.ios.css +2 -2
  309. package/dist/collection/components/list-header/list-header.js +2 -2
  310. package/dist/collection/components/list-header/list-header.md.css +1 -1
  311. package/dist/collection/components/loading/loading.ios.css +2 -2
  312. package/dist/collection/components/loading/loading.js +2 -2
  313. package/dist/collection/components/loading/loading.md.css +3 -3
  314. package/dist/collection/components/loading/test/a11y/loading.e2e.js +21 -5
  315. package/dist/collection/components/menu/menu.ios.css +72 -53
  316. package/dist/collection/components/menu/menu.js +25 -39
  317. package/dist/collection/components/menu/menu.md.css +72 -53
  318. package/dist/collection/components/menu-button/menu-button.ios.css +1 -1
  319. package/dist/collection/components/menu-button/menu-button.js +2 -2
  320. package/dist/collection/components/menu-button/test/a11y/menu-button.e2e.js +14 -0
  321. package/dist/collection/components/menu-toggle/menu-toggle.js +2 -2
  322. package/dist/collection/components/modal/gestures/swipe-to-close.js +1 -1
  323. package/dist/collection/components/modal/modal.ios.css +9 -38
  324. package/dist/collection/components/modal/modal.js +3 -3
  325. package/dist/collection/components/modal/modal.md.css +1 -1
  326. package/dist/collection/components/modal/utils.js +2 -8
  327. package/dist/collection/components/nav/nav.js +23 -3
  328. package/dist/collection/components/nav/test/nav-controller.spec.js +36 -36
  329. package/dist/collection/components/nav-link/nav-link.js +1 -1
  330. package/dist/collection/components/note/note.ios.css +1 -1
  331. package/dist/collection/components/note/note.js +2 -2
  332. package/dist/collection/components/note/note.md.css +1 -1
  333. package/dist/collection/components/picker/picker.ios.css +97 -234
  334. package/dist/collection/components/picker/picker.js +488 -742
  335. package/dist/collection/components/picker/picker.md.css +98 -226
  336. package/dist/collection/components/{picker-internal/test/a11y/picker-internal.e2e.js → picker/test/a11y/picker.e2e.js} +2 -2
  337. package/dist/collection/components/picker/test/basic/picker.e2e.js +99 -13
  338. package/dist/collection/components/picker/test/custom/picker.e2e.js +85 -0
  339. package/dist/collection/components/{picker-internal/test/keyboard-entry/picker-internal.e2e.js → picker/test/keyboard-entry/picker.e2e.js} +79 -42
  340. package/dist/collection/components/{picker-column-internal/picker-column-internal.md.css → picker-column/picker-column.css} +96 -83
  341. package/dist/collection/components/picker-column/picker-column.js +514 -335
  342. package/dist/collection/components/{picker-column-internal/test/basic/picker-column-internal.e2e.js → picker-column/test/basic/picker-column.e2e.js} +8 -8
  343. package/dist/collection/components/picker-column/test/disabled/picker-column.e2e.js +91 -0
  344. package/dist/collection/components/picker-column/test/slots/picker-column.e2e.js +39 -0
  345. package/dist/collection/components/picker-column-option/picker-column-option.ios.css +87 -0
  346. package/dist/collection/components/picker-column-option/picker-column-option.js +173 -0
  347. package/dist/collection/components/{picker-column-internal/picker-column-internal.ios.css → picker-column-option/picker-column-option.md.css} +6 -53
  348. package/dist/collection/components/picker-column-option/test/a11y/picker-column-option.e2e.js +18 -0
  349. package/dist/collection/components/picker-column-option/test/basic/picker-column-option.e2e.js +37 -0
  350. package/dist/collection/components/picker-column-option/test/picker-column-option.spec.js +29 -0
  351. package/dist/collection/components/{picker-internal/picker-internal.ios.css → picker-legacy/picker.ios.css} +155 -117
  352. package/dist/collection/components/picker-legacy/picker.js +821 -0
  353. package/dist/collection/components/{picker-internal/picker-internal.md.css → picker-legacy/picker.md.css} +144 -115
  354. package/dist/collection/components/picker-legacy/test/basic/picker.e2e.js +25 -0
  355. package/dist/collection/components/{picker → picker-legacy}/test/is-open/picker.e2e.js +4 -4
  356. package/dist/collection/components/{picker → picker-legacy}/test/picker-id.spec.js +5 -5
  357. package/dist/collection/components/{picker → picker-legacy}/test/trigger/picker.e2e.js +1 -1
  358. package/dist/collection/components/{picker-column → picker-legacy-column}/picker-column.ios.css +2 -26
  359. package/dist/collection/components/picker-legacy-column/picker-column.js +419 -0
  360. package/dist/collection/components/{picker-column → picker-legacy-column}/picker-column.md.css +3 -27
  361. package/dist/collection/components/{picker-column → picker-legacy-column}/test/picker-column-aria.spec.js +3 -3
  362. package/dist/collection/components/{picker-column → picker-legacy-column}/test/picker-column-dynamic.spec.js +2 -2
  363. package/dist/collection/components/{picker-column → picker-legacy-column}/test/picker-column.spec.js +2 -2
  364. package/dist/collection/components/{picker-column → picker-legacy-column}/test/standalone/picker-column.e2e.js +3 -3
  365. package/dist/collection/components/popover/popover.ios.css +3 -27
  366. package/dist/collection/components/popover/popover.js +5 -4
  367. package/dist/collection/components/progress-bar/progress-bar.ios.css +17 -11
  368. package/dist/collection/components/progress-bar/progress-bar.js +4 -1
  369. package/dist/collection/components/progress-bar/progress-bar.md.css +8 -10
  370. package/dist/collection/components/progress-bar/test/a11y/progress-bar.e2e.js +24 -0
  371. package/dist/collection/components/radio/radio.ios.css +10 -101
  372. package/dist/collection/components/radio/radio.js +5 -119
  373. package/dist/collection/components/radio/radio.md.css +8 -105
  374. package/dist/collection/components/radio/test/a11y/radio.e2e.js +114 -81
  375. package/dist/collection/components/radio-group/radio-group.js +1 -1
  376. package/dist/collection/components/range/range.ios.css +12 -90
  377. package/dist/collection/components/range/range.js +30 -123
  378. package/dist/collection/components/range/range.md.css +22 -152
  379. package/dist/collection/components/range/test/a11y/range.e2e.js +20 -10
  380. package/dist/collection/components/range/test/range-events.e2e.js +1 -1
  381. package/dist/collection/components/range/test/range.spec.js +0 -12
  382. package/dist/collection/components/refresher/refresher.ios.css +4 -27
  383. package/dist/collection/components/refresher/refresher.js +1 -1
  384. package/dist/collection/components/refresher/refresher.md.css +7 -30
  385. package/dist/collection/components/refresher/test/a11y/refresher.e2e.js +26 -0
  386. package/dist/collection/components/refresher-content/refresher-content.js +1 -1
  387. package/dist/collection/components/reorder/reorder.js +1 -1
  388. package/dist/collection/components/reorder-group/reorder-group.js +1 -1
  389. package/dist/collection/components/ripple-effect/ripple-effect.js +1 -1
  390. package/dist/collection/components/router-link/router-link.css +1 -1
  391. package/dist/collection/components/router-link/router-link.js +2 -2
  392. package/dist/collection/components/router-link/test/a11y/router-link.e2e.js +23 -0
  393. package/dist/collection/components/router-outlet/router-outlet.js +1 -1
  394. package/dist/collection/components/row/row.js +1 -1
  395. package/dist/collection/components/searchbar/searchbar.ios.css +11 -59
  396. package/dist/collection/components/searchbar/searchbar.js +4 -4
  397. package/dist/collection/components/searchbar/searchbar.md.css +10 -82
  398. package/dist/collection/components/segment/segment.js +2 -2
  399. package/dist/collection/components/segment/test/a11y/segment.e2e.js +23 -0
  400. package/dist/collection/components/segment-button/segment-button.ios.css +3 -3
  401. package/dist/collection/components/segment-button/segment-button.js +3 -3
  402. package/dist/collection/components/segment-button/segment-button.md.css +2 -2
  403. package/dist/collection/components/select/select.ios.css +10 -81
  404. package/dist/collection/components/select/select.js +64 -173
  405. package/dist/collection/components/select/select.md.css +38 -169
  406. package/dist/collection/components/select/test/a11y/select.e2e.js +68 -4
  407. package/dist/collection/components/select-option/select-option.js +1 -1
  408. package/dist/collection/components/select-popover/select-popover.js +1 -1
  409. package/dist/collection/components/select-popover/select-popover.md.css +4 -4
  410. package/dist/collection/components/select-popover/test/a11y/select-popover.e2e.js +32 -0
  411. package/dist/collection/components/skeleton-text/skeleton-text.js +2 -2
  412. package/dist/collection/components/spinner/spinner.js +1 -1
  413. package/dist/collection/components/split-pane/split-pane.ios.css +3 -55
  414. package/dist/collection/components/split-pane/split-pane.js +48 -14
  415. package/dist/collection/components/split-pane/split-pane.md.css +3 -55
  416. package/dist/collection/components/split-pane/test/wrapped-menu/split-pane.e2e.js +41 -0
  417. package/dist/collection/components/tab/tab.js +2 -2
  418. package/dist/collection/components/tab-bar/tab-bar.ios.css +4 -4
  419. package/dist/collection/components/tab-bar/tab-bar.js +2 -2
  420. package/dist/collection/components/tab-bar/tab-bar.md.css +3 -3
  421. package/dist/collection/components/tab-button/tab-button.ios.css +16 -94
  422. package/dist/collection/components/tab-button/tab-button.js +2 -2
  423. package/dist/collection/components/tab-button/tab-button.md.css +10 -93
  424. package/dist/collection/components/tabs/tabs.js +1 -1
  425. package/dist/collection/components/text/text.js +2 -2
  426. package/dist/collection/components/textarea/test/a11y/textarea.e2e.js +41 -3
  427. package/dist/collection/components/textarea/test/item/textarea.e2e.js +21 -0
  428. package/dist/collection/components/textarea/textarea.ios.css +13 -103
  429. package/dist/collection/components/textarea/textarea.js +5 -84
  430. package/dist/collection/components/textarea/textarea.md.css +37 -226
  431. package/dist/collection/components/thumbnail/thumbnail.js +1 -1
  432. package/dist/collection/components/title/title.ios.css +2 -21
  433. package/dist/collection/components/title/title.js +2 -2
  434. package/dist/collection/components/toast/test/a11y/toast.e2e.js +89 -24
  435. package/dist/collection/components/toast/toast.ios.css +8 -55
  436. package/dist/collection/components/toast/toast.js +9 -3
  437. package/dist/collection/components/toast/toast.md.css +10 -57
  438. package/dist/collection/components/toggle/test/a11y/toggle.e2e.js +8 -2
  439. package/dist/collection/components/toggle/toggle.ios.css +11 -90
  440. package/dist/collection/components/toggle/toggle.js +5 -101
  441. package/dist/collection/components/toggle/toggle.md.css +6 -91
  442. package/dist/collection/components/toolbar/toolbar.ios.css +2 -2
  443. package/dist/collection/components/toolbar/toolbar.js +2 -2
  444. package/dist/collection/components/toolbar/toolbar.md.css +1 -1
  445. package/dist/collection/css/test/a11y/typography.e2e.js +18 -0
  446. package/dist/collection/themes/test/colors/theme.e2e.js +170 -0
  447. package/dist/collection/utils/focus-trap.js +78 -0
  448. package/dist/collection/utils/gesture/button-active.js +1 -1
  449. package/dist/collection/utils/gesture/gesture-controller.js +1 -1
  450. package/dist/collection/utils/input-shims/input-shims.js +8 -1
  451. package/dist/collection/utils/native/status-bar.js +0 -11
  452. package/dist/collection/utils/overlays.js +14 -38
  453. package/dist/collection/utils/test/aria.spec.js +2 -1
  454. package/dist/collection/utils/test/overlays/overlays-scroll-blocking.spec.js +65 -0
  455. package/dist/collection/utils/test/playwright/generator.js +1 -0
  456. package/dist/collection/utils/test/playwright/page/utils/set-content.js +1 -1
  457. package/dist/docs.json +568 -330
  458. package/dist/esm/{animation-6a0c5338.js → animation-a4acf150.js} +1 -1
  459. package/dist/esm/{button-active-01502123.js → button-active-454e5c57.js} +2 -2
  460. package/dist/esm/{data-0f3ab200.js → data-691286f1.js} +1 -1
  461. package/dist/esm/{framework-delegate-ed4ba327.js → framework-delegate-1eb3236c.js} +1 -1
  462. package/dist/esm/{gesture-controller-1bf57181.js → gesture-controller-314a54f6.js} +1 -1
  463. package/dist/esm/{helpers-be245865.js → helpers-ae74b3c9.js} +1 -1
  464. package/dist/esm/{index-9c9d8b49.js → index-03086279.js} +2 -2
  465. package/dist/esm/{index-020f5464.js → index-1f563746.js} +1 -1
  466. package/dist/esm/{index-2cf77112.js → index-39782642.js} +2 -2
  467. package/dist/esm/{index-c43cf47f.js → index-5847f4a9.js} +3 -3
  468. package/dist/esm/{index-f3946ac1.js → index-66871a1d.js} +1 -1
  469. package/dist/esm/index.js +10 -10
  470. package/dist/esm/{input-shims-5329bbe8.js → input-shims-56c1f603.js} +10 -3
  471. package/dist/esm/{input.utils-a445f677.js → input.utils-482fc893.js} +1 -1
  472. package/dist/esm/ion-accordion_2.entry.js +2 -2
  473. package/dist/esm/ion-action-sheet.entry.js +11 -11
  474. package/dist/esm/ion-alert.entry.js +9 -9
  475. package/dist/esm/ion-app_8.entry.js +24 -25
  476. package/dist/esm/ion-avatar_3.entry.js +3 -3
  477. package/dist/esm/ion-back-button.entry.js +2 -2
  478. package/dist/esm/ion-backdrop.entry.js +1 -13
  479. package/dist/esm/ion-breadcrumb_2.entry.js +3 -3
  480. package/dist/esm/ion-button_2.entry.js +3 -3
  481. package/dist/esm/ion-card_5.entry.js +6 -6
  482. package/dist/esm/ion-checkbox.entry.js +7 -75
  483. package/dist/esm/ion-chip.entry.js +2 -2
  484. package/dist/esm/ion-col_3.entry.js +5 -5
  485. package/dist/esm/ion-datetime-button.entry.js +7 -7
  486. package/dist/esm/ion-datetime_3.entry.js +52 -106
  487. package/dist/esm/ion-fab_3.entry.js +10 -10
  488. package/dist/esm/ion-img.entry.js +2 -2
  489. package/dist/esm/ion-infinite-scroll_2.entry.js +7 -7
  490. package/dist/esm/ion-input.entry.js +10 -90
  491. package/dist/esm/ion-item-option_3.entry.js +11 -11
  492. package/dist/esm/ion-item_8.entry.js +43 -29
  493. package/dist/esm/ion-loading.entry.js +9 -8
  494. package/dist/esm/ion-menu_3.entry.js +38 -54
  495. package/dist/esm/ion-modal.entry.js +16 -33
  496. package/dist/esm/ion-nav_2.entry.js +11 -8
  497. package/dist/esm/ion-picker-column-option.entry.js +102 -0
  498. package/dist/esm/{ion-picker-column-internal.entry.js → ion-picker-column.entry.js} +122 -91
  499. package/dist/esm/{ion-picker-internal.entry.js → ion-picker.entry.js} +31 -24
  500. package/dist/esm/ion-popover.entry.js +10 -9
  501. package/dist/esm/ion-progress-bar.entry.js +7 -4
  502. package/dist/esm/ion-radio_2.entry.js +8 -77
  503. package/dist/esm/ion-range.entry.js +36 -89
  504. package/dist/esm/ion-refresher_2.entry.js +10 -10
  505. package/dist/esm/ion-reorder_2.entry.js +5 -5
  506. package/dist/esm/ion-ripple-effect.entry.js +1 -1
  507. package/dist/esm/ion-route_4.entry.js +4 -4
  508. package/dist/esm/ion-searchbar.entry.js +7 -7
  509. package/dist/esm/ion-segment_2.entry.js +9 -9
  510. package/dist/esm/ion-select_3.entry.js +73 -164
  511. package/dist/esm/ion-spinner.entry.js +1 -1
  512. package/dist/esm/ion-split-pane.entry.js +26 -16
  513. package/dist/esm/ion-tab-bar_2.entry.js +9 -9
  514. package/dist/esm/ion-tab_2.entry.js +5 -5
  515. package/dist/esm/ion-text.entry.js +2 -2
  516. package/dist/esm/ion-textarea.entry.js +10 -70
  517. package/dist/esm/ion-toast.entry.js +18 -12
  518. package/dist/esm/ion-toggle.entry.js +8 -64
  519. package/dist/esm/ionic.js +1 -1
  520. package/dist/esm/{ios.transition-da7d9344.js → ios.transition-a097dbf5.js} +3 -3
  521. package/dist/esm/loader.js +1 -1
  522. package/dist/esm/{md.transition-bdaf610c.js → md.transition-b4170ef7.js} +3 -3
  523. package/dist/esm/{notch-controller-6bd3e0f9.js → notch-controller-18bf9f76.js} +1 -1
  524. package/dist/esm/{overlays-9d04d779.js → overlays-4ba3b255.js} +91 -41
  525. package/dist/esm/{status-tap-cba549d9.js → status-tap-7a12f017.js} +2 -2
  526. package/dist/esm/{swipe-back-37a22d34.js → swipe-back-348f1971.js} +3 -3
  527. package/dist/esm-es5/{animation-6a0c5338.js → animation-a4acf150.js} +1 -1
  528. package/dist/esm-es5/button-active-454e5c57.js +4 -0
  529. package/dist/esm-es5/{framework-delegate-ed4ba327.js → framework-delegate-1eb3236c.js} +1 -1
  530. package/dist/esm-es5/{gesture-controller-1bf57181.js → gesture-controller-314a54f6.js} +1 -1
  531. package/dist/esm-es5/{helpers-be245865.js → helpers-ae74b3c9.js} +1 -1
  532. package/dist/esm-es5/{index-9c9d8b49.js → index-03086279.js} +1 -1
  533. package/dist/esm-es5/{index-020f5464.js → index-1f563746.js} +1 -1
  534. package/dist/esm-es5/{index-2cf77112.js → index-39782642.js} +1 -1
  535. package/dist/esm-es5/{index-c43cf47f.js → index-5847f4a9.js} +1 -1
  536. package/dist/esm-es5/{index-f3946ac1.js → index-66871a1d.js} +1 -1
  537. package/dist/esm-es5/index.js +1 -1
  538. package/dist/esm-es5/{input-shims-5329bbe8.js → input-shims-56c1f603.js} +1 -1
  539. package/dist/esm-es5/{input.utils-a445f677.js → input.utils-482fc893.js} +1 -1
  540. package/dist/esm-es5/ion-accordion_2.entry.js +1 -1
  541. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  542. package/dist/esm-es5/ion-alert.entry.js +1 -1
  543. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  544. package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
  545. package/dist/esm-es5/ion-back-button.entry.js +1 -1
  546. package/dist/esm-es5/ion-backdrop.entry.js +1 -1
  547. package/dist/esm-es5/ion-breadcrumb_2.entry.js +1 -1
  548. package/dist/esm-es5/ion-button_2.entry.js +1 -1
  549. package/dist/esm-es5/ion-card_5.entry.js +1 -1
  550. package/dist/esm-es5/ion-checkbox.entry.js +1 -1
  551. package/dist/esm-es5/ion-chip.entry.js +1 -1
  552. package/dist/esm-es5/ion-col_3.entry.js +1 -1
  553. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  554. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  555. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  556. package/dist/esm-es5/ion-img.entry.js +1 -1
  557. package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
  558. package/dist/esm-es5/ion-input.entry.js +1 -1
  559. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  560. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  561. package/dist/esm-es5/ion-loading.entry.js +1 -1
  562. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  563. package/dist/esm-es5/ion-modal.entry.js +1 -1
  564. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  565. package/dist/esm-es5/ion-picker-column-option.entry.js +4 -0
  566. package/dist/esm-es5/ion-picker-column.entry.js +4 -0
  567. package/dist/esm-es5/ion-picker.entry.js +4 -0
  568. package/dist/esm-es5/ion-popover.entry.js +1 -1
  569. package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
  570. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  571. package/dist/esm-es5/ion-range.entry.js +1 -1
  572. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  573. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  574. package/dist/esm-es5/ion-ripple-effect.entry.js +1 -1
  575. package/dist/esm-es5/ion-route_4.entry.js +1 -1
  576. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  577. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  578. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  579. package/dist/esm-es5/ion-spinner.entry.js +1 -1
  580. package/dist/esm-es5/ion-split-pane.entry.js +1 -1
  581. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  582. package/dist/esm-es5/ion-tab_2.entry.js +1 -1
  583. package/dist/esm-es5/ion-text.entry.js +1 -1
  584. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  585. package/dist/esm-es5/ion-toast.entry.js +1 -1
  586. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  587. package/dist/esm-es5/ionic.js +1 -1
  588. package/dist/esm-es5/{ios.transition-da7d9344.js → ios.transition-a097dbf5.js} +1 -1
  589. package/dist/esm-es5/loader.js +1 -1
  590. package/dist/esm-es5/{md.transition-bdaf610c.js → md.transition-b4170ef7.js} +1 -1
  591. package/dist/esm-es5/{notch-controller-6bd3e0f9.js → notch-controller-18bf9f76.js} +1 -1
  592. package/dist/esm-es5/overlays-4ba3b255.js +4 -0
  593. package/dist/esm-es5/{status-tap-cba549d9.js → status-tap-7a12f017.js} +1 -1
  594. package/dist/esm-es5/swipe-back-348f1971.js +4 -0
  595. package/dist/html.html-data.json +152 -37
  596. package/dist/ionic/index.esm.js +1 -1
  597. package/dist/ionic/ionic.esm.js +1 -1
  598. package/dist/ionic/{p-af4e42b4.entry.js → p-060fdc03.entry.js} +1 -1
  599. package/dist/ionic/{p-1bc9b5f5.system.js → p-069388dd.system.js} +1 -1
  600. package/dist/ionic/p-06fccad7.entry.js +4 -0
  601. package/dist/ionic/p-08dfa278.system.entry.js +4 -0
  602. package/dist/ionic/p-09872ec8.system.entry.js +4 -0
  603. package/dist/ionic/p-0ca35c1d.system.entry.js +4 -0
  604. package/dist/ionic/p-0efb1cce.entry.js +4 -0
  605. package/dist/ionic/p-134d4936.system.js +1 -1
  606. package/dist/ionic/{p-779aede8.js → p-15708968.js} +1 -1
  607. package/dist/ionic/p-1600d68c.system.entry.js +4 -0
  608. package/dist/ionic/p-19e79fe8.entry.js +4 -0
  609. package/dist/ionic/{p-6afef6c1.system.js → p-19f6ac6c.system.js} +1 -1
  610. package/dist/ionic/{p-d1f0eea5.system.entry.js → p-1a5ed3fe.system.entry.js} +1 -1
  611. package/dist/ionic/p-1a68de09.entry.js +4 -0
  612. package/dist/ionic/p-1bca443b.system.entry.js +4 -0
  613. package/dist/ionic/p-1c436e95.system.entry.js +4 -0
  614. package/dist/ionic/p-1ccbaaf3.system.entry.js +4 -0
  615. package/dist/ionic/{p-9aea6c76.entry.js → p-1ce172db.entry.js} +1 -1
  616. package/dist/ionic/p-1e0a18a1.system.entry.js +4 -0
  617. package/dist/ionic/p-1ea88de9.system.js +4 -0
  618. package/dist/ionic/p-1ed99eba.system.entry.js +4 -0
  619. package/dist/ionic/{p-c7c8429a.system.js → p-20d469d0.system.js} +1 -1
  620. package/dist/ionic/p-22d2a891.js +4 -0
  621. package/dist/ionic/p-25850474.entry.js +4 -0
  622. package/dist/ionic/{p-a7f34ffe.system.entry.js → p-2b3e0d99.system.entry.js} +1 -1
  623. package/dist/ionic/p-300b2cf1.entry.js +4 -0
  624. package/dist/ionic/{p-410cfe8e.system.js → p-3410a9cb.system.js} +1 -1
  625. package/dist/ionic/{p-74c240bf.system.entry.js → p-3bac30bf.system.entry.js} +1 -1
  626. package/dist/ionic/{p-31b2326e.system.js → p-3e1e14d9.system.js} +1 -1
  627. package/dist/ionic/p-41970e75.entry.js +4 -0
  628. package/dist/ionic/p-41b9cdd2.entry.js +4 -0
  629. package/dist/ionic/p-43322b14.js +4 -0
  630. package/dist/ionic/p-4523be60.entry.js +4 -0
  631. package/dist/ionic/p-466bdeae.entry.js +4 -0
  632. package/dist/ionic/p-4825e380.entry.js +4 -0
  633. package/dist/ionic/{p-62b7320a.system.js → p-4a8f173c.system.js} +1 -1
  634. package/dist/ionic/p-4ad02639.entry.js +4 -0
  635. package/dist/ionic/p-4c2cac66.entry.js +4 -0
  636. package/dist/ionic/{p-5af368cf.entry.js → p-5a055df4.entry.js} +1 -1
  637. package/dist/ionic/p-5afb6e48.entry.js +4 -0
  638. package/dist/ionic/p-5c3991e3.system.entry.js +4 -0
  639. package/dist/ionic/p-602494c6.entry.js +4 -0
  640. package/dist/ionic/p-62f15daf.system.entry.js +4 -0
  641. package/dist/ionic/{p-08656497.js → p-65d3f0e9.js} +1 -1
  642. package/dist/ionic/p-6657681b.system.entry.js +4 -0
  643. package/dist/ionic/p-6d95943d.system.js +4 -0
  644. package/dist/ionic/p-6e1fa025.js +4 -0
  645. package/dist/ionic/{p-517a4200.entry.js → p-6e5eeb35.entry.js} +1 -1
  646. package/dist/ionic/{p-0a3aef8e.entry.js → p-6f6d56f1.entry.js} +1 -1
  647. package/dist/ionic/{p-e5db268b.js → p-6fd26009.js} +1 -1
  648. package/dist/ionic/p-70218e28.system.entry.js +4 -0
  649. package/dist/ionic/p-72bc2484.system.entry.js +4 -0
  650. package/dist/ionic/p-7541ca9f.system.entry.js +4 -0
  651. package/dist/ionic/{p-56ee6d9a.js → p-760dbd5e.js} +1 -1
  652. package/dist/ionic/p-7665bbbc.system.entry.js +4 -0
  653. package/dist/ionic/{p-7c71b2d5.entry.js → p-77982637.entry.js} +1 -1
  654. package/dist/ionic/{p-534e85eb.system.entry.js → p-780ff3b5.system.entry.js} +1 -1
  655. package/dist/ionic/p-7a3fa32c.entry.js +4 -0
  656. package/dist/ionic/{p-c5c8c151.entry.js → p-7b44b443.entry.js} +1 -1
  657. package/dist/ionic/p-7cc01684.js +4 -0
  658. package/dist/ionic/{p-97ca0cb9.system.js → p-816476b0.system.js} +1 -1
  659. package/dist/ionic/p-81869a97.system.entry.js +4 -0
  660. package/dist/ionic/{p-2897c9d5.system.entry.js → p-82f5375e.system.entry.js} +1 -1
  661. package/dist/ionic/p-842777af.js +4 -0
  662. package/dist/ionic/p-85464e28.system.entry.js +4 -0
  663. package/dist/ionic/{p-cc24988a.entry.js → p-85cb4733.entry.js} +1 -1
  664. package/dist/ionic/{p-5f498870.system.entry.js → p-874510e9.system.entry.js} +1 -1
  665. package/dist/ionic/{p-bd313b73.system.js → p-8a50f8d6.system.js} +1 -1
  666. package/dist/ionic/{p-1b3ffb2f.js → p-8ab308e9.js} +1 -1
  667. package/dist/ionic/{p-ecf59a91.system.entry.js → p-8aeed464.system.entry.js} +1 -1
  668. package/dist/ionic/p-8ba5912c.entry.js +4 -0
  669. package/dist/ionic/{p-2c118b1e.js → p-8d4d902b.js} +1 -1
  670. package/dist/ionic/p-8e3ee444.system.entry.js +4 -0
  671. package/dist/ionic/{p-22d83d7d.system.entry.js → p-8e83b7f1.system.entry.js} +2 -2
  672. package/dist/ionic/{p-f5d2dc9b.js → p-8ededb41.js} +1 -1
  673. package/dist/ionic/p-91a72ad6.system.entry.js +4 -0
  674. package/dist/ionic/p-9382ebab.entry.js +4 -0
  675. package/dist/ionic/p-942c19cb.entry.js +4 -0
  676. package/dist/ionic/{p-01a0eccb.system.js → p-95e14c7b.system.js} +1 -1
  677. package/dist/ionic/p-96391c0e.entry.js +4 -0
  678. package/dist/ionic/{p-a5aba83a.entry.js → p-97135baa.entry.js} +1 -1
  679. package/dist/ionic/{p-bb3615f7.js → p-9b97df10.js} +1 -1
  680. package/dist/ionic/{p-a1036ce7.js → p-9d6f351e.js} +1 -1
  681. package/dist/ionic/{p-5fc8d5ef.system.js → p-9e3b3f15.system.js} +1 -1
  682. package/dist/ionic/{p-26dcbe9f.system.js → p-a06af32c.system.js} +1 -1
  683. package/dist/ionic/p-a375c9f6.system.entry.js +4 -0
  684. package/dist/ionic/p-a58ec401.js +4 -0
  685. package/dist/ionic/p-a5b7a286.entry.js +4 -0
  686. package/dist/ionic/{p-942a9358.js → p-a6cc38d4.js} +1 -1
  687. package/dist/ionic/{p-4694ca86.system.js → p-a71dc777.system.js} +1 -1
  688. package/dist/ionic/{p-0b58e9d1.system.js → p-a8cc0027.system.js} +1 -1
  689. package/dist/ionic/{p-317e3e37.system.entry.js → p-aaca8dd4.system.entry.js} +1 -1
  690. package/dist/ionic/p-ad2b216a.system.entry.js +4 -0
  691. package/dist/ionic/p-add93c7a.entry.js +4 -0
  692. package/dist/ionic/{p-93779e0b.entry.js → p-afcd4f49.entry.js} +1 -1
  693. package/dist/ionic/p-b1a9e85a.system.entry.js +4 -0
  694. package/dist/ionic/p-b4bb9cd0.system.entry.js +4 -0
  695. package/dist/ionic/p-baa409f1.system.entry.js +4 -0
  696. package/dist/ionic/p-bcb58446.entry.js +4 -0
  697. package/dist/ionic/p-c2336a9e.system.entry.js +4 -0
  698. package/dist/ionic/{p-833579b4.system.js → p-c38c5dfc.system.js} +1 -1
  699. package/dist/ionic/{p-6f3e6442.entry.js → p-c3a2e5cc.entry.js} +1 -1
  700. package/dist/ionic/{p-bb0bf325.system.entry.js → p-c5b77291.system.entry.js} +1 -1
  701. package/dist/ionic/p-c68e75ea.system.js +4 -0
  702. package/dist/ionic/{p-12a8643e.js → p-c880c809.js} +1 -1
  703. package/dist/ionic/{p-8a3d9b80.system.entry.js → p-cb0e4100.system.entry.js} +2 -2
  704. package/dist/ionic/p-cb3f2ab6.system.entry.js +4 -0
  705. package/dist/ionic/{p-fe320051.system.js → p-cb944b1a.system.js} +1 -1
  706. package/dist/ionic/p-cbc3840e.entry.js +4 -0
  707. package/dist/ionic/p-cd366840.system.entry.js +4 -0
  708. package/dist/ionic/p-cf852615.system.entry.js +4 -0
  709. package/dist/ionic/{p-5274fce5.system.entry.js → p-d4d0538c.system.entry.js} +1 -1
  710. package/dist/ionic/{p-a7a8e7d7.entry.js → p-d504bc71.entry.js} +1 -1
  711. package/dist/ionic/{p-439f2946.system.entry.js → p-da83d833.system.entry.js} +1 -1
  712. package/dist/ionic/p-dcfc297d.system.entry.js +4 -0
  713. package/dist/ionic/p-ddc4e717.entry.js +4 -0
  714. package/dist/ionic/p-ded27993.entry.js +4 -0
  715. package/dist/ionic/p-df7ea05d.entry.js +4 -0
  716. package/dist/ionic/p-e15eda82.system.js +4 -0
  717. package/dist/ionic/{p-238f5153.entry.js → p-e38b3c29.entry.js} +1 -1
  718. package/dist/ionic/p-e470466e.entry.js +4 -0
  719. package/dist/ionic/{p-ad9c0d92.system.entry.js → p-ebe0be94.system.entry.js} +1 -1
  720. package/dist/ionic/{p-bd5c8c40.entry.js → p-ef99a759.entry.js} +1 -1
  721. package/dist/ionic/{p-f7e9141e.entry.js → p-f16bfd53.entry.js} +1 -1
  722. package/dist/ionic/p-f2473724.js +4 -0
  723. package/dist/ionic/{p-b0e68334.entry.js → p-f3d6085c.entry.js} +1 -1
  724. package/dist/ionic/p-f6a6b7ef.system.entry.js +4 -0
  725. package/dist/ionic/p-f71082f7.entry.js +4 -0
  726. package/dist/ionic/p-f7ed6a44.system.entry.js +4 -0
  727. package/dist/ionic/p-fc5ddbf6.entry.js +4 -0
  728. package/dist/ionic/p-fd94dd20.system.entry.js +4 -0
  729. package/dist/ionic/p-feb66f6f.entry.js +4 -0
  730. package/dist/types/components/action-sheet/action-sheet-interface.d.ts +8 -0
  731. package/dist/types/components/backdrop/backdrop.d.ts +0 -3
  732. package/dist/types/components/checkbox/checkbox.d.ts +1 -24
  733. package/dist/types/components/datetime/datetime.d.ts +0 -1
  734. package/dist/types/components/datetime/utils/data.d.ts +11 -7
  735. package/dist/types/components/input/input.d.ts +0 -26
  736. package/dist/types/components/menu/menu.d.ts +12 -4
  737. package/dist/types/components/modal/utils.d.ts +0 -4
  738. package/dist/types/components/nav/nav.d.ts +4 -1
  739. package/dist/types/components/picker/picker-interfaces.d.ts +8 -0
  740. package/dist/types/components/picker/picker.d.ts +75 -133
  741. package/dist/types/components/picker-column/picker-column-interfaces.d.ts +4 -0
  742. package/dist/types/components/picker-column/picker-column.d.ts +99 -39
  743. package/dist/types/components/picker-column-option/picker-column-option.d.ts +66 -0
  744. package/dist/types/components/picker-legacy/picker.d.ts +158 -0
  745. package/dist/types/components/picker-legacy-column/picker-column.d.ts +46 -0
  746. package/dist/types/components/radio/radio.d.ts +1 -24
  747. package/dist/types/components/range/range.d.ts +1 -21
  748. package/dist/types/components/select/select.d.ts +0 -15
  749. package/dist/types/components/split-pane/split-pane.d.ts +14 -2
  750. package/dist/types/components/textarea/textarea.d.ts +0 -17
  751. package/dist/types/components/toast/toast-interface.d.ts +0 -4
  752. package/dist/types/components/toggle/toggle.d.ts +1 -21
  753. package/dist/types/components.d.ts +160 -195
  754. package/dist/types/interface.d.ts +1 -1
  755. package/dist/types/utils/config.d.ts +2 -2
  756. package/dist/types/utils/focus-trap.d.ts +35 -0
  757. package/dist/types/utils/gesture/gesture-controller.d.ts +1 -0
  758. package/dist/types/utils/native/status-bar.d.ts +0 -1
  759. package/dist/types/utils/overlays.d.ts +5 -8
  760. package/dist/types/utils/test/playwright/generator.d.ts +3 -1
  761. package/hydrate/index.js +12920 -13328
  762. package/package.json +1 -1
  763. package/components/form-controller.js +0 -64
  764. package/components/ion-picker-column-internal.d.ts +0 -11
  765. package/components/ion-picker-column-internal.js +0 -9
  766. package/components/ion-picker-internal.js +0 -9
  767. package/components/picker-column-internal.js +0 -392
  768. package/dist/cjs/form-controller-c83330c0.js +0 -66
  769. package/dist/collection/components/checkbox/test/legacy/basic/checkbox.e2e.js +0 -68
  770. package/dist/collection/components/checkbox/test/legacy/indeterminate/checkbox.e2e.js +0 -14
  771. package/dist/collection/components/input/test/item/input.spec.js +0 -24
  772. package/dist/collection/components/input/test/legacy/a11y/input.e2e.js +0 -28
  773. package/dist/collection/components/input/test/legacy/basic/input.e2e.js +0 -181
  774. package/dist/collection/components/input/test/legacy/clear-on-edit/input.e2e.js +0 -55
  775. package/dist/collection/components/input/test/legacy/input-events.e2e.js +0 -71
  776. package/dist/collection/components/input/test/legacy/masking/input.e2e.js +0 -26
  777. package/dist/collection/components/input/test/legacy/spec/input.e2e.js +0 -16
  778. package/dist/collection/components/item/test/counter/item.e2e.js +0 -49
  779. package/dist/collection/components/item/test/highlight/item.e2e.js +0 -14
  780. package/dist/collection/components/item/test/legacy/alignment/item.e2e.js +0 -14
  781. package/dist/collection/components/item/test/legacy/fill/item.e2e.js +0 -14
  782. package/dist/collection/components/item/test/legacy/form/item.e2e.js +0 -14
  783. package/dist/collection/components/picker-column-internal/picker-column-internal.js +0 -566
  784. package/dist/collection/components/picker-column-internal/test/disabled/picker-column-internal.e2e.js +0 -162
  785. package/dist/collection/components/picker-internal/picker-internal.js +0 -560
  786. package/dist/collection/components/picker-internal/test/basic/picker-internal.e2e.js +0 -118
  787. package/dist/collection/components/radio/test/legacy/a11y/radio.e2e.js +0 -53
  788. package/dist/collection/components/radio/test/legacy/basic/radio.e2e.js +0 -127
  789. package/dist/collection/components/radio-group/test/legacy/basic/radio-group.e2e.js +0 -122
  790. package/dist/collection/components/radio-group/test/legacy/form/radio-group.e2e.js +0 -30
  791. package/dist/collection/components/radio-group/test/legacy/search/radio-group.e2e.js +0 -38
  792. package/dist/collection/components/range/test/legacy/a11y/range.e2e.js +0 -49
  793. package/dist/collection/components/range/test/legacy/active-bar-start/range.e2e.js +0 -14
  794. package/dist/collection/components/range/test/legacy/basic/range.e2e.js +0 -75
  795. package/dist/collection/components/range/test/legacy/range-events.e2e.js +0 -90
  796. package/dist/collection/components/range/test/legacy/scroll-target/range.e2e.js +0 -32
  797. package/dist/collection/components/select/test/legacy/async/select.e2e.js +0 -19
  798. package/dist/collection/components/select/test/legacy/basic/select.e2e.js +0 -145
  799. package/dist/collection/components/select/test/legacy/compare-with/select.e2e.js +0 -67
  800. package/dist/collection/components/select/test/legacy/custom/custom.e2e.js +0 -13
  801. package/dist/collection/components/select/test/legacy/single-value/select.e2e.js +0 -16
  802. package/dist/collection/components/select/test/legacy/spec/select.e2e.js +0 -14
  803. package/dist/collection/components/select/test/legacy/standalone/select.e2e.js +0 -18
  804. package/dist/collection/components/select/test/legacy/wrapping/select.e2e.js +0 -39
  805. package/dist/collection/components/textarea/test/legacy/a11y/textarea.e2e.js +0 -31
  806. package/dist/collection/components/textarea/test/legacy/autogrow/textarea.e2e.js +0 -58
  807. package/dist/collection/components/textarea/test/legacy/basic/textarea.e2e.js +0 -43
  808. package/dist/collection/components/textarea/test/legacy/clear-on-edit/textarea.e2e.js +0 -25
  809. package/dist/collection/components/toggle/test/legacy/basic/toggle.e2e.js +0 -83
  810. package/dist/collection/components/toggle/test/legacy/enable-on-off-labels/toggle.e2e.js +0 -37
  811. package/dist/collection/components/toggle/test/legacy/sizes/power-outline.svg +0 -1
  812. package/dist/collection/components/toggle/test/legacy/sizes/toggle.e2e.js +0 -14
  813. package/dist/esm/form-controller-21dd62b1.js +0 -64
  814. package/dist/esm-es5/button-active-01502123.js +0 -4
  815. package/dist/esm-es5/form-controller-21dd62b1.js +0 -4
  816. package/dist/esm-es5/ion-picker-column-internal.entry.js +0 -4
  817. package/dist/esm-es5/ion-picker-internal.entry.js +0 -4
  818. package/dist/esm-es5/overlays-9d04d779.js +0 -4
  819. package/dist/esm-es5/swipe-back-37a22d34.js +0 -4
  820. package/dist/ionic/p-010d5feb.system.entry.js +0 -4
  821. package/dist/ionic/p-02370c2e.system.entry.js +0 -4
  822. package/dist/ionic/p-077f2815.system.entry.js +0 -4
  823. package/dist/ionic/p-13fecc8b.entry.js +0 -4
  824. package/dist/ionic/p-167d876d.entry.js +0 -4
  825. package/dist/ionic/p-16e3ba5d.entry.js +0 -4
  826. package/dist/ionic/p-18ba7085.system.entry.js +0 -4
  827. package/dist/ionic/p-208c40aa.system.entry.js +0 -4
  828. package/dist/ionic/p-26aa2e31.entry.js +0 -4
  829. package/dist/ionic/p-2eb313e5.entry.js +0 -4
  830. package/dist/ionic/p-3096c7af.entry.js +0 -4
  831. package/dist/ionic/p-378464fa.entry.js +0 -4
  832. package/dist/ionic/p-37ac2b8f.entry.js +0 -4
  833. package/dist/ionic/p-38a75a00.entry.js +0 -4
  834. package/dist/ionic/p-3f5d82c9.js +0 -4
  835. package/dist/ionic/p-411244d7.system.js +0 -4
  836. package/dist/ionic/p-426b54ec.system.entry.js +0 -4
  837. package/dist/ionic/p-43bbda95.system.entry.js +0 -4
  838. package/dist/ionic/p-44145d23.entry.js +0 -4
  839. package/dist/ionic/p-4535eff0.system.entry.js +0 -4
  840. package/dist/ionic/p-45e15529.entry.js +0 -4
  841. package/dist/ionic/p-462b7b8d.entry.js +0 -4
  842. package/dist/ionic/p-46bcc2f5.js +0 -4
  843. package/dist/ionic/p-47ba1196.entry.js +0 -4
  844. package/dist/ionic/p-481fce9a.entry.js +0 -4
  845. package/dist/ionic/p-48e48816.system.entry.js +0 -4
  846. package/dist/ionic/p-4aad8a93.js +0 -4
  847. package/dist/ionic/p-4c79142c.system.entry.js +0 -4
  848. package/dist/ionic/p-4e657e07.entry.js +0 -4
  849. package/dist/ionic/p-578c7107.js +0 -4
  850. package/dist/ionic/p-693832fb.entry.js +0 -4
  851. package/dist/ionic/p-6d075752.entry.js +0 -4
  852. package/dist/ionic/p-71999ab7.system.entry.js +0 -4
  853. package/dist/ionic/p-727a4979.system.entry.js +0 -4
  854. package/dist/ionic/p-74fa0a29.system.js +0 -4
  855. package/dist/ionic/p-792629d9.entry.js +0 -4
  856. package/dist/ionic/p-7b3d8eec.system.entry.js +0 -4
  857. package/dist/ionic/p-7f9440bc.system.entry.js +0 -4
  858. package/dist/ionic/p-839ea604.js +0 -4
  859. package/dist/ionic/p-83cdb98f.system.entry.js +0 -4
  860. package/dist/ionic/p-86be82c0.entry.js +0 -4
  861. package/dist/ionic/p-8a46dbfe.system.entry.js +0 -4
  862. package/dist/ionic/p-941f492e.entry.js +0 -4
  863. package/dist/ionic/p-94ac85ab.entry.js +0 -4
  864. package/dist/ionic/p-95a30504.system.entry.js +0 -4
  865. package/dist/ionic/p-96fa4567.system.entry.js +0 -4
  866. package/dist/ionic/p-98e263df.system.entry.js +0 -4
  867. package/dist/ionic/p-9b7d721e.system.entry.js +0 -4
  868. package/dist/ionic/p-9ce15e22.entry.js +0 -4
  869. package/dist/ionic/p-9d9c50a0.js +0 -4
  870. package/dist/ionic/p-a55fee0d.system.entry.js +0 -4
  871. package/dist/ionic/p-a9e462b3.entry.js +0 -4
  872. package/dist/ionic/p-aadc0fc9.system.entry.js +0 -4
  873. package/dist/ionic/p-b340444b.entry.js +0 -4
  874. package/dist/ionic/p-bc43ca1f.system.entry.js +0 -4
  875. package/dist/ionic/p-bf260dee.system.entry.js +0 -4
  876. package/dist/ionic/p-c093d16d.system.entry.js +0 -4
  877. package/dist/ionic/p-c977af5e.entry.js +0 -4
  878. package/dist/ionic/p-ccca27da.system.entry.js +0 -4
  879. package/dist/ionic/p-cfb4d7e0.js +0 -4
  880. package/dist/ionic/p-d1f6231b.system.js +0 -4
  881. package/dist/ionic/p-d64ed0f8.entry.js +0 -4
  882. package/dist/ionic/p-d80d274f.system.entry.js +0 -4
  883. package/dist/ionic/p-d8c3f2f5.system.entry.js +0 -4
  884. package/dist/ionic/p-d8e97396.system.entry.js +0 -4
  885. package/dist/ionic/p-d9b2497b.entry.js +0 -4
  886. package/dist/ionic/p-dd5cc4c8.js +0 -4
  887. package/dist/ionic/p-e1a33d7e.entry.js +0 -4
  888. package/dist/ionic/p-e23090ae.system.entry.js +0 -4
  889. package/dist/ionic/p-e3964478.entry.js +0 -4
  890. package/dist/ionic/p-e938745c.system.entry.js +0 -4
  891. package/dist/ionic/p-ea04a24e.entry.js +0 -4
  892. package/dist/ionic/p-ebc1ca90.system.js +0 -4
  893. package/dist/ionic/p-edae1e04.system.entry.js +0 -4
  894. package/dist/ionic/p-fbd01db3.system.js +0 -4
  895. package/dist/types/components/picker-column-internal/picker-column-internal-interfaces.d.ts +0 -5
  896. package/dist/types/components/picker-column-internal/picker-column-internal.d.ts +0 -102
  897. package/dist/types/components/picker-internal/picker-internal-interfaces.d.ts +0 -8
  898. package/dist/types/components/picker-internal/picker-internal.d.ts +0 -102
  899. /package/dist/collection/components/{picker-internal/picker-internal-interfaces.js → picker/picker-interfaces.js} +0 -0
  900. /package/dist/collection/components/{picker-column-internal/picker-column-internal-interfaces.js → picker-column/picker-column-interfaces.js} +0 -0
  901. /package/dist/collection/components/{picker → picker-legacy}/animations/ios.enter.js +0 -0
  902. /package/dist/collection/components/{picker → picker-legacy}/animations/ios.leave.js +0 -0
  903. /package/dist/collection/components/{picker → picker-legacy}/picker-interface.js +0 -0
  904. /package/dist/collection/components/{picker-column → picker-legacy-column}/test/test.utils.js +0 -0
  905. /package/dist/esm-es5/{data-0f3ab200.js → data-691286f1.js} +0 -0
  906. /package/dist/ionic/{p-f7dce541.js → p-5289aade.js} +0 -0
  907. /package/dist/ionic/{p-7330c044.system.js → p-66e6860f.system.js} +0 -0
  908. /package/dist/types/components/{picker → picker-legacy}/animations/ios.enter.d.ts +0 -0
  909. /package/dist/types/components/{picker → picker-legacy}/animations/ios.leave.d.ts +0 -0
  910. /package/dist/types/components/{picker → picker-legacy}/picker-interface.d.ts +0 -0
  911. /package/dist/types/components/{picker-column → picker-legacy-column}/test/test.utils.d.ts +0 -0
@@ -2,368 +2,411 @@
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
4
  import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
5
- import { m as clamp } from './helpers.js';
6
- import { b as hapticSelectionChanged, h as hapticSelectionEnd, a as hapticSelectionStart } from './haptic.js';
7
- import { g as getClassMap } from './theme.js';
8
- import { b as getIonMode } from './ionic-global.js';
5
+ import { d as doc } from './index5.js';
6
+ import { r as raf, g as getElementRoot } from './helpers.js';
7
+ import { a as hapticSelectionStart, b as hapticSelectionChanged, h as hapticSelectionEnd } from './haptic.js';
8
+ import { a as isPlatform, b as getIonMode } from './ionic-global.js';
9
+ import { c as createColorClasses } from './theme.js';
9
10
 
10
- const pickerColumnIosCss = ".picker-col{display:-ms-flexbox;display:flex;position:relative;-ms-flex:1;flex:1;-ms-flex-pack:center;justify-content:center;height:100%;-webkit-box-sizing:content-box;box-sizing:content-box;contain:content}.picker-opts{position:relative;-ms-flex:1;flex:1;max-width:100%}.picker-opt{top:0;display:block;position:absolute;width:100%;border:0;text-align:center;text-overflow:ellipsis;white-space:nowrap;contain:strict;overflow:hidden;will-change:transform}@supports (inset-inline-start: 0){.picker-opt{inset-inline-start:0}}@supports not (inset-inline-start: 0){.picker-opt{left:0}:host-context([dir=rtl]) .picker-opt{left:unset;right:unset;right:0}[dir=rtl] .picker-opt{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){.picker-opt:dir(rtl){left:unset;right:unset;right:0}}}.picker-opt.picker-opt-disabled{pointer-events:none}.picker-opt-disabled{opacity:0}.picker-opts-left{-ms-flex-pack:start;justify-content:flex-start}.picker-opts-right{-ms-flex-pack:end;justify-content:flex-end}.picker-opt:active,.picker-opt:focus{outline:none}.picker-prefix{position:relative;-ms-flex:1;flex:1;text-align:end;white-space:nowrap}.picker-suffix{position:relative;-ms-flex:1;flex:1;text-align:start;white-space:nowrap}.picker-col{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:0;padding-bottom:0;-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.picker-prefix,.picker-suffix,.picker-opts{top:77px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;color:inherit;font-size:20px;line-height:42px;pointer-events:none}.picker-opt{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-transform-origin:center center;transform-origin:center center;height:46px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out;background:transparent;color:inherit;font-size:20px;line-height:42px;-webkit-backface-visibility:hidden;backface-visibility:hidden;pointer-events:auto}:host-context([dir=rtl]) .picker-opt{-webkit-transform-origin:calc(100% - center) center;transform-origin:calc(100% - center) center}[dir=rtl] .picker-opt{-webkit-transform-origin:calc(100% - center) center;transform-origin:calc(100% - center) center}@supports selector(:dir(rtl)){.picker-opt:dir(rtl){-webkit-transform-origin:calc(100% - center) center;transform-origin:calc(100% - center) center}}";
11
- const IonPickerColumnIosStyle0 = pickerColumnIosCss;
11
+ const pickerColumnCss = ":host{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;max-width:100%;height:200px;font-size:22px;text-align:center}.picker-opts{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0px;padding-bottom:0px;min-width:26px;max-height:200px;outline:none;text-align:inherit;-webkit-scroll-snap-type:y mandatory;-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory;overflow-x:hidden;overflow-y:scroll;scrollbar-width:none}.picker-item-empty{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;display:block;width:100%;height:34px;border:0px;outline:none;background:transparent;color:inherit;font-family:var(--ion-font-family, inherit);font-size:inherit;line-height:34px;text-align:inherit;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.picker-opts::-webkit-scrollbar{display:none}::slotted(ion-picker-column-option){display:block;scroll-snap-align:center}.picker-item-empty,:host(:not([disabled])) ::slotted(ion-picker-column-option.option-disabled){scroll-snap-align:none}::slotted([slot=prefix]),::slotted([slot=suffix]){max-width:200px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::slotted([slot=prefix]){-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0;padding-bottom:0;-ms-flex-pack:end;justify-content:end}::slotted([slot=suffix]){-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0;padding-bottom:0;-ms-flex-pack:start;justify-content:start}:host(.picker-column-disabled) .picker-opts{overflow-y:hidden}:host(.picker-column-disabled) ::slotted(ion-picker-column-option){cursor:default;opacity:0.4;pointer-events:none}@media (any-hover: hover){:host(:focus) .picker-opts{outline:none;background:rgba(var(--ion-color-base-rgb), 0.2)}}";
12
+ const IonPickerColumnStyle0 = pickerColumnCss;
12
13
 
13
- const pickerColumnMdCss = ".picker-col{display:-ms-flexbox;display:flex;position:relative;-ms-flex:1;flex:1;-ms-flex-pack:center;justify-content:center;height:100%;-webkit-box-sizing:content-box;box-sizing:content-box;contain:content}.picker-opts{position:relative;-ms-flex:1;flex:1;max-width:100%}.picker-opt{top:0;display:block;position:absolute;width:100%;border:0;text-align:center;text-overflow:ellipsis;white-space:nowrap;contain:strict;overflow:hidden;will-change:transform}@supports (inset-inline-start: 0){.picker-opt{inset-inline-start:0}}@supports not (inset-inline-start: 0){.picker-opt{left:0}:host-context([dir=rtl]) .picker-opt{left:unset;right:unset;right:0}[dir=rtl] .picker-opt{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){.picker-opt:dir(rtl){left:unset;right:unset;right:0}}}.picker-opt.picker-opt-disabled{pointer-events:none}.picker-opt-disabled{opacity:0}.picker-opts-left{-ms-flex-pack:start;justify-content:flex-start}.picker-opts-right{-ms-flex-pack:end;justify-content:flex-end}.picker-opt:active,.picker-opt:focus{outline:none}.picker-prefix{position:relative;-ms-flex:1;flex:1;text-align:end;white-space:nowrap}.picker-suffix{position:relative;-ms-flex:1;flex:1;text-align:start;white-space:nowrap}.picker-col{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:0;padding-bottom:0;-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.picker-prefix,.picker-suffix,.picker-opts{top:77px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;color:inherit;font-size:22px;line-height:42px;pointer-events:none}.picker-opt{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;height:43px;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out;background:transparent;color:inherit;font-size:22px;line-height:42px;-webkit-backface-visibility:hidden;backface-visibility:hidden;pointer-events:auto}.picker-prefix,.picker-suffix,.picker-opt.picker-opt-selected{color:var(--ion-color-primary, #3880ff)}";
14
- const IonPickerColumnMdStyle0 = pickerColumnMdCss;
15
-
16
- const PickerColumnCmp = /*@__PURE__*/ proxyCustomElement(class PickerColumnCmp extends HTMLElement {
14
+ const PickerColumn = /*@__PURE__*/ proxyCustomElement(class PickerColumn extends HTMLElement {
17
15
  constructor() {
18
16
  super();
19
17
  this.__registerHost();
20
- this.ionPickerColChange = createEvent(this, "ionPickerColChange", 7);
21
- this.optHeight = 0;
22
- this.rotateFactor = 0;
23
- this.scaleFactor = 1;
24
- this.velocity = 0;
25
- this.y = 0;
26
- this.noAnimate = true;
27
- // `colDidChange` is a flag that gets set when the column is changed
28
- // dynamically. When this flag is set, the column will refresh
29
- // after the component re-renders to incorporate the new column data.
30
- // This is necessary because `this.refresh` queries for the option elements,
31
- // so it needs to wait for the latest elements to be available in the DOM.
32
- // Ex: column is created with 3 options. User updates the column data
33
- // to have 5 options. The column will still think it only has 3 options.
34
- this.colDidChange = false;
35
- this.col = undefined;
36
- }
37
- colChanged() {
38
- this.colDidChange = true;
39
- }
40
- async connectedCallback() {
41
- let pickerRotateFactor = 0;
42
- let pickerScaleFactor = 0.81;
43
- const mode = getIonMode(this);
44
- if (mode === 'ios') {
45
- pickerRotateFactor = -0.46;
46
- pickerScaleFactor = 1;
47
- }
48
- this.rotateFactor = pickerRotateFactor;
49
- this.scaleFactor = pickerScaleFactor;
50
- this.gesture = (await import('./index3.js')).createGesture({
51
- el: this.el,
52
- gestureName: 'picker-swipe',
53
- gesturePriority: 100,
54
- threshold: 0,
55
- passive: false,
56
- onStart: (ev) => this.onStart(ev),
57
- onMove: (ev) => this.onMove(ev),
58
- onEnd: (ev) => this.onEnd(ev),
59
- });
60
- this.gesture.enable();
61
- // Options have not been initialized yet
62
- // Animation must be disabled through the `noAnimate` flag
63
- // Otherwise, the options will render
64
- // at the top of the column and transition down
65
- this.tmrId = setTimeout(() => {
66
- this.noAnimate = false;
67
- // After initialization, `refresh()` will be called
68
- // At this point, animation will be enabled. The options will
69
- // animate as they are being selected.
70
- this.refresh(true);
71
- }, 250);
72
- }
73
- componentDidLoad() {
74
- this.onDomChange();
75
- }
76
- componentDidUpdate() {
77
- // Options may have changed since last update.
78
- if (this.colDidChange) {
79
- // Animation must be disabled through the `onDomChange` parameter.
80
- // Otherwise, the recently added options will render
81
- // at the top of the column and transition down
82
- this.onDomChange(true, false);
83
- this.colDidChange = false;
84
- }
85
- }
86
- disconnectedCallback() {
87
- if (this.rafId !== undefined)
88
- cancelAnimationFrame(this.rafId);
89
- if (this.tmrId)
90
- clearTimeout(this.tmrId);
91
- if (this.gesture) {
92
- this.gesture.destroy();
93
- this.gesture = undefined;
94
- }
95
- }
96
- emitColChange() {
97
- this.ionPickerColChange.emit(this.col);
98
- }
99
- setSelected(selectedIndex, duration) {
100
- // if there is a selected index, then figure out it's y position
101
- // if there isn't a selected index, then just use the top y position
102
- const y = selectedIndex > -1 ? -(selectedIndex * this.optHeight) : 0;
103
- this.velocity = 0;
104
- // set what y position we're at
105
- if (this.rafId !== undefined)
106
- cancelAnimationFrame(this.rafId);
107
- this.update(y, duration, true);
108
- this.emitColChange();
109
- }
110
- update(y, duration, saveY) {
111
- if (!this.optsEl) {
112
- return;
113
- }
114
- // ensure we've got a good round number :)
115
- let translateY = 0;
116
- let translateZ = 0;
117
- const { col, rotateFactor } = this;
118
- const prevSelected = col.selectedIndex;
119
- const selectedIndex = (col.selectedIndex = this.indexForY(-y));
120
- const durationStr = duration === 0 ? '' : duration + 'ms';
121
- const scaleStr = `scale(${this.scaleFactor})`;
122
- const children = this.optsEl.children;
123
- for (let i = 0; i < children.length; i++) {
124
- const button = children[i];
125
- const opt = col.options[i];
126
- const optOffset = i * this.optHeight + y;
127
- let transform = '';
128
- if (rotateFactor !== 0) {
129
- const rotateX = optOffset * rotateFactor;
130
- if (Math.abs(rotateX) <= 90) {
131
- translateY = 0;
132
- translateZ = 90;
133
- transform = `rotateX(${rotateX}deg) `;
134
- }
135
- else {
136
- translateY = -9999;
18
+ this.__attachShadow();
19
+ this.ionChange = createEvent(this, "ionChange", 7);
20
+ this.isScrolling = false;
21
+ this.isColumnVisible = false;
22
+ this.canExitInputMode = true;
23
+ this.centerPickerItemInView = (target, smooth = true, canExitInputMode = true) => {
24
+ const { isColumnVisible, scrollEl } = this;
25
+ if (isColumnVisible && scrollEl) {
26
+ // (Vertical offset from parent) - (three empty picker rows) + (half the height of the target to ensure the scroll triggers)
27
+ const top = target.offsetTop - 3 * target.clientHeight + target.clientHeight / 2;
28
+ if (scrollEl.scrollTop !== top) {
29
+ /**
30
+ * Setting this flag prevents input
31
+ * mode from exiting in the picker column's
32
+ * scroll callback. This is useful when the user manually
33
+ * taps an item or types on the keyboard as both
34
+ * of these can cause a scroll to occur.
35
+ */
36
+ this.canExitInputMode = canExitInputMode;
37
+ scrollEl.scroll({
38
+ top,
39
+ left: 0,
40
+ behavior: smooth ? 'smooth' : undefined,
41
+ });
137
42
  }
138
43
  }
139
- else {
140
- translateZ = 0;
141
- translateY = optOffset;
142
- }
143
- const selected = selectedIndex === i;
144
- transform += `translate3d(0px,${translateY}px,${translateZ}px) `;
145
- if (this.scaleFactor !== 1 && !selected) {
146
- transform += scaleStr;
147
- }
148
- // Update transition duration
149
- if (this.noAnimate) {
150
- opt.duration = 0;
151
- button.style.transitionDuration = '';
44
+ };
45
+ this.setPickerItemActiveState = (item, isActive) => {
46
+ if (isActive) {
47
+ item.classList.add(PICKER_ITEM_ACTIVE_CLASS);
152
48
  }
153
- else if (duration !== opt.duration) {
154
- opt.duration = duration;
155
- button.style.transitionDuration = durationStr;
49
+ else {
50
+ item.classList.remove(PICKER_ITEM_ACTIVE_CLASS);
156
51
  }
157
- // Update transform
158
- if (transform !== opt.transform) {
159
- opt.transform = transform;
52
+ };
53
+ /**
54
+ * When ionInputModeChange is emitted, each column
55
+ * needs to check if it is the one being made available
56
+ * for text entry.
57
+ */
58
+ this.inputModeChange = (ev) => {
59
+ if (!this.numericInput) {
60
+ return;
160
61
  }
161
- button.style.transform = transform;
62
+ const { useInputMode, inputModeColumn } = ev.detail;
162
63
  /**
163
- * Ensure that the select column
164
- * item has the selected class
64
+ * If inputModeColumn is undefined then this means
65
+ * all numericInput columns are being selected.
165
66
  */
166
- opt.selected = selected;
167
- if (selected) {
168
- button.classList.add(PICKER_OPT_SELECTED);
67
+ const isColumnActive = inputModeColumn === undefined || inputModeColumn === this.el;
68
+ if (!useInputMode || !isColumnActive) {
69
+ this.setInputModeActive(false);
70
+ return;
169
71
  }
170
- else {
171
- button.classList.remove(PICKER_OPT_SELECTED);
72
+ this.setInputModeActive(true);
73
+ };
74
+ /**
75
+ * Setting isActive will cause a re-render.
76
+ * As a result, we do not want to cause the
77
+ * re-render mid scroll as this will cause
78
+ * the picker column to jump back to
79
+ * whatever value was selected at the
80
+ * start of the scroll interaction.
81
+ */
82
+ this.setInputModeActive = (state) => {
83
+ if (this.isScrolling) {
84
+ this.scrollEndCallback = () => {
85
+ this.isActive = state;
86
+ };
87
+ return;
172
88
  }
173
- }
174
- this.col.prevSelected = prevSelected;
175
- if (saveY) {
176
- this.y = y;
177
- }
178
- if (this.lastIndex !== selectedIndex) {
179
- // have not set a last index yet
180
- hapticSelectionChanged();
181
- this.lastIndex = selectedIndex;
89
+ this.isActive = state;
90
+ };
91
+ /**
92
+ * When the column scrolls, the component
93
+ * needs to determine which item is centered
94
+ * in the view and will emit an ionChange with
95
+ * the item object.
96
+ */
97
+ this.initializeScrollListener = () => {
98
+ /**
99
+ * The haptics for the wheel picker are
100
+ * an iOS-only feature. As a result, they should
101
+ * be disabled on Android.
102
+ */
103
+ const enableHaptics = isPlatform('ios');
104
+ const { el, scrollEl } = this;
105
+ let timeout;
106
+ let activeEl = this.activeItem;
107
+ const scrollCallback = () => {
108
+ raf(() => {
109
+ if (!scrollEl)
110
+ return;
111
+ if (timeout) {
112
+ clearTimeout(timeout);
113
+ timeout = undefined;
114
+ }
115
+ if (!this.isScrolling) {
116
+ enableHaptics && hapticSelectionStart();
117
+ this.isScrolling = true;
118
+ }
119
+ /**
120
+ * Select item in the center of the column
121
+ * which is the month/year that we want to select
122
+ */
123
+ const bbox = scrollEl.getBoundingClientRect();
124
+ const centerX = bbox.x + bbox.width / 2;
125
+ const centerY = bbox.y + bbox.height / 2;
126
+ /**
127
+ * elementFromPoint returns the top-most element.
128
+ * This means that if an ion-backdrop is overlaying the
129
+ * picker then the appropriate picker column option will
130
+ * not be selected. To account for this, we use elementsFromPoint
131
+ * and use an Array.find to find the appropriate column option
132
+ * at that point.
133
+ *
134
+ * Additionally, the picker column could be used in the
135
+ * Shadow DOM (i.e. in ion-datetime) so we need to make
136
+ * sure we are choosing the correct host otherwise
137
+ * the elements returns by elementsFromPoint will be
138
+ * retargeted. To account for this, we check to see
139
+ * if the picker column has a parent shadow root. If
140
+ * so, we use that shadow root when doing elementsFromPoint.
141
+ * Otherwise, we just use the document.
142
+ */
143
+ const rootNode = el.getRootNode();
144
+ const hasParentShadow = rootNode instanceof ShadowRoot;
145
+ const referenceNode = hasParentShadow ? rootNode : doc;
146
+ /**
147
+ * If the reference node is undefined
148
+ * then it's likely that doc is undefined
149
+ * due to being in an SSR environment.
150
+ */
151
+ if (referenceNode === undefined) {
152
+ return;
153
+ }
154
+ const elementsAtPoint = referenceNode.elementsFromPoint(centerX, centerY);
155
+ /**
156
+ * elementsFromPoint can returns multiple elements
157
+ * so find the relevant picker column option if one exists.
158
+ */
159
+ const newActiveElement = elementsAtPoint.find((el) => el.tagName === 'ION-PICKER-COLUMN-OPTION');
160
+ if (activeEl !== undefined) {
161
+ this.setPickerItemActiveState(activeEl, false);
162
+ }
163
+ if (newActiveElement === undefined || newActiveElement.disabled) {
164
+ return;
165
+ }
166
+ /**
167
+ * If we are selecting a new value,
168
+ * we need to run haptics again.
169
+ */
170
+ if (newActiveElement !== activeEl) {
171
+ enableHaptics && hapticSelectionChanged();
172
+ if (this.canExitInputMode) {
173
+ /**
174
+ * The native iOS wheel picker
175
+ * only dismisses the keyboard
176
+ * once the selected item has changed
177
+ * as a result of a swipe
178
+ * from the user. If `canExitInputMode` is
179
+ * `false` then this means that the
180
+ * scroll is happening as a result of
181
+ * the `value` property programmatically changing
182
+ * either by an application or by the user via the keyboard.
183
+ */
184
+ this.exitInputMode();
185
+ }
186
+ }
187
+ activeEl = newActiveElement;
188
+ this.setPickerItemActiveState(newActiveElement, true);
189
+ timeout = setTimeout(() => {
190
+ this.isScrolling = false;
191
+ enableHaptics && hapticSelectionEnd();
192
+ /**
193
+ * Certain tasks (such as those that
194
+ * cause re-renders) should only be done
195
+ * once scrolling has finished, otherwise
196
+ * flickering may occur.
197
+ */
198
+ const { scrollEndCallback } = this;
199
+ if (scrollEndCallback) {
200
+ scrollEndCallback();
201
+ this.scrollEndCallback = undefined;
202
+ }
203
+ /**
204
+ * Reset this flag as the
205
+ * next scroll interaction could
206
+ * be a scroll from the user. In this
207
+ * case, we should exit input mode.
208
+ */
209
+ this.canExitInputMode = true;
210
+ this.setValue(newActiveElement.value);
211
+ }, 250);
212
+ });
213
+ };
214
+ /**
215
+ * Wrap this in an raf so that the scroll callback
216
+ * does not fire when component is initially shown.
217
+ */
218
+ raf(() => {
219
+ if (!scrollEl)
220
+ return;
221
+ scrollEl.addEventListener('scroll', scrollCallback);
222
+ this.destroyScrollListener = () => {
223
+ scrollEl.removeEventListener('scroll', scrollCallback);
224
+ };
225
+ });
226
+ };
227
+ /**
228
+ * Tells the parent picker to
229
+ * exit text entry mode. This is only called
230
+ * when the selected item changes during scroll, so
231
+ * we know that the user likely wants to scroll
232
+ * instead of type.
233
+ */
234
+ this.exitInputMode = () => {
235
+ const { parentEl } = this;
236
+ if (parentEl == null)
237
+ return;
238
+ parentEl.exitInputMode();
239
+ /**
240
+ * setInputModeActive only takes
241
+ * effect once scrolling stops to avoid
242
+ * a component re-render while scrolling.
243
+ * However, we want the visual active
244
+ * indicator to go away immediately, so
245
+ * we call classList.remove here.
246
+ */
247
+ this.el.classList.remove('picker-column-active');
248
+ };
249
+ this.isActive = false;
250
+ this.disabled = false;
251
+ this.value = undefined;
252
+ this.color = 'primary';
253
+ this.numericInput = false;
254
+ }
255
+ valueChange() {
256
+ if (this.isColumnVisible) {
257
+ /**
258
+ * Only scroll the active item into view when the picker column
259
+ * is actively visible to the user.
260
+ */
261
+ this.scrollActiveItemIntoView(true);
182
262
  }
183
263
  }
184
- decelerate() {
185
- if (this.velocity !== 0) {
186
- // still decelerating
187
- this.velocity *= DECELERATION_FRICTION;
188
- // do not let it go slower than a velocity of 1
189
- this.velocity = this.velocity > 0 ? Math.max(this.velocity, 1) : Math.min(this.velocity, -1);
190
- let y = this.y + this.velocity;
191
- if (y > this.minY) {
192
- // whoops, it's trying to scroll up farther than the options we have!
193
- y = this.minY;
194
- this.velocity = 0;
195
- }
196
- else if (y < this.maxY) {
197
- // gahh, it's trying to scroll down farther than we can!
198
- y = this.maxY;
199
- this.velocity = 0;
200
- }
201
- this.update(y, 0, true);
202
- const notLockedIn = Math.round(y) % this.optHeight !== 0 || Math.abs(this.velocity) > 1;
203
- if (notLockedIn) {
204
- // isn't locked in yet, keep decelerating until it is
205
- this.rafId = requestAnimationFrame(() => this.decelerate());
264
+ /**
265
+ * Only setup scroll listeners
266
+ * when the picker is visible, otherwise
267
+ * the container will have a scroll
268
+ * height of 0px.
269
+ */
270
+ componentWillLoad() {
271
+ /**
272
+ * We cache parentEl in a local variable
273
+ * so we don't need to keep accessing
274
+ * the class variable (which comes with
275
+ * a small performance hit)
276
+ */
277
+ const parentEl = (this.parentEl = this.el.closest('ion-picker'));
278
+ const visibleCallback = (entries) => {
279
+ const ev = entries[0];
280
+ if (ev.isIntersecting) {
281
+ const { activeItem, el } = this;
282
+ this.isColumnVisible = true;
283
+ /**
284
+ * Because this initial call to scrollActiveItemIntoView has to fire before
285
+ * the scroll listener is set up, we need to manage the active class manually.
286
+ */
287
+ const oldActive = getElementRoot(el).querySelector(`.${PICKER_ITEM_ACTIVE_CLASS}`);
288
+ if (oldActive) {
289
+ this.setPickerItemActiveState(oldActive, false);
290
+ }
291
+ this.scrollActiveItemIntoView();
292
+ if (activeItem) {
293
+ this.setPickerItemActiveState(activeItem, true);
294
+ }
295
+ this.initializeScrollListener();
206
296
  }
207
297
  else {
208
- this.velocity = 0;
209
- this.emitColChange();
210
- hapticSelectionEnd();
298
+ this.isColumnVisible = false;
299
+ if (this.destroyScrollListener) {
300
+ this.destroyScrollListener();
301
+ this.destroyScrollListener = undefined;
302
+ }
211
303
  }
304
+ };
305
+ /**
306
+ * Set the root to be the parent picker element
307
+ * This causes the IO callback
308
+ * to be fired in WebKit as soon as the element
309
+ * is visible. If we used the default root value
310
+ * then WebKit would only fire the IO callback
311
+ * after any animations (such as a modal transition)
312
+ * finished, and there would potentially be a flicker.
313
+ */
314
+ new IntersectionObserver(visibleCallback, { threshold: 0.001, root: this.parentEl }).observe(this.el);
315
+ if (parentEl !== null) {
316
+ // TODO(FW-2832): type
317
+ parentEl.addEventListener('ionInputModeChange', (ev) => this.inputModeChange(ev));
212
318
  }
213
- else if (this.y % this.optHeight !== 0) {
214
- // needs to still get locked into a position so options line up
215
- const currentPos = Math.abs(this.y % this.optHeight);
216
- // create a velocity in the direction it needs to scroll
217
- this.velocity = currentPos > this.optHeight / 2 ? 1 : -1;
218
- this.decelerate();
219
- }
220
- }
221
- indexForY(y) {
222
- return Math.min(Math.max(Math.abs(Math.round(y / this.optHeight)), 0), this.col.options.length - 1);
223
319
  }
224
- onStart(detail) {
225
- // We have to prevent default in order to block scrolling under the picker
226
- // but we DO NOT have to stop propagation, since we still want
227
- // some "click" events to capture
228
- if (detail.event.cancelable) {
229
- detail.event.preventDefault();
230
- }
231
- detail.event.stopPropagation();
232
- hapticSelectionStart();
233
- // reset everything
234
- if (this.rafId !== undefined)
235
- cancelAnimationFrame(this.rafId);
236
- const options = this.col.options;
237
- let minY = options.length - 1;
238
- let maxY = 0;
239
- for (let i = 0; i < options.length; i++) {
240
- if (!options[i].disabled) {
241
- minY = Math.min(minY, i);
242
- maxY = Math.max(maxY, i);
320
+ componentDidRender() {
321
+ const { el, activeItem, isColumnVisible, value } = this;
322
+ if (isColumnVisible && !activeItem) {
323
+ const firstOption = el.querySelector('ion-picker-column-option');
324
+ /**
325
+ * If the picker column does not have an active item and the current value
326
+ * does not match the first item in the picker column, that means
327
+ * the value is out of bounds. In this case, we assign the value to the
328
+ * first item to match the scroll position of the column.
329
+ *
330
+ */
331
+ if (firstOption !== null && firstOption.value !== value) {
332
+ this.setValue(firstOption.value);
243
333
  }
244
334
  }
245
- this.minY = -(minY * this.optHeight);
246
- this.maxY = -(maxY * this.optHeight);
247
335
  }
248
- onMove(detail) {
249
- if (detail.event.cancelable) {
250
- detail.event.preventDefault();
251
- }
252
- detail.event.stopPropagation();
253
- // update the scroll position relative to pointer start position
254
- let y = this.y + detail.deltaY;
255
- if (y > this.minY) {
256
- // scrolling up higher than scroll area
257
- y = Math.pow(y, 0.8);
258
- this.bounceFrom = y;
259
- }
260
- else if (y < this.maxY) {
261
- // scrolling down below scroll area
262
- y += Math.pow(this.maxY - y, 0.9);
263
- this.bounceFrom = y;
336
+ /** @internal */
337
+ async scrollActiveItemIntoView(smooth = false) {
338
+ const activeEl = this.activeItem;
339
+ if (activeEl) {
340
+ this.centerPickerItemInView(activeEl, smooth, false);
264
341
  }
265
- else {
266
- this.bounceFrom = 0;
267
- }
268
- this.update(y, 0, false);
269
342
  }
270
- onEnd(detail) {
271
- if (this.bounceFrom > 0) {
272
- // bounce back up
273
- this.update(this.minY, 100, true);
274
- this.emitColChange();
343
+ /**
344
+ * Sets the value prop and fires the ionChange event.
345
+ * This is used when we need to fire ionChange from
346
+ * user-generated events that cannot be caught with normal
347
+ * input/change event listeners.
348
+ * @internal
349
+ */
350
+ async setValue(value) {
351
+ if (this.disabled === true || this.value === value) {
275
352
  return;
276
353
  }
277
- else if (this.bounceFrom < 0) {
278
- // bounce back down
279
- this.update(this.maxY, 100, true);
280
- this.emitColChange();
281
- return;
282
- }
283
- this.velocity = clamp(-MAX_PICKER_SPEED, detail.velocityY * 23, MAX_PICKER_SPEED);
284
- if (this.velocity === 0 && detail.deltaY === 0) {
285
- const opt = detail.event.target.closest('.picker-opt');
286
- if (opt === null || opt === void 0 ? void 0 : opt.hasAttribute('opt-index')) {
287
- this.setSelected(parseInt(opt.getAttribute('opt-index'), 10), TRANSITION_DURATION);
288
- }
289
- }
290
- else {
291
- this.y += detail.deltaY;
292
- if (Math.abs(detail.velocityY) < 0.05) {
293
- const isScrollingUp = detail.deltaY > 0;
294
- const optHeightFraction = (Math.abs(this.y) % this.optHeight) / this.optHeight;
295
- if (isScrollingUp && optHeightFraction > 0.5) {
296
- this.velocity = Math.abs(this.velocity) * -1;
297
- }
298
- else if (!isScrollingUp && optHeightFraction <= 0.5) {
299
- this.velocity = Math.abs(this.velocity);
300
- }
301
- }
302
- this.decelerate();
303
- }
354
+ this.value = value;
355
+ this.ionChange.emit({ value });
304
356
  }
305
- refresh(forceRefresh, animated) {
306
- var _a;
307
- let min = this.col.options.length - 1;
308
- let max = 0;
309
- const options = this.col.options;
310
- for (let i = 0; i < options.length; i++) {
311
- if (!options[i].disabled) {
312
- min = Math.min(min, i);
313
- max = Math.max(max, i);
314
- }
315
- }
316
- /**
317
- * Only update selected value if column has a
318
- * velocity of 0. If it does not, then the
319
- * column is animating might land on
320
- * a value different than the value at
321
- * selectedIndex
322
- */
323
- if (this.velocity !== 0) {
324
- return;
325
- }
326
- const selectedIndex = clamp(min, (_a = this.col.selectedIndex) !== null && _a !== void 0 ? _a : 0, max);
327
- if (this.col.prevSelected !== selectedIndex || forceRefresh) {
328
- const y = selectedIndex * this.optHeight * -1;
329
- const duration = animated ? TRANSITION_DURATION : 0;
330
- this.velocity = 0;
331
- this.update(y, duration, true);
357
+ /**
358
+ * Sets focus on the scrollable container within the picker column.
359
+ * Use this method instead of the global `pickerColumn.focus()`.
360
+ */
361
+ async setFocus() {
362
+ if (this.scrollEl) {
363
+ this.scrollEl.focus();
332
364
  }
333
365
  }
334
- onDomChange(forceRefresh, animated) {
335
- const colEl = this.optsEl;
336
- if (colEl) {
337
- // DOM READ
338
- // We perfom a DOM read over a rendered item, this needs to happen after the first render or after the the column has changed
339
- this.optHeight = colEl.firstElementChild ? colEl.firstElementChild.clientHeight : 0;
340
- }
341
- this.refresh(forceRefresh, animated);
366
+ get activeItem() {
367
+ const { value } = this;
368
+ const options = Array.from(this.el.querySelectorAll('ion-picker-column-option'));
369
+ return options.find((option) => {
370
+ /**
371
+ * If the whole picker column is disabled, the current value should appear active
372
+ * If the current value item is specifically disabled, it should not appear active
373
+ */
374
+ if (!this.disabled && option.disabled) {
375
+ return false;
376
+ }
377
+ return option.value === value;
378
+ });
342
379
  }
343
380
  render() {
344
- const col = this.col;
381
+ const { color, disabled, isActive, numericInput } = this;
345
382
  const mode = getIonMode(this);
346
- 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: {
347
- 'max-width': this.col.columnWidth,
348
- } }, 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))));
383
+ return (h(Host, { key: '0b055a464237262bab4d99b2de320c9ea1312f29', class: createColorClasses(color, {
384
+ [mode]: true,
385
+ ['picker-column-active']: isActive,
386
+ ['picker-column-numeric-input']: numericInput,
387
+ ['picker-column-disabled']: disabled,
388
+ }) }, h("slot", { key: 'a162598e503c1f4eef59dbadaa5ecc11dc45d82c', name: "prefix" }), h("div", { key: '23f0370a1639adcdacde40fc59ced3cd49fc8e91', class: "picker-opts", tabindex: disabled ? undefined : 0, ref: (el) => {
389
+ this.scrollEl = el;
390
+ } }, 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" })));
349
391
  }
350
392
  get el() { return this; }
351
393
  static get watchers() { return {
352
- "col": ["colChanged"]
353
- }; }
354
- static get style() { return {
355
- ios: IonPickerColumnIosStyle0,
356
- md: IonPickerColumnMdStyle0
394
+ "value": ["valueChange"]
357
395
  }; }
358
- }, [32, "ion-picker-column", {
359
- "col": [16]
396
+ static get style() { return IonPickerColumnStyle0; }
397
+ }, [1, "ion-picker-column", {
398
+ "disabled": [4],
399
+ "value": [1032],
400
+ "color": [513],
401
+ "numericInput": [4, "numeric-input"],
402
+ "isActive": [32],
403
+ "scrollActiveItemIntoView": [64],
404
+ "setValue": [64],
405
+ "setFocus": [64]
360
406
  }, undefined, {
361
- "col": ["colChanged"]
407
+ "value": ["valueChange"]
362
408
  }]);
363
- const PICKER_OPT_SELECTED = 'picker-opt-selected';
364
- const DECELERATION_FRICTION = 0.97;
365
- const MAX_PICKER_SPEED = 90;
366
- const TRANSITION_DURATION = 150;
409
+ const PICKER_ITEM_ACTIVE_CLASS = 'option-active';
367
410
  function defineCustomElement() {
368
411
  if (typeof customElements === "undefined") {
369
412
  return;
@@ -372,10 +415,10 @@ function defineCustomElement() {
372
415
  components.forEach(tagName => { switch (tagName) {
373
416
  case "ion-picker-column":
374
417
  if (!customElements.get(tagName)) {
375
- customElements.define(tagName, PickerColumnCmp);
418
+ customElements.define(tagName, PickerColumn);
376
419
  }
377
420
  break;
378
421
  } });
379
422
  }
380
423
 
381
- export { PickerColumnCmp as P, defineCustomElement as d };
424
+ export { PickerColumn as P, defineCustomElement as d };