mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-08-18 22:01:42 +08:00
Merge branch 'master' of github.com:NativeScript/NativeScript
# Conflicts: # .gitignore # package.json
This commit is contained in:
@ -1,54 +1,57 @@
|
||||
{
|
||||
"root": true,
|
||||
"parser": "@typescript-eslint/parser",
|
||||
"parserOptions": {
|
||||
"ecmaVersion": 2018,
|
||||
"sourceType": "module",
|
||||
"project": ["packages/core/tsconfig.json", "packages/webpack/tsconfig.json"]
|
||||
},
|
||||
"ignorePatterns": ["**/*"],
|
||||
"plugins": ["prettier", "@typescript-eslint", "@nrwl/nx"],
|
||||
"extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended", "prettier/@typescript-eslint", "plugin:prettier/recommended"],
|
||||
"rules": {
|
||||
"prettier/prettier": "warn",
|
||||
"@typescript-eslint/explicit-member-accessibility": "off",
|
||||
"@typescript-eslint/explicit-function-return-type": "off",
|
||||
"@typescript-eslint/no-parameter-properties": "off",
|
||||
"@typescript-eslint/no-empty-function": "off",
|
||||
"@typescript-eslint/no-explicit-any": "off",
|
||||
"@typescript-eslint/no-unused-vars": "off",
|
||||
"@typescript-eslint/no-namespace": "off",
|
||||
"@typescript-eslint/ban-types": "off",
|
||||
"@typescript-eslint/ban-ts-comment": "off",
|
||||
"@typescript-eslint/no-this-alias": "off",
|
||||
"@typescript-eslint/no-empty-interface": "off",
|
||||
"@typescript-eslint/triple-slash-reference": "off",
|
||||
"no-prototype-builtins": "off",
|
||||
"no-inner-declarations": "off",
|
||||
"no-constant-condition": "off",
|
||||
"no-useless-escape": "off",
|
||||
"@nrwl/nx/enforce-module-boundaries": [
|
||||
"error",
|
||||
{
|
||||
"enforceBuildableLibDependency": true,
|
||||
"allow": [],
|
||||
"depConstraints": [
|
||||
"plugins": ["@nrwl/nx"],
|
||||
"overrides": [
|
||||
{
|
||||
"files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
|
||||
"extends": ["plugin:prettier/recommended"],
|
||||
"parserOptions": {
|
||||
"project": ["packages/core/tsconfig.json", "packages/webpack/tsconfig.json"]
|
||||
},
|
||||
"plugins": ["prettier"],
|
||||
"rules": {
|
||||
"prettier/prettier": "warn",
|
||||
"@typescript-eslint/no-empty-function": "off",
|
||||
"@typescript-eslint/no-explicit-any": "off",
|
||||
"@typescript-eslint/no-unused-vars": "off",
|
||||
"@typescript-eslint/no-namespace": "off",
|
||||
"@typescript-eslint/ban-types": "off",
|
||||
"@typescript-eslint/ban-ts-comment": "off",
|
||||
"@typescript-eslint/no-this-alias": "off",
|
||||
"@typescript-eslint/no-empty-interface": "off",
|
||||
"@typescript-eslint/triple-slash-reference": "off",
|
||||
"no-prototype-builtins": "off",
|
||||
"no-inner-declarations": "off",
|
||||
"no-constant-condition": "off",
|
||||
"no-useless-escape": "off",
|
||||
"@nrwl/nx/enforce-module-boundaries": [
|
||||
"error",
|
||||
{
|
||||
"sourceTag": "*",
|
||||
"onlyDependOnLibsWithTags": ["*"]
|
||||
"enforceBuildableLibDependency": true,
|
||||
"allow": [],
|
||||
"depConstraints": [
|
||||
{
|
||||
"sourceTag": "*",
|
||||
"onlyDependOnLibsWithTags": ["*"]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"@typescript-eslint/explicit-module-boundary-types": "off"
|
||||
},
|
||||
"overrides": [
|
||||
},
|
||||
{
|
||||
"files": ["*.tsx"],
|
||||
"rules": {
|
||||
"@typescript-eslint/no-unused-vars": "off",
|
||||
"@typescript-eslint/no-any": "off"
|
||||
}
|
||||
"files": ["*.ts", "*.tsx"],
|
||||
"extends": ["plugin:@nrwl/nx/typescript"],
|
||||
"parserOptions": {
|
||||
"project": "./tsconfig.*?.json"
|
||||
},
|
||||
"rules": {}
|
||||
},
|
||||
{
|
||||
"files": ["*.js", "*.jsx"],
|
||||
"extends": ["plugin:@nrwl/nx/javascript"],
|
||||
"rules": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
7
.gitignore
vendored
7
.gitignore
vendored
@ -8,12 +8,11 @@
|
||||
# dependencies
|
||||
node_modules
|
||||
package-lock.json
|
||||
yarn-lock.json
|
||||
yarn.lock
|
||||
pnpm-lock.yaml
|
||||
|
||||
|
||||
# IDEs and editors
|
||||
/.idea
|
||||
.idea
|
||||
.project
|
||||
.classpath
|
||||
.c9/
|
||||
@ -52,4 +51,4 @@ Thumbs.db
|
||||
!packages/core/xml/index.js
|
||||
|
||||
# types
|
||||
ios-typings-prj
|
||||
ios-typings-prj
|
||||
|
1
.husky/.gitignore
vendored
Normal file
1
.husky/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
_
|
4
.husky/pre-commit
Executable file
4
.husky/pre-commit
Executable file
@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
. "$(dirname "$0")/_/husky.sh"
|
||||
|
||||
npx lint-staged
|
62
CHANGELOG.md
62
CHANGELOG.md
@ -1,3 +1,65 @@
|
||||
# [7.3.0](https://github.com/NativeScript/NativeScript/compare/7.2.2-core...7.3.0) (2021-02-27)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **core:** AndroidTransitionType symbol export handling ([#9252](https://github.com/NativeScript/NativeScript/issues/9252)) ([ac7f041](https://github.com/NativeScript/NativeScript/commit/ac7f041deada46bfe3bbd8359c02e9224155efd8))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **android:** types for API Level 30 and cleanup ([#9219](https://github.com/NativeScript/NativeScript/issues/9219)) ([ebcc0e2](https://github.com/NativeScript/NativeScript/commit/ebcc0e2cc0e14d2042582901d36d4cfece7fae58))
|
||||
|
||||
|
||||
### BREAKING CHANGES
|
||||
|
||||
* **core:** AndroidTransitionType is now a static member of the Transition class.
|
||||
|
||||
BEFORE:
|
||||
|
||||
```
|
||||
import { AndroidTransitionType } from '@nativescript/core/ui/transition';
|
||||
```
|
||||
|
||||
AFTER:
|
||||
|
||||
```
|
||||
import { Transition } from '@nativescript/core';
|
||||
Transition.AndroidTransitionType.enter; // etc.
|
||||
```
|
||||
|
||||
* **android:** If you were using`native.Array` for any of your own custom plugin typings, you can switch them to `androidNative.Array`
|
||||
|
||||
BEFORE:
|
||||
|
||||
```
|
||||
public writeAsync(path: string, bytes: native.Array<number>) ...
|
||||
```
|
||||
|
||||
AFTER:
|
||||
|
||||
```
|
||||
public writeAsync(path: string, bytes: androidNative.Array<number>) ...
|
||||
```
|
||||
|
||||
## [7.2.2](https://github.com/NativeScript/NativeScript/compare/7.2.1-core...7.2.2) (2021-02-27)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **android:** KeyboardType now respects numbers ([#9240](https://github.com/NativeScript/NativeScript/issues/9240)) ([f08fcb1](https://github.com/NativeScript/NativeScript/commit/f08fcb17b49540126367f75d28499e5904e12106))
|
||||
* **bottom-navigation:** fragment handling ([#9244](https://github.com/NativeScript/NativeScript/issues/9244)) ([c8ef6f2](https://github.com/NativeScript/NativeScript/commit/c8ef6f2ab3d3cd854a92dfecd0e8b2605c00f3af))
|
||||
* **xhr:** remove unnecessary throw when event not supported ([#9251](https://github.com/NativeScript/NativeScript/issues/9251)) ([11ef943](https://github.com/NativeScript/NativeScript/commit/11ef94349588aca23e27b2cfaf0a3e4f93df649e))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **android:** Add possibility to choose theme in android dialogs ([#9212](https://github.com/NativeScript/NativeScript/issues/9212)) ([e7951b3](https://github.com/NativeScript/NativeScript/commit/e7951b320f4178024a4cb5b92bab0761517a68bb))
|
||||
* **core:** allow property overrides at runtime ([#9241](https://github.com/NativeScript/NativeScript/issues/9241)) ([c04e1b5](https://github.com/NativeScript/NativeScript/commit/c04e1b59e5f1a1fa48d2048c02821b97807a2c5e))
|
||||
* add npm scripts for different package managers, ie: yarn, pnpm ([#9230](https://github.com/NativeScript/NativeScript/issues/9230)) ([d7b2c84](https://github.com/NativeScript/NativeScript/commit/d7b2c84da87f9f9381d04886a3ddb0c3f031abfa))
|
||||
|
||||
|
||||
|
||||
## [7.2.1](https://github.com/NativeScript/NativeScript/compare/7.2.0-core...7.2.1) (2021-02-07)
|
||||
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
import * as transition from '@nativescript/core/ui/transition';
|
||||
import { Transition } from '@nativescript/core';
|
||||
|
||||
export class CustomTransition extends transition.Transition {
|
||||
export class CustomTransition extends Transition {
|
||||
constructor(duration: number, curve: any) {
|
||||
super(duration, curve);
|
||||
}
|
||||
@ -8,13 +8,13 @@ export class CustomTransition extends transition.Transition {
|
||||
public createAndroidAnimator(transitionType: string): android.animation.Animator {
|
||||
var scaleValues = Array.create('float', 2);
|
||||
switch (transitionType) {
|
||||
case transition.AndroidTransitionType.enter:
|
||||
case transition.AndroidTransitionType.popEnter:
|
||||
case Transition.AndroidTransitionType.enter:
|
||||
case Transition.AndroidTransitionType.popEnter:
|
||||
scaleValues[0] = 0;
|
||||
scaleValues[1] = 1;
|
||||
break;
|
||||
case transition.AndroidTransitionType.exit:
|
||||
case transition.AndroidTransitionType.popExit:
|
||||
case Transition.AndroidTransitionType.exit:
|
||||
case Transition.AndroidTransitionType.popExit:
|
||||
scaleValues[0] = 1;
|
||||
scaleValues[1] = 0;
|
||||
break;
|
||||
|
109
migrations.json
109
migrations.json
@ -1,109 +0,0 @@
|
||||
{
|
||||
"migrations": [
|
||||
{
|
||||
"version": "10.1.0-beta.0",
|
||||
"description": "Migrate .eslintrc files to use tsconfig with a wildcard",
|
||||
"factory": "./src/migrations/update-10-1-0/migrate-eslintrc-tsconfig-wildcard",
|
||||
"package": "@nrwl/workspace",
|
||||
"name": "migrate-eslintrc-tsconfig-wildcard"
|
||||
},
|
||||
{
|
||||
"version": "10.3.0-beta.0",
|
||||
"description": "Add @nrwl/cli as dependency",
|
||||
"factory": "./src/migrations/update-10-3-0/add-cli-dependency",
|
||||
"package": "@nrwl/workspace",
|
||||
"name": "add-cli-dependency"
|
||||
},
|
||||
{
|
||||
"version": "10.3.0-beta.0",
|
||||
"description": "Update typescript to v4",
|
||||
"factory": "./src/migrations/update-10-3-0/update-typescript",
|
||||
"package": "@nrwl/workspace",
|
||||
"name": "update-10-3-0"
|
||||
},
|
||||
{
|
||||
"version": "10.3.0-beta.1",
|
||||
"description": "Adds .vscode/extensions.json to a workspace",
|
||||
"factory": "./src/migrations/update-10-3-0/add-vscode-extensions",
|
||||
"package": "@nrwl/workspace",
|
||||
"name": "add-vscode-extensions"
|
||||
},
|
||||
{
|
||||
"version": "10.3.0-beta.0",
|
||||
"description": "Adds `buildableProjectDepsInPackageJsonType` for web and angular package builders",
|
||||
"factory": "./src/migrations/update-10-3-0/add-buildable-project-deps-in-package-json-type",
|
||||
"package": "@nrwl/workspace",
|
||||
"name": "add-buildable-project-deps-in-package-json-type"
|
||||
},
|
||||
{
|
||||
"version": "10.1.0-beta.4",
|
||||
"description": "Update jest to v26",
|
||||
"factory": "./src/migrations/update-10-1-0/update-10-1-0",
|
||||
"package": "@nrwl/jest",
|
||||
"name": "update-10.1.0"
|
||||
},
|
||||
{
|
||||
"version": "10.2.0",
|
||||
"description": "Remove deprecated jest builder options",
|
||||
"factory": "./src/migrations/update-10-2-0/update-10-2-0",
|
||||
"package": "@nrwl/jest",
|
||||
"name": "update-10.2.0"
|
||||
},
|
||||
{
|
||||
"version": "10.3.0-beta.1",
|
||||
"description": "Adds all jest projects into the root jest config",
|
||||
"factory": "./src/migrations/update-10-3-0/update-projects-property",
|
||||
"package": "@nrwl/jest",
|
||||
"name": "update-projects-property"
|
||||
},
|
||||
{
|
||||
"version": "10.3.0-beta.1",
|
||||
"description": "Update ts-jest to v26.4",
|
||||
"factory": "./src/migrations/update-10-3-0/update-ts-jest",
|
||||
"package": "@nrwl/jest",
|
||||
"name": "update-ts-jest"
|
||||
},
|
||||
{
|
||||
"version": "10.3.0-beta.1",
|
||||
"description": "Adds a jest extension to the recommended extensions for vscode",
|
||||
"factory": "./src/migrations/update-10-3-0/add-jest-extension",
|
||||
"package": "@nrwl/jest",
|
||||
"name": "add-jest-extension"
|
||||
},
|
||||
{
|
||||
"version": "10.3.0-beta.1",
|
||||
"description": "Update @typescript-eslint to v4.3",
|
||||
"factory": "./src/migrations/update-10-3-0/update-10-3-0",
|
||||
"package": "@nrwl/linter",
|
||||
"name": "update-10.3.0"
|
||||
},
|
||||
{
|
||||
"version": "10.3.0-beta.0",
|
||||
"description": "Migrate to the new ESLint builder and ESLint config style",
|
||||
"factory": "./src/migrations/update-10-3-0/update-eslint-builder-and-config",
|
||||
"package": "@nrwl/linter",
|
||||
"name": "update-eslint-builder-and-config"
|
||||
},
|
||||
{
|
||||
"version": "10.3.0-beta.2",
|
||||
"description": "Add explicit .json file extension to .eslintrc files, not using an extension is deprecated",
|
||||
"factory": "./src/migrations/update-10-3-0/add-json-ext-to-eslintrc",
|
||||
"package": "@nrwl/linter",
|
||||
"name": "add-json-ext-to-eslintrc"
|
||||
},
|
||||
{
|
||||
"version": "10.3.0-beta.3",
|
||||
"description": "Update implicitDependencies within nx.json to include root .eslintrc.json",
|
||||
"factory": "./src/migrations/update-10-3-0/add-root-eslintrc-json-to-workspace-implicit-deps",
|
||||
"package": "@nrwl/linter",
|
||||
"name": "add-root-eslintrc-json-to-workspace-implicit-deps"
|
||||
},
|
||||
{
|
||||
"version": "10.1.0-beta.1",
|
||||
"description": "Removes rootDir from node libs' tsconfig",
|
||||
"factory": "./src/migrations/update-10-1-0/remove-root-dir",
|
||||
"package": "@nrwl/node",
|
||||
"name": "remove-root-dir"
|
||||
}
|
||||
]
|
||||
}
|
158
package.json
158
package.json
@ -1,24 +1,27 @@
|
||||
{
|
||||
"name": "nativescript",
|
||||
"version": "7.2.1",
|
||||
"license": "MIT",
|
||||
"name": "nativescript",
|
||||
"version": "7.3.0",
|
||||
"license": "MIT",
|
||||
"config": {
|
||||
"npm_alias": "npm"
|
||||
},
|
||||
"scripts": {
|
||||
"clean": "rimraf -- hooks node_modules platforms package-lock.json webpack.config.js",
|
||||
"setup": "npm run clean && $npm_package_config_npm_alias i && ts-patch install && npm run core:setup",
|
||||
"start": "nps",
|
||||
"scripts": {
|
||||
"clean": "git clean -f -X -d",
|
||||
"setup": "npm run clean && npm install",
|
||||
"setup:yarn": "yarn run clean && yarn",
|
||||
"setup:pnpm": "pnpm run clean && pnpm install",
|
||||
"postinstall": "ts-patch install && husky install && nx run core:setup",
|
||||
"start": "nps",
|
||||
"changelog": "conventional-changelog -p angular -i CHANGELOG.md -s",
|
||||
"apps-automated:ios": "cd apps/automated && tns debug ios --no-hmr --emulator --env.testing",
|
||||
"apps-automated:android": "cd apps/automated && tns debug android --no-hmr --emulator --env.testing",
|
||||
"apps-automated:clean": "cd apps/automated && rimraf -- hooks node_modules platforms package-lock.json webpack.config.js && $npm_package_config_npm_alias i && rimraf -- package-lock.json",
|
||||
"apps-automated:clean": "cd apps/automated && rimraf -- hooks node_modules platforms package-lock.json webpack.config.js && rimraf -- package-lock.json",
|
||||
"apps-toolbox:ios": "cd apps/toolbox && tns debug ios --no-hmr --emulator --env.testing",
|
||||
"apps-toolbox:android": "cd apps/toolbox && tns debug android --no-hmr --emulator --env.testing",
|
||||
"apps-toolbox:clean": "cd apps/toolbox && rimraf -- hooks node_modules platforms package-lock.json webpack.config.js && $npm_package_config_npm_alias i && rimraf -- package-lock.json",
|
||||
"apps-toolbox:clean": "cd apps/toolbox && rimraf -- hooks node_modules platforms package-lock.json webpack.config.js && rimraf -- package-lock.json",
|
||||
"apps-ui:ios": "cd apps/ui && tns debug ios --no-hmr --emulator --env.testing",
|
||||
"apps-ui:android": "cd apps/ui && tns debug android --no-hmr --emulator --env.testing",
|
||||
"apps-ui:clean": "cd apps/ui && rimraf -- hooks node_modules platforms package-lock.json webpack.config.js && $npm_package_config_npm_alias i && rimraf -- package-lock.json",
|
||||
"apps-ui:clean": "cd apps/ui && rimraf -- hooks node_modules platforms package-lock.json webpack.config.js && rimraf -- package-lock.json",
|
||||
"core:lint": "cd packages/core && eslint -c .eslintrc --ignore-pattern **/node_modules/** --ignore-pattern !packages/core/**",
|
||||
"core:setup": "npm run webpack:build",
|
||||
"core:build": "cpy 'packages/core/*.md' 'packages/core/package.json' 'dist/packages/core' && copyfiles -e '**/*.ts' 'packages/core/css/**/*' 'packages/core/css-value/**/*' 'packages/core/fetch/**/*' 'packages/core/js-libs/**/*' 'packages/core/cli-hooks/**/*.js' dist && copyfiles -e 'packages/core/__tests__/**/*' 'packages/core/**/*.d.ts' dist && tsc -p packages/core/tsconfig.lib.json --outDir dist",
|
||||
@ -35,75 +38,70 @@
|
||||
"webpack:lint": "cd packages/webpack && eslint -c .eslintrc --ignore-pattern **/node_modules/** --ignore-pattern !packages/webpack/**",
|
||||
"webpack:test": "cd packages/webpack && npm run tsc && npm run jasmine",
|
||||
"webpack:build": "cd packages/webpack npm run setup && mkdir -p ../../dist/packages && mv \"$(npm pack | tail -n 1)\" ../../dist/packages/nativescript-webpack.tgz"
|
||||
},
|
||||
"private": true,
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/NativeScript/NativeScript.git"
|
||||
},
|
||||
"dependencies": {
|
||||
"nativescript-theme-core": "^1.0.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@nativescript/hook": "^2.0.0",
|
||||
"@nrwl/cli": "~10.3.1",
|
||||
"@nrwl/eslint-plugin-nx": "~10.3.0",
|
||||
"@nrwl/jest": "~10.3.0",
|
||||
"@nrwl/node": "~10.3.0",
|
||||
"@nrwl/workspace": "~10.3.0",
|
||||
"@nstudio/focus": "~10.3.0",
|
||||
"@nstudio/nps-i": "~1.1.0",
|
||||
"@types/chai": "^4.2.11",
|
||||
"@types/jest": "~26.0.8",
|
||||
"@types/mocha": "^7.0.2",
|
||||
"@types/node": "~14.0.22",
|
||||
"@typescript-eslint/eslint-plugin": "~4.3.0",
|
||||
"@typescript-eslint/parser": "~4.3.0",
|
||||
"chai": "^4.2.0",
|
||||
"conventional-changelog-cli": "^2.0.34",
|
||||
"copyfiles": "^2.4.0",
|
||||
},
|
||||
"private": true,
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/NativeScript/NativeScript.git"
|
||||
},
|
||||
"dependencies": {
|
||||
"nativescript-theme-core": "^1.0.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@nativescript/hook": "^2.0.0",
|
||||
"@nrwl/cli": "11.4.0",
|
||||
"@nrwl/eslint-plugin-nx": "11.4.0",
|
||||
"@nrwl/jest": "11.4.0",
|
||||
"@nrwl/node": "11.4.0",
|
||||
"@nrwl/tao": "11.4.0",
|
||||
"@nrwl/workspace": "11.4.0",
|
||||
"@nstudio/focus": "~11.1.0",
|
||||
"@nstudio/nps-i": "~1.1.0",
|
||||
"@types/chai": "^4.2.11",
|
||||
"@types/jest": "~26.0.8",
|
||||
"@types/mocha": "^7.0.2",
|
||||
"@types/node": "12.12.38",
|
||||
"@typescript-eslint/eslint-plugin": "~4.16.0",
|
||||
"@typescript-eslint/parser": "~4.16.0",
|
||||
"chai": "^4.2.0",
|
||||
"conventional-changelog-cli": "^2.1.1",
|
||||
"copyfiles": "^2.4.0",
|
||||
"cpy-cli": "^3.1.1",
|
||||
"css": "^3.0.0",
|
||||
"css-tree": "^1.0.0-alpha.39",
|
||||
"dotenv": "~8.2.0",
|
||||
"eslint": "~7.10.0",
|
||||
"eslint-config-prettier": "~6.11.0",
|
||||
"eslint-plugin-prettier": "^3.3.1",
|
||||
"gonzales": "^1.0.7",
|
||||
"husky": "^4.2.5",
|
||||
"jest": "~26.2.2",
|
||||
"lint-staged": "^10.2.11",
|
||||
"mocha": "^8.0.1",
|
||||
"mocha-typescript": "^1.1.17",
|
||||
"module-alias": "^2.2.2",
|
||||
"nativescript": "~7.2.0",
|
||||
"node-sass": "~4.14.1",
|
||||
"nps": "5.10.0",
|
||||
"parse-css": "git+https://github.com/tabatkins/parse-css.git",
|
||||
"parserlib": "^1.1.1",
|
||||
"prettier": "~2.0.5",
|
||||
"reduce-css-calc": "~2.1.7",
|
||||
"rimraf": "3.0.2",
|
||||
"shady-css-parser": "^0.1.0",
|
||||
"terser-webpack-plugin": "~3.0.6",
|
||||
"tree-kill": "^1.2.2",
|
||||
"ts-jest": "26.4.0",
|
||||
"ts-node": "~8.10.2",
|
||||
"ts-patch": "^1.3.1",
|
||||
"tslib": "2.1.0",
|
||||
"tslint": "~6.1.3",
|
||||
"typescript": "~4.0.5",
|
||||
"webpack": "~4.44.1",
|
||||
"webpack-cli": "~3.3.12"
|
||||
},
|
||||
"husky": {
|
||||
"hooks": {
|
||||
"pre-commit": "npx lint-staged"
|
||||
}
|
||||
},
|
||||
"lint-staged": {
|
||||
"**/*": [
|
||||
"nx format:write --files"
|
||||
]
|
||||
}
|
||||
"css": "^3.0.0",
|
||||
"css-tree": "^1.0.0-alpha.39",
|
||||
"dotenv": "~8.2.0",
|
||||
"eslint": "~7.21.0",
|
||||
"eslint-config-prettier": "~8.1.0",
|
||||
"eslint-plugin-prettier": "^3.3.1",
|
||||
"gonzales": "^1.0.7",
|
||||
"husky": "^5.1.3",
|
||||
"jest": "~26.2.2",
|
||||
"lint-staged": "^10.5.0",
|
||||
"mocha": "^8.0.1",
|
||||
"mocha-typescript": "^1.1.17",
|
||||
"module-alias": "^2.2.2",
|
||||
"nativescript": "~7.2.0",
|
||||
"parse-css": "git+https://github.com/tabatkins/parse-css.git",
|
||||
"parserlib": "^1.1.1",
|
||||
"prettier": "~2.2.1",
|
||||
"reduce-css-calc": "~2.1.7",
|
||||
"rimraf": "3.0.2",
|
||||
"sass": "~1.32.8",
|
||||
"shady-css-parser": "^0.1.0",
|
||||
"terser-webpack-plugin": "~3.0.6",
|
||||
"tree-kill": "^1.2.2",
|
||||
"ts-jest": "26.4.0",
|
||||
"ts-node": "9.1.1",
|
||||
"ts-patch": "^1.3.0",
|
||||
"tslib": "2.1.0",
|
||||
"tslint": "6.1.3",
|
||||
"typescript": "~4.0.3",
|
||||
"webpack": "~4.44.1",
|
||||
"webpack-cli": "~3.3.12"
|
||||
},
|
||||
"lint-staged": {
|
||||
"**/*": [
|
||||
"nx format:write --files"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
@ -1 +1,5 @@
|
||||
{ "extends": "../../.eslintrc", "rules": {}, "ignorePatterns": ["!**/*"] }
|
||||
{
|
||||
"extends": "../../.eslintrc",
|
||||
"rules": {},
|
||||
"ignorePatterns": ["!**/*"]
|
||||
}
|
||||
|
@ -269,7 +269,7 @@ export class FileSystemAccess {
|
||||
|
||||
public write = this.writeSync.bind(this);
|
||||
|
||||
public writeAsync(path: string, bytes: native.Array<number>): Promise<void> {
|
||||
public writeAsync(path: string, bytes: androidNative.Array<number>): Promise<void> {
|
||||
return new Promise<void>((resolve, reject) => {
|
||||
try {
|
||||
org.nativescript.widgets.Async.File.write(
|
||||
@ -291,7 +291,7 @@ export class FileSystemAccess {
|
||||
});
|
||||
}
|
||||
|
||||
public writeSync(path: string, bytes: native.Array<number>, onError?: (error: any) => any) {
|
||||
public writeSync(path: string, bytes: androidNative.Array<number>, onError?: (error: any) => any) {
|
||||
try {
|
||||
const javaFile = new java.io.File(path);
|
||||
const stream = new java.io.FileOutputStream(javaFile);
|
||||
|
3
packages/core/global-types.d.ts
vendored
3
packages/core/global-types.d.ts
vendored
@ -1,6 +1,3 @@
|
||||
/* eslint-disable no-var */
|
||||
declare var global: NodeJS.Global & typeof globalThis;
|
||||
|
||||
interface ModuleResolver {
|
||||
/**
|
||||
* A function used to resolve the exports for a module.
|
||||
|
@ -3,7 +3,7 @@
|
||||
"main": "index",
|
||||
"types": "index.d.ts",
|
||||
"description": "NativeScript Core Modules",
|
||||
"version": "7.2.1",
|
||||
"version": "7.3.0",
|
||||
"homepage": "https://nativescript.org",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
@ -489,7 +489,9 @@ export class BottomNavigation extends TabNavigationBase {
|
||||
|
||||
if (fragment != null) {
|
||||
fragment.setMenuVisibility(true);
|
||||
fragment.setUserVisibleHint(true);
|
||||
// commenting out as it fixes rare crash when going
|
||||
// back from deeply nested/modally shown fragments
|
||||
// fragment.setUserVisibleHint(true);
|
||||
}
|
||||
|
||||
this._currentFragment = fragment;
|
||||
@ -530,8 +532,8 @@ export class BottomNavigation extends TabNavigationBase {
|
||||
fragmentExitTransition.setResetOnTransitionEnd(true);
|
||||
}
|
||||
if (fragment && fragment.isAdded() && !fragment.isRemoving()) {
|
||||
const pfm = (<any>fragment).getParentFragmentManager ? (<any>fragment).getParentFragmentManager() : null;
|
||||
if (pfm && !pfm.isDestroyed()) {
|
||||
const pfm = (<any>fragment).getParentFragmentManager ? (<any>fragment).getParentFragmentManager() : fragmentManager;
|
||||
if (pfm) {
|
||||
try {
|
||||
if (pfm.isStateSaved()) {
|
||||
pfm.beginTransaction().remove(fragment).commitNowAllowingStateLoss();
|
||||
|
@ -3,7 +3,7 @@ import * as reduceCSSCalc from 'reduce-css-calc';
|
||||
import { ViewBase } from '../view-base';
|
||||
|
||||
// Types.
|
||||
import { WrappedValue, PropertyChangeData } from '../../../data/observable';
|
||||
import { PropertyChangeData, WrappedValue } from '../../../data/observable';
|
||||
import { Trace } from '../../../trace';
|
||||
|
||||
import { Style } from '../../styling/style';
|
||||
@ -11,7 +11,7 @@ import { Style } from '../../styling/style';
|
||||
import { profile } from '../../../profiling';
|
||||
|
||||
/**
|
||||
* Value specifing that Property should be set to its initial value.
|
||||
* Value specifying that Property should be set to its initial value.
|
||||
*/
|
||||
export const unsetValue: any = new Object();
|
||||
|
||||
@ -183,6 +183,7 @@ export class Property<T extends ViewBase, U> implements TypedPropertyDescriptor<
|
||||
|
||||
public get: () => U;
|
||||
public set: (value: U) => void;
|
||||
public overrideHandlers: (options: PropertyOptions<T, U>) => void;
|
||||
public enumerable = true;
|
||||
public configurable = true;
|
||||
|
||||
@ -206,10 +207,26 @@ export class Property<T extends ViewBase, U> implements TypedPropertyDescriptor<
|
||||
this.defaultValue = defaultValue;
|
||||
|
||||
const eventName = propertyName + 'Change';
|
||||
const equalityComparer = options.equalityComparer;
|
||||
const affectsLayout: boolean = options.affectsLayout;
|
||||
const valueChanged = options.valueChanged;
|
||||
const valueConverter = options.valueConverter;
|
||||
|
||||
let equalityComparer = options.equalityComparer;
|
||||
let affectsLayout: boolean = options.affectsLayout;
|
||||
let valueChanged = options.valueChanged;
|
||||
let valueConverter = options.valueConverter;
|
||||
|
||||
this.overrideHandlers = function (options: PropertyOptions<T, U>) {
|
||||
if (typeof options.equalityComparer !== 'undefined') {
|
||||
equalityComparer = options.equalityComparer;
|
||||
}
|
||||
if (typeof options.affectsLayout !== 'undefined') {
|
||||
affectsLayout = options.affectsLayout;
|
||||
}
|
||||
if (typeof options.valueChanged !== 'undefined') {
|
||||
valueChanged = options.valueChanged;
|
||||
}
|
||||
if (typeof options.valueConverter !== 'undefined') {
|
||||
valueConverter = options.valueConverter;
|
||||
}
|
||||
};
|
||||
|
||||
const property = this;
|
||||
|
||||
@ -364,14 +381,32 @@ export class CoercibleProperty<T extends ViewBase, U> extends Property<T, U> imp
|
||||
const coerceKey = Symbol(propertyName + ':coerceKey');
|
||||
|
||||
const eventName = propertyName + 'Change';
|
||||
const affectsLayout: boolean = options.affectsLayout;
|
||||
const equalityComparer = options.equalityComparer;
|
||||
const valueChanged = options.valueChanged;
|
||||
const valueConverter = options.valueConverter;
|
||||
const coerceCallback = options.coerceValue;
|
||||
let affectsLayout: boolean = options.affectsLayout;
|
||||
let equalityComparer = options.equalityComparer;
|
||||
let valueChanged = options.valueChanged;
|
||||
let valueConverter = options.valueConverter;
|
||||
let coerceCallback = options.coerceValue;
|
||||
|
||||
const property = this;
|
||||
|
||||
this.overrideHandlers = function (options: CoerciblePropertyOptions<T, U>) {
|
||||
if (typeof options.equalityComparer !== 'undefined') {
|
||||
equalityComparer = options.equalityComparer;
|
||||
}
|
||||
if (typeof options.affectsLayout !== 'undefined') {
|
||||
affectsLayout = options.affectsLayout;
|
||||
}
|
||||
if (typeof options.valueChanged !== 'undefined') {
|
||||
valueChanged = options.valueChanged;
|
||||
}
|
||||
if (typeof options.valueConverter !== 'undefined') {
|
||||
valueConverter = options.valueConverter;
|
||||
}
|
||||
if (typeof options.coerceValue !== 'undefined') {
|
||||
coerceCallback = options.coerceValue;
|
||||
}
|
||||
};
|
||||
|
||||
this.coerce = function (target: T): void {
|
||||
const originalValue: U = coerceKey in target ? target[coerceKey] : defaultValue;
|
||||
// need that to make coercing but also fire change events
|
||||
@ -559,6 +594,8 @@ export class CssProperty<T extends Style, U> implements CssProperty<T, U> {
|
||||
public readonly defaultValueKey: symbol;
|
||||
public readonly defaultValue: U;
|
||||
|
||||
public overrideHandlers: (options: CssPropertyOptions<T, U>) => void;
|
||||
|
||||
constructor(options: CssPropertyOptions<T, U>) {
|
||||
const propertyName = options.name;
|
||||
this.name = propertyName;
|
||||
@ -587,10 +624,25 @@ export class CssProperty<T extends Style, U> implements CssProperty<T, U> {
|
||||
this.defaultValue = defaultValue;
|
||||
|
||||
const eventName = propertyName + 'Change';
|
||||
const affectsLayout: boolean = options.affectsLayout;
|
||||
const equalityComparer = options.equalityComparer;
|
||||
const valueChanged = options.valueChanged;
|
||||
const valueConverter = options.valueConverter;
|
||||
let affectsLayout: boolean = options.affectsLayout;
|
||||
let equalityComparer = options.equalityComparer;
|
||||
let valueChanged = options.valueChanged;
|
||||
let valueConverter = options.valueConverter;
|
||||
|
||||
this.overrideHandlers = function (options: CssPropertyOptions<T, U>) {
|
||||
if (typeof options.equalityComparer !== 'undefined') {
|
||||
equalityComparer = options.equalityComparer;
|
||||
}
|
||||
if (typeof options.affectsLayout !== 'undefined') {
|
||||
affectsLayout = options.affectsLayout;
|
||||
}
|
||||
if (typeof options.valueChanged !== 'undefined') {
|
||||
valueChanged = options.valueChanged;
|
||||
}
|
||||
if (typeof options.valueConverter !== 'undefined') {
|
||||
valueConverter = options.valueConverter;
|
||||
}
|
||||
};
|
||||
|
||||
const property = this;
|
||||
|
||||
@ -1015,6 +1067,7 @@ CssAnimationProperty.prototype.isStyleProperty = true;
|
||||
|
||||
export class InheritedCssProperty<T extends Style, U> extends CssProperty<T, U> implements InheritedCssProperty<T, U> {
|
||||
public setInheritedValue: (value: U) => void;
|
||||
public overrideHandlers: (options: CssPropertyOptions<T, U>) => void;
|
||||
|
||||
constructor(options: CssPropertyOptions<T, U>) {
|
||||
super(options);
|
||||
@ -1027,14 +1080,29 @@ export class InheritedCssProperty<T extends Style, U> extends CssProperty<T, U>
|
||||
const defaultValueKey = this.defaultValueKey;
|
||||
|
||||
const eventName = propertyName + 'Change';
|
||||
const defaultValue: U = options.defaultValue;
|
||||
const affectsLayout: boolean = options.affectsLayout;
|
||||
const equalityComparer = options.equalityComparer;
|
||||
const valueChanged = options.valueChanged;
|
||||
const valueConverter = options.valueConverter;
|
||||
let defaultValue: U = options.defaultValue;
|
||||
let affectsLayout: boolean = options.affectsLayout;
|
||||
let equalityComparer = options.equalityComparer;
|
||||
let valueChanged = options.valueChanged;
|
||||
let valueConverter = options.valueConverter;
|
||||
|
||||
const property = this;
|
||||
|
||||
this.overrideHandlers = function (options: CssPropertyOptions<T, U>) {
|
||||
if (typeof options.equalityComparer !== 'undefined') {
|
||||
equalityComparer = options.equalityComparer;
|
||||
}
|
||||
if (typeof options.affectsLayout !== 'undefined') {
|
||||
affectsLayout = options.affectsLayout;
|
||||
}
|
||||
if (typeof options.valueChanged !== 'undefined') {
|
||||
valueChanged = options.valueChanged;
|
||||
}
|
||||
if (typeof options.valueConverter !== 'undefined') {
|
||||
valueConverter = options.valueConverter;
|
||||
}
|
||||
};
|
||||
|
||||
const setFunc = (valueSource: ValueSource) =>
|
||||
function (this: T, boxedValue: any): void {
|
||||
const view = this.viewRef.get();
|
||||
@ -1488,12 +1556,18 @@ export function makeValidator<T>(...values: T[]): (value: any) => value is T {
|
||||
return (value: any): value is T => set.has(value);
|
||||
}
|
||||
|
||||
export function makeParser<T>(isValid: (value: any) => boolean): (value: any) => T {
|
||||
export function makeParser<T>(isValid: (value: any) => boolean, allowNumbers = false): (value: any) => T {
|
||||
return (value) => {
|
||||
const lower = value && value.toLowerCase();
|
||||
if (isValid(lower)) {
|
||||
return lower;
|
||||
} else {
|
||||
if (allowNumbers) {
|
||||
const convNumber = +value;
|
||||
if (!isNaN(convNumber)) {
|
||||
return value;
|
||||
}
|
||||
}
|
||||
throw new Error('Invalid value: ' + value);
|
||||
}
|
||||
};
|
||||
|
@ -23,6 +23,11 @@ export interface CancelableOptions {
|
||||
* [Android only] Gets or sets if the dialog can be canceled by taping outside of the dialog.
|
||||
*/
|
||||
cancelable?: boolean;
|
||||
|
||||
/**
|
||||
* [Android only] Sets the theme of the Dialog. Usable themes can be found: https://developer.android.com/reference/android/R.style
|
||||
*/
|
||||
theme?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -12,7 +12,7 @@ function isString(value): value is string {
|
||||
}
|
||||
|
||||
function createAlertDialog(options?: DialogOptions): android.app.AlertDialog.Builder {
|
||||
const alert = new android.app.AlertDialog.Builder(androidApp.foregroundActivity);
|
||||
const alert = new android.app.AlertDialog.Builder(androidApp.foregroundActivity, options.theme ? options.theme : -1);
|
||||
alert.setTitle(options && isString(options.title) ? options.title : '');
|
||||
alert.setMessage(options && isString(options.message) ? options.message : '');
|
||||
if (options && options.cancelable === false) {
|
||||
@ -325,7 +325,7 @@ export function action(...args): Promise<string> {
|
||||
return new Promise<string>((resolve, reject) => {
|
||||
try {
|
||||
const activity = androidApp.foregroundActivity || androidApp.startActivity;
|
||||
const alert = new android.app.AlertDialog.Builder(activity);
|
||||
const alert = new android.app.AlertDialog.Builder(activity, options.theme ? options.theme : -1);
|
||||
const message = options && isString(options.message) ? options.message : '';
|
||||
const title = options && isString(options.title) ? options.title : '';
|
||||
if (options && options.cancelable === false) {
|
||||
|
5
packages/core/ui/dialogs/index.d.ts
vendored
5
packages/core/ui/dialogs/index.d.ts
vendored
@ -142,6 +142,11 @@ export interface CancelableOptions {
|
||||
* [Android only] Gets or sets if the dialog can be canceled by taping outside of the dialog.
|
||||
*/
|
||||
cancelable?: boolean;
|
||||
|
||||
/**
|
||||
* [Android only] Sets the theme of the Dialog. Usable themes can be found: https://developer.android.com/reference/android/R.style
|
||||
*/
|
||||
theme?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -48,12 +48,12 @@ export const placeholderColorProperty = new CssProperty<Style, Color>({
|
||||
});
|
||||
placeholderColorProperty.register(Style);
|
||||
|
||||
const keyboardTypeConverter = makeParser<KeyboardType>(makeValidator<KeyboardType>('datetime', 'phone', 'number', 'url', 'email', 'integer'));
|
||||
const keyboardTypeConverter = makeParser<KeyboardType>(makeValidator<KeyboardType>('datetime', 'phone', 'number', 'url', 'email', 'integer'), true);
|
||||
|
||||
export const keyboardTypeProperty = new Property<EditableTextBase, KeyboardType>({ name: 'keyboardType', valueConverter: keyboardTypeConverter });
|
||||
keyboardTypeProperty.register(EditableTextBase);
|
||||
|
||||
const returnKeyTypeConverter = makeParser<ReturnKeyType>(makeValidator<ReturnKeyType>('done', 'next', 'go', 'search', 'send'));
|
||||
const returnKeyTypeConverter = makeParser<ReturnKeyType>(makeValidator<ReturnKeyType>('done', 'next', 'go', 'search', 'send'), true);
|
||||
|
||||
export const returnKeyTypeProperty = new Property<EditableTextBase, ReturnKeyType>({ name: 'returnKeyType', valueConverter: returnKeyTypeConverter });
|
||||
returnKeyTypeProperty.register(EditableTextBase);
|
||||
@ -68,7 +68,7 @@ editableProperty.register(EditableTextBase);
|
||||
export const updateTextTriggerProperty = new Property<EditableTextBase, UpdateTextTrigger>({ name: 'updateTextTrigger', defaultValue: 'textChanged' });
|
||||
updateTextTriggerProperty.register(EditableTextBase);
|
||||
|
||||
const autocapitalizationTypeConverter = makeParser<AutocapitalizationType>(makeValidator<AutocapitalizationType>('none', 'words', 'sentences', 'allcharacters'));
|
||||
const autocapitalizationTypeConverter = makeParser<AutocapitalizationType>(makeValidator<AutocapitalizationType>('none', 'words', 'sentences', 'allcharacters'), true);
|
||||
|
||||
export const autocapitalizationTypeProperty = new Property<EditableTextBase, AutocapitalizationType>({
|
||||
name: 'autocapitalizationType',
|
||||
|
@ -216,7 +216,7 @@ export abstract class EditableTextBase extends EditableTextBaseCommon {
|
||||
const nativeView = this.nativeTextViewProtected;
|
||||
try {
|
||||
this._changeFromCode = true;
|
||||
nativeView.setInputType(inputType);
|
||||
nativeView.setInputType(parseInt(<any>inputType, 10));
|
||||
} finally {
|
||||
this._changeFromCode = false;
|
||||
}
|
||||
@ -281,7 +281,12 @@ export abstract class EditableTextBase extends EditableTextBaseCommon {
|
||||
break;
|
||||
|
||||
default:
|
||||
newInputType = value;
|
||||
const inputType = +value;
|
||||
if (!isNaN(inputType)) {
|
||||
newInputType = inputType;
|
||||
} else {
|
||||
newInputType = android.text.InputType.TYPE_CLASS_TEXT;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -3,7 +3,7 @@ import { NavigationType } from './frame-common';
|
||||
import { NavigationTransition, BackstackEntry } from '.';
|
||||
|
||||
// Types.
|
||||
import { Transition, AndroidTransitionType } from '../transition';
|
||||
import { Transition } from '../transition';
|
||||
import { FlipTransition } from '../transition/flip-transition';
|
||||
import { _resolveAnimationCurve } from '../animation';
|
||||
import lazy from '../../utils/lazy';
|
||||
@ -164,14 +164,14 @@ function setupAllAnimation(entry: ExpandedEntry, transition: Transition): void {
|
||||
|
||||
// setupAllAnimation is called only for new fragments so we don't
|
||||
// need to clearAnimationListener for enter & popExit animators.
|
||||
const enterAnimator = <ExpandedAnimator>transition.createAndroidAnimator(AndroidTransitionType.enter);
|
||||
enterAnimator.transitionType = AndroidTransitionType.enter;
|
||||
const enterAnimator = <ExpandedAnimator>transition.createAndroidAnimator(Transition.AndroidTransitionType.enter);
|
||||
enterAnimator.transitionType = Transition.AndroidTransitionType.enter;
|
||||
enterAnimator.entry = entry;
|
||||
enterAnimator.addListener(listener);
|
||||
entry.enterAnimator = enterAnimator;
|
||||
|
||||
const popExitAnimator = <ExpandedAnimator>transition.createAndroidAnimator(AndroidTransitionType.popExit);
|
||||
popExitAnimator.transitionType = AndroidTransitionType.popExit;
|
||||
const popExitAnimator = <ExpandedAnimator>transition.createAndroidAnimator(Transition.AndroidTransitionType.popExit);
|
||||
popExitAnimator.transitionType = Transition.AndroidTransitionType.popExit;
|
||||
popExitAnimator.entry = entry;
|
||||
popExitAnimator.addListener(listener);
|
||||
entry.popExitAnimator = popExitAnimator;
|
||||
@ -184,14 +184,14 @@ function setupExitAndPopEnterAnimation(entry: ExpandedEntry, transition: Transit
|
||||
clearAnimationListener(entry.exitAnimator, listener);
|
||||
clearAnimationListener(entry.popEnterAnimator, listener);
|
||||
|
||||
const exitAnimator = <ExpandedAnimator>transition.createAndroidAnimator(AndroidTransitionType.exit);
|
||||
exitAnimator.transitionType = AndroidTransitionType.exit;
|
||||
const exitAnimator = <ExpandedAnimator>transition.createAndroidAnimator(Transition.AndroidTransitionType.exit);
|
||||
exitAnimator.transitionType = Transition.AndroidTransitionType.exit;
|
||||
exitAnimator.entry = entry;
|
||||
exitAnimator.addListener(listener);
|
||||
entry.exitAnimator = exitAnimator;
|
||||
|
||||
const popEnterAnimator = <ExpandedAnimator>transition.createAndroidAnimator(AndroidTransitionType.popEnter);
|
||||
popEnterAnimator.transitionType = AndroidTransitionType.popEnter;
|
||||
const popEnterAnimator = <ExpandedAnimator>transition.createAndroidAnimator(Transition.AndroidTransitionType.popEnter);
|
||||
popEnterAnimator.transitionType = Transition.AndroidTransitionType.popEnter;
|
||||
popEnterAnimator.entry = entry;
|
||||
popEnterAnimator.addListener(listener);
|
||||
entry.popEnterAnimator = popEnterAnimator;
|
||||
@ -572,13 +572,13 @@ function setupCurrentFragmentSlideTransition(navTransition: NavigationTransition
|
||||
}
|
||||
|
||||
function setupCurrentFragmentCustomTransition(navTransition: NavigationTransition, entry: ExpandedEntry, transition: Transition): void {
|
||||
const exitAnimator = transition.createAndroidAnimator(AndroidTransitionType.exit);
|
||||
const exitTransition = new org.nativescript.widgets.CustomTransition(exitAnimator, transition.constructor.name + AndroidTransitionType.exit.toString());
|
||||
const exitAnimator = transition.createAndroidAnimator(Transition.AndroidTransitionType.exit);
|
||||
const exitTransition = new org.nativescript.widgets.CustomTransition(exitAnimator, transition.constructor.name + Transition.AndroidTransitionType.exit.toString());
|
||||
|
||||
setExitTransition(navTransition, entry, exitTransition);
|
||||
|
||||
const reenterAnimator = transition.createAndroidAnimator(AndroidTransitionType.popEnter);
|
||||
const reenterTransition = new org.nativescript.widgets.CustomTransition(reenterAnimator, transition.constructor.name + AndroidTransitionType.popEnter.toString());
|
||||
const reenterAnimator = transition.createAndroidAnimator(Transition.AndroidTransitionType.popEnter);
|
||||
const reenterTransition = new org.nativescript.widgets.CustomTransition(reenterAnimator, transition.constructor.name + Transition.AndroidTransitionType.popEnter.toString());
|
||||
|
||||
setReenterTransition(navTransition, entry, reenterTransition);
|
||||
}
|
||||
@ -586,12 +586,12 @@ function setupCurrentFragmentCustomTransition(navTransition: NavigationTransitio
|
||||
function setupNewFragmentCustomTransition(navTransition: NavigationTransition, entry: ExpandedEntry, transition: Transition): void {
|
||||
setupCurrentFragmentCustomTransition(navTransition, entry, transition);
|
||||
|
||||
const enterAnimator = transition.createAndroidAnimator(AndroidTransitionType.enter);
|
||||
const enterTransition = new org.nativescript.widgets.CustomTransition(enterAnimator, transition.constructor.name + AndroidTransitionType.enter.toString());
|
||||
const enterAnimator = transition.createAndroidAnimator(Transition.AndroidTransitionType.enter);
|
||||
const enterTransition = new org.nativescript.widgets.CustomTransition(enterAnimator, transition.constructor.name + Transition.AndroidTransitionType.enter.toString());
|
||||
setEnterTransition(navTransition, entry, enterTransition);
|
||||
|
||||
const returnAnimator = transition.createAndroidAnimator(AndroidTransitionType.popExit);
|
||||
const returnTransition = new org.nativescript.widgets.CustomTransition(returnAnimator, transition.constructor.name + AndroidTransitionType.popExit.toString());
|
||||
const returnAnimator = transition.createAndroidAnimator(Transition.AndroidTransitionType.popExit);
|
||||
const returnTransition = new org.nativescript.widgets.CustomTransition(returnAnimator, transition.constructor.name + Transition.AndroidTransitionType.popExit.toString());
|
||||
setReturnTransition(navTransition, entry, returnTransition);
|
||||
}
|
||||
|
||||
|
@ -121,7 +121,7 @@ export function refreshBorderDrawable(this: void, view: View, borderDrawable: or
|
||||
}
|
||||
}
|
||||
|
||||
function createNativeCSSValueArray(css: string): native.Array<org.nativescript.widgets.CSSValue> {
|
||||
function createNativeCSSValueArray(css: string): androidNative.Array<org.nativescript.widgets.CSSValue> {
|
||||
if (!css) {
|
||||
return null;
|
||||
}
|
||||
|
@ -27,6 +27,13 @@ export class TextField extends TextFieldBase {
|
||||
setSecureAndKeyboardType(): void {
|
||||
let inputType: number;
|
||||
|
||||
// Check for a passed in Number value
|
||||
const value = +this.keyboardType;
|
||||
if (!isNaN(value)) {
|
||||
this._setInputType(value);
|
||||
return;
|
||||
}
|
||||
|
||||
// Password variations are supported only for Text and Number classes.
|
||||
if (this.secure) {
|
||||
if (this.keyboardType === 'number') {
|
||||
|
@ -1,17 +1,17 @@
|
||||
import { Transition, AndroidTransitionType } from '.';
|
||||
import { Transition } from '.';
|
||||
|
||||
export class FadeTransition extends Transition {
|
||||
public createAndroidAnimator(transitionType: string): android.animation.AnimatorSet {
|
||||
const animatorSet = new android.animation.AnimatorSet();
|
||||
const alphaValues = Array.create('float', 2);
|
||||
switch (transitionType) {
|
||||
case AndroidTransitionType.enter:
|
||||
case AndroidTransitionType.popEnter:
|
||||
case Transition.AndroidTransitionType.enter:
|
||||
case Transition.AndroidTransitionType.popEnter:
|
||||
alphaValues[0] = 0;
|
||||
alphaValues[1] = 1;
|
||||
break;
|
||||
case AndroidTransitionType.exit:
|
||||
case AndroidTransitionType.popExit:
|
||||
case Transition.AndroidTransitionType.exit:
|
||||
case Transition.AndroidTransitionType.popExit:
|
||||
alphaValues[0] = 1;
|
||||
alphaValues[1] = 0;
|
||||
break;
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { Transition, AndroidTransitionType } from '.';
|
||||
import { Transition } from '.';
|
||||
|
||||
//http://developer.android.com/training/animation/cardflip.html
|
||||
export class FlipTransition extends Transition {
|
||||
@ -19,7 +19,7 @@ export class FlipTransition extends Transition {
|
||||
const rotationY = this._direction === 'right' ? 180 : -180;
|
||||
|
||||
switch (transitionType) {
|
||||
case AndroidTransitionType.enter: // card_flip_right_in
|
||||
case Transition.AndroidTransitionType.enter: // card_flip_right_in
|
||||
objectAnimators = Array.create(android.animation.Animator, 2);
|
||||
|
||||
values = Array.create('float', 2);
|
||||
@ -38,7 +38,7 @@ export class FlipTransition extends Transition {
|
||||
animator.setDuration(fullDuration / 2);
|
||||
objectAnimators[1] = animator;
|
||||
break;
|
||||
case AndroidTransitionType.exit: // card_flip_right_out
|
||||
case Transition.AndroidTransitionType.exit: // card_flip_right_out
|
||||
objectAnimators = Array.create(android.animation.Animator, 2);
|
||||
|
||||
values = Array.create('float', 2);
|
||||
@ -57,7 +57,7 @@ export class FlipTransition extends Transition {
|
||||
animator.setDuration(fullDuration / 2);
|
||||
objectAnimators[1] = animator;
|
||||
break;
|
||||
case AndroidTransitionType.popEnter: // card_flip_left_in
|
||||
case Transition.AndroidTransitionType.popEnter: // card_flip_left_in
|
||||
objectAnimators = Array.create(android.animation.Animator, 2);
|
||||
|
||||
values = Array.create('float', 2);
|
||||
@ -76,7 +76,7 @@ export class FlipTransition extends Transition {
|
||||
animator.setDuration(fullDuration / 2);
|
||||
objectAnimators[1] = animator;
|
||||
break;
|
||||
case AndroidTransitionType.popExit: // card_flip_left_out
|
||||
case Transition.AndroidTransitionType.popExit: // card_flip_left_out
|
||||
objectAnimators = Array.create(android.animation.Animator, 2);
|
||||
|
||||
values = Array.create('float', 2);
|
||||
|
@ -4,15 +4,14 @@ import lazy from '../../utils/lazy';
|
||||
|
||||
const _defaultInterpolator = lazy(() => new android.view.animation.AccelerateDecelerateInterpolator());
|
||||
|
||||
export namespace AndroidTransitionType {
|
||||
export const enter = 'enter';
|
||||
export const exit = 'exit';
|
||||
export const popEnter = 'popEnter';
|
||||
export const popExit = 'popExit';
|
||||
}
|
||||
|
||||
let transitionId = 0;
|
||||
export class Transition {
|
||||
static AndroidTransitionType = {
|
||||
enter: 'enter',
|
||||
exit: 'exit',
|
||||
popEnter: 'popEnter',
|
||||
popExit: 'popExit',
|
||||
};
|
||||
private _duration: number;
|
||||
private _interpolator: android.view.animation.Interpolator;
|
||||
private _id: number;
|
||||
|
10
packages/core/ui/transition/index.d.ts
vendored
10
packages/core/ui/transition/index.d.ts
vendored
@ -1,11 +1,5 @@
|
||||
export namespace AndroidTransitionType {
|
||||
export const enter: string;
|
||||
export const exit: string;
|
||||
export const popEnter: string;
|
||||
export const popExit: string;
|
||||
}
|
||||
|
||||
export class Transition {
|
||||
export class Transition {
|
||||
static AndroidTransitionType: { enter: string; exit: string; popEnter: string; popExit: string };
|
||||
constructor(duration: number, nativeCurve: any);
|
||||
public getDuration(): number;
|
||||
public getCurve(): any;
|
||||
|
@ -1,5 +1,6 @@
|
||||
let transitionId = 0;
|
||||
export class Transition {
|
||||
static AndroidTransitionType = {};
|
||||
private _duration: number;
|
||||
private _curve: UIViewAnimationCurve;
|
||||
private _id: number;
|
||||
|
@ -1,11 +1,11 @@
|
||||
import * as transition from '.';
|
||||
import { Transition } from '.';
|
||||
import { Screen } from '../../platform';
|
||||
import lazy from '../../utils/lazy';
|
||||
|
||||
const screenWidth = lazy(() => Screen.mainScreen.widthPixels);
|
||||
const screenHeight = lazy(() => Screen.mainScreen.heightPixels);
|
||||
|
||||
export class SlideTransition extends transition.Transition {
|
||||
export class SlideTransition extends Transition {
|
||||
private _direction: string;
|
||||
|
||||
constructor(direction: string, duration: number, curve: any) {
|
||||
@ -18,19 +18,19 @@ export class SlideTransition extends transition.Transition {
|
||||
switch (this._direction) {
|
||||
case 'left':
|
||||
switch (transitionType) {
|
||||
case transition.AndroidTransitionType.enter:
|
||||
case Transition.AndroidTransitionType.enter:
|
||||
translationValues[0] = screenWidth();
|
||||
translationValues[1] = 0;
|
||||
break;
|
||||
case transition.AndroidTransitionType.exit:
|
||||
case Transition.AndroidTransitionType.exit:
|
||||
translationValues[0] = 0;
|
||||
translationValues[1] = -screenWidth();
|
||||
break;
|
||||
case transition.AndroidTransitionType.popEnter:
|
||||
case Transition.AndroidTransitionType.popEnter:
|
||||
translationValues[0] = -screenWidth();
|
||||
translationValues[1] = 0;
|
||||
break;
|
||||
case transition.AndroidTransitionType.popExit:
|
||||
case Transition.AndroidTransitionType.popExit:
|
||||
translationValues[0] = 0;
|
||||
translationValues[1] = screenWidth();
|
||||
break;
|
||||
@ -38,19 +38,19 @@ export class SlideTransition extends transition.Transition {
|
||||
break;
|
||||
case 'right':
|
||||
switch (transitionType) {
|
||||
case transition.AndroidTransitionType.enter:
|
||||
case Transition.AndroidTransitionType.enter:
|
||||
translationValues[0] = -screenWidth();
|
||||
translationValues[1] = 0;
|
||||
break;
|
||||
case transition.AndroidTransitionType.exit:
|
||||
case Transition.AndroidTransitionType.exit:
|
||||
translationValues[0] = 0;
|
||||
translationValues[1] = screenWidth();
|
||||
break;
|
||||
case transition.AndroidTransitionType.popEnter:
|
||||
case Transition.AndroidTransitionType.popEnter:
|
||||
translationValues[0] = screenWidth();
|
||||
translationValues[1] = 0;
|
||||
break;
|
||||
case transition.AndroidTransitionType.popExit:
|
||||
case Transition.AndroidTransitionType.popExit:
|
||||
translationValues[0] = 0;
|
||||
translationValues[1] = -screenWidth();
|
||||
break;
|
||||
@ -58,19 +58,19 @@ export class SlideTransition extends transition.Transition {
|
||||
break;
|
||||
case 'top':
|
||||
switch (transitionType) {
|
||||
case transition.AndroidTransitionType.enter:
|
||||
case Transition.AndroidTransitionType.enter:
|
||||
translationValues[0] = screenHeight();
|
||||
translationValues[1] = 0;
|
||||
break;
|
||||
case transition.AndroidTransitionType.exit:
|
||||
case Transition.AndroidTransitionType.exit:
|
||||
translationValues[0] = 0;
|
||||
translationValues[1] = -screenHeight();
|
||||
break;
|
||||
case transition.AndroidTransitionType.popEnter:
|
||||
case Transition.AndroidTransitionType.popEnter:
|
||||
translationValues[0] = -screenHeight();
|
||||
translationValues[1] = 0;
|
||||
break;
|
||||
case transition.AndroidTransitionType.popExit:
|
||||
case Transition.AndroidTransitionType.popExit:
|
||||
translationValues[0] = 0;
|
||||
translationValues[1] = screenHeight();
|
||||
break;
|
||||
@ -78,19 +78,19 @@ export class SlideTransition extends transition.Transition {
|
||||
break;
|
||||
case 'bottom':
|
||||
switch (transitionType) {
|
||||
case transition.AndroidTransitionType.enter:
|
||||
case Transition.AndroidTransitionType.enter:
|
||||
translationValues[0] = -screenHeight();
|
||||
translationValues[1] = 0;
|
||||
break;
|
||||
case transition.AndroidTransitionType.exit:
|
||||
case Transition.AndroidTransitionType.exit:
|
||||
translationValues[0] = 0;
|
||||
translationValues[1] = screenHeight();
|
||||
break;
|
||||
case transition.AndroidTransitionType.popEnter:
|
||||
case Transition.AndroidTransitionType.popEnter:
|
||||
translationValues[0] = screenHeight();
|
||||
translationValues[1] = 0;
|
||||
break;
|
||||
case transition.AndroidTransitionType.popExit:
|
||||
case Transition.AndroidTransitionType.popExit:
|
||||
translationValues[0] = 0;
|
||||
translationValues[1] = -screenHeight();
|
||||
break;
|
||||
|
@ -1,5 +1,6 @@
|
||||
import * as http from '../http';
|
||||
import * as types from '../utils/types';
|
||||
import { Trace } from '../trace';
|
||||
|
||||
namespace XMLHttpRequestResponseType {
|
||||
export const empty = '';
|
||||
@ -170,7 +171,9 @@ export class XMLHttpRequest {
|
||||
|
||||
public addEventListener(eventName: string, handler: Function) {
|
||||
if (['abort', 'error', 'load', 'loadend', 'loadstart', 'progress', 'readystatechange'].indexOf(eventName) === -1) {
|
||||
throw new Error('Event not supported: ' + eventName);
|
||||
if (Trace.isEnabled()) {
|
||||
Trace.write('XHR Event not supported: ' + eventName, Trace.categories.Debug, Trace.messageType.warn);
|
||||
}
|
||||
}
|
||||
|
||||
const handlers = this._listeners.get(eventName) || [];
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nativescript/types-android",
|
||||
"version": "7.2.0",
|
||||
"version": "7.3.0",
|
||||
"description": "NativeScript Types for Android.",
|
||||
"homepage": "https://nativescript.org",
|
||||
"repository": {
|
||||
|
3
packages/types-android/src/lib/android-30.d.ts
vendored
Normal file
3
packages/types-android/src/lib/android-30.d.ts
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
/// <reference path="./android/android-platform-30.d.ts" />
|
||||
/// <reference path="./android/androidx-30.d.ts" />
|
||||
/// <reference path="./android/common.d.ts" />
|
@ -18,6 +18,7 @@ interface ArrayConstructor {
|
||||
create(type: any, count: number): any;
|
||||
}
|
||||
|
||||
declare module native { export class Array<T> { constructor(); length: number; [index: number]: T; } }
|
||||
declare module androidNative { export class Array<T> { constructor(); length: number; [index: number]: T; } }
|
||||
|
||||
import globalAndroid = android;
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
132754
packages/types-android/src/lib/android/android-platform-30.d.ts
vendored
Normal file
132754
packages/types-android/src/lib/android/android-platform-30.d.ts
vendored
Normal file
File diff suppressed because it is too large
Load Diff
8047
packages/types-android/src/lib/android/androidx-17.d.ts
vendored
8047
packages/types-android/src/lib/android/androidx-17.d.ts
vendored
File diff suppressed because it is too large
Load Diff
8568
packages/types-android/src/lib/android/androidx-23.d.ts
vendored
8568
packages/types-android/src/lib/android/androidx-23.d.ts
vendored
File diff suppressed because it is too large
Load Diff
8776
packages/types-android/src/lib/android/androidx-26.d.ts
vendored
8776
packages/types-android/src/lib/android/androidx-26.d.ts
vendored
File diff suppressed because it is too large
Load Diff
8760
packages/types-android/src/lib/android/androidx-28.d.ts
vendored
8760
packages/types-android/src/lib/android/androidx-28.d.ts
vendored
File diff suppressed because it is too large
Load Diff
8802
packages/types-android/src/lib/android/androidx-29.d.ts
vendored
8802
packages/types-android/src/lib/android/androidx-29.d.ts
vendored
File diff suppressed because it is too large
Load Diff
42351
packages/types-android/src/lib/android/androidx-30.d.ts
vendored
Normal file
42351
packages/types-android/src/lib/android/androidx-30.d.ts
vendored
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nativescript/types-ios",
|
||||
"version": "7.2.0",
|
||||
"version": "7.3.0",
|
||||
"description": "NativeScript Types for iOS.",
|
||||
"homepage": "https://nativescript.org",
|
||||
"repository": {
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nativescript/types",
|
||||
"version": "7.2.0",
|
||||
"version": "7.3.0",
|
||||
"description": "NativeScript Types for all supported platforms.",
|
||||
"homepage": "https://nativescript.org",
|
||||
"repository": {
|
||||
@ -12,7 +12,7 @@
|
||||
],
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@nativescript/types-ios": "7.2.0",
|
||||
"@nativescript/types-android": "7.2.0"
|
||||
"@nativescript/types-ios": "7.3.0",
|
||||
"@nativescript/types-android": "7.3.0"
|
||||
}
|
||||
}
|
||||
|
16
tools/generators/app/schema.json
Normal file
16
tools/generators/app/schema.json
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/schema",
|
||||
"id": "app",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string",
|
||||
"description": "Library name",
|
||||
"$default": {
|
||||
"$source": "argv",
|
||||
"index": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": ["name"]
|
||||
}
|
@ -1,16 +0,0 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/schema",
|
||||
"id": "app",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string",
|
||||
"description": "Library name",
|
||||
"$default": {
|
||||
"$source": "argv",
|
||||
"index": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": ["name"]
|
||||
}
|
@ -114,7 +114,8 @@
|
||||
"options": {
|
||||
"jestConfig": "packages/core/jest.config.js",
|
||||
"passWithNoTests": true
|
||||
}
|
||||
},
|
||||
"outputs": ["coverage/packages/core"]
|
||||
},
|
||||
"setup": {
|
||||
"builder": "@nrwl/workspace:run-commands",
|
||||
|
Reference in New Issue
Block a user