Merge branch 'master' of github.com:NativeScript/NativeScript

# Conflicts:
#	.gitignore
#	package.json
This commit is contained in:
Martin Guillon
2021-03-08 17:30:57 +01:00
59 changed files with 257363 additions and 51464 deletions

View File

@ -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
View File

@ -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
View File

@ -0,0 +1 @@
_

4
.husky/pre-commit Executable file
View File

@ -0,0 +1,4 @@
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
npx lint-staged

View File

@ -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)

View File

@ -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;

View File

@ -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"
}
]
}

View File

@ -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"
]
}
}

View File

@ -1 +1,5 @@
{ "extends": "../../.eslintrc", "rules": {}, "ignorePatterns": ["!**/*"] }
{
"extends": "../../.eslintrc",
"rules": {},
"ignorePatterns": ["!**/*"]
}

View File

@ -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);

View File

@ -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.

View File

@ -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",

View File

@ -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();

View File

@ -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);
}
};

View File

@ -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;
}
/**

View File

@ -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) {

View File

@ -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;
}
/**

View File

@ -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',

View File

@ -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;
}

View File

@ -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);
}

View File

@ -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;
}

View File

@ -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') {

View File

@ -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;

View File

@ -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);

View File

@ -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;

View File

@ -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;

View File

@ -1,5 +1,6 @@
let transitionId = 0;
export class Transition {
static AndroidTransitionType = {};
private _duration: number;
private _curve: UIViewAnimationCurve;
private _id: number;

View File

@ -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;

View File

@ -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) || [];

View File

@ -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": {

View 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" />

View File

@ -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

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

View File

@ -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": {

View File

@ -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"
}
}

View 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"]
}

View File

@ -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"]
}

View File

@ -114,7 +114,8 @@
"options": {
"jestConfig": "packages/core/jest.config.js",
"passWithNoTests": true
}
},
"outputs": ["coverage/packages/core"]
},
"setup": {
"builder": "@nrwl/workspace:run-commands",