@ionic/core 7.3.2-dev.11693262117.17edbf6d → 7.3.2-dev.11693321763.15a54694

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 (125) hide show
  1. package/components/action-sheet.js +17 -8
  2. package/components/alert.js +17 -8
  3. package/components/framework-delegate.js +21 -2
  4. package/components/ion-loading.js +17 -8
  5. package/components/ion-menu.js +1 -1
  6. package/components/ion-modal.js +34 -13
  7. package/components/ion-picker.js +17 -8
  8. package/components/ion-toast.js +17 -8
  9. package/components/overlays.js +1 -22
  10. package/components/popover.js +30 -9
  11. package/dist/cjs/{framework-delegate-e8174951.js → framework-delegate-c0873a6f.js} +21 -2
  12. package/dist/cjs/index.cjs.js +2 -2
  13. package/dist/cjs/ion-action-sheet.cjs.entry.js +18 -9
  14. package/dist/cjs/ion-alert.cjs.entry.js +18 -9
  15. package/dist/cjs/ion-app_8.cjs.entry.js +1 -1
  16. package/dist/cjs/ion-datetime_3.cjs.entry.js +18 -9
  17. package/dist/cjs/ion-loading.cjs.entry.js +18 -9
  18. package/dist/cjs/ion-menu_3.cjs.entry.js +2 -2
  19. package/dist/cjs/ion-modal.cjs.entry.js +35 -14
  20. package/dist/cjs/ion-nav_2.cjs.entry.js +1 -1
  21. package/dist/cjs/ion-popover.cjs.entry.js +31 -10
  22. package/dist/cjs/ion-select_3.cjs.entry.js +2 -2
  23. package/dist/cjs/ion-tab_2.cjs.entry.js +1 -1
  24. package/dist/cjs/ion-toast.cjs.entry.js +18 -9
  25. package/dist/cjs/{overlays-2b9fa92e.js → overlays-5c1706ed.js} +1 -23
  26. package/dist/collection/components/action-sheet/action-sheet.js +17 -8
  27. package/dist/collection/components/alert/alert.js +17 -8
  28. package/dist/collection/components/loading/loading.js +17 -8
  29. package/dist/collection/components/modal/modal.js +34 -13
  30. package/dist/collection/components/picker/picker.js +17 -8
  31. package/dist/collection/components/popover/popover.js +30 -9
  32. package/dist/collection/components/popover/test/async/popover.e2e.js +20 -0
  33. package/dist/collection/components/toast/toast.js +17 -8
  34. package/dist/collection/utils/framework-delegate.js +21 -2
  35. package/dist/collection/utils/overlays.js +0 -21
  36. package/dist/docs.json +1 -1
  37. package/dist/esm/{framework-delegate-2b76c681.js → framework-delegate-aa433dea.js} +21 -2
  38. package/dist/esm/index.js +2 -2
  39. package/dist/esm/ion-action-sheet.entry.js +18 -9
  40. package/dist/esm/ion-alert.entry.js +18 -9
  41. package/dist/esm/ion-app_8.entry.js +1 -1
  42. package/dist/esm/ion-datetime_3.entry.js +18 -9
  43. package/dist/esm/ion-loading.entry.js +18 -9
  44. package/dist/esm/ion-menu_3.entry.js +2 -2
  45. package/dist/esm/ion-modal.entry.js +35 -14
  46. package/dist/esm/ion-nav_2.entry.js +1 -1
  47. package/dist/esm/ion-popover.entry.js +31 -10
  48. package/dist/esm/ion-select_3.entry.js +2 -2
  49. package/dist/esm/ion-tab_2.entry.js +1 -1
  50. package/dist/esm/ion-toast.entry.js +18 -9
  51. package/dist/esm/{overlays-66222f79.js → overlays-e1dadfe6.js} +2 -23
  52. package/dist/esm-es5/framework-delegate-aa433dea.js +4 -0
  53. package/dist/esm-es5/index.js +1 -1
  54. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  55. package/dist/esm-es5/ion-alert.entry.js +1 -1
  56. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  57. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  58. package/dist/esm-es5/ion-loading.entry.js +1 -1
  59. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  60. package/dist/esm-es5/ion-modal.entry.js +1 -1
  61. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  62. package/dist/esm-es5/ion-popover.entry.js +1 -1
  63. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  64. package/dist/esm-es5/ion-tab_2.entry.js +1 -1
  65. package/dist/esm-es5/ion-toast.entry.js +1 -1
  66. package/dist/esm-es5/{overlays-66222f79.js → overlays-e1dadfe6.js} +1 -1
  67. package/dist/ionic/index.esm.js +1 -1
  68. package/dist/ionic/ionic.esm.js +1 -1
  69. package/dist/ionic/{p-9888a5a7.entry.js → p-091cd81e.entry.js} +1 -1
  70. package/dist/ionic/{p-d1356034.system.entry.js → p-0b68c41d.system.entry.js} +1 -1
  71. package/dist/ionic/{p-b2098e96.system.entry.js → p-28f5715a.system.entry.js} +1 -1
  72. package/dist/ionic/p-2bff71d5.system.entry.js +4 -0
  73. package/dist/ionic/p-3565c8a0.entry.js +4 -0
  74. package/dist/ionic/{p-8074bdd7.system.entry.js → p-45ee211b.system.entry.js} +1 -1
  75. package/dist/ionic/p-51669f1e.system.entry.js +4 -0
  76. package/dist/ionic/p-582dc7c1.js +4 -0
  77. package/dist/ionic/{p-7776d062.entry.js → p-5c17f888.entry.js} +1 -1
  78. package/dist/ionic/{p-8d9475b5.system.js → p-613d4042.system.js} +1 -1
  79. package/dist/ionic/p-721933ff.system.js +1 -1
  80. package/dist/ionic/p-79e3f0b6.entry.js +4 -0
  81. package/dist/ionic/p-7c9dd24d.entry.js +4 -0
  82. package/dist/ionic/p-84a95033.system.entry.js +4 -0
  83. package/dist/ionic/{p-a0ffdd91.system.js → p-8843b046.system.js} +1 -1
  84. package/dist/ionic/{p-229df0d8.entry.js → p-98ebc376.entry.js} +1 -1
  85. package/dist/ionic/p-b287ab05.js +4 -0
  86. package/dist/ionic/{p-f8e4da48.system.js → p-b32742f3.system.js} +1 -1
  87. package/dist/ionic/p-b3a58769.entry.js +4 -0
  88. package/dist/ionic/p-b54a1fcb.system.entry.js +4 -0
  89. package/dist/ionic/{p-20087c90.entry.js → p-c759a704.entry.js} +1 -1
  90. package/dist/ionic/{p-6b9bf14c.system.entry.js → p-d1d3b740.system.entry.js} +1 -1
  91. package/dist/ionic/{p-0494a5b7.system.entry.js → p-d693e765.system.entry.js} +1 -1
  92. package/dist/ionic/p-d9eb4632.system.entry.js +4 -0
  93. package/dist/ionic/p-dab7745f.system.entry.js +4 -0
  94. package/dist/ionic/p-e44233f5.entry.js +4 -0
  95. package/dist/ionic/p-f2c667c9.system.entry.js +4 -0
  96. package/dist/ionic/p-f789b7fa.entry.js +4 -0
  97. package/dist/ionic/{p-5c96dc4e.entry.js → p-f7faa32d.entry.js} +1 -1
  98. package/dist/ionic/p-f9708a54.entry.js +4 -0
  99. package/dist/types/components/action-sheet/action-sheet.d.ts +1 -1
  100. package/dist/types/components/alert/alert.d.ts +1 -1
  101. package/dist/types/components/loading/loading.d.ts +1 -1
  102. package/dist/types/components/modal/modal.d.ts +1 -1
  103. package/dist/types/components/picker/picker.d.ts +1 -1
  104. package/dist/types/components/popover/popover.d.ts +1 -1
  105. package/dist/types/components/toast/toast.d.ts +1 -1
  106. package/dist/types/utils/overlays.d.ts +0 -9
  107. package/hydrate/index.js +163 -78
  108. package/package.json +1 -1
  109. package/dist/esm-es5/framework-delegate-2b76c681.js +0 -4
  110. package/dist/ionic/p-16fd72f2.entry.js +0 -4
  111. package/dist/ionic/p-1c9e3bc7.entry.js +0 -4
  112. package/dist/ionic/p-2a51c81c.entry.js +0 -4
  113. package/dist/ionic/p-2a649b3e.system.entry.js +0 -4
  114. package/dist/ionic/p-3ef9e271.system.entry.js +0 -4
  115. package/dist/ionic/p-6d484719.system.entry.js +0 -4
  116. package/dist/ionic/p-70d137a0.js +0 -4
  117. package/dist/ionic/p-7ac9bdfa.system.entry.js +0 -4
  118. package/dist/ionic/p-8d53d5a5.entry.js +0 -4
  119. package/dist/ionic/p-a133c215.system.entry.js +0 -4
  120. package/dist/ionic/p-b34c1ae1.js +0 -4
  121. package/dist/ionic/p-c0b4ca5c.system.entry.js +0 -4
  122. package/dist/ionic/p-cf768a4f.entry.js +0 -4
  123. package/dist/ionic/p-ddffbfa9.entry.js +0 -4
  124. package/dist/ionic/p-e2e2c2b0.entry.js +0 -4
  125. package/dist/ionic/p-ebb442c4.system.entry.js +0 -4
@@ -41,6 +41,7 @@ const CoreDelegate = () => {
41
41
  const attachViewToDom = async (parentElement, userComponent, userComponentProps = {}, cssClasses = []) => {
42
42
  var _a, _b;
43
43
  BaseComponent = parentElement;
44
+ let ChildComponent;
44
45
  /**
45
46
  * If passing in a component via the `component` props
46
47
  * we need to append it inside of our overlay component.
@@ -67,6 +68,7 @@ const CoreDelegate = () => {
67
68
  * inside of the overlay component.
68
69
  */
69
70
  BaseComponent.appendChild(el);
71
+ ChildComponent = el;
70
72
  await new Promise((resolve) => helpers.componentOnReady(el, resolve));
71
73
  }
72
74
  else if (BaseComponent.children.length > 0 &&
@@ -75,7 +77,7 @@ const CoreDelegate = () => {
75
77
  * The delegate host wrapper el is only needed for modals and popovers
76
78
  * because they allow the dev to provide custom content to the overlay.
77
79
  */
78
- const root = BaseComponent.children[0];
80
+ const root = (ChildComponent = BaseComponent.children[0]);
79
81
  if (!root.classList.contains('ion-delegate-host')) {
80
82
  /**
81
83
  * If the root element is not a delegate host, it means
@@ -90,6 +92,12 @@ const CoreDelegate = () => {
90
92
  el.append(...BaseComponent.children);
91
93
  // Append the new parent element to the original parent element.
92
94
  BaseComponent.appendChild(el);
95
+ /**
96
+ * Update the ChildComponent to be the
97
+ * newly created div in the event that one
98
+ * does not already exist.
99
+ */
100
+ ChildComponent = el;
93
101
  }
94
102
  }
95
103
  /**
@@ -105,7 +113,18 @@ const CoreDelegate = () => {
105
113
  Reference = document.createComment('ionic teleport');
106
114
  BaseComponent.parentNode.insertBefore(Reference, BaseComponent);
107
115
  app.appendChild(BaseComponent);
108
- return BaseComponent;
116
+ /**
117
+ * We return the child component rather than the overlay
118
+ * reference itself since modal and popover will
119
+ * use this to wait for any Ionic components in the child view
120
+ * to be ready (i.e. componentOnReady) when using the
121
+ * lazy loaded component bundle.
122
+ *
123
+ * However, we fall back to returning BaseComponent
124
+ * in the event that a modal or popover is presented
125
+ * with no child content.
126
+ */
127
+ return ChildComponent !== null && ChildComponent !== void 0 ? ChildComponent : BaseComponent;
109
128
  };
110
129
  const removeViewFromDom = () => {
111
130
  /**
@@ -15,12 +15,12 @@ const helpers = require('./helpers-ea4ccbcb.js');
15
15
  const config = require('./config-d5882735.js');
16
16
  const index$1 = require('./index-8568bedb.js');
17
17
  const index$2 = require('./index-653be4df.js');
18
- const overlays = require('./overlays-2b9fa92e.js');
18
+ const overlays = require('./overlays-5c1706ed.js');
19
19
  require('./index-306a7476.js');
20
20
  require('./gesture-controller-b46721be.js');
21
21
  require('./index-484b1104.js');
22
22
  require('./hardware-back-button-b67c8e75.js');
23
- require('./framework-delegate-e8174951.js');
23
+ require('./framework-delegate-c0873a6f.js');
24
24
  require('./index-cc7dfb7c.js');
25
25
 
26
26
  const IonicSlides = (opts) => {
@@ -8,7 +8,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
8
8
  const index = require('./index-484b1104.js');
9
9
  const buttonActive = require('./button-active-dfd2756e.js');
10
10
  const helpers = require('./helpers-ea4ccbcb.js');
11
- const overlays = require('./overlays-2b9fa92e.js');
11
+ const overlays = require('./overlays-5c1706ed.js');
12
12
  const theme = require('./theme-fbc56b3b.js');
13
13
  const ionicGlobal = require('./ionic-global-f81d8b73.js');
14
14
  const animation = require('./animation-2bb33618.js');
@@ -17,7 +17,7 @@ require('./capacitor-2ffba62a.js');
17
17
  require('./index-306a7476.js');
18
18
  require('./index-0ee995e4.js');
19
19
  require('./gesture-controller-b46721be.js');
20
- require('./framework-delegate-e8174951.js');
20
+ require('./framework-delegate-c0873a6f.js');
21
21
  require('./hardware-back-button-b67c8e75.js');
22
22
  require('./index-cc7dfb7c.js');
23
23
 
@@ -121,7 +121,6 @@ const ActionSheet = class {
121
121
  this.willDismissShorthand = index.createEvent(this, "willDismiss", 7);
122
122
  this.didDismissShorthand = index.createEvent(this, "didDismiss", 7);
123
123
  this.delegateController = overlays.createDelegateController(this);
124
- this.lockController = overlays.createLockController();
125
124
  this.triggerController = overlays.createTriggerController();
126
125
  this.presented = false;
127
126
  this.onBackdropTap = () => {
@@ -169,10 +168,21 @@ const ActionSheet = class {
169
168
  * Present the action sheet overlay after it has been created.
170
169
  */
171
170
  async present() {
172
- const unlock = await this.lockController.lock();
171
+ /**
172
+ * When using an inline action sheet
173
+ * and dismissing a action sheet it is possible to
174
+ * quickly present the action sheet while it is
175
+ * dismissing. We need to await any current
176
+ * transition to allow the dismiss to finish
177
+ * before presenting again.
178
+ */
179
+ if (this.currentTransition !== undefined) {
180
+ await this.currentTransition;
181
+ }
173
182
  await this.delegateController.attachViewToDom();
174
- await overlays.present(this, 'actionSheetEnter', iosEnterAnimation, mdEnterAnimation);
175
- unlock();
183
+ this.currentTransition = overlays.present(this, 'actionSheetEnter', iosEnterAnimation, mdEnterAnimation);
184
+ await this.currentTransition;
185
+ this.currentTransition = undefined;
176
186
  }
177
187
  /**
178
188
  * Dismiss the action sheet overlay after it has been presented.
@@ -184,12 +194,11 @@ const ActionSheet = class {
184
194
  * Some examples include: ``"cancel"`, `"destructive"`, "selected"`, and `"backdrop"`.
185
195
  */
186
196
  async dismiss(data, role) {
187
- const unlock = await this.lockController.lock();
188
- const dismissed = await overlays.dismiss(this, data, role, 'actionSheetLeave', iosLeaveAnimation, mdLeaveAnimation);
197
+ this.currentTransition = overlays.dismiss(this, data, role, 'actionSheetLeave', iosLeaveAnimation, mdLeaveAnimation);
198
+ const dismissed = await this.currentTransition;
189
199
  if (dismissed) {
190
200
  this.delegateController.removeViewFromDom();
191
201
  }
192
- unlock();
193
202
  return dismissed;
194
203
  }
195
204
  /**
@@ -9,7 +9,7 @@ const index = require('./index-484b1104.js');
9
9
  const config = require('./config-d5882735.js');
10
10
  const buttonActive = require('./button-active-dfd2756e.js');
11
11
  const helpers = require('./helpers-ea4ccbcb.js');
12
- const overlays = require('./overlays-2b9fa92e.js');
12
+ const overlays = require('./overlays-5c1706ed.js');
13
13
  const theme = require('./theme-fbc56b3b.js');
14
14
  const ionicGlobal = require('./ionic-global-f81d8b73.js');
15
15
  const animation = require('./animation-2bb33618.js');
@@ -18,7 +18,7 @@ require('./capacitor-2ffba62a.js');
18
18
  require('./index-306a7476.js');
19
19
  require('./index-0ee995e4.js');
20
20
  require('./gesture-controller-b46721be.js');
21
- require('./framework-delegate-e8174951.js');
21
+ require('./framework-delegate-c0873a6f.js');
22
22
  require('./hardware-back-button-b67c8e75.js');
23
23
  require('./index-cc7dfb7c.js');
24
24
 
@@ -123,7 +123,6 @@ const Alert = class {
123
123
  this.willDismissShorthand = index.createEvent(this, "willDismiss", 7);
124
124
  this.didDismissShorthand = index.createEvent(this, "didDismiss", 7);
125
125
  this.delegateController = overlays.createDelegateController(this);
126
- this.lockController = overlays.createLockController();
127
126
  this.triggerController = overlays.createTriggerController();
128
127
  this.customHTMLEnabled = ionicGlobal.config.get('innerHTMLTemplatesEnabled', config.ENABLE_HTML_CONTENT_DEFAULT);
129
128
  this.processedInputs = [];
@@ -290,10 +289,21 @@ const Alert = class {
290
289
  * Present the alert overlay after it has been created.
291
290
  */
292
291
  async present() {
293
- const unlock = await this.lockController.lock();
292
+ /**
293
+ * When using an inline alert
294
+ * and dismissing an alert it is possible to
295
+ * quickly present the alert while it is
296
+ * dismissing. We need to await any current
297
+ * transition to allow the dismiss to finish
298
+ * before presenting again.
299
+ */
300
+ if (this.currentTransition !== undefined) {
301
+ await this.currentTransition;
302
+ }
294
303
  await this.delegateController.attachViewToDom();
295
- await overlays.present(this, 'alertEnter', iosEnterAnimation, mdEnterAnimation);
296
- unlock();
304
+ this.currentTransition = overlays.present(this, 'alertEnter', iosEnterAnimation, mdEnterAnimation);
305
+ await this.currentTransition;
306
+ this.currentTransition = undefined;
297
307
  }
298
308
  /**
299
309
  * Dismiss the alert overlay after it has been presented.
@@ -305,12 +315,11 @@ const Alert = class {
305
315
  * Some examples include: ``"cancel"`, `"destructive"`, "selected"`, and `"backdrop"`.
306
316
  */
307
317
  async dismiss(data, role) {
308
- const unlock = await this.lockController.lock();
309
- const dismissed = await overlays.dismiss(this, data, role, 'alertLeave', iosLeaveAnimation, mdLeaveAnimation);
318
+ this.currentTransition = overlays.dismiss(this, data, role, 'alertLeave', iosLeaveAnimation, mdLeaveAnimation);
319
+ const dismissed = await this.currentTransition;
310
320
  if (dismissed) {
311
321
  this.delegateController.removeViewFromDom();
312
322
  }
313
- unlock();
314
323
  return dismissed;
315
324
  }
316
325
  /**
@@ -13,7 +13,7 @@ const theme = require('./theme-fbc56b3b.js');
13
13
  const index$1 = require('./index-10873539.js');
14
14
  const keyboardController = require('./keyboard-controller-50beb83a.js');
15
15
  const cubicBezier = require('./cubic-bezier-6b9222ad.js');
16
- const frameworkDelegate = require('./framework-delegate-e8174951.js');
16
+ const frameworkDelegate = require('./framework-delegate-c0873a6f.js');
17
17
  const index$2 = require('./index-8568bedb.js');
18
18
  require('./index-cc7dfb7c.js');
19
19
  require('./index-306a7476.js');
@@ -14,10 +14,10 @@ const theme = require('./theme-fbc56b3b.js');
14
14
  const index$2 = require('./index-d8d1fc0b.js');
15
15
  const ionicGlobal = require('./ionic-global-f81d8b73.js');
16
16
  const data = require('./data-967b9c15.js');
17
- const overlays = require('./overlays-2b9fa92e.js');
17
+ const overlays = require('./overlays-5c1706ed.js');
18
18
  const animation = require('./animation-2bb33618.js');
19
19
  const haptic = require('./haptic-c5f6b4d5.js');
20
- require('./framework-delegate-e8174951.js');
20
+ require('./framework-delegate-c0873a6f.js');
21
21
  require('./hardware-back-button-b67c8e75.js');
22
22
  require('./index-306a7476.js');
23
23
  require('./capacitor-2ffba62a.js');
@@ -1730,7 +1730,6 @@ const Picker = class {
1730
1730
  this.willDismissShorthand = index$1.createEvent(this, "willDismiss", 7);
1731
1731
  this.didDismissShorthand = index$1.createEvent(this, "didDismiss", 7);
1732
1732
  this.delegateController = overlays.createDelegateController(this);
1733
- this.lockController = overlays.createLockController();
1734
1733
  this.triggerController = overlays.createTriggerController();
1735
1734
  this.onBackdropTap = () => {
1736
1735
  this.dismiss(undefined, overlays.BACKDROP);
@@ -1797,13 +1796,24 @@ const Picker = class {
1797
1796
  * Present the picker overlay after it has been created.
1798
1797
  */
1799
1798
  async present() {
1800
- const unlock = await this.lockController.lock();
1799
+ /**
1800
+ * When using an inline picker
1801
+ * and dismissing an picker it is possible to
1802
+ * quickly present the picker while it is
1803
+ * dismissing. We need to await any current
1804
+ * transition to allow the dismiss to finish
1805
+ * before presenting again.
1806
+ */
1807
+ if (this.currentTransition !== undefined) {
1808
+ await this.currentTransition;
1809
+ }
1801
1810
  await this.delegateController.attachViewToDom();
1802
- await overlays.present(this, 'pickerEnter', iosEnterAnimation, iosEnterAnimation, undefined);
1811
+ this.currentTransition = overlays.present(this, 'pickerEnter', iosEnterAnimation, iosEnterAnimation, undefined);
1812
+ await this.currentTransition;
1813
+ this.currentTransition = undefined;
1803
1814
  if (this.duration > 0) {
1804
1815
  this.durationTimeout = setTimeout(() => this.dismiss(), this.duration);
1805
1816
  }
1806
- unlock();
1807
1817
  }
1808
1818
  /**
1809
1819
  * Dismiss the picker overlay after it has been presented.
@@ -1815,15 +1825,14 @@ const Picker = class {
1815
1825
  * Some examples include: ``"cancel"`, `"destructive"`, "selected"`, and `"backdrop"`.
1816
1826
  */
1817
1827
  async dismiss(data, role) {
1818
- const unlock = await this.lockController.lock();
1819
1828
  if (this.durationTimeout) {
1820
1829
  clearTimeout(this.durationTimeout);
1821
1830
  }
1822
- const dismissed = await overlays.dismiss(this, data, role, 'pickerLeave', iosLeaveAnimation, iosLeaveAnimation);
1831
+ this.currentTransition = overlays.dismiss(this, data, role, 'pickerLeave', iosLeaveAnimation, iosLeaveAnimation);
1832
+ const dismissed = await this.currentTransition;
1823
1833
  if (dismissed) {
1824
1834
  this.delegateController.removeViewFromDom();
1825
1835
  }
1826
- unlock();
1827
1836
  return dismissed;
1828
1837
  }
1829
1838
  /**
@@ -8,11 +8,11 @@ Object.defineProperty(exports, '__esModule', { value: true });
8
8
  const index = require('./index-484b1104.js');
9
9
  const config = require('./config-d5882735.js');
10
10
  const helpers = require('./helpers-ea4ccbcb.js');
11
- const overlays = require('./overlays-2b9fa92e.js');
11
+ const overlays = require('./overlays-5c1706ed.js');
12
12
  const theme = require('./theme-fbc56b3b.js');
13
13
  const ionicGlobal = require('./ionic-global-f81d8b73.js');
14
14
  const animation = require('./animation-2bb33618.js');
15
- require('./framework-delegate-e8174951.js');
15
+ require('./framework-delegate-c0873a6f.js');
16
16
  require('./hardware-back-button-b67c8e75.js');
17
17
  require('./index-cc7dfb7c.js');
18
18
  require('./index-306a7476.js');
@@ -121,7 +121,6 @@ const Loading = class {
121
121
  this.willDismissShorthand = index.createEvent(this, "willDismiss", 7);
122
122
  this.didDismissShorthand = index.createEvent(this, "didDismiss", 7);
123
123
  this.delegateController = overlays.createDelegateController(this);
124
- this.lockController = overlays.createLockController();
125
124
  this.triggerController = overlays.createTriggerController();
126
125
  this.customHTMLEnabled = ionicGlobal.config.get('innerHTMLTemplatesEnabled', config.ENABLE_HTML_CONTENT_DEFAULT);
127
126
  this.presented = false;
@@ -187,13 +186,24 @@ const Loading = class {
187
186
  * Present the loading overlay after it has been created.
188
187
  */
189
188
  async present() {
190
- const unlock = await this.lockController.lock();
189
+ /**
190
+ * When using an inline loading indicator
191
+ * and dismissing a loading indicator it is possible to
192
+ * quickly present the loading indicator while it is
193
+ * dismissing. We need to await any current
194
+ * transition to allow the dismiss to finish
195
+ * before presenting again.
196
+ */
197
+ if (this.currentTransition !== undefined) {
198
+ await this.currentTransition;
199
+ }
191
200
  await this.delegateController.attachViewToDom();
192
- await overlays.present(this, 'loadingEnter', iosEnterAnimation, mdEnterAnimation);
201
+ this.currentTransition = overlays.present(this, 'loadingEnter', iosEnterAnimation, mdEnterAnimation);
202
+ await this.currentTransition;
193
203
  if (this.duration > 0) {
194
204
  this.durationTimeout = setTimeout(() => this.dismiss(), this.duration + 10);
195
205
  }
196
- unlock();
206
+ this.currentTransition = undefined;
197
207
  }
198
208
  /**
199
209
  * Dismiss the loading overlay after it has been presented.
@@ -205,15 +215,14 @@ const Loading = class {
205
215
  * Some examples include: ``"cancel"`, `"destructive"`, "selected"`, and `"backdrop"`.
206
216
  */
207
217
  async dismiss(data, role) {
208
- const unlock = await this.lockController.lock();
209
218
  if (this.durationTimeout) {
210
219
  clearTimeout(this.durationTimeout);
211
220
  }
212
- const dismissed = await overlays.dismiss(this, data, role, 'loadingLeave', iosLeaveAnimation, mdLeaveAnimation);
221
+ this.currentTransition = overlays.dismiss(this, data, role, 'loadingLeave', iosLeaveAnimation, mdLeaveAnimation);
222
+ const dismissed = await this.currentTransition;
213
223
  if (dismissed) {
214
224
  this.delegateController.removeViewFromDom();
215
225
  }
216
- unlock();
217
226
  return dismissed;
218
227
  }
219
228
  /**
@@ -11,13 +11,13 @@ const index$2 = require('./index-306a7476.js');
11
11
  const gestureController = require('./gesture-controller-b46721be.js');
12
12
  const helpers = require('./helpers-ea4ccbcb.js');
13
13
  const index$1 = require('./index-653be4df.js');
14
- const overlays = require('./overlays-2b9fa92e.js');
14
+ const overlays = require('./overlays-5c1706ed.js');
15
15
  const ionicGlobal = require('./ionic-global-f81d8b73.js');
16
16
  const theme = require('./theme-fbc56b3b.js');
17
17
  const index$3 = require('./index-d8d1fc0b.js');
18
18
  require('./hardware-back-button-b67c8e75.js');
19
19
  require('./animation-2bb33618.js');
20
- require('./framework-delegate-e8174951.js');
20
+ require('./framework-delegate-c0873a6f.js');
21
21
  require('./index-cc7dfb7c.js');
22
22
 
23
23
  const menuIosCss = ":host{--width:304px;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--background:var(--ion-background-color, #fff);left:0;right:0;top:0;bottom:0;display:none;position:absolute;contain:strict}:host(.show-menu){display:block}.menu-inner{-webkit-transform:translateX(-9999px);transform:translateX(-9999px);display:-ms-flexbox;display:flex;position:absolute;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:justify;justify-content:space-between;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);background:var(--background);contain:strict}:host(.menu-side-start) .menu-inner{--ion-safe-area-right:0px;top:0;bottom:0}@supports (inset-inline-start: 0){:host(.menu-side-start) .menu-inner{inset-inline-start:0;inset-inline-end:auto}}@supports not (inset-inline-start: 0){:host(.menu-side-start) .menu-inner{left:0;right:auto}:host-context([dir=rtl]):host(.menu-side-start) .menu-inner,:host-context([dir=rtl]).menu-side-start .menu-inner{left:unset;right:unset;left:auto;right:0}@supports selector(:dir(rtl)){:host(.menu-side-start) .menu-inner:dir(rtl){left:unset;right:unset;left:auto;right:0}}}:host(.menu-side-end) .menu-inner{--ion-safe-area-left:0px;top:0;bottom:0}@supports (inset-inline-start: 0){:host(.menu-side-end) .menu-inner{inset-inline-start:auto;inset-inline-end:0}}@supports not (inset-inline-start: 0){:host(.menu-side-end) .menu-inner{left:auto;right:0}:host-context([dir=rtl]):host(.menu-side-end) .menu-inner,:host-context([dir=rtl]).menu-side-end .menu-inner{left:unset;right:unset;left:0;right:auto}@supports selector(:dir(rtl)){:host(.menu-side-end) .menu-inner:dir(rtl){left:unset;right:unset;left:0;right:auto}}}ion-backdrop{display:none;opacity:0.01;z-index:-1}@media (max-width: 340px){.menu-inner{--width:264px}}:host(.menu-type-reveal){z-index:0}:host(.menu-type-reveal.show-menu) .menu-inner{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}:host(.menu-type-overlay){z-index:1000}:host(.menu-type-overlay) .show-backdrop{display:block;cursor:pointer}:host(.menu-pane-visible){width:var(--width);min-width:var(--min-width);max-width:var(--max-width)}:host(.menu-pane-visible) .menu-inner{left:0;right:0;width:auto;-webkit-transform:none !important;transform:none !important;-webkit-box-shadow:none !important;box-shadow:none !important}:host(.menu-pane-visible) ion-backdrop{display:hidden !important;}:host(.menu-type-push){z-index:1000}:host(.menu-type-push) .show-backdrop{display:block}";
@@ -7,11 +7,11 @@ Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
8
  const index$3 = require('./index-484b1104.js');
9
9
  const index$2 = require('./index-10873539.js');
10
- const frameworkDelegate = require('./framework-delegate-e8174951.js');
10
+ const frameworkDelegate = require('./framework-delegate-c0873a6f.js');
11
11
  const helpers = require('./helpers-ea4ccbcb.js');
12
12
  const index$4 = require('./index-cc7dfb7c.js');
13
13
  const capacitor = require('./capacitor-2ffba62a.js');
14
- const overlays = require('./overlays-2b9fa92e.js');
14
+ const overlays = require('./overlays-5c1706ed.js');
15
15
  const theme = require('./theme-fbc56b3b.js');
16
16
  const index$5 = require('./index-8568bedb.js');
17
17
  const ionicGlobal = require('./ionic-global-f81d8b73.js');
@@ -1117,7 +1117,6 @@ const Modal = class {
1117
1117
  this.willDismissShorthand = index$3.createEvent(this, "willDismiss", 7);
1118
1118
  this.didDismissShorthand = index$3.createEvent(this, "didDismiss", 7);
1119
1119
  this.ionMount = index$3.createEvent(this, "ionMount", 7);
1120
- this.lockController = overlays.createLockController();
1121
1120
  this.triggerController = overlays.createTriggerController();
1122
1121
  this.coreDelegate = frameworkDelegate.CoreDelegate();
1123
1122
  this.isSheetModal = false;
@@ -1285,16 +1284,26 @@ const Modal = class {
1285
1284
  if (this.presented) {
1286
1285
  return;
1287
1286
  }
1288
- const unlock = await this.lockController.lock();
1289
1287
  const { presentingElement, el } = this;
1288
+ /**
1289
+ * When using an inline modal
1290
+ * and dismissing a modal it is possible to
1291
+ * quickly present the modal while it is
1292
+ * dismissing. We need to await any current
1293
+ * transition to allow the dismiss to finish
1294
+ * before presenting again.
1295
+ */
1296
+ if (this.currentTransition !== undefined) {
1297
+ await this.currentTransition;
1298
+ }
1290
1299
  /**
1291
1300
  * If the modal is presented multiple times (inline modals), we
1292
1301
  * need to reset the current breakpoint to the initial breakpoint.
1293
1302
  */
1294
1303
  this.currentBreakpoint = this.initialBreakpoint;
1295
1304
  const { inline, delegate } = this.getDelegate(true);
1296
- this.usersElement = await frameworkDelegate.attachComponent(delegate, el, this.component, ['ion-page'], this.componentProps, inline);
1297
1305
  this.ionMount.emit();
1306
+ this.usersElement = await frameworkDelegate.attachComponent(delegate, el, this.component, ['ion-page'], this.componentProps, inline);
1298
1307
  /**
1299
1308
  * When using the lazy loaded build of Stencil, we need to wait
1300
1309
  * for every Stencil component instance to be ready before presenting
@@ -1318,6 +1327,11 @@ const Modal = class {
1318
1327
  await index$5.waitForMount();
1319
1328
  }
1320
1329
  index$3.writeTask(() => this.el.classList.add('show-modal'));
1330
+ this.currentTransition = overlays.present(this, 'modalEnter', iosEnterAnimation, mdEnterAnimation, {
1331
+ presentingEl: presentingElement,
1332
+ currentBreakpoint: this.initialBreakpoint,
1333
+ backdropBreakpoint: this.backdropBreakpoint,
1334
+ });
1321
1335
  /* tslint:disable-next-line */
1322
1336
  if (typeof window !== 'undefined') {
1323
1337
  /**
@@ -1360,18 +1374,14 @@ const Modal = class {
1360
1374
  this.statusBarStyle = await StatusBar.getStyle();
1361
1375
  setCardStatusBarDark();
1362
1376
  }
1363
- await overlays.present(this, 'modalEnter', iosEnterAnimation, mdEnterAnimation, {
1364
- presentingEl: presentingElement,
1365
- currentBreakpoint: this.initialBreakpoint,
1366
- backdropBreakpoint: this.backdropBreakpoint,
1367
- });
1377
+ await this.currentTransition;
1368
1378
  if (this.isSheetModal) {
1369
1379
  this.initSheetGesture();
1370
1380
  }
1371
1381
  else if (hasCardModal) {
1372
1382
  this.initSwipeToClose();
1373
1383
  }
1374
- unlock();
1384
+ this.currentTransition = undefined;
1375
1385
  }
1376
1386
  initSwipeToClose() {
1377
1387
  var _a;
@@ -1461,7 +1471,6 @@ const Modal = class {
1461
1471
  if (this.gestureAnimationDismissing && role !== overlays.GESTURE) {
1462
1472
  return false;
1463
1473
  }
1464
- const unlock = await this.lockController.lock();
1465
1474
  /**
1466
1475
  * If a canDismiss handler is responsible
1467
1476
  * for calling the dismiss method, we should
@@ -1485,12 +1494,24 @@ const Modal = class {
1485
1494
  window.removeEventListener(keyboard.KEYBOARD_DID_OPEN, this.keyboardOpenCallback);
1486
1495
  this.keyboardOpenCallback = undefined;
1487
1496
  }
1497
+ /**
1498
+ * When using an inline modal
1499
+ * and presenting a modal it is possible to
1500
+ * quickly dismiss the modal while it is
1501
+ * presenting. We need to await any current
1502
+ * transition to allow the present to finish
1503
+ * before dismissing again.
1504
+ */
1505
+ if (this.currentTransition !== undefined) {
1506
+ await this.currentTransition;
1507
+ }
1488
1508
  const enteringAnimation = overlays.activeAnimations.get(this) || [];
1489
- const dismissed = await overlays.dismiss(this, data, role, 'modalLeave', iosLeaveAnimation, mdLeaveAnimation, {
1509
+ this.currentTransition = overlays.dismiss(this, data, role, 'modalLeave', iosLeaveAnimation, mdLeaveAnimation, {
1490
1510
  presentingEl: presentingElement,
1491
1511
  currentBreakpoint: (_a = this.currentBreakpoint) !== null && _a !== void 0 ? _a : this.initialBreakpoint,
1492
1512
  backdropBreakpoint: this.backdropBreakpoint,
1493
1513
  });
1514
+ const dismissed = await this.currentTransition;
1494
1515
  if (dismissed) {
1495
1516
  const { delegate } = this.getDelegate();
1496
1517
  await frameworkDelegate.detachComponent(delegate, this.usersElement);
@@ -1504,8 +1525,8 @@ const Modal = class {
1504
1525
  enteringAnimation.forEach((ani) => ani.destroy());
1505
1526
  }
1506
1527
  this.currentBreakpoint = undefined;
1528
+ this.currentTransition = undefined;
1507
1529
  this.animation = undefined;
1508
- unlock();
1509
1530
  return dismissed;
1510
1531
  }
1511
1532
  /**
@@ -10,7 +10,7 @@ const cubicBezier = require('./cubic-bezier-6b9222ad.js');
10
10
  const helpers = require('./helpers-ea4ccbcb.js');
11
11
  const index$1 = require('./index-8568bedb.js');
12
12
  const ionicGlobal = require('./ionic-global-f81d8b73.js');
13
- const frameworkDelegate = require('./framework-delegate-e8174951.js');
13
+ const frameworkDelegate = require('./framework-delegate-c0873a6f.js');
14
14
 
15
15
  const VIEW_STATE_NEW = 1;
16
16
  const VIEW_STATE_ATTACHED = 2;
@@ -6,10 +6,10 @@
6
6
  Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
8
  const index = require('./index-484b1104.js');
9
- const frameworkDelegate = require('./framework-delegate-e8174951.js');
9
+ const frameworkDelegate = require('./framework-delegate-c0873a6f.js');
10
10
  const helpers = require('./helpers-ea4ccbcb.js');
11
11
  const index$1 = require('./index-cc7dfb7c.js');
12
- const overlays = require('./overlays-2b9fa92e.js');
12
+ const overlays = require('./overlays-5c1706ed.js');
13
13
  const ionicGlobal = require('./ionic-global-f81d8b73.js');
14
14
  const theme = require('./theme-fbc56b3b.js');
15
15
  const index$2 = require('./index-8568bedb.js');
@@ -987,7 +987,6 @@ const Popover = class {
987
987
  this.ionMount = index.createEvent(this, "ionMount", 7);
988
988
  this.parentPopover = null;
989
989
  this.coreDelegate = frameworkDelegate.CoreDelegate();
990
- this.lockController = overlays.createLockController();
991
990
  this.inline = false;
992
991
  this.focusDescendantOnPresent = false;
993
992
  this.onBackdropTap = () => {
@@ -1164,15 +1163,25 @@ const Popover = class {
1164
1163
  if (this.presented) {
1165
1164
  return;
1166
1165
  }
1167
- const unlock = await this.lockController.lock();
1166
+ /**
1167
+ * When using an inline popover
1168
+ * and dismissing a popover it is possible to
1169
+ * quickly present the popover while it is
1170
+ * dismissing. We need to await any current
1171
+ * transition to allow the dismiss to finish
1172
+ * before presenting again.
1173
+ */
1174
+ if (this.currentTransition !== undefined) {
1175
+ await this.currentTransition;
1176
+ }
1168
1177
  const { el } = this;
1169
1178
  const { inline, delegate } = this.getDelegate(true);
1179
+ this.ionMount.emit();
1170
1180
  this.usersElement = await frameworkDelegate.attachComponent(delegate, el, this.component, ['popover-viewport'], this.componentProps, inline);
1171
1181
  if (!this.keyboardEvents) {
1172
1182
  this.configureKeyboardInteraction();
1173
1183
  }
1174
1184
  this.configureDismissInteraction();
1175
- this.ionMount.emit();
1176
1185
  /**
1177
1186
  * When using the lazy loaded build of Stencil, we need to wait
1178
1187
  * for every Stencil component instance to be ready before presenting
@@ -1195,7 +1204,7 @@ const Popover = class {
1195
1204
  else if (!this.keepContentsMounted) {
1196
1205
  await index$2.waitForMount();
1197
1206
  }
1198
- await overlays.present(this, 'popoverEnter', iosEnterAnimation, mdEnterAnimation, {
1207
+ this.currentTransition = overlays.present(this, 'popoverEnter', iosEnterAnimation, mdEnterAnimation, {
1199
1208
  event: event || this.event,
1200
1209
  size: this.size,
1201
1210
  trigger: this.triggerEl,
@@ -1203,6 +1212,8 @@ const Popover = class {
1203
1212
  side: this.side,
1204
1213
  align: this.alignment,
1205
1214
  });
1215
+ await this.currentTransition;
1216
+ this.currentTransition = undefined;
1206
1217
  /**
1207
1218
  * If popover is nested and was
1208
1219
  * presented using the "Right" arrow key,
@@ -1212,7 +1223,6 @@ const Popover = class {
1212
1223
  if (this.focusDescendantOnPresent) {
1213
1224
  overlays.focusFirstDescendant(this.el, this.el);
1214
1225
  }
1215
- unlock();
1216
1226
  }
1217
1227
  /**
1218
1228
  * Dismiss the popover overlay after it has been presented.
@@ -1223,12 +1233,23 @@ const Popover = class {
1223
1233
  * a parent popover if this popover is nested. Defaults to `true`.
1224
1234
  */
1225
1235
  async dismiss(data, role, dismissParentPopover = true) {
1226
- const unlock = await this.lockController.lock();
1236
+ /**
1237
+ * When using an inline popover
1238
+ * and presenting a popover it is possible to
1239
+ * quickly dismiss the popover while it is
1240
+ * presenting. We need to await any current
1241
+ * transition to allow the present to finish
1242
+ * before dismissing again.
1243
+ */
1244
+ if (this.currentTransition !== undefined) {
1245
+ await this.currentTransition;
1246
+ }
1227
1247
  const { destroyKeyboardInteraction, destroyDismissInteraction } = this;
1228
1248
  if (dismissParentPopover && this.parentPopover) {
1229
1249
  this.parentPopover.dismiss(data, role, dismissParentPopover);
1230
1250
  }
1231
- const shouldDismiss = await overlays.dismiss(this, data, role, 'popoverLeave', iosLeaveAnimation, mdLeaveAnimation, this.event);
1251
+ this.currentTransition = overlays.dismiss(this, data, role, 'popoverLeave', iosLeaveAnimation, mdLeaveAnimation, this.event);
1252
+ const shouldDismiss = await this.currentTransition;
1232
1253
  if (shouldDismiss) {
1233
1254
  if (destroyKeyboardInteraction) {
1234
1255
  destroyKeyboardInteraction();
@@ -1246,7 +1267,7 @@ const Popover = class {
1246
1267
  const { delegate } = this.getDelegate();
1247
1268
  await frameworkDelegate.detachComponent(delegate, this.usersElement);
1248
1269
  }
1249
- unlock();
1270
+ this.currentTransition = undefined;
1250
1271
  return shouldDismiss;
1251
1272
  }
1252
1273
  /**
@@ -10,14 +10,14 @@ const formController = require('./form-controller-5e223b54.js');
10
10
  const notchController = require('./notch-controller-c27fe0b7.js');
11
11
  const helpers = require('./helpers-ea4ccbcb.js');
12
12
  const index$1 = require('./index-cc7dfb7c.js');
13
- const overlays = require('./overlays-2b9fa92e.js');
13
+ const overlays = require('./overlays-5c1706ed.js');
14
14
  const dir = require('./dir-f1e0ca26.js');
15
15
  const theme = require('./theme-fbc56b3b.js');
16
16
  const watchOptions = require('./watch-options-f3f77e54.js');
17
17
  const index$2 = require('./index-d8d1fc0b.js');
18
18
  const ionicGlobal = require('./ionic-global-f81d8b73.js');
19
19
  require('./index-306a7476.js');
20
- require('./framework-delegate-e8174951.js');
20
+ require('./framework-delegate-c0873a6f.js');
21
21
  require('./hardware-back-button-b67c8e75.js');
22
22
 
23
23
  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%}: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.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) label:dir(rtl){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}: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)}: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) .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(.select-label-placement-stacked) .label-text-wrapper,:host(.select-expanded.select-label-placement-floating) .label-text-wrapper,:host(.ion-focused.select-label-placement-floating) .label-text-wrapper,:host(.has-value.select-label-placement-floating) .label-text-wrapper{-webkit-transform:translateY(50%) scale(0.75);transform:translateY(50%) scale(0.75);max-width:calc(100% / 0.75)}:host(.legacy-select){--padding-top:10px;--padding-end:8px;--padding-bottom:10px;--padding-start:16px}:host(:not(.legacy-select)){min-height:44px}:host(.select-label-placement-floating),:host(.select-label-placement-stacked){min-height:56px}.select-icon{width:18px;height:18px;color:var(--ion-color-step-650, #595959)}:host(.select-label-placement-stacked) .native-wrapper,:host(.select-label-placement-floating) .native-wrapper{width:calc(100% - 18px - 4px)}:host(.select-disabled){opacity:0.3}";