@ionic/core 8.0.1-dev.11713879639.102f51a0 → 8.0.1-dev.11714492860.17c00351

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 (396) hide show
  1. package/components/ion-content.js +6 -4
  2. package/components/ion-datetime-button.js +2 -2
  3. package/components/ion-datetime.js +15 -13
  4. package/components/ion-fab-button.js +2 -2
  5. package/components/ion-fab-list.js +2 -2
  6. package/components/ion-fab.js +2 -2
  7. package/components/ion-footer.js +2 -2
  8. package/components/ion-grid.js +2 -2
  9. package/components/ion-header.js +2 -2
  10. package/components/ion-img.js +1 -1
  11. package/components/ion-infinite-scroll-content.js +2 -2
  12. package/components/ion-infinite-scroll.js +1 -1
  13. package/components/ion-input-password-toggle.js +3 -3
  14. package/components/ion-input.js +8 -4
  15. package/components/ion-item-divider.js +2 -2
  16. package/components/ion-item-group.js +1 -1
  17. package/components/ion-item-option.js +2 -2
  18. package/components/ion-item-options.js +1 -1
  19. package/components/ion-item-sliding.js +1 -1
  20. package/components/ion-loading.js +2 -2
  21. package/components/ion-menu-button.js +2 -2
  22. package/components/ion-menu-toggle.js +2 -2
  23. package/components/ion-menu.js +2 -2
  24. package/components/ion-modal.js +10 -8
  25. package/components/ion-nav-link.js +1 -1
  26. package/components/ion-nav.js +1 -1
  27. package/components/ion-note.js +2 -2
  28. package/components/ion-picker-legacy.js +2 -2
  29. package/components/ion-progress-bar.js +1 -1
  30. package/components/ion-range.js +3 -3
  31. package/components/ion-refresher-content.js +1 -1
  32. package/components/ion-refresher.js +1 -1
  33. package/components/ion-reorder-group.js +1 -1
  34. package/components/ion-reorder.js +1 -1
  35. package/components/ion-router-link.js +2 -2
  36. package/components/ion-router-outlet.js +1 -1
  37. package/components/ion-row.js +1 -1
  38. package/components/ion-searchbar.js +4 -4
  39. package/components/ion-segment-button.js +3 -3
  40. package/components/ion-segment.js +2 -2
  41. package/components/ion-select-option.js +1 -1
  42. package/components/ion-select.js +2 -2
  43. package/components/ion-skeleton-text.js +2 -2
  44. package/components/ion-split-pane.js +2 -2
  45. package/components/ion-tab-bar.js +2 -2
  46. package/components/ion-tab-button.js +2 -2
  47. package/components/ion-tab.js +2 -2
  48. package/components/ion-tabs.js +1 -1
  49. package/components/ion-text.js +2 -2
  50. package/components/ion-textarea.js +2 -2
  51. package/components/ion-thumbnail.js +1 -1
  52. package/components/ion-title.js +2 -2
  53. package/components/ion-toast.js +2 -2
  54. package/components/ion-toggle.js +3 -3
  55. package/components/ion-toolbar.js +2 -2
  56. package/components/label.js +2 -2
  57. package/components/list-header.js +2 -2
  58. package/components/list.js +1 -1
  59. package/components/overlays.js +3 -2
  60. package/components/picker-column-option.js +2 -2
  61. package/components/picker-column.js +156 -4
  62. package/components/picker-column2.js +2 -2
  63. package/components/picker.js +2 -2
  64. package/components/popover.js +6 -4
  65. package/components/radio-group.js +1 -1
  66. package/components/radio.js +3 -3
  67. package/components/ripple-effect.js +1 -1
  68. package/components/select-popover.js +1 -1
  69. package/components/spinner.js +1 -1
  70. package/dist/cjs/index.cjs.js +1 -1
  71. package/dist/cjs/ion-action-sheet.cjs.entry.js +1 -1
  72. package/dist/cjs/ion-alert.cjs.entry.js +1 -1
  73. package/dist/cjs/ion-app_8.cjs.entry.js +14 -13
  74. package/dist/cjs/ion-avatar_3.cjs.entry.js +1 -1
  75. package/dist/cjs/ion-col_3.cjs.entry.js +3 -3
  76. package/dist/cjs/ion-datetime-button.cjs.entry.js +2 -2
  77. package/dist/cjs/ion-datetime_3.cjs.entry.js +20 -18
  78. package/dist/cjs/ion-fab_3.cjs.entry.js +6 -6
  79. package/dist/cjs/ion-img.cjs.entry.js +1 -1
  80. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +3 -3
  81. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +3 -3
  82. package/dist/cjs/ion-input.cjs.entry.js +7 -4
  83. package/dist/cjs/ion-item-option_3.cjs.entry.js +4 -4
  84. package/dist/cjs/ion-item_8.cjs.entry.js +12 -12
  85. package/dist/cjs/ion-loading.cjs.entry.js +3 -3
  86. package/dist/cjs/ion-menu_3.cjs.entry.js +7 -7
  87. package/dist/cjs/ion-modal.cjs.entry.js +9 -8
  88. package/dist/cjs/ion-nav_2.cjs.entry.js +2 -2
  89. package/dist/cjs/ion-picker-column-option.cjs.entry.js +2 -2
  90. package/dist/cjs/ion-picker-column.cjs.entry.js +154 -4
  91. package/dist/cjs/ion-picker.cjs.entry.js +2 -2
  92. package/dist/cjs/ion-popover.cjs.entry.js +5 -4
  93. package/dist/cjs/ion-progress-bar.cjs.entry.js +1 -1
  94. package/dist/cjs/ion-radio_2.cjs.entry.js +4 -4
  95. package/dist/cjs/ion-range.cjs.entry.js +3 -3
  96. package/dist/cjs/ion-refresher_2.cjs.entry.js +2 -2
  97. package/dist/cjs/ion-reorder_2.cjs.entry.js +2 -2
  98. package/dist/cjs/ion-ripple-effect.cjs.entry.js +1 -1
  99. package/dist/cjs/ion-route_4.cjs.entry.js +2 -2
  100. package/dist/cjs/ion-searchbar.cjs.entry.js +4 -4
  101. package/dist/cjs/ion-segment_2.cjs.entry.js +5 -5
  102. package/dist/cjs/ion-select_3.cjs.entry.js +5 -5
  103. package/dist/cjs/ion-spinner.cjs.entry.js +1 -1
  104. package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
  105. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +4 -4
  106. package/dist/cjs/ion-tab_2.cjs.entry.js +3 -3
  107. package/dist/cjs/ion-text.cjs.entry.js +2 -2
  108. package/dist/cjs/ion-textarea.cjs.entry.js +2 -2
  109. package/dist/cjs/ion-toast.cjs.entry.js +3 -3
  110. package/dist/cjs/ion-toggle.cjs.entry.js +3 -3
  111. package/dist/cjs/ionic.cjs.js +1 -1
  112. package/dist/cjs/loader.cjs.js +1 -1
  113. package/dist/cjs/{overlays-10c452b2.js → overlays-574e681c.js} +3 -1
  114. package/dist/collection/components/content/content.js +23 -4
  115. package/dist/collection/components/content/test/content.spec.js +27 -0
  116. package/dist/collection/components/datetime/datetime.js +15 -13
  117. package/dist/collection/components/datetime/test/overlay-roles/datetime.e2e.js +34 -0
  118. package/dist/collection/components/datetime-button/datetime-button.js +2 -2
  119. package/dist/collection/components/fab/fab.js +2 -2
  120. package/dist/collection/components/fab-button/fab-button.js +2 -2
  121. package/dist/collection/components/fab-list/fab-list.js +2 -2
  122. package/dist/collection/components/footer/footer.js +2 -2
  123. package/dist/collection/components/grid/grid.js +2 -2
  124. package/dist/collection/components/header/header.js +2 -2
  125. package/dist/collection/components/img/img.js +1 -1
  126. package/dist/collection/components/infinite-scroll/infinite-scroll.js +1 -1
  127. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +2 -2
  128. package/dist/collection/components/input/input.js +24 -4
  129. package/dist/collection/components/input/test/input.spec.js +13 -0
  130. package/dist/collection/components/input-password-toggle/input-password-toggle.js +3 -3
  131. package/dist/collection/components/item-divider/item-divider.js +2 -2
  132. package/dist/collection/components/item-group/item-group.js +1 -1
  133. package/dist/collection/components/item-option/item-option.js +2 -2
  134. package/dist/collection/components/item-options/item-options.js +1 -1
  135. package/dist/collection/components/item-sliding/item-sliding.js +1 -1
  136. package/dist/collection/components/label/label.js +2 -2
  137. package/dist/collection/components/list/list.js +1 -1
  138. package/dist/collection/components/list-header/list-header.js +2 -2
  139. package/dist/collection/components/loading/loading.js +2 -2
  140. package/dist/collection/components/menu/menu.js +2 -2
  141. package/dist/collection/components/menu-button/menu-button.js +2 -2
  142. package/dist/collection/components/menu-toggle/menu-toggle.js +2 -2
  143. package/dist/collection/components/modal/gestures/sheet.js +3 -2
  144. package/dist/collection/components/modal/modal.js +25 -6
  145. package/dist/collection/components/modal/test/basic/modal.spec.js +19 -0
  146. package/dist/collection/components/nav/nav.js +1 -1
  147. package/dist/collection/components/nav-link/nav-link.js +1 -1
  148. package/dist/collection/components/note/note.js +2 -2
  149. package/dist/collection/components/picker/picker.js +2 -2
  150. package/dist/collection/components/picker-column/picker-column.css +19 -0
  151. package/dist/collection/components/picker-column/picker-column.js +158 -3
  152. package/dist/collection/components/picker-column/test/picker-column.spec.js +83 -0
  153. package/dist/collection/components/picker-column-option/picker-column-option.js +2 -2
  154. package/dist/collection/components/picker-legacy/picker.js +2 -2
  155. package/dist/collection/components/picker-legacy-column/picker-column.js +2 -2
  156. package/dist/collection/components/popover/popover.js +23 -4
  157. package/dist/collection/components/popover/test/basic/popover.spec.js +19 -0
  158. package/dist/collection/components/progress-bar/progress-bar.js +1 -1
  159. package/dist/collection/components/radio/radio.js +3 -3
  160. package/dist/collection/components/radio-group/radio-group.js +1 -1
  161. package/dist/collection/components/range/range.js +3 -3
  162. package/dist/collection/components/refresher/refresher.js +1 -1
  163. package/dist/collection/components/refresher-content/refresher-content.js +1 -1
  164. package/dist/collection/components/reorder/reorder.js +1 -1
  165. package/dist/collection/components/reorder-group/reorder-group.js +1 -1
  166. package/dist/collection/components/ripple-effect/ripple-effect.js +1 -1
  167. package/dist/collection/components/router-link/router-link.js +2 -2
  168. package/dist/collection/components/router-outlet/router-outlet.js +1 -1
  169. package/dist/collection/components/row/row.js +1 -1
  170. package/dist/collection/components/searchbar/searchbar.js +4 -4
  171. package/dist/collection/components/segment/segment.js +2 -2
  172. package/dist/collection/components/segment-button/segment-button.js +3 -3
  173. package/dist/collection/components/select/select.js +2 -2
  174. package/dist/collection/components/select-option/select-option.js +1 -1
  175. package/dist/collection/components/select-popover/select-popover.js +1 -1
  176. package/dist/collection/components/skeleton-text/skeleton-text.js +2 -2
  177. package/dist/collection/components/spinner/spinner.js +1 -1
  178. package/dist/collection/components/split-pane/split-pane.js +2 -2
  179. package/dist/collection/components/tab/tab.js +2 -2
  180. package/dist/collection/components/tab-bar/tab-bar.js +2 -2
  181. package/dist/collection/components/tab-button/tab-button.js +2 -2
  182. package/dist/collection/components/tabs/tabs.js +1 -1
  183. package/dist/collection/components/text/text.js +2 -2
  184. package/dist/collection/components/textarea/textarea.js +2 -2
  185. package/dist/collection/components/thumbnail/thumbnail.js +1 -1
  186. package/dist/collection/components/title/title.js +2 -2
  187. package/dist/collection/components/toast/toast.js +2 -2
  188. package/dist/collection/components/toggle/toggle.js +3 -3
  189. package/dist/collection/components/toolbar/toolbar.js +2 -2
  190. package/dist/collection/utils/overlays.js +2 -1
  191. package/dist/docs.json +96 -1
  192. package/dist/esm/index.js +1 -1
  193. package/dist/esm/ion-action-sheet.entry.js +1 -1
  194. package/dist/esm/ion-alert.entry.js +1 -1
  195. package/dist/esm/ion-app_8.entry.js +14 -13
  196. package/dist/esm/ion-avatar_3.entry.js +1 -1
  197. package/dist/esm/ion-col_3.entry.js +3 -3
  198. package/dist/esm/ion-datetime-button.entry.js +2 -2
  199. package/dist/esm/ion-datetime_3.entry.js +20 -18
  200. package/dist/esm/ion-fab_3.entry.js +6 -6
  201. package/dist/esm/ion-img.entry.js +1 -1
  202. package/dist/esm/ion-infinite-scroll_2.entry.js +3 -3
  203. package/dist/esm/ion-input-password-toggle.entry.js +3 -3
  204. package/dist/esm/ion-input.entry.js +7 -4
  205. package/dist/esm/ion-item-option_3.entry.js +4 -4
  206. package/dist/esm/ion-item_8.entry.js +12 -12
  207. package/dist/esm/ion-loading.entry.js +3 -3
  208. package/dist/esm/ion-menu_3.entry.js +7 -7
  209. package/dist/esm/ion-modal.entry.js +9 -8
  210. package/dist/esm/ion-nav_2.entry.js +2 -2
  211. package/dist/esm/ion-picker-column-option.entry.js +2 -2
  212. package/dist/esm/ion-picker-column.entry.js +154 -4
  213. package/dist/esm/ion-picker.entry.js +2 -2
  214. package/dist/esm/ion-popover.entry.js +5 -4
  215. package/dist/esm/ion-progress-bar.entry.js +1 -1
  216. package/dist/esm/ion-radio_2.entry.js +4 -4
  217. package/dist/esm/ion-range.entry.js +3 -3
  218. package/dist/esm/ion-refresher_2.entry.js +2 -2
  219. package/dist/esm/ion-reorder_2.entry.js +2 -2
  220. package/dist/esm/ion-ripple-effect.entry.js +1 -1
  221. package/dist/esm/ion-route_4.entry.js +2 -2
  222. package/dist/esm/ion-searchbar.entry.js +4 -4
  223. package/dist/esm/ion-segment_2.entry.js +5 -5
  224. package/dist/esm/ion-select_3.entry.js +5 -5
  225. package/dist/esm/ion-spinner.entry.js +1 -1
  226. package/dist/esm/ion-split-pane.entry.js +2 -2
  227. package/dist/esm/ion-tab-bar_2.entry.js +4 -4
  228. package/dist/esm/ion-tab_2.entry.js +3 -3
  229. package/dist/esm/ion-text.entry.js +2 -2
  230. package/dist/esm/ion-textarea.entry.js +2 -2
  231. package/dist/esm/ion-toast.entry.js +3 -3
  232. package/dist/esm/ion-toggle.entry.js +3 -3
  233. package/dist/esm/ionic.js +1 -1
  234. package/dist/esm/loader.js +1 -1
  235. package/dist/esm/{overlays-6fb4a2f2.js → overlays-1eac28e2.js} +3 -2
  236. package/dist/esm-es5/index.js +1 -1
  237. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  238. package/dist/esm-es5/ion-alert.entry.js +1 -1
  239. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  240. package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
  241. package/dist/esm-es5/ion-col_3.entry.js +1 -1
  242. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  243. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  244. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  245. package/dist/esm-es5/ion-img.entry.js +1 -1
  246. package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
  247. package/dist/esm-es5/ion-input-password-toggle.entry.js +1 -1
  248. package/dist/esm-es5/ion-input.entry.js +1 -1
  249. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  250. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  251. package/dist/esm-es5/ion-loading.entry.js +1 -1
  252. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  253. package/dist/esm-es5/ion-modal.entry.js +1 -1
  254. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  255. package/dist/esm-es5/ion-picker-column-option.entry.js +1 -1
  256. package/dist/esm-es5/ion-picker-column.entry.js +1 -1
  257. package/dist/esm-es5/ion-picker.entry.js +1 -1
  258. package/dist/esm-es5/ion-popover.entry.js +1 -1
  259. package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
  260. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  261. package/dist/esm-es5/ion-range.entry.js +1 -1
  262. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  263. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  264. package/dist/esm-es5/ion-ripple-effect.entry.js +1 -1
  265. package/dist/esm-es5/ion-route_4.entry.js +1 -1
  266. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  267. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  268. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  269. package/dist/esm-es5/ion-spinner.entry.js +1 -1
  270. package/dist/esm-es5/ion-split-pane.entry.js +1 -1
  271. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  272. package/dist/esm-es5/ion-tab_2.entry.js +1 -1
  273. package/dist/esm-es5/ion-text.entry.js +1 -1
  274. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  275. package/dist/esm-es5/ion-toast.entry.js +1 -1
  276. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  277. package/dist/esm-es5/ionic.js +1 -1
  278. package/dist/esm-es5/loader.js +1 -1
  279. package/dist/esm-es5/{overlays-6fb4a2f2.js → overlays-1eac28e2.js} +1 -1
  280. package/dist/html.html-data.json +24 -0
  281. package/dist/ionic/index.esm.js +1 -1
  282. package/dist/ionic/ionic.esm.js +1 -1
  283. package/dist/ionic/{p-50205ef9.system.entry.js → p-0d88f9c2.system.entry.js} +1 -1
  284. package/dist/ionic/{p-1fe1f512.entry.js → p-1a8d2fe3.entry.js} +1 -1
  285. package/dist/ionic/{p-3008ca4e.system.entry.js → p-1aff89d0.system.entry.js} +1 -1
  286. package/dist/ionic/{p-4a01cec0.entry.js → p-2185597f.entry.js} +1 -1
  287. package/dist/ionic/{p-7f33a6e2.system.entry.js → p-22d183b4.system.entry.js} +2 -2
  288. package/dist/ionic/{p-5f15ee76.entry.js → p-255b6f01.entry.js} +1 -1
  289. package/dist/ionic/p-282cc565.js +4 -0
  290. package/dist/ionic/{p-4f6ebc2b.entry.js → p-2870db48.entry.js} +1 -1
  291. package/dist/ionic/p-2a517297.system.entry.js +4 -0
  292. package/dist/ionic/{p-cbd87df6.entry.js → p-2b45e94f.entry.js} +1 -1
  293. package/dist/ionic/{p-cf8101a6.system.entry.js → p-2c1cc9bf.system.entry.js} +1 -1
  294. package/dist/ionic/p-2e56ebdc.entry.js +4 -0
  295. package/dist/ionic/{p-e62d4a6c.entry.js → p-30a40a57.entry.js} +1 -1
  296. package/dist/ionic/{p-98af538a.system.entry.js → p-320f9186.system.entry.js} +2 -2
  297. package/dist/ionic/{p-6ef17d86.system.entry.js → p-3339b5ca.system.entry.js} +1 -1
  298. package/dist/ionic/p-39a3eca2.entry.js +4 -0
  299. package/dist/ionic/{p-703f62c1.entry.js → p-3af6a819.entry.js} +1 -1
  300. package/dist/ionic/{p-8a5152e5.entry.js → p-3f7e6661.entry.js} +1 -1
  301. package/dist/ionic/{p-814efd87.system.entry.js → p-4195e4d0.system.entry.js} +1 -1
  302. package/dist/ionic/{p-dbc3e90c.entry.js → p-454c2bfe.entry.js} +1 -1
  303. package/dist/ionic/{p-4809ddae.system.entry.js → p-47915d5c.system.entry.js} +1 -1
  304. package/dist/ionic/{p-5ad55625.entry.js → p-49a47e7c.entry.js} +1 -1
  305. package/dist/ionic/p-4b078620.entry.js +4 -0
  306. package/dist/ionic/{p-332aa81e.entry.js → p-4c24ae09.entry.js} +1 -1
  307. package/dist/ionic/{p-904df2ee.system.entry.js → p-4c3d0457.system.entry.js} +1 -1
  308. package/dist/ionic/{p-530207f9.entry.js → p-4f1d1637.entry.js} +1 -1
  309. package/dist/ionic/{p-341b3f37.entry.js → p-4fc2a1ce.entry.js} +1 -1
  310. package/dist/ionic/{p-53d69c70.system.entry.js → p-5015ef54.system.entry.js} +1 -1
  311. package/dist/ionic/{p-e8a713b5.entry.js → p-5087e4df.entry.js} +1 -1
  312. package/dist/ionic/{p-5895b91d.entry.js → p-5408ee96.entry.js} +1 -1
  313. package/dist/ionic/p-55b9eb6b.system.entry.js +4 -0
  314. package/dist/ionic/p-56932fb6.entry.js +4 -0
  315. package/dist/ionic/{p-987e38ef.system.entry.js → p-56c470c2.system.entry.js} +1 -1
  316. package/dist/ionic/{p-5c26fed5.system.entry.js → p-5983ad03.system.entry.js} +1 -1
  317. package/dist/ionic/p-5a82c7b9.system.entry.js +4 -0
  318. package/dist/ionic/p-5e074809.system.entry.js +4 -0
  319. package/dist/ionic/{p-e81c3ca2.system.entry.js → p-676e0f71.system.entry.js} +1 -1
  320. package/dist/ionic/{p-eac224fa.entry.js → p-70605125.entry.js} +1 -1
  321. package/dist/ionic/{p-9fd3ca09.system.entry.js → p-70e00e9f.system.entry.js} +1 -1
  322. package/dist/ionic/p-70e5135e.system.entry.js +4 -0
  323. package/dist/ionic/{p-1472c130.entry.js → p-71044f08.entry.js} +1 -1
  324. package/dist/ionic/{p-4761ae79.system.entry.js → p-75a6989a.system.entry.js} +1 -1
  325. package/dist/ionic/{p-68afa357.system.entry.js → p-7e5972a0.system.entry.js} +2 -2
  326. package/dist/ionic/p-8134b3c4.entry.js +4 -0
  327. package/dist/ionic/{p-4f77a080.system.entry.js → p-89f2d585.system.entry.js} +1 -1
  328. package/dist/ionic/{p-6cf780b6.system.entry.js → p-8ffff03f.system.entry.js} +1 -1
  329. package/dist/ionic/p-90f77fc2.entry.js +4 -0
  330. package/dist/ionic/{p-d277ba16.entry.js → p-91cb391a.entry.js} +1 -1
  331. package/dist/ionic/{p-bc3d649d.entry.js → p-9277e3d2.entry.js} +1 -1
  332. package/dist/ionic/{p-ca5bb110.system.entry.js → p-94d20e10.system.entry.js} +1 -1
  333. package/dist/ionic/{p-48f60474.entry.js → p-962f482c.entry.js} +1 -1
  334. package/dist/ionic/p-9832568f.entry.js +4 -0
  335. package/dist/ionic/{p-f956e38a.entry.js → p-9876ce3b.entry.js} +1 -1
  336. package/dist/ionic/{p-151e8afd.entry.js → p-9a06b83d.entry.js} +1 -1
  337. package/dist/ionic/{p-f8f8c5a8.system.entry.js → p-9dbd1f93.system.entry.js} +1 -1
  338. package/dist/ionic/{p-c54b167f.system.entry.js → p-9e829e8f.system.entry.js} +1 -1
  339. package/dist/ionic/p-a0351a92.system.js +4 -0
  340. package/dist/ionic/{p-c927dbe2.system.entry.js → p-a0dd50e4.system.entry.js} +1 -1
  341. package/dist/ionic/{p-2b86020c.system.entry.js → p-a4ce5696.system.entry.js} +1 -1
  342. package/dist/ionic/{p-1ba197b6.entry.js → p-a51785b7.entry.js} +1 -1
  343. package/dist/ionic/{p-e292247e.system.entry.js → p-a6f505f5.system.entry.js} +1 -1
  344. package/dist/ionic/{p-d061515d.system.entry.js → p-ac058b0e.system.entry.js} +1 -1
  345. package/dist/ionic/{p-38010e7c.system.entry.js → p-ae6f15b0.system.entry.js} +1 -1
  346. package/dist/ionic/{p-91b568e2.system.entry.js → p-b0fc315c.system.entry.js} +1 -1
  347. package/dist/ionic/p-b1b68c3e.entry.js +4 -0
  348. package/dist/ionic/{p-e93cd31c.entry.js → p-b80dfa1b.entry.js} +1 -1
  349. package/dist/ionic/{p-df0d39c7.system.entry.js → p-b8d966bb.system.entry.js} +2 -2
  350. package/dist/ionic/{p-90f8498c.entry.js → p-ba8fd3f7.entry.js} +1 -1
  351. package/dist/ionic/{p-3d977e09.system.entry.js → p-bd62a431.system.entry.js} +2 -2
  352. package/dist/ionic/{p-70f6b982.entry.js → p-bebb01a5.entry.js} +1 -1
  353. package/dist/ionic/p-c34a80bd.entry.js +4 -0
  354. package/dist/ionic/{p-ca6decbd.entry.js → p-cfd91e4b.entry.js} +1 -1
  355. package/dist/ionic/{p-aa79cc0e.system.entry.js → p-d3a32834.system.entry.js} +2 -2
  356. package/dist/ionic/{p-275dd0ba.system.entry.js → p-d5559e4d.system.entry.js} +1 -1
  357. package/dist/ionic/p-d724072e.system.entry.js +4 -0
  358. package/dist/ionic/{p-55bc2a11.system.entry.js → p-d833beb7.system.entry.js} +1 -1
  359. package/dist/ionic/p-d8d6ebc0.system.js +1 -1
  360. package/dist/ionic/{p-7c93f00b.system.entry.js → p-da29453c.system.entry.js} +1 -1
  361. package/dist/ionic/{p-e099a6f3.entry.js → p-dffd0e36.entry.js} +1 -1
  362. package/dist/ionic/{p-07584ab4.system.js → p-e22c0afe.system.js} +1 -1
  363. package/dist/ionic/{p-1c42ad90.entry.js → p-eb1428cc.entry.js} +1 -1
  364. package/dist/ionic/{p-e1ad8e76.entry.js → p-f49da44a.entry.js} +1 -1
  365. package/dist/ionic/p-f5006fa9.system.entry.js +4 -0
  366. package/dist/ionic/p-fe9a80b7.entry.js +4 -0
  367. package/dist/types/components/content/content.d.ts +8 -0
  368. package/dist/types/components/input/input.d.ts +4 -0
  369. package/dist/types/components/modal/modal-interface.d.ts +1 -0
  370. package/dist/types/components/modal/modal.d.ts +18 -0
  371. package/dist/types/components/picker-column/picker-column.d.ts +35 -0
  372. package/dist/types/components/popover/popover-interface.d.ts +1 -0
  373. package/dist/types/components/popover/popover.d.ts +18 -0
  374. package/dist/types/components.d.ts +32 -0
  375. package/dist/types/utils/overlays.d.ts +1 -0
  376. package/hydrate/index.js +309 -145
  377. package/package.json +1 -1
  378. package/dist/ionic/p-32dfbcdc.entry.js +0 -4
  379. package/dist/ionic/p-34f26d8b.entry.js +0 -4
  380. package/dist/ionic/p-582db405.system.entry.js +0 -4
  381. package/dist/ionic/p-629da37e.entry.js +0 -4
  382. package/dist/ionic/p-7372cf23.system.entry.js +0 -4
  383. package/dist/ionic/p-84ead641.entry.js +0 -4
  384. package/dist/ionic/p-91dabef7.system.js +0 -4
  385. package/dist/ionic/p-a28ea4d8.system.entry.js +0 -4
  386. package/dist/ionic/p-a39a73e3.entry.js +0 -4
  387. package/dist/ionic/p-a90201f2.js +0 -4
  388. package/dist/ionic/p-ac045dad.entry.js +0 -4
  389. package/dist/ionic/p-ba35f07f.entry.js +0 -4
  390. package/dist/ionic/p-c2762c6a.system.entry.js +0 -4
  391. package/dist/ionic/p-ce5bf737.system.entry.js +0 -4
  392. package/dist/ionic/p-cf45a5c7.system.entry.js +0 -4
  393. package/dist/ionic/p-e781c893.entry.js +0 -4
  394. package/dist/ionic/p-e832408b.system.entry.js +0 -4
  395. package/dist/ionic/p-ec178f19.entry.js +0 -4
  396. package/dist/ionic/p-f6fec6a0.entry.js +0 -4
@@ -242,11 +242,11 @@ const ItemDivider = class {
242
242
  }
243
243
  render() {
244
244
  const mode = ionicGlobal.getIonMode(this);
245
- return (index.h(index.Host, { key: '6cff318230a9b2a9db529df154285d3dd9822efe', class: theme.createColorClasses(this.color, {
245
+ return (index.h(index.Host, { key: '60fda1dab7dbc0038ec7ff68a661896430f7d5c5', class: theme.createColorClasses(this.color, {
246
246
  [mode]: true,
247
247
  'item-divider-sticky': this.sticky,
248
248
  item: true,
249
- }) }, index.h("slot", { key: 'eb50dfab74ab0fd13697db17ecd60e8fa0bf1750', name: "start" }), index.h("div", { key: '2806efd89d086f4fb844a479d9c095e1e0775713', class: "item-divider-inner" }, index.h("div", { key: '77b7d5fa987e5f1c26d8023cd1f974a8a263a3de', class: "item-divider-wrapper" }, index.h("slot", { key: 'dbafb0deb140a19a2a9748fd5b48760c39c6fd2e' })), index.h("slot", { key: 'ef9a848fe21e84ef21cd273b8a4d9f95f558175b', name: "end" }))));
249
+ }) }, index.h("slot", { key: '6ce072dfc2adfa699a2c34ffe25ed221c74d9eea', name: "start" }), index.h("div", { key: '9a441be204ee2f0b567432722407c75e3cbbe942', class: "item-divider-inner" }, index.h("div", { key: 'fd6f2969b345dba51400a290473e594d2d019dc5', class: "item-divider-wrapper" }, index.h("slot", { key: 'ebf5601b21c4cf199c01bf142865b8da0c1ba4a6' })), index.h("slot", { key: '249af8f30113f2c986976d518126661f65531121', name: "end" }))));
250
250
  }
251
251
  get el() { return index.getElement(this); }
252
252
  };
@@ -267,7 +267,7 @@ const ItemGroup = class {
267
267
  }
268
268
  render() {
269
269
  const mode = ionicGlobal.getIonMode(this);
270
- return (index.h(index.Host, { key: 'f9ffe0290d3fa546494fe55f952d8554f2a8abf8', role: "group", class: {
270
+ return (index.h(index.Host, { key: '24ff047b7c45f963f0dad072c65d38a230c2bc97', role: "group", class: {
271
271
  [mode]: true,
272
272
  // Used internally for styling
273
273
  [`item-group-${mode}`]: true,
@@ -337,13 +337,13 @@ const Label = class {
337
337
  render() {
338
338
  const position = this.position;
339
339
  const mode = ionicGlobal.getIonMode(this);
340
- return (index.h(index.Host, { key: '6353a70565ef6fbbbf4042b000e536c61bcf99a9', class: theme.createColorClasses(this.color, {
340
+ return (index.h(index.Host, { key: 'c2c0f388dab910d294efb9fbb409ee4ef829c1ed', class: theme.createColorClasses(this.color, {
341
341
  [mode]: true,
342
342
  'in-item-color': theme.hostContext('ion-item.ion-color', this.el),
343
343
  [`label-${position}`]: position !== undefined,
344
344
  [`label-no-animate`]: this.noAnimate,
345
345
  'label-rtl': document.dir === 'rtl',
346
- }) }, index.h("slot", { key: '6ef9c2758c0168442aa84941af0a6cec1ef1ec21' })));
346
+ }) }, index.h("slot", { key: '4de6b69950f417873a13c851018ec31ea2686f0a' })));
347
347
  }
348
348
  get el() { return index.getElement(this); }
349
349
  static get watchers() { return {
@@ -384,7 +384,7 @@ const List = class {
384
384
  render() {
385
385
  const mode = ionicGlobal.getIonMode(this);
386
386
  const { lines, inset } = this;
387
- return (index.h(index.Host, { key: '5ff2b0b3989cc99ce17abb8bcd7ec1847940d1ec', role: "list", class: {
387
+ return (index.h(index.Host, { key: '8bde220025a7eeca6da075379c6487c4c9bdddc1', role: "list", class: {
388
388
  [mode]: true,
389
389
  // Used internally for styling
390
390
  [`list-${mode}`]: true,
@@ -415,10 +415,10 @@ const ListHeader = class {
415
415
  render() {
416
416
  const { lines } = this;
417
417
  const mode = ionicGlobal.getIonMode(this);
418
- return (index.h(index.Host, { key: 'fb78bd8601cbd7b90ec84a96e0c8325be1132b1e', class: theme.createColorClasses(this.color, {
418
+ return (index.h(index.Host, { key: '7e2e050f13722f2b870a2415d99a9e631e9ca267', class: theme.createColorClasses(this.color, {
419
419
  [mode]: true,
420
420
  [`list-header-lines-${lines}`]: lines !== undefined,
421
- }) }, index.h("div", { key: '2580ad49f3a54973e15f14d645a1e55a6fa066ac', class: "list-header-inner" }, index.h("slot", { key: '677b2e2ec8eeb3ae6ad329e86c76451cf3ae6c2f' }))));
421
+ }) }, index.h("div", { key: '6117bebc45800d874e9b75355476fbced5cc8398', class: "list-header-inner" }, index.h("slot", { key: '9165fb274cd2c45a5a65c271d8b1f30e8a00c890' }))));
422
422
  }
423
423
  };
424
424
  ListHeader.style = {
@@ -439,9 +439,9 @@ const Note = class {
439
439
  }
440
440
  render() {
441
441
  const mode = ionicGlobal.getIonMode(this);
442
- return (index.h(index.Host, { key: '10a3495bc21166176986441479f8f7539029d161', class: theme.createColorClasses(this.color, {
442
+ return (index.h(index.Host, { key: '90ec2fe8c9487608ed8c0bdc32c2e80a6a0890b3', class: theme.createColorClasses(this.color, {
443
443
  [mode]: true,
444
- }) }, index.h("slot", { key: 'b6a9459e1b85f608fafd060a4bfeb11637ebe873' })));
444
+ }) }, index.h("slot", { key: '115ee3f79e6c526b0644443aad468e99385d0eda' })));
445
445
  }
446
446
  };
447
447
  Note.style = {
@@ -474,11 +474,11 @@ const SkeletonText = class {
474
474
  const animated = this.animated && ionicGlobal.config.getBoolean('animated', true);
475
475
  const inMedia = theme.hostContext('ion-avatar', this.el) || theme.hostContext('ion-thumbnail', this.el);
476
476
  const mode = ionicGlobal.getIonMode(this);
477
- return (index.h(index.Host, { key: '8a1b489e35564056b3babce548982e58fec74119', class: {
477
+ return (index.h(index.Host, { key: '1a3e78e9a6f740d609d1f0b7a16cb6eff4a2d617', class: {
478
478
  [mode]: true,
479
479
  'skeleton-text-animated': animated,
480
480
  'in-media': inMedia,
481
- } }, index.h("span", { key: '71df251a41967dc4dab241f6fa906fa4d568dd9e' }, "\u00A0")));
481
+ } }, index.h("span", { key: 'be3eabe196ec6e8ec19857375ba30f4c8aa58e7f' }, "\u00A0")));
482
482
  }
483
483
  get el() { return index.getElement(this); }
484
484
  };
@@ -9,7 +9,7 @@ const index = require('./index-bbc6c29f.js');
9
9
  const config = require('./config-4f60b98a.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');
@@ -262,9 +262,9 @@ const Loading = class {
262
262
  * Otherwise, don't set aria-labelledby.
263
263
  */
264
264
  const ariaLabelledBy = message !== undefined ? msgId : null;
265
- return (index.h(index.Host, Object.assign({ key: 'f48fc35c38f3c200f39a44f3e741c1676057248e', role: "dialog", "aria-modal": "true", "aria-labelledby": ariaLabelledBy, tabindex: "-1" }, htmlAttributes, { style: {
265
+ return (index.h(index.Host, Object.assign({ key: '4610b316b10a4df3416d0e83062935f3079baff2', role: "dialog", "aria-modal": "true", "aria-labelledby": ariaLabelledBy, tabindex: "-1" }, htmlAttributes, { style: {
266
266
  zIndex: `${40000 + this.overlayIndex}`,
267
- }, onIonBackdropTap: this.onBackdropTap, class: Object.assign(Object.assign({}, theme.getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'loading-translucent': this.translucent }) }), index.h("ion-backdrop", { key: 'e46058f693235c8ce5474df167595f6a80e4559d', visible: this.showBackdrop, tappable: this.backdropDismiss }), index.h("div", { key: '2ecd77581a2f130616033b8a78fb9da9d508b588', tabindex: "0" }), index.h("div", { key: '0243f93c41684f30c81623a8fbb533fd8f17b679', class: "loading-wrapper ion-overlay-wrapper" }, spinner && (index.h("div", { key: '0643bc42b6e691580d29af27ea5a9fe395a6c5ce', class: "loading-spinner" }, index.h("ion-spinner", { key: 'f0417802dfbcad6ab9903b84bad692eedd326c88', name: spinner, "aria-hidden": "true" }))), message !== undefined && this.renderLoadingMessage(msgId)), index.h("div", { key: '3d3a256fe1074bda91cd09212460aa6460c4c723', tabindex: "0" })));
267
+ }, onIonBackdropTap: this.onBackdropTap, class: Object.assign(Object.assign({}, theme.getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'loading-translucent': this.translucent }) }), index.h("ion-backdrop", { key: 'd07d0759ed13093c4c4fe06be442dde4bd9c2c31', visible: this.showBackdrop, tappable: this.backdropDismiss }), index.h("div", { key: 'ed3ec8b48f049b592fbea9767cc3d448dc037938', tabindex: "0" }), index.h("div", { key: 'c515f3badf149d83c1d67374ef3507415fe51422', class: "loading-wrapper ion-overlay-wrapper" }, spinner && (index.h("div", { key: '265d1673c2deb751aeca285f5a18863bb629ca5e', class: "loading-spinner" }, index.h("ion-spinner", { key: '155bf7c92f6d7afd8edbb39f2b47ad05b7d503f1', name: spinner, "aria-hidden": "true" }))), message !== undefined && this.renderLoadingMessage(msgId)), index.h("div", { key: 'b0e21df5cf54f9b48a218a03543d8c86f5406522', tabindex: "0" })));
268
268
  }
269
269
  get el() { return index.getElement(this); }
270
270
  static get watchers() { return {
@@ -7,7 +7,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
8
  const index = require('./index-bbc6c29f.js');
9
9
  const cubicBezier = require('./cubic-bezier-f2dccc53.js');
10
- const overlays = require('./overlays-10c452b2.js');
10
+ const overlays = require('./overlays-574e681c.js');
11
11
  const gestureController = require('./gesture-controller-9436f482.js');
12
12
  const hardwareBackButton = require('./hardware-back-button-44e7c052.js');
13
13
  const helpers = require('./helpers-afaa9001.js');
@@ -599,14 +599,14 @@ const Menu = class {
599
599
  * the ionBackButton listener in the menu controller
600
600
  * will handle closing the menu when Escape is pressed.
601
601
  */
602
- return (index.h(index.Host, { key: '68ea0bdf902c1f6369db93d69cacc0f30e1df32b', onKeyDown: hardwareBackButton.shouldUseCloseWatcher() ? null : this.onKeydown, role: "navigation", "aria-label": inheritedAttributes['aria-label'] || 'menu', class: {
602
+ return (index.h(index.Host, { key: '30c0c9bfb8973e4a6feb658f8c4ee8e362f464ed', onKeyDown: hardwareBackButton.shouldUseCloseWatcher() ? null : this.onKeydown, role: "navigation", "aria-label": inheritedAttributes['aria-label'] || 'menu', class: {
603
603
  [mode]: true,
604
604
  [`menu-type-${type}`]: true,
605
605
  'menu-enabled': !disabled,
606
606
  [`menu-side-${side}`]: true,
607
607
  'menu-pane-visible': isPaneVisible,
608
608
  'split-pane-side': theme.hostContext('ion-split-pane', el),
609
- } }, index.h("div", { key: '7f32097faa4dcf64a568c7cf4b8397bbffc9f7a4', class: "menu-inner", part: "container", ref: (el) => (this.menuInnerEl = el) }, index.h("slot", { key: '3d4fbc9142297708aa1b31eed875afe6ea79de04' })), index.h("ion-backdrop", { key: 'f29f4615913da302212d54a43dce94ca5bfa86a5', ref: (el) => (this.backdropEl = el), class: "menu-backdrop", tappable: false, stopPropagation: false, part: "backdrop" })));
609
+ } }, index.h("div", { key: '34b0e5840906862cf1bc27207e089004b0402c56', class: "menu-inner", part: "container", ref: (el) => (this.menuInnerEl = el) }, index.h("slot", { key: '2cd7e61a8c0987ca4b3f1f8b33cba7152f1275fe' })), index.h("ion-backdrop", { key: 'd190b1f9b66c76e276f27bfe074d3aab796180fb', ref: (el) => (this.backdropEl = el), class: "menu-backdrop", tappable: false, stopPropagation: false, part: "backdrop" })));
610
610
  }
611
611
  get el() { return index.getElement(this); }
612
612
  static get watchers() { return {
@@ -679,7 +679,7 @@ const MenuButton = class {
679
679
  type: this.type,
680
680
  };
681
681
  const ariaLabel = inheritedAttributes['aria-label'] || 'menu';
682
- return (index.h(index.Host, { key: '7ec29715ce7926b7c2b08f3d9cac8aaa16b3dc28', onClick: this.onClick, "aria-disabled": disabled ? 'true' : null, "aria-hidden": hidden ? 'true' : null, class: theme.createColorClasses(color, {
682
+ return (index.h(index.Host, { key: '95a8b9f09c7fae9713a8dc003ed277f6f31403da', onClick: this.onClick, "aria-disabled": disabled ? 'true' : null, "aria-hidden": hidden ? 'true' : null, class: theme.createColorClasses(color, {
683
683
  [mode]: true,
684
684
  button: true, // ion-buttons target .button
685
685
  'menu-button-hidden': hidden,
@@ -688,7 +688,7 @@ const MenuButton = class {
688
688
  'in-toolbar-color': theme.hostContext('ion-toolbar[color]', this.el),
689
689
  'ion-activatable': true,
690
690
  'ion-focusable': true,
691
- }) }, index.h("button", Object.assign({ key: 'd4c5929264af3ba0328118bcc27d2ab7ef5d3809' }, attrs, { disabled: disabled, class: "button-native", part: "native", "aria-label": ariaLabel }), index.h("span", { key: '7bfa6e9a93105486623d044861e879ec79ff64f1', class: "button-inner" }, index.h("slot", { key: '071ab58e285832fc188706166f5547d45d501ac5' }, index.h("ion-icon", { key: '918ec5d791921de9821c347af4f65f97dd94aabf', part: "icon", icon: menuIcon, mode: mode, lazy: false, "aria-hidden": "true" }))), mode === 'md' && index.h("ion-ripple-effect", { key: '00ffdd53f635e706c1dbd01b8e7944498650fe81', type: "unbounded" }))));
691
+ }) }, index.h("button", Object.assign({ key: '39f3ce20c400d2fac4890a042e8e44426709fca5' }, attrs, { disabled: disabled, class: "button-native", part: "native", "aria-label": ariaLabel }), index.h("span", { key: '310978dc1cdef668de6720cde2a2304253679176', class: "button-inner" }, index.h("slot", { key: '2a2b9de524c1fc3c526fe9559cb077b976852725' }, index.h("ion-icon", { key: '9c22d7ea9fc3d76c32ec1c1b4b13d982c60b8c2d', part: "icon", icon: menuIcon, mode: mode, lazy: false, "aria-hidden": "true" }))), mode === 'md' && index.h("ion-ripple-effect", { key: 'c58c9e29c763070383472f65a9d322a684bcb564', type: "unbounded" }))));
692
692
  }
693
693
  get el() { return index.getElement(this); }
694
694
  };
@@ -719,10 +719,10 @@ const MenuToggle = class {
719
719
  render() {
720
720
  const mode = ionicGlobal.getIonMode(this);
721
721
  const hidden = this.autoHide && !this.visible;
722
- return (index.h(index.Host, { key: '7c27ea5b0795676bf5cb33e1f83aa142c197f64e', onClick: this.onClick, "aria-hidden": hidden ? 'true' : null, class: {
722
+ return (index.h(index.Host, { key: '90e621f09792383f1badcc1b402b1ac7d08c5f98', onClick: this.onClick, "aria-hidden": hidden ? 'true' : null, class: {
723
723
  [mode]: true,
724
724
  'menu-toggle-hidden': hidden,
725
- } }, index.h("slot", { key: '69f187becedc0fe34603d41d279f043cf0fdf776' })));
725
+ } }, index.h("slot", { key: 'c0abdd1d91e9d80ee3704e3e374ebe1f29078460' })));
726
726
  }
727
727
  };
728
728
  MenuToggle.style = IonMenuToggleStyle0;
@@ -12,7 +12,7 @@ const helpers = require('./helpers-afaa9001.js');
12
12
  const lockController = require('./lock-controller-6585a42a.js');
13
13
  const index$4 = require('./index-5915f9b3.js');
14
14
  const capacitor = require('./capacitor-c04564bf.js');
15
- const overlays = require('./overlays-10c452b2.js');
15
+ const overlays = require('./overlays-574e681c.js');
16
16
  const theme = require('./theme-d1c573d2.js');
17
17
  const index$5 = require('./index-6d6ac424.js');
18
18
  const ionicGlobal = require('./ionic-global-62487d02.js');
@@ -818,7 +818,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
818
818
  * as inputs should not be focusable outside
819
819
  * the sheet.
820
820
  */
821
- baseEl.classList.remove('ion-disable-focus-trap');
821
+ baseEl.classList.remove(overlays.FOCUS_TRAP_DISABLE_CLASS);
822
822
  };
823
823
  const disableBackdrop = () => {
824
824
  baseEl.style.setProperty('pointer-events', 'none');
@@ -830,7 +830,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
830
830
  * Adding this class disables focus trapping
831
831
  * for the sheet temporarily.
832
832
  */
833
- baseEl.classList.add('ion-disable-focus-trap');
833
+ baseEl.classList.add(overlays.FOCUS_TRAP_DISABLE_CLASS);
834
834
  };
835
835
  /**
836
836
  * After the entering animation completes,
@@ -1195,6 +1195,7 @@ const Modal = class {
1195
1195
  this.isOpen = false;
1196
1196
  this.trigger = undefined;
1197
1197
  this.keepContentsMounted = false;
1198
+ this.focusTrap = true;
1198
1199
  this.canDismiss = true;
1199
1200
  }
1200
1201
  onIsOpenChange(newValue, oldValue) {
@@ -1651,23 +1652,23 @@ const Modal = class {
1651
1652
  return true;
1652
1653
  }
1653
1654
  render() {
1654
- const { handle, isSheetModal, presentingElement, htmlAttributes, handleBehavior, inheritedAttributes } = this;
1655
+ const { handle, isSheetModal, presentingElement, htmlAttributes, handleBehavior, inheritedAttributes, focusTrap } = this;
1655
1656
  const showHandle = handle !== false && isSheetModal;
1656
1657
  const mode = ionicGlobal.getIonMode(this);
1657
1658
  const isCardModal = presentingElement !== undefined && mode === 'ios';
1658
1659
  const isHandleCycle = handleBehavior === 'cycle';
1659
- return (index$3.h(index$3.Host, Object.assign({ key: 'bb00efb8cbbdb2d1bbcc5e9c638586e2904882a8', "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
1660
+ return (index$3.h(index$3.Host, Object.assign({ key: 'fe6fd17cf857127f89d652b9aa3e9473d28c55db', "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
1660
1661
  zIndex: `${20000 + this.overlayIndex}`,
1661
- }, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, 'overlay-hidden': true }, theme.getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle }), index$3.h("ion-backdrop", { key: 'd2d50f736fdc34b933c00309fe0b67e4aff7ee63', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && index$3.h("div", { key: '5d3523a04da9350ae435a4f3247198095b71f206', class: "modal-shadow" }), index$3.h("div", Object.assign({ key: '09b3c4b629155f8c32f5c896cf689ffbe7004de8',
1662
+ }, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, 'overlay-hidden': true, [overlays.FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, theme.getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle }), index$3.h("ion-backdrop", { key: '0f3a31363c2717e5483bc0412c25804897d4aff8', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && index$3.h("div", { key: '0e5ed59162ff08fe0a9f757e06bdacc75f65c0ed', class: "modal-shadow" }), index$3.h("div", Object.assign({ key: '35cdbe2238765e5f346ad7be64f7eefa8c78f0c0',
1662
1663
  /*
1663
1664
  role and aria-modal must be used on the
1664
1665
  same element. They must also be set inside the
1665
1666
  shadow DOM otherwise ion-button will not be highlighted
1666
1667
  when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
1667
1668
  */
1668
- role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (index$3.h("button", { key: 'e47d90068927f3a518e4144e17f18ac326126712', class: "modal-handle",
1669
+ role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (index$3.h("button", { key: '7a4031eaebf9a098f4c4220a5fe9d1c25cc0ec92', class: "modal-handle",
1669
1670
  // Prevents the handle from receiving keyboard focus when it does not cycle
1670
- tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle" })), index$3.h("slot", { key: '5733e94b3ecc4ed9bfb6aec5cd254cd0e43ee8f7' }))));
1671
+ tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle" })), index$3.h("slot", { key: '534adc8e5bd850199fe2e9e16f0e7c19217d8486' }))));
1671
1672
  }
1672
1673
  get el() { return index$3.getElement(this); }
1673
1674
  static get watchers() { return {
@@ -902,7 +902,7 @@ const Nav = class {
902
902
  }
903
903
  }
904
904
  render() {
905
- return index.h("slot", { key: 'dfe98cb6604a2015a49f41beffebdd2da957dfff' });
905
+ return index.h("slot", { key: 'e9d99a8a0b84f02f9964d8143cd5e647e43334f9' });
906
906
  }
907
907
  get el() { return index.getElement(this); }
908
908
  static get watchers() { return {
@@ -944,7 +944,7 @@ const NavLink = class {
944
944
  this.routerAnimation = undefined;
945
945
  }
946
946
  render() {
947
- return index.h(index.Host, { key: 'd2f8545b4fbd5aa25ef36eb01dffbc5d35ccfbb9', onClick: this.onClick });
947
+ return index.h(index.Host, { key: '42c23dcdec5fdb25defebaf6e8a9fa75754ff8eb', onClick: this.onClick });
948
948
  }
949
949
  get el() { return index.getElement(this); }
950
950
  };
@@ -88,10 +88,10 @@ const PickerColumnOption = class {
88
88
  render() {
89
89
  const { color, disabled, ariaLabel } = this;
90
90
  const mode = ionicGlobal.getIonMode(this);
91
- return (index.h(index.Host, { key: 'c743c6ef44bb9f765cc15b3b5d2864de6520203a', class: theme.createColorClasses(color, {
91
+ return (index.h(index.Host, { key: 'cc4435a0ce0e55be1321bcabaf342ed68cf5ba1e', class: theme.createColorClasses(color, {
92
92
  [mode]: true,
93
93
  ['option-disabled']: disabled,
94
- }) }, index.h("button", { key: '4c3d9eb245c52b2c007f727e145cfb55759bd7a9', tabindex: "-1", "aria-label": ariaLabel, disabled: disabled, onClick: () => this.onClick() }, index.h("slot", { key: '4c907d2187cbe9d5941e27f2b12578e2b7271461' }))));
94
+ }) }, index.h("button", { key: '0187fb967771e0787807a8538dce4e59f6a98565', tabindex: "-1", "aria-label": ariaLabel, disabled: disabled, onClick: () => this.onClick() }, index.h("slot", { key: 'dbe52552f3f27332816748c12d929cc81060841d' }))));
95
95
  }
96
96
  get el() { return index.getElement(this); }
97
97
  static get watchers() { return {
@@ -13,7 +13,7 @@ const ionicGlobal = require('./ionic-global-62487d02.js');
13
13
  const theme = require('./theme-d1c573d2.js');
14
14
  require('./capacitor-c04564bf.js');
15
15
 
16
- const pickerColumnCss = ":host{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;max-width:100%;height:200px;font-size:22px;text-align:center}.picker-opts{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0px;padding-bottom:0px;min-width:26px;max-height:200px;outline:none;text-align:inherit;-webkit-scroll-snap-type:y mandatory;-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory;overflow-x:hidden;overflow-y:scroll;scrollbar-width:none}.picker-item-empty{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;display:block;width:100%;height:34px;border:0px;outline:none;background:transparent;color:inherit;font-family:var(--ion-font-family, inherit);font-size:inherit;line-height:34px;text-align:inherit;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.picker-opts::-webkit-scrollbar{display:none}::slotted(ion-picker-column-option){display:block;scroll-snap-align:center}.picker-item-empty,:host(:not([disabled])) ::slotted(ion-picker-column-option.option-disabled){scroll-snap-align:none}::slotted([slot=prefix]),::slotted([slot=suffix]){max-width:200px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::slotted([slot=prefix]){-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0;padding-bottom:0;-ms-flex-pack:end;justify-content:end}::slotted([slot=suffix]){-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0;padding-bottom:0;-ms-flex-pack:start;justify-content:start}:host(.picker-column-disabled) .picker-opts{overflow-y:hidden}:host(.picker-column-disabled) ::slotted(ion-picker-column-option){cursor:default;opacity:0.4;pointer-events:none}@media (any-hover: hover){:host(:focus) .picker-opts{outline:none;background:rgba(var(--ion-color-base-rgb), 0.2)}}";
16
+ const pickerColumnCss = ":host{display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;max-width:100%;height:200px;font-size:22px;text-align:center}.assistive-focusable{left:0;right:0;top:0;bottom:0;position:absolute;z-index:1;pointer-events:none}.assistive-focusable:focus{outline:none}.picker-opts{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0px;padding-bottom:0px;min-width:26px;max-height:200px;outline:none;text-align:inherit;-webkit-scroll-snap-type:y mandatory;-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory;overflow-x:hidden;overflow-y:scroll;scrollbar-width:none}.picker-item-empty{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;display:block;width:100%;height:34px;border:0px;outline:none;background:transparent;color:inherit;font-family:var(--ion-font-family, inherit);font-size:inherit;line-height:34px;text-align:inherit;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.picker-opts::-webkit-scrollbar{display:none}::slotted(ion-picker-column-option){display:block;scroll-snap-align:center}.picker-item-empty,:host(:not([disabled])) ::slotted(ion-picker-column-option.option-disabled){scroll-snap-align:none}::slotted([slot=prefix]),::slotted([slot=suffix]){max-width:200px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::slotted([slot=prefix]){-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0;padding-bottom:0;-ms-flex-pack:end;justify-content:end}::slotted([slot=suffix]){-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0;padding-bottom:0;-ms-flex-pack:start;justify-content:start}:host(.picker-column-disabled) .picker-opts{overflow-y:hidden}:host(.picker-column-disabled) ::slotted(ion-picker-column-option){cursor:default;opacity:0.4;pointer-events:none}@media (any-hover: hover){:host(:focus) .picker-opts{outline:none;background:rgba(var(--ion-color-base-rgb), 0.2)}}";
17
17
  const IonPickerColumnStyle0 = pickerColumnCss;
18
18
 
19
19
  const PickerColumn = class {
@@ -23,6 +23,7 @@ const PickerColumn = class {
23
23
  this.isScrolling = false;
24
24
  this.isColumnVisible = false;
25
25
  this.canExitInputMode = true;
26
+ this.updateValueTextOnScroll = false;
26
27
  this.centerPickerItemInView = (target, smooth = true, canExitInputMode = true) => {
27
28
  const { isColumnVisible, scrollEl } = this;
28
29
  if (isColumnVisible && scrollEl) {
@@ -37,6 +38,7 @@ const PickerColumn = class {
37
38
  * of these can cause a scroll to occur.
38
39
  */
39
40
  this.canExitInputMode = canExitInputMode;
41
+ this.updateValueTextOnScroll = false;
40
42
  scrollEl.scroll({
41
43
  top,
42
44
  left: 0,
@@ -109,6 +111,7 @@ const PickerColumn = class {
109
111
  let activeEl = this.activeItem;
110
112
  const scrollCallback = () => {
111
113
  helpers.raf(() => {
114
+ var _a;
112
115
  if (!scrollEl)
113
116
  return;
114
117
  if (timeout) {
@@ -189,8 +192,23 @@ const PickerColumn = class {
189
192
  }
190
193
  activeEl = newActiveElement;
191
194
  this.setPickerItemActiveState(newActiveElement, true);
195
+ /**
196
+ * Set the aria-valuetext even though the value prop has not been updated yet.
197
+ * This enables some screen readers to announce the value as the users drag
198
+ * as opposed to when their release their pointer from the screen.
199
+ *
200
+ * When the value is programmatically updated, we will smoothly scroll
201
+ * to the new option. However, we do not want to update aria-valuetext mid-scroll
202
+ * as that can cause the old value to be briefly set before being set to the
203
+ * correct option. This will cause some screen readers to announce the old value
204
+ * again before announcing the new value. The correct valuetext will be set on render.
205
+ */
206
+ if (this.updateValueTextOnScroll) {
207
+ (_a = this.assistiveFocusable) === null || _a === void 0 ? void 0 : _a.setAttribute('aria-valuetext', this.getOptionValueText(newActiveElement));
208
+ }
192
209
  timeout = setTimeout(() => {
193
210
  this.isScrolling = false;
211
+ this.updateValueTextOnScroll = true;
194
212
  enableHaptics && haptic.hapticSelectionEnd();
195
213
  /**
196
214
  * Certain tasks (such as those that
@@ -249,12 +267,139 @@ const PickerColumn = class {
249
267
  */
250
268
  this.el.classList.remove('picker-column-active');
251
269
  };
270
+ /**
271
+ * Find the next enabled option after the active option.
272
+ * @param stride - How many options to "jump" over in order to select the next option.
273
+ * This can be used to implement PageUp/PageDown behaviors where pressing these keys
274
+ * scrolls the picker by more than 1 option. For example, a stride of 5 means select
275
+ * the enabled option 5 options after the active one. Note that the actual option selected
276
+ * may be past the stride if the option at the stride is disabled.
277
+ */
278
+ this.findNextOption = (stride = 1) => {
279
+ const { activeItem } = this;
280
+ if (!activeItem)
281
+ return null;
282
+ let prevNode = activeItem;
283
+ let node = activeItem.nextElementSibling;
284
+ while (node != null) {
285
+ if (stride > 0) {
286
+ stride--;
287
+ }
288
+ if (node.tagName === 'ION-PICKER-COLUMN-OPTION' && !node.disabled && stride === 0) {
289
+ return node;
290
+ }
291
+ prevNode = node;
292
+ // Use nextElementSibling instead of nextSibling to avoid text/comment nodes
293
+ node = node.nextElementSibling;
294
+ }
295
+ return prevNode;
296
+ };
297
+ /**
298
+ * Find the next enabled option after the active option.
299
+ * @param stride - How many options to "jump" over in order to select the next option.
300
+ * This can be used to implement PageUp/PageDown behaviors where pressing these keys
301
+ * scrolls the picker by more than 1 option. For example, a stride of 5 means select
302
+ * the enabled option 5 options before the active one. Note that the actual option selected
303
+ * may be past the stride if the option at the stride is disabled.
304
+ */
305
+ this.findPreviousOption = (stride = 1) => {
306
+ const { activeItem } = this;
307
+ if (!activeItem)
308
+ return null;
309
+ let nextNode = activeItem;
310
+ let node = activeItem.previousElementSibling;
311
+ while (node != null) {
312
+ if (stride > 0) {
313
+ stride--;
314
+ }
315
+ if (node.tagName === 'ION-PICKER-COLUMN-OPTION' && !node.disabled && stride === 0) {
316
+ return node;
317
+ }
318
+ nextNode = node;
319
+ // Use previousElementSibling instead of previousSibling to avoid text/comment nodes
320
+ node = node.previousElementSibling;
321
+ }
322
+ return nextNode;
323
+ };
324
+ this.onKeyDown = (ev) => {
325
+ /**
326
+ * The below operations should be inverted when running on a mobile device.
327
+ * For example, swiping up will dispatch an "ArrowUp" event. On desktop,
328
+ * this should cause the previous option to be selected. On mobile, swiping
329
+ * up causes a view to scroll down. As a result, swiping up on mobile should
330
+ * cause the next option to be selected. The Home/End operations remain
331
+ * unchanged because those always represent the first/last options, respectively.
332
+ */
333
+ const mobile = ionicGlobal.isPlatform('mobile');
334
+ let newOption = null;
335
+ switch (ev.key) {
336
+ case 'ArrowDown':
337
+ newOption = mobile ? this.findPreviousOption() : this.findNextOption();
338
+ break;
339
+ case 'ArrowUp':
340
+ newOption = mobile ? this.findNextOption() : this.findPreviousOption();
341
+ break;
342
+ case 'PageUp':
343
+ newOption = mobile ? this.findNextOption(5) : this.findPreviousOption(5);
344
+ break;
345
+ case 'PageDown':
346
+ newOption = mobile ? this.findPreviousOption(5) : this.findNextOption(5);
347
+ break;
348
+ case 'Home':
349
+ /**
350
+ * There is no guarantee that the first child will be an ion-picker-column-option,
351
+ * so we do not use firstElementChild.
352
+ */
353
+ newOption = this.el.querySelector('ion-picker-column-option:first-of-type');
354
+ break;
355
+ case 'End':
356
+ /**
357
+ * There is no guarantee that the last child will be an ion-picker-column-option,
358
+ * so we do not use lastElementChild.
359
+ */
360
+ newOption = this.el.querySelector('ion-picker-column-option:last-of-type');
361
+ break;
362
+ }
363
+ if (newOption !== null) {
364
+ this.value = newOption.value;
365
+ // This stops any default browser behavior such as scrolling
366
+ ev.preventDefault();
367
+ }
368
+ };
369
+ /**
370
+ * Utility to generate the correct text for aria-valuetext.
371
+ */
372
+ this.getOptionValueText = (el) => {
373
+ var _a;
374
+ return el ? (_a = el.getAttribute('aria-label')) !== null && _a !== void 0 ? _a : el.innerText : '';
375
+ };
376
+ /**
377
+ * Render an element that overlays the column. This element is for assistive
378
+ * tech to allow users to navigate the column up/down. This element should receive
379
+ * focus as it listens for synthesized keyboard events as required by the
380
+ * slider role: https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/slider_role
381
+ */
382
+ this.renderAssistiveFocusable = () => {
383
+ const { activeItem } = this;
384
+ const valueText = this.getOptionValueText(activeItem);
385
+ /**
386
+ * When using the picker, the valuetext provides important context that valuenow
387
+ * does not. Additionally, using non-zero valuemin/valuemax values can cause
388
+ * WebKit to incorrectly announce numeric valuetext values (such as a year
389
+ * like "2024") as percentages: https://bugs.webkit.org/show_bug.cgi?id=273126
390
+ */
391
+ return (index.h("div", { ref: (el) => (this.assistiveFocusable = el), class: "assistive-focusable", role: "slider", tabindex: this.disabled ? undefined : 0, "aria-label": this.ariaLabel, "aria-valuemin": 0, "aria-valuemax": 0, "aria-valuenow": 0, "aria-valuetext": valueText, "aria-orientation": "vertical", onKeyDown: (ev) => this.onKeyDown(ev) }));
392
+ };
393
+ this.ariaLabel = null;
252
394
  this.isActive = false;
253
395
  this.disabled = false;
254
396
  this.value = undefined;
255
397
  this.color = 'primary';
256
398
  this.numericInput = false;
257
399
  }
400
+ ariaLabelChanged(newValue) {
401
+ this.ariaLabel = newValue;
402
+ }
258
403
  valueChange() {
259
404
  if (this.isColumnVisible) {
260
405
  /**
@@ -370,6 +515,10 @@ const PickerColumn = class {
370
515
  this.scrollEl.focus();
371
516
  }
372
517
  }
518
+ connectedCallback() {
519
+ var _a;
520
+ this.ariaLabel = (_a = this.el.getAttribute('aria-label')) !== null && _a !== void 0 ? _a : 'Select a value';
521
+ }
373
522
  get activeItem() {
374
523
  const { value } = this;
375
524
  const options = Array.from(this.el.querySelectorAll('ion-picker-column-option'));
@@ -387,17 +536,18 @@ const PickerColumn = class {
387
536
  render() {
388
537
  const { color, disabled, isActive, numericInput } = this;
389
538
  const mode = ionicGlobal.getIonMode(this);
390
- return (index.h(index.Host, { key: '59648ef23cef1ab6d30955bb95bc23e670ec7256', class: theme.createColorClasses(color, {
539
+ return (index.h(index.Host, { key: '5a6b90bacbfa016d937d1c7ae6c55fd1e19729b5', class: theme.createColorClasses(color, {
391
540
  [mode]: true,
392
541
  ['picker-column-active']: isActive,
393
542
  ['picker-column-numeric-input']: numericInput,
394
543
  ['picker-column-disabled']: disabled,
395
- }) }, index.h("slot", { key: 'fd93192d4945b2c33e0fe93cc90b505f2cec12fc', name: "prefix" }), index.h("div", { key: '99e49c6d58badd2fe5e75f0ebcd4bc00eb50aa58', class: "picker-opts", tabindex: disabled ? undefined : 0, ref: (el) => {
544
+ }) }, this.renderAssistiveFocusable(), index.h("slot", { key: '25785dd94823696945830461404d4127ebfbdb82', name: "prefix" }), index.h("div", { key: '94cb28b3a212574400c84f8e086a1c82654549dc', "aria-hidden": "true", class: "picker-opts", ref: (el) => {
396
545
  this.scrollEl = el;
397
- } }, index.h("div", { key: 'bb44892ef179b25373e45e4b4bc4d1fa617b1ea1', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), index.h("div", { key: '9ee7aeb8468bbb03f7192d56849dae089b7a0250', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), index.h("div", { key: '0baa4bda4bf02a8d06dbf3392b1516ca8ea8d26a', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), index.h("slot", { key: 'ff4cad20fd82ab66599473f60d10c18dc1dc76d8' }), index.h("div", { key: '04dcb0390209081e6223b90e45b8f2ef0fdf94bd', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), index.h("div", { key: '734e3b431a30ce93957e1452516efc86e29ff9c9', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), index.h("div", { key: '1c68dcf9a029e607bb6bc9c19cd02214914eb6d7', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0")), index.h("slot", { key: 'd85210cc99c8c1bf83eb1cd51540ebe875d4adeb', name: "suffix" })));
546
+ } }, index.h("div", { key: '19b174ac090d4670323fc2bd8ed8da44bf1ea692', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), index.h("div", { key: '8c7ce6384e94acfb6154d5850f4dbabbd542edce', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), index.h("div", { key: 'ea4f5026eff35400698e84f0c88c57ed443d82d0', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), index.h("slot", { key: '627cb80802653c8e047304d71d1b12865df316b0' }), index.h("div", { key: '468a4fdb3ba93bc5df7e99d68b388f8b52d70945', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), index.h("div", { key: '88d0030269d256b4217e99e26e9a80af81120164', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), index.h("div", { key: 'fb312153e4ad2bdcf1646751d78eeb9afd83e79c', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0")), index.h("slot", { key: '7fb8379b86f016f70546110e1abf05fb02eb98fb', name: "suffix" })));
398
547
  }
399
548
  get el() { return index.getElement(this); }
400
549
  static get watchers() { return {
550
+ "aria-label": ["ariaLabelChanged"],
401
551
  "value": ["valueChange"]
402
552
  }; }
403
553
  };
@@ -484,7 +484,7 @@ const Picker = class {
484
484
  this.emitInputModeChange();
485
485
  }
486
486
  render() {
487
- return (index.h(index.Host, { key: 'f92214a09dc85b65873676f40fde2b802960e704', onPointerDown: (ev) => this.onPointerDown(ev), onClick: () => this.onClick() }, index.h("input", { key: '6da37f75aca4ea1c9cb3bc733ebda2116279f313', "aria-hidden": "true", tabindex: -1, inputmode: "numeric", type: "number", onKeyDown: (ev) => {
487
+ return (index.h(index.Host, { key: '02b0687b1f80ba295a965dfba76dd59e2d1de5d3', onPointerDown: (ev) => this.onPointerDown(ev), onClick: () => this.onClick() }, index.h("input", { key: 'f83ed84bcf9e02539c00d8a4e63e6a0d7fc4ac71', "aria-hidden": "true", tabindex: -1, inputmode: "numeric", type: "number", onKeyDown: (ev) => {
488
488
  var _a;
489
489
  /**
490
490
  * The "Enter" key represents
@@ -499,7 +499,7 @@ const Picker = class {
499
499
  if (ev.key === 'Enter') {
500
500
  (_a = this.inputEl) === null || _a === void 0 ? void 0 : _a.blur();
501
501
  }
502
- }, ref: (el) => (this.inputEl = el), onInput: () => this.onInputChange(), onBlur: () => this.exitInputMode() }), index.h("div", { key: '298e99d83dd3f5bf2798150bab0bb4024af472fa', class: "picker-before" }), index.h("div", { key: 'ea578f04eb562a4dc6d6cc92de133dcb9fb7f42a', class: "picker-after" }), index.h("div", { key: '84567824956dfe967992a629904836ba8b75b3ec', class: "picker-highlight", ref: (el) => (this.highlightEl = el) }), index.h("slot", { key: 'df81f8fb90e1f649b608328034528f5c31c70c3b' })));
502
+ }, ref: (el) => (this.inputEl = el), onInput: () => this.onInputChange(), onBlur: () => this.exitInputMode() }), index.h("div", { key: '45b07fb0617d8e006712776bf78302288edb3ff4', class: "picker-before" }), index.h("div", { key: '73009229368e0d62b09c913aacade26f068a7aa9', class: "picker-after" }), index.h("div", { key: 'b73da00e446cd1cfd511c39212e14a00d355752e', class: "picker-highlight", ref: (el) => (this.highlightEl = el) }), index.h("slot", { key: 'd969f5efc5ddb9eda6c4828702efd1ceeb69f767' })));
503
503
  }
504
504
  get el() { return index.getElement(this); }
505
505
  };
@@ -6,7 +6,7 @@
6
6
  Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
8
  const index = require('./index-bbc6c29f.js');
9
- const overlays = require('./overlays-10c452b2.js');
9
+ const overlays = require('./overlays-574e681c.js');
10
10
  const frameworkDelegate = require('./framework-delegate-55f5683a.js');
11
11
  const helpers = require('./helpers-afaa9001.js');
12
12
  const lockController = require('./lock-controller-6585a42a.js');
@@ -1067,6 +1067,7 @@ const Popover = class {
1067
1067
  this.arrow = true;
1068
1068
  this.isOpen = false;
1069
1069
  this.keyboardEvents = false;
1070
+ this.focusTrap = true;
1070
1071
  this.keepContentsMounted = false;
1071
1072
  }
1072
1073
  onTriggerChange() {
@@ -1293,12 +1294,12 @@ const Popover = class {
1293
1294
  }
1294
1295
  render() {
1295
1296
  const mode = ionicGlobal.getIonMode(this);
1296
- const { onLifecycle, parentPopover, dismissOnSelect, side, arrow, htmlAttributes } = this;
1297
+ const { onLifecycle, parentPopover, dismissOnSelect, side, arrow, htmlAttributes, focusTrap } = this;
1297
1298
  const desktop = ionicGlobal.isPlatform('desktop');
1298
1299
  const enableArrow = arrow && !parentPopover;
1299
- return (index.h(index.Host, Object.assign({ key: '4bccccf57df72e1196c6a28e803831c0520aef53', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
1300
+ return (index.h(index.Host, Object.assign({ key: '17e5e8b3e7ba5e251665fb9d0ade10c781f82f0e', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
1300
1301
  zIndex: `${20000 + this.overlayIndex}`,
1301
- }, class: Object.assign(Object.assign({}, theme.getClassMap(this.cssClass)), { [mode]: true, 'popover-translucent': this.translucent, 'overlay-hidden': true, 'popover-desktop': desktop, [`popover-side-${side}`]: true, 'popover-nested': !!parentPopover }), onIonPopoverDidPresent: onLifecycle, onIonPopoverWillPresent: onLifecycle, onIonPopoverWillDismiss: onLifecycle, onIonPopoverDidDismiss: onLifecycle, onIonBackdropTap: this.onBackdropTap }), !parentPopover && index.h("ion-backdrop", { key: 'e42f4f61150b7b41093d37d187d1b7bb4187a00e', tappable: this.backdropDismiss, visible: this.showBackdrop, part: "backdrop" }), index.h("div", { key: '386ac3247b0f82566aae07b6dbf5e97d243ce367', class: "popover-wrapper ion-overlay-wrapper", onClick: dismissOnSelect ? () => this.dismiss() : undefined }, enableArrow && index.h("div", { key: '28f0e5ea2fa099b808ffb77a9a0d78b8b46c1513', class: "popover-arrow", part: "arrow" }), index.h("div", { key: '7ba2e3dee529015c4e07ce78ec10dc59985ec6a2', class: "popover-content", part: "content" }, index.h("slot", { key: '915cdc8e389fda210f83aec8b7bbbfa6f830a884' })))));
1302
+ }, class: Object.assign(Object.assign({}, theme.getClassMap(this.cssClass)), { [mode]: true, 'popover-translucent': this.translucent, 'overlay-hidden': true, 'popover-desktop': desktop, [`popover-side-${side}`]: true, [overlays.FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false, 'popover-nested': !!parentPopover }), onIonPopoverDidPresent: onLifecycle, onIonPopoverWillPresent: onLifecycle, onIonPopoverWillDismiss: onLifecycle, onIonPopoverDidDismiss: onLifecycle, onIonBackdropTap: this.onBackdropTap }), !parentPopover && index.h("ion-backdrop", { key: 'c12fb94b375d7e88a0c5d715440c0f66ad7ee817', tappable: this.backdropDismiss, visible: this.showBackdrop, part: "backdrop" }), index.h("div", { key: '478b388cc9a5a382003a2863e968e77a174914ab', class: "popover-wrapper ion-overlay-wrapper", onClick: dismissOnSelect ? () => this.dismiss() : undefined }, enableArrow && index.h("div", { key: 'f1c63a0079f197a8d4577e7c00a654871fb9d816', class: "popover-arrow", part: "arrow" }), index.h("div", { key: '08b62a321c09ad4b0f90460468ecbc1d56320bf1', class: "popover-content", part: "content" }, index.h("slot", { key: '55645ff597f64d434219caa28015cf2a4ceb0ee5' })))));
1302
1303
  }
1303
1304
  get el() { return index.getElement(this); }
1304
1305
  static get watchers() { return {
@@ -31,7 +31,7 @@ const ProgressBar = class {
31
31
  const mode = ionicGlobal.getIonMode(this);
32
32
  // If the progress is displayed as a solid bar.
33
33
  const progressSolid = buffer === 1;
34
- return (index.h(index.Host, { key: '8d8ddf0b26fe33803d3a6168cbedd523d1a888e7', role: "progressbar", "aria-valuenow": type === 'determinate' ? value : null, "aria-valuemin": "0", "aria-valuemax": "1", class: theme.createColorClasses(color, {
34
+ return (index.h(index.Host, { key: 'b293f4475bcdaa7851b41ebfda659037f0365120', role: "progressbar", "aria-valuenow": type === 'determinate' ? value : null, "aria-valuemin": "0", "aria-valuemax": "1", class: theme.createColorClasses(color, {
35
35
  [mode]: true,
36
36
  [`progress-bar-${type}`]: true,
37
37
  'progress-paused': paused,
@@ -112,7 +112,7 @@ const Radio = class {
112
112
  const { checked, disabled, color, el, justify, labelPlacement, hasLabel, buttonTabindex, alignment } = this;
113
113
  const mode = ionicGlobal.getIonMode(this);
114
114
  const inItem = theme.hostContext('ion-item', el);
115
- return (index.h(index.Host, { key: 'cb00934d052260e97462e97a1669045cbb0b963a', onFocus: this.onFocus, onBlur: this.onBlur, onClick: this.onClick, class: theme.createColorClasses(color, {
115
+ return (index.h(index.Host, { key: 'e44cade8aa8415bdc825f9d17fc8562487cf5d35', onFocus: this.onFocus, onBlur: this.onBlur, onClick: this.onClick, class: theme.createColorClasses(color, {
116
116
  [mode]: true,
117
117
  'in-item': inItem,
118
118
  'radio-checked': checked,
@@ -123,10 +123,10 @@ const Radio = class {
123
123
  // Focus and active styling should not apply when the radio is in an item
124
124
  'ion-activatable': !inItem,
125
125
  'ion-focusable': !inItem,
126
- }), role: "radio", "aria-checked": checked ? 'true' : 'false', "aria-disabled": disabled ? 'true' : null, tabindex: buttonTabindex }, index.h("label", { key: '05613f89400469692442bf3c02c27f9299c5d6ef', class: "radio-wrapper" }, index.h("div", { key: '89b5d7668c3856f417c318629086cf46a072efbe', class: {
126
+ }), role: "radio", "aria-checked": checked ? 'true' : 'false', "aria-disabled": disabled ? 'true' : null, tabindex: buttonTabindex }, index.h("label", { key: '48a99aa80a7d7b4085ef26faf3167903c975517c', class: "radio-wrapper" }, index.h("div", { key: 'a8d74e0603b41215ea3e867356a9be0dcf3722d8', class: {
127
127
  'label-text-wrapper': true,
128
128
  'label-text-wrapper-hidden': !hasLabel,
129
- }, part: "label" }, index.h("slot", { key: 'd5e43a8d0fe5a7fc323887d310fd64d6f87deef7' })), index.h("div", { key: '7fd221189adcfccca1ed18dcd0a60cde6261120b', class: "native-wrapper" }, this.renderRadioControl()))));
129
+ }, part: "label" }, index.h("slot", { key: '9e3cce6254e70b02d50381537438a70435b031cc' })), index.h("div", { key: 'bfa3ee188d911e056a3e60178eac41362efb94b3', class: "native-wrapper" }, this.renderRadioControl()))));
130
130
  }
131
131
  get el() { return index.getElement(this); }
132
132
  static get watchers() { return {
@@ -291,7 +291,7 @@ const RadioGroup = class {
291
291
  const { label, labelId, el, name, value } = this;
292
292
  const mode = ionicGlobal.getIonMode(this);
293
293
  helpers.renderHiddenInput(true, el, name, value, false);
294
- return index.h(index.Host, { key: 'b6b439d6d53d17a5a4d9853a7cf6065b28213338', role: "radiogroup", "aria-labelledby": label ? labelId : null, onClick: this.onClick, class: mode });
294
+ return index.h(index.Host, { key: '7801c5d6b3916efb15b4e479c6b90a8925e254a4', role: "radiogroup", "aria-labelledby": label ? labelId : null, onClick: this.onClick, class: mode });
295
295
  }
296
296
  get el() { return index.getElement(this); }
297
297
  static get watchers() { return {