diff --git a/CHANGELOG.md b/CHANGELOG.md index 863cfea246..33fa8ef3c6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,17 @@ +## [5.6.13](https://github.com/ionic-team/ionic/compare/v5.6.12...v5.6.13) (2021-08-04) + + +### Bug Fixes + +* **checkbox, radio:** change event interfaces correctly use TypeScript generics for value ([#23044](https://github.com/ionic-team/ionic/issues/23044)) ([8a941fd](https://github.com/ionic-team/ionic/commit/8a941fd24cd138817a2e91c42898878a919538e4)) +* **gesture:** onEnd now correctly fires even if the event target was removed from the DOM ([#23713](https://github.com/ionic-team/ionic/issues/23713)) ([4edb5e2](https://github.com/ionic-team/ionic/commit/4edb5e2fed55c8ea21eae50821d16d351bf3aebf)), closes [#22819](https://github.com/ionic-team/ionic/issues/22819) +* **item-sliding:** opening item while other items are open no longer requires multiple swipes ([#23683](https://github.com/ionic-team/ionic/issues/23683)) ([792864f](https://github.com/ionic-team/ionic/commit/792864f8ab21dc178c1836a8a0d4fe2d305cc142)), closes [#21579](https://github.com/ionic-team/ionic/issues/21579) +* **react:** IonTabs no longer causes SSR to fail ([#23696](https://github.com/ionic-team/ionic/issues/23696)) ([f2a05be](https://github.com/ionic-team/ionic/commit/f2a05bed1e2a1150e8f1823bfed2d12a219d6ad0)), closes [#23651](https://github.com/ionic-team/ionic/issues/23651) +* **vue:** improve accuracy of ion-page dev warning ([#23677](https://github.com/ionic-team/ionic/issues/23677)) ([fb260a9](https://github.com/ionic-team/ionic/commit/fb260a9e09e6f3912b30ef2ebf581d3216483fea)), closes [#23675](https://github.com/ionic-team/ionic/issues/23675) +* **vue:** tabs warning about user-provided router outlet change is now correctly logged ([#23724](https://github.com/ionic-team/ionic/issues/23724)) ([4a64e97](https://github.com/ionic-team/ionic/commit/4a64e97a3e390e365101bbb477acad0ddc4671ff)), closes [#23719](https://github.com/ionic-team/ionic/issues/23719) + + + # [6.0.0-beta.2](https://github.com/ionic-team/ionic/compare/v5.6.12...v6.0.0-beta.2) (2021-07-21) @@ -26,6 +40,20 @@ +## [5.6.12](https://github.com/ionic-team/ionic/compare/v5.6.11...v5.6.12) (2021-07-21) + + +### Bug Fixes + +* **action-sheet:** header, subheader, and icon alignment better matches native ios ([#23322](https://github.com/ionic-team/ionic/issues/23322)) ([39315bc](https://github.com/ionic-team/ionic/commit/39315bc857b850347dca386776665e21c9742cad)), closes [#23317](https://github.com/ionic-team/ionic/issues/23317) +* **button:** buttons are now disabled during page transitions ([#23589](https://github.com/ionic-team/ionic/issues/23589)) ([3b803eb](https://github.com/ionic-team/ionic/commit/3b803ebe024be3dbcf814a30a18df51ce23c8880)), closes [#23588](https://github.com/ionic-team/ionic/issues/23588) +* **item:** mirror disabled prop to aria attribute ([#23544](https://github.com/ionic-team/ionic/issues/23544)) ([9021e7c](https://github.com/ionic-team/ionic/commit/9021e7cc4b48a69ccc94faa7d2ddcb10a2afa340)), closes [#23513](https://github.com/ionic-team/ionic/issues/23513) +* **menu-button:** custom aria-label can now be set ([#23608](https://github.com/ionic-team/ionic/issues/23608)) ([c08345d](https://github.com/ionic-team/ionic/commit/c08345df2ee3175f3f0d11ff877c7b6f1a102321)), closes [#23604](https://github.com/ionic-team/ionic/issues/23604) +* **overlays:** overlay interfaces are now exported from framework packages and documented ([#23619](https://github.com/ionic-team/ionic/issues/23619)) ([773bbcb](https://github.com/ionic-team/ionic/commit/773bbcb211d3cf0caf38c25b44e666d98ddfafe5)), closes [#22790](https://github.com/ionic-team/ionic/issues/22790) +* **router-outlet:** improve reliability of swipe back gesture when quickly swiping back ([#23527](https://github.com/ionic-team/ionic/issues/23527)) ([fa06942](https://github.com/ionic-team/ionic/commit/fa069424b265891852a07869b6d086a1cb041e93)), closes [#22895](https://github.com/ionic-team/ionic/issues/22895) + + + # [6.0.0-beta.1](https://github.com/ionic-team/ionic/compare/v5.6.11...v6.0.0-beta.1) (2021-07-01) @@ -54,6 +82,15 @@ +## [5.6.11](https://github.com/ionic-team/ionic/compare/v5.6.10...v5.6.11) (2021-07-01) + +### Bug Fixes + +* **animation:** typescript interface has correct return value for progress methods ([#23536](https://github.com/ionic-team/ionic/issues/23536)) ([f3d6abb](https://github.com/ionic-team/ionic/commit/f3d6abbc1beeafe3b5e7f473d70d0b8ef4c79bc8)) +* **ios, md:** double tapping back button no longer causes app to go back 2 pages ([#23526](https://github.com/ionic-team/ionic/issues/23526)) ([69be51d](https://github.com/ionic-team/ionic/commit/69be51dc54e670b2f75cbfac28a4a09517dbf355)), closes [#18455](https://github.com/ionic-team/ionic/issues/18455) + + + # [6.0.0-beta.0](https://github.com/ionic-team/ionic/compare/v5.6.10...v6.0.0-beta.0) (2021-06-23) @@ -112,63 +149,6 @@ -## [5.6.12](https://github.com/ionic-team/ionic/compare/v5.6.11...v5.6.12) (2021-07-21) - - -### Bug Fixes - -* **action-sheet:** header, subheader, and icon alignment better matches native ios ([#23322](https://github.com/ionic-team/ionic/issues/23322)) ([39315bc](https://github.com/ionic-team/ionic/commit/39315bc857b850347dca386776665e21c9742cad)), closes [#23317](https://github.com/ionic-team/ionic/issues/23317) -* **button:** buttons are now disabled during page transitions ([#23589](https://github.com/ionic-team/ionic/issues/23589)) ([3b803eb](https://github.com/ionic-team/ionic/commit/3b803ebe024be3dbcf814a30a18df51ce23c8880)), closes [#23588](https://github.com/ionic-team/ionic/issues/23588) -* **item:** mirror disabled prop to aria attribute ([#23544](https://github.com/ionic-team/ionic/issues/23544)) ([9021e7c](https://github.com/ionic-team/ionic/commit/9021e7cc4b48a69ccc94faa7d2ddcb10a2afa340)), closes [#23513](https://github.com/ionic-team/ionic/issues/23513) -* **menu-button:** custom aria-label can now be set ([#23608](https://github.com/ionic-team/ionic/issues/23608)) ([c08345d](https://github.com/ionic-team/ionic/commit/c08345df2ee3175f3f0d11ff877c7b6f1a102321)), closes [#23604](https://github.com/ionic-team/ionic/issues/23604) -* **overlays:** overlay interfaces are now exported from framework packages and documented ([#23619](https://github.com/ionic-team/ionic/issues/23619)) ([773bbcb](https://github.com/ionic-team/ionic/commit/773bbcb211d3cf0caf38c25b44e666d98ddfafe5)), closes [#22790](https://github.com/ionic-team/ionic/issues/22790) -* **router-outlet:** improve reliability of swipe back gesture when quickly swiping back ([#23527](https://github.com/ionic-team/ionic/issues/23527)) ([fa06942](https://github.com/ionic-team/ionic/commit/fa069424b265891852a07869b6d086a1cb041e93)), closes [#22895](https://github.com/ionic-team/ionic/issues/22895) - - - -# [6.0.0-beta.1](https://github.com/ionic-team/ionic/compare/v6.0.0-beta.0...v6.0.0-beta.1) (2021-07-01) - -### Bug Fixes - -* **accordion:** improved reliability of accordion animations ([#23531](https://github.com/ionic-team/ionic/issues/23531)) ([6fbd60b](https://github.com/ionic-team/ionic/commit/6fbd60b0df56dc927226474a1ffa322d979c563e)), closes [#23504](https://github.com/ionic-team/ionic/issues/23504) -* **content:** add touch-action manipulation for zoom and pan ([#23534](https://github.com/ionic-team/ionic/issues/23534)) ([6ca1780](https://github.com/ionic-team/ionic/commit/6ca17805b8b1ea38d7fc16d091324da16a4193c6)), closes [#22805](https://github.com/ionic-team/ionic/issues/22805) -* **datetime:** scroll position no longer gets reset when using datetime in overlay ([#23543](https://github.com/ionic-team/ionic/issues/23543)) ([b735b58](https://github.com/ionic-team/ionic/commit/b735b587cda777ac481bb580c883d9734145f31e)) -* **input, select, textarea:** change type of placeholder prop to string only ([#23500](https://github.com/ionic-team/ionic/issues/23500)) ([f3ae431](https://github.com/ionic-team/ionic/commit/f3ae4319bb64debab304973856a33e422ac910a1)), closes [#22976](https://github.com/ionic-team/ionic/issues/22976) -* **popover:** size property now works when providing only event ([#23532](https://github.com/ionic-team/ionic/issues/23532)) ([bdc1f23](https://github.com/ionic-team/ionic/commit/bdc1f2360d7795472cc242a86eb4376d05fa0bb7)), closes [#23528](https://github.com/ionic-team/ionic/issues/23528) -* **popover:** update animation to better match MD spec ([#23541](https://github.com/ionic-team/ionic/issues/23541)) ([bdb95b7](https://github.com/ionic-team/ionic/commit/bdb95b7b6dd798cbc6d1786ae54fa95ac1dfd096)) -* **react:** export accordion and accordion group components ([#23497](https://github.com/ionic-team/ionic/issues/23497)) ([a664d42](https://github.com/ionic-team/ionic/commit/a664d4268dea8e84ab9e3b150043ac8f87fb53c7)) -* **vue:** navigating between parameterized pages now results in page transition ([#23525](https://github.com/ionic-team/ionic/issues/23525)) ([e30b17c](https://github.com/ionic-team/ionic/commit/e30b17c5bbd1af6936a8d7a98d1f7a115073e029)), closes [#22662](https://github.com/ionic-team/ionic/issues/22662) - - -### Features - -* **accordion-group:** add animated property to disable animations ([#23530](https://github.com/ionic-team/ionic/issues/23530)) ([9a60dd0](https://github.com/ionic-team/ionic/commit/9a60dd0ea7c55acf0fdd1161433e5b4ed40778f2)) -* **action-sheet, alert:** add id to AlertButton and ActionSheetButton ([#18992](https://github.com/ionic-team/ionic/issues/18992)) ([9e24a0b](https://github.com/ionic-team/ionic/commit/9e24a0b49357a3a39ca89f026ff23271a365d935)), closes [#22959](https://github.com/ionic-team/ionic/issues/22959) -* **vue:** extend useIonRouter hook for programmatic navigation with animation control ([#23499](https://github.com/ionic-team/ionic/issues/23499)) ([fc9e1b4](https://github.com/ionic-team/ionic/commit/fc9e1b4b361938e5644683c395a565be2de1eab9)), closes [#23450](https://github.com/ionic-team/ionic/issues/23450) - - -### BREAKING CHANGES - -> We recommend updating to the latest version of 5.x before trying out version 6 in order to see deprecation warnings related to your app in the developer console. - -* **input, select, textarea:** Updated the `placeholder` property on `ion-input`, `ion-textarea`, and `ion-select` to have a type of `string | undefined`. -* **vue:** The `IonRouter` type for `useIonRouter` has been renamed to `UseIonRouterResult`, and the `IonKeyboardRef` type for `useKeyboard` has been renamed to `UseKeyboardResult`. - -Please see the [BREAKING.md](./BREAKING.md#version-6x) file for a complete list of breaking changes in Framework v6. - -Looking to test out the Framework v6 beta? Check out our [v6 Beta Getting Started Guide](./BETA.md). - - - -## [5.6.11](https://github.com/ionic-team/ionic/compare/v5.6.10...v5.6.11) (2021-07-01) - -### Bug Fixes - -* **animation:** typescript interface has correct return value for progress methods ([#23536](https://github.com/ionic-team/ionic/issues/23536)) ([f3d6abb](https://github.com/ionic-team/ionic/commit/f3d6abbc1beeafe3b5e7f473d70d0b8ef4c79bc8)) -* **ios, md:** double tapping back button no longer causes app to go back 2 pages ([#23526](https://github.com/ionic-team/ionic/issues/23526)) ([69be51d](https://github.com/ionic-team/ionic/commit/69be51dc54e670b2f75cbfac28a4a09517dbf355)), closes [#18455](https://github.com/ionic-team/ionic/issues/18455) - - - # [6.0.0-beta.0](https://github.com/ionic-team/ionic/compare/v5.6.10...v6.0.0-beta.0) (2021-06-23) ### Bug Fixes @@ -4147,4 +4127,4 @@ The following dependencies need to be updated to resolve build errors -## [0.1.0](https://github.com/ionic-team/ionic/commit/43a8c4c7a719169336a84964fc1c737562d764a6) (2018-03-01) +## [0.1.0](https://github.com/ionic-team/ionic/commit/43a8c4c7a719169336a84964fc1c737562d764a6) (2018-03-01) \ No newline at end of file diff --git a/angular/src/providers/platform.ts b/angular/src/providers/platform.ts index 38b04a0f15..d57f01e3bb 100644 --- a/angular/src/providers/platform.ts +++ b/angular/src/providers/platform.ts @@ -110,6 +110,7 @@ export class Platform { * | Platform Name | Description | * |-----------------|------------------------------------| * | android | on a device running Android. | + * | capacitor | on a device running Capacitor. | * | cordova | on a device running Cordova. | * | ios | on a device running iOS. | * | ipad | on an iPad device. | diff --git a/core/api.txt b/core/api.txt index 62110ab2d8..52cb7fc3f7 100644 --- a/core/api.txt +++ b/core/api.txt @@ -284,7 +284,7 @@ ion-checkbox,prop,mode,"ios" | "md",undefined,false,false ion-checkbox,prop,name,string,this.inputId,false,false ion-checkbox,prop,value,string,'on',false,false ion-checkbox,event,ionBlur,void,true -ion-checkbox,event,ionChange,CheckboxChangeEventDetail,true +ion-checkbox,event,ionChange,CheckboxChangeEventDetail,true ion-checkbox,event,ionFocus,void,true ion-checkbox,css-prop,--background ion-checkbox,css-prop,--background-checked @@ -942,7 +942,7 @@ ion-radio-group,none ion-radio-group,prop,allowEmptySelection,boolean,false,false,false ion-radio-group,prop,name,string,this.inputId,false,false ion-radio-group,prop,value,any,undefined,false,false -ion-radio-group,event,ionChange,RadioGroupChangeEventDetail,true +ion-radio-group,event,ionChange,RadioGroupChangeEventDetail,true ion-range,shadow ion-range,prop,color,string | undefined,undefined,false,true diff --git a/core/package-lock.json b/core/package-lock.json index 417b53024d..65ea9b34d0 100644 --- a/core/package-lock.json +++ b/core/package-lock.json @@ -5532,9 +5532,9 @@ } }, "node_modules/ionicons": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/ionicons/-/ionicons-5.5.1.tgz", - "integrity": "sha512-1auVisfaXmkmxINer8Q3kJGHP1vSxk86hf7By95eJ+Av9+oBcNuAEBfSe3jaMaGRVxVw8U/2j23MFq7R3c0HPg==", + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/ionicons/-/ionicons-5.5.3.tgz", + "integrity": "sha512-L71djrMi8pAad66tpwdnO1vwcyluCFvehzxU1PpH1k/HpYBZhZ5IaYhqXipmqUvu5aEbd4cbRguYyI5Fd4bxTw==", "dependencies": { "@stencil/core": "^2.5.0" } @@ -18378,9 +18378,9 @@ } }, "ionicons": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/ionicons/-/ionicons-5.5.1.tgz", - "integrity": "sha512-1auVisfaXmkmxINer8Q3kJGHP1vSxk86hf7By95eJ+Av9+oBcNuAEBfSe3jaMaGRVxVw8U/2j23MFq7R3c0HPg==", + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/ionicons/-/ionicons-5.5.3.tgz", + "integrity": "sha512-L71djrMi8pAad66tpwdnO1vwcyluCFvehzxU1PpH1k/HpYBZhZ5IaYhqXipmqUvu5aEbd4cbRguYyI5Fd4bxTw==", "requires": { "@stencil/core": "^2.5.0" } diff --git a/core/src/components/checkbox/checkbox-interface.ts b/core/src/components/checkbox/checkbox-interface.ts index cf28aea1d4..2d75b748ea 100644 --- a/core/src/components/checkbox/checkbox-interface.ts +++ b/core/src/components/checkbox/checkbox-interface.ts @@ -1,5 +1,5 @@ -export interface CheckboxChangeEventDetail { - value: any; +export interface CheckboxChangeEventDetail { + value: T; checked: boolean; } diff --git a/core/src/components/checkbox/readme.md b/core/src/components/checkbox/readme.md index 5f644ecaf8..a1728864a8 100644 --- a/core/src/components/checkbox/readme.md +++ b/core/src/components/checkbox/readme.md @@ -271,11 +271,11 @@ export default defineComponent({ ## Events -| Event | Description | Type | -| ----------- | ---------------------------------------------- | ---------------------------------------- | -| `ionBlur` | Emitted when the checkbox loses focus. | `CustomEvent` | -| `ionChange` | Emitted when the checked property has changed. | `CustomEvent` | -| `ionFocus` | Emitted when the checkbox has focus. | `CustomEvent` | +| Event | Description | Type | +| ----------- | ---------------------------------------------- | --------------------------------------------- | +| `ionBlur` | Emitted when the checkbox loses focus. | `CustomEvent` | +| `ionChange` | Emitted when the checked property has changed. | `CustomEvent>` | +| `ionFocus` | Emitted when the checkbox has focus. | `CustomEvent` | ## Shadow Parts diff --git a/core/src/components/item-sliding/item-sliding.tsx b/core/src/components/item-sliding/item-sliding.tsx index b12a0d319a..487fb72679 100644 --- a/core/src/components/item-sliding/item-sliding.tsx +++ b/core/src/components/item-sliding/item-sliding.tsx @@ -247,7 +247,6 @@ export class ItemSliding implements ComponentInterface { const selected = openSlidingItem; if (selected && selected !== this.el) { this.closeOpened(); - return false; } return !!(this.rightOptions || this.leftOptions); diff --git a/core/src/components/radio-group/radio-group-interface.ts b/core/src/components/radio-group/radio-group-interface.ts index ae37e4ecc7..ca8beba631 100644 --- a/core/src/components/radio-group/radio-group-interface.ts +++ b/core/src/components/radio-group/radio-group-interface.ts @@ -1,9 +1,9 @@ -export interface RadioGroupChangeEventDetail { - value: any; +export interface RadioGroupChangeEventDetail { + value: T; } -export interface RadioChangeEventDetail { - value: any; +export interface RadioChangeEventDetail { + value: T; checked: boolean; } diff --git a/core/src/components/radio-group/readme.md b/core/src/components/radio-group/readme.md index 4bc5d362c1..bc56b7b13d 100644 --- a/core/src/components/radio-group/readme.md +++ b/core/src/components/radio-group/readme.md @@ -229,9 +229,9 @@ export default defineComponent({ ## Events -| Event | Description | Type | -| ----------- | ----------------------------------- | ------------------------------------------ | -| `ionChange` | Emitted when the value has changed. | `CustomEvent` | +| Event | Description | Type | +| ----------- | ----------------------------------- | ----------------------------------------------- | +| `ionChange` | Emitted when the value has changed. | `CustomEvent>` | ## Dependencies diff --git a/core/src/utils/gesture/pointer-events.ts b/core/src/utils/gesture/pointer-events.ts index 07ef6f61e3..85ec57a253 100644 --- a/core/src/utils/gesture/pointer-events.ts +++ b/core/src/utils/gesture/pointer-events.ts @@ -30,11 +30,21 @@ export const createPointerEvents = ( if (!rmTouchMove && pointerMove) { rmTouchMove = addEventListener(el, 'touchmove', pointerMove, options); } + + /** + * Events are dispatched on the element that is tapped and bubble up to + * the reference element in the gesture. In the event that the element this + * event was first dispatched on is removed from the DOM, the event will no + * longer bubble up to our reference element. This leaves the gesture in an + * unusable state. To account for this, the touchend and touchcancel listeners + * should be added to the event target so that they still fire even if the target + * is removed from the DOM. + */ if (!rmTouchEnd) { - rmTouchEnd = addEventListener(el, 'touchend', handleTouchEnd, options); + rmTouchEnd = addEventListener(ev.target, 'touchend', handleTouchEnd, options); } if (!rmTouchCancel) { - rmTouchCancel = addEventListener(el, 'touchcancel', handleTouchEnd, options); + rmTouchCancel = addEventListener(ev.target, 'touchcancel', handleTouchEnd, options); } }; diff --git a/packages/react/src/components/navigation/IonTabs.tsx b/packages/react/src/components/navigation/IonTabs.tsx index d4771275c4..151918622e 100644 --- a/packages/react/src/components/navigation/IonTabs.tsx +++ b/packages/react/src/components/navigation/IonTabs.tsx @@ -3,18 +3,19 @@ import React, { Fragment } from 'react'; import { NavContext } from '../../contexts/NavContext'; import PageManager from '../../routing/PageManager'; +import { HTMLElementSSR } from '../../utils/HTMLElementSSR'; import { IonRouterOutlet } from '../IonRouterOutlet'; import { IonTabBar } from './IonTabBar'; import { IonTabsContext, IonTabsContextState } from './IonTabsContext'; -class IonTabsElement extends HTMLElement { +class IonTabsElement extends HTMLElementSSR { constructor() { super(); } } -if (window && window.customElements) { +if (typeof (window as any) !== 'undefined' && window.customElements) { const element = customElements.get('ion-tabs'); if (!element) { customElements.define('ion-tabs', IonTabsElement); diff --git a/packages/react/src/utils/HTMLElementSSR.ts b/packages/react/src/utils/HTMLElementSSR.ts new file mode 100644 index 0000000000..a65188e8c6 --- /dev/null +++ b/packages/react/src/utils/HTMLElementSSR.ts @@ -0,0 +1,4 @@ +export const HTMLElementSSR = ( + typeof HTMLElement !== 'undefined' + ? HTMLElement + : class {}) as typeof HTMLElement; diff --git a/packages/vue-router/package-lock.json b/packages/vue-router/package-lock.json index 41b845b4c4..f61e1cebf0 100644 --- a/packages/vue-router/package-lock.json +++ b/packages/vue-router/package-lock.json @@ -7300,7 +7300,7 @@ "domino": "^2.1.6", "execa": "^5.0.0", "fs-extra": "^9.0.1", - "ionicons": "^5.5.1", + "ionicons": "^5.5.3", "jest": "^26.4.1", "jest-cli": "^26.4.1", "np": "^6.4.0", diff --git a/packages/vue/src/components/IonTabs.ts b/packages/vue/src/components/IonTabs.ts index 32221c3be9..985acbb49d 100644 --- a/packages/vue/src/components/IonTabs.ts +++ b/packages/vue/src/components/IonTabs.ts @@ -34,6 +34,35 @@ export const IonTabs = /*@__PURE__*/ defineComponent({ }, routerOutlet) ]; +<<<<<<< HEAD +======= + if (!userProvidedRouterOutlet && !$data.didWarn) { + console.warn(`[@ionic/vue Deprecation] Starting in Ionic Vue v6.0, developers must add an 'ion-router-outlet' instance inside of 'ion-tabs'. + + Before: + + + + ... + + + + After: + + + + + ... + + + + Be sure to import 'IonRouterOutlet' from '@ionic/vue' and provide that import to your Vue component. See https://ionicframework.com/docs/vue/navigation#working-with-tabs for more information. + `); + + $data.didWarn = true; + } + +>>>>>>> origin/main /** * If ion-tab-bar has slot="top" it needs to be * rendered before `.tabs-inner` otherwise it will