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