@ionic/core 7.5.8-dev.11702398696.1ab62ea9 → 7.5.8-dev.11703088210.14a72b83

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 (485) hide show
  1. package/components/backdrop.js +12 -0
  2. package/components/data.js +1 -1
  3. package/components/gesture-controller.js +1 -1
  4. package/components/ion-content.js +1 -1
  5. package/components/ion-datetime.js +64 -40
  6. package/components/ion-input.js +0 -2
  7. package/components/ion-picker-column-internal.d.ts +11 -0
  8. package/components/ion-picker-column-internal.js +9 -0
  9. package/components/ion-picker-column.js +2 -2
  10. package/components/{ion-picker-legacy.d.ts → ion-picker-internal.d.ts} +4 -4
  11. package/components/ion-picker-internal.js +9 -0
  12. package/components/ion-picker.js +309 -1
  13. package/components/ion-refresher-content.js +10 -3
  14. package/components/ion-refresher.js +4 -183
  15. package/components/ion-searchbar.js +0 -2
  16. package/components/ion-textarea.js +0 -2
  17. package/components/overlays.js +4 -11
  18. package/components/picker-column-internal.js +390 -0
  19. package/components/picker-column.js +322 -351
  20. package/components/{picker.js → picker-internal.js} +22 -29
  21. package/components/refresher.utils.js +196 -0
  22. package/dist/cjs/{app-globals-0af482c7.js → app-globals-28656db1.js} +1 -1
  23. package/dist/cjs/{button-active-9d7e0640.js → button-active-75b38d77.js} +2 -2
  24. package/dist/cjs/{data-e7526b58.js → data-36b9094e.js} +1 -1
  25. package/dist/cjs/{gesture-controller-9436f482.js → gesture-controller-c40c045a.js} +0 -1
  26. package/dist/cjs/{index-5cbb20f9.js → index-097270a3.js} +1 -1
  27. package/dist/cjs/{index-bbb4336c.js → index-b0102f48.js} +1 -39
  28. package/dist/cjs/{index-d4c2e02c.js → index-cb3e0ab7.js} +3 -3
  29. package/dist/cjs/{index-ee07ed59.js → index-d1b59ffa.js} +1 -1
  30. package/dist/cjs/index.cjs.js +9 -9
  31. package/dist/cjs/ion-accordion_2.cjs.entry.js +2 -2
  32. package/dist/cjs/ion-action-sheet.cjs.entry.js +6 -6
  33. package/dist/cjs/ion-alert.cjs.entry.js +6 -6
  34. package/dist/cjs/ion-app_8.cjs.entry.js +6 -6
  35. package/dist/cjs/ion-avatar_3.cjs.entry.js +2 -2
  36. package/dist/cjs/ion-back-button.cjs.entry.js +2 -2
  37. package/dist/cjs/ion-backdrop.cjs.entry.js +14 -2
  38. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +2 -2
  39. package/dist/cjs/ion-button_2.cjs.entry.js +2 -2
  40. package/dist/cjs/ion-card_5.cjs.entry.js +2 -2
  41. package/dist/cjs/ion-checkbox.cjs.entry.js +2 -2
  42. package/dist/cjs/ion-chip.cjs.entry.js +2 -2
  43. package/dist/cjs/ion-col_3.cjs.entry.js +2 -2
  44. package/dist/cjs/ion-datetime-button.cjs.entry.js +3 -3
  45. package/dist/cjs/ion-datetime_3.cjs.entry.js +58 -38
  46. package/dist/cjs/ion-fab_3.cjs.entry.js +2 -2
  47. package/dist/cjs/ion-img.cjs.entry.js +2 -2
  48. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +2 -2
  49. package/dist/cjs/ion-input.cjs.entry.js +2 -4
  50. package/dist/cjs/ion-item-option_3.cjs.entry.js +3 -3
  51. package/dist/cjs/ion-item_8.cjs.entry.js +2 -2
  52. package/dist/cjs/ion-loading.cjs.entry.js +3 -4
  53. package/dist/cjs/ion-menu_3.cjs.entry.js +6 -6
  54. package/dist/cjs/ion-modal.cjs.entry.js +6 -6
  55. package/dist/cjs/ion-nav_2.cjs.entry.js +4 -4
  56. package/dist/cjs/{ion-picker-column.cjs.entry.js → ion-picker-column-internal.cjs.entry.js} +89 -106
  57. package/dist/cjs/{ion-picker.cjs.entry.js → ion-picker-internal.cjs.entry.js} +20 -27
  58. package/dist/cjs/ion-popover.cjs.entry.js +4 -5
  59. package/dist/cjs/ion-progress-bar.cjs.entry.js +2 -2
  60. package/dist/cjs/ion-radio_2.cjs.entry.js +2 -2
  61. package/dist/cjs/ion-range.cjs.entry.js +3 -3
  62. package/dist/cjs/ion-refresher_2.cjs.entry.js +32 -17
  63. package/dist/cjs/ion-reorder_2.cjs.entry.js +3 -3
  64. package/dist/cjs/ion-ripple-effect.cjs.entry.js +2 -2
  65. package/dist/cjs/ion-route_4.cjs.entry.js +2 -2
  66. package/dist/cjs/ion-searchbar.cjs.entry.js +2 -4
  67. package/dist/cjs/ion-segment_2.cjs.entry.js +3 -3
  68. package/dist/cjs/ion-select_3.cjs.entry.js +3 -4
  69. package/dist/cjs/ion-spinner.cjs.entry.js +2 -2
  70. package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
  71. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +2 -2
  72. package/dist/cjs/ion-tab_2.cjs.entry.js +1 -1
  73. package/dist/cjs/ion-text.cjs.entry.js +2 -2
  74. package/dist/cjs/ion-textarea.cjs.entry.js +2 -4
  75. package/dist/cjs/ion-toast.cjs.entry.js +3 -4
  76. package/dist/cjs/ion-toggle.cjs.entry.js +3 -3
  77. package/dist/cjs/{ionic-global-f4a2093b.js → ionic-global-62510d64.js} +1 -1
  78. package/dist/cjs/ionic.cjs.js +5 -5
  79. package/dist/cjs/{ios.transition-a4ffb5a2.js → ios.transition-d9c0e4fb.js} +2 -2
  80. package/dist/cjs/loader.cjs.js +4 -4
  81. package/dist/cjs/{md.transition-292abe1c.js → md.transition-4fac8a87.js} +2 -2
  82. package/dist/cjs/{overlays-e8e05b0e.js → overlays-b1471172.js} +5 -12
  83. package/dist/cjs/{status-tap-415acac6.js → status-tap-0aa8e1f2.js} +1 -1
  84. package/dist/cjs/{swipe-back-b8f2330b.js → swipe-back-2a858bbd.js} +2 -2
  85. package/dist/collection/collection-manifest.json +7 -8
  86. package/dist/collection/components/backdrop/backdrop.js +12 -0
  87. package/dist/collection/components/content/content.css +4 -0
  88. package/dist/collection/components/datetime/datetime.ios.css +37 -91
  89. package/dist/collection/components/datetime/datetime.js +36 -24
  90. package/dist/collection/components/datetime/datetime.md.css +37 -96
  91. package/dist/collection/components/datetime/test/a11y/datetime.e2e.js +1 -1
  92. package/dist/collection/components/datetime/test/a11y/datetime.spec.js +9 -6
  93. package/dist/collection/components/datetime/test/basic/datetime.e2e.js +0 -10
  94. package/dist/collection/components/datetime/test/datetime.e2e.js +2 -2
  95. package/dist/collection/components/datetime/test/disabled/datetime.spec.js +4 -4
  96. package/dist/collection/components/datetime/test/locale/datetime.e2e.js +2 -2
  97. package/dist/collection/components/datetime/test/minmax/datetime.e2e.js +6 -6
  98. package/dist/collection/components/datetime/test/month-year-picker/datetime.e2e.js +1 -1
  99. package/dist/collection/components/datetime/test/prefer-wheel/datetime.e2e.js +41 -43
  100. package/dist/collection/components/datetime/test/presentation/datetime.e2e.js +1 -1
  101. package/dist/collection/components/datetime/test/readonly/datetime.e2e.js +4 -4
  102. package/dist/collection/components/datetime/test/values/datetime.e2e.js +12 -15
  103. package/dist/collection/components/datetime/utils/data.js +1 -1
  104. package/dist/collection/components/input/input.js +2 -4
  105. package/dist/collection/components/picker/picker.ios.css +211 -112
  106. package/dist/collection/components/picker/picker.js +743 -468
  107. package/dist/collection/components/picker/picker.md.css +198 -108
  108. package/dist/collection/components/picker/test/basic/picker.e2e.js +13 -99
  109. package/dist/collection/components/{picker-legacy → picker}/test/is-open/picker.e2e.js +4 -4
  110. package/dist/collection/components/{picker-legacy → picker}/test/picker-id.spec.js +5 -5
  111. package/dist/collection/components/{picker-legacy → picker}/test/trigger/picker.e2e.js +1 -1
  112. package/dist/collection/components/picker-column/picker-column.js +335 -497
  113. package/dist/collection/components/{picker-legacy-column → picker-column}/test/picker-column-aria.spec.js +3 -3
  114. package/dist/collection/components/{picker-legacy-column → picker-column}/test/picker-column-dynamic.spec.js +2 -2
  115. package/dist/collection/components/{picker-legacy-column → picker-column}/test/picker-column.spec.js +2 -2
  116. package/dist/collection/components/{picker-legacy-column → picker-column}/test/standalone/picker-column.e2e.js +3 -3
  117. package/dist/collection/components/{picker-column-option/picker-column-option.md.css → picker-column-internal/picker-column-internal.ios.css} +53 -6
  118. package/dist/collection/components/picker-column-internal/picker-column-internal.js +565 -0
  119. package/dist/collection/components/{picker-column/picker-column.css → picker-column-internal/picker-column-internal.md.css} +83 -96
  120. package/dist/collection/components/{picker-column/test/basic/picker-column.e2e.js → picker-column-internal/test/basic/picker-column-internal.e2e.js} +8 -8
  121. package/dist/collection/components/picker-column-internal/test/disabled/picker-column-internal.e2e.js +162 -0
  122. package/dist/collection/components/{picker-legacy/picker.md.css → picker-internal/picker-internal.ios.css} +100 -192
  123. package/dist/collection/components/picker-internal/picker-internal.js +544 -0
  124. package/dist/collection/components/{picker-legacy/picker.ios.css → picker-internal/picker-internal.md.css} +98 -207
  125. package/dist/collection/components/{picker/test/a11y/picker.e2e.js → picker-internal/test/a11y/picker-internal.e2e.js} +2 -2
  126. package/dist/collection/components/picker-internal/test/basic/picker-internal.e2e.js +118 -0
  127. package/dist/collection/components/{picker/test/keyboard-entry/picker.e2e.js → picker-internal/test/keyboard-entry/picker-internal.e2e.js} +32 -63
  128. package/dist/collection/components/refresher/refresher.utils.js +19 -11
  129. package/dist/collection/components/refresher-content/refresher-content.js +9 -3
  130. package/dist/collection/components/searchbar/searchbar.js +1 -3
  131. package/dist/collection/components/textarea/textarea.js +2 -4
  132. package/dist/collection/utils/gesture/gesture-controller.js +1 -1
  133. package/dist/collection/utils/overlays.js +4 -11
  134. package/dist/docs.json +47 -505
  135. package/dist/esm/{app-globals-722340c4.js → app-globals-c23144fc.js} +1 -1
  136. package/dist/esm/{button-active-ed9d848c.js → button-active-7013b5a1.js} +2 -2
  137. package/dist/esm/{data-4b9508c9.js → data-f5c75b4e.js} +1 -1
  138. package/dist/esm/{gesture-controller-314a54f6.js → gesture-controller-1bf57181.js} +1 -1
  139. package/dist/esm/{index-39782642.js → index-2cf77112.js} +2 -2
  140. package/dist/esm/{index-08d686eb.js → index-39329c6f.js} +1 -39
  141. package/dist/esm/{index-80492ed3.js → index-7a818ed3.js} +1 -1
  142. package/dist/esm/{index-d8817fb0.js → index-bebaae5d.js} +3 -3
  143. package/dist/esm/index.js +9 -9
  144. package/dist/esm/ion-accordion_2.entry.js +2 -2
  145. package/dist/esm/ion-action-sheet.entry.js +6 -6
  146. package/dist/esm/ion-alert.entry.js +6 -6
  147. package/dist/esm/ion-app_8.entry.js +6 -6
  148. package/dist/esm/ion-avatar_3.entry.js +2 -2
  149. package/dist/esm/ion-back-button.entry.js +2 -2
  150. package/dist/esm/ion-backdrop.entry.js +14 -2
  151. package/dist/esm/ion-breadcrumb_2.entry.js +2 -2
  152. package/dist/esm/ion-button_2.entry.js +2 -2
  153. package/dist/esm/ion-card_5.entry.js +2 -2
  154. package/dist/esm/ion-checkbox.entry.js +2 -2
  155. package/dist/esm/ion-chip.entry.js +2 -2
  156. package/dist/esm/ion-col_3.entry.js +2 -2
  157. package/dist/esm/ion-datetime-button.entry.js +3 -3
  158. package/dist/esm/ion-datetime_3.entry.js +57 -37
  159. package/dist/esm/ion-fab_3.entry.js +2 -2
  160. package/dist/esm/ion-img.entry.js +2 -2
  161. package/dist/esm/ion-infinite-scroll_2.entry.js +2 -2
  162. package/dist/esm/ion-input.entry.js +2 -4
  163. package/dist/esm/ion-item-option_3.entry.js +3 -3
  164. package/dist/esm/ion-item_8.entry.js +2 -2
  165. package/dist/esm/ion-loading.entry.js +3 -4
  166. package/dist/esm/ion-menu_3.entry.js +6 -6
  167. package/dist/esm/ion-modal.entry.js +6 -6
  168. package/dist/esm/ion-nav_2.entry.js +4 -4
  169. package/dist/esm/{ion-picker-column.entry.js → ion-picker-column-internal.entry.js} +89 -106
  170. package/dist/esm/{ion-picker.entry.js → ion-picker-internal.entry.js} +20 -27
  171. package/dist/esm/ion-popover.entry.js +4 -5
  172. package/dist/esm/ion-progress-bar.entry.js +2 -2
  173. package/dist/esm/ion-radio_2.entry.js +2 -2
  174. package/dist/esm/ion-range.entry.js +3 -3
  175. package/dist/esm/ion-refresher_2.entry.js +32 -17
  176. package/dist/esm/ion-reorder_2.entry.js +3 -3
  177. package/dist/esm/ion-ripple-effect.entry.js +2 -2
  178. package/dist/esm/ion-route_4.entry.js +2 -2
  179. package/dist/esm/ion-searchbar.entry.js +2 -4
  180. package/dist/esm/ion-segment_2.entry.js +3 -3
  181. package/dist/esm/ion-select_3.entry.js +3 -4
  182. package/dist/esm/ion-spinner.entry.js +2 -2
  183. package/dist/esm/ion-split-pane.entry.js +2 -2
  184. package/dist/esm/ion-tab-bar_2.entry.js +2 -2
  185. package/dist/esm/ion-tab_2.entry.js +1 -1
  186. package/dist/esm/ion-text.entry.js +2 -2
  187. package/dist/esm/ion-textarea.entry.js +2 -4
  188. package/dist/esm/ion-toast.entry.js +3 -4
  189. package/dist/esm/ion-toggle.entry.js +3 -3
  190. package/dist/esm/{ionic-global-c0cda98e.js → ionic-global-6c78e871.js} +1 -1
  191. package/dist/esm/ionic.js +6 -6
  192. package/dist/esm/{ios.transition-fd16bec1.js → ios.transition-daa373e9.js} +2 -2
  193. package/dist/esm/loader.js +5 -5
  194. package/dist/esm/{md.transition-94ac93e1.js → md.transition-91c3d3cc.js} +2 -2
  195. package/dist/esm/{overlays-fbc5cab5.js → overlays-64e67e2c.js} +5 -12
  196. package/dist/esm/{status-tap-2b93b1b5.js → status-tap-9dd45200.js} +1 -1
  197. package/dist/esm/{swipe-back-a8ca7f93.js → swipe-back-a6f386fc.js} +2 -2
  198. package/dist/esm-es5/app-globals-c23144fc.js +4 -0
  199. package/dist/esm-es5/{button-active-ed9d848c.js → button-active-7013b5a1.js} +1 -1
  200. package/dist/esm-es5/{gesture-controller-314a54f6.js → gesture-controller-1bf57181.js} +1 -1
  201. package/dist/esm-es5/{index-39782642.js → index-2cf77112.js} +1 -1
  202. package/dist/esm-es5/{index-08d686eb.js → index-39329c6f.js} +1 -1
  203. package/dist/esm-es5/{index-80492ed3.js → index-7a818ed3.js} +1 -1
  204. package/dist/esm-es5/{index-d8817fb0.js → index-bebaae5d.js} +1 -1
  205. package/dist/esm-es5/index.js +1 -1
  206. package/dist/esm-es5/ion-accordion_2.entry.js +1 -1
  207. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  208. package/dist/esm-es5/ion-alert.entry.js +1 -1
  209. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  210. package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
  211. package/dist/esm-es5/ion-back-button.entry.js +1 -1
  212. package/dist/esm-es5/ion-backdrop.entry.js +1 -1
  213. package/dist/esm-es5/ion-breadcrumb_2.entry.js +1 -1
  214. package/dist/esm-es5/ion-button_2.entry.js +1 -1
  215. package/dist/esm-es5/ion-card_5.entry.js +1 -1
  216. package/dist/esm-es5/ion-checkbox.entry.js +1 -1
  217. package/dist/esm-es5/ion-chip.entry.js +1 -1
  218. package/dist/esm-es5/ion-col_3.entry.js +1 -1
  219. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  220. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  221. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  222. package/dist/esm-es5/ion-img.entry.js +1 -1
  223. package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
  224. package/dist/esm-es5/ion-input.entry.js +1 -1
  225. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  226. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  227. package/dist/esm-es5/ion-loading.entry.js +1 -1
  228. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  229. package/dist/esm-es5/ion-modal.entry.js +1 -1
  230. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  231. package/dist/esm-es5/ion-picker-column-internal.entry.js +4 -0
  232. package/dist/esm-es5/ion-picker-internal.entry.js +4 -0
  233. package/dist/esm-es5/ion-popover.entry.js +1 -1
  234. package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
  235. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  236. package/dist/esm-es5/ion-range.entry.js +1 -1
  237. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  238. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  239. package/dist/esm-es5/ion-ripple-effect.entry.js +1 -1
  240. package/dist/esm-es5/ion-route_4.entry.js +1 -1
  241. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  242. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  243. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  244. package/dist/esm-es5/ion-spinner.entry.js +1 -1
  245. package/dist/esm-es5/ion-split-pane.entry.js +1 -1
  246. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  247. package/dist/esm-es5/ion-tab_2.entry.js +1 -1
  248. package/dist/esm-es5/ion-text.entry.js +1 -1
  249. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  250. package/dist/esm-es5/ion-toast.entry.js +1 -1
  251. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  252. package/dist/esm-es5/{ionic-global-c0cda98e.js → ionic-global-6c78e871.js} +1 -1
  253. package/dist/esm-es5/ionic.js +1 -1
  254. package/dist/esm-es5/{ios.transition-fd16bec1.js → ios.transition-daa373e9.js} +1 -1
  255. package/dist/esm-es5/loader.js +1 -1
  256. package/dist/esm-es5/{md.transition-94ac93e1.js → md.transition-91c3d3cc.js} +1 -1
  257. package/dist/esm-es5/overlays-64e67e2c.js +4 -0
  258. package/dist/esm-es5/{status-tap-2b93b1b5.js → status-tap-9dd45200.js} +1 -1
  259. package/dist/esm-es5/swipe-back-a6f386fc.js +4 -0
  260. package/dist/html.html-data.json +3 -154
  261. package/dist/ionic/index.esm.js +1 -1
  262. package/dist/ionic/ionic.esm.js +1 -1
  263. package/dist/ionic/ionic.js +1 -1
  264. package/dist/ionic/{p-30029cc2.system.js → p-0263eb49.system.js} +1 -1
  265. package/dist/ionic/p-06600f70.js +4 -0
  266. package/dist/ionic/p-0827d00e.system.entry.js +4 -0
  267. package/dist/ionic/{p-9738fd82.js → p-12cdcb59.js} +1 -1
  268. package/dist/ionic/{p-1161a793.entry.js → p-161d0916.entry.js} +1 -1
  269. package/dist/ionic/{p-1d624e03.system.js → p-1631b52f.system.js} +1 -1
  270. package/dist/ionic/{p-34c39c48.entry.js → p-18032a93.entry.js} +1 -1
  271. package/dist/ionic/p-19545a49.system.entry.js +4 -0
  272. package/dist/ionic/{p-cfe57b1b.entry.js → p-1c6c6098.entry.js} +1 -1
  273. package/dist/ionic/{p-6e70dd1a.system.entry.js → p-1cbc21e2.system.entry.js} +1 -1
  274. package/dist/ionic/p-1e7daa1f.entry.js +4 -0
  275. package/dist/ionic/{p-2092f39f.entry.js → p-1ff22253.entry.js} +1 -1
  276. package/dist/ionic/{p-5ecae037.js → p-21f015cf.js} +1 -1
  277. package/dist/ionic/{p-3fd26bd6.system.entry.js → p-23a27e78.system.entry.js} +1 -1
  278. package/dist/ionic/p-2507b0c0.entry.js +4 -0
  279. package/dist/ionic/{p-22e5af95.entry.js → p-2657f213.entry.js} +1 -1
  280. package/dist/ionic/{p-6fd64e7c.system.entry.js → p-27a5f2c7.system.entry.js} +1 -1
  281. package/dist/ionic/{p-4a081ea9.entry.js → p-27e6473f.entry.js} +1 -1
  282. package/dist/ionic/{p-6ad34705.system.entry.js → p-2a7e6572.system.entry.js} +1 -1
  283. package/dist/ionic/{p-77965464.system.entry.js → p-2ac9d078.system.entry.js} +1 -1
  284. package/dist/ionic/{p-4fb51e61.system.entry.js → p-2cd9cb80.system.entry.js} +1 -1
  285. package/dist/ionic/{p-17da5ed1.entry.js → p-312221db.entry.js} +1 -1
  286. package/dist/ionic/{p-a225bf0f.system.entry.js → p-315ad733.system.entry.js} +1 -1
  287. package/dist/ionic/{p-3e1e14d9.system.js → p-31b2326e.system.js} +1 -1
  288. package/dist/ionic/p-33f3cd49.entry.js +4 -0
  289. package/dist/ionic/{p-5b365ca7.system.js → p-34d6f520.system.js} +1 -1
  290. package/dist/ionic/{p-b133e9b4.entry.js → p-3535a36c.entry.js} +1 -1
  291. package/dist/ionic/p-35ce400e.system.js +4 -0
  292. package/dist/ionic/{p-93000a81.system.entry.js → p-3acad8ff.system.entry.js} +1 -1
  293. package/dist/ionic/{p-b5f9f14c.entry.js → p-3cb5466e.entry.js} +1 -1
  294. package/dist/ionic/{p-1fc72959.entry.js → p-3f5ae764.entry.js} +1 -1
  295. package/dist/ionic/{p-42ba3902.entry.js → p-405f1a72.entry.js} +1 -1
  296. package/dist/ionic/{p-96dbbac1.system.entry.js → p-41f7af3f.system.entry.js} +1 -1
  297. package/dist/ionic/{p-3fe96156.system.js → p-426bdba9.system.js} +1 -1
  298. package/dist/ionic/p-45db7949.system.entry.js +4 -0
  299. package/dist/ionic/{p-21c3515a.entry.js → p-46dbd723.entry.js} +1 -1
  300. package/dist/ionic/{p-ef126ae8.system.entry.js → p-4f71a9cf.system.entry.js} +1 -1
  301. package/dist/ionic/{p-a4afcc88.entry.js → p-53a3283e.entry.js} +1 -1
  302. package/dist/ionic/{p-4a36430f.system.entry.js → p-57c0d5bf.system.entry.js} +1 -1
  303. package/dist/ionic/p-58dd7c15.entry.js +4 -0
  304. package/dist/ionic/{p-b4a51c42.system.js → p-58ff9e5b.system.js} +1 -1
  305. package/dist/ionic/{p-cde52378.system.entry.js → p-5a7d5905.system.entry.js} +1 -1
  306. package/dist/ionic/p-5c7f13cd.system.entry.js +4 -0
  307. package/dist/ionic/{p-e8e86f69.system.entry.js → p-5f127075.system.entry.js} +1 -1
  308. package/dist/ionic/{p-4a31c99f.entry.js → p-5f46d93e.entry.js} +1 -1
  309. package/dist/ionic/{p-18ba8221.entry.js → p-5fb707e0.entry.js} +1 -1
  310. package/dist/ionic/{p-6fbecbda.entry.js → p-64af4468.entry.js} +1 -1
  311. package/dist/ionic/{p-232d1f22.entry.js → p-6744eca5.entry.js} +1 -1
  312. package/dist/ionic/{p-8f5d30f5.entry.js → p-67598744.entry.js} +1 -1
  313. package/dist/ionic/p-6a6477b2.js +4 -0
  314. package/dist/ionic/{p-7b725280.entry.js → p-6cf08720.entry.js} +1 -1
  315. package/dist/ionic/{p-6d72fb44.entry.js → p-70ecb18b.entry.js} +1 -1
  316. package/dist/ionic/{p-6b7c55cd.entry.js → p-71d986ae.entry.js} +1 -1
  317. package/dist/ionic/p-742e11cf.system.entry.js +4 -0
  318. package/dist/ionic/{p-f7a36cd0.system.js → p-7484b1d6.system.js} +1 -1
  319. package/dist/ionic/p-78ebf1b6.system.entry.js +4 -0
  320. package/dist/ionic/{p-b7010c69.system.entry.js → p-7ae5ca1f.system.entry.js} +1 -1
  321. package/dist/ionic/{p-c847fb35.system.entry.js → p-8261be6c.system.entry.js} +1 -1
  322. package/dist/ionic/p-83fada9e.system.entry.js +4 -0
  323. package/dist/ionic/{p-353b349d.entry.js → p-86c2bbc8.entry.js} +1 -1
  324. package/dist/ionic/{p-1208f939.entry.js → p-89026d53.entry.js} +1 -1
  325. package/dist/ionic/{p-9c229210.system.entry.js → p-89cfbc88.system.entry.js} +2 -2
  326. package/dist/ionic/p-8a10752d.entry.js +4 -0
  327. package/dist/ionic/{p-e7ea9815.system.entry.js → p-8a75f7bf.system.entry.js} +1 -1
  328. package/dist/ionic/{p-32303650.system.entry.js → p-8c202d6e.system.entry.js} +1 -1
  329. package/dist/ionic/{p-a9e3b5be.system.entry.js → p-90db28f8.system.entry.js} +1 -1
  330. package/dist/ionic/{p-d662d908.js → p-91f9e81b.js} +1 -1
  331. package/dist/ionic/{p-f910cc73.system.entry.js → p-93dac17a.system.entry.js} +1 -1
  332. package/dist/ionic/{p-b3b3efba.system.entry.js → p-98ac0e27.system.entry.js} +2 -2
  333. package/dist/ionic/{p-a98dc0c1.entry.js → p-99fe0543.entry.js} +1 -1
  334. package/dist/ionic/{p-c9a21dfd.system.entry.js → p-9f376964.system.entry.js} +1 -1
  335. package/dist/ionic/{p-0e53f8ea.system.entry.js → p-a0945c3a.system.entry.js} +1 -1
  336. package/dist/ionic/{p-9709ebd8.system.entry.js → p-a0db3de9.system.entry.js} +1 -1
  337. package/dist/ionic/{p-5d42b6b4.entry.js → p-a1b4dba7.entry.js} +1 -1
  338. package/dist/ionic/{p-3f6270b3.entry.js → p-a3a145d3.entry.js} +1 -1
  339. package/dist/ionic/{p-5a68960f.entry.js → p-a5c81b99.entry.js} +1 -1
  340. package/dist/ionic/{p-98f3d827.entry.js → p-a70b5d24.entry.js} +1 -1
  341. package/dist/ionic/{p-ab9456e9.system.entry.js → p-a843a90e.system.entry.js} +1 -1
  342. package/dist/ionic/{p-b752714f.system.entry.js → p-a99f14a7.system.entry.js} +1 -1
  343. package/dist/ionic/{p-564af202.system.entry.js → p-aac289d2.system.entry.js} +1 -1
  344. package/dist/ionic/{p-57477107.system.js → p-abab375b.system.js} +1 -1
  345. package/dist/ionic/{p-31158892.js → p-ac4a7fc0.js} +1 -1
  346. package/dist/ionic/{p-c3c3333a.js → p-acdd8148.js} +1 -1
  347. package/dist/ionic/{p-54dfc9b5.system.js → p-ad78c421.system.js} +1 -1
  348. package/dist/ionic/{p-caf21b46.system.entry.js → p-ad953217.system.entry.js} +1 -1
  349. package/dist/ionic/p-af959b5d.entry.js +4 -0
  350. package/dist/ionic/{p-b6f5e4f2.system.entry.js → p-b0fcf130.system.entry.js} +1 -1
  351. package/dist/ionic/p-b11ceee2.entry.js +4 -0
  352. package/dist/ionic/p-b5e33ebc.system.entry.js +4 -0
  353. package/dist/ionic/{p-2938823a.system.entry.js → p-b81a8111.system.entry.js} +1 -1
  354. package/dist/ionic/p-b8f2134e.js +4 -0
  355. package/dist/ionic/{p-9b97df10.js → p-bb3615f7.js} +1 -1
  356. package/dist/ionic/p-bbe3feee.entry.js +4 -0
  357. package/dist/ionic/{p-fbf3a689.system.entry.js → p-bc97b5cd.system.entry.js} +1 -1
  358. package/dist/ionic/{p-d37b441e.entry.js → p-c04accad.entry.js} +1 -1
  359. package/dist/ionic/{p-e3584231.system.js → p-c5ae50be.system.js} +1 -1
  360. package/dist/ionic/{p-20d469d0.system.js → p-c7c8429a.system.js} +1 -1
  361. package/dist/ionic/{p-c18de88a.system.entry.js → p-ca32685b.system.entry.js} +1 -1
  362. package/dist/ionic/p-cde72008.js +4 -0
  363. package/dist/ionic/p-d0251fc4.entry.js +4 -0
  364. package/dist/ionic/p-d1530ea9.entry.js +4 -0
  365. package/dist/ionic/{p-51a087d6.entry.js → p-d3e123c0.entry.js} +1 -1
  366. package/dist/ionic/p-ddccf1f4.js +4 -0
  367. package/dist/ionic/{p-2ab4e925.system.entry.js → p-df361680.system.entry.js} +1 -1
  368. package/dist/ionic/p-e145b9f9.entry.js +4 -0
  369. package/dist/ionic/{p-4155f352.system.js → p-e26030f8.system.js} +1 -1
  370. package/dist/ionic/{p-c91ccbfa.system.entry.js → p-e3c44332.system.entry.js} +1 -1
  371. package/dist/ionic/{p-f8a5bb89.entry.js → p-e4045e04.entry.js} +1 -1
  372. package/dist/ionic/{p-535d2a67.entry.js → p-e8e530fc.entry.js} +1 -1
  373. package/dist/ionic/p-eab6401e.js +4 -0
  374. package/dist/ionic/p-edc5c693.system.entry.js +4 -0
  375. package/dist/ionic/{p-4911a5d6.entry.js → p-ee4a54e3.entry.js} +1 -1
  376. package/dist/ionic/{p-5bebc7b3.system.entry.js → p-eef8d7e8.system.entry.js} +1 -1
  377. package/dist/ionic/p-f0384573.system.entry.js +4 -0
  378. package/dist/ionic/p-f10de9d5.system.js +4 -0
  379. package/dist/ionic/{p-0add7211.entry.js → p-f34d6a49.entry.js} +1 -1
  380. package/dist/ionic/p-f444fea5.entry.js +4 -0
  381. package/dist/ionic/{p-8ededb41.js → p-f5d2dc9b.js} +1 -1
  382. package/dist/ionic/{p-d3b030b8.system.js → p-f8c5a0dd.system.js} +1 -1
  383. package/dist/ionic/p-fcf49977.system.entry.js +4 -0
  384. package/dist/types/components/backdrop/backdrop.d.ts +3 -0
  385. package/dist/types/components/datetime/datetime.d.ts +1 -0
  386. package/dist/types/components/datetime/utils/data.d.ts +7 -11
  387. package/dist/types/components/input/input.d.ts +1 -5
  388. package/dist/types/components/menu/menu.d.ts +1 -1
  389. package/dist/types/components/picker/picker.d.ts +131 -74
  390. package/dist/types/components/picker-column/picker-column.d.ts +39 -99
  391. package/dist/types/components/picker-column-internal/picker-column-internal-interfaces.d.ts +5 -0
  392. package/dist/types/components/picker-column-internal/picker-column-internal.d.ts +102 -0
  393. package/dist/types/components/picker-internal/picker-internal-interfaces.d.ts +8 -0
  394. package/dist/types/components/picker-internal/picker-internal.d.ts +102 -0
  395. package/dist/types/components/refresher/refresher.utils.d.ts +16 -0
  396. package/dist/types/components/searchbar/searchbar.d.ts +0 -2
  397. package/dist/types/components/textarea/textarea.d.ts +1 -5
  398. package/dist/types/components.d.ts +129 -162
  399. package/dist/types/interface.d.ts +1 -1
  400. package/dist/types/utils/config.d.ts +2 -2
  401. package/dist/types/utils/gesture/gesture-controller.d.ts +0 -1
  402. package/dist/types/utils/overlays.d.ts +2 -5
  403. package/hydrate/index.d.ts +1 -1
  404. package/hydrate/index.js +948 -1040
  405. package/package.json +2 -2
  406. package/components/ion-picker-column-option.d.ts +0 -11
  407. package/components/ion-picker-column-option.js +0 -9
  408. package/components/ion-picker-legacy-column.d.ts +0 -11
  409. package/components/ion-picker-legacy-column.js +0 -9
  410. package/components/ion-picker-legacy.js +0 -309
  411. package/components/picker-column-option.js +0 -122
  412. package/components/picker-column2.js +0 -379
  413. package/dist/cjs/ion-picker-column-option.cjs.entry.js +0 -104
  414. package/dist/collection/components/picker/test/custom/picker.e2e.js +0 -85
  415. package/dist/collection/components/picker-column/test/disabled/picker-column.e2e.js +0 -91
  416. package/dist/collection/components/picker-column/test/slots/picker-column.e2e.js +0 -39
  417. package/dist/collection/components/picker-column-option/picker-column-option.ios.css +0 -87
  418. package/dist/collection/components/picker-column-option/picker-column-option.js +0 -173
  419. package/dist/collection/components/picker-column-option/test/a11y/picker-column-option.e2e.js +0 -18
  420. package/dist/collection/components/picker-column-option/test/basic/picker-column-option.e2e.js +0 -37
  421. package/dist/collection/components/picker-column-option/test/picker-column-option.spec.js +0 -29
  422. package/dist/collection/components/picker-legacy/picker.js +0 -817
  423. package/dist/collection/components/picker-legacy/test/basic/picker.e2e.js +0 -25
  424. package/dist/collection/components/picker-legacy-column/picker-column.js +0 -419
  425. package/dist/collection/utils/test/overlays/overlays-scroll-blocking.spec.js +0 -65
  426. package/dist/esm/ion-picker-column-option.entry.js +0 -100
  427. package/dist/esm-es5/app-globals-722340c4.js +0 -4
  428. package/dist/esm-es5/ion-picker-column-option.entry.js +0 -4
  429. package/dist/esm-es5/ion-picker-column.entry.js +0 -4
  430. package/dist/esm-es5/ion-picker.entry.js +0 -4
  431. package/dist/esm-es5/overlays-fbc5cab5.js +0 -4
  432. package/dist/esm-es5/swipe-back-a8ca7f93.js +0 -4
  433. package/dist/ionic/p-1786bc72.js +0 -4
  434. package/dist/ionic/p-26798a7b.system.entry.js +0 -4
  435. package/dist/ionic/p-27bcbbc7.system.entry.js +0 -4
  436. package/dist/ionic/p-350f7292.system.entry.js +0 -4
  437. package/dist/ionic/p-36d194c5.entry.js +0 -4
  438. package/dist/ionic/p-3993ae66.entry.js +0 -4
  439. package/dist/ionic/p-3ba01a9c.system.entry.js +0 -4
  440. package/dist/ionic/p-4890093d.js +0 -4
  441. package/dist/ionic/p-51abefb7.system.js +0 -4
  442. package/dist/ionic/p-563c41f0.system.entry.js +0 -4
  443. package/dist/ionic/p-588fdf40.entry.js +0 -4
  444. package/dist/ionic/p-5a1aac13.system.entry.js +0 -4
  445. package/dist/ionic/p-73190c5f.entry.js +0 -4
  446. package/dist/ionic/p-73aa7604.entry.js +0 -4
  447. package/dist/ionic/p-76d3765d.js +0 -4
  448. package/dist/ionic/p-8017aad2.system.entry.js +0 -4
  449. package/dist/ionic/p-846ee227.entry.js +0 -4
  450. package/dist/ionic/p-8c97cdc0.entry.js +0 -4
  451. package/dist/ionic/p-8e42850f.entry.js +0 -4
  452. package/dist/ionic/p-8fa6583d.system.js +0 -4
  453. package/dist/ionic/p-91af3c52.system.entry.js +0 -4
  454. package/dist/ionic/p-a60a1ce5.js +0 -4
  455. package/dist/ionic/p-a8baa23e.entry.js +0 -4
  456. package/dist/ionic/p-a9a80f5b.entry.js +0 -4
  457. package/dist/ionic/p-afcf4620.entry.js +0 -4
  458. package/dist/ionic/p-b4d31b30.system.entry.js +0 -4
  459. package/dist/ionic/p-c41bff4e.system.entry.js +0 -4
  460. package/dist/ionic/p-ca8938f4.js +0 -4
  461. package/dist/ionic/p-da15f571.system.entry.js +0 -4
  462. package/dist/ionic/p-e4d90573.js +0 -4
  463. package/dist/ionic/p-ea69616e.entry.js +0 -4
  464. package/dist/ionic/p-fe4dde76.entry.js +0 -4
  465. package/dist/ionic/p-ffd5dba4.system.entry.js +0 -4
  466. package/dist/types/components/picker/picker-interfaces.d.ts +0 -8
  467. package/dist/types/components/picker-column/picker-column-interfaces.d.ts +0 -4
  468. package/dist/types/components/picker-column-option/picker-column-option.d.ts +0 -66
  469. package/dist/types/components/picker-legacy/picker.d.ts +0 -158
  470. package/dist/types/components/picker-legacy-column/picker-column.d.ts +0 -46
  471. /package/dist/collection/components/{picker-legacy → picker}/animations/ios.enter.js +0 -0
  472. /package/dist/collection/components/{picker-legacy → picker}/animations/ios.leave.js +0 -0
  473. /package/dist/collection/components/picker/{picker-interfaces.js → picker-interface.js} +0 -0
  474. /package/dist/collection/components/{picker-legacy-column → picker-column}/picker-column.ios.css +0 -0
  475. /package/dist/collection/components/{picker-legacy-column → picker-column}/picker-column.md.css +0 -0
  476. /package/dist/collection/components/{picker-legacy-column → picker-column}/test/test.utils.js +0 -0
  477. /package/dist/collection/components/{picker-column/picker-column-interfaces.js → picker-column-internal/picker-column-internal-interfaces.js} +0 -0
  478. /package/dist/collection/components/{picker-legacy/picker-interface.js → picker-internal/picker-internal-interfaces.js} +0 -0
  479. /package/dist/esm-es5/{data-4b9508c9.js → data-f5c75b4e.js} +0 -0
  480. /package/dist/ionic/{p-368f5215.js → p-2aea8b1e.js} +0 -0
  481. /package/dist/ionic/{p-f58981c2.system.js → p-82e3d633.system.js} +0 -0
  482. /package/dist/types/components/{picker-legacy → picker}/animations/ios.enter.d.ts +0 -0
  483. /package/dist/types/components/{picker-legacy → picker}/animations/ios.leave.d.ts +0 -0
  484. /package/dist/types/components/{picker-legacy → picker}/picker-interface.d.ts +0 -0
  485. /package/dist/types/components/{picker-legacy-column → picker-column}/test/test.utils.d.ts +0 -0
@@ -1,7 +1,315 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import { P as Picker, d as defineCustomElement$1 } from './picker.js';
4
+ import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
5
+ import { r as raf } from './helpers.js';
6
+ import { c as createLockController } from './lock-controller.js';
7
+ import { d as createDelegateController, e as createTriggerController, B as BACKDROP, i as isCancel, j as prepareOverlay, k as setOverlayId, f as present, g as dismiss, h as eventMethod, s as safeCall } from './overlays.js';
8
+ import { g as getClassMap } from './theme.js';
9
+ import { b as getIonMode } from './ionic-global.js';
10
+ import { c as createAnimation } from './animation.js';
11
+ import { d as defineCustomElement$3 } from './backdrop.js';
12
+ import { d as defineCustomElement$2 } from './picker-column.js';
13
+
14
+ /**
15
+ * iOS Picker Enter Animation
16
+ */
17
+ const iosEnterAnimation = (baseEl) => {
18
+ const baseAnimation = createAnimation();
19
+ const backdropAnimation = createAnimation();
20
+ const wrapperAnimation = createAnimation();
21
+ backdropAnimation
22
+ .addElement(baseEl.querySelector('ion-backdrop'))
23
+ .fromTo('opacity', 0.01, 'var(--backdrop-opacity)')
24
+ .beforeStyles({
25
+ 'pointer-events': 'none',
26
+ })
27
+ .afterClearStyles(['pointer-events']);
28
+ wrapperAnimation
29
+ .addElement(baseEl.querySelector('.picker-wrapper'))
30
+ .fromTo('transform', 'translateY(100%)', 'translateY(0%)');
31
+ return baseAnimation
32
+ .addElement(baseEl)
33
+ .easing('cubic-bezier(.36,.66,.04,1)')
34
+ .duration(400)
35
+ .addAnimation([backdropAnimation, wrapperAnimation]);
36
+ };
37
+
38
+ /**
39
+ * iOS Picker Leave Animation
40
+ */
41
+ const iosLeaveAnimation = (baseEl) => {
42
+ const baseAnimation = createAnimation();
43
+ const backdropAnimation = createAnimation();
44
+ const wrapperAnimation = createAnimation();
45
+ backdropAnimation
46
+ .addElement(baseEl.querySelector('ion-backdrop'))
47
+ .fromTo('opacity', 'var(--backdrop-opacity)', 0.01);
48
+ wrapperAnimation
49
+ .addElement(baseEl.querySelector('.picker-wrapper'))
50
+ .fromTo('transform', 'translateY(0%)', 'translateY(100%)');
51
+ return baseAnimation
52
+ .addElement(baseEl)
53
+ .easing('cubic-bezier(.36,.66,.04,1)')
54
+ .duration(400)
55
+ .addAnimation([backdropAnimation, wrapperAnimation]);
56
+ };
57
+
58
+ const pickerIosCss = ".sc-ion-picker-ios-h{--border-radius:0;--border-style:solid;--min-width:auto;--width:100%;--max-width:500px;--min-height:auto;--max-height:auto;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;top:0;display:block;position:absolute;width:100%;height:100%;outline:none;font-family:var(--ion-font-family, inherit);contain:strict;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1001}@supports (inset-inline-start: 0){.sc-ion-picker-ios-h{inset-inline-start:0}}@supports not (inset-inline-start: 0){.sc-ion-picker-ios-h{left:0}[dir=rtl].sc-ion-picker-ios-h,[dir=rtl] .sc-ion-picker-ios-h{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){.sc-ion-picker-ios-h:dir(rtl){left:unset;right:unset;right:0}}}.overlay-hidden.sc-ion-picker-ios-h{display:none}.picker-wrapper.sc-ion-picker-ios{border-radius:var(--border-radius);left:0;right:0;bottom:0;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:auto;margin-bottom:auto;-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0);display:-ms-flexbox;display:flex;position:absolute;-ms-flex-direction:column;flex-direction:column;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);contain:strict;overflow:hidden;z-index:10}.picker-toolbar.sc-ion-picker-ios{width:100%;background:transparent;contain:strict;z-index:1}.picker-button.sc-ion-picker-ios{border:0;font-family:inherit}.picker-button.sc-ion-picker-ios:active,.picker-button.sc-ion-picker-ios:focus{outline:none}.picker-columns.sc-ion-picker-ios{display:-ms-flexbox;display:flex;position:relative;-ms-flex-pack:center;justify-content:center;margin-bottom:var(--ion-safe-area-bottom, 0);contain:strict;overflow:hidden}.picker-above-highlight.sc-ion-picker-ios,.picker-below-highlight.sc-ion-picker-ios{display:none;pointer-events:none}.sc-ion-picker-ios-h{--background:var(--ion-background-color, #fff);--border-width:1px 0 0;--border-color:var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-250, #c8c7cc)));--height:260px;--backdrop-opacity:var(--ion-backdrop-opacity, 0.26);color:var(--ion-item-color, var(--ion-text-color, #000))}.picker-toolbar.sc-ion-picker-ios{display:-ms-flexbox;display:flex;height:44px;border-bottom:0.55px solid var(--border-color)}.picker-toolbar-button.sc-ion-picker-ios{-ms-flex:1;flex:1;text-align:end}.picker-toolbar-button.sc-ion-picker-ios:last-child .picker-button.sc-ion-picker-ios{font-weight:600}.picker-toolbar-button.sc-ion-picker-ios:first-child{font-weight:normal;text-align:start}.picker-button.sc-ion-picker-ios,.picker-button.ion-activated.sc-ion-picker-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-padding-start:1em;padding-inline-start:1em;-webkit-padding-end:1em;padding-inline-end:1em;padding-top:0;padding-bottom:0;height:44px;background:transparent;color:var(--ion-color-primary, #3880ff);font-size:16px}.picker-columns.sc-ion-picker-ios{height:215px;-webkit-perspective:1000px;perspective:1000px}.picker-above-highlight.sc-ion-picker-ios{top:0;-webkit-transform:translate3d(0, 0, 90px);transform:translate3d(0, 0, 90px);display:block;position:absolute;width:100%;height:81px;border-bottom:1px solid var(--border-color);background:-webkit-gradient(linear, left top, left bottom, color-stop(20%, var(--background, var(--ion-background-color, #fff))), to(rgba(var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255)), 0.8)));background:linear-gradient(to bottom, var(--background, var(--ion-background-color, #fff)) 20%, rgba(var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255)), 0.8) 100%);z-index:10}@supports (inset-inline-start: 0){.picker-above-highlight.sc-ion-picker-ios{inset-inline-start:0}}@supports not (inset-inline-start: 0){.picker-above-highlight.sc-ion-picker-ios{left:0}[dir=rtl].sc-ion-picker-ios-h .picker-above-highlight.sc-ion-picker-ios,[dir=rtl] .sc-ion-picker-ios-h .picker-above-highlight.sc-ion-picker-ios{left:unset;right:unset;right:0}[dir=rtl].sc-ion-picker-ios .picker-above-highlight.sc-ion-picker-ios{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){.picker-above-highlight.sc-ion-picker-ios:dir(rtl){left:unset;right:unset;right:0}}}.picker-below-highlight.sc-ion-picker-ios{top:115px;-webkit-transform:translate3d(0, 0, 90px);transform:translate3d(0, 0, 90px);display:block;position:absolute;width:100%;height:119px;border-top:1px solid var(--border-color);background:-webkit-gradient(linear, left bottom, left top, color-stop(30%, var(--background, var(--ion-background-color, #fff))), to(rgba(var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255)), 0.8)));background:linear-gradient(to top, var(--background, var(--ion-background-color, #fff)) 30%, rgba(var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255)), 0.8) 100%);z-index:11}@supports (inset-inline-start: 0){.picker-below-highlight.sc-ion-picker-ios{inset-inline-start:0}}@supports not (inset-inline-start: 0){.picker-below-highlight.sc-ion-picker-ios{left:0}[dir=rtl].sc-ion-picker-ios-h .picker-below-highlight.sc-ion-picker-ios,[dir=rtl] .sc-ion-picker-ios-h .picker-below-highlight.sc-ion-picker-ios{left:unset;right:unset;right:0}[dir=rtl].sc-ion-picker-ios .picker-below-highlight.sc-ion-picker-ios{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){.picker-below-highlight.sc-ion-picker-ios:dir(rtl){left:unset;right:unset;right:0}}}";
59
+
60
+ const pickerMdCss = ".sc-ion-picker-md-h{--border-radius:0;--border-style:solid;--min-width:auto;--width:100%;--max-width:500px;--min-height:auto;--max-height:auto;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;top:0;display:block;position:absolute;width:100%;height:100%;outline:none;font-family:var(--ion-font-family, inherit);contain:strict;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1001}@supports (inset-inline-start: 0){.sc-ion-picker-md-h{inset-inline-start:0}}@supports not (inset-inline-start: 0){.sc-ion-picker-md-h{left:0}[dir=rtl].sc-ion-picker-md-h,[dir=rtl] .sc-ion-picker-md-h{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){.sc-ion-picker-md-h:dir(rtl){left:unset;right:unset;right:0}}}.overlay-hidden.sc-ion-picker-md-h{display:none}.picker-wrapper.sc-ion-picker-md{border-radius:var(--border-radius);left:0;right:0;bottom:0;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:auto;margin-bottom:auto;-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0);display:-ms-flexbox;display:flex;position:absolute;-ms-flex-direction:column;flex-direction:column;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);contain:strict;overflow:hidden;z-index:10}.picker-toolbar.sc-ion-picker-md{width:100%;background:transparent;contain:strict;z-index:1}.picker-button.sc-ion-picker-md{border:0;font-family:inherit}.picker-button.sc-ion-picker-md:active,.picker-button.sc-ion-picker-md:focus{outline:none}.picker-columns.sc-ion-picker-md{display:-ms-flexbox;display:flex;position:relative;-ms-flex-pack:center;justify-content:center;margin-bottom:var(--ion-safe-area-bottom, 0);contain:strict;overflow:hidden}.picker-above-highlight.sc-ion-picker-md,.picker-below-highlight.sc-ion-picker-md{display:none;pointer-events:none}.sc-ion-picker-md-h{--background:var(--ion-background-color, #fff);--border-width:0.55px 0 0;--border-color:var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-150, rgba(0, 0, 0, 0.13))));--height:260px;--backdrop-opacity:var(--ion-backdrop-opacity, 0.26);color:var(--ion-item-color, var(--ion-text-color, #000))}.picker-toolbar.sc-ion-picker-md{display:-ms-flexbox;display:flex;-ms-flex-pack:end;justify-content:flex-end;height:44px}.picker-button.sc-ion-picker-md,.picker-button.ion-activated.sc-ion-picker-md{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-padding-start:1.1em;padding-inline-start:1.1em;-webkit-padding-end:1.1em;padding-inline-end:1.1em;padding-top:0;padding-bottom:0;height:44px;background:transparent;color:var(--ion-color-primary, #3880ff);font-size:14px;font-weight:500;text-transform:uppercase;-webkit-box-shadow:none;box-shadow:none}.picker-columns.sc-ion-picker-md{height:216px;-webkit-perspective:1800px;perspective:1800px}.picker-above-highlight.sc-ion-picker-md{top:0;-webkit-transform:translate3d(0, 0, 90px);transform:translate3d(0, 0, 90px);position:absolute;width:100%;height:81px;border-bottom:1px solid var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-150, rgba(0, 0, 0, 0.13))));background:-webkit-gradient(linear, left top, left bottom, color-stop(20%, var(--ion-background-color, #fff)), to(rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8)));background:linear-gradient(to bottom, var(--ion-background-color, #fff) 20%, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8) 100%);z-index:10}@supports (inset-inline-start: 0){.picker-above-highlight.sc-ion-picker-md{inset-inline-start:0}}@supports not (inset-inline-start: 0){.picker-above-highlight.sc-ion-picker-md{left:0}[dir=rtl].sc-ion-picker-md-h .picker-above-highlight.sc-ion-picker-md,[dir=rtl] .sc-ion-picker-md-h .picker-above-highlight.sc-ion-picker-md{left:unset;right:unset;right:0}[dir=rtl].sc-ion-picker-md .picker-above-highlight.sc-ion-picker-md{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){.picker-above-highlight.sc-ion-picker-md:dir(rtl){left:unset;right:unset;right:0}}}.picker-below-highlight.sc-ion-picker-md{top:115px;-webkit-transform:translate3d(0, 0, 90px);transform:translate3d(0, 0, 90px);position:absolute;width:100%;height:119px;border-top:1px solid var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-150, rgba(0, 0, 0, 0.13))));background:-webkit-gradient(linear, left bottom, left top, color-stop(30%, var(--ion-background-color, #fff)), to(rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8)));background:linear-gradient(to top, var(--ion-background-color, #fff) 30%, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8) 100%);z-index:11}@supports (inset-inline-start: 0){.picker-below-highlight.sc-ion-picker-md{inset-inline-start:0}}@supports not (inset-inline-start: 0){.picker-below-highlight.sc-ion-picker-md{left:0}[dir=rtl].sc-ion-picker-md-h .picker-below-highlight.sc-ion-picker-md,[dir=rtl] .sc-ion-picker-md-h .picker-below-highlight.sc-ion-picker-md{left:unset;right:unset;right:0}[dir=rtl].sc-ion-picker-md .picker-below-highlight.sc-ion-picker-md{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){.picker-below-highlight.sc-ion-picker-md:dir(rtl){left:unset;right:unset;right:0}}}";
61
+
62
+ const Picker = /*@__PURE__*/ proxyCustomElement(class Picker extends HTMLElement {
63
+ constructor() {
64
+ super();
65
+ this.__registerHost();
66
+ this.didPresent = createEvent(this, "ionPickerDidPresent", 7);
67
+ this.willPresent = createEvent(this, "ionPickerWillPresent", 7);
68
+ this.willDismiss = createEvent(this, "ionPickerWillDismiss", 7);
69
+ this.didDismiss = createEvent(this, "ionPickerDidDismiss", 7);
70
+ this.didPresentShorthand = createEvent(this, "didPresent", 7);
71
+ this.willPresentShorthand = createEvent(this, "willPresent", 7);
72
+ this.willDismissShorthand = createEvent(this, "willDismiss", 7);
73
+ this.didDismissShorthand = createEvent(this, "didDismiss", 7);
74
+ this.delegateController = createDelegateController(this);
75
+ this.lockController = createLockController();
76
+ this.triggerController = createTriggerController();
77
+ this.onBackdropTap = () => {
78
+ this.dismiss(undefined, BACKDROP);
79
+ };
80
+ this.dispatchCancelHandler = (ev) => {
81
+ const role = ev.detail.role;
82
+ if (isCancel(role)) {
83
+ const cancelButton = this.buttons.find((b) => b.role === 'cancel');
84
+ this.callButtonHandler(cancelButton);
85
+ }
86
+ };
87
+ this.presented = false;
88
+ this.overlayIndex = undefined;
89
+ this.delegate = undefined;
90
+ this.hasController = false;
91
+ this.keyboardClose = true;
92
+ this.enterAnimation = undefined;
93
+ this.leaveAnimation = undefined;
94
+ this.buttons = [];
95
+ this.columns = [];
96
+ this.cssClass = undefined;
97
+ this.duration = 0;
98
+ this.showBackdrop = true;
99
+ this.backdropDismiss = true;
100
+ this.animated = true;
101
+ this.htmlAttributes = undefined;
102
+ this.isOpen = false;
103
+ this.trigger = undefined;
104
+ }
105
+ onIsOpenChange(newValue, oldValue) {
106
+ if (newValue === true && oldValue === false) {
107
+ this.present();
108
+ }
109
+ else if (newValue === false && oldValue === true) {
110
+ this.dismiss();
111
+ }
112
+ }
113
+ triggerChanged() {
114
+ const { trigger, el, triggerController } = this;
115
+ if (trigger) {
116
+ triggerController.addClickListener(el, trigger);
117
+ }
118
+ }
119
+ connectedCallback() {
120
+ prepareOverlay(this.el);
121
+ this.triggerChanged();
122
+ }
123
+ disconnectedCallback() {
124
+ this.triggerController.removeClickListener();
125
+ }
126
+ componentWillLoad() {
127
+ setOverlayId(this.el);
128
+ }
129
+ componentDidLoad() {
130
+ /**
131
+ * If picker was rendered with isOpen="true"
132
+ * then we should open picker immediately.
133
+ */
134
+ if (this.isOpen === true) {
135
+ raf(() => this.present());
136
+ }
137
+ /**
138
+ * When binding values in frameworks such as Angular
139
+ * it is possible for the value to be set after the Web Component
140
+ * initializes but before the value watcher is set up in Stencil.
141
+ * As a result, the watcher callback may not be fired.
142
+ * We work around this by manually calling the watcher
143
+ * callback when the component has loaded and the watcher
144
+ * is configured.
145
+ */
146
+ this.triggerChanged();
147
+ }
148
+ /**
149
+ * Present the picker overlay after it has been created.
150
+ */
151
+ async present() {
152
+ const unlock = await this.lockController.lock();
153
+ await this.delegateController.attachViewToDom();
154
+ await present(this, 'pickerEnter', iosEnterAnimation, iosEnterAnimation, undefined);
155
+ if (this.duration > 0) {
156
+ this.durationTimeout = setTimeout(() => this.dismiss(), this.duration);
157
+ }
158
+ unlock();
159
+ }
160
+ /**
161
+ * Dismiss the picker overlay after it has been presented.
162
+ *
163
+ * @param data Any data to emit in the dismiss events.
164
+ * @param role The role of the element that is dismissing the picker.
165
+ * This can be useful in a button handler for determining which button was
166
+ * clicked to dismiss the picker.
167
+ * Some examples include: ``"cancel"`, `"destructive"`, "selected"`, and `"backdrop"`.
168
+ */
169
+ async dismiss(data, role) {
170
+ const unlock = await this.lockController.lock();
171
+ if (this.durationTimeout) {
172
+ clearTimeout(this.durationTimeout);
173
+ }
174
+ const dismissed = await dismiss(this, data, role, 'pickerLeave', iosLeaveAnimation, iosLeaveAnimation);
175
+ if (dismissed) {
176
+ this.delegateController.removeViewFromDom();
177
+ }
178
+ unlock();
179
+ return dismissed;
180
+ }
181
+ /**
182
+ * Returns a promise that resolves when the picker did dismiss.
183
+ */
184
+ onDidDismiss() {
185
+ return eventMethod(this.el, 'ionPickerDidDismiss');
186
+ }
187
+ /**
188
+ * Returns a promise that resolves when the picker will dismiss.
189
+ */
190
+ onWillDismiss() {
191
+ return eventMethod(this.el, 'ionPickerWillDismiss');
192
+ }
193
+ /**
194
+ * Get the column that matches the specified name.
195
+ *
196
+ * @param name The name of the column.
197
+ */
198
+ getColumn(name) {
199
+ return Promise.resolve(this.columns.find((column) => column.name === name));
200
+ }
201
+ async buttonClick(button) {
202
+ const role = button.role;
203
+ if (isCancel(role)) {
204
+ return this.dismiss(undefined, role);
205
+ }
206
+ const shouldDismiss = await this.callButtonHandler(button);
207
+ if (shouldDismiss) {
208
+ return this.dismiss(this.getSelected(), button.role);
209
+ }
210
+ return Promise.resolve();
211
+ }
212
+ async callButtonHandler(button) {
213
+ if (button) {
214
+ // a handler has been provided, execute it
215
+ // pass the handler the values from the inputs
216
+ const rtn = await safeCall(button.handler, this.getSelected());
217
+ if (rtn === false) {
218
+ // if the return value of the handler is false then do not dismiss
219
+ return false;
220
+ }
221
+ }
222
+ return true;
223
+ }
224
+ getSelected() {
225
+ const selected = {};
226
+ this.columns.forEach((col, index) => {
227
+ const selectedColumn = col.selectedIndex !== undefined ? col.options[col.selectedIndex] : undefined;
228
+ selected[col.name] = {
229
+ text: selectedColumn ? selectedColumn.text : undefined,
230
+ value: selectedColumn ? selectedColumn.value : undefined,
231
+ columnIndex: index,
232
+ };
233
+ });
234
+ return selected;
235
+ }
236
+ render() {
237
+ const { htmlAttributes } = this;
238
+ const mode = getIonMode(this);
239
+ return (h(Host, Object.assign({ "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
240
+ zIndex: `${20000 + this.overlayIndex}`,
241
+ }, class: Object.assign({ [mode]: true,
242
+ // Used internally for styling
243
+ [`picker-${mode}`]: true, 'overlay-hidden': true }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonPickerWillDismiss: this.dispatchCancelHandler }), h("ion-backdrop", { visible: this.showBackdrop, tappable: this.backdropDismiss }), h("div", { tabindex: "0" }), h("div", { class: "picker-wrapper ion-overlay-wrapper", role: "dialog" }, h("div", { class: "picker-toolbar" }, this.buttons.map((b) => (h("div", { class: buttonWrapperClass(b) }, h("button", { type: "button", onClick: () => this.buttonClick(b), class: buttonClass(b) }, b.text))))), h("div", { class: "picker-columns" }, h("div", { class: "picker-above-highlight" }), this.presented && this.columns.map((c) => h("ion-picker-column", { col: c })), h("div", { class: "picker-below-highlight" }))), h("div", { tabindex: "0" })));
244
+ }
245
+ get el() { return this; }
246
+ static get watchers() { return {
247
+ "isOpen": ["onIsOpenChange"],
248
+ "trigger": ["triggerChanged"]
249
+ }; }
250
+ static get style() { return {
251
+ ios: pickerIosCss,
252
+ md: pickerMdCss
253
+ }; }
254
+ }, [34, "ion-picker", {
255
+ "overlayIndex": [2, "overlay-index"],
256
+ "delegate": [16],
257
+ "hasController": [4, "has-controller"],
258
+ "keyboardClose": [4, "keyboard-close"],
259
+ "enterAnimation": [16],
260
+ "leaveAnimation": [16],
261
+ "buttons": [16],
262
+ "columns": [16],
263
+ "cssClass": [1, "css-class"],
264
+ "duration": [2],
265
+ "showBackdrop": [4, "show-backdrop"],
266
+ "backdropDismiss": [4, "backdrop-dismiss"],
267
+ "animated": [4],
268
+ "htmlAttributes": [16],
269
+ "isOpen": [4, "is-open"],
270
+ "trigger": [1],
271
+ "presented": [32],
272
+ "present": [64],
273
+ "dismiss": [64],
274
+ "onDidDismiss": [64],
275
+ "onWillDismiss": [64],
276
+ "getColumn": [64]
277
+ }, undefined, {
278
+ "isOpen": ["onIsOpenChange"],
279
+ "trigger": ["triggerChanged"]
280
+ }]);
281
+ const buttonWrapperClass = (button) => {
282
+ return {
283
+ [`picker-toolbar-${button.role}`]: button.role !== undefined,
284
+ 'picker-toolbar-button': true,
285
+ };
286
+ };
287
+ const buttonClass = (button) => {
288
+ return Object.assign({ 'picker-button': true, 'ion-activatable': true }, getClassMap(button.cssClass));
289
+ };
290
+ function defineCustomElement$1() {
291
+ if (typeof customElements === "undefined") {
292
+ return;
293
+ }
294
+ const components = ["ion-picker", "ion-backdrop", "ion-picker-column"];
295
+ components.forEach(tagName => { switch (tagName) {
296
+ case "ion-picker":
297
+ if (!customElements.get(tagName)) {
298
+ customElements.define(tagName, Picker);
299
+ }
300
+ break;
301
+ case "ion-backdrop":
302
+ if (!customElements.get(tagName)) {
303
+ defineCustomElement$3();
304
+ }
305
+ break;
306
+ case "ion-picker-column":
307
+ if (!customElements.get(tagName)) {
308
+ defineCustomElement$2();
309
+ }
310
+ break;
311
+ } });
312
+ }
5
313
 
6
314
  const IonPicker = Picker;
7
315
  const defineCustomElement = defineCustomElement$1;
@@ -3,8 +3,9 @@
3
3
  */
4
4
  import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
5
5
  import { E as ENABLE_HTML_CONTENT_DEFAULT, a as sanitizeDOMString } from './config.js';
6
- import { c as config, b as getIonMode, a as isPlatform } from './ionic-global.js';
7
6
  import { n as caretBackSharp, o as arrowDown } from './index7.js';
7
+ import { c as config, b as getIonMode } from './ionic-global.js';
8
+ import { e as supportsRubberBandScrolling } from './refresher.utils.js';
8
9
  import { d as defineCustomElement$2, S as SPINNERS } from './spinner.js';
9
10
  import { d as defineCustomElement$3 } from './icon.js';
10
11
 
@@ -20,9 +21,15 @@ const RefresherContent = /*@__PURE__*/ proxyCustomElement(class RefresherContent
20
21
  }
21
22
  componentWillLoad() {
22
23
  if (this.pullingIcon === undefined) {
24
+ /**
25
+ * The native iOS refresher uses a spinner instead of
26
+ * an icon, so we need to see if this device supports
27
+ * the native iOS refresher.
28
+ */
29
+ const hasRubberBandScrolling = supportsRubberBandScrolling();
23
30
  const mode = getIonMode(this);
24
- const overflowRefresher = this.el.style.webkitOverflowScrolling !== undefined ? 'lines' : arrowDown;
25
- this.pullingIcon = config.get('refreshingIcon', mode === 'ios' && isPlatform('mobile') ? config.get('spinner', overflowRefresher) : 'circular');
31
+ const overflowRefresher = hasRubberBandScrolling ? 'lines' : arrowDown;
32
+ this.pullingIcon = config.get('refreshingIcon', mode === 'ios' && hasRubberBandScrolling ? config.get('spinner', overflowRefresher) : 'circular');
26
33
  }
27
34
  if (this.refreshingSpinner === undefined) {
28
35
  const mode = getIonMode(this);
@@ -1,192 +1,13 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import { writeTask, proxyCustomElement, HTMLElement, createEvent, readTask, h, Host } from '@stencil/core/internal/client';
4
+ import { proxyCustomElement, HTMLElement, createEvent, writeTask, readTask, h, Host } from '@stencil/core/internal/client';
5
5
  import { g as getTimeGivenProgression } from './cubic-bezier.js';
6
6
  import { I as ION_CONTENT_CLASS_SELECTOR, b as ION_CONTENT_ELEMENT_SELECTOR, p as printIonContentErrorMsg, g as getScrollElement } from './index8.js';
7
- import { t as transitionEndAsync, c as componentOnReady, m as clamp, g as getElementRoot, r as raf } from './helpers.js';
7
+ import { t as transitionEndAsync, m as clamp, g as getElementRoot, c as componentOnReady, r as raf } from './helpers.js';
8
8
  import { c as hapticImpact, I as ImpactStyle } from './haptic.js';
9
- import { a as isPlatform, b as getIonMode } from './ionic-global.js';
10
- import { c as createAnimation } from './animation.js';
11
-
12
- const getRefresherAnimationType = (contentEl) => {
13
- const previousSibling = contentEl.previousElementSibling;
14
- const hasHeader = previousSibling !== null && previousSibling.tagName === 'ION-HEADER';
15
- return hasHeader ? 'translate' : 'scale';
16
- };
17
- const createPullingAnimation = (type, pullingSpinner, refresherEl) => {
18
- return type === 'scale'
19
- ? createScaleAnimation(pullingSpinner, refresherEl)
20
- : createTranslateAnimation(pullingSpinner, refresherEl);
21
- };
22
- const createBaseAnimation = (pullingRefresherIcon) => {
23
- const spinner = pullingRefresherIcon.querySelector('ion-spinner');
24
- const circle = spinner.shadowRoot.querySelector('circle');
25
- const spinnerArrowContainer = pullingRefresherIcon.querySelector('.spinner-arrow-container');
26
- const arrowContainer = pullingRefresherIcon.querySelector('.arrow-container');
27
- const arrow = arrowContainer ? arrowContainer.querySelector('ion-icon') : null;
28
- const baseAnimation = createAnimation().duration(1000).easing('ease-out');
29
- const spinnerArrowContainerAnimation = createAnimation()
30
- .addElement(spinnerArrowContainer)
31
- .keyframes([
32
- { offset: 0, opacity: '0.3' },
33
- { offset: 0.45, opacity: '0.3' },
34
- { offset: 0.55, opacity: '1' },
35
- { offset: 1, opacity: '1' },
36
- ]);
37
- const circleInnerAnimation = createAnimation()
38
- .addElement(circle)
39
- .keyframes([
40
- { offset: 0, strokeDasharray: '1px, 200px' },
41
- { offset: 0.2, strokeDasharray: '1px, 200px' },
42
- { offset: 0.55, strokeDasharray: '100px, 200px' },
43
- { offset: 1, strokeDasharray: '100px, 200px' },
44
- ]);
45
- const circleOuterAnimation = createAnimation()
46
- .addElement(spinner)
47
- .keyframes([
48
- { offset: 0, transform: 'rotate(-90deg)' },
49
- { offset: 1, transform: 'rotate(210deg)' },
50
- ]);
51
- /**
52
- * Only add arrow animation if present
53
- * this allows users to customize the spinners
54
- * without errors being thrown
55
- */
56
- if (arrowContainer && arrow) {
57
- const arrowContainerAnimation = createAnimation()
58
- .addElement(arrowContainer)
59
- .keyframes([
60
- { offset: 0, transform: 'rotate(0deg)' },
61
- { offset: 0.3, transform: 'rotate(0deg)' },
62
- { offset: 0.55, transform: 'rotate(280deg)' },
63
- { offset: 1, transform: 'rotate(400deg)' },
64
- ]);
65
- const arrowAnimation = createAnimation()
66
- .addElement(arrow)
67
- .keyframes([
68
- { offset: 0, transform: 'translateX(2px) scale(0)' },
69
- { offset: 0.3, transform: 'translateX(2px) scale(0)' },
70
- { offset: 0.55, transform: 'translateX(-1.5px) scale(1)' },
71
- { offset: 1, transform: 'translateX(-1.5px) scale(1)' },
72
- ]);
73
- baseAnimation.addAnimation([arrowContainerAnimation, arrowAnimation]);
74
- }
75
- return baseAnimation.addAnimation([spinnerArrowContainerAnimation, circleInnerAnimation, circleOuterAnimation]);
76
- };
77
- const createScaleAnimation = (pullingRefresherIcon, refresherEl) => {
78
- /**
79
- * Do not take the height of the refresher icon
80
- * because at this point the DOM has not updated,
81
- * so the refresher icon is still hidden with
82
- * display: none.
83
- * The `ion-refresher` container height
84
- * is roughly the amount we need to offset
85
- * the icon by when pulling down.
86
- */
87
- const height = refresherEl.clientHeight;
88
- const spinnerAnimation = createAnimation()
89
- .addElement(pullingRefresherIcon)
90
- .keyframes([
91
- { offset: 0, transform: `scale(0) translateY(-${height}px)` },
92
- { offset: 1, transform: 'scale(1) translateY(100px)' },
93
- ]);
94
- return createBaseAnimation(pullingRefresherIcon).addAnimation([spinnerAnimation]);
95
- };
96
- const createTranslateAnimation = (pullingRefresherIcon, refresherEl) => {
97
- /**
98
- * Do not take the height of the refresher icon
99
- * because at this point the DOM has not updated,
100
- * so the refresher icon is still hidden with
101
- * display: none.
102
- * The `ion-refresher` container height
103
- * is roughly the amount we need to offset
104
- * the icon by when pulling down.
105
- */
106
- const height = refresherEl.clientHeight;
107
- const spinnerAnimation = createAnimation()
108
- .addElement(pullingRefresherIcon)
109
- .keyframes([
110
- { offset: 0, transform: `translateY(-${height}px)` },
111
- { offset: 1, transform: 'translateY(100px)' },
112
- ]);
113
- return createBaseAnimation(pullingRefresherIcon).addAnimation([spinnerAnimation]);
114
- };
115
- const createSnapBackAnimation = (pullingRefresherIcon) => {
116
- return createAnimation()
117
- .duration(125)
118
- .addElement(pullingRefresherIcon)
119
- .fromTo('transform', 'translateY(var(--ion-pulling-refresher-translate, 100px))', 'translateY(0px)');
120
- };
121
- // iOS Native Refresher
122
- // -----------------------------
123
- const setSpinnerOpacity = (spinner, opacity) => {
124
- spinner.style.setProperty('opacity', opacity.toString());
125
- };
126
- const handleScrollWhilePulling = (ticks, numTicks, pullAmount) => {
127
- const max = 1;
128
- writeTask(() => {
129
- ticks.forEach((el, i) => {
130
- /**
131
- * Compute the opacity of each tick
132
- * mark as a percentage of the pullAmount
133
- * offset by max / numTicks so
134
- * the tick marks are shown staggered.
135
- */
136
- const min = i * (max / numTicks);
137
- const range = max - min;
138
- const start = pullAmount - min;
139
- const progression = clamp(0, start / range, 1);
140
- el.style.setProperty('opacity', progression.toString());
141
- });
142
- });
143
- };
144
- const handleScrollWhileRefreshing = (spinner, lastVelocityY) => {
145
- writeTask(() => {
146
- // If user pulls down quickly, the spinner should spin faster
147
- spinner.style.setProperty('--refreshing-rotation-duration', lastVelocityY >= 1.0 ? '0.5s' : '2s');
148
- spinner.style.setProperty('opacity', '1');
149
- });
150
- };
151
- const translateElement = (el, value, duration = 200) => {
152
- if (!el) {
153
- return Promise.resolve();
154
- }
155
- const trans = transitionEndAsync(el, duration);
156
- writeTask(() => {
157
- el.style.setProperty('transition', `${duration}ms all ease-out`);
158
- if (value === undefined) {
159
- el.style.removeProperty('transform');
160
- }
161
- else {
162
- el.style.setProperty('transform', `translate3d(0px, ${value}, 0px)`);
163
- }
164
- });
165
- return trans;
166
- };
167
- // Utils
168
- // -----------------------------
169
- const shouldUseNativeRefresher = async (referenceEl, mode) => {
170
- const refresherContent = referenceEl.querySelector('ion-refresher-content');
171
- if (!refresherContent) {
172
- return Promise.resolve(false);
173
- }
174
- await new Promise((resolve) => componentOnReady(refresherContent, resolve));
175
- const pullingSpinner = referenceEl.querySelector('ion-refresher-content .refresher-pulling ion-spinner');
176
- const refreshingSpinner = referenceEl.querySelector('ion-refresher-content .refresher-refreshing ion-spinner');
177
- return (pullingSpinner !== null &&
178
- refreshingSpinner !== null &&
179
- /**
180
- * We use webkitOverflowScrolling for feature detection with rubber band scrolling
181
- * on iOS. When doing referenceEl.style, webkitOverflowScrolling is undefined on non-iOS platforms.
182
- * However, it will be the empty string on iOS.
183
- * Note that we do not use getPropertyValue (and thus need to cast as any) because calling
184
- * getPropertyValue('-webkit-overflow-scrolling') will return the empty string if it is not
185
- * set on the element, even if the platform does not support that.
186
- */
187
- ((mode === 'ios' && isPlatform('mobile') && referenceEl.style.webkitOverflowScrolling !== undefined) ||
188
- mode === 'md'));
189
- };
9
+ import { b as getIonMode } from './ionic-global.js';
10
+ import { s as shouldUseNativeRefresher, t as translateElement, a as setSpinnerOpacity, h as handleScrollWhileRefreshing, b as handleScrollWhilePulling, c as createPullingAnimation, d as createSnapBackAnimation, g as getRefresherAnimationType } from './refresher.utils.js';
190
11
 
191
12
  const refresherIosCss = "ion-refresher{top:0;display:none;position:absolute;width:100%;height:60px;pointer-events:none;z-index:-1}@supports (inset-inline-start: 0){ion-refresher{inset-inline-start:0}}@supports not (inset-inline-start: 0){ion-refresher{left:0}:host-context([dir=rtl]) ion-refresher{left:unset;right:unset;right:0}[dir=rtl] ion-refresher{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){ion-refresher:dir(rtl){left:unset;right:unset;right:0}}}ion-refresher.refresher-active{display:block}ion-refresher-content{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.refresher-pulling,.refresher-refreshing{display:none;width:100%}.refresher-pulling-icon,.refresher-refreshing-icon{-webkit-transform-origin:center;transform-origin:center;-webkit-transition:200ms;transition:200ms;font-size:30px;text-align:center}:host-context([dir=rtl]) .refresher-pulling-icon,:host-context([dir=rtl]) .refresher-refreshing-icon{-webkit-transform-origin:calc(100% - center);transform-origin:calc(100% - center)}[dir=rtl] .refresher-pulling-icon,[dir=rtl] .refresher-refreshing-icon{-webkit-transform-origin:calc(100% - center);transform-origin:calc(100% - center)}@supports selector(:dir(rtl)){.refresher-pulling-icon:dir(rtl),.refresher-refreshing-icon:dir(rtl){-webkit-transform-origin:calc(100% - center);transform-origin:calc(100% - center)}}.refresher-pulling-text,.refresher-refreshing-text{font-size:16px;text-align:center}ion-refresher-content .arrow-container{display:none}.refresher-pulling ion-refresher-content .refresher-pulling{display:block}.refresher-ready ion-refresher-content .refresher-pulling{display:block}.refresher-ready ion-refresher-content .refresher-pulling-icon{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.refresher-refreshing ion-refresher-content .refresher-refreshing{display:block}.refresher-cancelling ion-refresher-content .refresher-pulling{display:block}.refresher-cancelling ion-refresher-content .refresher-pulling-icon{-webkit-transform:scale(0);transform:scale(0)}.refresher-completing ion-refresher-content .refresher-refreshing{display:block}.refresher-completing ion-refresher-content .refresher-refreshing-icon{-webkit-transform:scale(0);transform:scale(0)}.refresher-native .refresher-pulling-text,.refresher-native .refresher-refreshing-text{display:none}.refresher-ios .refresher-pulling-icon,.refresher-ios .refresher-refreshing-icon{color:var(--ion-text-color, #000)}.refresher-ios .refresher-pulling-text,.refresher-ios .refresher-refreshing-text{color:var(--ion-text-color, #000)}.refresher-ios .refresher-refreshing .spinner-lines-ios line,.refresher-ios .refresher-refreshing .spinner-lines-small-ios line,.refresher-ios .refresher-refreshing .spinner-crescent circle{stroke:var(--ion-text-color, #000)}.refresher-ios .refresher-refreshing .spinner-bubbles circle,.refresher-ios .refresher-refreshing .spinner-circles circle,.refresher-ios .refresher-refreshing .spinner-dots circle{fill:var(--ion-text-color, #000)}ion-refresher.refresher-native{display:block;z-index:1}ion-refresher.refresher-native ion-spinner{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0}.refresher-native .refresher-refreshing ion-spinner{--refreshing-rotation-duration:2s;display:none;-webkit-animation:var(--refreshing-rotation-duration) ease-out refresher-rotate forwards;animation:var(--refreshing-rotation-duration) ease-out refresher-rotate forwards}.refresher-native .refresher-refreshing{display:none;-webkit-animation:250ms linear refresher-pop forwards;animation:250ms linear refresher-pop forwards}.refresher-native ion-spinner{width:32px;height:32px;color:var(--ion-color-step-450, #747577)}.refresher-native.refresher-refreshing .refresher-pulling ion-spinner,.refresher-native.refresher-completing .refresher-pulling ion-spinner{display:none}.refresher-native.refresher-refreshing .refresher-refreshing ion-spinner,.refresher-native.refresher-completing .refresher-refreshing ion-spinner{display:block}.refresher-native.refresher-pulling .refresher-pulling ion-spinner{display:block}.refresher-native.refresher-pulling .refresher-refreshing ion-spinner{display:none}.refresher-native.refresher-completing ion-refresher-content .refresher-refreshing-icon{-webkit-transform:scale(0) rotate(180deg);transform:scale(0) rotate(180deg);-webkit-transition:300ms;transition:300ms}@-webkit-keyframes refresher-pop{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}50%{-webkit-transform:scale(1.2);transform:scale(1.2);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}100%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes refresher-pop{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}50%{-webkit-transform:scale(1.2);transform:scale(1.2);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}100%{-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes refresher-rotate{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(180deg);transform:rotate(180deg)}}@keyframes refresher-rotate{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(180deg);transform:rotate(180deg)}}";
192
13
 
@@ -191,8 +191,6 @@ const Searchbar = /*@__PURE__*/ proxyCustomElement(class Searchbar extends HTMLE
191
191
  *
192
192
  * Developers who wish to focus an input when an overlay is presented
193
193
  * should call `setFocus` after `didPresent` has resolved.
194
- *
195
- * See [managing focus](/docs/developing/managing-focus) for more information.
196
194
  */
197
195
  async setFocus() {
198
196
  if (this.nativeInput) {
@@ -167,8 +167,6 @@ const Textarea = /*@__PURE__*/ proxyCustomElement(class Textarea extends HTMLEle
167
167
  /**
168
168
  * Sets focus on the native `textarea` in `ion-textarea`. Use this method instead of the global
169
169
  * `textarea.focus()`.
170
- *
171
- * See [managing focus](/docs/developing/managing-focus) for more information.
172
170
  */
173
171
  async setFocus() {
174
172
  if (this.nativeInput) {
@@ -4,7 +4,6 @@
4
4
  import { d as doc } from './index5.js';
5
5
  import { b as getIonMode, c as config } from './ionic-global.js';
6
6
  import { C as CoreDelegate } from './framework-delegate.js';
7
- import { B as BACKDROP_NO_SCROLL } from './gesture-controller.js';
8
7
  import { OVERLAY_BACK_BUTTON_PRIORITY } from './hardware-back-button.js';
9
8
  import { c as componentOnReady, f as focusElement, a as addEventListener, b as removeEventListener, g as getElementRoot } from './helpers.js';
10
9
  import { p as printIonWarning } from './index6.js';
@@ -29,10 +28,7 @@ const alertController = /*@__PURE__*/ createController('ion-alert');
29
28
  const actionSheetController = /*@__PURE__*/ createController('ion-action-sheet');
30
29
  const loadingController = /*@__PURE__*/ createController('ion-loading');
31
30
  const modalController = /*@__PURE__*/ createController('ion-modal');
32
- /**
33
- * @deprecated Use the inline ion-picker component instead.
34
- */
35
- const pickerController = /*@__PURE__*/ createController('ion-picker-legacy');
31
+ const pickerController = /*@__PURE__*/ createController('ion-picker');
36
32
  const popoverController = /*@__PURE__*/ createController('ion-popover');
37
33
  const toastController = /*@__PURE__*/ createController('ion-toast');
38
34
  /**
@@ -142,7 +138,7 @@ const focusLastDescendant = (ref, overlay) => {
142
138
  * Should NOT include: Toast
143
139
  */
144
140
  const trapKeyboardFocus = (ev, doc) => {
145
- const lastOverlay = getPresentedOverlay(doc, 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-picker-legacy,ion-popover');
141
+ const lastOverlay = getPresentedOverlay(doc, 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-picker,ion-popover');
146
142
  const target = ev.target;
147
143
  /**
148
144
  * If no active overlay, ignore this event.
@@ -327,7 +323,7 @@ const dismissOverlay = (doc, data, role, overlayTag, id) => {
327
323
  */
328
324
  const getOverlays = (doc, selector) => {
329
325
  if (selector === undefined) {
330
- selector = 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-picker-legacy,ion-popover,ion-toast';
326
+ selector = 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-picker,ion-popover,ion-toast';
331
327
  }
332
328
  return Array.from(doc.querySelectorAll(selector)).filter((c) => c.overlayIndex > 0);
333
329
  };
@@ -393,7 +389,6 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
393
389
  return;
394
390
  }
395
391
  setRootAriaHidden(true);
396
- document.body.classList.add(BACKDROP_NO_SCROLL);
397
392
  overlay.presented = true;
398
393
  overlay.willPresent.emit();
399
394
  (_a = overlay.willPresentShorthand) === null || _a === void 0 ? void 0 : _a.emit();
@@ -456,14 +451,12 @@ const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnim
456
451
  if (!overlay.presented) {
457
452
  return false;
458
453
  }
459
- const lastOverlay = doc !== undefined && getPresentedOverlays(doc).length === 1;
460
454
  /**
461
455
  * If this is the last visible overlay then
462
456
  * we want to re-add the root to the accessibility tree.
463
457
  */
464
- if (lastOverlay) {
458
+ if (doc !== undefined && getPresentedOverlays(doc).length === 1) {
465
459
  setRootAriaHidden(false);
466
- document.body.classList.remove(BACKDROP_NO_SCROLL);
467
460
  }
468
461
  overlay.presented = false;
469
462
  try {