@pod-os/elements 0.6.1-bea440b.0 → 0.7.1-2196a40.0

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 (411) hide show
  1. package/dist/cjs/{animation-5840e4df.js → animation-9bea118f.js} +115 -84
  2. package/dist/cjs/{app-globals-1aedd05c.js → app-globals-6352043e.js} +1 -1
  3. package/dist/cjs/{cubic-bezier-dcb7bfef.js → cubic-bezier-0b702a31.js} +13 -12
  4. package/dist/cjs/data-0c9489d7.js +1510 -0
  5. package/dist/cjs/dir-011f46ea.js +20 -0
  6. package/dist/cjs/elements.cjs.js +5 -5
  7. package/dist/cjs/focus-visible-2624ec15.js +76 -0
  8. package/dist/cjs/framework-delegate-437c0645.js +119 -0
  9. package/dist/cjs/{gesture-controller-fbbe9a65.js → gesture-controller-00a6b02f.js} +6 -2
  10. package/dist/cjs/{haptic-09e73337.js → haptic-7358cb0b.js} +37 -8
  11. package/dist/cjs/{hardware-back-button-01027575.js → hardware-back-button-25372ec7.js} +11 -8
  12. package/dist/cjs/{helpers-398ced09.js → helpers-cb08f5ae.js} +115 -15
  13. package/dist/cjs/{index-2067b305.js → index-1b07c737.js} +35 -24
  14. package/dist/cjs/{index-68ae43d2.js → index-2dc3637c.js} +34 -28
  15. package/dist/cjs/index-57b9fa9e.js +30 -0
  16. package/dist/cjs/{index-d01d9183.js → index-643851c6.js} +34 -19
  17. package/dist/cjs/index-731691ca.js +48 -0
  18. package/dist/cjs/{index-6bbae9b1.js → index-7d56774d.js} +12 -8
  19. package/dist/cjs/index-9fca5d6f.js +140 -0
  20. package/dist/cjs/index-b2a479e4.js +38 -0
  21. package/dist/cjs/{index-b4a9ece2.js → index-eaa0d16e.js} +7 -0
  22. package/dist/cjs/{tap-click-f24cb477.js → index-ed2ce04f.js} +37 -19
  23. package/dist/cjs/{input-shims-e959d9e2.js → input-shims-427999f7.js} +89 -38
  24. package/dist/cjs/ion-accordion-group.cjs.entry.js +205 -0
  25. package/dist/cjs/ion-accordion.cjs.entry.js +336 -0
  26. package/dist/cjs/ion-action-sheet_3.cjs.entry.js +865 -0
  27. package/dist/cjs/{ion-app_45.cjs.entry.js → ion-app_46.cjs.entry.js} +1775 -1471
  28. package/dist/cjs/ion-avatar.cjs.entry.js +2 -2
  29. package/dist/cjs/ion-back-button.cjs.entry.js +12 -11
  30. package/dist/cjs/ion-backdrop.cjs.entry.js +4 -4
  31. package/dist/cjs/ion-breadcrumb.cjs.entry.js +101 -0
  32. package/dist/cjs/ion-breadcrumbs.cjs.entry.js +133 -0
  33. package/dist/cjs/ion-buttons_3.cjs.entry.js +793 -0
  34. package/dist/cjs/ion-card-subtitle.cjs.entry.js +4 -4
  35. package/dist/cjs/{ion-list-header_3.cjs.entry.js → ion-checkbox_4.cjs.entry.js} +124 -23
  36. package/dist/cjs/ion-chip.cjs.entry.js +5 -10
  37. package/dist/cjs/ion-datetime-button.cjs.entry.js +346 -0
  38. package/dist/cjs/ion-datetime.cjs.entry.js +1548 -856
  39. package/dist/cjs/ion-fab-button.cjs.entry.js +26 -9
  40. package/dist/cjs/ion-fab-list.cjs.entry.js +4 -4
  41. package/dist/cjs/ion-fab.cjs.entry.js +15 -13
  42. package/dist/cjs/ion-img.cjs.entry.js +28 -4
  43. package/dist/cjs/ion-infinite-scroll-content.cjs.entry.js +5 -5
  44. package/dist/cjs/ion-infinite-scroll.cjs.entry.js +13 -13
  45. package/dist/cjs/ion-input.cjs.entry.js +57 -23
  46. package/dist/cjs/ion-item-option.cjs.entry.js +8 -8
  47. package/dist/cjs/ion-item-options.cjs.entry.js +5 -5
  48. package/dist/cjs/ion-item-sliding.cjs.entry.js +59 -63
  49. package/dist/cjs/ion-loading.cjs.entry.js +37 -36
  50. package/dist/cjs/ion-menu-button.cjs.entry.js +14 -12
  51. package/dist/cjs/ion-menu-toggle.cjs.entry.js +8 -7
  52. package/dist/cjs/ion-menu.cjs.entry.js +71 -57
  53. package/dist/cjs/ion-modal.cjs.entry.js +1384 -154
  54. package/dist/cjs/ion-nav-link.cjs.entry.js +5 -2
  55. package/dist/cjs/ion-nav.cjs.entry.js +177 -171
  56. package/dist/cjs/ion-picker-column.cjs.entry.js +25 -27
  57. package/dist/cjs/ion-picker.cjs.entry.js +22 -17
  58. package/dist/cjs/ion-popover.cjs.entry.js +1208 -182
  59. package/dist/cjs/ion-range.cjs.entry.js +137 -57
  60. package/dist/cjs/ion-refresher-content.cjs.entry.js +7 -12
  61. package/dist/cjs/ion-refresher.cjs.entry.js +150 -148
  62. package/dist/cjs/ion-reorder-group.cjs.entry.js +42 -35
  63. package/dist/cjs/ion-reorder.cjs.entry.js +5 -4
  64. package/dist/cjs/ion-route-redirect.cjs.entry.js +1 -1
  65. package/dist/cjs/ion-route.cjs.entry.js +1 -1
  66. package/dist/cjs/ion-router-link.cjs.entry.js +5 -5
  67. package/dist/cjs/ion-router-outlet.cjs.entry.js +24 -20
  68. package/dist/cjs/ion-router.cjs.entry.js +291 -194
  69. package/dist/cjs/ion-segment-button.cjs.entry.js +10 -17
  70. package/dist/cjs/ion-segment.cjs.entry.js +119 -26
  71. package/dist/cjs/ion-select-option.cjs.entry.js +3 -3
  72. package/dist/cjs/ion-select.cjs.entry.js +113 -78
  73. package/dist/cjs/ion-slide.cjs.entry.js +3 -3
  74. package/dist/cjs/ion-slides.cjs.entry.js +26 -27
  75. package/dist/cjs/ion-spinner.cjs.entry.js +10 -9
  76. package/dist/cjs/ion-split-pane.cjs.entry.js +16 -12
  77. package/dist/cjs/ion-tab-bar.cjs.entry.js +16 -23
  78. package/dist/cjs/ion-tab-button.cjs.entry.js +6 -6
  79. package/dist/cjs/ion-tab.cjs.entry.js +4 -4
  80. package/dist/cjs/ion-tabs.cjs.entry.js +4 -5
  81. package/dist/cjs/ion-text.cjs.entry.js +3 -3
  82. package/dist/cjs/ion-textarea.cjs.entry.js +31 -29
  83. package/dist/cjs/ion-thumbnail.cjs.entry.js +2 -2
  84. package/dist/cjs/ion-toast.cjs.entry.js +49 -59
  85. package/dist/cjs/ion-toggle.cjs.entry.js +41 -22
  86. package/dist/cjs/ion-virtual-scroll.cjs.entry.js +39 -31
  87. package/dist/cjs/{ionic-global-56e10eb5.js → ionic-global-f2d95fd3.js} +112 -93
  88. package/dist/cjs/{ios.transition-32e4623d.js → ios.transition-0f31ec9a.js} +78 -53
  89. package/dist/cjs/{keyboard-9e8103e4.js → keyboard-79afcba2.js} +6 -3
  90. package/dist/cjs/keyboard-controller-a934d106.js +42 -0
  91. package/dist/cjs/loader.cjs.js +5 -5
  92. package/dist/cjs/{md.transition-169c54f0.js → md.transition-d2a33a23.js} +15 -17
  93. package/dist/cjs/{menu-toggle-util-087678e0.js → menu-toggle-util-0a43ff7c.js} +5 -2
  94. package/dist/cjs/{overlays-49fe9ba7.js → overlays-65c716aa.js} +187 -71
  95. package/dist/cjs/spinner-configs-cd0abbeb.js +147 -0
  96. package/dist/cjs/{status-tap-ada894ff.js → status-tap-beaa3a71.js} +10 -5
  97. package/dist/cjs/{swipe-back-c4a778df.js → swipe-back-666ea8e6.js} +34 -15
  98. package/dist/cjs/test-component.cjs.entry.js +1 -1
  99. package/dist/cjs/{theme-2259d0f5.js → theme-fc63803b.js} +9 -5
  100. package/dist/collection/apps/pos-app-image-viewer/pos-app-image-viewer.js +1 -0
  101. package/dist/collection/collection-manifest.json +8 -1
  102. package/dist/collection/components/pos-image/pos-image.css +4 -0
  103. package/dist/custom-elements/index.js +12770 -4850
  104. package/dist/custom-elements/{tap-click.js → index2.js} +36 -18
  105. package/dist/custom-elements/input-shims.js +87 -38
  106. package/dist/custom-elements/ios.transition.js +74 -50
  107. package/dist/custom-elements/md.transition.js +11 -14
  108. package/dist/custom-elements/status-tap.js +7 -4
  109. package/dist/custom-elements/swipe-back.js +31 -13
  110. package/dist/elements/elements.css +1 -1
  111. package/dist/elements/elements.esm.js +1 -1
  112. package/dist/elements/p-0268cbd3.entry.js +7 -0
  113. package/dist/elements/p-0587332d.entry.js +1 -0
  114. package/dist/elements/{p-cfc0e54d.js → p-0991c811.js} +3 -0
  115. package/dist/elements/p-0a69a563.entry.js +1 -0
  116. package/dist/elements/p-0b95be17.entry.js +1 -0
  117. package/dist/elements/p-0d284fe0.entry.js +1 -0
  118. package/dist/elements/p-0fd77b33.entry.js +1 -0
  119. package/dist/elements/p-120dec2b.entry.js +1 -0
  120. package/dist/elements/p-12880671.entry.js +1 -0
  121. package/dist/elements/p-14ccd586.entry.js +1 -0
  122. package/dist/elements/{p-83d45051.entry.js → p-14df6ac0.entry.js} +1 -1
  123. package/dist/elements/{p-e860be6a.entry.js → p-17079f06.entry.js} +1 -1
  124. package/dist/elements/p-19e4a688.js +4 -0
  125. package/dist/elements/p-1afc4eb4.js +4 -0
  126. package/dist/elements/p-1beaf6bf.js +4 -0
  127. package/dist/elements/p-1d1c6a6f.entry.js +1 -0
  128. package/dist/elements/{p-31d30e42.entry.js → p-1d98f84b.entry.js} +1 -1
  129. package/dist/elements/p-278ca4c9.js +4 -0
  130. package/dist/elements/p-27f5629c.entry.js +1 -0
  131. package/dist/elements/p-29c0f03f.js +4 -0
  132. package/dist/elements/p-2da59aca.js +4 -0
  133. package/dist/elements/p-3152143f.js +4 -0
  134. package/dist/elements/p-343ff720.entry.js +7 -0
  135. package/dist/elements/p-36d4c9a8.js +4 -0
  136. package/dist/elements/p-3a30dfb2.entry.js +1 -0
  137. package/dist/elements/p-3c013bf1.entry.js +1 -0
  138. package/dist/elements/{p-74ba1e42.entry.js → p-3c318da5.entry.js} +1 -1
  139. package/dist/elements/p-3cee3222.entry.js +1 -0
  140. package/dist/elements/p-480b3c4f.entry.js +1 -0
  141. package/dist/elements/p-4e9d8f18.entry.js +1 -0
  142. package/dist/elements/p-53e23176.js +2 -0
  143. package/dist/elements/p-548524f3.js +4 -0
  144. package/dist/elements/p-5739fa41.entry.js +1 -0
  145. package/dist/elements/p-5808c505.js +1 -0
  146. package/dist/elements/p-58a8cc2a.js +4 -0
  147. package/dist/elements/p-6035415e.entry.js +1 -0
  148. package/dist/elements/p-60eeae90.js +4 -0
  149. package/dist/elements/p-610b03ff.entry.js +4 -0
  150. package/dist/elements/p-67777478.entry.js +1 -0
  151. package/dist/elements/p-6ab826e1.entry.js +1 -0
  152. package/dist/elements/p-6f5a2827.entry.js +1 -0
  153. package/dist/elements/p-779676c5.entry.js +1 -0
  154. package/dist/elements/p-7916ecc5.entry.js +1 -0
  155. package/dist/elements/p-79f06b80.entry.js +1 -0
  156. package/dist/elements/p-7b5991c1.entry.js +1 -0
  157. package/dist/elements/p-7d0def79.js +5 -0
  158. package/dist/elements/p-8112afea.js +4 -0
  159. package/dist/elements/p-83678d7d.entry.js +4 -0
  160. package/dist/elements/p-87e45c94.entry.js +1 -0
  161. package/dist/elements/p-8da6a31e.entry.js +1 -0
  162. package/dist/elements/p-8f80768f.entry.js +4 -0
  163. package/dist/elements/p-8fe0433b.js +4 -0
  164. package/dist/elements/{p-4cb27b48.entry.js → p-9147d82b.entry.js} +1 -1
  165. package/dist/elements/p-97abb434.entry.js +1 -0
  166. package/dist/elements/p-98497a4b.entry.js +1 -0
  167. package/dist/elements/p-9c719139.js +4 -0
  168. package/dist/elements/p-9ca37332.js +4 -0
  169. package/dist/elements/{p-37de7110.js → p-9d48def2.js} +3 -0
  170. package/dist/elements/p-a79a6ad9.entry.js +79 -0
  171. package/dist/elements/p-a805f2f9.entry.js +1 -0
  172. package/dist/elements/p-a86a5bfa.entry.js +1 -0
  173. package/dist/elements/{p-9c1dbe52.entry.js → p-ac34eab7.entry.js} +1 -1
  174. package/dist/elements/p-ad366eab.entry.js +4 -0
  175. package/dist/elements/p-aef3a931.js +7 -0
  176. package/dist/elements/p-b0537eb3.entry.js +1 -0
  177. package/dist/elements/p-b337f3b8.js +4 -0
  178. package/dist/elements/p-b34bf73f.entry.js +7 -0
  179. package/dist/elements/p-b41e66f0.entry.js +1 -0
  180. package/dist/elements/p-b47e7091.entry.js +1 -0
  181. package/dist/elements/p-b840320e.js +4 -0
  182. package/dist/elements/p-b934ac5d.entry.js +1 -0
  183. package/dist/elements/p-b98314e0.entry.js +4 -0
  184. package/dist/elements/p-bd12806f.entry.js +1 -0
  185. package/dist/elements/p-c16d38d5.js +4 -0
  186. package/dist/elements/p-c84205a3.js +4 -0
  187. package/dist/elements/{p-06675ac7.entry.js → p-cbe318f8.entry.js} +1 -1
  188. package/dist/elements/p-cfed7395.js +4 -0
  189. package/dist/elements/p-d22a1dc7.entry.js +7 -0
  190. package/dist/elements/p-d3e75c94.entry.js +1 -0
  191. package/dist/elements/p-d8f6d3ce.entry.js +14 -0
  192. package/dist/elements/p-d9880221.entry.js +4 -0
  193. package/dist/elements/p-da5db8fb.entry.js +1 -0
  194. package/dist/elements/{p-91fe653f.js → p-dcc6b03c.js} +3 -0
  195. package/dist/elements/{p-305e246c.entry.js → p-dd846020.entry.js} +1 -1
  196. package/dist/elements/p-df240b2a.entry.js +4 -0
  197. package/dist/elements/p-dffd8689.js +4 -0
  198. package/dist/elements/p-e495a095.js +4 -0
  199. package/dist/elements/p-e5fc7d42.entry.js +1 -0
  200. package/dist/elements/{p-aaa8393e.entry.js → p-eb137e9d.entry.js} +1 -1
  201. package/dist/elements/p-f4e54a17.js +7 -0
  202. package/dist/elements/p-f67d0717.entry.js +1 -0
  203. package/dist/elements/p-f7f4c640.js +1 -0
  204. package/dist/elements/p-f851b91a.js +4 -0
  205. package/dist/elements/p-fb27ee76.entry.js +1 -0
  206. package/dist/elements/p-fbddca35.entry.js +1 -0
  207. package/dist/elements/p-fc1df8e0.entry.js +7 -0
  208. package/dist/elements/p-fdac5f3a.js +4 -0
  209. package/dist/esm/{animation-fe6ed422.js → animation-801a007a.js} +115 -84
  210. package/dist/esm/{app-globals-27d92837.js → app-globals-05a3abfb.js} +1 -1
  211. package/dist/esm/{cubic-bezier-108b8579.js → cubic-bezier-538b6253.js} +13 -12
  212. package/dist/esm/data-62c81c24.js +1463 -0
  213. package/dist/esm/dir-defb16c6.js +18 -0
  214. package/dist/esm/elements.js +5 -5
  215. package/dist/esm/focus-visible-78d55799.js +74 -0
  216. package/dist/esm/framework-delegate-7e2b767b.js +115 -0
  217. package/dist/esm/{gesture-controller-8f35af24.js → gesture-controller-c466ff14.js} +6 -2
  218. package/dist/esm/{haptic-c424e670.js → haptic-e7d5ef4d.js} +38 -9
  219. package/dist/esm/{hardware-back-button-bb4c578a.js → hardware-back-button-242191a7.js} +11 -8
  220. package/dist/esm/{helpers-44e3bd9f.js → helpers-aeff219b.js} +113 -16
  221. package/dist/esm/index-0dbaca1a.js +28 -0
  222. package/dist/esm/index-1f3d8582.js +34 -0
  223. package/dist/esm/{index-97199683.js → index-2be9a18b.js} +34 -28
  224. package/dist/esm/{index-8d682224.js → index-51e4a829.js} +12 -8
  225. package/dist/esm/{index-8a463a85.js → index-6048aed6.js} +35 -24
  226. package/dist/esm/index-65ecd543.js +25 -0
  227. package/dist/esm/{tap-click-a7e55ef5.js → index-b212db1c.js} +37 -19
  228. package/dist/esm/{index-e4deec27.js → index-cb938ffb.js} +7 -1
  229. package/dist/esm/{index-3a1bd803.js → index-d39eb62b.js} +35 -20
  230. package/dist/esm/index-ebf7f059.js +128 -0
  231. package/dist/esm/{input-shims-3b48722f.js → input-shims-8a389148.js} +89 -38
  232. package/dist/esm/ion-accordion-group.entry.js +201 -0
  233. package/dist/esm/ion-accordion.entry.js +332 -0
  234. package/dist/esm/ion-action-sheet_3.entry.js +859 -0
  235. package/dist/esm/{ion-app_45.entry.js → ion-app_46.entry.js} +1775 -1472
  236. package/dist/esm/ion-avatar.entry.js +2 -2
  237. package/dist/esm/ion-back-button.entry.js +12 -11
  238. package/dist/esm/ion-backdrop.entry.js +4 -4
  239. package/dist/esm/ion-breadcrumb.entry.js +97 -0
  240. package/dist/esm/ion-breadcrumbs.entry.js +129 -0
  241. package/dist/esm/ion-buttons_3.entry.js +787 -0
  242. package/dist/esm/ion-card-subtitle.entry.js +4 -4
  243. package/dist/esm/{ion-list-header_3.entry.js → ion-checkbox_4.entry.js} +124 -24
  244. package/dist/esm/ion-chip.entry.js +5 -10
  245. package/dist/esm/ion-datetime-button.entry.js +342 -0
  246. package/dist/esm/ion-datetime.entry.js +1548 -856
  247. package/dist/esm/ion-fab-button.entry.js +26 -9
  248. package/dist/esm/ion-fab-list.entry.js +4 -4
  249. package/dist/esm/ion-fab.entry.js +15 -13
  250. package/dist/esm/ion-img.entry.js +28 -4
  251. package/dist/esm/ion-infinite-scroll-content.entry.js +5 -5
  252. package/dist/esm/ion-infinite-scroll.entry.js +13 -13
  253. package/dist/esm/ion-input.entry.js +57 -23
  254. package/dist/esm/ion-item-option.entry.js +8 -8
  255. package/dist/esm/ion-item-options.entry.js +5 -5
  256. package/dist/esm/ion-item-sliding.entry.js +59 -63
  257. package/dist/esm/ion-loading.entry.js +37 -36
  258. package/dist/esm/ion-menu-button.entry.js +14 -12
  259. package/dist/esm/ion-menu-toggle.entry.js +8 -7
  260. package/dist/esm/ion-menu.entry.js +71 -57
  261. package/dist/esm/ion-modal.entry.js +1375 -145
  262. package/dist/esm/ion-nav-link.entry.js +5 -2
  263. package/dist/esm/ion-nav.entry.js +177 -171
  264. package/dist/esm/ion-picker-column.entry.js +25 -27
  265. package/dist/esm/ion-picker.entry.js +22 -17
  266. package/dist/esm/ion-popover.entry.js +1208 -182
  267. package/dist/esm/ion-range.entry.js +137 -57
  268. package/dist/esm/ion-refresher-content.entry.js +7 -12
  269. package/dist/esm/ion-refresher.entry.js +149 -147
  270. package/dist/esm/ion-reorder-group.entry.js +42 -35
  271. package/dist/esm/ion-reorder.entry.js +5 -4
  272. package/dist/esm/ion-route-redirect.entry.js +1 -1
  273. package/dist/esm/ion-route.entry.js +1 -1
  274. package/dist/esm/ion-router-link.entry.js +5 -5
  275. package/dist/esm/ion-router-outlet.entry.js +24 -20
  276. package/dist/esm/ion-router.entry.js +291 -194
  277. package/dist/esm/ion-segment-button.entry.js +10 -17
  278. package/dist/esm/ion-segment.entry.js +119 -26
  279. package/dist/esm/ion-select-option.entry.js +3 -3
  280. package/dist/esm/ion-select.entry.js +113 -78
  281. package/dist/esm/ion-slide.entry.js +3 -3
  282. package/dist/esm/ion-slides.entry.js +26 -27
  283. package/dist/esm/ion-spinner.entry.js +10 -9
  284. package/dist/esm/ion-split-pane.entry.js +16 -12
  285. package/dist/esm/ion-tab-bar.entry.js +16 -23
  286. package/dist/esm/ion-tab-button.entry.js +6 -6
  287. package/dist/esm/ion-tab.entry.js +4 -4
  288. package/dist/esm/ion-tabs.entry.js +4 -5
  289. package/dist/esm/ion-text.entry.js +3 -3
  290. package/dist/esm/ion-textarea.entry.js +31 -29
  291. package/dist/esm/ion-thumbnail.entry.js +2 -2
  292. package/dist/esm/ion-toast.entry.js +49 -59
  293. package/dist/esm/ion-toggle.entry.js +41 -22
  294. package/dist/esm/ion-virtual-scroll.entry.js +39 -31
  295. package/dist/esm/{ionic-global-2e28f7c7.js → ionic-global-6cd57191.js} +112 -93
  296. package/dist/esm/{ios.transition-a783e3cd.js → ios.transition-bbd952f2.js} +78 -53
  297. package/dist/{custom-elements/keyboard.js → esm/keyboard-413afe04.js} +6 -3
  298. package/dist/esm/keyboard-controller-33693bc2.js +40 -0
  299. package/dist/esm/loader.js +5 -5
  300. package/dist/esm/{md.transition-5a4a8c82.js → md.transition-5170a6d3.js} +15 -17
  301. package/dist/esm/{menu-toggle-util-562dfc9c.js → menu-toggle-util-82bf888a.js} +5 -2
  302. package/dist/esm/{overlays-fc9a0625.js → overlays-0c7f05e1.js} +186 -71
  303. package/dist/esm/spinner-configs-cbcd1f62.js +145 -0
  304. package/dist/esm/{status-tap-69e62ad6.js → status-tap-ad757b8a.js} +10 -5
  305. package/dist/esm/swipe-back-7ef22876.js +69 -0
  306. package/dist/esm/test-component.entry.js +1 -1
  307. package/dist/esm/{theme-d21826a7.js → theme-7cf2cab0.js} +9 -5
  308. package/package.json +4 -5
  309. package/LICENSE +0 -21
  310. package/dist/cjs/button-active-c14dab31.js +0 -66
  311. package/dist/cjs/focus-visible-16c98640.js +0 -45
  312. package/dist/cjs/framework-delegate-c45292a3.js +0 -37
  313. package/dist/cjs/ion-action-sheet.cjs.entry.js +0 -265
  314. package/dist/cjs/ion-alert.cjs.entry.js +0 -456
  315. package/dist/cjs/ion-buttons.cjs.entry.js +0 -42
  316. package/dist/cjs/ion-checkbox.cjs.entry.js +0 -117
  317. package/dist/cjs/ion-note.cjs.entry.js +0 -29
  318. package/dist/cjs/ion-select-popover.cjs.entry.js +0 -35
  319. package/dist/cjs/spinner-configs-fb16b986.js +0 -112
  320. package/dist/custom-elements/focus-visible.js +0 -43
  321. package/dist/elements/p-03bda390.js +0 -1
  322. package/dist/elements/p-0be044f1.entry.js +0 -1
  323. package/dist/elements/p-119c7c6c.entry.js +0 -1
  324. package/dist/elements/p-14c7c3ea.entry.js +0 -1
  325. package/dist/elements/p-1d4a2c61.js +0 -1
  326. package/dist/elements/p-1d894ac4.entry.js +0 -1
  327. package/dist/elements/p-1dafa1ce.entry.js +0 -1
  328. package/dist/elements/p-23b89ccb.entry.js +0 -1
  329. package/dist/elements/p-2c03b9ab.entry.js +0 -1
  330. package/dist/elements/p-346985f2.js +0 -1
  331. package/dist/elements/p-360f1c62.entry.js +0 -1
  332. package/dist/elements/p-373e1f25.entry.js +0 -1
  333. package/dist/elements/p-40547acb.entry.js +0 -1
  334. package/dist/elements/p-40b68014.entry.js +0 -1
  335. package/dist/elements/p-42e4f702.entry.js +0 -1
  336. package/dist/elements/p-489807e5.js +0 -1
  337. package/dist/elements/p-4ad72d54.entry.js +0 -1
  338. package/dist/elements/p-4cca7b5e.entry.js +0 -1
  339. package/dist/elements/p-4f24d306.js +0 -1
  340. package/dist/elements/p-519d6a53.entry.js +0 -1
  341. package/dist/elements/p-536e8e52.entry.js +0 -1
  342. package/dist/elements/p-599bb53f.entry.js +0 -1
  343. package/dist/elements/p-5eb7a546.js +0 -1
  344. package/dist/elements/p-60df2bed.entry.js +0 -1
  345. package/dist/elements/p-65133e33.js +0 -1
  346. package/dist/elements/p-6693fce8.js +0 -1
  347. package/dist/elements/p-689bdcc1.entry.js +0 -1
  348. package/dist/elements/p-70713b3d.entry.js +0 -1
  349. package/dist/elements/p-707d5d76.js +0 -1
  350. package/dist/elements/p-7212b7f2.js +0 -1
  351. package/dist/elements/p-73992898.entry.js +0 -1
  352. package/dist/elements/p-792c1e0f.entry.js +0 -1
  353. package/dist/elements/p-7e5300af.js +0 -2
  354. package/dist/elements/p-8068987c.entry.js +0 -1
  355. package/dist/elements/p-83accf46.entry.js +0 -1
  356. package/dist/elements/p-86635d06.entry.js +0 -1
  357. package/dist/elements/p-874c2b44.js +0 -1
  358. package/dist/elements/p-89c12ce8.entry.js +0 -1
  359. package/dist/elements/p-8bcba3f7.entry.js +0 -1
  360. package/dist/elements/p-8c759f51.entry.js +0 -1
  361. package/dist/elements/p-8f945e6b.entry.js +0 -1
  362. package/dist/elements/p-9300ab6a.js +0 -1
  363. package/dist/elements/p-93cacd51.entry.js +0 -1
  364. package/dist/elements/p-9408d0b4.entry.js +0 -1
  365. package/dist/elements/p-98c79eda.js +0 -1
  366. package/dist/elements/p-99f8abed.js +0 -1
  367. package/dist/elements/p-9ca7e079.js +0 -1
  368. package/dist/elements/p-a4648b74.entry.js +0 -1
  369. package/dist/elements/p-aab0f63c.js +0 -1
  370. package/dist/elements/p-ad4e2295.entry.js +0 -1
  371. package/dist/elements/p-afb8f7d5.entry.js +0 -1
  372. package/dist/elements/p-b055ec44.js +0 -1
  373. package/dist/elements/p-b078d63b.entry.js +0 -1
  374. package/dist/elements/p-b3460325.entry.js +0 -1
  375. package/dist/elements/p-b3f4042e.entry.js +0 -67
  376. package/dist/elements/p-b5406b58.entry.js +0 -1
  377. package/dist/elements/p-b5ef0c91.entry.js +0 -1
  378. package/dist/elements/p-b6ba623e.entry.js +0 -1
  379. package/dist/elements/p-b9926d8b.entry.js +0 -1
  380. package/dist/elements/p-bfd4cfcd.entry.js +0 -1
  381. package/dist/elements/p-c08dd7d0.entry.js +0 -1
  382. package/dist/elements/p-c0db9c51.entry.js +0 -1
  383. package/dist/elements/p-c1e7fbfb.js +0 -1
  384. package/dist/elements/p-ca69d6c9.js +0 -1
  385. package/dist/elements/p-cc4cb1ac.entry.js +0 -1
  386. package/dist/elements/p-cf8a7031.entry.js +0 -1
  387. package/dist/elements/p-cff82b6f.js +0 -1
  388. package/dist/elements/p-d6d1e65f.entry.js +0 -1
  389. package/dist/elements/p-d9462b66.entry.js +0 -1
  390. package/dist/elements/p-e2e0fee9.entry.js +0 -1
  391. package/dist/elements/p-e642b266.entry.js +0 -1
  392. package/dist/elements/p-e953934f.entry.js +0 -1
  393. package/dist/elements/p-f0474f46.js +0 -1
  394. package/dist/elements/p-f10a94f6.entry.js +0 -1
  395. package/dist/elements/p-f2426182.entry.js +0 -1
  396. package/dist/elements/p-f327fd21.js +0 -1
  397. package/dist/elements/p-f84987ee.js +0 -1
  398. package/dist/elements/p-f8a3367d.entry.js +0 -1
  399. package/dist/esm/button-active-fd9d6d91.js +0 -64
  400. package/dist/esm/focus-visible-edb28f19.js +0 -43
  401. package/dist/esm/framework-delegate-9cd8048f.js +0 -34
  402. package/dist/esm/ion-action-sheet.entry.js +0 -261
  403. package/dist/esm/ion-alert.entry.js +0 -452
  404. package/dist/esm/ion-buttons.entry.js +0 -38
  405. package/dist/esm/ion-checkbox.entry.js +0 -113
  406. package/dist/esm/ion-note.entry.js +0 -25
  407. package/dist/esm/ion-select-popover.entry.js +0 -31
  408. package/dist/esm/keyboard-e6abcb80.js +0 -125
  409. package/dist/esm/spinner-configs-aaf2a1a9.js +0 -110
  410. package/dist/esm/swipe-back-d84cfc8a.js +0 -50
  411. package/readme.md +0 -55
@@ -0,0 +1,787 @@
1
+ import { r as registerInstance, h, H as Host, d as createEvent, c as getElement } from './index-cb938ffb.js';
2
+ import { g as getIonMode } from './ionic-global-6cd57191.js';
3
+ import { r as raf, g as getElementRoot } from './helpers-aeff219b.js';
4
+ import { a as hapticSelectionStart, b as hapticSelectionChanged, c as hapticSelectionEnd } from './haptic-e7d5ef4d.js';
5
+ import { c as createColorClasses } from './theme-7cf2cab0.js';
6
+
7
+ const buttonsIosCss = ".sc-ion-buttons-ios-h{display:flex;align-items:center;transform:translateZ(0);z-index:99}.sc-ion-buttons-ios-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-ios-s ion-button{--padding-start:5px;--padding-end:5px;margin-left:2px;margin-right:2px;height:32px;font-size:17px;font-weight:400}@supports (margin-inline-start: 0) or (-webkit-margin-start: 0){.sc-ion-buttons-ios-s ion-button{margin-left:unset;margin-right:unset;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px}}.sc-ion-buttons-ios-s ion-button:not(.button-round){--border-radius:4px}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button{--color:initial;--border-color:initial;--background-focused:var(--ion-color-contrast)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-solid,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-solid{--background:var(--ion-color-contrast);--background-focused:#000;--background-focused-opacity:.12;--background-activated:#000;--background-activated-opacity:.12;--background-hover:var(--ion-color-base);--background-hover-opacity:0.45;--color:var(--ion-color-base);--color-focused:var(--ion-color-base)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-clear,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-clear{--color-activated:var(--ion-color-contrast);--color-focused:var(--ion-color-contrast)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-outline,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-outline{--color-activated:var(--ion-color-base);--color-focused:var(--ion-color-contrast)}.sc-ion-buttons-ios-s .button-clear,.sc-ion-buttons-ios-s .button-outline{--background-activated:transparent;--background-focused:currentColor;--background-hover:transparent}.sc-ion-buttons-ios-s .button-solid:not(.ion-color){--background-focused:#000;--background-focused-opacity:.12;--background-activated:#000;--background-activated-opacity:.12}.sc-ion-buttons-ios-s ion-icon[slot=start]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;margin-right:0.3em;font-size:24px;line-height:0.67}@supports (margin-inline-start: 0) or (-webkit-margin-start: 0){.sc-ion-buttons-ios-s ion-icon[slot=start]{margin-right:unset;-webkit-margin-end:0.3em;margin-inline-end:0.3em}}.sc-ion-buttons-ios-s ion-icon[slot=end]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;margin-left:0.4em;font-size:24px;line-height:0.67}@supports (margin-inline-start: 0) or (-webkit-margin-start: 0){.sc-ion-buttons-ios-s ion-icon[slot=end]{margin-left:unset;-webkit-margin-start:0.4em;margin-inline-start:0.4em}}.sc-ion-buttons-ios-s ion-icon[slot=icon-only]{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;font-size:28px;line-height:0.67}";
8
+
9
+ const buttonsMdCss = ".sc-ion-buttons-md-h{display:flex;align-items:center;transform:translateZ(0);z-index:99}.sc-ion-buttons-md-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-md-s ion-button{--padding-top:0;--padding-bottom:0;--padding-start:8px;--padding-end:8px;--box-shadow:none;margin-left:2px;margin-right:2px;height:32px;font-size:14px;font-weight:500}@supports (margin-inline-start: 0) or (-webkit-margin-start: 0){.sc-ion-buttons-md-s ion-button{margin-left:unset;margin-right:unset;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px}}.sc-ion-buttons-md-s ion-button:not(.button-round){--border-radius:2px}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button{--color:initial;--color-focused:var(--ion-color-contrast);--color-hover:var(--ion-color-contrast);--background-activated:transparent;--background-focused:var(--ion-color-contrast);--background-hover:var(--ion-color-contrast)}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button-solid,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button-solid{--background:var(--ion-color-contrast);--background-activated:transparent;--background-focused:var(--ion-color-shade);--background-hover:var(--ion-color-base);--color:var(--ion-color-base);--color-focused:var(--ion-color-base);--color-hover:var(--ion-color-base)}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button-outline,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button-outline{--border-color:var(--ion-color-contrast)}.sc-ion-buttons-md-s .button-has-icon-only.button-clear{--padding-top:12px;--padding-end:12px;--padding-bottom:12px;--padding-start:12px;--border-radius:50%;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;width:48px;height:48px}.sc-ion-buttons-md-s .button{--background-hover:currentColor}.sc-ion-buttons-md-s .button-solid{--color:var(--ion-toolbar-background, var(--ion-background-color, #fff));--background:var(--ion-toolbar-color, var(--ion-text-color, #424242));--background-activated:transparent;--background-focused:currentColor}.sc-ion-buttons-md-s .button-outline{--color:initial;--background:transparent;--background-activated:transparent;--background-focused:currentColor;--background-hover:currentColor;--border-color:currentColor}.sc-ion-buttons-md-s .button-clear{--color:initial;--background:transparent;--background-activated:transparent;--background-focused:currentColor;--background-hover:currentColor}.sc-ion-buttons-md-s ion-icon[slot=start]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;margin-right:0.3em;font-size:1.4em}@supports (margin-inline-start: 0) or (-webkit-margin-start: 0){.sc-ion-buttons-md-s ion-icon[slot=start]{margin-right:unset;-webkit-margin-end:0.3em;margin-inline-end:0.3em}}.sc-ion-buttons-md-s ion-icon[slot=end]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;margin-left:0.4em;font-size:1.4em}@supports (margin-inline-start: 0) or (-webkit-margin-start: 0){.sc-ion-buttons-md-s ion-icon[slot=end]{margin-left:unset;-webkit-margin-start:0.4em;margin-inline-start:0.4em}}.sc-ion-buttons-md-s ion-icon[slot=icon-only]{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;font-size:1.8em}";
10
+
11
+ const Buttons = class {
12
+ constructor(hostRef) {
13
+ registerInstance(this, hostRef);
14
+ /**
15
+ * If true, buttons will disappear when its
16
+ * parent toolbar has fully collapsed if the toolbar
17
+ * is not the first toolbar. If the toolbar is the
18
+ * first toolbar, the buttons will be hidden and will
19
+ * only be shown once all toolbars have fully collapsed.
20
+ *
21
+ * Only applies in `ios` mode with `collapse` set to
22
+ * `true` on `ion-header`.
23
+ *
24
+ * Typically used for [Collapsible Large Titles](https://ionicframework.com/docs/api/title#collapsible-large-titles)
25
+ */
26
+ this.collapse = false;
27
+ }
28
+ render() {
29
+ const mode = getIonMode(this);
30
+ return (h(Host, { class: {
31
+ [mode]: true,
32
+ ['buttons-collapse']: this.collapse,
33
+ } }));
34
+ }
35
+ };
36
+ Buttons.style = {
37
+ ios: buttonsIosCss,
38
+ md: buttonsMdCss
39
+ };
40
+
41
+ const pickerColumnInternalIosCss = ":host{padding-left:16px;padding-right:16px;padding-top:0px;padding-bottom:0px;height:200px;outline:none;font-size:22px;scroll-snap-type:y mandatory;overflow-x:hidden;overflow-y:scroll;scrollbar-width:none;text-align:center}@supports (margin-inline-start: 0) or (-webkit-margin-start: 0){:host{padding-left:unset;padding-right:unset;-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px}}:host::-webkit-scrollbar{display:none}:host .picker-item{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,:host .picker-item.picker-item-disabled{scroll-snap-align:none;cursor:default}:host .picker-item.picker-item-disabled{opacity:0.4}:host(.picker-column-active) .picker-item.picker-item-active{color:var(--ion-color-base)}@media (any-hover: hover){:host(:focus){outline:none;background:rgba(var(--ion-color-base-rgb), 0.2)}}";
42
+
43
+ const pickerColumnInternalMdCss = ":host{padding-left:16px;padding-right:16px;padding-top:0px;padding-bottom:0px;height:200px;outline:none;font-size:22px;scroll-snap-type:y mandatory;overflow-x:hidden;overflow-y:scroll;scrollbar-width:none;text-align:center}@supports (margin-inline-start: 0) or (-webkit-margin-start: 0){:host{padding-left:unset;padding-right:unset;-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px}}:host::-webkit-scrollbar{display:none}:host .picker-item{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,:host .picker-item.picker-item-disabled{scroll-snap-align:none;cursor:default}:host .picker-item.picker-item-disabled{opacity:0.4}:host(.picker-column-active) .picker-item.picker-item-active{color:var(--ion-color-base)}@media (any-hover: hover){:host(:focus){outline:none;background:rgba(var(--ion-color-base-rgb), 0.2)}}:host .picker-item-active{color:var(--ion-color-base)}";
44
+
45
+ const PickerColumnInternal = class {
46
+ constructor(hostRef) {
47
+ registerInstance(this, hostRef);
48
+ this.ionChange = createEvent(this, "ionChange", 7);
49
+ this.isScrolling = false;
50
+ this.isColumnVisible = false;
51
+ this.isActive = false;
52
+ /**
53
+ * A list of options to be displayed in the picker
54
+ */
55
+ this.items = [];
56
+ /**
57
+ * The color to use from your application's color palette.
58
+ * Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`.
59
+ * For more information on colors, see [theming](/docs/theming/basics).
60
+ */
61
+ this.color = 'primary';
62
+ /**
63
+ * If `true`, tapping the picker will
64
+ * reveal a number input keyboard that lets
65
+ * the user type in values for each picker
66
+ * column. This is useful when working
67
+ * with time pickers.
68
+ *
69
+ * @internal
70
+ */
71
+ this.numericInput = false;
72
+ this.centerPickerItemInView = (target, smooth = true) => {
73
+ const { el, isColumnVisible } = this;
74
+ if (isColumnVisible) {
75
+ // (Vertical offset from parent) - (three empty picker rows) + (half the height of the target to ensure the scroll triggers)
76
+ const top = target.offsetTop - 3 * target.clientHeight + target.clientHeight / 2;
77
+ if (el.scrollTop !== top) {
78
+ el.scroll({
79
+ top,
80
+ left: 0,
81
+ behavior: smooth ? 'smooth' : undefined,
82
+ });
83
+ }
84
+ }
85
+ };
86
+ /**
87
+ * When ionInputModeChange is emitted, each column
88
+ * needs to check if it is the one being made available
89
+ * for text entry.
90
+ */
91
+ this.inputModeChange = (ev) => {
92
+ if (!this.numericInput) {
93
+ return;
94
+ }
95
+ const { useInputMode, inputModeColumn } = ev.detail;
96
+ /**
97
+ * If inputModeColumn is undefined then this means
98
+ * all numericInput columns are being selected.
99
+ */
100
+ const isColumnActive = inputModeColumn === undefined || inputModeColumn === this.el;
101
+ if (!useInputMode || !isColumnActive) {
102
+ this.setInputModeActive(false);
103
+ return;
104
+ }
105
+ this.setInputModeActive(true);
106
+ };
107
+ /**
108
+ * Setting isActive will cause a re-render.
109
+ * As a result, we do not want to cause the
110
+ * re-render mid scroll as this will cause
111
+ * the picker column to jump back to
112
+ * whatever value was selected at the
113
+ * start of the scroll interaction.
114
+ */
115
+ this.setInputModeActive = (state) => {
116
+ if (this.isScrolling) {
117
+ this.scrollEndCallback = () => {
118
+ this.isActive = state;
119
+ };
120
+ return;
121
+ }
122
+ this.isActive = state;
123
+ };
124
+ /**
125
+ * When the column scrolls, the component
126
+ * needs to determine which item is centered
127
+ * in the view and will emit an ionChange with
128
+ * the item object.
129
+ */
130
+ this.initializeScrollListener = () => {
131
+ const { el } = this;
132
+ let timeout;
133
+ let activeEl = this.activeItem;
134
+ const scrollCallback = () => {
135
+ raf(() => {
136
+ if (timeout) {
137
+ clearTimeout(timeout);
138
+ timeout = undefined;
139
+ }
140
+ if (!this.isScrolling) {
141
+ hapticSelectionStart();
142
+ this.isScrolling = true;
143
+ }
144
+ /**
145
+ * Select item in the center of the column
146
+ * which is the month/year that we want to select
147
+ */
148
+ const bbox = el.getBoundingClientRect();
149
+ const centerX = bbox.x + bbox.width / 2;
150
+ const centerY = bbox.y + bbox.height / 2;
151
+ const activeElement = el.shadowRoot.elementFromPoint(centerX, centerY);
152
+ if (activeEl !== null) {
153
+ activeEl.classList.remove(PICKER_COL_ACTIVE);
154
+ }
155
+ if (activeElement.disabled) {
156
+ return;
157
+ }
158
+ /**
159
+ * If we are selecting a new value,
160
+ * we need to run haptics again.
161
+ */
162
+ if (activeElement !== activeEl) {
163
+ hapticSelectionChanged();
164
+ }
165
+ activeEl = activeElement;
166
+ activeElement.classList.add(PICKER_COL_ACTIVE);
167
+ timeout = setTimeout(() => {
168
+ this.isScrolling = false;
169
+ hapticSelectionEnd();
170
+ /**
171
+ * Certain tasks (such as those that
172
+ * cause re-renders) should only be done
173
+ * once scrolling has finished, otherwise
174
+ * flickering may occur.
175
+ */
176
+ const { scrollEndCallback } = this;
177
+ if (scrollEndCallback) {
178
+ scrollEndCallback();
179
+ this.scrollEndCallback = undefined;
180
+ }
181
+ const dataIndex = activeElement.getAttribute('data-index');
182
+ /**
183
+ * If no value it is
184
+ * possible we hit one of the
185
+ * empty padding columns.
186
+ */
187
+ if (dataIndex === null) {
188
+ return;
189
+ }
190
+ const index = parseInt(dataIndex, 10);
191
+ const selectedItem = this.items[index];
192
+ if (selectedItem.value !== this.value) {
193
+ this.setValue(selectedItem.value);
194
+ }
195
+ }, 250);
196
+ });
197
+ };
198
+ /**
199
+ * Wrap this in an raf so that the scroll callback
200
+ * does not fire when component is initially shown.
201
+ */
202
+ raf(() => {
203
+ el.addEventListener('scroll', scrollCallback);
204
+ this.destroyScrollListener = () => {
205
+ el.removeEventListener('scroll', scrollCallback);
206
+ };
207
+ });
208
+ };
209
+ }
210
+ valueChange() {
211
+ if (this.isColumnVisible) {
212
+ /**
213
+ * Only scroll the active item into view when the picker column
214
+ * is actively visible to the user.
215
+ */
216
+ this.scrollActiveItemIntoView();
217
+ }
218
+ }
219
+ /**
220
+ * Only setup scroll listeners
221
+ * when the picker is visible, otherwise
222
+ * the container will have a scroll
223
+ * height of 0px.
224
+ */
225
+ componentWillLoad() {
226
+ const visibleCallback = (entries) => {
227
+ var _a;
228
+ const ev = entries[0];
229
+ if (ev.isIntersecting) {
230
+ this.isColumnVisible = true;
231
+ /**
232
+ * Because this initial call to scrollActiveItemIntoView has to fire before
233
+ * the scroll listener is set up, we need to manage the active class manually.
234
+ */
235
+ const oldActive = getElementRoot(this.el).querySelector(`.${PICKER_COL_ACTIVE}`);
236
+ oldActive === null || oldActive === void 0 ? void 0 : oldActive.classList.remove(PICKER_COL_ACTIVE);
237
+ this.scrollActiveItemIntoView();
238
+ (_a = this.activeItem) === null || _a === void 0 ? void 0 : _a.classList.add(PICKER_COL_ACTIVE);
239
+ this.initializeScrollListener();
240
+ }
241
+ else {
242
+ this.isColumnVisible = false;
243
+ if (this.destroyScrollListener) {
244
+ this.destroyScrollListener();
245
+ this.destroyScrollListener = undefined;
246
+ }
247
+ }
248
+ };
249
+ new IntersectionObserver(visibleCallback, { threshold: 0.001 }).observe(this.el);
250
+ const parentEl = this.el.closest('ion-picker-internal');
251
+ if (parentEl !== null) {
252
+ parentEl.addEventListener('ionInputModeChange', (ev) => this.inputModeChange(ev));
253
+ }
254
+ }
255
+ componentDidRender() {
256
+ var _a;
257
+ const { activeItem, items, isColumnVisible, value } = this;
258
+ if (isColumnVisible) {
259
+ if (activeItem) {
260
+ this.scrollActiveItemIntoView();
261
+ }
262
+ else if (((_a = items[0]) === null || _a === void 0 ? void 0 : _a.value) !== value) {
263
+ /**
264
+ * If the picker column does not have an active item and the current value
265
+ * does not match the first item in the picker column, that means
266
+ * the value is out of bounds. In this case, we assign the value to the
267
+ * first item to match the scroll position of the column.
268
+ *
269
+ */
270
+ this.setValue(items[0].value);
271
+ }
272
+ }
273
+ }
274
+ /** @internal */
275
+ async scrollActiveItemIntoView() {
276
+ const activeEl = this.activeItem;
277
+ if (activeEl) {
278
+ this.centerPickerItemInView(activeEl, false);
279
+ }
280
+ }
281
+ /**
282
+ * Sets the value prop and fires the ionChange event.
283
+ * This is used when we need to fire ionChange from
284
+ * user-generated events that cannot be caught with normal
285
+ * input/change event listeners.
286
+ * @internal
287
+ */
288
+ async setValue(value) {
289
+ const { items } = this;
290
+ this.value = value;
291
+ const findItem = items.find((item) => item.value === value && item.disabled !== true);
292
+ if (findItem) {
293
+ this.ionChange.emit(findItem);
294
+ }
295
+ }
296
+ get activeItem() {
297
+ return getElementRoot(this.el).querySelector(`.picker-item[data-value="${this.value}"]:not([disabled])`);
298
+ }
299
+ render() {
300
+ const { items, color, isActive, numericInput } = this;
301
+ const mode = getIonMode(this);
302
+ return (h(Host, { tabindex: 0, class: createColorClasses(color, {
303
+ [mode]: true,
304
+ ['picker-column-active']: isActive,
305
+ ['picker-column-numeric-input']: numericInput,
306
+ }) }, h("div", { class: "picker-item picker-item-empty" }, "\u00A0"), h("div", { class: "picker-item picker-item-empty" }, "\u00A0"), h("div", { class: "picker-item picker-item-empty" }, "\u00A0"), items.map((item, index) => {
307
+ return (h("button", { tabindex: "-1", class: {
308
+ 'picker-item': true,
309
+ 'picker-item-disabled': item.disabled || false,
310
+ }, "data-value": item.value, "data-index": index, onClick: (ev) => {
311
+ this.centerPickerItemInView(ev.target);
312
+ }, disabled: item.disabled }, item.text));
313
+ }), h("div", { class: "picker-item picker-item-empty" }, "\u00A0"), h("div", { class: "picker-item picker-item-empty" }, "\u00A0"), h("div", { class: "picker-item picker-item-empty" }, "\u00A0")));
314
+ }
315
+ get el() { return getElement(this); }
316
+ static get watchers() { return {
317
+ "value": ["valueChange"]
318
+ }; }
319
+ };
320
+ const PICKER_COL_ACTIVE = 'picker-item-active';
321
+ PickerColumnInternal.style = {
322
+ ios: pickerColumnInternalIosCss,
323
+ md: pickerColumnInternalMdCss
324
+ };
325
+
326
+ const pickerInternalIosCss = ":host{display:flex;position:relative;align-items:center;justify-content:center;width:100%;height:200px;direction:ltr;z-index:0}:host .picker-before,:host .picker-after{position:absolute;width:100%;transform:translateZ(0);z-index:1;pointer-events:none}:host .picker-before{left:0;top:0;height:83px}:host-context([dir=rtl]){left:unset;right:unset;right:0}:host .picker-after{left:0;top:116px;height:84px}:host-context([dir=rtl]){left:unset;right:unset;right:0}:host .picker-highlight{border-radius:8px;left:0;right:0;top:50%;bottom:0;margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;position:absolute;width:calc(100% - 16px);height:34px;transform:translateY(-50%);z-index:-1}@supports (margin-inline-start: 0) or (-webkit-margin-start: 0){:host .picker-highlight{margin-left:unset;margin-right:unset;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto}}:host input{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){text-align:start}:host ::slotted(ion-picker-column-internal:last-of-type){text-align:end}:host ::slotted(ion-picker-column-internal:only-child){text-align:center}:host .picker-before{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%)}:host .picker-after{background:linear-gradient(to top, var(--background, var(--ion-background-color, #fff)) 20%, rgba(var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255)), 0.8) 100%)}:host .picker-highlight{background:var(--ion-color-step-150, #eeeeef)}";
327
+
328
+ const pickerInternalMdCss = ":host{display:flex;position:relative;align-items:center;justify-content:center;width:100%;height:200px;direction:ltr;z-index:0}:host .picker-before,:host .picker-after{position:absolute;width:100%;transform:translateZ(0);z-index:1;pointer-events:none}:host .picker-before{left:0;top:0;height:83px}:host-context([dir=rtl]){left:unset;right:unset;right:0}:host .picker-after{left:0;top:116px;height:84px}:host-context([dir=rtl]){left:unset;right:unset;right:0}:host .picker-highlight{border-radius:8px;left:0;right:0;top:50%;bottom:0;margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;position:absolute;width:calc(100% - 16px);height:34px;transform:translateY(-50%);z-index:-1}@supports (margin-inline-start: 0) or (-webkit-margin-start: 0){:host .picker-highlight{margin-left:unset;margin-right:unset;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto}}:host input{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){text-align:start}:host ::slotted(ion-picker-column-internal:last-of-type){text-align:end}:host ::slotted(ion-picker-column-internal:only-child){text-align:center}:host .picker-before{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) 90%)}:host .picker-after{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) 90%)}";
329
+
330
+ const PickerInternal = class {
331
+ constructor(hostRef) {
332
+ registerInstance(this, hostRef);
333
+ this.ionInputModeChange = createEvent(this, "ionInputModeChange", 7);
334
+ this.useInputMode = false;
335
+ this.isInHighlightBounds = (ev) => {
336
+ const { highlightEl } = this;
337
+ if (!highlightEl) {
338
+ return false;
339
+ }
340
+ const bbox = highlightEl.getBoundingClientRect();
341
+ /**
342
+ * Check to see if the user clicked
343
+ * outside the bounds of the highlight.
344
+ */
345
+ const outsideX = ev.clientX < bbox.left || ev.clientX > bbox.right;
346
+ const outsideY = ev.clientY < bbox.top || ev.clientY > bbox.bottom;
347
+ if (outsideX || outsideY) {
348
+ return false;
349
+ }
350
+ return true;
351
+ };
352
+ /**
353
+ * If we are no longer focused
354
+ * on a picker column, then we should
355
+ * exit input mode. An exception is made
356
+ * for the input in the picker since having
357
+ * that focused means we are still in input mode.
358
+ */
359
+ this.onFocusOut = (ev) => {
360
+ const { relatedTarget } = ev;
361
+ if (!relatedTarget || (relatedTarget.tagName !== 'ION-PICKER-COLUMN-INTERNAL' && relatedTarget !== this.inputEl)) {
362
+ this.exitInputMode();
363
+ }
364
+ };
365
+ /**
366
+ * When picker columns receive focus
367
+ * the parent picker needs to determine
368
+ * whether to enter/exit input mode.
369
+ */
370
+ this.onFocusIn = (ev) => {
371
+ const { target } = ev;
372
+ /**
373
+ * Due to browser differences in how/when focus
374
+ * is dispatched on certain elements, we need to
375
+ * make sure that this function only ever runs when
376
+ * focusing a picker column.
377
+ */
378
+ if (target.tagName !== 'ION-PICKER-COLUMN-INTERNAL') {
379
+ return;
380
+ }
381
+ /**
382
+ * If we have actionOnClick
383
+ * then this means the user focused
384
+ * a picker column via mouse or
385
+ * touch (i.e. a PointerEvent). As a result,
386
+ * we should not enter/exit input mode
387
+ * until the click event has fired, which happens
388
+ * after the `focusin` event.
389
+ *
390
+ * Otherwise, the user likely focused
391
+ * the column using their keyboard and
392
+ * we should enter/exit input mode automatically.
393
+ */
394
+ if (!this.actionOnClick) {
395
+ const columnEl = target;
396
+ const allowInput = columnEl.numericInput;
397
+ if (allowInput) {
398
+ this.enterInputMode(columnEl, false);
399
+ }
400
+ else {
401
+ this.exitInputMode();
402
+ }
403
+ }
404
+ };
405
+ /**
406
+ * On click we need to run an actionOnClick
407
+ * function that has been set in onPointerDown
408
+ * so that we enter/exit input mode correctly.
409
+ */
410
+ this.onClick = () => {
411
+ const { actionOnClick } = this;
412
+ if (actionOnClick) {
413
+ actionOnClick();
414
+ this.actionOnClick = undefined;
415
+ }
416
+ };
417
+ /**
418
+ * Clicking a column also focuses the column on
419
+ * certain browsers, so we use onPointerDown
420
+ * to tell the onFocusIn function that users
421
+ * are trying to click the column rather than
422
+ * focus the column using the keyboard. When the
423
+ * user completes the click, the onClick function
424
+ * runs and runs the actionOnClick callback.
425
+ */
426
+ this.onPointerDown = (ev) => {
427
+ const { useInputMode, inputModeColumn, el } = this;
428
+ if (this.isInHighlightBounds(ev)) {
429
+ /**
430
+ * If we were already in
431
+ * input mode, then we should determine
432
+ * if we tapped a particular column and
433
+ * should switch to input mode for
434
+ * that specific column.
435
+ */
436
+ if (useInputMode) {
437
+ /**
438
+ * If we tapped a picker column
439
+ * then we should either switch to input
440
+ * mode for that column or all columns.
441
+ * Otherwise we should exit input mode
442
+ * since we just tapped the highlight and
443
+ * not a column.
444
+ */
445
+ if (ev.target.tagName === 'ION-PICKER-COLUMN-INTERNAL') {
446
+ /**
447
+ * If user taps 2 different columns
448
+ * then we should just switch to input mode
449
+ * for the new column rather than switching to
450
+ * input mode for all columns.
451
+ */
452
+ if (inputModeColumn && inputModeColumn === ev.target) {
453
+ this.actionOnClick = () => {
454
+ this.enterInputMode();
455
+ };
456
+ }
457
+ else {
458
+ this.actionOnClick = () => {
459
+ this.enterInputMode(ev.target);
460
+ };
461
+ }
462
+ }
463
+ else {
464
+ this.actionOnClick = () => {
465
+ this.exitInputMode();
466
+ };
467
+ }
468
+ /**
469
+ * If we were not already in
470
+ * input mode, then we should
471
+ * enter input mode for all columns.
472
+ */
473
+ }
474
+ else {
475
+ /**
476
+ * If there is only 1 numeric input column
477
+ * then we should skip multi column input.
478
+ */
479
+ const columns = el.querySelectorAll('ion-picker-column-internal.picker-column-numeric-input');
480
+ const columnEl = columns.length === 1 ? ev.target : undefined;
481
+ this.actionOnClick = () => {
482
+ this.enterInputMode(columnEl);
483
+ };
484
+ }
485
+ return;
486
+ }
487
+ this.actionOnClick = () => {
488
+ this.exitInputMode();
489
+ };
490
+ };
491
+ /**
492
+ * Enters input mode to allow
493
+ * for text entry of numeric values.
494
+ * If on mobile, we focus a hidden input
495
+ * field so that the on screen keyboard
496
+ * is brought up. When tabbing using a
497
+ * keyboard, picker columns receive an outline
498
+ * to indicate they are focused. As a result,
499
+ * we should not focus the hidden input as it
500
+ * would cause the outline to go away, preventing
501
+ * users from having any visual indication of which
502
+ * column is focused.
503
+ */
504
+ this.enterInputMode = (columnEl, focusInput = true) => {
505
+ const { inputEl, el } = this;
506
+ if (!inputEl) {
507
+ return;
508
+ }
509
+ /**
510
+ * Only active input mode if there is at
511
+ * least one column that accepts numeric input.
512
+ */
513
+ const hasInputColumn = el.querySelector('ion-picker-column-internal.picker-column-numeric-input');
514
+ if (!hasInputColumn) {
515
+ return;
516
+ }
517
+ /**
518
+ * If columnEl is undefined then
519
+ * it is assumed that all numeric pickers
520
+ * are eligible for text entry.
521
+ * (i.e. hour and minute columns)
522
+ */
523
+ this.useInputMode = true;
524
+ this.inputModeColumn = columnEl;
525
+ /**
526
+ * Users with a keyboard and mouse can
527
+ * activate input mode where the input is
528
+ * focused as well as when it is not focused,
529
+ * so we need to make sure we clean up any
530
+ * old listeners.
531
+ */
532
+ if (focusInput) {
533
+ if (this.destroyKeypressListener) {
534
+ this.destroyKeypressListener();
535
+ this.destroyKeypressListener = undefined;
536
+ }
537
+ inputEl.focus();
538
+ }
539
+ else {
540
+ el.addEventListener('keypress', this.onKeyPress);
541
+ this.destroyKeypressListener = () => {
542
+ el.removeEventListener('keypress', this.onKeyPress);
543
+ };
544
+ }
545
+ this.emitInputModeChange();
546
+ };
547
+ this.exitInputMode = () => {
548
+ const { inputEl, useInputMode } = this;
549
+ if (!useInputMode || !inputEl) {
550
+ return;
551
+ }
552
+ this.useInputMode = false;
553
+ this.inputModeColumn = undefined;
554
+ inputEl.blur();
555
+ inputEl.value = '';
556
+ if (this.destroyKeypressListener) {
557
+ this.destroyKeypressListener();
558
+ this.destroyKeypressListener = undefined;
559
+ }
560
+ this.emitInputModeChange();
561
+ };
562
+ this.onKeyPress = (ev) => {
563
+ const { inputEl } = this;
564
+ if (!inputEl) {
565
+ return;
566
+ }
567
+ const parsedValue = parseInt(ev.key, 10);
568
+ /**
569
+ * Only numbers should be allowed
570
+ */
571
+ if (!Number.isNaN(parsedValue)) {
572
+ inputEl.value += ev.key;
573
+ this.onInputChange();
574
+ }
575
+ };
576
+ this.selectSingleColumn = () => {
577
+ const { inputEl, inputModeColumn, singleColumnSearchTimeout } = this;
578
+ if (!inputEl || !inputModeColumn) {
579
+ return;
580
+ }
581
+ const values = inputModeColumn.items.filter((item) => item.disabled !== true);
582
+ /**
583
+ * If users pause for a bit, the search
584
+ * value should be reset similar to how a
585
+ * <select> behaves. So typing "34", waiting,
586
+ * then typing "5" should select "05".
587
+ */
588
+ if (singleColumnSearchTimeout) {
589
+ clearTimeout(singleColumnSearchTimeout);
590
+ }
591
+ this.singleColumnSearchTimeout = setTimeout(() => {
592
+ inputEl.value = '';
593
+ this.singleColumnSearchTimeout = undefined;
594
+ }, 1000);
595
+ /**
596
+ * For values that are longer than 2 digits long
597
+ * we should shift the value over 1 character
598
+ * to the left. So typing "456" would result in "56".
599
+ * TODO: If we want to support more than just
600
+ * time entry, we should update this value to be
601
+ * the max length of all of the picker items.
602
+ */
603
+ if (inputEl.value.length >= 3) {
604
+ const startIndex = inputEl.value.length - 2;
605
+ const newString = inputEl.value.substring(startIndex);
606
+ inputEl.value = newString;
607
+ this.selectSingleColumn();
608
+ return;
609
+ }
610
+ /**
611
+ * Checking the value of the input gets priority
612
+ * first. For example, if the value of the input
613
+ * is "1" and we entered "2", then the complete value
614
+ * is "12" and we should select hour 12.
615
+ *
616
+ * Regex removes any leading zeros from values like "02".
617
+ */
618
+ const findItemFromCompleteValue = values.find(({ text }) => text.replace(/^0+/, '') === inputEl.value);
619
+ if (findItemFromCompleteValue) {
620
+ inputModeColumn.setValue(findItemFromCompleteValue.value);
621
+ return;
622
+ }
623
+ /**
624
+ * If we typed "56" to get minute 56, then typed "7",
625
+ * we should select "07" as "567" is not a valid minute.
626
+ */
627
+ if (inputEl.value.length === 2) {
628
+ const changedCharacter = inputEl.value.substring(inputEl.value.length - 1);
629
+ inputEl.value = changedCharacter;
630
+ this.selectSingleColumn();
631
+ }
632
+ };
633
+ /**
634
+ * Searches a list of column items for a particular
635
+ * value. This is currently used for numeric values.
636
+ * The zeroBehavior can be set to account for leading
637
+ * or trailing zeros when looking at the item text.
638
+ */
639
+ this.searchColumn = (colEl, value, zeroBehavior = 'start') => {
640
+ const behavior = zeroBehavior === 'start' ? /^0+/ : /0$/;
641
+ const item = colEl.items.find(({ text, disabled }) => disabled !== true && text.replace(behavior, '') === value);
642
+ if (item) {
643
+ colEl.setValue(item.value);
644
+ }
645
+ };
646
+ this.selectMultiColumn = () => {
647
+ const { inputEl, el } = this;
648
+ if (!inputEl) {
649
+ return;
650
+ }
651
+ const numericPickers = Array.from(el.querySelectorAll('ion-picker-column-internal')).filter((col) => col.numericInput);
652
+ const firstColumn = numericPickers[0];
653
+ const lastColumn = numericPickers[1];
654
+ let value = inputEl.value;
655
+ let minuteValue;
656
+ switch (value.length) {
657
+ case 1:
658
+ this.searchColumn(firstColumn, value);
659
+ break;
660
+ case 2:
661
+ /**
662
+ * If the first character is `0` or `1` it is
663
+ * possible that users are trying to type `09`
664
+ * or `11` into the hour field, so we should look
665
+ * at that first.
666
+ */
667
+ const firstCharacter = inputEl.value.substring(0, 1);
668
+ value = firstCharacter === '0' || firstCharacter === '1' ? inputEl.value : firstCharacter;
669
+ this.searchColumn(firstColumn, value);
670
+ /**
671
+ * If only checked the first value,
672
+ * we can check the second value
673
+ * for a match in the minutes column
674
+ */
675
+ if (value.length === 1) {
676
+ minuteValue = inputEl.value.substring(inputEl.value.length - 1);
677
+ this.searchColumn(lastColumn, minuteValue, 'end');
678
+ }
679
+ break;
680
+ case 3:
681
+ /**
682
+ * If the first character is `0` or `1` it is
683
+ * possible that users are trying to type `09`
684
+ * or `11` into the hour field, so we should look
685
+ * at that first.
686
+ */
687
+ const firstCharacterAgain = inputEl.value.substring(0, 1);
688
+ value =
689
+ firstCharacterAgain === '0' || firstCharacterAgain === '1'
690
+ ? inputEl.value.substring(0, 2)
691
+ : firstCharacterAgain;
692
+ this.searchColumn(firstColumn, value);
693
+ /**
694
+ * If only checked the first value,
695
+ * we can check the second value
696
+ * for a match in the minutes column
697
+ */
698
+ minuteValue = value.length === 1 ? inputEl.value.substring(1) : inputEl.value.substring(2);
699
+ this.searchColumn(lastColumn, minuteValue, 'end');
700
+ break;
701
+ case 4:
702
+ /**
703
+ * If the first character is `0` or `1` it is
704
+ * possible that users are trying to type `09`
705
+ * or `11` into the hour field, so we should look
706
+ * at that first.
707
+ */
708
+ const firstCharacterAgainAgain = inputEl.value.substring(0, 1);
709
+ value =
710
+ firstCharacterAgainAgain === '0' || firstCharacterAgainAgain === '1'
711
+ ? inputEl.value.substring(0, 2)
712
+ : firstCharacterAgainAgain;
713
+ this.searchColumn(firstColumn, value);
714
+ /**
715
+ * If only checked the first value,
716
+ * we can check the second value
717
+ * for a match in the minutes column
718
+ */
719
+ const minuteValueAgain = value.length === 1
720
+ ? inputEl.value.substring(1, inputEl.value.length)
721
+ : inputEl.value.substring(2, inputEl.value.length);
722
+ this.searchColumn(lastColumn, minuteValueAgain, 'end');
723
+ break;
724
+ default:
725
+ const startIndex = inputEl.value.length - 4;
726
+ const newString = inputEl.value.substring(startIndex);
727
+ inputEl.value = newString;
728
+ this.selectMultiColumn();
729
+ break;
730
+ }
731
+ };
732
+ /**
733
+ * Searches the value of the active column
734
+ * to determine which value users are trying
735
+ * to select
736
+ */
737
+ this.onInputChange = () => {
738
+ const { useInputMode, inputEl, inputModeColumn } = this;
739
+ if (!useInputMode || !inputEl) {
740
+ return;
741
+ }
742
+ if (inputModeColumn) {
743
+ this.selectSingleColumn();
744
+ }
745
+ else {
746
+ this.selectMultiColumn();
747
+ }
748
+ };
749
+ /**
750
+ * Emit ionInputModeChange. Picker columns
751
+ * listen for this event to determine whether
752
+ * or not their column is "active" for text input.
753
+ */
754
+ this.emitInputModeChange = () => {
755
+ const { useInputMode, inputModeColumn } = this;
756
+ this.ionInputModeChange.emit({
757
+ useInputMode,
758
+ inputModeColumn,
759
+ });
760
+ };
761
+ }
762
+ /**
763
+ * When the picker is interacted with
764
+ * we need to prevent touchstart so other
765
+ * gestures do not fire. For example,
766
+ * scrolling on the wheel picker
767
+ * in ion-datetime should not cause
768
+ * a card modal to swipe to close.
769
+ */
770
+ preventTouchStartPropagation(ev) {
771
+ ev.stopPropagation();
772
+ }
773
+ componentWillLoad() {
774
+ getElementRoot(this.el).addEventListener('focusin', this.onFocusIn);
775
+ getElementRoot(this.el).addEventListener('focusout', this.onFocusOut);
776
+ }
777
+ render() {
778
+ return (h(Host, { onPointerDown: (ev) => this.onPointerDown(ev), onClick: () => this.onClick() }, h("input", { "aria-hidden": "true", tabindex: -1, inputmode: "numeric", type: "number", ref: (el) => (this.inputEl = el), onInput: () => this.onInputChange(), onBlur: () => this.exitInputMode() }), h("div", { class: "picker-before" }), h("div", { class: "picker-after" }), h("div", { class: "picker-highlight", ref: (el) => (this.highlightEl = el) }), h("slot", null)));
779
+ }
780
+ get el() { return getElement(this); }
781
+ };
782
+ PickerInternal.style = {
783
+ ios: pickerInternalIosCss,
784
+ md: pickerInternalMdCss
785
+ };
786
+
787
+ export { Buttons as ion_buttons, PickerColumnInternal as ion_picker_column_internal, PickerInternal as ion_picker_internal };