@ionic/core 7.5.8-dev.11702664817.19cab605 → 7.5.8-dev.11704294569.1abc989d

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 (418) hide show
  1. package/components/action-sheet.js +1 -1
  2. package/components/alert.js +2 -2
  3. package/components/button.js +2 -2
  4. package/components/checkbox.js +2 -2
  5. package/components/data.js +1 -1
  6. package/components/ion-back-button.js +1 -1
  7. package/components/ion-badge.js +2 -2
  8. package/components/ion-content.js +2 -3
  9. package/components/ion-datetime.js +30 -39
  10. package/components/ion-fab-button.js +2 -2
  11. package/components/ion-input.js +2 -2
  12. package/components/ion-item-option.js +2 -2
  13. package/components/ion-loading.js +1 -1
  14. package/components/ion-menu-button.js +1 -1
  15. package/components/ion-picker-column-internal.d.ts +11 -0
  16. package/components/ion-picker-column-internal.js +9 -0
  17. package/components/ion-picker-column.js +2 -2
  18. package/components/{ion-picker-legacy.d.ts → ion-picker-internal.d.ts} +4 -4
  19. package/components/ion-picker-internal.js +9 -0
  20. package/components/ion-picker.js +309 -1
  21. package/components/ion-progress-bar.js +2 -2
  22. package/components/ion-range.js +2 -2
  23. package/components/ion-refresher-content.js +1 -1
  24. package/components/ion-refresher.js +1 -1
  25. package/components/ion-router-link.js +1 -1
  26. package/components/ion-searchbar.js +1 -1
  27. package/components/ion-segment-button.js +1 -1
  28. package/components/ion-select.js +2 -2
  29. package/components/ion-tab-bar.js +2 -2
  30. package/components/ion-textarea.js +2 -2
  31. package/components/ion-title.js +1 -22
  32. package/components/ion-toast.js +2 -2
  33. package/components/ion-toggle.js +2 -2
  34. package/components/item.js +2 -2
  35. package/components/label.js +1 -1
  36. package/components/overlays.js +3 -6
  37. package/components/picker-column-internal.js +390 -0
  38. package/components/picker-column.js +322 -351
  39. package/components/{picker.js → picker-internal.js} +22 -29
  40. package/components/radio.js +2 -2
  41. package/components/select-popover.js +1 -1
  42. package/css/core.css +35 -34
  43. package/css/core.css.map +1 -1
  44. package/css/global.bundle.css +1 -1
  45. package/css/ionic.bundle.css +1 -1
  46. package/css/ionic.bundle.css.map +1 -1
  47. package/css/themes/dark.always.css +122 -0
  48. package/css/themes/dark.always.css.map +1 -0
  49. package/css/themes/dark.class.css +122 -0
  50. package/css/themes/dark.class.css.map +1 -0
  51. package/css/themes/dark.css +3 -0
  52. package/css/themes/dark.css.map +1 -0
  53. package/css/themes/dark.system.css +124 -0
  54. package/css/themes/dark.system.css.map +1 -0
  55. package/css/typography.css +1 -1
  56. package/dist/cjs/{data-e7526b58.js → data-36b9094e.js} +1 -1
  57. package/dist/cjs/index.cjs.js +1 -1
  58. package/dist/cjs/ion-action-sheet.cjs.entry.js +2 -2
  59. package/dist/cjs/ion-alert.cjs.entry.js +3 -3
  60. package/dist/cjs/ion-app_8.cjs.entry.js +4 -25
  61. package/dist/cjs/ion-avatar_3.cjs.entry.js +2 -2
  62. package/dist/cjs/ion-back-button.cjs.entry.js +1 -1
  63. package/dist/cjs/ion-button_2.cjs.entry.js +2 -2
  64. package/dist/cjs/ion-checkbox.cjs.entry.js +2 -2
  65. package/dist/cjs/ion-datetime-button.cjs.entry.js +1 -1
  66. package/dist/cjs/ion-datetime_3.cjs.entry.js +36 -30
  67. package/dist/cjs/ion-fab_3.cjs.entry.js +2 -2
  68. package/dist/cjs/ion-input.cjs.entry.js +2 -2
  69. package/dist/cjs/ion-item-option_3.cjs.entry.js +2 -2
  70. package/dist/cjs/ion-item_8.cjs.entry.js +3 -3
  71. package/dist/cjs/ion-loading.cjs.entry.js +2 -2
  72. package/dist/cjs/ion-menu_3.cjs.entry.js +2 -2
  73. package/dist/cjs/ion-modal.cjs.entry.js +1 -1
  74. package/dist/cjs/{ion-picker-column.cjs.entry.js → ion-picker-column-internal.cjs.entry.js} +87 -104
  75. package/dist/cjs/{ion-picker.cjs.entry.js → ion-picker-internal.cjs.entry.js} +19 -26
  76. package/dist/cjs/ion-popover.cjs.entry.js +1 -1
  77. package/dist/cjs/ion-progress-bar.cjs.entry.js +2 -2
  78. package/dist/cjs/ion-radio_2.cjs.entry.js +2 -2
  79. package/dist/cjs/ion-range.cjs.entry.js +2 -2
  80. package/dist/cjs/ion-refresher_2.cjs.entry.js +2 -2
  81. package/dist/cjs/ion-route_4.cjs.entry.js +1 -1
  82. package/dist/cjs/ion-searchbar.cjs.entry.js +1 -1
  83. package/dist/cjs/ion-segment_2.cjs.entry.js +1 -1
  84. package/dist/cjs/ion-select_3.cjs.entry.js +4 -4
  85. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +2 -2
  86. package/dist/cjs/ion-textarea.cjs.entry.js +2 -2
  87. package/dist/cjs/ion-toast.cjs.entry.js +3 -3
  88. package/dist/cjs/ion-toggle.cjs.entry.js +2 -2
  89. package/dist/cjs/ionic.cjs.js +1 -1
  90. package/dist/cjs/loader.cjs.js +1 -1
  91. package/dist/cjs/{overlays-e8e05b0e.js → overlays-2c6b1072.js} +3 -6
  92. package/dist/collection/collection-manifest.json +8 -9
  93. package/dist/collection/components/action-sheet/action-sheet.ios.css +3 -3
  94. package/dist/collection/components/action-sheet/test/a11y/action-sheet.e2e.js +23 -14
  95. package/dist/collection/components/alert/alert.ios.css +6 -6
  96. package/dist/collection/components/alert/alert.md.css +6 -6
  97. package/dist/collection/components/alert/test/a11y/alert.e2e.js +22 -9
  98. package/dist/collection/components/back-button/back-button.ios.css +1 -1
  99. package/dist/collection/components/back-button/test/a11y/back-button.e2e.js +21 -0
  100. package/dist/collection/components/badge/badge.ios.css +1 -1
  101. package/dist/collection/components/badge/badge.md.css +1 -1
  102. package/dist/collection/components/badge/test/a11y/badge.e2e.js +18 -0
  103. package/dist/collection/components/button/button.ios.css +11 -11
  104. package/dist/collection/components/button/button.md.css +9 -9
  105. package/dist/collection/components/button/test/a11y/button.e2e.js +48 -0
  106. package/dist/collection/components/button/test/wrap/button.e2e.js +24 -12
  107. package/dist/collection/components/checkbox/checkbox.ios.css +2 -2
  108. package/dist/collection/components/checkbox/checkbox.md.css +2 -2
  109. package/dist/collection/components/checkbox/test/a11y/checkbox.e2e.js +11 -2
  110. package/dist/collection/components/content/content.js +2 -3
  111. package/dist/collection/components/datetime/datetime.ios.css +13 -8
  112. package/dist/collection/components/datetime/datetime.js +16 -19
  113. package/dist/collection/components/datetime/datetime.md.css +13 -8
  114. package/dist/collection/components/datetime/test/datetime.e2e.js +2 -2
  115. package/dist/collection/components/datetime/test/disabled/datetime.spec.js +4 -4
  116. package/dist/collection/components/datetime/test/locale/datetime.e2e.js +2 -2
  117. package/dist/collection/components/datetime/test/minmax/datetime.e2e.js +6 -6
  118. package/dist/collection/components/datetime/test/prefer-wheel/datetime.e2e.js +41 -43
  119. package/dist/collection/components/datetime/test/presentation/datetime.e2e.js +1 -1
  120. package/dist/collection/components/datetime/test/readonly/datetime.e2e.js +2 -2
  121. package/dist/collection/components/datetime/test/values/datetime.e2e.js +12 -15
  122. package/dist/collection/components/datetime/utils/data.js +1 -1
  123. package/dist/collection/components/fab-button/fab-button.ios.css +13 -13
  124. package/dist/collection/components/fab-button/fab-button.md.css +4 -4
  125. package/dist/collection/components/fab-button/test/a11y/fab-button.e2e.js +50 -0
  126. package/dist/collection/components/input/input.ios.css +3 -3
  127. package/dist/collection/components/input/input.md.css +3 -3
  128. package/dist/collection/components/input/test/a11y/input.e2e.js +35 -3
  129. package/dist/collection/components/item/item.ios.css +3 -3
  130. package/dist/collection/components/item/item.md.css +4 -4
  131. package/dist/collection/components/item-option/item-option.ios.css +2 -2
  132. package/dist/collection/components/item-option/item-option.md.css +1 -1
  133. package/dist/collection/components/item-sliding/test/a11y/item-sliding.e2e.js +28 -0
  134. package/dist/collection/components/label/label.md.css +1 -1
  135. package/dist/collection/components/label/test/a11y/label.e2e.js +20 -0
  136. package/dist/collection/components/loading/loading.md.css +1 -1
  137. package/dist/collection/components/loading/test/a11y/loading.e2e.js +21 -5
  138. package/dist/collection/components/menu-button/menu-button.ios.css +1 -1
  139. package/dist/collection/components/menu-button/test/a11y/menu-button.e2e.js +14 -0
  140. package/dist/collection/components/picker/picker.ios.css +211 -112
  141. package/dist/collection/components/picker/picker.js +744 -472
  142. package/dist/collection/components/picker/picker.md.css +198 -108
  143. package/dist/collection/components/picker/test/basic/picker.e2e.js +13 -99
  144. package/dist/collection/components/{picker-legacy → picker}/test/is-open/picker.e2e.js +4 -4
  145. package/dist/collection/components/{picker-legacy → picker}/test/picker-id.spec.js +5 -5
  146. package/dist/collection/components/{picker-legacy → picker}/test/trigger/picker.e2e.js +1 -1
  147. package/dist/collection/components/picker-column/picker-column.js +335 -497
  148. package/dist/collection/components/{picker-legacy-column → picker-column}/picker-column.md.css +1 -1
  149. package/dist/collection/components/{picker-legacy-column → picker-column}/test/picker-column-aria.spec.js +3 -3
  150. package/dist/collection/components/{picker-legacy-column → picker-column}/test/picker-column-dynamic.spec.js +2 -2
  151. package/dist/collection/components/{picker-legacy-column → picker-column}/test/picker-column.spec.js +2 -2
  152. package/dist/collection/components/{picker-legacy-column → picker-column}/test/standalone/picker-column.e2e.js +3 -3
  153. package/dist/collection/components/{picker-column-option/picker-column-option.md.css → picker-column-internal/picker-column-internal.ios.css} +53 -6
  154. package/dist/collection/components/picker-column-internal/picker-column-internal.js +565 -0
  155. package/dist/collection/components/{picker-column/picker-column.css → picker-column-internal/picker-column-internal.md.css} +83 -96
  156. package/dist/collection/components/{picker-column/test/basic/picker-column.e2e.js → picker-column-internal/test/basic/picker-column-internal.e2e.js} +8 -8
  157. package/dist/collection/components/picker-column-internal/test/disabled/picker-column-internal.e2e.js +162 -0
  158. package/dist/collection/components/{picker-legacy/picker.md.css → picker-internal/picker-internal.ios.css} +100 -192
  159. package/dist/collection/components/picker-internal/picker-internal.js +544 -0
  160. package/dist/collection/components/{picker-legacy/picker.ios.css → picker-internal/picker-internal.md.css} +98 -207
  161. package/dist/collection/components/picker-internal/test/a11y/picker-internal.e2e.js +31 -0
  162. package/dist/collection/components/picker-internal/test/basic/picker-internal.e2e.js +118 -0
  163. package/dist/collection/components/{picker/test/keyboard-entry/picker.e2e.js → picker-internal/test/keyboard-entry/picker-internal.e2e.js} +32 -63
  164. package/dist/collection/components/progress-bar/progress-bar.ios.css +2 -2
  165. package/dist/collection/components/progress-bar/progress-bar.md.css +2 -2
  166. package/dist/collection/components/progress-bar/test/a11y/progress-bar.e2e.js +24 -0
  167. package/dist/collection/components/radio/radio.ios.css +2 -2
  168. package/dist/collection/components/radio/radio.md.css +2 -2
  169. package/dist/collection/components/radio/test/a11y/radio.e2e.js +44 -6
  170. package/dist/collection/components/range/range.ios.css +1 -1
  171. package/dist/collection/components/range/range.md.css +3 -3
  172. package/dist/collection/components/range/test/a11y/range.e2e.js +18 -8
  173. package/dist/collection/components/refresher/refresher.md.css +2 -2
  174. package/dist/collection/components/refresher/test/a11y/refresher.e2e.js +25 -0
  175. package/dist/collection/components/refresher-content/refresher-content.js +1 -1
  176. package/dist/collection/components/router-link/router-link.css +1 -1
  177. package/dist/collection/components/router-link/test/a11y/router-link.e2e.js +23 -0
  178. package/dist/collection/components/searchbar/searchbar.ios.css +1 -1
  179. package/dist/collection/components/segment/test/a11y/segment.e2e.js +23 -0
  180. package/dist/collection/components/segment-button/segment-button.md.css +2 -2
  181. package/dist/collection/components/select/select.ios.css +3 -3
  182. package/dist/collection/components/select/select.md.css +3 -3
  183. package/dist/collection/components/select/test/a11y/select.e2e.js +59 -4
  184. package/dist/collection/components/select-popover/select-popover.md.css +4 -4
  185. package/dist/collection/components/select-popover/test/a11y/select-popover.e2e.js +32 -0
  186. package/dist/collection/components/tab-bar/tab-bar.ios.css +1 -1
  187. package/dist/collection/components/tab-bar/tab-bar.md.css +1 -1
  188. package/dist/collection/components/textarea/test/a11y/textarea.e2e.js +35 -3
  189. package/dist/collection/components/textarea/textarea.ios.css +3 -3
  190. package/dist/collection/components/textarea/textarea.md.css +3 -3
  191. package/dist/collection/components/title/test/a11y/title.e2e.js +0 -39
  192. package/dist/collection/components/title/title.js +1 -22
  193. package/dist/collection/components/toast/test/a11y/toast.e2e.js +56 -24
  194. package/dist/collection/components/toast/toast.ios.css +1 -1
  195. package/dist/collection/components/toast/toast.md.css +2 -2
  196. package/dist/collection/components/toggle/test/a11y/toggle.e2e.js +8 -2
  197. package/dist/collection/components/toggle/toggle.ios.css +1 -1
  198. package/dist/collection/components/toggle/toggle.md.css +2 -2
  199. package/dist/collection/css/test/a11y/typography.e2e.js +18 -0
  200. package/dist/collection/themes/test/colors/theme.e2e.js +114 -0
  201. package/dist/collection/utils/overlays.js +3 -6
  202. package/dist/collection/utils/test/playwright/generator.js +1 -0
  203. package/dist/collection/utils/test/playwright/page/utils/set-content.js +1 -1
  204. package/dist/docs.json +24 -472
  205. package/dist/esm/{data-4b9508c9.js → data-f5c75b4e.js} +1 -1
  206. package/dist/esm/index.js +1 -1
  207. package/dist/esm/ion-action-sheet.entry.js +2 -2
  208. package/dist/esm/ion-alert.entry.js +3 -3
  209. package/dist/esm/ion-app_8.entry.js +4 -25
  210. package/dist/esm/ion-avatar_3.entry.js +2 -2
  211. package/dist/esm/ion-back-button.entry.js +1 -1
  212. package/dist/esm/ion-button_2.entry.js +2 -2
  213. package/dist/esm/ion-checkbox.entry.js +2 -2
  214. package/dist/esm/ion-datetime-button.entry.js +1 -1
  215. package/dist/esm/ion-datetime_3.entry.js +35 -29
  216. package/dist/esm/ion-fab_3.entry.js +2 -2
  217. package/dist/esm/ion-input.entry.js +2 -2
  218. package/dist/esm/ion-item-option_3.entry.js +2 -2
  219. package/dist/esm/ion-item_8.entry.js +3 -3
  220. package/dist/esm/ion-loading.entry.js +2 -2
  221. package/dist/esm/ion-menu_3.entry.js +2 -2
  222. package/dist/esm/ion-modal.entry.js +1 -1
  223. package/dist/esm/{ion-picker-column.entry.js → ion-picker-column-internal.entry.js} +87 -104
  224. package/dist/esm/{ion-picker.entry.js → ion-picker-internal.entry.js} +19 -26
  225. package/dist/esm/ion-popover.entry.js +1 -1
  226. package/dist/esm/ion-progress-bar.entry.js +2 -2
  227. package/dist/esm/ion-radio_2.entry.js +2 -2
  228. package/dist/esm/ion-range.entry.js +2 -2
  229. package/dist/esm/ion-refresher_2.entry.js +2 -2
  230. package/dist/esm/ion-route_4.entry.js +1 -1
  231. package/dist/esm/ion-searchbar.entry.js +1 -1
  232. package/dist/esm/ion-segment_2.entry.js +1 -1
  233. package/dist/esm/ion-select_3.entry.js +4 -4
  234. package/dist/esm/ion-tab-bar_2.entry.js +2 -2
  235. package/dist/esm/ion-textarea.entry.js +2 -2
  236. package/dist/esm/ion-toast.entry.js +3 -3
  237. package/dist/esm/ion-toggle.entry.js +2 -2
  238. package/dist/esm/ionic.js +1 -1
  239. package/dist/esm/loader.js +1 -1
  240. package/dist/esm/{overlays-fbc5cab5.js → overlays-d23ea6e1.js} +3 -6
  241. package/dist/esm-es5/index.js +1 -1
  242. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  243. package/dist/esm-es5/ion-alert.entry.js +1 -1
  244. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  245. package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
  246. package/dist/esm-es5/ion-back-button.entry.js +1 -1
  247. package/dist/esm-es5/ion-button_2.entry.js +1 -1
  248. package/dist/esm-es5/ion-checkbox.entry.js +1 -1
  249. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  250. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  251. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  252. package/dist/esm-es5/ion-input.entry.js +1 -1
  253. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  254. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  255. package/dist/esm-es5/ion-loading.entry.js +1 -1
  256. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  257. package/dist/esm-es5/ion-modal.entry.js +1 -1
  258. package/dist/esm-es5/ion-picker-column-internal.entry.js +4 -0
  259. package/dist/esm-es5/ion-picker-internal.entry.js +4 -0
  260. package/dist/esm-es5/ion-popover.entry.js +1 -1
  261. package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
  262. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  263. package/dist/esm-es5/ion-range.entry.js +1 -1
  264. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  265. package/dist/esm-es5/ion-route_4.entry.js +1 -1
  266. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  267. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  268. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  269. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  270. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  271. package/dist/esm-es5/ion-toast.entry.js +1 -1
  272. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  273. package/dist/esm-es5/ionic.js +1 -1
  274. package/dist/esm-es5/loader.js +1 -1
  275. package/dist/esm-es5/overlays-d23ea6e1.js +4 -0
  276. package/dist/html.html-data.json +1 -152
  277. package/dist/ionic/index.esm.js +1 -1
  278. package/dist/ionic/ionic.esm.js +1 -1
  279. package/dist/ionic/{p-4911a5d6.entry.js → p-023b1cf4.entry.js} +1 -1
  280. package/dist/ionic/{p-232d1f22.entry.js → p-02e066a0.entry.js} +1 -1
  281. package/dist/ionic/{p-3fd26bd6.system.entry.js → p-0339b688.system.entry.js} +1 -1
  282. package/dist/ionic/{p-6d72fb44.entry.js → p-0941a5d7.entry.js} +1 -1
  283. package/dist/ionic/{p-ab9456e9.system.entry.js → p-098f4d12.system.entry.js} +1 -1
  284. package/dist/ionic/{p-73190c5f.entry.js → p-0afef6b9.entry.js} +1 -1
  285. package/dist/ionic/{p-51a087d6.entry.js → p-0ebcff25.entry.js} +1 -1
  286. package/dist/ionic/{p-34c39c48.entry.js → p-1286049a.entry.js} +1 -1
  287. package/dist/ionic/{p-5bebc7b3.system.entry.js → p-12869199.system.entry.js} +1 -1
  288. package/dist/ionic/{p-fbf3a689.system.entry.js → p-193ff029.system.entry.js} +1 -1
  289. package/dist/ionic/{p-22e5af95.entry.js → p-1de103b7.entry.js} +1 -1
  290. package/dist/ionic/{p-846ee227.entry.js → p-1e57bd24.entry.js} +1 -1
  291. package/dist/ionic/{p-21c3515a.entry.js → p-29bf41bd.entry.js} +1 -1
  292. package/dist/ionic/p-2dd0355d.system.entry.js +4 -0
  293. package/dist/ionic/{p-4a36430f.system.entry.js → p-2f2293da.system.entry.js} +1 -1
  294. package/dist/ionic/{p-ea69616e.entry.js → p-31cf9613.entry.js} +1 -1
  295. package/dist/ionic/{p-4a081ea9.entry.js → p-3b568d18.entry.js} +1 -1
  296. package/dist/ionic/p-3e13501a.system.entry.js +4 -0
  297. package/dist/ionic/{p-93000a81.system.entry.js → p-3e625023.system.entry.js} +1 -1
  298. package/dist/ionic/{p-3f6270b3.entry.js → p-55a0cd33.entry.js} +1 -1
  299. package/dist/ionic/{p-a8baa23e.entry.js → p-57798ba6.entry.js} +1 -1
  300. package/dist/ionic/{p-7b725280.entry.js → p-5b20db28.entry.js} +1 -1
  301. package/dist/ionic/{p-5d42b6b4.entry.js → p-5b834053.entry.js} +1 -1
  302. package/dist/ionic/{p-8f5d30f5.entry.js → p-5fbfa8c9.entry.js} +1 -1
  303. package/dist/ionic/p-5ff60387.system.entry.js +4 -0
  304. package/dist/ionic/{p-563c41f0.system.entry.js → p-60b386c9.system.entry.js} +1 -1
  305. package/dist/ionic/p-67da080d.entry.js +4 -0
  306. package/dist/ionic/{p-2ab4e925.system.entry.js → p-6f96f7b1.system.entry.js} +1 -1
  307. package/dist/ionic/p-73ea8f82.system.entry.js +4 -0
  308. package/dist/ionic/{p-c9a21dfd.system.entry.js → p-76c94634.system.entry.js} +1 -1
  309. package/dist/ionic/{p-b752714f.system.entry.js → p-7828a27f.system.entry.js} +1 -1
  310. package/dist/ionic/{p-4bee86bd.entry.js → p-7a63e024.entry.js} +1 -1
  311. package/dist/ionic/{p-4a31c99f.entry.js → p-7c7e21a7.entry.js} +1 -1
  312. package/dist/ionic/p-80fa068e.entry.js +4 -0
  313. package/dist/ionic/{p-26798a7b.system.entry.js → p-8e086176.system.entry.js} +1 -1
  314. package/dist/ionic/{p-96dbbac1.system.entry.js → p-90483001.system.entry.js} +1 -1
  315. package/dist/ionic/{p-e8e86f69.system.entry.js → p-93f25d0d.system.entry.js} +1 -1
  316. package/dist/ionic/{p-a9a80f5b.entry.js → p-9588396d.entry.js} +1 -1
  317. package/dist/ionic/{p-32303650.system.entry.js → p-98c798de.system.entry.js} +1 -1
  318. package/dist/ionic/p-9eae578e.system.entry.js +4 -0
  319. package/dist/ionic/{p-f910cc73.system.entry.js → p-9eec42cc.system.entry.js} +1 -1
  320. package/dist/ionic/{p-a225bf0f.system.entry.js → p-a8e90d15.system.entry.js} +1 -1
  321. package/dist/ionic/p-ab11130c.system.js +4 -0
  322. package/dist/ionic/{p-6fd64e7c.system.entry.js → p-ad8bed54.system.entry.js} +1 -1
  323. package/dist/ionic/{p-27bcbbc7.system.entry.js → p-b1a2a195.system.entry.js} +1 -1
  324. package/dist/ionic/{p-a98dc0c1.entry.js → p-bcd073dd.entry.js} +1 -1
  325. package/dist/ionic/{p-18ba8221.entry.js → p-be6344dd.entry.js} +1 -1
  326. package/dist/ionic/p-c14f8ac8.js +4 -0
  327. package/dist/ionic/{p-73aa7604.entry.js → p-c7c7c110.entry.js} +1 -1
  328. package/dist/ionic/p-c9e07b2f.entry.js +4 -0
  329. package/dist/ionic/p-ccc2fb62.system.entry.js +4 -0
  330. package/dist/ionic/p-cce9f61a.system.entry.js +4 -0
  331. package/dist/ionic/{p-6b7c55cd.entry.js → p-cef8c5c2.entry.js} +1 -1
  332. package/dist/ionic/{p-6fbecbda.entry.js → p-d1025b3d.entry.js} +1 -1
  333. package/dist/ionic/{p-b4d31b30.system.entry.js → p-d32188f3.system.entry.js} +1 -1
  334. package/dist/ionic/{p-ef126ae8.system.entry.js → p-d39db09e.system.entry.js} +1 -1
  335. package/dist/ionic/{p-42ba3902.entry.js → p-d51019a8.entry.js} +1 -1
  336. package/dist/ionic/p-d7e9a0ac.entry.js +4 -0
  337. package/dist/ionic/{p-b133e9b4.entry.js → p-ddb30596.entry.js} +1 -1
  338. package/dist/ionic/{p-8017aad2.system.entry.js → p-de74582b.system.entry.js} +1 -1
  339. package/dist/ionic/p-e3584231.system.js +1 -1
  340. package/dist/ionic/p-ebcf6eca.entry.js +4 -0
  341. package/dist/ionic/{p-c18de88a.system.entry.js → p-ec040c06.system.entry.js} +1 -1
  342. package/dist/ionic/{p-464975c5.system.entry.js → p-ed25b7cc.system.entry.js} +1 -1
  343. package/dist/ionic/{p-e7ea9815.system.entry.js → p-f957d584.system.entry.js} +1 -1
  344. package/dist/ionic/{p-54dfc9b5.system.js → p-fff7a57e.system.js} +1 -1
  345. package/dist/types/components/datetime/utils/data.d.ts +7 -11
  346. package/dist/types/components/picker/picker.d.ts +129 -75
  347. package/dist/types/components/picker-column/picker-column.d.ts +39 -99
  348. package/dist/types/components/picker-column-internal/picker-column-internal-interfaces.d.ts +5 -0
  349. package/dist/types/components/picker-column-internal/picker-column-internal.d.ts +102 -0
  350. package/dist/types/components/picker-internal/picker-internal-interfaces.d.ts +8 -0
  351. package/dist/types/components/picker-internal/picker-internal.d.ts +102 -0
  352. package/dist/types/components.d.ts +122 -154
  353. package/dist/types/interface.d.ts +1 -1
  354. package/dist/types/utils/config.d.ts +2 -2
  355. package/dist/types/utils/overlays.d.ts +2 -5
  356. package/hydrate/index.js +1205 -1350
  357. package/package.json +1 -1
  358. package/components/ion-picker-column-option.d.ts +0 -11
  359. package/components/ion-picker-column-option.js +0 -9
  360. package/components/ion-picker-legacy-column.d.ts +0 -11
  361. package/components/ion-picker-legacy-column.js +0 -9
  362. package/components/ion-picker-legacy.js +0 -309
  363. package/components/picker-column-option.js +0 -122
  364. package/components/picker-column2.js +0 -379
  365. package/dist/cjs/ion-picker-column-option.cjs.entry.js +0 -104
  366. package/dist/collection/components/picker/test/a11y/picker.e2e.js +0 -15
  367. package/dist/collection/components/picker/test/custom/picker.e2e.js +0 -85
  368. package/dist/collection/components/picker-column/test/disabled/picker-column.e2e.js +0 -91
  369. package/dist/collection/components/picker-column/test/slots/picker-column.e2e.js +0 -39
  370. package/dist/collection/components/picker-column-option/picker-column-option.ios.css +0 -87
  371. package/dist/collection/components/picker-column-option/picker-column-option.js +0 -173
  372. package/dist/collection/components/picker-column-option/test/a11y/picker-column-option.e2e.js +0 -18
  373. package/dist/collection/components/picker-column-option/test/basic/picker-column-option.e2e.js +0 -37
  374. package/dist/collection/components/picker-column-option/test/picker-column-option.spec.js +0 -29
  375. package/dist/collection/components/picker-legacy/picker.js +0 -817
  376. package/dist/collection/components/picker-legacy/test/basic/picker.e2e.js +0 -25
  377. package/dist/collection/components/picker-legacy-column/picker-column.js +0 -419
  378. package/dist/collection/components/title/test/title.spec.js +0 -132
  379. package/dist/esm/ion-picker-column-option.entry.js +0 -100
  380. package/dist/esm-es5/ion-picker-column-option.entry.js +0 -4
  381. package/dist/esm-es5/ion-picker-column.entry.js +0 -4
  382. package/dist/esm-es5/ion-picker.entry.js +0 -4
  383. package/dist/esm-es5/overlays-fbc5cab5.js +0 -4
  384. package/dist/ionic/p-17da5ed1.entry.js +0 -4
  385. package/dist/ionic/p-36d194c5.entry.js +0 -4
  386. package/dist/ionic/p-3993ae66.entry.js +0 -4
  387. package/dist/ionic/p-5a1aac13.system.entry.js +0 -4
  388. package/dist/ionic/p-6e70dd1a.system.entry.js +0 -4
  389. package/dist/ionic/p-8e42850f.entry.js +0 -4
  390. package/dist/ionic/p-8fa6583d.system.js +0 -4
  391. package/dist/ionic/p-91af3c52.system.entry.js +0 -4
  392. package/dist/ionic/p-afcf4620.entry.js +0 -4
  393. package/dist/ionic/p-b3d0a3d6.system.entry.js +0 -4
  394. package/dist/ionic/p-b7010c69.system.entry.js +0 -4
  395. package/dist/ionic/p-c41bff4e.system.entry.js +0 -4
  396. package/dist/ionic/p-ca8938f4.js +0 -4
  397. package/dist/ionic/p-cde52378.system.entry.js +0 -4
  398. package/dist/ionic/p-ea74e0c6.entry.js +0 -4
  399. package/dist/ionic/p-ffd5dba4.system.entry.js +0 -4
  400. package/dist/types/components/picker/picker-interfaces.d.ts +0 -8
  401. package/dist/types/components/picker-column/picker-column-interfaces.d.ts +0 -4
  402. package/dist/types/components/picker-column-option/picker-column-option.d.ts +0 -66
  403. package/dist/types/components/picker-legacy/picker.d.ts +0 -158
  404. package/dist/types/components/picker-legacy-column/picker-column.d.ts +0 -46
  405. /package/dist/collection/components/{picker-legacy → picker}/animations/ios.enter.js +0 -0
  406. /package/dist/collection/components/{picker-legacy → picker}/animations/ios.leave.js +0 -0
  407. /package/dist/collection/components/picker/{picker-interfaces.js → picker-interface.js} +0 -0
  408. /package/dist/collection/components/{picker-legacy-column → picker-column}/picker-column.ios.css +0 -0
  409. /package/dist/collection/components/{picker-legacy-column → picker-column}/test/test.utils.js +0 -0
  410. /package/dist/collection/components/{picker-column/picker-column-interfaces.js → picker-column-internal/picker-column-internal-interfaces.js} +0 -0
  411. /package/dist/collection/components/{picker-legacy/picker-interface.js → picker-internal/picker-internal-interfaces.js} +0 -0
  412. /package/dist/esm-es5/{data-4b9508c9.js → data-f5c75b4e.js} +0 -0
  413. /package/dist/ionic/{p-368f5215.js → p-2aea8b1e.js} +0 -0
  414. /package/dist/ionic/{p-f58981c2.system.js → p-82e3d633.system.js} +0 -0
  415. /package/dist/types/components/{picker-legacy → picker}/animations/ios.enter.d.ts +0 -0
  416. /package/dist/types/components/{picker-legacy → picker}/animations/ios.leave.d.ts +0 -0
  417. /package/dist/types/components/{picker-legacy → picker}/picker-interface.d.ts +0 -0
  418. /package/dist/types/components/{picker-legacy-column → picker-column}/test/test.utils.d.ts +0 -0
@@ -1,379 +0,0 @@
1
- /*!
2
- * (C) Ionic http://ionicframework.com - MIT License
3
- */
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';
9
-
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
-
12
- 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)}";
13
-
14
- const PickerColumnCmp = /*@__PURE__*/ proxyCustomElement(class PickerColumnCmp extends HTMLElement {
15
- constructor() {
16
- super();
17
- this.__registerHost();
18
- this.ionPickerColChange = createEvent(this, "ionPickerColChange", 7);
19
- this.optHeight = 0;
20
- this.rotateFactor = 0;
21
- this.scaleFactor = 1;
22
- this.velocity = 0;
23
- this.y = 0;
24
- this.noAnimate = true;
25
- // `colDidChange` is a flag that gets set when the column is changed
26
- // dynamically. When this flag is set, the column will refresh
27
- // after the component re-renders to incorporate the new column data.
28
- // This is necessary because `this.refresh` queries for the option elements,
29
- // so it needs to wait for the latest elements to be available in the DOM.
30
- // Ex: column is created with 3 options. User updates the column data
31
- // to have 5 options. The column will still think it only has 3 options.
32
- this.colDidChange = false;
33
- this.col = undefined;
34
- }
35
- colChanged() {
36
- this.colDidChange = true;
37
- }
38
- async connectedCallback() {
39
- let pickerRotateFactor = 0;
40
- let pickerScaleFactor = 0.81;
41
- const mode = getIonMode(this);
42
- if (mode === 'ios') {
43
- pickerRotateFactor = -0.46;
44
- pickerScaleFactor = 1;
45
- }
46
- this.rotateFactor = pickerRotateFactor;
47
- this.scaleFactor = pickerScaleFactor;
48
- this.gesture = (await import('./index3.js')).createGesture({
49
- el: this.el,
50
- gestureName: 'picker-swipe',
51
- gesturePriority: 100,
52
- threshold: 0,
53
- passive: false,
54
- onStart: (ev) => this.onStart(ev),
55
- onMove: (ev) => this.onMove(ev),
56
- onEnd: (ev) => this.onEnd(ev),
57
- });
58
- this.gesture.enable();
59
- // Options have not been initialized yet
60
- // Animation must be disabled through the `noAnimate` flag
61
- // Otherwise, the options will render
62
- // at the top of the column and transition down
63
- this.tmrId = setTimeout(() => {
64
- this.noAnimate = false;
65
- // After initialization, `refresh()` will be called
66
- // At this point, animation will be enabled. The options will
67
- // animate as they are being selected.
68
- this.refresh(true);
69
- }, 250);
70
- }
71
- componentDidLoad() {
72
- this.onDomChange();
73
- }
74
- componentDidUpdate() {
75
- // Options may have changed since last update.
76
- if (this.colDidChange) {
77
- // Animation must be disabled through the `onDomChange` parameter.
78
- // Otherwise, the recently added options will render
79
- // at the top of the column and transition down
80
- this.onDomChange(true, false);
81
- this.colDidChange = false;
82
- }
83
- }
84
- disconnectedCallback() {
85
- if (this.rafId !== undefined)
86
- cancelAnimationFrame(this.rafId);
87
- if (this.tmrId)
88
- clearTimeout(this.tmrId);
89
- if (this.gesture) {
90
- this.gesture.destroy();
91
- this.gesture = undefined;
92
- }
93
- }
94
- emitColChange() {
95
- this.ionPickerColChange.emit(this.col);
96
- }
97
- setSelected(selectedIndex, duration) {
98
- // if there is a selected index, then figure out it's y position
99
- // if there isn't a selected index, then just use the top y position
100
- const y = selectedIndex > -1 ? -(selectedIndex * this.optHeight) : 0;
101
- this.velocity = 0;
102
- // set what y position we're at
103
- if (this.rafId !== undefined)
104
- cancelAnimationFrame(this.rafId);
105
- this.update(y, duration, true);
106
- this.emitColChange();
107
- }
108
- update(y, duration, saveY) {
109
- if (!this.optsEl) {
110
- return;
111
- }
112
- // ensure we've got a good round number :)
113
- let translateY = 0;
114
- let translateZ = 0;
115
- const { col, rotateFactor } = this;
116
- const prevSelected = col.selectedIndex;
117
- const selectedIndex = (col.selectedIndex = this.indexForY(-y));
118
- const durationStr = duration === 0 ? '' : duration + 'ms';
119
- const scaleStr = `scale(${this.scaleFactor})`;
120
- const children = this.optsEl.children;
121
- for (let i = 0; i < children.length; i++) {
122
- const button = children[i];
123
- const opt = col.options[i];
124
- const optOffset = i * this.optHeight + y;
125
- let transform = '';
126
- if (rotateFactor !== 0) {
127
- const rotateX = optOffset * rotateFactor;
128
- if (Math.abs(rotateX) <= 90) {
129
- translateY = 0;
130
- translateZ = 90;
131
- transform = `rotateX(${rotateX}deg) `;
132
- }
133
- else {
134
- translateY = -9999;
135
- }
136
- }
137
- else {
138
- translateZ = 0;
139
- translateY = optOffset;
140
- }
141
- const selected = selectedIndex === i;
142
- transform += `translate3d(0px,${translateY}px,${translateZ}px) `;
143
- if (this.scaleFactor !== 1 && !selected) {
144
- transform += scaleStr;
145
- }
146
- // Update transition duration
147
- if (this.noAnimate) {
148
- opt.duration = 0;
149
- button.style.transitionDuration = '';
150
- }
151
- else if (duration !== opt.duration) {
152
- opt.duration = duration;
153
- button.style.transitionDuration = durationStr;
154
- }
155
- // Update transform
156
- if (transform !== opt.transform) {
157
- opt.transform = transform;
158
- }
159
- button.style.transform = transform;
160
- /**
161
- * Ensure that the select column
162
- * item has the selected class
163
- */
164
- opt.selected = selected;
165
- if (selected) {
166
- button.classList.add(PICKER_OPT_SELECTED);
167
- }
168
- else {
169
- button.classList.remove(PICKER_OPT_SELECTED);
170
- }
171
- }
172
- this.col.prevSelected = prevSelected;
173
- if (saveY) {
174
- this.y = y;
175
- }
176
- if (this.lastIndex !== selectedIndex) {
177
- // have not set a last index yet
178
- hapticSelectionChanged();
179
- this.lastIndex = selectedIndex;
180
- }
181
- }
182
- decelerate() {
183
- if (this.velocity !== 0) {
184
- // still decelerating
185
- this.velocity *= DECELERATION_FRICTION;
186
- // do not let it go slower than a velocity of 1
187
- this.velocity = this.velocity > 0 ? Math.max(this.velocity, 1) : Math.min(this.velocity, -1);
188
- let y = this.y + this.velocity;
189
- if (y > this.minY) {
190
- // whoops, it's trying to scroll up farther than the options we have!
191
- y = this.minY;
192
- this.velocity = 0;
193
- }
194
- else if (y < this.maxY) {
195
- // gahh, it's trying to scroll down farther than we can!
196
- y = this.maxY;
197
- this.velocity = 0;
198
- }
199
- this.update(y, 0, true);
200
- const notLockedIn = Math.round(y) % this.optHeight !== 0 || Math.abs(this.velocity) > 1;
201
- if (notLockedIn) {
202
- // isn't locked in yet, keep decelerating until it is
203
- this.rafId = requestAnimationFrame(() => this.decelerate());
204
- }
205
- else {
206
- this.velocity = 0;
207
- this.emitColChange();
208
- hapticSelectionEnd();
209
- }
210
- }
211
- else if (this.y % this.optHeight !== 0) {
212
- // needs to still get locked into a position so options line up
213
- const currentPos = Math.abs(this.y % this.optHeight);
214
- // create a velocity in the direction it needs to scroll
215
- this.velocity = currentPos > this.optHeight / 2 ? 1 : -1;
216
- this.decelerate();
217
- }
218
- }
219
- indexForY(y) {
220
- return Math.min(Math.max(Math.abs(Math.round(y / this.optHeight)), 0), this.col.options.length - 1);
221
- }
222
- onStart(detail) {
223
- // We have to prevent default in order to block scrolling under the picker
224
- // but we DO NOT have to stop propagation, since we still want
225
- // some "click" events to capture
226
- if (detail.event.cancelable) {
227
- detail.event.preventDefault();
228
- }
229
- detail.event.stopPropagation();
230
- hapticSelectionStart();
231
- // reset everything
232
- if (this.rafId !== undefined)
233
- cancelAnimationFrame(this.rafId);
234
- const options = this.col.options;
235
- let minY = options.length - 1;
236
- let maxY = 0;
237
- for (let i = 0; i < options.length; i++) {
238
- if (!options[i].disabled) {
239
- minY = Math.min(minY, i);
240
- maxY = Math.max(maxY, i);
241
- }
242
- }
243
- this.minY = -(minY * this.optHeight);
244
- this.maxY = -(maxY * this.optHeight);
245
- }
246
- onMove(detail) {
247
- if (detail.event.cancelable) {
248
- detail.event.preventDefault();
249
- }
250
- detail.event.stopPropagation();
251
- // update the scroll position relative to pointer start position
252
- let y = this.y + detail.deltaY;
253
- if (y > this.minY) {
254
- // scrolling up higher than scroll area
255
- y = Math.pow(y, 0.8);
256
- this.bounceFrom = y;
257
- }
258
- else if (y < this.maxY) {
259
- // scrolling down below scroll area
260
- y += Math.pow(this.maxY - y, 0.9);
261
- this.bounceFrom = y;
262
- }
263
- else {
264
- this.bounceFrom = 0;
265
- }
266
- this.update(y, 0, false);
267
- }
268
- onEnd(detail) {
269
- if (this.bounceFrom > 0) {
270
- // bounce back up
271
- this.update(this.minY, 100, true);
272
- this.emitColChange();
273
- return;
274
- }
275
- else if (this.bounceFrom < 0) {
276
- // bounce back down
277
- this.update(this.maxY, 100, true);
278
- this.emitColChange();
279
- return;
280
- }
281
- this.velocity = clamp(-MAX_PICKER_SPEED, detail.velocityY * 23, MAX_PICKER_SPEED);
282
- if (this.velocity === 0 && detail.deltaY === 0) {
283
- const opt = detail.event.target.closest('.picker-opt');
284
- if (opt === null || opt === void 0 ? void 0 : opt.hasAttribute('opt-index')) {
285
- this.setSelected(parseInt(opt.getAttribute('opt-index'), 10), TRANSITION_DURATION);
286
- }
287
- }
288
- else {
289
- this.y += detail.deltaY;
290
- if (Math.abs(detail.velocityY) < 0.05) {
291
- const isScrollingUp = detail.deltaY > 0;
292
- const optHeightFraction = (Math.abs(this.y) % this.optHeight) / this.optHeight;
293
- if (isScrollingUp && optHeightFraction > 0.5) {
294
- this.velocity = Math.abs(this.velocity) * -1;
295
- }
296
- else if (!isScrollingUp && optHeightFraction <= 0.5) {
297
- this.velocity = Math.abs(this.velocity);
298
- }
299
- }
300
- this.decelerate();
301
- }
302
- }
303
- refresh(forceRefresh, animated) {
304
- var _a;
305
- let min = this.col.options.length - 1;
306
- let max = 0;
307
- const options = this.col.options;
308
- for (let i = 0; i < options.length; i++) {
309
- if (!options[i].disabled) {
310
- min = Math.min(min, i);
311
- max = Math.max(max, i);
312
- }
313
- }
314
- /**
315
- * Only update selected value if column has a
316
- * velocity of 0. If it does not, then the
317
- * column is animating might land on
318
- * a value different than the value at
319
- * selectedIndex
320
- */
321
- if (this.velocity !== 0) {
322
- return;
323
- }
324
- const selectedIndex = clamp(min, (_a = this.col.selectedIndex) !== null && _a !== void 0 ? _a : 0, max);
325
- if (this.col.prevSelected !== selectedIndex || forceRefresh) {
326
- const y = selectedIndex * this.optHeight * -1;
327
- const duration = animated ? TRANSITION_DURATION : 0;
328
- this.velocity = 0;
329
- this.update(y, duration, true);
330
- }
331
- }
332
- onDomChange(forceRefresh, animated) {
333
- const colEl = this.optsEl;
334
- if (colEl) {
335
- // DOM READ
336
- // We perfom a DOM read over a rendered item, this needs to happen after the first render or after the the column has changed
337
- this.optHeight = colEl.firstElementChild ? colEl.firstElementChild.clientHeight : 0;
338
- }
339
- this.refresh(forceRefresh, animated);
340
- }
341
- render() {
342
- const col = this.col;
343
- const mode = getIonMode(this);
344
- 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: {
345
- 'max-width': this.col.columnWidth,
346
- } }, 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))));
347
- }
348
- get el() { return this; }
349
- static get watchers() { return {
350
- "col": ["colChanged"]
351
- }; }
352
- static get style() { return {
353
- ios: pickerColumnIosCss,
354
- md: pickerColumnMdCss
355
- }; }
356
- }, [32, "ion-picker-legacy-column", {
357
- "col": [16]
358
- }, undefined, {
359
- "col": ["colChanged"]
360
- }]);
361
- const PICKER_OPT_SELECTED = 'picker-opt-selected';
362
- const DECELERATION_FRICTION = 0.97;
363
- const MAX_PICKER_SPEED = 90;
364
- const TRANSITION_DURATION = 150;
365
- function defineCustomElement() {
366
- if (typeof customElements === "undefined") {
367
- return;
368
- }
369
- const components = ["ion-picker-legacy-column"];
370
- components.forEach(tagName => { switch (tagName) {
371
- case "ion-picker-legacy-column":
372
- if (!customElements.get(tagName)) {
373
- customElements.define(tagName, PickerColumnCmp);
374
- }
375
- break;
376
- } });
377
- }
378
-
379
- export { PickerColumnCmp as P, defineCustomElement as d };
@@ -1,104 +0,0 @@
1
- /*!
2
- * (C) Ionic http://ionicframework.com - MIT License
3
- */
4
- 'use strict';
5
-
6
- Object.defineProperty(exports, '__esModule', { value: true });
7
-
8
- const index = require('./index-bbb4336c.js');
9
- const helpers = require('./helpers-76bb7efb.js');
10
- const theme = require('./theme-d1c573d2.js');
11
- const ionicGlobal = require('./ionic-global-f4a2093b.js');
12
-
13
- const pickerColumnOptionIosCss = "button{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;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;cursor:pointer;overflow:hidden}:host(.option-disabled){opacity:0.4}:host(.option-disabled) button{cursor:default}";
14
-
15
- const pickerColumnOptionMdCss = "button{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;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;cursor:pointer;overflow:hidden}:host(.option-disabled){opacity:0.4}:host(.option-disabled) button{cursor:default}:host(.option-active){color:var(--ion-color-base)}";
16
-
17
- const PickerColumnOption = class {
18
- constructor(hostRef) {
19
- index.registerInstance(this, hostRef);
20
- /**
21
- * We keep track of the parent picker column
22
- * so we can update the value of it when
23
- * clicking an enable option.
24
- */
25
- this.pickerColumn = null;
26
- this.ariaLabel = null;
27
- this.disabled = false;
28
- this.value = undefined;
29
- this.color = 'primary';
30
- }
31
- /**
32
- * The aria-label of the option has changed after the
33
- * first render and needs to be updated within the component.
34
- *
35
- * @param ariaLbl The new aria-label value.
36
- */
37
- onAriaLabelChange(ariaLbl) {
38
- this.ariaLabel = ariaLbl;
39
- }
40
- componentWillLoad() {
41
- const inheritedAttributes = helpers.inheritAttributes(this.el, ['aria-label']);
42
- /**
43
- * The initial value of `aria-label` needs to be set for
44
- * the first render.
45
-
46
- */
47
- this.ariaLabel = inheritedAttributes['aria-label'] || null;
48
- }
49
- connectedCallback() {
50
- this.pickerColumn = this.el.closest('ion-picker-column');
51
- }
52
- disconnectedCallback() {
53
- this.pickerColumn = null;
54
- }
55
- /**
56
- * The column options can load at any time
57
- * so the options needs to tell the
58
- * parent picker column when it is loaded
59
- * so the picker column can ensure it is
60
- * centered in the view.
61
- *
62
- * We intentionally run this for every
63
- * option. If we only ran this from
64
- * the selected option then if the newly
65
- * loaded options were not selected then
66
- * scrollActiveItemIntoView would not be called.
67
- */
68
- componentDidLoad() {
69
- const { pickerColumn } = this;
70
- if (pickerColumn !== null) {
71
- pickerColumn.scrollActiveItemIntoView();
72
- }
73
- }
74
- /**
75
- * When an option is clicked, update the
76
- * parent picker column value. This
77
- * component will handle centering the option
78
- * in the column view.
79
- */
80
- onClick() {
81
- const { pickerColumn } = this;
82
- if (pickerColumn !== null) {
83
- pickerColumn.setValue(this.value);
84
- }
85
- }
86
- render() {
87
- const { color, disabled, ariaLabel } = this;
88
- const mode = ionicGlobal.getIonMode(this);
89
- return (index.h(index.Host, { class: theme.createColorClasses(color, {
90
- [mode]: true,
91
- ['option-disabled']: disabled,
92
- }) }, index.h("button", { tabindex: "-1", "aria-label": ariaLabel, disabled: disabled, onClick: () => this.onClick() }, index.h("slot", null))));
93
- }
94
- get el() { return index.getElement(this); }
95
- static get watchers() { return {
96
- "aria-label": ["onAriaLabelChange"]
97
- }; }
98
- };
99
- PickerColumnOption.style = {
100
- ios: pickerColumnOptionIosCss,
101
- md: pickerColumnOptionMdCss
102
- };
103
-
104
- exports.ion_picker_column_option = PickerColumnOption;
@@ -1,15 +0,0 @@
1
- /*!
2
- * (C) Ionic http://ionicframework.com - MIT License
3
- */
4
- import AxeBuilder from "@axe-core/playwright";
5
- import { expect } from "@playwright/test";
6
- import { configs, test } from "../../../../utils/test/playwright/index";
7
- configs().forEach(({ title, config }) => {
8
- test.describe(title('picker: a11y'), () => {
9
- test('should not have accessibility violations', async ({ page }) => {
10
- await page.goto(`/src/components/picker/test/a11y`, config);
11
- const results = await new AxeBuilder({ page }).analyze();
12
- expect(results.violations).toEqual([]);
13
- });
14
- });
15
- });
@@ -1,85 +0,0 @@
1
- /*!
2
- * (C) Ionic http://ionicframework.com - MIT License
3
- */
4
- import { expect } from "@playwright/test";
5
- import { configs, test } from "../../../../utils/test/playwright/index";
6
- const pickerElement = `
7
- <ion-picker>
8
- <ion-picker-column id="first"></ion-picker-column>
9
- <ion-picker-column id="second"></ion-picker-column>
10
- </ion-picker>
11
-
12
- <script>
13
- const setPickerColumn = (selector, items, value) => {
14
- const column = document.querySelector(selector);
15
-
16
- items.forEach((item) => {
17
- const option = document.createElement('ion-picker-column-option');
18
- option.value = item.value;
19
- option.textContent = item.text;
20
-
21
- option.setAttribute('data-test-value', item.value);
22
-
23
- column.appendChild(option);
24
- });
25
-
26
- column.value = value;
27
- };
28
-
29
- setPickerColumn(
30
- '#first',
31
- [
32
- { text: 'Minified', value: 'minified' },
33
- { text: 'Responsive', value: 'responsive' },
34
- { text: 'Full Stack', value: 'full-stack' },
35
- { text: 'Mobile First', value: 'mobile-first' },
36
- { text: 'Serverless', value: 'serverless' },
37
- ],
38
- 'minified'
39
- );
40
-
41
- setPickerColumn(
42
- '#second',
43
- [
44
- { text: 'Tomato', value: 'tomato' },
45
- { text: 'Avocado', value: 'avocado' },
46
- { text: 'Onion', value: 'onion' },
47
- { text: 'Potato', value: 'potato' },
48
- { text: 'Artichoke', value: 'artichoke' },
49
- ],
50
- 'tomato'
51
- );
52
- </script>
53
- `;
54
- /**
55
- * This behavior does not vary across directions.
56
- */
57
- configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
58
- test.describe(title('picker: custom'), () => {
59
- test('should allow styling of the picker highlight', async ({ page }) => {
60
- await page.setContent(`
61
- <style>
62
- ion-picker {
63
- --highlight-background: rgb(0, 255, 0, 0.4);
64
- --highlight-border-radius: 48px;
65
- }
66
- </style>
67
- ${pickerElement}
68
- `, config);
69
- const picker = page.locator('ion-picker');
70
- await expect(picker).toHaveScreenshot(screenshot(`picker-custom-highlight`));
71
- });
72
- test('should allow styling of the picker fade', async ({ page }) => {
73
- await page.setContent(`
74
- <style>
75
- ion-picker {
76
- --fade-background-rgb: 40, 40, 40;
77
- }
78
- </style>
79
- ${pickerElement}
80
- `, config);
81
- const picker = page.locator('ion-picker');
82
- await expect(picker).toHaveScreenshot(screenshot(`picker-custom-fade`));
83
- });
84
- });
85
- });
@@ -1,91 +0,0 @@
1
- /*!
2
- * (C) Ionic http://ionicframework.com - MIT License
3
- */
4
- import { expect } from "@playwright/test";
5
- import { configs, test } from "../../../../utils/test/playwright/index";
6
- /**
7
- * This behavior does not vary across modes/directions.
8
- */
9
- configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => {
10
- test.describe(title('picker-column: disabled items'), () => {
11
- test('disabled picker item should not be considered active', async ({ page }) => {
12
- await page.setContent(`
13
- <ion-picker>
14
- <ion-picker-column value="b">
15
- <ion-picker-column-option value="a">A</ion-picker-column-option>
16
- <ion-picker-column-option value="b" disabled="true">B</ion-picker-column-option>
17
- <ion-picker-column-option value="c">C</ion-picker-column-option>
18
- </ion-picker-column>
19
- </ion-picker>
20
- `, config);
21
- const disabledItem = page.locator('ion-picker-column-option').nth(1);
22
- await expect(disabledItem).not.toHaveClass(/option-active/);
23
- });
24
- test('setting the value to a disabled item should not cause that item to be active', async ({ page }) => {
25
- await page.setContent(`
26
- <ion-picker>
27
- <ion-picker-column>
28
- <ion-picker-column-option value="a">A</ion-picker-column-option>
29
- <ion-picker-column-option value="b" disabled="true">B</ion-picker-column-option>
30
- <ion-picker-column-option value="c">C</ion-picker-column-option>
31
- </ion-picker-column>
32
- </ion-picker>
33
- `, config);
34
- const pickerColumn = page.locator('ion-picker-column');
35
- await pickerColumn.evaluate((el) => (el.value = 'b'));
36
- await page.waitForChanges();
37
- const disabledItem = page.locator('ion-picker-column ion-picker-column-option').nth(1);
38
- await expect(disabledItem).not.toHaveClass(/option-active/);
39
- });
40
- test('defaulting the value to a disabled item should not cause that item to be active', async ({ page }) => {
41
- await page.setContent(`
42
- <ion-picker>
43
- <ion-picker-column value="b">
44
- <ion-picker-column-option value="a">A</ion-picker-column-option>
45
- <ion-picker-column-option value="b" disabled="true">B</ion-picker-column-option>
46
- <ion-picker-column-option value="c">C</ion-picker-column-option>
47
- </ion-picker-column>
48
- </ion-picker>
49
- `, config);
50
- const disabledItem = page.locator('ion-picker-column ion-picker-column-option').nth(1);
51
- await expect(disabledItem).not.toHaveClass(/option-active/);
52
- });
53
- });
54
- });
55
- /**
56
- * This behavior does not vary across directions.
57
- */
58
- configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
59
- test.describe(title('picker-column: disabled column rendering'), () => {
60
- test.beforeEach(async ({ page }) => {
61
- await page.goto('/src/components/picker-column/test/disabled', config);
62
- });
63
- test('disabled column should not have visual regressions', async ({ page }) => {
64
- const disabledColumn = page.locator('#column-disabled');
65
- await page.waitForChanges();
66
- await expect(disabledColumn).toHaveScreenshot(screenshot('picker-disabled-column'));
67
- });
68
- });
69
- });
70
- /**
71
- * This behavior does not vary across modes/directions.
72
- */
73
- configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => {
74
- test.describe(title('picker-column: disabled column'), () => {
75
- test.beforeEach(async ({ page }) => {
76
- await page.goto('/src/components/picker-column/test/disabled', config);
77
- });
78
- test('clicking option in disabled column should not change value', async ({ page }) => {
79
- const column = page.locator('#column-disabled');
80
- const option = column.locator('ion-picker-column-option').nth(1);
81
- await expect(column).toHaveJSProperty('value', 11);
82
- /**
83
- * Options do not receive pointer events
84
- * so we need to forcibly click the element.
85
- */
86
- await option.click({ force: true });
87
- await page.waitForChanges();
88
- await expect(column).toHaveJSProperty('value', 11);
89
- });
90
- });
91
- });