@ionic/core 7.7.5-nightly.20240312 → 7.7.5

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 (93) hide show
  1. package/components/hardware-back-button.js +3 -3
  2. package/components/ion-app.js +4 -4
  3. package/components/ion-menu.js +3 -3
  4. package/components/overlays.js +61 -19
  5. package/dist/cjs/{hardware-back-button-1d378ca9.js → hardware-back-button-b84c0758.js} +3 -3
  6. package/dist/cjs/{index-04f3624f.js → index-676a122f.js} +1 -1
  7. package/dist/cjs/index.cjs.js +3 -3
  8. package/dist/cjs/ion-action-sheet.cjs.entry.js +2 -2
  9. package/dist/cjs/ion-alert.cjs.entry.js +2 -2
  10. package/dist/cjs/ion-app_8.cjs.entry.js +5 -5
  11. package/dist/cjs/ion-datetime_3.cjs.entry.js +2 -2
  12. package/dist/cjs/ion-loading.cjs.entry.js +2 -2
  13. package/dist/cjs/ion-menu_3.cjs.entry.js +5 -5
  14. package/dist/cjs/ion-modal.cjs.entry.js +2 -2
  15. package/dist/cjs/ion-popover.cjs.entry.js +2 -2
  16. package/dist/cjs/ion-select_3.cjs.entry.js +2 -2
  17. package/dist/cjs/ion-toast.cjs.entry.js +2 -2
  18. package/dist/cjs/{overlays-65bdff89.js → overlays-d32575f9.js} +61 -19
  19. package/dist/collection/components/app/app.js +4 -4
  20. package/dist/collection/components/menu/menu.js +3 -3
  21. package/dist/collection/utils/hardware-back-button.js +2 -2
  22. package/dist/collection/utils/overlays.js +61 -19
  23. package/dist/collection/utils/test/overlays/overlays.spec.js +53 -0
  24. package/dist/docs.json +1 -1
  25. package/dist/esm/{hardware-back-button-adcc28d5.js → hardware-back-button-36f7543b.js} +3 -3
  26. package/dist/esm/{index-a3478902.js → index-314a9349.js} +1 -1
  27. package/dist/esm/index.js +3 -3
  28. package/dist/esm/ion-action-sheet.entry.js +2 -2
  29. package/dist/esm/ion-alert.entry.js +2 -2
  30. package/dist/esm/ion-app_8.entry.js +5 -5
  31. package/dist/esm/ion-datetime_3.entry.js +2 -2
  32. package/dist/esm/ion-loading.entry.js +2 -2
  33. package/dist/esm/ion-menu_3.entry.js +5 -5
  34. package/dist/esm/ion-modal.entry.js +2 -2
  35. package/dist/esm/ion-popover.entry.js +2 -2
  36. package/dist/esm/ion-select_3.entry.js +2 -2
  37. package/dist/esm/ion-toast.entry.js +2 -2
  38. package/dist/esm/{overlays-74ac012a.js → overlays-d99a4d6a.js} +61 -19
  39. package/dist/esm-es5/hardware-back-button-36f7543b.js +4 -0
  40. package/dist/esm-es5/{index-a3478902.js → index-314a9349.js} +1 -1
  41. package/dist/esm-es5/index.js +1 -1
  42. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  43. package/dist/esm-es5/ion-alert.entry.js +1 -1
  44. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  45. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  46. package/dist/esm-es5/ion-loading.entry.js +1 -1
  47. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  48. package/dist/esm-es5/ion-modal.entry.js +1 -1
  49. package/dist/esm-es5/ion-popover.entry.js +1 -1
  50. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  51. package/dist/esm-es5/ion-toast.entry.js +1 -1
  52. package/dist/esm-es5/overlays-d99a4d6a.js +4 -0
  53. package/dist/ionic/index.esm.js +1 -1
  54. package/dist/ionic/ionic.esm.js +1 -1
  55. package/dist/ionic/{p-4e867d45.system.entry.js → p-04721936.system.entry.js} +1 -1
  56. package/dist/ionic/{p-875d7f7f.entry.js → p-08a5d8eb.entry.js} +1 -1
  57. package/dist/ionic/{p-a1704328.entry.js → p-09fc100a.entry.js} +1 -1
  58. package/dist/ionic/{p-1d9074d0.entry.js → p-3377236e.entry.js} +1 -1
  59. package/dist/ionic/{p-cdd09d94.entry.js → p-36a80e5c.entry.js} +1 -1
  60. package/dist/ionic/{p-03ea4955.entry.js → p-381612c1.entry.js} +1 -1
  61. package/dist/ionic/{p-05dc41cc.system.js → p-45dad85c.system.js} +1 -1
  62. package/dist/ionic/{p-f9e1f6aa.system.entry.js → p-4830fae8.system.entry.js} +1 -1
  63. package/dist/ionic/{p-33d70d46.js → p-49bda910.js} +1 -1
  64. package/dist/ionic/{p-b5bcde21.system.entry.js → p-4dd988d7.system.entry.js} +1 -1
  65. package/dist/ionic/p-4f710c57.system.js +4 -0
  66. package/dist/ionic/p-60c9fd9e.system.js +1 -1
  67. package/dist/ionic/p-6a0a3e18.system.entry.js +4 -0
  68. package/dist/ionic/p-7f865669.entry.js +4 -0
  69. package/dist/ionic/{p-1c36d604.entry.js → p-8ce6d551.entry.js} +1 -1
  70. package/dist/ionic/{p-1033ab54.system.entry.js → p-9074a84e.system.entry.js} +1 -1
  71. package/dist/ionic/p-b0ccd173.system.entry.js +4 -0
  72. package/dist/ionic/{p-2707ca8e.system.entry.js → p-b13b7128.system.entry.js} +1 -1
  73. package/dist/ionic/{p-a8886f90.entry.js → p-b1ecb683.entry.js} +1 -1
  74. package/dist/ionic/{p-45aca628.system.js → p-b278184d.system.js} +1 -1
  75. package/dist/ionic/p-c711b464.entry.js +4 -0
  76. package/dist/ionic/{p-4c040c1a.system.js → p-cf52f8a2.system.js} +1 -1
  77. package/dist/ionic/{p-f6d06830.system.entry.js → p-cf88a096.system.entry.js} +1 -1
  78. package/dist/ionic/p-d899b844.js +4 -0
  79. package/dist/ionic/{p-8ac5c948.js → p-dbfa5f42.js} +1 -1
  80. package/dist/ionic/{p-e4ff048f.system.entry.js → p-de0e21c6.system.entry.js} +1 -1
  81. package/dist/ionic/{p-f12d1787.entry.js → p-e447e552.entry.js} +1 -1
  82. package/dist/ionic/{p-578895f6.system.entry.js → p-ef269a56.system.entry.js} +1 -1
  83. package/dist/types/utils/hardware-back-button.d.ts +1 -1
  84. package/hydrate/index.js +64 -22
  85. package/package.json +1 -1
  86. package/dist/esm-es5/hardware-back-button-adcc28d5.js +0 -4
  87. package/dist/esm-es5/overlays-74ac012a.js +0 -4
  88. package/dist/ionic/p-6e7d3ff4.system.entry.js +0 -4
  89. package/dist/ionic/p-768c2327.system.entry.js +0 -4
  90. package/dist/ionic/p-bbfdc923.js +0 -4
  91. package/dist/ionic/p-d3a149d6.system.js +0 -4
  92. package/dist/ionic/p-d72473cc.entry.js +0 -4
  93. package/dist/ionic/p-e54e332c.entry.js +0 -4
@@ -2,7 +2,7 @@
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
4
  import { Build, Host, h } from "@stencil/core";
5
- import { shoudUseCloseWatcher } from "../../utils/hardware-back-button";
5
+ import { shouldUseCloseWatcher } from "../../utils/hardware-back-button";
6
6
  import { printIonWarning } from "../../utils/logging/index";
7
7
  import { isPlatform } from "../../utils/platform";
8
8
  import { config } from "../../global/config";
@@ -27,7 +27,7 @@ export class App {
27
27
  import('../../utils/input-shims/input-shims').then((module) => module.startInputShims(config, platform));
28
28
  }
29
29
  const hardwareBackButtonModule = await import('../../utils/hardware-back-button');
30
- const supportsHardwareBackButtonEvents = isHybrid || shoudUseCloseWatcher();
30
+ const supportsHardwareBackButtonEvents = isHybrid || shouldUseCloseWatcher();
31
31
  if (config.getBoolean('hardwareBackButton', supportsHardwareBackButtonEvents)) {
32
32
  hardwareBackButtonModule.startHardwareBackButton();
33
33
  }
@@ -36,7 +36,7 @@ export class App {
36
36
  * If an app sets hardwareBackButton: false and experimentalCloseWatcher: true
37
37
  * then the close watcher will not be used.
38
38
  */
39
- if (shoudUseCloseWatcher()) {
39
+ if (shouldUseCloseWatcher()) {
40
40
  printIonWarning('experimentalCloseWatcher was set to `true`, but hardwareBackButton was set to `false`. Both config options must be `true` for the Close Watcher API to be used.');
41
41
  }
42
42
  hardwareBackButtonModule.blockHardwareBackButton();
@@ -65,7 +65,7 @@ export class App {
65
65
  }
66
66
  render() {
67
67
  const mode = getIonMode(this);
68
- return (h(Host, { key: '3535eb5c0dab78a78011e552524a98599b2b650f', class: {
68
+ return (h(Host, { key: '0ac01df6d90d8185017e1f8e8f02cdf407e6c94b', class: {
69
69
  [mode]: true,
70
70
  'ion-page': true,
71
71
  'force-statusbar-padding': config.getBoolean('_forceStatusbarPadding'),
@@ -4,7 +4,7 @@
4
4
  import { Build, Host, h } from "@stencil/core";
5
5
  import { getTimeGivenProgression } from "../../utils/animation/cubic-bezier";
6
6
  import { GESTURE_CONTROLLER } from "../../utils/gesture/index";
7
- import { shoudUseCloseWatcher } from "../../utils/hardware-back-button";
7
+ import { shouldUseCloseWatcher } from "../../utils/hardware-back-button";
8
8
  import { inheritAriaAttributes, assert, clamp, isEndSide as isEnd } from "../../utils/helpers";
9
9
  import { menuController } from "../../utils/menu-controller/index";
10
10
  import { getPresentedOverlay } from "../../utils/overlays";
@@ -601,13 +601,13 @@ export class Menu {
601
601
  * the ionBackButton listener in the menu controller
602
602
  * will handle closing the menu when Escape is pressed.
603
603
  */
604
- return (h(Host, { key: 'be7145625a30951e5cc26646f6121ee4fa4c910f', onKeyDown: shoudUseCloseWatcher() ? null : this.onKeydown, role: "navigation", "aria-label": inheritedAttributes['aria-label'] || 'menu', class: {
604
+ return (h(Host, { key: 'c6bf01fd87e31cda09c0c35900cb01ea19d61781', onKeyDown: shouldUseCloseWatcher() ? null : this.onKeydown, role: "navigation", "aria-label": inheritedAttributes['aria-label'] || 'menu', class: {
605
605
  [mode]: true,
606
606
  [`menu-type-${type}`]: true,
607
607
  'menu-enabled': !disabled,
608
608
  [`menu-side-${side}`]: true,
609
609
  'menu-pane-visible': isPaneVisible,
610
- } }, h("div", { key: 'ecd6e0641ed67691db270190801f7be365a2d121', class: "menu-inner", part: "container", ref: (el) => (this.menuInnerEl = el) }, h("slot", { key: 'aea3780e259f2b3ea84697a509bb7f13fa9531e9' })), h("ion-backdrop", { key: 'be3253506a34c4c00eb1814621c674196b72db46', ref: (el) => (this.backdropEl = el), class: "menu-backdrop", tappable: false, stopPropagation: false, part: "backdrop" })));
610
+ } }, h("div", { key: '6d818a470a74c11c10554d45d8586436a51f961e', class: "menu-inner", part: "container", ref: (el) => (this.menuInnerEl = el) }, h("slot", { key: '3512e444ec6c6bf2a719b1dd713be9a7652f77c9' })), h("ion-backdrop", { key: '618a5316462406fa47929e4dcd5a8e8c9057a418', ref: (el) => (this.backdropEl = el), class: "menu-backdrop", tappable: false, stopPropagation: false, part: "backdrop" })));
611
611
  }
612
612
  static get is() { return "ion-menu"; }
613
613
  static get encapsulation() { return "shadow"; }
@@ -15,7 +15,7 @@ import { config } from "../global/config";
15
15
  * moment this file is evaluated which could be
16
16
  * before the config is set.
17
17
  */
18
- export const shoudUseCloseWatcher = () => config.get('experimentalCloseWatcher', false) && win !== undefined && 'CloseWatcher' in win;
18
+ export const shouldUseCloseWatcher = () => config.get('experimentalCloseWatcher', false) && win !== undefined && 'CloseWatcher' in win;
19
19
  /**
20
20
  * When hardwareBackButton: false in config,
21
21
  * we need to make sure we also block the default
@@ -85,7 +85,7 @@ export const startHardwareBackButton = () => {
85
85
  * backbutton event otherwise we may get duplicate
86
86
  * events firing.
87
87
  */
88
- if (shoudUseCloseWatcher()) {
88
+ if (shouldUseCloseWatcher()) {
89
89
  let watcher;
90
90
  const configureWatcher = () => {
91
91
  watcher === null || watcher === void 0 ? void 0 : watcher.destroy();
@@ -2,7 +2,7 @@
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
4
  import { doc } from "./browser/index";
5
- import { shoudUseCloseWatcher } from "./hardware-back-button";
5
+ import { shouldUseCloseWatcher } from "./hardware-back-button";
6
6
  import { config } from "../global/config";
7
7
  import { getIonMode } from "../global/ionic-global";
8
8
  import { CoreDelegate } from "./framework-delegate";
@@ -365,7 +365,7 @@ const connectListeners = (doc) => {
365
365
  * this behavior will be handled via the ionBackButton
366
366
  * event.
367
367
  */
368
- if (!shoudUseCloseWatcher()) {
368
+ if (!shouldUseCloseWatcher()) {
369
369
  doc.addEventListener('keydown', (ev) => {
370
370
  if (ev.key === 'Escape') {
371
371
  const lastOverlay = getPresentedOverlay(doc);
@@ -455,15 +455,7 @@ export const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation
455
455
  return;
456
456
  }
457
457
  setRootAriaHidden(true);
458
- /**
459
- * Hide all other overlays from screen readers so only this one
460
- * can be read. Note that presenting an overlay always makes
461
- * it the topmost one.
462
- */
463
- if (doc !== undefined) {
464
- const presentedOverlays = getPresentedOverlays(doc);
465
- presentedOverlays.forEach((o) => o.setAttribute('aria-hidden', 'true'));
466
- }
458
+ hideOverlaysFromScreenReaders(overlay.el);
467
459
  overlay.presented = true;
468
460
  overlay.willPresent.emit();
469
461
  (_a = overlay.willPresentShorthand) === null || _a === void 0 ? void 0 : _a.emit();
@@ -556,7 +548,7 @@ const restoreElementFocus = async (overlayEl) => {
556
548
  }
557
549
  };
558
550
  export const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnimation, opts) => {
559
- var _a, _b, _c;
551
+ var _a, _b;
560
552
  if (!overlay.presented) {
561
553
  return false;
562
554
  }
@@ -607,13 +599,7 @@ export const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLe
607
599
  console.error(err);
608
600
  }
609
601
  overlay.el.remove();
610
- /**
611
- * If there are other overlays presented, unhide the new
612
- * topmost one from screen readers.
613
- */
614
- if (doc !== undefined) {
615
- (_c = getPresentedOverlay(doc)) === null || _c === void 0 ? void 0 : _c.removeAttribute('aria-hidden');
616
- }
602
+ revealOverlaysToScreenReaders();
617
603
  return true;
618
604
  };
619
605
  const getAppRoot = (doc) => {
@@ -809,3 +795,59 @@ export const createTriggerController = () => {
809
795
  removeClickListener,
810
796
  };
811
797
  };
798
+ /**
799
+ * Ensure that underlying overlays have aria-hidden if necessary so that screen readers
800
+ * cannot move focus to these elements. Note that we cannot rely on focus/focusin/focusout
801
+ * events here because those events do not fire when the screen readers moves to a non-focusable
802
+ * element such as text.
803
+ * Without this logic screen readers would be able to move focus outside of the top focus-trapped overlay.
804
+ *
805
+ * @param newTopMostOverlay - The overlay that is being presented. Since the overlay has not been
806
+ * fully presented yet at the time this function is called it will not be included in the getPresentedOverlays result.
807
+ */
808
+ const hideOverlaysFromScreenReaders = (newTopMostOverlay) => {
809
+ var _a;
810
+ if (doc === undefined)
811
+ return;
812
+ const overlays = getPresentedOverlays(doc);
813
+ for (let i = overlays.length - 1; i >= 0; i--) {
814
+ const presentedOverlay = overlays[i];
815
+ const nextPresentedOverlay = (_a = overlays[i + 1]) !== null && _a !== void 0 ? _a : newTopMostOverlay;
816
+ /**
817
+ * If next overlay has aria-hidden then all remaining overlays will have it too.
818
+ * Or, if the next overlay is a Toast that does not have aria-hidden then current overlay
819
+ * should not have aria-hidden either so focus can remain in the current overlay.
820
+ */
821
+ if (nextPresentedOverlay.hasAttribute('aria-hidden') || nextPresentedOverlay.tagName !== 'ION-TOAST') {
822
+ presentedOverlay.setAttribute('aria-hidden', 'true');
823
+ }
824
+ }
825
+ };
826
+ /**
827
+ * When dismissing an overlay we need to reveal the new top-most overlay to screen readers.
828
+ * If the top-most overlay is a Toast we potentially need to reveal more overlays since
829
+ * focus is never automatically moved to the Toast.
830
+ */
831
+ const revealOverlaysToScreenReaders = () => {
832
+ if (doc === undefined)
833
+ return;
834
+ const overlays = getPresentedOverlays(doc);
835
+ for (let i = overlays.length - 1; i >= 0; i--) {
836
+ const currentOverlay = overlays[i];
837
+ /**
838
+ * If the current we are looking at is a Toast then we can remove aria-hidden.
839
+ * However, we potentially need to keep looking at the overlay stack because there
840
+ * could be more Toasts underneath. Additionally, we need to unhide the closest non-Toast
841
+ * overlay too so focus can move there since focus is never automatically moved to the Toast.
842
+ */
843
+ currentOverlay.removeAttribute('aria-hidden');
844
+ /**
845
+ * If we found a non-Toast element then we can just remove aria-hidden and stop searching entirely
846
+ * since this overlay should always receive focus. As a result, all underlying overlays should still
847
+ * be hidden from screen readers.
848
+ */
849
+ if (currentOverlay.tagName !== 'ION-TOAST') {
850
+ break;
851
+ }
852
+ }
853
+ };
@@ -3,6 +3,7 @@
3
3
  */
4
4
  import { newSpecPage } from "@stencil/core/testing";
5
5
  import { Modal } from "../../../components/modal/modal";
6
+ import { Toast } from "../../../components/toast/toast";
6
7
  import { Nav } from "../../../components/nav/nav";
7
8
  import { RouterOutlet } from "../../../components/router-outlet/router-outlet";
8
9
  import { setRootAriaHidden } from "../../overlays";
@@ -150,4 +151,56 @@ describe('aria-hidden on individual overlays', () => {
150
151
  await modalOne.present();
151
152
  expect(modalOne.hasAttribute('aria-hidden')).toEqual(false);
152
153
  });
154
+ it('should not hide previous overlay if top-most overlay is toast', async () => {
155
+ const page = await newSpecPage({
156
+ components: [Modal, Toast],
157
+ html: `
158
+ <ion-modal id="m-one"></ion-modal>
159
+ <ion-modal id="m-two"></ion-modal>
160
+ <ion-toast id="t-one"></ion-toast>
161
+ <ion-toast id="t-two"></ion-toast>
162
+ `,
163
+ });
164
+ const modalOne = page.body.querySelector('ion-modal#m-one');
165
+ const modalTwo = page.body.querySelector('ion-modal#m-two');
166
+ const toastOne = page.body.querySelector('ion-toast#t-one');
167
+ const toastTwo = page.body.querySelector('ion-toast#t-two');
168
+ await modalOne.present();
169
+ await modalTwo.present();
170
+ await toastOne.present();
171
+ await toastTwo.present();
172
+ expect(modalOne.hasAttribute('aria-hidden')).toEqual(true);
173
+ expect(modalTwo.hasAttribute('aria-hidden')).toEqual(false);
174
+ expect(toastOne.hasAttribute('aria-hidden')).toEqual(false);
175
+ expect(toastTwo.hasAttribute('aria-hidden')).toEqual(false);
176
+ await toastTwo.dismiss();
177
+ expect(modalOne.hasAttribute('aria-hidden')).toEqual(true);
178
+ expect(modalTwo.hasAttribute('aria-hidden')).toEqual(false);
179
+ expect(toastOne.hasAttribute('aria-hidden')).toEqual(false);
180
+ await toastOne.dismiss();
181
+ expect(modalOne.hasAttribute('aria-hidden')).toEqual(true);
182
+ expect(modalTwo.hasAttribute('aria-hidden')).toEqual(false);
183
+ });
184
+ it('should hide previous overlay even with a toast that is not the top-most overlay', async () => {
185
+ const page = await newSpecPage({
186
+ components: [Modal, Toast],
187
+ html: `
188
+ <ion-modal id="m-one"></ion-modal>
189
+ <ion-toast id="t-one"></ion-toast>
190
+ <ion-modal id="m-two"></ion-modal>
191
+ `,
192
+ });
193
+ const modalOne = page.body.querySelector('ion-modal#m-one');
194
+ const modalTwo = page.body.querySelector('ion-modal#m-two');
195
+ const toastOne = page.body.querySelector('ion-toast#t-one');
196
+ await modalOne.present();
197
+ await toastOne.present();
198
+ await modalTwo.present();
199
+ expect(modalOne.hasAttribute('aria-hidden')).toEqual(true);
200
+ expect(toastOne.hasAttribute('aria-hidden')).toEqual(true);
201
+ expect(modalTwo.hasAttribute('aria-hidden')).toEqual(false);
202
+ await modalTwo.dismiss();
203
+ expect(modalOne.hasAttribute('aria-hidden')).toEqual(false);
204
+ expect(toastOne.hasAttribute('aria-hidden')).toEqual(false);
205
+ });
153
206
  });
package/dist/docs.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "timestamp": "2024-03-12T06:07:24",
2
+ "timestamp": "2024-03-13T13:10:59",
3
3
  "compiler": {
4
4
  "name": "@stencil/core",
5
5
  "version": "4.12.5",
@@ -17,7 +17,7 @@ import './index-eab5468b.js';
17
17
  * moment this file is evaluated which could be
18
18
  * before the config is set.
19
19
  */
20
- const shoudUseCloseWatcher = () => config.get('experimentalCloseWatcher', false) && win !== undefined && 'CloseWatcher' in win;
20
+ const shouldUseCloseWatcher = () => config.get('experimentalCloseWatcher', false) && win !== undefined && 'CloseWatcher' in win;
21
21
  /**
22
22
  * When hardwareBackButton: false in config,
23
23
  * we need to make sure we also block the default
@@ -87,7 +87,7 @@ const startHardwareBackButton = () => {
87
87
  * backbutton event otherwise we may get duplicate
88
88
  * events firing.
89
89
  */
90
- if (shoudUseCloseWatcher()) {
90
+ if (shouldUseCloseWatcher()) {
91
91
  let watcher;
92
92
  const configureWatcher = () => {
93
93
  watcher === null || watcher === void 0 ? void 0 : watcher.destroy();
@@ -113,4 +113,4 @@ const startHardwareBackButton = () => {
113
113
  const OVERLAY_BACK_BUTTON_PRIORITY = 100;
114
114
  const MENU_BACK_BUTTON_PRIORITY = 99; // 1 less than overlay priority since menu is displayed behind overlays
115
115
 
116
- export { MENU_BACK_BUTTON_PRIORITY, OVERLAY_BACK_BUTTON_PRIORITY, blockHardwareBackButton, shoudUseCloseWatcher, startHardwareBackButton };
116
+ export { MENU_BACK_BUTTON_PRIORITY, OVERLAY_BACK_BUTTON_PRIORITY, blockHardwareBackButton, shouldUseCloseWatcher, startHardwareBackButton };
@@ -2,7 +2,7 @@
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
4
  import { d as doc } from './index-a5d50daf.js';
5
- import { MENU_BACK_BUTTON_PRIORITY } from './hardware-back-button-adcc28d5.js';
5
+ import { MENU_BACK_BUTTON_PRIORITY } from './hardware-back-button-36f7543b.js';
6
6
  import { p as printIonWarning } from './index-9b0d46f4.js';
7
7
  import { c as componentOnReady } from './helpers-be245865.js';
8
8
  import { b as getIonMode } from './ionic-global-c836c8c6.js';
package/dist/esm/index.js CHANGED
@@ -11,12 +11,12 @@ export { g as getPlatforms, i as initialize, a as isPlatform } from './ionic-glo
11
11
  export { c as componentOnReady } from './helpers-be245865.js';
12
12
  export { I as IonicSafeString, g as getMode, s as setupConfig } from './config-49c88215.js';
13
13
  export { o as openURL } from './theme-01f3f29c.js';
14
- export { m as menuController } from './index-a3478902.js';
15
- export { b as actionSheetController, a as alertController, l as loadingController, m as modalController, p as pickerController, c as popoverController, t as toastController } from './overlays-74ac012a.js';
14
+ export { m as menuController } from './index-314a9349.js';
15
+ export { b as actionSheetController, a as alertController, l as loadingController, m as modalController, p as pickerController, c as popoverController, t as toastController } from './overlays-d99a4d6a.js';
16
16
  import './index-a5d50daf.js';
17
17
  import './index-eab5468b.js';
18
18
  import './gesture-controller-1bf57181.js';
19
- import './hardware-back-button-adcc28d5.js';
19
+ import './hardware-back-button-36f7543b.js';
20
20
  import './index-9b0d46f4.js';
21
21
  import './framework-delegate-ed4ba327.js';
22
22
 
@@ -5,7 +5,7 @@ import { r as registerInstance, d as createEvent, e as readTask, h, H as Host, f
5
5
  import { c as createButtonActiveGesture } from './button-active-57422dbf.js';
6
6
  import { r as raf } from './helpers-be245865.js';
7
7
  import { c as createLockController } from './lock-controller-316928be.js';
8
- import { d as createDelegateController, e as createTriggerController, B as BACKDROP, i as isCancel, f as present, g as dismiss, h as eventMethod, s as safeCall, j as prepareOverlay, k as setOverlayId } from './overlays-74ac012a.js';
8
+ import { d as createDelegateController, e as createTriggerController, B as BACKDROP, i as isCancel, f as present, g as dismiss, h as eventMethod, s as safeCall, j as prepareOverlay, k as setOverlayId } from './overlays-d99a4d6a.js';
9
9
  import { g as getClassMap } from './theme-01f3f29c.js';
10
10
  import { b as getIonMode } from './ionic-global-c836c8c6.js';
11
11
  import { c as createAnimation } from './animation-6a0c5338.js';
@@ -14,7 +14,7 @@ import './capacitor-59395cbd.js';
14
14
  import './index-a5d50daf.js';
15
15
  import './index-2cf77112.js';
16
16
  import './gesture-controller-1bf57181.js';
17
- import './hardware-back-button-adcc28d5.js';
17
+ import './hardware-back-button-36f7543b.js';
18
18
  import './framework-delegate-ed4ba327.js';
19
19
  import './index-9b0d46f4.js';
20
20
 
@@ -6,7 +6,7 @@ import { E as ENABLE_HTML_CONTENT_DEFAULT, a as sanitizeDOMString } from './conf
6
6
  import { c as createButtonActiveGesture } from './button-active-57422dbf.js';
7
7
  import { r as raf } from './helpers-be245865.js';
8
8
  import { c as createLockController } from './lock-controller-316928be.js';
9
- import { d as createDelegateController, e as createTriggerController, B as BACKDROP, i as isCancel, j as prepareOverlay, k as setOverlayId, f as present, g as dismiss, h as eventMethod, s as safeCall } from './overlays-74ac012a.js';
9
+ import { d as createDelegateController, e as createTriggerController, B as BACKDROP, i as isCancel, j as prepareOverlay, k as setOverlayId, f as present, g as dismiss, h as eventMethod, s as safeCall } from './overlays-d99a4d6a.js';
10
10
  import { g as getClassMap } from './theme-01f3f29c.js';
11
11
  import { c as config, b as getIonMode } from './ionic-global-c836c8c6.js';
12
12
  import { c as createAnimation } from './animation-6a0c5338.js';
@@ -15,7 +15,7 @@ import './capacitor-59395cbd.js';
15
15
  import './index-a5d50daf.js';
16
16
  import './index-2cf77112.js';
17
17
  import './gesture-controller-1bf57181.js';
18
- import './hardware-back-button-adcc28d5.js';
18
+ import './hardware-back-button-36f7543b.js';
19
19
  import './framework-delegate-ed4ba327.js';
20
20
  import './index-9b0d46f4.js';
21
21
 
@@ -2,7 +2,7 @@
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
4
  import { r as registerInstance, h, H as Host, f as getElement, d as createEvent, e as readTask, i as forceUpdate, w as writeTask } from './index-eab5468b.js';
5
- import { shoudUseCloseWatcher } from './hardware-back-button-adcc28d5.js';
5
+ import { shouldUseCloseWatcher } from './hardware-back-button-36f7543b.js';
6
6
  import { p as printIonWarning } from './index-9b0d46f4.js';
7
7
  import { b as getIonMode, c as config, a as isPlatform } from './ionic-global-c836c8c6.js';
8
8
  import { m as hasLazyBuild, c as componentOnReady, l as clamp, i as inheritAriaAttributes, s as shallowEqualStringMap } from './helpers-be245865.js';
@@ -43,8 +43,8 @@ const App = class {
43
43
  const platform = isPlatform(window, 'ios') ? 'ios' : 'android';
44
44
  import('./input-shims-5329bbe8.js').then((module) => module.startInputShims(config, platform));
45
45
  }
46
- const hardwareBackButtonModule = await import('./hardware-back-button-adcc28d5.js');
47
- const supportsHardwareBackButtonEvents = isHybrid || shoudUseCloseWatcher();
46
+ const hardwareBackButtonModule = await import('./hardware-back-button-36f7543b.js');
47
+ const supportsHardwareBackButtonEvents = isHybrid || shouldUseCloseWatcher();
48
48
  if (config.getBoolean('hardwareBackButton', supportsHardwareBackButtonEvents)) {
49
49
  hardwareBackButtonModule.startHardwareBackButton();
50
50
  }
@@ -53,7 +53,7 @@ const App = class {
53
53
  * If an app sets hardwareBackButton: false and experimentalCloseWatcher: true
54
54
  * then the close watcher will not be used.
55
55
  */
56
- if (shoudUseCloseWatcher()) {
56
+ if (shouldUseCloseWatcher()) {
57
57
  printIonWarning('experimentalCloseWatcher was set to `true`, but hardwareBackButton was set to `false`. Both config options must be `true` for the Close Watcher API to be used.');
58
58
  }
59
59
  hardwareBackButtonModule.blockHardwareBackButton();
@@ -82,7 +82,7 @@ const App = class {
82
82
  }
83
83
  render() {
84
84
  const mode = getIonMode(this);
85
- return (h(Host, { key: '3535eb5c0dab78a78011e552524a98599b2b650f', class: {
85
+ return (h(Host, { key: '0ac01df6d90d8185017e1f8e8f02cdf407e6c94b', class: {
86
86
  [mode]: true,
87
87
  'ion-page': true,
88
88
  'force-statusbar-padding': config.getBoolean('_forceStatusbarPadding'),
@@ -11,11 +11,11 @@ import { c as chevronBack, o as chevronForward, l as chevronDown, p as caretUpSh
11
11
  import { b as getIonMode } from './ionic-global-c836c8c6.js';
12
12
  import { g as generateDayAriaLabel, a as getDay, i as isBefore, b as isAfter, c as isSameDay, d as getPreviousMonth, e as getNextMonth, v as validateParts, f as getPartsFromCalendarDay, h as getNextYear, j as getPreviousYear, k as getEndOfWeek, l as getStartOfWeek, m as getPreviousDay, n as getNextDay, o as getPreviousWeek, p as getNextWeek, q as parseMinParts, r as parseMaxParts, s as parseDate, w as warnIfValueOutOfBounds, t as convertToArrayOfNumbers, u as convertDataToISO, x as getToday, y as getClosestValidDate, z as generateMonths, A as getNumDaysInMonth, B as getCombinedDateColumnData, C as getMonthColumnData, D as getDayColumnData, E as getYearColumnData, F as isMonthFirstLocale, G as getTimeColumnsData, H as isLocaleDayPeriodRTL, I as getDaysOfWeek, J as getMonthAndYear, K as getDaysOfMonth, L as getHourCycle, M as getLocalizedTime, N as getMonthAndDay, O as formatValue, P as clampDate, Q as parseAmPm, R as calculateHourFromAMPM } from './data-0f3ab200.js';
13
13
  import { c as createLockController } from './lock-controller-316928be.js';
14
- import { d as createDelegateController, e as createTriggerController, B as BACKDROP, i as isCancel, j as prepareOverlay, k as setOverlayId, f as present, g as dismiss, h as eventMethod, s as safeCall } from './overlays-74ac012a.js';
14
+ import { d as createDelegateController, e as createTriggerController, B as BACKDROP, i as isCancel, j as prepareOverlay, k as setOverlayId, f as present, g as dismiss, h as eventMethod, s as safeCall } from './overlays-d99a4d6a.js';
15
15
  import { c as createAnimation } from './animation-6a0c5338.js';
16
16
  import { b as hapticSelectionChanged, h as hapticSelectionEnd, a as hapticSelectionStart } from './haptic-554688a5.js';
17
17
  import './index-a5d50daf.js';
18
- import './hardware-back-button-adcc28d5.js';
18
+ import './hardware-back-button-36f7543b.js';
19
19
  import './framework-delegate-ed4ba327.js';
20
20
  import './capacitor-59395cbd.js';
21
21
 
@@ -5,12 +5,12 @@ import { r as registerInstance, d as createEvent, h, H as Host, f as getElement
5
5
  import { E as ENABLE_HTML_CONTENT_DEFAULT, a as sanitizeDOMString } from './config-49c88215.js';
6
6
  import { r as raf } from './helpers-be245865.js';
7
7
  import { c as createLockController } from './lock-controller-316928be.js';
8
- import { d as createDelegateController, e as createTriggerController, B as BACKDROP, j as prepareOverlay, k as setOverlayId, f as present, g as dismiss, h as eventMethod } from './overlays-74ac012a.js';
8
+ import { d as createDelegateController, e as createTriggerController, B as BACKDROP, j as prepareOverlay, k as setOverlayId, f as present, g as dismiss, h as eventMethod } from './overlays-d99a4d6a.js';
9
9
  import { g as getClassMap } from './theme-01f3f29c.js';
10
10
  import { c as config, b as getIonMode } from './ionic-global-c836c8c6.js';
11
11
  import { c as createAnimation } from './animation-6a0c5338.js';
12
12
  import './index-a5d50daf.js';
13
- import './hardware-back-button-adcc28d5.js';
13
+ import './hardware-back-button-36f7543b.js';
14
14
  import './framework-delegate-ed4ba327.js';
15
15
  import './index-9b0d46f4.js';
16
16
 
@@ -4,10 +4,10 @@
4
4
  import { r as registerInstance, d as createEvent, h, H as Host, f as getElement } from './index-eab5468b.js';
5
5
  import { g as getTimeGivenProgression } from './cubic-bezier-fe2083dc.js';
6
6
  import { G as GESTURE_CONTROLLER } from './gesture-controller-1bf57181.js';
7
- import { shoudUseCloseWatcher } from './hardware-back-button-adcc28d5.js';
7
+ import { shouldUseCloseWatcher } from './hardware-back-button-36f7543b.js';
8
8
  import { p as isEndSide, i as inheritAriaAttributes, o as assert, l as clamp } from './helpers-be245865.js';
9
- import { m as menuController } from './index-a3478902.js';
10
- import { o as getPresentedOverlay } from './overlays-74ac012a.js';
9
+ import { m as menuController } from './index-314a9349.js';
10
+ import { o as getPresentedOverlay } from './overlays-d99a4d6a.js';
11
11
  import { c as config, b as getIonMode } from './ionic-global-c836c8c6.js';
12
12
  import { c as createColorClasses, h as hostContext } from './theme-01f3f29c.js';
13
13
  import { u as menuOutline, v as menuSharp } from './index-f7dc70ba.js';
@@ -612,13 +612,13 @@ const Menu = class {
612
612
  * the ionBackButton listener in the menu controller
613
613
  * will handle closing the menu when Escape is pressed.
614
614
  */
615
- return (h(Host, { key: 'be7145625a30951e5cc26646f6121ee4fa4c910f', onKeyDown: shoudUseCloseWatcher() ? null : this.onKeydown, role: "navigation", "aria-label": inheritedAttributes['aria-label'] || 'menu', class: {
615
+ return (h(Host, { key: 'c6bf01fd87e31cda09c0c35900cb01ea19d61781', onKeyDown: shouldUseCloseWatcher() ? null : this.onKeydown, role: "navigation", "aria-label": inheritedAttributes['aria-label'] || 'menu', class: {
616
616
  [mode]: true,
617
617
  [`menu-type-${type}`]: true,
618
618
  'menu-enabled': !disabled,
619
619
  [`menu-side-${side}`]: true,
620
620
  'menu-pane-visible': isPaneVisible,
621
- } }, h("div", { key: 'ecd6e0641ed67691db270190801f7be365a2d121', class: "menu-inner", part: "container", ref: (el) => (this.menuInnerEl = el) }, h("slot", { key: 'aea3780e259f2b3ea84697a509bb7f13fa9531e9' })), h("ion-backdrop", { key: 'be3253506a34c4c00eb1814621c674196b72db46', ref: (el) => (this.backdropEl = el), class: "menu-backdrop", tappable: false, stopPropagation: false, part: "backdrop" })));
621
+ } }, h("div", { key: '6d818a470a74c11c10554d45d8586436a51f961e', class: "menu-inner", part: "container", ref: (el) => (this.menuInnerEl = el) }, h("slot", { key: '3512e444ec6c6bf2a719b1dd713be9a7652f77c9' })), h("ion-backdrop", { key: '618a5316462406fa47929e4dcd5a8e8c9057a418', ref: (el) => (this.backdropEl = el), class: "menu-backdrop", tappable: false, stopPropagation: false, part: "backdrop" })));
622
622
  }
623
623
  get el() { return getElement(this); }
624
624
  static get watchers() { return {
@@ -8,7 +8,7 @@ import { g as getElementRoot, l as clamp, r as raf, k as inheritAttributes, m as
8
8
  import { c as createLockController } from './lock-controller-316928be.js';
9
9
  import { p as printIonWarning } from './index-9b0d46f4.js';
10
10
  import { g as getCapacitor } from './capacitor-59395cbd.js';
11
- import { G as GESTURE, O as OVERLAY_GESTURE_PRIORITY, e as createTriggerController, B as BACKDROP, j as prepareOverlay, k as setOverlayId, f as present, g as dismiss, h as eventMethod } from './overlays-74ac012a.js';
11
+ import { G as GESTURE, O as OVERLAY_GESTURE_PRIORITY, e as createTriggerController, B as BACKDROP, j as prepareOverlay, k as setOverlayId, f as present, g as dismiss, h as eventMethod } from './overlays-d99a4d6a.js';
12
12
  import { g as getClassMap } from './theme-01f3f29c.js';
13
13
  import { e as deepReady, w as waitForMount } from './index-84ee782d.js';
14
14
  import { b as getIonMode, c as config } from './ionic-global-c836c8c6.js';
@@ -17,7 +17,7 @@ import { c as createAnimation } from './animation-6a0c5338.js';
17
17
  import { g as getTimeGivenProgression } from './cubic-bezier-fe2083dc.js';
18
18
  import { createGesture } from './index-2cf77112.js';
19
19
  import { w as win } from './index-a5d50daf.js';
20
- import './hardware-back-button-adcc28d5.js';
20
+ import './hardware-back-button-36f7543b.js';
21
21
  import './keyboard-73175e24.js';
22
22
  import './gesture-controller-1bf57181.js';
23
23
 
@@ -6,13 +6,13 @@ import { C as CoreDelegate, a as attachComponent, d as detachComponent } from '.
6
6
  import { r as raf, g as getElementRoot, a as addEventListener, m as hasLazyBuild } from './helpers-be245865.js';
7
7
  import { c as createLockController } from './lock-controller-316928be.js';
8
8
  import { p as printIonWarning } from './index-9b0d46f4.js';
9
- import { B as BACKDROP, j as prepareOverlay, k as setOverlayId, f as present, n as focusFirstDescendant, g as dismiss, h as eventMethod } from './overlays-74ac012a.js';
9
+ import { B as BACKDROP, j as prepareOverlay, k as setOverlayId, f as present, n as focusFirstDescendant, g as dismiss, h as eventMethod } from './overlays-d99a4d6a.js';
10
10
  import { b as getIonMode, a as isPlatform } from './ionic-global-c836c8c6.js';
11
11
  import { g as getClassMap } from './theme-01f3f29c.js';
12
12
  import { e as deepReady, w as waitForMount } from './index-84ee782d.js';
13
13
  import { c as createAnimation } from './animation-6a0c5338.js';
14
14
  import './index-a5d50daf.js';
15
- import './hardware-back-button-adcc28d5.js';
15
+ import './hardware-back-button-36f7543b.js';
16
16
 
17
17
  /**
18
18
  * Returns the dimensions of the popover
@@ -7,14 +7,14 @@ import { c as createNotchController } from './notch-controller-6bd3e0f9.js';
7
7
  import { i as isOptionSelected, c as compareOptions } from './compare-with-utils-a96ff2ea.js';
8
8
  import { k as inheritAttributes, f as focusVisibleElement, h as findItemLabel, d as renderHiddenInput, e as getAriaLabel } from './helpers-be245865.js';
9
9
  import { p as printIonWarning } from './index-9b0d46f4.js';
10
- import { c as popoverController, b as actionSheetController, a as alertController, s as safeCall } from './overlays-74ac012a.js';
10
+ import { c as popoverController, b as actionSheetController, a as alertController, s as safeCall } from './overlays-d99a4d6a.js';
11
11
  import { i as isRTL } from './dir-babeabeb.js';
12
12
  import { h as hostContext, c as createColorClasses, g as getClassMap } from './theme-01f3f29c.js';
13
13
  import { w as watchForOptions } from './watch-options-c2911ace.js';
14
14
  import { w as chevronExpand, q as caretDownSharp } from './index-f7dc70ba.js';
15
15
  import { b as getIonMode } from './ionic-global-c836c8c6.js';
16
16
  import './index-a5d50daf.js';
17
- import './hardware-back-button-adcc28d5.js';
17
+ import './hardware-back-button-36f7543b.js';
18
18
  import './framework-delegate-ed4ba327.js';
19
19
 
20
20
  const selectIosCss = ":host{--padding-top:0px;--padding-end:0px;--padding-bottom:0px;--padding-start:0px;--placeholder-color:currentColor;--placeholder-opacity:0.6;--background:transparent;--border-style:solid;--highlight-color-focused:var(--ion-color-primary, #3880ff);--highlight-color-valid:var(--ion-color-success, #2dd36f);--highlight-color-invalid:var(--ion-color-danger, #eb445a);--highlight-color:var(--highlight-color-focused);display:block;position:relative;font-family:var(--ion-font-family, inherit);white-space:nowrap;cursor:pointer;z-index:2}:host(:not(.legacy-select)){width:100%;min-height:44px}:host(.select-label-placement-floating),:host(.select-label-placement-stacked){min-height:56px}:host(.ion-color){--highlight-color-focused:var(--ion-color-base)}:host(.legacy-select){-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;overflow:hidden}:host(.in-item:not(.legacy-select)){-ms-flex:1 1 0px;flex:1 1 0}:host(.in-item.legacy-select){position:static;max-width:45%}:host(.select-disabled){pointer-events:none}:host(.ion-focused) button{border:2px solid #5e9ed6}:host([slot=start]:not(.legacy-select)),:host([slot=end]:not(.legacy-select)){width:auto}.select-placeholder{color:var(--placeholder-color);opacity:var(--placeholder-opacity)}:host(.legacy-select) label{top:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;position:absolute;width:100%;height:100%;border:0;background:transparent;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;opacity:0}@supports (inset-inline-start: 0){:host(.legacy-select) label{inset-inline-start:0}}@supports not (inset-inline-start: 0){:host(.legacy-select) label{left:0}:host-context([dir=rtl]):host(.legacy-select) label,:host-context([dir=rtl]).legacy-select label{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){:host(.legacy-select:dir(rtl)) label{left:unset;right:unset;right:0}}}:host(.legacy-select) label::-moz-focus-inner{border:0}button{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}.select-icon{-webkit-margin-start:4px;margin-inline-start:4px;-webkit-margin-end:0;margin-inline-end:0;margin-top:0;margin-bottom:0;position:relative;-ms-flex-negative:0;flex-shrink:0}:host(.in-item-color) .select-icon{color:inherit}:host(.select-label-placement-stacked) .select-icon,:host(.select-label-placement-floating) .select-icon{position:absolute;height:100%}:host(.select-ltr.select-label-placement-stacked) .select-icon,:host(.select-ltr.select-label-placement-floating) .select-icon{right:var(--padding-end, 0)}:host(.select-rtl.select-label-placement-stacked) .select-icon,:host(.select-rtl.select-label-placement-floating) .select-icon{left:var(--padding-start, 0)}.select-text{-ms-flex:1;flex:1;min-width:16px;font-size:inherit;text-overflow:ellipsis;white-space:inherit;overflow:hidden}.select-wrapper{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);border-radius:var(--border-radius);display:-ms-flexbox;display:flex;position:relative;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center;height:inherit;min-height:inherit;-webkit-transition:background-color 15ms linear;transition:background-color 15ms linear;background:var(--background);line-height:normal;cursor:inherit;-webkit-box-sizing:border-box;box-sizing:border-box}.select-wrapper .select-placeholder{-webkit-transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1)}.select-wrapper-inner{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;overflow:hidden}:host(.select-label-placement-stacked) .select-wrapper-inner,:host(.select-label-placement-floating) .select-wrapper-inner{-ms-flex-positive:1;flex-grow:1}:host(.ion-touched.ion-invalid){--highlight-color:var(--highlight-color-invalid)}:host(.ion-valid){--highlight-color:var(--highlight-color-valid)}.label-text-wrapper{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;max-width:200px;-webkit-transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), transform 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), transform 150ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 150ms cubic-bezier(0.4, 0, 0.2, 1);pointer-events:none}.label-text,::slotted([slot=label]){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.label-text-wrapper-hidden,.select-outline-notch-hidden{display:none}.native-wrapper{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1);overflow:hidden}:host(.select-justify-space-between) .select-wrapper{-ms-flex-pack:justify;justify-content:space-between}:host(.select-justify-start) .select-wrapper{-ms-flex-pack:start;justify-content:start}:host(.select-justify-end) .select-wrapper{-ms-flex-pack:end;justify-content:end}:host(.select-label-placement-start) .select-wrapper{-ms-flex-direction:row;flex-direction:row}:host(.select-label-placement-start) .label-text-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px;margin-top:0;margin-bottom:0}:host(.select-label-placement-end) .select-wrapper{-ms-flex-direction:row-reverse;flex-direction:row-reverse}:host(.select-label-placement-end) .label-text-wrapper{-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:0;margin-inline-end:0;margin-top:0;margin-bottom:0}:host(.select-label-placement-fixed) .label-text-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px;margin-top:0;margin-bottom:0}:host(.select-label-placement-fixed) .label-text-wrapper{-ms-flex:0 0 100px;flex:0 0 100px;width:100px;min-width:100px;max-width:200px}:host(.select-label-placement-stacked) .select-wrapper,:host(.select-label-placement-floating) .select-wrapper{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:start}:host(.select-label-placement-stacked) .label-text-wrapper,:host(.select-label-placement-floating) .label-text-wrapper{max-width:100%}:host(.select-ltr.select-label-placement-stacked) .label-text-wrapper,:host(.select-ltr.select-label-placement-floating) .label-text-wrapper{-webkit-transform-origin:left top;transform-origin:left top}:host(.select-rtl.select-label-placement-stacked) .label-text-wrapper,:host(.select-rtl.select-label-placement-floating) .label-text-wrapper{-webkit-transform-origin:right top;transform-origin:right top}:host(.select-label-placement-stacked) .native-wrapper,:host(.select-label-placement-floating) .native-wrapper{margin-left:0;margin-right:0;margin-top:1px;margin-bottom:0;-ms-flex-positive:1;flex-grow:1;width:100%}:host(.select-label-placement-floating) .label-text-wrapper{-webkit-transform:translateY(100%) scale(1);transform:translateY(100%) scale(1)}:host(.select-label-placement-floating:not(.label-floating)) .native-wrapper .select-placeholder{opacity:0}:host(.select-expanded.select-label-placement-floating) .native-wrapper .select-placeholder,:host(.ion-focused.select-label-placement-floating) .native-wrapper .select-placeholder,:host(.has-value.select-label-placement-floating) .native-wrapper .select-placeholder{opacity:1}:host(.label-floating) .label-text-wrapper{-webkit-transform:translateY(50%) scale(0.75);transform:translateY(50%) scale(0.75);max-width:calc(100% / 0.75)}::slotted([slot=start]),::slotted([slot=end]){-ms-flex-negative:0;flex-shrink:0}::slotted([slot=start]){-webkit-margin-end:16px;margin-inline-end:16px;-webkit-margin-start:0;margin-inline-start:0}::slotted([slot=end]){-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:0;margin-inline-end:0}:host(.legacy-select){--padding-top:10px;--padding-end:8px;--padding-bottom:10px;--padding-start:16px}.select-icon{width:1.125rem;height:1.125rem;color:var(--ion-color-step-650, #595959)}:host(.select-label-placement-stacked) .select-wrapper-inner,:host(.select-label-placement-floating) .select-wrapper-inner{width:calc(100% - 1.125rem - 4px)}:host(.select-disabled){opacity:0.3}::slotted(ion-button[slot=start].button-has-icon-only),::slotted(ion-button[slot=end].button-has-icon-only){--border-radius:50%;--padding-start:0;--padding-end:0;--padding-top:0;--padding-bottom:0;aspect-ratio:1}";
@@ -6,13 +6,13 @@ import { E as ENABLE_HTML_CONTENT_DEFAULT, a as sanitizeDOMString } from './conf
6
6
  import { g as getElementRoot, r as raf } from './helpers-be245865.js';
7
7
  import { c as createLockController } from './lock-controller-316928be.js';
8
8
  import { p as printIonWarning } from './index-9b0d46f4.js';
9
- import { O as OVERLAY_GESTURE_PRIORITY, d as createDelegateController, e as createTriggerController, i as isCancel, j as prepareOverlay, k as setOverlayId, f as present, g as dismiss, h as eventMethod, s as safeCall, G as GESTURE } from './overlays-74ac012a.js';
9
+ import { O as OVERLAY_GESTURE_PRIORITY, d as createDelegateController, e as createTriggerController, i as isCancel, j as prepareOverlay, k as setOverlayId, f as present, g as dismiss, h as eventMethod, s as safeCall, G as GESTURE } from './overlays-d99a4d6a.js';
10
10
  import { g as getClassMap, c as createColorClasses } from './theme-01f3f29c.js';
11
11
  import { c as config, b as getIonMode } from './ionic-global-c836c8c6.js';
12
12
  import { c as createAnimation } from './animation-6a0c5338.js';
13
13
  import { w as win } from './index-a5d50daf.js';
14
14
  import { createGesture } from './index-2cf77112.js';
15
- import './hardware-back-button-adcc28d5.js';
15
+ import './hardware-back-button-36f7543b.js';
16
16
  import './framework-delegate-ed4ba327.js';
17
17
  import './gesture-controller-1bf57181.js';
18
18