mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-08-18 05:18:39 +08:00
Merge branch 'master' of github.com:NativeScript/NativeScript
This commit is contained in:
20
CHANGELOG.md
20
CHANGELOG.md
@ -1,3 +1,23 @@
|
||||
## [8.1.4](https://github.com/NativeScript/NativeScript/compare/8.1.3-core...8.1.4) (2021-10-09)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **android:** StringIndexOutOfBoundsException with invalid drawables ([#9563](https://github.com/NativeScript/NativeScript/issues/9563)) ([8e76bbe](https://github.com/NativeScript/NativeScript/commit/8e76bbe2515c5c743d3db30a940ccb8040314bea))
|
||||
* background parsing color [#9559](https://github.com/NativeScript/NativeScript/issues/9559) ([#9560](https://github.com/NativeScript/NativeScript/issues/9560)) ([3e21748](https://github.com/NativeScript/NativeScript/commit/3e21748af4dcf76fec3822b4d5e9c844794eda1d))
|
||||
* **ios:** ActionBar flat property using new appearance api for iOS 15 ([#9558](https://github.com/NativeScript/NativeScript/issues/9558)) ([183b4d4](https://github.com/NativeScript/NativeScript/commit/183b4d4b10a4ec7f9527e5373c8ce723c3db0c3e))
|
||||
* **ios:** TextView respect editable binding ([#9589](https://github.com/NativeScript/NativeScript/issues/9589)) ([2b2ce37](https://github.com/NativeScript/NativeScript/commit/2b2ce377e6d7bd33de3fd8df9482772a650b75b5))
|
||||
* **ios:** replace autofill string in textfield ([#9555](https://github.com/NativeScript/NativeScript/issues/9555)) ([889f6d7](https://github.com/NativeScript/NativeScript/commit/889f6d73cf8bdc080c54387708562d00c2684e9b))
|
||||
* **style:** CSS variables should be case-sensitive. ([#9603](https://github.com/NativeScript/NativeScript/issues/9603)) ([02aa0f6](https://github.com/NativeScript/NativeScript/commit/02aa0f652a5637b089a8894f6635462073715205))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **android** openFile dialog title ([#9600](https://github.com/NativeScript/NativeScript/issues/9600)) ([77d2533](https://github.com/NativeScript/NativeScript/commit/77d253379802487007c138ca025ac21f9bece002))
|
||||
* **text:** add css text-align justify ([#9573](https://github.com/NativeScript/NativeScript/issues/9573)) ([1de5295](https://github.com/NativeScript/NativeScript/commit/1de5295ad980b394460de7d9d4b884e5a3b5a679))
|
||||
|
||||
|
||||
|
||||
## [8.1.3](https://github.com/NativeScript/NativeScript/compare/8.1.2-core...8.1.3) (2021-09-18)
|
||||
|
||||
|
||||
|
@ -14,10 +14,10 @@
|
||||
"nativescript-theme-core": "file:../../node_modules/nativescript-theme-core"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@nativescript/android": "7.0.1",
|
||||
"@nativescript/ios": "7.2.0",
|
||||
"@nativescript/android": "8.1.1",
|
||||
"@nativescript/ios": "8.1.0",
|
||||
"@nativescript/webpack": "file:../../dist/packages/nativescript-webpack.tgz",
|
||||
"typescript": "4.1.4"
|
||||
"typescript": "4.3.5"
|
||||
},
|
||||
"gitHead": "c06800e52ee1a184ea2dffd12a6702aaa43be4e3",
|
||||
"readme": "NativeScript Application"
|
||||
|
@ -11,9 +11,9 @@
|
||||
"nativescript-theme-core": "file:../../node_modules/nativescript-theme-core"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@nativescript/android": "7.0.1",
|
||||
"@nativescript/ios": "7.2.0",
|
||||
"@nativescript/android": "8.1.1",
|
||||
"@nativescript/ios": "8.1.0",
|
||||
"@nativescript/webpack": "file:../../dist/packages/nativescript-webpack.tgz",
|
||||
"typescript": "4.1.4"
|
||||
"typescript": "4.3.5"
|
||||
}
|
||||
}
|
||||
|
@ -11,10 +11,10 @@
|
||||
"@nativescript/core": "file:../../packages/core"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@nativescript/android": "7.0.1",
|
||||
"@nativescript/ios": "7.2.0",
|
||||
"@nativescript/android": "8.1.1",
|
||||
"@nativescript/ios": "8.1.0",
|
||||
"@nativescript/webpack": "file:../../dist/packages/nativescript-webpack.tgz",
|
||||
"typescript": "4.1.4"
|
||||
"typescript": "4.3.5"
|
||||
},
|
||||
"gitHead": "8ab7726d1ee9991706069c1359c552e67ee0d1a4",
|
||||
"readme": "NativeScript Application",
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "nativescript",
|
||||
"version": "8.1.3",
|
||||
"version": "8.1.4",
|
||||
"license": "MIT",
|
||||
"config": {
|
||||
"npm_alias": "npm"
|
||||
@ -82,7 +82,7 @@
|
||||
"mocha": "^8.0.1",
|
||||
"mocha-typescript": "^1.1.17",
|
||||
"module-alias": "^2.2.2",
|
||||
"nativescript": "~8.1.2",
|
||||
"nativescript": "~8.1.3",
|
||||
"nativescript-typedoc-theme": "1.1.0",
|
||||
"parse-css": "git+https://github.com/tabatkins/parse-css.git",
|
||||
"parserlib": "^1.1.1",
|
||||
|
@ -1,7 +1,7 @@
|
||||
**Esprima** ([esprima.org](http://esprima.org), BSD license) is a high performance,
|
||||
standard-compliant [ECMAScript](http://www.ecma-international.org/publications/standards/Ecma-262.htm)
|
||||
parser written in ECMAScript (also popularly known as
|
||||
[JavaScript](http://en.wikipedia.org/wiki/JavaScript>JavaScript)).
|
||||
[JavaScript](http://en.wikipedia.org/wiki/JavaScript).
|
||||
Esprima is created and maintained by [Ariya Hidayat](http://twitter.com/ariyahidayat),
|
||||
with the help of [many contributors](https://github.com/ariya/esprima/contributors).
|
||||
|
||||
@ -9,7 +9,7 @@ with the help of [many contributors](https://github.com/ariya/esprima/contributo
|
||||
|
||||
- Full support for ECMAScript 5.1 ([ECMA-262](http://www.ecma-international.org/publications/standards/Ecma-262.htm))
|
||||
- Sensible [syntax tree format](http://esprima.org/doc/index.html#ast) compatible with Mozilla
|
||||
[Parser AST](https://developer.mozilla.org/en/SpiderMonkey/Parser_API)
|
||||
[Parser AST](https://web.archive.org/web/20201119095346/https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/Parser_API)
|
||||
- Optional tracking of syntax node location (index-based and line-column)
|
||||
- Heavily tested (> 700 [unit tests](http://esprima.org/test/) with [full code coverage](http://esprima.org/test/coverage.html))
|
||||
- [Partial support](http://esprima.org/doc/es6.html) for ECMAScript 6
|
||||
@ -19,6 +19,6 @@ language tools, from [code instrumentation](http://esprima.org/demo/functiontrac
|
||||
to [editor autocompletion](http://esprima.org/demo/autocomplete.html).
|
||||
|
||||
Esprima runs on many popular web browsers, as well as other ECMAScript platforms such as
|
||||
[Rhino](http://www.mozilla.org/rhino), [Nashorn](http://openjdk.java.net/projects/nashorn/), and [Node.js](https://npmjs.org/package/esprima).
|
||||
[Rhino](https://github.com/mozilla/rhino), [Nashorn](http://openjdk.java.net/projects/nashorn/), and [Node.js](https://npmjs.org/package/esprima).
|
||||
|
||||
For more information, check the web site [esprima.org](http://esprima.org).
|
||||
|
@ -3,7 +3,7 @@
|
||||
"main": "index",
|
||||
"types": "index.d.ts",
|
||||
"description": "A JavaScript library providing an easy to use api for interacting with iOS and Android platform APIs.",
|
||||
"version": "8.1.3",
|
||||
"version": "8.1.4",
|
||||
"homepage": "https://nativescript.org",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
@ -359,7 +359,7 @@ export class ActionBar extends ActionBarBase {
|
||||
if (color) {
|
||||
const titleTextColor = NSDictionary.dictionaryWithObjectForKey(color.ios, NSForegroundColorAttributeName);
|
||||
if (majorVersion >= 15) {
|
||||
const appearance = navBar.standardAppearance ?? UINavigationBarAppearance.new();
|
||||
const appearance = this._getAppearance(navBar);
|
||||
appearance.titleTextAttributes = titleTextColor;
|
||||
}
|
||||
navBar.titleTextAttributes = titleTextColor;
|
||||
@ -379,12 +379,10 @@ export class ActionBar extends ActionBarBase {
|
||||
|
||||
const color_ = color instanceof Color ? color.ios : color;
|
||||
if (majorVersion >= 15) {
|
||||
const appearance = navBar.standardAppearance ?? UINavigationBarAppearance.new();
|
||||
const appearance = this._getAppearance(navBar);
|
||||
// appearance.configureWithOpaqueBackground();
|
||||
appearance.backgroundColor = color_;
|
||||
navBar.standardAppearance = appearance;
|
||||
navBar.compactAppearance = appearance;
|
||||
navBar.scrollEdgeAppearance = appearance;
|
||||
this._updateAppearance(navBar, appearance);
|
||||
} else {
|
||||
// legacy styling
|
||||
navBar.barTintColor = color_;
|
||||
@ -406,31 +404,23 @@ export class ActionBar extends ActionBarBase {
|
||||
}
|
||||
|
||||
private updateFlatness(navBar: UINavigationBar) {
|
||||
|
||||
if (this.flat) {
|
||||
|
||||
if (majorVersion >= 15) {
|
||||
const appearance = navBar.standardAppearance ?? UINavigationBarAppearance.new();
|
||||
const appearance = this._getAppearance(navBar);
|
||||
appearance.shadowColor = UIColor.clearColor;
|
||||
|
||||
navBar.standardAppearance = appearance;
|
||||
navBar.compactAppearance = appearance;
|
||||
navBar.scrollEdgeAppearance = appearance;
|
||||
} else {
|
||||
|
||||
this._updateAppearance(navBar, appearance);
|
||||
} else {
|
||||
navBar.setBackgroundImageForBarMetrics(UIImage.new(), UIBarMetrics.Default);
|
||||
navBar.shadowImage = UIImage.new();
|
||||
navBar.translucent = false;
|
||||
}
|
||||
} else {
|
||||
if (majorVersion >= 15) {
|
||||
if(navBar.standardAppearance){ // Not flat and never been set do nothing.
|
||||
if (navBar.standardAppearance) {
|
||||
// Not flat and never been set do nothing.
|
||||
const appearance = navBar.standardAppearance;
|
||||
appearance.shadowColor = UINavigationBarAppearance.new().shadowColor;
|
||||
|
||||
navBar.standardAppearance = appearance;
|
||||
navBar.compactAppearance = appearance;
|
||||
navBar.scrollEdgeAppearance = appearance;
|
||||
appearance.shadowColor = UINavigationBarAppearance.new().shadowColor;
|
||||
this._updateAppearance(navBar, appearance);
|
||||
}
|
||||
} else {
|
||||
navBar.setBackgroundImageForBarMetrics(null, null);
|
||||
@ -440,6 +430,16 @@ export class ActionBar extends ActionBarBase {
|
||||
}
|
||||
}
|
||||
|
||||
private _getAppearance(navBar: UINavigationBar) {
|
||||
return navBar.standardAppearance ?? UINavigationBarAppearance.new();
|
||||
}
|
||||
|
||||
private _updateAppearance(navBar: UINavigationBar, appearance: UINavigationBarAppearance) {
|
||||
navBar.standardAppearance = appearance;
|
||||
navBar.compactAppearance = appearance;
|
||||
navBar.scrollEdgeAppearance = appearance;
|
||||
}
|
||||
|
||||
public onMeasure(widthMeasureSpec: number, heightMeasureSpec: number) {
|
||||
const width = layout.getMeasureSpecSize(widthMeasureSpec);
|
||||
const height = layout.getMeasureSpecSize(heightMeasureSpec);
|
||||
|
@ -1,4 +1,5 @@
|
||||
import '../../../globals';
|
||||
import { isCssVariable } from '../../core/properties';
|
||||
import { isNullOrUndefined } from '../../../utils/types';
|
||||
|
||||
import * as cssParser from '../../../css';
|
||||
@ -523,7 +524,7 @@ export function fromAstNodes(astRules: cssParser.Node[]): RuleSet[] {
|
||||
}
|
||||
|
||||
function createDeclaration(decl: cssParser.Declaration): any {
|
||||
return { property: decl.property.toLowerCase(), value: decl.value };
|
||||
return { property: isCssVariable(decl.property) ? decl.property : decl.property.toLowerCase(), value: decl.value };
|
||||
}
|
||||
|
||||
function createSimpleSelectorFromAst(ast: parser.SimpleSelector): SimpleSelector {
|
||||
|
@ -134,7 +134,7 @@ export class TextView extends TextViewBaseCommon {
|
||||
this.showText();
|
||||
}
|
||||
|
||||
return true;
|
||||
return this.editable;
|
||||
}
|
||||
|
||||
public textViewDidBeginEditing(textView: UITextView): void {
|
||||
|
@ -81,7 +81,7 @@ function getMimeTypeNameFromExtension(filePath: string): string {
|
||||
* @param {string} filePath
|
||||
* @returns {boolean} whether opening the file succeeded or not
|
||||
*/
|
||||
export function openFile(filePath: string): boolean {
|
||||
export function openFile(filePath: string, title: string = 'Open File...'): boolean {
|
||||
const context = ad.getApplicationContext();
|
||||
try {
|
||||
// Ensure external storage is available
|
||||
@ -108,7 +108,7 @@ Applications cannot access internal storage of other application on Android (see
|
||||
// Determine file mimetype & start creating intent
|
||||
const mimeType = getMimeTypeNameFromExtension(filePath);
|
||||
const intent = new android.content.Intent(android.content.Intent.ACTION_VIEW);
|
||||
const chooserIntent = android.content.Intent.createChooser(intent, 'Open File...');
|
||||
const chooserIntent = android.content.Intent.createChooser(intent, title);
|
||||
|
||||
intent.addFlags(android.content.Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
chooserIntent.addFlags(android.content.Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
|
3
packages/core/utils/index.d.ts
vendored
3
packages/core/utils/index.d.ts
vendored
@ -242,8 +242,9 @@ export function openUrl(url: string): boolean;
|
||||
/**
|
||||
* Opens file.
|
||||
* @param filePath The file.
|
||||
* @param title Optional title for Android. Default is: 'Open File...'
|
||||
*/
|
||||
export function openFile(filePath: string): boolean;
|
||||
export function openFile(filePath: string, title?: string): boolean;
|
||||
|
||||
/**
|
||||
* Escapes special regex symbols (., *, ^, $ and so on) in string in order to create a valid regex from it.
|
||||
|
@ -318,6 +318,10 @@ exports[`javascript configuration for android 1`] = `
|
||||
{
|
||||
'__jest__/src/__@nativescript_webpack_virtual_entry_javascript__': '// VIRTUAL ENTRY START\\\\nrequire(\\\\'@nativescript/core/bundle-entry-points\\\\')\\\\nconst context = require.context(\\"~/\\", /* deep: */ true, /* filter: */ /.(xml|js|s?css)$/);\\\\nglobal.registerWebpackModules(context);\\\\n// VIRTUAL ENTRY END'
|
||||
}
|
||||
),
|
||||
/* config.plugin('ContextExclusionPlugin|exclude_files') */
|
||||
new ContextExclusionPlugin(
|
||||
/\\\\b_.+\\\\./
|
||||
)
|
||||
],
|
||||
entry: {
|
||||
@ -651,6 +655,10 @@ exports[`javascript configuration for ios 1`] = `
|
||||
{
|
||||
'__jest__/src/__@nativescript_webpack_virtual_entry_javascript__': '// VIRTUAL ENTRY START\\\\nrequire(\\\\'@nativescript/core/bundle-entry-points\\\\')\\\\nconst context = require.context(\\"~/\\", /* deep: */ true, /* filter: */ /.(xml|js|s?css)$/);\\\\nglobal.registerWebpackModules(context);\\\\n// VIRTUAL ENTRY END'
|
||||
}
|
||||
),
|
||||
/* config.plugin('ContextExclusionPlugin|exclude_files') */
|
||||
new ContextExclusionPlugin(
|
||||
/\\\\b_.+\\\\./
|
||||
)
|
||||
],
|
||||
entry: {
|
||||
|
@ -318,6 +318,10 @@ exports[`typescript configuration for android 1`] = `
|
||||
{
|
||||
'__jest__/src/__@nativescript_webpack_virtual_entry_typescript__': '// VIRTUAL ENTRY START\\\\nrequire(\\\\'@nativescript/core/bundle-entry-points\\\\')\\\\nconst context = require.context(\\"~/\\", /* deep: */ true, /* filter: */ /\\\\\\\\.(xml|js|(?<!\\\\\\\\.d\\\\\\\\.)ts|s?css)$/);\\\\nglobal.registerWebpackModules(context);\\\\n// VIRTUAL ENTRY END'
|
||||
}
|
||||
),
|
||||
/* config.plugin('ContextExclusionPlugin|exclude_files') */
|
||||
new ContextExclusionPlugin(
|
||||
/\\\\b_.+\\\\./
|
||||
)
|
||||
],
|
||||
entry: {
|
||||
@ -651,6 +655,10 @@ exports[`typescript configuration for ios 1`] = `
|
||||
{
|
||||
'__jest__/src/__@nativescript_webpack_virtual_entry_typescript__': '// VIRTUAL ENTRY START\\\\nrequire(\\\\'@nativescript/core/bundle-entry-points\\\\')\\\\nconst context = require.context(\\"~/\\", /* deep: */ true, /* filter: */ /\\\\\\\\.(xml|js|(?<!\\\\\\\\.d\\\\\\\\.)ts|s?css)$/);\\\\nglobal.registerWebpackModules(context);\\\\n// VIRTUAL ENTRY END'
|
||||
}
|
||||
),
|
||||
/* config.plugin('ContextExclusionPlugin|exclude_files') */
|
||||
new ContextExclusionPlugin(
|
||||
/\\\\b_.+\\\\./
|
||||
)
|
||||
],
|
||||
entry: {
|
||||
|
@ -4,6 +4,7 @@ import { getEntryPath, getEntryDirPath } from '../helpers/platform';
|
||||
import { addVirtualEntry } from '../helpers/virtualModules';
|
||||
import { chainedSetAddAfter } from '../helpers/chain';
|
||||
import { env as _env, IWebpackEnv } from '../index';
|
||||
import { ContextExclusionPlugin } from 'webpack';
|
||||
import base from './base';
|
||||
|
||||
export default function (config: Config, env: IWebpackEnv = _env): Config {
|
||||
@ -22,6 +23,11 @@ export default function (config: Config, env: IWebpackEnv = _env): Config {
|
||||
`
|
||||
);
|
||||
|
||||
// exclude files starting with _ from require.context
|
||||
config
|
||||
.plugin(`ContextExclusionPlugin|exclude_files`)
|
||||
.use(ContextExclusionPlugin, [/\b_.+\./]);
|
||||
|
||||
chainedSetAddAfter(
|
||||
config.entry('bundle'),
|
||||
'@nativescript/core/globals/index.js',
|
||||
|
@ -4,6 +4,7 @@ import { getEntryDirPath, getEntryPath } from '../helpers/platform';
|
||||
import { addVirtualEntry } from '../helpers/virtualModules';
|
||||
import { chainedSetAddAfter } from '../helpers/chain';
|
||||
import { env as _env, IWebpackEnv } from '../index';
|
||||
import { ContextExclusionPlugin } from 'webpack';
|
||||
import base from './base';
|
||||
|
||||
export default function (config: Config, env: IWebpackEnv = _env): Config {
|
||||
@ -22,6 +23,11 @@ export default function (config: Config, env: IWebpackEnv = _env): Config {
|
||||
`
|
||||
);
|
||||
|
||||
// exclude files starting with _ from require.context
|
||||
config
|
||||
.plugin(`ContextExclusionPlugin|exclude_files`)
|
||||
.use(ContextExclusionPlugin, [/\b_.+\./]);
|
||||
|
||||
chainedSetAddAfter(
|
||||
config.entry('bundle'),
|
||||
'@nativescript/core/globals/index.js',
|
||||
|
Reference in New Issue
Block a user