@ionic/core 8.7.17-dev.11771359170.1fda0949 → 8.7.17-dev.11771870864.19b2cde1
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-datetime.js +5 -5
- package/components/ion-segment-view.js +11 -5
- package/components/ion-select.js +3 -3
- package/components/ion-textarea.js +4 -4
- package/components/modal.js +206 -43
- package/dist/cjs/ion-datetime_3.cjs.entry.js +5 -5
- package/dist/cjs/ion-modal.cjs.entry.js +206 -43
- package/dist/cjs/ion-segment-view.cjs.entry.js +10 -5
- package/dist/cjs/ion-select_3.cjs.entry.js +3 -3
- package/dist/cjs/ion-textarea.cjs.entry.js +2 -2
- package/dist/cjs/ionic.cjs.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/components/datetime/datetime.js +5 -12
- package/dist/collection/components/modal/gestures/sheet.js +108 -11
- package/dist/collection/components/modal/gestures/swipe-to-close.js +54 -1
- package/dist/collection/components/modal/modal.js +98 -31
- package/dist/collection/components/segment-view/segment-view.ios.css +2 -1
- package/dist/collection/components/segment-view/segment-view.js +28 -3
- package/dist/collection/components/segment-view/segment-view.md.css +2 -1
- package/dist/collection/components/select/select.js +6 -3
- package/dist/collection/components/textarea/textarea.js +4 -4
- package/dist/docs.json +115 -51
- package/dist/esm/ion-datetime_3.entry.js +5 -5
- package/dist/esm/ion-modal.entry.js +206 -43
- package/dist/esm/ion-segment-view.entry.js +10 -5
- package/dist/esm/ion-select_3.entry.js +3 -3
- package/dist/esm/ion-textarea.entry.js +2 -2
- package/dist/esm/ionic.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/html.html-data.json +4 -0
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/p-0f418a37.entry.js +4 -0
- package/dist/ionic/p-1838bed5.entry.js +4 -0
- package/dist/ionic/p-29721c43.entry.js +4 -0
- package/dist/ionic/p-9a2d390d.entry.js +4 -0
- package/dist/ionic/{p-c19f63d0.entry.js → p-e1d1f3cc.entry.js} +1 -1
- package/dist/types/components/datetime/datetime.d.ts +0 -7
- package/dist/types/components/modal/gestures/sheet.d.ts +2 -2
- package/dist/types/components/modal/gestures/swipe-to-close.d.ts +2 -2
- package/dist/types/components/modal/modal-interface.d.ts +7 -0
- package/dist/types/components/modal/modal.d.ts +17 -1
- package/dist/types/components/segment-view/segment-view.d.ts +4 -0
- package/dist/types/components/select/select.d.ts +3 -0
- package/dist/types/components.d.ts +27 -2
- package/hydrate/index.js +233 -68
- package/hydrate/index.mjs +233 -68
- package/package.json +1 -1
- package/dist/ionic/p-020af078.entry.js +0 -4
- package/dist/ionic/p-88367362.entry.js +0 -4
- package/dist/ionic/p-91840a80.entry.js +0 -4
- package/dist/ionic/p-9dcc3ae4.entry.js +0 -4
package/hydrate/index.js
CHANGED
|
@@ -12880,21 +12880,14 @@ const datetimeMdCss = ":host{display:-ms-flexbox;display:flex;-ms-flex-flow:colu
|
|
|
12880
12880
|
* layout with `presentation="date-time"` or `"time-date"`.
|
|
12881
12881
|
* @part time-button active - The time picker button when the picker is open.
|
|
12882
12882
|
*
|
|
12883
|
-
* @part calendar-header - The calendar header manages the date navigation controls (month/year picker and prev/next buttons) and the days of the week when using a grid style layout.
|
|
12884
12883
|
* @part month-year-button - The button that opens the month/year picker when
|
|
12885
12884
|
* using a grid style layout.
|
|
12886
|
-
* @part prev-next-buttons - The buttons used to navigate to the next or previous month when using a grid style layout.
|
|
12887
|
-
* @part prev-button - The button used to navigate to the previous month when using a grid style layout.
|
|
12888
|
-
* @part next-button - The button used to navigate to the next month when using a grid style layout.
|
|
12889
|
-
* @part days-of-week - The container for the day-of-the-week header (both weekdays and weekends) when using a grid style layout.
|
|
12890
12885
|
*
|
|
12891
12886
|
* @part calendar-day - The individual buttons that display a day inside of the datetime
|
|
12892
12887
|
* calendar.
|
|
12893
12888
|
* @part calendar-day active - The currently selected calendar day.
|
|
12894
12889
|
* @part calendar-day today - The calendar day that contains the current day.
|
|
12895
12890
|
* @part calendar-day disabled - The calendar day that is disabled.
|
|
12896
|
-
*
|
|
12897
|
-
* @part datetime-header - The datetime header contains the content for the `title` slot and the selected date.
|
|
12898
12891
|
*/
|
|
12899
12892
|
class Datetime {
|
|
12900
12893
|
constructor(hostRef) {
|
|
@@ -14236,11 +14229,11 @@ class Datetime {
|
|
|
14236
14229
|
const nextMonthDisabled = disabled || isNextMonthDisabled(this.workingParts, this.maxParts);
|
|
14237
14230
|
// don't use the inheritAttributes util because it removes dir from the host, and we still need that
|
|
14238
14231
|
const hostDir = this.el.getAttribute('dir') || undefined;
|
|
14239
|
-
return (hAsync("div", { class: "calendar-header"
|
|
14232
|
+
return (hAsync("div", { class: "calendar-header" }, hAsync("div", { class: "calendar-action-buttons" }, hAsync("div", { class: "calendar-month-year" }, hAsync("button", { class: {
|
|
14240
14233
|
'calendar-month-year-toggle': true,
|
|
14241
14234
|
'ion-activatable': true,
|
|
14242
14235
|
'ion-focusable': true,
|
|
14243
|
-
}, part: "month-year-button", disabled: disabled, "aria-label": this.showMonthAndYear ? 'Hide year picker' : 'Show year picker', onClick: () => this.toggleMonthAndYearView() }, hAsync("span", { id: "toggle-wrapper" }, getMonthAndYear(this.locale, this.workingParts), hAsync("ion-icon", { "aria-hidden": "true", icon: this.showMonthAndYear ? expandedIcon : collapsedIcon, lazy: false, flipRtl: true })), mode === 'md' && hAsync("ion-ripple-effect", null))), hAsync("div", { class: "calendar-next-prev" }, hAsync("ion-buttons", null, hAsync("ion-button", { "aria-label": "Previous month", disabled: prevMonthDisabled, onClick: () => this.prevMonth()
|
|
14236
|
+
}, part: "month-year-button", disabled: disabled, "aria-label": this.showMonthAndYear ? 'Hide year picker' : 'Show year picker', onClick: () => this.toggleMonthAndYearView() }, hAsync("span", { id: "toggle-wrapper" }, getMonthAndYear(this.locale, this.workingParts), hAsync("ion-icon", { "aria-hidden": "true", icon: this.showMonthAndYear ? expandedIcon : collapsedIcon, lazy: false, flipRtl: true })), mode === 'md' && hAsync("ion-ripple-effect", null))), hAsync("div", { class: "calendar-next-prev" }, hAsync("ion-buttons", null, hAsync("ion-button", { "aria-label": "Previous month", disabled: prevMonthDisabled, onClick: () => this.prevMonth() }, hAsync("ion-icon", { dir: hostDir, "aria-hidden": "true", slot: "icon-only", icon: chevronBack, lazy: false, flipRtl: true })), hAsync("ion-button", { "aria-label": "Next month", disabled: nextMonthDisabled, onClick: () => this.nextMonth() }, hAsync("ion-icon", { dir: hostDir, "aria-hidden": "true", slot: "icon-only", icon: chevronForward, lazy: false, flipRtl: true }))))), hAsync("div", { class: "calendar-days-of-week", "aria-hidden": "true" }, getDaysOfWeek(this.locale, mode, this.firstDayOfWeek % 7).map((d) => {
|
|
14244
14237
|
return hAsync("div", { class: "day-of-week" }, d);
|
|
14245
14238
|
}))));
|
|
14246
14239
|
}
|
|
@@ -14472,7 +14465,7 @@ class Datetime {
|
|
|
14472
14465
|
if (!hasSlottedTitle && !this.showDefaultTitle) {
|
|
14473
14466
|
return;
|
|
14474
14467
|
}
|
|
14475
|
-
return (hAsync("div", { class: "datetime-header"
|
|
14468
|
+
return (hAsync("div", { class: "datetime-header" }, hAsync("div", { class: "datetime-title" }, hAsync("slot", { name: "title" }, "Select Date")), showExpandedHeader && hAsync("div", { class: "datetime-selected-date" }, this.getHeaderSelectedDateText())));
|
|
14476
14469
|
}
|
|
14477
14470
|
/**
|
|
14478
14471
|
* Render time picker inside of datetime.
|
|
@@ -14552,7 +14545,7 @@ class Datetime {
|
|
|
14552
14545
|
const hasDatePresentation = presentation === 'date' || presentation === 'date-time' || presentation === 'time-date';
|
|
14553
14546
|
const hasWheelVariant = hasDatePresentation && preferWheel;
|
|
14554
14547
|
renderHiddenInput(true, el, name, formatValue(value), disabled);
|
|
14555
|
-
return (hAsync(Host, { key: '
|
|
14548
|
+
return (hAsync(Host, { key: '19e20c9b6b5f9467e91a2567b6dc7d9d38b56cc3', "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: Object.assign({}, createColorClasses$1(color, {
|
|
14556
14549
|
[mode]: true,
|
|
14557
14550
|
['datetime-readonly']: readonly,
|
|
14558
14551
|
['datetime-disabled']: disabled,
|
|
@@ -14562,7 +14555,7 @@ class Datetime {
|
|
|
14562
14555
|
[`datetime-size-${size}`]: true,
|
|
14563
14556
|
[`datetime-prefer-wheel`]: hasWheelVariant,
|
|
14564
14557
|
[`datetime-grid`]: isGridStyle,
|
|
14565
|
-
})) }, hAsync("div", { key: '
|
|
14558
|
+
})) }, hAsync("div", { key: 'e31b5ef76cd6262dafd39f2d21980887880ec32e', class: "intersection-tracker", ref: (el) => (this.intersectionTrackerRef = el) }), this.renderDatetime(mode)));
|
|
14566
14559
|
}
|
|
14567
14560
|
get el() { return getElement(this); }
|
|
14568
14561
|
static get watchers() { return {
|
|
@@ -21543,7 +21536,7 @@ const calculateSpringStep = (t) => {
|
|
|
21543
21536
|
const SwipeToCloseDefaults = {
|
|
21544
21537
|
MIN_PRESENTING_SCALE: 0.915,
|
|
21545
21538
|
};
|
|
21546
|
-
const createSwipeToCloseGesture = (el, animation, statusBarStyle, onDismiss) => {
|
|
21539
|
+
const createSwipeToCloseGesture = (el, animation, statusBarStyle, onDismiss, onDragStart, onDragMove, onDragEnd) => {
|
|
21547
21540
|
/**
|
|
21548
21541
|
* The step value at which a card modal
|
|
21549
21542
|
* is eligible for dismissing via gesture.
|
|
@@ -21653,6 +21646,7 @@ const createSwipeToCloseGesture = (el, animation, statusBarStyle, onDismiss) =>
|
|
|
21653
21646
|
disableContentScrollY(contentEl);
|
|
21654
21647
|
}
|
|
21655
21648
|
animation.progressStart(true, isOpen ? 1 : 0);
|
|
21649
|
+
onDragStart();
|
|
21656
21650
|
};
|
|
21657
21651
|
const onMove = (detail) => {
|
|
21658
21652
|
const { deltaY } = detail;
|
|
@@ -21720,6 +21714,13 @@ const createSwipeToCloseGesture = (el, animation, statusBarStyle, onDismiss) =>
|
|
|
21720
21714
|
setCardStatusBarDark();
|
|
21721
21715
|
}
|
|
21722
21716
|
lastStep = clampedStep;
|
|
21717
|
+
const eventDetail = {
|
|
21718
|
+
currentY: detail.currentY,
|
|
21719
|
+
deltaY: detail.deltaY,
|
|
21720
|
+
velocityY: detail.velocityY,
|
|
21721
|
+
progress: calculateProgress(el, detail.deltaY),
|
|
21722
|
+
};
|
|
21723
|
+
onDragMove(eventDetail);
|
|
21723
21724
|
};
|
|
21724
21725
|
const onEnd = (detail) => {
|
|
21725
21726
|
const velocity = detail.velocityY;
|
|
@@ -21778,6 +21779,13 @@ const createSwipeToCloseGesture = (el, animation, statusBarStyle, onDismiss) =>
|
|
|
21778
21779
|
else if (shouldComplete) {
|
|
21779
21780
|
onDismiss();
|
|
21780
21781
|
}
|
|
21782
|
+
const eventDetail = {
|
|
21783
|
+
currentY: detail.currentY,
|
|
21784
|
+
deltaY: detail.deltaY,
|
|
21785
|
+
velocityY: detail.velocityY,
|
|
21786
|
+
progress: calculateProgress(el, detail.deltaY),
|
|
21787
|
+
};
|
|
21788
|
+
onDragEnd(eventDetail);
|
|
21781
21789
|
};
|
|
21782
21790
|
const gesture = createGesture({
|
|
21783
21791
|
el,
|
|
@@ -21795,6 +21803,44 @@ const createSwipeToCloseGesture = (el, animation, statusBarStyle, onDismiss) =>
|
|
|
21795
21803
|
const computeDuration = (remaining, velocity) => {
|
|
21796
21804
|
return clamp(400, remaining / Math.abs(velocity * 1.1), 500);
|
|
21797
21805
|
};
|
|
21806
|
+
/**
|
|
21807
|
+
* Calculates the progress of the swipe gesture.
|
|
21808
|
+
*
|
|
21809
|
+
* The progress is a value between 0 and 1 that represents how far
|
|
21810
|
+
* the swipe has progressed towards closing the modal.
|
|
21811
|
+
*
|
|
21812
|
+
* A value closer to 1 means the modal is closer to being opened,
|
|
21813
|
+
* while a value closer to 0 means the modal is closer to being closed.
|
|
21814
|
+
*
|
|
21815
|
+
* @param el The modal
|
|
21816
|
+
* @param deltaY The change in Y position (positive when dragging down, negative when dragging up)
|
|
21817
|
+
* @returns The progress of the swipe gesture
|
|
21818
|
+
*/
|
|
21819
|
+
const calculateProgress = (el, deltaY) => {
|
|
21820
|
+
const windowHeight = window.innerHeight;
|
|
21821
|
+
// Position when fully open
|
|
21822
|
+
const modalTop = el.getBoundingClientRect().top;
|
|
21823
|
+
/**
|
|
21824
|
+
* The distance between the top of the modal and the bottom of the screen
|
|
21825
|
+
* is the total distance the modal needs to travel to be fully closed.
|
|
21826
|
+
*/
|
|
21827
|
+
const totalDistance = windowHeight - modalTop;
|
|
21828
|
+
/**
|
|
21829
|
+
* The pull percentage is how far the user has swiped compared to the total
|
|
21830
|
+
* distance needed to close the modal.
|
|
21831
|
+
*/
|
|
21832
|
+
const pullPercentage = deltaY / totalDistance;
|
|
21833
|
+
/**
|
|
21834
|
+
* The progress is the inverse of the pull percentage because
|
|
21835
|
+
* when the user starts swiping up, the progress should be close to 1,
|
|
21836
|
+
* and when the user has swiped all the way down, the progress should be
|
|
21837
|
+
* close to 0.
|
|
21838
|
+
*/
|
|
21839
|
+
const progress = 1 - pullPercentage;
|
|
21840
|
+
// Round to the nearest thousandth to avoid returning very small decimal
|
|
21841
|
+
const roundedProgress = Math.round(progress * 1000) / 1000;
|
|
21842
|
+
return Math.max(0, Math.min(1, roundedProgress));
|
|
21843
|
+
};
|
|
21798
21844
|
|
|
21799
21845
|
const createSheetEnterAnimation = (opts) => {
|
|
21800
21846
|
const { currentBreakpoint, backdropBreakpoint, expandToScroll } = opts;
|
|
@@ -22243,7 +22289,7 @@ const mdLeaveAnimation$2 = (baseEl, opts) => {
|
|
|
22243
22289
|
return baseAnimation;
|
|
22244
22290
|
};
|
|
22245
22291
|
|
|
22246
|
-
const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, animation, breakpoints = [], expandToScroll, getCurrentBreakpoint, onDismiss, onBreakpointChange) => {
|
|
22292
|
+
const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, animation, breakpoints = [], expandToScroll, getCurrentBreakpoint, onDismiss, onBreakpointChange, onDragStart, onDragMove, onDragEnd) => {
|
|
22247
22293
|
// Defaults for the sheet swipe animation
|
|
22248
22294
|
const defaultBackdrop = [
|
|
22249
22295
|
{ offset: 0, opacity: 'var(--backdrop-opacity)' },
|
|
@@ -22506,6 +22552,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
|
|
|
22506
22552
|
baseEl.focus();
|
|
22507
22553
|
});
|
|
22508
22554
|
animation.progressStart(true, 1 - currentBreakpoint);
|
|
22555
|
+
onDragStart();
|
|
22509
22556
|
};
|
|
22510
22557
|
const onMove = (detail) => {
|
|
22511
22558
|
/**
|
|
@@ -22574,6 +22621,15 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
|
|
|
22574
22621
|
: step;
|
|
22575
22622
|
offset = clamp(0.0001, processedStep, maxStep);
|
|
22576
22623
|
animation.progressStep(offset);
|
|
22624
|
+
const closest = calculateClosestBreakpoint(detail.velocityY, detail.deltaY);
|
|
22625
|
+
const eventDetail = {
|
|
22626
|
+
currentY: detail.currentY,
|
|
22627
|
+
deltaY: detail.deltaY,
|
|
22628
|
+
velocityY: detail.velocityY,
|
|
22629
|
+
progress: calculateProgress(detail.currentY),
|
|
22630
|
+
currentBreakpoint: closest,
|
|
22631
|
+
};
|
|
22632
|
+
onDragMove(eventDetail);
|
|
22577
22633
|
};
|
|
22578
22634
|
const onEnd = (detail) => {
|
|
22579
22635
|
/**
|
|
@@ -22592,16 +22648,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
|
|
|
22592
22648
|
swapFooterPosition('stationary');
|
|
22593
22649
|
return;
|
|
22594
22650
|
}
|
|
22595
|
-
|
|
22596
|
-
* When the gesture releases, we need to determine
|
|
22597
|
-
* the closest breakpoint to snap to.
|
|
22598
|
-
*/
|
|
22599
|
-
const velocity = detail.velocityY;
|
|
22600
|
-
const threshold = (detail.deltaY + velocity * 350) / height;
|
|
22601
|
-
const diff = currentBreakpoint - threshold;
|
|
22602
|
-
const closest = breakpoints.reduce((a, b) => {
|
|
22603
|
-
return Math.abs(b - diff) < Math.abs(a - diff) ? b : a;
|
|
22604
|
-
});
|
|
22651
|
+
const closest = calculateClosestBreakpoint(detail.velocityY, detail.deltaY);
|
|
22605
22652
|
moveSheetToBreakpoint({
|
|
22606
22653
|
breakpoint: closest,
|
|
22607
22654
|
breakpointOffset: offset,
|
|
@@ -22612,6 +22659,14 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
|
|
|
22612
22659
|
*/
|
|
22613
22660
|
animated: true,
|
|
22614
22661
|
});
|
|
22662
|
+
const eventDetail = {
|
|
22663
|
+
currentY: detail.currentY,
|
|
22664
|
+
deltaY: detail.deltaY,
|
|
22665
|
+
velocityY: detail.velocityY,
|
|
22666
|
+
progress: calculateProgress(detail.currentY),
|
|
22667
|
+
currentBreakpoint: closest,
|
|
22668
|
+
};
|
|
22669
|
+
onDragEnd(eventDetail);
|
|
22615
22670
|
};
|
|
22616
22671
|
const moveSheetToBreakpoint = (options) => {
|
|
22617
22672
|
const { breakpoint, canDismiss, breakpointOffset, animated } = options;
|
|
@@ -22751,6 +22806,94 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
|
|
|
22751
22806
|
.progressEnd(1, 0, animated ? 500 : 0);
|
|
22752
22807
|
});
|
|
22753
22808
|
};
|
|
22809
|
+
/**
|
|
22810
|
+
* Calculates the closest breakpoint based on the current velocity and deltaY.
|
|
22811
|
+
* This determines where the sheet should snap to when the user releases the
|
|
22812
|
+
* gesture.
|
|
22813
|
+
*
|
|
22814
|
+
* @param velocityY The current velocity of the gesture in the Y direction.
|
|
22815
|
+
* @param deltaY The change in Y position since the gesture started.
|
|
22816
|
+
* @returns The closest breakpoint value.
|
|
22817
|
+
*/
|
|
22818
|
+
const calculateClosestBreakpoint = (velocityY, deltaY) => {
|
|
22819
|
+
const threshold = (deltaY + velocityY * 350) / height;
|
|
22820
|
+
const diff = currentBreakpoint - threshold;
|
|
22821
|
+
const closest = breakpoints.reduce((a, b) => {
|
|
22822
|
+
return Math.abs(b - diff) < Math.abs(a - diff) ? b : a;
|
|
22823
|
+
});
|
|
22824
|
+
return closest;
|
|
22825
|
+
};
|
|
22826
|
+
/**
|
|
22827
|
+
* Calculates the progress of the swipe gesture.
|
|
22828
|
+
*
|
|
22829
|
+
* The progress is a value between 0 and 1 that represents how far
|
|
22830
|
+
* the swipe has progressed towards closing the modal.
|
|
22831
|
+
*
|
|
22832
|
+
* A value closer to 1 means the modal is closer to being opened,
|
|
22833
|
+
* while a value closer to 0 means the modal is closer to being closed.
|
|
22834
|
+
*
|
|
22835
|
+
* @param currentY The current Y position of the gesture
|
|
22836
|
+
* @returns The progress of the sheet gesture
|
|
22837
|
+
*/
|
|
22838
|
+
const calculateProgress = (currentY) => {
|
|
22839
|
+
const minBreakpoint = breakpoints[0];
|
|
22840
|
+
const maxBreakpoint = breakpoints[breakpoints.length - 1];
|
|
22841
|
+
// Convert breakpoints to pixel Y coordinates
|
|
22842
|
+
/**
|
|
22843
|
+
* The lowest point the sheet can be dragged to aka the point at which
|
|
22844
|
+
* the sheet is fully closed.
|
|
22845
|
+
*/
|
|
22846
|
+
const maxY = convertBreakpointToY(minBreakpoint);
|
|
22847
|
+
/**
|
|
22848
|
+
* The highest point the sheet can be dragged to aka the point at which
|
|
22849
|
+
* the sheet is fully open.
|
|
22850
|
+
*/
|
|
22851
|
+
const minY = convertBreakpointToY(maxBreakpoint);
|
|
22852
|
+
// The total distance between the fully open and fully closed positions.
|
|
22853
|
+
const totalDistance = maxY - minY;
|
|
22854
|
+
// The distance from the current position to the fully closed position.
|
|
22855
|
+
const distanceFromBottom = maxY - currentY;
|
|
22856
|
+
/**
|
|
22857
|
+
* The progress represents how far the sheet is from the bottom relative
|
|
22858
|
+
* to the total distance. When the user starts swiping up, the progress
|
|
22859
|
+
* should be close to 1, and when the user has swiped all the way down,
|
|
22860
|
+
* the progress should be close to 0.
|
|
22861
|
+
*/
|
|
22862
|
+
const progress = distanceFromBottom / totalDistance;
|
|
22863
|
+
// Round to the nearest thousandth to avoid returning very small decimal
|
|
22864
|
+
const roundedProgress = Math.round(progress * 1000) / 1000;
|
|
22865
|
+
return Math.max(0, Math.min(1, roundedProgress));
|
|
22866
|
+
};
|
|
22867
|
+
/**
|
|
22868
|
+
* Converts a breakpoint value (0 to 1) into a pixel Y coordinate
|
|
22869
|
+
* on the screen.
|
|
22870
|
+
*
|
|
22871
|
+
* @param breakpoint The breakpoint value (e.g., 0.5 for half-open)
|
|
22872
|
+
* @returns The pixel Y coordinate on the screen
|
|
22873
|
+
*/
|
|
22874
|
+
const convertBreakpointToY = (breakpoint) => {
|
|
22875
|
+
const rect = baseEl.getBoundingClientRect();
|
|
22876
|
+
const modalHeight = rect.height;
|
|
22877
|
+
// The bottom of the screen.
|
|
22878
|
+
const viewportBottom = window.innerHeight;
|
|
22879
|
+
/**
|
|
22880
|
+
* The active height is how much of the modal is actually showing
|
|
22881
|
+
* on the screen for this specific breakpoint.
|
|
22882
|
+
*/
|
|
22883
|
+
const activeHeight = modalHeight * breakpoint;
|
|
22884
|
+
/**
|
|
22885
|
+
* To find the Y coordinate, start at the bottom of the screen
|
|
22886
|
+
* and move up by the active height of the modal.
|
|
22887
|
+
*
|
|
22888
|
+
* A breakpoint of 1.0 means the active height is the full modal height
|
|
22889
|
+
* (fully open). A breakpoint of 0.0 means the active height is 0
|
|
22890
|
+
* (fully closed).
|
|
22891
|
+
*
|
|
22892
|
+
* Since screen Y coordinates get smaller as you go up, we subtract the
|
|
22893
|
+
* active height from the viewport bottom.
|
|
22894
|
+
*/
|
|
22895
|
+
return viewportBottom - activeHeight;
|
|
22896
|
+
};
|
|
22754
22897
|
const gesture = createGesture({
|
|
22755
22898
|
el: wrapperEl,
|
|
22756
22899
|
gestureName: 'modalSheet',
|
|
@@ -22795,6 +22938,9 @@ class Modal {
|
|
|
22795
22938
|
this.willDismissShorthand = createEvent(this, "willDismiss", 7);
|
|
22796
22939
|
this.didDismissShorthand = createEvent(this, "didDismiss", 7);
|
|
22797
22940
|
this.ionMount = createEvent(this, "ionMount", 7);
|
|
22941
|
+
this.ionDragStart = createEvent(this, "ionDragStart", 7);
|
|
22942
|
+
this.ionDragMove = createEvent(this, "ionDragMove", 7);
|
|
22943
|
+
this.ionDragEnd = createEvent(this, "ionDragEnd", 7);
|
|
22798
22944
|
this.lockController = createLockController();
|
|
22799
22945
|
this.triggerController = createTriggerController();
|
|
22800
22946
|
this.coreDelegate = CoreDelegate();
|
|
@@ -23262,32 +23408,7 @@ class Modal {
|
|
|
23262
23408
|
return;
|
|
23263
23409
|
}
|
|
23264
23410
|
const statusBarStyle = (_a = this.statusBarStyle) !== null && _a !== void 0 ? _a : Style.Default;
|
|
23265
|
-
this.gesture = createSwipeToCloseGesture(el, ani, statusBarStyle, () =>
|
|
23266
|
-
/**
|
|
23267
|
-
* While the gesture animation is finishing
|
|
23268
|
-
* it is possible for a user to tap the backdrop.
|
|
23269
|
-
* This would result in the dismiss animation
|
|
23270
|
-
* being played again. Typically this is avoided
|
|
23271
|
-
* by setting `presented = false` on the overlay
|
|
23272
|
-
* component; however, we cannot do that here as
|
|
23273
|
-
* that would prevent the element from being
|
|
23274
|
-
* removed from the DOM.
|
|
23275
|
-
*/
|
|
23276
|
-
this.gestureAnimationDismissing = true;
|
|
23277
|
-
/**
|
|
23278
|
-
* Reset the status bar style as the dismiss animation
|
|
23279
|
-
* starts otherwise the status bar will be the wrong
|
|
23280
|
-
* color for the duration of the dismiss animation.
|
|
23281
|
-
* The dismiss method does this as well, but
|
|
23282
|
-
* in this case it's only called once the animation
|
|
23283
|
-
* has finished.
|
|
23284
|
-
*/
|
|
23285
|
-
setCardStatusBarDefault(this.statusBarStyle);
|
|
23286
|
-
this.animation.onFinish(async () => {
|
|
23287
|
-
await this.dismiss(undefined, GESTURE);
|
|
23288
|
-
this.gestureAnimationDismissing = false;
|
|
23289
|
-
});
|
|
23290
|
-
});
|
|
23411
|
+
this.gesture = createSwipeToCloseGesture(el, ani, statusBarStyle, () => this.cardOnDismiss(), () => this.onDragStart(), (detail) => this.onDragMove(detail), (detail) => this.onDragEnd(detail));
|
|
23291
23412
|
this.gesture.enable(true);
|
|
23292
23413
|
}
|
|
23293
23414
|
initSheetGesture() {
|
|
@@ -23308,7 +23429,7 @@ class Modal {
|
|
|
23308
23429
|
this.currentBreakpoint = breakpoint;
|
|
23309
23430
|
this.ionBreakpointDidChange.emit({ breakpoint });
|
|
23310
23431
|
}
|
|
23311
|
-
});
|
|
23432
|
+
}, () => this.onDragStart(), (detail) => this.onDragMove(detail), (detail) => this.onDragEnd(detail));
|
|
23312
23433
|
this.gesture = gesture;
|
|
23313
23434
|
this.moveSheetToBreakpoint = moveSheetToBreakpoint;
|
|
23314
23435
|
this.gesture.enable(true);
|
|
@@ -23405,6 +23526,32 @@ class Modal {
|
|
|
23405
23526
|
this.gestureAnimationDismissing = false;
|
|
23406
23527
|
});
|
|
23407
23528
|
}
|
|
23529
|
+
cardOnDismiss() {
|
|
23530
|
+
/**
|
|
23531
|
+
* While the gesture animation is finishing
|
|
23532
|
+
* it is possible for a user to tap the backdrop.
|
|
23533
|
+
* This would result in the dismiss animation
|
|
23534
|
+
* being played again. Typically this is avoided
|
|
23535
|
+
* by setting `presented = false` on the overlay
|
|
23536
|
+
* component; however, we cannot do that here as
|
|
23537
|
+
* that would prevent the element from being
|
|
23538
|
+
* removed from the DOM.
|
|
23539
|
+
*/
|
|
23540
|
+
this.gestureAnimationDismissing = true;
|
|
23541
|
+
/**
|
|
23542
|
+
* Reset the status bar style as the dismiss animation
|
|
23543
|
+
* starts otherwise the status bar will be the wrong
|
|
23544
|
+
* color for the duration of the dismiss animation.
|
|
23545
|
+
* The dismiss method does this as well, but
|
|
23546
|
+
* in this case it's only called once the animation
|
|
23547
|
+
* has finished.
|
|
23548
|
+
*/
|
|
23549
|
+
setCardStatusBarDefault(this.statusBarStyle);
|
|
23550
|
+
this.animation.onFinish(async () => {
|
|
23551
|
+
await this.dismiss(undefined, GESTURE);
|
|
23552
|
+
this.gestureAnimationDismissing = false;
|
|
23553
|
+
});
|
|
23554
|
+
}
|
|
23408
23555
|
/**
|
|
23409
23556
|
* Dismiss the modal overlay after it has been presented.
|
|
23410
23557
|
* This is a no-op if the overlay has not been presented yet. If you want
|
|
@@ -23720,6 +23867,15 @@ class Modal {
|
|
|
23720
23867
|
(_a = this.parentRemovalObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
|
|
23721
23868
|
this.parentRemovalObserver = undefined;
|
|
23722
23869
|
}
|
|
23870
|
+
onDragStart() {
|
|
23871
|
+
this.ionDragStart.emit();
|
|
23872
|
+
}
|
|
23873
|
+
onDragMove(detail) {
|
|
23874
|
+
this.ionDragMove.emit(detail);
|
|
23875
|
+
}
|
|
23876
|
+
onDragEnd(detail) {
|
|
23877
|
+
this.ionDragEnd.emit(detail);
|
|
23878
|
+
}
|
|
23723
23879
|
render() {
|
|
23724
23880
|
const { handle, isSheetModal, presentingElement, htmlAttributes, handleBehavior, inheritedAttributes, focusTrap, expandToScroll, } = this;
|
|
23725
23881
|
const showHandle = handle !== false && isSheetModal;
|
|
@@ -23727,20 +23883,20 @@ class Modal {
|
|
|
23727
23883
|
const isCardModal = presentingElement !== undefined && mode === 'ios';
|
|
23728
23884
|
const isHandleCycle = handleBehavior === 'cycle';
|
|
23729
23885
|
const isSheetModalWithHandle = isSheetModal && showHandle;
|
|
23730
|
-
return (hAsync(Host, Object.assign({ key: '
|
|
23886
|
+
return (hAsync(Host, Object.assign({ key: 'bca3cbdb2ce8e5127d27eae7494c434aaeddaf88', "no-router": true,
|
|
23731
23887
|
// Allow the modal to be navigable when the handle is focusable
|
|
23732
23888
|
tabIndex: isHandleCycle && isSheetModalWithHandle ? 0 : -1 }, htmlAttributes, { style: {
|
|
23733
23889
|
zIndex: `${20000 + this.overlayIndex}`,
|
|
23734
|
-
}, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, 'overlay-hidden': true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle, onFocus: this.onModalFocus }), hAsync("ion-backdrop", { key: '
|
|
23890
|
+
}, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, 'overlay-hidden': true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle, onFocus: this.onModalFocus }), hAsync("ion-backdrop", { key: 'b1c4112123d84d8a9b9d455bcc17d884f99d9f28', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && hAsync("div", { key: '080c8e6d37b311a1b5ad2655d99f18668abae211', class: "modal-shadow" }), hAsync("div", Object.assign({ key: '8ba05e9520b1b5529bf0caeb766da5bf612d4d14',
|
|
23735
23891
|
/*
|
|
23736
23892
|
role and aria-modal must be used on the
|
|
23737
23893
|
same element. They must also be set inside the
|
|
23738
23894
|
shadow DOM otherwise ion-button will not be highlighted
|
|
23739
23895
|
when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
|
|
23740
23896
|
*/
|
|
23741
|
-
role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (hAsync("button", { key: '
|
|
23897
|
+
role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (hAsync("button", { key: '2d2d5d731f55755f32ebcbf557f97486dc6202a6', class: "modal-handle",
|
|
23742
23898
|
// Prevents the handle from receiving keyboard focus when it does not cycle
|
|
23743
|
-
tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle", ref: (el) => (this.dragHandleEl = el) })), hAsync("slot", { key: '
|
|
23899
|
+
tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle", ref: (el) => (this.dragHandleEl = el) })), hAsync("slot", { key: 'c717d19865dafba02e15db79bc0662c5d89e96fd', onSlotchange: this.onSlotChange }))));
|
|
23744
23900
|
}
|
|
23745
23901
|
get el() { return getElement(this); }
|
|
23746
23902
|
static get watchers() { return {
|
|
@@ -33491,9 +33647,9 @@ class SegmentContent {
|
|
|
33491
33647
|
}; }
|
|
33492
33648
|
}
|
|
33493
33649
|
|
|
33494
|
-
const segmentViewIosCss = ":host{display:-ms-flexbox;display:flex;height:100%;overflow-x:scroll;-webkit-scroll-snap-type:x mandatory;-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory;scrollbar-width:none;-ms-overflow-style:none}:host::-webkit-scrollbar{display:none}:host(.segment-view-disabled){-ms-touch-action:none;touch-action:none;overflow-x:hidden}:host(.segment-view-scroll-disabled){pointer-events:none}:host(.segment-view-disabled){opacity:0.3}";
|
|
33650
|
+
const segmentViewIosCss = ":host{display:-ms-flexbox;display:flex;height:100%;overflow-x:scroll;-webkit-scroll-snap-type:x mandatory;-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory;scrollbar-width:none;-ms-overflow-style:none}:host::-webkit-scrollbar{display:none}:host(.segment-view-disabled),:host(.segment-view-swipe-disabled){-ms-touch-action:none;touch-action:none;overflow-x:hidden}:host(.segment-view-scroll-disabled){pointer-events:none}:host(.segment-view-disabled){opacity:0.3}";
|
|
33495
33651
|
|
|
33496
|
-
const segmentViewMdCss = ":host{display:-ms-flexbox;display:flex;height:100%;overflow-x:scroll;-webkit-scroll-snap-type:x mandatory;-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory;scrollbar-width:none;-ms-overflow-style:none}:host::-webkit-scrollbar{display:none}:host(.segment-view-disabled){-ms-touch-action:none;touch-action:none;overflow-x:hidden}:host(.segment-view-scroll-disabled){pointer-events:none}:host(.segment-view-disabled){opacity:0.3}";
|
|
33652
|
+
const segmentViewMdCss = ":host{display:-ms-flexbox;display:flex;height:100%;overflow-x:scroll;-webkit-scroll-snap-type:x mandatory;-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory;scrollbar-width:none;-ms-overflow-style:none}:host::-webkit-scrollbar{display:none}:host(.segment-view-disabled),:host(.segment-view-swipe-disabled){-ms-touch-action:none;touch-action:none;overflow-x:hidden}:host(.segment-view-scroll-disabled){pointer-events:none}:host(.segment-view-disabled){opacity:0.3}";
|
|
33497
33653
|
|
|
33498
33654
|
class SegmentView {
|
|
33499
33655
|
constructor(hostRef) {
|
|
@@ -33505,6 +33661,10 @@ class SegmentView {
|
|
|
33505
33661
|
* If `true`, the segment view cannot be interacted with.
|
|
33506
33662
|
*/
|
|
33507
33663
|
this.disabled = false;
|
|
33664
|
+
/**
|
|
33665
|
+
* If `true`, users will be able to swipe the segment view to navigate between segment contents.
|
|
33666
|
+
*/
|
|
33667
|
+
this.swipeGesture = true;
|
|
33508
33668
|
}
|
|
33509
33669
|
handleScroll(ev) {
|
|
33510
33670
|
var _a;
|
|
@@ -33592,11 +33752,12 @@ class SegmentView {
|
|
|
33592
33752
|
return Array.from(this.el.querySelectorAll('ion-segment-content'));
|
|
33593
33753
|
}
|
|
33594
33754
|
render() {
|
|
33595
|
-
const { disabled, isManualScroll } = this;
|
|
33596
|
-
return (hAsync(Host, { key: '
|
|
33755
|
+
const { disabled, isManualScroll, swipeGesture } = this;
|
|
33756
|
+
return (hAsync(Host, { key: '565cccce7f0cfc4c71508777cc60292d6f24334f', class: {
|
|
33597
33757
|
'segment-view-disabled': disabled,
|
|
33598
33758
|
'segment-view-scroll-disabled': isManualScroll === false,
|
|
33599
|
-
|
|
33759
|
+
'segment-view-swipe-disabled': swipeGesture === false,
|
|
33760
|
+
} }, hAsync("slot", { key: '4118c240364467302b8f593e33c37837ea5d06f0' })));
|
|
33600
33761
|
}
|
|
33601
33762
|
get el() { return getElement(this); }
|
|
33602
33763
|
static get style() { return {
|
|
@@ -33608,6 +33769,7 @@ class SegmentView {
|
|
|
33608
33769
|
"$tagName$": "ion-segment-view",
|
|
33609
33770
|
"$members$": {
|
|
33610
33771
|
"disabled": [4],
|
|
33772
|
+
"swipeGesture": [4, "swipe-gesture"],
|
|
33611
33773
|
"isManualScroll": [32],
|
|
33612
33774
|
"setContent": [64]
|
|
33613
33775
|
},
|
|
@@ -33637,6 +33799,9 @@ const selectMdCss = ":host{--padding-top:0px;--padding-end:0px;--padding-bottom:
|
|
|
33637
33799
|
* @part supporting-text - Supporting text displayed beneath the select.
|
|
33638
33800
|
* @part helper-text - Supporting text displayed beneath the select when the select is valid.
|
|
33639
33801
|
* @part error-text - Supporting text displayed beneath the select when the select is invalid and touched.
|
|
33802
|
+
* @part bottom - The container element for helper text, error text, and counter.
|
|
33803
|
+
* @part wrapper - The clickable label element that wraps the entire form field (label text, slots, selected values or placeholder, and toggle icons).
|
|
33804
|
+
* @part inner - The inner element of the wrapper that manages the slots, selected values or placeholder, and toggle icons.
|
|
33640
33805
|
*/
|
|
33641
33806
|
class Select {
|
|
33642
33807
|
constructor(hostRef) {
|
|
@@ -34333,7 +34498,7 @@ class Select {
|
|
|
34333
34498
|
if (!hasHintText) {
|
|
34334
34499
|
return;
|
|
34335
34500
|
}
|
|
34336
|
-
return hAsync("div", { class: "select-bottom" }, this.renderHintText());
|
|
34501
|
+
return (hAsync("div", { class: "select-bottom", part: "bottom" }, this.renderHintText()));
|
|
34337
34502
|
}
|
|
34338
34503
|
render() {
|
|
34339
34504
|
const { disabled, el, isExpanded, expandedIcon, labelPlacement, justify, placeholder, fill, shape, name, value, hasFocus, } = this;
|
|
@@ -34364,7 +34529,7 @@ class Select {
|
|
|
34364
34529
|
* TODO(FW-5592): Remove hasStartEndSlots condition
|
|
34365
34530
|
*/
|
|
34366
34531
|
const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || isExpanded || hasStartEndSlots));
|
|
34367
|
-
return (hAsync(Host, { key: '
|
|
34532
|
+
return (hAsync(Host, { key: 'ada627c442ebcdd4a4ee96e5f5f3ec0e2181d689', onClick: this.onClick, class: createColorClasses$1(this.color, {
|
|
34368
34533
|
[mode]: true,
|
|
34369
34534
|
'in-item': inItem,
|
|
34370
34535
|
'in-item-color': hostContext('ion-item.ion-color', el),
|
|
@@ -34382,7 +34547,7 @@ class Select {
|
|
|
34382
34547
|
[`select-justify-${justify}`]: justifyEnabled,
|
|
34383
34548
|
[`select-shape-${shape}`]: shape !== undefined,
|
|
34384
34549
|
[`select-label-placement-${labelPlacement}`]: true,
|
|
34385
|
-
}) }, hAsync("label", { key: '
|
|
34550
|
+
}) }, hAsync("label", { key: 'd1c4663e740cfdcd28f90a5e0297d05cf42cc4df', class: "select-wrapper", id: "select-label", onClick: this.onLabelClick, part: "wrapper" }, this.renderLabelContainer(), hAsync("div", { key: 'cd671e0b543378e7b822ce649a7b4006094b111f', class: "select-wrapper-inner", part: "inner" }, hAsync("slot", { key: '48e7df0c517a382195736273019b855e422a82ed', name: "start" }), hAsync("div", { key: '822747ffb9101cb1d3ff947da55bc2e8e1f2c8e2', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), hAsync("slot", { key: '349200d9f9ebf25e0b8708ac8683a76e7c6ed33c', name: "end" }), !hasFloatingOrStackedLabel && this.renderSelectIcon()), hasFloatingOrStackedLabel && this.renderSelectIcon(), shouldRenderHighlight && hAsync("div", { key: '7eefb70d431cb9c01cc408d35349f7a3d0f2af35', class: "select-highlight" })), this.renderBottomContent()));
|
|
34386
34551
|
}
|
|
34387
34552
|
get el() { return getElement(this); }
|
|
34388
34553
|
static get watchers() { return {
|
|
@@ -35876,7 +36041,7 @@ class Textarea {
|
|
|
35876
36041
|
* TODO(FW-5592): Remove hasStartEndSlots condition
|
|
35877
36042
|
*/
|
|
35878
36043
|
const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
|
|
35879
|
-
return (hAsync(Host, { key: '
|
|
36044
|
+
return (hAsync(Host, { key: '543076e7ed730451b490a9008cabe8f4a5d1f347', class: createColorClasses$1(this.color, {
|
|
35880
36045
|
[mode]: true,
|
|
35881
36046
|
'has-value': hasValue,
|
|
35882
36047
|
'has-focus': hasFocus,
|
|
@@ -35885,7 +36050,7 @@ class Textarea {
|
|
|
35885
36050
|
[`textarea-shape-${shape}`]: shape !== undefined,
|
|
35886
36051
|
[`textarea-label-placement-${labelPlacement}`]: true,
|
|
35887
36052
|
'textarea-disabled': disabled,
|
|
35888
|
-
}) }, hAsync("label", { key: '
|
|
36053
|
+
}) }, hAsync("label", { key: '3aebaa02edde10e19b2bbe2fbcc10f70b4faccff', class: "textarea-wrapper", htmlFor: inputId, onClick: this.onLabelClick }, this.renderLabelContainer(), hAsync("div", { key: '73c1c7fee0ffffe65296060dd4110003d3975c44', class: "textarea-wrapper-inner" }, hAsync("div", { key: '5a245b822afae0b9858ef0d176a2fe06983954e2', class: "start-slot-wrapper" }, hAsync("slot", { key: '684305a1b558f93af6eb99825981ced1c09c7a8c', name: "start" })), hAsync("div", { key: 'f2f723b674cff48cf76656450ff6c1362514ea90', class: "native-wrapper", ref: (el) => (this.textareaWrapper = el) }, hAsync("textarea", Object.assign({ key: 'ae826e876a4b476502498b9c64ea020010c55db3', class: "native-textarea", ref: (el) => (this.nativeInput = el), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, minLength: this.minlength, maxLength: this.maxlength, name: this.name, placeholder: this.placeholder || '', readOnly: this.readonly, required: this.required, spellcheck: this.spellcheck, cols: this.cols, rows: this.rows, wrap: this.wrap, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeyDown, "aria-describedby": this.getHintTextID(), "aria-invalid": this.isInvalid ? 'true' : undefined }, this.inheritedAttributes), value)), hAsync("div", { key: '018cbf061fb53aa1d1caf6173fd08348cbe3413a', class: "end-slot-wrapper" }, hAsync("slot", { key: 'c383636f2d8a548e48848d0967f71ee1969b1411', name: "end" }))), shouldRenderHighlight && hAsync("div", { key: '6522d2058f9842abad9e7223b542cb7e1af40477', class: "textarea-highlight" })), this.renderBottomContent()));
|
|
35889
36054
|
}
|
|
35890
36055
|
get el() { return getElement(this); }
|
|
35891
36056
|
static get watchers() { return {
|
|
@@ -35906,7 +36071,7 @@ class Textarea {
|
|
|
35906
36071
|
"autofocus": [4],
|
|
35907
36072
|
"clearOnEdit": [4, "clear-on-edit"],
|
|
35908
36073
|
"debounce": [2],
|
|
35909
|
-
"disabled": [
|
|
36074
|
+
"disabled": [516],
|
|
35910
36075
|
"fill": [1],
|
|
35911
36076
|
"inputmode": [1],
|
|
35912
36077
|
"enterkeyhint": [1],
|
|
@@ -35914,7 +36079,7 @@ class Textarea {
|
|
|
35914
36079
|
"minlength": [2],
|
|
35915
36080
|
"name": [1],
|
|
35916
36081
|
"placeholder": [1],
|
|
35917
|
-
"readonly": [
|
|
36082
|
+
"readonly": [516],
|
|
35918
36083
|
"required": [4],
|
|
35919
36084
|
"spellcheck": [4],
|
|
35920
36085
|
"cols": [514],
|
|
@@ -35936,7 +36101,7 @@ class Textarea {
|
|
|
35936
36101
|
},
|
|
35937
36102
|
"$listeners$": [[2, "click", "onClickCapture"]],
|
|
35938
36103
|
"$lazyBundleId$": "-",
|
|
35939
|
-
"$attrsToReflect$": [["color", "color"], ["cols", "cols"], ["autoGrow", "auto-grow"]]
|
|
36104
|
+
"$attrsToReflect$": [["color", "color"], ["disabled", "disabled"], ["readonly", "readonly"], ["cols", "cols"], ["autoGrow", "auto-grow"]]
|
|
35940
36105
|
}; }
|
|
35941
36106
|
}
|
|
35942
36107
|
let textareaIds = 0;
|