diff --git a/.eslintrc b/.eslintrc index a6bbbc8..d3db0e1 100644 --- a/.eslintrc +++ b/.eslintrc @@ -230,6 +230,7 @@ "ecmaVersion": 6, "ecmaFeatures": { "impliedStrict": true - } + }, + "sourceType": "module" } } diff --git a/CONTRIBUTE.md b/CONTRIBUTE.md index 7b77e50..e6b89f2 100644 --- a/CONTRIBUTE.md +++ b/CONTRIBUTE.md @@ -35,11 +35,10 @@ Set Button in XML ######text.component.js ```JavaScript -var EventData = require("tns-core-modules/data/observable").EventData; -var Button = require("tns-core-modules/ui/button").Button; +import { Button, EventData } from "@nativescript/core"; // >> button-tap-javascript -exports.onTap = function(args) { +export function onTap(args) { var myButton = args.object; console.log(myButton + " was tapped!"); } @@ -49,8 +48,7 @@ exports.onTap = function(args) { ######text.component.ts ```TypeScript -import { EventData } from "tns-core-modules/data/observable"; -import { Button } from "tns-core-modules/ui/button"; +import { Button, EventData } from "@nativescript/core"; // >> button-tap-ts export function onTap(args: EventData) { diff --git a/app/app.js b/app/app.js index de7f4f4..12f00eb 100644 --- a/app/app.js +++ b/app/app.js @@ -1,19 +1,20 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var application = require("tns-core-modules/application"); -var platformModule = require("tns-core-modules/platform"); -var applicationSettingsModule = require("tns-core-modules/application-settings"); -var deepLinkDataModule = require("./shared/deep-link-data"); -if (platformModule.isIOS) { - var mydelegate = require("./delegate/my-delegate"); - application.ios.delegate = mydelegate.MyDelegate; +/* +In NativeScript, the app.js file is the entry point to your application. +You can use this file to perform app-level initialization, but the primary +purpose of the file is to pass control to the app’s first module. +*/ +import { Application, ApplicationSettings, isIOS } from "@nativescript/core"; +import { DeepLinkData } from "./shared/deep-link-data"; +if (isIOS) { + const mydelegate = require("./delegate/my-delegate"); + Application.ios.delegate = mydelegate.MyDelegate; } function launchExample() { - var rootView = application.getRootView(); - if (applicationSettingsModule.hasKey("gotoexample")) { - var value = applicationSettingsModule.getString("gotoexample"); + const rootView = Application.getRootView(); + if (ApplicationSettings.hasKey("gotoexample")) { + const value = ApplicationSettings.getString("gotoexample"); if (value !== "") { - applicationSettingsModule.remove("gotoexample"); + ApplicationSettings.remove("gotoexample"); rootView.navigate({ moduleName: value, clearHistory: true @@ -21,13 +22,17 @@ function launchExample() { } } } -application.on(application.resumeEvent, function (args) { +Application.on(Application.resumeEvent, (args) => { if (args.android) { - var dld = new deepLinkDataModule.DeepLinkData("", args.android); + const dld = new DeepLinkData("", args.android); launchExample(); } else if (args.ios) { launchExample(); } }); -application.run({ moduleName: "app-root" }); +Application.run({ moduleName: "app-root" }); +/* +Do not place any code after the application has been started as it will not +be executed on iOS. +*/ diff --git a/app/app.ts b/app/app.ts index 0e355c9..00d6bfb 100644 --- a/app/app.ts +++ b/app/app.ts @@ -3,22 +3,20 @@ In NativeScript, the app.js file is the entry point to your application. You can use this file to perform app-level initialization, but the primary purpose of the file is to pass control to the app’s first module. */ -import * as application from "tns-core-modules/application"; -import * as platformModule from "tns-core-modules/platform"; -import * as applicationSettingsModule from"tns-core-modules/application-settings"; -import {Frame} from "tns-core-modules/ui/frame"; -const deepLinkDataModule = require("./shared/deep-link-data"); -if (platformModule.isIOS) { +import { Application, ApplicationSettings, Frame, isIOS } from "@nativescript/core"; +import { DeepLinkData } from "./shared/deep-link-data"; + +if (isIOS) { const mydelegate = require("./delegate/my-delegate"); - application.ios.delegate = mydelegate.MyDelegate; + Application.ios.delegate = mydelegate.MyDelegate; } function launchExample() { - const rootView: Frame = application.getRootView(); - if (applicationSettingsModule.hasKey("gotoexample")) { - const value = applicationSettingsModule.getString("gotoexample"); + const rootView: Frame = Application.getRootView(); + if (ApplicationSettings.hasKey("gotoexample")) { + const value = ApplicationSettings.getString("gotoexample"); if (value !== "") { - applicationSettingsModule.remove("gotoexample"); + ApplicationSettings.remove("gotoexample"); rootView.navigate({ moduleName: value, clearHistory: true @@ -26,15 +24,15 @@ function launchExample() { } } } -application.on(application.resumeEvent, (args) => { +Application.on(Application.resumeEvent, (args) => { if (args.android) { - const dld = new deepLinkDataModule.DeepLinkData("", args.android); + const dld = new DeepLinkData("", args.android); launchExample(); } else if (args.ios) { launchExample(); } }); -application.run({ moduleName: "app-root" }); +Application.run({ moduleName: "app-root" }); /* Do not place any code after the application has been started as it will not diff --git a/app/delegate/my-delegate.js b/app/delegate/my-delegate.js index e2e67a1..af27f87 100644 --- a/app/delegate/my-delegate.js +++ b/app/delegate/my-delegate.js @@ -1,5 +1,5 @@ -const deepLinkDataModule = require("../shared/deep-link-data"); -const MyDelegate = (function(_super) { +import { DeepLinkData } from "../shared/deep-link-data"; +export const MyDelegate = (function(_super) { __extends(MyDelegate, _super); MyDelegate.ObjCProtocols = [UIApplicationDelegate]; @@ -14,7 +14,7 @@ const MyDelegate = (function(_super) { MyDelegate.prototype.applicationHandleOpenURL = function (application, url) { console.log("MyDelegate.prototype.applicationHandleOpenURL"); - const dld = new deepLinkDataModule.DeepLinkData(url, undefined); + const dld = new DeepLinkData(url, undefined); return true; @@ -23,5 +23,3 @@ const MyDelegate = (function(_super) { return MyDelegate; }(UIResponder)); - -exports.MyDelegate = MyDelegate; diff --git a/app/home/first-page.js b/app/home/first-page.js index f6b5fa4..877f0fe 100644 --- a/app/home/first-page.js +++ b/app/home/first-page.js @@ -1,20 +1,21 @@ // >> frame-navigate-base -const getFrameById = require("tns-core-modules/ui/frame").getFrameById; +import { Frame, Transition } from "@nativescript/core"; + // >> (hide) -exports.navigate = function() { +export function navigate() { // << (hide) - // Example using `getFrameById(frameId)` to get a `Frame` reference + // Example using `Frame.getFrameById(frameId)` to get a `Frame` reference // As an alternative, we could use `topmost()` method or `page.frame` property - const frame = getFrameById("my-frame-id"); + const frame = Frame.getFrameById("my-frame-id"); frame.navigate("home/second-page"); // >> (hide) -}; +} // << (hide) // << frame-navigate-base -exports.navigateByModule = function() { +export function navigateByModule() { // >> frame-navigate-module - const frame = getFrameById("my-frame-id"); + const frame = Frame.getFrameById("my-frame-id"); const navigationEntry = { moduleName: "home/second-page", @@ -23,11 +24,11 @@ exports.navigateByModule = function() { }; frame.navigate(navigationEntry); // << frame-navigate-module -}; +} -exports.navigateWithBackstackVisible = function() { +export function navigateWithBackstackVisible() { // >> frame-navigate-backstackvisible - const frame = getFrameById("my-frame-id"); + const frame = Frame.getFrameById("my-frame-id"); const navigationEntry = { moduleName: "home/second-page", @@ -35,11 +36,11 @@ exports.navigateWithBackstackVisible = function() { }; frame.navigate(navigationEntry); // << frame-navigate-backstackvisible -}; +} -exports.navigateWithClearHistory = function() { +export function navigateWithClearHistory() { // >> frame-navigate-clearhistory - const frame = getFrameById("my-frame-id"); + const frame = Frame.getFrameById("my-frame-id"); const navigationEntry = { moduleName: "home/second-page", @@ -47,11 +48,11 @@ exports.navigateWithClearHistory = function() { }; frame.navigate(navigationEntry); // << frame-navigate-clearhistory -}; +} -exports.navigateWithTransition = function() { +export function navigateWithTransition() { // >> frame-navigate-transitions - const frame = getFrameById("my-frame-id"); + const frame = Frame.getFrameById("my-frame-id"); const navigationEntry = { moduleName: "home/second-page", @@ -67,20 +68,20 @@ exports.navigateWithTransition = function() { // << frame-navigate-transitions // >> frame-navigate-default-transition - // const getFrameById = require("tns-core-modules/ui/frame").getFrameById; - // const myFrame = getFrameById("firstFrame"); + // import { Frame } from "@nativescript/core"; + // const myFrame = Frame.getFrameById("firstFrame"); myFrame.transition = { name: "flip" }; myFrame.navigate("main-page"); // << frame-navigate-default-transition // >> frame-navigate-defailt-transition-app - // const frameModule = require("tns-core-modules/ui/frame"); - frameModule.Frame.defaultTransition = { name: "fade" }; + // import { Frame } from "@nativescript/core"; + Frame.defaultTransition = { name: "fade" }; // << frame-navigate-defailt-transition-app -}; +} -exports.navigatePlatformSpecificTransitions = function() { +export function navigatePlatformSpecificTransitions() { // >> frame-navigate-platform-specific-transitions const navigationEntry = { moduleName: "main-page", @@ -97,15 +98,16 @@ exports.navigatePlatformSpecificTransitions = function() { curve: "easeOut" } }; - const frame = getFrameById("my-frame"); + const frame = Frame.getFrameById("my-frame"); frame.navigate(navigationEntry); // << frame-navigate-platform-specific-transitions -}; +} // >> frame-navigate-custom-transitions-android-ts -const transition = require("tns-core-modules/ui/transition"); +// import { Transition } from "@nativescript/core"; const floatType = java.lang.Float.class.getField("TYPE").get(null); -const CustomTransition = (function (_super) { + +export const CustomTransition = (function (_super) { __extends(CustomTransition, _super); function CustomTransition() { _super.apply(this, arguments); @@ -113,13 +115,13 @@ const CustomTransition = (function (_super) { CustomTransition.prototype.createAndroidAnimator = function(transitionType) { const scaleValues = java.lang.reflect.Array.newInstance(floatType, 2); switch (transitionType) { - case transition.AndroidTransitionType.enter: - case transition.AndroidTransitionType.popEnter: + case Transition.AndroidTransitionType.enter: + case Transition.AndroidTransitionType.popEnter: scaleValues[0] = 0; scaleValues[1] = 1; break; - case transition.AndroidTransitionType.exit: - case transition.AndroidTransitionType.popExit: + case Transition.AndroidTransitionType.exit: + case Transition.AndroidTransitionType.popExit: scaleValues[0] = 1; scaleValues[1] = 0; break; @@ -141,13 +143,12 @@ const CustomTransition = (function (_super) { }; return CustomTransition; -})(transition.Transition); -exports.CustomTransition = CustomTransition; +})(Transition.Transition); // << frame-navigate-custom-transitions-android-ts // >> frame-navigate-custom-transitions-ios-ts -// const transition = require("tns-core-modules/ui/transition"); -const CustomTransitionIOS = (function (_super) { +// import { Transition } from "@nativescript/core"; +export const CustomTransitionIOS = (function (_super) { __extends(CustomTransition, _super); function CustomTransition() { _super.apply(this, arguments); @@ -175,15 +176,14 @@ const CustomTransitionIOS = (function (_super) { }; return CustomTransitionIOS; -})(transition.Transition); -exports.CustomTransitionIOS = CustomTransitionIOS; +})(Transition.Transition); // << frame-navigate-custom-transitions-ios-ts -exports.goBack = function() { +export function goBack() { // >> frame-navigate-go-back - // const getFrameById = require("tns-core-modules/ui/frame").getFrameById; - const myFrame = getFrameById("my-frame"); + // import { Frame } from "@nativescript/core"; + const myFrame = Frame.getFrameById("my-frame"); myFrame.goBack(); // << frame-navigate-go-back -}; +} diff --git a/app/home/first-ts-page.ts b/app/home/first-ts-page.ts index aff3464..2b6d9a6 100644 --- a/app/home/first-ts-page.ts +++ b/app/home/first-ts-page.ts @@ -1,28 +1,24 @@ -import { AnimationCurve } from "tns-core-modules/ui/enums"; -import * as frameModule from "tns-core-modules/ui/frame"; -import { isAndroid, isIOS } from "tns-core-modules/platform"; - // >> frame-navigate-base-ts -import { getFrameById } from "tns-core-modules/ui/frame"; +import { Frame } from "@nativescript/core"; // >> (hide) export function navigate() { // << (hide) - // Example using `getFrameById(frameId)` to get a `Frame` reference + // Example using `Frame.getFrameById(frameId)` to get a `Frame` reference // As an alternative, we could use `topmost()` method or `page.frame` property - const frame = getFrameById("my-frame-id"); + const frame = Frame.getFrameById("my-frame-id"); frame.navigate("home/second-page"); // >> (hide) } // << (hide) // << frame-navigate-base-ts -import { NavigationEntry } from "tns-core-modules/ui/frame"; +import { NavigationEntry } from "@nativescript/core"; export function navigateByModule() { // >> frame-navigate-module-ts - const frame = getFrameById("my-frame-id"); + const frame = Frame.getFrameById("my-frame-id"); - // import { NavigationEntry } from "tns-core-modules/ui/frame"; + // import { NavigationEntry } from "@nativescript/core"; const navigationEntry: NavigationEntry = { moduleName: "home/second-page", context: { info: "something you want to pass to your page" }, @@ -34,9 +30,9 @@ export function navigateByModule() { export function navigateWithBackstackVisible() { // >> frame-navigate-backstackvisible-ts - const frame = getFrameById("my-frame-id"); + const frame = Frame.getFrameById("my-frame-id"); - // import { NavigationEntry } from "tns-core-modules/ui/frame"; + // import { NavigationEntry } from "@nativescript/core"; const navigationEntry: NavigationEntry = { moduleName: "home/second-page", backstackVisible: false @@ -47,9 +43,9 @@ export function navigateWithBackstackVisible() { export function navigateWithClearHistory() { // >> frame-navigate-clearhistory-ts - const frame = getFrameById("my-frame-id"); + const frame = Frame.getFrameById("my-frame-id"); - // import { NavigationEntry } from "tns-core-modules/ui/frame"; + // import { NavigationEntry } from "@nativescript/core"; const navigationEntry: NavigationEntry = { moduleName: "home/second-page", clearHistory: true @@ -58,12 +54,13 @@ export function navigateWithClearHistory() { // << frame-navigate-clearhistory-ts } +import { Enums } from "@nativescript/core"; + export function navigateWithTransition() { // >> frame-navigate-transitions-ts - const frame = getFrameById("my-frame-id"); + const frame = Frame.getFrameById("my-frame-id"); - // import { NavigationEntry } from "tns-core-modules/ui/frame"; - // import { AnimationCurve } from "tns-core-modules/ui/enums"; + // import { Enums, NavigationEntry } from "@nativescript/core"; const navigationEntry: NavigationEntry = { moduleName: "home/second-page", animated: true, @@ -71,7 +68,7 @@ export function navigateWithTransition() { transition: { name: "slide", duration: 380, - curve: AnimationCurve.easeIn + curve: Enums.AnimationCurve.easeIn } }; frame.navigate(navigationEntry); @@ -79,15 +76,15 @@ export function navigateWithTransition() { // >> frame-navigate-default-transition-ts - // const getFrameById = require("tns-core-modules/ui/frame").getFrameById; - // const frame = getFrameById("firstFrame"); + // import { Frame } from "@nativescript/core"; + // const frame = Frame.getFrameById("firstFrame"); frame.transition = { name: "flip" }; frame.navigate("main-page"); // << frame-navigate-default-transition-ts // >> frame-navigate-defailt-transition-app-ts - // import * as frameModule from "tns-core-modules/ui/frame"; - frameModule.Frame.defaultTransition = { name: "fade" }; + // import { Frame } from "@nativescript/core"; + Frame.defaultTransition = { name: "fade" }; // << frame-navigate-defailt-transition-app-ts } @@ -100,21 +97,21 @@ export function navigatePlatformSpecificTransitions() { transitioniOS: { name: "curl", duration: 380, - curve: AnimationCurve.easeInOut + curve: Enums.AnimationCurve.easeInOut }, transitionAndroid: { name: "explode", duration: 300, - curve: AnimationCurve.spring + curve: Enums.AnimationCurve.spring } }; - const frame = getFrameById("my-frame"); + const frame = Frame.getFrameById("my-frame"); frame.navigate(navigationEntry); // << frame-navigate-platform-specific-transitions-ts } // >> frame-navigate-custom-transitions-ios-ts -// import { Transition } from "tns-core-modules/ui/transition"; +// import { Transition } from "@nativescript/core"; declare let UINavigationControllerOperation: any; // or use tns-platform-declarations export class CustomTransitionIOS extends Transition { @@ -159,18 +156,18 @@ export class CustomTransitionIOS extends Transition { // << frame-navigate-custom-transitions-ios-ts // >> frame-navigate-custom-transitions-android-ts -import { Transition, AndroidTransitionType } from "tns-core-modules/ui/transition"; +import { Transition } from "@nativescript/core"; export class CustomTransition extends Transition { public createAndroidAnimator(transitionType: string): android.animation.Animator { const scaleValues = (Array).create("float", 2); switch (transitionType) { - case AndroidTransitionType.enter: - case AndroidTransitionType.popEnter: + case Transition.AndroidTransitionType.enter: + case Transition.AndroidTransitionType.popEnter: scaleValues[0] = 0; scaleValues[1] = 1; break; - case AndroidTransitionType.exit: - case AndroidTransitionType.popExit: + case Transition.AndroidTransitionType.exit: + case Transition.AndroidTransitionType.popExit: scaleValues[0] = 1; scaleValues[1] = 0; break; @@ -197,8 +194,8 @@ export class CustomTransition extends Transition { export function goBack() { // >> frame-navigate-go-back-ts - // import { getFrameById } from "tns-core-modules/ui/frame"; - const myFrame = getFrameById("my-frame"); + // import { Frame } from "@nativescript/core"; + const myFrame = Frame.getFrameById("my-frame"); myFrame.goBack(); // << frame-navigate-go-back-ts } diff --git a/app/home/second-page.js b/app/home/second-page.js index a547ff6..2c5e3c8 100644 --- a/app/home/second-page.js +++ b/app/home/second-page.js @@ -1,5 +1,5 @@ // >> nav-context-receive -function onNavigatedTo(args) { +export function onNavigatedTo(args) { const page = args.object; const navigationContext = page.navigationContext; @@ -8,5 +8,4 @@ function onNavigatedTo(args) { page.bindingContext = navigationContext; } -exports.onNavigatedTo = onNavigatedTo; // << nav-context-receive diff --git a/app/home/second-ts-page.ts b/app/home/second-ts-page.ts index 930fbd7..1362aea 100644 --- a/app/home/second-ts-page.ts +++ b/app/home/second-ts-page.ts @@ -1,5 +1,5 @@ // >> nav-context-receive-ts -import { Page, NavigatedData } from "tns-core-modules/ui/page"; +import { Page, NavigatedData } from "@nativescript/core"; // Event handler for Page "navigatedTo" event attached in details-page.xml e.g. export function onNavigatedTo(args: NavigatedData): void { diff --git a/app/link.js b/app/link.js index 5342e43..87f6f8c 100644 --- a/app/link.js +++ b/app/link.js @@ -1,6 +1,8 @@ -function Link(title, link) { - this.title = title; - this.link = link; +class Link { + constructor(title, link) { + this.title = title; + this.link = link; + } } -module.exports = Link; +export default Link; diff --git a/app/links-view-model.js b/app/links-view-model.js index 5992a74..8485461 100644 --- a/app/links-view-model.js +++ b/app/links-view-model.js @@ -1,6 +1,4 @@ -const observableModule = require("tns-core-modules/data/observable"); -const observableArrayModule = require("tns-core-modules/data/observable-array"); -const frameModule = require("tns-core-modules/ui/frame"); +import { Frame, ObservableArray, fromObject } from "@nativescript/core"; function linksSort(value) { value.sort((a, b) => { @@ -16,24 +14,23 @@ function linksSort(value) { function ListViewLinksModel(info) { info = info || {}; linksSort(info.links); - - const viewModel = new observableModule.fromObject({ - "links": new observableArrayModule.ObservableArray(info.links), + const viewModel = new fromObject({ + "links": new ObservableArray(info.links), "actionBarTitle": info.actionBarTitle, "showTypeScriptExamples": info.showTypeScriptExamples ? info.showTypeScriptExamples : false, - "tsclinks": info.tsclinks ? new observableArrayModule.ObservableArray(info.tsclinks) : undefined + "tsclinks": info.tsclinks ? new ObservableArray(info.tsclinks) : undefined }); viewModel.set("onItemTap", (args) => { const linkItem = viewModel.get("links").getItem(args.index); - frameModule.Frame.topmost().navigate({ + Frame.topmost().navigate({ moduleName: linkItem.link, context: { "title": linkItem.title } }); }); viewModel.set("onSecondItemTap", (args) => { const linkItem = viewModel.get("tsclinks").getItem(args.index); - frameModule.Frame.topmost().navigate({ + Frame.topmost().navigate({ moduleName: linkItem.link, context: { "title": linkItem.title } }); @@ -46,4 +43,4 @@ function ListViewLinksModel(info) { return viewModel; } -module.exports = ListViewLinksModel; +export default ListViewLinksModel; diff --git a/app/main-page.js b/app/main-page.js index 0755626..a7840b2 100644 --- a/app/main-page.js +++ b/app/main-page.js @@ -1,61 +1,62 @@ -const ListViewLinksModel = require("./links-view-model"); -const link = require("./link"); +import Link from "./link"; +import ListViewLinksModel from "./links-view-model"; + const navigationLinks = [ - new link("Observable", "ns-framework-modules-category/observable/observable-page"), - new link("Observable Array", "ns-framework-modules-category/observable-array/observable-array-page"), - new link("Virtual Array", "ns-framework-modules-category/virtual-array/virtual-array-page"), - new link("Application", "ns-framework-modules-category/application/application-page"), - new link("Application Settings", "ns-framework-modules-category/application-settings/application-settings-page"), - new link("Action Bar", "ns-ui-widgets-category/action-bar/action-bar-page"), - new link("ActivityIndicator", "ns-ui-widgets-category/activity-indicator/activity-indicator-page"), - new link("Animations", "ns-ui-widgets-category/animations/animations-page"), - new link("Button", "ns-ui-widgets-category/button/button-page"), - new link("Color", "ns-framework-modules-category/color/color-page"), - new link("Connectivity", "ns-framework-modules-category/connectivity/connectivity-page"), - new link("Console", "ns-framework-modules-category/console/console-page"), - new link("DatePicker", "ns-ui-widgets-category/date-picker/date-picker-page"), - new link("Dialogs", "ns-ui-widgets-category/dialogs/dialogs-page"), - new link("Gestures", "ns-ui-widgets-category/gestures/gestures-page"), - new link("HtmlView", "ns-ui-widgets-category/html-view/html-view-page"), - new link("IconFonts", "ns-ui-category/icon-fonts/icon-fonts-page"), - new link("Image", "ns-ui-widgets-category/image/image-page"), - new link("Image Cache", "ns-ui-widgets-category/image-cache/image-cache-page"), - new link("Layouts", "ns-ui-widgets-category/layouts/layouts-page"), - new link("TimePicker", "ns-ui-widgets-category/time-picker/time-picker-page"), - new link("ScrollView", "ns-ui-widgets-category/scroll-view/scroll-view-page"), - new link("SearchBar", "ns-ui-widgets-category/search-bar/search-bar-page"), - new link("SegmentedBar", "ns-ui-widgets-category/segmented-bar/segmented-bar-page"), - new link("Slider", "ns-ui-widgets-category/slider/slider-page"), - new link("Switch", "ns-ui-widgets-category/switch/switch-page"), - new link("TabView", "ns-ui-widgets-category/tab-view/tab-view-page"), - new link("TextField", "ns-ui-widgets-category/text-field/text-field-page"), - new link("TextView", "ns-ui-widgets-category/text-view/text-view-page"), - new link("WebView", "ns-ui-widgets-category/web-view/web-view-page"), - new link("Style", "ns-ui-widgets-category/styling/styling-page"), - new link("Label", "ns-ui-widgets-category/label/label-page"), - new link("ListPicker", "ns-ui-widgets-category/list-picker/list-picker-page"), - new link("ListView", "ns-ui-widgets-category/list-view/list-view-page"), - new link("Page", "ns-ui-widgets-category/page/page-page"), - new link("Progress", "ns-ui-widgets-category/progress/progress-page"), - new link("Frame", "ns-ui-widgets-category/frame/frame-page"), - new link("Formatted String", "ns-ui-widgets-category/formatted-string/formatted-string-page"), - new link("Trace Module", "ns-framework-modules-category/trace/trace-page"), - new link("Timer Module", "ns-framework-modules-category/timer/timer-page"), - new link("Placeholder", "ns-ui-widgets-category/placeholder/placeholder-page"), - new link("Repeater", "ns-ui-widgets-category/repeater/repeater-page"), - new link("Platform Module", "ns-framework-modules-category/platform/platform-page"), - new link("FPS Meter", "ns-framework-modules-category/fps-meter/fps-meter-page"), - new link("HTTP Module", "ns-framework-modules-category/http/http-page"), - new link("Fetch", "ns-framework-modules-category/fetch/fetch-page"), - new link("ImageSource", "ns-framework-modules-category/image-source/image-source-page"), - new link("File System", "ns-framework-modules-category/file-system/file-system-page"), - new link("Modal view", "ns-ui-category/modal-view/modal-view-examples-page"), - new link("XML Parser", "ns-framework-modules-category/xml-parser/xml-parser-page"), - new link("BottomNavigation", "ns-ui-widgets-category/bottom-navigation/bottom-navigation-page"), - new link("Tabs", "ns-ui-widgets-category/tabs/tabs-page") + new Link("Observable", "ns-framework-modules-category/observable/observable-page"), + new Link("Observable Array", "ns-framework-modules-category/observable-array/observable-array-page"), + new Link("Virtual Array", "ns-framework-modules-category/virtual-array/virtual-array-page"), + new Link("Application", "ns-framework-modules-category/application/application-page"), + new Link("Application Settings", "ns-framework-modules-category/application-settings/application-settings-page"), + new Link("Action Bar", "ns-ui-widgets-category/action-bar/action-bar-page"), + new Link("ActivityIndicator", "ns-ui-widgets-category/activity-indicator/activity-indicator-page"), + new Link("Animations", "ns-ui-widgets-category/animations/animations-page"), + new Link("Button", "ns-ui-widgets-category/button/button-page"), + new Link("Color", "ns-framework-modules-category/color/color-page"), + new Link("Connectivity", "ns-framework-modules-category/connectivity/connectivity-page"), + new Link("Console", "ns-framework-modules-category/console/console-page"), + new Link("DatePicker", "ns-ui-widgets-category/date-picker/date-picker-page"), + new Link("Dialogs", "ns-ui-widgets-category/dialogs/dialogs-page"), + new Link("Gestures", "ns-ui-widgets-category/gestures/gestures-page"), + new Link("HtmlView", "ns-ui-widgets-category/html-view/html-view-page"), + new Link("IconFonts", "ns-ui-category/icon-fonts/icon-fonts-page"), + new Link("Image", "ns-ui-widgets-category/image/image-page"), + new Link("Image Cache", "ns-ui-widgets-category/image-cache/image-cache-page"), + new Link("Layouts", "ns-ui-widgets-category/layouts/layouts-page"), + new Link("TimePicker", "ns-ui-widgets-category/time-picker/time-picker-page"), + new Link("ScrollView", "ns-ui-widgets-category/scroll-view/scroll-view-page"), + new Link("SearchBar", "ns-ui-widgets-category/search-bar/search-bar-page"), + new Link("SegmentedBar", "ns-ui-widgets-category/segmented-bar/segmented-bar-page"), + new Link("Slider", "ns-ui-widgets-category/slider/slider-page"), + new Link("Switch", "ns-ui-widgets-category/switch/switch-page"), + new Link("TabView", "ns-ui-widgets-category/tab-view/tab-view-page"), + new Link("TextField", "ns-ui-widgets-category/text-field/text-field-page"), + new Link("TextView", "ns-ui-widgets-category/text-view/text-view-page"), + new Link("WebView", "ns-ui-widgets-category/web-view/web-view-page"), + new Link("Style", "ns-ui-widgets-category/styling/styling-page"), + new Link("Label", "ns-ui-widgets-category/label/label-page"), + new Link("ListPicker", "ns-ui-widgets-category/list-picker/list-picker-page"), + new Link("ListView", "ns-ui-widgets-category/list-view/list-view-page"), + new Link("Page", "ns-ui-widgets-category/page/page-page"), + new Link("Progress", "ns-ui-widgets-category/progress/progress-page"), + new Link("Frame", "ns-ui-widgets-category/frame/frame-page"), + new Link("Formatted String", "ns-ui-widgets-category/formatted-string/formatted-string-page"), + new Link("Trace Module", "ns-framework-modules-category/trace/trace-page"), + new Link("Timer Module", "ns-framework-modules-category/timer/timer-page"), + new Link("Placeholder", "ns-ui-widgets-category/placeholder/placeholder-page"), + new Link("Repeater", "ns-ui-widgets-category/repeater/repeater-page"), + new Link("Platform Module", "ns-framework-modules-category/platform/platform-page"), + new Link("FPS Meter", "ns-framework-modules-category/fps-meter/fps-meter-page"), + new Link("HTTP Module", "ns-framework-modules-category/http/http-page"), + new Link("Fetch", "ns-framework-modules-category/fetch/fetch-page"), + new Link("ImageSource", "ns-framework-modules-category/image-source/image-source-page"), + new Link("File System", "ns-framework-modules-category/file-system/file-system-page"), + new Link("Modal view", "ns-ui-category/modal-view/modal-view-examples-page"), + new Link("XML Parser", "ns-framework-modules-category/xml-parser/xml-parser-page"), + new Link("BottomNavigation", "ns-ui-widgets-category/bottom-navigation/bottom-navigation-page"), + new Link("Tabs", "ns-ui-widgets-category/tabs/tabs-page") ]; -function onNavigatingTo(args) { +export function onNavigatingTo(args) { const page = args.object; const vm = new ListViewLinksModel({ links: navigationLinks, @@ -63,4 +64,3 @@ function onNavigatingTo(args) { }); page.bindingContext = vm; } -exports.onNavigatingTo = onNavigatingTo; diff --git a/app/ns-framework-modules-category/application-settings/application-settings-page.js b/app/ns-framework-modules-category/application-settings/application-settings-page.js index 1a083a3..21b4c22 100644 --- a/app/ns-framework-modules-category/application-settings/application-settings-page.js +++ b/app/ns-framework-modules-category/application-settings/application-settings-page.js @@ -1,12 +1,12 @@ -const ListViewLinksModel = require("../../links-view-model"); -const link = require("../../link"); +import ListViewLinksModel from "../../links-view-model"; +import Link from "../../link"; const navigationLinks = [ - new link("Usage", "ns-framework-modules-category/application-settings/usage/usage-page") + new Link("Usage", "ns-framework-modules-category/application-settings/usage/usage-page") ]; const navigationLinksTsc = [ - new link("Usage", "ns-framework-modules-category/application-settings/usage/usage-ts-page") + new Link("Usage", "ns-framework-modules-category/application-settings/usage/usage-ts-page") ]; -function onNavigatingTo(args) { +export function onNavigatingTo(args) { const page = args.object; page.bindingContext = new ListViewLinksModel({ links: navigationLinks, @@ -15,4 +15,4 @@ function onNavigatingTo(args) { tsclinks: navigationLinksTsc }); } -exports.onNavigatingTo = onNavigatingTo; + diff --git a/app/ns-framework-modules-category/application-settings/usage/usage-page.js b/app/ns-framework-modules-category/application-settings/usage/usage-page.js index b25bda4..44aa09f 100644 --- a/app/ns-framework-modules-category/application-settings/usage/usage-page.js +++ b/app/ns-framework-modules-category/application-settings/usage/usage-page.js @@ -1,29 +1,29 @@ // >> app-settings-code-js -const appSettings = require("tns-core-modules/application-settings"); +import { ApplicationSettings } from "@nativescript/core"; -function onNavigatingTo(args) { - appSettings.setBoolean("isTurnedOn", true); - appSettings.setString("username", "Wolfgang"); - appSettings.setNumber("locationX", 54.321); +export function onNavigatingTo(args) { + ApplicationSettings.setBoolean("isTurnedOn", true); + ApplicationSettings.setString("username", "Wolfgang"); + ApplicationSettings.setNumber("locationX", 54.321); - const isTurnedOn = appSettings.getBoolean("isTurnedOn"); - const username = appSettings.getString("username"); - const locationX = appSettings.getNumber("locationX"); + const isTurnedOn = ApplicationSettings.getBoolean("isTurnedOn"); + const username = ApplicationSettings.getString("username"); + const locationX = ApplicationSettings.getNumber("locationX"); // Will return "No string value" if there is no value for "noSuchKey" - const someKey = appSettings.getString("noSuchKey", "No string value"); + const someKey = ApplicationSettings.getString("noSuchKey", "No string value"); // Will return false if there is no key with name "noSuchKey" - const isKeExisting = appSettings.hasKey("noSuchKey"); + const isKeExisting = ApplicationSettings.hasKey("noSuchKey"); } -exports.onNavigatingTo = onNavigatingTo; + function onClear() { // Removing a single entry via its key name - appSettings.remove("isTurnedOn"); + ApplicationSettings.remove("isTurnedOn"); // Clearing the whole application-settings for this app - appSettings.clear(); + ApplicationSettings.clear(); } // << app-settings-code-js diff --git a/app/ns-framework-modules-category/application-settings/usage/usage-ts-page.ts b/app/ns-framework-modules-category/application-settings/usage/usage-ts-page.ts index 93f8db7..4bb5c11 100644 --- a/app/ns-framework-modules-category/application-settings/usage/usage-ts-page.ts +++ b/app/ns-framework-modules-category/application-settings/usage/usage-ts-page.ts @@ -1,37 +1,27 @@ // >> app-settings-code-ts -import { - getBoolean, - setBoolean, - getNumber, - setNumber, - getString, - setString, - hasKey, - remove, - clear -} from "tns-core-modules/application-settings"; +import { ApplicationSettings } from "@nativescript/core"; export function onNavigatingTo(args) { - setBoolean("isTurnedOn", true); - setString("username", "Wolfgang"); - setNumber("locationX", 54.321); + ApplicationSettings.setBoolean("isTurnedOn", true); + ApplicationSettings.setString("username", "Wolfgang"); + ApplicationSettings.setNumber("locationX", 54.321); - const isTurnedOn: boolean = getBoolean("isTurnedOn"); - const username: string = getString("username"); - const locationX: number = getNumber("locationX"); + const isTurnedOn: boolean = ApplicationSettings.getBoolean("isTurnedOn"); + const username: string = ApplicationSettings.getString("username"); + const locationX: number = ApplicationSettings.getNumber("locationX"); // Will return "No string value" if there is no value for "noSuchKey" - const someKey: string = getString("noSuchKey", "No string value"); + const someKey: string = ApplicationSettings.getString("noSuchKey", "No string value"); // Will return false if there is no key with name "noSuchKey" - let isKeExisting: boolean = hasKey("noSuchKey"); + let isKeExisting: boolean = ApplicationSettings.hasKey("noSuchKey"); } function onClear() { // Removing a single entry via its key name - remove("isTurnedOn"); + ApplicationSettings.remove("isTurnedOn"); // Clearing the whole application-settings for this app - clear(); + ApplicationSettings.clear(); } // << app-settings-code-ts diff --git a/app/ns-framework-modules-category/application/android-broadcast-receiver/android-broadcast-receiver-page.js b/app/ns-framework-modules-category/application/android-broadcast-receiver/android-broadcast-receiver-page.js index fd581a1..8ad9565 100644 --- a/app/ns-framework-modules-category/application/android-broadcast-receiver/android-broadcast-receiver-page.js +++ b/app/ns-framework-modules-category/application/android-broadcast-receiver/android-broadcast-receiver-page.js @@ -1,25 +1,22 @@ - -const applicationModule = require("tns-core-modules/application"); -const Observable = require("tns-core-modules/data/observable").Observable; -const platformModule = require("tns-core-modules/platform"); +import { AndroidApplication, Observable, isAndroid } from "@nativescript/core"; let vm; -function onNavigatingTo(args) { +export function onNavigatingTo(args) { const page = args.object; page.actionBar.title = ""; vm = new Observable(); vm.set("info", "Using Android Broadcast Receiver \nto check the battery life"); vm.set("batteryLife", "0"); - vm.set("isAndroid", platformModule.isAndroid); + vm.set("isAndroid", isAndroid); page.bindingContext = vm; page.actionBar.title = args.context.title; } -exports.onNavigatingTo = onNavigatingTo; -function onNavigatedTo(args) { + +export function onNavigatedTo(args) { vm.set("actionBarTitle", args.context.actionBarTitle); // >> broadcast-receiver - if (platformModule.isAndroid) { - // use tns-platform-dclarations to acces native APIs (e.g. ndroid.content.Intent) + if (isAndroid) { + // use tns-platform-declarations to acces native APIs (e.g. android.content.Intent) const receiverCallback = (androidContext, intent) => { const level = intent.getIntExtra(android.os.BatteryManager.EXTRA_LEVEL, -1); const scale = intent.getIntExtra(android.os.BatteryManager.EXTRA_SCALE, -1); @@ -27,19 +24,19 @@ function onNavigatedTo(args) { vm.set("batteryLife", percent.toString()); }; - applicationModule.android.registerBroadcastReceiver( + AndroidApplication.android.registerBroadcastReceiver( android.content.Intent.ACTION_BATTERY_CHANGED, receiverCallback ); } // << broadcast-receiver } -exports.onNavigatedTo = onNavigatedTo; -function onUnloaded() { - if (platformModule.isAndroid) { + +export function onUnloaded() { + if (isAndroid) { // >> broadcast-receiver-remove - applicationModule.android.unregisterBroadcastReceiver(android.content.Intent.ACTION_BATTERY_CHANGED); + AndroidApplication.android.unregisterBroadcastReceiver(android.content.Intent.ACTION_BATTERY_CHANGED); // << broadcast-receiver-remove } } -exports.onUnloaded = onUnloaded; + diff --git a/app/ns-framework-modules-category/application/android-broadcast-receiver/android-broadcast-receiver-ts-page.ts b/app/ns-framework-modules-category/application/android-broadcast-receiver/android-broadcast-receiver-ts-page.ts index 67f02d7..d0baf93 100644 --- a/app/ns-framework-modules-category/application/android-broadcast-receiver/android-broadcast-receiver-ts-page.ts +++ b/app/ns-framework-modules-category/application/android-broadcast-receiver/android-broadcast-receiver-ts-page.ts @@ -1,9 +1,5 @@ -import * as applicationModule from "tns-core-modules/application"; -import { android as androidApp } from "tns-core-modules/application"; -import { Observable } from "tns-core-modules/data/observable"; -import { isAndroid } from "tns-core-modules/platform"; -import { Page, NavigatedData } from "tns-core-modules/ui/page"; +import { Application, NavigatedData, Observable, Page, isAndroid } from "@nativescript/core"; let vm; export function onNavigatingTo(args: NavigatedData) { @@ -21,17 +17,17 @@ export function onNavigatedTo(args: NavigatedData) { vm.set("actionBarTitle", args.context.actionBarTitle); // >> app-class-properties - // import { android as androidApp } from "tns-core-modules/application"; - let isPaused = androidApp.paused; // e.g. false - let packageName = androidApp.packageName; // The package ID e.g. org.nativescript.nativescriptsdkexamplesng - let nativeApp = androidApp.nativeApp; // The native APplication reference - let foregroundActivity = androidApp.foregroundActivity; // The current Activity reference - let context = androidApp.context; // The current Android context + // import { Application } from "@nativescript/core"; + let isPaused = Application.android.paused; // e.g. false + let packageName = Application.android.packageName; // The package ID e.g. org.nativescript.nativescriptsdkexamplesng + let nativeApp = Application.android.nativeApp; // The native Application reference + let foregroundActivity = Application.android.foregroundActivity; // The current Activity reference + let context = Application.android.context; // The current Android context // << app-class-properties // >> broadcast-receiver-ts if (isAndroid) { - // use tns-platform-dclarations to access native APIs (e.g. android.content.Intent) + // use tns-platform-declarations to access native APIs (e.g. android.content.Intent) let receiverCallback = (androidContext, intent) => { const level = intent.getIntExtra(android.os.BatteryManager.EXTRA_LEVEL, -1); const scale = intent.getIntExtra(android.os.BatteryManager.EXTRA_SCALE, -1); @@ -39,7 +35,7 @@ export function onNavigatedTo(args: NavigatedData) { vm.set("batteryLife", percent.toString()); }; - applicationModule.android.registerBroadcastReceiver( + Application.android.registerBroadcastReceiver( android.content.Intent.ACTION_BATTERY_CHANGED, receiverCallback ); @@ -50,7 +46,7 @@ export function onNavigatedTo(args: NavigatedData) { export function onUnloaded() { if (isAndroid) { // >> broadcast-receiver-remove-ts - applicationModule.android.unregisterBroadcastReceiver(android.content.Intent.ACTION_BATTERY_CHANGED); + Application.android.unregisterBroadcastReceiver(android.content.Intent.ACTION_BATTERY_CHANGED); // << broadcast-receiver-remove-ts } } diff --git a/app/ns-framework-modules-category/application/application-events/application-events-page.js b/app/ns-framework-modules-category/application/application-events/application-events-page.js index 44424a2..3d3726a 100644 --- a/app/ns-framework-modules-category/application/application-events/application-events-page.js +++ b/app/ns-framework-modules-category/application/application-events/application-events-page.js @@ -1,8 +1,7 @@ // >> application-import -const applicationModule = require("tns-core-modules/application"); +import { Application } from "@nativescript/core"; // << application-import -const Observable = require("tns-core-modules/data/observable").Observable; -const enums = require("ui/enums"); +import { Observable, Enums } from "@nativescript/core"; let vm; let launchListener; let suspendListener; @@ -13,28 +12,28 @@ let lowMemoryListener; let orientationChangedListener; let uncaughtErrorListener; -const onNavigatingTo = (args) => { +export const onNavigatingTo = (args) => { const page = args.object; vm = new Observable(); vm.set("actionBarTitle", args.context.actionBarTitle); vm.set("info", "Refer to the code-behind files \nfor Application Events snippets"); - if (applicationModule.android) { - const activity = applicationModule.android.foregroundActivity; + if (Application.android) { + const activity = Application.android.foregroundActivity; const orientationEnum = activity.getResources().getConfiguration().orientation; - vm.set("orientation", (orientationEnum === 1 ? enums.DeviceOrientation.portrait : enums.DeviceOrientation.landscape)); + vm.set("orientation", (orientationEnum === 1 ? Enums.DeviceOrientation.portrait : Enums.DeviceOrientation.landscape)); vm.set("resumeEvent", ""); vm.set("resumeEvent", ""); vm.set("launchEvent", ""); vm.set("displayedEvent", ""); - } else if (applicationModule.ios) { + } else if (Application.ios) { vm.set("orientation", "portrait"); } page.bindingContext = vm; page.actionBar.title = args.context.title; }; -exports.onNavigatingTo = onNavigatingTo; -const onGridLoaded = (args) => { + +export const onGridLoaded = (args) => { // >> application-events-launch launchListener = (args) => { // The root view for this Window on iOS or Activity for Android. @@ -43,7 +42,7 @@ const onGridLoaded = (args) => { console.log("The appication was launched!"); vm.set("resumeEvent", "The appication was launched!"); }; - applicationModule.on(applicationModule.launchEvent, launchListener); + Application.on(Application.launchEvent, launchListener); // << application-events-launch // >> application-events-suspend @@ -51,7 +50,7 @@ const onGridLoaded = (args) => { console.log("The appication was suspended!"); vm.set("suspendEvent", "The appication was suspended!"); }; - applicationModule.on(applicationModule.suspendEvent, suspendListener); + Application.on(Application.suspendEvent, suspendListener); // << application-events-suspend // >> application-events-resume @@ -59,14 +58,14 @@ const onGridLoaded = (args) => { console.log("The appication was resumed!"); vm.set("resumeEvent", "The appication was resumed!"); }; - applicationModule.on(applicationModule.resumeEvent, resumeListener); + Application.on(Application.resumeEvent, resumeListener); // << application-events-resume // >> application-events-exit exitListener = (args) => { console.log("The appication was closed!"); }; - applicationModule.on(applicationModule.exitEvent, exitListener); + Application.on(Application.exitEvent, exitListener); // << application-events-exit // >> application-events-displayed @@ -74,7 +73,7 @@ const onGridLoaded = (args) => { console.log("NativeScript displayedEvent!"); vm.set("displayedEvent", "The appication is displayed!"); }; - applicationModule.on(applicationModule.displayedEvent, displayedListener); + Application.on(Application.displayedEvent, displayedListener); // << application-events-displayed // >> application-events-low-memory @@ -82,7 +81,7 @@ const onGridLoaded = (args) => { // the instance that has raidsed the event console.log("Instance: ", args.object); }; - applicationModule.on(applicationModule.lowMemoryEvent, lowMemoryListener); + Application.on(Application.lowMemoryEvent, lowMemoryListener); // << application-events-low-memory // >> application-events-orientation @@ -91,7 +90,7 @@ const onGridLoaded = (args) => { console.log("Orientation: ", args.newValue); vm.set("orientation", args.newValue); }; - applicationModule.on(applicationModule.orientationChangedEvent, orientationChangedListener); + Application.on(Application.orientationChangedEvent, orientationChangedListener); // << application-events-orientation // >> application-events-error @@ -99,21 +98,19 @@ const onGridLoaded = (args) => { // UnhandledErrorEventData.error: NativeScriptError console.log("NativeScript Error: ", args.error); }; - applicationModule.on(applicationModule.uncaughtErrorEvent, uncaughtErrorListener); + Application.on(Application.uncaughtErrorEvent, uncaughtErrorListener); // << application-events-error }; -exports.onGridLoaded = onGridLoaded; -const onGridUnloaded = () => { +export const onGridUnloaded = () => { // >> application-events-off - applicationModule.off(applicationModule.launchEvent, launchListener); - applicationModule.off(applicationModule.resumeEvent, resumeListener); - applicationModule.off(applicationModule.suspendEvent, suspendListener); - applicationModule.off(applicationModule.exitEvent, exitListener); - applicationModule.off(applicationModule.displayedEvent, displayedListener); - applicationModule.off(applicationModule.lowMemoryEvent, lowMemoryListener); - applicationModule.off(applicationModule.orientationChangedEvent, orientationChangedListener); - applicationModule.off(applicationModule.uncaughtErrorEvent, uncaughtErrorListener); + Application.off(Application.launchEvent, launchListener); + Application.off(Application.resumeEvent, resumeListener); + Application.off(Application.suspendEvent, suspendListener); + Application.off(Application.exitEvent, exitListener); + Application.off(Application.displayedEvent, displayedListener); + Application.off(Application.lowMemoryEvent, lowMemoryListener); + Application.off(Application.orientationChangedEvent, orientationChangedListener); + Application.off(Application.uncaughtErrorEvent, uncaughtErrorListener); // << application-events-off }; -exports.onGridUnloaded = onGridUnloaded; diff --git a/app/ns-framework-modules-category/application/application-events/application-events-ts-page.ts b/app/ns-framework-modules-category/application/application-events/application-events-ts-page.ts index c4b492a..cef9583 100644 --- a/app/ns-framework-modules-category/application/application-events/application-events-ts-page.ts +++ b/app/ns-framework-modules-category/application/application-events/application-events-ts-page.ts @@ -1,8 +1,7 @@ // >> application-import-ts -import * as applicationModule from "tns-core-modules/application"; +import { Application, Enums } from "@nativescript/core"; // << application-import-ts -import { Observable } from "tns-core-modules/data/observable"; -import * as enums from "tns-core-modules/ui/enums"; +import { Observable } from "@nativescript/core"; let vm; let launchListener; let suspendListener; @@ -18,20 +17,20 @@ export const onNavigatingTo = (navigatedData) => { vm = new Observable(); vm.set("actionBarTitle", navigatedData.context.actionBarTitle); vm.set("info", "Refer to the code-behind files \nfor Application Events snippets"); - if (applicationModule.android) { - const activity = applicationModule.android.foregroundActivity; + if (Application.android) { + const activity = Application.android.foregroundActivity; const orientationEnum = activity.getResources().getConfiguration().orientation; vm.set( "orientation", orientationEnum === 1 - ? enums.DeviceOrientation.portrait - : enums.DeviceOrientation.landscape + ? Enums.DeviceOrientation.portrait + : Enums.DeviceOrientation.landscape ); vm.set("resumeEvent", ""); vm.set("resumeEvent", ""); vm.set("launchEvent", ""); vm.set("displayedEvent", ""); - } else if (applicationModule.ios) { + } else if (Application.ios) { vm.set("orientation", "portrait"); } page.bindingContext = vm; @@ -47,7 +46,7 @@ export const onGridLoaded = (eventData) => { console.log("The appication was launched!"); vm.set("resumeEvent", "The appication was launched!"); }; - applicationModule.on(applicationModule.launchEvent, launchListener); + Application.on(Application.launchEvent, launchListener); // << application-events-launch-ts // >> application-events-suspend-ts @@ -55,7 +54,7 @@ export const onGridLoaded = (eventData) => { console.log("The appication was suspended!"); vm.set("suspendEvent", "The appication was suspended!"); }; - applicationModule.on(applicationModule.suspendEvent, suspendListener); + Application.on(Application.suspendEvent, suspendListener); // << application-events-suspend-ts // >> application-events-resume-ts @@ -63,14 +62,14 @@ export const onGridLoaded = (eventData) => { console.log("The appication was resumed!"); vm.set("resumeEvent", "The appication was resumed!"); }; - applicationModule.on(applicationModule.resumeEvent, resumeListener); + Application.on(Application.resumeEvent, resumeListener); // << application-events-resume-ts // >> application-events-exit-ts exitListener = (args) => { console.log("The appication was closed!"); }; - applicationModule.on(applicationModule.exitEvent, exitListener); + Application.on(Application.exitEvent, exitListener); // << application-events-exit-ts // >> application-events-displayed-ts @@ -78,7 +77,7 @@ export const onGridLoaded = (eventData) => { console.log("NativeScript displayedEvent!"); vm.set("displayedEvent", "The appication is displayed!"); }; - applicationModule.on(applicationModule.displayedEvent, displayedListener); + Application.on(Application.displayedEvent, displayedListener); // << application-events-displayed-ts // >> application-events-low-memory-ts @@ -86,7 +85,7 @@ export const onGridLoaded = (eventData) => { // the instance that has raidsed the event console.log("Instance: ", args.object); }; - applicationModule.on(applicationModule.lowMemoryEvent, lowMemoryListener); + Application.on(Application.lowMemoryEvent, lowMemoryListener); // << application-events-low-memory-ts // >> application-events-orientation-ts @@ -95,7 +94,7 @@ export const onGridLoaded = (eventData) => { console.log("Orientation: ", args.newValue); vm.set("orientation", args.newValue); }; - applicationModule.on(applicationModule.orientationChangedEvent, orientationChangedListener); + Application.on(Application.orientationChangedEvent, orientationChangedListener); // << application-events-orientation-ts // >> application-events-error-ts @@ -103,20 +102,20 @@ export const onGridLoaded = (eventData) => { // UnhandledErrorEventData.error: NativeScriptError console.log("NativeScript Error: ", args.error); }; - applicationModule.on(applicationModule.uncaughtErrorEvent, uncaughtErrorListener); + Application.on(Application.uncaughtErrorEvent, uncaughtErrorListener); // << application-events-error-ts }; export const onGridUnloaded = () => { // >> application-events-off-ts - applicationModule.off(applicationModule.launchEvent, launchListener); - applicationModule.off(applicationModule.resumeEvent, resumeListener); - applicationModule.off(applicationModule.suspendEvent, suspendListener); - applicationModule.off(applicationModule.exitEvent, exitListener); - applicationModule.off(applicationModule.displayedEvent, displayedListener); - applicationModule.off(applicationModule.lowMemoryEvent, lowMemoryListener); - applicationModule.off(applicationModule.orientationChangedEvent, orientationChangedListener); - applicationModule.off(applicationModule.uncaughtErrorEvent, uncaughtErrorListener); + Application.off(Application.launchEvent, launchListener); + Application.off(Application.resumeEvent, resumeListener); + Application.off(Application.suspendEvent, suspendListener); + Application.off(Application.exitEvent, exitListener); + Application.off(Application.displayedEvent, displayedListener); + Application.off(Application.lowMemoryEvent, lowMemoryListener); + Application.off(Application.orientationChangedEvent, orientationChangedListener); + Application.off(Application.uncaughtErrorEvent, uncaughtErrorListener); // << application-events-off-ts }; diff --git a/app/ns-framework-modules-category/application/application-page.js b/app/ns-framework-modules-category/application/application-page.js index bc43d46..1bfac23 100644 --- a/app/ns-framework-modules-category/application/application-page.js +++ b/app/ns-framework-modules-category/application/application-page.js @@ -1,50 +1,51 @@ -const ListViewLinksModel = require("../../links-view-model"); -const link = require("../../link"); -const platformModule = require("tns-core-modules/platform"); +import ListViewLinksModel from "../../links-view-model"; +import Link from "../../link"; +import { isIOS, isAndroid } from "@nativescript/core"; + const navigationLinks = [ - new link( + new Link( "Check Platform", "ns-framework-modules-category/application/check-platform/check-platform-page" ), - new link( + new Link( "Application Events", "ns-framework-modules-category/application/application-events/application-events-page" ) ]; const navigationLinksTsc = [ - new link( + new Link( "Check Platform", "ns-framework-modules-category/application/check-platform/check-platform-ts-page" ), - new link( + new Link( "Application Events", "ns-framework-modules-category/application/application-events/application-events-ts-page" ) ]; -function onNavigatingTo(args) { +export function onNavigatingTo(args) { const page = args.object; - if (platformModule.isIOS && navigationLinks.filter((e) => e.title === "iOS Notification Observer").length < 1) { + if (isIOS && navigationLinks.filter((e) => e.title === "iOS Notification Observer").length < 1) { navigationLinks.push( - new link( + new Link( "iOS Notification Observer", "ns-framework-modules-category/application/ios-notification-observer/ios-notification-observer-page" ) ); navigationLinksTsc.push( - new link( + new Link( "iOS Notification Observer", "ns-framework-modules-category/application/ios-notification-observer/ios-notification-observer-ts-page" ) ); - } else if (platformModule.isAndroid && navigationLinks.filter((e) => e.title === "Android Broadcast Receiver").length < 1) { + } else if (isAndroid && navigationLinks.filter((e) => e.title === "Android Broadcast Receiver").length < 1) { navigationLinks.push( - new link( + new Link( "Android Broadcast Receiver", "ns-framework-modules-category/application/android-broadcast-receiver/android-broadcast-receiver-page" ) ); navigationLinksTsc.push( - new link( + new Link( "Android Broadcast Receiver", "ns-framework-modules-category/application/android-broadcast-receiver/android-broadcast-receiver-ts-page" ) @@ -57,4 +58,4 @@ function onNavigatingTo(args) { tsclinks: navigationLinksTsc }); } -exports.onNavigatingTo = onNavigatingTo; + diff --git a/app/ns-framework-modules-category/application/check-platform/check-platform-page.js b/app/ns-framework-modules-category/application/check-platform/check-platform-page.js index 3727b20..16343c9 100644 --- a/app/ns-framework-modules-category/application/check-platform/check-platform-page.js +++ b/app/ns-framework-modules-category/application/check-platform/check-platform-page.js @@ -1,6 +1,6 @@ -const application = require("tns-core-modules/application"); +import { Application } from "@nativescript/core"; -function onGridLoaded(args) { +export function onGridLoaded(args) { const grid = args.object; const lbl = grid.getViewById("lbl"); const iconLabel = grid.getViewById("iconLabel"); @@ -12,13 +12,13 @@ function onGridLoaded(args) { lbl.verticalAlignment = "middle"; lbl.fontSize = 24; // >> application-platform-js - if (application.android) { + if (Application.android) { console.log("We are running on Android device!"); // >> (hide) iconLabel.text = String.fromCharCode(0xff17b); lbl.text = "Android Applicaiton"; // << (hide) - } else if (application.ios) { + } else if (Application.ios) { console.log("We are running on iOS device"); // >> (hide) iconLabel.text = String.fromCharCode(0xf179); @@ -27,9 +27,8 @@ function onGridLoaded(args) { } // << application-platform-js } -exports.onGridLoaded = onGridLoaded; -function onNavigatingTo(args) { +export function onNavigatingTo(args) { const page = args.object; page.actionBar.title = args.context.title; } -exports.onNavigatingTo = onNavigatingTo; + diff --git a/app/ns-framework-modules-category/application/check-platform/check-platform-ts-page.ts b/app/ns-framework-modules-category/application/check-platform/check-platform-ts-page.ts index 21cfb59..dfdad76 100644 --- a/app/ns-framework-modules-category/application/check-platform/check-platform-ts-page.ts +++ b/app/ns-framework-modules-category/application/check-platform/check-platform-ts-page.ts @@ -1,8 +1,4 @@ -import { EventData } from "tns-core-modules/data/observable"; -import { NavigatedData, Page } from "tns-core-modules/ui/page"; -import { GridLayout } from "tns-core-modules/ui/layouts/grid-layout"; -import { Label } from "tns-core-modules/ui/label"; -import * as application from "tns-core-modules/application"; +import { Application, EventData, GridLayout, Label, NavigatedData, Page } from "@nativescript/core"; export function onGridLoaded(args: EventData) { const grid = args.object; @@ -16,13 +12,13 @@ export function onGridLoaded(args: EventData) { lbl.verticalAlignment = "middle"; lbl.fontSize = 24; // >> application-platform-ts - if (application.android) { + if (Application.android) { console.log("We are running on Android device!"); // >> (hide) iconLabel.text = String.fromCharCode(0xff17b); lbl.text = "Android Applicaiton"; // << (hide) - } else if (application.ios) { + } else if (Application.ios) { console.log("We are running on iOS device"); // >> (hide) iconLabel.text = String.fromCharCode(0xf179); diff --git a/app/ns-framework-modules-category/application/ios-notification-observer/ios-notification-observer-page.js b/app/ns-framework-modules-category/application/ios-notification-observer/ios-notification-observer-page.js index 9090064..8214776 100644 --- a/app/ns-framework-modules-category/application/ios-notification-observer/ios-notification-observer-page.js +++ b/app/ns-framework-modules-category/application/ios-notification-observer/ios-notification-observer-page.js @@ -1,38 +1,34 @@ -const application = require("tns-core-modules/application"); -const Observable = require("tns-core-modules/data/observable").Observable; -const platformModule = require("tns-core-modules/platform"); -const utilsModule = require("tns-core-modules/utils/utils"); +import { Application, isIOS, Observable, Utils } from "@nativescript/core"; + let vm; let observer; -function onNavigatingTo(args) { +export function onNavigatingTo(args) { const page = args.object; vm = new Observable(); vm.set("info", "Using iOS Notification Observer \nto check the battery life"); vm.set("batteryLife", "0"); - vm.set("isIOS", platformModule.isIOS); + vm.set("isIOS", isIOS); page.bindingContext = vm; page.actionBar.title = args.context.title; } -exports.onNavigatingTo = onNavigatingTo; -function onNavigatedTo(args) { + +export function onNavigatedTo(args) { vm.set("actionBarTitle", args.context.actionBarTitle); // >> app-ios-observer-code - if (application.ios) { - utilsModule.ios.getter(UIDevice, UIDevice.currentDevice).batteryMonitoringEnabled = true; - vm.set("batteryLife", +(utilsModule.ios.getter(UIDevice, UIDevice.currentDevice).batteryLevel * 100).toFixed(1)); - observer = application.ios.addNotificationObserver(UIDeviceBatteryLevelDidChangeNotification, (notification) => { + if (Application.ios) { + Utils.ios.getter(UIDevice, UIDevice.currentDevice).batteryMonitoringEnabled = true; + vm.set("batteryLife", +(Utils.ios.getter(UIDevice, UIDevice.currentDevice).batteryLevel * 100).toFixed(1)); + observer = Application.ios.addNotificationObserver(UIDeviceBatteryLevelDidChangeNotification, (notification) => { // tslint:disable:max-line-length - vm.set("batteryLife", +(utilsModule.ios.getter(UIDevice, UIDevice.currentDevice).batteryLevel * 100).toFixed(1)); + vm.set("batteryLife", +(Utils.ios.getter(UIDevice, UIDevice.currentDevice).batteryLevel * 100).toFixed(1)); }); } // << app-ios-observer-code } -exports.onNavigatedTo = onNavigatedTo; -function onUnloaded() { - if (application.ios) { +export function onUnloaded() { + if (Application.ios) { // >> app-ios-observer-remove - application.ios.removeNotificationObserver(observer, UIDeviceBatteryLevelDidChangeNotification); + Application.ios.removeNotificationObserver(observer, UIDeviceBatteryLevelDidChangeNotification); // << app-ios-observer-remove } } -exports.onUnloaded = onUnloaded; diff --git a/app/ns-framework-modules-category/application/ios-notification-observer/ios-notification-observer-ts-page.ts b/app/ns-framework-modules-category/application/ios-notification-observer/ios-notification-observer-ts-page.ts index fc0252a..1edbcc3 100644 --- a/app/ns-framework-modules-category/application/ios-notification-observer/ios-notification-observer-ts-page.ts +++ b/app/ns-framework-modules-category/application/ios-notification-observer/ios-notification-observer-ts-page.ts @@ -1,7 +1,4 @@ -import * as application from "tns-core-modules/application"; -import { Observable } from "tns-core-modules/data/observable"; -import { isIOS } from "tns-core-modules/platform"; -import { ios as iosApp } from "tns-core-modules/application"; +import { Application, Observable, isIOS } from "@nativescript/core"; let vm; let observer; @@ -23,17 +20,17 @@ export function onNavigatedTo(args) { vm.set("actionBarTitle", args.context.actionBarTitle); // >> app-class-properties-ios - // import { ios as iosApp } from "tns-core-modules/application"; + // import { Application } from "@nativescript/core"; // https://developer.apple.com/documentation/uikit/uiapplicationdelegate?language=objc - let delegate = iosApp.delegate; // the iOS application delegate + let delegate = Application.ios.delegate; // the iOS application delegate - let nativeApp = iosApp.nativeApp; // The native iOS app + let nativeApp = Application.ios.nativeApp; // The native iOS app // https://developer.apple.com/documentation/uikit/uiwindow/1621581-rootviewcontroller?language=objc - let rootController = iosApp.rootController; // the iOS rootViewController + let rootController = Application.ios.rootController; // the iOS rootViewController - let window = iosApp.window; // UIWindow + let window = Application.ios.window; // UIWindow // << app-class-properties-ios // >> app-ios-observer-code-ts @@ -43,7 +40,7 @@ export function onNavigatedTo(args) { "batteryLife", +(UIDevice.currentDevice.batteryLevel * 100).toFixed(1) ); - observer = iosApp.addNotificationObserver( + observer = Application.ios.addNotificationObserver( UIDeviceBatteryLevelDidChangeNotification, notification => { vm.set( @@ -59,7 +56,7 @@ export function onNavigatedTo(args) { export function onUnloaded() { if (isIOS) { // >> app-ios-observer-remove-ts - iosApp.removeNotificationObserver(observer, UIDeviceBatteryLevelDidChangeNotification); + Application.ios.removeNotificationObserver(observer, UIDeviceBatteryLevelDidChangeNotification); // << app-ios-observer-remove-ts } } diff --git a/app/ns-framework-modules-category/color/color-page.js b/app/ns-framework-modules-category/color/color-page.js index 73a81ed..ec4426c 100644 --- a/app/ns-framework-modules-category/color/color-page.js +++ b/app/ns-framework-modules-category/color/color-page.js @@ -1,12 +1,12 @@ -const ListViewLinksModel = require("../../links-view-model"); -const link = require("../../link"); +import ListViewLinksModel from "../../links-view-model"; +import Link from "../../link"; const navigationLinks = [ - new link("Usage", "ns-framework-modules-category/color/usage/usage-page") + new Link("Usage", "ns-framework-modules-category/color/usage/usage-page") ]; const navigationLinksTsc = [ - new link("Usage", "ns-framework-modules-category/color/usage/usage-ts-page") + new Link("Usage", "ns-framework-modules-category/color/usage/usage-ts-page") ]; -function onNavigatingTo(args) { +export function onNavigatingTo(args) { const page = args.object; page.bindingContext = new ListViewLinksModel({ links: navigationLinks, @@ -15,4 +15,4 @@ function onNavigatingTo(args) { tsclinks: navigationLinksTsc }); } -exports.onNavigatingTo = onNavigatingTo; + diff --git a/app/ns-framework-modules-category/color/usage/usage-page.js b/app/ns-framework-modules-category/color/usage/usage-page.js index aa4c9fc..d019519 100644 --- a/app/ns-framework-modules-category/color/usage/usage-page.js +++ b/app/ns-framework-modules-category/color/usage/usage-page.js @@ -1,6 +1,7 @@ // >> creating-colors-code-js -const Color = require("tns-core-modules/color").Color; -const colors = require("tns-core-modules/color/known-colors"); +import { OrangeRed, isKnownName } from "@nativescript/core/color/known-colors"; +import { Color } from "@nativescript/core"; + function createColor() { // Using hex values to create color; const colorHex = new Color("#FF00CC"); @@ -15,12 +16,12 @@ function createColor() { // Using string values to create colors const namedColor = "orangered"; - const isKnown = colors.isKnownName(namedColor); + const isKnown = isKnownName(namedColor); if (isKnown) { const colorName = new Color(namedColor); } // Using supported known colors from tns-core-modules/color/known-colors - const colorKnownName = new Color(colors.OrangeRed); + const colorKnownName = new Color(OrangeRed); } // << creating-colors-code-js diff --git a/app/ns-framework-modules-category/color/usage/usage-ts-page.ts b/app/ns-framework-modules-category/color/usage/usage-ts-page.ts index 0853769..39f5111 100644 --- a/app/ns-framework-modules-category/color/usage/usage-ts-page.ts +++ b/app/ns-framework-modules-category/color/usage/usage-ts-page.ts @@ -1,8 +1,8 @@ // tslint:disable:no-bitwise // >> creating-colors-code-ts -import { Color } from "tns-core-modules/color"; -import * as colors from "tns-core-modules/color/known-colors"; -import { isKnownName } from "tns-core-modules/color/known-colors"; +import { Color } from "@nativescript/core"; +import { isKnownName } from "@nativescript/core/color/known-colors"; +import { OrangeRed } from "@nativescript/core/color/known-colors"; function createColor() { // Using hex values to create color; @@ -24,6 +24,6 @@ function createColor() { } // Using supported known colors from tns-core-modules/color/known-colors - let colorKnownName = new Color(colors.OrangeRed); + let colorKnownName = new Color(OrangeRed); } // << creating-colors-code-ts diff --git a/app/ns-framework-modules-category/connectivity/connectivity-page.js b/app/ns-framework-modules-category/connectivity/connectivity-page.js index d11bfed..465ecbc 100644 --- a/app/ns-framework-modules-category/connectivity/connectivity-page.js +++ b/app/ns-framework-modules-category/connectivity/connectivity-page.js @@ -1,13 +1,13 @@ -const ListViewLinksModel = require("../../links-view-model"); -const link = require("../../link"); +import ListViewLinksModel from "../../links-view-model"; +import Link from "../../link"; const navigationLinks = [ - new link("Usage", "ns-framework-modules-category/connectivity/usage/usage-page") + new Link("Usage", "ns-framework-modules-category/connectivity/usage/usage-page") ]; const navigationLinksTsc = [ - new link("Usage", "ns-framework-modules-category/connectivity/usage/usage-ts-page") + new Link("Usage", "ns-framework-modules-category/connectivity/usage/usage-ts-page") ]; -function onNavigatingTo(args) { +export function onNavigatingTo(args) { const page = args.object; page.bindingContext = new ListViewLinksModel({ links: navigationLinks, @@ -16,4 +16,4 @@ function onNavigatingTo(args) { tsclinks: navigationLinksTsc }); } -exports.onNavigatingTo = onNavigatingTo; + diff --git a/app/ns-framework-modules-category/connectivity/usage/usage-page.js b/app/ns-framework-modules-category/connectivity/usage/usage-page.js index 9bbdc95..46a6229 100644 --- a/app/ns-framework-modules-category/connectivity/usage/usage-page.js +++ b/app/ns-framework-modules-category/connectivity/usage/usage-page.js @@ -1,31 +1,31 @@ // >> connectivity-start-code-js -const connectivityModule = require("tns-core-modules/connectivity"); +import { Connectivity } from "@nativescript/core"; -exports.onNavigatedTo = function(args) { +export function onNavigatedTo(args) { const page = args.object; let connectionTypeString; - const type = connectivityModule.getConnectionType(); + const type = Connectivity.getConnectionType(); switch (type) { - case connectivityModule.connectionType.none: + case Connectivity.connectionType.none: console.log("No connection"); connectionTypeString = "No Internet connectivity!"; break; - case connectivityModule.connectionType.wifi: + case Connectivity.connectionType.wifi: console.log("WiFi connection"); connectionTypeString = "WiFI connectivity!"; break; - case connectivityModule.connectionType.mobile: + case Connectivity.connectionType.mobile: console.log("Mobile connection"); connectionTypeString = "Mobile connectivity!"; break; - case connectivityModule.connectionType.ethernet: + case Connectivity.connectionType.ethernet: console.log("Ethernet connection"); connectionTypeString = "Ethernet connectivity!"; break; - case connectivityModule.connectionType.bluetooth: + case Connectivity.connectionType.bluetooth: console.log("Bluetooth connection"); connectionTypeString = "Bluetooth connectivity!"; break; @@ -33,21 +33,21 @@ exports.onNavigatedTo = function(args) { break; } - connectivityModule.startMonitoring((newConnectionType) => { + Connectivity.startMonitoring((newConnectionType) => { switch (newConnectionType) { - case connectivityModule.connectionType.none: + case Connectivity.connectionType.none: console.log("Connection type changed to none."); break; - case connectivityModule.connectionType.wifi: + case Connectivity.connectionType.wifi: console.log("Connection type changed to WiFi."); break; - case connectivityModule.connectionType.mobile: + case Connectivity.connectionType.mobile: console.log("Connection type changed to mobile."); break; - case connectivityModule.connectionType.ethernet: + case Connectivity.connectionType.ethernet: console.log("Connection type changed to ethernet."); break; - case connectivityModule.connectionType.bluetooth: + case Connectivity.connectionType.bluetooth: console.log("Connection type changed to bluetooth."); break; default: @@ -56,8 +56,8 @@ exports.onNavigatedTo = function(args) { }); // Stoping the connection monitoring - connectivityModule.stopMonitoring(); + Connectivity.stopMonitoring(); page.bindingContext = { connectionType: connectionTypeString }; -}; +} // << connectivity-start-code-js diff --git a/app/ns-framework-modules-category/connectivity/usage/usage-ts-page.ts b/app/ns-framework-modules-category/connectivity/usage/usage-ts-page.ts index 010de30..6fbde36 100644 --- a/app/ns-framework-modules-category/connectivity/usage/usage-ts-page.ts +++ b/app/ns-framework-modules-category/connectivity/usage/usage-ts-page.ts @@ -1,30 +1,30 @@ // >> connectivity-start-code-ts -import { connectionType, getConnectionType, startMonitoring, stopMonitoring }from "tns-core-modules/connectivity"; +import { Connectivity } from "@nativescript/core"; export function onNavigatedTo(args) { const page = args.object; let connectionTypeString; - const type = getConnectionType(); + const type = Connectivity.getConnectionType(); switch (type) { - case connectionType.none: + case Connectivity.connectionType.none: console.log("No connection"); connectionTypeString = "No Internet connectivity!"; break; - case connectionType.wifi: + case Connectivity.connectionType.wifi: console.log("WiFi connection"); connectionTypeString = "WiFI connectivity!"; break; - case connectionType.mobile: + case Connectivity.connectionType.mobile: console.log("Mobile connection"); connectionTypeString = "Mobile connectivity!"; break; - case connectionType.ethernet: + case Connectivity.connectionType.ethernet: console.log("Ethernet connection"); connectionTypeString = "Ethernet connectivity!"; break; - case connectionType.bluetooth: + case Connectivity.connectionType.bluetooth: console.log("Bluetooth connection"); connectionTypeString = "Bluetooth connectivity!"; break; @@ -32,21 +32,21 @@ export function onNavigatedTo(args) { break; } - startMonitoring((newConnectionType) => { + Connectivity.startMonitoring((newConnectionType) => { switch (newConnectionType) { - case connectionType.none: + case Connectivity.connectionType.none: console.log("Connection type changed to none."); break; - case connectionType.wifi: + case Connectivity.connectionType.wifi: console.log("Connection type changed to WiFi."); break; - case connectionType.mobile: + case Connectivity.connectionType.mobile: console.log("Connection type changed to mobile."); break; - case connectionType.ethernet: + case Connectivity.connectionType.ethernet: console.log("Connection type changed to ethernet."); break; - case connectionType.bluetooth: + case Connectivity.connectionType.bluetooth: console.log("Connection type changed to bluetooth."); break; default: @@ -55,7 +55,7 @@ export function onNavigatedTo(args) { }); // Stoping the connection monitoring - stopMonitoring(); + Connectivity.stopMonitoring(); page.bindingContext = { connectionType: connectionTypeString }; } diff --git a/app/ns-framework-modules-category/console/console-page.js b/app/ns-framework-modules-category/console/console-page.js index 39897e1..23d1871 100644 --- a/app/ns-framework-modules-category/console/console-page.js +++ b/app/ns-framework-modules-category/console/console-page.js @@ -1,12 +1,12 @@ -const ListViewLinksModel = require("../../links-view-model"); -const link = require("../../link"); +import ListViewLinksModel from "../../links-view-model"; +import Link from "../../link"; const navigationLinks = [ - new link("Usage", "ns-framework-modules-category/console/usage/usage-page") + new Link("Usage", "ns-framework-modules-category/console/usage/usage-page") ]; const navigationLinksTsc = [ - new link("Usage", "ns-framework-modules-category/console/usage/usage-ts-page") + new Link("Usage", "ns-framework-modules-category/console/usage/usage-ts-page") ]; -function onNavigatingTo(args) { +export function onNavigatingTo(args) { const page = args.object; page.bindingContext = new ListViewLinksModel({ links: navigationLinks, @@ -15,4 +15,4 @@ function onNavigatingTo(args) { tsclinks: navigationLinksTsc }); } -exports.onNavigatingTo = onNavigatingTo; + diff --git a/app/ns-framework-modules-category/console/usage/usage-page.js b/app/ns-framework-modules-category/console/usage/usage-page.js index f695a51..b557da7 100644 --- a/app/ns-framework-modules-category/console/usage/usage-page.js +++ b/app/ns-framework-modules-category/console/usage/usage-page.js @@ -1,6 +1,7 @@ -exports.onNavigatedTo = function (args) { +export function onNavigatedTo (args) { const jsonObj = { - objProp: "I am Object!", objProp2: + objProp: "I am Object!", +objProp2: { objProp3: "I am Object!", objProp4: "I am Object!" @@ -33,4 +34,4 @@ exports.onNavigatedTo = function (args) { // Prints the current stack trace in the console. console.trace(); // << console-trace -}; +} diff --git a/app/ns-framework-modules-category/fetch/fetch-page.js b/app/ns-framework-modules-category/fetch/fetch-page.js index 557937b..2bbf205 100644 --- a/app/ns-framework-modules-category/fetch/fetch-page.js +++ b/app/ns-framework-modules-category/fetch/fetch-page.js @@ -1,14 +1,14 @@ -const ListViewLinksModel = require("../../links-view-model"); -const link = require("../../link"); +import ListViewLinksModel from "../../links-view-model"; +import Link from "../../link"; const navigationLinks = [ - new link("Get", "ns-framework-modules-category/fetch/get/get-page"), - new link("Post", "ns-framework-modules-category/fetch/post/post-page") + new Link("Get", "ns-framework-modules-category/fetch/get/get-page"), + new Link("Post", "ns-framework-modules-category/fetch/post/post-page") ]; const navigationLinksTsc = [ - new link("Get", "ns-framework-modules-category/fetch/get/get-ts-page"), - new link("Post", "ns-framework-modules-category/fetch/post/post-ts-page") + new Link("Get", "ns-framework-modules-category/fetch/get/get-ts-page"), + new Link("Post", "ns-framework-modules-category/fetch/post/post-ts-page") ]; -function onNavigatingTo(args) { +export function onNavigatingTo(args) { const page = args.object; page.bindingContext = new ListViewLinksModel({ links: navigationLinks, @@ -17,4 +17,4 @@ function onNavigatingTo(args) { tsclinks: navigationLinksTsc }); } -exports.onNavigatingTo = onNavigatingTo; + diff --git a/app/ns-framework-modules-category/fetch/get/get-page.js b/app/ns-framework-modules-category/fetch/get/get-page.js index 26316a4..8de867c 100644 --- a/app/ns-framework-modules-category/fetch/get/get-page.js +++ b/app/ns-framework-modules-category/fetch/get/get-page.js @@ -1,6 +1,6 @@ -const Observable = require("tns-core-modules/data/observable").Observable; +import { Observable } from "@nativescript/core"; -function onNavigatingTo(args) { +export function onNavigatingTo(args) { const page = args.object; const vm = new Observable(); @@ -23,7 +23,7 @@ function onNavigatingTo(args) { page.bindingContext = vm; } -function onButtonTap(args) { +export function onButtonTap(args) { const button = args.object; const page = args.object.page; const vm = page.bindingContext; @@ -154,5 +154,3 @@ function getResponseFormDataExample(viewModel) { // << request-response-form-data } -exports.onNavigatingTo = onNavigatingTo; -exports.onButtonTap = onButtonTap; diff --git a/app/ns-framework-modules-category/fetch/get/get-ts-page.ts b/app/ns-framework-modules-category/fetch/get/get-ts-page.ts index e95b106..f3895c5 100644 --- a/app/ns-framework-modules-category/fetch/get/get-ts-page.ts +++ b/app/ns-framework-modules-category/fetch/get/get-ts-page.ts @@ -1,4 +1,4 @@ -import { Observable } from "tns-core-modules/data/observable"; +import { Observable } from "@nativescript/core"; export function onNavigatingTo(args) { const page = args.object; diff --git a/app/ns-framework-modules-category/fetch/post/post-page.js b/app/ns-framework-modules-category/fetch/post/post-page.js index 3c55348..86c2a0d 100644 --- a/app/ns-framework-modules-category/fetch/post/post-page.js +++ b/app/ns-framework-modules-category/fetch/post/post-page.js @@ -1,6 +1,6 @@ -const Observable = require("tns-core-modules/data/observable").Observable; +import { Observable } from "@nativescript/core"; -function onNavigatingTo(args) { +export function onNavigatingTo(args) { const page = args.object; const vm = new Observable(); @@ -11,7 +11,7 @@ function onNavigatingTo(args) { page.bindingContext = vm; } -function makePostRequest(args) { +export function makePostRequest(args) { const page = args.object.page; const vm = page.bindingContext; // >> fetch-post @@ -37,6 +37,3 @@ function makePostRequest(args) { }); // << fetch-post } - -exports.onNavigatingTo = onNavigatingTo; -exports.makePostRequest = makePostRequest; diff --git a/app/ns-framework-modules-category/fetch/post/post-ts-page.ts b/app/ns-framework-modules-category/fetch/post/post-ts-page.ts index b52d4fd..21355a2 100644 --- a/app/ns-framework-modules-category/fetch/post/post-ts-page.ts +++ b/app/ns-framework-modules-category/fetch/post/post-ts-page.ts @@ -1,4 +1,4 @@ -import { Observable } from "tns-core-modules/data/observable"; +import { Observable } from "@nativescript/core"; export function onNavigatingTo(args) { const page = args.object; diff --git a/app/ns-framework-modules-category/file-system/delete/delete-page.js b/app/ns-framework-modules-category/file-system/delete/delete-page.js index 56d9ffd..cd891bb 100644 --- a/app/ns-framework-modules-category/file-system/delete/delete-page.js +++ b/app/ns-framework-modules-category/file-system/delete/delete-page.js @@ -1,12 +1,11 @@ -const Observable = require("tns-core-modules/data/observable").Observable; -const fileSystemModule = require("tns-core-modules/file-system"); +import { Observable, knownFolders } from "@nativescript/core"; let file; let myFolder; -function onNavigatingTo(args) { +export function onNavigatingTo(args) { const page = args.object; const vm = new Observable(); - const documents = fileSystemModule.knownFolders.documents(); + const documents = knownFolders.documents(); myFolder = documents.getFolder("TestFolderName"); file = myFolder.getFile("TestFileName.txt"); vm.set("myFolderPath", myFolder.path); @@ -15,7 +14,7 @@ function onNavigatingTo(args) { page.bindingContext = vm; } -function onDeleteFile(args) { +export function onDeleteFile(args) { const page = args.object.page; const vm = page.bindingContext; if (file) { @@ -33,7 +32,7 @@ function onDeleteFile(args) { } } -function onDeleteFolder(args) { +export function onDeleteFolder(args) { const page = args.object.page; const vm = page.bindingContext; if (myFolder) { @@ -52,7 +51,7 @@ function onDeleteFolder(args) { } } -function onClearFolder(args) { +export function onClearFolder(args) { const page = args.object.page; const vm = page.bindingContext; if (myFolder) { @@ -70,15 +69,13 @@ function onClearFolder(args) { } } -function onReset() { - const documents = fileSystemModule.knownFolders.documents(); +export function onReset(args) { + const page = args.object.page; + const vm = page.bindingContext; + const documents = knownFolders.documents(); myFolder = documents.getFolder("TestFolderName"); file = myFolder.getFile("TestFileName.txt"); - tresultMessage = "Successfully reset!"; + vm.set("resultMessage", "Successfully reset!"); } -exports.onNavigatingTo = onNavigatingTo; -exports.onDeleteFile = onDeleteFile; -exports.onDeleteFolder = onDeleteFolder; -exports.onClearFolder = onClearFolder; -exports.onReset = onReset; + diff --git a/app/ns-framework-modules-category/file-system/delete/delete-ts-page.ts b/app/ns-framework-modules-category/file-system/delete/delete-ts-page.ts index def3cd7..f3bdabd 100644 --- a/app/ns-framework-modules-category/file-system/delete/delete-ts-page.ts +++ b/app/ns-framework-modules-category/file-system/delete/delete-ts-page.ts @@ -1,6 +1,4 @@ -import { Observable } from "tns-core-modules/data/observable"; -import { knownFolders, File, Folder } from "tns-core-modules/file-system"; -import { Page } from "tns-core-modules/ui/page"; +import { File, Folder, knownFolders, Observable, Page } from "@nativescript/core"; let file: File; let myFolder: Folder; diff --git a/app/ns-framework-modules-category/file-system/file-system-page.js b/app/ns-framework-modules-category/file-system/file-system-page.js index a8713c0..649a225 100644 --- a/app/ns-framework-modules-category/file-system/file-system-page.js +++ b/app/ns-framework-modules-category/file-system/file-system-page.js @@ -1,20 +1,20 @@ -const ListViewLinksModel = require("../../links-view-model"); -const link = require("../../link"); +import ListViewLinksModel from "../../links-view-model"; +import Link from "../../link"; const navigationLinks = [ - new link("Usage", "ns-framework-modules-category/file-system/usage/usage-page"), - new link("Delete", "ns-framework-modules-category/file-system/delete/delete-page"), - new link("Paths", "ns-framework-modules-category/file-system/paths/paths-page"), - new link("Read", "ns-framework-modules-category/file-system/read/read-page"), - new link("Update", "ns-framework-modules-category/file-system/update/update-page") + new Link("Usage", "ns-framework-modules-category/file-system/usage/usage-page"), + new Link("Delete", "ns-framework-modules-category/file-system/delete/delete-page"), + new Link("Paths", "ns-framework-modules-category/file-system/paths/paths-page"), + new Link("Read", "ns-framework-modules-category/file-system/read/read-page"), + new Link("Update", "ns-framework-modules-category/file-system/update/update-page") ]; const navigationLinksTsc = [ - new link("Usage", "ns-framework-modules-category/file-system/usage/usage-ts-page"), - new link("Delete", "ns-framework-modules-category/file-system/delete/delete-ts-page"), - new link("Paths", "ns-framework-modules-category/file-system/paths/paths-ts-page"), - new link("Read", "ns-framework-modules-category/file-system/read/read-ts-page"), - new link("Update", "ns-framework-modules-category/file-system/update/update-ts-page") + new Link("Usage", "ns-framework-modules-category/file-system/usage/usage-ts-page"), + new Link("Delete", "ns-framework-modules-category/file-system/delete/delete-ts-page"), + new Link("Paths", "ns-framework-modules-category/file-system/paths/paths-ts-page"), + new Link("Read", "ns-framework-modules-category/file-system/read/read-ts-page"), + new Link("Update", "ns-framework-modules-category/file-system/update/update-ts-page") ]; -function onNavigatingTo(args) { +export function onNavigatingTo(args) { const page = args.object; page.bindingContext = new ListViewLinksModel({ links: navigationLinks, @@ -23,4 +23,4 @@ function onNavigatingTo(args) { tsclinks: navigationLinksTsc }); } -exports.onNavigatingTo = onNavigatingTo; + diff --git a/app/ns-framework-modules-category/file-system/paths/paths-page.js b/app/ns-framework-modules-category/file-system/paths/paths-page.js index 801844d..5325280 100644 --- a/app/ns-framework-modules-category/file-system/paths/paths-page.js +++ b/app/ns-framework-modules-category/file-system/paths/paths-page.js @@ -1,37 +1,36 @@ -const Observable = require("tns-core-modules/data/observable").Observable; -const fileSystemModule = require("tns-core-modules/file-system"); +import { File, Folder, Observable, knownFolders, path } from "@nativescript/core"; -function onNavigatingTo(args) { +export function onNavigatingTo(args) { const page = args.object; const vm = new Observable(); // >> fs-paths-normalize-code - let documentsFolder = fileSystemModule.knownFolders.documents(); - const currentAppFolder = fileSystemModule.knownFolders.currentApp(); - const tempFolder = fileSystemModule.knownFolders.temp(); + let documentsFolder = knownFolders.documents(); + const currentAppFolder = knownFolders.currentApp(); + const tempFolder = knownFolders.temp(); const testPath = "///test.txt"; // Get a normalized path such as /test.txt from ///test.txt - vm.set("documents", fileSystemModule.path.normalize(documentsFolder.path + testPath)); - vm.set("currentApp", fileSystemModule.path.normalize(currentAppFolder.path + testPath)); - vm.set("temp", fileSystemModule.path.normalize(tempFolder.path + testPath)); + vm.set("documents", path.normalize(documentsFolder.path + testPath)); + vm.set("currentApp", path.normalize(currentAppFolder.path + testPath)); + vm.set("temp", path.normalize(tempFolder.path + testPath)); // << fs-paths-normalize-code // >> fs-paths-join-code // Generate a path like /myFiles/test.txt - documentsFolder = fileSystemModule.knownFolders.documents(); - const filePath = fileSystemModule.path.join(documentsFolder.path, "myFiles", "test.txt"); + documentsFolder = knownFolders.documents(); + const filePath = path.join(documentsFolder.path, "myFiles", "test.txt"); // << fs-paths-join-code console.log(filePath); // >> fs-paths-separator-code // An OS dependent path separator, "\" or "/". - const separator = fileSystemModule.path.separator; + const separator = path.separator; // << fs-paths-separator-code console.log(separator); // >> fs-paths-create-folder-code - const folderPath = fileSystemModule.path.join(fileSystemModule.knownFolders.documents().path, "music"); - const folder = fileSystemModule.Folder.fromPath(folderPath); + const folderPath = path.join(knownFolders.documents().path, "music"); + const folder = Folder.fromPath(folderPath); // << fs-paths-create-folder-code console.log(folder); @@ -42,13 +41,13 @@ function onNavigatingTo(args) { page.bindingContext = vm; } -function onSaveContentToFile(args) { +export function onSaveContentToFile(args) { const page = args.object.page; const vm = page.bindingContext; // >> fs-paths-create-file-code - const documentsFolder = fileSystemModule.knownFolders.documents(); - const path = fileSystemModule.path.join(documentsFolder.path, "FileFromPath.txt"); - const file = fileSystemModule.File.fromPath(path); + const documentsFolder = knownFolders.documents(); + const filePath = path.join(documentsFolder.path, "FileFromPath.txt"); + const file = File.fromPath(filePath); // Writing text to the file. file.writeText(vm.get("textContentToBeSaved")) @@ -66,5 +65,4 @@ function onSaveContentToFile(args) { // << fs-paths-create-file-code } -exports.onNavigatingTo = onNavigatingTo; -exports.onSaveContentToFile = onSaveContentToFile; + diff --git a/app/ns-framework-modules-category/file-system/paths/paths-ts-page.ts b/app/ns-framework-modules-category/file-system/paths/paths-ts-page.ts index fa6ab98..8e353a0 100644 --- a/app/ns-framework-modules-category/file-system/paths/paths-ts-page.ts +++ b/app/ns-framework-modules-category/file-system/paths/paths-ts-page.ts @@ -1,6 +1,5 @@ -import { Observable } from "tns-core-modules/data/observable"; -import { knownFolders, path, Folder, File } from "tns-core-modules/file-system"; -import { Page } from "tns-core-modules/ui/page"; +import { File, Folder, knownFolders, Observable, Page, path } from "@nativescript/core"; + export function onNavigatingTo(args) { const page: Page = args.object; const vm = new Observable(); diff --git a/app/ns-framework-modules-category/file-system/read/read-page.js b/app/ns-framework-modules-category/file-system/read/read-page.js index 1f10bb4..898c25b 100644 --- a/app/ns-framework-modules-category/file-system/read/read-page.js +++ b/app/ns-framework-modules-category/file-system/read/read-page.js @@ -1,9 +1,6 @@ -const Observable = require("tns-core-modules/data/observable").Observable; -const ObservableArray = require("tns-core-modules/data/observable-array").ObservableArray; -const fileSystemModule = require("tns-core-modules/file-system"); -const imageSourceModule = require("tns-core-modules/image-source"); +import { File, Folder, ImageSource, Observable, ObservableArray, knownFolders, path } from "@nativescript/core"; -function onNavigatingTo(args) { +export function onNavigatingTo(args) { const page = args.object; const vm = new Observable(); const array = new ObservableArray(); @@ -13,7 +10,7 @@ function onNavigatingTo(args) { "Open source framework for building truly native mobile apps" + "with Angular, TypeScript or JavaScript."; - let documents = fileSystemModule.knownFolders.documents(); + let documents = knownFolders.documents(); const folder = documents.getFolder(folderName); const file = folder.getFile(fileName); @@ -32,7 +29,7 @@ function onNavigatingTo(args) { }); // >> fs-folder-content-code - documents = fileSystemModule.knownFolders.documents(); + documents = knownFolders.documents(); documents.getEntities() .then((entities) => { // entities is array with the document's files and folders. @@ -51,14 +48,14 @@ function onNavigatingTo(args) { }); // << fs-folder-content-code // >> fs-file-exists-check-code - documents = fileSystemModule.knownFolders.documents(); - const path = fileSystemModule.path.join(documents.path, "Text.txt"); - const exists = fileSystemModule.File.exists(path); + documents = knownFolders.documents(); + const filePath = path.join(documents.path, "Text.txt"); + const exists = File.exists(filePath); console.log(`Does Text.txt exists: ${exists}`); // << fs-file-exists-check-code // >> fs-folder-exists-check-code - const temp = fileSystemModule.knownFolders.temp(); - const tempExists = fileSystemModule.Folder.exists(temp.path); + const temp = knownFolders.temp(); + const tempExists = Folder.exists(temp.path); console.log(`Does temp folder exists: ${tempExists}`); // << fs-folder-exists-check-code @@ -69,17 +66,17 @@ function onNavigatingTo(args) { page.bindingContext = vm; } -function onReadSync(args) { +export function onReadSync(args) { const page = args.object.page; const vm = page.bindingContext; // >> fs-read-sync-code - const image = imageSourceModule.fromResource("icon"); - const folder = fileSystemModule.knownFolders.documents(); - const path = fileSystemModule.path.join(folder.path, "Test.png"); - const saved = image.saveToFile(path, "png"); + const image = ImageSource.fromResourceSync("icon"); + const folder = knownFolders.documents(); + const filePath = path.join(folder.path, "Test.png"); + const saved = image.saveToFile(filePath, "png"); if (saved) { - const imageFile = fileSystemModule.File.fromPath(path); + const imageFile = File.fromPath(filePath); const binarySource = imageFile.readSync((err) => { console.log(err); }); @@ -93,5 +90,3 @@ function onReadSync(args) { vm.set("binarySource", `Successfully read binary data: ${binarySource}`); } } -exports.onNavigatingTo = onNavigatingTo; -exports.onReadSync = onReadSync; diff --git a/app/ns-framework-modules-category/file-system/read/read-ts-page.ts b/app/ns-framework-modules-category/file-system/read/read-ts-page.ts index 00091d6..7b5487d 100644 --- a/app/ns-framework-modules-category/file-system/read/read-ts-page.ts +++ b/app/ns-framework-modules-category/file-system/read/read-ts-page.ts @@ -1,8 +1,4 @@ -import { Observable } from "tns-core-modules/data/observable"; -import { ObservableArray } from "tns-core-modules/data/observable-array"; -import { knownFolders, path, File, Folder } from "tns-core-modules/file-system"; -import { fromResource, ImageSource } from "tns-core-modules/image-source"; -import { Page } from "tns-core-modules/ui/page"; +import { File, Folder, ImageSource, knownFolders, Observable, ObservableArray, Page, path } from "@nativescript/core"; export function onNavigatingTo(args) { const page: Page = args.object; @@ -74,7 +70,7 @@ export function onReadSync(args) { const page: Page = args.object.page; const vm = page.bindingContext; // >> fs-read-sync-code-ts - const image: ImageSource = fromResource("icon"); + const image: ImageSource = ImageSource.fromResourceSync("icon"); const folder: Folder = knownFolders.documents(); const filePath: string = path.join(folder.path, "Test.png"); const saved = image.saveToFile(filePath, "png"); diff --git a/app/ns-framework-modules-category/file-system/update/update-page.js b/app/ns-framework-modules-category/file-system/update/update-page.js index b9f7fb3..6291671 100644 --- a/app/ns-framework-modules-category/file-system/update/update-page.js +++ b/app/ns-framework-modules-category/file-system/update/update-page.js @@ -1,13 +1,11 @@ -const Observable = require("tns-core-modules/data/observable").Observable; -const fileSystemModule = require("tns-core-modules/file-system"); -const dialogs = require("tns-core-modules/ui/dialogs"); +import { Dialogs, Observable, knownFolders } from "@nativescript/core"; let file; let myFolder; -function onNavigatingTo(args) { +export function onNavigatingTo(args) { const page = args.object; const vm = new Observable(); - const documents = fileSystemModule.knownFolders.documents(); + const documents = knownFolders.documents(); file = documents.getFile("TestFileName.txt"); myFolder = documents.getFolder("TestFolderName"); @@ -21,7 +19,7 @@ function onNavigatingTo(args) { page.bindingContext = vm; } -function onFileRename(args) { +export function onFileRename(args) { const page = args.object.page; const vm = page.bindingContext; // >> fs-update-rename-file-code @@ -35,7 +33,7 @@ function onFileRename(args) { // Error! console.log("Error: "); console.log(err); - dialogs.alert(err) + Dialogs.alert(err) .then(() => { console.log("Dialog closed!"); }); @@ -43,7 +41,7 @@ function onFileRename(args) { // << fs-update-rename-file-code } -function onFolderRename(args) { +export function onFolderRename(args) { const page = args.object.page; const vm = page.bindingContext; // >> fs-update-rename-folder-code @@ -57,7 +55,7 @@ function onFolderRename(args) { // Error! console.log("Error: "); console.log(err); - dialogs.alert(err) + Dialogs.alert(err) .then(() => { console.log("Dialog closed!"); }); @@ -65,6 +63,3 @@ function onFolderRename(args) { // << fs-update-rename-folder-code } -exports.onNavigatingTo = onNavigatingTo; -exports.onFileRename = onFileRename; -exports.onFolderRename = onFolderRename; diff --git a/app/ns-framework-modules-category/file-system/update/update-ts-page.ts b/app/ns-framework-modules-category/file-system/update/update-ts-page.ts index fc330f0..1e081ca 100644 --- a/app/ns-framework-modules-category/file-system/update/update-ts-page.ts +++ b/app/ns-framework-modules-category/file-system/update/update-ts-page.ts @@ -1,7 +1,4 @@ -import { Observable } from "tns-core-modules/data/observable"; -import { File, Folder, knownFolders } from "tns-core-modules/file-system"; -import * as dialogs from "tns-core-modules/ui/dialogs"; -import { Page } from "tns-core-modules/ui/page"; +import { Dialogs, File, Folder, knownFolders, Observable, Page } from "@nativescript/core"; let file: File; let myFolder: Folder; @@ -37,7 +34,7 @@ export function onFileRename(args) { // Error! console.log("Error: "); console.log(err); - dialogs.alert(err) + Dialogs.alert(err) .then(() => { console.log("Dialog closed!"); }); @@ -59,7 +56,7 @@ export function onFolderRename(args) { // Error! console.log("Error: "); console.log(err); - dialogs.alert(err) + Dialogs.alert(err) .then(() => { console.log("Dialog closed!"); }); diff --git a/app/ns-framework-modules-category/file-system/usage/usage-page.js b/app/ns-framework-modules-category/file-system/usage/usage-page.js index 6ad0689..398c6f0 100644 --- a/app/ns-framework-modules-category/file-system/usage/usage-page.js +++ b/app/ns-framework-modules-category/file-system/usage/usage-page.js @@ -1,9 +1,9 @@ -const Observable = require("tns-core-modules/data/observable").Observable; // >> fs-create-require -const fileSystemModule = require("tns-core-modules/file-system"); +import { knownFolders } from "@nativescript/core"; // << fs-create-require +import { Observable } from "@nativescript/core"; -function onNavigatingTo(args) { +export function onNavigatingTo(args) { const page = args.object; const vm = new Observable(); @@ -19,11 +19,11 @@ function onNavigatingTo(args) { page.bindingContext = vm; } -function onCreateFile(args) { +export function onCreateFile(args) { const page = args.object.page; const vm = page.bindingContext; // >> fs-create-all-code - const documents = fileSystemModule.knownFolders.documents(); + const documents = knownFolders.documents(); const folder = documents.getFolder(vm.get("folderName") || "testFolder"); const file = folder.getFile(`${(vm.get("fileName") || "testFile")}`.txt); @@ -40,5 +40,4 @@ function onCreateFile(args) { }); // << fs-create-all-code } -exports.onNavigatingTo = onNavigatingTo; -exports.onCreateFile = onCreateFile; + diff --git a/app/ns-framework-modules-category/file-system/usage/usage-ts-page.ts b/app/ns-framework-modules-category/file-system/usage/usage-ts-page.ts index 5bf10d2..c047957 100644 --- a/app/ns-framework-modules-category/file-system/usage/usage-ts-page.ts +++ b/app/ns-framework-modules-category/file-system/usage/usage-ts-page.ts @@ -1,7 +1,6 @@ -import { Observable } from "tns-core-modules/data/observable"; -import { Page } from "tns-core-modules/ui/page"; +import { Observable, Page } from "@nativescript/core"; // >> fs-create-import -import { knownFolders, Folder, File } from "tns-core-modules/file-system"; +import { knownFolders, Folder, File } from "@nativescript/core"; // << fs-create-import export function onNavigatingTo(args) { diff --git a/app/ns-framework-modules-category/fps-meter/fps-meter-page.js b/app/ns-framework-modules-category/fps-meter/fps-meter-page.js index e775843..9f83ef9 100644 --- a/app/ns-framework-modules-category/fps-meter/fps-meter-page.js +++ b/app/ns-framework-modules-category/fps-meter/fps-meter-page.js @@ -1,12 +1,12 @@ -const ListViewLinksModel = require("../../links-view-model"); -const link = require("../../link"); +import ListViewLinksModel from "../../links-view-model"; +import Link from "../../link"; const navigationLinks = [ - new link("Usage", "ns-framework-modules-category/fps-meter/usage/usage-page") + new Link("Usage", "ns-framework-modules-category/fps-meter/usage/usage-page") ]; const navigationLinksTsc = [ - new link("Usage", "ns-framework-modules-category/fps-meter/usage/usage-ts-page") + new Link("Usage", "ns-framework-modules-category/fps-meter/usage/usage-ts-page") ]; -function onNavigatingTo(args) { +export function onNavigatingTo(args) { const page = args.object; page.bindingContext = new ListViewLinksModel({ links: navigationLinks, @@ -15,4 +15,4 @@ function onNavigatingTo(args) { tsclinks: navigationLinksTsc }); } -exports.onNavigatingTo = onNavigatingTo; + diff --git a/app/ns-framework-modules-category/fps-meter/usage/usage-page.js b/app/ns-framework-modules-category/fps-meter/usage/usage-page.js index d2a192f..cc0608e 100644 --- a/app/ns-framework-modules-category/fps-meter/usage/usage-page.js +++ b/app/ns-framework-modules-category/fps-meter/usage/usage-page.js @@ -1,20 +1,17 @@ // >> fps-meter-js -const fpsMeter = require("tns-core-modules/fps-meter"); - +import { addCallback, removeCallback, start, stop } from "@nativescript/core/fps-meter"; let callbackId; -function startFPSMeter(args) { - callbackId = fpsMeter.addCallback((fps, minFps) => { +export function startFPSMeter(args) { + callbackId = addCallback((fps, minFps) => { console.log(`Frames per seconds: ${fps.toFixed(2)}`); console.log(minFps.toFixed(2)); }); - fpsMeter.start(); + start(); } -function stopFPSMeter(args) { - fpsMeter.removeCallback(callbackId); - fpsMeter.stop(); +export function stopFPSMeter(args) { + removeCallback(callbackId); + stop(); } -exports.startFPSMeter = startFPSMeter; -exports.stopFPSMeter = stopFPSMeter; // << fps-meter-js diff --git a/app/ns-framework-modules-category/fps-meter/usage/usage-ts-page.ts b/app/ns-framework-modules-category/fps-meter/usage/usage-ts-page.ts index 0aed394..de71c58 100644 --- a/app/ns-framework-modules-category/fps-meter/usage/usage-ts-page.ts +++ b/app/ns-framework-modules-category/fps-meter/usage/usage-ts-page.ts @@ -1,5 +1,5 @@ // >> fps-meter-ts -import { removeCallback, start, stop, addCallback } from "tns-core-modules/fps-meter"; +import {addCallback, removeCallback, start, stop} from "@nativescript/core/fps-meter"; let callbackId; export function startFPSMeter(args) { diff --git a/app/ns-framework-modules-category/http/get/get-page.js b/app/ns-framework-modules-category/http/get/get-page.js index 5ffb4b0..8d24007 100644 --- a/app/ns-framework-modules-category/http/get/get-page.js +++ b/app/ns-framework-modules-category/http/get/get-page.js @@ -1,9 +1,9 @@ -const Observable = require("tns-core-modules/data/observable").Observable; -const fileSystemModule = require("tns-core-modules/file-system"); // >> require-http-get -const httpModule = require("tns-core-modules/http"); +import { Http } from "@nativescript/core"; // << require-http-get -function onNavigatingTo(args) { +import { Observable, path, knownFolders } from "@nativescript/core"; + +export function onNavigatingTo(args) { const page = args.object; const vm = new Observable(); @@ -35,7 +35,7 @@ function onNavigatingTo(args) { page.bindingContext = vm; } -function onButtonTap(args) { +export function onButtonTap(args) { const button = args.object; const page = args.object.page; const vm = page.bindingContext; @@ -87,7 +87,7 @@ function onButtonTap(args) { function getStringExample(viewModel) { // >> get-string-code - httpModule.getString("https://httpbin.org/get").then((r) => { + Http.getString("https://httpbin.org/get").then((r) => { viewModel.set("getStringResult", r); }, (e) => { // >> (hide) @@ -99,7 +99,7 @@ function getStringExample(viewModel) { } function getJSONExample(viewModel) { // >> get-json-code - httpModule.getJSON("https://httpbin.org/get").then((r) => { + Http.getJSON("https://httpbin.org/get").then((r) => { // >> (hide) viewModel.set("host", r.headers.Host); viewModel.set("userAgent", r.headers["User-Agent"]); @@ -116,7 +116,7 @@ function getJSONExample(viewModel) { } function getImageExample(viewModel) { // >> get-image-code - httpModule.getImage("https://httpbin.org/image/jpeg").then((r) => { + Http.getImage("https://httpbin.org/image/jpeg").then((r) => { // getImage method returns ImageSource object // >> (hide) viewModel.set("getImageResult", r); @@ -134,7 +134,7 @@ function getImageExample(viewModel) { function getResponseStatusCodeExample(viewModel) { // >> request-status-code - httpModule.request({ + Http.request({ url: "https://httpbin.org/get", method: "GET" }).then((response) => { @@ -155,7 +155,7 @@ function getResponseStatusCodeExample(viewModel) { function getResponseHeadersExample(viewModel) { console.log("getResponseHeadersExample"); // >> request-response-header - httpModule.request({ + Http.request({ url: "https://httpbin.org/get", method: "GET" }).then((response) => { @@ -176,7 +176,7 @@ function getResponseHeadersExample(viewModel) { function getResponseContentExample(viewModel) { // >> request-response-content - httpModule.request({ + Http.request({ url: "https://httpbin.org/get", method: "GET" }).then((response) => { @@ -201,7 +201,7 @@ function getResponseContentExample(viewModel) { function getFileExample(viewModel) { // >> get-file-code - httpModule.getFile("https://raw.githubusercontent.com/NativeScript/NativeScript/master/tests/app/logo.png").then((resultFile) => { + Http.getFile("https://raw.githubusercontent.com/NativeScript/NativeScript/master/tests/app/logo.png").then((resultFile) => { // The returned result will be File object // >> (hide) viewModel.set("name", resultFile.name); @@ -222,8 +222,8 @@ function getFileExample(viewModel) { function getFileWithPathExample(viewModel) { // >> get-file-code-with-path - const filePath = fileSystemModule.path.join(fileSystemModule.knownFolders.currentApp().path, "test.png"); - httpModule.getFile("https://httpbin.org/image/png?testQuery=query&anotherParam=param", filePath).then((resultFile) => { + const filePath = path.join(knownFolders.currentApp().path, "test.png"); + Http.getFile("https://httpbin.org/image/png?testQuery=query&anotherParam=param", filePath).then((resultFile) => { // The returned result will be File object // >> (hide) viewModel.set("name_get_file_with_path", resultFile.name); @@ -241,6 +241,3 @@ function getFileWithPathExample(viewModel) { }); // << get-file-code-with-path } - -exports.onNavigatingTo = onNavigatingTo; -exports.onButtonTap = onButtonTap; diff --git a/app/ns-framework-modules-category/http/get/get-ts-page.ts b/app/ns-framework-modules-category/http/get/get-ts-page.ts index 3b1e71a..f07a813 100644 --- a/app/ns-framework-modules-category/http/get/get-ts-page.ts +++ b/app/ns-framework-modules-category/http/get/get-ts-page.ts @@ -1,12 +1,8 @@ // tslint:disable:max-line-length -import { Observable } from "tns-core-modules/data/observable"; -import { path, knownFolders, File } from "tns-core-modules/file-system"; -import { Page } from "tns-core-modules/ui/page"; +import { Button, ImageSource, path, knownFolders, File, Page, Observable } from "@nativescript/core"; // >> import-http-get -import { getFile, getImage, getJSON, getString, request, HttpResponse } from "tns-core-modules/http"; +import { Http, HttpResponse } from "@nativescript/core"; // << import-http-get -import { Button } from "tns-core-modules/ui/button"; -import { ImageSource } from "tns-core-modules/image-source"; export function onNavigatingTo(args) { const page: Page = args.object; @@ -92,7 +88,7 @@ export function onButtonTap(args) { function getStringExample(viewModel) { // >> get-string-code-ts - getString("https://httpbin.org/get").then((r: string) => { + Http.getString("https://httpbin.org/get").then((r: string) => { viewModel.set("getStringResult", r); }, (e) => { // >> (hide) @@ -104,7 +100,7 @@ function getStringExample(viewModel) { } function getJSONExample(viewModel) { // >> get-json-code-ts - getJSON("https://httpbin.org/get").then((r: any) => { + Http.getJSON("https://httpbin.org/get").then((r: any) => { // >> (hide) viewModel.set("host", r.headers.Host); viewModel.set("userAgent", r.headers["User-Agent"]); @@ -121,7 +117,7 @@ function getJSONExample(viewModel) { } function getImageExample(viewModel) { // >> get-image-code-ts - getImage("https://httpbin.org/image/jpeg").then((r: ImageSource) => { + Http.getImage("https://httpbin.org/image/jpeg").then((r: ImageSource) => { // getImage method returns ImageSource object // >> (hide) viewModel.set("getImageResult", r); @@ -139,7 +135,7 @@ function getImageExample(viewModel) { function getResponseStatusCodeExample(viewModel) { // >> request-status-code-ts - request({ + Http.request({ url: "https://httpbin.org/get", method: "GET" }).then((response: HttpResponse) => { @@ -160,7 +156,7 @@ function getResponseStatusCodeExample(viewModel) { function getResponseHeadersExample(viewModel) { console.log("getResponseHeadersExample"); // >> request-response-header-ts - request({ + Http.request({ url: "https://httpbin.org/get", method: "GET" }).then((response: HttpResponse) => { @@ -181,7 +177,7 @@ function getResponseHeadersExample(viewModel) { function getResponseContentExample(viewModel) { // >> request-response-content-ts - request({ + Http.request({ url: "https://httpbin.org/get", method: "GET" }).then((response: HttpResponse) => { @@ -206,7 +202,7 @@ function getResponseContentExample(viewModel) { function getFileExample(viewModel) { // >> get-file-code-ts - getFile("https://raw.githubusercontent.com/NativeScript/NativeScript/master/tests/app/logo.png").then((resultFile) => { + Http.getFile("https://raw.githubusercontent.com/NativeScript/NativeScript/master/tests/app/logo.png").then((resultFile) => { // The returned result will be File object // >> (hide) viewModel.set("name", resultFile.name); @@ -228,7 +224,7 @@ function getFileExample(viewModel) { function getFileWithPathExample(viewModel) { // >> get-file-code-with-path-ts const filePath: string = path.join(knownFolders.currentApp().path, "test.png"); - getFile("https://httpbin.org/image/png?testQuery=query&anotherParam=param", filePath).then((resultFile: File) => { + Http.getFile("https://httpbin.org/image/png?testQuery=query&anotherParam=param", filePath).then((resultFile: File) => { // The returned result will be File object // >> (hide) viewModel.set("name_get_file_with_path", resultFile.name); diff --git a/app/ns-framework-modules-category/http/http-page.js b/app/ns-framework-modules-category/http/http-page.js index bcc3fa7..919153e 100644 --- a/app/ns-framework-modules-category/http/http-page.js +++ b/app/ns-framework-modules-category/http/http-page.js @@ -1,14 +1,14 @@ -const ListViewLinksModel = require("../../links-view-model"); -const link = require("../../link"); +import ListViewLinksModel from "../../links-view-model"; +import Link from "../../link"; const navigationLinks = [ - new link("Get", "ns-framework-modules-category/http/get/get-page"), - new link("Post", "ns-framework-modules-category/http/post/post-page") + new Link("Get", "ns-framework-modules-category/http/get/get-page"), + new Link("Post", "ns-framework-modules-category/http/post/post-page") ]; const navigationLinksTsc = [ - new link("Get", "ns-framework-modules-category/http/get/get-ts-page"), - new link("Post", "ns-framework-modules-category/http/post/post-ts-page") + new Link("Get", "ns-framework-modules-category/http/get/get-ts-page"), + new Link("Post", "ns-framework-modules-category/http/post/post-ts-page") ]; -function onNavigatingTo(args) { +export function onNavigatingTo(args) { const page = args.object; page.bindingContext = new ListViewLinksModel({ links: navigationLinks, @@ -17,4 +17,4 @@ function onNavigatingTo(args) { tsclinks: navigationLinksTsc }); } -exports.onNavigatingTo = onNavigatingTo; + diff --git a/app/ns-framework-modules-category/http/post/post-page.js b/app/ns-framework-modules-category/http/post/post-page.js index cc603c6..41314a1 100644 --- a/app/ns-framework-modules-category/http/post/post-page.js +++ b/app/ns-framework-modules-category/http/post/post-page.js @@ -1,8 +1,9 @@ -const Observable = require("tns-core-modules/data/observable").Observable; +import { Observable } from "@nativescript/core"; // >> require-http-post -const httpModule = require("tns-core-modules/http"); +import { Http } from "@nativescript/core"; // << require-http-post -function onNavigatingTo(args) { + +export function onNavigatingTo(args) { const page = args.object; const vm = new Observable(); @@ -13,11 +14,11 @@ function onNavigatingTo(args) { page.bindingContext = vm; } -function makePostRequest(args) { +export function makePostRequest(args) { const page = args.object.page; const vm = page.bindingContext; // >> http-post - httpModule.request({ + Http.request({ url: "https://httpbin.org/post", method: "POST", headers: { "Content-Type": "application/json" }, @@ -40,5 +41,4 @@ function makePostRequest(args) { // << http-post } -exports.onNavigatingTo = onNavigatingTo; -exports.makePostRequest = makePostRequest; + diff --git a/app/ns-framework-modules-category/http/post/post-ts-page.ts b/app/ns-framework-modules-category/http/post/post-ts-page.ts index cce605b..312e01d 100644 --- a/app/ns-framework-modules-category/http/post/post-ts-page.ts +++ b/app/ns-framework-modules-category/http/post/post-ts-page.ts @@ -1,7 +1,6 @@ -import { Observable } from "tns-core-modules/data/observable"; -import { Page } from "tns-core-modules/ui/page"; +import { Observable, Page } from "@nativescript/core"; // >> import-http-post -import { request, getFile, getImage, getJSON, getString } from "tns-core-modules/http"; +import { Http } from "@nativescript/core"; // << import-http-post export function onNavigatingTo(args) { const page: Page = args.object; @@ -18,7 +17,7 @@ export function makePostRequest(args) { const page: Page = args.object.page; const vm = page.bindingContext; // >> http-post - request({ + Http.request({ url: "https://httpbin.org/post", method: "POST", headers: { "Content-Type": "application/json" }, diff --git a/app/ns-framework-modules-category/image-source/image-source-page.js b/app/ns-framework-modules-category/image-source/image-source-page.js index 5c6e0db..2b77645 100644 --- a/app/ns-framework-modules-category/image-source/image-source-page.js +++ b/app/ns-framework-modules-category/image-source/image-source-page.js @@ -1,14 +1,14 @@ -const ListViewLinksModel = require("../../links-view-model"); -const link = require("../../link"); +import ListViewLinksModel from "../../links-view-model"; +import Link from "../../link"; const navigationLinks = [ - new link("Load image", "ns-framework-modules-category/image-source/load-image/load-image-page"), - new link("Save image", "ns-framework-modules-category/image-source/save-image/save-image-page") + new Link("Load image", "ns-framework-modules-category/image-source/load-image/load-image-page"), + new Link("Save image", "ns-framework-modules-category/image-source/save-image/save-image-page") ]; const navigationLinksTsc = [ - new link("Load image", "ns-framework-modules-category/image-source/load-image/load-image-ts-page"), - new link("Save image", "ns-framework-modules-category/image-source/save-image/save-image-ts-page") + new Link("Load image", "ns-framework-modules-category/image-source/load-image/load-image-ts-page"), + new Link("Save image", "ns-framework-modules-category/image-source/save-image/save-image-ts-page") ]; -function onNavigatingTo(args) { +export function onNavigatingTo(args) { const page = args.object; page.bindingContext = new ListViewLinksModel({ links: navigationLinks, @@ -17,4 +17,4 @@ function onNavigatingTo(args) { tsclinks: navigationLinksTsc }); } -exports.onNavigatingTo = onNavigatingTo; + diff --git a/app/ns-framework-modules-category/image-source/load-image/load-image-page.js b/app/ns-framework-modules-category/image-source/load-image/load-image-page.js index eee1744..bd41498 100644 --- a/app/ns-framework-modules-category/image-source/load-image/load-image-page.js +++ b/app/ns-framework-modules-category/image-source/load-image/load-image-page.js @@ -1,26 +1,26 @@ -const Observable = require("tns-core-modules/data/observable").Observable; +import { Observable } from "@nativescript/core"; // >> require-image-source -const imageSourceModule = require("tns-core-modules/image-source"); +import { ImageSource } from "@nativescript/core"; // << require-image-source // >> require-file-system -const fileSystemModule = require("tns-core-modules/file-system"); +import { knownFolders, path } from "@nativescript/core"; // << require-file-system -function onNavigatingTo(args) { +export function onNavigatingTo(args) { const page = args.object; const vm = new Observable(); // >> image-source-from-resource - const imgFromResources = imageSourceModule.fromResource("icon"); + const imgFromResources = ImageSource.fromResourceSync("icon"); // << image-source-from-resource vm.set("imageFromResources", imgFromResources); // >> image-source-from-local-file - const folder = fileSystemModule.knownFolders.currentApp(); - const path = fileSystemModule.path.join(folder.path, "images/logo.png"); - const imageFromLocalFile = imageSourceModule.fromFile(path); + const folder = knownFolders.currentApp(); + const filePath = path.join(folder.path, "images/logo.png"); + const imageFromLocalFile = ImageSource.fromFileSync(filePath); // << image-source-from-local-file vm.set("imageFromResourcesLocalFile", imageFromLocalFile); // >> image-source-base64 - const imageFromBase64 = imageSourceModule.fromBase64(base64string); + const imageFromBase64 = ImageSource.fromBase64Sync(base64string); // << image-source-base64 vm.set("imageFromBase64", imageFromBase64); page.bindingContext = vm; @@ -28,4 +28,4 @@ function onNavigatingTo(args) { const base64string = "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"; -exports.onNavigatingTo = onNavigatingTo; + diff --git a/app/ns-framework-modules-category/image-source/load-image/load-image-ts-page.ts b/app/ns-framework-modules-category/image-source/load-image/load-image-ts-page.ts index 3ef1c18..5b5d266 100644 --- a/app/ns-framework-modules-category/image-source/load-image/load-image-ts-page.ts +++ b/app/ns-framework-modules-category/image-source/load-image/load-image-ts-page.ts @@ -1,33 +1,30 @@ // tslint:disable:max-line-length -import { Observable } from "tns-core-modules/data/observable"; -import {Page} from "tns-core-modules/ui/page"; // >> import-image-source -import {ImageSource, fromFile, fromResource, fromBase64} from "tns-core-modules/image-source"; // << import-image-source // >> import-file-system -import {Folder, path, knownFolders} from "tns-core-modules/file-system"; +import {Folder, ImageSource, knownFolders, Observable, Page, path} from "@nativescript/core"; + // << import-file-system export function onNavigatingTo(args) { const page: Page = args.object; const vm = new Observable(); // >> image-source-from-resource-ts - const imgFromResources: ImageSource = fromResource("icon"); + const imgFromResources: ImageSource = ImageSource.fromResourceSync("icon"); // << image-source-from-resource-ts vm.set("imageFromResources", imgFromResources); // >> image-source-from-local-file-ts const folder: Folder = knownFolders.currentApp(); const folderPath: string = path.join(folder.path, "images/logo.png"); - const imageFromLocalFile: ImageSource = fromFile(folderPath); + const imageFromLocalFile: ImageSource = ImageSource.fromFileSync(folderPath); // << image-source-from-local-file-ts vm.set("imageFromResourcesLocalFile", imageFromLocalFile); // >> image-source-base64-ts - const imageFromBase64 = fromBase64(base64string); + const imageFromBase64 = ImageSource.fromBase64Sync(base64string); // << image-source-base64-ts vm.set("imageFromBase64", imageFromBase64); page.bindingContext = vm; } - const base64string = "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"; +const base64string = "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"; -// exports.onNavigatingTo = onNavigatingTo; diff --git a/app/ns-framework-modules-category/image-source/save-image/save-image-page.js b/app/ns-framework-modules-category/image-source/save-image/save-image-page.js index 86ecb07..c158657 100644 --- a/app/ns-framework-modules-category/image-source/save-image/save-image-page.js +++ b/app/ns-framework-modules-category/image-source/save-image/save-image-page.js @@ -1,29 +1,26 @@ -const Observable = require("tns-core-modules/data/observable").Observable; -const imageSourceModule = require("tns-core-modules/image-source"); -const fileSystemModule = require("tns-core-modules/file-system"); -const imageAssetModule = require("tns-core-modules/image-asset"); +import { ImageAsset, ImageSource, Observable, knownFolders, path } from "@nativescript/core"; -function onNavigatingTo(args) { +export function onNavigatingTo(args) { const page = args.object; const vm = new Observable(); vm.set("fps", "0"); - const folder = fileSystemModule.knownFolders.currentApp(); - const path = fileSystemModule.path.join(folder.path, "images/logo.png"); - vm.set("imagePath", path); + const folder = knownFolders.currentApp(); + const filePath = path.join(folder.path, "images/logo.png"); + vm.set("imagePath", filePath); page.bindingContext = vm; } -function makeCopyFromFile(args) { +export function makeCopyFromFile(args) { const page = args.object.page; const vm = page.bindingContext; - const folder = fileSystemModule.knownFolders.currentApp(); - const imagePath = fileSystemModule.path.join(folder.path, "images/logo.png"); + const folder = knownFolders.currentApp(); + const imagePath = path.join(folder.path, "images/logo.png"); // >> image-source-save-from-file - const img = imageSourceModule.fromFile(imagePath); - const folderDest = fileSystemModule.knownFolders.documents(); - const pathDest = fileSystemModule.path.join(folderDest.path, "test.png"); + const img = ImageSource.fromFileSync(imagePath); + const folderDest = knownFolders.documents(); + const pathDest = path.join(folderDest.path, "test.png"); const saved = img.saveToFile(pathDest, "png"); if (saved) { console.log("Image saved successfully!"); @@ -34,29 +31,28 @@ function makeCopyFromFile(args) { // << image-source-save-from-file } -function makeCopyFromAsset(args) { +export function makeCopyFromAsset(args) { const page = args.object.page; const vm = page.bindingContext; - const folder = fileSystemModule.knownFolders.currentApp(); - const pathImage = fileSystemModule.path.join(folder.path, "images/logo.png"); - const imageAsset = new imageAssetModule.ImageAsset(pathImage); + const folder = knownFolders.currentApp(); + const pathImage = path.join(folder.path, "images/logo.png"); + const imageAsset = new ImageAsset(pathImage); imageAsset.options = { width: 100, height: 100, keepAspectRatio: true }; // >> image-source-save-from-asset - const source = new imageSourceModule.ImageSource(); - source.fromAsset(imageAsset) + ImageSource.fromAsset(imageAsset) .then((imageSource) => { - const folder = fileSystemModule.knownFolders.documents().path; + const folder = knownFolders.documents().path; const fileName = "test.png"; - const path = fileSystemModule.path.join(folder, fileName); - const saved = imageSource.saveToFile(path, "png"); + const filePath = path.join(folder, fileName); + const saved = imageSource.saveToFile(filePath, "png"); if (saved) { console.log("Image saved successfully!"); // >> (hide) - vm.set("imageAssetCopyPath", path); + vm.set("imageAssetCopyPath", filePath); // << (hide) } }) @@ -67,20 +63,14 @@ function makeCopyFromAsset(args) { // << image-source-save-from-asset } -function makeBase64String(args) { +export function makeBase64String(args) { const page = args.object.page; const vm = page.bindingContext; // >> image-source-create-base64 - const folder = fileSystemModule.knownFolders.currentApp(); - const path = fileSystemModule.path.join(folder.path, "images/logo.png"); - const img = imageSourceModule.fromFile(path); + const folder = knownFolders.currentApp(); + const filePath = path.join(folder.path, "images/logo.png"); + const img = ImageSource.fromFileSync(filePath); const base64String = img.toBase64String("png"); // << image-source-create-base64 vm.set("base64String", base64String); } - - -exports.onNavigatingTo = onNavigatingTo; -exports.makeCopyFromFile = makeCopyFromFile; -exports.makeCopyFromAsset = makeCopyFromAsset; -exports.makeBase64String = makeBase64String; diff --git a/app/ns-framework-modules-category/image-source/save-image/save-image-ts-page.ts b/app/ns-framework-modules-category/image-source/save-image/save-image-ts-page.ts index 5811706..e699615 100644 --- a/app/ns-framework-modules-category/image-source/save-image/save-image-ts-page.ts +++ b/app/ns-framework-modules-category/image-source/save-image/save-image-ts-page.ts @@ -1,8 +1,4 @@ -import { Observable } from "tns-core-modules/data/observable"; -import { ImageSource, fromFile } from "tns-core-modules/image-source"; -import { path, knownFolders, Folder } from "tns-core-modules/file-system"; -import { ImageAsset } from "tns-core-modules/image-asset"; -import { Page } from "tns-core-modules/ui/page"; +import { Folder, ImageAsset, ImageSource, knownFolders, Observable, Page, path } from "@nativescript/core"; export function onNavigatingTo(args) { const page: Page = args.object; @@ -22,7 +18,7 @@ export function makeCopyFromFile(args) { const folder: Folder = knownFolders.currentApp(); const imagePath = path.join(folder.path, "images/logo.png"); // >> image-source-save-from-file-ts - const img: ImageSource = fromFile(imagePath); + const img: ImageSource = ImageSource.fromFileSync(imagePath); const folderDest = knownFolders.documents(); const pathDest = path.join(folderDest.path, "test.png"); const saved: boolean = img.saveToFile(pathDest, "png"); @@ -74,7 +70,7 @@ export function makeBase64String(args) { // >> image-source-create-base64-ts const folder: Folder = knownFolders.currentApp(); const filePath: string = path.join(folder.path, "images/logo.png"); - const img: ImageSource = fromFile(filePath); + const img: ImageSource = ImageSource.fromFileSync(filePath); const base64String = img.toBase64String("png"); // << image-source-create-base64-ts vm.set("base64String", base64String); diff --git a/app/ns-framework-modules-category/observable-array/basics/basics-page.js b/app/ns-framework-modules-category/observable-array/basics/basics-page.js index 731407a..f116146 100644 --- a/app/ns-framework-modules-category/observable-array/basics/basics-page.js +++ b/app/ns-framework-modules-category/observable-array/basics/basics-page.js @@ -1,8 +1,8 @@ // >> observable-array-require -const ObservableArray = require("tns-core-modules/data/observable-array").ObservableArray; +import { ObservableArray } from "@nativescript/core"; // << observable-array-require -function onNavigatingTo(args) { +export function onNavigatingTo(args) { const page = args.object; // >> observable-array-creation @@ -60,4 +60,4 @@ function onNavigatingTo(args) { page.bindingContext = { items: myObservableArray }; } -exports.onNavigatingTo = onNavigatingTo; + diff --git a/app/ns-framework-modules-category/observable-array/basics/basics-ts-page.ts b/app/ns-framework-modules-category/observable-array/basics/basics-ts-page.ts index 6d896ba..8afc6c9 100644 --- a/app/ns-framework-modules-category/observable-array/basics/basics-ts-page.ts +++ b/app/ns-framework-modules-category/observable-array/basics/basics-ts-page.ts @@ -1,19 +1,18 @@ // >> observable-array-require-ts -import { ObservableArray, ChangedData } from "tns-core-modules/data/observable-array"; +import { ObservableArray, ChangedData } from "@nativescript/core"; // << observable-array-require-ts export function onNavigatingTo(data) { const page = data.object; // >> observable-array-creation-ts - // Create ObservableArray with lenght + // Create ObservableArray with length let myObservableArray = new ObservableArray(10); // Create ObservableArray from array. const arr = [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]; myObservableArray = new ObservableArray(arr); // Create ObservableArray from arguments. - myObservableArray = new ObservableArray(1, 2, 3, 5, 8, 13, 21, 33, 55, 89); // << observable-array-creation-ts // >> observable-array-item-index-ts @@ -23,7 +22,7 @@ export function onNavigatingTo(data) { // << observable-array-item-index-ts // >> observable-array-set-item-ts - myObservableArray.on(ObservableArray.changeEvent, (args: any) => { + myObservableArray.on(ObservableArray.changeEvent, (args: ChangedData) => { console.log(args.index); // Index of the changed item (in this case 7). console.log(args.action); // Action (In this case "update") console.log(args.addedCount); // Number of added items (In this case 1). @@ -48,7 +47,7 @@ export function onNavigatingTo(data) { myObservableArray.shift(); // << observable-array-shift-ts - const myArray = new ObservableArray(myObservableArray); + const myArray = new ObservableArray(arr); // >> observable-array-sort-ts myArray.sort(); // << observable-array-sort-ts diff --git a/app/ns-framework-modules-category/observable-array/observable-array-page.js b/app/ns-framework-modules-category/observable-array/observable-array-page.js index e7ee1d5..d68c597 100644 --- a/app/ns-framework-modules-category/observable-array/observable-array-page.js +++ b/app/ns-framework-modules-category/observable-array/observable-array-page.js @@ -1,12 +1,12 @@ -const ListViewLinksModel = require("../../links-view-model"); -const link = require("../../link"); +import ListViewLinksModel from "../../links-view-model"; +import Link from "../../link"; const navigationLinks = [ - new link("Basics", "ns-framework-modules-category/observable-array/basics/basics-page") + new Link("Basics", "ns-framework-modules-category/observable-array/basics/basics-page") ]; const navigationLinksTsc = [ - new link("Basics", "ns-framework-modules-category/observable-array/basics/basics-ts-page") + new Link("Basics", "ns-framework-modules-category/observable-array/basics/basics-ts-page") ]; -function onNavigatingTo(args) { +export function onNavigatingTo(args) { const page = args.object; page.bindingContext = new ListViewLinksModel({ links: navigationLinks, @@ -15,4 +15,4 @@ function onNavigatingTo(args) { tsclinks: navigationLinksTsc }); } -exports.onNavigatingTo = onNavigatingTo; + diff --git a/app/ns-framework-modules-category/observable/basics/basics-page.js b/app/ns-framework-modules-category/observable/basics/basics-page.js index e8a759d..e245fd1 100644 --- a/app/ns-framework-modules-category/observable/basics/basics-page.js +++ b/app/ns-framework-modules-category/observable/basics/basics-page.js @@ -1,10 +1,8 @@ // >> observable-basics-imports -const Observable = require("tns-core-modules/data/observable").Observable; -const fromObject = require("tns-core-modules/data/observable").fromObject; -const fromObjectRecursive = require("tns-core-modules/data/observable").fromObjectRecursive; +import { Observable, fromObject, fromObjectRecursive } from "@nativescript/core"; // << observable-basics-imports -function onNavigatedTo(args) { +export function onNavigatedTo(args) { console.log("onLoaded BASICS"); // >> observable-class // creating an Observable and setting title propertu with a string value @@ -70,7 +68,6 @@ function onNavigatedTo(args) { }); // << property-change-event } -exports.onNavigatedTo = onNavigatedTo; // dummy funciton for snippet demonstrationg function removeListener() { diff --git a/app/ns-framework-modules-category/observable/basics/basics-ts-page.ts b/app/ns-framework-modules-category/observable/basics/basics-ts-page.ts index b98cde0..dc31432 100644 --- a/app/ns-framework-modules-category/observable/basics/basics-ts-page.ts +++ b/app/ns-framework-modules-category/observable/basics/basics-ts-page.ts @@ -1,6 +1,6 @@ -import { NavigatedData, Page } from "tns-core-modules/ui/page"; +import { NavigatedData, Page } from "@nativescript/core"; // >> observable-basics-imports-ts -import { fromObject, fromObjectRecursive, Observable, PropertyChangeData } from "tns-core-modules/data/observable"; +import { fromObject, fromObjectRecursive, Observable, PropertyChangeData } from "@nativescript/core"; // << observable-basics-imports-ts export function onNavigatedTo(data: NavigatedData) { diff --git a/app/ns-framework-modules-category/observable/mvvm-pattern/main-view-model.js b/app/ns-framework-modules-category/observable/mvvm-pattern/main-view-model.js index e24e0c9..39264fc 100644 --- a/app/ns-framework-modules-category/observable/mvvm-pattern/main-view-model.js +++ b/app/ns-framework-modules-category/observable/mvvm-pattern/main-view-model.js @@ -1,5 +1,5 @@ // >> mvvm-view-model -const Observable = require("tns-core-modules/data/observable").Observable; +import { Observable } from "@nativescript/core"; function getMessage(counter) { if (counter <= 0) { @@ -9,7 +9,7 @@ function getMessage(counter) { } } -function createViewModel() { +export function createViewModel() { const viewModel = new Observable(); viewModel.set("counter", 42); @@ -21,5 +21,4 @@ function createViewModel() { return viewModel; } -exports.createViewModel = createViewModel; // << mvvm-view-model diff --git a/app/ns-framework-modules-category/observable/mvvm-pattern/main-view-ts-model.ts b/app/ns-framework-modules-category/observable/mvvm-pattern/main-view-ts-model.ts index c59cbbd..7cfc771 100644 --- a/app/ns-framework-modules-category/observable/mvvm-pattern/main-view-ts-model.ts +++ b/app/ns-framework-modules-category/observable/mvvm-pattern/main-view-ts-model.ts @@ -1,5 +1,5 @@ // >> mvvm-view-model-ts -import { Observable } from "tns-core-modules/data/observable"; +import { Observable } from "@nativescript/core"; export class HelloWorldModel extends Observable { diff --git a/app/ns-framework-modules-category/observable/mvvm-pattern/mvvm-pattern-page.js b/app/ns-framework-modules-category/observable/mvvm-pattern/mvvm-pattern-page.js index 7288781..d4c79f8 100644 --- a/app/ns-framework-modules-category/observable/mvvm-pattern/mvvm-pattern-page.js +++ b/app/ns-framework-modules-category/observable/mvvm-pattern/mvvm-pattern-page.js @@ -2,12 +2,12 @@ // >> mvvm-code-behind const createViewModel = require("./main-view-model").createViewModel; -function onNavigatingTo(args) { +export function onNavigatingTo(args) { const page = args.object; // using the view model as binding context for the current page const mainViewModel = createViewModel(); page.bindingContext = mainViewModel; } -exports.onNavigatingTo = onNavigatingTo; + // << mvvm-code-behind diff --git a/app/ns-framework-modules-category/observable/mvvm-pattern/mvvm-pattern-ts-page.ts b/app/ns-framework-modules-category/observable/mvvm-pattern/mvvm-pattern-ts-page.ts index 38ffdca..b989616 100644 --- a/app/ns-framework-modules-category/observable/mvvm-pattern/mvvm-pattern-ts-page.ts +++ b/app/ns-framework-modules-category/observable/mvvm-pattern/mvvm-pattern-ts-page.ts @@ -1,8 +1,6 @@ - // >> mvvm-code-behind-ts import { HelloWorldModel } from "./main-view-ts-model"; -import { EventData } from "tns-core-modules/data/observable"; -import { Page } from "tns-core-modules/ui/page"; +import { EventData, Page } from "@nativescript/core"; export function onNavigatingTo(args: EventData) { const page = args.object; diff --git a/app/ns-framework-modules-category/observable/observable-page.js b/app/ns-framework-modules-category/observable/observable-page.js index 47f1833..90af9b2 100644 --- a/app/ns-framework-modules-category/observable/observable-page.js +++ b/app/ns-framework-modules-category/observable/observable-page.js @@ -1,20 +1,20 @@ -const ListViewLinksModel = require("../../links-view-model"); -const link = require("../../link"); +import ListViewLinksModel from "../../links-view-model"; +import Link from "../../link"; const navigationLinks = [ - new link("Basics", "ns-framework-modules-category/observable//basics/basics-page"), - new link("Two-Way Binding", "ns-framework-modules-category/observable/two-way/two-way-page"), - new link("MVVM Pattern", "ns-framework-modules-category/observable/mvvm-pattern/mvvm-pattern-page"), - new link("Parents Binding", "ns-framework-modules-category/observable/parent-binding/parent-binding-page"), - new link("Plain Object Binding", "ns-framework-modules-category/observable/plain-object-binding/plain-object-binding-page") + new Link("Basics", "ns-framework-modules-category/observable/basics/basics-page"), + new Link("Two-Way Binding", "ns-framework-modules-category/observable/two-way/two-way-page"), + new Link("MVVM Pattern", "ns-framework-modules-category/observable/mvvm-pattern/mvvm-pattern-page"), + new Link("Parents Binding", "ns-framework-modules-category/observable/parent-binding/parent-binding-page"), + new Link("Plain Object Binding", "ns-framework-modules-category/observable/plain-object-binding/plain-object-binding-page") ]; const navigationLinksTsc = [ - new link("Basics", "ns-framework-modules-category/observable//basics/basics-ts-page"), - new link("Two-Way Binding", "ns-framework-modules-category/observable/two-way/two-way-ts-page"), - new link("MVVM Pattern", "ns-framework-modules-category/observable/mvvm-pattern/mvvm-pattern-ts-page"), - new link("Parents Binding", "ns-framework-modules-category/observable/parent-binding/parent-binding-ts-page"), - new link("Plain Object Binding", "ns-framework-modules-category/observable/plain-object-binding/plain-object-binding-ts-page") + new Link("Basics", "ns-framework-modules-category/observable//basics/basics-ts-page"), + new Link("Two-Way Binding", "ns-framework-modules-category/observable/two-way/two-way-ts-page"), + new Link("MVVM Pattern", "ns-framework-modules-category/observable/mvvm-pattern/mvvm-pattern-ts-page"), + new Link("Parents Binding", "ns-framework-modules-category/observable/parent-binding/parent-binding-ts-page"), + new Link("Plain Object Binding", "ns-framework-modules-category/observable/plain-object-binding/plain-object-binding-ts-page") ]; -function onNavigatingTo(args) { +export function onNavigatingTo(args) { const page = args.object; page.bindingContext = new ListViewLinksModel({ links: navigationLinks, @@ -23,4 +23,4 @@ function onNavigatingTo(args) { tsclinks: navigationLinksTsc }); } -exports.onNavigatingTo = onNavigatingTo; + diff --git a/app/ns-framework-modules-category/observable/parent-binding/parent-binding-page.js b/app/ns-framework-modules-category/observable/parent-binding/parent-binding-page.js index 7180e0e..44c6aa7 100644 --- a/app/ns-framework-modules-category/observable/parent-binding/parent-binding-page.js +++ b/app/ns-framework-modules-category/observable/parent-binding/parent-binding-page.js @@ -1,7 +1,7 @@ // >> parent-binding-code -const fromObject = require("data/observable").fromObject; +import { fromObject } from "@nativescript/core"; -function onNavigatingTo(args) { +export function onNavigatingTo(args) { const page = args.object; const viewModel = fromObject({ items: [1, 2, 3], @@ -10,5 +10,5 @@ function onNavigatingTo(args) { page.bindingContext = viewModel; } -exports.onNavigatingTo = onNavigatingTo; + // << parent-binding-code diff --git a/app/ns-framework-modules-category/observable/parent-binding/parent-binding-ts-page.ts b/app/ns-framework-modules-category/observable/parent-binding/parent-binding-ts-page.ts index 53624a4..b3c9818 100644 --- a/app/ns-framework-modules-category/observable/parent-binding/parent-binding-ts-page.ts +++ b/app/ns-framework-modules-category/observable/parent-binding/parent-binding-ts-page.ts @@ -1,6 +1,5 @@ // >> parent-binding-code-ts -import { fromObject, EventData } from "tns-core-modules/data/observable"; -import { Page } from "tns-core-modules/ui/page"; +import { EventData, fromObject, Page } from "@nativescript/core"; export function onNavigatingTo(args: EventData) { const page = args.object; diff --git a/app/ns-framework-modules-category/observable/plain-object-binding/plain-object-binding-page.js b/app/ns-framework-modules-category/observable/plain-object-binding/plain-object-binding-page.js index b7cbd1b..869574d 100644 --- a/app/ns-framework-modules-category/observable/plain-object-binding/plain-object-binding-page.js +++ b/app/ns-framework-modules-category/observable/plain-object-binding/plain-object-binding-page.js @@ -1,7 +1,7 @@ // >> plain-object-binding-code -const fromObject = require("tns-core-modules/data/observable").fromObject; +import { fromObject } from "@nativescript/core"; -function onNavigatingTo(args) { +export function onNavigatingTo(args) { const page = args.object; const list = []; @@ -15,5 +15,5 @@ function onNavigatingTo(args) { page.bindingContext = viewModel; } -exports.onNavigatingTo = onNavigatingTo; + // << plain-object-binding-code diff --git a/app/ns-framework-modules-category/observable/plain-object-binding/plain-object-binding-ts-page.ts b/app/ns-framework-modules-category/observable/plain-object-binding/plain-object-binding-ts-page.ts index d99c7c8..940e8a3 100644 --- a/app/ns-framework-modules-category/observable/plain-object-binding/plain-object-binding-ts-page.ts +++ b/app/ns-framework-modules-category/observable/plain-object-binding/plain-object-binding-ts-page.ts @@ -1,6 +1,5 @@ // >> plain-object-binding-code-ts -import { fromObject, EventData } from "tns-core-modules/data/observable"; -import { Page } from "tns-core-modules/ui/page"; +import { EventData, fromObject, Page } from "@nativescript/core"; export function onNavigatingTo(args: EventData) { const page = args.object; diff --git a/app/ns-framework-modules-category/observable/two-way/two-way-page.js b/app/ns-framework-modules-category/observable/two-way/two-way-page.js index 6c90bd6..1b7376c 100644 --- a/app/ns-framework-modules-category/observable/two-way/two-way-page.js +++ b/app/ns-framework-modules-category/observable/two-way/two-way-page.js @@ -1,8 +1,7 @@ -const fromObject = require("data/observable").fromObject; -const TextField = require("ui/text-field").TextField; -const Label = require("ui/label").Label; +import { Label, TextField, fromObject } from "@nativescript/core"; -function onStackLayoutLoaded(args) { + +export function onStackLayoutLoaded(args) { const stackLayout = args.object; // >> two-way-binding-code @@ -42,4 +41,3 @@ function onStackLayoutLoaded(args) { targetLabel.bind(labelBindingOptions, observableSource); // << two-way-binding-code } -exports.onStackLayoutLoaded = onStackLayoutLoaded; diff --git a/app/ns-framework-modules-category/observable/two-way/two-way-ts-page.ts b/app/ns-framework-modules-category/observable/two-way/two-way-ts-page.ts index 2df2649..4d22ba0 100644 --- a/app/ns-framework-modules-category/observable/two-way/two-way-ts-page.ts +++ b/app/ns-framework-modules-category/observable/two-way/two-way-ts-page.ts @@ -1,6 +1,4 @@ -import { fromObject } from "tns-core-modules/data/observable"; -import { TextField } from "tns-core-modules/ui/text-field"; -import { Label } from "tns-core-modules/ui/label"; +import { fromObject, Label, TextField } from "@nativescript/core"; export function onStackLayoutLoaded(args) { const stackLayout = args.object; diff --git a/app/ns-framework-modules-category/platform/platform-page.js b/app/ns-framework-modules-category/platform/platform-page.js index 154e8e6..890fe8f 100644 --- a/app/ns-framework-modules-category/platform/platform-page.js +++ b/app/ns-framework-modules-category/platform/platform-page.js @@ -1,12 +1,12 @@ -const ListViewLinksModel = require("../../links-view-model"); -const link = require("../../link"); +import ListViewLinksModel from "../../links-view-model"; +import Link from "../../link"; const navigationLinks = [ - new link("Usage", "ns-framework-modules-category/platform/usage/usage-page") + new Link("Usage", "ns-framework-modules-category/platform/usage/usage-page") ]; const navigationLinksTsc = [ - new link("Usage", "ns-framework-modules-category/platform/usage/usage-ts-page") + new Link("Usage", "ns-framework-modules-category/platform/usage/usage-ts-page") ]; -function onNavigatingTo(args) { +export function onNavigatingTo(args) { const page = args.object; page.bindingContext = new ListViewLinksModel({ links: navigationLinks, @@ -15,4 +15,4 @@ function onNavigatingTo(args) { tsclinks: navigationLinksTsc }); } -exports.onNavigatingTo = onNavigatingTo; + diff --git a/app/ns-framework-modules-category/platform/usage/usage-page.js b/app/ns-framework-modules-category/platform/usage/usage-page.js index a13c1a5..6ea83c1 100644 --- a/app/ns-framework-modules-category/platform/usage/usage-page.js +++ b/app/ns-framework-modules-category/platform/usage/usage-page.js @@ -1,26 +1,26 @@ // >> get-screen-device-info -const platformModule = require("tns-core-modules/platform"); +import { Device, Screen, isAndroid, isIOS } from "@nativescript/core"; -function onNavigatingTo(args) { - console.log(`Running on Android? ${platformModule.isAndroid}`); - console.log(`Running on iOS? ${platformModule.isIOS}`); +export function onNavigatingTo(args) { + console.log(`Running on Android? ${isAndroid}`); + console.log(`Running on iOS? ${isIOS}`); - console.log(`device.model ${platformModule.device.model}`); // For example: "Nexus 5" or "iPhone". - console.log(`device.deviceType ${platformModule.device.deviceType}`); // "Phone" | "Tablet" - console.log(`device.os ${platformModule.device.os}`); // For example: "Android" or "iOS". - console.log(`device.osVersion ${platformModule.device.osVersion}`); // For example: 4.4.4(android), 8.1(ios) - console.log(`device.sdkVersion ${platformModule.device.sdkVersion}`); // For example: 19(android), 8.1(ios). - console.log(`device.language ${platformModule.device.language}`); // For example "en" or "en-US". - console.log(`device.manufacturer ${platformModule.device.manufacturer}`); // For example: "Apple" or "HTC" or "Samsung". - console.log(`device.uuid ${platformModule.device.uuid}`); // The unique identification number - console.log(`device.region ${platformModule.device.region}`); // For example "US". + console.log(`device.model ${Device.model}`); // For example: "Nexus 5" or "iPhone". + console.log(`device.deviceType ${Device.deviceType}`); // "Phone" | "Tablet" + console.log(`device.os ${Device.os}`); // For example: "Android" or "iOS". + console.log(`device.osVersion ${Device.osVersion}`); // For example: 4.4.4(android), 8.1(ios) + console.log(`device.sdkVersion ${Device.sdkVersion}`); // For example: 19(android), 8.1(ios). + console.log(`device.language ${Device.language}`); // For example "en" or "en-US". + console.log(`device.manufacturer ${Device.manufacturer}`); // For example: "Apple" or "HTC" or "Samsung". + console.log(`device.uuid ${Device.uuid}`); // The unique identification number + console.log(`device.region ${Device.region}`); // For example "US". - console.log(`screen.mainScreen.heightDIPs ${platformModule.screen.mainScreen.heightDIPs}`); // The absolute height of the screen in density independent pixels. - console.log(`screen.mainScreen.heightPixels ${platformModule.screen.mainScreen.heightPixels}`); // The absolute height of the screen in pixels. - console.log(`screen.mainScreen.scale ${platformModule.screen.mainScreen.scale}`); // The logical density of the display. - console.log(`screen.mainScreen.widthDIPs ${platformModule.screen.mainScreen.widthDIPs}`); // The absolute width of the screen in density independent pixels. - console.log(`screen.mainScreen.widthPixels ${platformModule.screen.mainScreen.widthPixels}`); // The absolute width of the screen in pixel + console.log(`screen.mainScreen.heightDIPs ${Screen.mainScreen.heightDIPs}`); // The absolute height of the screen in density independent pixels. + console.log(`screen.mainScreen.heightPixels ${Screen.mainScreen.heightPixels}`); // The absolute height of the screen in pixels. + console.log(`screen.mainScreen.scale ${Screen.mainScreen.scale}`); // The logical density of the display. + console.log(`screen.mainScreen.widthDIPs ${Screen.mainScreen.widthDIPs}`); // The absolute width of the screen in density independent pixels. + console.log(`screen.mainScreen.widthPixels ${Screen.mainScreen.widthPixels}`); // The absolute width of the screen in pixel } -exports.onNavigatingTo = onNavigatingTo; + // << get-screen-device-info diff --git a/app/ns-framework-modules-category/platform/usage/usage-ts-page.ts b/app/ns-framework-modules-category/platform/usage/usage-ts-page.ts index 4087461..e257bcf 100644 --- a/app/ns-framework-modules-category/platform/usage/usage-ts-page.ts +++ b/app/ns-framework-modules-category/platform/usage/usage-ts-page.ts @@ -1,25 +1,25 @@ // tslint:disable:max-line-length // >> get-screen-device-info-ts -import { device, screen, isAndroid, isIOS } from "tns-core-modules/platform"; +import { Device, Screen, isAndroid, isIOS } from "@nativescript/core"; export function onNavigatingTo(args) { console.log(`Running on Android? ${isAndroid}`); console.log(`Running on iOS? ${isIOS}`); - console.log(`device.model ${device.model}`); // For example: "Nexus 5" or "iPhone". - console.log(`device.deviceType ${device.deviceType}`); // "Phone" | "Tablet" - console.log(`device.os ${device.os}`); // For example: "Android" or "iOS". - console.log(`device.osVersion ${device.osVersion}`); // For example: 4.4.4(android), 8.1(ios) - console.log(`device.sdkVersion ${device.sdkVersion}`); // For example: 19(android), 8.1(ios). - console.log(`device.language ${device.language}`); // For example "en" or "en-US". - console.log(`device.manufacturer ${device.manufacturer}`); // For example: "Apple" or "HTC" or "Samsung". - console.log(`device.uuid ${device.uuid}`); // The unique identification number - console.log(`device.region ${device.region}`); // For example "US". + console.log(`device.model ${Device.model}`); // For example: "Nexus 5" or "iPhone". + console.log(`device.deviceType ${Device.deviceType}`); // "Phone" | "Tablet" + console.log(`device.os ${Device.os}`); // For example: "Android" or "iOS". + console.log(`device.osVersion ${Device.osVersion}`); // For example: 4.4.4(android), 8.1(ios) + console.log(`device.sdkVersion ${Device.sdkVersion}`); // For example: 19(android), 8.1(ios). + console.log(`device.language ${Device.language}`); // For example "en" or "en-US". + console.log(`device.manufacturer ${Device.manufacturer}`); // For example: "Apple" or "HTC" or "Samsung". + console.log(`device.uuid ${Device.uuid}`); // The unique identification number + console.log(`device.region ${Device.region}`); // For example "US". - console.log(`screen.mainScreen.heightDIPs ${screen.mainScreen.heightDIPs}`); // The absolute height of the screen in density independent pixels. - console.log(`screen.mainScreen.heightPixels ${screen.mainScreen.heightPixels}`); // The absolute height of the screen in pixels. - console.log(`screen.mainScreen.scale ${screen.mainScreen.scale}`); // The logical density of the display. - console.log(`screen.mainScreen.widthDIPs ${screen.mainScreen.widthDIPs}`); // The absolute width of the screen in density independent pixels. - console.log(`screen.mainScreen.widthPixels ${screen.mainScreen.widthPixels}`); // The absolute width of the screen in pixel + console.log(`screen.mainScreen.heightDIPs ${Screen.mainScreen.heightDIPs}`); // The absolute height of the screen in density independent pixels. + console.log(`screen.mainScreen.heightPixels ${Screen.mainScreen.heightPixels}`); // The absolute height of the screen in pixels. + console.log(`screen.mainScreen.scale ${Screen.mainScreen.scale}`); // The logical density of the display. + console.log(`screen.mainScreen.widthDIPs ${Screen.mainScreen.widthDIPs}`); // The absolute width of the screen in density independent pixels. + console.log(`screen.mainScreen.widthPixels ${Screen.mainScreen.widthPixels}`); // The absolute width of the screen in pixel } // << get-screen-device-info-ts diff --git a/app/ns-framework-modules-category/timer/setting-interval/interval-page.js b/app/ns-framework-modules-category/timer/setting-interval/interval-page.js index 3e596bf..485d684 100644 --- a/app/ns-framework-modules-category/timer/setting-interval/interval-page.js +++ b/app/ns-framework-modules-category/timer/setting-interval/interval-page.js @@ -1,19 +1,20 @@ -const Observable = require("tns-core-modules/data/observable").Observable; +import { Observable } from "@nativescript/core"; // >> require-timer -const timerModule = require("tns-core-modules/timer"); +// Timers are exported under Utils +import { Utils } from "@nativescript/core"; // << require-timer const color = ["green", "yellow", "red"]; let id; let status = true; -function onNavigatingTo(args) { +export function onNavigatingTo(args) { const page = args.object; const vm = new Observable(); vm.set("buttonText", "Disable color change"); vm.set("buttoncolor", "gray"); // >> set-interval-example - id = timerModule.setInterval(() => { + id = Utils.setInterval(() => { const randNumber = Math.floor(Math.random() * (color.length)); vm.set("buttoncolor", color[randNumber]); }, 1000); @@ -21,16 +22,16 @@ function onNavigatingTo(args) { page.bindingContext = vm; } -function onButtonTap(args) { +export function onButtonTap(args) { const page = args.object.page; const vm = page.bindingContext; if (status) { // >> clear-interval-example - timerModule.clearInterval(id); + Utils.clearInterval(id); // << clear-interval-example vm.set("buttonText", "Enable color change"); } else { - id = timerModule.setInterval(() => { + id = Utils.setInterval(() => { const randNumber = Math.floor(Math.random() * (color.length)); vm.set("buttoncolor", color[randNumber]); }, 1000); @@ -39,5 +40,4 @@ function onButtonTap(args) { } status = !status; } -exports.onNavigatingTo = onNavigatingTo; -exports.onButtonTap = onButtonTap; + diff --git a/app/ns-framework-modules-category/timer/setting-interval/interval-ts-page.ts b/app/ns-framework-modules-category/timer/setting-interval/interval-ts-page.ts index 08e79b6..a2e877b 100644 --- a/app/ns-framework-modules-category/timer/setting-interval/interval-ts-page.ts +++ b/app/ns-framework-modules-category/timer/setting-interval/interval-ts-page.ts @@ -1,7 +1,7 @@ -import { Observable } from "tns-core-modules/data/observable"; -import { Page } from "tns-core-modules/ui/page"; -// >> import-timer -import { setInterval, clearInterval } from "tns-core-modules/timer"; +import { Observable, Page } from "@nativescript/core"; +// >> import-time +// Timers are exported under Utils +import { Utils } from "@nativescript/core"; // << import-timer const color = ["green", "yellow", "red"]; let id; @@ -14,7 +14,7 @@ export function onNavigatingTo(args) { vm.set("buttonText", "Disable color change"); vm.set("buttoncolor", "gray"); // >> set-interval-example-ts - id = setInterval(() => { + id = Utils.setInterval(() => { const randNumber = Math.floor(Math.random() * (color.length)); vm.set("buttoncolor", color[randNumber]); }, 1000); @@ -27,11 +27,11 @@ export function onButtonTap(args) { const vm = page.bindingContext; if (status) { // >> clear-interval-example-ts - clearInterval(id); + Utils.clearInterval(id); // << clear-interval-example-ts vm.set("buttonText", "Enable color change"); } else { - id = setInterval(() => { + id = Utils.setInterval(() => { const randNumber = Math.floor(Math.random() * (color.length)); vm.set("buttoncolor", color[randNumber]); }, 1000); diff --git a/app/ns-framework-modules-category/timer/setting-timeout/timeout-page.js b/app/ns-framework-modules-category/timer/setting-timeout/timeout-page.js index f85ee2c..4660fb6 100644 --- a/app/ns-framework-modules-category/timer/setting-timeout/timeout-page.js +++ b/app/ns-framework-modules-category/timer/setting-timeout/timeout-page.js @@ -1,8 +1,7 @@ -const Observable = require("tns-core-modules/data/observable").Observable; -const Color = require("tns-core-modules/color").Color; +import { Color, Observable } from "@nativescript/core"; let counter = 1; -function onNavigatingTo(args) { +export function onNavigatingTo(args) { const page = args.object; const vm = new Observable(); @@ -10,7 +9,7 @@ function onNavigatingTo(args) { page.bindingContext = vm; } -function increase(args) { +export function increase(args) { const button = args.object; const vm = button.page.bindingContext; button.backgroundColor = new Color("#3078FE"); @@ -21,7 +20,7 @@ function increase(args) { }, 1000); } -function decrease(args) { +export function decrease(args) { const button = args.object; const vm = button.page.bindingContext; button.backgroundColor = new Color("#3078FE"); @@ -33,7 +32,3 @@ function decrease(args) { }, 1000); // << settimeout-timer-code } - -exports.onNavigatingTo = onNavigatingTo; -exports.increase = increase; -exports.decrease = decrease; diff --git a/app/ns-framework-modules-category/timer/setting-timeout/timeout-ts-page.ts b/app/ns-framework-modules-category/timer/setting-timeout/timeout-ts-page.ts index 8587a03..181ff1d 100644 --- a/app/ns-framework-modules-category/timer/setting-timeout/timeout-ts-page.ts +++ b/app/ns-framework-modules-category/timer/setting-timeout/timeout-ts-page.ts @@ -1,7 +1,4 @@ -import { Observable } from "tns-core-modules/data/observable"; -import { Color } from "tns-core-modules/color"; -import { Page } from "tns-core-modules/ui/page"; -import { Button } from "tns-core-modules/ui/button"; +import { Button, Color, Observable, Page } from "@nativescript/core"; let counter = 1; export function onNavigatingTo(args) { diff --git a/app/ns-framework-modules-category/timer/timer-page.js b/app/ns-framework-modules-category/timer/timer-page.js index b0b5677..96dbc62 100644 --- a/app/ns-framework-modules-category/timer/timer-page.js +++ b/app/ns-framework-modules-category/timer/timer-page.js @@ -1,14 +1,14 @@ -const ListViewLinksModel = require("../../links-view-model"); -const link = require("../../link"); +import ListViewLinksModel from "../../links-view-model"; +import Link from "../../link"; const navigationLinks = [ - new link("Interval", "ns-framework-modules-category/timer/setting-interval/interval-page"), - new link("Timeout", "ns-framework-modules-category/timer/setting-timeout/timeout-page") + new Link("Interval", "ns-framework-modules-category/timer/setting-interval/interval-page"), + new Link("Timeout", "ns-framework-modules-category/timer/setting-timeout/timeout-page") ]; const navigationLinksTsc = [ - new link("Interval", "ns-framework-modules-category/timer/setting-interval/interval-ts-page"), - new link("Timeout", "ns-framework-modules-category/timer/setting-timeout/timeout-ts-page") + new Link("Interval", "ns-framework-modules-category/timer/setting-interval/interval-ts-page"), + new Link("Timeout", "ns-framework-modules-category/timer/setting-timeout/timeout-ts-page") ]; -function onNavigatingTo(args) { +export function onNavigatingTo(args) { const page = args.object; page.bindingContext = new ListViewLinksModel({ links: navigationLinks, @@ -17,4 +17,4 @@ function onNavigatingTo(args) { tsclinks: navigationLinksTsc }); } -exports.onNavigatingTo = onNavigatingTo; + diff --git a/app/ns-framework-modules-category/trace/custom-trace-writer/custom-trace-writer-page.js b/app/ns-framework-modules-category/trace/custom-trace-writer/custom-trace-writer-page.js index fee6f92..621474f 100644 --- a/app/ns-framework-modules-category/trace/custom-trace-writer/custom-trace-writer-page.js +++ b/app/ns-framework-modules-category/trace/custom-trace-writer/custom-trace-writer-page.js @@ -1,7 +1,4 @@ -const Observable = require("tns-core-modules/data/observable").Observable; -const ObservableArray = require("tns-core-modules/data/observable-array").ObservableArray; -const traceModule = require("tns-core-modules/trace"); -const types = require("utils/types"); +import { Observable, ObservableArray, Trace, Utils } from "@nativescript/core"; // >> trace-create-custom-writer const array = new ObservableArray(); const TimestampConsoleWriter = (() => { @@ -12,10 +9,10 @@ const TimestampConsoleWriter = (() => { return; } - const msgType = types.isUndefined(type) ? traceModule.messageType.log : type; + const msgType = Utils.isUndefined(type) ? Trace.messageType.log : type; switch (msgType) { - case traceModule.messageType.log: + case Trace.messageType.log: array.push({ "messageType": "log", "date": new Date().toISOString(), @@ -23,7 +20,7 @@ const TimestampConsoleWriter = (() => { "category": category }); break; - case traceModule.messageType.info: + case Trace.messageType.info: array.push({ "messageType": "info", "date": new Date().toISOString(), @@ -31,7 +28,7 @@ const TimestampConsoleWriter = (() => { "category": category }); break; - case traceModule.messageType.warn: + case Trace.messageType.warn: array.push({ "messageType": "warning", "date": new Date().toISOString(), @@ -39,7 +36,7 @@ const TimestampConsoleWriter = (() => { "category": category }); break; - case traceModule.messageType.error: + case Trace.messageType.error: array.push({ "messageType": "error", "date": new Date().toISOString(), @@ -55,20 +52,20 @@ const TimestampConsoleWriter = (() => { return TimestampConsoleWriter; })(); // << trace-create-custom-writer -function onNavigatingTo(args) { +export function onNavigatingTo(args) { const page = args.object; const vm = new Observable(); - traceModule.disable(); + Trace.disable(); // >> trace-add-custom-writer - traceModule.setCategories(traceModule.categories.Navigation); - traceModule.enable(); + Trace.setCategories(Trace.categories.Navigation); + Trace.enable(); // >> (hide) vm.set("array", array); // << (hide) - traceModule.clearWriters(); - traceModule.addWriter(new TimestampConsoleWriter()); + Trace.clearWriters(); + Trace.addWriter(new TimestampConsoleWriter()); // << trace-add-custom-writer page.bindingContext = vm; } -exports.onNavigatingTo = onNavigatingTo; + diff --git a/app/ns-framework-modules-category/trace/custom-trace-writer/custom-trace-writer-ts-page.ts b/app/ns-framework-modules-category/trace/custom-trace-writer/custom-trace-writer-ts-page.ts index 00308a6..46629aa 100644 --- a/app/ns-framework-modules-category/trace/custom-trace-writer/custom-trace-writer-ts-page.ts +++ b/app/ns-framework-modules-category/trace/custom-trace-writer/custom-trace-writer-ts-page.ts @@ -1,9 +1,5 @@ // tslint:disable:max-line-length -import { Observable } from "tns-core-modules/data/observable"; -import { ObservableArray } from "tns-core-modules/data/observable-array"; -import { enable, disable, categories, setCategories, messageType, clearWriters, addWriter } from "tns-core-modules/trace"; -import { isUndefined } from "tns-core-modules/utils/types"; -import { Page } from "tns-core-modules/ui/page"; +import { Observable, ObservableArray, Page, Trace, Utils } from "@nativescript/core"; // >> trace-create-custom-writer-ts const array = new ObservableArray(); class TimestampConsoleWriter { @@ -14,10 +10,10 @@ class TimestampConsoleWriter { return; } - const msgType = isUndefined(type) ? messageType.log : type; + const msgType = Utils.isUndefined(type) ? Trace.messageType.log : type; switch (msgType) { - case messageType.log: + case Trace.messageType.log: array.push({ "messageType": "log", "date": new Date().toISOString(), @@ -25,7 +21,7 @@ class TimestampConsoleWriter { "category": category }); break; - case messageType.info: + case Trace.messageType.info: array.push({ "messageType": "info", "date": new Date().toISOString(), @@ -33,7 +29,7 @@ class TimestampConsoleWriter { "category": category }); break; - case messageType.warn: + case Trace.messageType.warn: array.push({ "messageType": "warning", "date": new Date().toISOString(), @@ -41,7 +37,7 @@ class TimestampConsoleWriter { "category": category }); break; - case messageType.error: + case Trace.messageType.error: array.push({ "messageType": "error", "date": new Date().toISOString(), @@ -58,15 +54,15 @@ class TimestampConsoleWriter { export function onNavigatingTo(args) { const page: Page = args.object; const vm = new Observable(); - disable(); + Trace.disable(); // >> trace-add-custom-writer-ts - setCategories(categories.Navigation); - enable(); + Trace.setCategories(Trace.categories.Navigation); + Trace.enable(); // >> (hide) vm.set("array", array); // << (hide) - clearWriters(); - addWriter(new TimestampConsoleWriter()); + Trace.clearWriters(); + Trace.addWriter(new TimestampConsoleWriter()); // << trace-add-custom-writer-ts page.bindingContext = vm; } diff --git a/app/ns-framework-modules-category/trace/trace-page.js b/app/ns-framework-modules-category/trace/trace-page.js index 9bacda5..9de70c5 100644 --- a/app/ns-framework-modules-category/trace/trace-page.js +++ b/app/ns-framework-modules-category/trace/trace-page.js @@ -1,14 +1,14 @@ -const ListViewLinksModel = require("../../links-view-model"); -const link = require("../../link"); +import ListViewLinksModel from "../../links-view-model"; +import Link from "../../link"; const navigationLinks = [ - new link("Custom Trace Writer", "ns-framework-modules-category/trace/custom-trace-writer/custom-trace-writer-page"), - new link("Trace Specific Categories", "ns-framework-modules-category/trace/trace-specific-categories/trace-specific-categories-page") + new Link("Custom Trace Writer", "ns-framework-modules-category/trace/custom-trace-writer/custom-trace-writer-page"), + new Link("Trace Specific Categories", "ns-framework-modules-category/trace/trace-specific-categories/trace-specific-categories-page") ]; const navigationLinksTsc = [ - new link("Custom Trace Writer", "ns-framework-modules-category/trace/custom-trace-writer/custom-trace-writer-ts-page"), - new link("Trace Specific Categories", "ns-framework-modules-category/trace/trace-specific-categories/trace-specific-categories-ts-page") + new Link("Custom Trace Writer", "ns-framework-modules-category/trace/custom-trace-writer/custom-trace-writer-ts-page"), + new Link("Trace Specific Categories", "ns-framework-modules-category/trace/trace-specific-categories/trace-specific-categories-ts-page") ]; -function onNavigatingTo(args) { +export function onNavigatingTo(args) { const page = args.object; page.bindingContext = new ListViewLinksModel({ links: navigationLinks, @@ -17,4 +17,4 @@ function onNavigatingTo(args) { tsclinks: navigationLinksTsc }); } -exports.onNavigatingTo = onNavigatingTo; + diff --git a/app/ns-framework-modules-category/trace/trace-specific-categories/trace-specific-categories-page.js b/app/ns-framework-modules-category/trace/trace-specific-categories/trace-specific-categories-page.js index a6e77ce..c73b519 100644 --- a/app/ns-framework-modules-category/trace/trace-specific-categories/trace-specific-categories-page.js +++ b/app/ns-framework-modules-category/trace/trace-specific-categories/trace-specific-categories-page.js @@ -1,61 +1,61 @@ // >> require-trace-module -const traceModule = require("tns-core-modules/trace"); +import { Trace } from "@nativescript/core"; // << require-trace-module -const timerModule = require("tns-core-modules/timer"); -const dialogs = require("tns-core-modules/ui/dialogs"); -function onNavigatingTo(args) { - traceModule.disable(); +import { Dialogs, Utils } from "@nativescript/core"; + +export function onNavigatingTo(args) { + Trace.disable(); // >> setting-specific-tracing-categories - traceModule.setCategories(traceModule.categories.concat( - traceModule.categories.Binding, - traceModule.categories.Layout, - traceModule.categories.Style, - traceModule.categories.ViewHierarchy, - traceModule.categories.VisualTreeEvents + Trace.setCategories(Trace.categories.concat( + Trace.categories.Binding, + Trace.categories.Layout, + Trace.categories.Style, + Trace.categories.ViewHierarchy, + Trace.categories.VisualTreeEvents )); - traceModule.enable(); + Trace.enable(); // << setting-specific-tracing-categories // >> trace-add-categories - traceModule.addCategories(traceModule.categories.Navigation); + Trace.addCategories(Trace.categories.Navigation); // << trace-add-categories - timerModule.setTimeout(() => { + Utils.setTimeout(() => { console.log("-----------------------------------------------------"); console.log("New trace category has been added"); console.log("Category: NativeLifecycle"); console.log("-----------------------------------------------------"); - dialogs.alert("NativeLifecycle trace category has been added.") + Dialogs.alert("NativeLifecycle trace category has been added.") .then(() => { console.log("Dialog closed!"); }); - traceModule.addCategories(traceModule.categories.NativeLifecycle); + Trace.addCategories(Trace.categories.NativeLifecycle); }, 2000); - traceModule.write("I (heart) NativeScript!", traceModule.categories.Debug); + Trace.write("I (heart) NativeScript!", Trace.categories.Debug); } -function checkIsDebugCategorySet() { - if (traceModule.isCategorySet(traceModule.categories.Debug)) { - dialogs.alert("Debug category has been set") +export function checkIsDebugCategorySet() { + if (Trace.isCategorySet(Trace.categories.Debug)) { + Dialogs.alert("Debug category has been set") .then(() => { console.log("Dialog closed!"); }); } else { - dialogs.alert("Debug category has not been set") + Dialogs.alert("Debug category has not been set") .then(() => { console.log("Dialog closed!"); }); } } -function checkIsDebugVisualTreeEventsSet() { +export function checkIsDebugVisualTreeEventsSet() { // >> check-iscategoryset - if (traceModule.isCategorySet(traceModule.categories.VisualTreeEvents)) { - dialogs.alert("VisualTreeEvents category has been set") + if (Trace.isCategorySet(Trace.categories.VisualTreeEvents)) { + Dialogs.alert("VisualTreeEvents category has been set") .then(() => { console.log("Dialog closed!"); }); } else { - dialogs.alert("VisualTreeEvents category has not been set") + Dialogs.alert("VisualTreeEvents category has not been set") .then(() => { console.log("Dialog closed!"); }); @@ -63,39 +63,33 @@ function checkIsDebugVisualTreeEventsSet() { // << check-iscategoryset } -function enableTracing() { - if (traceModule.isEnabled() === false) { - traceModule.enable(); - dialogs.alert("Trace has been enabled") +export function enableTracing() { + if (Trace.isEnabled() === false) { + Trace.enable(); + Dialogs.alert("Trace has been enabled") .then(() => { console.log("Dialog closed!"); }); } else { - dialogs.alert("Trace has been already enabled") + Dialogs.alert("Trace has been already enabled") .then(() => { console.log("Dialog closed!"); }); } } -function disableTracing() { - if (traceModule.isEnabled()) { +export function disableTracing() { + if (Trace.isEnabled()) { // >> disable-tracing - traceModule.disable(); + Trace.disable(); // << disable-tracing - dialogs.alert("Trace has been disabled") + Dialogs.alert("Trace has been disabled") .then(() => { console.log("Dialog closed!"); }); } else { - dialogs.alert("Trace has been already disabled") + Dialogs.alert("Trace has been already disabled") .then(() => { console.log("Dialog closed!"); }); } } - -exports.onNavigatingTo = onNavigatingTo; -exports.checkIsDebugCategorySet = checkIsDebugCategorySet; -exports.checkIsDebugVisualTreeEventsSet = checkIsDebugVisualTreeEventsSet; -exports.enableTracing = enableTracing; -exports.disableTracing = disableTracing; diff --git a/app/ns-framework-modules-category/trace/trace-specific-categories/trace-specific-categories-ts-page.ts b/app/ns-framework-modules-category/trace/trace-specific-categories/trace-specific-categories-ts-page.ts index ba85995..b643635 100644 --- a/app/ns-framework-modules-category/trace/trace-specific-categories/trace-specific-categories-ts-page.ts +++ b/app/ns-framework-modules-category/trace/trace-specific-categories/trace-specific-categories-ts-page.ts @@ -1,47 +1,48 @@ // tslint:disable:max-line-length // >> import-trace-module -import { enable, disable, isEnabled, categories, setCategories, addCategories, write, isCategorySet } from "tns-core-modules/trace"; +import { Trace } from "@nativescript/core"; // << import-trace-module -import { setTimeout } from "tns-core-modules/timer"; -import * as dialogs from "tns-core-modules/ui/dialogs"; +import { Dialogs, Utils } from "@nativescript/core"; + + export function onNavigatingTo(args) { - disable(); + Trace.disable(); // >> setting-specific-tracing-categories-ts - setCategories(categories.concat( - categories.Binding, - categories.Layout, - categories.Style, - categories.ViewHierarchy, - categories.VisualTreeEvents + Trace.setCategories(Trace.categories.concat( + Trace.categories.Binding, + Trace.categories.Layout, + Trace.categories.Style, + Trace.categories.ViewHierarchy, + Trace.categories.VisualTreeEvents )); - enable(); + Trace.enable(); // << setting-specific-tracing-categories-ts // >> trace-add-categories-ts - addCategories(categories.Navigation); + Trace.addCategories(Trace.categories.Navigation); // << trace-add-categories-ts - setTimeout(() => { + Utils.setTimeout(() => { console.log("-----------------------------------------------------"); console.log("New trace category has been added"); console.log("Category: NativeLifecycle"); console.log("-----------------------------------------------------"); - dialogs.alert("NativeLifecycle trace category has been added.") + Dialogs.alert("NativeLifecycle trace category has been added.") .then(() => { console.log("Dialog closed!"); }); - addCategories(categories.NativeLifecycle); + Trace.addCategories(Trace.categories.NativeLifecycle); }, 2000); - write("I (heart) NativeScript!", categories.Debug); + Trace.write("I (heart) NativeScript!", Trace.categories.Debug); } export function checkIsDebugCategorySet() { - if (isCategorySet(categories.Debug)) { - dialogs.alert("Debug category has been set") + if (Trace.isCategorySet(Trace.categories.Debug)) { + Dialogs.alert("Debug category has been set") .then(() => { console.log("Dialog closed!"); }); } else { - dialogs.alert("Debug category has not been set") + Dialogs.alert("Debug category has not been set") .then(() => { console.log("Dialog closed!"); }); @@ -50,13 +51,13 @@ export function checkIsDebugCategorySet() { export function checkIsDebugVisualTreeEventsSet() { // >> check-iscategoryset-ts - if (isCategorySet(categories.VisualTreeEvents)) { - dialogs.alert("VisualTreeEvents category has been set") + if (Trace.isCategorySet(Trace.categories.VisualTreeEvents)) { + Dialogs.alert("VisualTreeEvents category has been set") .then(() => { console.log("Dialog closed!"); }); } else { - dialogs.alert("VisualTreeEvents category has not been set") + Dialogs.alert("VisualTreeEvents category has not been set") .then(() => { console.log("Dialog closed!"); }); @@ -65,30 +66,30 @@ export function checkIsDebugVisualTreeEventsSet() { } export function enableTracing() { - if (isEnabled() === false) { - enable(); - dialogs.alert("Trace has been enabled") + if (Trace.isEnabled() === false) { + Trace.enable(); + Dialogs.alert("Trace has been enabled") .then(() => { console.log("Dialog closed!"); }); } else { - dialogs.alert("Trace has been already enabled") + Dialogs.alert("Trace has been already enabled") .then(() => { console.log("Dialog closed!"); }); } } export function disableTracing() { - if (isEnabled()) { + if (Trace.isEnabled()) { // >> disable-tracing-ts - disable(); + Trace.disable(); // << disable-tracing-ts - dialogs.alert("Trace has been disabled") + Dialogs.alert("Trace has been disabled") .then(() => { console.log("Dialog closed!"); }); } else { - dialogs.alert("Trace has been already disabled") + Dialogs.alert("Trace has been already disabled") .then(() => { console.log("Dialog closed!"); }); diff --git a/app/ns-framework-modules-category/virtual-array/basics/basics-page.js b/app/ns-framework-modules-category/virtual-array/basics/basics-page.js index b67446b..e76bc53 100644 --- a/app/ns-framework-modules-category/virtual-array/basics/basics-page.js +++ b/app/ns-framework-modules-category/virtual-array/basics/basics-page.js @@ -1,8 +1,8 @@ // >> virtual-array-require -const VirtualArray = require("tns-core-modules/data/virtual-array").VirtualArray; +import { VirtualArray } from "@nativescript/core"; // << virtual-array-require -function onNavigatingTo(args) { +export function onNavigatingTo(args) { const page = args.object; // >> virtual-array-creation @@ -35,4 +35,4 @@ function onNavigatingTo(args) { page.bindingContext = { items: virtualArray }; } -exports.onNavigatingTo = onNavigatingTo; + diff --git a/app/ns-framework-modules-category/virtual-array/basics/basics-ts-page.ts b/app/ns-framework-modules-category/virtual-array/basics/basics-ts-page.ts index 79fa805..fb01e74 100644 --- a/app/ns-framework-modules-category/virtual-array/basics/basics-ts-page.ts +++ b/app/ns-framework-modules-category/virtual-array/basics/basics-ts-page.ts @@ -1,5 +1,5 @@ // >> virtual-array-require-ts -import { VirtualArray, ChangedData } from "tns-core-modules/data/virtual-array"; +import { VirtualArray, ChangedData } from "@nativescript/core"; // << virtual-array-require-ts export function onNavigatingTo(data) { diff --git a/app/ns-framework-modules-category/virtual-array/virtual-array-page.js b/app/ns-framework-modules-category/virtual-array/virtual-array-page.js index b650c7d..e3721bc 100644 --- a/app/ns-framework-modules-category/virtual-array/virtual-array-page.js +++ b/app/ns-framework-modules-category/virtual-array/virtual-array-page.js @@ -1,12 +1,12 @@ -const ListViewLinksModel = require("../../links-view-model"); -const link = require("../../link"); +import ListViewLinksModel from "../../links-view-model"; +import Link from "../../link"; const navigationLinks = [ - new link("Basics", "ns-framework-modules-category/virtual-array//basics/basics-page") + new Link("Basics", "ns-framework-modules-category/virtual-array/basics/basics-page") ]; const navigationLinksTsc = [ - new link("Basics", "ns-framework-modules-category/virtual-array//basics/basics-ts-page") + new Link("Basics", "ns-framework-modules-category/virtual-array/basics/basics-ts-page") ]; -function onNavigatingTo(args) { +export function onNavigatingTo(args) { const page = args.object; page.bindingContext = new ListViewLinksModel({ links: navigationLinks, @@ -15,4 +15,4 @@ function onNavigatingTo(args) { tsclinks: navigationLinksTsc }); } -exports.onNavigatingTo = onNavigatingTo; + diff --git a/app/ns-framework-modules-category/xml-parser/basics/basics-page.js b/app/ns-framework-modules-category/xml-parser/basics/basics-page.js index c0be627..346ede5 100644 --- a/app/ns-framework-modules-category/xml-parser/basics/basics-page.js +++ b/app/ns-framework-modules-category/xml-parser/basics/basics-page.js @@ -1,13 +1,12 @@ -const Observable = require("tns-core-modules/data/observable").Observable; -const ObservableArray = require("tns-core-modules/data/observable-array").ObservableArray; +import { Observable, ObservableArray } from "@nativescript/core"; // >> require-xml-module -const xmlModule = require("tns-core-modules/xml"); +import { ParserEventType, XmlParser } from "@nativescript/core"; // << require-xml-module const source = new ObservableArray(); // >> parser-event const onEventCallback = (event) => { switch (event.eventType) { - case xmlModule.ParserEventType.StartElement: + case ParserEventType.StartElement: if (event.attributes) { for (const attributeName in event.attributes) { if (event.attributes.hasOwnProperty(attributeName)) { @@ -30,7 +29,7 @@ const onEventCallback = (event) => { }); } break; - case xmlModule.ParserEventType.EndElement: + case ParserEventType.EndElement: source.push({ eventType:event.eventType, elementName:event.elementName, @@ -40,7 +39,7 @@ const onEventCallback = (event) => { }); break; - case xmlModule.ParserEventType.Text: + case ParserEventType.Text: const significantText = event.data.trim(); if (significantText !== "") { @@ -63,9 +62,9 @@ const onErrorCallback = (error) => { }; // << parser-event // >> parse-method -const xmlParser = new xmlModule.XmlParser(onEventCallback, onErrorCallback); +const xmlParser = new XmlParser(onEventCallback, onErrorCallback); // >> (hide) -function onNavigatingTo(args) { +export function onNavigatingTo(args) { const page = args.object; const vm = new Observable(); vm.set("source", source); @@ -73,7 +72,7 @@ function onNavigatingTo(args) { page.bindingContext = vm; } -function parseXMLButton(args) { +export function parseXMLButton(args) { source.splice(0); // << (hide) xmlParser.parse(` @@ -87,5 +86,4 @@ function parseXMLButton(args) { `); // << parse-method } -exports.onNavigatingTo = onNavigatingTo; -exports.parseXMLButton = parseXMLButton; + diff --git a/app/ns-framework-modules-category/xml-parser/basics/basics-page.xml b/app/ns-framework-modules-category/xml-parser/basics/basics-page.xml index a550acf..cce1a8d 100644 --- a/app/ns-framework-modules-category/xml-parser/basics/basics-page.xml +++ b/app/ns-framework-modules-category/xml-parser/basics/basics-page.xml @@ -27,4 +27,4 @@ - \ No newline at end of file + diff --git a/app/ns-framework-modules-category/xml-parser/basics/basics-ts-page.ts b/app/ns-framework-modules-category/xml-parser/basics/basics-ts-page.ts index ae7c39a..327b6df 100644 --- a/app/ns-framework-modules-category/xml-parser/basics/basics-ts-page.ts +++ b/app/ns-framework-modules-category/xml-parser/basics/basics-ts-page.ts @@ -1,14 +1,12 @@ -import { Observable } from "tns-core-modules/data/observable"; -import { ObservableArray } from "tns-core-modules/data/observable-array"; -import { Page } from "tns-core-modules/ui/page"; +import { Observable, ObservableArray, Page} from "@nativescript/core"; // >> import-xml-module -import * as xmlModule from "tns-core-modules/xml"; +import { ParserEventType, XmlParser } from "@nativescript/core"; // << import-xml-module const source = new ObservableArray(); // >> parser-event-ts const onEventCallback = (event) => { switch (event.eventType) { - case xmlModule.ParserEventType.StartElement: + case ParserEventType.StartElement: if (event.attributes) { for (const attributeName in event.attributes) { if (event.attributes.hasOwnProperty(attributeName)) { @@ -31,7 +29,7 @@ const onEventCallback = (event) => { }); } break; - case xmlModule.ParserEventType.EndElement: + case ParserEventType.EndElement: source.push({ eventType: event.eventType, elementName: event.elementName, @@ -41,7 +39,7 @@ const onEventCallback = (event) => { }); break; - case xmlModule.ParserEventType.Text: + case ParserEventType.Text: const significantText = event.data.trim(); if (significantText !== "") { @@ -64,7 +62,7 @@ const onErrorCallback = (error) => { }; // << parser-event-ts // >> parse-method-ts -const xmlParser = new xmlModule.XmlParser(onEventCallback, onErrorCallback); +const xmlParser = new XmlParser(onEventCallback, onErrorCallback); // >> (hide) export function onNavigatingTo(args) { const page: Page = args.object; diff --git a/app/ns-framework-modules-category/xml-parser/basics/basics-ts-page.xml b/app/ns-framework-modules-category/xml-parser/basics/basics-ts-page.xml index a550acf..cce1a8d 100644 --- a/app/ns-framework-modules-category/xml-parser/basics/basics-ts-page.xml +++ b/app/ns-framework-modules-category/xml-parser/basics/basics-ts-page.xml @@ -27,4 +27,4 @@ - \ No newline at end of file + diff --git a/app/ns-framework-modules-category/xml-parser/xml-parser-page.js b/app/ns-framework-modules-category/xml-parser/xml-parser-page.js index 2fddf96..82eae7c 100644 --- a/app/ns-framework-modules-category/xml-parser/xml-parser-page.js +++ b/app/ns-framework-modules-category/xml-parser/xml-parser-page.js @@ -1,12 +1,12 @@ -const ListViewLinksModel = require("../../links-view-model"); -const link = require("../../link"); +import ListViewLinksModel from "../../links-view-model"; +import Link from "../../link"; const navigationLinks = [ - new link("Basics", "ns-framework-modules-category/xml-parser/basics/basics-page") + new Link("Basics", "ns-framework-modules-category/xml-parser/basics/basics-page") ]; const navigationLinksTsc = [ - new link("Basics", "ns-framework-modules-category/xml-parser/basics/basics-ts-page") + new Link("Basics", "ns-framework-modules-category/xml-parser/basics/basics-ts-page") ]; -function onNavigatingTo(args) { +export function onNavigatingTo(args) { const page = args.object; page.bindingContext = new ListViewLinksModel({ links: navigationLinks, @@ -15,4 +15,4 @@ function onNavigatingTo(args) { tsclinks: navigationLinksTsc }); } -exports.onNavigatingTo = onNavigatingTo; + diff --git a/app/ns-ui-category/icon-fonts/icon-fonts-page.js b/app/ns-ui-category/icon-fonts/icon-fonts-page.js index 47cd3f5..8057a31 100644 --- a/app/ns-ui-category/icon-fonts/icon-fonts-page.js +++ b/app/ns-ui-category/icon-fonts/icon-fonts-page.js @@ -1,13 +1,13 @@ -const ListViewLinksModel = require("../../links-view-model"); -const link = require("../../link"); +import ListViewLinksModel from "../../links-view-model"; +import Link from "../../link"; const navigationLinks = [ - new link("Usage", "ns-ui-category/icon-fonts/usage/usage-page"), - new link("Tips & Tricks", "ns-ui-category/icon-fonts/tips-and-tricks/tips-and-tricks-page") + new Link("Usage", "ns-ui-category/icon-fonts/usage/usage-page"), + new Link("Tips & Tricks", "ns-ui-category/icon-fonts/tips-and-tricks/tips-and-tricks-page") ]; const navigationLinksTsc = [ - new link("Tips & Tricks", "ns-ui-category/icon-fonts/tips-and-tricks/tips-and-tricks-ts-page") + new Link("Tips & Tricks", "ns-ui-category/icon-fonts/tips-and-tricks/tips-and-tricks-ts-page") ]; -function onNavigatingTo(args) { +export function onNavigatingTo(args) { const page = args.object; page.bindingContext = new ListViewLinksModel({ links: navigationLinks, @@ -16,4 +16,4 @@ function onNavigatingTo(args) { tsclinks: navigationLinksTsc }); } -exports.onNavigatingTo = onNavigatingTo; + diff --git a/app/ns-ui-category/icon-fonts/tips-and-tricks/tips-and-tricks-page.js b/app/ns-ui-category/icon-fonts/tips-and-tricks/tips-and-tricks-page.js index bb204cd..e41d537 100644 --- a/app/ns-ui-category/icon-fonts/tips-and-tricks/tips-and-tricks-page.js +++ b/app/ns-ui-category/icon-fonts/tips-and-tricks/tips-and-tricks-page.js @@ -1,6 +1,6 @@ // >> icon-font-code-behind-code -const Observable = require("tns-core-modules/data/observable").Observable; -function pageLoaded(args) { +import { Observable } from "@nativescript/core"; +export function pageLoaded(args) { const page = args.object; const viewModel = new Observable(); @@ -15,5 +15,4 @@ function pageLoaded(args) { page.bindingContext = viewModel; } -exports.pageLoaded = pageLoaded; // << icon-font-code-behind-code diff --git a/app/ns-ui-category/icon-fonts/tips-and-tricks/tips-and-tricks-ts-page.ts b/app/ns-ui-category/icon-fonts/tips-and-tricks/tips-and-tricks-ts-page.ts index 55090b2..bd6a0e8 100644 --- a/app/ns-ui-category/icon-fonts/tips-and-tricks/tips-and-tricks-ts-page.ts +++ b/app/ns-ui-category/icon-fonts/tips-and-tricks/tips-and-tricks-ts-page.ts @@ -1,6 +1,5 @@ // >> icon-font-code-behind-code-ts -import { Observable, EventData } from "tns-core-modules/data/observable"; -import { Page } from "tns-core-modules/ui/page"; +import { EventData, Observable, Page } from "@nativescript/core"; export function pageLoaded(args: EventData) { const page = args.object; diff --git a/app/ns-ui-category/modal-view/basics/basics-page.js b/app/ns-ui-category/modal-view/basics/basics-page.js index a1c0584..c73a2e0 100644 --- a/app/ns-ui-category/modal-view/basics/basics-page.js +++ b/app/ns-ui-category/modal-view/basics/basics-page.js @@ -1,10 +1,11 @@ // >> main-view-js const modalViewModule = "ns-ui-category/modal-view/basics/modal-view-page"; -function openModal(args) { +export function openModal(args) { const mainView = args.object; const option = { - context: { username: "test_username", password: "test" }, + context: { username: "test_username", +password: "test" }, closeCallback: (username, password) => { // Receive data from the modal view. e.g. username & password alert(`Username: ${username} : Password: ${password}`); @@ -14,5 +15,4 @@ function openModal(args) { mainView.showModal(modalViewModule, option); } -exports.openModal = openModal; // << main-view-js diff --git a/app/ns-ui-category/modal-view/basics/basics-ts-page.ts b/app/ns-ui-category/modal-view/basics/basics-ts-page.ts index f62f94e..ebde20a 100644 --- a/app/ns-ui-category/modal-view/basics/basics-ts-page.ts +++ b/app/ns-ui-category/modal-view/basics/basics-ts-page.ts @@ -1,6 +1,6 @@ // >> main-view-ts -import { Button } from "tns-core-modules/ui/button"; -import { ShowModalOptions } from "tns-core-modules/ui/core/view"; +import { Button, ShowModalOptions } from "@nativescript/core"; + const modalViewModulets = "ns-ui-category/modal-view/basics/modal-ts-view-page"; export function openModal(args) { diff --git a/app/ns-ui-category/modal-view/basics/modal-ts-view-page.ts b/app/ns-ui-category/modal-view/basics/modal-ts-view-page.ts index bb8971f..f2f8ed3 100644 --- a/app/ns-ui-category/modal-view/basics/modal-ts-view-page.ts +++ b/app/ns-ui-category/modal-view/basics/modal-ts-view-page.ts @@ -1,6 +1,6 @@ // >> modal-view-ts -import { fromObject } from "tns-core-modules/data/observable"; -import { Page } from "tns-core-modules/ui/page"; +import { fromObject, Page } from "@nativescript/core"; + let closeCallback; export function onShownModally(args) { diff --git a/app/ns-ui-category/modal-view/basics/modal-view-page.js b/app/ns-ui-category/modal-view/basics/modal-view-page.js index b2f459f..6a88aaa 100644 --- a/app/ns-ui-category/modal-view/basics/modal-view-page.js +++ b/app/ns-ui-category/modal-view/basics/modal-view-page.js @@ -1,21 +1,19 @@ // >> modal-view-js -const observableModule = require("tns-core-modules/data/observable"); +import { fromObject } from "@nativescript/core"; let closeCallback; -function onShownModally(args) { +export function onShownModally(args) { const context = args.context; closeCallback = args.closeCallback; const page = args.object; - page.bindingContext = observableModule.fromObject(context); + page.bindingContext = fromObject(context); } -exports.onShownModally = onShownModally; -function onLoginButtonTap(args) { +export function onLoginButtonTap(args) { const page = args.object.page; const bindingContext = page.bindingContext; const username = bindingContext.get("username"); const password = bindingContext.get("password"); closeCallback(username, password); } -exports.onLoginButtonTap = onLoginButtonTap; // << modal-view-js diff --git a/app/ns-ui-category/modal-view/custom-actionbar/main-page.js b/app/ns-ui-category/modal-view/custom-actionbar/main-page.js index 377ca7a..1323c7f 100644 --- a/app/ns-ui-category/modal-view/custom-actionbar/main-page.js +++ b/app/ns-ui-category/modal-view/custom-actionbar/main-page.js @@ -1,7 +1,7 @@ // >> main-page-js-action-bar const modalView = "ns-ui-category/modal-view/custom-actionbar/modal-root"; -function openModal(args) { +export function openModal(args) { const mainpage = args.object.page; const option = { context: "some context", @@ -10,5 +10,5 @@ function openModal(args) { }; mainpage.showModal(modalView, option); } -exports.openModal = openModal; + // << main-page-js-action-bar diff --git a/app/ns-ui-category/modal-view/custom-actionbar/main-ts-page.ts b/app/ns-ui-category/modal-view/custom-actionbar/main-ts-page.ts index dd8794e..2fee7fb 100644 --- a/app/ns-ui-category/modal-view/custom-actionbar/main-ts-page.ts +++ b/app/ns-ui-category/modal-view/custom-actionbar/main-ts-page.ts @@ -1,6 +1,6 @@ // >> main-page-ts-action-bar -import { Page } from "tns-core-modules/ui/page"; -import { ShowModalOptions } from "tns-core-modules/ui/core/view"; +import { Page, ShowModalOptions } from "@nativescript/core"; + const modalView = "ns-ui-category/modal-view/custom-actionbar/modal-ts-root"; export function openModal(args) { diff --git a/app/ns-ui-category/modal-view/custom-actionbar/modal-view-page.js b/app/ns-ui-category/modal-view/custom-actionbar/modal-view-page.js index c389d10..9c6595f 100644 --- a/app/ns-ui-category/modal-view/custom-actionbar/modal-view-page.js +++ b/app/ns-ui-category/modal-view/custom-actionbar/modal-view-page.js @@ -1,11 +1,9 @@ // >> modal-view-js-action-bar -function onShowingModally(args) { +export function onShowingModally(args) { console.log("onShowingModally"); } -exports.onShowingModally = onShowingModally; -function onCloseModal(args) { +export function onCloseModal(args) { args.object.closeModal(); } -exports.onCloseModal = onCloseModal; // << modal-view-js-action-bar diff --git a/app/ns-ui-category/modal-view/modal-navigation/first-modal-ts-view-page.ts b/app/ns-ui-category/modal-view/modal-navigation/first-modal-ts-view-page.ts index 9f6c60f..7b6c94e 100644 --- a/app/ns-ui-category/modal-view/modal-navigation/first-modal-ts-view-page.ts +++ b/app/ns-ui-category/modal-view/modal-navigation/first-modal-ts-view-page.ts @@ -1,5 +1,5 @@ // >> first-modal-view-ts-navigation -import { Page } from "tns-core-modules/ui/page"; +import { Page } from "@nativescript/core"; export function onNavigate(args) { const view = args.object; const page: Page = view.page; diff --git a/app/ns-ui-category/modal-view/modal-navigation/first-modal-view-page.js b/app/ns-ui-category/modal-view/modal-navigation/first-modal-view-page.js index 0808712..bf9fe0e 100644 --- a/app/ns-ui-category/modal-view/modal-navigation/first-modal-view-page.js +++ b/app/ns-ui-category/modal-view/modal-navigation/first-modal-view-page.js @@ -1,18 +1,15 @@ // >> first-modal-view-js-navigation -function onNavigate(args) { +export function onNavigate(args) { const view = args.object; const page = view.page; page.frame.navigate("ns-ui-category/modal-view/modal-navigation/second-modal-view-page"); } -exports.onNavigate = onNavigate; -function onPageLoaded(args) { +export function onPageLoaded(args) { console.log("onPageLoaded"); } -exports.onPageLoaded = onPageLoaded; -function onCloseModal(args) { +export function onCloseModal(args) { args.object.closeModal(); } -exports.onCloseModal = onCloseModal; // << first-modal-view-js-navigation diff --git a/app/ns-ui-category/modal-view/modal-navigation/main-page.js b/app/ns-ui-category/modal-view/modal-navigation/main-page.js index 5b23e30..394a15d 100644 --- a/app/ns-ui-category/modal-view/modal-navigation/main-page.js +++ b/app/ns-ui-category/modal-view/modal-navigation/main-page.js @@ -1,7 +1,7 @@ // >> main-page-js-navigation const modalView = "ns-ui-category/modal-view/modal-navigation/modal-root"; -function openModal(args) { +export function openModal(args) { const mainpage = args.object.page; const options = { context: "some context", @@ -11,5 +11,5 @@ function openModal(args) { }; mainpage.showModal(modalView, options); } -exports.openModal = openModal; + // << main-page-js-navigation diff --git a/app/ns-ui-category/modal-view/modal-navigation/main-ts-page.ts b/app/ns-ui-category/modal-view/modal-navigation/main-ts-page.ts index db18861..0d5540b 100644 --- a/app/ns-ui-category/modal-view/modal-navigation/main-ts-page.ts +++ b/app/ns-ui-category/modal-view/modal-navigation/main-ts-page.ts @@ -1,8 +1,8 @@ // >> main-page-ts-navigation -import { ShowModalOptions } from "tns-core-modules/ui/core/view"; +import { ShowModalOptions } from "@nativescript/core"; const modalView = "ns-ui-category/modal-view/modal-navigation/modal-root"; -function openModal(args) { +export function openModal(args) { const mainpage = args.object.page; const options: ShowModalOptions = { context: "some context", @@ -11,5 +11,5 @@ function openModal(args) { }; mainpage.showModal(modalView, options); } -exports.openModal = openModal; + // << main-page-ts-navigation diff --git a/app/ns-ui-category/modal-view/modal-navigation/modal-root.js b/app/ns-ui-category/modal-view/modal-navigation/modal-root.js index 0b5d0fd..a774eff 100644 --- a/app/ns-ui-category/modal-view/modal-navigation/modal-root.js +++ b/app/ns-ui-category/modal-view/modal-navigation/modal-root.js @@ -1,12 +1,12 @@ -exports.onShowingModally = (args) => { +export function onShowingModally(args) { // args is of type ShownModallyData console.log(`${args.eventName}`); // showingModally -}; +} -exports.onShownModally = (args) => { +export function onShownModally(args) { // args is of type ShownModallyData console.log(` ${args.context}`); console.log(` ${args.eventName}`); // shownModally console.log(` ${args.object}`); -}; +} diff --git a/app/ns-ui-category/modal-view/modal-navigation/modal-ts-root.ts b/app/ns-ui-category/modal-view/modal-navigation/modal-ts-root.ts index 55412e5..cac4e86 100644 --- a/app/ns-ui-category/modal-view/modal-navigation/modal-ts-root.ts +++ b/app/ns-ui-category/modal-view/modal-navigation/modal-ts-root.ts @@ -1,4 +1,4 @@ -import { ShownModallyData } from "tns-core-modules/ui/page"; +import { ShownModallyData } from "@nativescript/core"; export function onShowingModally(args: ShownModallyData) { // args is of type ShownModallyData diff --git a/app/ns-ui-category/modal-view/modal-navigation/second-modal-ts-view-page.ts b/app/ns-ui-category/modal-view/modal-navigation/second-modal-ts-view-page.ts index 9d4fcf5..26d664c 100644 --- a/app/ns-ui-category/modal-view/modal-navigation/second-modal-ts-view-page.ts +++ b/app/ns-ui-category/modal-view/modal-navigation/second-modal-ts-view-page.ts @@ -1,5 +1,5 @@ // >> second-modal-view-ts-navigation -import { Page } from "tns-core-modules/ui/page"; +import { Page } from "@nativescript/core"; export function onGoBack(args) { const view = args.object; diff --git a/app/ns-ui-category/modal-view/modal-navigation/second-modal-view-page.js b/app/ns-ui-category/modal-view/modal-navigation/second-modal-view-page.js index daa6703..fc31989 100644 --- a/app/ns-ui-category/modal-view/modal-navigation/second-modal-view-page.js +++ b/app/ns-ui-category/modal-view/modal-navigation/second-modal-view-page.js @@ -1,14 +1,12 @@ // >> second-modal-view-js-navigation -function onGoBack(args) { +export function onGoBack(args) { const view = args.object; const page = view.page; page.frame.goBack(); } -exports.onGoBack = onGoBack; -function onCloseModal(args) { +export function onCloseModal(args) { args.object.closeModal(); } -exports.onCloseModal = onCloseModal; // << second-modal-view-js-navigation diff --git a/app/ns-ui-category/modal-view/modal-view-examples-page.js b/app/ns-ui-category/modal-view/modal-view-examples-page.js index ae55c16..61abc41 100644 --- a/app/ns-ui-category/modal-view/modal-view-examples-page.js +++ b/app/ns-ui-category/modal-view/modal-view-examples-page.js @@ -1,16 +1,16 @@ -const ListViewLinksModel = require("../../links-view-model"); -const link = require("../../link"); +import ListViewLinksModel from "../../links-view-model"; +import Link from "../../link"; const navigationLinks = [ - new link("Basics", "ns-ui-category/modal-view/basics/basics-page"), - new link("Modal view navigation", "ns-ui-category/modal-view/modal-navigation/main-page"), - new link("Modal view with ActionBar", "ns-ui-category/modal-view/custom-actionbar/main-page") + new Link("Basics", "ns-ui-category/modal-view/basics/basics-page"), + new Link("Modal view navigation", "ns-ui-category/modal-view/modal-navigation/main-page"), + new Link("Modal view with ActionBar", "ns-ui-category/modal-view/custom-actionbar/main-page") ]; const navigationLinksTsc = [ - new link("Basics", "ns-ui-category/modal-view/basics/basics-ts-page"), - new link("Modal page navigation", "ns-ui-category/modal-view/modal-navigation/main-ts-page"), - new link("Modal page with ActionBar", "ns-ui-category/modal-view/custom-actionbar/main-ts-page") + new Link("Basics", "ns-ui-category/modal-view/basics/basics-ts-page"), + new Link("Modal page navigation", "ns-ui-category/modal-view/modal-navigation/main-ts-page"), + new Link("Modal page with ActionBar", "ns-ui-category/modal-view/custom-actionbar/main-ts-page") ]; -function onNavigatingTo(args) { +export function onNavigatingTo(args) { const page = args.object; page.bindingContext = new ListViewLinksModel({ links: navigationLinks, @@ -19,4 +19,4 @@ function onNavigatingTo(args) { tsclinks: navigationLinksTsc }); } -exports.onNavigatingTo = onNavigatingTo; + diff --git a/app/ns-ui-widgets-category/action-bar/action-bar-page.js b/app/ns-ui-widgets-category/action-bar/action-bar-page.js index 4102f04..f4a7b5d 100644 --- a/app/ns-ui-widgets-category/action-bar/action-bar-page.js +++ b/app/ns-ui-widgets-category/action-bar/action-bar-page.js @@ -1,59 +1,59 @@ -const ListViewLinksModel = require("../../links-view-model"); -const link = require("../../link"); +import ListViewLinksModel from "../../links-view-model"; +import Link from "../../link"; const navigationLinks = [ - new link("Usage", "ns-ui-widgets-category/action-bar/usage/usage-page"), - new link( + new Link("Usage", "ns-ui-widgets-category/action-bar/usage/usage-page"), + new Link( "Code-Behind", "ns-ui-widgets-category/action-bar/code-behind/code-behind-page" ), - new link( + new Link( "Cutom title view", "ns-ui-widgets-category/action-bar/custom-title-view/custom-title-view-page" ), - new link( + new Link( "Setting app icon Android", "ns-ui-widgets-category/action-bar/setting-app-icon-android/setting-app-icon-android-page" ), - new link( + new Link( "Items", "ns-ui-widgets-category/action-bar/items-actionbar/items-actionbar-page" ), - new link( + new Link( "Hide/Show ActionBar", "ns-ui-widgets-category/action-bar/hide-show-actionbar/hide-show-actionbar-page" ), - new link( + new Link( "Hiding ActionItems", "ns-ui-widgets-category/action-bar/hiding-action-items/hiding-action-items-page" ), - new link("Styling", "ns-ui-widgets-category/action-bar/styling/styling-page"), - new link( + new Link("Styling", "ns-ui-widgets-category/action-bar/styling/styling-page"), + new Link( "Creating SideDrawer button", "ns-ui-widgets-category/action-bar/creating-sidedrawer-button/creating-sidedrawer-button-page" ) ]; const navigationLinksTsc = [ - new link("Usage", "ns-ui-widgets-category/action-bar/usage/usage-ts-page"), - new link( + new Link("Usage", "ns-ui-widgets-category/action-bar/usage/usage-ts-page"), + new Link( "Code-Behind", "ns-ui-widgets-category/action-bar/code-behind/code-behind-ts-page" ), - new link( + new Link( "Hide/Show ActionBar", "ns-ui-widgets-category/action-bar/hide-show-actionbar/hide-show-actionbar-ts-page" ), - new link( + new Link( "Hiding ActionItems", "ns-ui-widgets-category/action-bar/hiding-action-items/hiding-action-items-ts-page" ), - new link( + new Link( "Items", "ns-ui-widgets-category/action-bar/items-actionbar/items-actionbar-ts-page" ) ]; -function onNavigatingTo(args) { +export function onNavigatingTo(args) { const page = args.object; page.bindingContext = new ListViewLinksModel({ links: navigationLinks, @@ -62,4 +62,4 @@ function onNavigatingTo(args) { tsclinks: navigationLinksTsc }); } -exports.onNavigatingTo = onNavigatingTo; + diff --git a/app/ns-ui-widgets-category/action-bar/code-behind/code-behind-page.js b/app/ns-ui-widgets-category/action-bar/code-behind/code-behind-page.js index 94340dd..2b76da3 100644 --- a/app/ns-ui-widgets-category/action-bar/code-behind/code-behind-page.js +++ b/app/ns-ui-widgets-category/action-bar/code-behind/code-behind-page.js @@ -1,8 +1,7 @@ // >> actionbar-code-behind -const ActionBar = require("tns-core-modules/ui/action-bar").ActionBar; -const NavigationButton = require("tns-core-modules/ui/action-bar").NavigationButton; +import { ActionBar, NavigationButton, isAndroid } from "@nativescript/core"; -function onLoaded(args) { +export function onLoaded(args) { const page = args.object; const newActionBar = new ActionBar(); @@ -11,12 +10,13 @@ function onLoaded(args) { // for ios newNavigaitonButton.text = "Go Back"; // for android - newNavigaitonButton.android.systemIcon = "ic_menu_back"; + if (isAndroid) { + newNavigaitonButton.android.systemIcon = "ic_menu_back"; + } // or newNavigaitonButton.icon = "~\images\nav-image.png"; newActionBar.navigationButton = newNavigaitonButton; page.actionBar = newActionBar; page.actionBarHidden = false; } -exports.onLoaded = onLoaded; // << actionbar-code-behind diff --git a/app/ns-ui-widgets-category/action-bar/code-behind/code-behind-ts-page.ts b/app/ns-ui-widgets-category/action-bar/code-behind/code-behind-ts-page.ts index 6ca6133..42ff68a 100644 --- a/app/ns-ui-widgets-category/action-bar/code-behind/code-behind-ts-page.ts +++ b/app/ns-ui-widgets-category/action-bar/code-behind/code-behind-ts-page.ts @@ -1,16 +1,14 @@ // >> actionbar-code-behind-ts -import { EventData } from "tns-core-modules/data/observable"; -import { ActionBar, NavigationButton } from "tns-core-modules/ui/action-bar"; -import { Page } from "tns-core-modules/ui/page"; +import { ActionBar, EventData, NavigationButton, Page } from "@nativescript/core"; export function onLoaded(args: EventData) { const page = args.object; const newActionBar = new ActionBar(); newActionBar.title = "Code-Behind ActionBar"; - const newNavigaitonButton = new NavigationButton(); - newNavigaitonButton.text = "Go Back"; - newActionBar.navigationButton = newNavigaitonButton; + const newNavigationButton = new NavigationButton(); + newNavigationButton.text = "Go Back"; + newActionBar.navigationButton = newNavigationButton; page.actionBar = newActionBar; page.actionBarHidden = false; diff --git a/app/ns-ui-widgets-category/action-bar/creating-sidedrawer-button/creating-sidedrawer-button-page.js b/app/ns-ui-widgets-category/action-bar/creating-sidedrawer-button/creating-sidedrawer-button-page.js index 2abfb47..a402747 100644 --- a/app/ns-ui-widgets-category/action-bar/creating-sidedrawer-button/creating-sidedrawer-button-page.js +++ b/app/ns-ui-widgets-category/action-bar/creating-sidedrawer-button/creating-sidedrawer-button-page.js @@ -1,5 +1,4 @@ -function showSideDrawer(args) { +export function showSideDrawer(args) { console.log("Show SideDrawer tapped."); // Show sidedrawer ... } -exports.showSideDrawer = showSideDrawer; diff --git a/app/ns-ui-widgets-category/action-bar/hide-show-actionbar/hide-show-actionbar-page.js b/app/ns-ui-widgets-category/action-bar/hide-show-actionbar/hide-show-actionbar-page.js index 53298d2..ed8e12f 100644 --- a/app/ns-ui-widgets-category/action-bar/hide-show-actionbar/hide-show-actionbar-page.js +++ b/app/ns-ui-widgets-category/action-bar/hide-show-actionbar/hide-show-actionbar-page.js @@ -1,20 +1,19 @@ // >> action-bar-hide-show-js -const Observable = require("tns-core-modules/data/observable").Observable; +import { Observable } from "@nativescript/core"; let value = false; -function onNavigatingTo(args) { +export function onNavigatingTo(args) { const page = args.object; const vm = new Observable(); vm.set("abHidden", value); page.bindingContext = vm; } -exports.onNavigatingTo = onNavigatingTo; -function onTap(args) { + +export function onTap(args) { const page = args.object.page; const vm = page.bindingContext; value = !value; vm.set("abHidden", value); } -exports.onTap = onTap; // << action-bar-hide-show-js diff --git a/app/ns-ui-widgets-category/action-bar/hide-show-actionbar/hide-show-actionbar-ts-page.ts b/app/ns-ui-widgets-category/action-bar/hide-show-actionbar/hide-show-actionbar-ts-page.ts index 92288c9..7b05640 100644 --- a/app/ns-ui-widgets-category/action-bar/hide-show-actionbar/hide-show-actionbar-ts-page.ts +++ b/app/ns-ui-widgets-category/action-bar/hide-show-actionbar/hide-show-actionbar-ts-page.ts @@ -1,8 +1,5 @@ // >> action-bar-hide-show-ts -import { EventData, Observable } from "tns-core-modules/data/observable"; -import { Button } from "tns-core-modules/ui/button"; -import { Page } from "tns-core-modules/ui/page"; -import { GestureEventData } from "tns-core-modules/ui/gestures"; +import { Button, EventData, GestureEventData, Observable, Page } from "@nativescript/core"; let value: boolean = false; diff --git a/app/ns-ui-widgets-category/action-bar/hiding-action-items/hiding-action-items-page.js b/app/ns-ui-widgets-category/action-bar/hiding-action-items/hiding-action-items-page.js index 2fdae0b..d3ae5d8 100644 --- a/app/ns-ui-widgets-category/action-bar/hiding-action-items/hiding-action-items-page.js +++ b/app/ns-ui-widgets-category/action-bar/hiding-action-items/hiding-action-items-page.js @@ -1,29 +1,26 @@ // >> action-bar-hiding-action-items-js -const fromObject = require("tns-core-modules/data/observable").fromObject; +import { fromObject } from "@nativescript/core"; -function onNavigatingTo(args) { +export function onNavigatingTo(args) { const page = args.object; page.bindingContext = fromObject({ isEditing: false }); } -exports.onNavigatingTo = onNavigatingTo; -function onEdit(args) { + +export function onEdit(args) { const page = args.object.page; page.bindingContext.set("isEditing", true); } -exports.onEdit = onEdit; -function onSave(args) { +export function onSave(args) { const page = args.object.page; page.bindingContext.set("isEditing", false); } -exports.onSave = onSave; -function onCancel(args) { +export function onCancel(args) { const page = args.object.page; page.bindingContext.set("isEditing", false); } -exports.onCancel = onCancel; // << action-bar-hiding-action-items-js diff --git a/app/ns-ui-widgets-category/action-bar/hiding-action-items/hiding-action-items-ts-page.ts b/app/ns-ui-widgets-category/action-bar/hiding-action-items/hiding-action-items-ts-page.ts index e61ee89..898d27b 100644 --- a/app/ns-ui-widgets-category/action-bar/hiding-action-items/hiding-action-items-ts-page.ts +++ b/app/ns-ui-widgets-category/action-bar/hiding-action-items/hiding-action-items-ts-page.ts @@ -1,8 +1,5 @@ // >> action-bar-hiding-action-items-ts -import { EventData, fromObject } from "tns-core-modules/data/observable"; -import { ActionItem } from "tns-core-modules/ui/action-bar"; -import { Page } from "tns-core-modules/ui/page"; -import { GestureEventData } from "tns-core-modules/ui/gestures"; +import { ActionItem, EventData, GestureEventData, Page, fromObject } from "@nativescript/core"; // >> (hide) export function onNavigatingTo(args: EventData) { diff --git a/app/ns-ui-widgets-category/action-bar/items-actionbar/items-actionbar-page.js b/app/ns-ui-widgets-category/action-bar/items-actionbar/items-actionbar-page.js index bdbf7cf..f4d6b6f 100644 --- a/app/ns-ui-widgets-category/action-bar/items-actionbar/items-actionbar-page.js +++ b/app/ns-ui-widgets-category/action-bar/items-actionbar/items-actionbar-page.js @@ -1,11 +1,11 @@ // >> items-actionbar-js -const fromObject = require("tns-core-modules/data/observable").fromObject; +import { fromObject } from "@nativescript/core"; -exports.onShare = function() { +export function onShare() { console.log("share tap"); -}; +} -exports.onDelete = function() { +export function onDelete() { console.log("delete tap"); -}; +} // << items-actionbar-js diff --git a/app/ns-ui-widgets-category/action-bar/items-actionbar/items-actionbar-ts-page.ts b/app/ns-ui-widgets-category/action-bar/items-actionbar/items-actionbar-ts-page.ts index f1b678e..0f54aa5 100644 --- a/app/ns-ui-widgets-category/action-bar/items-actionbar/items-actionbar-ts-page.ts +++ b/app/ns-ui-widgets-category/action-bar/items-actionbar/items-actionbar-ts-page.ts @@ -1,5 +1,5 @@ // >> items-actionbar-ts -import { GestureEventData } from "tns-core-modules/ui/gestures"; +import { GestureEventData } from "@nativescript/core"; export function onShare(args: GestureEventData) { console.log("Share tapped!"); diff --git a/app/ns-ui-widgets-category/action-bar/styling/styling-page.js b/app/ns-ui-widgets-category/action-bar/styling/styling-page.js index 2bb9b54..d910e47 100644 --- a/app/ns-ui-widgets-category/action-bar/styling/styling-page.js +++ b/app/ns-ui-widgets-category/action-bar/styling/styling-page.js @@ -1,6 +1,5 @@ -const frameModule = require("tns-core-modules/ui/frame"); +import { Frame } from "@nativescript/core"; -function goBack() { - frameModule.Frame.topmost().goBack(); +export function goBack() { + Frame.topmost().goBack(); } -exports.goBack = goBack; diff --git a/app/ns-ui-widgets-category/action-bar/usage/usage-page.js b/app/ns-ui-widgets-category/action-bar/usage/usage-page.js index 3351ab6..422777e 100644 --- a/app/ns-ui-widgets-category/action-bar/usage/usage-page.js +++ b/app/ns-ui-widgets-category/action-bar/usage/usage-page.js @@ -1,12 +1,10 @@ // >> action-bar-basic-usage-sdk-js -const frameModule = require("tns-core-modules/ui/frame"); +import { Frame } from "@nativescript/core"; -function goBack() { - frameModule.Frame.topmost().goBack(); +export function goBack() { + Frame.topmost().goBack(); } -function openSettings() { +export function openSettings() { // implement the custom logic } -exports.goBack = goBack; -exports.openSettings = openSettings; // << action-bar-basic-usage-sdk-js diff --git a/app/ns-ui-widgets-category/action-bar/usage/usage-ts-page.ts b/app/ns-ui-widgets-category/action-bar/usage/usage-ts-page.ts index 31c382e..6d8a602 100644 --- a/app/ns-ui-widgets-category/action-bar/usage/usage-ts-page.ts +++ b/app/ns-ui-widgets-category/action-bar/usage/usage-ts-page.ts @@ -1,5 +1,5 @@ // >> action-bar-basic-usage-sdk-ts -import { Frame } from "tns-core-modules/ui/frame"; +import { Frame } from "@nativescript/core"; export function goBack() { Frame.topmost().goBack(); diff --git a/app/ns-ui-widgets-category/activity-indicator/activity-indicator-page.js b/app/ns-ui-widgets-category/activity-indicator/activity-indicator-page.js index 0a9610c..3b51a20 100644 --- a/app/ns-ui-widgets-category/activity-indicator/activity-indicator-page.js +++ b/app/ns-ui-widgets-category/activity-indicator/activity-indicator-page.js @@ -1,34 +1,34 @@ -const ListViewLinksModel = require("../../links-view-model"); -const link = require("../../link"); +import ListViewLinksModel from "../../links-view-model"; +import Link from "../../link"; const navigationLinks = [ - new link( + new Link( "Usage", "ns-ui-widgets-category/activity-indicator/usage/usage-page" ), - new link( + new Link( "Code-Behind", "ns-ui-widgets-category/activity-indicator/code-behind/code-behind-page" ), - new link("Tips & Tricks", "ns-ui-widgets-category/activity-indicator/tips-and-tricks/tips-and-tricks-page"), - new link( + new Link("Tips & Tricks", "ns-ui-widgets-category/activity-indicator/tips-and-tricks/tips-and-tricks-page"), + new Link( "Styling", "ns-ui-widgets-category/activity-indicator/styling/styling-page" ) ]; const navigationLinksTsc = [ - new link( + new Link( "Usage", "ns-ui-widgets-category/activity-indicator/usage/usage-ts-page" ), - new link( + new Link( "Code-Behind", "ns-ui-widgets-category/activity-indicator/code-behind/code-behind-ts-page" ), - new link("Tips & Tricks", "ns-ui-widgets-category/activity-indicator/tips-and-tricks/tips-and-tricks-ts-page") + new Link("Tips & Tricks", "ns-ui-widgets-category/activity-indicator/tips-and-tricks/tips-and-tricks-ts-page") ]; -function onNavigatingTo(args) { +export function onNavigatingTo(args) { const page = args.object; page.bindingContext = new ListViewLinksModel({ links: navigationLinks, @@ -37,4 +37,4 @@ function onNavigatingTo(args) { tsclinks: navigationLinksTsc }); } -exports.onNavigatingTo = onNavigatingTo; + diff --git a/app/ns-ui-widgets-category/activity-indicator/code-behind/code-behind-page.js b/app/ns-ui-widgets-category/activity-indicator/code-behind/code-behind-page.js index ff17004..accb1e1 100644 --- a/app/ns-ui-widgets-category/activity-indicator/code-behind/code-behind-page.js +++ b/app/ns-ui-widgets-category/activity-indicator/code-behind/code-behind-page.js @@ -1,8 +1,8 @@ // >> activity-indicator-require -const ActivityIndicator = require("tns-core-modules/ui/activity-indicator").ActivityIndicator; +import { ActivityIndicator } from "@nativescript/core"; // << activity-indicator-require -function onNavigatingTo(args) { +export function onNavigatingTo(args) { const page = args.object; const myStack = page.getViewById("myStack"); @@ -20,4 +20,4 @@ function onNavigatingTo(args) { myStack.addChild(indicator); // << activity-indicator-code-behind } -exports.onNavigatingTo = onNavigatingTo; + diff --git a/app/ns-ui-widgets-category/activity-indicator/code-behind/code-behind-ts-page.ts b/app/ns-ui-widgets-category/activity-indicator/code-behind/code-behind-ts-page.ts index 33a11d3..f2248cf 100644 --- a/app/ns-ui-widgets-category/activity-indicator/code-behind/code-behind-ts-page.ts +++ b/app/ns-ui-widgets-category/activity-indicator/code-behind/code-behind-ts-page.ts @@ -1,9 +1,7 @@ // >> activity-indicator-require-ts -import { ActivityIndicator } from "tns-core-modules/ui/activity-indicator"; +import { ActivityIndicator } from "@nativescript/core"; // << activity-indicator-require-ts -import { EventData } from "tns-core-modules/data/observable"; -import { StackLayout } from "tns-core-modules/ui/layouts/stack-layout"; -import { Page } from "tns-core-modules/ui/page"; +import { EventData, Page, StackLayout } from "@nativescript/core"; export function onNavigatingTo(args: EventData) { const page = args.object; diff --git a/app/ns-ui-widgets-category/activity-indicator/tips-and-tricks/tips-and-tricks-page.js b/app/ns-ui-widgets-category/activity-indicator/tips-and-tricks/tips-and-tricks-page.js index b7cba2b..165081e 100644 --- a/app/ns-ui-widgets-category/activity-indicator/tips-and-tricks/tips-and-tricks-page.js +++ b/app/ns-ui-widgets-category/activity-indicator/tips-and-tricks/tips-and-tricks-page.js @@ -1,7 +1,7 @@ // >> large-ios-indicator -const isIOS = require("tns-core-modules/platform").isIOS; +import { isIOS } from "@nativescript/core"; -function onLoaded(args) { +export function onLoaded(args) { const view = args.object; if (isIOS) { @@ -10,5 +10,4 @@ function onLoaded(args) { } } -exports.onLoaded = onLoaded; // << large-ios-indicator diff --git a/app/ns-ui-widgets-category/activity-indicator/tips-and-tricks/tips-and-tricks-ts-page.ts b/app/ns-ui-widgets-category/activity-indicator/tips-and-tricks/tips-and-tricks-ts-page.ts index 41a66f8..b630638 100644 --- a/app/ns-ui-widgets-category/activity-indicator/tips-and-tricks/tips-and-tricks-ts-page.ts +++ b/app/ns-ui-widgets-category/activity-indicator/tips-and-tricks/tips-and-tricks-ts-page.ts @@ -1,6 +1,5 @@ // >> large-ios-indicator-ts -import { isIOS } from "tns-core-modules/platform"; -import {ActivityIndicator} from "tns-core-modules/ui/activity-indicator"; +import { ActivityIndicator, isIOS } from "@nativescript/core"; export function onLoaded(args) { const view = args.object as ActivityIndicator; diff --git a/app/ns-ui-widgets-category/activity-indicator/usage/usage-page.js b/app/ns-ui-widgets-category/activity-indicator/usage/usage-page.js index 5375dae..15240d5 100644 --- a/app/ns-ui-widgets-category/activity-indicator/usage/usage-page.js +++ b/app/ns-ui-widgets-category/activity-indicator/usage/usage-page.js @@ -1,22 +1,19 @@ // >> activity-indicator-setting-busy-code -const Observable = require("tns-core-modules/data/observable").Observable; +import { Observable } from "@nativescript/core"; -function onNavigatingTo(args) { +export function onNavigatingTo(args) { const page = args.object; const vm = new Observable(); vm.set("isBusy", true); page.bindingContext = vm; } -exports.onNavigatingTo = onNavigatingTo; - -function indicatorLoaded(args) { +export function indicatorLoaded(args) { const activityIndicator = args.object; activityIndicator.on("busyChange", (aiargs) => { const indicator = aiargs.object; console.log(`indicator.busy changed to: ${indicator.busy}`); }); } -exports.indicatorLoaded = indicatorLoaded; // << activity-indicator-setting-busy-code diff --git a/app/ns-ui-widgets-category/activity-indicator/usage/usage-ts-page.ts b/app/ns-ui-widgets-category/activity-indicator/usage/usage-ts-page.ts index c89060b..e12c5b7 100644 --- a/app/ns-ui-widgets-category/activity-indicator/usage/usage-ts-page.ts +++ b/app/ns-ui-widgets-category/activity-indicator/usage/usage-ts-page.ts @@ -1,7 +1,5 @@ // >> activity-indicator-setting-busy-code-ts -import { EventData, Observable } from "tns-core-modules/data/observable"; -import { Page } from "tns-core-modules/ui/page"; -import { ActivityIndicator } from "tns-core-modules/ui/activity-indicator"; +import { ActivityIndicator, EventData, Observable, Page } from "@nativescript/core"; export function onNavigatingTo(args: EventData) { const view = args.object as Page; diff --git a/app/ns-ui-widgets-category/animations/animating-properties/animating-properties-page.js b/app/ns-ui-widgets-category/animations/animating-properties/animating-properties-page.js index 0afd3f3..474e2dc 100644 --- a/app/ns-ui-widgets-category/animations/animating-properties/animating-properties-page.js +++ b/app/ns-ui-widgets-category/animations/animating-properties/animating-properties-page.js @@ -1,19 +1,17 @@ // >> animation-curve-imports // AnimationCurveEnum: ease, easeIn, easeInOut, easeOut, linear, spring -const AnimationCurve = require("tns-core-modules/ui/enums").AnimationCurve; +import { AnimationCurve } from "@nativescript/core/ui/enums"; +import { Animation, Color } from "@nativescript/core"; // << animation-curve-imports -const Animation = require("tns-core-modules/ui/animation").Animation; -const Color = require("tns-core-modules/color").Color; let animation; let myView; -function onLoaded(args) { +export function onLoaded(args) { const page = args.object; myView = page.getViewById("lbl"); } -exports.onLoaded = onLoaded; -function animate(args) { +export function animate(args) { // >> animation-properties myView.animate({ backgroundColor: new Color("#414b7d"), @@ -38,9 +36,8 @@ function animate(args) { }); // << animation-properties } -exports.animate = animate; -function animateTarget(args) { +export function animateTarget(args) { // >> animation-target const myView = args.object; @@ -68,7 +65,6 @@ function animateTarget(args) { }); // << animation-target } -exports.animateTarget = animateTarget; function cancelAnimation() { // >> animation-cancel diff --git a/app/ns-ui-widgets-category/animations/animating-properties/animating-properties-ts-page.ts b/app/ns-ui-widgets-category/animations/animating-properties/animating-properties-ts-page.ts index fc0946e..20f837a 100644 --- a/app/ns-ui-widgets-category/animations/animating-properties/animating-properties-ts-page.ts +++ b/app/ns-ui-widgets-category/animations/animating-properties/animating-properties-ts-page.ts @@ -1,10 +1,8 @@ // >> animation-curve-imports-ts // AnimationCurve enumeration: ease, easeIn, easeInOut, easeOut, linear, spring -import { AnimationCurve } from "tns-core-modules/ui/enums"; -import { Animation, AnimationDefinition } from "tns-core-modules/ui/animation"; -import { Color } from "tns-core-modules/color"; +import { Animation, AnimationDefinition, Color, Enums } from "@nativescript/core"; // << animation-curve-imports-ts -import { View } from "tns-core-modules/ui/core/view"; +import { View } from "@nativescript/core"; let animation: Animation; export function animate(args) { @@ -15,7 +13,7 @@ export function animate(args) { // >> animation-properties-ts view.animate({ backgroundColor: new Color("#414b7d"), - curve: AnimationCurve.easeOut, + curve: Enums.AnimationCurve.easeOut, delay: 300, duration: 3000, iterations: 3, @@ -43,7 +41,7 @@ export function animateTarget(args) { const animationDefinition: AnimationDefinition = { target: view, // provide the view to animate - curve: AnimationCurve.easeOut, + curve: Enums.AnimationCurve.easeOut, duration: 1000, scale: { x: 0.2, @@ -89,7 +87,7 @@ export function demonstrateSimpleAnimations(args) { y: 100 }, duration: 1000, - curve: AnimationCurve.easeIn + curve: Enums.AnimationCurve.easeIn }); // << using-animation-curve-enum-ts @@ -100,7 +98,7 @@ export function demonstrateSimpleAnimations(args) { y: 100 }, duration: 1000, - curve: AnimationCurve.cubicBezier(0.1, 0.1, 0.1, 1) + curve: Enums.AnimationCurve.cubicBezier(0.1, 0.1, 0.1, 1) }); // << creating-cubic-bezier-ts } diff --git a/app/ns-ui-widgets-category/animations/animations-page.js b/app/ns-ui-widgets-category/animations/animations-page.js index 08d3d24..2dcc63a 100644 --- a/app/ns-ui-widgets-category/animations/animations-page.js +++ b/app/ns-ui-widgets-category/animations/animations-page.js @@ -1,30 +1,30 @@ -const ListViewLinksModel = require("../../links-view-model"); -const link = require("../../link"); +import ListViewLinksModel from "../../links-view-model"; +import Link from "../../link"; const navigationLinks = [ - new link("Animated Properties", "ns-ui-widgets-category/animations/animating-properties/animating-properties-page"), - new link("Chained Animations", "ns-ui-widgets-category/animations/chaining-animations/chaining-animations-page"), - new link("Animating Multiple Views", "ns-ui-widgets-category/animations/multiple-views-animation/multiple-views-page"), - new link("Properties originX and originY", "ns-ui-widgets-category/animations/origin-properties/property-origin-page"), - new link("Properties width and height", "ns-ui-widgets-category/animations/width-height-properties/width-height-properties-page") + new Link("Animated Properties", "ns-ui-widgets-category/animations/animating-properties/animating-properties-page"), + new Link("Chained Animations", "ns-ui-widgets-category/animations/chaining-animations/chaining-animations-page"), + new Link("Animating Multiple Views", "ns-ui-widgets-category/animations/multiple-views-animation/multiple-views-page"), + new Link("Properties originX and originY", "ns-ui-widgets-category/animations/origin-properties/property-origin-page"), + new Link("Properties width and height", "ns-ui-widgets-category/animations/width-height-properties/width-height-properties-page") ]; const navigationLinksTsc = [ - new link("Animated Properties", "ns-ui-widgets-category/animations/animating-properties/animating-properties-ts-page"), - new link("Chained Animations", "ns-ui-widgets-category/animations/chaining-animations/chaining-animations-ts-page"), - new link("Animating Multiple Views", "ns-ui-widgets-category/animations/multiple-views-animation/multiple-views-ts-page"), - new link("Properties originX and originY", "ns-ui-widgets-category/animations/origin-properties/property-origin-ts-page"), - new link("Properties width and height", "ns-ui-widgets-category/animations/width-height-properties/width-height-properties-ts-page") + new Link("Animated Properties", "ns-ui-widgets-category/animations/animating-properties/animating-properties-ts-page"), + new Link("Chained Animations", "ns-ui-widgets-category/animations/chaining-animations/chaining-animations-ts-page"), + new Link("Animating Multiple Views", "ns-ui-widgets-category/animations/multiple-views-animation/multiple-views-ts-page"), + new Link("Properties originX and originY", "ns-ui-widgets-category/animations/origin-properties/property-origin-ts-page"), + new Link("Properties width and height", "ns-ui-widgets-category/animations/width-height-properties/width-height-properties-ts-page") ]; // >> animations-imports // Full list of animating properties at https://docs.nativescript.org/api-reference/interfaces/_ui_animation_.animationdefinition -const AnimationDefinition = require("tns-core-modules/ui/animation").AnimationDefinition; +import { AnimationDefinition } from "@nativescript/core"; // Defines a pair of values (horizontal and vertical) for translate and scale animations. -const Pair = require("tns-core-modules/ui/animation").Pair; +import Pair from "@nativescript/core/ui/animation"; // << animations-imports -function onNavigatingTo(args) { +export function onNavigatingTo(args) { const page = args.object; page.bindingContext = new ListViewLinksModel({ links: navigationLinks, @@ -33,4 +33,4 @@ function onNavigatingTo(args) { tsclinks: navigationLinksTsc }); } -exports.onNavigatingTo = onNavigatingTo; + diff --git a/app/ns-ui-widgets-category/animations/chaining-animations/chaining-animations-page.js b/app/ns-ui-widgets-category/animations/chaining-animations/chaining-animations-page.js index f2295d5..c2a2aba 100644 --- a/app/ns-ui-widgets-category/animations/chaining-animations/chaining-animations-page.js +++ b/app/ns-ui-widgets-category/animations/chaining-animations/chaining-animations-page.js @@ -1,6 +1,6 @@ let myView; -function onLoaded(args) { +export function onLoaded(args) { const page = args.object; myView = page.getViewById("lbl"); // >> chaining-animations @@ -50,4 +50,3 @@ function onLoaded(args) { }); // << chaining-animations } -exports.onLoaded = onLoaded; diff --git a/app/ns-ui-widgets-category/animations/chaining-animations/chaining-animations-ts-page.ts b/app/ns-ui-widgets-category/animations/chaining-animations/chaining-animations-ts-page.ts index 1bb44fa..c053899 100644 --- a/app/ns-ui-widgets-category/animations/chaining-animations/chaining-animations-ts-page.ts +++ b/app/ns-ui-widgets-category/animations/chaining-animations/chaining-animations-ts-page.ts @@ -1,6 +1,4 @@ -import { EventData } from "tns-core-modules/data/observable"; -import { Page } from "tns-core-modules/ui/page"; -import { Label } from "tns-core-modules/ui/label"; +import { EventData, Label, Page } from "@nativescript/core"; export function onLoaded(args: EventData) { const page = args.object; diff --git a/app/ns-ui-widgets-category/animations/multiple-views-animation/multiple-views-page.js b/app/ns-ui-widgets-category/animations/multiple-views-animation/multiple-views-page.js index e268ebb..7c91647 100644 --- a/app/ns-ui-widgets-category/animations/multiple-views-animation/multiple-views-page.js +++ b/app/ns-ui-widgets-category/animations/multiple-views-animation/multiple-views-page.js @@ -1,13 +1,13 @@ // >> animation-import // Main Animation class -const Animation = require("tns-core-modules/ui/animation").Animation; +import { Animation } from "@nativescript/core"; // << animation-import let view1; let view2; let view3; let view4; -function onLoaded(args) { +export function onLoaded(args) { const page = args.object; view1 = page.getViewById("view1"); @@ -15,9 +15,8 @@ function onLoaded(args) { view3 = page.getViewById("view3"); view4 = page.getViewById("view4"); } -exports.onLoaded = onLoaded; -function animate() { +export function animate() { // >> animate-multiple-views const definitions = []; @@ -72,9 +71,8 @@ function animate() { // << animate-multiple-views } -exports.animate = animate; -function reset() { +export function reset() { view1.translateX = 0; view1.translateY = 0; view2.translateX = 0; @@ -84,4 +82,3 @@ function reset() { view4.translateX = 0; view4.translateY = 0; } -exports.reset = reset; diff --git a/app/ns-ui-widgets-category/animations/multiple-views-animation/multiple-views-ts-page.ts b/app/ns-ui-widgets-category/animations/multiple-views-animation/multiple-views-ts-page.ts index 7509af8..e020a8e 100644 --- a/app/ns-ui-widgets-category/animations/multiple-views-animation/multiple-views-ts-page.ts +++ b/app/ns-ui-widgets-category/animations/multiple-views-animation/multiple-views-ts-page.ts @@ -1,11 +1,7 @@ // >> animation-import-ts // Main Animation class // ALL animating properties at https://docs.nativescript.org/api-reference/interfaces/_ui_animation_.animationdefinition -import { - Animation, - AnimationDefinition, - Pair // Pair: Defines a pair of values (horizontal and vertical) for translate and scale animations. -} from "tns-core-modules/ui/animation"; +import { Animation, AnimationDefinition } from "@nativescript/core"; // << animation-import-ts let view1, view2, view3, view4; diff --git a/app/ns-ui-widgets-category/animations/origin-properties/property-origin-page.js b/app/ns-ui-widgets-category/animations/origin-properties/property-origin-page.js index f919b01..a2e9281 100644 --- a/app/ns-ui-widgets-category/animations/origin-properties/property-origin-page.js +++ b/app/ns-ui-widgets-category/animations/origin-properties/property-origin-page.js @@ -1,7 +1,11 @@ -const AnimationCurveEnum = require("tns-core-modules/ui/enums").AnimationCurve; -let myView; +import { AnimationCurve } from "@nativescript/core/ui/enums"; +let myFirstView; +let mySecondView; +let myThirdView; +let myForthView; +let myFifthView; -function onLoaded(args) { +export function onLoaded(args) { const page = args.object; myFirstView = page.getViewById("myFirstView"); mySecondView = page.getViewById("mySecondView"); @@ -9,9 +13,8 @@ function onLoaded(args) { myForthView = page.getViewById("myForthView"); myFifthView = page.getViewById("myFifthView"); } -exports.onLoaded = onLoaded; // >> rotating-example -function animate() { +export function animate() { // myFirstView.originX = 0.5; // Default value (center of the view's horizontal axis) // myFirstView.originY = 0.5; // Default value (middle of the view's vertical axis) myFirstView.animate({ @@ -63,5 +66,4 @@ function animate() { console.log(e.message); }); } -exports.animate = animate; // << rotating-example diff --git a/app/ns-ui-widgets-category/animations/origin-properties/property-origin-ts-page.ts b/app/ns-ui-widgets-category/animations/origin-properties/property-origin-ts-page.ts index e177944..6852afd 100644 --- a/app/ns-ui-widgets-category/animations/origin-properties/property-origin-ts-page.ts +++ b/app/ns-ui-widgets-category/animations/origin-properties/property-origin-ts-page.ts @@ -1,6 +1,9 @@ -import { EventData } from "tns-core-modules/data/observable"; -import { Page } from "tns-core-modules/ui/page"; -let myFirstView, mySecondView, myThirdView, myForthView, myFifthView; +import { EventData, Page } from "@nativescript/core"; +let myFirstView; +let mySecondView; +let myThirdView; +let myForthView; +let myFifthView; export function onLoaded(args: EventData) { const page = args.object; diff --git a/app/ns-ui-widgets-category/animations/width-height-properties/width-height-properties-page.js b/app/ns-ui-widgets-category/animations/width-height-properties/width-height-properties-page.js index f15bf8e..6c02887 100644 --- a/app/ns-ui-widgets-category/animations/width-height-properties/width-height-properties-page.js +++ b/app/ns-ui-widgets-category/animations/width-height-properties/width-height-properties-page.js @@ -1,7 +1,7 @@ // >> animation-properties-width-height -const AnimationCurve = require("tns-core-modules/ui/enums").AnimationCurve; +import { AnimationCurve } from "@nativescript/core/ui/enums"; -function animateWidth(args) { +export function animateWidth(args) { const button = args.object; const page = button.page; const myView = page.getViewById("lbl"); @@ -12,9 +12,8 @@ function animateWidth(args) { curve: AnimationCurve.easeIn }); } -exports.animateWidth = animateWidth; -function animateHeight(args) { +export function animateHeight(args) { const button = args.object; const page = button.page; const myView = page.getViewById("lbl"); @@ -25,5 +24,4 @@ function animateHeight(args) { curve: AnimationCurve.easeIn }); } -exports.animateHeight = animateHeight; // << animation-properties-width-height diff --git a/app/ns-ui-widgets-category/animations/width-height-properties/width-height-properties-page.xml b/app/ns-ui-widgets-category/animations/width-height-properties/width-height-properties-page.xml index d2d6102..c31498d 100644 --- a/app/ns-ui-widgets-category/animations/width-height-properties/width-height-properties-page.xml +++ b/app/ns-ui-widgets-category/animations/width-height-properties/width-height-properties-page.xml @@ -1,6 +1,6 @@ - + diff --git a/app/ns-ui-widgets-category/animations/width-height-properties/width-height-properties-ts-page.ts b/app/ns-ui-widgets-category/animations/width-height-properties/width-height-properties-ts-page.ts index 8cc1e74..671391d 100644 --- a/app/ns-ui-widgets-category/animations/width-height-properties/width-height-properties-ts-page.ts +++ b/app/ns-ui-widgets-category/animations/width-height-properties/width-height-properties-ts-page.ts @@ -1,6 +1,5 @@ // >> animation-properties-width-height-ts -import { AnimationCurve } from "tns-core-modules/ui/enums"; -import { View } from "tns-core-modules/ui/core/view"; +import { Enums, View } from "@nativescript/core"; export function animateWidth(args) { let button = args.object; @@ -10,7 +9,7 @@ export function animateWidth(args) { view.animate({ width: 320, duration: 1000, - curve: AnimationCurve.easeIn + curve: Enums.AnimationCurve.easeIn }); } @@ -22,7 +21,7 @@ export function animateHeight(args) { view.animate({ height: 400, duration: 1000, - curve: AnimationCurve.easeIn + curve: Enums.AnimationCurve.easeIn }); } // << animation-properties-width-height-ts diff --git a/app/ns-ui-widgets-category/animations/width-height-properties/width-height-properties-ts-page.xml b/app/ns-ui-widgets-category/animations/width-height-properties/width-height-properties-ts-page.xml index e4802fa..9ff50f4 100644 --- a/app/ns-ui-widgets-category/animations/width-height-properties/width-height-properties-ts-page.xml +++ b/app/ns-ui-widgets-category/animations/width-height-properties/width-height-properties-ts-page.xml @@ -1,10 +1,10 @@ - +