@ionic/core 8.4.4-dev.11738863153.1dafb0b9 → 8.4.4-dev.11739906326.1989484f

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 (104) hide show
  1. package/components/checkbox.js +4 -6
  2. package/components/content.js +4 -4
  3. package/components/ion-select.js +4 -6
  4. package/components/ion-tab-button.js +1 -1
  5. package/components/ion-tab.js +2 -2
  6. package/components/ion-tabs.js +1 -2
  7. package/components/ion-toggle.js +4 -6
  8. package/components/modal.js +35 -259
  9. package/components/radio.js +37 -5
  10. package/css/core.css.map +1 -1
  11. package/css/ionic.bundle.css.map +1 -1
  12. package/dist/cjs/ion-app_8.cjs.entry.js +4 -4
  13. package/dist/cjs/ion-checkbox.cjs.entry.js +4 -5
  14. package/dist/cjs/ion-modal.cjs.entry.js +35 -258
  15. package/dist/cjs/ion-radio_2.cjs.entry.js +35 -5
  16. package/dist/cjs/ion-select_3.cjs.entry.js +4 -5
  17. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +1 -1
  18. package/dist/cjs/ion-tab_2.cjs.entry.js +3 -4
  19. package/dist/cjs/ion-toggle.cjs.entry.js +4 -5
  20. package/dist/cjs/ionic.cjs.js +1 -1
  21. package/dist/cjs/loader.cjs.js +1 -1
  22. package/dist/collection/components/checkbox/checkbox.js +4 -23
  23. package/dist/collection/components/content/content.js +4 -4
  24. package/dist/collection/components/modal/animations/ios.enter.js +4 -50
  25. package/dist/collection/components/modal/animations/ios.leave.js +2 -24
  26. package/dist/collection/components/modal/animations/md.enter.js +5 -52
  27. package/dist/collection/components/modal/animations/md.leave.js +3 -26
  28. package/dist/collection/components/modal/animations/sheet.js +2 -11
  29. package/dist/collection/components/modal/gestures/sheet.js +10 -79
  30. package/dist/collection/components/modal/modal.ios.css +0 -16
  31. package/dist/collection/components/modal/modal.js +7 -32
  32. package/dist/collection/components/modal/modal.md.css +0 -6
  33. package/dist/collection/components/radio/radio.ios.css +52 -15
  34. package/dist/collection/components/radio/radio.js +70 -3
  35. package/dist/collection/components/radio/radio.md.css +52 -15
  36. package/dist/collection/components/select/select.js +4 -23
  37. package/dist/collection/components/tab/tab.js +2 -2
  38. package/dist/collection/components/tab-button/tab-button.js +1 -1
  39. package/dist/collection/components/tabs/tabs.js +1 -2
  40. package/dist/collection/components/toggle/toggle.js +4 -23
  41. package/dist/docs.json +73 -89
  42. package/dist/esm/ion-app_8.entry.js +4 -4
  43. package/dist/esm/ion-checkbox.entry.js +4 -5
  44. package/dist/esm/ion-modal.entry.js +35 -258
  45. package/dist/esm/ion-radio_2.entry.js +35 -5
  46. package/dist/esm/ion-select_3.entry.js +4 -5
  47. package/dist/esm/ion-tab-bar_2.entry.js +1 -1
  48. package/dist/esm/ion-tab_2.entry.js +3 -4
  49. package/dist/esm/ion-toggle.entry.js +4 -5
  50. package/dist/esm/ionic.js +1 -1
  51. package/dist/esm/loader.js +1 -1
  52. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  53. package/dist/esm-es5/ion-checkbox.entry.js +1 -1
  54. package/dist/esm-es5/ion-modal.entry.js +1 -1
  55. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  56. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  57. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  58. package/dist/esm-es5/ion-tab_2.entry.js +1 -1
  59. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  60. package/dist/esm-es5/ionic.js +1 -1
  61. package/dist/esm-es5/loader.js +1 -1
  62. package/dist/html.html-data.json +8 -16
  63. package/dist/ionic/ionic.esm.js +1 -1
  64. package/dist/ionic/p-1a11f49f.entry.js +4 -0
  65. package/dist/ionic/p-1b1af767.system.entry.js +4 -0
  66. package/dist/ionic/p-2172893e.system.entry.js +4 -0
  67. package/dist/ionic/p-322c5fb4.system.js +1 -1
  68. package/dist/ionic/p-4ec778aa.entry.js +4 -0
  69. package/dist/ionic/p-5ab1b709.entry.js +4 -0
  70. package/dist/ionic/{p-8ac07653.system.entry.js → p-69666e8a.system.entry.js} +2 -2
  71. package/dist/ionic/{p-1199e388.system.entry.js → p-797eeea8.system.entry.js} +1 -1
  72. package/dist/ionic/p-908d6080.entry.js +4 -0
  73. package/dist/ionic/p-92a0f863.entry.js +4 -0
  74. package/dist/ionic/p-98ff6b32.entry.js +4 -0
  75. package/dist/ionic/p-a0eb506c.system.entry.js +4 -0
  76. package/dist/ionic/p-bc64bd27.system.entry.js +4 -0
  77. package/dist/ionic/p-e06057c9.entry.js +4 -0
  78. package/dist/ionic/{p-bdf2cb2e.system.entry.js → p-ebf042e0.system.entry.js} +1 -1
  79. package/dist/ionic/p-f55baa37.entry.js +4 -0
  80. package/dist/ionic/{p-9f364443.system.entry.js → p-fd1c40cc.system.entry.js} +1 -1
  81. package/dist/types/components/checkbox/checkbox.d.ts +0 -6
  82. package/dist/types/components/modal/animations/sheet.d.ts +0 -1
  83. package/dist/types/components/modal/gestures/sheet.d.ts +1 -1
  84. package/dist/types/components/modal/modal-interface.d.ts +0 -1
  85. package/dist/types/components/modal/modal.d.ts +0 -11
  86. package/dist/types/components/radio/radio.d.ts +19 -0
  87. package/dist/types/components/select/select.d.ts +0 -6
  88. package/dist/types/components/toggle/toggle.d.ts +0 -6
  89. package/dist/types/components.d.ts +16 -32
  90. package/hydrate/index.js +95 -291
  91. package/hydrate/index.mjs +95 -291
  92. package/package.json +1 -1
  93. package/dist/ionic/p-0430c2e0.entry.js +0 -4
  94. package/dist/ionic/p-126be614.system.entry.js +0 -4
  95. package/dist/ionic/p-6c95736e.entry.js +0 -4
  96. package/dist/ionic/p-6d6cedc5.entry.js +0 -4
  97. package/dist/ionic/p-722ec9c7.entry.js +0 -4
  98. package/dist/ionic/p-783411f1.entry.js +0 -4
  99. package/dist/ionic/p-7ddc46c3.system.entry.js +0 -4
  100. package/dist/ionic/p-98e41e4f.system.entry.js +0 -4
  101. package/dist/ionic/p-d57a57d6.entry.js +0 -4
  102. package/dist/ionic/p-d7dd8fb1.entry.js +0 -4
  103. package/dist/ionic/p-e3171ff3.entry.js +0 -4
  104. package/dist/ionic/p-e6376b93.system.entry.js +0 -4
@@ -506,7 +506,7 @@ const computeDuration = (remaining, velocity) => {
506
506
  };
507
507
 
508
508
  const createSheetEnterAnimation = (opts) => {
509
- const { currentBreakpoint, backdropBreakpoint, expandToScroll } = opts;
509
+ const { currentBreakpoint, backdropBreakpoint } = opts;
510
510
  /**
511
511
  * If the backdropBreakpoint is undefined, then the backdrop
512
512
  * should always fade in. If the backdropBreakpoint came before the
@@ -526,16 +526,7 @@ const createSheetEnterAnimation = (opts) => {
526
526
  { offset: 0, opacity: 1, transform: 'translateY(100%)' },
527
527
  { offset: 1, opacity: 1, transform: `translateY(${100 - currentBreakpoint * 100}%)` },
528
528
  ]);
529
- /**
530
- * This allows the content to be scrollable at any breakpoint.
531
- */
532
- const contentAnimation = !expandToScroll
533
- ? animation.createAnimation('contentAnimation').keyframes([
534
- { offset: 0, opacity: 1, maxHeight: `${(1 - currentBreakpoint) * 100}%` },
535
- { offset: 1, opacity: 1, maxHeight: `${currentBreakpoint * 100}%` },
536
- ])
537
- : undefined;
538
- return { wrapperAnimation, backdropAnimation, contentAnimation };
529
+ return { wrapperAnimation, backdropAnimation };
539
530
  };
540
531
  const createSheetLeaveAnimation = (opts) => {
541
532
  const { currentBreakpoint, backdropBreakpoint } = opts;
@@ -570,68 +561,22 @@ const createEnterAnimation$1 = () => {
570
561
  })
571
562
  .afterClearStyles(['pointer-events']);
572
563
  const wrapperAnimation = animation.createAnimation().fromTo('transform', 'translateY(100vh)', 'translateY(0vh)');
573
- return { backdropAnimation, wrapperAnimation, contentAnimation: undefined };
564
+ return { backdropAnimation, wrapperAnimation };
574
565
  };
575
566
  /**
576
567
  * iOS Modal Enter Animation for the Card presentation style
577
568
  */
578
569
  const iosEnterAnimation = (baseEl, opts) => {
579
- const { presentingEl, currentBreakpoint, expandToScroll } = opts;
570
+ const { presentingEl, currentBreakpoint } = opts;
580
571
  const root = helpers.getElementRoot(baseEl);
581
- const { wrapperAnimation, backdropAnimation, contentAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation$1();
572
+ const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation$1();
582
573
  backdropAnimation.addElement(root.querySelector('ion-backdrop'));
583
574
  wrapperAnimation.addElement(root.querySelectorAll('.modal-wrapper, .modal-shadow')).beforeStyles({ opacity: 1 });
584
- // The content animation is only added if scrolling is enabled for
585
- // all the breakpoints.
586
- !expandToScroll && (contentAnimation === null || contentAnimation === void 0 ? void 0 : contentAnimation.addElement(baseEl.querySelector('.ion-page')));
587
575
  const baseAnimation = animation.createAnimation('entering-base')
588
576
  .addElement(baseEl)
589
577
  .easing('cubic-bezier(0.32,0.72,0,1)')
590
578
  .duration(500)
591
- .addAnimation([wrapperAnimation])
592
- .beforeAddWrite(() => {
593
- if (expandToScroll) {
594
- // Scroll can only be done when the modal is fully expanded.
595
- return;
596
- }
597
- /**
598
- * There are some browsers that causes flickering when
599
- * dragging the content when scroll is enabled at every
600
- * breakpoint. This is due to the wrapper element being
601
- * transformed off the screen and having a snap animation.
602
- *
603
- * A workaround is to clone the footer element and append
604
- * it outside of the wrapper element. This way, the footer
605
- * is still visible and the drag can be done without
606
- * flickering. The original footer is hidden until the modal
607
- * is dismissed. This maintains the animation of the footer
608
- * when the modal is dismissed.
609
- *
610
- * The workaround needs to be done before the animation starts
611
- * so there are no flickering issues.
612
- */
613
- const ionFooter = baseEl.querySelector('ion-footer');
614
- /**
615
- * This check is needed to prevent more than one footer
616
- * from being appended to the shadow root.
617
- * Otherwise, iOS and MD enter animations would append
618
- * the footer twice.
619
- */
620
- const ionFooterAlreadyAppended = baseEl.shadowRoot.querySelector('ion-footer');
621
- if (ionFooter && !ionFooterAlreadyAppended) {
622
- const footerHeight = ionFooter.clientHeight;
623
- const clonedFooter = ionFooter.cloneNode(true);
624
- baseEl.shadowRoot.appendChild(clonedFooter);
625
- ionFooter.style.setProperty('display', 'none');
626
- ionFooter.setAttribute('aria-hidden', 'true');
627
- // Padding is added to prevent some content from being hidden.
628
- const page = baseEl.querySelector('.ion-page');
629
- page.style.setProperty('padding-bottom', `${footerHeight}px`);
630
- }
631
- });
632
- if (contentAnimation) {
633
- baseAnimation.addAnimation(contentAnimation);
634
- }
579
+ .addAnimation(wrapperAnimation);
635
580
  if (presentingEl) {
636
581
  const isMobile = window.innerWidth < 768;
637
582
  const hasCardModal = presentingEl.tagName === 'ION-MODAL' && presentingEl.presentingElement !== undefined;
@@ -709,7 +654,7 @@ const createLeaveAnimation$1 = () => {
709
654
  * iOS Modal Leave Animation
710
655
  */
711
656
  const iosLeaveAnimation = (baseEl, opts, duration = 500) => {
712
- const { presentingEl, currentBreakpoint, expandToScroll } = opts;
657
+ const { presentingEl, currentBreakpoint } = opts;
713
658
  const root = helpers.getElementRoot(baseEl);
714
659
  const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetLeaveAnimation(opts) : createLeaveAnimation$1();
715
660
  backdropAnimation.addElement(root.querySelector('ion-backdrop'));
@@ -718,29 +663,7 @@ const iosLeaveAnimation = (baseEl, opts, duration = 500) => {
718
663
  .addElement(baseEl)
719
664
  .easing('cubic-bezier(0.32,0.72,0,1)')
720
665
  .duration(duration)
721
- .addAnimation(wrapperAnimation)
722
- .beforeAddWrite(() => {
723
- if (expandToScroll) {
724
- // Scroll can only be done when the modal is fully expanded.
725
- return;
726
- }
727
- /**
728
- * If expandToScroll is disabled, we need to swap
729
- * the visibility to the original, so the footer
730
- * dismisses with the modal and doesn't stay
731
- * until the modal is removed from the DOM.
732
- */
733
- const ionFooter = baseEl.querySelector('ion-footer');
734
- if (ionFooter) {
735
- const clonedFooter = baseEl.shadowRoot.querySelector('ion-footer');
736
- ionFooter.style.removeProperty('display');
737
- ionFooter.removeAttribute('aria-hidden');
738
- clonedFooter.style.setProperty('display', 'none');
739
- clonedFooter.setAttribute('aria-hidden', 'true');
740
- const page = baseEl.querySelector('.ion-page');
741
- page.style.removeProperty('padding-bottom');
742
- }
743
- });
666
+ .addAnimation(wrapperAnimation);
744
667
  if (presentingEl) {
745
668
  const isMobile = window.innerWidth < 768;
746
669
  const hasCardModal = presentingEl.tagName === 'ION-MODAL' && presentingEl.presentingElement !== undefined;
@@ -818,69 +741,22 @@ const createEnterAnimation = () => {
818
741
  { offset: 0, opacity: 0.01, transform: 'translateY(40px)' },
819
742
  { offset: 1, opacity: 1, transform: `translateY(0px)` },
820
743
  ]);
821
- return { backdropAnimation, wrapperAnimation, contentAnimation: undefined };
744
+ return { backdropAnimation, wrapperAnimation };
822
745
  };
823
746
  /**
824
747
  * Md Modal Enter Animation
825
748
  */
826
749
  const mdEnterAnimation = (baseEl, opts) => {
827
- const { currentBreakpoint, expandToScroll } = opts;
750
+ const { currentBreakpoint } = opts;
828
751
  const root = helpers.getElementRoot(baseEl);
829
- const { wrapperAnimation, backdropAnimation, contentAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation();
752
+ const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation();
830
753
  backdropAnimation.addElement(root.querySelector('ion-backdrop'));
831
754
  wrapperAnimation.addElement(root.querySelector('.modal-wrapper'));
832
- // The content animation is only added if scrolling is enabled for
833
- // all the breakpoints.
834
- expandToScroll && (contentAnimation === null || contentAnimation === void 0 ? void 0 : contentAnimation.addElement(baseEl.querySelector('.ion-page')));
835
- const baseAnimation = animation.createAnimation()
755
+ return animation.createAnimation()
836
756
  .addElement(baseEl)
837
757
  .easing('cubic-bezier(0.36,0.66,0.04,1)')
838
758
  .duration(280)
839
- .addAnimation([backdropAnimation, wrapperAnimation])
840
- .beforeAddWrite(() => {
841
- if (expandToScroll) {
842
- // Scroll can only be done when the modal is fully expanded.
843
- return;
844
- }
845
- /**
846
- * There are some browsers that causes flickering when
847
- * dragging the content when scroll is enabled at every
848
- * breakpoint. This is due to the wrapper element being
849
- * transformed off the screen and having a snap animation.
850
- *
851
- * A workaround is to clone the footer element and append
852
- * it outside of the wrapper element. This way, the footer
853
- * is still visible and the drag can be done without
854
- * flickering. The original footer is hidden until the modal
855
- * is dismissed. This maintains the animation of the footer
856
- * when the modal is dismissed.
857
- *
858
- * The workaround needs to be done before the animation starts
859
- * so there are no flickering issues.
860
- */
861
- const ionFooter = baseEl.querySelector('ion-footer');
862
- /**
863
- * This check is needed to prevent more than one footer
864
- * from being appended to the shadow root.
865
- * Otherwise, iOS and MD enter animations would append
866
- * the footer twice.
867
- */
868
- const ionFooterAlreadyAppended = baseEl.shadowRoot.querySelector('ion-footer');
869
- if (ionFooter && !ionFooterAlreadyAppended) {
870
- const footerHeight = ionFooter.clientHeight;
871
- const clonedFooter = ionFooter.cloneNode(true);
872
- baseEl.shadowRoot.appendChild(clonedFooter);
873
- ionFooter.style.setProperty('display', 'none');
874
- ionFooter.setAttribute('aria-hidden', 'true');
875
- // Padding is added to prevent some content from being hidden.
876
- const page = baseEl.querySelector('.ion-page');
877
- page.style.setProperty('padding-bottom', `${footerHeight}px`);
878
- }
879
- });
880
- if (contentAnimation) {
881
- baseAnimation.addAnimation(contentAnimation);
882
- }
883
- return baseAnimation;
759
+ .addAnimation([backdropAnimation, wrapperAnimation]);
884
760
  };
885
761
 
886
762
  const createLeaveAnimation = () => {
@@ -895,41 +771,18 @@ const createLeaveAnimation = () => {
895
771
  * Md Modal Leave Animation
896
772
  */
897
773
  const mdLeaveAnimation = (baseEl, opts) => {
898
- const { currentBreakpoint, expandToScroll } = opts;
774
+ const { currentBreakpoint } = opts;
899
775
  const root = helpers.getElementRoot(baseEl);
900
776
  const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetLeaveAnimation(opts) : createLeaveAnimation();
901
777
  backdropAnimation.addElement(root.querySelector('ion-backdrop'));
902
778
  wrapperAnimation.addElement(root.querySelector('.modal-wrapper'));
903
- const baseAnimation = animation.createAnimation()
779
+ return animation.createAnimation()
904
780
  .easing('cubic-bezier(0.47,0,0.745,0.715)')
905
781
  .duration(200)
906
- .addAnimation([backdropAnimation, wrapperAnimation])
907
- .beforeAddWrite(() => {
908
- if (expandToScroll) {
909
- // Scroll can only be done when the modal is fully expanded.
910
- return;
911
- }
912
- /**
913
- * If expandToScroll is disabled, we need to swap
914
- * the visibility to the original, so the footer
915
- * dismisses with the modal and doesn't stay
916
- * until the modal is removed from the DOM.
917
- */
918
- const ionFooter = baseEl.querySelector('ion-footer');
919
- if (ionFooter) {
920
- const clonedFooter = baseEl.shadowRoot.querySelector('ion-footer');
921
- ionFooter.style.removeProperty('display');
922
- ionFooter.removeAttribute('aria-hidden');
923
- clonedFooter.style.setProperty('display', 'none');
924
- clonedFooter.setAttribute('aria-hidden', 'true');
925
- const page = baseEl.querySelector('.ion-page');
926
- page.style.removeProperty('padding-bottom');
927
- }
928
- });
929
- return baseAnimation;
782
+ .addAnimation([backdropAnimation, wrapperAnimation]);
930
783
  };
931
784
 
932
- const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, animation, breakpoints = [], expandToScroll, getCurrentBreakpoint, onDismiss, onBreakpointChange) => {
785
+ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, animation, breakpoints = [], getCurrentBreakpoint, onDismiss, onBreakpointChange) => {
933
786
  // Defaults for the sheet swipe animation
934
787
  const defaultBackdrop = [
935
788
  { offset: 0, opacity: 'var(--backdrop-opacity)' },
@@ -946,10 +799,6 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
946
799
  { offset: 1, transform: 'translateY(100%)' },
947
800
  ],
948
801
  BACKDROP_KEYFRAMES: backdropBreakpoint !== 0 ? customBackdrop : defaultBackdrop,
949
- CONTENT_KEYFRAMES: [
950
- { offset: 0, maxHeight: '100%' },
951
- { offset: 1, maxHeight: '0%' },
952
- ],
953
802
  };
954
803
  const contentEl = baseEl.querySelector('ion-content');
955
804
  const height = wrapperEl.clientHeight;
@@ -957,11 +806,10 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
957
806
  let offset = 0;
958
807
  let canDismissBlocksGesture = false;
959
808
  const canDismissMaxStep = 0.95;
960
- const maxBreakpoint = breakpoints[breakpoints.length - 1];
961
- const minBreakpoint = breakpoints[0];
962
809
  const wrapperAnimation = animation.childAnimations.find((ani) => ani.id === 'wrapperAnimation');
963
810
  const backdropAnimation = animation.childAnimations.find((ani) => ani.id === 'backdropAnimation');
964
- const contentAnimation = animation.childAnimations.find((ani) => ani.id === 'contentAnimation');
811
+ const maxBreakpoint = breakpoints[breakpoints.length - 1];
812
+ const minBreakpoint = breakpoints[0];
965
813
  const enableBackdrop = () => {
966
814
  baseEl.style.setProperty('pointer-events', 'auto');
967
815
  backdropEl.style.setProperty('pointer-events', 'auto');
@@ -984,31 +832,6 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
984
832
  */
985
833
  baseEl.classList.add(overlays.FOCUS_TRAP_DISABLE_CLASS);
986
834
  };
987
- /**
988
- * Toggles the visible modal footer when `expandToScroll` is disabled.
989
- * @param footer The footer to show.
990
- */
991
- const swapFooterVisibility = (footer) => {
992
- const originalFooter = baseEl.querySelector('ion-footer');
993
- if (!originalFooter) {
994
- return;
995
- }
996
- const clonedFooter = wrapperEl.nextElementSibling;
997
- const footerToHide = footer === 'original' ? clonedFooter : originalFooter;
998
- const footerToShow = footer === 'original' ? originalFooter : clonedFooter;
999
- footerToShow.style.removeProperty('display');
1000
- footerToShow.removeAttribute('aria-hidden');
1001
- const page = baseEl.querySelector('.ion-page');
1002
- if (footer === 'original') {
1003
- page.style.removeProperty('padding-bottom');
1004
- }
1005
- else {
1006
- const pagePadding = footerToShow.clientHeight;
1007
- page.style.setProperty('padding-bottom', `${pagePadding}px`);
1008
- }
1009
- footerToHide.style.setProperty('display', 'none');
1010
- footerToHide.setAttribute('aria-hidden', 'true');
1011
- };
1012
835
  /**
1013
836
  * After the entering animation completes,
1014
837
  * we need to set the animation to go from
@@ -1020,7 +843,6 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
1020
843
  if (wrapperAnimation && backdropAnimation) {
1021
844
  wrapperAnimation.keyframes([...SheetDefaults.WRAPPER_KEYFRAMES]);
1022
845
  backdropAnimation.keyframes([...SheetDefaults.BACKDROP_KEYFRAMES]);
1023
- contentAnimation === null || contentAnimation === void 0 ? void 0 : contentAnimation.keyframes([...SheetDefaults.CONTENT_KEYFRAMES]);
1024
846
  animation.progressStart(true, 1 - currentBreakpoint);
1025
847
  /**
1026
848
  * If backdrop is not enabled, then content
@@ -1037,7 +859,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
1037
859
  disableBackdrop();
1038
860
  }
1039
861
  }
1040
- if (contentEl && currentBreakpoint !== maxBreakpoint && expandToScroll) {
862
+ if (contentEl && currentBreakpoint !== maxBreakpoint) {
1041
863
  contentEl.scrollY = false;
1042
864
  }
1043
865
  const canStart = (detail) => {
@@ -1051,13 +873,6 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
1051
873
  */
1052
874
  const contentEl = index$2.findClosestIonContent(detail.event.target);
1053
875
  currentBreakpoint = getCurrentBreakpoint();
1054
- /**
1055
- * If we have expandToScroll disabled, we should not allow the swipe gesture to start
1056
- * if the content is being swiped.
1057
- */
1058
- if (!expandToScroll && contentEl) {
1059
- return false;
1060
- }
1061
876
  if (currentBreakpoint === 1 && contentEl) {
1062
877
  /**
1063
878
  * The modal should never swipe to close on the content with a refresher.
@@ -1088,15 +903,6 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
1088
903
  * Remove undefined check
1089
904
  */
1090
905
  canDismissBlocksGesture = baseEl.canDismiss !== undefined && baseEl.canDismiss !== true && minBreakpoint === 0;
1091
- /**
1092
- * If expandToScroll is disabled, we need to swap
1093
- * the footer visibility to the original, so if the modal
1094
- * is dismissed, the footer dismisses with the modal
1095
- * and doesn't stay on the screen after the modal is gone.
1096
- */
1097
- if (!expandToScroll) {
1098
- swapFooterVisibility('original');
1099
- }
1100
906
  /**
1101
907
  * If we are pulling down, then it is possible we are pulling on the content.
1102
908
  * We do not want scrolling to happen at the same time as the gesture.
@@ -1212,19 +1018,6 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
1212
1018
  opacity: `calc(var(--backdrop-opacity) * ${getBackdropValueForSheet(snapToBreakpoint, backdropBreakpoint)})`,
1213
1019
  },
1214
1020
  ]);
1215
- if (contentAnimation) {
1216
- /**
1217
- * The modal content should scroll at any breakpoint when expandToScroll
1218
- * is disabled. In order to do this, the content needs to be completely
1219
- * viewable so scrolling can access everything. Otherwise, the default
1220
- * behavior would show the content off the screen and only allow
1221
- * scrolling when the sheet is fully expanded.
1222
- */
1223
- contentAnimation.keyframes([
1224
- { offset: 0, maxHeight: `${(1 - breakpointOffset) * 100}%` },
1225
- { offset: 1, maxHeight: `${snapToBreakpoint * 100}%` },
1226
- ]);
1227
- }
1228
1021
  animation.progressStep(0);
1229
1022
  }
1230
1023
  /**
@@ -1232,14 +1025,6 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
1232
1025
  * snapping animation completes.
1233
1026
  */
1234
1027
  gesture.enable(false);
1235
- /**
1236
- * If expandToScroll is disabled, we need to swap
1237
- * the footer visibility to the cloned one so the footer
1238
- * doesn't flicker when the sheet's height is animated.
1239
- */
1240
- if (!expandToScroll && shouldRemainOpen) {
1241
- swapFooterVisibility('cloned');
1242
- }
1243
1028
  if (shouldPreventDismiss) {
1244
1029
  handleCanDismiss(baseEl, animation);
1245
1030
  }
@@ -1247,13 +1032,13 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
1247
1032
  onDismiss();
1248
1033
  }
1249
1034
  /**
1250
- * Enables scrolling immediately if the sheet is about to fully expand
1251
- * or if it allows scrolling at any breakpoint. Without this, there would
1252
- * be a ~500ms delay while the modal animation completes, causing a
1253
- * noticeable lag. Native iOS allows scrolling as soon as the gesture is
1254
- * released, so we align with that behavior.
1035
+ * If the sheet is going to be fully expanded then we should enable
1036
+ * scrolling immediately. The sheet modal animation takes ~500ms to finish
1037
+ * so if we wait until then there is a visible delay for when scrolling is
1038
+ * re-enabled. Native iOS allows for scrolling on the sheet modal as soon
1039
+ * as the gesture is released, so we align with that.
1255
1040
  */
1256
- if (contentEl && (snapToBreakpoint === breakpoints[breakpoints.length - 1] || !expandToScroll)) {
1041
+ if (contentEl && snapToBreakpoint === breakpoints[breakpoints.length - 1]) {
1257
1042
  contentEl.scrollY = true;
1258
1043
  }
1259
1044
  return new Promise((resolve) => {
@@ -1271,7 +1056,6 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
1271
1056
  helpers.raf(() => {
1272
1057
  wrapperAnimation.keyframes([...SheetDefaults.WRAPPER_KEYFRAMES]);
1273
1058
  backdropAnimation.keyframes([...SheetDefaults.BACKDROP_KEYFRAMES]);
1274
- contentAnimation === null || contentAnimation === void 0 ? void 0 : contentAnimation.keyframes([...SheetDefaults.CONTENT_KEYFRAMES]);
1275
1059
  animation.progressStart(true, 1 - snapToBreakpoint);
1276
1060
  currentBreakpoint = snapToBreakpoint;
1277
1061
  onBreakpointChange(currentBreakpoint);
@@ -1324,10 +1108,10 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
1324
1108
  };
1325
1109
  };
1326
1110
 
1327
- const modalIosCss = ":host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--overflow:hidden;--border-radius:0;--border-width:0;--border-style:none;--border-color:transparent;--background:var(--ion-background-color, #fff);--box-shadow:none;--backdrop-opacity:0;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);contain:strict}.modal-wrapper,ion-backdrop{pointer-events:auto}:host(.overlay-hidden){display:none}.modal-wrapper,.modal-shadow{border-radius:var(--border-radius);width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:var(--overflow);z-index:10}.modal-shadow{position:absolute;background:transparent}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--width:600px;--height:500px;--ion-safe-area-top:0px;--ion-safe-area-bottom:0px;--ion-safe-area-right:0px;--ion-safe-area-left:0px}}@media only screen and (min-width: 768px) and (min-height: 768px){:host{--width:600px;--height:600px}}.modal-handle{left:0px;right:0px;top:5px;border-radius:8px;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;position:absolute;width:36px;height:5px;-webkit-transform:translateZ(0);transform:translateZ(0);border:0;background:var(--ion-color-step-350, var(--ion-background-color-step-350, #c0c0be));cursor:pointer;z-index:11}.modal-handle::before{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;position:absolute;width:36px;height:5px;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);content:\"\"}:host(.modal-sheet){--height:calc(100% - (var(--ion-safe-area-top) + 10px))}:host(.modal-sheet) .modal-wrapper,:host(.modal-sheet) .modal-shadow{position:absolute;bottom:0}:host(.modal-sheet.modal-no-expand-scroll) ion-footer{position:absolute;bottom:0;width:var(--width)}:host{--backdrop-opacity:var(--ion-backdrop-opacity, 0.4)}:host(.modal-card),:host(.modal-sheet){--border-radius:10px}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--border-radius:10px}}.modal-wrapper{-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0)}@media screen and (max-width: 767px){@supports (width: max(0px, 1px)){:host(.modal-card){--height:calc(100% - max(30px, var(--ion-safe-area-top)) - 10px)}}@supports not (width: max(0px, 1px)){:host(.modal-card){--height:calc(100% - 40px)}}:host(.modal-card) .modal-wrapper{border-start-start-radius:var(--border-radius);border-start-end-radius:var(--border-radius);border-end-end-radius:0;border-end-start-radius:0}:host(.modal-card){--backdrop-opacity:0;--width:100%;-ms-flex-align:end;align-items:flex-end}:host(.modal-card) .modal-shadow{display:none}:host(.modal-card) ion-backdrop{pointer-events:none}}@media screen and (min-width: 768px){:host(.modal-card){--width:calc(100% - 120px);--height:calc(100% - (120px + var(--ion-safe-area-top) + var(--ion-safe-area-bottom)));--max-width:720px;--max-height:1000px;--backdrop-opacity:0;--box-shadow:0px 0px 30px 10px rgba(0, 0, 0, 0.1);-webkit-transition:all 0.5s ease-in-out;transition:all 0.5s ease-in-out}:host(.modal-card) .modal-wrapper{-webkit-box-shadow:none;box-shadow:none}:host(.modal-card) .modal-shadow{-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow)}}:host(.modal-sheet) .modal-wrapper{border-start-start-radius:var(--border-radius);border-start-end-radius:var(--border-radius);border-end-end-radius:0;border-end-start-radius:0}:host(.modal-sheet.modal-no-expand-scroll) ion-footer ion-toolbar:first-of-type{padding-top:6px}";
1111
+ const modalIosCss = ":host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--overflow:hidden;--border-radius:0;--border-width:0;--border-style:none;--border-color:transparent;--background:var(--ion-background-color, #fff);--box-shadow:none;--backdrop-opacity:0;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);contain:strict}.modal-wrapper,ion-backdrop{pointer-events:auto}:host(.overlay-hidden){display:none}.modal-wrapper,.modal-shadow{border-radius:var(--border-radius);width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:var(--overflow);z-index:10}.modal-shadow{position:absolute;background:transparent}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--width:600px;--height:500px;--ion-safe-area-top:0px;--ion-safe-area-bottom:0px;--ion-safe-area-right:0px;--ion-safe-area-left:0px}}@media only screen and (min-width: 768px) and (min-height: 768px){:host{--width:600px;--height:600px}}.modal-handle{left:0px;right:0px;top:5px;border-radius:8px;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;position:absolute;width:36px;height:5px;-webkit-transform:translateZ(0);transform:translateZ(0);border:0;background:var(--ion-color-step-350, var(--ion-background-color-step-350, #c0c0be));cursor:pointer;z-index:11}.modal-handle::before{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;position:absolute;width:36px;height:5px;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);content:\"\"}:host(.modal-sheet){--height:calc(100% - (var(--ion-safe-area-top) + 10px))}:host(.modal-sheet) .modal-wrapper,:host(.modal-sheet) .modal-shadow{position:absolute;bottom:0}:host{--backdrop-opacity:var(--ion-backdrop-opacity, 0.4)}:host(.modal-card),:host(.modal-sheet){--border-radius:10px}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--border-radius:10px}}.modal-wrapper{-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0)}@media screen and (max-width: 767px){@supports (width: max(0px, 1px)){:host(.modal-card){--height:calc(100% - max(30px, var(--ion-safe-area-top)) - 10px)}}@supports not (width: max(0px, 1px)){:host(.modal-card){--height:calc(100% - 40px)}}:host(.modal-card) .modal-wrapper{border-start-start-radius:var(--border-radius);border-start-end-radius:var(--border-radius);border-end-end-radius:0;border-end-start-radius:0}:host(.modal-card){--backdrop-opacity:0;--width:100%;-ms-flex-align:end;align-items:flex-end}:host(.modal-card) .modal-shadow{display:none}:host(.modal-card) ion-backdrop{pointer-events:none}}@media screen and (min-width: 768px){:host(.modal-card){--width:calc(100% - 120px);--height:calc(100% - (120px + var(--ion-safe-area-top) + var(--ion-safe-area-bottom)));--max-width:720px;--max-height:1000px;--backdrop-opacity:0;--box-shadow:0px 0px 30px 10px rgba(0, 0, 0, 0.1);-webkit-transition:all 0.5s ease-in-out;transition:all 0.5s ease-in-out}:host(.modal-card) .modal-wrapper{-webkit-box-shadow:none;box-shadow:none}:host(.modal-card) .modal-shadow{-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow)}}:host(.modal-sheet) .modal-wrapper{border-start-start-radius:var(--border-radius);border-start-end-radius:var(--border-radius);border-end-end-radius:0;border-end-start-radius:0}";
1328
1112
  const IonModalIosStyle0 = modalIosCss;
1329
1113
 
1330
- const modalMdCss = ":host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--overflow:hidden;--border-radius:0;--border-width:0;--border-style:none;--border-color:transparent;--background:var(--ion-background-color, #fff);--box-shadow:none;--backdrop-opacity:0;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);contain:strict}.modal-wrapper,ion-backdrop{pointer-events:auto}:host(.overlay-hidden){display:none}.modal-wrapper,.modal-shadow{border-radius:var(--border-radius);width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:var(--overflow);z-index:10}.modal-shadow{position:absolute;background:transparent}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--width:600px;--height:500px;--ion-safe-area-top:0px;--ion-safe-area-bottom:0px;--ion-safe-area-right:0px;--ion-safe-area-left:0px}}@media only screen and (min-width: 768px) and (min-height: 768px){:host{--width:600px;--height:600px}}.modal-handle{left:0px;right:0px;top:5px;border-radius:8px;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;position:absolute;width:36px;height:5px;-webkit-transform:translateZ(0);transform:translateZ(0);border:0;background:var(--ion-color-step-350, var(--ion-background-color-step-350, #c0c0be));cursor:pointer;z-index:11}.modal-handle::before{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;position:absolute;width:36px;height:5px;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);content:\"\"}:host(.modal-sheet){--height:calc(100% - (var(--ion-safe-area-top) + 10px))}:host(.modal-sheet) .modal-wrapper,:host(.modal-sheet) .modal-shadow{position:absolute;bottom:0}:host(.modal-sheet.modal-no-expand-scroll) ion-footer{position:absolute;bottom:0;width:var(--width)}:host{--backdrop-opacity:var(--ion-backdrop-opacity, 0.32)}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--border-radius:2px;--box-shadow:0 28px 48px rgba(0, 0, 0, 0.4)}}.modal-wrapper{-webkit-transform:translate3d(0, 40px, 0);transform:translate3d(0, 40px, 0);opacity:0.01}";
1114
+ const modalMdCss = ":host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--overflow:hidden;--border-radius:0;--border-width:0;--border-style:none;--border-color:transparent;--background:var(--ion-background-color, #fff);--box-shadow:none;--backdrop-opacity:0;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);contain:strict}.modal-wrapper,ion-backdrop{pointer-events:auto}:host(.overlay-hidden){display:none}.modal-wrapper,.modal-shadow{border-radius:var(--border-radius);width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:var(--overflow);z-index:10}.modal-shadow{position:absolute;background:transparent}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--width:600px;--height:500px;--ion-safe-area-top:0px;--ion-safe-area-bottom:0px;--ion-safe-area-right:0px;--ion-safe-area-left:0px}}@media only screen and (min-width: 768px) and (min-height: 768px){:host{--width:600px;--height:600px}}.modal-handle{left:0px;right:0px;top:5px;border-radius:8px;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;position:absolute;width:36px;height:5px;-webkit-transform:translateZ(0);transform:translateZ(0);border:0;background:var(--ion-color-step-350, var(--ion-background-color-step-350, #c0c0be));cursor:pointer;z-index:11}.modal-handle::before{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;position:absolute;width:36px;height:5px;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);content:\"\"}:host(.modal-sheet){--height:calc(100% - (var(--ion-safe-area-top) + 10px))}:host(.modal-sheet) .modal-wrapper,:host(.modal-sheet) .modal-shadow{position:absolute;bottom:0}:host{--backdrop-opacity:var(--ion-backdrop-opacity, 0.32)}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--border-radius:2px;--box-shadow:0 28px 48px rgba(0, 0, 0, 0.4)}}.modal-wrapper{-webkit-transform:translate3d(0, 40px, 0);transform:translate3d(0, 40px, 0);opacity:0.01}";
1331
1115
  const IonModalMdStyle0 = modalMdCss;
1332
1116
 
1333
1117
  const Modal = class {
@@ -1396,7 +1180,6 @@ const Modal = class {
1396
1180
  this.enterAnimation = undefined;
1397
1181
  this.leaveAnimation = undefined;
1398
1182
  this.breakpoints = undefined;
1399
- this.expandToScroll = true;
1400
1183
  this.initialBreakpoint = undefined;
1401
1184
  this.backdropBreakpoint = 0;
1402
1185
  this.handle = undefined;
@@ -1612,7 +1395,6 @@ const Modal = class {
1612
1395
  presentingEl: presentingElement,
1613
1396
  currentBreakpoint: this.initialBreakpoint,
1614
1397
  backdropBreakpoint: this.backdropBreakpoint,
1615
- expandToScroll: this.expandToScroll,
1616
1398
  });
1617
1399
  /* tslint:disable-next-line */
1618
1400
  if (typeof window !== 'undefined') {
@@ -1663,10 +1445,7 @@ const Modal = class {
1663
1445
  // should be in the DOM and referenced by now, except
1664
1446
  // for the presenting el
1665
1447
  const animationBuilder = this.leaveAnimation || ionicGlobal.config.get('modalLeave', iosLeaveAnimation);
1666
- const ani = (this.animation = animationBuilder(el, {
1667
- presentingEl: this.presentingElement,
1668
- expandToScroll: this.expandToScroll,
1669
- }));
1448
+ const ani = (this.animation = animationBuilder(el, { presentingEl: this.presentingElement }));
1670
1449
  const contentEl = index$2.findIonContent(el);
1671
1450
  if (!contentEl) {
1672
1451
  index$2.printIonContentErrorMsg(el);
@@ -1711,10 +1490,9 @@ const Modal = class {
1711
1490
  presentingEl: this.presentingElement,
1712
1491
  currentBreakpoint: initialBreakpoint,
1713
1492
  backdropBreakpoint,
1714
- expandToScroll: this.expandToScroll,
1715
1493
  }));
1716
1494
  ani.progressStart(true, 1);
1717
- const { gesture, moveSheetToBreakpoint } = createSheetGesture(this.el, this.backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, ani, this.sortedBreakpoints, this.expandToScroll, () => { var _a; return (_a = this.currentBreakpoint) !== null && _a !== void 0 ? _a : 0; }, () => this.sheetOnDismiss(), (breakpoint) => {
1495
+ const { gesture, moveSheetToBreakpoint } = createSheetGesture(this.el, this.backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, ani, this.sortedBreakpoints, () => { var _a; return (_a = this.currentBreakpoint) !== null && _a !== void 0 ? _a : 0; }, () => this.sheetOnDismiss(), (breakpoint) => {
1718
1496
  if (this.currentBreakpoint !== breakpoint) {
1719
1497
  this.currentBreakpoint = breakpoint;
1720
1498
  this.ionBreakpointDidChange.emit({ breakpoint });
@@ -1792,7 +1570,6 @@ const Modal = class {
1792
1570
  presentingEl: presentingElement,
1793
1571
  currentBreakpoint: (_a = this.currentBreakpoint) !== null && _a !== void 0 ? _a : this.initialBreakpoint,
1794
1572
  backdropBreakpoint: this.backdropBreakpoint,
1795
- expandToScroll: this.expandToScroll,
1796
1573
  });
1797
1574
  if (dismissed) {
1798
1575
  const { delegate } = this.getDelegate();
@@ -1878,23 +1655,23 @@ const Modal = class {
1878
1655
  return true;
1879
1656
  }
1880
1657
  render() {
1881
- const { handle, isSheetModal, presentingElement, htmlAttributes, handleBehavior, inheritedAttributes, focusTrap, expandToScroll, } = this;
1658
+ const { handle, isSheetModal, presentingElement, htmlAttributes, handleBehavior, inheritedAttributes, focusTrap } = this;
1882
1659
  const showHandle = handle !== false && isSheetModal;
1883
1660
  const mode = ionicGlobal.getIonMode(this);
1884
1661
  const isCardModal = presentingElement !== undefined && mode === 'ios';
1885
1662
  const isHandleCycle = handleBehavior === 'cycle';
1886
- return (index$3.h(index$3.Host, Object.assign({ key: 'ff15df63e72caaeb0a4ad68e9eedeaaa7d3f3bde', "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
1663
+ return (index$3.h(index$3.Host, Object.assign({ key: 'b4da5111fe4719fa450c39b2d4bd884a302a7924', "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
1887
1664
  zIndex: `${20000 + this.overlayIndex}`,
1888
- }, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, 'overlay-hidden': true, [overlays.FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, theme.getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle }), index$3.h("ion-backdrop", { key: '27a73655779af9d175a829d3d2d29e42fd2a63ee', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && index$3.h("div", { key: '406a65080087e7895026ecc2f04e9d707439e86f', class: "modal-shadow" }), index$3.h("div", Object.assign({ key: '8e410eb925374158996c82cbbd522f07d741679e',
1665
+ }, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, 'overlay-hidden': true, [overlays.FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, theme.getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle }), index$3.h("ion-backdrop", { key: 'c12dbf747e0eb914eaf1331798548ffc7e147763', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && index$3.h("div", { key: 'da546ee80c6576b5acc66e959fd5009e0b9a8160', class: "modal-shadow" }), index$3.h("div", Object.assign({ key: '306ebe6427440ad5f7ed36d590e562d15a503b75',
1889
1666
  /*
1890
1667
  role and aria-modal must be used on the
1891
1668
  same element. They must also be set inside the
1892
1669
  shadow DOM otherwise ion-button will not be highlighted
1893
1670
  when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
1894
1671
  */
1895
- role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (index$3.h("button", { key: '7326c969ebe5a70a35e83b09d3db2bb848c90e47', class: "modal-handle",
1672
+ role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (index$3.h("button", { key: 'c5d17e346fe255a7c0cacbbf15c0083f2d09c488', class: "modal-handle",
1896
1673
  // Prevents the handle from receiving keyboard focus when it does not cycle
1897
- tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle" })), index$3.h("slot", { key: '0b65cdb9e337a27edf437b9e754e79f1449c217d' }))));
1674
+ tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle" })), index$3.h("slot", { key: '5cc714170a00b67f3eda0cd1d6f37c1489a99c83' }))));
1898
1675
  }
1899
1676
  get el() { return index$3.getElement(this); }
1900
1677
  static get watchers() { return {