@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
@@ -12,9 +12,9 @@ const helpers = require('./helpers-afaa9001.js');
12
12
  const lockController = require('./lock-controller-6585a42a.js');
13
13
  const index$4 = require('./index-5915f9b3.js');
14
14
  const capacitor = require('./capacitor-c04564bf.js');
15
- const overlays = require('./overlays-2feabb85.js');
15
+ const overlays = require('./overlays-cb04d075.js');
16
16
  const theme = require('./theme-d1c573d2.js');
17
- const index$5 = require('./index-6047957b.js');
17
+ const index$5 = require('./index-c0b7f8f4.js');
18
18
  const ionicGlobal = require('./ionic-global-35b86a09.js');
19
19
  const keyboard = require('./keyboard-af1bb365.js');
20
20
  const animation = require('./animation-b4fdf128.js');
@@ -818,7 +818,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
818
818
  * as inputs should not be focusable outside
819
819
  * the sheet.
820
820
  */
821
- baseEl.classList.remove('ion-disable-focus-trap');
821
+ baseEl.classList.remove(overlays.FOCUS_TRAP_DISABLE_CLASS);
822
822
  };
823
823
  const disableBackdrop = () => {
824
824
  baseEl.style.setProperty('pointer-events', 'none');
@@ -830,7 +830,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
830
830
  * Adding this class disables focus trapping
831
831
  * for the sheet temporarily.
832
832
  */
833
- baseEl.classList.add('ion-disable-focus-trap');
833
+ baseEl.classList.add(overlays.FOCUS_TRAP_DISABLE_CLASS);
834
834
  };
835
835
  /**
836
836
  * After the entering animation completes,
@@ -1195,6 +1195,7 @@ const Modal = class {
1195
1195
  this.isOpen = false;
1196
1196
  this.trigger = undefined;
1197
1197
  this.keepContentsMounted = false;
1198
+ this.focusTrap = true;
1198
1199
  this.canDismiss = true;
1199
1200
  }
1200
1201
  onIsOpenChange(newValue, oldValue) {
@@ -1651,23 +1652,23 @@ const Modal = class {
1651
1652
  return true;
1652
1653
  }
1653
1654
  render() {
1654
- const { handle, isSheetModal, presentingElement, htmlAttributes, handleBehavior, inheritedAttributes } = this;
1655
+ const { handle, isSheetModal, presentingElement, htmlAttributes, handleBehavior, inheritedAttributes, focusTrap } = this;
1655
1656
  const showHandle = handle !== false && isSheetModal;
1656
1657
  const mode = ionicGlobal.getIonMode(this);
1657
1658
  const isCardModal = presentingElement !== undefined && mode === 'ios';
1658
1659
  const isHandleCycle = handleBehavior === 'cycle';
1659
- return (index$3.h(index$3.Host, Object.assign({ key: 'bb00efb8cbbdb2d1bbcc5e9c638586e2904882a8', "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
1660
+ return (index$3.h(index$3.Host, Object.assign({ key: 'fe6fd17cf857127f89d652b9aa3e9473d28c55db', "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
1660
1661
  zIndex: `${20000 + this.overlayIndex}`,
1661
- }, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, 'overlay-hidden': true }, theme.getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle }), index$3.h("ion-backdrop", { key: 'd2d50f736fdc34b933c00309fe0b67e4aff7ee63', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && index$3.h("div", { key: '5d3523a04da9350ae435a4f3247198095b71f206', class: "modal-shadow" }), index$3.h("div", Object.assign({ key: '09b3c4b629155f8c32f5c896cf689ffbe7004de8',
1662
+ }, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, 'overlay-hidden': true, [overlays.FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, theme.getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle }), index$3.h("ion-backdrop", { key: '0f3a31363c2717e5483bc0412c25804897d4aff8', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && index$3.h("div", { key: '0e5ed59162ff08fe0a9f757e06bdacc75f65c0ed', class: "modal-shadow" }), index$3.h("div", Object.assign({ key: '35cdbe2238765e5f346ad7be64f7eefa8c78f0c0',
1662
1663
  /*
1663
1664
  role and aria-modal must be used on the
1664
1665
  same element. They must also be set inside the
1665
1666
  shadow DOM otherwise ion-button will not be highlighted
1666
1667
  when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
1667
1668
  */
1668
- role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (index$3.h("button", { key: 'e47d90068927f3a518e4144e17f18ac326126712', class: "modal-handle",
1669
+ role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (index$3.h("button", { key: '7a4031eaebf9a098f4c4220a5fe9d1c25cc0ec92', class: "modal-handle",
1669
1670
  // Prevents the handle from receiving keyboard focus when it does not cycle
1670
- tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle" })), index$3.h("slot", { key: '5733e94b3ecc4ed9bfb6aec5cd254cd0e43ee8f7' }))));
1671
+ tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle" })), index$3.h("slot", { key: '534adc8e5bd850199fe2e9e16f0e7c19217d8486' }))));
1671
1672
  }
1672
1673
  get el() { return index$3.getElement(this); }
1673
1674
  static get watchers() { return {
@@ -8,9 +8,10 @@ Object.defineProperty(exports, '__esModule', { value: true });
8
8
  const index = require('./index-8709af32.js');
9
9
  const cubicBezier = require('./cubic-bezier-f2dccc53.js');
10
10
  const helpers = require('./helpers-afaa9001.js');
11
- const index$1 = require('./index-6047957b.js');
11
+ const index$1 = require('./index-c0b7f8f4.js');
12
12
  const ionicGlobal = require('./ionic-global-35b86a09.js');
13
13
  const frameworkDelegate = require('./framework-delegate-55f5683a.js');
14
+ require('./index-5915f9b3.js');
14
15
 
15
16
  const VIEW_STATE_NEW = 1;
16
17
  const VIEW_STATE_ATTACHED = 2;
@@ -902,7 +903,7 @@ const Nav = class {
902
903
  }
903
904
  }
904
905
  render() {
905
- return index.h("slot", { key: 'dfe98cb6604a2015a49f41beffebdd2da957dfff' });
906
+ return index.h("slot", { key: 'e9d99a8a0b84f02f9964d8143cd5e647e43334f9' });
906
907
  }
907
908
  get el() { return index.getElement(this); }
908
909
  static get watchers() { return {
@@ -944,7 +945,7 @@ const NavLink = class {
944
945
  this.routerAnimation = undefined;
945
946
  }
946
947
  render() {
947
- return index.h(index.Host, { key: 'd2f8545b4fbd5aa25ef36eb01dffbc5d35ccfbb9', onClick: this.onClick });
948
+ return index.h(index.Host, { key: '42c23dcdec5fdb25defebaf6e8a9fa75754ff8eb', onClick: this.onClick });
948
949
  }
949
950
  get el() { return index.getElement(this); }
950
951
  };
@@ -88,10 +88,10 @@ const PickerColumnOption = class {
88
88
  render() {
89
89
  const { color, disabled, ariaLabel } = this;
90
90
  const mode = ionicGlobal.getIonMode(this);
91
- return (index.h(index.Host, { key: 'c743c6ef44bb9f765cc15b3b5d2864de6520203a', class: theme.createColorClasses(color, {
91
+ return (index.h(index.Host, { key: 'cc4435a0ce0e55be1321bcabaf342ed68cf5ba1e', class: theme.createColorClasses(color, {
92
92
  [mode]: true,
93
93
  ['option-disabled']: disabled,
94
- }) }, index.h("button", { key: '4c3d9eb245c52b2c007f727e145cfb55759bd7a9', tabindex: "-1", "aria-label": ariaLabel, disabled: disabled, onClick: () => this.onClick() }, index.h("slot", { key: '4c907d2187cbe9d5941e27f2b12578e2b7271461' }))));
94
+ }) }, index.h("button", { key: '0187fb967771e0787807a8538dce4e59f6a98565', tabindex: "-1", "aria-label": ariaLabel, disabled: disabled, onClick: () => this.onClick() }, index.h("slot", { key: 'dbe52552f3f27332816748c12d929cc81060841d' }))));
95
95
  }
96
96
  get el() { return index.getElement(this); }
97
97
  static get watchers() { return {
@@ -13,7 +13,7 @@ const ionicGlobal = require('./ionic-global-35b86a09.js');
13
13
  const theme = require('./theme-d1c573d2.js');
14
14
  require('./capacitor-c04564bf.js');
15
15
 
16
- const pickerColumnCss = ":host{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;max-width:100%;height:200px;font-size:22px;text-align:center}.picker-opts{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0px;padding-bottom:0px;min-width:26px;max-height:200px;outline:none;text-align:inherit;-webkit-scroll-snap-type:y mandatory;-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory;overflow-x:hidden;overflow-y:scroll;scrollbar-width:none}.picker-item-empty{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;display:block;width:100%;height:34px;border:0px;outline:none;background:transparent;color:inherit;font-family:var(--ion-font-family, inherit);font-size:inherit;line-height:34px;text-align:inherit;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.picker-opts::-webkit-scrollbar{display:none}::slotted(ion-picker-column-option){display:block;scroll-snap-align:center}.picker-item-empty,:host(:not([disabled])) ::slotted(ion-picker-column-option.option-disabled){scroll-snap-align:none}::slotted([slot=prefix]),::slotted([slot=suffix]){max-width:200px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::slotted([slot=prefix]){-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0;padding-bottom:0;-ms-flex-pack:end;justify-content:end}::slotted([slot=suffix]){-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0;padding-bottom:0;-ms-flex-pack:start;justify-content:start}:host(.picker-column-disabled) .picker-opts{overflow-y:hidden}:host(.picker-column-disabled) ::slotted(ion-picker-column-option){cursor:default;opacity:0.4;pointer-events:none}@media (any-hover: hover){:host(:focus) .picker-opts{outline:none;background:rgba(var(--ion-color-base-rgb), 0.2)}}";
16
+ const pickerColumnCss = ":host{display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;max-width:100%;height:200px;font-size:22px;text-align:center}.assistive-focusable{left:0;right:0;top:0;bottom:0;position:absolute;z-index:1;pointer-events:none}.assistive-focusable:focus{outline:none}.picker-opts{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0px;padding-bottom:0px;min-width:26px;max-height:200px;outline:none;text-align:inherit;-webkit-scroll-snap-type:y mandatory;-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory;overflow-x:hidden;overflow-y:scroll;scrollbar-width:none}.picker-item-empty{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;display:block;width:100%;height:34px;border:0px;outline:none;background:transparent;color:inherit;font-family:var(--ion-font-family, inherit);font-size:inherit;line-height:34px;text-align:inherit;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.picker-opts::-webkit-scrollbar{display:none}::slotted(ion-picker-column-option){display:block;scroll-snap-align:center}.picker-item-empty,:host(:not([disabled])) ::slotted(ion-picker-column-option.option-disabled){scroll-snap-align:none}::slotted([slot=prefix]),::slotted([slot=suffix]){max-width:200px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::slotted([slot=prefix]){-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0;padding-bottom:0;-ms-flex-pack:end;justify-content:end}::slotted([slot=suffix]){-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0;padding-bottom:0;-ms-flex-pack:start;justify-content:start}:host(.picker-column-disabled) .picker-opts{overflow-y:hidden}:host(.picker-column-disabled) ::slotted(ion-picker-column-option){cursor:default;opacity:0.4;pointer-events:none}@media (any-hover: hover){:host(:focus) .picker-opts{outline:none;background:rgba(var(--ion-color-base-rgb), 0.2)}}";
17
17
  const IonPickerColumnStyle0 = pickerColumnCss;
18
18
 
19
19
  const PickerColumn = class {
@@ -23,6 +23,7 @@ const PickerColumn = class {
23
23
  this.isScrolling = false;
24
24
  this.isColumnVisible = false;
25
25
  this.canExitInputMode = true;
26
+ this.updateValueTextOnScroll = false;
26
27
  this.centerPickerItemInView = (target, smooth = true, canExitInputMode = true) => {
27
28
  const { isColumnVisible, scrollEl } = this;
28
29
  if (isColumnVisible && scrollEl) {
@@ -37,6 +38,7 @@ const PickerColumn = class {
37
38
  * of these can cause a scroll to occur.
38
39
  */
39
40
  this.canExitInputMode = canExitInputMode;
41
+ this.updateValueTextOnScroll = false;
40
42
  scrollEl.scroll({
41
43
  top,
42
44
  left: 0,
@@ -109,6 +111,7 @@ const PickerColumn = class {
109
111
  let activeEl = this.activeItem;
110
112
  const scrollCallback = () => {
111
113
  helpers.raf(() => {
114
+ var _a;
112
115
  if (!scrollEl)
113
116
  return;
114
117
  if (timeout) {
@@ -189,8 +192,23 @@ const PickerColumn = class {
189
192
  }
190
193
  activeEl = newActiveElement;
191
194
  this.setPickerItemActiveState(newActiveElement, true);
195
+ /**
196
+ * Set the aria-valuetext even though the value prop has not been updated yet.
197
+ * This enables some screen readers to announce the value as the users drag
198
+ * as opposed to when their release their pointer from the screen.
199
+ *
200
+ * When the value is programmatically updated, we will smoothly scroll
201
+ * to the new option. However, we do not want to update aria-valuetext mid-scroll
202
+ * as that can cause the old value to be briefly set before being set to the
203
+ * correct option. This will cause some screen readers to announce the old value
204
+ * again before announcing the new value. The correct valuetext will be set on render.
205
+ */
206
+ if (this.updateValueTextOnScroll) {
207
+ (_a = this.assistiveFocusable) === null || _a === void 0 ? void 0 : _a.setAttribute('aria-valuetext', this.getOptionValueText(newActiveElement));
208
+ }
192
209
  timeout = setTimeout(() => {
193
210
  this.isScrolling = false;
211
+ this.updateValueTextOnScroll = true;
194
212
  enableHaptics && haptic.hapticSelectionEnd();
195
213
  /**
196
214
  * Certain tasks (such as those that
@@ -249,12 +267,139 @@ const PickerColumn = class {
249
267
  */
250
268
  this.el.classList.remove('picker-column-active');
251
269
  };
270
+ /**
271
+ * Find the next enabled option after the active option.
272
+ * @param stride - How many options to "jump" over in order to select the next option.
273
+ * This can be used to implement PageUp/PageDown behaviors where pressing these keys
274
+ * scrolls the picker by more than 1 option. For example, a stride of 5 means select
275
+ * the enabled option 5 options after the active one. Note that the actual option selected
276
+ * may be past the stride if the option at the stride is disabled.
277
+ */
278
+ this.findNextOption = (stride = 1) => {
279
+ const { activeItem } = this;
280
+ if (!activeItem)
281
+ return null;
282
+ let prevNode = activeItem;
283
+ let node = activeItem.nextElementSibling;
284
+ while (node != null) {
285
+ if (stride > 0) {
286
+ stride--;
287
+ }
288
+ if (node.tagName === 'ION-PICKER-COLUMN-OPTION' && !node.disabled && stride === 0) {
289
+ return node;
290
+ }
291
+ prevNode = node;
292
+ // Use nextElementSibling instead of nextSibling to avoid text/comment nodes
293
+ node = node.nextElementSibling;
294
+ }
295
+ return prevNode;
296
+ };
297
+ /**
298
+ * Find the next enabled option after the active option.
299
+ * @param stride - How many options to "jump" over in order to select the next option.
300
+ * This can be used to implement PageUp/PageDown behaviors where pressing these keys
301
+ * scrolls the picker by more than 1 option. For example, a stride of 5 means select
302
+ * the enabled option 5 options before the active one. Note that the actual option selected
303
+ * may be past the stride if the option at the stride is disabled.
304
+ */
305
+ this.findPreviousOption = (stride = 1) => {
306
+ const { activeItem } = this;
307
+ if (!activeItem)
308
+ return null;
309
+ let nextNode = activeItem;
310
+ let node = activeItem.previousElementSibling;
311
+ while (node != null) {
312
+ if (stride > 0) {
313
+ stride--;
314
+ }
315
+ if (node.tagName === 'ION-PICKER-COLUMN-OPTION' && !node.disabled && stride === 0) {
316
+ return node;
317
+ }
318
+ nextNode = node;
319
+ // Use previousElementSibling instead of previousSibling to avoid text/comment nodes
320
+ node = node.previousElementSibling;
321
+ }
322
+ return nextNode;
323
+ };
324
+ this.onKeyDown = (ev) => {
325
+ /**
326
+ * The below operations should be inverted when running on a mobile device.
327
+ * For example, swiping up will dispatch an "ArrowUp" event. On desktop,
328
+ * this should cause the previous option to be selected. On mobile, swiping
329
+ * up causes a view to scroll down. As a result, swiping up on mobile should
330
+ * cause the next option to be selected. The Home/End operations remain
331
+ * unchanged because those always represent the first/last options, respectively.
332
+ */
333
+ const mobile = ionicGlobal.isPlatform('mobile');
334
+ let newOption = null;
335
+ switch (ev.key) {
336
+ case 'ArrowDown':
337
+ newOption = mobile ? this.findPreviousOption() : this.findNextOption();
338
+ break;
339
+ case 'ArrowUp':
340
+ newOption = mobile ? this.findNextOption() : this.findPreviousOption();
341
+ break;
342
+ case 'PageUp':
343
+ newOption = mobile ? this.findNextOption(5) : this.findPreviousOption(5);
344
+ break;
345
+ case 'PageDown':
346
+ newOption = mobile ? this.findPreviousOption(5) : this.findNextOption(5);
347
+ break;
348
+ case 'Home':
349
+ /**
350
+ * There is no guarantee that the first child will be an ion-picker-column-option,
351
+ * so we do not use firstElementChild.
352
+ */
353
+ newOption = this.el.querySelector('ion-picker-column-option:first-of-type');
354
+ break;
355
+ case 'End':
356
+ /**
357
+ * There is no guarantee that the last child will be an ion-picker-column-option,
358
+ * so we do not use lastElementChild.
359
+ */
360
+ newOption = this.el.querySelector('ion-picker-column-option:last-of-type');
361
+ break;
362
+ }
363
+ if (newOption !== null) {
364
+ this.value = newOption.value;
365
+ // This stops any default browser behavior such as scrolling
366
+ ev.preventDefault();
367
+ }
368
+ };
369
+ /**
370
+ * Utility to generate the correct text for aria-valuetext.
371
+ */
372
+ this.getOptionValueText = (el) => {
373
+ var _a;
374
+ return el ? (_a = el.getAttribute('aria-label')) !== null && _a !== void 0 ? _a : el.innerText : '';
375
+ };
376
+ /**
377
+ * Render an element that overlays the column. This element is for assistive
378
+ * tech to allow users to navigate the column up/down. This element should receive
379
+ * focus as it listens for synthesized keyboard events as required by the
380
+ * slider role: https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/slider_role
381
+ */
382
+ this.renderAssistiveFocusable = () => {
383
+ const { activeItem } = this;
384
+ const valueText = this.getOptionValueText(activeItem);
385
+ /**
386
+ * When using the picker, the valuetext provides important context that valuenow
387
+ * does not. Additionally, using non-zero valuemin/valuemax values can cause
388
+ * WebKit to incorrectly announce numeric valuetext values (such as a year
389
+ * like "2024") as percentages: https://bugs.webkit.org/show_bug.cgi?id=273126
390
+ */
391
+ return (index.h("div", { ref: (el) => (this.assistiveFocusable = el), class: "assistive-focusable", role: "slider", tabindex: this.disabled ? undefined : 0, "aria-label": this.ariaLabel, "aria-valuemin": 0, "aria-valuemax": 0, "aria-valuenow": 0, "aria-valuetext": valueText, "aria-orientation": "vertical", onKeyDown: (ev) => this.onKeyDown(ev) }));
392
+ };
393
+ this.ariaLabel = null;
252
394
  this.isActive = false;
253
395
  this.disabled = false;
254
396
  this.value = undefined;
255
397
  this.color = 'primary';
256
398
  this.numericInput = false;
257
399
  }
400
+ ariaLabelChanged(newValue) {
401
+ this.ariaLabel = newValue;
402
+ }
258
403
  valueChange() {
259
404
  if (this.isColumnVisible) {
260
405
  /**
@@ -370,6 +515,10 @@ const PickerColumn = class {
370
515
  this.scrollEl.focus();
371
516
  }
372
517
  }
518
+ connectedCallback() {
519
+ var _a;
520
+ this.ariaLabel = (_a = this.el.getAttribute('aria-label')) !== null && _a !== void 0 ? _a : 'Select a value';
521
+ }
373
522
  get activeItem() {
374
523
  const { value } = this;
375
524
  const options = Array.from(this.el.querySelectorAll('ion-picker-column-option'));
@@ -387,17 +536,18 @@ const PickerColumn = class {
387
536
  render() {
388
537
  const { color, disabled, isActive, numericInput } = this;
389
538
  const mode = ionicGlobal.getIonMode(this);
390
- return (index.h(index.Host, { key: '54d3ea9f92136ac446a6c0a2b1389d93c5ff31ee', class: theme.createColorClasses(color, {
539
+ return (index.h(index.Host, { key: 'ced35afc6326a20dbac68193921a807a9c10bb99', class: theme.createColorClasses(color, {
391
540
  [mode]: true,
392
541
  ['picker-column-active']: isActive,
393
542
  ['picker-column-numeric-input']: numericInput,
394
543
  ['picker-column-disabled']: disabled,
395
- }) }, index.h("slot", { key: '969279123f09d37a28aa726936c9f484b0de33e4', name: "prefix" }), index.h("div", { key: 'd4d09a561213c408cf1c42a28cdef37f14367724', class: "picker-opts", tabindex: disabled ? undefined : 0, ref: (el) => {
544
+ }) }, this.renderAssistiveFocusable(), index.h("slot", { key: '41e290dcc44dacb4237eb674ce2dedc7db66eb7d', name: "prefix" }), index.h("div", { key: '1fd869b063900103deadefc40929a1e8f02ec084', "aria-hidden": "true", class: "picker-opts", ref: (el) => {
396
545
  this.scrollEl = el;
397
- } }, index.h("div", { key: '3710d8980682c819be33eeb6611a5c707b0e6a29', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), index.h("div", { key: '65b7d8d523db669a2df107ae7aaacf62daf13232', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), index.h("div", { key: '694657e475edcdbc93561e826e0db016738f119d', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), index.h("slot", { key: 'ecbbd8db6ffdd8d8506a16d94f001d434f4daf97' }), index.h("div", { key: 'e19a7f7e5e4aeb7d52339e962314d68c31c6337b', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), index.h("div", { key: '103e6a5863efc526de3ea35c63230cc37e487594', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), index.h("div", { key: 'c9e2313ae630ec0b39cbc92d5261fc194dc22a5f', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0")), index.h("slot", { key: '1537926d9ed8d4251ded95dcb249197491fc2616', name: "suffix" })));
546
+ } }, index.h("div", { key: '0d2087f775b240c9b2534650eb27f3d99e7690a9', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), index.h("div", { key: '1245b2bb2b6314c3ec4e0ab3ece4e42beb360fc9', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), index.h("div", { key: '503b08f6bbe27fa7d34c165a93ec38ce7f1ad590', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), index.h("slot", { key: 'ec401a2b2d56546fb3f10239b71320ce7dc6a77d' }), index.h("div", { key: '97a234018291c5a6ca7a56bb1a9a417cac0b3e6f', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), index.h("div", { key: '0197711f71486a8fa3c184b593cebe1c1e54c585', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), index.h("div", { key: '961304f0a2a10afb3502ce4c5fbdceef0aa933cf', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0")), index.h("slot", { key: 'f38b83d26c3c2ba8ef00da7caf7f0be518b2007d', name: "suffix" })));
398
547
  }
399
548
  get el() { return index.getElement(this); }
400
549
  static get watchers() { return {
550
+ "aria-label": ["ariaLabelChanged"],
401
551
  "value": ["valueChange"]
402
552
  }; }
403
553
  };
@@ -484,7 +484,7 @@ const Picker = class {
484
484
  this.emitInputModeChange();
485
485
  }
486
486
  render() {
487
- return (index.h(index.Host, { key: 'f92214a09dc85b65873676f40fde2b802960e704', onPointerDown: (ev) => this.onPointerDown(ev), onClick: () => this.onClick() }, index.h("input", { key: '6da37f75aca4ea1c9cb3bc733ebda2116279f313', "aria-hidden": "true", tabindex: -1, inputmode: "numeric", type: "number", onKeyDown: (ev) => {
487
+ return (index.h(index.Host, { key: '02b0687b1f80ba295a965dfba76dd59e2d1de5d3', onPointerDown: (ev) => this.onPointerDown(ev), onClick: () => this.onClick() }, index.h("input", { key: 'f83ed84bcf9e02539c00d8a4e63e6a0d7fc4ac71', "aria-hidden": "true", tabindex: -1, inputmode: "numeric", type: "number", onKeyDown: (ev) => {
488
488
  var _a;
489
489
  /**
490
490
  * The "Enter" key represents
@@ -499,7 +499,7 @@ const Picker = class {
499
499
  if (ev.key === 'Enter') {
500
500
  (_a = this.inputEl) === null || _a === void 0 ? void 0 : _a.blur();
501
501
  }
502
- }, ref: (el) => (this.inputEl = el), onInput: () => this.onInputChange(), onBlur: () => this.exitInputMode() }), index.h("div", { key: '298e99d83dd3f5bf2798150bab0bb4024af472fa', class: "picker-before" }), index.h("div", { key: 'ea578f04eb562a4dc6d6cc92de133dcb9fb7f42a', class: "picker-after" }), index.h("div", { key: '84567824956dfe967992a629904836ba8b75b3ec', class: "picker-highlight", ref: (el) => (this.highlightEl = el) }), index.h("slot", { key: 'df81f8fb90e1f649b608328034528f5c31c70c3b' })));
502
+ }, ref: (el) => (this.inputEl = el), onInput: () => this.onInputChange(), onBlur: () => this.exitInputMode() }), index.h("div", { key: '45b07fb0617d8e006712776bf78302288edb3ff4', class: "picker-before" }), index.h("div", { key: '73009229368e0d62b09c913aacade26f068a7aa9', class: "picker-after" }), index.h("div", { key: 'b73da00e446cd1cfd511c39212e14a00d355752e', class: "picker-highlight", ref: (el) => (this.highlightEl = el) }), index.h("slot", { key: 'd969f5efc5ddb9eda6c4828702efd1ceeb69f767' })));
503
503
  }
504
504
  get el() { return index.getElement(this); }
505
505
  };
@@ -6,14 +6,14 @@
6
6
  Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
8
  const index = require('./index-8709af32.js');
9
- const overlays = require('./overlays-2feabb85.js');
9
+ const overlays = require('./overlays-cb04d075.js');
10
10
  const frameworkDelegate = require('./framework-delegate-55f5683a.js');
11
11
  const helpers = require('./helpers-afaa9001.js');
12
12
  const lockController = require('./lock-controller-6585a42a.js');
13
13
  const index$1 = require('./index-5915f9b3.js');
14
14
  const ionicGlobal = require('./ionic-global-35b86a09.js');
15
15
  const theme = require('./theme-d1c573d2.js');
16
- const index$2 = require('./index-6047957b.js');
16
+ const index$2 = require('./index-c0b7f8f4.js');
17
17
  const animation = require('./animation-b4fdf128.js');
18
18
  require('./index-c8d52405.js');
19
19
  require('./hardware-back-button-ed931127.js');
@@ -1067,6 +1067,7 @@ const Popover = class {
1067
1067
  this.arrow = true;
1068
1068
  this.isOpen = false;
1069
1069
  this.keyboardEvents = false;
1070
+ this.focusTrap = true;
1070
1071
  this.keepContentsMounted = false;
1071
1072
  }
1072
1073
  onTriggerChange() {
@@ -1293,12 +1294,12 @@ const Popover = class {
1293
1294
  }
1294
1295
  render() {
1295
1296
  const mode = ionicGlobal.getIonMode(this);
1296
- const { onLifecycle, parentPopover, dismissOnSelect, side, arrow, htmlAttributes } = this;
1297
+ const { onLifecycle, parentPopover, dismissOnSelect, side, arrow, htmlAttributes, focusTrap } = this;
1297
1298
  const desktop = ionicGlobal.isPlatform('desktop');
1298
1299
  const enableArrow = arrow && !parentPopover;
1299
- return (index.h(index.Host, Object.assign({ key: '4bccccf57df72e1196c6a28e803831c0520aef53', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
1300
+ return (index.h(index.Host, Object.assign({ key: '17e5e8b3e7ba5e251665fb9d0ade10c781f82f0e', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
1300
1301
  zIndex: `${20000 + this.overlayIndex}`,
1301
- }, class: Object.assign(Object.assign({}, theme.getClassMap(this.cssClass)), { [mode]: true, 'popover-translucent': this.translucent, 'overlay-hidden': true, 'popover-desktop': desktop, [`popover-side-${side}`]: true, 'popover-nested': !!parentPopover }), onIonPopoverDidPresent: onLifecycle, onIonPopoverWillPresent: onLifecycle, onIonPopoverWillDismiss: onLifecycle, onIonPopoverDidDismiss: onLifecycle, onIonBackdropTap: this.onBackdropTap }), !parentPopover && index.h("ion-backdrop", { key: 'e42f4f61150b7b41093d37d187d1b7bb4187a00e', tappable: this.backdropDismiss, visible: this.showBackdrop, part: "backdrop" }), index.h("div", { key: '386ac3247b0f82566aae07b6dbf5e97d243ce367', class: "popover-wrapper ion-overlay-wrapper", onClick: dismissOnSelect ? () => this.dismiss() : undefined }, enableArrow && index.h("div", { key: '28f0e5ea2fa099b808ffb77a9a0d78b8b46c1513', class: "popover-arrow", part: "arrow" }), index.h("div", { key: '7ba2e3dee529015c4e07ce78ec10dc59985ec6a2', class: "popover-content", part: "content" }, index.h("slot", { key: '915cdc8e389fda210f83aec8b7bbbfa6f830a884' })))));
1302
+ }, class: Object.assign(Object.assign({}, theme.getClassMap(this.cssClass)), { [mode]: true, 'popover-translucent': this.translucent, 'overlay-hidden': true, 'popover-desktop': desktop, [`popover-side-${side}`]: true, [overlays.FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false, 'popover-nested': !!parentPopover }), onIonPopoverDidPresent: onLifecycle, onIonPopoverWillPresent: onLifecycle, onIonPopoverWillDismiss: onLifecycle, onIonPopoverDidDismiss: onLifecycle, onIonBackdropTap: this.onBackdropTap }), !parentPopover && index.h("ion-backdrop", { key: 'c12fb94b375d7e88a0c5d715440c0f66ad7ee817', tappable: this.backdropDismiss, visible: this.showBackdrop, part: "backdrop" }), index.h("div", { key: '478b388cc9a5a382003a2863e968e77a174914ab', class: "popover-wrapper ion-overlay-wrapper", onClick: dismissOnSelect ? () => this.dismiss() : undefined }, enableArrow && index.h("div", { key: 'f1c63a0079f197a8d4577e7c00a654871fb9d816', class: "popover-arrow", part: "arrow" }), index.h("div", { key: '08b62a321c09ad4b0f90460468ecbc1d56320bf1', class: "popover-content", part: "content" }, index.h("slot", { key: '55645ff597f64d434219caa28015cf2a4ceb0ee5' })))));
1302
1303
  }
1303
1304
  get el() { return index.getElement(this); }
1304
1305
  static get watchers() { return {
@@ -31,7 +31,7 @@ const ProgressBar = class {
31
31
  const mode = ionicGlobal.getIonMode(this);
32
32
  // If the progress is displayed as a solid bar.
33
33
  const progressSolid = buffer === 1;
34
- return (index.h(index.Host, { key: '8d8ddf0b26fe33803d3a6168cbedd523d1a888e7', role: "progressbar", "aria-valuenow": type === 'determinate' ? value : null, "aria-valuemin": "0", "aria-valuemax": "1", class: theme.createColorClasses(color, {
34
+ return (index.h(index.Host, { key: 'b293f4475bcdaa7851b41ebfda659037f0365120', role: "progressbar", "aria-valuenow": type === 'determinate' ? value : null, "aria-valuemin": "0", "aria-valuemax": "1", class: theme.createColorClasses(color, {
35
35
  [mode]: true,
36
36
  [`progress-bar-${type}`]: true,
37
37
  'progress-paused': paused,
@@ -112,7 +112,7 @@ const Radio = class {
112
112
  const { checked, disabled, color, el, justify, labelPlacement, hasLabel, buttonTabindex, alignment } = this;
113
113
  const mode = ionicGlobal.getIonMode(this);
114
114
  const inItem = theme.hostContext('ion-item', el);
115
- return (index.h(index.Host, { key: 'cb00934d052260e97462e97a1669045cbb0b963a', onFocus: this.onFocus, onBlur: this.onBlur, onClick: this.onClick, class: theme.createColorClasses(color, {
115
+ return (index.h(index.Host, { key: 'e44cade8aa8415bdc825f9d17fc8562487cf5d35', onFocus: this.onFocus, onBlur: this.onBlur, onClick: this.onClick, class: theme.createColorClasses(color, {
116
116
  [mode]: true,
117
117
  'in-item': inItem,
118
118
  'radio-checked': checked,
@@ -123,10 +123,10 @@ const Radio = class {
123
123
  // Focus and active styling should not apply when the radio is in an item
124
124
  'ion-activatable': !inItem,
125
125
  'ion-focusable': !inItem,
126
- }), role: "radio", "aria-checked": checked ? 'true' : 'false', "aria-disabled": disabled ? 'true' : null, tabindex: buttonTabindex }, index.h("label", { key: '05613f89400469692442bf3c02c27f9299c5d6ef', class: "radio-wrapper" }, index.h("div", { key: '89b5d7668c3856f417c318629086cf46a072efbe', class: {
126
+ }), role: "radio", "aria-checked": checked ? 'true' : 'false', "aria-disabled": disabled ? 'true' : null, tabindex: buttonTabindex }, index.h("label", { key: '48a99aa80a7d7b4085ef26faf3167903c975517c', class: "radio-wrapper" }, index.h("div", { key: 'a8d74e0603b41215ea3e867356a9be0dcf3722d8', class: {
127
127
  'label-text-wrapper': true,
128
128
  'label-text-wrapper-hidden': !hasLabel,
129
- }, part: "label" }, index.h("slot", { key: 'd5e43a8d0fe5a7fc323887d310fd64d6f87deef7' })), index.h("div", { key: '7fd221189adcfccca1ed18dcd0a60cde6261120b', class: "native-wrapper" }, this.renderRadioControl()))));
129
+ }, part: "label" }, index.h("slot", { key: '9e3cce6254e70b02d50381537438a70435b031cc' })), index.h("div", { key: 'bfa3ee188d911e056a3e60178eac41362efb94b3', class: "native-wrapper" }, this.renderRadioControl()))));
130
130
  }
131
131
  get el() { return index.getElement(this); }
132
132
  static get watchers() { return {
@@ -291,7 +291,7 @@ const RadioGroup = class {
291
291
  const { label, labelId, el, name, value } = this;
292
292
  const mode = ionicGlobal.getIonMode(this);
293
293
  helpers.renderHiddenInput(true, el, name, value, false);
294
- return index.h(index.Host, { key: '672d1df4a5d2fd22415e8772b054313907aba8f6', role: "radiogroup", "aria-labelledby": label ? labelId : null, onClick: this.onClick, class: mode });
294
+ return index.h(index.Host, { key: '7a8ad7eb6a05c6f96a348dcf30fd0c610a95688c', role: "radiogroup", "aria-labelledby": label ? labelId : null, onClick: this.onClick, class: mode });
295
295
  }
296
296
  get el() { return index.getElement(this); }
297
297
  static get watchers() { return {
@@ -604,7 +604,7 @@ const Range = class {
604
604
  const needsEndAdjustment = inItem && !hasEndContent;
605
605
  const mode = ionicGlobal.getIonMode(this);
606
606
  helpers.renderHiddenInput(true, el, this.name, JSON.stringify(this.getValue()), disabled);
607
- return (index.h(index.Host, { key: 'f66f03965290003b8a2b74b6f16ebf5615291688', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: theme.createColorClasses(this.color, {
607
+ return (index.h(index.Host, { key: '7ad5ca892fd46c64ce5583e91e6812410a869921', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: theme.createColorClasses(this.color, {
608
608
  [mode]: true,
609
609
  'in-item': inItem,
610
610
  'range-disabled': disabled,
@@ -613,10 +613,10 @@ const Range = class {
613
613
  [`range-label-placement-${labelPlacement}`]: true,
614
614
  'range-item-start-adjustment': needsStartAdjustment,
615
615
  'range-item-end-adjustment': needsEndAdjustment,
616
- }) }, index.h("label", { key: '4b0035999693e241afb753f4c335ec386a2f5a2b', class: "range-wrapper", id: "range-label" }, index.h("div", { key: 'f03119f14a4c6bb2f6c529e885002df633cd1797', class: {
616
+ }) }, index.h("label", { key: 'eb8d46a9572341b4cc3c91d8a5de0667bd166ca4', class: "range-wrapper", id: "range-label" }, index.h("div", { key: '21acd6ff6eba17bf6923bf723fea055b95fd29ca', class: {
617
617
  'label-text-wrapper': true,
618
618
  'label-text-wrapper-hidden': !hasLabel,
619
- }, part: "label" }, label !== undefined ? index.h("div", { class: "label-text" }, label) : index.h("slot", { name: "label" })), index.h("div", { key: '72678b1d17ac2a6dfeee26d40a6a80bcc0e7e2fe', class: "native-wrapper" }, index.h("slot", { key: 'c555ac9598427b81fddd5415ea673479c2247977', name: "start" }), this.renderRangeSlider(), index.h("slot", { key: 'bf58ccc934a246b303c766d16df5eeb62c225b12', name: "end" })))));
619
+ }, part: "label" }, label !== undefined ? index.h("div", { class: "label-text" }, label) : index.h("slot", { name: "label" })), index.h("div", { key: '7644c86a6ad3edf2c27f02dd2a14795b3720ea0d', class: "native-wrapper" }, index.h("slot", { key: '1bbeccee57addc126b36de395e28ba655248695b', name: "start" }), this.renderRangeSlider(), index.h("slot", { key: '2963dd84e4116fc3956c304eb53deefd0d1291df', name: "end" })))));
620
620
  }
621
621
  get el() { return index.getElement(this); }
622
622
  static get watchers() { return {
@@ -800,7 +800,7 @@ const Refresher = class {
800
800
  }
801
801
  render() {
802
802
  const mode = ionicGlobal.getIonMode(this);
803
- return (index.h(index.Host, { key: 'e7f4f2f96de7e80430bf54967ebc12e7216b2ca9', slot: "fixed", class: {
803
+ return (index.h(index.Host, { key: '1696f66f62d18c9075294f17cb24263325fcf35d', slot: "fixed", class: {
804
804
  [mode]: true,
805
805
  // Used internally for styling
806
806
  [`refresher-${mode}`]: true,
@@ -867,7 +867,7 @@ const RefresherContent = class {
867
867
  const pullingIcon = this.pullingIcon;
868
868
  const hasSpinner = pullingIcon != null && spinnerConfigs.SPINNERS[pullingIcon] !== undefined;
869
869
  const mode = ionicGlobal.getIonMode(this);
870
- return (index.h(index.Host, { key: '19633bbcf02e3dba885d6bdcdaf2269bf4c8e2f5', class: mode }, index.h("div", { key: '28922e434a55a6cac0476fe2bee56941ce0d1c02', class: "refresher-pulling" }, this.pullingIcon && hasSpinner && (index.h("div", { key: 'fe575bf996021884677e9b23a3215d63caf894f5', class: "refresher-pulling-icon" }, index.h("div", { key: '59fe12297fd95bc33b8df8cd35316e2a1c084d91', class: "spinner-arrow-container" }, index.h("ion-spinner", { key: 'af9cc013ae04945c140b2865610ca73edb52ab48', name: this.pullingIcon, paused: true }), mode === 'md' && this.pullingIcon === 'circular' && (index.h("div", { key: '34df66ad1b0f706a0532957251aa2c20bf4587d8', class: "arrow-container" }, index.h("ion-icon", { key: 'ffdb5c123e606b823491c6c51cc2b497f62581bb', icon: index$2.caretBackSharp, "aria-hidden": "true" })))))), this.pullingIcon && !hasSpinner && (index.h("div", { key: 'ac3a2032bb969264d20fa057e9123441005d7a9d', class: "refresher-pulling-icon" }, index.h("ion-icon", { key: 'd969d10915548e72aae289b52154366f3dd39b31', icon: this.pullingIcon, lazy: false, "aria-hidden": "true" }))), this.pullingText !== undefined && this.renderPullingText()), index.h("div", { key: 'a8f854f81a94812d7bef8ce088331d94f49ff53d', class: "refresher-refreshing" }, this.refreshingSpinner && (index.h("div", { key: 'a1f646945370e40c844d62bc0c647443ae9dfbe7', class: "refresher-refreshing-icon" }, index.h("ion-spinner", { key: 'ab3ff4047769b6436e222b46d193c1e8b23e2fce', name: this.refreshingSpinner }))), this.refreshingText !== undefined && this.renderRefreshingText())));
870
+ return (index.h(index.Host, { key: '1bec5b4da221c69d856f3f5ddf40f2e03ebf2a4c', class: mode }, index.h("div", { key: '4fcc526c4f1881e9368d9cd16bd7030919bd3841', class: "refresher-pulling" }, this.pullingIcon && hasSpinner && (index.h("div", { key: 'a4e9e2e12c2d7faefc8303ec8c021f999ddf308e', class: "refresher-pulling-icon" }, index.h("div", { key: '5a2d215feb7fb4b64d540d3a65c0f24b415a2433', class: "spinner-arrow-container" }, index.h("ion-spinner", { key: 'abef2621d671ac6ff0abac43a702cbd825b7f127', name: this.pullingIcon, paused: true }), mode === 'md' && this.pullingIcon === 'circular' && (index.h("div", { key: '30087d672c3780672a05874cd93cd099b2855462', class: "arrow-container" }, index.h("ion-icon", { key: '5e30333dee469aec0d8efc8c4e6dabb619c6f363', icon: index$2.caretBackSharp, "aria-hidden": "true" })))))), this.pullingIcon && !hasSpinner && (index.h("div", { key: '48fe72b5ce8ded633c6ee799cebb520b9c8be528', class: "refresher-pulling-icon" }, index.h("ion-icon", { key: 'd8dfd5d42056b1c0a436c5006affb255407816c0', icon: this.pullingIcon, lazy: false, "aria-hidden": "true" }))), this.pullingText !== undefined && this.renderPullingText()), index.h("div", { key: 'c2cbfb94f157c82601ffe7bb815ff82ebc7c0a49', class: "refresher-refreshing" }, this.refreshingSpinner && (index.h("div", { key: '17f3ebe6a31768d5e389f45a2c12f68600185db9', class: "refresher-refreshing-icon" }, index.h("ion-spinner", { key: 'e8e61f8d7189c9939bba184201c9509d1d5b0fad', name: this.refreshingSpinner }))), this.refreshingText !== undefined && this.renderRefreshingText())));
871
871
  }
872
872
  get el() { return index.getElement(this); }
873
873
  };
@@ -37,7 +37,7 @@ const Reorder = class {
37
37
  render() {
38
38
  const mode = ionicGlobal.getIonMode(this);
39
39
  const reorderIcon = mode === 'ios' ? index$1.reorderThreeOutline : index$1.reorderTwoSharp;
40
- return (index.h(index.Host, { key: '27266e30bcb7e10c57fb6d546399cfb1f1c93b23', class: mode }, index.h("slot", { key: '8745cb9a31458e884c27eed1fb90d104fe9a79eb' }, index.h("ion-icon", { key: '6c4b9631a2f5610f1e21b2db025b6702d0d593bf', icon: reorderIcon, lazy: false, class: "reorder-icon", part: "icon", "aria-hidden": "true" }))));
40
+ return (index.h(index.Host, { key: '663d74e231e3af56b6298ee2539fdac9c8465839', class: mode }, index.h("slot", { key: 'c7c384ab8c9ca8abdc89cd984a39dfde70e342ca' }, index.h("ion-icon", { key: 'c8b6052db03d4b9e33a90e600c20861c73ee73ce', icon: reorderIcon, lazy: false, class: "reorder-icon", part: "icon", "aria-hidden": "true" }))));
41
41
  }
42
42
  get el() { return index.getElement(this); }
43
43
  };
@@ -283,7 +283,7 @@ const ReorderGroup = class {
283
283
  }
284
284
  render() {
285
285
  const mode = ionicGlobal.getIonMode(this);
286
- return (index.h(index.Host, { key: 'a38c7fbceb677201330a602273d5b55abb32da19', class: {
286
+ return (index.h(index.Host, { key: '491f3e5843cf728ff4589e58bd86b8ce6709b293', class: {
287
287
  [mode]: true,
288
288
  'reorder-enabled': !this.disabled,
289
289
  'reorder-list-active': this.state !== 0 /* ReorderGroupState.Idle */,
@@ -68,7 +68,7 @@ const RippleEffect = class {
68
68
  }
69
69
  render() {
70
70
  const mode = ionicGlobal.getIonMode(this);
71
- return (index.h(index.Host, { key: '7ae559bda5d2c1856a45bfa150c2cb4f83373f8e', role: "presentation", class: {
71
+ return (index.h(index.Host, { key: '2302f087ab1c6755355736e4ca77309c5fdcf185', role: "presentation", class: {
72
72
  [mode]: true,
73
73
  unbounded: this.unbounded,
74
74
  } }));
@@ -882,10 +882,10 @@ const RouterLink = class {
882
882
  rel: this.rel,
883
883
  target: this.target,
884
884
  };
885
- return (index.h(index.Host, { key: '529ceed5beaf92d7b4cc315c82f449eac18310e8', onClick: this.onClick, class: theme.createColorClasses(this.color, {
885
+ return (index.h(index.Host, { key: 'f876442cab5b14b7e83c6d6ad2c2d878a9c57439', onClick: this.onClick, class: theme.createColorClasses(this.color, {
886
886
  [mode]: true,
887
887
  'ion-activatable': true,
888
- }) }, index.h("a", Object.assign({ key: 'd5f1f8b256695d70bdafd20ff3d1b625963fa2da' }, attrs), index.h("slot", { key: '613fcdb36a71e076f989551ea21f1d5c118b1cd2' }))));
888
+ }) }, index.h("a", Object.assign({ key: 'c44b78ec1fd10a40c23bfe548860ac2b346646a8' }, attrs), index.h("slot", { key: 'd32180a567613f79f89885135bd0d776ffc1eb8e' }))));
889
889
  }
890
890
  };
891
891
  RouterLink.style = IonRouterLinkStyle0;
@@ -393,8 +393,8 @@ const Searchbar = class {
393
393
  const clearIcon = this.clearIcon || (mode === 'ios' ? index$1.closeCircle : index$1.closeSharp);
394
394
  const searchIcon = this.searchIcon || (mode === 'ios' ? index$1.searchOutline : index$1.searchSharp);
395
395
  const shouldShowCancelButton = this.shouldShowCancelButton();
396
- const cancelButton = this.showCancelButton !== 'never' && (index.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" }, index.h("div", { key: '10b06fdbb3ae51bf02bd094205d075e1f9b60ea3', "aria-hidden": "true" }, mode === 'md' ? (index.h("ion-icon", { "aria-hidden": "true", mode: mode, icon: this.cancelButtonIcon, lazy: false })) : (cancelButtonText))));
397
- return (index.h(index.Host, { key: 'f1a07f9e2f27f5297581e66c80097cf7843c1a5a', role: "search", "aria-disabled": this.disabled ? 'true' : null, class: theme.createColorClasses(this.color, {
396
+ const cancelButton = this.showCancelButton !== 'never' && (index.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" }, index.h("div", { key: 'a3ae5d8a6fe3a96b5aa7142f7a246876fdbe3ef3', "aria-hidden": "true" }, mode === 'md' ? (index.h("ion-icon", { "aria-hidden": "true", mode: mode, icon: this.cancelButtonIcon, lazy: false })) : (cancelButtonText))));
397
+ return (index.h(index.Host, { key: '543593e248261418ea75580e5fbed1c613e57d00', role: "search", "aria-disabled": this.disabled ? 'true' : null, class: theme.createColorClasses(this.color, {
398
398
  [mode]: true,
399
399
  'searchbar-animated': animated,
400
400
  'searchbar-disabled': this.disabled,
@@ -404,14 +404,14 @@ const Searchbar = class {
404
404
  'searchbar-has-focus': this.focused,
405
405
  'searchbar-should-show-clear': this.shouldShowClearButton(),
406
406
  'searchbar-should-show-cancel': this.shouldShowCancelButton(),
407
- }) }, index.h("div", { key: '9b7dc9abf5b1925872c75f6c992aac465700b615', class: "searchbar-input-container" }, index.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, index.h("ion-icon", { key: 'd475776f64b55d13d49f8193f3b84a4e669403c7', "aria-hidden": "true", mode: mode, icon: searchIcon, lazy: false, class: "searchbar-search-icon" }), index.h("button", { key: '9b5b681edfac608ed1c20175086ec40c652a7f07', "aria-label": "reset", type: "button", "no-blur": true, class: "searchbar-clear-button", onPointerDown: (ev) => {
407
+ }) }, index.h("div", { key: '01351daea61933fedd1bd6289376183962096479', class: "searchbar-input-container" }, index.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, index.h("ion-icon", { key: '4d20d2db6ce72e82f86fa140ebd2ad3b6bbf4bd6', "aria-hidden": "true", mode: mode, icon: searchIcon, lazy: false, class: "searchbar-search-icon" }), index.h("button", { key: '40102559fa7864a7545466cf1abc40131b5ace6c', "aria-label": "reset", type: "button", "no-blur": true, class: "searchbar-clear-button", onPointerDown: (ev) => {
408
408
  /**
409
409
  * This prevents mobile browsers from
410
410
  * blurring the input when the clear
411
411
  * button is activated.
412
412
  */
413
413
  ev.preventDefault();
414
- }, onClick: () => this.onClearInput(true) }, index.h("ion-icon", { key: '44c85c0d3a1346c5e9306a65f6a7cf0fcdc1f149', "aria-hidden": "true", mode: mode, icon: clearIcon, lazy: false, class: "searchbar-clear-icon" }))), mode === 'ios' && cancelButton));
414
+ }, onClick: () => this.onClearInput(true) }, index.h("ion-icon", { key: '42eb950e72357bba1a1fe2dacfa982412c9d64db', "aria-hidden": "true", mode: mode, icon: clearIcon, lazy: false, class: "searchbar-clear-icon" }))), mode === 'ios' && cancelButton));
415
415
  }
416
416
  get el() { return index.getElement(this); }
417
417
  static get watchers() { return {