From 8108edd876b10834015016385dc3cd5b8f31fbfa Mon Sep 17 00:00:00 2001 From: Liam DeBeasi Date: Thu, 16 Sep 2021 12:29:12 -0400 Subject: [PATCH 01/17] fix(item-sliding): item-sliding accounts for multiple ion-item elements (#23943) resolves #19312 --- .../components/item-sliding/item-sliding.tsx | 7 +++++ .../item-sliding/test/basic/index.html | 26 +++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/core/src/components/item-sliding/item-sliding.tsx b/core/src/components/item-sliding/item-sliding.tsx index cd6b67841c..b2a854975c 100644 --- a/core/src/components/item-sliding/item-sliding.tsx +++ b/core/src/components/item-sliding/item-sliding.tsx @@ -270,6 +270,13 @@ export class ItemSliding implements ComponentInterface { } private onStart() { + /** + * We need to query for the ion-item + * every time the gesture starts. Developers + * may toggle ion-item elements via *ngIf. + */ + this.item = this.el.querySelector('ion-item'); + // Prevent scrolling during gesture this.disableContentScrollY(); diff --git a/core/src/components/item-sliding/test/basic/index.html b/core/src/components/item-sliding/test/basic/index.html index c5ebbbc100..4a4d6f2784 100644 --- a/core/src/components/item-sliding/test/basic/index.html +++ b/core/src/components/item-sliding/test/basic/index.html @@ -41,6 +41,7 @@ Open Item Start Open Item End Open Item with only one side + Swap dynamic item @@ -369,6 +370,17 @@ + + + Dynamic First Item + + + + First Item Options + + + +

Normal ion-item (no sliding)

@@ -387,6 +399,20 @@
+ + + + + + + + + Label - Color + + + + + + Label Text

This paragraph should not inherit the color from content

+
+
+
+ + From 53d64c1eb8bf67e5c7fab6cb9675bafad2ca31ce Mon Sep 17 00:00:00 2001 From: amandaesmith3 <90629384+amandaesmith3@users.noreply.github.com> Date: Tue, 21 Sep 2021 08:18:31 -0500 Subject: [PATCH 03/17] docs(title): fix typo in usage CSS example (#23957) --- core/src/components/title/readme.md | 8 ++++---- core/src/components/title/usage/angular.md | 2 +- core/src/components/title/usage/javascript.md | 2 +- core/src/components/title/usage/react.md | 2 +- core/src/components/title/usage/stencil.md | 2 +- core/src/components/title/usage/vue.md | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/core/src/components/title/readme.md b/core/src/components/title/readme.md index 8b84b1a403..fd8a31e605 100644 --- a/core/src/components/title/readme.md +++ b/core/src/components/title/readme.md @@ -102,7 +102,7 @@ You can change the background color of the toolbar with the standard title by se When styling the text color of the large title, you should target the large title globally as opposed to within the context of a particular page or tab, otherwise its styles will not be applied during the navigation animation. ```css -ion-title.large-title { +ion-title.title-large { color: purple; font-size: 30px; } @@ -240,7 +240,7 @@ You can change the background color of the toolbar with the standard title by se When styling the text color of the large title, you should target the large title globally as opposed to within the context of a particular page or tab, otherwise its styles will not be applied during the navigation animation. ```css -ion-title.large-title { +ion-title.title-large { color: purple; font-size: 30px; } @@ -381,7 +381,7 @@ You can change the background color of the toolbar with the standard title by se When styling the text color of the large title, you should target the large title globally as opposed to within the context of a particular page or tab, otherwise its styles will not be applied during the navigation animation. ```css -ion-title.large-title { +ion-title.title-large { color: purple; font-size: 30px; } @@ -544,7 +544,7 @@ You can change the background color of the toolbar with the standard title by se When styling the text color of the large title, you should target the large title globally as opposed to within the context of a particular page or tab, otherwise its styles will not be applied during the navigation animation. ```css -ion-title.large-title { +ion-title.title-large { color: purple; font-size: 30px; } diff --git a/core/src/components/title/usage/angular.md b/core/src/components/title/usage/angular.md index 0f4967a927..dcfe393431 100644 --- a/core/src/components/title/usage/angular.md +++ b/core/src/components/title/usage/angular.md @@ -91,7 +91,7 @@ You can change the background color of the toolbar with the standard title by se When styling the text color of the large title, you should target the large title globally as opposed to within the context of a particular page or tab, otherwise its styles will not be applied during the navigation animation. ```css -ion-title.large-title { +ion-title.title-large { color: purple; font-size: 30px; } diff --git a/core/src/components/title/usage/javascript.md b/core/src/components/title/usage/javascript.md index 3fe08dabef..384f5d5686 100644 --- a/core/src/components/title/usage/javascript.md +++ b/core/src/components/title/usage/javascript.md @@ -91,7 +91,7 @@ You can change the background color of the toolbar with the standard title by se When styling the text color of the large title, you should target the large title globally as opposed to within the context of a particular page or tab, otherwise its styles will not be applied during the navigation animation. ```css -ion-title.large-title { +ion-title.title-large { color: purple; font-size: 30px; } diff --git a/core/src/components/title/usage/react.md b/core/src/components/title/usage/react.md index 8926887f95..cf404a8e30 100644 --- a/core/src/components/title/usage/react.md +++ b/core/src/components/title/usage/react.md @@ -127,7 +127,7 @@ You can change the background color of the toolbar with the standard title by se When styling the text color of the large title, you should target the large title globally as opposed to within the context of a particular page or tab, otherwise its styles will not be applied during the navigation animation. ```css -ion-title.large-title { +ion-title.title-large { color: purple; font-size: 30px; } diff --git a/core/src/components/title/usage/stencil.md b/core/src/components/title/usage/stencil.md index 632595b0d9..a6f0c9f3df 100644 --- a/core/src/components/title/usage/stencil.md +++ b/core/src/components/title/usage/stencil.md @@ -130,7 +130,7 @@ You can change the background color of the toolbar with the standard title by se When styling the text color of the large title, you should target the large title globally as opposed to within the context of a particular page or tab, otherwise its styles will not be applied during the navigation animation. ```css -ion-title.large-title { +ion-title.title-large { color: purple; font-size: 30px; } diff --git a/core/src/components/title/usage/vue.md b/core/src/components/title/usage/vue.md index 318656d126..408e1d83e1 100644 --- a/core/src/components/title/usage/vue.md +++ b/core/src/components/title/usage/vue.md @@ -152,7 +152,7 @@ You can change the background color of the toolbar with the standard title by se When styling the text color of the large title, you should target the large title globally as opposed to within the context of a particular page or tab, otherwise its styles will not be applied during the navigation animation. ```css -ion-title.large-title { +ion-title.title-large { color: purple; font-size: 30px; } From e483034f3a0064a9b8cce034177d80c4e6b03294 Mon Sep 17 00:00:00 2001 From: Amanda Smith <90629384+amandaesmith3@users.noreply.github.com> Date: Tue, 21 Sep 2021 10:28:52 -0500 Subject: [PATCH 04/17] docs(refresher): fix 'to to' in snapbackDuration (#23960) --- core/src/components.d.ts | 4 ++-- core/src/components/refresher/readme.md | 2 +- core/src/components/refresher/refresher.tsx | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/core/src/components.d.ts b/core/src/components.d.ts index e44e07918d..5d729cfb6a 100644 --- a/core/src/components.d.ts +++ b/core/src/components.d.ts @@ -1842,7 +1842,7 @@ export namespace Components { */ "pullMin": number; /** - * Time it takes the refresher to to snap back to the `refreshing` state. Does not apply when the refresher content uses a spinner, enabling the native refresher. + * Time it takes the refresher to snap back to the `refreshing` state. Does not apply when the refresher content uses a spinner, enabling the native refresher. */ "snapbackDuration": string; } @@ -5160,7 +5160,7 @@ declare namespace LocalJSX { */ "pullMin"?: number; /** - * Time it takes the refresher to to snap back to the `refreshing` state. Does not apply when the refresher content uses a spinner, enabling the native refresher. + * Time it takes the refresher to snap back to the `refreshing` state. Does not apply when the refresher content uses a spinner, enabling the native refresher. */ "snapbackDuration"?: string; } diff --git a/core/src/components/refresher/readme.md b/core/src/components/refresher/readme.md index 48604174e7..5b5967ea2b 100644 --- a/core/src/components/refresher/readme.md +++ b/core/src/components/refresher/readme.md @@ -279,7 +279,7 @@ export default defineComponent({ | `pullFactor` | `pull-factor` | How much to multiply the pull speed by. To slow the pull animation down, pass a number less than `1`. To speed up the pull, pass a number greater than `1`. The default value is `1` which is equal to the speed of the cursor. If a negative value is passed in, the factor will be `1` instead. For example: If the value passed is `1.2` and the content is dragged by `10` pixels, instead of `10` pixels the content will be pulled by `12` pixels (an increase of 20 percent). If the value passed is `0.8`, the dragged amount will be `8` pixels, less than the amount the cursor has moved. Does not apply when the refresher content uses a spinner, enabling the native refresher. | `number` | `1` | | `pullMax` | `pull-max` | The maximum distance of the pull until the refresher will automatically go into the `refreshing` state. Defaults to the result of `pullMin + 60`. Does not apply when the refresher content uses a spinner, enabling the native refresher. | `number` | `this.pullMin + 60` | | `pullMin` | `pull-min` | The minimum distance the user must pull down until the refresher will go into the `refreshing` state. Does not apply when the refresher content uses a spinner, enabling the native refresher. | `number` | `60` | -| `snapbackDuration` | `snapback-duration` | Time it takes the refresher to to snap back to the `refreshing` state. Does not apply when the refresher content uses a spinner, enabling the native refresher. | `string` | `'280ms'` | +| `snapbackDuration` | `snapback-duration` | Time it takes the refresher to snap back to the `refreshing` state. Does not apply when the refresher content uses a spinner, enabling the native refresher. | `string` | `'280ms'` | ## Events diff --git a/core/src/components/refresher/refresher.tsx b/core/src/components/refresher/refresher.tsx index 075590ae24..5373618ce7 100644 --- a/core/src/components/refresher/refresher.tsx +++ b/core/src/components/refresher/refresher.tsx @@ -73,7 +73,7 @@ export class Refresher implements ComponentInterface { @Prop() closeDuration = '280ms'; /** - * Time it takes the refresher to to snap back to the `refreshing` state. + * Time it takes the refresher to snap back to the `refreshing` state. * Does not apply when the refresher content uses a spinner, * enabling the native refresher. */ From 00269941ca892f4bcd34dacb791ae16449afc0f5 Mon Sep 17 00:00:00 2001 From: Amanda Smith <90629384+amandaesmith3@users.noreply.github.com> Date: Tue, 21 Sep 2021 13:08:55 -0500 Subject: [PATCH 05/17] docs(router): make root prop docs more descriptive (#23961) --- core/src/components.d.ts | 4 ++-- core/src/components/router/readme.md | 2 +- core/src/components/router/router.tsx | 5 ++--- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/core/src/components.d.ts b/core/src/components.d.ts index 5d729cfb6a..3d54823801 100644 --- a/core/src/components.d.ts +++ b/core/src/components.d.ts @@ -1936,7 +1936,7 @@ export namespace Components { */ "push": (url: string, direction?: RouterDirection, animation?: AnimationBuilder | undefined) => Promise; /** - * By default `ion-router` will match the routes at the root path ("/"). That can be changed when + * The root path to use when matching URLs. By default, this is set to "/", but you can specify an alternate prefix for all URL paths. */ "root": string; /** @@ -5250,7 +5250,7 @@ declare namespace LocalJSX { */ "onIonRouteWillChange"?: (event: CustomEvent) => void; /** - * By default `ion-router` will match the routes at the root path ("/"). That can be changed when + * The root path to use when matching URLs. By default, this is set to "/", but you can specify an alternate prefix for all URL paths. */ "root"?: string; /** diff --git a/core/src/components/router/readme.md b/core/src/components/router/readme.md index b48b808c8b..8ab3561b02 100644 --- a/core/src/components/router/readme.md +++ b/core/src/components/router/readme.md @@ -54,7 +54,7 @@ In order to configure this relationship between components (to load/select) and | Property | Attribute | Description | Type | Default | | --------- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------- | ------- | -| `root` | `root` | By default `ion-router` will match the routes at the root path ("/"). That can be changed when | `string` | `'/'` | +| `root` | `root` | The root path to use when matching URLs. By default, this is set to "/", but you can specify an alternate prefix for all URL paths. | `string` | `'/'` | | `useHash` | `use-hash` | The router can work in two "modes": - With hash: `/index.html#/path/to/page` - Without hash: `/path/to/page` Using one or another might depend in the requirements of your app and/or where it's deployed. Usually "hash-less" navigation works better for SEO and it's more user friendly too, but it might requires additional server-side configuration in order to properly work. On the other side hash-navigation is much easier to deploy, it even works over the file protocol. By default, this property is `true`, change to `false` to allow hash-less URLs. | `boolean` | `true` | diff --git a/core/src/components/router/router.tsx b/core/src/components/router/router.tsx index bcb29e3fe4..5b15779ea7 100644 --- a/core/src/components/router/router.tsx +++ b/core/src/components/router/router.tsx @@ -25,9 +25,8 @@ export class Router implements ComponentInterface { @Element() el!: HTMLElement; /** - * By default `ion-router` will match the routes at the root path ("/"). - * That can be changed when - * + * The root path to use when matching URLs. By default, this is set to "/", but you can specify + * an alternate prefix for all URL paths. */ @Prop() root = '/'; From 3c1be89112d464e77d65c875223138aaedf350cd Mon Sep 17 00:00:00 2001 From: Liam DeBeasi Date: Wed, 22 Sep 2021 08:51:33 -0400 Subject: [PATCH 06/17] fix(angular): select method now has correct types (#23953) resolves #23952 --- angular/src/directives/navigation/ion-tabs.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/angular/src/directives/navigation/ion-tabs.ts b/angular/src/directives/navigation/ion-tabs.ts index af4dc7a6a4..6596980246 100644 --- a/angular/src/directives/navigation/ion-tabs.ts +++ b/angular/src/directives/navigation/ion-tabs.ts @@ -87,8 +87,9 @@ export class IonTabs { * to the default tabRootUrl */ @HostListener('ionTabButtonClick', ['$event']) - select(ev: CustomEvent) { - const tab = ev.detail.tab; + select(tabOrEvent: string | CustomEvent) { + const isTabString = typeof tabOrEvent === 'string'; + const tab = (isTabString) ? tabOrEvent : (tabOrEvent as CustomEvent).detail.tab; const alreadySelected = this.outlet.getActiveStackId() === tab; const tabRootUrl = `${this.outlet.tabsPrefix}/${tab}`; @@ -98,7 +99,9 @@ export class IonTabs { * will respond to this event too, causing * the app to get directed to the wrong place. */ - ev.stopPropagation(); + if (!isTabString) { + (tabOrEvent as CustomEvent).stopPropagation(); + } if (alreadySelected) { const activeStackId = this.outlet.getActiveStackId(); From 598aaed4bf29f4d7206784003ca33c0a48981a1e Mon Sep 17 00:00:00 2001 From: Liam DeBeasi Date: Wed, 22 Sep 2021 09:14:14 -0400 Subject: [PATCH 07/17] 5.8.1 --- CHANGELOG.md | 13 ++++++++++++- angular/package-lock.json | 18 +++++++++--------- angular/package.json | 4 ++-- core/package-lock.json | 4 ++-- core/package.json | 2 +- docs/package.json | 2 +- packages/angular-server/package-lock.json | 18 +++++++++--------- packages/angular-server/package.json | 4 ++-- packages/react-router/package.json | 8 ++++---- packages/react/package.json | 4 ++-- packages/vue-router/package-lock.json | 6 +++--- packages/vue-router/package.json | 2 +- packages/vue/package-lock.json | 18 +++++++++--------- packages/vue/package.json | 4 ++-- 14 files changed, 59 insertions(+), 48 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index daf405d22d..2c930675de 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,14 @@ +## [5.8.1](https://github.com/ionic-team/ionic/compare/v5.8.0...v5.8.1) (2021-09-22) + + +### Bug Fixes + +* **angular:** select method now has correct types ([#23953](https://github.com/ionic-team/ionic/issues/23953)) ([3c1be89](https://github.com/ionic-team/ionic/commit/3c1be89112d464e77d65c875223138aaedf350cd)), closes [#23952](https://github.com/ionic-team/ionic/issues/23952) +* **item-sliding:** item-sliding accounts for multiple ion-item elements ([#23943](https://github.com/ionic-team/ionic/issues/23943)) ([8108edd](https://github.com/ionic-team/ionic/commit/8108edd876b10834015016385dc3cd5b8f31fbfa)), closes [#19312](https://github.com/ionic-team/ionic/issues/19312) +* **label:** only inherit color if color property is set on ion-item ([#23944](https://github.com/ionic-team/ionic/issues/23944)) ([ae1325c](https://github.com/ionic-team/ionic/commit/ae1325cee698066a71aae4e7deb953c4185c0926)), closes [#20125](https://github.com/ionic-team/ionic/issues/20125) + + + # [5.8.0 Calcium](https://github.com/ionic-team/ionic/compare/v5.7.0...v5.8.0) (2021-09-15) @@ -4014,4 +4025,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/package-lock.json b/angular/package-lock.json index 5eae60d606..62da38ff0c 100644 --- a/angular/package-lock.json +++ b/angular/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/angular", - "version": "5.8.0", + "version": "5.8.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/angular", - "version": "5.8.0", + "version": "5.8.1", "license": "MIT", "dependencies": { - "@ionic/core": "5.7.0", + "@ionic/core": "5.8.0", "tslib": "^1.9.3" }, "devDependencies": { @@ -204,9 +204,9 @@ } }, "node_modules/@ionic/core": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-5.7.0.tgz", - "integrity": "sha512-5GunAeZWDhjbo4/gFCYjA4vXP3V+8PEoGa9C+ZEojurpk7IBuAtI36KalCukrHLPoIbfUCywTXoZubfC1S6lHQ==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-5.8.0.tgz", + "integrity": "sha512-rzjAgS5pJgy/Ggtq1lgogl6thiEMMusnm96D6RsVLa4nxYrHIt9Oua062uIYrf0LdasqatekSxIqcU5Fl9YKEg==", "dependencies": { "@stencil/core": "^2.4.0", "ionicons": "^5.5.3", @@ -5156,9 +5156,9 @@ } }, "@ionic/core": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-5.7.0.tgz", - "integrity": "sha512-5GunAeZWDhjbo4/gFCYjA4vXP3V+8PEoGa9C+ZEojurpk7IBuAtI36KalCukrHLPoIbfUCywTXoZubfC1S6lHQ==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-5.8.0.tgz", + "integrity": "sha512-rzjAgS5pJgy/Ggtq1lgogl6thiEMMusnm96D6RsVLa4nxYrHIt9Oua062uIYrf0LdasqatekSxIqcU5Fl9YKEg==", "requires": { "@stencil/core": "^2.4.0", "ionicons": "^5.5.3", diff --git a/angular/package.json b/angular/package.json index 005e275395..0bc95e7306 100644 --- a/angular/package.json +++ b/angular/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/angular", - "version": "5.8.0", + "version": "5.8.1", "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": "5.8.0", + "@ionic/core": "5.8.1", "tslib": "^1.9.3" }, "peerDependencies": { diff --git a/core/package-lock.json b/core/package-lock.json index 4948133771..77c8ed1e2e 100644 --- a/core/package-lock.json +++ b/core/package-lock.json @@ -1,12 +1,12 @@ { "name": "@ionic/core", - "version": "5.8.0", + "version": "5.8.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/core", - "version": "5.8.0", + "version": "5.8.1", "license": "MIT", "dependencies": { "@stencil/core": "^2.4.0", diff --git a/core/package.json b/core/package.json index f4fd558f66..d89aa7cd3f 100644 --- a/core/package.json +++ b/core/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/core", - "version": "5.8.0", + "version": "5.8.1", "description": "Base components for Ionic", "keywords": [ "ionic", diff --git a/docs/package.json b/docs/package.json index 75d16d3d03..22ebef0c88 100644 --- a/docs/package.json +++ b/docs/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/docs", - "version": "5.8.0", + "version": "5.8.1", "description": "Pre-packaged API documentation for the Ionic docs.", "main": "core.json", "types": "core.d.ts", diff --git a/packages/angular-server/package-lock.json b/packages/angular-server/package-lock.json index 921528c695..083f8988a5 100644 --- a/packages/angular-server/package-lock.json +++ b/packages/angular-server/package-lock.json @@ -1,12 +1,12 @@ { "name": "@ionic/angular-server", - "version": "5.8.0", + "version": "5.8.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/angular-server", - "version": "5.8.0", + "version": "5.8.1", "license": "MIT", "devDependencies": { "@angular/animations": "8.2.13", @@ -16,7 +16,7 @@ "@angular/core": "8.2.13", "@angular/platform-browser": "8.2.13", "@angular/platform-server": "8.2.13", - "@ionic/core": "5.7.0", + "@ionic/core": "5.8.0", "ng-packagr": "5.7.1", "tslint": "^5.12.1", "tslint-ionic-rules": "0.0.21", @@ -137,9 +137,9 @@ } }, "node_modules/@ionic/core": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-5.7.0.tgz", - "integrity": "sha512-5GunAeZWDhjbo4/gFCYjA4vXP3V+8PEoGa9C+ZEojurpk7IBuAtI36KalCukrHLPoIbfUCywTXoZubfC1S6lHQ==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-5.8.0.tgz", + "integrity": "sha512-rzjAgS5pJgy/Ggtq1lgogl6thiEMMusnm96D6RsVLa4nxYrHIt9Oua062uIYrf0LdasqatekSxIqcU5Fl9YKEg==", "dev": true, "dependencies": { "@stencil/core": "^2.4.0", @@ -5424,9 +5424,9 @@ } }, "@ionic/core": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-5.7.0.tgz", - "integrity": "sha512-5GunAeZWDhjbo4/gFCYjA4vXP3V+8PEoGa9C+ZEojurpk7IBuAtI36KalCukrHLPoIbfUCywTXoZubfC1S6lHQ==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-5.8.0.tgz", + "integrity": "sha512-rzjAgS5pJgy/Ggtq1lgogl6thiEMMusnm96D6RsVLa4nxYrHIt9Oua062uIYrf0LdasqatekSxIqcU5Fl9YKEg==", "dev": true, "requires": { "@stencil/core": "^2.4.0", diff --git a/packages/angular-server/package.json b/packages/angular-server/package.json index 9642aa8114..db6301dcff 100644 --- a/packages/angular-server/package.json +++ b/packages/angular-server/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/angular-server", - "version": "5.8.0", + "version": "5.8.1", "description": "Angular SSR Module for Ionic", "keywords": [ "ionic", @@ -49,7 +49,7 @@ "@angular/core": "8.2.13", "@angular/platform-browser": "8.2.13", "@angular/platform-server": "8.2.13", - "@ionic/core": "5.8.0", + "@ionic/core": "5.8.1", "ng-packagr": "5.7.1", "tslint": "^5.12.1", "tslint-ionic-rules": "0.0.21", diff --git a/packages/react-router/package.json b/packages/react-router/package.json index 1cd815e70e..69cd629230 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/react-router", - "version": "5.8.0", + "version": "5.8.1", "description": "React Router wrapper for @ionic/react", "keywords": [ "ionic", @@ -39,15 +39,15 @@ "tslib": "*" }, "peerDependencies": { - "@ionic/react": "5.8.0", + "@ionic/react": "5.8.1", "react": ">=16.8.6", "react-dom": ">=16.8.6", "react-router": "^5.0.1", "react-router-dom": "^5.0.1" }, "devDependencies": { - "@ionic/core": "5.8.0", - "@ionic/react": "5.8.0", + "@ionic/core": "5.8.1", + "@ionic/react": "5.8.1", "@rollup/plugin-node-resolve": "^8.1.0", "@testing-library/jest-dom": "^5.11.6", "@testing-library/react": "^11.2.2", diff --git a/packages/react/package.json b/packages/react/package.json index c45d74d1af..875adc9eba 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/react", - "version": "5.8.0", + "version": "5.8.1", "description": "React specific wrapper for @ionic/core", "keywords": [ "ionic", @@ -39,7 +39,7 @@ "css/" ], "dependencies": { - "@ionic/core": "5.8.0", + "@ionic/core": "5.8.1", "ionicons": "^5.1.2", "tslib": "*" }, diff --git a/packages/vue-router/package-lock.json b/packages/vue-router/package-lock.json index 53321d4e2d..a2c73457b6 100644 --- a/packages/vue-router/package-lock.json +++ b/packages/vue-router/package-lock.json @@ -1,12 +1,12 @@ { "name": "@ionic/vue-router", - "version": "5.8.0", + "version": "5.8.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/vue-router", - "version": "5.8.0", + "version": "5.8.1", "license": "MIT", "devDependencies": { "@ionic/vue": "5.4.1", @@ -23,7 +23,7 @@ }, "../../core": { "name": "@ionic/core", - "version": "5.7.0", + "version": "5.8.0", "dev": true, "license": "MIT", "dependencies": { diff --git a/packages/vue-router/package.json b/packages/vue-router/package.json index cd5a0ff134..ffcaa46bdc 100644 --- a/packages/vue-router/package.json +++ b/packages/vue-router/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/vue-router", - "version": "5.8.0", + "version": "5.8.1", "description": "Vue Router integration for @ionic/vue", "scripts": { "test.spec": "jest", diff --git a/packages/vue/package-lock.json b/packages/vue/package-lock.json index e143b40688..3c27457f3e 100644 --- a/packages/vue/package-lock.json +++ b/packages/vue/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/vue", - "version": "5.8.0", + "version": "5.8.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/vue", - "version": "5.8.0", + "version": "5.8.1", "license": "MIT", "dependencies": { - "@ionic/core": "5.7.0", + "@ionic/core": "5.8.0", "ionicons": "^5.1.2" }, "devDependencies": { @@ -53,9 +53,9 @@ } }, "node_modules/@ionic/core": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-5.7.0.tgz", - "integrity": "sha512-5GunAeZWDhjbo4/gFCYjA4vXP3V+8PEoGa9C+ZEojurpk7IBuAtI36KalCukrHLPoIbfUCywTXoZubfC1S6lHQ==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-5.8.0.tgz", + "integrity": "sha512-rzjAgS5pJgy/Ggtq1lgogl6thiEMMusnm96D6RsVLa4nxYrHIt9Oua062uIYrf0LdasqatekSxIqcU5Fl9YKEg==", "dependencies": { "@stencil/core": "^2.4.0", "ionicons": "^5.5.3", @@ -633,9 +633,9 @@ } }, "@ionic/core": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-5.7.0.tgz", - "integrity": "sha512-5GunAeZWDhjbo4/gFCYjA4vXP3V+8PEoGa9C+ZEojurpk7IBuAtI36KalCukrHLPoIbfUCywTXoZubfC1S6lHQ==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-5.8.0.tgz", + "integrity": "sha512-rzjAgS5pJgy/Ggtq1lgogl6thiEMMusnm96D6RsVLa4nxYrHIt9Oua062uIYrf0LdasqatekSxIqcU5Fl9YKEg==", "requires": { "@stencil/core": "^2.4.0", "ionicons": "^5.5.3", diff --git a/packages/vue/package.json b/packages/vue/package.json index b88cca0869..4bf4ce7ca1 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/vue", - "version": "5.8.0", + "version": "5.8.1", "description": "Vue specific wrapper for @ionic/core", "scripts": { "lint": "echo add linter", @@ -57,7 +57,7 @@ "vue-router": "^4.0.0-rc.4" }, "dependencies": { - "@ionic/core": "5.8.0", + "@ionic/core": "5.8.1", "ionicons": "^5.1.2" }, "vetur": { From aa4ba890e9c18e8a911c5188b3e2e85433658be9 Mon Sep 17 00:00:00 2001 From: Liam DeBeasi Date: Thu, 23 Sep 2021 10:05:32 -0400 Subject: [PATCH 08/17] fix(select-popover): non-scrollable popovers no longer have forced overscroll (#23972) resolves #23971 --- .../select-popover/select-popover.scss | 4 ++-- .../select-popover/select-popover.vars.scss | 16 ---------------- 2 files changed, 2 insertions(+), 18 deletions(-) delete mode 100644 core/src/components/select-popover/select-popover.vars.scss diff --git a/core/src/components/select-popover/select-popover.scss b/core/src/components/select-popover/select-popover.scss index 5b76901dbf..9836ba0852 100644 --- a/core/src/components/select-popover/select-popover.scss +++ b/core/src/components/select-popover/select-popover.scss @@ -1,7 +1,7 @@ -@import "./select-popover.vars"; +@import "../../themes/ionic.globals"; :host ion-list { - @include margin($select-popover-list-margin-top, $select-popover-list-margin-end, $select-popover-list-margin-bottom, $select-popover-list-margin-start); + @include margin(0); } :host ion-list-header, diff --git a/core/src/components/select-popover/select-popover.vars.scss b/core/src/components/select-popover/select-popover.vars.scss deleted file mode 100644 index 09d0d564dd..0000000000 --- a/core/src/components/select-popover/select-popover.vars.scss +++ /dev/null @@ -1,16 +0,0 @@ -@import "../../themes/ionic.globals"; - -// Select -// -------------------------------------------------- - -/// @prop - Margin top of the select popover list -$select-popover-list-margin-top: -1px !default; - -/// @prop - Margin end of the select popover list -$select-popover-list-margin-end: 0 !default; - -/// @prop - Margin bottom of the select popover list -$select-popover-list-margin-bottom: -1px !default; - -/// @prop - Margin start of the select popover list -$select-popover-list-margin-start: 0 !default; From 3ca04197a4186c85d04cdf04fa9cb2689ca1bbfb Mon Sep 17 00:00:00 2001 From: Liam DeBeasi Date: Thu, 23 Sep 2021 16:08:33 -0400 Subject: [PATCH 09/17] fix(item-sliding): closing an item can no longer be interrupted (#23973) resolves #23969 --- core/src/components/item-sliding/item-sliding.tsx | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/core/src/components/item-sliding/item-sliding.tsx b/core/src/components/item-sliding/item-sliding.tsx index b2a854975c..311aa13953 100644 --- a/core/src/components/item-sliding/item-sliding.tsx +++ b/core/src/components/item-sliding/item-sliding.tsx @@ -394,16 +394,28 @@ export class ItemSliding implements ComponentInterface { ? SlidingState.Start | SlidingState.SwipeStart : SlidingState.Start; } else { + /** + * Item sliding cannot be interrupted + * while closing the item. If it did, + * it would allow the item to get into an + * inconsistent state where multiple + * items are then open at the same time. + */ + if (this.gesture) { + this.gesture.enable(false); + } this.tmr = setTimeout(() => { this.state = SlidingState.Disabled; this.tmr = undefined; + if (this.gesture) { + this.gesture.enable(true); + } }, 600) as any; openSlidingItem = undefined; style.transform = ''; return; } - style.transform = `translate3d(${-openAmount}px,0,0)`; this.ionDrag.emit({ amount: openAmount, From a26275378f10835343ad8a6cdea50303e6c10a14 Mon Sep 17 00:00:00 2001 From: Amanda Smith <90629384+amandaesmith3@users.noreply.github.com> Date: Fri, 24 Sep 2021 14:23:41 -0500 Subject: [PATCH 10/17] fix(alert): made it easier to tell if alert is scrollable in MD mode (#23976) --- core/src/components/alert/alert.md.vars.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/components/alert/alert.md.vars.scss b/core/src/components/alert/alert.md.vars.scss index 75cc4fcee3..928132fe17 100644 --- a/core/src/components/alert/alert.md.vars.scss +++ b/core/src/components/alert/alert.md.vars.scss @@ -80,7 +80,7 @@ $alert-md-message-empty-padding-bottom: $alert-md-message-empty-padding-to $alert-md-message-empty-padding-start: $alert-md-message-empty-padding-end !default; /// @prop - Maximum height of the alert content -$alert-md-content-max-height: 240px !default; +$alert-md-content-max-height: 266px !default; /// @prop - Border width of the alert input $alert-md-input-border-width: 1px !default; From 7010fe97a7d811583c832f6f5089ce32bab66515 Mon Sep 17 00:00:00 2001 From: Mads Buchmann Frederiksen Date: Mon, 27 Sep 2021 16:35:28 +0200 Subject: [PATCH 11/17] docs(readme): fix broken link to CONTRIBUTE guide (#23982) --- core/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/README.md b/core/README.md index b97610354d..abd975f830 100644 --- a/core/README.md +++ b/core/README.md @@ -60,7 +60,7 @@ Notice how `IonBadge` is imported from `@ionic/core/components/ion-badge` rather ## How to contribute -[Check out the CONTRIBUTE guide](CONTRIBUTING.md) +[Check out the CONTRIBUTE guide](/.github/CONTRIBUTING.md) ## Related From 25eb8cdf98fe455433ca6185e89d9e1223a6d3ae Mon Sep 17 00:00:00 2001 From: Liam DeBeasi Date: Thu, 30 Sep 2021 18:37:47 -0400 Subject: [PATCH 12/17] fix(status-bar): tapping status bar correctly scrolls content to top (#24001) resolves #20423 Co-authored-by: Hans Krywalsky --- core/src/utils/status-tap.ts | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/core/src/utils/status-tap.ts b/core/src/utils/status-tap.ts index fbfe4f93c9..cc25d851c3 100644 --- a/core/src/utils/status-tap.ts +++ b/core/src/utils/status-tap.ts @@ -15,7 +15,21 @@ export const startStatusTap = () => { const contentEl = el.closest('ion-content'); if (contentEl) { new Promise(resolve => componentOnReady(contentEl, resolve)).then(() => { - writeTask(() => contentEl.scrollToTop(300)); + writeTask(async () => { + + /** + * If scrolling and user taps status bar, + * only calling scrollToTop is not enough + * as engines like WebKit will jump the + * scroll position back down and complete + * any in-progress momentum scrolling. + */ + contentEl.style.setProperty('--overflow', 'hidden'); + + await contentEl.scrollToTop(300); + + contentEl.style.removeProperty('--overflow'); + }); }); } }); From f112ad4490dc4a179dc3feab495530e14e655e5a Mon Sep 17 00:00:00 2001 From: Robert Rhoades Date: Mon, 4 Oct 2021 15:21:48 +0100 Subject: [PATCH 13/17] fix(angular): use initialize function when setting up ionic angular to avoid config errors (#24004) resolves #22853 Co-authored-by: Liam DeBeasi --- angular/src/app-initialize.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/angular/src/app-initialize.ts b/angular/src/app-initialize.ts index 610d608e03..a280bc6b17 100644 --- a/angular/src/app-initialize.ts +++ b/angular/src/app-initialize.ts @@ -1,4 +1,5 @@ import { NgZone } from '@angular/core'; +import { initialize } from '@ionic/core'; import { applyPolyfills, defineCustomElements } from '@ionic/core/loader'; import { Config } from './providers/config'; @@ -9,12 +10,11 @@ export const appInitialize = (config: Config, doc: Document, zone: NgZone) => { return (): any => { const win: IonicWindow | undefined = doc.defaultView as any; if (win && typeof (window as any) !== 'undefined') { - const Ionic = win.Ionic = win.Ionic || {}; - Ionic.config = { + initialize({ ...config, _zoneGate: (h: any) => zone.run(h) - }; + }); const aelFn = '__zone_symbol__addEventListener' in (doc.body as any) ? '__zone_symbol__addEventListener' From 2c977126012ae0231d4e4fa63cc76a528bde699b Mon Sep 17 00:00:00 2001 From: Ely Lucas Date: Tue, 5 Oct 2021 06:44:40 -0600 Subject: [PATCH 14/17] fix(react): overlay hooks memorised properly to prevent re-renders (#24010) resolves #23741 Co-authored-by: Fabrice --- packages/react/package.json | 1 + .../react/src/hooks/__tests__/hooks.spec.tsx | 153 ++++++++++++++++++ packages/react/src/hooks/useController.ts | 100 +++++------- packages/react/src/hooks/useIonActionSheet.ts | 34 ++-- packages/react/src/hooks/useIonAlert.ts | 36 ++--- packages/react/src/hooks/useIonLoading.tsx | 40 +++-- packages/react/src/hooks/useIonModal.ts | 20 ++- packages/react/src/hooks/useIonPicker.tsx | 16 +- packages/react/src/hooks/useIonPopover.ts | 5 +- packages/react/src/hooks/useIonToast.ts | 7 +- packages/react/src/hooks/useOverlay.ts | 10 +- 11 files changed, 276 insertions(+), 146 deletions(-) create mode 100644 packages/react/src/hooks/__tests__/hooks.spec.tsx diff --git a/packages/react/package.json b/packages/react/package.json index 875adc9eba..4b209ab97e 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -52,6 +52,7 @@ "@rollup/plugin-virtual": "^2.0.3", "@testing-library/jest-dom": "^5.11.6", "@testing-library/react": "^11.2.2", + "@testing-library/react-hooks": "^7.0.1", "@types/jest": "^26.0.15", "@types/node": "^14.0.14", "@types/react": "16.14.0", diff --git a/packages/react/src/hooks/__tests__/hooks.spec.tsx b/packages/react/src/hooks/__tests__/hooks.spec.tsx new file mode 100644 index 0000000000..28a570b490 --- /dev/null +++ b/packages/react/src/hooks/__tests__/hooks.spec.tsx @@ -0,0 +1,153 @@ +import { alertController, modalController } from '@ionic/core'; + +import React from 'react'; + +import { useController } from '../useController'; +import { useOverlay } from '../useOverlay'; + +import { useIonActionSheet } from '../useIonActionSheet'; +import type { UseIonActionSheetResult } from '../useIonActionSheet'; +import { useIonAlert } from '../useIonAlert'; +import type { UseIonAlertResult } from '../useIonAlert'; +import { useIonLoading } from '../useIonLoading'; +import type { UseIonLoadingResult } from '../useIonLoading'; +import { useIonModal } from '../useIonModal'; +import type { UseIonModalResult } from '../useIonModal'; +import { useIonPicker } from '../useIonPicker'; +import type { UseIonPickerResult } from '../useIonPicker'; +import { useIonPopover } from '../useIonPopover'; +import type { UseIonPopoverResult } from '../useIonPopover'; +import { useIonToast } from '../useIonToast'; +import type { UseIonToastResult } from '../useIonToast'; + +import { renderHook } from '@testing-library/react-hooks'; + +describe('useController', () => { + it('should be memorised', () => { + const { result, rerender } = renderHook(() => + useController('AlertController', alertController) + ); + + rerender(); + + const [ + { present: firstPresent, dismiss: firstDismiss }, + { present: secondPresent, dismiss: secondDismiss }, + ] = result.all as ReturnType[]; + + expect(firstPresent).toBe(secondPresent); + expect(firstDismiss).toBe(secondDismiss); + }); +}); + +describe('useIonActionSheet', () => { + it('should be memorised', () => { + const { result, rerender } = renderHook(() => useIonActionSheet()); + + rerender(); + + const [[firstPresent, firstDismiss], [secondPresent, secondDismiss]] = + result.all as UseIonActionSheetResult[]; + expect(firstPresent).toBe(secondPresent); + expect(firstDismiss).toBe(secondDismiss); + }); +}); + +describe('useIonAlert', () => { + it('should be memorised', () => { + const { result, rerender } = renderHook(() => useIonAlert()); + + rerender(); + + const [[firstPresent, firstDismiss], [secondPresent, secondDismiss]] = + result.all as UseIonAlertResult[]; + expect(firstPresent).toBe(secondPresent); + expect(firstDismiss).toBe(secondDismiss); + }); +}); + +describe('useIonLoading', () => { + it('should be memorised', () => { + const { result, rerender } = renderHook(() => useIonLoading()); + + rerender(); + + const [[firstPresent, firstDismiss], [secondPresent, secondDismiss]] = + result.all as UseIonLoadingResult[]; + expect(firstPresent).toBe(secondPresent); + expect(firstDismiss).toBe(secondDismiss); + }); +}); + +describe('useIonModal', () => { + it('should be memorised', () => { + const ModalComponent = () =>
; + const { result, rerender } = renderHook(() => useIonModal(ModalComponent, {})); + + rerender(); + + const [[firstPresent, firstDismiss], [secondPresent, secondDismiss]] = + result.all as UseIonModalResult[]; + expect(firstPresent).toBe(secondPresent); + expect(firstDismiss).toBe(secondDismiss); + }); +}); + +describe('useIonPicker', () => { + it('should be memorised', () => { + const { result, rerender } = renderHook(() => useIonPicker()); + + rerender(); + + const [[firstPresent, firstDismiss], [secondPresent, secondDismiss]] = + result.all as UseIonPickerResult[]; + expect(firstPresent).toBe(secondPresent); + expect(firstDismiss).toBe(secondDismiss); + }); +}); + +describe('useIonPopover', () => { + it('should be memorised', () => { + const PopoverComponent = () =>
; + const { result, rerender } = renderHook(() => useIonPopover(PopoverComponent, {})); + + rerender(); + + const [[firstPresent, firstDismiss], [secondPresent, secondDismiss]] = + result.all as UseIonPopoverResult[]; + expect(firstPresent).toBe(secondPresent); + expect(firstDismiss).toBe(secondDismiss); + }); +}); + +describe('useIonToast', () => { + it('should be memorised', () => { + const { result, rerender } = renderHook(() => useIonToast()); + + rerender(); + + const [[firstPresent, firstDismiss], [secondPresent, secondDismiss]] = + result.all as UseIonToastResult[]; + expect(firstPresent).toBe(secondPresent); + expect(firstDismiss).toBe(secondDismiss); + }); +}); + +describe('useOverlay', () => { + it('should be memorised', () => { + const OverlayComponent = () =>
; + const { result, rerender } = renderHook(() => + useOverlay('IonModal', modalController, OverlayComponent, {}) + ); + + rerender(); + + const [ + { present: firstPresent, dismiss: firstDismiss }, + { present: secondPresent, dismiss: secondDismiss }, + ] = result.all as ReturnType[]; + + expect(firstPresent).toBe(secondPresent); + expect(firstDismiss).toBe(secondDismiss); + }); +}); diff --git a/packages/react/src/hooks/useController.ts b/packages/react/src/hooks/useController.ts index fa596f3704..39da229483 100644 --- a/packages/react/src/hooks/useController.ts +++ b/packages/react/src/hooks/useController.ts @@ -1,5 +1,5 @@ import { OverlayEventDetail } from '@ionic/core'; -import { useMemo, useRef } from 'react'; +import { useCallback, useMemo, useRef } from 'react'; import { attachProps } from '../components/utils'; @@ -10,71 +10,53 @@ interface OverlayBase extends HTMLElement { dismiss: (data?: any, role?: string | undefined) => Promise; } -export function useController< - OptionsType, - OverlayType extends OverlayBase ->( +export function useController( displayName: string, controller: { create: (options: OptionsType) => Promise } ) { const overlayRef = useRef(); - const didDismissEventName = useMemo( - () => `on${displayName}DidDismiss`, - [displayName] - ); - const didPresentEventName = useMemo( - () => `on${displayName}DidPresent`, - [displayName] - ); - const willDismissEventName = useMemo( - () => `on${displayName}WillDismiss`, - [displayName] - ); - const willPresentEventName = useMemo( - () => `on${displayName}WillPresent`, - [displayName] - ); + const didDismissEventName = useMemo(() => `on${displayName}DidDismiss`, [displayName]); + const didPresentEventName = useMemo(() => `on${displayName}DidPresent`, [displayName]); + const willDismissEventName = useMemo(() => `on${displayName}WillDismiss`, [displayName]); + const willPresentEventName = useMemo(() => `on${displayName}WillPresent`, [displayName]); - const present = async (options: OptionsType & HookOverlayOptions) => { - if (overlayRef.current) { - return; - } - const { - onDidDismiss, - onWillDismiss, - onDidPresent, - onWillPresent, - ...rest - } = options; - - const handleDismiss = (event: CustomEvent>) => { - if (onDidDismiss) { - onDidDismiss(event); + const present = useCallback( + async (options: OptionsType & HookOverlayOptions) => { + if (overlayRef.current) { + return; } + const { onDidDismiss, onWillDismiss, onDidPresent, onWillPresent, ...rest } = options; + + const handleDismiss = (event: CustomEvent>) => { + if (onDidDismiss) { + onDidDismiss(event); + } + overlayRef.current = undefined; + }; + + overlayRef.current = await controller.create({ + ...(rest as any), + }); + + attachProps(overlayRef.current, { + [didDismissEventName]: handleDismiss, + [didPresentEventName]: (e: CustomEvent) => onDidPresent && onDidPresent(e), + [willDismissEventName]: (e: CustomEvent) => onWillDismiss && onWillDismiss(e), + [willPresentEventName]: (e: CustomEvent) => onWillPresent && onWillPresent(e), + }); + + overlayRef.current.present(); + }, + [controller] + ); + + const dismiss = useCallback( + () => async () => { + overlayRef.current && (await overlayRef.current.dismiss()); overlayRef.current = undefined; - } - - overlayRef.current = await controller.create({ - ...(rest as any), - }); - - attachProps(overlayRef.current, { - [didDismissEventName]: handleDismiss, - [didPresentEventName]: (e: CustomEvent) => - onDidPresent && onDidPresent(e), - [willDismissEventName]: (e: CustomEvent) => - onWillDismiss && onWillDismiss(e), - [willPresentEventName]: (e: CustomEvent) => - onWillPresent && onWillPresent(e), - }); - - overlayRef.current.present(); - }; - - const dismiss = async () => { - overlayRef.current && await overlayRef.current.dismiss(); - overlayRef.current = undefined; - }; + }, + [] + ); return { present, diff --git a/packages/react/src/hooks/useIonActionSheet.ts b/packages/react/src/hooks/useIonActionSheet.ts index cbd045f4ef..e0084e9634 100644 --- a/packages/react/src/hooks/useIonActionSheet.ts +++ b/packages/react/src/hooks/useIonActionSheet.ts @@ -1,4 +1,5 @@ import { ActionSheetButton, ActionSheetOptions, actionSheetController } from '@ionic/core'; +import { useCallback } from 'react'; import { HookOverlayOptions } from './HookOverlayOptions'; import { useController } from './useController'; @@ -13,23 +14,24 @@ export function useIonActionSheet(): UseIonActionSheetResult { actionSheetController ); - function present(buttons: ActionSheetButton[], header?: string): void; - function present(options: ActionSheetOptions & HookOverlayOptions): void; - function present(buttonsOrOptions: ActionSheetButton[] | ActionSheetOptions & HookOverlayOptions, header?: string) { - if (Array.isArray(buttonsOrOptions)) { - controller.present({ - buttons: buttonsOrOptions, - header - }); - } else { - controller.present(buttonsOrOptions); - } - } + const present = useCallback( + ( + buttonsOrOptions: ActionSheetButton[] | (ActionSheetOptions & HookOverlayOptions), + header?: string + ) => { + if (Array.isArray(buttonsOrOptions)) { + controller.present({ + buttons: buttonsOrOptions, + header, + }); + } else { + controller.present(buttonsOrOptions); + } + }, + [controller.present] + ); - return [ - present, - controller.dismiss - ]; + return [present, controller.dismiss]; } export type UseIonActionSheetResult = [ diff --git a/packages/react/src/hooks/useIonAlert.ts b/packages/react/src/hooks/useIonAlert.ts index 3f1f7cf7fc..2303de3dc7 100644 --- a/packages/react/src/hooks/useIonAlert.ts +++ b/packages/react/src/hooks/useIonAlert.ts @@ -1,4 +1,5 @@ import { AlertButton, AlertOptions, alertController } from '@ionic/core'; +import { useCallback } from 'react'; import { HookOverlayOptions } from './HookOverlayOptions'; import { useController } from './useController'; @@ -8,28 +9,23 @@ import { useController } from './useController'; * @returns Returns the present and dismiss methods in an array */ export function useIonAlert(): UseIonAlertResult { - const controller = useController( - 'IonAlert', - alertController + const controller = useController('IonAlert', alertController); + + const present = useCallback( + (messageOrOptions: string | (AlertOptions & HookOverlayOptions), buttons?: AlertButton[]) => { + if (typeof messageOrOptions === 'string') { + controller.present({ + message: messageOrOptions, + buttons: buttons ?? [{ text: 'Ok' }], + }); + } else { + controller.present(messageOrOptions); + } + }, + [controller.present] ); - function present(message: string, buttons?: AlertButton[]): void; - function present(options: AlertOptions & HookOverlayOptions): void; - function present(messageOrOptions: string | AlertOptions & HookOverlayOptions, buttons?: AlertButton[]) { - if (typeof messageOrOptions === 'string') { - controller.present({ - message: messageOrOptions, - buttons: buttons ?? [{ text: 'Ok' }] - }); - } else { - controller.present(messageOrOptions); - } - }; - - return [ - present, - controller.dismiss - ]; + return [present, controller.dismiss]; } export type UseIonAlertResult = [ diff --git a/packages/react/src/hooks/useIonLoading.tsx b/packages/react/src/hooks/useIonLoading.tsx index 779a413c18..aea4d89f07 100644 --- a/packages/react/src/hooks/useIonLoading.tsx +++ b/packages/react/src/hooks/useIonLoading.tsx @@ -1,4 +1,5 @@ import { LoadingOptions, SpinnerTypes, loadingController } from '@ionic/core'; +import { useCallback } from 'react'; import { HookOverlayOptions } from './HookOverlayOptions'; import { useController } from './useController'; @@ -13,27 +14,24 @@ export function useIonLoading(): UseIonLoadingResult { loadingController ); - function present( - message?: string, - duration?: number, - spinner?: SpinnerTypes - ): void; - function present(options: LoadingOptions & HookOverlayOptions): void; - function present( - messageOrOptions: string | (LoadingOptions & HookOverlayOptions) = '', - duration?: number, - spinner?: SpinnerTypes - ) { - if (typeof messageOrOptions === 'string') { - controller.present({ - message: messageOrOptions, - duration, - spinner: spinner ?? 'lines', - }); - } else { - controller.present(messageOrOptions); - } - } + const present = useCallback( + ( + messageOrOptions: string | (LoadingOptions & HookOverlayOptions) = '', + duration?: number, + spinner?: SpinnerTypes + ) => { + if (typeof messageOrOptions === 'string') { + controller.present({ + message: messageOrOptions, + duration, + spinner: spinner ?? 'lines', + }); + } else { + controller.present(messageOrOptions); + } + }, + [controller.present] + ); return [present, controller.dismiss]; } diff --git a/packages/react/src/hooks/useIonModal.ts b/packages/react/src/hooks/useIonModal.ts index 4a84969aca..dc6a101880 100644 --- a/packages/react/src/hooks/useIonModal.ts +++ b/packages/react/src/hooks/useIonModal.ts @@ -1,4 +1,5 @@ import { ModalOptions, modalController } from '@ionic/core'; +import { useCallback } from 'react'; import { HookOverlayOptions } from './HookOverlayOptions'; import { ReactComponentOrElement, useOverlay } from './useOverlay'; @@ -9,7 +10,10 @@ import { ReactComponentOrElement, useOverlay } from './useOverlay'; * @param componentProps The props that will be passed to the component, if required * @returns Returns the present and dismiss methods in an array */ -export function useIonModal(component: ReactComponentOrElement, componentProps?: any): UseIonModalResult { +export function useIonModal( + component: ReactComponentOrElement, + componentProps?: any +): UseIonModalResult { const controller = useOverlay( 'IonModal', modalController, @@ -17,14 +21,14 @@ export function useIonModal(component: ReactComponentOrElement, componentProps?: componentProps ); - function present(options: Omit & HookOverlayOptions = {}) { - controller.present(options as any); - }; + const present = useCallback( + (options: Omit & HookOverlayOptions = {}) => { + controller.present(options as any); + }, + [controller.present] + ); - return [ - present, - controller.dismiss - ]; + return [present, controller.dismiss]; } export type UseIonModalResult = [ diff --git a/packages/react/src/hooks/useIonPicker.tsx b/packages/react/src/hooks/useIonPicker.tsx index 36473862aa..130981142c 100644 --- a/packages/react/src/hooks/useIonPicker.tsx +++ b/packages/react/src/hooks/useIonPicker.tsx @@ -1,9 +1,5 @@ -import { - PickerButton, - PickerColumn, - PickerOptions, - pickerController, -} from '@ionic/core'; +import { PickerButton, PickerColumn, PickerOptions, pickerController } from '@ionic/core'; +import { useCallback } from 'react'; import { HookOverlayOptions } from './HookOverlayOptions'; import { useController } from './useController'; @@ -18,12 +14,10 @@ export function useIonPicker(): UseIonPickerResult { pickerController ); - function present(columns: PickerColumn[], buttons?: PickerButton[]): void; - function present(options: PickerOptions & HookOverlayOptions): void; - function present( + const present = useCallback(( columnsOrOptions: PickerColumn[] | (PickerOptions & HookOverlayOptions), buttons?: PickerButton[] - ) { + ) => { if (Array.isArray(columnsOrOptions)) { controller.present({ columns: columnsOrOptions, @@ -32,7 +26,7 @@ export function useIonPicker(): UseIonPickerResult { } else { controller.present(columnsOrOptions); } - } + }, [controller.present]); return [present, controller.dismiss]; } diff --git a/packages/react/src/hooks/useIonPopover.ts b/packages/react/src/hooks/useIonPopover.ts index 42ecf6600c..ca2b369781 100644 --- a/packages/react/src/hooks/useIonPopover.ts +++ b/packages/react/src/hooks/useIonPopover.ts @@ -1,4 +1,5 @@ import { PopoverOptions, popoverController } from '@ionic/core'; +import { useCallback } from 'react'; import { HookOverlayOptions } from './HookOverlayOptions'; import { ReactComponentOrElement, useOverlay } from './useOverlay'; @@ -17,9 +18,9 @@ export function useIonPopover(component: ReactComponentOrElement, componentProps componentProps ); - function present(options: Omit & HookOverlayOptions = {}) { + const present = useCallback((options: Omit & HookOverlayOptions = {}) => { controller.present(options as any); - }; + }, [controller.present]); return [ present, diff --git a/packages/react/src/hooks/useIonToast.ts b/packages/react/src/hooks/useIonToast.ts index 258d5b2bc8..5f6578ad6d 100644 --- a/packages/react/src/hooks/useIonToast.ts +++ b/packages/react/src/hooks/useIonToast.ts @@ -1,4 +1,5 @@ import { ToastOptions, toastController } from '@ionic/core'; +import { useCallback } from 'react'; import { HookOverlayOptions } from './HookOverlayOptions'; import { useController } from './useController'; @@ -13,9 +14,7 @@ export function useIonToast(): UseIonToastResult { toastController ); - function present(message: string, duration?: number): void; - function present(options: ToastOptions & HookOverlayOptions): void; - function present(messageOrOptions: string | ToastOptions & HookOverlayOptions, duration?: number) { + const present = useCallback((messageOrOptions: string | ToastOptions & HookOverlayOptions, duration?: number) => { if (typeof messageOrOptions === 'string') { controller.present({ message: messageOrOptions, @@ -24,7 +23,7 @@ export function useIonToast(): UseIonToastResult { } else { controller.present(messageOrOptions); } - }; + }, [controller.present]); return [ present, diff --git a/packages/react/src/hooks/useOverlay.ts b/packages/react/src/hooks/useOverlay.ts index 6365bc4829..6292d6d689 100644 --- a/packages/react/src/hooks/useOverlay.ts +++ b/packages/react/src/hooks/useOverlay.ts @@ -1,5 +1,5 @@ import { OverlayEventDetail } from '@ionic/core'; -import React, { useEffect, useMemo, useRef, useState } from 'react'; +import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'; import ReactDOM from 'react-dom'; import { attachProps } from '../components/utils'; @@ -52,7 +52,7 @@ export function useOverlay< } }, [component, containerElRef.current, isOpen, componentProps]); - const present = async (options: OptionsType & HookOverlayOptions) => { + const present = useCallback(async (options: OptionsType & HookOverlayOptions) => { if (overlayRef.current) { return; } @@ -96,13 +96,13 @@ export function useOverlay< containerElRef.current = undefined; setIsOpen(false); } - }; + }, []); - const dismiss = async () => { + const dismiss = useCallback(async () => { overlayRef.current && await overlayRef.current.dismiss(); overlayRef.current = undefined; containerElRef.current = undefined; - }; + }, []); return { present, From 077b915ad59dfab1771d2a78e6dad784ae457cad Mon Sep 17 00:00:00 2001 From: Liam DeBeasi Date: Tue, 5 Oct 2021 09:04:38 -0400 Subject: [PATCH 15/17] chore(): fix typo in bug template (#24016) --- .github/ISSUE_TEMPLATE/bug_report.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index d7e064089f..90665cd466 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -4,7 +4,7 @@ title: 'bug: ' body: - type: checkboxes attributes: - label: Prequisites + label: Prerequisites description: Please ensure you have completed all of the following. options: - label: I have read the [Contributing Guidelines](https://github.com/ionic-team/ionic-framework/blob/main/.github/CONTRIBUTING.md#creating-an-issue). From b1ffdadbc3225dfeb7503bd4feaf97915efdb8a7 Mon Sep 17 00:00:00 2001 From: Liam DeBeasi Date: Tue, 5 Oct 2021 09:05:49 -0400 Subject: [PATCH 16/17] chore(): fix typo in feature request template (#24017) --- .github/ISSUE_TEMPLATE/feature_request.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml index 2a955b4446..d774ff2776 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yml +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -4,7 +4,7 @@ title: 'feat: ' body: - type: checkboxes attributes: - label: Prequisites + label: Prerequisites description: Please ensure you have completed all of the following. options: - label: I have read the [Contributing Guidelines](https://github.com/ionic-team/ionic-framework/blob/main/.github/CONTRIBUTING.md#creating-an-issue). From fe9bec29d58bb60d90e29278a9a850d94292b6ca Mon Sep 17 00:00:00 2001 From: Liam DeBeasi Date: Wed, 6 Oct 2021 14:05:57 +0000 Subject: [PATCH 17/17] 5.8.2 --- CHANGELOG.md | 14 ++++++++++++++ angular/package-lock.json | 18 +++++++++--------- angular/package.json | 4 ++-- core/package-lock.json | 4 ++-- core/package.json | 2 +- docs/package.json | 2 +- packages/angular-server/package-lock.json | 18 +++++++++--------- packages/angular-server/package.json | 4 ++-- packages/react-router/package.json | 8 ++++---- packages/react/package.json | 4 ++-- packages/vue-router/package-lock.json | 6 +++--- packages/vue-router/package.json | 2 +- packages/vue/package-lock.json | 18 +++++++++--------- packages/vue/package.json | 4 ++-- 14 files changed, 61 insertions(+), 47 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2c930675de..03516f8686 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,17 @@ +## [5.8.2](https://github.com/ionic-team/ionic/compare/v5.8.1...v5.8.2) (2021-10-06) + + +### Bug Fixes + +* **alert:** made it easier to tell if alert is scrollable in MD mode ([#23976](https://github.com/ionic-team/ionic/issues/23976)) ([a262753](https://github.com/ionic-team/ionic/commit/a26275378f10835343ad8a6cdea50303e6c10a14)) +* **angular:** use initialize function when setting up ionic angular to avoid config errors ([#24004](https://github.com/ionic-team/ionic/issues/24004)) ([f112ad4](https://github.com/ionic-team/ionic/commit/f112ad4490dc4a179dc3feab495530e14e655e5a)), closes [#22853](https://github.com/ionic-team/ionic/issues/22853) +* **item-sliding:** closing an item can no longer be interrupted ([#23973](https://github.com/ionic-team/ionic/issues/23973)) ([3ca0419](https://github.com/ionic-team/ionic/commit/3ca04197a4186c85d04cdf04fa9cb2689ca1bbfb)), closes [#23969](https://github.com/ionic-team/ionic/issues/23969) +* **react:** overlay hooks memorised properly to prevent re-renders ([#24010](https://github.com/ionic-team/ionic/issues/24010)) ([2c97712](https://github.com/ionic-team/ionic/commit/2c977126012ae0231d4e4fa63cc76a528bde699b)), closes [#23741](https://github.com/ionic-team/ionic/issues/23741) +* **select-popover:** non-scrollable popovers no longer have forced overscroll ([#23972](https://github.com/ionic-team/ionic/issues/23972)) ([aa4ba89](https://github.com/ionic-team/ionic/commit/aa4ba890e9c18e8a911c5188b3e2e85433658be9)), closes [#23971](https://github.com/ionic-team/ionic/issues/23971) +* **status-bar:** tapping status bar correctly scrolls content to top ([#24001](https://github.com/ionic-team/ionic/issues/24001)) ([25eb8cd](https://github.com/ionic-team/ionic/commit/25eb8cdf98fe455433ca6185e89d9e1223a6d3ae)), closes [#20423](https://github.com/ionic-team/ionic/issues/20423) + + + ## [5.8.1](https://github.com/ionic-team/ionic/compare/v5.8.0...v5.8.1) (2021-09-22) diff --git a/angular/package-lock.json b/angular/package-lock.json index 62da38ff0c..da906d2e9b 100644 --- a/angular/package-lock.json +++ b/angular/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/angular", - "version": "5.8.1", + "version": "5.8.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/angular", - "version": "5.8.1", + "version": "5.8.2", "license": "MIT", "dependencies": { - "@ionic/core": "5.8.0", + "@ionic/core": "5.8.1", "tslib": "^1.9.3" }, "devDependencies": { @@ -204,9 +204,9 @@ } }, "node_modules/@ionic/core": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-5.8.0.tgz", - "integrity": "sha512-rzjAgS5pJgy/Ggtq1lgogl6thiEMMusnm96D6RsVLa4nxYrHIt9Oua062uIYrf0LdasqatekSxIqcU5Fl9YKEg==", + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-5.8.1.tgz", + "integrity": "sha512-twAPHhrGMYvHW0NgebMBfN70xDUkFxW+Zcxeus7jrhuJh1uWp/3MwawLi4InCwpyuFQiBo8yAaqC1hB1wTZmLA==", "dependencies": { "@stencil/core": "^2.4.0", "ionicons": "^5.5.3", @@ -5156,9 +5156,9 @@ } }, "@ionic/core": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-5.8.0.tgz", - "integrity": "sha512-rzjAgS5pJgy/Ggtq1lgogl6thiEMMusnm96D6RsVLa4nxYrHIt9Oua062uIYrf0LdasqatekSxIqcU5Fl9YKEg==", + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-5.8.1.tgz", + "integrity": "sha512-twAPHhrGMYvHW0NgebMBfN70xDUkFxW+Zcxeus7jrhuJh1uWp/3MwawLi4InCwpyuFQiBo8yAaqC1hB1wTZmLA==", "requires": { "@stencil/core": "^2.4.0", "ionicons": "^5.5.3", diff --git a/angular/package.json b/angular/package.json index 0bc95e7306..1b4d1d78d1 100644 --- a/angular/package.json +++ b/angular/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/angular", - "version": "5.8.1", + "version": "5.8.2", "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": "5.8.1", + "@ionic/core": "5.8.2", "tslib": "^1.9.3" }, "peerDependencies": { diff --git a/core/package-lock.json b/core/package-lock.json index 77c8ed1e2e..e61186acac 100644 --- a/core/package-lock.json +++ b/core/package-lock.json @@ -1,12 +1,12 @@ { "name": "@ionic/core", - "version": "5.8.1", + "version": "5.8.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/core", - "version": "5.8.1", + "version": "5.8.2", "license": "MIT", "dependencies": { "@stencil/core": "^2.4.0", diff --git a/core/package.json b/core/package.json index d89aa7cd3f..0c87622b7d 100644 --- a/core/package.json +++ b/core/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/core", - "version": "5.8.1", + "version": "5.8.2", "description": "Base components for Ionic", "keywords": [ "ionic", diff --git a/docs/package.json b/docs/package.json index 22ebef0c88..828461a425 100644 --- a/docs/package.json +++ b/docs/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/docs", - "version": "5.8.1", + "version": "5.8.2", "description": "Pre-packaged API documentation for the Ionic docs.", "main": "core.json", "types": "core.d.ts", diff --git a/packages/angular-server/package-lock.json b/packages/angular-server/package-lock.json index 083f8988a5..34b9d784f8 100644 --- a/packages/angular-server/package-lock.json +++ b/packages/angular-server/package-lock.json @@ -1,12 +1,12 @@ { "name": "@ionic/angular-server", - "version": "5.8.1", + "version": "5.8.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/angular-server", - "version": "5.8.1", + "version": "5.8.2", "license": "MIT", "devDependencies": { "@angular/animations": "8.2.13", @@ -16,7 +16,7 @@ "@angular/core": "8.2.13", "@angular/platform-browser": "8.2.13", "@angular/platform-server": "8.2.13", - "@ionic/core": "5.8.0", + "@ionic/core": "5.8.1", "ng-packagr": "5.7.1", "tslint": "^5.12.1", "tslint-ionic-rules": "0.0.21", @@ -137,9 +137,9 @@ } }, "node_modules/@ionic/core": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-5.8.0.tgz", - "integrity": "sha512-rzjAgS5pJgy/Ggtq1lgogl6thiEMMusnm96D6RsVLa4nxYrHIt9Oua062uIYrf0LdasqatekSxIqcU5Fl9YKEg==", + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-5.8.1.tgz", + "integrity": "sha512-twAPHhrGMYvHW0NgebMBfN70xDUkFxW+Zcxeus7jrhuJh1uWp/3MwawLi4InCwpyuFQiBo8yAaqC1hB1wTZmLA==", "dev": true, "dependencies": { "@stencil/core": "^2.4.0", @@ -5424,9 +5424,9 @@ } }, "@ionic/core": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-5.8.0.tgz", - "integrity": "sha512-rzjAgS5pJgy/Ggtq1lgogl6thiEMMusnm96D6RsVLa4nxYrHIt9Oua062uIYrf0LdasqatekSxIqcU5Fl9YKEg==", + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-5.8.1.tgz", + "integrity": "sha512-twAPHhrGMYvHW0NgebMBfN70xDUkFxW+Zcxeus7jrhuJh1uWp/3MwawLi4InCwpyuFQiBo8yAaqC1hB1wTZmLA==", "dev": true, "requires": { "@stencil/core": "^2.4.0", diff --git a/packages/angular-server/package.json b/packages/angular-server/package.json index db6301dcff..1eb4842540 100644 --- a/packages/angular-server/package.json +++ b/packages/angular-server/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/angular-server", - "version": "5.8.1", + "version": "5.8.2", "description": "Angular SSR Module for Ionic", "keywords": [ "ionic", @@ -49,7 +49,7 @@ "@angular/core": "8.2.13", "@angular/platform-browser": "8.2.13", "@angular/platform-server": "8.2.13", - "@ionic/core": "5.8.1", + "@ionic/core": "5.8.2", "ng-packagr": "5.7.1", "tslint": "^5.12.1", "tslint-ionic-rules": "0.0.21", diff --git a/packages/react-router/package.json b/packages/react-router/package.json index 69cd629230..85ee369906 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/react-router", - "version": "5.8.1", + "version": "5.8.2", "description": "React Router wrapper for @ionic/react", "keywords": [ "ionic", @@ -39,15 +39,15 @@ "tslib": "*" }, "peerDependencies": { - "@ionic/react": "5.8.1", + "@ionic/react": "5.8.2", "react": ">=16.8.6", "react-dom": ">=16.8.6", "react-router": "^5.0.1", "react-router-dom": "^5.0.1" }, "devDependencies": { - "@ionic/core": "5.8.1", - "@ionic/react": "5.8.1", + "@ionic/core": "5.8.2", + "@ionic/react": "5.8.2", "@rollup/plugin-node-resolve": "^8.1.0", "@testing-library/jest-dom": "^5.11.6", "@testing-library/react": "^11.2.2", diff --git a/packages/react/package.json b/packages/react/package.json index 4b209ab97e..cc708f1f36 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/react", - "version": "5.8.1", + "version": "5.8.2", "description": "React specific wrapper for @ionic/core", "keywords": [ "ionic", @@ -39,7 +39,7 @@ "css/" ], "dependencies": { - "@ionic/core": "5.8.1", + "@ionic/core": "5.8.2", "ionicons": "^5.1.2", "tslib": "*" }, diff --git a/packages/vue-router/package-lock.json b/packages/vue-router/package-lock.json index a2c73457b6..c9e57b7adb 100644 --- a/packages/vue-router/package-lock.json +++ b/packages/vue-router/package-lock.json @@ -1,12 +1,12 @@ { "name": "@ionic/vue-router", - "version": "5.8.1", + "version": "5.8.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/vue-router", - "version": "5.8.1", + "version": "5.8.2", "license": "MIT", "devDependencies": { "@ionic/vue": "5.4.1", @@ -23,7 +23,7 @@ }, "../../core": { "name": "@ionic/core", - "version": "5.8.0", + "version": "5.8.1", "dev": true, "license": "MIT", "dependencies": { diff --git a/packages/vue-router/package.json b/packages/vue-router/package.json index ffcaa46bdc..5a5439e4e2 100644 --- a/packages/vue-router/package.json +++ b/packages/vue-router/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/vue-router", - "version": "5.8.1", + "version": "5.8.2", "description": "Vue Router integration for @ionic/vue", "scripts": { "test.spec": "jest", diff --git a/packages/vue/package-lock.json b/packages/vue/package-lock.json index 3c27457f3e..bff8b9ff61 100644 --- a/packages/vue/package-lock.json +++ b/packages/vue/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/vue", - "version": "5.8.1", + "version": "5.8.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/vue", - "version": "5.8.1", + "version": "5.8.2", "license": "MIT", "dependencies": { - "@ionic/core": "5.8.0", + "@ionic/core": "5.8.1", "ionicons": "^5.1.2" }, "devDependencies": { @@ -53,9 +53,9 @@ } }, "node_modules/@ionic/core": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-5.8.0.tgz", - "integrity": "sha512-rzjAgS5pJgy/Ggtq1lgogl6thiEMMusnm96D6RsVLa4nxYrHIt9Oua062uIYrf0LdasqatekSxIqcU5Fl9YKEg==", + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-5.8.1.tgz", + "integrity": "sha512-twAPHhrGMYvHW0NgebMBfN70xDUkFxW+Zcxeus7jrhuJh1uWp/3MwawLi4InCwpyuFQiBo8yAaqC1hB1wTZmLA==", "dependencies": { "@stencil/core": "^2.4.0", "ionicons": "^5.5.3", @@ -633,9 +633,9 @@ } }, "@ionic/core": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-5.8.0.tgz", - "integrity": "sha512-rzjAgS5pJgy/Ggtq1lgogl6thiEMMusnm96D6RsVLa4nxYrHIt9Oua062uIYrf0LdasqatekSxIqcU5Fl9YKEg==", + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-5.8.1.tgz", + "integrity": "sha512-twAPHhrGMYvHW0NgebMBfN70xDUkFxW+Zcxeus7jrhuJh1uWp/3MwawLi4InCwpyuFQiBo8yAaqC1hB1wTZmLA==", "requires": { "@stencil/core": "^2.4.0", "ionicons": "^5.5.3", diff --git a/packages/vue/package.json b/packages/vue/package.json index 4bf4ce7ca1..778e463e90 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/vue", - "version": "5.8.1", + "version": "5.8.2", "description": "Vue specific wrapper for @ionic/core", "scripts": { "lint": "echo add linter", @@ -57,7 +57,7 @@ "vue-router": "^4.0.0-rc.4" }, "dependencies": { - "@ionic/core": "5.8.1", + "@ionic/core": "5.8.2", "ionicons": "^5.1.2" }, "vetur": {