├── app ├── fonts │ └── .gitkeep ├── components │ ├── index.js │ └── ItemList.vue ├── assets │ └── images │ │ ├── 0.jpg │ │ ├── 1.jpg │ │ ├── 2.jpg │ │ ├── 3.jpg │ │ ├── 4.jpg │ │ ├── 5.jpg │ │ ├── pulled.jpg │ │ └── NativeScript-Vue.png ├── App_Resources │ ├── iOS │ │ ├── Assets.xcassets │ │ │ ├── Contents.json │ │ │ ├── AppIcon.appiconset │ │ │ │ ├── icon-29.png │ │ │ │ ├── icon-40.png │ │ │ │ ├── icon-76.png │ │ │ │ ├── icon-1024.png │ │ │ │ ├── icon-29@2x.png │ │ │ │ ├── icon-29@3x.png │ │ │ │ ├── icon-40@2x.png │ │ │ │ ├── icon-40@3x.png │ │ │ │ ├── icon-60@2x.png │ │ │ │ ├── icon-60@3x.png │ │ │ │ ├── icon-76@2x.png │ │ │ │ ├── icon-83.5@2x.png │ │ │ │ └── Contents.json │ │ │ ├── LaunchImage.launchimage │ │ │ │ ├── Default.png │ │ │ │ ├── Default@2x.png │ │ │ │ ├── Default-1125h.png │ │ │ │ ├── Default-568h@2x.png │ │ │ │ ├── Default-667h@2x.png │ │ │ │ ├── Default-736h@3x.png │ │ │ │ ├── Default-Landscape.png │ │ │ │ ├── Default-Portrait.png │ │ │ │ ├── Default-Landscape-X.png │ │ │ │ ├── Default-Landscape@2x.png │ │ │ │ ├── Default-Landscape@3x.png │ │ │ │ ├── Default-Portrait@2x.png │ │ │ │ └── Contents.json │ │ │ ├── LaunchScreen.Center.imageset │ │ │ │ ├── LaunchScreen-Center.png │ │ │ │ ├── LaunchScreen-Center@2x.png │ │ │ │ └── Contents.json │ │ │ └── LaunchScreen.AspectFill.imageset │ │ │ │ ├── LaunchScreen-AspectFill.png │ │ │ │ ├── LaunchScreen-AspectFill@2x.png │ │ │ │ └── Contents.json │ │ ├── ic_menu@1x.png │ │ ├── ic_menu@2x.png │ │ ├── ic_menu@3x.png │ │ ├── build.xcconfig │ │ ├── Info.plist │ │ └── LaunchScreen.storyboard │ └── Android │ │ ├── src │ │ └── main │ │ │ ├── res │ │ │ ├── values-v21 │ │ │ │ ├── colors.xml │ │ │ │ ├── strings.xml │ │ │ │ └── styles.xml │ │ │ ├── drawable-hdpi │ │ │ │ ├── icon.png │ │ │ │ ├── logo.png │ │ │ │ ├── ic_menu.png │ │ │ │ └── background.png │ │ │ ├── drawable-ldpi │ │ │ │ ├── icon.png │ │ │ │ ├── logo.png │ │ │ │ └── background.png │ │ │ ├── drawable-mdpi │ │ │ │ ├── icon.png │ │ │ │ ├── logo.png │ │ │ │ ├── ic_menu.png │ │ │ │ └── background.png │ │ │ ├── drawable-xhdpi │ │ │ │ ├── icon.png │ │ │ │ ├── logo.png │ │ │ │ ├── ic_menu.png │ │ │ │ └── background.png │ │ │ ├── drawable-xxhdpi │ │ │ │ ├── icon.png │ │ │ │ ├── logo.png │ │ │ │ ├── ic_menu.png │ │ │ │ └── background.png │ │ │ ├── drawable-xxxhdpi │ │ │ │ ├── icon.png │ │ │ │ ├── logo.png │ │ │ │ ├── ic_menu.png │ │ │ │ └── background.png │ │ │ ├── values │ │ │ │ ├── strings.xml │ │ │ │ ├── colors.xml │ │ │ │ └── styles.xml │ │ │ └── drawable-nodpi │ │ │ │ └── splash_screen.xml │ │ │ └── AndroidManifest.xml │ │ └── app.gradle ├── package.json ├── views │ ├── index.js │ ├── Home.vue │ ├── Chart.vue │ ├── List.vue │ ├── Calendar.vue │ ├── Root.vue │ └── DataForm.vue ├── main.js ├── styles.scss └── data.js ├── babel.config.js ├── vue-hot-reload-api-patcher.js ├── README.md ├── package.json └── webpack.config.js /app/fonts/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/components/index.js: -------------------------------------------------------------------------------- 1 | export { default as ItemList } from './ItemList' 2 | -------------------------------------------------------------------------------- /app/assets/images/0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/assets/images/0.jpg -------------------------------------------------------------------------------- /app/assets/images/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/assets/images/1.jpg -------------------------------------------------------------------------------- /app/assets/images/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/assets/images/2.jpg -------------------------------------------------------------------------------- /app/assets/images/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/assets/images/3.jpg -------------------------------------------------------------------------------- /app/assets/images/4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/assets/images/4.jpg -------------------------------------------------------------------------------- /app/assets/images/5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/assets/images/5.jpg -------------------------------------------------------------------------------- /app/assets/images/pulled.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/assets/images/pulled.jpg -------------------------------------------------------------------------------- /app/App_Resources/iOS/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /app/App_Resources/iOS/ic_menu@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/iOS/ic_menu@1x.png -------------------------------------------------------------------------------- /app/App_Resources/iOS/ic_menu@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/iOS/ic_menu@2x.png -------------------------------------------------------------------------------- /app/App_Resources/iOS/ic_menu@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/iOS/ic_menu@3x.png -------------------------------------------------------------------------------- /app/assets/images/NativeScript-Vue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/assets/images/NativeScript-Vue.png -------------------------------------------------------------------------------- /app/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "android": { 3 | "v8Flags": "--expose_gc" 4 | }, 5 | "main": "main", 6 | "name": "ns-ui-vue-demo", 7 | "version": "1.0.0" 8 | } 9 | -------------------------------------------------------------------------------- /app/App_Resources/Android/src/main/res/values-v21/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #3d5afe 4 | -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function (api) { 2 | api.cache(true) 3 | 4 | return { 5 | presets: [['@babel/env', { targets: { esmodules: true } }]], 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /app/App_Resources/Android/src/main/res/drawable-hdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/Android/src/main/res/drawable-hdpi/icon.png -------------------------------------------------------------------------------- /app/App_Resources/Android/src/main/res/drawable-hdpi/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/Android/src/main/res/drawable-hdpi/logo.png -------------------------------------------------------------------------------- /app/App_Resources/Android/src/main/res/drawable-ldpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/Android/src/main/res/drawable-ldpi/icon.png -------------------------------------------------------------------------------- /app/App_Resources/Android/src/main/res/drawable-ldpi/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/Android/src/main/res/drawable-ldpi/logo.png -------------------------------------------------------------------------------- /app/App_Resources/Android/src/main/res/drawable-mdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/Android/src/main/res/drawable-mdpi/icon.png -------------------------------------------------------------------------------- /app/App_Resources/Android/src/main/res/drawable-mdpi/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/Android/src/main/res/drawable-mdpi/logo.png -------------------------------------------------------------------------------- /app/App_Resources/Android/src/main/res/drawable-hdpi/ic_menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/Android/src/main/res/drawable-hdpi/ic_menu.png -------------------------------------------------------------------------------- /app/App_Resources/Android/src/main/res/drawable-mdpi/ic_menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/Android/src/main/res/drawable-mdpi/ic_menu.png -------------------------------------------------------------------------------- /app/App_Resources/Android/src/main/res/drawable-xhdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/Android/src/main/res/drawable-xhdpi/icon.png -------------------------------------------------------------------------------- /app/App_Resources/Android/src/main/res/drawable-xhdpi/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/Android/src/main/res/drawable-xhdpi/logo.png -------------------------------------------------------------------------------- /app/App_Resources/Android/src/main/res/drawable-xxhdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/Android/src/main/res/drawable-xxhdpi/icon.png -------------------------------------------------------------------------------- /app/App_Resources/Android/src/main/res/drawable-xxhdpi/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/Android/src/main/res/drawable-xxhdpi/logo.png -------------------------------------------------------------------------------- /app/App_Resources/Android/src/main/res/drawable-xxxhdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/Android/src/main/res/drawable-xxxhdpi/icon.png -------------------------------------------------------------------------------- /app/App_Resources/Android/src/main/res/drawable-xxxhdpi/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/Android/src/main/res/drawable-xxxhdpi/logo.png -------------------------------------------------------------------------------- /app/App_Resources/Android/src/main/res/drawable-xhdpi/ic_menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/Android/src/main/res/drawable-xhdpi/ic_menu.png -------------------------------------------------------------------------------- /app/App_Resources/Android/src/main/res/drawable-xxhdpi/ic_menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/Android/src/main/res/drawable-xxhdpi/ic_menu.png -------------------------------------------------------------------------------- /app/App_Resources/Android/src/main/res/drawable-hdpi/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/Android/src/main/res/drawable-hdpi/background.png -------------------------------------------------------------------------------- /app/App_Resources/Android/src/main/res/drawable-ldpi/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/Android/src/main/res/drawable-ldpi/background.png -------------------------------------------------------------------------------- /app/App_Resources/Android/src/main/res/drawable-mdpi/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/Android/src/main/res/drawable-mdpi/background.png -------------------------------------------------------------------------------- /app/App_Resources/Android/src/main/res/drawable-xhdpi/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/Android/src/main/res/drawable-xhdpi/background.png -------------------------------------------------------------------------------- /app/App_Resources/Android/src/main/res/drawable-xxhdpi/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/Android/src/main/res/drawable-xxhdpi/background.png -------------------------------------------------------------------------------- /app/App_Resources/Android/src/main/res/drawable-xxxhdpi/ic_menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/Android/src/main/res/drawable-xxxhdpi/ic_menu.png -------------------------------------------------------------------------------- /app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29.png -------------------------------------------------------------------------------- /app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40.png -------------------------------------------------------------------------------- /app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76.png -------------------------------------------------------------------------------- /app/App_Resources/Android/src/main/res/drawable-xxxhdpi/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/Android/src/main/res/drawable-xxxhdpi/background.png -------------------------------------------------------------------------------- /app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-1024.png -------------------------------------------------------------------------------- /app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png -------------------------------------------------------------------------------- /app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png -------------------------------------------------------------------------------- /app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png -------------------------------------------------------------------------------- /app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png -------------------------------------------------------------------------------- /app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png -------------------------------------------------------------------------------- /app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png -------------------------------------------------------------------------------- /app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png -------------------------------------------------------------------------------- /app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png -------------------------------------------------------------------------------- /app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default.png -------------------------------------------------------------------------------- /app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default@2x.png -------------------------------------------------------------------------------- /app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-1125h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-1125h.png -------------------------------------------------------------------------------- /app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-568h@2x.png -------------------------------------------------------------------------------- /app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-667h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-667h@2x.png -------------------------------------------------------------------------------- /app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-736h@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-736h@3x.png -------------------------------------------------------------------------------- /app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape.png -------------------------------------------------------------------------------- /app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Portrait.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Portrait.png -------------------------------------------------------------------------------- /vue-hot-reload-api-patcher.js: -------------------------------------------------------------------------------- 1 | // TODO: Removed the file once https://github.com/vuejs/vue-hot-reload-api/pull/70 is accepted 2 | module.exports = function (source) { 3 | return `var window = {}; 4 | ${source};`; 5 | }; 6 | -------------------------------------------------------------------------------- /app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape-X.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape-X.png -------------------------------------------------------------------------------- /app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape@2x.png -------------------------------------------------------------------------------- /app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape@3x.png -------------------------------------------------------------------------------- /app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Portrait@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Portrait@2x.png -------------------------------------------------------------------------------- /app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center.png -------------------------------------------------------------------------------- /app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center@2x.png -------------------------------------------------------------------------------- /app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill.png -------------------------------------------------------------------------------- /app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msaelices/ns-ui-vue-demo/HEAD/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill@2x.png -------------------------------------------------------------------------------- /app/App_Resources/Android/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | NativeScript UI Vue Demo App 4 | NativeScript UI Vue Demo App 5 | 6 | -------------------------------------------------------------------------------- /app/App_Resources/Android/src/main/res/values-v21/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | NativeScript UI Vue Demo App 4 | NativeScript UI Vue Demo App 5 | 6 | -------------------------------------------------------------------------------- /app/views/index.js: -------------------------------------------------------------------------------- 1 | export { default as Calendar } from './Calendar' 2 | export { default as Chart } from './Chart' 3 | export { default as DataForm } from './DataForm' 4 | export { default as Home } from './Home' 5 | export { default as List } from './List' 6 | export { default as Root } from './Root' 7 | 8 | -------------------------------------------------------------------------------- /app/App_Resources/Android/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #F5F5F5 4 | #757575 5 | #33B5E5 6 | #272734 7 | -------------------------------------------------------------------------------- /app/App_Resources/Android/app.gradle: -------------------------------------------------------------------------------- 1 | // Add your native dependencies here: 2 | 3 | android { 4 | defaultConfig { 5 | generatedDensities = [] 6 | applicationId = "org.nativescript.application" 7 | } 8 | aaptOptions { 9 | additionalParameters "--no-version-vectors" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /app/App_Resources/Android/src/main/res/drawable-nodpi/splash_screen.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchScreen-Center.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchScreen-Center@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchScreen-AspectFill.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchScreen-AspectFill@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /app/App_Resources/iOS/build.xcconfig: -------------------------------------------------------------------------------- 1 | // You can add custom settings here 2 | // for example you can uncomment the following line to force distribution code signing 3 | // CODE_SIGN_IDENTITY = iPhone Distribution 4 | // 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 5 | // DEVELOPMENT_TEAM = YOUR_TEAM_ID; 6 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 7 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; 8 | 9 | DEVELOPMENT_TEAM = RXT9WNH555 10 | -------------------------------------------------------------------------------- /app/views/Home.vue: -------------------------------------------------------------------------------- 1 | 15 | 16 | 26 | 27 | 29 | -------------------------------------------------------------------------------- /app/views/Chart.vue: -------------------------------------------------------------------------------- 1 | 19 | 20 | 32 | 33 | 35 | -------------------------------------------------------------------------------- /app/App_Resources/Android/src/main/res/values-v21/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 | 11 | 14 | 15 | 16 | 19 | 20 | 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # NativeScript UI Vue Demo App 2 | 3 | > NativeScript UI Vue Demo App 4 | 5 | ## Usage 6 | 7 | ``` bash 8 | # Install dependencies 9 | npm install 10 | 11 | # Build for production 12 | tns build --bundle 13 | 14 | # Build, watch for changes and debug the application 15 | tns debug --bundle 16 | 17 | # Build, watch for changes and run the application 18 | tns run --bundle 19 | ``` 20 | 21 | ## Screencast 22 | 23 | ![ns-ui-demo](https://user-images.githubusercontent.com/136875/46014244-e0ac8a00-c0ce-11e8-87c3-6eb100c936d7.gif) 24 | 25 | 26 | ## Using Vue Devtools 27 | 28 | Vue DevTools will be installed locally when you execute `npm install`, but if you'd like to easily access Vue Devtools, you can install it globally: 29 | 30 | ``` bash 31 | npm install -g @vue/devtools@beta 32 | ``` 33 | 34 | Before running the app, it needs to have started the Vue Devtools: 35 | 36 | ``` bash 37 | # if installed globally 38 | vue-devtools 39 | # or 40 | npx vue-devtools 41 | ``` 42 | 43 | Now you can run the app and you should see the component tree. 44 | -------------------------------------------------------------------------------- /app/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'nativescript-vue' 2 | import VueDevtools from 'nativescript-vue-devtools' 3 | import RadListView from 'nativescript-ui-listview/vue' 4 | import RadCalendar from 'nativescript-ui-calendar/vue' 5 | import RadDataForm from 'nativescript-ui-dataform/vue' 6 | import RadChart from 'nativescript-ui-chart/vue' 7 | import RadSideDrawer from 'nativescript-ui-sidedrawer/vue' 8 | 9 | Vue.use(VueDevtools) 10 | Vue.use(RadListView) 11 | Vue.use(RadCalendar) 12 | Vue.use(RadChart) 13 | Vue.use(RadDataForm) 14 | 15 | import * as comps from './components' 16 | import * as views from './views' 17 | 18 | import './styles.scss' 19 | 20 | const appComponents = [ 21 | comps.ItemList, 22 | views.Calendar, 23 | views.Chart, 24 | views.DataForm, 25 | views.Home, 26 | views.List, 27 | views.Root 28 | ] 29 | 30 | // Bind own components 31 | for (let c of appComponents) { 32 | Vue.component(c.name, c) 33 | } 34 | 35 | // Prints Vue logs when --env.production is *NOT* set while building 36 | Vue.config.silent = (TNS_ENV === 'production') 37 | 38 | new Vue({ 39 | render: h => h(views.Root), 40 | }).$start() 41 | -------------------------------------------------------------------------------- /app/styles.scss: -------------------------------------------------------------------------------- 1 | // NativeScript core theme 2 | // @see https://docs.nativescript.org/ui/theme 3 | @import '~nativescript-theme-core/scss/light'; 4 | 5 | // Override variables here 6 | $secondary: #787e85; 7 | $red: #df2c45; 8 | $green: #53ba82; 9 | $grey: #eeeeee; 10 | $disabled: #787e85; 11 | $headings-color: $primary; 12 | 13 | @import '~nativescript-theme-core/scss/index'; 14 | 15 | // Global SCSS styling 16 | // @see https://docs.nativescript.org/ui/styling 17 | 18 | .page { 19 | align-items: center; 20 | flex-direction: column; 21 | } 22 | 23 | .action-bar { 24 | height: 50; 25 | } 26 | 27 | .item { 28 | padding: 10; 29 | background-color: white; 30 | border-color: $grey; 31 | border-bottom-width: 1; 32 | border-bottom-style: solid; 33 | } 34 | 35 | .big { 36 | font-size: 20; 37 | } 38 | 39 | .thumbnail { 40 | margin-right: 10; 41 | } 42 | 43 | .swipe-item { 44 | color: white; 45 | padding: 16; 46 | } 47 | 48 | .swipe-item.left { 49 | background-color: #240774; 50 | } 51 | 52 | .swipe-item.right { 53 | background-color: #79000a; 54 | } 55 | 56 | .drawer { 57 | padding: 10; 58 | background-color: #333366; 59 | } 60 | 61 | .sideLogo { 62 | margin-bottom: 10; 63 | } 64 | 65 | .sideLabel { 66 | padding: 10; 67 | } 68 | 69 | .sideLightGrayLabel { 70 | background-color: $grey; 71 | } 72 | -------------------------------------------------------------------------------- /app/App_Resources/Android/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /app/views/List.vue: -------------------------------------------------------------------------------- 1 | 20 | 21 | 60 | 61 | 63 | -------------------------------------------------------------------------------- /app/App_Resources/iOS/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | NativeScript UI Vue Demo App 9 | CFBundleExecutable 10 | ${EXECUTABLE_NAME} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0.0 23 | LSRequiresIPhoneOS 24 | 25 | UILaunchStoryboardName 26 | LaunchScreen 27 | UIRequiresFullScreen 28 | 29 | UIRequiredDeviceCapabilities 30 | 31 | armv7 32 | 33 | UISupportedInterfaceOrientations 34 | 35 | UIInterfaceOrientationPortrait 36 | UIInterfaceOrientationLandscapeLeft 37 | UIInterfaceOrientationLandscapeRight 38 | 39 | UISupportedInterfaceOrientations~ipad 40 | 41 | UIInterfaceOrientationPortrait 42 | UIInterfaceOrientationPortraitUpsideDown 43 | UIInterfaceOrientationLandscapeLeft 44 | UIInterfaceOrientationLandscapeRight 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /app/views/Calendar.vue: -------------------------------------------------------------------------------- 1 | 21 | 22 | 54 | 55 | 57 | -------------------------------------------------------------------------------- /app/views/Root.vue: -------------------------------------------------------------------------------- 1 | 28 | 29 | 58 | 59 | 61 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ns-ui-vue-demo", 3 | "version": "1.0.0", 4 | "description": "NativeScript UI Vue Demo App", 5 | "author": "msaelices ", 6 | "license": "MIT", 7 | "nativescript": { 8 | "id": "org.nativescript.application", 9 | "tns-ios": { 10 | "version": "5.0.0" 11 | }, 12 | "tns-android": { 13 | "version": "5.0.0" 14 | } 15 | }, 16 | "dependencies": { 17 | "@vue/devtools": "^5.0.0-beta.3", 18 | "nativescript-socket.io": "^0.9.0", 19 | "nativescript-theme-core": "^1.0.4", 20 | "nativescript-toast": "^1.4.6", 21 | "nativescript-ui-calendar": "^3.10.0", 22 | "nativescript-ui-chart": "^3.11.1", 23 | "nativescript-ui-dataform": "^3.9.1", 24 | "nativescript-ui-listview": "^5.0.0", 25 | "nativescript-ui-sidedrawer": "^4.3.0", 26 | "nativescript-vue": "^2.0.2", 27 | "nativescript-vue-devtools": "^1.0.0", 28 | "tns-core-modules": "^5.0.5" 29 | }, 30 | "devDependencies": { 31 | "@babel/core": "^7.0.0", 32 | "@babel/preset-env": "^7.0.0", 33 | "babel-loader": "^8.0.2", 34 | "babel-traverse": "6.26.0", 35 | "babel-types": "6.26.0", 36 | "babylon": "6.18.0", 37 | "clean-webpack-plugin": "^0.1.19", 38 | "copy-webpack-plugin": "^4.5.2", 39 | "css-hot-loader": "^1.4.2", 40 | "css-loader": "^1.0.0", 41 | "lazy": "1.0.11", 42 | "mini-css-extract-plugin": "^0.4.1", 43 | "nativescript-dev-webpack": "^0.17.0-2018-09-12-01", 44 | "nativescript-vue-template-compiler": "^2.0.0-alpha.3", 45 | "nativescript-worker-loader": "~0.9.0", 46 | "node-sass": "^4.11.0", 47 | "sass-loader": "^7.1.0", 48 | "uglifyjs-webpack-plugin": "~1.2.7", 49 | "vue-loader": "^15.2.6", 50 | "webpack": "^4.16.4", 51 | "webpack-bundle-analyzer": "~2.13.1", 52 | "webpack-cli": "^3.1.0" 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /app/App_Resources/Android/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 17 | 18 | 20 | 21 | 22 | 29 | 30 | 32 | 33 | 34 | 39 | 40 | 42 | 43 | -------------------------------------------------------------------------------- /app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "29x29", 5 | "idiom" : "iphone", 6 | "filename" : "icon-29.png", 7 | "scale" : "1x" 8 | }, 9 | { 10 | "size" : "29x29", 11 | "idiom" : "iphone", 12 | "filename" : "icon-29@2x.png", 13 | "scale" : "2x" 14 | }, 15 | { 16 | "size" : "29x29", 17 | "idiom" : "iphone", 18 | "filename" : "icon-29@3x.png", 19 | "scale" : "3x" 20 | }, 21 | { 22 | "size" : "40x40", 23 | "idiom" : "iphone", 24 | "filename" : "icon-40@2x.png", 25 | "scale" : "2x" 26 | }, 27 | { 28 | "size" : "40x40", 29 | "idiom" : "iphone", 30 | "filename" : "icon-40@3x.png", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "size" : "60x60", 35 | "idiom" : "iphone", 36 | "filename" : "icon-60@2x.png", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "size" : "60x60", 41 | "idiom" : "iphone", 42 | "filename" : "icon-60@3x.png", 43 | "scale" : "3x" 44 | }, 45 | { 46 | "size" : "29x29", 47 | "idiom" : "ipad", 48 | "filename" : "icon-29.png", 49 | "scale" : "1x" 50 | }, 51 | { 52 | "size" : "29x29", 53 | "idiom" : "ipad", 54 | "filename" : "icon-29@2x.png", 55 | "scale" : "2x" 56 | }, 57 | { 58 | "size" : "40x40", 59 | "idiom" : "ipad", 60 | "filename" : "icon-40.png", 61 | "scale" : "1x" 62 | }, 63 | { 64 | "size" : "40x40", 65 | "idiom" : "ipad", 66 | "filename" : "icon-40@2x.png", 67 | "scale" : "2x" 68 | }, 69 | { 70 | "size" : "76x76", 71 | "idiom" : "ipad", 72 | "filename" : "icon-76.png", 73 | "scale" : "1x" 74 | }, 75 | { 76 | "size" : "76x76", 77 | "idiom" : "ipad", 78 | "filename" : "icon-76@2x.png", 79 | "scale" : "2x" 80 | }, 81 | { 82 | "size" : "83.5x83.5", 83 | "idiom" : "ipad", 84 | "filename" : "icon-83.5@2x.png", 85 | "scale" : "2x" 86 | }, 87 | { 88 | "size" : "1024x1024", 89 | "idiom" : "ios-marketing", 90 | "filename" : "icon-1024.png", 91 | "scale" : "1x" 92 | } 93 | ], 94 | "info" : { 95 | "version" : 1, 96 | "author" : "xcode" 97 | } 98 | } -------------------------------------------------------------------------------- /app/data.js: -------------------------------------------------------------------------------- 1 | import { Color } from 'tns-core-modules/color' 2 | import { ObservableArray } from 'tns-core-modules/data/observable-array' 3 | import { CalendarEvent } from 'nativescript-ui-calendar' 4 | 5 | export const getEvents = (count) => { 6 | let now = new Date() 7 | let startDate, endDate, event 8 | let colors = [ 9 | new Color(200, 188, 26, 214), 10 | new Color(220, 255, 109, 130), 11 | new Color(255, 55, 45, 255), 12 | new Color(199, 17, 227, 10), 13 | new Color(255, 255, 54, 3), 14 | ] 15 | let events = new Array() 16 | for (let i = 1; i < count; i++) { 17 | startDate = new Date( 18 | now.getFullYear(), now.getMonth(), i * 2, 1 19 | ) 20 | endDate = new Date( 21 | now.getFullYear(), now.getMonth(), (i * 2), 3 22 | ) 23 | event = new CalendarEvent( 24 | `event ${i}`, startDate, endDate, false, colors[i * 10 % (colors.length - 1)] 25 | ) 26 | events.push(event) 27 | if (i % 3 === 0) { 28 | const event = new CalendarEvent(`second ${i}`, startDate, endDate, true, colors[i * 5 % (colors.length - 1)]) 29 | events.push(event) 30 | } 31 | } 32 | return events 33 | } 34 | 35 | export const getItemList = (count) => { 36 | let itemList = [] 37 | for (let i = 0; i < count; i++) { 38 | itemList.push({ 39 | id: i + 1, 40 | name: `Item ${i + 1}`, 41 | description: `Item ${i + 1} description`, 42 | image: `~/assets/images/${i % 6}.jpg`, 43 | }) 44 | } 45 | return itemList 46 | } 47 | 48 | export const simpleItemList = getItemList(20) 49 | 50 | export const getMovies = () => { 51 | let movies = new Array(); 52 | movies.push({id: 123, name: 'Zootopia'}) 53 | movies.push({id: 217, name: 'Captain America'}) 54 | movies.push({id: 324, name: 'The Jungle Book'}) 55 | return movies; 56 | } 57 | 58 | export class MovieConverter { 59 | 60 | constructor(movies) { 61 | this._movies = movies 62 | } 63 | 64 | convertFrom(id) { 65 | return this._movies.filter((movie) => movie.id === id)[0].name 66 | } 67 | 68 | convertTo(name) { 69 | return this._movies.filter((movie) => movie.name === name)[0].id 70 | } 71 | } 72 | 73 | export const getCountriesData = () => { 74 | return new ObservableArray([ 75 | { Country: 'Germany', Amount: 15 }, 76 | { Country: 'France', Amount: 13 }, 77 | { Country: 'Bulgaria', Amount: 24 }, 78 | { Country: 'Spain', Amount: 11 }, 79 | { Country: 'USA', Amount: 18 } 80 | ]) 81 | } 82 | -------------------------------------------------------------------------------- /app/components/ItemList.vue: -------------------------------------------------------------------------------- 1 | 35 | 36 | 83 | 84 | 86 | 87 | -------------------------------------------------------------------------------- /app/App_Resources/iOS/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /app/views/DataForm.vue: -------------------------------------------------------------------------------- 1 | 17 | 18 | 145 | 146 | 148 | -------------------------------------------------------------------------------- /app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "extent" : "full-screen", 5 | "idiom" : "iphone", 6 | "subtype" : "2436h", 7 | "filename" : "Default-1125h.png", 8 | "minimum-system-version" : "11.0", 9 | "orientation" : "portrait", 10 | "scale" : "3x" 11 | }, 12 | { 13 | "orientation" : "landscape", 14 | "idiom" : "iphone", 15 | "extent" : "full-screen", 16 | "filename" : "Default-Landscape-X.png", 17 | "minimum-system-version" : "11.0", 18 | "subtype" : "2436h", 19 | "scale" : "3x" 20 | }, 21 | { 22 | "extent" : "full-screen", 23 | "idiom" : "iphone", 24 | "subtype" : "736h", 25 | "filename" : "Default-736h@3x.png", 26 | "minimum-system-version" : "8.0", 27 | "orientation" : "portrait", 28 | "scale" : "3x" 29 | }, 30 | { 31 | "extent" : "full-screen", 32 | "idiom" : "iphone", 33 | "subtype" : "736h", 34 | "filename" : "Default-Landscape@3x.png", 35 | "minimum-system-version" : "8.0", 36 | "orientation" : "landscape", 37 | "scale" : "3x" 38 | }, 39 | { 40 | "extent" : "full-screen", 41 | "idiom" : "iphone", 42 | "subtype" : "667h", 43 | "filename" : "Default-667h@2x.png", 44 | "minimum-system-version" : "8.0", 45 | "orientation" : "portrait", 46 | "scale" : "2x" 47 | }, 48 | { 49 | "orientation" : "portrait", 50 | "idiom" : "iphone", 51 | "filename" : "Default@2x.png", 52 | "extent" : "full-screen", 53 | "minimum-system-version" : "7.0", 54 | "scale" : "2x" 55 | }, 56 | { 57 | "extent" : "full-screen", 58 | "idiom" : "iphone", 59 | "subtype" : "retina4", 60 | "filename" : "Default-568h@2x.png", 61 | "minimum-system-version" : "7.0", 62 | "orientation" : "portrait", 63 | "scale" : "2x" 64 | }, 65 | { 66 | "orientation" : "portrait", 67 | "idiom" : "ipad", 68 | "filename" : "Default-Portrait.png", 69 | "extent" : "full-screen", 70 | "minimum-system-version" : "7.0", 71 | "scale" : "1x" 72 | }, 73 | { 74 | "orientation" : "landscape", 75 | "idiom" : "ipad", 76 | "filename" : "Default-Landscape.png", 77 | "extent" : "full-screen", 78 | "minimum-system-version" : "7.0", 79 | "scale" : "1x" 80 | }, 81 | { 82 | "orientation" : "portrait", 83 | "idiom" : "ipad", 84 | "filename" : "Default-Portrait@2x.png", 85 | "extent" : "full-screen", 86 | "minimum-system-version" : "7.0", 87 | "scale" : "2x" 88 | }, 89 | { 90 | "orientation" : "landscape", 91 | "idiom" : "ipad", 92 | "filename" : "Default-Landscape@2x.png", 93 | "extent" : "full-screen", 94 | "minimum-system-version" : "7.0", 95 | "scale" : "2x" 96 | }, 97 | { 98 | "orientation" : "portrait", 99 | "idiom" : "iphone", 100 | "filename" : "Default.png", 101 | "extent" : "full-screen", 102 | "scale" : "1x" 103 | }, 104 | { 105 | "orientation" : "portrait", 106 | "idiom" : "iphone", 107 | "filename" : "Default@2x.png", 108 | "extent" : "full-screen", 109 | "scale" : "2x" 110 | }, 111 | { 112 | "orientation" : "portrait", 113 | "idiom" : "iphone", 114 | "filename" : "Default-568h@2x.png", 115 | "extent" : "full-screen", 116 | "subtype" : "retina4", 117 | "scale" : "2x" 118 | }, 119 | { 120 | "orientation" : "portrait", 121 | "idiom" : "ipad", 122 | "extent" : "to-status-bar", 123 | "scale" : "1x" 124 | }, 125 | { 126 | "orientation" : "portrait", 127 | "idiom" : "ipad", 128 | "filename" : "Default-Portrait.png", 129 | "extent" : "full-screen", 130 | "scale" : "1x" 131 | }, 132 | { 133 | "orientation" : "landscape", 134 | "idiom" : "ipad", 135 | "extent" : "to-status-bar", 136 | "scale" : "1x" 137 | }, 138 | { 139 | "orientation" : "landscape", 140 | "idiom" : "ipad", 141 | "filename" : "Default-Landscape.png", 142 | "extent" : "full-screen", 143 | "scale" : "1x" 144 | }, 145 | { 146 | "orientation" : "portrait", 147 | "idiom" : "ipad", 148 | "extent" : "to-status-bar", 149 | "scale" : "2x" 150 | }, 151 | { 152 | "orientation" : "portrait", 153 | "idiom" : "ipad", 154 | "filename" : "Default-Portrait@2x.png", 155 | "extent" : "full-screen", 156 | "scale" : "2x" 157 | }, 158 | { 159 | "orientation" : "landscape", 160 | "idiom" : "ipad", 161 | "extent" : "to-status-bar", 162 | "scale" : "2x" 163 | }, 164 | { 165 | "orientation" : "landscape", 166 | "idiom" : "ipad", 167 | "filename" : "Default-Landscape@2x.png", 168 | "extent" : "full-screen", 169 | "scale" : "2x" 170 | } 171 | ], 172 | "info" : { 173 | "version" : 1, 174 | "author" : "xcode" 175 | } 176 | } -------------------------------------------------------------------------------- /webpack.config.js: -------------------------------------------------------------------------------- 1 | const { relative, resolve, sep } = require("path"); 2 | 3 | const webpack = require("webpack"); 4 | const CleanWebpackPlugin = require("clean-webpack-plugin"); 5 | const CopyWebpackPlugin = require("copy-webpack-plugin"); 6 | const MiniCssExtractPlugin = require('mini-css-extract-plugin'); 7 | const { BundleAnalyzerPlugin } = require("webpack-bundle-analyzer"); 8 | const UglifyJsPlugin = require("uglifyjs-webpack-plugin"); 9 | 10 | const VueLoaderPlugin = require('vue-loader/lib/plugin'); 11 | const NsVueTemplateCompiler = require("nativescript-vue-template-compiler"); 12 | 13 | const nsWebpack = require("nativescript-dev-webpack"); 14 | const nativescriptTarget = require("nativescript-dev-webpack/nativescript-target"); 15 | const { NativeScriptWorkerPlugin } = require("nativescript-worker-loader/NativeScriptWorkerPlugin"); 16 | 17 | module.exports = env => { 18 | // Add your custom Activities, Services and other android app components here. 19 | const appComponents = [ 20 | "tns-core-modules/ui/frame", 21 | "tns-core-modules/ui/frame/activity", 22 | ]; 23 | 24 | const platform = env && (env.android && "android" || env.ios && "ios"); 25 | if (!platform) { 26 | throw new Error("You need to provide a target platform!"); 27 | } 28 | 29 | const platforms = ["ios", "android"]; 30 | const projectRoot = __dirname; 31 | 32 | // Default destination inside platforms//... 33 | const dist = resolve(projectRoot, nsWebpack.getAppPath(platform, projectRoot)); 34 | const appResourcesPlatformDir = platform === "android" ? "Android" : "iOS"; 35 | 36 | const { 37 | // The 'appPath' and 'appResourcesPath' values are fetched from 38 | // the nsconfig.json configuration file 39 | // when bundling with `tns run android|ios --bundle`. 40 | appPath = "app", 41 | appResourcesPath = "app/App_Resources", 42 | 43 | // You can provide the following flags when running 'tns run android|ios' 44 | snapshot, // --env.snapshot 45 | production, // --env.production 46 | report, // --env.report 47 | hmr, // --env.hmr 48 | } = env; 49 | 50 | const mode = production ? "production" : "development" 51 | 52 | const appFullPath = resolve(projectRoot, appPath); 53 | const appResourcesFullPath = resolve(projectRoot, appResourcesPath); 54 | 55 | const entryModule = nsWebpack.getEntryModule(appFullPath); 56 | const entryPath = `.${sep}${entryModule}.js`; 57 | console.log(`Bundling application for entryPath ${entryPath}...`); 58 | 59 | const config = { 60 | mode: mode, 61 | context: appFullPath, 62 | watchOptions: { 63 | ignored: [ 64 | appResourcesFullPath, 65 | // Don't watch hidden files 66 | "**/.*", 67 | ], 68 | }, 69 | target: nativescriptTarget, 70 | // target: nativeScriptVueTarget, 71 | entry: { 72 | bundle: entryPath, 73 | }, 74 | output: { 75 | pathinfo: false, 76 | path: dist, 77 | libraryTarget: "commonjs2", 78 | filename: "[name].js", 79 | globalObject: "global", 80 | }, 81 | resolve: { 82 | extensions: [".vue", ".js", ".scss", ".css"], 83 | // Resolve {N} system modules from tns-core-modules 84 | modules: [ 85 | resolve(__dirname, "node_modules/tns-core-modules"), 86 | resolve(__dirname, "node_modules"), 87 | "node_modules/tns-core-modules", 88 | "node_modules", 89 | ], 90 | alias: { 91 | '~': appFullPath, 92 | '@': appFullPath, 93 | 'vue': 'nativescript-vue' 94 | }, 95 | // don't resolve symlinks to symlinked modules 96 | symlinks: false, 97 | }, 98 | resolveLoader: { 99 | // don't resolve symlinks to symlinked loaders 100 | symlinks: false, 101 | }, 102 | node: { 103 | // Disable node shims that conflict with NativeScript 104 | "http": false, 105 | "timers": false, 106 | "setImmediate": false, 107 | "fs": "empty", 108 | "__dirname": false, 109 | }, 110 | devtool: "none", 111 | optimization: { 112 | splitChunks: { 113 | cacheGroups: { 114 | vendor: { 115 | name: "vendor", 116 | chunks: "all", 117 | test: (module) => { 118 | const moduleName = module.nameForCondition ? module.nameForCondition() : ''; 119 | return /[\\/]node_modules[\\/]/.test(moduleName) || 120 | appComponents.some(comp => comp === moduleName); 121 | 122 | }, 123 | enforce: true, 124 | }, 125 | }, 126 | }, 127 | minimize: Boolean(production), 128 | minimizer: [ 129 | new UglifyJsPlugin({ 130 | uglifyOptions: { 131 | parallel: true, 132 | cache: true, 133 | output: { 134 | comments: false, 135 | }, 136 | compress: { 137 | // The Android SBG has problems parsing the output 138 | // when these options are enabled 139 | 'collapse_vars': platform !== "android", 140 | sequences: platform !== "android", 141 | }, 142 | }, 143 | }), 144 | ], 145 | }, 146 | module: { 147 | rules: [{ 148 | test: new RegExp(entryPath), 149 | use: [ 150 | // Require all Android app components 151 | platform === "android" && { 152 | loader: "nativescript-dev-webpack/android-app-components-loader", 153 | options: { modules: appComponents }, 154 | }, 155 | 156 | { 157 | loader: "nativescript-dev-webpack/bundle-config-loader", 158 | options: { 159 | registerPages: true, // applicable only for non-angular apps 160 | loadCss: !snapshot, // load the application css if in debug mode 161 | }, 162 | }, 163 | ].filter(loader => Boolean(loader)), 164 | }, 165 | 166 | // TODO: Removed the rule once https://github.com/vuejs/vue-hot-reload-api/pull/70 is accepted 167 | { 168 | test: resolve(__dirname, 'node_modules/vue-hot-reload-api/dist/index.js'), 169 | use: "../vue-hot-reload-api-patcher" 170 | }, 171 | 172 | { 173 | test: /\.css$/, 174 | use: [ 175 | 'nativescript-dev-webpack/style-hot-loader', 176 | 'css-hot-loader', 177 | MiniCssExtractPlugin.loader, 178 | { loader: "css-loader", options: { minimize: false, url: false } }, 179 | ], 180 | }, 181 | { 182 | test: /\.scss$/, 183 | use: [ 184 | 'nativescript-dev-webpack/style-hot-loader', 185 | 'css-hot-loader', 186 | MiniCssExtractPlugin.loader, 187 | { loader: "css-loader", options: { minimize: false, url: false } }, 188 | "sass-loader", 189 | ], 190 | }, 191 | { 192 | test: /\.js$/, 193 | loader: 'babel-loader', 194 | }, 195 | { 196 | test: /\.vue$/, 197 | loader: "vue-loader", 198 | options: { 199 | compiler: NsVueTemplateCompiler, 200 | }, 201 | }, 202 | ], 203 | }, 204 | plugins: [ 205 | // ... Vue Loader plugin omitted 206 | new MiniCssExtractPlugin({ 207 | filename: `app.css`, 208 | }), 209 | // make sure to include the plugin! 210 | new VueLoaderPlugin(), 211 | // Define useful constants like TNS_WEBPACK 212 | new webpack.DefinePlugin({ 213 | "global.TNS_WEBPACK": "true", 214 | "TNS_ENV": JSON.stringify(mode) 215 | }), 216 | // Remove all files from the out dir. 217 | new CleanWebpackPlugin([`${dist}/**/*`]), 218 | // Copy native app resources to out dir. 219 | new CopyWebpackPlugin([{ 220 | from: `${appResourcesFullPath}/${appResourcesPlatformDir}`, 221 | to: `${dist}/App_Resources/${appResourcesPlatformDir}`, 222 | context: projectRoot, 223 | }]), 224 | // Copy assets to out dir. Add your own globs as needed. 225 | new CopyWebpackPlugin([ 226 | { from: "fonts/**" }, 227 | { from: "**/*.+(jpg|png)" }, 228 | { from: "assets/**/*" }, 229 | ], { ignore: [`${relative(appPath, appResourcesFullPath)}/**`] }), 230 | // Generate a bundle starter script and activate it in package.json 231 | new nsWebpack.GenerateBundleStarterPlugin([ 232 | "./vendor", 233 | "./bundle", 234 | ]), 235 | // For instructions on how to set up workers with webpack 236 | // check out https://github.com/nativescript/worker-loader 237 | new NativeScriptWorkerPlugin(), 238 | new nsWebpack.PlatformFSPlugin({ 239 | platform, 240 | platforms, 241 | }), 242 | // Does IPC communication with the {N} CLI to notify events when running in watch mode. 243 | new nsWebpack.WatchStateLoggerPlugin(), 244 | ], 245 | }; 246 | 247 | if (report) { 248 | // Generate report files for bundles content 249 | config.plugins.push(new BundleAnalyzerPlugin({ 250 | analyzerMode: "static", 251 | openAnalyzer: false, 252 | generateStatsFile: true, 253 | reportFilename: resolve(projectRoot, "report", `report.html`), 254 | statsFilename: resolve(projectRoot, "report", `stats.json`), 255 | })); 256 | } 257 | 258 | if (snapshot) { 259 | config.plugins.push(new nsWebpack.NativeScriptSnapshotPlugin({ 260 | chunk: "vendor", 261 | requireModules: [ 262 | "tns-core-modules/bundle-entry-points", 263 | ], 264 | projectRoot, 265 | webpackConfig: config, 266 | })); 267 | } 268 | 269 | if (hmr) { 270 | config.plugins.push(new webpack.HotModuleReplacementPlugin()); 271 | } 272 | 273 | return config; 274 | }; 275 | --------------------------------------------------------------------------------