voyager-ionic-core 8.8.4 → 8.8.5

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 (61) hide show
  1. package/components/ion-action-sheet.js +1 -1
  2. package/components/ion-content.js +1 -1
  3. package/components/ion-modal.js +1 -1
  4. package/components/ion-radio-group.js +1 -1
  5. package/components/ion-select-modal.js +1 -1
  6. package/components/ion-select-popover.js +1 -1
  7. package/components/ion-select.js +1 -1
  8. package/components/p-0z8QSI5b.js +4 -0
  9. package/components/{p-ApmKVjaE.js → p-BGHGpkPX.js} +1 -1
  10. package/components/p-BlNv564p.js +4 -0
  11. package/components/p-D-cP12ZN.js +4 -0
  12. package/components/p-D3Ti70Hx.js +4 -0
  13. package/components/{p-Bk2zuNWT.js → p-DvOO1fxp.js} +1 -1
  14. package/dist/cjs/ion-action-sheet.cjs.entry.js +4 -4
  15. package/dist/cjs/ion-app_8.cjs.entry.js +1 -1
  16. package/dist/cjs/ion-modal.cjs.entry.js +99 -45
  17. package/dist/cjs/ion-radio_2.cjs.entry.js +13 -1
  18. package/dist/cjs/ion-select-modal.cjs.entry.js +18 -7
  19. package/dist/cjs/ion-select_3.cjs.entry.js +18 -7
  20. package/dist/collection/components/action-sheet/action-sheet.js +4 -4
  21. package/dist/collection/components/content/content.css +1 -1
  22. package/dist/collection/components/modal/modal.js +73 -44
  23. package/dist/collection/components/modal/safe-area-utils.js +27 -2
  24. package/dist/collection/components/radio-group/radio-group.js +13 -1
  25. package/dist/collection/components/radio-group/test/fixtures.js +2 -2
  26. package/dist/collection/components/select-modal/select-modal.js +18 -7
  27. package/dist/collection/components/select-modal/test/fixtures.js +4 -0
  28. package/dist/collection/components/select-popover/select-popover.js +18 -7
  29. package/dist/collection/components/select-popover/test/fixtures.js +4 -0
  30. package/dist/docs.json +1 -1
  31. package/dist/esm/ion-action-sheet.entry.js +4 -4
  32. package/dist/esm/ion-app_8.entry.js +1 -1
  33. package/dist/esm/ion-modal.entry.js +99 -45
  34. package/dist/esm/ion-radio_2.entry.js +13 -1
  35. package/dist/esm/ion-select-modal.entry.js +18 -7
  36. package/dist/esm/ion-select_3.entry.js +18 -7
  37. package/dist/ionic/ionic.esm.js +1 -1
  38. package/dist/ionic/p-268a3397.entry.js +4 -0
  39. package/dist/ionic/p-28a9e720.entry.js +4 -0
  40. package/dist/ionic/{p-4dd5e8e0.entry.js → p-8fda6a62.entry.js} +1 -1
  41. package/dist/ionic/{p-9eac4eb1.entry.js → p-aa812c4b.entry.js} +1 -1
  42. package/dist/ionic/p-cb27fe68.entry.js +4 -0
  43. package/dist/ionic/p-ce2edb36.entry.js +4 -0
  44. package/dist/types/components/modal/modal.d.ts +41 -3
  45. package/dist/types/components/modal/safe-area-utils.d.ts +16 -0
  46. package/dist/types/components/radio-group/test/fixtures.d.ts +1 -1
  47. package/dist/types/components/select-modal/select-modal.d.ts +1 -0
  48. package/dist/types/components/select-modal/test/fixtures.d.ts +1 -0
  49. package/dist/types/components/select-popover/select-popover.d.ts +1 -0
  50. package/dist/types/components/select-popover/test/fixtures.d.ts +1 -0
  51. package/hydrate/index.js +153 -65
  52. package/hydrate/index.mjs +153 -65
  53. package/package.json +1 -1
  54. package/components/p-1KVKSLu5.js +0 -4
  55. package/components/p-BI7WNErr.js +0 -4
  56. package/components/p-BTF2nRLo.js +0 -4
  57. package/components/p-EK4xUz-q.js +0 -4
  58. package/dist/ionic/p-51c11c47.entry.js +0 -4
  59. package/dist/ionic/p-5681dde4.entry.js +0 -4
  60. package/dist/ionic/p-cb78f5a0.entry.js +0 -4
  61. package/dist/ionic/p-e6c5f060.entry.js +0 -4
package/hydrate/index.mjs CHANGED
@@ -9796,7 +9796,7 @@ class ActionSheet {
9796
9796
  if (isRadio) {
9797
9797
  htmlAttrs['aria-checked'] = isActiveRadio ? 'true' : 'false';
9798
9798
  }
9799
- return (hAsync("button", Object.assign({}, htmlAttrs, { role: isRadio ? 'radio' : undefined, type: "button", id: buttonId, class: Object.assign(Object.assign({}, buttonClass$3(b)), { 'action-sheet-selected': isActiveRadio }), onClick: () => {
9799
+ return (hAsync("button", Object.assign({}, htmlAttrs, { role: isRadio ? 'radio' : undefined, type: "button", id: buttonId, class: Object.assign(Object.assign({}, buttonClass$3(b)), (isRadio && { 'action-sheet-selected': isActiveRadio })), onClick: () => {
9800
9800
  if (isRadio) {
9801
9801
  this.selectRadioButton(b);
9802
9802
  }
@@ -9811,12 +9811,12 @@ class ActionSheet {
9811
9811
  const cancelButton = allButtons.find((b) => b.role === 'cancel');
9812
9812
  const buttons = allButtons.filter((b) => b.role !== 'cancel');
9813
9813
  const headerID = `action-sheet-${overlayIndex}-header`;
9814
- return (hAsync(Host, Object.assign({ key: '173fcff5b1da7c33c267de4667591c946b8c8d03', role: "dialog", "aria-modal": "true", "aria-labelledby": header !== undefined ? headerID : null, tabindex: "-1" }, htmlAttributes, { style: {
9814
+ return (hAsync(Host, Object.assign({ key: 'a56ee2ab59c763036140dbd10306a708c26e3c17', role: "dialog", "aria-modal": "true", "aria-labelledby": header !== undefined ? headerID : null, tabindex: "-1" }, htmlAttributes, { style: {
9815
9815
  zIndex: `${20000 + this.overlayIndex}`,
9816
- }, class: Object.assign(Object.assign({ [mode]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'action-sheet-translucent': this.translucent }), onIonActionSheetWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }), hAsync("ion-backdrop", { key: '521ede659f747864f6c974e09016436eceb7158c', tappable: this.backdropDismiss }), hAsync("div", { key: '7a7946fc434bc444f16a70638f5e948c69d33fcd', tabindex: "0", "aria-hidden": "true" }), hAsync("div", { key: 'bcff39a580489dbafa255842e57aa8602c6d0f18', class: "action-sheet-wrapper ion-overlay-wrapper", ref: (el) => (this.wrapperEl = el) }, hAsync("div", { key: '84bba13ce14261f0f0daa3f9c77648c9e7f36e0e', class: "action-sheet-container" }, hAsync("div", { key: 'd9c8ac404fd6719a7adf8cb36549f67616f9a0c4', class: "action-sheet-group", ref: (el) => (this.groupEl = el), role: hasRadioButtons ? 'radiogroup' : undefined }, header !== undefined && (hAsync("div", { key: '180433a8ad03ef5c54728a1a8f34715b6921d658', id: headerID, class: {
9816
+ }, class: Object.assign(Object.assign({ [mode]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'action-sheet-translucent': this.translucent }), onIonActionSheetWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }), hAsync("ion-backdrop", { key: 'c32eb4281fd6348c7d3989a3f509c211263048e6', tappable: this.backdropDismiss }), hAsync("div", { key: '7f0123114a876fc7cfff3cfb564aded4a7017797', tabindex: "0", "aria-hidden": "true" }), hAsync("div", { key: '645b1d5fde39a8907f21983d66e6ecb7a99aa05d', class: "action-sheet-wrapper ion-overlay-wrapper", ref: (el) => (this.wrapperEl = el) }, hAsync("div", { key: 'a78fb02848462d1a4f9356ac4fa1c43a2e5d90e4', class: "action-sheet-container" }, hAsync("div", { key: '5e846f53e067b211b985d6e1512b72b9d7c1a3aa', class: "action-sheet-group", ref: (el) => (this.groupEl = el), role: hasRadioButtons ? 'radiogroup' : undefined }, header !== undefined && (hAsync("div", { key: 'a90a0e096e1b2fa78b9adb9253c0a517f16e62cb', id: headerID, class: {
9817
9817
  'action-sheet-title': true,
9818
9818
  'action-sheet-has-sub-title': this.subHeader !== undefined,
9819
- } }, header, this.subHeader && hAsync("div", { key: '7138e79e61b1a8f42bc5a9175c57fa2f15d7ec5a', class: "action-sheet-sub-title" }, this.subHeader))), this.renderActionSheetButtons(buttons)), cancelButton && (hAsync("div", { key: 'b617c722f5b8028d73ed34b69310f312c65f34a7', class: "action-sheet-group action-sheet-group-cancel" }, hAsync("button", Object.assign({ key: 'd0dd876fc48815df3710413c201c0b445a8e16c0' }, cancelButton.htmlAttributes, { type: "button", class: buttonClass$3(cancelButton), onClick: () => this.buttonClick(cancelButton) }), hAsync("span", { key: 'e7b960157cc6fc5fe92a12090b2be55e8ae072e4', class: "action-sheet-button-inner" }, cancelButton.icon && (hAsync("ion-icon", { key: '05498ffc60cab911dbff0ecbc6168dea59ada9a5', icon: cancelButton.icon, "aria-hidden": "true", lazy: false, class: "action-sheet-icon" })), cancelButton.text), mode === 'md' && hAsync("ion-ripple-effect", { key: '3d401346cea301be4ca03671f7370f6f4b0b6bde' })))))), hAsync("div", { key: '971f3c5fcc07f36c28eb469a47ec0290c692e139', tabindex: "0", "aria-hidden": "true" })));
9819
+ } }, header, this.subHeader && hAsync("div", { key: '40f00b12341625c548546de1885b9c9d93bc169c', class: "action-sheet-sub-title" }, this.subHeader))), this.renderActionSheetButtons(buttons)), cancelButton && (hAsync("div", { key: 'ef6974cb63089623df08087274b82745443cee8c', class: "action-sheet-group action-sheet-group-cancel" }, hAsync("button", Object.assign({ key: 'b02911a6491d60f9dcb5da7d942392a9e96552c1' }, cancelButton.htmlAttributes, { type: "button", class: buttonClass$3(cancelButton), onClick: () => this.buttonClick(cancelButton) }), hAsync("span", { key: '1187433e676eda55e52b5ae328a8e68bba22deb6', class: "action-sheet-button-inner" }, cancelButton.icon && (hAsync("ion-icon", { key: '079ab2a6bd40b996950053617f1c1c8207ecb1f1', icon: cancelButton.icon, "aria-hidden": "true", lazy: false, class: "action-sheet-icon" })), cancelButton.text), mode === 'md' && hAsync("ion-ripple-effect", { key: '3bc473add8ac299f202f8c359d26708872c02f52' })))))), hAsync("div", { key: '9b1ae7b4e3649e9b85632f0d65627ca81499e68d', tabindex: "0", "aria-hidden": "true" })));
9820
9820
  }
9821
9821
  get el() { return getElement(this); }
9822
9822
  static get watchers() { return {
@@ -12365,7 +12365,7 @@ const isRTL$1 = (hostEl) => {
12365
12365
  return (document === null || document === void 0 ? void 0 : document.dir.toLowerCase()) === 'rtl';
12366
12366
  };
12367
12367
 
12368
- const contentCss = () => `:host{--background:var(--ion-background-color, #fff);--color:var(--ion-text-color, #000);--padding-top:0px;--padding-bottom:0px;--padding-start:0px;--padding-end:0px;--keyboard-offset:0px;--offset-top:0px;--offset-bottom:0px;--overflow:auto;display:block;position:relative;-ms-flex:1;flex:1;width:100%;height:100%;margin:0 !important;padding:0 !important;font-family:var(--ion-font-family, inherit);contain:size style}:host(.ion-color) .inner-scroll{background:var(--ion-color-base);color:var(--ion-color-contrast)}#background-content{left:0px;right:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);position:absolute;background:var(--background)}.inner-scroll{left:0px;right:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:calc(var(--padding-top) + var(--offset-top));padding-bottom:calc(var(--padding-bottom) + var(--keyboard-offset) + var(--offset-bottom));position:absolute;color:var(--color);-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;-ms-touch-action:pan-x pan-y pinch-zoom;touch-action:pan-x pan-y pinch-zoom}.scroll-y,.scroll-x{-webkit-overflow-scrolling:touch;z-index:0;will-change:scroll-position}.scroll-y{overflow-y:var(--overflow);overscroll-behavior-y:contain}.scroll-x{overflow-x:var(--overflow);overscroll-behavior-x:contain}.overscroll::before,.overscroll::after{position:absolute;width:1px;height:1px;content:""}.overscroll::before{bottom:-1px}.overscroll::after{top:-1px}:host(.content-sizing){display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-height:0;contain:none}:host(.content-sizing) .inner-scroll{position:relative;top:0;bottom:0;margin-top:calc(var(--offset-top) * -1);margin-bottom:calc(var(--offset-bottom) * -1)}.transition-effect{display:none;position:absolute;width:100%;height:100vh;opacity:0;pointer-events:none}:host(.content-ltr) .transition-effect{left:-100%;}:host(.content-rtl) .transition-effect{right:-100%;}.transition-cover{position:absolute;right:0;width:100%;height:100%;background:black;opacity:0.1}.transition-shadow{display:block;position:absolute;width:100%;height:100%;-webkit-box-shadow:inset -9px 0 9px 0 rgba(0, 0, 100, 0.03);box-shadow:inset -9px 0 9px 0 rgba(0, 0, 100, 0.03)}:host(.content-ltr) .transition-shadow{right:0;}:host(.content-rtl) .transition-shadow{left:0;-webkit-transform:scaleX(-1);transform:scaleX(-1)}::slotted([slot=fixed]){position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0)}`;
12368
+ const contentCss = () => `:host{--background:var(--ion-background-color, #fff);--color:var(--ion-text-color, #000);--padding-top:0px;--padding-bottom:0px;--padding-start:0px;--padding-end:0px;--keyboard-offset:0px;--offset-top:0px;--offset-bottom:0px;--overflow:auto;display:block;position:relative;-ms-flex:1;flex:1;width:100%;height:100%;margin:0 !important;padding:0 !important;font-family:var(--ion-font-family, inherit);contain:size style}:host(.ion-color) .inner-scroll{background:var(--ion-color-base);color:var(--ion-color-contrast)}#background-content{left:0px;right:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);position:absolute;background:var(--background)}.inner-scroll{left:0px;right:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:calc(var(--padding-top) + var(--offset-top));padding-bottom:calc(var(--padding-bottom) + var(--keyboard-offset) + var(--offset-bottom) + var(--ion-content-safe-area-padding-bottom, 0px));position:absolute;color:var(--color);-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;-ms-touch-action:pan-x pan-y pinch-zoom;touch-action:pan-x pan-y pinch-zoom}.scroll-y,.scroll-x{-webkit-overflow-scrolling:touch;z-index:0;will-change:scroll-position}.scroll-y{overflow-y:var(--overflow);overscroll-behavior-y:contain}.scroll-x{overflow-x:var(--overflow);overscroll-behavior-x:contain}.overscroll::before,.overscroll::after{position:absolute;width:1px;height:1px;content:""}.overscroll::before{bottom:-1px}.overscroll::after{top:-1px}:host(.content-sizing){display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-height:0;contain:none}:host(.content-sizing) .inner-scroll{position:relative;top:0;bottom:0;margin-top:calc(var(--offset-top) * -1);margin-bottom:calc(var(--offset-bottom) * -1)}.transition-effect{display:none;position:absolute;width:100%;height:100vh;opacity:0;pointer-events:none}:host(.content-ltr) .transition-effect{left:-100%;}:host(.content-rtl) .transition-effect{right:-100%;}.transition-cover{position:absolute;right:0;width:100%;height:100%;background:black;opacity:0.1}.transition-shadow{display:block;position:absolute;width:100%;height:100%;-webkit-box-shadow:inset -9px 0 9px 0 rgba(0, 0, 100, 0.03);box-shadow:inset -9px 0 9px 0 rgba(0, 0, 100, 0.03)}:host(.content-ltr) .transition-shadow{right:0;}:host(.content-rtl) .transition-shadow{left:0;-webkit-transform:scaleX(-1);transform:scaleX(-1)}::slotted([slot=fixed]){position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0)}`;
12369
12369
 
12370
12370
  /**
12371
12371
  * @slot - Content is placed in the scrollable area if provided without a slot.
@@ -25006,6 +25006,12 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
25006
25006
  const MODAL_INSET_MIN_WIDTH = 768;
25007
25007
  const MODAL_INSET_MIN_HEIGHT = 600;
25008
25008
  const EDGE_THRESHOLD = 5;
25009
+ /**
25010
+ * CSS values for `--width` / `--height` that are treated as fullscreen
25011
+ * (modal touches the corresponding screen edges). Empty string means the
25012
+ * property was not overridden. See `hasCustomModalDimensions()`.
25013
+ */
25014
+ const FULLSCREEN_SIZE_VALUES = new Set(['', '100%', '100vw', '100vh', '100dvw', '100dvh', '100svw', '100svh']);
25009
25015
  /**
25010
25016
  * Cache for resolved root safe-area-top value, invalidated once per frame.
25011
25017
  */
@@ -25054,6 +25060,22 @@ const getRootSafeAreaTop = () => {
25054
25060
  }
25055
25061
  return value;
25056
25062
  };
25063
+ /**
25064
+ * True when the modal host declares BOTH a non-fullscreen `--width` AND a
25065
+ * non-fullscreen `--height` (i.e. a centered-dialog-like modal that doesn't
25066
+ * touch any screen edge).
25067
+ *
25068
+ * The conservative "both axes" check avoids mis-zeroing safe-area for
25069
+ * partial-custom modals where the modal still touches top/bottom edges
25070
+ * (e.g. only `--width` overridden). Partial cases fall through to the
25071
+ * existing position-based post-animation correction.
25072
+ */
25073
+ const hasCustomModalDimensions = (hostEl) => {
25074
+ const styles = getComputedStyle(hostEl);
25075
+ const width = styles.getPropertyValue('--width').trim();
25076
+ const height = styles.getPropertyValue('--height').trim();
25077
+ return !FULLSCREEN_SIZE_VALUES.has(width) && !FULLSCREEN_SIZE_VALUES.has(height);
25078
+ };
25057
25079
  /**
25058
25080
  * Returns the initial safe-area configuration based on modal type.
25059
25081
  * This is called before animation starts and uses configuration-based prediction.
@@ -25088,8 +25110,11 @@ const getInitialSafeAreaConfig = (context) => {
25088
25110
  }
25089
25111
  // On viewports that meet the centered dialog media query breakpoints,
25090
25112
  // regular modals render as centered dialogs (not fullscreen), so they
25091
- // don't touch any screen edges and don't need safe-area insets.
25092
- if (isCenteredDialogViewport()) {
25113
+ // don't touch any screen edges and don't need safe-area insets. Also
25114
+ // applies to phone viewports when the modal declares custom --width and
25115
+ // --height; these don't touch screen edges either, so the initial
25116
+ // prediction must be zero to avoid a post-animation correction flash.
25117
+ if (isCenteredDialogViewport() || context.hasCustomDimensions) {
25093
25118
  return {
25094
25119
  top: '0px',
25095
25120
  bottom: '0px',
@@ -25401,12 +25426,10 @@ class Modal {
25401
25426
  // since the viewport may have crossed the centered-dialog breakpoint.
25402
25427
  if (!context.isSheetModal && !context.isCardModal) {
25403
25428
  this.updateSafeAreaOverrides();
25404
- // Re-evaluate fullscreen safe-area padding: clear first, then re-apply
25405
- if (this.wrapperEl) {
25406
- this.wrapperEl.style.removeProperty('height');
25407
- this.wrapperEl.style.removeProperty('padding-bottom');
25408
- }
25409
- this.applyFullscreenSafeArea();
25429
+ // Re-evaluate fullscreen safe-area padding: clear first, then re-apply.
25430
+ const { contentEl, hasFooter } = this.findContentAndFooter();
25431
+ this.clearContentSafeAreaPadding(contentEl);
25432
+ this.applyFullscreenSafeAreaTo(contentEl, hasFooter);
25410
25433
  }
25411
25434
  }, 50); // Debounce to avoid excessive calls during active resizing
25412
25435
  }
@@ -26153,6 +26176,11 @@ class Modal {
26153
26176
  }
26154
26177
  /**
26155
26178
  * Creates the context object for safe-area utilities.
26179
+ *
26180
+ * `hasCustomDimensions` is only set by `setInitialSafeAreaOverrides()`
26181
+ * because it is only read by `getInitialSafeAreaConfig()`. Other callers
26182
+ * (resize handler, post-animation update, fullscreen-padding apply) would
26183
+ * pay a `getComputedStyle()` cost for a value they never consult.
26156
26184
  */
26157
26185
  getSafeAreaContext() {
26158
26186
  return {
@@ -26174,7 +26202,7 @@ class Modal {
26174
26202
  * sheets to prevent header content from getting double-offset padding).
26175
26203
  */
26176
26204
  setInitialSafeAreaOverrides() {
26177
- const context = this.getSafeAreaContext();
26205
+ const context = Object.assign(Object.assign({}, this.getSafeAreaContext()), { hasCustomDimensions: hasCustomModalDimensions(this.el) });
26178
26206
  const safeAreaConfig = getInitialSafeAreaConfig(context);
26179
26207
  applySafeAreaOverrides(this.el, safeAreaConfig);
26180
26208
  // Set the internal offset property with the resolved root safe-area-top value
@@ -26214,59 +26242,85 @@ class Modal {
26214
26242
  applySafeAreaOverrides(el, safeAreaConfig);
26215
26243
  }
26216
26244
  /**
26217
- * Applies padding-bottom to fullscreen modal wrapper to prevent
26218
- * content from overlapping system navigation bar.
26245
+ * Applies safe-area-bottom scroll padding to ion-content inside
26246
+ * fullscreen modals that have no ion-footer. This prevents content
26247
+ * from being hidden behind the system navigation bar while keeping
26248
+ * the modal background edge-to-edge (no visible gap).
26219
26249
  */
26220
26250
  applyFullscreenSafeArea() {
26221
- const { wrapperEl, el } = this;
26222
- if (!wrapperEl)
26223
- return;
26224
26251
  const context = this.getSafeAreaContext();
26225
26252
  if (context.isSheetModal || context.isCardModal)
26226
26253
  return;
26227
- // Check for standard Ionic layout children (ion-content, ion-footer),
26228
- // searching one level deep for wrapped components (e.g.,
26229
- // <app-footer><ion-footer>...</ion-footer></app-footer>).
26230
- // Note: uses a manual loop instead of querySelector(':scope > ...') because
26231
- // Stencil's mock-doc (used in spec tests) does not support :scope.
26232
- let hasContent = false;
26254
+ const { contentEl, hasFooter } = this.findContentAndFooter();
26255
+ this.applyFullscreenSafeAreaTo(contentEl, hasFooter);
26256
+ }
26257
+ /**
26258
+ * Sets --ion-content-safe-area-padding-bottom on the given ion-content
26259
+ * when no footer is present, so ion-content's .inner-scroll includes
26260
+ * safe-area-bottom in its scroll padding. This keeps the modal background
26261
+ * edge-to-edge while ensuring content scrolls clear of the system nav bar.
26262
+ *
26263
+ * --ion-content-safe-area-padding-bottom is an internal CSS property used
26264
+ * only by this code path. It is not part of ion-content's public API and
26265
+ * should not be set by consumers. The default of 0px makes it a no-op
26266
+ * when unset, which is the expected state for ion-content used outside of
26267
+ * a fullscreen modal without a footer.
26268
+ */
26269
+ applyFullscreenSafeAreaTo(contentEl, hasFooter) {
26270
+ // Only apply for standard Ionic layouts (has ion-content but no
26271
+ // ion-footer). When a footer is present it handles its own safe-area
26272
+ // padding. Custom modals with raw HTML are developer-controlled.
26273
+ if (!contentEl || hasFooter)
26274
+ return;
26275
+ contentEl.style.setProperty('--ion-content-safe-area-padding-bottom', 'var(--ion-safe-area-bottom, 0px)');
26276
+ }
26277
+ /**
26278
+ * Removes the internal --ion-content-safe-area-padding-bottom property
26279
+ * from an already-located ion-content. Callers do their own
26280
+ * findContentAndFooter() so they can also read hasFooter if needed.
26281
+ */
26282
+ clearContentSafeAreaPadding(contentEl) {
26283
+ if (!contentEl)
26284
+ return;
26285
+ contentEl.style.removeProperty('--ion-content-safe-area-padding-bottom');
26286
+ }
26287
+ /**
26288
+ * Finds ion-content and ion-footer among direct children and one level of
26289
+ * grandchildren (for wrapped components like <app-footer><ion-footer>).
26290
+ *
26291
+ * Intentionally does NOT use findIonContent() or querySelector() because
26292
+ * those search the full subtree and would match ion-content inside nested
26293
+ * routes/pages. We only want direct slot children (+ one wrapper level).
26294
+ *
26295
+ * Uses a manual loop instead of querySelector(':scope > ...') because
26296
+ * Stencil's mock-doc (used in spec tests) does not support :scope.
26297
+ */
26298
+ findContentAndFooter() {
26299
+ let contentEl = null;
26233
26300
  let hasFooter = false;
26234
- for (const child of Array.from(el.children)) {
26301
+ for (const child of Array.from(this.el.children)) {
26235
26302
  if (child.tagName === 'ION-CONTENT')
26236
- hasContent = true;
26303
+ contentEl = child;
26237
26304
  if (child.tagName === 'ION-FOOTER')
26238
26305
  hasFooter = true;
26239
26306
  for (const grandchild of Array.from(child.children)) {
26240
- if (grandchild.tagName === 'ION-CONTENT')
26241
- hasContent = true;
26307
+ if (grandchild.tagName === 'ION-CONTENT' && !contentEl)
26308
+ contentEl = grandchild;
26242
26309
  if (grandchild.tagName === 'ION-FOOTER')
26243
26310
  hasFooter = true;
26244
26311
  }
26245
26312
  }
26246
- // Only apply wrapper padding for standard Ionic layouts (has ion-content
26247
- // but no ion-footer). Custom modals with raw HTML are fully
26248
- // developer-controlled and should not be modified.
26249
- if (!hasContent || hasFooter)
26250
- return;
26251
- // Reduce wrapper height by safe-area and add equivalent padding so the
26252
- // total visual size stays the same but the flex content area shrinks.
26253
- // Using height + padding instead of box-sizing: border-box avoids
26254
- // breaking custom modals that set --border-width (border-box would
26255
- // include the border inside the height, changing the layout).
26256
- wrapperEl.style.setProperty('height', 'calc(var(--height) - var(--ion-safe-area-bottom, 0px))');
26257
- wrapperEl.style.setProperty('padding-bottom', 'var(--ion-safe-area-bottom, 0px)');
26313
+ return { contentEl, hasFooter };
26258
26314
  }
26259
26315
  /**
26260
- * Clears all safe-area overrides and padding from wrapper.
26316
+ * Clears all safe-area overrides and padding.
26261
26317
  */
26262
26318
  cleanupSafeAreaOverrides() {
26263
26319
  clearSafeAreaOverrides(this.el);
26264
26320
  // Remove internal sheet offset property
26265
26321
  this.el.style.removeProperty('--ion-modal-offset-top');
26266
- if (this.wrapperEl) {
26267
- this.wrapperEl.style.removeProperty('height');
26268
- this.wrapperEl.style.removeProperty('padding-bottom');
26269
- }
26322
+ const { contentEl } = this.findContentAndFooter();
26323
+ this.clearContentSafeAreaPadding(contentEl);
26270
26324
  }
26271
26325
  render() {
26272
26326
  const { handle, isSheetModal, presentingElement, htmlAttributes, handleBehavior, inheritedAttributes, focusTrap, expandToScroll, } = this;
@@ -26275,20 +26329,20 @@ class Modal {
26275
26329
  const isCardModal = presentingElement !== undefined && mode === 'ios';
26276
26330
  const isHandleCycle = handleBehavior === 'cycle';
26277
26331
  const isSheetModalWithHandle = isSheetModal && showHandle;
26278
- return (hAsync(Host, Object.assign({ key: '1a53e8f87532abccc169ca4b24973a39c5f9ba16', "no-router": true,
26332
+ return (hAsync(Host, Object.assign({ key: '4bf38aa67df9a3f977163bba5423960bbafd16de', "no-router": true,
26279
26333
  // Allow the modal to be navigable when the handle is focusable
26280
26334
  tabIndex: isHandleCycle && isSheetModalWithHandle ? 0 : -1 }, htmlAttributes, { style: {
26281
26335
  zIndex: `${20000 + this.overlayIndex}`,
26282
- }, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`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 }), hAsync("ion-backdrop", { key: 'fa8e0a436c0d458331402e1850f87af3dc97b582', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && hAsync("div", { key: 'f00de6027d3c8b5bc93db3b0f7a50a87628d40bb', class: "modal-shadow" }), hAsync("div", Object.assign({ key: 'ae5e33bd6c58e541edb2edbca92420ea02dd5175',
26336
+ }, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`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 }), hAsync("ion-backdrop", { key: '866da40cc5fc8d3e36637098fb3066a5bc9f4e0f', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && hAsync("div", { key: '5a2a05514ea8592c8feb0465e504aa7c7af17963', class: "modal-shadow" }), hAsync("div", Object.assign({ key: '4d327115306451f57d190b06ab8cbb6191a6f1d7',
26283
26337
  /*
26284
26338
  role and aria-modal must be used on the
26285
26339
  same element. They must also be set inside the
26286
26340
  shadow DOM otherwise ion-button will not be highlighted
26287
26341
  when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
26288
26342
  */
26289
- role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (hAsync("button", { key: '141cdd8f8522331f4b764e2a4d79ec6596b1eb3a', class: "modal-handle",
26343
+ role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (hAsync("button", { key: 'd1882835cc049232c0d957e3ba1e79676a07d179', class: "modal-handle",
26290
26344
  // Prevents the handle from receiving keyboard focus when it does not cycle
26291
- 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) })), hAsync("slot", { key: '7de20298b61abee67a16d275c9ebd9a25ce7dd26', onSlotchange: this.onSlotChange }))));
26345
+ 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) })), hAsync("slot", { key: '81dc58b09cf7d7022b04cd170f53113604364d5e', onSlotchange: this.onSlotChange }))));
26292
26346
  }
26293
26347
  get el() { return getElement(this); }
26294
26348
  static get watchers() { return {
@@ -31301,6 +31355,18 @@ class RadioGroup {
31301
31355
  // to the bottom of the screen
31302
31356
  ev.preventDefault();
31303
31357
  }
31358
+ // Inside a select interface, Enter commits the focused radio
31359
+ // value (matching native <select>). The !ev.repeat guard stops
31360
+ // a held Enter on the triggering ion-select from re-committing
31361
+ // once focus lands in the opened popover/modal.
31362
+ if (ev.key === 'Enter' && inSelectInterface && !ev.repeat) {
31363
+ const previousValue = this.value;
31364
+ this.value = current.value;
31365
+ if (previousValue !== this.value) {
31366
+ this.emitValueChange(ev);
31367
+ }
31368
+ ev.preventDefault();
31369
+ }
31304
31370
  }
31305
31371
  }
31306
31372
  /** @internal */
@@ -31333,7 +31399,7 @@ class RadioGroup {
31333
31399
  const { label, labelId, el, name, value } = this;
31334
31400
  const mode = getIonMode$1(this);
31335
31401
  renderHiddenInput(true, el, name, value, false);
31336
- return (hAsync(Host, { key: 'db593b3ed511e9395e3c7bfd91b787328692cd6d', role: "radiogroup", "aria-labelledby": label ? labelId : null, "aria-describedby": this.hintTextId, "aria-invalid": this.isInvalid ? 'true' : undefined, onClick: this.onClick, class: mode }, this.renderHintText(), hAsync("slot", { key: 'd683b01c1ba34fe843c4b320bce4661a117472a5' })));
31402
+ return (hAsync(Host, { key: '377e4aa3a656cc84b742f9d7a7d4be65d20c69f5', role: "radiogroup", "aria-labelledby": label ? labelId : null, "aria-describedby": this.hintTextId, "aria-invalid": this.isInvalid ? 'true' : undefined, onClick: this.onClick, class: mode }, this.renderHintText(), hAsync("slot", { key: 'c3187a2497773b4f15cea3b413b036502bcec8c0' })));
31337
31403
  }
31338
31404
  get el() { return getElement(this); }
31339
31405
  static get watchers() { return {
@@ -37423,6 +37489,10 @@ const selectModalMdCss = () => `.sc-ion-select-modal-md-h{height:100%}ion-list.s
37423
37489
  class SelectModal {
37424
37490
  constructor(hostRef) {
37425
37491
  registerInstance(this, hostRef);
37492
+ // Tracks the option that received Enter-keydown so keyup only
37493
+ // dismisses when the press started on the same option. Prevents
37494
+ // Enter on the triggering ion-select from auto-dismissing.
37495
+ this.pendingEnterTarget = null;
37426
37496
  /**
37427
37497
  * The text to display on the cancel button.
37428
37498
  */
@@ -37472,15 +37542,22 @@ class SelectModal {
37472
37542
  return (hAsync("ion-radio-group", { value: checked, onIonChange: (ev) => this.callOptionHandler(ev) }, this.options.map((option) => (hAsync("ion-item", { lines: "none", class: Object.assign({
37473
37543
  // TODO FW-4784
37474
37544
  'item-radio-checked': option.value === checked
37475
- }, getClassMap(option.cssClass)) }, hAsync("ion-radio", { value: option.value, disabled: option.disabled, justify: "start", labelPlacement: "end", onClick: () => this.closeModal(), onKeyUp: (ev) => {
37545
+ }, getClassMap(option.cssClass)) }, hAsync("ion-radio", { value: option.value, disabled: option.disabled, justify: "start", labelPlacement: "end", onClick: () => this.closeModal(), onKeyDown: (ev) => {
37546
+ if (ev.key === 'Enter' && !ev.repeat) {
37547
+ this.pendingEnterTarget = ev.currentTarget;
37548
+ }
37549
+ }, onKeyUp: (ev) => {
37476
37550
  if (ev.key === ' ') {
37477
- /**
37478
- * Selecting a radio option with keyboard navigation,
37479
- * either through the Enter or Space keys, should
37480
- * dismiss the modal.
37481
- */
37551
+ // Space selects and dismisses in one press.
37482
37552
  this.closeModal();
37483
37553
  }
37554
+ else if (ev.key === 'Enter') {
37555
+ const shouldClose = this.pendingEnterTarget === ev.currentTarget;
37556
+ this.pendingEnterTarget = null;
37557
+ if (shouldClose) {
37558
+ this.closeModal();
37559
+ }
37560
+ }
37484
37561
  } }, option.text))))));
37485
37562
  }
37486
37563
  renderCheckboxOptions() {
@@ -37493,7 +37570,7 @@ class SelectModal {
37493
37570
  } }, option.text))));
37494
37571
  }
37495
37572
  render() {
37496
- return (hAsync(Host, { key: 'f8a4cd6ff23ff01eaa1bdaf3c046814e7b30b23b', class: getIonMode$1(this) }, hAsync("ion-header", { key: '9e29a7e57ad5cf332641111882f16852187ec8ba' }, hAsync("ion-toolbar", { key: 'e6af5d6eabbf4b10799fc8a0b8f91d29b12d41f5' }, this.header !== undefined && hAsync("ion-title", { key: '6056e52d15dbf307571d25e0305d67228a79237d' }, this.header), hAsync("ion-buttons", { key: 'c9aa4fb2e21a93f3a95c5a8f0ba8b7d5553c5a72', slot: "end" }, hAsync("ion-button", { key: '5ffbf512719bcb053b652fc96b1b6154d0593095', onClick: () => this.closeModal() }, this.cancelText)))), hAsync("ion-content", { key: '0ec9098798a4e6de7a83a0a7e9d10bdcd7c98a78' }, hAsync("ion-list", { key: 'd60b1700d3c2f8655951632de810900707a101f0' }, this.multiple === true ? this.renderCheckboxOptions() : this.renderRadioOptions()))));
37573
+ return (hAsync(Host, { key: 'fda0bf6f93cd5ec9f3c64f88a52de849e0e140a2', class: getIonMode$1(this) }, hAsync("ion-header", { key: '27c0b17175a53db9ff159feeeb96451a3f011dab' }, hAsync("ion-toolbar", { key: '91a4155ebc317fbc9f1bb3e26a7e94754b953c9b' }, this.header !== undefined && hAsync("ion-title", { key: 'f6dae8e4e381f322cc90efefd9bb6ef81d4d2f3e' }, this.header), hAsync("ion-buttons", { key: 'e7760532fb2e7e7385ed6e62097d92d96ff20148', slot: "end" }, hAsync("ion-button", { key: '4999b6fc46cba138186546dca67b7950855e6fb7', onClick: () => this.closeModal() }, this.cancelText)))), hAsync("ion-content", { key: 'c73f80a4bc25b9061ea65cf11e5d811c1a4d8704' }, hAsync("ion-list", { key: 'b21905d15b36ad5eb45845e768918d2763cf48b1' }, this.multiple === true ? this.renderCheckboxOptions() : this.renderRadioOptions()))));
37497
37574
  }
37498
37575
  get el() { return getElement(this); }
37499
37576
  static get style() { return {
@@ -37556,6 +37633,10 @@ const selectPopoverMdCss = () => `.sc-ion-select-popover-md-h ion-list.sc-ion-se
37556
37633
  class SelectPopover {
37557
37634
  constructor(hostRef) {
37558
37635
  registerInstance(this, hostRef);
37636
+ // Tracks the option that received Enter-keydown so keyup only
37637
+ // dismisses when the press started on the same option. Prevents
37638
+ // Enter on the triggering ion-select from auto-dismissing.
37639
+ this.pendingEnterTarget = null;
37559
37640
  /**
37560
37641
  * An array of options for the popover
37561
37642
  */
@@ -37631,21 +37712,28 @@ class SelectPopover {
37631
37712
  return (hAsync("ion-radio-group", { value: checked, onIonChange: (ev) => this.callOptionHandler(ev) }, options.map((option) => (hAsync("ion-item", { class: Object.assign({
37632
37713
  // TODO FW-4784
37633
37714
  'item-radio-checked': option.value === checked
37634
- }, getClassMap(option.cssClass)) }, hAsync("ion-radio", { value: option.value, disabled: option.disabled, onClick: () => this.dismissParentPopover(), onKeyUp: (ev) => {
37715
+ }, getClassMap(option.cssClass)) }, hAsync("ion-radio", { value: option.value, disabled: option.disabled, onClick: () => this.dismissParentPopover(), onKeyDown: (ev) => {
37716
+ if (ev.key === 'Enter' && !ev.repeat) {
37717
+ this.pendingEnterTarget = ev.currentTarget;
37718
+ }
37719
+ }, onKeyUp: (ev) => {
37635
37720
  if (ev.key === ' ') {
37636
- /**
37637
- * Selecting a radio option with keyboard navigation,
37638
- * either through the Enter or Space keys, should
37639
- * dismiss the popover.
37640
- */
37721
+ // Space selects and dismisses in one press.
37641
37722
  this.dismissParentPopover();
37642
37723
  }
37724
+ else if (ev.key === 'Enter') {
37725
+ const shouldDismiss = this.pendingEnterTarget === ev.currentTarget;
37726
+ this.pendingEnterTarget = null;
37727
+ if (shouldDismiss) {
37728
+ this.dismissParentPopover();
37729
+ }
37730
+ }
37643
37731
  } }, option.text))))));
37644
37732
  }
37645
37733
  render() {
37646
37734
  const { header, message, options, subHeader } = this;
37647
37735
  const hasSubHeaderOrMessage = subHeader !== undefined || message !== undefined;
37648
- return (hAsync(Host, { key: '0c9845a40d3fc392b0a7d64e2a6ed27d94bb7634', class: getIonMode$1(this) }, hAsync("ion-list", { key: '84a30f6661b0f8c00e6fa199658ed2adbcf27358' }, header !== undefined && hAsync("ion-list-header", { key: '13f5f56bbfbc06751fa516291a2da72629b60ece' }, header), hasSubHeaderOrMessage && (hAsync("ion-item", { key: '3d39d18e720e798bbde334e79e6832091c7dfb81' }, hAsync("ion-label", { key: 'd3051b0d140120b44bf5e79572f6f287e7cfb03a', class: "ion-text-wrap" }, subHeader !== undefined && hAsync("h3", { key: 'b16805956f3316f8ec703c123b76f717488e8637' }, subHeader), message !== undefined && hAsync("p", { key: '2215ac4ab4146a14e75a79192e319a8016286b5f' }, message)))), this.renderOptions(options))));
37736
+ return (hAsync(Host, { key: 'e7449a1ecfcdbf45a79f8e26a00253c4e146448a', class: getIonMode$1(this) }, hAsync("ion-list", { key: '52abdfc8668c3429a0dcefef8ddedb6647fdd894' }, header !== undefined && hAsync("ion-list-header", { key: '978e5c03728756feafcc60a0e10e6ec59bf2ae11' }, header), hasSubHeaderOrMessage && (hAsync("ion-item", { key: 'e93c44e7f07a76def16e4b11f0fb4780d84ed402' }, hAsync("ion-label", { key: 'bba1aac43b0bc7f4f00978dd8301985233f3725c', class: "ion-text-wrap" }, subHeader !== undefined && hAsync("h3", { key: 'ad96f6017cf2cc5219540bded2c4f1ca3b532de2' }, subHeader), message !== undefined && hAsync("p", { key: '3fd038921dc40c4d0c29734433984b279ccaeec3' }, message)))), this.renderOptions(options))));
37649
37737
  }
37650
37738
  get el() { return getElement(this); }
37651
37739
  static get style() { return {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "voyager-ionic-core",
3
- "version": "8.8.4",
3
+ "version": "8.8.5",
4
4
  "description": "Base components for Ionic",
5
5
  "engines": {
6
6
  "node": ">= 16"
@@ -1,4 +0,0 @@
1
- /*!
2
- * (C) Ionic http://ionicframework.com - MIT License
3
- */
4
- import{p as t,H as o,e,k as i,h as n,d as a,t as s}from"./p-BJoMtgfR.js";import{c as r}from"./p-C4jPsTQa.js";import{r as c}from"./p-DgbT0exM.js";import{c as d}from"./p-B-hirT0v.js";import{d as l,e as h,B as b,i as u,f as p,g,h as f,s as m,j as v,k}from"./p-Cq8cQ0NL.js";import{g as x}from"./p-DiVJyqlX.js";import{b as y}from"./p-CDfQnFrd.js";import{c as w}from"./p-Csw8xuz4.js";import{d as z}from"./p-CoA-aqGF.js";import{d as j}from"./p-YLXPWgVj.js";import{d as C}from"./p-fpbh6w3f.js";const D=t=>{const o=w(),e=w(),i=w();return e.addElement(t.querySelector("ion-backdrop")).fromTo("opacity",.01,"var(--backdrop-opacity)").beforeStyles({"pointer-events":"none"}).afterClearStyles(["pointer-events"]),i.addElement(t.querySelector(".action-sheet-wrapper")).fromTo("transform","translateY(100%)","translateY(0%)"),o.addElement(t).easing("cubic-bezier(.36,.66,.04,1)").duration(400).addAnimation([e,i])},A=t=>{const o=w(),e=w(),i=w();return e.addElement(t.querySelector("ion-backdrop")).fromTo("opacity","var(--backdrop-opacity)",0),i.addElement(t.querySelector(".action-sheet-wrapper")).fromTo("transform","translateY(0%)","translateY(100%)"),o.addElement(t).easing("cubic-bezier(.36,.66,.04,1)").duration(450).addAnimation([e,i])},O=t=>{const o=w(),e=w(),i=w();return e.addElement(t.querySelector("ion-backdrop")).fromTo("opacity",.01,"var(--backdrop-opacity)").beforeStyles({"pointer-events":"none"}).afterClearStyles(["pointer-events"]),i.addElement(t.querySelector(".action-sheet-wrapper")).fromTo("transform","translateY(100%)","translateY(0%)"),o.addElement(t).easing("cubic-bezier(.36,.66,.04,1)").duration(400).addAnimation([e,i])},I=t=>{const o=w(),e=w(),i=w();return e.addElement(t.querySelector("ion-backdrop")).fromTo("opacity","var(--backdrop-opacity)",0),i.addElement(t.querySelector(".action-sheet-wrapper")).fromTo("transform","translateY(0%)","translateY(100%)"),o.addElement(t).easing("cubic-bezier(.36,.66,.04,1)").duration(450).addAnimation([e,i])},B=t(class extends o{constructor(t){super(),!1!==t&&this.__registerHost(),this.didPresent=e(this,"ionActionSheetDidPresent",7),this.willPresent=e(this,"ionActionSheetWillPresent",7),this.willDismiss=e(this,"ionActionSheetWillDismiss",7),this.didDismiss=e(this,"ionActionSheetDidDismiss",7),this.didPresentShorthand=e(this,"didPresent",7),this.willPresentShorthand=e(this,"willPresent",7),this.willDismissShorthand=e(this,"willDismiss",7),this.didDismissShorthand=e(this,"didDismiss",7),this.delegateController=l(this),this.lockController=d(),this.triggerController=h(),this.hasRadioButtons=!1,this.presented=!1,this.hasController=!1,this.keyboardClose=!0,this.buttons=[],this.backdropDismiss=!0,this.translucent=!1,this.animated=!0,this.isOpen=!1,this.onBackdropTap=()=>{this.dismiss(void 0,b)},this.dispatchCancelHandler=t=>{if(u(t.detail.role)){const t=this.getButtons().find((t=>"cancel"===t.role));this.callButtonHandler(t)}}}buttonsChanged(){const t=this.getRadioButtons();if(this.hasRadioButtons=t.length>0,this.hasRadioButtons){const o=t.find((t=>{var o;return"true"===(null===(o=t.htmlAttributes)||void 0===o?void 0:o["aria-checked"])}));if(o){const t=this.getButtons().indexOf(o);this.activeRadioId=this.getButtonId(o,t)}}}onIsOpenChange(t,o){!0===t&&!1===o?this.present():!1===t&&!0===o&&this.dismiss()}triggerChanged(){const{trigger:t,el:o,triggerController:e}=this;t&&e.addClickListener(o,t)}async present(){const t=await this.lockController.lock();await this.delegateController.attachViewToDom(),await p(this,"actionSheetEnter",D,O),t()}async dismiss(t,o){const e=await this.lockController.lock(),i=await g(this,t,o,"actionSheetLeave",A,I);return i&&this.delegateController.removeViewFromDom(),e(),i}onDidDismiss(){return f(this.el,"ionActionSheetDidDismiss")}onWillDismiss(){return f(this.el,"ionActionSheetWillDismiss")}async buttonClick(t){const o=t.role;return u(o)?this.dismiss(t.data,o):await this.callButtonHandler(t)?this.dismiss(t.data,t.role):Promise.resolve()}async callButtonHandler(t){return!t||!1!==await m(t.handler)}getButtons(){return this.buttons.map((t=>"string"==typeof t?{text:t}:t))}getRadioButtons(){return this.getButtons().filter((t=>{var o;const e=null===(o=t.htmlAttributes)||void 0===o?void 0:o.role;return"radio"===e&&!u(e)}))}selectRadioButton(t){const o=this.getButtonId(t);this.activeRadioId=o}getButtonId(t,o){if(t.id)return t.id;const e=this.getButtons(),i=void 0!==o?o:e.indexOf(t);return`action-sheet-button-${this.overlayIndex}-${i}`}onKeydown(t){if(!this.hasRadioButtons||!this.presented)return;const o=t.target;if(!this.el.contains(o)||!o.classList.contains("action-sheet-button")||"radio"!==o.getAttribute("role"))return;const e=Array.from(this.el.querySelectorAll('.action-sheet-button[role="radio"]')).filter((t=>!t.disabled)),i=e.findIndex((t=>t.id===o.id));if(-1===i)return;const n=this.getButtons(),a=this.getRadioButtons(),s=new Map;let r;if(a.forEach((t=>{const o=n.indexOf(t),e=this.getButtonId(t,o);s.set(e,t)})),["ArrowDown","ArrowRight"].includes(t.key))t.preventDefault(),t.stopPropagation(),r=i===e.length-1?e[0]:e[i+1];else if(["ArrowUp","ArrowLeft"].includes(t.key))t.preventDefault(),t.stopPropagation(),r=0===i?e[e.length-1]:e[i-1];else if(" "===t.key||"Enter"===t.key){t.preventDefault(),t.stopPropagation();const e=s.get(o.id);return void(e&&(this.selectRadioButton(e),this.buttonClick(e)))}if(r){const t=s.get(r.id);t&&(this.selectRadioButton(t),r.focus())}}connectedCallback(){v(this.el),this.triggerChanged()}disconnectedCallback(){this.gesture&&(this.gesture.destroy(),this.gesture=void 0),this.triggerController.removeClickListener()}componentWillLoad(){var t;(null===(t=this.htmlAttributes)||void 0===t?void 0:t.id)||k(this.el),this.buttonsChanged()}componentDidLoad(){const{groupEl:t,wrapperEl:o}=this;!this.gesture&&"ios"===y(this)&&o&&t&&i((()=>{t.scrollHeight>t.clientHeight||(this.gesture=r(o,(t=>t.classList.contains("action-sheet-button"))),this.gesture.enable(!0))})),!0===this.isOpen&&c((()=>this.present())),this.triggerChanged()}renderActionSheetButtons(t){const o=y(this),{activeRadioId:e}=this;return t.map(((t,i)=>{var a;const s="radio"===(null===(a=t.htmlAttributes)||void 0===a?void 0:a.role),r=this.getButtonId(t,i),c=this.getRadioButtons(),d=s&&r===e;let l;l=s?d||!e&&s&&t===c[0]?0:-1:void 0;const h=Object.assign({},t.htmlAttributes);return s&&(h["aria-checked"]=d?"true":"false"),n("button",Object.assign({},h,{role:s?"radio":void 0,type:"button",id:r,class:Object.assign(Object.assign({},E(t)),{"action-sheet-selected":d}),onClick:()=>{s&&this.selectRadioButton(t),this.buttonClick(t)},disabled:t.disabled,tabIndex:l}),n("span",{class:"action-sheet-button-inner"},t.icon&&n("ion-icon",{icon:t.icon,"aria-hidden":"true",lazy:!1,class:"action-sheet-icon"}),t.text),"md"===o&&n("ion-ripple-effect",null))}))}render(){const{header:t,htmlAttributes:o,overlayIndex:e,hasRadioButtons:i}=this,s=y(this),r=this.getButtons(),c=r.find((t=>"cancel"===t.role)),d=r.filter((t=>"cancel"!==t.role)),l=`action-sheet-${e}-header`;return n(a,Object.assign({key:"173fcff5b1da7c33c267de4667591c946b8c8d03",role:"dialog","aria-modal":"true","aria-labelledby":void 0!==t?l:null,tabindex:"-1"},o,{style:{zIndex:`${2e4+this.overlayIndex}`},class:Object.assign(Object.assign({[s]:!0},x(this.cssClass)),{"overlay-hidden":!0,"action-sheet-translucent":this.translucent}),onIonActionSheetWillDismiss:this.dispatchCancelHandler,onIonBackdropTap:this.onBackdropTap}),n("ion-backdrop",{key:"521ede659f747864f6c974e09016436eceb7158c",tappable:this.backdropDismiss}),n("div",{key:"7a7946fc434bc444f16a70638f5e948c69d33fcd",tabindex:"0","aria-hidden":"true"}),n("div",{key:"bcff39a580489dbafa255842e57aa8602c6d0f18",class:"action-sheet-wrapper ion-overlay-wrapper",ref:t=>this.wrapperEl=t},n("div",{key:"84bba13ce14261f0f0daa3f9c77648c9e7f36e0e",class:"action-sheet-container"},n("div",{key:"d9c8ac404fd6719a7adf8cb36549f67616f9a0c4",class:"action-sheet-group",ref:t=>this.groupEl=t,role:i?"radiogroup":void 0},void 0!==t&&n("div",{key:"180433a8ad03ef5c54728a1a8f34715b6921d658",id:l,class:{"action-sheet-title":!0,"action-sheet-has-sub-title":void 0!==this.subHeader}},t,this.subHeader&&n("div",{key:"7138e79e61b1a8f42bc5a9175c57fa2f15d7ec5a",class:"action-sheet-sub-title"},this.subHeader)),this.renderActionSheetButtons(d)),c&&n("div",{key:"b617c722f5b8028d73ed34b69310f312c65f34a7",class:"action-sheet-group action-sheet-group-cancel"},n("button",Object.assign({key:"d0dd876fc48815df3710413c201c0b445a8e16c0"},c.htmlAttributes,{type:"button",class:E(c),onClick:()=>this.buttonClick(c)}),n("span",{key:"e7b960157cc6fc5fe92a12090b2be55e8ae072e4",class:"action-sheet-button-inner"},c.icon&&n("ion-icon",{key:"05498ffc60cab911dbff0ecbc6168dea59ada9a5",icon:c.icon,"aria-hidden":"true",lazy:!1,class:"action-sheet-icon"}),c.text),"md"===s&&n("ion-ripple-effect",{key:"3d401346cea301be4ca03671f7370f6f4b0b6bde"}))))),n("div",{key:"971f3c5fcc07f36c28eb469a47ec0290c692e139",tabindex:"0","aria-hidden":"true"}))}get el(){return this}static get watchers(){return{buttons:[{buttonsChanged:0}],isOpen:[{onIsOpenChange:0}],trigger:[{triggerChanged:0}]}}static get style(){return{ios:'.sc-ion-action-sheet-ios-h{--color:initial;--button-color-activated:var(--button-color);--button-color-focused:var(--button-color);--button-color-hover:var(--button-color);--button-color-selected:var(--button-color);--min-width:auto;--width:100%;--max-width:500px;--min-height:auto;--height:auto;--max-height:calc(100% - (var(--ion-safe-area-top) + var(--ion-safe-area-bottom)));-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;left:0;right:0;top:0;bottom:0;display:block;position:fixed;outline:none;font-family:var(--ion-font-family, inherit);-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1001}.overlay-hidden.sc-ion-action-sheet-ios-h{display:none}.action-sheet-wrapper.sc-ion-action-sheet-ios{left:0;right:0;bottom:0;-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0);display:block;position:absolute;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);z-index:10;pointer-events:none}.action-sheet-button.sc-ion-action-sheet-ios{display:block;position:relative;width:100%;border:0;outline:none;background:var(--button-background);color:var(--button-color);font-family:inherit;overflow:hidden}.action-sheet-button.sc-ion-action-sheet-ios:disabled{color:var(--button-color-disabled);opacity:0.4}.action-sheet-button-inner.sc-ion-action-sheet-ios{display:-ms-flexbox;display:flex;position:relative;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;pointer-events:none;width:100%;height:100%;z-index:1}.action-sheet-container.sc-ion-action-sheet-ios{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;-ms-flex-pack:end;justify-content:flex-end;height:100%;max-height:calc(100vh - (var(--ion-safe-area-top, 0) + var(--ion-safe-area-bottom, 0)));max-height:calc(100dvh - (var(--ion-safe-area-top, 0) + var(--ion-safe-area-bottom, 0)))}.action-sheet-group.sc-ion-action-sheet-ios{-ms-flex-negative:2;flex-shrink:2;overscroll-behavior-y:contain;overflow-y:auto;-webkit-overflow-scrolling:touch;pointer-events:all;background:var(--background)}@media (any-pointer: coarse){.action-sheet-group.sc-ion-action-sheet-ios::-webkit-scrollbar{display:none}}.action-sheet-group-cancel.sc-ion-action-sheet-ios{-ms-flex-negative:0;flex-shrink:0;overflow:hidden}.action-sheet-button.sc-ion-action-sheet-ios::after{left:0;right:0;top:0;bottom:0;position:absolute;content:"";opacity:0}.action-sheet-selected.sc-ion-action-sheet-ios{color:var(--button-color-selected)}.action-sheet-selected.sc-ion-action-sheet-ios::after{background:var(--button-background-selected);opacity:var(--button-background-selected-opacity)}.action-sheet-button.ion-activated.sc-ion-action-sheet-ios{color:var(--button-color-activated)}.action-sheet-button.ion-activated.sc-ion-action-sheet-ios::after{background:var(--button-background-activated);opacity:var(--button-background-activated-opacity)}.action-sheet-button.ion-focused.sc-ion-action-sheet-ios{color:var(--button-color-focused)}.action-sheet-button.ion-focused.sc-ion-action-sheet-ios::after{background:var(--button-background-focused);opacity:var(--button-background-focused-opacity)}@media (any-hover: hover){.action-sheet-button.sc-ion-action-sheet-ios:not(:disabled):hover{color:var(--button-color-hover)}.action-sheet-button.sc-ion-action-sheet-ios:not(:disabled):hover::after{background:var(--button-background-hover);opacity:var(--button-background-hover-opacity)}}.sc-ion-action-sheet-ios-h{--background:var(--ion-overlay-background-color, var(--ion-color-step-100, var(--ion-background-color-step-100, #f9f9f9)));--backdrop-opacity:var(--ion-backdrop-opacity, 0.4);--button-background:linear-gradient(0deg, rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08), rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08) 50%, transparent 50%) bottom/100% 1px no-repeat transparent;--button-background-activated:var(--ion-text-color, #000);--button-background-activated-opacity:.08;--button-background-hover:currentColor;--button-background-hover-opacity:.04;--button-background-focused:currentColor;--button-background-focused-opacity:.12;--button-background-selected:var(--ion-color-step-150, var(--ion-background-color-step-150, var(--ion-background-color, #fff)));--button-background-selected-opacity:1;--button-color:var(--ion-color-primary, #0054e9);--button-color-disabled:var(--ion-color-step-850, var(--ion-text-color-step-150, #262626));--color:var(--ion-color-step-400, var(--ion-text-color-step-600, #999999));text-align:center}.action-sheet-wrapper.sc-ion-action-sheet-ios{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:var(--ion-safe-area-top, 0);padding-bottom:var(--ion-safe-area-bottom, 0);-webkit-box-sizing:content-box;box-sizing:content-box}.action-sheet-container.sc-ion-action-sheet-ios{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:0;padding-bottom:0}.action-sheet-group.sc-ion-action-sheet-ios{border-radius:13px;margin-bottom:8px}.action-sheet-group.sc-ion-action-sheet-ios:first-child{margin-top:10px}.action-sheet-group.sc-ion-action-sheet-ios:last-child{margin-bottom:10px}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){.action-sheet-translucent.sc-ion-action-sheet-ios-h .action-sheet-group.sc-ion-action-sheet-ios{background-color:transparent;-webkit-backdrop-filter:saturate(280%) blur(20px);backdrop-filter:saturate(280%) blur(20px)}.action-sheet-translucent.sc-ion-action-sheet-ios-h .action-sheet-title.sc-ion-action-sheet-ios,.action-sheet-translucent.sc-ion-action-sheet-ios-h .action-sheet-button.sc-ion-action-sheet-ios{background-color:transparent;background-image:-webkit-gradient(linear, left bottom, left top, from(rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8)), to(rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8))), -webkit-gradient(linear, left bottom, left top, from(rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.4)), color-stop(50%, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.4)), color-stop(50%, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8)));background-image:linear-gradient(0deg, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8), rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8) 100%), linear-gradient(0deg, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.4), rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.4) 50%, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8) 50%);background-repeat:no-repeat;background-position:top, bottom;background-size:100% calc(100% - 1px), 100% 1px;-webkit-backdrop-filter:saturate(120%);backdrop-filter:saturate(120%)}.action-sheet-translucent.sc-ion-action-sheet-ios-h .action-sheet-button.ion-activated.sc-ion-action-sheet-ios{background-color:rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.7);background-image:none}.action-sheet-translucent.sc-ion-action-sheet-ios-h .action-sheet-cancel.sc-ion-action-sheet-ios{background:var(--button-background-selected)}}.action-sheet-title.sc-ion-action-sheet-ios{background:-webkit-gradient(linear, left bottom, left top, from(rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08)), color-stop(50%, rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08)), color-stop(50%, transparent)) bottom/100% 1px no-repeat transparent;background:linear-gradient(0deg, rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08), rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08) 50%, transparent 50%) bottom/100% 1px no-repeat transparent}.action-sheet-title.sc-ion-action-sheet-ios{-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px;padding-top:14px;padding-bottom:13px;color:var(--color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-size:max(13px, 0.8125rem);font-weight:400;text-align:center}.action-sheet-title.action-sheet-has-sub-title.sc-ion-action-sheet-ios{font-weight:600}.action-sheet-sub-title.sc-ion-action-sheet-ios{padding-left:0;padding-right:0;padding-top:6px;padding-bottom:0;font-size:max(13px, 0.8125rem);font-weight:400}.action-sheet-button.sc-ion-action-sheet-ios{-webkit-padding-start:14px;padding-inline-start:14px;-webkit-padding-end:14px;padding-inline-end:14px;padding-top:14px;padding-bottom:14px;min-height:56px;font-size:max(20px, 1.25rem);contain:content}.action-sheet-button.sc-ion-action-sheet-ios .action-sheet-icon.sc-ion-action-sheet-ios{-webkit-margin-end:0.3em;margin-inline-end:0.3em;font-size:max(28px, 1.75rem);pointer-events:none}.action-sheet-button.sc-ion-action-sheet-ios:last-child{background-image:none}.action-sheet-selected.sc-ion-action-sheet-ios{font-weight:bold}.action-sheet-cancel.sc-ion-action-sheet-ios{font-weight:600}.action-sheet-cancel.sc-ion-action-sheet-ios::after{background:var(--button-background-selected);opacity:var(--button-background-selected-opacity)}.action-sheet-destructive.sc-ion-action-sheet-ios,.action-sheet-destructive.ion-activated.sc-ion-action-sheet-ios,.action-sheet-destructive.ion-focused.sc-ion-action-sheet-ios{color:var(--ion-color-danger, #c5000f)}@media (any-hover: hover){.action-sheet-destructive.sc-ion-action-sheet-ios:hover{color:var(--ion-color-danger, #c5000f)}}',md:'.sc-ion-action-sheet-md-h{--color:initial;--button-color-activated:var(--button-color);--button-color-focused:var(--button-color);--button-color-hover:var(--button-color);--button-color-selected:var(--button-color);--min-width:auto;--width:100%;--max-width:500px;--min-height:auto;--height:auto;--max-height:calc(100% - (var(--ion-safe-area-top) + var(--ion-safe-area-bottom)));-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;left:0;right:0;top:0;bottom:0;display:block;position:fixed;outline:none;font-family:var(--ion-font-family, inherit);-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1001}.overlay-hidden.sc-ion-action-sheet-md-h{display:none}.action-sheet-wrapper.sc-ion-action-sheet-md{left:0;right:0;bottom:0;-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0);display:block;position:absolute;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);z-index:10;pointer-events:none}.action-sheet-button.sc-ion-action-sheet-md{display:block;position:relative;width:100%;border:0;outline:none;background:var(--button-background);color:var(--button-color);font-family:inherit;overflow:hidden}.action-sheet-button.sc-ion-action-sheet-md:disabled{color:var(--button-color-disabled);opacity:0.4}.action-sheet-button-inner.sc-ion-action-sheet-md{display:-ms-flexbox;display:flex;position:relative;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;pointer-events:none;width:100%;height:100%;z-index:1}.action-sheet-container.sc-ion-action-sheet-md{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;-ms-flex-pack:end;justify-content:flex-end;height:100%;max-height:calc(100vh - (var(--ion-safe-area-top, 0) + var(--ion-safe-area-bottom, 0)));max-height:calc(100dvh - (var(--ion-safe-area-top, 0) + var(--ion-safe-area-bottom, 0)))}.action-sheet-group.sc-ion-action-sheet-md{-ms-flex-negative:2;flex-shrink:2;overscroll-behavior-y:contain;overflow-y:auto;-webkit-overflow-scrolling:touch;pointer-events:all;background:var(--background)}@media (any-pointer: coarse){.action-sheet-group.sc-ion-action-sheet-md::-webkit-scrollbar{display:none}}.action-sheet-group-cancel.sc-ion-action-sheet-md{-ms-flex-negative:0;flex-shrink:0;overflow:hidden}.action-sheet-button.sc-ion-action-sheet-md::after{left:0;right:0;top:0;bottom:0;position:absolute;content:"";opacity:0}.action-sheet-selected.sc-ion-action-sheet-md{color:var(--button-color-selected)}.action-sheet-selected.sc-ion-action-sheet-md::after{background:var(--button-background-selected);opacity:var(--button-background-selected-opacity)}.action-sheet-button.ion-activated.sc-ion-action-sheet-md{color:var(--button-color-activated)}.action-sheet-button.ion-activated.sc-ion-action-sheet-md::after{background:var(--button-background-activated);opacity:var(--button-background-activated-opacity)}.action-sheet-button.ion-focused.sc-ion-action-sheet-md{color:var(--button-color-focused)}.action-sheet-button.ion-focused.sc-ion-action-sheet-md::after{background:var(--button-background-focused);opacity:var(--button-background-focused-opacity)}@media (any-hover: hover){.action-sheet-button.sc-ion-action-sheet-md:not(:disabled):hover{color:var(--button-color-hover)}.action-sheet-button.sc-ion-action-sheet-md:not(:disabled):hover::after{background:var(--button-background-hover);opacity:var(--button-background-hover-opacity)}}.sc-ion-action-sheet-md-h{--background:var(--ion-overlay-background-color, var(--ion-background-color, #fff));--backdrop-opacity:var(--ion-backdrop-opacity, 0.32);--button-background:transparent;--button-background-selected:currentColor;--button-background-selected-opacity:0;--button-background-activated:transparent;--button-background-activated-opacity:0;--button-background-hover:currentColor;--button-background-hover-opacity:.04;--button-background-focused:currentColor;--button-background-focused-opacity:.12;--button-color:var(--ion-color-step-850, var(--ion-text-color-step-150, #262626));--button-color-disabled:var(--button-color);--color:rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.54)}.action-sheet-wrapper.sc-ion-action-sheet-md{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:var(--ion-safe-area-top, 0);margin-bottom:0}.action-sheet-title.sc-ion-action-sheet-md{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:20px;padding-bottom:17px;min-height:60px;color:var(--color, rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.54));font-size:1rem;text-align:start}.action-sheet-sub-title.sc-ion-action-sheet-md{padding-left:0;padding-right:0;padding-top:16px;padding-bottom:0;font-size:0.875rem}.action-sheet-group.sc-ion-action-sheet-md:first-child{padding-top:0}.action-sheet-group.sc-ion-action-sheet-md:last-child{padding-bottom:var(--ion-safe-area-bottom)}.action-sheet-button.sc-ion-action-sheet-md{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:12px;padding-bottom:12px;position:relative;min-height:52px;font-size:1rem;text-align:start;contain:content;overflow:hidden}.action-sheet-icon.sc-ion-action-sheet-md{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:32px;margin-inline-end:32px;margin-top:0;margin-bottom:0;color:var(--color);font-size:1.5rem}.action-sheet-button-inner.sc-ion-action-sheet-md{-ms-flex-pack:start;justify-content:flex-start}.action-sheet-selected.sc-ion-action-sheet-md{font-weight:bold}'}}},[34,"ion-action-sheet",{overlayIndex:[2,"overlay-index"],delegate:[16],hasController:[4,"has-controller"],keyboardClose:[4,"keyboard-close"],enterAnimation:[16],leaveAnimation:[16],buttons:[16],cssClass:[1,"css-class"],backdropDismiss:[4,"backdrop-dismiss"],header:[1],subHeader:[1,"sub-header"],translucent:[4],animated:[4],htmlAttributes:[16],isOpen:[4,"is-open"],trigger:[1],activeRadioId:[32],present:[64],dismiss:[64],onDidDismiss:[64],onWillDismiss:[64]},[[0,"keydown","onKeydown"]],{buttons:[{buttonsChanged:0}],isOpen:[{onIsOpenChange:0}],trigger:[{triggerChanged:0}]}]),E=t=>Object.assign({"action-sheet-button":!0,"ion-activatable":!t.disabled,"ion-focusable":!t.disabled,[`action-sheet-${t.role}`]:void 0!==t.role},x(t.cssClass));function S(){"undefined"!=typeof customElements&&["ion-action-sheet","ion-backdrop","ion-icon","ion-ripple-effect"].forEach((t=>{switch(t){case"ion-action-sheet":customElements.get(s(t))||customElements.define(s(t),B);break;case"ion-backdrop":customElements.get(s(t))||z();break;case"ion-icon":customElements.get(s(t))||j();break;case"ion-ripple-effect":customElements.get(s(t))||C()}}))}export{B as A,S as d}
@@ -1,4 +0,0 @@
1
- /*!
2
- * (C) Ionic http://ionicframework.com - MIT License
3
- */
4
- import{p as t,H as i,e as o,f as e,w as a,c as r,h as s,d as n,t as d}from"./p-BJoMtgfR.js";import{a as h,i as l,d as p,r as c,f as m,p as f}from"./p-C59ryAuS.js";import{C as u,a as b,d as v}from"./p-BR3tZJmu.js";import{f as x,g as w,r as g,d as k,k as y}from"./p-DgbT0exM.js";import{c as A}from"./p-B-hirT0v.js";import{g as Y}from"./p-CIGNaXM1.js";import{G as D,O,F as C,e as E,B as S,j as M,k as B,f as T,g as P,h as I}from"./p-Cq8cQ0NL.js";import{g as N}from"./p-DiVJyqlX.js";import{e as R,w as j}from"./p-9VcRUwdB.js";import{b as $}from"./p-CDfQnFrd.js";import{KEYBOARD_DID_OPEN as L}from"./p-D6Ynv7Xh.js";import{c as z}from"./p-Csw8xuz4.js";import{g as W}from"./p-hHmYLOfE.js";import{createGesture as F}from"./p-Cl0B-RWe.js";import{w as H}from"./p-ZjP4CjeZ.js";import{d as V}from"./p-CoA-aqGF.js";var Z;!function(t){t.Dark="DARK",t.Light="LIGHT",t.Default="DEFAULT"}(Z||(Z={}));const G={getEngine(){const t=Y();if(null==t?void 0:t.isPluginAvailable("StatusBar"))return t.Plugins.StatusBar},setStyle(t){const i=this.getEngine();i&&i.setStyle(t)},getStyle:async function(){const t=this.getEngine();if(!t)return Z.Default;const{style:i}=await t.getInfo();return i}},K=(t,i)=>{if(1===i)return 0;const o=1/(1-i);return t*o+-i*o},U=()=>{!H||H.innerWidth>=768||G.setStyle({style:Z.Dark})},q=(t=Z.Default)=>{!H||H.innerWidth>=768||G.setStyle({style:t})},J=async(t,i)=>{"function"==typeof t.canDismiss&&await t.canDismiss(void 0,D)&&(i.isRunning()?i.onFinish((()=>{t.dismiss(void 0,"handler")}),{oneTimeCallback:!0}):t.dismiss(void 0,"handler"))},X=t=>.00255275*2.71828**(-14.9619*t)-1.00255*2.71828**(-.0380968*t)+1,_=.915,Q=(t,i)=>x(400,t/Math.abs(1.1*i),500),tt=(t,i)=>{const o=window.innerHeight,e=t.getBoundingClientRect().top,a=Math.round(1e3*(1-i/(o-e)))/1e3;return Math.max(0,Math.min(1,a))},it=t=>{const{currentBreakpoint:i,backdropBreakpoint:o,expandToScroll:e}=t,a=void 0===o||o<i,r=a?`calc(var(--backdrop-opacity) * ${i})`:"0",s=z("backdropAnimation").fromTo("opacity",0,r);return a&&s.beforeStyles({"pointer-events":"none"}).afterClearStyles(["pointer-events"]),{wrapperAnimation:z("wrapperAnimation").keyframes([{offset:0,opacity:1,transform:"translateY(100%)"},{offset:1,opacity:1,transform:`translateY(${100-100*i}%)`}]),backdropAnimation:s,contentAnimation:e?void 0:z("contentAnimation").keyframes([{offset:0,opacity:1,maxHeight:100*(1-i)+"%"},{offset:1,opacity:1,maxHeight:100*i+"%"}])}},ot=t=>{const{currentBreakpoint:i,backdropBreakpoint:o}=t,e=`calc(var(--backdrop-opacity) * ${K(i,o)})`,a=[{offset:0,opacity:e},{offset:1,opacity:0}],r=[{offset:0,opacity:e},{offset:o,opacity:0},{offset:1,opacity:0}],s=z("backdropAnimation").keyframes(0!==o?r:a);return{wrapperAnimation:z("wrapperAnimation").keyframes([{offset:0,opacity:1,transform:`translateY(${100-100*i}%)`},{offset:1,opacity:1,transform:"translateY(100%)"}]),backdropAnimation:s}},et=(t,i)=>{const{presentingEl:o,currentBreakpoint:e,expandToScroll:a}=i,r=w(t),{wrapperAnimation:s,backdropAnimation:n,contentAnimation:d}=void 0!==e?it(i):{backdropAnimation:z().fromTo("opacity",.01,"var(--backdrop-opacity)").beforeStyles({"pointer-events":"none"}).afterClearStyles(["pointer-events"]),wrapperAnimation:z().fromTo("transform","translateY(100vh)","translateY(0vh)"),contentAnimation:void 0};n.addElement(r.querySelector("ion-backdrop")),s.addElement(r.querySelectorAll(".modal-wrapper, .modal-shadow")).beforeStyles({opacity:1}),!a&&(null==d||d.addElement(t.querySelector(".ion-page")));const h=z("entering-base").addElement(t).easing("cubic-bezier(0.32,0.72,0,1)").duration(500).addAnimation([s]);if(d&&h.addAnimation(d),o){const i=window.innerWidth<768,e="ION-MODAL"===o.tagName&&void 0!==o.presentingElement,a=w(o),r=z().beforeStyles({transform:"translateY(0)","transform-origin":"top center",overflow:"hidden"}),d=t.closest("ion-app");if(i&&d){const t=CSS.supports("width","max(0px, 1px)")?"max(30px, var(--ion-safe-area-top))":"30px",i=`translateY(${e?"-10px":t}) scale(0.915)`;r.afterStyles({transform:i}).beforeAddWrite((()=>d.style.setProperty("background-color","black"))).addElement(o).keyframes([{offset:0,filter:"contrast(1)",transform:"translateY(0px) scale(1)",borderRadius:"0px"},{offset:1,filter:"contrast(0.85)",transform:i,borderRadius:"10px 10px 0 0"}]),h.addAnimation(r)}else if(h.addAnimation(n),e){const t=`translateY(-10px) scale(${e?_:1})`;r.afterStyles({transform:t}).addElement(a.querySelector(".modal-wrapper")).keyframes([{offset:0,filter:"contrast(1)",transform:"translateY(0) scale(1)"},{offset:1,filter:"contrast(0.85)",transform:t}]);const i=z().afterStyles({transform:t}).addElement(a.querySelector(".modal-shadow")).keyframes([{offset:0,opacity:"1",transform:"translateY(0) scale(1)"},{offset:1,opacity:"0",transform:t}]);h.addAnimation([r,i])}else s.fromTo("opacity","0","1")}else h.addAnimation(n);return h},at=(t,i,o=500)=>{const{presentingEl:e,currentBreakpoint:a}=i,r=w(t),{wrapperAnimation:s,backdropAnimation:n}=void 0!==a?ot(i):{backdropAnimation:z().fromTo("opacity","var(--backdrop-opacity)",0),wrapperAnimation:z().fromTo("transform","translateY(0vh)","translateY(100vh)")};n.addElement(r.querySelector("ion-backdrop")),s.addElement(r.querySelectorAll(".modal-wrapper, .modal-shadow")).beforeStyles({opacity:1});const d=z("leaving-base").addElement(t).easing("cubic-bezier(0.32,0.72,0,1)").duration(o).addAnimation(s),h=t.closest("ion-app");if(e&&h){const t=window.innerWidth<768,i="ION-MODAL"===e.tagName&&void 0!==e.presentingElement,o=w(e),a=z().beforeClearStyles(["transform"]).afterClearStyles(["transform"]).onFinish((t=>{1===t&&(e.style.setProperty("overflow",""),Array.from(h.querySelectorAll("ion-modal:not(.overlay-hidden)")).filter((t=>void 0!==t.presentingElement)).length<=1&&h.style.setProperty("background-color",""))}));if(t){const t=CSS.supports("width","max(0px, 1px)")?"max(30px, var(--ion-safe-area-top))":"30px",o=`translateY(${i?"-10px":t}) scale(0.915)`;a.addElement(e).keyframes([{offset:0,filter:"contrast(0.85)",transform:o,borderRadius:"10px 10px 0 0"},{offset:1,filter:"contrast(1)",transform:"translateY(0px) scale(1)",borderRadius:"0px"}]),d.addAnimation(a)}else if(d.addAnimation(n),i){const t=`translateY(-10px) scale(${i?_:1})`;a.addElement(o.querySelector(".modal-wrapper")).afterStyles({transform:"translate3d(0, 0, 0)"}).keyframes([{offset:0,filter:"contrast(0.85)",transform:t},{offset:1,filter:"contrast(1)",transform:"translateY(0) scale(1)"}]);const e=z().addElement(o.querySelector(".modal-shadow")).afterStyles({transform:"translateY(0) scale(1)"}).keyframes([{offset:0,opacity:"0",transform:t},{offset:1,opacity:"1",transform:"translateY(0) scale(1)"}]);d.addAnimation([a,e])}else s.fromTo("opacity","1","0")}else d.addAnimation(n);return d},rt=(t,i)=>{const{currentBreakpoint:o,expandToScroll:e}=i,a=w(t),{wrapperAnimation:r,backdropAnimation:s,contentAnimation:n}=void 0!==o?it(i):{backdropAnimation:z().fromTo("opacity",.01,"var(--backdrop-opacity)").beforeStyles({"pointer-events":"none"}).afterClearStyles(["pointer-events"]),wrapperAnimation:z().keyframes([{offset:0,opacity:.01,transform:"translateY(40px)"},{offset:1,opacity:1,transform:"translateY(0px)"}]),contentAnimation:void 0};s.addElement(a.querySelector("ion-backdrop")),r.addElement(a.querySelector(".modal-wrapper")),!e&&(null==n||n.addElement(t.querySelector(".ion-page")));const d=z().addElement(t).easing("cubic-bezier(0.36,0.66,0.04,1)").duration(280).addAnimation([s,r]);return n&&d.addAnimation(n),d},st=(t,i)=>{const{currentBreakpoint:o}=i,e=w(t),{wrapperAnimation:a,backdropAnimation:r}=void 0!==o?ot(i):{backdropAnimation:z().fromTo("opacity","var(--backdrop-opacity)",0),wrapperAnimation:z().keyframes([{offset:0,opacity:.99,transform:"translateY(0px)"},{offset:1,opacity:0,transform:"translateY(40px)"}])};return r.addElement(e.querySelector("ion-backdrop")),a.addElement(e.querySelector(".modal-wrapper")),z().easing("cubic-bezier(0.47,0,0.745,0.715)").duration(200).addAnimation([r,a])};let nt=null,dt=!1;const ht=(t,i)=>{t.style.setProperty("--ion-safe-area-top",i.top),t.style.setProperty("--ion-safe-area-bottom",i.bottom),t.style.setProperty("--ion-safe-area-left",i.left),t.style.setProperty("--ion-safe-area-right",i.right)},lt=t(class extends i{constructor(t){super(),!1!==t&&this.__registerHost(),this.__attachShadow(),this.didPresent=o(this,"ionModalDidPresent",7),this.willPresent=o(this,"ionModalWillPresent",7),this.willDismiss=o(this,"ionModalWillDismiss",7),this.didDismiss=o(this,"ionModalDidDismiss",7),this.ionBreakpointDidChange=o(this,"ionBreakpointDidChange",7),this.didPresentShorthand=o(this,"didPresent",7),this.willPresentShorthand=o(this,"willPresent",7),this.willDismissShorthand=o(this,"willDismiss",7),this.didDismissShorthand=o(this,"didDismiss",7),this.ionMount=o(this,"ionMount",7),this.ionDragStart=o(this,"ionDragStart",7),this.ionDragMove=o(this,"ionDragMove",7),this.ionDragEnd=o(this,"ionDragEnd",7),this.lockController=A(),this.triggerController=E(),this.coreDelegate=u(),this.isSheetModal=!1,this.inheritedAttributes={},this.inline=!1,this.gestureAnimationDismissing=!1,this.presented=!1,this.hasController=!1,this.keyboardClose=!0,this.expandToScroll=!0,this.backdropBreakpoint=0,this.handleBehavior="none",this.backdropDismiss=!0,this.showBackdrop=!0,this.animated=!0,this.isOpen=!1,this.keepContentsMounted=!1,this.focusTrap=!0,this.canDismiss=!0,this.onHandleClick=()=>{const{sheetTransition:t,handleBehavior:i}=this;"cycle"===i&&void 0===t&&this.moveToNextBreakpoint()},this.onBackdropTap=()=>{const{sheetTransition:t}=this;void 0===t&&this.dismiss(void 0,S)},this.onLifecycle=t=>{const i=this.usersElement,o=pt[t.type];if(i&&o){const e=new CustomEvent(o,{bubbles:!1,cancelable:!1,detail:t.detail});i.dispatchEvent(e)}},this.onModalFocus=t=>{const{dragHandleEl:i,el:o}=this;t.target===o&&i&&-1!==i.tabIndex&&i.focus()},this.onSlotChange=({target:t})=>{t.assignedElements().forEach((t=>{t.querySelectorAll("ion-modal").forEach((t=>{null===t.getAttribute("data-parent-ion-modal")&&t.setAttribute("data-parent-ion-modal",this.el.id)}))}))}}onIsOpenChange(t,i){!0===t&&!1===i?this.present():!1===t&&!0===i&&this.dismiss()}triggerChanged(){const{trigger:t,el:i,triggerController:o}=this;t&&o.addClickListener(i,t)}onWindowResize(){this.presented&&(clearTimeout(this.resizeTimeout),this.resizeTimeout=setTimeout((()=>{const t=this.getSafeAreaContext();!t.isCardModal||this.enterAnimation||this.leaveAnimation||this.handleViewTransition(),t.isSheetModal&&this.updateSheetOffsetTop(),t.isSheetModal||t.isCardModal||(this.updateSafeAreaOverrides(),this.wrapperEl&&(this.wrapperEl.style.removeProperty("height"),this.wrapperEl.style.removeProperty("padding-bottom")),this.applyFullscreenSafeArea())}),50))}breakpointsChanged(t){void 0!==t&&(this.sortedBreakpoints=t.sort(((t,i)=>t-i)))}connectedCallback(){const{el:t}=this;M(t),this.triggerChanged()}disconnectedCallback(){this.triggerController.removeClickListener(),this.cleanupViewTransitionListener(),this.cleanupParentRemovalObserver(),this.cleanupSafeAreaOverrides()}componentWillLoad(){var t;const{breakpoints:i,initialBreakpoint:o,el:a,htmlAttributes:r}=this,s=this.isSheetModal=void 0!==i&&void 0!==o,n=["aria-label","role"];this.inheritedAttributes=k(a,n),a.parentNode&&(this.cachedOriginalParent=a.parentNode),void 0!==r&&n.forEach((t=>{r[t]&&(this.inheritedAttributes=Object.assign(Object.assign({},this.inheritedAttributes),{[t]:r[t]}),delete r[t])})),s&&(this.currentBreakpoint=this.initialBreakpoint),void 0===i||void 0===o||i.includes(o)||e("[ion-modal] - Your breakpoints array must include the initialBreakpoint value."),(null===(t=this.htmlAttributes)||void 0===t?void 0:t.id)||B(this.el)}componentDidLoad(){!0===this.isOpen&&g((()=>this.present())),this.breakpointsChanged(this.breakpoints),this.triggerChanged()}getDelegate(t=!1){if(this.workingDelegate&&!t)return{delegate:this.workingDelegate,inline:this.inline};const i=this.inline=null!==this.el.parentNode&&!this.hasController;return{inline:i,delegate:this.workingDelegate=i?this.delegate||this.coreDelegate:this.delegate}}async checkCanDismiss(t,i){const{canDismiss:o}=this;return"function"==typeof o?o(t,i):o}async present(){const t=await this.lockController.lock();if(this.presented)return void t();const{presentingElement:i,el:o}=this;this.currentBreakpoint=this.initialBreakpoint;const{inline:e,delegate:r}=this.getDelegate(!0);this.ionMount.emit(),this.usersElement=await b(r,o,this.component,["ion-page"],this.componentProps,e),y(o)?await R(this.usersElement):this.keepContentsMounted||await j(),a((()=>this.el.classList.add("show-modal"))),this.isSheetModal=void 0!==this.breakpoints&&void 0!==this.initialBreakpoint,this.setInitialSafeAreaOverrides();const s=void 0!==i;s&&"ios"===$(this)&&(this.statusBarStyle=await G.getStyle(),U()),await T(this,"modalEnter",et,rt,{presentingEl:i,currentBreakpoint:this.initialBreakpoint,backdropBreakpoint:this.backdropBreakpoint,expandToScroll:this.expandToScroll}),this.updateSafeAreaOverrides(),this.applyFullscreenSafeArea(),"undefined"!=typeof window&&(this.keyboardOpenCallback=()=>{this.gesture&&(this.gesture.enable(!1),g((()=>{this.gesture&&this.gesture.enable(!0)})))},window.addEventListener(L,this.keyboardOpenCallback)),this.isSheetModal?this.initSheetGesture():s&&this.initSwipeToClose(),this.initViewTransitionListener(),this.initParentRemovalObserver(),t()}initSwipeToClose(){var t;if("ios"!==$(this))return;const{el:i}=this,o=this.leaveAnimation||r.get("modalLeave",at),e=this.animation=o(i,{presentingEl:this.presentingElement,expandToScroll:this.expandToScroll});if(!m(i))return void f(i);const a=null!==(t=this.statusBarStyle)&&void 0!==t?t:Z.Default;this.gesture=((t,i,o,e,a,r,s)=>{const n=.5,d=t.offsetHeight;let m=!1,f=!1,u=null,b=null,v=!0,g=0;const k=F({el:t,gestureName:"modalSwipeToClose",gesturePriority:O,direction:"y",threshold:10,canStart:t=>{const i=t.event.target;if(null===i||!i.closest)return!0;if(u=h(i),u){if(l(u)){const t=w(u);b=t.querySelector(".inner-scroll")}else b=u;return!u.querySelector("ion-refresher")&&0===b.scrollTop}return null===i.closest("ion-footer")},onStart:o=>{const{deltaY:e}=o;v=!u||!l(u)||u.scrollY,f=void 0!==t.canDismiss&&!0!==t.canDismiss,e>0&&u&&p(u),i.progressStart(!0,m?1:0),a()},onMove:e=>{const{deltaY:a}=e;a>0&&u&&p(u);const s=e.deltaY/d,h=s>=0&&f,l=h?.2:.9999,c=h?X(s/l):s,m=x(1e-4,c,l);i.progressStep(m),m>=n&&g<n?q(o):m<n&&g>=n&&U(),g=m;const b={currentY:e.currentY,deltaY:e.deltaY,velocityY:e.velocityY,progress:tt(t,e.deltaY)};r(b)},onEnd:o=>{const a=o.velocityY,r=o.deltaY/d,h=r>=0&&f,l=h?.2:.9999,p=h?X(r/l):r,b=x(1e-4,p,l),w=!h&&(o.deltaY+1e3*a)/d>=n;let g=w?-.001:.001;w?(i.easing("cubic-bezier(0.32, 0.72, 0, 1)"),g+=W([0,0],[.32,.72],[0,1],[1,1],b)[0]):(i.easing("cubic-bezier(1, 0, 0.68, 0.28)"),g+=W([0,0],[1,0],[.68,.28],[1,1],b)[0]);const y=Q(w?r*d:(1-b)*d,a);m=w,k.enable(!1),u&&c(u,v),i.onFinish((()=>{w||k.enable(!0)})).progressEnd(w?1:0,g,y),h&&b>l/4?J(t,i):w&&e();const A={currentY:o.currentY,deltaY:o.deltaY,velocityY:o.velocityY,progress:tt(t,o.deltaY),snapBreakpoint:w?0:1};s(A)}});return k})(i,e,a,(()=>this.cardOnDismiss()),(()=>this.onDragStart()),(t=>this.onDragMove(t)),(t=>this.onDragEnd(t))),this.gesture.enable(!0)}initSheetGesture(){const{wrapperEl:t,initialBreakpoint:i,backdropBreakpoint:o}=this;if(!t||void 0===i)return;const e=this.enterAnimation||r.get("modalEnter",et),a=this.animation=e(this.el,{presentingEl:this.presentingElement,currentBreakpoint:i,backdropBreakpoint:o,expandToScroll:this.expandToScroll});a.progressStart(!0,1);const{gesture:s,moveSheetToBreakpoint:n}=((t,i,o,e,a,r,s=[],n,d,p,c,m,f,u)=>{const b={WRAPPER_KEYFRAMES:[{offset:0,transform:"translateY(0%)"},{offset:1,transform:"translateY(100%)"}],BACKDROP_KEYFRAMES:0!==a?[{offset:0,opacity:"var(--backdrop-opacity)"},{offset:1-a,opacity:0},{offset:1,opacity:0}]:[{offset:0,opacity:"var(--backdrop-opacity)"},{offset:1,opacity:.01}],CONTENT_KEYFRAMES:[{offset:0,maxHeight:"100%"},{offset:1,maxHeight:"0%"}]},v=t.querySelector("ion-content"),k=o.clientHeight;let y=e,A=0,Y=!1,D=null,O=null,E=null,S=null;const M=s[s.length-1],B=s[0],T=r.childAnimations.find((t=>"wrapperAnimation"===t.id)),P=r.childAnimations.find((t=>"backdropAnimation"===t.id)),I=r.childAnimations.find((t=>"contentAnimation"===t.id)),N=()=>{!1!==t.focusTrap&&!1!==t.showBackdrop&&(t.style.setProperty("pointer-events","auto"),i.style.setProperty("pointer-events","auto"),t.classList.remove(C))},R=()=>{t.style.setProperty("pointer-events","none"),i.style.setProperty("pointer-events","none"),t.classList.add(C)},j=i=>{if(!O&&(O=Array.from(t.querySelectorAll("ion-footer")),!O.length))return;const o=t.querySelector(".ion-page");if(S=i,"stationary"===i)O.forEach((t=>{t.classList.remove("modal-footer-moving"),t.style.removeProperty("position"),t.style.removeProperty("width"),t.style.removeProperty("height"),t.style.removeProperty("top"),t.style.removeProperty("left"),null==o||o.style.removeProperty("padding-bottom"),null==o||o.appendChild(t)}));else{let i=0;O.forEach(((o,e)=>{const a=o.getBoundingClientRect(),r=document.body.getBoundingClientRect();i+=o.clientHeight;const s=a.top-r.top,n=a.left-r.left;if(o.style.setProperty("--pinned-width",`${o.clientWidth}px`),o.style.setProperty("--pinned-height",`${o.clientHeight}px`),o.style.setProperty("--pinned-top",`${s}px`),o.style.setProperty("--pinned-left",`${n}px`),0===e){E=s;const i=t.querySelector("ion-header");i&&(E-=i.clientHeight)}})),O.forEach((t=>{null==o||o.style.setProperty("padding-bottom",`${i}px`),t.classList.add("modal-footer-moving"),t.style.setProperty("position","absolute"),t.style.setProperty("width","var(--pinned-width)"),t.style.setProperty("height","var(--pinned-height)"),t.style.setProperty("top","var(--pinned-top)"),t.style.setProperty("left","var(--pinned-left)"),document.body.appendChild(t)}))}};T&&P&&(T.keyframes([...b.WRAPPER_KEYFRAMES]),P.keyframes([...b.BACKDROP_KEYFRAMES]),null==I||I.keyframes([...b.CONTENT_KEYFRAMES]),r.progressStart(!0,1-y),y>a&&!1!==t.focusTrap&&!1!==t.showBackdrop?N():R()),v&&y!==M&&n&&(v.scrollY=!1);const $=i=>{const{breakpoint:o,canDismiss:e,breakpointOffset:d,animated:h}=i,l=e&&0===o,m=l?y:o,f=0!==m;return y=0,T&&P&&(T.keyframes([{offset:0,transform:`translateY(${100*d}%)`},{offset:1,transform:`translateY(${100*(1-m)}%)`}]),P.keyframes([{offset:0,opacity:`calc(var(--backdrop-opacity) * ${K(1-d,a)})`},{offset:1,opacity:`calc(var(--backdrop-opacity) * ${K(m,a)})`}]),I&&I.keyframes([{offset:0,maxHeight:100*(1-d)+"%"},{offset:1,maxHeight:100*m+"%"}]),r.progressStep(0)),H.enable(!1),l?J(t,r):f||p(),!v||m!==s[s.length-1]&&n||(v.scrollY=!0),n||0!==m||j("stationary"),new Promise((i=>{r.onFinish((()=>{f?(n||j("stationary"),T&&P?g((()=>{T.keyframes([...b.WRAPPER_KEYFRAMES]),P.keyframes([...b.BACKDROP_KEYFRAMES]),null==I||I.keyframes([...b.CONTENT_KEYFRAMES]),r.progressStart(!0,1-m),y=m,c(y),y>a&&!1!==t.focusTrap&&!1!==t.showBackdrop?N():R(),H.enable(!0),i()})):(H.enable(!0),i())):i()}),{oneTimeCallback:!0}).progressEnd(1,0,h?500:0)}))},L=t=>{const i=o.getBoundingClientRect().top+t,e=z(i);return s.reduce(((t,i)=>Math.abs(i-e)<Math.abs(t-e)?i:t))},z=t=>{const i=s[s.length-1],o=W(s[0]),e=W(i),a=Math.round((o-t)/(o-e)*1e3)/1e3;return Math.max(0,Math.min(1,a))},W=i=>{const o=t.getBoundingClientRect();return window.innerHeight-o.height*i},H=F({el:o,gestureName:"modalSheet",gesturePriority:40,direction:"y",threshold:10,canStart:t=>{const i=h(t.event.target);if(y=d(),!n&&i)return 0===(l(i)?w(i).querySelector(".inner-scroll"):i).scrollTop;if(1===y&&i){const t=l(i)?w(i).querySelector(".inner-scroll"):i;return!i.querySelector("ion-refresher")&&0===t.scrollTop}return!0},onStart:i=>{if(Y=void 0!==t.canDismiss&&!0!==t.canDismiss&&0===B,!n){const t=h(i.event.target);D=t&&l(t)?w(t).querySelector(".inner-scroll"):t}n||j("moving"),i.deltaY>0&&v&&(v.scrollY=!1),g((()=>{t.focus()})),r.progressStart(!0,1-y),m()},onMove:t=>{if(n||null===E||null===S||(t.currentY>=E&&"moving"===S?j("stationary"):t.currentY<E&&"stationary"===S&&j("moving")),!n&&t.deltaY<=0&&D)return;t.deltaY>0&&v&&(v.scrollY=!1);const i=s.length>1?1-s[1]:void 0,o=1-y+t.deltaY/k,e=void 0!==i&&o>=i&&Y,a=e?.95:.9999,d=e&&void 0!==i?i+X((o-i)/(a-i)):o;A=x(1e-4,d,a),r.progressStep(A);const h=L(t.deltaY),l={currentY:t.currentY,deltaY:t.deltaY,velocityY:t.velocityY,progress:z(t.currentY),snapBreakpoint:h};f(l)},onEnd:t=>{const i=L(t.deltaY),o={currentY:t.currentY,deltaY:t.deltaY,velocityY:t.velocityY,progress:z(t.currentY),snapBreakpoint:i};if(!n&&t.deltaY<=0&&D&&D.scrollTop>0)return j("stationary"),void u(o);$({breakpoint:i,breakpointOffset:A,canDismiss:Y,animated:!0}),u(o)}});return{gesture:H,moveSheetToBreakpoint:$}})(this.el,this.backdropEl,t,i,o,a,this.sortedBreakpoints,this.expandToScroll,(()=>{var t;return null!==(t=this.currentBreakpoint)&&void 0!==t?t:0}),(()=>this.sheetOnDismiss()),(t=>{this.currentBreakpoint!==t&&(this.currentBreakpoint=t,this.ionBreakpointDidChange.emit({breakpoint:t}))}),(()=>this.onDragStart()),(t=>this.onDragMove(t)),(t=>this.onDragEnd(t)));this.gesture=s,this.moveSheetToBreakpoint=n,this.gesture.enable(!0),(!1===this.showBackdrop||!1===this.focusTrap||o>0)&&this.setupChildRoutePassthrough()}setupChildRoutePassthrough(){var t;this.cachedPageParent=this.getOriginalPageParent();const o=this.cachedPageParent;if(!o||"ION-APP"===o.tagName)return;const e=Array.from(o.children).some((t=>{var o;return!(t===this.el||t instanceof i&&"none"===window.getComputedStyle(t).display||"TEMPLATE"===t.tagName||"SLOT"===t.tagName||t.nodeType===Node.TEXT_NODE&&!(null===(o=t.textContent)||void 0===o?void 0:o.trim()))}));if(e)return;o.classList.add("ion-page-overlay-passthrough");const a=o.parentElement;"ION-ROUTER-OUTLET"===(null==a?void 0:a.tagName)&&"ION-APP"!==(null===(t=a.parentElement)||void 0===t?void 0:t.tagName)&&(a.style.setProperty("pointer-events","none"),a.setAttribute("data-overlay-passthrough","true"))}getOriginalPageParent(){if(!this.cachedOriginalParent)return null;let t=this.cachedOriginalParent;for(;t&&!t.classList.contains("ion-page");)t=t.parentElement;return t}cleanupChildRoutePassthrough(){const t=this.cachedPageParent;if(!t)return;t.classList.remove("ion-page-overlay-passthrough");const i=t.parentElement;(null==i?void 0:i.hasAttribute("data-overlay-passthrough"))&&(i.style.removeProperty("pointer-events"),i.removeAttribute("data-overlay-passthrough")),this.cachedPageParent=void 0}sheetOnDismiss(){this.gestureAnimationDismissing=!0,this.animation.onFinish((async()=>{this.currentBreakpoint=0,this.ionBreakpointDidChange.emit({breakpoint:this.currentBreakpoint}),await this.dismiss(void 0,D),this.gestureAnimationDismissing=!1}))}cardOnDismiss(){this.gestureAnimationDismissing=!0,q(this.statusBarStyle),this.animation.onFinish((async()=>{await this.dismiss(void 0,D),this.gestureAnimationDismissing=!1}))}async dismiss(t,i){var o;if(this.gestureAnimationDismissing&&i!==D)return!1;clearTimeout(this.resizeTimeout),this.resizeTimeout=void 0;const e=await this.lockController.lock();if(await this.dismissNestedModals(),"handler"!==i&&!await this.checkCanDismiss(t,i))return e(),!1;const{presentingElement:r}=this;void 0!==r&&"ios"===$(this)&&q(this.statusBarStyle),"undefined"!=typeof window&&this.keyboardOpenCallback&&(window.removeEventListener(L,this.keyboardOpenCallback),this.keyboardOpenCallback=void 0);const s=await P(this,t,i,"modalLeave",at,st,{presentingEl:r,currentBreakpoint:null!==(o=this.currentBreakpoint)&&void 0!==o?o:this.initialBreakpoint,backdropBreakpoint:this.backdropBreakpoint,expandToScroll:this.expandToScroll});if(s){const{delegate:t}=this.getDelegate();await v(t,this.usersElement),a((()=>this.el.classList.remove("show-modal"))),this.animation&&this.animation.destroy(),this.gesture&&this.gesture.destroy(),this.cleanupViewTransitionListener(),this.cleanupParentRemovalObserver(),this.cleanupSafeAreaOverrides(),this.cleanupChildRoutePassthrough()}return this.currentBreakpoint=void 0,this.animation=void 0,e(),s}onDidDismiss(){return I(this.el,"ionModalDidDismiss")}onWillDismiss(){return I(this.el,"ionModalWillDismiss")}async setCurrentBreakpoint(t){if(!this.isSheetModal)return void e("[ion-modal] - setCurrentBreakpoint is only supported on sheet modals.");if(!this.breakpoints.includes(t))return void e(`[ion-modal] - Attempted to set invalid breakpoint value ${t}. Please double check that the breakpoint value is part of your defined breakpoints.`);const{currentBreakpoint:i,moveSheetToBreakpoint:o,canDismiss:a,breakpoints:r,animated:s}=this;i!==t&&o&&(this.sheetTransition=o({breakpoint:t,breakpointOffset:1-i,canDismiss:void 0!==a&&!0!==a&&0===r[0],animated:s}),await this.sheetTransition,this.sheetTransition=void 0)}async getCurrentBreakpoint(){return this.currentBreakpoint}async moveToNextBreakpoint(){const{breakpoints:t,currentBreakpoint:i}=this;if(!t||null==i)return!1;const o=t.filter((t=>0!==t)),e=o.indexOf(i),a=o[(e+1)%o.length];return await this.setCurrentBreakpoint(a),!0}initViewTransitionListener(){"ios"!==$(this)||!this.presentingElement||this.enterAnimation||this.leaveAnimation||(this.currentViewIsPortrait=window.innerWidth<768)}handleViewTransition(){if(!this.presented)return;const t=window.innerWidth<768;if(this.currentViewIsPortrait===t)return;this.viewTransitionAnimation&&(this.viewTransitionAnimation.destroy(),this.viewTransitionAnimation=void 0);const{presentingElement:i}=this;if(!i)return;let o;o=this.currentViewIsPortrait&&!t?((t,i,o=300)=>{const{presentingEl:e}=i;if(!e)return z("portrait-to-landscape-transition");const a="ION-MODAL"===e.tagName&&void 0!==e.presentingElement,r=w(e),s=document.body,n=z("portrait-to-landscape-transition").addElement(t).easing("cubic-bezier(0.32,0.72,0,1)").duration(o),d=z().beforeStyles({transform:"translateY(0)","transform-origin":"top center",overflow:"hidden"});if(a){const t="translateY(-10px) scale(0.915)",i="translateY(0px) scale(1)";d.addElement(e).afterStyles({transform:i}).fromTo("transform",t,i).fromTo("filter","contrast(0.85)","contrast(1)");const o=z().addElement(r.querySelector(".modal-shadow")).afterStyles({transform:i,opacity:"0"}).fromTo("transform",t,i);n.addAnimation([d,o])}else{const i=w(t),o=z().addElement(i.querySelectorAll(".modal-wrapper, .modal-shadow")).fromTo("opacity","1","1"),a=z().addElement(i.querySelector("ion-backdrop")).fromTo("opacity","var(--backdrop-opacity)","var(--backdrop-opacity)"),r=`translateY(${CSS.supports("width","max(0px, 1px)")?"max(30px, var(--ion-safe-area-top))":"30px"}) scale(0.915)`;d.addElement(e).afterStyles({transform:"translateY(0px) scale(1)","border-radius":"0px"}).beforeAddWrite((()=>s.style.setProperty("background-color",""))).fromTo("transform",r,"translateY(0px) scale(1)").fromTo("filter","contrast(0.85)","contrast(1)").fromTo("border-radius","10px 10px 0 0","0px"),n.addAnimation([d,o,a])}return n})(this.el,{presentingEl:i}):((t,i,o=300)=>{const{presentingEl:e}=i;if(!e)return z("landscape-to-portrait-transition");const a="ION-MODAL"===e.tagName&&void 0!==e.presentingElement,r=w(e),s=document.body,n=z("landscape-to-portrait-transition").addElement(t).easing("cubic-bezier(0.32,0.72,0,1)").duration(o),d=z().beforeStyles({transform:"translateY(0)","transform-origin":"top center",overflow:"hidden"});if(a){const t="translateY(-10px) scale(0.915)",i="translateY(0) scale(1)";d.addElement(e).afterStyles({transform:i}).fromTo("transform",t,i);const o=z().addElement(r.querySelector(".modal-shadow")).afterStyles({transform:i,opacity:"0"}).fromTo("transform",t,i);n.addAnimation([d,o])}else{const i=w(t),o=z().addElement(i.querySelectorAll(".modal-wrapper, .modal-shadow")).fromTo("opacity","1","1"),a=z().addElement(i.querySelector("ion-backdrop")).fromTo("opacity","var(--backdrop-opacity)","var(--backdrop-opacity)"),r=`translateY(${CSS.supports("width","max(0px, 1px)")?"max(30px, var(--ion-safe-area-top))":"30px"}) scale(0.915)`;d.addElement(e).afterStyles({transform:r}).beforeAddWrite((()=>s.style.setProperty("background-color","black"))).keyframes([{offset:0,transform:"translateY(0px) scale(1)",filter:"contrast(1)",borderRadius:"0px"},{offset:.2,transform:"translateY(0px) scale(1)",filter:"contrast(1)",borderRadius:"10px 10px 0 0"},{offset:1,transform:r,filter:"contrast(0.85)",borderRadius:"10px 10px 0 0"}]),n.addAnimation([d,o,a])}return n})(this.el,{presentingEl:i}),this.currentViewIsPortrait=t,this.viewTransitionAnimation=o,o.play().then((()=>{this.viewTransitionAnimation=void 0,g((()=>this.updateSafeAreaOverrides())),this.reinitSwipeToClose()}))}cleanupViewTransitionListener(){this.resizeTimeout&&(clearTimeout(this.resizeTimeout),this.resizeTimeout=void 0),this.viewTransitionAnimation&&(this.viewTransitionAnimation.destroy(),this.viewTransitionAnimation=void 0)}reinitSwipeToClose(){"ios"===$(this)&&this.presentingElement&&(this.gesture&&(this.gesture.destroy(),this.gesture=void 0),this.animation&&(this.animation.progressEnd(0,0,0),this.animation.destroy(),this.animation=void 0),g((()=>{this.ensureCorrectModalPosition(),this.initSwipeToClose()})))}ensureCorrectModalPosition(){const{el:t,presentingElement:i}=this,o=w(t).querySelector(".modal-wrapper");if(o&&(o.style.transform="translateY(0vh)",o.style.opacity="1"),"ION-MODAL"===(null==i?void 0:i.tagName))if(window.innerWidth<768){const t=CSS.supports("width","max(0px, 1px)")?"max(30px, var(--ion-safe-area-top))":"30px";i.style.transform=`translateY(${t}) scale(0.915)`}else i.style.transform="translateY(0px) scale(1)"}async dismissNestedModals(){const t=document.querySelectorAll(`ion-modal[data-parent-ion-modal="${this.el.id}"]`);null==t||t.forEach((async t=>{await t.dismiss(void 0,"parent-dismissed")}))}initParentRemovalObserver(){"undefined"!=typeof MutationObserver&&"undefined"!=typeof window&&this.cachedOriginalParent&&this.cachedOriginalParent.nodeType!==Node.DOCUMENT_NODE&&this.cachedOriginalParent.nodeType!==Node.DOCUMENT_FRAGMENT_NODE&&(this.hasController||this.cachedOriginalParent===document.body||"ION-APP"===this.cachedOriginalParent.tagName||(this.parentRemovalObserver=new MutationObserver((t=>{t.forEach((t=>{"childList"===t.type&&t.removedNodes.length>0&&(Array.from(t.removedNodes).some((t=>{var i,o;const e=t===this.cachedOriginalParent,a=!!this.cachedOriginalParent&&(null===(o=(i=t).contains)||void 0===o?void 0:o.call(i,this.cachedOriginalParent));return e||a}))||this.cachedOriginalParent&&!this.cachedOriginalParent.isConnected)&&(this.dismiss(void 0,"parent-removed"),this.cachedOriginalParent=void 0)}))})),this.parentRemovalObserver.observe(document.body,{childList:!0,subtree:!0})))}cleanupParentRemovalObserver(){var t;null===(t=this.parentRemovalObserver)||void 0===t||t.disconnect(),this.parentRemovalObserver=void 0}onDragStart(){this.ionDragStart.emit()}onDragMove(t){this.ionDragMove.emit(t)}onDragEnd(t){this.ionDragEnd.emit(t)}getSafeAreaContext(){return{isSheetModal:this.isSheetModal,isCardModal:void 0!==this.presentingElement&&"ios"===$(this),presentingElement:this.presentingElement,breakpoints:this.breakpoints,currentBreakpoint:this.currentBreakpoint}}setInitialSafeAreaOverrides(){const t=this.getSafeAreaContext(),i=(t=>{const{isSheetModal:i,isCardModal:o}=t;return i?{top:"0px",bottom:"inherit",left:"0px",right:"0px"}:o?{top:"inherit",bottom:"inherit",left:"0px",right:"0px"}:H&&H.matchMedia("(min-width: 768px) and (min-height: 600px)").matches?{top:"0px",bottom:"0px",left:"0px",right:"0px"}:{top:"inherit",bottom:"inherit",left:"inherit",right:"inherit"}})(t);ht(this.el,i),t.isSheetModal&&this.updateSheetOffsetTop()}updateSheetOffsetTop(){const t=(()=>{if(null!==nt)return nt;const t=null==H?void 0:H.document;if(!(null==t?void 0:t.body))return 0;const i=t.createElement("div");i.style.cssText="position:fixed;visibility:hidden;pointer-events:none;top:0;left:0;padding-top:var(--ion-safe-area-top,0px);",t.body.appendChild(i);const o=parseFloat(getComputedStyle(i).paddingTop)||0;return i.remove(),nt=o,dt||(dt=!0,g((()=>{nt=null,dt=!1}))),o})();this.el.style.setProperty("--ion-modal-offset-top",`${t}px`)}updateSafeAreaOverrides(){const{wrapperEl:t,el:i}=this,o=this.getSafeAreaContext();if(o.isSheetModal)return;if(o.isCardModal)return;if(!t)return;const e=(t=>{var i,o;const e=t.getBoundingClientRect(),a=null!==(i=null==H?void 0:H.innerHeight)&&void 0!==i?i:0,r=null!==(o=null==H?void 0:H.innerWidth)&&void 0!==o?o:0;return{top:e.top<=5?"inherit":"0px",bottom:e.bottom>=a-5?"inherit":"0px",left:e.left<=5?"inherit":"0px",right:e.right>=r-5?"inherit":"0px"}})(t);ht(i,e)}applyFullscreenSafeArea(){const{wrapperEl:t,el:i}=this;if(!t)return;const o=this.getSafeAreaContext();if(o.isSheetModal||o.isCardModal)return;let e=!1,a=!1;for(const t of Array.from(i.children)){"ION-CONTENT"===t.tagName&&(e=!0),"ION-FOOTER"===t.tagName&&(a=!0);for(const i of Array.from(t.children))"ION-CONTENT"===i.tagName&&(e=!0),"ION-FOOTER"===i.tagName&&(a=!0)}e&&!a&&(t.style.setProperty("height","calc(var(--height) - var(--ion-safe-area-bottom, 0px))"),t.style.setProperty("padding-bottom","var(--ion-safe-area-bottom, 0px)"))}cleanupSafeAreaOverrides(){var t;(t=this.el).style.removeProperty("--ion-safe-area-top"),t.style.removeProperty("--ion-safe-area-bottom"),t.style.removeProperty("--ion-safe-area-left"),t.style.removeProperty("--ion-safe-area-right"),this.el.style.removeProperty("--ion-modal-offset-top"),this.wrapperEl&&(this.wrapperEl.style.removeProperty("height"),this.wrapperEl.style.removeProperty("padding-bottom"))}render(){const{handle:t,isSheetModal:i,presentingElement:o,htmlAttributes:e,handleBehavior:a,inheritedAttributes:r,focusTrap:d,expandToScroll:h}=this,l=!1!==t&&i,p=$(this),c=void 0!==o&&"ios"===p,m="cycle"===a;return s(n,Object.assign({key:"1a53e8f87532abccc169ca4b24973a39c5f9ba16","no-router":!0,tabIndex:m&&i&&l?0:-1},e,{style:{zIndex:`${2e4+this.overlayIndex}`},class:Object.assign({[p]:!0,"modal-default":!c&&!i,"modal-card":c,"modal-sheet":i,"modal-no-expand-scroll":i&&!h,"overlay-hidden":!0,[C]:!1===d},N(this.cssClass)),onIonBackdropTap:this.onBackdropTap,onIonModalDidPresent:this.onLifecycle,onIonModalWillPresent:this.onLifecycle,onIonModalWillDismiss:this.onLifecycle,onIonModalDidDismiss:this.onLifecycle,onFocus:this.onModalFocus}),s("ion-backdrop",{key:"fa8e0a436c0d458331402e1850f87af3dc97b582",ref:t=>this.backdropEl=t,visible:this.showBackdrop,tappable:this.backdropDismiss,part:"backdrop"}),"ios"===p&&s("div",{key:"f00de6027d3c8b5bc93db3b0f7a50a87628d40bb",class:"modal-shadow"}),s("div",Object.assign({key:"ae5e33bd6c58e541edb2edbca92420ea02dd5175",role:"dialog"},r,{"aria-modal":"true",class:"modal-wrapper ion-overlay-wrapper",part:"content",ref:t=>this.wrapperEl=t}),l&&s("button",{key:"141cdd8f8522331f4b764e2a4d79ec6596b1eb3a",class:"modal-handle",tabIndex:m?0:-1,"aria-label":"Activate to adjust the size of the dialog overlaying the screen",onClick:m?this.onHandleClick:void 0,part:"handle",ref:t=>this.dragHandleEl=t}),s("slot",{key:"7de20298b61abee67a16d275c9ebd9a25ce7dd26",onSlotchange:this.onSlotChange})))}get el(){return this}static get watchers(){return{isOpen:[{onIsOpenChange:0}],trigger:[{triggerChanged:0}]}}static get style(){return{ios:':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}}@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-modal-offset-top, 0px) + 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}',md:':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}}@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-modal-offset-top, 0px) + 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}'}}},[289,"ion-modal",{hasController:[4,"has-controller"],overlayIndex:[2,"overlay-index"],delegate:[16],keyboardClose:[4,"keyboard-close"],enterAnimation:[16],leaveAnimation:[16],breakpoints:[16],expandToScroll:[4,"expand-to-scroll"],initialBreakpoint:[2,"initial-breakpoint"],backdropBreakpoint:[2,"backdrop-breakpoint"],handle:[4],handleBehavior:[1,"handle-behavior"],component:[1],componentProps:[16],cssClass:[1,"css-class"],backdropDismiss:[4,"backdrop-dismiss"],showBackdrop:[4,"show-backdrop"],animated:[4],presentingElement:[16],htmlAttributes:[16],isOpen:[4,"is-open"],trigger:[1],keepContentsMounted:[4,"keep-contents-mounted"],focusTrap:[4,"focus-trap"],canDismiss:[4,"can-dismiss"],isSheetModal:[32],presented:[32],present:[64],dismiss:[64],onDidDismiss:[64],onWillDismiss:[64],setCurrentBreakpoint:[64],getCurrentBreakpoint:[64]},[[9,"resize","onWindowResize"]],{isOpen:[{onIsOpenChange:0}],trigger:[{triggerChanged:0}]}]),pt={ionModalDidPresent:"ionViewDidEnter",ionModalWillPresent:"ionViewWillEnter",ionModalWillDismiss:"ionViewWillLeave",ionModalDidDismiss:"ionViewDidLeave"};function ct(){"undefined"!=typeof customElements&&["ion-modal","ion-backdrop"].forEach((t=>{switch(t){case"ion-modal":customElements.get(d(t))||customElements.define(d(t),lt);break;case"ion-backdrop":customElements.get(d(t))||V()}}))}export{lt as M,ct as d}