voyager-ionic-core 8.8.5 → 8.8.8
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.
- package/components/ion-action-sheet.js +1 -1
- package/components/ion-alert.js +1 -1
- package/components/ion-app.js +1 -1
- package/components/ion-content.js +1 -1
- package/components/ion-datetime.js +1 -1
- package/components/ion-modal.js +1 -1
- package/components/ion-segment.js +1 -1
- package/components/ion-select-modal.js +1 -1
- package/components/ion-select.js +1 -1
- package/components/{p-0z8QSI5b.js → p-BeXMwcl5.js} +1 -1
- package/components/p-CEmXdzGo.js +4 -0
- package/components/{p-BlNv564p.js → p-Cf6Z1pmL.js} +1 -1
- package/components/{p-D3Ti70Hx.js → p-DZhbcvo5.js} +1 -1
- package/components/{p-BGHGpkPX.js → p-Q1-Xy3As.js} +1 -1
- package/components/p-ZuZOauwD.js +4 -0
- package/dist/cjs/{input-shims-Dl5cnc_e.js → input-shims-CPL2J8F-.js} +0 -6
- package/dist/cjs/ion-action-sheet.cjs.entry.js +3 -3
- package/dist/cjs/ion-alert.cjs.entry.js +66 -4
- package/dist/cjs/ion-app_8.cjs.entry.js +2 -2
- package/dist/cjs/ion-datetime_3.cjs.entry.js +30 -14
- package/dist/cjs/ion-modal.cjs.entry.js +9 -9
- package/dist/cjs/ion-segment_2.cjs.entry.js +6 -2
- package/dist/cjs/ionic.cjs.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/components/action-sheet/action-sheet.js +3 -3
- package/dist/collection/components/alert/alert.js +71 -4
- package/dist/collection/components/content/content.css +1 -1
- package/dist/collection/components/datetime/datetime.js +30 -14
- package/dist/collection/components/modal/modal.js +9 -9
- package/dist/collection/components/segment/segment.js +6 -2
- package/dist/collection/utils/input-shims/hacks/scroll-assist.js +0 -7
- package/dist/docs.json +1 -1
- package/dist/esm/{input-shims-AaDhOpKN.js → input-shims-DbrgeeNb.js} +1 -7
- package/dist/esm/ion-action-sheet.entry.js +3 -3
- package/dist/esm/ion-alert.entry.js +66 -4
- package/dist/esm/ion-app_8.entry.js +2 -2
- package/dist/esm/ion-datetime_3.entry.js +30 -14
- package/dist/esm/ion-modal.entry.js +9 -9
- package/dist/esm/ion-segment_2.entry.js +6 -2
- package/dist/esm/ionic.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/{p-cb27fe68.entry.js → p-050873ec.entry.js} +1 -1
- package/dist/ionic/p-164f79c4.entry.js +4 -0
- package/dist/ionic/p-1ca9c36b.entry.js +4 -0
- package/dist/ionic/{p-268a3397.entry.js → p-7761ef65.entry.js} +1 -1
- package/dist/ionic/p-DcSNwXfb.js +4 -0
- package/dist/ionic/p-a893c61c.entry.js +4 -0
- package/dist/ionic/p-f3e7b155.entry.js +4 -0
- package/dist/types/components/alert/alert.d.ts +5 -0
- package/dist/types/components/datetime/datetime.d.ts +7 -0
- package/dist/types/components/modal/modal.d.ts +3 -3
- package/hydrate/index.js +116 -33
- package/hydrate/index.mjs +116 -33
- package/package.json +4 -4
- package/components/p-CH0NYjKq.js +0 -4
- package/components/p-Cwv-vmkN.js +0 -4
- package/dist/ionic/p-1b02923f.entry.js +0 -4
- package/dist/ionic/p-4c67ce4c.entry.js +0 -4
- package/dist/ionic/p-9cdbabbb.entry.js +0 -4
- package/dist/ionic/p-CYvM5g3q.js +0 -4
- package/dist/ionic/p-ce2edb36.entry.js +0 -4
|
@@ -28,6 +28,7 @@ export class Alert {
|
|
|
28
28
|
this.customHTMLEnabled = config.get('innerHTMLTemplatesEnabled', ENABLE_HTML_CONTENT_DEFAULT);
|
|
29
29
|
this.processedInputs = [];
|
|
30
30
|
this.processedButtons = [];
|
|
31
|
+
this.isButtonGroupWrapped = false;
|
|
31
32
|
this.presented = false;
|
|
32
33
|
/** @internal */
|
|
33
34
|
this.hasController = false;
|
|
@@ -152,6 +153,13 @@ export class Alert {
|
|
|
152
153
|
this.processedButtons = buttons.map((btn) => {
|
|
153
154
|
return typeof btn === 'string' ? { text: btn, role: btn.toLowerCase() === 'cancel' ? 'cancel' : undefined } : btn;
|
|
154
155
|
});
|
|
156
|
+
/**
|
|
157
|
+
* Reset wrap state so the new button set can be re-evaluated. Without this,
|
|
158
|
+
* a previously-latched vertical layout would persist even if the new buttons
|
|
159
|
+
* fit horizontally.
|
|
160
|
+
*/
|
|
161
|
+
this.isButtonGroupWrapped = false;
|
|
162
|
+
this.checkButtonGroupWrap();
|
|
155
163
|
}
|
|
156
164
|
inputsChanged() {
|
|
157
165
|
const inputs = this.inputs;
|
|
@@ -192,6 +200,12 @@ export class Alert {
|
|
|
192
200
|
connectedCallback() {
|
|
193
201
|
prepareOverlay(this.el);
|
|
194
202
|
this.triggerChanged();
|
|
203
|
+
/**
|
|
204
|
+
* If the alert was previously connected and is being reattached, the
|
|
205
|
+
* ResizeObserver was disconnected. componentDidLoad only fires once per
|
|
206
|
+
* instance, so re-establish the observer here on reconnect.
|
|
207
|
+
*/
|
|
208
|
+
this.setupButtonGroupResizeObserver();
|
|
195
209
|
}
|
|
196
210
|
componentWillLoad() {
|
|
197
211
|
var _a;
|
|
@@ -202,11 +216,14 @@ export class Alert {
|
|
|
202
216
|
this.buttonsChanged();
|
|
203
217
|
}
|
|
204
218
|
disconnectedCallback() {
|
|
219
|
+
var _a;
|
|
205
220
|
this.triggerController.removeClickListener();
|
|
206
221
|
if (this.gesture) {
|
|
207
222
|
this.gesture.destroy();
|
|
208
223
|
this.gesture = undefined;
|
|
209
224
|
}
|
|
225
|
+
(_a = this.buttonGroupResizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
|
|
226
|
+
this.buttonGroupResizeObserver = undefined;
|
|
210
227
|
}
|
|
211
228
|
componentDidLoad() {
|
|
212
229
|
/**
|
|
@@ -219,6 +236,7 @@ export class Alert {
|
|
|
219
236
|
this.gesture = createButtonActiveGesture(this.wrapperEl, (refEl) => refEl.classList.contains('alert-button'));
|
|
220
237
|
this.gesture.enable(true);
|
|
221
238
|
}
|
|
239
|
+
this.setupButtonGroupResizeObserver();
|
|
222
240
|
/**
|
|
223
241
|
* If alert was rendered with isOpen="true"
|
|
224
242
|
* then we should open alert immediately.
|
|
@@ -410,14 +428,58 @@ export class Alert {
|
|
|
410
428
|
}
|
|
411
429
|
})));
|
|
412
430
|
}
|
|
431
|
+
setupButtonGroupResizeObserver() {
|
|
432
|
+
var _a;
|
|
433
|
+
/**
|
|
434
|
+
* Re-evaluate vertical layout when the button group resizes so a 2-button
|
|
435
|
+
* group with long text wraps cleanly instead of leaving a stray right-edge
|
|
436
|
+
* border on the first button.
|
|
437
|
+
*/
|
|
438
|
+
if (!this.buttonGroupEl || typeof ResizeObserver === 'undefined') {
|
|
439
|
+
return;
|
|
440
|
+
}
|
|
441
|
+
(_a = this.buttonGroupResizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
|
|
442
|
+
this.buttonGroupResizeObserver = new ResizeObserver(() => this.checkButtonGroupWrap());
|
|
443
|
+
this.buttonGroupResizeObserver.observe(this.buttonGroupEl);
|
|
444
|
+
this.checkButtonGroupWrap();
|
|
445
|
+
}
|
|
446
|
+
checkButtonGroupWrap() {
|
|
447
|
+
/**
|
|
448
|
+
* Defer the layout read out of the ResizeObserver callback so we don't
|
|
449
|
+
* force synchronous layout and avoid "ResizeObserver loop" warnings when
|
|
450
|
+
* applying the vertical-layout class itself triggers another resize.
|
|
451
|
+
*/
|
|
452
|
+
raf(() => {
|
|
453
|
+
/**
|
|
454
|
+
* Bail if the alert was disconnected after this raf was queued.
|
|
455
|
+
* `buttonGroupEl` persists across disconnect so the observer can be
|
|
456
|
+
* re-attached on reconnect; the observer reference is the disconnect
|
|
457
|
+
* sentinel.
|
|
458
|
+
*/
|
|
459
|
+
if (!this.buttonGroupResizeObserver) {
|
|
460
|
+
return;
|
|
461
|
+
}
|
|
462
|
+
const groupEl = this.buttonGroupEl;
|
|
463
|
+
if (!groupEl) {
|
|
464
|
+
return;
|
|
465
|
+
}
|
|
466
|
+
const buttons = Array.from(groupEl.querySelectorAll('.alert-button'));
|
|
467
|
+
if (buttons.length < 2) {
|
|
468
|
+
this.isButtonGroupWrapped = false;
|
|
469
|
+
return;
|
|
470
|
+
}
|
|
471
|
+
const firstTop = buttons[0].offsetTop;
|
|
472
|
+
this.isButtonGroupWrapped = buttons.some((btn) => btn.offsetTop !== firstTop);
|
|
473
|
+
});
|
|
474
|
+
}
|
|
413
475
|
renderAlertButtons() {
|
|
414
476
|
const buttons = this.processedButtons;
|
|
415
477
|
const mode = getIonMode(this);
|
|
416
478
|
const alertButtonGroupClass = {
|
|
417
479
|
'alert-button-group': true,
|
|
418
|
-
'alert-button-group-vertical': buttons.length > 2,
|
|
480
|
+
'alert-button-group-vertical': buttons.length > 2 || this.isButtonGroupWrapped,
|
|
419
481
|
};
|
|
420
|
-
return (h("div", { class: alertButtonGroupClass }, buttons.map((button) => (h("button", Object.assign({}, button.htmlAttributes, { type: "button", id: button.id, class: buttonClass(button), tabIndex: 0, onClick: () => this.buttonClick(button) }), h("span", { class: "alert-button-inner" }, button.text), mode === 'md' && h("ion-ripple-effect", null))))));
|
|
482
|
+
return (h("div", { class: alertButtonGroupClass, ref: (el) => (this.buttonGroupEl = el) }, buttons.map((button) => (h("button", Object.assign({}, button.htmlAttributes, { type: "button", id: button.id, class: buttonClass(button), tabIndex: 0, onClick: () => this.buttonClick(button) }), h("span", { class: "alert-button-inner" }, button.text), mode === 'md' && h("ion-ripple-effect", null))))));
|
|
421
483
|
}
|
|
422
484
|
renderAlertMessage(msgId) {
|
|
423
485
|
const { customHTMLEnabled, message } = this;
|
|
@@ -440,9 +502,9 @@ export class Alert {
|
|
|
440
502
|
* If neither are defined, do not set aria-labelledby.
|
|
441
503
|
*/
|
|
442
504
|
const ariaLabelledBy = header && subHeader ? `${hdrId} ${subHdrId}` : header ? hdrId : subHeader ? subHdrId : null;
|
|
443
|
-
return (h(Host, { key: '
|
|
505
|
+
return (h(Host, { key: '8d54ccd725ea634be080e67b56fa5efe498f496c', tabindex: "-1", style: {
|
|
444
506
|
zIndex: `${20000 + overlayIndex}`,
|
|
445
|
-
}, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'alert-translucent': this.translucent }), onIonAlertWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }, h("ion-backdrop", { key: '
|
|
507
|
+
}, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'alert-translucent': this.translucent }), onIonAlertWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }, h("ion-backdrop", { key: '05a238583342285545587de9dce144a82d779193', tappable: this.backdropDismiss }), h("div", { key: 'e52c53fd9845e66781af01b2a788a291b45a927c', tabindex: "0", "aria-hidden": "true" }), h("div", Object.assign({ key: '8417e52eebca24ff436fab0703666db51072f980', class: "alert-wrapper ion-overlay-wrapper", role: role, "aria-modal": "true", "aria-labelledby": ariaLabelledBy, "aria-describedby": message !== undefined ? msgId : null, tabindex: "0", ref: (el) => (this.wrapperEl = el) }, htmlAttributes), h("div", { key: '5c560d4800b24d41961423718108b54be6cd6f91', class: "alert-head" }, header && (h("h2", { key: '8637b64cd5125b2258115d1c11f3743113658608', id: hdrId, class: "alert-title" }, header)), subHeader && !header && (h("h2", { key: '7a4e61a02c29b16b336d8acaf6569b30de6fe71e', id: subHdrId, class: "alert-sub-title" }, subHeader)), subHeader && header && (h("h3", { key: '30844b6a0a7e3dab46514cd548ecffa86dcd59cb', id: subHdrId, class: "alert-sub-title" }, subHeader))), this.renderAlertMessage(msgId), this.renderAlertInputs(), this.renderAlertButtons()), h("div", { key: '39c824fee1e60ad8d6234c79d22ceb8bba8004af', tabindex: "0", "aria-hidden": "true" })));
|
|
446
508
|
}
|
|
447
509
|
static get is() { return "ion-alert"; }
|
|
448
510
|
static get encapsulation() { return "scoped"; }
|
|
@@ -851,6 +913,11 @@ export class Alert {
|
|
|
851
913
|
}
|
|
852
914
|
};
|
|
853
915
|
}
|
|
916
|
+
static get states() {
|
|
917
|
+
return {
|
|
918
|
+
"isButtonGroupWrapped": {}
|
|
919
|
+
};
|
|
920
|
+
}
|
|
854
921
|
static get events() {
|
|
855
922
|
return [{
|
|
856
923
|
"method": "didPresent",
|
|
@@ -116,7 +116,7 @@
|
|
|
116
116
|
-webkit-padding-end: var(--padding-end);
|
|
117
117
|
padding-inline-end: var(--padding-end);
|
|
118
118
|
padding-top: calc(var(--padding-top) + var(--offset-top));
|
|
119
|
-
padding-bottom: calc(var(--padding-bottom) + var(--keyboard-offset) + var(--offset-bottom) + var(--
|
|
119
|
+
padding-bottom: calc(var(--padding-bottom) + var(--keyboard-offset) + var(--offset-bottom) + var(--internal-content-safe-area-padding-bottom, 0px));
|
|
120
120
|
position: absolute;
|
|
121
121
|
color: var(--color);
|
|
122
122
|
box-sizing: border-box;
|
|
@@ -55,6 +55,12 @@ import { checkForPresentationFormatMismatch, warnIfTimeZoneProvided } from "./ut
|
|
|
55
55
|
export class Datetime {
|
|
56
56
|
constructor() {
|
|
57
57
|
this.inputId = `ion-dt-${datetimeIds++}`;
|
|
58
|
+
/**
|
|
59
|
+
* Set true only by `visibleCallback`. Lets `hiddenCallback` ignore the
|
|
60
|
+
* synthetic "not intersecting" entry IntersectionObserver fires on
|
|
61
|
+
* `observe()` when the host mounts offscreen.
|
|
62
|
+
*/
|
|
63
|
+
this.hasBeenIntersecting = false;
|
|
58
64
|
this.prevPresentation = null;
|
|
59
65
|
this.showMonthAndYear = false;
|
|
60
66
|
this.activeParts = [];
|
|
@@ -617,7 +623,21 @@ export class Datetime {
|
|
|
617
623
|
if (rect.width === 0 || rect.height === 0) {
|
|
618
624
|
return;
|
|
619
625
|
}
|
|
626
|
+
this.markReady();
|
|
627
|
+
};
|
|
628
|
+
this.markReady = () => {
|
|
629
|
+
if (this.el.classList.contains('datetime-ready')) {
|
|
630
|
+
return;
|
|
631
|
+
}
|
|
620
632
|
this.initializeListeners();
|
|
633
|
+
/**
|
|
634
|
+
* TODO FW-2793: Datetime needs a frame to ensure that it
|
|
635
|
+
* can properly scroll contents into view. As a result
|
|
636
|
+
* we hide the scrollable content until after that frame
|
|
637
|
+
* so users do not see the content quickly shifting. The downside
|
|
638
|
+
* is that the content will pop into view a frame after. Maybe there
|
|
639
|
+
* is a better way to handle this?
|
|
640
|
+
*/
|
|
621
641
|
writeTask(() => {
|
|
622
642
|
this.el.classList.add('datetime-ready');
|
|
623
643
|
});
|
|
@@ -910,6 +930,7 @@ export class Datetime {
|
|
|
910
930
|
this.clearFocusVisible = undefined;
|
|
911
931
|
}
|
|
912
932
|
this.loadTimeoutCleanup();
|
|
933
|
+
this.hasBeenIntersecting = false;
|
|
913
934
|
}
|
|
914
935
|
initializeListeners() {
|
|
915
936
|
this.initializeCalendarListener();
|
|
@@ -929,18 +950,8 @@ export class Datetime {
|
|
|
929
950
|
if (!ev.isIntersecting) {
|
|
930
951
|
return;
|
|
931
952
|
}
|
|
932
|
-
this.
|
|
933
|
-
|
|
934
|
-
* TODO FW-2793: Datetime needs a frame to ensure that it
|
|
935
|
-
* can properly scroll contents into view. As a result
|
|
936
|
-
* we hide the scrollable content until after that frame
|
|
937
|
-
* so users do not see the content quickly shifting. The downside
|
|
938
|
-
* is that the content will pop into view a frame after. Maybe there
|
|
939
|
-
* is a better way to handle this?
|
|
940
|
-
*/
|
|
941
|
-
writeTask(() => {
|
|
942
|
-
this.el.classList.add('datetime-ready');
|
|
943
|
-
});
|
|
953
|
+
this.hasBeenIntersecting = true;
|
|
954
|
+
this.markReady();
|
|
944
955
|
};
|
|
945
956
|
const visibleIO = new IntersectionObserver(visibleCallback, { threshold: 0.01, root: el });
|
|
946
957
|
/**
|
|
@@ -976,6 +987,11 @@ export class Datetime {
|
|
|
976
987
|
if (ev.isIntersecting) {
|
|
977
988
|
return;
|
|
978
989
|
}
|
|
990
|
+
// Ignore the initial "not intersecting" entry IntersectionObserver fires on observe().
|
|
991
|
+
if (!this.hasBeenIntersecting) {
|
|
992
|
+
return;
|
|
993
|
+
}
|
|
994
|
+
this.hasBeenIntersecting = false;
|
|
979
995
|
this.destroyInteractionListeners();
|
|
980
996
|
/**
|
|
981
997
|
* When datetime is hidden, we need to make sure that
|
|
@@ -1719,7 +1735,7 @@ export class Datetime {
|
|
|
1719
1735
|
const hasDatePresentation = presentation === 'date' || presentation === 'date-time' || presentation === 'time-date';
|
|
1720
1736
|
const hasWheelVariant = hasDatePresentation && preferWheel;
|
|
1721
1737
|
renderHiddenInput(true, el, name, formatValue(value), disabled);
|
|
1722
|
-
return (h(Host, { key: '
|
|
1738
|
+
return (h(Host, { key: '323c8c2327088f00934b8c93c3306538cb9b5677', "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: Object.assign({}, createColorClasses(color, {
|
|
1723
1739
|
[mode]: true,
|
|
1724
1740
|
['datetime-readonly']: readonly,
|
|
1725
1741
|
['datetime-disabled']: disabled,
|
|
@@ -1729,7 +1745,7 @@ export class Datetime {
|
|
|
1729
1745
|
[`datetime-size-${size}`]: true,
|
|
1730
1746
|
[`datetime-prefer-wheel`]: hasWheelVariant,
|
|
1731
1747
|
[`datetime-grid`]: isGridStyle,
|
|
1732
|
-
})) }, h("div", { key: '
|
|
1748
|
+
})) }, h("div", { key: '1e0855c8909bc3f1e48a21ad68159fa782060691', class: "intersection-tracker", ref: (el) => (this.intersectionTrackerRef = el) }), this.renderDatetime(mode)));
|
|
1733
1749
|
}
|
|
1734
1750
|
static get is() { return "ion-datetime"; }
|
|
1735
1751
|
static get encapsulation() { return "shadow"; }
|
|
@@ -1088,12 +1088,12 @@ export class Modal {
|
|
|
1088
1088
|
this.applyFullscreenSafeAreaTo(contentEl, hasFooter);
|
|
1089
1089
|
}
|
|
1090
1090
|
/**
|
|
1091
|
-
* Sets --
|
|
1091
|
+
* Sets --internal-content-safe-area-padding-bottom on the given ion-content
|
|
1092
1092
|
* when no footer is present, so ion-content's .inner-scroll includes
|
|
1093
1093
|
* safe-area-bottom in its scroll padding. This keeps the modal background
|
|
1094
1094
|
* edge-to-edge while ensuring content scrolls clear of the system nav bar.
|
|
1095
1095
|
*
|
|
1096
|
-
* --
|
|
1096
|
+
* --internal-content-safe-area-padding-bottom is an internal CSS property used
|
|
1097
1097
|
* only by this code path. It is not part of ion-content's public API and
|
|
1098
1098
|
* should not be set by consumers. The default of 0px makes it a no-op
|
|
1099
1099
|
* when unset, which is the expected state for ion-content used outside of
|
|
@@ -1105,17 +1105,17 @@ export class Modal {
|
|
|
1105
1105
|
// padding. Custom modals with raw HTML are developer-controlled.
|
|
1106
1106
|
if (!contentEl || hasFooter)
|
|
1107
1107
|
return;
|
|
1108
|
-
contentEl.style.setProperty('--
|
|
1108
|
+
contentEl.style.setProperty('--internal-content-safe-area-padding-bottom', 'var(--ion-safe-area-bottom, 0px)');
|
|
1109
1109
|
}
|
|
1110
1110
|
/**
|
|
1111
|
-
* Removes the internal --
|
|
1111
|
+
* Removes the internal --internal-content-safe-area-padding-bottom property
|
|
1112
1112
|
* from an already-located ion-content. Callers do their own
|
|
1113
1113
|
* findContentAndFooter() so they can also read hasFooter if needed.
|
|
1114
1114
|
*/
|
|
1115
1115
|
clearContentSafeAreaPadding(contentEl) {
|
|
1116
1116
|
if (!contentEl)
|
|
1117
1117
|
return;
|
|
1118
|
-
contentEl.style.removeProperty('--
|
|
1118
|
+
contentEl.style.removeProperty('--internal-content-safe-area-padding-bottom');
|
|
1119
1119
|
}
|
|
1120
1120
|
/**
|
|
1121
1121
|
* Finds ion-content and ion-footer among direct children and one level of
|
|
@@ -1162,20 +1162,20 @@ export class Modal {
|
|
|
1162
1162
|
const isCardModal = presentingElement !== undefined && mode === 'ios';
|
|
1163
1163
|
const isHandleCycle = handleBehavior === 'cycle';
|
|
1164
1164
|
const isSheetModalWithHandle = isSheetModal && showHandle;
|
|
1165
|
-
return (h(Host, Object.assign({ key: '
|
|
1165
|
+
return (h(Host, Object.assign({ key: 'd6a271ace939c33703966a1425ab32b7a30bf246', "no-router": true,
|
|
1166
1166
|
// Allow the modal to be navigable when the handle is focusable
|
|
1167
1167
|
tabIndex: isHandleCycle && isSheetModalWithHandle ? 0 : -1 }, htmlAttributes, { style: {
|
|
1168
1168
|
zIndex: `${20000 + this.overlayIndex}`,
|
|
1169
|
-
}, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, 'overlay-hidden': true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle, onFocus: this.onModalFocus }), h("ion-backdrop", { key: '
|
|
1169
|
+
}, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, 'overlay-hidden': true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle, onFocus: this.onModalFocus }), h("ion-backdrop", { key: '51e29823c1444059edc1299e2f8509dda4c39008', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && h("div", { key: '4292a849e82b83570b18b95e3cbdf05af0a4e170', class: "modal-shadow" }), h("div", Object.assign({ key: 'd3131150733c13cd6658545207e4ab49094672b7',
|
|
1170
1170
|
/*
|
|
1171
1171
|
role and aria-modal must be used on the
|
|
1172
1172
|
same element. They must also be set inside the
|
|
1173
1173
|
shadow DOM otherwise ion-button will not be highlighted
|
|
1174
1174
|
when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
|
|
1175
1175
|
*/
|
|
1176
|
-
role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (h("button", { key: '
|
|
1176
|
+
role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (h("button", { key: '3da13bff87602c8c0aa8e3db54375b40d96d3b83', class: "modal-handle",
|
|
1177
1177
|
// Prevents the handle from receiving keyboard focus when it does not cycle
|
|
1178
|
-
tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle", ref: (el) => (this.dragHandleEl = el) })), h("slot", { key: '
|
|
1178
|
+
tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle", ref: (el) => (this.dragHandleEl = el) })), h("slot", { key: '73b22a4eb7ca2e499b9f843b66751a1dbfef69a9', onSlotchange: this.onSlotChange }))));
|
|
1179
1179
|
}
|
|
1180
1180
|
static get is() { return "ion-modal"; }
|
|
1181
1181
|
static get encapsulation() { return "shadow"; }
|
|
@@ -315,6 +315,7 @@ export class Segment {
|
|
|
315
315
|
return segmentContent === null || segmentContent === void 0 ? void 0 : segmentContent.closest('ion-segment-view');
|
|
316
316
|
}
|
|
317
317
|
handleSegmentViewScroll(ev) {
|
|
318
|
+
var _a;
|
|
318
319
|
const { scrollRatio, isManualScroll } = ev.detail;
|
|
319
320
|
if (!isManualScroll) {
|
|
320
321
|
return;
|
|
@@ -331,6 +332,9 @@ export class Segment {
|
|
|
331
332
|
const index = buttons.findIndex((button) => button.value === this.value);
|
|
332
333
|
const current = buttons[index];
|
|
333
334
|
const nextIndex = Math.round(scrollRatio * (buttons.length - 1));
|
|
335
|
+
if ((_a = buttons[nextIndex]) === null || _a === void 0 ? void 0 : _a.disabled) {
|
|
336
|
+
return;
|
|
337
|
+
}
|
|
334
338
|
if (this.lastNextIndex === undefined || this.lastNextIndex !== nextIndex) {
|
|
335
339
|
this.lastNextIndex = nextIndex;
|
|
336
340
|
this.triggerScrollOnValueChange = false;
|
|
@@ -543,14 +547,14 @@ export class Segment {
|
|
|
543
547
|
}
|
|
544
548
|
render() {
|
|
545
549
|
const mode = getIonMode(this);
|
|
546
|
-
return (h(Host, { key: '
|
|
550
|
+
return (h(Host, { key: 'eda6b7b88b7967b55cf9098c59b655b348a42224', role: "tablist", onClick: this.onClick, class: createColorClasses(this.color, {
|
|
547
551
|
[mode]: true,
|
|
548
552
|
'in-toolbar': hostContext('ion-toolbar', this.el),
|
|
549
553
|
'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
|
|
550
554
|
'segment-activated': this.activated,
|
|
551
555
|
'segment-disabled': this.disabled,
|
|
552
556
|
'segment-scrollable': this.scrollable,
|
|
553
|
-
}) }, h("slot", { key: '
|
|
557
|
+
}) }, h("slot", { key: 'fdb451f235ce59c5bb50c61a13c69160ece2d5df', onSlotchange: this.onSlottedItemsChange })));
|
|
554
558
|
}
|
|
555
559
|
static get is() { return "ion-segment"; }
|
|
556
560
|
static get encapsulation() { return "shadow"; }
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { win } from "../../browser/index";
|
|
5
5
|
import { getScrollElement, scrollByPoint } from "../../content";
|
|
6
|
-
import { raf } from "../../helpers";
|
|
7
6
|
import { KeyboardResize } from "../../native/keyboard";
|
|
8
7
|
import { relocateInput, SCROLL_AMOUNT_PADDING } from "./common";
|
|
9
8
|
import { getScrollData } from "./scroll-data";
|
|
@@ -193,12 +192,6 @@ const jsSetFocus = async (componentEl, inputEl, contentEl, footerEl, keyboardHei
|
|
|
193
192
|
// at this point the native text input still does not have focus
|
|
194
193
|
relocateInput(componentEl, inputEl, true, scrollData.inputSafeY, disableClonedInput);
|
|
195
194
|
setManualFocus(inputEl);
|
|
196
|
-
/**
|
|
197
|
-
* Relocating/Focusing input causes the
|
|
198
|
-
* click event to be cancelled, so
|
|
199
|
-
* manually fire one here.
|
|
200
|
-
*/
|
|
201
|
-
raf(() => componentEl.click());
|
|
202
195
|
/**
|
|
203
196
|
* If enabled, we can add scroll padding to
|
|
204
197
|
* the bottom of the content so that scroll assist
|
package/dist/docs.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { w as win, d as doc } from './index-ZjP4CjeZ.js';
|
|
5
5
|
import { g as getScrollElement, c as scrollByPoint, f as findClosestIonContent } from './index-hW6eNZ3o.js';
|
|
6
|
-
import { f as addEventListener, m as removeEventListener,
|
|
6
|
+
import { f as addEventListener, m as removeEventListener, c as componentOnReady } from './helpers-Tl8jw6S2.js';
|
|
7
7
|
import { a as KeyboardResize, K as Keyboard } from './keyboard-CUw4ekVy.js';
|
|
8
8
|
import './index-IGIE5vDm.js';
|
|
9
9
|
import './capacitor-CFERIeaU.js';
|
|
@@ -448,12 +448,6 @@ const jsSetFocus = async (componentEl, inputEl, contentEl, footerEl, keyboardHei
|
|
|
448
448
|
// at this point the native text input still does not have focus
|
|
449
449
|
relocateInput(componentEl, inputEl, true, scrollData.inputSafeY, disableClonedInput);
|
|
450
450
|
setManualFocus(inputEl);
|
|
451
|
-
/**
|
|
452
|
-
* Relocating/Focusing input causes the
|
|
453
|
-
* click event to be cancelled, so
|
|
454
|
-
* manually fire one here.
|
|
455
|
-
*/
|
|
456
|
-
raf(() => componentEl.click());
|
|
457
451
|
/**
|
|
458
452
|
* If enabled, we can add scroll padding to
|
|
459
453
|
* the bottom of the content so that scroll assist
|
|
@@ -486,12 +486,12 @@ const ActionSheet = class {
|
|
|
486
486
|
const cancelButton = allButtons.find((b) => b.role === 'cancel');
|
|
487
487
|
const buttons = allButtons.filter((b) => b.role !== 'cancel');
|
|
488
488
|
const headerID = `action-sheet-${overlayIndex}-header`;
|
|
489
|
-
return (h(Host, Object.assign({ key: '
|
|
489
|
+
return (h(Host, Object.assign({ key: '48b63b870f2816b4cad3c606f3d9956854cee79a', role: "dialog", "aria-modal": "true", "aria-labelledby": header !== undefined ? headerID : null, tabindex: "-1" }, htmlAttributes, { style: {
|
|
490
490
|
zIndex: `${20000 + this.overlayIndex}`,
|
|
491
|
-
}, class: Object.assign(Object.assign({ [mode]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'action-sheet-translucent': this.translucent }), onIonActionSheetWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }), h("ion-backdrop", { key: '
|
|
491
|
+
}, class: Object.assign(Object.assign({ [mode]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'action-sheet-translucent': this.translucent }), onIonActionSheetWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }), h("ion-backdrop", { key: '41dd5781f139d26b3feea33ab387451aeafacd51', tappable: this.backdropDismiss }), h("div", { key: 'f797c2657782e4e83adf90d2d796108e857a1fc0', tabindex: "0", "aria-hidden": "true" }), h("div", { key: '8e74209321fc5e8712e3e293c91a6fa036ea45ab', class: "action-sheet-wrapper ion-overlay-wrapper", ref: (el) => (this.wrapperEl = el) }, h("div", { key: 'c811860be2eed0b6c73fc2cc5a59cb94db2e8912', class: "action-sheet-container" }, h("div", { key: 'd36ee14b70d73eb5cd69e0c57bc5cc31daf86ab3', class: "action-sheet-group", ref: (el) => (this.groupEl = el), role: hasRadioButtons ? 'radiogroup' : undefined }, header !== undefined && (h("div", { key: '922695de191edc86451eed2552acc4f54993ea52', id: headerID, class: {
|
|
492
492
|
'action-sheet-title': true,
|
|
493
493
|
'action-sheet-has-sub-title': this.subHeader !== undefined,
|
|
494
|
-
} }, header, this.subHeader && h("div", { key: '
|
|
494
|
+
} }, header, this.subHeader && h("div", { key: 'a119d4a93668e829f7106f11cbbdd437310f3e80', class: "action-sheet-sub-title" }, this.subHeader))), this.renderActionSheetButtons(buttons)), cancelButton && (h("div", { key: '1d27f36d09bedd2e4c61fea9dd9d05f8f9271aef', class: "action-sheet-group action-sheet-group-cancel" }, h("button", Object.assign({ key: 'ed13658176c54cc45808a54a0331c297430d9bc6' }, cancelButton.htmlAttributes, { type: "button", class: buttonClass(cancelButton), onClick: () => this.buttonClick(cancelButton) }), h("span", { key: '5208e3e3535b775a443cef6fb1decd790db69b0c', class: "action-sheet-button-inner" }, cancelButton.icon && (h("ion-icon", { key: 'b7ba489e1ee50524a5b4af670eef787844a16286', icon: cancelButton.icon, "aria-hidden": "true", lazy: false, class: "action-sheet-icon" })), cancelButton.text), mode === 'md' && h("ion-ripple-effect", { key: 'b3f88898114855853259f0001def26b4bd6e4a98' })))))), h("div", { key: '0dfd0fcdc633bf565990eaa06679608e749cf8f9', tabindex: "0", "aria-hidden": "true" })));
|
|
495
495
|
}
|
|
496
496
|
get el() { return getElement(this); }
|
|
497
497
|
static get watchers() { return {
|
|
@@ -124,6 +124,7 @@ const Alert = class {
|
|
|
124
124
|
this.customHTMLEnabled = config.get('innerHTMLTemplatesEnabled', ENABLE_HTML_CONTENT_DEFAULT);
|
|
125
125
|
this.processedInputs = [];
|
|
126
126
|
this.processedButtons = [];
|
|
127
|
+
this.isButtonGroupWrapped = false;
|
|
127
128
|
this.presented = false;
|
|
128
129
|
/** @internal */
|
|
129
130
|
this.hasController = false;
|
|
@@ -248,6 +249,13 @@ const Alert = class {
|
|
|
248
249
|
this.processedButtons = buttons.map((btn) => {
|
|
249
250
|
return typeof btn === 'string' ? { text: btn, role: btn.toLowerCase() === 'cancel' ? 'cancel' : undefined } : btn;
|
|
250
251
|
});
|
|
252
|
+
/**
|
|
253
|
+
* Reset wrap state so the new button set can be re-evaluated. Without this,
|
|
254
|
+
* a previously-latched vertical layout would persist even if the new buttons
|
|
255
|
+
* fit horizontally.
|
|
256
|
+
*/
|
|
257
|
+
this.isButtonGroupWrapped = false;
|
|
258
|
+
this.checkButtonGroupWrap();
|
|
251
259
|
}
|
|
252
260
|
inputsChanged() {
|
|
253
261
|
const inputs = this.inputs;
|
|
@@ -288,6 +296,12 @@ const Alert = class {
|
|
|
288
296
|
connectedCallback() {
|
|
289
297
|
prepareOverlay(this.el);
|
|
290
298
|
this.triggerChanged();
|
|
299
|
+
/**
|
|
300
|
+
* If the alert was previously connected and is being reattached, the
|
|
301
|
+
* ResizeObserver was disconnected. componentDidLoad only fires once per
|
|
302
|
+
* instance, so re-establish the observer here on reconnect.
|
|
303
|
+
*/
|
|
304
|
+
this.setupButtonGroupResizeObserver();
|
|
291
305
|
}
|
|
292
306
|
componentWillLoad() {
|
|
293
307
|
var _a;
|
|
@@ -298,11 +312,14 @@ const Alert = class {
|
|
|
298
312
|
this.buttonsChanged();
|
|
299
313
|
}
|
|
300
314
|
disconnectedCallback() {
|
|
315
|
+
var _a;
|
|
301
316
|
this.triggerController.removeClickListener();
|
|
302
317
|
if (this.gesture) {
|
|
303
318
|
this.gesture.destroy();
|
|
304
319
|
this.gesture = undefined;
|
|
305
320
|
}
|
|
321
|
+
(_a = this.buttonGroupResizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
|
|
322
|
+
this.buttonGroupResizeObserver = undefined;
|
|
306
323
|
}
|
|
307
324
|
componentDidLoad() {
|
|
308
325
|
/**
|
|
@@ -315,6 +332,7 @@ const Alert = class {
|
|
|
315
332
|
this.gesture = createButtonActiveGesture(this.wrapperEl, (refEl) => refEl.classList.contains('alert-button'));
|
|
316
333
|
this.gesture.enable(true);
|
|
317
334
|
}
|
|
335
|
+
this.setupButtonGroupResizeObserver();
|
|
318
336
|
/**
|
|
319
337
|
* If alert was rendered with isOpen="true"
|
|
320
338
|
* then we should open alert immediately.
|
|
@@ -506,14 +524,58 @@ const Alert = class {
|
|
|
506
524
|
}
|
|
507
525
|
})));
|
|
508
526
|
}
|
|
527
|
+
setupButtonGroupResizeObserver() {
|
|
528
|
+
var _a;
|
|
529
|
+
/**
|
|
530
|
+
* Re-evaluate vertical layout when the button group resizes so a 2-button
|
|
531
|
+
* group with long text wraps cleanly instead of leaving a stray right-edge
|
|
532
|
+
* border on the first button.
|
|
533
|
+
*/
|
|
534
|
+
if (!this.buttonGroupEl || typeof ResizeObserver === 'undefined') {
|
|
535
|
+
return;
|
|
536
|
+
}
|
|
537
|
+
(_a = this.buttonGroupResizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
|
|
538
|
+
this.buttonGroupResizeObserver = new ResizeObserver(() => this.checkButtonGroupWrap());
|
|
539
|
+
this.buttonGroupResizeObserver.observe(this.buttonGroupEl);
|
|
540
|
+
this.checkButtonGroupWrap();
|
|
541
|
+
}
|
|
542
|
+
checkButtonGroupWrap() {
|
|
543
|
+
/**
|
|
544
|
+
* Defer the layout read out of the ResizeObserver callback so we don't
|
|
545
|
+
* force synchronous layout and avoid "ResizeObserver loop" warnings when
|
|
546
|
+
* applying the vertical-layout class itself triggers another resize.
|
|
547
|
+
*/
|
|
548
|
+
raf(() => {
|
|
549
|
+
/**
|
|
550
|
+
* Bail if the alert was disconnected after this raf was queued.
|
|
551
|
+
* `buttonGroupEl` persists across disconnect so the observer can be
|
|
552
|
+
* re-attached on reconnect; the observer reference is the disconnect
|
|
553
|
+
* sentinel.
|
|
554
|
+
*/
|
|
555
|
+
if (!this.buttonGroupResizeObserver) {
|
|
556
|
+
return;
|
|
557
|
+
}
|
|
558
|
+
const groupEl = this.buttonGroupEl;
|
|
559
|
+
if (!groupEl) {
|
|
560
|
+
return;
|
|
561
|
+
}
|
|
562
|
+
const buttons = Array.from(groupEl.querySelectorAll('.alert-button'));
|
|
563
|
+
if (buttons.length < 2) {
|
|
564
|
+
this.isButtonGroupWrapped = false;
|
|
565
|
+
return;
|
|
566
|
+
}
|
|
567
|
+
const firstTop = buttons[0].offsetTop;
|
|
568
|
+
this.isButtonGroupWrapped = buttons.some((btn) => btn.offsetTop !== firstTop);
|
|
569
|
+
});
|
|
570
|
+
}
|
|
509
571
|
renderAlertButtons() {
|
|
510
572
|
const buttons = this.processedButtons;
|
|
511
573
|
const mode = getIonMode(this);
|
|
512
574
|
const alertButtonGroupClass = {
|
|
513
575
|
'alert-button-group': true,
|
|
514
|
-
'alert-button-group-vertical': buttons.length > 2,
|
|
576
|
+
'alert-button-group-vertical': buttons.length > 2 || this.isButtonGroupWrapped,
|
|
515
577
|
};
|
|
516
|
-
return (h("div", { class: alertButtonGroupClass }, buttons.map((button) => (h("button", Object.assign({}, button.htmlAttributes, { type: "button", id: button.id, class: buttonClass(button), tabIndex: 0, onClick: () => this.buttonClick(button) }), h("span", { class: "alert-button-inner" }, button.text), mode === 'md' && h("ion-ripple-effect", null))))));
|
|
578
|
+
return (h("div", { class: alertButtonGroupClass, ref: (el) => (this.buttonGroupEl = el) }, buttons.map((button) => (h("button", Object.assign({}, button.htmlAttributes, { type: "button", id: button.id, class: buttonClass(button), tabIndex: 0, onClick: () => this.buttonClick(button) }), h("span", { class: "alert-button-inner" }, button.text), mode === 'md' && h("ion-ripple-effect", null))))));
|
|
517
579
|
}
|
|
518
580
|
renderAlertMessage(msgId) {
|
|
519
581
|
const { customHTMLEnabled, message } = this;
|
|
@@ -536,9 +598,9 @@ const Alert = class {
|
|
|
536
598
|
* If neither are defined, do not set aria-labelledby.
|
|
537
599
|
*/
|
|
538
600
|
const ariaLabelledBy = header && subHeader ? `${hdrId} ${subHdrId}` : header ? hdrId : subHeader ? subHdrId : null;
|
|
539
|
-
return (h(Host, { key: '
|
|
601
|
+
return (h(Host, { key: '8d54ccd725ea634be080e67b56fa5efe498f496c', tabindex: "-1", style: {
|
|
540
602
|
zIndex: `${20000 + overlayIndex}`,
|
|
541
|
-
}, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'alert-translucent': this.translucent }), onIonAlertWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }, h("ion-backdrop", { key: '
|
|
603
|
+
}, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'alert-translucent': this.translucent }), onIonAlertWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }, h("ion-backdrop", { key: '05a238583342285545587de9dce144a82d779193', tappable: this.backdropDismiss }), h("div", { key: 'e52c53fd9845e66781af01b2a788a291b45a927c', tabindex: "0", "aria-hidden": "true" }), h("div", Object.assign({ key: '8417e52eebca24ff436fab0703666db51072f980', class: "alert-wrapper ion-overlay-wrapper", role: role, "aria-modal": "true", "aria-labelledby": ariaLabelledBy, "aria-describedby": message !== undefined ? msgId : null, tabindex: "0", ref: (el) => (this.wrapperEl = el) }, htmlAttributes), h("div", { key: '5c560d4800b24d41961423718108b54be6cd6f91', class: "alert-head" }, header && (h("h2", { key: '8637b64cd5125b2258115d1c11f3743113658608', id: hdrId, class: "alert-title" }, header)), subHeader && !header && (h("h2", { key: '7a4e61a02c29b16b336d8acaf6569b30de6fe71e', id: subHdrId, class: "alert-sub-title" }, subHeader)), subHeader && header && (h("h3", { key: '30844b6a0a7e3dab46514cd548ecffa86dcd59cb', id: subHdrId, class: "alert-sub-title" }, subHeader))), this.renderAlertMessage(msgId), this.renderAlertInputs(), this.renderAlertButtons()), h("div", { key: '39c824fee1e60ad8d6234c79d22ceb8bba8004af', tabindex: "0", "aria-hidden": "true" })));
|
|
542
604
|
}
|
|
543
605
|
get el() { return getElement(this); }
|
|
544
606
|
static get watchers() { return {
|
|
@@ -39,7 +39,7 @@ const App = class {
|
|
|
39
39
|
* platforms proceed into this block.
|
|
40
40
|
*/
|
|
41
41
|
const platform = isPlatform(window, 'ios') ? 'ios' : 'android';
|
|
42
|
-
import('./input-shims-
|
|
42
|
+
import('./input-shims-DbrgeeNb.js').then((module) => module.startInputShims(config, platform));
|
|
43
43
|
}
|
|
44
44
|
const hardwareBackButtonModule = await import('./hardware-back-button-CTe4XmL7.js');
|
|
45
45
|
const supportsHardwareBackButtonEvents = isHybrid || shouldUseCloseWatcher();
|
|
@@ -157,7 +157,7 @@ Buttons.style = {
|
|
|
157
157
|
md: buttonsMdCss()
|
|
158
158
|
};
|
|
159
159
|
|
|
160
|
-
const contentCss = () => `:host{--background:var(--ion-background-color, #fff);--color:var(--ion-text-color, #000);--padding-top:0px;--padding-bottom:0px;--padding-start:0px;--padding-end:0px;--keyboard-offset:0px;--offset-top:0px;--offset-bottom:0px;--overflow:auto;display:block;position:relative;-ms-flex:1;flex:1;width:100%;height:100%;margin:0 !important;padding:0 !important;font-family:var(--ion-font-family, inherit);contain:size style}:host(.ion-color) .inner-scroll{background:var(--ion-color-base);color:var(--ion-color-contrast)}#background-content{left:0px;right:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);position:absolute;background:var(--background)}.inner-scroll{left:0px;right:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:calc(var(--padding-top) + var(--offset-top));padding-bottom:calc(var(--padding-bottom) + var(--keyboard-offset) + var(--offset-bottom) + var(--
|
|
160
|
+
const contentCss = () => `:host{--background:var(--ion-background-color, #fff);--color:var(--ion-text-color, #000);--padding-top:0px;--padding-bottom:0px;--padding-start:0px;--padding-end:0px;--keyboard-offset:0px;--offset-top:0px;--offset-bottom:0px;--overflow:auto;display:block;position:relative;-ms-flex:1;flex:1;width:100%;height:100%;margin:0 !important;padding:0 !important;font-family:var(--ion-font-family, inherit);contain:size style}:host(.ion-color) .inner-scroll{background:var(--ion-color-base);color:var(--ion-color-contrast)}#background-content{left:0px;right:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);position:absolute;background:var(--background)}.inner-scroll{left:0px;right:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:calc(var(--padding-top) + var(--offset-top));padding-bottom:calc(var(--padding-bottom) + var(--keyboard-offset) + var(--offset-bottom) + var(--internal-content-safe-area-padding-bottom, 0px));position:absolute;color:var(--color);-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;-ms-touch-action:pan-x pan-y pinch-zoom;touch-action:pan-x pan-y pinch-zoom}.scroll-y,.scroll-x{-webkit-overflow-scrolling:touch;z-index:0;will-change:scroll-position}.scroll-y{overflow-y:var(--overflow);overscroll-behavior-y:contain}.scroll-x{overflow-x:var(--overflow);overscroll-behavior-x:contain}.overscroll::before,.overscroll::after{position:absolute;width:1px;height:1px;content:""}.overscroll::before{bottom:-1px}.overscroll::after{top:-1px}:host(.content-sizing){display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-height:0;contain:none}:host(.content-sizing) .inner-scroll{position:relative;top:0;bottom:0;margin-top:calc(var(--offset-top) * -1);margin-bottom:calc(var(--offset-bottom) * -1)}.transition-effect{display:none;position:absolute;width:100%;height:100vh;opacity:0;pointer-events:none}:host(.content-ltr) .transition-effect{left:-100%;}:host(.content-rtl) .transition-effect{right:-100%;}.transition-cover{position:absolute;right:0;width:100%;height:100%;background:black;opacity:0.1}.transition-shadow{display:block;position:absolute;width:100%;height:100%;-webkit-box-shadow:inset -9px 0 9px 0 rgba(0, 0, 100, 0.03);box-shadow:inset -9px 0 9px 0 rgba(0, 0, 100, 0.03)}:host(.content-ltr) .transition-shadow{right:0;}:host(.content-rtl) .transition-shadow{left:0;-webkit-transform:scaleX(-1);transform:scaleX(-1)}::slotted([slot=fixed]){position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0)}`;
|
|
161
161
|
|
|
162
162
|
const Content = class {
|
|
163
163
|
constructor(hostRef) {
|