@ionic/core 8.8.4-dev.11776186452.1cc0af05 → 8.8.4-dev.11776246162.138c2737
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-datetime.js +1 -1
- package/components/ion-infinite-scroll-content.js +1 -1
- package/components/ion-loading.js +1 -1
- package/components/ion-menu.js +1 -1
- package/components/ion-modal.js +1 -1
- package/components/ion-picker-legacy.js +1 -1
- package/components/ion-popover.js +1 -1
- package/components/ion-refresher-content.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-B36-MWK0.js +4 -0
- package/components/p-BDPU2685.js +4 -0
- package/components/p-BrNzoF1U.js +4 -0
- package/components/{p-B0orUoaV.js → p-C-_EGKki.js} +1 -1
- package/components/{p-qhBzWoOF.js → p-C2cZvGcF.js} +1 -1
- package/components/p-CEUppJkx.js +4 -0
- package/components/p-CSexRbnt.js +4 -0
- package/components/{p-ZRp3l6Dk.js → p-CoarhFWH.js} +1 -1
- package/components/p-DNdBtsfu.js +4 -0
- package/components/p-Njik5v4C.js +4 -0
- package/dist/cjs/index.cjs.js +1 -1
- package/dist/cjs/ion-action-sheet.cjs.entry.js +34 -25
- package/dist/cjs/ion-alert.cjs.entry.js +51 -44
- package/dist/cjs/ion-app_8.cjs.entry.js +4 -4
- package/dist/cjs/ion-avatar_3.cjs.entry.js +2 -2
- package/dist/cjs/ion-datetime_3.cjs.entry.js +28 -4
- package/dist/cjs/ion-item_8.cjs.entry.js +2 -2
- package/dist/cjs/ion-loading.cjs.entry.js +29 -4
- package/dist/cjs/ion-menu_3.cjs.entry.js +1 -1
- package/dist/cjs/ion-modal.cjs.entry.js +176 -79
- package/dist/cjs/ion-popover.cjs.entry.js +90 -4
- package/dist/cjs/ion-select-modal.cjs.entry.js +27 -60
- package/dist/cjs/ion-select_3.cjs.entry.js +48 -191
- 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 +3 -3
- package/dist/cjs/ion-toast.cjs.entry.js +32 -4
- 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-Dhoy6v_5.js → overlays-BbhewSIQ.js} +4 -4
- package/dist/collection/components/action-sheet/action-sheet.ios.css +0 -84
- package/dist/collection/components/action-sheet/action-sheet.js +8 -22
- package/dist/collection/components/action-sheet/action-sheet.md.css +0 -84
- package/dist/collection/components/action-sheet/animations/ionic.enter.js +27 -0
- package/dist/collection/components/action-sheet/animations/ionic.leave.js +21 -0
- package/dist/collection/components/alert/alert.ios.css +0 -83
- package/dist/collection/components/alert/alert.js +24 -41
- package/dist/collection/components/alert/alert.md.css +0 -83
- package/dist/collection/components/alert/animations/ionic.enter.js +28 -0
- package/dist/collection/components/alert/animations/ionic.leave.js +19 -0
- package/dist/collection/components/loading/animations/ionic.enter.js +28 -0
- package/dist/collection/components/loading/animations/ionic.leave.js +22 -0
- package/dist/collection/components/loading/loading.js +4 -3
- package/dist/collection/components/modal/animations/ionic.enter.js +40 -0
- package/dist/collection/components/modal/animations/ionic.leave.js +28 -0
- package/dist/collection/components/modal/gestures/sheet.js +71 -9
- package/dist/collection/components/modal/modal.ionic.css +1 -1
- package/dist/collection/components/modal/modal.js +6 -5
- package/dist/collection/components/picker-legacy/animations/ionic.enter.js +27 -0
- package/dist/collection/components/picker-legacy/animations/ionic.leave.js +23 -0
- package/dist/collection/components/picker-legacy/picker.js +4 -3
- package/dist/collection/components/popover/animations/ionic.enter.js +91 -0
- package/dist/collection/components/popover/animations/ionic.leave.js +29 -0
- package/dist/collection/components/popover/popover.js +4 -3
- package/dist/collection/components/select/select.ionic.css +0 -31
- package/dist/collection/components/select/select.ios.css +0 -31
- package/dist/collection/components/select/select.js +14 -125
- package/dist/collection/components/select/select.md.css +0 -31
- package/dist/collection/components/select-modal/select-modal.ionic.css +0 -24
- package/dist/collection/components/select-modal/select-modal.ios.css +0 -77
- package/dist/collection/components/select-modal/select-modal.js +23 -56
- package/dist/collection/components/select-modal/select-modal.md.css +1 -80
- package/dist/collection/components/select-option/select-option.js +2 -21
- package/dist/collection/components/select-popover/select-popover.ios.css +0 -77
- package/dist/collection/components/select-popover/select-popover.js +26 -59
- package/dist/collection/components/select-popover/select-popover.md.css +0 -77
- 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 +3 -3
- package/dist/collection/components/thumbnail/thumbnail.js +2 -2
- package/dist/collection/components/title/title.js +2 -2
- package/dist/collection/components/toast/animations/ionic.enter.js +33 -0
- package/dist/collection/components/toast/animations/ionic.leave.js +16 -0
- package/dist/collection/components/toast/toast.js +4 -3
- package/dist/collection/components/toggle/toggle.js +3 -3
- package/dist/collection/components/toolbar/toolbar.js +2 -2
- package/dist/collection/utils/overlays.js +5 -5
- package/dist/docs.json +1 -135
- package/dist/esm/index.js +1 -1
- package/dist/esm/ion-action-sheet.entry.js +34 -25
- package/dist/esm/ion-alert.entry.js +51 -44
- package/dist/esm/ion-app_8.entry.js +4 -4
- package/dist/esm/ion-avatar_3.entry.js +2 -2
- package/dist/esm/ion-datetime_3.entry.js +28 -4
- package/dist/esm/ion-item_8.entry.js +2 -2
- package/dist/esm/ion-loading.entry.js +29 -4
- package/dist/esm/ion-menu_3.entry.js +1 -1
- package/dist/esm/ion-modal.entry.js +177 -80
- package/dist/esm/ion-popover.entry.js +90 -4
- package/dist/esm/ion-select-modal.entry.js +27 -60
- package/dist/esm/ion-select_3.entry.js +49 -192
- 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 +3 -3
- package/dist/esm/ion-toast.entry.js +32 -4
- package/dist/esm/ion-toggle.entry.js +3 -3
- package/dist/esm/ionic.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{overlays-CvFHfO3y.js → overlays-VA-4NWjf.js} +5 -5
- package/dist/html.html-data.json +0 -4
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/p-07b129d5.entry.js +4 -0
- package/dist/ionic/p-0cb50208.entry.js +4 -0
- package/dist/ionic/{p-db4f4eaf.entry.js → p-1efe83c8.entry.js} +1 -1
- package/dist/ionic/{p-d2fe6791.entry.js → p-2193e875.entry.js} +1 -1
- package/dist/ionic/{p-69033ad6.entry.js → p-2bf931ae.entry.js} +1 -1
- package/dist/ionic/{p-26595044.entry.js → p-3bf01c2c.entry.js} +1 -1
- package/dist/ionic/p-3d4c8528.entry.js +4 -0
- package/dist/ionic/{p-9e71982e.entry.js → p-49799a34.entry.js} +1 -1
- package/dist/ionic/p-64341e32.entry.js +4 -0
- package/dist/ionic/p-6992d9d6.entry.js +4 -0
- package/dist/ionic/{p-aa8c1e64.entry.js → p-6c8c37c2.entry.js} +1 -1
- package/dist/ionic/{p-a94016be.entry.js → p-91e242e4.entry.js} +1 -1
- package/dist/ionic/{p-96ec9a10.entry.js → p-9b9b1450.entry.js} +1 -1
- package/dist/ionic/p-9dd4276b.entry.js +4 -0
- package/dist/ionic/p-BExfzy0B.js +4 -0
- package/dist/ionic/p-a3d794ba.entry.js +4 -0
- package/dist/ionic/p-ba9f8cbb.entry.js +4 -0
- package/dist/ionic/{p-2095969c.entry.js → p-bae3ebe5.entry.js} +1 -1
- package/dist/ionic/{p-a1c8ba8c.entry.js → p-bc5713f7.entry.js} +1 -1
- package/dist/ionic/{p-71f28573.entry.js → p-cdfbe4cc.entry.js} +1 -1
- package/dist/ionic/p-fa701753.entry.js +4 -0
- package/dist/types/components/action-sheet/animations/ionic.enter.d.ts +5 -0
- package/dist/types/components/action-sheet/animations/ionic.leave.d.ts +5 -0
- package/dist/types/components/alert/animations/ionic.enter.d.ts +5 -0
- package/dist/types/components/alert/animations/ionic.leave.d.ts +5 -0
- package/dist/types/components/loading/animations/ionic.enter.d.ts +5 -0
- package/dist/types/components/loading/animations/ionic.leave.d.ts +5 -0
- package/dist/types/components/modal/animations/ionic.enter.d.ts +6 -0
- package/dist/types/components/modal/animations/ionic.leave.d.ts +6 -0
- package/dist/types/components/modal/gestures/sheet.d.ts +1 -1
- package/dist/types/components/picker-legacy/animations/ionic.enter.d.ts +5 -0
- package/dist/types/components/picker-legacy/animations/ionic.leave.d.ts +5 -0
- package/dist/types/components/popover/animations/ionic.enter.d.ts +5 -0
- package/dist/types/components/popover/animations/ionic.leave.d.ts +5 -0
- package/dist/types/components/select/select-interface.d.ts +0 -21
- package/dist/types/components/select/select.d.ts +0 -7
- package/dist/types/components/select-option/select-option.d.ts +0 -4
- package/dist/types/components/toast/animations/ionic.enter.d.ts +6 -0
- package/dist/types/components/toast/animations/ionic.leave.d.ts +5 -0
- package/dist/types/components.d.ts +0 -9
- package/dist/types/utils/overlays.d.ts +1 -1
- package/hydrate/index.js +534 -489
- package/hydrate/index.mjs +534 -489
- package/package.json +1 -1
- package/components/p-B6czg-mf.js +0 -4
- package/components/p-BObmvbuR.js +0 -4
- package/components/p-C8Dne7pI.js +0 -4
- package/components/p-Cm7hjN9B.js +0 -4
- package/components/p-DQY5lHUa.js +0 -4
- package/components/p-D_uMZULz.js +0 -4
- package/components/p-GytrfCp8.js +0 -4
- package/components/p-ZeIAjDcZ.js +0 -4
- package/dist/cjs/select-option-render-qQf4xz8P.js +0 -67
- package/dist/collection/components/action-sheet/action-sheet.ionic.css +0 -834
- package/dist/collection/components/alert/alert.ionic.css +0 -1165
- package/dist/collection/components/select-popover/select-popover.ionic.css +0 -489
- package/dist/collection/utils/select-option-render.js +0 -62
- package/dist/esm/select-option-render-BQUT9Aqa.js +0 -65
- package/dist/ionic/p-003b40fc.entry.js +0 -4
- package/dist/ionic/p-35aa95dc.entry.js +0 -4
- package/dist/ionic/p-37f895a8.entry.js +0 -4
- package/dist/ionic/p-3884bfa4.entry.js +0 -4
- package/dist/ionic/p-38897781.entry.js +0 -4
- package/dist/ionic/p-575061c0.entry.js +0 -4
- package/dist/ionic/p-6bffc700.entry.js +0 -4
- package/dist/ionic/p-BYtS2rae.js +0 -4
- package/dist/ionic/p-Dr3N4o63.js +0 -4
- package/dist/ionic/p-c3335fe0.entry.js +0 -4
- package/dist/ionic/p-ef0c281a.entry.js +0 -4
- package/dist/types/utils/select-option-render.d.ts +0 -26
|
@@ -1,58 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A heuristic that applies CSS to tablet
|
|
3
|
-
* viewports.
|
|
4
|
-
*
|
|
5
|
-
* Usage:
|
|
6
|
-
* @include tablet-viewport() {
|
|
7
|
-
* :host {
|
|
8
|
-
* background-color: green;
|
|
9
|
-
* }
|
|
10
|
-
* }
|
|
11
|
-
*/
|
|
12
|
-
/**
|
|
13
|
-
* A heuristic that applies CSS to mobile
|
|
14
|
-
* viewports (i.e. phones, not tablets).
|
|
15
|
-
*
|
|
16
|
-
* Usage:
|
|
17
|
-
* @include mobile-viewport() {
|
|
18
|
-
* :host {
|
|
19
|
-
* background-color: blue;
|
|
20
|
-
* }
|
|
21
|
-
* }
|
|
22
|
-
*/
|
|
23
|
-
/**
|
|
24
|
-
* Convert a font size to a dynamic font size.
|
|
25
|
-
* Fonts that participate in Dynamic Type should use
|
|
26
|
-
* dynamic font sizes.
|
|
27
|
-
* @param size - The initial font size including the unit (i.e. px or pt)
|
|
28
|
-
* @param unit (optional) - The unit to convert to. Use this if you want to
|
|
29
|
-
* convert to a unit other than $baselineUnit.
|
|
30
|
-
*/
|
|
31
|
-
/**
|
|
32
|
-
* Convert a font size to a dynamic font size but impose
|
|
33
|
-
* a maximum font size.
|
|
34
|
-
* @param size - The initial font size including the unit (i.e. px or pt)
|
|
35
|
-
* @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
|
|
36
|
-
* @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
|
|
37
|
-
* convert to a unit other than $baselineUnit.
|
|
38
|
-
*/
|
|
39
|
-
/**
|
|
40
|
-
* Convert a font size to a dynamic font size but impose
|
|
41
|
-
* a minimum font size.
|
|
42
|
-
* @param size - The initial font size including the unit (i.e. px or pt)
|
|
43
|
-
* @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
|
|
44
|
-
* @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
|
|
45
|
-
* convert to a unit other than $baselineUnit.
|
|
46
|
-
*/
|
|
47
|
-
/**
|
|
48
|
-
* Convert a font size to a dynamic font size but impose
|
|
49
|
-
* maximum and minimum font sizes.
|
|
50
|
-
* @param size - The initial font size including the unit (i.e. px or pt)
|
|
51
|
-
* @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
|
|
52
|
-
* @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
|
|
53
|
-
* @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
|
|
54
|
-
* convert to a unit other than $baselineUnit.
|
|
55
|
-
*/
|
|
56
1
|
/**
|
|
57
2
|
* Convert a pixels given value into rem
|
|
58
3
|
*
|
|
@@ -349,34 +294,6 @@ textarea.alert-input {
|
|
|
349
294
|
resize: none;
|
|
350
295
|
}
|
|
351
296
|
|
|
352
|
-
.alert-radio-label,
|
|
353
|
-
.alert-checkbox-label {
|
|
354
|
-
display: flex;
|
|
355
|
-
align-items: center;
|
|
356
|
-
}
|
|
357
|
-
|
|
358
|
-
.select-option-content {
|
|
359
|
-
flex: 1;
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
.select-option-description {
|
|
363
|
-
display: block;
|
|
364
|
-
}
|
|
365
|
-
|
|
366
|
-
.alert-radio-label,
|
|
367
|
-
.alert-checkbox-label {
|
|
368
|
-
gap: 12px;
|
|
369
|
-
}
|
|
370
|
-
|
|
371
|
-
.select-option-description {
|
|
372
|
-
padding-left: 0;
|
|
373
|
-
padding-right: 0;
|
|
374
|
-
padding-top: 5px;
|
|
375
|
-
padding-bottom: 0;
|
|
376
|
-
color: var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d));
|
|
377
|
-
font-size: 0.75rem;
|
|
378
|
-
}
|
|
379
|
-
|
|
380
297
|
/**
|
|
381
298
|
* Convert a pixels given value into rem
|
|
382
299
|
*
|
|
@@ -9,10 +9,10 @@ import { createLockController } from "../../utils/lock-controller";
|
|
|
9
9
|
import { printIonWarning } from "../../utils/logging/index";
|
|
10
10
|
import { createDelegateController, createTriggerController, BACKDROP, dismiss, eventMethod, isCancel, prepareOverlay, present, safeCall, setOverlayId, } from "../../utils/overlays";
|
|
11
11
|
import { sanitizeDOMString } from "../../utils/sanitization/index";
|
|
12
|
-
import { renderOptionLabel } from "../../utils/select-option-render";
|
|
13
12
|
import { getClassMap } from "../../utils/theme";
|
|
14
13
|
import { config } from "../../global/config";
|
|
15
14
|
import { getIonMode, getIonTheme } from "../../global/ionic-global";
|
|
15
|
+
import { ionicEnterAnimation } from "./animations/ionic.enter";
|
|
16
16
|
import { iosEnterAnimation } from "./animations/ios.enter";
|
|
17
17
|
import { iosLeaveAnimation } from "./animations/ios.leave";
|
|
18
18
|
import { mdEnterAnimation } from "./animations/md.enter";
|
|
@@ -173,7 +173,22 @@ export class Alert {
|
|
|
173
173
|
this.inputType = inputTypes.values().next().value;
|
|
174
174
|
this.processedInputs = inputs.map((i, index) => {
|
|
175
175
|
var _a;
|
|
176
|
-
return
|
|
176
|
+
return ({
|
|
177
|
+
type: i.type || 'text',
|
|
178
|
+
name: i.name || `${index}`,
|
|
179
|
+
placeholder: i.placeholder || '',
|
|
180
|
+
value: i.value,
|
|
181
|
+
label: i.label,
|
|
182
|
+
checked: !!i.checked,
|
|
183
|
+
disabled: !!i.disabled,
|
|
184
|
+
id: i.id || `alert-input-${this.overlayIndex}-${index}`,
|
|
185
|
+
handler: i.handler,
|
|
186
|
+
min: i.min,
|
|
187
|
+
max: i.max,
|
|
188
|
+
cssClass: (_a = i.cssClass) !== null && _a !== void 0 ? _a : '',
|
|
189
|
+
attributes: i.attributes || {},
|
|
190
|
+
tabindex: i.type === 'radio' && i !== focusable ? -1 : 0,
|
|
191
|
+
});
|
|
177
192
|
});
|
|
178
193
|
}
|
|
179
194
|
connectedCallback() {
|
|
@@ -230,7 +245,7 @@ export class Alert {
|
|
|
230
245
|
async present() {
|
|
231
246
|
const unlock = await this.lockController.lock();
|
|
232
247
|
await this.delegateController.attachViewToDom();
|
|
233
|
-
await present(this, 'alertEnter', iosEnterAnimation, mdEnterAnimation).then(() => {
|
|
248
|
+
await present(this, 'alertEnter', iosEnterAnimation, mdEnterAnimation, ionicEnterAnimation).then(() => {
|
|
234
249
|
var _a, _b;
|
|
235
250
|
/**
|
|
236
251
|
* Check if alert has only one button and no inputs.
|
|
@@ -361,46 +376,14 @@ export class Alert {
|
|
|
361
376
|
if (inputs.length === 0) {
|
|
362
377
|
return null;
|
|
363
378
|
}
|
|
364
|
-
return (h("div", { class: "alert-checkbox-group" }, inputs.map((i) => {
|
|
365
|
-
/**
|
|
366
|
-
* Cast to `SelectAlertInput` to access rich content
|
|
367
|
-
* fields (`startContent`, `endContent`, `description`)
|
|
368
|
-
* that are passed through from `ion-select` but not
|
|
369
|
-
* part of the public `AlertInput` interface.
|
|
370
|
-
*/
|
|
371
|
-
const richInput = i;
|
|
372
|
-
const optionLabelOptions = {
|
|
373
|
-
id: richInput.id,
|
|
374
|
-
label: richInput.label,
|
|
375
|
-
startContent: richInput.startContent,
|
|
376
|
-
endContent: richInput.endContent,
|
|
377
|
-
description: richInput.description,
|
|
378
|
-
};
|
|
379
|
-
return (h("button", { type: "button", onClick: () => this.cbClick(i), "aria-checked": `${i.checked}`, id: i.id, disabled: i.disabled, tabIndex: i.tabindex, role: "checkbox", class: Object.assign(Object.assign({}, getClassMap(i.cssClass)), { 'alert-tappable': true, 'alert-checkbox': true, 'alert-checkbox-button': true, 'ion-focusable': true, 'alert-checkbox-button-disabled': i.disabled || false }) }, h("div", { class: "alert-button-inner" }, h("div", { class: "alert-checkbox-icon" }, h("div", { class: "alert-checkbox-inner" })), renderOptionLabel(optionLabelOptions, 'alert-checkbox-label')), theme === 'md' && h("ion-ripple-effect", null)));
|
|
380
|
-
})));
|
|
379
|
+
return (h("div", { class: "alert-checkbox-group" }, inputs.map((i) => (h("button", { type: "button", onClick: () => this.cbClick(i), "aria-checked": `${i.checked}`, id: i.id, disabled: i.disabled, tabIndex: i.tabindex, role: "checkbox", class: Object.assign(Object.assign({}, getClassMap(i.cssClass)), { 'alert-tappable': true, 'alert-checkbox': true, 'alert-checkbox-button': true, 'ion-focusable': true, 'alert-checkbox-button-disabled': i.disabled || false }) }, h("div", { class: "alert-button-inner" }, h("div", { class: "alert-checkbox-icon" }, h("div", { class: "alert-checkbox-inner" })), h("div", { class: "alert-checkbox-label" }, i.label)), theme === 'md' && h("ion-ripple-effect", null))))));
|
|
381
380
|
}
|
|
382
381
|
renderRadio() {
|
|
383
382
|
const inputs = this.processedInputs;
|
|
384
383
|
if (inputs.length === 0) {
|
|
385
384
|
return null;
|
|
386
385
|
}
|
|
387
|
-
return (h("div", { class: "alert-radio-group", role: "radiogroup", "aria-activedescendant": this.activeId }, inputs.map((i) => {
|
|
388
|
-
/**
|
|
389
|
-
* Cast to `SelectAlertInput` to access rich content
|
|
390
|
-
* fields (`startContent`, `endContent`, `description`)
|
|
391
|
-
* that are passed through from `ion-select` but not
|
|
392
|
-
* part of the public `AlertInput` interface.
|
|
393
|
-
*/
|
|
394
|
-
const richInput = i;
|
|
395
|
-
const optionLabelOptions = {
|
|
396
|
-
id: richInput.id,
|
|
397
|
-
label: richInput.label,
|
|
398
|
-
startContent: richInput.startContent,
|
|
399
|
-
endContent: richInput.endContent,
|
|
400
|
-
description: richInput.description,
|
|
401
|
-
};
|
|
402
|
-
return (h("button", { type: "button", onClick: () => this.rbClick(i), "aria-checked": `${i.checked}`, disabled: i.disabled, id: i.id, tabIndex: i.tabindex, class: Object.assign(Object.assign({}, getClassMap(i.cssClass)), { 'alert-radio-button': true, 'alert-tappable': true, 'alert-radio': true, 'ion-focusable': true, 'alert-radio-button-disabled': i.disabled || false }), role: "radio" }, h("div", { class: "alert-button-inner" }, h("div", { class: "alert-radio-icon" }, h("div", { class: "alert-radio-inner" })), renderOptionLabel(optionLabelOptions, 'alert-radio-label'))));
|
|
403
|
-
})));
|
|
386
|
+
return (h("div", { class: "alert-radio-group", role: "radiogroup", "aria-activedescendant": this.activeId }, inputs.map((i) => (h("button", { type: "button", onClick: () => this.rbClick(i), "aria-checked": `${i.checked}`, disabled: i.disabled, id: i.id, tabIndex: i.tabindex, class: Object.assign(Object.assign({}, getClassMap(i.cssClass)), { 'alert-radio-button': true, 'alert-tappable': true, 'alert-radio': true, 'ion-focusable': true, 'alert-radio-button-disabled': i.disabled || false }), role: "radio" }, h("div", { class: "alert-button-inner" }, h("div", { class: "alert-radio-icon" }, h("div", { class: "alert-radio-inner" })), h("div", { class: "alert-radio-label" }, i.label)))))));
|
|
404
387
|
}
|
|
405
388
|
renderInput() {
|
|
406
389
|
const inputs = this.processedInputs;
|
|
@@ -459,9 +442,9 @@ export class Alert {
|
|
|
459
442
|
* If neither are defined, do not set aria-labelledby.
|
|
460
443
|
*/
|
|
461
444
|
const ariaLabelledBy = header && subHeader ? `${hdrId} ${subHdrId}` : header ? hdrId : subHeader ? subHdrId : null;
|
|
462
|
-
return (h(Host, { key: '
|
|
445
|
+
return (h(Host, { key: '7800d04d1ecc07f7ec37f26b4f217880d9dcc857', tabindex: "-1", style: {
|
|
463
446
|
zIndex: `${20000 + overlayIndex}`,
|
|
464
|
-
}, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [theme]: true, 'overlay-hidden': true, 'alert-translucent': this.translucent }), onIonAlertWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }, h("ion-backdrop", { key: '
|
|
447
|
+
}, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [theme]: true, 'overlay-hidden': true, 'alert-translucent': this.translucent }), onIonAlertWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }, h("ion-backdrop", { key: '9084e82a03f3686a5fb894a0044eac4afc011504', tappable: this.backdropDismiss }), h("div", { key: '7cb89e7d38b831b6bb91cdcb4ccc5d7967db7e3c', tabindex: "0", "aria-hidden": "true" }), h("div", Object.assign({ key: 'cbd469199a8740eabe0948fa32fab28f41988fa8', 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: 'da0a9a21792906edd840a5070f90ca60f07f331d', class: "alert-head" }, header && (h("h2", { key: '9141036580eed67d7e46c4c1c3c2ca149745ea07', id: hdrId, class: "alert-title" }, header)), subHeader && !header && (h("h2", { key: '4cb440d940debe61c2f9c6826dced794b755b11c', id: subHdrId, class: "alert-sub-title" }, subHeader)), subHeader && header && (h("h3", { key: '671bdc7f218653fc59ddf681c9fcbaaa5e2e2177', id: subHdrId, class: "alert-sub-title" }, subHeader))), this.renderAlertMessage(msgId), this.renderAlertInputs(), this.renderAlertButtons()), h("div", { key: 'e84c40927d1d3e8748c9efb6a8c6ec77f70e8e38', tabindex: "0", "aria-hidden": "true" })));
|
|
465
448
|
}
|
|
466
449
|
static get is() { return "ion-alert"; }
|
|
467
450
|
static get encapsulation() { return "scoped"; }
|
|
@@ -469,14 +452,14 @@ export class Alert {
|
|
|
469
452
|
return {
|
|
470
453
|
"ios": ["alert.ios.scss"],
|
|
471
454
|
"md": ["alert.md.scss"],
|
|
472
|
-
"ionic": ["alert.
|
|
455
|
+
"ionic": ["alert.md.scss"]
|
|
473
456
|
};
|
|
474
457
|
}
|
|
475
458
|
static get styleUrls() {
|
|
476
459
|
return {
|
|
477
460
|
"ios": ["alert.ios.css"],
|
|
478
461
|
"md": ["alert.md.css"],
|
|
479
|
-
"ionic": ["alert.
|
|
462
|
+
"ionic": ["alert.md.css"]
|
|
480
463
|
};
|
|
481
464
|
}
|
|
482
465
|
static get properties() {
|
|
@@ -1,58 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A heuristic that applies CSS to tablet
|
|
3
|
-
* viewports.
|
|
4
|
-
*
|
|
5
|
-
* Usage:
|
|
6
|
-
* @include tablet-viewport() {
|
|
7
|
-
* :host {
|
|
8
|
-
* background-color: green;
|
|
9
|
-
* }
|
|
10
|
-
* }
|
|
11
|
-
*/
|
|
12
|
-
/**
|
|
13
|
-
* A heuristic that applies CSS to mobile
|
|
14
|
-
* viewports (i.e. phones, not tablets).
|
|
15
|
-
*
|
|
16
|
-
* Usage:
|
|
17
|
-
* @include mobile-viewport() {
|
|
18
|
-
* :host {
|
|
19
|
-
* background-color: blue;
|
|
20
|
-
* }
|
|
21
|
-
* }
|
|
22
|
-
*/
|
|
23
|
-
/**
|
|
24
|
-
* Convert a font size to a dynamic font size.
|
|
25
|
-
* Fonts that participate in Dynamic Type should use
|
|
26
|
-
* dynamic font sizes.
|
|
27
|
-
* @param size - The initial font size including the unit (i.e. px or pt)
|
|
28
|
-
* @param unit (optional) - The unit to convert to. Use this if you want to
|
|
29
|
-
* convert to a unit other than $baselineUnit.
|
|
30
|
-
*/
|
|
31
|
-
/**
|
|
32
|
-
* Convert a font size to a dynamic font size but impose
|
|
33
|
-
* a maximum font size.
|
|
34
|
-
* @param size - The initial font size including the unit (i.e. px or pt)
|
|
35
|
-
* @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
|
|
36
|
-
* @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
|
|
37
|
-
* convert to a unit other than $baselineUnit.
|
|
38
|
-
*/
|
|
39
|
-
/**
|
|
40
|
-
* Convert a font size to a dynamic font size but impose
|
|
41
|
-
* a minimum font size.
|
|
42
|
-
* @param size - The initial font size including the unit (i.e. px or pt)
|
|
43
|
-
* @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
|
|
44
|
-
* @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
|
|
45
|
-
* convert to a unit other than $baselineUnit.
|
|
46
|
-
*/
|
|
47
|
-
/**
|
|
48
|
-
* Convert a font size to a dynamic font size but impose
|
|
49
|
-
* maximum and minimum font sizes.
|
|
50
|
-
* @param size - The initial font size including the unit (i.e. px or pt)
|
|
51
|
-
* @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
|
|
52
|
-
* @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
|
|
53
|
-
* @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
|
|
54
|
-
* convert to a unit other than $baselineUnit.
|
|
55
|
-
*/
|
|
56
1
|
/**
|
|
57
2
|
* Convert a pixels given value into rem
|
|
58
3
|
*
|
|
@@ -349,34 +294,6 @@ textarea.alert-input {
|
|
|
349
294
|
resize: none;
|
|
350
295
|
}
|
|
351
296
|
|
|
352
|
-
.alert-radio-label,
|
|
353
|
-
.alert-checkbox-label {
|
|
354
|
-
display: flex;
|
|
355
|
-
align-items: center;
|
|
356
|
-
}
|
|
357
|
-
|
|
358
|
-
.select-option-content {
|
|
359
|
-
flex: 1;
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
.select-option-description {
|
|
363
|
-
display: block;
|
|
364
|
-
}
|
|
365
|
-
|
|
366
|
-
.alert-radio-label,
|
|
367
|
-
.alert-checkbox-label {
|
|
368
|
-
gap: 12px;
|
|
369
|
-
}
|
|
370
|
-
|
|
371
|
-
.select-option-description {
|
|
372
|
-
padding-left: 0;
|
|
373
|
-
padding-right: 0;
|
|
374
|
-
padding-top: 5px;
|
|
375
|
-
padding-bottom: 0;
|
|
376
|
-
color: var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d));
|
|
377
|
-
font-size: 0.75rem;
|
|
378
|
-
}
|
|
379
|
-
|
|
380
297
|
/**
|
|
381
298
|
* Convert a pixels given value into rem
|
|
382
299
|
*
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
|
+
*/
|
|
4
|
+
import { createAnimation } from "../../../utils/animation/animation";
|
|
5
|
+
/**
|
|
6
|
+
* Ionic Alert Enter Animation
|
|
7
|
+
*/
|
|
8
|
+
export const ionicEnterAnimation = (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.addElement(baseEl.querySelector('.alert-wrapper')).keyframes([
|
|
20
|
+
{ offset: 0, opacity: '0.01', transform: 'scale(0.9)' },
|
|
21
|
+
{ offset: 1, opacity: '1', transform: 'scale(1)' },
|
|
22
|
+
]);
|
|
23
|
+
return baseAnimation
|
|
24
|
+
.addElement(baseEl)
|
|
25
|
+
.easing('ease-in-out')
|
|
26
|
+
.duration(150)
|
|
27
|
+
.addAnimation([backdropAnimation, wrapperAnimation]);
|
|
28
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
|
+
*/
|
|
4
|
+
import { createAnimation } from "../../../utils/animation/animation";
|
|
5
|
+
/**
|
|
6
|
+
* Md Alert Leave Animation
|
|
7
|
+
*/
|
|
8
|
+
export const ionicLeaveAnimation = (baseEl) => {
|
|
9
|
+
const baseAnimation = createAnimation();
|
|
10
|
+
const backdropAnimation = createAnimation();
|
|
11
|
+
const wrapperAnimation = createAnimation();
|
|
12
|
+
backdropAnimation.addElement(baseEl.querySelector('ion-backdrop')).fromTo('opacity', 'var(--backdrop-opacity)', 0);
|
|
13
|
+
wrapperAnimation.addElement(baseEl.querySelector('.alert-wrapper')).fromTo('opacity', 0.99, 0);
|
|
14
|
+
return baseAnimation
|
|
15
|
+
.addElement(baseEl)
|
|
16
|
+
.easing('ease-in-out')
|
|
17
|
+
.duration(150)
|
|
18
|
+
.addAnimation([backdropAnimation, wrapperAnimation]);
|
|
19
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
|
+
*/
|
|
4
|
+
import { createAnimation } from "../../../utils/animation/animation";
|
|
5
|
+
/**
|
|
6
|
+
* Ionic Loading Enter Animation
|
|
7
|
+
*/
|
|
8
|
+
export const ionicEnterAnimation = (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.addElement(baseEl.querySelector('.loading-wrapper')).keyframes([
|
|
20
|
+
{ offset: 0, opacity: 0.01, transform: 'scale(1.1)' },
|
|
21
|
+
{ offset: 1, opacity: 1, transform: 'scale(1)' },
|
|
22
|
+
]);
|
|
23
|
+
return baseAnimation
|
|
24
|
+
.addElement(baseEl)
|
|
25
|
+
.easing('ease-in-out')
|
|
26
|
+
.duration(200)
|
|
27
|
+
.addAnimation([backdropAnimation, wrapperAnimation]);
|
|
28
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
|
+
*/
|
|
4
|
+
import { createAnimation } from "../../../utils/animation/animation";
|
|
5
|
+
/**
|
|
6
|
+
* Md Loading Leave Animation
|
|
7
|
+
*/
|
|
8
|
+
export const ionicLeaveAnimation = (baseEl) => {
|
|
9
|
+
const baseAnimation = createAnimation();
|
|
10
|
+
const backdropAnimation = createAnimation();
|
|
11
|
+
const wrapperAnimation = createAnimation();
|
|
12
|
+
backdropAnimation.addElement(baseEl.querySelector('ion-backdrop')).fromTo('opacity', 'var(--backdrop-opacity)', 0);
|
|
13
|
+
wrapperAnimation.addElement(baseEl.querySelector('.loading-wrapper')).keyframes([
|
|
14
|
+
{ offset: 0, opacity: 0.99, transform: 'scale(1)' },
|
|
15
|
+
{ offset: 1, opacity: 0, transform: 'scale(0.9)' },
|
|
16
|
+
]);
|
|
17
|
+
return baseAnimation
|
|
18
|
+
.addElement(baseEl)
|
|
19
|
+
.easing('ease-in-out')
|
|
20
|
+
.duration(200)
|
|
21
|
+
.addAnimation([backdropAnimation, wrapperAnimation]);
|
|
22
|
+
};
|
|
@@ -10,6 +10,7 @@ import { sanitizeDOMString } from "../../utils/sanitization/index";
|
|
|
10
10
|
import { getClassMap } from "../../utils/theme";
|
|
11
11
|
import { config } from "../../global/config";
|
|
12
12
|
import { getIonTheme } from "../../global/ionic-global";
|
|
13
|
+
import { ionicEnterAnimation } from "./animations/ionic.enter";
|
|
13
14
|
import { iosEnterAnimation } from "./animations/ios.enter";
|
|
14
15
|
import { iosLeaveAnimation } from "./animations/ios.leave";
|
|
15
16
|
import { mdEnterAnimation } from "./animations/md.enter";
|
|
@@ -122,7 +123,7 @@ export class Loading {
|
|
|
122
123
|
async present() {
|
|
123
124
|
const unlock = await this.lockController.lock();
|
|
124
125
|
await this.delegateController.attachViewToDom();
|
|
125
|
-
await present(this, 'loadingEnter', iosEnterAnimation, mdEnterAnimation);
|
|
126
|
+
await present(this, 'loadingEnter', iosEnterAnimation, mdEnterAnimation, ionicEnterAnimation);
|
|
126
127
|
if (this.duration > 0) {
|
|
127
128
|
this.durationTimeout = setTimeout(() => this.dismiss(), this.duration + 10);
|
|
128
129
|
}
|
|
@@ -180,9 +181,9 @@ export class Loading {
|
|
|
180
181
|
* Otherwise, don't set aria-labelledby.
|
|
181
182
|
*/
|
|
182
183
|
const ariaLabelledBy = message !== undefined ? msgId : null;
|
|
183
|
-
return (h(Host, Object.assign({ key: '
|
|
184
|
+
return (h(Host, Object.assign({ key: '89d1abcbc147e33c7bfc7bb3ef8f46ae82c12349', role: "dialog", "aria-modal": "true", "aria-labelledby": ariaLabelledBy, tabindex: "-1" }, htmlAttributes, { style: {
|
|
184
185
|
zIndex: `${40000 + this.overlayIndex}`,
|
|
185
|
-
}, onIonBackdropTap: this.onBackdropTap, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [theme]: true, 'overlay-hidden': true, 'loading-translucent': this.translucent }) }), h("ion-backdrop", { key: '
|
|
186
|
+
}, onIonBackdropTap: this.onBackdropTap, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [theme]: true, 'overlay-hidden': true, 'loading-translucent': this.translucent }) }), h("ion-backdrop", { key: '1f30f752a8cd8d6310d22ed4f515f39f8c14c05d', visible: this.showBackdrop, tappable: this.backdropDismiss }), h("div", { key: '5d5be9f63b62499231a605bcaa6ef83c1efaeee1', tabindex: "0", "aria-hidden": "true" }), h("div", { key: '001f8cd91d32c13116309d6bf452acee3fb2e529', class: "loading-wrapper ion-overlay-wrapper" }, spinner && (h("div", { key: '40ce912631c9d3faf60110214a040e496a86a5c8', class: "loading-spinner" }, h("ion-spinner", { key: '7954e5bef56f42c0b80ca420091a2db10484dd74', name: spinner, "aria-hidden": "true" }))), message !== undefined && this.renderLoadingMessage(msgId)), h("div", { key: '86355f8e1eae0c428e63a69c4de1b1090bef2ebc', tabindex: "0", "aria-hidden": "true" })));
|
|
186
187
|
}
|
|
187
188
|
static get is() { return "ion-loading"; }
|
|
188
189
|
static get encapsulation() { return "scoped"; }
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
|
+
*/
|
|
4
|
+
import { createAnimation } from "../../../utils/animation/animation";
|
|
5
|
+
import { getElementRoot } from "../../../utils/helpers";
|
|
6
|
+
import { createSheetEnterAnimation } from "./sheet";
|
|
7
|
+
const createEnterAnimation = () => {
|
|
8
|
+
const backdropAnimation = createAnimation()
|
|
9
|
+
.fromTo('opacity', 0.01, 'var(--backdrop-opacity)')
|
|
10
|
+
.beforeStyles({
|
|
11
|
+
'pointer-events': 'none',
|
|
12
|
+
})
|
|
13
|
+
.afterClearStyles(['pointer-events']);
|
|
14
|
+
const wrapperAnimation = createAnimation().keyframes([
|
|
15
|
+
{ offset: 0, opacity: 0.01, transform: 'translateY(40px)' },
|
|
16
|
+
{ offset: 1, opacity: 1, transform: `translateY(0px)` },
|
|
17
|
+
]);
|
|
18
|
+
return { backdropAnimation, wrapperAnimation, contentAnimation: undefined };
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Ionic Modal Enter Animation
|
|
22
|
+
*/
|
|
23
|
+
export const ionicEnterAnimation = (baseEl, opts) => {
|
|
24
|
+
const { currentBreakpoint, expandToScroll } = opts;
|
|
25
|
+
const root = getElementRoot(baseEl);
|
|
26
|
+
const { wrapperAnimation, backdropAnimation, contentAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation();
|
|
27
|
+
backdropAnimation.addElement(root.querySelector('ion-backdrop'));
|
|
28
|
+
wrapperAnimation.addElement(root.querySelector('.modal-wrapper'));
|
|
29
|
+
// The content animation is only added if scrolling is enabled for
|
|
30
|
+
// all the breakpoints.
|
|
31
|
+
!expandToScroll && (contentAnimation === null || contentAnimation === void 0 ? void 0 : contentAnimation.addElement(baseEl.querySelector('.ion-page')));
|
|
32
|
+
backdropAnimation.duration(300).easing('ease-out');
|
|
33
|
+
wrapperAnimation.duration(400).easing('cubic-bezier(0.32, 0.68, 0, 1)');
|
|
34
|
+
contentAnimation === null || contentAnimation === void 0 ? void 0 : contentAnimation.duration(400).easing('cubic-bezier(0.32, 0.68, 0, 1)');
|
|
35
|
+
const baseAnimation = createAnimation().addElement(baseEl).addAnimation([backdropAnimation, wrapperAnimation]);
|
|
36
|
+
if (contentAnimation) {
|
|
37
|
+
baseAnimation.addAnimation(contentAnimation);
|
|
38
|
+
}
|
|
39
|
+
return baseAnimation;
|
|
40
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
|
+
*/
|
|
4
|
+
import { createAnimation } from "../../../utils/animation/animation";
|
|
5
|
+
import { getElementRoot } from "../../../utils/helpers";
|
|
6
|
+
import { createSheetLeaveAnimation } from "./sheet";
|
|
7
|
+
const createLeaveAnimation = () => {
|
|
8
|
+
const backdropAnimation = createAnimation().fromTo('opacity', 'var(--backdrop-opacity)', 0);
|
|
9
|
+
const wrapperAnimation = createAnimation().keyframes([
|
|
10
|
+
{ offset: 0, opacity: 0.99, transform: `translateY(0px)` },
|
|
11
|
+
{ offset: 1, opacity: 0, transform: 'translateY(40px)' },
|
|
12
|
+
]);
|
|
13
|
+
return { backdropAnimation, wrapperAnimation };
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Md Modal Leave Animation
|
|
17
|
+
*/
|
|
18
|
+
export const ionicLeaveAnimation = (baseEl, opts) => {
|
|
19
|
+
const { currentBreakpoint } = opts;
|
|
20
|
+
const root = getElementRoot(baseEl);
|
|
21
|
+
const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetLeaveAnimation(opts) : createLeaveAnimation();
|
|
22
|
+
backdropAnimation.addElement(root.querySelector('ion-backdrop'));
|
|
23
|
+
wrapperAnimation.addElement(root.querySelector('.modal-wrapper'));
|
|
24
|
+
backdropAnimation.duration(250).easing('ease-in');
|
|
25
|
+
wrapperAnimation.duration(400).easing('cubic-bezier(0.4, 0, 1, 1)');
|
|
26
|
+
const baseAnimation = createAnimation().addElement(baseEl).addAnimation([backdropAnimation, wrapperAnimation]);
|
|
27
|
+
return baseAnimation;
|
|
28
|
+
};
|