@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.
- package/components/overlays.js +15 -16
- package/components/select-popover.js +2 -2
- package/dist/cjs/index.cjs.js +1 -1
- package/dist/cjs/ion-action-sheet.cjs.entry.js +1 -1
- package/dist/cjs/ion-alert.cjs.entry.js +1 -1
- package/dist/cjs/ion-datetime_3.cjs.entry.js +1 -1
- package/dist/cjs/ion-loading.cjs.entry.js +1 -1
- package/dist/cjs/ion-menu_3.cjs.entry.js +1 -1
- package/dist/cjs/ion-modal.cjs.entry.js +1 -1
- package/dist/cjs/ion-popover.cjs.entry.js +1 -1
- package/dist/cjs/ion-select_3.cjs.entry.js +3 -3
- package/dist/cjs/ion-toast.cjs.entry.js +1 -1
- package/dist/cjs/{overlays-37b51f7b.js → overlays-85c4c41c.js} +15 -16
- package/dist/collection/components/select-popover/select-popover.ios.css +10 -0
- package/dist/collection/components/select-popover/select-popover.md.css +10 -0
- package/dist/collection/utils/overlays.js +15 -16
- package/dist/collection/utils/test/overlays/overlays.e2e.js +85 -0
- package/dist/docs.json +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/ion-action-sheet.entry.js +1 -1
- package/dist/esm/ion-alert.entry.js +1 -1
- package/dist/esm/ion-datetime_3.entry.js +1 -1
- package/dist/esm/ion-loading.entry.js +1 -1
- package/dist/esm/ion-menu_3.entry.js +1 -1
- package/dist/esm/ion-modal.entry.js +1 -1
- package/dist/esm/ion-popover.entry.js +1 -1
- package/dist/esm/ion-select_3.entry.js +3 -3
- package/dist/esm/ion-toast.entry.js +1 -1
- package/dist/esm/{overlays-7199c581.js → overlays-3d2d7d79.js} +15 -16
- package/dist/esm-es5/index.js +1 -1
- package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
- package/dist/esm-es5/ion-alert.entry.js +1 -1
- package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
- package/dist/esm-es5/ion-loading.entry.js +1 -1
- package/dist/esm-es5/ion-menu_3.entry.js +1 -1
- package/dist/esm-es5/ion-modal.entry.js +1 -1
- package/dist/esm-es5/ion-popover.entry.js +1 -1
- package/dist/esm-es5/ion-select_3.entry.js +1 -1
- package/dist/esm-es5/ion-toast.entry.js +1 -1
- package/dist/esm-es5/overlays-3d2d7d79.js +4 -0
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/{p-3fe26591.entry.js → p-0982c56e.entry.js} +1 -1
- package/dist/ionic/{p-7582a199.entry.js → p-0b5f39ac.entry.js} +1 -1
- package/dist/ionic/p-0b955124.system.js +1 -1
- package/dist/ionic/{p-fc34f652.system.entry.js → p-179e9b0b.system.entry.js} +1 -1
- package/dist/ionic/{p-e9af70cf.entry.js → p-303d0415.entry.js} +1 -1
- package/dist/ionic/{p-7d3b78b1.entry.js → p-31ba3048.entry.js} +1 -1
- package/dist/ionic/{p-988c8cc8.system.entry.js → p-33c555bf.system.entry.js} +1 -1
- package/dist/ionic/{p-331b4e02.system.entry.js → p-50484477.system.entry.js} +1 -1
- package/dist/ionic/{p-089b2b36.system.entry.js → p-526768bb.system.entry.js} +1 -1
- package/dist/ionic/{p-f37c8bdb.entry.js → p-84f0a84b.entry.js} +1 -1
- package/dist/ionic/{p-e2b646df.system.entry.js → p-88538d89.system.entry.js} +1 -1
- package/dist/ionic/p-a216ea97.js +4 -0
- package/dist/ionic/p-adb145d7.system.js +4 -0
- package/dist/ionic/{p-523ef897.system.entry.js → p-aece6698.system.entry.js} +1 -1
- package/dist/ionic/{p-00b14d2c.system.entry.js → p-b6b80abd.system.entry.js} +1 -1
- package/dist/ionic/{p-9353bb82.entry.js → p-c2627ddf.entry.js} +1 -1
- package/dist/ionic/{p-6c6144c7.system.entry.js → p-cf2031ef.system.entry.js} +1 -1
- package/dist/ionic/{p-ea737614.entry.js → p-d5e3a2b5.entry.js} +1 -1
- package/dist/ionic/{p-8e9c61d0.entry.js → p-dffdc58f.entry.js} +1 -1
- package/dist/ionic/{p-a11f7f68.system.entry.js → p-e453b029.system.entry.js} +1 -1
- package/dist/ionic/{p-6482ab9e.entry.js → p-e60c1669.entry.js} +1 -1
- package/dist/ionic/{p-d29aecf3.system.js → p-ed0a487f.system.js} +1 -1
- package/hydrate/index.js +17 -18
- package/package.json +1 -1
- package/dist/esm-es5/overlays-7199c581.js +0 -4
- package/dist/ionic/p-48de5c0d.js +0 -4
- package/dist/ionic/p-6444cade.system.js +0 -4
package/components/overlays.js
CHANGED
|
@@ -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 {
|
package/dist/cjs/index.cjs.js
CHANGED
|
@@ -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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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;
|
package/dist/esm-es5/index.js
CHANGED
|
@@ -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-
|
|
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};
|