voyager-ionic-core 8.3.3 → 8.3.4
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/action-sheet.js +2 -2
- package/components/alert.js +1 -1
- package/components/backdrop.js +1 -1
- package/components/ion-input.js +20 -5
- package/components/ion-loading.js +1 -1
- package/components/ion-picker-legacy.js +1 -1
- package/components/ion-textarea.js +19 -4
- package/components/overlays.js +62 -7
- package/dist/cjs/index.cjs.js +1 -1
- package/dist/cjs/ion-action-sheet.cjs.entry.js +3 -3
- package/dist/cjs/ion-alert.cjs.entry.js +2 -2
- package/dist/cjs/ion-backdrop.cjs.entry.js +1 -1
- package/dist/cjs/ion-datetime_3.cjs.entry.js +2 -2
- package/dist/cjs/ion-input.cjs.entry.js +20 -5
- package/dist/cjs/ion-loading.cjs.entry.js +2 -2
- package/dist/cjs/ion-menu_3.cjs.entry.js +1 -1
- package/dist/cjs/ion-modal.cjs.entry.js +1 -1
- package/dist/cjs/ion-popover.cjs.entry.js +1 -1
- package/dist/cjs/ion-select_3.cjs.entry.js +1 -1
- package/dist/cjs/ion-textarea.cjs.entry.js +19 -4
- package/dist/cjs/ion-toast.cjs.entry.js +1 -1
- package/dist/cjs/{overlays-0123d7d4.js → overlays-ba0f6986.js} +62 -7
- package/dist/collection/components/action-sheet/action-sheet.js +2 -2
- package/dist/collection/components/alert/alert.js +1 -1
- package/dist/collection/components/backdrop/backdrop.js +1 -1
- package/dist/collection/components/input/input.js +20 -5
- package/dist/collection/components/loading/loading.js +1 -1
- package/dist/collection/components/picker-legacy/picker.js +1 -1
- package/dist/collection/components/textarea/textarea.js +19 -4
- package/dist/collection/utils/overlays.js +62 -7
- package/dist/docs.json +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/ion-action-sheet.entry.js +3 -3
- package/dist/esm/ion-alert.entry.js +2 -2
- package/dist/esm/ion-backdrop.entry.js +1 -1
- package/dist/esm/ion-datetime_3.entry.js +2 -2
- package/dist/esm/ion-input.entry.js +20 -5
- package/dist/esm/ion-loading.entry.js +2 -2
- package/dist/esm/ion-menu_3.entry.js +1 -1
- package/dist/esm/ion-modal.entry.js +1 -1
- package/dist/esm/ion-popover.entry.js +1 -1
- package/dist/esm/ion-select_3.entry.js +1 -1
- package/dist/esm/ion-textarea.entry.js +19 -4
- package/dist/esm/ion-toast.entry.js +1 -1
- package/dist/esm/{overlays-9c75ec54.js → overlays-ae10d43d.js} +62 -7
- package/dist/esm-es5/index.js +1 -1
- package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
- package/dist/esm-es5/ion-alert.entry.js +1 -1
- package/dist/esm-es5/ion-backdrop.entry.js +1 -1
- package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
- package/dist/esm-es5/ion-input.entry.js +1 -1
- package/dist/esm-es5/ion-loading.entry.js +1 -1
- package/dist/esm-es5/ion-menu_3.entry.js +1 -1
- package/dist/esm-es5/ion-modal.entry.js +1 -1
- package/dist/esm-es5/ion-popover.entry.js +1 -1
- package/dist/esm-es5/ion-select_3.entry.js +1 -1
- package/dist/esm-es5/ion-textarea.entry.js +1 -1
- package/dist/esm-es5/ion-toast.entry.js +1 -1
- package/dist/esm-es5/overlays-ae10d43d.js +4 -0
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/p-04fc24ee.system.js +4 -0
- package/dist/ionic/{p-ecb57d24.system.entry.js → p-0790b342.system.entry.js} +1 -1
- package/dist/ionic/{p-100b83fd.system.entry.js → p-110e03be.system.entry.js} +1 -1
- package/dist/ionic/p-148b8abb.entry.js +4 -0
- package/dist/ionic/{p-4b0fedb7.system.entry.js → p-18105026.system.entry.js} +1 -1
- package/dist/ionic/p-322c5fb4.system.js +1 -1
- package/dist/ionic/{p-d57661a1.entry.js → p-41c89b8d.entry.js} +1 -1
- package/dist/ionic/{p-772dacba.system.entry.js → p-53add985.system.entry.js} +1 -1
- package/dist/ionic/p-5c831f49.js +4 -0
- package/dist/ionic/p-60cc7986.entry.js +4 -0
- package/dist/ionic/{p-a72fb8a1.system.entry.js → p-63d65dbc.system.entry.js} +1 -1
- package/dist/ionic/p-6ceb04b5.entry.js +4 -0
- package/dist/ionic/{p-9fef1364.entry.js → p-6d50faff.entry.js} +1 -1
- package/dist/ionic/{p-a4d51b8d.system.js → p-79b12fda.system.js} +1 -1
- package/dist/ionic/{p-8ed31163.system.entry.js → p-79e7be3a.system.entry.js} +1 -1
- package/dist/ionic/{p-22c020db.system.entry.js → p-857ca696.system.entry.js} +1 -1
- package/dist/ionic/{p-9c23044d.entry.js → p-87a4407b.entry.js} +1 -1
- package/dist/ionic/{p-2b7c93b4.entry.js → p-9895e7f3.entry.js} +1 -1
- package/dist/ionic/p-9910f786.entry.js +4 -0
- package/dist/ionic/{p-5e66bcf2.entry.js → p-9e208825.entry.js} +1 -1
- package/dist/ionic/p-a89dac49.entry.js +4 -0
- package/dist/ionic/{p-755b27f0.system.entry.js → p-be715dd3.system.entry.js} +1 -1
- package/dist/ionic/{p-ed6962d3.system.entry.js → p-be71fe0f.system.entry.js} +1 -1
- package/dist/ionic/{p-cff5585e.system.entry.js → p-c71f301f.system.entry.js} +1 -1
- package/dist/ionic/{p-a41699db.entry.js → p-d58f21d2.entry.js} +1 -1
- package/dist/ionic/{p-f50ae0d5.system.entry.js → p-d754c709.system.entry.js} +1 -1
- package/dist/ionic/p-dda5c73d.entry.js +4 -0
- package/dist/ionic/{p-9cc3bcc5.system.entry.js → p-f0ab13a8.system.entry.js} +1 -1
- package/dist/types/components/input/input.d.ts +3 -0
- package/dist/types/components/textarea/textarea.d.ts +3 -0
- package/hydrate/index.js +107 -22
- package/hydrate/index.mjs +107 -22
- package/package.json +1 -1
- package/dist/esm-es5/overlays-9c75ec54.js +0 -4
- package/dist/ionic/p-0fa0c92b.entry.js +0 -4
- package/dist/ionic/p-2c4bdd9d.entry.js +0 -4
- package/dist/ionic/p-98871496.system.js +0 -4
- package/dist/ionic/p-a440397c.js +0 -4
- package/dist/ionic/p-ab8a2ff1.entry.js +0 -4
- package/dist/ionic/p-b4c950f8.entry.js +0 -4
- package/dist/ionic/p-bfa2e81c.entry.js +0 -4
- package/dist/ionic/p-d77e12ca.entry.js +0 -4
|
@@ -294,10 +294,10 @@ const ActionSheet = /*@__PURE__*/ proxyCustomElement(class ActionSheet extends H
|
|
|
294
294
|
const headerID = `action-sheet-${overlayIndex}-header`;
|
|
295
295
|
return (h(Host, Object.assign({ key: '7bbd202ca9e19727e7514abbe073687d982f80c3', role: "dialog", "aria-modal": "true", "aria-labelledby": header !== undefined ? headerID : null, tabindex: "-1" }, htmlAttributes, { style: {
|
|
296
296
|
zIndex: `${20000 + this.overlayIndex}`,
|
|
297
|
-
}, 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: '23344a9221a2e6720d7b9de5249dc37256cafa7b', tappable: this.backdropDismiss }), h("div", { key: '
|
|
297
|
+
}, 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: '23344a9221a2e6720d7b9de5249dc37256cafa7b', tappable: this.backdropDismiss }), h("div", { key: 'fbc2ba15549c2ab04e759e82df6e177fd80cc0a6', tabindex: "0", "aria-hidden": "true" }), h("div", { key: '748ee5235d0b4cb26d6f1b7589f77af2e37ad28a', class: "action-sheet-wrapper ion-overlay-wrapper", ref: (el) => (this.wrapperEl = el) }, h("div", { key: '7ce5fa236cf75e9b1e49c4725c9a811078706554', class: "action-sheet-container" }, h("div", { key: 'dc2251f3bcee4a93e3449f09621cbd2b65d329e9', class: "action-sheet-group", ref: (el) => (this.groupEl = el) }, header !== undefined && (h("div", { key: '48d325c8a852f56ed57a9ada1a6709d05ba32ee2', id: headerID, class: {
|
|
298
298
|
'action-sheet-title': true,
|
|
299
299
|
'action-sheet-has-sub-title': this.subHeader !== undefined,
|
|
300
|
-
} }, header, this.subHeader && h("div", { key: '
|
|
300
|
+
} }, header, this.subHeader && h("div", { key: '66093728052eb67f37a35f3232761ce4a08896f3', class: "action-sheet-sub-title" }, this.subHeader))), buttons.map((b) => (h("button", Object.assign({}, b.htmlAttributes, { type: "button", id: b.id, class: buttonClass(b), onClick: () => this.buttonClick(b), disabled: b.disabled }), h("span", { class: "action-sheet-button-inner" }, b.icon && h("ion-icon", { icon: b.icon, "aria-hidden": "true", lazy: false, class: "action-sheet-icon" }), b.text), mode === 'md' && h("ion-ripple-effect", null))))), cancelButton && (h("div", { key: 'f4eb8e3e2885b85af5080df18d0de0bdd1d719de', class: "action-sheet-group action-sheet-group-cancel" }, h("button", Object.assign({ key: '169f4eb09255aba85062baad49ceb151239fbfb7' }, cancelButton.htmlAttributes, { type: "button", class: buttonClass(cancelButton), onClick: () => this.buttonClick(cancelButton) }), h("span", { key: '25fb8a466dd67ea94c79cfb4f9965527e1ce6d42', class: "action-sheet-button-inner" }, cancelButton.icon && (h("ion-icon", { key: 'eb5b071e120a2c86afdf967af6a763a43044d1ca', icon: cancelButton.icon, "aria-hidden": "true", lazy: false, class: "action-sheet-icon" })), cancelButton.text), mode === 'md' && h("ion-ripple-effect", { key: '452ad7e1052b2c681e2d98de8193949755ad4d54' })))))), h("div", { key: 'e1cecf280c987c050d9445e2c458b903f153089b', tabindex: "0", "aria-hidden": "true" })));
|
|
301
301
|
}
|
|
302
302
|
get el() { return this; }
|
|
303
303
|
static get watchers() { return {
|
package/components/alert.js
CHANGED
|
@@ -491,7 +491,7 @@ const Alert = /*@__PURE__*/ proxyCustomElement(class Alert extends HTMLElement {
|
|
|
491
491
|
const ariaLabelledBy = header ? hdrId : subHeader ? subHdrId : null;
|
|
492
492
|
return (h(Host, Object.assign({ key: 'c7d53f48b359f2bc3480a2e1ba34948fc9378fb0', role: role, "aria-modal": "true", "aria-labelledby": ariaLabelledBy, "aria-describedby": message !== undefined ? msgId : null, tabindex: "-1" }, htmlAttributes, { style: {
|
|
493
493
|
zIndex: `${20000 + overlayIndex}`,
|
|
494
|
-
}, 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: '18c7e6b5d63435d9a6a82bda951158e7e1af6e92', tappable: this.backdropDismiss }), h("div", { key: '
|
|
494
|
+
}, 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: '18c7e6b5d63435d9a6a82bda951158e7e1af6e92', tappable: this.backdropDismiss }), h("div", { key: '8ea08a2a70239e817442c12596f51b108aca428c', tabindex: "0", "aria-hidden": "true" }), h("div", { key: '215ca5d72b8b180788e9748f5f22de01fa5a152a', class: "alert-wrapper ion-overlay-wrapper", ref: (el) => (this.wrapperEl = el) }, h("div", { key: '9880acd318428d4b5d670c67dd156477877f99f2', class: "alert-head" }, header && (h("h2", { key: '612dec8dc9bfdcb36e1e4655dc214b7c229b20c8', id: hdrId, class: "alert-title" }, header)), subHeader && (h("h2", { key: 'e3c54c80a1cd9399595064b5a0a887c16fdc8ff8', id: subHdrId, class: "alert-sub-title" }, subHeader))), this.renderAlertMessage(msgId), this.renderAlertInputs(), this.renderAlertButtons()), h("div", { key: '9062655e906b5caf36df6f742fd412552ae510be', tabindex: "0", "aria-hidden": "true" })));
|
|
495
495
|
}
|
|
496
496
|
get el() { return this; }
|
|
497
497
|
static get watchers() { return {
|
package/components/backdrop.js
CHANGED
|
@@ -34,7 +34,7 @@ const Backdrop = /*@__PURE__*/ proxyCustomElement(class Backdrop extends HTMLEle
|
|
|
34
34
|
}
|
|
35
35
|
render() {
|
|
36
36
|
const mode = getIonMode(this);
|
|
37
|
-
return (h(Host, { key: '
|
|
37
|
+
return (h(Host, { key: 'fe191068e2aaadfdbe7a463c08d227a1b36d7a98', "aria-hidden": "true", class: {
|
|
38
38
|
[mode]: true,
|
|
39
39
|
'backdrop-hide': !this.visible,
|
|
40
40
|
'backdrop-no-tappable': !this.tappable,
|
package/components/ion-input.js
CHANGED
|
@@ -25,6 +25,8 @@ const Input = /*@__PURE__*/ proxyCustomElement(class Input extends HTMLElement {
|
|
|
25
25
|
this.ionBlur = createEvent(this, "ionBlur", 7);
|
|
26
26
|
this.ionFocus = createEvent(this, "ionFocus", 7);
|
|
27
27
|
this.inputId = `ion-input-${inputIds++}`;
|
|
28
|
+
this.helperTextId = `${this.inputId}-helper-text`;
|
|
29
|
+
this.errorTextId = `${this.inputId}-error-text`;
|
|
28
30
|
this.inheritedAttributes = {};
|
|
29
31
|
this.isComposing = false;
|
|
30
32
|
/**
|
|
@@ -297,8 +299,21 @@ const Input = /*@__PURE__*/ proxyCustomElement(class Input extends HTMLElement {
|
|
|
297
299
|
* Renders the helper text or error text values
|
|
298
300
|
*/
|
|
299
301
|
renderHintText() {
|
|
300
|
-
const { helperText, errorText } = this;
|
|
301
|
-
return [
|
|
302
|
+
const { helperText, errorText, helperTextId, errorTextId } = this;
|
|
303
|
+
return [
|
|
304
|
+
h("div", { id: helperTextId, class: "helper-text" }, helperText),
|
|
305
|
+
h("div", { id: errorTextId, class: "error-text" }, errorText),
|
|
306
|
+
];
|
|
307
|
+
}
|
|
308
|
+
getHintTextID() {
|
|
309
|
+
const { el, helperText, errorText, helperTextId, errorTextId } = this;
|
|
310
|
+
if (el.classList.contains('ion-touched') && el.classList.contains('ion-invalid') && errorText) {
|
|
311
|
+
return errorTextId;
|
|
312
|
+
}
|
|
313
|
+
if (helperText) {
|
|
314
|
+
return helperTextId;
|
|
315
|
+
}
|
|
316
|
+
return undefined;
|
|
302
317
|
}
|
|
303
318
|
renderCounter() {
|
|
304
319
|
const { counter, maxlength, counterFormatter, value } = this;
|
|
@@ -405,7 +420,7 @@ const Input = /*@__PURE__*/ proxyCustomElement(class Input extends HTMLElement {
|
|
|
405
420
|
* TODO(FW-5592): Remove hasStartEndSlots condition
|
|
406
421
|
*/
|
|
407
422
|
const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
|
|
408
|
-
return (h(Host, { key: '
|
|
423
|
+
return (h(Host, { key: 'cdde9963d71685e6a4f3f3b3bc52e75d022435cb', class: createColorClasses(this.color, {
|
|
409
424
|
[mode]: true,
|
|
410
425
|
'has-value': hasValue,
|
|
411
426
|
'has-focus': hasFocus,
|
|
@@ -416,7 +431,7 @@ const Input = /*@__PURE__*/ proxyCustomElement(class Input extends HTMLElement {
|
|
|
416
431
|
'in-item': inItem,
|
|
417
432
|
'in-item-color': hostContext('ion-item.ion-color', this.el),
|
|
418
433
|
'input-disabled': disabled,
|
|
419
|
-
}) }, h("label", { key: '
|
|
434
|
+
}) }, h("label", { key: '4412791c93405f20e50e50363879265180b6078f', class: "input-wrapper", htmlFor: inputId }, this.renderLabelContainer(), h("div", { key: '5c71c43ef3eeb44dde76ed64ce10763834c8fbc7', class: "native-wrapper" }, h("slot", { key: '1d86b58dc299a4208dd02ccdc9ceaea7576698c3', name: "start" }), h("input", Object.assign({ key: '7fc932174485f7d09e6a797dfd49ea11fbad71b6', class: "native-input", ref: (input) => (this.nativeInput = input), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, min: this.min, max: this.max, minLength: this.minlength, maxLength: this.maxlength, multiple: this.multiple, name: this.name, pattern: this.pattern, placeholder: this.placeholder || '', readOnly: readonly, required: this.required, spellcheck: this.spellcheck, step: this.step, type: this.type, value: value, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeydown, onCompositionstart: this.onCompositionStart, onCompositionend: this.onCompositionEnd, "aria-describedby": this.getHintTextID(), "aria-invalid": this.getHintTextID() === this.errorTextId }, this.inheritedAttributes)), this.clearInput && !readonly && !disabled && (h("button", { key: '46de455e4e308b8d7640b04778f7c7559b4124c6', "aria-label": "reset", type: "button", class: "input-clear-icon", onPointerDown: (ev) => {
|
|
420
435
|
/**
|
|
421
436
|
* This prevents mobile browsers from
|
|
422
437
|
* blurring the input when the clear
|
|
@@ -431,7 +446,7 @@ const Input = /*@__PURE__*/ proxyCustomElement(class Input extends HTMLElement {
|
|
|
431
446
|
* for screen readers as it means users would be unable to swipe past the clear button.
|
|
432
447
|
*/
|
|
433
448
|
ev.stopPropagation();
|
|
434
|
-
}, onClick: this.clearTextInput }, h("ion-icon", { key: '
|
|
449
|
+
}, onClick: this.clearTextInput }, h("ion-icon", { key: '375e860a20e1807ce0db0e1934a0650fe9929966', "aria-hidden": "true", icon: clearIconData }))), h("slot", { key: '859d47a1b88aa8377479e5d11e52a6a1c1c30e7e', name: "end" })), shouldRenderHighlight && h("div", { key: 'd2d4286b348107e33247b5c0afda0f8bd697ecee', class: "input-highlight" })), this.renderBottomContent()));
|
|
435
450
|
}
|
|
436
451
|
get el() { return this; }
|
|
437
452
|
static get watchers() { return {
|
|
@@ -261,7 +261,7 @@ const Loading = /*@__PURE__*/ proxyCustomElement(class Loading extends HTMLEleme
|
|
|
261
261
|
const ariaLabelledBy = message !== undefined ? msgId : null;
|
|
262
262
|
return (h(Host, Object.assign({ key: 'fb3d2cd7cd0539ed6540d8be50e243c7916b3ca2', role: "dialog", "aria-modal": "true", "aria-labelledby": ariaLabelledBy, tabindex: "-1" }, htmlAttributes, { style: {
|
|
263
263
|
zIndex: `${40000 + this.overlayIndex}`,
|
|
264
|
-
}, onIonBackdropTap: this.onBackdropTap, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'loading-translucent': this.translucent }) }), h("ion-backdrop", { key: 'c8bd30782f3040b1b80e88aa924861e439d40754', visible: this.showBackdrop, tappable: this.backdropDismiss }), h("div", { key: '
|
|
264
|
+
}, onIonBackdropTap: this.onBackdropTap, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'loading-translucent': this.translucent }) }), h("ion-backdrop", { key: 'c8bd30782f3040b1b80e88aa924861e439d40754', visible: this.showBackdrop, tappable: this.backdropDismiss }), h("div", { key: '7ad4447fafa49aa861d311221b8c2e8171b4c610', tabindex: "0", "aria-hidden": "true" }), h("div", { key: '1879df0d895eb8ee20ccdc94dd35d708c1140b91', class: "loading-wrapper ion-overlay-wrapper" }, spinner && (h("div", { key: '220f292c136681f5fa91f94669aac75b15e490ce', class: "loading-spinner" }, h("ion-spinner", { key: 'd599084a1426d941bdd080a988d8ad5b9589b823', name: spinner, "aria-hidden": "true" }))), message !== undefined && this.renderLoadingMessage(msgId)), h("div", { key: 'e443897b353a48e0c72718dba04d83d7c5070d73', tabindex: "0", "aria-hidden": "true" })));
|
|
265
265
|
}
|
|
266
266
|
get el() { return this; }
|
|
267
267
|
static get watchers() { return {
|
|
@@ -247,7 +247,7 @@ const Picker = /*@__PURE__*/ proxyCustomElement(class Picker extends HTMLElement
|
|
|
247
247
|
zIndex: `${20000 + this.overlayIndex}`,
|
|
248
248
|
}, class: Object.assign({ [mode]: true,
|
|
249
249
|
// Used internally for styling
|
|
250
|
-
[`picker-${mode}`]: true, 'overlay-hidden': true }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonPickerWillDismiss: this.dispatchCancelHandler }), h("ion-backdrop", { key: 'da4224447bdbcfbadd1bd63ebe7a7bfdb8aa3129', visible: this.showBackdrop, tappable: this.backdropDismiss }), h("div", { key: '
|
|
250
|
+
[`picker-${mode}`]: true, 'overlay-hidden': true }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonPickerWillDismiss: this.dispatchCancelHandler }), h("ion-backdrop", { key: 'da4224447bdbcfbadd1bd63ebe7a7bfdb8aa3129', visible: this.showBackdrop, tappable: this.backdropDismiss }), h("div", { key: '65eba425990a21be00fdac90de20a630d284cf97', tabindex: "0", "aria-hidden": "true" }), h("div", { key: 'd78ada360801b2c051baa030751f3d83ac81e697', class: "picker-wrapper ion-overlay-wrapper", role: "dialog" }, h("div", { key: 'd5bd9ddfbdbdaf42048a1496e7939eb3aee6da65', class: "picker-toolbar" }, this.buttons.map((b) => (h("div", { class: buttonWrapperClass(b) }, h("button", { type: "button", onClick: () => this.buttonClick(b), class: buttonClass(b) }, b.text))))), h("div", { key: '96ee1e3ec77c57174b1a93135b66bea6b7002555', class: "picker-columns" }, h("div", { key: 'e11b1c238f350e65bde2ee67eee9d71c830e74e7', class: "picker-above-highlight" }), this.presented && this.columns.map((c) => h("ion-picker-legacy-column", { col: c })), h("div", { key: '4d5fc7c723185111ec01fd34ef95a897c301238d', class: "picker-below-highlight" }))), h("div", { key: '899bcad97609c1d971c1b886551db5ba0248a9f4', tabindex: "0", "aria-hidden": "true" })));
|
|
251
251
|
}
|
|
252
252
|
get el() { return this; }
|
|
253
253
|
static get watchers() { return {
|
|
@@ -23,6 +23,8 @@ const Textarea = /*@__PURE__*/ proxyCustomElement(class Textarea extends HTMLEle
|
|
|
23
23
|
this.ionBlur = createEvent(this, "ionBlur", 7);
|
|
24
24
|
this.ionFocus = createEvent(this, "ionFocus", 7);
|
|
25
25
|
this.inputId = `ion-textarea-${textareaIds++}`;
|
|
26
|
+
this.helperTextId = `${this.inputId}-helper-text`;
|
|
27
|
+
this.errorTextId = `${this.inputId}-error-text`;
|
|
26
28
|
/**
|
|
27
29
|
* `true` if the textarea was cleared as a result of the user typing
|
|
28
30
|
* with `clearOnEdit` enabled.
|
|
@@ -310,8 +312,21 @@ const Textarea = /*@__PURE__*/ proxyCustomElement(class Textarea extends HTMLEle
|
|
|
310
312
|
* Renders the helper text or error text values
|
|
311
313
|
*/
|
|
312
314
|
renderHintText() {
|
|
313
|
-
const { helperText, errorText } = this;
|
|
314
|
-
return [
|
|
315
|
+
const { helperText, errorText, helperTextId, errorTextId } = this;
|
|
316
|
+
return [
|
|
317
|
+
h("div", { id: helperTextId, class: "helper-text" }, helperText),
|
|
318
|
+
h("div", { id: errorTextId, class: "error-text" }, errorText),
|
|
319
|
+
];
|
|
320
|
+
}
|
|
321
|
+
getHintTextID() {
|
|
322
|
+
const { el, helperText, errorText, helperTextId, errorTextId } = this;
|
|
323
|
+
if (el.classList.contains('ion-touched') && el.classList.contains('ion-invalid') && errorText) {
|
|
324
|
+
return errorTextId;
|
|
325
|
+
}
|
|
326
|
+
if (helperText) {
|
|
327
|
+
return helperTextId;
|
|
328
|
+
}
|
|
329
|
+
return undefined;
|
|
315
330
|
}
|
|
316
331
|
renderCounter() {
|
|
317
332
|
const { counter, maxlength, counterFormatter, value } = this;
|
|
@@ -364,7 +379,7 @@ const Textarea = /*@__PURE__*/ proxyCustomElement(class Textarea extends HTMLEle
|
|
|
364
379
|
* TODO(FW-5592): Remove hasStartEndSlots condition
|
|
365
380
|
*/
|
|
366
381
|
const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
|
|
367
|
-
return (h(Host, { key: '
|
|
382
|
+
return (h(Host, { key: 'e8a5b5727c6a018bbd6f5507b690bc5f0959e352', class: createColorClasses(this.color, {
|
|
368
383
|
[mode]: true,
|
|
369
384
|
'has-value': hasValue,
|
|
370
385
|
'has-focus': hasFocus,
|
|
@@ -373,7 +388,7 @@ const Textarea = /*@__PURE__*/ proxyCustomElement(class Textarea extends HTMLEle
|
|
|
373
388
|
[`textarea-shape-${shape}`]: shape !== undefined,
|
|
374
389
|
[`textarea-label-placement-${labelPlacement}`]: true,
|
|
375
390
|
'textarea-disabled': disabled,
|
|
376
|
-
}) }, h("label", { key: '
|
|
391
|
+
}) }, h("label", { key: '48e889571e2d3e7e150b038e4b4b15862b418288', class: "textarea-wrapper", htmlFor: inputId }, this.renderLabelContainer(), h("div", { key: '6c6c7872ae4d351d8b8d772ad18ce3ba7a0e9a87', class: "textarea-wrapper-inner" }, h("div", { key: '03aef5dfa59af0fa78a3e5c92e0ed72396717d72', class: "start-slot-wrapper" }, h("slot", { key: '39aee9faebb0f1d10de5a5817fd9d9771b074b96', name: "start" })), h("div", { key: '738e8ff603f4c9b9083b3139db861f4b7ec20f79', class: "native-wrapper", ref: (el) => (this.textareaWrapper = el) }, h("textarea", Object.assign({ key: '7763fb4f8ffe94635167331c70d21d661544c4f8', 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.getHintTextID() === this.errorTextId }, this.inheritedAttributes), value)), h("div", { key: 'b3af9ec0982c6dbd381afaa02df153d7e90471be', class: "end-slot-wrapper" }, h("slot", { key: '60f99bcd49a5ec2e1fa6e3e77809aefeb9d2d0d6', name: "end" }))), shouldRenderHighlight && h("div", { key: '6a7f45639ba027f4da573adae53f1197a6dec383', class: "textarea-highlight" })), this.renderBottomContent()));
|
|
377
392
|
}
|
|
378
393
|
get el() { return this; }
|
|
379
394
|
static get watchers() { return {
|
package/components/overlays.js
CHANGED
|
@@ -500,9 +500,19 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
|
|
|
500
500
|
if (overlay.presented) {
|
|
501
501
|
return;
|
|
502
502
|
}
|
|
503
|
-
|
|
503
|
+
/**
|
|
504
|
+
* Due to accessibility guidelines, toasts do not have
|
|
505
|
+
* focus traps.
|
|
506
|
+
*
|
|
507
|
+
* All other overlays should have focus traps to prevent
|
|
508
|
+
* the keyboard focus from leaving the overlay.
|
|
509
|
+
*/
|
|
510
|
+
if (overlay.el.tagName !== 'ION-TOAST') {
|
|
511
|
+
setRootAriaHidden(true);
|
|
512
|
+
}
|
|
504
513
|
document.body.classList.add(BACKDROP_NO_SCROLL);
|
|
505
|
-
|
|
514
|
+
hideUnderlyingOverlaysFromScreenReaders(overlay.el);
|
|
515
|
+
hideAnimatingOverlayFromScreenReaders(overlay.el);
|
|
506
516
|
overlay.presented = true;
|
|
507
517
|
overlay.willPresent.emit();
|
|
508
518
|
(_a = overlay.willPresentShorthand) === null || _a === void 0 ? void 0 : _a.emit();
|
|
@@ -542,6 +552,11 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
|
|
|
542
552
|
* it would still have aria-hidden on being presented again.
|
|
543
553
|
* Removing it here ensures the overlay is visible to screen
|
|
544
554
|
* readers.
|
|
555
|
+
*
|
|
556
|
+
* If this overlay was being presented, then it was hidden
|
|
557
|
+
* from screen readers during the animation. Now that the
|
|
558
|
+
* animation is complete, we can reveal the overlay to
|
|
559
|
+
* screen readers.
|
|
545
560
|
*/
|
|
546
561
|
overlay.el.removeAttribute('aria-hidden');
|
|
547
562
|
};
|
|
@@ -599,17 +614,35 @@ const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnim
|
|
|
599
614
|
if (!overlay.presented) {
|
|
600
615
|
return false;
|
|
601
616
|
}
|
|
602
|
-
const lastOverlay = doc !== undefined && getPresentedOverlays(doc).length === 1;
|
|
603
617
|
/**
|
|
604
|
-
*
|
|
605
|
-
*
|
|
618
|
+
* For accessibility, toasts lack focus traps and don’t receive
|
|
619
|
+
* `aria-hidden` on the root element when presented.
|
|
620
|
+
*
|
|
621
|
+
* All other overlays use focus traps to keep keyboard focus
|
|
622
|
+
* within the overlay, setting `aria-hidden` on the root element
|
|
623
|
+
* to enhance accessibility.
|
|
624
|
+
*
|
|
625
|
+
* Therefore, we must remove `aria-hidden` from the root element
|
|
626
|
+
* when the last non-toast overlay is dismissed.
|
|
606
627
|
*/
|
|
607
|
-
|
|
628
|
+
const overlaysNotToast = doc !== undefined ? getPresentedOverlays(doc).filter((o) => o.tagName !== 'ION-TOAST') : [];
|
|
629
|
+
const lastOverlayNotToast = overlaysNotToast.length === 1 && overlaysNotToast[0].id === overlay.el.id;
|
|
630
|
+
/**
|
|
631
|
+
* If this is the last visible overlay that is not a toast
|
|
632
|
+
* then we want to re-add the root to the accessibility tree.
|
|
633
|
+
*/
|
|
634
|
+
if (lastOverlayNotToast) {
|
|
608
635
|
setRootAriaHidden(false);
|
|
609
636
|
document.body.classList.remove(BACKDROP_NO_SCROLL);
|
|
610
637
|
}
|
|
611
638
|
overlay.presented = false;
|
|
612
639
|
try {
|
|
640
|
+
/**
|
|
641
|
+
* There is no need to show the overlay to screen readers during
|
|
642
|
+
* the dismiss animation. This is because the overlay will be removed
|
|
643
|
+
* from the DOM after the animation is complete.
|
|
644
|
+
*/
|
|
645
|
+
hideAnimatingOverlayFromScreenReaders(overlay.el);
|
|
613
646
|
// Overlay contents should not be clickable during dismiss
|
|
614
647
|
overlay.el.style.setProperty('pointer-events', 'none');
|
|
615
648
|
overlay.willDismiss.emit({ data, role });
|
|
@@ -844,6 +877,28 @@ const createTriggerController = () => {
|
|
|
844
877
|
removeClickListener,
|
|
845
878
|
};
|
|
846
879
|
};
|
|
880
|
+
/**
|
|
881
|
+
* The overlay that is being animated also needs to hide from screen
|
|
882
|
+
* readers during its animation. This ensures that assistive technologies
|
|
883
|
+
* like TalkBack do not announce or interact with the content until the
|
|
884
|
+
* animation is complete, avoiding confusion for users.
|
|
885
|
+
*
|
|
886
|
+
* If the overlay is being presented, it prevents focus rings from appearing
|
|
887
|
+
* in incorrect positions due to the transition (specifically `transform`
|
|
888
|
+
* styles), ensuring that when aria-hidden is removed, the focus rings are
|
|
889
|
+
* correctly displayed in the final location of the elements.
|
|
890
|
+
*
|
|
891
|
+
* @param overlay - The overlay that is being animated.
|
|
892
|
+
*/
|
|
893
|
+
const hideAnimatingOverlayFromScreenReaders = (overlay) => {
|
|
894
|
+
if (doc === undefined)
|
|
895
|
+
return;
|
|
896
|
+
/**
|
|
897
|
+
* Once the animation is complete, this attribute will be removed.
|
|
898
|
+
* This is done at the end of the `present` method.
|
|
899
|
+
*/
|
|
900
|
+
overlay.setAttribute('aria-hidden', 'true');
|
|
901
|
+
};
|
|
847
902
|
/**
|
|
848
903
|
* Ensure that underlying overlays have aria-hidden if necessary so that screen readers
|
|
849
904
|
* cannot move focus to these elements. Note that we cannot rely on focus/focusin/focusout
|
|
@@ -854,7 +909,7 @@ const createTriggerController = () => {
|
|
|
854
909
|
* @param newTopMostOverlay - The overlay that is being presented. Since the overlay has not been
|
|
855
910
|
* fully presented yet at the time this function is called it will not be included in the getPresentedOverlays result.
|
|
856
911
|
*/
|
|
857
|
-
const
|
|
912
|
+
const hideUnderlyingOverlaysFromScreenReaders = (newTopMostOverlay) => {
|
|
858
913
|
var _a;
|
|
859
914
|
if (doc === undefined)
|
|
860
915
|
return;
|
package/dist/cjs/index.cjs.js
CHANGED
|
@@ -16,7 +16,7 @@ const helpers = require('./helpers-afaa9001.js');
|
|
|
16
16
|
const config = require('./config-4f60b98a.js');
|
|
17
17
|
const theme = require('./theme-d1c573d2.js');
|
|
18
18
|
const index$2 = require('./index-9cd00dc3.js');
|
|
19
|
-
const overlays = require('./overlays-
|
|
19
|
+
const overlays = require('./overlays-ba0f6986.js');
|
|
20
20
|
require('./index-c8d52405.js');
|
|
21
21
|
require('./index-73f75efb.js');
|
|
22
22
|
require('./index-5915f9b3.js');
|
|
@@ -9,7 +9,7 @@ const index = require('./index-73f75efb.js');
|
|
|
9
9
|
const buttonActive = require('./button-active-3f2f60b4.js');
|
|
10
10
|
const helpers = require('./helpers-afaa9001.js');
|
|
11
11
|
const lockController = require('./lock-controller-6585a42a.js');
|
|
12
|
-
const overlays = require('./overlays-
|
|
12
|
+
const overlays = require('./overlays-ba0f6986.js');
|
|
13
13
|
const theme = require('./theme-d1c573d2.js');
|
|
14
14
|
const ionicGlobal = require('./ionic-global-d9a8bb5b.js');
|
|
15
15
|
const animation = require('./animation-b4fdf128.js');
|
|
@@ -302,10 +302,10 @@ const ActionSheet = class {
|
|
|
302
302
|
const headerID = `action-sheet-${overlayIndex}-header`;
|
|
303
303
|
return (index.h(index.Host, Object.assign({ key: '7bbd202ca9e19727e7514abbe073687d982f80c3', role: "dialog", "aria-modal": "true", "aria-labelledby": header !== undefined ? headerID : null, tabindex: "-1" }, htmlAttributes, { style: {
|
|
304
304
|
zIndex: `${20000 + this.overlayIndex}`,
|
|
305
|
-
}, class: Object.assign(Object.assign({ [mode]: true }, theme.getClassMap(this.cssClass)), { 'overlay-hidden': true, 'action-sheet-translucent': this.translucent }), onIonActionSheetWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }), index.h("ion-backdrop", { key: '23344a9221a2e6720d7b9de5249dc37256cafa7b', tappable: this.backdropDismiss }), index.h("div", { key: '
|
|
305
|
+
}, class: Object.assign(Object.assign({ [mode]: true }, theme.getClassMap(this.cssClass)), { 'overlay-hidden': true, 'action-sheet-translucent': this.translucent }), onIonActionSheetWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }), index.h("ion-backdrop", { key: '23344a9221a2e6720d7b9de5249dc37256cafa7b', tappable: this.backdropDismiss }), index.h("div", { key: 'fbc2ba15549c2ab04e759e82df6e177fd80cc0a6', tabindex: "0", "aria-hidden": "true" }), index.h("div", { key: '748ee5235d0b4cb26d6f1b7589f77af2e37ad28a', class: "action-sheet-wrapper ion-overlay-wrapper", ref: (el) => (this.wrapperEl = el) }, index.h("div", { key: '7ce5fa236cf75e9b1e49c4725c9a811078706554', class: "action-sheet-container" }, index.h("div", { key: 'dc2251f3bcee4a93e3449f09621cbd2b65d329e9', class: "action-sheet-group", ref: (el) => (this.groupEl = el) }, header !== undefined && (index.h("div", { key: '48d325c8a852f56ed57a9ada1a6709d05ba32ee2', id: headerID, class: {
|
|
306
306
|
'action-sheet-title': true,
|
|
307
307
|
'action-sheet-has-sub-title': this.subHeader !== undefined,
|
|
308
|
-
} }, header, this.subHeader && index.h("div", { key: '
|
|
308
|
+
} }, header, this.subHeader && index.h("div", { key: '66093728052eb67f37a35f3232761ce4a08896f3', class: "action-sheet-sub-title" }, this.subHeader))), buttons.map((b) => (index.h("button", Object.assign({}, b.htmlAttributes, { type: "button", id: b.id, class: buttonClass(b), onClick: () => this.buttonClick(b), disabled: b.disabled }), index.h("span", { class: "action-sheet-button-inner" }, b.icon && index.h("ion-icon", { icon: b.icon, "aria-hidden": "true", lazy: false, class: "action-sheet-icon" }), b.text), mode === 'md' && index.h("ion-ripple-effect", null))))), cancelButton && (index.h("div", { key: 'f4eb8e3e2885b85af5080df18d0de0bdd1d719de', class: "action-sheet-group action-sheet-group-cancel" }, index.h("button", Object.assign({ key: '169f4eb09255aba85062baad49ceb151239fbfb7' }, cancelButton.htmlAttributes, { type: "button", class: buttonClass(cancelButton), onClick: () => this.buttonClick(cancelButton) }), index.h("span", { key: '25fb8a466dd67ea94c79cfb4f9965527e1ce6d42', class: "action-sheet-button-inner" }, cancelButton.icon && (index.h("ion-icon", { key: 'eb5b071e120a2c86afdf967af6a763a43044d1ca', icon: cancelButton.icon, "aria-hidden": "true", lazy: false, class: "action-sheet-icon" })), cancelButton.text), mode === 'md' && index.h("ion-ripple-effect", { key: '452ad7e1052b2c681e2d98de8193949755ad4d54' })))))), index.h("div", { key: 'e1cecf280c987c050d9445e2c458b903f153089b', tabindex: "0", "aria-hidden": "true" })));
|
|
309
309
|
}
|
|
310
310
|
get el() { return index.getElement(this); }
|
|
311
311
|
static get watchers() { return {
|
|
@@ -10,7 +10,7 @@ const config = require('./config-4f60b98a.js');
|
|
|
10
10
|
const buttonActive = require('./button-active-3f2f60b4.js');
|
|
11
11
|
const helpers = require('./helpers-afaa9001.js');
|
|
12
12
|
const lockController = require('./lock-controller-6585a42a.js');
|
|
13
|
-
const overlays = require('./overlays-
|
|
13
|
+
const overlays = require('./overlays-ba0f6986.js');
|
|
14
14
|
const theme = require('./theme-d1c573d2.js');
|
|
15
15
|
const ionicGlobal = require('./ionic-global-d9a8bb5b.js');
|
|
16
16
|
const animation = require('./animation-b4fdf128.js');
|
|
@@ -500,7 +500,7 @@ const Alert = class {
|
|
|
500
500
|
const ariaLabelledBy = header ? hdrId : subHeader ? subHdrId : null;
|
|
501
501
|
return (index.h(index.Host, Object.assign({ key: 'c7d53f48b359f2bc3480a2e1ba34948fc9378fb0', role: role, "aria-modal": "true", "aria-labelledby": ariaLabelledBy, "aria-describedby": message !== undefined ? msgId : null, tabindex: "-1" }, htmlAttributes, { style: {
|
|
502
502
|
zIndex: `${20000 + overlayIndex}`,
|
|
503
|
-
}, class: Object.assign(Object.assign({}, theme.getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'alert-translucent': this.translucent }), onIonAlertWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }), index.h("ion-backdrop", { key: '18c7e6b5d63435d9a6a82bda951158e7e1af6e92', tappable: this.backdropDismiss }), index.h("div", { key: '
|
|
503
|
+
}, class: Object.assign(Object.assign({}, theme.getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'alert-translucent': this.translucent }), onIonAlertWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }), index.h("ion-backdrop", { key: '18c7e6b5d63435d9a6a82bda951158e7e1af6e92', tappable: this.backdropDismiss }), index.h("div", { key: '8ea08a2a70239e817442c12596f51b108aca428c', tabindex: "0", "aria-hidden": "true" }), index.h("div", { key: '215ca5d72b8b180788e9748f5f22de01fa5a152a', class: "alert-wrapper ion-overlay-wrapper", ref: (el) => (this.wrapperEl = el) }, index.h("div", { key: '9880acd318428d4b5d670c67dd156477877f99f2', class: "alert-head" }, header && (index.h("h2", { key: '612dec8dc9bfdcb36e1e4655dc214b7c229b20c8', id: hdrId, class: "alert-title" }, header)), subHeader && (index.h("h2", { key: 'e3c54c80a1cd9399595064b5a0a887c16fdc8ff8', id: subHdrId, class: "alert-sub-title" }, subHeader))), this.renderAlertMessage(msgId), this.renderAlertInputs(), this.renderAlertButtons()), index.h("div", { key: '9062655e906b5caf36df6f742fd412552ae510be', tabindex: "0", "aria-hidden": "true" })));
|
|
504
504
|
}
|
|
505
505
|
get el() { return index.getElement(this); }
|
|
506
506
|
static get watchers() { return {
|
|
@@ -36,7 +36,7 @@ const Backdrop = class {
|
|
|
36
36
|
}
|
|
37
37
|
render() {
|
|
38
38
|
const mode = ionicGlobal.getIonMode(this);
|
|
39
|
-
return (index.h(index.Host, { key: '
|
|
39
|
+
return (index.h(index.Host, { key: 'fe191068e2aaadfdbe7a463c08d227a1b36d7a98', "aria-hidden": "true", class: {
|
|
40
40
|
[mode]: true,
|
|
41
41
|
'backdrop-hide': !this.visible,
|
|
42
42
|
'backdrop-no-tappable': !this.tappable,
|
|
@@ -15,7 +15,7 @@ const index$2 = require('./index-073c7cdc.js');
|
|
|
15
15
|
const ionicGlobal = require('./ionic-global-d9a8bb5b.js');
|
|
16
16
|
const data = require('./data-21dc0f81.js');
|
|
17
17
|
const lockController = require('./lock-controller-6585a42a.js');
|
|
18
|
-
const overlays = require('./overlays-
|
|
18
|
+
const overlays = require('./overlays-ba0f6986.js');
|
|
19
19
|
const animation = require('./animation-b4fdf128.js');
|
|
20
20
|
const haptic = require('./haptic-f6b37aa3.js');
|
|
21
21
|
require('./index-c8d52405.js');
|
|
@@ -2034,7 +2034,7 @@ const Picker = class {
|
|
|
2034
2034
|
zIndex: `${20000 + this.overlayIndex}`,
|
|
2035
2035
|
}, class: Object.assign({ [mode]: true,
|
|
2036
2036
|
// Used internally for styling
|
|
2037
|
-
[`picker-${mode}`]: true, 'overlay-hidden': true }, theme.getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonPickerWillDismiss: this.dispatchCancelHandler }), index$1.h("ion-backdrop", { key: 'da4224447bdbcfbadd1bd63ebe7a7bfdb8aa3129', visible: this.showBackdrop, tappable: this.backdropDismiss }), index$1.h("div", { key: '
|
|
2037
|
+
[`picker-${mode}`]: true, 'overlay-hidden': true }, theme.getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonPickerWillDismiss: this.dispatchCancelHandler }), index$1.h("ion-backdrop", { key: 'da4224447bdbcfbadd1bd63ebe7a7bfdb8aa3129', visible: this.showBackdrop, tappable: this.backdropDismiss }), index$1.h("div", { key: '65eba425990a21be00fdac90de20a630d284cf97', tabindex: "0", "aria-hidden": "true" }), index$1.h("div", { key: 'd78ada360801b2c051baa030751f3d83ac81e697', class: "picker-wrapper ion-overlay-wrapper", role: "dialog" }, index$1.h("div", { key: 'd5bd9ddfbdbdaf42048a1496e7939eb3aee6da65', class: "picker-toolbar" }, this.buttons.map((b) => (index$1.h("div", { class: buttonWrapperClass(b) }, index$1.h("button", { type: "button", onClick: () => this.buttonClick(b), class: buttonClass(b) }, b.text))))), index$1.h("div", { key: '96ee1e3ec77c57174b1a93135b66bea6b7002555', class: "picker-columns" }, index$1.h("div", { key: 'e11b1c238f350e65bde2ee67eee9d71c830e74e7', class: "picker-above-highlight" }), this.presented && this.columns.map((c) => index$1.h("ion-picker-legacy-column", { col: c })), index$1.h("div", { key: '4d5fc7c723185111ec01fd34ef95a897c301238d', class: "picker-below-highlight" }))), index$1.h("div", { key: '899bcad97609c1d971c1b886551db5ba0248a9f4', tabindex: "0", "aria-hidden": "true" })));
|
|
2038
2038
|
}
|
|
2039
2039
|
get el() { return index$1.getElement(this); }
|
|
2040
2040
|
static get watchers() { return {
|
|
@@ -29,6 +29,8 @@ const Input = class {
|
|
|
29
29
|
this.ionBlur = index.createEvent(this, "ionBlur", 7);
|
|
30
30
|
this.ionFocus = index.createEvent(this, "ionFocus", 7);
|
|
31
31
|
this.inputId = `ion-input-${inputIds++}`;
|
|
32
|
+
this.helperTextId = `${this.inputId}-helper-text`;
|
|
33
|
+
this.errorTextId = `${this.inputId}-error-text`;
|
|
32
34
|
this.inheritedAttributes = {};
|
|
33
35
|
this.isComposing = false;
|
|
34
36
|
/**
|
|
@@ -301,8 +303,21 @@ const Input = class {
|
|
|
301
303
|
* Renders the helper text or error text values
|
|
302
304
|
*/
|
|
303
305
|
renderHintText() {
|
|
304
|
-
const { helperText, errorText } = this;
|
|
305
|
-
return [
|
|
306
|
+
const { helperText, errorText, helperTextId, errorTextId } = this;
|
|
307
|
+
return [
|
|
308
|
+
index.h("div", { id: helperTextId, class: "helper-text" }, helperText),
|
|
309
|
+
index.h("div", { id: errorTextId, class: "error-text" }, errorText),
|
|
310
|
+
];
|
|
311
|
+
}
|
|
312
|
+
getHintTextID() {
|
|
313
|
+
const { el, helperText, errorText, helperTextId, errorTextId } = this;
|
|
314
|
+
if (el.classList.contains('ion-touched') && el.classList.contains('ion-invalid') && errorText) {
|
|
315
|
+
return errorTextId;
|
|
316
|
+
}
|
|
317
|
+
if (helperText) {
|
|
318
|
+
return helperTextId;
|
|
319
|
+
}
|
|
320
|
+
return undefined;
|
|
306
321
|
}
|
|
307
322
|
renderCounter() {
|
|
308
323
|
const { counter, maxlength, counterFormatter, value } = this;
|
|
@@ -409,7 +424,7 @@ const Input = class {
|
|
|
409
424
|
* TODO(FW-5592): Remove hasStartEndSlots condition
|
|
410
425
|
*/
|
|
411
426
|
const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
|
|
412
|
-
return (index.h(index.Host, { key: '
|
|
427
|
+
return (index.h(index.Host, { key: 'cdde9963d71685e6a4f3f3b3bc52e75d022435cb', class: theme.createColorClasses(this.color, {
|
|
413
428
|
[mode]: true,
|
|
414
429
|
'has-value': hasValue,
|
|
415
430
|
'has-focus': hasFocus,
|
|
@@ -420,7 +435,7 @@ const Input = class {
|
|
|
420
435
|
'in-item': inItem,
|
|
421
436
|
'in-item-color': theme.hostContext('ion-item.ion-color', this.el),
|
|
422
437
|
'input-disabled': disabled,
|
|
423
|
-
}) }, index.h("label", { key: '
|
|
438
|
+
}) }, index.h("label", { key: '4412791c93405f20e50e50363879265180b6078f', class: "input-wrapper", htmlFor: inputId }, this.renderLabelContainer(), index.h("div", { key: '5c71c43ef3eeb44dde76ed64ce10763834c8fbc7', class: "native-wrapper" }, index.h("slot", { key: '1d86b58dc299a4208dd02ccdc9ceaea7576698c3', name: "start" }), index.h("input", Object.assign({ key: '7fc932174485f7d09e6a797dfd49ea11fbad71b6', class: "native-input", ref: (input) => (this.nativeInput = input), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, min: this.min, max: this.max, minLength: this.minlength, maxLength: this.maxlength, multiple: this.multiple, name: this.name, pattern: this.pattern, placeholder: this.placeholder || '', readOnly: readonly, required: this.required, spellcheck: this.spellcheck, step: this.step, type: this.type, value: value, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeydown, onCompositionstart: this.onCompositionStart, onCompositionend: this.onCompositionEnd, "aria-describedby": this.getHintTextID(), "aria-invalid": this.getHintTextID() === this.errorTextId }, this.inheritedAttributes)), this.clearInput && !readonly && !disabled && (index.h("button", { key: '46de455e4e308b8d7640b04778f7c7559b4124c6', "aria-label": "reset", type: "button", class: "input-clear-icon", onPointerDown: (ev) => {
|
|
424
439
|
/**
|
|
425
440
|
* This prevents mobile browsers from
|
|
426
441
|
* blurring the input when the clear
|
|
@@ -435,7 +450,7 @@ const Input = class {
|
|
|
435
450
|
* for screen readers as it means users would be unable to swipe past the clear button.
|
|
436
451
|
*/
|
|
437
452
|
ev.stopPropagation();
|
|
438
|
-
}, onClick: this.clearTextInput }, index.h("ion-icon", { key: '
|
|
453
|
+
}, onClick: this.clearTextInput }, index.h("ion-icon", { key: '375e860a20e1807ce0db0e1934a0650fe9929966', "aria-hidden": "true", icon: clearIconData }))), index.h("slot", { key: '859d47a1b88aa8377479e5d11e52a6a1c1c30e7e', name: "end" })), shouldRenderHighlight && index.h("div", { key: 'd2d4286b348107e33247b5c0afda0f8bd697ecee', class: "input-highlight" })), this.renderBottomContent()));
|
|
439
454
|
}
|
|
440
455
|
get el() { return index.getElement(this); }
|
|
441
456
|
static get watchers() { return {
|
|
@@ -9,7 +9,7 @@ const index = require('./index-73f75efb.js');
|
|
|
9
9
|
const config = require('./config-4f60b98a.js');
|
|
10
10
|
const helpers = require('./helpers-afaa9001.js');
|
|
11
11
|
const lockController = require('./lock-controller-6585a42a.js');
|
|
12
|
-
const overlays = require('./overlays-
|
|
12
|
+
const overlays = require('./overlays-ba0f6986.js');
|
|
13
13
|
const theme = require('./theme-d1c573d2.js');
|
|
14
14
|
const ionicGlobal = require('./ionic-global-d9a8bb5b.js');
|
|
15
15
|
const animation = require('./animation-b4fdf128.js');
|
|
@@ -267,7 +267,7 @@ const Loading = class {
|
|
|
267
267
|
const ariaLabelledBy = message !== undefined ? msgId : null;
|
|
268
268
|
return (index.h(index.Host, Object.assign({ key: 'fb3d2cd7cd0539ed6540d8be50e243c7916b3ca2', role: "dialog", "aria-modal": "true", "aria-labelledby": ariaLabelledBy, tabindex: "-1" }, htmlAttributes, { style: {
|
|
269
269
|
zIndex: `${40000 + this.overlayIndex}`,
|
|
270
|
-
}, onIonBackdropTap: this.onBackdropTap, class: Object.assign(Object.assign({}, theme.getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'loading-translucent': this.translucent }) }), index.h("ion-backdrop", { key: 'c8bd30782f3040b1b80e88aa924861e439d40754', visible: this.showBackdrop, tappable: this.backdropDismiss }), index.h("div", { key: '
|
|
270
|
+
}, onIonBackdropTap: this.onBackdropTap, class: Object.assign(Object.assign({}, theme.getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'loading-translucent': this.translucent }) }), index.h("ion-backdrop", { key: 'c8bd30782f3040b1b80e88aa924861e439d40754', visible: this.showBackdrop, tappable: this.backdropDismiss }), index.h("div", { key: '7ad4447fafa49aa861d311221b8c2e8171b4c610', tabindex: "0", "aria-hidden": "true" }), index.h("div", { key: '1879df0d895eb8ee20ccdc94dd35d708c1140b91', class: "loading-wrapper ion-overlay-wrapper" }, spinner && (index.h("div", { key: '220f292c136681f5fa91f94669aac75b15e490ce', class: "loading-spinner" }, index.h("ion-spinner", { key: 'd599084a1426d941bdd080a988d8ad5b9589b823', name: spinner, "aria-hidden": "true" }))), message !== undefined && this.renderLoadingMessage(msgId)), index.h("div", { key: 'e443897b353a48e0c72718dba04d83d7c5070d73', tabindex: "0", "aria-hidden": "true" })));
|
|
271
271
|
}
|
|
272
272
|
get el() { return index.getElement(this); }
|
|
273
273
|
static get watchers() { return {
|
|
@@ -7,7 +7,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
7
7
|
|
|
8
8
|
const index = require('./index-73f75efb.js');
|
|
9
9
|
const cubicBezier = require('./cubic-bezier-f2dccc53.js');
|
|
10
|
-
const overlays = require('./overlays-
|
|
10
|
+
const overlays = require('./overlays-ba0f6986.js');
|
|
11
11
|
const gestureController = require('./gesture-controller-9436f482.js');
|
|
12
12
|
const hardwareBackButton = require('./hardware-back-button-9e8a2c4f.js');
|
|
13
13
|
const helpers = require('./helpers-afaa9001.js');
|
|
@@ -12,7 +12,7 @@ const helpers = require('./helpers-afaa9001.js');
|
|
|
12
12
|
const lockController = require('./lock-controller-6585a42a.js');
|
|
13
13
|
const index$4 = require('./index-5915f9b3.js');
|
|
14
14
|
const capacitor = require('./capacitor-c04564bf.js');
|
|
15
|
-
const overlays = require('./overlays-
|
|
15
|
+
const overlays = require('./overlays-ba0f6986.js');
|
|
16
16
|
const theme = require('./theme-d1c573d2.js');
|
|
17
17
|
const index$5 = require('./index-f05acd21.js');
|
|
18
18
|
const ionicGlobal = require('./ionic-global-d9a8bb5b.js');
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
7
7
|
|
|
8
8
|
const index = require('./index-73f75efb.js');
|
|
9
|
-
const overlays = require('./overlays-
|
|
9
|
+
const overlays = require('./overlays-ba0f6986.js');
|
|
10
10
|
const frameworkDelegate = require('./framework-delegate-55f5683a.js');
|
|
11
11
|
const helpers = require('./helpers-afaa9001.js');
|
|
12
12
|
const lockController = require('./lock-controller-6585a42a.js');
|
|
@@ -9,7 +9,7 @@ const index = require('./index-73f75efb.js');
|
|
|
9
9
|
const notchController = require('./notch-controller-d69150f5.js');
|
|
10
10
|
const compareWithUtils = require('./compare-with-utils-df1001d7.js');
|
|
11
11
|
const helpers = require('./helpers-afaa9001.js');
|
|
12
|
-
const overlays = require('./overlays-
|
|
12
|
+
const overlays = require('./overlays-ba0f6986.js');
|
|
13
13
|
const dir = require('./dir-94c21456.js');
|
|
14
14
|
const theme = require('./theme-d1c573d2.js');
|
|
15
15
|
const watchOptions = require('./watch-options-f5f3e158.js');
|
|
@@ -28,6 +28,8 @@ const Textarea = class {
|
|
|
28
28
|
this.ionBlur = index.createEvent(this, "ionBlur", 7);
|
|
29
29
|
this.ionFocus = index.createEvent(this, "ionFocus", 7);
|
|
30
30
|
this.inputId = `ion-textarea-${textareaIds++}`;
|
|
31
|
+
this.helperTextId = `${this.inputId}-helper-text`;
|
|
32
|
+
this.errorTextId = `${this.inputId}-error-text`;
|
|
31
33
|
/**
|
|
32
34
|
* `true` if the textarea was cleared as a result of the user typing
|
|
33
35
|
* with `clearOnEdit` enabled.
|
|
@@ -315,8 +317,21 @@ const Textarea = class {
|
|
|
315
317
|
* Renders the helper text or error text values
|
|
316
318
|
*/
|
|
317
319
|
renderHintText() {
|
|
318
|
-
const { helperText, errorText } = this;
|
|
319
|
-
return [
|
|
320
|
+
const { helperText, errorText, helperTextId, errorTextId } = this;
|
|
321
|
+
return [
|
|
322
|
+
index.h("div", { id: helperTextId, class: "helper-text" }, helperText),
|
|
323
|
+
index.h("div", { id: errorTextId, class: "error-text" }, errorText),
|
|
324
|
+
];
|
|
325
|
+
}
|
|
326
|
+
getHintTextID() {
|
|
327
|
+
const { el, helperText, errorText, helperTextId, errorTextId } = this;
|
|
328
|
+
if (el.classList.contains('ion-touched') && el.classList.contains('ion-invalid') && errorText) {
|
|
329
|
+
return errorTextId;
|
|
330
|
+
}
|
|
331
|
+
if (helperText) {
|
|
332
|
+
return helperTextId;
|
|
333
|
+
}
|
|
334
|
+
return undefined;
|
|
320
335
|
}
|
|
321
336
|
renderCounter() {
|
|
322
337
|
const { counter, maxlength, counterFormatter, value } = this;
|
|
@@ -369,7 +384,7 @@ const Textarea = class {
|
|
|
369
384
|
* TODO(FW-5592): Remove hasStartEndSlots condition
|
|
370
385
|
*/
|
|
371
386
|
const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
|
|
372
|
-
return (index.h(index.Host, { key: '
|
|
387
|
+
return (index.h(index.Host, { key: 'e8a5b5727c6a018bbd6f5507b690bc5f0959e352', class: theme.createColorClasses(this.color, {
|
|
373
388
|
[mode]: true,
|
|
374
389
|
'has-value': hasValue,
|
|
375
390
|
'has-focus': hasFocus,
|
|
@@ -378,7 +393,7 @@ const Textarea = class {
|
|
|
378
393
|
[`textarea-shape-${shape}`]: shape !== undefined,
|
|
379
394
|
[`textarea-label-placement-${labelPlacement}`]: true,
|
|
380
395
|
'textarea-disabled': disabled,
|
|
381
|
-
}) }, index.h("label", { key: '
|
|
396
|
+
}) }, index.h("label", { key: '48e889571e2d3e7e150b038e4b4b15862b418288', class: "textarea-wrapper", htmlFor: inputId }, this.renderLabelContainer(), index.h("div", { key: '6c6c7872ae4d351d8b8d772ad18ce3ba7a0e9a87', class: "textarea-wrapper-inner" }, index.h("div", { key: '03aef5dfa59af0fa78a3e5c92e0ed72396717d72', class: "start-slot-wrapper" }, index.h("slot", { key: '39aee9faebb0f1d10de5a5817fd9d9771b074b96', name: "start" })), index.h("div", { key: '738e8ff603f4c9b9083b3139db861f4b7ec20f79', class: "native-wrapper", ref: (el) => (this.textareaWrapper = el) }, index.h("textarea", Object.assign({ key: '7763fb4f8ffe94635167331c70d21d661544c4f8', 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.getHintTextID() === this.errorTextId }, this.inheritedAttributes), value)), index.h("div", { key: 'b3af9ec0982c6dbd381afaa02df153d7e90471be', class: "end-slot-wrapper" }, index.h("slot", { key: '60f99bcd49a5ec2e1fa6e3e77809aefeb9d2d0d6', name: "end" }))), shouldRenderHighlight && index.h("div", { key: '6a7f45639ba027f4da573adae53f1197a6dec383', class: "textarea-highlight" })), this.renderBottomContent()));
|
|
382
397
|
}
|
|
383
398
|
get el() { return index.getElement(this); }
|
|
384
399
|
static get watchers() { return {
|