diff --git a/core/tsconfig.base.json b/core/tsconfig.base.json new file mode 100644 index 00000000000..65dc6794e2d --- /dev/null +++ b/core/tsconfig.base.json @@ -0,0 +1,38 @@ +{ + /* + * Shared base TypeScript configuration extended by every Ionic package and + * the repo root. + * + * This base lives in core/ rather than at the repo root because core is the + * only package guaranteed to be present in every build context. The Vercel + * preview builds core in isolation, mounted separately from the full repo + * clone, so a config at the repo root is not reachable from core's build. + * Since every package already depends on core, placing the base here lets all + * packages and the repo root extend it with a relative path that resolves in + * every environment. + */ + "compilerOptions": { + "alwaysStrict": true, + "strict": true, + "allowSyntheticDefaultImports": true, + "allowUnreachableCode": false, + "declaration": true, + "experimentalDecorators": true, + "forceConsistentCasingInFileNames": true, + "importHelpers": true, + "lib": [ + "dom", + "es2022" + ], + "module": "esnext", + "moduleResolution": "bundler", + "noImplicitAny": true, + "noImplicitReturns": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "pretty": true, + "removeComments": false, + "strictPropertyInitialization": false, + "target": "es2022" + } +} diff --git a/core/tsconfig.json b/core/tsconfig.json index 6e2271dfde6..2d8fb861ac0 100644 --- a/core/tsconfig.json +++ b/core/tsconfig.json @@ -1,34 +1,18 @@ { + "extends": "./tsconfig.base.json", "compilerOptions": { - "strict": true, - "alwaysStrict": true, - "allowSyntheticDefaultImports": true, - "allowUnreachableCode": false, - "declaration": true, - "experimentalDecorators": true, - "forceConsistentCasingInFileNames": true, "assumeChangesOnlyAffectDirectDependencies": true, - "jsx": "react", - "jsxFactory": "h", - "jsxFragmentFactory": "Fragment", + // dom.iterable required for for...of iteration over DOM collections (NodeList, HTMLCollection) + // See: slot-mutation-controller.ts, popover.tsx, router/utils/dom.ts "lib": [ "dom", "dom.iterable", - "es2017", - "es2020", - "es2021", - "esnext" + "es2022" ], - "module": "esnext", - "moduleResolution": "node", - "noImplicitAny": true, - "noImplicitReturns": true, - "noUnusedLocals": true, - "noUnusedParameters": true, + "jsx": "react", + "jsxFactory": "h", + "jsxFragmentFactory": "Fragment", "outDir": ".tmp", - "pretty": true, - "removeComments": false, - "target": "es2017", "baseUrl": ".", "paths": { "@utils/*": ["src/utils/*"], @@ -37,7 +21,7 @@ } }, "include": [ - "src", + "src" ], "exclude": [ "node_modules" diff --git a/package-lock.json b/package-lock.json index 54ec41085ba..d071e527ba9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9288,7 +9288,8 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", - "dev": true + "dev": true, + "requires": {} }, "@octokit/plugin-rest-endpoint-methods": { "version": "6.6.2", diff --git a/packages/angular-server/tsconfig.json b/packages/angular-server/tsconfig.json index ad4b4e6bcaf..06d12e079e3 100644 --- a/packages/angular-server/tsconfig.json +++ b/packages/angular-server/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig", + "extends": "../../core/tsconfig.base.json", "compilerOptions": { "module": "es2022", "moduleResolution": "bundler", diff --git a/packages/angular/package-lock.json b/packages/angular/package-lock.json index c857c63e7db..a8eaba98495 100644 --- a/packages/angular/package-lock.json +++ b/packages/angular/package-lock.json @@ -538,7 +538,6 @@ "integrity": "sha512-VJv4ryJ2yLy79FqAq6WzZCLU3U5WU3n5NS7av5LbatxxOb07Jg80J/DBPSeA3rJ5EzpSIrj8mHLvW8Eunn58Eg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@angular-devkit/architect": "0.2200.0", "@angular-devkit/core": "22.0.0", @@ -574,7 +573,6 @@ "integrity": "sha512-O9Qk60/OQQuZXMeXRfOpsq+/B609nd5KIxjSZFddRQUfSMZrdvVDNK0irjgYVKGDkMx3dqCiQ8a4nAIdGy7V6A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "tslib": "^2.3.0" }, @@ -592,7 +590,6 @@ "integrity": "sha512-g8Ab5Lcji2cxADfcPPM7kltEzSlCjUevPK3udm+3S5uhkTcLNH236/XCAwhD1XIgHQDv9p7FWm1xS7zkvbwXhA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "tslib": "^2.3.0" }, @@ -606,7 +603,6 @@ "integrity": "sha512-7r4ufQ8CUhlRBol/N8a6psg40kOu/Y3H6iuUGwq9cs6Gs/fII7mVB6QgPi0bCiNDjaQB7xGq6NZ0iT6CPBH8Sw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/core": "7.29.0", "@jridgewell/sourcemap-codec": "^1.4.14", @@ -640,7 +636,6 @@ "integrity": "sha512-H4lzunB+LUNylQ3hZGYWDz1NfNAdFzPdOadwuS6VpPyxF4Ti0MLyAfx7NDnyTrmdY2/PFx8I6jXrveNlIsORXg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "tslib": "^2.3.0" }, @@ -688,7 +683,6 @@ "integrity": "sha512-ry4Hdov19V8sA+MrIEIeISXA8GKWluCDUg06PaAm9nJveYjQUUlElZqa3fTNGOmy3/eNV8H9nmaroD27L8yU1A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "tslib": "^2.3.0" }, @@ -775,7 +769,6 @@ "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", @@ -1931,7 +1924,6 @@ "integrity": "sha512-XJmn/wY4AX56l1BRU+ZjDrFtg9+2uBEi4JvJQj82kwJDQKiPgSn4CEsbfGGygS4Gw6rkL4W18oATjfVfaqub2Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@inquirer/checkbox": "^5.1.4", "@inquirer/confirm": "^6.0.12", @@ -2112,7 +2104,6 @@ "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", "dev": true, "license": "BSD-2-Clause", - "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "4.33.0", "@typescript-eslint/types": "4.33.0", @@ -3878,7 +3869,6 @@ "integrity": "sha512-dyh/xO2Fh5bYrfWaaqGrRQQGkNdmYw6AmaAUvYeUMNTWQtvb796ikLdmTchRmOlOiIJ1TDXfWgVx1QkUlQ6Hew==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "undici-types": "~6.21.0" } @@ -4065,7 +4055,6 @@ "integrity": "sha512-5B7PfA2e1NQGCnDHd/0lW7W3gvp3d59Ryw54FYO8Uswxo9f6ikw3AZV+Xj/TvpImmpsiYyUqAfhC6kJID1jF6w==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.61.0", "@typescript-eslint/types": "8.61.0", @@ -4173,7 +4162,6 @@ "integrity": "sha512-9QTQpZ5Iin4CdIodfbDQFSeiSJKidgYJYug1P9CC2xWgUTvlmixViqDZNciMjwLBZyJnG4tGmPl97rVAFb1AJg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -4255,7 +4243,6 @@ "integrity": "sha512-3bzFt7ImFMW/jVYwJamDoe/dMOdFLSC6pom6rRjdh4SZJEYupyMzem8e7vKZLclLfpHjlwSAXOUxtKxGXUiLqA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", "@typescript-eslint/scope-manager": "8.61.0", @@ -4342,7 +4329,6 @@ "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", "dev": true, "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -4488,7 +4474,6 @@ "integrity": "sha512-jU5MKQ24bBB4J99gSSexmUrLm2LvTJZCuCHhNTQ1LavWX4e1lrIxhm+6pJILOm6Cixf8jyNXnHMty6nljX8J+Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@angular-eslint/bundled-angular-compiler": "22.0.0", "eslint-scope": "9.1.2" @@ -4819,7 +4804,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "baseline-browser-mapping": "^2.10.12", "caniuse-lite": "^1.0.30001782", @@ -4987,7 +4971,6 @@ "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "readdirp": "^5.0.0" }, @@ -5783,7 +5766,6 @@ "integrity": "sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -6223,7 +6205,6 @@ "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "accepts": "^2.0.0", "body-parser": "^2.2.1", @@ -6998,7 +6979,6 @@ "integrity": "sha512-eIaZ9qDgu7XV0pxOCrg7/WhnQ6Ivm22UcxhXx/A3dcbqbbYgBEkc6e/J/s7j2tS96zoB0S9VBdLwQNCWwUo4LA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=16.9.0" } @@ -7935,7 +7915,6 @@ "integrity": "sha512-7I5knELsJKTUjXG+A6BkKAiGkW1i25fNa/xlUl9hFtk15WbE9jndA89xu5FzQKrY5llajE1hfZZFMILXkDHk/Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "cli-truncate": "^5.2.0", "eventemitter3": "^5.0.4", @@ -9397,7 +9376,6 @@ "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "dev": true, "license": "MIT", - "peer": true, "bin": { "prettier": "bin-prettier.js" }, @@ -9676,7 +9654,6 @@ "integrity": "sha512-WHeFSbZYsPu3+bLoNRUuAO+wavNlocOPf3wSHTP7hcFKVnJeWsYlCDbr3mTS14FCizf9ccIxXA8sGL8zKeQN3g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/estree": "1.0.8" }, @@ -9915,7 +9892,6 @@ "integrity": "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==", "dev": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "tslib": "^2.1.0" } @@ -10700,8 +10676,7 @@ "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD", - "peer": true + "license": "0BSD" }, "node_modules/tsutils": { "version": "3.21.0", @@ -10871,7 +10846,6 @@ "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", "dev": true, "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -11340,7 +11314,6 @@ "integrity": "sha512-IynmDyxsEsb9RKzO3J9+4SxXnl2FTFSzNBaKKaMV6tsSk0rw9gYw9gs+JFCq/qk2LCZ78KDwyj+Z289TijSkUw==", "dev": true, "license": "MIT", - "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } @@ -11360,8 +11333,7 @@ "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.16.2.tgz", "integrity": "sha512-Eky7p2Z1Ig3NnbfodSPoARCjKBSTFMnE/ACsP1L/XJEfY4SdOFce19BsUCWVwL6K5ABZFy5J3bjcMWffX+YM3Q==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" } } } diff --git a/packages/angular/package.json b/packages/angular/package.json index 7310ffc679c..7435635f98d 100644 --- a/packages/angular/package.json +++ b/packages/angular/package.json @@ -39,7 +39,6 @@ "sync": "./scripts/sync.sh", "local.sync.and.pack": "./scripts/sync-and-pack.sh", "test": "echo 'angular no tests yet'", - "tsc": "tsc -p .", "validate": "npm i && npm run lint && npm run test && npm run build" }, "exports": { diff --git a/packages/angular/scripts/package.json b/packages/angular/scripts/package.json deleted file mode 100644 index 7760f7ab69f..00000000000 --- a/packages/angular/scripts/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "ionic-angular", - "version": "`gulp package` generates dist/package.json from this template using the root ./package.json", - "description": "", - "keywords": [], - "repository": { - "type": "git", - "url": "git+https://github.com/ionic-team/ionic-framework.git" - }, - "license": "MIT", - "main": "umd/index.js", - "module": "index.js", - "es2015": "es2015/index.js", - "peerDependencies": { - } -} diff --git a/packages/angular/scripts/rollup.config.js b/packages/angular/scripts/rollup.config.js deleted file mode 100644 index aed5aea41ac..00000000000 --- a/packages/angular/scripts/rollup.config.js +++ /dev/null @@ -1,22 +0,0 @@ -import resolve from '@rollup/plugin-node-resolve'; - -export default { - input: 'build/es2015/core.js', - output: [ - { - file: 'dist/fesm2015.js', - format: 'es' - } - ], - external: (id) => { - // anything else is external - // Windows: C:\xxxxxx\xxx - const colonPosition = 1; - return !(id.startsWith('.') || id.startsWith('/') || id.charAt(colonPosition) === ':'); - }, - plugins: [ - resolve({ - mainFields: ['module'] - }) - ] -}; diff --git a/packages/angular/scripts/rollup.config.legacy.js b/packages/angular/scripts/rollup.config.legacy.js deleted file mode 100644 index fd4b935a3ae..00000000000 --- a/packages/angular/scripts/rollup.config.legacy.js +++ /dev/null @@ -1,18 +0,0 @@ -import config from './rollup.config'; - -const newConfig = { - ...config, - input: 'build/es5/core.js', -}; -newConfig.output = [ - { - file: 'dist/fesm5.js', - format: 'es' - }, - { - file: 'dist/fesm5.cjs.js', - format: 'cjs' - } -]; - -export { newConfig as default }; diff --git a/packages/angular/tsconfig.json b/packages/angular/tsconfig.json index 15c0467cb48..d738aec76ae 100644 --- a/packages/angular/tsconfig.json +++ b/packages/angular/tsconfig.json @@ -1,4 +1,5 @@ { + "extends": "../../core/tsconfig.base.json", "angularCompilerOptions": { "annotateForClosureCompiler": true, "strictMetadataEmit": true, @@ -8,28 +9,10 @@ "compilationMode": "partial" }, "compilerOptions": { - "alwaysStrict": true, - "strict": true, - "allowSyntheticDefaultImports": true, - "allowUnreachableCode": false, - "declaration": true, "declarationDir": "dist", - "experimentalDecorators": true, - "forceConsistentCasingInFileNames": true, - "lib": ["dom", "es2017"], "module": "es2022", - "moduleResolution": "bundler", - "noImplicitAny": true, - "noImplicitReturns": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "outDir": "build/es2015", - "pretty": true, - "removeComments": false, - "importHelpers": true, "rootDir": "./", - "strictPropertyInitialization": false, - "target": "es2015", + "target": "es2022", "plugins": [ { "name": "typescript-eslint-language-service" diff --git a/packages/angular/tsconfig.schematics.json b/packages/angular/tsconfig.schematics.json index 101b2032288..3343ff4b475 100644 --- a/packages/angular/tsconfig.schematics.json +++ b/packages/angular/tsconfig.schematics.json @@ -5,16 +5,14 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "allowUnreachableCode": false, - "lib": ["es2017", "dom"], + "lib": ["es2022"], "module": "nodenext", "moduleResolution": "nodenext", "sourceMap": false, "pretty": true, "rootDir": "schematics", - "target": "es2017", + "target": "es2022", "outDir": "dist/schematics", - // TypeScript 6.0 defaults `types` to []; the devkit .d.ts the schematics - // consume reference Node globals (Buffer, node:url), so opt them back in. "types": ["node"] }, "exclude": ["node_modules"], diff --git a/packages/react-router/package-lock.json b/packages/react-router/package-lock.json index b9c7771dd3c..ea2ff34ccee 100644 --- a/packages/react-router/package-lock.json +++ b/packages/react-router/package-lock.json @@ -30,7 +30,7 @@ "react-router-dom": "^6.30.0", "rimraf": "^3.0.2", "rollup": "^4.2.0", - "typescript": "^4.0.5" + "typescript": "^6.0.0" }, "peerDependencies": { "react": ">=16.8.6", @@ -4880,9 +4880,9 @@ } }, "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", + "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", "dev": true, "license": "Apache-2.0", "bin": { @@ -4890,7 +4890,7 @@ "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=14.17" } }, "node_modules/unbox-primitive": { diff --git a/packages/react-router/package.json b/packages/react-router/package.json index b5626d0beb9..eab1f0ccd38 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -63,7 +63,7 @@ "react-router-dom": "^6.30.0", "rimraf": "^3.0.2", "rollup": "^4.2.0", - "typescript": "^4.0.5" + "typescript": "^6.0.0" }, "prettier": "@ionic/prettier-config" } diff --git a/packages/react-router/src/ReactRouter/StackManager.tsx b/packages/react-router/src/ReactRouter/StackManager.tsx index 1da1c29e000..546eca755e3 100644 --- a/packages/react-router/src/ReactRouter/StackManager.tsx +++ b/packages/react-router/src/ReactRouter/StackManager.tsx @@ -5,7 +5,7 @@ */ import type { RouteInfo, StackContextState, ViewItem } from '@ionic/react'; -import { IonRoute, RouteManagerContext, StackContext, generateId, getConfig } from '@ionic/react'; +import { IonRoute, RouteManagerContext, StackContext, generateId } from '@ionic/react'; import React from 'react'; import type { RouteObject } from 'react-router-dom'; import { Route, UNSAFE_RouteContext as RouteContext, matchRoutes } from 'react-router-dom'; @@ -134,7 +134,7 @@ const isViewItemPreservableOnPop = (viewItem: ViewItem | undefined): boolean => export class StackManager extends React.PureComponent { id: string; // Unique id for the router outlet aka outletId - context!: React.ContextType; + declare context: React.ContextType; ionRouterOutlet?: React.ReactElement; routerOutletElement: HTMLIonRouterOutletElement | undefined; prevProps?: StackManagerProps; @@ -1772,7 +1772,7 @@ export class StackManager extends React.PureComponent { const components = this.context.getChildrenToRender( this.id, - this.ionRouterOutlet, + this.ionRouterOutlet!, this.props.routeInfo, () => { // Callback triggers re-render when view items are modified during getChildrenToRender diff --git a/packages/react-router/tsconfig.json b/packages/react-router/tsconfig.json index d51e26286c4..73d1bf76c53 100644 --- a/packages/react-router/tsconfig.json +++ b/packages/react-router/tsconfig.json @@ -1,27 +1,15 @@ { + "extends": "../../core/tsconfig.base.json", "compilerOptions": { - "strict": true, - "allowUnreachableCode": false, - "allowSyntheticDefaultImports": true, - "declaration": true, "emitDecoratorMetadata": true, - "experimentalDecorators": true, "esModuleInterop": true, - "lib": ["dom", "es2015"], - "importHelpers": true, - "module": "es2015", - "moduleResolution": "node", - "noImplicitAny": true, - "noImplicitReturns": true, - "noUnusedLocals": true, - "noUnusedParameters": true, "outDir": "dist", "declarationDir": "dist/types", - "removeComments": false, + /* rootDir set to satisfy @rollup/plugin-typescript (TS5011) for a predictable output layout. */ + "rootDir": "src", "inlineSources": true, "sourceMap": true, - "jsx": "react", - "target": "es2017" + "jsx": "react" }, "include": ["src/**/*.ts", "src/**/*.tsx"], "exclude": ["**/__tests__/**"], diff --git a/packages/react/.prettierignore b/packages/react/.prettierignore index 8aa4ae0d4b4..35193a94643 100644 --- a/packages/react/.prettierignore +++ b/packages/react/.prettierignore @@ -2,5 +2,5 @@ dist dist-transpiled *.md build -proxies.ts react-component-lib +components.ts diff --git a/packages/react/package-lock.json b/packages/react/package-lock.json index feb308cd8b0..20b198b5959 100644 --- a/packages/react/package-lock.json +++ b/packages/react/package-lock.json @@ -18,8 +18,9 @@ "@ionic/eslint-config": "^0.3.0", "@ionic/prettier-config": "^2.0.0", "@rollup/plugin-typescript": "^11.1.5", - "@testing-library/jest-dom": "^5.11.6", - "@testing-library/react": "^13.4.0", + "@testing-library/dom": "^10.4.1", + "@testing-library/jest-dom": "^7.0.0", + "@testing-library/react": "^16.3.2", "@types/jest": "^26.0.15", "@types/node": "^14.0.14", "@types/react": "^18.3.28", @@ -36,8 +37,8 @@ "react-dom": "^18.3.1", "rimraf": "^3.0.2", "rollup": "^4.2.0", - "ts-jest": "^29.1.3", - "typescript": "^5.0.0" + "ts-jest": "^29.4.0", + "typescript": "^6.0.0" }, "peerDependencies": { "react": ">=16.8.6", @@ -54,10 +55,11 @@ } }, "node_modules/@adobe/css-tools": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.1.tgz", - "integrity": "sha512-/62yikz7NLScCGAAST5SHdnjaDJQBDq0M2muyRTpf2VQhw6StBg2ALiu73zSJQ4fMVLA+0uBhBHAle7Wg+2kSg==", - "dev": true + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.5.0.tgz", + "integrity": "sha512-6OzddxPio9UiWTCemp4N8cYLV2ZN1ncRnV1cVGtve7dhPOtRkleRyx32GQCYSwDYgaHU3USMm84tNsvKzRCa1Q==", + "dev": true, + "license": "MIT" }, "node_modules/@ampproject/remapping": { "version": "2.3.0", @@ -1908,47 +1910,23 @@ } }, "node_modules/@testing-library/dom": { - "version": "8.20.1", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.20.1.tgz", - "integrity": "sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g==", + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.1.tgz", + "integrity": "sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", "@types/aria-query": "^5.0.1", - "aria-query": "5.1.3", - "chalk": "^4.1.0", + "aria-query": "5.3.0", "dom-accessibility-api": "^0.5.9", "lz-string": "^1.5.0", + "picocolors": "1.1.1", "pretty-format": "^27.0.2" }, "engines": { - "node": ">=12" - } - }, - "node_modules/@testing-library/dom/node_modules/aria-query": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", - "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", - "dev": true, - "dependencies": { - "deep-equal": "^2.0.5" - } - }, - "node_modules/@testing-library/dom/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=18" } }, "node_modules/@testing-library/dom/node_modules/pretty-format": { @@ -1978,44 +1956,61 @@ } }, "node_modules/@testing-library/jest-dom": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.17.0.tgz", - "integrity": "sha512-ynmNeT7asXyH3aSVv4vvX4Rb+0qjOhdNHnO/3vuZNqPmhDpV/+rCSGwQ7bLcmU2cJ4dvoheIO85LQj0IbJHEtg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-7.0.0.tgz", + "integrity": "sha512-HKAH9C6mBo5yBG6yRO5i43L2iisencAo5z+o5P/saHUoY+miC5ivXRxHBJcFyB5ypPNxHJdK3BoF/3O4DIptMg==", "dev": true, + "license": "MIT", "dependencies": { - "@adobe/css-tools": "^4.0.1", - "@babel/runtime": "^7.9.2", - "@types/testing-library__jest-dom": "^5.9.1", + "@adobe/css-tools": "^4.4.0", "aria-query": "^5.0.0", - "chalk": "^3.0.0", "css.escape": "^1.5.1", - "dom-accessibility-api": "^0.5.6", - "lodash": "^4.17.15", + "dom-accessibility-api": "^0.6.3", + "picocolors": "^1.1.1", "redent": "^3.0.0" }, "engines": { - "node": ">=8", + "node": ">=22", "npm": ">=6", "yarn": ">=1" + }, + "peerDependencies": { + "@testing-library/dom": ">=10 <11" } }, + "node_modules/@testing-library/jest-dom/node_modules/dom-accessibility-api": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz", + "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", + "dev": true, + "license": "MIT" + }, "node_modules/@testing-library/react": { - "version": "13.4.0", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-13.4.0.tgz", - "integrity": "sha512-sXOGON+WNTh3MLE9rve97ftaZukN3oNf2KjDy7YTx6hcTO2uuLHuCGynMDhFwGw/jYf4OJ2Qk0i4i79qMNNkyw==", + "version": "16.3.2", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.3.2.tgz", + "integrity": "sha512-XU5/SytQM+ykqMnAnvB2umaJNIOsLF3PVv//1Ew4CTcpz0/BRyy/af40qqrt7SjKpDdT1saBMc42CUok5gaw+g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/runtime": "^7.12.5", - "@testing-library/dom": "^8.5.0", - "@types/react-dom": "^18.0.0" + "@babel/runtime": "^7.12.5" }, "engines": { - "node": ">=12" + "node": ">=18" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "@testing-library/dom": "^10.0.0", + "@types/react": "^18.0.0 || ^19.0.0", + "@types/react-dom": "^18.0.0 || ^19.0.0", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, "node_modules/@tootallnate/once": { @@ -2295,15 +2290,6 @@ "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", "dev": true }, - "node_modules/@types/testing-library__jest-dom": { - "version": "5.14.9", - "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.9.tgz", - "integrity": "sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw==", - "dev": true, - "dependencies": { - "@types/jest": "*" - } - }, "node_modules/@types/tough-cookie": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", @@ -3026,12 +3012,6 @@ "node": ">=8" } }, - "node_modules/async": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", - "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", - "dev": true - }, "node_modules/async-exit-hook": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz", @@ -3953,38 +3933,6 @@ } } }, - "node_modules/deep-equal": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", - "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.5", - "es-get-iterator": "^1.1.3", - "get-intrinsic": "^1.2.2", - "is-arguments": "^1.1.1", - "is-array-buffer": "^3.0.2", - "is-date-object": "^1.0.5", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "isarray": "^2.0.5", - "object-is": "^1.1.5", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.1", - "side-channel": "^1.0.4", - "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", @@ -4271,21 +4219,6 @@ "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==", "dev": true }, - "node_modules/ejs": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", - "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", - "dev": true, - "dependencies": { - "jake": "^10.8.5" - }, - "bin": { - "ejs": "bin/cli.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/electron-to-chromium": { "version": "1.5.11", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.11.tgz", @@ -4435,26 +4368,6 @@ "node": ">= 0.4" } }, - "node_modules/es-get-iterator": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", - "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "has-symbols": "^1.0.3", - "is-arguments": "^1.1.1", - "is-map": "^2.0.2", - "is-set": "^2.0.2", - "is-string": "^1.0.7", - "isarray": "^2.0.5", - "stop-iteration-iterator": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/es-set-tostringtag": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", @@ -5088,36 +5001,6 @@ "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/filelist": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", - "dev": true, - "dependencies": { - "minimatch": "^5.0.1" - } - }, - "node_modules/filelist/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/filelist/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -5515,6 +5398,28 @@ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, + "node_modules/handlebars": { + "version": "4.7.9", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.9.tgz", + "integrity": "sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, "node_modules/hard-rejection": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", @@ -6226,22 +6131,6 @@ "@stencil/core": "^4.35.3" } }, - "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-array-buffer": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", @@ -6409,18 +6298,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-negative-zero": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", @@ -6577,18 +6454,6 @@ "node": ">=8" } }, - "node_modules/is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-shared-array-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", @@ -6676,18 +6541,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -6700,22 +6553,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-weakset": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", - "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", @@ -6821,40 +6658,6 @@ "node": ">=8" } }, - "node_modules/jake": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", - "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", - "dev": true, - "dependencies": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.4", - "minimatch": "^3.1.2" - }, - "bin": { - "jake": "bin/cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jake/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, "node_modules/jest": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", @@ -9136,6 +8939,13 @@ "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", "dev": true }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true, + "license": "MIT" + }, "node_modules/new-github-release-url": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/new-github-release-url/-/new-github-release-url-1.0.0.tgz", @@ -9361,22 +9171,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object-is": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", - "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", @@ -9960,10 +9754,11 @@ } }, "node_modules/picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", - "dev": true + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", @@ -10713,13 +10508,11 @@ } }, "node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -10748,24 +10541,6 @@ "semver": "bin/semver.js" } }, - "node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", @@ -10952,18 +10727,6 @@ "node": ">=8" } }, - "node_modules/stop-iteration-iterator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", - "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", - "dev": true, - "dependencies": { - "internal-slot": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/string-length": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", @@ -11362,20 +11125,21 @@ } }, "node_modules/ts-jest": { - "version": "29.2.4", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.2.4.tgz", - "integrity": "sha512-3d6tgDyhCI29HlpwIq87sNuI+3Q6GLTTCeYRHCs7vDz+/3GCMwEtV9jezLyl4ZtnBgx00I7hm8PCP8cTksMGrw==", + "version": "29.4.11", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.11.tgz", + "integrity": "sha512-IrFl7l9AuB/qrNw5quqvAv/hmKMb8dhWOH4jQOGo0Oq8tCeo1O86/iTFG1FaRimgUkF13l4PcepO8ATFT6Ns4g==", "dev": true, + "license": "MIT", "dependencies": { - "bs-logger": "0.x", - "ejs": "^3.1.10", - "fast-json-stable-stringify": "2.x", - "jest-util": "^29.0.0", + "bs-logger": "^0.2.6", + "fast-json-stable-stringify": "^2.1.0", + "handlebars": "^4.7.9", "json5": "^2.2.3", - "lodash.memoize": "4.x", - "make-error": "1.x", - "semver": "^7.5.3", - "yargs-parser": "^21.0.1" + "lodash.memoize": "^4.1.2", + "make-error": "^1.3.6", + "semver": "^7.8.0", + "type-fest": "^4.41.0", + "yargs-parser": "^21.1.1" }, "bin": { "ts-jest": "cli.js" @@ -11385,11 +11149,12 @@ }, "peerDependencies": { "@babel/core": ">=7.0.0-beta.0 <8", - "@jest/transform": "^29.0.0", - "@jest/types": "^29.0.0", - "babel-jest": "^29.0.0", - "jest": "^29.0.0", - "typescript": ">=4.3 <6" + "@jest/transform": "^29.0.0 || ^30.0.0", + "@jest/types": "^29.0.0 || ^30.0.0", + "babel-jest": "^29.0.0 || ^30.0.0", + "jest": "^29.0.0 || ^30.0.0", + "jest-util": "^29.0.0 || ^30.0.0", + "typescript": ">=4.3 <7" }, "peerDependenciesMeta": { "@babel/core": { @@ -11406,9 +11171,25 @@ }, "esbuild": { "optional": true + }, + "jest-util": { + "optional": true } } }, + "node_modules/ts-jest/node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/ts-jest/node_modules/yargs-parser": { "version": "21.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", @@ -11595,10 +11376,11 @@ } }, "node_modules/typescript": { - "version": "5.5.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", - "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", + "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -11607,6 +11389,20 @@ "node": ">=14.17" } }, + "node_modules/uglify-js": { + "version": "3.19.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", + "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", + "dev": true, + "license": "BSD-2-Clause", + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", @@ -11877,24 +11673,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/which-collection": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", - "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", - "dev": true, - "dependencies": { - "is-map": "^2.0.3", - "is-set": "^2.0.3", - "is-weakmap": "^2.0.2", - "is-weakset": "^2.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/which-typed-array": { "version": "1.1.13", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", @@ -11926,6 +11704,13 @@ "node": ">=8" } }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true, + "license": "MIT" + }, "node_modules/wrap-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", diff --git a/packages/react/package.json b/packages/react/package.json index 2a2fe96cfba..4846ec0f9d6 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -53,8 +53,9 @@ "@ionic/eslint-config": "^0.3.0", "@ionic/prettier-config": "^2.0.0", "@rollup/plugin-typescript": "^11.1.5", - "@testing-library/jest-dom": "^5.11.6", - "@testing-library/react": "^13.4.0", + "@testing-library/dom": "^10.4.1", + "@testing-library/jest-dom": "^7.0.0", + "@testing-library/react": "^16.3.2", "@types/jest": "^26.0.15", "@types/node": "^14.0.14", "@types/react": "^18.3.28", @@ -71,12 +72,20 @@ "react-dom": "^18.3.1", "rimraf": "^3.0.2", "rollup": "^4.2.0", - "ts-jest": "^29.1.3", - "typescript": "^5.0.0" + "ts-jest": "^29.4.0", + "typescript": "^6.0.0" }, "jest": { "testEnvironment": "jsdom", "preset": "ts-jest", + "transform": { + "^.+\\.tsx?$": [ + "ts-jest", + { + "tsconfig": "tsconfig.spec.json" + } + ] + }, "setupFilesAfterEnv": [ "/jest.setup.js" ], diff --git a/packages/react/src/components/IonPage.tsx b/packages/react/src/components/IonPage.tsx index 67e6dadfbec..ceddbd70afc 100644 --- a/packages/react/src/components/IonPage.tsx +++ b/packages/react/src/components/IonPage.tsx @@ -15,7 +15,7 @@ interface IonPageInternalProps extends IonPageProps { } class IonPageInternal extends React.Component { - context!: React.ContextType; + declare context: React.ContextType; constructor(props: IonPageInternalProps) { super(props); diff --git a/packages/react/src/components/IonRoute.tsx b/packages/react/src/components/IonRoute.tsx index 29e1708fd63..34523bef238 100644 --- a/packages/react/src/components/IonRoute.tsx +++ b/packages/react/src/components/IonRoute.tsx @@ -15,7 +15,7 @@ export interface IonRouteProps { interface IonRouteState {} export class IonRoute extends React.PureComponent { - context!: React.ContextType; + declare context: React.ContextType; render() { const IonRouteInner = this.context.getIonRoute(); diff --git a/packages/react/src/components/IonRouterOutlet.tsx b/packages/react/src/components/IonRouterOutlet.tsx index 7ebf9765e21..5440aa4b8d9 100644 --- a/packages/react/src/components/IonRouterOutlet.tsx +++ b/packages/react/src/components/IonRouterOutlet.tsx @@ -25,7 +25,7 @@ interface InternalProps extends Props { interface InternalState {} class IonRouterOutletContainer extends React.Component { - context!: React.ContextType; + declare context: React.ContextType; private readonly outletId: string; constructor(props: InternalProps) { diff --git a/packages/react/src/components/__tests__/utils.spec.ts b/packages/react/src/components/__tests__/utils.spec.ts index 3714aa2a859..219f0c78443 100644 --- a/packages/react/src/components/__tests__/utils.spec.ts +++ b/packages/react/src/components/__tests__/utils.spec.ts @@ -1,5 +1,5 @@ import * as utils from '../react-component-lib/utils'; -import '@testing-library/jest-dom/extend-expect'; +import '@testing-library/jest-dom'; describe('isCoveredByReact', () => { it('should identify standard events as covered by React', () => { diff --git a/packages/react/src/components/components.ts b/packages/react/src/components/components.ts index 7080edec552..785a7bfab0e 100644 --- a/packages/react/src/components/components.ts +++ b/packages/react/src/components/components.ts @@ -11,1430 +11,1027 @@ import type { EventName, StencilReactComponent } from '@stencil/react-output-tar import { createComponent } from '@stencil/react-output-target/runtime'; import React from 'react'; -import { - type AccordionGroupChangeEventDetail, - type BreadcrumbCollapsedClickEventDetail, - type CheckboxChangeEventDetail, - type DatetimeChangeEventDetail, - type InputChangeEventDetail, - type InputInputEventDetail, - type InputOtpChangeEventDetail, - type InputOtpCompleteEventDetail, - type InputOtpInputEventDetail, - type IonAccordionGroupCustomEvent, - type IonBackdropCustomEvent, - type IonBreadcrumbsCustomEvent, - type IonCheckboxCustomEvent, - type IonContentCustomEvent, - type IonDatetimeCustomEvent, - type IonImgCustomEvent, - type IonInfiniteScrollCustomEvent, - type IonInputCustomEvent, - type IonInputOtpCustomEvent, - type IonItemOptionsCustomEvent, - type IonItemSlidingCustomEvent, - type IonMenuCustomEvent, - type IonNavCustomEvent, - type IonPickerColumnCustomEvent, - type IonRadioCustomEvent, - type IonRadioGroupCustomEvent, - type IonRangeCustomEvent, - type IonRefresherCustomEvent, - type IonReorderGroupCustomEvent, - type IonSearchbarCustomEvent, - type IonSegmentCustomEvent, - type IonSegmentViewCustomEvent, - type IonSelectCustomEvent, - type IonSplitPaneCustomEvent, - type IonTextareaCustomEvent, - type IonToggleCustomEvent, - type ItemReorderEventDetail, - type MenuCloseEventDetail, - type PickerColumnChangeEventDetail, - type RadioGroupChangeEventDetail, - type RangeChangeEventDetail, - type RangeKnobMoveEndEventDetail, - type RangeKnobMoveStartEventDetail, - type RefresherEventDetail, - type RefresherPullEndEventDetail, - type ReorderEndEventDetail, - type ReorderMoveEventDetail, - type ScrollBaseDetail, - type ScrollDetail, - type SearchbarChangeEventDetail, - type SearchbarInputEventDetail, - type SegmentChangeEventDetail, - type SegmentViewScrollEvent, - type SelectChangeEventDetail, - type TextareaChangeEventDetail, - type TextareaInputEventDetail, - type ToggleChangeEventDetail, -} from '@ionic/core'; -import type { Components } from '@ionic/core/components'; -import { - IonAccordionGroup as IonAccordionGroupElement, - defineCustomElement as defineIonAccordionGroup, -} from '@ionic/core/components/ion-accordion-group.js'; -import { - IonAccordion as IonAccordionElement, - defineCustomElement as defineIonAccordion, -} from '@ionic/core/components/ion-accordion.js'; -import { - IonAvatar as IonAvatarElement, - defineCustomElement as defineIonAvatar, -} from '@ionic/core/components/ion-avatar.js'; -import { - IonBackdrop as IonBackdropElement, - defineCustomElement as defineIonBackdrop, -} from '@ionic/core/components/ion-backdrop.js'; -import { - IonBadge as IonBadgeElement, - defineCustomElement as defineIonBadge, -} from '@ionic/core/components/ion-badge.js'; -import { - IonBreadcrumbs as IonBreadcrumbsElement, - defineCustomElement as defineIonBreadcrumbs, -} from '@ionic/core/components/ion-breadcrumbs.js'; -import { - IonButtons as IonButtonsElement, - defineCustomElement as defineIonButtons, -} from '@ionic/core/components/ion-buttons.js'; -import { - IonCardContent as IonCardContentElement, - defineCustomElement as defineIonCardContent, -} from '@ionic/core/components/ion-card-content.js'; -import { - IonCardHeader as IonCardHeaderElement, - defineCustomElement as defineIonCardHeader, -} from '@ionic/core/components/ion-card-header.js'; -import { - IonCardSubtitle as IonCardSubtitleElement, - defineCustomElement as defineIonCardSubtitle, -} from '@ionic/core/components/ion-card-subtitle.js'; -import { - IonCardTitle as IonCardTitleElement, - defineCustomElement as defineIonCardTitle, -} from '@ionic/core/components/ion-card-title.js'; -import { - IonCheckbox as IonCheckboxElement, - defineCustomElement as defineIonCheckbox, -} from '@ionic/core/components/ion-checkbox.js'; -import { IonChip as IonChipElement, defineCustomElement as defineIonChip } from '@ionic/core/components/ion-chip.js'; -import { IonCol as IonColElement, defineCustomElement as defineIonCol } from '@ionic/core/components/ion-col.js'; -import { - IonContent as IonContentElement, - defineCustomElement as defineIonContent, -} from '@ionic/core/components/ion-content.js'; -import { - IonDatetimeButton as IonDatetimeButtonElement, - defineCustomElement as defineIonDatetimeButton, -} from '@ionic/core/components/ion-datetime-button.js'; -import { - IonDatetime as IonDatetimeElement, - defineCustomElement as defineIonDatetime, -} from '@ionic/core/components/ion-datetime.js'; -import { - IonFabList as IonFabListElement, - defineCustomElement as defineIonFabList, -} from '@ionic/core/components/ion-fab-list.js'; -import { IonFab as IonFabElement, defineCustomElement as defineIonFab } from '@ionic/core/components/ion-fab.js'; -import { - IonFooter as IonFooterElement, - defineCustomElement as defineIonFooter, -} from '@ionic/core/components/ion-footer.js'; -import { IonGrid as IonGridElement, defineCustomElement as defineIonGrid } from '@ionic/core/components/ion-grid.js'; -import { - IonHeader as IonHeaderElement, - defineCustomElement as defineIonHeader, -} from '@ionic/core/components/ion-header.js'; -import { IonImg as IonImgElement, defineCustomElement as defineIonImg } from '@ionic/core/components/ion-img.js'; -import { - IonInfiniteScrollContent as IonInfiniteScrollContentElement, - defineCustomElement as defineIonInfiniteScrollContent, -} from '@ionic/core/components/ion-infinite-scroll-content.js'; -import { - IonInfiniteScroll as IonInfiniteScrollElement, - defineCustomElement as defineIonInfiniteScroll, -} from '@ionic/core/components/ion-infinite-scroll.js'; -import { - IonInputOtp as IonInputOtpElement, - defineCustomElement as defineIonInputOtp, -} from '@ionic/core/components/ion-input-otp.js'; -import { - IonInputPasswordToggle as IonInputPasswordToggleElement, - defineCustomElement as defineIonInputPasswordToggle, -} from '@ionic/core/components/ion-input-password-toggle.js'; -import { - IonInput as IonInputElement, - defineCustomElement as defineIonInput, -} from '@ionic/core/components/ion-input.js'; -import { - IonItemDivider as IonItemDividerElement, - defineCustomElement as defineIonItemDivider, -} from '@ionic/core/components/ion-item-divider.js'; -import { - IonItemGroup as IonItemGroupElement, - defineCustomElement as defineIonItemGroup, -} from '@ionic/core/components/ion-item-group.js'; -import { - IonItemOptions as IonItemOptionsElement, - defineCustomElement as defineIonItemOptions, -} from '@ionic/core/components/ion-item-options.js'; -import { - IonItemSliding as IonItemSlidingElement, - defineCustomElement as defineIonItemSliding, -} from '@ionic/core/components/ion-item-sliding.js'; -import { - IonLabel as IonLabelElement, - defineCustomElement as defineIonLabel, -} from '@ionic/core/components/ion-label.js'; -import { - IonListHeader as IonListHeaderElement, - defineCustomElement as defineIonListHeader, -} from '@ionic/core/components/ion-list-header.js'; -import { IonList as IonListElement, defineCustomElement as defineIonList } from '@ionic/core/components/ion-list.js'; -import { - IonMenuButton as IonMenuButtonElement, - defineCustomElement as defineIonMenuButton, -} from '@ionic/core/components/ion-menu-button.js'; -import { - IonMenuToggle as IonMenuToggleElement, - defineCustomElement as defineIonMenuToggle, -} from '@ionic/core/components/ion-menu-toggle.js'; -import { IonMenu as IonMenuElement, defineCustomElement as defineIonMenu } from '@ionic/core/components/ion-menu.js'; -import { - IonNavLink as IonNavLinkElement, - defineCustomElement as defineIonNavLink, -} from '@ionic/core/components/ion-nav-link.js'; -import { IonNav as IonNavElement, defineCustomElement as defineIonNav } from '@ionic/core/components/ion-nav.js'; -import { IonNote as IonNoteElement, defineCustomElement as defineIonNote } from '@ionic/core/components/ion-note.js'; -import { - IonPickerColumnOption as IonPickerColumnOptionElement, - defineCustomElement as defineIonPickerColumnOption, -} from '@ionic/core/components/ion-picker-column-option.js'; -import { - IonPickerColumn as IonPickerColumnElement, - defineCustomElement as defineIonPickerColumn, -} from '@ionic/core/components/ion-picker-column.js'; -import { - IonPicker as IonPickerElement, - defineCustomElement as defineIonPicker, -} from '@ionic/core/components/ion-picker.js'; -import { - IonProgressBar as IonProgressBarElement, - defineCustomElement as defineIonProgressBar, -} from '@ionic/core/components/ion-progress-bar.js'; -import { - IonRadioGroup as IonRadioGroupElement, - defineCustomElement as defineIonRadioGroup, -} from '@ionic/core/components/ion-radio-group.js'; -import { - IonRadio as IonRadioElement, - defineCustomElement as defineIonRadio, -} from '@ionic/core/components/ion-radio.js'; -import { - IonRange as IonRangeElement, - defineCustomElement as defineIonRange, -} from '@ionic/core/components/ion-range.js'; -import { - IonRefresherContent as IonRefresherContentElement, - defineCustomElement as defineIonRefresherContent, -} from '@ionic/core/components/ion-refresher-content.js'; -import { - IonRefresher as IonRefresherElement, - defineCustomElement as defineIonRefresher, -} from '@ionic/core/components/ion-refresher.js'; -import { - IonReorderGroup as IonReorderGroupElement, - defineCustomElement as defineIonReorderGroup, -} from '@ionic/core/components/ion-reorder-group.js'; -import { - IonReorder as IonReorderElement, - defineCustomElement as defineIonReorder, -} from '@ionic/core/components/ion-reorder.js'; -import { - IonRippleEffect as IonRippleEffectElement, - defineCustomElement as defineIonRippleEffect, -} from '@ionic/core/components/ion-ripple-effect.js'; -import { IonRow as IonRowElement, defineCustomElement as defineIonRow } from '@ionic/core/components/ion-row.js'; -import { - IonSearchbar as IonSearchbarElement, - defineCustomElement as defineIonSearchbar, -} from '@ionic/core/components/ion-searchbar.js'; -import { - IonSegmentButton as IonSegmentButtonElement, - defineCustomElement as defineIonSegmentButton, -} from '@ionic/core/components/ion-segment-button.js'; -import { - IonSegmentContent as IonSegmentContentElement, - defineCustomElement as defineIonSegmentContent, -} from '@ionic/core/components/ion-segment-content.js'; -import { - IonSegmentView as IonSegmentViewElement, - defineCustomElement as defineIonSegmentView, -} from '@ionic/core/components/ion-segment-view.js'; -import { - IonSegment as IonSegmentElement, - defineCustomElement as defineIonSegment, -} from '@ionic/core/components/ion-segment.js'; -import { - IonSelectModal as IonSelectModalElement, - defineCustomElement as defineIonSelectModal, -} from '@ionic/core/components/ion-select-modal.js'; -import { - IonSelectOption as IonSelectOptionElement, - defineCustomElement as defineIonSelectOption, -} from '@ionic/core/components/ion-select-option.js'; -import { - IonSelect as IonSelectElement, - defineCustomElement as defineIonSelect, -} from '@ionic/core/components/ion-select.js'; -import { - IonSkeletonText as IonSkeletonTextElement, - defineCustomElement as defineIonSkeletonText, -} from '@ionic/core/components/ion-skeleton-text.js'; -import { - IonSpinner as IonSpinnerElement, - defineCustomElement as defineIonSpinner, -} from '@ionic/core/components/ion-spinner.js'; -import { - IonSplitPane as IonSplitPaneElement, - defineCustomElement as defineIonSplitPane, -} from '@ionic/core/components/ion-split-pane.js'; -import { IonTab as IonTabElement, defineCustomElement as defineIonTab } from '@ionic/core/components/ion-tab.js'; -import { IonText as IonTextElement, defineCustomElement as defineIonText } from '@ionic/core/components/ion-text.js'; -import { - IonTextarea as IonTextareaElement, - defineCustomElement as defineIonTextarea, -} from '@ionic/core/components/ion-textarea.js'; -import { - IonThumbnail as IonThumbnailElement, - defineCustomElement as defineIonThumbnail, -} from '@ionic/core/components/ion-thumbnail.js'; -import { - IonTitle as IonTitleElement, - defineCustomElement as defineIonTitle, -} from '@ionic/core/components/ion-title.js'; -import { - IonToggle as IonToggleElement, - defineCustomElement as defineIonToggle, -} from '@ionic/core/components/ion-toggle.js'; -import { - IonToolbar as IonToolbarElement, - defineCustomElement as defineIonToolbar, -} from '@ionic/core/components/ion-toolbar.js'; +import { type AccordionGroupChangeEventDetail, type BreadcrumbCollapsedClickEventDetail, type CheckboxChangeEventDetail, type DatetimeChangeEventDetail, type InputChangeEventDetail, type InputInputEventDetail, type InputOtpChangeEventDetail, type InputOtpCompleteEventDetail, type InputOtpInputEventDetail, type IonAccordionGroupCustomEvent, type IonBackdropCustomEvent, type IonBreadcrumbsCustomEvent, type IonCheckboxCustomEvent, type IonContentCustomEvent, type IonDatetimeCustomEvent, type IonImgCustomEvent, type IonInfiniteScrollCustomEvent, type IonInputCustomEvent, type IonInputOtpCustomEvent, type IonItemOptionsCustomEvent, type IonItemSlidingCustomEvent, type IonMenuCustomEvent, type IonNavCustomEvent, type IonPickerColumnCustomEvent, type IonRadioCustomEvent, type IonRadioGroupCustomEvent, type IonRangeCustomEvent, type IonRefresherCustomEvent, type IonReorderGroupCustomEvent, type IonSearchbarCustomEvent, type IonSegmentCustomEvent, type IonSegmentViewCustomEvent, type IonSelectCustomEvent, type IonSplitPaneCustomEvent, type IonTextareaCustomEvent, type IonToggleCustomEvent, type ItemReorderEventDetail, type MenuCloseEventDetail, type PickerColumnChangeEventDetail, type RadioGroupChangeEventDetail, type RangeChangeEventDetail, type RangeKnobMoveEndEventDetail, type RangeKnobMoveStartEventDetail, type RefresherEventDetail, type RefresherPullEndEventDetail, type ReorderEndEventDetail, type ReorderMoveEventDetail, type ScrollBaseDetail, type ScrollDetail, type SearchbarChangeEventDetail, type SearchbarInputEventDetail, type SegmentChangeEventDetail, type SegmentViewScrollEvent, type SelectChangeEventDetail, type TextareaChangeEventDetail, type TextareaInputEventDetail, type ToggleChangeEventDetail } from "@ionic/core"; +import type { Components } from "@ionic/core/components"; +import { IonAccordionGroup as IonAccordionGroupElement, defineCustomElement as defineIonAccordionGroup } from "@ionic/core/components/ion-accordion-group.js"; +import { IonAccordion as IonAccordionElement, defineCustomElement as defineIonAccordion } from "@ionic/core/components/ion-accordion.js"; +import { IonAvatar as IonAvatarElement, defineCustomElement as defineIonAvatar } from "@ionic/core/components/ion-avatar.js"; +import { IonBackdrop as IonBackdropElement, defineCustomElement as defineIonBackdrop } from "@ionic/core/components/ion-backdrop.js"; +import { IonBadge as IonBadgeElement, defineCustomElement as defineIonBadge } from "@ionic/core/components/ion-badge.js"; +import { IonBreadcrumbs as IonBreadcrumbsElement, defineCustomElement as defineIonBreadcrumbs } from "@ionic/core/components/ion-breadcrumbs.js"; +import { IonButtons as IonButtonsElement, defineCustomElement as defineIonButtons } from "@ionic/core/components/ion-buttons.js"; +import { IonCardContent as IonCardContentElement, defineCustomElement as defineIonCardContent } from "@ionic/core/components/ion-card-content.js"; +import { IonCardHeader as IonCardHeaderElement, defineCustomElement as defineIonCardHeader } from "@ionic/core/components/ion-card-header.js"; +import { IonCardSubtitle as IonCardSubtitleElement, defineCustomElement as defineIonCardSubtitle } from "@ionic/core/components/ion-card-subtitle.js"; +import { IonCardTitle as IonCardTitleElement, defineCustomElement as defineIonCardTitle } from "@ionic/core/components/ion-card-title.js"; +import { IonCheckbox as IonCheckboxElement, defineCustomElement as defineIonCheckbox } from "@ionic/core/components/ion-checkbox.js"; +import { IonChip as IonChipElement, defineCustomElement as defineIonChip } from "@ionic/core/components/ion-chip.js"; +import { IonCol as IonColElement, defineCustomElement as defineIonCol } from "@ionic/core/components/ion-col.js"; +import { IonContent as IonContentElement, defineCustomElement as defineIonContent } from "@ionic/core/components/ion-content.js"; +import { IonDatetimeButton as IonDatetimeButtonElement, defineCustomElement as defineIonDatetimeButton } from "@ionic/core/components/ion-datetime-button.js"; +import { IonDatetime as IonDatetimeElement, defineCustomElement as defineIonDatetime } from "@ionic/core/components/ion-datetime.js"; +import { IonFabList as IonFabListElement, defineCustomElement as defineIonFabList } from "@ionic/core/components/ion-fab-list.js"; +import { IonFab as IonFabElement, defineCustomElement as defineIonFab } from "@ionic/core/components/ion-fab.js"; +import { IonFooter as IonFooterElement, defineCustomElement as defineIonFooter } from "@ionic/core/components/ion-footer.js"; +import { IonGrid as IonGridElement, defineCustomElement as defineIonGrid } from "@ionic/core/components/ion-grid.js"; +import { IonHeader as IonHeaderElement, defineCustomElement as defineIonHeader } from "@ionic/core/components/ion-header.js"; +import { IonImg as IonImgElement, defineCustomElement as defineIonImg } from "@ionic/core/components/ion-img.js"; +import { IonInfiniteScrollContent as IonInfiniteScrollContentElement, defineCustomElement as defineIonInfiniteScrollContent } from "@ionic/core/components/ion-infinite-scroll-content.js"; +import { IonInfiniteScroll as IonInfiniteScrollElement, defineCustomElement as defineIonInfiniteScroll } from "@ionic/core/components/ion-infinite-scroll.js"; +import { IonInputOtp as IonInputOtpElement, defineCustomElement as defineIonInputOtp } from "@ionic/core/components/ion-input-otp.js"; +import { IonInputPasswordToggle as IonInputPasswordToggleElement, defineCustomElement as defineIonInputPasswordToggle } from "@ionic/core/components/ion-input-password-toggle.js"; +import { IonInput as IonInputElement, defineCustomElement as defineIonInput } from "@ionic/core/components/ion-input.js"; +import { IonItemDivider as IonItemDividerElement, defineCustomElement as defineIonItemDivider } from "@ionic/core/components/ion-item-divider.js"; +import { IonItemGroup as IonItemGroupElement, defineCustomElement as defineIonItemGroup } from "@ionic/core/components/ion-item-group.js"; +import { IonItemOptions as IonItemOptionsElement, defineCustomElement as defineIonItemOptions } from "@ionic/core/components/ion-item-options.js"; +import { IonItemSliding as IonItemSlidingElement, defineCustomElement as defineIonItemSliding } from "@ionic/core/components/ion-item-sliding.js"; +import { IonLabel as IonLabelElement, defineCustomElement as defineIonLabel } from "@ionic/core/components/ion-label.js"; +import { IonListHeader as IonListHeaderElement, defineCustomElement as defineIonListHeader } from "@ionic/core/components/ion-list-header.js"; +import { IonList as IonListElement, defineCustomElement as defineIonList } from "@ionic/core/components/ion-list.js"; +import { IonMenuButton as IonMenuButtonElement, defineCustomElement as defineIonMenuButton } from "@ionic/core/components/ion-menu-button.js"; +import { IonMenuToggle as IonMenuToggleElement, defineCustomElement as defineIonMenuToggle } from "@ionic/core/components/ion-menu-toggle.js"; +import { IonMenu as IonMenuElement, defineCustomElement as defineIonMenu } from "@ionic/core/components/ion-menu.js"; +import { IonNavLink as IonNavLinkElement, defineCustomElement as defineIonNavLink } from "@ionic/core/components/ion-nav-link.js"; +import { IonNav as IonNavElement, defineCustomElement as defineIonNav } from "@ionic/core/components/ion-nav.js"; +import { IonNote as IonNoteElement, defineCustomElement as defineIonNote } from "@ionic/core/components/ion-note.js"; +import { IonPickerColumnOption as IonPickerColumnOptionElement, defineCustomElement as defineIonPickerColumnOption } from "@ionic/core/components/ion-picker-column-option.js"; +import { IonPickerColumn as IonPickerColumnElement, defineCustomElement as defineIonPickerColumn } from "@ionic/core/components/ion-picker-column.js"; +import { IonPicker as IonPickerElement, defineCustomElement as defineIonPicker } from "@ionic/core/components/ion-picker.js"; +import { IonProgressBar as IonProgressBarElement, defineCustomElement as defineIonProgressBar } from "@ionic/core/components/ion-progress-bar.js"; +import { IonRadioGroup as IonRadioGroupElement, defineCustomElement as defineIonRadioGroup } from "@ionic/core/components/ion-radio-group.js"; +import { IonRadio as IonRadioElement, defineCustomElement as defineIonRadio } from "@ionic/core/components/ion-radio.js"; +import { IonRange as IonRangeElement, defineCustomElement as defineIonRange } from "@ionic/core/components/ion-range.js"; +import { IonRefresherContent as IonRefresherContentElement, defineCustomElement as defineIonRefresherContent } from "@ionic/core/components/ion-refresher-content.js"; +import { IonRefresher as IonRefresherElement, defineCustomElement as defineIonRefresher } from "@ionic/core/components/ion-refresher.js"; +import { IonReorderGroup as IonReorderGroupElement, defineCustomElement as defineIonReorderGroup } from "@ionic/core/components/ion-reorder-group.js"; +import { IonReorder as IonReorderElement, defineCustomElement as defineIonReorder } from "@ionic/core/components/ion-reorder.js"; +import { IonRippleEffect as IonRippleEffectElement, defineCustomElement as defineIonRippleEffect } from "@ionic/core/components/ion-ripple-effect.js"; +import { IonRow as IonRowElement, defineCustomElement as defineIonRow } from "@ionic/core/components/ion-row.js"; +import { IonSearchbar as IonSearchbarElement, defineCustomElement as defineIonSearchbar } from "@ionic/core/components/ion-searchbar.js"; +import { IonSegmentButton as IonSegmentButtonElement, defineCustomElement as defineIonSegmentButton } from "@ionic/core/components/ion-segment-button.js"; +import { IonSegmentContent as IonSegmentContentElement, defineCustomElement as defineIonSegmentContent } from "@ionic/core/components/ion-segment-content.js"; +import { IonSegmentView as IonSegmentViewElement, defineCustomElement as defineIonSegmentView } from "@ionic/core/components/ion-segment-view.js"; +import { IonSegment as IonSegmentElement, defineCustomElement as defineIonSegment } from "@ionic/core/components/ion-segment.js"; +import { IonSelectModal as IonSelectModalElement, defineCustomElement as defineIonSelectModal } from "@ionic/core/components/ion-select-modal.js"; +import { IonSelectOption as IonSelectOptionElement, defineCustomElement as defineIonSelectOption } from "@ionic/core/components/ion-select-option.js"; +import { IonSelect as IonSelectElement, defineCustomElement as defineIonSelect } from "@ionic/core/components/ion-select.js"; +import { IonSkeletonText as IonSkeletonTextElement, defineCustomElement as defineIonSkeletonText } from "@ionic/core/components/ion-skeleton-text.js"; +import { IonSpinner as IonSpinnerElement, defineCustomElement as defineIonSpinner } from "@ionic/core/components/ion-spinner.js"; +import { IonSplitPane as IonSplitPaneElement, defineCustomElement as defineIonSplitPane } from "@ionic/core/components/ion-split-pane.js"; +import { IonTab as IonTabElement, defineCustomElement as defineIonTab } from "@ionic/core/components/ion-tab.js"; +import { IonText as IonTextElement, defineCustomElement as defineIonText } from "@ionic/core/components/ion-text.js"; +import { IonTextarea as IonTextareaElement, defineCustomElement as defineIonTextarea } from "@ionic/core/components/ion-textarea.js"; +import { IonThumbnail as IonThumbnailElement, defineCustomElement as defineIonThumbnail } from "@ionic/core/components/ion-thumbnail.js"; +import { IonTitle as IonTitleElement, defineCustomElement as defineIonTitle } from "@ionic/core/components/ion-title.js"; +import { IonToggle as IonToggleElement, defineCustomElement as defineIonToggle } from "@ionic/core/components/ion-toggle.js"; +import { IonToolbar as IonToolbarElement, defineCustomElement as defineIonToolbar } from "@ionic/core/components/ion-toolbar.js"; export type IonAccordionEvents = NonNullable; -export const IonAccordion: StencilReactComponent = - /*@__PURE__*/ createComponent({ +export const IonAccordion: StencilReactComponent = /*@__PURE__*/ createComponent({ tagName: 'ion-accordion', elementClass: IonAccordionElement, // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. react: React, events: {} as IonAccordionEvents, - defineCustomElement: defineIonAccordion, - }); + defineCustomElement: defineIonAccordion +}); -export type IonAccordionGroupEvents = { - onIonChange: EventName>; -}; +export type IonAccordionGroupEvents = { onIonChange: EventName> }; -export const IonAccordionGroup: StencilReactComponent< - IonAccordionGroupElement, - IonAccordionGroupEvents, - Components.IonAccordionGroup -> = /*@__PURE__*/ createComponent({ - tagName: 'ion-accordion-group', - elementClass: IonAccordionGroupElement, - // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. - react: React, - events: { onIonChange: 'ionChange' } as IonAccordionGroupEvents, - defineCustomElement: defineIonAccordionGroup, +export const IonAccordionGroup: StencilReactComponent = /*@__PURE__*/ createComponent({ + tagName: 'ion-accordion-group', + elementClass: IonAccordionGroupElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { onIonChange: 'ionChange' } as IonAccordionGroupEvents, + defineCustomElement: defineIonAccordionGroup }); export type IonAvatarEvents = NonNullable; -export const IonAvatar: StencilReactComponent = - /*@__PURE__*/ createComponent({ +export const IonAvatar: StencilReactComponent = /*@__PURE__*/ createComponent({ tagName: 'ion-avatar', elementClass: IonAvatarElement, // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. react: React, events: {} as IonAvatarEvents, - defineCustomElement: defineIonAvatar, - }); + defineCustomElement: defineIonAvatar +}); export type IonBackdropEvents = { onIonBackdropTap: EventName> }; -export const IonBackdrop: StencilReactComponent = - /*@__PURE__*/ createComponent({ +export const IonBackdrop: StencilReactComponent = /*@__PURE__*/ createComponent({ tagName: 'ion-backdrop', elementClass: IonBackdropElement, // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. react: React, events: { onIonBackdropTap: 'ionBackdropTap' } as IonBackdropEvents, - defineCustomElement: defineIonBackdrop, - }); + defineCustomElement: defineIonBackdrop +}); export type IonBadgeEvents = NonNullable; -export const IonBadge: StencilReactComponent = - /*@__PURE__*/ createComponent({ +export const IonBadge: StencilReactComponent = /*@__PURE__*/ createComponent({ tagName: 'ion-badge', elementClass: IonBadgeElement, // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. react: React, events: {} as IonBadgeEvents, - defineCustomElement: defineIonBadge, - }); + defineCustomElement: defineIonBadge +}); -export type IonBreadcrumbsEvents = { - onIonCollapsedClick: EventName>; -}; +export type IonBreadcrumbsEvents = { onIonCollapsedClick: EventName> }; -export const IonBreadcrumbs: StencilReactComponent< - IonBreadcrumbsElement, - IonBreadcrumbsEvents, - Components.IonBreadcrumbs -> = /*@__PURE__*/ createComponent({ - tagName: 'ion-breadcrumbs', - elementClass: IonBreadcrumbsElement, - // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. - react: React, - events: { onIonCollapsedClick: 'ionCollapsedClick' } as IonBreadcrumbsEvents, - defineCustomElement: defineIonBreadcrumbs, +export const IonBreadcrumbs: StencilReactComponent = /*@__PURE__*/ createComponent({ + tagName: 'ion-breadcrumbs', + elementClass: IonBreadcrumbsElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { onIonCollapsedClick: 'ionCollapsedClick' } as IonBreadcrumbsEvents, + defineCustomElement: defineIonBreadcrumbs }); export type IonButtonsEvents = NonNullable; -export const IonButtons: StencilReactComponent = - /*@__PURE__*/ createComponent({ +export const IonButtons: StencilReactComponent = /*@__PURE__*/ createComponent({ tagName: 'ion-buttons', elementClass: IonButtonsElement, // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. react: React, events: {} as IonButtonsEvents, - defineCustomElement: defineIonButtons, - }); + defineCustomElement: defineIonButtons +}); export type IonCardContentEvents = NonNullable; -export const IonCardContent: StencilReactComponent< - IonCardContentElement, - IonCardContentEvents, - Components.IonCardContent -> = /*@__PURE__*/ createComponent({ - tagName: 'ion-card-content', - elementClass: IonCardContentElement, - // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. - react: React, - events: {} as IonCardContentEvents, - defineCustomElement: defineIonCardContent, +export const IonCardContent: StencilReactComponent = /*@__PURE__*/ createComponent({ + tagName: 'ion-card-content', + elementClass: IonCardContentElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as IonCardContentEvents, + defineCustomElement: defineIonCardContent }); export type IonCardHeaderEvents = NonNullable; -export const IonCardHeader: StencilReactComponent = - /*@__PURE__*/ createComponent({ +export const IonCardHeader: StencilReactComponent = /*@__PURE__*/ createComponent({ tagName: 'ion-card-header', elementClass: IonCardHeaderElement, // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. react: React, events: {} as IonCardHeaderEvents, - defineCustomElement: defineIonCardHeader, - }); + defineCustomElement: defineIonCardHeader +}); export type IonCardSubtitleEvents = NonNullable; -export const IonCardSubtitle: StencilReactComponent< - IonCardSubtitleElement, - IonCardSubtitleEvents, - Components.IonCardSubtitle -> = /*@__PURE__*/ createComponent({ - tagName: 'ion-card-subtitle', - elementClass: IonCardSubtitleElement, - // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. - react: React, - events: {} as IonCardSubtitleEvents, - defineCustomElement: defineIonCardSubtitle, +export const IonCardSubtitle: StencilReactComponent = /*@__PURE__*/ createComponent({ + tagName: 'ion-card-subtitle', + elementClass: IonCardSubtitleElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as IonCardSubtitleEvents, + defineCustomElement: defineIonCardSubtitle }); export type IonCardTitleEvents = NonNullable; -export const IonCardTitle: StencilReactComponent = - /*@__PURE__*/ createComponent({ +export const IonCardTitle: StencilReactComponent = /*@__PURE__*/ createComponent({ tagName: 'ion-card-title', elementClass: IonCardTitleElement, // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. react: React, events: {} as IonCardTitleEvents, - defineCustomElement: defineIonCardTitle, - }); + defineCustomElement: defineIonCardTitle +}); export type IonCheckboxEvents = { - onIonChange: EventName>; - onIonFocus: EventName>; - onIonBlur: EventName>; + onIonChange: EventName>, + onIonFocus: EventName>, + onIonBlur: EventName> }; -export const IonCheckbox: StencilReactComponent = - /*@__PURE__*/ createComponent({ +export const IonCheckbox: StencilReactComponent = /*@__PURE__*/ createComponent({ tagName: 'ion-checkbox', elementClass: IonCheckboxElement, // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. react: React, events: { - onIonChange: 'ionChange', - onIonFocus: 'ionFocus', - onIonBlur: 'ionBlur', + onIonChange: 'ionChange', + onIonFocus: 'ionFocus', + onIonBlur: 'ionBlur' } as IonCheckboxEvents, - defineCustomElement: defineIonCheckbox, - }); + defineCustomElement: defineIonCheckbox +}); export type IonChipEvents = NonNullable; -export const IonChip: StencilReactComponent = - /*@__PURE__*/ createComponent({ +export const IonChip: StencilReactComponent = /*@__PURE__*/ createComponent({ tagName: 'ion-chip', elementClass: IonChipElement, // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. react: React, events: {} as IonChipEvents, - defineCustomElement: defineIonChip, - }); + defineCustomElement: defineIonChip +}); export type IonColEvents = NonNullable; -export const IonCol: StencilReactComponent = - /*@__PURE__*/ createComponent({ +export const IonCol: StencilReactComponent = /*@__PURE__*/ createComponent({ tagName: 'ion-col', elementClass: IonColElement, // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. react: React, events: {} as IonColEvents, - defineCustomElement: defineIonCol, - }); + defineCustomElement: defineIonCol +}); export type IonContentEvents = { - onIonScrollStart: EventName>; - onIonScroll: EventName>; - onIonScrollEnd: EventName>; + onIonScrollStart: EventName>, + onIonScroll: EventName>, + onIonScrollEnd: EventName> }; -export const IonContent: StencilReactComponent = - /*@__PURE__*/ createComponent({ +export const IonContent: StencilReactComponent = /*@__PURE__*/ createComponent({ tagName: 'ion-content', elementClass: IonContentElement, // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. react: React, events: { - onIonScrollStart: 'ionScrollStart', - onIonScroll: 'ionScroll', - onIonScrollEnd: 'ionScrollEnd', + onIonScrollStart: 'ionScrollStart', + onIonScroll: 'ionScroll', + onIonScrollEnd: 'ionScrollEnd' } as IonContentEvents, - defineCustomElement: defineIonContent, - }); + defineCustomElement: defineIonContent +}); export type IonDatetimeEvents = { - onIonCancel: EventName>; - onIonChange: EventName>; - onIonFocus: EventName>; - onIonBlur: EventName>; + onIonCancel: EventName>, + onIonChange: EventName>, + onIonFocus: EventName>, + onIonBlur: EventName> }; -export const IonDatetime: StencilReactComponent = - /*@__PURE__*/ createComponent({ +export const IonDatetime: StencilReactComponent = /*@__PURE__*/ createComponent({ tagName: 'ion-datetime', elementClass: IonDatetimeElement, // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. react: React, events: { - onIonCancel: 'ionCancel', - onIonChange: 'ionChange', - onIonFocus: 'ionFocus', - onIonBlur: 'ionBlur', + onIonCancel: 'ionCancel', + onIonChange: 'ionChange', + onIonFocus: 'ionFocus', + onIonBlur: 'ionBlur' } as IonDatetimeEvents, - defineCustomElement: defineIonDatetime, - }); + defineCustomElement: defineIonDatetime +}); export type IonDatetimeButtonEvents = NonNullable; -export const IonDatetimeButton: StencilReactComponent< - IonDatetimeButtonElement, - IonDatetimeButtonEvents, - Components.IonDatetimeButton -> = /*@__PURE__*/ createComponent({ - tagName: 'ion-datetime-button', - elementClass: IonDatetimeButtonElement, - // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. - react: React, - events: {} as IonDatetimeButtonEvents, - defineCustomElement: defineIonDatetimeButton, +export const IonDatetimeButton: StencilReactComponent = /*@__PURE__*/ createComponent({ + tagName: 'ion-datetime-button', + elementClass: IonDatetimeButtonElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as IonDatetimeButtonEvents, + defineCustomElement: defineIonDatetimeButton }); export type IonFabEvents = NonNullable; -export const IonFab: StencilReactComponent = - /*@__PURE__*/ createComponent({ +export const IonFab: StencilReactComponent = /*@__PURE__*/ createComponent({ tagName: 'ion-fab', elementClass: IonFabElement, // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. react: React, events: {} as IonFabEvents, - defineCustomElement: defineIonFab, - }); + defineCustomElement: defineIonFab +}); export type IonFabListEvents = NonNullable; -export const IonFabList: StencilReactComponent = - /*@__PURE__*/ createComponent({ +export const IonFabList: StencilReactComponent = /*@__PURE__*/ createComponent({ tagName: 'ion-fab-list', elementClass: IonFabListElement, // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. react: React, events: {} as IonFabListEvents, - defineCustomElement: defineIonFabList, - }); + defineCustomElement: defineIonFabList +}); export type IonFooterEvents = NonNullable; -export const IonFooter: StencilReactComponent = - /*@__PURE__*/ createComponent({ +export const IonFooter: StencilReactComponent = /*@__PURE__*/ createComponent({ tagName: 'ion-footer', elementClass: IonFooterElement, // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. react: React, events: {} as IonFooterEvents, - defineCustomElement: defineIonFooter, - }); + defineCustomElement: defineIonFooter +}); export type IonGridEvents = NonNullable; -export const IonGrid: StencilReactComponent = - /*@__PURE__*/ createComponent({ +export const IonGrid: StencilReactComponent = /*@__PURE__*/ createComponent({ tagName: 'ion-grid', elementClass: IonGridElement, // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. react: React, events: {} as IonGridEvents, - defineCustomElement: defineIonGrid, - }); + defineCustomElement: defineIonGrid +}); export type IonHeaderEvents = NonNullable; -export const IonHeader: StencilReactComponent = - /*@__PURE__*/ createComponent({ +export const IonHeader: StencilReactComponent = /*@__PURE__*/ createComponent({ tagName: 'ion-header', elementClass: IonHeaderElement, // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. react: React, events: {} as IonHeaderEvents, - defineCustomElement: defineIonHeader, - }); + defineCustomElement: defineIonHeader +}); export type IonImgEvents = { - onIonImgWillLoad: EventName>; - onIonImgDidLoad: EventName>; - onIonError: EventName>; + onIonImgWillLoad: EventName>, + onIonImgDidLoad: EventName>, + onIonError: EventName> }; -export const IonImg: StencilReactComponent = - /*@__PURE__*/ createComponent({ +export const IonImg: StencilReactComponent = /*@__PURE__*/ createComponent({ tagName: 'ion-img', elementClass: IonImgElement, // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. react: React, events: { - onIonImgWillLoad: 'ionImgWillLoad', - onIonImgDidLoad: 'ionImgDidLoad', - onIonError: 'ionError', + onIonImgWillLoad: 'ionImgWillLoad', + onIonImgDidLoad: 'ionImgDidLoad', + onIonError: 'ionError' } as IonImgEvents, - defineCustomElement: defineIonImg, - }); + defineCustomElement: defineIonImg +}); export type IonInfiniteScrollEvents = { onIonInfinite: EventName> }; -export const IonInfiniteScroll: StencilReactComponent< - IonInfiniteScrollElement, - IonInfiniteScrollEvents, - Components.IonInfiniteScroll -> = /*@__PURE__*/ createComponent({ - tagName: 'ion-infinite-scroll', - elementClass: IonInfiniteScrollElement, - // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. - react: React, - events: { onIonInfinite: 'ionInfinite' } as IonInfiniteScrollEvents, - defineCustomElement: defineIonInfiniteScroll, +export const IonInfiniteScroll: StencilReactComponent = /*@__PURE__*/ createComponent({ + tagName: 'ion-infinite-scroll', + elementClass: IonInfiniteScrollElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { onIonInfinite: 'ionInfinite' } as IonInfiniteScrollEvents, + defineCustomElement: defineIonInfiniteScroll }); export type IonInfiniteScrollContentEvents = NonNullable; -export const IonInfiniteScrollContent: StencilReactComponent< - IonInfiniteScrollContentElement, - IonInfiniteScrollContentEvents, - Components.IonInfiniteScrollContent -> = /*@__PURE__*/ createComponent< - IonInfiniteScrollContentElement, - IonInfiniteScrollContentEvents, - Components.IonInfiniteScrollContent ->({ - tagName: 'ion-infinite-scroll-content', - elementClass: IonInfiniteScrollContentElement, - // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. - react: React, - events: {} as IonInfiniteScrollContentEvents, - defineCustomElement: defineIonInfiniteScrollContent, +export const IonInfiniteScrollContent: StencilReactComponent = /*@__PURE__*/ createComponent({ + tagName: 'ion-infinite-scroll-content', + elementClass: IonInfiniteScrollContentElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as IonInfiniteScrollContentEvents, + defineCustomElement: defineIonInfiniteScrollContent }); export type IonInputEvents = { - onIonInput: EventName>; - onIonChange: EventName>; - onIonBlur: EventName>; - onIonFocus: EventName>; + onIonInput: EventName>, + onIonChange: EventName>, + onIonBlur: EventName>, + onIonFocus: EventName> }; -export const IonInput: StencilReactComponent = - /*@__PURE__*/ createComponent({ +export const IonInput: StencilReactComponent = /*@__PURE__*/ createComponent({ tagName: 'ion-input', elementClass: IonInputElement, // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. react: React, events: { - onIonInput: 'ionInput', - onIonChange: 'ionChange', - onIonBlur: 'ionBlur', - onIonFocus: 'ionFocus', + onIonInput: 'ionInput', + onIonChange: 'ionChange', + onIonBlur: 'ionBlur', + onIonFocus: 'ionFocus' } as IonInputEvents, - defineCustomElement: defineIonInput, - }); + defineCustomElement: defineIonInput +}); export type IonInputOtpEvents = { - onIonInput: EventName>; - onIonChange: EventName>; - onIonComplete: EventName>; - onIonBlur: EventName>; - onIonFocus: EventName>; + onIonInput: EventName>, + onIonChange: EventName>, + onIonComplete: EventName>, + onIonBlur: EventName>, + onIonFocus: EventName> }; -export const IonInputOtp: StencilReactComponent = - /*@__PURE__*/ createComponent({ +export const IonInputOtp: StencilReactComponent = /*@__PURE__*/ createComponent({ tagName: 'ion-input-otp', elementClass: IonInputOtpElement, // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. react: React, events: { - onIonInput: 'ionInput', - onIonChange: 'ionChange', - onIonComplete: 'ionComplete', - onIonBlur: 'ionBlur', - onIonFocus: 'ionFocus', + onIonInput: 'ionInput', + onIonChange: 'ionChange', + onIonComplete: 'ionComplete', + onIonBlur: 'ionBlur', + onIonFocus: 'ionFocus' } as IonInputOtpEvents, - defineCustomElement: defineIonInputOtp, - }); + defineCustomElement: defineIonInputOtp +}); export type IonInputPasswordToggleEvents = NonNullable; -export const IonInputPasswordToggle: StencilReactComponent< - IonInputPasswordToggleElement, - IonInputPasswordToggleEvents, - Components.IonInputPasswordToggle -> = /*@__PURE__*/ createComponent< - IonInputPasswordToggleElement, - IonInputPasswordToggleEvents, - Components.IonInputPasswordToggle ->({ - tagName: 'ion-input-password-toggle', - elementClass: IonInputPasswordToggleElement, - // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. - react: React, - events: {} as IonInputPasswordToggleEvents, - defineCustomElement: defineIonInputPasswordToggle, +export const IonInputPasswordToggle: StencilReactComponent = /*@__PURE__*/ createComponent({ + tagName: 'ion-input-password-toggle', + elementClass: IonInputPasswordToggleElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as IonInputPasswordToggleEvents, + defineCustomElement: defineIonInputPasswordToggle }); export type IonItemDividerEvents = NonNullable; -export const IonItemDivider: StencilReactComponent< - IonItemDividerElement, - IonItemDividerEvents, - Components.IonItemDivider -> = /*@__PURE__*/ createComponent({ - tagName: 'ion-item-divider', - elementClass: IonItemDividerElement, - // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. - react: React, - events: {} as IonItemDividerEvents, - defineCustomElement: defineIonItemDivider, +export const IonItemDivider: StencilReactComponent = /*@__PURE__*/ createComponent({ + tagName: 'ion-item-divider', + elementClass: IonItemDividerElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as IonItemDividerEvents, + defineCustomElement: defineIonItemDivider }); export type IonItemGroupEvents = NonNullable; -export const IonItemGroup: StencilReactComponent = - /*@__PURE__*/ createComponent({ +export const IonItemGroup: StencilReactComponent = /*@__PURE__*/ createComponent({ tagName: 'ion-item-group', elementClass: IonItemGroupElement, // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. react: React, events: {} as IonItemGroupEvents, - defineCustomElement: defineIonItemGroup, - }); + defineCustomElement: defineIonItemGroup +}); export type IonItemOptionsEvents = { onIonSwipe: EventName> }; -export const IonItemOptions: StencilReactComponent< - IonItemOptionsElement, - IonItemOptionsEvents, - Components.IonItemOptions -> = /*@__PURE__*/ createComponent({ - tagName: 'ion-item-options', - elementClass: IonItemOptionsElement, - // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. - react: React, - events: { onIonSwipe: 'ionSwipe' } as IonItemOptionsEvents, - defineCustomElement: defineIonItemOptions, +export const IonItemOptions: StencilReactComponent = /*@__PURE__*/ createComponent({ + tagName: 'ion-item-options', + elementClass: IonItemOptionsElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { onIonSwipe: 'ionSwipe' } as IonItemOptionsEvents, + defineCustomElement: defineIonItemOptions }); export type IonItemSlidingEvents = { onIonDrag: EventName> }; -export const IonItemSliding: StencilReactComponent< - IonItemSlidingElement, - IonItemSlidingEvents, - Components.IonItemSliding -> = /*@__PURE__*/ createComponent({ - tagName: 'ion-item-sliding', - elementClass: IonItemSlidingElement, - // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. - react: React, - events: { onIonDrag: 'ionDrag' } as IonItemSlidingEvents, - defineCustomElement: defineIonItemSliding, +export const IonItemSliding: StencilReactComponent = /*@__PURE__*/ createComponent({ + tagName: 'ion-item-sliding', + elementClass: IonItemSlidingElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { onIonDrag: 'ionDrag' } as IonItemSlidingEvents, + defineCustomElement: defineIonItemSliding }); export type IonLabelEvents = NonNullable; -export const IonLabel: StencilReactComponent = - /*@__PURE__*/ createComponent({ +export const IonLabel: StencilReactComponent = /*@__PURE__*/ createComponent({ tagName: 'ion-label', elementClass: IonLabelElement, // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. react: React, events: {} as IonLabelEvents, - defineCustomElement: defineIonLabel, - }); + defineCustomElement: defineIonLabel +}); export type IonListEvents = NonNullable; -export const IonList: StencilReactComponent = - /*@__PURE__*/ createComponent({ +export const IonList: StencilReactComponent = /*@__PURE__*/ createComponent({ tagName: 'ion-list', elementClass: IonListElement, // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. react: React, events: {} as IonListEvents, - defineCustomElement: defineIonList, - }); + defineCustomElement: defineIonList +}); export type IonListHeaderEvents = NonNullable; -export const IonListHeader: StencilReactComponent = - /*@__PURE__*/ createComponent({ +export const IonListHeader: StencilReactComponent = /*@__PURE__*/ createComponent({ tagName: 'ion-list-header', elementClass: IonListHeaderElement, // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. react: React, events: {} as IonListHeaderEvents, - defineCustomElement: defineIonListHeader, - }); + defineCustomElement: defineIonListHeader +}); export type IonMenuEvents = { - onIonWillOpen: EventName>; - onIonWillClose: EventName>; - onIonDidOpen: EventName>; - onIonDidClose: EventName>; + onIonWillOpen: EventName>, + onIonWillClose: EventName>, + onIonDidOpen: EventName>, + onIonDidClose: EventName> }; -export const IonMenu: StencilReactComponent = - /*@__PURE__*/ createComponent({ +export const IonMenu: StencilReactComponent = /*@__PURE__*/ createComponent({ tagName: 'ion-menu', elementClass: IonMenuElement, // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. react: React, events: { - onIonWillOpen: 'ionWillOpen', - onIonWillClose: 'ionWillClose', - onIonDidOpen: 'ionDidOpen', - onIonDidClose: 'ionDidClose', + onIonWillOpen: 'ionWillOpen', + onIonWillClose: 'ionWillClose', + onIonDidOpen: 'ionDidOpen', + onIonDidClose: 'ionDidClose' } as IonMenuEvents, - defineCustomElement: defineIonMenu, - }); + defineCustomElement: defineIonMenu +}); export type IonMenuButtonEvents = NonNullable; -export const IonMenuButton: StencilReactComponent = - /*@__PURE__*/ createComponent({ +export const IonMenuButton: StencilReactComponent = /*@__PURE__*/ createComponent({ tagName: 'ion-menu-button', elementClass: IonMenuButtonElement, // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. react: React, events: {} as IonMenuButtonEvents, - defineCustomElement: defineIonMenuButton, - }); + defineCustomElement: defineIonMenuButton +}); export type IonMenuToggleEvents = NonNullable; -export const IonMenuToggle: StencilReactComponent = - /*@__PURE__*/ createComponent({ +export const IonMenuToggle: StencilReactComponent = /*@__PURE__*/ createComponent({ tagName: 'ion-menu-toggle', elementClass: IonMenuToggleElement, // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. react: React, events: {} as IonMenuToggleEvents, - defineCustomElement: defineIonMenuToggle, - }); + defineCustomElement: defineIonMenuToggle +}); export type IonNavEvents = { - onIonNavWillChange: EventName>; - onIonNavDidChange: EventName>; + onIonNavWillChange: EventName>, + onIonNavDidChange: EventName> }; -export const IonNav: StencilReactComponent = - /*@__PURE__*/ createComponent({ +export const IonNav: StencilReactComponent = /*@__PURE__*/ createComponent({ tagName: 'ion-nav', elementClass: IonNavElement, // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. react: React, events: { - onIonNavWillChange: 'ionNavWillChange', - onIonNavDidChange: 'ionNavDidChange', + onIonNavWillChange: 'ionNavWillChange', + onIonNavDidChange: 'ionNavDidChange' } as IonNavEvents, - defineCustomElement: defineIonNav, - }); + defineCustomElement: defineIonNav +}); export type IonNavLinkEvents = NonNullable; -export const IonNavLink: StencilReactComponent = - /*@__PURE__*/ createComponent({ +export const IonNavLink: StencilReactComponent = /*@__PURE__*/ createComponent({ tagName: 'ion-nav-link', elementClass: IonNavLinkElement, // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. react: React, events: {} as IonNavLinkEvents, - defineCustomElement: defineIonNavLink, - }); + defineCustomElement: defineIonNavLink +}); export type IonNoteEvents = NonNullable; -export const IonNote: StencilReactComponent = - /*@__PURE__*/ createComponent({ +export const IonNote: StencilReactComponent = /*@__PURE__*/ createComponent({ tagName: 'ion-note', elementClass: IonNoteElement, // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. react: React, events: {} as IonNoteEvents, - defineCustomElement: defineIonNote, - }); + defineCustomElement: defineIonNote +}); export type IonPickerEvents = NonNullable; -export const IonPicker: StencilReactComponent = - /*@__PURE__*/ createComponent({ +export const IonPicker: StencilReactComponent = /*@__PURE__*/ createComponent({ tagName: 'ion-picker', elementClass: IonPickerElement, // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. react: React, events: {} as IonPickerEvents, - defineCustomElement: defineIonPicker, - }); + defineCustomElement: defineIonPicker +}); -export type IonPickerColumnEvents = { - onIonChange: EventName>; -}; +export type IonPickerColumnEvents = { onIonChange: EventName> }; -export const IonPickerColumn: StencilReactComponent< - IonPickerColumnElement, - IonPickerColumnEvents, - Components.IonPickerColumn -> = /*@__PURE__*/ createComponent({ - tagName: 'ion-picker-column', - elementClass: IonPickerColumnElement, - // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. - react: React, - events: { onIonChange: 'ionChange' } as IonPickerColumnEvents, - defineCustomElement: defineIonPickerColumn, +export const IonPickerColumn: StencilReactComponent = /*@__PURE__*/ createComponent({ + tagName: 'ion-picker-column', + elementClass: IonPickerColumnElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { onIonChange: 'ionChange' } as IonPickerColumnEvents, + defineCustomElement: defineIonPickerColumn }); export type IonPickerColumnOptionEvents = NonNullable; -export const IonPickerColumnOption: StencilReactComponent< - IonPickerColumnOptionElement, - IonPickerColumnOptionEvents, - Components.IonPickerColumnOption -> = /*@__PURE__*/ createComponent< - IonPickerColumnOptionElement, - IonPickerColumnOptionEvents, - Components.IonPickerColumnOption ->({ - tagName: 'ion-picker-column-option', - elementClass: IonPickerColumnOptionElement, - // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. - react: React, - events: {} as IonPickerColumnOptionEvents, - defineCustomElement: defineIonPickerColumnOption, +export const IonPickerColumnOption: StencilReactComponent = /*@__PURE__*/ createComponent({ + tagName: 'ion-picker-column-option', + elementClass: IonPickerColumnOptionElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as IonPickerColumnOptionEvents, + defineCustomElement: defineIonPickerColumnOption }); export type IonProgressBarEvents = NonNullable; -export const IonProgressBar: StencilReactComponent< - IonProgressBarElement, - IonProgressBarEvents, - Components.IonProgressBar -> = /*@__PURE__*/ createComponent({ - tagName: 'ion-progress-bar', - elementClass: IonProgressBarElement, - // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. - react: React, - events: {} as IonProgressBarEvents, - defineCustomElement: defineIonProgressBar, +export const IonProgressBar: StencilReactComponent = /*@__PURE__*/ createComponent({ + tagName: 'ion-progress-bar', + elementClass: IonProgressBarElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as IonProgressBarEvents, + defineCustomElement: defineIonProgressBar }); export type IonRadioEvents = { - onIonFocus: EventName>; - onIonBlur: EventName>; + onIonFocus: EventName>, + onIonBlur: EventName> }; -export const IonRadio: StencilReactComponent = - /*@__PURE__*/ createComponent({ +export const IonRadio: StencilReactComponent = /*@__PURE__*/ createComponent({ tagName: 'ion-radio', elementClass: IonRadioElement, // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. react: React, events: { - onIonFocus: 'ionFocus', - onIonBlur: 'ionBlur', + onIonFocus: 'ionFocus', + onIonBlur: 'ionBlur' } as IonRadioEvents, - defineCustomElement: defineIonRadio, - }); + defineCustomElement: defineIonRadio +}); export type IonRadioGroupEvents = { onIonChange: EventName> }; -export const IonRadioGroup: StencilReactComponent = - /*@__PURE__*/ createComponent({ +export const IonRadioGroup: StencilReactComponent = /*@__PURE__*/ createComponent({ tagName: 'ion-radio-group', elementClass: IonRadioGroupElement, // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. react: React, events: { onIonChange: 'ionChange' } as IonRadioGroupEvents, - defineCustomElement: defineIonRadioGroup, - }); + defineCustomElement: defineIonRadioGroup +}); export type IonRangeEvents = { - onIonChange: EventName>; - onIonInput: EventName>; - onIonFocus: EventName>; - onIonBlur: EventName>; - onIonKnobMoveStart: EventName>; - onIonKnobMoveEnd: EventName>; + onIonChange: EventName>, + onIonInput: EventName>, + onIonFocus: EventName>, + onIonBlur: EventName>, + onIonKnobMoveStart: EventName>, + onIonKnobMoveEnd: EventName> }; -export const IonRange: StencilReactComponent = - /*@__PURE__*/ createComponent({ +export const IonRange: StencilReactComponent = /*@__PURE__*/ createComponent({ tagName: 'ion-range', elementClass: IonRangeElement, // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. react: React, events: { - onIonChange: 'ionChange', - onIonInput: 'ionInput', - onIonFocus: 'ionFocus', - onIonBlur: 'ionBlur', - onIonKnobMoveStart: 'ionKnobMoveStart', - onIonKnobMoveEnd: 'ionKnobMoveEnd', + onIonChange: 'ionChange', + onIonInput: 'ionInput', + onIonFocus: 'ionFocus', + onIonBlur: 'ionBlur', + onIonKnobMoveStart: 'ionKnobMoveStart', + onIonKnobMoveEnd: 'ionKnobMoveEnd' } as IonRangeEvents, - defineCustomElement: defineIonRange, - }); + defineCustomElement: defineIonRange +}); export type IonRefresherEvents = { - onIonRefresh: EventName>; - onIonPull: EventName>; - onIonStart: EventName>; - onIonPullStart: EventName>; - onIonPullEnd: EventName>; + onIonRefresh: EventName>, + onIonPull: EventName>, + onIonStart: EventName>, + onIonPullStart: EventName>, + onIonPullEnd: EventName> }; -export const IonRefresher: StencilReactComponent = - /*@__PURE__*/ createComponent({ +export const IonRefresher: StencilReactComponent = /*@__PURE__*/ createComponent({ tagName: 'ion-refresher', elementClass: IonRefresherElement, // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. react: React, events: { - onIonRefresh: 'ionRefresh', - onIonPull: 'ionPull', - onIonStart: 'ionStart', - onIonPullStart: 'ionPullStart', - onIonPullEnd: 'ionPullEnd', + onIonRefresh: 'ionRefresh', + onIonPull: 'ionPull', + onIonStart: 'ionStart', + onIonPullStart: 'ionPullStart', + onIonPullEnd: 'ionPullEnd' } as IonRefresherEvents, - defineCustomElement: defineIonRefresher, - }); + defineCustomElement: defineIonRefresher +}); export type IonRefresherContentEvents = NonNullable; -export const IonRefresherContent: StencilReactComponent< - IonRefresherContentElement, - IonRefresherContentEvents, - Components.IonRefresherContent -> = /*@__PURE__*/ createComponent< - IonRefresherContentElement, - IonRefresherContentEvents, - Components.IonRefresherContent ->({ - tagName: 'ion-refresher-content', - elementClass: IonRefresherContentElement, - // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. - react: React, - events: {} as IonRefresherContentEvents, - defineCustomElement: defineIonRefresherContent, +export const IonRefresherContent: StencilReactComponent = /*@__PURE__*/ createComponent({ + tagName: 'ion-refresher-content', + elementClass: IonRefresherContentElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as IonRefresherContentEvents, + defineCustomElement: defineIonRefresherContent }); export type IonReorderEvents = NonNullable; -export const IonReorder: StencilReactComponent = - /*@__PURE__*/ createComponent({ +export const IonReorder: StencilReactComponent = /*@__PURE__*/ createComponent({ tagName: 'ion-reorder', elementClass: IonReorderElement, // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. react: React, events: {} as IonReorderEvents, - defineCustomElement: defineIonReorder, - }); + defineCustomElement: defineIonReorder +}); export type IonReorderGroupEvents = { - onIonItemReorder: EventName>; - onIonReorderStart: EventName>; - onIonReorderMove: EventName>; - onIonReorderEnd: EventName>; + onIonItemReorder: EventName>, + onIonReorderStart: EventName>, + onIonReorderMove: EventName>, + onIonReorderEnd: EventName> }; -export const IonReorderGroup: StencilReactComponent< - IonReorderGroupElement, - IonReorderGroupEvents, - Components.IonReorderGroup -> = /*@__PURE__*/ createComponent({ - tagName: 'ion-reorder-group', - elementClass: IonReorderGroupElement, - // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. - react: React, - events: { - onIonItemReorder: 'ionItemReorder', - onIonReorderStart: 'ionReorderStart', - onIonReorderMove: 'ionReorderMove', - onIonReorderEnd: 'ionReorderEnd', - } as IonReorderGroupEvents, - defineCustomElement: defineIonReorderGroup, +export const IonReorderGroup: StencilReactComponent = /*@__PURE__*/ createComponent({ + tagName: 'ion-reorder-group', + elementClass: IonReorderGroupElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { + onIonItemReorder: 'ionItemReorder', + onIonReorderStart: 'ionReorderStart', + onIonReorderMove: 'ionReorderMove', + onIonReorderEnd: 'ionReorderEnd' + } as IonReorderGroupEvents, + defineCustomElement: defineIonReorderGroup }); export type IonRippleEffectEvents = NonNullable; -export const IonRippleEffect: StencilReactComponent< - IonRippleEffectElement, - IonRippleEffectEvents, - Components.IonRippleEffect -> = /*@__PURE__*/ createComponent({ - tagName: 'ion-ripple-effect', - elementClass: IonRippleEffectElement, - // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. - react: React, - events: {} as IonRippleEffectEvents, - defineCustomElement: defineIonRippleEffect, +export const IonRippleEffect: StencilReactComponent = /*@__PURE__*/ createComponent({ + tagName: 'ion-ripple-effect', + elementClass: IonRippleEffectElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as IonRippleEffectEvents, + defineCustomElement: defineIonRippleEffect }); export type IonRowEvents = NonNullable; -export const IonRow: StencilReactComponent = - /*@__PURE__*/ createComponent({ +export const IonRow: StencilReactComponent = /*@__PURE__*/ createComponent({ tagName: 'ion-row', elementClass: IonRowElement, // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. react: React, events: {} as IonRowEvents, - defineCustomElement: defineIonRow, - }); + defineCustomElement: defineIonRow +}); export type IonSearchbarEvents = { - onIonInput: EventName>; - onIonChange: EventName>; - onIonCancel: EventName>; - onIonClear: EventName>; - onIonBlur: EventName>; - onIonFocus: EventName>; + onIonInput: EventName>, + onIonChange: EventName>, + onIonCancel: EventName>, + onIonClear: EventName>, + onIonBlur: EventName>, + onIonFocus: EventName> }; -export const IonSearchbar: StencilReactComponent = - /*@__PURE__*/ createComponent({ +export const IonSearchbar: StencilReactComponent = /*@__PURE__*/ createComponent({ tagName: 'ion-searchbar', elementClass: IonSearchbarElement, // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. react: React, events: { - onIonInput: 'ionInput', - onIonChange: 'ionChange', - onIonCancel: 'ionCancel', - onIonClear: 'ionClear', - onIonBlur: 'ionBlur', - onIonFocus: 'ionFocus', + onIonInput: 'ionInput', + onIonChange: 'ionChange', + onIonCancel: 'ionCancel', + onIonClear: 'ionClear', + onIonBlur: 'ionBlur', + onIonFocus: 'ionFocus' } as IonSearchbarEvents, - defineCustomElement: defineIonSearchbar, - }); + defineCustomElement: defineIonSearchbar +}); export type IonSegmentEvents = { onIonChange: EventName> }; -export const IonSegment: StencilReactComponent = - /*@__PURE__*/ createComponent({ +export const IonSegment: StencilReactComponent = /*@__PURE__*/ createComponent({ tagName: 'ion-segment', elementClass: IonSegmentElement, // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. react: React, events: { onIonChange: 'ionChange' } as IonSegmentEvents, - defineCustomElement: defineIonSegment, - }); + defineCustomElement: defineIonSegment +}); export type IonSegmentButtonEvents = NonNullable; -export const IonSegmentButton: StencilReactComponent< - IonSegmentButtonElement, - IonSegmentButtonEvents, - Components.IonSegmentButton -> = /*@__PURE__*/ createComponent({ - tagName: 'ion-segment-button', - elementClass: IonSegmentButtonElement, - // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. - react: React, - events: {} as IonSegmentButtonEvents, - defineCustomElement: defineIonSegmentButton, +export const IonSegmentButton: StencilReactComponent = /*@__PURE__*/ createComponent({ + tagName: 'ion-segment-button', + elementClass: IonSegmentButtonElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as IonSegmentButtonEvents, + defineCustomElement: defineIonSegmentButton }); export type IonSegmentContentEvents = NonNullable; -export const IonSegmentContent: StencilReactComponent< - IonSegmentContentElement, - IonSegmentContentEvents, - Components.IonSegmentContent -> = /*@__PURE__*/ createComponent({ - tagName: 'ion-segment-content', - elementClass: IonSegmentContentElement, - // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. - react: React, - events: {} as IonSegmentContentEvents, - defineCustomElement: defineIonSegmentContent, -}); - -export type IonSegmentViewEvents = { - onIonSegmentViewScroll: EventName>; -}; +export const IonSegmentContent: StencilReactComponent = /*@__PURE__*/ createComponent({ + tagName: 'ion-segment-content', + elementClass: IonSegmentContentElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as IonSegmentContentEvents, + defineCustomElement: defineIonSegmentContent +}); + +export type IonSegmentViewEvents = { onIonSegmentViewScroll: EventName> }; -export const IonSegmentView: StencilReactComponent< - IonSegmentViewElement, - IonSegmentViewEvents, - Components.IonSegmentView -> = /*@__PURE__*/ createComponent({ - tagName: 'ion-segment-view', - elementClass: IonSegmentViewElement, - // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. - react: React, - events: { onIonSegmentViewScroll: 'ionSegmentViewScroll' } as IonSegmentViewEvents, - defineCustomElement: defineIonSegmentView, +export const IonSegmentView: StencilReactComponent = /*@__PURE__*/ createComponent({ + tagName: 'ion-segment-view', + elementClass: IonSegmentViewElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { onIonSegmentViewScroll: 'ionSegmentViewScroll' } as IonSegmentViewEvents, + defineCustomElement: defineIonSegmentView }); export type IonSelectEvents = { - onIonChange: EventName>; - onIonCancel: EventName>; - onIonDismiss: EventName>; - onIonFocus: EventName>; - onIonBlur: EventName>; + onIonChange: EventName>, + onIonCancel: EventName>, + onIonDismiss: EventName>, + onIonFocus: EventName>, + onIonBlur: EventName> }; -export const IonSelect: StencilReactComponent = - /*@__PURE__*/ createComponent({ +export const IonSelect: StencilReactComponent = /*@__PURE__*/ createComponent({ tagName: 'ion-select', elementClass: IonSelectElement, // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. react: React, events: { - onIonChange: 'ionChange', - onIonCancel: 'ionCancel', - onIonDismiss: 'ionDismiss', - onIonFocus: 'ionFocus', - onIonBlur: 'ionBlur', + onIonChange: 'ionChange', + onIonCancel: 'ionCancel', + onIonDismiss: 'ionDismiss', + onIonFocus: 'ionFocus', + onIonBlur: 'ionBlur' } as IonSelectEvents, - defineCustomElement: defineIonSelect, - }); + defineCustomElement: defineIonSelect +}); export type IonSelectModalEvents = NonNullable; -export const IonSelectModal: StencilReactComponent< - IonSelectModalElement, - IonSelectModalEvents, - Components.IonSelectModal -> = /*@__PURE__*/ createComponent({ - tagName: 'ion-select-modal', - elementClass: IonSelectModalElement, - // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. - react: React, - events: {} as IonSelectModalEvents, - defineCustomElement: defineIonSelectModal, +export const IonSelectModal: StencilReactComponent = /*@__PURE__*/ createComponent({ + tagName: 'ion-select-modal', + elementClass: IonSelectModalElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as IonSelectModalEvents, + defineCustomElement: defineIonSelectModal }); export type IonSelectOptionEvents = NonNullable; -export const IonSelectOption: StencilReactComponent< - IonSelectOptionElement, - IonSelectOptionEvents, - Components.IonSelectOption -> = /*@__PURE__*/ createComponent({ - tagName: 'ion-select-option', - elementClass: IonSelectOptionElement, - // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. - react: React, - events: {} as IonSelectOptionEvents, - defineCustomElement: defineIonSelectOption, +export const IonSelectOption: StencilReactComponent = /*@__PURE__*/ createComponent({ + tagName: 'ion-select-option', + elementClass: IonSelectOptionElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as IonSelectOptionEvents, + defineCustomElement: defineIonSelectOption }); export type IonSkeletonTextEvents = NonNullable; -export const IonSkeletonText: StencilReactComponent< - IonSkeletonTextElement, - IonSkeletonTextEvents, - Components.IonSkeletonText -> = /*@__PURE__*/ createComponent({ - tagName: 'ion-skeleton-text', - elementClass: IonSkeletonTextElement, - // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. - react: React, - events: {} as IonSkeletonTextEvents, - defineCustomElement: defineIonSkeletonText, +export const IonSkeletonText: StencilReactComponent = /*@__PURE__*/ createComponent({ + tagName: 'ion-skeleton-text', + elementClass: IonSkeletonTextElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as IonSkeletonTextEvents, + defineCustomElement: defineIonSkeletonText }); export type IonSpinnerEvents = NonNullable; -export const IonSpinner: StencilReactComponent = - /*@__PURE__*/ createComponent({ +export const IonSpinner: StencilReactComponent = /*@__PURE__*/ createComponent({ tagName: 'ion-spinner', elementClass: IonSpinnerElement, // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. react: React, events: {} as IonSpinnerEvents, - defineCustomElement: defineIonSpinner, - }); + defineCustomElement: defineIonSpinner +}); export type IonSplitPaneEvents = { onIonSplitPaneVisible: EventName> }; -export const IonSplitPane: StencilReactComponent = - /*@__PURE__*/ createComponent({ +export const IonSplitPane: StencilReactComponent = /*@__PURE__*/ createComponent({ tagName: 'ion-split-pane', elementClass: IonSplitPaneElement, // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. react: React, events: { onIonSplitPaneVisible: 'ionSplitPaneVisible' } as IonSplitPaneEvents, - defineCustomElement: defineIonSplitPane, - }); + defineCustomElement: defineIonSplitPane +}); export type IonTabEvents = NonNullable; -export const IonTab: StencilReactComponent = - /*@__PURE__*/ createComponent({ +export const IonTab: StencilReactComponent = /*@__PURE__*/ createComponent({ tagName: 'ion-tab', elementClass: IonTabElement, // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. react: React, events: {} as IonTabEvents, - defineCustomElement: defineIonTab, - }); + defineCustomElement: defineIonTab +}); export type IonTextEvents = NonNullable; -export const IonText: StencilReactComponent = - /*@__PURE__*/ createComponent({ +export const IonText: StencilReactComponent = /*@__PURE__*/ createComponent({ tagName: 'ion-text', elementClass: IonTextElement, // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. react: React, events: {} as IonTextEvents, - defineCustomElement: defineIonText, - }); + defineCustomElement: defineIonText +}); export type IonTextareaEvents = { - onIonChange: EventName>; - onIonInput: EventName>; - onIonBlur: EventName>; - onIonFocus: EventName>; + onIonChange: EventName>, + onIonInput: EventName>, + onIonBlur: EventName>, + onIonFocus: EventName> }; -export const IonTextarea: StencilReactComponent = - /*@__PURE__*/ createComponent({ +export const IonTextarea: StencilReactComponent = /*@__PURE__*/ createComponent({ tagName: 'ion-textarea', elementClass: IonTextareaElement, // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. react: React, events: { - onIonChange: 'ionChange', - onIonInput: 'ionInput', - onIonBlur: 'ionBlur', - onIonFocus: 'ionFocus', + onIonChange: 'ionChange', + onIonInput: 'ionInput', + onIonBlur: 'ionBlur', + onIonFocus: 'ionFocus' } as IonTextareaEvents, - defineCustomElement: defineIonTextarea, - }); + defineCustomElement: defineIonTextarea +}); export type IonThumbnailEvents = NonNullable; -export const IonThumbnail: StencilReactComponent = - /*@__PURE__*/ createComponent({ +export const IonThumbnail: StencilReactComponent = /*@__PURE__*/ createComponent({ tagName: 'ion-thumbnail', elementClass: IonThumbnailElement, // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. react: React, events: {} as IonThumbnailEvents, - defineCustomElement: defineIonThumbnail, - }); + defineCustomElement: defineIonThumbnail +}); export type IonTitleEvents = NonNullable; -export const IonTitle: StencilReactComponent = - /*@__PURE__*/ createComponent({ +export const IonTitle: StencilReactComponent = /*@__PURE__*/ createComponent({ tagName: 'ion-title', elementClass: IonTitleElement, // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. react: React, events: {} as IonTitleEvents, - defineCustomElement: defineIonTitle, - }); + defineCustomElement: defineIonTitle +}); export type IonToggleEvents = { - onIonChange: EventName>; - onIonFocus: EventName>; - onIonBlur: EventName>; + onIonChange: EventName>, + onIonFocus: EventName>, + onIonBlur: EventName> }; -export const IonToggle: StencilReactComponent = - /*@__PURE__*/ createComponent({ +export const IonToggle: StencilReactComponent = /*@__PURE__*/ createComponent({ tagName: 'ion-toggle', elementClass: IonToggleElement, // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. react: React, events: { - onIonChange: 'ionChange', - onIonFocus: 'ionFocus', - onIonBlur: 'ionBlur', + onIonChange: 'ionChange', + onIonFocus: 'ionFocus', + onIonBlur: 'ionBlur' } as IonToggleEvents, - defineCustomElement: defineIonToggle, - }); + defineCustomElement: defineIonToggle +}); export type IonToolbarEvents = NonNullable; -export const IonToolbar: StencilReactComponent = - /*@__PURE__*/ createComponent({ +export const IonToolbar: StencilReactComponent = /*@__PURE__*/ createComponent({ tagName: 'ion-toolbar', elementClass: IonToolbarElement, // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. react: React, events: {} as IonToolbarEvents, - defineCustomElement: defineIonToolbar, - }); + defineCustomElement: defineIonToolbar +}); diff --git a/packages/react/src/components/createRoutingComponent.tsx b/packages/react/src/components/createRoutingComponent.tsx index 64d556b9139..7409e8d2a77 100644 --- a/packages/react/src/components/createRoutingComponent.tsx +++ b/packages/react/src/components/createRoutingComponent.tsx @@ -32,7 +32,7 @@ export const createRoutingComponent = (tagName: string, c const displayName = dashToPascalCase(tagName); const ReactComponent = class extends React.Component> { - context!: React.ContextType; + declare context: React.ContextType; ref: React.RefObject; stableMergedRefs: React.RefCallback; diff --git a/packages/react/src/components/navigation/IonBackButton.tsx b/packages/react/src/components/navigation/IonBackButton.tsx index 58ed6be6dac..3229fb18390 100644 --- a/packages/react/src/components/navigation/IonBackButton.tsx +++ b/packages/react/src/components/navigation/IonBackButton.tsx @@ -13,7 +13,7 @@ type Props = PropsWithChildren< >; export class IonBackButton extends React.Component { - context!: React.ContextType; + declare context: React.ContextType; clickButton = (e: React.MouseEvent) => { /** diff --git a/packages/react/src/components/navigation/IonTabBar.tsx b/packages/react/src/components/navigation/IonTabBar.tsx index 0c5da8dd383..7a4c5401294 100644 --- a/packages/react/src/components/navigation/IonTabBar.tsx +++ b/packages/react/src/components/navigation/IonTabBar.tsx @@ -58,7 +58,7 @@ const matchesTab = (pathname: string, href: string | undefined): boolean => { }; class IonTabBarUnwrapped extends React.PureComponent { - context!: React.ContextType; + declare context: React.ContextType; constructor(props: InternalProps) { super(props); diff --git a/packages/react/src/components/navigation/IonTabs.tsx b/packages/react/src/components/navigation/IonTabs.tsx index 135e51fec08..8bb962ff515 100644 --- a/packages/react/src/components/navigation/IonTabs.tsx +++ b/packages/react/src/components/navigation/IonTabs.tsx @@ -52,7 +52,7 @@ export class IonTabs extends React.Component { return true; } - context!: React.ContextType; + declare context: React.ContextType; /** * `routerOutletRef` allows users to add a `ref` to `IonRouterOutlet`. * Without this, `ref.current` will be `undefined` in the user's app, diff --git a/packages/react/src/lifecycle/IonLifeCycleHOC.tsx b/packages/react/src/lifecycle/IonLifeCycleHOC.tsx index 234944f2d5c..9ff2455e035 100644 --- a/packages/react/src/lifecycle/IonLifeCycleHOC.tsx +++ b/packages/react/src/lifecycle/IonLifeCycleHOC.tsx @@ -6,7 +6,7 @@ import { IonLifeCycleContext } from '../contexts/IonLifeCycleContext'; export const withIonLifeCycle = (WrappedComponent: React.ComponentType) => { return class IonLifeCycle extends React.Component { - context!: React.ContextType; + declare context: React.ContextType; componentRef = React.createRef(); constructor(props: any) { diff --git a/packages/react/src/routing/OutletPageManager.tsx b/packages/react/src/routing/OutletPageManager.tsx index 79ad03238b3..abb9bda0481 100644 --- a/packages/react/src/routing/OutletPageManager.tsx +++ b/packages/react/src/routing/OutletPageManager.tsx @@ -18,7 +18,7 @@ interface OutletPageManagerProps { export class OutletPageManager extends React.Component { ionLifeCycleContext!: React.ContextType; - context!: React.ContextType; + declare context: React.ContextType; ionRouterOutlet: HTMLIonRouterOutletElement | undefined; outletIsReady: boolean; diff --git a/packages/react/src/routing/PageManager.tsx b/packages/react/src/routing/PageManager.tsx index e62b1282c2b..212fc8181b6 100644 --- a/packages/react/src/routing/PageManager.tsx +++ b/packages/react/src/routing/PageManager.tsx @@ -15,7 +15,7 @@ interface PageManagerProps { export class PageManager extends React.PureComponent { ionLifeCycleContext!: React.ContextType; - context!: React.ContextType; + declare context: React.ContextType; ionPageElementRef: React.RefObject; stableMergedRefs: React.RefCallback; diff --git a/packages/react/tsconfig.json b/packages/react/tsconfig.json index 8e9aa65bdf9..86e3d2b1032 100644 --- a/packages/react/tsconfig.json +++ b/packages/react/tsconfig.json @@ -1,31 +1,22 @@ { + "extends": "../../core/tsconfig.base.json", "compilerOptions": { - "strict": true, - "allowUnreachableCode": false, - "allowSyntheticDefaultImports": true, - "declaration": true, - "emitDecoratorMetadata": true, - "experimentalDecorators": true, "esModuleInterop": true, - "lib": [ - "dom", - "es2020", - "dom.iterable" - ], - "importHelpers": true, - "module": "esnext", - "moduleResolution": "bundler", - "noImplicitAny": true, - "noImplicitReturns": true, - "noUnusedLocals": true, - "noUnusedParameters": true, "outDir": "dist", "declarationDir": "dist/types", - "removeComments": false, + /* + * rootDir is set to satisfy @rollup/plugin-typescript (TS5011) so the + * output file layout is predictable. Setting rootDir restricts the program + * to files under it, which stops @types from being auto-included, so the + * ambient type packages must be listed explicitly. jest and jest-dom are + * needed because the test files are type-checked as part of the build. + */ + "rootDir": "src", + "types": ["node", "jest", "@testing-library/jest-dom"], "inlineSources": true, "sourceMap": true, "jsx": "react-jsx", - "target": "es2020", + "target": "es2022" }, "include": ["src/**/*.ts", "src/**/*.tsx"], "compileOnSave": false, diff --git a/packages/react/tsconfig.spec.json b/packages/react/tsconfig.spec.json new file mode 100644 index 00000000000..3ef43a4182f --- /dev/null +++ b/packages/react/tsconfig.spec.json @@ -0,0 +1,13 @@ +{ + "extends": "./tsconfig", + "compilerOptions": { + /* + * ts-jest transpiles each test file in isolation, which relies on the + * language-service path that crashes under TypeScript 6. isolatedModules + * switches ts-jest to transpileModule and avoids that path. It lives here + * rather than in tsconfig.json so the rollup build is not forced to adopt + * the isolatedModules authoring rules (for example export type). + */ + "isolatedModules": true + } +} diff --git a/packages/vue-router/package-lock.json b/packages/vue-router/package-lock.json index d3cececf797..57cfc80ed47 100644 --- a/packages/vue-router/package-lock.json +++ b/packages/vue-router/package-lock.json @@ -22,7 +22,7 @@ "prettier": "^2.8.3", "rimraf": "^3.0.2", "rollup": "^4.2.0", - "typescript": "^5.7.3", + "typescript": "^6.0.0", "vue": "^3.5.0", "vue-router": "^5.0.6" } @@ -5444,9 +5444,9 @@ } }, "node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", + "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", "devOptional": true, "license": "Apache-2.0", "bin": { diff --git a/packages/vue-router/package.json b/packages/vue-router/package.json index 9064ff94397..a5ca82b027a 100644 --- a/packages/vue-router/package.json +++ b/packages/vue-router/package.json @@ -56,7 +56,7 @@ "prettier": "^2.8.3", "rimraf": "^3.0.2", "rollup": "^4.2.0", - "typescript": "^5.7.3", + "typescript": "^6.0.0", "vue": "^3.5.0", "vue-router": "^5.0.6" } diff --git a/packages/vue-router/tsconfig.json b/packages/vue-router/tsconfig.json index 9c9920d5eb4..454ec7286e2 100644 --- a/packages/vue-router/tsconfig.json +++ b/packages/vue-router/tsconfig.json @@ -1,24 +1,12 @@ { + "extends": "../../core/tsconfig.base.json", "compilerOptions": { - "allowUnreachableCode": false, - "allowSyntheticDefaultImports": true, - "declaration": true, "emitDecoratorMetadata": true, - "experimentalDecorators": true, "esModuleInterop": true, - "lib": ["dom", "es2020"], - "module": "esnext", - "moduleResolution": "node", - "noImplicitAny": true, - "noImplicitReturns": true, - "noUnusedLocals": true, - "noUnusedParameters": true, "outDir": "dist-transpiled", "declarationDir": "dist/types", - "removeComments": false, "sourceMap": true, - "jsx": "react", - "target": "es2017" + "jsx": "react" }, "include": ["src/**/*.ts", "src/**/*.tsx"], "exclude": ["./__tests__/**", "node_modules", "setupTests.ts"], diff --git a/packages/vue/package-lock.json b/packages/vue/package-lock.json index a82b503747e..5d0a11c431d 100644 --- a/packages/vue/package-lock.json +++ b/packages/vue/package-lock.json @@ -27,7 +27,7 @@ "prettier": "^2.8.3", "rimraf": "^3.0.2", "rollup": "^4.2.0", - "typescript": "^5.7.3", + "typescript": "^6.0.0", "vue": "^3.5.0", "vue-router": "^5.0.6" } @@ -4256,9 +4256,9 @@ } }, "node_modules/typescript": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", - "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", + "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", "devOptional": true, "license": "Apache-2.0", "bin": { diff --git a/packages/vue/package.json b/packages/vue/package.json index d1d493dd678..3eb247ee437 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -63,7 +63,7 @@ "prettier": "^2.8.3", "rimraf": "^3.0.2", "rollup": "^4.2.0", - "typescript": "^5.7.3", + "typescript": "^6.0.0", "vue": "^3.5.0", "vue-router": "^5.0.6" }, diff --git a/packages/vue/tsconfig.json b/packages/vue/tsconfig.json index 3fdabe6f1a3..cbdd9635ac0 100644 --- a/packages/vue/tsconfig.json +++ b/packages/vue/tsconfig.json @@ -1,24 +1,13 @@ { + "extends": "../../core/tsconfig.base.json", "compilerOptions": { - "allowUnreachableCode": false, - "allowSyntheticDefaultImports": true, - "declaration": true, "emitDecoratorMetadata": true, - "experimentalDecorators": true, "esModuleInterop": true, - "lib": ["dom", "es2020"], - "module": "ES2020", - "moduleResolution": "bundler", - "noImplicitAny": true, "noImplicitReturns": false, - "noUnusedLocals": true, - "noUnusedParameters": true, "outDir": "dist", "declarationDir": "dist/types", - "removeComments": false, "sourceMap": true, - "jsx": "react", - "target": "es2017" + "jsx": "react" }, "include": ["src/**/*.ts", "src/**/*.tsx"], "exclude": ["./__tests__/**", "node_modules", "setupTests.ts"], diff --git a/tsconfig.json b/tsconfig.json deleted file mode 100644 index cd3ebdcbdd3..00000000000 --- a/tsconfig.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "compilerOptions": { - "alwaysStrict": true, - "strict": true, - "allowSyntheticDefaultImports": true, - "allowUnreachableCode": false, - "declaration": true, - "experimentalDecorators": true, - "forceConsistentCasingInFileNames": true, - "importHelpers": true, - "lib": [ - "dom", - "es2017", - ], - "module": "es2015", - "moduleResolution": "node", - "noImplicitAny": true, - "noImplicitReturns": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "pretty": true, - "removeComments": false, - "strictPropertyInitialization": false, - "target": "es2017", - "paths": { - "@ionic/core/hydrate": [ - "./core/hydrate" - ], - "@ionic/core": [ - "./core" - ], - "@ionic/angular": [ - "./angular" - ], - "@ionic/angular-server": [ - "./packages/angular-server" - ], - "@ionic/react": [ - "./react" - ], - "@ionic/vue": [ - "./vue" - ] - } - } -}