mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-08-16 03:31:45 +08:00
initial commit
This commit is contained in:
@ -277,7 +277,7 @@
|
|||||||
<TypeScriptCompile Include="apps\ui-tests-app\pages\text\label.ts" />
|
<TypeScriptCompile Include="apps\ui-tests-app\pages\text\label.ts" />
|
||||||
<TypeScriptCompile Include="apps\ui-tests-app\pages\text\button.ts" />
|
<TypeScriptCompile Include="apps\ui-tests-app\pages\text\button.ts" />
|
||||||
<TypeScriptCompile Include="apps\ui-tests-app\web-view\webview.ts">
|
<TypeScriptCompile Include="apps\ui-tests-app\web-view\webview.ts">
|
||||||
<DependentUpon>webview.xml</DependentUpon>
|
<DependentUpon>webview.xml</DependentUpon>
|
||||||
</TypeScriptCompile>
|
</TypeScriptCompile>
|
||||||
<TypeScriptCompile Include="es-collections.d.ts" />
|
<TypeScriptCompile Include="es-collections.d.ts" />
|
||||||
<TypeScriptCompile Include="es6-promise.d.ts" />
|
<TypeScriptCompile Include="es6-promise.d.ts" />
|
||||||
@ -436,6 +436,10 @@
|
|||||||
<TypeScriptCompile Include="ui\action-bar\action-bar.ios.ts">
|
<TypeScriptCompile Include="ui\action-bar\action-bar.ios.ts">
|
||||||
<DependentUpon>action-bar.d.ts</DependentUpon>
|
<DependentUpon>action-bar.d.ts</DependentUpon>
|
||||||
</TypeScriptCompile>
|
</TypeScriptCompile>
|
||||||
|
<TypeScriptCompile Include="ui\html-view\html-view-common.ts" />
|
||||||
|
<TypeScriptCompile Include="ui\html-view\html-view.android.ts" />
|
||||||
|
<TypeScriptCompile Include="ui\html-view\html-view.d.ts" />
|
||||||
|
<TypeScriptCompile Include="ui\html-view\html-view.ios.ts" />
|
||||||
<TypeScriptCompile Include="ui\repeater\repeater.ts">
|
<TypeScriptCompile Include="ui\repeater\repeater.ts">
|
||||||
<DependentUpon>repeater.d.ts</DependentUpon>
|
<DependentUpon>repeater.d.ts</DependentUpon>
|
||||||
</TypeScriptCompile>
|
</TypeScriptCompile>
|
||||||
@ -797,7 +801,7 @@
|
|||||||
<Content Include="apps\ui-tests-app\pages\text\text-view.xml" />
|
<Content Include="apps\ui-tests-app\pages\text\text-view.xml" />
|
||||||
<Content Include="apps\ui-tests-app\pages\text\label.xml" />
|
<Content Include="apps\ui-tests-app\pages\text\label.xml" />
|
||||||
<Content Include="apps\ui-tests-app\pages\text\button.xml" />
|
<Content Include="apps\ui-tests-app\pages\text\button.xml" />
|
||||||
<Content Include="apps\ui-tests-app\web-view\webview.xml" />
|
<Content Include="apps\ui-tests-app\web-view\webview.xml" />
|
||||||
<Content Include="js-libs\reworkcss-value\reworkcss-value.js" />
|
<Content Include="js-libs\reworkcss-value\reworkcss-value.js" />
|
||||||
<Content Include="ui\layouts\stack-layout\package.json">
|
<Content Include="ui\layouts\stack-layout\package.json">
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
@ -1683,6 +1687,7 @@
|
|||||||
<Content Include="js-libs\reworkcss-value\package.json" />
|
<Content Include="js-libs\reworkcss-value\package.json" />
|
||||||
<Content Include="js-libs\reworkcss-value\Readme.md" />
|
<Content Include="js-libs\reworkcss-value\Readme.md" />
|
||||||
<Content Include="ui\action-bar\package.json">
|
<Content Include="ui\action-bar\package.json">
|
||||||
|
<Content Include="ui\html-view\package.json">
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
@ -1747,7 +1752,7 @@
|
|||||||
<SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
|
<SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
|
||||||
</WebProjectProperties>
|
</WebProjectProperties>
|
||||||
</FlavorProperties>
|
</FlavorProperties>
|
||||||
<UserProperties ui_2scroll-view_2package_1json__JSONSchema="http://json.schemastore.org/package" apps_2editable-text-demo_2package_1json__JSONSchema="http://json.schemastore.org/package" apps_2absolute-layout-demo_2package_1json__JSONSchema="http://json.schemastore.org/package" apps_2gallery-app_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2content-view_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2web-view_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2layouts_2linear-layout_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2layouts_2absolute-layout_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2layouts_2dock-layout_2package_1json__JSONSchema="" ui_2layouts_2grid-layout_2package_1json__JSONSchema="" ui_2layouts_2wrap-layout_2package_1json__JSONSchema="http://json.schemastore.org/package" />
|
<UserProperties ui_2layouts_2wrap-layout_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2layouts_2grid-layout_2package_1json__JSONSchema="" ui_2layouts_2dock-layout_2package_1json__JSONSchema="" ui_2layouts_2absolute-layout_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2layouts_2linear-layout_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2web-view_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2content-view_2package_1json__JSONSchema="http://json.schemastore.org/package" apps_2gallery-app_2package_1json__JSONSchema="http://json.schemastore.org/package" apps_2absolute-layout-demo_2package_1json__JSONSchema="http://json.schemastore.org/package" apps_2editable-text-demo_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2scroll-view_2package_1json__JSONSchema="http://json.schemastore.org/package" />
|
||||||
</VisualStudio>
|
</VisualStudio>
|
||||||
</ProjectExtensions>
|
</ProjectExtensions>
|
||||||
</Project>
|
</Project>
|
23
ui/html-view/html-view-common.ts
Normal file
23
ui/html-view/html-view-common.ts
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
import definition = require("ui/html-view");
|
||||||
|
import dependencyObservable = require("ui/core/dependency-observable");
|
||||||
|
import proxy = require("ui/core/proxy");
|
||||||
|
import view = require("ui/core/view");
|
||||||
|
|
||||||
|
export class HtmlView extends view.View implements definition.HtmlView {
|
||||||
|
public static htmlProperty = new dependencyObservable.Property(
|
||||||
|
"html",
|
||||||
|
"HtmlView",
|
||||||
|
new proxy.PropertyMetadata(false, dependencyObservable.PropertyMetadataSettings.AffectsLayout)
|
||||||
|
);
|
||||||
|
|
||||||
|
constructor(options?: definition.Options) {
|
||||||
|
super(options);
|
||||||
|
}
|
||||||
|
|
||||||
|
get html(): string {
|
||||||
|
return this._getValue(HtmlView.htmlProperty);
|
||||||
|
}
|
||||||
|
set html(value: string) {
|
||||||
|
this._setValue(HtmlView.htmlProperty, value);
|
||||||
|
}
|
||||||
|
}
|
34
ui/html-view/html-view.android.ts
Normal file
34
ui/html-view/html-view.android.ts
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
import common = require("ui/html-view/html-view-common");
|
||||||
|
import dependencyObservable = require("ui/core/dependency-observable");
|
||||||
|
import proxy = require("ui/core/proxy");
|
||||||
|
import types = require("utils/types");
|
||||||
|
|
||||||
|
function onHtmlPropertyChanged(data: dependencyObservable.PropertyChangeData) {
|
||||||
|
var view = <HtmlView>data.object;
|
||||||
|
if (!view.android) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (types.isString(data.newValue)) {
|
||||||
|
view.android.setText(<any>android.text.Html.fromHtml(data.newValue));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// register the setNativeValue callback
|
||||||
|
(<proxy.PropertyMetadata>common.HtmlView.htmlProperty.metadata).onSetNativeValue = onHtmlPropertyChanged;
|
||||||
|
|
||||||
|
// merge the exports of the common file with the exports of this file
|
||||||
|
declare var exports;
|
||||||
|
require("utils/module-merge").merge(common, exports);
|
||||||
|
|
||||||
|
export class HtmlView extends common.HtmlView {
|
||||||
|
private _android: android.widget.TextView;
|
||||||
|
|
||||||
|
get android(): android.widget.TextView {
|
||||||
|
return this._android;
|
||||||
|
}
|
||||||
|
|
||||||
|
public _createUI() {
|
||||||
|
this._android = new android.widget.TextView(this._context);
|
||||||
|
}
|
||||||
|
}
|
45
ui/html-view/html-view.d.ts
vendored
Normal file
45
ui/html-view/html-view.d.ts
vendored
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
/**
|
||||||
|
* Contains the HtmlView class, which represents a standard html view widget.
|
||||||
|
*/
|
||||||
|
declare module "ui/html-view" {
|
||||||
|
import view = require("ui/core/view");
|
||||||
|
import dependencyObservable = require("ui/core/dependency-observable");
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents a view with html content.
|
||||||
|
*/
|
||||||
|
export class HtmlView extends view.View {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Dependency property used to support binding operations for the html of the current HtmlView instance.
|
||||||
|
*/
|
||||||
|
public static htmlProperty: dependencyObservable.Property;
|
||||||
|
|
||||||
|
constructor(options?: Options);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the native [android widget](http://developer.android.com/reference/android/widget/TextView.html) that represents the user interface for this component. Valid only when running on Android OS.
|
||||||
|
*/
|
||||||
|
android: android.widget.TextView;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the native [UILabel](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UILabel_Class/) that represents the user interface for this component. Valid only when running on iOS.
|
||||||
|
*/
|
||||||
|
ios: UILabel;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets or sets html string for the HtmlView.
|
||||||
|
*/
|
||||||
|
html: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provides a set of most common options for creating a HtmlView.
|
||||||
|
*/
|
||||||
|
export interface Options extends view.Options {
|
||||||
|
/**
|
||||||
|
* Gets or sets the html content of a HtmlView.
|
||||||
|
*/
|
||||||
|
html?: string;
|
||||||
|
}
|
||||||
|
}
|
82
ui/html-view/html-view.ios.ts
Normal file
82
ui/html-view/html-view.ios.ts
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
import common = require("ui/html-view/html-view-common");
|
||||||
|
import definition = require("ui/html-view");
|
||||||
|
import dependencyObservable = require("ui/core/dependency-observable");
|
||||||
|
import proxy = require("ui/core/proxy");
|
||||||
|
import utils = require("utils/utils");
|
||||||
|
import types = require("utils/types");
|
||||||
|
import viewModule = require("ui/core/view");
|
||||||
|
|
||||||
|
function onHtmlPropertyChanged(data: dependencyObservable.PropertyChangeData) {
|
||||||
|
var view = <HtmlView>data.object;
|
||||||
|
if (!view.android) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (types.isString(data.newValue)) {
|
||||||
|
var htmlString = NSString.stringWithString(data.newValue);
|
||||||
|
var nsData = htmlString.dataUsingEncoding(NSUnicodeStringEncoding);
|
||||||
|
var options = NSDictionary.new();
|
||||||
|
options.setValueForKey(NSDocumentTypeDocumentAttribute, NSHTMLTextDocumentType);
|
||||||
|
view.ios.attributedText = NSAttributedString.alloc().initWithDataOptionsDocumentAttributesError(nsData, options, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// register the setNativeValue callback
|
||||||
|
(<proxy.PropertyMetadata>common.HtmlView.htmlProperty.metadata).onSetNativeValue = onHtmlPropertyChanged;
|
||||||
|
|
||||||
|
// merge the exports of the common file with the exports of this file
|
||||||
|
declare var exports;
|
||||||
|
require("utils/module-merge").merge(common, exports);
|
||||||
|
|
||||||
|
export class HtmlView extends common.HtmlView {
|
||||||
|
private _ios: UILabel;
|
||||||
|
|
||||||
|
constructor(options?: definition.Options) {
|
||||||
|
super(options);
|
||||||
|
|
||||||
|
this._ios = new UILabel();
|
||||||
|
super._prepareNativeView(this._ios);
|
||||||
|
}
|
||||||
|
|
||||||
|
get ios(): UILabel {
|
||||||
|
return this._ios;
|
||||||
|
}
|
||||||
|
|
||||||
|
get _nativeView(): UILabel {
|
||||||
|
return this._ios;
|
||||||
|
}
|
||||||
|
|
||||||
|
public onMeasure(widthMeasureSpec: number, heightMeasureSpec: number): void {
|
||||||
|
var nativeView = this._nativeView;
|
||||||
|
if (nativeView) {
|
||||||
|
|
||||||
|
var width = utils.layout.getMeasureSpecSize(widthMeasureSpec);
|
||||||
|
var widthMode = utils.layout.getMeasureSpecMode(widthMeasureSpec);
|
||||||
|
|
||||||
|
var height = utils.layout.getMeasureSpecSize(heightMeasureSpec);
|
||||||
|
var heightMode = utils.layout.getMeasureSpecMode(heightMeasureSpec);
|
||||||
|
|
||||||
|
if (widthMode === utils.layout.UNSPECIFIED) {
|
||||||
|
width = Number.POSITIVE_INFINITY;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (heightMode === utils.layout.UNSPECIFIED) {
|
||||||
|
height = Number.POSITIVE_INFINITY;
|
||||||
|
}
|
||||||
|
|
||||||
|
var nativeSize = nativeView.sizeThatFits(CGSizeMake(width, height));
|
||||||
|
var labelWidth = nativeSize.width;
|
||||||
|
//if (!this.textWrap) {
|
||||||
|
labelWidth = Math.min(labelWidth, width);
|
||||||
|
//}
|
||||||
|
|
||||||
|
var measureWidth = Math.max(labelWidth, this.minWidth);
|
||||||
|
var measureHeight = Math.max(nativeSize.height, this.minHeight);
|
||||||
|
|
||||||
|
var widthAndState = viewModule.View.resolveSizeAndState(measureWidth, width, widthMode, 0);
|
||||||
|
var heightAndState = viewModule.View.resolveSizeAndState(measureHeight, height, heightMode, 0);
|
||||||
|
|
||||||
|
this.setMeasuredDimension(widthAndState, heightAndState);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
2
ui/html-view/package.json
Normal file
2
ui/html-view/package.json
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
{ "name" : "html-view",
|
||||||
|
"main" : "html-view.js" }
|
Reference in New Issue
Block a user