@ionic/core 8.7.3-dev.11755285796.12743331 → 8.7.3-dev.11755600455.1e79c35a

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 (74) hide show
  1. package/components/checkbox.js +1 -1
  2. package/components/ion-datetime.js +4 -3
  3. package/components/ion-refresher.js +1 -18
  4. package/components/overlays.js +3 -97
  5. package/components/picker-column-option.js +3 -3
  6. package/components/picker-column.js +3 -39
  7. package/dist/cjs/index.cjs.js +1 -1
  8. package/dist/cjs/ion-action-sheet.cjs.entry.js +1 -1
  9. package/dist/cjs/ion-alert.cjs.entry.js +1 -1
  10. package/dist/cjs/ion-checkbox.cjs.entry.js +1 -1
  11. package/dist/cjs/ion-datetime_3.cjs.entry.js +4 -4
  12. package/dist/cjs/ion-loading.cjs.entry.js +1 -1
  13. package/dist/cjs/ion-menu_3.cjs.entry.js +1 -1
  14. package/dist/cjs/ion-modal.cjs.entry.js +1 -1
  15. package/dist/cjs/ion-picker-column-option.cjs.entry.js +3 -3
  16. package/dist/cjs/ion-picker-column.cjs.entry.js +3 -39
  17. package/dist/cjs/ion-popover.cjs.entry.js +1 -1
  18. package/dist/cjs/ion-refresher_2.cjs.entry.js +1 -18
  19. package/dist/cjs/ion-select-modal.cjs.entry.js +1 -1
  20. package/dist/cjs/ion-select_3.cjs.entry.js +1 -1
  21. package/dist/cjs/ion-toast.cjs.entry.js +1 -1
  22. package/dist/cjs/{overlays-CglR7j-u.js → overlays-DUsEBICv.js} +2 -96
  23. package/dist/collection/components/checkbox/checkbox.js +1 -1
  24. package/dist/collection/components/datetime/datetime.js +4 -3
  25. package/dist/collection/components/picker-column/picker-column.js +3 -39
  26. package/dist/collection/components/picker-column-option/picker-column-option.ios.css +2 -2
  27. package/dist/collection/components/picker-column-option/picker-column-option.js +1 -1
  28. package/dist/collection/components/picker-column-option/picker-column-option.md.css +2 -2
  29. package/dist/collection/components/refresher/refresher.js +1 -18
  30. package/dist/collection/utils/overlays.js +2 -97
  31. package/dist/docs.json +1 -1
  32. package/dist/esm/index.js +1 -1
  33. package/dist/esm/ion-action-sheet.entry.js +1 -1
  34. package/dist/esm/ion-alert.entry.js +1 -1
  35. package/dist/esm/ion-checkbox.entry.js +1 -1
  36. package/dist/esm/ion-datetime_3.entry.js +4 -4
  37. package/dist/esm/ion-loading.entry.js +1 -1
  38. package/dist/esm/ion-menu_3.entry.js +1 -1
  39. package/dist/esm/ion-modal.entry.js +1 -1
  40. package/dist/esm/ion-picker-column-option.entry.js +3 -3
  41. package/dist/esm/ion-picker-column.entry.js +3 -39
  42. package/dist/esm/ion-popover.entry.js +1 -1
  43. package/dist/esm/ion-refresher_2.entry.js +1 -18
  44. package/dist/esm/ion-select-modal.entry.js +1 -1
  45. package/dist/esm/ion-select_3.entry.js +1 -1
  46. package/dist/esm/ion-toast.entry.js +1 -1
  47. package/dist/esm/{overlays-ZX_4-t_r.js → overlays-B_dsLNe8.js} +3 -97
  48. package/dist/ionic/index.esm.js +1 -1
  49. package/dist/ionic/ionic.esm.js +1 -1
  50. package/dist/ionic/{p-ac434970.entry.js → p-07d8f62a.entry.js} +1 -1
  51. package/dist/ionic/{p-92e8f208.entry.js → p-09ed68cf.entry.js} +1 -1
  52. package/dist/ionic/p-1a91f317.entry.js +4 -0
  53. package/dist/ionic/{p-c575e7ce.entry.js → p-57bb1214.entry.js} +1 -1
  54. package/dist/ionic/{p-ab33ef20.entry.js → p-698fb72c.entry.js} +1 -1
  55. package/dist/ionic/{p-8d96a0cd.entry.js → p-7ed24ba0.entry.js} +1 -1
  56. package/dist/ionic/{p-91d6ccb0.entry.js → p-84236acb.entry.js} +1 -1
  57. package/dist/ionic/p-8888efe4.entry.js +4 -0
  58. package/dist/ionic/{p-7bac2c5f.entry.js → p-8b54aa01.entry.js} +1 -1
  59. package/dist/ionic/p-8bfe00f3.entry.js +4 -0
  60. package/dist/ionic/{p-982fe1c4.entry.js → p-98d0823e.entry.js} +1 -1
  61. package/dist/ionic/{p-f2884bc2.entry.js → p-9c6fddc6.entry.js} +1 -1
  62. package/dist/ionic/p-C3MD7jSK.js +4 -0
  63. package/dist/ionic/p-ac2be9d6.entry.js +4 -0
  64. package/dist/ionic/p-b292804d.entry.js +4 -0
  65. package/dist/types/components/picker-column/picker-column.d.ts +0 -7
  66. package/hydrate/index.js +13 -160
  67. package/hydrate/index.mjs +13 -160
  68. package/package.json +1 -1
  69. package/dist/ionic/p-1d5b934a.entry.js +0 -4
  70. package/dist/ionic/p-29032e49.entry.js +0 -4
  71. package/dist/ionic/p-8cdb4ff5.entry.js +0 -4
  72. package/dist/ionic/p-CSwZyt05.js +0 -4
  73. package/dist/ionic/p-c836e1a2.entry.js +0 -4
  74. package/dist/ionic/p-f456d176.entry.js +0 -4
@@ -498,9 +498,11 @@ const setRootAriaHidden = (hidden = false) => {
498
498
  }
499
499
  if (hidden) {
500
500
  viewContainer.setAttribute('aria-hidden', 'true');
501
+ viewContainer.setAttribute('inert', '');
501
502
  }
502
503
  else {
503
504
  viewContainer.removeAttribute('aria-hidden');
505
+ viewContainer.removeAttribute('inert');
504
506
  }
505
507
  };
506
508
  const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts) => {
@@ -519,8 +521,6 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
519
521
  setRootAriaHidden(true);
520
522
  document.body.classList.add(gestureController.BACKDROP_NO_SCROLL);
521
523
  }
522
- hideUnderlyingOverlaysFromScreenReaders(overlay.el);
523
- hideAnimatingOverlayFromScreenReaders(overlay.el);
524
524
  overlay.presented = true;
525
525
  overlay.willPresent.emit();
526
526
  (_a = overlay.willPresentShorthand) === null || _a === void 0 ? void 0 : _a.emit();
@@ -646,12 +646,6 @@ const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnim
646
646
  }
647
647
  overlay.presented = false;
648
648
  try {
649
- /**
650
- * There is no need to show the overlay to screen readers during
651
- * the dismiss animation. This is because the overlay will be removed
652
- * from the DOM after the animation is complete.
653
- */
654
- hideAnimatingOverlayFromScreenReaders(overlay.el);
655
649
  // Overlay contents should not be clickable during dismiss
656
650
  overlay.el.style.setProperty('pointer-events', 'none');
657
651
  overlay.willDismiss.emit({ data, role });
@@ -690,7 +684,6 @@ const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnim
690
684
  index.printIonError(`[${overlay.el.tagName.toLowerCase()}] - `, err);
691
685
  }
692
686
  overlay.el.remove();
693
- revealOverlaysToScreenReaders();
694
687
  return true;
695
688
  };
696
689
  const getAppRoot = (doc) => {
@@ -886,93 +879,6 @@ const createTriggerController = () => {
886
879
  removeClickListener,
887
880
  };
888
881
  };
889
- /**
890
- * The overlay that is being animated also needs to hide from screen
891
- * readers during its animation. This ensures that assistive technologies
892
- * like TalkBack do not announce or interact with the content until the
893
- * animation is complete, avoiding confusion for users.
894
- *
895
- * When the overlay is presented on an Android device, TalkBack's focus rings
896
- * may appear in the wrong position due to the transition (specifically
897
- * `transform` styles). This occurs because the focus rings are initially
898
- * displayed at the starting position of the elements before the transition
899
- * begins. This workaround ensures the focus rings do not appear in the
900
- * incorrect location.
901
- *
902
- * If this solution is applied to iOS devices, then it leads to a bug where
903
- * the overlays cannot be accessed by screen readers. This is due to
904
- * VoiceOver not being able to update the accessibility tree when the
905
- * `aria-hidden` is removed.
906
- *
907
- * @param overlay - The overlay that is being animated.
908
- */
909
- const hideAnimatingOverlayFromScreenReaders = (overlay) => {
910
- if (index$1.doc === undefined)
911
- return;
912
- if (ionicGlobal.isPlatform('android')) {
913
- /**
914
- * Once the animation is complete, this attribute will be removed.
915
- * This is done at the end of the `present` method.
916
- */
917
- overlay.setAttribute('aria-hidden', 'true');
918
- }
919
- };
920
- /**
921
- * Ensure that underlying overlays have aria-hidden if necessary so that screen readers
922
- * cannot move focus to these elements. Note that we cannot rely on focus/focusin/focusout
923
- * events here because those events do not fire when the screen readers moves to a non-focusable
924
- * element such as text.
925
- * Without this logic screen readers would be able to move focus outside of the top focus-trapped overlay.
926
- *
927
- * @param newTopMostOverlay - The overlay that is being presented. Since the overlay has not been
928
- * fully presented yet at the time this function is called it will not be included in the getPresentedOverlays result.
929
- */
930
- const hideUnderlyingOverlaysFromScreenReaders = (newTopMostOverlay) => {
931
- var _a;
932
- if (index$1.doc === undefined)
933
- return;
934
- const overlays = getPresentedOverlays(index$1.doc);
935
- for (let i = overlays.length - 1; i >= 0; i--) {
936
- const presentedOverlay = overlays[i];
937
- const nextPresentedOverlay = (_a = overlays[i + 1]) !== null && _a !== void 0 ? _a : newTopMostOverlay;
938
- /**
939
- * If next overlay has aria-hidden then all remaining overlays will have it too.
940
- * Or, if the next overlay is a Toast that does not have aria-hidden then current overlay
941
- * should not have aria-hidden either so focus can remain in the current overlay.
942
- */
943
- if (nextPresentedOverlay.hasAttribute('aria-hidden') || nextPresentedOverlay.tagName !== 'ION-TOAST') {
944
- presentedOverlay.setAttribute('aria-hidden', 'true');
945
- }
946
- }
947
- };
948
- /**
949
- * When dismissing an overlay we need to reveal the new top-most overlay to screen readers.
950
- * If the top-most overlay is a Toast we potentially need to reveal more overlays since
951
- * focus is never automatically moved to the Toast.
952
- */
953
- const revealOverlaysToScreenReaders = () => {
954
- if (index$1.doc === undefined)
955
- return;
956
- const overlays = getPresentedOverlays(index$1.doc);
957
- for (let i = overlays.length - 1; i >= 0; i--) {
958
- const currentOverlay = overlays[i];
959
- /**
960
- * If the current we are looking at is a Toast then we can remove aria-hidden.
961
- * However, we potentially need to keep looking at the overlay stack because there
962
- * could be more Toasts underneath. Additionally, we need to unhide the closest non-Toast
963
- * overlay too so focus can move there since focus is never automatically moved to the Toast.
964
- */
965
- currentOverlay.removeAttribute('aria-hidden');
966
- /**
967
- * If we found a non-Toast element then we can just remove aria-hidden and stop searching entirely
968
- * since this overlay should always receive focus. As a result, all underlying overlays should still
969
- * be hidden from screen readers.
970
- */
971
- if (currentOverlay.tagName !== 'ION-TOAST') {
972
- break;
973
- }
974
- }
975
- };
976
882
  const FOCUS_TRAP_DISABLE_CLASS = 'ion-disable-focus-trap';
977
883
 
978
884
  exports.BACKDROP = BACKDROP;
@@ -165,7 +165,7 @@ export class Checkbox {
165
165
  }), onClick: this.onClick }, h("label", { key: 'f025cec5ff08e8be4487b9cc0324616ca5dfae2a', class: "checkbox-wrapper", htmlFor: inputId }, h("input", Object.assign({ key: 'dc53f7e4e240dc2e18556e6350df2b5c3169f553', type: "checkbox", checked: checked ? true : undefined, disabled: disabled, id: inputId, onChange: this.toggleChecked, onFocus: () => this.onFocus(), onBlur: () => this.onBlur(), ref: (focusEl) => (this.focusEl = focusEl), required: required }, inheritedAttributes)), h("div", { key: 'a625e9b50c3b617de8bbbfd624d772454fecaf2d', class: {
166
166
  'label-text-wrapper': true,
167
167
  'label-text-wrapper-hidden': !hasLabelContent,
168
- }, part: "label", id: this.inputLabelId, onClick: this.onDivLabelClick }, h("slot", { key: '87d1a90691327945f4343406706e4ab27f453844' }), this.renderHintText()), h("div", { key: 'b57fed8cdecee4df1ef0d57f157267ee77fac653', class: "native-wrapper" }, h("svg", { key: 'd472a06ec6c8b74dfb651415d2236db8080f6805', class: "checkbox-icon", viewBox: "0 0 24 24", part: "container" }, path)))));
168
+ }, part: "label", id: this.inputLabelId, onClick: this.onDivLabelClick }, h("slot", { key: '87d1a90691327945f4343406706e4ab27f453844' }), this.renderHintText()), h("div", { key: 'b57fed8cdecee4df1ef0d57f157267ee77fac653', class: "native-wrapper" }, h("svg", { key: '13a8aac044d46dc99e3b60a1a643785511f216ac', class: "checkbox-icon", viewBox: "0 0 24 24", part: "container", "aria-hidden": "true" }, path)))));
169
169
  }
170
170
  getSVGPath(mode, indeterminate) {
171
171
  let path = indeterminate ? (h("path", { d: "M6 12L18 12", part: "mark" })) : (h("path", { d: "M5.9,12.5l3.8,3.8l8.8-8.8", part: "mark" }));
@@ -5,6 +5,7 @@ import { Host, h, writeTask } from "@stencil/core";
5
5
  import { startFocusVisible } from "../../utils/focus-visible";
6
6
  import { getElementRoot, raf, renderHiddenInput } from "../../utils/helpers";
7
7
  import { printIonError, printIonWarning } from "../../utils/logging/index";
8
+ import { FOCUS_TRAP_DISABLE_CLASS } from "../../utils/overlays";
8
9
  import { isRTL } from "../../utils/rtl/index";
9
10
  import { createColorClasses } from "../../utils/theme";
10
11
  import { caretDownSharp, caretUpSharp, chevronBack, chevronDown, chevronForward } from "ionicons/icons";
@@ -1099,7 +1100,7 @@ export class Datetime {
1099
1100
  const renderArray = forcePresentation === 'time-date'
1100
1101
  ? [this.renderTimePickerColumns(forcePresentation), this.renderDatePickerColumns(forcePresentation)]
1101
1102
  : [this.renderDatePickerColumns(forcePresentation), this.renderTimePickerColumns(forcePresentation)];
1102
- return h("ion-picker", null, renderArray);
1103
+ return h("ion-picker", { class: FOCUS_TRAP_DISABLE_CLASS }, renderArray);
1103
1104
  }
1104
1105
  renderDatePickerColumns(forcePresentation) {
1105
1106
  return forcePresentation === 'date-time' || forcePresentation === 'time-date'
@@ -1656,7 +1657,7 @@ export class Datetime {
1656
1657
  const hasDatePresentation = presentation === 'date' || presentation === 'date-time' || presentation === 'time-date';
1657
1658
  const hasWheelVariant = hasDatePresentation && preferWheel;
1658
1659
  renderHiddenInput(true, el, name, formatValue(value), disabled);
1659
- return (h(Host, { key: 'f35cf200ff05d33074576e3d2754d3b2a0735b96', "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: Object.assign({}, createColorClasses(color, {
1660
+ return (h(Host, { key: '57492534800ea059a7c2bbd9f0059cc0b75ae8d2', "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: Object.assign({}, createColorClasses(color, {
1660
1661
  [mode]: true,
1661
1662
  ['datetime-readonly']: readonly,
1662
1663
  ['datetime-disabled']: disabled,
@@ -1666,7 +1667,7 @@ export class Datetime {
1666
1667
  [`datetime-size-${size}`]: true,
1667
1668
  [`datetime-prefer-wheel`]: hasWheelVariant,
1668
1669
  [`datetime-grid`]: isGridStyle,
1669
- })) }, h("div", { key: '859e9354a12bfa58ac3f964c2e66839f17071c00', class: "intersection-tracker", ref: (el) => (this.intersectionTrackerRef = el) }), this.renderDatetime(mode)));
1670
+ })) }, h("div", { key: '97dac5e5195635ac0bc5fb472b9d09e5c3c6bbc3', class: "intersection-tracker", ref: (el) => (this.intersectionTrackerRef = el) }), this.renderDatetime(mode)));
1670
1671
  }
1671
1672
  static get is() { return "ion-datetime"; }
1672
1673
  static get encapsulation() { return "shadow"; }
@@ -411,23 +411,6 @@ export class PickerColumn {
411
411
  var _a;
412
412
  return el ? (_a = el.getAttribute('aria-label')) !== null && _a !== void 0 ? _a : el.innerText : '';
413
413
  };
414
- /**
415
- * Render an element that overlays the column. This element is for assistive
416
- * tech to allow users to navigate the column up/down. This element should receive
417
- * focus as it listens for synthesized keyboard events as required by the
418
- * slider role: https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/slider_role
419
- */
420
- this.renderAssistiveFocusable = () => {
421
- const { activeItem } = this;
422
- const valueText = this.getOptionValueText(activeItem);
423
- /**
424
- * When using the picker, the valuetext provides important context that valuenow
425
- * does not. Additionally, using non-zero valuemin/valuemax values can cause
426
- * WebKit to incorrectly announce numeric valuetext values (such as a year
427
- * like "2024") as percentages: https://bugs.webkit.org/show_bug.cgi?id=273126
428
- */
429
- return (h("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) }));
430
- };
431
414
  }
432
415
  ariaLabelChanged(newValue) {
433
416
  this.ariaLabel = newValue;
@@ -568,33 +551,14 @@ export class PickerColumn {
568
551
  render() {
569
552
  const { color, disabled, isActive, numericInput } = this;
570
553
  const mode = getIonMode(this);
571
- return (h(Host, { key: 'ea0280355b2f87895bf7dddd289ccf473aa759f3', class: createColorClasses(color, {
554
+ return (h(Host, { key: 'db903fd415f8a2d91994dececca481c1af8ba6a9', class: createColorClasses(color, {
572
555
  [mode]: true,
573
556
  ['picker-column-active']: isActive,
574
557
  ['picker-column-numeric-input']: numericInput,
575
558
  ['picker-column-disabled']: disabled,
576
- }) }, this.renderAssistiveFocusable(), h("slot", { key: '482992131cdeb85b1f61430d7fe1322a16345769', name: "prefix" }), h("div", { key: '43f7f80d621d411ef366b3ca1396299e8c9a0c97', "aria-hidden": "true", class: "picker-opts", ref: (el) => {
559
+ }) }, h("slot", { key: '02ce9e1dd7df91afcd50b06416552bcffb5dec98', name: "prefix" }), h("div", { key: '6dfd7d2429bec19244a6b1afb4448121963a031b', class: "picker-opts", ref: (el) => {
577
560
  this.scrollEl = el;
578
- },
579
- /**
580
- * When an element has an overlay scroll style and
581
- * a fixed height, Firefox will focus the scrollable
582
- * container if the content exceeds the container's
583
- * dimensions.
584
- *
585
- * This causes keyboard navigation to focus to this
586
- * element instead of going to the next element in
587
- * the tab order.
588
- *
589
- * The desired behavior is for the user to be able to
590
- * focus the assistive focusable element and tab to
591
- * the next element in the tab order. Instead of tabbing
592
- * to this element.
593
- *
594
- * To prevent this, we set the tabIndex to -1. This
595
- * will match the behavior of the other browsers.
596
- */
597
- tabIndex: -1 }, h("div", { key: '13a9ee686132af32240710730765de4c0003a9e8', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: 'dbccba4920833cfcebe9b0fc763458ec3053705a', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: '682b43f83a5ea2e46067457f3af118535e111edb', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("slot", { key: 'd27e1e1dc0504b2f4627a29912a05bb91e8e413a' }), h("div", { key: '61c948dbb9cf7469aed3018542bc0954211585ba', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: 'cf46c277fbee65e35ff44ce0d53ce12aa9cbf9db', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: 'bbc0e2d491d3f836ab849493ade2f7fa6ad9244e', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0")), h("slot", { key: 'd25cbbe14b2914fe7b878d43b4e3f4a8c8177d24', name: "suffix" })));
561
+ }, 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) }, h("div", { key: 'e30ce0b9cefbfe4d4441fa33acf595da31855c3f', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: '8be2bd293c12c6ba720d9b31d0d561a96f42e97d', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: '8afdcddddabbf646fbb55cb0ba4448309a2c1dd9', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("slot", { key: '6aa0dacc34d6848575ad5b122b9046982308ca43' }), h("div", { key: '92ec8a357414c1b779b11d1dd18fb87a7ee63982', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: 'b89457cb74b5907c25594ff6720ac54ca537e933', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: '5bbc92e6bc24de08e39873bf08c5b668373ac0f8', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0")), h("slot", { key: 'd7bf2b519214f0f3576a4ca79844ad97827dd97f', name: "suffix" })));
598
562
  }
599
563
  static get is() { return "ion-picker-column"; }
600
564
  static get encapsulation() { return "shadow"; }
@@ -53,7 +53,7 @@
53
53
  * }
54
54
  * }
55
55
  */
56
- button {
56
+ .picker-column-option-button {
57
57
  padding-left: 0;
58
58
  padding-right: 0;
59
59
  padding-top: 0;
@@ -82,6 +82,6 @@ button {
82
82
  opacity: 0.4;
83
83
  }
84
84
 
85
- :host(.option-disabled) button {
85
+ :host(.option-disabled) .picker-column-option-button {
86
86
  cursor: default;
87
87
  }
@@ -94,7 +94,7 @@ export class PickerColumnOption {
94
94
  return (h(Host, { key: 'f816729941aabcb31ddfdce3ffe2e2139030d715', class: createColorClasses(color, {
95
95
  [mode]: true,
96
96
  ['option-disabled']: disabled,
97
- }) }, h("button", { key: '48dff7833bb60fc8331cd353a0885e6affa683d1', tabindex: "-1", "aria-label": ariaLabel, disabled: disabled, onClick: () => this.onClick() }, h("slot", { key: 'f9224d0e7b7aa6c05b29abfdcfe0f30ad6ee3141' }))));
97
+ }) }, h("div", { key: 'd942de84fd14d7dc06b1e5cf4f7920d1dc3c6371', class: 'picker-column-option-button', role: "button", "aria-label": ariaLabel, onClick: () => this.onClick() }, h("slot", { key: 'b0df5717b42209e649097209a01476e1a66f5c5c' }))));
98
98
  }
99
99
  static get is() { return "ion-picker-column-option"; }
100
100
  static get encapsulation() { return "shadow"; }
@@ -53,7 +53,7 @@
53
53
  * }
54
54
  * }
55
55
  */
56
- button {
56
+ .picker-column-option-button {
57
57
  padding-left: 0;
58
58
  padding-right: 0;
59
59
  padding-top: 0;
@@ -82,7 +82,7 @@ button {
82
82
  opacity: 0.4;
83
83
  }
84
84
 
85
- :host(.option-disabled) button {
85
+ :host(.option-disabled) .picker-column-option-button {
86
86
  cursor: default;
87
87
  }
88
88
 
@@ -175,14 +175,6 @@ export class Refresher {
175
175
  this.beginRefresh();
176
176
  this.didRefresh = true;
177
177
  hapticImpact({ style: ImpactStyle.Light });
178
- /**
179
- * Clear focus from any active element to prevent scroll jumps
180
- * when the refresh completes
181
- */
182
- const activeElement = document.activeElement;
183
- if ((activeElement === null || activeElement === void 0 ? void 0 : activeElement.blur) !== undefined) {
184
- activeElement.blur();
185
- }
186
178
  /**
187
179
  * Translate the content element otherwise when pointer is removed
188
180
  * from screen the scroll content will bounce back over the refresher
@@ -598,15 +590,6 @@ export class Refresher {
598
590
  this.state = 8 /* RefresherState.Refreshing */;
599
591
  // place the content in a hangout position while it thinks
600
592
  this.setCss(this.pullMin, this.snapbackDuration, true, '');
601
- /**
602
- * Clear focus from any active element to prevent the browser
603
- * from restoring focus and causing scroll jumps after refresh.
604
- * This ensures the view stays at the top after refresh completes.
605
- */
606
- const activeElement = document.activeElement;
607
- if ((activeElement === null || activeElement === void 0 ? void 0 : activeElement.blur) !== undefined) {
608
- activeElement.blur();
609
- }
610
593
  // emit "refresh" because it was pulled down far enough
611
594
  // and they let go to begin refreshing
612
595
  this.ionRefresh.emit({
@@ -689,7 +672,7 @@ export class Refresher {
689
672
  }
690
673
  render() {
691
674
  const mode = getIonMode(this);
692
- return (h(Host, { key: '2d1bd880877b698604542ab2d602d38b9504d975', slot: "fixed", class: {
675
+ return (h(Host, { key: '8c7a5cc32da02a9cbeaa954258148683f60a6d1b', slot: "fixed", class: {
693
676
  [mode]: true,
694
677
  // Used internally for styling
695
678
  [`refresher-${mode}`]: true,
@@ -11,7 +11,6 @@ import { CoreDelegate } from "./framework-delegate";
11
11
  import { BACKDROP_NO_SCROLL } from "./gesture/gesture-controller";
12
12
  import { OVERLAY_BACK_BUTTON_PRIORITY } from "./hardware-back-button";
13
13
  import { addEventListener, componentOnReady, focusVisibleElement, getElementRoot, removeEventListener, } from "./helpers";
14
- import { isPlatform } from "./platform";
15
14
  let lastOverlayIndex = 0;
16
15
  let lastId = 0;
17
16
  export const activeAnimations = new WeakMap();
@@ -418,9 +417,11 @@ export const setRootAriaHidden = (hidden = false) => {
418
417
  }
419
418
  if (hidden) {
420
419
  viewContainer.setAttribute('aria-hidden', 'true');
420
+ viewContainer.setAttribute('inert', '');
421
421
  }
422
422
  else {
423
423
  viewContainer.removeAttribute('aria-hidden');
424
+ viewContainer.removeAttribute('inert');
424
425
  }
425
426
  };
426
427
  export const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts) => {
@@ -439,8 +440,6 @@ export const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation
439
440
  setRootAriaHidden(true);
440
441
  document.body.classList.add(BACKDROP_NO_SCROLL);
441
442
  }
442
- hideUnderlyingOverlaysFromScreenReaders(overlay.el);
443
- hideAnimatingOverlayFromScreenReaders(overlay.el);
444
443
  overlay.presented = true;
445
444
  overlay.willPresent.emit();
446
445
  (_a = overlay.willPresentShorthand) === null || _a === void 0 ? void 0 : _a.emit();
@@ -566,12 +565,6 @@ export const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLe
566
565
  }
567
566
  overlay.presented = false;
568
567
  try {
569
- /**
570
- * There is no need to show the overlay to screen readers during
571
- * the dismiss animation. This is because the overlay will be removed
572
- * from the DOM after the animation is complete.
573
- */
574
- hideAnimatingOverlayFromScreenReaders(overlay.el);
575
568
  // Overlay contents should not be clickable during dismiss
576
569
  overlay.el.style.setProperty('pointer-events', 'none');
577
570
  overlay.willDismiss.emit({ data, role });
@@ -610,7 +603,6 @@ export const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLe
610
603
  printIonError(`[${overlay.el.tagName.toLowerCase()}] - `, err);
611
604
  }
612
605
  overlay.el.remove();
613
- revealOverlaysToScreenReaders();
614
606
  return true;
615
607
  };
616
608
  const getAppRoot = (doc) => {
@@ -806,91 +798,4 @@ export const createTriggerController = () => {
806
798
  removeClickListener,
807
799
  };
808
800
  };
809
- /**
810
- * The overlay that is being animated also needs to hide from screen
811
- * readers during its animation. This ensures that assistive technologies
812
- * like TalkBack do not announce or interact with the content until the
813
- * animation is complete, avoiding confusion for users.
814
- *
815
- * When the overlay is presented on an Android device, TalkBack's focus rings
816
- * may appear in the wrong position due to the transition (specifically
817
- * `transform` styles). This occurs because the focus rings are initially
818
- * displayed at the starting position of the elements before the transition
819
- * begins. This workaround ensures the focus rings do not appear in the
820
- * incorrect location.
821
- *
822
- * If this solution is applied to iOS devices, then it leads to a bug where
823
- * the overlays cannot be accessed by screen readers. This is due to
824
- * VoiceOver not being able to update the accessibility tree when the
825
- * `aria-hidden` is removed.
826
- *
827
- * @param overlay - The overlay that is being animated.
828
- */
829
- const hideAnimatingOverlayFromScreenReaders = (overlay) => {
830
- if (doc === undefined)
831
- return;
832
- if (isPlatform('android')) {
833
- /**
834
- * Once the animation is complete, this attribute will be removed.
835
- * This is done at the end of the `present` method.
836
- */
837
- overlay.setAttribute('aria-hidden', 'true');
838
- }
839
- };
840
- /**
841
- * Ensure that underlying overlays have aria-hidden if necessary so that screen readers
842
- * cannot move focus to these elements. Note that we cannot rely on focus/focusin/focusout
843
- * events here because those events do not fire when the screen readers moves to a non-focusable
844
- * element such as text.
845
- * Without this logic screen readers would be able to move focus outside of the top focus-trapped overlay.
846
- *
847
- * @param newTopMostOverlay - The overlay that is being presented. Since the overlay has not been
848
- * fully presented yet at the time this function is called it will not be included in the getPresentedOverlays result.
849
- */
850
- const hideUnderlyingOverlaysFromScreenReaders = (newTopMostOverlay) => {
851
- var _a;
852
- if (doc === undefined)
853
- return;
854
- const overlays = getPresentedOverlays(doc);
855
- for (let i = overlays.length - 1; i >= 0; i--) {
856
- const presentedOverlay = overlays[i];
857
- const nextPresentedOverlay = (_a = overlays[i + 1]) !== null && _a !== void 0 ? _a : newTopMostOverlay;
858
- /**
859
- * If next overlay has aria-hidden then all remaining overlays will have it too.
860
- * Or, if the next overlay is a Toast that does not have aria-hidden then current overlay
861
- * should not have aria-hidden either so focus can remain in the current overlay.
862
- */
863
- if (nextPresentedOverlay.hasAttribute('aria-hidden') || nextPresentedOverlay.tagName !== 'ION-TOAST') {
864
- presentedOverlay.setAttribute('aria-hidden', 'true');
865
- }
866
- }
867
- };
868
- /**
869
- * When dismissing an overlay we need to reveal the new top-most overlay to screen readers.
870
- * If the top-most overlay is a Toast we potentially need to reveal more overlays since
871
- * focus is never automatically moved to the Toast.
872
- */
873
- const revealOverlaysToScreenReaders = () => {
874
- if (doc === undefined)
875
- return;
876
- const overlays = getPresentedOverlays(doc);
877
- for (let i = overlays.length - 1; i >= 0; i--) {
878
- const currentOverlay = overlays[i];
879
- /**
880
- * If the current we are looking at is a Toast then we can remove aria-hidden.
881
- * However, we potentially need to keep looking at the overlay stack because there
882
- * could be more Toasts underneath. Additionally, we need to unhide the closest non-Toast
883
- * overlay too so focus can move there since focus is never automatically moved to the Toast.
884
- */
885
- currentOverlay.removeAttribute('aria-hidden');
886
- /**
887
- * If we found a non-Toast element then we can just remove aria-hidden and stop searching entirely
888
- * since this overlay should always receive focus. As a result, all underlying overlays should still
889
- * be hidden from screen readers.
890
- */
891
- if (currentOverlay.tagName !== 'ION-TOAST') {
892
- break;
893
- }
894
- }
895
- };
896
801
  export const FOCUS_TRAP_DISABLE_CLASS = 'ion-disable-focus-trap';
package/dist/docs.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "timestamp": "2025-08-15T19:24:59",
2
+ "timestamp": "2025-08-19T10:49:17",
3
3
  "compiler": {
4
4
  "name": "@stencil/core",
5
5
  "version": "4.36.2",
package/dist/esm/index.js CHANGED
@@ -13,7 +13,7 @@ export { L as LogLevel } from './index-4DxY6_gG.js';
13
13
  export { I as IonicSafeString, g as getMode, s as setupConfig } from './config-Dx_6wPIJ.js';
14
14
  export { o as openURL } from './theme-DiVJyqlX.js';
15
15
  export { m as menuController } from './index-CXSTcaAW.js';
16
- export { b as actionSheetController, a as alertController, l as loadingController, m as modalController, p as pickerController, c as popoverController, t as toastController } from './overlays-ZX_4-t_r.js';
16
+ export { b as actionSheetController, a as alertController, l as loadingController, m as modalController, p as pickerController, c as popoverController, t as toastController } from './overlays-B_dsLNe8.js';
17
17
  import './index-ZjP4CjeZ.js';
18
18
  import './gesture-controller-BTEOs1at.js';
19
19
  import './hardware-back-button-Dhbd-23H.js';
@@ -5,7 +5,7 @@ import { r as registerInstance, c as createEvent, a as readTask, h, d as Host, g
5
5
  import { c as createButtonActiveGesture } from './button-active-DBUPuLNw.js';
6
6
  import { r as raf } from './helpers-8KSQQGQy.js';
7
7
  import { c as createLockController } from './lock-controller-B-hirT0v.js';
8
- import { d as createDelegateController, e as createTriggerController, B as BACKDROP, i as isCancel, f as present, g as dismiss, h as eventMethod, s as safeCall, j as prepareOverlay, k as setOverlayId } from './overlays-ZX_4-t_r.js';
8
+ import { d as createDelegateController, e as createTriggerController, B as BACKDROP, i as isCancel, f as present, g as dismiss, h as eventMethod, s as safeCall, j as prepareOverlay, k as setOverlayId } from './overlays-B_dsLNe8.js';
9
9
  import { g as getClassMap } from './theme-DiVJyqlX.js';
10
10
  import { b as getIonMode } from './ionic-global-CTSyufhF.js';
11
11
  import { c as createAnimation } from './animation-BvhAtgca.js';
@@ -6,7 +6,7 @@ import { E as ENABLE_HTML_CONTENT_DEFAULT, a as sanitizeDOMString } from './conf
6
6
  import { c as createButtonActiveGesture } from './button-active-DBUPuLNw.js';
7
7
  import { r as raf } from './helpers-8KSQQGQy.js';
8
8
  import { c as createLockController } from './lock-controller-B-hirT0v.js';
9
- import { d as createDelegateController, e as createTriggerController, B as BACKDROP, i as isCancel, j as prepareOverlay, k as setOverlayId, f as present, g as dismiss, h as eventMethod, s as safeCall } from './overlays-ZX_4-t_r.js';
9
+ import { d as createDelegateController, e as createTriggerController, B as BACKDROP, i as isCancel, j as prepareOverlay, k as setOverlayId, f as present, g as dismiss, h as eventMethod, s as safeCall } from './overlays-B_dsLNe8.js';
10
10
  import { g as getClassMap } from './theme-DiVJyqlX.js';
11
11
  import { b as getIonMode } from './ionic-global-CTSyufhF.js';
12
12
  import { c as createAnimation } from './animation-BvhAtgca.js';
@@ -162,7 +162,7 @@ const Checkbox = class {
162
162
  }), onClick: this.onClick }, h("label", { key: 'f025cec5ff08e8be4487b9cc0324616ca5dfae2a', class: "checkbox-wrapper", htmlFor: inputId }, h("input", Object.assign({ key: 'dc53f7e4e240dc2e18556e6350df2b5c3169f553', type: "checkbox", checked: checked ? true : undefined, disabled: disabled, id: inputId, onChange: this.toggleChecked, onFocus: () => this.onFocus(), onBlur: () => this.onBlur(), ref: (focusEl) => (this.focusEl = focusEl), required: required }, inheritedAttributes)), h("div", { key: 'a625e9b50c3b617de8bbbfd624d772454fecaf2d', class: {
163
163
  'label-text-wrapper': true,
164
164
  'label-text-wrapper-hidden': !hasLabelContent,
165
- }, part: "label", id: this.inputLabelId, onClick: this.onDivLabelClick }, h("slot", { key: '87d1a90691327945f4343406706e4ab27f453844' }), this.renderHintText()), h("div", { key: 'b57fed8cdecee4df1ef0d57f157267ee77fac653', class: "native-wrapper" }, h("svg", { key: 'd472a06ec6c8b74dfb651415d2236db8080f6805', class: "checkbox-icon", viewBox: "0 0 24 24", part: "container" }, path)))));
165
+ }, part: "label", id: this.inputLabelId, onClick: this.onDivLabelClick }, h("slot", { key: '87d1a90691327945f4343406706e4ab27f453844' }), this.renderHintText()), h("div", { key: 'b57fed8cdecee4df1ef0d57f157267ee77fac653', class: "native-wrapper" }, h("svg", { key: '13a8aac044d46dc99e3b60a1a643785511f216ac', class: "checkbox-icon", viewBox: "0 0 24 24", part: "container", "aria-hidden": "true" }, path)))));
166
166
  }
167
167
  getSVGPath(mode, indeterminate) {
168
168
  let path = indeterminate ? (h("path", { d: "M6 12L18 12", part: "mark" })) : (h("path", { d: "M5.9,12.5l3.8,3.8l8.8-8.8", part: "mark" }));
@@ -4,13 +4,13 @@
4
4
  import { j as printIonError, f as printIonWarning, r as registerInstance, c as createEvent, w as writeTask, h, d as Host, g as getElement } from './index-4DxY6_gG.js';
5
5
  import { startFocusVisible } from './focus-visible-BmVRXR1y.js';
6
6
  import { r as raf, g as getElementRoot, a as renderHiddenInput, e as clamp } from './helpers-8KSQQGQy.js';
7
+ import { F as FOCUS_TRAP_DISABLE_CLASS, d as createDelegateController, e as createTriggerController, B as BACKDROP, i as isCancel, j as prepareOverlay, k as setOverlayId, f as present, g as dismiss, h as eventMethod, s as safeCall } from './overlays-B_dsLNe8.js';
7
8
  import { i as isRTL } from './dir-C53feagD.js';
8
9
  import { c as createColorClasses, g as getClassMap } from './theme-DiVJyqlX.js';
9
10
  import { l as chevronDown, o as caretUpSharp, p as chevronForward, q as caretDownSharp, c as chevronBack } from './index-DV3sJJW8.js';
10
11
  import { b as getIonMode } from './ionic-global-CTSyufhF.js';
11
12
  import { i as isBefore, a as isAfter, g as getPreviousMonth, b as getNextMonth, c as isSameDay, d as getDay, e as generateDayAriaLabel, v as validateParts, f as getPartsFromCalendarDay, h as getNextYear, j as getPreviousYear, k as getEndOfWeek, l as getStartOfWeek, m as getPreviousDay, n as getNextDay, o as getPreviousWeek, p as getNextWeek, q as parseMinParts, r as parseMaxParts, s as parseDate, w as warnIfValueOutOfBounds, t as parseAmPm, u as clampDate, x as convertToArrayOfNumbers, y as convertDataToISO, z as getToday, A as getClosestValidDate, B as generateMonths, C as getNumDaysInMonth, D as getCombinedDateColumnData, E as getMonthColumnData, F as getDayColumnData, G as getYearColumnData, H as isMonthFirstLocale, I as getTimeColumnsData, J as isLocaleDayPeriodRTL, K as calculateHourFromAMPM, L as getDaysOfWeek, M as getMonthAndYear, N as getDaysOfMonth, O as getHourCycle, P as getLocalizedTime, Q as getLocalizedDateTime, R as formatValue } from './data-CKHMWxfe.js';
12
13
  import { c as createLockController } from './lock-controller-B-hirT0v.js';
13
- import { d as createDelegateController, e as createTriggerController, B as BACKDROP, i as isCancel, j as prepareOverlay, k as setOverlayId, f as present, g as dismiss, h as eventMethod, s as safeCall } from './overlays-ZX_4-t_r.js';
14
14
  import { c as createAnimation } from './animation-BvhAtgca.js';
15
15
  import { a as hapticSelectionChanged, h as hapticSelectionEnd, b as hapticSelectionStart } from './haptic-DzAMWJuk.js';
16
16
  import './index-ZjP4CjeZ.js';
@@ -1299,7 +1299,7 @@ const Datetime = class {
1299
1299
  const renderArray = forcePresentation === 'time-date'
1300
1300
  ? [this.renderTimePickerColumns(forcePresentation), this.renderDatePickerColumns(forcePresentation)]
1301
1301
  : [this.renderDatePickerColumns(forcePresentation), this.renderTimePickerColumns(forcePresentation)];
1302
- return h("ion-picker", null, renderArray);
1302
+ return h("ion-picker", { class: FOCUS_TRAP_DISABLE_CLASS }, renderArray);
1303
1303
  }
1304
1304
  renderDatePickerColumns(forcePresentation) {
1305
1305
  return forcePresentation === 'date-time' || forcePresentation === 'time-date'
@@ -1856,7 +1856,7 @@ const Datetime = class {
1856
1856
  const hasDatePresentation = presentation === 'date' || presentation === 'date-time' || presentation === 'time-date';
1857
1857
  const hasWheelVariant = hasDatePresentation && preferWheel;
1858
1858
  renderHiddenInput(true, el, name, formatValue(value), disabled);
1859
- return (h(Host, { key: 'f35cf200ff05d33074576e3d2754d3b2a0735b96', "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: Object.assign({}, createColorClasses(color, {
1859
+ return (h(Host, { key: '57492534800ea059a7c2bbd9f0059cc0b75ae8d2', "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: Object.assign({}, createColorClasses(color, {
1860
1860
  [mode]: true,
1861
1861
  ['datetime-readonly']: readonly,
1862
1862
  ['datetime-disabled']: disabled,
@@ -1866,7 +1866,7 @@ const Datetime = class {
1866
1866
  [`datetime-size-${size}`]: true,
1867
1867
  [`datetime-prefer-wheel`]: hasWheelVariant,
1868
1868
  [`datetime-grid`]: isGridStyle,
1869
- })) }, h("div", { key: '859e9354a12bfa58ac3f964c2e66839f17071c00', class: "intersection-tracker", ref: (el) => (this.intersectionTrackerRef = el) }), this.renderDatetime(mode)));
1869
+ })) }, h("div", { key: '97dac5e5195635ac0bc5fb472b9d09e5c3c6bbc3', class: "intersection-tracker", ref: (el) => (this.intersectionTrackerRef = el) }), this.renderDatetime(mode)));
1870
1870
  }
1871
1871
  get el() { return getElement(this); }
1872
1872
  static get watchers() { return {
@@ -5,7 +5,7 @@ import { r as registerInstance, c as createEvent, e as config, h, d as Host, g a
5
5
  import { E as ENABLE_HTML_CONTENT_DEFAULT, a as sanitizeDOMString } from './config-Dx_6wPIJ.js';
6
6
  import { r as raf } from './helpers-8KSQQGQy.js';
7
7
  import { c as createLockController } from './lock-controller-B-hirT0v.js';
8
- import { d as createDelegateController, e as createTriggerController, B as BACKDROP, j as prepareOverlay, k as setOverlayId, f as present, g as dismiss, h as eventMethod } from './overlays-ZX_4-t_r.js';
8
+ import { d as createDelegateController, e as createTriggerController, B as BACKDROP, j as prepareOverlay, k as setOverlayId, f as present, g as dismiss, h as eventMethod } from './overlays-B_dsLNe8.js';
9
9
  import { g as getClassMap } from './theme-DiVJyqlX.js';
10
10
  import { b as getIonMode } from './ionic-global-CTSyufhF.js';
11
11
  import { c as createAnimation } from './animation-BvhAtgca.js';
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import { r as registerInstance, c as createEvent, e as config, j as printIonError, h, d as Host, g as getElement } from './index-4DxY6_gG.js';
5
5
  import { g as getTimeGivenProgression } from './cubic-bezier-hHmYLOfE.js';
6
- import { o as getPresentedOverlay, B as BACKDROP, n as focusFirstDescendant, q as focusLastDescendant, G as GESTURE } from './overlays-ZX_4-t_r.js';
6
+ import { o as getPresentedOverlay, B as BACKDROP, n as focusFirstDescendant, q as focusLastDescendant, G as GESTURE } from './overlays-B_dsLNe8.js';
7
7
  import { G as GESTURE_CONTROLLER } from './gesture-controller-BTEOs1at.js';
8
8
  import { shouldUseCloseWatcher } from './hardware-back-button-Dhbd-23H.js';
9
9
  import { o as isEndSide, i as inheritAriaAttributes, l as assert, e as clamp } from './helpers-8KSQQGQy.js';
@@ -7,7 +7,7 @@ import { C as CoreDelegate, a as attachComponent, d as detachComponent } from '.
7
7
  import { e as clamp, g as getElementRoot, r as raf, b as inheritAttributes, h as hasLazyBuild } from './helpers-8KSQQGQy.js';
8
8
  import { c as createLockController } from './lock-controller-B-hirT0v.js';
9
9
  import { g as getCapacitor } from './capacitor-CFERIeaU.js';
10
- import { G as GESTURE, O as OVERLAY_GESTURE_PRIORITY, F as FOCUS_TRAP_DISABLE_CLASS, e as createTriggerController, B as BACKDROP, j as prepareOverlay, k as setOverlayId, f as present, g as dismiss, h as eventMethod } from './overlays-ZX_4-t_r.js';
10
+ import { G as GESTURE, O as OVERLAY_GESTURE_PRIORITY, F as FOCUS_TRAP_DISABLE_CLASS, e as createTriggerController, B as BACKDROP, j as prepareOverlay, k as setOverlayId, f as present, g as dismiss, h as eventMethod } from './overlays-B_dsLNe8.js';
11
11
  import { g as getClassMap } from './theme-DiVJyqlX.js';
12
12
  import { e as deepReady, w as waitForMount } from './index-Dp7GXH1z.js';
13
13
  import { b as getIonMode } from './ionic-global-CTSyufhF.js';
@@ -6,9 +6,9 @@ import { b as inheritAttributes } from './helpers-8KSQQGQy.js';
6
6
  import { c as createColorClasses } from './theme-DiVJyqlX.js';
7
7
  import { b as getIonMode } from './ionic-global-CTSyufhF.js';
8
8
 
9
- 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}";
9
+ 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}";
10
10
 
11
- 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)}";
11
+ 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)}";
12
12
 
13
13
  const PickerColumnOption = class {
14
14
  constructor(hostRef) {
@@ -100,7 +100,7 @@ const PickerColumnOption = class {
100
100
  return (h(Host, { key: 'f816729941aabcb31ddfdce3ffe2e2139030d715', class: createColorClasses(color, {
101
101
  [mode]: true,
102
102
  ['option-disabled']: disabled,
103
- }) }, h("button", { key: '48dff7833bb60fc8331cd353a0885e6affa683d1', tabindex: "-1", "aria-label": ariaLabel, disabled: disabled, onClick: () => this.onClick() }, h("slot", { key: 'f9224d0e7b7aa6c05b29abfdcfe0f30ad6ee3141' }))));
103
+ }) }, h("div", { key: 'd942de84fd14d7dc06b1e5cf4f7920d1dc3c6371', class: 'picker-column-option-button', role: "button", "aria-label": ariaLabel, onClick: () => this.onClick() }, h("slot", { key: 'b0df5717b42209e649097209a01476e1a66f5c5c' }))));
104
104
  }
105
105
  get el() { return getElement(this); }
106
106
  static get watchers() { return {