Merge branch 'master' into mdonev/release-to-master20190621
2
.gitignore
vendored
@ -48,6 +48,8 @@ tscommand*.tmp.txt
|
|||||||
|
|
||||||
# Other
|
# Other
|
||||||
*.js
|
*.js
|
||||||
|
# https://github.com/NativeScript/nativescript-dev-webpack/issues/932
|
||||||
|
!tns-core-modules/xml/xml.js
|
||||||
!tests/hooks/**/*.*
|
!tests/hooks/**/*.*
|
||||||
!gruntfile.js
|
!gruntfile.js
|
||||||
!js-libs/**/*.*
|
!js-libs/**/*.*
|
||||||
|
24
.travis.yml
@ -3,20 +3,28 @@ env:
|
|||||||
- DATE=$(date +%Y-%m-%d)
|
- DATE=$(date +%Y-%m-%d)
|
||||||
- PACKAGE_VERSION=$DATE-$TRAVIS_BUILD_NUMBER
|
- PACKAGE_VERSION=$DATE-$TRAVIS_BUILD_NUMBER
|
||||||
language: objective-c
|
language: objective-c
|
||||||
osx_image: xcode9.3
|
osx_image: xcode10.2
|
||||||
|
jdk:
|
||||||
|
- oraclejdk8
|
||||||
|
- openjdk8
|
||||||
|
script:
|
||||||
|
- export JAVA_HOME=$HOME/openjdk8
|
||||||
|
- $TRAVIS_BUILD_DIR/install-jdk.sh --install openjdk8 --target $JAVA_HOME
|
||||||
|
- # do stuff with open OpenJDK 11
|
||||||
|
- jdk_switcher use openjdk8
|
||||||
install:
|
install:
|
||||||
- brew update
|
# - brew update
|
||||||
- brew cask install android-sdk
|
# - brew cask install android-sdk
|
||||||
# Suppress output of sdkmanager to keep log under the 4MB limit of travis-ci
|
# Suppress output of sdkmanager to keep log under the 4MB limit of travis-ci
|
||||||
- yes | sdkmanager "platforms;android-28" >/dev/null
|
# - yes | sdkmanager "platforms;android-28" >/dev/null
|
||||||
- yes | sdkmanager "build-tools;28.0.3" >/dev/null
|
# - yes | sdkmanager "build-tools;28.0.3" >/dev/null
|
||||||
- yes | sdkmanager "extras;android;m2repository" >/dev/null
|
# - yes | sdkmanager "extras;android;m2repository" >/dev/null
|
||||||
before_script:
|
before_script:
|
||||||
- export ANDROID_HOME=/usr/local/share/android-sdk
|
# - export ANDROID_HOME=/usr/local/share/android-sdk
|
||||||
- npm install -g grunt-cli
|
- npm install -g grunt-cli
|
||||||
- npm install
|
- npm install
|
||||||
script:
|
script:
|
||||||
- npm run setup-widgets
|
# - npm run setup-widgets
|
||||||
- npm run setup
|
- npm run setup
|
||||||
- npm run tsc
|
- npm run tsc
|
||||||
- npm run tslint
|
- npm run tslint
|
50
.vscode/launch.json
vendored
@ -1,4 +1,7 @@
|
|||||||
{
|
{
|
||||||
|
// Use IntelliSense to learn about possible attributes.
|
||||||
|
// Hover to view descriptions of existing attributes.
|
||||||
|
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||||
"version": "0.2.0",
|
"version": "0.2.0",
|
||||||
"configurations": [
|
"configurations": [
|
||||||
{
|
{
|
||||||
@ -6,7 +9,12 @@
|
|||||||
"request": "launch",
|
"request": "launch",
|
||||||
"name": "Unit Tests",
|
"name": "Unit Tests",
|
||||||
"program": "${workspaceRoot}/node_modules/mocha/bin/_mocha",
|
"program": "${workspaceRoot}/node_modules/mocha/bin/_mocha",
|
||||||
"args": [ "--timeout", "999999", "--opts", "unit-tests/mocha.opts" ],
|
"args": [
|
||||||
|
"--timeout",
|
||||||
|
"999999",
|
||||||
|
"--opts",
|
||||||
|
"unit-tests/mocha.opts"
|
||||||
|
],
|
||||||
"internalConsoleOptions": "openOnSessionStart",
|
"internalConsoleOptions": "openOnSessionStart",
|
||||||
"preLaunchTask": "tsc-unit-tests"
|
"preLaunchTask": "tsc-unit-tests"
|
||||||
},
|
},
|
||||||
@ -19,6 +27,20 @@
|
|||||||
"sourceMaps": true,
|
"sourceMaps": true,
|
||||||
"watch": true
|
"watch": true
|
||||||
},
|
},
|
||||||
|
// {
|
||||||
|
// "name": "Test on iOS",
|
||||||
|
// "type": "nativescript",
|
||||||
|
// "request": "launch",
|
||||||
|
// "platform": "ios",
|
||||||
|
// "appRoot": "${workspaceRoot}",
|
||||||
|
// "sourceMaps": true,
|
||||||
|
// "watch": false,
|
||||||
|
// "stopOnEntry": true,
|
||||||
|
// "launchTests": true,
|
||||||
|
// "tnsArgs": [
|
||||||
|
// "--justlaunch"
|
||||||
|
// ]
|
||||||
|
// },
|
||||||
{
|
{
|
||||||
"name": "Attach on iOS",
|
"name": "Attach on iOS",
|
||||||
"type": "nativescript",
|
"type": "nativescript",
|
||||||
@ -37,6 +59,32 @@
|
|||||||
"sourceMaps": true,
|
"sourceMaps": true,
|
||||||
"watch": true
|
"watch": true
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "Debug tests on Android",
|
||||||
|
"type": "nativescript",
|
||||||
|
"request": "launch",
|
||||||
|
"platform": "android",
|
||||||
|
"appRoot": "${workspaceRoot}/tests",
|
||||||
|
"sourceMaps": true,
|
||||||
|
"watch": true,
|
||||||
|
// "tnsArgs": [
|
||||||
|
// "--debug-brk"
|
||||||
|
// ]
|
||||||
|
},
|
||||||
|
// {
|
||||||
|
// "name": "Test on Android",
|
||||||
|
// "type": "nativescript",
|
||||||
|
// "request": "launch",
|
||||||
|
// "platform": "android",
|
||||||
|
// "appRoot": "${workspaceRoot}",
|
||||||
|
// "sourceMaps": true,
|
||||||
|
// "watch": false,
|
||||||
|
// "stopOnEntry": true,
|
||||||
|
// "launchTests": true,
|
||||||
|
// "tnsArgs": [
|
||||||
|
// "--justlaunch"
|
||||||
|
// ]
|
||||||
|
// },
|
||||||
{
|
{
|
||||||
"name": "Attach on Android",
|
"name": "Attach on Android",
|
||||||
"type": "nativescript",
|
"type": "nativescript",
|
||||||
|
@ -427,8 +427,8 @@ Use the [JSDoc][JSDOC] convention for comments. When writing a comment always th
|
|||||||
+ When you are creating a new class
|
+ When you are creating a new class
|
||||||
+ Public methods - include all the arguments and if possible the types {String}, {Number}. Optional arguments should be marked too. Check the [@param tag][param]
|
+ Public methods - include all the arguments and if possible the types {String}, {Number}. Optional arguments should be marked too. Check the [@param tag][param]
|
||||||
|
|
||||||
[JSDOC]: http://usejsdoc.org/
|
[JSDOC]: https://devdocs.io/jsdoc/
|
||||||
[param]: http://usejsdoc.org/tags-param.html
|
[param]: https://devdocs.io/jsdoc/tags-param
|
||||||
|
|
||||||
## File/module structure
|
## File/module structure
|
||||||
|
|
||||||
@ -439,7 +439,9 @@ A typical module should have the following structure:
|
|||||||
3. export variables and functions
|
3. export variables and functions
|
||||||
4. export class declarations
|
4. export class declarations
|
||||||
|
|
||||||
|
<!--
|
||||||
For more information see [this file](https://github.com/telerik/xPlatCore/blob/master/JS/BCL/CreateNewModule.md)
|
For more information see [this file](https://github.com/telerik/xPlatCore/blob/master/JS/BCL/CreateNewModule.md)
|
||||||
|
-->
|
||||||
|
|
||||||
## File naming
|
## File naming
|
||||||
Use lower case for file names. Use a dash to separate different words.
|
Use lower case for file names. Use a dash to separate different words.
|
||||||
|
@ -42,12 +42,7 @@ Install devDependencies:
|
|||||||
npm install
|
npm install
|
||||||
```
|
```
|
||||||
|
|
||||||
Run `setup` script. This will [`npm link`](https://docs.npmjs.com/cli/link) the `tns-core-modules` and `tns-core-modules-declarations` dependencies inside the `tests` and `apps` projects.
|
<!---
|
||||||
|
|
||||||
```bash
|
|
||||||
npm run setup
|
|
||||||
```
|
|
||||||
|
|
||||||
## TypeScript
|
## TypeScript
|
||||||
|
|
||||||
The following commands are commonly used to compile the `tns-core-modules`:
|
The following commands are commonly used to compile the `tns-core-modules`:
|
||||||
@ -62,30 +57,26 @@ tsc --skipLibCheck
|
|||||||
tsc --skipLibCheck -w
|
tsc --skipLibCheck -w
|
||||||
```
|
```
|
||||||
|
|
||||||
|
NOTE: transpile `tns-core-modules` only.
|
||||||
|
|
||||||
The modules have `typescript` as a devDependency so you should also be able to use the locally installed TypeScript compiler from node_modules:
|
The modules have `typescript` as a devDependency so you should also be able to use the locally installed TypeScript compiler from node_modules:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./node_modules/.bin/tsc
|
./node_modules/.bin/tsc
|
||||||
```
|
```
|
||||||
|
|
||||||
You can compile the TypeScript files in the `tns-core-modules`, `tns-platform-declarations`, `apps` and `tests` at once at the root of the repo:
|
You can compile the TypeScript files in the `tns-core-modules` and `tns-platform-declarations` at once at the root of the repo:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
npm run tsc
|
npm run tsc
|
||||||
```
|
```
|
||||||
|
--->
|
||||||
|
|
||||||
## Running Unit Tests
|
## Running Unit Tests
|
||||||
|
|
||||||
The test app is an ordinary NativeScript app that logs the test results as it go.
|
```
|
||||||
After the [initial setup](#initial-setup) you can run the tests with:
|
cd ./tests
|
||||||
|
tns run android| ios
|
||||||
```bash
|
|
||||||
# Make sure TypeScript is transpiled
|
|
||||||
tsc
|
|
||||||
|
|
||||||
# Run the tests app
|
|
||||||
tns run ios --path tests
|
|
||||||
tns run android --path tests
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Running the Test App
|
## Running the Test App
|
||||||
|
@ -59,7 +59,7 @@ A test will fail if assert is not satisfied or if an error is thrown during exec
|
|||||||
There is a large set of asserting functions available in the [`tests/app/TKUnit.ts`](tests/app/TKUnit.ts) module. We recommend using those in your tests.
|
There is a large set of asserting functions available in the [`tests/app/TKUnit.ts`](tests/app/TKUnit.ts) module. We recommend using those in your tests.
|
||||||
|
|
||||||
```typescript
|
```typescript
|
||||||
import * as TKUnit from "../TKUnit";
|
import * as TKUnit from "../tk-unit";
|
||||||
|
|
||||||
export function testSomethingWorksFast() {
|
export function testSomethingWorksFast() {
|
||||||
let arr = [1, 2, 3];
|
let arr = [1, 2, 3];
|
||||||
|
@ -2,13 +2,17 @@
|
|||||||
|
|
||||||
// Uncomment to add recyclerview-v7 dependency
|
// Uncomment to add recyclerview-v7 dependency
|
||||||
//dependencies {
|
//dependencies {
|
||||||
// compile 'com.android.support:recyclerview-v7:+'
|
// implementation 'com.android.support:recyclerview-v7:+'
|
||||||
//}
|
//}
|
||||||
|
|
||||||
|
// If you want to add something to be applied before applying plugins' include.gradle files
|
||||||
|
// e.g. project.ext.googlePlayServicesVersion = "15.0.1"
|
||||||
|
// create a file named before-plugins.gradle in the current directory and place it there
|
||||||
|
|
||||||
android {
|
android {
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
|
minSdkVersion 17
|
||||||
generatedDensities = []
|
generatedDensities = []
|
||||||
applicationId = "org.nativescript.apps"
|
|
||||||
}
|
}
|
||||||
aaptOptions {
|
aaptOptions {
|
||||||
additionalParameters "--no-version-vectors"
|
additionalParameters "--no-version-vectors"
|
||||||
|
Before Width: | Height: | Size: 6.0 KiB |
Before Width: | Height: | Size: 7.4 KiB |
@ -10,42 +10,27 @@
|
|||||||
android:largeScreens="true"
|
android:largeScreens="true"
|
||||||
android:xlargeScreens="true"/>
|
android:xlargeScreens="true"/>
|
||||||
|
|
||||||
<uses-sdk
|
|
||||||
android:minSdkVersion="17"
|
|
||||||
android:targetSdkVersion="__APILEVEL__"/>
|
|
||||||
|
|
||||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
|
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
|
||||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
||||||
<uses-permission android:name="android.permission.INTERNET"/>
|
<uses-permission android:name="android.permission.INTERNET"/>
|
||||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
|
||||||
|
|
||||||
<application
|
<application
|
||||||
android:name="com.tns.NativeScriptApplication"
|
android:name="com.tns.NativeScriptApplication"
|
||||||
android:allowBackup="true"
|
android:allowBackup="true"
|
||||||
android:icon="@drawable/icon"
|
android:icon="@drawable/icon"
|
||||||
android:label="@string/app_name"
|
android:label="@string/app_name"
|
||||||
android:theme="@style/AppTheme"
|
android:theme="@style/AppTheme">
|
||||||
android:usesCleartextTraffic="true" >
|
|
||||||
<meta-data android:name="debugLayouts" android:value="true" />
|
|
||||||
|
|
||||||
<provider
|
|
||||||
android:name="android.support.v4.content.FileProvider"
|
|
||||||
android:authorities="org.nativescript.apps.provider"
|
|
||||||
android:exported="false"
|
|
||||||
android:grantUriPermissions="true">
|
|
||||||
<meta-data
|
|
||||||
android:name="android.support.FILE_PROVIDER_PATHS"
|
|
||||||
android:resource="@xml/provider_paths"/>
|
|
||||||
</provider>
|
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name="com.tns.NativeScriptActivity"
|
android:name="com.tns.NativeScriptActivity"
|
||||||
android:label="@string/title_activity_kimera"
|
android:label="@string/title_activity_kimera"
|
||||||
android:configChanges="keyboardHidden|orientation|screenSize">
|
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|smallestScreenSize|screenLayout|locale|uiMode"
|
||||||
|
android:theme="@style/LaunchScreenTheme">
|
||||||
|
|
||||||
|
<meta-data android:name="SET_THEME_ON_LAUNCH" android:resource="@style/AppTheme" />
|
||||||
|
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.MAIN" />
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
|
||||||
<category android:name="android.intent.category.LAUNCHER" />
|
<category android:name="android.intent.category.LAUNCHER" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</activity>
|
</activity>
|
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 6.8 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 669 B After Width: | Height: | Size: 669 B |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 3.4 KiB |
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
@ -0,0 +1,8 @@
|
|||||||
|
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" android:gravity="fill">
|
||||||
|
<item>
|
||||||
|
<bitmap android:gravity="fill" android:src="@drawable/background" />
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<bitmap android:gravity="center" android:src="@drawable/logo" />
|
||||||
|
</item>
|
||||||
|
</layer-list>
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 3.8 KiB |
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 3.4 KiB |
Before Width: | Height: | Size: 5.1 KiB After Width: | Height: | Size: 5.1 KiB |
Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 5.2 KiB |
Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 5.2 KiB |
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 5.0 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 5.3 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 54 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 116 KiB |
After Width: | Height: | Size: 3.9 KiB |
After Width: | Height: | Size: 74 KiB |
After Width: | Height: | Size: 193 KiB |
@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
<color name="ns_accent">#3d5afe</color>
|
||||||
|
</resources>
|
@ -0,0 +1,23 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
|
||||||
|
<!-- Application theme -->
|
||||||
|
<style name="AppTheme" parent="AppThemeBase">
|
||||||
|
<item name="android:datePickerStyle">@style/SpinnerDatePicker</item>
|
||||||
|
<item name="android:timePickerStyle">@style/SpinnerTimePicker</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<!-- Default style for DatePicker - in spinner mode -->
|
||||||
|
<style name="SpinnerDatePicker" parent="android:Widget.Material.Light.DatePicker">
|
||||||
|
<item name="android:datePickerMode">spinner</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<!-- Default style for TimePicker - in spinner mode -->
|
||||||
|
<style name="SpinnerTimePicker" parent="android:Widget.Material.Light.TimePicker">
|
||||||
|
<item name="android:timePickerMode">spinner</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style name="NativeScriptToolbarStyle" parent="NativeScriptToolbarStyleBase">
|
||||||
|
<item name="android:elevation">4dp</item>
|
||||||
|
</style>
|
||||||
|
</resources>
|
@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
<color name="ns_primary">#F5F5F5</color>
|
||||||
|
<color name="ns_primaryDark">#757575</color>
|
||||||
|
<color name="ns_accent">#33B5E5</color>
|
||||||
|
<color name="ns_blue">#272734</color>
|
||||||
|
</resources>
|
@ -0,0 +1,45 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
|
||||||
|
<!-- theme to use FOR launch screen-->
|
||||||
|
<style name="LaunchScreenThemeBase" parent="Theme.AppCompat.Light.NoActionBar">
|
||||||
|
<item name="toolbarStyle">@style/NativeScriptToolbarStyle</item>
|
||||||
|
|
||||||
|
<item name="colorPrimary">@color/ns_primary</item>
|
||||||
|
<item name="colorPrimaryDark">@color/ns_primaryDark</item>
|
||||||
|
<item name="colorAccent">@color/ns_accent</item>
|
||||||
|
|
||||||
|
<item name="android:windowBackground">@drawable/splash_screen</item>
|
||||||
|
|
||||||
|
<item name="android:windowActionBarOverlay">true</item>
|
||||||
|
<item name="android:windowTranslucentStatus">true</item>
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style name="LaunchScreenTheme" parent="LaunchScreenThemeBase">
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<!-- theme to use AFTER launch screen is loaded-->
|
||||||
|
<style name="AppThemeBase" parent="Theme.AppCompat.Light.NoActionBar">
|
||||||
|
<item name="toolbarStyle">@style/NativeScriptToolbarStyle</item>
|
||||||
|
|
||||||
|
<item name="colorPrimary">@color/ns_primary</item>
|
||||||
|
<item name="colorPrimaryDark">@color/ns_primaryDark</item>
|
||||||
|
<item name="colorAccent">@color/ns_accent</item>
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style name="AppTheme" parent="AppThemeBase">
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<!-- theme for action-bar -->
|
||||||
|
<style name="NativeScriptToolbarStyleBase" parent="Widget.AppCompat.Toolbar">
|
||||||
|
<item name="android:background">@color/ns_primary</item>
|
||||||
|
<item name="theme">@style/ThemeOverlay.AppCompat.ActionBar</item>
|
||||||
|
<item name="popupTheme">@style/ThemeOverlay.AppCompat</item>
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style name="NativeScriptToolbarStyle" parent="NativeScriptToolbarStyleBase">
|
||||||
|
</style>
|
||||||
|
</resources>
|
@ -1,5 +1,17 @@
|
|||||||
{
|
{
|
||||||
"images" : [
|
"images" : [
|
||||||
|
{
|
||||||
|
"size" : "20x20",
|
||||||
|
"idiom" : "iphone",
|
||||||
|
"filename" : "icon-20@2x.png",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "20x20",
|
||||||
|
"idiom" : "iphone",
|
||||||
|
"filename" : "icon-20@3x.png",
|
||||||
|
"scale" : "3x"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"size" : "29x29",
|
"size" : "29x29",
|
||||||
"idiom" : "iphone",
|
"idiom" : "iphone",
|
||||||
@ -30,18 +42,6 @@
|
|||||||
"filename" : "icon-40@3x.png",
|
"filename" : "icon-40@3x.png",
|
||||||
"scale" : "3x"
|
"scale" : "3x"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"size" : "57x57",
|
|
||||||
"idiom" : "iphone",
|
|
||||||
"filename" : "icon-57.png",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"size" : "57x57",
|
|
||||||
"idiom" : "iphone",
|
|
||||||
"filename" : "icon-57@2x.png",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"size" : "60x60",
|
"size" : "60x60",
|
||||||
"idiom" : "iphone",
|
"idiom" : "iphone",
|
||||||
@ -54,6 +54,18 @@
|
|||||||
"filename" : "icon-60@3x.png",
|
"filename" : "icon-60@3x.png",
|
||||||
"scale" : "3x"
|
"scale" : "3x"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"size" : "20x20",
|
||||||
|
"idiom" : "ipad",
|
||||||
|
"filename" : "icon-20.png",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "20x20",
|
||||||
|
"idiom" : "ipad",
|
||||||
|
"filename" : "icon-20@2x.png",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"size" : "29x29",
|
"size" : "29x29",
|
||||||
"idiom" : "ipad",
|
"idiom" : "ipad",
|
||||||
@ -78,30 +90,6 @@
|
|||||||
"filename" : "icon-40@2x.png",
|
"filename" : "icon-40@2x.png",
|
||||||
"scale" : "2x"
|
"scale" : "2x"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"size" : "50x50",
|
|
||||||
"idiom" : "ipad",
|
|
||||||
"filename" : "icon-50.png",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"size" : "50x50",
|
|
||||||
"idiom" : "ipad",
|
|
||||||
"filename" : "icon-50@2x.png",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"size" : "72x72",
|
|
||||||
"idiom" : "ipad",
|
|
||||||
"filename" : "icon-72.png",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"size" : "72x72",
|
|
||||||
"idiom" : "ipad",
|
|
||||||
"filename" : "icon-72@2x.png",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"size" : "76x76",
|
"size" : "76x76",
|
||||||
"idiom" : "ipad",
|
"idiom" : "ipad",
|
||||||
@ -119,6 +107,12 @@
|
|||||||
"idiom" : "ipad",
|
"idiom" : "ipad",
|
||||||
"filename" : "icon-83.5@2x.png",
|
"filename" : "icon-83.5@2x.png",
|
||||||
"scale" : "2x"
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "1024x1024",
|
||||||
|
"idiom" : "ios-marketing",
|
||||||
|
"filename" : "icon-1024.png",
|
||||||
|
"scale" : "1x"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"info" : {
|
"info" : {
|
||||||
|
After Width: | Height: | Size: 99 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 3.6 KiB |
After Width: | Height: | Size: 6.7 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 4.7 KiB |
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 9.2 KiB |
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 7.6 KiB |
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 7.2 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 41 KiB |
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 7.2 KiB |
Before Width: | Height: | Size: 9.8 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 9.7 KiB After Width: | Height: | Size: 28 KiB |
@ -1,5 +1,41 @@
|
|||||||
{
|
{
|
||||||
"images" : [
|
"images" : [
|
||||||
|
{
|
||||||
|
"extent" : "full-screen",
|
||||||
|
"idiom" : "iphone",
|
||||||
|
"subtype" : "2688h",
|
||||||
|
"filename" : "Default-Portrait-XS-Max.png",
|
||||||
|
"minimum-system-version" : "12.0",
|
||||||
|
"orientation" : "portrait",
|
||||||
|
"scale" : "3x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"extent" : "full-screen",
|
||||||
|
"idiom" : "iphone",
|
||||||
|
"subtype" : "2688h",
|
||||||
|
"filename" : "Default-Landscape-XS-Max.png",
|
||||||
|
"minimum-system-version" : "12.0",
|
||||||
|
"orientation" : "landscape",
|
||||||
|
"scale" : "3x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"extent" : "full-screen",
|
||||||
|
"idiom" : "iphone",
|
||||||
|
"subtype" : "1792h",
|
||||||
|
"filename" : "Default-Portrait-XR.png",
|
||||||
|
"minimum-system-version" : "12.0",
|
||||||
|
"orientation" : "portrait",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"extent" : "full-screen",
|
||||||
|
"idiom" : "iphone",
|
||||||
|
"subtype" : "1792h",
|
||||||
|
"filename" : "Default-Landscape-XR.png",
|
||||||
|
"minimum-system-version" : "12.0",
|
||||||
|
"orientation" : "landscape",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"extent" : "full-screen",
|
"extent" : "full-screen",
|
||||||
"idiom" : "iphone",
|
"idiom" : "iphone",
|
||||||
@ -10,12 +46,12 @@
|
|||||||
"scale" : "3x"
|
"scale" : "3x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"orientation" : "landscape",
|
|
||||||
"idiom" : "iphone",
|
|
||||||
"extent" : "full-screen",
|
"extent" : "full-screen",
|
||||||
|
"idiom" : "iphone",
|
||||||
|
"subtype" : "2436h",
|
||||||
"filename" : "Default-Landscape-X.png",
|
"filename" : "Default-Landscape-X.png",
|
||||||
"minimum-system-version" : "11.0",
|
"minimum-system-version" : "11.0",
|
||||||
"subtype" : "2436h",
|
"orientation" : "landscape",
|
||||||
"scale" : "3x"
|
"scale" : "3x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
After Width: | Height: | Size: 43 KiB |
After Width: | Height: | Size: 72 KiB |
After Width: | Height: | Size: 43 KiB |
After Width: | Height: | Size: 73 KiB |
@ -12,6 +12,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"idiom" : "universal",
|
"idiom" : "universal",
|
||||||
|
"filename" : "LaunchScreen-AspectFill@3x.png",
|
||||||
"scale" : "3x"
|
"scale" : "3x"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
After Width: | Height: | Size: 34 KiB |
@ -12,6 +12,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"idiom" : "universal",
|
"idiom" : "universal",
|
||||||
|
"filename" : "LaunchScreen-Center@3x.png",
|
||||||
"scale" : "3x"
|
"scale" : "3x"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
BIN
apps/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center@3x.png
vendored
Normal file
After Width: | Height: | Size: 92 KiB |
@ -43,10 +43,5 @@
|
|||||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||||
</array>
|
</array>
|
||||||
<key>NSAppTransportSecurity</key>
|
|
||||||
<dict>
|
|
||||||
<key>NSAllowsArbitraryLoads</key>
|
|
||||||
<true/>
|
|
||||||
</dict>
|
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
@ -1,8 +1,12 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10116" systemVersion="15F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" initialViewController="01J-lp-oVM">
|
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13771" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
|
||||||
|
<device id="retina5_9" orientation="portrait">
|
||||||
|
<adaptation id="fullscreen"/>
|
||||||
|
</device>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="iOS"/>
|
<deployment identifier="iOS"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13772"/>
|
||||||
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<scenes>
|
<scenes>
|
||||||
<!--View Controller-->
|
<!--View Controller-->
|
||||||
@ -14,36 +18,36 @@
|
|||||||
<viewControllerLayoutGuide type="bottom" id="xb3-aO-Qok"/>
|
<viewControllerLayoutGuide type="bottom" id="xb3-aO-Qok"/>
|
||||||
</layoutGuides>
|
</layoutGuides>
|
||||||
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
|
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
|
<rect key="frame" x="0.0" y="0.0" width="375" height="812"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<imageView userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="LaunchScreen.AspectFill" translatesAutoresizingMaskIntoConstraints="NO" id="wtH-rr-YfP">
|
<imageView userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="LaunchScreen.AspectFill" translatesAutoresizingMaskIntoConstraints="NO" id="wtH-rr-YfP">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
|
<rect key="frame" x="0.0" y="0.0" width="375" height="812"/>
|
||||||
</imageView>
|
</imageView>
|
||||||
<imageView userInteractionEnabled="NO" contentMode="center" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="LaunchScreen.Center" translatesAutoresizingMaskIntoConstraints="NO" id="s1z-aa-wYv">
|
<imageView userInteractionEnabled="NO" contentMode="center" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="LaunchScreen.Center" translatesAutoresizingMaskIntoConstraints="NO" id="s1z-aa-wYv">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
|
<rect key="frame" x="0.0" y="150" width="375" height="512"/>
|
||||||
</imageView>
|
</imageView>
|
||||||
</subviews>
|
</subviews>
|
||||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
|
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstItem="xb3-aO-Qok" firstAttribute="top" secondItem="wtH-rr-YfP" secondAttribute="bottom" id="5FO-pR-qKb"/>
|
<constraint firstAttribute="trailing" secondItem="s1z-aa-wYv" secondAttribute="trailing" id="4Rf-kf-vql"/>
|
||||||
|
<constraint firstAttribute="bottom" secondItem="wtH-rr-YfP" secondAttribute="bottom" id="5CS-At-4ka"/>
|
||||||
<constraint firstItem="wtH-rr-YfP" firstAttribute="top" secondItem="Ze5-6b-2t3" secondAttribute="top" id="Awn-b8-xf1"/>
|
<constraint firstItem="wtH-rr-YfP" firstAttribute="top" secondItem="Ze5-6b-2t3" secondAttribute="top" id="Awn-b8-xf1"/>
|
||||||
<constraint firstItem="s1z-aa-wYv" firstAttribute="top" secondItem="Ze5-6b-2t3" secondAttribute="top" id="CiP-yX-1sg"/>
|
<constraint firstItem="s1z-aa-wYv" firstAttribute="leading" secondItem="Ze5-6b-2t3" secondAttribute="leading" id="BpJ-vb-eKA"/>
|
||||||
|
<constraint firstItem="s1z-aa-wYv" firstAttribute="trailing" secondItem="wtH-rr-YfP" secondAttribute="trailing" id="QIM-7J-OZz"/>
|
||||||
<constraint firstAttribute="trailing" secondItem="wtH-rr-YfP" secondAttribute="trailing" id="RXg-rW-UK8"/>
|
<constraint firstAttribute="trailing" secondItem="wtH-rr-YfP" secondAttribute="trailing" id="RXg-rW-UK8"/>
|
||||||
<constraint firstItem="s1z-aa-wYv" firstAttribute="leading" secondItem="Ze5-6b-2t3" secondAttribute="leading" id="agC-wa-3bd"/>
|
<constraint firstItem="s1z-aa-wYv" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" id="Rcp-LG-48z"/>
|
||||||
<constraint firstItem="wtH-rr-YfP" firstAttribute="leading" secondItem="Ze5-6b-2t3" secondAttribute="leading" id="cch-8E-tYu"/>
|
<constraint firstItem="wtH-rr-YfP" firstAttribute="leading" secondItem="Ze5-6b-2t3" secondAttribute="leading" id="cch-8E-tYu"/>
|
||||||
<constraint firstItem="xb3-aO-Qok" firstAttribute="top" secondItem="s1z-aa-wYv" secondAttribute="bottom" id="fNc-Ro-KaG"/>
|
|
||||||
<constraint firstAttribute="trailing" secondItem="s1z-aa-wYv" secondAttribute="trailing" id="qoI-OC-Zk7"/>
|
|
||||||
</constraints>
|
</constraints>
|
||||||
</view>
|
</view>
|
||||||
</viewController>
|
</viewController>
|
||||||
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||||
</objects>
|
</objects>
|
||||||
<point key="canvasLocation" x="510" y="238"/>
|
<point key="canvasLocation" x="509.60000000000002" y="237.93103448275863"/>
|
||||||
</scene>
|
</scene>
|
||||||
</scenes>
|
</scenes>
|
||||||
<resources>
|
<resources>
|
||||||
<image name="LaunchScreen.AspectFill" width="768" height="1024"/>
|
<image name="LaunchScreen.AspectFill" width="768" height="1024"/>
|
||||||
<image name="LaunchScreen.Center" width="40" height="40"/>
|
<image name="LaunchScreen.Center" width="384" height="512"/>
|
||||||
</resources>
|
</resources>
|
||||||
</document>
|
</document>
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
// You can add custom settings here
|
// You can add custom settings here
|
||||||
// for example you can uncomment the following line to force distribution code signing
|
// for example you can uncomment the following line to force distribution code signing
|
||||||
// CODE_SIGN_IDENTITY = iPhone Distribution
|
// CODE_SIGN_IDENTITY = iPhone Distribution
|
||||||
|
// To build for device with XCode 8 you need to specify your development team. More info: https://developer.apple.com/library/prerelease/content/releasenotes/DeveloperTools/RN-Xcode/Introduction.html
|
||||||
|
// DEVELOPMENT_TEAM = YOUR_TEAM_ID;
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
|
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
|
||||||
|
1
apps/app/app.css
Normal file
@ -0,0 +1 @@
|
|||||||
|
/* Just here to avoid startup warnings */
|
1
apps/app/cuteness.io/app-root.xml
Normal file
@ -0,0 +1 @@
|
|||||||
|
<Frame defaultPage="cuteness.io/main-page" />
|
1
apps/app/cuteness.io/app.css
Normal file
@ -0,0 +1 @@
|
|||||||
|
/* Add app css here */
|
@ -1,4 +1,6 @@
|
|||||||
import * as application from "tns-core-modules/application";
|
import * as application from "tns-core-modules/application";
|
||||||
|
|
||||||
// Start the application
|
// Start the application
|
||||||
application.start({ moduleName: "cuteness.io/main-page" });
|
global.registerModule("cuteness.io/app.css", () => require("~/cuteness.io/app.css"));
|
||||||
|
application.setCssFileName("cuteness.io/app.css");
|
||||||
|
application.run({ moduleName: "cuteness.io/app-root" });
|
||||||
|
@ -9,7 +9,7 @@ import * as frame from "tns-core-modules/ui/frame";
|
|||||||
|
|
||||||
export function pageLoaded(args: EventData) {
|
export function pageLoaded(args: EventData) {
|
||||||
let page = <Page>args.object;
|
let page = <Page>args.object;
|
||||||
let view = require("ui/core/view");
|
let view = require("tns-core-modules/ui/core/view");
|
||||||
|
|
||||||
let wrapLayout = view.getViewById(page, "wrapLayoutWithExamples");
|
let wrapLayout = view.getViewById(page, "wrapLayoutWithExamples");
|
||||||
|
|
||||||
|
@ -29,8 +29,8 @@ export function navigatingTo(args) {
|
|||||||
|
|
||||||
application.android.on(application.AndroidApplication.activityRequestPermissionsEvent, handler);
|
application.android.on(application.AndroidApplication.activityRequestPermissionsEvent, handler);
|
||||||
|
|
||||||
if ((<any>android.support.v4.content.ContextCompat).checkSelfPermission(application.android.currentContext, (<any>android).Manifest.permission.WRITE_EXTERNAL_STORAGE) !== android.content.pm.PackageManager.PERMISSION_GRANTED) {
|
if ((<any>androidx.core.content.ContextCompat).checkSelfPermission(application.android.currentContext, (<any>android).Manifest.permission.WRITE_EXTERNAL_STORAGE) !== android.content.pm.PackageManager.PERMISSION_GRANTED) {
|
||||||
(<any>android.support.v4.app.ActivityCompat).requestPermissions(application.android.currentContext, [(<any>android).Manifest.permission.WRITE_EXTERNAL_STORAGE], 1234);
|
(<any>androidx.core.app.ActivityCompat).requestPermissions(application.android.currentContext, [(<any>android).Manifest.permission.WRITE_EXTERNAL_STORAGE], 1234);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
console.log("Permission for write to external storage GRANTED!")
|
console.log("Permission for write to external storage GRANTED!")
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import * as frame from "tns-core-modules/ui/frame";
|
import * as frame from "tns-core-modules/ui/frame";
|
||||||
|
|
||||||
export function navigate(args) {
|
export function navigate(args) {
|
||||||
frame.topmost().navigate("ui-tests-app/action-bar/clean");
|
frame.topmost().navigate("ui-tests-app/action-bar/clean-page");
|
||||||
}
|
}
|
5
apps/app/ui-tests-app/action-bar/all-page.ts
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
import * as frame from "tns-core-modules/ui/frame";
|
||||||
|
|
||||||
|
export function navigate() {
|
||||||
|
frame.topmost().navigate("ui-tests-app/action-bar/clean-page");
|
||||||
|
}
|
3
apps/app/ui-tests-app/action-bar/background-css-page.css
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
.action {
|
||||||
|
background-color: red;
|
||||||
|
}
|
@ -1,5 +1,5 @@
|
|||||||
import * as frame from "tns-core-modules/ui/frame";
|
import * as frame from "tns-core-modules/ui/frame";
|
||||||
|
|
||||||
export function navigate(args) {
|
export function navigate(args) {
|
||||||
frame.topmost().navigate("ui-tests-app/action-bar/clean");
|
frame.topmost().navigate("ui-tests-app/action-bar/clean-page");
|
||||||
}
|
}
|
@ -1,3 +0,0 @@
|
|||||||
.action {
|
|
||||||
background-color: red;
|
|
||||||
}
|
|
5
apps/app/ui-tests-app/action-bar/background-page.ts
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
import * as frame from "tns-core-modules/ui/frame";
|
||||||
|
|
||||||
|
export function navigate() {
|
||||||
|
frame.topmost().navigate("ui-tests-app/action-bar/clean-page");
|
||||||
|
}
|