@ionic/core 7.5.8-dev.11703088210.14a72b83 → 7.5.8-dev.11705350665.1a40ee3a

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 (505) hide show
  1. package/components/backdrop.js +0 -12
  2. package/components/button.js +2 -2
  3. package/components/data.js +1 -1
  4. package/components/gesture-controller.js +1 -1
  5. package/components/index2.js +91 -0
  6. package/components/ion-content.js +3 -4
  7. package/components/ion-datetime.js +40 -64
  8. package/components/ion-input.js +2 -0
  9. package/components/ion-picker-column-option.d.ts +11 -0
  10. package/components/ion-picker-column-option.js +9 -0
  11. package/components/ion-picker-column.js +2 -2
  12. package/components/ion-picker-legacy-column.d.ts +11 -0
  13. package/components/ion-picker-legacy-column.js +9 -0
  14. package/components/{ion-picker-internal.d.ts → ion-picker-legacy.d.ts} +4 -4
  15. package/components/ion-picker-legacy.js +309 -0
  16. package/components/ion-picker.js +1 -309
  17. package/components/ion-refresher-content.js +3 -10
  18. package/components/ion-refresher.js +183 -4
  19. package/components/ion-searchbar.js +2 -0
  20. package/components/ion-textarea.js +2 -0
  21. package/components/overlays.js +11 -4
  22. package/components/picker-column-option.js +122 -0
  23. package/components/picker-column.js +351 -322
  24. package/components/picker-column2.js +379 -0
  25. package/components/{picker-internal.js → picker.js} +29 -22
  26. package/css/core.css +10 -0
  27. package/css/core.css.map +1 -1
  28. package/css/ionic.bundle.css +1 -1
  29. package/css/ionic.bundle.css.map +1 -1
  30. package/dist/cjs/{app-globals-28656db1.js → app-globals-0af482c7.js} +1 -1
  31. package/dist/cjs/{button-active-75b38d77.js → button-active-9d7e0640.js} +2 -2
  32. package/dist/cjs/{data-36b9094e.js → data-e7526b58.js} +1 -1
  33. package/dist/cjs/{gesture-controller-c40c045a.js → gesture-controller-9436f482.js} +1 -0
  34. package/dist/cjs/{index-097270a3.js → index-5cbb20f9.js} +1 -1
  35. package/dist/cjs/{index-b0102f48.js → index-bbb4336c.js} +39 -1
  36. package/dist/cjs/{index-cb3e0ab7.js → index-ec51e99c.js} +94 -3
  37. package/dist/cjs/{index-d1b59ffa.js → index-ee07ed59.js} +1 -1
  38. package/dist/cjs/index.cjs.js +9 -9
  39. package/dist/cjs/ion-accordion_2.cjs.entry.js +2 -2
  40. package/dist/cjs/ion-action-sheet.cjs.entry.js +6 -6
  41. package/dist/cjs/ion-alert.cjs.entry.js +6 -6
  42. package/dist/cjs/ion-app_8.cjs.entry.js +8 -9
  43. package/dist/cjs/ion-avatar_3.cjs.entry.js +2 -2
  44. package/dist/cjs/ion-back-button.cjs.entry.js +2 -2
  45. package/dist/cjs/ion-backdrop.cjs.entry.js +2 -14
  46. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +2 -2
  47. package/dist/cjs/ion-button_2.cjs.entry.js +4 -4
  48. package/dist/cjs/ion-card_5.cjs.entry.js +2 -2
  49. package/dist/cjs/ion-checkbox.cjs.entry.js +2 -2
  50. package/dist/cjs/ion-chip.cjs.entry.js +2 -2
  51. package/dist/cjs/ion-col_3.cjs.entry.js +2 -2
  52. package/dist/cjs/ion-datetime-button.cjs.entry.js +3 -3
  53. package/dist/cjs/ion-datetime_3.cjs.entry.js +38 -58
  54. package/dist/cjs/ion-fab_3.cjs.entry.js +2 -2
  55. package/dist/cjs/ion-img.cjs.entry.js +2 -2
  56. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +2 -2
  57. package/dist/cjs/ion-input.cjs.entry.js +4 -2
  58. package/dist/cjs/ion-item-option_3.cjs.entry.js +3 -3
  59. package/dist/cjs/ion-item_8.cjs.entry.js +2 -2
  60. package/dist/cjs/ion-loading.cjs.entry.js +4 -3
  61. package/dist/cjs/ion-menu_3.cjs.entry.js +6 -6
  62. package/dist/cjs/ion-modal.cjs.entry.js +6 -6
  63. package/dist/cjs/ion-nav_2.cjs.entry.js +5 -4
  64. package/dist/cjs/ion-picker-column-option.cjs.entry.js +104 -0
  65. package/dist/cjs/{ion-picker-column-internal.cjs.entry.js → ion-picker-column.cjs.entry.js} +106 -89
  66. package/dist/cjs/{ion-picker-internal.cjs.entry.js → ion-picker.cjs.entry.js} +27 -20
  67. package/dist/cjs/ion-popover.cjs.entry.js +5 -4
  68. package/dist/cjs/ion-progress-bar.cjs.entry.js +2 -2
  69. package/dist/cjs/ion-radio_2.cjs.entry.js +2 -2
  70. package/dist/cjs/ion-range.cjs.entry.js +3 -3
  71. package/dist/cjs/ion-refresher_2.cjs.entry.js +17 -32
  72. package/dist/cjs/ion-reorder_2.cjs.entry.js +3 -3
  73. package/dist/cjs/ion-ripple-effect.cjs.entry.js +2 -2
  74. package/dist/cjs/ion-route_4.cjs.entry.js +2 -2
  75. package/dist/cjs/ion-searchbar.cjs.entry.js +4 -2
  76. package/dist/cjs/ion-segment_2.cjs.entry.js +3 -3
  77. package/dist/cjs/ion-select_3.cjs.entry.js +4 -3
  78. package/dist/cjs/ion-spinner.cjs.entry.js +2 -2
  79. package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
  80. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +2 -2
  81. package/dist/cjs/ion-tab_2.cjs.entry.js +1 -1
  82. package/dist/cjs/ion-text.cjs.entry.js +2 -2
  83. package/dist/cjs/ion-textarea.cjs.entry.js +4 -2
  84. package/dist/cjs/ion-toast.cjs.entry.js +4 -3
  85. package/dist/cjs/ion-toggle.cjs.entry.js +3 -3
  86. package/dist/cjs/{ionic-global-62510d64.js → ionic-global-f4a2093b.js} +1 -1
  87. package/dist/cjs/ionic.cjs.js +5 -5
  88. package/dist/cjs/{ios.transition-d9c0e4fb.js → ios.transition-039d6aeb.js} +4 -2
  89. package/dist/cjs/loader.cjs.js +4 -4
  90. package/dist/cjs/{md.transition-4fac8a87.js → md.transition-ce763350.js} +4 -2
  91. package/dist/cjs/{overlays-b1471172.js → overlays-e8e05b0e.js} +12 -5
  92. package/dist/cjs/{status-tap-0aa8e1f2.js → status-tap-415acac6.js} +1 -1
  93. package/dist/cjs/{swipe-back-2a858bbd.js → swipe-back-b8f2330b.js} +2 -2
  94. package/dist/collection/collection-manifest.json +8 -7
  95. package/dist/collection/components/backdrop/backdrop.js +0 -12
  96. package/dist/collection/components/button/button.ios.css +1 -1
  97. package/dist/collection/components/button/button.md.css +1 -1
  98. package/dist/collection/components/button/test/wrap/button.e2e.js +12 -24
  99. package/dist/collection/components/content/content.css +0 -4
  100. package/dist/collection/components/content/content.js +2 -3
  101. package/dist/collection/components/datetime/datetime.ios.css +91 -37
  102. package/dist/collection/components/datetime/datetime.js +24 -36
  103. package/dist/collection/components/datetime/datetime.md.css +96 -37
  104. package/dist/collection/components/datetime/test/a11y/datetime.e2e.js +1 -1
  105. package/dist/collection/components/datetime/test/a11y/datetime.spec.js +6 -9
  106. package/dist/collection/components/datetime/test/basic/datetime.e2e.js +10 -0
  107. package/dist/collection/components/datetime/test/datetime.e2e.js +2 -2
  108. package/dist/collection/components/datetime/test/disabled/datetime.spec.js +4 -4
  109. package/dist/collection/components/datetime/test/locale/datetime.e2e.js +2 -2
  110. package/dist/collection/components/datetime/test/minmax/datetime.e2e.js +6 -6
  111. package/dist/collection/components/datetime/test/month-year-picker/datetime.e2e.js +1 -1
  112. package/dist/collection/components/datetime/test/prefer-wheel/datetime.e2e.js +43 -41
  113. package/dist/collection/components/datetime/test/presentation/datetime.e2e.js +1 -1
  114. package/dist/collection/components/datetime/test/readonly/datetime.e2e.js +4 -4
  115. package/dist/collection/components/datetime/test/values/datetime.e2e.js +15 -12
  116. package/dist/collection/components/datetime/utils/data.js +1 -1
  117. package/dist/collection/components/input/input.js +4 -2
  118. package/dist/collection/components/picker/picker.ios.css +112 -211
  119. package/dist/collection/components/picker/picker.js +472 -744
  120. package/dist/collection/components/picker/picker.md.css +108 -198
  121. package/dist/collection/components/{picker-internal/test/a11y/picker-internal.e2e.js → picker/test/a11y/picker.e2e.js} +2 -2
  122. package/dist/collection/components/picker/test/basic/picker.e2e.js +99 -13
  123. package/dist/collection/components/picker/test/custom/picker.e2e.js +85 -0
  124. package/dist/collection/components/{picker-internal/test/keyboard-entry/picker-internal.e2e.js → picker/test/keyboard-entry/picker.e2e.js} +63 -32
  125. package/dist/collection/components/{picker-column-internal/picker-column-internal.md.css → picker-column/picker-column.css} +96 -83
  126. package/dist/collection/components/picker-column/picker-column.js +497 -335
  127. package/dist/collection/components/{picker-column-internal/test/basic/picker-column-internal.e2e.js → picker-column/test/basic/picker-column.e2e.js} +8 -8
  128. package/dist/collection/components/picker-column/test/disabled/picker-column.e2e.js +91 -0
  129. package/dist/collection/components/picker-column/test/slots/picker-column.e2e.js +39 -0
  130. package/dist/collection/components/picker-column-option/picker-column-option.ios.css +87 -0
  131. package/dist/collection/components/picker-column-option/picker-column-option.js +173 -0
  132. package/dist/collection/components/{picker-column-internal/picker-column-internal.ios.css → picker-column-option/picker-column-option.md.css} +6 -53
  133. package/dist/collection/components/picker-column-option/test/a11y/picker-column-option.e2e.js +18 -0
  134. package/dist/collection/components/picker-column-option/test/basic/picker-column-option.e2e.js +37 -0
  135. package/dist/collection/components/picker-column-option/test/picker-column-option.spec.js +29 -0
  136. package/dist/collection/components/{picker-internal/picker-internal.md.css → picker-legacy/picker.ios.css} +207 -98
  137. package/dist/collection/components/picker-legacy/picker.js +817 -0
  138. package/dist/collection/components/{picker-internal/picker-internal.ios.css → picker-legacy/picker.md.css} +192 -100
  139. package/dist/collection/components/picker-legacy/test/basic/picker.e2e.js +25 -0
  140. package/dist/collection/components/{picker → picker-legacy}/test/is-open/picker.e2e.js +4 -4
  141. package/dist/collection/components/{picker → picker-legacy}/test/picker-id.spec.js +5 -5
  142. package/dist/collection/components/{picker → picker-legacy}/test/trigger/picker.e2e.js +1 -1
  143. package/dist/collection/components/picker-legacy-column/picker-column.js +419 -0
  144. package/dist/collection/components/{picker-column → picker-legacy-column}/test/picker-column-aria.spec.js +3 -3
  145. package/dist/collection/components/{picker-column → picker-legacy-column}/test/picker-column-dynamic.spec.js +2 -2
  146. package/dist/collection/components/{picker-column → picker-legacy-column}/test/picker-column.spec.js +2 -2
  147. package/dist/collection/components/{picker-column → picker-legacy-column}/test/standalone/picker-column.e2e.js +3 -3
  148. package/dist/collection/components/refresher/refresher.utils.js +11 -19
  149. package/dist/collection/components/refresher-content/refresher-content.js +3 -9
  150. package/dist/collection/components/searchbar/searchbar.js +3 -1
  151. package/dist/collection/components/textarea/textarea.js +4 -2
  152. package/dist/collection/utils/gesture/gesture-controller.js +1 -1
  153. package/dist/collection/utils/overlays.js +11 -4
  154. package/dist/collection/utils/test/overlays/overlays-scroll-blocking.spec.js +65 -0
  155. package/dist/collection/utils/transition/index.js +91 -0
  156. package/dist/docs.json +484 -47
  157. package/dist/esm/{app-globals-c23144fc.js → app-globals-722340c4.js} +1 -1
  158. package/dist/esm/{button-active-7013b5a1.js → button-active-ed9d848c.js} +2 -2
  159. package/dist/esm/{data-f5c75b4e.js → data-4b9508c9.js} +1 -1
  160. package/dist/esm/{gesture-controller-1bf57181.js → gesture-controller-314a54f6.js} +1 -1
  161. package/dist/esm/{index-39329c6f.js → index-08d686eb.js} +39 -1
  162. package/dist/esm/{index-2cf77112.js → index-39782642.js} +2 -2
  163. package/dist/esm/{index-7a818ed3.js → index-80492ed3.js} +1 -1
  164. package/dist/esm/{index-bebaae5d.js → index-933484ae.js} +94 -3
  165. package/dist/esm/index.js +9 -9
  166. package/dist/esm/ion-accordion_2.entry.js +2 -2
  167. package/dist/esm/ion-action-sheet.entry.js +6 -6
  168. package/dist/esm/ion-alert.entry.js +6 -6
  169. package/dist/esm/ion-app_8.entry.js +8 -9
  170. package/dist/esm/ion-avatar_3.entry.js +2 -2
  171. package/dist/esm/ion-back-button.entry.js +2 -2
  172. package/dist/esm/ion-backdrop.entry.js +2 -14
  173. package/dist/esm/ion-breadcrumb_2.entry.js +2 -2
  174. package/dist/esm/ion-button_2.entry.js +4 -4
  175. package/dist/esm/ion-card_5.entry.js +2 -2
  176. package/dist/esm/ion-checkbox.entry.js +2 -2
  177. package/dist/esm/ion-chip.entry.js +2 -2
  178. package/dist/esm/ion-col_3.entry.js +2 -2
  179. package/dist/esm/ion-datetime-button.entry.js +3 -3
  180. package/dist/esm/ion-datetime_3.entry.js +37 -57
  181. package/dist/esm/ion-fab_3.entry.js +2 -2
  182. package/dist/esm/ion-img.entry.js +2 -2
  183. package/dist/esm/ion-infinite-scroll_2.entry.js +2 -2
  184. package/dist/esm/ion-input.entry.js +4 -2
  185. package/dist/esm/ion-item-option_3.entry.js +3 -3
  186. package/dist/esm/ion-item_8.entry.js +2 -2
  187. package/dist/esm/ion-loading.entry.js +4 -3
  188. package/dist/esm/ion-menu_3.entry.js +6 -6
  189. package/dist/esm/ion-modal.entry.js +6 -6
  190. package/dist/esm/ion-nav_2.entry.js +5 -4
  191. package/dist/esm/ion-picker-column-option.entry.js +100 -0
  192. package/dist/esm/{ion-picker-column-internal.entry.js → ion-picker-column.entry.js} +106 -89
  193. package/dist/esm/{ion-picker-internal.entry.js → ion-picker.entry.js} +27 -20
  194. package/dist/esm/ion-popover.entry.js +5 -4
  195. package/dist/esm/ion-progress-bar.entry.js +2 -2
  196. package/dist/esm/ion-radio_2.entry.js +2 -2
  197. package/dist/esm/ion-range.entry.js +3 -3
  198. package/dist/esm/ion-refresher_2.entry.js +17 -32
  199. package/dist/esm/ion-reorder_2.entry.js +3 -3
  200. package/dist/esm/ion-ripple-effect.entry.js +2 -2
  201. package/dist/esm/ion-route_4.entry.js +2 -2
  202. package/dist/esm/ion-searchbar.entry.js +4 -2
  203. package/dist/esm/ion-segment_2.entry.js +3 -3
  204. package/dist/esm/ion-select_3.entry.js +4 -3
  205. package/dist/esm/ion-spinner.entry.js +2 -2
  206. package/dist/esm/ion-split-pane.entry.js +2 -2
  207. package/dist/esm/ion-tab-bar_2.entry.js +2 -2
  208. package/dist/esm/ion-tab_2.entry.js +1 -1
  209. package/dist/esm/ion-text.entry.js +2 -2
  210. package/dist/esm/ion-textarea.entry.js +4 -2
  211. package/dist/esm/ion-toast.entry.js +4 -3
  212. package/dist/esm/ion-toggle.entry.js +3 -3
  213. package/dist/esm/{ionic-global-6c78e871.js → ionic-global-c0cda98e.js} +1 -1
  214. package/dist/esm/ionic.js +6 -6
  215. package/dist/esm/{ios.transition-daa373e9.js → ios.transition-9e42996d.js} +4 -2
  216. package/dist/esm/loader.js +5 -5
  217. package/dist/esm/{md.transition-91c3d3cc.js → md.transition-8cbb4e1d.js} +4 -2
  218. package/dist/esm/{overlays-64e67e2c.js → overlays-fbc5cab5.js} +12 -5
  219. package/dist/esm/{status-tap-9dd45200.js → status-tap-2b93b1b5.js} +1 -1
  220. package/dist/esm/{swipe-back-a6f386fc.js → swipe-back-a8ca7f93.js} +2 -2
  221. package/dist/esm-es5/app-globals-722340c4.js +4 -0
  222. package/dist/esm-es5/{button-active-7013b5a1.js → button-active-ed9d848c.js} +1 -1
  223. package/dist/esm-es5/{gesture-controller-1bf57181.js → gesture-controller-314a54f6.js} +1 -1
  224. package/dist/esm-es5/{index-39329c6f.js → index-08d686eb.js} +1 -1
  225. package/dist/esm-es5/{index-2cf77112.js → index-39782642.js} +1 -1
  226. package/dist/esm-es5/{index-7a818ed3.js → index-80492ed3.js} +1 -1
  227. package/dist/esm-es5/index-933484ae.js +4 -0
  228. package/dist/esm-es5/index.js +1 -1
  229. package/dist/esm-es5/ion-accordion_2.entry.js +1 -1
  230. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  231. package/dist/esm-es5/ion-alert.entry.js +1 -1
  232. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  233. package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
  234. package/dist/esm-es5/ion-back-button.entry.js +1 -1
  235. package/dist/esm-es5/ion-backdrop.entry.js +1 -1
  236. package/dist/esm-es5/ion-breadcrumb_2.entry.js +1 -1
  237. package/dist/esm-es5/ion-button_2.entry.js +1 -1
  238. package/dist/esm-es5/ion-card_5.entry.js +1 -1
  239. package/dist/esm-es5/ion-checkbox.entry.js +1 -1
  240. package/dist/esm-es5/ion-chip.entry.js +1 -1
  241. package/dist/esm-es5/ion-col_3.entry.js +1 -1
  242. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  243. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  244. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  245. package/dist/esm-es5/ion-img.entry.js +1 -1
  246. package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
  247. package/dist/esm-es5/ion-input.entry.js +1 -1
  248. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  249. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  250. package/dist/esm-es5/ion-loading.entry.js +1 -1
  251. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  252. package/dist/esm-es5/ion-modal.entry.js +1 -1
  253. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  254. package/dist/esm-es5/ion-picker-column-option.entry.js +4 -0
  255. package/dist/esm-es5/ion-picker-column.entry.js +4 -0
  256. package/dist/esm-es5/ion-picker.entry.js +4 -0
  257. package/dist/esm-es5/ion-popover.entry.js +1 -1
  258. package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
  259. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  260. package/dist/esm-es5/ion-range.entry.js +1 -1
  261. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  262. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  263. package/dist/esm-es5/ion-ripple-effect.entry.js +1 -1
  264. package/dist/esm-es5/ion-route_4.entry.js +1 -1
  265. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  266. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  267. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  268. package/dist/esm-es5/ion-spinner.entry.js +1 -1
  269. package/dist/esm-es5/ion-split-pane.entry.js +1 -1
  270. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  271. package/dist/esm-es5/ion-tab_2.entry.js +1 -1
  272. package/dist/esm-es5/ion-text.entry.js +1 -1
  273. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  274. package/dist/esm-es5/ion-toast.entry.js +1 -1
  275. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  276. package/dist/esm-es5/{ionic-global-6c78e871.js → ionic-global-c0cda98e.js} +1 -1
  277. package/dist/esm-es5/ionic.js +1 -1
  278. package/dist/esm-es5/ios.transition-9e42996d.js +4 -0
  279. package/dist/esm-es5/loader.js +1 -1
  280. package/dist/esm-es5/md.transition-8cbb4e1d.js +4 -0
  281. package/dist/esm-es5/overlays-fbc5cab5.js +4 -0
  282. package/dist/esm-es5/{status-tap-9dd45200.js → status-tap-2b93b1b5.js} +1 -1
  283. package/dist/esm-es5/swipe-back-a8ca7f93.js +4 -0
  284. package/dist/html.html-data.json +154 -3
  285. package/dist/ionic/index.esm.js +1 -1
  286. package/dist/ionic/ionic.esm.js +1 -1
  287. package/dist/ionic/ionic.js +1 -1
  288. package/dist/ionic/{p-a0945c3a.system.entry.js → p-0e53f8ea.system.entry.js} +1 -1
  289. package/dist/ionic/{p-161d0916.entry.js → p-1161a793.entry.js} +1 -1
  290. package/dist/ionic/{p-89026d53.entry.js → p-1208f939.entry.js} +1 -1
  291. package/dist/ionic/{p-ad78c421.system.js → p-16bd5224.system.js} +1 -1
  292. package/dist/ionic/p-1786bc72.js +4 -0
  293. package/dist/ionic/{p-312221db.entry.js → p-17da5ed1.entry.js} +1 -1
  294. package/dist/ionic/{p-5fb707e0.entry.js → p-18ba8221.entry.js} +1 -1
  295. package/dist/ionic/{p-1631b52f.system.js → p-1d624e03.system.js} +1 -1
  296. package/dist/ionic/{p-3f5ae764.entry.js → p-1fc72959.entry.js} +1 -1
  297. package/dist/ionic/{p-1ff22253.entry.js → p-2092f39f.entry.js} +1 -1
  298. package/dist/ionic/{p-c7c8429a.system.js → p-20d469d0.system.js} +1 -1
  299. package/dist/ionic/{p-46dbd723.entry.js → p-21c3515a.entry.js} +1 -1
  300. package/dist/ionic/{p-2657f213.entry.js → p-22e5af95.entry.js} +1 -1
  301. package/dist/ionic/{p-6744eca5.entry.js → p-232d1f22.entry.js} +1 -1
  302. package/dist/ionic/p-26798a7b.system.entry.js +4 -0
  303. package/dist/ionic/p-27bcbbc7.system.entry.js +4 -0
  304. package/dist/ionic/{p-b81a8111.system.entry.js → p-2938823a.system.entry.js} +1 -1
  305. package/dist/ionic/p-294725bb.js +4 -0
  306. package/dist/ionic/{p-df361680.system.entry.js → p-2ab4e925.system.entry.js} +1 -1
  307. package/dist/ionic/{p-8c202d6e.system.entry.js → p-32303650.system.entry.js} +1 -1
  308. package/dist/ionic/{p-18032a93.entry.js → p-34c39c48.entry.js} +1 -1
  309. package/dist/ionic/p-350f7292.system.entry.js +4 -0
  310. package/dist/ionic/{p-86c2bbc8.entry.js → p-353b349d.entry.js} +1 -1
  311. package/dist/ionic/p-36d194c5.entry.js +4 -0
  312. package/dist/ionic/p-3993ae66.entry.js +4 -0
  313. package/dist/ionic/{p-31b2326e.system.js → p-3e1e14d9.system.js} +1 -1
  314. package/dist/ionic/{p-a3a145d3.entry.js → p-3f6270b3.entry.js} +1 -1
  315. package/dist/ionic/{p-23a27e78.system.entry.js → p-3fd26bd6.system.entry.js} +1 -1
  316. package/dist/ionic/{p-426bdba9.system.js → p-3fe96156.system.js} +1 -1
  317. package/dist/ionic/p-400b61c7.system.entry.js +4 -0
  318. package/dist/ionic/{p-e26030f8.system.js → p-4155f352.system.js} +1 -1
  319. package/dist/ionic/{p-405f1a72.entry.js → p-42ba3902.entry.js} +1 -1
  320. package/dist/ionic/{p-2a7e6572.system.entry.js → p-464975c5.system.entry.js} +1 -1
  321. package/dist/ionic/{p-ee4a54e3.entry.js → p-4911a5d6.entry.js} +1 -1
  322. package/dist/ionic/p-49c5f1a3.js +4 -0
  323. package/dist/ionic/{p-5f46d93e.entry.js → p-4a31c99f.entry.js} +1 -1
  324. package/dist/ionic/{p-f34d6a49.entry.js → p-4bee86bd.entry.js} +1 -1
  325. package/dist/ionic/{p-2cd9cb80.system.entry.js → p-4fb51e61.system.entry.js} +1 -1
  326. package/dist/ionic/p-510d9b43.js +4 -0
  327. package/dist/ionic/{p-d3e123c0.entry.js → p-51a087d6.entry.js} +1 -1
  328. package/dist/ionic/p-51abefb7.system.js +4 -0
  329. package/dist/ionic/{p-aac289d2.system.entry.js → p-564af202.system.entry.js} +1 -1
  330. package/dist/ionic/p-588fdf40.entry.js +4 -0
  331. package/dist/ionic/p-5a1aac13.system.entry.js +4 -0
  332. package/dist/ionic/{p-a5c81b99.entry.js → p-5a68960f.entry.js} +1 -1
  333. package/dist/ionic/{p-34d6f520.system.js → p-5b365ca7.system.js} +1 -1
  334. package/dist/ionic/{p-eef8d7e8.system.entry.js → p-5bebc7b3.system.entry.js} +1 -1
  335. package/dist/ionic/{p-a1b4dba7.entry.js → p-5d42b6b4.entry.js} +1 -1
  336. package/dist/ionic/{p-21f015cf.js → p-5ecae037.js} +1 -1
  337. package/dist/ionic/{p-57c0d5bf.system.entry.js → p-6555a5e7.system.entry.js} +1 -1
  338. package/dist/ionic/p-65e27aae.system.entry.js +4 -0
  339. package/dist/ionic/{p-71d986ae.entry.js → p-6b7c55cd.entry.js} +1 -1
  340. package/dist/ionic/{p-70ecb18b.entry.js → p-6d72fb44.entry.js} +1 -1
  341. package/dist/ionic/{p-1cbc21e2.system.entry.js → p-6e70dd1a.system.entry.js} +1 -1
  342. package/dist/ionic/{p-64af4468.entry.js → p-6fbecbda.entry.js} +1 -1
  343. package/dist/ionic/{p-27a5f2c7.system.entry.js → p-6fd64e7c.system.entry.js} +1 -1
  344. package/dist/ionic/p-73190c5f.entry.js +4 -0
  345. package/dist/ionic/p-73aa7604.entry.js +4 -0
  346. package/dist/ionic/p-76d3765d.js +4 -0
  347. package/dist/ionic/{p-2ac9d078.system.entry.js → p-77965464.system.entry.js} +1 -1
  348. package/dist/ionic/{p-6cf08720.entry.js → p-7b725280.entry.js} +1 -1
  349. package/dist/ionic/p-8017aad2.system.entry.js +4 -0
  350. package/dist/ionic/{p-27e6473f.entry.js → p-8adc9a45.entry.js} +1 -1
  351. package/dist/ionic/p-8c0e5060.system.js +4 -0
  352. package/dist/ionic/p-8c97cdc0.entry.js +4 -0
  353. package/dist/ionic/p-8e42850f.entry.js +4 -0
  354. package/dist/ionic/{p-f5d2dc9b.js → p-8ededb41.js} +1 -1
  355. package/dist/ionic/{p-67598744.entry.js → p-8f5d30f5.entry.js} +1 -1
  356. package/dist/ionic/p-8fa6583d.system.js +4 -0
  357. package/dist/ionic/p-91af3c52.system.entry.js +4 -0
  358. package/dist/ionic/{p-3acad8ff.system.entry.js → p-93000a81.system.entry.js} +1 -1
  359. package/dist/ionic/{p-41f7af3f.system.entry.js → p-96dbbac1.system.entry.js} +1 -1
  360. package/dist/ionic/{p-a0db3de9.system.entry.js → p-9709ebd8.system.entry.js} +1 -1
  361. package/dist/ionic/{p-12cdcb59.js → p-9738fd82.js} +1 -1
  362. package/dist/ionic/{p-a70b5d24.entry.js → p-98f3d827.entry.js} +1 -1
  363. package/dist/ionic/{p-bb3615f7.js → p-9b97df10.js} +1 -1
  364. package/dist/ionic/p-9e48593b.system.js +4 -0
  365. package/dist/ionic/{p-315ad733.system.entry.js → p-a225bf0f.system.entry.js} +1 -1
  366. package/dist/ionic/{p-53a3283e.entry.js → p-a4afcc88.entry.js} +1 -1
  367. package/dist/ionic/p-a60a1ce5.js +4 -0
  368. package/dist/ionic/p-a8baa23e.entry.js +4 -0
  369. package/dist/ionic/{p-99fe0543.entry.js → p-a98dc0c1.entry.js} +1 -1
  370. package/dist/ionic/p-a9a80f5b.entry.js +4 -0
  371. package/dist/ionic/{p-90db28f8.system.entry.js → p-a9e3b5be.system.entry.js} +1 -1
  372. package/dist/ionic/{p-a843a90e.system.entry.js → p-ab9456e9.system.entry.js} +1 -1
  373. package/dist/ionic/p-ae712b95.entry.js +4 -0
  374. package/dist/ionic/p-afcf4620.entry.js +4 -0
  375. package/dist/ionic/{p-3535a36c.entry.js → p-b133e9b4.entry.js} +1 -1
  376. package/dist/ionic/{p-98ac0e27.system.entry.js → p-b3b3efba.system.entry.js} +2 -2
  377. package/dist/ionic/{p-58ff9e5b.system.js → p-b4a51c42.system.js} +1 -1
  378. package/dist/ionic/p-b4d31b30.system.entry.js +4 -0
  379. package/dist/ionic/{p-3cb5466e.entry.js → p-b5f9f14c.entry.js} +1 -1
  380. package/dist/ionic/{p-b0fcf130.system.entry.js → p-b6f5e4f2.system.entry.js} +1 -1
  381. package/dist/ionic/{p-7ae5ca1f.system.entry.js → p-b7010c69.system.entry.js} +1 -1
  382. package/dist/ionic/{p-a99f14a7.system.entry.js → p-b752714f.system.entry.js} +1 -1
  383. package/dist/ionic/p-c006d974.entry.js +4 -0
  384. package/dist/ionic/{p-ca32685b.system.entry.js → p-c18de88a.system.entry.js} +1 -1
  385. package/dist/ionic/{p-acdd8148.js → p-c3c3333a.js} +1 -1
  386. package/dist/ionic/p-c41bff4e.system.entry.js +4 -0
  387. package/dist/ionic/{p-8261be6c.system.entry.js → p-c847fb35.system.entry.js} +1 -1
  388. package/dist/ionic/{p-e3c44332.system.entry.js → p-c91ccbfa.system.entry.js} +1 -1
  389. package/dist/ionic/{p-9f376964.system.entry.js → p-c9a21dfd.system.entry.js} +1 -1
  390. package/dist/ionic/p-ca8938f4.js +4 -0
  391. package/dist/ionic/{p-ad953217.system.entry.js → p-caf21b46.system.entry.js} +1 -1
  392. package/dist/ionic/{p-5a7d5905.system.entry.js → p-cde52378.system.entry.js} +1 -1
  393. package/dist/ionic/{p-1c6c6098.entry.js → p-cfe57b1b.entry.js} +1 -1
  394. package/dist/ionic/{p-c04accad.entry.js → p-d37b441e.entry.js} +1 -1
  395. package/dist/ionic/{p-f8c5a0dd.system.js → p-d3b030b8.system.js} +1 -1
  396. package/dist/ionic/p-d3c773d0.entry.js +4 -0
  397. package/dist/ionic/{p-91f9e81b.js → p-d662d908.js} +1 -1
  398. package/dist/ionic/p-d9ec6cf0.system.js +4 -0
  399. package/dist/ionic/p-da15f571.system.entry.js +4 -0
  400. package/dist/ionic/{p-c5ae50be.system.js → p-e3584231.system.js} +1 -1
  401. package/dist/ionic/{p-8a75f7bf.system.entry.js → p-e7ea9815.system.entry.js} +1 -1
  402. package/dist/ionic/{p-5f127075.system.entry.js → p-e8e86f69.system.entry.js} +1 -1
  403. package/dist/ionic/p-ea69616e.entry.js +4 -0
  404. package/dist/ionic/{p-4f71a9cf.system.entry.js → p-ef126ae8.system.entry.js} +1 -1
  405. package/dist/ionic/p-f6160677.system.entry.js +4 -0
  406. package/dist/ionic/{p-e4045e04.entry.js → p-f8a5bb89.entry.js} +1 -1
  407. package/dist/ionic/{p-93dac17a.system.entry.js → p-f910cc73.system.entry.js} +1 -1
  408. package/dist/ionic/{p-bc97b5cd.system.entry.js → p-fbf3a689.system.entry.js} +1 -1
  409. package/dist/ionic/p-ffd5dba4.system.entry.js +4 -0
  410. package/dist/types/components/backdrop/backdrop.d.ts +0 -3
  411. package/dist/types/components/datetime/datetime.d.ts +0 -1
  412. package/dist/types/components/datetime/utils/data.d.ts +11 -7
  413. package/dist/types/components/input/input.d.ts +5 -1
  414. package/dist/types/components/menu/menu.d.ts +1 -1
  415. package/dist/types/components/picker/picker-interfaces.d.ts +8 -0
  416. package/dist/types/components/picker/picker.d.ts +75 -129
  417. package/dist/types/components/picker-column/picker-column-interfaces.d.ts +4 -0
  418. package/dist/types/components/picker-column/picker-column.d.ts +99 -39
  419. package/dist/types/components/picker-column-option/picker-column-option.d.ts +66 -0
  420. package/dist/types/components/picker-legacy/picker.d.ts +158 -0
  421. package/dist/types/components/picker-legacy-column/picker-column.d.ts +46 -0
  422. package/dist/types/components/refresher/refresher.utils.d.ts +0 -16
  423. package/dist/types/components/searchbar/searchbar.d.ts +2 -0
  424. package/dist/types/components/textarea/textarea.d.ts +5 -1
  425. package/dist/types/components.d.ts +161 -129
  426. package/dist/types/interface.d.ts +1 -1
  427. package/dist/types/utils/config.d.ts +8 -2
  428. package/dist/types/utils/gesture/gesture-controller.d.ts +1 -0
  429. package/dist/types/utils/overlays.d.ts +5 -2
  430. package/hydrate/index.d.ts +1 -1
  431. package/hydrate/index.js +1409 -1229
  432. package/package.json +2 -2
  433. package/components/ion-picker-column-internal.d.ts +0 -11
  434. package/components/ion-picker-column-internal.js +0 -9
  435. package/components/ion-picker-internal.js +0 -9
  436. package/components/picker-column-internal.js +0 -390
  437. package/components/refresher.utils.js +0 -196
  438. package/dist/collection/components/picker-column-internal/picker-column-internal.js +0 -565
  439. package/dist/collection/components/picker-column-internal/test/disabled/picker-column-internal.e2e.js +0 -162
  440. package/dist/collection/components/picker-internal/picker-internal.js +0 -544
  441. package/dist/collection/components/picker-internal/test/basic/picker-internal.e2e.js +0 -118
  442. package/dist/esm-es5/app-globals-c23144fc.js +0 -4
  443. package/dist/esm-es5/index-bebaae5d.js +0 -4
  444. package/dist/esm-es5/ion-picker-column-internal.entry.js +0 -4
  445. package/dist/esm-es5/ion-picker-internal.entry.js +0 -4
  446. package/dist/esm-es5/ios.transition-daa373e9.js +0 -4
  447. package/dist/esm-es5/md.transition-91c3d3cc.js +0 -4
  448. package/dist/esm-es5/overlays-64e67e2c.js +0 -4
  449. package/dist/esm-es5/swipe-back-a6f386fc.js +0 -4
  450. package/dist/ionic/p-0263eb49.system.js +0 -4
  451. package/dist/ionic/p-06600f70.js +0 -4
  452. package/dist/ionic/p-0827d00e.system.entry.js +0 -4
  453. package/dist/ionic/p-19545a49.system.entry.js +0 -4
  454. package/dist/ionic/p-1e7daa1f.entry.js +0 -4
  455. package/dist/ionic/p-2507b0c0.entry.js +0 -4
  456. package/dist/ionic/p-33f3cd49.entry.js +0 -4
  457. package/dist/ionic/p-35ce400e.system.js +0 -4
  458. package/dist/ionic/p-45db7949.system.entry.js +0 -4
  459. package/dist/ionic/p-58dd7c15.entry.js +0 -4
  460. package/dist/ionic/p-5c7f13cd.system.entry.js +0 -4
  461. package/dist/ionic/p-6a6477b2.js +0 -4
  462. package/dist/ionic/p-742e11cf.system.entry.js +0 -4
  463. package/dist/ionic/p-7484b1d6.system.js +0 -4
  464. package/dist/ionic/p-78ebf1b6.system.entry.js +0 -4
  465. package/dist/ionic/p-83fada9e.system.entry.js +0 -4
  466. package/dist/ionic/p-89cfbc88.system.entry.js +0 -4
  467. package/dist/ionic/p-8a10752d.entry.js +0 -4
  468. package/dist/ionic/p-abab375b.system.js +0 -4
  469. package/dist/ionic/p-ac4a7fc0.js +0 -4
  470. package/dist/ionic/p-af959b5d.entry.js +0 -4
  471. package/dist/ionic/p-b11ceee2.entry.js +0 -4
  472. package/dist/ionic/p-b5e33ebc.system.entry.js +0 -4
  473. package/dist/ionic/p-b8f2134e.js +0 -4
  474. package/dist/ionic/p-bbe3feee.entry.js +0 -4
  475. package/dist/ionic/p-cde72008.js +0 -4
  476. package/dist/ionic/p-d0251fc4.entry.js +0 -4
  477. package/dist/ionic/p-d1530ea9.entry.js +0 -4
  478. package/dist/ionic/p-ddccf1f4.js +0 -4
  479. package/dist/ionic/p-e145b9f9.entry.js +0 -4
  480. package/dist/ionic/p-e8e530fc.entry.js +0 -4
  481. package/dist/ionic/p-eab6401e.js +0 -4
  482. package/dist/ionic/p-edc5c693.system.entry.js +0 -4
  483. package/dist/ionic/p-f0384573.system.entry.js +0 -4
  484. package/dist/ionic/p-f10de9d5.system.js +0 -4
  485. package/dist/ionic/p-f444fea5.entry.js +0 -4
  486. package/dist/ionic/p-fcf49977.system.entry.js +0 -4
  487. package/dist/types/components/picker-column-internal/picker-column-internal-interfaces.d.ts +0 -5
  488. package/dist/types/components/picker-column-internal/picker-column-internal.d.ts +0 -102
  489. package/dist/types/components/picker-internal/picker-internal-interfaces.d.ts +0 -8
  490. package/dist/types/components/picker-internal/picker-internal.d.ts +0 -102
  491. /package/dist/collection/components/{picker-internal/picker-internal-interfaces.js → picker/picker-interfaces.js} +0 -0
  492. /package/dist/collection/components/{picker-column-internal/picker-column-internal-interfaces.js → picker-column/picker-column-interfaces.js} +0 -0
  493. /package/dist/collection/components/{picker → picker-legacy}/animations/ios.enter.js +0 -0
  494. /package/dist/collection/components/{picker → picker-legacy}/animations/ios.leave.js +0 -0
  495. /package/dist/collection/components/{picker → picker-legacy}/picker-interface.js +0 -0
  496. /package/dist/collection/components/{picker-column → picker-legacy-column}/picker-column.ios.css +0 -0
  497. /package/dist/collection/components/{picker-column → picker-legacy-column}/picker-column.md.css +0 -0
  498. /package/dist/collection/components/{picker-column → picker-legacy-column}/test/test.utils.js +0 -0
  499. /package/dist/esm-es5/{data-f5c75b4e.js → data-4b9508c9.js} +0 -0
  500. /package/dist/ionic/{p-2aea8b1e.js → p-368f5215.js} +0 -0
  501. /package/dist/ionic/{p-82e3d633.system.js → p-f58981c2.system.js} +0 -0
  502. /package/dist/types/components/{picker → picker-legacy}/animations/ios.enter.d.ts +0 -0
  503. /package/dist/types/components/{picker → picker-legacy}/animations/ios.leave.d.ts +0 -0
  504. /package/dist/types/components/{picker → picker-legacy}/picker-interface.d.ts +0 -0
  505. /package/dist/types/components/{picker-column → picker-legacy-column}/test/test.utils.d.ts +0 -0
package/hydrate/index.js CHANGED
@@ -6,7 +6,7 @@
6
6
  Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
8
  /*!
9
- Stencil Mock Doc v4.8.0 | MIT Licensed | https://stenciljs.com
9
+ Stencil Mock Doc v4.8.1 | MIT Licensed | https://stenciljs.com
10
10
  */
11
11
  const CONTENT_REF_ID = 'r';
12
12
  const ORG_LOCATION_ID = 'o';
@@ -8355,7 +8355,7 @@ const focusLastDescendant = (ref, overlay) => {
8355
8355
  * Should NOT include: Toast
8356
8356
  */
8357
8357
  const trapKeyboardFocus = (ev, doc) => {
8358
- const lastOverlay = getPresentedOverlay(doc, 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-picker,ion-popover');
8358
+ const lastOverlay = getPresentedOverlay(doc, 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-picker-legacy,ion-popover');
8359
8359
  const target = ev.target;
8360
8360
  /**
8361
8361
  * If no active overlay, ignore this event.
@@ -8540,7 +8540,7 @@ const dismissOverlay = (doc, data, role, overlayTag, id) => {
8540
8540
  */
8541
8541
  const getOverlays = (doc, selector) => {
8542
8542
  if (selector === undefined) {
8543
- selector = 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-picker,ion-popover,ion-toast';
8543
+ selector = 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-picker-legacy,ion-popover,ion-toast';
8544
8544
  }
8545
8545
  return Array.from(doc.querySelectorAll(selector)).filter((c) => c.overlayIndex > 0);
8546
8546
  };
@@ -8606,6 +8606,7 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
8606
8606
  return;
8607
8607
  }
8608
8608
  setRootAriaHidden(true);
8609
+ document.body.classList.add(BACKDROP_NO_SCROLL);
8609
8610
  overlay.presented = true;
8610
8611
  overlay.willPresent.emit();
8611
8612
  (_a = overlay.willPresentShorthand) === null || _a === void 0 ? void 0 : _a.emit();
@@ -8668,12 +8669,14 @@ const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnim
8668
8669
  if (!overlay.presented) {
8669
8670
  return false;
8670
8671
  }
8672
+ const lastOverlay = doc !== undefined && getPresentedOverlays(doc).length === 1;
8671
8673
  /**
8672
8674
  * If this is the last visible overlay then
8673
8675
  * we want to re-add the root to the accessibility tree.
8674
8676
  */
8675
- if (doc !== undefined && getPresentedOverlays(doc).length === 1) {
8677
+ if (lastOverlay) {
8676
8678
  setRootAriaHidden(false);
8679
+ document.body.classList.remove(BACKDROP_NO_SCROLL);
8677
8680
  }
8678
8681
  overlay.presented = false;
8679
8682
  try {
@@ -11189,21 +11192,10 @@ class Backdrop {
11189
11192
  constructor(hostRef) {
11190
11193
  registerInstance(this, hostRef);
11191
11194
  this.ionBackdropTap = createEvent(this, "ionBackdropTap", 7);
11192
- this.blocker = GESTURE_CONTROLLER.createBlocker({
11193
- disableScroll: true,
11194
- });
11195
11195
  this.visible = true;
11196
11196
  this.tappable = true;
11197
11197
  this.stopPropagation = true;
11198
11198
  }
11199
- connectedCallback() {
11200
- if (this.stopPropagation) {
11201
- this.blocker.block();
11202
- }
11203
- }
11204
- disconnectedCallback() {
11205
- this.blocker.unblock();
11206
- }
11207
11199
  onMouseDown(ev) {
11208
11200
  this.emitTap(ev);
11209
11201
  }
@@ -11532,9 +11524,9 @@ class Breadcrumbs {
11532
11524
  }; }
11533
11525
  }
11534
11526
 
11535
- const buttonIosCss = "/*!@:host*/.sc-ion-button-ios-h{--overflow:hidden;--ripple-color:currentColor;--border-width:initial;--border-color:initial;--border-style:initial;--color-activated:var(--color);--color-focused:var(--color);--color-hover:var(--color);--box-shadow:none;display:inline-block;width:auto;color:var(--color);font-family:var(--ion-font-family, inherit);text-align:center;text-decoration:none;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:top;vertical-align:-webkit-baseline-middle;-webkit-font-kerning:none;font-kerning:none}/*!@:host(.button-disabled)*/.button-disabled.sc-ion-button-ios-h{cursor:default;opacity:0.5;pointer-events:none}/*!@:host(.button-solid)*/.button-solid.sc-ion-button-ios-h{--background:var(--ion-color-primary, #3880ff);--color:var(--ion-color-primary-contrast, #fff)}/*!@:host(.button-outline)*/.button-outline.sc-ion-button-ios-h{--border-color:var(--ion-color-primary, #3880ff);--background:transparent;--color:var(--ion-color-primary, #3880ff)}/*!@:host(.button-clear)*/.button-clear.sc-ion-button-ios-h{--border-width:0;--background:transparent;--color:var(--ion-color-primary, #3880ff)}/*!@:host(.button-block)*/.button-block.sc-ion-button-ios-h{display:block}/*!@:host(.button-block) .button-native*/.button-block.sc-ion-button-ios-h .button-native.sc-ion-button-ios{margin-left:0;margin-right:0;width:100%;clear:both;contain:content}/*!@:host(.button-block) .button-native::after*/.button-block.sc-ion-button-ios-h .button-native.sc-ion-button-ios::after{clear:both}/*!@:host(.button-full)*/.button-full.sc-ion-button-ios-h{display:block}/*!@:host(.button-full) .button-native*/.button-full.sc-ion-button-ios-h .button-native.sc-ion-button-ios{margin-left:0;margin-right:0;width:100%;contain:content}/*!@:host(.button-full:not(.button-round)) .button-native*/.button-full.sc-ion-button-ios-h:not(.button-round) .button-native.sc-ion-button-ios{border-radius:0;border-right-width:0;border-left-width:0}/*!@.button-native*/.button-native.sc-ion-button-ios{border-radius:var(--border-radius);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;width:100%;height:100%;min-height:inherit;-webkit-transition:var(--transition);transition:var(--transition);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);outline:none;background:var(--background);line-height:1;-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);contain:layout style;cursor:pointer;opacity:var(--opacity);overflow:var(--overflow);z-index:0;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;appearance:none}/*!@.button-native::-moz-focus-inner*/.button-native.sc-ion-button-ios::-moz-focus-inner{border:0}/*!@.button-inner*/.button-inner.sc-ion-button-ios{display:-ms-flexbox;display:flex;position:relative;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;z-index:1}/*!@::slotted([slot=start]),\n::slotted([slot=end])*/.sc-ion-button-ios-s>[slot=start],.sc-ion-button-ios-s>[slot=end]{-ms-flex-negative:0;flex-shrink:0}/*!@::slotted(ion-icon)*/.sc-ion-button-ios-s>ion-icon{font-size:1.35em;pointer-events:none}/*!@::slotted(ion-icon[slot=start])*/.sc-ion-button-ios-s>ion-icon[slot=start]{-webkit-margin-start:-0.3em;margin-inline-start:-0.3em;-webkit-margin-end:0.3em;margin-inline-end:0.3em;margin-top:0;margin-bottom:0}/*!@::slotted(ion-icon[slot=end])*/.sc-ion-button-ios-s>ion-icon[slot=end]{-webkit-margin-start:0.3em;margin-inline-start:0.3em;-webkit-margin-end:-0.2em;margin-inline-end:-0.2em;margin-top:0;margin-bottom:0}/*!@::slotted(ion-icon[slot=icon-only])*/.sc-ion-button-ios-s>ion-icon[slot=icon-only]{font-size:1.8em}/*!@ion-ripple-effect*/ion-ripple-effect.sc-ion-button-ios{color:var(--ripple-color)}/*!@.button-native::after*/.button-native.sc-ion-button-ios::after{left:0;right:0;top:0;bottom:0;position:absolute;content:\"\";opacity:0}/*!@:host(.ion-focused)*/.ion-focused.sc-ion-button-ios-h{color:var(--color-focused)}/*!@:host(.ion-focused) .button-native::after*/.ion-focused.sc-ion-button-ios-h .button-native.sc-ion-button-ios::after{background:var(--background-focused);opacity:var(--background-focused-opacity)}@media (any-hover: hover){/*!@:host(:hover)*/.sc-ion-button-ios-h:hover{color:var(--color-hover)}/*!@:host(:hover) .button-native::after*/.sc-ion-button-ios-h:hover .button-native.sc-ion-button-ios::after{background:var(--background-hover);opacity:var(--background-hover-opacity)}}/*!@:host(.ion-activated)*/.ion-activated.sc-ion-button-ios-h{color:var(--color-activated)}/*!@:host(.ion-activated) .button-native::after*/.ion-activated.sc-ion-button-ios-h .button-native.sc-ion-button-ios::after{background:var(--background-activated);opacity:var(--background-activated-opacity)}/*!@:host(.button-solid.ion-color) .button-native*/.button-solid.ion-color.sc-ion-button-ios-h .button-native.sc-ion-button-ios{background:var(--ion-color-base);color:var(--ion-color-contrast)}/*!@:host(.button-outline.ion-color) .button-native*/.button-outline.ion-color.sc-ion-button-ios-h .button-native.sc-ion-button-ios{border-color:var(--ion-color-base);background:transparent;color:var(--ion-color-base)}/*!@:host(.button-clear.ion-color) .button-native*/.button-clear.ion-color.sc-ion-button-ios-h .button-native.sc-ion-button-ios{background:transparent;color:var(--ion-color-base)}/*!@:host(.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native*/.in-toolbar.sc-ion-button-ios-h:not(.ion-color):not(.in-toolbar-color) .button-native.sc-ion-button-ios{color:var(--ion-toolbar-color, var(--color))}/*!@:host(.button-outline.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native*/.button-outline.in-toolbar.sc-ion-button-ios-h:not(.ion-color):not(.in-toolbar-color) .button-native.sc-ion-button-ios{border-color:var(--ion-toolbar-color, var(--color, var(--border-color)))}/*!@:host(.button-solid.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native*/.button-solid.in-toolbar.sc-ion-button-ios-h:not(.ion-color):not(.in-toolbar-color) .button-native.sc-ion-button-ios{background:var(--ion-toolbar-color, var(--background));color:var(--ion-toolbar-background, var(--color))}/*!@:host(.button-outline.ion-activated.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native*/.button-outline.ion-activated.in-toolbar.sc-ion-button-ios-h:not(.ion-color):not(.in-toolbar-color) .button-native.sc-ion-button-ios{background:var(--ion-toolbar-color, var(--color));color:var(--ion-toolbar-background, var(--background), var(--ion-color-primary-contrast, #fff))}/*!@:host*/.sc-ion-button-ios-h{--border-radius:14px;--padding-top:13px;--padding-bottom:13px;--padding-start:1em;--padding-end:1em;--transition:background-color, opacity 100ms linear;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;margin-top:4px;margin-bottom:4px;min-height:3.1em;font-size:min(1rem, 48px);font-weight:500;letter-spacing:0}/*!@:host(.button-solid)*/.button-solid.sc-ion-button-ios-h{--background-activated:var(--ion-color-primary-shade, #3171e0);--background-focused:var(--ion-color-primary-shade, #3171e0);--background-hover:var(--ion-color-primary-tint, #4c8dff);--background-activated-opacity:1;--background-focused-opacity:1;--background-hover-opacity:1}/*!@:host(.button-outline)*/.button-outline.sc-ion-button-ios-h{--border-radius:14px;--border-width:1px;--border-style:solid;--background-activated:var(--ion-color-primary, #3880ff);--background-focused:var(--ion-color-primary, #3880ff);--background-hover:transparent;--background-focused-opacity:.1;--color-activated:var(--ion-color-primary-contrast, #fff)}/*!@:host(.button-clear)*/.button-clear.sc-ion-button-ios-h{--background-activated:transparent;--background-activated-opacity:0;--background-focused:var(--ion-color-primary, #3880ff);--background-hover:transparent;--background-focused-opacity:.1;font-size:min(1.0625rem, 51px);font-weight:normal}/*!@:host(.in-buttons)*/.in-buttons.sc-ion-button-ios-h{font-size:clamp(17px, 1.0625rem, 21.08px);font-weight:400}/*!@:host(.button-large)*/.button-large.sc-ion-button-ios-h{--border-radius:16px;--padding-top:17px;--padding-start:1em;--padding-end:1em;--padding-bottom:17px;min-height:3.1em;font-size:min(1.25rem, 60px)}/*!@:host(.button-small)*/.button-small.sc-ion-button-ios-h{--border-radius:6px;--padding-top:4px;--padding-start:0.9em;--padding-end:0.9em;--padding-bottom:4px;min-height:2.1em;font-size:min(0.8125rem, 39px)}/*!@:host(.button-has-icon-only)*/.button-has-icon-only.sc-ion-button-ios-h{--padding-top:0;--padding-bottom:0}/*!@:host(.button-round)*/.button-round.sc-ion-button-ios-h{--border-radius:64px;--padding-top:0;--padding-start:26px;--padding-end:26px;--padding-bottom:0}/*!@:host(.button-strong)*/.button-strong.sc-ion-button-ios-h{font-weight:600}/*!@:host(.button-outline.ion-focused.ion-color) .button-native,\n:host(.button-clear.ion-focused.ion-color) .button-native*/.button-outline.ion-focused.ion-color.sc-ion-button-ios-h .button-native.sc-ion-button-ios,.button-clear.ion-focused.ion-color.sc-ion-button-ios-h .button-native.sc-ion-button-ios{color:var(--ion-color-base)}/*!@:host(.button-outline.ion-focused.ion-color) .button-native::after,\n:host(.button-clear.ion-focused.ion-color) .button-native::after*/.button-outline.ion-focused.ion-color.sc-ion-button-ios-h .button-native.sc-ion-button-ios::after,.button-clear.ion-focused.ion-color.sc-ion-button-ios-h .button-native.sc-ion-button-ios::after{background:var(--ion-color-base)}/*!@:host(.button-solid.ion-color.ion-focused) .button-native::after*/.button-solid.ion-color.ion-focused.sc-ion-button-ios-h .button-native.sc-ion-button-ios::after{background:var(--ion-color-shade)}@media (any-hover: hover){/*!@:host(.button-clear:not(.ion-activated):hover),\n :host(.button-outline:not(.ion-activated):hover)*/.button-clear.sc-ion-button-ios-h:not(.ion-activated):hover,.button-outline.sc-ion-button-ios-h:not(.ion-activated):hover{opacity:0.6}/*!@:host(.button-clear.ion-color:hover) .button-native,\n :host(.button-outline.ion-color:hover) .button-native*/.button-clear.ion-color.sc-ion-button-ios-h:hover .button-native.sc-ion-button-ios,.button-outline.ion-color.sc-ion-button-ios-h:hover .button-native.sc-ion-button-ios{color:var(--ion-color-base)}/*!@:host(.button-clear.ion-color:hover) .button-native::after,\n :host(.button-outline.ion-color:hover) .button-native::after*/.button-clear.ion-color.sc-ion-button-ios-h:hover .button-native.sc-ion-button-ios::after,.button-outline.ion-color.sc-ion-button-ios-h:hover .button-native.sc-ion-button-ios::after{background:transparent}/*!@:host(.button-solid.ion-color:hover) .button-native::after*/.button-solid.ion-color.sc-ion-button-ios-h:hover .button-native.sc-ion-button-ios::after{background:var(--ion-color-tint)}/*!@:host(:hover.button-solid.in-toolbar:not(.ion-color):not(.in-toolbar-color):not(.ion-activated)) .button-native::after*/.sc-ion-button-ios-h:hover.button-solid.in-toolbar:not(.ion-color):not(.in-toolbar-color):not(.ion-activated) .button-native.sc-ion-button-ios::after{background:#fff;opacity:0.1}}/*!@:host(.button-clear.ion-activated)*/.button-clear.ion-activated.sc-ion-button-ios-h{opacity:0.4}/*!@:host(.button-outline.ion-activated.ion-color) .button-native*/.button-outline.ion-activated.ion-color.sc-ion-button-ios-h .button-native.sc-ion-button-ios{color:var(--ion-color-contrast)}/*!@:host(.button-outline.ion-activated.ion-color) .button-native::after*/.button-outline.ion-activated.ion-color.sc-ion-button-ios-h .button-native.sc-ion-button-ios::after{background:var(--ion-color-base)}/*!@:host(.button-solid.ion-color.ion-activated) .button-native::after*/.button-solid.ion-color.ion-activated.sc-ion-button-ios-h .button-native.sc-ion-button-ios::after{background:var(--ion-color-shade)}";
11527
+ const buttonIosCss = "/*!@:host*/.sc-ion-button-ios-h{--overflow:hidden;--ripple-color:currentColor;--border-width:initial;--border-color:initial;--border-style:initial;--color-activated:var(--color);--color-focused:var(--color);--color-hover:var(--color);--box-shadow:none;display:inline-block;width:auto;color:var(--color);font-family:var(--ion-font-family, inherit);text-align:center;text-decoration:none;white-space:normal;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:top;vertical-align:-webkit-baseline-middle;-webkit-font-kerning:none;font-kerning:none}/*!@:host(.button-disabled)*/.button-disabled.sc-ion-button-ios-h{cursor:default;opacity:0.5;pointer-events:none}/*!@:host(.button-solid)*/.button-solid.sc-ion-button-ios-h{--background:var(--ion-color-primary, #3880ff);--color:var(--ion-color-primary-contrast, #fff)}/*!@:host(.button-outline)*/.button-outline.sc-ion-button-ios-h{--border-color:var(--ion-color-primary, #3880ff);--background:transparent;--color:var(--ion-color-primary, #3880ff)}/*!@:host(.button-clear)*/.button-clear.sc-ion-button-ios-h{--border-width:0;--background:transparent;--color:var(--ion-color-primary, #3880ff)}/*!@:host(.button-block)*/.button-block.sc-ion-button-ios-h{display:block}/*!@:host(.button-block) .button-native*/.button-block.sc-ion-button-ios-h .button-native.sc-ion-button-ios{margin-left:0;margin-right:0;width:100%;clear:both;contain:content}/*!@:host(.button-block) .button-native::after*/.button-block.sc-ion-button-ios-h .button-native.sc-ion-button-ios::after{clear:both}/*!@:host(.button-full)*/.button-full.sc-ion-button-ios-h{display:block}/*!@:host(.button-full) .button-native*/.button-full.sc-ion-button-ios-h .button-native.sc-ion-button-ios{margin-left:0;margin-right:0;width:100%;contain:content}/*!@:host(.button-full:not(.button-round)) .button-native*/.button-full.sc-ion-button-ios-h:not(.button-round) .button-native.sc-ion-button-ios{border-radius:0;border-right-width:0;border-left-width:0}/*!@.button-native*/.button-native.sc-ion-button-ios{border-radius:var(--border-radius);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;width:100%;height:100%;min-height:inherit;-webkit-transition:var(--transition);transition:var(--transition);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);outline:none;background:var(--background);line-height:1;-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);contain:layout style;cursor:pointer;opacity:var(--opacity);overflow:var(--overflow);z-index:0;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;appearance:none}/*!@.button-native::-moz-focus-inner*/.button-native.sc-ion-button-ios::-moz-focus-inner{border:0}/*!@.button-inner*/.button-inner.sc-ion-button-ios{display:-ms-flexbox;display:flex;position:relative;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;z-index:1}/*!@::slotted([slot=start]),\n::slotted([slot=end])*/.sc-ion-button-ios-s>[slot=start],.sc-ion-button-ios-s>[slot=end]{-ms-flex-negative:0;flex-shrink:0}/*!@::slotted(ion-icon)*/.sc-ion-button-ios-s>ion-icon{font-size:1.35em;pointer-events:none}/*!@::slotted(ion-icon[slot=start])*/.sc-ion-button-ios-s>ion-icon[slot=start]{-webkit-margin-start:-0.3em;margin-inline-start:-0.3em;-webkit-margin-end:0.3em;margin-inline-end:0.3em;margin-top:0;margin-bottom:0}/*!@::slotted(ion-icon[slot=end])*/.sc-ion-button-ios-s>ion-icon[slot=end]{-webkit-margin-start:0.3em;margin-inline-start:0.3em;-webkit-margin-end:-0.2em;margin-inline-end:-0.2em;margin-top:0;margin-bottom:0}/*!@::slotted(ion-icon[slot=icon-only])*/.sc-ion-button-ios-s>ion-icon[slot=icon-only]{font-size:1.8em}/*!@ion-ripple-effect*/ion-ripple-effect.sc-ion-button-ios{color:var(--ripple-color)}/*!@.button-native::after*/.button-native.sc-ion-button-ios::after{left:0;right:0;top:0;bottom:0;position:absolute;content:\"\";opacity:0}/*!@:host(.ion-focused)*/.ion-focused.sc-ion-button-ios-h{color:var(--color-focused)}/*!@:host(.ion-focused) .button-native::after*/.ion-focused.sc-ion-button-ios-h .button-native.sc-ion-button-ios::after{background:var(--background-focused);opacity:var(--background-focused-opacity)}@media (any-hover: hover){/*!@:host(:hover)*/.sc-ion-button-ios-h:hover{color:var(--color-hover)}/*!@:host(:hover) .button-native::after*/.sc-ion-button-ios-h:hover .button-native.sc-ion-button-ios::after{background:var(--background-hover);opacity:var(--background-hover-opacity)}}/*!@:host(.ion-activated)*/.ion-activated.sc-ion-button-ios-h{color:var(--color-activated)}/*!@:host(.ion-activated) .button-native::after*/.ion-activated.sc-ion-button-ios-h .button-native.sc-ion-button-ios::after{background:var(--background-activated);opacity:var(--background-activated-opacity)}/*!@:host(.button-solid.ion-color) .button-native*/.button-solid.ion-color.sc-ion-button-ios-h .button-native.sc-ion-button-ios{background:var(--ion-color-base);color:var(--ion-color-contrast)}/*!@:host(.button-outline.ion-color) .button-native*/.button-outline.ion-color.sc-ion-button-ios-h .button-native.sc-ion-button-ios{border-color:var(--ion-color-base);background:transparent;color:var(--ion-color-base)}/*!@:host(.button-clear.ion-color) .button-native*/.button-clear.ion-color.sc-ion-button-ios-h .button-native.sc-ion-button-ios{background:transparent;color:var(--ion-color-base)}/*!@:host(.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native*/.in-toolbar.sc-ion-button-ios-h:not(.ion-color):not(.in-toolbar-color) .button-native.sc-ion-button-ios{color:var(--ion-toolbar-color, var(--color))}/*!@:host(.button-outline.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native*/.button-outline.in-toolbar.sc-ion-button-ios-h:not(.ion-color):not(.in-toolbar-color) .button-native.sc-ion-button-ios{border-color:var(--ion-toolbar-color, var(--color, var(--border-color)))}/*!@:host(.button-solid.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native*/.button-solid.in-toolbar.sc-ion-button-ios-h:not(.ion-color):not(.in-toolbar-color) .button-native.sc-ion-button-ios{background:var(--ion-toolbar-color, var(--background));color:var(--ion-toolbar-background, var(--color))}/*!@:host(.button-outline.ion-activated.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native*/.button-outline.ion-activated.in-toolbar.sc-ion-button-ios-h:not(.ion-color):not(.in-toolbar-color) .button-native.sc-ion-button-ios{background:var(--ion-toolbar-color, var(--color));color:var(--ion-toolbar-background, var(--background), var(--ion-color-primary-contrast, #fff))}/*!@:host*/.sc-ion-button-ios-h{--border-radius:14px;--padding-top:13px;--padding-bottom:13px;--padding-start:1em;--padding-end:1em;--transition:background-color, opacity 100ms linear;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;margin-top:4px;margin-bottom:4px;min-height:3.1em;font-size:min(1rem, 48px);font-weight:500;letter-spacing:0}/*!@:host(.button-solid)*/.button-solid.sc-ion-button-ios-h{--background-activated:var(--ion-color-primary-shade, #3171e0);--background-focused:var(--ion-color-primary-shade, #3171e0);--background-hover:var(--ion-color-primary-tint, #4c8dff);--background-activated-opacity:1;--background-focused-opacity:1;--background-hover-opacity:1}/*!@:host(.button-outline)*/.button-outline.sc-ion-button-ios-h{--border-radius:14px;--border-width:1px;--border-style:solid;--background-activated:var(--ion-color-primary, #3880ff);--background-focused:var(--ion-color-primary, #3880ff);--background-hover:transparent;--background-focused-opacity:.1;--color-activated:var(--ion-color-primary-contrast, #fff)}/*!@:host(.button-clear)*/.button-clear.sc-ion-button-ios-h{--background-activated:transparent;--background-activated-opacity:0;--background-focused:var(--ion-color-primary, #3880ff);--background-hover:transparent;--background-focused-opacity:.1;font-size:min(1.0625rem, 51px);font-weight:normal}/*!@:host(.in-buttons)*/.in-buttons.sc-ion-button-ios-h{font-size:clamp(17px, 1.0625rem, 21.08px);font-weight:400}/*!@:host(.button-large)*/.button-large.sc-ion-button-ios-h{--border-radius:16px;--padding-top:17px;--padding-start:1em;--padding-end:1em;--padding-bottom:17px;min-height:3.1em;font-size:min(1.25rem, 60px)}/*!@:host(.button-small)*/.button-small.sc-ion-button-ios-h{--border-radius:6px;--padding-top:4px;--padding-start:0.9em;--padding-end:0.9em;--padding-bottom:4px;min-height:2.1em;font-size:min(0.8125rem, 39px)}/*!@:host(.button-has-icon-only)*/.button-has-icon-only.sc-ion-button-ios-h{--padding-top:0;--padding-bottom:0}/*!@:host(.button-round)*/.button-round.sc-ion-button-ios-h{--border-radius:64px;--padding-top:0;--padding-start:26px;--padding-end:26px;--padding-bottom:0}/*!@:host(.button-strong)*/.button-strong.sc-ion-button-ios-h{font-weight:600}/*!@:host(.button-outline.ion-focused.ion-color) .button-native,\n:host(.button-clear.ion-focused.ion-color) .button-native*/.button-outline.ion-focused.ion-color.sc-ion-button-ios-h .button-native.sc-ion-button-ios,.button-clear.ion-focused.ion-color.sc-ion-button-ios-h .button-native.sc-ion-button-ios{color:var(--ion-color-base)}/*!@:host(.button-outline.ion-focused.ion-color) .button-native::after,\n:host(.button-clear.ion-focused.ion-color) .button-native::after*/.button-outline.ion-focused.ion-color.sc-ion-button-ios-h .button-native.sc-ion-button-ios::after,.button-clear.ion-focused.ion-color.sc-ion-button-ios-h .button-native.sc-ion-button-ios::after{background:var(--ion-color-base)}/*!@:host(.button-solid.ion-color.ion-focused) .button-native::after*/.button-solid.ion-color.ion-focused.sc-ion-button-ios-h .button-native.sc-ion-button-ios::after{background:var(--ion-color-shade)}@media (any-hover: hover){/*!@:host(.button-clear:not(.ion-activated):hover),\n :host(.button-outline:not(.ion-activated):hover)*/.button-clear.sc-ion-button-ios-h:not(.ion-activated):hover,.button-outline.sc-ion-button-ios-h:not(.ion-activated):hover{opacity:0.6}/*!@:host(.button-clear.ion-color:hover) .button-native,\n :host(.button-outline.ion-color:hover) .button-native*/.button-clear.ion-color.sc-ion-button-ios-h:hover .button-native.sc-ion-button-ios,.button-outline.ion-color.sc-ion-button-ios-h:hover .button-native.sc-ion-button-ios{color:var(--ion-color-base)}/*!@:host(.button-clear.ion-color:hover) .button-native::after,\n :host(.button-outline.ion-color:hover) .button-native::after*/.button-clear.ion-color.sc-ion-button-ios-h:hover .button-native.sc-ion-button-ios::after,.button-outline.ion-color.sc-ion-button-ios-h:hover .button-native.sc-ion-button-ios::after{background:transparent}/*!@:host(.button-solid.ion-color:hover) .button-native::after*/.button-solid.ion-color.sc-ion-button-ios-h:hover .button-native.sc-ion-button-ios::after{background:var(--ion-color-tint)}/*!@:host(:hover.button-solid.in-toolbar:not(.ion-color):not(.in-toolbar-color):not(.ion-activated)) .button-native::after*/.sc-ion-button-ios-h:hover.button-solid.in-toolbar:not(.ion-color):not(.in-toolbar-color):not(.ion-activated) .button-native.sc-ion-button-ios::after{background:#fff;opacity:0.1}}/*!@:host(.button-clear.ion-activated)*/.button-clear.ion-activated.sc-ion-button-ios-h{opacity:0.4}/*!@:host(.button-outline.ion-activated.ion-color) .button-native*/.button-outline.ion-activated.ion-color.sc-ion-button-ios-h .button-native.sc-ion-button-ios{color:var(--ion-color-contrast)}/*!@:host(.button-outline.ion-activated.ion-color) .button-native::after*/.button-outline.ion-activated.ion-color.sc-ion-button-ios-h .button-native.sc-ion-button-ios::after{background:var(--ion-color-base)}/*!@:host(.button-solid.ion-color.ion-activated) .button-native::after*/.button-solid.ion-color.ion-activated.sc-ion-button-ios-h .button-native.sc-ion-button-ios::after{background:var(--ion-color-shade)}";
11536
11528
 
11537
- const buttonMdCss = "/*!@:host*/.sc-ion-button-md-h{--overflow:hidden;--ripple-color:currentColor;--border-width:initial;--border-color:initial;--border-style:initial;--color-activated:var(--color);--color-focused:var(--color);--color-hover:var(--color);--box-shadow:none;display:inline-block;width:auto;color:var(--color);font-family:var(--ion-font-family, inherit);text-align:center;text-decoration:none;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:top;vertical-align:-webkit-baseline-middle;-webkit-font-kerning:none;font-kerning:none}/*!@:host(.button-disabled)*/.button-disabled.sc-ion-button-md-h{cursor:default;opacity:0.5;pointer-events:none}/*!@:host(.button-solid)*/.button-solid.sc-ion-button-md-h{--background:var(--ion-color-primary, #3880ff);--color:var(--ion-color-primary-contrast, #fff)}/*!@:host(.button-outline)*/.button-outline.sc-ion-button-md-h{--border-color:var(--ion-color-primary, #3880ff);--background:transparent;--color:var(--ion-color-primary, #3880ff)}/*!@:host(.button-clear)*/.button-clear.sc-ion-button-md-h{--border-width:0;--background:transparent;--color:var(--ion-color-primary, #3880ff)}/*!@:host(.button-block)*/.button-block.sc-ion-button-md-h{display:block}/*!@:host(.button-block) .button-native*/.button-block.sc-ion-button-md-h .button-native.sc-ion-button-md{margin-left:0;margin-right:0;width:100%;clear:both;contain:content}/*!@:host(.button-block) .button-native::after*/.button-block.sc-ion-button-md-h .button-native.sc-ion-button-md::after{clear:both}/*!@:host(.button-full)*/.button-full.sc-ion-button-md-h{display:block}/*!@:host(.button-full) .button-native*/.button-full.sc-ion-button-md-h .button-native.sc-ion-button-md{margin-left:0;margin-right:0;width:100%;contain:content}/*!@:host(.button-full:not(.button-round)) .button-native*/.button-full.sc-ion-button-md-h:not(.button-round) .button-native.sc-ion-button-md{border-radius:0;border-right-width:0;border-left-width:0}/*!@.button-native*/.button-native.sc-ion-button-md{border-radius:var(--border-radius);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;width:100%;height:100%;min-height:inherit;-webkit-transition:var(--transition);transition:var(--transition);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);outline:none;background:var(--background);line-height:1;-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);contain:layout style;cursor:pointer;opacity:var(--opacity);overflow:var(--overflow);z-index:0;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;appearance:none}/*!@.button-native::-moz-focus-inner*/.button-native.sc-ion-button-md::-moz-focus-inner{border:0}/*!@.button-inner*/.button-inner.sc-ion-button-md{display:-ms-flexbox;display:flex;position:relative;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;z-index:1}/*!@::slotted([slot=start]),\n::slotted([slot=end])*/.sc-ion-button-md-s>[slot=start],.sc-ion-button-md-s>[slot=end]{-ms-flex-negative:0;flex-shrink:0}/*!@::slotted(ion-icon)*/.sc-ion-button-md-s>ion-icon{font-size:1.35em;pointer-events:none}/*!@::slotted(ion-icon[slot=start])*/.sc-ion-button-md-s>ion-icon[slot=start]{-webkit-margin-start:-0.3em;margin-inline-start:-0.3em;-webkit-margin-end:0.3em;margin-inline-end:0.3em;margin-top:0;margin-bottom:0}/*!@::slotted(ion-icon[slot=end])*/.sc-ion-button-md-s>ion-icon[slot=end]{-webkit-margin-start:0.3em;margin-inline-start:0.3em;-webkit-margin-end:-0.2em;margin-inline-end:-0.2em;margin-top:0;margin-bottom:0}/*!@::slotted(ion-icon[slot=icon-only])*/.sc-ion-button-md-s>ion-icon[slot=icon-only]{font-size:1.8em}/*!@ion-ripple-effect*/ion-ripple-effect.sc-ion-button-md{color:var(--ripple-color)}/*!@.button-native::after*/.button-native.sc-ion-button-md::after{left:0;right:0;top:0;bottom:0;position:absolute;content:\"\";opacity:0}/*!@:host(.ion-focused)*/.ion-focused.sc-ion-button-md-h{color:var(--color-focused)}/*!@:host(.ion-focused) .button-native::after*/.ion-focused.sc-ion-button-md-h .button-native.sc-ion-button-md::after{background:var(--background-focused);opacity:var(--background-focused-opacity)}@media (any-hover: hover){/*!@:host(:hover)*/.sc-ion-button-md-h:hover{color:var(--color-hover)}/*!@:host(:hover) .button-native::after*/.sc-ion-button-md-h:hover .button-native.sc-ion-button-md::after{background:var(--background-hover);opacity:var(--background-hover-opacity)}}/*!@:host(.ion-activated)*/.ion-activated.sc-ion-button-md-h{color:var(--color-activated)}/*!@:host(.ion-activated) .button-native::after*/.ion-activated.sc-ion-button-md-h .button-native.sc-ion-button-md::after{background:var(--background-activated);opacity:var(--background-activated-opacity)}/*!@:host(.button-solid.ion-color) .button-native*/.button-solid.ion-color.sc-ion-button-md-h .button-native.sc-ion-button-md{background:var(--ion-color-base);color:var(--ion-color-contrast)}/*!@:host(.button-outline.ion-color) .button-native*/.button-outline.ion-color.sc-ion-button-md-h .button-native.sc-ion-button-md{border-color:var(--ion-color-base);background:transparent;color:var(--ion-color-base)}/*!@:host(.button-clear.ion-color) .button-native*/.button-clear.ion-color.sc-ion-button-md-h .button-native.sc-ion-button-md{background:transparent;color:var(--ion-color-base)}/*!@:host(.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native*/.in-toolbar.sc-ion-button-md-h:not(.ion-color):not(.in-toolbar-color) .button-native.sc-ion-button-md{color:var(--ion-toolbar-color, var(--color))}/*!@:host(.button-outline.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native*/.button-outline.in-toolbar.sc-ion-button-md-h:not(.ion-color):not(.in-toolbar-color) .button-native.sc-ion-button-md{border-color:var(--ion-toolbar-color, var(--color, var(--border-color)))}/*!@:host(.button-solid.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native*/.button-solid.in-toolbar.sc-ion-button-md-h:not(.ion-color):not(.in-toolbar-color) .button-native.sc-ion-button-md{background:var(--ion-toolbar-color, var(--background));color:var(--ion-toolbar-background, var(--color))}/*!@:host(.button-outline.ion-activated.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native*/.button-outline.ion-activated.in-toolbar.sc-ion-button-md-h:not(.ion-color):not(.in-toolbar-color) .button-native.sc-ion-button-md{background:var(--ion-toolbar-color, var(--color));color:var(--ion-toolbar-background, var(--background), var(--ion-color-primary-contrast, #fff))}/*!@:host*/.sc-ion-button-md-h{--border-radius:4px;--padding-top:8px;--padding-bottom:8px;--padding-start:1.1em;--padding-end:1.1em;--transition:box-shadow 280ms cubic-bezier(.4, 0, .2, 1),\n background-color 15ms linear,\n color 15ms linear;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;margin-top:4px;margin-bottom:4px;min-height:36px;font-size:0.875rem;font-weight:500;letter-spacing:0.06em;text-transform:uppercase}/*!@:host(.button-solid)*/.button-solid.sc-ion-button-md-h{--background-activated:transparent;--background-hover:var(--ion-color-primary-contrast, #fff);--background-focused:var(--ion-color-primary-contrast, #fff);--background-activated-opacity:0;--background-focused-opacity:.24;--background-hover-opacity:.08;--box-shadow:0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12)}/*!@:host(.button-solid.ion-activated)*/.button-solid.ion-activated.sc-ion-button-md-h{--box-shadow:0 5px 5px -3px rgba(0, 0, 0, 0.2), 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12)}/*!@:host(.button-outline)*/.button-outline.sc-ion-button-md-h{--border-width:2px;--border-style:solid;--box-shadow:none;--background-activated:transparent;--background-focused:var(--ion-color-primary, #3880ff);--background-hover:var(--ion-color-primary, #3880ff);--background-activated-opacity:0;--background-focused-opacity:.12;--background-hover-opacity:.04}/*!@:host(.button-outline.ion-activated.ion-color) .button-native*/.button-outline.ion-activated.ion-color.sc-ion-button-md-h .button-native.sc-ion-button-md{background:transparent}/*!@:host(.button-clear)*/.button-clear.sc-ion-button-md-h{--background-activated:transparent;--background-focused:var(--ion-color-primary, #3880ff);--background-hover:var(--ion-color-primary, #3880ff);--background-activated-opacity:0;--background-focused-opacity:.12;--background-hover-opacity:.04}/*!@:host(.button-round)*/.button-round.sc-ion-button-md-h{--border-radius:64px;--padding-top:0;--padding-start:26px;--padding-end:26px;--padding-bottom:0}/*!@:host(.button-large)*/.button-large.sc-ion-button-md-h{--padding-top:14px;--padding-start:1em;--padding-end:1em;--padding-bottom:14px;min-height:2.8em;font-size:1.25rem}/*!@:host(.button-small)*/.button-small.sc-ion-button-md-h{--padding-top:4px;--padding-start:0.9em;--padding-end:0.9em;--padding-bottom:4px;min-height:2.1em;font-size:0.8125rem}/*!@:host(.button-has-icon-only)*/.button-has-icon-only.sc-ion-button-md-h{--padding-top:0;--padding-bottom:0}/*!@:host(.button-strong)*/.button-strong.sc-ion-button-md-h{font-weight:bold}/*!@::slotted(ion-icon[slot=icon-only])*/.sc-ion-button-md-s>ion-icon[slot=icon-only]{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}/*!@:host(.button-solid.ion-color.ion-focused) .button-native::after*/.button-solid.ion-color.ion-focused.sc-ion-button-md-h .button-native.sc-ion-button-md::after{background:var(--ion-color-contrast)}/*!@:host(.button-clear.ion-color.ion-focused) .button-native::after,\n:host(.button-outline.ion-color.ion-focused) .button-native::after*/.button-clear.ion-color.ion-focused.sc-ion-button-md-h .button-native.sc-ion-button-md::after,.button-outline.ion-color.ion-focused.sc-ion-button-md-h .button-native.sc-ion-button-md::after{background:var(--ion-color-base)}@media (any-hover: hover){/*!@:host(.button-solid.ion-color:hover) .button-native::after*/.button-solid.ion-color.sc-ion-button-md-h:hover .button-native.sc-ion-button-md::after{background:var(--ion-color-contrast)}/*!@:host(.button-clear.ion-color:hover) .button-native::after,\n :host(.button-outline.ion-color:hover) .button-native::after*/.button-clear.ion-color.sc-ion-button-md-h:hover .button-native.sc-ion-button-md::after,.button-outline.ion-color.sc-ion-button-md-h:hover .button-native.sc-ion-button-md::after{background:var(--ion-color-base)}}";
11529
+ const buttonMdCss = "/*!@:host*/.sc-ion-button-md-h{--overflow:hidden;--ripple-color:currentColor;--border-width:initial;--border-color:initial;--border-style:initial;--color-activated:var(--color);--color-focused:var(--color);--color-hover:var(--color);--box-shadow:none;display:inline-block;width:auto;color:var(--color);font-family:var(--ion-font-family, inherit);text-align:center;text-decoration:none;white-space:normal;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:top;vertical-align:-webkit-baseline-middle;-webkit-font-kerning:none;font-kerning:none}/*!@:host(.button-disabled)*/.button-disabled.sc-ion-button-md-h{cursor:default;opacity:0.5;pointer-events:none}/*!@:host(.button-solid)*/.button-solid.sc-ion-button-md-h{--background:var(--ion-color-primary, #3880ff);--color:var(--ion-color-primary-contrast, #fff)}/*!@:host(.button-outline)*/.button-outline.sc-ion-button-md-h{--border-color:var(--ion-color-primary, #3880ff);--background:transparent;--color:var(--ion-color-primary, #3880ff)}/*!@:host(.button-clear)*/.button-clear.sc-ion-button-md-h{--border-width:0;--background:transparent;--color:var(--ion-color-primary, #3880ff)}/*!@:host(.button-block)*/.button-block.sc-ion-button-md-h{display:block}/*!@:host(.button-block) .button-native*/.button-block.sc-ion-button-md-h .button-native.sc-ion-button-md{margin-left:0;margin-right:0;width:100%;clear:both;contain:content}/*!@:host(.button-block) .button-native::after*/.button-block.sc-ion-button-md-h .button-native.sc-ion-button-md::after{clear:both}/*!@:host(.button-full)*/.button-full.sc-ion-button-md-h{display:block}/*!@:host(.button-full) .button-native*/.button-full.sc-ion-button-md-h .button-native.sc-ion-button-md{margin-left:0;margin-right:0;width:100%;contain:content}/*!@:host(.button-full:not(.button-round)) .button-native*/.button-full.sc-ion-button-md-h:not(.button-round) .button-native.sc-ion-button-md{border-radius:0;border-right-width:0;border-left-width:0}/*!@.button-native*/.button-native.sc-ion-button-md{border-radius:var(--border-radius);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;width:100%;height:100%;min-height:inherit;-webkit-transition:var(--transition);transition:var(--transition);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);outline:none;background:var(--background);line-height:1;-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);contain:layout style;cursor:pointer;opacity:var(--opacity);overflow:var(--overflow);z-index:0;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;appearance:none}/*!@.button-native::-moz-focus-inner*/.button-native.sc-ion-button-md::-moz-focus-inner{border:0}/*!@.button-inner*/.button-inner.sc-ion-button-md{display:-ms-flexbox;display:flex;position:relative;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;z-index:1}/*!@::slotted([slot=start]),\n::slotted([slot=end])*/.sc-ion-button-md-s>[slot=start],.sc-ion-button-md-s>[slot=end]{-ms-flex-negative:0;flex-shrink:0}/*!@::slotted(ion-icon)*/.sc-ion-button-md-s>ion-icon{font-size:1.35em;pointer-events:none}/*!@::slotted(ion-icon[slot=start])*/.sc-ion-button-md-s>ion-icon[slot=start]{-webkit-margin-start:-0.3em;margin-inline-start:-0.3em;-webkit-margin-end:0.3em;margin-inline-end:0.3em;margin-top:0;margin-bottom:0}/*!@::slotted(ion-icon[slot=end])*/.sc-ion-button-md-s>ion-icon[slot=end]{-webkit-margin-start:0.3em;margin-inline-start:0.3em;-webkit-margin-end:-0.2em;margin-inline-end:-0.2em;margin-top:0;margin-bottom:0}/*!@::slotted(ion-icon[slot=icon-only])*/.sc-ion-button-md-s>ion-icon[slot=icon-only]{font-size:1.8em}/*!@ion-ripple-effect*/ion-ripple-effect.sc-ion-button-md{color:var(--ripple-color)}/*!@.button-native::after*/.button-native.sc-ion-button-md::after{left:0;right:0;top:0;bottom:0;position:absolute;content:\"\";opacity:0}/*!@:host(.ion-focused)*/.ion-focused.sc-ion-button-md-h{color:var(--color-focused)}/*!@:host(.ion-focused) .button-native::after*/.ion-focused.sc-ion-button-md-h .button-native.sc-ion-button-md::after{background:var(--background-focused);opacity:var(--background-focused-opacity)}@media (any-hover: hover){/*!@:host(:hover)*/.sc-ion-button-md-h:hover{color:var(--color-hover)}/*!@:host(:hover) .button-native::after*/.sc-ion-button-md-h:hover .button-native.sc-ion-button-md::after{background:var(--background-hover);opacity:var(--background-hover-opacity)}}/*!@:host(.ion-activated)*/.ion-activated.sc-ion-button-md-h{color:var(--color-activated)}/*!@:host(.ion-activated) .button-native::after*/.ion-activated.sc-ion-button-md-h .button-native.sc-ion-button-md::after{background:var(--background-activated);opacity:var(--background-activated-opacity)}/*!@:host(.button-solid.ion-color) .button-native*/.button-solid.ion-color.sc-ion-button-md-h .button-native.sc-ion-button-md{background:var(--ion-color-base);color:var(--ion-color-contrast)}/*!@:host(.button-outline.ion-color) .button-native*/.button-outline.ion-color.sc-ion-button-md-h .button-native.sc-ion-button-md{border-color:var(--ion-color-base);background:transparent;color:var(--ion-color-base)}/*!@:host(.button-clear.ion-color) .button-native*/.button-clear.ion-color.sc-ion-button-md-h .button-native.sc-ion-button-md{background:transparent;color:var(--ion-color-base)}/*!@:host(.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native*/.in-toolbar.sc-ion-button-md-h:not(.ion-color):not(.in-toolbar-color) .button-native.sc-ion-button-md{color:var(--ion-toolbar-color, var(--color))}/*!@:host(.button-outline.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native*/.button-outline.in-toolbar.sc-ion-button-md-h:not(.ion-color):not(.in-toolbar-color) .button-native.sc-ion-button-md{border-color:var(--ion-toolbar-color, var(--color, var(--border-color)))}/*!@:host(.button-solid.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native*/.button-solid.in-toolbar.sc-ion-button-md-h:not(.ion-color):not(.in-toolbar-color) .button-native.sc-ion-button-md{background:var(--ion-toolbar-color, var(--background));color:var(--ion-toolbar-background, var(--color))}/*!@:host(.button-outline.ion-activated.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native*/.button-outline.ion-activated.in-toolbar.sc-ion-button-md-h:not(.ion-color):not(.in-toolbar-color) .button-native.sc-ion-button-md{background:var(--ion-toolbar-color, var(--color));color:var(--ion-toolbar-background, var(--background), var(--ion-color-primary-contrast, #fff))}/*!@:host*/.sc-ion-button-md-h{--border-radius:4px;--padding-top:8px;--padding-bottom:8px;--padding-start:1.1em;--padding-end:1.1em;--transition:box-shadow 280ms cubic-bezier(.4, 0, .2, 1),\n background-color 15ms linear,\n color 15ms linear;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;margin-top:4px;margin-bottom:4px;min-height:36px;font-size:0.875rem;font-weight:500;letter-spacing:0.06em;text-transform:uppercase}/*!@:host(.button-solid)*/.button-solid.sc-ion-button-md-h{--background-activated:transparent;--background-hover:var(--ion-color-primary-contrast, #fff);--background-focused:var(--ion-color-primary-contrast, #fff);--background-activated-opacity:0;--background-focused-opacity:.24;--background-hover-opacity:.08;--box-shadow:0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12)}/*!@:host(.button-solid.ion-activated)*/.button-solid.ion-activated.sc-ion-button-md-h{--box-shadow:0 5px 5px -3px rgba(0, 0, 0, 0.2), 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12)}/*!@:host(.button-outline)*/.button-outline.sc-ion-button-md-h{--border-width:2px;--border-style:solid;--box-shadow:none;--background-activated:transparent;--background-focused:var(--ion-color-primary, #3880ff);--background-hover:var(--ion-color-primary, #3880ff);--background-activated-opacity:0;--background-focused-opacity:.12;--background-hover-opacity:.04}/*!@:host(.button-outline.ion-activated.ion-color) .button-native*/.button-outline.ion-activated.ion-color.sc-ion-button-md-h .button-native.sc-ion-button-md{background:transparent}/*!@:host(.button-clear)*/.button-clear.sc-ion-button-md-h{--background-activated:transparent;--background-focused:var(--ion-color-primary, #3880ff);--background-hover:var(--ion-color-primary, #3880ff);--background-activated-opacity:0;--background-focused-opacity:.12;--background-hover-opacity:.04}/*!@:host(.button-round)*/.button-round.sc-ion-button-md-h{--border-radius:64px;--padding-top:0;--padding-start:26px;--padding-end:26px;--padding-bottom:0}/*!@:host(.button-large)*/.button-large.sc-ion-button-md-h{--padding-top:14px;--padding-start:1em;--padding-end:1em;--padding-bottom:14px;min-height:2.8em;font-size:1.25rem}/*!@:host(.button-small)*/.button-small.sc-ion-button-md-h{--padding-top:4px;--padding-start:0.9em;--padding-end:0.9em;--padding-bottom:4px;min-height:2.1em;font-size:0.8125rem}/*!@:host(.button-has-icon-only)*/.button-has-icon-only.sc-ion-button-md-h{--padding-top:0;--padding-bottom:0}/*!@:host(.button-strong)*/.button-strong.sc-ion-button-md-h{font-weight:bold}/*!@::slotted(ion-icon[slot=icon-only])*/.sc-ion-button-md-s>ion-icon[slot=icon-only]{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}/*!@:host(.button-solid.ion-color.ion-focused) .button-native::after*/.button-solid.ion-color.ion-focused.sc-ion-button-md-h .button-native.sc-ion-button-md::after{background:var(--ion-color-contrast)}/*!@:host(.button-clear.ion-color.ion-focused) .button-native::after,\n:host(.button-outline.ion-color.ion-focused) .button-native::after*/.button-clear.ion-color.ion-focused.sc-ion-button-md-h .button-native.sc-ion-button-md::after,.button-outline.ion-color.ion-focused.sc-ion-button-md-h .button-native.sc-ion-button-md::after{background:var(--ion-color-base)}@media (any-hover: hover){/*!@:host(.button-solid.ion-color:hover) .button-native::after*/.button-solid.ion-color.sc-ion-button-md-h:hover .button-native.sc-ion-button-md::after{background:var(--ion-color-contrast)}/*!@:host(.button-clear.ion-color:hover) .button-native::after,\n :host(.button-outline.ion-color:hover) .button-native::after*/.button-clear.ion-color.sc-ion-button-md-h:hover .button-native.sc-ion-button-md::after,.button-outline.ion-color.sc-ion-button-md-h:hover .button-native.sc-ion-button-md::after{background:var(--ion-color-base)}}";
11538
11530
 
11539
11531
  /**
11540
11532
  * @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
@@ -12654,7 +12646,7 @@ const isRTL$1 = (hostEl) => {
12654
12646
  return (document === null || document === void 0 ? void 0 : document.dir.toLowerCase()) === 'rtl';
12655
12647
  };
12656
12648
 
12657
- const contentCss = "/*!@:host*/.sc-ion-content-h{--background:var(--ion-background-color, #fff);--color:var(--ion-text-color, #000);--padding-top:0px;--padding-bottom:0px;--padding-start:0px;--padding-end:0px;--keyboard-offset:0px;--offset-top:0px;--offset-bottom:0px;--overflow:auto;display:block;position:relative;-ms-flex:1;flex:1;width:100%;height:100%;margin:0 !important;padding:0 !important;font-family:var(--ion-font-family, inherit);contain:size style}/*!@:host(.ion-color) .inner-scroll*/.ion-color.sc-ion-content-h .inner-scroll.sc-ion-content{background:var(--ion-color-base);color:var(--ion-color-contrast)}/*!@:host(.outer-content)*/.outer-content.sc-ion-content-h{--background:var(--ion-color-step-50, #f2f2f2)}/*!@#background-content*/#background-content.sc-ion-content{left:0px;right:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);position:absolute;background:var(--background)}/*!@.inner-scroll*/.inner-scroll.sc-ion-content{left:0px;right:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:calc(var(--padding-top) + var(--offset-top));padding-bottom:calc(var(--padding-bottom) + var(--keyboard-offset) + var(--offset-bottom));position:absolute;color:var(--color);-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;-ms-touch-action:pan-x pan-y pinch-zoom;touch-action:pan-x pan-y pinch-zoom}/*!@.scroll-y,\n.scroll-x*/.scroll-y.sc-ion-content,.scroll-x.sc-ion-content{-webkit-overflow-scrolling:touch;z-index:0;will-change:scroll-position}/*!@.scroll-y*/.scroll-y.sc-ion-content{overflow-y:var(--overflow);overscroll-behavior-y:contain}/*!@.scroll-x*/.scroll-x.sc-ion-content{overflow-x:var(--overflow);overscroll-behavior-x:contain}/*!@.overscroll::before,\n.overscroll::after*/.overscroll.sc-ion-content::before,.overscroll.sc-ion-content::after{position:absolute;width:1px;height:1px;content:\"\"}/*!@.overscroll::before*/.overscroll.sc-ion-content::before{bottom:-1px}/*!@.overscroll::after*/.overscroll.sc-ion-content::after{top:-1px}/*!@:host(.content-sizing)*/.content-sizing.sc-ion-content-h{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-height:0;contain:none}/*!@:host(.content-sizing) .inner-scroll*/.content-sizing.sc-ion-content-h .inner-scroll.sc-ion-content{position:relative;top:0;bottom:0;margin-top:calc(var(--offset-top) * -1);margin-bottom:calc(var(--offset-bottom) * -1)}/*!@.transition-effect*/.transition-effect.sc-ion-content{display:none;position:absolute;width:100%;height:100vh;opacity:0;pointer-events:none}/*!@:host(.content-ltr) .transition-effect*/.content-ltr.sc-ion-content-h .transition-effect.sc-ion-content{left:-100%}/*!@:host(.content-rtl) .transition-effect*/.content-rtl.sc-ion-content-h .transition-effect.sc-ion-content{right:-100%}/*!@.transition-cover*/.transition-cover.sc-ion-content{position:absolute;right:0;width:100%;height:100%;background:black;opacity:0.1}/*!@.transition-shadow*/.transition-shadow.sc-ion-content{display:block;position:absolute;width:100%;height:100%;-webkit-box-shadow:inset -9px 0 9px 0 rgba(0, 0, 100, 0.03);box-shadow:inset -9px 0 9px 0 rgba(0, 0, 100, 0.03)}/*!@:host(.content-ltr) .transition-shadow*/.content-ltr.sc-ion-content-h .transition-shadow.sc-ion-content{right:0}/*!@:host(.content-rtl) .transition-shadow*/.content-rtl.sc-ion-content-h .transition-shadow.sc-ion-content{left:0;-webkit-transform:scaleX(-1);transform:scaleX(-1)}/*!@::slotted([slot=fixed])*/.sc-ion-content-s>[slot=fixed]{position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0)}";
12649
+ const contentCss = "/*!@:host*/.sc-ion-content-h{--background:var(--ion-background-color, #fff);--color:var(--ion-text-color, #000);--padding-top:0px;--padding-bottom:0px;--padding-start:0px;--padding-end:0px;--keyboard-offset:0px;--offset-top:0px;--offset-bottom:0px;--overflow:auto;display:block;position:relative;-ms-flex:1;flex:1;width:100%;height:100%;margin:0 !important;padding:0 !important;font-family:var(--ion-font-family, inherit);contain:size style}/*!@:host(.ion-color) .inner-scroll*/.ion-color.sc-ion-content-h .inner-scroll.sc-ion-content{background:var(--ion-color-base);color:var(--ion-color-contrast)}/*!@#background-content*/#background-content.sc-ion-content{left:0px;right:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);position:absolute;background:var(--background)}/*!@.inner-scroll*/.inner-scroll.sc-ion-content{left:0px;right:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:calc(var(--padding-top) + var(--offset-top));padding-bottom:calc(var(--padding-bottom) + var(--keyboard-offset) + var(--offset-bottom));position:absolute;color:var(--color);-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;-ms-touch-action:pan-x pan-y pinch-zoom;touch-action:pan-x pan-y pinch-zoom}/*!@.scroll-y,\n.scroll-x*/.scroll-y.sc-ion-content,.scroll-x.sc-ion-content{-webkit-overflow-scrolling:touch;z-index:0;will-change:scroll-position}/*!@.scroll-y*/.scroll-y.sc-ion-content{overflow-y:var(--overflow);overscroll-behavior-y:contain}/*!@.scroll-x*/.scroll-x.sc-ion-content{overflow-x:var(--overflow);overscroll-behavior-x:contain}/*!@.overscroll::before,\n.overscroll::after*/.overscroll.sc-ion-content::before,.overscroll.sc-ion-content::after{position:absolute;width:1px;height:1px;content:\"\"}/*!@.overscroll::before*/.overscroll.sc-ion-content::before{bottom:-1px}/*!@.overscroll::after*/.overscroll.sc-ion-content::after{top:-1px}/*!@:host(.content-sizing)*/.content-sizing.sc-ion-content-h{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-height:0;contain:none}/*!@:host(.content-sizing) .inner-scroll*/.content-sizing.sc-ion-content-h .inner-scroll.sc-ion-content{position:relative;top:0;bottom:0;margin-top:calc(var(--offset-top) * -1);margin-bottom:calc(var(--offset-bottom) * -1)}/*!@.transition-effect*/.transition-effect.sc-ion-content{display:none;position:absolute;width:100%;height:100vh;opacity:0;pointer-events:none}/*!@:host(.content-ltr) .transition-effect*/.content-ltr.sc-ion-content-h .transition-effect.sc-ion-content{left:-100%}/*!@:host(.content-rtl) .transition-effect*/.content-rtl.sc-ion-content-h .transition-effect.sc-ion-content{right:-100%}/*!@.transition-cover*/.transition-cover.sc-ion-content{position:absolute;right:0;width:100%;height:100%;background:black;opacity:0.1}/*!@.transition-shadow*/.transition-shadow.sc-ion-content{display:block;position:absolute;width:100%;height:100%;-webkit-box-shadow:inset -9px 0 9px 0 rgba(0, 0, 100, 0.03);box-shadow:inset -9px 0 9px 0 rgba(0, 0, 100, 0.03)}/*!@:host(.content-ltr) .transition-shadow*/.content-ltr.sc-ion-content-h .transition-shadow.sc-ion-content{right:0}/*!@:host(.content-rtl) .transition-shadow*/.content-rtl.sc-ion-content-h .transition-shadow.sc-ion-content{left:0;-webkit-transform:scaleX(-1);transform:scaleX(-1)}/*!@::slotted([slot=fixed])*/.sc-ion-content-s>[slot=fixed]{position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0)}";
12658
12650
 
12659
12651
  /**
12660
12652
  * @slot - Content is placed in the scrollable area if provided without a slot.
@@ -12969,9 +12961,8 @@ class Content {
12969
12961
  const mode = getIonMode$1(this);
12970
12962
  const forceOverscroll = this.shouldForceOverscroll();
12971
12963
  const transitionShadow = mode === 'ios';
12972
- const TagType = isMainContent ? 'main' : 'div';
12973
12964
  this.resize();
12974
- return (hAsync(Host, { class: createColorClasses$1(this.color, {
12965
+ return (hAsync(Host, { role: isMainContent ? 'main' : undefined, class: createColorClasses$1(this.color, {
12975
12966
  [mode]: true,
12976
12967
  'content-sizing': hostContext('ion-popover', this.el),
12977
12968
  overscroll: forceOverscroll,
@@ -12979,7 +12970,7 @@ class Content {
12979
12970
  }), style: {
12980
12971
  '--offset-top': `${this.cTop}px`,
12981
12972
  '--offset-bottom': `${this.cBottom}px`,
12982
- } }, hAsync("div", { ref: (el) => (this.backgroundContentEl = el), id: "background-content", part: "background" }), hAsync(TagType, { class: {
12973
+ } }, hAsync("div", { ref: (el) => (this.backgroundContentEl = el), id: "background-content", part: "background" }), hAsync("div", { class: {
12983
12974
  'inner-scroll': true,
12984
12975
  'scroll-x': scrollX,
12985
12976
  'scroll-y': scrollY,
@@ -14526,7 +14517,7 @@ const getMonthColumnData = (locale, refParts, minParts, maxParts, monthValues, f
14526
14517
  * @param minParts The minimum bound on the date that can be returned
14527
14518
  * @param maxParts The maximum bound on the date that can be returned
14528
14519
  * @param dayValues The allowed date values
14529
- * @returns Date data to be used in ion-picker-column-internal
14520
+ * @returns Date data to be used in ion-picker-column
14530
14521
  */
14531
14522
  const getDayColumnData = (locale, refParts, minParts, maxParts, dayValues, formatOptions = {
14532
14523
  day: 'numeric',
@@ -14873,9 +14864,9 @@ const getHighlightStyles = (highlightedDates, dateIsoString, el) => {
14873
14864
  return undefined;
14874
14865
  };
14875
14866
 
14876
- const datetimeIosCss = "/*!@:host*/.sc-ion-datetime-ios-h{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;background:var(--background);overflow:hidden}/*!@ion-picker-column-internal*/ion-picker-column-internal.sc-ion-datetime-ios{min-width:26px}/*!@:host(.datetime-size-fixed)*/.datetime-size-fixed.sc-ion-datetime-ios-h{width:auto;height:auto}/*!@:host(.datetime-size-fixed:not(.datetime-prefer-wheel))*/.datetime-size-fixed.sc-ion-datetime-ios-h:not(.datetime-prefer-wheel){max-width:350px}/*!@:host(.datetime-size-fixed.datetime-prefer-wheel)*/.datetime-size-fixed.datetime-prefer-wheel.sc-ion-datetime-ios-h{min-width:350px;max-width:-webkit-max-content;max-width:-moz-max-content;max-width:max-content}/*!@:host(.datetime-size-cover)*/.datetime-size-cover.sc-ion-datetime-ios-h{width:100%}/*!@:host .calendar-body,\n:host .datetime-year*/.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios,.sc-ion-datetime-ios-h .datetime-year.sc-ion-datetime-ios{opacity:0}/*!@:host(:not(.datetime-ready)) .datetime-year*/.sc-ion-datetime-ios-h:not(.datetime-ready) .datetime-year.sc-ion-datetime-ios{position:absolute;pointer-events:none}/*!@:host(.datetime-ready) .calendar-body*/.datetime-ready.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios{opacity:1}/*!@:host(.datetime-ready) .datetime-year*/.datetime-ready.sc-ion-datetime-ios-h .datetime-year.sc-ion-datetime-ios{display:none;opacity:1}/*!@:host .wheel-order-year-first .day-column*/.sc-ion-datetime-ios-h .wheel-order-year-first.sc-ion-datetime-ios .day-column.sc-ion-datetime-ios{-ms-flex-order:3;order:3;text-align:end}/*!@:host .wheel-order-year-first .month-column*/.sc-ion-datetime-ios-h .wheel-order-year-first.sc-ion-datetime-ios .month-column.sc-ion-datetime-ios{-ms-flex-order:2;order:2;text-align:end}/*!@:host .wheel-order-year-first .year-column*/.sc-ion-datetime-ios-h .wheel-order-year-first.sc-ion-datetime-ios .year-column.sc-ion-datetime-ios{-ms-flex-order:1;order:1;text-align:start}/*!@:host .datetime-calendar,\n:host .datetime-year*/.sc-ion-datetime-ios-h .datetime-calendar.sc-ion-datetime-ios,.sc-ion-datetime-ios-h .datetime-year.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex:1 1 auto;flex:1 1 auto;-ms-flex-flow:column;flex-flow:column}/*!@:host(.show-month-and-year) .datetime-year*/.show-month-and-year.sc-ion-datetime-ios-h .datetime-year.sc-ion-datetime-ios{display:-ms-flexbox;display:flex}@supports (background: -webkit-named-image(apple-pay-logo-black)) and (not (aspect-ratio: 1/1)){/*!@:host(.show-month-and-year) .calendar-next-prev,\n :host(.show-month-and-year) .calendar-days-of-week,\n :host(.show-month-and-year) .calendar-body,\n :host(.show-month-and-year) .datetime-time*/.show-month-and-year.sc-ion-datetime-ios-h .calendar-next-prev.sc-ion-datetime-ios,.show-month-and-year.sc-ion-datetime-ios-h .calendar-days-of-week.sc-ion-datetime-ios,.show-month-and-year.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios,.show-month-and-year.sc-ion-datetime-ios-h .datetime-time.sc-ion-datetime-ios{position:absolute;visibility:hidden;pointer-events:none}/*!@@supports (inset-inline-start: 0)*/@supports .sc-ion-datetime-ios (inset-inline-start.sc-ion-datetime-ios: 0).sc-ion-datetime-ios{.sc-ion-datetime-ios-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-ios-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-ios-h.show-month-and-year .calendar-body,.sc-ion-datetime-ios-h.show-month-and-year .datetime-time{inset-inline-start:-99999px}}/*!@@supports not (inset-inline-start: 0)*/@supports .sc-ion-datetime-ios not.sc-ion-datetime-ios (inset-inline-start.sc-ion-datetime-ios: 0).sc-ion-datetime-ios{.sc-ion-datetime-ios-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-ios-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-ios-h.show-month-and-year .calendar-body,.sc-ion-datetime-ios-h.show-month-and-year .datetime-time{left:-99999px}.sc-ion-datetime-ios-h[dir=rtl].sc-ion-datetime-ios-h.show-month-and-year .calendar-next-prev,[dir=rtl] .sc-ion-datetime-ios-h.sc-ion-datetime-ios-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-ios-h[dir=rtl].show-month-and-year .calendar-next-prev,[dir=rtl] .sc-ion-datetime-ios-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-ios-h[dir=rtl].sc-ion-datetime-ios-h.show-month-and-year .calendar-days-of-week,[dir=rtl] .sc-ion-datetime-ios-h.sc-ion-datetime-ios-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-ios-h[dir=rtl].show-month-and-year .calendar-days-of-week,[dir=rtl] .sc-ion-datetime-ios-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-ios-h[dir=rtl].sc-ion-datetime-ios-h.show-month-and-year .calendar-body,[dir=rtl] .sc-ion-datetime-ios-h.sc-ion-datetime-ios-h.show-month-and-year .calendar-body,.sc-ion-datetime-ios-h[dir=rtl].show-month-and-year .calendar-body,[dir=rtl] .sc-ion-datetime-ios-h.show-month-and-year .calendar-body,.sc-ion-datetime-ios-h[dir=rtl].sc-ion-datetime-ios-h.show-month-and-year .datetime-time,[dir=rtl] .sc-ion-datetime-ios-h.sc-ion-datetime-ios-h.show-month-and-year .datetime-time,.sc-ion-datetime-ios-h[dir=rtl].show-month-and-year .datetime-time,[dir=rtl] .sc-ion-datetime-ios-h.show-month-and-year .datetime-time{left:unset;right:unset;right:-99999px}@supports selector(:dir(rtl)){.sc-ion-datetime-ios-h.show-month-and-year:dir(rtl) .calendar-next-prev,.sc-ion-datetime-ios-h.show-month-and-year:dir(rtl) .calendar-days-of-week,.sc-ion-datetime-ios-h.show-month-and-year:dir(rtl) .calendar-body,.sc-ion-datetime-ios-h.show-month-and-year:dir(rtl) .datetime-time{left:unset;right:unset;right:-99999px}}}}@supports (not (background: -webkit-named-image(apple-pay-logo-black))) or ((background: -webkit-named-image(apple-pay-logo-black)) and (aspect-ratio: 1/1)){/*!@:host(.show-month-and-year) .calendar-next-prev,\n :host(.show-month-and-year) .calendar-days-of-week,\n :host(.show-month-and-year) .calendar-body,\n :host(.show-month-and-year) .datetime-time*/.show-month-and-year.sc-ion-datetime-ios-h .calendar-next-prev.sc-ion-datetime-ios,.show-month-and-year.sc-ion-datetime-ios-h .calendar-days-of-week.sc-ion-datetime-ios,.show-month-and-year.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios,.show-month-and-year.sc-ion-datetime-ios-h .datetime-time.sc-ion-datetime-ios{display:none}}/*!@:host(.month-year-picker-open) .datetime-footer*/.month-year-picker-open.sc-ion-datetime-ios-h .datetime-footer.sc-ion-datetime-ios{display:none}/*!@:host(.datetime-disabled)*/.datetime-disabled.sc-ion-datetime-ios-h{pointer-events:none}/*!@:host(.datetime-disabled) .calendar-days-of-week,\n:host(.datetime-disabled) .datetime-time*/.datetime-disabled.sc-ion-datetime-ios-h .calendar-days-of-week.sc-ion-datetime-ios,.datetime-disabled.sc-ion-datetime-ios-h .datetime-time.sc-ion-datetime-ios{opacity:0.4}/*!@:host(.datetime-readonly)*/.datetime-readonly.sc-ion-datetime-ios-h{pointer-events:none}/*!@:host(.datetime-readonly) .calendar-action-buttons,\n:host(.datetime-readonly) .calendar-body,\n:host(.datetime-readonly) .datetime-year*/.datetime-readonly.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios,.datetime-readonly.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios,.datetime-readonly.sc-ion-datetime-ios-h .datetime-year.sc-ion-datetime-ios{pointer-events:initial}/*!@:host(.datetime-readonly) .calendar-day[disabled]:not(.calendar-day-constrained),\n:host(.datetime-readonly) .datetime-action-buttons ion-button[disabled]*/.datetime-readonly.sc-ion-datetime-ios-h .calendar-day[disabled].sc-ion-datetime-ios:not(.calendar-day-constrained),.datetime-readonly.sc-ion-datetime-ios-h .datetime-action-buttons.sc-ion-datetime-ios ion-button[disabled].sc-ion-datetime-ios{opacity:1}/*!@:host .datetime-header .datetime-title*/.sc-ion-datetime-ios-h .datetime-header.sc-ion-datetime-ios .datetime-title.sc-ion-datetime-ios{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}/*!@:host .datetime-action-buttons.has-clear-button*/.sc-ion-datetime-ios-h .datetime-action-buttons.has-clear-button.sc-ion-datetime-ios{width:100%}/*!@:host .datetime-action-buttons ion-buttons*/.sc-ion-datetime-ios-h .datetime-action-buttons.sc-ion-datetime-ios ion-buttons.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}/*!@.datetime-action-buttons .datetime-action-buttons-container*/.datetime-action-buttons.sc-ion-datetime-ios .datetime-action-buttons-container.sc-ion-datetime-ios{display:-ms-flexbox;display:flex}/*!@:host .calendar-action-buttons*/.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}/*!@:host .calendar-action-buttons ion-item,\n:host .calendar-action-buttons ion-button*/.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios ion-item.sc-ion-datetime-ios,.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios ion-button.sc-ion-datetime-ios{--background:translucent}/*!@:host .calendar-action-buttons ion-item ion-label*/.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios ion-item.sc-ion-datetime-ios ion-label.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}/*!@:host .calendar-action-buttons ion-item ion-icon*/.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios ion-item.sc-ion-datetime-ios ion-icon.sc-ion-datetime-ios{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:0;padding-inline-end:0;padding-top:0;padding-bottom:0}/*!@:host .calendar-days-of-week*/.sc-ion-datetime-ios-h .calendar-days-of-week.sc-ion-datetime-ios{display:grid;grid-template-columns:repeat(7, 1fr);text-align:center}/*!@.calendar-days-of-week .day-of-week*/.calendar-days-of-week.sc-ion-datetime-ios .day-of-week.sc-ion-datetime-ios{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0}/*!@:host .calendar-body*/.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-positive:1;flex-grow:1;-webkit-scroll-snap-type:x mandatory;-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory;overflow-x:scroll;overflow-y:hidden;scrollbar-width:none;outline:none}/*!@:host .calendar-body .calendar-month*/.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios .calendar-month.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;scroll-snap-align:start;scroll-snap-stop:always;-ms-flex-negative:0;flex-shrink:0;width:100%}/*!@:host .calendar-body .calendar-month-disabled*/.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios .calendar-month-disabled.sc-ion-datetime-ios{scroll-snap-align:none}/*!@:host .calendar-body::-webkit-scrollbar*/.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios::-webkit-scrollbar{display:none}/*!@:host .calendar-body .calendar-month-grid*/.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios .calendar-month-grid.sc-ion-datetime-ios{display:grid;grid-template-columns:repeat(7, 1fr)}/*!@:host .calendar-day-wrapper*/.sc-ion-datetime-ios-h .calendar-day-wrapper.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;min-width:0;min-height:0;overflow:visible}/*!@.calendar-day*/.calendar-day.sc-ion-datetime-ios{border-radius:50%;-webkit-padding-start:0px;padding-inline-start:0px;-webkit-padding-end:0px;padding-inline-end:0px;padding-top:0px;padding-bottom:0px;-webkit-margin-start:0px;margin-inline-start:0px;-webkit-margin-end:0px;margin-inline-end:0px;margin-top:0px;margin-bottom:0px;display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;border:none;outline:none;background:none;color:currentColor;font-family:var(--ion-font-family, inherit);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;z-index:0}/*!@:host .calendar-day[disabled]*/.sc-ion-datetime-ios-h .calendar-day[disabled].sc-ion-datetime-ios{pointer-events:none;opacity:0.4}/*!@.calendar-day:focus*/.calendar-day.sc-ion-datetime-ios:focus{background:rgba(var(--ion-color-base-rgb), 0.2);-webkit-box-shadow:0px 0px 0px 4px rgba(var(--ion-color-base-rgb), 0.2);box-shadow:0px 0px 0px 4px rgba(var(--ion-color-base-rgb), 0.2)}/*!@:host .datetime-time*/.sc-ion-datetime-ios-h .datetime-time.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}/*!@:host(.datetime-presentation-time) .datetime-time*/.datetime-presentation-time.sc-ion-datetime-ios-h .datetime-time.sc-ion-datetime-ios{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}/*!@:host ion-popover*/.sc-ion-datetime-ios-h ion-popover.sc-ion-datetime-ios{--height:200px}/*!@:host .time-header*/.sc-ion-datetime-ios-h .time-header.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}/*!@:host .time-body*/.sc-ion-datetime-ios-h .time-body.sc-ion-datetime-ios{border-radius:8px;-webkit-padding-start:12px;padding-inline-start:12px;-webkit-padding-end:12px;padding-inline-end:12px;padding-top:6px;padding-bottom:6px;display:-ms-flexbox;display:flex;border:none;background:var(--ion-color-step-300, #edeef0);color:var(--ion-text-color, #000);font-family:inherit;font-size:inherit;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}/*!@:host .time-body-active*/.sc-ion-datetime-ios-h .time-body-active.sc-ion-datetime-ios{color:var(--ion-color-base)}/*!@:host(.in-item)*/.in-item.sc-ion-datetime-ios-h{position:static}/*!@:host(.show-month-and-year) .calendar-action-buttons ion-item*/.show-month-and-year.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios ion-item.sc-ion-datetime-ios{--color:var(--ion-color-base)}/*!@:host*/.sc-ion-datetime-ios-h{--background:var(--ion-color-light, #ffffff);--background-rgb:var(--ion-color-light-rgb);--title-color:var(--ion-color-step-600, #666666)}/*!@:host(.datetime-presentation-date-time:not(.datetime-prefer-wheel)),\n:host(.datetime-presentation-time-date:not(.datetime-prefer-wheel)),\n:host(.datetime-presentation-date:not(.datetime-prefer-wheel))*/.datetime-presentation-date-time.sc-ion-datetime-ios-h:not(.datetime-prefer-wheel),.datetime-presentation-time-date.sc-ion-datetime-ios-h:not(.datetime-prefer-wheel),.datetime-presentation-date.sc-ion-datetime-ios-h:not(.datetime-prefer-wheel){min-height:350px}/*!@:host .datetime-header*/.sc-ion-datetime-ios-h .datetime-header.sc-ion-datetime-ios{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:16px;padding-bottom:16px;border-bottom:0.55px solid var(--ion-color-step-200, #cccccc);font-size:min(0.875rem, 22.4px)}/*!@:host .datetime-header .datetime-title*/.sc-ion-datetime-ios-h .datetime-header.sc-ion-datetime-ios .datetime-title.sc-ion-datetime-ios{color:var(--title-color)}/*!@:host .datetime-header .datetime-selected-date*/.sc-ion-datetime-ios-h .datetime-header.sc-ion-datetime-ios .datetime-selected-date.sc-ion-datetime-ios{margin-top:10px}/*!@:host .calendar-action-buttons ion-item*/.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios ion-item.sc-ion-datetime-ios{--padding-start:16px;--background-hover:transparent;--background-activated:transparent;font-size:min(1rem, 25.6px);font-weight:600}/*!@:host .calendar-action-buttons ion-item ion-icon,\n:host .calendar-action-buttons ion-buttons ion-button*/.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios ion-item.sc-ion-datetime-ios ion-icon.sc-ion-datetime-ios,.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios ion-buttons.sc-ion-datetime-ios ion-button.sc-ion-datetime-ios{color:var(--ion-color-base)}/*!@:host .calendar-action-buttons ion-buttons*/.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios ion-buttons.sc-ion-datetime-ios{padding-left:0;padding-right:0;padding-top:8px;padding-bottom:0}/*!@:host .calendar-action-buttons ion-buttons ion-button*/.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios ion-buttons.sc-ion-datetime-ios ion-button.sc-ion-datetime-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}/*!@:host .calendar-days-of-week*/.sc-ion-datetime-ios-h .calendar-days-of-week.sc-ion-datetime-ios{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:0;padding-bottom:0;color:var(--ion-color-step-300, #b3b3b3);font-size:min(0.75rem, 19.2px);font-weight:600;line-height:24px;text-transform:uppercase}@supports (border-radius: mod(1px, 1px)){/*!@.calendar-days-of-week .day-of-week*/.calendar-days-of-week.sc-ion-datetime-ios .day-of-week.sc-ion-datetime-ios{width:clamp(20px, calc(mod(min(1rem, 24px), 24px) * 10), 100%);height:24px;overflow:hidden}/*!@.calendar-day*/.calendar-day.sc-ion-datetime-ios{border-radius:max(8px, mod(min(1rem, 24px), 24px) * 10)}}@supports ((border-radius: mod(1px, 1px)) and (background: -webkit-named-image(apple-pay-logo-black)) and (not (contain-intrinsic-size: none))) or (not (border-radius: mod(1px, 1px))){/*!@.calendar-days-of-week .day-of-week*/.calendar-days-of-week.sc-ion-datetime-ios .day-of-week.sc-ion-datetime-ios{width:auto;height:auto;overflow:initial}/*!@.calendar-day*/.calendar-day.sc-ion-datetime-ios{border-radius:32px}}/*!@:host .calendar-body .calendar-month .calendar-month-grid*/.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios .calendar-month.sc-ion-datetime-ios .calendar-month-grid.sc-ion-datetime-ios{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:8px;padding-bottom:8px;-ms-flex-align:center;align-items:center;height:calc(100% - 16px)}/*!@:host .calendar-day-wrapper*/.sc-ion-datetime-ios-h .calendar-day-wrapper.sc-ion-datetime-ios{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;height:0;min-height:1rem}/*!@:host .calendar-day*/.sc-ion-datetime-ios-h .calendar-day.sc-ion-datetime-ios{width:40px;min-width:40px;height:40px;font-size:min(1.25rem, 32px)}/*!@.calendar-day.calendar-day-active*/.calendar-day.calendar-day-active.sc-ion-datetime-ios{background:rgba(var(--ion-color-base-rgb), 0.2)}/*!@:host .calendar-day.calendar-day-today*/.sc-ion-datetime-ios-h .calendar-day.calendar-day-today.sc-ion-datetime-ios{color:var(--ion-color-base)}/*!@:host .calendar-day.calendar-day-active*/.sc-ion-datetime-ios-h .calendar-day.calendar-day-active.sc-ion-datetime-ios{color:var(--ion-color-base);font-weight:600}/*!@:host .calendar-day.calendar-day-today.calendar-day-active*/.sc-ion-datetime-ios-h .calendar-day.calendar-day-today.calendar-day-active.sc-ion-datetime-ios{color:var(--ion-color-contrast)}/*!@:host .datetime-time*/.sc-ion-datetime-ios-h .datetime-time.sc-ion-datetime-ios{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:8px;padding-bottom:16px;font-size:min(1rem, 25.6px)}/*!@:host .datetime-time .time-header*/.sc-ion-datetime-ios-h .datetime-time.sc-ion-datetime-ios .time-header.sc-ion-datetime-ios{font-weight:600}/*!@:host .datetime-buttons*/.sc-ion-datetime-ios-h .datetime-buttons.sc-ion-datetime-ios{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:8px;padding-bottom:8px;border-top:0.55px solid var(--ion-color-step-200, #cccccc)}/*!@:host .datetime-buttons ::slotted(ion-buttons),\n:host .datetime-buttons ion-buttons*/.sc-ion-datetime-ios-h .datetime-buttons .sc-ion-datetime-ios-s>ion-buttons,.sc-ion-datetime-ios-h .datetime-buttons.sc-ion-datetime-ios ion-buttons.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}/*!@:host .datetime-action-buttons*/.sc-ion-datetime-ios-h .datetime-action-buttons.sc-ion-datetime-ios{width:100%}";
14867
+ const datetimeIosCss = "/*!@:host*/.sc-ion-datetime-ios-h{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;background:var(--background);overflow:hidden}/*!@:host(.datetime-size-fixed)*/.datetime-size-fixed.sc-ion-datetime-ios-h{width:auto;height:auto}/*!@:host(.datetime-size-fixed:not(.datetime-prefer-wheel))*/.datetime-size-fixed.sc-ion-datetime-ios-h:not(.datetime-prefer-wheel){max-width:350px}/*!@:host(.datetime-size-fixed.datetime-prefer-wheel)*/.datetime-size-fixed.datetime-prefer-wheel.sc-ion-datetime-ios-h{min-width:350px;max-width:-webkit-max-content;max-width:-moz-max-content;max-width:max-content}/*!@:host(.datetime-size-cover)*/.datetime-size-cover.sc-ion-datetime-ios-h{width:100%}/*!@:host .calendar-body,\n:host .datetime-year*/.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios,.sc-ion-datetime-ios-h .datetime-year.sc-ion-datetime-ios{opacity:0}/*!@:host(:not(.datetime-ready)) .datetime-year*/.sc-ion-datetime-ios-h:not(.datetime-ready) .datetime-year.sc-ion-datetime-ios{position:absolute;pointer-events:none}/*!@:host(.datetime-ready) .calendar-body*/.datetime-ready.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios{opacity:1}/*!@:host(.datetime-ready) .datetime-year*/.datetime-ready.sc-ion-datetime-ios-h .datetime-year.sc-ion-datetime-ios{display:none;opacity:1}/*!@:host .wheel-order-year-first .day-column*/.sc-ion-datetime-ios-h .wheel-order-year-first.sc-ion-datetime-ios .day-column.sc-ion-datetime-ios{-ms-flex-order:3;order:3;text-align:end}/*!@:host .wheel-order-year-first .month-column*/.sc-ion-datetime-ios-h .wheel-order-year-first.sc-ion-datetime-ios .month-column.sc-ion-datetime-ios{-ms-flex-order:2;order:2;text-align:end}/*!@:host .wheel-order-year-first .year-column*/.sc-ion-datetime-ios-h .wheel-order-year-first.sc-ion-datetime-ios .year-column.sc-ion-datetime-ios{-ms-flex-order:1;order:1;text-align:start}/*!@:host .datetime-calendar,\n:host .datetime-year*/.sc-ion-datetime-ios-h .datetime-calendar.sc-ion-datetime-ios,.sc-ion-datetime-ios-h .datetime-year.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex:1 1 auto;flex:1 1 auto;-ms-flex-flow:column;flex-flow:column}/*!@:host(.show-month-and-year) .datetime-year*/.show-month-and-year.sc-ion-datetime-ios-h .datetime-year.sc-ion-datetime-ios{display:-ms-flexbox;display:flex}@supports (background: -webkit-named-image(apple-pay-logo-black)) and (not (aspect-ratio: 1/1)){/*!@:host(.show-month-and-year) .calendar-next-prev,\n :host(.show-month-and-year) .calendar-days-of-week,\n :host(.show-month-and-year) .calendar-body,\n :host(.show-month-and-year) .datetime-time*/.show-month-and-year.sc-ion-datetime-ios-h .calendar-next-prev.sc-ion-datetime-ios,.show-month-and-year.sc-ion-datetime-ios-h .calendar-days-of-week.sc-ion-datetime-ios,.show-month-and-year.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios,.show-month-and-year.sc-ion-datetime-ios-h .datetime-time.sc-ion-datetime-ios{position:absolute;visibility:hidden;pointer-events:none}/*!@@supports (inset-inline-start: 0)*/@supports .sc-ion-datetime-ios (inset-inline-start.sc-ion-datetime-ios: 0).sc-ion-datetime-ios{.sc-ion-datetime-ios-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-ios-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-ios-h.show-month-and-year .calendar-body,.sc-ion-datetime-ios-h.show-month-and-year .datetime-time{inset-inline-start:-99999px}}/*!@@supports not (inset-inline-start: 0)*/@supports .sc-ion-datetime-ios not.sc-ion-datetime-ios (inset-inline-start.sc-ion-datetime-ios: 0).sc-ion-datetime-ios{.sc-ion-datetime-ios-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-ios-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-ios-h.show-month-and-year .calendar-body,.sc-ion-datetime-ios-h.show-month-and-year .datetime-time{left:-99999px}.sc-ion-datetime-ios-h[dir=rtl].sc-ion-datetime-ios-h.show-month-and-year .calendar-next-prev,[dir=rtl] .sc-ion-datetime-ios-h.sc-ion-datetime-ios-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-ios-h[dir=rtl].show-month-and-year .calendar-next-prev,[dir=rtl] .sc-ion-datetime-ios-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-ios-h[dir=rtl].sc-ion-datetime-ios-h.show-month-and-year .calendar-days-of-week,[dir=rtl] .sc-ion-datetime-ios-h.sc-ion-datetime-ios-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-ios-h[dir=rtl].show-month-and-year .calendar-days-of-week,[dir=rtl] .sc-ion-datetime-ios-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-ios-h[dir=rtl].sc-ion-datetime-ios-h.show-month-and-year .calendar-body,[dir=rtl] .sc-ion-datetime-ios-h.sc-ion-datetime-ios-h.show-month-and-year .calendar-body,.sc-ion-datetime-ios-h[dir=rtl].show-month-and-year .calendar-body,[dir=rtl] .sc-ion-datetime-ios-h.show-month-and-year .calendar-body,.sc-ion-datetime-ios-h[dir=rtl].sc-ion-datetime-ios-h.show-month-and-year .datetime-time,[dir=rtl] .sc-ion-datetime-ios-h.sc-ion-datetime-ios-h.show-month-and-year .datetime-time,.sc-ion-datetime-ios-h[dir=rtl].show-month-and-year .datetime-time,[dir=rtl] .sc-ion-datetime-ios-h.show-month-and-year .datetime-time{left:unset;right:unset;right:-99999px}@supports selector(:dir(rtl)){.sc-ion-datetime-ios-h.show-month-and-year:dir(rtl) .calendar-next-prev,.sc-ion-datetime-ios-h.show-month-and-year:dir(rtl) .calendar-days-of-week,.sc-ion-datetime-ios-h.show-month-and-year:dir(rtl) .calendar-body,.sc-ion-datetime-ios-h.show-month-and-year:dir(rtl) .datetime-time{left:unset;right:unset;right:-99999px}}}}@supports (not (background: -webkit-named-image(apple-pay-logo-black))) or ((background: -webkit-named-image(apple-pay-logo-black)) and (aspect-ratio: 1/1)){/*!@:host(.show-month-and-year) .calendar-next-prev,\n :host(.show-month-and-year) .calendar-days-of-week,\n :host(.show-month-and-year) .calendar-body,\n :host(.show-month-and-year) .datetime-time*/.show-month-and-year.sc-ion-datetime-ios-h .calendar-next-prev.sc-ion-datetime-ios,.show-month-and-year.sc-ion-datetime-ios-h .calendar-days-of-week.sc-ion-datetime-ios,.show-month-and-year.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios,.show-month-and-year.sc-ion-datetime-ios-h .datetime-time.sc-ion-datetime-ios{display:none}}/*!@:host(.month-year-picker-open) .datetime-footer*/.month-year-picker-open.sc-ion-datetime-ios-h .datetime-footer.sc-ion-datetime-ios{display:none}/*!@:host(.datetime-disabled)*/.datetime-disabled.sc-ion-datetime-ios-h{pointer-events:none}/*!@:host(.datetime-disabled) .calendar-days-of-week,\n:host(.datetime-disabled) .datetime-time*/.datetime-disabled.sc-ion-datetime-ios-h .calendar-days-of-week.sc-ion-datetime-ios,.datetime-disabled.sc-ion-datetime-ios-h .datetime-time.sc-ion-datetime-ios{opacity:0.4}/*!@:host(.datetime-readonly)*/.datetime-readonly.sc-ion-datetime-ios-h{pointer-events:none}/*!@:host(.datetime-readonly) .calendar-action-buttons,\n:host(.datetime-readonly) .calendar-body,\n:host(.datetime-readonly) .datetime-year*/.datetime-readonly.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios,.datetime-readonly.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios,.datetime-readonly.sc-ion-datetime-ios-h .datetime-year.sc-ion-datetime-ios{pointer-events:initial}/*!@:host(.datetime-readonly) .calendar-day[disabled]:not(.calendar-day-constrained),\n:host(.datetime-readonly) .datetime-action-buttons ion-button[disabled]*/.datetime-readonly.sc-ion-datetime-ios-h .calendar-day[disabled].sc-ion-datetime-ios:not(.calendar-day-constrained),.datetime-readonly.sc-ion-datetime-ios-h .datetime-action-buttons.sc-ion-datetime-ios ion-button[disabled].sc-ion-datetime-ios{opacity:1}/*!@:host .datetime-header .datetime-title*/.sc-ion-datetime-ios-h .datetime-header.sc-ion-datetime-ios .datetime-title.sc-ion-datetime-ios{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}/*!@:host .datetime-action-buttons.has-clear-button*/.sc-ion-datetime-ios-h .datetime-action-buttons.has-clear-button.sc-ion-datetime-ios{width:100%}/*!@:host .datetime-action-buttons ion-buttons*/.sc-ion-datetime-ios-h .datetime-action-buttons.sc-ion-datetime-ios ion-buttons.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}/*!@.datetime-action-buttons .datetime-action-buttons-container*/.datetime-action-buttons.sc-ion-datetime-ios .datetime-action-buttons-container.sc-ion-datetime-ios{display:-ms-flexbox;display:flex}/*!@:host .calendar-action-buttons*/.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}/*!@:host .calendar-action-buttons ion-button*/.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios ion-button.sc-ion-datetime-ios{--background:transparent}/*!@:host .calendar-days-of-week*/.sc-ion-datetime-ios-h .calendar-days-of-week.sc-ion-datetime-ios{display:grid;grid-template-columns:repeat(7, 1fr);text-align:center}/*!@.calendar-days-of-week .day-of-week*/.calendar-days-of-week.sc-ion-datetime-ios .day-of-week.sc-ion-datetime-ios{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0}/*!@:host .calendar-body*/.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-positive:1;flex-grow:1;-webkit-scroll-snap-type:x mandatory;-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory;overflow-x:scroll;overflow-y:hidden;scrollbar-width:none;outline:none}/*!@:host .calendar-body .calendar-month*/.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios .calendar-month.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;scroll-snap-align:start;scroll-snap-stop:always;-ms-flex-negative:0;flex-shrink:0;width:100%}/*!@:host .calendar-body .calendar-month-disabled*/.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios .calendar-month-disabled.sc-ion-datetime-ios{scroll-snap-align:none}/*!@:host .calendar-body::-webkit-scrollbar*/.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios::-webkit-scrollbar{display:none}/*!@:host .calendar-body .calendar-month-grid*/.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios .calendar-month-grid.sc-ion-datetime-ios{display:grid;grid-template-columns:repeat(7, 1fr)}/*!@:host .calendar-day-wrapper*/.sc-ion-datetime-ios-h .calendar-day-wrapper.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;min-width:0;min-height:0;overflow:visible}/*!@.calendar-day*/.calendar-day.sc-ion-datetime-ios{border-radius:50%;-webkit-padding-start:0px;padding-inline-start:0px;-webkit-padding-end:0px;padding-inline-end:0px;padding-top:0px;padding-bottom:0px;-webkit-margin-start:0px;margin-inline-start:0px;-webkit-margin-end:0px;margin-inline-end:0px;margin-top:0px;margin-bottom:0px;display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;border:none;outline:none;background:none;color:currentColor;font-family:var(--ion-font-family, inherit);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;z-index:0}/*!@:host .calendar-day[disabled]*/.sc-ion-datetime-ios-h .calendar-day[disabled].sc-ion-datetime-ios{pointer-events:none;opacity:0.4}/*!@.calendar-day:focus*/.calendar-day.sc-ion-datetime-ios:focus{background:rgba(var(--ion-color-base-rgb), 0.2);-webkit-box-shadow:0px 0px 0px 4px rgba(var(--ion-color-base-rgb), 0.2);box-shadow:0px 0px 0px 4px rgba(var(--ion-color-base-rgb), 0.2)}/*!@:host .datetime-time*/.sc-ion-datetime-ios-h .datetime-time.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}/*!@:host(.datetime-presentation-time) .datetime-time*/.datetime-presentation-time.sc-ion-datetime-ios-h .datetime-time.sc-ion-datetime-ios{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}/*!@:host ion-popover*/.sc-ion-datetime-ios-h ion-popover.sc-ion-datetime-ios{--height:200px}/*!@:host .time-header*/.sc-ion-datetime-ios-h .time-header.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}/*!@:host .time-body*/.sc-ion-datetime-ios-h .time-body.sc-ion-datetime-ios{border-radius:8px;-webkit-padding-start:12px;padding-inline-start:12px;-webkit-padding-end:12px;padding-inline-end:12px;padding-top:6px;padding-bottom:6px;display:-ms-flexbox;display:flex;border:none;background:var(--ion-color-step-300, #edeef0);color:var(--ion-text-color, #000);font-family:inherit;font-size:inherit;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}/*!@:host .time-body-active*/.sc-ion-datetime-ios-h .time-body-active.sc-ion-datetime-ios{color:var(--ion-color-base)}/*!@:host(.in-item)*/.in-item.sc-ion-datetime-ios-h{position:static}/*!@:host(.show-month-and-year) .calendar-action-buttons .calendar-month-year-toggle*/.show-month-and-year.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios .calendar-month-year-toggle.sc-ion-datetime-ios{color:var(--ion-color-base)}/*!@.calendar-month-year*/.calendar-month-year.sc-ion-datetime-ios{min-width:0}/*!@.calendar-month-year-toggle*/.calendar-month-year-toggle.sc-ion-datetime-ios{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;position:relative;border:0;outline:none;background:transparent;cursor:pointer;z-index:1}/*!@.calendar-month-year-toggle::after*/.calendar-month-year-toggle.sc-ion-datetime-ios::after{left:0;right:0;top:0;bottom:0;position:absolute;content:\"\";opacity:0;-webkit-transition:opacity 15ms linear, background-color 15ms linear;transition:opacity 15ms linear, background-color 15ms linear;z-index:-1}/*!@.calendar-month-year-toggle.ion-focused::after*/.calendar-month-year-toggle.ion-focused.sc-ion-datetime-ios::after{background:currentColor}/*!@.calendar-month-year-toggle:disabled*/.calendar-month-year-toggle.sc-ion-datetime-ios:disabled{opacity:0.3;pointer-events:none}/*!@.calendar-month-year-toggle ion-icon*/.calendar-month-year-toggle.sc-ion-datetime-ios ion-icon.sc-ion-datetime-ios{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:0;padding-inline-end:0;padding-top:0;padding-bottom:0;-ms-flex-negative:0;flex-shrink:0}/*!@.calendar-month-year-toggle #toggle-wrapper*/.calendar-month-year-toggle.sc-ion-datetime-ios #toggle-wrapper.sc-ion-datetime-ios{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center}/*!@ion-picker*/ion-picker.sc-ion-datetime-ios{--highlight-background:var(--wheel-highlight-background);--highlight-border-radius:var(--wheel-highlight-border-radius);--fade-background-rgb:var(--wheel-fade-background-rgb)}/*!@:host*/.sc-ion-datetime-ios-h{--background:var(--ion-color-light, #ffffff);--background-rgb:var(--ion-color-light-rgb);--title-color:var(--ion-color-step-600, #666666)}/*!@:host(.datetime-presentation-date-time:not(.datetime-prefer-wheel)),\n:host(.datetime-presentation-time-date:not(.datetime-prefer-wheel)),\n:host(.datetime-presentation-date:not(.datetime-prefer-wheel))*/.datetime-presentation-date-time.sc-ion-datetime-ios-h:not(.datetime-prefer-wheel),.datetime-presentation-time-date.sc-ion-datetime-ios-h:not(.datetime-prefer-wheel),.datetime-presentation-date.sc-ion-datetime-ios-h:not(.datetime-prefer-wheel){min-height:350px}/*!@:host .datetime-header*/.sc-ion-datetime-ios-h .datetime-header.sc-ion-datetime-ios{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:16px;padding-bottom:16px;border-bottom:0.55px solid var(--ion-color-step-200, #cccccc);font-size:min(0.875rem, 22.4px)}/*!@:host .datetime-header .datetime-title*/.sc-ion-datetime-ios-h .datetime-header.sc-ion-datetime-ios .datetime-title.sc-ion-datetime-ios{color:var(--title-color)}/*!@:host .datetime-header .datetime-selected-date*/.sc-ion-datetime-ios-h .datetime-header.sc-ion-datetime-ios .datetime-selected-date.sc-ion-datetime-ios{margin-top:10px}/*!@.calendar-month-year-toggle*/.calendar-month-year-toggle.sc-ion-datetime-ios{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0px;padding-bottom:0px;min-height:44px;font-size:min(1rem, 25.6px);font-weight:600}/*!@.calendar-month-year-toggle.ion-focused::after*/.calendar-month-year-toggle.ion-focused.sc-ion-datetime-ios::after{opacity:0.15}/*!@.calendar-month-year-toggle #toggle-wrapper*/.calendar-month-year-toggle.sc-ion-datetime-ios #toggle-wrapper.sc-ion-datetime-ios{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:8px;margin-inline-end:8px;margin-top:10px;margin-bottom:10px}/*!@:host .calendar-action-buttons .calendar-month-year-toggle ion-icon,\n:host .calendar-action-buttons ion-buttons ion-button*/.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios .calendar-month-year-toggle.sc-ion-datetime-ios ion-icon.sc-ion-datetime-ios,.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios ion-buttons.sc-ion-datetime-ios ion-button.sc-ion-datetime-ios{color:var(--ion-color-base)}/*!@:host .calendar-action-buttons ion-buttons*/.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios ion-buttons.sc-ion-datetime-ios{padding-left:0;padding-right:0;padding-top:8px;padding-bottom:0}/*!@:host .calendar-action-buttons ion-buttons ion-button*/.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios ion-buttons.sc-ion-datetime-ios ion-button.sc-ion-datetime-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}/*!@:host .calendar-days-of-week*/.sc-ion-datetime-ios-h .calendar-days-of-week.sc-ion-datetime-ios{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:0;padding-bottom:0;color:var(--ion-color-step-300, #b3b3b3);font-size:min(0.75rem, 19.2px);font-weight:600;line-height:24px;text-transform:uppercase}@supports (border-radius: mod(1px, 1px)){/*!@.calendar-days-of-week .day-of-week*/.calendar-days-of-week.sc-ion-datetime-ios .day-of-week.sc-ion-datetime-ios{width:clamp(20px, calc(mod(min(1rem, 24px), 24px) * 10), 100%);height:24px;overflow:hidden}/*!@.calendar-day*/.calendar-day.sc-ion-datetime-ios{border-radius:max(8px, mod(min(1rem, 24px), 24px) * 10)}}@supports ((border-radius: mod(1px, 1px)) and (background: -webkit-named-image(apple-pay-logo-black)) and (not (contain-intrinsic-size: none))) or (not (border-radius: mod(1px, 1px))){/*!@.calendar-days-of-week .day-of-week*/.calendar-days-of-week.sc-ion-datetime-ios .day-of-week.sc-ion-datetime-ios{width:auto;height:auto;overflow:initial}/*!@.calendar-day*/.calendar-day.sc-ion-datetime-ios{border-radius:32px}}/*!@:host .calendar-body .calendar-month .calendar-month-grid*/.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios .calendar-month.sc-ion-datetime-ios .calendar-month-grid.sc-ion-datetime-ios{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:8px;padding-bottom:8px;-ms-flex-align:center;align-items:center;height:calc(100% - 16px)}/*!@:host .calendar-day-wrapper*/.sc-ion-datetime-ios-h .calendar-day-wrapper.sc-ion-datetime-ios{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;height:0;min-height:1rem}/*!@:host .calendar-day*/.sc-ion-datetime-ios-h .calendar-day.sc-ion-datetime-ios{width:40px;min-width:40px;height:40px;font-size:min(1.25rem, 32px)}/*!@.calendar-day.calendar-day-active*/.calendar-day.calendar-day-active.sc-ion-datetime-ios{background:rgba(var(--ion-color-base-rgb), 0.2)}/*!@:host .calendar-day.calendar-day-today*/.sc-ion-datetime-ios-h .calendar-day.calendar-day-today.sc-ion-datetime-ios{color:var(--ion-color-base)}/*!@:host .calendar-day.calendar-day-active*/.sc-ion-datetime-ios-h .calendar-day.calendar-day-active.sc-ion-datetime-ios{color:var(--ion-color-base);font-weight:600}/*!@:host .calendar-day.calendar-day-today.calendar-day-active*/.sc-ion-datetime-ios-h .calendar-day.calendar-day-today.calendar-day-active.sc-ion-datetime-ios{color:var(--ion-color-contrast)}/*!@:host .datetime-time*/.sc-ion-datetime-ios-h .datetime-time.sc-ion-datetime-ios{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:8px;padding-bottom:16px;font-size:min(1rem, 25.6px)}/*!@:host .datetime-time .time-header*/.sc-ion-datetime-ios-h .datetime-time.sc-ion-datetime-ios .time-header.sc-ion-datetime-ios{font-weight:600}/*!@:host .datetime-buttons*/.sc-ion-datetime-ios-h .datetime-buttons.sc-ion-datetime-ios{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:8px;padding-bottom:8px;border-top:0.55px solid var(--ion-color-step-200, #cccccc)}/*!@:host .datetime-buttons ::slotted(ion-buttons),\n:host .datetime-buttons ion-buttons*/.sc-ion-datetime-ios-h .datetime-buttons .sc-ion-datetime-ios-s>ion-buttons,.sc-ion-datetime-ios-h .datetime-buttons.sc-ion-datetime-ios ion-buttons.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}/*!@:host .datetime-action-buttons*/.sc-ion-datetime-ios-h .datetime-action-buttons.sc-ion-datetime-ios{width:100%}";
14877
14868
 
14878
- const datetimeMdCss = "/*!@:host*/.sc-ion-datetime-md-h{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;background:var(--background);overflow:hidden}/*!@ion-picker-column-internal*/ion-picker-column-internal.sc-ion-datetime-md{min-width:26px}/*!@:host(.datetime-size-fixed)*/.datetime-size-fixed.sc-ion-datetime-md-h{width:auto;height:auto}/*!@:host(.datetime-size-fixed:not(.datetime-prefer-wheel))*/.datetime-size-fixed.sc-ion-datetime-md-h:not(.datetime-prefer-wheel){max-width:350px}/*!@:host(.datetime-size-fixed.datetime-prefer-wheel)*/.datetime-size-fixed.datetime-prefer-wheel.sc-ion-datetime-md-h{min-width:350px;max-width:-webkit-max-content;max-width:-moz-max-content;max-width:max-content}/*!@:host(.datetime-size-cover)*/.datetime-size-cover.sc-ion-datetime-md-h{width:100%}/*!@:host .calendar-body,\n:host .datetime-year*/.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md,.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md{opacity:0}/*!@:host(:not(.datetime-ready)) .datetime-year*/.sc-ion-datetime-md-h:not(.datetime-ready) .datetime-year.sc-ion-datetime-md{position:absolute;pointer-events:none}/*!@:host(.datetime-ready) .calendar-body*/.datetime-ready.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md{opacity:1}/*!@:host(.datetime-ready) .datetime-year*/.datetime-ready.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md{display:none;opacity:1}/*!@:host .wheel-order-year-first .day-column*/.sc-ion-datetime-md-h .wheel-order-year-first.sc-ion-datetime-md .day-column.sc-ion-datetime-md{-ms-flex-order:3;order:3;text-align:end}/*!@:host .wheel-order-year-first .month-column*/.sc-ion-datetime-md-h .wheel-order-year-first.sc-ion-datetime-md .month-column.sc-ion-datetime-md{-ms-flex-order:2;order:2;text-align:end}/*!@:host .wheel-order-year-first .year-column*/.sc-ion-datetime-md-h .wheel-order-year-first.sc-ion-datetime-md .year-column.sc-ion-datetime-md{-ms-flex-order:1;order:1;text-align:start}/*!@:host .datetime-calendar,\n:host .datetime-year*/.sc-ion-datetime-md-h .datetime-calendar.sc-ion-datetime-md,.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex:1 1 auto;flex:1 1 auto;-ms-flex-flow:column;flex-flow:column}/*!@:host(.show-month-and-year) .datetime-year*/.show-month-and-year.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md{display:-ms-flexbox;display:flex}@supports (background: -webkit-named-image(apple-pay-logo-black)) and (not (aspect-ratio: 1/1)){/*!@:host(.show-month-and-year) .calendar-next-prev,\n :host(.show-month-and-year) .calendar-days-of-week,\n :host(.show-month-and-year) .calendar-body,\n :host(.show-month-and-year) .datetime-time*/.show-month-and-year.sc-ion-datetime-md-h .calendar-next-prev.sc-ion-datetime-md,.show-month-and-year.sc-ion-datetime-md-h .calendar-days-of-week.sc-ion-datetime-md,.show-month-and-year.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md,.show-month-and-year.sc-ion-datetime-md-h .datetime-time.sc-ion-datetime-md{position:absolute;visibility:hidden;pointer-events:none}/*!@@supports (inset-inline-start: 0)*/@supports .sc-ion-datetime-md (inset-inline-start.sc-ion-datetime-md: 0).sc-ion-datetime-md{.sc-ion-datetime-md-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-md-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-md-h.show-month-and-year .calendar-body,.sc-ion-datetime-md-h.show-month-and-year .datetime-time{inset-inline-start:-99999px}}/*!@@supports not (inset-inline-start: 0)*/@supports .sc-ion-datetime-md not.sc-ion-datetime-md (inset-inline-start.sc-ion-datetime-md: 0).sc-ion-datetime-md{.sc-ion-datetime-md-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-md-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-md-h.show-month-and-year .calendar-body,.sc-ion-datetime-md-h.show-month-and-year .datetime-time{left:-99999px}.sc-ion-datetime-md-h[dir=rtl].sc-ion-datetime-md-h.show-month-and-year .calendar-next-prev,[dir=rtl] .sc-ion-datetime-md-h.sc-ion-datetime-md-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-md-h[dir=rtl].show-month-and-year .calendar-next-prev,[dir=rtl] .sc-ion-datetime-md-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-md-h[dir=rtl].sc-ion-datetime-md-h.show-month-and-year .calendar-days-of-week,[dir=rtl] .sc-ion-datetime-md-h.sc-ion-datetime-md-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-md-h[dir=rtl].show-month-and-year .calendar-days-of-week,[dir=rtl] .sc-ion-datetime-md-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-md-h[dir=rtl].sc-ion-datetime-md-h.show-month-and-year .calendar-body,[dir=rtl] .sc-ion-datetime-md-h.sc-ion-datetime-md-h.show-month-and-year .calendar-body,.sc-ion-datetime-md-h[dir=rtl].show-month-and-year .calendar-body,[dir=rtl] .sc-ion-datetime-md-h.show-month-and-year .calendar-body,.sc-ion-datetime-md-h[dir=rtl].sc-ion-datetime-md-h.show-month-and-year .datetime-time,[dir=rtl] .sc-ion-datetime-md-h.sc-ion-datetime-md-h.show-month-and-year .datetime-time,.sc-ion-datetime-md-h[dir=rtl].show-month-and-year .datetime-time,[dir=rtl] .sc-ion-datetime-md-h.show-month-and-year .datetime-time{left:unset;right:unset;right:-99999px}@supports selector(:dir(rtl)){.sc-ion-datetime-md-h.show-month-and-year:dir(rtl) .calendar-next-prev,.sc-ion-datetime-md-h.show-month-and-year:dir(rtl) .calendar-days-of-week,.sc-ion-datetime-md-h.show-month-and-year:dir(rtl) .calendar-body,.sc-ion-datetime-md-h.show-month-and-year:dir(rtl) .datetime-time{left:unset;right:unset;right:-99999px}}}}@supports (not (background: -webkit-named-image(apple-pay-logo-black))) or ((background: -webkit-named-image(apple-pay-logo-black)) and (aspect-ratio: 1/1)){/*!@:host(.show-month-and-year) .calendar-next-prev,\n :host(.show-month-and-year) .calendar-days-of-week,\n :host(.show-month-and-year) .calendar-body,\n :host(.show-month-and-year) .datetime-time*/.show-month-and-year.sc-ion-datetime-md-h .calendar-next-prev.sc-ion-datetime-md,.show-month-and-year.sc-ion-datetime-md-h .calendar-days-of-week.sc-ion-datetime-md,.show-month-and-year.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md,.show-month-and-year.sc-ion-datetime-md-h .datetime-time.sc-ion-datetime-md{display:none}}/*!@:host(.month-year-picker-open) .datetime-footer*/.month-year-picker-open.sc-ion-datetime-md-h .datetime-footer.sc-ion-datetime-md{display:none}/*!@:host(.datetime-disabled)*/.datetime-disabled.sc-ion-datetime-md-h{pointer-events:none}/*!@:host(.datetime-disabled) .calendar-days-of-week,\n:host(.datetime-disabled) .datetime-time*/.datetime-disabled.sc-ion-datetime-md-h .calendar-days-of-week.sc-ion-datetime-md,.datetime-disabled.sc-ion-datetime-md-h .datetime-time.sc-ion-datetime-md{opacity:0.4}/*!@:host(.datetime-readonly)*/.datetime-readonly.sc-ion-datetime-md-h{pointer-events:none}/*!@:host(.datetime-readonly) .calendar-action-buttons,\n:host(.datetime-readonly) .calendar-body,\n:host(.datetime-readonly) .datetime-year*/.datetime-readonly.sc-ion-datetime-md-h .calendar-action-buttons.sc-ion-datetime-md,.datetime-readonly.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md,.datetime-readonly.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md{pointer-events:initial}/*!@:host(.datetime-readonly) .calendar-day[disabled]:not(.calendar-day-constrained),\n:host(.datetime-readonly) .datetime-action-buttons ion-button[disabled]*/.datetime-readonly.sc-ion-datetime-md-h .calendar-day[disabled].sc-ion-datetime-md:not(.calendar-day-constrained),.datetime-readonly.sc-ion-datetime-md-h .datetime-action-buttons.sc-ion-datetime-md ion-button[disabled].sc-ion-datetime-md{opacity:1}/*!@:host .datetime-header .datetime-title*/.sc-ion-datetime-md-h .datetime-header.sc-ion-datetime-md .datetime-title.sc-ion-datetime-md{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}/*!@:host .datetime-action-buttons.has-clear-button*/.sc-ion-datetime-md-h .datetime-action-buttons.has-clear-button.sc-ion-datetime-md{width:100%}/*!@:host .datetime-action-buttons ion-buttons*/.sc-ion-datetime-md-h .datetime-action-buttons.sc-ion-datetime-md ion-buttons.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}/*!@.datetime-action-buttons .datetime-action-buttons-container*/.datetime-action-buttons.sc-ion-datetime-md .datetime-action-buttons-container.sc-ion-datetime-md{display:-ms-flexbox;display:flex}/*!@:host .calendar-action-buttons*/.sc-ion-datetime-md-h .calendar-action-buttons.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}/*!@:host .calendar-action-buttons ion-item,\n:host .calendar-action-buttons ion-button*/.sc-ion-datetime-md-h .calendar-action-buttons.sc-ion-datetime-md ion-item.sc-ion-datetime-md,.sc-ion-datetime-md-h .calendar-action-buttons.sc-ion-datetime-md ion-button.sc-ion-datetime-md{--background:translucent}/*!@:host .calendar-action-buttons ion-item ion-label*/.sc-ion-datetime-md-h .calendar-action-buttons.sc-ion-datetime-md ion-item.sc-ion-datetime-md ion-label.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}/*!@:host .calendar-action-buttons ion-item ion-icon*/.sc-ion-datetime-md-h .calendar-action-buttons.sc-ion-datetime-md ion-item.sc-ion-datetime-md ion-icon.sc-ion-datetime-md{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:0;padding-inline-end:0;padding-top:0;padding-bottom:0}/*!@:host .calendar-days-of-week*/.sc-ion-datetime-md-h .calendar-days-of-week.sc-ion-datetime-md{display:grid;grid-template-columns:repeat(7, 1fr);text-align:center}/*!@.calendar-days-of-week .day-of-week*/.calendar-days-of-week.sc-ion-datetime-md .day-of-week.sc-ion-datetime-md{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0}/*!@:host .calendar-body*/.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-positive:1;flex-grow:1;-webkit-scroll-snap-type:x mandatory;-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory;overflow-x:scroll;overflow-y:hidden;scrollbar-width:none;outline:none}/*!@:host .calendar-body .calendar-month*/.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md .calendar-month.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;scroll-snap-align:start;scroll-snap-stop:always;-ms-flex-negative:0;flex-shrink:0;width:100%}/*!@:host .calendar-body .calendar-month-disabled*/.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md .calendar-month-disabled.sc-ion-datetime-md{scroll-snap-align:none}/*!@:host .calendar-body::-webkit-scrollbar*/.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md::-webkit-scrollbar{display:none}/*!@:host .calendar-body .calendar-month-grid*/.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md .calendar-month-grid.sc-ion-datetime-md{display:grid;grid-template-columns:repeat(7, 1fr)}/*!@:host .calendar-day-wrapper*/.sc-ion-datetime-md-h .calendar-day-wrapper.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;min-width:0;min-height:0;overflow:visible}/*!@.calendar-day*/.calendar-day.sc-ion-datetime-md{border-radius:50%;-webkit-padding-start:0px;padding-inline-start:0px;-webkit-padding-end:0px;padding-inline-end:0px;padding-top:0px;padding-bottom:0px;-webkit-margin-start:0px;margin-inline-start:0px;-webkit-margin-end:0px;margin-inline-end:0px;margin-top:0px;margin-bottom:0px;display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;border:none;outline:none;background:none;color:currentColor;font-family:var(--ion-font-family, inherit);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;z-index:0}/*!@:host .calendar-day[disabled]*/.sc-ion-datetime-md-h .calendar-day[disabled].sc-ion-datetime-md{pointer-events:none;opacity:0.4}/*!@.calendar-day:focus*/.calendar-day.sc-ion-datetime-md:focus{background:rgba(var(--ion-color-base-rgb), 0.2);-webkit-box-shadow:0px 0px 0px 4px rgba(var(--ion-color-base-rgb), 0.2);box-shadow:0px 0px 0px 4px rgba(var(--ion-color-base-rgb), 0.2)}/*!@:host .datetime-time*/.sc-ion-datetime-md-h .datetime-time.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}/*!@:host(.datetime-presentation-time) .datetime-time*/.datetime-presentation-time.sc-ion-datetime-md-h .datetime-time.sc-ion-datetime-md{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}/*!@:host ion-popover*/.sc-ion-datetime-md-h ion-popover.sc-ion-datetime-md{--height:200px}/*!@:host .time-header*/.sc-ion-datetime-md-h .time-header.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}/*!@:host .time-body*/.sc-ion-datetime-md-h .time-body.sc-ion-datetime-md{border-radius:8px;-webkit-padding-start:12px;padding-inline-start:12px;-webkit-padding-end:12px;padding-inline-end:12px;padding-top:6px;padding-bottom:6px;display:-ms-flexbox;display:flex;border:none;background:var(--ion-color-step-300, #edeef0);color:var(--ion-text-color, #000);font-family:inherit;font-size:inherit;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}/*!@:host .time-body-active*/.sc-ion-datetime-md-h .time-body-active.sc-ion-datetime-md{color:var(--ion-color-base)}/*!@:host(.in-item)*/.in-item.sc-ion-datetime-md-h{position:static}/*!@:host(.show-month-and-year) .calendar-action-buttons ion-item*/.show-month-and-year.sc-ion-datetime-md-h .calendar-action-buttons.sc-ion-datetime-md ion-item.sc-ion-datetime-md{--color:var(--ion-color-base)}/*!@:host*/.sc-ion-datetime-md-h{--background:var(--ion-color-step-100, #ffffff);--title-color:var(--ion-color-contrast)}/*!@:host .datetime-header*/.sc-ion-datetime-md-h .datetime-header.sc-ion-datetime-md{-webkit-padding-start:20px;padding-inline-start:20px;-webkit-padding-end:20px;padding-inline-end:20px;padding-top:20px;padding-bottom:20px;background:var(--ion-color-base);color:var(--title-color)}/*!@:host .datetime-header .datetime-title*/.sc-ion-datetime-md-h .datetime-header.sc-ion-datetime-md .datetime-title.sc-ion-datetime-md{font-size:0.75rem;text-transform:uppercase}/*!@:host .datetime-header .datetime-selected-date*/.sc-ion-datetime-md-h .datetime-header.sc-ion-datetime-md .datetime-selected-date.sc-ion-datetime-md{margin-top:30px;font-size:2.125rem}/*!@:host .datetime-calendar .calendar-action-buttons ion-item*/.sc-ion-datetime-md-h .datetime-calendar.sc-ion-datetime-md .calendar-action-buttons.sc-ion-datetime-md ion-item.sc-ion-datetime-md{--padding-start:20px}/*!@:host .calendar-action-buttons ion-item,\n:host .calendar-action-buttons ion-button*/.sc-ion-datetime-md-h .calendar-action-buttons.sc-ion-datetime-md ion-item.sc-ion-datetime-md,.sc-ion-datetime-md-h .calendar-action-buttons.sc-ion-datetime-md ion-button.sc-ion-datetime-md{--color:var(--ion-color-step-650, #595959)}/*!@:host .calendar-days-of-week*/.sc-ion-datetime-md-h .calendar-days-of-week.sc-ion-datetime-md{-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px;padding-top:0px;padding-bottom:0px;color:var(--ion-color-step-500, gray);font-size:0.875rem;line-height:36px}/*!@:host .calendar-body .calendar-month .calendar-month-grid*/.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md .calendar-month.sc-ion-datetime-md .calendar-month-grid.sc-ion-datetime-md{-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px;padding-top:4px;padding-bottom:4px;grid-template-rows:repeat(6, 1fr)}/*!@:host .calendar-day*/.sc-ion-datetime-md-h .calendar-day.sc-ion-datetime-md{width:42px;min-width:42px;height:42px;font-size:0.875rem}/*!@:host .calendar-day.calendar-day-today*/.sc-ion-datetime-md-h .calendar-day.calendar-day-today.sc-ion-datetime-md{border:1px solid var(--ion-color-base);color:var(--ion-color-base)}/*!@:host .calendar-day.calendar-day-active*/.sc-ion-datetime-md-h .calendar-day.calendar-day-active.sc-ion-datetime-md{color:var(--ion-color-contrast)}/*!@.calendar-day.calendar-day-active*/.calendar-day.calendar-day-active.sc-ion-datetime-md{border:1px solid var(--ion-color-base);background:var(--ion-color-base)}/*!@:host .datetime-time*/.sc-ion-datetime-md-h .datetime-time.sc-ion-datetime-md{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:8px;padding-bottom:8px}/*!@:host .time-header*/.sc-ion-datetime-md-h .time-header.sc-ion-datetime-md{color:var(--ion-color-step-650, #595959)}/*!@:host(.datetime-presentation-month) .datetime-year,\n:host(.datetime-presentation-year) .datetime-year,\n:host(.datetime-presentation-month-year) .datetime-year*/.datetime-presentation-month.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md,.datetime-presentation-year.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md,.datetime-presentation-month-year.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md{margin-top:20px;margin-bottom:20px}/*!@:host .datetime-buttons*/.sc-ion-datetime-md-h .datetime-buttons.sc-ion-datetime-md{-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px;padding-top:10px;padding-bottom:10px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end}";
14869
+ const datetimeMdCss = "/*!@:host*/.sc-ion-datetime-md-h{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;background:var(--background);overflow:hidden}/*!@:host(.datetime-size-fixed)*/.datetime-size-fixed.sc-ion-datetime-md-h{width:auto;height:auto}/*!@:host(.datetime-size-fixed:not(.datetime-prefer-wheel))*/.datetime-size-fixed.sc-ion-datetime-md-h:not(.datetime-prefer-wheel){max-width:350px}/*!@:host(.datetime-size-fixed.datetime-prefer-wheel)*/.datetime-size-fixed.datetime-prefer-wheel.sc-ion-datetime-md-h{min-width:350px;max-width:-webkit-max-content;max-width:-moz-max-content;max-width:max-content}/*!@:host(.datetime-size-cover)*/.datetime-size-cover.sc-ion-datetime-md-h{width:100%}/*!@:host .calendar-body,\n:host .datetime-year*/.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md,.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md{opacity:0}/*!@:host(:not(.datetime-ready)) .datetime-year*/.sc-ion-datetime-md-h:not(.datetime-ready) .datetime-year.sc-ion-datetime-md{position:absolute;pointer-events:none}/*!@:host(.datetime-ready) .calendar-body*/.datetime-ready.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md{opacity:1}/*!@:host(.datetime-ready) .datetime-year*/.datetime-ready.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md{display:none;opacity:1}/*!@:host .wheel-order-year-first .day-column*/.sc-ion-datetime-md-h .wheel-order-year-first.sc-ion-datetime-md .day-column.sc-ion-datetime-md{-ms-flex-order:3;order:3;text-align:end}/*!@:host .wheel-order-year-first .month-column*/.sc-ion-datetime-md-h .wheel-order-year-first.sc-ion-datetime-md .month-column.sc-ion-datetime-md{-ms-flex-order:2;order:2;text-align:end}/*!@:host .wheel-order-year-first .year-column*/.sc-ion-datetime-md-h .wheel-order-year-first.sc-ion-datetime-md .year-column.sc-ion-datetime-md{-ms-flex-order:1;order:1;text-align:start}/*!@:host .datetime-calendar,\n:host .datetime-year*/.sc-ion-datetime-md-h .datetime-calendar.sc-ion-datetime-md,.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex:1 1 auto;flex:1 1 auto;-ms-flex-flow:column;flex-flow:column}/*!@:host(.show-month-and-year) .datetime-year*/.show-month-and-year.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md{display:-ms-flexbox;display:flex}@supports (background: -webkit-named-image(apple-pay-logo-black)) and (not (aspect-ratio: 1/1)){/*!@:host(.show-month-and-year) .calendar-next-prev,\n :host(.show-month-and-year) .calendar-days-of-week,\n :host(.show-month-and-year) .calendar-body,\n :host(.show-month-and-year) .datetime-time*/.show-month-and-year.sc-ion-datetime-md-h .calendar-next-prev.sc-ion-datetime-md,.show-month-and-year.sc-ion-datetime-md-h .calendar-days-of-week.sc-ion-datetime-md,.show-month-and-year.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md,.show-month-and-year.sc-ion-datetime-md-h .datetime-time.sc-ion-datetime-md{position:absolute;visibility:hidden;pointer-events:none}/*!@@supports (inset-inline-start: 0)*/@supports .sc-ion-datetime-md (inset-inline-start.sc-ion-datetime-md: 0).sc-ion-datetime-md{.sc-ion-datetime-md-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-md-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-md-h.show-month-and-year .calendar-body,.sc-ion-datetime-md-h.show-month-and-year .datetime-time{inset-inline-start:-99999px}}/*!@@supports not (inset-inline-start: 0)*/@supports .sc-ion-datetime-md not.sc-ion-datetime-md (inset-inline-start.sc-ion-datetime-md: 0).sc-ion-datetime-md{.sc-ion-datetime-md-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-md-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-md-h.show-month-and-year .calendar-body,.sc-ion-datetime-md-h.show-month-and-year .datetime-time{left:-99999px}.sc-ion-datetime-md-h[dir=rtl].sc-ion-datetime-md-h.show-month-and-year .calendar-next-prev,[dir=rtl] .sc-ion-datetime-md-h.sc-ion-datetime-md-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-md-h[dir=rtl].show-month-and-year .calendar-next-prev,[dir=rtl] .sc-ion-datetime-md-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-md-h[dir=rtl].sc-ion-datetime-md-h.show-month-and-year .calendar-days-of-week,[dir=rtl] .sc-ion-datetime-md-h.sc-ion-datetime-md-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-md-h[dir=rtl].show-month-and-year .calendar-days-of-week,[dir=rtl] .sc-ion-datetime-md-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-md-h[dir=rtl].sc-ion-datetime-md-h.show-month-and-year .calendar-body,[dir=rtl] .sc-ion-datetime-md-h.sc-ion-datetime-md-h.show-month-and-year .calendar-body,.sc-ion-datetime-md-h[dir=rtl].show-month-and-year .calendar-body,[dir=rtl] .sc-ion-datetime-md-h.show-month-and-year .calendar-body,.sc-ion-datetime-md-h[dir=rtl].sc-ion-datetime-md-h.show-month-and-year .datetime-time,[dir=rtl] .sc-ion-datetime-md-h.sc-ion-datetime-md-h.show-month-and-year .datetime-time,.sc-ion-datetime-md-h[dir=rtl].show-month-and-year .datetime-time,[dir=rtl] .sc-ion-datetime-md-h.show-month-and-year .datetime-time{left:unset;right:unset;right:-99999px}@supports selector(:dir(rtl)){.sc-ion-datetime-md-h.show-month-and-year:dir(rtl) .calendar-next-prev,.sc-ion-datetime-md-h.show-month-and-year:dir(rtl) .calendar-days-of-week,.sc-ion-datetime-md-h.show-month-and-year:dir(rtl) .calendar-body,.sc-ion-datetime-md-h.show-month-and-year:dir(rtl) .datetime-time{left:unset;right:unset;right:-99999px}}}}@supports (not (background: -webkit-named-image(apple-pay-logo-black))) or ((background: -webkit-named-image(apple-pay-logo-black)) and (aspect-ratio: 1/1)){/*!@:host(.show-month-and-year) .calendar-next-prev,\n :host(.show-month-and-year) .calendar-days-of-week,\n :host(.show-month-and-year) .calendar-body,\n :host(.show-month-and-year) .datetime-time*/.show-month-and-year.sc-ion-datetime-md-h .calendar-next-prev.sc-ion-datetime-md,.show-month-and-year.sc-ion-datetime-md-h .calendar-days-of-week.sc-ion-datetime-md,.show-month-and-year.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md,.show-month-and-year.sc-ion-datetime-md-h .datetime-time.sc-ion-datetime-md{display:none}}/*!@:host(.month-year-picker-open) .datetime-footer*/.month-year-picker-open.sc-ion-datetime-md-h .datetime-footer.sc-ion-datetime-md{display:none}/*!@:host(.datetime-disabled)*/.datetime-disabled.sc-ion-datetime-md-h{pointer-events:none}/*!@:host(.datetime-disabled) .calendar-days-of-week,\n:host(.datetime-disabled) .datetime-time*/.datetime-disabled.sc-ion-datetime-md-h .calendar-days-of-week.sc-ion-datetime-md,.datetime-disabled.sc-ion-datetime-md-h .datetime-time.sc-ion-datetime-md{opacity:0.4}/*!@:host(.datetime-readonly)*/.datetime-readonly.sc-ion-datetime-md-h{pointer-events:none}/*!@:host(.datetime-readonly) .calendar-action-buttons,\n:host(.datetime-readonly) .calendar-body,\n:host(.datetime-readonly) .datetime-year*/.datetime-readonly.sc-ion-datetime-md-h .calendar-action-buttons.sc-ion-datetime-md,.datetime-readonly.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md,.datetime-readonly.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md{pointer-events:initial}/*!@:host(.datetime-readonly) .calendar-day[disabled]:not(.calendar-day-constrained),\n:host(.datetime-readonly) .datetime-action-buttons ion-button[disabled]*/.datetime-readonly.sc-ion-datetime-md-h .calendar-day[disabled].sc-ion-datetime-md:not(.calendar-day-constrained),.datetime-readonly.sc-ion-datetime-md-h .datetime-action-buttons.sc-ion-datetime-md ion-button[disabled].sc-ion-datetime-md{opacity:1}/*!@:host .datetime-header .datetime-title*/.sc-ion-datetime-md-h .datetime-header.sc-ion-datetime-md .datetime-title.sc-ion-datetime-md{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}/*!@:host .datetime-action-buttons.has-clear-button*/.sc-ion-datetime-md-h .datetime-action-buttons.has-clear-button.sc-ion-datetime-md{width:100%}/*!@:host .datetime-action-buttons ion-buttons*/.sc-ion-datetime-md-h .datetime-action-buttons.sc-ion-datetime-md ion-buttons.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}/*!@.datetime-action-buttons .datetime-action-buttons-container*/.datetime-action-buttons.sc-ion-datetime-md .datetime-action-buttons-container.sc-ion-datetime-md{display:-ms-flexbox;display:flex}/*!@:host .calendar-action-buttons*/.sc-ion-datetime-md-h .calendar-action-buttons.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}/*!@:host .calendar-action-buttons ion-button*/.sc-ion-datetime-md-h .calendar-action-buttons.sc-ion-datetime-md ion-button.sc-ion-datetime-md{--background:transparent}/*!@:host .calendar-days-of-week*/.sc-ion-datetime-md-h .calendar-days-of-week.sc-ion-datetime-md{display:grid;grid-template-columns:repeat(7, 1fr);text-align:center}/*!@.calendar-days-of-week .day-of-week*/.calendar-days-of-week.sc-ion-datetime-md .day-of-week.sc-ion-datetime-md{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0}/*!@:host .calendar-body*/.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-positive:1;flex-grow:1;-webkit-scroll-snap-type:x mandatory;-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory;overflow-x:scroll;overflow-y:hidden;scrollbar-width:none;outline:none}/*!@:host .calendar-body .calendar-month*/.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md .calendar-month.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;scroll-snap-align:start;scroll-snap-stop:always;-ms-flex-negative:0;flex-shrink:0;width:100%}/*!@:host .calendar-body .calendar-month-disabled*/.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md .calendar-month-disabled.sc-ion-datetime-md{scroll-snap-align:none}/*!@:host .calendar-body::-webkit-scrollbar*/.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md::-webkit-scrollbar{display:none}/*!@:host .calendar-body .calendar-month-grid*/.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md .calendar-month-grid.sc-ion-datetime-md{display:grid;grid-template-columns:repeat(7, 1fr)}/*!@:host .calendar-day-wrapper*/.sc-ion-datetime-md-h .calendar-day-wrapper.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;min-width:0;min-height:0;overflow:visible}/*!@.calendar-day*/.calendar-day.sc-ion-datetime-md{border-radius:50%;-webkit-padding-start:0px;padding-inline-start:0px;-webkit-padding-end:0px;padding-inline-end:0px;padding-top:0px;padding-bottom:0px;-webkit-margin-start:0px;margin-inline-start:0px;-webkit-margin-end:0px;margin-inline-end:0px;margin-top:0px;margin-bottom:0px;display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;border:none;outline:none;background:none;color:currentColor;font-family:var(--ion-font-family, inherit);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;z-index:0}/*!@:host .calendar-day[disabled]*/.sc-ion-datetime-md-h .calendar-day[disabled].sc-ion-datetime-md{pointer-events:none;opacity:0.4}/*!@.calendar-day:focus*/.calendar-day.sc-ion-datetime-md:focus{background:rgba(var(--ion-color-base-rgb), 0.2);-webkit-box-shadow:0px 0px 0px 4px rgba(var(--ion-color-base-rgb), 0.2);box-shadow:0px 0px 0px 4px rgba(var(--ion-color-base-rgb), 0.2)}/*!@:host .datetime-time*/.sc-ion-datetime-md-h .datetime-time.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}/*!@:host(.datetime-presentation-time) .datetime-time*/.datetime-presentation-time.sc-ion-datetime-md-h .datetime-time.sc-ion-datetime-md{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}/*!@:host ion-popover*/.sc-ion-datetime-md-h ion-popover.sc-ion-datetime-md{--height:200px}/*!@:host .time-header*/.sc-ion-datetime-md-h .time-header.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}/*!@:host .time-body*/.sc-ion-datetime-md-h .time-body.sc-ion-datetime-md{border-radius:8px;-webkit-padding-start:12px;padding-inline-start:12px;-webkit-padding-end:12px;padding-inline-end:12px;padding-top:6px;padding-bottom:6px;display:-ms-flexbox;display:flex;border:none;background:var(--ion-color-step-300, #edeef0);color:var(--ion-text-color, #000);font-family:inherit;font-size:inherit;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}/*!@:host .time-body-active*/.sc-ion-datetime-md-h .time-body-active.sc-ion-datetime-md{color:var(--ion-color-base)}/*!@:host(.in-item)*/.in-item.sc-ion-datetime-md-h{position:static}/*!@:host(.show-month-and-year) .calendar-action-buttons .calendar-month-year-toggle*/.show-month-and-year.sc-ion-datetime-md-h .calendar-action-buttons.sc-ion-datetime-md .calendar-month-year-toggle.sc-ion-datetime-md{color:var(--ion-color-base)}/*!@.calendar-month-year*/.calendar-month-year.sc-ion-datetime-md{min-width:0}/*!@.calendar-month-year-toggle*/.calendar-month-year-toggle.sc-ion-datetime-md{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;position:relative;border:0;outline:none;background:transparent;cursor:pointer;z-index:1}/*!@.calendar-month-year-toggle::after*/.calendar-month-year-toggle.sc-ion-datetime-md::after{left:0;right:0;top:0;bottom:0;position:absolute;content:\"\";opacity:0;-webkit-transition:opacity 15ms linear, background-color 15ms linear;transition:opacity 15ms linear, background-color 15ms linear;z-index:-1}/*!@.calendar-month-year-toggle.ion-focused::after*/.calendar-month-year-toggle.ion-focused.sc-ion-datetime-md::after{background:currentColor}/*!@.calendar-month-year-toggle:disabled*/.calendar-month-year-toggle.sc-ion-datetime-md:disabled{opacity:0.3;pointer-events:none}/*!@.calendar-month-year-toggle ion-icon*/.calendar-month-year-toggle.sc-ion-datetime-md ion-icon.sc-ion-datetime-md{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:0;padding-inline-end:0;padding-top:0;padding-bottom:0;-ms-flex-negative:0;flex-shrink:0}/*!@.calendar-month-year-toggle #toggle-wrapper*/.calendar-month-year-toggle.sc-ion-datetime-md #toggle-wrapper.sc-ion-datetime-md{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center}/*!@ion-picker*/ion-picker.sc-ion-datetime-md{--highlight-background:var(--wheel-highlight-background);--highlight-border-radius:var(--wheel-highlight-border-radius);--fade-background-rgb:var(--wheel-fade-background-rgb)}/*!@:host*/.sc-ion-datetime-md-h{--background:var(--ion-color-step-100, #ffffff);--title-color:var(--ion-color-contrast)}/*!@:host .datetime-header*/.sc-ion-datetime-md-h .datetime-header.sc-ion-datetime-md{-webkit-padding-start:20px;padding-inline-start:20px;-webkit-padding-end:20px;padding-inline-end:20px;padding-top:20px;padding-bottom:20px;background:var(--ion-color-base);color:var(--title-color)}/*!@:host .datetime-header .datetime-title*/.sc-ion-datetime-md-h .datetime-header.sc-ion-datetime-md .datetime-title.sc-ion-datetime-md{font-size:0.75rem;text-transform:uppercase}/*!@:host .datetime-header .datetime-selected-date*/.sc-ion-datetime-md-h .datetime-header.sc-ion-datetime-md .datetime-selected-date.sc-ion-datetime-md{margin-top:30px;font-size:2.125rem}/*!@:host .calendar-action-buttons ion-button*/.sc-ion-datetime-md-h .calendar-action-buttons.sc-ion-datetime-md ion-button.sc-ion-datetime-md{--color:var(--ion-color-step-650, #595959)}/*!@.calendar-month-year-toggle*/.calendar-month-year-toggle.sc-ion-datetime-md{-webkit-padding-start:20px;padding-inline-start:20px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:12px;padding-bottom:12px;min-height:48px;background:transparent;color:var(--ion-color-step-650, #595959);z-index:1}/*!@.calendar-month-year-toggle.ion-focused::after*/.calendar-month-year-toggle.ion-focused.sc-ion-datetime-md::after{opacity:0.04}/*!@.calendar-month-year-toggle ion-ripple-effect*/.calendar-month-year-toggle.sc-ion-datetime-md ion-ripple-effect.sc-ion-datetime-md{color:currentColor}@media (any-hover: hover){/*!@.calendar-month-year-toggle.ion-activatable:not(.ion-focused):hover::after*/.calendar-month-year-toggle.ion-activatable.sc-ion-datetime-md:not(.ion-focused):hover::after{background:currentColor;opacity:0.04}}/*!@:host .calendar-days-of-week*/.sc-ion-datetime-md-h .calendar-days-of-week.sc-ion-datetime-md{-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px;padding-top:0px;padding-bottom:0px;color:var(--ion-color-step-500, gray);font-size:0.875rem;line-height:36px}/*!@:host .calendar-body .calendar-month .calendar-month-grid*/.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md .calendar-month.sc-ion-datetime-md .calendar-month-grid.sc-ion-datetime-md{-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px;padding-top:4px;padding-bottom:4px;grid-template-rows:repeat(6, 1fr)}/*!@:host .calendar-day*/.sc-ion-datetime-md-h .calendar-day.sc-ion-datetime-md{width:42px;min-width:42px;height:42px;font-size:0.875rem}/*!@:host .calendar-day.calendar-day-today*/.sc-ion-datetime-md-h .calendar-day.calendar-day-today.sc-ion-datetime-md{border:1px solid var(--ion-color-base);color:var(--ion-color-base)}/*!@:host .calendar-day.calendar-day-active*/.sc-ion-datetime-md-h .calendar-day.calendar-day-active.sc-ion-datetime-md{color:var(--ion-color-contrast)}/*!@.calendar-day.calendar-day-active*/.calendar-day.calendar-day-active.sc-ion-datetime-md{border:1px solid var(--ion-color-base);background:var(--ion-color-base)}/*!@:host .datetime-time*/.sc-ion-datetime-md-h .datetime-time.sc-ion-datetime-md{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:8px;padding-bottom:8px}/*!@:host .time-header*/.sc-ion-datetime-md-h .time-header.sc-ion-datetime-md{color:var(--ion-color-step-650, #595959)}/*!@:host(.datetime-presentation-month) .datetime-year,\n:host(.datetime-presentation-year) .datetime-year,\n:host(.datetime-presentation-month-year) .datetime-year*/.datetime-presentation-month.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md,.datetime-presentation-year.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md,.datetime-presentation-month-year.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md{margin-top:20px;margin-bottom:20px}/*!@:host .datetime-buttons*/.sc-ion-datetime-md-h .datetime-buttons.sc-ion-datetime-md{-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px;padding-top:10px;padding-bottom:10px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end}";
14879
14870
 
14880
14871
  /**
14881
14872
  * @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
@@ -15846,7 +15837,7 @@ class Datetime {
15846
15837
  const renderArray = forcePresentation === 'time-date'
15847
15838
  ? [this.renderTimePickerColumns(forcePresentation), this.renderDatePickerColumns(forcePresentation)]
15848
15839
  : [this.renderDatePickerColumns(forcePresentation), this.renderTimePickerColumns(forcePresentation)];
15849
- return hAsync("ion-picker-internal", null, renderArray);
15840
+ return hAsync("ion-picker", null, renderArray);
15850
15841
  }
15851
15842
  renderDatePickerColumns(forcePresentation) {
15852
15843
  return forcePresentation === 'date-time' || forcePresentation === 'time-date'
@@ -15905,7 +15896,7 @@ class Datetime {
15905
15896
  const todayString = workingParts.day !== null
15906
15897
  ? `${workingParts.year}-${workingParts.month}-${workingParts.day}`
15907
15898
  : `${defaultParts.year}-${defaultParts.month}-${defaultParts.day}`;
15908
- return (hAsync("ion-picker-column-internal", { class: "date-column", color: this.color, disabled: disabled, items: items, value: todayString, onIonChange: (ev) => {
15899
+ return (hAsync("ion-picker-column", { class: "date-column", color: this.color, disabled: disabled, value: todayString, onIonChange: (ev) => {
15909
15900
  // TODO(FW-1823) Remove this when iOS 14 support is dropped.
15910
15901
  // Due to a Safari 14 issue we need to destroy
15911
15902
  // the scroll listener before we update state
@@ -15921,7 +15912,7 @@ class Datetime {
15921
15912
  // the working parts have been updated.
15922
15913
  this.initializeCalendarListener();
15923
15914
  ev.stopPropagation();
15924
- } }));
15915
+ } }, items.map((item) => (hAsync("ion-picker-column-option", { part: item.value === todayString ? `${WHEEL_ITEM_PART} ${WHEEL_ITEM_ACTIVE_PART}` : WHEEL_ITEM_PART, key: item.value, disabled: item.disabled, value: item.value }, item.text)))));
15925
15916
  }
15926
15917
  renderIndividualDatePickerColumns(forcePresentation) {
15927
15918
  const { workingParts, isDateEnabled } = this;
@@ -15989,7 +15980,8 @@ class Datetime {
15989
15980
  }
15990
15981
  const { disabled, workingParts } = this;
15991
15982
  const activePart = this.getActivePartsWithFallback();
15992
- return (hAsync("ion-picker-column-internal", { class: "day-column", color: this.color, disabled: disabled, items: days, value: (_a = (workingParts.day !== null ? workingParts.day : this.defaultParts.day)) !== null && _a !== void 0 ? _a : undefined, onIonChange: (ev) => {
15983
+ const pickerColumnValue = (_a = (workingParts.day !== null ? workingParts.day : this.defaultParts.day)) !== null && _a !== void 0 ? _a : undefined;
15984
+ return (hAsync("ion-picker-column", { class: "day-column", color: this.color, disabled: disabled, value: pickerColumnValue, onIonChange: (ev) => {
15993
15985
  // TODO(FW-1823) Remove this when iOS 14 support is dropped.
15994
15986
  // Due to a Safari 14 issue we need to destroy
15995
15987
  // the scroll listener before we update state
@@ -16003,7 +15995,7 @@ class Datetime {
16003
15995
  // the working parts have been updated.
16004
15996
  this.initializeCalendarListener();
16005
15997
  ev.stopPropagation();
16006
- } }));
15998
+ } }, days.map((day) => (hAsync("ion-picker-column-option", { part: day.value === pickerColumnValue ? `${WHEEL_ITEM_PART} ${WHEEL_ITEM_ACTIVE_PART}` : WHEEL_ITEM_PART, key: day.value, disabled: day.disabled, value: day.value }, day.text)))));
16007
15999
  }
16008
16000
  renderMonthPickerColumn(months) {
16009
16001
  if (months.length === 0) {
@@ -16011,7 +16003,7 @@ class Datetime {
16011
16003
  }
16012
16004
  const { disabled, workingParts } = this;
16013
16005
  const activePart = this.getActivePartsWithFallback();
16014
- return (hAsync("ion-picker-column-internal", { class: "month-column", color: this.color, disabled: disabled, items: months, value: workingParts.month, onIonChange: (ev) => {
16006
+ return (hAsync("ion-picker-column", { class: "month-column", color: this.color, disabled: disabled, value: workingParts.month, onIonChange: (ev) => {
16015
16007
  // TODO(FW-1823) Remove this when iOS 14 support is dropped.
16016
16008
  // Due to a Safari 14 issue we need to destroy
16017
16009
  // the scroll listener before we update state
@@ -16025,7 +16017,7 @@ class Datetime {
16025
16017
  // the working parts have been updated.
16026
16018
  this.initializeCalendarListener();
16027
16019
  ev.stopPropagation();
16028
- } }));
16020
+ } }, months.map((month) => (hAsync("ion-picker-column-option", { part: month.value === workingParts.month ? `${WHEEL_ITEM_PART} ${WHEEL_ITEM_ACTIVE_PART}` : WHEEL_ITEM_PART, key: month.value, disabled: month.disabled, value: month.value }, month.text)))));
16029
16021
  }
16030
16022
  renderYearPickerColumn(years) {
16031
16023
  if (years.length === 0) {
@@ -16033,7 +16025,7 @@ class Datetime {
16033
16025
  }
16034
16026
  const { disabled, workingParts } = this;
16035
16027
  const activePart = this.getActivePartsWithFallback();
16036
- return (hAsync("ion-picker-column-internal", { class: "year-column", color: this.color, disabled: disabled, items: years, value: workingParts.year, onIonChange: (ev) => {
16028
+ return (hAsync("ion-picker-column", { class: "year-column", color: this.color, disabled: disabled, value: workingParts.year, onIonChange: (ev) => {
16037
16029
  // TODO(FW-1823) Remove this when iOS 14 support is dropped.
16038
16030
  // Due to a Safari 14 issue we need to destroy
16039
16031
  // the scroll listener before we update state
@@ -16047,7 +16039,7 @@ class Datetime {
16047
16039
  // the working parts have been updated.
16048
16040
  this.initializeCalendarListener();
16049
16041
  ev.stopPropagation();
16050
- } }));
16042
+ } }, years.map((year) => (hAsync("ion-picker-column-option", { part: year.value === workingParts.year ? `${WHEEL_ITEM_PART} ${WHEEL_ITEM_ACTIVE_PART}` : WHEEL_ITEM_PART, key: year.value, disabled: year.disabled, value: year.value }, year.text)))));
16051
16043
  }
16052
16044
  renderTimePickerColumns(forcePresentation) {
16053
16045
  if (['date', 'month', 'month-year', 'year'].includes(forcePresentation)) {
@@ -16076,22 +16068,22 @@ class Datetime {
16076
16068
  if (hoursData.length === 0)
16077
16069
  return [];
16078
16070
  const activePart = this.getActivePartsWithFallback();
16079
- return (hAsync("ion-picker-column-internal", { color: this.color, disabled: disabled, value: activePart.hour, items: hoursData, numericInput: true, onIonChange: (ev) => {
16071
+ return (hAsync("ion-picker-column", { color: this.color, disabled: disabled, value: activePart.hour, numericInput: true, onIonChange: (ev) => {
16080
16072
  this.setWorkingParts(Object.assign(Object.assign({}, workingParts), { hour: ev.detail.value }));
16081
16073
  this.setActiveParts(Object.assign(Object.assign({}, activePart), { hour: ev.detail.value }));
16082
16074
  ev.stopPropagation();
16083
- } }));
16075
+ } }, hoursData.map((hour) => (hAsync("ion-picker-column-option", { part: hour.value === activePart.hour ? `${WHEEL_ITEM_PART} ${WHEEL_ITEM_ACTIVE_PART}` : WHEEL_ITEM_PART, key: hour.value, disabled: hour.disabled, value: hour.value }, hour.text)))));
16084
16076
  }
16085
16077
  renderMinutePickerColumn(minutesData) {
16086
16078
  const { disabled, workingParts } = this;
16087
16079
  if (minutesData.length === 0)
16088
16080
  return [];
16089
16081
  const activePart = this.getActivePartsWithFallback();
16090
- return (hAsync("ion-picker-column-internal", { color: this.color, disabled: disabled, value: activePart.minute, items: minutesData, numericInput: true, onIonChange: (ev) => {
16082
+ return (hAsync("ion-picker-column", { color: this.color, disabled: disabled, value: activePart.minute, numericInput: true, onIonChange: (ev) => {
16091
16083
  this.setWorkingParts(Object.assign(Object.assign({}, workingParts), { minute: ev.detail.value }));
16092
16084
  this.setActiveParts(Object.assign(Object.assign({}, activePart), { minute: ev.detail.value }));
16093
16085
  ev.stopPropagation();
16094
- } }));
16086
+ } }, minutesData.map((minute) => (hAsync("ion-picker-column-option", { part: minute.value === activePart.minute ? `${WHEEL_ITEM_PART} ${WHEEL_ITEM_ACTIVE_PART}` : WHEEL_ITEM_PART, key: minute.value, disabled: minute.disabled, value: minute.value }, minute.text)))));
16095
16087
  }
16096
16088
  renderDayPeriodPickerColumn(dayPeriodData) {
16097
16089
  const { disabled, workingParts } = this;
@@ -16100,12 +16092,12 @@ class Datetime {
16100
16092
  }
16101
16093
  const activePart = this.getActivePartsWithFallback();
16102
16094
  const isDayPeriodRTL = isLocaleDayPeriodRTL(this.locale);
16103
- return (hAsync("ion-picker-column-internal", { style: isDayPeriodRTL ? { order: '-1' } : {}, color: this.color, disabled: disabled, value: activePart.ampm, items: dayPeriodData, onIonChange: (ev) => {
16095
+ return (hAsync("ion-picker-column", { style: isDayPeriodRTL ? { order: '-1' } : {}, color: this.color, disabled: disabled, value: activePart.ampm, onIonChange: (ev) => {
16104
16096
  const hour = calculateHourFromAMPM(workingParts, ev.detail.value);
16105
16097
  this.setWorkingParts(Object.assign(Object.assign({}, workingParts), { ampm: ev.detail.value, hour }));
16106
16098
  this.setActiveParts(Object.assign(Object.assign({}, activePart), { ampm: ev.detail.value, hour }));
16107
16099
  ev.stopPropagation();
16108
- } }));
16100
+ } }, dayPeriodData.map((dayPeriod) => (hAsync("ion-picker-column-option", { part: dayPeriod.value === activePart.ampm ? `${WHEEL_ITEM_PART} ${WHEEL_ITEM_ACTIVE_PART}` : WHEEL_ITEM_PART, key: dayPeriod.value, disabled: dayPeriod.disabled, value: dayPeriod.value }, dayPeriod.text)))));
16109
16101
  }
16110
16102
  renderWheelView(forcePresentation) {
16111
16103
  const { locale } = this;
@@ -16126,26 +16118,11 @@ class Datetime {
16126
16118
  const nextMonthDisabled = disabled || isNextMonthDisabled(this.workingParts, this.maxParts);
16127
16119
  // don't use the inheritAttributes util because it removes dir from the host, and we still need that
16128
16120
  const hostDir = this.el.getAttribute('dir') || undefined;
16129
- return (hAsync("div", { class: "calendar-header" }, hAsync("div", { class: "calendar-action-buttons" }, hAsync("div", { class: "calendar-month-year" }, hAsync("ion-item", { part: "month-year-button", ref: (el) => (this.monthYearToggleItemRef = el), button: true, "aria-label": "Show year picker", detail: false, lines: "none", disabled: disabled, onClick: () => {
16130
- var _a;
16131
- this.toggleMonthAndYearView();
16132
- /**
16133
- * TODO: FW-3547
16134
- *
16135
- * Currently there is not a way to set the aria-label on the inner button
16136
- * on the `ion-item` and have it be reactive to changes. This is a workaround
16137
- * until we either refactor `ion-item` to a button or Stencil adds a way to
16138
- * have reactive props for built-in properties, such as `aria-label`.
16139
- */
16140
- const { monthYearToggleItemRef } = this;
16141
- if (monthYearToggleItemRef) {
16142
- const btn = (_a = monthYearToggleItemRef.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.item-native');
16143
- if (btn) {
16144
- const monthYearAriaLabel = this.showMonthAndYear ? 'Hide year picker' : 'Show year picker';
16145
- btn.setAttribute('aria-label', monthYearAriaLabel);
16146
- }
16147
- }
16148
- } }, hAsync("ion-label", null, getMonthAndYear(this.locale, this.workingParts), hAsync("ion-icon", { "aria-hidden": "true", icon: this.showMonthAndYear ? expandedIcon : collapsedIcon, lazy: false, flipRtl: true })))), hAsync("div", { class: "calendar-next-prev" }, hAsync("ion-buttons", null, hAsync("ion-button", { "aria-label": "Previous month", disabled: prevMonthDisabled, onClick: () => this.prevMonth() }, hAsync("ion-icon", { dir: hostDir, "aria-hidden": "true", slot: "icon-only", icon: chevronBack, lazy: false, flipRtl: true })), hAsync("ion-button", { "aria-label": "Next month", disabled: nextMonthDisabled, onClick: () => this.nextMonth() }, hAsync("ion-icon", { dir: hostDir, "aria-hidden": "true", slot: "icon-only", icon: chevronForward, lazy: false, flipRtl: true }))))), hAsync("div", { class: "calendar-days-of-week", "aria-hidden": "true" }, getDaysOfWeek(this.locale, mode, this.firstDayOfWeek % 7).map((d) => {
16121
+ return (hAsync("div", { class: "calendar-header" }, hAsync("div", { class: "calendar-action-buttons" }, hAsync("div", { class: "calendar-month-year" }, hAsync("button", { class: {
16122
+ 'calendar-month-year-toggle': true,
16123
+ 'ion-activatable': true,
16124
+ 'ion-focusable': true,
16125
+ }, part: "month-year-button", disabled: disabled, "aria-label": this.showMonthAndYear ? 'Hide year picker' : 'Show year picker', onClick: () => this.toggleMonthAndYearView() }, hAsync("span", { id: "toggle-wrapper" }, getMonthAndYear(this.locale, this.workingParts), hAsync("ion-icon", { "aria-hidden": "true", icon: this.showMonthAndYear ? expandedIcon : collapsedIcon, lazy: false, flipRtl: true })), mode === 'md' && hAsync("ion-ripple-effect", null))), hAsync("div", { class: "calendar-next-prev" }, hAsync("ion-buttons", null, hAsync("ion-button", { "aria-label": "Previous month", disabled: prevMonthDisabled, onClick: () => this.prevMonth() }, hAsync("ion-icon", { dir: hostDir, "aria-hidden": "true", slot: "icon-only", icon: chevronBack, lazy: false, flipRtl: true })), hAsync("ion-button", { "aria-label": "Next month", disabled: nextMonthDisabled, onClick: () => this.nextMonth() }, hAsync("ion-icon", { dir: hostDir, "aria-hidden": "true", slot: "icon-only", icon: chevronForward, lazy: false, flipRtl: true }))))), hAsync("div", { class: "calendar-days-of-week", "aria-hidden": "true" }, getDaysOfWeek(this.locale, mode, this.firstDayOfWeek % 7).map((d) => {
16149
16126
  return hAsync("div", { class: "day-of-week" }, d);
16150
16127
  }))));
16151
16128
  }
@@ -16306,7 +16283,7 @@ class Datetime {
16306
16283
  * This will correctly scroll the element position to the correct time value,
16307
16284
  * before the popover is fully presented.
16308
16285
  */
16309
- const cols = ev.target.querySelectorAll('ion-picker-column-internal');
16286
+ const cols = ev.target.querySelectorAll('ion-picker-column');
16310
16287
  // TODO (FW-615): Potentially remove this when intersection observers are fixed in picker column
16311
16288
  cols.forEach((col) => col.scrollActiveItemIntoView());
16312
16289
  }, style: {
@@ -16500,6 +16477,8 @@ class Datetime {
16500
16477
  }; }
16501
16478
  }
16502
16479
  let datetimeIds = 0;
16480
+ const WHEEL_ITEM_PART = 'wheel-item';
16481
+ const WHEEL_ITEM_ACTIVE_PART = `active`;
16503
16482
 
16504
16483
  const iosDatetimeButtonCss = "/*!@:host*/.sc-ion-datetime-button-ios-h{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}/*!@:host button*/.sc-ion-datetime-button-ios-h button.sc-ion-datetime-button-ios{border-radius:8px;-webkit-padding-start:12px;padding-inline-start:12px;-webkit-padding-end:12px;padding-inline-end:12px;padding-top:6px;padding-bottom:6px;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;margin-top:0px;margin-bottom:0px;position:relative;-webkit-transition:150ms color ease-in-out;transition:150ms color ease-in-out;border:none;background:var(--ion-color-step-300, #edeef0);color:var(--ion-text-color, #000);font-family:inherit;font-size:1rem;cursor:pointer;overflow:hidden;-webkit-appearance:none;-moz-appearance:none;appearance:none}/*!@:host(.time-active) #time-button,\n:host(.date-active) #date-button*/.time-active.sc-ion-datetime-button-ios-h #time-button.sc-ion-datetime-button-ios,.date-active.sc-ion-datetime-button-ios-h #date-button.sc-ion-datetime-button-ios{color:var(--ion-color-base)}/*!@:host(.datetime-button-disabled)*/.datetime-button-disabled.sc-ion-datetime-button-ios-h{pointer-events:none}/*!@:host(.datetime-button-disabled) button*/.datetime-button-disabled.sc-ion-datetime-button-ios-h button.sc-ion-datetime-button-ios{opacity:0.4}";
16505
16484
 
@@ -18760,6 +18739,8 @@ class Input {
18760
18739
  *
18761
18740
  * Developers who wish to focus an input when an overlay is presented
18762
18741
  * should call `setFocus` after `didPresent` has resolved.
18742
+ *
18743
+ * See [managing focus](/docs/developing/managing-focus) for more information.
18763
18744
  */
18764
18745
  async setFocus() {
18765
18746
  if (this.nativeInput) {
@@ -21709,9 +21690,23 @@ const transition = (opts) => {
21709
21690
  });
21710
21691
  });
21711
21692
  };
21693
+ const LAST_FOCUS = 'ion-last-focus';
21712
21694
  const beforeTransition = (opts) => {
21713
21695
  const enteringEl = opts.enteringEl;
21714
21696
  const leavingEl = opts.leavingEl;
21697
+ const focusManagerEnabled = config.get('experimentalFocusManagerPriority', false);
21698
+ /**
21699
+ * When going back to a previously visited page
21700
+ * focus should typically be moved back to the
21701
+ * element that was last focused when the user
21702
+ * was on this view.
21703
+ */
21704
+ if (focusManagerEnabled) {
21705
+ const activeEl = document.activeElement;
21706
+ if (activeEl !== null && (leavingEl === null || leavingEl === void 0 ? void 0 : leavingEl.contains(activeEl))) {
21707
+ activeEl.setAttribute(LAST_FOCUS, 'true');
21708
+ }
21709
+ }
21715
21710
  setZIndex(enteringEl, leavingEl, opts.direction);
21716
21711
  if (opts.showGoBack) {
21717
21712
  enteringEl.classList.add('can-go-back');
@@ -21737,6 +21732,18 @@ const runTransition = async (opts) => {
21737
21732
  const ani = animationBuilder && Build.isBrowser ? animation(animationBuilder, opts) : noAnimation(opts); // fast path for no animation
21738
21733
  return ani;
21739
21734
  };
21735
+ /**
21736
+ * Moves focus to a specified element.
21737
+ * Note that we do not remove the tabindex
21738
+ * because that can result in an unintentional
21739
+ * blur. Non-focusables can't be focused, so the
21740
+ * body will get focused again.
21741
+ */
21742
+ const moveFocus = (el) => {
21743
+ el.tabIndex = -1;
21744
+ el.focus();
21745
+ console.log('focus', el);
21746
+ };
21740
21747
  const afterTransition = (opts) => {
21741
21748
  const enteringEl = opts.enteringEl;
21742
21749
  const leavingEl = opts.leavingEl;
@@ -21746,6 +21753,69 @@ const afterTransition = (opts) => {
21746
21753
  leavingEl.classList.remove('ion-page-invisible');
21747
21754
  leavingEl.style.removeProperty('pointer-events');
21748
21755
  }
21756
+ const focusManagerPriorities = config.get('experimentalFocusManagerPriority', false);
21757
+ if (Array.isArray(focusManagerPriorities) && !enteringEl.contains(document.activeElement)) {
21758
+ /**
21759
+ * When going back to a previously visited view
21760
+ * focus should always be moved back to the element
21761
+ * that the user was last focused on when they were on this view.
21762
+ */
21763
+ const lastFocus = enteringEl.querySelector(`[${LAST_FOCUS}]`);
21764
+ if (lastFocus) {
21765
+ moveFocus(lastFocus);
21766
+ return;
21767
+ }
21768
+ for (const priority of focusManagerPriorities) {
21769
+ switch (priority) {
21770
+ case 'content':
21771
+ /**
21772
+ * If no level one heading exists then we should at least focus the
21773
+ * header so focus starts at the top of the page.
21774
+ */
21775
+ const content = enteringEl.querySelector('main, [role="main"]');
21776
+ if (content) {
21777
+ moveFocus(content);
21778
+ return;
21779
+ }
21780
+ break;
21781
+ case 'heading':
21782
+ /**
21783
+ * If no last focus exists then we should prefer to focus
21784
+ * level one headings. We do not prioritize the header yet
21785
+ * because the header can have non-title elements such as
21786
+ * a back button which is not necessarily helpful
21787
+ * to focus first.
21788
+ */
21789
+ const headingOne = enteringEl.querySelector('h1, [role="heading"][aria-level="1"]');
21790
+ if (headingOne) {
21791
+ moveFocus(headingOne);
21792
+ return;
21793
+ }
21794
+ break;
21795
+ case 'banner':
21796
+ /**
21797
+ * If no level one heading exists then we should at least focus the
21798
+ * header so focus starts at the top of the page.
21799
+ */
21800
+ const header = enteringEl.querySelector('header, [role="banner"]');
21801
+ if (header) {
21802
+ moveFocus(header);
21803
+ return;
21804
+ }
21805
+ break;
21806
+ default:
21807
+ printIonWarning(`Unrecognized focus manager priority value ${priority}`);
21808
+ break;
21809
+ }
21810
+ }
21811
+ /**
21812
+ * If there is no header then focus the page
21813
+ * so focus at least moves to the correct view.
21814
+ * The browser will then determine where within the
21815
+ * page to move focus to.
21816
+ */
21817
+ moveFocus(enteringEl);
21818
+ }
21749
21819
  };
21750
21820
  const getAnimationBuilder = async (opts) => {
21751
21821
  if (!opts.leavingEl || !opts.animated || opts.duration === 0) {
@@ -24545,664 +24615,786 @@ class Note {
24545
24615
  }; }
24546
24616
  }
24547
24617
 
24548
- /**
24549
- * iOS Picker Enter Animation
24550
- */
24551
- const iosEnterAnimation$2 = (baseEl) => {
24552
- const baseAnimation = createAnimation();
24553
- const backdropAnimation = createAnimation();
24554
- const wrapperAnimation = createAnimation();
24555
- backdropAnimation
24556
- .addElement(baseEl.querySelector('ion-backdrop'))
24557
- .fromTo('opacity', 0.01, 'var(--backdrop-opacity)')
24558
- .beforeStyles({
24559
- 'pointer-events': 'none',
24560
- })
24561
- .afterClearStyles(['pointer-events']);
24562
- wrapperAnimation
24563
- .addElement(baseEl.querySelector('.picker-wrapper'))
24564
- .fromTo('transform', 'translateY(100%)', 'translateY(0%)');
24565
- return baseAnimation
24566
- .addElement(baseEl)
24567
- .easing('cubic-bezier(.36,.66,.04,1)')
24568
- .duration(400)
24569
- .addAnimation([backdropAnimation, wrapperAnimation]);
24570
- };
24571
-
24572
- /**
24573
- * iOS Picker Leave Animation
24574
- */
24575
- const iosLeaveAnimation$2 = (baseEl) => {
24576
- const baseAnimation = createAnimation();
24577
- const backdropAnimation = createAnimation();
24578
- const wrapperAnimation = createAnimation();
24579
- backdropAnimation
24580
- .addElement(baseEl.querySelector('ion-backdrop'))
24581
- .fromTo('opacity', 'var(--backdrop-opacity)', 0.01);
24582
- wrapperAnimation
24583
- .addElement(baseEl.querySelector('.picker-wrapper'))
24584
- .fromTo('transform', 'translateY(0%)', 'translateY(100%)');
24585
- return baseAnimation
24586
- .addElement(baseEl)
24587
- .easing('cubic-bezier(.36,.66,.04,1)')
24588
- .duration(400)
24589
- .addAnimation([backdropAnimation, wrapperAnimation]);
24590
- };
24591
-
24592
- 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}}}";
24618
+ const pickerIosCss$1 = "/*!@:host*/.sc-ion-picker-ios-h{display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:200px;direction:ltr;z-index:0}/*!@:host .picker-before,\n:host .picker-after*/.sc-ion-picker-ios-h .picker-before.sc-ion-picker-ios,.sc-ion-picker-ios-h .picker-after.sc-ion-picker-ios{position:absolute;width:100%;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:1;pointer-events:none}/*!@:host .picker-before*/.sc-ion-picker-ios-h .picker-before.sc-ion-picker-ios{top:0;height:83px}@supports (inset-inline-start: 0){/*!@:host .picker-before*/.sc-ion-picker-ios-h .picker-before.sc-ion-picker-ios{inset-inline-start:0}}@supports not (inset-inline-start: 0){/*!@:host .picker-before*/.sc-ion-picker-ios-h .picker-before.sc-ion-picker-ios{left:0}/*!@:host-context([dir=rtl]) .picker-before*/[dir=rtl].sc-ion-picker-ios-h .picker-before.sc-ion-picker-ios,[dir=rtl] .sc-ion-picker-ios-h .picker-before.sc-ion-picker-ios{left:unset;right:unset;right:0}/*!@@supports selector(:dir(rtl))*/@supports .sc-ion-picker-ios selector(.sc-ion-picker-ios:dir(rtl)){.sc-ion-picker-ios-h:dir(rtl) .picker-before{left:unset;right:unset;right:0}}}/*!@:host .picker-after*/.sc-ion-picker-ios-h .picker-after.sc-ion-picker-ios{top:116px;height:84px}@supports (inset-inline-start: 0){/*!@:host .picker-after*/.sc-ion-picker-ios-h .picker-after.sc-ion-picker-ios{inset-inline-start:0}}@supports not (inset-inline-start: 0){/*!@:host .picker-after*/.sc-ion-picker-ios-h .picker-after.sc-ion-picker-ios{left:0}/*!@:host-context([dir=rtl]) .picker-after*/[dir=rtl].sc-ion-picker-ios-h .picker-after.sc-ion-picker-ios,[dir=rtl] .sc-ion-picker-ios-h .picker-after.sc-ion-picker-ios{left:unset;right:unset;right:0}/*!@@supports selector(:dir(rtl))*/@supports .sc-ion-picker-ios selector(.sc-ion-picker-ios:dir(rtl)){.sc-ion-picker-ios-h:dir(rtl) .picker-after{left:unset;right:unset;right:0}}}/*!@:host .picker-highlight*/.sc-ion-picker-ios-h .picker-highlight.sc-ion-picker-ios{border-radius:var(--highlight-border-radius, 8px);left:0;right:0;top:50%;bottom:0;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0;position:absolute;width:calc(100% - 16px);height:34px;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:var(--highlight-background);z-index:-1}/*!@:host input*/.sc-ion-picker-ios-h input.sc-ion-picker-ios{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;margin:0;padding:0;border:0;outline:0;clip:rect(0 0 0 0);opacity:0;overflow:hidden;-webkit-appearance:none;-moz-appearance:none}/*!@:host ::slotted(ion-picker-column:first-of-type)*/.sc-ion-picker-ios-h .sc-ion-picker-ios-s>ion-picker-column:first-of-type{text-align:start}/*!@:host ::slotted(ion-picker-column:last-of-type)*/.sc-ion-picker-ios-h .sc-ion-picker-ios-s>ion-picker-column:last-of-type{text-align:end}/*!@:host ::slotted(ion-picker-column:only-child)*/.sc-ion-picker-ios-h .sc-ion-picker-ios-s>ion-picker-column:only-child{text-align:center}/*!@:host .picker-before*/.sc-ion-picker-ios-h .picker-before.sc-ion-picker-ios{background:-webkit-gradient(linear, left top, left bottom, color-stop(20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), to(rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8)));background:linear-gradient(to bottom, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8) 100%)}/*!@:host .picker-after*/.sc-ion-picker-ios-h .picker-after.sc-ion-picker-ios{background:-webkit-gradient(linear, left bottom, left top, color-stop(20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), to(rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8)));background:linear-gradient(to top, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8) 100%)}/*!@:host .picker-highlight*/.sc-ion-picker-ios-h .picker-highlight.sc-ion-picker-ios{background:var(--highlight-background, var(--ion-color-step-150, #eeeeef))}";
24593
24619
 
24594
- 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}}}";
24620
+ const pickerMdCss$1 = "/*!@:host*/.sc-ion-picker-md-h{display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:200px;direction:ltr;z-index:0}/*!@:host .picker-before,\n:host .picker-after*/.sc-ion-picker-md-h .picker-before.sc-ion-picker-md,.sc-ion-picker-md-h .picker-after.sc-ion-picker-md{position:absolute;width:100%;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:1;pointer-events:none}/*!@:host .picker-before*/.sc-ion-picker-md-h .picker-before.sc-ion-picker-md{top:0;height:83px}@supports (inset-inline-start: 0){/*!@:host .picker-before*/.sc-ion-picker-md-h .picker-before.sc-ion-picker-md{inset-inline-start:0}}@supports not (inset-inline-start: 0){/*!@:host .picker-before*/.sc-ion-picker-md-h .picker-before.sc-ion-picker-md{left:0}/*!@:host-context([dir=rtl]) .picker-before*/[dir=rtl].sc-ion-picker-md-h .picker-before.sc-ion-picker-md,[dir=rtl] .sc-ion-picker-md-h .picker-before.sc-ion-picker-md{left:unset;right:unset;right:0}/*!@@supports selector(:dir(rtl))*/@supports .sc-ion-picker-md selector(.sc-ion-picker-md:dir(rtl)){.sc-ion-picker-md-h:dir(rtl) .picker-before{left:unset;right:unset;right:0}}}/*!@:host .picker-after*/.sc-ion-picker-md-h .picker-after.sc-ion-picker-md{top:116px;height:84px}@supports (inset-inline-start: 0){/*!@:host .picker-after*/.sc-ion-picker-md-h .picker-after.sc-ion-picker-md{inset-inline-start:0}}@supports not (inset-inline-start: 0){/*!@:host .picker-after*/.sc-ion-picker-md-h .picker-after.sc-ion-picker-md{left:0}/*!@:host-context([dir=rtl]) .picker-after*/[dir=rtl].sc-ion-picker-md-h .picker-after.sc-ion-picker-md,[dir=rtl] .sc-ion-picker-md-h .picker-after.sc-ion-picker-md{left:unset;right:unset;right:0}/*!@@supports selector(:dir(rtl))*/@supports .sc-ion-picker-md selector(.sc-ion-picker-md:dir(rtl)){.sc-ion-picker-md-h:dir(rtl) .picker-after{left:unset;right:unset;right:0}}}/*!@:host .picker-highlight*/.sc-ion-picker-md-h .picker-highlight.sc-ion-picker-md{border-radius:var(--highlight-border-radius, 8px);left:0;right:0;top:50%;bottom:0;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0;position:absolute;width:calc(100% - 16px);height:34px;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:var(--highlight-background);z-index:-1}/*!@:host input*/.sc-ion-picker-md-h input.sc-ion-picker-md{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;margin:0;padding:0;border:0;outline:0;clip:rect(0 0 0 0);opacity:0;overflow:hidden;-webkit-appearance:none;-moz-appearance:none}/*!@:host ::slotted(ion-picker-column:first-of-type)*/.sc-ion-picker-md-h .sc-ion-picker-md-s>ion-picker-column:first-of-type{text-align:start}/*!@:host ::slotted(ion-picker-column:last-of-type)*/.sc-ion-picker-md-h .sc-ion-picker-md-s>ion-picker-column:last-of-type{text-align:end}/*!@:host ::slotted(ion-picker-column:only-child)*/.sc-ion-picker-md-h .sc-ion-picker-md-s>ion-picker-column:only-child{text-align:center}/*!@:host .picker-before*/.sc-ion-picker-md-h .picker-before.sc-ion-picker-md{background:-webkit-gradient(linear, left top, left bottom, color-stop(20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), color-stop(90%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0)));background:linear-gradient(to bottom, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0) 90%)}/*!@:host .picker-after*/.sc-ion-picker-md-h .picker-after.sc-ion-picker-md{background:-webkit-gradient(linear, left bottom, left top, color-stop(30%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), color-stop(90%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0)));background:linear-gradient(to top, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 30%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0) 90%)}";
24595
24621
 
24596
- // TODO(FW-2832): types
24597
24622
  /**
24598
24623
  * @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
24599
24624
  */
24600
- class Picker {
24625
+ class Picker$1 {
24601
24626
  constructor(hostRef) {
24602
24627
  registerInstance(this, hostRef);
24603
- this.didPresent = createEvent(this, "ionPickerDidPresent", 7);
24604
- this.willPresent = createEvent(this, "ionPickerWillPresent", 7);
24605
- this.willDismiss = createEvent(this, "ionPickerWillDismiss", 7);
24606
- this.didDismiss = createEvent(this, "ionPickerDidDismiss", 7);
24607
- this.didPresentShorthand = createEvent(this, "didPresent", 7);
24608
- this.willPresentShorthand = createEvent(this, "willPresent", 7);
24609
- this.willDismissShorthand = createEvent(this, "willDismiss", 7);
24610
- this.didDismissShorthand = createEvent(this, "didDismiss", 7);
24611
- this.delegateController = createDelegateController(this);
24612
- this.lockController = createLockController();
24613
- this.triggerController = createTriggerController();
24614
- this.onBackdropTap = () => {
24615
- this.dismiss(undefined, BACKDROP);
24616
- };
24617
- this.dispatchCancelHandler = (ev) => {
24618
- const role = ev.detail.role;
24619
- if (isCancel(role)) {
24620
- const cancelButton = this.buttons.find((b) => b.role === 'cancel');
24621
- this.callButtonHandler(cancelButton);
24628
+ this.ionInputModeChange = createEvent(this, "ionInputModeChange", 7);
24629
+ this.useInputMode = false;
24630
+ this.isInHighlightBounds = (ev) => {
24631
+ const { highlightEl } = this;
24632
+ if (!highlightEl) {
24633
+ return false;
24634
+ }
24635
+ const bbox = highlightEl.getBoundingClientRect();
24636
+ /**
24637
+ * Check to see if the user clicked
24638
+ * outside the bounds of the highlight.
24639
+ */
24640
+ const outsideX = ev.clientX < bbox.left || ev.clientX > bbox.right;
24641
+ const outsideY = ev.clientY < bbox.top || ev.clientY > bbox.bottom;
24642
+ if (outsideX || outsideY) {
24643
+ return false;
24622
24644
  }
24645
+ return true;
24623
24646
  };
24624
- this.presented = false;
24625
- this.overlayIndex = undefined;
24626
- this.delegate = undefined;
24627
- this.hasController = false;
24628
- this.keyboardClose = true;
24629
- this.enterAnimation = undefined;
24630
- this.leaveAnimation = undefined;
24631
- this.buttons = [];
24632
- this.columns = [];
24633
- this.cssClass = undefined;
24634
- this.duration = 0;
24635
- this.showBackdrop = true;
24636
- this.backdropDismiss = true;
24637
- this.animated = true;
24638
- this.htmlAttributes = undefined;
24639
- this.isOpen = false;
24640
- this.trigger = undefined;
24641
- }
24642
- onIsOpenChange(newValue, oldValue) {
24643
- if (newValue === true && oldValue === false) {
24644
- this.present();
24645
- }
24646
- else if (newValue === false && oldValue === true) {
24647
- this.dismiss();
24648
- }
24649
- }
24650
- triggerChanged() {
24651
- const { trigger, el, triggerController } = this;
24652
- if (trigger) {
24653
- triggerController.addClickListener(el, trigger);
24654
- }
24655
- }
24656
- connectedCallback() {
24657
- prepareOverlay(this.el);
24658
- this.triggerChanged();
24659
- }
24660
- disconnectedCallback() {
24661
- this.triggerController.removeClickListener();
24662
- }
24663
- componentWillLoad() {
24664
- setOverlayId(this.el);
24665
- }
24666
- componentDidLoad() {
24667
24647
  /**
24668
- * If picker was rendered with isOpen="true"
24669
- * then we should open picker immediately.
24648
+ * If we are no longer focused
24649
+ * on a picker column, then we should
24650
+ * exit input mode. An exception is made
24651
+ * for the input in the picker since having
24652
+ * that focused means we are still in input mode.
24670
24653
  */
24671
- if (this.isOpen === true) {
24672
- raf(() => this.present());
24673
- }
24654
+ this.onFocusOut = (ev) => {
24655
+ // TODO(FW-2832): type
24656
+ const { relatedTarget } = ev;
24657
+ if (!relatedTarget || (relatedTarget.tagName !== 'ION-PICKER-COLUMN' && relatedTarget !== this.inputEl)) {
24658
+ this.exitInputMode();
24659
+ }
24660
+ };
24674
24661
  /**
24675
- * When binding values in frameworks such as Angular
24676
- * it is possible for the value to be set after the Web Component
24677
- * initializes but before the value watcher is set up in Stencil.
24678
- * As a result, the watcher callback may not be fired.
24679
- * We work around this by manually calling the watcher
24680
- * callback when the component has loaded and the watcher
24681
- * is configured.
24662
+ * When picker columns receive focus
24663
+ * the parent picker needs to determine
24664
+ * whether to enter/exit input mode.
24682
24665
  */
24683
- this.triggerChanged();
24684
- }
24685
- /**
24686
- * Present the picker overlay after it has been created.
24687
- */
24688
- async present() {
24689
- const unlock = await this.lockController.lock();
24690
- await this.delegateController.attachViewToDom();
24691
- await present(this, 'pickerEnter', iosEnterAnimation$2, iosEnterAnimation$2, undefined);
24692
- if (this.duration > 0) {
24693
- this.durationTimeout = setTimeout(() => this.dismiss(), this.duration);
24694
- }
24695
- unlock();
24696
- }
24697
- /**
24698
- * Dismiss the picker overlay after it has been presented.
24699
- *
24700
- * @param data Any data to emit in the dismiss events.
24701
- * @param role The role of the element that is dismissing the picker.
24702
- * This can be useful in a button handler for determining which button was
24703
- * clicked to dismiss the picker.
24704
- * Some examples include: ``"cancel"`, `"destructive"`, "selected"`, and `"backdrop"`.
24705
- */
24706
- async dismiss(data, role) {
24707
- const unlock = await this.lockController.lock();
24708
- if (this.durationTimeout) {
24709
- clearTimeout(this.durationTimeout);
24710
- }
24711
- const dismissed = await dismiss(this, data, role, 'pickerLeave', iosLeaveAnimation$2, iosLeaveAnimation$2);
24712
- if (dismissed) {
24713
- this.delegateController.removeViewFromDom();
24714
- }
24715
- unlock();
24716
- return dismissed;
24717
- }
24718
- /**
24719
- * Returns a promise that resolves when the picker did dismiss.
24720
- */
24721
- onDidDismiss() {
24722
- return eventMethod(this.el, 'ionPickerDidDismiss');
24723
- }
24724
- /**
24725
- * Returns a promise that resolves when the picker will dismiss.
24726
- */
24727
- onWillDismiss() {
24728
- return eventMethod(this.el, 'ionPickerWillDismiss');
24729
- }
24730
- /**
24731
- * Get the column that matches the specified name.
24732
- *
24733
- * @param name The name of the column.
24734
- */
24735
- getColumn(name) {
24736
- return Promise.resolve(this.columns.find((column) => column.name === name));
24737
- }
24738
- async buttonClick(button) {
24739
- const role = button.role;
24740
- if (isCancel(role)) {
24741
- return this.dismiss(undefined, role);
24742
- }
24743
- const shouldDismiss = await this.callButtonHandler(button);
24744
- if (shouldDismiss) {
24745
- return this.dismiss(this.getSelected(), button.role);
24746
- }
24747
- return Promise.resolve();
24748
- }
24749
- async callButtonHandler(button) {
24750
- if (button) {
24751
- // a handler has been provided, execute it
24752
- // pass the handler the values from the inputs
24753
- const rtn = await safeCall(button.handler, this.getSelected());
24754
- if (rtn === false) {
24755
- // if the return value of the handler is false then do not dismiss
24756
- return false;
24666
+ this.onFocusIn = (ev) => {
24667
+ // TODO(FW-2832): type
24668
+ const { target } = ev;
24669
+ /**
24670
+ * Due to browser differences in how/when focus
24671
+ * is dispatched on certain elements, we need to
24672
+ * make sure that this function only ever runs when
24673
+ * focusing a picker column.
24674
+ */
24675
+ if (target.tagName !== 'ION-PICKER-COLUMN') {
24676
+ return;
24757
24677
  }
24758
- }
24759
- return true;
24760
- }
24761
- getSelected() {
24762
- const selected = {};
24763
- this.columns.forEach((col, index) => {
24764
- const selectedColumn = col.selectedIndex !== undefined ? col.options[col.selectedIndex] : undefined;
24765
- selected[col.name] = {
24766
- text: selectedColumn ? selectedColumn.text : undefined,
24767
- value: selectedColumn ? selectedColumn.value : undefined,
24768
- columnIndex: index,
24769
- };
24770
- });
24771
- return selected;
24772
- }
24773
- render() {
24774
- const { htmlAttributes } = this;
24775
- const mode = getIonMode$1(this);
24776
- return (hAsync(Host, Object.assign({ "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
24777
- zIndex: `${20000 + this.overlayIndex}`,
24778
- }, class: Object.assign({ [mode]: true,
24779
- // Used internally for styling
24780
- [`picker-${mode}`]: true, 'overlay-hidden': true }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonPickerWillDismiss: this.dispatchCancelHandler }), hAsync("ion-backdrop", { visible: this.showBackdrop, tappable: this.backdropDismiss }), hAsync("div", { tabindex: "0" }), hAsync("div", { class: "picker-wrapper ion-overlay-wrapper", role: "dialog" }, hAsync("div", { class: "picker-toolbar" }, this.buttons.map((b) => (hAsync("div", { class: buttonWrapperClass(b) }, hAsync("button", { type: "button", onClick: () => this.buttonClick(b), class: buttonClass$1(b) }, b.text))))), hAsync("div", { class: "picker-columns" }, hAsync("div", { class: "picker-above-highlight" }), this.presented && this.columns.map((c) => hAsync("ion-picker-column", { col: c })), hAsync("div", { class: "picker-below-highlight" }))), hAsync("div", { tabindex: "0" })));
24781
- }
24782
- get el() { return getElement(this); }
24783
- static get watchers() { return {
24784
- "isOpen": ["onIsOpenChange"],
24785
- "trigger": ["triggerChanged"]
24786
- }; }
24787
- static get style() { return {
24788
- ios: pickerIosCss,
24789
- md: pickerMdCss
24790
- }; }
24791
- static get cmpMeta() { return {
24792
- "$flags$": 34,
24793
- "$tagName$": "ion-picker",
24794
- "$members$": {
24795
- "overlayIndex": [2, "overlay-index"],
24796
- "delegate": [16],
24797
- "hasController": [4, "has-controller"],
24798
- "keyboardClose": [4, "keyboard-close"],
24799
- "enterAnimation": [16],
24800
- "leaveAnimation": [16],
24801
- "buttons": [16],
24802
- "columns": [16],
24803
- "cssClass": [1, "css-class"],
24804
- "duration": [2],
24805
- "showBackdrop": [4, "show-backdrop"],
24806
- "backdropDismiss": [4, "backdrop-dismiss"],
24807
- "animated": [4],
24808
- "htmlAttributes": [16],
24809
- "isOpen": [4, "is-open"],
24810
- "trigger": [1],
24811
- "presented": [32],
24812
- "present": [64],
24813
- "dismiss": [64],
24814
- "onDidDismiss": [64],
24815
- "onWillDismiss": [64],
24816
- "getColumn": [64]
24817
- },
24818
- "$listeners$": undefined,
24819
- "$lazyBundleId$": "-",
24820
- "$attrsToReflect$": []
24821
- }; }
24822
- }
24823
- const buttonWrapperClass = (button) => {
24824
- return {
24825
- [`picker-toolbar-${button.role}`]: button.role !== undefined,
24826
- 'picker-toolbar-button': true,
24827
- };
24828
- };
24829
- const buttonClass$1 = (button) => {
24830
- return Object.assign({ 'picker-button': true, 'ion-activatable': true }, getClassMap(button.cssClass));
24831
- };
24832
-
24833
- 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}}";
24834
-
24835
- 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)}";
24836
-
24837
- /**
24838
- * @internal
24839
- */
24840
- class PickerColumnCmp {
24841
- constructor(hostRef) {
24842
- registerInstance(this, hostRef);
24843
- this.ionPickerColChange = createEvent(this, "ionPickerColChange", 7);
24844
- this.optHeight = 0;
24845
- this.rotateFactor = 0;
24846
- this.scaleFactor = 1;
24847
- this.velocity = 0;
24848
- this.y = 0;
24849
- this.noAnimate = true;
24850
- // `colDidChange` is a flag that gets set when the column is changed
24851
- // dynamically. When this flag is set, the column will refresh
24852
- // after the component re-renders to incorporate the new column data.
24853
- // This is necessary because `this.refresh` queries for the option elements,
24854
- // so it needs to wait for the latest elements to be available in the DOM.
24855
- // Ex: column is created with 3 options. User updates the column data
24856
- // to have 5 options. The column will still think it only has 3 options.
24857
- this.colDidChange = false;
24858
- this.col = undefined;
24859
- }
24860
- colChanged() {
24861
- this.colDidChange = true;
24862
- }
24863
- async connectedCallback() {
24864
- let pickerRotateFactor = 0;
24865
- let pickerScaleFactor = 0.81;
24866
- const mode = getIonMode$1(this);
24867
- if (mode === 'ios') {
24868
- pickerRotateFactor = -0.46;
24869
- pickerScaleFactor = 1;
24870
- }
24871
- this.rotateFactor = pickerRotateFactor;
24872
- this.scaleFactor = pickerScaleFactor;
24873
- this.gesture = (await Promise.resolve().then(function () { return index; })).createGesture({
24874
- el: this.el,
24875
- gestureName: 'picker-swipe',
24876
- gesturePriority: 100,
24877
- threshold: 0,
24878
- passive: false,
24879
- onStart: (ev) => this.onStart(ev),
24880
- onMove: (ev) => this.onMove(ev),
24881
- onEnd: (ev) => this.onEnd(ev),
24882
- });
24883
- this.gesture.enable();
24884
- // Options have not been initialized yet
24885
- // Animation must be disabled through the `noAnimate` flag
24886
- // Otherwise, the options will render
24887
- // at the top of the column and transition down
24888
- this.tmrId = setTimeout(() => {
24889
- this.noAnimate = false;
24890
- // After initialization, `refresh()` will be called
24891
- // At this point, animation will be enabled. The options will
24892
- // animate as they are being selected.
24893
- this.refresh(true);
24894
- }, 250);
24895
- }
24896
- componentDidLoad() {
24897
- this.onDomChange();
24898
- }
24899
- componentDidUpdate() {
24900
- // Options may have changed since last update.
24901
- if (this.colDidChange) {
24902
- // Animation must be disabled through the `onDomChange` parameter.
24903
- // Otherwise, the recently added options will render
24904
- // at the top of the column and transition down
24905
- this.onDomChange(true, false);
24906
- this.colDidChange = false;
24907
- }
24908
- }
24909
- disconnectedCallback() {
24910
- if (this.rafId !== undefined)
24911
- cancelAnimationFrame(this.rafId);
24912
- if (this.tmrId)
24913
- clearTimeout(this.tmrId);
24914
- if (this.gesture) {
24915
- this.gesture.destroy();
24916
- this.gesture = undefined;
24917
- }
24918
- }
24919
- emitColChange() {
24920
- this.ionPickerColChange.emit(this.col);
24921
- }
24922
- setSelected(selectedIndex, duration) {
24923
- // if there is a selected index, then figure out it's y position
24924
- // if there isn't a selected index, then just use the top y position
24925
- const y = selectedIndex > -1 ? -(selectedIndex * this.optHeight) : 0;
24926
- this.velocity = 0;
24927
- // set what y position we're at
24928
- if (this.rafId !== undefined)
24929
- cancelAnimationFrame(this.rafId);
24930
- this.update(y, duration, true);
24931
- this.emitColChange();
24932
- }
24933
- update(y, duration, saveY) {
24934
- if (!this.optsEl) {
24935
- return;
24936
- }
24937
- // ensure we've got a good round number :)
24938
- let translateY = 0;
24939
- let translateZ = 0;
24940
- const { col, rotateFactor } = this;
24941
- const prevSelected = col.selectedIndex;
24942
- const selectedIndex = (col.selectedIndex = this.indexForY(-y));
24943
- const durationStr = duration === 0 ? '' : duration + 'ms';
24944
- const scaleStr = `scale(${this.scaleFactor})`;
24945
- const children = this.optsEl.children;
24946
- for (let i = 0; i < children.length; i++) {
24947
- const button = children[i];
24948
- const opt = col.options[i];
24949
- const optOffset = i * this.optHeight + y;
24950
- let transform = '';
24951
- if (rotateFactor !== 0) {
24952
- const rotateX = optOffset * rotateFactor;
24953
- if (Math.abs(rotateX) <= 90) {
24954
- translateY = 0;
24955
- translateZ = 90;
24956
- transform = `rotateX(${rotateX}deg) `;
24678
+ /**
24679
+ * If we have actionOnClick
24680
+ * then this means the user focused
24681
+ * a picker column via mouse or
24682
+ * touch (i.e. a PointerEvent). As a result,
24683
+ * we should not enter/exit input mode
24684
+ * until the click event has fired, which happens
24685
+ * after the `focusin` event.
24686
+ *
24687
+ * Otherwise, the user likely focused
24688
+ * the column using their keyboard and
24689
+ * we should enter/exit input mode automatically.
24690
+ */
24691
+ if (!this.actionOnClick) {
24692
+ const columnEl = target;
24693
+ const allowInput = columnEl.numericInput;
24694
+ if (allowInput) {
24695
+ this.enterInputMode(columnEl, false);
24957
24696
  }
24958
24697
  else {
24959
- translateY = -9999;
24698
+ this.exitInputMode();
24960
24699
  }
24961
24700
  }
24962
- else {
24963
- translateZ = 0;
24964
- translateY = optOffset;
24965
- }
24966
- const selected = selectedIndex === i;
24967
- transform += `translate3d(0px,${translateY}px,${translateZ}px) `;
24968
- if (this.scaleFactor !== 1 && !selected) {
24969
- transform += scaleStr;
24701
+ };
24702
+ /**
24703
+ * On click we need to run an actionOnClick
24704
+ * function that has been set in onPointerDown
24705
+ * so that we enter/exit input mode correctly.
24706
+ */
24707
+ this.onClick = () => {
24708
+ const { actionOnClick } = this;
24709
+ if (actionOnClick) {
24710
+ actionOnClick();
24711
+ this.actionOnClick = undefined;
24970
24712
  }
24971
- // Update transition duration
24972
- if (this.noAnimate) {
24973
- opt.duration = 0;
24974
- button.style.transitionDuration = '';
24713
+ };
24714
+ /**
24715
+ * Clicking a column also focuses the column on
24716
+ * certain browsers, so we use onPointerDown
24717
+ * to tell the onFocusIn function that users
24718
+ * are trying to click the column rather than
24719
+ * focus the column using the keyboard. When the
24720
+ * user completes the click, the onClick function
24721
+ * runs and runs the actionOnClick callback.
24722
+ */
24723
+ this.onPointerDown = (ev) => {
24724
+ const { useInputMode, inputModeColumn, el } = this;
24725
+ if (this.isInHighlightBounds(ev)) {
24726
+ /**
24727
+ * If we were already in
24728
+ * input mode, then we should determine
24729
+ * if we tapped a particular column and
24730
+ * should switch to input mode for
24731
+ * that specific column.
24732
+ */
24733
+ if (useInputMode) {
24734
+ /**
24735
+ * If we tapped a picker column
24736
+ * then we should either switch to input
24737
+ * mode for that column or all columns.
24738
+ * Otherwise we should exit input mode
24739
+ * since we just tapped the highlight and
24740
+ * not a column.
24741
+ */
24742
+ if (ev.target.tagName === 'ION-PICKER-COLUMN') {
24743
+ /**
24744
+ * If user taps 2 different columns
24745
+ * then we should just switch to input mode
24746
+ * for the new column rather than switching to
24747
+ * input mode for all columns.
24748
+ */
24749
+ if (inputModeColumn && inputModeColumn === ev.target) {
24750
+ this.actionOnClick = () => {
24751
+ this.enterInputMode();
24752
+ };
24753
+ }
24754
+ else {
24755
+ this.actionOnClick = () => {
24756
+ this.enterInputMode(ev.target);
24757
+ };
24758
+ }
24759
+ }
24760
+ else {
24761
+ this.actionOnClick = () => {
24762
+ this.exitInputMode();
24763
+ };
24764
+ }
24765
+ /**
24766
+ * If we were not already in
24767
+ * input mode, then we should
24768
+ * enter input mode for all columns.
24769
+ */
24770
+ }
24771
+ else {
24772
+ /**
24773
+ * If there is only 1 numeric input column
24774
+ * then we should skip multi column input.
24775
+ */
24776
+ const columns = el.querySelectorAll('ion-picker-column.picker-column-numeric-input');
24777
+ const columnEl = columns.length === 1 ? ev.target : undefined;
24778
+ this.actionOnClick = () => {
24779
+ this.enterInputMode(columnEl);
24780
+ };
24781
+ }
24782
+ return;
24975
24783
  }
24976
- else if (duration !== opt.duration) {
24977
- opt.duration = duration;
24978
- button.style.transitionDuration = durationStr;
24784
+ this.actionOnClick = () => {
24785
+ this.exitInputMode();
24786
+ };
24787
+ };
24788
+ /**
24789
+ * Enters input mode to allow
24790
+ * for text entry of numeric values.
24791
+ * If on mobile, we focus a hidden input
24792
+ * field so that the on screen keyboard
24793
+ * is brought up. When tabbing using a
24794
+ * keyboard, picker columns receive an outline
24795
+ * to indicate they are focused. As a result,
24796
+ * we should not focus the hidden input as it
24797
+ * would cause the outline to go away, preventing
24798
+ * users from having any visual indication of which
24799
+ * column is focused.
24800
+ */
24801
+ this.enterInputMode = (columnEl, focusInput = true) => {
24802
+ const { inputEl, el } = this;
24803
+ if (!inputEl) {
24804
+ return;
24979
24805
  }
24980
- // Update transform
24981
- if (transform !== opt.transform) {
24982
- opt.transform = transform;
24806
+ /**
24807
+ * Only active input mode if there is at
24808
+ * least one column that accepts numeric input.
24809
+ */
24810
+ const hasInputColumn = el.querySelector('ion-picker-column.picker-column-numeric-input');
24811
+ if (!hasInputColumn) {
24812
+ return;
24983
24813
  }
24984
- button.style.transform = transform;
24985
24814
  /**
24986
- * Ensure that the select column
24987
- * item has the selected class
24815
+ * If columnEl is undefined then
24816
+ * it is assumed that all numeric pickers
24817
+ * are eligible for text entry.
24818
+ * (i.e. hour and minute columns)
24988
24819
  */
24989
- opt.selected = selected;
24990
- if (selected) {
24991
- button.classList.add(PICKER_OPT_SELECTED);
24820
+ this.useInputMode = true;
24821
+ this.inputModeColumn = columnEl;
24822
+ /**
24823
+ * Users with a keyboard and mouse can
24824
+ * activate input mode where the input is
24825
+ * focused as well as when it is not focused,
24826
+ * so we need to make sure we clean up any
24827
+ * old listeners.
24828
+ */
24829
+ if (focusInput) {
24830
+ if (this.destroyKeypressListener) {
24831
+ this.destroyKeypressListener();
24832
+ this.destroyKeypressListener = undefined;
24833
+ }
24834
+ inputEl.focus();
24992
24835
  }
24993
24836
  else {
24994
- button.classList.remove(PICKER_OPT_SELECTED);
24837
+ el.addEventListener('keypress', this.onKeyPress);
24838
+ this.destroyKeypressListener = () => {
24839
+ el.removeEventListener('keypress', this.onKeyPress);
24840
+ };
24995
24841
  }
24996
- }
24997
- this.col.prevSelected = prevSelected;
24998
- if (saveY) {
24999
- this.y = y;
25000
- }
25001
- if (this.lastIndex !== selectedIndex) {
25002
- // have not set a last index yet
25003
- hapticSelectionChanged();
25004
- this.lastIndex = selectedIndex;
25005
- }
25006
- }
25007
- decelerate() {
25008
- if (this.velocity !== 0) {
25009
- // still decelerating
25010
- this.velocity *= DECELERATION_FRICTION;
25011
- // do not let it go slower than a velocity of 1
25012
- this.velocity = this.velocity > 0 ? Math.max(this.velocity, 1) : Math.min(this.velocity, -1);
25013
- let y = this.y + this.velocity;
25014
- if (y > this.minY) {
25015
- // whoops, it's trying to scroll up farther than the options we have!
25016
- y = this.minY;
25017
- this.velocity = 0;
24842
+ this.emitInputModeChange();
24843
+ };
24844
+ this.onKeyPress = (ev) => {
24845
+ const { inputEl } = this;
24846
+ if (!inputEl) {
24847
+ return;
25018
24848
  }
25019
- else if (y < this.maxY) {
25020
- // gahh, it's trying to scroll down farther than we can!
25021
- y = this.maxY;
25022
- this.velocity = 0;
24849
+ const parsedValue = parseInt(ev.key, 10);
24850
+ /**
24851
+ * Only numbers should be allowed
24852
+ */
24853
+ if (!Number.isNaN(parsedValue)) {
24854
+ inputEl.value += ev.key;
24855
+ this.onInputChange();
25023
24856
  }
25024
- this.update(y, 0, true);
25025
- const notLockedIn = Math.round(y) % this.optHeight !== 0 || Math.abs(this.velocity) > 1;
25026
- if (notLockedIn) {
25027
- // isn't locked in yet, keep decelerating until it is
25028
- this.rafId = requestAnimationFrame(() => this.decelerate());
24857
+ };
24858
+ this.selectSingleColumn = () => {
24859
+ const { inputEl, inputModeColumn, singleColumnSearchTimeout } = this;
24860
+ if (!inputEl || !inputModeColumn) {
24861
+ return;
24862
+ }
24863
+ const options = Array.from(inputModeColumn.querySelectorAll('ion-picker-column-option')).filter((el) => el.disabled !== true);
24864
+ /**
24865
+ * If users pause for a bit, the search
24866
+ * value should be reset similar to how a
24867
+ * <select> behaves. So typing "34", waiting,
24868
+ * then typing "5" should select "05".
24869
+ */
24870
+ if (singleColumnSearchTimeout) {
24871
+ clearTimeout(singleColumnSearchTimeout);
24872
+ }
24873
+ this.singleColumnSearchTimeout = setTimeout(() => {
24874
+ inputEl.value = '';
24875
+ this.singleColumnSearchTimeout = undefined;
24876
+ }, 1000);
24877
+ /**
24878
+ * For values that are longer than 2 digits long
24879
+ * we should shift the value over 1 character
24880
+ * to the left. So typing "456" would result in "56".
24881
+ * TODO: If we want to support more than just
24882
+ * time entry, we should update this value to be
24883
+ * the max length of all of the picker items.
24884
+ */
24885
+ if (inputEl.value.length >= 3) {
24886
+ const startIndex = inputEl.value.length - 2;
24887
+ const newString = inputEl.value.substring(startIndex);
24888
+ inputEl.value = newString;
24889
+ this.selectSingleColumn();
24890
+ return;
24891
+ }
24892
+ /**
24893
+ * Checking the value of the input gets priority
24894
+ * first. For example, if the value of the input
24895
+ * is "1" and we entered "2", then the complete value
24896
+ * is "12" and we should select hour 12.
24897
+ *
24898
+ * Regex removes any leading zeros from values like "02",
24899
+ * but it keeps a single zero if there are only zeros in the string.
24900
+ * 0+(?=[1-9]) --> Match 1 or more zeros that are followed by 1-9
24901
+ * 0+(?=0$) --> Match 1 or more zeros that must be followed by one 0 and end.
24902
+ */
24903
+ const findItemFromCompleteValue = options.find(({ textContent }) => {
24904
+ /**
24905
+ * Keyboard entry is currently only used inside of Datetime
24906
+ * where we guarantee textContent is set.
24907
+ * If we end up exposing this feature publicly we should revisit this assumption.
24908
+ */
24909
+ const parsedText = textContent.replace(/^0+(?=[1-9])|0+(?=0$)/, '');
24910
+ return parsedText === inputEl.value;
24911
+ });
24912
+ if (findItemFromCompleteValue) {
24913
+ inputModeColumn.setValue(findItemFromCompleteValue.value);
24914
+ return;
24915
+ }
24916
+ /**
24917
+ * If we typed "56" to get minute 56, then typed "7",
24918
+ * we should select "07" as "567" is not a valid minute.
24919
+ */
24920
+ if (inputEl.value.length === 2) {
24921
+ const changedCharacter = inputEl.value.substring(inputEl.value.length - 1);
24922
+ inputEl.value = changedCharacter;
24923
+ this.selectSingleColumn();
24924
+ }
24925
+ };
24926
+ /**
24927
+ * Searches a list of column items for a particular
24928
+ * value. This is currently used for numeric values.
24929
+ * The zeroBehavior can be set to account for leading
24930
+ * or trailing zeros when looking at the item text.
24931
+ */
24932
+ this.searchColumn = (colEl, value, zeroBehavior = 'start') => {
24933
+ const behavior = zeroBehavior === 'start' ? /^0+/ : /0$/;
24934
+ const option = Array.from(colEl.querySelectorAll('ion-picker-column-option')).find((el) => {
24935
+ return el.disabled !== true && el.textContent.replace(behavior, '') === value;
24936
+ });
24937
+ if (option) {
24938
+ colEl.setValue(option.value);
24939
+ }
24940
+ };
24941
+ this.selectMultiColumn = () => {
24942
+ const { inputEl, el } = this;
24943
+ if (!inputEl) {
24944
+ return;
24945
+ }
24946
+ const numericPickers = Array.from(el.querySelectorAll('ion-picker-column')).filter((col) => col.numericInput);
24947
+ const firstColumn = numericPickers[0];
24948
+ const lastColumn = numericPickers[1];
24949
+ let value = inputEl.value;
24950
+ let minuteValue;
24951
+ switch (value.length) {
24952
+ case 1:
24953
+ this.searchColumn(firstColumn, value);
24954
+ break;
24955
+ case 2:
24956
+ /**
24957
+ * If the first character is `0` or `1` it is
24958
+ * possible that users are trying to type `09`
24959
+ * or `11` into the hour field, so we should look
24960
+ * at that first.
24961
+ */
24962
+ const firstCharacter = inputEl.value.substring(0, 1);
24963
+ value = firstCharacter === '0' || firstCharacter === '1' ? inputEl.value : firstCharacter;
24964
+ this.searchColumn(firstColumn, value);
24965
+ /**
24966
+ * If only checked the first value,
24967
+ * we can check the second value
24968
+ * for a match in the minutes column
24969
+ */
24970
+ if (value.length === 1) {
24971
+ minuteValue = inputEl.value.substring(inputEl.value.length - 1);
24972
+ this.searchColumn(lastColumn, minuteValue, 'end');
24973
+ }
24974
+ break;
24975
+ case 3:
24976
+ /**
24977
+ * If the first character is `0` or `1` it is
24978
+ * possible that users are trying to type `09`
24979
+ * or `11` into the hour field, so we should look
24980
+ * at that first.
24981
+ */
24982
+ const firstCharacterAgain = inputEl.value.substring(0, 1);
24983
+ value =
24984
+ firstCharacterAgain === '0' || firstCharacterAgain === '1'
24985
+ ? inputEl.value.substring(0, 2)
24986
+ : firstCharacterAgain;
24987
+ this.searchColumn(firstColumn, value);
24988
+ /**
24989
+ * If only checked the first value,
24990
+ * we can check the second value
24991
+ * for a match in the minutes column
24992
+ */
24993
+ minuteValue = value.length === 1 ? inputEl.value.substring(1) : inputEl.value.substring(2);
24994
+ this.searchColumn(lastColumn, minuteValue, 'end');
24995
+ break;
24996
+ case 4:
24997
+ /**
24998
+ * If the first character is `0` or `1` it is
24999
+ * possible that users are trying to type `09`
25000
+ * or `11` into the hour field, so we should look
25001
+ * at that first.
25002
+ */
25003
+ const firstCharacterAgainAgain = inputEl.value.substring(0, 1);
25004
+ value =
25005
+ firstCharacterAgainAgain === '0' || firstCharacterAgainAgain === '1'
25006
+ ? inputEl.value.substring(0, 2)
25007
+ : firstCharacterAgainAgain;
25008
+ this.searchColumn(firstColumn, value);
25009
+ /**
25010
+ * If only checked the first value,
25011
+ * we can check the second value
25012
+ * for a match in the minutes column
25013
+ */
25014
+ const minuteValueAgain = value.length === 1
25015
+ ? inputEl.value.substring(1, inputEl.value.length)
25016
+ : inputEl.value.substring(2, inputEl.value.length);
25017
+ this.searchColumn(lastColumn, minuteValueAgain, 'end');
25018
+ break;
25019
+ default:
25020
+ const startIndex = inputEl.value.length - 4;
25021
+ const newString = inputEl.value.substring(startIndex);
25022
+ inputEl.value = newString;
25023
+ this.selectMultiColumn();
25024
+ break;
25025
+ }
25026
+ };
25027
+ /**
25028
+ * Searches the value of the active column
25029
+ * to determine which value users are trying
25030
+ * to select
25031
+ */
25032
+ this.onInputChange = () => {
25033
+ const { useInputMode, inputEl, inputModeColumn } = this;
25034
+ if (!useInputMode || !inputEl) {
25035
+ return;
25036
+ }
25037
+ if (inputModeColumn) {
25038
+ this.selectSingleColumn();
25029
25039
  }
25030
25040
  else {
25031
- this.velocity = 0;
25032
- this.emitColChange();
25033
- hapticSelectionEnd();
25041
+ this.selectMultiColumn();
25034
25042
  }
25043
+ };
25044
+ /**
25045
+ * Emit ionInputModeChange. Picker columns
25046
+ * listen for this event to determine whether
25047
+ * or not their column is "active" for text input.
25048
+ */
25049
+ this.emitInputModeChange = () => {
25050
+ const { useInputMode, inputModeColumn } = this;
25051
+ this.ionInputModeChange.emit({
25052
+ useInputMode,
25053
+ inputModeColumn,
25054
+ });
25055
+ };
25056
+ }
25057
+ /**
25058
+ * When the picker is interacted with
25059
+ * we need to prevent touchstart so other
25060
+ * gestures do not fire. For example,
25061
+ * scrolling on the wheel picker
25062
+ * in ion-datetime should not cause
25063
+ * a card modal to swipe to close.
25064
+ */
25065
+ preventTouchStartPropagation(ev) {
25066
+ ev.stopPropagation();
25067
+ }
25068
+ componentWillLoad() {
25069
+ getElementRoot(this.el).addEventListener('focusin', this.onFocusIn);
25070
+ getElementRoot(this.el).addEventListener('focusout', this.onFocusOut);
25071
+ }
25072
+ /**
25073
+ * @internal
25074
+ * Exits text entry mode for the picker
25075
+ * This method blurs the hidden input
25076
+ * and cause the keyboard to dismiss.
25077
+ */
25078
+ async exitInputMode() {
25079
+ const { inputEl, useInputMode } = this;
25080
+ if (!useInputMode || !inputEl) {
25081
+ return;
25035
25082
  }
25036
- else if (this.y % this.optHeight !== 0) {
25037
- // needs to still get locked into a position so options line up
25038
- const currentPos = Math.abs(this.y % this.optHeight);
25039
- // create a velocity in the direction it needs to scroll
25040
- this.velocity = currentPos > this.optHeight / 2 ? 1 : -1;
25041
- this.decelerate();
25083
+ this.useInputMode = false;
25084
+ this.inputModeColumn = undefined;
25085
+ inputEl.blur();
25086
+ inputEl.value = '';
25087
+ if (this.destroyKeypressListener) {
25088
+ this.destroyKeypressListener();
25089
+ this.destroyKeypressListener = undefined;
25042
25090
  }
25091
+ this.emitInputModeChange();
25043
25092
  }
25044
- indexForY(y) {
25045
- return Math.min(Math.max(Math.abs(Math.round(y / this.optHeight)), 0), this.col.options.length - 1);
25093
+ render() {
25094
+ return (hAsync(Host, { onPointerDown: (ev) => this.onPointerDown(ev), onClick: () => this.onClick() }, hAsync("input", { "aria-hidden": "true", tabindex: -1, inputmode: "numeric", type: "number", ref: (el) => (this.inputEl = el), onInput: () => this.onInputChange(), onBlur: () => this.exitInputMode() }), hAsync("div", { class: "picker-before" }), hAsync("div", { class: "picker-after" }), hAsync("div", { class: "picker-highlight", ref: (el) => (this.highlightEl = el) }), hAsync("slot", null)));
25046
25095
  }
25047
- onStart(detail) {
25048
- // We have to prevent default in order to block scrolling under the picker
25049
- // but we DO NOT have to stop propagation, since we still want
25050
- // some "click" events to capture
25051
- if (detail.event.cancelable) {
25052
- detail.event.preventDefault();
25053
- }
25054
- detail.event.stopPropagation();
25055
- hapticSelectionStart();
25056
- // reset everything
25057
- if (this.rafId !== undefined)
25058
- cancelAnimationFrame(this.rafId);
25059
- const options = this.col.options;
25060
- let minY = options.length - 1;
25061
- let maxY = 0;
25062
- for (let i = 0; i < options.length; i++) {
25063
- if (!options[i].disabled) {
25064
- minY = Math.min(minY, i);
25065
- maxY = Math.max(maxY, i);
25096
+ get el() { return getElement(this); }
25097
+ static get style() { return {
25098
+ ios: pickerIosCss$1,
25099
+ md: pickerMdCss$1
25100
+ }; }
25101
+ static get cmpMeta() { return {
25102
+ "$flags$": 41,
25103
+ "$tagName$": "ion-picker",
25104
+ "$members$": {
25105
+ "exitInputMode": [64]
25106
+ },
25107
+ "$listeners$": [[1, "touchstart", "preventTouchStartPropagation"]],
25108
+ "$lazyBundleId$": "-",
25109
+ "$attrsToReflect$": []
25110
+ }; }
25111
+ }
25112
+
25113
+ /**
25114
+ * iOS Picker Enter Animation
25115
+ */
25116
+ const iosEnterAnimation$2 = (baseEl) => {
25117
+ const baseAnimation = createAnimation();
25118
+ const backdropAnimation = createAnimation();
25119
+ const wrapperAnimation = createAnimation();
25120
+ backdropAnimation
25121
+ .addElement(baseEl.querySelector('ion-backdrop'))
25122
+ .fromTo('opacity', 0.01, 'var(--backdrop-opacity)')
25123
+ .beforeStyles({
25124
+ 'pointer-events': 'none',
25125
+ })
25126
+ .afterClearStyles(['pointer-events']);
25127
+ wrapperAnimation
25128
+ .addElement(baseEl.querySelector('.picker-wrapper'))
25129
+ .fromTo('transform', 'translateY(100%)', 'translateY(0%)');
25130
+ return baseAnimation
25131
+ .addElement(baseEl)
25132
+ .easing('cubic-bezier(.36,.66,.04,1)')
25133
+ .duration(400)
25134
+ .addAnimation([backdropAnimation, wrapperAnimation]);
25135
+ };
25136
+
25137
+ /**
25138
+ * iOS Picker Leave Animation
25139
+ */
25140
+ const iosLeaveAnimation$2 = (baseEl) => {
25141
+ const baseAnimation = createAnimation();
25142
+ const backdropAnimation = createAnimation();
25143
+ const wrapperAnimation = createAnimation();
25144
+ backdropAnimation
25145
+ .addElement(baseEl.querySelector('ion-backdrop'))
25146
+ .fromTo('opacity', 'var(--backdrop-opacity)', 0.01);
25147
+ wrapperAnimation
25148
+ .addElement(baseEl.querySelector('.picker-wrapper'))
25149
+ .fromTo('transform', 'translateY(0%)', 'translateY(100%)');
25150
+ return baseAnimation
25151
+ .addElement(baseEl)
25152
+ .easing('cubic-bezier(.36,.66,.04,1)')
25153
+ .duration(400)
25154
+ .addAnimation([backdropAnimation, wrapperAnimation]);
25155
+ };
25156
+
25157
+ const pickerIosCss = ".sc-ion-picker-legacy-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-legacy-ios-h{inset-inline-start:0}}@supports not (inset-inline-start: 0){.sc-ion-picker-legacy-ios-h{left:0}[dir=rtl].sc-ion-picker-legacy-ios-h,[dir=rtl] .sc-ion-picker-legacy-ios-h{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){.sc-ion-picker-legacy-ios-h:dir(rtl){left:unset;right:unset;right:0}}}.overlay-hidden.sc-ion-picker-legacy-ios-h{display:none}.picker-wrapper.sc-ion-picker-legacy-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-legacy-ios{width:100%;background:transparent;contain:strict;z-index:1}.picker-button.sc-ion-picker-legacy-ios{border:0;font-family:inherit}.picker-button.sc-ion-picker-legacy-ios:active,.picker-button.sc-ion-picker-legacy-ios:focus{outline:none}.picker-columns.sc-ion-picker-legacy-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-legacy-ios,.picker-below-highlight.sc-ion-picker-legacy-ios{display:none;pointer-events:none}.sc-ion-picker-legacy-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-legacy-ios{display:-ms-flexbox;display:flex;height:44px;border-bottom:0.55px solid var(--border-color)}.picker-toolbar-button.sc-ion-picker-legacy-ios{-ms-flex:1;flex:1;text-align:end}.picker-toolbar-button.sc-ion-picker-legacy-ios:last-child .picker-button.sc-ion-picker-legacy-ios{font-weight:600}.picker-toolbar-button.sc-ion-picker-legacy-ios:first-child{font-weight:normal;text-align:start}.picker-button.sc-ion-picker-legacy-ios,.picker-button.ion-activated.sc-ion-picker-legacy-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-legacy-ios{height:215px;-webkit-perspective:1000px;perspective:1000px}.picker-above-highlight.sc-ion-picker-legacy-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-legacy-ios{inset-inline-start:0}}@supports not (inset-inline-start: 0){.picker-above-highlight.sc-ion-picker-legacy-ios{left:0}[dir=rtl].sc-ion-picker-legacy-ios-h .picker-above-highlight.sc-ion-picker-legacy-ios,[dir=rtl] .sc-ion-picker-legacy-ios-h .picker-above-highlight.sc-ion-picker-legacy-ios{left:unset;right:unset;right:0}[dir=rtl].sc-ion-picker-legacy-ios .picker-above-highlight.sc-ion-picker-legacy-ios{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){.picker-above-highlight.sc-ion-picker-legacy-ios:dir(rtl){left:unset;right:unset;right:0}}}.picker-below-highlight.sc-ion-picker-legacy-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-legacy-ios{inset-inline-start:0}}@supports not (inset-inline-start: 0){.picker-below-highlight.sc-ion-picker-legacy-ios{left:0}[dir=rtl].sc-ion-picker-legacy-ios-h .picker-below-highlight.sc-ion-picker-legacy-ios,[dir=rtl] .sc-ion-picker-legacy-ios-h .picker-below-highlight.sc-ion-picker-legacy-ios{left:unset;right:unset;right:0}[dir=rtl].sc-ion-picker-legacy-ios .picker-below-highlight.sc-ion-picker-legacy-ios{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){.picker-below-highlight.sc-ion-picker-legacy-ios:dir(rtl){left:unset;right:unset;right:0}}}";
25158
+
25159
+ const pickerMdCss = ".sc-ion-picker-legacy-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-legacy-md-h{inset-inline-start:0}}@supports not (inset-inline-start: 0){.sc-ion-picker-legacy-md-h{left:0}[dir=rtl].sc-ion-picker-legacy-md-h,[dir=rtl] .sc-ion-picker-legacy-md-h{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){.sc-ion-picker-legacy-md-h:dir(rtl){left:unset;right:unset;right:0}}}.overlay-hidden.sc-ion-picker-legacy-md-h{display:none}.picker-wrapper.sc-ion-picker-legacy-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-legacy-md{width:100%;background:transparent;contain:strict;z-index:1}.picker-button.sc-ion-picker-legacy-md{border:0;font-family:inherit}.picker-button.sc-ion-picker-legacy-md:active,.picker-button.sc-ion-picker-legacy-md:focus{outline:none}.picker-columns.sc-ion-picker-legacy-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-legacy-md,.picker-below-highlight.sc-ion-picker-legacy-md{display:none;pointer-events:none}.sc-ion-picker-legacy-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-legacy-md{display:-ms-flexbox;display:flex;-ms-flex-pack:end;justify-content:flex-end;height:44px}.picker-button.sc-ion-picker-legacy-md,.picker-button.ion-activated.sc-ion-picker-legacy-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-legacy-md{height:216px;-webkit-perspective:1800px;perspective:1800px}.picker-above-highlight.sc-ion-picker-legacy-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-legacy-md{inset-inline-start:0}}@supports not (inset-inline-start: 0){.picker-above-highlight.sc-ion-picker-legacy-md{left:0}[dir=rtl].sc-ion-picker-legacy-md-h .picker-above-highlight.sc-ion-picker-legacy-md,[dir=rtl] .sc-ion-picker-legacy-md-h .picker-above-highlight.sc-ion-picker-legacy-md{left:unset;right:unset;right:0}[dir=rtl].sc-ion-picker-legacy-md .picker-above-highlight.sc-ion-picker-legacy-md{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){.picker-above-highlight.sc-ion-picker-legacy-md:dir(rtl){left:unset;right:unset;right:0}}}.picker-below-highlight.sc-ion-picker-legacy-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-legacy-md{inset-inline-start:0}}@supports not (inset-inline-start: 0){.picker-below-highlight.sc-ion-picker-legacy-md{left:0}[dir=rtl].sc-ion-picker-legacy-md-h .picker-below-highlight.sc-ion-picker-legacy-md,[dir=rtl] .sc-ion-picker-legacy-md-h .picker-below-highlight.sc-ion-picker-legacy-md{left:unset;right:unset;right:0}[dir=rtl].sc-ion-picker-legacy-md .picker-below-highlight.sc-ion-picker-legacy-md{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){.picker-below-highlight.sc-ion-picker-legacy-md:dir(rtl){left:unset;right:unset;right:0}}}";
25160
+
25161
+ // TODO(FW-2832): types
25162
+ /**
25163
+ * @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
25164
+ */
25165
+ class Picker {
25166
+ constructor(hostRef) {
25167
+ registerInstance(this, hostRef);
25168
+ this.didPresent = createEvent(this, "ionPickerDidPresent", 7);
25169
+ this.willPresent = createEvent(this, "ionPickerWillPresent", 7);
25170
+ this.willDismiss = createEvent(this, "ionPickerWillDismiss", 7);
25171
+ this.didDismiss = createEvent(this, "ionPickerDidDismiss", 7);
25172
+ this.didPresentShorthand = createEvent(this, "didPresent", 7);
25173
+ this.willPresentShorthand = createEvent(this, "willPresent", 7);
25174
+ this.willDismissShorthand = createEvent(this, "willDismiss", 7);
25175
+ this.didDismissShorthand = createEvent(this, "didDismiss", 7);
25176
+ this.delegateController = createDelegateController(this);
25177
+ this.lockController = createLockController();
25178
+ this.triggerController = createTriggerController();
25179
+ this.onBackdropTap = () => {
25180
+ this.dismiss(undefined, BACKDROP);
25181
+ };
25182
+ this.dispatchCancelHandler = (ev) => {
25183
+ const role = ev.detail.role;
25184
+ if (isCancel(role)) {
25185
+ const cancelButton = this.buttons.find((b) => b.role === 'cancel');
25186
+ this.callButtonHandler(cancelButton);
25066
25187
  }
25067
- }
25068
- this.minY = -(minY * this.optHeight);
25069
- this.maxY = -(maxY * this.optHeight);
25188
+ };
25189
+ this.presented = false;
25190
+ this.overlayIndex = undefined;
25191
+ this.delegate = undefined;
25192
+ this.hasController = false;
25193
+ this.keyboardClose = true;
25194
+ this.enterAnimation = undefined;
25195
+ this.leaveAnimation = undefined;
25196
+ this.buttons = [];
25197
+ this.columns = [];
25198
+ this.cssClass = undefined;
25199
+ this.duration = 0;
25200
+ this.showBackdrop = true;
25201
+ this.backdropDismiss = true;
25202
+ this.animated = true;
25203
+ this.htmlAttributes = undefined;
25204
+ this.isOpen = false;
25205
+ this.trigger = undefined;
25070
25206
  }
25071
- onMove(detail) {
25072
- if (detail.event.cancelable) {
25073
- detail.event.preventDefault();
25074
- }
25075
- detail.event.stopPropagation();
25076
- // update the scroll position relative to pointer start position
25077
- let y = this.y + detail.deltaY;
25078
- if (y > this.minY) {
25079
- // scrolling up higher than scroll area
25080
- y = Math.pow(y, 0.8);
25081
- this.bounceFrom = y;
25207
+ onIsOpenChange(newValue, oldValue) {
25208
+ if (newValue === true && oldValue === false) {
25209
+ this.present();
25082
25210
  }
25083
- else if (y < this.maxY) {
25084
- // scrolling down below scroll area
25085
- y += Math.pow(this.maxY - y, 0.9);
25086
- this.bounceFrom = y;
25211
+ else if (newValue === false && oldValue === true) {
25212
+ this.dismiss();
25087
25213
  }
25088
- else {
25089
- this.bounceFrom = 0;
25214
+ }
25215
+ triggerChanged() {
25216
+ const { trigger, el, triggerController } = this;
25217
+ if (trigger) {
25218
+ triggerController.addClickListener(el, trigger);
25090
25219
  }
25091
- this.update(y, 0, false);
25092
25220
  }
25093
- onEnd(detail) {
25094
- if (this.bounceFrom > 0) {
25095
- // bounce back up
25096
- this.update(this.minY, 100, true);
25097
- this.emitColChange();
25098
- return;
25221
+ connectedCallback() {
25222
+ prepareOverlay(this.el);
25223
+ this.triggerChanged();
25224
+ }
25225
+ disconnectedCallback() {
25226
+ this.triggerController.removeClickListener();
25227
+ }
25228
+ componentWillLoad() {
25229
+ setOverlayId(this.el);
25230
+ }
25231
+ componentDidLoad() {
25232
+ printIonWarning('ion-picker-legacy and ion-picker-legacy-column have been deprecated in favor of new versions of the ion-picker and ion-picker-column components. These new components display inline with your page content allowing for more presentation flexibility than before.', this.el);
25233
+ /**
25234
+ * If picker was rendered with isOpen="true"
25235
+ * then we should open picker immediately.
25236
+ */
25237
+ if (this.isOpen === true) {
25238
+ raf(() => this.present());
25099
25239
  }
25100
- else if (this.bounceFrom < 0) {
25101
- // bounce back down
25102
- this.update(this.maxY, 100, true);
25103
- this.emitColChange();
25104
- return;
25240
+ }
25241
+ /**
25242
+ * Present the picker overlay after it has been created.
25243
+ */
25244
+ async present() {
25245
+ const unlock = await this.lockController.lock();
25246
+ await this.delegateController.attachViewToDom();
25247
+ await present(this, 'pickerEnter', iosEnterAnimation$2, iosEnterAnimation$2, undefined);
25248
+ if (this.duration > 0) {
25249
+ this.durationTimeout = setTimeout(() => this.dismiss(), this.duration);
25105
25250
  }
25106
- this.velocity = clamp(-MAX_PICKER_SPEED, detail.velocityY * 23, MAX_PICKER_SPEED);
25107
- if (this.velocity === 0 && detail.deltaY === 0) {
25108
- const opt = detail.event.target.closest('.picker-opt');
25109
- if (opt === null || opt === void 0 ? void 0 : opt.hasAttribute('opt-index')) {
25110
- this.setSelected(parseInt(opt.getAttribute('opt-index'), 10), TRANSITION_DURATION);
25111
- }
25251
+ unlock();
25252
+ }
25253
+ /**
25254
+ * Dismiss the picker overlay after it has been presented.
25255
+ *
25256
+ * @param data Any data to emit in the dismiss events.
25257
+ * @param role The role of the element that is dismissing the picker.
25258
+ * This can be useful in a button handler for determining which button was
25259
+ * clicked to dismiss the picker.
25260
+ * Some examples include: ``"cancel"`, `"destructive"`, "selected"`, and `"backdrop"`.
25261
+ */
25262
+ async dismiss(data, role) {
25263
+ const unlock = await this.lockController.lock();
25264
+ if (this.durationTimeout) {
25265
+ clearTimeout(this.durationTimeout);
25112
25266
  }
25113
- else {
25114
- this.y += detail.deltaY;
25115
- if (Math.abs(detail.velocityY) < 0.05) {
25116
- const isScrollingUp = detail.deltaY > 0;
25117
- const optHeightFraction = (Math.abs(this.y) % this.optHeight) / this.optHeight;
25118
- if (isScrollingUp && optHeightFraction > 0.5) {
25119
- this.velocity = Math.abs(this.velocity) * -1;
25120
- }
25121
- else if (!isScrollingUp && optHeightFraction <= 0.5) {
25122
- this.velocity = Math.abs(this.velocity);
25123
- }
25124
- }
25125
- this.decelerate();
25267
+ const dismissed = await dismiss(this, data, role, 'pickerLeave', iosLeaveAnimation$2, iosLeaveAnimation$2);
25268
+ if (dismissed) {
25269
+ this.delegateController.removeViewFromDom();
25126
25270
  }
25271
+ unlock();
25272
+ return dismissed;
25127
25273
  }
25128
- refresh(forceRefresh, animated) {
25129
- var _a;
25130
- let min = this.col.options.length - 1;
25131
- let max = 0;
25132
- const options = this.col.options;
25133
- for (let i = 0; i < options.length; i++) {
25134
- if (!options[i].disabled) {
25135
- min = Math.min(min, i);
25136
- max = Math.max(max, i);
25137
- }
25138
- }
25139
- /**
25140
- * Only update selected value if column has a
25141
- * velocity of 0. If it does not, then the
25142
- * column is animating might land on
25143
- * a value different than the value at
25144
- * selectedIndex
25145
- */
25146
- if (this.velocity !== 0) {
25147
- return;
25274
+ /**
25275
+ * Returns a promise that resolves when the picker did dismiss.
25276
+ */
25277
+ onDidDismiss() {
25278
+ return eventMethod(this.el, 'ionPickerDidDismiss');
25279
+ }
25280
+ /**
25281
+ * Returns a promise that resolves when the picker will dismiss.
25282
+ */
25283
+ onWillDismiss() {
25284
+ return eventMethod(this.el, 'ionPickerWillDismiss');
25285
+ }
25286
+ /**
25287
+ * Get the column that matches the specified name.
25288
+ *
25289
+ * @param name The name of the column.
25290
+ */
25291
+ getColumn(name) {
25292
+ return Promise.resolve(this.columns.find((column) => column.name === name));
25293
+ }
25294
+ async buttonClick(button) {
25295
+ const role = button.role;
25296
+ if (isCancel(role)) {
25297
+ return this.dismiss(undefined, role);
25148
25298
  }
25149
- const selectedIndex = clamp(min, (_a = this.col.selectedIndex) !== null && _a !== void 0 ? _a : 0, max);
25150
- if (this.col.prevSelected !== selectedIndex || forceRefresh) {
25151
- const y = selectedIndex * this.optHeight * -1;
25152
- const duration = animated ? TRANSITION_DURATION : 0;
25153
- this.velocity = 0;
25154
- this.update(y, duration, true);
25299
+ const shouldDismiss = await this.callButtonHandler(button);
25300
+ if (shouldDismiss) {
25301
+ return this.dismiss(this.getSelected(), button.role);
25155
25302
  }
25303
+ return Promise.resolve();
25156
25304
  }
25157
- onDomChange(forceRefresh, animated) {
25158
- const colEl = this.optsEl;
25159
- if (colEl) {
25160
- // DOM READ
25161
- // We perfom a DOM read over a rendered item, this needs to happen after the first render or after the the column has changed
25162
- this.optHeight = colEl.firstElementChild ? colEl.firstElementChild.clientHeight : 0;
25305
+ async callButtonHandler(button) {
25306
+ if (button) {
25307
+ // a handler has been provided, execute it
25308
+ // pass the handler the values from the inputs
25309
+ const rtn = await safeCall(button.handler, this.getSelected());
25310
+ if (rtn === false) {
25311
+ // if the return value of the handler is false then do not dismiss
25312
+ return false;
25313
+ }
25163
25314
  }
25164
- this.refresh(forceRefresh, animated);
25315
+ return true;
25316
+ }
25317
+ getSelected() {
25318
+ const selected = {};
25319
+ this.columns.forEach((col, index) => {
25320
+ const selectedColumn = col.selectedIndex !== undefined ? col.options[col.selectedIndex] : undefined;
25321
+ selected[col.name] = {
25322
+ text: selectedColumn ? selectedColumn.text : undefined,
25323
+ value: selectedColumn ? selectedColumn.value : undefined,
25324
+ columnIndex: index,
25325
+ };
25326
+ });
25327
+ return selected;
25165
25328
  }
25166
25329
  render() {
25167
- const col = this.col;
25330
+ const { htmlAttributes } = this;
25168
25331
  const mode = getIonMode$1(this);
25169
- return (hAsync(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: {
25170
- 'max-width': this.col.columnWidth,
25171
- } }, col.prefix && (hAsync("div", { class: "picker-prefix", style: { width: col.prefixWidth } }, col.prefix)), hAsync("div", { class: "picker-opts", style: { maxWidth: col.optionsWidth }, ref: (el) => (this.optsEl = el) }, col.options.map((o, index) => (hAsync("button", { "aria-label": o.ariaLabel, class: { 'picker-opt': true, 'picker-opt-disabled': !!o.disabled }, "opt-index": index }, o.text)))), col.suffix && (hAsync("div", { class: "picker-suffix", style: { width: col.suffixWidth } }, col.suffix))));
25332
+ return (hAsync(Host, Object.assign({ "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
25333
+ zIndex: `${20000 + this.overlayIndex}`,
25334
+ }, class: Object.assign({ [mode]: true,
25335
+ // Used internally for styling
25336
+ [`picker-${mode}`]: true, 'overlay-hidden': true }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonPickerWillDismiss: this.dispatchCancelHandler }), hAsync("ion-backdrop", { visible: this.showBackdrop, tappable: this.backdropDismiss }), hAsync("div", { tabindex: "0" }), hAsync("div", { class: "picker-wrapper ion-overlay-wrapper", role: "dialog" }, hAsync("div", { class: "picker-toolbar" }, this.buttons.map((b) => (hAsync("div", { class: buttonWrapperClass(b) }, hAsync("button", { type: "button", onClick: () => this.buttonClick(b), class: buttonClass$1(b) }, b.text))))), hAsync("div", { class: "picker-columns" }, hAsync("div", { class: "picker-above-highlight" }), this.presented && this.columns.map((c) => hAsync("ion-picker-legacy-column", { col: c })), hAsync("div", { class: "picker-below-highlight" }))), hAsync("div", { tabindex: "0" })));
25172
25337
  }
25173
25338
  get el() { return getElement(this); }
25174
25339
  static get watchers() { return {
25175
- "col": ["colChanged"]
25340
+ "isOpen": ["onIsOpenChange"],
25341
+ "trigger": ["triggerChanged"]
25176
25342
  }; }
25177
25343
  static get style() { return {
25178
- ios: pickerColumnIosCss,
25179
- md: pickerColumnMdCss
25344
+ ios: pickerIosCss,
25345
+ md: pickerMdCss
25180
25346
  }; }
25181
25347
  static get cmpMeta() { return {
25182
- "$flags$": 32,
25183
- "$tagName$": "ion-picker-column",
25348
+ "$flags$": 34,
25349
+ "$tagName$": "ion-picker-legacy",
25184
25350
  "$members$": {
25185
- "col": [16]
25351
+ "overlayIndex": [2, "overlay-index"],
25352
+ "delegate": [16],
25353
+ "hasController": [4, "has-controller"],
25354
+ "keyboardClose": [4, "keyboard-close"],
25355
+ "enterAnimation": [16],
25356
+ "leaveAnimation": [16],
25357
+ "buttons": [16],
25358
+ "columns": [16],
25359
+ "cssClass": [1, "css-class"],
25360
+ "duration": [2],
25361
+ "showBackdrop": [4, "show-backdrop"],
25362
+ "backdropDismiss": [4, "backdrop-dismiss"],
25363
+ "animated": [4],
25364
+ "htmlAttributes": [16],
25365
+ "isOpen": [4, "is-open"],
25366
+ "trigger": [1],
25367
+ "presented": [32],
25368
+ "present": [64],
25369
+ "dismiss": [64],
25370
+ "onDidDismiss": [64],
25371
+ "onWillDismiss": [64],
25372
+ "getColumn": [64]
25186
25373
  },
25187
25374
  "$listeners$": undefined,
25188
25375
  "$lazyBundleId$": "-",
25189
25376
  "$attrsToReflect$": []
25190
25377
  }; }
25191
25378
  }
25192
- const PICKER_OPT_SELECTED = 'picker-opt-selected';
25193
- const DECELERATION_FRICTION = 0.97;
25194
- const MAX_PICKER_SPEED = 90;
25195
- const TRANSITION_DURATION = 150;
25196
-
25197
- const pickerColumnInternalIosCss = "/*!@:host*/.sc-ion-picker-column-internal-ios-h{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0px;padding-bottom:0px;height:200px;outline:none;font-size:22px;-webkit-scroll-snap-type:y mandatory;-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory;overflow-x:hidden;overflow-y:scroll;scrollbar-width:none;text-align:center}/*!@:host::-webkit-scrollbar*/.sc-ion-picker-column-internal-ios-h::-webkit-scrollbar{display:none}/*!@:host .picker-item*/.sc-ion-picker-column-internal-ios-h .picker-item.sc-ion-picker-column-internal-ios{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;display:block;width:100%;height:34px;border:0px;outline:none;background:transparent;color:inherit;font-family:var(--ion-font-family, inherit);font-size:inherit;line-height:34px;text-align:inherit;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;overflow:hidden;scroll-snap-align:center}/*!@:host .picker-item-empty,\n:host .picker-item[disabled]*/.sc-ion-picker-column-internal-ios-h .picker-item-empty.sc-ion-picker-column-internal-ios,.sc-ion-picker-column-internal-ios-h .picker-item[disabled].sc-ion-picker-column-internal-ios{cursor:default}/*!@:host .picker-item-empty,\n:host(:not([disabled])) .picker-item[disabled]*/.sc-ion-picker-column-internal-ios-h .picker-item-empty.sc-ion-picker-column-internal-ios,.sc-ion-picker-column-internal-ios-h:not([disabled]) .picker-item[disabled].sc-ion-picker-column-internal-ios{scroll-snap-align:none}/*!@:host([disabled])*/[disabled].sc-ion-picker-column-internal-ios-h{overflow-y:hidden}/*!@:host .picker-item[disabled]*/.sc-ion-picker-column-internal-ios-h .picker-item[disabled].sc-ion-picker-column-internal-ios{opacity:0.4}/*!@:host(.picker-column-active) .picker-item.picker-item-active*/.picker-column-active.sc-ion-picker-column-internal-ios-h .picker-item.picker-item-active.sc-ion-picker-column-internal-ios{color:var(--ion-color-base)}@media (any-hover: hover){/*!@:host(:focus)*/.sc-ion-picker-column-internal-ios-h:focus{outline:none;background:rgba(var(--ion-color-base-rgb), 0.2)}}";
25379
+ const buttonWrapperClass = (button) => {
25380
+ return {
25381
+ [`picker-toolbar-${button.role}`]: button.role !== undefined,
25382
+ 'picker-toolbar-button': true,
25383
+ };
25384
+ };
25385
+ const buttonClass$1 = (button) => {
25386
+ return Object.assign({ 'picker-button': true, 'ion-activatable': true }, getClassMap(button.cssClass));
25387
+ };
25198
25388
 
25199
- const pickerColumnInternalMdCss = "/*!@:host*/.sc-ion-picker-column-internal-md-h{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0px;padding-bottom:0px;height:200px;outline:none;font-size:22px;-webkit-scroll-snap-type:y mandatory;-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory;overflow-x:hidden;overflow-y:scroll;scrollbar-width:none;text-align:center}/*!@:host::-webkit-scrollbar*/.sc-ion-picker-column-internal-md-h::-webkit-scrollbar{display:none}/*!@:host .picker-item*/.sc-ion-picker-column-internal-md-h .picker-item.sc-ion-picker-column-internal-md{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;display:block;width:100%;height:34px;border:0px;outline:none;background:transparent;color:inherit;font-family:var(--ion-font-family, inherit);font-size:inherit;line-height:34px;text-align:inherit;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;overflow:hidden;scroll-snap-align:center}/*!@:host .picker-item-empty,\n:host .picker-item[disabled]*/.sc-ion-picker-column-internal-md-h .picker-item-empty.sc-ion-picker-column-internal-md,.sc-ion-picker-column-internal-md-h .picker-item[disabled].sc-ion-picker-column-internal-md{cursor:default}/*!@:host .picker-item-empty,\n:host(:not([disabled])) .picker-item[disabled]*/.sc-ion-picker-column-internal-md-h .picker-item-empty.sc-ion-picker-column-internal-md,.sc-ion-picker-column-internal-md-h:not([disabled]) .picker-item[disabled].sc-ion-picker-column-internal-md{scroll-snap-align:none}/*!@:host([disabled])*/[disabled].sc-ion-picker-column-internal-md-h{overflow-y:hidden}/*!@:host .picker-item[disabled]*/.sc-ion-picker-column-internal-md-h .picker-item[disabled].sc-ion-picker-column-internal-md{opacity:0.4}/*!@:host(.picker-column-active) .picker-item.picker-item-active*/.picker-column-active.sc-ion-picker-column-internal-md-h .picker-item.picker-item-active.sc-ion-picker-column-internal-md{color:var(--ion-color-base)}@media (any-hover: hover){/*!@:host(:focus)*/.sc-ion-picker-column-internal-md-h:focus{outline:none;background:rgba(var(--ion-color-base-rgb), 0.2)}}/*!@:host .picker-item-active*/.sc-ion-picker-column-internal-md-h .picker-item-active.sc-ion-picker-column-internal-md{color:var(--ion-color-base)}";
25389
+ const pickerColumnCss = "/*!@:host*/.sc-ion-picker-column-h{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;max-width:100%;height:200px;font-size:22px;text-align:center}/*!@.picker-opts*/.picker-opts.sc-ion-picker-column{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0px;padding-bottom:0px;min-width:26px;max-height:200px;outline:none;text-align:inherit;-webkit-scroll-snap-type:y mandatory;-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory;overflow-x:hidden;overflow-y:scroll;scrollbar-width:none}/*!@.picker-item-empty*/.picker-item-empty.sc-ion-picker-column{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;display:block;width:100%;height:34px;border:0px;outline:none;background:transparent;color:inherit;font-family:var(--ion-font-family, inherit);font-size:inherit;line-height:34px;text-align:inherit;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}/*!@.picker-opts::-webkit-scrollbar*/.picker-opts.sc-ion-picker-column::-webkit-scrollbar{display:none}/*!@::slotted(ion-picker-column-option)*/.sc-ion-picker-column-s>ion-picker-column-option{display:block;scroll-snap-align:center}/*!@.picker-item-empty,\n:host(:not([disabled])) ::slotted(ion-picker-column-option.option-disabled)*/.picker-item-empty.sc-ion-picker-column,.sc-ion-picker-column-h:not([disabled]).sc-ion-picker-column-s>ion-picker-column-option.option-disabled,.sc-ion-picker-column-h:not([disabled]) .sc-ion-picker-column-s>ion-picker-column-option.option-disabled{scroll-snap-align:none}/*!@::slotted([slot=prefix]), ::slotted([slot=suffix])*/.sc-ion-picker-column-s>[slot=prefix],.sc-ion-picker-column-s>[slot=suffix]{max-width:200px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}/*!@::slotted([slot=prefix])*/.sc-ion-picker-column-s>[slot=prefix]{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0;padding-bottom:0;-ms-flex-pack:end;justify-content:end}/*!@::slotted([slot=suffix])*/.sc-ion-picker-column-s>[slot=suffix]{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0;padding-bottom:0;-ms-flex-pack:start;justify-content:start}/*!@:host(.picker-column-disabled) .picker-opts*/.picker-column-disabled.sc-ion-picker-column-h .picker-opts.sc-ion-picker-column{overflow-y:hidden}/*!@:host(.picker-column-disabled) ::slotted(ion-picker-column-option)*/.sc-ion-picker-column-h.picker-column-disabled .sc-ion-picker-column-s>ion-picker-column-option{cursor:default;opacity:0.4;pointer-events:none}@media (any-hover: hover){/*!@:host(:focus) .picker-opts*/.sc-ion-picker-column-h:focus .picker-opts.sc-ion-picker-column{outline:none;background:rgba(var(--ion-color-base-rgb), 0.2)}}";
25200
25390
 
25201
25391
  /**
25202
25392
  * @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
25203
- * @internal
25393
+ *
25394
+ * @slot prefix - Content to show on the left side of the picker options.
25395
+ * @slot suffix - Content to show on the right side of the picker options.
25204
25396
  */
25205
- class PickerColumnInternal {
25397
+ class PickerColumn {
25206
25398
  constructor(hostRef) {
25207
25399
  registerInstance(this, hostRef);
25208
25400
  this.ionChange = createEvent(this, "ionChange", 7);
@@ -25210,11 +25402,11 @@ class PickerColumnInternal {
25210
25402
  this.isColumnVisible = false;
25211
25403
  this.canExitInputMode = true;
25212
25404
  this.centerPickerItemInView = (target, smooth = true, canExitInputMode = true) => {
25213
- const { el, isColumnVisible } = this;
25214
- if (isColumnVisible) {
25405
+ const { isColumnVisible, scrollEl } = this;
25406
+ if (isColumnVisible && scrollEl) {
25215
25407
  // (Vertical offset from parent) - (three empty picker rows) + (half the height of the target to ensure the scroll triggers)
25216
25408
  const top = target.offsetTop - 3 * target.clientHeight + target.clientHeight / 2;
25217
- if (el.scrollTop !== top) {
25409
+ if (scrollEl.scrollTop !== top) {
25218
25410
  /**
25219
25411
  * Setting this flag prevents input
25220
25412
  * mode from exiting in the picker column's
@@ -25223,7 +25415,7 @@ class PickerColumnInternal {
25223
25415
  * of these can cause a scroll to occur.
25224
25416
  */
25225
25417
  this.canExitInputMode = canExitInputMode;
25226
- el.scroll({
25418
+ scrollEl.scroll({
25227
25419
  top,
25228
25420
  left: 0,
25229
25421
  behavior: smooth ? 'smooth' : undefined,
@@ -25234,11 +25426,9 @@ class PickerColumnInternal {
25234
25426
  this.setPickerItemActiveState = (item, isActive) => {
25235
25427
  if (isActive) {
25236
25428
  item.classList.add(PICKER_ITEM_ACTIVE_CLASS);
25237
- item.part.add(PICKER_ITEM_ACTIVE_PART);
25238
25429
  }
25239
25430
  else {
25240
25431
  item.classList.remove(PICKER_ITEM_ACTIVE_CLASS);
25241
- item.part.remove(PICKER_ITEM_ACTIVE_PART);
25242
25432
  }
25243
25433
  };
25244
25434
  /**
@@ -25292,11 +25482,13 @@ class PickerColumnInternal {
25292
25482
  * be disabled on Android.
25293
25483
  */
25294
25484
  const enableHaptics = isPlatform('ios');
25295
- const { el } = this;
25485
+ const { el, scrollEl } = this;
25296
25486
  let timeout;
25297
25487
  let activeEl = this.activeItem;
25298
25488
  const scrollCallback = () => {
25299
25489
  raf(() => {
25490
+ if (!scrollEl)
25491
+ return;
25300
25492
  if (timeout) {
25301
25493
  clearTimeout(timeout);
25302
25494
  timeout = undefined;
@@ -25309,21 +25501,54 @@ class PickerColumnInternal {
25309
25501
  * Select item in the center of the column
25310
25502
  * which is the month/year that we want to select
25311
25503
  */
25312
- const bbox = el.getBoundingClientRect();
25504
+ const bbox = scrollEl.getBoundingClientRect();
25313
25505
  const centerX = bbox.x + bbox.width / 2;
25314
25506
  const centerY = bbox.y + bbox.height / 2;
25315
- const activeElement = el.shadowRoot.elementFromPoint(centerX, centerY);
25316
- if (activeEl !== null) {
25507
+ /**
25508
+ * elementFromPoint returns the top-most element.
25509
+ * This means that if an ion-backdrop is overlaying the
25510
+ * picker then the appropriate picker column option will
25511
+ * not be selected. To account for this, we use elementsFromPoint
25512
+ * and use an Array.find to find the appropriate column option
25513
+ * at that point.
25514
+ *
25515
+ * Additionally, the picker column could be used in the
25516
+ * Shadow DOM (i.e. in ion-datetime) so we need to make
25517
+ * sure we are choosing the correct host otherwise
25518
+ * the elements returns by elementsFromPoint will be
25519
+ * retargeted. To account for this, we check to see
25520
+ * if the picker column has a parent shadow root. If
25521
+ * so, we use that shadow root when doing elementsFromPoint.
25522
+ * Otherwise, we just use the document.
25523
+ */
25524
+ const rootNode = el.getRootNode();
25525
+ const hasParentShadow = rootNode instanceof ShadowRoot;
25526
+ const referenceNode = hasParentShadow ? rootNode : doc;
25527
+ /**
25528
+ * If the reference node is undefined
25529
+ * then it's likely that doc is undefined
25530
+ * due to being in an SSR environment.
25531
+ */
25532
+ if (referenceNode === undefined) {
25533
+ return;
25534
+ }
25535
+ const elementsAtPoint = referenceNode.elementsFromPoint(centerX, centerY);
25536
+ /**
25537
+ * elementsFromPoint can returns multiple elements
25538
+ * so find the relevant picker column option if one exists.
25539
+ */
25540
+ const newActiveElement = elementsAtPoint.find((el) => el.tagName === 'ION-PICKER-COLUMN-OPTION');
25541
+ if (activeEl !== undefined) {
25317
25542
  this.setPickerItemActiveState(activeEl, false);
25318
25543
  }
25319
- if (activeElement === null || activeElement.disabled) {
25544
+ if (newActiveElement === undefined || newActiveElement.disabled) {
25320
25545
  return;
25321
25546
  }
25322
25547
  /**
25323
25548
  * If we are selecting a new value,
25324
25549
  * we need to run haptics again.
25325
25550
  */
25326
- if (activeElement !== activeEl) {
25551
+ if (newActiveElement !== activeEl) {
25327
25552
  enableHaptics && hapticSelectionChanged();
25328
25553
  if (this.canExitInputMode) {
25329
25554
  /**
@@ -25340,8 +25565,8 @@ class PickerColumnInternal {
25340
25565
  this.exitInputMode();
25341
25566
  }
25342
25567
  }
25343
- activeEl = activeElement;
25344
- this.setPickerItemActiveState(activeElement, true);
25568
+ activeEl = newActiveElement;
25569
+ this.setPickerItemActiveState(newActiveElement, true);
25345
25570
  timeout = setTimeout(() => {
25346
25571
  this.isScrolling = false;
25347
25572
  enableHaptics && hapticSelectionEnd();
@@ -25363,20 +25588,7 @@ class PickerColumnInternal {
25363
25588
  * case, we should exit input mode.
25364
25589
  */
25365
25590
  this.canExitInputMode = true;
25366
- const dataIndex = activeElement.getAttribute('data-index');
25367
- /**
25368
- * If no value it is
25369
- * possible we hit one of the
25370
- * empty padding columns.
25371
- */
25372
- if (dataIndex === null) {
25373
- return;
25374
- }
25375
- const index = parseInt(dataIndex, 10);
25376
- const selectedItem = this.items[index];
25377
- if (selectedItem.value !== this.value) {
25378
- this.setValue(selectedItem.value);
25379
- }
25591
+ this.setValue(newActiveElement.value);
25380
25592
  }, 250);
25381
25593
  });
25382
25594
  };
@@ -25385,9 +25597,11 @@ class PickerColumnInternal {
25385
25597
  * does not fire when component is initially shown.
25386
25598
  */
25387
25599
  raf(() => {
25388
- el.addEventListener('scroll', scrollCallback);
25600
+ if (!scrollEl)
25601
+ return;
25602
+ scrollEl.addEventListener('scroll', scrollCallback);
25389
25603
  this.destroyScrollListener = () => {
25390
- el.removeEventListener('scroll', scrollCallback);
25604
+ scrollEl.removeEventListener('scroll', scrollCallback);
25391
25605
  };
25392
25606
  });
25393
25607
  };
@@ -25415,7 +25629,6 @@ class PickerColumnInternal {
25415
25629
  };
25416
25630
  this.isActive = false;
25417
25631
  this.disabled = false;
25418
- this.items = [];
25419
25632
  this.value = undefined;
25420
25633
  this.color = 'primary';
25421
25634
  this.numericInput = false;
@@ -25426,7 +25639,7 @@ class PickerColumnInternal {
25426
25639
  * Only scroll the active item into view when the picker column
25427
25640
  * is actively visible to the user.
25428
25641
  */
25429
- this.scrollActiveItemIntoView();
25642
+ this.scrollActiveItemIntoView(true);
25430
25643
  }
25431
25644
  }
25432
25645
  /**
@@ -25464,36 +25677,33 @@ class PickerColumnInternal {
25464
25677
  }
25465
25678
  };
25466
25679
  new IntersectionObserver(visibleCallback, { threshold: 0.001 }).observe(this.el);
25467
- const parentEl = (this.parentEl = this.el.closest('ion-picker-internal'));
25680
+ const parentEl = (this.parentEl = this.el.closest('ion-picker'));
25468
25681
  if (parentEl !== null) {
25469
25682
  // TODO(FW-2832): type
25470
25683
  parentEl.addEventListener('ionInputModeChange', (ev) => this.inputModeChange(ev));
25471
25684
  }
25472
25685
  }
25473
25686
  componentDidRender() {
25474
- var _a;
25475
- const { activeItem, items, isColumnVisible, value } = this;
25476
- if (isColumnVisible) {
25477
- if (activeItem) {
25478
- this.scrollActiveItemIntoView();
25479
- }
25480
- else if (((_a = items[0]) === null || _a === void 0 ? void 0 : _a.value) !== value) {
25481
- /**
25482
- * If the picker column does not have an active item and the current value
25483
- * does not match the first item in the picker column, that means
25484
- * the value is out of bounds. In this case, we assign the value to the
25485
- * first item to match the scroll position of the column.
25486
- *
25487
- */
25488
- this.setValue(items[0].value);
25687
+ const { el, activeItem, isColumnVisible, value } = this;
25688
+ if (isColumnVisible && !activeItem) {
25689
+ const firstOption = el.querySelector('ion-picker-column-option');
25690
+ /**
25691
+ * If the picker column does not have an active item and the current value
25692
+ * does not match the first item in the picker column, that means
25693
+ * the value is out of bounds. In this case, we assign the value to the
25694
+ * first item to match the scroll position of the column.
25695
+ *
25696
+ */
25697
+ if (firstOption !== null && firstOption.value !== value) {
25698
+ this.setValue(firstOption.value);
25489
25699
  }
25490
25700
  }
25491
25701
  }
25492
25702
  /** @internal */
25493
- async scrollActiveItemIntoView() {
25703
+ async scrollActiveItemIntoView(smooth = false) {
25494
25704
  const activeEl = this.activeItem;
25495
25705
  if (activeEl) {
25496
- this.centerPickerItemInView(activeEl, false, false);
25706
+ this.centerPickerItemInView(activeEl, smooth, false);
25497
25707
  }
25498
25708
  }
25499
25709
  /**
@@ -25504,557 +25714,537 @@ class PickerColumnInternal {
25504
25714
  * @internal
25505
25715
  */
25506
25716
  async setValue(value) {
25507
- const { items } = this;
25717
+ if (this.disabled === true || this.value === value) {
25718
+ return;
25719
+ }
25508
25720
  this.value = value;
25509
- const findItem = items.find((item) => item.value === value && item.disabled !== true);
25510
- if (findItem) {
25511
- this.ionChange.emit(findItem);
25721
+ this.ionChange.emit({ value });
25722
+ }
25723
+ /**
25724
+ * Sets focus on the scrollable container within the picker column.
25725
+ * Use this method instead of the global `pickerColumn.focus()`.
25726
+ */
25727
+ async setFocus() {
25728
+ if (this.scrollEl) {
25729
+ this.scrollEl.focus();
25730
+ }
25731
+ }
25732
+ get activeItem() {
25733
+ const { value } = this;
25734
+ const options = Array.from(this.el.querySelectorAll('ion-picker-column-option'));
25735
+ return options.find((option) => {
25736
+ /**
25737
+ * If the whole picker column is disabled, the current value should appear active
25738
+ * If the current value item is specifically disabled, it should not appear active
25739
+ */
25740
+ if (!this.disabled && option.disabled) {
25741
+ return false;
25742
+ }
25743
+ return option.value === value;
25744
+ });
25745
+ }
25746
+ render() {
25747
+ const { color, disabled, isActive, numericInput } = this;
25748
+ const mode = getIonMode$1(this);
25749
+ return (hAsync(Host, { class: createColorClasses$1(color, {
25750
+ [mode]: true,
25751
+ ['picker-column-active']: isActive,
25752
+ ['picker-column-numeric-input']: numericInput,
25753
+ ['picker-column-disabled']: disabled,
25754
+ }) }, hAsync("slot", { name: "prefix" }), hAsync("div", { class: "picker-opts", tabindex: disabled ? undefined : 0, ref: (el) => {
25755
+ this.scrollEl = el;
25756
+ } }, hAsync("div", { class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("slot", null), hAsync("div", { class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0")), hAsync("slot", { name: "suffix" })));
25757
+ }
25758
+ get el() { return getElement(this); }
25759
+ static get watchers() { return {
25760
+ "value": ["valueChange"]
25761
+ }; }
25762
+ static get style() { return pickerColumnCss; }
25763
+ static get cmpMeta() { return {
25764
+ "$flags$": 9,
25765
+ "$tagName$": "ion-picker-column",
25766
+ "$members$": {
25767
+ "disabled": [4],
25768
+ "value": [1032],
25769
+ "color": [513],
25770
+ "numericInput": [4, "numeric-input"],
25771
+ "isActive": [32],
25772
+ "scrollActiveItemIntoView": [64],
25773
+ "setValue": [64],
25774
+ "setFocus": [64]
25775
+ },
25776
+ "$listeners$": undefined,
25777
+ "$lazyBundleId$": "-",
25778
+ "$attrsToReflect$": [["color", "color"]]
25779
+ }; }
25780
+ }
25781
+ const PICKER_ITEM_ACTIVE_CLASS = 'option-active';
25782
+
25783
+ 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}}";
25784
+
25785
+ 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)}";
25786
+
25787
+ /**
25788
+ * @internal
25789
+ */
25790
+ class PickerColumnCmp {
25791
+ constructor(hostRef) {
25792
+ registerInstance(this, hostRef);
25793
+ this.ionPickerColChange = createEvent(this, "ionPickerColChange", 7);
25794
+ this.optHeight = 0;
25795
+ this.rotateFactor = 0;
25796
+ this.scaleFactor = 1;
25797
+ this.velocity = 0;
25798
+ this.y = 0;
25799
+ this.noAnimate = true;
25800
+ // `colDidChange` is a flag that gets set when the column is changed
25801
+ // dynamically. When this flag is set, the column will refresh
25802
+ // after the component re-renders to incorporate the new column data.
25803
+ // This is necessary because `this.refresh` queries for the option elements,
25804
+ // so it needs to wait for the latest elements to be available in the DOM.
25805
+ // Ex: column is created with 3 options. User updates the column data
25806
+ // to have 5 options. The column will still think it only has 3 options.
25807
+ this.colDidChange = false;
25808
+ this.col = undefined;
25809
+ }
25810
+ colChanged() {
25811
+ this.colDidChange = true;
25812
+ }
25813
+ async connectedCallback() {
25814
+ let pickerRotateFactor = 0;
25815
+ let pickerScaleFactor = 0.81;
25816
+ const mode = getIonMode$1(this);
25817
+ if (mode === 'ios') {
25818
+ pickerRotateFactor = -0.46;
25819
+ pickerScaleFactor = 1;
25820
+ }
25821
+ this.rotateFactor = pickerRotateFactor;
25822
+ this.scaleFactor = pickerScaleFactor;
25823
+ this.gesture = (await Promise.resolve().then(function () { return index; })).createGesture({
25824
+ el: this.el,
25825
+ gestureName: 'picker-swipe',
25826
+ gesturePriority: 100,
25827
+ threshold: 0,
25828
+ passive: false,
25829
+ onStart: (ev) => this.onStart(ev),
25830
+ onMove: (ev) => this.onMove(ev),
25831
+ onEnd: (ev) => this.onEnd(ev),
25832
+ });
25833
+ this.gesture.enable();
25834
+ // Options have not been initialized yet
25835
+ // Animation must be disabled through the `noAnimate` flag
25836
+ // Otherwise, the options will render
25837
+ // at the top of the column and transition down
25838
+ this.tmrId = setTimeout(() => {
25839
+ this.noAnimate = false;
25840
+ // After initialization, `refresh()` will be called
25841
+ // At this point, animation will be enabled. The options will
25842
+ // animate as they are being selected.
25843
+ this.refresh(true);
25844
+ }, 250);
25845
+ }
25846
+ componentDidLoad() {
25847
+ this.onDomChange();
25848
+ }
25849
+ componentDidUpdate() {
25850
+ // Options may have changed since last update.
25851
+ if (this.colDidChange) {
25852
+ // Animation must be disabled through the `onDomChange` parameter.
25853
+ // Otherwise, the recently added options will render
25854
+ // at the top of the column and transition down
25855
+ this.onDomChange(true, false);
25856
+ this.colDidChange = false;
25857
+ }
25858
+ }
25859
+ disconnectedCallback() {
25860
+ if (this.rafId !== undefined)
25861
+ cancelAnimationFrame(this.rafId);
25862
+ if (this.tmrId)
25863
+ clearTimeout(this.tmrId);
25864
+ if (this.gesture) {
25865
+ this.gesture.destroy();
25866
+ this.gesture = undefined;
25867
+ }
25868
+ }
25869
+ emitColChange() {
25870
+ this.ionPickerColChange.emit(this.col);
25871
+ }
25872
+ setSelected(selectedIndex, duration) {
25873
+ // if there is a selected index, then figure out it's y position
25874
+ // if there isn't a selected index, then just use the top y position
25875
+ const y = selectedIndex > -1 ? -(selectedIndex * this.optHeight) : 0;
25876
+ this.velocity = 0;
25877
+ // set what y position we're at
25878
+ if (this.rafId !== undefined)
25879
+ cancelAnimationFrame(this.rafId);
25880
+ this.update(y, duration, true);
25881
+ this.emitColChange();
25882
+ }
25883
+ update(y, duration, saveY) {
25884
+ if (!this.optsEl) {
25885
+ return;
25886
+ }
25887
+ // ensure we've got a good round number :)
25888
+ let translateY = 0;
25889
+ let translateZ = 0;
25890
+ const { col, rotateFactor } = this;
25891
+ const prevSelected = col.selectedIndex;
25892
+ const selectedIndex = (col.selectedIndex = this.indexForY(-y));
25893
+ const durationStr = duration === 0 ? '' : duration + 'ms';
25894
+ const scaleStr = `scale(${this.scaleFactor})`;
25895
+ const children = this.optsEl.children;
25896
+ for (let i = 0; i < children.length; i++) {
25897
+ const button = children[i];
25898
+ const opt = col.options[i];
25899
+ const optOffset = i * this.optHeight + y;
25900
+ let transform = '';
25901
+ if (rotateFactor !== 0) {
25902
+ const rotateX = optOffset * rotateFactor;
25903
+ if (Math.abs(rotateX) <= 90) {
25904
+ translateY = 0;
25905
+ translateZ = 90;
25906
+ transform = `rotateX(${rotateX}deg) `;
25907
+ }
25908
+ else {
25909
+ translateY = -9999;
25910
+ }
25911
+ }
25912
+ else {
25913
+ translateZ = 0;
25914
+ translateY = optOffset;
25915
+ }
25916
+ const selected = selectedIndex === i;
25917
+ transform += `translate3d(0px,${translateY}px,${translateZ}px) `;
25918
+ if (this.scaleFactor !== 1 && !selected) {
25919
+ transform += scaleStr;
25920
+ }
25921
+ // Update transition duration
25922
+ if (this.noAnimate) {
25923
+ opt.duration = 0;
25924
+ button.style.transitionDuration = '';
25925
+ }
25926
+ else if (duration !== opt.duration) {
25927
+ opt.duration = duration;
25928
+ button.style.transitionDuration = durationStr;
25929
+ }
25930
+ // Update transform
25931
+ if (transform !== opt.transform) {
25932
+ opt.transform = transform;
25933
+ }
25934
+ button.style.transform = transform;
25935
+ /**
25936
+ * Ensure that the select column
25937
+ * item has the selected class
25938
+ */
25939
+ opt.selected = selected;
25940
+ if (selected) {
25941
+ button.classList.add(PICKER_OPT_SELECTED);
25942
+ }
25943
+ else {
25944
+ button.classList.remove(PICKER_OPT_SELECTED);
25945
+ }
25946
+ }
25947
+ this.col.prevSelected = prevSelected;
25948
+ if (saveY) {
25949
+ this.y = y;
25950
+ }
25951
+ if (this.lastIndex !== selectedIndex) {
25952
+ // have not set a last index yet
25953
+ hapticSelectionChanged();
25954
+ this.lastIndex = selectedIndex;
25955
+ }
25956
+ }
25957
+ decelerate() {
25958
+ if (this.velocity !== 0) {
25959
+ // still decelerating
25960
+ this.velocity *= DECELERATION_FRICTION;
25961
+ // do not let it go slower than a velocity of 1
25962
+ this.velocity = this.velocity > 0 ? Math.max(this.velocity, 1) : Math.min(this.velocity, -1);
25963
+ let y = this.y + this.velocity;
25964
+ if (y > this.minY) {
25965
+ // whoops, it's trying to scroll up farther than the options we have!
25966
+ y = this.minY;
25967
+ this.velocity = 0;
25968
+ }
25969
+ else if (y < this.maxY) {
25970
+ // gahh, it's trying to scroll down farther than we can!
25971
+ y = this.maxY;
25972
+ this.velocity = 0;
25973
+ }
25974
+ this.update(y, 0, true);
25975
+ const notLockedIn = Math.round(y) % this.optHeight !== 0 || Math.abs(this.velocity) > 1;
25976
+ if (notLockedIn) {
25977
+ // isn't locked in yet, keep decelerating until it is
25978
+ this.rafId = requestAnimationFrame(() => this.decelerate());
25979
+ }
25980
+ else {
25981
+ this.velocity = 0;
25982
+ this.emitColChange();
25983
+ hapticSelectionEnd();
25984
+ }
25985
+ }
25986
+ else if (this.y % this.optHeight !== 0) {
25987
+ // needs to still get locked into a position so options line up
25988
+ const currentPos = Math.abs(this.y % this.optHeight);
25989
+ // create a velocity in the direction it needs to scroll
25990
+ this.velocity = currentPos > this.optHeight / 2 ? 1 : -1;
25991
+ this.decelerate();
25992
+ }
25993
+ }
25994
+ indexForY(y) {
25995
+ return Math.min(Math.max(Math.abs(Math.round(y / this.optHeight)), 0), this.col.options.length - 1);
25996
+ }
25997
+ onStart(detail) {
25998
+ // We have to prevent default in order to block scrolling under the picker
25999
+ // but we DO NOT have to stop propagation, since we still want
26000
+ // some "click" events to capture
26001
+ if (detail.event.cancelable) {
26002
+ detail.event.preventDefault();
26003
+ }
26004
+ detail.event.stopPropagation();
26005
+ hapticSelectionStart();
26006
+ // reset everything
26007
+ if (this.rafId !== undefined)
26008
+ cancelAnimationFrame(this.rafId);
26009
+ const options = this.col.options;
26010
+ let minY = options.length - 1;
26011
+ let maxY = 0;
26012
+ for (let i = 0; i < options.length; i++) {
26013
+ if (!options[i].disabled) {
26014
+ minY = Math.min(minY, i);
26015
+ maxY = Math.max(maxY, i);
26016
+ }
26017
+ }
26018
+ this.minY = -(minY * this.optHeight);
26019
+ this.maxY = -(maxY * this.optHeight);
26020
+ }
26021
+ onMove(detail) {
26022
+ if (detail.event.cancelable) {
26023
+ detail.event.preventDefault();
26024
+ }
26025
+ detail.event.stopPropagation();
26026
+ // update the scroll position relative to pointer start position
26027
+ let y = this.y + detail.deltaY;
26028
+ if (y > this.minY) {
26029
+ // scrolling up higher than scroll area
26030
+ y = Math.pow(y, 0.8);
26031
+ this.bounceFrom = y;
26032
+ }
26033
+ else if (y < this.maxY) {
26034
+ // scrolling down below scroll area
26035
+ y += Math.pow(this.maxY - y, 0.9);
26036
+ this.bounceFrom = y;
26037
+ }
26038
+ else {
26039
+ this.bounceFrom = 0;
26040
+ }
26041
+ this.update(y, 0, false);
26042
+ }
26043
+ onEnd(detail) {
26044
+ if (this.bounceFrom > 0) {
26045
+ // bounce back up
26046
+ this.update(this.minY, 100, true);
26047
+ this.emitColChange();
26048
+ return;
26049
+ }
26050
+ else if (this.bounceFrom < 0) {
26051
+ // bounce back down
26052
+ this.update(this.maxY, 100, true);
26053
+ this.emitColChange();
26054
+ return;
26055
+ }
26056
+ this.velocity = clamp(-MAX_PICKER_SPEED, detail.velocityY * 23, MAX_PICKER_SPEED);
26057
+ if (this.velocity === 0 && detail.deltaY === 0) {
26058
+ const opt = detail.event.target.closest('.picker-opt');
26059
+ if (opt === null || opt === void 0 ? void 0 : opt.hasAttribute('opt-index')) {
26060
+ this.setSelected(parseInt(opt.getAttribute('opt-index'), 10), TRANSITION_DURATION);
26061
+ }
26062
+ }
26063
+ else {
26064
+ this.y += detail.deltaY;
26065
+ if (Math.abs(detail.velocityY) < 0.05) {
26066
+ const isScrollingUp = detail.deltaY > 0;
26067
+ const optHeightFraction = (Math.abs(this.y) % this.optHeight) / this.optHeight;
26068
+ if (isScrollingUp && optHeightFraction > 0.5) {
26069
+ this.velocity = Math.abs(this.velocity) * -1;
26070
+ }
26071
+ else if (!isScrollingUp && optHeightFraction <= 0.5) {
26072
+ this.velocity = Math.abs(this.velocity);
26073
+ }
26074
+ }
26075
+ this.decelerate();
26076
+ }
26077
+ }
26078
+ refresh(forceRefresh, animated) {
26079
+ var _a;
26080
+ let min = this.col.options.length - 1;
26081
+ let max = 0;
26082
+ const options = this.col.options;
26083
+ for (let i = 0; i < options.length; i++) {
26084
+ if (!options[i].disabled) {
26085
+ min = Math.min(min, i);
26086
+ max = Math.max(max, i);
26087
+ }
26088
+ }
26089
+ /**
26090
+ * Only update selected value if column has a
26091
+ * velocity of 0. If it does not, then the
26092
+ * column is animating might land on
26093
+ * a value different than the value at
26094
+ * selectedIndex
26095
+ */
26096
+ if (this.velocity !== 0) {
26097
+ return;
26098
+ }
26099
+ const selectedIndex = clamp(min, (_a = this.col.selectedIndex) !== null && _a !== void 0 ? _a : 0, max);
26100
+ if (this.col.prevSelected !== selectedIndex || forceRefresh) {
26101
+ const y = selectedIndex * this.optHeight * -1;
26102
+ const duration = animated ? TRANSITION_DURATION : 0;
26103
+ this.velocity = 0;
26104
+ this.update(y, duration, true);
26105
+ }
26106
+ }
26107
+ onDomChange(forceRefresh, animated) {
26108
+ const colEl = this.optsEl;
26109
+ if (colEl) {
26110
+ // DOM READ
26111
+ // We perfom a DOM read over a rendered item, this needs to happen after the first render or after the the column has changed
26112
+ this.optHeight = colEl.firstElementChild ? colEl.firstElementChild.clientHeight : 0;
25512
26113
  }
25513
- }
25514
- get activeItem() {
25515
- // If the whole picker column is disabled, the current value should appear active
25516
- // If the current value item is specifically disabled, it should not appear active
25517
- const selector = `.picker-item[data-value="${this.value}"]${this.disabled ? '' : ':not([disabled])'}`;
25518
- return getElementRoot(this.el).querySelector(selector);
26114
+ this.refresh(forceRefresh, animated);
25519
26115
  }
25520
26116
  render() {
25521
- const { items, color, disabled: pickerDisabled, isActive, numericInput } = this;
26117
+ const col = this.col;
25522
26118
  const mode = getIonMode$1(this);
25523
- /**
25524
- * exportparts is needed so ion-datetime can expose the parts
25525
- * from two layers of shadow nesting. If this causes problems,
25526
- * the attribute can be moved to datetime.tsx and set on every
25527
- * instance of ion-picker-column-internal there instead.
25528
- */
25529
- return (hAsync(Host, { exportparts: `${PICKER_ITEM_PART}, ${PICKER_ITEM_ACTIVE_PART}`, disabled: pickerDisabled, tabindex: pickerDisabled ? null : 0, class: createColorClasses$1(color, {
25530
- [mode]: true,
25531
- ['picker-column-active']: isActive,
25532
- ['picker-column-numeric-input']: numericInput,
25533
- }) }, hAsync("div", { class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0"), items.map((item, index) => {
25534
- const isItemDisabled = pickerDisabled || item.disabled || false;
25535
- return (hAsync("button", { tabindex: "-1", class: {
25536
- 'picker-item': true,
25537
- }, "data-value": item.value, "data-index": index, onClick: (ev) => {
25538
- this.centerPickerItemInView(ev.target, true);
25539
- }, disabled: isItemDisabled, part: PICKER_ITEM_PART }, item.text));
25540
- }), hAsync("div", { class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0")));
26119
+ return (hAsync(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: {
26120
+ 'max-width': this.col.columnWidth,
26121
+ } }, col.prefix && (hAsync("div", { class: "picker-prefix", style: { width: col.prefixWidth } }, col.prefix)), hAsync("div", { class: "picker-opts", style: { maxWidth: col.optionsWidth }, ref: (el) => (this.optsEl = el) }, col.options.map((o, index) => (hAsync("button", { "aria-label": o.ariaLabel, class: { 'picker-opt': true, 'picker-opt-disabled': !!o.disabled }, "opt-index": index }, o.text)))), col.suffix && (hAsync("div", { class: "picker-suffix", style: { width: col.suffixWidth } }, col.suffix))));
25541
26122
  }
25542
26123
  get el() { return getElement(this); }
25543
26124
  static get watchers() { return {
25544
- "value": ["valueChange"]
26125
+ "col": ["colChanged"]
25545
26126
  }; }
25546
26127
  static get style() { return {
25547
- ios: pickerColumnInternalIosCss,
25548
- md: pickerColumnInternalMdCss
26128
+ ios: pickerColumnIosCss,
26129
+ md: pickerColumnMdCss
25549
26130
  }; }
25550
26131
  static get cmpMeta() { return {
25551
- "$flags$": 41,
25552
- "$tagName$": "ion-picker-column-internal",
26132
+ "$flags$": 32,
26133
+ "$tagName$": "ion-picker-legacy-column",
25553
26134
  "$members$": {
25554
- "disabled": [4],
25555
- "items": [16],
25556
- "value": [1032],
25557
- "color": [513],
25558
- "numericInput": [4, "numeric-input"],
25559
- "isActive": [32],
25560
- "scrollActiveItemIntoView": [64],
25561
- "setValue": [64]
26135
+ "col": [16]
25562
26136
  },
25563
26137
  "$listeners$": undefined,
25564
26138
  "$lazyBundleId$": "-",
25565
- "$attrsToReflect$": [["color", "color"]]
26139
+ "$attrsToReflect$": []
25566
26140
  }; }
25567
26141
  }
25568
- const PICKER_ITEM_ACTIVE_CLASS = 'picker-item-active';
25569
- const PICKER_ITEM_PART = 'wheel-item';
25570
- const PICKER_ITEM_ACTIVE_PART = 'active';
26142
+ const PICKER_OPT_SELECTED = 'picker-opt-selected';
26143
+ const DECELERATION_FRICTION = 0.97;
26144
+ const MAX_PICKER_SPEED = 90;
26145
+ const TRANSITION_DURATION = 150;
25571
26146
 
25572
- const pickerInternalIosCss = "/*!@:host*/.sc-ion-picker-internal-ios-h{display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:200px;direction:ltr;z-index:0}/*!@:host .picker-before,\n:host .picker-after*/.sc-ion-picker-internal-ios-h .picker-before.sc-ion-picker-internal-ios,.sc-ion-picker-internal-ios-h .picker-after.sc-ion-picker-internal-ios{position:absolute;width:100%;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:1;pointer-events:none}/*!@:host .picker-before*/.sc-ion-picker-internal-ios-h .picker-before.sc-ion-picker-internal-ios{top:0;height:83px}@supports (inset-inline-start: 0){/*!@:host .picker-before*/.sc-ion-picker-internal-ios-h .picker-before.sc-ion-picker-internal-ios{inset-inline-start:0}}@supports not (inset-inline-start: 0){/*!@:host .picker-before*/.sc-ion-picker-internal-ios-h .picker-before.sc-ion-picker-internal-ios{left:0}/*!@:host-context([dir=rtl]) .picker-before*/[dir=rtl].sc-ion-picker-internal-ios-h .picker-before.sc-ion-picker-internal-ios,[dir=rtl] .sc-ion-picker-internal-ios-h .picker-before.sc-ion-picker-internal-ios{left:unset;right:unset;right:0}/*!@@supports selector(:dir(rtl))*/@supports .sc-ion-picker-internal-ios selector(.sc-ion-picker-internal-ios:dir(rtl)){.sc-ion-picker-internal-ios-h:dir(rtl) .picker-before{left:unset;right:unset;right:0}}}/*!@:host .picker-after*/.sc-ion-picker-internal-ios-h .picker-after.sc-ion-picker-internal-ios{top:116px;height:84px}@supports (inset-inline-start: 0){/*!@:host .picker-after*/.sc-ion-picker-internal-ios-h .picker-after.sc-ion-picker-internal-ios{inset-inline-start:0}}@supports not (inset-inline-start: 0){/*!@:host .picker-after*/.sc-ion-picker-internal-ios-h .picker-after.sc-ion-picker-internal-ios{left:0}/*!@:host-context([dir=rtl]) .picker-after*/[dir=rtl].sc-ion-picker-internal-ios-h .picker-after.sc-ion-picker-internal-ios,[dir=rtl] .sc-ion-picker-internal-ios-h .picker-after.sc-ion-picker-internal-ios{left:unset;right:unset;right:0}/*!@@supports selector(:dir(rtl))*/@supports .sc-ion-picker-internal-ios selector(.sc-ion-picker-internal-ios:dir(rtl)){.sc-ion-picker-internal-ios-h:dir(rtl) .picker-after{left:unset;right:unset;right:0}}}/*!@:host .picker-highlight*/.sc-ion-picker-internal-ios-h .picker-highlight.sc-ion-picker-internal-ios{border-radius:8px;left:0;right:0;top:50%;bottom:0;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0;position:absolute;width:calc(100% - 16px);height:34px;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:var(--wheel-highlight-background);z-index:-1}/*!@:host input*/.sc-ion-picker-internal-ios-h input.sc-ion-picker-internal-ios{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;margin:0;padding:0;border:0;outline:0;clip:rect(0 0 0 0);opacity:0;overflow:hidden;-webkit-appearance:none;-moz-appearance:none}/*!@:host ::slotted(ion-picker-column-internal:first-of-type)*/.sc-ion-picker-internal-ios-h .sc-ion-picker-internal-ios-s>ion-picker-column-internal:first-of-type{text-align:start}/*!@:host ::slotted(ion-picker-column-internal:last-of-type)*/.sc-ion-picker-internal-ios-h .sc-ion-picker-internal-ios-s>ion-picker-column-internal:last-of-type{text-align:end}/*!@:host ::slotted(ion-picker-column-internal:only-child)*/.sc-ion-picker-internal-ios-h .sc-ion-picker-internal-ios-s>ion-picker-column-internal:only-child{text-align:center}/*!@:host .picker-before*/.sc-ion-picker-internal-ios-h .picker-before.sc-ion-picker-internal-ios{background:-webkit-gradient(linear, left top, left bottom, color-stop(20%, rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), to(rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8)));background:linear-gradient(to bottom, rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 20%, rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8) 100%)}/*!@:host .picker-after*/.sc-ion-picker-internal-ios-h .picker-after.sc-ion-picker-internal-ios{background:-webkit-gradient(linear, left bottom, left top, color-stop(20%, rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), to(rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8)));background:linear-gradient(to top, rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 20%, rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8) 100%)}/*!@:host .picker-highlight*/.sc-ion-picker-internal-ios-h .picker-highlight.sc-ion-picker-internal-ios{background:var(--wheel-highlight-background, var(--ion-color-step-150, #eeeeef))}";
26147
+ const pickerColumnOptionIosCss = "/*!@button*/button.sc-ion-picker-column-option-ios{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)*/.option-disabled.sc-ion-picker-column-option-ios-h{opacity:0.4}/*!@:host(.option-disabled) button*/.option-disabled.sc-ion-picker-column-option-ios-h button.sc-ion-picker-column-option-ios{cursor:default}";
25573
26148
 
25574
- const pickerInternalMdCss = "/*!@:host*/.sc-ion-picker-internal-md-h{display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:200px;direction:ltr;z-index:0}/*!@:host .picker-before,\n:host .picker-after*/.sc-ion-picker-internal-md-h .picker-before.sc-ion-picker-internal-md,.sc-ion-picker-internal-md-h .picker-after.sc-ion-picker-internal-md{position:absolute;width:100%;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:1;pointer-events:none}/*!@:host .picker-before*/.sc-ion-picker-internal-md-h .picker-before.sc-ion-picker-internal-md{top:0;height:83px}@supports (inset-inline-start: 0){/*!@:host .picker-before*/.sc-ion-picker-internal-md-h .picker-before.sc-ion-picker-internal-md{inset-inline-start:0}}@supports not (inset-inline-start: 0){/*!@:host .picker-before*/.sc-ion-picker-internal-md-h .picker-before.sc-ion-picker-internal-md{left:0}/*!@:host-context([dir=rtl]) .picker-before*/[dir=rtl].sc-ion-picker-internal-md-h .picker-before.sc-ion-picker-internal-md,[dir=rtl] .sc-ion-picker-internal-md-h .picker-before.sc-ion-picker-internal-md{left:unset;right:unset;right:0}/*!@@supports selector(:dir(rtl))*/@supports .sc-ion-picker-internal-md selector(.sc-ion-picker-internal-md:dir(rtl)){.sc-ion-picker-internal-md-h:dir(rtl) .picker-before{left:unset;right:unset;right:0}}}/*!@:host .picker-after*/.sc-ion-picker-internal-md-h .picker-after.sc-ion-picker-internal-md{top:116px;height:84px}@supports (inset-inline-start: 0){/*!@:host .picker-after*/.sc-ion-picker-internal-md-h .picker-after.sc-ion-picker-internal-md{inset-inline-start:0}}@supports not (inset-inline-start: 0){/*!@:host .picker-after*/.sc-ion-picker-internal-md-h .picker-after.sc-ion-picker-internal-md{left:0}/*!@:host-context([dir=rtl]) .picker-after*/[dir=rtl].sc-ion-picker-internal-md-h .picker-after.sc-ion-picker-internal-md,[dir=rtl] .sc-ion-picker-internal-md-h .picker-after.sc-ion-picker-internal-md{left:unset;right:unset;right:0}/*!@@supports selector(:dir(rtl))*/@supports .sc-ion-picker-internal-md selector(.sc-ion-picker-internal-md:dir(rtl)){.sc-ion-picker-internal-md-h:dir(rtl) .picker-after{left:unset;right:unset;right:0}}}/*!@:host .picker-highlight*/.sc-ion-picker-internal-md-h .picker-highlight.sc-ion-picker-internal-md{border-radius:8px;left:0;right:0;top:50%;bottom:0;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0;position:absolute;width:calc(100% - 16px);height:34px;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:var(--wheel-highlight-background);z-index:-1}/*!@:host input*/.sc-ion-picker-internal-md-h input.sc-ion-picker-internal-md{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;margin:0;padding:0;border:0;outline:0;clip:rect(0 0 0 0);opacity:0;overflow:hidden;-webkit-appearance:none;-moz-appearance:none}/*!@:host ::slotted(ion-picker-column-internal:first-of-type)*/.sc-ion-picker-internal-md-h .sc-ion-picker-internal-md-s>ion-picker-column-internal:first-of-type{text-align:start}/*!@:host ::slotted(ion-picker-column-internal:last-of-type)*/.sc-ion-picker-internal-md-h .sc-ion-picker-internal-md-s>ion-picker-column-internal:last-of-type{text-align:end}/*!@:host ::slotted(ion-picker-column-internal:only-child)*/.sc-ion-picker-internal-md-h .sc-ion-picker-internal-md-s>ion-picker-column-internal:only-child{text-align:center}/*!@:host .picker-before*/.sc-ion-picker-internal-md-h .picker-before.sc-ion-picker-internal-md{background:-webkit-gradient(linear, left top, left bottom, color-stop(20%, rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), color-stop(90%, rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0)));background:linear-gradient(to bottom, rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 20%, rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0) 90%)}/*!@:host .picker-after*/.sc-ion-picker-internal-md-h .picker-after.sc-ion-picker-internal-md{background:-webkit-gradient(linear, left bottom, left top, color-stop(30%, rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), color-stop(90%, rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0)));background:linear-gradient(to top, rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 30%, rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0) 90%)}";
26149
+ const pickerColumnOptionMdCss = "/*!@button*/button.sc-ion-picker-column-option-md{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)*/.option-disabled.sc-ion-picker-column-option-md-h{opacity:0.4}/*!@:host(.option-disabled) button*/.option-disabled.sc-ion-picker-column-option-md-h button.sc-ion-picker-column-option-md{cursor:default}/*!@:host(.option-active)*/.option-active.sc-ion-picker-column-option-md-h{color:var(--ion-color-base)}";
25575
26150
 
25576
- /**
25577
- * @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
25578
- * @internal
25579
- */
25580
- class PickerInternal {
26151
+ class PickerColumnOption {
25581
26152
  constructor(hostRef) {
25582
26153
  registerInstance(this, hostRef);
25583
- this.ionInputModeChange = createEvent(this, "ionInputModeChange", 7);
25584
- this.useInputMode = false;
25585
- this.isInHighlightBounds = (ev) => {
25586
- const { highlightEl } = this;
25587
- if (!highlightEl) {
25588
- return false;
25589
- }
25590
- const bbox = highlightEl.getBoundingClientRect();
25591
- /**
25592
- * Check to see if the user clicked
25593
- * outside the bounds of the highlight.
25594
- */
25595
- const outsideX = ev.clientX < bbox.left || ev.clientX > bbox.right;
25596
- const outsideY = ev.clientY < bbox.top || ev.clientY > bbox.bottom;
25597
- if (outsideX || outsideY) {
25598
- return false;
25599
- }
25600
- return true;
25601
- };
25602
- /**
25603
- * If we are no longer focused
25604
- * on a picker column, then we should
25605
- * exit input mode. An exception is made
25606
- * for the input in the picker since having
25607
- * that focused means we are still in input mode.
25608
- */
25609
- this.onFocusOut = (ev) => {
25610
- // TODO(FW-2832): type
25611
- const { relatedTarget } = ev;
25612
- if (!relatedTarget || (relatedTarget.tagName !== 'ION-PICKER-COLUMN-INTERNAL' && relatedTarget !== this.inputEl)) {
25613
- this.exitInputMode();
25614
- }
25615
- };
25616
- /**
25617
- * When picker columns receive focus
25618
- * the parent picker needs to determine
25619
- * whether to enter/exit input mode.
25620
- */
25621
- this.onFocusIn = (ev) => {
25622
- // TODO(FW-2832): type
25623
- const { target } = ev;
25624
- /**
25625
- * Due to browser differences in how/when focus
25626
- * is dispatched on certain elements, we need to
25627
- * make sure that this function only ever runs when
25628
- * focusing a picker column.
25629
- */
25630
- if (target.tagName !== 'ION-PICKER-COLUMN-INTERNAL') {
25631
- return;
25632
- }
25633
- /**
25634
- * If we have actionOnClick
25635
- * then this means the user focused
25636
- * a picker column via mouse or
25637
- * touch (i.e. a PointerEvent). As a result,
25638
- * we should not enter/exit input mode
25639
- * until the click event has fired, which happens
25640
- * after the `focusin` event.
25641
- *
25642
- * Otherwise, the user likely focused
25643
- * the column using their keyboard and
25644
- * we should enter/exit input mode automatically.
25645
- */
25646
- if (!this.actionOnClick) {
25647
- const columnEl = target;
25648
- const allowInput = columnEl.numericInput;
25649
- if (allowInput) {
25650
- this.enterInputMode(columnEl, false);
25651
- }
25652
- else {
25653
- this.exitInputMode();
25654
- }
25655
- }
25656
- };
25657
- /**
25658
- * On click we need to run an actionOnClick
25659
- * function that has been set in onPointerDown
25660
- * so that we enter/exit input mode correctly.
25661
- */
25662
- this.onClick = () => {
25663
- const { actionOnClick } = this;
25664
- if (actionOnClick) {
25665
- actionOnClick();
25666
- this.actionOnClick = undefined;
25667
- }
25668
- };
25669
- /**
25670
- * Clicking a column also focuses the column on
25671
- * certain browsers, so we use onPointerDown
25672
- * to tell the onFocusIn function that users
25673
- * are trying to click the column rather than
25674
- * focus the column using the keyboard. When the
25675
- * user completes the click, the onClick function
25676
- * runs and runs the actionOnClick callback.
25677
- */
25678
- this.onPointerDown = (ev) => {
25679
- const { useInputMode, inputModeColumn, el } = this;
25680
- if (this.isInHighlightBounds(ev)) {
25681
- /**
25682
- * If we were already in
25683
- * input mode, then we should determine
25684
- * if we tapped a particular column and
25685
- * should switch to input mode for
25686
- * that specific column.
25687
- */
25688
- if (useInputMode) {
25689
- /**
25690
- * If we tapped a picker column
25691
- * then we should either switch to input
25692
- * mode for that column or all columns.
25693
- * Otherwise we should exit input mode
25694
- * since we just tapped the highlight and
25695
- * not a column.
25696
- */
25697
- if (ev.target.tagName === 'ION-PICKER-COLUMN-INTERNAL') {
25698
- /**
25699
- * If user taps 2 different columns
25700
- * then we should just switch to input mode
25701
- * for the new column rather than switching to
25702
- * input mode for all columns.
25703
- */
25704
- if (inputModeColumn && inputModeColumn === ev.target) {
25705
- this.actionOnClick = () => {
25706
- this.enterInputMode();
25707
- };
25708
- }
25709
- else {
25710
- this.actionOnClick = () => {
25711
- this.enterInputMode(ev.target);
25712
- };
25713
- }
25714
- }
25715
- else {
25716
- this.actionOnClick = () => {
25717
- this.exitInputMode();
25718
- };
25719
- }
25720
- /**
25721
- * If we were not already in
25722
- * input mode, then we should
25723
- * enter input mode for all columns.
25724
- */
25725
- }
25726
- else {
25727
- /**
25728
- * If there is only 1 numeric input column
25729
- * then we should skip multi column input.
25730
- */
25731
- const columns = el.querySelectorAll('ion-picker-column-internal.picker-column-numeric-input');
25732
- const columnEl = columns.length === 1 ? ev.target : undefined;
25733
- this.actionOnClick = () => {
25734
- this.enterInputMode(columnEl);
25735
- };
25736
- }
25737
- return;
25738
- }
25739
- this.actionOnClick = () => {
25740
- this.exitInputMode();
25741
- };
25742
- };
25743
- /**
25744
- * Enters input mode to allow
25745
- * for text entry of numeric values.
25746
- * If on mobile, we focus a hidden input
25747
- * field so that the on screen keyboard
25748
- * is brought up. When tabbing using a
25749
- * keyboard, picker columns receive an outline
25750
- * to indicate they are focused. As a result,
25751
- * we should not focus the hidden input as it
25752
- * would cause the outline to go away, preventing
25753
- * users from having any visual indication of which
25754
- * column is focused.
25755
- */
25756
- this.enterInputMode = (columnEl, focusInput = true) => {
25757
- const { inputEl, el } = this;
25758
- if (!inputEl) {
25759
- return;
25760
- }
25761
- /**
25762
- * Only active input mode if there is at
25763
- * least one column that accepts numeric input.
25764
- */
25765
- const hasInputColumn = el.querySelector('ion-picker-column-internal.picker-column-numeric-input');
25766
- if (!hasInputColumn) {
25767
- return;
25768
- }
25769
- /**
25770
- * If columnEl is undefined then
25771
- * it is assumed that all numeric pickers
25772
- * are eligible for text entry.
25773
- * (i.e. hour and minute columns)
25774
- */
25775
- this.useInputMode = true;
25776
- this.inputModeColumn = columnEl;
25777
- /**
25778
- * Users with a keyboard and mouse can
25779
- * activate input mode where the input is
25780
- * focused as well as when it is not focused,
25781
- * so we need to make sure we clean up any
25782
- * old listeners.
25783
- */
25784
- if (focusInput) {
25785
- if (this.destroyKeypressListener) {
25786
- this.destroyKeypressListener();
25787
- this.destroyKeypressListener = undefined;
25788
- }
25789
- inputEl.focus();
25790
- }
25791
- else {
25792
- el.addEventListener('keypress', this.onKeyPress);
25793
- this.destroyKeypressListener = () => {
25794
- el.removeEventListener('keypress', this.onKeyPress);
25795
- };
25796
- }
25797
- this.emitInputModeChange();
25798
- };
25799
- this.onKeyPress = (ev) => {
25800
- const { inputEl } = this;
25801
- if (!inputEl) {
25802
- return;
25803
- }
25804
- const parsedValue = parseInt(ev.key, 10);
25805
- /**
25806
- * Only numbers should be allowed
25807
- */
25808
- if (!Number.isNaN(parsedValue)) {
25809
- inputEl.value += ev.key;
25810
- this.onInputChange();
25811
- }
25812
- };
25813
- this.selectSingleColumn = () => {
25814
- const { inputEl, inputModeColumn, singleColumnSearchTimeout } = this;
25815
- if (!inputEl || !inputModeColumn) {
25816
- return;
25817
- }
25818
- const values = inputModeColumn.items.filter((item) => item.disabled !== true);
25819
- /**
25820
- * If users pause for a bit, the search
25821
- * value should be reset similar to how a
25822
- * <select> behaves. So typing "34", waiting,
25823
- * then typing "5" should select "05".
25824
- */
25825
- if (singleColumnSearchTimeout) {
25826
- clearTimeout(singleColumnSearchTimeout);
25827
- }
25828
- this.singleColumnSearchTimeout = setTimeout(() => {
25829
- inputEl.value = '';
25830
- this.singleColumnSearchTimeout = undefined;
25831
- }, 1000);
25832
- /**
25833
- * For values that are longer than 2 digits long
25834
- * we should shift the value over 1 character
25835
- * to the left. So typing "456" would result in "56".
25836
- * TODO: If we want to support more than just
25837
- * time entry, we should update this value to be
25838
- * the max length of all of the picker items.
25839
- */
25840
- if (inputEl.value.length >= 3) {
25841
- const startIndex = inputEl.value.length - 2;
25842
- const newString = inputEl.value.substring(startIndex);
25843
- inputEl.value = newString;
25844
- this.selectSingleColumn();
25845
- return;
25846
- }
25847
- /**
25848
- * Checking the value of the input gets priority
25849
- * first. For example, if the value of the input
25850
- * is "1" and we entered "2", then the complete value
25851
- * is "12" and we should select hour 12.
25852
- *
25853
- * Regex removes any leading zeros from values like "02",
25854
- * but it keeps a single zero if there are only zeros in the string.
25855
- * 0+(?=[1-9]) --> Match 1 or more zeros that are followed by 1-9
25856
- * 0+(?=0$) --> Match 1 or more zeros that must be followed by one 0 and end.
25857
- */
25858
- const findItemFromCompleteValue = values.find(({ text }) => {
25859
- const parsedText = text.replace(/^0+(?=[1-9])|0+(?=0$)/, '');
25860
- return parsedText === inputEl.value;
25861
- });
25862
- if (findItemFromCompleteValue) {
25863
- inputModeColumn.setValue(findItemFromCompleteValue.value);
25864
- return;
25865
- }
25866
- /**
25867
- * If we typed "56" to get minute 56, then typed "7",
25868
- * we should select "07" as "567" is not a valid minute.
25869
- */
25870
- if (inputEl.value.length === 2) {
25871
- const changedCharacter = inputEl.value.substring(inputEl.value.length - 1);
25872
- inputEl.value = changedCharacter;
25873
- this.selectSingleColumn();
25874
- }
25875
- };
25876
- /**
25877
- * Searches a list of column items for a particular
25878
- * value. This is currently used for numeric values.
25879
- * The zeroBehavior can be set to account for leading
25880
- * or trailing zeros when looking at the item text.
25881
- */
25882
- this.searchColumn = (colEl, value, zeroBehavior = 'start') => {
25883
- const behavior = zeroBehavior === 'start' ? /^0+/ : /0$/;
25884
- const item = colEl.items.find(({ text, disabled }) => disabled !== true && text.replace(behavior, '') === value);
25885
- if (item) {
25886
- colEl.setValue(item.value);
25887
- }
25888
- };
25889
- this.selectMultiColumn = () => {
25890
- const { inputEl, el } = this;
25891
- if (!inputEl) {
25892
- return;
25893
- }
25894
- const numericPickers = Array.from(el.querySelectorAll('ion-picker-column-internal')).filter((col) => col.numericInput);
25895
- const firstColumn = numericPickers[0];
25896
- const lastColumn = numericPickers[1];
25897
- let value = inputEl.value;
25898
- let minuteValue;
25899
- switch (value.length) {
25900
- case 1:
25901
- this.searchColumn(firstColumn, value);
25902
- break;
25903
- case 2:
25904
- /**
25905
- * If the first character is `0` or `1` it is
25906
- * possible that users are trying to type `09`
25907
- * or `11` into the hour field, so we should look
25908
- * at that first.
25909
- */
25910
- const firstCharacter = inputEl.value.substring(0, 1);
25911
- value = firstCharacter === '0' || firstCharacter === '1' ? inputEl.value : firstCharacter;
25912
- this.searchColumn(firstColumn, value);
25913
- /**
25914
- * If only checked the first value,
25915
- * we can check the second value
25916
- * for a match in the minutes column
25917
- */
25918
- if (value.length === 1) {
25919
- minuteValue = inputEl.value.substring(inputEl.value.length - 1);
25920
- this.searchColumn(lastColumn, minuteValue, 'end');
25921
- }
25922
- break;
25923
- case 3:
25924
- /**
25925
- * If the first character is `0` or `1` it is
25926
- * possible that users are trying to type `09`
25927
- * or `11` into the hour field, so we should look
25928
- * at that first.
25929
- */
25930
- const firstCharacterAgain = inputEl.value.substring(0, 1);
25931
- value =
25932
- firstCharacterAgain === '0' || firstCharacterAgain === '1'
25933
- ? inputEl.value.substring(0, 2)
25934
- : firstCharacterAgain;
25935
- this.searchColumn(firstColumn, value);
25936
- /**
25937
- * If only checked the first value,
25938
- * we can check the second value
25939
- * for a match in the minutes column
25940
- */
25941
- minuteValue = value.length === 1 ? inputEl.value.substring(1) : inputEl.value.substring(2);
25942
- this.searchColumn(lastColumn, minuteValue, 'end');
25943
- break;
25944
- case 4:
25945
- /**
25946
- * If the first character is `0` or `1` it is
25947
- * possible that users are trying to type `09`
25948
- * or `11` into the hour field, so we should look
25949
- * at that first.
25950
- */
25951
- const firstCharacterAgainAgain = inputEl.value.substring(0, 1);
25952
- value =
25953
- firstCharacterAgainAgain === '0' || firstCharacterAgainAgain === '1'
25954
- ? inputEl.value.substring(0, 2)
25955
- : firstCharacterAgainAgain;
25956
- this.searchColumn(firstColumn, value);
25957
- /**
25958
- * If only checked the first value,
25959
- * we can check the second value
25960
- * for a match in the minutes column
25961
- */
25962
- const minuteValueAgain = value.length === 1
25963
- ? inputEl.value.substring(1, inputEl.value.length)
25964
- : inputEl.value.substring(2, inputEl.value.length);
25965
- this.searchColumn(lastColumn, minuteValueAgain, 'end');
25966
- break;
25967
- default:
25968
- const startIndex = inputEl.value.length - 4;
25969
- const newString = inputEl.value.substring(startIndex);
25970
- inputEl.value = newString;
25971
- this.selectMultiColumn();
25972
- break;
25973
- }
25974
- };
25975
- /**
25976
- * Searches the value of the active column
25977
- * to determine which value users are trying
25978
- * to select
25979
- */
25980
- this.onInputChange = () => {
25981
- const { useInputMode, inputEl, inputModeColumn } = this;
25982
- if (!useInputMode || !inputEl) {
25983
- return;
25984
- }
25985
- if (inputModeColumn) {
25986
- this.selectSingleColumn();
25987
- }
25988
- else {
25989
- this.selectMultiColumn();
25990
- }
25991
- };
25992
26154
  /**
25993
- * Emit ionInputModeChange. Picker columns
25994
- * listen for this event to determine whether
25995
- * or not their column is "active" for text input.
26155
+ * We keep track of the parent picker column
26156
+ * so we can update the value of it when
26157
+ * clicking an enable option.
25996
26158
  */
25997
- this.emitInputModeChange = () => {
25998
- const { useInputMode, inputModeColumn } = this;
25999
- this.ionInputModeChange.emit({
26000
- useInputMode,
26001
- inputModeColumn,
26002
- });
26003
- };
26159
+ this.pickerColumn = null;
26160
+ this.ariaLabel = null;
26161
+ this.disabled = false;
26162
+ this.value = undefined;
26163
+ this.color = 'primary';
26004
26164
  }
26005
26165
  /**
26006
- * When the picker is interacted with
26007
- * we need to prevent touchstart so other
26008
- * gestures do not fire. For example,
26009
- * scrolling on the wheel picker
26010
- * in ion-datetime should not cause
26011
- * a card modal to swipe to close.
26166
+ * The aria-label of the option has changed after the
26167
+ * first render and needs to be updated within the component.
26168
+ *
26169
+ * @param ariaLbl The new aria-label value.
26012
26170
  */
26013
- preventTouchStartPropagation(ev) {
26014
- ev.stopPropagation();
26171
+ onAriaLabelChange(ariaLbl) {
26172
+ this.ariaLabel = ariaLbl;
26015
26173
  }
26016
26174
  componentWillLoad() {
26017
- getElementRoot(this.el).addEventListener('focusin', this.onFocusIn);
26018
- getElementRoot(this.el).addEventListener('focusout', this.onFocusOut);
26175
+ const inheritedAttributes = inheritAttributes$1(this.el, ['aria-label']);
26176
+ /**
26177
+ * The initial value of `aria-label` needs to be set for
26178
+ * the first render.
26179
+
26180
+ */
26181
+ this.ariaLabel = inheritedAttributes['aria-label'] || null;
26182
+ }
26183
+ connectedCallback() {
26184
+ this.pickerColumn = this.el.closest('ion-picker-column');
26185
+ }
26186
+ disconnectedCallback() {
26187
+ this.pickerColumn = null;
26019
26188
  }
26020
26189
  /**
26021
- * @internal
26022
- * Exits text entry mode for the picker
26023
- * This method blurs the hidden input
26024
- * and cause the keyboard to dismiss.
26190
+ * The column options can load at any time
26191
+ * so the options needs to tell the
26192
+ * parent picker column when it is loaded
26193
+ * so the picker column can ensure it is
26194
+ * centered in the view.
26195
+ *
26196
+ * We intentionally run this for every
26197
+ * option. If we only ran this from
26198
+ * the selected option then if the newly
26199
+ * loaded options were not selected then
26200
+ * scrollActiveItemIntoView would not be called.
26025
26201
  */
26026
- async exitInputMode() {
26027
- const { inputEl, useInputMode } = this;
26028
- if (!useInputMode || !inputEl) {
26029
- return;
26202
+ componentDidLoad() {
26203
+ const { pickerColumn } = this;
26204
+ if (pickerColumn !== null) {
26205
+ pickerColumn.scrollActiveItemIntoView();
26030
26206
  }
26031
- this.useInputMode = false;
26032
- this.inputModeColumn = undefined;
26033
- inputEl.blur();
26034
- inputEl.value = '';
26035
- if (this.destroyKeypressListener) {
26036
- this.destroyKeypressListener();
26037
- this.destroyKeypressListener = undefined;
26207
+ }
26208
+ /**
26209
+ * When an option is clicked, update the
26210
+ * parent picker column value. This
26211
+ * component will handle centering the option
26212
+ * in the column view.
26213
+ */
26214
+ onClick() {
26215
+ const { pickerColumn } = this;
26216
+ if (pickerColumn !== null) {
26217
+ pickerColumn.setValue(this.value);
26038
26218
  }
26039
- this.emitInputModeChange();
26040
26219
  }
26041
26220
  render() {
26042
- return (hAsync(Host, { onPointerDown: (ev) => this.onPointerDown(ev), onClick: () => this.onClick() }, hAsync("input", { "aria-hidden": "true", tabindex: -1, inputmode: "numeric", type: "number", ref: (el) => (this.inputEl = el), onInput: () => this.onInputChange(), onBlur: () => this.exitInputMode() }), hAsync("div", { class: "picker-before" }), hAsync("div", { class: "picker-after" }), hAsync("div", { class: "picker-highlight", ref: (el) => (this.highlightEl = el) }), hAsync("slot", null)));
26221
+ const { color, disabled, ariaLabel } = this;
26222
+ const mode = getIonMode$1(this);
26223
+ return (hAsync(Host, { class: createColorClasses$1(color, {
26224
+ [mode]: true,
26225
+ ['option-disabled']: disabled,
26226
+ }) }, hAsync("button", { tabindex: "-1", "aria-label": ariaLabel, disabled: disabled, onClick: () => this.onClick() }, hAsync("slot", null))));
26043
26227
  }
26044
26228
  get el() { return getElement(this); }
26229
+ static get watchers() { return {
26230
+ "aria-label": ["onAriaLabelChange"]
26231
+ }; }
26045
26232
  static get style() { return {
26046
- ios: pickerInternalIosCss,
26047
- md: pickerInternalMdCss
26233
+ ios: pickerColumnOptionIosCss,
26234
+ md: pickerColumnOptionMdCss
26048
26235
  }; }
26049
26236
  static get cmpMeta() { return {
26050
26237
  "$flags$": 41,
26051
- "$tagName$": "ion-picker-internal",
26238
+ "$tagName$": "ion-picker-column-option",
26052
26239
  "$members$": {
26053
- "exitInputMode": [64]
26240
+ "disabled": [4],
26241
+ "value": [8],
26242
+ "color": [513],
26243
+ "ariaLabel": [32]
26054
26244
  },
26055
- "$listeners$": [[1, "touchstart", "preventTouchStartPropagation"]],
26245
+ "$listeners$": undefined,
26056
26246
  "$lazyBundleId$": "-",
26057
- "$attrsToReflect$": []
26247
+ "$attrsToReflect$": [["color", "color"]]
26058
26248
  }; }
26059
26249
  }
26060
26250
 
@@ -28679,24 +28869,6 @@ const translateElement = (el, value, duration = 200) => {
28679
28869
  };
28680
28870
  // Utils
28681
28871
  // -----------------------------
28682
- /**
28683
- * In order to use the native iOS refresher the device must support rubber band scrolling.
28684
- * As part of this, we need to exclude Desktop Safari because it has a slightly different rubber band effect that is not compatible with the native refresher in Ionic.
28685
- *
28686
- * We also need to be careful not to include devices that spoof their user agent.
28687
- * For example, when using iOS emulation in Chrome the user agent will be spoofed such that
28688
- * navigator.maxTouchPointer > 0. To work around this,
28689
- * we check to see if the apple-pay-logo is supported as a named image which is only
28690
- * true on Apple devices.
28691
- *
28692
- * We previously checked referencEl.style.webkitOverflowScrolling to explicitly check
28693
- * for rubber band support. However, this property was removed on iPadOS and it's possible
28694
- * that this will be removed on iOS in the future too.
28695
- *
28696
- */
28697
- const supportsRubberBandScrolling = () => {
28698
- return navigator.maxTouchPoints > 0 && CSS.supports('background: -webkit-named-image(apple-pay-logo-black)');
28699
- };
28700
28872
  const shouldUseNativeRefresher = async (referenceEl, mode) => {
28701
28873
  const refresherContent = referenceEl.querySelector('ion-refresher-content');
28702
28874
  if (!refresherContent) {
@@ -28707,7 +28879,16 @@ const shouldUseNativeRefresher = async (referenceEl, mode) => {
28707
28879
  const refreshingSpinner = referenceEl.querySelector('ion-refresher-content .refresher-refreshing ion-spinner');
28708
28880
  return (pullingSpinner !== null &&
28709
28881
  refreshingSpinner !== null &&
28710
- ((mode === 'ios' && supportsRubberBandScrolling()) || mode === 'md'));
28882
+ /**
28883
+ * We use webkitOverflowScrolling for feature detection with rubber band scrolling
28884
+ * on iOS. When doing referenceEl.style, webkitOverflowScrolling is undefined on non-iOS platforms.
28885
+ * However, it will be the empty string on iOS.
28886
+ * Note that we do not use getPropertyValue (and thus need to cast as any) because calling
28887
+ * getPropertyValue('-webkit-overflow-scrolling') will return the empty string if it is not
28888
+ * set on the element, even if the platform does not support that.
28889
+ */
28890
+ ((mode === 'ios' && isPlatform('mobile') && referenceEl.style.webkitOverflowScrolling !== undefined) ||
28891
+ mode === 'md'));
28711
28892
  };
28712
28893
 
28713
28894
  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)}}";
@@ -29496,15 +29677,9 @@ class RefresherContent {
29496
29677
  }
29497
29678
  componentWillLoad() {
29498
29679
  if (this.pullingIcon === undefined) {
29499
- /**
29500
- * The native iOS refresher uses a spinner instead of
29501
- * an icon, so we need to see if this device supports
29502
- * the native iOS refresher.
29503
- */
29504
- const hasRubberBandScrolling = supportsRubberBandScrolling();
29505
29680
  const mode = getIonMode$1(this);
29506
- const overflowRefresher = hasRubberBandScrolling ? 'lines' : arrowDown;
29507
- this.pullingIcon = config.get('refreshingIcon', mode === 'ios' && hasRubberBandScrolling ? config.get('spinner', overflowRefresher) : 'circular');
29681
+ const overflowRefresher = this.el.style.webkitOverflowScrolling !== undefined ? 'lines' : arrowDown;
29682
+ this.pullingIcon = config.get('refreshingIcon', mode === 'ios' && isPlatform('mobile') ? config.get('spinner', overflowRefresher) : 'circular');
29508
29683
  }
29509
29684
  if (this.refreshingSpinner === undefined) {
29510
29685
  const mode = getIonMode$1(this);
@@ -31297,6 +31472,8 @@ class Searchbar {
31297
31472
  *
31298
31473
  * Developers who wish to focus an input when an overlay is presented
31299
31474
  * should call `setFocus` after `didPresent` has resolved.
31475
+ *
31476
+ * See [managing focus](/docs/developing/managing-focus) for more information.
31300
31477
  */
31301
31478
  async setFocus() {
31302
31479
  if (this.nativeInput) {
@@ -33778,6 +33955,8 @@ class Textarea {
33778
33955
  /**
33779
33956
  * Sets focus on the native `textarea` in `ion-textarea`. Use this method instead of the global
33780
33957
  * `textarea.focus()`.
33958
+ *
33959
+ * See [managing focus](/docs/developing/managing-focus) for more information.
33781
33960
  */
33782
33961
  async setFocus() {
33783
33962
  if (this.nativeInput) {
@@ -35056,10 +35235,11 @@ registerComponents([
35056
35235
  Nav,
35057
35236
  NavLink,
35058
35237
  Note,
35238
+ Picker$1,
35059
35239
  Picker,
35240
+ PickerColumn,
35060
35241
  PickerColumnCmp,
35061
- PickerColumnInternal,
35062
- PickerInternal,
35242
+ PickerColumnOption,
35063
35243
  Popover,
35064
35244
  ProgressBar,
35065
35245
  Radio,