@ionic/core 8.7.18-dev.11771365900.125bf49c → 8.7.18-dev.11772037614.10c71570

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 (84) hide show
  1. package/components/ion-app.js +17 -12
  2. package/components/ion-content.js +1 -1
  3. package/components/ion-datetime.js +8 -5
  4. package/components/ion-fab-list.js +10 -3
  5. package/components/ion-img.js +11 -2
  6. package/components/ion-label.js +1 -1
  7. package/components/ion-modal.js +1 -1
  8. package/components/ion-popover.js +1 -1
  9. package/components/ion-radio-group.js +1 -1
  10. package/components/ion-searchbar.js +17 -6
  11. package/components/ion-select-modal.js +1 -1
  12. package/components/ion-select-popover.js +1 -1
  13. package/components/ion-select.js +7 -7
  14. package/components/{p-BnpDIASH.js → p-BANeLH_G.js} +2 -2
  15. package/components/{p-DRHwNkVo.js → p-C6dkQWq2.js} +152 -30
  16. package/components/{p-CJrGvZ1Z.js → p-CFZWrvIQ.js} +2 -2
  17. package/components/{p-CUfY9DTD.js → p-Cdm3dKWf.js} +8 -3
  18. package/components/{p-D3KEyQ8e.js → p-CslsoGzv.js} +2 -2
  19. package/components/{p-DPm73mCi.js → p-DGOrLIyS.js} +7 -3
  20. package/components/{p-IHgAGzvW.js → p-iyo0Toaz.js} +326 -17
  21. package/dist/cjs/ion-app_8.cjs.entry.js +22 -13
  22. package/dist/cjs/ion-datetime_3.cjs.entry.js +7 -4
  23. package/dist/cjs/ion-fab_3.cjs.entry.js +10 -3
  24. package/dist/cjs/ion-img.cjs.entry.js +11 -2
  25. package/dist/cjs/ion-item_8.cjs.entry.js +8 -3
  26. package/dist/cjs/ion-modal.cjs.entry.js +326 -17
  27. package/dist/cjs/ion-popover.cjs.entry.js +152 -30
  28. package/dist/cjs/ion-radio_2.cjs.entry.js +2 -2
  29. package/dist/cjs/ion-searchbar.cjs.entry.js +17 -6
  30. package/dist/collection/components/app/app.js +15 -10
  31. package/dist/collection/components/content/content.js +7 -3
  32. package/dist/collection/components/datetime/datetime.ios.css +2 -4
  33. package/dist/collection/components/datetime/datetime.js +6 -3
  34. package/dist/collection/components/fab-list/fab-list.js +10 -3
  35. package/dist/collection/components/img/img.js +11 -2
  36. package/dist/collection/components/label/label.js +8 -3
  37. package/dist/collection/components/modal/modal.ios.css +6 -5
  38. package/dist/collection/components/modal/modal.js +164 -15
  39. package/dist/collection/components/modal/modal.md.css +6 -5
  40. package/dist/collection/components/modal/safe-area-utils.js +165 -0
  41. package/dist/collection/components/popover/animations/ios.enter.js +33 -8
  42. package/dist/collection/components/popover/animations/md.enter.js +26 -6
  43. package/dist/collection/components/popover/utils.js +96 -19
  44. package/dist/collection/components/radio-group/radio-group.ios.css +0 -4
  45. package/dist/collection/components/radio-group/radio-group.md.css +0 -4
  46. package/dist/collection/components/searchbar/searchbar.js +17 -6
  47. package/dist/docs.json +1 -1
  48. package/dist/esm/ion-app_8.entry.js +24 -15
  49. package/dist/esm/ion-datetime_3.entry.js +7 -4
  50. package/dist/esm/ion-fab_3.entry.js +10 -3
  51. package/dist/esm/ion-img.entry.js +11 -2
  52. package/dist/esm/ion-item_8.entry.js +8 -3
  53. package/dist/esm/ion-modal.entry.js +326 -17
  54. package/dist/esm/ion-popover.entry.js +152 -30
  55. package/dist/esm/ion-radio_2.entry.js +2 -2
  56. package/dist/esm/ion-searchbar.entry.js +17 -6
  57. package/dist/ionic/ionic.esm.js +1 -1
  58. package/dist/ionic/{p-72af946b.entry.js → p-2ac254dc.entry.js} +1 -1
  59. package/dist/ionic/p-7cad388a.entry.js +4 -0
  60. package/dist/ionic/p-915b3e3d.entry.js +4 -0
  61. package/dist/ionic/p-9b6d46f2.entry.js +4 -0
  62. package/dist/ionic/{p-eaf3f5ff.entry.js → p-b0ebf9f8.entry.js} +1 -1
  63. package/dist/ionic/p-e4c57008.entry.js +4 -0
  64. package/dist/ionic/p-e5d6d0f0.entry.js +4 -0
  65. package/dist/ionic/p-f1dfee25.entry.js +4 -0
  66. package/dist/ionic/{p-6444c606.entry.js → p-f9f7b9db.entry.js} +1 -1
  67. package/dist/types/components/app/app.d.ts +3 -0
  68. package/dist/types/components/datetime/datetime.d.ts +1 -0
  69. package/dist/types/components/fab-list/fab-list.d.ts +2 -0
  70. package/dist/types/components/img/img.d.ts +2 -0
  71. package/dist/types/components/label/label.d.ts +2 -0
  72. package/dist/types/components/modal/modal.d.ts +35 -0
  73. package/dist/types/components/modal/safe-area-utils.d.ts +66 -0
  74. package/dist/types/components/popover/utils.d.ts +23 -1
  75. package/dist/types/components/searchbar/searchbar.d.ts +3 -0
  76. package/hydrate/index.js +554 -71
  77. package/hydrate/index.mjs +554 -71
  78. package/package.json +1 -1
  79. package/dist/ionic/p-01e27965.entry.js +0 -4
  80. package/dist/ionic/p-3ec563c1.entry.js +0 -4
  81. package/dist/ionic/p-42db6404.entry.js +0 -4
  82. package/dist/ionic/p-46d74291.entry.js +0 -4
  83. package/dist/ionic/p-bc293244.entry.js +0 -4
  84. package/dist/ionic/p-e338f669.entry.js +0 -4
@@ -2,6 +2,58 @@
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
4
  import { getElementRoot, raf } from "../../utils/helpers";
5
+ /**
6
+ * Shared per-frame cache for safe-area insets. Avoids creating a temporary
7
+ * DOM element and forcing a synchronous reflow on every call within the same
8
+ * frame (e.g., multiple popovers presenting simultaneously). Invalidated
9
+ * after the next animation frame so values stay fresh across orientation
10
+ * changes and viewport resizes.
11
+ */
12
+ let cachedInsets = null;
13
+ let cacheInvalidationScheduled = false;
14
+ /**
15
+ * Resolves the current --ion-safe-area-* CSS custom property values
16
+ * to actual pixel numbers. A temporary element is needed because
17
+ * getComputedStyle on :root returns the declared value of custom
18
+ * properties (e.g. "env(safe-area-inset-top)") rather than a
19
+ * resolved number. By assigning them to standard padding properties,
20
+ * the browser resolves the value.
21
+ *
22
+ * Results are cached for the current frame to avoid repeated reflows.
23
+ */
24
+ export const getSafeAreaInsets = (doc) => {
25
+ if (cachedInsets !== null) {
26
+ return cachedInsets;
27
+ }
28
+ if (doc.body === null) {
29
+ return { top: 0, bottom: 0, left: 0, right: 0 };
30
+ }
31
+ const el = doc.createElement('div');
32
+ el.style.cssText =
33
+ 'position:fixed;visibility:hidden;pointer-events:none;top:0;left:0;' +
34
+ 'padding-top:var(--ion-safe-area-top,0px);' +
35
+ 'padding-bottom:var(--ion-safe-area-bottom,0px);' +
36
+ 'padding-left:var(--ion-safe-area-left,0px);' +
37
+ 'padding-right:var(--ion-safe-area-right,0px);';
38
+ doc.body.appendChild(el);
39
+ const style = getComputedStyle(el);
40
+ const insets = {
41
+ top: parseFloat(style.paddingTop) || 0,
42
+ bottom: parseFloat(style.paddingBottom) || 0,
43
+ left: parseFloat(style.paddingLeft) || 0,
44
+ right: parseFloat(style.paddingRight) || 0,
45
+ };
46
+ el.remove();
47
+ cachedInsets = insets;
48
+ if (!cacheInvalidationScheduled) {
49
+ cacheInvalidationScheduled = true;
50
+ raf(() => {
51
+ cachedInsets = null;
52
+ cacheInvalidationScheduled = false;
53
+ });
54
+ }
55
+ return insets;
56
+ };
5
57
  /**
6
58
  * Returns the dimensions of the popover
7
59
  * arrow on `ios` mode. If arrow is disabled
@@ -639,8 +691,10 @@ const calculatePopoverCenterAlign = (side, triggerBoundingBox, contentWidth, con
639
691
  * Adjusts popover positioning coordinates
640
692
  * such that popover does not appear offscreen
641
693
  * or overlapping safe area bounds.
694
+ *
695
+ * @internal - This is not part of the public API.
642
696
  */
643
- export const calculateWindowAdjustment = (side, coordTop, coordLeft, bodyPadding, bodyWidth, bodyHeight, contentWidth, contentHeight, safeAreaMargin, contentOriginX, contentOriginY, triggerCoordinates, coordArrowTop = 0, coordArrowLeft = 0, arrowHeight = 0) => {
697
+ export const calculateWindowAdjustment = (side, coordTop, coordLeft, bodyPadding, bodyWidth, bodyHeight, contentWidth, contentHeight, safeArea, contentOriginX, contentOriginY, triggerCoordinates, coordArrowTop = 0, coordArrowLeft = 0, arrowHeight = 0) => {
644
698
  let arrowTop = coordArrowTop;
645
699
  const arrowLeft = coordArrowLeft;
646
700
  let left = coordLeft;
@@ -650,16 +704,19 @@ export const calculateWindowAdjustment = (side, coordTop, coordLeft, bodyPadding
650
704
  let originY = contentOriginY;
651
705
  let checkSafeAreaLeft = false;
652
706
  let checkSafeAreaRight = false;
707
+ let checkSafeAreaTop = false;
708
+ let checkSafeAreaBottom = false;
653
709
  const triggerTop = triggerCoordinates
654
710
  ? triggerCoordinates.top + triggerCoordinates.height
655
711
  : bodyHeight / 2 - contentHeight / 2;
656
712
  const triggerHeight = triggerCoordinates ? triggerCoordinates.height : 0;
657
713
  let addPopoverBottomClass = false;
714
+ const hideArrow = false;
658
715
  /**
659
716
  * Adjust popover so it does not
660
717
  * go off the left of the screen.
661
718
  */
662
- if (left < bodyPadding + safeAreaMargin) {
719
+ if (left < bodyPadding + safeArea.left) {
663
720
  left = bodyPadding;
664
721
  checkSafeAreaLeft = true;
665
722
  originX = 'left';
@@ -668,41 +725,58 @@ export const calculateWindowAdjustment = (side, coordTop, coordLeft, bodyPadding
668
725
  * go off the right of the screen.
669
726
  */
670
727
  }
671
- else if (contentWidth + bodyPadding + left + safeAreaMargin > bodyWidth) {
728
+ else if (contentWidth + bodyPadding + left + safeArea.right > bodyWidth) {
672
729
  checkSafeAreaRight = true;
673
730
  left = bodyWidth - contentWidth - bodyPadding;
674
731
  originX = 'right';
675
732
  }
676
733
  /**
677
734
  * Adjust popover so it does not
678
- * go off the top of the screen.
735
+ * go off the bottom of the screen
736
+ * or overlap the bottom safe area.
679
737
  * If popover is on the left or the right of
680
738
  * the trigger, then we should not adjust top
681
739
  * margins.
682
740
  */
683
- if (triggerTop + triggerHeight + contentHeight > bodyHeight && (side === 'top' || side === 'bottom')) {
684
- if (triggerTop - contentHeight > 0) {
741
+ if (triggerTop + triggerHeight + contentHeight > bodyHeight - safeArea.bottom &&
742
+ (side === 'top' || side === 'bottom')) {
743
+ /**
744
+ * Calculate where the popover top would be if flipped
745
+ * above the trigger. Check whether that position clears
746
+ * the top safe area with room for bodyPadding.
747
+ */
748
+ const idealFlipTop = triggerTop - contentHeight - triggerHeight - (arrowHeight - 1);
749
+ if (idealFlipTop >= safeArea.top + bodyPadding) {
685
750
  /**
686
- * While we strive to align the popover with the trigger
687
- * on smaller screens this is not always possible. As a result,
688
- * we adjust the popover up so that it does not hang
689
- * off the bottom of the screen. However, we do not want to move
690
- * the popover up so much that it goes off the top of the screen.
691
- *
692
- * We chose 12 here so that the popover position looks a bit nicer as
693
- * it is not right up against the edge of the screen.
751
+ * Popover fits above the trigger without overlapping
752
+ * the top safe area. Use the ideal position directly —
753
+ * no safe-area CSS vars needed since it clears both edges.
694
754
  */
695
- top = Math.max(12, triggerTop - contentHeight - triggerHeight - (arrowHeight - 1));
755
+ top = idealFlipTop;
696
756
  arrowTop = top + contentHeight;
697
757
  originY = 'bottom';
698
758
  addPopoverBottomClass = true;
699
- /**
700
- * If not enough room for popover to appear
701
- * above trigger, then cut it off.
702
- */
703
759
  }
704
760
  else {
761
+ /**
762
+ * Can't flip above the trigger. Constrain the bottom
763
+ * edge while keeping the top near the trigger. This
764
+ * creates a scrollable area anchored to the trigger.
765
+ */
705
766
  bottom = bodyPadding;
767
+ checkSafeAreaBottom = true;
768
+ /**
769
+ * When the trigger is near the bottom of the screen,
770
+ * the calculated top may be at or past the bottom
771
+ * constraint, leaving zero visible height. In that
772
+ * case, pull top up to the top safe area so the
773
+ * popover fills the available space between safe areas.
774
+ */
775
+ const bottomEdge = bodyHeight - safeArea.bottom - bodyPadding;
776
+ if (top >= bottomEdge) {
777
+ top = safeArea.top + bodyPadding;
778
+ checkSafeAreaTop = true;
779
+ }
706
780
  }
707
781
  }
708
782
  return {
@@ -713,9 +787,12 @@ export const calculateWindowAdjustment = (side, coordTop, coordLeft, bodyPadding
713
787
  originY,
714
788
  checkSafeAreaLeft,
715
789
  checkSafeAreaRight,
790
+ checkSafeAreaTop,
791
+ checkSafeAreaBottom,
716
792
  arrowTop,
717
793
  arrowLeft,
718
794
  addPopoverBottomClass,
795
+ hideArrow,
719
796
  };
720
797
  };
721
798
  export const shouldShowArrow = (side, didAdjustBounds = false, ev, trigger) => {
@@ -112,10 +112,6 @@ ion-radio-group {
112
112
  vertical-align: top;
113
113
  }
114
114
 
115
- .radio-group-wrapper {
116
- display: inline;
117
- }
118
-
119
115
  .radio-group-top {
120
116
  line-height: 1.5;
121
117
  }
@@ -112,10 +112,6 @@ ion-radio-group {
112
112
  vertical-align: top;
113
113
  }
114
114
 
115
- .radio-group-wrapper {
116
- display: inline;
117
- }
118
-
119
115
  .radio-group-top {
120
116
  line-height: 1.5;
121
117
  }
@@ -96,11 +96,14 @@ export class Searchbar {
96
96
  * Clears the input field and triggers the control change.
97
97
  */
98
98
  this.onClearInput = async (shouldFocus) => {
99
+ if (this.clearTimeout) {
100
+ clearTimeout(this.clearTimeout);
101
+ }
99
102
  this.ionClear.emit();
100
103
  return new Promise((resolve) => {
101
104
  // setTimeout() fixes https://github.com/ionic-team/ionic-framework/issues/7527
102
105
  // wait for 4 frames
103
- setTimeout(() => {
106
+ this.clearTimeout = setTimeout(() => {
104
107
  const value = this.getValue();
105
108
  if (value !== '') {
106
109
  this.value = '';
@@ -235,10 +238,18 @@ export class Searchbar {
235
238
  this.originalIonInput = this.ionInput;
236
239
  this.positionElements();
237
240
  this.debounceChanged();
238
- setTimeout(() => {
241
+ this.loadTimeout = setTimeout(() => {
239
242
  this.noAnimate = false;
240
243
  }, 300);
241
244
  }
245
+ disconnectedCallback() {
246
+ if (this.loadTimeout) {
247
+ clearTimeout(this.loadTimeout);
248
+ }
249
+ if (this.clearTimeout) {
250
+ clearTimeout(this.clearTimeout);
251
+ }
252
+ }
242
253
  emitStyle() {
243
254
  this.ionStyle.emit({
244
255
  searchbar: true,
@@ -427,8 +438,8 @@ export class Searchbar {
427
438
  const clearIcon = this.clearIcon || (mode === 'ios' ? closeCircle : closeSharp);
428
439
  const searchIcon = this.searchIcon || (mode === 'ios' ? searchOutline : searchSharp);
429
440
  const shouldShowCancelButton = this.shouldShowCancelButton();
430
- const cancelButton = this.showCancelButton !== 'never' && (h("button", { key: 'bf574336a561a5bf66c771fb606a9b19adbecb68', "aria-label": cancelButtonText, "aria-hidden": shouldShowCancelButton ? undefined : 'true', type: "button", tabIndex: mode === 'ios' && !shouldShowCancelButton ? -1 : undefined, onMouseDown: this.onCancelSearchbar, onTouchStart: this.onCancelSearchbar, class: "searchbar-cancel-button" }, h("div", { key: '747ad4368bda5044198259d5bc8f7be9e472e5af', "aria-hidden": "true" }, mode === 'md' ? (h("ion-icon", { "aria-hidden": "true", mode: mode, icon: this.cancelButtonIcon, lazy: false })) : (cancelButtonText))));
431
- return (h(Host, { key: 'bcc5b33a2859903ba11bfc5c611c6a2aaa71d06b', role: "search", "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses(this.color, {
441
+ const cancelButton = this.showCancelButton !== 'never' && (h("button", { key: '9e9f3a7f6ee66140181f8c3cfa42bbeee75adafc', "aria-label": cancelButtonText, "aria-hidden": shouldShowCancelButton ? undefined : 'true', type: "button", tabIndex: mode === 'ios' && !shouldShowCancelButton ? -1 : undefined, onMouseDown: this.onCancelSearchbar, onTouchStart: this.onCancelSearchbar, class: "searchbar-cancel-button" }, h("div", { key: '5f83fbcc0708830637815e8c0b69356cad381870', "aria-hidden": "true" }, mode === 'md' ? (h("ion-icon", { "aria-hidden": "true", mode: mode, icon: this.cancelButtonIcon, lazy: false })) : (cancelButtonText))));
442
+ return (h(Host, { key: '219c263c1f3cc63e18bc2d2ba5d672b7806eddd0', role: "search", "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses(this.color, {
432
443
  [mode]: true,
433
444
  'searchbar-animated': animated,
434
445
  'searchbar-disabled': this.disabled,
@@ -438,14 +449,14 @@ export class Searchbar {
438
449
  'searchbar-has-focus': this.focused,
439
450
  'searchbar-should-show-clear': this.shouldShowClearButton(),
440
451
  'searchbar-should-show-cancel': this.shouldShowCancelButton(),
441
- }) }, h("div", { key: 'ac0dbf5ddd9c4eb6d714f45c62c44ba3d0bf034d', class: "searchbar-input-container" }, h("input", Object.assign({ key: '4b9fdac1b0d5a7a68bf61a6beb00f166434d3e84', "aria-label": "search text", disabled: this.disabled, ref: (el) => (this.nativeInput = el), class: "searchbar-input", inputMode: this.inputmode, enterKeyHint: this.enterkeyhint, name: this.name, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, minLength: this.minlength, maxLength: this.maxlength, placeholder: this.placeholder, type: this.type, value: this.getValue(), autoCapitalize: autocapitalize === 'default' ? undefined : autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, spellcheck: this.spellcheck }, this.inheritedAttributes)), mode === 'md' && cancelButton, h("ion-icon", { key: '32a889c48b3960560a3873061b4ac5a8a5ce532f', "aria-hidden": "true", mode: mode, icon: searchIcon, lazy: false, class: "searchbar-search-icon" }), h("button", { key: '71222df691ef0b95008e619f755224d069ee9388', "aria-label": "reset", type: "button", "no-blur": true, class: "searchbar-clear-button", onPointerDown: (ev) => {
452
+ }) }, h("div", { key: '3f1c25442d6d87c0df67f79482a925b80dcc403d', class: "searchbar-input-container" }, h("input", Object.assign({ key: 'a386fecafda0fab449ea1488906ba6cfc55e2b5c', "aria-label": "search text", disabled: this.disabled, ref: (el) => (this.nativeInput = el), class: "searchbar-input", inputMode: this.inputmode, enterKeyHint: this.enterkeyhint, name: this.name, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, minLength: this.minlength, maxLength: this.maxlength, placeholder: this.placeholder, type: this.type, value: this.getValue(), autoCapitalize: autocapitalize === 'default' ? undefined : autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, spellcheck: this.spellcheck }, this.inheritedAttributes)), mode === 'md' && cancelButton, h("ion-icon", { key: '5f81642628335def39a14f0726e0fafdc7203776', "aria-hidden": "true", mode: mode, icon: searchIcon, lazy: false, class: "searchbar-search-icon" }), h("button", { key: 'da3073646f2d7f639261b556517fbadabc3c10e9', "aria-label": "reset", type: "button", "no-blur": true, class: "searchbar-clear-button", onPointerDown: (ev) => {
442
453
  /**
443
454
  * This prevents mobile browsers from
444
455
  * blurring the input when the clear
445
456
  * button is activated.
446
457
  */
447
458
  ev.preventDefault();
448
- }, onClick: () => this.onClearInput(true) }, h("ion-icon", { key: 'f1c8c0bd8fbb655085875731d3ece387dbe2967e', "aria-hidden": "true", mode: mode, icon: clearIcon, lazy: false, class: "searchbar-clear-icon" }))), mode === 'ios' && cancelButton));
459
+ }, onClick: () => this.onClearInput(true) }, h("ion-icon", { key: '065cd6c707ae462c0767df1bab04ce8045f340a4', "aria-hidden": "true", mode: mode, icon: clearIcon, lazy: false, class: "searchbar-clear-icon" }))), mode === 'ios' && cancelButton));
449
460
  }
450
461
  static get is() { return "ion-searchbar"; }
451
462
  static get encapsulation() { return "scoped"; }
package/dist/docs.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "timestamp": "2026-02-17T22:06:55",
2
+ "timestamp": "2026-02-25T16:42:06",
3
3
  "compiler": {
4
4
  "name": "@stencil/core",
5
5
  "version": "4.38.0",
@@ -1,9 +1,9 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import { r as registerInstance, h, e as config, d as Host, g as getElement, f as printIonWarning, c as createEvent, a as readTask, i as forceUpdate, w as writeTask, j as printIonError } from './index-C8IsBmNU.js';
4
+ import { r as registerInstance, e as config, f as printIonWarning, h, d as Host, g as getElement, c as createEvent, a as readTask, i as forceUpdate, w as writeTask, j as printIonError } from './index-C8IsBmNU.js';
5
5
  import { shouldUseCloseWatcher } from './hardware-back-button-CPLxO-Ev.js';
6
- import { b as getIonMode, a as isPlatform } from './ionic-global-CDrldh-5.js';
6
+ import { a as isPlatform, b as getIonMode } from './ionic-global-CDrldh-5.js';
7
7
  import { i as inheritAriaAttributes, h as hasLazyBuild, c as componentOnReady, e as clamp, s as shallowEqualStringMap } from './helpers-DEn3pfjm.js';
8
8
  import { i as isRTL } from './dir-C53feagD.js';
9
9
  import { c as createColorClasses, h as hostContext } from './theme-DiVJyqlX.js';
@@ -25,7 +25,7 @@ const App = class {
25
25
  }
26
26
  componentDidLoad() {
27
27
  {
28
- rIC(async () => {
28
+ this.rIC(async () => {
29
29
  const isHybrid = isPlatform(window, 'hybrid');
30
30
  if (!config.getBoolean('_testing')) {
31
31
  import('./index-ceb5RaMT.js').then((module) => module.startTapClick(config));
@@ -63,6 +63,11 @@ const App = class {
63
63
  });
64
64
  }
65
65
  }
66
+ disconnectedCallback() {
67
+ if (this.loadTimeout) {
68
+ clearTimeout(this.loadTimeout);
69
+ }
70
+ }
66
71
  /**
67
72
  * Used to set focus on an element that uses `ion-focusable`.
68
73
  * Do not use this if focusing the element as a result of a keyboard
@@ -79,9 +84,17 @@ const App = class {
79
84
  this.focusVisible.setFocus(elements);
80
85
  }
81
86
  }
87
+ rIC(callback) {
88
+ if ('requestIdleCallback' in window) {
89
+ window.requestIdleCallback(callback);
90
+ }
91
+ else {
92
+ this.loadTimeout = setTimeout(callback, 32);
93
+ }
94
+ }
82
95
  render() {
83
96
  const mode = getIonMode(this);
84
- return (h(Host, { key: '9be440c65819e4fa67c2c3c6477ab40b3ad3eed3', class: {
97
+ return (h(Host, { key: '77a7459d3e42b3715a5a7e1cf468e2ebc99e54bb', class: {
85
98
  [mode]: true,
86
99
  'ion-page': true,
87
100
  'force-statusbar-padding': config.getBoolean('_forceStatusbarPadding'),
@@ -108,14 +121,6 @@ const needInputShims = () => {
108
121
  }
109
122
  return false;
110
123
  };
111
- const rIC = (callback) => {
112
- if ('requestIdleCallback' in window) {
113
- window.requestIdleCallback(callback);
114
- }
115
- else {
116
- setTimeout(callback, 32);
117
- }
118
- };
119
124
  App.style = appCss;
120
125
 
121
126
  const buttonsIosCss = ".sc-ion-buttons-ios-h{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:99}.sc-ion-buttons-ios-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-ios-s ion-button{--padding-top:3px;--padding-bottom:3px;--padding-start:5px;--padding-end:5px;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;min-height:32px}.sc-ion-buttons-ios-s .button-has-icon-only{--padding-top:0;--padding-bottom:0}.sc-ion-buttons-ios-s ion-button:not(.button-round){--border-radius:4px}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button{--color:initial;--border-color:initial;--background-focused:var(--ion-color-contrast)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-solid,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-solid{--background:var(--ion-color-contrast);--background-focused:#000;--background-focused-opacity:.12;--background-activated:#000;--background-activated-opacity:.12;--background-hover:var(--ion-color-base);--background-hover-opacity:0.45;--color:var(--ion-color-base);--color-focused:var(--ion-color-base)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-clear,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-clear{--color-activated:var(--ion-color-contrast);--color-focused:var(--ion-color-contrast)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-outline,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-outline{--color-activated:var(--ion-color-base);--color-focused:var(--ion-color-contrast);--background-activated:var(--ion-color-contrast)}.sc-ion-buttons-ios-s .button-clear,.sc-ion-buttons-ios-s .button-outline{--background-activated:transparent;--background-focused:currentColor;--background-hover:transparent}.sc-ion-buttons-ios-s .button-solid:not(.ion-color){--background-focused:#000;--background-focused-opacity:.12;--background-activated:#000;--background-activated-opacity:.12}.sc-ion-buttons-ios-s ion-icon[slot=start]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-end:0.3em;margin-inline-end:0.3em;font-size:1.41em;line-height:0.67}.sc-ion-buttons-ios-s ion-icon[slot=end]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-start:0.4em;margin-inline-start:0.4em;font-size:1.41em;line-height:0.67}.sc-ion-buttons-ios-s ion-icon[slot=icon-only]{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;font-size:1.65em;line-height:0.67}";
@@ -275,6 +280,10 @@ const Content = class {
275
280
  this.tabsElement = null;
276
281
  this.tabsLoadCallback = undefined;
277
282
  }
283
+ if (this.resizeTimeout) {
284
+ clearTimeout(this.resizeTimeout);
285
+ this.resizeTimeout = null;
286
+ }
278
287
  }
279
288
  /**
280
289
  * Rotating certain devices can update
@@ -513,7 +522,7 @@ const Content = class {
513
522
  const forceOverscroll = this.shouldForceOverscroll();
514
523
  const transitionShadow = mode === 'ios';
515
524
  this.resize();
516
- return (h(Host, Object.assign({ key: 'cd8781f848d8dc926fe66f43d43c49564425a507', role: isMainContent ? 'main' : undefined, class: createColorClasses(this.color, {
525
+ return (h(Host, Object.assign({ key: '287f5bb78888b0f66394a35ba2a3ad636d8f3412', role: isMainContent ? 'main' : undefined, class: createColorClasses(this.color, {
517
526
  [mode]: true,
518
527
  'content-sizing': hostContext('ion-popover', this.el),
519
528
  overscroll: forceOverscroll,
@@ -521,12 +530,12 @@ const Content = class {
521
530
  }), style: {
522
531
  '--offset-top': `${this.cTop}px`,
523
532
  '--offset-bottom': `${this.cBottom}px`,
524
- } }, inheritedAttributes), h("div", { key: '95b112d7cae30f22ef778ceffb88edb4d941c170', ref: (el) => (this.backgroundContentEl = el), id: "background-content", part: "background" }), fixedSlotPlacement === 'before' ? h("slot", { name: "fixed" }) : null, h("div", { key: '2fdfcbc39fb66f11b6191911f2941c660f4c12e5', class: {
533
+ } }, inheritedAttributes), h("div", { key: '2e70e5e0ab4209478ea711a630058fa0e83af7f8', ref: (el) => (this.backgroundContentEl = el), id: "background-content", part: "background" }), fixedSlotPlacement === 'before' ? h("slot", { name: "fixed" }) : null, h("div", { key: '018a83406173ec7f7725f09b4bd1c0d964874ee4', class: {
525
534
  'inner-scroll': true,
526
535
  'scroll-x': scrollX,
527
536
  'scroll-y': scrollY,
528
537
  overscroll: (scrollX || scrollY) && forceOverscroll,
529
- }, ref: (scrollEl) => (this.scrollEl = scrollEl), onScroll: this.scrollEvents ? (ev) => this.onScroll(ev) : undefined, part: "scroll" }, h("slot", { key: '6bc77e0054ec8e21635a7f2abfe0ca46e0962e03' })), transitionShadow ? (h("div", { class: "transition-effect" }, h("div", { class: "transition-cover" }), h("div", { class: "transition-shadow" }))) : null, fixedSlotPlacement === 'after' ? h("slot", { name: "fixed" }) : null));
538
+ }, ref: (scrollEl) => (this.scrollEl = scrollEl), onScroll: this.scrollEvents ? (ev) => this.onScroll(ev) : undefined, part: "scroll" }, h("slot", { key: '6f028eeb7c9dc7e1b82a8e549e1dd8aaf1d15fca' })), transitionShadow ? (h("div", { class: "transition-effect" }, h("div", { class: "transition-cover" }), h("div", { class: "transition-shadow" }))) : null, fixedSlotPlacement === 'after' ? h("slot", { name: "fixed" }) : null));
530
539
  }
531
540
  get el() { return getElement(this); }
532
541
  };
@@ -229,7 +229,7 @@ const checkForPresentationFormatMismatch = (el, presentation, formatOptions) =>
229
229
  }
230
230
  };
231
231
 
232
- const datetimeIosCss = ":host{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;background:var(--background);overflow:hidden}:host(.datetime-size-fixed){width:auto;height:auto}:host(.datetime-size-fixed:not(.datetime-prefer-wheel)){max-width:350px}:host(.datetime-size-fixed.datetime-prefer-wheel){min-width:350px;max-width:-webkit-max-content;max-width:-moz-max-content;max-width:max-content}:host(.datetime-size-cover){width:100%}:host .calendar-body,:host .datetime-year{opacity:0}:host(:not(.datetime-ready)) .datetime-year{position:absolute;pointer-events:none}:host(.datetime-ready) .calendar-body{opacity:1}:host(.datetime-ready) .datetime-year{display:none;opacity:1}:host .wheel-order-year-first .day-column{-ms-flex-order:3;order:3;text-align:end}:host .wheel-order-year-first .month-column{-ms-flex-order:2;order:2;text-align:end}:host .wheel-order-year-first .year-column{-ms-flex-order:1;order:1;text-align:start}:host .datetime-calendar,:host .datetime-year{display:-ms-flexbox;display:flex;-ms-flex:1 1 auto;flex:1 1 auto;-ms-flex-flow:column;flex-flow:column}:host(.show-month-and-year) .datetime-year{display:-ms-flexbox;display:flex}:host(.show-month-and-year) .calendar-next-prev,:host(.show-month-and-year) .calendar-days-of-week,:host(.show-month-and-year) .calendar-body,:host(.show-month-and-year) .datetime-time{display:none}:host(.month-year-picker-open) .datetime-footer{display:none}:host(.datetime-disabled){pointer-events:none}:host(.datetime-disabled) .calendar-days-of-week,:host(.datetime-disabled) .datetime-time{opacity:0.4}:host(.datetime-readonly){pointer-events:none;}:host(.datetime-readonly) .calendar-action-buttons,:host(.datetime-readonly) .calendar-body,:host(.datetime-readonly) .datetime-year{pointer-events:initial}:host(.datetime-readonly) .calendar-day[disabled]:not(.calendar-day-constrained),:host(.datetime-readonly) .datetime-action-buttons ion-button[disabled]{opacity:1}:host .datetime-header .datetime-title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}:host .datetime-action-buttons.has-clear-button{width:100%}:host .datetime-action-buttons ion-buttons{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}.datetime-action-buttons .datetime-action-buttons-container{display:-ms-flexbox;display:flex}:host .calendar-action-buttons{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}:host .calendar-action-buttons ion-button{--background:transparent}:host .calendar-days-of-week{display:grid;grid-template-columns:repeat(7, 1fr);text-align:center}.calendar-days-of-week .day-of-week{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0}:host .calendar-body{display:-ms-flexbox;display:flex;-ms-flex-positive:1;flex-grow:1;-webkit-scroll-snap-type:x mandatory;-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory;overflow-x:scroll;overflow-y:hidden;scrollbar-width:none;outline:none}:host .calendar-body .calendar-month{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;scroll-snap-align:start;scroll-snap-stop:always;-ms-flex-negative:0;flex-shrink:0;width:100%}:host .calendar-body .calendar-month-disabled{scroll-snap-align:none}:host .calendar-body::-webkit-scrollbar{display:none}:host .calendar-body .calendar-month-grid{display:grid;grid-template-columns:repeat(7, 1fr)}:host .calendar-day-wrapper{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;min-width:0;min-height:0;overflow:visible}.calendar-day{border-radius:50%;-webkit-padding-start:0px;padding-inline-start:0px;-webkit-padding-end:0px;padding-inline-end:0px;padding-top:0px;padding-bottom:0px;-webkit-margin-start:0px;margin-inline-start:0px;-webkit-margin-end:0px;margin-inline-end:0px;margin-top:0px;margin-bottom:0px;display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;border:none;outline:none;background:none;color:currentColor;font-family:var(--ion-font-family, inherit);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;z-index:0}:host .calendar-day[disabled]{pointer-events:none;opacity:0.4}.calendar-day:not(.calendar-day-adjacent-day):focus{background:rgba(var(--ion-color-base-rgb), 0.2);-webkit-box-shadow:0px 0px 0px 4px rgba(var(--ion-color-base-rgb), 0.2);box-shadow:0px 0px 0px 4px rgba(var(--ion-color-base-rgb), 0.2)}:host .datetime-time{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}:host(.datetime-presentation-time) .datetime-time{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}:host ion-popover{--height:200px}:host .time-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}:host .time-body{border-radius:8px;-webkit-padding-start:12px;padding-inline-start:12px;-webkit-padding-end:12px;padding-inline-end:12px;padding-top:6px;padding-bottom:6px;display:-ms-flexbox;display:flex;border:none;background:var(--ion-color-step-300, var(--ion-background-color-step-300, #edeef0));color:var(--ion-text-color, #000);font-family:inherit;font-size:inherit;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}:host .time-body-active{color:var(--ion-color-base)}:host(.in-item){position:static}:host(.show-month-and-year) .calendar-action-buttons .calendar-month-year-toggle{color:var(--ion-color-base)}.calendar-month-year{min-width:0}.calendar-month-year-toggle{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;position:relative;border:0;outline:none;background:transparent;cursor:pointer;z-index:1}.calendar-month-year-toggle::after{left:0;right:0;top:0;bottom:0;position:absolute;content:\"\";opacity:0;-webkit-transition:opacity 15ms linear, background-color 15ms linear;transition:opacity 15ms linear, background-color 15ms linear;z-index:-1}.calendar-month-year-toggle.ion-focused::after{background:currentColor}.calendar-month-year-toggle:disabled{opacity:0.3;pointer-events:none}.calendar-month-year-toggle ion-icon{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:0;padding-inline-end:0;padding-top:0;padding-bottom:0;-ms-flex-negative:0;flex-shrink:0}.calendar-month-year-toggle #toggle-wrapper{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center}ion-picker{--highlight-background:var(--wheel-highlight-background);--highlight-border-radius:var(--wheel-highlight-border-radius);--fade-background-rgb:var(--wheel-fade-background-rgb)}:host{--background:var(--ion-color-light, #f4f5f8);--background-rgb:var(--ion-color-light-rgb, 244, 245, 248);--title-color:var(--ion-color-step-600, var(--ion-text-color-step-400, #666666))}:host(.datetime-presentation-date-time:not(.datetime-prefer-wheel)),:host(.datetime-presentation-time-date:not(.datetime-prefer-wheel)),:host(.datetime-presentation-date:not(.datetime-prefer-wheel)){min-height:350px}:host .datetime-header{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:16px;padding-bottom:16px;border-bottom:0.55px solid var(--ion-color-step-200, var(--ion-background-color-step-200, #cccccc));font-size:min(0.875rem, 22.4px)}:host .datetime-header .datetime-title{color:var(--title-color)}:host .datetime-header .datetime-selected-date{margin-top:10px}.calendar-month-year-toggle{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0px;padding-bottom:0px;min-height:44px;font-size:min(1rem, 25.6px);font-weight:600}.calendar-month-year-toggle.ion-focused::after{opacity:0.15}.calendar-month-year-toggle #toggle-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:8px;margin-inline-end:8px;margin-top:10px;margin-bottom:10px}:host .calendar-action-buttons .calendar-month-year-toggle ion-icon,:host .calendar-action-buttons ion-buttons ion-button{color:var(--ion-color-base)}:host .calendar-action-buttons ion-buttons{padding-left:0;padding-right:0;padding-top:8px;padding-bottom:0}:host .calendar-action-buttons ion-buttons ion-button{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}:host .calendar-days-of-week{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:0;padding-bottom:0;color:var(--ion-color-step-300, var(--ion-text-color-step-700, #b3b3b3));font-size:min(0.75rem, 19.2px);font-weight:600;line-height:24px;text-transform:uppercase}@supports (border-radius: mod(1px, 1px)){.calendar-days-of-week .day-of-week{width:clamp(20px, calc(mod(min(1rem, 24px), 24px) * 10), 100%);height:24px;overflow:hidden}.calendar-day{border-radius:max(8px, mod(min(1rem, 24px), 24px) * 10)}}@supports ((border-radius: mod(1px, 1px)) and (background: -webkit-named-image(apple-pay-logo-black)) and (not (contain-intrinsic-size: none))) or (not (border-radius: mod(1px, 1px))){.calendar-days-of-week .day-of-week{width:auto;height:auto;overflow:initial}.calendar-day{border-radius:32px}}:host .calendar-body .calendar-month .calendar-month-grid{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:8px;padding-bottom:8px;-ms-flex-align:center;align-items:center;height:calc(100% - 16px)}:host .calendar-day-wrapper{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;height:0;min-height:1rem}:host .calendar-day{width:40px;min-width:40px;height:40px;font-size:min(1.25rem, 32px)}.calendar-day.calendar-day-active{background:rgba(var(--ion-color-base-rgb), 0.2);font-size:min(1.375rem, 35.2px)}:host .calendar-day.calendar-day-today{color:var(--ion-color-base)}:host .calendar-day.calendar-day-active,:host .calendar-day.calendar-day-adjacent-day.calendar-day-active{color:var(--ion-color-base);font-weight:600}:host .calendar-day.calendar-day-today.calendar-day-active{background:var(--ion-color-base);color:var(--ion-color-contrast)}:host .calendar-day.calendar-day-adjacent-day{color:var(--ion-color-step-300, var(--ion-text-color-step-700, #b3b3b3))}:host .datetime-time{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:8px;padding-bottom:16px;font-size:min(1rem, 25.6px)}:host .datetime-time .time-header{font-weight:600}:host .datetime-buttons{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:8px;padding-bottom:8px;border-top:0.55px solid var(--ion-color-step-200, var(--ion-background-color-step-200, #cccccc))}:host .datetime-buttons ::slotted(ion-buttons),:host .datetime-buttons ion-buttons{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}:host .datetime-action-buttons{width:100%}";
232
+ const datetimeIosCss = ":host{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;background:var(--background);overflow:hidden}:host(.datetime-size-fixed){width:auto;height:auto}:host(.datetime-size-fixed:not(.datetime-prefer-wheel)){max-width:350px}:host(.datetime-size-fixed.datetime-prefer-wheel){min-width:350px;max-width:-webkit-max-content;max-width:-moz-max-content;max-width:max-content}:host(.datetime-size-cover){width:100%}:host .calendar-body,:host .datetime-year{opacity:0}:host(:not(.datetime-ready)) .datetime-year{position:absolute;pointer-events:none}:host(.datetime-ready) .calendar-body{opacity:1}:host(.datetime-ready) .datetime-year{display:none;opacity:1}:host .wheel-order-year-first .day-column{-ms-flex-order:3;order:3;text-align:end}:host .wheel-order-year-first .month-column{-ms-flex-order:2;order:2;text-align:end}:host .wheel-order-year-first .year-column{-ms-flex-order:1;order:1;text-align:start}:host .datetime-calendar,:host .datetime-year{display:-ms-flexbox;display:flex;-ms-flex:1 1 auto;flex:1 1 auto;-ms-flex-flow:column;flex-flow:column}:host(.show-month-and-year) .datetime-year{display:-ms-flexbox;display:flex}:host(.show-month-and-year) .calendar-next-prev,:host(.show-month-and-year) .calendar-days-of-week,:host(.show-month-and-year) .calendar-body,:host(.show-month-and-year) .datetime-time{display:none}:host(.month-year-picker-open) .datetime-footer{display:none}:host(.datetime-disabled){pointer-events:none}:host(.datetime-disabled) .calendar-days-of-week,:host(.datetime-disabled) .datetime-time{opacity:0.4}:host(.datetime-readonly){pointer-events:none;}:host(.datetime-readonly) .calendar-action-buttons,:host(.datetime-readonly) .calendar-body,:host(.datetime-readonly) .datetime-year{pointer-events:initial}:host(.datetime-readonly) .calendar-day[disabled]:not(.calendar-day-constrained),:host(.datetime-readonly) .datetime-action-buttons ion-button[disabled]{opacity:1}:host .datetime-header .datetime-title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}:host .datetime-action-buttons.has-clear-button{width:100%}:host .datetime-action-buttons ion-buttons{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}.datetime-action-buttons .datetime-action-buttons-container{display:-ms-flexbox;display:flex}:host .calendar-action-buttons{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}:host .calendar-action-buttons ion-button{--background:transparent}:host .calendar-days-of-week{display:grid;grid-template-columns:repeat(7, 1fr);text-align:center}.calendar-days-of-week .day-of-week{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0}:host .calendar-body{display:-ms-flexbox;display:flex;-ms-flex-positive:1;flex-grow:1;-webkit-scroll-snap-type:x mandatory;-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory;overflow-x:scroll;overflow-y:hidden;scrollbar-width:none;outline:none}:host .calendar-body .calendar-month{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;scroll-snap-align:start;scroll-snap-stop:always;-ms-flex-negative:0;flex-shrink:0;width:100%}:host .calendar-body .calendar-month-disabled{scroll-snap-align:none}:host .calendar-body::-webkit-scrollbar{display:none}:host .calendar-body .calendar-month-grid{display:grid;grid-template-columns:repeat(7, 1fr)}:host .calendar-day-wrapper{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;min-width:0;min-height:0;overflow:visible}.calendar-day{border-radius:50%;-webkit-padding-start:0px;padding-inline-start:0px;-webkit-padding-end:0px;padding-inline-end:0px;padding-top:0px;padding-bottom:0px;-webkit-margin-start:0px;margin-inline-start:0px;-webkit-margin-end:0px;margin-inline-end:0px;margin-top:0px;margin-bottom:0px;display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;border:none;outline:none;background:none;color:currentColor;font-family:var(--ion-font-family, inherit);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;z-index:0}:host .calendar-day[disabled]{pointer-events:none;opacity:0.4}.calendar-day:not(.calendar-day-adjacent-day):focus{background:rgba(var(--ion-color-base-rgb), 0.2);-webkit-box-shadow:0px 0px 0px 4px rgba(var(--ion-color-base-rgb), 0.2);box-shadow:0px 0px 0px 4px rgba(var(--ion-color-base-rgb), 0.2)}:host .datetime-time{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}:host(.datetime-presentation-time) .datetime-time{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}:host ion-popover{--height:200px}:host .time-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}:host .time-body{border-radius:8px;-webkit-padding-start:12px;padding-inline-start:12px;-webkit-padding-end:12px;padding-inline-end:12px;padding-top:6px;padding-bottom:6px;display:-ms-flexbox;display:flex;border:none;background:var(--ion-color-step-300, var(--ion-background-color-step-300, #edeef0));color:var(--ion-text-color, #000);font-family:inherit;font-size:inherit;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}:host .time-body-active{color:var(--ion-color-base)}:host(.in-item){position:static}:host(.show-month-and-year) .calendar-action-buttons .calendar-month-year-toggle{color:var(--ion-color-base)}.calendar-month-year{min-width:0}.calendar-month-year-toggle{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;position:relative;border:0;outline:none;background:transparent;cursor:pointer;z-index:1}.calendar-month-year-toggle::after{left:0;right:0;top:0;bottom:0;position:absolute;content:\"\";opacity:0;-webkit-transition:opacity 15ms linear, background-color 15ms linear;transition:opacity 15ms linear, background-color 15ms linear;z-index:-1}.calendar-month-year-toggle.ion-focused::after{background:currentColor}.calendar-month-year-toggle:disabled{opacity:0.3;pointer-events:none}.calendar-month-year-toggle ion-icon{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:0;padding-inline-end:0;padding-top:0;padding-bottom:0;-ms-flex-negative:0;flex-shrink:0}.calendar-month-year-toggle #toggle-wrapper{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center}ion-picker{--highlight-background:var(--wheel-highlight-background);--highlight-border-radius:var(--wheel-highlight-border-radius);--fade-background-rgb:var(--wheel-fade-background-rgb)}:host{--background:var(--ion-color-light, #f4f5f8);--background-rgb:var(--ion-color-light-rgb, 244, 245, 248);--title-color:var(--ion-color-step-600, var(--ion-text-color-step-400, #666666))}:host(.datetime-presentation-date-time:not(.datetime-prefer-wheel)),:host(.datetime-presentation-time-date:not(.datetime-prefer-wheel)),:host(.datetime-presentation-date:not(.datetime-prefer-wheel)){min-height:350px}:host .datetime-header{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:16px;padding-bottom:16px;border-bottom:0.55px solid var(--ion-color-step-200, var(--ion-background-color-step-200, #cccccc));font-size:min(0.875rem, 22.4px)}:host .datetime-header .datetime-title{color:var(--title-color)}:host .datetime-header .datetime-selected-date{margin-top:10px}.calendar-month-year-toggle{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0px;padding-bottom:0px;min-height:44px;font-size:min(1rem, 25.6px);font-weight:600}.calendar-month-year-toggle.ion-focused::after{opacity:0.15}.calendar-month-year-toggle #toggle-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:8px;margin-inline-end:8px;margin-top:10px;margin-bottom:10px}:host .calendar-action-buttons .calendar-month-year-toggle ion-icon,:host .calendar-action-buttons ion-buttons ion-button{color:var(--ion-color-base)}:host .calendar-action-buttons ion-buttons{-ms-flex-align:stretch;align-items:stretch;height:100%}:host .calendar-action-buttons ion-buttons ion-button{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}:host .calendar-days-of-week{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:0;padding-bottom:0;color:var(--ion-color-step-300, var(--ion-text-color-step-700, #b3b3b3));font-size:min(0.75rem, 19.2px);font-weight:600;line-height:24px;text-transform:uppercase}@supports (border-radius: mod(1px, 1px)){.calendar-days-of-week .day-of-week{width:clamp(20px, calc(mod(min(1rem, 24px), 24px) * 10), 100%);height:24px;overflow:hidden}.calendar-day{border-radius:max(8px, mod(min(1rem, 24px), 24px) * 10)}}@supports ((border-radius: mod(1px, 1px)) and (background: -webkit-named-image(apple-pay-logo-black)) and (not (contain-intrinsic-size: none))) or (not (border-radius: mod(1px, 1px))){.calendar-days-of-week .day-of-week{width:auto;height:auto;overflow:initial}.calendar-day{border-radius:32px}}:host .calendar-body .calendar-month .calendar-month-grid{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:8px;padding-bottom:8px;-ms-flex-align:center;align-items:center;height:calc(100% - 16px)}:host .calendar-day-wrapper{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;height:0;min-height:1rem}:host .calendar-day{width:40px;min-width:40px;height:40px;font-size:min(1.25rem, 32px)}.calendar-day.calendar-day-active{background:rgba(var(--ion-color-base-rgb), 0.2);font-size:min(1.375rem, 35.2px)}:host .calendar-day.calendar-day-today{color:var(--ion-color-base)}:host .calendar-day.calendar-day-active,:host .calendar-day.calendar-day-adjacent-day.calendar-day-active{color:var(--ion-color-base);font-weight:600}:host .calendar-day.calendar-day-today.calendar-day-active{background:var(--ion-color-base);color:var(--ion-color-contrast)}:host .calendar-day.calendar-day-adjacent-day{color:var(--ion-color-step-300, var(--ion-text-color-step-700, #b3b3b3))}:host .datetime-time{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:8px;padding-bottom:16px;font-size:min(1rem, 25.6px)}:host .datetime-time .time-header{font-weight:600}:host .datetime-buttons{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:8px;padding-bottom:8px;border-top:0.55px solid var(--ion-color-step-200, var(--ion-background-color-step-200, #cccccc))}:host .datetime-buttons ::slotted(ion-buttons),:host .datetime-buttons ion-buttons{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}:host .datetime-action-buttons{width:100%}";
233
233
 
234
234
  const datetimeMdCss = ":host{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;background:var(--background);overflow:hidden}:host(.datetime-size-fixed){width:auto;height:auto}:host(.datetime-size-fixed:not(.datetime-prefer-wheel)){max-width:350px}:host(.datetime-size-fixed.datetime-prefer-wheel){min-width:350px;max-width:-webkit-max-content;max-width:-moz-max-content;max-width:max-content}:host(.datetime-size-cover){width:100%}:host .calendar-body,:host .datetime-year{opacity:0}:host(:not(.datetime-ready)) .datetime-year{position:absolute;pointer-events:none}:host(.datetime-ready) .calendar-body{opacity:1}:host(.datetime-ready) .datetime-year{display:none;opacity:1}:host .wheel-order-year-first .day-column{-ms-flex-order:3;order:3;text-align:end}:host .wheel-order-year-first .month-column{-ms-flex-order:2;order:2;text-align:end}:host .wheel-order-year-first .year-column{-ms-flex-order:1;order:1;text-align:start}:host .datetime-calendar,:host .datetime-year{display:-ms-flexbox;display:flex;-ms-flex:1 1 auto;flex:1 1 auto;-ms-flex-flow:column;flex-flow:column}:host(.show-month-and-year) .datetime-year{display:-ms-flexbox;display:flex}:host(.show-month-and-year) .calendar-next-prev,:host(.show-month-and-year) .calendar-days-of-week,:host(.show-month-and-year) .calendar-body,:host(.show-month-and-year) .datetime-time{display:none}:host(.month-year-picker-open) .datetime-footer{display:none}:host(.datetime-disabled){pointer-events:none}:host(.datetime-disabled) .calendar-days-of-week,:host(.datetime-disabled) .datetime-time{opacity:0.4}:host(.datetime-readonly){pointer-events:none;}:host(.datetime-readonly) .calendar-action-buttons,:host(.datetime-readonly) .calendar-body,:host(.datetime-readonly) .datetime-year{pointer-events:initial}:host(.datetime-readonly) .calendar-day[disabled]:not(.calendar-day-constrained),:host(.datetime-readonly) .datetime-action-buttons ion-button[disabled]{opacity:1}:host .datetime-header .datetime-title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}:host .datetime-action-buttons.has-clear-button{width:100%}:host .datetime-action-buttons ion-buttons{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}.datetime-action-buttons .datetime-action-buttons-container{display:-ms-flexbox;display:flex}:host .calendar-action-buttons{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}:host .calendar-action-buttons ion-button{--background:transparent}:host .calendar-days-of-week{display:grid;grid-template-columns:repeat(7, 1fr);text-align:center}.calendar-days-of-week .day-of-week{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0}:host .calendar-body{display:-ms-flexbox;display:flex;-ms-flex-positive:1;flex-grow:1;-webkit-scroll-snap-type:x mandatory;-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory;overflow-x:scroll;overflow-y:hidden;scrollbar-width:none;outline:none}:host .calendar-body .calendar-month{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;scroll-snap-align:start;scroll-snap-stop:always;-ms-flex-negative:0;flex-shrink:0;width:100%}:host .calendar-body .calendar-month-disabled{scroll-snap-align:none}:host .calendar-body::-webkit-scrollbar{display:none}:host .calendar-body .calendar-month-grid{display:grid;grid-template-columns:repeat(7, 1fr)}:host .calendar-day-wrapper{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;min-width:0;min-height:0;overflow:visible}.calendar-day{border-radius:50%;-webkit-padding-start:0px;padding-inline-start:0px;-webkit-padding-end:0px;padding-inline-end:0px;padding-top:0px;padding-bottom:0px;-webkit-margin-start:0px;margin-inline-start:0px;-webkit-margin-end:0px;margin-inline-end:0px;margin-top:0px;margin-bottom:0px;display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;border:none;outline:none;background:none;color:currentColor;font-family:var(--ion-font-family, inherit);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;z-index:0}:host .calendar-day[disabled]{pointer-events:none;opacity:0.4}.calendar-day:not(.calendar-day-adjacent-day):focus{background:rgba(var(--ion-color-base-rgb), 0.2);-webkit-box-shadow:0px 0px 0px 4px rgba(var(--ion-color-base-rgb), 0.2);box-shadow:0px 0px 0px 4px rgba(var(--ion-color-base-rgb), 0.2)}:host .datetime-time{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}:host(.datetime-presentation-time) .datetime-time{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}:host ion-popover{--height:200px}:host .time-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}:host .time-body{border-radius:8px;-webkit-padding-start:12px;padding-inline-start:12px;-webkit-padding-end:12px;padding-inline-end:12px;padding-top:6px;padding-bottom:6px;display:-ms-flexbox;display:flex;border:none;background:var(--ion-color-step-300, var(--ion-background-color-step-300, #edeef0));color:var(--ion-text-color, #000);font-family:inherit;font-size:inherit;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}:host .time-body-active{color:var(--ion-color-base)}:host(.in-item){position:static}:host(.show-month-and-year) .calendar-action-buttons .calendar-month-year-toggle{color:var(--ion-color-base)}.calendar-month-year{min-width:0}.calendar-month-year-toggle{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;position:relative;border:0;outline:none;background:transparent;cursor:pointer;z-index:1}.calendar-month-year-toggle::after{left:0;right:0;top:0;bottom:0;position:absolute;content:\"\";opacity:0;-webkit-transition:opacity 15ms linear, background-color 15ms linear;transition:opacity 15ms linear, background-color 15ms linear;z-index:-1}.calendar-month-year-toggle.ion-focused::after{background:currentColor}.calendar-month-year-toggle:disabled{opacity:0.3;pointer-events:none}.calendar-month-year-toggle ion-icon{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:0;padding-inline-end:0;padding-top:0;padding-bottom:0;-ms-flex-negative:0;flex-shrink:0}.calendar-month-year-toggle #toggle-wrapper{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center}ion-picker{--highlight-background:var(--wheel-highlight-background);--highlight-border-radius:var(--wheel-highlight-border-radius);--fade-background-rgb:var(--wheel-fade-background-rgb)}:host{--background:var(--ion-color-step-100, var(--ion-background-color-step-100, #ffffff));--title-color:var(--ion-color-contrast)}:host .datetime-header{-webkit-padding-start:20px;padding-inline-start:20px;-webkit-padding-end:20px;padding-inline-end:20px;padding-top:20px;padding-bottom:20px;background:var(--ion-color-base);color:var(--title-color)}:host .datetime-header .datetime-title{font-size:0.75rem;text-transform:uppercase}:host .datetime-header .datetime-selected-date{margin-top:30px;font-size:2.125rem}:host .calendar-action-buttons ion-button{--color:var(--ion-color-step-650, var(--ion-text-color-step-350, #595959))}.calendar-month-year-toggle{-webkit-padding-start:20px;padding-inline-start:20px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:12px;padding-bottom:12px;min-height:48px;background:transparent;color:var(--ion-color-step-650, var(--ion-text-color-step-350, #595959));z-index:1}.calendar-month-year-toggle.ion-focused::after{opacity:0.04}.calendar-month-year-toggle ion-ripple-effect{color:currentColor}@media (any-hover: hover){.calendar-month-year-toggle.ion-activatable:not(.ion-focused):hover::after{background:currentColor;opacity:0.04}}:host .calendar-days-of-week{-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px;padding-top:0px;padding-bottom:0px;color:var(--ion-color-step-500, var(--ion-text-color-step-500, gray));font-size:0.875rem;line-height:36px}:host .calendar-body .calendar-month .calendar-month-grid{-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px;padding-top:4px;padding-bottom:4px;grid-template-rows:repeat(6, 1fr)}:host .calendar-day{width:42px;min-width:42px;height:42px;font-size:0.875rem}:host .calendar-day.calendar-day-today{border:1px solid var(--ion-color-base);color:var(--ion-color-base)}:host .calendar-day.calendar-day-active,:host .calendar-day.calendar-day-adjacent-day.calendar-day-active{color:var(--ion-color-contrast)}.calendar-day.calendar-day-active,.calendar-day.calendar-day-active:focus{border:1px solid var(--ion-color-base);background:var(--ion-color-base)}:host .calendar-day.calendar-day-adjacent-day{color:var(--ion-color-step-500, var(--ion-text-color-step-500, gray))}:host .datetime-time{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:8px;padding-bottom:8px}:host .time-header{color:var(--ion-color-step-650, var(--ion-text-color-step-350, #595959))}:host(.datetime-presentation-month) .datetime-year,:host(.datetime-presentation-year) .datetime-year,:host(.datetime-presentation-month-year) .datetime-year{margin-top:20px;margin-bottom:20px}:host .datetime-buttons{-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px;padding-top:10px;padding-bottom:10px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end}";
235
235
 
@@ -1083,6 +1083,9 @@ const Datetime = class {
1083
1083
  this.clearFocusVisible();
1084
1084
  this.clearFocusVisible = undefined;
1085
1085
  }
1086
+ if (this.loadTimeout) {
1087
+ clearTimeout(this.loadTimeout);
1088
+ }
1086
1089
  }
1087
1090
  initializeListeners() {
1088
1091
  this.initializeCalendarListener();
@@ -1131,7 +1134,7 @@ const Datetime = class {
1131
1134
  *
1132
1135
  * We schedule this after everything has had a chance to run.
1133
1136
  */
1134
- setTimeout(() => {
1137
+ this.loadTimeout = setTimeout(() => {
1135
1138
  this.ensureReadyIfVisible();
1136
1139
  }, 100);
1137
1140
  /**
@@ -1889,7 +1892,7 @@ const Datetime = class {
1889
1892
  const hasDatePresentation = presentation === 'date' || presentation === 'date-time' || presentation === 'time-date';
1890
1893
  const hasWheelVariant = hasDatePresentation && preferWheel;
1891
1894
  renderHiddenInput(true, el, name, formatValue(value), disabled);
1892
- return (h(Host, { key: 'efdbc0922670a841bc667ceac392cdc1dedffd01', "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: Object.assign({}, createColorClasses(color, {
1895
+ return (h(Host, { key: 'b81c3531f4654be3f6948df5f790c0f6ab488000', "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: Object.assign({}, createColorClasses(color, {
1893
1896
  [mode]: true,
1894
1897
  ['datetime-readonly']: readonly,
1895
1898
  ['datetime-disabled']: disabled,
@@ -1899,7 +1902,7 @@ const Datetime = class {
1899
1902
  [`datetime-size-${size}`]: true,
1900
1903
  [`datetime-prefer-wheel`]: hasWheelVariant,
1901
1904
  [`datetime-grid`]: isGridStyle,
1902
- })) }, h("div", { key: '3f8bb75fcb0baff55182ef3aa1b535eacc58d81f', class: "intersection-tracker", ref: (el) => (this.intersectionTrackerRef = el) }), this.renderDatetime(mode)));
1905
+ })) }, h("div", { key: 'f7f39f8e56146186210d0ab70ae95e829573e549', class: "intersection-tracker", ref: (el) => (this.intersectionTrackerRef = el) }), this.renderDatetime(mode)));
1903
1906
  }
1904
1907
  get el() { return getElement(this); }
1905
1908
  static get watchers() { return {
@@ -177,6 +177,7 @@ const fabListCss = ":host{margin-left:0;margin-right:0;margin-top:calc(100% + 10
177
177
  const FabList = class {
178
178
  constructor(hostRef) {
179
179
  registerInstance(this, hostRef);
180
+ this.activateTimeouts = [];
180
181
  /**
181
182
  * If `true`, the fab list will show all fab buttons in the list.
182
183
  */
@@ -187,20 +188,26 @@ const FabList = class {
187
188
  this.side = 'bottom';
188
189
  }
189
190
  activatedChanged(activated) {
191
+ this.activateTimeouts.forEach(clearTimeout);
192
+ this.activateTimeouts = [];
190
193
  const fabs = Array.from(this.el.querySelectorAll('ion-fab-button'));
191
194
  // if showing the fabs add a timeout, else show immediately
192
195
  const timeout = activated ? 30 : 0;
193
196
  fabs.forEach((fab, i) => {
194
- setTimeout(() => (fab.show = activated), i * timeout);
197
+ this.activateTimeouts.push(setTimeout(() => (fab.show = activated), i * timeout));
195
198
  });
196
199
  }
200
+ disconnectedCallback() {
201
+ this.activateTimeouts.forEach(clearTimeout);
202
+ this.activateTimeouts = [];
203
+ }
197
204
  render() {
198
205
  const mode = getIonMode(this);
199
- return (h(Host, { key: '64b33366447f66c7f979cfac56307fbb1a6fac1c', class: {
206
+ return (h(Host, { key: '03a8920c29a93c6df4bab14753a78a8a30722ce8', class: {
200
207
  [mode]: true,
201
208
  'fab-list-active': this.activated,
202
209
  [`fab-list-side-${this.side}`]: true,
203
- } }, h("slot", { key: 'd9f474f7f20fd7e813db358fddc720534ca05bb6' })));
210
+ } }, h("slot", { key: 'd9e1541cb044e209bc2dff14080f3b938a2b84ae' })));
204
211
  }
205
212
  get el() { return getElement(this); }
206
213
  static get watchers() { return {
@@ -30,7 +30,16 @@ const Img = class {
30
30
  componentDidLoad() {
31
31
  this.addIO();
32
32
  }
33
+ disconnectedCallback() {
34
+ if (this.loadTimeout) {
35
+ clearTimeout(this.loadTimeout);
36
+ }
37
+ }
33
38
  addIO() {
39
+ if (this.loadTimeout) {
40
+ clearTimeout(this.loadTimeout);
41
+ this.loadTimeout = undefined;
42
+ }
34
43
  if (this.src === undefined) {
35
44
  return;
36
45
  }
@@ -54,7 +63,7 @@ const Img = class {
54
63
  }
55
64
  else {
56
65
  // fall back to setTimeout for Safari and IE
57
- setTimeout(() => this.load(), 200);
66
+ this.loadTimeout = setTimeout(() => this.load(), 200);
58
67
  }
59
68
  }
60
69
  load() {
@@ -71,7 +80,7 @@ const Img = class {
71
80
  render() {
72
81
  const { loadSrc, alt, onLoad, loadError, inheritedAttributes } = this;
73
82
  const { draggable } = inheritedAttributes;
74
- return (h(Host, { key: 'da600442894427dee1974a28e545613afac69fca', class: getIonMode(this) }, h("img", { key: '16df0c7069af86c0fa7ce5af598bc0f63b4eb71a', decoding: "async", src: loadSrc, alt: alt, onLoad: onLoad, onError: loadError, part: "image", draggable: isDraggable(draggable) })));
83
+ return (h(Host, { key: '9bfaa659b0680189fd29f3acb2fdce7f70be6060', class: getIonMode(this) }, h("img", { key: 'd484beae0d5cbe0406958bfad40cdd6c05625340', decoding: "async", src: loadSrc, alt: alt, onLoad: onLoad, onError: loadError, part: "image", draggable: isDraggable(draggable) })));
75
84
  }
76
85
  get el() { return getElement(this); }
77
86
  static get watchers() { return {
@@ -328,11 +328,16 @@ const Label = class {
328
328
  }
329
329
  componentDidLoad() {
330
330
  if (this.noAnimate) {
331
- setTimeout(() => {
331
+ this.loadTimeout = setTimeout(() => {
332
332
  this.noAnimate = false;
333
333
  }, 1000);
334
334
  }
335
335
  }
336
+ disconnectedCallback() {
337
+ if (this.loadTimeout) {
338
+ clearTimeout(this.loadTimeout);
339
+ }
340
+ }
336
341
  colorChanged() {
337
342
  this.emitColor();
338
343
  }
@@ -361,13 +366,13 @@ const Label = class {
361
366
  render() {
362
367
  const position = this.position;
363
368
  const mode = getIonMode(this);
364
- return (h(Host, { key: '684ddfa719e34d743489ff05a0df067829257c73', class: createColorClasses(this.color, {
369
+ return (h(Host, { key: 'd603670c442213c28737b0c052c094705b8c84ef', class: createColorClasses(this.color, {
365
370
  [mode]: true,
366
371
  'in-item-color': hostContext('ion-item.ion-color', this.el),
367
372
  [`label-${position}`]: position !== undefined,
368
373
  [`label-no-animate`]: this.noAnimate,
369
374
  'label-rtl': document.dir === 'rtl',
370
- }) }, h("slot", { key: '4aace3e2b36250e832c44f63bea21116d77220fb' })));
375
+ }) }, h("slot", { key: 'a8c3aed240a20ee5856c423662878481a1e6d4cf' })));
371
376
  }
372
377
  get el() { return getElement(this); }
373
378
  static get watchers() { return {