mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-08-15 11:01:21 +08:00
feat: Scoped Packages (#7911)
* chore: move tns-core-modules to nativescript-core * chore: preparing compat generate script * chore: add missing definitions * chore: no need for http-request to be private * chore: packages chore * test: generate tests for tns-core-modules * chore: add anroid module for consistency * chore: add .npmignore * chore: added privateModulesWhitelist * chore(webpack): added bundle-entry-points * chore: scripts * chore: tests changed to use @ns/core * test: add scoped-packages test project * test: fix types * test: update test project * chore: build scripts * chore: update build script * chore: npm scripts cleanup * chore: make the compat pgk work with old wp config * test: generate diff friendly tests * chore: create barrel exports * chore: move files after rebase * chore: typedoc config * chore: compat mode * chore: review of barrels * chore: remove tns-core-modules import after rebase * chore: dev workflow setup * chore: update developer-workflow * docs: experiment with API extractor * chore: api-extractor and barrel exports * chore: api-extractor configs * chore: generate d.ts rollup with api-extractor * refactor: move methods inside Frame * chore: fic tests to use Frame static methods * refactor: create Builder class * refactor: use Builder class in tests * refactor: include Style in ui barrel * chore: separate compat build script * chore: fix tslint errors * chore: update NATIVESCRIPT_CORE_ARGS * chore: fix compat pack * chore: fix ui-test-app build with linked modules * chore: Application, ApplicationSettings, Connectivity and Http * chore: export Trace, Profiling and Utils * refactor: Static create methods for ImageSource * chore: fix deprecated usages of ImageSource * chore: move Span and FormattedString to ui * chore: add events-args and ImageSource to index files * chore: check for CLI >= 6.2 when building for IOS * chore: update travis build * chore: copy Pod file to compat package * chore: update error msg ui-tests-app * refactor: Apply suggestions from code review Co-Authored-By: Martin Yankov <m.i.yankov@gmail.com> * chore: typings and refs * chore: add missing d.ts files for public API * chore: adress code review FB * chore: update api-report * chore: dev-workflow for other apps * chore: api update * chore: update api-report
This commit is contained in:

committed by
GitHub

parent
6c7139477e
commit
cc97a16800
195
nativescript-core/ui/dialogs/dialogs-common.ts
Normal file
195
nativescript-core/ui/dialogs/dialogs-common.ts
Normal file
@ -0,0 +1,195 @@
|
||||
// Types.
|
||||
import { View } from "../core/view";
|
||||
import { Color } from "../../color";
|
||||
import { Page } from "../page";
|
||||
import { isIOS } from "../../platform";
|
||||
import { Frame as FrameDef } from "../frame";
|
||||
import { LoginOptions } from "./dialogs";
|
||||
import { isObject, isString } from "../../utils/types";
|
||||
|
||||
export const STRING = "string";
|
||||
export const PROMPT = "Prompt";
|
||||
export const CONFIRM = "Confirm";
|
||||
export const ALERT = "Alert";
|
||||
export const LOGIN = "Login";
|
||||
export const OK = "OK";
|
||||
export const CANCEL = "Cancel";
|
||||
|
||||
/**
|
||||
* Defines the input type for prompt dialog.
|
||||
*/
|
||||
export module inputType {
|
||||
/**
|
||||
* Plain text input type.
|
||||
*/
|
||||
export const text: string = "text";
|
||||
|
||||
/**
|
||||
* Password input type.
|
||||
*/
|
||||
export const password: string = "password";
|
||||
|
||||
/**
|
||||
* Email input type.
|
||||
*/
|
||||
export const email: string = "email";
|
||||
|
||||
/**
|
||||
* Number input type
|
||||
*/
|
||||
export const number: string = "number";
|
||||
|
||||
/**
|
||||
* Decimal input type
|
||||
*/
|
||||
export const decimal: string = "decimal";
|
||||
|
||||
/**
|
||||
* Phone input type
|
||||
*/
|
||||
export const phone: string = "phone";
|
||||
}
|
||||
|
||||
/**
|
||||
* Defines the capitalization type for prompt dialog.
|
||||
*/
|
||||
export module capitalizationType {
|
||||
/**
|
||||
* No automatic capitalization.
|
||||
*/
|
||||
export const none: string = "none";
|
||||
|
||||
/**
|
||||
* Capitalizes every character.
|
||||
*/
|
||||
export const all: string = "all";
|
||||
|
||||
/**
|
||||
* Capitalize the first word of each sentence.
|
||||
*/
|
||||
export const sentences: string = "sentences";
|
||||
|
||||
/**
|
||||
* Capitalize the first letter of every word.
|
||||
*/
|
||||
export const words: string = "words";
|
||||
}
|
||||
|
||||
let Frame: typeof FrameDef;
|
||||
export function getCurrentPage(): Page {
|
||||
if (!Frame) {
|
||||
Frame = require("../frame").Frame;
|
||||
}
|
||||
|
||||
let topmostFrame = Frame.topmost();
|
||||
if (topmostFrame) {
|
||||
return topmostFrame.currentPage;
|
||||
}
|
||||
|
||||
return undefined;
|
||||
}
|
||||
|
||||
function applySelectors<T extends View>(view: T, callback: (view: T) => void) {
|
||||
let currentPage = getCurrentPage();
|
||||
if (currentPage) {
|
||||
let styleScope = currentPage._styleScope;
|
||||
if (styleScope) {
|
||||
view._inheritStyleScope(styleScope);
|
||||
view.onLoaded();
|
||||
callback(view);
|
||||
view.onUnloaded();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let button: View;
|
||||
let label: View;
|
||||
let textField: View;
|
||||
|
||||
export function getButtonColors(): { color: Color, backgroundColor: Color } {
|
||||
if (!button) {
|
||||
const Button = require("../button").Button;
|
||||
button = new Button;
|
||||
if (isIOS) {
|
||||
button._setupUI({});
|
||||
}
|
||||
}
|
||||
|
||||
let buttonColor: Color;
|
||||
let buttonBackgroundColor: Color;
|
||||
applySelectors(button, (btn) => {
|
||||
buttonColor = btn.color;
|
||||
buttonBackgroundColor = <Color>btn.backgroundColor;
|
||||
});
|
||||
|
||||
return { color: buttonColor, backgroundColor: buttonBackgroundColor };
|
||||
}
|
||||
|
||||
export function getLabelColor(): Color {
|
||||
if (!label) {
|
||||
const Label = require("../label").Label;
|
||||
label = new Label;
|
||||
if (isIOS) {
|
||||
label._setupUI({});
|
||||
}
|
||||
}
|
||||
|
||||
let labelColor: Color;
|
||||
applySelectors(label, (lbl) => {
|
||||
labelColor = lbl.color;
|
||||
});
|
||||
|
||||
return labelColor;
|
||||
}
|
||||
|
||||
export function getTextFieldColor(): Color {
|
||||
if (!textField) {
|
||||
const TextField = require("../text-field").TextField;
|
||||
textField = new TextField();
|
||||
if (isIOS) {
|
||||
textField._setupUI({});
|
||||
}
|
||||
}
|
||||
|
||||
let textFieldColor: Color;
|
||||
applySelectors(textField, (tf) => {
|
||||
textFieldColor = tf.color;
|
||||
});
|
||||
|
||||
return textFieldColor;
|
||||
}
|
||||
|
||||
export function isDialogOptions(arg): boolean {
|
||||
return arg && (arg.message || arg.title);
|
||||
}
|
||||
|
||||
export function parseLoginOptions(args: any[]): LoginOptions {
|
||||
// Handle options object first
|
||||
if (args.length === 1 && isObject(args[0])) {
|
||||
return args[0];
|
||||
}
|
||||
|
||||
let options: LoginOptions = { title: LOGIN, okButtonText: OK, cancelButtonText: CANCEL };
|
||||
|
||||
if (isString(args[0])) {
|
||||
options.message = args[0];
|
||||
}
|
||||
|
||||
if (isString(args[1])) {
|
||||
options.userNameHint = args[1];
|
||||
}
|
||||
|
||||
if (isString(args[2])) {
|
||||
options.passwordHint = args[2];
|
||||
}
|
||||
|
||||
if (isString(args[3])) {
|
||||
options.userName = args[3];
|
||||
}
|
||||
|
||||
if (isString(args[4])) {
|
||||
options.password = args[4];
|
||||
}
|
||||
|
||||
return options;
|
||||
}
|
Reference in New Issue
Block a user