@ionic/core 8.0.2 → 8.1.1-nightly.20240502

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 (434) hide show
  1. package/components/index2.js +119 -1
  2. package/components/ion-content.js +6 -4
  3. package/components/ion-datetime-button.js +2 -2
  4. package/components/ion-datetime.js +15 -13
  5. package/components/ion-fab-button.js +2 -2
  6. package/components/ion-fab-list.js +2 -2
  7. package/components/ion-fab.js +2 -2
  8. package/components/ion-footer.js +2 -2
  9. package/components/ion-grid.js +2 -2
  10. package/components/ion-header.js +2 -2
  11. package/components/ion-img.js +1 -1
  12. package/components/ion-infinite-scroll-content.js +2 -2
  13. package/components/ion-infinite-scroll.js +1 -1
  14. package/components/ion-input-password-toggle.js +3 -3
  15. package/components/ion-input.js +8 -4
  16. package/components/ion-item-divider.js +2 -2
  17. package/components/ion-item-group.js +1 -1
  18. package/components/ion-item-option.js +2 -2
  19. package/components/ion-item-options.js +1 -1
  20. package/components/ion-item-sliding.js +1 -1
  21. package/components/ion-loading.js +2 -2
  22. package/components/ion-menu-button.js +2 -2
  23. package/components/ion-menu-toggle.js +2 -2
  24. package/components/ion-menu.js +2 -2
  25. package/components/ion-modal.js +10 -8
  26. package/components/ion-nav-link.js +1 -1
  27. package/components/ion-nav.js +1 -1
  28. package/components/ion-note.js +2 -2
  29. package/components/ion-picker-legacy.js +2 -2
  30. package/components/ion-progress-bar.js +1 -1
  31. package/components/ion-range.js +3 -3
  32. package/components/ion-refresher-content.js +1 -1
  33. package/components/ion-refresher.js +1 -1
  34. package/components/ion-reorder-group.js +1 -1
  35. package/components/ion-reorder.js +1 -1
  36. package/components/ion-router-link.js +2 -2
  37. package/components/ion-router-outlet.js +1 -1
  38. package/components/ion-row.js +1 -1
  39. package/components/ion-searchbar.js +4 -4
  40. package/components/ion-segment-button.js +3 -3
  41. package/components/ion-segment.js +10 -9
  42. package/components/ion-select-option.js +1 -1
  43. package/components/ion-select.js +2 -2
  44. package/components/ion-skeleton-text.js +2 -2
  45. package/components/ion-split-pane.js +2 -2
  46. package/components/ion-tab-bar.js +2 -2
  47. package/components/ion-tab-button.js +2 -2
  48. package/components/ion-tab.js +2 -2
  49. package/components/ion-tabs.js +1 -1
  50. package/components/ion-text.js +2 -2
  51. package/components/ion-textarea.js +2 -2
  52. package/components/ion-thumbnail.js +1 -1
  53. package/components/ion-title.js +2 -2
  54. package/components/ion-toast.js +2 -2
  55. package/components/ion-toggle.js +3 -3
  56. package/components/ion-toolbar.js +2 -2
  57. package/components/label.js +2 -2
  58. package/components/list-header.js +2 -2
  59. package/components/list.js +1 -1
  60. package/components/overlays.js +3 -2
  61. package/components/picker-column-option.js +2 -2
  62. package/components/picker-column.js +156 -4
  63. package/components/picker-column2.js +2 -2
  64. package/components/picker.js +2 -2
  65. package/components/popover.js +6 -4
  66. package/components/radio-group.js +1 -1
  67. package/components/radio.js +3 -3
  68. package/components/ripple-effect.js +1 -1
  69. package/components/select-popover.js +1 -1
  70. package/components/spinner.js +1 -1
  71. package/css/core.css +1 -1
  72. package/css/core.css.map +1 -1
  73. package/css/ionic.bundle.css +1 -1
  74. package/css/ionic.bundle.css.map +1 -1
  75. package/dist/cjs/{index-6047957b.js → index-c0b7f8f4.js} +124 -6
  76. package/dist/cjs/index.cjs.js +5 -5
  77. package/dist/cjs/ion-action-sheet.cjs.entry.js +1 -1
  78. package/dist/cjs/ion-alert.cjs.entry.js +1 -1
  79. package/dist/cjs/ion-app_8.cjs.entry.js +15 -14
  80. package/dist/cjs/ion-avatar_3.cjs.entry.js +1 -1
  81. package/dist/cjs/ion-col_3.cjs.entry.js +3 -3
  82. package/dist/cjs/ion-datetime-button.cjs.entry.js +2 -2
  83. package/dist/cjs/ion-datetime_3.cjs.entry.js +20 -18
  84. package/dist/cjs/ion-fab_3.cjs.entry.js +6 -6
  85. package/dist/cjs/ion-img.cjs.entry.js +1 -1
  86. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +3 -3
  87. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +3 -3
  88. package/dist/cjs/ion-input.cjs.entry.js +7 -4
  89. package/dist/cjs/ion-item-option_3.cjs.entry.js +4 -4
  90. package/dist/cjs/ion-item_8.cjs.entry.js +12 -12
  91. package/dist/cjs/ion-loading.cjs.entry.js +3 -3
  92. package/dist/cjs/ion-menu_3.cjs.entry.js +7 -7
  93. package/dist/cjs/ion-modal.cjs.entry.js +10 -9
  94. package/dist/cjs/ion-nav_2.cjs.entry.js +4 -3
  95. package/dist/cjs/ion-picker-column-option.cjs.entry.js +2 -2
  96. package/dist/cjs/ion-picker-column.cjs.entry.js +154 -4
  97. package/dist/cjs/ion-picker.cjs.entry.js +2 -2
  98. package/dist/cjs/ion-popover.cjs.entry.js +6 -5
  99. package/dist/cjs/ion-progress-bar.cjs.entry.js +1 -1
  100. package/dist/cjs/ion-radio_2.cjs.entry.js +4 -4
  101. package/dist/cjs/ion-range.cjs.entry.js +3 -3
  102. package/dist/cjs/ion-refresher_2.cjs.entry.js +2 -2
  103. package/dist/cjs/ion-reorder_2.cjs.entry.js +2 -2
  104. package/dist/cjs/ion-ripple-effect.cjs.entry.js +1 -1
  105. package/dist/cjs/ion-route_4.cjs.entry.js +2 -2
  106. package/dist/cjs/ion-searchbar.cjs.entry.js +4 -4
  107. package/dist/cjs/ion-segment_2.cjs.entry.js +13 -12
  108. package/dist/cjs/ion-select_3.cjs.entry.js +5 -5
  109. package/dist/cjs/ion-spinner.cjs.entry.js +1 -1
  110. package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
  111. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +4 -4
  112. package/dist/cjs/ion-tab_2.cjs.entry.js +3 -3
  113. package/dist/cjs/ion-text.cjs.entry.js +2 -2
  114. package/dist/cjs/ion-textarea.cjs.entry.js +2 -2
  115. package/dist/cjs/ion-toast.cjs.entry.js +3 -3
  116. package/dist/cjs/ion-toggle.cjs.entry.js +3 -3
  117. package/dist/cjs/ionic.cjs.js +1 -1
  118. package/dist/cjs/{ios.transition-59b0e1d9.js → ios.transition-5ddf92f1.js} +3 -1
  119. package/dist/cjs/loader.cjs.js +1 -1
  120. package/dist/cjs/{md.transition-0cc7c831.js → md.transition-047c18c5.js} +3 -1
  121. package/dist/cjs/{overlays-2feabb85.js → overlays-cb04d075.js} +3 -1
  122. package/dist/collection/components/content/content.js +23 -4
  123. package/dist/collection/components/content/test/content.spec.js +27 -0
  124. package/dist/collection/components/datetime/datetime.js +15 -13
  125. package/dist/collection/components/datetime/test/overlay-roles/datetime.e2e.js +34 -0
  126. package/dist/collection/components/datetime-button/datetime-button.js +2 -2
  127. package/dist/collection/components/fab/fab.js +2 -2
  128. package/dist/collection/components/fab-button/fab-button.js +2 -2
  129. package/dist/collection/components/fab-list/fab-list.js +2 -2
  130. package/dist/collection/components/footer/footer.js +2 -2
  131. package/dist/collection/components/grid/grid.js +2 -2
  132. package/dist/collection/components/header/header.js +2 -2
  133. package/dist/collection/components/img/img.js +1 -1
  134. package/dist/collection/components/infinite-scroll/infinite-scroll.js +1 -1
  135. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +2 -2
  136. package/dist/collection/components/input/input.js +24 -4
  137. package/dist/collection/components/input/test/input.spec.js +13 -0
  138. package/dist/collection/components/input-password-toggle/input-password-toggle.js +3 -3
  139. package/dist/collection/components/item-divider/item-divider.js +2 -2
  140. package/dist/collection/components/item-group/item-group.js +1 -1
  141. package/dist/collection/components/item-option/item-option.js +2 -2
  142. package/dist/collection/components/item-options/item-options.js +1 -1
  143. package/dist/collection/components/item-sliding/item-sliding.js +1 -1
  144. package/dist/collection/components/label/label.js +2 -2
  145. package/dist/collection/components/list/list.js +1 -1
  146. package/dist/collection/components/list-header/list-header.js +2 -2
  147. package/dist/collection/components/loading/loading.js +2 -2
  148. package/dist/collection/components/menu/menu.js +2 -2
  149. package/dist/collection/components/menu-button/menu-button.js +2 -2
  150. package/dist/collection/components/menu-toggle/menu-toggle.js +2 -2
  151. package/dist/collection/components/modal/gestures/sheet.js +3 -2
  152. package/dist/collection/components/modal/modal.js +25 -6
  153. package/dist/collection/components/modal/test/basic/modal.spec.js +19 -0
  154. package/dist/collection/components/nav/nav.js +1 -1
  155. package/dist/collection/components/nav-link/nav-link.js +1 -1
  156. package/dist/collection/components/note/note.js +2 -2
  157. package/dist/collection/components/picker/picker.js +2 -2
  158. package/dist/collection/components/picker-column/picker-column.css +19 -0
  159. package/dist/collection/components/picker-column/picker-column.js +158 -3
  160. package/dist/collection/components/picker-column/test/picker-column.spec.js +83 -0
  161. package/dist/collection/components/picker-column-option/picker-column-option.js +2 -2
  162. package/dist/collection/components/picker-legacy/picker.js +2 -2
  163. package/dist/collection/components/picker-legacy-column/picker-column.js +2 -2
  164. package/dist/collection/components/popover/popover.js +23 -4
  165. package/dist/collection/components/popover/test/basic/popover.spec.js +19 -0
  166. package/dist/collection/components/progress-bar/progress-bar.js +1 -1
  167. package/dist/collection/components/radio/radio.js +3 -3
  168. package/dist/collection/components/radio-group/radio-group.js +1 -1
  169. package/dist/collection/components/range/range.js +3 -3
  170. package/dist/collection/components/refresher/refresher.js +1 -1
  171. package/dist/collection/components/refresher-content/refresher-content.js +1 -1
  172. package/dist/collection/components/reorder/reorder.js +1 -1
  173. package/dist/collection/components/reorder-group/reorder-group.js +1 -1
  174. package/dist/collection/components/ripple-effect/ripple-effect.js +1 -1
  175. package/dist/collection/components/router-link/router-link.js +2 -2
  176. package/dist/collection/components/router-outlet/router-outlet.js +1 -1
  177. package/dist/collection/components/row/row.js +1 -1
  178. package/dist/collection/components/searchbar/searchbar.js +4 -4
  179. package/dist/collection/components/segment/segment.js +10 -9
  180. package/dist/collection/components/segment-button/segment-button.js +3 -3
  181. package/dist/collection/components/select/select.js +2 -2
  182. package/dist/collection/components/select-option/select-option.js +1 -1
  183. package/dist/collection/components/select-popover/select-popover.js +1 -1
  184. package/dist/collection/components/skeleton-text/skeleton-text.js +2 -2
  185. package/dist/collection/components/spinner/spinner.js +1 -1
  186. package/dist/collection/components/split-pane/split-pane.js +2 -2
  187. package/dist/collection/components/tab/tab.js +2 -2
  188. package/dist/collection/components/tab-bar/tab-bar.js +2 -2
  189. package/dist/collection/components/tab-button/tab-button.js +2 -2
  190. package/dist/collection/components/tabs/tabs.js +1 -1
  191. package/dist/collection/components/text/text.js +2 -2
  192. package/dist/collection/components/textarea/textarea.js +2 -2
  193. package/dist/collection/components/thumbnail/thumbnail.js +1 -1
  194. package/dist/collection/components/title/title.js +2 -2
  195. package/dist/collection/components/toast/toast.js +2 -2
  196. package/dist/collection/components/toggle/toggle.js +3 -3
  197. package/dist/collection/components/toolbar/toolbar.js +2 -2
  198. package/dist/collection/utils/focus-controller/index.js +112 -0
  199. package/dist/collection/utils/focus-controller/test/generic/focus-controller.e2e.js +52 -0
  200. package/dist/collection/utils/focus-controller/test/ionic/focus-controller.e2e.js +52 -0
  201. package/dist/collection/utils/overlays.js +2 -1
  202. package/dist/collection/utils/transition/index.js +11 -1
  203. package/dist/docs.json +96 -1
  204. package/dist/esm/{index-f4460246.js → index-8e6b6a24.js} +121 -3
  205. package/dist/esm/index.js +5 -5
  206. package/dist/esm/ion-action-sheet.entry.js +1 -1
  207. package/dist/esm/ion-alert.entry.js +1 -1
  208. package/dist/esm/ion-app_8.entry.js +15 -14
  209. package/dist/esm/ion-avatar_3.entry.js +1 -1
  210. package/dist/esm/ion-col_3.entry.js +3 -3
  211. package/dist/esm/ion-datetime-button.entry.js +2 -2
  212. package/dist/esm/ion-datetime_3.entry.js +20 -18
  213. package/dist/esm/ion-fab_3.entry.js +6 -6
  214. package/dist/esm/ion-img.entry.js +1 -1
  215. package/dist/esm/ion-infinite-scroll_2.entry.js +3 -3
  216. package/dist/esm/ion-input-password-toggle.entry.js +3 -3
  217. package/dist/esm/ion-input.entry.js +7 -4
  218. package/dist/esm/ion-item-option_3.entry.js +4 -4
  219. package/dist/esm/ion-item_8.entry.js +12 -12
  220. package/dist/esm/ion-loading.entry.js +3 -3
  221. package/dist/esm/ion-menu_3.entry.js +7 -7
  222. package/dist/esm/ion-modal.entry.js +10 -9
  223. package/dist/esm/ion-nav_2.entry.js +4 -3
  224. package/dist/esm/ion-picker-column-option.entry.js +2 -2
  225. package/dist/esm/ion-picker-column.entry.js +154 -4
  226. package/dist/esm/ion-picker.entry.js +2 -2
  227. package/dist/esm/ion-popover.entry.js +6 -5
  228. package/dist/esm/ion-progress-bar.entry.js +1 -1
  229. package/dist/esm/ion-radio_2.entry.js +4 -4
  230. package/dist/esm/ion-range.entry.js +3 -3
  231. package/dist/esm/ion-refresher_2.entry.js +2 -2
  232. package/dist/esm/ion-reorder_2.entry.js +2 -2
  233. package/dist/esm/ion-ripple-effect.entry.js +1 -1
  234. package/dist/esm/ion-route_4.entry.js +2 -2
  235. package/dist/esm/ion-searchbar.entry.js +4 -4
  236. package/dist/esm/ion-segment_2.entry.js +13 -12
  237. package/dist/esm/ion-select_3.entry.js +5 -5
  238. package/dist/esm/ion-spinner.entry.js +1 -1
  239. package/dist/esm/ion-split-pane.entry.js +2 -2
  240. package/dist/esm/ion-tab-bar_2.entry.js +4 -4
  241. package/dist/esm/ion-tab_2.entry.js +3 -3
  242. package/dist/esm/ion-text.entry.js +2 -2
  243. package/dist/esm/ion-textarea.entry.js +2 -2
  244. package/dist/esm/ion-toast.entry.js +3 -3
  245. package/dist/esm/ion-toggle.entry.js +3 -3
  246. package/dist/esm/ionic.js +1 -1
  247. package/dist/esm/{ios.transition-72f59adb.js → ios.transition-e35d0940.js} +3 -1
  248. package/dist/esm/loader.js +1 -1
  249. package/dist/esm/{md.transition-ef0437fe.js → md.transition-4b90a1f0.js} +3 -1
  250. package/dist/esm/{overlays-56045efc.js → overlays-df2c06b2.js} +3 -2
  251. package/dist/esm-es5/index-8e6b6a24.js +4 -0
  252. package/dist/esm-es5/index.js +1 -1
  253. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  254. package/dist/esm-es5/ion-alert.entry.js +1 -1
  255. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  256. package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
  257. package/dist/esm-es5/ion-col_3.entry.js +1 -1
  258. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  259. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  260. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  261. package/dist/esm-es5/ion-img.entry.js +1 -1
  262. package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
  263. package/dist/esm-es5/ion-input-password-toggle.entry.js +1 -1
  264. package/dist/esm-es5/ion-input.entry.js +1 -1
  265. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  266. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  267. package/dist/esm-es5/ion-loading.entry.js +1 -1
  268. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  269. package/dist/esm-es5/ion-modal.entry.js +1 -1
  270. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  271. package/dist/esm-es5/ion-picker-column-option.entry.js +1 -1
  272. package/dist/esm-es5/ion-picker-column.entry.js +1 -1
  273. package/dist/esm-es5/ion-picker.entry.js +1 -1
  274. package/dist/esm-es5/ion-popover.entry.js +1 -1
  275. package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
  276. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  277. package/dist/esm-es5/ion-range.entry.js +1 -1
  278. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  279. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  280. package/dist/esm-es5/ion-ripple-effect.entry.js +1 -1
  281. package/dist/esm-es5/ion-route_4.entry.js +1 -1
  282. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  283. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  284. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  285. package/dist/esm-es5/ion-spinner.entry.js +1 -1
  286. package/dist/esm-es5/ion-split-pane.entry.js +1 -1
  287. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  288. package/dist/esm-es5/ion-tab_2.entry.js +1 -1
  289. package/dist/esm-es5/ion-text.entry.js +1 -1
  290. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  291. package/dist/esm-es5/ion-toast.entry.js +1 -1
  292. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  293. package/dist/esm-es5/ionic.js +1 -1
  294. package/dist/esm-es5/ios.transition-e35d0940.js +4 -0
  295. package/dist/esm-es5/loader.js +1 -1
  296. package/dist/esm-es5/md.transition-4b90a1f0.js +4 -0
  297. package/dist/esm-es5/{overlays-56045efc.js → overlays-df2c06b2.js} +1 -1
  298. package/dist/html.html-data.json +24 -0
  299. package/dist/ionic/index.esm.js +1 -1
  300. package/dist/ionic/ionic.esm.js +1 -1
  301. package/dist/ionic/{p-e58a04ae.system.entry.js → p-01a27023.system.entry.js} +1 -1
  302. package/dist/ionic/p-0395be73.entry.js +4 -0
  303. package/dist/ionic/p-049d43bd.entry.js +4 -0
  304. package/dist/ionic/p-0536574e.entry.js +4 -0
  305. package/dist/ionic/{p-4f17f03d.entry.js → p-09538818.entry.js} +1 -1
  306. package/dist/ionic/p-0978924b.system.entry.js +4 -0
  307. package/dist/ionic/{p-9c5b6727.entry.js → p-09b4e9ec.entry.js} +1 -1
  308. package/dist/ionic/{p-22ef5198.system.entry.js → p-0a6d801e.system.entry.js} +1 -1
  309. package/dist/ionic/{p-dc242acb.system.entry.js → p-0b007acc.system.entry.js} +1 -1
  310. package/dist/ionic/{p-100d079f.system.entry.js → p-10feef7e.system.entry.js} +1 -1
  311. package/dist/ionic/p-15d1ddba.js +4 -0
  312. package/dist/ionic/{p-2bd9b326.system.entry.js → p-199f826f.system.entry.js} +1 -1
  313. package/dist/ionic/p-1b435d20.entry.js +4 -0
  314. package/dist/ionic/{p-7cf7ef9f.entry.js → p-1eb63fa4.entry.js} +1 -1
  315. package/dist/ionic/{p-672b53f3.entry.js → p-207e11dc.entry.js} +1 -1
  316. package/dist/ionic/{p-32df9442.entry.js → p-29de09dd.entry.js} +1 -1
  317. package/dist/ionic/p-30baae57.system.js +1 -1
  318. package/dist/ionic/p-33e10509.system.js +4 -0
  319. package/dist/ionic/{p-eed23392.system.entry.js → p-380efbfa.system.entry.js} +1 -1
  320. package/dist/ionic/p-3c27be4a.entry.js +4 -0
  321. package/dist/ionic/{p-022bc8ff.entry.js → p-3f53a0b1.entry.js} +1 -1
  322. package/dist/ionic/{p-0ae12601.entry.js → p-433157a4.entry.js} +1 -1
  323. package/dist/ionic/p-498eb648.system.entry.js +4 -0
  324. package/dist/ionic/{p-eaac2522.system.entry.js → p-4d8f408d.system.entry.js} +1 -1
  325. package/dist/ionic/{p-44edbb29.system.entry.js → p-509620b8.system.entry.js} +1 -1
  326. package/dist/ionic/{p-797fc793.entry.js → p-5109a566.entry.js} +1 -1
  327. package/dist/ionic/{p-af6c2b39.entry.js → p-52ce473d.entry.js} +1 -1
  328. package/dist/ionic/{p-4ba654fa.system.entry.js → p-57bc32e2.system.entry.js} +1 -1
  329. package/dist/ionic/p-5dc9f99a.entry.js +4 -0
  330. package/dist/ionic/p-5ec3bb70.system.entry.js +4 -0
  331. package/dist/ionic/{p-0300cf19.system.entry.js → p-62e44e4a.system.entry.js} +1 -1
  332. package/dist/ionic/p-66ed603b.js +4 -0
  333. package/dist/ionic/p-68bb9870.system.entry.js +4 -0
  334. package/dist/ionic/{p-2912d62c.system.entry.js → p-6a2cf398.system.entry.js} +1 -1
  335. package/dist/ionic/{p-7f512c4d.system.entry.js → p-6df12af0.system.entry.js} +1 -1
  336. package/dist/ionic/{p-5d723a0a.entry.js → p-6ec88301.entry.js} +1 -1
  337. package/dist/ionic/p-6f008ad2.js +4 -0
  338. package/dist/ionic/{p-86a7576c.system.entry.js → p-700567ab.system.entry.js} +1 -1
  339. package/dist/ionic/p-712d54ae.js +4 -0
  340. package/dist/ionic/{p-508d5d0d.entry.js → p-7349de07.entry.js} +1 -1
  341. package/dist/ionic/{p-3098a7cb.entry.js → p-78405458.entry.js} +1 -1
  342. package/dist/ionic/{p-637e85a2.entry.js → p-80265a58.entry.js} +1 -1
  343. package/dist/ionic/{p-f8b4ac1f.system.entry.js → p-83d748f8.system.entry.js} +2 -2
  344. package/dist/ionic/{p-3b974a28.entry.js → p-8a03fbee.entry.js} +1 -1
  345. package/dist/ionic/{p-a23a7b64.system.entry.js → p-8cb80f83.system.entry.js} +1 -1
  346. package/dist/ionic/{p-bae97f84.system.entry.js → p-8d14ee8c.system.entry.js} +2 -2
  347. package/dist/ionic/{p-61d8c43c.system.entry.js → p-9213681c.system.entry.js} +1 -1
  348. package/dist/ionic/p-92d7e99d.system.js +4 -0
  349. package/dist/ionic/{p-e1f7425b.system.entry.js → p-9664a1a2.system.entry.js} +1 -1
  350. package/dist/ionic/{p-762156c0.entry.js → p-9797f6eb.entry.js} +1 -1
  351. package/dist/ionic/{p-dba28cb1.system.entry.js → p-9848d7be.system.entry.js} +1 -1
  352. package/dist/ionic/{p-5b183a1c.entry.js → p-99884813.entry.js} +1 -1
  353. package/dist/ionic/{p-a87cdd33.system.entry.js → p-99ca9787.system.entry.js} +1 -1
  354. package/dist/ionic/{p-a51b22fb.system.entry.js → p-9bfd7cda.system.entry.js} +1 -1
  355. package/dist/ionic/p-9c6dcf78.system.entry.js +4 -0
  356. package/dist/ionic/{p-1ae3a136.system.entry.js → p-a2e94ade.system.entry.js} +1 -1
  357. package/dist/ionic/p-a488b7ab.system.js +4 -0
  358. package/dist/ionic/{p-18470679.entry.js → p-a4ab7449.entry.js} +1 -1
  359. package/dist/ionic/{p-5d26afde.system.entry.js → p-a50f23bf.system.entry.js} +2 -2
  360. package/dist/ionic/p-a6a8b478.system.entry.js +4 -0
  361. package/dist/ionic/{p-3a3d5a1a.entry.js → p-aaaaaea1.entry.js} +1 -1
  362. package/dist/ionic/{p-cfbf4588.entry.js → p-b02eda30.entry.js} +1 -1
  363. package/dist/ionic/{p-8162bcf4.entry.js → p-b04c27d8.entry.js} +1 -1
  364. package/dist/ionic/{p-a822c02f.system.entry.js → p-b07affd5.system.entry.js} +1 -1
  365. package/dist/ionic/{p-15daa308.system.entry.js → p-b28d3ccb.system.entry.js} +2 -2
  366. package/dist/ionic/{p-3fefc7cd.entry.js → p-b563b6ac.entry.js} +1 -1
  367. package/dist/ionic/{p-27206537.system.entry.js → p-b9181033.system.entry.js} +1 -1
  368. package/dist/ionic/{p-6143e16a.entry.js → p-ba70039f.entry.js} +1 -1
  369. package/dist/ionic/{p-74806c03.entry.js → p-bbbe869e.entry.js} +1 -1
  370. package/dist/ionic/p-bd1173d3.entry.js +4 -0
  371. package/dist/ionic/p-c0e9ba51.entry.js +4 -0
  372. package/dist/ionic/p-c5dd0892.system.entry.js +4 -0
  373. package/dist/ionic/p-cec8589b.system.js +4 -0
  374. package/dist/ionic/{p-939dbcc6.system.entry.js → p-d69b26d9.system.entry.js} +1 -1
  375. package/dist/ionic/p-d9f3d68a.entry.js +4 -0
  376. package/dist/ionic/{p-fb088c7d.system.entry.js → p-dc0d9ff5.system.entry.js} +2 -2
  377. package/dist/ionic/{p-53c46dd1.entry.js → p-dc1e363a.entry.js} +1 -1
  378. package/dist/ionic/{p-4c103f8d.system.entry.js → p-e0a8ffd0.system.entry.js} +1 -1
  379. package/dist/ionic/{p-091697a4.system.entry.js → p-e6e197f5.system.entry.js} +1 -1
  380. package/dist/ionic/{p-2d641da7.entry.js → p-e6e88ab9.entry.js} +1 -1
  381. package/dist/ionic/{p-f14daa66.system.js → p-eb3023c9.system.js} +1 -1
  382. package/dist/ionic/p-ecbdbf25.system.entry.js +4 -0
  383. package/dist/ionic/{p-3dd57c9c.system.entry.js → p-ed5aebaa.system.entry.js} +1 -1
  384. package/dist/ionic/p-f0e81ddb.entry.js +4 -0
  385. package/dist/ionic/{p-d979153a.entry.js → p-f357707e.entry.js} +1 -1
  386. package/dist/ionic/{p-430a7e95.entry.js → p-f53bcebd.entry.js} +1 -1
  387. package/dist/ionic/p-f9baf25c.entry.js +4 -0
  388. package/dist/ionic/{p-307c6b05.entry.js → p-fa8f2e62.entry.js} +1 -1
  389. package/dist/ionic/{p-05a8a97d.system.entry.js → p-fb21fd1c.system.entry.js} +1 -1
  390. package/dist/ionic/{p-23610251.entry.js → p-fcecca8f.entry.js} +1 -1
  391. package/dist/types/components/content/content.d.ts +8 -0
  392. package/dist/types/components/input/input.d.ts +4 -0
  393. package/dist/types/components/modal/modal-interface.d.ts +1 -0
  394. package/dist/types/components/modal/modal.d.ts +18 -0
  395. package/dist/types/components/picker-column/picker-column.d.ts +35 -0
  396. package/dist/types/components/popover/popover-interface.d.ts +1 -0
  397. package/dist/types/components/popover/popover.d.ts +18 -0
  398. package/dist/types/components/segment/segment.d.ts +1 -0
  399. package/dist/types/components.d.ts +32 -0
  400. package/dist/types/utils/config.d.ts +9 -0
  401. package/dist/types/utils/focus-controller/index.d.ts +13 -0
  402. package/dist/types/utils/overlays.d.ts +1 -0
  403. package/hydrate/index.js +434 -153
  404. package/package.json +1 -1
  405. package/dist/esm-es5/index-f4460246.js +0 -4
  406. package/dist/esm-es5/ios.transition-72f59adb.js +0 -4
  407. package/dist/esm-es5/md.transition-ef0437fe.js +0 -4
  408. package/dist/ionic/p-00d9d02d.js +0 -4
  409. package/dist/ionic/p-0df52fbc.entry.js +0 -4
  410. package/dist/ionic/p-16b35bc9.system.entry.js +0 -4
  411. package/dist/ionic/p-19d50867.system.entry.js +0 -4
  412. package/dist/ionic/p-3b185894.system.js +0 -4
  413. package/dist/ionic/p-3bece4aa.entry.js +0 -4
  414. package/dist/ionic/p-3ce83c9b.entry.js +0 -4
  415. package/dist/ionic/p-439b8b3c.system.entry.js +0 -4
  416. package/dist/ionic/p-47212f88.system.entry.js +0 -4
  417. package/dist/ionic/p-657157d7.entry.js +0 -4
  418. package/dist/ionic/p-6636ef29.js +0 -4
  419. package/dist/ionic/p-6a5fe8b0.js +0 -4
  420. package/dist/ionic/p-6c64aef2.entry.js +0 -4
  421. package/dist/ionic/p-7f189103.system.entry.js +0 -4
  422. package/dist/ionic/p-99c42ae3.entry.js +0 -4
  423. package/dist/ionic/p-aa71aee7.js +0 -4
  424. package/dist/ionic/p-b4a034c8.system.js +0 -4
  425. package/dist/ionic/p-b6d4e78d.system.entry.js +0 -4
  426. package/dist/ionic/p-b9c741b6.entry.js +0 -4
  427. package/dist/ionic/p-cab332d1.system.js +0 -4
  428. package/dist/ionic/p-cac9bd5d.entry.js +0 -4
  429. package/dist/ionic/p-cc3fc234.entry.js +0 -4
  430. package/dist/ionic/p-d0d2827d.system.entry.js +0 -4
  431. package/dist/ionic/p-d78ce4cc.system.entry.js +0 -4
  432. package/dist/ionic/p-e95ac94c.entry.js +0 -4
  433. package/dist/ionic/p-f2026596.system.js +0 -4
  434. package/dist/ionic/p-f350f4c2.entry.js +0 -4
@@ -364,7 +364,7 @@ const Textarea = /*@__PURE__*/ proxyCustomElement(class Textarea extends HTMLEle
364
364
  * TODO(FW-5592): Remove hasStartEndSlots condition
365
365
  */
366
366
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
367
- return (h(Host, { key: '16eeb87ea5dbac1b37f1a376cd74e6f41af1b5f6', class: createColorClasses(this.color, {
367
+ return (h(Host, { key: '37595a18d77dea1a337ac1c672e5f08a4128111d', class: createColorClasses(this.color, {
368
368
  [mode]: true,
369
369
  'has-value': hasValue,
370
370
  'has-focus': hasFocus,
@@ -373,7 +373,7 @@ const Textarea = /*@__PURE__*/ proxyCustomElement(class Textarea extends HTMLEle
373
373
  [`textarea-shape-${shape}`]: shape !== undefined,
374
374
  [`textarea-label-placement-${labelPlacement}`]: true,
375
375
  'textarea-disabled': disabled,
376
- }) }, h("label", { key: '5f7946957517614b937eb37533a87c124cf3eabb', class: "textarea-wrapper", htmlFor: inputId }, this.renderLabelContainer(), h("div", { key: '4e950025447d83f3ec77b515a2c5cd6511819b7e', class: "textarea-wrapper-inner" }, h("div", { key: 'a508e5879a9f7b3f2a91d5b1851ab990302044fe', class: "start-slot-wrapper" }, h("slot", { key: 'a2b18078c602896be5ae2da71519f534aa24bbc4', name: "start" })), h("div", { key: '5a4d07c72794548d7f0945aebc5bc2c65118cac3', class: "native-wrapper", ref: (el) => (this.textareaWrapper = el) }, h("textarea", Object.assign({ key: 'f13d0e8b96a798d3cec017b2b618e4979555c5ee', class: "native-textarea", ref: (el) => (this.nativeInput = el), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, minLength: this.minlength, maxLength: this.maxlength, name: this.name, placeholder: this.placeholder || '', readOnly: this.readonly, required: this.required, spellcheck: this.spellcheck, cols: this.cols, rows: this.rows, wrap: this.wrap, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeyDown }, this.inheritedAttributes), value)), h("div", { key: '10b8792a1506b41928869a4460b6f780c39947b6', class: "end-slot-wrapper" }, h("slot", { key: '26362017095ffdda6749a19e0152ef4da8759fba', name: "end" }))), shouldRenderHighlight && h("div", { key: '06a6135b05848b3855192f162ec293d9eae6e171', class: "textarea-highlight" })), this.renderBottomContent()));
376
+ }) }, h("label", { key: '67342758743e5a40448a32ff695876d39778621f', class: "textarea-wrapper", htmlFor: inputId }, this.renderLabelContainer(), h("div", { key: 'a994be8264bf5652811cf816d79a04178954e83f', class: "textarea-wrapper-inner" }, h("div", { key: 'e09c93ebcd5b3d227d51e682ca23dfc7fd7027ad', class: "start-slot-wrapper" }, h("slot", { key: 'd39758f21f19ae70aea21e9a9a7b7c20991fe593', name: "start" })), h("div", { key: '6a4e10e53de4bb235ee30def4c9ae5bdee888816', class: "native-wrapper", ref: (el) => (this.textareaWrapper = el) }, h("textarea", Object.assign({ key: '9e254e551f124d972e9bc6b09ef0f2bb55890be5', class: "native-textarea", ref: (el) => (this.nativeInput = el), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, minLength: this.minlength, maxLength: this.maxlength, name: this.name, placeholder: this.placeholder || '', readOnly: this.readonly, required: this.required, spellcheck: this.spellcheck, cols: this.cols, rows: this.rows, wrap: this.wrap, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeyDown }, this.inheritedAttributes), value)), h("div", { key: 'a66aa2d2bc4778a0bec56a8b9ec9052a832eb3b2', class: "end-slot-wrapper" }, h("slot", { key: '8e6a90b4475de32e23afc593da4108610dcca663', name: "end" }))), shouldRenderHighlight && h("div", { key: '6da03205a8daff45581b20f0af3938634a9d5f8c', class: "textarea-highlight" })), this.renderBottomContent()));
377
377
  }
378
378
  get el() { return this; }
379
379
  static get watchers() { return {
@@ -14,7 +14,7 @@ const Thumbnail = /*@__PURE__*/ proxyCustomElement(class Thumbnail extends HTMLE
14
14
  this.__attachShadow();
15
15
  }
16
16
  render() {
17
- return (h(Host, { key: '29ed7678be93e55afad58bd37a61db3a289a5d76', class: getIonMode(this) }, h("slot", { key: 'da1eb174d2544b9d452c98076f6e0abcda60099d' })));
17
+ return (h(Host, { key: 'ea55000055f941b0c79561e8934be6242ec8e114', class: getIonMode(this) }, h("slot", { key: 'a4f934f442797f5c66a77e0ef8920fdd07c204f2' })));
18
18
  }
19
19
  static get style() { return IonThumbnailStyle0; }
20
20
  }, [1, "ion-thumbnail"]);
@@ -38,11 +38,11 @@ const ToolbarTitle = /*@__PURE__*/ proxyCustomElement(class ToolbarTitle extends
38
38
  render() {
39
39
  const mode = getIonMode(this);
40
40
  const size = this.getSize();
41
- return (h(Host, { key: '5cb49f3642fb3c937cdba729ab7d561213d9bce5', class: createColorClasses(this.color, {
41
+ return (h(Host, { key: '5a58dc437a6f4257244bbdd7e9a682a17d8c9a6b', class: createColorClasses(this.color, {
42
42
  [mode]: true,
43
43
  [`title-${size}`]: true,
44
44
  'title-rtl': document.dir === 'rtl',
45
- }) }, h("div", { key: 'f089bf6cff17ab109fec7de8b1bf96bf33bede1f', class: "toolbar-title" }, h("slot", { key: 'ed74c4e77126a309970ff719baa6ebaebb00d2e6' }))));
45
+ }) }, h("div", { key: '58682ea7b8f47a08adfad419b5c76b34784c6501', class: "toolbar-title" }, h("slot", { key: '8a9248534e4c3076f5e2dfda38ef86069796851c' }))));
46
46
  }
47
47
  get el() { return this; }
48
48
  static get watchers() { return {
@@ -828,9 +828,9 @@ const Toast = /*@__PURE__*/ proxyCustomElement(class Toast extends HTMLElement {
828
828
  if (layout === 'stacked' && startButtons.length > 0 && endButtons.length > 0) {
829
829
  printIonWarning('This toast is using start and end buttons with the stacked toast layout. We recommend following the best practice of using either start or end buttons with the stacked toast layout.', el);
830
830
  }
831
- return (h(Host, Object.assign({ key: 'f3555e5e093ce5dc5114df2e7ed298afa79eee02', tabindex: "-1" }, this.htmlAttributes, { style: {
831
+ return (h(Host, Object.assign({ key: 'da148788489146a20b42023fdc6401e53c044767', tabindex: "-1" }, this.htmlAttributes, { style: {
832
832
  zIndex: `${60000 + this.overlayIndex}`,
833
- }, class: createColorClasses(this.color, Object.assign(Object.assign({ [mode]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'toast-translucent': this.translucent })), onIonToastWillDismiss: this.dispatchCancelHandler }), h("div", { key: '3a98853e3b9c4c015a0e4035ad34f7fe02ec3b1c', class: wrapperClass }, h("div", { key: '3c3447ce2a1fd4aecc3f7da1c1bb0c504fb6fcf7', class: "toast-container", part: "container" }, this.renderButtons(startButtons, 'start'), this.icon !== undefined && (h("ion-icon", { key: '40bb8c55ac8bf7ce283bf2cdeb5902e76ad911ca', class: "toast-icon", part: "icon", icon: this.icon, lazy: false, "aria-hidden": "true" })), h("div", { key: 'bfe843cce24b0205cdce48a544b294dcb0946eb4', class: "toast-content", role: "status", "aria-atomic": "true", "aria-live": "polite" }, !revealContentToScreenReader && header !== undefined && this.renderHeader('oldHeader', 'true'), !revealContentToScreenReader && message !== undefined && this.renderToastMessage('oldMessage', 'true'), revealContentToScreenReader && header !== undefined && this.renderHeader('header'), revealContentToScreenReader && message !== undefined && this.renderToastMessage('header')), this.renderButtons(endButtons, 'end')))));
833
+ }, class: createColorClasses(this.color, Object.assign(Object.assign({ [mode]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'toast-translucent': this.translucent })), onIonToastWillDismiss: this.dispatchCancelHandler }), h("div", { key: 'ab0a4d783aa43ba961492b3eb8beb60a38153057', class: wrapperClass }, h("div", { key: '83e49027fd1ca6553d6910ff91befeea43576f3c', class: "toast-container", part: "container" }, this.renderButtons(startButtons, 'start'), this.icon !== undefined && (h("ion-icon", { key: '025cb4b6b170a89548969a25bcce4ab7a3817898', class: "toast-icon", part: "icon", icon: this.icon, lazy: false, "aria-hidden": "true" })), h("div", { key: 'b811b4e1cbc1528c2cfb57898f5615692120f840', class: "toast-content", role: "status", "aria-atomic": "true", "aria-live": "polite" }, !revealContentToScreenReader && header !== undefined && this.renderHeader('oldHeader', 'true'), !revealContentToScreenReader && message !== undefined && this.renderToastMessage('oldMessage', 'true'), revealContentToScreenReader && header !== undefined && this.renderHeader('header'), revealContentToScreenReader && message !== undefined && this.renderToastMessage('header')), this.renderButtons(endButtons, 'end')))));
834
834
  }
835
835
  get el() { return this; }
836
836
  static get watchers() { return {
@@ -161,7 +161,7 @@ const Toggle = /*@__PURE__*/ proxyCustomElement(class Toggle extends HTMLElement
161
161
  const value = this.getValue();
162
162
  const rtl = isRTL(el) ? 'rtl' : 'ltr';
163
163
  renderHiddenInput(true, el, name, checked ? value : '', disabled);
164
- return (h(Host, { key: '9083d3ea92131df1480dfdaacd62037ffd5a69ec', onClick: this.onClick, class: createColorClasses(color, {
164
+ return (h(Host, { key: 'b0d648e071bc8095998b519ce4dcdd0ea91575c0', onClick: this.onClick, class: createColorClasses(color, {
165
165
  [mode]: true,
166
166
  'in-item': hostContext('ion-item', el),
167
167
  'toggle-activated': activated,
@@ -171,10 +171,10 @@ const Toggle = /*@__PURE__*/ proxyCustomElement(class Toggle extends HTMLElement
171
171
  [`toggle-alignment-${alignment}`]: true,
172
172
  [`toggle-label-placement-${labelPlacement}`]: true,
173
173
  [`toggle-${rtl}`]: true,
174
- }) }, h("label", { key: '554e11ac1db370363b251b83e4d57c32a2bd4577', class: "toggle-wrapper" }, h("input", Object.assign({ key: '327540a212dfe686310e8a587fa8c81edfd2e229', type: "checkbox", role: "switch", "aria-checked": `${checked}`, checked: checked, disabled: disabled, id: inputId, onFocus: () => this.onFocus(), onBlur: () => this.onBlur(), ref: (focusEl) => (this.focusEl = focusEl) }, this.inheritedAttributes)), h("div", { key: '9ba185a8afaf65c8ba0d2044b1abfa376aee4db3', class: {
174
+ }) }, h("label", { key: '9a2fe1d16dba66a9dfef450efebf2e5cbe3dcd00', class: "toggle-wrapper" }, h("input", Object.assign({ key: '4358d18cb86da768155c17f9da3aac641296c256', type: "checkbox", role: "switch", "aria-checked": `${checked}`, checked: checked, disabled: disabled, id: inputId, onFocus: () => this.onFocus(), onBlur: () => this.onBlur(), ref: (focusEl) => (this.focusEl = focusEl) }, this.inheritedAttributes)), h("div", { key: '0ec99e452164d7059cc4f93d09e5b918f82c022a', class: {
175
175
  'label-text-wrapper': true,
176
176
  'label-text-wrapper-hidden': !this.hasLabel,
177
- }, part: "label" }, h("slot", { key: '730287f916c13ec437f39f2304a70afa50f41dc7' })), h("div", { key: '0e810cdf6dc7623d4efd2092a642ef12906efcae', class: "native-wrapper" }, this.renderToggleControl()))));
177
+ }, part: "label" }, h("slot", { key: '1c5cbc99905a79e842e9487eb3ca654e1bab3c66' })), h("div", { key: 'ca8196423b429899febd11c7337d768ff05df6f4', class: "native-wrapper" }, this.renderToggleControl()))));
178
178
  }
179
179
  get el() { return this; }
180
180
  static get watchers() { return {
@@ -63,10 +63,10 @@ const Toolbar = /*@__PURE__*/ proxyCustomElement(class Toolbar extends HTMLEleme
63
63
  this.childrenStyles.forEach((value) => {
64
64
  Object.assign(childStyles, value);
65
65
  });
66
- return (h(Host, { key: 'af016bf9981a2d6182783c6643e2d460245ecc2f', class: Object.assign(Object.assign({}, childStyles), createColorClasses(this.color, {
66
+ return (h(Host, { key: '4bb3a55001408a3bdf033af76b9196cb96c07c09', class: Object.assign(Object.assign({}, childStyles), createColorClasses(this.color, {
67
67
  [mode]: true,
68
68
  'in-toolbar': hostContext('ion-toolbar', this.el),
69
- })) }, h("div", { key: '437debb5b7c561b315d887ae8d47186cba5521ce', class: "toolbar-background" }), h("div", { key: '4c2429fa3e8526fedf456e4658be92d5dce8ca34', class: "toolbar-container" }, h("slot", { key: '4c07db12cfc48b4836b566449b854c24db308e3a', name: "start" }), h("slot", { key: '12855ec04622c09cc404f9b4f07f57a73e5770a0', name: "secondary" }), h("div", { key: '56f37d52c91de2b76910defbc9e5b7c1def3861c', class: "toolbar-content" }, h("slot", { key: 'c10ec3fdbea10a6388f4f510d45188f7fda1a371' })), h("slot", { key: 'c8ed49c6888faf35e71f2a8f4f6bf98fb0c34a25', name: "primary" }), h("slot", { key: '0251f3980082a092304f95cbc002bc8c633c5739', name: "end" }))));
69
+ })) }, h("div", { key: '0891db157d6e028c6d03696f13fb510ea91b0296', class: "toolbar-background" }), h("div", { key: '95fbc870d808f74af4bb18cd8f8ec8c7828a9e0b', class: "toolbar-container" }, h("slot", { key: '84d4a9644660fe00ca085055ca8d12f3647531ad', name: "start" }), h("slot", { key: 'fd361dc9c9979f59aed2fedcf94629506fae62b0', name: "secondary" }), h("div", { key: '54d2b28616a4627c55766f66dc453707752758a6', class: "toolbar-content" }, h("slot", { key: '8f65e0830cce7135640b90eb694e282cb7e5efd2' })), h("slot", { key: 'c78be11a207c8674f222543646398636956087e6', name: "primary" }), h("slot", { key: 'ab25e1601ccaa8cb0d81921b849bcb7402aa7826', name: "end" }))));
70
70
  }
71
71
  get el() { return this; }
72
72
  static get style() { return {
@@ -63,13 +63,13 @@ const Label = /*@__PURE__*/ proxyCustomElement(class Label extends HTMLElement {
63
63
  render() {
64
64
  const position = this.position;
65
65
  const mode = getIonMode(this);
66
- return (h(Host, { key: '6353a70565ef6fbbbf4042b000e536c61bcf99a9', class: createColorClasses(this.color, {
66
+ return (h(Host, { key: 'c2c0f388dab910d294efb9fbb409ee4ef829c1ed', class: createColorClasses(this.color, {
67
67
  [mode]: true,
68
68
  'in-item-color': hostContext('ion-item.ion-color', this.el),
69
69
  [`label-${position}`]: position !== undefined,
70
70
  [`label-no-animate`]: this.noAnimate,
71
71
  'label-rtl': document.dir === 'rtl',
72
- }) }, h("slot", { key: '6ef9c2758c0168442aa84941af0a6cec1ef1ec21' })));
72
+ }) }, h("slot", { key: '4de6b69950f417873a13c851018ec31ea2686f0a' })));
73
73
  }
74
74
  get el() { return this; }
75
75
  static get watchers() { return {
@@ -22,10 +22,10 @@ const ListHeader = /*@__PURE__*/ proxyCustomElement(class ListHeader extends HTM
22
22
  render() {
23
23
  const { lines } = this;
24
24
  const mode = getIonMode(this);
25
- return (h(Host, { key: 'fb78bd8601cbd7b90ec84a96e0c8325be1132b1e', class: createColorClasses(this.color, {
25
+ return (h(Host, { key: '7e2e050f13722f2b870a2415d99a9e631e9ca267', class: createColorClasses(this.color, {
26
26
  [mode]: true,
27
27
  [`list-header-lines-${lines}`]: lines !== undefined,
28
- }) }, h("div", { key: '2580ad49f3a54973e15f14d645a1e55a6fa066ac', class: "list-header-inner" }, h("slot", { key: '677b2e2ec8eeb3ae6ad329e86c76451cf3ae6c2f' }))));
28
+ }) }, h("div", { key: '6117bebc45800d874e9b75355476fbced5cc8398', class: "list-header-inner" }, h("slot", { key: '9165fb274cd2c45a5a65c271d8b1f30e8a00c890' }))));
29
29
  }
30
30
  static get style() { return {
31
31
  ios: IonListHeaderIosStyle0,
@@ -33,7 +33,7 @@ const List = /*@__PURE__*/ proxyCustomElement(class List extends HTMLElement {
33
33
  render() {
34
34
  const mode = getIonMode(this);
35
35
  const { lines, inset } = this;
36
- return (h(Host, { key: '5ff2b0b3989cc99ce17abb8bcd7ec1847940d1ec', role: "list", class: {
36
+ return (h(Host, { key: '8bde220025a7eeca6da075379c6487c4c9bdddc1', role: "list", class: {
37
37
  [mode]: true,
38
38
  // Used internally for styling
39
39
  [`list-${mode}`]: true,
@@ -225,7 +225,7 @@ const trapKeyboardFocus = (ev, doc) => {
225
225
  * behind the sheet should be focusable until
226
226
  * the backdrop is enabled.
227
227
  */
228
- if (lastOverlay.classList.contains('ion-disable-focus-trap')) {
228
+ if (lastOverlay.classList.contains(FOCUS_TRAP_DISABLE_CLASS)) {
229
229
  return;
230
230
  }
231
231
  const trapScopedFocus = () => {
@@ -900,5 +900,6 @@ const revealOverlaysToScreenReaders = () => {
900
900
  }
901
901
  }
902
902
  };
903
+ const FOCUS_TRAP_DISABLE_CLASS = 'ion-disable-focus-trap';
903
904
 
904
- export { BACKDROP as B, GESTURE as G, OVERLAY_GESTURE_PRIORITY as O, alertController as a, actionSheetController as b, popoverController as c, createDelegateController as d, createTriggerController as e, present as f, dismiss as g, eventMethod as h, isCancel as i, prepareOverlay as j, setOverlayId as k, loadingController as l, modalController as m, focusFirstDescendant as n, getPresentedOverlay as o, pickerController as p, focusLastDescendant as q, safeCall as s, toastController as t };
905
+ export { BACKDROP as B, FOCUS_TRAP_DISABLE_CLASS as F, GESTURE as G, OVERLAY_GESTURE_PRIORITY as O, alertController as a, actionSheetController as b, popoverController as c, createDelegateController as d, createTriggerController as e, present as f, dismiss as g, eventMethod as h, isCancel as i, prepareOverlay as j, setOverlayId as k, loadingController as l, modalController as m, focusFirstDescendant as n, getPresentedOverlay as o, pickerController as p, focusLastDescendant as q, safeCall as s, toastController as t };
@@ -86,10 +86,10 @@ const PickerColumnOption = /*@__PURE__*/ proxyCustomElement(class PickerColumnOp
86
86
  render() {
87
87
  const { color, disabled, ariaLabel } = this;
88
88
  const mode = getIonMode(this);
89
- return (h(Host, { key: 'c743c6ef44bb9f765cc15b3b5d2864de6520203a', class: createColorClasses(color, {
89
+ return (h(Host, { key: 'cc4435a0ce0e55be1321bcabaf342ed68cf5ba1e', class: createColorClasses(color, {
90
90
  [mode]: true,
91
91
  ['option-disabled']: disabled,
92
- }) }, h("button", { key: '4c3d9eb245c52b2c007f727e145cfb55759bd7a9', tabindex: "-1", "aria-label": ariaLabel, disabled: disabled, onClick: () => this.onClick() }, h("slot", { key: '4c907d2187cbe9d5941e27f2b12578e2b7271461' }))));
92
+ }) }, h("button", { key: '0187fb967771e0787807a8538dce4e59f6a98565', tabindex: "-1", "aria-label": ariaLabel, disabled: disabled, onClick: () => this.onClick() }, h("slot", { key: 'dbe52552f3f27332816748c12d929cc81060841d' }))));
93
93
  }
94
94
  get el() { return this; }
95
95
  static get watchers() { return {
@@ -8,7 +8,7 @@ import { a as hapticSelectionStart, b as hapticSelectionChanged, h as hapticSele
8
8
  import { a as isPlatform, b as getIonMode } from './ionic-global.js';
9
9
  import { c as createColorClasses } from './theme.js';
10
10
 
11
- 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)}}";
11
+ 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)}}";
12
12
  const IonPickerColumnStyle0 = pickerColumnCss;
13
13
 
14
14
  const PickerColumn = /*@__PURE__*/ proxyCustomElement(class PickerColumn extends HTMLElement {
@@ -20,6 +20,7 @@ const PickerColumn = /*@__PURE__*/ proxyCustomElement(class PickerColumn extends
20
20
  this.isScrolling = false;
21
21
  this.isColumnVisible = false;
22
22
  this.canExitInputMode = true;
23
+ this.updateValueTextOnScroll = false;
23
24
  this.centerPickerItemInView = (target, smooth = true, canExitInputMode = true) => {
24
25
  const { isColumnVisible, scrollEl } = this;
25
26
  if (isColumnVisible && scrollEl) {
@@ -34,6 +35,7 @@ const PickerColumn = /*@__PURE__*/ proxyCustomElement(class PickerColumn extends
34
35
  * of these can cause a scroll to occur.
35
36
  */
36
37
  this.canExitInputMode = canExitInputMode;
38
+ this.updateValueTextOnScroll = false;
37
39
  scrollEl.scroll({
38
40
  top,
39
41
  left: 0,
@@ -106,6 +108,7 @@ const PickerColumn = /*@__PURE__*/ proxyCustomElement(class PickerColumn extends
106
108
  let activeEl = this.activeItem;
107
109
  const scrollCallback = () => {
108
110
  raf(() => {
111
+ var _a;
109
112
  if (!scrollEl)
110
113
  return;
111
114
  if (timeout) {
@@ -186,8 +189,23 @@ const PickerColumn = /*@__PURE__*/ proxyCustomElement(class PickerColumn extends
186
189
  }
187
190
  activeEl = newActiveElement;
188
191
  this.setPickerItemActiveState(newActiveElement, true);
192
+ /**
193
+ * Set the aria-valuetext even though the value prop has not been updated yet.
194
+ * This enables some screen readers to announce the value as the users drag
195
+ * as opposed to when their release their pointer from the screen.
196
+ *
197
+ * When the value is programmatically updated, we will smoothly scroll
198
+ * to the new option. However, we do not want to update aria-valuetext mid-scroll
199
+ * as that can cause the old value to be briefly set before being set to the
200
+ * correct option. This will cause some screen readers to announce the old value
201
+ * again before announcing the new value. The correct valuetext will be set on render.
202
+ */
203
+ if (this.updateValueTextOnScroll) {
204
+ (_a = this.assistiveFocusable) === null || _a === void 0 ? void 0 : _a.setAttribute('aria-valuetext', this.getOptionValueText(newActiveElement));
205
+ }
189
206
  timeout = setTimeout(() => {
190
207
  this.isScrolling = false;
208
+ this.updateValueTextOnScroll = true;
191
209
  enableHaptics && hapticSelectionEnd();
192
210
  /**
193
211
  * Certain tasks (such as those that
@@ -246,12 +264,139 @@ const PickerColumn = /*@__PURE__*/ proxyCustomElement(class PickerColumn extends
246
264
  */
247
265
  this.el.classList.remove('picker-column-active');
248
266
  };
267
+ /**
268
+ * Find the next enabled option after the active option.
269
+ * @param stride - How many options to "jump" over in order to select the next option.
270
+ * This can be used to implement PageUp/PageDown behaviors where pressing these keys
271
+ * scrolls the picker by more than 1 option. For example, a stride of 5 means select
272
+ * the enabled option 5 options after the active one. Note that the actual option selected
273
+ * may be past the stride if the option at the stride is disabled.
274
+ */
275
+ this.findNextOption = (stride = 1) => {
276
+ const { activeItem } = this;
277
+ if (!activeItem)
278
+ return null;
279
+ let prevNode = activeItem;
280
+ let node = activeItem.nextElementSibling;
281
+ while (node != null) {
282
+ if (stride > 0) {
283
+ stride--;
284
+ }
285
+ if (node.tagName === 'ION-PICKER-COLUMN-OPTION' && !node.disabled && stride === 0) {
286
+ return node;
287
+ }
288
+ prevNode = node;
289
+ // Use nextElementSibling instead of nextSibling to avoid text/comment nodes
290
+ node = node.nextElementSibling;
291
+ }
292
+ return prevNode;
293
+ };
294
+ /**
295
+ * Find the next enabled option after the active option.
296
+ * @param stride - How many options to "jump" over in order to select the next option.
297
+ * This can be used to implement PageUp/PageDown behaviors where pressing these keys
298
+ * scrolls the picker by more than 1 option. For example, a stride of 5 means select
299
+ * the enabled option 5 options before the active one. Note that the actual option selected
300
+ * may be past the stride if the option at the stride is disabled.
301
+ */
302
+ this.findPreviousOption = (stride = 1) => {
303
+ const { activeItem } = this;
304
+ if (!activeItem)
305
+ return null;
306
+ let nextNode = activeItem;
307
+ let node = activeItem.previousElementSibling;
308
+ while (node != null) {
309
+ if (stride > 0) {
310
+ stride--;
311
+ }
312
+ if (node.tagName === 'ION-PICKER-COLUMN-OPTION' && !node.disabled && stride === 0) {
313
+ return node;
314
+ }
315
+ nextNode = node;
316
+ // Use previousElementSibling instead of previousSibling to avoid text/comment nodes
317
+ node = node.previousElementSibling;
318
+ }
319
+ return nextNode;
320
+ };
321
+ this.onKeyDown = (ev) => {
322
+ /**
323
+ * The below operations should be inverted when running on a mobile device.
324
+ * For example, swiping up will dispatch an "ArrowUp" event. On desktop,
325
+ * this should cause the previous option to be selected. On mobile, swiping
326
+ * up causes a view to scroll down. As a result, swiping up on mobile should
327
+ * cause the next option to be selected. The Home/End operations remain
328
+ * unchanged because those always represent the first/last options, respectively.
329
+ */
330
+ const mobile = isPlatform('mobile');
331
+ let newOption = null;
332
+ switch (ev.key) {
333
+ case 'ArrowDown':
334
+ newOption = mobile ? this.findPreviousOption() : this.findNextOption();
335
+ break;
336
+ case 'ArrowUp':
337
+ newOption = mobile ? this.findNextOption() : this.findPreviousOption();
338
+ break;
339
+ case 'PageUp':
340
+ newOption = mobile ? this.findNextOption(5) : this.findPreviousOption(5);
341
+ break;
342
+ case 'PageDown':
343
+ newOption = mobile ? this.findPreviousOption(5) : this.findNextOption(5);
344
+ break;
345
+ case 'Home':
346
+ /**
347
+ * There is no guarantee that the first child will be an ion-picker-column-option,
348
+ * so we do not use firstElementChild.
349
+ */
350
+ newOption = this.el.querySelector('ion-picker-column-option:first-of-type');
351
+ break;
352
+ case 'End':
353
+ /**
354
+ * There is no guarantee that the last child will be an ion-picker-column-option,
355
+ * so we do not use lastElementChild.
356
+ */
357
+ newOption = this.el.querySelector('ion-picker-column-option:last-of-type');
358
+ break;
359
+ }
360
+ if (newOption !== null) {
361
+ this.value = newOption.value;
362
+ // This stops any default browser behavior such as scrolling
363
+ ev.preventDefault();
364
+ }
365
+ };
366
+ /**
367
+ * Utility to generate the correct text for aria-valuetext.
368
+ */
369
+ this.getOptionValueText = (el) => {
370
+ var _a;
371
+ return el ? (_a = el.getAttribute('aria-label')) !== null && _a !== void 0 ? _a : el.innerText : '';
372
+ };
373
+ /**
374
+ * Render an element that overlays the column. This element is for assistive
375
+ * tech to allow users to navigate the column up/down. This element should receive
376
+ * focus as it listens for synthesized keyboard events as required by the
377
+ * slider role: https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/slider_role
378
+ */
379
+ this.renderAssistiveFocusable = () => {
380
+ const { activeItem } = this;
381
+ const valueText = this.getOptionValueText(activeItem);
382
+ /**
383
+ * When using the picker, the valuetext provides important context that valuenow
384
+ * does not. Additionally, using non-zero valuemin/valuemax values can cause
385
+ * WebKit to incorrectly announce numeric valuetext values (such as a year
386
+ * like "2024") as percentages: https://bugs.webkit.org/show_bug.cgi?id=273126
387
+ */
388
+ return (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) }));
389
+ };
390
+ this.ariaLabel = null;
249
391
  this.isActive = false;
250
392
  this.disabled = false;
251
393
  this.value = undefined;
252
394
  this.color = 'primary';
253
395
  this.numericInput = false;
254
396
  }
397
+ ariaLabelChanged(newValue) {
398
+ this.ariaLabel = newValue;
399
+ }
255
400
  valueChange() {
256
401
  if (this.isColumnVisible) {
257
402
  /**
@@ -367,6 +512,10 @@ const PickerColumn = /*@__PURE__*/ proxyCustomElement(class PickerColumn extends
367
512
  this.scrollEl.focus();
368
513
  }
369
514
  }
515
+ connectedCallback() {
516
+ var _a;
517
+ this.ariaLabel = (_a = this.el.getAttribute('aria-label')) !== null && _a !== void 0 ? _a : 'Select a value';
518
+ }
370
519
  get activeItem() {
371
520
  const { value } = this;
372
521
  const options = Array.from(this.el.querySelectorAll('ion-picker-column-option'));
@@ -384,17 +533,18 @@ const PickerColumn = /*@__PURE__*/ proxyCustomElement(class PickerColumn extends
384
533
  render() {
385
534
  const { color, disabled, isActive, numericInput } = this;
386
535
  const mode = getIonMode(this);
387
- return (h(Host, { key: '54d3ea9f92136ac446a6c0a2b1389d93c5ff31ee', class: createColorClasses(color, {
536
+ return (h(Host, { key: 'ced35afc6326a20dbac68193921a807a9c10bb99', class: createColorClasses(color, {
388
537
  [mode]: true,
389
538
  ['picker-column-active']: isActive,
390
539
  ['picker-column-numeric-input']: numericInput,
391
540
  ['picker-column-disabled']: disabled,
392
- }) }, h("slot", { key: '969279123f09d37a28aa726936c9f484b0de33e4', name: "prefix" }), h("div", { key: 'd4d09a561213c408cf1c42a28cdef37f14367724', class: "picker-opts", tabindex: disabled ? undefined : 0, ref: (el) => {
541
+ }) }, this.renderAssistiveFocusable(), h("slot", { key: '41e290dcc44dacb4237eb674ce2dedc7db66eb7d', name: "prefix" }), h("div", { key: '1fd869b063900103deadefc40929a1e8f02ec084', "aria-hidden": "true", class: "picker-opts", ref: (el) => {
393
542
  this.scrollEl = el;
394
- } }, h("div", { key: '3710d8980682c819be33eeb6611a5c707b0e6a29', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: '65b7d8d523db669a2df107ae7aaacf62daf13232', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: '694657e475edcdbc93561e826e0db016738f119d', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("slot", { key: 'ecbbd8db6ffdd8d8506a16d94f001d434f4daf97' }), h("div", { key: 'e19a7f7e5e4aeb7d52339e962314d68c31c6337b', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: '103e6a5863efc526de3ea35c63230cc37e487594', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: 'c9e2313ae630ec0b39cbc92d5261fc194dc22a5f', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0")), h("slot", { key: '1537926d9ed8d4251ded95dcb249197491fc2616', name: "suffix" })));
543
+ } }, h("div", { key: '0d2087f775b240c9b2534650eb27f3d99e7690a9', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: '1245b2bb2b6314c3ec4e0ab3ece4e42beb360fc9', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: '503b08f6bbe27fa7d34c165a93ec38ce7f1ad590', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("slot", { key: 'ec401a2b2d56546fb3f10239b71320ce7dc6a77d' }), h("div", { key: '97a234018291c5a6ca7a56bb1a9a417cac0b3e6f', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: '0197711f71486a8fa3c184b593cebe1c1e54c585', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: '961304f0a2a10afb3502ce4c5fbdceef0aa933cf', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0")), h("slot", { key: 'f38b83d26c3c2ba8ef00da7caf7f0be518b2007d', name: "suffix" })));
395
544
  }
396
545
  get el() { return this; }
397
546
  static get watchers() { return {
547
+ "aria-label": ["ariaLabelChanged"],
398
548
  "value": ["valueChange"]
399
549
  }; }
400
550
  static get style() { return IonPickerColumnStyle0; }
@@ -403,11 +553,13 @@ const PickerColumn = /*@__PURE__*/ proxyCustomElement(class PickerColumn extends
403
553
  "value": [1032],
404
554
  "color": [513],
405
555
  "numericInput": [4, "numeric-input"],
556
+ "ariaLabel": [32],
406
557
  "isActive": [32],
407
558
  "scrollActiveItemIntoView": [64],
408
559
  "setValue": [64],
409
560
  "setFocus": [64]
410
561
  }, undefined, {
562
+ "aria-label": ["ariaLabelChanged"],
411
563
  "value": ["valueChange"]
412
564
  }]);
413
565
  const PICKER_ITEM_ACTIVE_CLASS = 'option-active';
@@ -343,9 +343,9 @@ const PickerColumnCmp = /*@__PURE__*/ proxyCustomElement(class PickerColumnCmp e
343
343
  render() {
344
344
  const col = this.col;
345
345
  const mode = getIonMode(this);
346
- return (h(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' }, getClassMap(col.cssClass)), style: {
346
+ return (h(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' }, getClassMap(col.cssClass)), style: {
347
347
  'max-width': this.col.columnWidth,
348
- } }, col.prefix && (h("div", { key: 'f9de3fe2f5c7ad3256d6e5f44b6d03a2b1f96ffb', class: "picker-prefix", style: { width: col.prefixWidth } }, col.prefix)), h("div", { key: '10f9c12aa174f96c7cf9adc30efbb26695c0aa64', class: "picker-opts", style: { maxWidth: col.optionsWidth }, ref: (el) => (this.optsEl = el) }, col.options.map((o, index) => (h("button", { "aria-label": o.ariaLabel, class: { 'picker-opt': true, 'picker-opt-disabled': !!o.disabled }, "opt-index": index }, o.text)))), col.suffix && (h("div", { key: '1d9c0892ce56e0da9044c79eb953827166f5190b', class: "picker-suffix", style: { width: col.suffixWidth } }, col.suffix))));
348
+ } }, col.prefix && (h("div", { key: 'd21f44667b5df567d6879723fe643ea7c2c60bef', class: "picker-prefix", style: { width: col.prefixWidth } }, col.prefix)), h("div", { key: 'bb427e5f24fd832703926e0e847ad05567597262', class: "picker-opts", style: { maxWidth: col.optionsWidth }, ref: (el) => (this.optsEl = el) }, col.options.map((o, index) => (h("button", { "aria-label": o.ariaLabel, class: { 'picker-opt': true, 'picker-opt-disabled': !!o.disabled }, "opt-index": index }, o.text)))), col.suffix && (h("div", { key: '0413f7c074b6534b8967387ecb9957a79a267aff', class: "picker-suffix", style: { width: col.suffixWidth } }, col.suffix))));
349
349
  }
350
350
  get el() { return this; }
351
351
  static get watchers() { return {
@@ -482,7 +482,7 @@ const Picker = /*@__PURE__*/ proxyCustomElement(class Picker extends HTMLElement
482
482
  this.emitInputModeChange();
483
483
  }
484
484
  render() {
485
- return (h(Host, { key: 'f92214a09dc85b65873676f40fde2b802960e704', onPointerDown: (ev) => this.onPointerDown(ev), onClick: () => this.onClick() }, h("input", { key: '6da37f75aca4ea1c9cb3bc733ebda2116279f313', "aria-hidden": "true", tabindex: -1, inputmode: "numeric", type: "number", onKeyDown: (ev) => {
485
+ return (h(Host, { key: '02b0687b1f80ba295a965dfba76dd59e2d1de5d3', onPointerDown: (ev) => this.onPointerDown(ev), onClick: () => this.onClick() }, h("input", { key: 'f83ed84bcf9e02539c00d8a4e63e6a0d7fc4ac71', "aria-hidden": "true", tabindex: -1, inputmode: "numeric", type: "number", onKeyDown: (ev) => {
486
486
  var _a;
487
487
  /**
488
488
  * The "Enter" key represents
@@ -497,7 +497,7 @@ const Picker = /*@__PURE__*/ proxyCustomElement(class Picker extends HTMLElement
497
497
  if (ev.key === 'Enter') {
498
498
  (_a = this.inputEl) === null || _a === void 0 ? void 0 : _a.blur();
499
499
  }
500
- }, ref: (el) => (this.inputEl = el), onInput: () => this.onInputChange(), onBlur: () => this.exitInputMode() }), h("div", { key: '298e99d83dd3f5bf2798150bab0bb4024af472fa', class: "picker-before" }), h("div", { key: 'ea578f04eb562a4dc6d6cc92de133dcb9fb7f42a', class: "picker-after" }), h("div", { key: '84567824956dfe967992a629904836ba8b75b3ec', class: "picker-highlight", ref: (el) => (this.highlightEl = el) }), h("slot", { key: 'df81f8fb90e1f649b608328034528f5c31c70c3b' })));
500
+ }, ref: (el) => (this.inputEl = el), onInput: () => this.onInputChange(), onBlur: () => this.exitInputMode() }), h("div", { key: '45b07fb0617d8e006712776bf78302288edb3ff4', class: "picker-before" }), h("div", { key: '73009229368e0d62b09c913aacade26f068a7aa9', class: "picker-after" }), h("div", { key: 'b73da00e446cd1cfd511c39212e14a00d355752e', class: "picker-highlight", ref: (el) => (this.highlightEl = el) }), h("slot", { key: 'd969f5efc5ddb9eda6c4828702efd1ceeb69f767' })));
501
501
  }
502
502
  get el() { return this; }
503
503
  static get style() { return {
@@ -2,7 +2,7 @@
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
4
  import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
5
- import { B as BACKDROP, j as prepareOverlay, k as setOverlayId, f as present, n as focusFirstDescendant, g as dismiss, h as eventMethod } from './overlays.js';
5
+ import { B as BACKDROP, j as prepareOverlay, k as setOverlayId, f as present, n as focusFirstDescendant, g as dismiss, h as eventMethod, F as FOCUS_TRAP_DISABLE_CLASS } from './overlays.js';
6
6
  import { C as CoreDelegate, a as attachComponent, d as detachComponent } from './framework-delegate.js';
7
7
  import { r as raf, g as getElementRoot, a as addEventListener, j as hasLazyBuild } from './helpers.js';
8
8
  import { c as createLockController } from './lock-controller.js';
@@ -1063,6 +1063,7 @@ const Popover = /*@__PURE__*/ proxyCustomElement(class Popover extends HTMLEleme
1063
1063
  this.arrow = true;
1064
1064
  this.isOpen = false;
1065
1065
  this.keyboardEvents = false;
1066
+ this.focusTrap = true;
1066
1067
  this.keepContentsMounted = false;
1067
1068
  }
1068
1069
  onTriggerChange() {
@@ -1289,12 +1290,12 @@ const Popover = /*@__PURE__*/ proxyCustomElement(class Popover extends HTMLEleme
1289
1290
  }
1290
1291
  render() {
1291
1292
  const mode = getIonMode(this);
1292
- const { onLifecycle, parentPopover, dismissOnSelect, side, arrow, htmlAttributes } = this;
1293
+ const { onLifecycle, parentPopover, dismissOnSelect, side, arrow, htmlAttributes, focusTrap } = this;
1293
1294
  const desktop = isPlatform('desktop');
1294
1295
  const enableArrow = arrow && !parentPopover;
1295
- return (h(Host, Object.assign({ key: '4bccccf57df72e1196c6a28e803831c0520aef53', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
1296
+ return (h(Host, Object.assign({ key: '17e5e8b3e7ba5e251665fb9d0ade10c781f82f0e', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
1296
1297
  zIndex: `${20000 + this.overlayIndex}`,
1297
- }, class: Object.assign(Object.assign({}, 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 && h("ion-backdrop", { key: 'e42f4f61150b7b41093d37d187d1b7bb4187a00e', tappable: this.backdropDismiss, visible: this.showBackdrop, part: "backdrop" }), h("div", { key: '386ac3247b0f82566aae07b6dbf5e97d243ce367', class: "popover-wrapper ion-overlay-wrapper", onClick: dismissOnSelect ? () => this.dismiss() : undefined }, enableArrow && h("div", { key: '28f0e5ea2fa099b808ffb77a9a0d78b8b46c1513', class: "popover-arrow", part: "arrow" }), h("div", { key: '7ba2e3dee529015c4e07ce78ec10dc59985ec6a2', class: "popover-content", part: "content" }, h("slot", { key: '915cdc8e389fda210f83aec8b7bbbfa6f830a884' })))));
1298
+ }, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'popover-translucent': this.translucent, 'overlay-hidden': true, 'popover-desktop': desktop, [`popover-side-${side}`]: true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false, 'popover-nested': !!parentPopover }), onIonPopoverDidPresent: onLifecycle, onIonPopoverWillPresent: onLifecycle, onIonPopoverWillDismiss: onLifecycle, onIonPopoverDidDismiss: onLifecycle, onIonBackdropTap: this.onBackdropTap }), !parentPopover && h("ion-backdrop", { key: 'c12fb94b375d7e88a0c5d715440c0f66ad7ee817', tappable: this.backdropDismiss, visible: this.showBackdrop, part: "backdrop" }), h("div", { key: '478b388cc9a5a382003a2863e968e77a174914ab', class: "popover-wrapper ion-overlay-wrapper", onClick: dismissOnSelect ? () => this.dismiss() : undefined }, enableArrow && h("div", { key: 'f1c63a0079f197a8d4577e7c00a654871fb9d816', class: "popover-arrow", part: "arrow" }), h("div", { key: '08b62a321c09ad4b0f90460468ecbc1d56320bf1', class: "popover-content", part: "content" }, h("slot", { key: '55645ff597f64d434219caa28015cf2a4ceb0ee5' })))));
1298
1299
  }
1299
1300
  get el() { return this; }
1300
1301
  static get watchers() { return {
@@ -1332,6 +1333,7 @@ const Popover = /*@__PURE__*/ proxyCustomElement(class Popover extends HTMLEleme
1332
1333
  "arrow": [4],
1333
1334
  "isOpen": [4, "is-open"],
1334
1335
  "keyboardEvents": [4, "keyboard-events"],
1336
+ "focusTrap": [4, "focus-trap"],
1335
1337
  "keepContentsMounted": [4, "keep-contents-mounted"],
1336
1338
  "presented": [32],
1337
1339
  "presentFromTrigger": [64],
@@ -158,7 +158,7 @@ const RadioGroup = /*@__PURE__*/ proxyCustomElement(class RadioGroup extends HTM
158
158
  const { label, labelId, el, name, value } = this;
159
159
  const mode = getIonMode(this);
160
160
  renderHiddenInput(true, el, name, value, false);
161
- return h(Host, { key: '672d1df4a5d2fd22415e8772b054313907aba8f6', role: "radiogroup", "aria-labelledby": label ? labelId : null, onClick: this.onClick, class: mode });
161
+ return h(Host, { key: '7a8ad7eb6a05c6f96a348dcf30fd0c610a95688c', role: "radiogroup", "aria-labelledby": label ? labelId : null, onClick: this.onClick, class: mode });
162
162
  }
163
163
  get el() { return this; }
164
164
  static get watchers() { return {
@@ -146,7 +146,7 @@ const Radio = /*@__PURE__*/ proxyCustomElement(class Radio extends HTMLElement {
146
146
  const { checked, disabled, color, el, justify, labelPlacement, hasLabel, buttonTabindex, alignment } = this;
147
147
  const mode = getIonMode(this);
148
148
  const inItem = hostContext('ion-item', el);
149
- return (h(Host, { key: 'cb00934d052260e97462e97a1669045cbb0b963a', onFocus: this.onFocus, onBlur: this.onBlur, onClick: this.onClick, class: createColorClasses(color, {
149
+ return (h(Host, { key: 'e44cade8aa8415bdc825f9d17fc8562487cf5d35', onFocus: this.onFocus, onBlur: this.onBlur, onClick: this.onClick, class: createColorClasses(color, {
150
150
  [mode]: true,
151
151
  'in-item': inItem,
152
152
  'radio-checked': checked,
@@ -157,10 +157,10 @@ const Radio = /*@__PURE__*/ proxyCustomElement(class Radio extends HTMLElement {
157
157
  // Focus and active styling should not apply when the radio is in an item
158
158
  'ion-activatable': !inItem,
159
159
  'ion-focusable': !inItem,
160
- }), role: "radio", "aria-checked": checked ? 'true' : 'false', "aria-disabled": disabled ? 'true' : null, tabindex: buttonTabindex }, h("label", { key: '05613f89400469692442bf3c02c27f9299c5d6ef', class: "radio-wrapper" }, h("div", { key: '89b5d7668c3856f417c318629086cf46a072efbe', class: {
160
+ }), role: "radio", "aria-checked": checked ? 'true' : 'false', "aria-disabled": disabled ? 'true' : null, tabindex: buttonTabindex }, h("label", { key: '48a99aa80a7d7b4085ef26faf3167903c975517c', class: "radio-wrapper" }, h("div", { key: 'a8d74e0603b41215ea3e867356a9be0dcf3722d8', class: {
161
161
  'label-text-wrapper': true,
162
162
  'label-text-wrapper-hidden': !hasLabel,
163
- }, part: "label" }, h("slot", { key: 'd5e43a8d0fe5a7fc323887d310fd64d6f87deef7' })), h("div", { key: '7fd221189adcfccca1ed18dcd0a60cde6261120b', class: "native-wrapper" }, this.renderRadioControl()))));
163
+ }, part: "label" }, h("slot", { key: '9e3cce6254e70b02d50381537438a70435b031cc' })), h("div", { key: 'bfa3ee188d911e056a3e60178eac41362efb94b3', class: "native-wrapper" }, this.renderRadioControl()))));
164
164
  }
165
165
  get el() { return this; }
166
166
  static get watchers() { return {
@@ -66,7 +66,7 @@ const RippleEffect = /*@__PURE__*/ proxyCustomElement(class RippleEffect extends
66
66
  }
67
67
  render() {
68
68
  const mode = getIonMode(this);
69
- return (h(Host, { key: '7ae559bda5d2c1856a45bfa150c2cb4f83373f8e', role: "presentation", class: {
69
+ return (h(Host, { key: '2302f087ab1c6755355736e4ca77309c5fdcf185', role: "presentation", class: {
70
70
  [mode]: true,
71
71
  unbounded: this.unbounded,
72
72
  } }));
@@ -117,7 +117,7 @@ const SelectPopover = /*@__PURE__*/ proxyCustomElement(class SelectPopover exten
117
117
  render() {
118
118
  const { header, message, options, subHeader } = this;
119
119
  const hasSubHeaderOrMessage = subHeader !== undefined || message !== undefined;
120
- return (h(Host, { key: '2ed838c17d47198c697164a0a750aafb6ca61a95', class: getIonMode(this) }, h("ion-list", { key: '24fe7a6e9e45458c201b178ca236645d0f49ea8a' }, header !== undefined && h("ion-list-header", { key: 'ebe64853dcd59c14a8f4dc9c2dc9e66d1e9767f6' }, header), hasSubHeaderOrMessage && (h("ion-item", { key: 'ed7c6f2d7e1282b3048df0af8f1e3fd3b08297c6' }, h("ion-label", { key: 'a81f6c4011a0dce47b80c98a45d80b1368d84a1e', class: "ion-text-wrap" }, subHeader !== undefined && h("h3", { key: '4fd72c62da896092d535580917bb8a5ad6609c05' }, subHeader), message !== undefined && h("p", { key: '88aead29b35d69743abe4015f96a6fa9f199a0ff' }, message)))), this.renderOptions(options))));
120
+ return (h(Host, { key: '302553a2eec4d1442751b8af28b7c9bd3487fd5d', class: getIonMode(this) }, h("ion-list", { key: '39ae8579e6fe3bae2c7504147268ad5c82fd27e6' }, header !== undefined && h("ion-list-header", { key: 'e0e6686380d188f46c593e1bb25287dcf08c75c2' }, header), hasSubHeaderOrMessage && (h("ion-item", { key: '8a2d8652db269593c0ba7d767277e12c2b06144d' }, h("ion-label", { key: 'a30cc0ecf95d5bdd6421ee1683922c1b853e98ea', class: "ion-text-wrap" }, subHeader !== undefined && h("h3", { key: 'c298459ca450123808a08d65660825b2c26d00e5' }, subHeader), message !== undefined && h("p", { key: 'ed895fbaec020e809021138401341b6fd7675035' }, message)))), this.renderOptions(options))));
121
121
  }
122
122
  get el() { return this; }
123
123
  static get style() { return {
@@ -185,7 +185,7 @@ const Spinner = /*@__PURE__*/ proxyCustomElement(class Spinner extends HTMLEleme
185
185
  svgs.push(buildLine(spinner, duration, i, spinner.lines));
186
186
  }
187
187
  }
188
- return (h(Host, { key: '9422c25aadfdf08861e26bb1aa336c94391d10a3', class: createColorClasses(self.color, {
188
+ return (h(Host, { key: '50cbaed55eeab15292447d106a80b93db4cb40de', class: createColorClasses(self.color, {
189
189
  [mode]: true,
190
190
  [`spinner-${spinnerName}`]: true,
191
191
  'spinner-paused': self.paused || config.getBoolean('_testing'),