@ionic/core 8.8.4-dev.11776246162.138c2737 → 8.8.4-dev.11776330355.18181725

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. package/components/index.js +1 -1
  2. package/components/ion-action-sheet.js +1 -1
  3. package/components/ion-alert.js +1 -1
  4. package/components/ion-datetime.js +1 -1
  5. package/components/ion-loading.js +1 -1
  6. package/components/ion-menu.js +1 -1
  7. package/components/ion-modal.js +1 -1
  8. package/components/ion-picker-legacy.js +1 -1
  9. package/components/ion-popover.js +1 -1
  10. package/components/ion-range.js +1 -1
  11. package/components/ion-select-modal.js +1 -1
  12. package/components/ion-select-popover.js +1 -1
  13. package/components/ion-select.js +1 -1
  14. package/components/ion-tab-bar.js +1 -1
  15. package/components/ion-toast.js +1 -1
  16. package/components/p-B6czg-mf.js +4 -0
  17. package/components/p-BGHaEUgp.js +4 -0
  18. package/components/{p-CEUppJkx.js → p-BR9Yxas9.js} +1 -1
  19. package/components/p-Ch9P0ikq.js +4 -0
  20. package/components/p-GytrfCp8.js +4 -0
  21. package/components/p-ZeIAjDcZ.js +4 -0
  22. package/components/{p-B36-MWK0.js → p-iwGbwewM.js} +1 -1
  23. package/dist/cjs/index.cjs.js +1 -1
  24. package/dist/cjs/ion-action-sheet.cjs.entry.js +5 -29
  25. package/dist/cjs/ion-alert.cjs.entry.js +4 -29
  26. package/dist/cjs/ion-datetime_3.cjs.entry.js +4 -28
  27. package/dist/cjs/ion-loading.cjs.entry.js +4 -29
  28. package/dist/cjs/ion-menu_3.cjs.entry.js +1 -1
  29. package/dist/cjs/ion-modal.cjs.entry.js +79 -176
  30. package/dist/cjs/ion-popover.cjs.entry.js +4 -90
  31. package/dist/cjs/ion-range.cjs.entry.js +8 -5
  32. package/dist/cjs/ion-select-modal.cjs.entry.js +1 -1
  33. package/dist/cjs/ion-select_3.cjs.entry.js +1 -1
  34. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +1 -1
  35. package/dist/cjs/ion-toast.cjs.entry.js +4 -32
  36. package/dist/cjs/{overlays-BbhewSIQ.js → overlays-Dhoy6v_5.js} +4 -4
  37. package/dist/collection/components/action-sheet/action-sheet.js +4 -5
  38. package/dist/collection/components/alert/alert.js +3 -4
  39. package/dist/collection/components/loading/loading.js +3 -4
  40. package/dist/collection/components/modal/gestures/sheet.js +9 -71
  41. package/dist/collection/components/modal/modal.ionic.css +1 -1
  42. package/dist/collection/components/modal/modal.js +5 -6
  43. package/dist/collection/components/picker-legacy/picker.js +3 -4
  44. package/dist/collection/components/popover/popover.js +3 -4
  45. package/dist/collection/components/range/range.ionic.css +14 -10
  46. package/dist/collection/components/range/range.js +7 -4
  47. package/dist/collection/components/tab-bar/tab-bar.ionic.css +9 -0
  48. package/dist/collection/components/toast/toast.js +3 -4
  49. package/dist/collection/utils/overlays.js +5 -5
  50. package/dist/docs.json +1 -1
  51. package/dist/esm/index.js +1 -1
  52. package/dist/esm/ion-action-sheet.entry.js +5 -29
  53. package/dist/esm/ion-alert.entry.js +4 -29
  54. package/dist/esm/ion-datetime_3.entry.js +4 -28
  55. package/dist/esm/ion-loading.entry.js +4 -29
  56. package/dist/esm/ion-menu_3.entry.js +1 -1
  57. package/dist/esm/ion-modal.entry.js +80 -177
  58. package/dist/esm/ion-popover.entry.js +4 -90
  59. package/dist/esm/ion-range.entry.js +8 -5
  60. package/dist/esm/ion-select-modal.entry.js +1 -1
  61. package/dist/esm/ion-select_3.entry.js +1 -1
  62. package/dist/esm/ion-tab-bar_2.entry.js +1 -1
  63. package/dist/esm/ion-toast.entry.js +4 -32
  64. package/dist/esm/{overlays-VA-4NWjf.js → overlays-CvFHfO3y.js} +5 -5
  65. package/dist/ionic/index.esm.js +1 -1
  66. package/dist/ionic/ionic.esm.js +1 -1
  67. package/dist/ionic/{p-bae3ebe5.entry.js → p-2095969c.entry.js} +1 -1
  68. package/dist/ionic/p-3884bfa4.entry.js +4 -0
  69. package/dist/ionic/p-4b0f5ffd.entry.js +4 -0
  70. package/dist/ionic/p-57aeb097.entry.js +4 -0
  71. package/{components/p-CSexRbnt.js → dist/ionic/p-6be2b2d3.entry.js} +1 -1
  72. package/dist/ionic/p-6bffc700.entry.js +4 -0
  73. package/dist/ionic/{p-ba9f8cbb.entry.js → p-9acd3fd3.entry.js} +1 -1
  74. package/dist/ionic/p-BYtS2rae.js +4 -0
  75. package/dist/ionic/{p-0cb50208.entry.js → p-a283aa4d.entry.js} +1 -1
  76. package/dist/ionic/p-d954cd19.entry.js +4 -0
  77. package/dist/ionic/{p-1efe83c8.entry.js → p-db4f4eaf.entry.js} +1 -1
  78. package/dist/ionic/p-e9d6ce67.entry.js +4 -0
  79. package/dist/ionic/p-ef0c281a.entry.js +4 -0
  80. package/dist/types/components/modal/gestures/sheet.d.ts +1 -1
  81. package/dist/types/utils/overlays.d.ts +1 -1
  82. package/hydrate/index.js +110 -416
  83. package/hydrate/index.mjs +110 -416
  84. package/package.json +1 -1
  85. package/components/p-BDPU2685.js +0 -4
  86. package/components/p-BrNzoF1U.js +0 -4
  87. package/components/p-DNdBtsfu.js +0 -4
  88. package/components/p-Njik5v4C.js +0 -4
  89. package/dist/collection/components/action-sheet/animations/ionic.enter.js +0 -27
  90. package/dist/collection/components/action-sheet/animations/ionic.leave.js +0 -21
  91. package/dist/collection/components/alert/animations/ionic.enter.js +0 -28
  92. package/dist/collection/components/alert/animations/ionic.leave.js +0 -19
  93. package/dist/collection/components/loading/animations/ionic.enter.js +0 -28
  94. package/dist/collection/components/loading/animations/ionic.leave.js +0 -22
  95. package/dist/collection/components/modal/animations/ionic.enter.js +0 -40
  96. package/dist/collection/components/modal/animations/ionic.leave.js +0 -28
  97. package/dist/collection/components/picker-legacy/animations/ionic.enter.js +0 -27
  98. package/dist/collection/components/picker-legacy/animations/ionic.leave.js +0 -23
  99. package/dist/collection/components/popover/animations/ionic.enter.js +0 -91
  100. package/dist/collection/components/popover/animations/ionic.leave.js +0 -29
  101. package/dist/collection/components/toast/animations/ionic.enter.js +0 -33
  102. package/dist/collection/components/toast/animations/ionic.leave.js +0 -16
  103. package/dist/ionic/p-07b129d5.entry.js +0 -4
  104. package/dist/ionic/p-27edb91a.entry.js +0 -4
  105. package/dist/ionic/p-3d4c8528.entry.js +0 -4
  106. package/dist/ionic/p-6992d9d6.entry.js +0 -4
  107. package/dist/ionic/p-9dd4276b.entry.js +0 -4
  108. package/dist/ionic/p-BExfzy0B.js +0 -4
  109. package/dist/ionic/p-a3d794ba.entry.js +0 -4
  110. package/dist/ionic/p-cdfbe4cc.entry.js +0 -4
  111. package/dist/ionic/p-fa701753.entry.js +0 -4
  112. package/dist/types/components/action-sheet/animations/ionic.enter.d.ts +0 -5
  113. package/dist/types/components/action-sheet/animations/ionic.leave.d.ts +0 -5
  114. package/dist/types/components/alert/animations/ionic.enter.d.ts +0 -5
  115. package/dist/types/components/alert/animations/ionic.leave.d.ts +0 -5
  116. package/dist/types/components/loading/animations/ionic.enter.d.ts +0 -5
  117. package/dist/types/components/loading/animations/ionic.leave.d.ts +0 -5
  118. package/dist/types/components/modal/animations/ionic.enter.d.ts +0 -6
  119. package/dist/types/components/modal/animations/ionic.leave.d.ts +0 -6
  120. package/dist/types/components/picker-legacy/animations/ionic.enter.d.ts +0 -5
  121. package/dist/types/components/picker-legacy/animations/ionic.leave.d.ts +0 -5
  122. package/dist/types/components/popover/animations/ionic.enter.d.ts +0 -5
  123. package/dist/types/components/popover/animations/ionic.leave.d.ts +0 -5
  124. package/dist/types/components/toast/animations/ionic.enter.d.ts +0 -6
  125. package/dist/types/components/toast/animations/ionic.leave.d.ts +0 -5
@@ -7,16 +7,16 @@ import { clamp, getElementRoot, raf } from "../../../utils/helpers";
7
7
  import { FOCUS_TRAP_DISABLE_CLASS } from "../../../utils/overlays";
8
8
  import { getBackdropValueForSheet } from "../utils";
9
9
  import { calculateSpringStep, handleCanDismiss } from "./utils";
10
- export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, animation, breakpoints = [], expandToScroll, getCurrentBreakpoint, onDismiss, onBreakpointChange, isIonicTheme, onDragStart, onDragMove, onDragEnd) => {
10
+ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, animation, breakpoints = [], expandToScroll, getCurrentBreakpoint, onDismiss, onBreakpointChange, staticBackdropOpacity, onDragStart, onDragMove, onDragEnd) => {
11
11
  // Defaults for the sheet swipe animation
12
12
  const defaultBackdrop = [
13
13
  { offset: 0, opacity: 'var(--backdrop-opacity)' },
14
- { offset: 1, opacity: isIonicTheme ? 'var(--backdrop-opacity)' : 0.01 },
14
+ { offset: 1, opacity: staticBackdropOpacity ? 'var(--backdrop-opacity)' : 0.01 },
15
15
  ];
16
16
  const customBackdrop = [
17
17
  { offset: 0, opacity: 'var(--backdrop-opacity)' },
18
- { offset: 1 - backdropBreakpoint, opacity: isIonicTheme ? 'var(--backdrop-opacity)' : 0 },
19
- { offset: 1, opacity: isIonicTheme ? 'var(--backdrop-opacity)' : 0 },
18
+ { offset: 1 - backdropBreakpoint, opacity: staticBackdropOpacity ? 'var(--backdrop-opacity)' : 0 },
19
+ { offset: 1, opacity: staticBackdropOpacity ? 'var(--backdrop-opacity)' : 0 },
20
20
  ];
21
21
  const SheetDefaults = {
22
22
  WRAPPER_KEYFRAMES: [
@@ -339,9 +339,7 @@ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpo
339
339
  : step;
340
340
  offset = clamp(0.0001, processedStep, maxStep);
341
341
  animation.progressStep(offset);
342
- const snapBreakpoint = isIonicTheme
343
- ? calculateIonicSnapBreakpoint(detail.deltaY, detail.velocityY, detail.currentY)
344
- : calculateSnapBreakpoint(detail.deltaY);
342
+ const snapBreakpoint = calculateSnapBreakpoint(detail.deltaY);
345
343
  const eventDetail = {
346
344
  currentY: detail.currentY,
347
345
  deltaY: detail.deltaY,
@@ -352,9 +350,7 @@ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpo
352
350
  onDragMove(eventDetail);
353
351
  };
354
352
  const onEnd = (detail) => {
355
- const snapBreakpoint = isIonicTheme
356
- ? calculateIonicSnapBreakpoint(detail.deltaY, detail.velocityY, detail.currentY)
357
- : calculateSnapBreakpoint(detail.deltaY);
353
+ const snapBreakpoint = calculateSnapBreakpoint(detail.deltaY);
358
354
  const eventDetail = {
359
355
  currentY: detail.currentY,
360
356
  deltaY: detail.deltaY,
@@ -401,14 +397,6 @@ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpo
401
397
  */
402
398
  const shouldPreventDismiss = canDismiss && breakpoint === 0;
403
399
  const snapToBreakpoint = shouldPreventDismiss ? currentBreakpoint : breakpoint;
404
- /**
405
- * Detect snap-back behavior: when the snap target is the same as the current breakpoint,
406
- * the user released before crossing the threshold to a new breakpoint.
407
- * Apply different timing and easing for snap-back vs. snap-to-new.
408
- */
409
- const isSnapBack = snapToBreakpoint === currentBreakpoint;
410
- const duration = isIonicTheme ? (isSnapBack ? 300 : 400) : 500;
411
- const easing = isSnapBack ? 'cubic-bezier(0.34, 1.4, 0.64, 1)' : 'cubic-bezier(0.32, 0.68, 0, 1)';
412
400
  const shouldRemainOpen = snapToBreakpoint !== 0;
413
401
  currentBreakpoint = 0;
414
402
  /**
@@ -423,13 +411,13 @@ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpo
423
411
  backdropAnimation.keyframes([
424
412
  {
425
413
  offset: 0,
426
- opacity: isIonicTheme
414
+ opacity: staticBackdropOpacity
427
415
  ? 'var(--backdrop-opacity)'
428
416
  : `calc(var(--backdrop-opacity) * ${getBackdropValueForSheet(1 - breakpointOffset, backdropBreakpoint)})`,
429
417
  },
430
418
  {
431
419
  offset: 1,
432
- opacity: isIonicTheme
420
+ opacity: staticBackdropOpacity
433
421
  ? 'var(--backdrop-opacity)'
434
422
  : `calc(var(--backdrop-opacity) * ${getBackdropValueForSheet(snapToBreakpoint, backdropBreakpoint)})`,
435
423
  },
@@ -449,12 +437,6 @@ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpo
449
437
  }
450
438
  animation.progressStep(0);
451
439
  }
452
- /**
453
- * Apply the appropriate easing curve for this snap behavior.
454
- */
455
- if (isIonicTheme) {
456
- animation.easing(easing);
457
- }
458
440
  /**
459
441
  * Gesture should remain disabled until the
460
442
  * snapping animation completes.
@@ -544,7 +526,7 @@ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpo
544
526
  * be added every time onEnd runs.
545
527
  */
546
528
  }, { oneTimeCallback: true })
547
- .progressEnd(1, 0, animated ? duration : 0);
529
+ .progressEnd(1, 0, animated ? 500 : 0);
548
530
  });
549
531
  };
550
532
  /**
@@ -575,50 +557,6 @@ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpo
575
557
  });
576
558
  return snapBreakpoint;
577
559
  };
578
- /**
579
- * Calculates the Ionic-specific snap breakpoint using velocity-based logic.
580
- * This provides a more intuitive and responsive sheet behavior for the Ionic theme.
581
- *
582
- * Rules:
583
- * 1. Fast downward flick (> 500 px/s) always dismisses, regardless of position
584
- * 2. Fast upward flick (> 400 px/s) snaps to the next breakpoint above
585
- * 3. If dragged 40% below current snap point without fast upward flick, dismisses
586
- * 4. Otherwise, falls back to position-based snap (closest breakpoint)
587
- *
588
- * @param deltaY The change in Y position since gesture started
589
- * @param velocityY The velocity in pixels per millisecond
590
- * @param currentY The current Y position of the gesture
591
- * @returns The snap breakpoint value
592
- */
593
- const calculateIonicSnapBreakpoint = (deltaY, velocityY, currentY) => {
594
- // Convert velocity from px/ms to px/s for easier threshold comparison
595
- const velocityYPerSecond = velocityY * 1000;
596
- // Calculate current progress (0 = fully closed, 1 = fully expanded)
597
- const currentProgress = calculateProgress(currentY);
598
- // Rule 1: Fast downward flick always dismisses
599
- if (velocityYPerSecond > 500) {
600
- return minBreakpoint;
601
- }
602
- // Rule 2: Fast upward flick moves to next breakpoint above
603
- if (velocityYPerSecond < -400) {
604
- // Find next breakpoint above current position
605
- const nextBreakpoint = breakpoints.find((bp) => bp > currentProgress);
606
- // If no breakpoint above, stay at max breakpoint
607
- return nextBreakpoint !== null && nextBreakpoint !== void 0 ? nextBreakpoint : maxBreakpoint;
608
- }
609
- // Rule 3: 40% dismissal rule (only if not flicking up and 0 breakpoint exists)
610
- if (minBreakpoint === 0 && currentBreakpoint > 0) {
611
- // Calculate how far we've moved below the current snap point
612
- const distanceBelowSnap = currentBreakpoint - currentProgress;
613
- const percentageBelowSnap = distanceBelowSnap / currentBreakpoint;
614
- // If dragged more than 40% below and not flicking up, dismiss
615
- if (percentageBelowSnap > 0.4 && velocityYPerSecond <= 400) {
616
- return 0;
617
- }
618
- }
619
- // Rule 4: Fallback to position-based snap (existing logic)
620
- return calculateSnapBreakpoint(deltaY);
621
- };
622
560
  /**
623
561
  * Calculates the progress of the swipe gesture.
624
562
  *
@@ -191,7 +191,7 @@ ion-backdrop {
191
191
  :host {
192
192
  --background: var(--token-bg-surface-default, var(--token-primitives-base-white, #ffffff));
193
193
  --box-shadow: var(--token-elevation-3, 0px 2px 7px 0px rgba(0, 0, 0, 0.05), 0px 6px 32px 0px rgba(0, 0, 0, 0.16));
194
- --backdrop-opacity: 0.7;
194
+ --backdrop-opacity: 1;
195
195
  color: var(--token-text-default, var(--token-primitives-neutral-1200, #242424));
196
196
  }
197
197
 
@@ -14,7 +14,6 @@ import { deepReady, waitForMount } from "../../utils/transition/index";
14
14
  import { config } from "../../global/config";
15
15
  import { getIonMode, getIonTheme } from "../../global/ionic-global";
16
16
  import { KEYBOARD_DID_OPEN } from "../../utils/keyboard/keyboard";
17
- import { ionicEnterAnimation } from "./animations/ionic.enter";
18
17
  import { iosEnterAnimation } from "./animations/ios.enter";
19
18
  import { iosLeaveAnimation } from "./animations/ios.leave";
20
19
  import { portraitToLandscapeTransition, landscapeToPortraitTransition } from "./animations/ios.transition";
@@ -455,7 +454,7 @@ export class Modal {
455
454
  this.statusBarStyle = await StatusBar.getStyle();
456
455
  setCardStatusBarDark();
457
456
  }
458
- await present(this, 'modalEnter', iosEnterAnimation, mdEnterAnimation, ionicEnterAnimation, {
457
+ await present(this, 'modalEnter', iosEnterAnimation, mdEnterAnimation, {
459
458
  presentingEl: presentingElement,
460
459
  currentBreakpoint: this.initialBreakpoint,
461
460
  backdropBreakpoint: this.backdropBreakpoint,
@@ -1150,20 +1149,20 @@ export class Modal {
1150
1149
  const isHandleCycle = handleBehavior === 'cycle';
1151
1150
  const shape = this.getShape();
1152
1151
  const isSheetModalWithHandle = isSheetModal && showHandle;
1153
- return (h(Host, Object.assign({ key: '3011c8f49c1ccb6c20c01db35b59fe4f6e22ec01', "no-router": true,
1152
+ return (h(Host, Object.assign({ key: '4b323edb66d28260c34b31fd2af8f4ae53a7ef90', "no-router": true,
1154
1153
  // Allow the modal to be navigable when the handle is focusable
1155
1154
  tabIndex: isHandleCycle && isSheetModalWithHandle ? 0 : -1 }, htmlAttributes, { style: {
1156
1155
  zIndex: `${20000 + this.overlayIndex}`,
1157
- }, class: Object.assign({ [theme]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`modal-${shape}`]: shape !== undefined, [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, 'overlay-hidden': true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle, onFocus: this.onModalFocus }), h("ion-backdrop", { key: 'ab99fb4ff1b335b06d5676890012dfe3cd1a1a01', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), theme === 'ios' && h("div", { key: '95d4c79c4455c6a5ae6d581fa9dfaabdbee8c567', class: "modal-shadow" }), h("div", Object.assign({ key: '2d7d2406cdb986c69ef52708d33eca67d8a877f8',
1156
+ }, class: Object.assign({ [theme]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`modal-${shape}`]: shape !== undefined, [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, 'overlay-hidden': true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle, onFocus: this.onModalFocus }), h("ion-backdrop", { key: '6059e348dc3d020f995577dde1b7949bdb2c0f2f', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), theme === 'ios' && h("div", { key: '5a08a99dfc3de51ac7516fc76fdba3672f84db71', class: "modal-shadow" }), h("div", Object.assign({ key: 'a7a841a5b2f740fbf576b82b82782aa235b701ee',
1158
1157
  /*
1159
1158
  role and aria-modal must be used on the
1160
1159
  same element. They must also be set inside the
1161
1160
  shadow DOM otherwise ion-button will not be highlighted
1162
1161
  when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
1163
1162
  */
1164
- role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (h("button", { key: 'ccec8bfc314763bd6dd868b69fbfdc085f5957c9', class: "modal-handle",
1163
+ role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (h("button", { key: 'ca5567e9ab3e9e80b41314d396106faf2da09ffe', class: "modal-handle",
1165
1164
  // Prevents the handle from receiving keyboard focus when it does not cycle
1166
- tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle", ref: (el) => (this.dragHandleEl = el) })), h("slot", { key: '38469e3447b46983783627d697e12cadcef614fa', onSlotchange: this.onSlotChange }))));
1165
+ tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle", ref: (el) => (this.dragHandleEl = el) })), h("slot", { key: 'da5471ea4292166798d3f949e79e7b3e55a0e83f', onSlotchange: this.onSlotChange }))));
1167
1166
  }
1168
1167
  static get is() { return "ion-modal"; }
1169
1168
  static get encapsulation() { return "shadow"; }
@@ -8,7 +8,6 @@ import { printIonWarning } from "../../utils/logging/index";
8
8
  import { createDelegateController, createTriggerController, BACKDROP, dismiss, eventMethod, isCancel, prepareOverlay, present, safeCall, setOverlayId, } from "../../utils/overlays";
9
9
  import { getClassMap } from "../../utils/theme";
10
10
  import { getIonTheme } from "../../global/ionic-global";
11
- import { ionicEnterAnimation } from "./animations/ionic.enter";
12
11
  import { iosEnterAnimation } from "./animations/ios.enter";
13
12
  import { iosLeaveAnimation } from "./animations/ios.leave";
14
13
  // TODO(FW-2832): types
@@ -124,7 +123,7 @@ export class Picker {
124
123
  async present() {
125
124
  const unlock = await this.lockController.lock();
126
125
  await this.delegateController.attachViewToDom();
127
- await present(this, 'pickerEnter', iosEnterAnimation, iosEnterAnimation, ionicEnterAnimation, undefined);
126
+ await present(this, 'pickerEnter', iosEnterAnimation, iosEnterAnimation, undefined);
128
127
  if (this.duration > 0) {
129
128
  this.durationTimeout = setTimeout(() => this.dismiss(), this.duration);
130
129
  }
@@ -209,11 +208,11 @@ export class Picker {
209
208
  render() {
210
209
  const { htmlAttributes } = this;
211
210
  const theme = getIonTheme(this);
212
- return (h(Host, Object.assign({ key: '8db0e1a6cb7697efcc5d5a4a80f3dc3435760c1d', "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
211
+ return (h(Host, Object.assign({ key: 'efcc823fad9cb37c1379bef4f4b84c6461f3a3a6', "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
213
212
  zIndex: `${20000 + this.overlayIndex}`,
214
213
  }, class: Object.assign({ [theme]: true,
215
214
  // Used internally for styling
216
- [`picker-${theme}`]: true, 'overlay-hidden': true }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonPickerWillDismiss: this.dispatchCancelHandler }), h("ion-backdrop", { key: 'c32c446147dff1e8b53fcf6885bdaa504d134d06', visible: this.showBackdrop, tappable: this.backdropDismiss }), h("div", { key: '87c9eeeed6869569b0da65d720289f14f76d0cba', tabindex: "0", "aria-hidden": "true" }), h("div", { key: '17a1250e5ce1dc176a39d7480587c56aa11f0247', class: "picker-wrapper ion-overlay-wrapper", role: "dialog" }, h("div", { key: '4d4043aae3373d2f271e8e1320ba72f726eb2338', class: "picker-toolbar" }, this.buttons.map((b) => (h("div", { class: buttonWrapperClass(b) }, h("button", { type: "button", onClick: () => this.buttonClick(b), class: buttonClass(b) }, b.text))))), h("div", { key: '954edc5d83380d04025ec8029194ad0f9c6778ff', class: "picker-columns" }, h("div", { key: 'f3c7f7bbb784b8076eebe984e7dd057d78c9824f', class: "picker-above-highlight" }), this.presented && this.columns.map((c) => h("ion-picker-legacy-column", { col: c })), h("div", { key: '63dcf6a252024984cb3eaca133805343b324fdb1', class: "picker-below-highlight" }))), h("div", { key: 'e07eb1a59edf5d94fc487114c2d8b923fd768696', tabindex: "0", "aria-hidden": "true" })));
215
+ [`picker-${theme}`]: true, 'overlay-hidden': true }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonPickerWillDismiss: this.dispatchCancelHandler }), h("ion-backdrop", { key: '3f44bf34e039210ae149c590c393ee9f7fb85da0', visible: this.showBackdrop, tappable: this.backdropDismiss }), h("div", { key: 'c2a51a89c525b1a22cbc8583cd30f41c3c356d4f', tabindex: "0", "aria-hidden": "true" }), h("div", { key: '23837ffe309d0aad9b8ea09d7ac94d21040ef0d7', class: "picker-wrapper ion-overlay-wrapper", role: "dialog" }, h("div", { key: '91ba7e553d570768142715ded4bcc27fceedbce4', class: "picker-toolbar" }, this.buttons.map((b) => (h("div", { class: buttonWrapperClass(b) }, h("button", { type: "button", onClick: () => this.buttonClick(b), class: buttonClass(b) }, b.text))))), h("div", { key: '22661cafeb555f1435ec1e0a122404a48136095b', class: "picker-columns" }, h("div", { key: '5f3db32468b8c60f63c70d81a27b18cce6f2e259', class: "picker-above-highlight" }), this.presented && this.columns.map((c) => h("ion-picker-legacy-column", { col: c })), h("div", { key: '1bae6b170125b1671a480506ba73636b42b65909', class: "picker-below-highlight" }))), h("div", { key: '91beb94ce537122fbd6cd0c2bd3c00f908d0fefe', tabindex: "0", "aria-hidden": "true" })));
217
216
  }
218
217
  static get is() { return "ion-picker-legacy"; }
219
218
  static get encapsulation() { return "scoped"; }
@@ -12,7 +12,6 @@ import { isPlatform } from "../../utils/platform";
12
12
  import { getClassMap } from "../../utils/theme";
13
13
  import { deepReady, waitForMount } from "../../utils/transition/index";
14
14
  import { getIonTheme } from "../../global/ionic-global";
15
- import { ionicEnterAnimation } from "./animations/ionic.enter";
16
15
  import { iosEnterAnimation } from "./animations/ios.enter";
17
16
  import { iosLeaveAnimation } from "./animations/ios.leave";
18
17
  import { mdEnterAnimation } from "./animations/md.enter";
@@ -360,7 +359,7 @@ export class Popover {
360
359
  else if (!this.keepContentsMounted) {
361
360
  await waitForMount();
362
361
  }
363
- await present(this, 'popoverEnter', iosEnterAnimation, mdEnterAnimation, ionicEnterAnimation, {
362
+ await present(this, 'popoverEnter', iosEnterAnimation, mdEnterAnimation, {
364
363
  event: event || this.event,
365
364
  size: this.size,
366
365
  trigger: this.triggerEl,
@@ -469,9 +468,9 @@ export class Popover {
469
468
  const { onLifecycle, parentPopover, dismissOnSelect, side, arrow, htmlAttributes, focusTrap } = this;
470
469
  const desktop = isPlatform('desktop');
471
470
  const enableArrow = arrow && !parentPopover;
472
- return (h(Host, Object.assign({ key: '398b4c72cfea89fb743d427e3c2b48507649aff1', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
471
+ return (h(Host, Object.assign({ key: 'cc70f9b037b16ea78b999916106a1062ceb74cb6', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
473
472
  zIndex: `${20000 + this.overlayIndex}`,
474
- }, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [theme]: true, 'popover-translucent': this.translucent, 'overlay-hidden': true, 'popover-desktop': desktop, [`popover-side-${side}`]: true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false, 'popover-nested': !!parentPopover }), onIonPopoverDidPresent: onLifecycle, onIonPopoverWillPresent: onLifecycle, onIonPopoverWillDismiss: onLifecycle, onIonPopoverDidDismiss: onLifecycle, onIonBackdropTap: this.onBackdropTap }), !parentPopover && h("ion-backdrop", { key: '6baec0b33665557c55425ffad9c6b31741c25651', tappable: this.backdropDismiss, visible: this.showBackdrop, part: "backdrop" }), h("div", { key: '6ce3a61164f478560cc45c618fc5b7f62b491ecd', class: "popover-wrapper ion-overlay-wrapper", onClick: dismissOnSelect ? () => this.dismiss() : undefined }, enableArrow && h("div", { key: 'a36815fc0417a10fb350429909a79cb4025baf3a', class: "popover-arrow", part: "arrow" }), h("div", { key: 'cec3436cdb2cb6fa839c37abb3cb6daf7de453de', class: "popover-content", part: "content" }, h("slot", { key: '5405fb03bab017acd7fa09d00cfe1b7cfbdfae92' })))));
473
+ }, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [theme]: true, 'popover-translucent': this.translucent, 'overlay-hidden': true, 'popover-desktop': desktop, [`popover-side-${side}`]: true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false, 'popover-nested': !!parentPopover }), onIonPopoverDidPresent: onLifecycle, onIonPopoverWillPresent: onLifecycle, onIonPopoverWillDismiss: onLifecycle, onIonPopoverDidDismiss: onLifecycle, onIonBackdropTap: this.onBackdropTap }), !parentPopover && h("ion-backdrop", { key: 'e641e7ee28cbd54911ec3f8c0bfd9d7e3f2e85cd', tappable: this.backdropDismiss, visible: this.showBackdrop, part: "backdrop" }), h("div", { key: '750494585c3524b27e42d79f02e729f3eff9e660', class: "popover-wrapper ion-overlay-wrapper", onClick: dismissOnSelect ? () => this.dismiss() : undefined }, enableArrow && h("div", { key: '2e49b4ad1287e31a3cdbfebc91120405a998dc95', class: "popover-arrow", part: "arrow" }), h("div", { key: '306586776e74acab787b2a96433553005bca580d', class: "popover-content", part: "content" }, h("slot", { key: '0273c0975cd7dc37db5cfa0b91d418867a77c4d8' })))));
475
474
  }
476
475
  static get is() { return "ion-popover"; }
477
476
  static get encapsulation() { return "shadow"; }
@@ -430,28 +430,32 @@
430
430
  margin-bottom: calc(var(--token-space-200, var(--token-scale-200, 8px)) + var(--token-font-size-300, 0.75rem));
431
431
  }
432
432
 
433
- .range-bar.range-bar-active {
434
- bottom: 0;
435
- width: auto;
436
- background: var(--bar-background-active);
433
+ .range-bar.has-ticks {
434
+ border-radius: 0;
437
435
  }
436
+
438
437
  .range-bar.range-bar-active.has-ticks {
439
- border-radius: 0;
440
438
  -webkit-margin-start: calc(-1 * var(--token-scale-100, 4px) * 0.5);
441
439
  margin-inline-start: calc(-1 * var(--token-scale-100, 4px) * 0.5);
442
440
  -webkit-margin-end: calc(-1 * var(--token-scale-100, 4px) * 0.5);
443
441
  margin-inline-end: calc(-1 * var(--token-scale-100, 4px) * 0.5);
444
442
  }
445
443
 
444
+ .range-bar.range-bar-active {
445
+ bottom: 0;
446
+ width: auto;
447
+ background: var(--bar-background-active);
448
+ }
449
+
446
450
  .range-tick {
447
451
  -webkit-margin-start: calc(var(--token-scale-100, 4px) * -0.5);
448
452
  margin-inline-start: calc(var(--token-scale-100, 4px) * -0.5);
449
- border-radius: var(--token-border-radius-0, var(--token-scale-0, 0px));
453
+ border-radius: var(--token-border-radius-400, var(--token-scale-400, 16px));
450
454
  position: absolute;
451
- top: calc(var(--height) * 0.5 - var(--token-scale-300, 12px) * 0.5);
452
- width: var(--token-scale-100, 4px);
453
- height: var(--token-scale-300, 12px);
454
- background: var(--token-primitives-neutral-100, #f3f3f3);
455
+ top: calc(var(--height) * 0.5 - var(--token-scale-400, 16px) * 0.5);
456
+ width: var(--token-scale-050, 2px);
457
+ height: var(--token-scale-400, 16px);
458
+ background: var(--bar-background);
455
459
  pointer-events: none;
456
460
  }
457
461
 
@@ -692,7 +692,10 @@ export class Range {
692
692
  } }, ticks.map((tick) => (h("div", { style: tickStyle(tick), role: "presentation", class: {
693
693
  'range-tick': true,
694
694
  'range-tick-active': tick.active,
695
- }, part: tick.active ? 'tick-active' : 'tick' }))), h("div", { class: "range-bar-container" }, h("div", { class: "range-bar", role: "presentation", part: "bar" }), h("div", { class: {
695
+ }, part: tick.active ? 'tick-active' : 'tick' }))), h("div", { class: "range-bar-container" }, h("div", { class: {
696
+ 'range-bar': true,
697
+ 'has-ticks': ticks.length > 0,
698
+ }, role: "presentation", part: "bar" }), h("div", { class: {
696
699
  'range-bar': true,
697
700
  'range-bar-active': true,
698
701
  'has-ticks': ticks.length > 0,
@@ -770,7 +773,7 @@ export class Range {
770
773
  const valueAtMin = dualKnobs ? this.valA === min || this.valB === min : this.valA === min;
771
774
  const valueAtMax = dualKnobs ? this.valA === max || this.valB === max : this.valA === max;
772
775
  renderHiddenInput(true, el, this.name, JSON.stringify(this.getValue()), disabled);
773
- return (h(Host, { key: 'a6262069e7dcc01413f9ade5ad4972127c2dd523', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: createColorClasses(this.color, {
776
+ return (h(Host, { key: '1b8ca217fa6965fc038fb4ca8f0bc9142b3893ad', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: createColorClasses(this.color, {
774
777
  [theme]: true,
775
778
  'in-item': inItem,
776
779
  'range-disabled': disabled,
@@ -784,10 +787,10 @@ export class Range {
784
787
  'range-item-end-adjustment': needsEndAdjustment,
785
788
  'range-value-min': valueAtMin,
786
789
  'range-value-max': valueAtMax,
787
- }) }, h("label", { key: 'e39421b320cc84f9f42840bd4d9d8d2bb241518f', class: "range-wrapper", id: "range-label" }, h("div", { key: '818f6e03be2264327e5b31e4b129f6493b9268dd', class: {
790
+ }) }, h("label", { key: '98b02130c9bb5a9ba6557be28f1ac09be0d10806', class: "range-wrapper", id: "range-label" }, h("div", { key: '570083103b51b335c805672918d69e997dc30e66', class: {
788
791
  'label-text-wrapper': true,
789
792
  'label-text-wrapper-hidden': !hasLabel,
790
- }, part: "label" }, label !== undefined ? h("div", { class: "label-text" }, label) : h("slot", { name: "label" })), h("div", { key: '8eb7dd434857a6ffc4e65db43876c61f6fd88cc8', class: "native-wrapper" }, h("slot", { key: 'bf0d3de82b50057f3e53001f66dc9da815b52ed3', name: "start" }), this.renderRangeSlider(), h("slot", { key: '46db83c94be79b8c4bf37eeab0531723a8f2b237', name: "end" })))));
793
+ }, part: "label" }, label !== undefined ? h("div", { class: "label-text" }, label) : h("slot", { name: "label" })), h("div", { key: '1e3233a747d0adca6611234d0675ce049ef979cf', class: "native-wrapper" }, h("slot", { key: '4f06a217592a98d889420468eb282ba8652ef1cc', name: "start" }), this.renderRangeSlider(), h("slot", { key: '4286279dbadf0e92bffbd5e98d5e36cba095be3c', name: "end" })))));
791
794
  }
792
795
  static get is() { return "ion-range"; }
793
796
  static get encapsulation() { return "shadow"; }
@@ -185,6 +185,15 @@
185
185
  bottom: calc(var(--token-space-400, var(--token-scale-400, 16px)) + var(--ion-safe-area-bottom, 0));
186
186
  }
187
187
 
188
+ @supports (backdrop-filter: blur(0)) {
189
+ :host(.tab-bar-translucent) {
190
+ --background: rgba(255, 255, 255, 0.6);
191
+ backdrop-filter: var(--tab-bar-backdrop-filter, blur(12px));
192
+ }
193
+ :host(.tab-bar-translucent) ::slotted(ion-tab-button.ion-focused) {
194
+ --background: transparent;
195
+ }
196
+ }
188
197
  /* Soft */
189
198
  :host(.tab-bar-soft) {
190
199
  border-radius: var(--token-border-radius-400, var(--token-scale-400, 16px));
@@ -11,7 +11,6 @@ import { sanitizeDOMString } from "../../utils/sanitization/index";
11
11
  import { createColorClasses, getClassMap } from "../../utils/theme";
12
12
  import { config } from "../../global/config";
13
13
  import { getIonMode, getIonTheme } from "../../global/ionic-global";
14
- import { ionicEnterAnimation } from "./animations/ionic.enter";
15
14
  import { iosEnterAnimation } from "./animations/ios.enter";
16
15
  import { iosLeaveAnimation } from "./animations/ios.leave";
17
16
  import { mdEnterAnimation } from "./animations/md.enter";
@@ -225,7 +224,7 @@ export class Toast {
225
224
  * in the dismiss animation.
226
225
  */
227
226
  this.lastPresentedPosition = animationPosition;
228
- await present(this, 'toastEnter', iosEnterAnimation, mdEnterAnimation, ionicEnterAnimation, {
227
+ await present(this, 'toastEnter', iosEnterAnimation, mdEnterAnimation, {
229
228
  position,
230
229
  top: animationPosition.top,
231
230
  bottom: animationPosition.bottom,
@@ -440,9 +439,9 @@ export class Toast {
440
439
  if (layout === 'stacked' && startButtons.length > 0 && endButtons.length > 0) {
441
440
  printIonWarning('[ion-toast] - This toast is using start and end buttons with the stacked toast layout. We recommend following the best practice of using either start or end buttons with the stacked toast layout.', el);
442
441
  }
443
- return (h(Host, Object.assign({ key: 'e83590dd87745fc9579319513eb22c0db5d3e53f', tabindex: "-1" }, this.htmlAttributes, { style: {
442
+ return (h(Host, Object.assign({ key: '3507eaa18a5559a9052d34db180e176952dc466f', tabindex: "-1" }, this.htmlAttributes, { style: {
444
443
  zIndex: `${60000 + this.overlayIndex}`,
445
- }, class: createColorClasses(this.color, Object.assign(Object.assign({ [mode]: true, [theme]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'toast-translucent': this.translucent, [`toast-shape-${shape}`]: shape !== undefined, [`toast-hue-${hue}`]: hue !== undefined })), onIonToastWillDismiss: this.dispatchCancelHandler }), h("div", { key: 'b4c4d4565138cc76ffa9fd5cebc4e489b82cea55', class: wrapperClass, part: "wrapper" }, h("div", { key: '14228286e4c4f6738b14816938e1edb75014f322', class: "toast-container", part: "container" }, this.renderButtons(startButtons, 'start'), this.icon !== undefined && (h("ion-icon", { key: '3403984f86018dedb3cc32b3bd5541a6d0db154f', class: "toast-icon", part: "icon", icon: this.icon, lazy: false, "aria-hidden": "true" })), h("div", { key: '0965413313935e3fe90ce0789d2d029af91f3124', class: "toast-content", part: "content", role: "status", "aria-atomic": "true", "aria-live": "polite" }, !revealContentToScreenReader && header !== undefined && this.renderHeader('oldHeader', 'true'), !revealContentToScreenReader && message !== undefined && this.renderToastMessage('oldMessage', 'true'), revealContentToScreenReader && header !== undefined && this.renderHeader('header'), revealContentToScreenReader && message !== undefined && this.renderToastMessage('header')), this.renderButtons(endButtons, 'end')))));
444
+ }, class: createColorClasses(this.color, Object.assign(Object.assign({ [mode]: true, [theme]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'toast-translucent': this.translucent, [`toast-shape-${shape}`]: shape !== undefined, [`toast-hue-${hue}`]: hue !== undefined })), onIonToastWillDismiss: this.dispatchCancelHandler }), h("div", { key: '195eb90ccd82a13254e843b80be0f380325accb4', class: wrapperClass, part: "wrapper" }, h("div", { key: 'd6072aa4a4848d72e68e04a7842d3f769f844ffc', class: "toast-container", part: "container" }, this.renderButtons(startButtons, 'start'), this.icon !== undefined && (h("ion-icon", { key: '02a1d72aaf401d27671906c8b84abd823def6da8', class: "toast-icon", part: "icon", icon: this.icon, lazy: false, "aria-hidden": "true" })), h("div", { key: '1f133c27927ad840f58ea2e9112719ef880bf9a5', class: "toast-content", part: "content", role: "status", "aria-atomic": "true", "aria-live": "polite" }, !revealContentToScreenReader && header !== undefined && this.renderHeader('oldHeader', 'true'), !revealContentToScreenReader && message !== undefined && this.renderToastMessage('oldMessage', 'true'), revealContentToScreenReader && header !== undefined && this.renderHeader('header'), revealContentToScreenReader && message !== undefined && this.renderToastMessage('header')), this.renderButtons(endButtons, 'end')))));
446
445
  }
447
446
  static get is() { return "ion-toast"; }
448
447
  static get encapsulation() { return "shadow"; }
@@ -6,7 +6,7 @@ import { focusFirstDescendant, focusLastDescendant, focusableQueryString } from
6
6
  import { shouldUseCloseWatcher } from "./hardware-back-button";
7
7
  import { printIonError, printIonWarning } from "./logging/index";
8
8
  import { config } from "../global/config";
9
- import { getIonMode, getIonTheme } from "../global/ionic-global";
9
+ import { getIonMode } from "../global/ionic-global";
10
10
  import { CoreDelegate } from "./framework-delegate";
11
11
  import { BACKDROP_NO_SCROLL } from "./gesture/gesture-controller";
12
12
  import { OVERLAY_BACK_BUTTON_PRIORITY } from "./hardware-back-button";
@@ -512,7 +512,7 @@ export const setRootAriaHidden = (hidden = false) => {
512
512
  viewContainer.removeAttribute('aria-hidden');
513
513
  }
514
514
  };
515
- export const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, ionicEnterAnimation, opts) => {
515
+ export const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts) => {
516
516
  var _a, _b;
517
517
  if (overlay.presented) {
518
518
  return;
@@ -560,11 +560,11 @@ export const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation
560
560
  document.body.classList.add(BACKDROP_NO_SCROLL);
561
561
  }
562
562
  (_a = overlay.willPresentShorthand) === null || _a === void 0 ? void 0 : _a.emit();
563
- const theme = getIonTheme(overlay);
564
563
  const mode = getIonMode(overlay);
565
- const selectedAnimation = mode === 'ios' ? iosEnterAnimation : theme === 'ionic' ? ionicEnterAnimation : mdEnterAnimation;
566
564
  // get the user's animation fn if one was provided
567
- const animationBuilder = overlay.enterAnimation ? overlay.enterAnimation : config.get(name, selectedAnimation);
565
+ const animationBuilder = overlay.enterAnimation
566
+ ? overlay.enterAnimation
567
+ : config.get(name, mode === 'ios' ? iosEnterAnimation : mdEnterAnimation);
568
568
  const completed = await overlayAnimation(overlay, animationBuilder, overlay.el, opts);
569
569
  if (completed) {
570
570
  overlay.didPresent.emit();
package/dist/docs.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "timestamp": "2026-04-15T09:44:56",
2
+ "timestamp": "2026-04-16T09:08:12",
3
3
  "compiler": {
4
4
  "name": "@stencil/core",
5
5
  "version": "4.43.0",
package/dist/esm/index.js CHANGED
@@ -13,7 +13,7 @@ export { L as LogLevel } from './index-Omi_TcwW.js';
13
13
  export { I as IonicSafeString, g as getMode, s as setupConfig } from './config-BvDxfLa-.js';
14
14
  export { o as openURL } from './theme-DaJxRxSQ.js';
15
15
  export { m as menuController } from './index-hpH08p5s.js';
16
- export { b as actionSheetController, a as alertController, l as loadingController, m as modalController, p as pickerController, c as popoverController, t as toastController } from './overlays-VA-4NWjf.js';
16
+ export { b as actionSheetController, a as alertController, l as loadingController, m as modalController, p as pickerController, c as popoverController, t as toastController } from './overlays-CvFHfO3y.js';
17
17
  import './gesture-controller-BTEOs1at.js';
18
18
  import './focus-visible-vXpMhGrs.js';
19
19
  import './framework-delegate-CjVwn_KZ.js';
@@ -5,7 +5,7 @@ import { r as registerInstance, c as createEvent, a as readTask, h, d as Host, g
5
5
  import { c as createButtonActiveGesture } from './button-active-g6ZnZzDZ.js';
6
6
  import { r as raf } from './helpers-Do7zwvM1.js';
7
7
  import { c as createLockController } from './lock-controller-B-hirT0v.js';
8
- import { d as createDelegateController, e as createTriggerController, B as BACKDROP, i as isCancel, f as present, g as dismiss, h as eventMethod, s as safeCall, j as prepareOverlay, k as setOverlayId } from './overlays-VA-4NWjf.js';
8
+ import { d as createDelegateController, e as createTriggerController, B as BACKDROP, i as isCancel, f as present, g as dismiss, h as eventMethod, s as safeCall, j as prepareOverlay, k as setOverlayId } from './overlays-CvFHfO3y.js';
9
9
  import { g as getClassMap } from './theme-DaJxRxSQ.js';
10
10
  import { b as getIonMode, c as getIonTheme } from './ionic-global-CAZb-5i-.js';
11
11
  import { c as createAnimation } from './animation-Cqe2x-Pt.js';
@@ -16,30 +16,6 @@ import './gesture-controller-BTEOs1at.js';
16
16
  import './focus-visible-vXpMhGrs.js';
17
17
  import './framework-delegate-CjVwn_KZ.js';
18
18
 
19
- /**
20
- * MD Action Sheet Enter Animation
21
- */
22
- const ionicEnterAnimation = (baseEl) => {
23
- const baseAnimation = createAnimation();
24
- const backdropAnimation = createAnimation();
25
- const wrapperAnimation = createAnimation();
26
- backdropAnimation
27
- .addElement(baseEl.querySelector('ion-backdrop'))
28
- .fromTo('opacity', 0.01, 'var(--backdrop-opacity)')
29
- .beforeStyles({
30
- 'pointer-events': 'none',
31
- })
32
- .afterClearStyles(['pointer-events']);
33
- wrapperAnimation
34
- .addElement(baseEl.querySelector('.action-sheet-wrapper'))
35
- .fromTo('transform', 'translateY(100%)', 'translateY(0%)');
36
- return baseAnimation
37
- .addElement(baseEl)
38
- .easing('cubic-bezier(.36,.66,.04,1)')
39
- .duration(400)
40
- .addAnimation([backdropAnimation, wrapperAnimation]);
41
- };
42
-
43
19
  /**
44
20
  * iOS Action Sheet Enter Animation
45
21
  */
@@ -222,7 +198,7 @@ const ActionSheet = class {
222
198
  async present() {
223
199
  const unlock = await this.lockController.lock();
224
200
  await this.delegateController.attachViewToDom();
225
- await present(this, 'actionSheetEnter', iosEnterAnimation, mdEnterAnimation, ionicEnterAnimation);
201
+ await present(this, 'actionSheetEnter', iosEnterAnimation, mdEnterAnimation);
226
202
  unlock();
227
203
  }
228
204
  /**
@@ -512,12 +488,12 @@ const ActionSheet = class {
512
488
  const cancelButton = allButtons.find((b) => b.role === 'cancel');
513
489
  const buttons = allButtons.filter((b) => b.role !== 'cancel');
514
490
  const headerID = `action-sheet-${overlayIndex}-header`;
515
- return (h(Host, Object.assign({ key: '63748ba90fd423cfe64c312bdd7ba77a5de04628', role: "dialog", "aria-modal": "true", "aria-labelledby": header !== undefined ? headerID : null, tabindex: "-1" }, htmlAttributes, { style: {
491
+ return (h(Host, Object.assign({ key: '3ef5b086f7a4ac4f361de8dcff5255ed1d2bcbdf', role: "dialog", "aria-modal": "true", "aria-labelledby": header !== undefined ? headerID : null, tabindex: "-1" }, htmlAttributes, { style: {
516
492
  zIndex: `${20000 + this.overlayIndex}`,
517
- }, class: Object.assign(Object.assign({ [theme]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'action-sheet-translucent': this.translucent }), onIonActionSheetWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }), h("ion-backdrop", { key: 'f0d884af5e6e902d04ca21867c6a19b313029588', tappable: this.backdropDismiss }), h("div", { key: 'd305d0bc1b2cb0b5a063df754a732987fb9a6d32', tabindex: "0", "aria-hidden": "true" }), h("div", { key: 'dc284fd35a3ebe3597ba6186b128dc69d7ca9211', class: "action-sheet-wrapper ion-overlay-wrapper", ref: (el) => (this.wrapperEl = el) }, h("div", { key: 'c423ad8a99b7df740c54f3e7cecb48ba94d6d01a', class: "action-sheet-container" }, h("div", { key: '21e02c20525b826c74a6d00a72c0c968e0590829', class: "action-sheet-group", ref: (el) => (this.groupEl = el), role: hasRadioButtons ? 'radiogroup' : undefined }, header !== undefined && (h("div", { key: 'fb002f713de61470ab80ecafb577b46ff586764c', id: headerID, class: {
493
+ }, class: Object.assign(Object.assign({ [theme]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'action-sheet-translucent': this.translucent }), onIonActionSheetWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }), h("ion-backdrop", { key: 'd98bb285f8a09a4207f35f930da77548bcdf529a', tappable: this.backdropDismiss }), h("div", { key: '6cd6aba45144244a51d76bfe0b606c3fb9a882ea', tabindex: "0", "aria-hidden": "true" }), h("div", { key: 'e6a007bcde062bd2ea7c094394aa0024ee595c9e', class: "action-sheet-wrapper ion-overlay-wrapper", ref: (el) => (this.wrapperEl = el) }, h("div", { key: '31948475a84d28488fd53e7fde16cb1deff14a2f', class: "action-sheet-container" }, h("div", { key: '4f2bbc00d36792cf6e24c402f5396546653f1e00', class: "action-sheet-group", ref: (el) => (this.groupEl = el), role: hasRadioButtons ? 'radiogroup' : undefined }, header !== undefined && (h("div", { key: '68bcafe38b49be0fe21e3e4820ee3f05f6abffad', id: headerID, class: {
518
494
  'action-sheet-title': true,
519
495
  'action-sheet-has-sub-title': this.subHeader !== undefined,
520
- } }, header, this.subHeader && h("div", { key: 'ad34552d92675e94d7215334a7abdb8901192a26', class: "action-sheet-sub-title" }, this.subHeader))), this.renderActionSheetButtons(buttons)), cancelButton && (h("div", { key: 'd2ac739b2f35ada0f03ae43f85b663bad7589c80', class: "action-sheet-group action-sheet-group-cancel" }, h("button", Object.assign({ key: 'd4c6cd090a424f5765506d7944e928393e1aab5d' }, cancelButton.htmlAttributes, { type: "button", class: buttonClass(cancelButton), onClick: () => this.buttonClick(cancelButton) }), h("span", { key: '3fdeb6dbe099ffb94eef84976cbff7bcb2db0402', class: "action-sheet-button-inner" }, cancelButton.icon && (h("ion-icon", { key: '6dc1c473bc4049031db724df33653854b10ef28d', icon: cancelButton.icon, "aria-hidden": "true", lazy: false, class: "action-sheet-icon" })), cancelButton.text), theme === 'md' && h("ion-ripple-effect", { key: 'c02a01ac8876b010e60a4b5994e84ca952e01d7d' })))))), h("div", { key: 'a2e28deb36c4adc75fad2a5dbc8e81f1f87b6ffe', tabindex: "0", "aria-hidden": "true" })));
496
+ } }, header, this.subHeader && h("div", { key: 'd253c010d0bba4a38836b6319b2d8073e1a526b9', class: "action-sheet-sub-title" }, this.subHeader))), this.renderActionSheetButtons(buttons)), cancelButton && (h("div", { key: 'b30f50a64b425a992e26673bf072332d7c3b3409', class: "action-sheet-group action-sheet-group-cancel" }, h("button", Object.assign({ key: 'e35087c05c7c8f04ca9aef322917f8172c0c4f8f' }, cancelButton.htmlAttributes, { type: "button", class: buttonClass(cancelButton), onClick: () => this.buttonClick(cancelButton) }), h("span", { key: '1f7a50fac729e19d0ee12d54bc67e071ff7b3f08', class: "action-sheet-button-inner" }, cancelButton.icon && (h("ion-icon", { key: '452641544297efc017529b674235e269285c4100', icon: cancelButton.icon, "aria-hidden": "true", lazy: false, class: "action-sheet-icon" })), cancelButton.text), theme === 'md' && h("ion-ripple-effect", { key: '15795e15d27297e6e87f7fe39386bb8581993dfa' })))))), h("div", { key: '301fef1a45d1c523221ec2312276dd3a62f3134d', tabindex: "0", "aria-hidden": "true" })));
521
497
  }
522
498
  get el() { return getElement(this); }
523
499
  static get watchers() { return {
@@ -6,7 +6,7 @@ import { E as ENABLE_HTML_CONTENT_DEFAULT, a as sanitizeDOMString } from './conf
6
6
  import { c as createButtonActiveGesture } from './button-active-g6ZnZzDZ.js';
7
7
  import { r as raf } from './helpers-Do7zwvM1.js';
8
8
  import { c as createLockController } from './lock-controller-B-hirT0v.js';
9
- import { d as createDelegateController, e as createTriggerController, B as BACKDROP, i as isCancel, j as prepareOverlay, k as setOverlayId, f as present, g as dismiss, h as eventMethod, s as safeCall } from './overlays-VA-4NWjf.js';
9
+ import { d as createDelegateController, e as createTriggerController, B as BACKDROP, i as isCancel, j as prepareOverlay, k as setOverlayId, f as present, g as dismiss, h as eventMethod, s as safeCall } from './overlays-CvFHfO3y.js';
10
10
  import { g as getClassMap } from './theme-DaJxRxSQ.js';
11
11
  import { b as getIonMode, c as getIonTheme } from './ionic-global-CAZb-5i-.js';
12
12
  import { c as createAnimation } from './animation-Cqe2x-Pt.js';
@@ -17,31 +17,6 @@ import './gesture-controller-BTEOs1at.js';
17
17
  import './focus-visible-vXpMhGrs.js';
18
18
  import './framework-delegate-CjVwn_KZ.js';
19
19
 
20
- /**
21
- * Ionic Alert Enter Animation
22
- */
23
- const ionicEnterAnimation = (baseEl) => {
24
- const baseAnimation = createAnimation();
25
- const backdropAnimation = createAnimation();
26
- const wrapperAnimation = createAnimation();
27
- backdropAnimation
28
- .addElement(baseEl.querySelector('ion-backdrop'))
29
- .fromTo('opacity', 0.01, 'var(--backdrop-opacity)')
30
- .beforeStyles({
31
- 'pointer-events': 'none',
32
- })
33
- .afterClearStyles(['pointer-events']);
34
- wrapperAnimation.addElement(baseEl.querySelector('.alert-wrapper')).keyframes([
35
- { offset: 0, opacity: '0.01', transform: 'scale(0.9)' },
36
- { offset: 1, opacity: '1', transform: 'scale(1)' },
37
- ]);
38
- return baseAnimation
39
- .addElement(baseEl)
40
- .easing('ease-in-out')
41
- .duration(150)
42
- .addAnimation([backdropAnimation, wrapperAnimation]);
43
- };
44
-
45
20
  /**
46
21
  * iOS Alert Enter Animation
47
22
  */
@@ -365,7 +340,7 @@ const Alert = class {
365
340
  async present() {
366
341
  const unlock = await this.lockController.lock();
367
342
  await this.delegateController.attachViewToDom();
368
- await present(this, 'alertEnter', iosEnterAnimation, mdEnterAnimation, ionicEnterAnimation).then(() => {
343
+ await present(this, 'alertEnter', iosEnterAnimation, mdEnterAnimation).then(() => {
369
344
  var _a, _b;
370
345
  /**
371
346
  * Check if alert has only one button and no inputs.
@@ -562,9 +537,9 @@ const Alert = class {
562
537
  * If neither are defined, do not set aria-labelledby.
563
538
  */
564
539
  const ariaLabelledBy = header && subHeader ? `${hdrId} ${subHdrId}` : header ? hdrId : subHeader ? subHdrId : null;
565
- return (h(Host, { key: '7800d04d1ecc07f7ec37f26b4f217880d9dcc857', tabindex: "-1", style: {
540
+ return (h(Host, { key: '53f8b0e1035ca965ba44f8e1314c59a227b08173', tabindex: "-1", style: {
566
541
  zIndex: `${20000 + overlayIndex}`,
567
- }, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [theme]: true, 'overlay-hidden': true, 'alert-translucent': this.translucent }), onIonAlertWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }, h("ion-backdrop", { key: '9084e82a03f3686a5fb894a0044eac4afc011504', tappable: this.backdropDismiss }), h("div", { key: '7cb89e7d38b831b6bb91cdcb4ccc5d7967db7e3c', tabindex: "0", "aria-hidden": "true" }), h("div", Object.assign({ key: 'cbd469199a8740eabe0948fa32fab28f41988fa8', class: "alert-wrapper ion-overlay-wrapper", role: role, "aria-modal": "true", "aria-labelledby": ariaLabelledBy, "aria-describedby": message !== undefined ? msgId : null, tabindex: "0", ref: (el) => (this.wrapperEl = el) }, htmlAttributes), h("div", { key: 'da0a9a21792906edd840a5070f90ca60f07f331d', class: "alert-head" }, header && (h("h2", { key: '9141036580eed67d7e46c4c1c3c2ca149745ea07', id: hdrId, class: "alert-title" }, header)), subHeader && !header && (h("h2", { key: '4cb440d940debe61c2f9c6826dced794b755b11c', id: subHdrId, class: "alert-sub-title" }, subHeader)), subHeader && header && (h("h3", { key: '671bdc7f218653fc59ddf681c9fcbaaa5e2e2177', id: subHdrId, class: "alert-sub-title" }, subHeader))), this.renderAlertMessage(msgId), this.renderAlertInputs(), this.renderAlertButtons()), h("div", { key: 'e84c40927d1d3e8748c9efb6a8c6ec77f70e8e38', tabindex: "0", "aria-hidden": "true" })));
542
+ }, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [theme]: true, 'overlay-hidden': true, 'alert-translucent': this.translucent }), onIonAlertWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }, h("ion-backdrop", { key: '39499a198543709f538fa0328214d742754543ab', tappable: this.backdropDismiss }), h("div", { key: '16417758e5ac05cfa049db5086c1ffde81fc6156', tabindex: "0", "aria-hidden": "true" }), h("div", Object.assign({ key: 'cc7dde0877f70be21019cd2e8e6c843815ec9682', class: "alert-wrapper ion-overlay-wrapper", role: role, "aria-modal": "true", "aria-labelledby": ariaLabelledBy, "aria-describedby": message !== undefined ? msgId : null, tabindex: "0", ref: (el) => (this.wrapperEl = el) }, htmlAttributes), h("div", { key: '525d28d77b6467b441ff9d357049aec7565e6f6a', class: "alert-head" }, header && (h("h2", { key: '974fc725163da00216c3c8b7b6c72c005628e0fc', id: hdrId, class: "alert-title" }, header)), subHeader && !header && (h("h2", { key: 'eedf04dbe331917c7b1348f8020d959119cc9f0f', id: subHdrId, class: "alert-sub-title" }, subHeader)), subHeader && header && (h("h3", { key: '80dbbd75184a3857172eca25f30dee950c08709b', id: subHdrId, class: "alert-sub-title" }, subHeader))), this.renderAlertMessage(msgId), this.renderAlertInputs(), this.renderAlertButtons()), h("div", { key: '0d83a74b7ae595d0593edadfe6b812435534abea', tabindex: "0", "aria-hidden": "true" })));
568
543
  }
569
544
  get el() { return getElement(this); }
570
545
  static get watchers() { return {