@ionic/core 7.5.8-dev.11701876182.1e71e7a0 → 7.5.8-dev.11702056888.11188f48

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 (553) hide show
  1. package/components/animation.js +11 -12
  2. package/components/backdrop.js +0 -12
  3. package/components/checkbox.js +3 -5
  4. package/components/data.js +1 -1
  5. package/components/gesture-controller.js +1 -1
  6. package/components/index4.js +12 -10
  7. package/components/index5.js +22 -0
  8. package/components/input-shims.js +7 -12
  9. package/components/input.utils.js +2 -3
  10. package/components/ion-content.js +1 -1
  11. package/components/ion-datetime.js +40 -64
  12. package/components/ion-infinite-scroll.js +3 -11
  13. package/components/ion-input.js +8 -31
  14. package/components/ion-modal.js +2 -2
  15. package/components/ion-picker-column-option.d.ts +11 -0
  16. package/components/ion-picker-column-option.js +9 -0
  17. package/components/ion-picker-column.js +2 -2
  18. package/components/ion-picker-legacy-column.d.ts +11 -0
  19. package/components/ion-picker-legacy-column.js +9 -0
  20. package/components/{ion-picker-internal.d.ts → ion-picker-legacy.d.ts} +4 -4
  21. package/components/ion-picker-legacy.js +309 -0
  22. package/components/ion-picker.js +1 -309
  23. package/components/ion-range.js +3 -5
  24. package/components/ion-select.js +29 -44
  25. package/components/ion-skeleton-text.js +1 -14
  26. package/components/ion-textarea.js +7 -30
  27. package/components/ion-toast.js +74 -419
  28. package/components/ion-toggle.js +3 -5
  29. package/components/item.js +2 -2
  30. package/components/label.js +2 -2
  31. package/components/overlays.js +12 -6
  32. package/components/picker-column-option.js +122 -0
  33. package/components/picker-column.js +351 -322
  34. package/components/picker-column2.js +379 -0
  35. package/components/{picker-internal.js → picker.js} +29 -22
  36. package/components/radio-group.js +0 -2
  37. package/components/radio.js +5 -45
  38. package/dist/cjs/{animation-9b401d39.js → animation-cc40e39c.js} +12 -13
  39. package/dist/cjs/{button-active-a5185907.js → button-active-9d7e0640.js} +2 -2
  40. package/dist/cjs/{capacitor-c04564bf.js → capacitor-46980811.js} +1 -1
  41. package/dist/cjs/{data-36b9094e.js → data-e7526b58.js} +1 -1
  42. package/dist/cjs/{gesture-controller-c40c045a.js → gesture-controller-9436f482.js} +1 -0
  43. package/dist/cjs/{haptic-b882e0bb.js → haptic-216df36c.js} +1 -1
  44. package/dist/cjs/index-306a7476.js +32 -0
  45. package/dist/cjs/{index-ce101dc9.js → index-5cbb20f9.js} +13 -11
  46. package/dist/cjs/{index-b4f986cd.js → index-8c1e77d6.js} +1 -1
  47. package/dist/cjs/{index-f8f13389.js → index-d4c2e02c.js} +2 -2
  48. package/dist/cjs/{index-d1b59ffa.js → index-ee07ed59.js} +1 -1
  49. package/dist/cjs/index.cjs.js +10 -10
  50. package/dist/cjs/{input-shims-a23bb0f4.js → input-shims-87102b6a.js} +10 -15
  51. package/dist/cjs/{input.utils-3d0166a2.js → input.utils-2a11c1fe.js} +3 -4
  52. package/dist/cjs/ion-action-sheet.cjs.entry.js +8 -8
  53. package/dist/cjs/ion-alert.cjs.entry.js +8 -8
  54. package/dist/cjs/ion-app_8.cjs.entry.js +10 -10
  55. package/dist/cjs/ion-backdrop.cjs.entry.js +0 -12
  56. package/dist/cjs/ion-checkbox.cjs.entry.js +3 -5
  57. package/dist/cjs/ion-datetime-button.cjs.entry.js +1 -1
  58. package/dist/cjs/ion-datetime_3.cjs.entry.js +40 -60
  59. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +3 -11
  60. package/dist/cjs/ion-input.cjs.entry.js +11 -34
  61. package/dist/cjs/ion-item-option_3.cjs.entry.js +1 -1
  62. package/dist/cjs/ion-item_8.cjs.entry.js +4 -17
  63. package/dist/cjs/ion-loading.cjs.entry.js +4 -3
  64. package/dist/cjs/ion-menu_3.cjs.entry.js +7 -7
  65. package/dist/cjs/ion-modal.cjs.entry.js +10 -10
  66. package/dist/cjs/ion-nav_2.cjs.entry.js +2 -2
  67. package/dist/cjs/ion-picker-column-option.cjs.entry.js +104 -0
  68. package/dist/cjs/{ion-picker-column-internal.cjs.entry.js → ion-picker-column.cjs.entry.js} +106 -89
  69. package/dist/cjs/{ion-picker-internal.cjs.entry.js → ion-picker.cjs.entry.js} +26 -19
  70. package/dist/cjs/ion-popover.cjs.entry.js +5 -4
  71. package/dist/cjs/ion-radio_2.cjs.entry.js +4 -9
  72. package/dist/cjs/ion-range.cjs.entry.js +4 -6
  73. package/dist/cjs/ion-refresher_2.cjs.entry.js +7 -7
  74. package/dist/cjs/ion-reorder_2.cjs.entry.js +4 -4
  75. package/dist/cjs/ion-segment_2.cjs.entry.js +1 -1
  76. package/dist/cjs/ion-select_3.cjs.entry.js +36 -51
  77. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +4 -4
  78. package/dist/cjs/ion-textarea.cjs.entry.js +10 -33
  79. package/dist/cjs/ion-toast.cjs.entry.js +93 -434
  80. package/dist/cjs/ion-toggle.cjs.entry.js +7 -9
  81. package/dist/cjs/ionic.cjs.js +1 -1
  82. package/dist/cjs/{ios.transition-6787b799.js → ios.transition-a4ffb5a2.js} +3 -3
  83. package/dist/cjs/{keyboard-af1bb365.js → keyboard-7d621ee9.js} +3 -3
  84. package/dist/cjs/{keyboard-0272231f.js → keyboard-9390928c.js} +1 -1
  85. package/dist/cjs/{keyboard-controller-c05e747a.js → keyboard-controller-2158b478.js} +2 -2
  86. package/dist/cjs/loader.cjs.js +1 -1
  87. package/dist/cjs/{md.transition-e033d20a.js → md.transition-292abe1c.js} +3 -3
  88. package/dist/cjs/{notch-controller-9735e7ac.js → notch-controller-1dce508a.js} +1 -1
  89. package/dist/cjs/{overlays-27a6fb16.js → overlays-e8e05b0e.js} +12 -7
  90. package/dist/cjs/{swipe-back-2a858bbd.js → swipe-back-b8f2330b.js} +2 -2
  91. package/dist/collection/collection-manifest.json +7 -6
  92. package/dist/collection/components/backdrop/backdrop.js +0 -12
  93. package/dist/collection/components/checkbox/checkbox.ios.css +6 -0
  94. package/dist/collection/components/checkbox/checkbox.js +1 -4
  95. package/dist/collection/components/checkbox/checkbox.md.css +6 -0
  96. package/dist/collection/components/checkbox/test/checkbox.spec.js +0 -14
  97. package/dist/collection/components/content/content.css +0 -4
  98. package/dist/collection/components/datetime/datetime.ios.css +85 -38
  99. package/dist/collection/components/datetime/datetime.js +24 -36
  100. package/dist/collection/components/datetime/datetime.md.css +90 -38
  101. package/dist/collection/components/datetime/test/a11y/datetime.e2e.js +1 -1
  102. package/dist/collection/components/datetime/test/a11y/datetime.spec.js +6 -9
  103. package/dist/collection/components/datetime/test/basic/datetime.e2e.js +10 -0
  104. package/dist/collection/components/datetime/test/datetime.e2e.js +2 -2
  105. package/dist/collection/components/datetime/test/disabled/datetime.spec.js +4 -4
  106. package/dist/collection/components/datetime/test/locale/datetime.e2e.js +2 -2
  107. package/dist/collection/components/datetime/test/minmax/datetime.e2e.js +6 -6
  108. package/dist/collection/components/datetime/test/month-year-picker/datetime.e2e.js +1 -1
  109. package/dist/collection/components/datetime/test/prefer-wheel/datetime.e2e.js +43 -41
  110. package/dist/collection/components/datetime/test/presentation/datetime.e2e.js +1 -1
  111. package/dist/collection/components/datetime/test/readonly/datetime.e2e.js +4 -4
  112. package/dist/collection/components/datetime/test/values/datetime.e2e.js +15 -12
  113. package/dist/collection/components/datetime/utils/data.js +1 -1
  114. package/dist/collection/components/infinite-scroll/infinite-scroll.js +3 -11
  115. package/dist/collection/components/input/input.ios.css +3 -10
  116. package/dist/collection/components/input/input.js +6 -31
  117. package/dist/collection/components/input/input.md.css +12 -13
  118. package/dist/collection/components/item/item.ios.css +3 -41
  119. package/dist/collection/components/item/item.md.css +3 -41
  120. package/dist/collection/components/item/test/basic/item.e2e.js +1 -1
  121. package/dist/collection/components/item/test/disabled/item.e2e.js +1 -0
  122. package/dist/collection/components/item/test/text/item.e2e.js +14 -0
  123. package/dist/collection/components/label/label.ios.css +3 -14
  124. package/dist/collection/components/label/label.md.css +3 -14
  125. package/dist/collection/components/modal/gestures/swipe-to-close.js +1 -2
  126. package/dist/collection/components/note/test/a11y/note.e2e.js +0 -43
  127. package/dist/collection/components/picker/picker.ios.css +113 -211
  128. package/dist/collection/components/picker/picker.js +468 -743
  129. package/dist/collection/components/picker/picker.md.css +109 -198
  130. package/dist/collection/components/{picker-internal/test/a11y/picker-internal.e2e.js → picker/test/a11y/picker.e2e.js} +2 -2
  131. package/dist/collection/components/picker/test/basic/picker.e2e.js +99 -13
  132. package/dist/collection/components/picker/test/custom/picker.e2e.js +85 -0
  133. package/dist/collection/components/{picker-internal/test/keyboard-entry/picker-internal.e2e.js → picker/test/keyboard-entry/picker.e2e.js} +63 -32
  134. package/dist/collection/components/{picker-column-internal/picker-column-internal.md.css → picker-column/picker-column.css} +96 -83
  135. package/dist/collection/components/picker-column/picker-column.js +497 -335
  136. package/dist/collection/components/{picker-column-internal/test/basic/picker-column-internal.e2e.js → picker-column/test/basic/picker-column.e2e.js} +8 -8
  137. package/dist/collection/components/picker-column/test/disabled/picker-column.e2e.js +91 -0
  138. package/dist/collection/components/picker-column/test/slots/picker-column.e2e.js +39 -0
  139. package/dist/collection/components/picker-column-option/picker-column-option.ios.css +87 -0
  140. package/dist/collection/components/picker-column-option/picker-column-option.js +173 -0
  141. package/dist/collection/components/{picker-column-internal/picker-column-internal.ios.css → picker-column-option/picker-column-option.md.css} +6 -53
  142. package/dist/collection/components/picker-column-option/test/a11y/picker-column-option.e2e.js +18 -0
  143. package/dist/collection/components/picker-column-option/test/basic/picker-column-option.e2e.js +37 -0
  144. package/dist/collection/components/picker-column-option/test/picker-column-option.spec.js +29 -0
  145. package/dist/collection/components/{picker-internal/picker-internal.md.css → picker-legacy/picker.ios.css} +207 -98
  146. package/dist/collection/components/picker-legacy/picker.js +817 -0
  147. package/dist/collection/components/{picker-internal/picker-internal.ios.css → picker-legacy/picker.md.css} +192 -100
  148. package/dist/collection/components/picker-legacy/test/basic/picker.e2e.js +25 -0
  149. package/dist/collection/components/{picker → picker-legacy}/test/is-open/picker.e2e.js +4 -4
  150. package/dist/collection/components/{picker → picker-legacy}/test/picker-id.spec.js +5 -5
  151. package/dist/collection/components/{picker → picker-legacy}/test/trigger/picker.e2e.js +1 -1
  152. package/dist/collection/components/picker-legacy-column/picker-column.js +419 -0
  153. package/dist/collection/components/{picker-column → picker-legacy-column}/test/picker-column-aria.spec.js +3 -3
  154. package/dist/collection/components/{picker-column → picker-legacy-column}/test/picker-column-dynamic.spec.js +2 -2
  155. package/dist/collection/components/{picker-column → picker-legacy-column}/test/picker-column.spec.js +2 -2
  156. package/dist/collection/components/{picker-column → picker-legacy-column}/test/standalone/picker-column.e2e.js +3 -3
  157. package/dist/collection/components/radio/radio.ios.css +6 -0
  158. package/dist/collection/components/radio/radio.js +3 -7
  159. package/dist/collection/components/radio/radio.md.css +6 -0
  160. package/dist/collection/components/radio/test/radio.spec.js +0 -14
  161. package/dist/collection/components/radio-group/radio-group.js +0 -24
  162. package/dist/collection/components/range/range.ios.css +6 -0
  163. package/dist/collection/components/range/range.js +1 -4
  164. package/dist/collection/components/range/range.md.css +6 -0
  165. package/dist/collection/components/range/test/range.spec.js +0 -16
  166. package/dist/collection/components/select/select.ios.css +7 -60
  167. package/dist/collection/components/select/select.js +28 -45
  168. package/dist/collection/components/select/select.md.css +19 -63
  169. package/dist/collection/components/select/test/item/select.e2e.js +0 -15
  170. package/dist/collection/components/select/test/label/select.e2e.js +1 -1
  171. package/dist/collection/components/select/test/legacy/wrapping/select.e2e.js +1 -1
  172. package/dist/collection/components/skeleton-text/skeleton-text.js +0 -39
  173. package/dist/collection/components/textarea/textarea.ios.css +5 -37
  174. package/dist/collection/components/textarea/textarea.js +5 -30
  175. package/dist/collection/components/textarea/textarea.md.css +14 -47
  176. package/dist/collection/components/toast/animations/ios.enter.js +1 -2
  177. package/dist/collection/components/toast/animations/md.enter.js +3 -4
  178. package/dist/collection/components/toast/animations/utils.js +14 -20
  179. package/dist/collection/components/toast/test/toast.spec.js +0 -80
  180. package/dist/collection/components/toast/toast.ios.css +10 -10
  181. package/dist/collection/components/toast/toast.js +1 -104
  182. package/dist/collection/components/toast/toast.md.css +0 -10
  183. package/dist/collection/components/toggle/test/toggle.spec.js +0 -12
  184. package/dist/collection/components/toggle/toggle.ios.css +6 -0
  185. package/dist/collection/components/toggle/toggle.js +1 -4
  186. package/dist/collection/components/toggle/toggle.md.css +6 -0
  187. package/dist/collection/utils/animation/animation.js +11 -12
  188. package/dist/collection/utils/animation/test/animation.spec.js +0 -16
  189. package/dist/collection/utils/browser/index.js +22 -0
  190. package/dist/collection/utils/forms/index.js +0 -1
  191. package/dist/collection/utils/gesture/gesture-controller.js +1 -1
  192. package/dist/collection/utils/input-shims/input-shims.js +6 -12
  193. package/dist/collection/utils/menu-controller/index.js +12 -10
  194. package/dist/collection/utils/overlays.js +11 -5
  195. package/dist/collection/utils/slot-mutation-controller.js +2 -3
  196. package/dist/collection/utils/test/overlays/overlays-scroll-blocking.spec.js +65 -0
  197. package/dist/docs.json +573 -272
  198. package/dist/esm/{animation-dde8cc0d.js → animation-fb0e0f6f.js} +12 -13
  199. package/dist/esm/{button-active-c6ee4f50.js → button-active-ed9d848c.js} +2 -2
  200. package/dist/esm/{capacitor-59395cbd.js → capacitor-b0e5fe83.js} +1 -1
  201. package/dist/esm/{data-f5c75b4e.js → data-4b9508c9.js} +1 -1
  202. package/dist/esm/{gesture-controller-1bf57181.js → gesture-controller-314a54f6.js} +1 -1
  203. package/dist/esm/{haptic-554688a5.js → haptic-152c4172.js} +1 -1
  204. package/dist/esm/{index-2cf77112.js → index-39782642.js} +2 -2
  205. package/dist/esm/index-7a14ecec.js +29 -0
  206. package/dist/esm/{index-0c12c22b.js → index-80492ed3.js} +13 -11
  207. package/dist/esm/{index-82eeb47f.js → index-ba9976bb.js} +1 -1
  208. package/dist/esm/{index-1932b201.js → index-d8817fb0.js} +2 -2
  209. package/dist/esm/index.js +10 -10
  210. package/dist/esm/{input-shims-6539ce13.js → input-shims-0a2e541d.js} +9 -14
  211. package/dist/esm/{input.utils-a5a2d164.js → input.utils-2846d430.js} +3 -4
  212. package/dist/esm/ion-action-sheet.entry.js +8 -8
  213. package/dist/esm/ion-alert.entry.js +8 -8
  214. package/dist/esm/ion-app_8.entry.js +10 -10
  215. package/dist/esm/ion-backdrop.entry.js +0 -12
  216. package/dist/esm/ion-checkbox.entry.js +3 -5
  217. package/dist/esm/ion-datetime-button.entry.js +1 -1
  218. package/dist/esm/ion-datetime_3.entry.js +39 -59
  219. package/dist/esm/ion-infinite-scroll_2.entry.js +3 -11
  220. package/dist/esm/ion-input.entry.js +11 -34
  221. package/dist/esm/ion-item-option_3.entry.js +1 -1
  222. package/dist/esm/ion-item_8.entry.js +4 -17
  223. package/dist/esm/ion-loading.entry.js +4 -3
  224. package/dist/esm/ion-menu_3.entry.js +7 -7
  225. package/dist/esm/ion-modal.entry.js +10 -10
  226. package/dist/esm/ion-nav_2.entry.js +2 -2
  227. package/dist/esm/ion-picker-column-option.entry.js +100 -0
  228. package/dist/esm/{ion-picker-column-internal.entry.js → ion-picker-column.entry.js} +106 -89
  229. package/dist/esm/{ion-picker-internal.entry.js → ion-picker.entry.js} +26 -19
  230. package/dist/esm/ion-popover.entry.js +5 -4
  231. package/dist/esm/ion-radio_2.entry.js +4 -9
  232. package/dist/esm/ion-range.entry.js +4 -6
  233. package/dist/esm/ion-refresher_2.entry.js +7 -7
  234. package/dist/esm/ion-reorder_2.entry.js +4 -4
  235. package/dist/esm/ion-segment_2.entry.js +1 -1
  236. package/dist/esm/ion-select_3.entry.js +32 -47
  237. package/dist/esm/ion-tab-bar_2.entry.js +4 -4
  238. package/dist/esm/ion-textarea.entry.js +10 -33
  239. package/dist/esm/ion-toast.entry.js +76 -417
  240. package/dist/esm/ion-toggle.entry.js +7 -9
  241. package/dist/esm/ionic.js +1 -1
  242. package/dist/esm/{ios.transition-802a84a6.js → ios.transition-fd16bec1.js} +3 -3
  243. package/dist/esm/{keyboard-52278bd7.js → keyboard-c402e885.js} +3 -3
  244. package/dist/esm/{keyboard-controller-ec5c2bfa.js → keyboard-controller-5d90929a.js} +2 -2
  245. package/dist/esm/{keyboard-73175e24.js → keyboard-dbb05fb9.js} +1 -1
  246. package/dist/esm/loader.js +1 -1
  247. package/dist/esm/{md.transition-43c2874d.js → md.transition-94ac93e1.js} +3 -3
  248. package/dist/esm/{notch-controller-fea7f9c5.js → notch-controller-d09b6aca.js} +1 -1
  249. package/dist/esm/{overlays-32ef481d.js → overlays-fbc5cab5.js} +13 -7
  250. package/dist/esm/{swipe-back-a6f386fc.js → swipe-back-a8ca7f93.js} +2 -2
  251. package/dist/esm-es5/{animation-dde8cc0d.js → animation-fb0e0f6f.js} +1 -1
  252. package/dist/esm-es5/{button-active-c6ee4f50.js → button-active-ed9d848c.js} +1 -1
  253. package/dist/esm-es5/{capacitor-59395cbd.js → capacitor-b0e5fe83.js} +1 -1
  254. package/dist/esm-es5/{gesture-controller-1bf57181.js → gesture-controller-314a54f6.js} +1 -1
  255. package/dist/esm-es5/{haptic-554688a5.js → haptic-152c4172.js} +1 -1
  256. package/dist/esm-es5/{index-2cf77112.js → index-39782642.js} +1 -1
  257. package/dist/esm-es5/index-80492ed3.js +4 -0
  258. package/dist/esm-es5/{index-82eeb47f.js → index-ba9976bb.js} +1 -1
  259. package/dist/esm-es5/{index-1932b201.js → index-d8817fb0.js} +1 -1
  260. package/dist/esm-es5/index.js +1 -1
  261. package/dist/esm-es5/input-shims-0a2e541d.js +4 -0
  262. package/dist/esm-es5/input.utils-2846d430.js +4 -0
  263. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  264. package/dist/esm-es5/ion-alert.entry.js +1 -1
  265. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  266. package/dist/esm-es5/ion-backdrop.entry.js +1 -1
  267. package/dist/esm-es5/ion-checkbox.entry.js +1 -1
  268. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  269. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  270. package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
  271. package/dist/esm-es5/ion-input.entry.js +1 -1
  272. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  273. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  274. package/dist/esm-es5/ion-loading.entry.js +1 -1
  275. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  276. package/dist/esm-es5/ion-modal.entry.js +1 -1
  277. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  278. package/dist/esm-es5/ion-picker-column-option.entry.js +4 -0
  279. package/dist/esm-es5/ion-picker-column.entry.js +4 -0
  280. package/dist/esm-es5/ion-picker.entry.js +4 -0
  281. package/dist/esm-es5/ion-popover.entry.js +1 -1
  282. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  283. package/dist/esm-es5/ion-range.entry.js +1 -1
  284. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  285. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  286. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  287. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  288. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  289. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  290. package/dist/esm-es5/ion-toast.entry.js +1 -1
  291. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  292. package/dist/esm-es5/ionic.js +1 -1
  293. package/dist/esm-es5/{ios.transition-802a84a6.js → ios.transition-fd16bec1.js} +1 -1
  294. package/dist/esm-es5/{keyboard-52278bd7.js → keyboard-c402e885.js} +1 -1
  295. package/dist/esm-es5/{keyboard-controller-ec5c2bfa.js → keyboard-controller-5d90929a.js} +1 -1
  296. package/dist/esm-es5/{keyboard-73175e24.js → keyboard-dbb05fb9.js} +1 -1
  297. package/dist/esm-es5/loader.js +1 -1
  298. package/dist/esm-es5/md.transition-94ac93e1.js +4 -0
  299. package/dist/esm-es5/{notch-controller-fea7f9c5.js → notch-controller-d09b6aca.js} +1 -1
  300. package/dist/esm-es5/overlays-fbc5cab5.js +4 -0
  301. package/dist/esm-es5/swipe-back-a8ca7f93.js +4 -0
  302. package/dist/html.html-data.json +153 -15
  303. package/dist/ionic/index.esm.js +1 -1
  304. package/dist/ionic/ionic.esm.js +1 -1
  305. package/dist/ionic/{p-8985cdb6.system.js → p-0e4f2e17.system.js} +1 -1
  306. package/dist/ionic/{p-33a37fad.system.js → p-1d624e03.system.js} +1 -1
  307. package/dist/ionic/{p-3dd98a73.entry.js → p-1fc72959.entry.js} +1 -1
  308. package/dist/ionic/{p-c7c8429a.system.js → p-20d469d0.system.js} +1 -1
  309. package/dist/ionic/{p-251666e2.entry.js → p-21c3515a.entry.js} +1 -1
  310. package/dist/ionic/p-22e5af95.entry.js +4 -0
  311. package/dist/ionic/p-232d1f22.entry.js +4 -0
  312. package/dist/ionic/p-23672c82.system.entry.js +4 -0
  313. package/dist/ionic/p-26798a7b.system.entry.js +4 -0
  314. package/dist/ionic/p-27bcbbc7.system.entry.js +4 -0
  315. package/dist/ionic/p-2ab4e925.system.entry.js +4 -0
  316. package/dist/ionic/p-2d5aeccc.js +4 -0
  317. package/dist/ionic/p-2d600c25.system.js +4 -0
  318. package/dist/ionic/{p-31fcb233.system.js → p-30029cc2.system.js} +1 -1
  319. package/dist/ionic/{p-cabad15b.system.js → p-304383f9.system.js} +1 -1
  320. package/dist/ionic/p-308e1341.js +4 -0
  321. package/dist/ionic/{p-cdbeaadc.js → p-31158892.js} +1 -1
  322. package/dist/ionic/p-32303650.system.entry.js +4 -0
  323. package/dist/ionic/{p-0bd51c34.system.js → p-32e19bee.system.js} +1 -1
  324. package/dist/ionic/p-34c39c48.entry.js +4 -0
  325. package/dist/ionic/p-36d194c5.entry.js +4 -0
  326. package/dist/ionic/p-3ba01a9c.system.entry.js +4 -0
  327. package/dist/ionic/p-3c58a71b.js +4 -0
  328. package/dist/ionic/{p-31b2326e.system.js → p-3e1e14d9.system.js} +1 -1
  329. package/dist/ionic/{p-78aadecb.entry.js → p-3f6270b3.entry.js} +1 -1
  330. package/dist/ionic/p-3fd26bd6.system.entry.js +4 -0
  331. package/dist/ionic/p-3fe96156.system.js +4 -0
  332. package/dist/ionic/p-42ba3902.entry.js +4 -0
  333. package/dist/ionic/{p-6de472cb.js → p-4890093d.js} +1 -1
  334. package/dist/ionic/{p-88fde0e0.entry.js → p-4911a5d6.entry.js} +1 -1
  335. package/dist/ionic/p-4a081ea9.entry.js +4 -0
  336. package/dist/ionic/p-4a31c99f.entry.js +4 -0
  337. package/dist/ionic/p-4a36430f.system.entry.js +4 -0
  338. package/dist/ionic/{p-27281edd.js → p-4e8e09e1.js} +1 -1
  339. package/dist/ionic/p-51abefb7.system.js +4 -0
  340. package/dist/ionic/{p-4f3ae45a.entry.js → p-535d2a67.entry.js} +1 -1
  341. package/dist/ionic/{p-e24ce1e5.system.js → p-54dfc9b5.system.js} +1 -1
  342. package/dist/ionic/p-563c41f0.system.entry.js +4 -0
  343. package/dist/ionic/{p-5e745192.system.js → p-57477107.system.js} +1 -1
  344. package/dist/ionic/p-5a1aac13.system.entry.js +4 -0
  345. package/dist/ionic/p-5a68960f.entry.js +4 -0
  346. package/dist/ionic/{p-4d67d27a.entry.js → p-5d42b6b4.entry.js} +1 -1
  347. package/dist/ionic/{p-42f189f4.js → p-643a8fae.js} +1 -1
  348. package/dist/ionic/{p-a9978d08.entry.js → p-6b7c55cd.entry.js} +1 -1
  349. package/dist/ionic/p-6c37f051.js +4 -0
  350. package/dist/ionic/{p-a1987850.entry.js → p-6d72fb44.entry.js} +1 -1
  351. package/dist/ionic/{p-e6d68e02.system.entry.js → p-6fd64e7c.system.entry.js} +1 -1
  352. package/dist/ionic/p-73190c5f.entry.js +4 -0
  353. package/dist/ionic/p-73aa7604.entry.js +4 -0
  354. package/dist/ionic/{p-3a75d7fd.js → p-75445583.js} +1 -1
  355. package/dist/ionic/{p-f70970cf.js → p-76d3765d.js} +1 -1
  356. package/dist/ionic/{p-a0bb7b92.system.entry.js → p-77965464.system.entry.js} +1 -1
  357. package/dist/ionic/p-7b725280.entry.js +4 -0
  358. package/dist/ionic/p-8017aad2.system.entry.js +4 -0
  359. package/dist/ionic/p-83af3685.system.js +4 -0
  360. package/dist/ionic/p-846ee227.entry.js +4 -0
  361. package/dist/ionic/p-856c430d.js +4 -0
  362. package/dist/ionic/p-8a1ad27c.system.entry.js +4 -0
  363. package/dist/ionic/p-8ab2d8be.entry.js +4 -0
  364. package/dist/ionic/p-8c97cdc0.entry.js +4 -0
  365. package/dist/ionic/{p-f5d2dc9b.js → p-8ededb41.js} +1 -1
  366. package/dist/ionic/p-8fa6583d.system.js +4 -0
  367. package/dist/ionic/p-93000a81.system.entry.js +4 -0
  368. package/dist/ionic/{p-1cca10d6.system.js → p-95c26010.system.js} +1 -1
  369. package/dist/ionic/{p-8acae6b0.system.entry.js → p-96dbbac1.system.entry.js} +1 -1
  370. package/dist/ionic/{p-ddbb2d5b.system.js → p-98d82c73.system.js} +1 -1
  371. package/dist/ionic/p-990ffd0e.js +4 -0
  372. package/dist/ionic/{p-bb3615f7.js → p-9b97df10.js} +1 -1
  373. package/dist/ionic/{p-3137c025.system.entry.js → p-9c229210.system.entry.js} +2 -2
  374. package/dist/ionic/p-a225bf0f.system.entry.js +4 -0
  375. package/dist/ionic/p-a60a1ce5.js +4 -0
  376. package/dist/ionic/p-a8baa23e.entry.js +4 -0
  377. package/dist/ionic/p-a98dc0c1.entry.js +4 -0
  378. package/dist/ionic/{p-5eda1d7d.entry.js → p-a9a80f5b.entry.js} +1 -1
  379. package/dist/ionic/p-a9e3b5be.system.entry.js +4 -0
  380. package/dist/ionic/p-ab9456e9.system.entry.js +4 -0
  381. package/dist/ionic/p-afcf4620.entry.js +4 -0
  382. package/dist/ionic/{p-ddb30596.entry.js → p-b133e9b4.entry.js} +1 -1
  383. package/dist/ionic/{p-6de62649.system.entry.js → p-b4d31b30.system.entry.js} +1 -1
  384. package/dist/ionic/{p-46d400b4.system.entry.js → p-b752714f.system.entry.js} +1 -1
  385. package/dist/ionic/{p-fba0a6e7.system.entry.js → p-c18de88a.system.entry.js} +1 -1
  386. package/dist/ionic/p-c8f0a036.entry.js +4 -0
  387. package/dist/ionic/p-ca8938f4.js +4 -0
  388. package/dist/ionic/p-cde52378.system.entry.js +4 -0
  389. package/dist/ionic/p-d43f1f3d.system.js +4 -0
  390. package/dist/ionic/p-d662d908.js +4 -0
  391. package/dist/ionic/p-d9695ad9.system.js +4 -0
  392. package/dist/ionic/p-da15f571.system.entry.js +4 -0
  393. package/dist/ionic/p-e3584231.system.js +1 -1
  394. package/dist/ionic/p-e4d90573.js +4 -0
  395. package/dist/ionic/{p-6577aea9.system.entry.js → p-e8e86f69.system.entry.js} +1 -1
  396. package/dist/ionic/p-f54c72b0.system.js +4 -0
  397. package/dist/ionic/p-f7a36cd0.system.js +4 -0
  398. package/dist/ionic/{p-9eec42cc.system.entry.js → p-f910cc73.system.entry.js} +1 -1
  399. package/dist/ionic/p-f967631d.js +4 -0
  400. package/dist/ionic/{p-ada96dd0.system.entry.js → p-fbf3a689.system.entry.js} +1 -1
  401. package/dist/ionic/p-fe4dde76.entry.js +4 -0
  402. package/dist/ionic/p-ffd5dba4.system.entry.js +4 -0
  403. package/dist/types/components/backdrop/backdrop.d.ts +0 -3
  404. package/dist/types/components/checkbox/checkbox.d.ts +0 -1
  405. package/dist/types/components/datetime/datetime.d.ts +0 -1
  406. package/dist/types/components/datetime/utils/data.d.ts +11 -7
  407. package/dist/types/components/infinite-scroll/infinite-scroll.d.ts +0 -7
  408. package/dist/types/components/input/input.d.ts +0 -2
  409. package/dist/types/components/menu/menu.d.ts +1 -1
  410. package/dist/types/components/picker/picker-interfaces.d.ts +8 -0
  411. package/dist/types/components/picker/picker.d.ts +74 -131
  412. package/dist/types/components/picker-column/picker-column-interfaces.d.ts +4 -0
  413. package/dist/types/components/picker-column/picker-column.d.ts +99 -39
  414. package/dist/types/components/picker-column-option/picker-column-option.d.ts +66 -0
  415. package/dist/types/components/picker-legacy/picker.d.ts +158 -0
  416. package/dist/types/components/picker-legacy-column/picker-column.d.ts +46 -0
  417. package/dist/types/components/radio/radio.d.ts +0 -1
  418. package/dist/types/components/radio-group/radio-group-interface.d.ts +0 -1
  419. package/dist/types/components/radio-group/radio-group.d.ts +1 -8
  420. package/dist/types/components/range/range.d.ts +0 -1
  421. package/dist/types/components/router/router.d.ts +1 -2
  422. package/dist/types/components/select/select.d.ts +1 -6
  423. package/dist/types/components/skeleton-text/skeleton-text.d.ts +1 -9
  424. package/dist/types/components/textarea/textarea.d.ts +0 -2
  425. package/dist/types/components/toast/animations/utils.d.ts +4 -15
  426. package/dist/types/components/toast/toast-interface.d.ts +0 -2
  427. package/dist/types/components/toast/toast.d.ts +1 -28
  428. package/dist/types/components/toggle/toggle.d.ts +0 -1
  429. package/dist/types/components.d.ts +161 -159
  430. package/dist/types/interface.d.ts +6 -2
  431. package/dist/types/utils/animation/animation-interface.d.ts +4 -4
  432. package/dist/types/utils/browser/index.d.ts +2 -11
  433. package/dist/types/utils/config.d.ts +2 -2
  434. package/dist/types/utils/forms/index.d.ts +0 -1
  435. package/dist/types/utils/gesture/gesture-controller.d.ts +1 -0
  436. package/dist/types/utils/hardware-back-button.d.ts +0 -4
  437. package/dist/types/utils/overlays.d.ts +5 -3
  438. package/dist/types/utils/slot-mutation-controller.d.ts +2 -2
  439. package/hydrate/index.js +1528 -1886
  440. package/package.json +1 -1
  441. package/components/ion-picker-column-internal.d.ts +0 -11
  442. package/components/ion-picker-column-internal.js +0 -9
  443. package/components/ion-picker-internal.js +0 -9
  444. package/components/picker-column-internal.js +0 -390
  445. package/dist/cjs/compare-with-utils-df1001d7.js +0 -44
  446. package/dist/cjs/index-c8d52405.js +0 -10
  447. package/dist/collection/components/infinite-scroll/test/small-dom-update/infinite-scroll.e2e.js +0 -31
  448. package/dist/collection/components/input/test/slot/input.e2e.js +0 -51
  449. package/dist/collection/components/picker-column-internal/picker-column-internal.js +0 -565
  450. package/dist/collection/components/picker-column-internal/test/disabled/picker-column-internal.e2e.js +0 -162
  451. package/dist/collection/components/picker-internal/picker-internal.js +0 -544
  452. package/dist/collection/components/picker-internal/test/basic/picker-internal.e2e.js +0 -118
  453. package/dist/collection/components/radio-group/test/radio-group.spec.js +0 -69
  454. package/dist/collection/components/select/test/slot/select.e2e.js +0 -67
  455. package/dist/collection/components/textarea/test/slot/textarea.e2e.js +0 -51
  456. package/dist/collection/components/toast/gestures/swipe-to-dismiss.js +0 -267
  457. package/dist/collection/components/toast/test/swipe-gesture/toast.e2e.js +0 -84
  458. package/dist/collection/components/toast/test/toast-config.spec.js +0 -25
  459. package/dist/collection/utils/forms/compare-with-utils.js +0 -39
  460. package/dist/esm/compare-with-utils-a96ff2ea.js +0 -41
  461. package/dist/esm/index-a5d50daf.js +0 -7
  462. package/dist/esm-es5/compare-with-utils-a96ff2ea.js +0 -4
  463. package/dist/esm-es5/index-0c12c22b.js +0 -4
  464. package/dist/esm-es5/input-shims-6539ce13.js +0 -4
  465. package/dist/esm-es5/input.utils-a5a2d164.js +0 -4
  466. package/dist/esm-es5/ion-picker-column-internal.entry.js +0 -4
  467. package/dist/esm-es5/ion-picker-internal.entry.js +0 -4
  468. package/dist/esm-es5/md.transition-43c2874d.js +0 -4
  469. package/dist/esm-es5/overlays-32ef481d.js +0 -4
  470. package/dist/esm-es5/swipe-back-a6f386fc.js +0 -4
  471. package/dist/ionic/p-01d14eba.system.entry.js +0 -4
  472. package/dist/ionic/p-042e6f4b.entry.js +0 -4
  473. package/dist/ionic/p-05d83227.system.entry.js +0 -4
  474. package/dist/ionic/p-16756e94.system.entry.js +0 -4
  475. package/dist/ionic/p-1b19c04b.entry.js +0 -4
  476. package/dist/ionic/p-1e4371bd.js +0 -4
  477. package/dist/ionic/p-28249b10.system.entry.js +0 -4
  478. package/dist/ionic/p-28a2c2a2.entry.js +0 -4
  479. package/dist/ionic/p-29d03b3a.js +0 -4
  480. package/dist/ionic/p-2b7827c7.js +0 -4
  481. package/dist/ionic/p-2d3b9fa3.system.entry.js +0 -4
  482. package/dist/ionic/p-2d539df1.entry.js +0 -4
  483. package/dist/ionic/p-35ce400e.system.js +0 -4
  484. package/dist/ionic/p-36d187af.js +0 -4
  485. package/dist/ionic/p-376a6063.js +0 -4
  486. package/dist/ionic/p-38f2c6bb.system.js +0 -4
  487. package/dist/ionic/p-39c31982.system.entry.js +0 -4
  488. package/dist/ionic/p-3e6b47e8.system.entry.js +0 -4
  489. package/dist/ionic/p-3f5179b5.entry.js +0 -4
  490. package/dist/ionic/p-40f68333.system.js +0 -4
  491. package/dist/ionic/p-438e1b8a.entry.js +0 -4
  492. package/dist/ionic/p-47b6ba5b.js +0 -4
  493. package/dist/ionic/p-517a9885.system.entry.js +0 -4
  494. package/dist/ionic/p-53ec4f1c.system.js +0 -4
  495. package/dist/ionic/p-5e4eec2e.entry.js +0 -4
  496. package/dist/ionic/p-6a6477b2.js +0 -4
  497. package/dist/ionic/p-72f6ff89.js +0 -4
  498. package/dist/ionic/p-765f4dde.entry.js +0 -4
  499. package/dist/ionic/p-7d92bf15.system.entry.js +0 -4
  500. package/dist/ionic/p-7ee0f3f2.entry.js +0 -4
  501. package/dist/ionic/p-80fa068e.entry.js +0 -4
  502. package/dist/ionic/p-8314281e.system.js +0 -4
  503. package/dist/ionic/p-88d5fbd3.js +0 -4
  504. package/dist/ionic/p-8d69a624.entry.js +0 -4
  505. package/dist/ionic/p-8de17614.system.entry.js +0 -4
  506. package/dist/ionic/p-908475e7.system.entry.js +0 -4
  507. package/dist/ionic/p-91d33c4a.js +0 -4
  508. package/dist/ionic/p-979d4f5c.system.js +0 -4
  509. package/dist/ionic/p-9b7f0b0f.entry.js +0 -4
  510. package/dist/ionic/p-9e447eb1.system.js +0 -4
  511. package/dist/ionic/p-9f6ee2c0.system.entry.js +0 -4
  512. package/dist/ionic/p-a0d7bb5e.system.js +0 -4
  513. package/dist/ionic/p-a3277a67.entry.js +0 -4
  514. package/dist/ionic/p-afd6ca9d.entry.js +0 -4
  515. package/dist/ionic/p-b56d0866.system.entry.js +0 -4
  516. package/dist/ionic/p-b6f9d32a.entry.js +0 -4
  517. package/dist/ionic/p-c61cc894.js +0 -4
  518. package/dist/ionic/p-cce9f61a.system.entry.js +0 -4
  519. package/dist/ionic/p-d032f825.system.entry.js +0 -4
  520. package/dist/ionic/p-d51674c5.system.js +0 -4
  521. package/dist/ionic/p-de6f8b28.system.js +0 -4
  522. package/dist/ionic/p-de756e5c.js +0 -4
  523. package/dist/ionic/p-dee7c1d0.system.entry.js +0 -4
  524. package/dist/ionic/p-dfd9432a.entry.js +0 -4
  525. package/dist/ionic/p-e94c392d.entry.js +0 -4
  526. package/dist/ionic/p-f0445d82.system.entry.js +0 -4
  527. package/dist/ionic/p-f656e032.system.entry.js +0 -4
  528. package/dist/ionic/p-feae5133.entry.js +0 -4
  529. package/dist/types/components/picker-column-internal/picker-column-internal-interfaces.d.ts +0 -5
  530. package/dist/types/components/picker-column-internal/picker-column-internal.d.ts +0 -102
  531. package/dist/types/components/picker-internal/picker-internal-interfaces.d.ts +0 -8
  532. package/dist/types/components/picker-internal/picker-internal.d.ts +0 -102
  533. package/dist/types/components/toast/gestures/swipe-to-dismiss.d.ts +0 -9
  534. package/dist/types/jest.d.ts +0 -5
  535. package/dist/types/utils/forms/compare-with-utils.d.ts +0 -18
  536. /package/dist/collection/components/{picker-internal/picker-internal-interfaces.js → picker/picker-interfaces.js} +0 -0
  537. /package/dist/collection/components/{picker-column-internal/picker-column-internal-interfaces.js → picker-column/picker-column-interfaces.js} +0 -0
  538. /package/dist/collection/components/{picker → picker-legacy}/animations/ios.enter.js +0 -0
  539. /package/dist/collection/components/{picker → picker-legacy}/animations/ios.leave.js +0 -0
  540. /package/dist/collection/components/{picker → picker-legacy}/picker-interface.js +0 -0
  541. /package/dist/collection/components/{picker-column → picker-legacy-column}/picker-column.ios.css +0 -0
  542. /package/dist/collection/components/{picker-column → picker-legacy-column}/picker-column.md.css +0 -0
  543. /package/dist/collection/components/{picker-column → picker-legacy-column}/test/test.utils.js +0 -0
  544. /package/dist/esm-es5/{data-f5c75b4e.js → data-4b9508c9.js} +0 -0
  545. /package/dist/esm-es5/{index-a5d50daf.js → index-7a14ecec.js} +0 -0
  546. /package/dist/ionic/{p-792919fd.system.js → p-0e94957a.system.js} +0 -0
  547. /package/dist/ionic/{p-2aea8b1e.js → p-368f5215.js} +0 -0
  548. /package/dist/ionic/{p-7b30edcc.js → p-b347cfd1.js} +0 -0
  549. /package/dist/ionic/{p-82e3d633.system.js → p-f58981c2.system.js} +0 -0
  550. /package/dist/types/components/{picker → picker-legacy}/animations/ios.enter.d.ts +0 -0
  551. /package/dist/types/components/{picker → picker-legacy}/animations/ios.leave.d.ts +0 -0
  552. /package/dist/types/components/{picker → picker-legacy}/picker-interface.d.ts +0 -0
  553. /package/dist/types/components/{picker-column → picker-legacy-column}/test/test.utils.d.ts +0 -0
@@ -0,0 +1,419 @@
1
+ /*!
2
+ * (C) Ionic http://ionicframework.com - MIT License
3
+ */
4
+ import { Host, h } from "@stencil/core";
5
+ import { clamp } from "../../utils/helpers";
6
+ import { hapticSelectionChanged, hapticSelectionEnd, hapticSelectionStart } from "../../utils/native/haptic";
7
+ import { getClassMap } from "../../utils/theme";
8
+ import { getIonMode } from "../../global/ionic-global";
9
+ /**
10
+ * @internal
11
+ */
12
+ export class PickerColumnCmp {
13
+ constructor() {
14
+ this.optHeight = 0;
15
+ this.rotateFactor = 0;
16
+ this.scaleFactor = 1;
17
+ this.velocity = 0;
18
+ this.y = 0;
19
+ this.noAnimate = true;
20
+ // `colDidChange` is a flag that gets set when the column is changed
21
+ // dynamically. When this flag is set, the column will refresh
22
+ // after the component re-renders to incorporate the new column data.
23
+ // This is necessary because `this.refresh` queries for the option elements,
24
+ // so it needs to wait for the latest elements to be available in the DOM.
25
+ // Ex: column is created with 3 options. User updates the column data
26
+ // to have 5 options. The column will still think it only has 3 options.
27
+ this.colDidChange = false;
28
+ this.col = undefined;
29
+ }
30
+ colChanged() {
31
+ this.colDidChange = true;
32
+ }
33
+ async connectedCallback() {
34
+ let pickerRotateFactor = 0;
35
+ let pickerScaleFactor = 0.81;
36
+ const mode = getIonMode(this);
37
+ if (mode === 'ios') {
38
+ pickerRotateFactor = -0.46;
39
+ pickerScaleFactor = 1;
40
+ }
41
+ this.rotateFactor = pickerRotateFactor;
42
+ this.scaleFactor = pickerScaleFactor;
43
+ this.gesture = (await import('../../utils/gesture')).createGesture({
44
+ el: this.el,
45
+ gestureName: 'picker-swipe',
46
+ gesturePriority: 100,
47
+ threshold: 0,
48
+ passive: false,
49
+ onStart: (ev) => this.onStart(ev),
50
+ onMove: (ev) => this.onMove(ev),
51
+ onEnd: (ev) => this.onEnd(ev),
52
+ });
53
+ this.gesture.enable();
54
+ // Options have not been initialized yet
55
+ // Animation must be disabled through the `noAnimate` flag
56
+ // Otherwise, the options will render
57
+ // at the top of the column and transition down
58
+ this.tmrId = setTimeout(() => {
59
+ this.noAnimate = false;
60
+ // After initialization, `refresh()` will be called
61
+ // At this point, animation will be enabled. The options will
62
+ // animate as they are being selected.
63
+ this.refresh(true);
64
+ }, 250);
65
+ }
66
+ componentDidLoad() {
67
+ this.onDomChange();
68
+ }
69
+ componentDidUpdate() {
70
+ // Options may have changed since last update.
71
+ if (this.colDidChange) {
72
+ // Animation must be disabled through the `onDomChange` parameter.
73
+ // Otherwise, the recently added options will render
74
+ // at the top of the column and transition down
75
+ this.onDomChange(true, false);
76
+ this.colDidChange = false;
77
+ }
78
+ }
79
+ disconnectedCallback() {
80
+ if (this.rafId !== undefined)
81
+ cancelAnimationFrame(this.rafId);
82
+ if (this.tmrId)
83
+ clearTimeout(this.tmrId);
84
+ if (this.gesture) {
85
+ this.gesture.destroy();
86
+ this.gesture = undefined;
87
+ }
88
+ }
89
+ emitColChange() {
90
+ this.ionPickerColChange.emit(this.col);
91
+ }
92
+ setSelected(selectedIndex, duration) {
93
+ // if there is a selected index, then figure out it's y position
94
+ // if there isn't a selected index, then just use the top y position
95
+ const y = selectedIndex > -1 ? -(selectedIndex * this.optHeight) : 0;
96
+ this.velocity = 0;
97
+ // set what y position we're at
98
+ if (this.rafId !== undefined)
99
+ cancelAnimationFrame(this.rafId);
100
+ this.update(y, duration, true);
101
+ this.emitColChange();
102
+ }
103
+ update(y, duration, saveY) {
104
+ if (!this.optsEl) {
105
+ return;
106
+ }
107
+ // ensure we've got a good round number :)
108
+ let translateY = 0;
109
+ let translateZ = 0;
110
+ const { col, rotateFactor } = this;
111
+ const prevSelected = col.selectedIndex;
112
+ const selectedIndex = (col.selectedIndex = this.indexForY(-y));
113
+ const durationStr = duration === 0 ? '' : duration + 'ms';
114
+ const scaleStr = `scale(${this.scaleFactor})`;
115
+ const children = this.optsEl.children;
116
+ for (let i = 0; i < children.length; i++) {
117
+ const button = children[i];
118
+ const opt = col.options[i];
119
+ const optOffset = i * this.optHeight + y;
120
+ let transform = '';
121
+ if (rotateFactor !== 0) {
122
+ const rotateX = optOffset * rotateFactor;
123
+ if (Math.abs(rotateX) <= 90) {
124
+ translateY = 0;
125
+ translateZ = 90;
126
+ transform = `rotateX(${rotateX}deg) `;
127
+ }
128
+ else {
129
+ translateY = -9999;
130
+ }
131
+ }
132
+ else {
133
+ translateZ = 0;
134
+ translateY = optOffset;
135
+ }
136
+ const selected = selectedIndex === i;
137
+ transform += `translate3d(0px,${translateY}px,${translateZ}px) `;
138
+ if (this.scaleFactor !== 1 && !selected) {
139
+ transform += scaleStr;
140
+ }
141
+ // Update transition duration
142
+ if (this.noAnimate) {
143
+ opt.duration = 0;
144
+ button.style.transitionDuration = '';
145
+ }
146
+ else if (duration !== opt.duration) {
147
+ opt.duration = duration;
148
+ button.style.transitionDuration = durationStr;
149
+ }
150
+ // Update transform
151
+ if (transform !== opt.transform) {
152
+ opt.transform = transform;
153
+ }
154
+ button.style.transform = transform;
155
+ /**
156
+ * Ensure that the select column
157
+ * item has the selected class
158
+ */
159
+ opt.selected = selected;
160
+ if (selected) {
161
+ button.classList.add(PICKER_OPT_SELECTED);
162
+ }
163
+ else {
164
+ button.classList.remove(PICKER_OPT_SELECTED);
165
+ }
166
+ }
167
+ this.col.prevSelected = prevSelected;
168
+ if (saveY) {
169
+ this.y = y;
170
+ }
171
+ if (this.lastIndex !== selectedIndex) {
172
+ // have not set a last index yet
173
+ hapticSelectionChanged();
174
+ this.lastIndex = selectedIndex;
175
+ }
176
+ }
177
+ decelerate() {
178
+ if (this.velocity !== 0) {
179
+ // still decelerating
180
+ this.velocity *= DECELERATION_FRICTION;
181
+ // do not let it go slower than a velocity of 1
182
+ this.velocity = this.velocity > 0 ? Math.max(this.velocity, 1) : Math.min(this.velocity, -1);
183
+ let y = this.y + this.velocity;
184
+ if (y > this.minY) {
185
+ // whoops, it's trying to scroll up farther than the options we have!
186
+ y = this.minY;
187
+ this.velocity = 0;
188
+ }
189
+ else if (y < this.maxY) {
190
+ // gahh, it's trying to scroll down farther than we can!
191
+ y = this.maxY;
192
+ this.velocity = 0;
193
+ }
194
+ this.update(y, 0, true);
195
+ const notLockedIn = Math.round(y) % this.optHeight !== 0 || Math.abs(this.velocity) > 1;
196
+ if (notLockedIn) {
197
+ // isn't locked in yet, keep decelerating until it is
198
+ this.rafId = requestAnimationFrame(() => this.decelerate());
199
+ }
200
+ else {
201
+ this.velocity = 0;
202
+ this.emitColChange();
203
+ hapticSelectionEnd();
204
+ }
205
+ }
206
+ else if (this.y % this.optHeight !== 0) {
207
+ // needs to still get locked into a position so options line up
208
+ const currentPos = Math.abs(this.y % this.optHeight);
209
+ // create a velocity in the direction it needs to scroll
210
+ this.velocity = currentPos > this.optHeight / 2 ? 1 : -1;
211
+ this.decelerate();
212
+ }
213
+ }
214
+ indexForY(y) {
215
+ return Math.min(Math.max(Math.abs(Math.round(y / this.optHeight)), 0), this.col.options.length - 1);
216
+ }
217
+ onStart(detail) {
218
+ // We have to prevent default in order to block scrolling under the picker
219
+ // but we DO NOT have to stop propagation, since we still want
220
+ // some "click" events to capture
221
+ if (detail.event.cancelable) {
222
+ detail.event.preventDefault();
223
+ }
224
+ detail.event.stopPropagation();
225
+ hapticSelectionStart();
226
+ // reset everything
227
+ if (this.rafId !== undefined)
228
+ cancelAnimationFrame(this.rafId);
229
+ const options = this.col.options;
230
+ let minY = options.length - 1;
231
+ let maxY = 0;
232
+ for (let i = 0; i < options.length; i++) {
233
+ if (!options[i].disabled) {
234
+ minY = Math.min(minY, i);
235
+ maxY = Math.max(maxY, i);
236
+ }
237
+ }
238
+ this.minY = -(minY * this.optHeight);
239
+ this.maxY = -(maxY * this.optHeight);
240
+ }
241
+ onMove(detail) {
242
+ if (detail.event.cancelable) {
243
+ detail.event.preventDefault();
244
+ }
245
+ detail.event.stopPropagation();
246
+ // update the scroll position relative to pointer start position
247
+ let y = this.y + detail.deltaY;
248
+ if (y > this.minY) {
249
+ // scrolling up higher than scroll area
250
+ y = Math.pow(y, 0.8);
251
+ this.bounceFrom = y;
252
+ }
253
+ else if (y < this.maxY) {
254
+ // scrolling down below scroll area
255
+ y += Math.pow(this.maxY - y, 0.9);
256
+ this.bounceFrom = y;
257
+ }
258
+ else {
259
+ this.bounceFrom = 0;
260
+ }
261
+ this.update(y, 0, false);
262
+ }
263
+ onEnd(detail) {
264
+ if (this.bounceFrom > 0) {
265
+ // bounce back up
266
+ this.update(this.minY, 100, true);
267
+ this.emitColChange();
268
+ return;
269
+ }
270
+ else if (this.bounceFrom < 0) {
271
+ // bounce back down
272
+ this.update(this.maxY, 100, true);
273
+ this.emitColChange();
274
+ return;
275
+ }
276
+ this.velocity = clamp(-MAX_PICKER_SPEED, detail.velocityY * 23, MAX_PICKER_SPEED);
277
+ if (this.velocity === 0 && detail.deltaY === 0) {
278
+ const opt = detail.event.target.closest('.picker-opt');
279
+ if (opt === null || opt === void 0 ? void 0 : opt.hasAttribute('opt-index')) {
280
+ this.setSelected(parseInt(opt.getAttribute('opt-index'), 10), TRANSITION_DURATION);
281
+ }
282
+ }
283
+ else {
284
+ this.y += detail.deltaY;
285
+ if (Math.abs(detail.velocityY) < 0.05) {
286
+ const isScrollingUp = detail.deltaY > 0;
287
+ const optHeightFraction = (Math.abs(this.y) % this.optHeight) / this.optHeight;
288
+ if (isScrollingUp && optHeightFraction > 0.5) {
289
+ this.velocity = Math.abs(this.velocity) * -1;
290
+ }
291
+ else if (!isScrollingUp && optHeightFraction <= 0.5) {
292
+ this.velocity = Math.abs(this.velocity);
293
+ }
294
+ }
295
+ this.decelerate();
296
+ }
297
+ }
298
+ refresh(forceRefresh, animated) {
299
+ var _a;
300
+ let min = this.col.options.length - 1;
301
+ let max = 0;
302
+ const options = this.col.options;
303
+ for (let i = 0; i < options.length; i++) {
304
+ if (!options[i].disabled) {
305
+ min = Math.min(min, i);
306
+ max = Math.max(max, i);
307
+ }
308
+ }
309
+ /**
310
+ * Only update selected value if column has a
311
+ * velocity of 0. If it does not, then the
312
+ * column is animating might land on
313
+ * a value different than the value at
314
+ * selectedIndex
315
+ */
316
+ if (this.velocity !== 0) {
317
+ return;
318
+ }
319
+ const selectedIndex = clamp(min, (_a = this.col.selectedIndex) !== null && _a !== void 0 ? _a : 0, max);
320
+ if (this.col.prevSelected !== selectedIndex || forceRefresh) {
321
+ const y = selectedIndex * this.optHeight * -1;
322
+ const duration = animated ? TRANSITION_DURATION : 0;
323
+ this.velocity = 0;
324
+ this.update(y, duration, true);
325
+ }
326
+ }
327
+ onDomChange(forceRefresh, animated) {
328
+ const colEl = this.optsEl;
329
+ if (colEl) {
330
+ // DOM READ
331
+ // We perfom a DOM read over a rendered item, this needs to happen after the first render or after the the column has changed
332
+ this.optHeight = colEl.firstElementChild ? colEl.firstElementChild.clientHeight : 0;
333
+ }
334
+ this.refresh(forceRefresh, animated);
335
+ }
336
+ render() {
337
+ const col = this.col;
338
+ const mode = getIonMode(this);
339
+ return (h(Host, { class: Object.assign({ [mode]: true, 'picker-col': true, 'picker-opts-left': this.col.align === 'left', 'picker-opts-right': this.col.align === 'right' }, getClassMap(col.cssClass)), style: {
340
+ 'max-width': this.col.columnWidth,
341
+ } }, col.prefix && (h("div", { class: "picker-prefix", style: { width: col.prefixWidth } }, col.prefix)), h("div", { 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))));
342
+ }
343
+ static get is() { return "ion-picker-legacy-column"; }
344
+ static get originalStyleUrls() {
345
+ return {
346
+ "ios": ["picker-column.ios.scss"],
347
+ "md": ["picker-column.md.scss"]
348
+ };
349
+ }
350
+ static get styleUrls() {
351
+ return {
352
+ "ios": ["picker-column.ios.css"],
353
+ "md": ["picker-column.md.css"]
354
+ };
355
+ }
356
+ static get properties() {
357
+ return {
358
+ "col": {
359
+ "type": "unknown",
360
+ "mutable": false,
361
+ "complexType": {
362
+ "original": "PickerColumn",
363
+ "resolved": "PickerColumn",
364
+ "references": {
365
+ "PickerColumn": {
366
+ "location": "import",
367
+ "path": "../picker-legacy/picker-interface",
368
+ "id": "src/components/picker-legacy/picker-interface.ts::PickerColumn"
369
+ }
370
+ }
371
+ },
372
+ "required": true,
373
+ "optional": false,
374
+ "docs": {
375
+ "tags": [],
376
+ "text": "Picker column data"
377
+ }
378
+ }
379
+ };
380
+ }
381
+ static get events() {
382
+ return [{
383
+ "method": "ionPickerColChange",
384
+ "name": "ionPickerColChange",
385
+ "bubbles": true,
386
+ "cancelable": true,
387
+ "composed": true,
388
+ "docs": {
389
+ "tags": [{
390
+ "name": "internal",
391
+ "text": undefined
392
+ }],
393
+ "text": "Emitted when the selected value has changed"
394
+ },
395
+ "complexType": {
396
+ "original": "PickerColumn",
397
+ "resolved": "PickerColumn",
398
+ "references": {
399
+ "PickerColumn": {
400
+ "location": "import",
401
+ "path": "../picker-legacy/picker-interface",
402
+ "id": "src/components/picker-legacy/picker-interface.ts::PickerColumn"
403
+ }
404
+ }
405
+ }
406
+ }];
407
+ }
408
+ static get elementRef() { return "el"; }
409
+ static get watchers() {
410
+ return [{
411
+ "propName": "col",
412
+ "methodName": "colChanged"
413
+ }];
414
+ }
415
+ }
416
+ const PICKER_OPT_SELECTED = 'picker-opt-selected';
417
+ const DECELERATION_FRICTION = 0.97;
418
+ const MAX_PICKER_SPEED = 90;
419
+ const TRANSITION_DURATION = 150;
@@ -25,10 +25,10 @@ describe('picker-column', () => {
25
25
  };
26
26
  const page = await newSpecPage({
27
27
  components: [PickerColumnCmp],
28
- template: () => h("ion-picker-column", { col: col }),
28
+ template: () => h("ion-picker-legacy-column", { col: col }),
29
29
  });
30
- const firstOption = page.body.querySelector('ion-picker-column .picker-opt:nth-child(1)');
31
- const secondOption = page.body.querySelector('ion-picker-column .picker-opt:nth-child(2)');
30
+ const firstOption = page.body.querySelector('ion-picker-legacy-column .picker-opt:nth-child(1)');
31
+ const secondOption = page.body.querySelector('ion-picker-legacy-column .picker-opt:nth-child(2)');
32
32
  expect(firstOption.getAttribute('aria-label')).toBe('C Sharp');
33
33
  expect(secondOption.getAttribute('aria-label')).toBe(null);
34
34
  });
@@ -15,9 +15,9 @@ describe('picker-column: dynamic options', () => {
15
15
  ];
16
16
  const page = await newSpecPage({
17
17
  components: [PickerColumnCmp],
18
- template: () => h("ion-picker-column", { col: { options: defaultOptions, name: 'animals' } }),
18
+ template: () => (h("ion-picker-legacy-column", { col: { options: defaultOptions, name: 'animals' } })),
19
19
  });
20
- const pickerCol = page.body.querySelector('ion-picker-column');
20
+ const pickerCol = page.body.querySelector('ion-picker-legacy-column');
21
21
  pickerCol.col = {
22
22
  options: [...defaultOptions, { text: 'Carrot', value: 'carrot' }],
23
23
  name: 'vegetables',
@@ -9,9 +9,9 @@ describe('picker-column', () => {
9
9
  const col = { cssClass: 'test-class', options: [], name: 'col' };
10
10
  const page = await newSpecPage({
11
11
  components: [PickerColumnCmp],
12
- template: () => h("ion-picker-column", { col: col }),
12
+ template: () => h("ion-picker-legacy-column", { col: col }),
13
13
  });
14
- const pickerCol = page.body.querySelector('ion-picker-column');
14
+ const pickerCol = page.body.querySelector('ion-picker-legacy-column');
15
15
  expect(pickerCol.classList.contains('test-class')).toBe(true);
16
16
  });
17
17
  });
@@ -6,11 +6,11 @@ import { configs, test } from "../../../../utils/test/playwright/index";
6
6
  configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => {
7
7
  test.describe(title('picker-column'), () => {
8
8
  test.beforeEach(async ({ page }) => {
9
- await page.goto(`/src/components/picker-column/test/standalone`, config);
9
+ await page.goto(`/src/components/picker-legacy-column/test/standalone`, config);
10
10
  });
11
11
  test('should present picker without ion-app', async ({ page }) => {
12
12
  const ionPickerDidPresent = await page.spyOnEvent('ionPickerDidPresent');
13
- const picker = page.locator('ion-picker');
13
+ const picker = page.locator('ion-picker-legacy');
14
14
  await page.click('#single-column-button');
15
15
  await ionPickerDidPresent.next();
16
16
  await expect(picker).toBeVisible();
@@ -22,7 +22,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
22
22
  });
23
23
  const ionPickerDidPresent = await page.spyOnEvent('ionPickerDidPresent');
24
24
  const ionPickerColChangeEvent = await page.spyOnEvent('ionPickerColChange');
25
- const column = page.locator('ion-picker-column');
25
+ const column = page.locator('ion-picker-legacy-column');
26
26
  const secondOption = column.locator('.picker-opt').nth(1);
27
27
  await page.click('#single-column-button');
28
28
  await ionPickerDidPresent.next();
@@ -186,6 +186,12 @@ input {
186
186
  }
187
187
 
188
188
  .label-text-wrapper {
189
+ /**
190
+ * This ensures that double tapping this text
191
+ * clicks the <label> and focuses the radio
192
+ * when a screen reader is enabled.
193
+ */
194
+ pointer-events: none;
189
195
  text-overflow: ellipsis;
190
196
  white-space: nowrap;
191
197
  overflow: hidden;
@@ -2,7 +2,7 @@
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
4
  import { Host, h } from "@stencil/core";
5
- import { createLegacyFormController, isOptionSelected } from "../../utils/forms/index";
5
+ import { createLegacyFormController } from "../../utils/forms/index";
6
6
  import { addEventListener, getAriaLabel, removeEventListener } from "../../utils/helpers";
7
7
  import { printIonWarning } from "../../utils/logging/index";
8
8
  import { createColorClasses, hostContext } from "../../utils/theme";
@@ -13,7 +13,6 @@ import { getIonMode } from "../../global/ionic-global";
13
13
  * @slot - The label text to associate with the radio. Use the "labelPlacement" property to control where the label is placed relative to the radio.
14
14
  *
15
15
  * @part container - The container for the radio mark.
16
- * @part label - The label text describing the radio.
17
16
  * @part mark - The checkmark or dot used to indicate the checked state.
18
17
  */
19
18
  export class Radio {
@@ -24,8 +23,7 @@ export class Radio {
24
23
  this.hasLoggedDeprecationWarning = false;
25
24
  this.updateState = () => {
26
25
  if (this.radioGroup) {
27
- const { compareWith, value: radioGroupValue } = this.radioGroup;
28
- this.checked = isOptionSelected(radioGroupValue, this.value, compareWith);
26
+ this.checked = this.radioGroup.value === this.value;
29
27
  }
30
28
  };
31
29
  this.onClick = () => {
@@ -122,8 +120,6 @@ export class Radio {
122
120
  emitStyle() {
123
121
  const style = {
124
122
  'interactive-disabled': this.disabled,
125
- // TODO(FW-3125): remove this
126
- legacy: !!this.legacy,
127
123
  };
128
124
  if (this.legacyFormController.hasLegacyControl()) {
129
125
  style['radio-checked'] = this.checked;
@@ -158,7 +154,7 @@ export class Radio {
158
154
  }), role: "radio", "aria-checked": checked ? 'true' : 'false', "aria-disabled": disabled ? 'true' : null, tabindex: buttonTabindex }, h("label", { class: "radio-wrapper" }, h("div", { class: {
159
155
  'label-text-wrapper': true,
160
156
  'label-text-wrapper-hidden': !hasLabel,
161
- }, part: "label" }, h("slot", null)), h("div", { class: "native-wrapper" }, this.renderRadioControl()))));
157
+ } }, h("slot", null)), h("div", { class: "native-wrapper" }, this.renderRadioControl()))));
162
158
  }
163
159
  renderLegacyRadio() {
164
160
  if (!this.hasLoggedDeprecationWarning) {
@@ -186,6 +186,12 @@ input {
186
186
  }
187
187
 
188
188
  .label-text-wrapper {
189
+ /**
190
+ * This ensures that double tapping this text
191
+ * clicks the <label> and focuses the radio
192
+ * when a screen reader is enabled.
193
+ */
194
+ pointer-events: none;
189
195
  text-overflow: ellipsis;
190
196
  white-space: nowrap;
191
197
  overflow: hidden;
@@ -25,20 +25,6 @@ describe('ion-radio', () => {
25
25
  await page.waitForChanges();
26
26
  expect(radio.classList.contains('radio-checked')).toBe(true);
27
27
  });
28
- it('should render the radio with shadow parts', async () => {
29
- const page = await newSpecPage({
30
- components: [Radio, RadioGroup],
31
- html: `
32
- <ion-radio-group>
33
- <ion-radio value="value"></ion-radio>
34
- </ion-radio-group>
35
- `,
36
- });
37
- const radio = page.body.querySelector('ion-radio');
38
- expect(radio).toHaveShadowPart('container');
39
- expect(radio).toHaveShadowPart('label');
40
- expect(radio).toHaveShadowPart('mark');
41
- });
42
28
  });
43
29
  describe('ion-radio: disabled', () => {
44
30
  it('clicking disabled radio should not set checked state', async () => {
@@ -47,7 +47,6 @@ export class RadioGroup {
47
47
  }
48
48
  };
49
49
  this.allowEmptySelection = false;
50
- this.compareWith = undefined;
51
50
  this.name = this.inputId;
52
51
  this.value = undefined;
53
52
  }
@@ -168,29 +167,6 @@ export class RadioGroup {
168
167
  "reflect": false,
169
168
  "defaultValue": "false"
170
169
  },
171
- "compareWith": {
172
- "type": "string",
173
- "mutable": false,
174
- "complexType": {
175
- "original": "string | RadioGroupCompareFn | null",
176
- "resolved": "((currentValue: any, compareValue: any) => boolean) | null | string | undefined",
177
- "references": {
178
- "RadioGroupCompareFn": {
179
- "location": "import",
180
- "path": "./radio-group-interface",
181
- "id": "src/components/radio-group/radio-group-interface.ts::RadioGroupCompareFn"
182
- }
183
- }
184
- },
185
- "required": false,
186
- "optional": true,
187
- "docs": {
188
- "tags": [],
189
- "text": "This property allows developers to specify a custom function or property\nname for comparing objects when determining the selected option in the\nion-radio-group. When not specified, the default behavior will use strict\nequality (===) for comparison."
190
- },
191
- "attribute": "compare-with",
192
- "reflect": false
193
- },
194
170
  "name": {
195
171
  "type": "string",
196
172
  "mutable": false,
@@ -325,6 +325,12 @@
325
325
  * would not be able to see the range.
326
326
  */
327
327
  max-width: 200px;
328
+ /**
329
+ * This ensures that double tapping this text
330
+ * clicks the <label> and focuses the range
331
+ * when a screen reader is enabled.
332
+ */
333
+ pointer-events: none;
328
334
  text-overflow: ellipsis;
329
335
  white-space: nowrap;
330
336
  overflow: hidden;
@@ -24,7 +24,6 @@ import { roundToMaxDecimalPlaces } from "../../utils/floating-point";
24
24
  * @part knob - The handle that is used to drag the range.
25
25
  * @part bar - The inactive part of the bar.
26
26
  * @part bar-active - The active part of the bar.
27
- * @part label - The label text describing the range.
28
27
  */
29
28
  export class Range {
30
29
  constructor() {
@@ -227,8 +226,6 @@ export class Range {
227
226
  this.ionStyle.emit({
228
227
  interactive: true,
229
228
  'interactive-disabled': this.disabled,
230
- // TODO(FW-2997): remove this
231
- legacy: !!this.legacy,
232
229
  });
233
230
  }
234
231
  }
@@ -417,7 +414,7 @@ Developers can dismiss this warning by removing their usage of the "legacy" prop
417
414
  }) }, h("label", { class: "range-wrapper", id: "range-label" }, h("div", { class: {
418
415
  'label-text-wrapper': true,
419
416
  'label-text-wrapper-hidden': !hasLabel,
420
- }, part: "label" }, label !== undefined ? h("div", { class: "label-text" }, label) : h("slot", { name: "label" })), h("div", { class: "native-wrapper" }, h("slot", { name: "start" }), this.renderRangeSlider(), h("slot", { name: "end" })))));
417
+ } }, label !== undefined ? h("div", { class: "label-text" }, label) : h("slot", { name: "label" })), h("div", { class: "native-wrapper" }, h("slot", { name: "start" }), this.renderRangeSlider(), h("slot", { name: "end" })))));
421
418
  }
422
419
  get hasLabel() {
423
420
  return this.label !== undefined || this.el.querySelector('[slot="label"]') !== null;
@@ -325,6 +325,12 @@
325
325
  * would not be able to see the range.
326
326
  */
327
327
  max-width: 200px;
328
+ /**
329
+ * This ensures that double tapping this text
330
+ * clicks the <label> and focuses the range
331
+ * when a screen reader is enabled.
332
+ */
333
+ pointer-events: none;
328
334
  text-overflow: ellipsis;
329
335
  white-space: nowrap;
330
336
  overflow: hidden;