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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/components/checkbox.js +4 -6
  2. package/components/content.js +4 -4
  3. package/components/ion-select.js +4 -6
  4. package/components/ion-tab-button.js +1 -1
  5. package/components/ion-tab.js +2 -2
  6. package/components/ion-tabs.js +1 -2
  7. package/components/ion-toggle.js +4 -6
  8. package/components/modal.js +35 -259
  9. package/components/radio.js +37 -5
  10. package/css/core.css.map +1 -1
  11. package/css/ionic.bundle.css.map +1 -1
  12. package/dist/cjs/ion-app_8.cjs.entry.js +4 -4
  13. package/dist/cjs/ion-checkbox.cjs.entry.js +4 -5
  14. package/dist/cjs/ion-modal.cjs.entry.js +35 -258
  15. package/dist/cjs/ion-radio_2.cjs.entry.js +35 -5
  16. package/dist/cjs/ion-select_3.cjs.entry.js +4 -5
  17. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +1 -1
  18. package/dist/cjs/ion-tab_2.cjs.entry.js +3 -4
  19. package/dist/cjs/ion-toggle.cjs.entry.js +4 -5
  20. package/dist/cjs/ionic.cjs.js +1 -1
  21. package/dist/cjs/loader.cjs.js +1 -1
  22. package/dist/collection/components/checkbox/checkbox.js +4 -23
  23. package/dist/collection/components/content/content.js +4 -4
  24. package/dist/collection/components/modal/animations/ios.enter.js +4 -50
  25. package/dist/collection/components/modal/animations/ios.leave.js +2 -24
  26. package/dist/collection/components/modal/animations/md.enter.js +5 -52
  27. package/dist/collection/components/modal/animations/md.leave.js +3 -26
  28. package/dist/collection/components/modal/animations/sheet.js +2 -11
  29. package/dist/collection/components/modal/gestures/sheet.js +10 -79
  30. package/dist/collection/components/modal/modal.ios.css +0 -16
  31. package/dist/collection/components/modal/modal.js +7 -32
  32. package/dist/collection/components/modal/modal.md.css +0 -6
  33. package/dist/collection/components/radio/radio.ios.css +52 -15
  34. package/dist/collection/components/radio/radio.js +70 -3
  35. package/dist/collection/components/radio/radio.md.css +52 -15
  36. package/dist/collection/components/select/select.js +4 -23
  37. package/dist/collection/components/tab/tab.js +2 -2
  38. package/dist/collection/components/tab-button/tab-button.js +1 -1
  39. package/dist/collection/components/tabs/tabs.js +1 -2
  40. package/dist/collection/components/toggle/toggle.js +4 -23
  41. package/dist/docs.json +73 -89
  42. package/dist/esm/ion-app_8.entry.js +4 -4
  43. package/dist/esm/ion-checkbox.entry.js +4 -5
  44. package/dist/esm/ion-modal.entry.js +35 -258
  45. package/dist/esm/ion-radio_2.entry.js +35 -5
  46. package/dist/esm/ion-select_3.entry.js +4 -5
  47. package/dist/esm/ion-tab-bar_2.entry.js +1 -1
  48. package/dist/esm/ion-tab_2.entry.js +3 -4
  49. package/dist/esm/ion-toggle.entry.js +4 -5
  50. package/dist/esm/ionic.js +1 -1
  51. package/dist/esm/loader.js +1 -1
  52. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  53. package/dist/esm-es5/ion-checkbox.entry.js +1 -1
  54. package/dist/esm-es5/ion-modal.entry.js +1 -1
  55. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  56. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  57. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  58. package/dist/esm-es5/ion-tab_2.entry.js +1 -1
  59. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  60. package/dist/esm-es5/ionic.js +1 -1
  61. package/dist/esm-es5/loader.js +1 -1
  62. package/dist/html.html-data.json +8 -16
  63. package/dist/ionic/ionic.esm.js +1 -1
  64. package/dist/ionic/p-1a11f49f.entry.js +4 -0
  65. package/dist/ionic/p-1b1af767.system.entry.js +4 -0
  66. package/dist/ionic/p-2172893e.system.entry.js +4 -0
  67. package/dist/ionic/p-322c5fb4.system.js +1 -1
  68. package/dist/ionic/p-4ec778aa.entry.js +4 -0
  69. package/dist/ionic/p-5ab1b709.entry.js +4 -0
  70. package/dist/ionic/{p-8ac07653.system.entry.js → p-69666e8a.system.entry.js} +2 -2
  71. package/dist/ionic/{p-1199e388.system.entry.js → p-797eeea8.system.entry.js} +1 -1
  72. package/dist/ionic/p-908d6080.entry.js +4 -0
  73. package/dist/ionic/p-92a0f863.entry.js +4 -0
  74. package/dist/ionic/p-98ff6b32.entry.js +4 -0
  75. package/dist/ionic/p-a0eb506c.system.entry.js +4 -0
  76. package/dist/ionic/p-bc64bd27.system.entry.js +4 -0
  77. package/dist/ionic/p-e06057c9.entry.js +4 -0
  78. package/dist/ionic/{p-bdf2cb2e.system.entry.js → p-ebf042e0.system.entry.js} +1 -1
  79. package/dist/ionic/p-f55baa37.entry.js +4 -0
  80. package/dist/ionic/{p-9f364443.system.entry.js → p-fd1c40cc.system.entry.js} +1 -1
  81. package/dist/types/components/checkbox/checkbox.d.ts +0 -6
  82. package/dist/types/components/modal/animations/sheet.d.ts +0 -1
  83. package/dist/types/components/modal/gestures/sheet.d.ts +1 -1
  84. package/dist/types/components/modal/modal-interface.d.ts +0 -1
  85. package/dist/types/components/modal/modal.d.ts +0 -11
  86. package/dist/types/components/radio/radio.d.ts +19 -0
  87. package/dist/types/components/select/select.d.ts +0 -6
  88. package/dist/types/components/toggle/toggle.d.ts +0 -6
  89. package/dist/types/components.d.ts +16 -32
  90. package/hydrate/index.js +95 -291
  91. package/hydrate/index.mjs +95 -291
  92. package/package.json +1 -1
  93. package/dist/ionic/p-0430c2e0.entry.js +0 -4
  94. package/dist/ionic/p-126be614.system.entry.js +0 -4
  95. package/dist/ionic/p-6c95736e.entry.js +0 -4
  96. package/dist/ionic/p-6d6cedc5.entry.js +0 -4
  97. package/dist/ionic/p-722ec9c7.entry.js +0 -4
  98. package/dist/ionic/p-783411f1.entry.js +0 -4
  99. package/dist/ionic/p-7ddc46c3.system.entry.js +0 -4
  100. package/dist/ionic/p-98e41e4f.system.entry.js +0 -4
  101. package/dist/ionic/p-d57a57d6.entry.js +0 -4
  102. package/dist/ionic/p-d7dd8fb1.entry.js +0 -4
  103. package/dist/ionic/p-e3171ff3.entry.js +0 -4
  104. package/dist/ionic/p-e6376b93.system.entry.js +0 -4
package/hydrate/index.mjs CHANGED
@@ -8493,7 +8493,6 @@ class Checkbox {
8493
8493
  this.labelPlacement = 'start';
8494
8494
  this.justify = undefined;
8495
8495
  this.alignment = undefined;
8496
- this.required = false;
8497
8496
  }
8498
8497
  componentWillLoad() {
8499
8498
  this.inheritedAttributes = Object.assign({}, inheritAriaAttributes(this.el));
@@ -8505,11 +8504,11 @@ class Checkbox {
8505
8504
  }
8506
8505
  }
8507
8506
  render() {
8508
- const { color, checked, disabled, el, getSVGPath, indeterminate, inheritedAttributes, inputId, justify, labelPlacement, name, value, alignment, required, } = this;
8507
+ const { color, checked, disabled, el, getSVGPath, indeterminate, inheritedAttributes, inputId, justify, labelPlacement, name, value, alignment, } = this;
8509
8508
  const mode = getIonMode$1(this);
8510
8509
  const path = getSVGPath(mode, indeterminate);
8511
8510
  renderHiddenInput(true, el, name, checked ? value : '', disabled);
8512
- return (hAsync(Host, { key: '07a5884062dd256b570e856270c74a5a09d2f2a5', "aria-checked": indeterminate ? 'mixed' : `${checked}`, class: createColorClasses$1(color, {
8511
+ return (hAsync(Host, { key: '6dc787e1100521d08c4900104e1a3e2f594e919f', "aria-checked": indeterminate ? 'mixed' : `${checked}`, class: createColorClasses$1(color, {
8513
8512
  [mode]: true,
8514
8513
  'in-item': hostContext('ion-item', el),
8515
8514
  'checkbox-checked': checked,
@@ -8519,10 +8518,10 @@ class Checkbox {
8519
8518
  [`checkbox-justify-${justify}`]: justify !== undefined,
8520
8519
  [`checkbox-alignment-${alignment}`]: alignment !== undefined,
8521
8520
  [`checkbox-label-placement-${labelPlacement}`]: true,
8522
- }), onClick: this.onClick }, hAsync("label", { key: '3439d546e8b60187421db698eab63a0bdd31c973', class: "checkbox-wrapper" }, hAsync("input", Object.assign({ key: '9f45cf7dbdedcf01ec132c11e16979adb1aa102f', type: "checkbox", checked: checked ? true : undefined, disabled: disabled, id: inputId, onChange: this.toggleChecked, onFocus: () => this.onFocus(), onBlur: () => this.onBlur(), ref: (focusEl) => (this.focusEl = focusEl), required: required }, inheritedAttributes)), hAsync("div", { key: '4e882f98939cc4b7c7ab7459c751d3f4bb2023fe', class: {
8521
+ }), onClick: this.onClick }, hAsync("label", { key: '68222fb736a5ec3f2e488649b0e2ce0417dcb224', class: "checkbox-wrapper" }, hAsync("input", Object.assign({ key: 'f12962d7e9b19c744cfdbdeccc67ae7f5d080281', type: "checkbox", checked: checked ? true : undefined, disabled: disabled, id: inputId, onChange: this.toggleChecked, onFocus: () => this.onFocus(), onBlur: () => this.onBlur(), ref: (focusEl) => (this.focusEl = focusEl) }, inheritedAttributes)), hAsync("div", { key: 'c72df2699414b1e5a41a1bc267bc634f0c93dcff', class: {
8523
8522
  'label-text-wrapper': true,
8524
8523
  'label-text-wrapper-hidden': el.textContent === '',
8525
- }, part: "label" }, hAsync("slot", { key: '0abda81297a086d02c4a56af75005547971dfcfe' })), hAsync("div", { key: '36489ea3f48a7d0ec46b77c243f9f253ef5c2b3b', class: "native-wrapper" }, hAsync("svg", { key: '4c53b52f5e93752672a34eb6f180b75fa9af9046', class: "checkbox-icon", viewBox: "0 0 24 24", part: "container" }, path)))));
8524
+ }, part: "label" }, hAsync("slot", { key: 'a2a80285178a7e0e3b536fc9ca26b8b444aa4307' })), hAsync("div", { key: 'c2b05e0d1fe8df5dcd72858220b5ff51ecaee4cc', class: "native-wrapper" }, hAsync("svg", { key: 'ee24913fded72258ebd9713654a6dba92a18fcf7', class: "checkbox-icon", viewBox: "0 0 24 24", part: "container" }, path)))));
8526
8525
  }
8527
8526
  getSVGPath(mode, indeterminate) {
8528
8527
  let path = indeterminate ? (hAsync("path", { d: "M6 12L18 12", part: "mark" })) : (hAsync("path", { d: "M5.9,12.5l3.8,3.8l8.8-8.8", part: "mark" }));
@@ -8549,7 +8548,6 @@ class Checkbox {
8549
8548
  "labelPlacement": [1, "label-placement"],
8550
8549
  "justify": [1],
8551
8550
  "alignment": [1],
8552
- "required": [4],
8553
8551
  "setFocus": [64]
8554
8552
  },
8555
8553
  "$listeners$": undefined,
@@ -9109,20 +9107,20 @@ class Content {
9109
9107
  const forceOverscroll = this.shouldForceOverscroll();
9110
9108
  const transitionShadow = mode === 'ios';
9111
9109
  this.resize();
9112
- return (hAsync(Host, Object.assign({ key: 'e3241b81c97aa6187c43397006fd1136e8c7a1b5', role: isMainContent ? 'main' : undefined, class: createColorClasses$1(this.color, {
9110
+ return (hAsync(Host, Object.assign({ key: 'f2a24aa66dbf5c76f9d4b06f708eb73cadc239df', role: isMainContent ? 'main' : undefined, class: createColorClasses$1(this.color, {
9113
9111
  [mode]: true,
9114
9112
  'content-sizing': hostContext('ion-popover', this.el),
9115
9113
  overscroll: forceOverscroll,
9116
9114
  [`content-${rtl}`]: true,
9117
- }), tabIndex: '0', style: {
9115
+ }), style: {
9118
9116
  '--offset-top': `${this.cTop}px`,
9119
9117
  '--offset-bottom': `${this.cBottom}px`,
9120
- } }, inheritedAttributes), hAsync("div", { key: 'b2e0837fd5cb59de4306bf1ea7b115f4fd43f6f9', ref: (el) => (this.backgroundContentEl = el), id: "background-content", part: "background" }), fixedSlotPlacement === 'before' ? hAsync("slot", { name: "fixed" }) : null, hAsync("div", { key: 'b66cfe79487ba5a6b06da1580514c7406f2293c9', class: {
9118
+ } }, inheritedAttributes), hAsync("div", { key: '6480ca7648b278abb36477b3838bccbcd4995e2a', ref: (el) => (this.backgroundContentEl = el), id: "background-content", part: "background" }), fixedSlotPlacement === 'before' ? hAsync("slot", { name: "fixed" }) : null, hAsync("div", { key: '29a23b663f5f0215bb000820c01e1814c0d55985', class: {
9121
9119
  'inner-scroll': true,
9122
9120
  'scroll-x': scrollX,
9123
9121
  'scroll-y': scrollY,
9124
9122
  overscroll: (scrollX || scrollY) && forceOverscroll,
9125
- }, ref: (scrollEl) => (this.scrollEl = scrollEl), onScroll: this.scrollEvents ? (ev) => this.onScroll(ev) : undefined, part: "scroll" }, hAsync("slot", { key: '30ae38ae7d5dc407af5cd432e577a8013996e523' })), transitionShadow ? (hAsync("div", { class: "transition-effect" }, hAsync("div", { class: "transition-cover" }), hAsync("div", { class: "transition-shadow" }))) : null, fixedSlotPlacement === 'after' ? hAsync("slot", { name: "fixed" }) : null));
9123
+ }, ref: (scrollEl) => (this.scrollEl = scrollEl), onScroll: this.scrollEvents ? (ev) => this.onScroll(ev) : undefined, part: "scroll" }, hAsync("slot", { key: '0fe1bd05609a4b88ae2ce9addf5d5dc5dc1806f0' })), transitionShadow ? (hAsync("div", { class: "transition-effect" }, hAsync("div", { class: "transition-cover" }), hAsync("div", { class: "transition-shadow" }))) : null, fixedSlotPlacement === 'after' ? hAsync("slot", { name: "fixed" }) : null));
9126
9124
  }
9127
9125
  get el() { return getElement(this); }
9128
9126
  static get style() { return IonContentStyle0; }
@@ -19025,7 +19023,7 @@ const computeDuration = (remaining, velocity) => {
19025
19023
  };
19026
19024
 
19027
19025
  const createSheetEnterAnimation = (opts) => {
19028
- const { currentBreakpoint, backdropBreakpoint, expandToScroll } = opts;
19026
+ const { currentBreakpoint, backdropBreakpoint } = opts;
19029
19027
  /**
19030
19028
  * If the backdropBreakpoint is undefined, then the backdrop
19031
19029
  * should always fade in. If the backdropBreakpoint came before the
@@ -19045,16 +19043,7 @@ const createSheetEnterAnimation = (opts) => {
19045
19043
  { offset: 0, opacity: 1, transform: 'translateY(100%)' },
19046
19044
  { offset: 1, opacity: 1, transform: `translateY(${100 - currentBreakpoint * 100}%)` },
19047
19045
  ]);
19048
- /**
19049
- * This allows the content to be scrollable at any breakpoint.
19050
- */
19051
- const contentAnimation = !expandToScroll
19052
- ? createAnimation('contentAnimation').keyframes([
19053
- { offset: 0, opacity: 1, maxHeight: `${(1 - currentBreakpoint) * 100}%` },
19054
- { offset: 1, opacity: 1, maxHeight: `${currentBreakpoint * 100}%` },
19055
- ])
19056
- : undefined;
19057
- return { wrapperAnimation, backdropAnimation, contentAnimation };
19046
+ return { wrapperAnimation, backdropAnimation };
19058
19047
  };
19059
19048
  const createSheetLeaveAnimation = (opts) => {
19060
19049
  const { currentBreakpoint, backdropBreakpoint } = opts;
@@ -19089,68 +19078,22 @@ const createEnterAnimation$1 = () => {
19089
19078
  })
19090
19079
  .afterClearStyles(['pointer-events']);
19091
19080
  const wrapperAnimation = createAnimation().fromTo('transform', 'translateY(100vh)', 'translateY(0vh)');
19092
- return { backdropAnimation, wrapperAnimation, contentAnimation: undefined };
19081
+ return { backdropAnimation, wrapperAnimation };
19093
19082
  };
19094
19083
  /**
19095
19084
  * iOS Modal Enter Animation for the Card presentation style
19096
19085
  */
19097
19086
  const iosEnterAnimation$3 = (baseEl, opts) => {
19098
- const { presentingEl, currentBreakpoint, expandToScroll } = opts;
19087
+ const { presentingEl, currentBreakpoint } = opts;
19099
19088
  const root = getElementRoot(baseEl);
19100
- const { wrapperAnimation, backdropAnimation, contentAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation$1();
19089
+ const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation$1();
19101
19090
  backdropAnimation.addElement(root.querySelector('ion-backdrop'));
19102
19091
  wrapperAnimation.addElement(root.querySelectorAll('.modal-wrapper, .modal-shadow')).beforeStyles({ opacity: 1 });
19103
- // The content animation is only added if scrolling is enabled for
19104
- // all the breakpoints.
19105
- !expandToScroll && (contentAnimation === null || contentAnimation === void 0 ? void 0 : contentAnimation.addElement(baseEl.querySelector('.ion-page')));
19106
19092
  const baseAnimation = createAnimation('entering-base')
19107
19093
  .addElement(baseEl)
19108
19094
  .easing('cubic-bezier(0.32,0.72,0,1)')
19109
19095
  .duration(500)
19110
- .addAnimation([wrapperAnimation])
19111
- .beforeAddWrite(() => {
19112
- if (expandToScroll) {
19113
- // Scroll can only be done when the modal is fully expanded.
19114
- return;
19115
- }
19116
- /**
19117
- * There are some browsers that causes flickering when
19118
- * dragging the content when scroll is enabled at every
19119
- * breakpoint. This is due to the wrapper element being
19120
- * transformed off the screen and having a snap animation.
19121
- *
19122
- * A workaround is to clone the footer element and append
19123
- * it outside of the wrapper element. This way, the footer
19124
- * is still visible and the drag can be done without
19125
- * flickering. The original footer is hidden until the modal
19126
- * is dismissed. This maintains the animation of the footer
19127
- * when the modal is dismissed.
19128
- *
19129
- * The workaround needs to be done before the animation starts
19130
- * so there are no flickering issues.
19131
- */
19132
- const ionFooter = baseEl.querySelector('ion-footer');
19133
- /**
19134
- * This check is needed to prevent more than one footer
19135
- * from being appended to the shadow root.
19136
- * Otherwise, iOS and MD enter animations would append
19137
- * the footer twice.
19138
- */
19139
- const ionFooterAlreadyAppended = baseEl.shadowRoot.querySelector('ion-footer');
19140
- if (ionFooter && !ionFooterAlreadyAppended) {
19141
- const footerHeight = ionFooter.clientHeight;
19142
- const clonedFooter = ionFooter.cloneNode(true);
19143
- baseEl.shadowRoot.appendChild(clonedFooter);
19144
- ionFooter.style.setProperty('display', 'none');
19145
- ionFooter.setAttribute('aria-hidden', 'true');
19146
- // Padding is added to prevent some content from being hidden.
19147
- const page = baseEl.querySelector('.ion-page');
19148
- page.style.setProperty('padding-bottom', `${footerHeight}px`);
19149
- }
19150
- });
19151
- if (contentAnimation) {
19152
- baseAnimation.addAnimation(contentAnimation);
19153
- }
19096
+ .addAnimation(wrapperAnimation);
19154
19097
  if (presentingEl) {
19155
19098
  const isMobile = window.innerWidth < 768;
19156
19099
  const hasCardModal = presentingEl.tagName === 'ION-MODAL' && presentingEl.presentingElement !== undefined;
@@ -19228,7 +19171,7 @@ const createLeaveAnimation$1 = () => {
19228
19171
  * iOS Modal Leave Animation
19229
19172
  */
19230
19173
  const iosLeaveAnimation$3 = (baseEl, opts, duration = 500) => {
19231
- const { presentingEl, currentBreakpoint, expandToScroll } = opts;
19174
+ const { presentingEl, currentBreakpoint } = opts;
19232
19175
  const root = getElementRoot(baseEl);
19233
19176
  const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetLeaveAnimation(opts) : createLeaveAnimation$1();
19234
19177
  backdropAnimation.addElement(root.querySelector('ion-backdrop'));
@@ -19237,29 +19180,7 @@ const iosLeaveAnimation$3 = (baseEl, opts, duration = 500) => {
19237
19180
  .addElement(baseEl)
19238
19181
  .easing('cubic-bezier(0.32,0.72,0,1)')
19239
19182
  .duration(duration)
19240
- .addAnimation(wrapperAnimation)
19241
- .beforeAddWrite(() => {
19242
- if (expandToScroll) {
19243
- // Scroll can only be done when the modal is fully expanded.
19244
- return;
19245
- }
19246
- /**
19247
- * If expandToScroll is disabled, we need to swap
19248
- * the visibility to the original, so the footer
19249
- * dismisses with the modal and doesn't stay
19250
- * until the modal is removed from the DOM.
19251
- */
19252
- const ionFooter = baseEl.querySelector('ion-footer');
19253
- if (ionFooter) {
19254
- const clonedFooter = baseEl.shadowRoot.querySelector('ion-footer');
19255
- ionFooter.style.removeProperty('display');
19256
- ionFooter.removeAttribute('aria-hidden');
19257
- clonedFooter.style.setProperty('display', 'none');
19258
- clonedFooter.setAttribute('aria-hidden', 'true');
19259
- const page = baseEl.querySelector('.ion-page');
19260
- page.style.removeProperty('padding-bottom');
19261
- }
19262
- });
19183
+ .addAnimation(wrapperAnimation);
19263
19184
  if (presentingEl) {
19264
19185
  const isMobile = window.innerWidth < 768;
19265
19186
  const hasCardModal = presentingEl.tagName === 'ION-MODAL' && presentingEl.presentingElement !== undefined;
@@ -19337,69 +19258,22 @@ const createEnterAnimation = () => {
19337
19258
  { offset: 0, opacity: 0.01, transform: 'translateY(40px)' },
19338
19259
  { offset: 1, opacity: 1, transform: `translateY(0px)` },
19339
19260
  ]);
19340
- return { backdropAnimation, wrapperAnimation, contentAnimation: undefined };
19261
+ return { backdropAnimation, wrapperAnimation };
19341
19262
  };
19342
19263
  /**
19343
19264
  * Md Modal Enter Animation
19344
19265
  */
19345
19266
  const mdEnterAnimation$2 = (baseEl, opts) => {
19346
- const { currentBreakpoint, expandToScroll } = opts;
19267
+ const { currentBreakpoint } = opts;
19347
19268
  const root = getElementRoot(baseEl);
19348
- const { wrapperAnimation, backdropAnimation, contentAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation();
19269
+ const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation();
19349
19270
  backdropAnimation.addElement(root.querySelector('ion-backdrop'));
19350
19271
  wrapperAnimation.addElement(root.querySelector('.modal-wrapper'));
19351
- // The content animation is only added if scrolling is enabled for
19352
- // all the breakpoints.
19353
- expandToScroll && (contentAnimation === null || contentAnimation === void 0 ? void 0 : contentAnimation.addElement(baseEl.querySelector('.ion-page')));
19354
- const baseAnimation = createAnimation()
19272
+ return createAnimation()
19355
19273
  .addElement(baseEl)
19356
19274
  .easing('cubic-bezier(0.36,0.66,0.04,1)')
19357
19275
  .duration(280)
19358
- .addAnimation([backdropAnimation, wrapperAnimation])
19359
- .beforeAddWrite(() => {
19360
- if (expandToScroll) {
19361
- // Scroll can only be done when the modal is fully expanded.
19362
- return;
19363
- }
19364
- /**
19365
- * There are some browsers that causes flickering when
19366
- * dragging the content when scroll is enabled at every
19367
- * breakpoint. This is due to the wrapper element being
19368
- * transformed off the screen and having a snap animation.
19369
- *
19370
- * A workaround is to clone the footer element and append
19371
- * it outside of the wrapper element. This way, the footer
19372
- * is still visible and the drag can be done without
19373
- * flickering. The original footer is hidden until the modal
19374
- * is dismissed. This maintains the animation of the footer
19375
- * when the modal is dismissed.
19376
- *
19377
- * The workaround needs to be done before the animation starts
19378
- * so there are no flickering issues.
19379
- */
19380
- const ionFooter = baseEl.querySelector('ion-footer');
19381
- /**
19382
- * This check is needed to prevent more than one footer
19383
- * from being appended to the shadow root.
19384
- * Otherwise, iOS and MD enter animations would append
19385
- * the footer twice.
19386
- */
19387
- const ionFooterAlreadyAppended = baseEl.shadowRoot.querySelector('ion-footer');
19388
- if (ionFooter && !ionFooterAlreadyAppended) {
19389
- const footerHeight = ionFooter.clientHeight;
19390
- const clonedFooter = ionFooter.cloneNode(true);
19391
- baseEl.shadowRoot.appendChild(clonedFooter);
19392
- ionFooter.style.setProperty('display', 'none');
19393
- ionFooter.setAttribute('aria-hidden', 'true');
19394
- // Padding is added to prevent some content from being hidden.
19395
- const page = baseEl.querySelector('.ion-page');
19396
- page.style.setProperty('padding-bottom', `${footerHeight}px`);
19397
- }
19398
- });
19399
- if (contentAnimation) {
19400
- baseAnimation.addAnimation(contentAnimation);
19401
- }
19402
- return baseAnimation;
19276
+ .addAnimation([backdropAnimation, wrapperAnimation]);
19403
19277
  };
19404
19278
 
19405
19279
  const createLeaveAnimation = () => {
@@ -19414,41 +19288,18 @@ const createLeaveAnimation = () => {
19414
19288
  * Md Modal Leave Animation
19415
19289
  */
19416
19290
  const mdLeaveAnimation$2 = (baseEl, opts) => {
19417
- const { currentBreakpoint, expandToScroll } = opts;
19291
+ const { currentBreakpoint } = opts;
19418
19292
  const root = getElementRoot(baseEl);
19419
19293
  const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetLeaveAnimation(opts) : createLeaveAnimation();
19420
19294
  backdropAnimation.addElement(root.querySelector('ion-backdrop'));
19421
19295
  wrapperAnimation.addElement(root.querySelector('.modal-wrapper'));
19422
- const baseAnimation = createAnimation()
19296
+ return createAnimation()
19423
19297
  .easing('cubic-bezier(0.47,0,0.745,0.715)')
19424
19298
  .duration(200)
19425
- .addAnimation([backdropAnimation, wrapperAnimation])
19426
- .beforeAddWrite(() => {
19427
- if (expandToScroll) {
19428
- // Scroll can only be done when the modal is fully expanded.
19429
- return;
19430
- }
19431
- /**
19432
- * If expandToScroll is disabled, we need to swap
19433
- * the visibility to the original, so the footer
19434
- * dismisses with the modal and doesn't stay
19435
- * until the modal is removed from the DOM.
19436
- */
19437
- const ionFooter = baseEl.querySelector('ion-footer');
19438
- if (ionFooter) {
19439
- const clonedFooter = baseEl.shadowRoot.querySelector('ion-footer');
19440
- ionFooter.style.removeProperty('display');
19441
- ionFooter.removeAttribute('aria-hidden');
19442
- clonedFooter.style.setProperty('display', 'none');
19443
- clonedFooter.setAttribute('aria-hidden', 'true');
19444
- const page = baseEl.querySelector('.ion-page');
19445
- page.style.removeProperty('padding-bottom');
19446
- }
19447
- });
19448
- return baseAnimation;
19299
+ .addAnimation([backdropAnimation, wrapperAnimation]);
19449
19300
  };
19450
19301
 
19451
- const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, animation, breakpoints = [], expandToScroll, getCurrentBreakpoint, onDismiss, onBreakpointChange) => {
19302
+ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, animation, breakpoints = [], getCurrentBreakpoint, onDismiss, onBreakpointChange) => {
19452
19303
  // Defaults for the sheet swipe animation
19453
19304
  const defaultBackdrop = [
19454
19305
  { offset: 0, opacity: 'var(--backdrop-opacity)' },
@@ -19465,10 +19316,6 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19465
19316
  { offset: 1, transform: 'translateY(100%)' },
19466
19317
  ],
19467
19318
  BACKDROP_KEYFRAMES: backdropBreakpoint !== 0 ? customBackdrop : defaultBackdrop,
19468
- CONTENT_KEYFRAMES: [
19469
- { offset: 0, maxHeight: '100%' },
19470
- { offset: 1, maxHeight: '0%' },
19471
- ],
19472
19319
  };
19473
19320
  const contentEl = baseEl.querySelector('ion-content');
19474
19321
  const height = wrapperEl.clientHeight;
@@ -19476,11 +19323,10 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19476
19323
  let offset = 0;
19477
19324
  let canDismissBlocksGesture = false;
19478
19325
  const canDismissMaxStep = 0.95;
19479
- const maxBreakpoint = breakpoints[breakpoints.length - 1];
19480
- const minBreakpoint = breakpoints[0];
19481
19326
  const wrapperAnimation = animation.childAnimations.find((ani) => ani.id === 'wrapperAnimation');
19482
19327
  const backdropAnimation = animation.childAnimations.find((ani) => ani.id === 'backdropAnimation');
19483
- const contentAnimation = animation.childAnimations.find((ani) => ani.id === 'contentAnimation');
19328
+ const maxBreakpoint = breakpoints[breakpoints.length - 1];
19329
+ const minBreakpoint = breakpoints[0];
19484
19330
  const enableBackdrop = () => {
19485
19331
  baseEl.style.setProperty('pointer-events', 'auto');
19486
19332
  backdropEl.style.setProperty('pointer-events', 'auto');
@@ -19503,31 +19349,6 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19503
19349
  */
19504
19350
  baseEl.classList.add(FOCUS_TRAP_DISABLE_CLASS);
19505
19351
  };
19506
- /**
19507
- * Toggles the visible modal footer when `expandToScroll` is disabled.
19508
- * @param footer The footer to show.
19509
- */
19510
- const swapFooterVisibility = (footer) => {
19511
- const originalFooter = baseEl.querySelector('ion-footer');
19512
- if (!originalFooter) {
19513
- return;
19514
- }
19515
- const clonedFooter = wrapperEl.nextElementSibling;
19516
- const footerToHide = footer === 'original' ? clonedFooter : originalFooter;
19517
- const footerToShow = footer === 'original' ? originalFooter : clonedFooter;
19518
- footerToShow.style.removeProperty('display');
19519
- footerToShow.removeAttribute('aria-hidden');
19520
- const page = baseEl.querySelector('.ion-page');
19521
- if (footer === 'original') {
19522
- page.style.removeProperty('padding-bottom');
19523
- }
19524
- else {
19525
- const pagePadding = footerToShow.clientHeight;
19526
- page.style.setProperty('padding-bottom', `${pagePadding}px`);
19527
- }
19528
- footerToHide.style.setProperty('display', 'none');
19529
- footerToHide.setAttribute('aria-hidden', 'true');
19530
- };
19531
19352
  /**
19532
19353
  * After the entering animation completes,
19533
19354
  * we need to set the animation to go from
@@ -19539,7 +19360,6 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19539
19360
  if (wrapperAnimation && backdropAnimation) {
19540
19361
  wrapperAnimation.keyframes([...SheetDefaults.WRAPPER_KEYFRAMES]);
19541
19362
  backdropAnimation.keyframes([...SheetDefaults.BACKDROP_KEYFRAMES]);
19542
- contentAnimation === null || contentAnimation === void 0 ? void 0 : contentAnimation.keyframes([...SheetDefaults.CONTENT_KEYFRAMES]);
19543
19363
  animation.progressStart(true, 1 - currentBreakpoint);
19544
19364
  /**
19545
19365
  * If backdrop is not enabled, then content
@@ -19556,7 +19376,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19556
19376
  disableBackdrop();
19557
19377
  }
19558
19378
  }
19559
- if (contentEl && currentBreakpoint !== maxBreakpoint && expandToScroll) {
19379
+ if (contentEl && currentBreakpoint !== maxBreakpoint) {
19560
19380
  contentEl.scrollY = false;
19561
19381
  }
19562
19382
  const canStart = (detail) => {
@@ -19570,13 +19390,6 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19570
19390
  */
19571
19391
  const contentEl = findClosestIonContent(detail.event.target);
19572
19392
  currentBreakpoint = getCurrentBreakpoint();
19573
- /**
19574
- * If we have expandToScroll disabled, we should not allow the swipe gesture to start
19575
- * if the content is being swiped.
19576
- */
19577
- if (!expandToScroll && contentEl) {
19578
- return false;
19579
- }
19580
19393
  if (currentBreakpoint === 1 && contentEl) {
19581
19394
  /**
19582
19395
  * The modal should never swipe to close on the content with a refresher.
@@ -19607,15 +19420,6 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19607
19420
  * Remove undefined check
19608
19421
  */
19609
19422
  canDismissBlocksGesture = baseEl.canDismiss !== undefined && baseEl.canDismiss !== true && minBreakpoint === 0;
19610
- /**
19611
- * If expandToScroll is disabled, we need to swap
19612
- * the footer visibility to the original, so if the modal
19613
- * is dismissed, the footer dismisses with the modal
19614
- * and doesn't stay on the screen after the modal is gone.
19615
- */
19616
- if (!expandToScroll) {
19617
- swapFooterVisibility('original');
19618
- }
19619
19423
  /**
19620
19424
  * If we are pulling down, then it is possible we are pulling on the content.
19621
19425
  * We do not want scrolling to happen at the same time as the gesture.
@@ -19731,19 +19535,6 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19731
19535
  opacity: `calc(var(--backdrop-opacity) * ${getBackdropValueForSheet(snapToBreakpoint, backdropBreakpoint)})`,
19732
19536
  },
19733
19537
  ]);
19734
- if (contentAnimation) {
19735
- /**
19736
- * The modal content should scroll at any breakpoint when expandToScroll
19737
- * is disabled. In order to do this, the content needs to be completely
19738
- * viewable so scrolling can access everything. Otherwise, the default
19739
- * behavior would show the content off the screen and only allow
19740
- * scrolling when the sheet is fully expanded.
19741
- */
19742
- contentAnimation.keyframes([
19743
- { offset: 0, maxHeight: `${(1 - breakpointOffset) * 100}%` },
19744
- { offset: 1, maxHeight: `${snapToBreakpoint * 100}%` },
19745
- ]);
19746
- }
19747
19538
  animation.progressStep(0);
19748
19539
  }
19749
19540
  /**
@@ -19751,14 +19542,6 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19751
19542
  * snapping animation completes.
19752
19543
  */
19753
19544
  gesture.enable(false);
19754
- /**
19755
- * If expandToScroll is disabled, we need to swap
19756
- * the footer visibility to the cloned one so the footer
19757
- * doesn't flicker when the sheet's height is animated.
19758
- */
19759
- if (!expandToScroll && shouldRemainOpen) {
19760
- swapFooterVisibility('cloned');
19761
- }
19762
19545
  if (shouldPreventDismiss) {
19763
19546
  handleCanDismiss(baseEl, animation);
19764
19547
  }
@@ -19766,13 +19549,13 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19766
19549
  onDismiss();
19767
19550
  }
19768
19551
  /**
19769
- * Enables scrolling immediately if the sheet is about to fully expand
19770
- * or if it allows scrolling at any breakpoint. Without this, there would
19771
- * be a ~500ms delay while the modal animation completes, causing a
19772
- * noticeable lag. Native iOS allows scrolling as soon as the gesture is
19773
- * released, so we align with that behavior.
19552
+ * If the sheet is going to be fully expanded then we should enable
19553
+ * scrolling immediately. The sheet modal animation takes ~500ms to finish
19554
+ * so if we wait until then there is a visible delay for when scrolling is
19555
+ * re-enabled. Native iOS allows for scrolling on the sheet modal as soon
19556
+ * as the gesture is released, so we align with that.
19774
19557
  */
19775
- if (contentEl && (snapToBreakpoint === breakpoints[breakpoints.length - 1] || !expandToScroll)) {
19558
+ if (contentEl && snapToBreakpoint === breakpoints[breakpoints.length - 1]) {
19776
19559
  contentEl.scrollY = true;
19777
19560
  }
19778
19561
  return new Promise((resolve) => {
@@ -19790,7 +19573,6 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19790
19573
  raf(() => {
19791
19574
  wrapperAnimation.keyframes([...SheetDefaults.WRAPPER_KEYFRAMES]);
19792
19575
  backdropAnimation.keyframes([...SheetDefaults.BACKDROP_KEYFRAMES]);
19793
- contentAnimation === null || contentAnimation === void 0 ? void 0 : contentAnimation.keyframes([...SheetDefaults.CONTENT_KEYFRAMES]);
19794
19576
  animation.progressStart(true, 1 - snapToBreakpoint);
19795
19577
  currentBreakpoint = snapToBreakpoint;
19796
19578
  onBreakpointChange(currentBreakpoint);
@@ -19843,10 +19625,10 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19843
19625
  };
19844
19626
  };
19845
19627
 
19846
- const modalIosCss = ":host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--overflow:hidden;--border-radius:0;--border-width:0;--border-style:none;--border-color:transparent;--background:var(--ion-background-color, #fff);--box-shadow:none;--backdrop-opacity:0;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);contain:strict}.modal-wrapper,ion-backdrop{pointer-events:auto}:host(.overlay-hidden){display:none}.modal-wrapper,.modal-shadow{border-radius:var(--border-radius);width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:var(--overflow);z-index:10}.modal-shadow{position:absolute;background:transparent}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--width:600px;--height:500px;--ion-safe-area-top:0px;--ion-safe-area-bottom:0px;--ion-safe-area-right:0px;--ion-safe-area-left:0px}}@media only screen and (min-width: 768px) and (min-height: 768px){:host{--width:600px;--height:600px}}.modal-handle{left:0px;right:0px;top:5px;border-radius:8px;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;position:absolute;width:36px;height:5px;-webkit-transform:translateZ(0);transform:translateZ(0);border:0;background:var(--ion-color-step-350, var(--ion-background-color-step-350, #c0c0be));cursor:pointer;z-index:11}.modal-handle::before{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;position:absolute;width:36px;height:5px;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);content:\"\"}:host(.modal-sheet){--height:calc(100% - (var(--ion-safe-area-top) + 10px))}:host(.modal-sheet) .modal-wrapper,:host(.modal-sheet) .modal-shadow{position:absolute;bottom:0}:host(.modal-sheet.modal-no-expand-scroll) ion-footer{position:absolute;bottom:0;width:var(--width)}:host{--backdrop-opacity:var(--ion-backdrop-opacity, 0.4)}:host(.modal-card),:host(.modal-sheet){--border-radius:10px}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--border-radius:10px}}.modal-wrapper{-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0)}@media screen and (max-width: 767px){@supports (width: max(0px, 1px)){:host(.modal-card){--height:calc(100% - max(30px, var(--ion-safe-area-top)) - 10px)}}@supports not (width: max(0px, 1px)){:host(.modal-card){--height:calc(100% - 40px)}}:host(.modal-card) .modal-wrapper{border-start-start-radius:var(--border-radius);border-start-end-radius:var(--border-radius);border-end-end-radius:0;border-end-start-radius:0}:host(.modal-card){--backdrop-opacity:0;--width:100%;-ms-flex-align:end;align-items:flex-end}:host(.modal-card) .modal-shadow{display:none}:host(.modal-card) ion-backdrop{pointer-events:none}}@media screen and (min-width: 768px){:host(.modal-card){--width:calc(100% - 120px);--height:calc(100% - (120px + var(--ion-safe-area-top) + var(--ion-safe-area-bottom)));--max-width:720px;--max-height:1000px;--backdrop-opacity:0;--box-shadow:0px 0px 30px 10px rgba(0, 0, 0, 0.1);-webkit-transition:all 0.5s ease-in-out;transition:all 0.5s ease-in-out}:host(.modal-card) .modal-wrapper{-webkit-box-shadow:none;box-shadow:none}:host(.modal-card) .modal-shadow{-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow)}}:host(.modal-sheet) .modal-wrapper{border-start-start-radius:var(--border-radius);border-start-end-radius:var(--border-radius);border-end-end-radius:0;border-end-start-radius:0}:host(.modal-sheet.modal-no-expand-scroll) ion-footer ion-toolbar:first-of-type{padding-top:6px}";
19628
+ const modalIosCss = ":host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--overflow:hidden;--border-radius:0;--border-width:0;--border-style:none;--border-color:transparent;--background:var(--ion-background-color, #fff);--box-shadow:none;--backdrop-opacity:0;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);contain:strict}.modal-wrapper,ion-backdrop{pointer-events:auto}:host(.overlay-hidden){display:none}.modal-wrapper,.modal-shadow{border-radius:var(--border-radius);width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:var(--overflow);z-index:10}.modal-shadow{position:absolute;background:transparent}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--width:600px;--height:500px;--ion-safe-area-top:0px;--ion-safe-area-bottom:0px;--ion-safe-area-right:0px;--ion-safe-area-left:0px}}@media only screen and (min-width: 768px) and (min-height: 768px){:host{--width:600px;--height:600px}}.modal-handle{left:0px;right:0px;top:5px;border-radius:8px;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;position:absolute;width:36px;height:5px;-webkit-transform:translateZ(0);transform:translateZ(0);border:0;background:var(--ion-color-step-350, var(--ion-background-color-step-350, #c0c0be));cursor:pointer;z-index:11}.modal-handle::before{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;position:absolute;width:36px;height:5px;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);content:\"\"}:host(.modal-sheet){--height:calc(100% - (var(--ion-safe-area-top) + 10px))}:host(.modal-sheet) .modal-wrapper,:host(.modal-sheet) .modal-shadow{position:absolute;bottom:0}:host{--backdrop-opacity:var(--ion-backdrop-opacity, 0.4)}:host(.modal-card),:host(.modal-sheet){--border-radius:10px}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--border-radius:10px}}.modal-wrapper{-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0)}@media screen and (max-width: 767px){@supports (width: max(0px, 1px)){:host(.modal-card){--height:calc(100% - max(30px, var(--ion-safe-area-top)) - 10px)}}@supports not (width: max(0px, 1px)){:host(.modal-card){--height:calc(100% - 40px)}}:host(.modal-card) .modal-wrapper{border-start-start-radius:var(--border-radius);border-start-end-radius:var(--border-radius);border-end-end-radius:0;border-end-start-radius:0}:host(.modal-card){--backdrop-opacity:0;--width:100%;-ms-flex-align:end;align-items:flex-end}:host(.modal-card) .modal-shadow{display:none}:host(.modal-card) ion-backdrop{pointer-events:none}}@media screen and (min-width: 768px){:host(.modal-card){--width:calc(100% - 120px);--height:calc(100% - (120px + var(--ion-safe-area-top) + var(--ion-safe-area-bottom)));--max-width:720px;--max-height:1000px;--backdrop-opacity:0;--box-shadow:0px 0px 30px 10px rgba(0, 0, 0, 0.1);-webkit-transition:all 0.5s ease-in-out;transition:all 0.5s ease-in-out}:host(.modal-card) .modal-wrapper{-webkit-box-shadow:none;box-shadow:none}:host(.modal-card) .modal-shadow{-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow)}}:host(.modal-sheet) .modal-wrapper{border-start-start-radius:var(--border-radius);border-start-end-radius:var(--border-radius);border-end-end-radius:0;border-end-start-radius:0}";
19847
19629
  var IonModalIosStyle0 = modalIosCss;
19848
19630
 
19849
- const modalMdCss = ":host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--overflow:hidden;--border-radius:0;--border-width:0;--border-style:none;--border-color:transparent;--background:var(--ion-background-color, #fff);--box-shadow:none;--backdrop-opacity:0;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);contain:strict}.modal-wrapper,ion-backdrop{pointer-events:auto}:host(.overlay-hidden){display:none}.modal-wrapper,.modal-shadow{border-radius:var(--border-radius);width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:var(--overflow);z-index:10}.modal-shadow{position:absolute;background:transparent}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--width:600px;--height:500px;--ion-safe-area-top:0px;--ion-safe-area-bottom:0px;--ion-safe-area-right:0px;--ion-safe-area-left:0px}}@media only screen and (min-width: 768px) and (min-height: 768px){:host{--width:600px;--height:600px}}.modal-handle{left:0px;right:0px;top:5px;border-radius:8px;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;position:absolute;width:36px;height:5px;-webkit-transform:translateZ(0);transform:translateZ(0);border:0;background:var(--ion-color-step-350, var(--ion-background-color-step-350, #c0c0be));cursor:pointer;z-index:11}.modal-handle::before{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;position:absolute;width:36px;height:5px;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);content:\"\"}:host(.modal-sheet){--height:calc(100% - (var(--ion-safe-area-top) + 10px))}:host(.modal-sheet) .modal-wrapper,:host(.modal-sheet) .modal-shadow{position:absolute;bottom:0}:host(.modal-sheet.modal-no-expand-scroll) ion-footer{position:absolute;bottom:0;width:var(--width)}:host{--backdrop-opacity:var(--ion-backdrop-opacity, 0.32)}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--border-radius:2px;--box-shadow:0 28px 48px rgba(0, 0, 0, 0.4)}}.modal-wrapper{-webkit-transform:translate3d(0, 40px, 0);transform:translate3d(0, 40px, 0);opacity:0.01}";
19631
+ const modalMdCss = ":host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--overflow:hidden;--border-radius:0;--border-width:0;--border-style:none;--border-color:transparent;--background:var(--ion-background-color, #fff);--box-shadow:none;--backdrop-opacity:0;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);contain:strict}.modal-wrapper,ion-backdrop{pointer-events:auto}:host(.overlay-hidden){display:none}.modal-wrapper,.modal-shadow{border-radius:var(--border-radius);width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:var(--overflow);z-index:10}.modal-shadow{position:absolute;background:transparent}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--width:600px;--height:500px;--ion-safe-area-top:0px;--ion-safe-area-bottom:0px;--ion-safe-area-right:0px;--ion-safe-area-left:0px}}@media only screen and (min-width: 768px) and (min-height: 768px){:host{--width:600px;--height:600px}}.modal-handle{left:0px;right:0px;top:5px;border-radius:8px;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;position:absolute;width:36px;height:5px;-webkit-transform:translateZ(0);transform:translateZ(0);border:0;background:var(--ion-color-step-350, var(--ion-background-color-step-350, #c0c0be));cursor:pointer;z-index:11}.modal-handle::before{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;position:absolute;width:36px;height:5px;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);content:\"\"}:host(.modal-sheet){--height:calc(100% - (var(--ion-safe-area-top) + 10px))}:host(.modal-sheet) .modal-wrapper,:host(.modal-sheet) .modal-shadow{position:absolute;bottom:0}:host{--backdrop-opacity:var(--ion-backdrop-opacity, 0.32)}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--border-radius:2px;--box-shadow:0 28px 48px rgba(0, 0, 0, 0.4)}}.modal-wrapper{-webkit-transform:translate3d(0, 40px, 0);transform:translate3d(0, 40px, 0);opacity:0.01}";
19850
19632
  var IonModalMdStyle0 = modalMdCss;
19851
19633
 
19852
19634
  // TODO(FW-2832): types
@@ -19925,7 +19707,6 @@ class Modal {
19925
19707
  this.enterAnimation = undefined;
19926
19708
  this.leaveAnimation = undefined;
19927
19709
  this.breakpoints = undefined;
19928
- this.expandToScroll = true;
19929
19710
  this.initialBreakpoint = undefined;
19930
19711
  this.backdropBreakpoint = 0;
19931
19712
  this.handle = undefined;
@@ -20141,7 +19922,6 @@ class Modal {
20141
19922
  presentingEl: presentingElement,
20142
19923
  currentBreakpoint: this.initialBreakpoint,
20143
19924
  backdropBreakpoint: this.backdropBreakpoint,
20144
- expandToScroll: this.expandToScroll,
20145
19925
  });
20146
19926
  /* tslint:disable-next-line */
20147
19927
  if (typeof window !== 'undefined') {
@@ -20192,10 +19972,7 @@ class Modal {
20192
19972
  // should be in the DOM and referenced by now, except
20193
19973
  // for the presenting el
20194
19974
  const animationBuilder = this.leaveAnimation || config.get('modalLeave', iosLeaveAnimation$3);
20195
- const ani = (this.animation = animationBuilder(el, {
20196
- presentingEl: this.presentingElement,
20197
- expandToScroll: this.expandToScroll,
20198
- }));
19975
+ const ani = (this.animation = animationBuilder(el, { presentingEl: this.presentingElement }));
20199
19976
  const contentEl = findIonContent(el);
20200
19977
  if (!contentEl) {
20201
19978
  printIonContentErrorMsg(el);
@@ -20240,10 +20017,9 @@ class Modal {
20240
20017
  presentingEl: this.presentingElement,
20241
20018
  currentBreakpoint: initialBreakpoint,
20242
20019
  backdropBreakpoint,
20243
- expandToScroll: this.expandToScroll,
20244
20020
  }));
20245
20021
  ani.progressStart(true, 1);
20246
- const { gesture, moveSheetToBreakpoint } = createSheetGesture(this.el, this.backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, ani, this.sortedBreakpoints, this.expandToScroll, () => { var _a; return (_a = this.currentBreakpoint) !== null && _a !== void 0 ? _a : 0; }, () => this.sheetOnDismiss(), (breakpoint) => {
20022
+ const { gesture, moveSheetToBreakpoint } = createSheetGesture(this.el, this.backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, ani, this.sortedBreakpoints, () => { var _a; return (_a = this.currentBreakpoint) !== null && _a !== void 0 ? _a : 0; }, () => this.sheetOnDismiss(), (breakpoint) => {
20247
20023
  if (this.currentBreakpoint !== breakpoint) {
20248
20024
  this.currentBreakpoint = breakpoint;
20249
20025
  this.ionBreakpointDidChange.emit({ breakpoint });
@@ -20321,7 +20097,6 @@ class Modal {
20321
20097
  presentingEl: presentingElement,
20322
20098
  currentBreakpoint: (_a = this.currentBreakpoint) !== null && _a !== void 0 ? _a : this.initialBreakpoint,
20323
20099
  backdropBreakpoint: this.backdropBreakpoint,
20324
- expandToScroll: this.expandToScroll,
20325
20100
  });
20326
20101
  if (dismissed) {
20327
20102
  const { delegate } = this.getDelegate();
@@ -20407,23 +20182,23 @@ class Modal {
20407
20182
  return true;
20408
20183
  }
20409
20184
  render() {
20410
- const { handle, isSheetModal, presentingElement, htmlAttributes, handleBehavior, inheritedAttributes, focusTrap, expandToScroll, } = this;
20185
+ const { handle, isSheetModal, presentingElement, htmlAttributes, handleBehavior, inheritedAttributes, focusTrap } = this;
20411
20186
  const showHandle = handle !== false && isSheetModal;
20412
20187
  const mode = getIonMode$1(this);
20413
20188
  const isCardModal = presentingElement !== undefined && mode === 'ios';
20414
20189
  const isHandleCycle = handleBehavior === 'cycle';
20415
- return (hAsync(Host, Object.assign({ key: 'ff15df63e72caaeb0a4ad68e9eedeaaa7d3f3bde', "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
20190
+ return (hAsync(Host, Object.assign({ key: 'b4da5111fe4719fa450c39b2d4bd884a302a7924', "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
20416
20191
  zIndex: `${20000 + this.overlayIndex}`,
20417
- }, 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 }), hAsync("ion-backdrop", { key: '27a73655779af9d175a829d3d2d29e42fd2a63ee', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && hAsync("div", { key: '406a65080087e7895026ecc2f04e9d707439e86f', class: "modal-shadow" }), hAsync("div", Object.assign({ key: '8e410eb925374158996c82cbbd522f07d741679e',
20192
+ }, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, '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 }), hAsync("ion-backdrop", { key: 'c12dbf747e0eb914eaf1331798548ffc7e147763', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && hAsync("div", { key: 'da546ee80c6576b5acc66e959fd5009e0b9a8160', class: "modal-shadow" }), hAsync("div", Object.assign({ key: '306ebe6427440ad5f7ed36d590e562d15a503b75',
20418
20193
  /*
20419
20194
  role and aria-modal must be used on the
20420
20195
  same element. They must also be set inside the
20421
20196
  shadow DOM otherwise ion-button will not be highlighted
20422
20197
  when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
20423
20198
  */
20424
- role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (hAsync("button", { key: '7326c969ebe5a70a35e83b09d3db2bb848c90e47', class: "modal-handle",
20199
+ role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (hAsync("button", { key: 'c5d17e346fe255a7c0cacbbf15c0083f2d09c488', class: "modal-handle",
20425
20200
  // Prevents the handle from receiving keyboard focus when it does not cycle
20426
- tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle" })), hAsync("slot", { key: '0b65cdb9e337a27edf437b9e754e79f1449c217d' }))));
20201
+ tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle" })), hAsync("slot", { key: '5cc714170a00b67f3eda0cd1d6f37c1489a99c83' }))));
20427
20202
  }
20428
20203
  get el() { return getElement(this); }
20429
20204
  static get watchers() { return {
@@ -20445,7 +20220,6 @@ class Modal {
20445
20220
  "enterAnimation": [16],
20446
20221
  "leaveAnimation": [16],
20447
20222
  "breakpoints": [16],
20448
- "expandToScroll": [4, "expand-to-scroll"],
20449
20223
  "initialBreakpoint": [2, "initial-breakpoint"],
20450
20224
  "backdropBreakpoint": [2, "backdrop-breakpoint"],
20451
20225
  "handle": [4],
@@ -24790,10 +24564,10 @@ const renderProgress = (value, buffer) => {
24790
24564
  ];
24791
24565
  };
24792
24566
 
24793
- const radioIosCss = ":host{--inner-border-radius:50%;display:inline-block;position:relative;max-width:100%;min-height:inherit;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:2;-webkit-box-sizing:border-box;box-sizing:border-box}:host(.radio-disabled){pointer-events:none}.radio-icon{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;contain:layout size style}.radio-icon,.radio-inner{-webkit-box-sizing:border-box;box-sizing:border-box}input{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;margin:0;padding:0;border:0;outline:0;clip:rect(0 0 0 0);opacity:0;overflow:hidden;-webkit-appearance:none;-moz-appearance:none}:host(:focus){outline:none}:host(.in-item){-ms-flex:1 1 0px;flex:1 1 0;width:100%;height:100%}:host([slot=start]),:host([slot=end]){-ms-flex:initial;flex:initial;width:auto}.radio-wrapper{display:-ms-flexbox;display:flex;position:relative;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;height:inherit;min-height:inherit;cursor:inherit}.label-text-wrapper{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}:host(.in-item) .label-text-wrapper{margin-top:10px;margin-bottom:10px}:host(.in-item.radio-label-placement-stacked) .label-text-wrapper{margin-top:10px;margin-bottom:16px}:host(.in-item.radio-label-placement-stacked) .native-wrapper{margin-bottom:10px}.label-text-wrapper-hidden{display:none}.native-wrapper{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}:host(.radio-justify-space-between) .radio-wrapper{-ms-flex-pack:justify;justify-content:space-between}:host(.radio-justify-start) .radio-wrapper{-ms-flex-pack:start;justify-content:start}:host(.radio-justify-end) .radio-wrapper{-ms-flex-pack:end;justify-content:end}:host(.radio-alignment-start) .radio-wrapper{-ms-flex-align:start;align-items:start}:host(.radio-alignment-center) .radio-wrapper{-ms-flex-align:center;align-items:center}:host(.radio-justify-space-between),:host(.radio-justify-start),:host(.radio-justify-end),:host(.radio-alignment-start),:host(.radio-alignment-center){display:block}:host(.radio-label-placement-start) .radio-wrapper{-ms-flex-direction:row;flex-direction:row}:host(.radio-label-placement-start) .label-text-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px}:host(.radio-label-placement-end) .radio-wrapper{-ms-flex-direction:row-reverse;flex-direction:row-reverse}:host(.radio-label-placement-end) .label-text-wrapper{-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:0;margin-inline-end:0}:host(.radio-label-placement-fixed) .label-text-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px}:host(.radio-label-placement-fixed) .label-text-wrapper{-ms-flex:0 0 100px;flex:0 0 100px;width:100px;min-width:100px}:host(.radio-label-placement-stacked) .radio-wrapper{-ms-flex-direction:column;flex-direction:column}:host(.radio-label-placement-stacked) .label-text-wrapper{-webkit-transform:scale(0.75);transform:scale(0.75);margin-left:0;margin-right:0;margin-bottom:16px;max-width:calc(100% / 0.75)}:host(.radio-label-placement-stacked.radio-alignment-start) .label-text-wrapper{-webkit-transform-origin:left top;transform-origin:left top}:host-context([dir=rtl]):host(.radio-label-placement-stacked.radio-alignment-start) .label-text-wrapper,:host-context([dir=rtl]).radio-label-placement-stacked.radio-alignment-start .label-text-wrapper{-webkit-transform-origin:right top;transform-origin:right top}@supports selector(:dir(rtl)){:host(.radio-label-placement-stacked.radio-alignment-start:dir(rtl)) .label-text-wrapper{-webkit-transform-origin:right top;transform-origin:right top}}:host(.radio-label-placement-stacked.radio-alignment-center) .label-text-wrapper{-webkit-transform-origin:center top;transform-origin:center top}:host-context([dir=rtl]):host(.radio-label-placement-stacked.radio-alignment-center) .label-text-wrapper,:host-context([dir=rtl]).radio-label-placement-stacked.radio-alignment-center .label-text-wrapper{-webkit-transform-origin:calc(100% - center) top;transform-origin:calc(100% - center) top}@supports selector(:dir(rtl)){:host(.radio-label-placement-stacked.radio-alignment-center:dir(rtl)) .label-text-wrapper{-webkit-transform-origin:calc(100% - center) top;transform-origin:calc(100% - center) top}}:host{--color-checked:var(--ion-color-primary, #0054e9)}:host(.ion-color.radio-checked) .radio-inner{border-color:var(--ion-color-base)}.item-radio.item-ios ion-label{-webkit-margin-start:0;margin-inline-start:0}.radio-inner{width:33%;height:50%}:host(.radio-checked) .radio-inner{-webkit-transform:rotate(45deg);transform:rotate(45deg);border-width:0.125rem;border-top-width:0;border-left-width:0;border-style:solid;border-color:var(--color-checked)}:host(.radio-disabled){opacity:0.3}:host(.ion-focused) .radio-icon::after{border-radius:var(--inner-border-radius);top:-8px;display:block;position:absolute;width:36px;height:36px;background:var(--ion-color-primary-tint, #1a65eb);content:\"\";opacity:0.2}:host(.ion-focused) .radio-icon::after{inset-inline-start:-9px}.native-wrapper .radio-icon{width:0.9375rem;height:1.5rem}";
24567
+ const radioIosCss = ":host{--inner-border-radius:50%;display:inline-block;position:relative;max-width:100%;min-height:inherit;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:2;-webkit-box-sizing:border-box;box-sizing:border-box}:host(.radio-disabled){pointer-events:none}.radio-icon{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;contain:layout size style}.radio-icon,.radio-inner{-webkit-box-sizing:border-box;box-sizing:border-box}input{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;margin:0;padding:0;border:0;outline:0;clip:rect(0 0 0 0);opacity:0;overflow:hidden;-webkit-appearance:none;-moz-appearance:none}:host(:focus){outline:none}:host(.in-item){-ms-flex:1 1 0px;flex:1 1 0;width:100%;height:100%}:host([slot=start]),:host([slot=end]){-ms-flex:initial;flex:initial;width:auto}.radio-wrapper{display:-ms-flexbox;display:flex;position:relative;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;height:inherit;min-height:inherit;cursor:inherit}.label-text-wrapper{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}:host(.in-item) .label-text-wrapper{margin-top:10px;margin-bottom:10px}:host(.in-item.radio-label-placement-stacked) .label-text-wrapper{margin-top:10px;margin-bottom:16px}:host(.in-item.radio-label-placement-stacked) .native-wrapper{margin-bottom:10px}.label-text-wrapper-hidden{display:none}.native-wrapper{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.radio-bottom{padding-top:4px;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;font-size:0.75rem;white-space:normal}:host(.radio-label-placement-stacked) .radio-bottom{font-size:1rem}.radio-bottom .error-text{display:none;color:var(--ion-color-danger, #c5000f)}.radio-bottom .helper-text{display:block;color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d))}:host(.ion-touched.ion-invalid) .radio-bottom .error-text{display:block}:host(.ion-touched.ion-invalid) .radio-bottom .helper-text{display:none}:host(.radio-label-placement-start) .radio-wrapper{-ms-flex-direction:row;flex-direction:row}:host(.radio-label-placement-start) .label-text-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px}:host(.radio-label-placement-end) .radio-wrapper{-ms-flex-direction:row-reverse;flex-direction:row-reverse;-ms-flex-pack:start;justify-content:start}:host(.radio-label-placement-end) .label-text-wrapper{-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:0;margin-inline-end:0}:host(.radio-label-placement-fixed) .label-text-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px}:host(.radio-label-placement-fixed) .label-text-wrapper{-ms-flex:0 0 100px;flex:0 0 100px;width:100px;min-width:100px}:host(.radio-label-placement-stacked) .radio-wrapper{-ms-flex-direction:column;flex-direction:column;text-align:center}:host(.radio-label-placement-stacked) .label-text-wrapper{-webkit-transform:scale(0.75);transform:scale(0.75);margin-left:0;margin-right:0;margin-bottom:16px;max-width:calc(100% / 0.75)}:host(.radio-label-placement-stacked.radio-alignment-start) .label-text-wrapper{-webkit-transform-origin:left top;transform-origin:left top}:host-context([dir=rtl]):host(.radio-label-placement-stacked.radio-alignment-start) .label-text-wrapper,:host-context([dir=rtl]).radio-label-placement-stacked.radio-alignment-start .label-text-wrapper{-webkit-transform-origin:right top;transform-origin:right top}@supports selector(:dir(rtl)){:host(.radio-label-placement-stacked.radio-alignment-start:dir(rtl)) .label-text-wrapper{-webkit-transform-origin:right top;transform-origin:right top}}:host(.radio-label-placement-stacked.radio-alignment-center) .label-text-wrapper{-webkit-transform-origin:center top;transform-origin:center top}:host-context([dir=rtl]):host(.radio-label-placement-stacked.radio-alignment-center) .label-text-wrapper,:host-context([dir=rtl]).radio-label-placement-stacked.radio-alignment-center .label-text-wrapper{-webkit-transform-origin:calc(100% - center) top;transform-origin:calc(100% - center) top}@supports selector(:dir(rtl)){:host(.radio-label-placement-stacked.radio-alignment-center:dir(rtl)) .label-text-wrapper{-webkit-transform-origin:calc(100% - center) top;transform-origin:calc(100% - center) top}}:host(.radio-justify-space-between) .radio-wrapper{-ms-flex-pack:justify;justify-content:space-between}:host(.radio-justify-start) .radio-wrapper{-ms-flex-pack:start;justify-content:start}:host(.radio-justify-end) .radio-wrapper{-ms-flex-pack:end;justify-content:end}:host(.radio-alignment-start) .radio-wrapper{-ms-flex-align:start;align-items:start}:host(.radio-alignment-center) .radio-wrapper{-ms-flex-align:center;align-items:center}:host(.radio-justify-space-between),:host(.radio-justify-start),:host(.radio-justify-end),:host(.radio-alignment-start),:host(.radio-alignment-center){display:block}:host{--color-checked:var(--ion-color-primary, #0054e9)}:host(.ion-color.radio-checked) .radio-inner{border-color:var(--ion-color-base)}.item-radio.item-ios ion-label{-webkit-margin-start:0;margin-inline-start:0}.radio-inner{width:33%;height:50%}:host(.radio-checked) .radio-inner{-webkit-transform:rotate(45deg);transform:rotate(45deg);border-width:0.125rem;border-top-width:0;border-left-width:0;border-style:solid;border-color:var(--color-checked)}:host(.radio-disabled){opacity:0.3}:host(.ion-focused) .radio-icon::after{border-radius:var(--inner-border-radius);top:-8px;display:block;position:absolute;width:36px;height:36px;background:var(--ion-color-primary-tint, #1a65eb);content:\"\";opacity:0.2}:host(.ion-focused) .radio-icon::after{inset-inline-start:-9px}.native-wrapper .radio-icon{width:0.9375rem;height:1.5rem}";
24794
24568
  var IonRadioIosStyle0 = radioIosCss;
24795
24569
 
24796
- const radioMdCss = ":host{--inner-border-radius:50%;display:inline-block;position:relative;max-width:100%;min-height:inherit;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:2;-webkit-box-sizing:border-box;box-sizing:border-box}:host(.radio-disabled){pointer-events:none}.radio-icon{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;contain:layout size style}.radio-icon,.radio-inner{-webkit-box-sizing:border-box;box-sizing:border-box}input{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;margin:0;padding:0;border:0;outline:0;clip:rect(0 0 0 0);opacity:0;overflow:hidden;-webkit-appearance:none;-moz-appearance:none}:host(:focus){outline:none}:host(.in-item){-ms-flex:1 1 0px;flex:1 1 0;width:100%;height:100%}:host([slot=start]),:host([slot=end]){-ms-flex:initial;flex:initial;width:auto}.radio-wrapper{display:-ms-flexbox;display:flex;position:relative;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;height:inherit;min-height:inherit;cursor:inherit}.label-text-wrapper{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}:host(.in-item) .label-text-wrapper{margin-top:10px;margin-bottom:10px}:host(.in-item.radio-label-placement-stacked) .label-text-wrapper{margin-top:10px;margin-bottom:16px}:host(.in-item.radio-label-placement-stacked) .native-wrapper{margin-bottom:10px}.label-text-wrapper-hidden{display:none}.native-wrapper{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}:host(.radio-justify-space-between) .radio-wrapper{-ms-flex-pack:justify;justify-content:space-between}:host(.radio-justify-start) .radio-wrapper{-ms-flex-pack:start;justify-content:start}:host(.radio-justify-end) .radio-wrapper{-ms-flex-pack:end;justify-content:end}:host(.radio-alignment-start) .radio-wrapper{-ms-flex-align:start;align-items:start}:host(.radio-alignment-center) .radio-wrapper{-ms-flex-align:center;align-items:center}:host(.radio-justify-space-between),:host(.radio-justify-start),:host(.radio-justify-end),:host(.radio-alignment-start),:host(.radio-alignment-center){display:block}:host(.radio-label-placement-start) .radio-wrapper{-ms-flex-direction:row;flex-direction:row}:host(.radio-label-placement-start) .label-text-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px}:host(.radio-label-placement-end) .radio-wrapper{-ms-flex-direction:row-reverse;flex-direction:row-reverse}:host(.radio-label-placement-end) .label-text-wrapper{-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:0;margin-inline-end:0}:host(.radio-label-placement-fixed) .label-text-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px}:host(.radio-label-placement-fixed) .label-text-wrapper{-ms-flex:0 0 100px;flex:0 0 100px;width:100px;min-width:100px}:host(.radio-label-placement-stacked) .radio-wrapper{-ms-flex-direction:column;flex-direction:column}:host(.radio-label-placement-stacked) .label-text-wrapper{-webkit-transform:scale(0.75);transform:scale(0.75);margin-left:0;margin-right:0;margin-bottom:16px;max-width:calc(100% / 0.75)}:host(.radio-label-placement-stacked.radio-alignment-start) .label-text-wrapper{-webkit-transform-origin:left top;transform-origin:left top}:host-context([dir=rtl]):host(.radio-label-placement-stacked.radio-alignment-start) .label-text-wrapper,:host-context([dir=rtl]).radio-label-placement-stacked.radio-alignment-start .label-text-wrapper{-webkit-transform-origin:right top;transform-origin:right top}@supports selector(:dir(rtl)){:host(.radio-label-placement-stacked.radio-alignment-start:dir(rtl)) .label-text-wrapper{-webkit-transform-origin:right top;transform-origin:right top}}:host(.radio-label-placement-stacked.radio-alignment-center) .label-text-wrapper{-webkit-transform-origin:center top;transform-origin:center top}:host-context([dir=rtl]):host(.radio-label-placement-stacked.radio-alignment-center) .label-text-wrapper,:host-context([dir=rtl]).radio-label-placement-stacked.radio-alignment-center .label-text-wrapper{-webkit-transform-origin:calc(100% - center) top;transform-origin:calc(100% - center) top}@supports selector(:dir(rtl)){:host(.radio-label-placement-stacked.radio-alignment-center:dir(rtl)) .label-text-wrapper{-webkit-transform-origin:calc(100% - center) top;transform-origin:calc(100% - center) top}}:host{--color:rgb(var(--ion-text-color-rgb, 0, 0, 0), 0.6);--color-checked:var(--ion-color-primary, #0054e9);--border-width:0.125rem;--border-style:solid;--border-radius:50%}:host(.ion-color) .radio-inner{background:var(--ion-color-base)}:host(.ion-color.radio-checked) .radio-icon{border-color:var(--ion-color-base)}.radio-icon{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;border-radius:var(--border-radius);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--color)}.radio-inner{border-radius:var(--inner-border-radius);width:calc(50% + var(--border-width));height:calc(50% + var(--border-width));-webkit-transform:scale3d(0, 0, 0);transform:scale3d(0, 0, 0);-webkit-transition:-webkit-transform 280ms cubic-bezier(0.4, 0, 0.2, 1);transition:-webkit-transform 280ms cubic-bezier(0.4, 0, 0.2, 1);transition:transform 280ms cubic-bezier(0.4, 0, 0.2, 1);transition:transform 280ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 280ms cubic-bezier(0.4, 0, 0.2, 1);background:var(--color-checked)}:host(.radio-checked) .radio-icon{border-color:var(--color-checked)}:host(.radio-checked) .radio-inner{-webkit-transform:scale3d(1, 1, 1);transform:scale3d(1, 1, 1)}:host(.radio-disabled) .label-text-wrapper{opacity:0.38}:host(.radio-disabled) .native-wrapper{opacity:0.63}:host(.ion-focused) .radio-icon::after{border-radius:var(--inner-border-radius);display:block;position:absolute;width:36px;height:36px;background:var(--ion-color-primary-tint, #1a65eb);content:\"\";opacity:0.2}.native-wrapper .radio-icon{width:1.25rem;height:1.25rem}";
24570
+ const radioMdCss = ":host{--inner-border-radius:50%;display:inline-block;position:relative;max-width:100%;min-height:inherit;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:2;-webkit-box-sizing:border-box;box-sizing:border-box}:host(.radio-disabled){pointer-events:none}.radio-icon{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;contain:layout size style}.radio-icon,.radio-inner{-webkit-box-sizing:border-box;box-sizing:border-box}input{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;margin:0;padding:0;border:0;outline:0;clip:rect(0 0 0 0);opacity:0;overflow:hidden;-webkit-appearance:none;-moz-appearance:none}:host(:focus){outline:none}:host(.in-item){-ms-flex:1 1 0px;flex:1 1 0;width:100%;height:100%}:host([slot=start]),:host([slot=end]){-ms-flex:initial;flex:initial;width:auto}.radio-wrapper{display:-ms-flexbox;display:flex;position:relative;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;height:inherit;min-height:inherit;cursor:inherit}.label-text-wrapper{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}:host(.in-item) .label-text-wrapper{margin-top:10px;margin-bottom:10px}:host(.in-item.radio-label-placement-stacked) .label-text-wrapper{margin-top:10px;margin-bottom:16px}:host(.in-item.radio-label-placement-stacked) .native-wrapper{margin-bottom:10px}.label-text-wrapper-hidden{display:none}.native-wrapper{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.radio-bottom{padding-top:4px;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;font-size:0.75rem;white-space:normal}:host(.radio-label-placement-stacked) .radio-bottom{font-size:1rem}.radio-bottom .error-text{display:none;color:var(--ion-color-danger, #c5000f)}.radio-bottom .helper-text{display:block;color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d))}:host(.ion-touched.ion-invalid) .radio-bottom .error-text{display:block}:host(.ion-touched.ion-invalid) .radio-bottom .helper-text{display:none}:host(.radio-label-placement-start) .radio-wrapper{-ms-flex-direction:row;flex-direction:row}:host(.radio-label-placement-start) .label-text-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px}:host(.radio-label-placement-end) .radio-wrapper{-ms-flex-direction:row-reverse;flex-direction:row-reverse;-ms-flex-pack:start;justify-content:start}:host(.radio-label-placement-end) .label-text-wrapper{-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:0;margin-inline-end:0}:host(.radio-label-placement-fixed) .label-text-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px}:host(.radio-label-placement-fixed) .label-text-wrapper{-ms-flex:0 0 100px;flex:0 0 100px;width:100px;min-width:100px}:host(.radio-label-placement-stacked) .radio-wrapper{-ms-flex-direction:column;flex-direction:column;text-align:center}:host(.radio-label-placement-stacked) .label-text-wrapper{-webkit-transform:scale(0.75);transform:scale(0.75);margin-left:0;margin-right:0;margin-bottom:16px;max-width:calc(100% / 0.75)}:host(.radio-label-placement-stacked.radio-alignment-start) .label-text-wrapper{-webkit-transform-origin:left top;transform-origin:left top}:host-context([dir=rtl]):host(.radio-label-placement-stacked.radio-alignment-start) .label-text-wrapper,:host-context([dir=rtl]).radio-label-placement-stacked.radio-alignment-start .label-text-wrapper{-webkit-transform-origin:right top;transform-origin:right top}@supports selector(:dir(rtl)){:host(.radio-label-placement-stacked.radio-alignment-start:dir(rtl)) .label-text-wrapper{-webkit-transform-origin:right top;transform-origin:right top}}:host(.radio-label-placement-stacked.radio-alignment-center) .label-text-wrapper{-webkit-transform-origin:center top;transform-origin:center top}:host-context([dir=rtl]):host(.radio-label-placement-stacked.radio-alignment-center) .label-text-wrapper,:host-context([dir=rtl]).radio-label-placement-stacked.radio-alignment-center .label-text-wrapper{-webkit-transform-origin:calc(100% - center) top;transform-origin:calc(100% - center) top}@supports selector(:dir(rtl)){:host(.radio-label-placement-stacked.radio-alignment-center:dir(rtl)) .label-text-wrapper{-webkit-transform-origin:calc(100% - center) top;transform-origin:calc(100% - center) top}}:host(.radio-justify-space-between) .radio-wrapper{-ms-flex-pack:justify;justify-content:space-between}:host(.radio-justify-start) .radio-wrapper{-ms-flex-pack:start;justify-content:start}:host(.radio-justify-end) .radio-wrapper{-ms-flex-pack:end;justify-content:end}:host(.radio-alignment-start) .radio-wrapper{-ms-flex-align:start;align-items:start}:host(.radio-alignment-center) .radio-wrapper{-ms-flex-align:center;align-items:center}:host(.radio-justify-space-between),:host(.radio-justify-start),:host(.radio-justify-end),:host(.radio-alignment-start),:host(.radio-alignment-center){display:block}:host{--color:rgb(var(--ion-text-color-rgb, 0, 0, 0), 0.6);--color-checked:var(--ion-color-primary, #0054e9);--border-width:0.125rem;--border-style:solid;--border-radius:50%}:host(.ion-color) .radio-inner{background:var(--ion-color-base)}:host(.ion-color.radio-checked) .radio-icon{border-color:var(--ion-color-base)}.radio-icon{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;border-radius:var(--border-radius);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--color)}.radio-inner{border-radius:var(--inner-border-radius);width:calc(50% + var(--border-width));height:calc(50% + var(--border-width));-webkit-transform:scale3d(0, 0, 0);transform:scale3d(0, 0, 0);-webkit-transition:-webkit-transform 280ms cubic-bezier(0.4, 0, 0.2, 1);transition:-webkit-transform 280ms cubic-bezier(0.4, 0, 0.2, 1);transition:transform 280ms cubic-bezier(0.4, 0, 0.2, 1);transition:transform 280ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 280ms cubic-bezier(0.4, 0, 0.2, 1);background:var(--color-checked)}:host(.radio-checked) .radio-icon{border-color:var(--color-checked)}:host(.radio-checked) .radio-inner{-webkit-transform:scale3d(1, 1, 1);transform:scale3d(1, 1, 1)}:host(.radio-disabled) .label-text-wrapper{opacity:0.38}:host(.radio-disabled) .native-wrapper{opacity:0.63}:host(.ion-focused) .radio-icon::after{border-radius:var(--inner-border-radius);display:block;position:absolute;width:36px;height:36px;background:var(--ion-color-primary-tint, #1a65eb);content:\"\";opacity:0.2}.native-wrapper .radio-icon{width:1.25rem;height:1.25rem}";
24797
24571
  var IonRadioMdStyle0 = radioMdCss;
24798
24572
 
24799
24573
  /**
@@ -24804,6 +24578,9 @@ var IonRadioMdStyle0 = radioMdCss;
24804
24578
  * @part container - The container for the radio mark.
24805
24579
  * @part label - The label text describing the radio.
24806
24580
  * @part mark - The checkmark or dot used to indicate the checked state.
24581
+ * @part supporting-text - Supporting text displayed beneath the radio label.
24582
+ * @part helper-text - Supporting text displayed beneath the radio label when the radio is valid.
24583
+ * @part error-text - Supporting text displayed beneath the radio label when the radio is invalid and touched.
24807
24584
  */
24808
24585
  class Radio {
24809
24586
  constructor(hostRef) {
@@ -24811,6 +24588,8 @@ class Radio {
24811
24588
  this.ionFocus = createEvent(this, "ionFocus", 7);
24812
24589
  this.ionBlur = createEvent(this, "ionBlur", 7);
24813
24590
  this.inputId = `ion-rb-${radioButtonIds++}`;
24591
+ this.helperTextId = `${this.inputId}-helper-text`;
24592
+ this.errorTextId = `${this.inputId}-error-text`;
24814
24593
  this.radioGroup = null;
24815
24594
  this.updateState = () => {
24816
24595
  if (this.radioGroup) {
@@ -24850,6 +24629,8 @@ class Radio {
24850
24629
  this.color = undefined;
24851
24630
  this.name = this.inputId;
24852
24631
  this.disabled = false;
24632
+ this.errorText = undefined;
24633
+ this.helperText = undefined;
24853
24634
  this.value = undefined;
24854
24635
  this.labelPlacement = 'start';
24855
24636
  this.justify = undefined;
@@ -24909,11 +24690,37 @@ class Radio {
24909
24690
  renderRadioControl() {
24910
24691
  return (hAsync("div", { class: "radio-icon", part: "container" }, hAsync("div", { class: "radio-inner", part: "mark" }), hAsync("div", { class: "radio-ripple" })));
24911
24692
  }
24693
+ getHintTextID() {
24694
+ const { el, helperText, errorText, helperTextId, errorTextId } = this;
24695
+ if (el.classList.contains('ion-touched') && el.classList.contains('ion-invalid') && errorText) {
24696
+ return errorTextId;
24697
+ }
24698
+ if (helperText) {
24699
+ return helperTextId;
24700
+ }
24701
+ return undefined;
24702
+ }
24703
+ /**
24704
+ * Responsible for rendering helper text and error text.
24705
+ * This element should only be rendered if hint text is set.
24706
+ */
24707
+ renderHintText() {
24708
+ const { helperText, errorText, helperTextId, errorTextId } = this;
24709
+ /**
24710
+ * undefined and empty string values should
24711
+ * be treated as not having helper/error text.
24712
+ */
24713
+ const hasHintText = !!helperText || !!errorText;
24714
+ if (!hasHintText) {
24715
+ return;
24716
+ }
24717
+ return (hAsync("div", { class: "radio-bottom" }, hAsync("div", { id: helperTextId, class: "helper-text", part: "supporting-text helper-text" }, helperText), hAsync("div", { id: errorTextId, class: "error-text", part: "supporting-text error-text" }, errorText)));
24718
+ }
24912
24719
  render() {
24913
24720
  const { checked, disabled, color, el, justify, labelPlacement, hasLabel, buttonTabindex, alignment } = this;
24914
24721
  const mode = getIonMode$1(this);
24915
24722
  const inItem = hostContext('ion-item', el);
24916
- return (hAsync(Host, { key: '5a0adab55ad009305de4856fa1b9f93f2279a734', onFocus: this.onFocus, onBlur: this.onBlur, onClick: this.onClick, class: createColorClasses$1(color, {
24723
+ return (hAsync(Host, { key: '4f01024a74c1846438372c40519df1044f5b12b9', onFocus: this.onFocus, onBlur: this.onBlur, onClick: this.onClick, class: createColorClasses$1(color, {
24917
24724
  [mode]: true,
24918
24725
  'in-item': inItem,
24919
24726
  'radio-checked': checked,
@@ -24924,10 +24731,10 @@ class Radio {
24924
24731
  // Focus and active styling should not apply when the radio is in an item
24925
24732
  'ion-activatable': !inItem,
24926
24733
  'ion-focusable': !inItem,
24927
- }), role: "radio", "aria-checked": checked ? 'true' : 'false', "aria-disabled": disabled ? 'true' : null, tabindex: buttonTabindex }, hAsync("label", { key: 'f5673a798e6d87868339f046445f707e1d93b7b6', class: "radio-wrapper" }, hAsync("div", { key: 'e9190c06f75a171cab63e3f74ccf771c3ed87005', class: {
24734
+ }), role: "radio", "aria-checked": checked ? 'true' : 'false', "aria-disabled": disabled ? 'true' : null, "aria-describedby": this.getHintTextID(), "aria-invalid": this.getHintTextID() === this.errorTextId, tabindex: buttonTabindex }, hAsync("label", { key: '59dc0343534e626692f3b71b32204c1b2b25d40a', class: "radio-wrapper" }, hAsync("div", { key: '26d7d3faf1b02bb138fb2c46f83e824962b6b92e', class: {
24928
24735
  'label-text-wrapper': true,
24929
24736
  'label-text-wrapper-hidden': !hasLabel,
24930
- }, part: "label" }, hAsync("slot", { key: '6cedf4e7b3bd03e4a635727dd7b6094bab64af64' })), hAsync("div", { key: '26dd48d9d2848b7f100b732abdc4a3171adde483', class: "native-wrapper" }, this.renderRadioControl()))));
24737
+ }, part: "label" }, hAsync("slot", { key: '9c3d8bb0c5cd3ce94d1e661d89587cf67c522bc0' }), this.renderHintText()), hAsync("div", { key: '3183f79e2977ee001e69c23f73073555744281d8', class: "native-wrapper" }, this.renderRadioControl()))));
24931
24738
  }
24932
24739
  get el() { return getElement(this); }
24933
24740
  static get watchers() { return {
@@ -24944,6 +24751,8 @@ class Radio {
24944
24751
  "color": [513],
24945
24752
  "name": [1],
24946
24753
  "disabled": [4],
24754
+ "errorText": [1, "error-text"],
24755
+ "helperText": [1, "helper-text"],
24947
24756
  "value": [8],
24948
24757
  "labelPlacement": [1, "label-placement"],
24949
24758
  "justify": [1],
@@ -29889,7 +29698,6 @@ class Select {
29889
29698
  this.expandedIcon = undefined;
29890
29699
  this.shape = undefined;
29891
29700
  this.value = undefined;
29892
- this.required = false;
29893
29701
  }
29894
29702
  styleChanged() {
29895
29703
  this.emitStyle();
@@ -30374,8 +30182,8 @@ class Select {
30374
30182
  return renderedLabel;
30375
30183
  }
30376
30184
  renderListbox() {
30377
- const { disabled, inputId, isExpanded, required } = this;
30378
- return (hAsync("button", { disabled: disabled, id: inputId, "aria-label": this.ariaLabel, "aria-haspopup": "dialog", "aria-expanded": `${isExpanded}`, "aria-required": `${required}`, onFocus: this.onFocus, onBlur: this.onBlur, ref: (focusEl) => (this.focusEl = focusEl) }));
30185
+ const { disabled, inputId, isExpanded } = this;
30186
+ return (hAsync("button", { disabled: disabled, id: inputId, "aria-label": this.ariaLabel, "aria-haspopup": "dialog", "aria-expanded": `${isExpanded}`, onFocus: this.onFocus, onBlur: this.onBlur, ref: (focusEl) => (this.focusEl = focusEl) }));
30379
30187
  }
30380
30188
  render() {
30381
30189
  const { disabled, el, isExpanded, expandedIcon, labelPlacement, justify, placeholder, fill, shape, name, value } = this;
@@ -30406,7 +30214,7 @@ class Select {
30406
30214
  * TODO(FW-5592): Remove hasStartEndSlots condition
30407
30215
  */
30408
30216
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || isExpanded || hasStartEndSlots));
30409
- return (hAsync(Host, { key: '491cf1b0e3aa31e7c9cfad3e87d83eb54272312a', onClick: this.onClick, class: createColorClasses$1(this.color, {
30217
+ return (hAsync(Host, { key: '144dfa5c49549a74fe516c65b9b8104a477ac789', onClick: this.onClick, class: createColorClasses$1(this.color, {
30410
30218
  [mode]: true,
30411
30219
  'in-item': inItem,
30412
30220
  'in-item-color': hostContext('ion-item.ion-color', el),
@@ -30422,7 +30230,7 @@ class Select {
30422
30230
  [`select-justify-${justify}`]: justifyEnabled,
30423
30231
  [`select-shape-${shape}`]: shape !== undefined,
30424
30232
  [`select-label-placement-${labelPlacement}`]: true,
30425
- }) }, hAsync("label", { key: '07bf3cb57bd1121383d8c746e3ac49da38300082', class: "select-wrapper", id: "select-label" }, this.renderLabelContainer(), hAsync("div", { key: '884facd18342797576bbacc761d18d83c52762e3', class: "select-wrapper-inner" }, hAsync("slot", { key: 'c4f2a2a7a76f52db15f9a0b806017caea443c47a', name: "start" }), hAsync("div", { key: '235cf383f268cc74412722cd31e246cbd4c2abe5', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), hAsync("slot", { key: '1481302e11c494d49dfd80a7aaf743f7e851558f', name: "end" }), !hasFloatingOrStackedLabel && this.renderSelectIcon()), hasFloatingOrStackedLabel && this.renderSelectIcon(), shouldRenderHighlight && hAsync("div", { key: '8a45ea9280651695c8e5435f266c286f3e3f6a18', class: "select-highlight" }))));
30233
+ }) }, hAsync("label", { key: '0edcfcbac575a9dccc77991531b6980d1caebf42', class: "select-wrapper", id: "select-label" }, this.renderLabelContainer(), hAsync("div", { key: '348151d90cb093f5d21c7d4a834264ac4a312c40', class: "select-wrapper-inner" }, hAsync("slot", { key: '8b7708c7f81217435c58276da0c08bba766d9500', name: "start" }), hAsync("div", { key: '10c520a335da0a0d1cf40f9365597beb244d3b48', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), hAsync("slot", { key: '0f15c40a5495e98e29d2a21ba21e0bc6f1c0125a', name: "end" }), !hasFloatingOrStackedLabel && this.renderSelectIcon()), hasFloatingOrStackedLabel && this.renderSelectIcon(), shouldRenderHighlight && hAsync("div", { key: 'c87faad2e5ebf7f9453397d7ede43abd64d21294', class: "select-highlight" }))));
30426
30234
  }
30427
30235
  get el() { return getElement(this); }
30428
30236
  static get watchers() { return {
@@ -30458,7 +30266,6 @@ class Select {
30458
30266
  "expandedIcon": [1, "expanded-icon"],
30459
30267
  "shape": [1],
30460
30268
  "value": [1032],
30461
- "required": [4],
30462
30269
  "isExpanded": [32],
30463
30270
  "open": [64]
30464
30271
  },
@@ -31015,10 +30822,10 @@ class Tab {
31015
30822
  }
31016
30823
  render() {
31017
30824
  const { tab, active, component } = this;
31018
- return (hAsync(Host, { key: 'c8d049c74c66a2748f3ec81d2855446acf114abe', role: "tabpanel", "aria-hidden": !active ? 'true' : null, "aria-labelledby": `tab-button-${tab}`, class: {
30825
+ return (hAsync(Host, { key: 'cb75d0877979b3b8df8f7e1952bfa9677da1eaa5', role: "tabpanel", "aria-hidden": !active ? 'true' : null, "aria-labelledby": `tab-button-${tab}`, class: {
31019
30826
  'ion-page': component === undefined,
31020
30827
  'tab-hidden': !active,
31021
- } }, hAsync("slot", { key: 'fba1ddc9aefb2711e13d43734f606b493ce8380a' })));
30828
+ } }, hAsync("slot", { key: '37fbb7b7a6b03eb93b1dacd2dc1025b78eb2aa6b' })));
31022
30829
  }
31023
30830
  get el() { return getElement(this); }
31024
30831
  static get watchers() { return {
@@ -31210,7 +31017,7 @@ class TabButton {
31210
31017
  'ion-activatable': true,
31211
31018
  'ion-selectable': true,
31212
31019
  'ion-focusable': true,
31213
- } }, hAsync("a", Object.assign({ key: '2f32e70232c7872b14e9ead1d1c31c98ad3577b4' }, attrs, { class: "button-native", part: "native", role: "tab", "aria-selected": selected ? 'true' : null, "aria-disabled": disabled ? 'true' : null, tabindex: disabled ? '-1' : '0' }, inheritedAttributes), hAsync("span", { key: '5c9467b16e36a526a20f460980ec45022f464c3a', class: "button-inner" }, hAsync("slot", { key: 'eefd60fac84ff01366a0f82f6ad71782ee7351e9' })), mode === 'md' && hAsync("ion-ripple-effect", { key: '0d3452ae46e47f2d50c0198668c42e00e1a4d7bf', type: "unbounded" }))));
31020
+ } }, hAsync("a", Object.assign({ key: '1db09d861b67ff292018fb4b0dc7b85bd4677eb8' }, attrs, { class: "button-native", part: "native", role: "tab", "aria-selected": selected ? 'true' : null, "aria-disabled": disabled ? 'true' : null, tabindex: disabled ? '-1' : undefined }, inheritedAttributes), hAsync("span", { key: '4381eafcb27e8c7bb0d86d4f115ceb0caf03b9b4', class: "button-inner" }, hAsync("slot", { key: '1981135f6fbb88376c1bd923c55c70fe8b5c5159' })), mode === 'md' && hAsync("ion-ripple-effect", { key: '0509bc7155d055d1ed710600e9cf4df135881491', type: "unbounded" }))));
31214
31021
  }
31215
31022
  get el() { return getElement(this); }
31216
31023
  static get style() { return {
@@ -31252,7 +31059,6 @@ class Tabs {
31252
31059
  this.ionTabsDidChange = createEvent(this, "ionTabsDidChange", 3);
31253
31060
  this.transitioning = false;
31254
31061
  this.onTabClicked = (ev) => {
31255
- console.log("onTabClicked");
31256
31062
  const { href, tab } = ev.detail;
31257
31063
  if (this.useRouter && href !== undefined) {
31258
31064
  const router = document.querySelector('ion-router');
@@ -31387,7 +31193,7 @@ class Tabs {
31387
31193
  return Array.from(this.el.querySelectorAll('ion-tab'));
31388
31194
  }
31389
31195
  render() {
31390
- return (hAsync(Host, { key: '6c9bb24efdbb7d2135097dbaf200b9d9a106eba0', onIonTabButtonClick: this.onTabClicked }, hAsync("slot", { key: '7e29a9895b183269b3e293c3f70c9644324215ad', name: "top" }), hAsync("div", { key: '02d3c0685ff01dff1a0e0663aaec55552a24acd9', class: "tabs-inner" }, hAsync("slot", { key: 'e7b6928b811caae14f8981b1da65d1d487bd74e8' })), hAsync("slot", { key: 'd4464bcf631c7ff7afc96d95942a4af1fda64919', name: "bottom" })));
31196
+ return (hAsync(Host, { key: 'e01ccf6bfaccad094515be50e407399c733fc226', onIonTabButtonClick: this.onTabClicked }, hAsync("slot", { key: '38d2d01dbfd8a08f01e6f0e27274b21d75424e37', name: "top" }), hAsync("div", { key: '7e894f0f423e2d43e1c68daff5f9f6c442fad237', class: "tabs-inner" }, hAsync("slot", { key: 'df16be529a0370a26d0adf850530b31607507c23' })), hAsync("slot", { key: '44642e1cb24c3281c43db75fd69a32fe0defe40a', name: "bottom" })));
31391
31197
  }
31392
31198
  get el() { return getElement(this); }
31393
31199
  static get style() { return IonTabsStyle0; }
@@ -32856,7 +32662,6 @@ class Toggle {
32856
32662
  this.labelPlacement = 'start';
32857
32663
  this.justify = undefined;
32858
32664
  this.alignment = undefined;
32859
- this.required = false;
32860
32665
  }
32861
32666
  disabledChanged() {
32862
32667
  if (this.gesture) {
@@ -32938,12 +32743,12 @@ class Toggle {
32938
32743
  return this.el.textContent !== '';
32939
32744
  }
32940
32745
  render() {
32941
- const { activated, color, checked, disabled, el, justify, labelPlacement, inputId, name, alignment, required } = this;
32746
+ const { activated, color, checked, disabled, el, justify, labelPlacement, inputId, name, alignment } = this;
32942
32747
  const mode = getIonMode$1(this);
32943
32748
  const value = this.getValue();
32944
32749
  const rtl = isRTL$1(el) ? 'rtl' : 'ltr';
32945
32750
  renderHiddenInput(true, el, name, checked ? value : '', disabled);
32946
- return (hAsync(Host, { key: 'ed75573caa6e37011f1453dd7f723fb9bd8a3656', onClick: this.onClick, class: createColorClasses$1(color, {
32751
+ return (hAsync(Host, { key: 'f52195ec3bc14c024647cb41319c32a4cd330e19', onClick: this.onClick, class: createColorClasses$1(color, {
32947
32752
  [mode]: true,
32948
32753
  'in-item': hostContext('ion-item', el),
32949
32754
  'toggle-activated': activated,
@@ -32953,10 +32758,10 @@ class Toggle {
32953
32758
  [`toggle-alignment-${alignment}`]: alignment !== undefined,
32954
32759
  [`toggle-label-placement-${labelPlacement}`]: true,
32955
32760
  [`toggle-${rtl}`]: true,
32956
- }) }, hAsync("label", { key: '484860e2a33f4d123904edb96159f0e1972d3add', class: "toggle-wrapper" }, hAsync("input", Object.assign({ key: '360b53080aacfd99a9ff60ffb5219816bd4163ee', type: "checkbox", role: "switch", "aria-checked": `${checked}`, checked: checked, disabled: disabled, id: inputId, onFocus: () => this.onFocus(), onBlur: () => this.onBlur(), ref: (focusEl) => (this.focusEl = focusEl), required: required }, this.inheritedAttributes)), hAsync("div", { key: 'f7239fa668fe11257239ea30cf0198e4f3274f6b', class: {
32761
+ }) }, hAsync("label", { key: 'f8b3a215ad85b2cee611ad63449b584e1640f27f', class: "toggle-wrapper" }, hAsync("input", Object.assign({ key: 'f387b1ea840737a9737917e516834c887be99c09', type: "checkbox", role: "switch", "aria-checked": `${checked}`, checked: checked, disabled: disabled, id: inputId, onFocus: () => this.onFocus(), onBlur: () => this.onBlur(), ref: (focusEl) => (this.focusEl = focusEl) }, this.inheritedAttributes)), hAsync("div", { key: '936af880db59fe377cd2de9101eb28a1c4fb8914', class: {
32957
32762
  'label-text-wrapper': true,
32958
32763
  'label-text-wrapper-hidden': !this.hasLabel,
32959
- }, part: "label" }, hAsync("slot", { key: '9495a4a39889822ee68e0d89dc5a2f863d1feb3c' })), hAsync("div", { key: '55f1eb08c4b705e94fbcf02220bbe1d292f06155', class: "native-wrapper" }, this.renderToggleControl()))));
32764
+ }, part: "label" }, hAsync("slot", { key: '80a6672e2e792c15011a9496dcd75363cdba31c6' })), hAsync("div", { key: '2b2b318b38ab27b194c0dab4cecd77d9d780f2ca', class: "native-wrapper" }, this.renderToggleControl()))));
32960
32765
  }
32961
32766
  get el() { return getElement(this); }
32962
32767
  static get watchers() { return {
@@ -32979,7 +32784,6 @@ class Toggle {
32979
32784
  "labelPlacement": [1, "label-placement"],
32980
32785
  "justify": [1],
32981
32786
  "alignment": [1],
32982
- "required": [4],
32983
32787
  "activated": [32]
32984
32788
  },
32985
32789
  "$listeners$": undefined,