@ionic/core 8.8.6-dev.11777572994.1147595d → 8.8.6-nightly.20260501
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/index.js +1 -1
- package/components/ion-action-sheet.js +1 -1
- package/components/ion-alert.js +1 -1
- package/components/ion-back-button.js +1 -1
- package/components/ion-button.js +1 -1
- package/components/ion-card.js +1 -1
- package/components/ion-chip.js +1 -1
- package/components/ion-datetime-button.js +1 -1
- package/components/ion-datetime.js +1 -1
- package/components/ion-fab-button.js +1 -1
- package/components/ion-infinite-scroll-content.js +1 -1
- package/components/ion-input-password-toggle.js +1 -1
- package/components/ion-item-option.js +1 -1
- package/components/ion-item.js +1 -1
- package/components/ion-loading.js +1 -1
- package/components/ion-menu-button.js +1 -1
- package/components/ion-menu.js +1 -1
- package/components/ion-modal.js +1 -1
- package/components/ion-picker-legacy-column.d.ts +11 -0
- package/components/ion-picker-legacy-column.js +4 -0
- package/components/ion-picker-legacy.d.ts +11 -0
- package/components/ion-picker-legacy.js +4 -0
- package/components/ion-popover.js +1 -1
- package/components/ion-progress-bar.js +1 -1
- package/components/ion-radio.js +1 -1
- package/components/ion-range.js +1 -1
- package/components/ion-refresher-content.js +1 -1
- package/components/ion-refresher.js +1 -1
- package/components/ion-reorder-group.js +1 -1
- package/components/ion-reorder.js +1 -1
- package/components/ion-ripple-effect.js +1 -1
- package/components/ion-router-link.js +1 -1
- package/components/ion-router-outlet.js +1 -1
- package/components/ion-row.js +1 -1
- package/components/ion-searchbar.js +1 -1
- package/components/ion-segment-button.js +1 -1
- package/components/ion-segment-content.js +1 -1
- package/components/ion-segment-view.js +1 -1
- package/components/ion-segment.js +1 -1
- package/components/ion-select-modal.js +1 -1
- package/components/ion-select-option.js +1 -1
- package/components/ion-select-popover.js +1 -1
- package/components/ion-select.js +1 -1
- package/components/ion-skeleton-text.js +1 -1
- package/components/ion-spinner.js +1 -1
- package/components/ion-split-pane.js +1 -1
- package/components/ion-tab-bar.js +1 -1
- package/components/ion-tab-button.js +1 -1
- package/components/ion-tab.js +1 -1
- package/components/ion-tabs.js +1 -1
- package/components/ion-text.js +1 -1
- package/components/ion-textarea.js +1 -1
- package/components/ion-thumbnail.js +1 -1
- package/components/ion-title.js +1 -1
- package/components/ion-toast.js +1 -1
- package/components/ion-toggle.js +1 -1
- package/components/ion-toolbar.js +1 -1
- package/components/p-1KVKSLu5.js +4 -0
- package/components/{p-DbISMmiI.js → p-BSB38Tek.js} +1 -1
- package/components/{p-CDXBV7oG.js → p-BTeL5HCK.js} +1 -1
- package/components/p-BegtE7nr.js +4 -0
- package/components/{p-Ct3FLpwo.js → p-BlNv564p.js} +1 -1
- package/components/p-CH0NYjKq.js +4 -0
- package/components/{p-DL2W2mt3.js → p-CgfaEEem.js} +1 -1
- package/components/p-Cq8cQ0NL.js +4 -0
- package/components/{p-nPoOPlPt.js → p-Cyxa_4PV.js} +1 -1
- package/components/{p-OOMJP0jy.js → p-D-cP12ZN.js} +1 -1
- package/components/p-DHsZWn1l.js +4 -0
- package/components/{p-BeL7B3Bb.js → p-DJMZehmW.js} +1 -1
- package/components/p-DUqnmRFi.js +4 -0
- package/components/{p-DrIm1s9R.js → p-fpbh6w3f.js} +1 -1
- package/components/{p-DxXmSp9Y.js → p-kvaDs24J.js} +1 -1
- package/dist/cjs/index.cjs.js +2 -1
- package/dist/cjs/ion-action-sheet.cjs.entry.js +4 -8
- package/dist/cjs/ion-alert.cjs.entry.js +3 -7
- package/dist/cjs/ion-app_8.cjs.entry.js +9 -23
- package/dist/cjs/ion-avatar_3.cjs.entry.js +1 -1
- package/dist/cjs/ion-col_3.cjs.entry.js +1 -1
- package/dist/cjs/{ion-datetime.cjs.entry.js → ion-datetime_3.cjs.entry.js} +639 -1
- package/dist/cjs/ion-item_8.cjs.entry.js +2 -2
- package/dist/cjs/ion-loading.cjs.entry.js +3 -7
- package/dist/cjs/ion-menu_3.cjs.entry.js +1 -1
- package/dist/cjs/ion-modal.cjs.entry.js +5 -9
- package/dist/cjs/ion-popover.cjs.entry.js +3 -7
- package/dist/cjs/ion-progress-bar.cjs.entry.js +1 -1
- package/dist/cjs/ion-radio_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-range.cjs.entry.js +3 -3
- package/dist/cjs/ion-refresher_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-reorder_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-ripple-effect.cjs.entry.js +1 -1
- package/dist/cjs/ion-route_4.cjs.entry.js +2 -2
- package/dist/cjs/ion-searchbar.cjs.entry.js +4 -4
- package/dist/cjs/ion-segment-content.cjs.entry.js +1 -1
- package/dist/cjs/ion-segment-view.cjs.entry.js +2 -2
- package/dist/cjs/ion-segment_2.cjs.entry.js +4 -4
- package/dist/cjs/ion-select-modal.cjs.entry.js +2 -2
- package/dist/cjs/ion-select_3.cjs.entry.js +5 -5
- package/dist/cjs/ion-spinner.cjs.entry.js +1 -1
- package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +4 -4
- package/dist/cjs/ion-tab_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-text.cjs.entry.js +2 -2
- package/dist/cjs/ion-textarea.cjs.entry.js +2 -2
- package/dist/cjs/ion-toast.cjs.entry.js +3 -3
- package/dist/cjs/ion-toggle.cjs.entry.js +3 -3
- package/dist/cjs/ionic.cjs.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{overlays-DIfHxkst.js → overlays-C2jiBSNQ.js} +7 -26
- package/dist/collection/collection-manifest.json +9 -5
- package/dist/collection/components/action-sheet/action-sheet.js +4 -8
- package/dist/collection/components/alert/alert.js +3 -7
- package/dist/collection/components/loading/loading.js +3 -7
- package/dist/collection/components/modal/modal.js +5 -9
- package/dist/collection/components/picker-legacy/animations/ios.enter.js +27 -0
- package/dist/collection/components/picker-legacy/animations/ios.leave.js +23 -0
- package/dist/collection/components/picker-legacy/picker-interface.js +1 -0
- package/dist/collection/components/picker-legacy/picker.ios.css +300 -0
- package/dist/collection/components/picker-legacy/picker.js +890 -0
- package/dist/collection/components/picker-legacy/picker.md.css +287 -0
- package/dist/collection/components/picker-legacy-column/picker-column.ios.css +231 -0
- package/dist/collection/components/picker-legacy-column/picker-column.js +422 -0
- package/dist/collection/components/picker-legacy-column/picker-column.md.css +222 -0
- package/dist/collection/components/picker-legacy-column/test/test.utils.js +43 -0
- package/dist/collection/components/popover/popover.js +3 -7
- package/dist/collection/components/progress-bar/progress-bar.js +1 -1
- package/dist/collection/components/radio/radio.js +4 -4
- package/dist/collection/components/range/range.js +3 -3
- package/dist/collection/components/refresher/refresher.js +1 -1
- package/dist/collection/components/refresher-content/refresher-content.js +1 -1
- package/dist/collection/components/reorder/reorder.js +1 -1
- package/dist/collection/components/reorder-group/reorder-group.js +1 -1
- package/dist/collection/components/ripple-effect/ripple-effect.js +1 -1
- package/dist/collection/components/router-link/router-link.js +2 -2
- package/dist/collection/components/router-outlet/router-outlet.js +5 -38
- package/dist/collection/components/row/row.js +1 -1
- package/dist/collection/components/searchbar/searchbar.js +4 -4
- package/dist/collection/components/segment/segment.js +2 -2
- package/dist/collection/components/segment-button/segment-button.js +2 -2
- package/dist/collection/components/segment-content/segment-content.js +1 -1
- package/dist/collection/components/segment-view/segment-view.js +2 -2
- package/dist/collection/components/select/select.js +2 -2
- package/dist/collection/components/select-modal/select-modal.js +1 -1
- package/dist/collection/components/select-option/select-option.js +1 -1
- package/dist/collection/components/select-popover/select-popover.js +1 -1
- package/dist/collection/components/skeleton-text/skeleton-text.js +2 -2
- package/dist/collection/components/spinner/spinner.js +1 -1
- package/dist/collection/components/split-pane/split-pane.js +2 -2
- package/dist/collection/components/tab/tab.js +2 -2
- package/dist/collection/components/tab-bar/tab-bar.js +2 -2
- package/dist/collection/components/tab-button/tab-button.js +2 -2
- package/dist/collection/components/tabs/tabs.js +1 -1
- package/dist/collection/components/text/text.js +2 -2
- package/dist/collection/components/textarea/textarea.js +2 -2
- package/dist/collection/components/thumbnail/thumbnail.js +1 -1
- package/dist/collection/components/title/title.js +2 -2
- package/dist/collection/components/toast/toast.js +2 -2
- package/dist/collection/components/toggle/toggle.js +3 -3
- package/dist/collection/components/toolbar/toolbar.js +2 -2
- package/dist/collection/index.js +1 -1
- package/dist/collection/utils/overlays.js +6 -25
- package/dist/docs.json +941 -28
- package/dist/esm/{index-AlrZKoWR.js → index-DV3sJJW8.js} +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/ion-accordion_2.entry.js +1 -1
- package/dist/esm/ion-action-sheet.entry.js +4 -8
- package/dist/esm/ion-alert.entry.js +3 -7
- package/dist/esm/ion-app_8.entry.js +9 -23
- package/dist/esm/ion-avatar_3.entry.js +1 -1
- package/dist/esm/ion-back-button.entry.js +1 -1
- package/dist/esm/ion-breadcrumb_2.entry.js +1 -1
- package/dist/esm/ion-col_3.entry.js +1 -1
- package/dist/esm/{ion-datetime.entry.js → ion-datetime_3.entry.js} +641 -5
- package/dist/esm/ion-fab_3.entry.js +1 -1
- package/dist/esm/ion-input-password-toggle.entry.js +1 -1
- package/dist/esm/ion-input.entry.js +1 -1
- package/dist/esm/ion-item_8.entry.js +3 -3
- package/dist/esm/ion-loading.entry.js +3 -7
- package/dist/esm/ion-menu_3.entry.js +2 -2
- package/dist/esm/ion-modal.entry.js +5 -9
- package/dist/esm/ion-popover.entry.js +3 -7
- package/dist/esm/ion-progress-bar.entry.js +1 -1
- package/dist/esm/ion-radio_2.entry.js +3 -3
- package/dist/esm/ion-range.entry.js +3 -3
- package/dist/esm/ion-refresher_2.entry.js +3 -3
- package/dist/esm/ion-reorder_2.entry.js +3 -3
- package/dist/esm/ion-ripple-effect.entry.js +1 -1
- package/dist/esm/ion-route_4.entry.js +2 -2
- package/dist/esm/ion-searchbar.entry.js +5 -5
- package/dist/esm/ion-segment-content.entry.js +1 -1
- package/dist/esm/ion-segment-view.entry.js +2 -2
- package/dist/esm/ion-segment_2.entry.js +4 -4
- package/dist/esm/ion-select-modal.entry.js +2 -2
- package/dist/esm/ion-select_3.entry.js +6 -6
- package/dist/esm/ion-spinner.entry.js +1 -1
- package/dist/esm/ion-split-pane.entry.js +2 -2
- package/dist/esm/ion-tab-bar_2.entry.js +4 -4
- package/dist/esm/ion-tab_2.entry.js +3 -3
- package/dist/esm/ion-text.entry.js +2 -2
- package/dist/esm/ion-textarea.entry.js +2 -2
- package/dist/esm/ion-toast.entry.js +3 -3
- package/dist/esm/ion-toggle.entry.js +4 -4
- package/dist/esm/ionic.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{overlays-BDGzTP3L.js → overlays-F8GHPo-e.js} +7 -26
- package/dist/html.html-data.json +59 -4
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/{p-f17d05e3.entry.js → p-031b76f7.entry.js} +1 -1
- package/dist/ionic/{p-ede28b71.entry.js → p-07506134.entry.js} +1 -1
- package/dist/ionic/{p-e9dd191b.entry.js → p-084c25b2.entry.js} +1 -1
- package/dist/ionic/{p-fed27c64.entry.js → p-0d8b5c38.entry.js} +1 -1
- package/dist/ionic/p-16813ce7.entry.js +4 -0
- package/dist/ionic/p-1b02923f.entry.js +4 -0
- package/dist/ionic/{p-898f9d11.entry.js → p-1b169fb6.entry.js} +1 -1
- package/dist/ionic/p-23fac490.entry.js +4 -0
- package/dist/ionic/{p-7fe42b71.entry.js → p-28a9e720.entry.js} +1 -1
- package/dist/ionic/{p-3b58996c.entry.js → p-294f4bb5.entry.js} +1 -1
- package/dist/ionic/{p-f7762013.entry.js → p-2a68388b.entry.js} +1 -1
- package/dist/ionic/p-2f5a8140.entry.js +4 -0
- package/dist/ionic/{p-34b3a309.entry.js → p-2fd110aa.entry.js} +1 -1
- package/dist/ionic/{p-4ed63122.entry.js → p-301c43f8.entry.js} +1 -1
- package/dist/ionic/p-4c67ce4c.entry.js +4 -0
- package/dist/ionic/p-51c11c47.entry.js +4 -0
- package/dist/ionic/p-53f750a5.entry.js +4 -0
- package/dist/ionic/p-6b701daa.entry.js +4 -0
- package/dist/ionic/{p-19adf785.entry.js → p-7620be24.entry.js} +1 -1
- package/dist/ionic/{p-18b5d5ff.entry.js → p-771b27a5.entry.js} +1 -1
- package/dist/ionic/p-7ca71c83.entry.js +4 -0
- package/dist/ionic/{p-66494f9b.entry.js → p-80cac7a2.entry.js} +1 -1
- package/dist/ionic/{p-506038d3.entry.js → p-8fda6a62.entry.js} +1 -1
- package/dist/ionic/{p-7f269aff.entry.js → p-9cbc6f1f.entry.js} +1 -1
- package/dist/ionic/{p-b6f16f18.entry.js → p-9cdbabbb.entry.js} +1 -1
- package/dist/ionic/p-DTPR1Wpn.js +4 -0
- package/dist/ionic/{p-AlrZKoWR.js → p-DV3sJJW8.js} +1 -1
- package/dist/ionic/{p-dc198c3a.entry.js → p-a84f2d21.entry.js} +1 -1
- package/dist/ionic/{p-b8f4a31c.entry.js → p-aa812c4b.entry.js} +1 -1
- package/dist/ionic/{p-30f5ad9e.entry.js → p-b325a113.entry.js} +1 -1
- package/dist/ionic/p-b5ea8cdd.entry.js +4 -0
- package/dist/ionic/{p-1d2163ad.entry.js → p-bcaa827e.entry.js} +1 -1
- package/dist/ionic/{p-6e99ae8d.entry.js → p-c3cce9d8.entry.js} +1 -1
- package/dist/ionic/{p-b553828c.entry.js → p-d4e8b473.entry.js} +1 -1
- package/dist/ionic/p-e0287f41.entry.js +4 -0
- package/dist/ionic/{p-6da572e7.entry.js → p-e863ffe8.entry.js} +1 -1
- package/dist/ionic/p-f2deaceb.entry.js +4 -0
- package/dist/ionic/{p-460fbe5b.entry.js → p-f69a5f71.entry.js} +1 -1
- package/dist/ionic/{p-4ea520a4.entry.js → p-f8186550.entry.js} +1 -1
- package/dist/ionic/{p-8a3a936b.entry.js → p-fdbc90d4.entry.js} +1 -1
- package/dist/types/components/picker-legacy/animations/ios.enter.d.ts +5 -0
- package/dist/types/components/picker-legacy/animations/ios.leave.d.ts +5 -0
- package/dist/types/components/picker-legacy/picker-interface.d.ts +52 -0
- package/dist/types/components/picker-legacy/picker.d.ts +158 -0
- package/dist/types/components/picker-legacy-column/picker-column.d.ts +46 -0
- package/dist/types/components/picker-legacy-column/test/test.utils.d.ts +9 -0
- package/dist/types/components/router-outlet/router-outlet.d.ts +0 -7
- package/dist/types/components.d.ts +272 -9
- package/dist/types/index.d.ts +1 -1
- package/dist/types/interface.d.ts +1 -0
- package/dist/types/utils/config.d.ts +8 -0
- package/dist/types/utils/overlays.d.ts +9 -11
- package/hydrate/index.js +788 -164
- package/hydrate/index.mjs +788 -164
- package/package.json +3 -3
- package/components/p-BHlzkIpO.js +0 -4
- package/components/p-Bg7NsGS9.js +0 -4
- package/components/p-CWpbvhwY.js +0 -4
- package/components/p-DBHdZu4y.js +0 -4
- package/components/p-DPdqO7R6.js +0 -4
- package/dist/ionic/p-2089f9cb.entry.js +0 -4
- package/dist/ionic/p-4c8d8c55.entry.js +0 -4
- package/dist/ionic/p-4f3a8ccf.entry.js +0 -4
- package/dist/ionic/p-528d4c1d.entry.js +0 -4
- package/dist/ionic/p-5430ae94.entry.js +0 -4
- package/dist/ionic/p-5c2cc090.entry.js +0 -4
- package/dist/ionic/p-6406d5a9.entry.js +0 -4
- package/dist/ionic/p-7f9db51b.entry.js +0 -4
- package/dist/ionic/p-Csx_Ej2k.js +0 -4
- package/dist/ionic/p-a39db980.entry.js +0 -4
- package/dist/ionic/p-b5e3e1f7.entry.js +0 -4
- package/dist/ionic/p-cce0cd26.entry.js +0 -4
- package/dist/ionic/p-d92ba088.entry.js +0 -4
|
@@ -5,7 +5,7 @@ import { Host, h, readTask } from "@stencil/core";
|
|
|
5
5
|
import { createButtonActiveGesture } from "../../utils/gesture/button-active";
|
|
6
6
|
import { raf } from "../../utils/helpers";
|
|
7
7
|
import { createLockController } from "../../utils/lock-controller";
|
|
8
|
-
import { BACKDROP,
|
|
8
|
+
import { BACKDROP, createDelegateController, createTriggerController, dismiss, eventMethod, isCancel, prepareOverlay, present, safeCall, setOverlayId, } from "../../utils/overlays";
|
|
9
9
|
import { getClassMap } from "../../utils/theme";
|
|
10
10
|
import { getIonMode } from "../../global/ionic-global";
|
|
11
11
|
import { iosEnterAnimation } from "./animations/ios.enter";
|
|
@@ -284,10 +284,6 @@ export class ActionSheet {
|
|
|
284
284
|
this.gesture = undefined;
|
|
285
285
|
}
|
|
286
286
|
this.triggerController.removeClickListener();
|
|
287
|
-
// Clean up aria-hidden if removed without dismiss() being called
|
|
288
|
-
if (this.presented) {
|
|
289
|
-
cleanupRootFocusTrapAccessibility();
|
|
290
|
-
}
|
|
291
287
|
}
|
|
292
288
|
componentWillLoad() {
|
|
293
289
|
var _a;
|
|
@@ -391,12 +387,12 @@ export class ActionSheet {
|
|
|
391
387
|
const cancelButton = allButtons.find((b) => b.role === 'cancel');
|
|
392
388
|
const buttons = allButtons.filter((b) => b.role !== 'cancel');
|
|
393
389
|
const headerID = `action-sheet-${overlayIndex}-header`;
|
|
394
|
-
return (h(Host, Object.assign({ key: '
|
|
390
|
+
return (h(Host, Object.assign({ key: '173fcff5b1da7c33c267de4667591c946b8c8d03', role: "dialog", "aria-modal": "true", "aria-labelledby": header !== undefined ? headerID : null, tabindex: "-1" }, htmlAttributes, { style: {
|
|
395
391
|
zIndex: `${20000 + this.overlayIndex}`,
|
|
396
|
-
}, class: Object.assign(Object.assign({ [mode]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'action-sheet-translucent': this.translucent }), onIonActionSheetWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }), h("ion-backdrop", { key: '
|
|
392
|
+
}, class: Object.assign(Object.assign({ [mode]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'action-sheet-translucent': this.translucent }), onIonActionSheetWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }), h("ion-backdrop", { key: '521ede659f747864f6c974e09016436eceb7158c', tappable: this.backdropDismiss }), h("div", { key: '7a7946fc434bc444f16a70638f5e948c69d33fcd', tabindex: "0", "aria-hidden": "true" }), h("div", { key: 'bcff39a580489dbafa255842e57aa8602c6d0f18', class: "action-sheet-wrapper ion-overlay-wrapper", ref: (el) => (this.wrapperEl = el) }, h("div", { key: '84bba13ce14261f0f0daa3f9c77648c9e7f36e0e', class: "action-sheet-container" }, h("div", { key: 'd9c8ac404fd6719a7adf8cb36549f67616f9a0c4', class: "action-sheet-group", ref: (el) => (this.groupEl = el), role: hasRadioButtons ? 'radiogroup' : undefined }, header !== undefined && (h("div", { key: '180433a8ad03ef5c54728a1a8f34715b6921d658', id: headerID, class: {
|
|
397
393
|
'action-sheet-title': true,
|
|
398
394
|
'action-sheet-has-sub-title': this.subHeader !== undefined,
|
|
399
|
-
} }, header, this.subHeader && h("div", { key: '
|
|
395
|
+
} }, header, this.subHeader && h("div", { key: '7138e79e61b1a8f42bc5a9175c57fa2f15d7ec5a', class: "action-sheet-sub-title" }, this.subHeader))), this.renderActionSheetButtons(buttons)), cancelButton && (h("div", { key: 'b617c722f5b8028d73ed34b69310f312c65f34a7', class: "action-sheet-group action-sheet-group-cancel" }, h("button", Object.assign({ key: 'd0dd876fc48815df3710413c201c0b445a8e16c0' }, cancelButton.htmlAttributes, { type: "button", class: buttonClass(cancelButton), onClick: () => this.buttonClick(cancelButton) }), h("span", { key: 'e7b960157cc6fc5fe92a12090b2be55e8ae072e4', class: "action-sheet-button-inner" }, cancelButton.icon && (h("ion-icon", { key: '05498ffc60cab911dbff0ecbc6168dea59ada9a5', icon: cancelButton.icon, "aria-hidden": "true", lazy: false, class: "action-sheet-icon" })), cancelButton.text), mode === 'md' && h("ion-ripple-effect", { key: '3d401346cea301be4ca03671f7370f6f4b0b6bde' })))))), h("div", { key: '971f3c5fcc07f36c28eb469a47ec0290c692e139', tabindex: "0", "aria-hidden": "true" })));
|
|
400
396
|
}
|
|
401
397
|
static get is() { return "ion-action-sheet"; }
|
|
402
398
|
static get encapsulation() { return "scoped"; }
|
|
@@ -7,7 +7,7 @@ import { createButtonActiveGesture } from "../../utils/gesture/button-active";
|
|
|
7
7
|
import { raf } from "../../utils/helpers";
|
|
8
8
|
import { createLockController } from "../../utils/lock-controller";
|
|
9
9
|
import { printIonWarning } from "../../utils/logging/index";
|
|
10
|
-
import {
|
|
10
|
+
import { createDelegateController, createTriggerController, BACKDROP, dismiss, eventMethod, isCancel, prepareOverlay, present, safeCall, setOverlayId, } from "../../utils/overlays";
|
|
11
11
|
import { sanitizeDOMString } from "../../utils/sanitization/index";
|
|
12
12
|
import { getClassMap } from "../../utils/theme";
|
|
13
13
|
import { config } from "../../global/config";
|
|
@@ -207,10 +207,6 @@ export class Alert {
|
|
|
207
207
|
this.gesture.destroy();
|
|
208
208
|
this.gesture = undefined;
|
|
209
209
|
}
|
|
210
|
-
// Clean up aria-hidden if removed without dismiss() being called
|
|
211
|
-
if (this.presented) {
|
|
212
|
-
cleanupRootFocusTrapAccessibility();
|
|
213
|
-
}
|
|
214
210
|
}
|
|
215
211
|
componentDidLoad() {
|
|
216
212
|
/**
|
|
@@ -444,9 +440,9 @@ export class Alert {
|
|
|
444
440
|
* If neither are defined, do not set aria-labelledby.
|
|
445
441
|
*/
|
|
446
442
|
const ariaLabelledBy = header && subHeader ? `${hdrId} ${subHdrId}` : header ? hdrId : subHeader ? subHdrId : null;
|
|
447
|
-
return (h(Host, { key: '
|
|
443
|
+
return (h(Host, { key: '6025440b9cd369d4fac89e7e4296c84a10a0b8e0', tabindex: "-1", style: {
|
|
448
444
|
zIndex: `${20000 + overlayIndex}`,
|
|
449
|
-
}, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'alert-translucent': this.translucent }), onIonAlertWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }, h("ion-backdrop", { key: '
|
|
445
|
+
}, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'alert-translucent': this.translucent }), onIonAlertWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }, h("ion-backdrop", { key: '3cd5ca8b99cb95b11dd22ab41a820d841142896f', tappable: this.backdropDismiss }), h("div", { key: '4cc62ae6e21424057d22aeef1e8fc77011e77cd5', tabindex: "0", "aria-hidden": "true" }), h("div", Object.assign({ key: '364057a69f25aa88904df17bdcf7e5bf714e7830', class: "alert-wrapper ion-overlay-wrapper", role: role, "aria-modal": "true", "aria-labelledby": ariaLabelledBy, "aria-describedby": message !== undefined ? msgId : null, tabindex: "0", ref: (el) => (this.wrapperEl = el) }, htmlAttributes), h("div", { key: '78694e3c0db2d408df3899fb1a90859bcc8d14cc', class: "alert-head" }, header && (h("h2", { key: 'ec88ff3e4e1ea871b5975133fdcf4cac38b05e0f', id: hdrId, class: "alert-title" }, header)), subHeader && !header && (h("h2", { key: '9b09bc8bb68af255ef8b7d22587acc946148e544', id: subHdrId, class: "alert-sub-title" }, subHeader)), subHeader && header && (h("h3", { key: '99abe815f75d2df7f1b77c0df9f3436724fea76f', id: subHdrId, class: "alert-sub-title" }, subHeader))), this.renderAlertMessage(msgId), this.renderAlertInputs(), this.renderAlertButtons()), h("div", { key: 'a43d0c22c0e46b1ef911f92ffeb253d7911b85f7', tabindex: "0", "aria-hidden": "true" })));
|
|
450
446
|
}
|
|
451
447
|
static get is() { return "ion-alert"; }
|
|
452
448
|
static get encapsulation() { return "scoped"; }
|
|
@@ -5,7 +5,7 @@ import { Host, h } from "@stencil/core";
|
|
|
5
5
|
import { ENABLE_HTML_CONTENT_DEFAULT } from "../../utils/config";
|
|
6
6
|
import { raf } from "../../utils/helpers";
|
|
7
7
|
import { createLockController } from "../../utils/lock-controller";
|
|
8
|
-
import { BACKDROP,
|
|
8
|
+
import { BACKDROP, dismiss, eventMethod, prepareOverlay, present, createDelegateController, createTriggerController, setOverlayId, } from "../../utils/overlays";
|
|
9
9
|
import { sanitizeDOMString } from "../../utils/sanitization/index";
|
|
10
10
|
import { getClassMap } from "../../utils/theme";
|
|
11
11
|
import { config } from "../../global/config";
|
|
@@ -114,10 +114,6 @@ export class Loading {
|
|
|
114
114
|
}
|
|
115
115
|
disconnectedCallback() {
|
|
116
116
|
this.triggerController.removeClickListener();
|
|
117
|
-
// Clean up aria-hidden if removed without dismiss() being called
|
|
118
|
-
if (this.presented) {
|
|
119
|
-
cleanupRootFocusTrapAccessibility();
|
|
120
|
-
}
|
|
121
117
|
}
|
|
122
118
|
/**
|
|
123
119
|
* Present the loading overlay after it has been created.
|
|
@@ -183,9 +179,9 @@ export class Loading {
|
|
|
183
179
|
* Otherwise, don't set aria-labelledby.
|
|
184
180
|
*/
|
|
185
181
|
const ariaLabelledBy = message !== undefined ? msgId : null;
|
|
186
|
-
return (h(Host, Object.assign({ key: '
|
|
182
|
+
return (h(Host, Object.assign({ key: 'f86ddbc600cb5c396b7de38fb5f49625388c3c3f', role: "dialog", "aria-modal": "true", "aria-labelledby": ariaLabelledBy, tabindex: "-1" }, htmlAttributes, { style: {
|
|
187
183
|
zIndex: `${40000 + this.overlayIndex}`,
|
|
188
|
-
}, onIonBackdropTap: this.onBackdropTap, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'loading-translucent': this.translucent }) }), h("ion-backdrop", { key: '
|
|
184
|
+
}, onIonBackdropTap: this.onBackdropTap, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'loading-translucent': this.translucent }) }), h("ion-backdrop", { key: 'b53727aaddc37ef3c685fcc150c6d5193290a847', visible: this.showBackdrop, tappable: this.backdropDismiss }), h("div", { key: '4c61bede8e0a4e47daa6f1f9d0f364ef6aec0bc3', tabindex: "0", "aria-hidden": "true" }), h("div", { key: '84e51ceb07118f1eaeb757df28801c255496931b', class: "loading-wrapper ion-overlay-wrapper" }, spinner && (h("div", { key: 'fc97f1912e0fc558b7c309a5bc084415f5f620b2', class: "loading-spinner" }, h("ion-spinner", { key: '6e186d856cd3f10f22c3e317ef00f31b4216459c', name: spinner, "aria-hidden": "true" }))), message !== undefined && this.renderLoadingMessage(msgId)), h("div", { key: 'dcbe9d9a619daa1c08174e73827bdabeb59dde92', tabindex: "0", "aria-hidden": "true" })));
|
|
189
185
|
}
|
|
190
186
|
static get is() { return "ion-loading"; }
|
|
191
187
|
static get encapsulation() { return "scoped"; }
|
|
@@ -8,7 +8,7 @@ import { raf, inheritAttributes, hasLazyBuild, getElementRoot } from "../../util
|
|
|
8
8
|
import { createLockController } from "../../utils/lock-controller";
|
|
9
9
|
import { printIonWarning } from "../../utils/logging/index";
|
|
10
10
|
import { Style as StatusBarStyle, StatusBar } from "../../utils/native/status-bar";
|
|
11
|
-
import {
|
|
11
|
+
import { GESTURE, BACKDROP, dismiss, eventMethod, prepareOverlay, present, createTriggerController, setOverlayId, FOCUS_TRAP_DISABLE_CLASS, } from "../../utils/overlays";
|
|
12
12
|
import { getClassMap } from "../../utils/theme";
|
|
13
13
|
import { deepReady, waitForMount } from "../../utils/transition/index";
|
|
14
14
|
import { config } from "../../global/config";
|
|
@@ -275,10 +275,6 @@ export class Modal {
|
|
|
275
275
|
// Also called in dismiss() — intentional dual cleanup covers both
|
|
276
276
|
// dismiss-then-remove and direct DOM removal without dismiss.
|
|
277
277
|
this.cleanupSafeAreaOverrides();
|
|
278
|
-
// Clean up aria-hidden if removed without dismiss() being called
|
|
279
|
-
if (this.presented) {
|
|
280
|
-
cleanupRootFocusTrapAccessibility();
|
|
281
|
-
}
|
|
282
278
|
}
|
|
283
279
|
componentWillLoad() {
|
|
284
280
|
var _a;
|
|
@@ -1166,20 +1162,20 @@ export class Modal {
|
|
|
1166
1162
|
const isCardModal = presentingElement !== undefined && mode === 'ios';
|
|
1167
1163
|
const isHandleCycle = handleBehavior === 'cycle';
|
|
1168
1164
|
const isSheetModalWithHandle = isSheetModal && showHandle;
|
|
1169
|
-
return (h(Host, Object.assign({ key: '
|
|
1165
|
+
return (h(Host, Object.assign({ key: '4bf38aa67df9a3f977163bba5423960bbafd16de', "no-router": true,
|
|
1170
1166
|
// Allow the modal to be navigable when the handle is focusable
|
|
1171
1167
|
tabIndex: isHandleCycle && isSheetModalWithHandle ? 0 : -1 }, htmlAttributes, { style: {
|
|
1172
1168
|
zIndex: `${20000 + this.overlayIndex}`,
|
|
1173
|
-
}, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, 'overlay-hidden': true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle, onFocus: this.onModalFocus }), h("ion-backdrop", { key: '
|
|
1169
|
+
}, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, 'overlay-hidden': true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle, onFocus: this.onModalFocus }), h("ion-backdrop", { key: '866da40cc5fc8d3e36637098fb3066a5bc9f4e0f', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && h("div", { key: '5a2a05514ea8592c8feb0465e504aa7c7af17963', class: "modal-shadow" }), h("div", Object.assign({ key: '4d327115306451f57d190b06ab8cbb6191a6f1d7',
|
|
1174
1170
|
/*
|
|
1175
1171
|
role and aria-modal must be used on the
|
|
1176
1172
|
same element. They must also be set inside the
|
|
1177
1173
|
shadow DOM otherwise ion-button will not be highlighted
|
|
1178
1174
|
when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
|
|
1179
1175
|
*/
|
|
1180
|
-
role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (h("button", { key: '
|
|
1176
|
+
role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (h("button", { key: 'd1882835cc049232c0d957e3ba1e79676a07d179', class: "modal-handle",
|
|
1181
1177
|
// Prevents the handle from receiving keyboard focus when it does not cycle
|
|
1182
|
-
tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle", ref: (el) => (this.dragHandleEl = el) })), h("slot", { key: '
|
|
1178
|
+
tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle", ref: (el) => (this.dragHandleEl = el) })), h("slot", { key: '81dc58b09cf7d7022b04cd170f53113604364d5e', onSlotchange: this.onSlotChange }))));
|
|
1183
1179
|
}
|
|
1184
1180
|
static get is() { return "ion-modal"; }
|
|
1185
1181
|
static get encapsulation() { return "shadow"; }
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
|
+
*/
|
|
4
|
+
import { createAnimation } from "../../../utils/animation/animation";
|
|
5
|
+
/**
|
|
6
|
+
* iOS Picker Enter Animation
|
|
7
|
+
*/
|
|
8
|
+
export const iosEnterAnimation = (baseEl) => {
|
|
9
|
+
const baseAnimation = createAnimation();
|
|
10
|
+
const backdropAnimation = createAnimation();
|
|
11
|
+
const wrapperAnimation = createAnimation();
|
|
12
|
+
backdropAnimation
|
|
13
|
+
.addElement(baseEl.querySelector('ion-backdrop'))
|
|
14
|
+
.fromTo('opacity', 0.01, 'var(--backdrop-opacity)')
|
|
15
|
+
.beforeStyles({
|
|
16
|
+
'pointer-events': 'none',
|
|
17
|
+
})
|
|
18
|
+
.afterClearStyles(['pointer-events']);
|
|
19
|
+
wrapperAnimation
|
|
20
|
+
.addElement(baseEl.querySelector('.picker-wrapper'))
|
|
21
|
+
.fromTo('transform', 'translateY(100%)', 'translateY(0%)');
|
|
22
|
+
return baseAnimation
|
|
23
|
+
.addElement(baseEl)
|
|
24
|
+
.easing('cubic-bezier(.36,.66,.04,1)')
|
|
25
|
+
.duration(400)
|
|
26
|
+
.addAnimation([backdropAnimation, wrapperAnimation]);
|
|
27
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
|
+
*/
|
|
4
|
+
import { createAnimation } from "../../../utils/animation/animation";
|
|
5
|
+
/**
|
|
6
|
+
* iOS Picker Leave Animation
|
|
7
|
+
*/
|
|
8
|
+
export const iosLeaveAnimation = (baseEl) => {
|
|
9
|
+
const baseAnimation = createAnimation();
|
|
10
|
+
const backdropAnimation = createAnimation();
|
|
11
|
+
const wrapperAnimation = createAnimation();
|
|
12
|
+
backdropAnimation
|
|
13
|
+
.addElement(baseEl.querySelector('ion-backdrop'))
|
|
14
|
+
.fromTo('opacity', 'var(--backdrop-opacity)', 0.01);
|
|
15
|
+
wrapperAnimation
|
|
16
|
+
.addElement(baseEl.querySelector('.picker-wrapper'))
|
|
17
|
+
.fromTo('transform', 'translateY(0%)', 'translateY(100%)');
|
|
18
|
+
return baseAnimation
|
|
19
|
+
.addElement(baseEl)
|
|
20
|
+
.easing('cubic-bezier(.36,.66,.04,1)')
|
|
21
|
+
.duration(400)
|
|
22
|
+
.addAnimation([backdropAnimation, wrapperAnimation]);
|
|
23
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert a font size to a dynamic font size.
|
|
3
|
+
* Fonts that participate in Dynamic Type should use
|
|
4
|
+
* dynamic font sizes.
|
|
5
|
+
* @param size - The initial font size including the unit (i.e. px or pt)
|
|
6
|
+
* @param unit (optional) - The unit to convert to. Use this if you want to
|
|
7
|
+
* convert to a unit other than $baselineUnit.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Convert a font size to a dynamic font size but impose
|
|
11
|
+
* a maximum font size.
|
|
12
|
+
* @param size - The initial font size including the unit (i.e. px or pt)
|
|
13
|
+
* @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
|
|
14
|
+
* @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
|
|
15
|
+
* convert to a unit other than $baselineUnit.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* Convert a font size to a dynamic font size but impose
|
|
19
|
+
* a minimum font size.
|
|
20
|
+
* @param size - The initial font size including the unit (i.e. px or pt)
|
|
21
|
+
* @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
|
|
22
|
+
* @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
|
|
23
|
+
* convert to a unit other than $baselineUnit.
|
|
24
|
+
*/
|
|
25
|
+
/**
|
|
26
|
+
* Convert a font size to a dynamic font size but impose
|
|
27
|
+
* maximum and minimum font sizes.
|
|
28
|
+
* @param size - The initial font size including the unit (i.e. px or pt)
|
|
29
|
+
* @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
|
|
30
|
+
* @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
|
|
31
|
+
* @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
|
|
32
|
+
* convert to a unit other than $baselineUnit.
|
|
33
|
+
*/
|
|
34
|
+
/**
|
|
35
|
+
* A heuristic that applies CSS to tablet
|
|
36
|
+
* viewports.
|
|
37
|
+
*
|
|
38
|
+
* Usage:
|
|
39
|
+
* @include tablet-viewport() {
|
|
40
|
+
* :host {
|
|
41
|
+
* background-color: green;
|
|
42
|
+
* }
|
|
43
|
+
* }
|
|
44
|
+
*/
|
|
45
|
+
/**
|
|
46
|
+
* A heuristic that applies CSS to mobile
|
|
47
|
+
* viewports (i.e. phones, not tablets).
|
|
48
|
+
*
|
|
49
|
+
* Usage:
|
|
50
|
+
* @include mobile-viewport() {
|
|
51
|
+
* :host {
|
|
52
|
+
* background-color: blue;
|
|
53
|
+
* }
|
|
54
|
+
* }
|
|
55
|
+
*/
|
|
56
|
+
:host {
|
|
57
|
+
/**
|
|
58
|
+
* @prop --background: Background of the picker
|
|
59
|
+
* @prop --background-rgb: Background of the picker in rgb format
|
|
60
|
+
*
|
|
61
|
+
* @prop --border-radius: Border radius of the picker
|
|
62
|
+
* @prop --border-color: Border color of the picker
|
|
63
|
+
* @prop --border-width: Border width of the picker
|
|
64
|
+
* @prop --border-style: Border style of the picker
|
|
65
|
+
*
|
|
66
|
+
* @prop --min-width: Minimum width of the picker
|
|
67
|
+
* @prop --width: Width of the picker
|
|
68
|
+
* @prop --max-width: Maximum width of the picker
|
|
69
|
+
*
|
|
70
|
+
* @prop --min-height: Minimum height of the picker
|
|
71
|
+
* @prop --height: Height of the picker
|
|
72
|
+
* @prop --max-height: Maximum height of the picker
|
|
73
|
+
*
|
|
74
|
+
* @prop --backdrop-opacity: Opacity of the backdrop
|
|
75
|
+
*/
|
|
76
|
+
--border-radius: 0;
|
|
77
|
+
--border-style: solid;
|
|
78
|
+
--min-width: auto;
|
|
79
|
+
--width: 100%;
|
|
80
|
+
--max-width: 500px;
|
|
81
|
+
--min-height: auto;
|
|
82
|
+
--max-height: auto;
|
|
83
|
+
-moz-osx-font-smoothing: grayscale;
|
|
84
|
+
-webkit-font-smoothing: antialiased;
|
|
85
|
+
top: 0;
|
|
86
|
+
display: block;
|
|
87
|
+
position: absolute;
|
|
88
|
+
width: 100%;
|
|
89
|
+
height: 100%;
|
|
90
|
+
outline: none;
|
|
91
|
+
font-family: var(--ion-font-family, inherit);
|
|
92
|
+
contain: strict;
|
|
93
|
+
user-select: none;
|
|
94
|
+
z-index: 1001;
|
|
95
|
+
}
|
|
96
|
+
:host {
|
|
97
|
+
inset-inline-start: 0;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
:host(.overlay-hidden) {
|
|
101
|
+
display: none;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
.picker-wrapper {
|
|
105
|
+
border-radius: var(--border-radius);
|
|
106
|
+
left: 0;
|
|
107
|
+
right: 0;
|
|
108
|
+
bottom: 0;
|
|
109
|
+
-webkit-margin-start: auto;
|
|
110
|
+
margin-inline-start: auto;
|
|
111
|
+
-webkit-margin-end: auto;
|
|
112
|
+
margin-inline-end: auto;
|
|
113
|
+
margin-top: auto;
|
|
114
|
+
margin-bottom: auto;
|
|
115
|
+
transform: translate3d(0, 100%, 0);
|
|
116
|
+
display: flex;
|
|
117
|
+
position: absolute;
|
|
118
|
+
flex-direction: column;
|
|
119
|
+
width: var(--width);
|
|
120
|
+
min-width: var(--min-width);
|
|
121
|
+
max-width: var(--max-width);
|
|
122
|
+
height: var(--height);
|
|
123
|
+
min-height: var(--min-height);
|
|
124
|
+
max-height: var(--max-height);
|
|
125
|
+
border-width: var(--border-width);
|
|
126
|
+
border-style: var(--border-style);
|
|
127
|
+
border-color: var(--border-color);
|
|
128
|
+
background: var(--background);
|
|
129
|
+
contain: strict;
|
|
130
|
+
overflow: hidden;
|
|
131
|
+
z-index: 10;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
.picker-toolbar {
|
|
135
|
+
width: 100%;
|
|
136
|
+
background: transparent;
|
|
137
|
+
contain: strict;
|
|
138
|
+
z-index: 1;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
.picker-button {
|
|
142
|
+
border: 0;
|
|
143
|
+
font-family: inherit;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
.picker-button:active, .picker-button:focus {
|
|
147
|
+
outline: none;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
.picker-columns {
|
|
151
|
+
display: flex;
|
|
152
|
+
position: relative;
|
|
153
|
+
justify-content: center;
|
|
154
|
+
margin-bottom: var(--ion-safe-area-bottom, 0);
|
|
155
|
+
contain: strict;
|
|
156
|
+
overflow: hidden;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
.picker-above-highlight,
|
|
160
|
+
.picker-below-highlight {
|
|
161
|
+
display: none;
|
|
162
|
+
pointer-events: none;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Convert a font size to a dynamic font size.
|
|
167
|
+
* Fonts that participate in Dynamic Type should use
|
|
168
|
+
* dynamic font sizes.
|
|
169
|
+
* @param size - The initial font size including the unit (i.e. px or pt)
|
|
170
|
+
* @param unit (optional) - The unit to convert to. Use this if you want to
|
|
171
|
+
* convert to a unit other than $baselineUnit.
|
|
172
|
+
*/
|
|
173
|
+
/**
|
|
174
|
+
* Convert a font size to a dynamic font size but impose
|
|
175
|
+
* a maximum font size.
|
|
176
|
+
* @param size - The initial font size including the unit (i.e. px or pt)
|
|
177
|
+
* @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
|
|
178
|
+
* @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
|
|
179
|
+
* convert to a unit other than $baselineUnit.
|
|
180
|
+
*/
|
|
181
|
+
/**
|
|
182
|
+
* Convert a font size to a dynamic font size but impose
|
|
183
|
+
* a minimum font size.
|
|
184
|
+
* @param size - The initial font size including the unit (i.e. px or pt)
|
|
185
|
+
* @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
|
|
186
|
+
* @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
|
|
187
|
+
* convert to a unit other than $baselineUnit.
|
|
188
|
+
*/
|
|
189
|
+
/**
|
|
190
|
+
* Convert a font size to a dynamic font size but impose
|
|
191
|
+
* maximum and minimum font sizes.
|
|
192
|
+
* @param size - The initial font size including the unit (i.e. px or pt)
|
|
193
|
+
* @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
|
|
194
|
+
* @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
|
|
195
|
+
* @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
|
|
196
|
+
* convert to a unit other than $baselineUnit.
|
|
197
|
+
*/
|
|
198
|
+
/**
|
|
199
|
+
* A heuristic that applies CSS to tablet
|
|
200
|
+
* viewports.
|
|
201
|
+
*
|
|
202
|
+
* Usage:
|
|
203
|
+
* @include tablet-viewport() {
|
|
204
|
+
* :host {
|
|
205
|
+
* background-color: green;
|
|
206
|
+
* }
|
|
207
|
+
* }
|
|
208
|
+
*/
|
|
209
|
+
/**
|
|
210
|
+
* A heuristic that applies CSS to mobile
|
|
211
|
+
* viewports (i.e. phones, not tablets).
|
|
212
|
+
*
|
|
213
|
+
* Usage:
|
|
214
|
+
* @include mobile-viewport() {
|
|
215
|
+
* :host {
|
|
216
|
+
* background-color: blue;
|
|
217
|
+
* }
|
|
218
|
+
* }
|
|
219
|
+
*/
|
|
220
|
+
:host {
|
|
221
|
+
--background: var(--ion-background-color, #fff);
|
|
222
|
+
--border-width: 1px 0 0;
|
|
223
|
+
--border-color: var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-250, var(--ion-background-color-step-250, #c8c7cc))));
|
|
224
|
+
--height: 260px;
|
|
225
|
+
--backdrop-opacity: var(--ion-backdrop-opacity, 0.26);
|
|
226
|
+
color: var(--ion-item-color, var(--ion-text-color, #000));
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
.picker-toolbar {
|
|
230
|
+
display: flex;
|
|
231
|
+
height: 44px;
|
|
232
|
+
border-bottom: 0.55px solid var(--border-color);
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
.picker-toolbar-button {
|
|
236
|
+
flex: 1;
|
|
237
|
+
text-align: end;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
.picker-toolbar-button:last-child .picker-button {
|
|
241
|
+
font-weight: 600;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
.picker-toolbar-button:first-child {
|
|
245
|
+
font-weight: normal;
|
|
246
|
+
text-align: start;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
.picker-button,
|
|
250
|
+
.picker-button.ion-activated {
|
|
251
|
+
margin-left: 0;
|
|
252
|
+
margin-right: 0;
|
|
253
|
+
margin-top: 0;
|
|
254
|
+
margin-bottom: 0;
|
|
255
|
+
-webkit-padding-start: 1em;
|
|
256
|
+
padding-inline-start: 1em;
|
|
257
|
+
-webkit-padding-end: 1em;
|
|
258
|
+
padding-inline-end: 1em;
|
|
259
|
+
padding-top: 0;
|
|
260
|
+
padding-bottom: 0;
|
|
261
|
+
height: 44px;
|
|
262
|
+
background: transparent;
|
|
263
|
+
color: var(--ion-color-primary, #0054e9);
|
|
264
|
+
font-size: 16px;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
.picker-columns {
|
|
268
|
+
height: 215px;
|
|
269
|
+
perspective: 1000px;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
.picker-above-highlight {
|
|
273
|
+
top: 0;
|
|
274
|
+
transform: translate3d(0, 0, 90px);
|
|
275
|
+
display: block;
|
|
276
|
+
position: absolute;
|
|
277
|
+
width: 100%;
|
|
278
|
+
height: 81px;
|
|
279
|
+
border-bottom: 1px solid var(--border-color);
|
|
280
|
+
background: linear-gradient(to bottom, var(--background, var(--ion-background-color, #fff)) 20%, rgba(var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255)), 0.8) 100%);
|
|
281
|
+
z-index: 10;
|
|
282
|
+
}
|
|
283
|
+
.picker-above-highlight {
|
|
284
|
+
inset-inline-start: 0;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
.picker-below-highlight {
|
|
288
|
+
top: 115px;
|
|
289
|
+
transform: translate3d(0, 0, 90px);
|
|
290
|
+
display: block;
|
|
291
|
+
position: absolute;
|
|
292
|
+
width: 100%;
|
|
293
|
+
height: 119px;
|
|
294
|
+
border-top: 1px solid var(--border-color);
|
|
295
|
+
background: linear-gradient(to top, var(--background, var(--ion-background-color, #fff)) 30%, rgba(var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255)), 0.8) 100%);
|
|
296
|
+
z-index: 11;
|
|
297
|
+
}
|
|
298
|
+
.picker-below-highlight {
|
|
299
|
+
inset-inline-start: 0;
|
|
300
|
+
}
|