From 43e2b3975d003e29b8060e5f5484bfb3daf457a2 Mon Sep 17 00:00:00 2001 From: Hans Date: Mon, 31 Oct 2022 15:49:15 +0100 Subject: [PATCH 1/6] feat(toggle): add toggleOnOffLabels global config option (#26087) Co-authored-by: Liam DeBeasi --- .../src/components/toggle/test/toggle.spec.ts | 43 +++++++++++++++++++ core/src/components/toggle/toggle.tsx | 3 +- core/src/utils/config.ts | 5 +++ 3 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 core/src/components/toggle/test/toggle.spec.ts diff --git a/core/src/components/toggle/test/toggle.spec.ts b/core/src/components/toggle/test/toggle.spec.ts new file mode 100644 index 0000000000..6e6eedd619 --- /dev/null +++ b/core/src/components/toggle/test/toggle.spec.ts @@ -0,0 +1,43 @@ +import { newSpecPage } from '@stencil/core/testing'; + +import { config } from '../../../global/config'; +import { Toggle } from '../toggle'; + +describe('toggle', () => { + beforeEach(() => { + config.reset({}); + }); + + const newToggle = async (): Promise => { + const { rootInstance } = await newSpecPage({ + components: [Toggle], + html: ``, + }); + return rootInstance; + }; + + describe('enableOnOffLabels', () => { + it('should disable on/off labels when setting to false on component', async () => { + const t = await newToggle(); + t.enableOnOffLabels = false; + config.reset({ + toggleOnOffLabels: true, + }); + expect(t.enableOnOffLabels).toBe(false); + }); + + it('should enable on/off labels when setting to true on global config', async () => { + config.reset({ + toggleOnOffLabels: true, + }); + const t = await newToggle(); + expect(t.enableOnOffLabels).toBe(true); + }); + + it('should enable on/off labels when setting to true on component', async () => { + const t = await newToggle(); + t.enableOnOffLabels = true; + expect(t.enableOnOffLabels).toBe(true); + }); + }); +}); diff --git a/core/src/components/toggle/toggle.tsx b/core/src/components/toggle/toggle.tsx index d7e941d0a1..6e66b052b7 100644 --- a/core/src/components/toggle/toggle.tsx +++ b/core/src/components/toggle/toggle.tsx @@ -2,6 +2,7 @@ import type { ComponentInterface, EventEmitter } from '@stencil/core'; import { Component, Element, Event, Host, Prop, State, Watch, h } from '@stencil/core'; import { checkmarkOutline, removeOutline, ellipseOutline } from 'ionicons/icons'; +import { config } from '../../global/config'; import { getIonMode } from '../../global/ionic-global'; import type { Color, Gesture, GestureDetail, Mode, StyleEventDetail, ToggleChangeEventDetail } from '../../interface'; import { getAriaLabel, renderHiddenInput } from '../../utils/helpers'; @@ -67,7 +68,7 @@ export class Toggle implements ComponentInterface { /** * Enables the on/off accessibility switch labels within the toggle. */ - @Prop() enableOnOffLabels: boolean | undefined = undefined; + @Prop() enableOnOffLabels: boolean | undefined = config.get('toggleOnOffLabels'); /** * Emitted when the value property has changed. diff --git a/core/src/utils/config.ts b/core/src/utils/config.ts index ecb07cefc1..9c9b405566 100644 --- a/core/src/utils/config.ts +++ b/core/src/utils/config.ts @@ -64,6 +64,11 @@ export interface IonicConfig { */ spinner?: SpinnerTypes; + /** + * Overrides the default enableOnOffLabels in all `` components. + */ + toggleOnOffLabels?: boolean; + /** * Overrides the default spinner for all `ion-loading` overlays, ie. the ones * created with `ion-loading-controller`. From c943dff5a32b18b9cf6a8e5ac46298367932716b Mon Sep 17 00:00:00 2001 From: Sean Perkins Date: Mon, 21 Nov 2022 16:57:17 -0500 Subject: [PATCH 2/6] chore(overlays): generic for present/dismiss options (#26287) --- core/src/components.d.ts | 6 +-- core/src/components/loading/loading.tsx | 2 +- core/src/components/modal/modal.tsx | 39 ++++++++++++++++--- core/src/components/popover/popover.tsx | 41 +++++++++++++++++++- core/src/components/toast/toast-interface.ts | 2 + core/src/components/toast/toast.tsx | 19 +++++++-- core/src/utils/overlays.ts | 8 ++-- 7 files changed, 97 insertions(+), 20 deletions(-) diff --git a/core/src/components.d.ts b/core/src/components.d.ts index 22d6ffc4ee..5cd95a8b89 100644 --- a/core/src/components.d.ts +++ b/core/src/components.d.ts @@ -14,7 +14,7 @@ import { PickerInternalChangeEventDetail } from "./components/picker-internal/pi import { PinFormatter } from "./components/range/range-interface"; import { NavigationHookCallback } from "./components/route/route-interface"; import { SelectCompareFn } from "./components/select/select-interface"; -import { ToastAttributes } from "./components/toast/toast-interface"; +import { ToastAttributes, ToastPosition } from "./components/toast/toast-interface"; export namespace Components { interface IonAccordion { /** @@ -2998,7 +2998,7 @@ export namespace Components { /** * The position of the toast on the screen. */ - "position": 'top' | 'bottom' | 'middle'; + "position": ToastPosition; /** * Present the toast overlay after it has been created. */ @@ -7007,7 +7007,7 @@ declare namespace LocalJSX { /** * The position of the toast on the screen. */ - "position"?: 'top' | 'bottom' | 'middle'; + "position"?: ToastPosition; /** * If `true`, the toast will be translucent. Only applies when the mode is `"ios"` and the device supports [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility). */ diff --git a/core/src/components/loading/loading.tsx b/core/src/components/loading/loading.tsx index a7c19affe1..21ce53a377 100644 --- a/core/src/components/loading/loading.tsx +++ b/core/src/components/loading/loading.tsx @@ -141,7 +141,7 @@ export class Loading implements ComponentInterface, OverlayInterface { */ @Method() async present(): Promise { - await present(this, 'loadingEnter', iosEnterAnimation, mdEnterAnimation, undefined); + await present(this, 'loadingEnter', iosEnterAnimation, mdEnterAnimation); if (this.duration > 0) { this.durationTimeout = setTimeout(() => this.dismiss(), this.duration + 10); diff --git a/core/src/components/modal/modal.tsx b/core/src/components/modal/modal.tsx index 6f2353a975..7d8aa91503 100644 --- a/core/src/components/modal/modal.tsx +++ b/core/src/components/modal/modal.tsx @@ -506,7 +506,7 @@ export class Modal implements ComponentInterface, OverlayInterface { writeTask(() => this.el.classList.add('show-modal')); - this.currentTransition = present(this, 'modalEnter', iosEnterAnimation, mdEnterAnimation, { + this.currentTransition = present(this, 'modalEnter', iosEnterAnimation, mdEnterAnimation, { presentingEl: this.presentingElement, currentBreakpoint: this.initialBreakpoint, backdropBreakpoint: this.backdropBreakpoint, @@ -721,11 +721,19 @@ export class Modal implements ComponentInterface, OverlayInterface { const enteringAnimation = activeAnimations.get(this) || []; - this.currentTransition = dismiss(this, data, role, 'modalLeave', iosLeaveAnimation, mdLeaveAnimation, { - presentingEl: this.presentingElement, - currentBreakpoint: this.currentBreakpoint ?? this.initialBreakpoint, - backdropBreakpoint: this.backdropBreakpoint, - }); + this.currentTransition = dismiss( + this, + data, + role, + 'modalLeave', + iosLeaveAnimation, + mdLeaveAnimation, + { + presentingEl: this.presentingElement, + currentBreakpoint: this.currentBreakpoint ?? this.initialBreakpoint, + backdropBreakpoint: this.backdropBreakpoint, + } + ); const dismissed = await this.currentTransition; @@ -953,3 +961,22 @@ const LIFECYCLE_MAP: any = { }; let modalIds = 0; + +interface ModalOverlayOptions { + /** + * The element that presented the modal. + */ + presentingEl?: HTMLElement; + /** + * The current breakpoint of the sheet modal. + */ + currentBreakpoint?: number; + /** + * The point after which the backdrop will being + * to fade in when using a sheet modal. + */ + backdropBreakpoint: number; +} + +type ModalPresentOptions = ModalOverlayOptions; +type ModalDismissOptions = ModalOverlayOptions; diff --git a/core/src/components/popover/popover.tsx b/core/src/components/popover/popover.tsx index a6f0e431f8..a128d69d59 100644 --- a/core/src/components/popover/popover.tsx +++ b/core/src/components/popover/popover.tsx @@ -476,7 +476,7 @@ export class Popover implements ComponentInterface, PopoverInterface { */ await waitOneFrame(); - this.currentTransition = present(this, 'popoverEnter', iosEnterAnimation, mdEnterAnimation, { + this.currentTransition = present(this, 'popoverEnter', iosEnterAnimation, mdEnterAnimation, { event: event || this.event, size: this.size, trigger: this.triggerEl, @@ -527,7 +527,15 @@ export class Popover implements ComponentInterface, PopoverInterface { this.parentPopover.dismiss(data, role, dismissParentPopover); } - this.currentTransition = dismiss(this, data, role, 'popoverLeave', iosLeaveAnimation, mdLeaveAnimation, this.event); + this.currentTransition = dismiss( + this, + data, + role, + 'popoverLeave', + iosLeaveAnimation, + mdLeaveAnimation, + this.event + ); const shouldDismiss = await this.currentTransition; if (shouldDismiss) { if (destroyKeyboardInteraction) { @@ -685,3 +693,32 @@ const LIFECYCLE_MAP: any = { }; let popoverIds = 0; + +interface PopoverPresentOptions { + /** + * The original target event that presented the popover. + */ + event: Event; + /** + * Describes how to calculate the popover width. + */ + size: PopoverSize; + /** + * The element that causes the popover to open. + */ + trigger?: HTMLElement | null; + /** + * Describes what to position the popover relative to. + */ + reference: PositionReference; + /** + * Side of the `reference` point to position the popover on. + */ + side: PositionSide; + /** + * Describes how to align the popover content with the `reference` point. + */ + align?: PositionAlign; +} + +type PopoverDismissOptions = Event; diff --git a/core/src/components/toast/toast-interface.ts b/core/src/components/toast/toast-interface.ts index 64ce592051..9b417e3741 100644 --- a/core/src/components/toast/toast-interface.ts +++ b/core/src/components/toast/toast-interface.ts @@ -35,3 +35,5 @@ export interface ToastButton { cssClass?: string | string[]; handler?: () => boolean | void | Promise; } + +export type ToastPosition = 'top' | 'bottom' | 'middle'; diff --git a/core/src/components/toast/toast.tsx b/core/src/components/toast/toast.tsx index efb6e29a11..bf7ab9b7ab 100644 --- a/core/src/components/toast/toast.tsx +++ b/core/src/components/toast/toast.tsx @@ -19,7 +19,7 @@ import { iosEnterAnimation } from './animations/ios.enter'; import { iosLeaveAnimation } from './animations/ios.leave'; import { mdEnterAnimation } from './animations/md.enter'; import { mdLeaveAnimation } from './animations/md.leave'; -import type { ToastAttributes } from './toast-interface'; +import type { ToastAttributes, ToastPosition } from './toast-interface'; /** * @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use. @@ -97,7 +97,7 @@ export class Toast implements ComponentInterface, OverlayInterface { /** * The position of the toast on the screen. */ - @Prop() position: 'top' | 'bottom' | 'middle' = 'bottom'; + @Prop() position: ToastPosition = 'bottom'; /** * An array of buttons for the toast. @@ -156,7 +156,7 @@ export class Toast implements ComponentInterface, OverlayInterface { */ @Method() async present(): Promise { - await present(this, 'toastEnter', iosEnterAnimation, mdEnterAnimation, this.position); + await present(this, 'toastEnter', iosEnterAnimation, mdEnterAnimation, this.position); if (this.duration > 0) { this.durationTimeout = setTimeout(() => this.dismiss(undefined, 'timeout'), this.duration); @@ -177,7 +177,15 @@ export class Toast implements ComponentInterface, OverlayInterface { if (this.durationTimeout) { clearTimeout(this.durationTimeout); } - return dismiss(this, data, role, 'toastLeave', iosLeaveAnimation, mdLeaveAnimation, this.position); + return dismiss( + this, + data, + role, + 'toastLeave', + iosLeaveAnimation, + mdLeaveAnimation, + this.position + ); } /** @@ -344,3 +352,6 @@ const buttonClass = (button: ToastButton): CssClassMap => { ...getClassMap(button.cssClass), }; }; + +type ToastPresentOptions = ToastPosition; +type ToastDismissOptions = ToastPosition; diff --git a/core/src/utils/overlays.ts b/core/src/utils/overlays.ts index c86c2f7d93..4c1f267cc4 100644 --- a/core/src/utils/overlays.ts +++ b/core/src/utils/overlays.ts @@ -400,12 +400,12 @@ export const setRootAriaHidden = (hidden = false) => { } }; -export const present = async ( +export const present = async ( overlay: OverlayInterface, name: keyof IonicConfig, iosEnterAnimation: AnimationBuilder, mdEnterAnimation: AnimationBuilder, - opts?: any + opts?: OverlayPresentOptions ) => { if (overlay.presented) { return; @@ -478,14 +478,14 @@ const focusPreviousElementOnDismiss = async (overlayEl: any) => { previousElement.focus(); }; -export const dismiss = async ( +export const dismiss = async ( overlay: OverlayInterface, data: any | undefined, role: string | undefined, name: keyof IonicConfig, iosLeaveAnimation: AnimationBuilder, mdLeaveAnimation: AnimationBuilder, - opts?: any + opts?: OverlayDismissOptions ): Promise => { if (!overlay.presented) { return false; From 1b30fc97d33e761866b4bcf7518efcdeb753032d Mon Sep 17 00:00:00 2001 From: Liam DeBeasi Date: Fri, 2 Dec 2022 10:46:41 -0500 Subject: [PATCH 3/6] feat(modal): data and role are passed to canDismiss (#26384) resolves #26292 --- core/api.txt | 2 +- core/src/components.d.ts | 4 +- core/src/components/modal/gestures/utils.ts | 4 +- core/src/components/modal/modal.tsx | 24 ++++++++---- .../modal/test/canDismiss/index.html | 8 ++-- .../modal/test/canDismiss/modal.e2e.ts | 38 +++++++++++++++++++ core/src/utils/overlays.ts | 3 +- 7 files changed, 66 insertions(+), 17 deletions(-) diff --git a/core/api.txt b/core/api.txt index ec0527ac0c..1ef287856a 100644 --- a/core/api.txt +++ b/core/api.txt @@ -780,7 +780,7 @@ ion-modal,prop,animated,boolean,true,false,false ion-modal,prop,backdropBreakpoint,number,0,false,false ion-modal,prop,backdropDismiss,boolean,true,false,false ion-modal,prop,breakpoints,number[] | undefined,undefined,false,false -ion-modal,prop,canDismiss,(() => Promise) | boolean | undefined,undefined,false,false +ion-modal,prop,canDismiss,((data?: any, role?: string | undefined) => Promise) | boolean | undefined,undefined,false,false ion-modal,prop,enterAnimation,((baseEl: any, opts?: any) => Animation) | undefined,undefined,false,false ion-modal,prop,handle,boolean | undefined,undefined,false,false ion-modal,prop,handleBehavior,"cycle" | "none" | undefined,'none',false,false diff --git a/core/src/components.d.ts b/core/src/components.d.ts index 5cd95a8b89..107ef42924 100644 --- a/core/src/components.d.ts +++ b/core/src/components.d.ts @@ -1560,7 +1560,7 @@ export namespace Components { /** * Determines whether or not a modal can dismiss when calling the `dismiss` method. If the value is `true` or the value's function returns `true`, the modal will close when trying to dismiss. If the value is `false` or the value's function returns `false`, the modal will not close when trying to dismiss. */ - "canDismiss"?: undefined | boolean | (() => Promise); + "canDismiss"?: undefined | boolean | ((data?: any, role?: string) => Promise); /** * The component to display inside of the modal. */ @@ -5548,7 +5548,7 @@ declare namespace LocalJSX { /** * Determines whether or not a modal can dismiss when calling the `dismiss` method. If the value is `true` or the value's function returns `true`, the modal will close when trying to dismiss. If the value is `false` or the value's function returns `false`, the modal will not close when trying to dismiss. */ - "canDismiss"?: undefined | boolean | (() => Promise); + "canDismiss"?: undefined | boolean | ((data?: any, role?: string) => Promise); /** * The component to display inside of the modal. */ diff --git a/core/src/components/modal/gestures/utils.ts b/core/src/components/modal/gestures/utils.ts index 36268e8412..694227d630 100644 --- a/core/src/components/modal/gestures/utils.ts +++ b/core/src/components/modal/gestures/utils.ts @@ -1,3 +1,5 @@ +import { GESTURE } from '@utils/overlays'; + import type { Animation } from '../../../interface'; export const handleCanDismiss = async (el: HTMLIonModalElement, animation: Animation) => { @@ -18,7 +20,7 @@ export const handleCanDismiss = async (el: HTMLIonModalElement, animation: Anima * If the function returns `true`, * then we can proceed with dismiss. */ - const shouldDismiss = await el.canDismiss(); + const shouldDismiss = await el.canDismiss(undefined, GESTURE); if (!shouldDismiss) { return; } diff --git a/core/src/components/modal/modal.tsx b/core/src/components/modal/modal.tsx index 7d8aa91503..6269637ab2 100644 --- a/core/src/components/modal/modal.tsx +++ b/core/src/components/modal/modal.tsx @@ -23,7 +23,15 @@ import type { Attributes } from '../../utils/helpers'; import { KEYBOARD_DID_OPEN } from '../../utils/keyboard/keyboard'; import { printIonWarning } from '../../utils/logging'; import { Style as StatusBarStyle, StatusBar } from '../../utils/native/status-bar'; -import { BACKDROP, activeAnimations, dismiss, eventMethod, prepareOverlay, present } from '../../utils/overlays'; +import { + GESTURE, + BACKDROP, + activeAnimations, + dismiss, + eventMethod, + prepareOverlay, + present, +} from '../../utils/overlays'; import { getClassMap } from '../../utils/theme'; import { deepReady } from '../../utils/transition'; @@ -267,7 +275,7 @@ export class Modal implements ComponentInterface, OverlayInterface { * If the value is `true` or the value's function returns `true`, the modal will close when trying to dismiss. * If the value is `false` or the value's function returns `false`, the modal will not close when trying to dismiss. */ - @Prop() canDismiss?: undefined | boolean | (() => Promise); + @Prop() canDismiss?: undefined | boolean | ((data?: any, role?: string) => Promise); /** * Emitted after the modal has presented. @@ -449,7 +457,7 @@ export class Modal implements ComponentInterface, OverlayInterface { * modal is allowed to dismiss based * on the state of the canDismiss prop. */ - private async checkCanDismiss() { + private async checkCanDismiss(data?: any, role?: string) { const { canDismiss } = this; /** @@ -461,7 +469,7 @@ export class Modal implements ComponentInterface, OverlayInterface { } if (typeof canDismiss === 'function') { - return canDismiss(); + return canDismiss(data, role); } return canDismiss; @@ -603,7 +611,7 @@ export class Modal implements ComponentInterface, OverlayInterface { */ this.gestureAnimationDismissing = true; this.animation!.onFinish(async () => { - await this.dismiss(undefined, 'gesture'); + await this.dismiss(undefined, GESTURE); this.gestureAnimationDismissing = false; }); }); @@ -665,7 +673,7 @@ export class Modal implements ComponentInterface, OverlayInterface { this.animation!.onFinish(async () => { this.currentBreakpoint = 0; this.ionBreakpointDidChange.emit({ breakpoint: this.currentBreakpoint }); - await this.dismiss(undefined, 'gesture'); + await this.dismiss(undefined, GESTURE); this.gestureAnimationDismissing = false; }); } @@ -678,7 +686,7 @@ export class Modal implements ComponentInterface, OverlayInterface { */ @Method() async dismiss(data?: any, role?: string): Promise { - if (this.gestureAnimationDismissing && role !== 'gesture') { + if (this.gestureAnimationDismissing && role !== GESTURE) { return false; } @@ -687,7 +695,7 @@ export class Modal implements ComponentInterface, OverlayInterface { * for calling the dismiss method, we should * not run the canDismiss check again. */ - if (role !== 'handler' && !(await this.checkCanDismiss())) { + if (role !== 'handler' && !(await this.checkCanDismiss(data, role))) { return false; } diff --git a/core/src/components/modal/test/canDismiss/index.html b/core/src/components/modal/test/canDismiss/index.html index c51c09bff8..d0ed369978 100644 --- a/core/src/components/modal/test/canDismiss/index.html +++ b/core/src/components/modal/test/canDismiss/index.html @@ -116,13 +116,13 @@ handler = false; break; case 'promise-true': - handler = () => { + handler = (data, role) => { return new Promise((resolve) => { setTimeout(() => { resolve(true); setTimeout(() => { - const event = new CustomEvent('ionHandlerDone'); + const event = new CustomEvent('ionHandlerDone', { detail: { data, role } }); window.dispatchEvent(event); }, 1000); }, 250); @@ -132,11 +132,11 @@ case 'promise-false': handler = () => { return new Promise((resolve) => { - setTimeout(() => { + setTimeout((data, role) => { resolve(false); setTimeout(() => { - const event = new CustomEvent('ionHandlerDone'); + const event = new CustomEvent('ionHandlerDone', { detail: { data, role } }); window.dispatchEvent(event); }, 1000); }, 250); diff --git a/core/src/components/modal/test/canDismiss/modal.e2e.ts b/core/src/components/modal/test/canDismiss/modal.e2e.ts index 81d9519f94..637a913e29 100644 --- a/core/src/components/modal/test/canDismiss/modal.e2e.ts +++ b/core/src/components/modal/test/canDismiss/modal.e2e.ts @@ -378,4 +378,42 @@ test.describe('modal: canDismiss', () => { await ionModalDidDismiss.next(); }); }); + + test.describe('function params', () => { + test.beforeEach(({ skip }) => { + skip.rtl(); + skip.mode('md'); + }); + test('should pass data and role when calling dismiss', async ({ page }) => { + const ionModalDidPresent = await page.spyOnEvent('ionModalDidPresent'); + const ionHandlerDone = await page.spyOnEvent('ionHandlerDone'); + + await page.click('#radio-promise-true'); + await page.click('#show-modal'); + + await ionModalDidPresent.next(); + + const modal = await page.locator('ion-modal'); + await modal.evaluate((el: HTMLIonModalElement) => el.dismiss('my data', 'my role')); + + await ionHandlerDone.next(); + await expect(ionHandlerDone).toHaveReceivedEventDetail({ data: 'my data', role: 'my role' }); + }); + test('should pass data and role when swiping', async ({ page }) => { + const ionModalDidPresent = await page.spyOnEvent('ionModalDidPresent'); + const ionHandlerDone = await page.spyOnEvent('ionHandlerDone'); + + await page.click('#radio-card'); + await page.click('#radio-promise-true'); + await page.click('#show-modal'); + + await ionModalDidPresent.next(); + + const modalHeader = await page.locator('#modal-header'); + await dragElementBy(modalHeader, page, 0, 500); + + await ionHandlerDone.next(); + await expect(ionHandlerDone).toHaveReceivedEventDetail({ data: undefined, role: 'gesture' }); + }); + }); }); diff --git a/core/src/utils/overlays.ts b/core/src/utils/overlays.ts index 4c1f267cc4..5f570c83dd 100644 --- a/core/src/utils/overlays.ts +++ b/core/src/utils/overlays.ts @@ -507,7 +507,7 @@ export const dismiss = async ( : config.get(name, mode === 'ios' ? iosLeaveAnimation : mdLeaveAnimation); // If dismissed via gesture, no need to play leaving animation again - if (role !== 'gesture') { + if (role !== GESTURE) { await overlayAnimation(overlay, animationBuilder, overlay.el, opts); } overlay.didDismiss.emit({ data, role }); @@ -612,3 +612,4 @@ export const safeCall = (handler: any, arg?: any) => { }; export const BACKDROP = 'backdrop'; +export const GESTURE = 'gesture'; From a67a827fedc8adf44a35c786f615871facca60fc Mon Sep 17 00:00:00 2001 From: Amanda Johnston <90629384+amandaejohnston@users.noreply.github.com> Date: Tue, 6 Dec 2022 09:52:52 -0600 Subject: [PATCH 4/6] feat(toast): add global config toastDuration (#26425) Co-authored-by: DwieDima --- core/api.txt | 2 +- .../components/toast/test/basic/toast.e2e.ts | 30 ++++++++++++++++++- core/src/components/toast/toast.tsx | 5 ++-- core/src/utils/config.ts | 5 ++++ 4 files changed, 38 insertions(+), 4 deletions(-) diff --git a/core/api.txt b/core/api.txt index 1ef287856a..1b7585cc91 100644 --- a/core/api.txt +++ b/core/api.txt @@ -1382,7 +1382,7 @@ ion-toast,prop,animated,boolean,true,false,false ion-toast,prop,buttons,(string | ToastButton)[] | undefined,undefined,false,false ion-toast,prop,color,"danger" | "dark" | "light" | "medium" | "primary" | "secondary" | "success" | "tertiary" | "warning" | string & Record | undefined,undefined,false,true ion-toast,prop,cssClass,string | string[] | undefined,undefined,false,false -ion-toast,prop,duration,number,0,false,false +ion-toast,prop,duration,number,config.getNumber('toastDuration', 0),false,false ion-toast,prop,enterAnimation,((baseEl: any, opts?: any) => Animation) | undefined,undefined,false,false ion-toast,prop,header,string | undefined,undefined,false,false ion-toast,prop,htmlAttributes,undefined | { [key: string]: any; },undefined,false,false diff --git a/core/src/components/toast/test/basic/toast.e2e.ts b/core/src/components/toast/test/basic/toast.e2e.ts index 21e23008bd..c9161328d9 100644 --- a/core/src/components/toast/test/basic/toast.e2e.ts +++ b/core/src/components/toast/test/basic/toast.e2e.ts @@ -1,5 +1,5 @@ -import { expect } from '@playwright/test'; import type { Locator, TestInfo } from '@playwright/test'; +import { expect } from '@playwright/test'; import type { E2EPage, EventSpy } from '@utils/test/playwright'; import { test } from '@utils/test/playwright'; @@ -134,3 +134,31 @@ test.describe('toast: properties', () => { await expect(toast).toHaveClass(/my-custom-class/); }); }); + +test.describe('toast: duration config', () => { + test.beforeEach(({ skip }) => { + skip.rtl(); + skip.mode('ios'); + }); + test('should have duration set to 0', async ({ page }) => { + await page.setContent(` + + `); + const toast = page.locator('ion-toast'); + await expect(toast).toHaveJSProperty('duration', 0); + }); + + test('should have duration set to 5000', async ({ page }) => { + await page.setContent(` + + + `); + + const toast = page.locator('ion-toast'); + await expect(toast).toHaveJSProperty('duration', 5000); + }); +}); diff --git a/core/src/components/toast/toast.tsx b/core/src/components/toast/toast.tsx index bf7ab9b7ab..6f562d1994 100644 --- a/core/src/components/toast/toast.tsx +++ b/core/src/components/toast/toast.tsx @@ -1,6 +1,7 @@ import type { ComponentInterface, EventEmitter } from '@stencil/core'; -import { Component, Element, Event, Host, Method, Prop, h } from '@stencil/core'; +import { Component, Element, Event, h, Host, Method, Prop } from '@stencil/core'; +import { config } from '../../global/config'; import { getIonMode } from '../../global/ionic-global'; import type { AnimationBuilder, @@ -77,7 +78,7 @@ export class Toast implements ComponentInterface, OverlayInterface { * How many milliseconds to wait before hiding the toast. By default, it will show * until `dismiss()` is called. */ - @Prop() duration = 0; + @Prop() duration = config.getNumber('toastDuration', 0); /** * Header to be shown in the toast. diff --git a/core/src/utils/config.ts b/core/src/utils/config.ts index 9c9b405566..c84cfbdde2 100644 --- a/core/src/utils/config.ts +++ b/core/src/utils/config.ts @@ -101,6 +101,11 @@ export interface IonicConfig { */ tabButtonLayout?: TabButtonLayout; + /** + * Overrides the default `duration` for all `ion-toast` components. + */ + toastDuration?: number; + /** * Overrides the default "animation" of all `ion-nav` and `ion-router-outlet` across the whole application. * This prop allows to replace the default transition and provide a custom one that applies to all navigation outlets. From 37943631301816a04599c7c22e2221566674077d Mon Sep 17 00:00:00 2001 From: ionitron Date: Wed, 7 Dec 2022 14:58:41 +0000 Subject: [PATCH 5/6] v6.4.0 --- CHANGELOG.md | 13 +++++++++++++ angular/CHANGELOG.md | 8 ++++++++ angular/package-lock.json | 6 +++--- angular/package.json | 4 ++-- core/CHANGELOG.md | 13 +++++++++++++ core/package-lock.json | 4 ++-- core/package.json | 2 +- docs/CHANGELOG.md | 8 ++++++++ docs/package-lock.json | 4 ++-- docs/package.json | 2 +- lerna.json | 2 +- packages/angular-server/CHANGELOG.md | 8 ++++++++ packages/angular-server/package-lock.json | 6 +++--- packages/angular-server/package.json | 4 ++-- packages/react-router/CHANGELOG.md | 8 ++++++++ packages/react-router/package-lock.json | 6 +++--- packages/react-router/package.json | 4 ++-- packages/react/CHANGELOG.md | 8 ++++++++ packages/react/package-lock.json | 6 +++--- packages/react/package.json | 4 ++-- packages/vue-router/CHANGELOG.md | 8 ++++++++ packages/vue-router/package-lock.json | 6 +++--- packages/vue-router/package.json | 4 ++-- packages/vue/CHANGELOG.md | 8 ++++++++ packages/vue/package-lock.json | 6 +++--- packages/vue/package.json | 4 ++-- 26 files changed, 119 insertions(+), 37 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a83a536744..be3eb6b1f8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,19 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [6.4.0](https://github.com/ionic-team/ionic-framework/compare/v6.3.10...v6.4.0) (2022-12-07) + + +### Features + +* **modal:** data and role are passed to canDismiss ([#26384](https://github.com/ionic-team/ionic-framework/issues/26384)) ([1b30fc9](https://github.com/ionic-team/ionic-framework/commit/1b30fc97d33e761866b4bcf7518efcdeb753032d)), closes [#26292](https://github.com/ionic-team/ionic-framework/issues/26292) +* **toast:** add global config toastDuration ([#26425](https://github.com/ionic-team/ionic-framework/issues/26425)) ([a67a827](https://github.com/ionic-team/ionic-framework/commit/a67a827fedc8adf44a35c786f615871facca60fc)) +* **toggle:** add toggleOnOffLabels global config option ([#26087](https://github.com/ionic-team/ionic-framework/issues/26087)) ([43e2b39](https://github.com/ionic-team/ionic-framework/commit/43e2b3975d003e29b8060e5f5484bfb3daf457a2)) + + + + + ## [6.3.10](https://github.com/ionic-team/ionic-framework/compare/v6.3.9...v6.3.10) (2022-12-07) diff --git a/angular/CHANGELOG.md b/angular/CHANGELOG.md index 270872bd72..217eb295c7 100644 --- a/angular/CHANGELOG.md +++ b/angular/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [6.4.0](https://github.com/ionic-team/ionic/compare/v6.3.10...v6.4.0) (2022-12-07) + +**Note:** Version bump only for package @ionic/angular + + + + + ## [6.3.10](https://github.com/ionic-team/ionic/compare/v6.3.9...v6.3.10) (2022-12-07) **Note:** Version bump only for package @ionic/angular diff --git a/angular/package-lock.json b/angular/package-lock.json index abd59ee48c..4159749e7d 100644 --- a/angular/package-lock.json +++ b/angular/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/angular", - "version": "6.3.10", + "version": "6.4.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/angular", - "version": "6.3.10", + "version": "6.4.0", "license": "MIT", "dependencies": { - "@ionic/core": "^6.3.10", + "@ionic/core": "^6.4.0", "ionicons": "^6.0.4", "jsonc-parser": "^3.0.0", "tslib": "^2.0.0" diff --git a/angular/package.json b/angular/package.json index 89c0ee6085..5edd70c185 100644 --- a/angular/package.json +++ b/angular/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/angular", - "version": "6.3.10", + "version": "6.4.0", "description": "Angular specific wrappers for @ionic/core", "keywords": [ "ionic", @@ -42,7 +42,7 @@ "validate": "npm i && npm run lint && npm run test && npm run build" }, "dependencies": { - "@ionic/core": "^6.3.10", + "@ionic/core": "^6.4.0", "ionicons": "^6.0.4", "jsonc-parser": "^3.0.0", "tslib": "^2.0.0" diff --git a/core/CHANGELOG.md b/core/CHANGELOG.md index f37f3e85f4..ea0d5476d6 100644 --- a/core/CHANGELOG.md +++ b/core/CHANGELOG.md @@ -3,6 +3,19 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [6.4.0](https://github.com/ionic-team/ionic/compare/v6.3.10...v6.4.0) (2022-12-07) + + +### Features + +* **modal:** data and role are passed to canDismiss ([#26384](https://github.com/ionic-team/ionic/issues/26384)) ([1b30fc9](https://github.com/ionic-team/ionic/commit/1b30fc97d33e761866b4bcf7518efcdeb753032d)), closes [#26292](https://github.com/ionic-team/ionic/issues/26292) +* **toast:** add global config toastDuration ([#26425](https://github.com/ionic-team/ionic/issues/26425)) ([a67a827](https://github.com/ionic-team/ionic/commit/a67a827fedc8adf44a35c786f615871facca60fc)) +* **toggle:** add toggleOnOffLabels global config option ([#26087](https://github.com/ionic-team/ionic/issues/26087)) ([43e2b39](https://github.com/ionic-team/ionic/commit/43e2b3975d003e29b8060e5f5484bfb3daf457a2)) + + + + + ## [6.3.10](https://github.com/ionic-team/ionic/compare/v6.3.9...v6.3.10) (2022-12-07) diff --git a/core/package-lock.json b/core/package-lock.json index a69ce2d2f6..4036e5982d 100644 --- a/core/package-lock.json +++ b/core/package-lock.json @@ -1,12 +1,12 @@ { "name": "@ionic/core", - "version": "6.3.10", + "version": "6.4.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/core", - "version": "6.3.10", + "version": "6.4.0", "license": "MIT", "dependencies": { "@stencil/core": "^2.18.0", diff --git a/core/package.json b/core/package.json index 4c40ebd8bc..eb1735c7c7 100644 --- a/core/package.json +++ b/core/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/core", - "version": "6.3.10", + "version": "6.4.0", "description": "Base components for Ionic", "keywords": [ "ionic", diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 51aef941cc..d8064cb854 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [6.4.0](https://github.com/ionic-team/ionic-docs/compare/v6.3.10...v6.4.0) (2022-12-07) + +**Note:** Version bump only for package @ionic/docs + + + + + ## [6.3.10](https://github.com/ionic-team/ionic-docs/compare/v6.3.9...v6.3.10) (2022-12-07) **Note:** Version bump only for package @ionic/docs diff --git a/docs/package-lock.json b/docs/package-lock.json index 32d7656be8..b93ac28577 100644 --- a/docs/package-lock.json +++ b/docs/package-lock.json @@ -1,12 +1,12 @@ { "name": "@ionic/docs", - "version": "6.3.10", + "version": "6.4.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/docs", - "version": "6.3.10", + "version": "6.4.0", "license": "MIT" } } diff --git a/docs/package.json b/docs/package.json index 0bdbd70b66..5fc4e76e69 100644 --- a/docs/package.json +++ b/docs/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/docs", - "version": "6.3.10", + "version": "6.4.0", "description": "Pre-packaged API documentation for the Ionic docs.", "main": "core.json", "types": "core.d.ts", diff --git a/lerna.json b/lerna.json index fb0a009d33..4ca090a68f 100644 --- a/lerna.json +++ b/lerna.json @@ -5,5 +5,5 @@ "angular", "packages/*" ], - "version": "6.3.10" + "version": "6.4.0" } diff --git a/packages/angular-server/CHANGELOG.md b/packages/angular-server/CHANGELOG.md index be04d95828..1635c0a01c 100644 --- a/packages/angular-server/CHANGELOG.md +++ b/packages/angular-server/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [6.4.0](https://github.com/ionic-team/ionic/compare/v6.3.10...v6.4.0) (2022-12-07) + +**Note:** Version bump only for package @ionic/angular-server + + + + + ## [6.3.10](https://github.com/ionic-team/ionic/compare/v6.3.9...v6.3.10) (2022-12-07) **Note:** Version bump only for package @ionic/angular-server diff --git a/packages/angular-server/package-lock.json b/packages/angular-server/package-lock.json index 9e38797866..e6c2be4f1a 100644 --- a/packages/angular-server/package-lock.json +++ b/packages/angular-server/package-lock.json @@ -1,12 +1,12 @@ { "name": "@ionic/angular-server", - "version": "6.3.10", + "version": "6.4.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/angular-server", - "version": "6.3.10", + "version": "6.4.0", "license": "MIT", "devDependencies": { "@angular-eslint/eslint-plugin": "^12.6.1", @@ -18,7 +18,7 @@ "@angular/platform-browser": "^12.0.0", "@angular/platform-browser-dynamic": "^12.2.10", "@angular/platform-server": "^12.0.0", - "@ionic/core": "^6.3.10", + "@ionic/core": "^6.4.0", "@ionic/eslint-config": "^0.3.0", "@ionic/prettier-config": "^2.0.0", "@typescript-eslint/eslint-plugin": "^5.2.0", diff --git a/packages/angular-server/package.json b/packages/angular-server/package.json index b97367bc76..b591f3a330 100644 --- a/packages/angular-server/package.json +++ b/packages/angular-server/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/angular-server", - "version": "6.3.10", + "version": "6.4.0", "description": "Angular SSR Module for Ionic", "keywords": [ "ionic", @@ -55,7 +55,7 @@ "@angular/platform-browser": "^12.0.0", "@angular/platform-browser-dynamic": "^12.2.10", "@angular/platform-server": "^12.0.0", - "@ionic/core": "^6.3.10", + "@ionic/core": "^6.4.0", "@ionic/eslint-config": "^0.3.0", "@ionic/prettier-config": "^2.0.0", "@typescript-eslint/eslint-plugin": "^5.2.0", diff --git a/packages/react-router/CHANGELOG.md b/packages/react-router/CHANGELOG.md index e13d7fb233..d9c57003e4 100644 --- a/packages/react-router/CHANGELOG.md +++ b/packages/react-router/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [6.4.0](https://github.com/ionic-team/ionic/compare/v6.3.10...v6.4.0) (2022-12-07) + +**Note:** Version bump only for package @ionic/react-router + + + + + ## [6.3.10](https://github.com/ionic-team/ionic/compare/v6.3.9...v6.3.10) (2022-12-07) **Note:** Version bump only for package @ionic/react-router diff --git a/packages/react-router/package-lock.json b/packages/react-router/package-lock.json index 56817f058b..73eda8fec3 100644 --- a/packages/react-router/package-lock.json +++ b/packages/react-router/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/react-router", - "version": "6.3.10", + "version": "6.4.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/react-router", - "version": "6.3.10", + "version": "6.4.0", "license": "MIT", "dependencies": { - "@ionic/react": "^6.3.10", + "@ionic/react": "^6.4.0", "tslib": "*" }, "devDependencies": { diff --git a/packages/react-router/package.json b/packages/react-router/package.json index 125e686928..c53d39c9e4 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/react-router", - "version": "6.3.10", + "version": "6.4.0", "description": "React Router wrapper for @ionic/react", "keywords": [ "ionic", @@ -36,7 +36,7 @@ "dist/" ], "dependencies": { - "@ionic/react": "^6.3.10", + "@ionic/react": "^6.4.0", "tslib": "*" }, "peerDependencies": { diff --git a/packages/react/CHANGELOG.md b/packages/react/CHANGELOG.md index 45f17de700..b801d76e1f 100644 --- a/packages/react/CHANGELOG.md +++ b/packages/react/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [6.4.0](https://github.com/ionic-team/ionic/compare/v6.3.10...v6.4.0) (2022-12-07) + +**Note:** Version bump only for package @ionic/react + + + + + ## [6.3.10](https://github.com/ionic-team/ionic/compare/v6.3.9...v6.3.10) (2022-12-07) **Note:** Version bump only for package @ionic/react diff --git a/packages/react/package-lock.json b/packages/react/package-lock.json index 638444f274..03d128e966 100644 --- a/packages/react/package-lock.json +++ b/packages/react/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/react", - "version": "6.3.10", + "version": "6.4.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/react", - "version": "6.3.10", + "version": "6.4.0", "license": "MIT", "dependencies": { - "@ionic/core": "^6.3.10", + "@ionic/core": "^6.4.0", "ionicons": "^6.0.2", "tslib": "*" }, diff --git a/packages/react/package.json b/packages/react/package.json index 1f32bf1a5e..e7866e174c 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/react", - "version": "6.3.10", + "version": "6.4.0", "description": "React specific wrapper for @ionic/core", "keywords": [ "ionic", @@ -40,7 +40,7 @@ "css/" ], "dependencies": { - "@ionic/core": "^6.3.10", + "@ionic/core": "^6.4.0", "ionicons": "^6.0.2", "tslib": "*" }, diff --git a/packages/vue-router/CHANGELOG.md b/packages/vue-router/CHANGELOG.md index 93659b3f88..85f5bbcef6 100644 --- a/packages/vue-router/CHANGELOG.md +++ b/packages/vue-router/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [6.4.0](https://github.com/ionic-team/ionic/compare/v6.3.10...v6.4.0) (2022-12-07) + +**Note:** Version bump only for package @ionic/vue-router + + + + + ## [6.3.10](https://github.com/ionic-team/ionic/compare/v6.3.9...v6.3.10) (2022-12-07) **Note:** Version bump only for package @ionic/vue-router diff --git a/packages/vue-router/package-lock.json b/packages/vue-router/package-lock.json index 26ca934e0c..e69dec28f0 100644 --- a/packages/vue-router/package-lock.json +++ b/packages/vue-router/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/vue-router", - "version": "6.3.10", + "version": "6.4.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/vue-router", - "version": "6.3.10", + "version": "6.4.0", "license": "MIT", "dependencies": { - "@ionic/vue": "^6.3.10" + "@ionic/vue": "^6.4.0" }, "devDependencies": { "@types/jest": "^28.1.1", diff --git a/packages/vue-router/package.json b/packages/vue-router/package.json index 834519741e..d491735a83 100644 --- a/packages/vue-router/package.json +++ b/packages/vue-router/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/vue-router", - "version": "6.3.10", + "version": "6.4.0", "description": "Vue Router integration for @ionic/vue", "scripts": { "test.spec": "jest", @@ -43,7 +43,7 @@ }, "homepage": "https://github.com/ionic-team/ionic#readme", "dependencies": { - "@ionic/vue": "^6.3.10" + "@ionic/vue": "^6.4.0" }, "devDependencies": { "@types/jest": "^28.1.1", diff --git a/packages/vue/CHANGELOG.md b/packages/vue/CHANGELOG.md index 098e162717..829a8db840 100644 --- a/packages/vue/CHANGELOG.md +++ b/packages/vue/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [6.4.0](https://github.com/ionic-team/ionic/compare/v6.3.10...v6.4.0) (2022-12-07) + +**Note:** Version bump only for package @ionic/vue + + + + + ## [6.3.10](https://github.com/ionic-team/ionic/compare/v6.3.9...v6.3.10) (2022-12-07) **Note:** Version bump only for package @ionic/vue diff --git a/packages/vue/package-lock.json b/packages/vue/package-lock.json index 097f59e33a..d2c05eae10 100644 --- a/packages/vue/package-lock.json +++ b/packages/vue/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/vue", - "version": "6.3.10", + "version": "6.4.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/vue", - "version": "6.3.10", + "version": "6.4.0", "license": "MIT", "dependencies": { - "@ionic/core": "^6.3.10", + "@ionic/core": "^6.4.0", "ionicons": "^6.0.2" }, "devDependencies": { diff --git a/packages/vue/package.json b/packages/vue/package.json index e609760864..73e018d41d 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/vue", - "version": "6.3.10", + "version": "6.4.0", "description": "Vue specific wrapper for @ionic/core", "scripts": { "lint": "echo add linter", @@ -60,7 +60,7 @@ "vue-router": "^4.0.16" }, "dependencies": { - "@ionic/core": "^6.3.10", + "@ionic/core": "^6.4.0", "ionicons": "^6.0.2" }, "vetur": { From 05365ae6ce09f161a1a978cf8a25b4e3fc91f0ed Mon Sep 17 00:00:00 2001 From: ionitron Date: Wed, 7 Dec 2022 14:59:00 +0000 Subject: [PATCH 6/6] chore(): update package lock files --- angular/package-lock.json | 12 +++++----- packages/angular-server/package-lock.json | 12 +++++----- packages/react-router/package-lock.json | 28 +++++++++++------------ packages/react/package-lock.json | 12 +++++----- packages/vue-router/package-lock.json | 28 +++++++++++------------ packages/vue/package-lock.json | 12 +++++----- 6 files changed, 52 insertions(+), 52 deletions(-) diff --git a/angular/package-lock.json b/angular/package-lock.json index 4159749e7d..76e995c149 100644 --- a/angular/package-lock.json +++ b/angular/package-lock.json @@ -1024,9 +1024,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "6.3.10", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-6.3.10.tgz", - "integrity": "sha512-Tf9MTWpchermpRLrECIzUXvQKMpv+fTecHXJJLx1uRtjV879ZH37CpDXKomwo+kRFtITCSrg6kAbCLzOubPsMQ==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-6.4.0.tgz", + "integrity": "sha512-rWqXX67bWDD5r5Kleacy4dTBIXcB1gX+2Q5AK7LAtmtHUUuJPqGw/bAWE8hGKlF7ehJTyzb5CYV9XDzb8/00Zw==", "dependencies": { "@stencil/core": "^2.18.0", "ionicons": "^6.0.4", @@ -7940,9 +7940,9 @@ "dev": true }, "@ionic/core": { - "version": "6.3.10", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-6.3.10.tgz", - "integrity": "sha512-Tf9MTWpchermpRLrECIzUXvQKMpv+fTecHXJJLx1uRtjV879ZH37CpDXKomwo+kRFtITCSrg6kAbCLzOubPsMQ==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-6.4.0.tgz", + "integrity": "sha512-rWqXX67bWDD5r5Kleacy4dTBIXcB1gX+2Q5AK7LAtmtHUUuJPqGw/bAWE8hGKlF7ehJTyzb5CYV9XDzb8/00Zw==", "requires": { "@stencil/core": "^2.18.0", "ionicons": "^6.0.4", diff --git a/packages/angular-server/package-lock.json b/packages/angular-server/package-lock.json index e6c2be4f1a..da63731901 100644 --- a/packages/angular-server/package-lock.json +++ b/packages/angular-server/package-lock.json @@ -786,9 +786,9 @@ "license": "BSD-3-Clause" }, "node_modules/@ionic/core": { - "version": "6.3.10", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-6.3.10.tgz", - "integrity": "sha512-Tf9MTWpchermpRLrECIzUXvQKMpv+fTecHXJJLx1uRtjV879ZH37CpDXKomwo+kRFtITCSrg6kAbCLzOubPsMQ==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-6.4.0.tgz", + "integrity": "sha512-rWqXX67bWDD5r5Kleacy4dTBIXcB1gX+2Q5AK7LAtmtHUUuJPqGw/bAWE8hGKlF7ehJTyzb5CYV9XDzb8/00Zw==", "dev": true, "dependencies": { "@stencil/core": "^2.18.0", @@ -7103,9 +7103,9 @@ "dev": true }, "@ionic/core": { - "version": "6.3.10", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-6.3.10.tgz", - "integrity": "sha512-Tf9MTWpchermpRLrECIzUXvQKMpv+fTecHXJJLx1uRtjV879ZH37CpDXKomwo+kRFtITCSrg6kAbCLzOubPsMQ==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-6.4.0.tgz", + "integrity": "sha512-rWqXX67bWDD5r5Kleacy4dTBIXcB1gX+2Q5AK7LAtmtHUUuJPqGw/bAWE8hGKlF7ehJTyzb5CYV9XDzb8/00Zw==", "dev": true, "requires": { "@stencil/core": "^2.18.0", diff --git a/packages/react-router/package-lock.json b/packages/react-router/package-lock.json index 73eda8fec3..1b3d33c406 100644 --- a/packages/react-router/package-lock.json +++ b/packages/react-router/package-lock.json @@ -147,9 +147,9 @@ } }, "node_modules/@ionic/core": { - "version": "6.3.10", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-6.3.10.tgz", - "integrity": "sha512-Tf9MTWpchermpRLrECIzUXvQKMpv+fTecHXJJLx1uRtjV879ZH37CpDXKomwo+kRFtITCSrg6kAbCLzOubPsMQ==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-6.4.0.tgz", + "integrity": "sha512-rWqXX67bWDD5r5Kleacy4dTBIXcB1gX+2Q5AK7LAtmtHUUuJPqGw/bAWE8hGKlF7ehJTyzb5CYV9XDzb8/00Zw==", "dependencies": { "@stencil/core": "^2.18.0", "ionicons": "^6.0.4", @@ -157,11 +157,11 @@ } }, "node_modules/@ionic/react": { - "version": "6.3.10", - "resolved": "https://registry.npmjs.org/@ionic/react/-/react-6.3.10.tgz", - "integrity": "sha512-UVelXo4o1DxK/fbxGBPigKoIsg8xk+BOBE1v+kJAGpMsDL8KC1bsdljjGq2jmvJFLe86IzifLzLRvLXl5eWmqQ==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@ionic/react/-/react-6.4.0.tgz", + "integrity": "sha512-TgKmIVBR0puqvm2N6PYSdW36ASDwha363oa2MAir6Ir5DAWpXZ9GbG9Wpizh/WDEdRPtdejWFIHJ54MPXOVLAQ==", "dependencies": { - "@ionic/core": "6.3.10", + "@ionic/core": "6.4.0", "ionicons": "^6.0.2", "tslib": "*" }, @@ -1145,9 +1145,9 @@ } }, "@ionic/core": { - "version": "6.3.10", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-6.3.10.tgz", - "integrity": "sha512-Tf9MTWpchermpRLrECIzUXvQKMpv+fTecHXJJLx1uRtjV879ZH37CpDXKomwo+kRFtITCSrg6kAbCLzOubPsMQ==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-6.4.0.tgz", + "integrity": "sha512-rWqXX67bWDD5r5Kleacy4dTBIXcB1gX+2Q5AK7LAtmtHUUuJPqGw/bAWE8hGKlF7ehJTyzb5CYV9XDzb8/00Zw==", "requires": { "@stencil/core": "^2.18.0", "ionicons": "^6.0.4", @@ -1155,11 +1155,11 @@ } }, "@ionic/react": { - "version": "6.3.10", - "resolved": "https://registry.npmjs.org/@ionic/react/-/react-6.3.10.tgz", - "integrity": "sha512-UVelXo4o1DxK/fbxGBPigKoIsg8xk+BOBE1v+kJAGpMsDL8KC1bsdljjGq2jmvJFLe86IzifLzLRvLXl5eWmqQ==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@ionic/react/-/react-6.4.0.tgz", + "integrity": "sha512-TgKmIVBR0puqvm2N6PYSdW36ASDwha363oa2MAir6Ir5DAWpXZ9GbG9Wpizh/WDEdRPtdejWFIHJ54MPXOVLAQ==", "requires": { - "@ionic/core": "6.3.10", + "@ionic/core": "6.4.0", "ionicons": "^6.0.2", "tslib": "*" } diff --git a/packages/react/package-lock.json b/packages/react/package-lock.json index 03d128e966..0ff8b18c31 100644 --- a/packages/react/package-lock.json +++ b/packages/react/package-lock.json @@ -607,9 +607,9 @@ } }, "node_modules/@ionic/core": { - "version": "6.3.10", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-6.3.10.tgz", - "integrity": "sha512-Tf9MTWpchermpRLrECIzUXvQKMpv+fTecHXJJLx1uRtjV879ZH37CpDXKomwo+kRFtITCSrg6kAbCLzOubPsMQ==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-6.4.0.tgz", + "integrity": "sha512-rWqXX67bWDD5r5Kleacy4dTBIXcB1gX+2Q5AK7LAtmtHUUuJPqGw/bAWE8hGKlF7ehJTyzb5CYV9XDzb8/00Zw==", "dependencies": { "@stencil/core": "^2.18.0", "ionicons": "^6.0.4", @@ -9522,9 +9522,9 @@ } }, "@ionic/core": { - "version": "6.3.10", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-6.3.10.tgz", - "integrity": "sha512-Tf9MTWpchermpRLrECIzUXvQKMpv+fTecHXJJLx1uRtjV879ZH37CpDXKomwo+kRFtITCSrg6kAbCLzOubPsMQ==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-6.4.0.tgz", + "integrity": "sha512-rWqXX67bWDD5r5Kleacy4dTBIXcB1gX+2Q5AK7LAtmtHUUuJPqGw/bAWE8hGKlF7ehJTyzb5CYV9XDzb8/00Zw==", "requires": { "@stencil/core": "^2.18.0", "ionicons": "^6.0.4", diff --git a/packages/vue-router/package-lock.json b/packages/vue-router/package-lock.json index e69dec28f0..3346d819af 100644 --- a/packages/vue-router/package-lock.json +++ b/packages/vue-router/package-lock.json @@ -578,9 +578,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "6.3.10", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-6.3.10.tgz", - "integrity": "sha512-Tf9MTWpchermpRLrECIzUXvQKMpv+fTecHXJJLx1uRtjV879ZH37CpDXKomwo+kRFtITCSrg6kAbCLzOubPsMQ==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-6.4.0.tgz", + "integrity": "sha512-rWqXX67bWDD5r5Kleacy4dTBIXcB1gX+2Q5AK7LAtmtHUUuJPqGw/bAWE8hGKlF7ehJTyzb5CYV9XDzb8/00Zw==", "dependencies": { "@stencil/core": "^2.18.0", "ionicons": "^6.0.4", @@ -588,11 +588,11 @@ } }, "node_modules/@ionic/vue": { - "version": "6.3.10", - "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-6.3.10.tgz", - "integrity": "sha512-pKIOuGhmvbJOvFl9USjH+879Fz+5LuGhSNObyIWzmnxkuo2kXa0PsiriNPrEjcFGVMJasXpeG3Pm0CjV7CmFJQ==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-6.4.0.tgz", + "integrity": "sha512-dMFf9h4K4UK5IKR/F5FbCpPsthJDkt99YbgacyS/Zl/tXxd4ZsQ2ViBB9wUf56lDbx3GdJMe+XmElqWxvrOg7w==", "dependencies": { - "@ionic/core": "6.3.10", + "@ionic/core": "6.4.0", "ionicons": "^6.0.2" } }, @@ -5221,9 +5221,9 @@ "dev": true }, "@ionic/core": { - "version": "6.3.10", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-6.3.10.tgz", - "integrity": "sha512-Tf9MTWpchermpRLrECIzUXvQKMpv+fTecHXJJLx1uRtjV879ZH37CpDXKomwo+kRFtITCSrg6kAbCLzOubPsMQ==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-6.4.0.tgz", + "integrity": "sha512-rWqXX67bWDD5r5Kleacy4dTBIXcB1gX+2Q5AK7LAtmtHUUuJPqGw/bAWE8hGKlF7ehJTyzb5CYV9XDzb8/00Zw==", "requires": { "@stencil/core": "^2.18.0", "ionicons": "^6.0.4", @@ -5231,11 +5231,11 @@ } }, "@ionic/vue": { - "version": "6.3.10", - "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-6.3.10.tgz", - "integrity": "sha512-pKIOuGhmvbJOvFl9USjH+879Fz+5LuGhSNObyIWzmnxkuo2kXa0PsiriNPrEjcFGVMJasXpeG3Pm0CjV7CmFJQ==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-6.4.0.tgz", + "integrity": "sha512-dMFf9h4K4UK5IKR/F5FbCpPsthJDkt99YbgacyS/Zl/tXxd4ZsQ2ViBB9wUf56lDbx3GdJMe+XmElqWxvrOg7w==", "requires": { - "@ionic/core": "6.3.10", + "@ionic/core": "6.4.0", "ionicons": "^6.0.2" } }, diff --git a/packages/vue/package-lock.json b/packages/vue/package-lock.json index d2c05eae10..8ec479a0cd 100644 --- a/packages/vue/package-lock.json +++ b/packages/vue/package-lock.json @@ -59,9 +59,9 @@ } }, "node_modules/@ionic/core": { - "version": "6.3.10", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-6.3.10.tgz", - "integrity": "sha512-Tf9MTWpchermpRLrECIzUXvQKMpv+fTecHXJJLx1uRtjV879ZH37CpDXKomwo+kRFtITCSrg6kAbCLzOubPsMQ==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-6.4.0.tgz", + "integrity": "sha512-rWqXX67bWDD5r5Kleacy4dTBIXcB1gX+2Q5AK7LAtmtHUUuJPqGw/bAWE8hGKlF7ehJTyzb5CYV9XDzb8/00Zw==", "dependencies": { "@stencil/core": "^2.18.0", "ionicons": "^6.0.4", @@ -768,9 +768,9 @@ } }, "@ionic/core": { - "version": "6.3.10", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-6.3.10.tgz", - "integrity": "sha512-Tf9MTWpchermpRLrECIzUXvQKMpv+fTecHXJJLx1uRtjV879ZH37CpDXKomwo+kRFtITCSrg6kAbCLzOubPsMQ==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-6.4.0.tgz", + "integrity": "sha512-rWqXX67bWDD5r5Kleacy4dTBIXcB1gX+2Q5AK7LAtmtHUUuJPqGw/bAWE8hGKlF7ehJTyzb5CYV9XDzb8/00Zw==", "requires": { "@stencil/core": "^2.18.0", "ionicons": "^6.0.4",