@ionic/core 7.7.1-dev.11706736578.174d0727 → 7.7.1-dev.11707253408.186eea70

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 (69) hide show
  1. package/components/overlays.js +15 -16
  2. package/components/select-popover.js +2 -2
  3. package/dist/cjs/index.cjs.js +1 -1
  4. package/dist/cjs/ion-action-sheet.cjs.entry.js +1 -1
  5. package/dist/cjs/ion-alert.cjs.entry.js +1 -1
  6. package/dist/cjs/ion-datetime_3.cjs.entry.js +1 -1
  7. package/dist/cjs/ion-loading.cjs.entry.js +1 -1
  8. package/dist/cjs/ion-menu_3.cjs.entry.js +1 -1
  9. package/dist/cjs/ion-modal.cjs.entry.js +1 -1
  10. package/dist/cjs/ion-popover.cjs.entry.js +1 -1
  11. package/dist/cjs/ion-select_3.cjs.entry.js +3 -3
  12. package/dist/cjs/ion-toast.cjs.entry.js +1 -1
  13. package/dist/cjs/{overlays-37b51f7b.js → overlays-85c4c41c.js} +15 -16
  14. package/dist/collection/components/select-popover/select-popover.ios.css +10 -0
  15. package/dist/collection/components/select-popover/select-popover.md.css +10 -0
  16. package/dist/collection/utils/overlays.js +15 -16
  17. package/dist/collection/utils/test/overlays/overlays.e2e.js +85 -0
  18. package/dist/docs.json +1 -1
  19. package/dist/esm/index.js +1 -1
  20. package/dist/esm/ion-action-sheet.entry.js +1 -1
  21. package/dist/esm/ion-alert.entry.js +1 -1
  22. package/dist/esm/ion-datetime_3.entry.js +1 -1
  23. package/dist/esm/ion-loading.entry.js +1 -1
  24. package/dist/esm/ion-menu_3.entry.js +1 -1
  25. package/dist/esm/ion-modal.entry.js +1 -1
  26. package/dist/esm/ion-popover.entry.js +1 -1
  27. package/dist/esm/ion-select_3.entry.js +3 -3
  28. package/dist/esm/ion-toast.entry.js +1 -1
  29. package/dist/esm/{overlays-7199c581.js → overlays-3d2d7d79.js} +15 -16
  30. package/dist/esm-es5/index.js +1 -1
  31. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  32. package/dist/esm-es5/ion-alert.entry.js +1 -1
  33. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  34. package/dist/esm-es5/ion-loading.entry.js +1 -1
  35. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  36. package/dist/esm-es5/ion-modal.entry.js +1 -1
  37. package/dist/esm-es5/ion-popover.entry.js +1 -1
  38. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  39. package/dist/esm-es5/ion-toast.entry.js +1 -1
  40. package/dist/esm-es5/overlays-3d2d7d79.js +4 -0
  41. package/dist/ionic/index.esm.js +1 -1
  42. package/dist/ionic/ionic.esm.js +1 -1
  43. package/dist/ionic/{p-3fe26591.entry.js → p-0982c56e.entry.js} +1 -1
  44. package/dist/ionic/{p-7582a199.entry.js → p-0b5f39ac.entry.js} +1 -1
  45. package/dist/ionic/p-0b955124.system.js +1 -1
  46. package/dist/ionic/{p-fc34f652.system.entry.js → p-179e9b0b.system.entry.js} +1 -1
  47. package/dist/ionic/{p-e9af70cf.entry.js → p-303d0415.entry.js} +1 -1
  48. package/dist/ionic/{p-7d3b78b1.entry.js → p-31ba3048.entry.js} +1 -1
  49. package/dist/ionic/{p-988c8cc8.system.entry.js → p-33c555bf.system.entry.js} +1 -1
  50. package/dist/ionic/{p-331b4e02.system.entry.js → p-50484477.system.entry.js} +1 -1
  51. package/dist/ionic/{p-089b2b36.system.entry.js → p-526768bb.system.entry.js} +1 -1
  52. package/dist/ionic/{p-f37c8bdb.entry.js → p-84f0a84b.entry.js} +1 -1
  53. package/dist/ionic/{p-e2b646df.system.entry.js → p-88538d89.system.entry.js} +1 -1
  54. package/dist/ionic/p-a216ea97.js +4 -0
  55. package/dist/ionic/p-adb145d7.system.js +4 -0
  56. package/dist/ionic/{p-523ef897.system.entry.js → p-aece6698.system.entry.js} +1 -1
  57. package/dist/ionic/{p-00b14d2c.system.entry.js → p-b6b80abd.system.entry.js} +1 -1
  58. package/dist/ionic/{p-9353bb82.entry.js → p-c2627ddf.entry.js} +1 -1
  59. package/dist/ionic/{p-6c6144c7.system.entry.js → p-cf2031ef.system.entry.js} +1 -1
  60. package/dist/ionic/{p-ea737614.entry.js → p-d5e3a2b5.entry.js} +1 -1
  61. package/dist/ionic/{p-8e9c61d0.entry.js → p-dffdc58f.entry.js} +1 -1
  62. package/dist/ionic/{p-a11f7f68.system.entry.js → p-e453b029.system.entry.js} +1 -1
  63. package/dist/ionic/{p-6482ab9e.entry.js → p-e60c1669.entry.js} +1 -1
  64. package/dist/ionic/{p-d29aecf3.system.js → p-ed0a487f.system.js} +1 -1
  65. package/hydrate/index.js +17 -18
  66. package/package.json +1 -1
  67. package/dist/esm-es5/overlays-7199c581.js +0 -4
  68. package/dist/ionic/p-48de5c0d.js +0 -4
  69. package/dist/ionic/p-6444cade.system.js +0 -4
@@ -190,6 +190,21 @@ const trapKeyboardFocus = (ev, doc) => {
190
190
  */
191
191
  if (lastOverlay === target) {
192
192
  lastOverlay.lastFocus = undefined;
193
+ /**
194
+ * Toasts can be presented from an overlay.
195
+ * However, focus should still be returned to
196
+ * the overlay when clicking a toast. Normally,
197
+ * focus would be returned to the last focusable
198
+ * descendant in the overlay which may not always be
199
+ * the button that the toast was presented from. In this case,
200
+ * the focus may be returned to an unexpected element.
201
+ * To account for this, we make sure to return focus to the
202
+ * last focused element in the overlay if focus is
203
+ * moved to the toast.
204
+ */
205
+ }
206
+ else if (target.tagName === 'ION-TOAST') {
207
+ focusElementInOverlay(lastOverlay.lastFocus, lastOverlay);
193
208
  /**
194
209
  * Otherwise, we must be focusing an element
195
210
  * inside of the overlay. The two possible options
@@ -221,21 +236,6 @@ const trapKeyboardFocus = (ev, doc) => {
221
236
  */
222
237
  if (overlayWrapper.contains(target) || target === overlayRoot.querySelector('ion-backdrop')) {
223
238
  lastOverlay.lastFocus = target;
224
- /**
225
- * Toasts can be presented from an overlay.
226
- * However, focus should still be returned to
227
- * the overlay when clicking a toast. Normally,
228
- * focus would be returned to the last focusable
229
- * descendant in the overlay which may not always be
230
- * the button that the toast was presented from. In this case,
231
- * the focus may be returned to an unexpected element.
232
- * To account for this, we make sure to return focus to the
233
- * last focused element in the overlay if focus is
234
- * moved to the toast.
235
- */
236
- }
237
- else if (target.tagName === 'ION-TOAST') {
238
- focusElementInOverlay(lastOverlay.lastFocus, lastOverlay);
239
239
  }
240
240
  else {
241
241
  /**
@@ -319,7 +319,6 @@ const trapKeyboardFocus = (ev, doc) => {
319
319
  * last focus to equal the active element.
320
320
  */
321
321
  if (lastFocus === doc.activeElement) {
322
- console.log('LAST FOCUS');
323
322
  focusLastDescendant(lastOverlay, lastOverlay);
324
323
  }
325
324
  lastOverlay.lastFocus = doc.activeElement;
@@ -16,10 +16,10 @@ import { d as defineCustomElement$3 } from './radio.js';
16
16
  import { d as defineCustomElement$2 } from './radio-group.js';
17
17
  import { d as defineCustomElement$1 } from './ripple-effect.js';
18
18
 
19
- const selectPopoverIosCss = ".sc-ion-select-popover-ios-h ion-list.sc-ion-select-popover-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}ion-list-header.sc-ion-select-popover-ios,ion-label.sc-ion-select-popover-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}";
19
+ const selectPopoverIosCss = ".sc-ion-select-popover-ios-h ion-list.sc-ion-select-popover-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}ion-list-header.sc-ion-select-popover-ios,ion-label.sc-ion-select-popover-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-select-popover-ios-h{overflow-y:auto}";
20
20
  const IonSelectPopoverIosStyle0 = selectPopoverIosCss;
21
21
 
22
- const selectPopoverMdCss = ".sc-ion-select-popover-md-h ion-list.sc-ion-select-popover-md{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}ion-list-header.sc-ion-select-popover-md,ion-label.sc-ion-select-popover-md{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}ion-list.sc-ion-select-popover-md ion-radio.sc-ion-select-popover-md::part(container){opacity:0}ion-item.sc-ion-select-popover-md{--inner-border-width:0}.item-radio-checked.sc-ion-select-popover-md{--background:rgba(var(--ion-color-primary-rgb, 56, 128, 255), 0.08);--background-focused:var(--ion-color-primary, #3880ff);--background-focused-opacity:0.2;--background-hover:var(--ion-color-primary, #3880ff);--background-hover-opacity:0.12}.item-checkbox-checked.sc-ion-select-popover-md{--background-activated:var(--ion-item-color, var(--ion-text-color, #000));--background-focused:var(--ion-item-color, var(--ion-text-color, #000));--background-hover:var(--ion-item-color, var(--ion-text-color, #000));--color:var(--ion-color-primary, #3880ff)}";
22
+ const selectPopoverMdCss = ".sc-ion-select-popover-md-h ion-list.sc-ion-select-popover-md{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}ion-list-header.sc-ion-select-popover-md,ion-label.sc-ion-select-popover-md{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-select-popover-md-h{overflow-y:auto}ion-list.sc-ion-select-popover-md ion-radio.sc-ion-select-popover-md::part(container){opacity:0}ion-item.sc-ion-select-popover-md{--inner-border-width:0}.item-radio-checked.sc-ion-select-popover-md{--background:rgba(var(--ion-color-primary-rgb, 56, 128, 255), 0.08);--background-focused:var(--ion-color-primary, #3880ff);--background-focused-opacity:0.2;--background-hover:var(--ion-color-primary, #3880ff);--background-hover-opacity:0.12}.item-checkbox-checked.sc-ion-select-popover-md{--background-activated:var(--ion-item-color, var(--ion-text-color, #000));--background-focused:var(--ion-item-color, var(--ion-text-color, #000));--background-hover:var(--ion-item-color, var(--ion-text-color, #000));--color:var(--ion-color-primary, #3880ff)}";
23
23
  const IonSelectPopoverMdStyle0 = selectPopoverMdCss;
24
24
 
25
25
  const SelectPopover = /*@__PURE__*/ proxyCustomElement(class SelectPopover extends HTMLElement {
@@ -16,7 +16,7 @@ const helpers = require('./helpers-da4c0ed1.js');
16
16
  const config = require('./config-4f60b98a.js');
17
17
  const theme = require('./theme-d1c573d2.js');
18
18
  const index$2 = require('./index-6600c909.js');
19
- const overlays = require('./overlays-37b51f7b.js');
19
+ const overlays = require('./overlays-85c4c41c.js');
20
20
  require('./index-c8d52405.js');
21
21
  require('./index-5a471146.js');
22
22
  require('./gesture-controller-c40c045a.js');
@@ -9,7 +9,7 @@ const index = require('./index-5a471146.js');
9
9
  const buttonActive = require('./button-active-b8c3f603.js');
10
10
  const helpers = require('./helpers-da4c0ed1.js');
11
11
  const lockController = require('./lock-controller-6585a42a.js');
12
- const overlays = require('./overlays-37b51f7b.js');
12
+ const overlays = require('./overlays-85c4c41c.js');
13
13
  const theme = require('./theme-d1c573d2.js');
14
14
  const ionicGlobal = require('./ionic-global-7358c23e.js');
15
15
  const animation = require('./animation-c2840aea.js');
@@ -10,7 +10,7 @@ const config = require('./config-4f60b98a.js');
10
10
  const buttonActive = require('./button-active-b8c3f603.js');
11
11
  const helpers = require('./helpers-da4c0ed1.js');
12
12
  const lockController = require('./lock-controller-6585a42a.js');
13
- const overlays = require('./overlays-37b51f7b.js');
13
+ const overlays = require('./overlays-85c4c41c.js');
14
14
  const theme = require('./theme-d1c573d2.js');
15
15
  const ionicGlobal = require('./ionic-global-7358c23e.js');
16
16
  const animation = require('./animation-c2840aea.js');
@@ -15,7 +15,7 @@ const index$2 = require('./index-f52c6d38.js');
15
15
  const ionicGlobal = require('./ionic-global-7358c23e.js');
16
16
  const data = require('./data-a5109f09.js');
17
17
  const lockController = require('./lock-controller-6585a42a.js');
18
- const overlays = require('./overlays-37b51f7b.js');
18
+ const overlays = require('./overlays-85c4c41c.js');
19
19
  const animation = require('./animation-c2840aea.js');
20
20
  const haptic = require('./haptic-b882e0bb.js');
21
21
  require('./index-c8d52405.js');
@@ -9,7 +9,7 @@ const index = require('./index-5a471146.js');
9
9
  const config = require('./config-4f60b98a.js');
10
10
  const helpers = require('./helpers-da4c0ed1.js');
11
11
  const lockController = require('./lock-controller-6585a42a.js');
12
- const overlays = require('./overlays-37b51f7b.js');
12
+ const overlays = require('./overlays-85c4c41c.js');
13
13
  const theme = require('./theme-d1c573d2.js');
14
14
  const ionicGlobal = require('./ionic-global-7358c23e.js');
15
15
  const animation = require('./animation-c2840aea.js');
@@ -11,7 +11,7 @@ const gestureController = require('./gesture-controller-c40c045a.js');
11
11
  const hardwareBackButton = require('./hardware-back-button-d23873bb.js');
12
12
  const helpers = require('./helpers-da4c0ed1.js');
13
13
  const index$1 = require('./index-6600c909.js');
14
- const overlays = require('./overlays-37b51f7b.js');
14
+ const overlays = require('./overlays-85c4c41c.js');
15
15
  const ionicGlobal = require('./ionic-global-7358c23e.js');
16
16
  const theme = require('./theme-d1c573d2.js');
17
17
  const index$2 = require('./index-f52c6d38.js');
@@ -12,7 +12,7 @@ const helpers = require('./helpers-da4c0ed1.js');
12
12
  const lockController = require('./lock-controller-6585a42a.js');
13
13
  const index$4 = require('./index-5915f9b3.js');
14
14
  const capacitor = require('./capacitor-c04564bf.js');
15
- const overlays = require('./overlays-37b51f7b.js');
15
+ const overlays = require('./overlays-85c4c41c.js');
16
16
  const theme = require('./theme-d1c573d2.js');
17
17
  const index$5 = require('./index-0ccc7b6f.js');
18
18
  const ionicGlobal = require('./ionic-global-7358c23e.js');
@@ -10,7 +10,7 @@ const frameworkDelegate = require('./framework-delegate-e0e13baa.js');
10
10
  const helpers = require('./helpers-da4c0ed1.js');
11
11
  const lockController = require('./lock-controller-6585a42a.js');
12
12
  const index$1 = require('./index-5915f9b3.js');
13
- const overlays = require('./overlays-37b51f7b.js');
13
+ const overlays = require('./overlays-85c4c41c.js');
14
14
  const ionicGlobal = require('./ionic-global-7358c23e.js');
15
15
  const theme = require('./theme-d1c573d2.js');
16
16
  const index$2 = require('./index-0ccc7b6f.js');
@@ -11,7 +11,7 @@ const notchController = require('./notch-controller-bfbcbb7a.js');
11
11
  const compareWithUtils = require('./compare-with-utils-df1001d7.js');
12
12
  const helpers = require('./helpers-da4c0ed1.js');
13
13
  const index$1 = require('./index-5915f9b3.js');
14
- const overlays = require('./overlays-37b51f7b.js');
14
+ const overlays = require('./overlays-85c4c41c.js');
15
15
  const dir = require('./dir-94c21456.js');
16
16
  const theme = require('./theme-d1c573d2.js');
17
17
  const watchOptions = require('./watch-options-f5f3e158.js');
@@ -761,10 +761,10 @@ const SelectOption = class {
761
761
  let selectOptionIds = 0;
762
762
  SelectOption.style = IonSelectOptionStyle0;
763
763
 
764
- const selectPopoverIosCss = ".sc-ion-select-popover-ios-h ion-list.sc-ion-select-popover-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}ion-list-header.sc-ion-select-popover-ios,ion-label.sc-ion-select-popover-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}";
764
+ const selectPopoverIosCss = ".sc-ion-select-popover-ios-h ion-list.sc-ion-select-popover-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}ion-list-header.sc-ion-select-popover-ios,ion-label.sc-ion-select-popover-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-select-popover-ios-h{overflow-y:auto}";
765
765
  const IonSelectPopoverIosStyle0 = selectPopoverIosCss;
766
766
 
767
- const selectPopoverMdCss = ".sc-ion-select-popover-md-h ion-list.sc-ion-select-popover-md{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}ion-list-header.sc-ion-select-popover-md,ion-label.sc-ion-select-popover-md{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}ion-list.sc-ion-select-popover-md ion-radio.sc-ion-select-popover-md::part(container){opacity:0}ion-item.sc-ion-select-popover-md{--inner-border-width:0}.item-radio-checked.sc-ion-select-popover-md{--background:rgba(var(--ion-color-primary-rgb, 56, 128, 255), 0.08);--background-focused:var(--ion-color-primary, #3880ff);--background-focused-opacity:0.2;--background-hover:var(--ion-color-primary, #3880ff);--background-hover-opacity:0.12}.item-checkbox-checked.sc-ion-select-popover-md{--background-activated:var(--ion-item-color, var(--ion-text-color, #000));--background-focused:var(--ion-item-color, var(--ion-text-color, #000));--background-hover:var(--ion-item-color, var(--ion-text-color, #000));--color:var(--ion-color-primary, #3880ff)}";
767
+ const selectPopoverMdCss = ".sc-ion-select-popover-md-h ion-list.sc-ion-select-popover-md{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}ion-list-header.sc-ion-select-popover-md,ion-label.sc-ion-select-popover-md{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-select-popover-md-h{overflow-y:auto}ion-list.sc-ion-select-popover-md ion-radio.sc-ion-select-popover-md::part(container){opacity:0}ion-item.sc-ion-select-popover-md{--inner-border-width:0}.item-radio-checked.sc-ion-select-popover-md{--background:rgba(var(--ion-color-primary-rgb, 56, 128, 255), 0.08);--background-focused:var(--ion-color-primary, #3880ff);--background-focused-opacity:0.2;--background-hover:var(--ion-color-primary, #3880ff);--background-hover-opacity:0.12}.item-checkbox-checked.sc-ion-select-popover-md{--background-activated:var(--ion-item-color, var(--ion-text-color, #000));--background-focused:var(--ion-item-color, var(--ion-text-color, #000));--background-hover:var(--ion-item-color, var(--ion-text-color, #000));--color:var(--ion-color-primary, #3880ff)}";
768
768
  const IonSelectPopoverMdStyle0 = selectPopoverMdCss;
769
769
 
770
770
  const SelectPopover = class {
@@ -10,7 +10,7 @@ const config = require('./config-4f60b98a.js');
10
10
  const helpers = require('./helpers-da4c0ed1.js');
11
11
  const lockController = require('./lock-controller-6585a42a.js');
12
12
  const index$1 = require('./index-5915f9b3.js');
13
- const overlays = require('./overlays-37b51f7b.js');
13
+ const overlays = require('./overlays-85c4c41c.js');
14
14
  const theme = require('./theme-d1c573d2.js');
15
15
  const ionicGlobal = require('./ionic-global-7358c23e.js');
16
16
  const animation = require('./animation-c2840aea.js');
@@ -192,6 +192,21 @@ const trapKeyboardFocus = (ev, doc) => {
192
192
  */
193
193
  if (lastOverlay === target) {
194
194
  lastOverlay.lastFocus = undefined;
195
+ /**
196
+ * Toasts can be presented from an overlay.
197
+ * However, focus should still be returned to
198
+ * the overlay when clicking a toast. Normally,
199
+ * focus would be returned to the last focusable
200
+ * descendant in the overlay which may not always be
201
+ * the button that the toast was presented from. In this case,
202
+ * the focus may be returned to an unexpected element.
203
+ * To account for this, we make sure to return focus to the
204
+ * last focused element in the overlay if focus is
205
+ * moved to the toast.
206
+ */
207
+ }
208
+ else if (target.tagName === 'ION-TOAST') {
209
+ focusElementInOverlay(lastOverlay.lastFocus, lastOverlay);
195
210
  /**
196
211
  * Otherwise, we must be focusing an element
197
212
  * inside of the overlay. The two possible options
@@ -223,21 +238,6 @@ const trapKeyboardFocus = (ev, doc) => {
223
238
  */
224
239
  if (overlayWrapper.contains(target) || target === overlayRoot.querySelector('ion-backdrop')) {
225
240
  lastOverlay.lastFocus = target;
226
- /**
227
- * Toasts can be presented from an overlay.
228
- * However, focus should still be returned to
229
- * the overlay when clicking a toast. Normally,
230
- * focus would be returned to the last focusable
231
- * descendant in the overlay which may not always be
232
- * the button that the toast was presented from. In this case,
233
- * the focus may be returned to an unexpected element.
234
- * To account for this, we make sure to return focus to the
235
- * last focused element in the overlay if focus is
236
- * moved to the toast.
237
- */
238
- }
239
- else if (target.tagName === 'ION-TOAST') {
240
- focusElementInOverlay(lastOverlay.lastFocus, lastOverlay);
241
241
  }
242
242
  else {
243
243
  /**
@@ -321,7 +321,6 @@ const trapKeyboardFocus = (ev, doc) => {
321
321
  * last focus to equal the active element.
322
322
  */
323
323
  if (lastFocus === doc.activeElement) {
324
- console.log('LAST FOCUS');
325
324
  focusLastDescendant(lastOverlay, lastOverlay);
326
325
  }
327
326
  lastOverlay.lastFocus = doc.activeElement;
@@ -68,6 +68,16 @@ ion-label {
68
68
  margin-bottom: 0;
69
69
  }
70
70
 
71
+ /**
72
+ * The main content inside of a popover has overflow: hidden
73
+ * so that a descendant ion-content can be scrolled.
74
+ * However, select-popover does not use ion-content so we need
75
+ * to explicitly make this container scrollable.
76
+ */
77
+ :host {
78
+ overflow-y: auto;
79
+ }
80
+
71
81
  /**
72
82
  * Convert a font size to a dynamic font size.
73
83
  * Fonts that participate in Dynamic Type should use
@@ -68,6 +68,16 @@ ion-label {
68
68
  margin-bottom: 0;
69
69
  }
70
70
 
71
+ /**
72
+ * The main content inside of a popover has overflow: hidden
73
+ * so that a descendant ion-content can be scrolled.
74
+ * However, select-popover does not use ion-content so we need
75
+ * to explicitly make this container scrollable.
76
+ */
77
+ :host {
78
+ overflow-y: auto;
79
+ }
80
+
71
81
  /**
72
82
  * Convert a font size to a dynamic font size.
73
83
  * Fonts that participate in Dynamic Type should use
@@ -191,6 +191,21 @@ const trapKeyboardFocus = (ev, doc) => {
191
191
  */
192
192
  if (lastOverlay === target) {
193
193
  lastOverlay.lastFocus = undefined;
194
+ /**
195
+ * Toasts can be presented from an overlay.
196
+ * However, focus should still be returned to
197
+ * the overlay when clicking a toast. Normally,
198
+ * focus would be returned to the last focusable
199
+ * descendant in the overlay which may not always be
200
+ * the button that the toast was presented from. In this case,
201
+ * the focus may be returned to an unexpected element.
202
+ * To account for this, we make sure to return focus to the
203
+ * last focused element in the overlay if focus is
204
+ * moved to the toast.
205
+ */
206
+ }
207
+ else if (target.tagName === 'ION-TOAST') {
208
+ focusElementInOverlay(lastOverlay.lastFocus, lastOverlay);
194
209
  /**
195
210
  * Otherwise, we must be focusing an element
196
211
  * inside of the overlay. The two possible options
@@ -222,21 +237,6 @@ const trapKeyboardFocus = (ev, doc) => {
222
237
  */
223
238
  if (overlayWrapper.contains(target) || target === overlayRoot.querySelector('ion-backdrop')) {
224
239
  lastOverlay.lastFocus = target;
225
- /**
226
- * Toasts can be presented from an overlay.
227
- * However, focus should still be returned to
228
- * the overlay when clicking a toast. Normally,
229
- * focus would be returned to the last focusable
230
- * descendant in the overlay which may not always be
231
- * the button that the toast was presented from. In this case,
232
- * the focus may be returned to an unexpected element.
233
- * To account for this, we make sure to return focus to the
234
- * last focused element in the overlay if focus is
235
- * moved to the toast.
236
- */
237
- }
238
- else if (target.tagName === 'ION-TOAST') {
239
- focusElementInOverlay(lastOverlay.lastFocus, lastOverlay);
240
240
  }
241
241
  else {
242
242
  /**
@@ -320,7 +320,6 @@ const trapKeyboardFocus = (ev, doc) => {
320
320
  * last focus to equal the active element.
321
321
  */
322
322
  if (lastFocus === doc.activeElement) {
323
- console.log('LAST FOCUS');
324
323
  focusLastDescendant(lastOverlay, lastOverlay);
325
324
  }
326
325
  lastOverlay.lastFocus = doc.activeElement;
@@ -175,5 +175,90 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
175
175
  await modalInputOne.click();
176
176
  await expect(modalInputOne).toBeFocused();
177
177
  });
178
+ test('focusing toast from a shadow overlay should return focus to the last focused element', async ({ page, skip, }) => {
179
+ test.info().annotations.push({
180
+ type: 'issue',
181
+ description: 'https://github.com/ionic-team/ionic-framework/issues/28261',
182
+ });
183
+ skip.browser('webkit', 'WebKit does not consider buttons to be focusable');
184
+ await page.setContent(`
185
+ <ion-modal>
186
+ <ion-content>
187
+ <button id="show-toast">Button A</button>
188
+ <button>Button B</button>
189
+ <ion-toast trigger="show-toast"></ion-toast>
190
+ </ion-content>
191
+ </ion-modal>
192
+
193
+ <script>
194
+ const toast = document.querySelector('ion-toast');
195
+ toast.buttons = ['Ok'];
196
+ </script>
197
+ `, config);
198
+ const modal = page.locator('ion-modal');
199
+ const showToastButton = page.locator('#show-toast');
200
+ const toast = page.locator('ion-toast');
201
+ const toastButton = toast.locator('button');
202
+ const ionToastDidPresent = await page.spyOnEvent('ionToastDidPresent');
203
+ // Show overlay
204
+ await modal.evaluate((el) => el.present());
205
+ // Click button to open toast
206
+ await showToastButton.click();
207
+ // Wait for toast to be presented
208
+ await ionToastDidPresent.next();
209
+ // Verify button in overlay is focused
210
+ await expect(showToastButton).toBeFocused();
211
+ // Click a button in the toast and therefore attempt to move focus
212
+ await toastButton.click();
213
+ // Verify button in overlay is still focused
214
+ await expect(showToastButton).toBeFocused();
215
+ });
216
+ test('focusing toast from a scoped overlay should return focus to the last focused element', async ({ page, skip, }) => {
217
+ test.info().annotations.push({
218
+ type: 'issue',
219
+ description: 'https://github.com/ionic-team/ionic-framework/issues/28261',
220
+ });
221
+ skip.browser('webkit', 'WebKit does not consider buttons to be focusable');
222
+ await page.setContent(`
223
+ <ion-action-sheet></ion-action-sheet>
224
+ <ion-toast></ion-toast>
225
+
226
+ <script>
227
+ const actionSheet = document.querySelector('ion-action-sheet');
228
+ actionSheet.buttons = [
229
+ 'Other Button',
230
+ {
231
+ text: 'Button',
232
+ id: 'show-toast',
233
+ handler: () => {
234
+ document.querySelector('ion-toast').present();
235
+ return false;
236
+ }
237
+ }
238
+ ];
239
+
240
+ const toast = document.querySelector('ion-toast');
241
+ toast.buttons = ['Ok'];
242
+ </script>
243
+ `, config);
244
+ const actionSheet = page.locator('ion-action-sheet');
245
+ const showToastButton = page.locator('#show-toast');
246
+ const toast = page.locator('ion-toast');
247
+ const toastButton = toast.locator('button');
248
+ const ionToastDidPresent = await page.spyOnEvent('ionToastDidPresent');
249
+ // Show overlay
250
+ await actionSheet.evaluate((el) => el.present());
251
+ // Click button to open toast
252
+ await showToastButton.click();
253
+ // Wait for toast to be presented
254
+ await ionToastDidPresent.next();
255
+ // Verify button in overlay is focused
256
+ await expect(showToastButton).toBeFocused();
257
+ // Click a button in the toast and therefore attempt to move focus
258
+ await toastButton.click();
259
+ await page.pause();
260
+ // Verify button in overlay is still focused
261
+ await expect(showToastButton).toBeFocused();
262
+ });
178
263
  });
179
264
  });
package/dist/docs.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "timestamp": "2024-01-31T21:31:25",
2
+ "timestamp": "2024-02-06T21:05:13",
3
3
  "compiler": {
4
4
  "name": "@stencil/core",
5
5
  "version": "4.12.0",
package/dist/esm/index.js CHANGED
@@ -12,7 +12,7 @@ export { c as componentOnReady } from './helpers-be245865.js';
12
12
  export { I as IonicSafeString, g as getMode, s as setupConfig } from './config-49c88215.js';
13
13
  export { o as openURL } from './theme-01f3f29c.js';
14
14
  export { m as menuController } from './index-aa29e8bf.js';
15
- export { b as actionSheetController, a as alertController, l as loadingController, m as modalController, p as pickerController, c as popoverController, t as toastController } from './overlays-7199c581.js';
15
+ export { b as actionSheetController, a as alertController, l as loadingController, m as modalController, p as pickerController, c as popoverController, t as toastController } from './overlays-3d2d7d79.js';
16
16
  import './index-a5d50daf.js';
17
17
  import './index-73881b51.js';
18
18
  import './gesture-controller-1bf57181.js';
@@ -5,7 +5,7 @@ import { r as registerInstance, d as createEvent, e as readTask, h, H as Host, f
5
5
  import { c as createButtonActiveGesture } from './button-active-4bee452c.js';
6
6
  import { r as raf } from './helpers-be245865.js';
7
7
  import { c as createLockController } from './lock-controller-316928be.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-7199c581.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-3d2d7d79.js';
9
9
  import { g as getClassMap } from './theme-01f3f29c.js';
10
10
  import { b as getIonMode } from './ionic-global-778b7863.js';
11
11
  import { c as createAnimation } from './animation-6a0c5338.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-4bee452c.js';
7
7
  import { r as raf } from './helpers-be245865.js';
8
8
  import { c as createLockController } from './lock-controller-316928be.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-7199c581.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-3d2d7d79.js';
10
10
  import { g as getClassMap } from './theme-01f3f29c.js';
11
11
  import { c as config, b as getIonMode } from './ionic-global-778b7863.js';
12
12
  import { c as createAnimation } from './animation-6a0c5338.js';
@@ -11,7 +11,7 @@ import { c as chevronBack, o as chevronForward, l as chevronDown, p as caretUpSh
11
11
  import { b as getIonMode } from './ionic-global-778b7863.js';
12
12
  import { g as generateDayAriaLabel, a as getDay, i as isBefore, b as isAfter, c as isSameDay, d as getPreviousMonth, e as getNextMonth, 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 convertToArrayOfNumbers, u as convertDataToISO, x as getToday, y as getClosestValidDate, z as generateMonths, A as getNumDaysInMonth, B as getCombinedDateColumnData, C as getMonthColumnData, D as getDayColumnData, E as getYearColumnData, F as isMonthFirstLocale, G as getTimeColumnsData, H as isLocaleDayPeriodRTL, I as getDaysOfWeek, J as getMonthAndYear, K as getDaysOfMonth, L as getHourCycle, M as getLocalizedTime, N as getMonthAndDay, O as formatValue, P as clampDate, Q as parseAmPm, R as calculateHourFromAMPM } from './data-0f3ab200.js';
13
13
  import { c as createLockController } from './lock-controller-316928be.js';
14
- 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-7199c581.js';
14
+ 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-3d2d7d79.js';
15
15
  import { c as createAnimation } from './animation-6a0c5338.js';
16
16
  import { b as hapticSelectionChanged, h as hapticSelectionEnd, a as hapticSelectionStart } from './haptic-554688a5.js';
17
17
  import './index-a5d50daf.js';
@@ -5,7 +5,7 @@ import { r as registerInstance, d as createEvent, h, H as Host, f as getElement
5
5
  import { E as ENABLE_HTML_CONTENT_DEFAULT, a as sanitizeDOMString } from './config-49c88215.js';
6
6
  import { r as raf } from './helpers-be245865.js';
7
7
  import { c as createLockController } from './lock-controller-316928be.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-7199c581.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-3d2d7d79.js';
9
9
  import { g as getClassMap } from './theme-01f3f29c.js';
10
10
  import { c as config, b as getIonMode } from './ionic-global-778b7863.js';
11
11
  import { c as createAnimation } from './animation-6a0c5338.js';
@@ -7,7 +7,7 @@ import { G as GESTURE_CONTROLLER } from './gesture-controller-1bf57181.js';
7
7
  import { shoudUseCloseWatcher } from './hardware-back-button-f42b9c80.js';
8
8
  import { p as isEndSide, i as inheritAriaAttributes, o as assert, l as clamp } from './helpers-be245865.js';
9
9
  import { m as menuController } from './index-aa29e8bf.js';
10
- import { o as getPresentedOverlay } from './overlays-7199c581.js';
10
+ import { o as getPresentedOverlay } from './overlays-3d2d7d79.js';
11
11
  import { c as config, b as getIonMode } from './ionic-global-778b7863.js';
12
12
  import { c as createColorClasses, h as hostContext } from './theme-01f3f29c.js';
13
13
  import { u as menuOutline, v as menuSharp } from './index-f7dc70ba.js';
@@ -8,7 +8,7 @@ import { g as getElementRoot, l as clamp, r as raf, k as inheritAttributes, m as
8
8
  import { c as createLockController } from './lock-controller-316928be.js';
9
9
  import { p as printIonWarning } from './index-9b0d46f4.js';
10
10
  import { g as getCapacitor } from './capacitor-59395cbd.js';
11
- import { G as GESTURE, O as OVERLAY_GESTURE_PRIORITY, e as createTriggerController, B as BACKDROP, j as prepareOverlay, k as setOverlayId, f as present, g as dismiss, h as eventMethod } from './overlays-7199c581.js';
11
+ import { G as GESTURE, O as OVERLAY_GESTURE_PRIORITY, e as createTriggerController, B as BACKDROP, j as prepareOverlay, k as setOverlayId, f as present, g as dismiss, h as eventMethod } from './overlays-3d2d7d79.js';
12
12
  import { g as getClassMap } from './theme-01f3f29c.js';
13
13
  import { e as deepReady, w as waitForMount } from './index-22b42a9f.js';
14
14
  import { b as getIonMode, c as config } from './ionic-global-778b7863.js';
@@ -6,7 +6,7 @@ import { C as CoreDelegate, a as attachComponent, d as detachComponent } from '.
6
6
  import { r as raf, g as getElementRoot, a as addEventListener, m as hasLazyBuild } from './helpers-be245865.js';
7
7
  import { c as createLockController } from './lock-controller-316928be.js';
8
8
  import { p as printIonWarning } from './index-9b0d46f4.js';
9
- import { B as BACKDROP, j as prepareOverlay, k as setOverlayId, f as present, n as focusFirstDescendant, g as dismiss, h as eventMethod } from './overlays-7199c581.js';
9
+ import { B as BACKDROP, j as prepareOverlay, k as setOverlayId, f as present, n as focusFirstDescendant, g as dismiss, h as eventMethod } from './overlays-3d2d7d79.js';
10
10
  import { b as getIonMode, a as isPlatform } from './ionic-global-778b7863.js';
11
11
  import { g as getClassMap } from './theme-01f3f29c.js';
12
12
  import { e as deepReady, w as waitForMount } from './index-22b42a9f.js';
@@ -7,7 +7,7 @@ import { c as createNotchController } from './notch-controller-6bd3e0f9.js';
7
7
  import { i as isOptionSelected, c as compareOptions } from './compare-with-utils-a96ff2ea.js';
8
8
  import { k as inheritAttributes, f as focusVisibleElement, h as findItemLabel, d as renderHiddenInput, e as getAriaLabel } from './helpers-be245865.js';
9
9
  import { p as printIonWarning } from './index-9b0d46f4.js';
10
- import { c as popoverController, b as actionSheetController, a as alertController, s as safeCall } from './overlays-7199c581.js';
10
+ import { c as popoverController, b as actionSheetController, a as alertController, s as safeCall } from './overlays-3d2d7d79.js';
11
11
  import { i as isRTL } from './dir-babeabeb.js';
12
12
  import { h as hostContext, c as createColorClasses, g as getClassMap } from './theme-01f3f29c.js';
13
13
  import { w as watchForOptions } from './watch-options-c2911ace.js';
@@ -757,10 +757,10 @@ const SelectOption = class {
757
757
  let selectOptionIds = 0;
758
758
  SelectOption.style = IonSelectOptionStyle0;
759
759
 
760
- const selectPopoverIosCss = ".sc-ion-select-popover-ios-h ion-list.sc-ion-select-popover-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}ion-list-header.sc-ion-select-popover-ios,ion-label.sc-ion-select-popover-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}";
760
+ const selectPopoverIosCss = ".sc-ion-select-popover-ios-h ion-list.sc-ion-select-popover-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}ion-list-header.sc-ion-select-popover-ios,ion-label.sc-ion-select-popover-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-select-popover-ios-h{overflow-y:auto}";
761
761
  const IonSelectPopoverIosStyle0 = selectPopoverIosCss;
762
762
 
763
- const selectPopoverMdCss = ".sc-ion-select-popover-md-h ion-list.sc-ion-select-popover-md{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}ion-list-header.sc-ion-select-popover-md,ion-label.sc-ion-select-popover-md{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}ion-list.sc-ion-select-popover-md ion-radio.sc-ion-select-popover-md::part(container){opacity:0}ion-item.sc-ion-select-popover-md{--inner-border-width:0}.item-radio-checked.sc-ion-select-popover-md{--background:rgba(var(--ion-color-primary-rgb, 56, 128, 255), 0.08);--background-focused:var(--ion-color-primary, #3880ff);--background-focused-opacity:0.2;--background-hover:var(--ion-color-primary, #3880ff);--background-hover-opacity:0.12}.item-checkbox-checked.sc-ion-select-popover-md{--background-activated:var(--ion-item-color, var(--ion-text-color, #000));--background-focused:var(--ion-item-color, var(--ion-text-color, #000));--background-hover:var(--ion-item-color, var(--ion-text-color, #000));--color:var(--ion-color-primary, #3880ff)}";
763
+ const selectPopoverMdCss = ".sc-ion-select-popover-md-h ion-list.sc-ion-select-popover-md{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}ion-list-header.sc-ion-select-popover-md,ion-label.sc-ion-select-popover-md{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-select-popover-md-h{overflow-y:auto}ion-list.sc-ion-select-popover-md ion-radio.sc-ion-select-popover-md::part(container){opacity:0}ion-item.sc-ion-select-popover-md{--inner-border-width:0}.item-radio-checked.sc-ion-select-popover-md{--background:rgba(var(--ion-color-primary-rgb, 56, 128, 255), 0.08);--background-focused:var(--ion-color-primary, #3880ff);--background-focused-opacity:0.2;--background-hover:var(--ion-color-primary, #3880ff);--background-hover-opacity:0.12}.item-checkbox-checked.sc-ion-select-popover-md{--background-activated:var(--ion-item-color, var(--ion-text-color, #000));--background-focused:var(--ion-item-color, var(--ion-text-color, #000));--background-hover:var(--ion-item-color, var(--ion-text-color, #000));--color:var(--ion-color-primary, #3880ff)}";
764
764
  const IonSelectPopoverMdStyle0 = selectPopoverMdCss;
765
765
 
766
766
  const SelectPopover = class {
@@ -6,7 +6,7 @@ import { E as ENABLE_HTML_CONTENT_DEFAULT, a as sanitizeDOMString } from './conf
6
6
  import { g as getElementRoot, r as raf } from './helpers-be245865.js';
7
7
  import { c as createLockController } from './lock-controller-316928be.js';
8
8
  import { p as printIonWarning } from './index-9b0d46f4.js';
9
- import { O as OVERLAY_GESTURE_PRIORITY, d as createDelegateController, e as createTriggerController, i as isCancel, j as prepareOverlay, k as setOverlayId, f as present, g as dismiss, h as eventMethod, s as safeCall, G as GESTURE } from './overlays-7199c581.js';
9
+ import { O as OVERLAY_GESTURE_PRIORITY, d as createDelegateController, e as createTriggerController, i as isCancel, j as prepareOverlay, k as setOverlayId, f as present, g as dismiss, h as eventMethod, s as safeCall, G as GESTURE } from './overlays-3d2d7d79.js';
10
10
  import { g as getClassMap, c as createColorClasses } from './theme-01f3f29c.js';
11
11
  import { c as config, b as getIonMode } from './ionic-global-778b7863.js';
12
12
  import { c as createAnimation } from './animation-6a0c5338.js';
@@ -190,6 +190,21 @@ const trapKeyboardFocus = (ev, doc) => {
190
190
  */
191
191
  if (lastOverlay === target) {
192
192
  lastOverlay.lastFocus = undefined;
193
+ /**
194
+ * Toasts can be presented from an overlay.
195
+ * However, focus should still be returned to
196
+ * the overlay when clicking a toast. Normally,
197
+ * focus would be returned to the last focusable
198
+ * descendant in the overlay which may not always be
199
+ * the button that the toast was presented from. In this case,
200
+ * the focus may be returned to an unexpected element.
201
+ * To account for this, we make sure to return focus to the
202
+ * last focused element in the overlay if focus is
203
+ * moved to the toast.
204
+ */
205
+ }
206
+ else if (target.tagName === 'ION-TOAST') {
207
+ focusElementInOverlay(lastOverlay.lastFocus, lastOverlay);
193
208
  /**
194
209
  * Otherwise, we must be focusing an element
195
210
  * inside of the overlay. The two possible options
@@ -221,21 +236,6 @@ const trapKeyboardFocus = (ev, doc) => {
221
236
  */
222
237
  if (overlayWrapper.contains(target) || target === overlayRoot.querySelector('ion-backdrop')) {
223
238
  lastOverlay.lastFocus = target;
224
- /**
225
- * Toasts can be presented from an overlay.
226
- * However, focus should still be returned to
227
- * the overlay when clicking a toast. Normally,
228
- * focus would be returned to the last focusable
229
- * descendant in the overlay which may not always be
230
- * the button that the toast was presented from. In this case,
231
- * the focus may be returned to an unexpected element.
232
- * To account for this, we make sure to return focus to the
233
- * last focused element in the overlay if focus is
234
- * moved to the toast.
235
- */
236
- }
237
- else if (target.tagName === 'ION-TOAST') {
238
- focusElementInOverlay(lastOverlay.lastFocus, lastOverlay);
239
239
  }
240
240
  else {
241
241
  /**
@@ -319,7 +319,6 @@ const trapKeyboardFocus = (ev, doc) => {
319
319
  * last focus to equal the active element.
320
320
  */
321
321
  if (lastFocus === doc.activeElement) {
322
- console.log('LAST FOCUS');
323
322
  focusLastDescendant(lastOverlay, lastOverlay);
324
323
  }
325
324
  lastOverlay.lastFocus = doc.activeElement;
@@ -1,4 +1,4 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- export{c as createAnimation}from"./animation-6a0c5338.js";export{a as LIFECYCLE_DID_ENTER,c as LIFECYCLE_DID_LEAVE,L as LIFECYCLE_WILL_ENTER,b as LIFECYCLE_WILL_LEAVE,d as LIFECYCLE_WILL_UNLOAD,g as getIonPageElement}from"./index-22b42a9f.js";export{iosTransitionAnimation}from"./ios.transition-46de8e98.js";export{mdTransitionAnimation}from"./md.transition-804d9596.js";export{g as getTimeGivenProgression}from"./cubic-bezier-fe2083dc.js";export{createGesture}from"./index-2cf77112.js";export{g as getPlatforms,i as initialize,a as isPlatform}from"./ionic-global-778b7863.js";export{c as componentOnReady}from"./helpers-be245865.js";export{I as IonicSafeString,g as getMode,s as setupConfig}from"./config-49c88215.js";export{o as openURL}from"./theme-01f3f29c.js";export{m as menuController}from"./index-aa29e8bf.js";export{b as actionSheetController,a as alertController,l as loadingController,m as modalController,p as pickerController,c as popoverController,t as toastController}from"./overlays-7199c581.js";import"./index-a5d50daf.js";import"./index-73881b51.js";import"./gesture-controller-1bf57181.js";import"./hardware-back-button-f42b9c80.js";import"./index-9b0d46f4.js";import"./framework-delegate-ed4ba327.js";var IonicSlides=function(e){var o=e.swiper,t=e.extendParams;var s={effect:undefined,direction:"horizontal",initialSlide:0,loop:false,parallax:false,slidesPerView:1,spaceBetween:0,speed:300,slidesPerColumn:1,slidesPerColumnFill:"column",slidesPerGroup:1,centeredSlides:false,slidesOffsetBefore:0,slidesOffsetAfter:0,touchEventsTarget:"container",freeMode:false,freeModeMomentum:true,freeModeMomentumRatio:1,freeModeMomentumBounce:true,freeModeMomentumBounceRatio:1,freeModeMomentumVelocityRatio:1,freeModeSticky:false,freeModeMinimumVelocity:.02,autoHeight:false,setWrapperSize:false,zoom:{maxRatio:3,minRatio:1,toggle:false},touchRatio:1,touchAngle:45,simulateTouch:true,touchStartPreventDefault:false,shortSwipes:true,longSwipes:true,longSwipesRatio:.5,longSwipesMs:300,followFinger:true,threshold:0,touchMoveStopPropagation:true,touchReleaseOnEdges:false,iOSEdgeSwipeDetection:false,iOSEdgeSwipeThreshold:20,resistance:true,resistanceRatio:.85,watchSlidesProgress:false,watchSlidesVisibility:false,preventClicks:true,preventClicksPropagation:true,slideToClickedSlide:false,loopAdditionalSlides:0,noSwiping:true,runCallbacksOnInit:true,coverflowEffect:{rotate:50,stretch:0,depth:100,modifier:1,slideShadows:true},flipEffect:{slideShadows:true,limitRotation:true},cubeEffect:{slideShadows:true,shadow:true,shadowOffset:20,shadowScale:.94},fadeEffect:{crossFade:false},a11y:{prevSlideMessage:"Previous slide",nextSlideMessage:"Next slide",firstSlideMessage:"This is the first slide",lastSlideMessage:"This is the last slide"}};if(o.pagination){s.pagination={type:"bullets",clickable:false,hideOnClick:false}}if(o.scrollbar){s.scrollbar={hide:true}}t(s)};export{IonicSlides};
4
+ export{c as createAnimation}from"./animation-6a0c5338.js";export{a as LIFECYCLE_DID_ENTER,c as LIFECYCLE_DID_LEAVE,L as LIFECYCLE_WILL_ENTER,b as LIFECYCLE_WILL_LEAVE,d as LIFECYCLE_WILL_UNLOAD,g as getIonPageElement}from"./index-22b42a9f.js";export{iosTransitionAnimation}from"./ios.transition-46de8e98.js";export{mdTransitionAnimation}from"./md.transition-804d9596.js";export{g as getTimeGivenProgression}from"./cubic-bezier-fe2083dc.js";export{createGesture}from"./index-2cf77112.js";export{g as getPlatforms,i as initialize,a as isPlatform}from"./ionic-global-778b7863.js";export{c as componentOnReady}from"./helpers-be245865.js";export{I as IonicSafeString,g as getMode,s as setupConfig}from"./config-49c88215.js";export{o as openURL}from"./theme-01f3f29c.js";export{m as menuController}from"./index-aa29e8bf.js";export{b as actionSheetController,a as alertController,l as loadingController,m as modalController,p as pickerController,c as popoverController,t as toastController}from"./overlays-3d2d7d79.js";import"./index-a5d50daf.js";import"./index-73881b51.js";import"./gesture-controller-1bf57181.js";import"./hardware-back-button-f42b9c80.js";import"./index-9b0d46f4.js";import"./framework-delegate-ed4ba327.js";var IonicSlides=function(e){var o=e.swiper,t=e.extendParams;var s={effect:undefined,direction:"horizontal",initialSlide:0,loop:false,parallax:false,slidesPerView:1,spaceBetween:0,speed:300,slidesPerColumn:1,slidesPerColumnFill:"column",slidesPerGroup:1,centeredSlides:false,slidesOffsetBefore:0,slidesOffsetAfter:0,touchEventsTarget:"container",freeMode:false,freeModeMomentum:true,freeModeMomentumRatio:1,freeModeMomentumBounce:true,freeModeMomentumBounceRatio:1,freeModeMomentumVelocityRatio:1,freeModeSticky:false,freeModeMinimumVelocity:.02,autoHeight:false,setWrapperSize:false,zoom:{maxRatio:3,minRatio:1,toggle:false},touchRatio:1,touchAngle:45,simulateTouch:true,touchStartPreventDefault:false,shortSwipes:true,longSwipes:true,longSwipesRatio:.5,longSwipesMs:300,followFinger:true,threshold:0,touchMoveStopPropagation:true,touchReleaseOnEdges:false,iOSEdgeSwipeDetection:false,iOSEdgeSwipeThreshold:20,resistance:true,resistanceRatio:.85,watchSlidesProgress:false,watchSlidesVisibility:false,preventClicks:true,preventClicksPropagation:true,slideToClickedSlide:false,loopAdditionalSlides:0,noSwiping:true,runCallbacksOnInit:true,coverflowEffect:{rotate:50,stretch:0,depth:100,modifier:1,slideShadows:true},flipEffect:{slideShadows:true,limitRotation:true},cubeEffect:{slideShadows:true,shadow:true,shadowOffset:20,shadowScale:.94},fadeEffect:{crossFade:false},a11y:{prevSlideMessage:"Previous slide",nextSlideMessage:"Next slide",firstSlideMessage:"This is the first slide",lastSlideMessage:"This is the last slide"}};if(o.pagination){s.pagination={type:"bullets",clickable:false,hideOnClick:false}}if(o.scrollbar){s.scrollbar={hide:true}}t(s)};export{IonicSlides};