chore(): sync with main

This commit is contained in:
Liam DeBeasi
2021-12-13 11:31:44 -05:00
24 changed files with 46992 additions and 4239 deletions

15
.github/CODEOWNERS vendored Normal file
View File

@ -0,0 +1,15 @@
# Lines starting with '#' are comments.
# Each line is a file pattern followed by one or more owners.
# More details are here: https://help.github.com/articles/about-codeowners/
# The '*' pattern is global owners.
# Order is important. The last matching pattern has the most precedence.
# The folders are ordered as follows:
# In each subsection folders are ordered first by depth, then alphabetically.
# This should make it easy to add new rules without breaking existing ones.
# Global owners
* @ionic-team/framework-core

View File

@ -6,13 +6,37 @@ on:
jobs: jobs:
dev-build: dev-build:
runs-on: ubuntu-latest runs-on: ubuntu-latest
outputs:
version: ${{ steps.dev-build.outputs.version }}
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- uses: actions/setup-node@v1 - uses: actions/setup-node@v2
with: with:
node-version: 15.x node-version: 16
- name: Create Dev Build - name: Install Dependencies
run: npm run release.dev -- --skip-prompt run: npm ci --no-package-lock && lerna bootstrap --ignore-scripts -- --legacy-peer-deps
shell: bash
- name: Prepare NPM Token
run: echo //registry.npmjs.org/:_authToken=${NPM_TOKEN} > .npmrc
shell: bash shell: bash
env: env:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }} NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: Create Dev Hash
run: |
echo "HASH=$(git log -1 --format=%H | cut -c 1-7)" >> $GITHUB_ENV
echo "TIMESTAMP=$(date +%s)" >> $GITHUB_ENV
echo "CURRENT_VERSION=$(node -p -e "require('./core/package.json').version")" >> $GITHUB_ENV
shell: bash
- name: Create Dev Build
run: |
HUSKY_SKIP_HOOKS=1 lerna publish $(echo "${{ env.CURRENT_VERSION }}")-dev.$(echo "${{ env.TIMESTAMP }}").$(echo "${{ env.HASH }}") --no-verify-access --yes --force-publish='*' --dist-tag dev --no-git-tag-version --no-push
shell: bash
- id: dev-build
run: echo "::set-output name=version::$(echo "${{ env.CURRENT_VERSION }}")-dev.$(echo "${{ env.TIMESTAMP }}").$(echo "${{ env.HASH }}")"
get-build:
name: Get your dev build!
runs-on: ubuntu-latest
needs: dev-build
steps:
- run: echo ${{ needs.dev-build.outputs.version }}

52
.github/workflows/release.yml vendored Normal file
View File

@ -0,0 +1,52 @@
name: 'Ionic Release'
on:
workflow_dispatch:
inputs:
version:
required: true
type: choice
description: Which version should be published?
options:
- patch
- minor
- major
- prepatch
- preminor
- premajor
tag:
required: true
type: choice
description: Which npm tag should this be published to?
options:
- latest
- next
- dev
prefix:
type: choice
description: For pre-releases, what kind of pre-release is this?
default: ''
options:
- alpha
- beta
- rc
jobs:
dev-build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: 16
- name: Install Dependencies
run: npm ci --no-package-lock && lerna bootstrap --ignore-scripts -- --legacy-peer-deps
shell: bash
- name: Prepare NPM Token
run: echo //registry.npmjs.org/:_authToken=${NPM_TOKEN} > .npmrc
shell: bash
env:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: Release
run: |
HUSKY_SKIP_HOOKS=1 lerna publish $(echo "${{ github.event.inputs.version }}") --no-verify-access --yes --force-publish='*' --dist-tag $(echo "${{ github.events.inputs.tag }}") --no-git-tag-version --no-push --skip-npm --preid $(echo "${{ github.events.inputs.prefix }}")
shell: bash

2
.gitignore vendored
View File

@ -66,3 +66,5 @@ core/loader/
core/www/ core/www/
.stencil/ .stencil/
angular/build/ angular/build/
.npmrc

1
.npmrc
View File

@ -1 +0,0 @@
package-lock=false

View File

@ -22,8 +22,12 @@
"bugs": { "bugs": {
"url": "https://github.com/ionic-team/ionic/issues" "url": "https://github.com/ionic-team/ionic/issues"
}, },
"publishConfig": {
"directory": "dist"
},
"homepage": "https://ionicframework.com/", "homepage": "https://ionicframework.com/",
"scripts": { "scripts": {
"prepublishOnly": "npm run build",
"build": "npm run clean && npm run build.ng && npm run build.core && npm run clean-generated", "build": "npm run clean && npm run build.ng && npm run build.core && npm run clean-generated",
"build.core": "node scripts/build-core.js", "build.core": "node scripts/build-core.js",
"build.link": "npm run build && node scripts/link-copy.js", "build.link": "npm run build && node scripts/link-copy.js",

View File

@ -68,6 +68,7 @@
"typescript": "^4.0.5" "typescript": "^4.0.5"
}, },
"scripts": { "scripts": {
"prepublishOnly": "npm run build",
"build": "npm run clean && npm run build.css && stencil build --docs --es5 --docs-json dist/docs.json && npm run cdnloader", "build": "npm run clean && npm run build.css && stencil build --docs --es5 --docs-json dist/docs.json && npm run cdnloader",
"build.css": "npm run css.sass && npm run css.minify", "build.css": "npm run css.sass && npm run css.minify",
"build.debug": "npm run clean && stencil build --debug", "build.debug": "npm run clean && stencil build --debug",

View File

@ -119,14 +119,6 @@ export class Content implements ComponentInterface {
this.resize(); this.resize();
} }
@Listen('click', { capture: true })
onClick(ev: Event) {
if (this.isScrolling) {
ev.preventDefault();
ev.stopPropagation();
}
}
private shouldForceOverscroll() { private shouldForceOverscroll() {
const { forceOverscroll } = this; const { forceOverscroll } = this;
const mode = getIonMode(this); const mode = getIonMode(this);

View File

@ -1,6 +1,9 @@
{ {
"packages": [ "packages": [
"core",
"docs",
"angular",
"packages/*" "packages/*"
], ],
"version": "0.0.0" "version": "5.9.2"
} }

20287
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -3,8 +3,6 @@
"description": "Ionic mono-repo root package.json, used mainly to execute build scripts. This package is not published to npm.", "description": "Ionic mono-repo root package.json, used mainly to execute build scripts. This package is not published to npm.",
"scripts": { "scripts": {
"build": "node .scripts/build.js", "build": "node .scripts/build.js",
"release.dev": "node .scripts/release-dev.js",
"release.prepare": "node .scripts/prepare.js",
"release": "node .scripts/release.js", "release": "node .scripts/release.js",
"changelog": "conventional-changelog -p angular -i ./CHANGELOG.md -k core -s", "changelog": "conventional-changelog -p angular -i ./CHANGELOG.md -k core -s",
"commitizenBranches": "git-branch-is -q --not -r \"^(main|next|release-)\"" "commitizenBranches": "git-branch-is -q --not -r \"^(main|next|release-)\""
@ -22,6 +20,7 @@
"git-branch-is": "^4.0.0", "git-branch-is": "^4.0.0",
"husky": "^4.3.8", "husky": "^4.3.8",
"inquirer": "^6.0.0", "inquirer": "^6.0.0",
"lerna": "^4.0.0",
"listr": "^0.14.0", "listr": "^0.14.0",
"rimraf": "^2.6.3", "rimraf": "^2.6.3",
"semver": "^5.5.0" "semver": "^5.5.0"

View File

@ -9,65 +9,26 @@
"version": "6.0.0", "version": "6.0.0",
"license": "MIT", "license": "MIT",
"devDependencies": { "devDependencies": {
"@angular-eslint/eslint-plugin": "^12.6.1", "@angular/animations": "8.2.13",
"@angular/animations": "^12.0.0", "@angular/common": "8.2.13",
"@angular/common": "^12.0.0", "@angular/compiler": "8.2.13",
"@angular/compiler": "^12.0.0", "@angular/compiler-cli": "8.2.13",
"@angular/compiler-cli": "^12.0.0", "@angular/core": "8.2.13",
"@angular/core": "^12.0.0", "@angular/platform-browser": "8.2.13",
"@angular/platform-browser": "^12.0.0", "@angular/platform-server": "8.2.13",
"@angular/platform-browser-dynamic": "^12.2.10", "@ionic/core": "5.9.2",
"@angular/platform-server": "^12.0.0", "ng-packagr": "5.7.1",
"@ionic/core": "6.0.0-rc.4", "tslint": "^5.12.1",
"@ionic/eslint-config": "^0.3.0", "tslint-ionic-rules": "0.0.21",
"@ionic/prettier-config": "^2.0.0", "typescript": "3.4.5",
"@typescript-eslint/eslint-plugin": "^5.2.0", "typescript-tslint-plugin": "^0.5.5"
"eslint": "^8.1.0",
"eslint-plugin-import": "^2.25.2",
"ng-packagr": "^12.0.0",
"prettier": "^2.4.1",
"typescript": "4.2.4"
}, },
"peerDependencies": { "peerDependencies": {
"@angular/core": ">=12.0.0", "@angular/core": ">=8.2.7",
"@angular/platform-server": ">=12.0.0", "@angular/platform-server": ">=8.2.7",
"@ionic/angular": "*", "@ionic/angular": "^5.9.2",
"rxjs": ">=6.6.0", "rxjs": ">=6.2.0",
"zone.js": ">=0.11.0" "zone.js": ">=0.8.26"
}
},
"node_modules/@angular-eslint/bundled-angular-compiler": {
"version": "12.6.1",
"resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-12.6.1.tgz",
"integrity": "sha512-m5upUwjiegTe/iPEn02ZYg/I0pKWRJkpgvQm4Odp2Bm173orpEihzCTursUxwEi1WPNlcyduh1bgjNKAPCOtkQ==",
"dev": true
},
"node_modules/@angular-eslint/eslint-plugin": {
"version": "12.6.1",
"resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-12.6.1.tgz",
"integrity": "sha512-zchuiGeaeWYEc4q3XhHcX6Q5y4MOjtt3cZY2UxOaCTaYYp9yTh6k2MuE9hj0BO6qAcQyCrLlBiHhuYCpjAPO4Q==",
"dev": true,
"dependencies": {
"@angular-eslint/utils": "12.6.1",
"@typescript-eslint/experimental-utils": "4.28.2"
},
"peerDependencies": {
"eslint": "*",
"typescript": "*"
}
},
"node_modules/@angular-eslint/utils": {
"version": "12.6.1",
"resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-12.6.1.tgz",
"integrity": "sha512-v+Vl9y0hUCDRA8hFgYov3IORfD/e1AoEEL0rhznwH7hfXwbQhwDrjSZHeQ+BMh27rEz5e8LXxJGiicF3Sq8uJw==",
"dev": true,
"dependencies": {
"@angular-eslint/bundled-angular-compiler": "12.6.1",
"@typescript-eslint/experimental-utils": "4.28.2"
},
"peerDependencies": {
"eslint": "*",
"typescript": "*"
} }
}, },
"node_modules/@angular/animations": { "node_modules/@angular/animations": {

View File

@ -21,6 +21,7 @@
}, },
"homepage": "https://ionicframework.com/", "homepage": "https://ionicframework.com/",
"scripts": { "scripts": {
"prepublishOnly": "npm run build.prod",
"test": "echo 'angular no tests yet'", "test": "echo 'angular no tests yet'",
"build": "ng-packagr -p package.json -c tsconfig.json", "build": "ng-packagr -p package.json -c tsconfig.json",
"build.prod": "npm run clean && npm run build", "build.prod": "npm run clean && npm run build",
@ -38,7 +39,7 @@
"peerDependencies": { "peerDependencies": {
"@angular/core": ">=12.0.0", "@angular/core": ">=12.0.0",
"@angular/platform-server": ">=12.0.0", "@angular/platform-server": ">=12.0.0",
"@ionic/angular": "*", "@ionic/angular": "^5.9.2",
"rxjs": ">=6.6.0", "rxjs": ">=6.6.0",
"zone.js": ">=0.11.0" "zone.js": ">=0.11.0"
}, },

View File

@ -1 +0,0 @@
package-lock=false

15358
packages/react-router/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -20,6 +20,7 @@
"url": "https://github.com/ionic-team/ionic.git" "url": "https://github.com/ionic-team/ionic.git"
}, },
"scripts": { "scripts": {
"prepublishOnly": "npm run build",
"build": "npm run clean && npm run compile", "build": "npm run clean && npm run compile",
"clean": "rimraf dist dist-transpiled", "clean": "rimraf dist dist-transpiled",
"compile": "npm run tsc && rollup -c", "compile": "npm run tsc && rollup -c",
@ -36,17 +37,16 @@
"dist/" "dist/"
], ],
"dependencies": { "dependencies": {
"@ionic/react": "5.9.2",
"tslib": "*" "tslib": "*"
}, },
"peerDependencies": { "peerDependencies": {
"@ionic/react": "6.0.0",
"react": ">=16.8.6", "react": ">=16.8.6",
"react-dom": ">=16.8.6", "react-dom": ">=16.8.6",
"react-router": "^5.0.1", "react-router": "^5.0.1",
"react-router-dom": "^5.0.1" "react-router-dom": "^5.0.1"
}, },
"devDependencies": { "devDependencies": {
"@ionic/react": "6.0.0",
"@rollup/plugin-node-resolve": "^8.1.0", "@rollup/plugin-node-resolve": "^8.1.0",
"@types/node": "^14.0.14", "@types/node": "^14.0.14",
"@types/react": "16.14.0", "@types/react": "16.14.0",

View File

@ -1 +0,0 @@
package-lock=false

15227
packages/react/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -20,6 +20,7 @@
"url": "https://github.com/ionic-team/ionic.git" "url": "https://github.com/ionic-team/ionic.git"
}, },
"scripts": { "scripts": {
"prepublishOnly": "npm run build",
"build": "npm run clean && npm run copy && npm run compile", "build": "npm run clean && npm run copy && npm run compile",
"clean": "rimraf dist && rimraf dist-transpiled && rimraf routing", "clean": "rimraf dist && rimraf dist-transpiled && rimraf routing",
"compile": "npm run tsc && rollup -c", "compile": "npm run tsc && rollup -c",

View File

@ -8,8 +8,10 @@
"name": "@ionic/vue-router", "name": "@ionic/vue-router",
"version": "6.0.0", "version": "6.0.0",
"license": "MIT", "license": "MIT",
"dependencies": {
"@ionic/vue": "^5.4.2"
},
"devDependencies": { "devDependencies": {
"@ionic/vue": "5.4.1",
"@types/jest": "^26.0.13", "@types/jest": "^26.0.13",
"@types/node": "^14.10.1", "@types/node": "^14.10.1",
"jest": "^27.0.4", "jest": "^27.0.4",
@ -561,22 +563,21 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/@ionic/core": { "node_modules/@ionic/core": {
"version": "5.4.1", "version": "5.9.2",
"resolved": "https://registry.npmjs.org/@ionic/core/-/core-5.4.1.tgz", "resolved": "https://registry.npmjs.org/@ionic/core/-/core-5.9.2.tgz",
"integrity": "sha512-yONXeHjbVGUSL7zPgiCv0fQkw47VHJJ+8zVkYgTg4At+B0VhoLAMgS/ah3EUwSVTOATXdHa6Ak5+71uHPKpViQ==", "integrity": "sha512-1ZqSBS8R6tGQsc+LsLxIRv0q3Ww6jwgJXLvdn6FmVWfpPbBvT+CjCuU9hqJ5qwM+atErblUMYSexvvpws8lGAA==",
"dev": true,
"dependencies": { "dependencies": {
"ionicons": "^5.1.2", "@stencil/core": "^2.4.0",
"tslib": "^1.10.0" "ionicons": "^5.5.3",
"tslib": "^2.1.0"
} }
}, },
"node_modules/@ionic/vue": { "node_modules/@ionic/vue": {
"version": "5.4.1", "version": "5.9.2",
"resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-5.4.1.tgz", "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-5.9.2.tgz",
"integrity": "sha512-oUvP7z3D5b1bGksKFtlf9+WAwAxuNHdXN2hQ51T/CEXFdkkZvXbZ8eA4pIk+bIISqvMeh6v+O/1XOblgoUl8VQ==", "integrity": "sha512-H+R7u3wXUp19L8kpE9VSfNX5ujPTn9d7CLXjxYN4t0tEcVBlLG8lXMQi5X0GBhJ/Px43r2iaykaH3PkYhbkhHQ==",
"dev": true,
"dependencies": { "dependencies": {
"@ionic/core": "5.4.1", "@ionic/core": "5.9.2",
"ionicons": "^5.1.2" "ionicons": "^5.1.2"
} }
}, },
@ -1376,10 +1377,9 @@
} }
}, },
"node_modules/@stencil/core": { "node_modules/@stencil/core": {
"version": "2.9.0", "version": "2.11.0",
"resolved": "https://registry.npmjs.org/@stencil/core/-/core-2.9.0.tgz", "resolved": "https://registry.npmjs.org/@stencil/core/-/core-2.11.0.tgz",
"integrity": "sha512-kY3xYolZoJO1MKslL0NQccHy72R3TIl1prHgfmIrEoGcnMgc6uiskdWaGMuI5/sCGz9T+QuTVz76B1H2ySyBZg==", "integrity": "sha512-/IubCWhVXCguyMUp/3zGrg3c882+RJNg/zpiKfyfJL3kRCOwe+/MD8OoAXVGdd+xAohZKIi1Ik+EHFlsptsjLg==",
"dev": true,
"bin": { "bin": {
"stencil": "bin/stencil" "stencil": "bin/stencil"
}, },
@ -2617,12 +2617,23 @@
"license": "ISC" "license": "ISC"
}, },
"node_modules/ionicons": { "node_modules/ionicons": {
"version": "5.5.3", "version": "5.5.4",
"resolved": "https://registry.npmjs.org/ionicons/-/ionicons-5.5.3.tgz", "resolved": "https://registry.npmjs.org/ionicons/-/ionicons-5.5.4.tgz",
"integrity": "sha512-L71djrMi8pAad66tpwdnO1vwcyluCFvehzxU1PpH1k/HpYBZhZ5IaYhqXipmqUvu5aEbd4cbRguYyI5Fd4bxTw==", "integrity": "sha512-3ph8X9my3inhabWEZ7N0XRA0MnnNQ1v9a602mLNgWsIXnxE9G5BybIZ/pws/OZZ/hoNlvSjk801N03yL9/FNgQ==",
"dev": true,
"dependencies": { "dependencies": {
"@stencil/core": "^2.5.0" "@stencil/core": "~2.10.0"
}
},
"node_modules/ionicons/node_modules/@stencil/core": {
"version": "2.10.0",
"resolved": "https://registry.npmjs.org/@stencil/core/-/core-2.10.0.tgz",
"integrity": "sha512-15rWMTPQ/sp0lSV82HVCXkIya3QLN+uBl7pqK4JnTrp4HiLrzLmNbWjbvgCs55gw0lULbCIGbRIEsFz+Pe/Q+A==",
"bin": {
"stencil": "bin/stencil"
},
"engines": {
"node": ">=12.10.0",
"npm": ">=6.0.0"
} }
}, },
"node_modules/is-ci": { "node_modules/is-ci": {
@ -5980,10 +5991,9 @@
} }
}, },
"node_modules/tslib": { "node_modules/tslib": {
"version": "1.14.1", "version": "2.3.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
"dev": true
}, },
"node_modules/type-check": { "node_modules/type-check": {
"version": "0.3.2", "version": "0.3.2",
@ -6618,22 +6628,21 @@
"dev": true "dev": true
}, },
"@ionic/core": { "@ionic/core": {
"version": "5.4.1", "version": "5.9.2",
"resolved": "https://registry.npmjs.org/@ionic/core/-/core-5.4.1.tgz", "resolved": "https://registry.npmjs.org/@ionic/core/-/core-5.9.2.tgz",
"integrity": "sha512-yONXeHjbVGUSL7zPgiCv0fQkw47VHJJ+8zVkYgTg4At+B0VhoLAMgS/ah3EUwSVTOATXdHa6Ak5+71uHPKpViQ==", "integrity": "sha512-1ZqSBS8R6tGQsc+LsLxIRv0q3Ww6jwgJXLvdn6FmVWfpPbBvT+CjCuU9hqJ5qwM+atErblUMYSexvvpws8lGAA==",
"dev": true,
"requires": { "requires": {
"ionicons": "^5.1.2", "@stencil/core": "^2.4.0",
"tslib": "^1.10.0" "ionicons": "^5.5.3",
"tslib": "^2.1.0"
} }
}, },
"@ionic/vue": { "@ionic/vue": {
"version": "5.4.1", "version": "5.9.2",
"resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-5.4.1.tgz", "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-5.9.2.tgz",
"integrity": "sha512-oUvP7z3D5b1bGksKFtlf9+WAwAxuNHdXN2hQ51T/CEXFdkkZvXbZ8eA4pIk+bIISqvMeh6v+O/1XOblgoUl8VQ==", "integrity": "sha512-H+R7u3wXUp19L8kpE9VSfNX5ujPTn9d7CLXjxYN4t0tEcVBlLG8lXMQi5X0GBhJ/Px43r2iaykaH3PkYhbkhHQ==",
"dev": true,
"requires": { "requires": {
"@ionic/core": "5.4.1", "@ionic/core": "5.9.2",
"ionicons": "^5.1.2" "ionicons": "^5.1.2"
} }
}, },
@ -7230,10 +7239,9 @@
} }
}, },
"@stencil/core": { "@stencil/core": {
"version": "2.9.0", "version": "2.11.0",
"resolved": "https://registry.npmjs.org/@stencil/core/-/core-2.9.0.tgz", "resolved": "https://registry.npmjs.org/@stencil/core/-/core-2.11.0.tgz",
"integrity": "sha512-kY3xYolZoJO1MKslL0NQccHy72R3TIl1prHgfmIrEoGcnMgc6uiskdWaGMuI5/sCGz9T+QuTVz76B1H2ySyBZg==", "integrity": "sha512-/IubCWhVXCguyMUp/3zGrg3c882+RJNg/zpiKfyfJL3kRCOwe+/MD8OoAXVGdd+xAohZKIi1Ik+EHFlsptsjLg=="
"dev": true
}, },
"@tootallnate/once": { "@tootallnate/once": {
"version": "1.1.2", "version": "1.1.2",
@ -8061,12 +8069,18 @@
"dev": true "dev": true
}, },
"ionicons": { "ionicons": {
"version": "5.5.3", "version": "5.5.4",
"resolved": "https://registry.npmjs.org/ionicons/-/ionicons-5.5.3.tgz", "resolved": "https://registry.npmjs.org/ionicons/-/ionicons-5.5.4.tgz",
"integrity": "sha512-L71djrMi8pAad66tpwdnO1vwcyluCFvehzxU1PpH1k/HpYBZhZ5IaYhqXipmqUvu5aEbd4cbRguYyI5Fd4bxTw==", "integrity": "sha512-3ph8X9my3inhabWEZ7N0XRA0MnnNQ1v9a602mLNgWsIXnxE9G5BybIZ/pws/OZZ/hoNlvSjk801N03yL9/FNgQ==",
"dev": true,
"requires": { "requires": {
"@stencil/core": "^2.5.0" "@stencil/core": "~2.10.0"
},
"dependencies": {
"@stencil/core": {
"version": "2.10.0",
"resolved": "https://registry.npmjs.org/@stencil/core/-/core-2.10.0.tgz",
"integrity": "sha512-15rWMTPQ/sp0lSV82HVCXkIya3QLN+uBl7pqK4JnTrp4HiLrzLmNbWjbvgCs55gw0lULbCIGbRIEsFz+Pe/Q+A=="
}
} }
}, },
"is-ci": { "is-ci": {
@ -10385,10 +10399,9 @@
} }
}, },
"tslib": { "tslib": {
"version": "1.14.1", "version": "2.3.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
"dev": true
}, },
"type-check": { "type-check": {
"version": "0.3.2", "version": "0.3.2",

View File

@ -3,6 +3,7 @@
"version": "6.0.0", "version": "6.0.0",
"description": "Vue Router integration for @ionic/vue", "description": "Vue Router integration for @ionic/vue",
"scripts": { "scripts": {
"prepublishOnly": "npm run build",
"test.spec": "jest", "test.spec": "jest",
"lint": "echo add linter", "lint": "echo add linter",
"bundle": "rollup --config rollup.config.js", "bundle": "rollup --config rollup.config.js",
@ -42,8 +43,10 @@
"url": "https://github.com/ionic-team/ionic/issues" "url": "https://github.com/ionic-team/ionic/issues"
}, },
"homepage": "https://github.com/ionic-team/ionic#readme", "homepage": "https://github.com/ionic-team/ionic#readme",
"dependencies": {
"@ionic/vue": "^5.4.2"
},
"devDependencies": { "devDependencies": {
"@ionic/vue": "5.4.1",
"@types/jest": "^26.0.13", "@types/jest": "^26.0.13",
"@types/node": "^14.10.1", "@types/node": "^14.10.1",
"jest": "^27.0.4", "jest": "^27.0.4",

View File

@ -3,6 +3,7 @@
"version": "6.0.0", "version": "6.0.0",
"description": "Vue specific wrapper for @ionic/core", "description": "Vue specific wrapper for @ionic/core",
"scripts": { "scripts": {
"prepublishOnly": "npm run build",
"lint": "echo add linter", "lint": "echo add linter",
"lint.fix": "npm run lint -- --fix", "lint.fix": "npm run lint -- --fix",
"test": "jest", "test": "jest",

View File

@ -115,7 +115,14 @@ export const IonTabBar = defineComponent({
* land on /tabs/tab1/child instead of /tabs/tab1. * land on /tabs/tab1/child instead of /tabs/tab1.
*/ */
if (activeTab !== prevActiveTab || (prevHref !== currentRoute.pathname)) { if (activeTab !== prevActiveTab || (prevHref !== currentRoute.pathname)) {
const search = (currentRoute.search !== undefined) ? `?${currentRoute.search}` : '';
/**
* By default the search is `undefined` in Ionic Vue,
* but Vue Router can set the search to the empty string.
* We check for truthy here because empty string is falsy
* and currentRoute.search cannot ever be a boolean.
*/
const search = (currentRoute.search) ? `?${currentRoute.search}` : '';
tabs[activeTab] = { tabs[activeTab] = {
...tabs[activeTab], ...tabs[activeTab],
currentHref: currentRoute.pathname + search currentHref: currentRoute.pathname + search

View File

@ -288,7 +288,30 @@ describe('Tabs', () => {
cy.ionPageHidden('tab2'); cy.ionPageHidden('tab2');
cy.url().should('include', '/tabs/tab1/child-one?key=value'); cy.url().should('include', '/tabs/tab1/child-one?key=value');
}) });
// Verifies fix for https://github.com/ionic-team/ionic-framework/issues/23699
it('should handle clicking tab multiple times without query string', () => {
cy.visit('http://localhost:8080/tabs/tab1');
cy.ionPageVisible('tab1');
cy.get('ion-tab-button#tab-button-tab2').click();
cy.ionPageVisible('tab2');
cy.ionPageHidden('tab1');
cy.get('ion-tab-button#tab-button-tab1').click();
cy.ionPageVisible('tab1');
cy.ionPageHidden('tab2');
cy.get('ion-tab-button#tab-button-tab1').click();
cy.ionPageVisible('tab1');
cy.ionPageHidden('tab2');
cy.get('ion-tab-button#tab-button-tab2').click();
cy.ionPageVisible('tab2');
cy.ionPageHidden('tab1');
});
}) })
describe('Tabs - Swipe to Go Back', () => { describe('Tabs - Swipe to Go Back', () => {