@ionic/core 8.7.3-dev.11755600455.1e79c35a → 8.7.3-dev.11755622775.1fc05815

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/components/ion-datetime.js +3 -4
  2. package/components/ion-input.js +36 -5
  3. package/components/ion-refresher.js +18 -1
  4. package/components/ion-textarea.js +35 -4
  5. package/components/overlays.js +97 -3
  6. package/components/picker-column-option.js +3 -3
  7. package/components/picker-column.js +39 -3
  8. package/dist/cjs/index.cjs.js +1 -1
  9. package/dist/cjs/ion-action-sheet.cjs.entry.js +1 -1
  10. package/dist/cjs/ion-alert.cjs.entry.js +1 -1
  11. package/dist/cjs/ion-datetime_3.cjs.entry.js +4 -4
  12. package/dist/cjs/ion-input.cjs.entry.js +35 -5
  13. package/dist/cjs/ion-loading.cjs.entry.js +1 -1
  14. package/dist/cjs/ion-menu_3.cjs.entry.js +1 -1
  15. package/dist/cjs/ion-modal.cjs.entry.js +1 -1
  16. package/dist/cjs/ion-picker-column-option.cjs.entry.js +3 -3
  17. package/dist/cjs/ion-picker-column.cjs.entry.js +39 -3
  18. package/dist/cjs/ion-popover.cjs.entry.js +1 -1
  19. package/dist/cjs/ion-refresher_2.cjs.entry.js +18 -1
  20. package/dist/cjs/ion-select-modal.cjs.entry.js +1 -1
  21. package/dist/cjs/ion-select_3.cjs.entry.js +1 -1
  22. package/dist/cjs/ion-textarea.cjs.entry.js +34 -4
  23. package/dist/cjs/ion-toast.cjs.entry.js +1 -1
  24. package/dist/cjs/ionic.cjs.js +1 -1
  25. package/dist/cjs/loader.cjs.js +1 -1
  26. package/dist/cjs/{overlays-DUsEBICv.js → overlays-CglR7j-u.js} +96 -2
  27. package/dist/collection/components/datetime/datetime.js +3 -4
  28. package/dist/collection/components/input/input.js +37 -6
  29. package/dist/collection/components/picker-column/picker-column.js +39 -3
  30. package/dist/collection/components/picker-column-option/picker-column-option.ios.css +2 -2
  31. package/dist/collection/components/picker-column-option/picker-column-option.js +1 -1
  32. package/dist/collection/components/picker-column-option/picker-column-option.md.css +2 -2
  33. package/dist/collection/components/refresher/refresher.js +18 -1
  34. package/dist/collection/components/textarea/textarea.js +36 -5
  35. package/dist/collection/utils/overlays.js +97 -2
  36. package/dist/docs.json +1 -1
  37. package/dist/esm/index.js +1 -1
  38. package/dist/esm/ion-action-sheet.entry.js +1 -1
  39. package/dist/esm/ion-alert.entry.js +1 -1
  40. package/dist/esm/ion-datetime_3.entry.js +4 -4
  41. package/dist/esm/ion-input.entry.js +35 -5
  42. package/dist/esm/ion-loading.entry.js +1 -1
  43. package/dist/esm/ion-menu_3.entry.js +1 -1
  44. package/dist/esm/ion-modal.entry.js +1 -1
  45. package/dist/esm/ion-picker-column-option.entry.js +3 -3
  46. package/dist/esm/ion-picker-column.entry.js +39 -3
  47. package/dist/esm/ion-popover.entry.js +1 -1
  48. package/dist/esm/ion-refresher_2.entry.js +18 -1
  49. package/dist/esm/ion-select-modal.entry.js +1 -1
  50. package/dist/esm/ion-select_3.entry.js +1 -1
  51. package/dist/esm/ion-textarea.entry.js +34 -4
  52. package/dist/esm/ion-toast.entry.js +1 -1
  53. package/dist/esm/ionic.js +1 -1
  54. package/dist/esm/loader.js +1 -1
  55. package/dist/esm/{overlays-B_dsLNe8.js → overlays-ZX_4-t_r.js} +97 -3
  56. package/dist/ionic/index.esm.js +1 -1
  57. package/dist/ionic/ionic.esm.js +1 -1
  58. package/dist/ionic/p-187aaf4a.entry.js +4 -0
  59. package/dist/ionic/p-1d5b934a.entry.js +4 -0
  60. package/dist/ionic/p-1e34d434.entry.js +4 -0
  61. package/dist/ionic/p-29032e49.entry.js +4 -0
  62. package/dist/ionic/{p-8b54aa01.entry.js → p-7bac2c5f.entry.js} +1 -1
  63. package/dist/ionic/p-8cdb4ff5.entry.js +4 -0
  64. package/dist/ionic/{p-7ed24ba0.entry.js → p-8d96a0cd.entry.js} +1 -1
  65. package/dist/ionic/{p-84236acb.entry.js → p-91d6ccb0.entry.js} +1 -1
  66. package/dist/ionic/{p-09ed68cf.entry.js → p-92e8f208.entry.js} +1 -1
  67. package/dist/ionic/{p-98d0823e.entry.js → p-982fe1c4.entry.js} +1 -1
  68. package/dist/ionic/p-CSwZyt05.js +4 -0
  69. package/dist/ionic/{p-698fb72c.entry.js → p-ab33ef20.entry.js} +1 -1
  70. package/dist/ionic/{p-07d8f62a.entry.js → p-ac434970.entry.js} +1 -1
  71. package/dist/ionic/{p-57bb1214.entry.js → p-c575e7ce.entry.js} +1 -1
  72. package/dist/ionic/{p-9c6fddc6.entry.js → p-f2884bc2.entry.js} +1 -1
  73. package/dist/ionic/p-f456d176.entry.js +4 -0
  74. package/dist/types/components/input/input.d.ts +9 -0
  75. package/dist/types/components/picker-column/picker-column.d.ts +7 -0
  76. package/dist/types/components/textarea/textarea.d.ts +9 -0
  77. package/hydrate/index.js +204 -21
  78. package/hydrate/index.mjs +204 -21
  79. package/package.json +1 -1
  80. package/dist/ionic/p-1488b7cc.entry.js +0 -4
  81. package/dist/ionic/p-8888efe4.entry.js +0 -4
  82. package/dist/ionic/p-8bfe00f3.entry.js +0 -4
  83. package/dist/ionic/p-C3MD7jSK.js +0 -4
  84. package/dist/ionic/p-ac2be9d6.entry.js +0 -4
  85. package/dist/ionic/p-b292804d.entry.js +0 -4
  86. package/dist/ionic/p-c5210d3e.entry.js +0 -4
package/hydrate/index.mjs CHANGED
@@ -6165,11 +6165,9 @@ const setRootAriaHidden = (hidden = false) => {
6165
6165
  }
6166
6166
  if (hidden) {
6167
6167
  viewContainer.setAttribute('aria-hidden', 'true');
6168
- viewContainer.setAttribute('inert', '');
6169
6168
  }
6170
6169
  else {
6171
6170
  viewContainer.removeAttribute('aria-hidden');
6172
- viewContainer.removeAttribute('inert');
6173
6171
  }
6174
6172
  };
6175
6173
  const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts) => {
@@ -6188,6 +6186,8 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
6188
6186
  setRootAriaHidden(true);
6189
6187
  document.body.classList.add(BACKDROP_NO_SCROLL);
6190
6188
  }
6189
+ hideUnderlyingOverlaysFromScreenReaders(overlay.el);
6190
+ hideAnimatingOverlayFromScreenReaders(overlay.el);
6191
6191
  overlay.presented = true;
6192
6192
  overlay.willPresent.emit();
6193
6193
  (_a = overlay.willPresentShorthand) === null || _a === void 0 ? void 0 : _a.emit();
@@ -6313,6 +6313,12 @@ const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnim
6313
6313
  }
6314
6314
  overlay.presented = false;
6315
6315
  try {
6316
+ /**
6317
+ * There is no need to show the overlay to screen readers during
6318
+ * the dismiss animation. This is because the overlay will be removed
6319
+ * from the DOM after the animation is complete.
6320
+ */
6321
+ hideAnimatingOverlayFromScreenReaders(overlay.el);
6316
6322
  // Overlay contents should not be clickable during dismiss
6317
6323
  overlay.el.style.setProperty('pointer-events', 'none');
6318
6324
  overlay.willDismiss.emit({ data, role });
@@ -6351,6 +6357,7 @@ const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnim
6351
6357
  printIonError(`[${overlay.el.tagName.toLowerCase()}] - `, err);
6352
6358
  }
6353
6359
  overlay.el.remove();
6360
+ revealOverlaysToScreenReaders();
6354
6361
  return true;
6355
6362
  };
6356
6363
  const getAppRoot = (doc) => {
@@ -6546,6 +6553,93 @@ const createTriggerController = () => {
6546
6553
  removeClickListener,
6547
6554
  };
6548
6555
  };
6556
+ /**
6557
+ * The overlay that is being animated also needs to hide from screen
6558
+ * readers during its animation. This ensures that assistive technologies
6559
+ * like TalkBack do not announce or interact with the content until the
6560
+ * animation is complete, avoiding confusion for users.
6561
+ *
6562
+ * When the overlay is presented on an Android device, TalkBack's focus rings
6563
+ * may appear in the wrong position due to the transition (specifically
6564
+ * `transform` styles). This occurs because the focus rings are initially
6565
+ * displayed at the starting position of the elements before the transition
6566
+ * begins. This workaround ensures the focus rings do not appear in the
6567
+ * incorrect location.
6568
+ *
6569
+ * If this solution is applied to iOS devices, then it leads to a bug where
6570
+ * the overlays cannot be accessed by screen readers. This is due to
6571
+ * VoiceOver not being able to update the accessibility tree when the
6572
+ * `aria-hidden` is removed.
6573
+ *
6574
+ * @param overlay - The overlay that is being animated.
6575
+ */
6576
+ const hideAnimatingOverlayFromScreenReaders = (overlay) => {
6577
+ if (doc === undefined)
6578
+ return;
6579
+ if (isPlatform('android')) {
6580
+ /**
6581
+ * Once the animation is complete, this attribute will be removed.
6582
+ * This is done at the end of the `present` method.
6583
+ */
6584
+ overlay.setAttribute('aria-hidden', 'true');
6585
+ }
6586
+ };
6587
+ /**
6588
+ * Ensure that underlying overlays have aria-hidden if necessary so that screen readers
6589
+ * cannot move focus to these elements. Note that we cannot rely on focus/focusin/focusout
6590
+ * events here because those events do not fire when the screen readers moves to a non-focusable
6591
+ * element such as text.
6592
+ * Without this logic screen readers would be able to move focus outside of the top focus-trapped overlay.
6593
+ *
6594
+ * @param newTopMostOverlay - The overlay that is being presented. Since the overlay has not been
6595
+ * fully presented yet at the time this function is called it will not be included in the getPresentedOverlays result.
6596
+ */
6597
+ const hideUnderlyingOverlaysFromScreenReaders = (newTopMostOverlay) => {
6598
+ var _a;
6599
+ if (doc === undefined)
6600
+ return;
6601
+ const overlays = getPresentedOverlays(doc);
6602
+ for (let i = overlays.length - 1; i >= 0; i--) {
6603
+ const presentedOverlay = overlays[i];
6604
+ const nextPresentedOverlay = (_a = overlays[i + 1]) !== null && _a !== void 0 ? _a : newTopMostOverlay;
6605
+ /**
6606
+ * If next overlay has aria-hidden then all remaining overlays will have it too.
6607
+ * Or, if the next overlay is a Toast that does not have aria-hidden then current overlay
6608
+ * should not have aria-hidden either so focus can remain in the current overlay.
6609
+ */
6610
+ if (nextPresentedOverlay.hasAttribute('aria-hidden') || nextPresentedOverlay.tagName !== 'ION-TOAST') {
6611
+ presentedOverlay.setAttribute('aria-hidden', 'true');
6612
+ }
6613
+ }
6614
+ };
6615
+ /**
6616
+ * When dismissing an overlay we need to reveal the new top-most overlay to screen readers.
6617
+ * If the top-most overlay is a Toast we potentially need to reveal more overlays since
6618
+ * focus is never automatically moved to the Toast.
6619
+ */
6620
+ const revealOverlaysToScreenReaders = () => {
6621
+ if (doc === undefined)
6622
+ return;
6623
+ const overlays = getPresentedOverlays(doc);
6624
+ for (let i = overlays.length - 1; i >= 0; i--) {
6625
+ const currentOverlay = overlays[i];
6626
+ /**
6627
+ * If the current we are looking at is a Toast then we can remove aria-hidden.
6628
+ * However, we potentially need to keep looking at the overlay stack because there
6629
+ * could be more Toasts underneath. Additionally, we need to unhide the closest non-Toast
6630
+ * overlay too so focus can move there since focus is never automatically moved to the Toast.
6631
+ */
6632
+ currentOverlay.removeAttribute('aria-hidden');
6633
+ /**
6634
+ * If we found a non-Toast element then we can just remove aria-hidden and stop searching entirely
6635
+ * since this overlay should always receive focus. As a result, all underlying overlays should still
6636
+ * be hidden from screen readers.
6637
+ */
6638
+ if (currentOverlay.tagName !== 'ION-TOAST') {
6639
+ break;
6640
+ }
6641
+ }
6642
+ };
6549
6643
  const FOCUS_TRAP_DISABLE_CLASS = 'ion-disable-focus-trap';
6550
6644
 
6551
6645
  const hostContext = (selector, el) => {
@@ -13435,7 +13529,7 @@ class Datetime {
13435
13529
  const renderArray = forcePresentation === 'time-date'
13436
13530
  ? [this.renderTimePickerColumns(forcePresentation), this.renderDatePickerColumns(forcePresentation)]
13437
13531
  : [this.renderDatePickerColumns(forcePresentation), this.renderTimePickerColumns(forcePresentation)];
13438
- return hAsync("ion-picker", { class: FOCUS_TRAP_DISABLE_CLASS }, renderArray);
13532
+ return hAsync("ion-picker", null, renderArray);
13439
13533
  }
13440
13534
  renderDatePickerColumns(forcePresentation) {
13441
13535
  return forcePresentation === 'date-time' || forcePresentation === 'time-date'
@@ -13992,7 +14086,7 @@ class Datetime {
13992
14086
  const hasDatePresentation = presentation === 'date' || presentation === 'date-time' || presentation === 'time-date';
13993
14087
  const hasWheelVariant = hasDatePresentation && preferWheel;
13994
14088
  renderHiddenInput(true, el, name, formatValue(value), disabled);
13995
- return (hAsync(Host, { key: '57492534800ea059a7c2bbd9f0059cc0b75ae8d2', "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: Object.assign({}, createColorClasses$1(color, {
14089
+ return (hAsync(Host, { key: 'f35cf200ff05d33074576e3d2754d3b2a0735b96', "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: Object.assign({}, createColorClasses$1(color, {
13996
14090
  [mode]: true,
13997
14091
  ['datetime-readonly']: readonly,
13998
14092
  ['datetime-disabled']: disabled,
@@ -14002,7 +14096,7 @@ class Datetime {
14002
14096
  [`datetime-size-${size}`]: true,
14003
14097
  [`datetime-prefer-wheel`]: hasWheelVariant,
14004
14098
  [`datetime-grid`]: isGridStyle,
14005
- })) }, hAsync("div", { key: '97dac5e5195635ac0bc5fb472b9d09e5c3c6bbc3', class: "intersection-tracker", ref: (el) => (this.intersectionTrackerRef = el) }), this.renderDatetime(mode)));
14099
+ })) }, hAsync("div", { key: '859e9354a12bfa58ac3f964c2e66839f17071c00', class: "intersection-tracker", ref: (el) => (this.intersectionTrackerRef = el) }), this.renderDatetime(mode)));
14006
14100
  }
14007
14101
  get el() { return getElement(this); }
14008
14102
  static get watchers() { return {
@@ -16533,6 +16627,10 @@ class Input {
16533
16627
  * is applied in both cases.
16534
16628
  */
16535
16629
  this.hasFocus = false;
16630
+ /**
16631
+ * Track validation state for proper aria-live announcements
16632
+ */
16633
+ this.isInvalid = false;
16536
16634
  /**
16537
16635
  * Indicates whether and how the text value should be automatically capitalized as it is entered/edited by the user.
16538
16636
  * Available options: `"off"`, `"none"`, `"on"`, `"sentences"`, `"words"`, `"characters"`.
@@ -16716,10 +16814,18 @@ class Input {
16716
16814
  componentWillLoad() {
16717
16815
  this.inheritedAttributes = Object.assign(Object.assign({}, inheritAriaAttributes(this.el)), inheritAttributes$1(this.el, ['tabindex', 'title', 'data-form-type', 'dir']));
16718
16816
  }
16817
+ /**
16818
+ * Checks if the input is in an invalid state based on validation classes
16819
+ */
16820
+ checkValidationState() {
16821
+ return this.el.classList.contains('ion-touched') && this.el.classList.contains('ion-invalid');
16822
+ }
16719
16823
  connectedCallback() {
16720
16824
  const { el } = this;
16721
16825
  this.slotMutationController = createSlotMutationController(el, ['label', 'start', 'end'], () => forceUpdate());
16722
16826
  this.notchController = createNotchController(el, () => this.notchSpacerEl, () => this.labelSlot);
16827
+ // Always set initial state
16828
+ this.isInvalid = this.checkValidationState();
16723
16829
  this.debounceChanged();
16724
16830
  }
16725
16831
  componentDidLoad() {
@@ -16746,6 +16852,11 @@ class Input {
16746
16852
  this.notchController.destroy();
16747
16853
  this.notchController = undefined;
16748
16854
  }
16855
+ // Clean up validation observer to prevent memory leaks
16856
+ if (this.validationObserver) {
16857
+ this.validationObserver.disconnect();
16858
+ this.validationObserver = undefined;
16859
+ }
16749
16860
  }
16750
16861
  /**
16751
16862
  * Sets focus on the native `input` in `ion-input`. Use this method instead of the global
@@ -16854,8 +16965,8 @@ class Input {
16854
16965
  ];
16855
16966
  }
16856
16967
  getHintTextID() {
16857
- const { el, helperText, errorText, helperTextId, errorTextId } = this;
16858
- if (el.classList.contains('ion-touched') && el.classList.contains('ion-invalid') && errorText) {
16968
+ const { isInvalid, helperText, errorText, helperTextId, errorTextId } = this;
16969
+ if (isInvalid && errorText) {
16859
16970
  return errorTextId;
16860
16971
  }
16861
16972
  if (helperText) {
@@ -16968,7 +17079,7 @@ class Input {
16968
17079
  * TODO(FW-5592): Remove hasStartEndSlots condition
16969
17080
  */
16970
17081
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
16971
- return (hAsync(Host, { key: '41b2526627e7d2773a80f011b123284203a71ca0', class: createColorClasses$1(this.color, {
17082
+ return (hAsync(Host, { key: '1b0cffa910aef4eac24438bf3158e51905e70788', class: createColorClasses$1(this.color, {
16972
17083
  [mode]: true,
16973
17084
  'has-value': hasValue,
16974
17085
  'has-focus': hasFocus,
@@ -16979,14 +17090,14 @@ class Input {
16979
17090
  'in-item': inItem,
16980
17091
  'in-item-color': hostContext('ion-item.ion-color', this.el),
16981
17092
  'input-disabled': disabled,
16982
- }) }, hAsync("label", { key: '9ab078363e32528102b441ad1791d83f86fdcbdc', class: "input-wrapper", htmlFor: inputId, onClick: this.onLabelClick }, this.renderLabelContainer(), hAsync("div", { key: 'e34b594980ec62e4c618e827fadf7669a39ad0d8', class: "native-wrapper", onClick: this.onLabelClick }, hAsync("slot", { key: '12dc04ead5502e9e5736240e918bf9331bf7b5d9', name: "start" }), hAsync("input", Object.assign({ key: 'df356eb4ced23109b2c0242f36dc043aba8782d6', 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 && (hAsync("button", { key: 'f79f68cabcd4ea99419331174a377827db0c0741', "aria-label": "reset", type: "button", class: "input-clear-icon", onPointerDown: (ev) => {
17093
+ }) }, hAsync("label", { key: '24411a6cc190e2054015bca5e2827b96c65bba17', class: "input-wrapper", htmlFor: inputId, onClick: this.onLabelClick }, this.renderLabelContainer(), hAsync("div", { key: '7fa7a7f6d2778e6efbebc6f2671d8a63048f76a8', class: "native-wrapper", onClick: this.onLabelClick }, hAsync("slot", { key: '14f489e6026967ee1b2eee1519bad4230f028489', name: "start" }), hAsync("input", Object.assign({ key: 'd0f5b756394aced0831e80e91313a417bda37e6f', 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.isInvalid ? 'true' : undefined }, this.inheritedAttributes)), this.clearInput && !readonly && !disabled && (hAsync("button", { key: '3e37003927082bbbfce4b3396a263969aa2289fc', "aria-label": "reset", type: "button", class: "input-clear-icon", onPointerDown: (ev) => {
16983
17094
  /**
16984
17095
  * This prevents mobile browsers from
16985
17096
  * blurring the input when the clear
16986
17097
  * button is activated.
16987
17098
  */
16988
17099
  ev.preventDefault();
16989
- }, onClick: this.clearTextInput }, hAsync("ion-icon", { key: '237ec07ec2e10f08818a332bb596578c2c49f770', "aria-hidden": "true", icon: clearIconData }))), hAsync("slot", { key: '1f0a3624aa3e8dc3c307a6762230ab698768a5e5', name: "end" })), shouldRenderHighlight && hAsync("div", { key: '8a8cbb82695a722a0010b53dd0b1f1f97534a20b', class: "input-highlight" })), this.renderBottomContent()));
17100
+ }, onClick: this.clearTextInput }, hAsync("ion-icon", { key: '269ccdfd95a8a5b39bf0587b1494b4badd5c65b3', "aria-hidden": "true", icon: clearIconData }))), hAsync("slot", { key: '5d93a350194c4197c01c5d54f50060e7f527f065', name: "end" })), shouldRenderHighlight && hAsync("div", { key: 'fbdd13d41b37aa1e4608ba2535f7b833748eae3f', class: "input-highlight" })), this.renderBottomContent()));
16990
17101
  }
16991
17102
  get el() { return getElement(this); }
16992
17103
  static get watchers() { return {
@@ -17038,6 +17149,7 @@ class Input {
17038
17149
  "type": [1],
17039
17150
  "value": [1032],
17040
17151
  "hasFocus": [32],
17152
+ "isInvalid": [32],
17041
17153
  "setFocus": [64],
17042
17154
  "getInputElement": [64]
17043
17155
  },
@@ -25408,6 +25520,23 @@ class PickerColumn {
25408
25520
  var _a;
25409
25521
  return el ? (_a = el.getAttribute('aria-label')) !== null && _a !== void 0 ? _a : el.innerText : '';
25410
25522
  };
25523
+ /**
25524
+ * Render an element that overlays the column. This element is for assistive
25525
+ * tech to allow users to navigate the column up/down. This element should receive
25526
+ * focus as it listens for synthesized keyboard events as required by the
25527
+ * slider role: https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/slider_role
25528
+ */
25529
+ this.renderAssistiveFocusable = () => {
25530
+ const { activeItem } = this;
25531
+ const valueText = this.getOptionValueText(activeItem);
25532
+ /**
25533
+ * When using the picker, the valuetext provides important context that valuenow
25534
+ * does not. Additionally, using non-zero valuemin/valuemax values can cause
25535
+ * WebKit to incorrectly announce numeric valuetext values (such as a year
25536
+ * like "2024") as percentages: https://bugs.webkit.org/show_bug.cgi?id=273126
25537
+ */
25538
+ return (hAsync("div", { ref: (el) => (this.assistiveFocusable = el), class: "assistive-focusable", role: "slider", tabindex: this.disabled ? undefined : 0, "aria-label": this.ariaLabel, "aria-valuemin": 0, "aria-valuemax": 0, "aria-valuenow": 0, "aria-valuetext": valueText, "aria-orientation": "vertical", onKeyDown: (ev) => this.onKeyDown(ev) }));
25539
+ };
25411
25540
  }
25412
25541
  ariaLabelChanged(newValue) {
25413
25542
  this.ariaLabel = newValue;
@@ -25548,14 +25677,33 @@ class PickerColumn {
25548
25677
  render() {
25549
25678
  const { color, disabled, isActive, numericInput } = this;
25550
25679
  const mode = getIonMode$1(this);
25551
- return (hAsync(Host, { key: 'db903fd415f8a2d91994dececca481c1af8ba6a9', class: createColorClasses$1(color, {
25680
+ return (hAsync(Host, { key: 'ea0280355b2f87895bf7dddd289ccf473aa759f3', class: createColorClasses$1(color, {
25552
25681
  [mode]: true,
25553
25682
  ['picker-column-active']: isActive,
25554
25683
  ['picker-column-numeric-input']: numericInput,
25555
25684
  ['picker-column-disabled']: disabled,
25556
- }) }, hAsync("slot", { key: '02ce9e1dd7df91afcd50b06416552bcffb5dec98', name: "prefix" }), hAsync("div", { key: '6dfd7d2429bec19244a6b1afb4448121963a031b', class: "picker-opts", ref: (el) => {
25685
+ }) }, this.renderAssistiveFocusable(), hAsync("slot", { key: '482992131cdeb85b1f61430d7fe1322a16345769', name: "prefix" }), hAsync("div", { key: '43f7f80d621d411ef366b3ca1396299e8c9a0c97', "aria-hidden": "true", class: "picker-opts", ref: (el) => {
25557
25686
  this.scrollEl = el;
25558
- }, role: "slider", tabindex: this.disabled ? undefined : 0, "aria-label": this.ariaLabel, "aria-valuemin": 0, "aria-valuemax": 0, "aria-valuenow": 0, "aria-valuetext": this.getOptionValueText(this.activeItem), "aria-orientation": "vertical", onKeyDown: (ev) => this.onKeyDown(ev) }, hAsync("div", { key: 'e30ce0b9cefbfe4d4441fa33acf595da31855c3f', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: '8be2bd293c12c6ba720d9b31d0d561a96f42e97d', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: '8afdcddddabbf646fbb55cb0ba4448309a2c1dd9', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("slot", { key: '6aa0dacc34d6848575ad5b122b9046982308ca43' }), hAsync("div", { key: '92ec8a357414c1b779b11d1dd18fb87a7ee63982', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: 'b89457cb74b5907c25594ff6720ac54ca537e933', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: '5bbc92e6bc24de08e39873bf08c5b668373ac0f8', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0")), hAsync("slot", { key: 'd7bf2b519214f0f3576a4ca79844ad97827dd97f', name: "suffix" })));
25687
+ },
25688
+ /**
25689
+ * When an element has an overlay scroll style and
25690
+ * a fixed height, Firefox will focus the scrollable
25691
+ * container if the content exceeds the container's
25692
+ * dimensions.
25693
+ *
25694
+ * This causes keyboard navigation to focus to this
25695
+ * element instead of going to the next element in
25696
+ * the tab order.
25697
+ *
25698
+ * The desired behavior is for the user to be able to
25699
+ * focus the assistive focusable element and tab to
25700
+ * the next element in the tab order. Instead of tabbing
25701
+ * to this element.
25702
+ *
25703
+ * To prevent this, we set the tabIndex to -1. This
25704
+ * will match the behavior of the other browsers.
25705
+ */
25706
+ tabIndex: -1 }, hAsync("div", { key: '13a9ee686132af32240710730765de4c0003a9e8', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: 'dbccba4920833cfcebe9b0fc763458ec3053705a', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: '682b43f83a5ea2e46067457f3af118535e111edb', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("slot", { key: 'd27e1e1dc0504b2f4627a29912a05bb91e8e413a' }), hAsync("div", { key: '61c948dbb9cf7469aed3018542bc0954211585ba', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: 'cf46c277fbee65e35ff44ce0d53ce12aa9cbf9db', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: 'bbc0e2d491d3f836ab849493ade2f7fa6ad9244e', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0")), hAsync("slot", { key: 'd25cbbe14b2914fe7b878d43b4e3f4a8c8177d24', name: "suffix" })));
25559
25707
  }
25560
25708
  get el() { return getElement(this); }
25561
25709
  static get watchers() { return {
@@ -25947,9 +26095,9 @@ const DECELERATION_FRICTION = 0.97;
25947
26095
  const MAX_PICKER_SPEED = 90;
25948
26096
  const TRANSITION_DURATION = 150;
25949
26097
 
25950
- const pickerColumnOptionIosCss = ".picker-column-option-button{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;width:100%;height:34px;border:0px;outline:none;background:transparent;color:inherit;font-family:var(--ion-font-family, inherit);font-size:inherit;line-height:34px;text-align:inherit;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;overflow:hidden}:host(.option-disabled){opacity:0.4}:host(.option-disabled) .picker-column-option-button{cursor:default}";
26098
+ const pickerColumnOptionIosCss = "button{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;width:100%;height:34px;border:0px;outline:none;background:transparent;color:inherit;font-family:var(--ion-font-family, inherit);font-size:inherit;line-height:34px;text-align:inherit;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;overflow:hidden}:host(.option-disabled){opacity:0.4}:host(.option-disabled) button{cursor:default}";
25951
26099
 
25952
- const pickerColumnOptionMdCss = ".picker-column-option-button{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;width:100%;height:34px;border:0px;outline:none;background:transparent;color:inherit;font-family:var(--ion-font-family, inherit);font-size:inherit;line-height:34px;text-align:inherit;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;overflow:hidden}:host(.option-disabled){opacity:0.4}:host(.option-disabled) .picker-column-option-button{cursor:default}:host(.option-active){color:var(--ion-color-base)}";
26100
+ const pickerColumnOptionMdCss = "button{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;width:100%;height:34px;border:0px;outline:none;background:transparent;color:inherit;font-family:var(--ion-font-family, inherit);font-size:inherit;line-height:34px;text-align:inherit;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;overflow:hidden}:host(.option-disabled){opacity:0.4}:host(.option-disabled) button{cursor:default}:host(.option-active){color:var(--ion-color-base)}";
25953
26101
 
25954
26102
  class PickerColumnOption {
25955
26103
  constructor(hostRef) {
@@ -26041,7 +26189,7 @@ class PickerColumnOption {
26041
26189
  return (hAsync(Host, { key: 'f816729941aabcb31ddfdce3ffe2e2139030d715', class: createColorClasses$1(color, {
26042
26190
  [mode]: true,
26043
26191
  ['option-disabled']: disabled,
26044
- }) }, hAsync("div", { key: 'd942de84fd14d7dc06b1e5cf4f7920d1dc3c6371', class: 'picker-column-option-button', role: "button", "aria-label": ariaLabel, onClick: () => this.onClick() }, hAsync("slot", { key: 'b0df5717b42209e649097209a01476e1a66f5c5c' }))));
26192
+ }) }, hAsync("button", { key: '48dff7833bb60fc8331cd353a0885e6affa683d1', tabindex: "-1", "aria-label": ariaLabel, disabled: disabled, onClick: () => this.onClick() }, hAsync("slot", { key: 'f9224d0e7b7aa6c05b29abfdcfe0f30ad6ee3141' }))));
26045
26193
  }
26046
26194
  get el() { return getElement(this); }
26047
26195
  static get watchers() { return {
@@ -29200,6 +29348,14 @@ class Refresher {
29200
29348
  this.beginRefresh();
29201
29349
  this.didRefresh = true;
29202
29350
  hapticImpact({ style: ImpactStyle.Light });
29351
+ /**
29352
+ * Clear focus from any active element to prevent scroll jumps
29353
+ * when the refresh completes
29354
+ */
29355
+ const activeElement = document.activeElement;
29356
+ if ((activeElement === null || activeElement === void 0 ? void 0 : activeElement.blur) !== undefined) {
29357
+ activeElement.blur();
29358
+ }
29203
29359
  /**
29204
29360
  * Translate the content element otherwise when pointer is removed
29205
29361
  * from screen the scroll content will bounce back over the refresher
@@ -29615,6 +29771,15 @@ class Refresher {
29615
29771
  this.state = 8 /* RefresherState.Refreshing */;
29616
29772
  // place the content in a hangout position while it thinks
29617
29773
  this.setCss(this.pullMin, this.snapbackDuration, true, '');
29774
+ /**
29775
+ * Clear focus from any active element to prevent the browser
29776
+ * from restoring focus and causing scroll jumps after refresh.
29777
+ * This ensures the view stays at the top after refresh completes.
29778
+ */
29779
+ const activeElement = document.activeElement;
29780
+ if ((activeElement === null || activeElement === void 0 ? void 0 : activeElement.blur) !== undefined) {
29781
+ activeElement.blur();
29782
+ }
29618
29783
  // emit "refresh" because it was pulled down far enough
29619
29784
  // and they let go to begin refreshing
29620
29785
  this.ionRefresh.emit({
@@ -29697,7 +29862,7 @@ class Refresher {
29697
29862
  }
29698
29863
  render() {
29699
29864
  const mode = getIonMode$1(this);
29700
- return (hAsync(Host, { key: '8c7a5cc32da02a9cbeaa954258148683f60a6d1b', slot: "fixed", class: {
29865
+ return (hAsync(Host, { key: '2d1bd880877b698604542ab2d602d38b9504d975', slot: "fixed", class: {
29701
29866
  [mode]: true,
29702
29867
  // Used internally for styling
29703
29868
  [`refresher-${mode}`]: true,
@@ -34744,6 +34909,10 @@ class Textarea {
34744
34909
  * is applied in both cases.
34745
34910
  */
34746
34911
  this.hasFocus = false;
34912
+ /**
34913
+ * Track validation state for proper aria-live announcements
34914
+ */
34915
+ this.isInvalid = false;
34747
34916
  /**
34748
34917
  * Indicates whether and how the text value should be automatically capitalized as it is entered/edited by the user.
34749
34918
  * Available options: `"off"`, `"none"`, `"on"`, `"sentences"`, `"words"`, `"characters"`.
@@ -34889,10 +35058,18 @@ class Textarea {
34889
35058
  this.el.click();
34890
35059
  }
34891
35060
  }
35061
+ /**
35062
+ * Checks if the textarea is in an invalid state based on validation classes
35063
+ */
35064
+ checkValidationState() {
35065
+ return this.el.classList.contains('ion-touched') && this.el.classList.contains('ion-invalid');
35066
+ }
34892
35067
  connectedCallback() {
34893
35068
  const { el } = this;
34894
35069
  this.slotMutationController = createSlotMutationController(el, ['label', 'start', 'end'], () => forceUpdate());
34895
35070
  this.notchController = createNotchController(el, () => this.notchSpacerEl, () => this.labelSlot);
35071
+ // Always set initial state
35072
+ this.isInvalid = this.checkValidationState();
34896
35073
  this.debounceChanged();
34897
35074
  }
34898
35075
  disconnectedCallback() {
@@ -34904,6 +35081,11 @@ class Textarea {
34904
35081
  this.notchController.destroy();
34905
35082
  this.notchController = undefined;
34906
35083
  }
35084
+ // Clean up validation observer to prevent memory leaks
35085
+ if (this.validationObserver) {
35086
+ this.validationObserver.disconnect();
35087
+ this.validationObserver = undefined;
35088
+ }
34907
35089
  }
34908
35090
  componentWillLoad() {
34909
35091
  this.inheritedAttributes = Object.assign(Object.assign({}, inheritAriaAttributes(this.el)), inheritAttributes$1(this.el, ['data-form-type', 'title', 'tabindex', 'dir']));
@@ -35081,8 +35263,8 @@ class Textarea {
35081
35263
  ];
35082
35264
  }
35083
35265
  getHintTextID() {
35084
- const { el, helperText, errorText, helperTextId, errorTextId } = this;
35085
- if (el.classList.contains('ion-touched') && el.classList.contains('ion-invalid') && errorText) {
35266
+ const { isInvalid, helperText, errorText, helperTextId, errorTextId } = this;
35267
+ if (isInvalid && errorText) {
35086
35268
  return errorTextId;
35087
35269
  }
35088
35270
  if (helperText) {
@@ -35141,7 +35323,7 @@ class Textarea {
35141
35323
  * TODO(FW-5592): Remove hasStartEndSlots condition
35142
35324
  */
35143
35325
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
35144
- return (hAsync(Host, { key: 'd9f2ede0107987fc42c99e310cd2336bad5a5755', class: createColorClasses$1(this.color, {
35326
+ return (hAsync(Host, { key: 'de258335fde7fa934cf3bd58c469525440457468', class: createColorClasses$1(this.color, {
35145
35327
  [mode]: true,
35146
35328
  'has-value': hasValue,
35147
35329
  'has-focus': hasFocus,
@@ -35150,7 +35332,7 @@ class Textarea {
35150
35332
  [`textarea-shape-${shape}`]: shape !== undefined,
35151
35333
  [`textarea-label-placement-${labelPlacement}`]: true,
35152
35334
  'textarea-disabled': disabled,
35153
- }) }, hAsync("label", { key: '9de598b95237462bb3bccffaefe83afbb43554b8', class: "textarea-wrapper", htmlFor: inputId, onClick: this.onLabelClick }, this.renderLabelContainer(), hAsync("div", { key: 'e33c426c6541d723ccc246bb404c03687726ff83', class: "textarea-wrapper-inner" }, hAsync("div", { key: '521e11af9d54d281b0a2b1c25bcfc6f742c18296', class: "start-slot-wrapper" }, hAsync("slot", { key: '515523f6ca3ce0e5dd08f3275c21a190fb1ca177', name: "start" })), hAsync("div", { key: '916e01e00de8400ae00ef06bc1fb62d8be2eee08', class: "native-wrapper", ref: (el) => (this.textareaWrapper = el) }, hAsync("textarea", Object.assign({ key: '810271e6532d90e27dab1fcb26546113c1ce9cb0', 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)), hAsync("div", { key: '80aca9ea9546dca9d38efd291a6b0be384bb6978', class: "end-slot-wrapper" }, hAsync("slot", { key: '407fab16c66a9f4a542369bfecc0d9afa0065977', name: "end" }))), shouldRenderHighlight && hAsync("div", { key: 'f00523a6698fac8a1996e04303487bef01d10f25', class: "textarea-highlight" })), this.renderBottomContent()));
35335
+ }) }, hAsync("label", { key: '79fc87122871d45316b1c5fd0a467bf85351e804', class: "textarea-wrapper", htmlFor: inputId, onClick: this.onLabelClick }, this.renderLabelContainer(), hAsync("div", { key: '2375888a47557b41ea3b3bf8eae1fd3f2a4032bd', class: "textarea-wrapper-inner" }, hAsync("div", { key: 'c5af683527a870bd85256b6de8a7d216283403dd', class: "start-slot-wrapper" }, hAsync("slot", { key: 'd972e5784403c5cc6ed067ae578ce23ff8303e1e', name: "start" })), hAsync("div", { key: '1092067609d912a76a8679767611e4ca3e071c6f', class: "native-wrapper", ref: (el) => (this.textareaWrapper = el) }, hAsync("textarea", Object.assign({ key: 'cd23a4bad4d5b460830340009d24d0618f14fd73', 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: 'c91a5456f4490ef8699f2e44b4a6c64f6084f5fd', class: "end-slot-wrapper" }, hAsync("slot", { key: 'b71ba7ba0d74091e81784432dcffa832b66f3f25', name: "end" }))), shouldRenderHighlight && hAsync("div", { key: '757c3287e1cea5ee851227407685a437f8408c54', class: "textarea-highlight" })), this.renderBottomContent()));
35154
35336
  }
35155
35337
  get el() { return getElement(this); }
35156
35338
  static get watchers() { return {
@@ -35195,6 +35377,7 @@ class Textarea {
35195
35377
  "labelPlacement": [1, "label-placement"],
35196
35378
  "shape": [1],
35197
35379
  "hasFocus": [32],
35380
+ "isInvalid": [32],
35198
35381
  "setFocus": [64],
35199
35382
  "getInputElement": [64]
35200
35383
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ionic/core",
3
- "version": "8.7.3-dev.11755600455.1e79c35a",
3
+ "version": "8.7.3-dev.11755622775.1fc05815",
4
4
  "description": "Base components for Ionic",
5
5
  "keywords": [
6
6
  "ionic",
@@ -1,4 +0,0 @@
1
- /*!
2
- * (C) Ionic http://ionicframework.com - MIT License
3
- */
4
- import{r as i,c as t,i as n,h as o,d as e,g as r}from"./p-4DxY6_gG.js";import{c as a}from"./p-Dm_oBkW1.js";import{d as l,i as s,b as p,c as d}from"./p-C-Cct-6D.js";import{c,g as u}from"./p-BHGXdud8.js";import{h,c as m}from"./p-DiVJyqlX.js";import{b,d as g}from"./p-DV3sJJW8.js";import{b as f}from"./p-Br3vSlYh.js";import"./p-ZjP4CjeZ.js";const x=class{constructor(n){i(this,n),this.ionInput=t(this,"ionInput",7),this.ionChange=t(this,"ionChange",7),this.ionBlur=t(this,"ionBlur",7),this.ionFocus=t(this,"ionFocus",7),this.inputId="ion-input-"+v++,this.helperTextId=`${this.inputId}-helper-text`,this.errorTextId=`${this.inputId}-error-text`,this.inheritedAttributes={},this.isComposing=!1,this.didInputClearOnEdit=!1,this.hasFocus=!1,this.autocapitalize="off",this.autocomplete="off",this.autocorrect="off",this.autofocus=!1,this.clearInput=!1,this.counter=!1,this.disabled=!1,this.labelPlacement="start",this.name=this.inputId,this.readonly=!1,this.required=!1,this.spellcheck=!1,this.type="text",this.value="",this.onInput=i=>{const t=i.target;t&&(this.value=t.value||""),this.emitInputChange(i)},this.onChange=i=>{this.emitValueChange(i)},this.onBlur=i=>{this.hasFocus=!1,this.focusedValue!==this.value&&this.emitValueChange(i),this.didInputClearOnEdit=!1,this.ionBlur.emit(i)},this.onFocus=i=>{this.hasFocus=!0,this.focusedValue=this.value,this.ionFocus.emit(i)},this.onKeydown=i=>{this.checkClearOnEdit(i)},this.onCompositionStart=()=>{this.isComposing=!0},this.onCompositionEnd=()=>{this.isComposing=!1},this.clearTextInput=i=>{this.clearInput&&!this.readonly&&!this.disabled&&i&&(i.preventDefault(),i.stopPropagation(),this.setFocus()),this.value="",this.emitInputChange(i)},this.onLabelClick=i=>{i.target===i.currentTarget&&i.stopPropagation()}}debounceChanged(){const{ionInput:i,debounce:t,originalIonInput:n}=this;this.ionInput=void 0===t?null!=n?n:i:l(i,t)}onTypeChange(){const i=this.el.querySelector("ion-input-password-toggle");i&&(i.type=this.type)}valueChanged(){const i=this.nativeInput,t=this.getValue();i&&i.value!==t&&!this.isComposing&&(i.value=t)}onDirChanged(i){this.inheritedAttributes=Object.assign(Object.assign({},this.inheritedAttributes),{dir:i}),n(this)}onClickCapture(i){const t=this.nativeInput;t&&i.target===t&&(i.stopPropagation(),this.el.click())}componentWillLoad(){this.inheritedAttributes=Object.assign(Object.assign({},s(this.el)),p(this.el,["tabindex","title","data-form-type","dir"]))}connectedCallback(){const{el:i}=this;this.slotMutationController=c(i,["label","start","end"],(()=>n(this))),this.notchController=a(i,(()=>this.notchSpacerEl),(()=>this.labelSlot)),this.debounceChanged(),document.dispatchEvent(new CustomEvent("ionInputDidLoad",{detail:this.el}))}componentDidLoad(){this.originalIonInput=this.ionInput,this.onTypeChange(),this.debounceChanged()}componentDidRender(){var i;null===(i=this.notchController)||void 0===i||i.calculateNotchWidth()}disconnectedCallback(){document.dispatchEvent(new CustomEvent("ionInputDidUnload",{detail:this.el})),this.slotMutationController&&(this.slotMutationController.destroy(),this.slotMutationController=void 0),this.notchController&&(this.notchController.destroy(),this.notchController=void 0)}async setFocus(){this.nativeInput&&this.nativeInput.focus()}async getInputElement(){return this.nativeInput||await new Promise((i=>d(this.el,i))),Promise.resolve(this.nativeInput)}emitValueChange(i){const{value:t}=this,n=null==t?t:t.toString();this.focusedValue=n,this.ionChange.emit({value:n,event:i})}emitInputChange(i){const{value:t}=this,n=null==t?t:t.toString();this.ionInput.emit({value:n,event:i})}shouldClearOnEdit(){const{type:i,clearOnEdit:t}=this;return void 0===t?"password"===i:t}getValue(){return"number"==typeof this.value?this.value.toString():(this.value||"").toString()}checkClearOnEdit(i){if(!this.shouldClearOnEdit())return;const t=["Enter","Tab","Shift","Meta","Alt","Control"].includes(i.key);this.didInputClearOnEdit||!this.hasValue()||t||(this.value="",this.emitInputChange(i)),t||(this.didInputClearOnEdit=!0)}hasValue(){return this.getValue().length>0}renderHintText(){const{helperText:i,errorText:t,helperTextId:n,errorTextId:e}=this;return[o("div",{id:n,class:"helper-text"},i),o("div",{id:e,class:"error-text"},t)]}getHintTextID(){const{el:i,helperText:t,errorText:n,helperTextId:o,errorTextId:e}=this;return i.classList.contains("ion-touched")&&i.classList.contains("ion-invalid")&&n?e:t?o:void 0}renderCounter(){const{counter:i,maxlength:t,counterFormatter:n,value:e}=this;if(!0===i&&void 0!==t)return o("div",{class:"counter"},u(e,t,n))}renderBottomContent(){const{counter:i,helperText:t,errorText:n,maxlength:e}=this;if(t||n||!0===i&&void 0!==e)return o("div",{class:"input-bottom"},this.renderHintText(),this.renderCounter())}renderLabel(){const{label:i}=this;return o("div",{class:{"label-text-wrapper":!0,"label-text-wrapper-hidden":!this.hasLabel}},void 0===i?o("slot",{name:"label"}):o("div",{class:"label-text"},i))}get labelSlot(){return this.el.querySelector('[slot="label"]')}get hasLabel(){return void 0!==this.label||null!==this.labelSlot}renderLabelContainer(){return"md"===f(this)&&"outline"===this.fill?[o("div",{class:"input-outline-container"},o("div",{class:"input-outline-start"}),o("div",{class:{"input-outline-notch":!0,"input-outline-notch-hidden":!this.hasLabel}},o("div",{class:"notch-spacer","aria-hidden":"true",ref:i=>this.notchSpacerEl=i},this.label)),o("div",{class:"input-outline-end"})),this.renderLabel()]:this.renderLabel()}render(){const{disabled:i,fill:t,readonly:n,shape:r,inputId:a,labelPlacement:l,el:s,hasFocus:p,clearInputIcon:d}=this,c=f(this),u=this.getValue(),x=h("ion-item",this.el),v="md"===c&&"outline"!==t&&!x,w=null!=d?d:"ios"===c?b:g,y=this.hasValue(),k=null!==s.querySelector('[slot="start"], [slot="end"]'),z="stacked"===l||"floating"===l&&(y||p||k);return o(e,{key:"41b2526627e7d2773a80f011b123284203a71ca0",class:m(this.color,{[c]:!0,"has-value":y,"has-focus":p,"label-floating":z,[`input-fill-${t}`]:void 0!==t,[`input-shape-${r}`]:void 0!==r,[`input-label-placement-${l}`]:!0,"in-item":x,"in-item-color":h("ion-item.ion-color",this.el),"input-disabled":i})},o("label",{key:"9ab078363e32528102b441ad1791d83f86fdcbdc",class:"input-wrapper",htmlFor:a,onClick:this.onLabelClick},this.renderLabelContainer(),o("div",{key:"e34b594980ec62e4c618e827fadf7669a39ad0d8",class:"native-wrapper",onClick:this.onLabelClick},o("slot",{key:"12dc04ead5502e9e5736240e918bf9331bf7b5d9",name:"start"}),o("input",Object.assign({key:"df356eb4ced23109b2c0242f36dc043aba8782d6",class:"native-input",ref:i=>this.nativeInput=i,id:a,disabled:i,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:n,required:this.required,spellcheck:this.spellcheck,step:this.step,type:this.type,value:u,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&&!n&&!i&&o("button",{key:"f79f68cabcd4ea99419331174a377827db0c0741","aria-label":"reset",type:"button",class:"input-clear-icon",onPointerDown:i=>{i.preventDefault()},onClick:this.clearTextInput},o("ion-icon",{key:"237ec07ec2e10f08818a332bb596578c2c49f770","aria-hidden":"true",icon:w})),o("slot",{key:"1f0a3624aa3e8dc3c307a6762230ab698768a5e5",name:"end"})),v&&o("div",{key:"8a8cbb82695a722a0010b53dd0b1f1f97534a20b",class:"input-highlight"})),this.renderBottomContent())}get el(){return r(this)}static get watchers(){return{debounce:["debounceChanged"],type:["onTypeChange"],value:["valueChanged"],dir:["onDirChanged"]}}};let v=0;x.style={ios:".sc-ion-input-ios-h{--placeholder-color:initial;--placeholder-font-style:initial;--placeholder-font-weight:initial;--placeholder-opacity:var(--ion-placeholder-opacity, 0.6);--padding-top:0px;--padding-end:0px;--padding-bottom:0px;--padding-start:0px;--background:transparent;--color:initial;--border-style:solid;--highlight-color-focused:var(--ion-color-primary, #0054e9);--highlight-color-valid:var(--ion-color-success, #2dd55b);--highlight-color-invalid:var(--ion-color-danger, #c5000f);--highlight-color:var(--highlight-color-focused);display:block;position:relative;width:100%;min-height:44px;padding:0 !important;color:var(--color);font-family:var(--ion-font-family, inherit);z-index:2}ion-item[slot=start].sc-ion-input-ios-h,ion-item [slot=start].sc-ion-input-ios-h,ion-item[slot=end].sc-ion-input-ios-h,ion-item [slot=end].sc-ion-input-ios-h{width:auto}.ion-color.sc-ion-input-ios-h{--highlight-color-focused:var(--ion-color-base)}.input-label-placement-floating.sc-ion-input-ios-h,.input-label-placement-stacked.sc-ion-input-ios-h{min-height:56px}.native-input.sc-ion-input-ios{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;display:inline-block;position:relative;-ms-flex:1;flex:1;width:100%;max-width:100%;height:100%;max-height:100%;border:0;outline:none;background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;appearance:none;z-index:1}.native-input.sc-ion-input-ios::-webkit-input-placeholder{color:var(--placeholder-color);font-family:inherit;font-style:var(--placeholder-font-style);font-weight:var(--placeholder-font-weight);opacity:var(--placeholder-opacity)}.native-input.sc-ion-input-ios::-moz-placeholder{color:var(--placeholder-color);font-family:inherit;font-style:var(--placeholder-font-style);font-weight:var(--placeholder-font-weight);opacity:var(--placeholder-opacity)}.native-input.sc-ion-input-ios:-ms-input-placeholder{color:var(--placeholder-color);font-family:inherit;font-style:var(--placeholder-font-style);font-weight:var(--placeholder-font-weight);opacity:var(--placeholder-opacity)}.native-input.sc-ion-input-ios::-ms-input-placeholder{color:var(--placeholder-color);font-family:inherit;font-style:var(--placeholder-font-style);font-weight:var(--placeholder-font-weight);opacity:var(--placeholder-opacity)}.native-input.sc-ion-input-ios::placeholder{color:var(--placeholder-color);font-family:inherit;font-style:var(--placeholder-font-style);font-weight:var(--placeholder-font-weight);opacity:var(--placeholder-opacity)}.native-input.sc-ion-input-ios:-webkit-autofill{background-color:transparent}.native-input.sc-ion-input-ios:invalid{-webkit-box-shadow:none;box-shadow:none}.native-input.sc-ion-input-ios::-ms-clear{display:none}.cloned-input.sc-ion-input-ios{top:0;bottom:0;position:absolute;pointer-events:none}.cloned-input.sc-ion-input-ios{inset-inline-start:0}.cloned-input.sc-ion-input-ios:disabled{opacity:1}.input-clear-icon.sc-ion-input-ios{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:auto;margin-bottom:auto;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;background-position:center;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:30px;height:30px;border:0;outline:none;background-color:transparent;background-repeat:no-repeat;color:var(--ion-color-step-600, var(--ion-text-color-step-400, #666666));visibility:hidden;-webkit-appearance:none;-moz-appearance:none;appearance:none}.in-item-color.sc-ion-input-ios-h .input-clear-icon.sc-ion-input-ios{color:inherit}.input-clear-icon.sc-ion-input-ios:focus{opacity:0.5}.has-value.sc-ion-input-ios-h .input-clear-icon.sc-ion-input-ios{visibility:visible}.input-wrapper.sc-ion-input-ios{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);border-radius:var(--border-radius);display:-ms-flexbox;display:flex;position:relative;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:stretch;align-items:stretch;height:inherit;min-height:inherit;-webkit-transition:background-color 15ms linear;transition:background-color 15ms linear;background:var(--background);line-height:normal}.native-wrapper.sc-ion-input-ios{display:-ms-flexbox;display:flex;position:relative;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center;width:100%}.ion-touched.ion-invalid.sc-ion-input-ios-h{--highlight-color:var(--highlight-color-invalid)}.ion-valid.sc-ion-input-ios-h{--highlight-color:var(--highlight-color-valid)}.input-bottom.sc-ion-input-ios{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:5px;padding-bottom:0;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;border-top:var(--border-width) var(--border-style) var(--border-color);font-size:0.75rem;white-space:normal}.has-focus.ion-valid.sc-ion-input-ios-h,.ion-touched.ion-invalid.sc-ion-input-ios-h{--border-color:var(--highlight-color)}.input-bottom.sc-ion-input-ios .error-text.sc-ion-input-ios{display:none;color:var(--highlight-color-invalid)}.input-bottom.sc-ion-input-ios .helper-text.sc-ion-input-ios{display:block;color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d))}.ion-touched.ion-invalid.sc-ion-input-ios-h .input-bottom.sc-ion-input-ios .error-text.sc-ion-input-ios{display:block}.ion-touched.ion-invalid.sc-ion-input-ios-h .input-bottom.sc-ion-input-ios .helper-text.sc-ion-input-ios{display:none}.input-bottom.sc-ion-input-ios .counter.sc-ion-input-ios{-webkit-margin-start:auto;margin-inline-start:auto;color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d));white-space:nowrap;-webkit-padding-start:16px;padding-inline-start:16px}.has-focus.sc-ion-input-ios-h input.sc-ion-input-ios{caret-color:var(--highlight-color)}.label-text-wrapper.sc-ion-input-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;max-width:200px;-webkit-transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), transform 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), transform 150ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 150ms cubic-bezier(0.4, 0, 0.2, 1);pointer-events:none}.label-text.sc-ion-input-ios,.sc-ion-input-ios-s>[slot=label]{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.label-text-wrapper-hidden.sc-ion-input-ios,.input-outline-notch-hidden.sc-ion-input-ios{display:none}.input-wrapper.sc-ion-input-ios input.sc-ion-input-ios{-webkit-transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1)}.input-label-placement-start.sc-ion-input-ios-h .input-wrapper.sc-ion-input-ios{-ms-flex-direction:row;flex-direction:row}.input-label-placement-start.sc-ion-input-ios-h .label-text-wrapper.sc-ion-input-ios{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px;margin-top:0;margin-bottom:0}.input-label-placement-end.sc-ion-input-ios-h .input-wrapper.sc-ion-input-ios{-ms-flex-direction:row-reverse;flex-direction:row-reverse}.input-label-placement-end.sc-ion-input-ios-h .label-text-wrapper.sc-ion-input-ios{-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:0;margin-inline-end:0;margin-top:0;margin-bottom:0}.input-label-placement-fixed.sc-ion-input-ios-h .label-text-wrapper.sc-ion-input-ios{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px;margin-top:0;margin-bottom:0}.input-label-placement-fixed.sc-ion-input-ios-h .label-text.sc-ion-input-ios{-ms-flex:0 0 100px;flex:0 0 100px;width:100px;min-width:100px;max-width:200px}.input-label-placement-stacked.sc-ion-input-ios-h .input-wrapper.sc-ion-input-ios,.input-label-placement-floating.sc-ion-input-ios-h .input-wrapper.sc-ion-input-ios{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:start}.input-label-placement-stacked.sc-ion-input-ios-h .label-text-wrapper.sc-ion-input-ios,.input-label-placement-floating.sc-ion-input-ios-h .label-text-wrapper.sc-ion-input-ios{-webkit-transform-origin:left top;transform-origin:left top;max-width:100%;z-index:2}[dir=rtl].sc-ion-input-ios-h -no-combinator.input-label-placement-stacked.sc-ion-input-ios-h .label-text-wrapper.sc-ion-input-ios,[dir=rtl] .sc-ion-input-ios-h -no-combinator.input-label-placement-stacked.sc-ion-input-ios-h .label-text-wrapper.sc-ion-input-ios,[dir=rtl].input-label-placement-stacked.sc-ion-input-ios-h .label-text-wrapper.sc-ion-input-ios,[dir=rtl] .input-label-placement-stacked.sc-ion-input-ios-h .label-text-wrapper.sc-ion-input-ios,[dir=rtl].sc-ion-input-ios-h -no-combinator.input-label-placement-floating.sc-ion-input-ios-h .label-text-wrapper.sc-ion-input-ios,[dir=rtl] .sc-ion-input-ios-h -no-combinator.input-label-placement-floating.sc-ion-input-ios-h .label-text-wrapper.sc-ion-input-ios,[dir=rtl].input-label-placement-floating.sc-ion-input-ios-h .label-text-wrapper.sc-ion-input-ios,[dir=rtl] .input-label-placement-floating.sc-ion-input-ios-h .label-text-wrapper.sc-ion-input-ios{-webkit-transform-origin:right top;transform-origin:right top}@supports selector(:dir(rtl)){.input-label-placement-stacked.sc-ion-input-ios-h:dir(rtl) .label-text-wrapper.sc-ion-input-ios,.input-label-placement-floating.sc-ion-input-ios-h:dir(rtl) .label-text-wrapper.sc-ion-input-ios{-webkit-transform-origin:right top;transform-origin:right top}}.input-label-placement-stacked.sc-ion-input-ios-h input.sc-ion-input-ios,.input-label-placement-floating.sc-ion-input-ios-h input.sc-ion-input-ios{margin-left:0;margin-right:0;margin-top:1px;margin-bottom:0}.input-label-placement-floating.sc-ion-input-ios-h .label-text-wrapper.sc-ion-input-ios{-webkit-transform:translateY(100%) scale(1);transform:translateY(100%) scale(1)}.input-label-placement-floating.sc-ion-input-ios-h input.sc-ion-input-ios{opacity:0}.has-focus.input-label-placement-floating.sc-ion-input-ios-h input.sc-ion-input-ios,.has-value.input-label-placement-floating.sc-ion-input-ios-h input.sc-ion-input-ios{opacity:1}.label-floating.sc-ion-input-ios-h .label-text-wrapper.sc-ion-input-ios{-webkit-transform:translateY(50%) scale(0.75);transform:translateY(50%) scale(0.75);max-width:calc(100% / 0.75)}.sc-ion-input-ios-s>[slot=start]:last-of-type{-webkit-margin-end:16px;margin-inline-end:16px;-webkit-margin-start:0;margin-inline-start:0}.sc-ion-input-ios-s>[slot=end]:first-of-type{-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:0;margin-inline-end:0}.sc-ion-input-ios-h[disabled].sc-ion-input-ios-s>ion-input-password-toggle,.sc-ion-input-ios-h[disabled] .sc-ion-input-ios-s>ion-input-password-toggle,.sc-ion-input-ios-h[readonly].sc-ion-input-ios-s>ion-input-password-toggle,.sc-ion-input-ios-h[readonly] .sc-ion-input-ios-s>ion-input-password-toggle{visibility:hidden}.sc-ion-input-ios-h{--border-width:0.55px;--border-color:var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-250, var(--ion-background-color-step-250, #c8c7cc))));--highlight-height:0px;font-size:inherit}.input-clear-icon.sc-ion-input-ios ion-icon.sc-ion-input-ios{width:18px;height:18px}.input-disabled.sc-ion-input-ios-h{opacity:0.3}.sc-ion-input-ios-s>ion-button[slot=start].button-has-icon-only,.sc-ion-input-ios-s>ion-button[slot=end].button-has-icon-only{--border-radius:50%;--padding-start:0;--padding-end:0;--padding-top:0;--padding-bottom:0;aspect-ratio:1}",md:".sc-ion-input-md-h{--placeholder-color:initial;--placeholder-font-style:initial;--placeholder-font-weight:initial;--placeholder-opacity:var(--ion-placeholder-opacity, 0.6);--padding-top:0px;--padding-end:0px;--padding-bottom:0px;--padding-start:0px;--background:transparent;--color:initial;--border-style:solid;--highlight-color-focused:var(--ion-color-primary, #0054e9);--highlight-color-valid:var(--ion-color-success, #2dd55b);--highlight-color-invalid:var(--ion-color-danger, #c5000f);--highlight-color:var(--highlight-color-focused);display:block;position:relative;width:100%;min-height:44px;padding:0 !important;color:var(--color);font-family:var(--ion-font-family, inherit);z-index:2}ion-item[slot=start].sc-ion-input-md-h,ion-item [slot=start].sc-ion-input-md-h,ion-item[slot=end].sc-ion-input-md-h,ion-item [slot=end].sc-ion-input-md-h{width:auto}.ion-color.sc-ion-input-md-h{--highlight-color-focused:var(--ion-color-base)}.input-label-placement-floating.sc-ion-input-md-h,.input-label-placement-stacked.sc-ion-input-md-h{min-height:56px}.native-input.sc-ion-input-md{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;display:inline-block;position:relative;-ms-flex:1;flex:1;width:100%;max-width:100%;height:100%;max-height:100%;border:0;outline:none;background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;appearance:none;z-index:1}.native-input.sc-ion-input-md::-webkit-input-placeholder{color:var(--placeholder-color);font-family:inherit;font-style:var(--placeholder-font-style);font-weight:var(--placeholder-font-weight);opacity:var(--placeholder-opacity)}.native-input.sc-ion-input-md::-moz-placeholder{color:var(--placeholder-color);font-family:inherit;font-style:var(--placeholder-font-style);font-weight:var(--placeholder-font-weight);opacity:var(--placeholder-opacity)}.native-input.sc-ion-input-md:-ms-input-placeholder{color:var(--placeholder-color);font-family:inherit;font-style:var(--placeholder-font-style);font-weight:var(--placeholder-font-weight);opacity:var(--placeholder-opacity)}.native-input.sc-ion-input-md::-ms-input-placeholder{color:var(--placeholder-color);font-family:inherit;font-style:var(--placeholder-font-style);font-weight:var(--placeholder-font-weight);opacity:var(--placeholder-opacity)}.native-input.sc-ion-input-md::placeholder{color:var(--placeholder-color);font-family:inherit;font-style:var(--placeholder-font-style);font-weight:var(--placeholder-font-weight);opacity:var(--placeholder-opacity)}.native-input.sc-ion-input-md:-webkit-autofill{background-color:transparent}.native-input.sc-ion-input-md:invalid{-webkit-box-shadow:none;box-shadow:none}.native-input.sc-ion-input-md::-ms-clear{display:none}.cloned-input.sc-ion-input-md{top:0;bottom:0;position:absolute;pointer-events:none}.cloned-input.sc-ion-input-md{inset-inline-start:0}.cloned-input.sc-ion-input-md:disabled{opacity:1}.input-clear-icon.sc-ion-input-md{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:auto;margin-bottom:auto;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;background-position:center;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:30px;height:30px;border:0;outline:none;background-color:transparent;background-repeat:no-repeat;color:var(--ion-color-step-600, var(--ion-text-color-step-400, #666666));visibility:hidden;-webkit-appearance:none;-moz-appearance:none;appearance:none}.in-item-color.sc-ion-input-md-h .input-clear-icon.sc-ion-input-md{color:inherit}.input-clear-icon.sc-ion-input-md:focus{opacity:0.5}.has-value.sc-ion-input-md-h .input-clear-icon.sc-ion-input-md{visibility:visible}.input-wrapper.sc-ion-input-md{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);border-radius:var(--border-radius);display:-ms-flexbox;display:flex;position:relative;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:stretch;align-items:stretch;height:inherit;min-height:inherit;-webkit-transition:background-color 15ms linear;transition:background-color 15ms linear;background:var(--background);line-height:normal}.native-wrapper.sc-ion-input-md{display:-ms-flexbox;display:flex;position:relative;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center;width:100%}.ion-touched.ion-invalid.sc-ion-input-md-h{--highlight-color:var(--highlight-color-invalid)}.ion-valid.sc-ion-input-md-h{--highlight-color:var(--highlight-color-valid)}.input-bottom.sc-ion-input-md{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:5px;padding-bottom:0;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;border-top:var(--border-width) var(--border-style) var(--border-color);font-size:0.75rem;white-space:normal}.has-focus.ion-valid.sc-ion-input-md-h,.ion-touched.ion-invalid.sc-ion-input-md-h{--border-color:var(--highlight-color)}.input-bottom.sc-ion-input-md .error-text.sc-ion-input-md{display:none;color:var(--highlight-color-invalid)}.input-bottom.sc-ion-input-md .helper-text.sc-ion-input-md{display:block;color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d))}.ion-touched.ion-invalid.sc-ion-input-md-h .input-bottom.sc-ion-input-md .error-text.sc-ion-input-md{display:block}.ion-touched.ion-invalid.sc-ion-input-md-h .input-bottom.sc-ion-input-md .helper-text.sc-ion-input-md{display:none}.input-bottom.sc-ion-input-md .counter.sc-ion-input-md{-webkit-margin-start:auto;margin-inline-start:auto;color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d));white-space:nowrap;-webkit-padding-start:16px;padding-inline-start:16px}.has-focus.sc-ion-input-md-h input.sc-ion-input-md{caret-color:var(--highlight-color)}.label-text-wrapper.sc-ion-input-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;max-width:200px;-webkit-transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), transform 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), transform 150ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 150ms cubic-bezier(0.4, 0, 0.2, 1);pointer-events:none}.label-text.sc-ion-input-md,.sc-ion-input-md-s>[slot=label]{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.label-text-wrapper-hidden.sc-ion-input-md,.input-outline-notch-hidden.sc-ion-input-md{display:none}.input-wrapper.sc-ion-input-md input.sc-ion-input-md{-webkit-transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1)}.input-label-placement-start.sc-ion-input-md-h .input-wrapper.sc-ion-input-md{-ms-flex-direction:row;flex-direction:row}.input-label-placement-start.sc-ion-input-md-h .label-text-wrapper.sc-ion-input-md{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px;margin-top:0;margin-bottom:0}.input-label-placement-end.sc-ion-input-md-h .input-wrapper.sc-ion-input-md{-ms-flex-direction:row-reverse;flex-direction:row-reverse}.input-label-placement-end.sc-ion-input-md-h .label-text-wrapper.sc-ion-input-md{-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:0;margin-inline-end:0;margin-top:0;margin-bottom:0}.input-label-placement-fixed.sc-ion-input-md-h .label-text-wrapper.sc-ion-input-md{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px;margin-top:0;margin-bottom:0}.input-label-placement-fixed.sc-ion-input-md-h .label-text.sc-ion-input-md{-ms-flex:0 0 100px;flex:0 0 100px;width:100px;min-width:100px;max-width:200px}.input-label-placement-stacked.sc-ion-input-md-h .input-wrapper.sc-ion-input-md,.input-label-placement-floating.sc-ion-input-md-h .input-wrapper.sc-ion-input-md{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:start}.input-label-placement-stacked.sc-ion-input-md-h .label-text-wrapper.sc-ion-input-md,.input-label-placement-floating.sc-ion-input-md-h .label-text-wrapper.sc-ion-input-md{-webkit-transform-origin:left top;transform-origin:left top;max-width:100%;z-index:2}[dir=rtl].sc-ion-input-md-h -no-combinator.input-label-placement-stacked.sc-ion-input-md-h .label-text-wrapper.sc-ion-input-md,[dir=rtl] .sc-ion-input-md-h -no-combinator.input-label-placement-stacked.sc-ion-input-md-h .label-text-wrapper.sc-ion-input-md,[dir=rtl].input-label-placement-stacked.sc-ion-input-md-h .label-text-wrapper.sc-ion-input-md,[dir=rtl] .input-label-placement-stacked.sc-ion-input-md-h .label-text-wrapper.sc-ion-input-md,[dir=rtl].sc-ion-input-md-h -no-combinator.input-label-placement-floating.sc-ion-input-md-h .label-text-wrapper.sc-ion-input-md,[dir=rtl] .sc-ion-input-md-h -no-combinator.input-label-placement-floating.sc-ion-input-md-h .label-text-wrapper.sc-ion-input-md,[dir=rtl].input-label-placement-floating.sc-ion-input-md-h .label-text-wrapper.sc-ion-input-md,[dir=rtl] .input-label-placement-floating.sc-ion-input-md-h .label-text-wrapper.sc-ion-input-md{-webkit-transform-origin:right top;transform-origin:right top}@supports selector(:dir(rtl)){.input-label-placement-stacked.sc-ion-input-md-h:dir(rtl) .label-text-wrapper.sc-ion-input-md,.input-label-placement-floating.sc-ion-input-md-h:dir(rtl) .label-text-wrapper.sc-ion-input-md{-webkit-transform-origin:right top;transform-origin:right top}}.input-label-placement-stacked.sc-ion-input-md-h input.sc-ion-input-md,.input-label-placement-floating.sc-ion-input-md-h input.sc-ion-input-md{margin-left:0;margin-right:0;margin-top:1px;margin-bottom:0}.input-label-placement-floating.sc-ion-input-md-h .label-text-wrapper.sc-ion-input-md{-webkit-transform:translateY(100%) scale(1);transform:translateY(100%) scale(1)}.input-label-placement-floating.sc-ion-input-md-h input.sc-ion-input-md{opacity:0}.has-focus.input-label-placement-floating.sc-ion-input-md-h input.sc-ion-input-md,.has-value.input-label-placement-floating.sc-ion-input-md-h input.sc-ion-input-md{opacity:1}.label-floating.sc-ion-input-md-h .label-text-wrapper.sc-ion-input-md{-webkit-transform:translateY(50%) scale(0.75);transform:translateY(50%) scale(0.75);max-width:calc(100% / 0.75)}.sc-ion-input-md-s>[slot=start]:last-of-type{-webkit-margin-end:16px;margin-inline-end:16px;-webkit-margin-start:0;margin-inline-start:0}.sc-ion-input-md-s>[slot=end]:first-of-type{-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:0;margin-inline-end:0}.sc-ion-input-md-h[disabled].sc-ion-input-md-s>ion-input-password-toggle,.sc-ion-input-md-h[disabled] .sc-ion-input-md-s>ion-input-password-toggle,.sc-ion-input-md-h[readonly].sc-ion-input-md-s>ion-input-password-toggle,.sc-ion-input-md-h[readonly] .sc-ion-input-md-s>ion-input-password-toggle{visibility:hidden}.input-fill-solid.sc-ion-input-md-h{--background:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2));--border-color:var(--ion-color-step-500, var(--ion-background-color-step-500, gray));--border-radius:4px;--padding-start:16px;--padding-end:16px;min-height:56px}.input-fill-solid.sc-ion-input-md-h .input-wrapper.sc-ion-input-md{border-bottom:var(--border-width) var(--border-style) var(--border-color)}.has-focus.input-fill-solid.ion-valid.sc-ion-input-md-h,.input-fill-solid.ion-touched.ion-invalid.sc-ion-input-md-h{--border-color:var(--highlight-color)}.input-fill-solid.sc-ion-input-md-h .input-bottom.sc-ion-input-md{border-top:none}@media (any-hover: hover){.input-fill-solid.sc-ion-input-md-h:hover{--background:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6));--border-color:var(--ion-color-step-750, var(--ion-background-color-step-750, #404040))}}.input-fill-solid.has-focus.sc-ion-input-md-h{--background:var(--ion-color-step-150, var(--ion-background-color-step-150, #d9d9d9));--border-color:var(--ion-color-step-750, var(--ion-background-color-step-750, #404040))}.input-fill-solid.sc-ion-input-md-h .input-wrapper.sc-ion-input-md{border-start-start-radius:var(--border-radius);border-start-end-radius:var(--border-radius);border-end-end-radius:0px;border-end-start-radius:0px}.label-floating.input-fill-solid.input-label-placement-floating.sc-ion-input-md-h .label-text-wrapper.sc-ion-input-md{max-width:calc(100% / 0.75)}.input-fill-outline.sc-ion-input-md-h{--border-color:var(--ion-color-step-300, var(--ion-background-color-step-300, #b3b3b3));--border-radius:4px;--padding-start:16px;--padding-end:16px;min-height:56px}.input-fill-outline.input-shape-round.sc-ion-input-md-h{--border-radius:28px;--padding-start:32px;--padding-end:32px}.has-focus.input-fill-outline.ion-valid.sc-ion-input-md-h,.input-fill-outline.ion-touched.ion-invalid.sc-ion-input-md-h{--border-color:var(--highlight-color)}@media (any-hover: hover){.input-fill-outline.sc-ion-input-md-h:hover{--border-color:var(--ion-color-step-750, var(--ion-background-color-step-750, #404040))}}.input-fill-outline.has-focus.sc-ion-input-md-h{--border-width:var(--highlight-height);--border-color:var(--highlight-color)}.input-fill-outline.sc-ion-input-md-h .input-bottom.sc-ion-input-md{border-top:none}.input-fill-outline.sc-ion-input-md-h .input-wrapper.sc-ion-input-md{border-bottom:none}.input-fill-outline.input-label-placement-stacked.sc-ion-input-md-h .label-text-wrapper.sc-ion-input-md,.input-fill-outline.input-label-placement-floating.sc-ion-input-md-h .label-text-wrapper.sc-ion-input-md{-webkit-transform-origin:left top;transform-origin:left top;position:absolute;max-width:calc(100% - var(--padding-start) - var(--padding-end))}[dir=rtl].sc-ion-input-md-h -no-combinator.input-fill-outline.input-label-placement-stacked.sc-ion-input-md-h .label-text-wrapper.sc-ion-input-md,[dir=rtl] .sc-ion-input-md-h -no-combinator.input-fill-outline.input-label-placement-stacked.sc-ion-input-md-h .label-text-wrapper.sc-ion-input-md,[dir=rtl].input-fill-outline.input-label-placement-stacked.sc-ion-input-md-h .label-text-wrapper.sc-ion-input-md,[dir=rtl] .input-fill-outline.input-label-placement-stacked.sc-ion-input-md-h .label-text-wrapper.sc-ion-input-md,[dir=rtl].sc-ion-input-md-h -no-combinator.input-fill-outline.input-label-placement-floating.sc-ion-input-md-h .label-text-wrapper.sc-ion-input-md,[dir=rtl] .sc-ion-input-md-h -no-combinator.input-fill-outline.input-label-placement-floating.sc-ion-input-md-h .label-text-wrapper.sc-ion-input-md,[dir=rtl].input-fill-outline.input-label-placement-floating.sc-ion-input-md-h .label-text-wrapper.sc-ion-input-md,[dir=rtl] .input-fill-outline.input-label-placement-floating.sc-ion-input-md-h .label-text-wrapper.sc-ion-input-md{-webkit-transform-origin:right top;transform-origin:right top}@supports selector(:dir(rtl)){.input-fill-outline.input-label-placement-stacked.sc-ion-input-md-h:dir(rtl) .label-text-wrapper.sc-ion-input-md,.input-fill-outline.input-label-placement-floating.sc-ion-input-md-h:dir(rtl) .label-text-wrapper.sc-ion-input-md{-webkit-transform-origin:right top;transform-origin:right top}}.input-fill-outline.sc-ion-input-md-h .label-text-wrapper.sc-ion-input-md{position:relative}.label-floating.input-fill-outline.sc-ion-input-md-h .label-text-wrapper.sc-ion-input-md{-webkit-transform:translateY(-32%) scale(0.75);transform:translateY(-32%) scale(0.75);margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;max-width:calc((100% - var(--padding-start) - var(--padding-end) - 8px) / 0.75)}.input-fill-outline.input-label-placement-stacked.sc-ion-input-md-h input.sc-ion-input-md,.input-fill-outline.input-label-placement-floating.sc-ion-input-md-h input.sc-ion-input-md{margin-left:0;margin-right:0;margin-top:6px;margin-bottom:6px}.input-fill-outline.sc-ion-input-md-h .input-outline-container.sc-ion-input-md{left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;width:100%;height:100%}.input-fill-outline.sc-ion-input-md-h .input-outline-start.sc-ion-input-md,.input-fill-outline.sc-ion-input-md-h .input-outline-end.sc-ion-input-md{pointer-events:none}.input-fill-outline.sc-ion-input-md-h .input-outline-start.sc-ion-input-md,.input-fill-outline.sc-ion-input-md-h .input-outline-notch.sc-ion-input-md,.input-fill-outline.sc-ion-input-md-h .input-outline-end.sc-ion-input-md{border-top:var(--border-width) var(--border-style) var(--border-color);border-bottom:var(--border-width) var(--border-style) var(--border-color)}.input-fill-outline.sc-ion-input-md-h .input-outline-notch.sc-ion-input-md{max-width:calc(100% - var(--padding-start) - var(--padding-end))}.input-fill-outline.sc-ion-input-md-h .notch-spacer.sc-ion-input-md{-webkit-padding-end:8px;padding-inline-end:8px;font-size:calc(1em * 0.75);opacity:0;pointer-events:none;-webkit-box-sizing:content-box;box-sizing:content-box}.input-fill-outline.sc-ion-input-md-h .input-outline-start.sc-ion-input-md{border-start-start-radius:var(--border-radius);border-start-end-radius:0px;border-end-end-radius:0px;border-end-start-radius:var(--border-radius);-webkit-border-start:var(--border-width) var(--border-style) var(--border-color);border-inline-start:var(--border-width) var(--border-style) var(--border-color);width:calc(var(--padding-start) - 4px)}.input-fill-outline.sc-ion-input-md-h .input-outline-end.sc-ion-input-md{-webkit-border-end:var(--border-width) var(--border-style) var(--border-color);border-inline-end:var(--border-width) var(--border-style) var(--border-color);border-start-start-radius:0px;border-start-end-radius:var(--border-radius);border-end-end-radius:var(--border-radius);border-end-start-radius:0px;-ms-flex-positive:1;flex-grow:1}.label-floating.input-fill-outline.sc-ion-input-md-h .input-outline-notch.sc-ion-input-md{border-top:none}.sc-ion-input-md-h{--border-width:1px;--border-color:var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-150, var(--ion-background-color-step-150, rgba(0, 0, 0, 0.13)))));--highlight-height:2px;font-size:inherit}.input-clear-icon.sc-ion-input-md ion-icon.sc-ion-input-md{width:22px;height:22px}.input-disabled.sc-ion-input-md-h{opacity:0.38}.has-focus.ion-valid.sc-ion-input-md-h,.ion-touched.ion-invalid.sc-ion-input-md-h{--border-color:var(--highlight-color)}.input-bottom.sc-ion-input-md .counter.sc-ion-input-md{letter-spacing:0.0333333333em}.input-label-placement-floating.has-focus.sc-ion-input-md-h .label-text-wrapper.sc-ion-input-md,.input-label-placement-stacked.has-focus.sc-ion-input-md-h .label-text-wrapper.sc-ion-input-md{color:var(--highlight-color)}.has-focus.input-label-placement-floating.ion-valid.sc-ion-input-md-h .label-text-wrapper.sc-ion-input-md,.input-label-placement-floating.ion-touched.ion-invalid.sc-ion-input-md-h .label-text-wrapper.sc-ion-input-md,.has-focus.input-label-placement-stacked.ion-valid.sc-ion-input-md-h .label-text-wrapper.sc-ion-input-md,.input-label-placement-stacked.ion-touched.ion-invalid.sc-ion-input-md-h .label-text-wrapper.sc-ion-input-md{color:var(--highlight-color)}.input-highlight.sc-ion-input-md{bottom:-1px;position:absolute;width:100%;height:var(--highlight-height);-webkit-transform:scale(0);transform:scale(0);-webkit-transition:-webkit-transform 200ms;transition:-webkit-transform 200ms;transition:transform 200ms;transition:transform 200ms, -webkit-transform 200ms;background:var(--highlight-color)}.input-highlight.sc-ion-input-md{inset-inline-start:0}.has-focus.sc-ion-input-md-h .input-highlight.sc-ion-input-md{-webkit-transform:scale(1);transform:scale(1)}.in-item.sc-ion-input-md-h .input-highlight.sc-ion-input-md{bottom:0}.in-item.sc-ion-input-md-h .input-highlight.sc-ion-input-md{inset-inline-start:0}.input-shape-round.sc-ion-input-md-h{--border-radius:16px}.sc-ion-input-md-s>ion-button[slot=start].button-has-icon-only,.sc-ion-input-md-s>ion-button[slot=end].button-has-icon-only{--border-radius:50%;--padding-start:8px;--padding-end:8px;--padding-top:8px;--padding-bottom:8px;aspect-ratio:1;min-height:40px}"};export{x as ion_input}
@@ -1,4 +0,0 @@
1
- /*!
2
- * (C) Ionic http://ionicframework.com - MIT License
3
- */
4
- import{r as i,h as t,d as o,g as n}from"./p-4DxY6_gG.js";import{b as e}from"./p-C-Cct-6D.js";import{c as r}from"./p-DiVJyqlX.js";import{b as a}from"./p-Br3vSlYh.js";const l=class{constructor(t){i(this,t),this.pickerColumn=null,this.ariaLabel=null,this.disabled=!1,this.color="primary"}onAriaLabelChange(i){this.ariaLabel=i}componentWillLoad(){const i=e(this.el,["aria-label"]);this.ariaLabel=i["aria-label"]||null}connectedCallback(){this.pickerColumn=this.el.closest("ion-picker-column")}disconnectedCallback(){this.pickerColumn=null}componentDidLoad(){const{pickerColumn:i}=this;null!==i&&i.scrollActiveItemIntoView()}onClick(){const{pickerColumn:i}=this;null!==i&&i.setValue(this.value)}render(){const{color:i,disabled:n,ariaLabel:e}=this,l=a(this);return t(o,{key:"f816729941aabcb31ddfdce3ffe2e2139030d715",class:r(i,{[l]:!0,"option-disabled":n})},t("div",{key:"d942de84fd14d7dc06b1e5cf4f7920d1dc3c6371",class:"picker-column-option-button",role:"button","aria-label":e,onClick:()=>this.onClick()},t("slot",{key:"b0df5717b42209e649097209a01476e1a66f5c5c"})))}get el(){return n(this)}static get watchers(){return{"aria-label":["onAriaLabelChange"]}}};l.style={ios:".picker-column-option-button{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;width:100%;height:34px;border:0px;outline:none;background:transparent;color:inherit;font-family:var(--ion-font-family, inherit);font-size:inherit;line-height:34px;text-align:inherit;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;overflow:hidden}:host(.option-disabled){opacity:0.4}:host(.option-disabled) .picker-column-option-button{cursor:default}",md:".picker-column-option-button{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;width:100%;height:34px;border:0px;outline:none;background:transparent;color:inherit;font-family:var(--ion-font-family, inherit);font-size:inherit;line-height:34px;text-align:inherit;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;overflow:hidden}:host(.option-disabled){opacity:0.4}:host(.option-disabled) .picker-column-option-button{cursor:default}:host(.option-active){color:var(--ion-color-base)}"};export{l as ion_picker_column_option}