@ionic/core 8.0.2 → 8.1.1-dev.11714676345.1df5b5f8

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 (436) 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 +8 -5
  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 +11 -8
  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 +8 -5
  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 +11 -8
  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-7f512c4d.system.entry.js → p-23fa696f.system.entry.js} +1 -1
  317. package/dist/ionic/{p-32df9442.entry.js → p-29de09dd.entry.js} +1 -1
  318. package/dist/ionic/p-30baae57.system.js +1 -1
  319. package/dist/ionic/p-33e10509.system.js +4 -0
  320. package/dist/ionic/{p-eed23392.system.entry.js → p-380efbfa.system.entry.js} +1 -1
  321. package/dist/ionic/p-3c27be4a.entry.js +4 -0
  322. package/dist/ionic/{p-022bc8ff.entry.js → p-3f53a0b1.entry.js} +1 -1
  323. package/dist/ionic/{p-0ae12601.entry.js → p-433157a4.entry.js} +1 -1
  324. package/dist/ionic/p-498eb648.system.entry.js +4 -0
  325. package/dist/ionic/{p-eaac2522.system.entry.js → p-4d8f408d.system.entry.js} +1 -1
  326. package/dist/ionic/{p-44edbb29.system.entry.js → p-509620b8.system.entry.js} +1 -1
  327. package/dist/ionic/{p-797fc793.entry.js → p-5109a566.entry.js} +1 -1
  328. package/dist/ionic/{p-af6c2b39.entry.js → p-52ce473d.entry.js} +1 -1
  329. package/dist/ionic/{p-4ba654fa.system.entry.js → p-57bc32e2.system.entry.js} +1 -1
  330. package/dist/ionic/p-5dc9f99a.entry.js +4 -0
  331. package/dist/ionic/p-5ec3bb70.system.entry.js +4 -0
  332. package/dist/ionic/{p-0300cf19.system.entry.js → p-62e44e4a.system.entry.js} +1 -1
  333. package/dist/ionic/p-66ed603b.js +4 -0
  334. package/dist/ionic/p-68bb9870.system.entry.js +4 -0
  335. package/dist/ionic/{p-2912d62c.system.entry.js → p-6a2cf398.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-05a8a97d.system.entry.js → p-fb21fd1c.system.entry.js} +1 -1
  389. package/dist/ionic/{p-23610251.entry.js → p-fcecca8f.entry.js} +1 -1
  390. package/dist/ionic/p-ffbf54f0.entry.js +4 -0
  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/select/select.d.ts +2 -1
  400. package/dist/types/components.d.ts +32 -0
  401. package/dist/types/utils/config.d.ts +9 -0
  402. package/dist/types/utils/focus-controller/index.d.ts +13 -0
  403. package/dist/types/utils/overlays.d.ts +1 -0
  404. package/hydrate/index.js +440 -156
  405. package/package.json +1 -1
  406. package/dist/esm-es5/index-f4460246.js +0 -4
  407. package/dist/esm-es5/ios.transition-72f59adb.js +0 -4
  408. package/dist/esm-es5/md.transition-ef0437fe.js +0 -4
  409. package/dist/ionic/p-00d9d02d.js +0 -4
  410. package/dist/ionic/p-0df52fbc.entry.js +0 -4
  411. package/dist/ionic/p-16b35bc9.system.entry.js +0 -4
  412. package/dist/ionic/p-19d50867.system.entry.js +0 -4
  413. package/dist/ionic/p-307c6b05.entry.js +0 -4
  414. package/dist/ionic/p-3b185894.system.js +0 -4
  415. package/dist/ionic/p-3bece4aa.entry.js +0 -4
  416. package/dist/ionic/p-3ce83c9b.entry.js +0 -4
  417. package/dist/ionic/p-439b8b3c.system.entry.js +0 -4
  418. package/dist/ionic/p-47212f88.system.entry.js +0 -4
  419. package/dist/ionic/p-657157d7.entry.js +0 -4
  420. package/dist/ionic/p-6636ef29.js +0 -4
  421. package/dist/ionic/p-6a5fe8b0.js +0 -4
  422. package/dist/ionic/p-6c64aef2.entry.js +0 -4
  423. package/dist/ionic/p-7f189103.system.entry.js +0 -4
  424. package/dist/ionic/p-99c42ae3.entry.js +0 -4
  425. package/dist/ionic/p-aa71aee7.js +0 -4
  426. package/dist/ionic/p-b4a034c8.system.js +0 -4
  427. package/dist/ionic/p-b6d4e78d.system.entry.js +0 -4
  428. package/dist/ionic/p-b9c741b6.entry.js +0 -4
  429. package/dist/ionic/p-cab332d1.system.js +0 -4
  430. package/dist/ionic/p-cac9bd5d.entry.js +0 -4
  431. package/dist/ionic/p-cc3fc234.entry.js +0 -4
  432. package/dist/ionic/p-d0d2827d.system.entry.js +0 -4
  433. package/dist/ionic/p-d78ce4cc.system.entry.js +0 -4
  434. package/dist/ionic/p-e95ac94c.entry.js +0 -4
  435. package/dist/ionic/p-f2026596.system.js +0 -4
  436. package/dist/ionic/p-f350f4c2.entry.js +0 -4
@@ -4,9 +4,10 @@
4
4
  import { r as registerInstance, d as createEvent, h, i as getElement, f as Host } from './index-9aab3bcf.js';
5
5
  import { g as getTimeGivenProgression } from './cubic-bezier-fe2083dc.js';
6
6
  import { m as assert, s as shallowEqualStringMap } from './helpers-da915de8.js';
7
- import { l as lifecycle, t as transition, s as setPageHidden, d as LIFECYCLE_WILL_UNLOAD, b as LIFECYCLE_WILL_LEAVE, c as LIFECYCLE_DID_LEAVE } from './index-f4460246.js';
7
+ import { l as lifecycle, t as transition, s as setPageHidden, d as LIFECYCLE_WILL_UNLOAD, b as LIFECYCLE_WILL_LEAVE, c as LIFECYCLE_DID_LEAVE } from './index-8e6b6a24.js';
8
8
  import { b as getIonMode, c as config } from './ionic-global-4528d288.js';
9
9
  import { a as attachComponent } from './framework-delegate-63d1a679.js';
10
+ import './index-9b0d46f4.js';
10
11
 
11
12
  const VIEW_STATE_NEW = 1;
12
13
  const VIEW_STATE_ATTACHED = 2;
@@ -898,7 +899,7 @@ const Nav = class {
898
899
  }
899
900
  }
900
901
  render() {
901
- return h("slot", { key: 'dfe98cb6604a2015a49f41beffebdd2da957dfff' });
902
+ return h("slot", { key: 'e9d99a8a0b84f02f9964d8143cd5e647e43334f9' });
902
903
  }
903
904
  get el() { return getElement(this); }
904
905
  static get watchers() { return {
@@ -940,7 +941,7 @@ const NavLink = class {
940
941
  this.routerAnimation = undefined;
941
942
  }
942
943
  render() {
943
- return h(Host, { key: 'd2f8545b4fbd5aa25ef36eb01dffbc5d35ccfbb9', onClick: this.onClick });
944
+ return h(Host, { key: '42c23dcdec5fdb25defebaf6e8a9fa75754ff8eb', onClick: this.onClick });
944
945
  }
945
946
  get el() { return getElement(this); }
946
947
  };
@@ -84,10 +84,10 @@ const PickerColumnOption = class {
84
84
  render() {
85
85
  const { color, disabled, ariaLabel } = this;
86
86
  const mode = getIonMode(this);
87
- return (h(Host, { key: 'c743c6ef44bb9f765cc15b3b5d2864de6520203a', class: createColorClasses(color, {
87
+ return (h(Host, { key: 'cc4435a0ce0e55be1321bcabaf342ed68cf5ba1e', class: createColorClasses(color, {
88
88
  [mode]: true,
89
89
  ['option-disabled']: disabled,
90
- }) }, h("button", { key: '4c3d9eb245c52b2c007f727e145cfb55759bd7a9', tabindex: "-1", "aria-label": ariaLabel, disabled: disabled, onClick: () => this.onClick() }, h("slot", { key: '4c907d2187cbe9d5941e27f2b12578e2b7271461' }))));
90
+ }) }, h("button", { key: '0187fb967771e0787807a8538dce4e59f6a98565', tabindex: "-1", "aria-label": ariaLabel, disabled: disabled, onClick: () => this.onClick() }, h("slot", { key: 'dbe52552f3f27332816748c12d929cc81060841d' }))));
91
91
  }
92
92
  get el() { return getElement(this); }
93
93
  static get watchers() { return {
@@ -9,7 +9,7 @@ import { a as isPlatform, b as getIonMode } from './ionic-global-4528d288.js';
9
9
  import { c as createColorClasses } from './theme-01f3f29c.js';
10
10
  import './capacitor-59395cbd.js';
11
11
 
12
- 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)}}";
12
+ 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)}}";
13
13
  const IonPickerColumnStyle0 = pickerColumnCss;
14
14
 
15
15
  const PickerColumn = class {
@@ -19,6 +19,7 @@ const PickerColumn = class {
19
19
  this.isScrolling = false;
20
20
  this.isColumnVisible = false;
21
21
  this.canExitInputMode = true;
22
+ this.updateValueTextOnScroll = false;
22
23
  this.centerPickerItemInView = (target, smooth = true, canExitInputMode = true) => {
23
24
  const { isColumnVisible, scrollEl } = this;
24
25
  if (isColumnVisible && scrollEl) {
@@ -33,6 +34,7 @@ const PickerColumn = class {
33
34
  * of these can cause a scroll to occur.
34
35
  */
35
36
  this.canExitInputMode = canExitInputMode;
37
+ this.updateValueTextOnScroll = false;
36
38
  scrollEl.scroll({
37
39
  top,
38
40
  left: 0,
@@ -105,6 +107,7 @@ const PickerColumn = class {
105
107
  let activeEl = this.activeItem;
106
108
  const scrollCallback = () => {
107
109
  raf(() => {
110
+ var _a;
108
111
  if (!scrollEl)
109
112
  return;
110
113
  if (timeout) {
@@ -185,8 +188,23 @@ const PickerColumn = class {
185
188
  }
186
189
  activeEl = newActiveElement;
187
190
  this.setPickerItemActiveState(newActiveElement, true);
191
+ /**
192
+ * Set the aria-valuetext even though the value prop has not been updated yet.
193
+ * This enables some screen readers to announce the value as the users drag
194
+ * as opposed to when their release their pointer from the screen.
195
+ *
196
+ * When the value is programmatically updated, we will smoothly scroll
197
+ * to the new option. However, we do not want to update aria-valuetext mid-scroll
198
+ * as that can cause the old value to be briefly set before being set to the
199
+ * correct option. This will cause some screen readers to announce the old value
200
+ * again before announcing the new value. The correct valuetext will be set on render.
201
+ */
202
+ if (this.updateValueTextOnScroll) {
203
+ (_a = this.assistiveFocusable) === null || _a === void 0 ? void 0 : _a.setAttribute('aria-valuetext', this.getOptionValueText(newActiveElement));
204
+ }
188
205
  timeout = setTimeout(() => {
189
206
  this.isScrolling = false;
207
+ this.updateValueTextOnScroll = true;
190
208
  enableHaptics && hapticSelectionEnd();
191
209
  /**
192
210
  * Certain tasks (such as those that
@@ -245,12 +263,139 @@ const PickerColumn = class {
245
263
  */
246
264
  this.el.classList.remove('picker-column-active');
247
265
  };
266
+ /**
267
+ * Find the next enabled option after the active option.
268
+ * @param stride - How many options to "jump" over in order to select the next option.
269
+ * This can be used to implement PageUp/PageDown behaviors where pressing these keys
270
+ * scrolls the picker by more than 1 option. For example, a stride of 5 means select
271
+ * the enabled option 5 options after the active one. Note that the actual option selected
272
+ * may be past the stride if the option at the stride is disabled.
273
+ */
274
+ this.findNextOption = (stride = 1) => {
275
+ const { activeItem } = this;
276
+ if (!activeItem)
277
+ return null;
278
+ let prevNode = activeItem;
279
+ let node = activeItem.nextElementSibling;
280
+ while (node != null) {
281
+ if (stride > 0) {
282
+ stride--;
283
+ }
284
+ if (node.tagName === 'ION-PICKER-COLUMN-OPTION' && !node.disabled && stride === 0) {
285
+ return node;
286
+ }
287
+ prevNode = node;
288
+ // Use nextElementSibling instead of nextSibling to avoid text/comment nodes
289
+ node = node.nextElementSibling;
290
+ }
291
+ return prevNode;
292
+ };
293
+ /**
294
+ * Find the next enabled option after the active option.
295
+ * @param stride - How many options to "jump" over in order to select the next option.
296
+ * This can be used to implement PageUp/PageDown behaviors where pressing these keys
297
+ * scrolls the picker by more than 1 option. For example, a stride of 5 means select
298
+ * the enabled option 5 options before the active one. Note that the actual option selected
299
+ * may be past the stride if the option at the stride is disabled.
300
+ */
301
+ this.findPreviousOption = (stride = 1) => {
302
+ const { activeItem } = this;
303
+ if (!activeItem)
304
+ return null;
305
+ let nextNode = activeItem;
306
+ let node = activeItem.previousElementSibling;
307
+ while (node != null) {
308
+ if (stride > 0) {
309
+ stride--;
310
+ }
311
+ if (node.tagName === 'ION-PICKER-COLUMN-OPTION' && !node.disabled && stride === 0) {
312
+ return node;
313
+ }
314
+ nextNode = node;
315
+ // Use previousElementSibling instead of previousSibling to avoid text/comment nodes
316
+ node = node.previousElementSibling;
317
+ }
318
+ return nextNode;
319
+ };
320
+ this.onKeyDown = (ev) => {
321
+ /**
322
+ * The below operations should be inverted when running on a mobile device.
323
+ * For example, swiping up will dispatch an "ArrowUp" event. On desktop,
324
+ * this should cause the previous option to be selected. On mobile, swiping
325
+ * up causes a view to scroll down. As a result, swiping up on mobile should
326
+ * cause the next option to be selected. The Home/End operations remain
327
+ * unchanged because those always represent the first/last options, respectively.
328
+ */
329
+ const mobile = isPlatform('mobile');
330
+ let newOption = null;
331
+ switch (ev.key) {
332
+ case 'ArrowDown':
333
+ newOption = mobile ? this.findPreviousOption() : this.findNextOption();
334
+ break;
335
+ case 'ArrowUp':
336
+ newOption = mobile ? this.findNextOption() : this.findPreviousOption();
337
+ break;
338
+ case 'PageUp':
339
+ newOption = mobile ? this.findNextOption(5) : this.findPreviousOption(5);
340
+ break;
341
+ case 'PageDown':
342
+ newOption = mobile ? this.findPreviousOption(5) : this.findNextOption(5);
343
+ break;
344
+ case 'Home':
345
+ /**
346
+ * There is no guarantee that the first child will be an ion-picker-column-option,
347
+ * so we do not use firstElementChild.
348
+ */
349
+ newOption = this.el.querySelector('ion-picker-column-option:first-of-type');
350
+ break;
351
+ case 'End':
352
+ /**
353
+ * There is no guarantee that the last child will be an ion-picker-column-option,
354
+ * so we do not use lastElementChild.
355
+ */
356
+ newOption = this.el.querySelector('ion-picker-column-option:last-of-type');
357
+ break;
358
+ }
359
+ if (newOption !== null) {
360
+ this.value = newOption.value;
361
+ // This stops any default browser behavior such as scrolling
362
+ ev.preventDefault();
363
+ }
364
+ };
365
+ /**
366
+ * Utility to generate the correct text for aria-valuetext.
367
+ */
368
+ this.getOptionValueText = (el) => {
369
+ var _a;
370
+ return el ? (_a = el.getAttribute('aria-label')) !== null && _a !== void 0 ? _a : el.innerText : '';
371
+ };
372
+ /**
373
+ * Render an element that overlays the column. This element is for assistive
374
+ * tech to allow users to navigate the column up/down. This element should receive
375
+ * focus as it listens for synthesized keyboard events as required by the
376
+ * slider role: https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/slider_role
377
+ */
378
+ this.renderAssistiveFocusable = () => {
379
+ const { activeItem } = this;
380
+ const valueText = this.getOptionValueText(activeItem);
381
+ /**
382
+ * When using the picker, the valuetext provides important context that valuenow
383
+ * does not. Additionally, using non-zero valuemin/valuemax values can cause
384
+ * WebKit to incorrectly announce numeric valuetext values (such as a year
385
+ * like "2024") as percentages: https://bugs.webkit.org/show_bug.cgi?id=273126
386
+ */
387
+ 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) }));
388
+ };
389
+ this.ariaLabel = null;
248
390
  this.isActive = false;
249
391
  this.disabled = false;
250
392
  this.value = undefined;
251
393
  this.color = 'primary';
252
394
  this.numericInput = false;
253
395
  }
396
+ ariaLabelChanged(newValue) {
397
+ this.ariaLabel = newValue;
398
+ }
254
399
  valueChange() {
255
400
  if (this.isColumnVisible) {
256
401
  /**
@@ -366,6 +511,10 @@ const PickerColumn = class {
366
511
  this.scrollEl.focus();
367
512
  }
368
513
  }
514
+ connectedCallback() {
515
+ var _a;
516
+ this.ariaLabel = (_a = this.el.getAttribute('aria-label')) !== null && _a !== void 0 ? _a : 'Select a value';
517
+ }
369
518
  get activeItem() {
370
519
  const { value } = this;
371
520
  const options = Array.from(this.el.querySelectorAll('ion-picker-column-option'));
@@ -383,17 +532,18 @@ const PickerColumn = class {
383
532
  render() {
384
533
  const { color, disabled, isActive, numericInput } = this;
385
534
  const mode = getIonMode(this);
386
- return (h(Host, { key: '54d3ea9f92136ac446a6c0a2b1389d93c5ff31ee', class: createColorClasses(color, {
535
+ return (h(Host, { key: 'ced35afc6326a20dbac68193921a807a9c10bb99', class: createColorClasses(color, {
387
536
  [mode]: true,
388
537
  ['picker-column-active']: isActive,
389
538
  ['picker-column-numeric-input']: numericInput,
390
539
  ['picker-column-disabled']: disabled,
391
- }) }, h("slot", { key: '969279123f09d37a28aa726936c9f484b0de33e4', name: "prefix" }), h("div", { key: 'd4d09a561213c408cf1c42a28cdef37f14367724', class: "picker-opts", tabindex: disabled ? undefined : 0, ref: (el) => {
540
+ }) }, this.renderAssistiveFocusable(), h("slot", { key: '41e290dcc44dacb4237eb674ce2dedc7db66eb7d', name: "prefix" }), h("div", { key: '1fd869b063900103deadefc40929a1e8f02ec084', "aria-hidden": "true", class: "picker-opts", ref: (el) => {
392
541
  this.scrollEl = el;
393
- } }, 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" })));
542
+ } }, 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" })));
394
543
  }
395
544
  get el() { return getElement(this); }
396
545
  static get watchers() { return {
546
+ "aria-label": ["ariaLabelChanged"],
397
547
  "value": ["valueChange"]
398
548
  }; }
399
549
  };
@@ -480,7 +480,7 @@ const Picker = class {
480
480
  this.emitInputModeChange();
481
481
  }
482
482
  render() {
483
- 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) => {
483
+ 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) => {
484
484
  var _a;
485
485
  /**
486
486
  * The "Enter" key represents
@@ -495,7 +495,7 @@ const Picker = class {
495
495
  if (ev.key === 'Enter') {
496
496
  (_a = this.inputEl) === null || _a === void 0 ? void 0 : _a.blur();
497
497
  }
498
- }, 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' })));
498
+ }, 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' })));
499
499
  }
500
500
  get el() { return getElement(this); }
501
501
  };
@@ -2,14 +2,14 @@
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
4
  import { r as registerInstance, d as createEvent, h, f as Host, i as getElement } from './index-9aab3bcf.js';
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-56045efc.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-df2c06b2.js';
6
6
  import { C as CoreDelegate, a as attachComponent, d as detachComponent } from './framework-delegate-63d1a679.js';
7
7
  import { r as raf, g as getElementRoot, a as addEventListener, k as hasLazyBuild } from './helpers-da915de8.js';
8
8
  import { c as createLockController } from './lock-controller-316928be.js';
9
9
  import { p as printIonWarning } from './index-9b0d46f4.js';
10
10
  import { b as getIonMode, a as isPlatform } from './ionic-global-4528d288.js';
11
11
  import { g as getClassMap } from './theme-01f3f29c.js';
12
- import { e as deepReady, w as waitForMount } from './index-f4460246.js';
12
+ import { e as deepReady, w as waitForMount } from './index-8e6b6a24.js';
13
13
  import { c as createAnimation } from './animation-eab5a4ca.js';
14
14
  import './index-a5d50daf.js';
15
15
  import './hardware-back-button-2d9760b6.js';
@@ -1063,6 +1063,7 @@ const Popover = class {
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 = class {
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 getElement(this); }
1300
1301
  static get watchers() { return {
@@ -27,7 +27,7 @@ const ProgressBar = class {
27
27
  const mode = getIonMode(this);
28
28
  // If the progress is displayed as a solid bar.
29
29
  const progressSolid = buffer === 1;
30
- return (h(Host, { key: '8d8ddf0b26fe33803d3a6168cbedd523d1a888e7', role: "progressbar", "aria-valuenow": type === 'determinate' ? value : null, "aria-valuemin": "0", "aria-valuemax": "1", class: createColorClasses(color, {
30
+ return (h(Host, { key: 'b293f4475bcdaa7851b41ebfda659037f0365120', role: "progressbar", "aria-valuenow": type === 'determinate' ? value : null, "aria-valuemin": "0", "aria-valuemax": "1", class: createColorClasses(color, {
31
31
  [mode]: true,
32
32
  [`progress-bar-${type}`]: true,
33
33
  'progress-paused': paused,
@@ -108,7 +108,7 @@ const Radio = class {
108
108
  const { checked, disabled, color, el, justify, labelPlacement, hasLabel, buttonTabindex, alignment } = this;
109
109
  const mode = getIonMode(this);
110
110
  const inItem = hostContext('ion-item', el);
111
- return (h(Host, { key: 'cb00934d052260e97462e97a1669045cbb0b963a', onFocus: this.onFocus, onBlur: this.onBlur, onClick: this.onClick, class: createColorClasses(color, {
111
+ return (h(Host, { key: 'e44cade8aa8415bdc825f9d17fc8562487cf5d35', onFocus: this.onFocus, onBlur: this.onBlur, onClick: this.onClick, class: createColorClasses(color, {
112
112
  [mode]: true,
113
113
  'in-item': inItem,
114
114
  'radio-checked': checked,
@@ -119,10 +119,10 @@ const Radio = class {
119
119
  // Focus and active styling should not apply when the radio is in an item
120
120
  'ion-activatable': !inItem,
121
121
  'ion-focusable': !inItem,
122
- }), 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: {
122
+ }), 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: {
123
123
  'label-text-wrapper': true,
124
124
  'label-text-wrapper-hidden': !hasLabel,
125
- }, part: "label" }, h("slot", { key: 'd5e43a8d0fe5a7fc323887d310fd64d6f87deef7' })), h("div", { key: '7fd221189adcfccca1ed18dcd0a60cde6261120b', class: "native-wrapper" }, this.renderRadioControl()))));
125
+ }, part: "label" }, h("slot", { key: '9e3cce6254e70b02d50381537438a70435b031cc' })), h("div", { key: 'bfa3ee188d911e056a3e60178eac41362efb94b3', class: "native-wrapper" }, this.renderRadioControl()))));
126
126
  }
127
127
  get el() { return getElement(this); }
128
128
  static get watchers() { return {
@@ -287,7 +287,7 @@ const RadioGroup = class {
287
287
  const { label, labelId, el, name, value } = this;
288
288
  const mode = getIonMode(this);
289
289
  renderHiddenInput(true, el, name, value, false);
290
- return h(Host, { key: '672d1df4a5d2fd22415e8772b054313907aba8f6', role: "radiogroup", "aria-labelledby": label ? labelId : null, onClick: this.onClick, class: mode });
290
+ return h(Host, { key: '7a8ad7eb6a05c6f96a348dcf30fd0c610a95688c', role: "radiogroup", "aria-labelledby": label ? labelId : null, onClick: this.onClick, class: mode });
291
291
  }
292
292
  get el() { return getElement(this); }
293
293
  static get watchers() { return {
@@ -600,7 +600,7 @@ const Range = class {
600
600
  const needsEndAdjustment = inItem && !hasEndContent;
601
601
  const mode = getIonMode(this);
602
602
  renderHiddenInput(true, el, this.name, JSON.stringify(this.getValue()), disabled);
603
- return (h(Host, { key: 'f66f03965290003b8a2b74b6f16ebf5615291688', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: createColorClasses(this.color, {
603
+ return (h(Host, { key: '7ad5ca892fd46c64ce5583e91e6812410a869921', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: createColorClasses(this.color, {
604
604
  [mode]: true,
605
605
  'in-item': inItem,
606
606
  'range-disabled': disabled,
@@ -609,10 +609,10 @@ const Range = class {
609
609
  [`range-label-placement-${labelPlacement}`]: true,
610
610
  'range-item-start-adjustment': needsStartAdjustment,
611
611
  'range-item-end-adjustment': needsEndAdjustment,
612
- }) }, h("label", { key: '4b0035999693e241afb753f4c335ec386a2f5a2b', class: "range-wrapper", id: "range-label" }, h("div", { key: 'f03119f14a4c6bb2f6c529e885002df633cd1797', class: {
612
+ }) }, h("label", { key: 'eb8d46a9572341b4cc3c91d8a5de0667bd166ca4', class: "range-wrapper", id: "range-label" }, h("div", { key: '21acd6ff6eba17bf6923bf723fea055b95fd29ca', class: {
613
613
  'label-text-wrapper': true,
614
614
  'label-text-wrapper-hidden': !hasLabel,
615
- }, part: "label" }, label !== undefined ? h("div", { class: "label-text" }, label) : h("slot", { name: "label" })), h("div", { key: '72678b1d17ac2a6dfeee26d40a6a80bcc0e7e2fe', class: "native-wrapper" }, h("slot", { key: 'c555ac9598427b81fddd5415ea673479c2247977', name: "start" }), this.renderRangeSlider(), h("slot", { key: 'bf58ccc934a246b303c766d16df5eeb62c225b12', name: "end" })))));
615
+ }, part: "label" }, label !== undefined ? h("div", { class: "label-text" }, label) : h("slot", { name: "label" })), h("div", { key: '7644c86a6ad3edf2c27f02dd2a14795b3720ea0d', class: "native-wrapper" }, h("slot", { key: '1bbeccee57addc126b36de395e28ba655248695b', name: "start" }), this.renderRangeSlider(), h("slot", { key: '2963dd84e4116fc3956c304eb53deefd0d1291df', name: "end" })))));
616
616
  }
617
617
  get el() { return getElement(this); }
618
618
  static get watchers() { return {
@@ -796,7 +796,7 @@ const Refresher = class {
796
796
  }
797
797
  render() {
798
798
  const mode = getIonMode(this);
799
- return (h(Host, { key: 'e7f4f2f96de7e80430bf54967ebc12e7216b2ca9', slot: "fixed", class: {
799
+ return (h(Host, { key: '1696f66f62d18c9075294f17cb24263325fcf35d', slot: "fixed", class: {
800
800
  [mode]: true,
801
801
  // Used internally for styling
802
802
  [`refresher-${mode}`]: true,
@@ -863,7 +863,7 @@ const RefresherContent = class {
863
863
  const pullingIcon = this.pullingIcon;
864
864
  const hasSpinner = pullingIcon != null && SPINNERS[pullingIcon] !== undefined;
865
865
  const mode = getIonMode(this);
866
- return (h(Host, { key: '19633bbcf02e3dba885d6bdcdaf2269bf4c8e2f5', class: mode }, h("div", { key: '28922e434a55a6cac0476fe2bee56941ce0d1c02', class: "refresher-pulling" }, this.pullingIcon && hasSpinner && (h("div", { key: 'fe575bf996021884677e9b23a3215d63caf894f5', class: "refresher-pulling-icon" }, h("div", { key: '59fe12297fd95bc33b8df8cd35316e2a1c084d91', class: "spinner-arrow-container" }, h("ion-spinner", { key: 'af9cc013ae04945c140b2865610ca73edb52ab48', name: this.pullingIcon, paused: true }), mode === 'md' && this.pullingIcon === 'circular' && (h("div", { key: '34df66ad1b0f706a0532957251aa2c20bf4587d8', class: "arrow-container" }, h("ion-icon", { key: 'ffdb5c123e606b823491c6c51cc2b497f62581bb', icon: caretBackSharp, "aria-hidden": "true" })))))), this.pullingIcon && !hasSpinner && (h("div", { key: 'ac3a2032bb969264d20fa057e9123441005d7a9d', class: "refresher-pulling-icon" }, h("ion-icon", { key: 'd969d10915548e72aae289b52154366f3dd39b31', icon: this.pullingIcon, lazy: false, "aria-hidden": "true" }))), this.pullingText !== undefined && this.renderPullingText()), h("div", { key: 'a8f854f81a94812d7bef8ce088331d94f49ff53d', class: "refresher-refreshing" }, this.refreshingSpinner && (h("div", { key: 'a1f646945370e40c844d62bc0c647443ae9dfbe7', class: "refresher-refreshing-icon" }, h("ion-spinner", { key: 'ab3ff4047769b6436e222b46d193c1e8b23e2fce', name: this.refreshingSpinner }))), this.refreshingText !== undefined && this.renderRefreshingText())));
866
+ return (h(Host, { key: '1bec5b4da221c69d856f3f5ddf40f2e03ebf2a4c', class: mode }, h("div", { key: '4fcc526c4f1881e9368d9cd16bd7030919bd3841', class: "refresher-pulling" }, this.pullingIcon && hasSpinner && (h("div", { key: 'a4e9e2e12c2d7faefc8303ec8c021f999ddf308e', class: "refresher-pulling-icon" }, h("div", { key: '5a2d215feb7fb4b64d540d3a65c0f24b415a2433', class: "spinner-arrow-container" }, h("ion-spinner", { key: 'abef2621d671ac6ff0abac43a702cbd825b7f127', name: this.pullingIcon, paused: true }), mode === 'md' && this.pullingIcon === 'circular' && (h("div", { key: '30087d672c3780672a05874cd93cd099b2855462', class: "arrow-container" }, h("ion-icon", { key: '5e30333dee469aec0d8efc8c4e6dabb619c6f363', icon: caretBackSharp, "aria-hidden": "true" })))))), this.pullingIcon && !hasSpinner && (h("div", { key: '48fe72b5ce8ded633c6ee799cebb520b9c8be528', class: "refresher-pulling-icon" }, h("ion-icon", { key: 'd8dfd5d42056b1c0a436c5006affb255407816c0', icon: this.pullingIcon, lazy: false, "aria-hidden": "true" }))), this.pullingText !== undefined && this.renderPullingText()), h("div", { key: 'c2cbfb94f157c82601ffe7bb815ff82ebc7c0a49', class: "refresher-refreshing" }, this.refreshingSpinner && (h("div", { key: '17f3ebe6a31768d5e389f45a2c12f68600185db9', class: "refresher-refreshing-icon" }, h("ion-spinner", { key: 'e8e61f8d7189c9939bba184201c9509d1d5b0fad', name: this.refreshingSpinner }))), this.refreshingText !== undefined && this.renderRefreshingText())));
867
867
  }
868
868
  get el() { return getElement(this); }
869
869
  };
@@ -33,7 +33,7 @@ const Reorder = class {
33
33
  render() {
34
34
  const mode = getIonMode(this);
35
35
  const reorderIcon = mode === 'ios' ? reorderThreeOutline : reorderTwoSharp;
36
- return (h(Host, { key: '27266e30bcb7e10c57fb6d546399cfb1f1c93b23', class: mode }, h("slot", { key: '8745cb9a31458e884c27eed1fb90d104fe9a79eb' }, h("ion-icon", { key: '6c4b9631a2f5610f1e21b2db025b6702d0d593bf', icon: reorderIcon, lazy: false, class: "reorder-icon", part: "icon", "aria-hidden": "true" }))));
36
+ return (h(Host, { key: '663d74e231e3af56b6298ee2539fdac9c8465839', class: mode }, h("slot", { key: 'c7c384ab8c9ca8abdc89cd984a39dfde70e342ca' }, h("ion-icon", { key: 'c8b6052db03d4b9e33a90e600c20861c73ee73ce', icon: reorderIcon, lazy: false, class: "reorder-icon", part: "icon", "aria-hidden": "true" }))));
37
37
  }
38
38
  get el() { return getElement(this); }
39
39
  };
@@ -279,7 +279,7 @@ const ReorderGroup = class {
279
279
  }
280
280
  render() {
281
281
  const mode = getIonMode(this);
282
- return (h(Host, { key: 'a38c7fbceb677201330a602273d5b55abb32da19', class: {
282
+ return (h(Host, { key: '491f3e5843cf728ff4589e58bd86b8ce6709b293', class: {
283
283
  [mode]: true,
284
284
  'reorder-enabled': !this.disabled,
285
285
  'reorder-list-active': this.state !== 0 /* ReorderGroupState.Idle */,
@@ -64,7 +64,7 @@ const RippleEffect = class {
64
64
  }
65
65
  render() {
66
66
  const mode = getIonMode(this);
67
- return (h(Host, { key: '7ae559bda5d2c1856a45bfa150c2cb4f83373f8e', role: "presentation", class: {
67
+ return (h(Host, { key: '2302f087ab1c6755355736e4ca77309c5fdcf185', role: "presentation", class: {
68
68
  [mode]: true,
69
69
  unbounded: this.unbounded,
70
70
  } }));
@@ -878,10 +878,10 @@ const RouterLink = class {
878
878
  rel: this.rel,
879
879
  target: this.target,
880
880
  };
881
- return (h(Host, { key: '529ceed5beaf92d7b4cc315c82f449eac18310e8', onClick: this.onClick, class: createColorClasses(this.color, {
881
+ return (h(Host, { key: 'f876442cab5b14b7e83c6d6ad2c2d878a9c57439', onClick: this.onClick, class: createColorClasses(this.color, {
882
882
  [mode]: true,
883
883
  'ion-activatable': true,
884
- }) }, h("a", Object.assign({ key: 'd5f1f8b256695d70bdafd20ff3d1b625963fa2da' }, attrs), h("slot", { key: '613fcdb36a71e076f989551ea21f1d5c118b1cd2' }))));
884
+ }) }, h("a", Object.assign({ key: 'c44b78ec1fd10a40c23bfe548860ac2b346646a8' }, attrs), h("slot", { key: 'd32180a567613f79f89885135bd0d776ffc1eb8e' }))));
885
885
  }
886
886
  };
887
887
  RouterLink.style = IonRouterLinkStyle0;
@@ -389,8 +389,8 @@ const Searchbar = class {
389
389
  const clearIcon = this.clearIcon || (mode === 'ios' ? closeCircle : closeSharp);
390
390
  const searchIcon = this.searchIcon || (mode === 'ios' ? searchOutline : searchSharp);
391
391
  const shouldShowCancelButton = this.shouldShowCancelButton();
392
- const cancelButton = this.showCancelButton !== 'never' && (h("button", { key: '2e53057ad0dcb8ea930fe4a4a03f08af5163d31e', "aria-label": cancelButtonText, "aria-hidden": shouldShowCancelButton ? undefined : 'true', type: "button", tabIndex: mode === 'ios' && !shouldShowCancelButton ? -1 : undefined, onMouseDown: this.onCancelSearchbar, onTouchStart: this.onCancelSearchbar, class: "searchbar-cancel-button" }, h("div", { key: '10b06fdbb3ae51bf02bd094205d075e1f9b60ea3', "aria-hidden": "true" }, mode === 'md' ? (h("ion-icon", { "aria-hidden": "true", mode: mode, icon: this.cancelButtonIcon, lazy: false })) : (cancelButtonText))));
393
- return (h(Host, { key: 'f1a07f9e2f27f5297581e66c80097cf7843c1a5a', role: "search", "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses(this.color, {
392
+ const cancelButton = this.showCancelButton !== 'never' && (h("button", { key: '8f3323145edfde317f2762e470f3ab2e27452b69', "aria-label": cancelButtonText, "aria-hidden": shouldShowCancelButton ? undefined : 'true', type: "button", tabIndex: mode === 'ios' && !shouldShowCancelButton ? -1 : undefined, onMouseDown: this.onCancelSearchbar, onTouchStart: this.onCancelSearchbar, class: "searchbar-cancel-button" }, h("div", { key: 'a3ae5d8a6fe3a96b5aa7142f7a246876fdbe3ef3', "aria-hidden": "true" }, mode === 'md' ? (h("ion-icon", { "aria-hidden": "true", mode: mode, icon: this.cancelButtonIcon, lazy: false })) : (cancelButtonText))));
393
+ return (h(Host, { key: '543593e248261418ea75580e5fbed1c613e57d00', role: "search", "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses(this.color, {
394
394
  [mode]: true,
395
395
  'searchbar-animated': animated,
396
396
  'searchbar-disabled': this.disabled,
@@ -400,14 +400,14 @@ const Searchbar = class {
400
400
  'searchbar-has-focus': this.focused,
401
401
  'searchbar-should-show-clear': this.shouldShowClearButton(),
402
402
  'searchbar-should-show-cancel': this.shouldShowCancelButton(),
403
- }) }, h("div", { key: '9b7dc9abf5b1925872c75f6c992aac465700b615', class: "searchbar-input-container" }, h("input", Object.assign({ key: 'd0e11e98bfb8b9e9225de80c8f132f68c3466f13', "aria-label": "search text", disabled: this.disabled, ref: (el) => (this.nativeInput = el), class: "searchbar-input", inputMode: this.inputmode, enterKeyHint: this.enterkeyhint, name: this.name, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, minLength: this.minlength, maxLength: this.maxlength, placeholder: this.placeholder, type: this.type, value: this.getValue(), autoCapitalize: autocapitalize === 'default' ? undefined : autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, spellcheck: this.spellcheck }, this.inheritedAttributes)), mode === 'md' && cancelButton, h("ion-icon", { key: 'd475776f64b55d13d49f8193f3b84a4e669403c7', "aria-hidden": "true", mode: mode, icon: searchIcon, lazy: false, class: "searchbar-search-icon" }), h("button", { key: '9b5b681edfac608ed1c20175086ec40c652a7f07', "aria-label": "reset", type: "button", "no-blur": true, class: "searchbar-clear-button", onPointerDown: (ev) => {
403
+ }) }, h("div", { key: '01351daea61933fedd1bd6289376183962096479', class: "searchbar-input-container" }, h("input", Object.assign({ key: 'fae92d93e9c16c4b48116da9aa6b3e827d0f830a', "aria-label": "search text", disabled: this.disabled, ref: (el) => (this.nativeInput = el), class: "searchbar-input", inputMode: this.inputmode, enterKeyHint: this.enterkeyhint, name: this.name, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, minLength: this.minlength, maxLength: this.maxlength, placeholder: this.placeholder, type: this.type, value: this.getValue(), autoCapitalize: autocapitalize === 'default' ? undefined : autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, spellcheck: this.spellcheck }, this.inheritedAttributes)), mode === 'md' && cancelButton, h("ion-icon", { key: '4d20d2db6ce72e82f86fa140ebd2ad3b6bbf4bd6', "aria-hidden": "true", mode: mode, icon: searchIcon, lazy: false, class: "searchbar-search-icon" }), h("button", { key: '40102559fa7864a7545466cf1abc40131b5ace6c', "aria-label": "reset", type: "button", "no-blur": true, class: "searchbar-clear-button", onPointerDown: (ev) => {
404
404
  /**
405
405
  * This prevents mobile browsers from
406
406
  * blurring the input when the clear
407
407
  * button is activated.
408
408
  */
409
409
  ev.preventDefault();
410
- }, onClick: () => this.onClearInput(true) }, h("ion-icon", { key: '44c85c0d3a1346c5e9306a65f6a7cf0fcdc1f149', "aria-hidden": "true", mode: mode, icon: clearIcon, lazy: false, class: "searchbar-clear-icon" }))), mode === 'ios' && cancelButton));
410
+ }, onClick: () => this.onClearInput(true) }, h("ion-icon", { key: '42eb950e72357bba1a1fe2dacfa982412c9d64db', "aria-hidden": "true", mode: mode, icon: clearIcon, lazy: false, class: "searchbar-clear-icon" }))), mode === 'ios' && cancelButton));
411
411
  }
412
412
  get el() { return getElement(this); }
413
413
  static get watchers() { return {
@@ -42,6 +42,14 @@ const Segment = class {
42
42
  }
43
43
  }
44
44
  };
45
+ this.onSlottedItemsChange = () => {
46
+ /**
47
+ * When the slotted segment buttons change we need to
48
+ * ensure that the new segment buttons are checked if
49
+ * the value matches the segment button value.
50
+ */
51
+ this.valueChanged(this.value);
52
+ };
45
53
  this.getSegmentButton = (selector) => {
46
54
  var _a, _b;
47
55
  const buttons = this.getButtons().filter((button) => !button.disabled);
@@ -109,13 +117,6 @@ const Segment = class {
109
117
  }
110
118
  async componentDidLoad() {
111
119
  this.setCheckedClasses();
112
- /**
113
- * If the value changes before watchers
114
- * are setup, then the ionSelect watch callback
115
- * will not fire. As a result, we manually
116
- * fire this event when Select is loaded.
117
- */
118
- this.ionSelect.emit({ value: this.value });
119
120
  /**
120
121
  * We need to wait for the buttons to all be rendered
121
122
  * before we can scroll.
@@ -426,14 +427,14 @@ const Segment = class {
426
427
  }
427
428
  render() {
428
429
  const mode = getIonMode(this);
429
- return (h(Host, { key: '107be9ad856d855db449d24cd75f9fb82746e9aa', role: "tablist", onClick: this.onClick, class: createColorClasses(this.color, {
430
+ return (h(Host, { key: 'ad0946134c8d465b760ad792655f1cb9922db520', role: "tablist", onClick: this.onClick, class: createColorClasses(this.color, {
430
431
  [mode]: true,
431
432
  'in-toolbar': hostContext('ion-toolbar', this.el),
432
433
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
433
434
  'segment-activated': this.activated,
434
435
  'segment-disabled': this.disabled,
435
436
  'segment-scrollable': this.scrollable,
436
- }) }, h("slot", { key: 'bdb223b18a62af921084301f01a728c421379646' })));
437
+ }) }, h("slot", { key: 'dcdb425bcda0d60acb7c317e5e671ed462715b4a', onSlotchange: this.onSlottedItemsChange })));
437
438
  }
438
439
  get el() { return getElement(this); }
439
440
  static get watchers() { return {
@@ -521,7 +522,7 @@ const SegmentButton = class {
521
522
  const { checked, type, disabled, hasIcon, hasLabel, layout, segmentEl } = this;
522
523
  const mode = getIonMode(this);
523
524
  const hasSegmentColor = () => (segmentEl === null || segmentEl === void 0 ? void 0 : segmentEl.color) !== undefined;
524
- return (h(Host, { key: '9b54e4841be5d0f4f2ee230a649bfbe01066c7c7', class: {
525
+ return (h(Host, { key: '70cf5c7a3ae2620222c5250c644faf3cfc3b3e4e', class: {
525
526
  [mode]: true,
526
527
  'in-toolbar': hostContext('ion-toolbar', this.el),
527
528
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
@@ -537,10 +538,10 @@ const SegmentButton = class {
537
538
  'ion-activatable': true,
538
539
  'ion-activatable-instant': true,
539
540
  'ion-focusable': true,
540
- } }, h("button", Object.assign({ key: 'b97b964b5f3f1bf53e41ad2a1ad4853d5f956fe5', "aria-selected": checked ? 'true' : 'false', role: "tab", ref: (el) => (this.nativeEl = el), type: type, class: "button-native", part: "native", disabled: disabled }, this.inheritedAttributes), h("span", { key: '0eeb2616f7c5a7a7fc1e2e3bd34ab461de6179f4', class: "button-inner" }, h("slot", { key: '5ac8fafa2f23e30f8df63bfe236a9604cfb388ae' })), mode === 'md' && h("ion-ripple-effect", { key: '86032e9726e2b6437ffc34f59fcbe564616cc9ca' })), h("div", { key: '536b1da58dd2521be290707d6b1726831340cf9f', part: "indicator", class: {
541
+ } }, h("button", Object.assign({ key: 'a53c9f1e360934e8d2e90476642ba4507fc38ebd', "aria-selected": checked ? 'true' : 'false', role: "tab", ref: (el) => (this.nativeEl = el), type: type, class: "button-native", part: "native", disabled: disabled }, this.inheritedAttributes), h("span", { key: '7d8feda840d389941cc693f500b5eba0b39b41da', class: "button-inner" }, h("slot", { key: 'd9ae1eec45db253cbf573d29cd545658dd595d87' })), mode === 'md' && h("ion-ripple-effect", { key: '49e6a16968709dc9b3fc77bc9fb99acb42fda88c' })), h("div", { key: '4e3ea0989ed5205dbb03586e4facb439b05a92de', part: "indicator", class: {
541
542
  'segment-button-indicator': true,
542
543
  'segment-button-indicator-animated': true,
543
- } }, h("div", { key: 'b43124415ebd77c87285791522c5afc26a137f96', part: "indicator-background", class: "segment-button-indicator-background" }))));
544
+ } }, h("div", { key: '65c72a151080998c1e548c87d4d4ebd5c7dda72f', part: "indicator-background", class: "segment-button-indicator-background" }))));
544
545
  }
545
546
  get el() { return getElement(this); }
546
547
  static get watchers() { return {