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 3192a70f1c..b1ae476e1d 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..76e995c149 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" @@ -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/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 281f708d90..f713ce1fae 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/api.txt b/core/api.txt index 56db72b84a..1b7585cc91 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 @@ -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 @@ -1428,7 +1428,7 @@ ion-toggle,shadow ion-toggle,prop,checked,boolean,false,false,false ion-toggle,prop,color,"danger" | "dark" | "light" | "medium" | "primary" | "secondary" | "success" | "tertiary" | "warning" | string & Record | undefined,undefined,false,true ion-toggle,prop,disabled,boolean,false,false,false -ion-toggle,prop,enableOnOffLabels,boolean | undefined,undefined,false,false +ion-toggle,prop,enableOnOffLabels,boolean | undefined,config.get('toggleOnOffLabels'),false,false ion-toggle,prop,mode,"ios" | "md",undefined,false,false ion-toggle,prop,name,string,this.inputId,false,false ion-toggle,prop,value,null | string | undefined,'on',false,false 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/core/src/components.d.ts b/core/src/components.d.ts index 22d6ffc4ee..107ef42924 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 { /** @@ -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. */ @@ -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. */ @@ -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. */ @@ -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/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 6f2353a975..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; @@ -506,7 +514,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, @@ -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; } @@ -721,11 +729,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 +969,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/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/components/popover/popover.tsx b/core/src/components/popover/popover.tsx index 5bc652d20b..9581399a19 100644 --- a/core/src/components/popover/popover.tsx +++ b/core/src/components/popover/popover.tsx @@ -474,14 +474,20 @@ export class Popover implements ComponentInterface, PopoverInterface { */ raf(() => { raf(async () => { - this.currentTransition = present(this, 'popoverEnter', iosEnterAnimation, mdEnterAnimation, { - event: event || this.event, - size: this.size, - trigger: this.triggerEl, - reference: this.reference, - side: this.side, - align: this.alignment, - }); + this.currentTransition = present( + this, + 'popoverEnter', + iosEnterAnimation, + mdEnterAnimation, + { + event: event || this.event, + size: this.size, + trigger: this.triggerEl, + reference: this.reference, + side: this.side, + align: this.alignment, + } + ); await this.currentTransition; @@ -530,7 +536,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) { @@ -688,3 +702,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/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-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..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, @@ -19,7 +20,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. @@ -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. @@ -97,7 +98,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 +157,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 +178,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 +353,6 @@ const buttonClass = (button: ToastButton): CssClassMap => { ...getClassMap(button.cssClass), }; }; + +type ToastPresentOptions = ToastPosition; +type ToastDismissOptions = ToastPosition; 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 ea52a4f493..991b47f258 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..c84cfbdde2 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`. @@ -96,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. diff --git a/core/src/utils/overlays.ts b/core/src/utils/overlays.ts index c86c2f7d93..5f570c83dd 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; @@ -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'; diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 886801c150..01109bc760 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 8c1ab46207..47e6332430 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..da63731901 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", @@ -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/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 7172c077f2..26a74f87b5 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..1b3d33c406 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": { @@ -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-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 6c598b46af..e1582b6728 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..0ff8b18c31 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": "*" }, @@ -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/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 5cb262a275..db10030f91 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..3346d819af 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", @@ -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-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 e18f4f1609..7b6d59a1f3 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..8ec479a0cd 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": { @@ -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", 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": {