@ionic/core 8.0.1-dev.11713911458.1ad5f4cf → 8.0.1-dev.11714496052.149681e5

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 (448) hide show
  1. package/components/index2.js +119 -1
  2. package/components/input-shims.js +5 -5
  3. package/components/ion-content.js +6 -4
  4. package/components/ion-datetime-button.js +2 -2
  5. package/components/ion-datetime.js +15 -13
  6. package/components/ion-fab-button.js +2 -2
  7. package/components/ion-fab-list.js +2 -2
  8. package/components/ion-fab.js +2 -2
  9. package/components/ion-footer.js +2 -2
  10. package/components/ion-grid.js +2 -2
  11. package/components/ion-header.js +2 -2
  12. package/components/ion-img.js +1 -1
  13. package/components/ion-infinite-scroll-content.js +2 -2
  14. package/components/ion-infinite-scroll.js +1 -1
  15. package/components/ion-input-password-toggle.js +3 -3
  16. package/components/ion-input.js +8 -12
  17. package/components/ion-item-divider.js +2 -2
  18. package/components/ion-item-group.js +1 -1
  19. package/components/ion-item-option.js +2 -2
  20. package/components/ion-item-options.js +1 -1
  21. package/components/ion-item-sliding.js +1 -1
  22. package/components/ion-loading.js +2 -2
  23. package/components/ion-menu-button.js +2 -2
  24. package/components/ion-menu-toggle.js +2 -2
  25. package/components/ion-menu.js +2 -2
  26. package/components/ion-modal.js +10 -8
  27. package/components/ion-nav-link.js +1 -1
  28. package/components/ion-nav.js +1 -1
  29. package/components/ion-note.js +2 -2
  30. package/components/ion-picker-legacy.js +2 -2
  31. package/components/ion-progress-bar.js +1 -1
  32. package/components/ion-range.js +3 -3
  33. package/components/ion-refresher-content.js +1 -1
  34. package/components/ion-refresher.js +1 -1
  35. package/components/ion-reorder-group.js +1 -1
  36. package/components/ion-reorder.js +1 -1
  37. package/components/ion-router-link.js +2 -2
  38. package/components/ion-router-outlet.js +1 -1
  39. package/components/ion-row.js +1 -1
  40. package/components/ion-searchbar.js +4 -4
  41. package/components/ion-segment-button.js +3 -3
  42. package/components/ion-segment.js +2 -2
  43. package/components/ion-select-option.js +1 -1
  44. package/components/ion-select.js +2 -2
  45. package/components/ion-skeleton-text.js +2 -2
  46. package/components/ion-split-pane.js +2 -2
  47. package/components/ion-tab-bar.js +2 -2
  48. package/components/ion-tab-button.js +2 -2
  49. package/components/ion-tab.js +2 -2
  50. package/components/ion-tabs.js +1 -1
  51. package/components/ion-text.js +2 -2
  52. package/components/ion-textarea.js +2 -2
  53. package/components/ion-thumbnail.js +1 -1
  54. package/components/ion-title.js +2 -2
  55. package/components/ion-toast.js +2 -2
  56. package/components/ion-toggle.js +3 -3
  57. package/components/ion-toolbar.js +2 -2
  58. package/components/label.js +2 -2
  59. package/components/list-header.js +2 -2
  60. package/components/list.js +1 -1
  61. package/components/overlays.js +3 -2
  62. package/components/picker-column-option.js +2 -2
  63. package/components/picker-column.js +156 -4
  64. package/components/picker-column2.js +2 -2
  65. package/components/picker.js +2 -2
  66. package/components/popover.js +6 -4
  67. package/components/radio-group.js +1 -1
  68. package/components/radio.js +3 -3
  69. package/components/ripple-effect.js +1 -1
  70. package/components/select-popover.js +1 -1
  71. package/components/spinner.js +1 -1
  72. package/css/core.css +1 -1
  73. package/css/core.css.map +1 -1
  74. package/css/ionic.bundle.css +1 -1
  75. package/css/ionic.bundle.css.map +1 -1
  76. package/css/palettes/dark.always.css +1 -1
  77. package/css/palettes/dark.always.css.map +1 -1
  78. package/css/palettes/dark.class.css +1 -1
  79. package/css/palettes/dark.class.css.map +1 -1
  80. package/css/palettes/dark.system.css +1 -1
  81. package/css/palettes/dark.system.css.map +1 -1
  82. package/dist/cjs/{index-6d6ac424.js → index-be7cf657.js} +124 -6
  83. package/dist/cjs/index.cjs.js +5 -5
  84. package/dist/cjs/{input-shims-9e59ef62.js → input-shims-20d639e6.js} +5 -5
  85. package/dist/cjs/ion-action-sheet.cjs.entry.js +1 -1
  86. package/dist/cjs/ion-alert.cjs.entry.js +1 -1
  87. package/dist/cjs/ion-app_8.cjs.entry.js +16 -15
  88. package/dist/cjs/ion-avatar_3.cjs.entry.js +1 -1
  89. package/dist/cjs/ion-col_3.cjs.entry.js +3 -3
  90. package/dist/cjs/ion-datetime-button.cjs.entry.js +2 -2
  91. package/dist/cjs/ion-datetime_3.cjs.entry.js +20 -18
  92. package/dist/cjs/ion-fab_3.cjs.entry.js +6 -6
  93. package/dist/cjs/ion-img.cjs.entry.js +1 -1
  94. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +3 -3
  95. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +3 -3
  96. package/dist/cjs/ion-input.cjs.entry.js +7 -12
  97. package/dist/cjs/ion-item-option_3.cjs.entry.js +4 -4
  98. package/dist/cjs/ion-item_8.cjs.entry.js +12 -12
  99. package/dist/cjs/ion-loading.cjs.entry.js +3 -3
  100. package/dist/cjs/ion-menu_3.cjs.entry.js +7 -7
  101. package/dist/cjs/ion-modal.cjs.entry.js +10 -9
  102. package/dist/cjs/ion-nav_2.cjs.entry.js +4 -3
  103. package/dist/cjs/ion-picker-column-option.cjs.entry.js +2 -2
  104. package/dist/cjs/ion-picker-column.cjs.entry.js +154 -4
  105. package/dist/cjs/ion-picker.cjs.entry.js +2 -2
  106. package/dist/cjs/ion-popover.cjs.entry.js +6 -5
  107. package/dist/cjs/ion-progress-bar.cjs.entry.js +1 -1
  108. package/dist/cjs/ion-radio_2.cjs.entry.js +4 -4
  109. package/dist/cjs/ion-range.cjs.entry.js +3 -3
  110. package/dist/cjs/ion-refresher_2.cjs.entry.js +2 -2
  111. package/dist/cjs/ion-reorder_2.cjs.entry.js +2 -2
  112. package/dist/cjs/ion-ripple-effect.cjs.entry.js +1 -1
  113. package/dist/cjs/ion-route_4.cjs.entry.js +2 -2
  114. package/dist/cjs/ion-searchbar.cjs.entry.js +4 -4
  115. package/dist/cjs/ion-segment_2.cjs.entry.js +5 -5
  116. package/dist/cjs/ion-select_3.cjs.entry.js +5 -5
  117. package/dist/cjs/ion-spinner.cjs.entry.js +1 -1
  118. package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
  119. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +4 -4
  120. package/dist/cjs/ion-tab_2.cjs.entry.js +3 -3
  121. package/dist/cjs/ion-text.cjs.entry.js +2 -2
  122. package/dist/cjs/ion-textarea.cjs.entry.js +2 -2
  123. package/dist/cjs/ion-toast.cjs.entry.js +3 -3
  124. package/dist/cjs/ion-toggle.cjs.entry.js +3 -3
  125. package/dist/cjs/ionic.cjs.js +1 -1
  126. package/dist/cjs/{ios.transition-d4f0ca4e.js → ios.transition-b0e0575b.js} +3 -1
  127. package/dist/cjs/loader.cjs.js +1 -1
  128. package/dist/cjs/{md.transition-857328f3.js → md.transition-b22b61b7.js} +3 -1
  129. package/dist/cjs/{overlays-10c452b2.js → overlays-574e681c.js} +3 -1
  130. package/dist/collection/components/content/content.js +23 -4
  131. package/dist/collection/components/content/test/content.spec.js +27 -0
  132. package/dist/collection/components/datetime/datetime.js +15 -13
  133. package/dist/collection/components/datetime/test/overlay-roles/datetime.e2e.js +34 -0
  134. package/dist/collection/components/datetime-button/datetime-button.js +2 -2
  135. package/dist/collection/components/fab/fab.js +2 -2
  136. package/dist/collection/components/fab-button/fab-button.js +2 -2
  137. package/dist/collection/components/fab-list/fab-list.js +2 -2
  138. package/dist/collection/components/footer/footer.js +2 -2
  139. package/dist/collection/components/grid/grid.js +2 -2
  140. package/dist/collection/components/header/header.js +2 -2
  141. package/dist/collection/components/img/img.js +1 -1
  142. package/dist/collection/components/infinite-scroll/infinite-scroll.js +1 -1
  143. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +2 -2
  144. package/dist/collection/components/input/input.js +24 -12
  145. package/dist/collection/components/input/test/input.spec.js +13 -0
  146. package/dist/collection/components/input-password-toggle/input-password-toggle.js +3 -3
  147. package/dist/collection/components/item-divider/item-divider.js +2 -2
  148. package/dist/collection/components/item-group/item-group.js +1 -1
  149. package/dist/collection/components/item-option/item-option.js +2 -2
  150. package/dist/collection/components/item-options/item-options.js +1 -1
  151. package/dist/collection/components/item-sliding/item-sliding.js +1 -1
  152. package/dist/collection/components/label/label.js +2 -2
  153. package/dist/collection/components/list/list.js +1 -1
  154. package/dist/collection/components/list-header/list-header.js +2 -2
  155. package/dist/collection/components/loading/loading.js +2 -2
  156. package/dist/collection/components/menu/menu.js +2 -2
  157. package/dist/collection/components/menu-button/menu-button.js +2 -2
  158. package/dist/collection/components/menu-toggle/menu-toggle.js +2 -2
  159. package/dist/collection/components/modal/gestures/sheet.js +3 -2
  160. package/dist/collection/components/modal/modal.js +25 -6
  161. package/dist/collection/components/modal/test/basic/modal.spec.js +19 -0
  162. package/dist/collection/components/nav/nav.js +1 -1
  163. package/dist/collection/components/nav-link/nav-link.js +1 -1
  164. package/dist/collection/components/note/note.js +2 -2
  165. package/dist/collection/components/picker/picker.js +2 -2
  166. package/dist/collection/components/picker-column/picker-column.css +19 -0
  167. package/dist/collection/components/picker-column/picker-column.js +158 -3
  168. package/dist/collection/components/picker-column/test/picker-column.spec.js +83 -0
  169. package/dist/collection/components/picker-column-option/picker-column-option.js +2 -2
  170. package/dist/collection/components/picker-legacy/picker.js +2 -2
  171. package/dist/collection/components/picker-legacy-column/picker-column.js +2 -2
  172. package/dist/collection/components/popover/popover.js +23 -4
  173. package/dist/collection/components/popover/test/basic/popover.spec.js +19 -0
  174. package/dist/collection/components/progress-bar/progress-bar.js +1 -1
  175. package/dist/collection/components/radio/radio.js +3 -3
  176. package/dist/collection/components/radio-group/radio-group.js +1 -1
  177. package/dist/collection/components/range/range.js +3 -3
  178. package/dist/collection/components/refresher/refresher.js +1 -1
  179. package/dist/collection/components/refresher-content/refresher-content.js +1 -1
  180. package/dist/collection/components/reorder/reorder.js +1 -1
  181. package/dist/collection/components/reorder-group/reorder-group.js +1 -1
  182. package/dist/collection/components/ripple-effect/ripple-effect.js +1 -1
  183. package/dist/collection/components/router-link/router-link.js +2 -2
  184. package/dist/collection/components/router-outlet/router-outlet.js +1 -1
  185. package/dist/collection/components/row/row.js +1 -1
  186. package/dist/collection/components/searchbar/searchbar.js +4 -4
  187. package/dist/collection/components/segment/segment.js +2 -2
  188. package/dist/collection/components/segment-button/segment-button.js +3 -3
  189. package/dist/collection/components/select/select.js +2 -2
  190. package/dist/collection/components/select-option/select-option.js +1 -1
  191. package/dist/collection/components/select-popover/select-popover.js +1 -1
  192. package/dist/collection/components/skeleton-text/skeleton-text.js +2 -2
  193. package/dist/collection/components/spinner/spinner.js +1 -1
  194. package/dist/collection/components/split-pane/split-pane.js +2 -2
  195. package/dist/collection/components/tab/tab.js +2 -2
  196. package/dist/collection/components/tab-bar/tab-bar.js +2 -2
  197. package/dist/collection/components/tab-button/tab-button.js +2 -2
  198. package/dist/collection/components/tabs/tabs.js +1 -1
  199. package/dist/collection/components/text/text.js +2 -2
  200. package/dist/collection/components/textarea/textarea.js +2 -2
  201. package/dist/collection/components/thumbnail/thumbnail.js +1 -1
  202. package/dist/collection/components/title/title.js +2 -2
  203. package/dist/collection/components/toast/toast.js +2 -2
  204. package/dist/collection/components/toggle/toggle.js +3 -3
  205. package/dist/collection/components/toolbar/toolbar.js +2 -2
  206. package/dist/collection/utils/focus-controller/index.js +112 -0
  207. package/dist/collection/utils/focus-controller/test/generic/focus-controller.e2e.js +52 -0
  208. package/dist/collection/utils/focus-controller/test/ionic/focus-controller.e2e.js +52 -0
  209. package/dist/collection/utils/input-shims/hacks/scroll-assist.js +5 -5
  210. package/dist/collection/utils/overlays.js +2 -1
  211. package/dist/collection/utils/transition/index.js +11 -1
  212. package/dist/docs.json +96 -1
  213. package/dist/esm/{index-f0d7371a.js → index-c9a90692.js} +121 -3
  214. package/dist/esm/index.js +5 -5
  215. package/dist/esm/{input-shims-0314bbe5.js → input-shims-4530285e.js} +5 -5
  216. package/dist/esm/ion-action-sheet.entry.js +1 -1
  217. package/dist/esm/ion-alert.entry.js +1 -1
  218. package/dist/esm/ion-app_8.entry.js +16 -15
  219. package/dist/esm/ion-avatar_3.entry.js +1 -1
  220. package/dist/esm/ion-col_3.entry.js +3 -3
  221. package/dist/esm/ion-datetime-button.entry.js +2 -2
  222. package/dist/esm/ion-datetime_3.entry.js +20 -18
  223. package/dist/esm/ion-fab_3.entry.js +6 -6
  224. package/dist/esm/ion-img.entry.js +1 -1
  225. package/dist/esm/ion-infinite-scroll_2.entry.js +3 -3
  226. package/dist/esm/ion-input-password-toggle.entry.js +3 -3
  227. package/dist/esm/ion-input.entry.js +7 -12
  228. package/dist/esm/ion-item-option_3.entry.js +4 -4
  229. package/dist/esm/ion-item_8.entry.js +12 -12
  230. package/dist/esm/ion-loading.entry.js +3 -3
  231. package/dist/esm/ion-menu_3.entry.js +7 -7
  232. package/dist/esm/ion-modal.entry.js +10 -9
  233. package/dist/esm/ion-nav_2.entry.js +4 -3
  234. package/dist/esm/ion-picker-column-option.entry.js +2 -2
  235. package/dist/esm/ion-picker-column.entry.js +154 -4
  236. package/dist/esm/ion-picker.entry.js +2 -2
  237. package/dist/esm/ion-popover.entry.js +6 -5
  238. package/dist/esm/ion-progress-bar.entry.js +1 -1
  239. package/dist/esm/ion-radio_2.entry.js +4 -4
  240. package/dist/esm/ion-range.entry.js +3 -3
  241. package/dist/esm/ion-refresher_2.entry.js +2 -2
  242. package/dist/esm/ion-reorder_2.entry.js +2 -2
  243. package/dist/esm/ion-ripple-effect.entry.js +1 -1
  244. package/dist/esm/ion-route_4.entry.js +2 -2
  245. package/dist/esm/ion-searchbar.entry.js +4 -4
  246. package/dist/esm/ion-segment_2.entry.js +5 -5
  247. package/dist/esm/ion-select_3.entry.js +5 -5
  248. package/dist/esm/ion-spinner.entry.js +1 -1
  249. package/dist/esm/ion-split-pane.entry.js +2 -2
  250. package/dist/esm/ion-tab-bar_2.entry.js +4 -4
  251. package/dist/esm/ion-tab_2.entry.js +3 -3
  252. package/dist/esm/ion-text.entry.js +2 -2
  253. package/dist/esm/ion-textarea.entry.js +2 -2
  254. package/dist/esm/ion-toast.entry.js +3 -3
  255. package/dist/esm/ion-toggle.entry.js +3 -3
  256. package/dist/esm/ionic.js +1 -1
  257. package/dist/esm/{ios.transition-71bfa932.js → ios.transition-0321a527.js} +3 -1
  258. package/dist/esm/loader.js +1 -1
  259. package/dist/esm/{md.transition-86aef3c0.js → md.transition-57a06277.js} +3 -1
  260. package/dist/esm/{overlays-6fb4a2f2.js → overlays-1eac28e2.js} +3 -2
  261. package/dist/esm-es5/index-c9a90692.js +4 -0
  262. package/dist/esm-es5/index.js +1 -1
  263. package/dist/esm-es5/input-shims-4530285e.js +4 -0
  264. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  265. package/dist/esm-es5/ion-alert.entry.js +1 -1
  266. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  267. package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
  268. package/dist/esm-es5/ion-col_3.entry.js +1 -1
  269. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  270. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  271. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  272. package/dist/esm-es5/ion-img.entry.js +1 -1
  273. package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
  274. package/dist/esm-es5/ion-input-password-toggle.entry.js +1 -1
  275. package/dist/esm-es5/ion-input.entry.js +1 -1
  276. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  277. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  278. package/dist/esm-es5/ion-loading.entry.js +1 -1
  279. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  280. package/dist/esm-es5/ion-modal.entry.js +1 -1
  281. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  282. package/dist/esm-es5/ion-picker-column-option.entry.js +1 -1
  283. package/dist/esm-es5/ion-picker-column.entry.js +1 -1
  284. package/dist/esm-es5/ion-picker.entry.js +1 -1
  285. package/dist/esm-es5/ion-popover.entry.js +1 -1
  286. package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
  287. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  288. package/dist/esm-es5/ion-range.entry.js +1 -1
  289. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  290. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  291. package/dist/esm-es5/ion-ripple-effect.entry.js +1 -1
  292. package/dist/esm-es5/ion-route_4.entry.js +1 -1
  293. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  294. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  295. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  296. package/dist/esm-es5/ion-spinner.entry.js +1 -1
  297. package/dist/esm-es5/ion-split-pane.entry.js +1 -1
  298. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  299. package/dist/esm-es5/ion-tab_2.entry.js +1 -1
  300. package/dist/esm-es5/ion-text.entry.js +1 -1
  301. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  302. package/dist/esm-es5/ion-toast.entry.js +1 -1
  303. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  304. package/dist/esm-es5/ionic.js +1 -1
  305. package/dist/esm-es5/ios.transition-0321a527.js +4 -0
  306. package/dist/esm-es5/loader.js +1 -1
  307. package/dist/esm-es5/md.transition-57a06277.js +4 -0
  308. package/dist/esm-es5/{overlays-6fb4a2f2.js → overlays-1eac28e2.js} +1 -1
  309. package/dist/html.html-data.json +24 -0
  310. package/dist/ionic/index.esm.js +1 -1
  311. package/dist/ionic/ionic.esm.js +1 -1
  312. package/dist/ionic/{p-07584ab4.system.js → p-0cd59e4e.system.js} +1 -1
  313. package/dist/ionic/{p-50205ef9.system.entry.js → p-0d88f9c2.system.entry.js} +1 -1
  314. package/dist/ionic/{p-1fe1f512.entry.js → p-1a8d2fe3.entry.js} +1 -1
  315. package/dist/ionic/{p-3008ca4e.system.entry.js → p-1aff89d0.system.entry.js} +1 -1
  316. package/dist/ionic/p-1fbe9447.system.js +4 -0
  317. package/dist/ionic/{p-4a01cec0.entry.js → p-2185597f.entry.js} +1 -1
  318. package/dist/ionic/{p-7f33a6e2.system.entry.js → p-22d183b4.system.entry.js} +2 -2
  319. package/dist/ionic/{p-5f15ee76.entry.js → p-255b6f01.entry.js} +1 -1
  320. package/dist/ionic/p-282cc565.js +4 -0
  321. package/dist/ionic/{p-4f6ebc2b.entry.js → p-2870db48.entry.js} +1 -1
  322. package/dist/ionic/{p-cbd87df6.entry.js → p-2b45e94f.entry.js} +1 -1
  323. package/dist/ionic/{p-cf8101a6.system.entry.js → p-2c1cc9bf.system.entry.js} +1 -1
  324. package/dist/ionic/p-2e56ebdc.entry.js +4 -0
  325. package/dist/ionic/p-30a1fb3a.js +4 -0
  326. package/dist/ionic/{p-e62d4a6c.entry.js → p-30a40a57.entry.js} +1 -1
  327. package/dist/ionic/{p-98af538a.system.entry.js → p-320f9186.system.entry.js} +2 -2
  328. package/dist/ionic/p-3328cd28.entry.js +4 -0
  329. package/dist/ionic/{p-6ef17d86.system.entry.js → p-3339b5ca.system.entry.js} +1 -1
  330. package/dist/ionic/p-39a3eca2.entry.js +4 -0
  331. package/dist/ionic/{p-703f62c1.entry.js → p-3af6a819.entry.js} +1 -1
  332. package/dist/ionic/p-3ebbbd37.js +4 -0
  333. package/dist/ionic/{p-8a5152e5.entry.js → p-3f7e6661.entry.js} +1 -1
  334. package/dist/ionic/{p-814efd87.system.entry.js → p-4195e4d0.system.entry.js} +1 -1
  335. package/dist/ionic/{p-dbc3e90c.entry.js → p-454c2bfe.entry.js} +1 -1
  336. package/dist/ionic/{p-2690b1de.js → p-46111310.js} +1 -1
  337. package/dist/ionic/p-46f407f0.system.js +4 -0
  338. package/dist/ionic/{p-4809ddae.system.entry.js → p-47915d5c.system.entry.js} +1 -1
  339. package/dist/ionic/{p-5ad55625.entry.js → p-49a47e7c.entry.js} +1 -1
  340. package/dist/ionic/p-4b078620.entry.js +4 -0
  341. package/dist/ionic/{p-332aa81e.entry.js → p-4c24ae09.entry.js} +1 -1
  342. package/dist/ionic/{p-904df2ee.system.entry.js → p-4c3d0457.system.entry.js} +1 -1
  343. package/dist/ionic/{p-530207f9.entry.js → p-4f1d1637.entry.js} +1 -1
  344. package/dist/ionic/{p-341b3f37.entry.js → p-4fc2a1ce.entry.js} +1 -1
  345. package/dist/ionic/{p-53d69c70.system.entry.js → p-5015ef54.system.entry.js} +1 -1
  346. package/dist/ionic/{p-e8a713b5.entry.js → p-5087e4df.entry.js} +1 -1
  347. package/dist/ionic/{p-5895b91d.entry.js → p-5408ee96.entry.js} +1 -1
  348. package/dist/ionic/p-55b9eb6b.system.entry.js +4 -0
  349. package/dist/ionic/{p-987e38ef.system.entry.js → p-56c470c2.system.entry.js} +1 -1
  350. package/dist/ionic/{p-5c26fed5.system.entry.js → p-5983ad03.system.entry.js} +1 -1
  351. package/dist/ionic/p-5a82c7b9.system.entry.js +4 -0
  352. package/dist/ionic/p-5e074809.system.entry.js +4 -0
  353. package/dist/ionic/{p-e81c3ca2.system.entry.js → p-676e0f71.system.entry.js} +1 -1
  354. package/dist/ionic/{p-eac224fa.entry.js → p-70605125.entry.js} +1 -1
  355. package/dist/ionic/{p-9fd3ca09.system.entry.js → p-70e00e9f.system.entry.js} +1 -1
  356. package/dist/ionic/{p-1472c130.entry.js → p-71044f08.entry.js} +1 -1
  357. package/dist/ionic/p-72b181e2.system.entry.js +4 -0
  358. package/dist/ionic/{p-fa0bf39d.system.entry.js → p-75a6989a.system.entry.js} +1 -1
  359. package/dist/ionic/p-7a152fab.entry.js +4 -0
  360. package/dist/ionic/{p-68afa357.system.entry.js → p-7e5972a0.system.entry.js} +2 -2
  361. package/dist/ionic/p-80270af4.system.entry.js +4 -0
  362. package/dist/ionic/p-8134b3c4.entry.js +4 -0
  363. package/dist/ionic/{p-4f77a080.system.entry.js → p-89f2d585.system.entry.js} +1 -1
  364. package/dist/ionic/{p-6cf780b6.system.entry.js → p-8ffff03f.system.entry.js} +1 -1
  365. package/dist/ionic/{p-bc3d649d.entry.js → p-9277e3d2.entry.js} +1 -1
  366. package/dist/ionic/p-944dd52a.system.js +4 -0
  367. package/dist/ionic/{p-ca5bb110.system.entry.js → p-94d20e10.system.entry.js} +1 -1
  368. package/dist/ionic/{p-48f60474.entry.js → p-962f482c.entry.js} +1 -1
  369. package/dist/ionic/p-9832568f.entry.js +4 -0
  370. package/dist/ionic/{p-f956e38a.entry.js → p-9876ce3b.entry.js} +1 -1
  371. package/dist/ionic/{p-151e8afd.entry.js → p-9a06b83d.entry.js} +1 -1
  372. package/dist/ionic/{p-f8f8c5a8.system.entry.js → p-9dbd1f93.system.entry.js} +1 -1
  373. package/dist/ionic/{p-c54b167f.system.entry.js → p-9e829e8f.system.entry.js} +1 -1
  374. package/dist/ionic/p-a0351a92.system.js +4 -0
  375. package/dist/ionic/{p-c927dbe2.system.entry.js → p-a0dd50e4.system.entry.js} +1 -1
  376. package/dist/ionic/{p-2b86020c.system.entry.js → p-a4ce5696.system.entry.js} +1 -1
  377. package/dist/ionic/{p-1ba197b6.entry.js → p-a51785b7.entry.js} +1 -1
  378. package/dist/ionic/{p-e292247e.system.entry.js → p-a6f505f5.system.entry.js} +1 -1
  379. package/dist/ionic/p-aa2c2a8b.system.entry.js +4 -0
  380. package/dist/ionic/{p-d061515d.system.entry.js → p-ac058b0e.system.entry.js} +1 -1
  381. package/dist/ionic/p-ae9ebfd1.entry.js +4 -0
  382. package/dist/ionic/{p-91b568e2.system.entry.js → p-b0fc315c.system.entry.js} +1 -1
  383. package/dist/ionic/p-b79b8d53.js +4 -0
  384. package/dist/ionic/{p-e93cd31c.entry.js → p-b80dfa1b.entry.js} +1 -1
  385. package/dist/ionic/{p-df0d39c7.system.entry.js → p-b8d966bb.system.entry.js} +2 -2
  386. package/dist/ionic/{p-90f8498c.entry.js → p-ba8fd3f7.entry.js} +1 -1
  387. package/dist/ionic/{p-3d977e09.system.entry.js → p-bd62a431.system.entry.js} +2 -2
  388. package/dist/ionic/{p-70f6b982.entry.js → p-bebb01a5.entry.js} +1 -1
  389. package/dist/ionic/p-c27aef92.system.js +4 -0
  390. package/dist/ionic/p-c34a80bd.entry.js +4 -0
  391. package/dist/ionic/{p-ca6decbd.entry.js → p-cfd91e4b.entry.js} +1 -1
  392. package/dist/ionic/p-d38c209e.system.entry.js +4 -0
  393. package/dist/ionic/{p-aa79cc0e.system.entry.js → p-d3a32834.system.entry.js} +2 -2
  394. package/dist/ionic/{p-275dd0ba.system.entry.js → p-d5559e4d.system.entry.js} +1 -1
  395. package/dist/ionic/p-d76c8ebd.entry.js +4 -0
  396. package/dist/ionic/{p-55bc2a11.system.entry.js → p-d833beb7.system.entry.js} +1 -1
  397. package/dist/ionic/p-d8d6ebc0.system.js +1 -1
  398. package/dist/ionic/{p-7c93f00b.system.entry.js → p-da29453c.system.entry.js} +1 -1
  399. package/dist/ionic/{p-e099a6f3.entry.js → p-dffd0e36.entry.js} +1 -1
  400. package/dist/ionic/{p-1c42ad90.entry.js → p-eb1428cc.entry.js} +1 -1
  401. package/dist/ionic/{p-e1ad8e76.entry.js → p-f49da44a.entry.js} +1 -1
  402. package/dist/ionic/p-f5006fa9.system.entry.js +4 -0
  403. package/dist/ionic/p-fe9a80b7.entry.js +4 -0
  404. package/dist/types/components/content/content.d.ts +8 -0
  405. package/dist/types/components/input/input.d.ts +4 -0
  406. package/dist/types/components/modal/modal-interface.d.ts +1 -0
  407. package/dist/types/components/modal/modal.d.ts +18 -0
  408. package/dist/types/components/picker-column/picker-column.d.ts +35 -0
  409. package/dist/types/components/popover/popover-interface.d.ts +1 -0
  410. package/dist/types/components/popover/popover.d.ts +18 -0
  411. package/dist/types/components.d.ts +32 -0
  412. package/dist/types/utils/config.d.ts +9 -0
  413. package/dist/types/utils/focus-controller/index.d.ts +13 -0
  414. package/dist/types/utils/overlays.d.ts +1 -0
  415. package/hydrate/index.js +426 -154
  416. package/package.json +1 -1
  417. package/dist/esm-es5/index-f0d7371a.js +0 -4
  418. package/dist/esm-es5/input-shims-0314bbe5.js +0 -4
  419. package/dist/esm-es5/ios.transition-71bfa932.js +0 -4
  420. package/dist/esm-es5/md.transition-86aef3c0.js +0 -4
  421. package/dist/ionic/p-0e713efe.js +0 -4
  422. package/dist/ionic/p-2613c305.system.js +0 -4
  423. package/dist/ionic/p-34f26d8b.entry.js +0 -4
  424. package/dist/ionic/p-38010e7c.system.entry.js +0 -4
  425. package/dist/ionic/p-4d2b2d23.system.entry.js +0 -4
  426. package/dist/ionic/p-4de53118.js +0 -4
  427. package/dist/ionic/p-510cb8e6.system.js +0 -4
  428. package/dist/ionic/p-582db405.system.entry.js +0 -4
  429. package/dist/ionic/p-5f28cb75.js +0 -4
  430. package/dist/ionic/p-7372cf23.system.entry.js +0 -4
  431. package/dist/ionic/p-84ead641.entry.js +0 -4
  432. package/dist/ionic/p-91dabef7.system.js +0 -4
  433. package/dist/ionic/p-9fa5ff32.system.js +0 -4
  434. package/dist/ionic/p-a28ea4d8.system.entry.js +0 -4
  435. package/dist/ionic/p-a39a73e3.entry.js +0 -4
  436. package/dist/ionic/p-a90201f2.js +0 -4
  437. package/dist/ionic/p-ac045dad.entry.js +0 -4
  438. package/dist/ionic/p-ba35f07f.entry.js +0 -4
  439. package/dist/ionic/p-c2762c6a.system.entry.js +0 -4
  440. package/dist/ionic/p-cc258008.entry.js +0 -4
  441. package/dist/ionic/p-ce5bf737.system.entry.js +0 -4
  442. package/dist/ionic/p-cf45a5c7.system.entry.js +0 -4
  443. package/dist/ionic/p-d277ba16.entry.js +0 -4
  444. package/dist/ionic/p-dfb78785.system.js +0 -4
  445. package/dist/ionic/p-e5f99a0d.entry.js +0 -4
  446. package/dist/ionic/p-e781c893.entry.js +0 -4
  447. package/dist/ionic/p-ec178f19.entry.js +0 -4
  448. package/dist/ionic/p-f6fec6a0.entry.js +0 -4
@@ -3,7 +3,9 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- const index = require('./index-bbc6c29f.js');
6
+ const ionicGlobal = require('./ionic-global-62487d02.js');
7
+ const index$1 = require('./index-bbc6c29f.js');
8
+ const index = require('./index-5915f9b3.js');
7
9
  const helpers = require('./helpers-afaa9001.js');
8
10
 
9
11
  const LIFECYCLE_WILL_ENTER = 'ionViewWillEnter';
@@ -12,12 +14,121 @@ const LIFECYCLE_WILL_LEAVE = 'ionViewWillLeave';
12
14
  const LIFECYCLE_DID_LEAVE = 'ionViewDidLeave';
13
15
  const LIFECYCLE_WILL_UNLOAD = 'ionViewWillUnload';
14
16
 
15
- const iosTransitionAnimation = () => Promise.resolve().then(function () { return require('./ios.transition-d4f0ca4e.js'); });
16
- const mdTransitionAnimation = () => Promise.resolve().then(function () { return require('./md.transition-857328f3.js'); });
17
+ /**
18
+ * Moves focus to a specified element. Note that we do not remove the tabindex
19
+ * because that can result in an unintentional blur. Non-focusables can't be
20
+ * focused, so the body will get focused again.
21
+ */
22
+ const moveFocus = (el) => {
23
+ el.tabIndex = -1;
24
+ el.focus();
25
+ };
26
+ /**
27
+ * Elements that are hidden using `display: none` should not be focused even if
28
+ * they are present in the DOM.
29
+ */
30
+ const isVisible = (el) => {
31
+ return el.offsetParent !== null;
32
+ };
33
+ /**
34
+ * The focus controller allows us to manage focus within a view so assistive
35
+ * technologies can inform users of changes to the navigation state. Traditional
36
+ * native apps have a way of informing assistive technology about a navigation
37
+ * state change. Mobile browsers have this too, but only when doing a full page
38
+ * load. In a single page app we do not do that, so we need to build this
39
+ * integration ourselves.
40
+ */
41
+ const createFocusController = () => {
42
+ const saveViewFocus = (referenceEl) => {
43
+ const focusManagerEnabled = ionicGlobal.config.get('focusManagerPriority', false);
44
+ /**
45
+ * When going back to a previously visited page focus should typically be moved
46
+ * back to the element that was last focused when the user was on this view.
47
+ */
48
+ if (focusManagerEnabled) {
49
+ const activeEl = document.activeElement;
50
+ if (activeEl !== null && (referenceEl === null || referenceEl === void 0 ? void 0 : referenceEl.contains(activeEl))) {
51
+ activeEl.setAttribute(LAST_FOCUS, 'true');
52
+ }
53
+ }
54
+ };
55
+ const setViewFocus = (referenceEl) => {
56
+ const focusManagerPriorities = ionicGlobal.config.get('focusManagerPriority', false);
57
+ /**
58
+ * If the focused element is a descendant of the referenceEl then it's possible
59
+ * that the app developer manually moved focus, so we do not want to override that.
60
+ * This can happen with inputs the are focused when a view transitions in.
61
+ */
62
+ if (Array.isArray(focusManagerPriorities) && !referenceEl.contains(document.activeElement)) {
63
+ /**
64
+ * When going back to a previously visited view focus should always be moved back
65
+ * to the element that the user was last focused on when they were on this view.
66
+ */
67
+ const lastFocus = referenceEl.querySelector(`[${LAST_FOCUS}]`);
68
+ if (lastFocus && isVisible(lastFocus)) {
69
+ moveFocus(lastFocus);
70
+ return;
71
+ }
72
+ for (const priority of focusManagerPriorities) {
73
+ /**
74
+ * For each recognized case (excluding the default case) make sure to return
75
+ * so that the fallback focus behavior does not run.
76
+ *
77
+ * We intentionally query for specific roles/semantic elements so that the
78
+ * transition manager can work with both Ionic and non-Ionic UI components.
79
+ *
80
+ * If new selectors are added, be sure to remove the outline ring by adding
81
+ * new selectors to rule in core.scss.
82
+ */
83
+ switch (priority) {
84
+ case 'content':
85
+ const content = referenceEl.querySelector('main, [role="main"]');
86
+ if (content && isVisible(content)) {
87
+ moveFocus(content);
88
+ return;
89
+ }
90
+ break;
91
+ case 'heading':
92
+ const headingOne = referenceEl.querySelector('h1, [role="heading"][aria-level="1"]');
93
+ if (headingOne && isVisible(headingOne)) {
94
+ moveFocus(headingOne);
95
+ return;
96
+ }
97
+ break;
98
+ case 'banner':
99
+ const header = referenceEl.querySelector('header, [role="banner"]');
100
+ if (header && isVisible(header)) {
101
+ moveFocus(header);
102
+ return;
103
+ }
104
+ break;
105
+ default:
106
+ index.printIonWarning(`Unrecognized focus manager priority value ${priority}`);
107
+ break;
108
+ }
109
+ }
110
+ /**
111
+ * If there is nothing to focus then focus the page so focus at least moves to
112
+ * the correct view. The browser will then determine where within the page to
113
+ * move focus to.
114
+ */
115
+ moveFocus(referenceEl);
116
+ }
117
+ };
118
+ return {
119
+ saveViewFocus,
120
+ setViewFocus,
121
+ };
122
+ };
123
+ const LAST_FOCUS = 'ion-last-focus';
124
+
125
+ const iosTransitionAnimation = () => Promise.resolve().then(function () { return require('./ios.transition-b0e0575b.js'); });
126
+ const mdTransitionAnimation = () => Promise.resolve().then(function () { return require('./md.transition-b22b61b7.js'); });
127
+ const focusController = createFocusController();
17
128
  // TODO(FW-2832): types
18
129
  const transition = (opts) => {
19
130
  return new Promise((resolve, reject) => {
20
- index.writeTask(() => {
131
+ index$1.writeTask(() => {
21
132
  beforeTransition(opts);
22
133
  runTransition(opts).then((result) => {
23
134
  if (result.animation) {
@@ -35,6 +146,7 @@ const transition = (opts) => {
35
146
  const beforeTransition = (opts) => {
36
147
  const enteringEl = opts.enteringEl;
37
148
  const leavingEl = opts.leavingEl;
149
+ focusController.saveViewFocus(leavingEl);
38
150
  setZIndex(enteringEl, leavingEl, opts.direction);
39
151
  if (opts.showGoBack) {
40
152
  enteringEl.classList.add('can-go-back');
@@ -57,7 +169,7 @@ const beforeTransition = (opts) => {
57
169
  };
58
170
  const runTransition = async (opts) => {
59
171
  const animationBuilder = await getAnimationBuilder(opts);
60
- const ani = animationBuilder && index.Build.isBrowser ? animation(animationBuilder, opts) : noAnimation(opts); // fast path for no animation
172
+ const ani = animationBuilder && index$1.Build.isBrowser ? animation(animationBuilder, opts) : noAnimation(opts); // fast path for no animation
61
173
  return ani;
62
174
  };
63
175
  const afterTransition = (opts) => {
@@ -69,6 +181,7 @@ const afterTransition = (opts) => {
69
181
  leavingEl.classList.remove('ion-page-invisible');
70
182
  leavingEl.style.removeProperty('pointer-events');
71
183
  }
184
+ focusController.setViewFocus(enteringEl);
72
185
  };
73
186
  const getAnimationBuilder = async (opts) => {
74
187
  if (!opts.leavingEl || !opts.animated || opts.duration === 0) {
@@ -101,7 +214,12 @@ const animation = async (animationBuilder, opts) => {
101
214
  const noAnimation = async (opts) => {
102
215
  const enteringEl = opts.enteringEl;
103
216
  const leavingEl = opts.leavingEl;
104
- await waitForReady(opts, false);
217
+ const focusManagerEnabled = ionicGlobal.config.get('focusManagerPriority', false);
218
+ /**
219
+ * If the focus manager is enabled then we need to wait for Ionic components to be
220
+ * rendered otherwise the component to focus may not be focused because it is hidden.
221
+ */
222
+ await waitForReady(opts, focusManagerEnabled);
105
223
  fireWillEvents(enteringEl, leavingEl);
106
224
  fireDidEvents(enteringEl, leavingEl);
107
225
  return {
@@ -6,9 +6,9 @@
6
6
  Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
8
  const animation = require('./animation-b4fdf128.js');
9
- const index = require('./index-6d6ac424.js');
10
- const ios_transition = require('./ios.transition-d4f0ca4e.js');
11
- const md_transition = require('./md.transition-857328f3.js');
9
+ const index = require('./index-be7cf657.js');
10
+ const ios_transition = require('./ios.transition-b0e0575b.js');
11
+ const md_transition = require('./md.transition-b22b61b7.js');
12
12
  const cubicBezier = require('./cubic-bezier-f2dccc53.js');
13
13
  const index$1 = require('./index-ee07ed59.js');
14
14
  const ionicGlobal = require('./ionic-global-62487d02.js');
@@ -16,12 +16,12 @@ const helpers = require('./helpers-afaa9001.js');
16
16
  const config = require('./config-4f60b98a.js');
17
17
  const theme = require('./theme-d1c573d2.js');
18
18
  const index$2 = require('./index-defd575f.js');
19
- const overlays = require('./overlays-10c452b2.js');
19
+ const overlays = require('./overlays-574e681c.js');
20
20
  require('./index-c8d52405.js');
21
21
  require('./index-bbc6c29f.js');
22
+ require('./index-5915f9b3.js');
22
23
  require('./gesture-controller-9436f482.js');
23
24
  require('./hardware-back-button-44e7c052.js');
24
- require('./index-5915f9b3.js');
25
25
  require('./framework-delegate-55f5683a.js');
26
26
 
27
27
  const IonicSlides = (opts) => {
@@ -340,7 +340,7 @@ const enableScrollAssist = (componentEl, inputEl, contentEl, footerEl, keyboardH
340
340
  const focusOut = () => {
341
341
  hasKeyboardBeenPresentedForTextField = false;
342
342
  index.win === null || index.win === void 0 ? void 0 : index.win.removeEventListener('ionKeyboardDidShow', keyboardShow);
343
- componentEl.removeEventListener('focusout', focusOut);
343
+ componentEl.removeEventListener('focusout', focusOut, true);
344
344
  };
345
345
  /**
346
346
  * When the input is about to receive
@@ -360,13 +360,13 @@ const enableScrollAssist = (componentEl, inputEl, contentEl, footerEl, keyboardH
360
360
  }
361
361
  jsSetFocus(componentEl, inputEl, contentEl, footerEl, keyboardHeight, addScrollPadding, disableClonedInput, platformHeight);
362
362
  index.win === null || index.win === void 0 ? void 0 : index.win.addEventListener('ionKeyboardDidShow', keyboardShow);
363
- componentEl.addEventListener('focusout', focusOut);
363
+ componentEl.addEventListener('focusout', focusOut, true);
364
364
  };
365
- componentEl.addEventListener('focusin', focusIn);
365
+ componentEl.addEventListener('focusin', focusIn, true);
366
366
  return () => {
367
- componentEl.removeEventListener('focusin', focusIn);
367
+ componentEl.removeEventListener('focusin', focusIn, true);
368
368
  index.win === null || index.win === void 0 ? void 0 : index.win.removeEventListener('ionKeyboardDidShow', keyboardShow);
369
- componentEl.removeEventListener('focusout', focusOut);
369
+ componentEl.removeEventListener('focusout', focusOut, true);
370
370
  };
371
371
  };
372
372
  /**
@@ -9,7 +9,7 @@ const index = require('./index-bbc6c29f.js');
9
9
  const buttonActive = require('./button-active-564be49f.js');
10
10
  const helpers = require('./helpers-afaa9001.js');
11
11
  const lockController = require('./lock-controller-6585a42a.js');
12
- const overlays = require('./overlays-10c452b2.js');
12
+ const overlays = require('./overlays-574e681c.js');
13
13
  const theme = require('./theme-d1c573d2.js');
14
14
  const ionicGlobal = require('./ionic-global-62487d02.js');
15
15
  const animation = require('./animation-b4fdf128.js');
@@ -10,7 +10,7 @@ const config = require('./config-4f60b98a.js');
10
10
  const buttonActive = require('./button-active-564be49f.js');
11
11
  const helpers = require('./helpers-afaa9001.js');
12
12
  const lockController = require('./lock-controller-6585a42a.js');
13
- const overlays = require('./overlays-10c452b2.js');
13
+ const overlays = require('./overlays-574e681c.js');
14
14
  const theme = require('./theme-d1c573d2.js');
15
15
  const ionicGlobal = require('./ionic-global-62487d02.js');
16
16
  const animation = require('./animation-b4fdf128.js');
@@ -17,7 +17,7 @@ const keyboardController = require('./keyboard-controller-c05e747a.js');
17
17
  const cubicBezier = require('./cubic-bezier-f2dccc53.js');
18
18
  const frameworkDelegate = require('./framework-delegate-55f5683a.js');
19
19
  const lockController = require('./lock-controller-6585a42a.js');
20
- const index$3 = require('./index-6d6ac424.js');
20
+ const index$3 = require('./index-be7cf657.js');
21
21
  require('./index-c8d52405.js');
22
22
  require('./keyboard-0272231f.js');
23
23
  require('./capacitor-c04564bf.js');
@@ -45,7 +45,7 @@ const App = class {
45
45
  * platforms proceed into this block.
46
46
  */
47
47
  const platform = ionicGlobal.isPlatform(window, 'ios') ? 'ios' : 'android';
48
- Promise.resolve().then(function () { return require('./input-shims-9e59ef62.js'); }).then((module) => module.startInputShims(ionicGlobal.config, platform));
48
+ Promise.resolve().then(function () { return require('./input-shims-20d639e6.js'); }).then((module) => module.startInputShims(ionicGlobal.config, platform));
49
49
  }
50
50
  const hardwareBackButtonModule = await Promise.resolve().then(function () { return require('./hardware-back-button-44e7c052.js'); });
51
51
  const supportsHardwareBackButtonEvents = isHybrid || hardwareBackButton.shouldUseCloseWatcher();
@@ -188,6 +188,7 @@ const Content = class {
188
188
  };
189
189
  this.color = undefined;
190
190
  this.fullscreen = false;
191
+ this.fixedSlotPlacement = 'after';
191
192
  this.forceOverscroll = undefined;
192
193
  this.scrollX = false;
193
194
  this.scrollY = true;
@@ -469,13 +470,13 @@ const Content = class {
469
470
  }
470
471
  }
471
472
  render() {
472
- const { isMainContent, scrollX, scrollY, el } = this;
473
+ const { fixedSlotPlacement, isMainContent, scrollX, scrollY, el } = this;
473
474
  const rtl = dir.isRTL(el) ? 'rtl' : 'ltr';
474
475
  const mode = ionicGlobal.getIonMode(this);
475
476
  const forceOverscroll = this.shouldForceOverscroll();
476
477
  const transitionShadow = mode === 'ios';
477
478
  this.resize();
478
- return (index.h(index.Host, { key: '98e9658e69c0bbe0113e4c1b89dd7b240334c039', role: isMainContent ? 'main' : undefined, class: theme.createColorClasses(this.color, {
479
+ return (index.h(index.Host, { key: 'f599a7da14969df38c20a6f650179d2a319fb58b', role: isMainContent ? 'main' : undefined, class: theme.createColorClasses(this.color, {
479
480
  [mode]: true,
480
481
  'content-sizing': theme.hostContext('ion-popover', this.el),
481
482
  overscroll: forceOverscroll,
@@ -483,12 +484,12 @@ const Content = class {
483
484
  }), style: {
484
485
  '--offset-top': `${this.cTop}px`,
485
486
  '--offset-bottom': `${this.cBottom}px`,
486
- } }, index.h("div", { key: 'e89aa6ea09625846db52d63bdbf06c3c279a5ba4', ref: (el) => (this.backgroundContentEl = el), id: "background-content", part: "background" }), index.h("div", { key: '37925cf9d898ede58d5ac7b5a650c648033602a3', class: {
487
+ } }, index.h("div", { key: '7c545c3c95ea05abd036d0462936ac153d2a8fc6', ref: (el) => (this.backgroundContentEl = el), id: "background-content", part: "background" }), fixedSlotPlacement === 'before' ? index.h("slot", { name: "fixed" }) : null, index.h("div", { key: 'a67ab7438466c99f74b7ba59964802c3ba86ac5b', class: {
487
488
  'inner-scroll': true,
488
489
  'scroll-x': scrollX,
489
490
  'scroll-y': scrollY,
490
491
  overscroll: (scrollX || scrollY) && forceOverscroll,
491
- }, ref: (scrollEl) => (this.scrollEl = scrollEl), onScroll: this.scrollEvents ? (ev) => this.onScroll(ev) : undefined, part: "scroll" }, index.h("slot", { key: 'a40f964cacf0c2e2bdcf962791aaadb386d44323' })), transitionShadow ? (index.h("div", { class: "transition-effect" }, index.h("div", { class: "transition-cover" }), index.h("div", { class: "transition-shadow" }))) : null, index.h("slot", { key: 'd21886cff0bc417e1f5e3a436dddc079e967579b', name: "fixed" })));
492
+ }, ref: (scrollEl) => (this.scrollEl = scrollEl), onScroll: this.scrollEvents ? (ev) => this.onScroll(ev) : undefined, part: "scroll" }, index.h("slot", { key: '6d10fcac2e40b4dd6c20d91a8957ac07251d2fa7' })), transitionShadow ? (index.h("div", { class: "transition-effect" }, index.h("div", { class: "transition-cover" }), index.h("div", { class: "transition-shadow" }))) : null, fixedSlotPlacement === 'after' ? index.h("slot", { name: "fixed" }) : null));
492
493
  }
493
494
  get el() { return index.getElement(this); }
494
495
  };
@@ -656,7 +657,7 @@ const Footer = class {
656
657
  const mode = ionicGlobal.getIonMode(this);
657
658
  const tabs = this.el.closest('ion-tabs');
658
659
  const tabBar = tabs === null || tabs === void 0 ? void 0 : tabs.querySelector(':scope > ion-tab-bar');
659
- return (index.h(index.Host, { key: 'ddc228f1a1e7fa4f707dccf74db2490ca3241137', role: "contentinfo", class: {
660
+ return (index.h(index.Host, { key: '5da19dc38ba73e1ddfd1bef3ebd485105d77c751', role: "contentinfo", class: {
660
661
  [mode]: true,
661
662
  // Used internally for styling
662
663
  [`footer-${mode}`]: true,
@@ -664,7 +665,7 @@ const Footer = class {
664
665
  [`footer-translucent-${mode}`]: translucent,
665
666
  ['footer-toolbar-padding']: !this.keyboardVisible && (!tabBar || tabBar.slot !== 'bottom'),
666
667
  [`footer-collapse-${collapse}`]: collapse !== undefined,
667
- } }, mode === 'ios' && translucent && index.h("div", { key: 'e16ed4963ff94e06de77eb8038201820af73937c', class: "footer-background" }), index.h("slot", { key: 'f186934febf85d37133d9351a96c1a64b0a4b203' })));
668
+ } }, mode === 'ios' && translucent && index.h("div", { key: 'fafad08090a33d8c4e8a5b63d61929dcb89aab47', class: "footer-background" }), index.h("slot", { key: 'e0a443d346afa55e4317c0bc1263fdbe3c619559' })));
668
669
  }
669
670
  get el() { return index.getElement(this); }
670
671
  };
@@ -986,14 +987,14 @@ const Header = class {
986
987
  const collapse = this.collapse || 'none';
987
988
  // banner role must be at top level, so remove role if inside a menu
988
989
  const roleType = theme.hostContext('ion-menu', this.el) ? 'none' : 'banner';
989
- return (index.h(index.Host, Object.assign({ key: 'b6cc27f0b08afc9fcc889683525da765d80ba672', role: roleType, class: {
990
+ return (index.h(index.Host, Object.assign({ key: 'c687314ef290793a9d633ad20cfc5eeb47621e31', role: roleType, class: {
990
991
  [mode]: true,
991
992
  // Used internally for styling
992
993
  [`header-${mode}`]: true,
993
994
  [`header-translucent`]: this.translucent,
994
995
  [`header-collapse-${collapse}`]: true,
995
996
  [`header-translucent-${mode}`]: this.translucent,
996
- } }, inheritedAttributes), mode === 'ios' && translucent && index.h("div", { key: '395766d4dcee3398bc91960db21f922095292f14', class: "header-background" }), index.h("slot", { key: '09a67ece27b258ff1248805d43d92a49b2c6859a' })));
997
+ } }, inheritedAttributes), mode === 'ios' && translucent && index.h("div", { key: 'b429996046082405a91e7c23f95516db0b736f12', class: "header-background" }), index.h("slot", { key: 'e17a8965f8d3a33c1bfcb056c153d8242e5229fa' })));
997
998
  }
998
999
  get el() { return index.getElement(this); }
999
1000
  };
@@ -1177,7 +1178,7 @@ const RouterOutlet = class {
1177
1178
  return true;
1178
1179
  }
1179
1180
  render() {
1180
- return index.h("slot", { key: 'a70341f58d19df55de1dad00e3464388e446aa2a' });
1181
+ return index.h("slot", { key: '8279a453c66a766e6e383ff59842b4ae070c13a9' });
1181
1182
  }
1182
1183
  get el() { return index.getElement(this); }
1183
1184
  static get watchers() { return {
@@ -1217,11 +1218,11 @@ const ToolbarTitle = class {
1217
1218
  render() {
1218
1219
  const mode = ionicGlobal.getIonMode(this);
1219
1220
  const size = this.getSize();
1220
- return (index.h(index.Host, { key: '5cb49f3642fb3c937cdba729ab7d561213d9bce5', class: theme.createColorClasses(this.color, {
1221
+ return (index.h(index.Host, { key: '5a58dc437a6f4257244bbdd7e9a682a17d8c9a6b', class: theme.createColorClasses(this.color, {
1221
1222
  [mode]: true,
1222
1223
  [`title-${size}`]: true,
1223
1224
  'title-rtl': document.dir === 'rtl',
1224
- }) }, index.h("div", { key: 'f089bf6cff17ab109fec7de8b1bf96bf33bede1f', class: "toolbar-title" }, index.h("slot", { key: 'ed74c4e77126a309970ff719baa6ebaebb00d2e6' }))));
1225
+ }) }, index.h("div", { key: '58682ea7b8f47a08adfad419b5c76b34784c6501', class: "toolbar-title" }, index.h("slot", { key: '8a9248534e4c3076f5e2dfda38ef86069796851c' }))));
1225
1226
  }
1226
1227
  get el() { return index.getElement(this); }
1227
1228
  static get watchers() { return {
@@ -1289,10 +1290,10 @@ const Toolbar = class {
1289
1290
  this.childrenStyles.forEach((value) => {
1290
1291
  Object.assign(childStyles, value);
1291
1292
  });
1292
- return (index.h(index.Host, { key: 'af016bf9981a2d6182783c6643e2d460245ecc2f', class: Object.assign(Object.assign({}, childStyles), theme.createColorClasses(this.color, {
1293
+ return (index.h(index.Host, { key: '4bb3a55001408a3bdf033af76b9196cb96c07c09', class: Object.assign(Object.assign({}, childStyles), theme.createColorClasses(this.color, {
1293
1294
  [mode]: true,
1294
1295
  'in-toolbar': theme.hostContext('ion-toolbar', this.el),
1295
- })) }, index.h("div", { key: '437debb5b7c561b315d887ae8d47186cba5521ce', class: "toolbar-background" }), index.h("div", { key: '4c2429fa3e8526fedf456e4658be92d5dce8ca34', class: "toolbar-container" }, index.h("slot", { key: '4c07db12cfc48b4836b566449b854c24db308e3a', name: "start" }), index.h("slot", { key: '12855ec04622c09cc404f9b4f07f57a73e5770a0', name: "secondary" }), index.h("div", { key: '56f37d52c91de2b76910defbc9e5b7c1def3861c', class: "toolbar-content" }, index.h("slot", { key: 'c10ec3fdbea10a6388f4f510d45188f7fda1a371' })), index.h("slot", { key: 'c8ed49c6888faf35e71f2a8f4f6bf98fb0c34a25', name: "primary" }), index.h("slot", { key: '0251f3980082a092304f95cbc002bc8c633c5739', name: "end" }))));
1296
+ })) }, index.h("div", { key: '0891db157d6e028c6d03696f13fb510ea91b0296', class: "toolbar-background" }), index.h("div", { key: '95fbc870d808f74af4bb18cd8f8ec8c7828a9e0b', class: "toolbar-container" }, index.h("slot", { key: '84d4a9644660fe00ca085055ca8d12f3647531ad', name: "start" }), index.h("slot", { key: 'fd361dc9c9979f59aed2fedcf94629506fae62b0', name: "secondary" }), index.h("div", { key: '54d2b28616a4627c55766f66dc453707752758a6', class: "toolbar-content" }, index.h("slot", { key: '8f65e0830cce7135640b90eb694e282cb7e5efd2' })), index.h("slot", { key: 'c78be11a207c8674f222543646398636956087e6', name: "primary" }), index.h("slot", { key: 'ab25e1601ccaa8cb0d81921b849bcb7402aa7826', name: "end" }))));
1296
1297
  }
1297
1298
  get el() { return index.getElement(this); }
1298
1299
  };
@@ -59,7 +59,7 @@ const Thumbnail = class {
59
59
  index.registerInstance(this, hostRef);
60
60
  }
61
61
  render() {
62
- return (index.h(index.Host, { key: '29ed7678be93e55afad58bd37a61db3a289a5d76', class: ionicGlobal.getIonMode(this) }, index.h("slot", { key: 'da1eb174d2544b9d452c98076f6e0abcda60099d' })));
62
+ return (index.h(index.Host, { key: 'ea55000055f941b0c79561e8934be6242ec8e114', class: ionicGlobal.getIonMode(this) }, index.h("slot", { key: 'a4f934f442797f5c66a77e0ef8920fdd07c204f2' })));
63
63
  }
64
64
  };
65
65
  Thumbnail.style = IonThumbnailStyle0;
@@ -157,10 +157,10 @@ const Grid = class {
157
157
  }
158
158
  render() {
159
159
  const mode = ionicGlobal.getIonMode(this);
160
- return (index.h(index.Host, { key: '617127ecfabf9bf615bef1dda1be3fed5a065949', class: {
160
+ return (index.h(index.Host, { key: '930ce78b02f8360fbca08a35d364d2c09128c6c8', class: {
161
161
  [mode]: true,
162
162
  'grid-fixed': this.fixed,
163
- } }, index.h("slot", { key: 'c781fff853b093d8f44bdb7943bbc4f17c903803' })));
163
+ } }, index.h("slot", { key: 'c47bf7ef2197f5ebc42d3e2c55044276fb0db393' })));
164
164
  }
165
165
  };
166
166
  Grid.style = IonGridStyle0;
@@ -173,7 +173,7 @@ const Row = class {
173
173
  index.registerInstance(this, hostRef);
174
174
  }
175
175
  render() {
176
- return (index.h(index.Host, { key: 'aea072a5005e3f1f309f0d1ae5be5ee19869b035', class: ionicGlobal.getIonMode(this) }, index.h("slot", { key: '2a481c2126ac6ca65f0a1bbd07c2d3365409cb78' })));
176
+ return (index.h(index.Host, { key: '813c9a7f6782d2cf8eb27f30d3ab28e6f3122868', class: ionicGlobal.getIonMode(this) }, index.h("slot", { key: '356bec4d4d408ea63d6b431b06465d5b7bcbff71' })));
177
177
  }
178
178
  };
179
179
  Row.style = IonRowStyle0;
@@ -338,11 +338,11 @@ const DatetimeButton = class {
338
338
  render() {
339
339
  const { color, dateText, timeText, selectedButton, datetimeActive, disabled } = this;
340
340
  const mode = ionicGlobal.getIonMode(this);
341
- return (index.h(index.Host, { key: '26e606af6f067a5774db37ed41387ffebb941777', class: theme.createColorClasses(color, {
341
+ return (index.h(index.Host, { key: '0be955404133adbb31ae16a6599014bb29765f19', class: theme.createColorClasses(color, {
342
342
  [mode]: true,
343
343
  [`${selectedButton}-active`]: datetimeActive,
344
344
  ['datetime-button-disabled']: disabled,
345
- }) }, dateText && (index.h("button", { key: '6b7aa66a15b4a6d89d411e40586de28a2ac9f343', class: "ion-activatable", id: "date-button", "aria-expanded": datetimeActive ? 'true' : 'false', onClick: this.handleDateClick, disabled: disabled, part: "native", ref: (el) => (this.dateTargetEl = el) }, index.h("slot", { key: 'd42f34fd167be34386319e7ea788c2ab03c90b87', name: "date-target" }, dateText), mode === 'md' && index.h("ion-ripple-effect", { key: '47dd34f3c2799064cac7a5fe25440ecc043950f0' }))), timeText && (index.h("button", { key: 'd77424a20fae320654774c7bfc8a8e2369d3afe3', class: "ion-activatable", id: "time-button", "aria-expanded": datetimeActive ? 'true' : 'false', onClick: this.handleTimeClick, disabled: disabled, part: "native", ref: (el) => (this.timeTargetEl = el) }, index.h("slot", { key: 'ac088a78141bb53f2efd48dd7745f8954c92378b', name: "time-target" }, timeText), mode === 'md' && index.h("ion-ripple-effect", { key: 'b3a58ddfd28b9396e2518ffd62a045ec13d8b9d0' })))));
345
+ }) }, dateText && (index.h("button", { key: '812dcb50b17768cc13a5cfa0bcce8b113cee0f09', class: "ion-activatable", id: "date-button", "aria-expanded": datetimeActive ? 'true' : 'false', onClick: this.handleDateClick, disabled: disabled, part: "native", ref: (el) => (this.dateTargetEl = el) }, index.h("slot", { key: '46930c740a32a78502df9e651f9bd5914d6a9fea', name: "date-target" }, dateText), mode === 'md' && index.h("ion-ripple-effect", { key: '0602999cc8435dc37aa22da7f5531bc8cb71e1b4' }))), timeText && (index.h("button", { key: 'ecdd21da5181ecbdce03209f9f6673b7dcbc1f78', class: "ion-activatable", id: "time-button", "aria-expanded": datetimeActive ? 'true' : 'false', onClick: this.handleTimeClick, disabled: disabled, part: "native", ref: (el) => (this.timeTargetEl = el) }, index.h("slot", { key: 'b5b093b5166d12d11e27360788edaac916d44390', name: "time-target" }, timeText), mode === 'md' && index.h("ion-ripple-effect", { key: '70bb3a04f4748d13233eeb257503968dbd1161a9' })))));
346
346
  }
347
347
  get el() { return index.getElement(this); }
348
348
  };
@@ -15,7 +15,7 @@ const index$2 = require('./index-073c7cdc.js');
15
15
  const ionicGlobal = require('./ionic-global-62487d02.js');
16
16
  const data = require('./data-21dc0f81.js');
17
17
  const lockController = require('./lock-controller-6585a42a.js');
18
- const overlays = require('./overlays-10c452b2.js');
18
+ const overlays = require('./overlays-574e681c.js');
19
19
  const animation = require('./animation-b4fdf128.js');
20
20
  const haptic = require('./haptic-f6b37aa3.js');
21
21
  require('./index-c8d52405.js');
@@ -291,10 +291,10 @@ const Datetime = class {
291
291
  const { activeParts } = this;
292
292
  return Array.isArray(activeParts) ? activeParts[0] : activeParts;
293
293
  };
294
- this.closeParentOverlay = () => {
294
+ this.closeParentOverlay = (role) => {
295
295
  const popoverOrModal = this.el.closest('ion-modal, ion-popover');
296
296
  if (popoverOrModal) {
297
- popoverOrModal.dismiss();
297
+ popoverOrModal.dismiss(undefined, role);
298
298
  }
299
299
  };
300
300
  this.setWorkingParts = (parts) => {
@@ -964,7 +964,7 @@ const Datetime = class {
964
964
  }
965
965
  }
966
966
  if (closeOverlay) {
967
- this.closeParentOverlay();
967
+ this.closeParentOverlay(CONFIRM_ROLE);
968
968
  }
969
969
  }
970
970
  /**
@@ -984,7 +984,7 @@ const Datetime = class {
984
984
  async cancel(closeOverlay = false) {
985
985
  this.ionCancel.emit();
986
986
  if (closeOverlay) {
987
- this.closeParentOverlay();
987
+ this.closeParentOverlay(CANCEL_ROLE);
988
988
  }
989
989
  }
990
990
  get isCalendarPicker() {
@@ -1296,7 +1296,7 @@ const Datetime = class {
1296
1296
  const todayString = workingParts.day !== null
1297
1297
  ? `${workingParts.year}-${workingParts.month}-${workingParts.day}`
1298
1298
  : `${defaultParts.year}-${defaultParts.month}-${defaultParts.day}`;
1299
- return (index$1.h("ion-picker-column", { class: "date-column", color: this.color, disabled: disabled, value: todayString, onIonChange: (ev) => {
1299
+ return (index$1.h("ion-picker-column", { "aria-label": "Select a date", class: "date-column", color: this.color, disabled: disabled, value: todayString, onIonChange: (ev) => {
1300
1300
  const { value } = ev.detail;
1301
1301
  const findPart = parts.find(({ month, day, year }) => value === `${year}-${month}-${day}`);
1302
1302
  this.setWorkingParts(Object.assign(Object.assign({}, workingParts), findPart));
@@ -1371,7 +1371,7 @@ const Datetime = class {
1371
1371
  const { disabled, workingParts } = this;
1372
1372
  const activePart = this.getActivePartsWithFallback();
1373
1373
  const pickerColumnValue = (_a = (workingParts.day !== null ? workingParts.day : this.defaultParts.day)) !== null && _a !== void 0 ? _a : undefined;
1374
- return (index$1.h("ion-picker-column", { class: "day-column", color: this.color, disabled: disabled, value: pickerColumnValue, onIonChange: (ev) => {
1374
+ return (index$1.h("ion-picker-column", { "aria-label": "Select a day", class: "day-column", color: this.color, disabled: disabled, value: pickerColumnValue, onIonChange: (ev) => {
1375
1375
  this.setWorkingParts(Object.assign(Object.assign({}, workingParts), { day: ev.detail.value }));
1376
1376
  this.setActiveParts(Object.assign(Object.assign({}, activePart), { day: ev.detail.value }));
1377
1377
  ev.stopPropagation();
@@ -1383,7 +1383,7 @@ const Datetime = class {
1383
1383
  }
1384
1384
  const { disabled, workingParts } = this;
1385
1385
  const activePart = this.getActivePartsWithFallback();
1386
- return (index$1.h("ion-picker-column", { class: "month-column", color: this.color, disabled: disabled, value: workingParts.month, onIonChange: (ev) => {
1386
+ return (index$1.h("ion-picker-column", { "aria-label": "Select a month", class: "month-column", color: this.color, disabled: disabled, value: workingParts.month, onIonChange: (ev) => {
1387
1387
  this.setWorkingParts(Object.assign(Object.assign({}, workingParts), { month: ev.detail.value }));
1388
1388
  this.setActiveParts(Object.assign(Object.assign({}, activePart), { month: ev.detail.value }));
1389
1389
  ev.stopPropagation();
@@ -1395,7 +1395,7 @@ const Datetime = class {
1395
1395
  }
1396
1396
  const { disabled, workingParts } = this;
1397
1397
  const activePart = this.getActivePartsWithFallback();
1398
- return (index$1.h("ion-picker-column", { class: "year-column", color: this.color, disabled: disabled, value: workingParts.year, onIonChange: (ev) => {
1398
+ return (index$1.h("ion-picker-column", { "aria-label": "Select a year", class: "year-column", color: this.color, disabled: disabled, value: workingParts.year, onIonChange: (ev) => {
1399
1399
  this.setWorkingParts(Object.assign(Object.assign({}, workingParts), { year: ev.detail.value }));
1400
1400
  this.setActiveParts(Object.assign(Object.assign({}, activePart), { year: ev.detail.value }));
1401
1401
  ev.stopPropagation();
@@ -1428,7 +1428,7 @@ const Datetime = class {
1428
1428
  if (hoursData.length === 0)
1429
1429
  return [];
1430
1430
  const activePart = this.getActivePartsWithFallback();
1431
- return (index$1.h("ion-picker-column", { color: this.color, disabled: disabled, value: activePart.hour, numericInput: true, onIonChange: (ev) => {
1431
+ return (index$1.h("ion-picker-column", { "aria-label": "Select an hour", color: this.color, disabled: disabled, value: activePart.hour, numericInput: true, onIonChange: (ev) => {
1432
1432
  this.setWorkingParts(Object.assign(Object.assign({}, workingParts), { hour: ev.detail.value }));
1433
1433
  this.setActiveParts(Object.assign(Object.assign({}, activePart), { hour: ev.detail.value }));
1434
1434
  ev.stopPropagation();
@@ -1439,7 +1439,7 @@ const Datetime = class {
1439
1439
  if (minutesData.length === 0)
1440
1440
  return [];
1441
1441
  const activePart = this.getActivePartsWithFallback();
1442
- return (index$1.h("ion-picker-column", { color: this.color, disabled: disabled, value: activePart.minute, numericInput: true, onIonChange: (ev) => {
1442
+ return (index$1.h("ion-picker-column", { "aria-label": "Select a minute", color: this.color, disabled: disabled, value: activePart.minute, numericInput: true, onIonChange: (ev) => {
1443
1443
  this.setWorkingParts(Object.assign(Object.assign({}, workingParts), { minute: ev.detail.value }));
1444
1444
  this.setActiveParts(Object.assign(Object.assign({}, activePart), { minute: ev.detail.value }));
1445
1445
  ev.stopPropagation();
@@ -1452,7 +1452,7 @@ const Datetime = class {
1452
1452
  }
1453
1453
  const activePart = this.getActivePartsWithFallback();
1454
1454
  const isDayPeriodRTL = data.isLocaleDayPeriodRTL(this.locale);
1455
- return (index$1.h("ion-picker-column", { style: isDayPeriodRTL ? { order: '-1' } : {}, color: this.color, disabled: disabled, value: activePart.ampm, onIonChange: (ev) => {
1455
+ return (index$1.h("ion-picker-column", { "aria-label": "Select a day period", style: isDayPeriodRTL ? { order: '-1' } : {}, color: this.color, disabled: disabled, value: activePart.ampm, onIonChange: (ev) => {
1456
1456
  const hour = data.calculateHourFromAMPM(workingParts, ev.detail.value);
1457
1457
  this.setWorkingParts(Object.assign(Object.assign({}, workingParts), { ampm: ev.detail.value, hour }));
1458
1458
  this.setActiveParts(Object.assign(Object.assign({}, activePart), { ampm: ev.detail.value, hour }));
@@ -1762,7 +1762,7 @@ const Datetime = class {
1762
1762
  const hasDatePresentation = presentation === 'date' || presentation === 'date-time' || presentation === 'time-date';
1763
1763
  const hasWheelVariant = hasDatePresentation && preferWheel;
1764
1764
  helpers.renderHiddenInput(true, el, name, data.formatValue(value), disabled);
1765
- return (index$1.h(index$1.Host, { key: 'f1f8ca52cdd9cfc8394b0365c89c0d30cd7316e7', "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: Object.assign({}, theme.createColorClasses(color, {
1765
+ return (index$1.h(index$1.Host, { key: '4e247382419e963381c8dcde52ba5aaaae0e6cee', "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: Object.assign({}, theme.createColorClasses(color, {
1766
1766
  [mode]: true,
1767
1767
  ['datetime-readonly']: readonly,
1768
1768
  ['datetime-disabled']: disabled,
@@ -1772,7 +1772,7 @@ const Datetime = class {
1772
1772
  [`datetime-size-${size}`]: true,
1773
1773
  [`datetime-prefer-wheel`]: hasWheelVariant,
1774
1774
  [`datetime-grid`]: isGridStyle,
1775
- })) }, index$1.h("div", { key: '480068aa8072b60ac521646dfa82480c5f6ce6ef', class: "intersection-tracker", ref: (el) => (this.intersectionTrackerRef = el) }), this.renderDatetime(mode)));
1775
+ })) }, index$1.h("div", { key: '27bc39dd318bab9dc4078eedc4fc1b4842f145e6', class: "intersection-tracker", ref: (el) => (this.intersectionTrackerRef = el) }), this.renderDatetime(mode)));
1776
1776
  }
1777
1777
  get el() { return index$1.getElement(this); }
1778
1778
  static get watchers() { return {
@@ -1790,6 +1790,8 @@ const Datetime = class {
1790
1790
  }; }
1791
1791
  };
1792
1792
  let datetimeIds = 0;
1793
+ const CANCEL_ROLE = 'datetime-cancel';
1794
+ const CONFIRM_ROLE = 'datetime-confirm';
1793
1795
  const WHEEL_ITEM_PART = 'wheel-item';
1794
1796
  const WHEEL_ITEM_ACTIVE_PART = `active`;
1795
1797
  Datetime.style = {
@@ -2024,11 +2026,11 @@ const Picker = class {
2024
2026
  render() {
2025
2027
  const { htmlAttributes } = this;
2026
2028
  const mode = ionicGlobal.getIonMode(this);
2027
- return (index$1.h(index$1.Host, Object.assign({ key: 'cb1495acc8842c00e9f51ae792a01f769e36b0c6', "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
2029
+ return (index$1.h(index$1.Host, Object.assign({ key: '26e3144adcdf01605271d01e468bb4a75ce854b1', "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
2028
2030
  zIndex: `${20000 + this.overlayIndex}`,
2029
2031
  }, class: Object.assign({ [mode]: true,
2030
2032
  // Used internally for styling
2031
- [`picker-${mode}`]: true, 'overlay-hidden': true }, theme.getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonPickerWillDismiss: this.dispatchCancelHandler }), index$1.h("ion-backdrop", { key: 'eecbcdfd474f5ab2f9962a030b1dcbf7714fe938', visible: this.showBackdrop, tappable: this.backdropDismiss }), index$1.h("div", { key: '262e1d3bc916b30068f7be1edbc73283a815fc0f', tabindex: "0" }), index$1.h("div", { key: 'a036cf789ab768428aae26a19dbd0c5cb696188c', class: "picker-wrapper ion-overlay-wrapper", role: "dialog" }, index$1.h("div", { key: '6be7a8986976ead39611ce398ed6ad71f3b7427e', class: "picker-toolbar" }, this.buttons.map((b) => (index$1.h("div", { class: buttonWrapperClass(b) }, index$1.h("button", { type: "button", onClick: () => this.buttonClick(b), class: buttonClass(b) }, b.text))))), index$1.h("div", { key: '66a1d99aebf48219cab4177d06d893fe1d458a1f', class: "picker-columns" }, index$1.h("div", { key: 'ed7fd940c5f54453587e13ab52cbfd4122a397c6', class: "picker-above-highlight" }), this.presented && this.columns.map((c) => index$1.h("ion-picker-legacy-column", { col: c })), index$1.h("div", { key: '21c491c08bce126dde03196b21e28d903e157e1f', class: "picker-below-highlight" }))), index$1.h("div", { key: 'bd892f74b886ae1bfd010d687a2b9741213b246c', tabindex: "0" })));
2033
+ [`picker-${mode}`]: true, 'overlay-hidden': true }, theme.getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonPickerWillDismiss: this.dispatchCancelHandler }), index$1.h("ion-backdrop", { key: 'fa212d21406606186cd95f8c7a4f119696ac8d4a', visible: this.showBackdrop, tappable: this.backdropDismiss }), index$1.h("div", { key: '19ea889f65cb6a68a9db26cf9f83c6587cfcf07e', tabindex: "0" }), index$1.h("div", { key: '5fc0f5d26915ba353b9f0335946f94b6fda95e1e', class: "picker-wrapper ion-overlay-wrapper", role: "dialog" }, index$1.h("div", { key: '3fa5bff4ac0013ef31845482a27a14caebbdcd2f', class: "picker-toolbar" }, this.buttons.map((b) => (index$1.h("div", { class: buttonWrapperClass(b) }, index$1.h("button", { type: "button", onClick: () => this.buttonClick(b), class: buttonClass(b) }, b.text))))), index$1.h("div", { key: '2ff6376956d01dcd9ec01b8d6972dd4b37ffb1a1', class: "picker-columns" }, index$1.h("div", { key: '4adcef77429f10a3faa50b41d1eaf3404387997c', class: "picker-above-highlight" }), this.presented && this.columns.map((c) => index$1.h("ion-picker-legacy-column", { col: c })), index$1.h("div", { key: 'e0f37d3e9896eb2bc0f0aef4762a897130851963', class: "picker-below-highlight" }))), index$1.h("div", { key: '671bb7d0f487b0d7c7fa70388f8fa1de77448b9f', tabindex: "0" })));
2032
2034
  }
2033
2035
  get el() { return index$1.getElement(this); }
2034
2036
  static get watchers() { return {
@@ -2385,9 +2387,9 @@ const PickerColumnCmp = class {
2385
2387
  render() {
2386
2388
  const col = this.col;
2387
2389
  const mode = ionicGlobal.getIonMode(this);
2388
- return (index$1.h(index$1.Host, { key: 'c015eb8bc01b3287cbd1d71af0aa311b6be89d36', class: Object.assign({ [mode]: true, 'picker-col': true, 'picker-opts-left': this.col.align === 'left', 'picker-opts-right': this.col.align === 'right' }, theme.getClassMap(col.cssClass)), style: {
2390
+ return (index$1.h(index$1.Host, { key: '56289a294e5c580f3e7fe5fc12777aa7f80ad19b', class: Object.assign({ [mode]: true, 'picker-col': true, 'picker-opts-left': this.col.align === 'left', 'picker-opts-right': this.col.align === 'right' }, theme.getClassMap(col.cssClass)), style: {
2389
2391
  'max-width': this.col.columnWidth,
2390
- } }, col.prefix && (index$1.h("div", { key: 'f9de3fe2f5c7ad3256d6e5f44b6d03a2b1f96ffb', class: "picker-prefix", style: { width: col.prefixWidth } }, col.prefix)), index$1.h("div", { key: '10f9c12aa174f96c7cf9adc30efbb26695c0aa64', class: "picker-opts", style: { maxWidth: col.optionsWidth }, ref: (el) => (this.optsEl = el) }, col.options.map((o, index) => (index$1.h("button", { "aria-label": o.ariaLabel, class: { 'picker-opt': true, 'picker-opt-disabled': !!o.disabled }, "opt-index": index }, o.text)))), col.suffix && (index$1.h("div", { key: '1d9c0892ce56e0da9044c79eb953827166f5190b', class: "picker-suffix", style: { width: col.suffixWidth } }, col.suffix))));
2392
+ } }, col.prefix && (index$1.h("div", { key: 'd21f44667b5df567d6879723fe643ea7c2c60bef', class: "picker-prefix", style: { width: col.prefixWidth } }, col.prefix)), index$1.h("div", { key: 'bb427e5f24fd832703926e0e847ad05567597262', class: "picker-opts", style: { maxWidth: col.optionsWidth }, ref: (el) => (this.optsEl = el) }, col.options.map((o, index) => (index$1.h("button", { "aria-label": o.ariaLabel, class: { 'picker-opt': true, 'picker-opt-disabled': !!o.disabled }, "opt-index": index }, o.text)))), col.suffix && (index$1.h("div", { key: '0413f7c074b6534b8967387ecb9957a79a267aff', class: "picker-suffix", style: { width: col.suffixWidth } }, col.suffix))));
2391
2393
  }
2392
2394
  get el() { return index$1.getElement(this); }
2393
2395
  static get watchers() { return {