@ionic/core 7.3.2 → 7.3.3-dev.11693533652.1969cc78

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 (189) hide show
  1. package/components/action-sheet.js +8 -16
  2. package/components/alert.js +8 -16
  3. package/components/framework-delegate.js +21 -2
  4. package/components/ion-loading.js +8 -16
  5. package/components/ion-modal.js +21 -29
  6. package/components/ion-picker.js +8 -16
  7. package/components/ion-router-outlet.js +1 -0
  8. package/components/ion-toast.js +8 -16
  9. package/components/label.js +2 -2
  10. package/components/lock-controller.js +38 -0
  11. package/components/popover.js +15 -29
  12. package/dist/cjs/{framework-delegate-e8174951.js → framework-delegate-c0873a6f.js} +21 -2
  13. package/dist/cjs/index.cjs.js +2 -2
  14. package/dist/cjs/ion-action-sheet.cjs.entry.js +10 -18
  15. package/dist/cjs/ion-alert.cjs.entry.js +10 -18
  16. package/dist/cjs/ion-app_8.cjs.entry.js +2 -1
  17. package/dist/cjs/ion-datetime_3.cjs.entry.js +10 -18
  18. package/dist/cjs/ion-item_8.cjs.entry.js +2 -2
  19. package/dist/cjs/ion-loading.cjs.entry.js +10 -18
  20. package/dist/cjs/ion-menu_3.cjs.entry.js +2 -2
  21. package/dist/cjs/ion-modal.cjs.entry.js +23 -31
  22. package/dist/cjs/ion-nav_2.cjs.entry.js +1 -1
  23. package/dist/cjs/ion-popover.cjs.entry.js +17 -31
  24. package/dist/cjs/ion-select_3.cjs.entry.js +2 -2
  25. package/dist/cjs/ion-tab_2.cjs.entry.js +1 -1
  26. package/dist/cjs/ion-toast.cjs.entry.js +10 -18
  27. package/dist/cjs/lock-controller-4ae2eb59.js +40 -0
  28. package/dist/cjs/{overlays-0ea06fcb.js → overlays-5c1706ed.js} +1 -1
  29. package/dist/collection/components/action-sheet/action-sheet.js +8 -16
  30. package/dist/collection/components/alert/alert.js +8 -16
  31. package/dist/collection/components/checkbox/test/color/checkbox.e2e.js +2 -2
  32. package/dist/collection/components/checkbox/test/item/checkbox.e2e.js +4 -4
  33. package/dist/collection/components/checkbox/test/label/checkbox.e2e.js +10 -10
  34. package/dist/collection/components/checkbox/test/legacy/basic/checkbox.e2e.js +1 -1
  35. package/dist/collection/components/checkbox/test/legacy/indeterminate/checkbox.e2e.js +1 -1
  36. package/dist/collection/components/checkbox/test/states/checkbox.e2e.js +4 -4
  37. package/dist/collection/components/datetime/test/custom/datetime.e2e.js +0 -7
  38. package/dist/collection/components/datetime/test/presentation/datetime.e2e.js +48 -17
  39. package/dist/collection/components/input/test/bottom-content/input.e2e.js +7 -7
  40. package/dist/collection/components/input/test/card/input.e2e.js +1 -1
  41. package/dist/collection/components/input/test/color/input.e2e.js +15 -15
  42. package/dist/collection/components/input/test/fill/input.e2e.js +10 -10
  43. package/dist/collection/components/input/test/highlight/input.e2e.js +9 -9
  44. package/dist/collection/components/input/test/item/input.e2e.js +2 -2
  45. package/dist/collection/components/input/test/label-placement/input.e2e.js +16 -16
  46. package/dist/collection/components/input/test/legacy/basic/input.e2e.js +10 -10
  47. package/dist/collection/components/input/test/states/input.e2e.js +2 -2
  48. package/dist/collection/components/label/label.ios.css +2 -4
  49. package/dist/collection/components/label/label.md.css +2 -4
  50. package/dist/collection/components/loading/loading.js +8 -16
  51. package/dist/collection/components/modal/modal.js +21 -29
  52. package/dist/collection/components/picker/picker.js +8 -16
  53. package/dist/collection/components/popover/popover.js +15 -29
  54. package/dist/collection/components/popover/test/async/popover.e2e.js +42 -0
  55. package/dist/collection/components/radio/test/color/radio.e2e.js +2 -2
  56. package/dist/collection/components/radio/test/item/radio.e2e.js +3 -3
  57. package/dist/collection/components/radio/test/label-placement/radio.e2e.js +9 -9
  58. package/dist/collection/components/radio/test/states/radio.e2e.js +4 -4
  59. package/dist/collection/components/range/test/color/range.e2e.js +1 -1
  60. package/dist/collection/components/range/test/custom/range.e2e.js +1 -1
  61. package/dist/collection/components/range/test/item/range.e2e.js +3 -3
  62. package/dist/collection/components/range/test/label/range.e2e.js +12 -12
  63. package/dist/collection/components/range/test/legacy/a11y/range.e2e.js +3 -3
  64. package/dist/collection/components/range/test/legacy/active-bar-start/range.e2e.js +1 -1
  65. package/dist/collection/components/range/test/legacy/basic/range.e2e.js +1 -1
  66. package/dist/collection/components/range/test/states/range.e2e.js +4 -4
  67. package/dist/collection/components/router-outlet/router-outlet.js +1 -0
  68. package/dist/collection/components/select/test/card/select.e2e.js +1 -1
  69. package/dist/collection/components/select/test/color/select.e2e.js +3 -3
  70. package/dist/collection/components/select/test/fill/select.e2e.js +10 -10
  71. package/dist/collection/components/select/test/highlight/select.e2e.js +3 -3
  72. package/dist/collection/components/select/test/item/select.e2e.js +2 -2
  73. package/dist/collection/components/select/test/label/select.e2e.js +20 -20
  74. package/dist/collection/components/select/test/states/select.e2e.js +4 -4
  75. package/dist/collection/components/textarea/test/bottom-content/textarea.e2e.js +6 -6
  76. package/dist/collection/components/textarea/test/card/textarea.e2e.js +1 -1
  77. package/dist/collection/components/textarea/test/color/textarea.e2e.js +15 -15
  78. package/dist/collection/components/textarea/test/fill/textarea.e2e.js +10 -10
  79. package/dist/collection/components/textarea/test/highlight/textarea.e2e.js +9 -9
  80. package/dist/collection/components/textarea/test/item/textarea.e2e.js +2 -2
  81. package/dist/collection/components/textarea/test/label-placement/textarea.e2e.js +21 -21
  82. package/dist/collection/components/textarea/test/legacy/autogrow/textarea.e2e.js +5 -5
  83. package/dist/collection/components/textarea/test/states/textarea.e2e.js +2 -2
  84. package/dist/collection/components/toast/toast.js +8 -16
  85. package/dist/collection/components/toggle/test/color/toggle.e2e.js +2 -2
  86. package/dist/collection/components/toggle/test/item/toggle.e2e.js +4 -4
  87. package/dist/collection/components/toggle/test/label/toggle.e2e.js +9 -9
  88. package/dist/collection/components/toggle/test/legacy/enable-on-off-labels/toggle.e2e.js +2 -2
  89. package/dist/collection/components/toggle/test/legacy/sizes/toggle.e2e.js +1 -1
  90. package/dist/collection/components/toggle/test/states/toggle.e2e.js +3 -3
  91. package/dist/collection/utils/framework-delegate.js +21 -2
  92. package/dist/collection/utils/lock-controller.js +36 -0
  93. package/dist/docs.json +1 -1
  94. package/dist/esm/{framework-delegate-2b76c681.js → framework-delegate-aa433dea.js} +21 -2
  95. package/dist/esm/index.js +2 -2
  96. package/dist/esm/ion-action-sheet.entry.js +10 -18
  97. package/dist/esm/ion-alert.entry.js +10 -18
  98. package/dist/esm/ion-app_8.entry.js +2 -1
  99. package/dist/esm/ion-datetime_3.entry.js +10 -18
  100. package/dist/esm/ion-item_8.entry.js +2 -2
  101. package/dist/esm/ion-loading.entry.js +10 -18
  102. package/dist/esm/ion-menu_3.entry.js +2 -2
  103. package/dist/esm/ion-modal.entry.js +23 -31
  104. package/dist/esm/ion-nav_2.entry.js +1 -1
  105. package/dist/esm/ion-popover.entry.js +17 -31
  106. package/dist/esm/ion-select_3.entry.js +2 -2
  107. package/dist/esm/ion-tab_2.entry.js +1 -1
  108. package/dist/esm/ion-toast.entry.js +10 -18
  109. package/dist/esm/lock-controller-e8c6c051.js +38 -0
  110. package/dist/esm/{overlays-c3387ec0.js → overlays-e1dadfe6.js} +1 -1
  111. package/dist/esm-es5/framework-delegate-aa433dea.js +4 -0
  112. package/dist/esm-es5/index.js +1 -1
  113. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  114. package/dist/esm-es5/ion-alert.entry.js +1 -1
  115. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  116. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  117. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  118. package/dist/esm-es5/ion-loading.entry.js +1 -1
  119. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  120. package/dist/esm-es5/ion-modal.entry.js +1 -1
  121. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  122. package/dist/esm-es5/ion-popover.entry.js +1 -1
  123. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  124. package/dist/esm-es5/ion-tab_2.entry.js +1 -1
  125. package/dist/esm-es5/ion-toast.entry.js +1 -1
  126. package/dist/esm-es5/lock-controller-e8c6c051.js +4 -0
  127. package/dist/esm-es5/{overlays-c3387ec0.js → overlays-e1dadfe6.js} +1 -1
  128. package/dist/ionic/index.esm.js +1 -1
  129. package/dist/ionic/ionic.esm.js +1 -1
  130. package/dist/ionic/{p-958bde76.entry.js → p-091cd81e.entry.js} +1 -1
  131. package/dist/ionic/{p-d1356034.system.entry.js → p-0b68c41d.system.entry.js} +1 -1
  132. package/dist/ionic/p-0cc2bf5a.system.entry.js +4 -0
  133. package/dist/ionic/p-208f640c.entry.js +4 -0
  134. package/dist/ionic/p-2539e967.system.entry.js +4 -0
  135. package/dist/ionic/{p-74bd26b8.system.entry.js → p-28f5715a.system.entry.js} +1 -1
  136. package/dist/ionic/{p-b9312889.entry.js → p-341d5877.entry.js} +1 -1
  137. package/dist/ionic/p-38dd9aec.entry.js +4 -0
  138. package/dist/ionic/p-3ff018da.entry.js +4 -0
  139. package/dist/ionic/{p-8074bdd7.system.entry.js → p-45ee211b.system.entry.js} +1 -1
  140. package/dist/ionic/p-5009cb46.entry.js +4 -0
  141. package/dist/ionic/p-53b2a46f.js +4 -0
  142. package/dist/ionic/{p-5ef91692.js → p-582dc7c1.js} +1 -1
  143. package/dist/ionic/{p-79e30193.system.entry.js → p-5ba27716.system.entry.js} +1 -1
  144. package/dist/ionic/{p-c0d1e5a1.entry.js → p-5c17f888.entry.js} +1 -1
  145. package/dist/ionic/{p-8d9475b5.system.js → p-613d4042.system.js} +1 -1
  146. package/dist/ionic/p-647d15d4.system.entry.js +4 -0
  147. package/dist/ionic/p-653f2fc6.entry.js +4 -0
  148. package/dist/ionic/p-721933ff.system.js +1 -1
  149. package/dist/ionic/p-772f6c84.system.js +4 -0
  150. package/dist/ionic/p-87383d00.system.entry.js +4 -0
  151. package/dist/ionic/{p-db46fc66.system.js → p-8843b046.system.js} +1 -1
  152. package/dist/ionic/p-93e47822.entry.js +4 -0
  153. package/dist/ionic/{p-229df0d8.entry.js → p-98ebc376.entry.js} +1 -1
  154. package/dist/ionic/p-af0bc751.system.entry.js +4 -0
  155. package/dist/ionic/p-b0e9e0b8.system.entry.js +4 -0
  156. package/dist/ionic/p-b287ab05.js +4 -0
  157. package/dist/ionic/{p-81b46714.system.js → p-b32742f3.system.js} +1 -1
  158. package/dist/ionic/p-b3394798.system.entry.js +4 -0
  159. package/dist/ionic/{p-20087c90.entry.js → p-c759a704.entry.js} +1 -1
  160. package/dist/ionic/{p-6b9bf14c.system.entry.js → p-d1d3b740.system.entry.js} +1 -1
  161. package/dist/ionic/{p-8fa43732.system.entry.js → p-d693e765.system.entry.js} +1 -1
  162. package/dist/ionic/{p-5c96dc4e.entry.js → p-f7faa32d.entry.js} +1 -1
  163. package/dist/ionic/p-fabb7294.entry.js +4 -0
  164. package/dist/types/components/action-sheet/action-sheet.d.ts +1 -1
  165. package/dist/types/components/alert/alert.d.ts +1 -1
  166. package/dist/types/components/loading/loading.d.ts +1 -1
  167. package/dist/types/components/modal/modal.d.ts +1 -1
  168. package/dist/types/components/picker/picker.d.ts +1 -1
  169. package/dist/types/components/popover/popover.d.ts +1 -1
  170. package/dist/types/components/toast/toast.d.ts +1 -1
  171. package/dist/types/utils/lock-controller.d.ts +10 -0
  172. package/hydrate/index.js +127 -142
  173. package/package.json +1 -1
  174. package/dist/esm-es5/framework-delegate-2b76c681.js +0 -4
  175. package/dist/ionic/p-06f1f560.system.entry.js +0 -4
  176. package/dist/ionic/p-2936ec7f.system.entry.js +0 -4
  177. package/dist/ionic/p-29b3e70a.entry.js +0 -4
  178. package/dist/ionic/p-2bc49e5d.system.entry.js +0 -4
  179. package/dist/ionic/p-2da3e015.system.entry.js +0 -4
  180. package/dist/ionic/p-423d5a4d.entry.js +0 -4
  181. package/dist/ionic/p-564aaba3.entry.js +0 -4
  182. package/dist/ionic/p-61769039.entry.js +0 -4
  183. package/dist/ionic/p-74723f41.entry.js +0 -4
  184. package/dist/ionic/p-9b3c3564.entry.js +0 -4
  185. package/dist/ionic/p-b34c1ae1.js +0 -4
  186. package/dist/ionic/p-ccea9adc.system.entry.js +0 -4
  187. package/dist/ionic/p-d5db0834.system.entry.js +0 -4
  188. package/dist/ionic/p-d8538837.entry.js +0 -4
  189. package/dist/ionic/p-dd0b6889.system.entry.js +0 -4
package/hydrate/index.js CHANGED
@@ -7968,6 +7968,40 @@ const createButtonActiveGesture = (el, isButton) => {
7968
7968
  });
7969
7969
  };
7970
7970
 
7971
+ /**
7972
+ * Creates a lock controller.
7973
+ *
7974
+ * Claiming a lock means that nothing else can acquire the lock until it is released.
7975
+ * This can momentarily prevent execution of code that needs to wait for the earlier code to finish.
7976
+ * For example, this can be used to prevent multiple transitions from occurring at the same time.
7977
+ */
7978
+ const createLockController = () => {
7979
+ let waitPromise;
7980
+ /**
7981
+ * When lock() is called, the lock is claimed.
7982
+ * Once a lock has been claimed, it cannot be claimed again until it is released.
7983
+ * When this function gets resolved, the lock is released, allowing it to be claimed again.
7984
+ *
7985
+ * @example ```tsx
7986
+ * const unlock = await this.lockController.lock();
7987
+ * // do other stuff
7988
+ * unlock();
7989
+ * ```
7990
+ */
7991
+ const lock = async () => {
7992
+ const p = waitPromise;
7993
+ let resolve;
7994
+ waitPromise = new Promise((r) => (resolve = r));
7995
+ if (p !== undefined) {
7996
+ await p;
7997
+ }
7998
+ return resolve;
7999
+ };
8000
+ return {
8001
+ lock,
8002
+ };
8003
+ };
8004
+
7971
8005
  // TODO(FW-2832): types
7972
8006
  const attachComponent = async (delegate, container, component, cssClasses, componentProps, inline) => {
7973
8007
  var _a;
@@ -8004,6 +8038,7 @@ const CoreDelegate = () => {
8004
8038
  const attachViewToDom = async (parentElement, userComponent, userComponentProps = {}, cssClasses = []) => {
8005
8039
  var _a, _b;
8006
8040
  BaseComponent = parentElement;
8041
+ let ChildComponent;
8007
8042
  /**
8008
8043
  * If passing in a component via the `component` props
8009
8044
  * we need to append it inside of our overlay component.
@@ -8030,6 +8065,7 @@ const CoreDelegate = () => {
8030
8065
  * inside of the overlay component.
8031
8066
  */
8032
8067
  BaseComponent.appendChild(el);
8068
+ ChildComponent = el;
8033
8069
  await new Promise((resolve) => componentOnReady(el, resolve));
8034
8070
  }
8035
8071
  else if (BaseComponent.children.length > 0 &&
@@ -8038,7 +8074,7 @@ const CoreDelegate = () => {
8038
8074
  * The delegate host wrapper el is only needed for modals and popovers
8039
8075
  * because they allow the dev to provide custom content to the overlay.
8040
8076
  */
8041
- const root = BaseComponent.children[0];
8077
+ const root = (ChildComponent = BaseComponent.children[0]);
8042
8078
  if (!root.classList.contains('ion-delegate-host')) {
8043
8079
  /**
8044
8080
  * If the root element is not a delegate host, it means
@@ -8053,6 +8089,12 @@ const CoreDelegate = () => {
8053
8089
  el.append(...BaseComponent.children);
8054
8090
  // Append the new parent element to the original parent element.
8055
8091
  BaseComponent.appendChild(el);
8092
+ /**
8093
+ * Update the ChildComponent to be the
8094
+ * newly created div in the event that one
8095
+ * does not already exist.
8096
+ */
8097
+ ChildComponent = el;
8056
8098
  }
8057
8099
  }
8058
8100
  /**
@@ -8068,7 +8110,18 @@ const CoreDelegate = () => {
8068
8110
  Reference = document.createComment('ionic teleport');
8069
8111
  BaseComponent.parentNode.insertBefore(Reference, BaseComponent);
8070
8112
  app.appendChild(BaseComponent);
8071
- return BaseComponent;
8113
+ /**
8114
+ * We return the child component rather than the overlay
8115
+ * reference itself since modal and popover will
8116
+ * use this to wait for any Ionic components in the child view
8117
+ * to be ready (i.e. componentOnReady) when using the
8118
+ * lazy loaded component bundle.
8119
+ *
8120
+ * However, we fall back to returning BaseComponent
8121
+ * in the event that a modal or popover is presented
8122
+ * with no child content.
8123
+ */
8124
+ return ChildComponent !== null && ChildComponent !== void 0 ? ChildComponent : BaseComponent;
8072
8125
  };
8073
8126
  const removeViewFromDom = () => {
8074
8127
  /**
@@ -9873,6 +9926,7 @@ class ActionSheet {
9873
9926
  this.willDismissShorthand = createEvent(this, "willDismiss", 7);
9874
9927
  this.didDismissShorthand = createEvent(this, "didDismiss", 7);
9875
9928
  this.delegateController = createDelegateController(this);
9929
+ this.lockController = createLockController();
9876
9930
  this.triggerController = createTriggerController();
9877
9931
  this.presented = false;
9878
9932
  this.onBackdropTap = () => {
@@ -9920,21 +9974,10 @@ class ActionSheet {
9920
9974
  * Present the action sheet overlay after it has been created.
9921
9975
  */
9922
9976
  async present() {
9923
- /**
9924
- * When using an inline action sheet
9925
- * and dismissing a action sheet it is possible to
9926
- * quickly present the action sheet while it is
9927
- * dismissing. We need to await any current
9928
- * transition to allow the dismiss to finish
9929
- * before presenting again.
9930
- */
9931
- if (this.currentTransition !== undefined) {
9932
- await this.currentTransition;
9933
- }
9977
+ const unlock = await this.lockController.lock();
9934
9978
  await this.delegateController.attachViewToDom();
9935
- this.currentTransition = present(this, 'actionSheetEnter', iosEnterAnimation$6, mdEnterAnimation$5);
9936
- await this.currentTransition;
9937
- this.currentTransition = undefined;
9979
+ await present(this, 'actionSheetEnter', iosEnterAnimation$6, mdEnterAnimation$5);
9980
+ unlock();
9938
9981
  }
9939
9982
  /**
9940
9983
  * Dismiss the action sheet overlay after it has been presented.
@@ -9946,11 +9989,12 @@ class ActionSheet {
9946
9989
  * Some examples include: ``"cancel"`, `"destructive"`, "selected"`, and `"backdrop"`.
9947
9990
  */
9948
9991
  async dismiss(data, role) {
9949
- this.currentTransition = dismiss(this, data, role, 'actionSheetLeave', iosLeaveAnimation$6, mdLeaveAnimation$5);
9950
- const dismissed = await this.currentTransition;
9992
+ const unlock = await this.lockController.lock();
9993
+ const dismissed = await dismiss(this, data, role, 'actionSheetLeave', iosLeaveAnimation$6, mdLeaveAnimation$5);
9951
9994
  if (dismissed) {
9952
9995
  this.delegateController.removeViewFromDom();
9953
9996
  }
9997
+ unlock();
9954
9998
  return dismissed;
9955
9999
  }
9956
10000
  /**
@@ -10360,6 +10404,7 @@ class Alert {
10360
10404
  this.willDismissShorthand = createEvent(this, "willDismiss", 7);
10361
10405
  this.didDismissShorthand = createEvent(this, "didDismiss", 7);
10362
10406
  this.delegateController = createDelegateController(this);
10407
+ this.lockController = createLockController();
10363
10408
  this.triggerController = createTriggerController();
10364
10409
  this.customHTMLEnabled = config.get('innerHTMLTemplatesEnabled', ENABLE_HTML_CONTENT_DEFAULT);
10365
10410
  this.processedInputs = [];
@@ -10526,21 +10571,10 @@ class Alert {
10526
10571
  * Present the alert overlay after it has been created.
10527
10572
  */
10528
10573
  async present() {
10529
- /**
10530
- * When using an inline alert
10531
- * and dismissing an alert it is possible to
10532
- * quickly present the alert while it is
10533
- * dismissing. We need to await any current
10534
- * transition to allow the dismiss to finish
10535
- * before presenting again.
10536
- */
10537
- if (this.currentTransition !== undefined) {
10538
- await this.currentTransition;
10539
- }
10574
+ const unlock = await this.lockController.lock();
10540
10575
  await this.delegateController.attachViewToDom();
10541
- this.currentTransition = present(this, 'alertEnter', iosEnterAnimation$5, mdEnterAnimation$4);
10542
- await this.currentTransition;
10543
- this.currentTransition = undefined;
10576
+ await present(this, 'alertEnter', iosEnterAnimation$5, mdEnterAnimation$4);
10577
+ unlock();
10544
10578
  }
10545
10579
  /**
10546
10580
  * Dismiss the alert overlay after it has been presented.
@@ -10552,11 +10586,12 @@ class Alert {
10552
10586
  * Some examples include: ``"cancel"`, `"destructive"`, "selected"`, and `"backdrop"`.
10553
10587
  */
10554
10588
  async dismiss(data, role) {
10555
- this.currentTransition = dismiss(this, data, role, 'alertLeave', iosLeaveAnimation$5, mdLeaveAnimation$4);
10556
- const dismissed = await this.currentTransition;
10589
+ const unlock = await this.lockController.lock();
10590
+ const dismissed = await dismiss(this, data, role, 'alertLeave', iosLeaveAnimation$5, mdLeaveAnimation$4);
10557
10591
  if (dismissed) {
10558
10592
  this.delegateController.removeViewFromDom();
10559
10593
  }
10594
+ unlock();
10560
10595
  return dismissed;
10561
10596
  }
10562
10597
  /**
@@ -19502,9 +19537,9 @@ const swipeShouldReset = (isResetDirection, isMovingFast, isOnResetZone) => {
19502
19537
  return (!isMovingFast && isOnResetZone) || (isResetDirection && isMovingFast);
19503
19538
  };
19504
19539
 
19505
- const labelIosCss = ".item.sc-ion-label-ios-h,.item .sc-ion-label-ios-h{--color:initial;display:block;color:var(--color);font-family:var(--ion-font-family, inherit);font-size:inherit;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box}.ion-color.sc-ion-label-ios-h{color:var(--ion-color-base)}.ion-text-wrap.sc-ion-label-ios-h,[text-wrap].sc-ion-label-ios-h{white-space:normal}.item-interactive-disabled.sc-ion-label-ios-h:not(.item-multiple-inputs),.item-interactive-disabled:not(.item-multiple-inputs) .sc-ion-label-ios-h{cursor:default;opacity:0.3;pointer-events:none}.item-input.sc-ion-label-ios-h,.item-input .sc-ion-label-ios-h{-ms-flex:initial;flex:initial;max-width:200px;pointer-events:none}.item-textarea.sc-ion-label-ios-h,.item-textarea .sc-ion-label-ios-h{-ms-flex-item-align:baseline;align-self:baseline}.label-fixed.sc-ion-label-ios-h{-ms-flex:0 0 100px;flex:0 0 100px;width:100px;min-width:100px;max-width:200px}.label-stacked.sc-ion-label-ios-h,.label-floating.sc-ion-label-ios-h{margin-bottom:0;-ms-flex-item-align:stretch;align-self:stretch;width:auto;max-width:100%}.label-no-animate.label-floating.sc-ion-label-ios-h{-webkit-transition:none;transition:none}.sc-ion-label-ios-s h1,.sc-ion-label-ios-s h2,.sc-ion-label-ios-s h3,.sc-ion-label-ios-s h4,.sc-ion-label-ios-s h5,.sc-ion-label-ios-s h6{text-overflow:inherit;overflow:inherit}.ion-text-wrap.sc-ion-label-ios-h,[text-wrap].sc-ion-label-ios-h{font-size:14px;line-height:1.5}.label-stacked.sc-ion-label-ios-h{margin-bottom:4px;font-size:14px}.label-floating.sc-ion-label-ios-h{margin-bottom:0;-webkit-transform:translate(0, 29px);transform:translate(0, 29px);-webkit-transform-origin:left top;transform-origin:left top;-webkit-transition:-webkit-transform 150ms ease-in-out;transition:-webkit-transform 150ms ease-in-out;transition:transform 150ms ease-in-out;transition:transform 150ms ease-in-out, -webkit-transform 150ms ease-in-out}[dir=rtl].sc-ion-label-ios-h -no-combinator.label-floating.sc-ion-label-ios-h,[dir=rtl] .sc-ion-label-ios-h -no-combinator.label-floating.sc-ion-label-ios-h,[dir=rtl].label-floating.sc-ion-label-ios-h,[dir=rtl] .label-floating.sc-ion-label-ios-h{-webkit-transform-origin:right top;transform-origin:right top}@supports selector(:dir(rtl)){.label-floating.sc-ion-label-ios-h:dir(rtl){-webkit-transform-origin:right top;transform-origin:right top}}.item-textarea.label-floating.sc-ion-label-ios-h,.item-textarea .label-floating.sc-ion-label-ios-h{-webkit-transform:translate(0, 28px);transform:translate(0, 28px)}.item-has-focus.label-floating.sc-ion-label-ios-h,.item-has-focus .label-floating.sc-ion-label-ios-h,.item-has-placeholder.sc-ion-label-ios-h:not(.item-input).label-floating,.item-has-placeholder:not(.item-input) .label-floating.sc-ion-label-ios-h,.item-has-value.label-floating.sc-ion-label-ios-h,.item-has-value .label-floating.sc-ion-label-ios-h{-webkit-transform:scale(0.82);transform:scale(0.82)}.sc-ion-label-ios-s h1{margin-left:0;margin-right:0;margin-top:3px;margin-bottom:2px;font-size:22px;font-weight:normal}.sc-ion-label-ios-s h2{margin-left:0;margin-right:0;margin-top:0;margin-bottom:2px;font-size:17px;font-weight:normal}.sc-ion-label-ios-s h3,.sc-ion-label-ios-s h4,.sc-ion-label-ios-s h5,.sc-ion-label-ios-s h6{margin-left:0;margin-right:0;margin-top:0;margin-bottom:3px;font-size:14px;font-weight:normal;line-height:normal}.sc-ion-label-ios-s p{margin-left:0;margin-right:0;margin-top:0;margin-bottom:2px;font-size:14px;line-height:normal;text-overflow:inherit;overflow:inherit}.sc-ion-label-ios-s>p{color:rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.4)}.sc-ion-label-ios-h.in-item-color.sc-ion-label-ios-s>p{color:inherit}.sc-ion-label-ios-s h2:last-child,.sc-ion-label-ios-s h3:last-child,.sc-ion-label-ios-s h4:last-child,.sc-ion-label-ios-s h5:last-child,.sc-ion-label-ios-s h6:last-child,.sc-ion-label-ios-s p:last-child{margin-bottom:0}";
19540
+ const labelIosCss = ".item.sc-ion-label-ios-h,.item .sc-ion-label-ios-h{--color:initial;display:block;color:var(--color);font-family:var(--ion-font-family, inherit);font-size:inherit;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box}.ion-color.sc-ion-label-ios-h{color:var(--ion-color-base)}.ion-text-wrap.sc-ion-label-ios-h{white-space:normal}.item-interactive-disabled.sc-ion-label-ios-h:not(.item-multiple-inputs),.item-interactive-disabled:not(.item-multiple-inputs) .sc-ion-label-ios-h{cursor:default;opacity:0.3;pointer-events:none}.item-input.sc-ion-label-ios-h,.item-input .sc-ion-label-ios-h{-ms-flex:initial;flex:initial;max-width:200px;pointer-events:none}.item-textarea.sc-ion-label-ios-h,.item-textarea .sc-ion-label-ios-h{-ms-flex-item-align:baseline;align-self:baseline}.label-fixed.sc-ion-label-ios-h{-ms-flex:0 0 100px;flex:0 0 100px;width:100px;min-width:100px;max-width:200px}.label-stacked.sc-ion-label-ios-h,.label-floating.sc-ion-label-ios-h{margin-bottom:0;-ms-flex-item-align:stretch;align-self:stretch;width:auto;max-width:100%}.label-no-animate.label-floating.sc-ion-label-ios-h{-webkit-transition:none;transition:none}.sc-ion-label-ios-s h1,.sc-ion-label-ios-s h2,.sc-ion-label-ios-s h3,.sc-ion-label-ios-s h4,.sc-ion-label-ios-s h5,.sc-ion-label-ios-s h6{text-overflow:inherit;overflow:inherit}.ion-text-wrap.sc-ion-label-ios-h{font-size:14px;line-height:1.5}.label-stacked.sc-ion-label-ios-h{margin-bottom:4px;font-size:14px}.label-floating.sc-ion-label-ios-h{margin-bottom:0;-webkit-transform:translate(0, 29px);transform:translate(0, 29px);-webkit-transform-origin:left top;transform-origin:left top;-webkit-transition:-webkit-transform 150ms ease-in-out;transition:-webkit-transform 150ms ease-in-out;transition:transform 150ms ease-in-out;transition:transform 150ms ease-in-out, -webkit-transform 150ms ease-in-out}[dir=rtl].sc-ion-label-ios-h -no-combinator.label-floating.sc-ion-label-ios-h,[dir=rtl] .sc-ion-label-ios-h -no-combinator.label-floating.sc-ion-label-ios-h,[dir=rtl].label-floating.sc-ion-label-ios-h,[dir=rtl] .label-floating.sc-ion-label-ios-h{-webkit-transform-origin:right top;transform-origin:right top}@supports selector(:dir(rtl)){.label-floating.sc-ion-label-ios-h:dir(rtl){-webkit-transform-origin:right top;transform-origin:right top}}.item-textarea.label-floating.sc-ion-label-ios-h,.item-textarea .label-floating.sc-ion-label-ios-h{-webkit-transform:translate(0, 28px);transform:translate(0, 28px)}.item-has-focus.label-floating.sc-ion-label-ios-h,.item-has-focus .label-floating.sc-ion-label-ios-h,.item-has-placeholder.sc-ion-label-ios-h:not(.item-input).label-floating,.item-has-placeholder:not(.item-input) .label-floating.sc-ion-label-ios-h,.item-has-value.label-floating.sc-ion-label-ios-h,.item-has-value .label-floating.sc-ion-label-ios-h{-webkit-transform:scale(0.82);transform:scale(0.82)}.sc-ion-label-ios-s h1{margin-left:0;margin-right:0;margin-top:3px;margin-bottom:2px;font-size:22px;font-weight:normal}.sc-ion-label-ios-s h2{margin-left:0;margin-right:0;margin-top:0;margin-bottom:2px;font-size:17px;font-weight:normal}.sc-ion-label-ios-s h3,.sc-ion-label-ios-s h4,.sc-ion-label-ios-s h5,.sc-ion-label-ios-s h6{margin-left:0;margin-right:0;margin-top:0;margin-bottom:3px;font-size:14px;font-weight:normal;line-height:normal}.sc-ion-label-ios-s p{margin-left:0;margin-right:0;margin-top:0;margin-bottom:2px;font-size:14px;line-height:normal;text-overflow:inherit;overflow:inherit}.sc-ion-label-ios-s>p{color:rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.4)}.sc-ion-label-ios-h.in-item-color.sc-ion-label-ios-s>p{color:inherit}.sc-ion-label-ios-s h2:last-child,.sc-ion-label-ios-s h3:last-child,.sc-ion-label-ios-s h4:last-child,.sc-ion-label-ios-s h5:last-child,.sc-ion-label-ios-s h6:last-child,.sc-ion-label-ios-s p:last-child{margin-bottom:0}";
19506
19541
 
19507
- const labelMdCss = ".item.sc-ion-label-md-h,.item .sc-ion-label-md-h{--color:initial;display:block;color:var(--color);font-family:var(--ion-font-family, inherit);font-size:inherit;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box}.ion-color.sc-ion-label-md-h{color:var(--ion-color-base)}.ion-text-wrap.sc-ion-label-md-h,[text-wrap].sc-ion-label-md-h{white-space:normal}.item-interactive-disabled.sc-ion-label-md-h:not(.item-multiple-inputs),.item-interactive-disabled:not(.item-multiple-inputs) .sc-ion-label-md-h{cursor:default;opacity:0.3;pointer-events:none}.item-input.sc-ion-label-md-h,.item-input .sc-ion-label-md-h{-ms-flex:initial;flex:initial;max-width:200px;pointer-events:none}.item-textarea.sc-ion-label-md-h,.item-textarea .sc-ion-label-md-h{-ms-flex-item-align:baseline;align-self:baseline}.label-fixed.sc-ion-label-md-h{-ms-flex:0 0 100px;flex:0 0 100px;width:100px;min-width:100px;max-width:200px}.label-stacked.sc-ion-label-md-h,.label-floating.sc-ion-label-md-h{margin-bottom:0;-ms-flex-item-align:stretch;align-self:stretch;width:auto;max-width:100%}.label-no-animate.label-floating.sc-ion-label-md-h{-webkit-transition:none;transition:none}.sc-ion-label-md-s h1,.sc-ion-label-md-s h2,.sc-ion-label-md-s h3,.sc-ion-label-md-s h4,.sc-ion-label-md-s h5,.sc-ion-label-md-s h6{text-overflow:inherit;overflow:inherit}.ion-text-wrap.sc-ion-label-md-h,[text-wrap].sc-ion-label-md-h{line-height:1.5}.label-stacked.sc-ion-label-md-h,.label-floating.sc-ion-label-md-h{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-transform-origin:top left;transform-origin:top left}.label-stacked.label-rtl.sc-ion-label-md-h,.label-floating.label-rtl.sc-ion-label-md-h{-webkit-transform-origin:top right;transform-origin:top right}.label-stacked.sc-ion-label-md-h{-webkit-transform:translateY(50%) scale(0.75);transform:translateY(50%) scale(0.75);-webkit-transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1)}.label-floating.sc-ion-label-md-h{-webkit-transform:translateY(96%);transform:translateY(96%);-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)}.ion-focused.label-floating.sc-ion-label-md-h,.ion-focused .label-floating.sc-ion-label-md-h,.item-has-focus.label-floating.sc-ion-label-md-h,.item-has-focus .label-floating.sc-ion-label-md-h,.item-has-placeholder.sc-ion-label-md-h:not(.item-input).label-floating,.item-has-placeholder:not(.item-input) .label-floating.sc-ion-label-md-h,.item-has-value.label-floating.sc-ion-label-md-h,.item-has-value .label-floating.sc-ion-label-md-h{-webkit-transform:translateY(50%) scale(0.75);transform:translateY(50%) scale(0.75)}.item-fill-outline.ion-focused.label-floating.sc-ion-label-md-h,.item-fill-outline.ion-focused .label-floating.sc-ion-label-md-h,.item-fill-outline.item-has-focus.label-floating.sc-ion-label-md-h,.item-fill-outline.item-has-focus .label-floating.sc-ion-label-md-h,.item-fill-outline.item-has-placeholder.sc-ion-label-md-h:not(.item-input).label-floating,.item-fill-outline.item-has-placeholder:not(.item-input) .label-floating.sc-ion-label-md-h,.item-fill-outline.item-has-value.label-floating.sc-ion-label-md-h,.item-fill-outline.item-has-value .label-floating.sc-ion-label-md-h{-webkit-transform:translateY(-6px) scale(0.75);transform:translateY(-6px) scale(0.75);position:relative;max-width:-webkit-min-content;max-width:-moz-min-content;max-width:min-content;background-color:var(--ion-item-background, var(--ion-background-color, #fff));overflow:visible;z-index:3}.item-fill-outline.ion-focused.label-floating.sc-ion-label-md-h::before,.item-fill-outline.ion-focused .label-floating.sc-ion-label-md-h::before,.item-fill-outline.ion-focused.label-floating.sc-ion-label-md-h::after,.item-fill-outline.ion-focused .label-floating.sc-ion-label-md-h::after,.item-fill-outline.item-has-focus.label-floating.sc-ion-label-md-h::before,.item-fill-outline.item-has-focus .label-floating.sc-ion-label-md-h::before,.item-fill-outline.item-has-focus.label-floating.sc-ion-label-md-h::after,.item-fill-outline.item-has-focus .label-floating.sc-ion-label-md-h::after,.item-fill-outline.item-has-placeholder.sc-ion-label-md-h:not(.item-input).label-floating::before,.item-fill-outline.item-has-placeholder:not(.item-input) .label-floating.sc-ion-label-md-h::before,.item-fill-outline.item-has-placeholder.sc-ion-label-md-h:not(.item-input).label-floating::after,.item-fill-outline.item-has-placeholder:not(.item-input) .label-floating.sc-ion-label-md-h::after,.item-fill-outline.item-has-value.label-floating.sc-ion-label-md-h::before,.item-fill-outline.item-has-value .label-floating.sc-ion-label-md-h::before,.item-fill-outline.item-has-value.label-floating.sc-ion-label-md-h::after,.item-fill-outline.item-has-value .label-floating.sc-ion-label-md-h::after{position:absolute;width:4px;height:100%;background-color:var(--ion-item-background, var(--ion-background-color, #fff));content:\"\"}.item-fill-outline.ion-focused.label-floating.sc-ion-label-md-h::before,.item-fill-outline.ion-focused .label-floating.sc-ion-label-md-h::before,.item-fill-outline.item-has-focus.label-floating.sc-ion-label-md-h::before,.item-fill-outline.item-has-focus .label-floating.sc-ion-label-md-h::before,.item-fill-outline.item-has-placeholder.sc-ion-label-md-h:not(.item-input).label-floating::before,.item-fill-outline.item-has-placeholder:not(.item-input) .label-floating.sc-ion-label-md-h::before,.item-fill-outline.item-has-value.label-floating.sc-ion-label-md-h::before,.item-fill-outline.item-has-value .label-floating.sc-ion-label-md-h::before{left:calc(-1 * 4px)}.item-fill-outline.ion-focused.label-floating.sc-ion-label-md-h::after,.item-fill-outline.ion-focused .label-floating.sc-ion-label-md-h::after,.item-fill-outline.item-has-focus.label-floating.sc-ion-label-md-h::after,.item-fill-outline.item-has-focus .label-floating.sc-ion-label-md-h::after,.item-fill-outline.item-has-placeholder.sc-ion-label-md-h:not(.item-input).label-floating::after,.item-fill-outline.item-has-placeholder:not(.item-input) .label-floating.sc-ion-label-md-h::after,.item-fill-outline.item-has-value.label-floating.sc-ion-label-md-h::after,.item-fill-outline.item-has-value .label-floating.sc-ion-label-md-h::after{right:calc(-1 * 4px)}.item-fill-outline.ion-focused.item-has-start-slot.label-floating.sc-ion-label-md-h,.item-fill-outline.ion-focused.item-has-start-slot .label-floating.sc-ion-label-md-h,.item-fill-outline.item-has-focus.item-has-start-slot.label-floating.sc-ion-label-md-h,.item-fill-outline.item-has-focus.item-has-start-slot .label-floating.sc-ion-label-md-h,.item-fill-outline.item-has-placeholder.sc-ion-label-md-h:not(.item-input).item-has-start-slot.label-floating,.item-fill-outline.item-has-placeholder:not(.item-input).item-has-start-slot .label-floating.sc-ion-label-md-h,.item-fill-outline.item-has-value.item-has-start-slot.label-floating.sc-ion-label-md-h,.item-fill-outline.item-has-value.item-has-start-slot .label-floating.sc-ion-label-md-h{-webkit-transform:translateX(-32px) translateY(-6px) scale(0.75);transform:translateX(-32px) translateY(-6px) scale(0.75)}.item-fill-outline.ion-focused.item-has-start-slot.label-floating.label-rtl.sc-ion-label-md-h,.item-fill-outline.ion-focused.item-has-start-slot .label-floating.label-rtl.sc-ion-label-md-h,.item-fill-outline.item-has-focus.item-has-start-slot.label-floating.label-rtl.sc-ion-label-md-h,.item-fill-outline.item-has-focus.item-has-start-slot .label-floating.label-rtl.sc-ion-label-md-h,.item-fill-outline.item-has-placeholder.sc-ion-label-md-h:not(.item-input).item-has-start-slot.label-floating.label-rtl,.item-fill-outline.item-has-placeholder:not(.item-input).item-has-start-slot .label-floating.label-rtl.sc-ion-label-md-h,.item-fill-outline.item-has-value.item-has-start-slot.label-floating.label-rtl.sc-ion-label-md-h,.item-fill-outline.item-has-value.item-has-start-slot .label-floating.label-rtl.sc-ion-label-md-h{-webkit-transform:translateX(calc(-1 * -32px)) translateY(-6px) scale(0.75);transform:translateX(calc(-1 * -32px)) translateY(-6px) scale(0.75)}.ion-focused.label-stacked.sc-ion-label-md-h:not(.ion-color),.ion-focused .label-stacked.sc-ion-label-md-h:not(.ion-color),.ion-focused.label-floating.sc-ion-label-md-h:not(.ion-color),.ion-focused .label-floating.sc-ion-label-md-h:not(.ion-color),.item-has-focus.label-stacked.sc-ion-label-md-h:not(.ion-color),.item-has-focus .label-stacked.sc-ion-label-md-h:not(.ion-color),.item-has-focus.label-floating.sc-ion-label-md-h:not(.ion-color),.item-has-focus .label-floating.sc-ion-label-md-h:not(.ion-color){color:var(--ion-color-primary, #3880ff)}.ion-focused.ion-color.label-stacked.sc-ion-label-md-h:not(.ion-color),.ion-focused.ion-color .label-stacked.sc-ion-label-md-h:not(.ion-color),.ion-focused.ion-color.label-floating.sc-ion-label-md-h:not(.ion-color),.ion-focused.ion-color .label-floating.sc-ion-label-md-h:not(.ion-color),.item-has-focus.ion-color.label-stacked.sc-ion-label-md-h:not(.ion-color),.item-has-focus.ion-color .label-stacked.sc-ion-label-md-h:not(.ion-color),.item-has-focus.ion-color.label-floating.sc-ion-label-md-h:not(.ion-color),.item-has-focus.ion-color .label-floating.sc-ion-label-md-h:not(.ion-color){color:var(--ion-color-contrast)}.item-fill-solid.ion-focused.ion-color.label-stacked.sc-ion-label-md-h:not(.ion-color),.item-fill-solid.ion-focused.ion-color .label-stacked.sc-ion-label-md-h:not(.ion-color),.item-fill-solid.ion-focused.ion-color.label-floating.sc-ion-label-md-h:not(.ion-color),.item-fill-solid.ion-focused.ion-color .label-floating.sc-ion-label-md-h:not(.ion-color),.item-fill-outline.ion-focused.ion-color.label-stacked.sc-ion-label-md-h:not(.ion-color),.item-fill-outline.ion-focused.ion-color .label-stacked.sc-ion-label-md-h:not(.ion-color),.item-fill-outline.ion-focused.ion-color.label-floating.sc-ion-label-md-h:not(.ion-color),.item-fill-outline.ion-focused.ion-color .label-floating.sc-ion-label-md-h:not(.ion-color),.item-fill-solid.item-has-focus.ion-color.label-stacked.sc-ion-label-md-h:not(.ion-color),.item-fill-solid.item-has-focus.ion-color .label-stacked.sc-ion-label-md-h:not(.ion-color),.item-fill-solid.item-has-focus.ion-color.label-floating.sc-ion-label-md-h:not(.ion-color),.item-fill-solid.item-has-focus.ion-color .label-floating.sc-ion-label-md-h:not(.ion-color),.item-fill-outline.item-has-focus.ion-color.label-stacked.sc-ion-label-md-h:not(.ion-color),.item-fill-outline.item-has-focus.ion-color .label-stacked.sc-ion-label-md-h:not(.ion-color),.item-fill-outline.item-has-focus.ion-color.label-floating.sc-ion-label-md-h:not(.ion-color),.item-fill-outline.item-has-focus.ion-color .label-floating.sc-ion-label-md-h:not(.ion-color){color:var(--ion-color-base)}.ion-invalid.ion-touched.label-stacked.sc-ion-label-md-h:not(.ion-color),.ion-invalid.ion-touched .label-stacked.sc-ion-label-md-h:not(.ion-color),.ion-invalid.ion-touched.label-floating.sc-ion-label-md-h:not(.ion-color),.ion-invalid.ion-touched .label-floating.sc-ion-label-md-h:not(.ion-color){color:var(--highlight-color-invalid)}.sc-ion-label-md-s h1{margin-left:0;margin-right:0;margin-top:0;margin-bottom:2px;font-size:24px;font-weight:normal}.sc-ion-label-md-s h2{margin-left:0;margin-right:0;margin-top:2px;margin-bottom:2px;font-size:16px;font-weight:normal}.sc-ion-label-md-s h3,.sc-ion-label-md-s h4,.sc-ion-label-md-s h5,.sc-ion-label-md-s h6{margin-left:0;margin-right:0;margin-top:2px;margin-bottom:2px;font-size:14px;font-weight:normal;line-height:normal}.sc-ion-label-md-s p{margin-left:0;margin-right:0;margin-top:0;margin-bottom:2px;font-size:14px;line-height:20px;text-overflow:inherit;overflow:inherit}.sc-ion-label-md-s>p{color:var(--ion-color-step-600, #666666)}.sc-ion-label-md-h.in-item-color.sc-ion-label-md-s>p{color:inherit}";
19542
+ const labelMdCss = ".item.sc-ion-label-md-h,.item .sc-ion-label-md-h{--color:initial;display:block;color:var(--color);font-family:var(--ion-font-family, inherit);font-size:inherit;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box}.ion-color.sc-ion-label-md-h{color:var(--ion-color-base)}.ion-text-wrap.sc-ion-label-md-h{white-space:normal}.item-interactive-disabled.sc-ion-label-md-h:not(.item-multiple-inputs),.item-interactive-disabled:not(.item-multiple-inputs) .sc-ion-label-md-h{cursor:default;opacity:0.3;pointer-events:none}.item-input.sc-ion-label-md-h,.item-input .sc-ion-label-md-h{-ms-flex:initial;flex:initial;max-width:200px;pointer-events:none}.item-textarea.sc-ion-label-md-h,.item-textarea .sc-ion-label-md-h{-ms-flex-item-align:baseline;align-self:baseline}.label-fixed.sc-ion-label-md-h{-ms-flex:0 0 100px;flex:0 0 100px;width:100px;min-width:100px;max-width:200px}.label-stacked.sc-ion-label-md-h,.label-floating.sc-ion-label-md-h{margin-bottom:0;-ms-flex-item-align:stretch;align-self:stretch;width:auto;max-width:100%}.label-no-animate.label-floating.sc-ion-label-md-h{-webkit-transition:none;transition:none}.sc-ion-label-md-s h1,.sc-ion-label-md-s h2,.sc-ion-label-md-s h3,.sc-ion-label-md-s h4,.sc-ion-label-md-s h5,.sc-ion-label-md-s h6{text-overflow:inherit;overflow:inherit}.ion-text-wrap.sc-ion-label-md-h{line-height:1.5}.label-stacked.sc-ion-label-md-h,.label-floating.sc-ion-label-md-h{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-transform-origin:top left;transform-origin:top left}.label-stacked.label-rtl.sc-ion-label-md-h,.label-floating.label-rtl.sc-ion-label-md-h{-webkit-transform-origin:top right;transform-origin:top right}.label-stacked.sc-ion-label-md-h{-webkit-transform:translateY(50%) scale(0.75);transform:translateY(50%) scale(0.75);-webkit-transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1)}.label-floating.sc-ion-label-md-h{-webkit-transform:translateY(96%);transform:translateY(96%);-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)}.ion-focused.label-floating.sc-ion-label-md-h,.ion-focused .label-floating.sc-ion-label-md-h,.item-has-focus.label-floating.sc-ion-label-md-h,.item-has-focus .label-floating.sc-ion-label-md-h,.item-has-placeholder.sc-ion-label-md-h:not(.item-input).label-floating,.item-has-placeholder:not(.item-input) .label-floating.sc-ion-label-md-h,.item-has-value.label-floating.sc-ion-label-md-h,.item-has-value .label-floating.sc-ion-label-md-h{-webkit-transform:translateY(50%) scale(0.75);transform:translateY(50%) scale(0.75)}.item-fill-outline.ion-focused.label-floating.sc-ion-label-md-h,.item-fill-outline.ion-focused .label-floating.sc-ion-label-md-h,.item-fill-outline.item-has-focus.label-floating.sc-ion-label-md-h,.item-fill-outline.item-has-focus .label-floating.sc-ion-label-md-h,.item-fill-outline.item-has-placeholder.sc-ion-label-md-h:not(.item-input).label-floating,.item-fill-outline.item-has-placeholder:not(.item-input) .label-floating.sc-ion-label-md-h,.item-fill-outline.item-has-value.label-floating.sc-ion-label-md-h,.item-fill-outline.item-has-value .label-floating.sc-ion-label-md-h{-webkit-transform:translateY(-6px) scale(0.75);transform:translateY(-6px) scale(0.75);position:relative;max-width:-webkit-min-content;max-width:-moz-min-content;max-width:min-content;background-color:var(--ion-item-background, var(--ion-background-color, #fff));overflow:visible;z-index:3}.item-fill-outline.ion-focused.label-floating.sc-ion-label-md-h::before,.item-fill-outline.ion-focused .label-floating.sc-ion-label-md-h::before,.item-fill-outline.ion-focused.label-floating.sc-ion-label-md-h::after,.item-fill-outline.ion-focused .label-floating.sc-ion-label-md-h::after,.item-fill-outline.item-has-focus.label-floating.sc-ion-label-md-h::before,.item-fill-outline.item-has-focus .label-floating.sc-ion-label-md-h::before,.item-fill-outline.item-has-focus.label-floating.sc-ion-label-md-h::after,.item-fill-outline.item-has-focus .label-floating.sc-ion-label-md-h::after,.item-fill-outline.item-has-placeholder.sc-ion-label-md-h:not(.item-input).label-floating::before,.item-fill-outline.item-has-placeholder:not(.item-input) .label-floating.sc-ion-label-md-h::before,.item-fill-outline.item-has-placeholder.sc-ion-label-md-h:not(.item-input).label-floating::after,.item-fill-outline.item-has-placeholder:not(.item-input) .label-floating.sc-ion-label-md-h::after,.item-fill-outline.item-has-value.label-floating.sc-ion-label-md-h::before,.item-fill-outline.item-has-value .label-floating.sc-ion-label-md-h::before,.item-fill-outline.item-has-value.label-floating.sc-ion-label-md-h::after,.item-fill-outline.item-has-value .label-floating.sc-ion-label-md-h::after{position:absolute;width:4px;height:100%;background-color:var(--ion-item-background, var(--ion-background-color, #fff));content:\"\"}.item-fill-outline.ion-focused.label-floating.sc-ion-label-md-h::before,.item-fill-outline.ion-focused .label-floating.sc-ion-label-md-h::before,.item-fill-outline.item-has-focus.label-floating.sc-ion-label-md-h::before,.item-fill-outline.item-has-focus .label-floating.sc-ion-label-md-h::before,.item-fill-outline.item-has-placeholder.sc-ion-label-md-h:not(.item-input).label-floating::before,.item-fill-outline.item-has-placeholder:not(.item-input) .label-floating.sc-ion-label-md-h::before,.item-fill-outline.item-has-value.label-floating.sc-ion-label-md-h::before,.item-fill-outline.item-has-value .label-floating.sc-ion-label-md-h::before{left:calc(-1 * 4px)}.item-fill-outline.ion-focused.label-floating.sc-ion-label-md-h::after,.item-fill-outline.ion-focused .label-floating.sc-ion-label-md-h::after,.item-fill-outline.item-has-focus.label-floating.sc-ion-label-md-h::after,.item-fill-outline.item-has-focus .label-floating.sc-ion-label-md-h::after,.item-fill-outline.item-has-placeholder.sc-ion-label-md-h:not(.item-input).label-floating::after,.item-fill-outline.item-has-placeholder:not(.item-input) .label-floating.sc-ion-label-md-h::after,.item-fill-outline.item-has-value.label-floating.sc-ion-label-md-h::after,.item-fill-outline.item-has-value .label-floating.sc-ion-label-md-h::after{right:calc(-1 * 4px)}.item-fill-outline.ion-focused.item-has-start-slot.label-floating.sc-ion-label-md-h,.item-fill-outline.ion-focused.item-has-start-slot .label-floating.sc-ion-label-md-h,.item-fill-outline.item-has-focus.item-has-start-slot.label-floating.sc-ion-label-md-h,.item-fill-outline.item-has-focus.item-has-start-slot .label-floating.sc-ion-label-md-h,.item-fill-outline.item-has-placeholder.sc-ion-label-md-h:not(.item-input).item-has-start-slot.label-floating,.item-fill-outline.item-has-placeholder:not(.item-input).item-has-start-slot .label-floating.sc-ion-label-md-h,.item-fill-outline.item-has-value.item-has-start-slot.label-floating.sc-ion-label-md-h,.item-fill-outline.item-has-value.item-has-start-slot .label-floating.sc-ion-label-md-h{-webkit-transform:translateX(-32px) translateY(-6px) scale(0.75);transform:translateX(-32px) translateY(-6px) scale(0.75)}.item-fill-outline.ion-focused.item-has-start-slot.label-floating.label-rtl.sc-ion-label-md-h,.item-fill-outline.ion-focused.item-has-start-slot .label-floating.label-rtl.sc-ion-label-md-h,.item-fill-outline.item-has-focus.item-has-start-slot.label-floating.label-rtl.sc-ion-label-md-h,.item-fill-outline.item-has-focus.item-has-start-slot .label-floating.label-rtl.sc-ion-label-md-h,.item-fill-outline.item-has-placeholder.sc-ion-label-md-h:not(.item-input).item-has-start-slot.label-floating.label-rtl,.item-fill-outline.item-has-placeholder:not(.item-input).item-has-start-slot .label-floating.label-rtl.sc-ion-label-md-h,.item-fill-outline.item-has-value.item-has-start-slot.label-floating.label-rtl.sc-ion-label-md-h,.item-fill-outline.item-has-value.item-has-start-slot .label-floating.label-rtl.sc-ion-label-md-h{-webkit-transform:translateX(calc(-1 * -32px)) translateY(-6px) scale(0.75);transform:translateX(calc(-1 * -32px)) translateY(-6px) scale(0.75)}.ion-focused.label-stacked.sc-ion-label-md-h:not(.ion-color),.ion-focused .label-stacked.sc-ion-label-md-h:not(.ion-color),.ion-focused.label-floating.sc-ion-label-md-h:not(.ion-color),.ion-focused .label-floating.sc-ion-label-md-h:not(.ion-color),.item-has-focus.label-stacked.sc-ion-label-md-h:not(.ion-color),.item-has-focus .label-stacked.sc-ion-label-md-h:not(.ion-color),.item-has-focus.label-floating.sc-ion-label-md-h:not(.ion-color),.item-has-focus .label-floating.sc-ion-label-md-h:not(.ion-color){color:var(--ion-color-primary, #3880ff)}.ion-focused.ion-color.label-stacked.sc-ion-label-md-h:not(.ion-color),.ion-focused.ion-color .label-stacked.sc-ion-label-md-h:not(.ion-color),.ion-focused.ion-color.label-floating.sc-ion-label-md-h:not(.ion-color),.ion-focused.ion-color .label-floating.sc-ion-label-md-h:not(.ion-color),.item-has-focus.ion-color.label-stacked.sc-ion-label-md-h:not(.ion-color),.item-has-focus.ion-color .label-stacked.sc-ion-label-md-h:not(.ion-color),.item-has-focus.ion-color.label-floating.sc-ion-label-md-h:not(.ion-color),.item-has-focus.ion-color .label-floating.sc-ion-label-md-h:not(.ion-color){color:var(--ion-color-contrast)}.item-fill-solid.ion-focused.ion-color.label-stacked.sc-ion-label-md-h:not(.ion-color),.item-fill-solid.ion-focused.ion-color .label-stacked.sc-ion-label-md-h:not(.ion-color),.item-fill-solid.ion-focused.ion-color.label-floating.sc-ion-label-md-h:not(.ion-color),.item-fill-solid.ion-focused.ion-color .label-floating.sc-ion-label-md-h:not(.ion-color),.item-fill-outline.ion-focused.ion-color.label-stacked.sc-ion-label-md-h:not(.ion-color),.item-fill-outline.ion-focused.ion-color .label-stacked.sc-ion-label-md-h:not(.ion-color),.item-fill-outline.ion-focused.ion-color.label-floating.sc-ion-label-md-h:not(.ion-color),.item-fill-outline.ion-focused.ion-color .label-floating.sc-ion-label-md-h:not(.ion-color),.item-fill-solid.item-has-focus.ion-color.label-stacked.sc-ion-label-md-h:not(.ion-color),.item-fill-solid.item-has-focus.ion-color .label-stacked.sc-ion-label-md-h:not(.ion-color),.item-fill-solid.item-has-focus.ion-color.label-floating.sc-ion-label-md-h:not(.ion-color),.item-fill-solid.item-has-focus.ion-color .label-floating.sc-ion-label-md-h:not(.ion-color),.item-fill-outline.item-has-focus.ion-color.label-stacked.sc-ion-label-md-h:not(.ion-color),.item-fill-outline.item-has-focus.ion-color .label-stacked.sc-ion-label-md-h:not(.ion-color),.item-fill-outline.item-has-focus.ion-color.label-floating.sc-ion-label-md-h:not(.ion-color),.item-fill-outline.item-has-focus.ion-color .label-floating.sc-ion-label-md-h:not(.ion-color){color:var(--ion-color-base)}.ion-invalid.ion-touched.label-stacked.sc-ion-label-md-h:not(.ion-color),.ion-invalid.ion-touched .label-stacked.sc-ion-label-md-h:not(.ion-color),.ion-invalid.ion-touched.label-floating.sc-ion-label-md-h:not(.ion-color),.ion-invalid.ion-touched .label-floating.sc-ion-label-md-h:not(.ion-color){color:var(--highlight-color-invalid)}.sc-ion-label-md-s h1{margin-left:0;margin-right:0;margin-top:0;margin-bottom:2px;font-size:24px;font-weight:normal}.sc-ion-label-md-s h2{margin-left:0;margin-right:0;margin-top:2px;margin-bottom:2px;font-size:16px;font-weight:normal}.sc-ion-label-md-s h3,.sc-ion-label-md-s h4,.sc-ion-label-md-s h5,.sc-ion-label-md-s h6{margin-left:0;margin-right:0;margin-top:2px;margin-bottom:2px;font-size:14px;font-weight:normal;line-height:normal}.sc-ion-label-md-s p{margin-left:0;margin-right:0;margin-top:0;margin-bottom:2px;font-size:14px;line-height:20px;text-overflow:inherit;overflow:inherit}.sc-ion-label-md-s>p{color:var(--ion-color-step-600, #666666)}.sc-ion-label-md-h.in-item-color.sc-ion-label-md-s>p{color:inherit}";
19508
19543
 
19509
19544
  /**
19510
19545
  * @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
@@ -19794,6 +19829,7 @@ class Loading {
19794
19829
  this.willDismissShorthand = createEvent(this, "willDismiss", 7);
19795
19830
  this.didDismissShorthand = createEvent(this, "didDismiss", 7);
19796
19831
  this.delegateController = createDelegateController(this);
19832
+ this.lockController = createLockController();
19797
19833
  this.triggerController = createTriggerController();
19798
19834
  this.customHTMLEnabled = config.get('innerHTMLTemplatesEnabled', ENABLE_HTML_CONTENT_DEFAULT);
19799
19835
  this.presented = false;
@@ -19859,24 +19895,13 @@ class Loading {
19859
19895
  * Present the loading overlay after it has been created.
19860
19896
  */
19861
19897
  async present() {
19862
- /**
19863
- * When using an inline loading indicator
19864
- * and dismissing a loading indicator it is possible to
19865
- * quickly present the loading indicator while it is
19866
- * dismissing. We need to await any current
19867
- * transition to allow the dismiss to finish
19868
- * before presenting again.
19869
- */
19870
- if (this.currentTransition !== undefined) {
19871
- await this.currentTransition;
19872
- }
19898
+ const unlock = await this.lockController.lock();
19873
19899
  await this.delegateController.attachViewToDom();
19874
- this.currentTransition = present(this, 'loadingEnter', iosEnterAnimation$4, mdEnterAnimation$3);
19875
- await this.currentTransition;
19900
+ await present(this, 'loadingEnter', iosEnterAnimation$4, mdEnterAnimation$3);
19876
19901
  if (this.duration > 0) {
19877
19902
  this.durationTimeout = setTimeout(() => this.dismiss(), this.duration + 10);
19878
19903
  }
19879
- this.currentTransition = undefined;
19904
+ unlock();
19880
19905
  }
19881
19906
  /**
19882
19907
  * Dismiss the loading overlay after it has been presented.
@@ -19888,14 +19913,15 @@ class Loading {
19888
19913
  * Some examples include: ``"cancel"`, `"destructive"`, "selected"`, and `"backdrop"`.
19889
19914
  */
19890
19915
  async dismiss(data, role) {
19916
+ const unlock = await this.lockController.lock();
19891
19917
  if (this.durationTimeout) {
19892
19918
  clearTimeout(this.durationTimeout);
19893
19919
  }
19894
- this.currentTransition = dismiss(this, data, role, 'loadingLeave', iosLeaveAnimation$4, mdLeaveAnimation$3);
19895
- const dismissed = await this.currentTransition;
19920
+ const dismissed = await dismiss(this, data, role, 'loadingLeave', iosLeaveAnimation$4, mdLeaveAnimation$3);
19896
19921
  if (dismissed) {
19897
19922
  this.delegateController.removeViewFromDom();
19898
19923
  }
19924
+ unlock();
19899
19925
  return dismissed;
19900
19926
  }
19901
19927
  /**
@@ -22396,6 +22422,7 @@ class Modal {
22396
22422
  this.willDismissShorthand = createEvent(this, "willDismiss", 7);
22397
22423
  this.didDismissShorthand = createEvent(this, "didDismiss", 7);
22398
22424
  this.ionMount = createEvent(this, "ionMount", 7);
22425
+ this.lockController = createLockController();
22399
22426
  this.triggerController = createTriggerController();
22400
22427
  this.coreDelegate = CoreDelegate();
22401
22428
  this.isSheetModal = false;
@@ -22560,29 +22587,25 @@ class Modal {
22560
22587
  * Present the modal overlay after it has been created.
22561
22588
  */
22562
22589
  async present() {
22590
+ const unlock = await this.lockController.lock();
22563
22591
  if (this.presented) {
22592
+ unlock();
22564
22593
  return;
22565
22594
  }
22566
22595
  const { presentingElement, el } = this;
22567
- /**
22568
- * When using an inline modal
22569
- * and dismissing a modal it is possible to
22570
- * quickly present the modal while it is
22571
- * dismissing. We need to await any current
22572
- * transition to allow the dismiss to finish
22573
- * before presenting again.
22574
- */
22575
- if (this.currentTransition !== undefined) {
22576
- await this.currentTransition;
22577
- }
22578
22596
  /**
22579
22597
  * If the modal is presented multiple times (inline modals), we
22580
22598
  * need to reset the current breakpoint to the initial breakpoint.
22581
22599
  */
22582
22600
  this.currentBreakpoint = this.initialBreakpoint;
22583
22601
  const { inline, delegate } = this.getDelegate(true);
22584
- this.usersElement = await attachComponent(delegate, el, this.component, ['ion-page'], this.componentProps, inline);
22602
+ /**
22603
+ * Emit ionMount so JS Frameworks have an opportunity
22604
+ * to add the child component to the DOM. The child
22605
+ * component will be assigned to this.usersElement below.
22606
+ */
22585
22607
  this.ionMount.emit();
22608
+ this.usersElement = await attachComponent(delegate, el, this.component, ['ion-page'], this.componentProps, inline);
22586
22609
  /**
22587
22610
  * When using the lazy loaded build of Stencil, we need to wait
22588
22611
  * for every Stencil component instance to be ready before presenting
@@ -22606,7 +22629,7 @@ class Modal {
22606
22629
  await waitForMount();
22607
22630
  }
22608
22631
  writeTask(() => this.el.classList.add('show-modal'));
22609
- this.currentTransition = present(this, 'modalEnter', iosEnterAnimation$3, mdEnterAnimation$2, {
22632
+ await present(this, 'modalEnter', iosEnterAnimation$3, mdEnterAnimation$2, {
22610
22633
  presentingEl: presentingElement,
22611
22634
  currentBreakpoint: this.initialBreakpoint,
22612
22635
  backdropBreakpoint: this.backdropBreakpoint,
@@ -22653,14 +22676,13 @@ class Modal {
22653
22676
  this.statusBarStyle = await StatusBar.getStyle();
22654
22677
  setCardStatusBarDark();
22655
22678
  }
22656
- await this.currentTransition;
22657
22679
  if (this.isSheetModal) {
22658
22680
  this.initSheetGesture();
22659
22681
  }
22660
22682
  else if (hasCardModal) {
22661
22683
  this.initSwipeToClose();
22662
22684
  }
22663
- this.currentTransition = undefined;
22685
+ unlock();
22664
22686
  }
22665
22687
  initSwipeToClose() {
22666
22688
  var _a;
@@ -22750,12 +22772,19 @@ class Modal {
22750
22772
  if (this.gestureAnimationDismissing && role !== GESTURE) {
22751
22773
  return false;
22752
22774
  }
22775
+ /**
22776
+ * Because the canDismiss check below is async,
22777
+ * we need to claim a lock before the check happens,
22778
+ * in case the dismiss transition does run.
22779
+ */
22780
+ const unlock = await this.lockController.lock();
22753
22781
  /**
22754
22782
  * If a canDismiss handler is responsible
22755
22783
  * for calling the dismiss method, we should
22756
22784
  * not run the canDismiss check again.
22757
22785
  */
22758
22786
  if (role !== 'handler' && !(await this.checkCanDismiss(data, role))) {
22787
+ unlock();
22759
22788
  return false;
22760
22789
  }
22761
22790
  const { presentingElement } = this;
@@ -22773,24 +22802,12 @@ class Modal {
22773
22802
  window.removeEventListener(KEYBOARD_DID_OPEN, this.keyboardOpenCallback);
22774
22803
  this.keyboardOpenCallback = undefined;
22775
22804
  }
22776
- /**
22777
- * When using an inline modal
22778
- * and presenting a modal it is possible to
22779
- * quickly dismiss the modal while it is
22780
- * presenting. We need to await any current
22781
- * transition to allow the present to finish
22782
- * before dismissing again.
22783
- */
22784
- if (this.currentTransition !== undefined) {
22785
- await this.currentTransition;
22786
- }
22787
22805
  const enteringAnimation = activeAnimations.get(this) || [];
22788
- this.currentTransition = dismiss(this, data, role, 'modalLeave', iosLeaveAnimation$3, mdLeaveAnimation$2, {
22806
+ const dismissed = await dismiss(this, data, role, 'modalLeave', iosLeaveAnimation$3, mdLeaveAnimation$2, {
22789
22807
  presentingEl: presentingElement,
22790
22808
  currentBreakpoint: (_a = this.currentBreakpoint) !== null && _a !== void 0 ? _a : this.initialBreakpoint,
22791
22809
  backdropBreakpoint: this.backdropBreakpoint,
22792
22810
  });
22793
- const dismissed = await this.currentTransition;
22794
22811
  if (dismissed) {
22795
22812
  const { delegate } = this.getDelegate();
22796
22813
  await detachComponent(delegate, this.usersElement);
@@ -22804,8 +22821,8 @@ class Modal {
22804
22821
  enteringAnimation.forEach((ani) => ani.destroy());
22805
22822
  }
22806
22823
  this.currentBreakpoint = undefined;
22807
- this.currentTransition = undefined;
22808
22824
  this.animation = undefined;
22825
+ unlock();
22809
22826
  return dismissed;
22810
22827
  }
22811
22828
  /**
@@ -24024,6 +24041,7 @@ class Picker {
24024
24041
  this.willDismissShorthand = createEvent(this, "willDismiss", 7);
24025
24042
  this.didDismissShorthand = createEvent(this, "didDismiss", 7);
24026
24043
  this.delegateController = createDelegateController(this);
24044
+ this.lockController = createLockController();
24027
24045
  this.triggerController = createTriggerController();
24028
24046
  this.onBackdropTap = () => {
24029
24047
  this.dismiss(undefined, BACKDROP);
@@ -24090,24 +24108,13 @@ class Picker {
24090
24108
  * Present the picker overlay after it has been created.
24091
24109
  */
24092
24110
  async present() {
24093
- /**
24094
- * When using an inline picker
24095
- * and dismissing an picker it is possible to
24096
- * quickly present the picker while it is
24097
- * dismissing. We need to await any current
24098
- * transition to allow the dismiss to finish
24099
- * before presenting again.
24100
- */
24101
- if (this.currentTransition !== undefined) {
24102
- await this.currentTransition;
24103
- }
24111
+ const unlock = await this.lockController.lock();
24104
24112
  await this.delegateController.attachViewToDom();
24105
- this.currentTransition = present(this, 'pickerEnter', iosEnterAnimation$2, iosEnterAnimation$2, undefined);
24106
- await this.currentTransition;
24107
- this.currentTransition = undefined;
24113
+ await present(this, 'pickerEnter', iosEnterAnimation$2, iosEnterAnimation$2, undefined);
24108
24114
  if (this.duration > 0) {
24109
24115
  this.durationTimeout = setTimeout(() => this.dismiss(), this.duration);
24110
24116
  }
24117
+ unlock();
24111
24118
  }
24112
24119
  /**
24113
24120
  * Dismiss the picker overlay after it has been presented.
@@ -24119,14 +24126,15 @@ class Picker {
24119
24126
  * Some examples include: ``"cancel"`, `"destructive"`, "selected"`, and `"backdrop"`.
24120
24127
  */
24121
24128
  async dismiss(data, role) {
24129
+ const unlock = await this.lockController.lock();
24122
24130
  if (this.durationTimeout) {
24123
24131
  clearTimeout(this.durationTimeout);
24124
24132
  }
24125
- this.currentTransition = dismiss(this, data, role, 'pickerLeave', iosLeaveAnimation$2, iosLeaveAnimation$2);
24126
- const dismissed = await this.currentTransition;
24133
+ const dismissed = await dismiss(this, data, role, 'pickerLeave', iosLeaveAnimation$2, iosLeaveAnimation$2);
24127
24134
  if (dismissed) {
24128
24135
  this.delegateController.removeViewFromDom();
24129
24136
  }
24137
+ unlock();
24130
24138
  return dismissed;
24131
24139
  }
24132
24140
  /**
@@ -26447,6 +26455,7 @@ class Popover {
26447
26455
  this.ionMount = createEvent(this, "ionMount", 7);
26448
26456
  this.parentPopover = null;
26449
26457
  this.coreDelegate = CoreDelegate();
26458
+ this.lockController = createLockController();
26450
26459
  this.inline = false;
26451
26460
  this.focusDescendantOnPresent = false;
26452
26461
  this.onBackdropTap = () => {
@@ -26620,28 +26629,24 @@ class Popover {
26620
26629
  * was dispatched.
26621
26630
  */
26622
26631
  async present(event) {
26632
+ const unlock = await this.lockController.lock();
26623
26633
  if (this.presented) {
26634
+ unlock();
26624
26635
  return;
26625
26636
  }
26626
- /**
26627
- * When using an inline popover
26628
- * and dismissing a popover it is possible to
26629
- * quickly present the popover while it is
26630
- * dismissing. We need to await any current
26631
- * transition to allow the dismiss to finish
26632
- * before presenting again.
26633
- */
26634
- if (this.currentTransition !== undefined) {
26635
- await this.currentTransition;
26636
- }
26637
26637
  const { el } = this;
26638
26638
  const { inline, delegate } = this.getDelegate(true);
26639
+ /**
26640
+ * Emit ionMount so JS Frameworks have an opportunity
26641
+ * to add the child component to the DOM. The child
26642
+ * component will be assigned to this.usersElement below.
26643
+ */
26644
+ this.ionMount.emit();
26639
26645
  this.usersElement = await attachComponent(delegate, el, this.component, ['popover-viewport'], this.componentProps, inline);
26640
26646
  if (!this.keyboardEvents) {
26641
26647
  this.configureKeyboardInteraction();
26642
26648
  }
26643
26649
  this.configureDismissInteraction();
26644
- this.ionMount.emit();
26645
26650
  /**
26646
26651
  * When using the lazy loaded build of Stencil, we need to wait
26647
26652
  * for every Stencil component instance to be ready before presenting
@@ -26664,7 +26669,7 @@ class Popover {
26664
26669
  else if (!this.keepContentsMounted) {
26665
26670
  await waitForMount();
26666
26671
  }
26667
- this.currentTransition = present(this, 'popoverEnter', iosEnterAnimation$1, mdEnterAnimation$1, {
26672
+ await present(this, 'popoverEnter', iosEnterAnimation$1, mdEnterAnimation$1, {
26668
26673
  event: event || this.event,
26669
26674
  size: this.size,
26670
26675
  trigger: this.triggerEl,
@@ -26672,8 +26677,6 @@ class Popover {
26672
26677
  side: this.side,
26673
26678
  align: this.alignment,
26674
26679
  });
26675
- await this.currentTransition;
26676
- this.currentTransition = undefined;
26677
26680
  /**
26678
26681
  * If popover is nested and was
26679
26682
  * presented using the "Right" arrow key,
@@ -26683,6 +26686,7 @@ class Popover {
26683
26686
  if (this.focusDescendantOnPresent) {
26684
26687
  focusFirstDescendant(this.el, this.el);
26685
26688
  }
26689
+ unlock();
26686
26690
  }
26687
26691
  /**
26688
26692
  * Dismiss the popover overlay after it has been presented.
@@ -26693,23 +26697,12 @@ class Popover {
26693
26697
  * a parent popover if this popover is nested. Defaults to `true`.
26694
26698
  */
26695
26699
  async dismiss(data, role, dismissParentPopover = true) {
26696
- /**
26697
- * When using an inline popover
26698
- * and presenting a popover it is possible to
26699
- * quickly dismiss the popover while it is
26700
- * presenting. We need to await any current
26701
- * transition to allow the present to finish
26702
- * before dismissing again.
26703
- */
26704
- if (this.currentTransition !== undefined) {
26705
- await this.currentTransition;
26706
- }
26700
+ const unlock = await this.lockController.lock();
26707
26701
  const { destroyKeyboardInteraction, destroyDismissInteraction } = this;
26708
26702
  if (dismissParentPopover && this.parentPopover) {
26709
26703
  this.parentPopover.dismiss(data, role, dismissParentPopover);
26710
26704
  }
26711
- this.currentTransition = dismiss(this, data, role, 'popoverLeave', iosLeaveAnimation$1, mdLeaveAnimation$1, this.event);
26712
- const shouldDismiss = await this.currentTransition;
26705
+ const shouldDismiss = await dismiss(this, data, role, 'popoverLeave', iosLeaveAnimation$1, mdLeaveAnimation$1, this.event);
26713
26706
  if (shouldDismiss) {
26714
26707
  if (destroyKeyboardInteraction) {
26715
26708
  destroyKeyboardInteraction();
@@ -26727,7 +26720,7 @@ class Popover {
26727
26720
  const { delegate } = this.getDelegate();
26728
26721
  await detachComponent(delegate, this.usersElement);
26729
26722
  }
26730
- this.currentTransition = undefined;
26723
+ unlock();
26731
26724
  return shouldDismiss;
26732
26725
  }
26733
26726
  /**
@@ -30413,6 +30406,7 @@ class RouterOutlet {
30413
30406
  this.ionNavDidChange.emit();
30414
30407
  return true;
30415
30408
  }
30409
+ // TODO: FW-5048 - Remove this code in favor of using lock controller from utils
30416
30410
  async lock() {
30417
30411
  const p = this.waitPromise;
30418
30412
  let resolve;
@@ -33471,6 +33465,7 @@ class Toast {
33471
33465
  this.willDismissShorthand = createEvent(this, "willDismiss", 7);
33472
33466
  this.didDismissShorthand = createEvent(this, "didDismiss", 7);
33473
33467
  this.delegateController = createDelegateController(this);
33468
+ this.lockController = createLockController();
33474
33469
  this.triggerController = createTriggerController();
33475
33470
  this.customHTMLEnabled = config.get('innerHTMLTemplatesEnabled', ENABLE_HTML_CONTENT_DEFAULT);
33476
33471
  this.presented = false;
@@ -33540,30 +33535,19 @@ class Toast {
33540
33535
  * Present the toast overlay after it has been created.
33541
33536
  */
33542
33537
  async present() {
33543
- /**
33544
- * When using an inline toast
33545
- * and dismissing a toast it is possible to
33546
- * quickly present the toast while it is
33547
- * dismissing. We need to await any current
33548
- * transition to allow the dismiss to finish
33549
- * before presenting again.
33550
- */
33551
- if (this.currentTransition !== undefined) {
33552
- await this.currentTransition;
33553
- }
33538
+ const unlock = await this.lockController.lock();
33554
33539
  await this.delegateController.attachViewToDom();
33555
- this.currentTransition = present(this, 'toastEnter', iosEnterAnimation, mdEnterAnimation, this.position);
33556
- await this.currentTransition;
33540
+ await present(this, 'toastEnter', iosEnterAnimation, mdEnterAnimation, this.position);
33557
33541
  /**
33558
33542
  * Content is revealed to screen readers after
33559
33543
  * the transition to avoid jank since this
33560
33544
  * state updates will cause a re-render.
33561
33545
  */
33562
33546
  this.revealContentToScreenReader = true;
33563
- this.currentTransition = undefined;
33564
33547
  if (this.duration > 0) {
33565
33548
  this.durationTimeout = setTimeout(() => this.dismiss(undefined, 'timeout'), this.duration);
33566
33549
  }
33550
+ unlock();
33567
33551
  }
33568
33552
  /**
33569
33553
  * Dismiss the toast overlay after it has been presented.
@@ -33575,15 +33559,16 @@ class Toast {
33575
33559
  * Some examples include: ``"cancel"`, `"destructive"`, "selected"`, and `"backdrop"`.
33576
33560
  */
33577
33561
  async dismiss(data, role) {
33562
+ const unlock = await this.lockController.lock();
33578
33563
  if (this.durationTimeout) {
33579
33564
  clearTimeout(this.durationTimeout);
33580
33565
  }
33581
- this.currentTransition = dismiss(this, data, role, 'toastLeave', iosLeaveAnimation, mdLeaveAnimation, this.position);
33582
- const dismissed = await this.currentTransition;
33566
+ const dismissed = await dismiss(this, data, role, 'toastLeave', iosLeaveAnimation, mdLeaveAnimation, this.position);
33583
33567
  if (dismissed) {
33584
33568
  this.delegateController.removeViewFromDom();
33585
33569
  this.revealContentToScreenReader = false;
33586
33570
  }
33571
+ unlock();
33587
33572
  return dismissed;
33588
33573
  }
33589
33574
  /**