mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-08-16 03:31:45 +08:00

* 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
232 lines
7.1 KiB
TypeScript
232 lines
7.1 KiB
TypeScript
/**
|
|
* @module "ui/styling/style"
|
|
*/ /** */
|
|
|
|
import { Length, PercentLength, ViewBase, Observable, BackgroundRepeat, Visibility, HorizontalAlignment, VerticalAlignment, dip } from "../../core/view";
|
|
import { Color } from "../../../color";
|
|
import { Background } from "../background";
|
|
import { Font, FontStyle, FontWeight } from "../font";
|
|
import { TextAlignment, TextDecoration, TextTransform, WhiteSpace } from "../../text-base";
|
|
import {
|
|
FlexDirection, FlexWrap, JustifyContent, AlignItems, AlignContent,
|
|
Order, FlexGrow, FlexShrink, FlexWrapBefore, AlignSelf
|
|
} from "../../layouts/flexbox-layout";
|
|
import { LinearGradient } from "../gradient";
|
|
|
|
export interface Thickness {
|
|
left: number;
|
|
top: number;
|
|
right: number;
|
|
bottom: number;
|
|
}
|
|
|
|
export interface BorderColor {
|
|
top: Color;
|
|
right: Color;
|
|
bottom: Color;
|
|
left: Color;
|
|
}
|
|
|
|
export interface CommonLayoutParams {
|
|
width: number;
|
|
height: number;
|
|
|
|
widthPercent: number;
|
|
heightPercent: number;
|
|
|
|
leftMargin: number;
|
|
topMargin: number;
|
|
rightMargin: number;
|
|
bottomMargin: number;
|
|
|
|
leftMarginPercent: number;
|
|
topMarginPercent: number;
|
|
rightMarginPercent: number;
|
|
bottomMarginPercent: number;
|
|
|
|
horizontalAlignment: HorizontalAlignment;
|
|
verticalAlignment: VerticalAlignment;
|
|
}
|
|
|
|
export class Style extends Observable {
|
|
public fontInternal: Font;
|
|
public backgroundInternal: Background;
|
|
|
|
public rotate: number;
|
|
public scaleX: number;
|
|
public scaleY: number;
|
|
public translateX: dip;
|
|
public translateY: dip;
|
|
|
|
public clipPath: string;
|
|
public color: Color;
|
|
public tintColor: Color;
|
|
public placeholderColor: Color;
|
|
|
|
public background: string;
|
|
public backgroundColor: Color;
|
|
public backgroundImage: string | LinearGradient;
|
|
public backgroundRepeat: BackgroundRepeat;
|
|
public backgroundSize: string;
|
|
public backgroundPosition: string;
|
|
|
|
public borderColor: string | Color;
|
|
public borderTopColor: Color;
|
|
public borderRightColor: Color;
|
|
public borderBottomColor: Color;
|
|
public borderLeftColor: Color;
|
|
public borderWidth: string | Length;
|
|
public borderTopWidth: Length;
|
|
public borderRightWidth: Length;
|
|
public borderBottomWidth: Length;
|
|
public borderLeftWidth: Length;
|
|
public borderRadius: string | Length;
|
|
public borderTopLeftRadius: Length;
|
|
public borderTopRightRadius: Length;
|
|
public borderBottomRightRadius: Length;
|
|
public borderBottomLeftRadius: Length;
|
|
|
|
public fontSize: number;
|
|
public fontFamily: string;
|
|
public fontStyle: FontStyle;
|
|
public fontWeight: FontWeight;
|
|
public font: string;
|
|
|
|
public androidElevation: number;
|
|
public androidDynamicElevationOffset: number;
|
|
public zIndex: number;
|
|
public opacity: number;
|
|
public visibility: Visibility;
|
|
|
|
public letterSpacing: number;
|
|
public lineHeight: number;
|
|
public textAlignment: TextAlignment;
|
|
public textDecoration: TextDecoration;
|
|
public textTransform: TextTransform;
|
|
public whiteSpace: WhiteSpace;
|
|
|
|
public minWidth: Length;
|
|
public minHeight: Length;
|
|
public width: PercentLength;
|
|
public height: PercentLength;
|
|
public margin: string | PercentLength;
|
|
public marginLeft: PercentLength;
|
|
public marginTop: PercentLength;
|
|
public marginRight: PercentLength;
|
|
public marginBottom: PercentLength;
|
|
public padding: string | Length;
|
|
public paddingLeft: Length;
|
|
public paddingTop: Length;
|
|
public paddingRight: Length;
|
|
public paddingBottom: Length;
|
|
public horizontalAlignment: HorizontalAlignment;
|
|
public verticalAlignment: VerticalAlignment;
|
|
|
|
// TabView-specific props
|
|
public tabTextFontSize: number;
|
|
public tabTextColor: Color;
|
|
public tabBackgroundColor: Color;
|
|
public selectedTabTextColor: Color;
|
|
public androidSelectedTabHighlightColor: Color;
|
|
|
|
// ListView-specific props
|
|
public separatorColor: Color;
|
|
|
|
// SegmentedBar-specific props
|
|
public selectedBackgroundColor: Color;
|
|
|
|
// Page-specific props
|
|
public statusBarStyle: "light" | "dark";
|
|
public androidStatusBarBackground: Color;
|
|
|
|
// Android ActionBar specific props
|
|
|
|
/**
|
|
* Gets or sets the content inset for the android actionbar.
|
|
* The content inset affects the valid area for ActionBar content; insets can be used to effectively align ActionBar content along well-known gridlines.
|
|
*
|
|
* This property is effective on Android API level 21 or later.
|
|
*/
|
|
public androidContentInset: string | Length;
|
|
|
|
/**
|
|
* Gets or sets the left content inset for the android actionbar.
|
|
* The content inset affects the valid area for ActionBar content; insets can be used to effectively align ActionBar content along well-known gridlines.
|
|
*
|
|
* This property is effective on Android API level 21 or later.
|
|
*/
|
|
public androidContentInsetLeft: Length;
|
|
|
|
/**
|
|
* Gets or sets the right content inset for the android actionbar.
|
|
* The content inset affects the valid area for ActionBar content; insets can be used to effectively align ActionBar content along well-known gridlines.
|
|
*
|
|
* This property is effective on Android API level 21 or later.
|
|
*/
|
|
public androidContentInsetRight: Length;
|
|
|
|
constructor(ownerView: ViewBase | WeakRef<ViewBase>);
|
|
public viewRef: WeakRef<ViewBase>;
|
|
|
|
/**
|
|
* @deprecated use `viewRef` instead.
|
|
*
|
|
* The `ViewBase` object associated with the Style!
|
|
*/
|
|
public view: ViewBase;
|
|
|
|
//flexbox layout properties
|
|
public flexDirection: FlexDirection;
|
|
public flexWrap: FlexWrap;
|
|
public justifyContent: JustifyContent;
|
|
public alignItems: AlignItems;
|
|
public alignContent: AlignContent;
|
|
public order: Order;
|
|
public flexGrow: FlexGrow;
|
|
public flexShrink: FlexShrink;
|
|
public flexWrapBefore: FlexWrapBefore;
|
|
public alignSelf: AlignSelf;
|
|
|
|
/**
|
|
* The property bag is a simple class that is paired with the Style class.
|
|
* Setting regular css properties on the PropertyBag should simply preserve their values.
|
|
* Setting shorthand css properties on the PropertyBag should decompose the provided value, and set each of the shorthand composite properties.
|
|
* The shorthand properties are defined as non-enumerable so it should be safe to for-in the keys that are set in the bag.
|
|
*/
|
|
public readonly PropertyBag: PropertyBagClass;
|
|
|
|
/**
|
|
* Set a scoped css-value. These are css-variables set from CssState
|
|
*/
|
|
public setScopedCssVariable(varName: string, value: string): void;
|
|
|
|
/**
|
|
* Set a unscoped css-value. These are css-variables set on view.style
|
|
*/
|
|
public setUnscopedCssVariable(varName: string, value: string): void;
|
|
|
|
/**
|
|
* Get value of the css-variable.
|
|
* If the value is not set on this style-object, try the parent view.
|
|
*/
|
|
public getCssVariable(varName: string): string | null;
|
|
|
|
/**
|
|
* Remove all scoped css-variables
|
|
*/
|
|
public resetScopedCssVariables(): void;
|
|
|
|
/**
|
|
* Remove all unscoped css-variables
|
|
*/
|
|
public resetUnscopedCssVariables(): void;
|
|
}
|
|
|
|
interface PropertyBagClass {
|
|
new(): PropertyBag;
|
|
prototype: PropertyBag;
|
|
}
|
|
interface PropertyBag {
|
|
[property: string]: string;
|
|
}
|