@ionic/core 8.8.11-dev.11781639886.140139f2 → 8.8.11-dev.11782911278.11f0315e

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 (289) hide show
  1. package/components/index.js +1 -1
  2. package/components/ion-action-sheet.js +1 -1
  3. package/components/ion-alert.js +1 -1
  4. package/components/ion-back-button.js +1 -1
  5. package/components/ion-button.js +1 -1
  6. package/components/ion-card.js +1 -1
  7. package/components/ion-chip.js +1 -1
  8. package/components/ion-datetime-button.js +1 -1
  9. package/components/ion-datetime.js +1 -1
  10. package/components/ion-fab-button.js +1 -1
  11. package/components/ion-infinite-scroll-content.js +1 -1
  12. package/components/ion-input-password-toggle.js +1 -1
  13. package/components/ion-input.js +1 -1
  14. package/components/ion-item-option.js +1 -1
  15. package/components/ion-item.js +1 -1
  16. package/components/ion-loading.js +1 -1
  17. package/components/ion-menu-button.js +1 -1
  18. package/components/ion-menu.js +1 -1
  19. package/components/ion-modal.js +1 -1
  20. package/components/ion-popover.js +1 -1
  21. package/components/ion-progress-bar.js +1 -1
  22. package/components/ion-radio.js +1 -1
  23. package/components/ion-range.js +1 -1
  24. package/components/ion-refresher-content.js +1 -1
  25. package/components/ion-refresher.js +1 -1
  26. package/components/ion-reorder-group.js +1 -1
  27. package/components/ion-reorder.js +1 -1
  28. package/components/ion-ripple-effect.js +1 -1
  29. package/components/ion-router-link.js +1 -1
  30. package/components/ion-router-outlet.js +1 -1
  31. package/components/ion-row.js +1 -1
  32. package/components/ion-searchbar.js +1 -1
  33. package/components/ion-segment-button.js +1 -1
  34. package/components/ion-segment-content.js +1 -1
  35. package/components/ion-segment-view.js +1 -1
  36. package/components/ion-segment.js +1 -1
  37. package/components/ion-select-modal.js +1 -1
  38. package/components/ion-select-option.js +1 -1
  39. package/components/ion-select-popover.js +1 -1
  40. package/components/ion-select.js +1 -1
  41. package/components/ion-skeleton-text.js +1 -1
  42. package/components/ion-spinner.js +1 -1
  43. package/components/ion-split-pane.js +1 -1
  44. package/components/ion-tab-bar.js +1 -1
  45. package/components/ion-tab-button.js +1 -1
  46. package/components/ion-tab.js +1 -1
  47. package/components/ion-tabs.js +1 -1
  48. package/components/ion-text.js +1 -1
  49. package/components/ion-textarea.js +1 -1
  50. package/components/ion-thumbnail.js +1 -1
  51. package/components/ion-title.js +1 -1
  52. package/components/ion-toast.js +1 -1
  53. package/components/ion-toggle.js +1 -1
  54. package/components/ion-toolbar.js +1 -1
  55. package/components/{p-nQi4oKcG.js → p-B8U2xbtx.js} +1 -1
  56. package/components/p-CHzfYZbv.js +4 -0
  57. package/components/{p-DDWp95gH.js → p-Ck2wcXbv.js} +1 -1
  58. package/components/p-D4h1H_hh.js +4 -0
  59. package/components/{p-C2lKgrXx.js → p-DEBD4LvH.js} +1 -1
  60. package/components/p-DH50pr9O.js +4 -0
  61. package/components/{p-BSEgsdFI.js → p-DhkITZ-y.js} +1 -1
  62. package/components/p-DmpBvltk.js +4 -0
  63. package/components/{p-5bE_Wz4Y.js → p-DpV-p5Xs.js} +1 -1
  64. package/components/{p-Cfx4M1Bn.js → p-Dz74mwlk.js} +1 -1
  65. package/components/{p-BLmJ0zRm.js → p-XJWMAP8m.js} +1 -1
  66. package/components/p-djQLE88P.js +4 -0
  67. package/components/{p-B60hm8Qv.js → p-r0aq7dpt.js} +1 -1
  68. package/components/{p-rCa2eL0j.js → p-wk2QqrAo.js} +1 -1
  69. package/dist/cjs/index.cjs.js +1 -2
  70. package/dist/cjs/ion-action-sheet.cjs.entry.js +8 -4
  71. package/dist/cjs/ion-alert.cjs.entry.js +7 -3
  72. package/dist/cjs/ion-app_8.cjs.entry.js +23 -9
  73. package/dist/cjs/ion-avatar_3.cjs.entry.js +1 -1
  74. package/dist/cjs/ion-col_3.cjs.entry.js +1 -1
  75. package/dist/cjs/{ion-datetime_3.cjs.entry.js → ion-datetime.cjs.entry.js} +1 -639
  76. package/dist/cjs/ion-input.cjs.entry.js +4 -4
  77. package/dist/cjs/ion-item_8.cjs.entry.js +2 -2
  78. package/dist/cjs/ion-loading.cjs.entry.js +7 -3
  79. package/dist/cjs/ion-menu_3.cjs.entry.js +1 -1
  80. package/dist/cjs/ion-modal.cjs.entry.js +21 -10
  81. package/dist/cjs/ion-popover.cjs.entry.js +7 -3
  82. package/dist/cjs/ion-progress-bar.cjs.entry.js +1 -1
  83. package/dist/cjs/ion-radio_2.cjs.entry.js +3 -3
  84. package/dist/cjs/ion-range.cjs.entry.js +3 -3
  85. package/dist/cjs/ion-refresher_2.cjs.entry.js +2 -2
  86. package/dist/cjs/ion-reorder_2.cjs.entry.js +2 -2
  87. package/dist/cjs/ion-ripple-effect.cjs.entry.js +1 -1
  88. package/dist/cjs/ion-route_4.cjs.entry.js +2 -2
  89. package/dist/cjs/ion-searchbar.cjs.entry.js +5 -5
  90. package/dist/cjs/ion-segment-content.cjs.entry.js +1 -1
  91. package/dist/cjs/ion-segment-view.cjs.entry.js +2 -2
  92. package/dist/cjs/ion-segment_2.cjs.entry.js +4 -4
  93. package/dist/cjs/ion-select-modal.cjs.entry.js +2 -2
  94. package/dist/cjs/ion-select_3.cjs.entry.js +36 -5
  95. package/dist/cjs/ion-spinner.cjs.entry.js +1 -1
  96. package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
  97. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +4 -4
  98. package/dist/cjs/ion-tab_2.cjs.entry.js +3 -3
  99. package/dist/cjs/ion-text.cjs.entry.js +2 -2
  100. package/dist/cjs/ion-textarea.cjs.entry.js +2 -2
  101. package/dist/cjs/ion-toast.cjs.entry.js +3 -3
  102. package/dist/cjs/ion-toggle.cjs.entry.js +3 -3
  103. package/dist/cjs/ionic.cjs.js +1 -1
  104. package/dist/cjs/loader.cjs.js +1 -1
  105. package/dist/cjs/{overlays-TbKsuC-K.js → overlays-DSmSrd_4.js} +26 -7
  106. package/dist/collection/collection-manifest.json +5 -9
  107. package/dist/collection/components/action-sheet/action-sheet.js +8 -4
  108. package/dist/collection/components/alert/alert.js +7 -3
  109. package/dist/collection/components/input/input.js +8 -8
  110. package/dist/collection/components/loading/loading.js +7 -3
  111. package/dist/collection/components/modal/modal.js +23 -12
  112. package/dist/collection/components/popover/popover.js +7 -3
  113. package/dist/collection/components/progress-bar/progress-bar.js +1 -1
  114. package/dist/collection/components/radio/radio.js +4 -4
  115. package/dist/collection/components/range/range.js +3 -3
  116. package/dist/collection/components/refresher/refresher.js +1 -1
  117. package/dist/collection/components/refresher-content/refresher-content.js +1 -1
  118. package/dist/collection/components/reorder/reorder.js +1 -1
  119. package/dist/collection/components/reorder-group/reorder-group.js +1 -1
  120. package/dist/collection/components/ripple-effect/ripple-effect.js +1 -1
  121. package/dist/collection/components/router-link/router-link.js +2 -2
  122. package/dist/collection/components/router-outlet/router-outlet.js +38 -5
  123. package/dist/collection/components/row/row.js +1 -1
  124. package/dist/collection/components/searchbar/searchbar.js +9 -9
  125. package/dist/collection/components/segment/segment.js +2 -2
  126. package/dist/collection/components/segment-button/segment-button.js +2 -2
  127. package/dist/collection/components/segment-content/segment-content.js +1 -1
  128. package/dist/collection/components/segment-view/segment-view.js +2 -2
  129. package/dist/collection/components/select/select.js +33 -2
  130. package/dist/collection/components/select-modal/select-modal.js +1 -1
  131. package/dist/collection/components/select-option/select-option.js +1 -1
  132. package/dist/collection/components/select-popover/select-popover.js +1 -1
  133. package/dist/collection/components/skeleton-text/skeleton-text.js +2 -2
  134. package/dist/collection/components/spinner/spinner.js +1 -1
  135. package/dist/collection/components/split-pane/split-pane.js +2 -2
  136. package/dist/collection/components/tab/tab.js +2 -2
  137. package/dist/collection/components/tab-bar/tab-bar.js +2 -2
  138. package/dist/collection/components/tab-button/tab-button.js +2 -2
  139. package/dist/collection/components/tabs/tabs.js +1 -1
  140. package/dist/collection/components/text/text.js +2 -2
  141. package/dist/collection/components/textarea/textarea.js +2 -2
  142. package/dist/collection/components/thumbnail/thumbnail.js +1 -1
  143. package/dist/collection/components/title/title.js +2 -2
  144. package/dist/collection/components/toast/toast.js +2 -2
  145. package/dist/collection/components/toggle/toggle.js +3 -3
  146. package/dist/collection/components/toolbar/toolbar.js +2 -2
  147. package/dist/collection/index.js +1 -1
  148. package/dist/collection/utils/overlays.js +25 -6
  149. package/dist/docs.json +250 -1173
  150. package/dist/esm/{index-DV3sJJW8.js → index-AlrZKoWR.js} +1 -1
  151. package/dist/esm/index.js +1 -1
  152. package/dist/esm/ion-accordion_2.entry.js +1 -1
  153. package/dist/esm/ion-action-sheet.entry.js +8 -4
  154. package/dist/esm/ion-alert.entry.js +7 -3
  155. package/dist/esm/ion-app_8.entry.js +23 -9
  156. package/dist/esm/ion-avatar_3.entry.js +1 -1
  157. package/dist/esm/ion-back-button.entry.js +1 -1
  158. package/dist/esm/ion-breadcrumb_2.entry.js +1 -1
  159. package/dist/esm/ion-col_3.entry.js +1 -1
  160. package/dist/esm/{ion-datetime_3.entry.js → ion-datetime.entry.js} +5 -641
  161. package/dist/esm/ion-fab_3.entry.js +1 -1
  162. package/dist/esm/ion-input-password-toggle.entry.js +1 -1
  163. package/dist/esm/ion-input.entry.js +5 -5
  164. package/dist/esm/ion-item_8.entry.js +3 -3
  165. package/dist/esm/ion-loading.entry.js +7 -3
  166. package/dist/esm/ion-menu_3.entry.js +2 -2
  167. package/dist/esm/ion-modal.entry.js +21 -10
  168. package/dist/esm/ion-popover.entry.js +7 -3
  169. package/dist/esm/ion-progress-bar.entry.js +1 -1
  170. package/dist/esm/ion-radio_2.entry.js +3 -3
  171. package/dist/esm/ion-range.entry.js +3 -3
  172. package/dist/esm/ion-refresher_2.entry.js +3 -3
  173. package/dist/esm/ion-reorder_2.entry.js +3 -3
  174. package/dist/esm/ion-ripple-effect.entry.js +1 -1
  175. package/dist/esm/ion-route_4.entry.js +2 -2
  176. package/dist/esm/ion-searchbar.entry.js +6 -6
  177. package/dist/esm/ion-segment-content.entry.js +1 -1
  178. package/dist/esm/ion-segment-view.entry.js +2 -2
  179. package/dist/esm/ion-segment_2.entry.js +4 -4
  180. package/dist/esm/ion-select-modal.entry.js +2 -2
  181. package/dist/esm/ion-select_3.entry.js +38 -7
  182. package/dist/esm/ion-spinner.entry.js +1 -1
  183. package/dist/esm/ion-split-pane.entry.js +2 -2
  184. package/dist/esm/ion-tab-bar_2.entry.js +4 -4
  185. package/dist/esm/ion-tab_2.entry.js +3 -3
  186. package/dist/esm/ion-text.entry.js +2 -2
  187. package/dist/esm/ion-textarea.entry.js +2 -2
  188. package/dist/esm/ion-toast.entry.js +3 -3
  189. package/dist/esm/ion-toggle.entry.js +4 -4
  190. package/dist/esm/ionic.js +1 -1
  191. package/dist/esm/loader.js +1 -1
  192. package/dist/esm/{overlays-TbiM4mdr.js → overlays-DLNOHWNc.js} +26 -7
  193. package/dist/html.html-data.json +7 -78
  194. package/dist/ionic/index.esm.js +1 -1
  195. package/dist/ionic/ionic.esm.js +1 -1
  196. package/dist/ionic/{p-aa5d6b8f.entry.js → p-03aa786d.entry.js} +1 -1
  197. package/dist/ionic/{p-8fce95d5.entry.js → p-14095ba5.entry.js} +1 -1
  198. package/dist/ionic/{p-3a126bca.entry.js → p-259d0d98.entry.js} +1 -1
  199. package/dist/ionic/{p-e847a888.entry.js → p-2a6d6565.entry.js} +1 -1
  200. package/dist/ionic/{p-fabcce6c.entry.js → p-341032b3.entry.js} +1 -1
  201. package/dist/ionic/{p-a21add2f.entry.js → p-441fbb13.entry.js} +1 -1
  202. package/dist/ionic/{p-3a7d1e91.entry.js → p-4502a274.entry.js} +1 -1
  203. package/dist/ionic/p-4621c387.entry.js +4 -0
  204. package/dist/ionic/p-4bb3eb60.entry.js +4 -0
  205. package/dist/ionic/{p-874b4bd8.entry.js → p-51cd1643.entry.js} +1 -1
  206. package/dist/ionic/p-5c3ec490.entry.js +4 -0
  207. package/dist/ionic/{p-3ae5f277.entry.js → p-627fabd9.entry.js} +1 -1
  208. package/dist/ionic/{p-e0be05c5.entry.js → p-629e4703.entry.js} +1 -1
  209. package/dist/ionic/{p-5d1da0a2.entry.js → p-76e92a84.entry.js} +1 -1
  210. package/dist/ionic/p-79a36078.entry.js +4 -0
  211. package/dist/ionic/{p-9f1103ce.entry.js → p-7a37b3ce.entry.js} +1 -1
  212. package/dist/ionic/p-7aed7726.entry.js +4 -0
  213. package/dist/ionic/p-7ebd980c.entry.js +4 -0
  214. package/dist/ionic/{p-3353c229.entry.js → p-80b44b3c.entry.js} +1 -1
  215. package/dist/ionic/p-8d624ee5.entry.js +4 -0
  216. package/dist/ionic/{p-390ca786.entry.js → p-9177f4ac.entry.js} +1 -1
  217. package/dist/ionic/p-9c6a5a8d.entry.js +4 -0
  218. package/dist/ionic/{p-DV3sJJW8.js → p-AlrZKoWR.js} +1 -1
  219. package/dist/ionic/p-Cg5-OQYy.js +4 -0
  220. package/dist/ionic/p-a2e51c5d.entry.js +4 -0
  221. package/dist/ionic/{p-4858af1f.entry.js → p-a5213260.entry.js} +1 -1
  222. package/dist/ionic/{p-37e720da.entry.js → p-a7628bc7.entry.js} +1 -1
  223. package/dist/ionic/{p-ef4c3bee.entry.js → p-b1599fca.entry.js} +1 -1
  224. package/dist/ionic/p-b16be471.entry.js +4 -0
  225. package/dist/ionic/{p-84d5ce05.entry.js → p-b9ac1fe0.entry.js} +1 -1
  226. package/dist/ionic/{p-94f2a736.entry.js → p-c93553d2.entry.js} +1 -1
  227. package/dist/ionic/{p-75dc25ba.entry.js → p-d2c7f046.entry.js} +1 -1
  228. package/dist/ionic/{p-c4d8641b.entry.js → p-d8387b99.entry.js} +1 -1
  229. package/dist/ionic/p-d8ac9eea.entry.js +4 -0
  230. package/dist/ionic/{p-9a65ac7f.entry.js → p-db1b6738.entry.js} +1 -1
  231. package/dist/ionic/p-ed797c72.entry.js +4 -0
  232. package/dist/ionic/{p-8eb8ee76.entry.js → p-ef93ca92.entry.js} +1 -1
  233. package/dist/ionic/p-f09f9642.entry.js +4 -0
  234. package/dist/ionic/p-f1c06f82.entry.js +4 -0
  235. package/dist/ionic/{p-0fa9c382.entry.js → p-fe4aa1db.entry.js} +1 -1
  236. package/dist/types/components/input/input.d.ts +1 -1
  237. package/dist/types/components/modal/modal.d.ts +11 -4
  238. package/dist/types/components/router-outlet/router-outlet.d.ts +7 -0
  239. package/dist/types/components/searchbar/searchbar.d.ts +1 -1
  240. package/dist/types/components/select/select.d.ts +1 -0
  241. package/dist/types/components.d.ts +23 -286
  242. package/dist/types/index.d.ts +1 -1
  243. package/dist/types/interface.d.ts +0 -1
  244. package/dist/types/utils/config.d.ts +0 -8
  245. package/dist/types/utils/overlays.d.ts +11 -9
  246. package/hydrate/index.js +214 -800
  247. package/hydrate/index.mjs +214 -800
  248. package/package.json +37 -5
  249. package/components/ion-picker-legacy-column.d.ts +0 -11
  250. package/components/ion-picker-legacy-column.js +0 -4
  251. package/components/ion-picker-legacy.d.ts +0 -11
  252. package/components/ion-picker-legacy.js +0 -4
  253. package/components/p-0NRupjzW.js +0 -4
  254. package/components/p-Bth-EzJ0.js +0 -4
  255. package/components/p-CU5rbWAW.js +0 -4
  256. package/components/p-W9CZ2mWX.js +0 -4
  257. package/components/p-dhLYXa7A.js +0 -4
  258. package/components/p-uVRyUM3z.js +0 -4
  259. package/dist/collection/components/picker-legacy/animations/ios.enter.js +0 -27
  260. package/dist/collection/components/picker-legacy/animations/ios.leave.js +0 -23
  261. package/dist/collection/components/picker-legacy/picker-interface.js +0 -1
  262. package/dist/collection/components/picker-legacy/picker.ios.css +0 -300
  263. package/dist/collection/components/picker-legacy/picker.js +0 -890
  264. package/dist/collection/components/picker-legacy/picker.md.css +0 -287
  265. package/dist/collection/components/picker-legacy-column/picker-column.ios.css +0 -231
  266. package/dist/collection/components/picker-legacy-column/picker-column.js +0 -422
  267. package/dist/collection/components/picker-legacy-column/picker-column.md.css +0 -222
  268. package/dist/collection/components/picker-legacy-column/test/test.utils.js +0 -43
  269. package/dist/ionic/p-00dbb17e.entry.js +0 -4
  270. package/dist/ionic/p-01f81ea5.entry.js +0 -4
  271. package/dist/ionic/p-0d005398.entry.js +0 -4
  272. package/dist/ionic/p-27d30585.entry.js +0 -4
  273. package/dist/ionic/p-2bb2cb18.entry.js +0 -4
  274. package/dist/ionic/p-2f55dc1a.entry.js +0 -4
  275. package/dist/ionic/p-30bf9737.entry.js +0 -4
  276. package/dist/ionic/p-3a541154.entry.js +0 -4
  277. package/dist/ionic/p-485fda23.entry.js +0 -4
  278. package/dist/ionic/p-4baa5b82.entry.js +0 -4
  279. package/dist/ionic/p-4dc1c33c.entry.js +0 -4
  280. package/dist/ionic/p-5fc7e542.entry.js +0 -4
  281. package/dist/ionic/p-e686695b.entry.js +0 -4
  282. package/dist/ionic/p-ec090e0a.entry.js +0 -4
  283. package/dist/ionic/p-xOfi7-Zn.js +0 -4
  284. package/dist/types/components/picker-legacy/animations/ios.enter.d.ts +0 -5
  285. package/dist/types/components/picker-legacy/animations/ios.leave.d.ts +0 -5
  286. package/dist/types/components/picker-legacy/picker-interface.d.ts +0 -52
  287. package/dist/types/components/picker-legacy/picker.d.ts +0 -158
  288. package/dist/types/components/picker-legacy-column/picker-column.d.ts +0 -46
  289. package/dist/types/components/picker-legacy-column/test/test.utils.d.ts +0 -9
package/hydrate/index.mjs CHANGED
@@ -8039,7 +8039,7 @@ const focusElementInOverlay = (hostToFocus, overlay) => {
8039
8039
  * Should NOT include: Toast
8040
8040
  */
8041
8041
  const trapKeyboardFocus = (ev, doc) => {
8042
- const lastOverlay = getPresentedOverlay(doc, 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-picker-legacy,ion-popover');
8042
+ const lastOverlay = getPresentedOverlay(doc, 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-popover');
8043
8043
  const target = ev.target;
8044
8044
  /**
8045
8045
  * If no active overlay, ignore this event.
@@ -8273,7 +8273,7 @@ const dismissOverlay = (doc, data, role, overlayTag, id) => {
8273
8273
  */
8274
8274
  const getOverlays = (doc, selector) => {
8275
8275
  if (selector === undefined) {
8276
- selector = 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-picker-legacy,ion-popover,ion-toast';
8276
+ selector = 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-popover,ion-toast';
8277
8277
  }
8278
8278
  return Array.from(doc.querySelectorAll(selector)).filter((c) => c.overlayIndex > 0);
8279
8279
  };
@@ -8335,6 +8335,29 @@ const setRootAriaHidden = (hidden = false) => {
8335
8335
  viewContainer.removeAttribute('aria-hidden');
8336
8336
  }
8337
8337
  };
8338
+ /**
8339
+ * Cleans up root `aria-hidden` and `backdrop-no-scroll` when
8340
+ * an overlay is removed from the DOM without going through
8341
+ * the `dismiss()` flow (e.g., when a framework unmounts the
8342
+ * overlay during a route change).
8343
+ *
8344
+ * Should be called from an overlay's `disconnectedCallback`
8345
+ * when the overlay was still presented at the time of removal.
8346
+ */
8347
+ const cleanupRootFocusTrapAccessibility = () => {
8348
+ if (typeof document === 'undefined') {
8349
+ return;
8350
+ }
8351
+ const remainingOverlays = getPresentedOverlays(document);
8352
+ const hasRemainingLocking = remainingOverlays.some((o) => {
8353
+ const el = o;
8354
+ return el.tagName !== 'ION-TOAST' && el.focusTrap !== false && isBackdropAlwaysBlocking(el);
8355
+ });
8356
+ if (!hasRemainingLocking) {
8357
+ setRootAriaHidden(false);
8358
+ document.body.classList.remove(BACKDROP_NO_SCROLL);
8359
+ }
8360
+ };
8338
8361
  const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts) => {
8339
8362
  var _a, _b;
8340
8363
  if (overlay.presented) {
@@ -9591,7 +9614,7 @@ const createAnimation = (animationId) => {
9591
9614
  /**
9592
9615
  * iOS Action Sheet Enter Animation
9593
9616
  */
9594
- const iosEnterAnimation$6 = (baseEl) => {
9617
+ const iosEnterAnimation$5 = (baseEl) => {
9595
9618
  const baseAnimation = createAnimation();
9596
9619
  const backdropAnimation = createAnimation();
9597
9620
  const wrapperAnimation = createAnimation();
@@ -9615,7 +9638,7 @@ const iosEnterAnimation$6 = (baseEl) => {
9615
9638
  /**
9616
9639
  * iOS Action Sheet Leave Animation
9617
9640
  */
9618
- const iosLeaveAnimation$6 = (baseEl) => {
9641
+ const iosLeaveAnimation$5 = (baseEl) => {
9619
9642
  const baseAnimation = createAnimation();
9620
9643
  const backdropAnimation = createAnimation();
9621
9644
  const wrapperAnimation = createAnimation();
@@ -9771,7 +9794,7 @@ class ActionSheet {
9771
9794
  async present() {
9772
9795
  const unlock = await this.lockController.lock();
9773
9796
  await this.delegateController.attachViewToDom();
9774
- await present(this, 'actionSheetEnter', iosEnterAnimation$6, mdEnterAnimation$5);
9797
+ await present(this, 'actionSheetEnter', iosEnterAnimation$5, mdEnterAnimation$5);
9775
9798
  unlock();
9776
9799
  }
9777
9800
  /**
@@ -9788,7 +9811,7 @@ class ActionSheet {
9788
9811
  */
9789
9812
  async dismiss(data, role) {
9790
9813
  const unlock = await this.lockController.lock();
9791
- const dismissed = await dismiss(this, data, role, 'actionSheetLeave', iosLeaveAnimation$6, mdLeaveAnimation$5);
9814
+ const dismissed = await dismiss(this, data, role, 'actionSheetLeave', iosLeaveAnimation$5, mdLeaveAnimation$5);
9792
9815
  if (dismissed) {
9793
9816
  this.delegateController.removeViewFromDom();
9794
9817
  }
@@ -9957,6 +9980,10 @@ class ActionSheet {
9957
9980
  this.gesture = undefined;
9958
9981
  }
9959
9982
  this.triggerController.removeClickListener();
9983
+ // Clean up aria-hidden if removed without dismiss() being called
9984
+ if (this.presented) {
9985
+ cleanupRootFocusTrapAccessibility();
9986
+ }
9960
9987
  }
9961
9988
  componentWillLoad() {
9962
9989
  var _a;
@@ -10045,7 +10072,7 @@ class ActionSheet {
10045
10072
  if (isRadio) {
10046
10073
  htmlAttrs['aria-checked'] = isActiveRadio ? 'true' : 'false';
10047
10074
  }
10048
- return (hAsync("button", Object.assign({}, htmlAttrs, { role: isRadio ? 'radio' : undefined, type: "button", id: buttonId, class: Object.assign(Object.assign({}, buttonClass$3(b)), (isRadio && { 'action-sheet-selected': isActiveRadio })), onClick: () => {
10075
+ return (hAsync("button", Object.assign({}, htmlAttrs, { role: isRadio ? 'radio' : undefined, type: "button", id: buttonId, class: Object.assign(Object.assign({}, buttonClass$2(b)), (isRadio && { 'action-sheet-selected': isActiveRadio })), onClick: () => {
10049
10076
  if (isRadio) {
10050
10077
  this.selectRadioButton(b);
10051
10078
  }
@@ -10060,12 +10087,12 @@ class ActionSheet {
10060
10087
  const cancelButton = allButtons.find((b) => b.role === 'cancel');
10061
10088
  const buttons = allButtons.filter((b) => b.role !== 'cancel');
10062
10089
  const headerID = `action-sheet-${overlayIndex}-header`;
10063
- return (hAsync(Host, Object.assign({ key: '48b63b870f2816b4cad3c606f3d9956854cee79a', role: "dialog", "aria-modal": "true", "aria-labelledby": header !== undefined ? headerID : null, tabindex: "-1" }, htmlAttributes, { style: {
10090
+ return (hAsync(Host, Object.assign({ key: '572ea2b7b7ffd902186a17f8063e46f4e7360633', role: "dialog", "aria-modal": "true", "aria-labelledby": header !== undefined ? headerID : null, tabindex: "-1" }, htmlAttributes, { style: {
10064
10091
  zIndex: `${20000 + this.overlayIndex}`,
10065
- }, class: Object.assign(Object.assign({ [mode]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'action-sheet-translucent': this.translucent }), onIonActionSheetWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }), hAsync("ion-backdrop", { key: '41dd5781f139d26b3feea33ab387451aeafacd51', tappable: this.backdropDismiss }), hAsync("div", { key: 'f797c2657782e4e83adf90d2d796108e857a1fc0', tabindex: "0", "aria-hidden": "true" }), hAsync("div", { key: '8e74209321fc5e8712e3e293c91a6fa036ea45ab', class: "action-sheet-wrapper ion-overlay-wrapper", ref: (el) => (this.wrapperEl = el) }, hAsync("div", { key: 'c811860be2eed0b6c73fc2cc5a59cb94db2e8912', class: "action-sheet-container" }, hAsync("div", { key: 'd36ee14b70d73eb5cd69e0c57bc5cc31daf86ab3', class: "action-sheet-group", ref: (el) => (this.groupEl = el), role: hasRadioButtons ? 'radiogroup' : undefined }, header !== undefined && (hAsync("div", { key: '922695de191edc86451eed2552acc4f54993ea52', id: headerID, class: {
10092
+ }, class: Object.assign(Object.assign({ [mode]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'action-sheet-translucent': this.translucent }), onIonActionSheetWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }), hAsync("ion-backdrop", { key: '065f29ec2021e25fdde59707a42cbacd4f9319c6', tappable: this.backdropDismiss }), hAsync("div", { key: 'c92615ae5b292bfd223cee644c07f144f5f1d974', tabindex: "0", "aria-hidden": "true" }), hAsync("div", { key: 'd4b30e289503203048420c35ac447dfff72c9183', class: "action-sheet-wrapper ion-overlay-wrapper", ref: (el) => (this.wrapperEl = el) }, hAsync("div", { key: '7fc9bcc2f32666e170cd2052ce2b359b3915da60', class: "action-sheet-container" }, hAsync("div", { key: 'd85ff13a6029bbe081053e818eeaa115327abdc1', class: "action-sheet-group", ref: (el) => (this.groupEl = el), role: hasRadioButtons ? 'radiogroup' : undefined }, header !== undefined && (hAsync("div", { key: 'c743f928302e20007219fbcdd1e5c2efa662d3d9', id: headerID, class: {
10066
10093
  'action-sheet-title': true,
10067
10094
  'action-sheet-has-sub-title': this.subHeader !== undefined,
10068
- } }, header, this.subHeader && hAsync("div", { key: 'a119d4a93668e829f7106f11cbbdd437310f3e80', class: "action-sheet-sub-title" }, this.subHeader))), this.renderActionSheetButtons(buttons)), cancelButton && (hAsync("div", { key: '1d27f36d09bedd2e4c61fea9dd9d05f8f9271aef', class: "action-sheet-group action-sheet-group-cancel" }, hAsync("button", Object.assign({ key: 'ed13658176c54cc45808a54a0331c297430d9bc6' }, cancelButton.htmlAttributes, { type: "button", class: buttonClass$3(cancelButton), onClick: () => this.buttonClick(cancelButton) }), hAsync("span", { key: '5208e3e3535b775a443cef6fb1decd790db69b0c', class: "action-sheet-button-inner" }, cancelButton.icon && (hAsync("ion-icon", { key: 'b7ba489e1ee50524a5b4af670eef787844a16286', icon: cancelButton.icon, "aria-hidden": "true", lazy: false, class: "action-sheet-icon" })), cancelButton.text), mode === 'md' && hAsync("ion-ripple-effect", { key: 'b3f88898114855853259f0001def26b4bd6e4a98' })))))), hAsync("div", { key: '0dfd0fcdc633bf565990eaa06679608e749cf8f9', tabindex: "0", "aria-hidden": "true" })));
10095
+ } }, header, this.subHeader && hAsync("div", { key: '2cce9ba82989d893052cb6acf88677058a7b26ce', class: "action-sheet-sub-title" }, this.subHeader))), this.renderActionSheetButtons(buttons)), cancelButton && (hAsync("div", { key: 'cf91d8a47838570e4c533694614bb6ad46f20ac7', class: "action-sheet-group action-sheet-group-cancel" }, hAsync("button", Object.assign({ key: '5ffc9e3d9f4db002a1112ed71977a407edb9f86e' }, cancelButton.htmlAttributes, { type: "button", class: buttonClass$2(cancelButton), onClick: () => this.buttonClick(cancelButton) }), hAsync("span", { key: 'e0802b849fef77fd8158cbfee23adf7fc6e08d62', class: "action-sheet-button-inner" }, cancelButton.icon && (hAsync("ion-icon", { key: '991a60ebf6966e5815f849325c4e9c571a31fdeb', icon: cancelButton.icon, "aria-hidden": "true", lazy: false, class: "action-sheet-icon" })), cancelButton.text), mode === 'md' && hAsync("ion-ripple-effect", { key: 'af533882239ba0d4e98691e38d517fbcee858a6d' })))))), hAsync("div", { key: '7107a8b235b00bf48486db95f66ac3ba53faf157', tabindex: "0", "aria-hidden": "true" })));
10069
10096
  }
10070
10097
  get el() { return getElement(this); }
10071
10098
  static get watchers() { return {
@@ -10114,7 +10141,7 @@ class ActionSheet {
10114
10141
  "$attrsToReflect$": []
10115
10142
  }; }
10116
10143
  }
10117
- const buttonClass$3 = (button) => {
10144
+ const buttonClass$2 = (button) => {
10118
10145
  return Object.assign({ 'action-sheet-button': true, 'ion-activatable': !button.disabled, 'ion-focusable': !button.disabled, [`action-sheet-${button.role}`]: button.role !== undefined }, getClassMap(button.cssClass));
10119
10146
  };
10120
10147
 
@@ -10285,7 +10312,7 @@ class IonicSafeString {
10285
10312
  /**
10286
10313
  * iOS Alert Enter Animation
10287
10314
  */
10288
- const iosEnterAnimation$5 = (baseEl) => {
10315
+ const iosEnterAnimation$4 = (baseEl) => {
10289
10316
  const baseAnimation = createAnimation();
10290
10317
  const backdropAnimation = createAnimation();
10291
10318
  const wrapperAnimation = createAnimation();
@@ -10310,7 +10337,7 @@ const iosEnterAnimation$5 = (baseEl) => {
10310
10337
  /**
10311
10338
  * iOS Alert Leave Animation
10312
10339
  */
10313
- const iosLeaveAnimation$5 = (baseEl) => {
10340
+ const iosLeaveAnimation$4 = (baseEl) => {
10314
10341
  const baseAnimation = createAnimation();
10315
10342
  const backdropAnimation = createAnimation();
10316
10343
  const wrapperAnimation = createAnimation();
@@ -10586,6 +10613,10 @@ class Alert {
10586
10613
  this.gesture.destroy();
10587
10614
  this.gesture = undefined;
10588
10615
  }
10616
+ // Clean up aria-hidden if removed without dismiss() being called
10617
+ if (this.presented) {
10618
+ cleanupRootFocusTrapAccessibility();
10619
+ }
10589
10620
  (_a = this.buttonGroupResizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
10590
10621
  this.buttonGroupResizeObserver = undefined;
10591
10622
  }
@@ -10625,7 +10656,7 @@ class Alert {
10625
10656
  async present() {
10626
10657
  const unlock = await this.lockController.lock();
10627
10658
  await this.delegateController.attachViewToDom();
10628
- await present(this, 'alertEnter', iosEnterAnimation$5, mdEnterAnimation$4).then(() => {
10659
+ await present(this, 'alertEnter', iosEnterAnimation$4, mdEnterAnimation$4).then(() => {
10629
10660
  var _a, _b;
10630
10661
  /**
10631
10662
  * Check if alert has only one button and no inputs.
@@ -10656,7 +10687,7 @@ class Alert {
10656
10687
  */
10657
10688
  async dismiss(data, role) {
10658
10689
  const unlock = await this.lockController.lock();
10659
- const dismissed = await dismiss(this, data, role, 'alertLeave', iosLeaveAnimation$5, mdLeaveAnimation$4);
10690
+ const dismissed = await dismiss(this, data, role, 'alertLeave', iosLeaveAnimation$4, mdLeaveAnimation$4);
10660
10691
  if (dismissed) {
10661
10692
  this.delegateController.removeViewFromDom();
10662
10693
  }
@@ -10841,7 +10872,7 @@ class Alert {
10841
10872
  'alert-button-group': true,
10842
10873
  'alert-button-group-vertical': buttons.length > 2 || this.isButtonGroupWrapped,
10843
10874
  };
10844
- return (hAsync("div", { class: alertButtonGroupClass, ref: (el) => (this.buttonGroupEl = el) }, buttons.map((button) => (hAsync("button", Object.assign({}, button.htmlAttributes, { type: "button", id: button.id, class: buttonClass$2(button), tabIndex: 0, onClick: () => this.buttonClick(button) }), hAsync("span", { class: "alert-button-inner" }, button.text), mode === 'md' && hAsync("ion-ripple-effect", null))))));
10875
+ return (hAsync("div", { class: alertButtonGroupClass, ref: (el) => (this.buttonGroupEl = el) }, buttons.map((button) => (hAsync("button", Object.assign({}, button.htmlAttributes, { type: "button", id: button.id, class: buttonClass$1(button), tabIndex: 0, onClick: () => this.buttonClick(button) }), hAsync("span", { class: "alert-button-inner" }, button.text), mode === 'md' && hAsync("ion-ripple-effect", null))))));
10845
10876
  }
10846
10877
  renderAlertMessage(msgId) {
10847
10878
  const { customHTMLEnabled, message } = this;
@@ -10864,9 +10895,9 @@ class Alert {
10864
10895
  * If neither are defined, do not set aria-labelledby.
10865
10896
  */
10866
10897
  const ariaLabelledBy = header && subHeader ? `${hdrId} ${subHdrId}` : header ? hdrId : subHeader ? subHdrId : null;
10867
- return (hAsync(Host, { key: '8d54ccd725ea634be080e67b56fa5efe498f496c', tabindex: "-1", style: {
10898
+ return (hAsync(Host, { key: '80642b44e08bcbe73f7a217578f89716827e2f7d', tabindex: "-1", style: {
10868
10899
  zIndex: `${20000 + overlayIndex}`,
10869
- }, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'alert-translucent': this.translucent }), onIonAlertWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }, hAsync("ion-backdrop", { key: '05a238583342285545587de9dce144a82d779193', tappable: this.backdropDismiss }), hAsync("div", { key: 'e52c53fd9845e66781af01b2a788a291b45a927c', tabindex: "0", "aria-hidden": "true" }), hAsync("div", Object.assign({ key: '8417e52eebca24ff436fab0703666db51072f980', class: "alert-wrapper ion-overlay-wrapper", role: role, "aria-modal": "true", "aria-labelledby": ariaLabelledBy, "aria-describedby": message !== undefined ? msgId : null, tabindex: "0", ref: (el) => (this.wrapperEl = el) }, htmlAttributes), hAsync("div", { key: '5c560d4800b24d41961423718108b54be6cd6f91', class: "alert-head" }, header && (hAsync("h2", { key: '8637b64cd5125b2258115d1c11f3743113658608', id: hdrId, class: "alert-title" }, header)), subHeader && !header && (hAsync("h2", { key: '7a4e61a02c29b16b336d8acaf6569b30de6fe71e', id: subHdrId, class: "alert-sub-title" }, subHeader)), subHeader && header && (hAsync("h3", { key: '30844b6a0a7e3dab46514cd548ecffa86dcd59cb', id: subHdrId, class: "alert-sub-title" }, subHeader))), this.renderAlertMessage(msgId), this.renderAlertInputs(), this.renderAlertButtons()), hAsync("div", { key: '39c824fee1e60ad8d6234c79d22ceb8bba8004af', tabindex: "0", "aria-hidden": "true" })));
10900
+ }, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'alert-translucent': this.translucent }), onIonAlertWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }, hAsync("ion-backdrop", { key: 'f7777dfd624d4a6253681bf36ab3b66389617fb5', tappable: this.backdropDismiss }), hAsync("div", { key: '2a3a03bae54ff66d7d182d41eda7158b5228fdbc', tabindex: "0", "aria-hidden": "true" }), hAsync("div", Object.assign({ key: '255051adf9deeb3d9b872906b8eaa4a93075325c', class: "alert-wrapper ion-overlay-wrapper", role: role, "aria-modal": "true", "aria-labelledby": ariaLabelledBy, "aria-describedby": message !== undefined ? msgId : null, tabindex: "0", ref: (el) => (this.wrapperEl = el) }, htmlAttributes), hAsync("div", { key: '3039e1a0f37617b9cba644b259b62097401cf84b', class: "alert-head" }, header && (hAsync("h2", { key: 'b65dc3fa312a520d893d0710a28d72dfad17d020', id: hdrId, class: "alert-title" }, header)), subHeader && !header && (hAsync("h2", { key: 'e1f9bd496f2baaa28c7c0c6efb7b84591d1548de', id: subHdrId, class: "alert-sub-title" }, subHeader)), subHeader && header && (hAsync("h3", { key: 'ffa52291e21ee6a56bf11abbef87c698512ae477', id: subHdrId, class: "alert-sub-title" }, subHeader))), this.renderAlertMessage(msgId), this.renderAlertInputs(), this.renderAlertButtons()), hAsync("div", { key: '5db1dce6054f16ea8da7830754c740ace31eb9d1', tabindex: "0", "aria-hidden": "true" })));
10870
10901
  }
10871
10902
  get el() { return getElement(this); }
10872
10903
  static get watchers() { return {
@@ -10924,7 +10955,7 @@ const inputClass = (input) => {
10924
10955
  var _a, _b, _c;
10925
10956
  return Object.assign(Object.assign({ 'alert-input': true, 'alert-input-disabled': ((_b = (_a = input.attributes) === null || _a === void 0 ? void 0 : _a.disabled) !== null && _b !== void 0 ? _b : input.disabled) || false }, getClassMap(input.cssClass)), getClassMap(input.attributes ? (_c = input.attributes.class) === null || _c === void 0 ? void 0 : _c.toString() : ''));
10926
10957
  };
10927
- const buttonClass$2 = (button) => {
10958
+ const buttonClass$1 = (button) => {
10928
10959
  return Object.assign({ 'alert-button': true, 'ion-focusable': true, 'ion-activatable': true, [`alert-button-role-${button.role}`]: button.role !== undefined }, getClassMap(button.cssClass));
10929
10960
  };
10930
10961
 
@@ -19263,7 +19294,7 @@ class Input {
19263
19294
  /**
19264
19295
  * Whether auto correction should be enabled when the user is entering/editing the text value.
19265
19296
  */
19266
- this.autocorrect = 'off';
19297
+ this.autocorrect = false;
19267
19298
  /**
19268
19299
  * Sets the [`autofocus` attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/autofocus) on the native input element.
19269
19300
  *
@@ -19720,7 +19751,7 @@ class Input {
19720
19751
  * TODO(FW-5592): Remove hasStartEndSlots condition
19721
19752
  */
19722
19753
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
19723
- return (hAsync(Host, { key: '9ba9cf425b573d2ca9ac34455a0e6b8474c4de6d', class: createColorClasses$1(this.color, {
19754
+ return (hAsync(Host, { key: '6a05f61339d8045285d5820c2508296cc842c210', class: createColorClasses$1(this.color, {
19724
19755
  [mode]: true,
19725
19756
  'has-value': hasValue,
19726
19757
  'has-focus': hasFocus,
@@ -19731,14 +19762,14 @@ class Input {
19731
19762
  'in-item': inItem,
19732
19763
  'in-item-color': hostContext('ion-item.ion-color', this.el),
19733
19764
  'input-disabled': disabled,
19734
- }) }, hAsync("label", { key: '74b989d0aa5ab38f29f952519868f05119df6005', class: "input-wrapper", htmlFor: inputId, onClick: this.onLabelClick }, this.renderLabelContainer(), hAsync("div", { key: '47f2b42e2f74ea866b4f871026e08ab375d7a726', class: "native-wrapper", onClick: this.onLabelClick }, hAsync("slot", { key: 'eaabe5a4a329a356cac3294d15c087d0d131fff2', name: "start" }), hAsync("input", Object.assign({ key: 'c821a984a8a9b7f96f30892c06d8deda093ff24b', class: "native-input", ref: (input) => (this.nativeInput = input), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, min: this.min, max: this.max, minLength: this.minlength, maxLength: this.maxlength, multiple: this.multiple, name: this.name, pattern: this.pattern, placeholder: this.placeholder || '', readOnly: readonly, required: this.required, spellcheck: this.spellcheck, step: this.step, type: this.type, value: value, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeydown, onCompositionstart: this.onCompositionStart, onCompositionend: this.onCompositionEnd, "aria-describedby": this.getHintTextID(), "aria-invalid": this.isInvalid ? 'true' : undefined, "aria-labelledby": this.getLabelledById() }, this.inheritedAttributes)), this.clearInput && !readonly && !disabled && (hAsync("button", { key: '62069c11016ee190dc46ab941372e1c4ad8a36ed', "aria-label": "reset", type: "button", class: "input-clear-icon", onPointerDown: (ev) => {
19765
+ }) }, hAsync("label", { key: 'b546d66f53ea25082494e3a4cb0ce7532ee649d7', class: "input-wrapper", htmlFor: inputId, onClick: this.onLabelClick }, this.renderLabelContainer(), hAsync("div", { key: '6af832f2b25fadee7a49adb999166dbc97565e2d', class: "native-wrapper", onClick: this.onLabelClick }, hAsync("slot", { key: 'e7a8895038a8d2503f646acfda20c6c1a99c2839', name: "start" }), hAsync("input", Object.assign({ key: 'ce85703e0434a6322bb4275a924e3cd91c79fa20', class: "native-input", ref: (input) => (this.nativeInput = input), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect ? 'on' : 'off', autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, min: this.min, max: this.max, minLength: this.minlength, maxLength: this.maxlength, multiple: this.multiple, name: this.name, pattern: this.pattern, placeholder: this.placeholder || '', readOnly: readonly, required: this.required, spellcheck: this.spellcheck, step: this.step, type: this.type, value: value, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeydown, onCompositionstart: this.onCompositionStart, onCompositionend: this.onCompositionEnd, "aria-describedby": this.getHintTextID(), "aria-invalid": this.isInvalid ? 'true' : undefined, "aria-labelledby": this.getLabelledById() }, this.inheritedAttributes)), this.clearInput && !readonly && !disabled && (hAsync("button", { key: '1e59589fc89a37d7830dc915b4c19d26a8f568c7', "aria-label": "reset", type: "button", class: "input-clear-icon", onPointerDown: (ev) => {
19735
19766
  /**
19736
19767
  * This prevents mobile browsers from
19737
19768
  * blurring the input when the clear
19738
19769
  * button is activated.
19739
19770
  */
19740
19771
  ev.preventDefault();
19741
- }, onClick: this.clearTextInput }, hAsync("ion-icon", { key: 'dd75a516d32110d85382b664c663bd41f177ce12', "aria-hidden": "true", icon: clearIconData }))), hAsync("slot", { key: '330d4b9389f2c62223a5ee24003e96ef3e6b2473', name: "end" })), shouldRenderHighlight && hAsync("div", { key: '8e442bed130ddc84976ab70fd3f8578d6bcc6316', class: "input-highlight" })), this.renderBottomContent()));
19772
+ }, onClick: this.clearTextInput }, hAsync("ion-icon", { key: '7d443c5061bf6436d3b77a2444676c679b3e62e4', "aria-hidden": "true", icon: clearIconData }))), hAsync("slot", { key: '5516f88d46886348217570ec1fadda0b79b63c01', name: "end" })), shouldRenderHighlight && hAsync("div", { key: '2a1fdb7e7c974654dfbb3afb4fbfd9204e9d9092', class: "input-highlight" })), this.renderBottomContent()));
19742
19773
  }
19743
19774
  get el() { return getElement(this); }
19744
19775
  static get watchers() { return {
@@ -19766,7 +19797,7 @@ class Input {
19766
19797
  "color": [513],
19767
19798
  "autocapitalize": [1],
19768
19799
  "autocomplete": [1],
19769
- "autocorrect": [1],
19800
+ "autocorrect": [4],
19770
19801
  "autofocus": [4],
19771
19802
  "clearInput": [4, "clear-input"],
19772
19803
  "clearInputIcon": [1, "clear-input-icon"],
@@ -21770,7 +21801,7 @@ class ListHeader {
21770
21801
  /**
21771
21802
  * iOS Loading Enter Animation
21772
21803
  */
21773
- const iosEnterAnimation$4 = (baseEl) => {
21804
+ const iosEnterAnimation$3 = (baseEl) => {
21774
21805
  const baseAnimation = createAnimation();
21775
21806
  const backdropAnimation = createAnimation();
21776
21807
  const wrapperAnimation = createAnimation();
@@ -21795,7 +21826,7 @@ const iosEnterAnimation$4 = (baseEl) => {
21795
21826
  /**
21796
21827
  * iOS Loading Leave Animation
21797
21828
  */
21798
- const iosLeaveAnimation$4 = (baseEl) => {
21829
+ const iosLeaveAnimation$3 = (baseEl) => {
21799
21830
  const baseAnimation = createAnimation();
21800
21831
  const backdropAnimation = createAnimation();
21801
21832
  const wrapperAnimation = createAnimation();
@@ -21968,6 +21999,10 @@ class Loading {
21968
21999
  }
21969
22000
  disconnectedCallback() {
21970
22001
  this.triggerController.removeClickListener();
22002
+ // Clean up aria-hidden if removed without dismiss() being called
22003
+ if (this.presented) {
22004
+ cleanupRootFocusTrapAccessibility();
22005
+ }
21971
22006
  }
21972
22007
  /**
21973
22008
  * Present the loading overlay after it has been created.
@@ -21975,7 +22010,7 @@ class Loading {
21975
22010
  async present() {
21976
22011
  const unlock = await this.lockController.lock();
21977
22012
  await this.delegateController.attachViewToDom();
21978
- await present(this, 'loadingEnter', iosEnterAnimation$4, mdEnterAnimation$3);
22013
+ await present(this, 'loadingEnter', iosEnterAnimation$3, mdEnterAnimation$3);
21979
22014
  if (this.duration > 0) {
21980
22015
  this.durationTimeout = setTimeout(() => this.dismiss(), this.duration + 10);
21981
22016
  }
@@ -21998,7 +22033,7 @@ class Loading {
21998
22033
  if (this.durationTimeout) {
21999
22034
  clearTimeout(this.durationTimeout);
22000
22035
  }
22001
- const dismissed = await dismiss(this, data, role, 'loadingLeave', iosLeaveAnimation$4, mdLeaveAnimation$3);
22036
+ const dismissed = await dismiss(this, data, role, 'loadingLeave', iosLeaveAnimation$3, mdLeaveAnimation$3);
22002
22037
  if (dismissed) {
22003
22038
  this.delegateController.removeViewFromDom();
22004
22039
  }
@@ -22033,9 +22068,9 @@ class Loading {
22033
22068
  * Otherwise, don't set aria-labelledby.
22034
22069
  */
22035
22070
  const ariaLabelledBy = message !== undefined ? msgId : null;
22036
- return (hAsync(Host, Object.assign({ key: 'f86ddbc600cb5c396b7de38fb5f49625388c3c3f', role: "dialog", "aria-modal": "true", "aria-labelledby": ariaLabelledBy, tabindex: "-1" }, htmlAttributes, { style: {
22071
+ return (hAsync(Host, Object.assign({ key: 'ab48bfcee8f7e3e33847a2f262fdc08b9ea804ca', role: "dialog", "aria-modal": "true", "aria-labelledby": ariaLabelledBy, tabindex: "-1" }, htmlAttributes, { style: {
22037
22072
  zIndex: `${40000 + this.overlayIndex}`,
22038
- }, onIonBackdropTap: this.onBackdropTap, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'loading-translucent': this.translucent }) }), hAsync("ion-backdrop", { key: 'b53727aaddc37ef3c685fcc150c6d5193290a847', visible: this.showBackdrop, tappable: this.backdropDismiss }), hAsync("div", { key: '4c61bede8e0a4e47daa6f1f9d0f364ef6aec0bc3', tabindex: "0", "aria-hidden": "true" }), hAsync("div", { key: '84e51ceb07118f1eaeb757df28801c255496931b', class: "loading-wrapper ion-overlay-wrapper" }, spinner && (hAsync("div", { key: 'fc97f1912e0fc558b7c309a5bc084415f5f620b2', class: "loading-spinner" }, hAsync("ion-spinner", { key: '6e186d856cd3f10f22c3e317ef00f31b4216459c', name: spinner, "aria-hidden": "true" }))), message !== undefined && this.renderLoadingMessage(msgId)), hAsync("div", { key: 'dcbe9d9a619daa1c08174e73827bdabeb59dde92', tabindex: "0", "aria-hidden": "true" })));
22073
+ }, onIonBackdropTap: this.onBackdropTap, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'loading-translucent': this.translucent }) }), hAsync("ion-backdrop", { key: '41baccc7fb6474389a3a3431c208e829ef738b75', visible: this.showBackdrop, tappable: this.backdropDismiss }), hAsync("div", { key: '7b7290974abbe8db8739b19835aca9f8b5c271c2', tabindex: "0", "aria-hidden": "true" }), hAsync("div", { key: 'e32466abfcc92aaad47ea03b1dcb49f66abe4b63', class: "loading-wrapper ion-overlay-wrapper" }, spinner && (hAsync("div", { key: 'c5e6e6f9e3f39dba0225d08d7dd2c1b96a1d83c7', class: "loading-spinner" }, hAsync("ion-spinner", { key: 'f428038959d879404ea898011363aac0b807ad11', name: spinner, "aria-hidden": "true" }))), message !== undefined && this.renderLoadingMessage(msgId)), hAsync("div", { key: '490e531367b86c319fa4260722dcff4dd631fa88', tabindex: "0", "aria-hidden": "true" })));
22039
22074
  }
22040
22075
  get el() { return getElement(this); }
22041
22076
  static get watchers() { return {
@@ -24309,7 +24344,7 @@ const createEnterAnimation$1 = () => {
24309
24344
  /**
24310
24345
  * iOS Modal Enter Animation for the Card presentation style
24311
24346
  */
24312
- const iosEnterAnimation$3 = (baseEl, opts) => {
24347
+ const iosEnterAnimation$2 = (baseEl, opts) => {
24313
24348
  const { presentingEl, currentBreakpoint, expandToScroll } = opts;
24314
24349
  const root = getElementRoot(baseEl);
24315
24350
  const { wrapperAnimation, backdropAnimation, contentAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation$1();
@@ -24402,7 +24437,7 @@ const createLeaveAnimation$1 = () => {
24402
24437
  /**
24403
24438
  * iOS Modal Leave Animation
24404
24439
  */
24405
- const iosLeaveAnimation$3 = (baseEl, opts, duration = 500) => {
24440
+ const iosLeaveAnimation$2 = (baseEl, opts, duration = 500) => {
24406
24441
  const { presentingEl, currentBreakpoint } = opts;
24407
24442
  const root = getElementRoot(baseEl);
24408
24443
  const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetLeaveAnimation(opts) : createLeaveAnimation$1();
@@ -25577,13 +25612,20 @@ class Modal {
25577
25612
  /**
25578
25613
  * The interaction behavior for the sheet modal when the handle is pressed.
25579
25614
  *
25580
- * Defaults to `"none"`, which means the modal will not change size or position when the handle is pressed.
25581
- * Set to `"cycle"` to let the modal cycle between available breakpoints when pressed.
25615
+ * Handle behavior is unavailable when the `handle` property is set to
25616
+ * `false` or when the `breakpoints` property is not set (using a
25617
+ * fullscreen or card modal).
25618
+ *
25619
+ * Set to `"cycle"` to make the handle focusable and let the sheet modal
25620
+ * cycle between available breakpoints when pressed. This keeps the sheet
25621
+ * operable with assistive technology.
25582
25622
  *
25583
- * Handle behavior is unavailable when the `handle` property is set to `false` or
25584
- * when the `breakpoints` property is not set (using a fullscreen or card modal).
25623
+ * Set to `"none"` to make the handle purely decorative when pressed and
25624
+ * removed from the tab order.
25625
+ *
25626
+ * Defaults to `"cycle"`.
25585
25627
  */
25586
- this.handleBehavior = 'none';
25628
+ this.handleBehavior = 'cycle';
25587
25629
  /**
25588
25630
  * If `true`, the modal will be dismissed when the backdrop is clicked.
25589
25631
  */
@@ -25775,6 +25817,10 @@ class Modal {
25775
25817
  // Also called in dismiss() — intentional dual cleanup covers both
25776
25818
  // dismiss-then-remove and direct DOM removal without dismiss.
25777
25819
  this.cleanupSafeAreaOverrides();
25820
+ // Clean up aria-hidden if removed without dismiss() being called
25821
+ if (this.presented) {
25822
+ cleanupRootFocusTrapAccessibility();
25823
+ }
25778
25824
  }
25779
25825
  componentWillLoad() {
25780
25826
  var _a;
@@ -25951,7 +25997,7 @@ class Modal {
25951
25997
  this.statusBarStyle = await StatusBar.getStyle();
25952
25998
  setCardStatusBarDark();
25953
25999
  }
25954
- await present(this, 'modalEnter', iosEnterAnimation$3, mdEnterAnimation$2, {
26000
+ await present(this, 'modalEnter', iosEnterAnimation$2, mdEnterAnimation$2, {
25955
26001
  presentingEl: presentingElement,
25956
26002
  currentBreakpoint: this.initialBreakpoint,
25957
26003
  backdropBreakpoint: this.backdropBreakpoint,
@@ -26013,7 +26059,7 @@ class Modal {
26013
26059
  // All of the elements needed for the swipe gesture
26014
26060
  // should be in the DOM and referenced by now, except
26015
26061
  // for the presenting el
26016
- const animationBuilder = this.leaveAnimation || config.get('modalLeave', iosLeaveAnimation$3);
26062
+ const animationBuilder = this.leaveAnimation || config.get('modalLeave', iosLeaveAnimation$2);
26017
26063
  const ani = (this.animation = animationBuilder(el, {
26018
26064
  presentingEl: this.presentingElement,
26019
26065
  expandToScroll: this.expandToScroll,
@@ -26032,7 +26078,7 @@ class Modal {
26032
26078
  if (!wrapperEl || initialBreakpoint === undefined) {
26033
26079
  return;
26034
26080
  }
26035
- const animationBuilder = this.enterAnimation || config.get('modalEnter', iosEnterAnimation$3);
26081
+ const animationBuilder = this.enterAnimation || config.get('modalEnter', iosEnterAnimation$2);
26036
26082
  const ani = (this.animation = animationBuilder(this.el, {
26037
26083
  presentingEl: this.presentingElement,
26038
26084
  currentBreakpoint: initialBreakpoint,
@@ -26222,7 +26268,7 @@ class Modal {
26222
26268
  window.removeEventListener(KEYBOARD_DID_OPEN, this.keyboardOpenCallback);
26223
26269
  this.keyboardOpenCallback = undefined;
26224
26270
  }
26225
- const dismissed = await dismiss(this, data, role, 'modalLeave', iosLeaveAnimation$3, mdLeaveAnimation$2, {
26271
+ const dismissed = await dismiss(this, data, role, 'modalLeave', iosLeaveAnimation$2, mdLeaveAnimation$2, {
26226
26272
  presentingEl: presentingElement,
26227
26273
  currentBreakpoint: (_a = this.currentBreakpoint) !== null && _a !== void 0 ? _a : this.initialBreakpoint,
26228
26274
  backdropBreakpoint: this.backdropBreakpoint,
@@ -26654,20 +26700,20 @@ class Modal {
26654
26700
  const isCardModal = presentingElement !== undefined && mode === 'ios';
26655
26701
  const isHandleCycle = handleBehavior === 'cycle';
26656
26702
  const isSheetModalWithHandle = isSheetModal && showHandle;
26657
- return (hAsync(Host, Object.assign({ key: 'ab93657f4a5b4c97168d292b398d975e4b5b4af4', "no-router": true,
26703
+ return (hAsync(Host, Object.assign({ key: '528f9e354f470e22563938e7531e3f23a97e4200', "no-router": true,
26658
26704
  // Allow the modal to be navigable when the handle is focusable
26659
26705
  tabIndex: isHandleCycle && isSheetModalWithHandle ? 0 : -1 }, htmlAttributes, { style: {
26660
26706
  zIndex: `${20000 + this.overlayIndex}`,
26661
- }, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, 'overlay-hidden': true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle, onFocus: this.onModalFocus }), hAsync("ion-backdrop", { key: '5ba6315c7c8c64fa04c62f85fd493da5275b2cbd', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && hAsync("div", { key: 'a76c48d41c67f86c18a7481e980e6925e614f85d', class: "modal-shadow" }), hAsync("div", Object.assign({ key: '3f6c61ba60b063592784d76a9594073b3bf210a9',
26707
+ }, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, 'overlay-hidden': true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle, onFocus: this.onModalFocus }), hAsync("ion-backdrop", { key: '53983c96bc6b30df89986c8d9c978a8e6f78fe80', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && hAsync("div", { key: '34288a7343b7c47fed00d3abc73957f45f06d2fd', class: "modal-shadow" }), hAsync("div", Object.assign({ key: 'f9b37f547bd5c61037bbad1a71bfed80ba8c630b',
26662
26708
  /*
26663
26709
  role and aria-modal must be used on the
26664
26710
  same element. They must also be set inside the
26665
26711
  shadow DOM otherwise ion-button will not be highlighted
26666
26712
  when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
26667
26713
  */
26668
- role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (hAsync("button", { key: '7f66b4fdb3dec61a2b9aec4e9dbacf5d013d637c', class: "modal-handle",
26714
+ role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (hAsync("button", { key: 'b8741594108d3ea681ff41ff8f2241a4119578b1', class: "modal-handle",
26669
26715
  // Prevents the handle from receiving keyboard focus when it does not cycle
26670
- tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle", ref: (el) => (this.dragHandleEl = el) })), hAsync("slot", { key: '2dfaaebe3d0b2a46be1224c25f9ab89bf1744332', onSlotchange: this.onSlotChange }))));
26716
+ tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle", ref: (el) => (this.dragHandleEl = el) })), hAsync("slot", { key: 'bcc7960fae3fed09076c704d08c3afc46caa0738', onSlotchange: this.onSlotChange }))));
26671
26717
  }
26672
26718
  get el() { return getElement(this); }
26673
26719
  static get watchers() { return {
@@ -27750,14 +27796,14 @@ class Note {
27750
27796
  }; }
27751
27797
  }
27752
27798
 
27753
- const pickerIosCss$1 = () => `:host{display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:200px;direction:ltr;z-index:0}:host .picker-before,:host .picker-after{position:absolute;width:100%;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:1;pointer-events:none}:host .picker-before{top:0;height:83px}:host .picker-before{inset-inline-start:0}:host .picker-after{top:116px;height:84px}:host .picker-after{inset-inline-start:0}:host .picker-highlight{border-radius:var(--highlight-border-radius, 8px);left:0;right:0;top:50%;bottom:0;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0;position:absolute;width:calc(100% - 16px);height:34px;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:var(--highlight-background);z-index:-1}:host input{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;margin:0;padding:0;border:0;outline:0;clip:rect(0 0 0 0);opacity:0;overflow:hidden;-webkit-appearance:none;-moz-appearance:none}:host ::slotted(ion-picker-column:first-of-type){text-align:start}:host ::slotted(ion-picker-column:last-of-type){text-align:end}:host ::slotted(ion-picker-column:only-child){text-align:center}:host .picker-before{background:-webkit-gradient(linear, left top, left bottom, color-stop(20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), to(rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8)));background:linear-gradient(to bottom, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8) 100%)}:host .picker-after{background:-webkit-gradient(linear, left bottom, left top, color-stop(20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), to(rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8)));background:linear-gradient(to top, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8) 100%)}:host .picker-highlight{background:var(--highlight-background, var(--ion-color-step-150, var(--ion-background-color-step-150, #eeeeef)))}`;
27799
+ const pickerIosCss = () => `:host{display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:200px;direction:ltr;z-index:0}:host .picker-before,:host .picker-after{position:absolute;width:100%;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:1;pointer-events:none}:host .picker-before{top:0;height:83px}:host .picker-before{inset-inline-start:0}:host .picker-after{top:116px;height:84px}:host .picker-after{inset-inline-start:0}:host .picker-highlight{border-radius:var(--highlight-border-radius, 8px);left:0;right:0;top:50%;bottom:0;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0;position:absolute;width:calc(100% - 16px);height:34px;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:var(--highlight-background);z-index:-1}:host input{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;margin:0;padding:0;border:0;outline:0;clip:rect(0 0 0 0);opacity:0;overflow:hidden;-webkit-appearance:none;-moz-appearance:none}:host ::slotted(ion-picker-column:first-of-type){text-align:start}:host ::slotted(ion-picker-column:last-of-type){text-align:end}:host ::slotted(ion-picker-column:only-child){text-align:center}:host .picker-before{background:-webkit-gradient(linear, left top, left bottom, color-stop(20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), to(rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8)));background:linear-gradient(to bottom, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8) 100%)}:host .picker-after{background:-webkit-gradient(linear, left bottom, left top, color-stop(20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), to(rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8)));background:linear-gradient(to top, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8) 100%)}:host .picker-highlight{background:var(--highlight-background, var(--ion-color-step-150, var(--ion-background-color-step-150, #eeeeef)))}`;
27754
27800
 
27755
- const pickerMdCss$1 = () => `:host{display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:200px;direction:ltr;z-index:0}:host .picker-before,:host .picker-after{position:absolute;width:100%;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:1;pointer-events:none}:host .picker-before{top:0;height:83px}:host .picker-before{inset-inline-start:0}:host .picker-after{top:116px;height:84px}:host .picker-after{inset-inline-start:0}:host .picker-highlight{border-radius:var(--highlight-border-radius, 8px);left:0;right:0;top:50%;bottom:0;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0;position:absolute;width:calc(100% - 16px);height:34px;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:var(--highlight-background);z-index:-1}:host input{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;margin:0;padding:0;border:0;outline:0;clip:rect(0 0 0 0);opacity:0;overflow:hidden;-webkit-appearance:none;-moz-appearance:none}:host ::slotted(ion-picker-column:first-of-type){text-align:start}:host ::slotted(ion-picker-column:last-of-type){text-align:end}:host ::slotted(ion-picker-column:only-child){text-align:center}:host .picker-before{background:-webkit-gradient(linear, left top, left bottom, color-stop(20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), color-stop(90%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0)));background:linear-gradient(to bottom, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0) 90%)}:host .picker-after{background:-webkit-gradient(linear, left bottom, left top, color-stop(30%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), color-stop(90%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0)));background:linear-gradient(to top, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 30%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0) 90%)}`;
27801
+ const pickerMdCss = () => `:host{display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:200px;direction:ltr;z-index:0}:host .picker-before,:host .picker-after{position:absolute;width:100%;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:1;pointer-events:none}:host .picker-before{top:0;height:83px}:host .picker-before{inset-inline-start:0}:host .picker-after{top:116px;height:84px}:host .picker-after{inset-inline-start:0}:host .picker-highlight{border-radius:var(--highlight-border-radius, 8px);left:0;right:0;top:50%;bottom:0;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0;position:absolute;width:calc(100% - 16px);height:34px;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:var(--highlight-background);z-index:-1}:host input{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;margin:0;padding:0;border:0;outline:0;clip:rect(0 0 0 0);opacity:0;overflow:hidden;-webkit-appearance:none;-moz-appearance:none}:host ::slotted(ion-picker-column:first-of-type){text-align:start}:host ::slotted(ion-picker-column:last-of-type){text-align:end}:host ::slotted(ion-picker-column:only-child){text-align:center}:host .picker-before{background:-webkit-gradient(linear, left top, left bottom, color-stop(20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), color-stop(90%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0)));background:linear-gradient(to bottom, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0) 90%)}:host .picker-after{background:-webkit-gradient(linear, left bottom, left top, color-stop(30%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), color-stop(90%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0)));background:linear-gradient(to top, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 30%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0) 90%)}`;
27756
27802
 
27757
27803
  /**
27758
27804
  * @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
27759
27805
  */
27760
- let Picker$1 = class Picker {
27806
+ class Picker {
27761
27807
  constructor(hostRef) {
27762
27808
  registerInstance(this, hostRef);
27763
27809
  this.ionInputModeChange = createEvent(this, "ionInputModeChange", 7);
@@ -28223,8 +28269,8 @@ let Picker$1 = class Picker {
28223
28269
  }
28224
28270
  get el() { return getElement(this); }
28225
28271
  static get style() { return {
28226
- ios: pickerIosCss$1(),
28227
- md: pickerMdCss$1()
28272
+ ios: pickerIosCss(),
28273
+ md: pickerMdCss()
28228
28274
  }; }
28229
28275
  static get cmpMeta() { return {
28230
28276
  "$flags$": 297,
@@ -28236,322 +28282,7 @@ let Picker$1 = class Picker {
28236
28282
  "$lazyBundleId$": "-",
28237
28283
  "$attrsToReflect$": []
28238
28284
  }; }
28239
- };
28240
-
28241
- /**
28242
- * iOS Picker Enter Animation
28243
- */
28244
- const iosEnterAnimation$2 = (baseEl) => {
28245
- const baseAnimation = createAnimation();
28246
- const backdropAnimation = createAnimation();
28247
- const wrapperAnimation = createAnimation();
28248
- backdropAnimation
28249
- .addElement(baseEl.querySelector('ion-backdrop'))
28250
- .fromTo('opacity', 0.01, 'var(--backdrop-opacity)')
28251
- .beforeStyles({
28252
- 'pointer-events': 'none',
28253
- })
28254
- .afterClearStyles(['pointer-events']);
28255
- wrapperAnimation
28256
- .addElement(baseEl.querySelector('.picker-wrapper'))
28257
- .fromTo('transform', 'translateY(100%)', 'translateY(0%)');
28258
- return baseAnimation
28259
- .addElement(baseEl)
28260
- .easing('cubic-bezier(.36,.66,.04,1)')
28261
- .duration(400)
28262
- .addAnimation([backdropAnimation, wrapperAnimation]);
28263
- };
28264
-
28265
- /**
28266
- * iOS Picker Leave Animation
28267
- */
28268
- const iosLeaveAnimation$2 = (baseEl) => {
28269
- const baseAnimation = createAnimation();
28270
- const backdropAnimation = createAnimation();
28271
- const wrapperAnimation = createAnimation();
28272
- backdropAnimation
28273
- .addElement(baseEl.querySelector('ion-backdrop'))
28274
- .fromTo('opacity', 'var(--backdrop-opacity)', 0.01);
28275
- wrapperAnimation
28276
- .addElement(baseEl.querySelector('.picker-wrapper'))
28277
- .fromTo('transform', 'translateY(0%)', 'translateY(100%)');
28278
- return baseAnimation
28279
- .addElement(baseEl)
28280
- .easing('cubic-bezier(.36,.66,.04,1)')
28281
- .duration(400)
28282
- .addAnimation([backdropAnimation, wrapperAnimation]);
28283
- };
28284
-
28285
- const pickerIosCss = () => `.sc-ion-picker-legacy-ios-h{--border-radius:0;--border-style:solid;--min-width:auto;--width:100%;--max-width:500px;--min-height:auto;--max-height:auto;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;top:0;display:block;position:absolute;width:100%;height:100%;outline:none;font-family:var(--ion-font-family, inherit);contain:strict;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1001}.sc-ion-picker-legacy-ios-h{inset-inline-start:0}.overlay-hidden.sc-ion-picker-legacy-ios-h{display:none}.picker-wrapper.sc-ion-picker-legacy-ios{border-radius:var(--border-radius);left:0;right:0;bottom:0;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:auto;margin-bottom:auto;-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0);display:-ms-flexbox;display:flex;position:absolute;-ms-flex-direction:column;flex-direction:column;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);contain:strict;overflow:hidden;z-index:10}.picker-toolbar.sc-ion-picker-legacy-ios{width:100%;background:transparent;contain:strict;z-index:1}.picker-button.sc-ion-picker-legacy-ios{border:0;font-family:inherit}.picker-button.sc-ion-picker-legacy-ios:active,.picker-button.sc-ion-picker-legacy-ios:focus{outline:none}.picker-columns.sc-ion-picker-legacy-ios{display:-ms-flexbox;display:flex;position:relative;-ms-flex-pack:center;justify-content:center;margin-bottom:var(--ion-safe-area-bottom, 0);contain:strict;overflow:hidden}.picker-above-highlight.sc-ion-picker-legacy-ios,.picker-below-highlight.sc-ion-picker-legacy-ios{display:none;pointer-events:none}.sc-ion-picker-legacy-ios-h{--background:var(--ion-background-color, #fff);--border-width:1px 0 0;--border-color:var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-250, var(--ion-background-color-step-250, #c8c7cc))));--height:260px;--backdrop-opacity:var(--ion-backdrop-opacity, 0.26);color:var(--ion-item-color, var(--ion-text-color, #000))}.picker-toolbar.sc-ion-picker-legacy-ios{display:-ms-flexbox;display:flex;height:44px;border-bottom:0.55px solid var(--border-color)}.picker-toolbar-button.sc-ion-picker-legacy-ios{-ms-flex:1;flex:1;text-align:end}.picker-toolbar-button.sc-ion-picker-legacy-ios:last-child .picker-button.sc-ion-picker-legacy-ios{font-weight:600}.picker-toolbar-button.sc-ion-picker-legacy-ios:first-child{font-weight:normal;text-align:start}.picker-button.sc-ion-picker-legacy-ios,.picker-button.ion-activated.sc-ion-picker-legacy-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-padding-start:1em;padding-inline-start:1em;-webkit-padding-end:1em;padding-inline-end:1em;padding-top:0;padding-bottom:0;height:44px;background:transparent;color:var(--ion-color-primary, #0054e9);font-size:16px}.picker-columns.sc-ion-picker-legacy-ios{height:215px;-webkit-perspective:1000px;perspective:1000px}.picker-above-highlight.sc-ion-picker-legacy-ios{top:0;-webkit-transform:translate3d(0, 0, 90px);transform:translate3d(0, 0, 90px);display:block;position:absolute;width:100%;height:81px;border-bottom:1px solid var(--border-color);background:-webkit-gradient(linear, left top, left bottom, color-stop(20%, var(--background, var(--ion-background-color, #fff))), to(rgba(var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255)), 0.8)));background:linear-gradient(to bottom, var(--background, var(--ion-background-color, #fff)) 20%, rgba(var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255)), 0.8) 100%);z-index:10}.picker-above-highlight.sc-ion-picker-legacy-ios{inset-inline-start:0}.picker-below-highlight.sc-ion-picker-legacy-ios{top:115px;-webkit-transform:translate3d(0, 0, 90px);transform:translate3d(0, 0, 90px);display:block;position:absolute;width:100%;height:119px;border-top:1px solid var(--border-color);background:-webkit-gradient(linear, left bottom, left top, color-stop(30%, var(--background, var(--ion-background-color, #fff))), to(rgba(var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255)), 0.8)));background:linear-gradient(to top, var(--background, var(--ion-background-color, #fff)) 30%, rgba(var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255)), 0.8) 100%);z-index:11}.picker-below-highlight.sc-ion-picker-legacy-ios{inset-inline-start:0}`;
28286
-
28287
- const pickerMdCss = () => `.sc-ion-picker-legacy-md-h{--border-radius:0;--border-style:solid;--min-width:auto;--width:100%;--max-width:500px;--min-height:auto;--max-height:auto;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;top:0;display:block;position:absolute;width:100%;height:100%;outline:none;font-family:var(--ion-font-family, inherit);contain:strict;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1001}.sc-ion-picker-legacy-md-h{inset-inline-start:0}.overlay-hidden.sc-ion-picker-legacy-md-h{display:none}.picker-wrapper.sc-ion-picker-legacy-md{border-radius:var(--border-radius);left:0;right:0;bottom:0;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:auto;margin-bottom:auto;-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0);display:-ms-flexbox;display:flex;position:absolute;-ms-flex-direction:column;flex-direction:column;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);contain:strict;overflow:hidden;z-index:10}.picker-toolbar.sc-ion-picker-legacy-md{width:100%;background:transparent;contain:strict;z-index:1}.picker-button.sc-ion-picker-legacy-md{border:0;font-family:inherit}.picker-button.sc-ion-picker-legacy-md:active,.picker-button.sc-ion-picker-legacy-md:focus{outline:none}.picker-columns.sc-ion-picker-legacy-md{display:-ms-flexbox;display:flex;position:relative;-ms-flex-pack:center;justify-content:center;margin-bottom:var(--ion-safe-area-bottom, 0);contain:strict;overflow:hidden}.picker-above-highlight.sc-ion-picker-legacy-md,.picker-below-highlight.sc-ion-picker-legacy-md{display:none;pointer-events:none}.sc-ion-picker-legacy-md-h{--background:var(--ion-background-color, #fff);--border-width:0.55px 0 0;--border-color:var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-150, var(--ion-background-color-step-150, rgba(0, 0, 0, 0.13)))));--height:260px;--backdrop-opacity:var(--ion-backdrop-opacity, 0.26);color:var(--ion-item-color, var(--ion-text-color, #000))}.picker-toolbar.sc-ion-picker-legacy-md{display:-ms-flexbox;display:flex;-ms-flex-pack:end;justify-content:flex-end;height:44px}.picker-button.sc-ion-picker-legacy-md,.picker-button.ion-activated.sc-ion-picker-legacy-md{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-padding-start:1.1em;padding-inline-start:1.1em;-webkit-padding-end:1.1em;padding-inline-end:1.1em;padding-top:0;padding-bottom:0;height:44px;background:transparent;color:var(--ion-color-primary, #0054e9);font-size:14px;font-weight:500;text-transform:uppercase;-webkit-box-shadow:none;box-shadow:none}.picker-columns.sc-ion-picker-legacy-md{height:216px;-webkit-perspective:1800px;perspective:1800px}.picker-above-highlight.sc-ion-picker-legacy-md{top:0;-webkit-transform:translate3d(0, 0, 90px);transform:translate3d(0, 0, 90px);position:absolute;width:100%;height:81px;border-bottom:1px solid var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-150, var(--ion-background-color-step-150, rgba(0, 0, 0, 0.13)))));background:-webkit-gradient(linear, left top, left bottom, color-stop(20%, var(--ion-background-color, #fff)), to(rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8)));background:linear-gradient(to bottom, var(--ion-background-color, #fff) 20%, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8) 100%);z-index:10}.picker-above-highlight.sc-ion-picker-legacy-md{inset-inline-start:0}.picker-below-highlight.sc-ion-picker-legacy-md{top:115px;-webkit-transform:translate3d(0, 0, 90px);transform:translate3d(0, 0, 90px);position:absolute;width:100%;height:119px;border-top:1px solid var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-150, var(--ion-background-color-step-150, rgba(0, 0, 0, 0.13)))));background:-webkit-gradient(linear, left bottom, left top, color-stop(30%, var(--ion-background-color, #fff)), to(rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8)));background:linear-gradient(to top, var(--ion-background-color, #fff) 30%, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8) 100%);z-index:11}.picker-below-highlight.sc-ion-picker-legacy-md{inset-inline-start:0}`;
28288
-
28289
- // TODO(FW-2832): types
28290
- /**
28291
- * @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
28292
- */
28293
- class Picker {
28294
- constructor(hostRef) {
28295
- registerInstance(this, hostRef);
28296
- this.didPresent = createEvent(this, "ionPickerDidPresent", 7);
28297
- this.willPresent = createEvent(this, "ionPickerWillPresent", 7);
28298
- this.willDismiss = createEvent(this, "ionPickerWillDismiss", 7);
28299
- this.didDismiss = createEvent(this, "ionPickerDidDismiss", 7);
28300
- this.didPresentShorthand = createEvent(this, "didPresent", 7);
28301
- this.willPresentShorthand = createEvent(this, "willPresent", 7);
28302
- this.willDismissShorthand = createEvent(this, "willDismiss", 7);
28303
- this.didDismissShorthand = createEvent(this, "didDismiss", 7);
28304
- this.delegateController = createDelegateController(this);
28305
- this.lockController = createLockController();
28306
- this.triggerController = createTriggerController();
28307
- this.presented = false;
28308
- /** @internal */
28309
- this.hasController = false;
28310
- /**
28311
- * If `true`, the keyboard will be automatically dismissed when the overlay is presented.
28312
- */
28313
- this.keyboardClose = true;
28314
- /**
28315
- * Array of buttons to be displayed at the top of the picker.
28316
- */
28317
- this.buttons = [];
28318
- /**
28319
- * Array of columns to be displayed in the picker.
28320
- */
28321
- this.columns = [];
28322
- /**
28323
- * Number of milliseconds to wait before dismissing the picker.
28324
- */
28325
- this.duration = 0;
28326
- /**
28327
- * If `true`, a backdrop will be displayed behind the picker.
28328
- */
28329
- this.showBackdrop = true;
28330
- /**
28331
- * If `true`, the picker will be dismissed when the backdrop is clicked.
28332
- */
28333
- this.backdropDismiss = true;
28334
- /**
28335
- * If `true`, the picker will animate.
28336
- */
28337
- this.animated = true;
28338
- /**
28339
- * If `true`, the picker will open. If `false`, the picker will close.
28340
- * Use this if you need finer grained control over presentation, otherwise
28341
- * just use the pickerController or the `trigger` property.
28342
- * Note: `isOpen` will not automatically be set back to `false` when
28343
- * the picker dismisses. You will need to do that in your code.
28344
- */
28345
- this.isOpen = false;
28346
- this.onBackdropTap = () => {
28347
- this.dismiss(undefined, BACKDROP);
28348
- };
28349
- this.dispatchCancelHandler = (ev) => {
28350
- const role = ev.detail.role;
28351
- if (isCancel(role)) {
28352
- const cancelButton = this.buttons.find((b) => b.role === 'cancel');
28353
- this.callButtonHandler(cancelButton);
28354
- }
28355
- };
28356
- }
28357
- onIsOpenChange(newValue, oldValue) {
28358
- if (newValue === true && oldValue === false) {
28359
- this.present();
28360
- }
28361
- else if (newValue === false && oldValue === true) {
28362
- this.dismiss();
28363
- }
28364
- }
28365
- triggerChanged() {
28366
- const { trigger, el, triggerController } = this;
28367
- if (trigger) {
28368
- triggerController.addClickListener(el, trigger);
28369
- }
28370
- }
28371
- connectedCallback() {
28372
- prepareOverlay(this.el);
28373
- this.triggerChanged();
28374
- }
28375
- disconnectedCallback() {
28376
- this.triggerController.removeClickListener();
28377
- }
28378
- componentWillLoad() {
28379
- var _a;
28380
- if (!((_a = this.htmlAttributes) === null || _a === void 0 ? void 0 : _a.id)) {
28381
- setOverlayId(this.el);
28382
- }
28383
- }
28384
- componentDidLoad() {
28385
- printIonWarning('[ion-picker-legacy] - ion-picker-legacy and ion-picker-legacy-column have been deprecated in favor of new versions of the ion-picker and ion-picker-column components. These new components display inline with your page content allowing for more presentation flexibility than before.', this.el);
28386
- /**
28387
- * If picker was rendered with isOpen="true"
28388
- * then we should open picker immediately.
28389
- */
28390
- if (this.isOpen === true) {
28391
- raf(() => this.present());
28392
- }
28393
- /**
28394
- * When binding values in frameworks such as Angular
28395
- * it is possible for the value to be set after the Web Component
28396
- * initializes but before the value watcher is set up in Stencil.
28397
- * As a result, the watcher callback may not be fired.
28398
- * We work around this by manually calling the watcher
28399
- * callback when the component has loaded and the watcher
28400
- * is configured.
28401
- */
28402
- this.triggerChanged();
28403
- }
28404
- /**
28405
- * Present the picker overlay after it has been created.
28406
- */
28407
- async present() {
28408
- const unlock = await this.lockController.lock();
28409
- await this.delegateController.attachViewToDom();
28410
- await present(this, 'pickerEnter', iosEnterAnimation$2, iosEnterAnimation$2, undefined);
28411
- if (this.duration > 0) {
28412
- this.durationTimeout = setTimeout(() => this.dismiss(), this.duration);
28413
- }
28414
- unlock();
28415
- }
28416
- /**
28417
- * Dismiss the picker overlay after it has been presented.
28418
- *
28419
- * @param data Any data to emit in the dismiss events.
28420
- * @param role The role of the element that is dismissing the picker.
28421
- * This can be useful in a button handler for determining which button was
28422
- * clicked to dismiss the picker.
28423
- * Some examples include: ``"cancel"`, `"destructive"`, "selected"`, and `"backdrop"`.
28424
- */
28425
- async dismiss(data, role) {
28426
- const unlock = await this.lockController.lock();
28427
- if (this.durationTimeout) {
28428
- clearTimeout(this.durationTimeout);
28429
- }
28430
- const dismissed = await dismiss(this, data, role, 'pickerLeave', iosLeaveAnimation$2, iosLeaveAnimation$2);
28431
- if (dismissed) {
28432
- this.delegateController.removeViewFromDom();
28433
- }
28434
- unlock();
28435
- return dismissed;
28436
- }
28437
- /**
28438
- * Returns a promise that resolves when the picker did dismiss.
28439
- */
28440
- onDidDismiss() {
28441
- return eventMethod(this.el, 'ionPickerDidDismiss');
28442
- }
28443
- /**
28444
- * Returns a promise that resolves when the picker will dismiss.
28445
- */
28446
- onWillDismiss() {
28447
- return eventMethod(this.el, 'ionPickerWillDismiss');
28448
- }
28449
- /**
28450
- * Get the column that matches the specified name.
28451
- *
28452
- * @param name The name of the column.
28453
- */
28454
- getColumn(name) {
28455
- return Promise.resolve(this.columns.find((column) => column.name === name));
28456
- }
28457
- async buttonClick(button) {
28458
- const role = button.role;
28459
- if (isCancel(role)) {
28460
- return this.dismiss(undefined, role);
28461
- }
28462
- const shouldDismiss = await this.callButtonHandler(button);
28463
- if (shouldDismiss) {
28464
- return this.dismiss(this.getSelected(), button.role);
28465
- }
28466
- return Promise.resolve();
28467
- }
28468
- async callButtonHandler(button) {
28469
- if (button) {
28470
- // a handler has been provided, execute it
28471
- // pass the handler the values from the inputs
28472
- const rtn = await safeCall(button.handler, this.getSelected());
28473
- if (rtn === false) {
28474
- // if the return value of the handler is false then do not dismiss
28475
- return false;
28476
- }
28477
- }
28478
- return true;
28479
- }
28480
- getSelected() {
28481
- const selected = {};
28482
- this.columns.forEach((col, index) => {
28483
- const selectedColumn = col.selectedIndex !== undefined ? col.options[col.selectedIndex] : undefined;
28484
- selected[col.name] = {
28485
- text: selectedColumn ? selectedColumn.text : undefined,
28486
- value: selectedColumn ? selectedColumn.value : undefined,
28487
- columnIndex: index,
28488
- };
28489
- });
28490
- return selected;
28491
- }
28492
- render() {
28493
- const { htmlAttributes } = this;
28494
- const mode = getIonMode$1(this);
28495
- return (hAsync(Host, Object.assign({ key: '80f66d33780d8a1352d24be9cb63a0cc03d01ab5', "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
28496
- zIndex: `${20000 + this.overlayIndex}`,
28497
- }, class: Object.assign({ [mode]: true,
28498
- // Used internally for styling
28499
- [`picker-${mode}`]: true, 'overlay-hidden': true }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonPickerWillDismiss: this.dispatchCancelHandler }), hAsync("ion-backdrop", { key: '97fb8e10ba08b197610cb8c0cdea61103883d55f', visible: this.showBackdrop, tappable: this.backdropDismiss }), hAsync("div", { key: 'b3969cb6fbf7153623d14e3ca1493d3370efb211', tabindex: "0", "aria-hidden": "true" }), hAsync("div", { key: '299268483c3727e698d9135bfdf40349a7050ac1', class: "picker-wrapper ion-overlay-wrapper", role: "dialog" }, hAsync("div", { key: '95394de3ef691899b7dbf416f56fd3e86bbdce3f', class: "picker-toolbar" }, this.buttons.map((b) => (hAsync("div", { class: buttonWrapperClass(b) }, hAsync("button", { type: "button", onClick: () => this.buttonClick(b), class: buttonClass$1(b) }, b.text))))), hAsync("div", { key: '05f18bb8d00dc0e22f691b7e41f90f729a6c66d7', class: "picker-columns" }, hAsync("div", { key: '4a8fdf224effc0af67fd413e2e6aca8a78d1cf43', class: "picker-above-highlight" }), this.presented && this.columns.map((c) => hAsync("ion-picker-legacy-column", { col: c })), hAsync("div", { key: 'e50a31db45e3f39e9d0fed36a21be9257eec09bf', class: "picker-below-highlight" }))), hAsync("div", { key: '5a78cb2176ac807ea0c195c6b76cd0e8eef9d4c0', tabindex: "0", "aria-hidden": "true" })));
28500
- }
28501
- get el() { return getElement(this); }
28502
- static get watchers() { return {
28503
- "isOpen": [{
28504
- "onIsOpenChange": 0
28505
- }],
28506
- "trigger": [{
28507
- "triggerChanged": 0
28508
- }]
28509
- }; }
28510
- static get style() { return {
28511
- ios: pickerIosCss(),
28512
- md: pickerMdCss()
28513
- }; }
28514
- static get cmpMeta() { return {
28515
- "$flags$": 34,
28516
- "$tagName$": "ion-picker-legacy",
28517
- "$members$": {
28518
- "overlayIndex": [2, "overlay-index"],
28519
- "delegate": [16],
28520
- "hasController": [4, "has-controller"],
28521
- "keyboardClose": [4, "keyboard-close"],
28522
- "enterAnimation": [16],
28523
- "leaveAnimation": [16],
28524
- "buttons": [16],
28525
- "columns": [16],
28526
- "cssClass": [1, "css-class"],
28527
- "duration": [2],
28528
- "showBackdrop": [4, "show-backdrop"],
28529
- "backdropDismiss": [4, "backdrop-dismiss"],
28530
- "animated": [4],
28531
- "htmlAttributes": [16],
28532
- "isOpen": [4, "is-open"],
28533
- "trigger": [1],
28534
- "presented": [32],
28535
- "present": [64],
28536
- "dismiss": [64],
28537
- "onDidDismiss": [64],
28538
- "onWillDismiss": [64],
28539
- "getColumn": [64]
28540
- },
28541
- "$listeners$": undefined,
28542
- "$lazyBundleId$": "-",
28543
- "$attrsToReflect$": []
28544
- }; }
28545
28285
  }
28546
- const buttonWrapperClass = (button) => {
28547
- return {
28548
- [`picker-toolbar-${button.role}`]: button.role !== undefined,
28549
- 'picker-toolbar-button': true,
28550
- };
28551
- };
28552
- const buttonClass$1 = (button) => {
28553
- return Object.assign({ 'picker-button': true, 'ion-activatable': true }, getClassMap(button.cssClass));
28554
- };
28555
28286
 
28556
28287
  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)}}`;
28557
28288
 
@@ -29138,371 +28869,6 @@ class PickerColumn {
29138
28869
  }
29139
28870
  const PICKER_ITEM_ACTIVE_CLASS = 'option-active';
29140
28871
 
29141
- const pickerColumnIosCss = () => `.picker-col{display:-ms-flexbox;display:flex;position:relative;-ms-flex:1;flex:1;-ms-flex-pack:center;justify-content:center;height:100%;-webkit-box-sizing:content-box;box-sizing:content-box;contain:content}.picker-opts{position:relative;-ms-flex:1;flex:1;max-width:100%}.picker-opt{top:0;display:block;position:absolute;width:100%;border:0;text-align:center;text-overflow:ellipsis;white-space:nowrap;contain:strict;overflow:hidden;will-change:transform}.picker-opt{inset-inline-start:0}.picker-opt.picker-opt-disabled{pointer-events:none}.picker-opt-disabled{opacity:0}.picker-opts-left{-ms-flex-pack:start;justify-content:flex-start}.picker-opts-right{-ms-flex-pack:end;justify-content:flex-end}.picker-opt:active,.picker-opt:focus{outline:none}.picker-prefix{position:relative;-ms-flex:1;flex:1;text-align:end;white-space:nowrap}.picker-suffix{position:relative;-ms-flex:1;flex:1;text-align:start;white-space:nowrap}.picker-col{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:0;padding-bottom:0;-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.picker-prefix,.picker-suffix,.picker-opts{top:77px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;color:inherit;font-size:20px;line-height:42px;pointer-events:none}.picker-opt{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-transform-origin:center center;transform-origin:center center;height:46px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out;background:transparent;color:inherit;font-size:20px;line-height:42px;-webkit-backface-visibility:hidden;backface-visibility:hidden;pointer-events:auto}:host-context([dir=rtl]) .picker-opt{-webkit-transform-origin:calc(100% - center) center;transform-origin:calc(100% - center) center}[dir=rtl] .picker-opt{-webkit-transform-origin:calc(100% - center) center;transform-origin:calc(100% - center) center}@supports selector(:dir(rtl)){.picker-opt:dir(rtl){-webkit-transform-origin:calc(100% - center) center;transform-origin:calc(100% - center) center}}`;
29142
-
29143
- const pickerColumnMdCss = () => `.picker-col{display:-ms-flexbox;display:flex;position:relative;-ms-flex:1;flex:1;-ms-flex-pack:center;justify-content:center;height:100%;-webkit-box-sizing:content-box;box-sizing:content-box;contain:content}.picker-opts{position:relative;-ms-flex:1;flex:1;max-width:100%}.picker-opt{top:0;display:block;position:absolute;width:100%;border:0;text-align:center;text-overflow:ellipsis;white-space:nowrap;contain:strict;overflow:hidden;will-change:transform}.picker-opt{inset-inline-start:0}.picker-opt.picker-opt-disabled{pointer-events:none}.picker-opt-disabled{opacity:0}.picker-opts-left{-ms-flex-pack:start;justify-content:flex-start}.picker-opts-right{-ms-flex-pack:end;justify-content:flex-end}.picker-opt:active,.picker-opt:focus{outline:none}.picker-prefix{position:relative;-ms-flex:1;flex:1;text-align:end;white-space:nowrap}.picker-suffix{position:relative;-ms-flex:1;flex:1;text-align:start;white-space:nowrap}.picker-col{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:0;padding-bottom:0;-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.picker-prefix,.picker-suffix,.picker-opts{top:77px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;color:inherit;font-size:22px;line-height:42px;pointer-events:none}.picker-opt{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;height:43px;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out;background:transparent;color:inherit;font-size:22px;line-height:42px;-webkit-backface-visibility:hidden;backface-visibility:hidden;pointer-events:auto}.picker-prefix,.picker-suffix,.picker-opt.picker-opt-selected{color:var(--ion-color-primary, #0054e9)}`;
29144
-
29145
- /**
29146
- * @internal
29147
- */
29148
- class PickerColumnCmp {
29149
- constructor(hostRef) {
29150
- registerInstance(this, hostRef);
29151
- this.ionPickerColChange = createEvent(this, "ionPickerColChange", 7);
29152
- this.optHeight = 0;
29153
- this.rotateFactor = 0;
29154
- this.scaleFactor = 1;
29155
- this.velocity = 0;
29156
- this.y = 0;
29157
- this.noAnimate = true;
29158
- // `colDidChange` is a flag that gets set when the column is changed
29159
- // dynamically. When this flag is set, the column will refresh
29160
- // after the component re-renders to incorporate the new column data.
29161
- // This is necessary because `this.refresh` queries for the option elements,
29162
- // so it needs to wait for the latest elements to be available in the DOM.
29163
- // Ex: column is created with 3 options. User updates the column data
29164
- // to have 5 options. The column will still think it only has 3 options.
29165
- this.colDidChange = false;
29166
- }
29167
- colChanged() {
29168
- this.colDidChange = true;
29169
- }
29170
- async connectedCallback() {
29171
- let pickerRotateFactor = 0;
29172
- let pickerScaleFactor = 0.81;
29173
- const mode = getIonMode$1(this);
29174
- if (mode === 'ios') {
29175
- pickerRotateFactor = -0.46;
29176
- pickerScaleFactor = 1;
29177
- }
29178
- this.rotateFactor = pickerRotateFactor;
29179
- this.scaleFactor = pickerScaleFactor;
29180
- this.gesture = (await Promise.resolve().then(function () { return index; })).createGesture({
29181
- el: this.el,
29182
- gestureName: 'picker-swipe',
29183
- gesturePriority: 100,
29184
- threshold: 0,
29185
- passive: false,
29186
- onStart: (ev) => this.onStart(ev),
29187
- onMove: (ev) => this.onMove(ev),
29188
- onEnd: (ev) => this.onEnd(ev),
29189
- });
29190
- this.gesture.enable();
29191
- // Options have not been initialized yet
29192
- // Animation must be disabled through the `noAnimate` flag
29193
- // Otherwise, the options will render
29194
- // at the top of the column and transition down
29195
- this.tmrId = setTimeout(() => {
29196
- this.noAnimate = false;
29197
- // After initialization, `refresh()` will be called
29198
- // At this point, animation will be enabled. The options will
29199
- // animate as they are being selected.
29200
- this.refresh(true);
29201
- }, 250);
29202
- }
29203
- componentDidLoad() {
29204
- this.onDomChange();
29205
- }
29206
- componentDidUpdate() {
29207
- // Options may have changed since last update.
29208
- if (this.colDidChange) {
29209
- // Animation must be disabled through the `onDomChange` parameter.
29210
- // Otherwise, the recently added options will render
29211
- // at the top of the column and transition down
29212
- this.onDomChange(true, false);
29213
- this.colDidChange = false;
29214
- }
29215
- }
29216
- disconnectedCallback() {
29217
- if (this.rafId !== undefined)
29218
- cancelAnimationFrame(this.rafId);
29219
- if (this.tmrId)
29220
- clearTimeout(this.tmrId);
29221
- if (this.gesture) {
29222
- this.gesture.destroy();
29223
- this.gesture = undefined;
29224
- }
29225
- }
29226
- emitColChange() {
29227
- this.ionPickerColChange.emit(this.col);
29228
- }
29229
- setSelected(selectedIndex, duration) {
29230
- // if there is a selected index, then figure out it's y position
29231
- // if there isn't a selected index, then just use the top y position
29232
- const y = selectedIndex > -1 ? -(selectedIndex * this.optHeight) : 0;
29233
- this.velocity = 0;
29234
- // set what y position we're at
29235
- if (this.rafId !== undefined)
29236
- cancelAnimationFrame(this.rafId);
29237
- this.update(y, duration, true);
29238
- this.emitColChange();
29239
- }
29240
- update(y, duration, saveY) {
29241
- if (!this.optsEl) {
29242
- return;
29243
- }
29244
- // ensure we've got a good round number :)
29245
- let translateY = 0;
29246
- let translateZ = 0;
29247
- const { col, rotateFactor } = this;
29248
- const prevSelected = col.selectedIndex;
29249
- const selectedIndex = (col.selectedIndex = this.indexForY(-y));
29250
- const durationStr = duration === 0 ? '' : duration + 'ms';
29251
- const scaleStr = `scale(${this.scaleFactor})`;
29252
- const children = this.optsEl.children;
29253
- for (let i = 0; i < children.length; i++) {
29254
- const button = children[i];
29255
- const opt = col.options[i];
29256
- const optOffset = i * this.optHeight + y;
29257
- let transform = '';
29258
- if (rotateFactor !== 0) {
29259
- const rotateX = optOffset * rotateFactor;
29260
- if (Math.abs(rotateX) <= 90) {
29261
- translateY = 0;
29262
- translateZ = 90;
29263
- transform = `rotateX(${rotateX}deg) `;
29264
- }
29265
- else {
29266
- translateY = -9999;
29267
- }
29268
- }
29269
- else {
29270
- translateZ = 0;
29271
- translateY = optOffset;
29272
- }
29273
- const selected = selectedIndex === i;
29274
- transform += `translate3d(0px,${translateY}px,${translateZ}px) `;
29275
- if (this.scaleFactor !== 1 && !selected) {
29276
- transform += scaleStr;
29277
- }
29278
- // Update transition duration
29279
- if (this.noAnimate) {
29280
- opt.duration = 0;
29281
- button.style.transitionDuration = '';
29282
- }
29283
- else if (duration !== opt.duration) {
29284
- opt.duration = duration;
29285
- button.style.transitionDuration = durationStr;
29286
- }
29287
- // Update transform
29288
- if (transform !== opt.transform) {
29289
- opt.transform = transform;
29290
- }
29291
- button.style.transform = transform;
29292
- /**
29293
- * Ensure that the select column
29294
- * item has the selected class
29295
- */
29296
- opt.selected = selected;
29297
- if (selected) {
29298
- button.classList.add(PICKER_OPT_SELECTED);
29299
- }
29300
- else {
29301
- button.classList.remove(PICKER_OPT_SELECTED);
29302
- }
29303
- }
29304
- this.col.prevSelected = prevSelected;
29305
- if (saveY) {
29306
- this.y = y;
29307
- }
29308
- if (this.lastIndex !== selectedIndex) {
29309
- // have not set a last index yet
29310
- hapticSelectionChanged();
29311
- this.lastIndex = selectedIndex;
29312
- }
29313
- }
29314
- decelerate() {
29315
- if (this.velocity !== 0) {
29316
- // still decelerating
29317
- this.velocity *= DECELERATION_FRICTION;
29318
- // do not let it go slower than a velocity of 1
29319
- this.velocity = this.velocity > 0 ? Math.max(this.velocity, 1) : Math.min(this.velocity, -1);
29320
- let y = this.y + this.velocity;
29321
- if (y > this.minY) {
29322
- // whoops, it's trying to scroll up farther than the options we have!
29323
- y = this.minY;
29324
- this.velocity = 0;
29325
- }
29326
- else if (y < this.maxY) {
29327
- // gahh, it's trying to scroll down farther than we can!
29328
- y = this.maxY;
29329
- this.velocity = 0;
29330
- }
29331
- this.update(y, 0, true);
29332
- const notLockedIn = Math.round(y) % this.optHeight !== 0 || Math.abs(this.velocity) > 1;
29333
- if (notLockedIn) {
29334
- // isn't locked in yet, keep decelerating until it is
29335
- this.rafId = requestAnimationFrame(() => this.decelerate());
29336
- }
29337
- else {
29338
- this.velocity = 0;
29339
- this.emitColChange();
29340
- hapticSelectionEnd();
29341
- }
29342
- }
29343
- else if (this.y % this.optHeight !== 0) {
29344
- // needs to still get locked into a position so options line up
29345
- const currentPos = Math.abs(this.y % this.optHeight);
29346
- // create a velocity in the direction it needs to scroll
29347
- this.velocity = currentPos > this.optHeight / 2 ? 1 : -1;
29348
- this.decelerate();
29349
- }
29350
- }
29351
- indexForY(y) {
29352
- return Math.min(Math.max(Math.abs(Math.round(y / this.optHeight)), 0), this.col.options.length - 1);
29353
- }
29354
- onStart(detail) {
29355
- // We have to prevent default in order to block scrolling under the picker
29356
- // but we DO NOT have to stop propagation, since we still want
29357
- // some "click" events to capture
29358
- if (detail.event.cancelable) {
29359
- detail.event.preventDefault();
29360
- }
29361
- detail.event.stopPropagation();
29362
- hapticSelectionStart();
29363
- // reset everything
29364
- if (this.rafId !== undefined)
29365
- cancelAnimationFrame(this.rafId);
29366
- const options = this.col.options;
29367
- let minY = options.length - 1;
29368
- let maxY = 0;
29369
- for (let i = 0; i < options.length; i++) {
29370
- if (!options[i].disabled) {
29371
- minY = Math.min(minY, i);
29372
- maxY = Math.max(maxY, i);
29373
- }
29374
- }
29375
- this.minY = -(minY * this.optHeight);
29376
- this.maxY = -(maxY * this.optHeight);
29377
- }
29378
- onMove(detail) {
29379
- if (detail.event.cancelable) {
29380
- detail.event.preventDefault();
29381
- }
29382
- detail.event.stopPropagation();
29383
- // update the scroll position relative to pointer start position
29384
- let y = this.y + detail.deltaY;
29385
- if (y > this.minY) {
29386
- // scrolling up higher than scroll area
29387
- y = Math.pow(y, 0.8);
29388
- this.bounceFrom = y;
29389
- }
29390
- else if (y < this.maxY) {
29391
- // scrolling down below scroll area
29392
- y += Math.pow(this.maxY - y, 0.9);
29393
- this.bounceFrom = y;
29394
- }
29395
- else {
29396
- this.bounceFrom = 0;
29397
- }
29398
- this.update(y, 0, false);
29399
- }
29400
- onEnd(detail) {
29401
- if (this.bounceFrom > 0) {
29402
- // bounce back up
29403
- this.update(this.minY, 100, true);
29404
- this.emitColChange();
29405
- return;
29406
- }
29407
- else if (this.bounceFrom < 0) {
29408
- // bounce back down
29409
- this.update(this.maxY, 100, true);
29410
- this.emitColChange();
29411
- return;
29412
- }
29413
- this.velocity = clamp(-MAX_PICKER_SPEED, detail.velocityY * 23, MAX_PICKER_SPEED);
29414
- if (this.velocity === 0 && detail.deltaY === 0) {
29415
- const opt = detail.event.target.closest('.picker-opt');
29416
- if (opt === null || opt === void 0 ? void 0 : opt.hasAttribute('opt-index')) {
29417
- this.setSelected(parseInt(opt.getAttribute('opt-index'), 10), TRANSITION_DURATION);
29418
- }
29419
- }
29420
- else {
29421
- this.y += detail.deltaY;
29422
- if (Math.abs(detail.velocityY) < 0.05) {
29423
- const isScrollingUp = detail.deltaY > 0;
29424
- const optHeightFraction = (Math.abs(this.y) % this.optHeight) / this.optHeight;
29425
- if (isScrollingUp && optHeightFraction > 0.5) {
29426
- this.velocity = Math.abs(this.velocity) * -1;
29427
- }
29428
- else if (!isScrollingUp && optHeightFraction <= 0.5) {
29429
- this.velocity = Math.abs(this.velocity);
29430
- }
29431
- }
29432
- this.decelerate();
29433
- }
29434
- }
29435
- refresh(forceRefresh, animated) {
29436
- var _a;
29437
- let min = this.col.options.length - 1;
29438
- let max = 0;
29439
- const options = this.col.options;
29440
- for (let i = 0; i < options.length; i++) {
29441
- if (!options[i].disabled) {
29442
- min = Math.min(min, i);
29443
- max = Math.max(max, i);
29444
- }
29445
- }
29446
- /**
29447
- * Only update selected value if column has a
29448
- * velocity of 0. If it does not, then the
29449
- * column is animating might land on
29450
- * a value different than the value at
29451
- * selectedIndex
29452
- */
29453
- if (this.velocity !== 0) {
29454
- return;
29455
- }
29456
- const selectedIndex = clamp(min, (_a = this.col.selectedIndex) !== null && _a !== void 0 ? _a : 0, max);
29457
- if (this.col.prevSelected !== selectedIndex || forceRefresh) {
29458
- const y = selectedIndex * this.optHeight * -1;
29459
- const duration = animated ? TRANSITION_DURATION : 0;
29460
- this.velocity = 0;
29461
- this.update(y, duration, true);
29462
- }
29463
- }
29464
- onDomChange(forceRefresh, animated) {
29465
- const colEl = this.optsEl;
29466
- if (colEl) {
29467
- // DOM READ
29468
- // We perfom a DOM read over a rendered item, this needs to happen after the first render or after the column has changed
29469
- this.optHeight = colEl.firstElementChild ? colEl.firstElementChild.clientHeight : 0;
29470
- }
29471
- this.refresh(forceRefresh, animated);
29472
- }
29473
- render() {
29474
- const col = this.col;
29475
- const mode = getIonMode$1(this);
29476
- return (hAsync(Host, { key: '86125e95f18837dfd021db01777d72a1562d8ee3', class: Object.assign({ [mode]: true, 'picker-col': true, 'picker-opts-left': this.col.align === 'left', 'picker-opts-right': this.col.align === 'right' }, getClassMap(col.cssClass)), style: {
29477
- 'max-width': this.col.columnWidth,
29478
- } }, col.prefix && (hAsync("div", { key: 'b0f3d39e0bd128781066ffefb7a1e40d12a9e76d', class: "picker-prefix", style: { width: col.prefixWidth } }, col.prefix)), hAsync("div", { key: '0b106ac4d56916eaaa7f09d1b68348b3754b7bba', class: "picker-opts", style: { maxWidth: col.optionsWidth }, ref: (el) => (this.optsEl = el) }, col.options.map((o, index) => (hAsync("button", { "aria-label": o.ariaLabel, class: { 'picker-opt': true, 'picker-opt-disabled': !!o.disabled }, "opt-index": index }, o.text)))), col.suffix && (hAsync("div", { key: '00ff2f9dbb4561787e5a5223327c6a2a33f8362e', class: "picker-suffix", style: { width: col.suffixWidth } }, col.suffix))));
29479
- }
29480
- get el() { return getElement(this); }
29481
- static get watchers() { return {
29482
- "col": [{
29483
- "colChanged": 0
29484
- }]
29485
- }; }
29486
- static get style() { return {
29487
- ios: pickerColumnIosCss(),
29488
- md: pickerColumnMdCss()
29489
- }; }
29490
- static get cmpMeta() { return {
29491
- "$flags$": 32,
29492
- "$tagName$": "ion-picker-legacy-column",
29493
- "$members$": {
29494
- "col": [16]
29495
- },
29496
- "$listeners$": undefined,
29497
- "$lazyBundleId$": "-",
29498
- "$attrsToReflect$": []
29499
- }; }
29500
- }
29501
- const PICKER_OPT_SELECTED = 'picker-opt-selected';
29502
- const DECELERATION_FRICTION = 0.97;
29503
- const MAX_PICKER_SPEED = 90;
29504
- const TRANSITION_DURATION = 150;
29505
-
29506
28872
  const pickerColumnOptionIosCss = () => `.picker-column-option-button{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;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;cursor:pointer;overflow:hidden}:host(.option-disabled){opacity:0.4}:host(.option-disabled) .picker-column-option-button{cursor:default}`;
29507
28873
 
29508
28874
  const pickerColumnOptionMdCss = () => `.picker-column-option-button{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;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;cursor:pointer;overflow:hidden}:host(.option-disabled){opacity:0.4}:host(.option-disabled) .picker-column-option-button{cursor:default}:host(.option-active),:host([part~=active]){color:var(--ion-color-base)}`;
@@ -30924,6 +30290,10 @@ class Popover {
30924
30290
  this.headerResizeObserver.disconnect();
30925
30291
  this.headerResizeObserver = undefined;
30926
30292
  }
30293
+ // Clean up aria-hidden if removed without dismiss() being called
30294
+ if (this.presented) {
30295
+ cleanupRootFocusTrapAccessibility();
30296
+ }
30927
30297
  }
30928
30298
  componentWillLoad() {
30929
30299
  var _a, _b;
@@ -31162,9 +30532,9 @@ class Popover {
31162
30532
  const { onLifecycle, parentPopover, dismissOnSelect, side, arrow, htmlAttributes, focusTrap } = this;
31163
30533
  const desktop = isPlatform('desktop');
31164
30534
  const enableArrow = arrow && !parentPopover;
31165
- return (hAsync(Host, Object.assign({ key: '2edd8333c630efbce59071f8a383e4326e928dbc', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
30535
+ return (hAsync(Host, Object.assign({ key: 'd7f3aa2c2fa93a93585e3eda9e4a6d0daaa541be', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
31166
30536
  zIndex: `${20000 + this.overlayIndex}`,
31167
- }, 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 && hAsync("ion-backdrop", { key: 'aac4e68b08197534375e8ea3f8c9ea0c10ab2af4', tappable: this.backdropDismiss, visible: this.showBackdrop, part: "backdrop" }), hAsync("div", { key: 'b7f4ebf57d4148b32856b0075d286f454be8de5d', class: "popover-wrapper ion-overlay-wrapper", onClick: dismissOnSelect ? () => this.dismiss() : undefined }, enableArrow && hAsync("div", { key: '607d94c28d73e8e957175a7c0f6e8a99ec4dcd53', class: "popover-arrow", part: "arrow" }), hAsync("div", { key: '4366a5a5de550c09895e923f345583508e1ec30c', class: "popover-content", part: "content" }, hAsync("slot", { key: 'eb7886fbc99c15b667b7d825d24f1c12d9380f03' })))));
30537
+ }, 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 && hAsync("ion-backdrop", { key: 'b87be2ef14219997b9c47dcbaf904eb770d0e057', tappable: this.backdropDismiss, visible: this.showBackdrop, part: "backdrop" }), hAsync("div", { key: 'e6243572faf1b871ae2b34923410b2a6638469f0', class: "popover-wrapper ion-overlay-wrapper", onClick: dismissOnSelect ? () => this.dismiss() : undefined }, enableArrow && hAsync("div", { key: '3d4938c9d0764a644398e0e7a4361106da1bd926', class: "popover-arrow", part: "arrow" }), hAsync("div", { key: '24ad6d777828aad2881d56595693e6022fc9cb8e', class: "popover-content", part: "content" }, hAsync("slot", { key: '79f83df74a5c5e3dd7650f15c1aa50795b90a345' })))));
31168
30538
  }
31169
30539
  get el() { return getElement(this); }
31170
30540
  static get watchers() { return {
@@ -31275,7 +30645,7 @@ class ProgressBar {
31275
30645
  const mode = getIonMode$1(this);
31276
30646
  // If the progress is displayed as a solid bar.
31277
30647
  const progressSolid = buffer === 1;
31278
- return (hAsync(Host, { key: 'c859e48f3d24a458239e36d925e5dc003ed07c6b', role: "progressbar", "aria-valuenow": type === 'determinate' ? value : null, "aria-valuemin": "0", "aria-valuemax": "1", class: createColorClasses$1(color, {
30648
+ return (hAsync(Host, { key: 'd7476268ce53b6a4f425b7bc9f01d6935eb411c3', role: "progressbar", "aria-valuenow": type === 'determinate' ? value : null, "aria-valuemin": "0", "aria-valuemax": "1", class: createColorClasses$1(color, {
31279
30649
  [mode]: true,
31280
30650
  [`progress-bar-${type}`]: true,
31281
30651
  'progress-paused': paused,
@@ -31460,7 +30830,7 @@ class Radio {
31460
30830
  const { checked, disabled, color, el, justify, labelPlacement, hasLabel, buttonTabindex, alignment } = this;
31461
30831
  const mode = getIonMode$1(this);
31462
30832
  const inItem = hostContext('ion-item', el);
31463
- return (hAsync(Host, { key: 'af5dc59ed528150872e907ed1036e3e2decba939', onFocus: this.onFocus, onBlur: this.onBlur, onClick: this.onClick, class: createColorClasses$1(color, {
30833
+ return (hAsync(Host, { key: 'd9425b252ed38086420d91d5c680421d121c99f4', onFocus: this.onFocus, onBlur: this.onBlur, onClick: this.onClick, class: createColorClasses$1(color, {
31464
30834
  [mode]: true,
31465
30835
  'in-item': inItem,
31466
30836
  'radio-checked': checked,
@@ -31471,10 +30841,10 @@ class Radio {
31471
30841
  // Focus and active styling should not apply when the radio is in an item
31472
30842
  'ion-activatable': !inItem,
31473
30843
  'ion-focusable': !inItem,
31474
- }), role: "radio", "aria-checked": checked ? 'true' : 'false', "aria-disabled": disabled ? 'true' : null, tabindex: buttonTabindex }, hAsync("label", { key: '1312aba3259a87fe23a6911cdfa477e309469c8b', class: "radio-wrapper" }, hAsync("div", { key: 'b342aa27e240a300836d2a135658d346b95daf09', class: {
30844
+ }), role: "radio", "aria-checked": checked ? 'true' : 'false', "aria-disabled": disabled ? 'true' : null, tabindex: buttonTabindex }, hAsync("label", { key: 'de391fca2aa0b681af5c1d089121596c46e68271', class: "radio-wrapper" }, hAsync("div", { key: '44e4c71645f86a9e73ad58c0e8b41c0558b920f6', class: {
31475
30845
  'label-text-wrapper': true,
31476
30846
  'label-text-wrapper-hidden': !hasLabel,
31477
- }, part: "label" }, hAsync("slot", { key: '0a4613d29aa783d1882cf889377f7e4fd4fea51d' })), hAsync("div", { key: '191faea79dc4cd8befc4b873f5bd9f5af8ca2acc', class: "native-wrapper" }, this.renderRadioControl()))));
30847
+ }, part: "label" }, hAsync("slot", { key: '589d7c1b45a1918b5811663daa8f30788e7729f8' })), hAsync("div", { key: '0f61a17b195582d6c9a0c597cd40e6629256e479', class: "native-wrapper" }, this.renderRadioControl()))));
31478
30848
  }
31479
30849
  get el() { return getElement(this); }
31480
30850
  static get watchers() { return {
@@ -31493,7 +30863,7 @@ class Radio {
31493
30863
  "color": [513],
31494
30864
  "name": [1],
31495
30865
  "disabled": [4],
31496
- "value": [8],
30866
+ "value": [520],
31497
30867
  "labelPlacement": [1, "label-placement"],
31498
30868
  "justify": [1],
31499
30869
  "alignment": [1],
@@ -31504,7 +30874,7 @@ class Radio {
31504
30874
  },
31505
30875
  "$listeners$": undefined,
31506
30876
  "$lazyBundleId$": "-",
31507
- "$attrsToReflect$": [["color", "color"]]
30877
+ "$attrsToReflect$": [["color", "color"], ["value", "value"]]
31508
30878
  }; }
31509
30879
  }
31510
30880
  let radioButtonIds = 0;
@@ -32569,7 +31939,7 @@ class Range {
32569
31939
  const valueAtMin = dualKnobs ? this.valA === min || this.valB === min : this.valA === min;
32570
31940
  const valueAtMax = dualKnobs ? this.valA === max || this.valB === max : this.valA === max;
32571
31941
  renderHiddenInput(true, el, this.name, JSON.stringify(this.getValue()), disabled);
32572
- return (hAsync(Host, { key: 'f8063d1234fb113fe55a7902845dd4b4da8b1edb', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: createColorClasses$1(this.color, {
31942
+ return (hAsync(Host, { key: 'cd26f0187c0d37c7eb9df923f75c8a0f57c19ab6', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: createColorClasses$1(this.color, {
32573
31943
  [mode]: true,
32574
31944
  'in-item': inItem,
32575
31945
  'range-disabled': disabled,
@@ -32583,10 +31953,10 @@ class Range {
32583
31953
  'range-item-end-adjustment': needsEndAdjustment,
32584
31954
  'range-value-min': valueAtMin,
32585
31955
  'range-value-max': valueAtMax,
32586
- }) }, hAsync("label", { key: 'beead65ab01e3b18e4be59c0ee8ac6ebf32aad7c', class: "range-wrapper", id: "range-label" }, hAsync("div", { key: '03633c689d9d2e4c50a2131bcd560329df49e314', class: {
31956
+ }) }, hAsync("label", { key: '90224fd24b0e625a17e7972feff73a0ac31e093d', class: "range-wrapper", id: "range-label" }, hAsync("div", { key: 'e07b9fa10983249c425eec26b741f0f628daf2b2', class: {
32587
31957
  'label-text-wrapper': true,
32588
31958
  'label-text-wrapper-hidden': !hasLabel,
32589
- }, part: "label" }, label !== undefined ? hAsync("div", { class: "label-text" }, label) : hAsync("slot", { name: "label" })), hAsync("div", { key: 'c066804263ab6ae7393f8dcc51184b7198844ffa', class: "native-wrapper" }, hAsync("slot", { key: '7e8ea224d72b3e965dd948bee7e45c1a096b6899', name: "start" }), this.renderRangeSlider(), hAsync("slot", { key: '21f242f6f60ff3adce6a2d90b2d4dac1ceaf6624', name: "end" })))));
31959
+ }, part: "label" }, label !== undefined ? hAsync("div", { class: "label-text" }, label) : hAsync("slot", { name: "label" })), hAsync("div", { key: '9e252f1190838fbae46e724bf665f9b1943600a4', class: "native-wrapper" }, hAsync("slot", { key: '950697dd9636da340de659812daa91fff50e5345', name: "start" }), this.renderRangeSlider(), hAsync("slot", { key: 'd3fce46b29db275af71e6149e725967839ec12b0', name: "end" })))));
32590
31960
  }
32591
31961
  get el() { return getElement(this); }
32592
31962
  static get watchers() { return {
@@ -33657,7 +33027,7 @@ class Refresher {
33657
33027
  }
33658
33028
  render() {
33659
33029
  const mode = getIonMode$1(this);
33660
- return (hAsync(Host, { key: '80fa313b0d77161680836bdd6aa334d02c549b41', slot: "fixed", class: {
33030
+ return (hAsync(Host, { key: '1dd475095f76491206644828cf89fc6d2ec276d1', slot: "fixed", class: {
33661
33031
  [mode]: true,
33662
33032
  // Used internally for styling
33663
33033
  [`refresher-${mode}`]: true,
@@ -33883,7 +33253,7 @@ class RefresherContent {
33883
33253
  const pullingIcon = this.pullingIcon;
33884
33254
  const hasSpinner = pullingIcon != null && SPINNERS[pullingIcon] !== undefined;
33885
33255
  const mode = getIonMode$1(this);
33886
- return (hAsync(Host, { key: '4add42b9fdfded359d1b054d04c2c6ff48e028c8', class: mode }, hAsync("div", { key: '45d4e4e0adfed7f96dd1849767aa2cde947de044', class: "refresher-pulling" }, this.pullingIcon && hasSpinner && (hAsync("div", { key: '6bd6c8ef5bf6e10699eec3bd8646431bfe1077a0', class: "refresher-pulling-icon" }, hAsync("div", { key: '852d20414da53352c8e58bc627e0fda38eff97cb', class: "spinner-arrow-container" }, hAsync("ion-spinner", { key: '0dde3578a80cc4b77a07c4d1db1af80c7eb10c27', name: this.pullingIcon, paused: true }), mode === 'md' && this.pullingIcon === 'circular' && (hAsync("div", { key: 'c71dbfcf416a19c30fed38f722ebf0358c2181dd', class: "arrow-container" }, hAsync("ion-icon", { key: 'fa7c2cf624e7a9c41964e66cabc88c594da6d1fd', icon: caretBackSharp, "aria-hidden": "true" })))))), this.pullingIcon && !hasSpinner && (hAsync("div", { key: '3dd68c9968b421c379d1c4349ba619ee0a189c6d', class: "refresher-pulling-icon" }, hAsync("ion-icon", { key: 'f83bceceae4fa8245f91939fb6db589a595e975b', icon: this.pullingIcon, lazy: false, "aria-hidden": "true" }))), this.pullingText !== undefined && this.renderPullingText()), hAsync("div", { key: '98e22ceb0f7883e871f815f6199f5cb313e2e086', class: "refresher-refreshing" }, this.refreshingSpinner && (hAsync("div", { key: 'faabe8a9b61c02a00994ef978bb82b9ba4537214', class: "refresher-refreshing-icon" }, hAsync("ion-spinner", { key: '029a0c073ee1a07f01211e12ba2abc985cf21ed7', name: this.refreshingSpinner }))), this.refreshingText !== undefined && this.renderRefreshingText())));
33256
+ return (hAsync(Host, { key: 'ec378d6a302be697c12c4f973a57c6ad2ada070f', class: mode }, hAsync("div", { key: '0055f98f8c5a1ed7979dc8146ec1f82a575860c7', class: "refresher-pulling" }, this.pullingIcon && hasSpinner && (hAsync("div", { key: '4f88468e26370df6889e72aa54ebb395ebf3757d', class: "refresher-pulling-icon" }, hAsync("div", { key: '05b3f8679576aaa6c2d84d60df6629a392df29e2', class: "spinner-arrow-container" }, hAsync("ion-spinner", { key: '0bf6ceea416ce1140c0f10a5bede063cae7054f4', name: this.pullingIcon, paused: true }), mode === 'md' && this.pullingIcon === 'circular' && (hAsync("div", { key: 'b71ede8455837968218edae28504e5e14bbc1f5c', class: "arrow-container" }, hAsync("ion-icon", { key: '30b808288d23d3eac681b1225cd8392fdacfefe1', icon: caretBackSharp, "aria-hidden": "true" })))))), this.pullingIcon && !hasSpinner && (hAsync("div", { key: 'fee1ae7e57ef8a02f5654808dff9dca3002b6702', class: "refresher-pulling-icon" }, hAsync("ion-icon", { key: '55b34a98028adb497fbc2ac66bdb3d5ae5b1705b', icon: this.pullingIcon, lazy: false, "aria-hidden": "true" }))), this.pullingText !== undefined && this.renderPullingText()), hAsync("div", { key: 'ef8f987daa8060cb6f8fd83c0864095042b9eecf', class: "refresher-refreshing" }, this.refreshingSpinner && (hAsync("div", { key: 'cd6fe0e81b34eeae11478fcc8a42044bff6f7a52', class: "refresher-refreshing-icon" }, hAsync("ion-spinner", { key: '9cd778229582b538d54589c4d8e4d470efb64aad', name: this.refreshingSpinner }))), this.refreshingText !== undefined && this.renderRefreshingText())));
33887
33257
  }
33888
33258
  get el() { return getElement(this); }
33889
33259
  static get cmpMeta() { return {
@@ -33924,7 +33294,7 @@ class Reorder {
33924
33294
  render() {
33925
33295
  const mode = getIonMode$1(this);
33926
33296
  const reorderIcon = mode === 'ios' ? reorderThreeOutline : reorderTwoSharp;
33927
- return (hAsync(Host, { key: 'b869db61ca6393cf1476f2111a66b387b567c6d1', class: mode }, hAsync("slot", { key: 'a78edd1776835282b8b5c841377018f36c83296c' }, hAsync("ion-icon", { key: '7fb067c47bbb9a7258e5063f028282cc097d0f94', icon: reorderIcon, lazy: false, class: "reorder-icon", part: "icon", "aria-hidden": "true" }))));
33297
+ return (hAsync(Host, { key: '4d35db30b5b3df2020d2212abb3cfac94f9bc2b8', class: mode }, hAsync("slot", { key: '68a565ae4a47f6a9f5d6ba845b596fdfa629ece8' }, hAsync("ion-icon", { key: '168fb0f8eb9c02329274488900fcdb05d44cb895', icon: reorderIcon, lazy: false, class: "reorder-icon", part: "icon", "aria-hidden": "true" }))));
33928
33298
  }
33929
33299
  get el() { return getElement(this); }
33930
33300
  static get style() { return {
@@ -34195,7 +33565,7 @@ class ReorderGroup {
34195
33565
  }
34196
33566
  render() {
34197
33567
  const mode = getIonMode$1(this);
34198
- return (hAsync(Host, { key: '9527bbdedaab63d31f562c874a7332ea60c4b47b', class: {
33568
+ return (hAsync(Host, { key: '3afdc6a6c81bba2f88ea523d4b73c6fccff1b9ec', class: {
34199
33569
  [mode]: true,
34200
33570
  'reorder-enabled': !this.disabled,
34201
33571
  'reorder-list-active': this.state !== 0 /* ReorderGroupState.Idle */,
@@ -34313,7 +33683,7 @@ class RippleEffect {
34313
33683
  }
34314
33684
  render() {
34315
33685
  const mode = getIonMode$1(this);
34316
- return (hAsync(Host, { key: '3b59cbb44741569a7350f9638b4392add673b6f1', role: "presentation", class: {
33686
+ return (hAsync(Host, { key: '5e88b5225414e29883256c86f111ded5bdf2ef91', role: "presentation", class: {
34317
33687
  [mode]: true,
34318
33688
  unbounded: this.unbounded,
34319
33689
  } }));
@@ -35447,10 +34817,10 @@ class RouterLink {
35447
34817
  rel: this.rel,
35448
34818
  target: this.target,
35449
34819
  };
35450
- return (hAsync(Host, { key: '8372835161d507c7b821b7536c55f912eb6ce704', onClick: this.onClick, class: createColorClasses$1(this.color, {
34820
+ return (hAsync(Host, { key: '6d5fdfa0dcf1eb216173bcc53f1f4d625f3ec551', onClick: this.onClick, class: createColorClasses$1(this.color, {
35451
34821
  [mode]: true,
35452
34822
  'ion-activatable': true,
35453
- }) }, hAsync("a", Object.assign({ key: '315966e14a17760f3f64197e8315200039787897' }, attrs), hAsync("slot", { key: '95fc1697b884225e85e647dddcaa8f4af8b9a979' }))));
34823
+ }) }, hAsync("a", Object.assign({ key: '85796b7b48581fe9830ba1102dad7d1069de4e17' }, attrs), hAsync("slot", { key: '0f93b0da3ec4ae8f50f624f9e7bed87d13d712d0' }))));
35454
34824
  }
35455
34825
  static get style() { return routerLinkCss(); }
35456
34826
  static get cmpMeta() { return {
@@ -35489,10 +34859,11 @@ class RouterOutlet {
35489
34859
  */
35490
34860
  this.animated = true;
35491
34861
  }
34862
+ swipeGestureChanged() {
34863
+ this.updateGestureEnabled();
34864
+ }
35492
34865
  swipeHandlerChanged() {
35493
- if (this.gesture) {
35494
- this.gesture.enable(this.swipeHandler !== undefined);
35495
- }
34866
+ this.updateGestureEnabled();
35496
34867
  }
35497
34868
  async connectedCallback() {
35498
34869
  const onStart = () => {
@@ -35532,11 +34903,21 @@ class RouterOutlet {
35532
34903
  this.gestureOrAnimationInProgress = false;
35533
34904
  }
35534
34905
  });
35535
- this.swipeHandlerChanged();
34906
+ if (this.swipeGesture === undefined) {
34907
+ this.swipeGesture = config.getBoolean('swipeBackEnabled', this.mode === 'ios');
34908
+ }
34909
+ else {
34910
+ this.updateGestureEnabled();
34911
+ }
35536
34912
  }
35537
34913
  componentWillLoad() {
35538
34914
  this.ionNavWillLoad.emit();
35539
34915
  }
34916
+ updateGestureEnabled() {
34917
+ if (this.gesture) {
34918
+ this.gesture.enable(this.swipeHandler !== undefined && this.swipeGesture === true);
34919
+ }
34920
+ }
35540
34921
  disconnectedCallback() {
35541
34922
  if (this.gesture) {
35542
34923
  this.gesture.destroy();
@@ -35647,10 +35028,13 @@ class RouterOutlet {
35647
35028
  return true;
35648
35029
  }
35649
35030
  render() {
35650
- return hAsync("slot", { key: '386c41745b61daba161cf75063da97fe29ba36cb' });
35031
+ return hAsync("slot", { key: 'ce09e6fbba7b0a2276cdde5245bb37c9a162c1c7' });
35651
35032
  }
35652
35033
  get el() { return getElement(this); }
35653
35034
  static get watchers() { return {
35035
+ "swipeGesture": [{
35036
+ "swipeGestureChanged": 0
35037
+ }],
35654
35038
  "swipeHandler": [{
35655
35039
  "swipeHandlerChanged": 0
35656
35040
  }]
@@ -35664,6 +35048,7 @@ class RouterOutlet {
35664
35048
  "delegate": [16],
35665
35049
  "animated": [4],
35666
35050
  "animation": [16],
35051
+ "swipeGesture": [1028, "swipe-gesture"],
35667
35052
  "swipeHandler": [16],
35668
35053
  "commit": [64],
35669
35054
  "setRouteId": [64],
@@ -35682,7 +35067,7 @@ class Row {
35682
35067
  registerInstance(this, hostRef);
35683
35068
  }
35684
35069
  render() {
35685
- return (hAsync(Host, { key: '8ba906a8cbea060a79ed658c9bf34906f0c11d38', class: getIonMode$1(this) }, hAsync("slot", { key: 'd1009176f45b588fa52c7d9eb336f3c6d3214bb8' })));
35070
+ return (hAsync(Host, { key: 'a9066661fff12baaf3e80b2e8c08591af72fe5b8', class: getIonMode$1(this) }, hAsync("slot", { key: '62b103af46d3a5ec9c146019ae300b68a4ae867a' })));
35686
35071
  }
35687
35072
  static get style() { return rowCss(); }
35688
35073
  static get cmpMeta() { return {
@@ -35734,7 +35119,7 @@ class Searchbar {
35734
35119
  /**
35735
35120
  * Set the input's autocorrect property.
35736
35121
  */
35737
- this.autocorrect = 'off';
35122
+ this.autocorrect = false;
35738
35123
  /**
35739
35124
  * Set the cancel button icon. Only applies to `md` mode.
35740
35125
  * Defaults to `arrow-back-sharp`.
@@ -36134,8 +35519,8 @@ class Searchbar {
36134
35519
  const clearIcon = this.clearIcon || (mode === 'ios' ? closeCircle : closeSharp);
36135
35520
  const searchIcon = this.searchIcon || (mode === 'ios' ? searchOutline : searchSharp);
36136
35521
  const shouldShowCancelButton = this.shouldShowCancelButton();
36137
- const cancelButton = this.showCancelButton !== 'never' && (hAsync("button", { key: '9e9f3a7f6ee66140181f8c3cfa42bbeee75adafc', "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" }, hAsync("div", { key: '5f83fbcc0708830637815e8c0b69356cad381870', "aria-hidden": "true" }, mode === 'md' ? (hAsync("ion-icon", { "aria-hidden": "true", mode: mode, icon: this.cancelButtonIcon, lazy: false })) : (cancelButtonText))));
36138
- return (hAsync(Host, { key: '219c263c1f3cc63e18bc2d2ba5d672b7806eddd0', role: "search", "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses$1(this.color, {
35522
+ const cancelButton = this.showCancelButton !== 'never' && (hAsync("button", { key: '870c9284441fdf431056ac944ac93afa7cb1ee96', "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" }, hAsync("div", { key: '730e33f44c5ec6eee898ea6612fdba337de354e3', "aria-hidden": "true" }, mode === 'md' ? (hAsync("ion-icon", { "aria-hidden": "true", mode: mode, icon: this.cancelButtonIcon, lazy: false })) : (cancelButtonText))));
35523
+ return (hAsync(Host, { key: 'd898b9f9768ec7119a3ad4be8350d8a3cfb32ba6', role: "search", "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses$1(this.color, {
36139
35524
  [mode]: true,
36140
35525
  'searchbar-animated': animated,
36141
35526
  'searchbar-disabled': this.disabled,
@@ -36145,14 +35530,14 @@ class Searchbar {
36145
35530
  'searchbar-has-focus': this.focused,
36146
35531
  'searchbar-should-show-clear': this.shouldShowClearButton(),
36147
35532
  'searchbar-should-show-cancel': this.shouldShowCancelButton(),
36148
- }) }, hAsync("div", { key: '3f1c25442d6d87c0df67f79482a925b80dcc403d', class: "searchbar-input-container" }, hAsync("input", Object.assign({ key: 'a386fecafda0fab449ea1488906ba6cfc55e2b5c', "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, hAsync("ion-icon", { key: '5f81642628335def39a14f0726e0fafdc7203776', "aria-hidden": "true", mode: mode, icon: searchIcon, lazy: false, class: "searchbar-search-icon" }), hAsync("button", { key: 'da3073646f2d7f639261b556517fbadabc3c10e9', "aria-label": "reset", type: "button", "no-blur": true, class: "searchbar-clear-button", onPointerDown: (ev) => {
35533
+ }) }, hAsync("div", { key: 'a0b49cce6241b7e79834de7cbb1d1076f9d42a21', class: "searchbar-input-container" }, hAsync("input", Object.assign({ key: '8ad5e659f8ed675fa5559f9e5dfcdf99cfcb8bcf', "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 ? 'on' : 'off', spellcheck: this.spellcheck }, this.inheritedAttributes)), mode === 'md' && cancelButton, hAsync("ion-icon", { key: '09f26831a519bb6639115f827b2b8985ae51e4b9', "aria-hidden": "true", mode: mode, icon: searchIcon, lazy: false, class: "searchbar-search-icon" }), hAsync("button", { key: 'd70ccda51cb79e51577648fcca3b274c6fa20a4f', "aria-label": "reset", type: "button", "no-blur": true, class: "searchbar-clear-button", onPointerDown: (ev) => {
36149
35534
  /**
36150
35535
  * This prevents mobile browsers from
36151
35536
  * blurring the input when the clear
36152
35537
  * button is activated.
36153
35538
  */
36154
35539
  ev.preventDefault();
36155
- }, onClick: () => this.onClearInput(true) }, hAsync("ion-icon", { key: '065cd6c707ae462c0767df1bab04ce8045f340a4', "aria-hidden": "true", mode: mode, icon: clearIcon, lazy: false, class: "searchbar-clear-icon" }))), mode === 'ios' && cancelButton));
35540
+ }, onClick: () => this.onClearInput(true) }, hAsync("ion-icon", { key: '428dcb1c0ffef947e24771b060288da47e67b6bd', "aria-hidden": "true", mode: mode, icon: clearIcon, lazy: false, class: "searchbar-clear-icon" }))), mode === 'ios' && cancelButton));
36156
35541
  }
36157
35542
  get el() { return getElement(this); }
36158
35543
  static get watchers() { return {
@@ -36184,7 +35569,7 @@ class Searchbar {
36184
35569
  "animated": [4],
36185
35570
  "autocapitalize": [1],
36186
35571
  "autocomplete": [1],
36187
- "autocorrect": [1],
35572
+ "autocorrect": [4],
36188
35573
  "cancelButtonIcon": [1, "cancel-button-icon"],
36189
35574
  "cancelButtonText": [1, "cancel-button-text"],
36190
35575
  "clearIcon": [1, "clear-icon"],
@@ -36761,14 +36146,14 @@ class Segment {
36761
36146
  }
36762
36147
  render() {
36763
36148
  const mode = getIonMode$1(this);
36764
- return (hAsync(Host, { key: 'eda6b7b88b7967b55cf9098c59b655b348a42224', role: "tablist", onClick: this.onClick, class: createColorClasses$1(this.color, {
36149
+ return (hAsync(Host, { key: 'bb626072e73f09c3433e1a769e09789a00822d8f', role: "tablist", onClick: this.onClick, class: createColorClasses$1(this.color, {
36765
36150
  [mode]: true,
36766
36151
  'in-toolbar': hostContext('ion-toolbar', this.el),
36767
36152
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
36768
36153
  'segment-activated': this.activated,
36769
36154
  'segment-disabled': this.disabled,
36770
36155
  'segment-scrollable': this.scrollable,
36771
- }) }, hAsync("slot", { key: 'fdb451f235ce59c5bb50c61a13c69160ece2d5df', onSlotchange: this.onSlottedItemsChange })));
36156
+ }) }, hAsync("slot", { key: '652d5037c2c2dee4d47a5710b1d150e691202d25', onSlotchange: this.onSlottedItemsChange })));
36772
36157
  }
36773
36158
  get el() { return getElement(this); }
36774
36159
  static get watchers() { return {
@@ -36916,7 +36301,7 @@ class SegmentButton {
36916
36301
  const { checked, type, disabled, hasIcon, hasLabel, layout, segmentEl } = this;
36917
36302
  const mode = getIonMode$1(this);
36918
36303
  const hasSegmentColor = () => (segmentEl === null || segmentEl === void 0 ? void 0 : segmentEl.color) !== undefined;
36919
- return (hAsync(Host, { key: 'f69e2a24198a7c57543dbe66902da039a6569c64', class: {
36304
+ return (hAsync(Host, { key: '792f621c36260b1fceff2b4ec4fa95d98d51d46b', class: {
36920
36305
  [mode]: true,
36921
36306
  'in-toolbar': hostContext('ion-toolbar', this.el),
36922
36307
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
@@ -36932,7 +36317,7 @@ class SegmentButton {
36932
36317
  'ion-activatable': true,
36933
36318
  'ion-activatable-instant': true,
36934
36319
  'ion-focusable': true,
36935
- } }, hAsync("button", Object.assign({ key: '0a6fea3a374074af19f7ece0ba3a7cf1e269ab6d', "aria-selected": checked ? 'true' : 'false', role: "tab", ref: (el) => (this.nativeEl = el), type: type, class: "button-native", part: "native", disabled: disabled }, this.inheritedAttributes), hAsync("span", { key: '991018a38c59a6f3d76b2e952e5569c874d2c13e', class: "button-inner" }, hAsync("slot", { key: '23c547c80108025027b913c7fcbec189286627a3' })), mode === 'md' && hAsync("ion-ripple-effect", { key: '7faa9d06ab6aa7346d16b0b6808979759a79650c' })), hAsync("div", { key: '0d61badf2c227dc38e20185b2b2bb590a5efa434', part: "indicator", class: "segment-button-indicator segment-button-indicator-animated" }, hAsync("div", { key: 'a84035752b78491c344179d1e61d109fb4bd1cf1', part: "indicator-background", class: "segment-button-indicator-background" }))));
36320
+ } }, hAsync("button", Object.assign({ key: '860698be6ceb8f08c0ce3d16ba82d4bb56adf030', "aria-selected": checked ? 'true' : 'false', role: "tab", ref: (el) => (this.nativeEl = el), type: type, class: "button-native", part: "native", disabled: disabled }, this.inheritedAttributes), hAsync("span", { key: 'e903a2642ff46797878a941887b5c596d52fd3a3', class: "button-inner" }, hAsync("slot", { key: '5fc6b842ecb7f0ab8df23b344bf6714f38dda89a' })), mode === 'md' && hAsync("ion-ripple-effect", { key: '710aaf6e4fa2b6cb15897a883e88dec17ef3829f' })), hAsync("div", { key: 'a7b036cba32420e9eb3f2d16487df0519ecc5289', part: "indicator", class: "segment-button-indicator segment-button-indicator-animated" }, hAsync("div", { key: 'a0a5f49ea7f2ecab8014f4f9ca473a27db8348b6', part: "indicator-background", class: "segment-button-indicator-background" }))));
36936
36321
  }
36937
36322
  get el() { return getElement(this); }
36938
36323
  static get watchers() { return {
@@ -36969,7 +36354,7 @@ class SegmentContent {
36969
36354
  registerInstance(this, hostRef);
36970
36355
  }
36971
36356
  render() {
36972
- return (hAsync(Host, { key: '665f41a854621f898eaf7ba9a49e77cc9326501e' }, hAsync("slot", { key: '635aa57fbf6167dcd36fe8dc5dfc1c313637ac04' })));
36357
+ return (hAsync(Host, { key: 'ef39f29c444177c3b083cd35680ba891e4bb6a2a' }, hAsync("slot", { key: '51f9dd9ca084ddd928b376aa9d716509669c32b2' })));
36973
36358
  }
36974
36359
  static get style() { return segmentContentCss(); }
36975
36360
  static get cmpMeta() { return {
@@ -37088,11 +36473,11 @@ class SegmentView {
37088
36473
  }
37089
36474
  render() {
37090
36475
  const { disabled, isManualScroll, swipeGesture } = this;
37091
- return (hAsync(Host, { key: '2a6e0a1046af75b1fa0eed20a5fbbb4634480297', class: {
36476
+ return (hAsync(Host, { key: 'a6c6ac0232c4bb6f2a954b3de7993019d71f423a', class: {
37092
36477
  'segment-view-disabled': disabled,
37093
36478
  'segment-view-scroll-disabled': isManualScroll === false,
37094
36479
  'segment-view-swipe-disabled': swipeGesture === false,
37095
- } }, hAsync("slot", { key: '644b60d179d0de3fa204e3bef26a3503ceeaf1d6' })));
36480
+ } }, hAsync("slot", { key: '386305be2a75069c79def12005d9f6b49276763f' })));
37096
36481
  }
37097
36482
  get el() { return getElement(this); }
37098
36483
  static get style() { return {
@@ -37276,9 +36661,40 @@ class Select {
37276
36661
  this.emitStyle();
37277
36662
  }
37278
36663
  setValue(value) {
36664
+ if (this.isValueEqual(this.value, value)) {
36665
+ return;
36666
+ }
37279
36667
  this.value = value;
37280
36668
  this.ionChange.emit({ value });
37281
36669
  }
36670
+ isValueEqual(currentValue, newValue) {
36671
+ if (this.multiple) {
36672
+ const currentArr = Array.isArray(currentValue) ? currentValue : [];
36673
+ const newArr = Array.isArray(newValue) ? newValue : [];
36674
+ if (currentArr.length !== newArr.length) {
36675
+ return false;
36676
+ }
36677
+ // Multiset compare: each new value must match a distinct current value.
36678
+ // A plain `every(isOptionSelected)` would accept ['a','a'] as equal to
36679
+ // ['a','b'] when both 'a' and 'b' map to options whose values overlap.
36680
+ const remaining = currentArr.slice();
36681
+ return newArr.every((val) => {
36682
+ const idx = remaining.findIndex((c) => compareOptions(c, val, this.compareWith));
36683
+ if (idx === -1) {
36684
+ return false;
36685
+ }
36686
+ remaining.splice(idx, 1);
36687
+ return true;
36688
+ });
36689
+ }
36690
+ if (currentValue == null && newValue == null) {
36691
+ return true;
36692
+ }
36693
+ if (currentValue == null || newValue == null) {
36694
+ return false;
36695
+ }
36696
+ return compareOptions(currentValue, newValue, this.compareWith);
36697
+ }
37282
36698
  async connectedCallback() {
37283
36699
  const { el } = this;
37284
36700
  this.notchController = createNotchController(el, () => this.notchSpacerEl, () => this.labelSlot);
@@ -37864,7 +37280,7 @@ class Select {
37864
37280
  * TODO(FW-5592): Remove hasStartEndSlots condition
37865
37281
  */
37866
37282
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || isExpanded || hasStartEndSlots));
37867
- return (hAsync(Host, { key: '5f4ee901b65554eacc9fa52230d06b1a5ff1247c', onClick: this.onClick, class: createColorClasses$1(this.color, {
37283
+ return (hAsync(Host, { key: '2c141ef1b6983b464118e8ed192739dfca9d095a', onClick: this.onClick, class: createColorClasses$1(this.color, {
37868
37284
  [mode]: true,
37869
37285
  'in-item': inItem,
37870
37286
  'in-item-color': hostContext('ion-item.ion-color', el),
@@ -37882,7 +37298,7 @@ class Select {
37882
37298
  [`select-justify-${justify}`]: justifyEnabled,
37883
37299
  [`select-shape-${shape}`]: shape !== undefined,
37884
37300
  [`select-label-placement-${labelPlacement}`]: true,
37885
- }) }, hAsync("label", { key: 'd56d89b5b58da2b5eaebada9d1be58ca45c67806', class: "select-wrapper", id: "select-label", onClick: this.onLabelClick, part: "wrapper" }, this.renderLabelContainer(), hAsync("div", { key: 'bc8bf089c693781ad5b3a5db76a12223867d748e', class: "select-wrapper-inner", part: "inner" }, hAsync("slot", { key: 'e1c12b96f1573eb192608c458ed1f3463174cd89', name: "start" }), hAsync("div", { key: '6ee5e3900d8e462f175649b502ac6faa2f2b9909', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), hAsync("slot", { key: 'faeaea34aad412e1458beab95d4b1b9ca7b87c41', name: "end" }), !hasFloatingOrStackedLabel && this.renderSelectIcon()), hasFloatingOrStackedLabel && this.renderSelectIcon(), shouldRenderHighlight && hAsync("div", { key: 'aeff51e51c990844869eff9940575ce6b2223135', class: "select-highlight" })), this.renderBottomContent()));
37301
+ }) }, hAsync("label", { key: 'fa1889b325387da10d1e5fa865aef128bc31aee6', class: "select-wrapper", id: "select-label", onClick: this.onLabelClick, part: "wrapper" }, this.renderLabelContainer(), hAsync("div", { key: 'e31f4ae38af01dbe3a7551e9e5dca2650ae42ef5', class: "select-wrapper-inner", part: "inner" }, hAsync("slot", { key: '623916631f44446fcf2c1df64788ce530964afea', name: "start" }), hAsync("div", { key: 'cbd2298a7c6666ce6b4443b3967195f96558861c', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), hAsync("slot", { key: 'ee8c2a236c7f120988f5bab17397204f1b374b57', name: "end" }), !hasFloatingOrStackedLabel && this.renderSelectIcon()), hasFloatingOrStackedLabel && this.renderSelectIcon(), shouldRenderHighlight && hAsync("div", { key: '951566d0da3aea0be4921b2951207765b089a7f3', class: "select-highlight" })), this.renderBottomContent()));
37886
37302
  }
37887
37303
  get el() { return getElement(this); }
37888
37304
  static get watchers() { return {
@@ -38066,7 +37482,7 @@ class SelectModal {
38066
37482
  } }, option.text))));
38067
37483
  }
38068
37484
  render() {
38069
- return (hAsync(Host, { key: 'fda0bf6f93cd5ec9f3c64f88a52de849e0e140a2', class: getIonMode$1(this) }, hAsync("ion-header", { key: '27c0b17175a53db9ff159feeeb96451a3f011dab' }, hAsync("ion-toolbar", { key: '91a4155ebc317fbc9f1bb3e26a7e94754b953c9b' }, this.header !== undefined && hAsync("ion-title", { key: 'f6dae8e4e381f322cc90efefd9bb6ef81d4d2f3e' }, this.header), hAsync("ion-buttons", { key: 'e7760532fb2e7e7385ed6e62097d92d96ff20148', slot: "end" }, hAsync("ion-button", { key: '4999b6fc46cba138186546dca67b7950855e6fb7', onClick: () => this.closeModal() }, this.cancelText)))), hAsync("ion-content", { key: 'c73f80a4bc25b9061ea65cf11e5d811c1a4d8704' }, hAsync("ion-list", { key: 'b21905d15b36ad5eb45845e768918d2763cf48b1' }, this.multiple === true ? this.renderCheckboxOptions() : this.renderRadioOptions()))));
37485
+ return (hAsync(Host, { key: '36fe925fe98356858630325abc9ab71ef25dfb46', class: getIonMode$1(this) }, hAsync("ion-header", { key: '16d89db1284d7080b4ead5f4a4a0bac57f264f62' }, hAsync("ion-toolbar", { key: 'e16c889d9c7b5edf3b26a7cca1443ec5520e69e0' }, this.header !== undefined && hAsync("ion-title", { key: '269df2e45a3abf3fe7518e8a34b0bab749bdea14' }, this.header), hAsync("ion-buttons", { key: 'd8e218821e085424e52f86ef6ede2c5fb568dc82', slot: "end" }, hAsync("ion-button", { key: '26c99660d4f5ec6334da56ad5712bfc79f80d0e2', onClick: () => this.closeModal() }, this.cancelText)))), hAsync("ion-content", { key: '455fb684edae7d6754ef4882c1221956f7b4d29b' }, hAsync("ion-list", { key: '3817a9deb1881a8c0d165b21940890bd628b3614' }, this.multiple === true ? this.renderCheckboxOptions() : this.renderRadioOptions()))));
38070
37486
  }
38071
37487
  get el() { return getElement(this); }
38072
37488
  static get style() { return {
@@ -38101,7 +37517,7 @@ class SelectOption {
38101
37517
  this.disabled = false;
38102
37518
  }
38103
37519
  render() {
38104
- return hAsync(Host, { key: '824730b6c1e4f15b716e91b05840e890af5f1577', role: "option", id: this.inputId, class: getIonMode$1(this) });
37520
+ return hAsync(Host, { key: '1fc1737fbb29dcb62638149b21620cbdf2f00dbc', role: "option", id: this.inputId, class: getIonMode$1(this) });
38105
37521
  }
38106
37522
  get el() { return getElement(this); }
38107
37523
  static get style() { return selectOptionCss(); }
@@ -38229,7 +37645,7 @@ class SelectPopover {
38229
37645
  render() {
38230
37646
  const { header, message, options, subHeader } = this;
38231
37647
  const hasSubHeaderOrMessage = subHeader !== undefined || message !== undefined;
38232
- return (hAsync(Host, { key: 'e7449a1ecfcdbf45a79f8e26a00253c4e146448a', class: getIonMode$1(this) }, hAsync("ion-list", { key: '52abdfc8668c3429a0dcefef8ddedb6647fdd894' }, header !== undefined && hAsync("ion-list-header", { key: '978e5c03728756feafcc60a0e10e6ec59bf2ae11' }, header), hasSubHeaderOrMessage && (hAsync("ion-item", { key: 'e93c44e7f07a76def16e4b11f0fb4780d84ed402' }, hAsync("ion-label", { key: 'bba1aac43b0bc7f4f00978dd8301985233f3725c', class: "ion-text-wrap" }, subHeader !== undefined && hAsync("h3", { key: 'ad96f6017cf2cc5219540bded2c4f1ca3b532de2' }, subHeader), message !== undefined && hAsync("p", { key: '3fd038921dc40c4d0c29734433984b279ccaeec3' }, message)))), this.renderOptions(options))));
37648
+ return (hAsync(Host, { key: '81783ad099ad52b3e035efa18e5a23be766faf7b', class: getIonMode$1(this) }, hAsync("ion-list", { key: '319171787e9c2228d1d5a0133b2f5e0998644516' }, header !== undefined && hAsync("ion-list-header", { key: '09a0fdbe2807c270b9abdb908965f72c4838030c' }, header), hasSubHeaderOrMessage && (hAsync("ion-item", { key: 'ede19cb8e121fd14a2335fcb81cc59b9a102eac5' }, hAsync("ion-label", { key: '6b98c0f132bc6161299b22c0e56092f85b7b0095', class: "ion-text-wrap" }, subHeader !== undefined && hAsync("h3", { key: '8053e175eb36d7b8f52df1f93cee48ee0794857e' }, subHeader), message !== undefined && hAsync("p", { key: '508673abcda7444ed8f8c828b5418dd48ef86b8e' }, message)))), this.renderOptions(options))));
38233
37649
  }
38234
37650
  get el() { return getElement(this); }
38235
37651
  static get style() { return {
@@ -38279,11 +37695,11 @@ class SkeletonText {
38279
37695
  const animated = this.animated && config.getBoolean('animated', true);
38280
37696
  const inMedia = hostContext('ion-avatar', this.el) || hostContext('ion-thumbnail', this.el);
38281
37697
  const mode = getIonMode$1(this);
38282
- return (hAsync(Host, { key: 'cb8da9aba121811b9a4ffdae60ed88105897cb3c', class: {
37698
+ return (hAsync(Host, { key: '887d958d982345ce610730ab5c9ae35010430f75', class: {
38283
37699
  [mode]: true,
38284
37700
  'skeleton-text-animated': animated,
38285
37701
  'in-media': inMedia,
38286
- } }, hAsync("span", { key: '5379deee3c76d46d615be0cba14b4f60129ffa25' }, "\u00A0")));
37702
+ } }, hAsync("span", { key: 'a184f4b9780a2aada0a16729109ac81436e9c9e1' }, "\u00A0")));
38287
37703
  }
38288
37704
  get el() { return getElement(this); }
38289
37705
  static get style() { return skeletonTextCss(); }
@@ -38335,7 +37751,7 @@ class Spinner {
38335
37751
  svgs.push(buildLine(spinner, duration, i, spinner.lines));
38336
37752
  }
38337
37753
  }
38338
- return (hAsync(Host, { key: 'dd1954e557fa14b943e761474e29e4316ba53938', class: createColorClasses$1(self.color, {
37754
+ return (hAsync(Host, { key: 'c35ebd01186e860acb9cac260193f0836424fdf4', class: createColorClasses$1(self.color, {
38339
37755
  [mode]: true,
38340
37756
  [`spinner-${spinnerName}`]: true,
38341
37757
  'spinner-paused': self.paused || config.getBoolean('_testing'),
@@ -38434,12 +37850,12 @@ class SplitPane {
38434
37850
  }
38435
37851
  render() {
38436
37852
  const mode = getIonMode$1(this);
38437
- return (hAsync(Host, { key: '05c88c009fbe2e223fd261760a2b49da1653ff62', class: {
37853
+ return (hAsync(Host, { key: '694e989fafcfe2453e0a83b3cb736efaa1eb4fec', class: {
38438
37854
  [mode]: true,
38439
37855
  // Used internally for styling
38440
37856
  [`split-pane-${mode}`]: true,
38441
37857
  'split-pane-visible': this.visible,
38442
- } }, hAsync("slot", { key: 'b35865082661253c4468520d79234fa5dab5bd35' })));
37858
+ } }, hAsync("slot", { key: 'dde7e9382b62cc11971aa233cf98c2314ae4f720' })));
38443
37859
  }
38444
37860
  get el() { return getElement(this); }
38445
37861
  static get watchers() { return {
@@ -38511,10 +37927,10 @@ class Tab {
38511
37927
  }
38512
37928
  render() {
38513
37929
  const { tab, active, component } = this;
38514
- return (hAsync(Host, { key: 'fbd837bad7a0632336d46a597ace23673b153e48', role: "tabpanel", "aria-hidden": !active ? 'true' : null, "aria-labelledby": `tab-button-${tab}`, class: {
37930
+ return (hAsync(Host, { key: '745262368a7f45244da459f4fa1730a46dd3e257', role: "tabpanel", "aria-hidden": !active ? 'true' : null, "aria-labelledby": `tab-button-${tab}`, class: {
38515
37931
  'ion-page': component === undefined,
38516
37932
  'tab-hidden': !active,
38517
- } }, hAsync("slot", { key: '35c218169fda826c9c1337558e0278d0c7f5f26a' })));
37933
+ } }, hAsync("slot", { key: '823d09a6f93bf7c0dc74f2b8717d1d3a62df1ad8' })));
38518
37934
  }
38519
37935
  get el() { return getElement(this); }
38520
37936
  static get watchers() { return {
@@ -38628,11 +38044,11 @@ class TabBar {
38628
38044
  const { color, translucent, keyboardVisible } = this;
38629
38045
  const mode = getIonMode$1(this);
38630
38046
  const shouldHide = keyboardVisible && this.el.getAttribute('slot') !== 'top';
38631
- return (hAsync(Host, { key: '24e164eaf81a0bec9237b561465618f10990806c', role: "tablist", "aria-hidden": shouldHide ? 'true' : null, class: createColorClasses$1(color, {
38047
+ return (hAsync(Host, { key: '148f65df0818e9d220a9b46db74cb89ab94e62d2', role: "tablist", "aria-hidden": shouldHide ? 'true' : null, class: createColorClasses$1(color, {
38632
38048
  [mode]: true,
38633
38049
  'tab-bar-translucent': translucent,
38634
38050
  'tab-bar-hidden': shouldHide,
38635
- }) }, hAsync("slot", { key: '0ca29a2d97a7c38bbf43f8d79e271b874b4d9be8' })));
38051
+ }) }, hAsync("slot", { key: 'a64e235f3703662e2dd7a834f752cc5b1490adbc' })));
38636
38052
  }
38637
38053
  get el() { return getElement(this); }
38638
38054
  static get watchers() { return {
@@ -38730,7 +38146,7 @@ class TabButton {
38730
38146
  rel,
38731
38147
  target,
38732
38148
  };
38733
- return (hAsync(Host, { key: '638b93ef40701ec3aefb89b1579eb91aaf6d4f8a', onClick: this.onClick, onKeyup: this.onKeyUp, id: tab !== undefined ? `tab-button-${tab}` : null, class: {
38149
+ return (hAsync(Host, { key: '1034b5a928ecec49bd8efec3730ea1b11a579cf3', onClick: this.onClick, onKeyup: this.onKeyUp, id: tab !== undefined ? `tab-button-${tab}` : null, class: {
38734
38150
  [mode]: true,
38735
38151
  'tab-selected': selected,
38736
38152
  'tab-disabled': disabled,
@@ -38742,7 +38158,7 @@ class TabButton {
38742
38158
  'ion-activatable': true,
38743
38159
  'ion-selectable': true,
38744
38160
  'ion-focusable': true,
38745
- } }, hAsync("a", Object.assign({ key: 'c053d32fbcdad8d5e4a409956b47164d7a080c6b' }, attrs, { class: "button-native", part: "native", role: "tab", "aria-selected": selected ? 'true' : null, "aria-disabled": disabled ? 'true' : null, tabindex: disabled ? '-1' : undefined }, inheritedAttributes), hAsync("span", { key: 'b3b460d33ec978a46b069442280d31b23bc8e794', class: "button-inner" }, hAsync("slot", { key: '87b3928475c941263261101b8fae27c6370d4671' })), mode === 'md' && hAsync("ion-ripple-effect", { key: '6532e5b4546aebe4becaebe1c93ce0e6aedaffe7', type: "unbounded" }))));
38161
+ } }, hAsync("a", Object.assign({ key: '4cc8e695425956ffc7622af27c1b88a45f8a0c68' }, attrs, { class: "button-native", part: "native", role: "tab", "aria-selected": selected ? 'true' : null, "aria-disabled": disabled ? 'true' : null, tabindex: disabled ? '-1' : undefined }, inheritedAttributes), hAsync("span", { key: 'c529c166f557e1a5c744873c075b564c49786a2c', class: "button-inner" }, hAsync("slot", { key: 'f832355934d80267cd6e81e58b9c5afce0b42907' })), mode === 'md' && hAsync("ion-ripple-effect", { key: '90e79bdf38ba1cd89fca9ce63465e26a29b49316', type: "unbounded" }))));
38746
38162
  }
38747
38163
  get el() { return getElement(this); }
38748
38164
  static get style() { return {
@@ -38933,7 +38349,7 @@ class Tabs {
38933
38349
  return Array.from(this.el.querySelectorAll('ion-tab'));
38934
38350
  }
38935
38351
  render() {
38936
- return (hAsync(Host, { key: 'c7131135b31aa312dc0207602561e1c0f4ac3e53', onIonTabButtonClick: this.onTabClicked }, hAsync("slot", { key: '6c46e91c0389bbcea1f15f35cf3ea513a74ac545', name: "top" }), hAsync("div", { key: '4f1b649d8bb60b61402b97359de204979c5eda52', class: "tabs-inner" }, hAsync("slot", { key: '8d1ef4952be4fb33567376e1083ea4da697fcae0' })), hAsync("slot", { key: '260b8da8031494e9cb4635b3d22c49a433042db1', name: "bottom" })));
38352
+ return (hAsync(Host, { key: 'ba04a29fdd02d7c758cbaa98cfc589949872d832', onIonTabButtonClick: this.onTabClicked }, hAsync("slot", { key: 'd5794140152e2c251e567eeb06afc392af74749d', name: "top" }), hAsync("div", { key: '26fb83786637fe7288901fbbdb3694b8bc94329f', class: "tabs-inner" }, hAsync("slot", { key: '60c663a8647e684455b533eaf5fa3908f9333ae9' })), hAsync("slot", { key: '2d9f7d07c8cdc72f5df200fa71fa56a9dd822c4c', name: "bottom" })));
38937
38353
  }
38938
38354
  get el() { return getElement(this); }
38939
38355
  static get style() { return tabsCss(); }
@@ -38973,9 +38389,9 @@ class Text {
38973
38389
  }
38974
38390
  render() {
38975
38391
  const mode = getIonMode$1(this);
38976
- return (hAsync(Host, { key: 'bfaa49d35f43b8036725ae8a322c716fc6e43bdf', class: createColorClasses$1(this.color, {
38392
+ return (hAsync(Host, { key: '41ed8da617ed0e07bbfe96e32a000e1c6503e24e', class: createColorClasses$1(this.color, {
38977
38393
  [mode]: true,
38978
- }) }, hAsync("slot", { key: 'c04880cd1935b42cbe60f58fd523b4d8a96072dc' })));
38394
+ }) }, hAsync("slot", { key: 'db8de04a2493537b3037f276b03abd92dfa56847' })));
38979
38395
  }
38980
38396
  static get style() { return textCss(); }
38981
38397
  static get cmpMeta() { return {
@@ -39436,7 +38852,7 @@ class Textarea {
39436
38852
  * TODO(FW-5592): Remove hasStartEndSlots condition
39437
38853
  */
39438
38854
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
39439
- return (hAsync(Host, { key: '4257e84acd46f43390fa2413d0b8f40e16a37499', class: createColorClasses$1(this.color, {
38855
+ return (hAsync(Host, { key: 'eca1dfed53189408f614661ef3902cdb73d5f5de', class: createColorClasses$1(this.color, {
39440
38856
  [mode]: true,
39441
38857
  'has-value': hasValue,
39442
38858
  'has-focus': hasFocus,
@@ -39445,7 +38861,7 @@ class Textarea {
39445
38861
  [`textarea-shape-${shape}`]: shape !== undefined,
39446
38862
  [`textarea-label-placement-${labelPlacement}`]: true,
39447
38863
  'textarea-disabled': disabled,
39448
- }) }, hAsync("label", { key: '003da35bad92ab36777b7ae40855541bf900c64a', class: "textarea-wrapper", htmlFor: inputId, onClick: this.onLabelClick }, this.renderLabelContainer(), hAsync("div", { key: '3cae2d19f96ba2b18a2d64298fdcc4b64ad34ac7', class: "textarea-wrapper-inner" }, hAsync("div", { key: 'e26cb06763d551f7f83b6ea80349871aab18a016', class: "start-slot-wrapper" }, hAsync("slot", { key: '135ba6db893eaca5f2a785fe61e24f33f56f3765', name: "start" })), hAsync("div", { key: '951eabdd01c5e370790cec8578268361dcc8abdc', class: "native-wrapper", ref: (el) => (this.textareaWrapper = el) }, hAsync("textarea", Object.assign({ key: '13d78f1a934b9f8d85cd9ed386dabc786f953f1d', class: "native-textarea", ref: (el) => (this.nativeInput = el), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, minLength: this.minlength, maxLength: this.maxlength, name: this.name, placeholder: this.placeholder || '', readOnly: this.readonly, required: this.required, spellcheck: this.spellcheck, cols: this.cols, rows: this.rows, wrap: this.wrap, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeyDown, "aria-describedby": this.getHintTextID(), "aria-invalid": this.isInvalid ? 'true' : undefined }, this.inheritedAttributes), value)), hAsync("div", { key: '699038558019470bccb4853fa65e7aeb069e0baa', class: "end-slot-wrapper" }, hAsync("slot", { key: '19d8c212d7c718aeb6924e10bf8e48cad01314ea', name: "end" }))), shouldRenderHighlight && hAsync("div", { key: '910a9437437ce7cab21e37a1cb4a6b309afda58f', class: "textarea-highlight" })), this.renderBottomContent()));
38864
+ }) }, hAsync("label", { key: 'd4d835ffedbf8b6de192096e21167ec4f7e01d30', class: "textarea-wrapper", htmlFor: inputId, onClick: this.onLabelClick }, this.renderLabelContainer(), hAsync("div", { key: '39b03e26c23473de31a0237543eaf1e0875e6ed9', class: "textarea-wrapper-inner" }, hAsync("div", { key: 'e9e0997e7dc6d25f09e8439d81e138590c33a151', class: "start-slot-wrapper" }, hAsync("slot", { key: '2d88aace11d74196758e40af27a777eebb270019', name: "start" })), hAsync("div", { key: '8434424404f9fe707f9209ac6495a33bae060538', class: "native-wrapper", ref: (el) => (this.textareaWrapper = el) }, hAsync("textarea", Object.assign({ key: '5bb8eaeba76c39bccadb7c041a10fb077c422dcc', class: "native-textarea", ref: (el) => (this.nativeInput = el), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, minLength: this.minlength, maxLength: this.maxlength, name: this.name, placeholder: this.placeholder || '', readOnly: this.readonly, required: this.required, spellcheck: this.spellcheck, cols: this.cols, rows: this.rows, wrap: this.wrap, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeyDown, "aria-describedby": this.getHintTextID(), "aria-invalid": this.isInvalid ? 'true' : undefined }, this.inheritedAttributes), value)), hAsync("div", { key: '107707676552f8faca3e708285cc3266061a0394', class: "end-slot-wrapper" }, hAsync("slot", { key: 'dc890ffdce898f3d39a315e7bc432840559be466', name: "end" }))), shouldRenderHighlight && hAsync("div", { key: '4554ad09ac0908cea2e90bfa2301b4cd80ac7242', class: "textarea-highlight" })), this.renderBottomContent()));
39449
38865
  }
39450
38866
  get el() { return getElement(this); }
39451
38867
  static get watchers() { return {
@@ -39514,7 +38930,7 @@ class Thumbnail {
39514
38930
  registerInstance(this, hostRef);
39515
38931
  }
39516
38932
  render() {
39517
- return (hAsync(Host, { key: 'b250e01664238f1dca8f9757b15bc3d5d9387ffa', class: getIonMode$1(this) }, hAsync("slot", { key: '72cb568bccabc983c5186a7596ef6c6d4ebf5ad9' })));
38933
+ return (hAsync(Host, { key: '833e947c683b482a78f8f0df8c9a68e99478bbaa', class: getIonMode$1(this) }, hAsync("slot", { key: '6d1e9e686db88d91379f14121058dbf035d8ded2' })));
39518
38934
  }
39519
38935
  static get style() { return thumbnailCss(); }
39520
38936
  static get cmpMeta() { return {
@@ -40374,9 +39790,9 @@ class Toast {
40374
39790
  if (layout === 'stacked' && startButtons.length > 0 && endButtons.length > 0) {
40375
39791
  printIonWarning('[ion-toast] - This toast is using start and end buttons with the stacked toast layout. We recommend following the best practice of using either start or end buttons with the stacked toast layout.', el);
40376
39792
  }
40377
- return (hAsync(Host, Object.assign({ key: 'b5256edcf33d0ef51e6c5080c84e1ca58abe2ae0', tabindex: "-1" }, this.htmlAttributes, { style: {
39793
+ return (hAsync(Host, Object.assign({ key: '2acb2cd2e12ea0082986495929e4a596d4da2f38', tabindex: "-1" }, this.htmlAttributes, { style: {
40378
39794
  zIndex: `${60000 + this.overlayIndex}`,
40379
- }, class: createColorClasses$1(this.color, Object.assign(Object.assign({ [mode]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'toast-translucent': this.translucent })), onIonToastWillDismiss: this.dispatchCancelHandler }), hAsync("div", { key: '0860f7e895d8bc66e44c4d924ca569f4cbb1a749', class: wrapperClass, part: "wrapper" }, hAsync("div", { key: '28784199c880a3f664677c8f5560b7caa8903251', class: "toast-container", part: "container" }, this.renderButtons(startButtons, 'start'), this.icon !== undefined && (hAsync("ion-icon", { key: '0a63ba1336ad43d2aec14e49055eb46c112359c2', class: "toast-icon", part: "icon", icon: this.icon, lazy: false, "aria-hidden": "true" })), hAsync("div", { key: 'ecec8107af582dc55d4b3828dd7f3054a29f26b1', class: "toast-content", part: "content", role: "status", "aria-atomic": "true", "aria-live": "polite" }, !revealContentToScreenReader && header !== undefined && this.renderHeader('oldHeader', 'true'), !revealContentToScreenReader && message !== undefined && this.renderToastMessage('oldMessage', 'true'), revealContentToScreenReader && header !== undefined && this.renderHeader('header'), revealContentToScreenReader && message !== undefined && this.renderToastMessage('header')), this.renderButtons(endButtons, 'end')))));
39795
+ }, class: createColorClasses$1(this.color, Object.assign(Object.assign({ [mode]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'toast-translucent': this.translucent })), onIonToastWillDismiss: this.dispatchCancelHandler }), hAsync("div", { key: '8b24ba5d3d51d1ab94b9bf6bb5d6e4b8bb3248a7', class: wrapperClass, part: "wrapper" }, hAsync("div", { key: 'e1ebdf4f0425cc7b1e2688667ee9a2b3c545804a', class: "toast-container", part: "container" }, this.renderButtons(startButtons, 'start'), this.icon !== undefined && (hAsync("ion-icon", { key: '552b1ab8f4e72882cc8e878579c7a594119677e1', class: "toast-icon", part: "icon", icon: this.icon, lazy: false, "aria-hidden": "true" })), hAsync("div", { key: '8ac8d64f632fbedadb180132c83043474466bee0', class: "toast-content", part: "content", role: "status", "aria-atomic": "true", "aria-live": "polite" }, !revealContentToScreenReader && header !== undefined && this.renderHeader('oldHeader', 'true'), !revealContentToScreenReader && message !== undefined && this.renderToastMessage('oldMessage', 'true'), revealContentToScreenReader && header !== undefined && this.renderHeader('header'), revealContentToScreenReader && message !== undefined && this.renderToastMessage('header')), this.renderButtons(endButtons, 'end')))));
40380
39796
  }
40381
39797
  get el() { return getElement(this); }
40382
39798
  static get watchers() { return {
@@ -40694,7 +40110,7 @@ class Toggle {
40694
40110
  const value = this.getValue();
40695
40111
  const rtl = isRTL$1(el) ? 'rtl' : 'ltr';
40696
40112
  renderHiddenInput(true, el, name, checked ? value : '', disabled);
40697
- return (hAsync(Host, { key: '736e1dcfca34fd41f6f0632652e7f86d6996a232', role: "switch", "aria-checked": `${checked}`, "aria-describedby": this.hintTextId, "aria-invalid": this.isInvalid ? 'true' : undefined, onClick: this.onClick, "aria-labelledby": hasLabel ? inputLabelId : null, "aria-label": inheritedAttributes['aria-label'] || null, "aria-disabled": disabled ? 'true' : null, "aria-required": required ? 'true' : undefined, tabindex: disabled ? undefined : 0, onKeyDown: this.onKeyDown, onFocus: this.onFocus, onBlur: this.onBlur, class: createColorClasses$1(color, {
40113
+ return (hAsync(Host, { key: 'ab093ddb505af61685cbb8571af1e765fc0292f8', role: "switch", "aria-checked": `${checked}`, "aria-describedby": this.hintTextId, "aria-invalid": this.isInvalid ? 'true' : undefined, onClick: this.onClick, "aria-labelledby": hasLabel ? inputLabelId : null, "aria-label": inheritedAttributes['aria-label'] || null, "aria-disabled": disabled ? 'true' : null, "aria-required": required ? 'true' : undefined, tabindex: disabled ? undefined : 0, onKeyDown: this.onKeyDown, onFocus: this.onFocus, onBlur: this.onBlur, class: createColorClasses$1(color, {
40698
40114
  [mode]: true,
40699
40115
  'in-item': hostContext('ion-item', el),
40700
40116
  'toggle-activated': activated,
@@ -40704,10 +40120,10 @@ class Toggle {
40704
40120
  [`toggle-alignment-${alignment}`]: alignment !== undefined,
40705
40121
  [`toggle-label-placement-${labelPlacement}`]: true,
40706
40122
  [`toggle-${rtl}`]: true,
40707
- }) }, hAsync("label", { key: 'e697739fd3964c1c6c23331cf7e38a9841c46a6a', class: "toggle-wrapper", htmlFor: inputId }, hAsync("input", Object.assign({ key: '3d500b8c1bc879591249d183c1abb3f5f26aff6b', type: "checkbox", role: "switch", "aria-checked": `${checked}`, checked: checked, disabled: disabled, id: inputId, required: required }, inheritedAttributes)), hAsync("div", { key: 'e38f3fe0e66b4ca434fd81514f5ef771c2960841', class: {
40123
+ }) }, hAsync("label", { key: 'b4b05e458fcbc767e4392ae43e647b075780cad0', class: "toggle-wrapper", htmlFor: inputId }, hAsync("input", Object.assign({ key: 'c09100447011c51d5b49b4400ec7d72012e3bc6f', type: "checkbox", role: "switch", "aria-checked": `${checked}`, checked: checked, disabled: disabled, id: inputId, required: required }, inheritedAttributes)), hAsync("div", { key: '71cf059a999ae572a20127b76907e010ace486ad', class: {
40708
40124
  'label-text-wrapper': true,
40709
40125
  'label-text-wrapper-hidden': !hasLabel,
40710
- }, part: "label", id: inputLabelId, onClick: this.onDivLabelClick }, hAsync("slot", { key: '006dd3558264d69ab020c07005b348adc4ecdd5b' }), this.renderHintText()), hAsync("div", { key: 'dd4e52de31caabee41ec1bc58efecd1e213368c9', class: "native-wrapper" }, this.renderToggleControl()))));
40126
+ }, part: "label", id: inputLabelId, onClick: this.onDivLabelClick }, hAsync("slot", { key: 'c480b96a0ddd926568f73291d71253d6f74438c7' }), this.renderHintText()), hAsync("div", { key: '96a2cbd1673e051a78f8b2b16535ecd3f0ed4339', class: "native-wrapper" }, this.renderToggleControl()))));
40711
40127
  }
40712
40128
  get el() { return getElement(this); }
40713
40129
  static get watchers() { return {
@@ -40819,10 +40235,10 @@ class Toolbar {
40819
40235
  this.childrenStyles.forEach((value) => {
40820
40236
  Object.assign(childStyles, value);
40821
40237
  });
40822
- return (hAsync(Host, { key: 'b849db2863778dee6c5a251bffa1b3a657aeb036', class: Object.assign(Object.assign({}, childStyles), createColorClasses$1(this.color, {
40238
+ return (hAsync(Host, { key: '40bad6fa7e94262438da4bbe037dcf8a5fa2df22', class: Object.assign(Object.assign({}, childStyles), createColorClasses$1(this.color, {
40823
40239
  [mode]: true,
40824
40240
  'in-toolbar': hostContext('ion-toolbar', this.el),
40825
- })) }, hAsync("div", { key: '67f5bba9c4f527c3f35bfe1313a2b85741f9b246', class: "toolbar-background", part: "background" }), hAsync("div", { key: '085e8c68f056e5b0deb9d1606431fbeb45dae8e5', class: "toolbar-container", part: "container" }, hAsync("slot", { key: '15227c79c3baf883fd8c43fdb7e1313453933c79', name: "start" }), hAsync("slot", { key: '0b8a7f7e685aa31c80d9bc03446ccc3a9d07e0e8', name: "secondary" }), hAsync("div", { key: '57e4628c1fa89df79dd80456259db961bb691404', class: "toolbar-content", part: "content" }, hAsync("slot", { key: '82c2f6e1acf8d96db259bd8baf295881801edbd5' })), hAsync("slot", { key: 'b2d4afb15214199f206c0a5e08b581e4c9c2f58a', name: "primary" }), hAsync("slot", { key: 'bfb909a0c472f8834046c2ea23bef2f562167ad3', name: "end" }))));
40241
+ })) }, hAsync("div", { key: 'df44c9f0fe3958116ab860b0dad79c53b89f6c59', class: "toolbar-background", part: "background" }), hAsync("div", { key: '2169ffa576875b8d5624211cc0b4bf86191562bc', class: "toolbar-container", part: "container" }, hAsync("slot", { key: 'c8910dcf1ce98ab427fd89c3396a67c2a75bdd07', name: "start" }), hAsync("slot", { key: '05da24d5ef96b9eebd83b534ce02c1f7bcd06680', name: "secondary" }), hAsync("div", { key: '090fea1541e7e2b6ad74a6ded4eadffdb471ccce', class: "toolbar-content", part: "content" }, hAsync("slot", { key: '507e143f92f6fa59ff23d94026411fa2c74f2f8e' })), hAsync("slot", { key: 'f79fdee472e657e26a910cb89d7551943e40e440', name: "primary" }), hAsync("slot", { key: 'dd40fe9ed490cf4346c642e195fdb524dc6cc4f5', name: "end" }))));
40826
40242
  }
40827
40243
  get el() { return getElement(this); }
40828
40244
  static get style() { return {
@@ -40868,11 +40284,11 @@ class ToolbarTitle {
40868
40284
  render() {
40869
40285
  const mode = getIonMode$1(this);
40870
40286
  const size = this.getSize();
40871
- return (hAsync(Host, { key: '44e63f8439df64c470692904427b417e19406476', class: createColorClasses$1(this.color, {
40287
+ return (hAsync(Host, { key: 'd9317e8e66cb6112717f5a9c252658777efbd873', class: createColorClasses$1(this.color, {
40872
40288
  [mode]: true,
40873
40289
  [`title-${size}`]: true,
40874
40290
  'title-rtl': document.dir === 'rtl',
40875
- }) }, hAsync("div", { key: '784cf60a0db16045391891cc8fad0c7dbeba4039', class: "toolbar-title" }, hAsync("slot", { key: '0c720a50479ba257e8756337aeb9b0ab7516a227' }))));
40291
+ }) }, hAsync("div", { key: 'a4d011d6d409bf006d8efe33667002edb109820a', class: "toolbar-title" }, hAsync("slot", { key: '4ca3303b957a0e5387f1e9058e5adb4c6275afcc' }))));
40876
40292
  }
40877
40293
  get el() { return getElement(this); }
40878
40294
  static get watchers() { return {
@@ -40952,10 +40368,8 @@ registerComponents([
40952
40368
  Nav,
40953
40369
  NavLink,
40954
40370
  Note,
40955
- Picker$1,
40956
40371
  Picker,
40957
40372
  PickerColumn,
40958
- PickerColumnCmp,
40959
40373
  PickerColumnOption,
40960
40374
  Popover,
40961
40375
  ProgressBar,