mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-11-05 13:26:48 +08:00
Merge pull request #186 from NativeScript/date-picker-tests
Fixed all DatePicker issues in both platforms and covered with tests.
This commit is contained in:
@@ -131,6 +131,14 @@
|
||||
<DependentUpon>segmented-bar-tests-native.d.ts</DependentUpon>
|
||||
</TypeScriptCompile>
|
||||
<TypeScriptCompile Include="apps\tests\ui\segmented-bar\segmented-bar-tests.ts" />
|
||||
<TypeScriptCompile Include="apps\tests\ui\date-picker\date-picker-tests-native.android.ts">
|
||||
<DependentUpon>date-picker-tests-native.d.ts</DependentUpon>
|
||||
</TypeScriptCompile>
|
||||
<TypeScriptCompile Include="apps\tests\ui\date-picker\date-picker-tests-native.d.ts" />
|
||||
<TypeScriptCompile Include="apps\tests\ui\date-picker\date-picker-tests-native.ios.ts">
|
||||
<DependentUpon>date-picker-tests-native.d.ts</DependentUpon>
|
||||
</TypeScriptCompile>
|
||||
<TypeScriptCompile Include="apps\tests\ui\date-picker\date-picker-tests.ts" />
|
||||
<TypeScriptCompile Include="apps\tests\ui\list-picker\list-picker-tests-native.d.ts" />
|
||||
<TypeScriptCompile Include="apps\tests\ui\list-picker\list-picker-tests-native.android.ts">
|
||||
<DependentUpon>list-picker-tests-native.d.ts</DependentUpon>
|
||||
@@ -1483,7 +1491,7 @@
|
||||
<SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
|
||||
</WebProjectProperties>
|
||||
</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>
|
||||
</ProjectExtensions>
|
||||
</Project>
|
||||
@@ -18,16 +18,26 @@ export function onPageLoaded(args: observableModule.EventData) {
|
||||
page = <pagesModule.Page>args.object;
|
||||
page.bindingContext = viewModel;
|
||||
|
||||
viewModel.items = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
|
||||
viewModel.selectedIndex = 5;
|
||||
|
||||
label = page.getViewById<labelModule.Label>("label");
|
||||
listPicker = page.getViewById<listPickerModule.ListPicker>("listPicker");
|
||||
datePicker = page.getViewById<datePickerModule.DatePicker>("datePicker");
|
||||
timePicker = page.getViewById<timePickerModule.TimePicker>("timePicker");
|
||||
|
||||
viewModel.items = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
|
||||
viewModel.selectedIndex = 5;
|
||||
|
||||
//viewModel.day = 9;
|
||||
//viewModel.month = 2;
|
||||
//viewModel.year = 1980;
|
||||
}
|
||||
|
||||
export function onTap(args: observableModule.EventData) {
|
||||
console.log("onTap");
|
||||
|
||||
viewModel.items = ["Male", "Female"];
|
||||
viewModel.selectedIndex = 1;
|
||||
|
||||
viewModel.day = viewModel.day + 1;
|
||||
viewModel.month = viewModel.month + 1;
|
||||
viewModel.year = viewModel.year + 1;
|
||||
}
|
||||
@@ -3,7 +3,7 @@
|
||||
<Button id="button" text="GO!" height="50" width="100" tap="onTap"/>
|
||||
<Label id="label" text="{{ selectedIndex }}" height="50" width="100" />
|
||||
<ListPicker id="listPicker" selectedIndex="{{ selectedIndex }}" items="{{ items }}"/>
|
||||
<DatePicker id="datePicker"/>
|
||||
<DatePicker id="datePicker" day="{{ day }}" month="{{ month }}" year="{{ year }}"/>
|
||||
<TimePicker id="timePicker"/>
|
||||
</StackLayout>
|
||||
</Page>
|
||||
@@ -24,4 +24,34 @@ export class WebViewModel extends observable.Observable {
|
||||
this._items = value;
|
||||
this.notify({ object: this, eventName: observable.knownEvents.propertyChange, propertyName: "items", value: value });
|
||||
}
|
||||
|
||||
private _day: number;
|
||||
get day(): number {
|
||||
return this._day;
|
||||
}
|
||||
set day(value: number) {
|
||||
console.log("day:" + value);
|
||||
this._day = value;
|
||||
this.notify({ object: this, eventName: observable.knownEvents.propertyChange, propertyName: "day", value: value });
|
||||
}
|
||||
|
||||
private _month: number;
|
||||
get month(): number {
|
||||
return this._month;
|
||||
}
|
||||
set month(value: number) {
|
||||
console.log("month:" + value);
|
||||
this._month = value;
|
||||
this.notify({ object: this, eventName: observable.knownEvents.propertyChange, propertyName: "month", value: value });
|
||||
}
|
||||
|
||||
private _year: number;
|
||||
get year(): number {
|
||||
return this._year;
|
||||
}
|
||||
set year(value: number) {
|
||||
console.log("year:" + value);
|
||||
this._year = value;
|
||||
this.notify({ object: this, eventName: observable.knownEvents.propertyChange, propertyName: "year", value: value });
|
||||
}
|
||||
}
|
||||
@@ -48,6 +48,7 @@ allTests["FORMATTEDSTRING"] = require("./text/formatted-string-tests");
|
||||
allTests["FILE-SYSTEM-ACCESS"] = require("./file-system-access-tests/file-system-access-tests");
|
||||
allTests["XML-DECLARATION"] = require("./xml-declaration/xml-declaration-tests");
|
||||
allTests["LIST-PICKER"] = require("./ui/list-picker/list-picker-tests");
|
||||
allTests["DATE-PICKER"] = require("./ui/date-picker/date-picker-tests");
|
||||
|
||||
var testsWithLongDelay = {
|
||||
testLocation: 10000,
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
import datePickerModule = require("ui/date-picker");
|
||||
|
||||
export function getNativeYear(datePicker: datePickerModule.DatePicker): number {
|
||||
return datePicker.android.getYear();
|
||||
}
|
||||
|
||||
export function getNativeMonth(datePicker: datePickerModule.DatePicker): number {
|
||||
return datePicker.android.getMonth() + 1;
|
||||
}
|
||||
|
||||
export function getNativeDay(datePicker: datePickerModule.DatePicker): number {
|
||||
return datePicker.android.getDayOfMonth();
|
||||
}
|
||||
|
||||
export function setNativeYear(datePicker: datePickerModule.DatePicker, value: number): void {
|
||||
datePicker.android.updateDate(value, datePicker.android.getMonth(), datePicker.android.getDayOfMonth());
|
||||
}
|
||||
|
||||
export function setNativeMonth(datePicker: datePickerModule.DatePicker, value: number): void {
|
||||
datePicker.android.updateDate(datePicker.android.getYear(), value - 1, datePicker.android.getDayOfMonth());
|
||||
}
|
||||
|
||||
export function setNativeDay(datePicker: datePickerModule.DatePicker, value: number): void {
|
||||
datePicker.android.updateDate(datePicker.android.getYear(), datePicker.android.getMonth(), value);
|
||||
}
|
||||
10
apps/tests/ui/date-picker/date-picker-tests-native.d.ts
vendored
Normal file
10
apps/tests/ui/date-picker/date-picker-tests-native.d.ts
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
//@private
|
||||
import datePickerModule = require("ui/date-picker");
|
||||
|
||||
export declare function getNativeYear(datePicker: datePickerModule.DatePicker): number;
|
||||
export declare function getNativeMonth(datePicker: datePickerModule.DatePicker): number;
|
||||
export declare function getNativeDay(datePicker: datePickerModule.DatePicker): number;
|
||||
|
||||
export declare function setNativeYear(datePicker: datePickerModule.DatePicker, value: number): void;
|
||||
export declare function setNativeMonth(datePicker: datePickerModule.DatePicker, value: number): void;
|
||||
export declare function setNativeDay(datePicker: datePickerModule.DatePicker, value: number): void;
|
||||
36
apps/tests/ui/date-picker/date-picker-tests-native.ios.ts
Normal file
36
apps/tests/ui/date-picker/date-picker-tests-native.ios.ts
Normal file
@@ -0,0 +1,36 @@
|
||||
import datePickerModule = require("ui/date-picker");
|
||||
|
||||
export function getNativeYear(datePicker: datePickerModule.DatePicker): number {
|
||||
return NSCalendar.currentCalendar().componentsFromDate(NSCalendarUnit.NSCalendarUnitYear | NSCalendarUnit.NSCalendarUnitMonth | NSCalendarUnit.NSCalendarUnitDay, datePicker.ios.date).year;
|
||||
}
|
||||
|
||||
export function getNativeMonth(datePicker: datePickerModule.DatePicker): number {
|
||||
return NSCalendar.currentCalendar().componentsFromDate(NSCalendarUnit.NSCalendarUnitYear | NSCalendarUnit.NSCalendarUnitMonth | NSCalendarUnit.NSCalendarUnitDay, datePicker.ios.date).month;
|
||||
}
|
||||
|
||||
export function getNativeDay(datePicker: datePickerModule.DatePicker): number {
|
||||
return NSCalendar.currentCalendar().componentsFromDate(NSCalendarUnit.NSCalendarUnitYear | NSCalendarUnit.NSCalendarUnitMonth | NSCalendarUnit.NSCalendarUnitDay, datePicker.ios.date).day;
|
||||
}
|
||||
|
||||
export function setNativeYear(datePicker: datePickerModule.DatePicker, value: number): void {
|
||||
var comps = NSCalendar.currentCalendar().componentsFromDate(NSCalendarUnit.NSCalendarUnitYear | NSCalendarUnit.NSCalendarUnitMonth | NSCalendarUnit.NSCalendarUnitDay, datePicker.ios.date);
|
||||
comps.year = value;
|
||||
datePicker.ios.setDateAnimated(NSCalendar.currentCalendar().dateFromComponents(comps), false);
|
||||
(<any>datePicker)._changeHandler.valueChanged(datePicker.ios);
|
||||
}
|
||||
|
||||
export function setNativeMonth(datePicker: datePickerModule.DatePicker, value: number): void {
|
||||
var comps = NSCalendar.currentCalendar().componentsFromDate(NSCalendarUnit.NSCalendarUnitYear | NSCalendarUnit.NSCalendarUnitMonth | NSCalendarUnit.NSCalendarUnitDay, datePicker.ios.date);
|
||||
comps.month = value;
|
||||
datePicker.ios.setDateAnimated(NSCalendar.currentCalendar().dateFromComponents(comps), false);
|
||||
(<any>datePicker)._changeHandler.valueChanged(datePicker.ios);
|
||||
}
|
||||
|
||||
export function setNativeDay(datePicker: datePickerModule.DatePicker, value: number): void {
|
||||
var comps = NSCalendar.currentCalendar().componentsFromDate(NSCalendarUnit.NSCalendarUnitYear | NSCalendarUnit.NSCalendarUnitMonth | NSCalendarUnit.NSCalendarUnitDay, datePicker.ios.date);
|
||||
comps.day = value;
|
||||
datePicker.ios.setDateAnimated(NSCalendar.currentCalendar().dateFromComponents(comps), false);
|
||||
(<any>datePicker)._changeHandler.valueChanged(datePicker.ios);
|
||||
}
|
||||
|
||||
|
||||
109
apps/tests/ui/date-picker/date-picker-tests.ts
Normal file
109
apps/tests/ui/date-picker/date-picker-tests.ts
Normal file
@@ -0,0 +1,109 @@
|
||||
import TKUnit = require("../../TKUnit");
|
||||
import helper = require("../helper");
|
||||
import viewModule = require("ui/core/view");
|
||||
import datePickerTestsNative = require("./date-picker-tests-native");
|
||||
|
||||
// <snippet module="ui/date-picker" title="DatePicker">
|
||||
// # DatePicker
|
||||
|
||||
// Using a DatePicker requires the "ui/date-picker" module.
|
||||
// ``` JavaScript
|
||||
import datePickerModule = require("ui/date-picker");
|
||||
|
||||
function _createDatePicker(): datePickerModule.DatePicker {
|
||||
// <snippet module="ui/date-picker" title="DatePicker">
|
||||
// ## Creating a DatePicker
|
||||
// ``` JavaScript
|
||||
var datePicker = new datePickerModule.DatePicker();
|
||||
// ```
|
||||
// </snippet>
|
||||
datePicker.id = "DatePicker";
|
||||
return datePicker;
|
||||
}
|
||||
|
||||
export var test_WhenCreated_YearIsUndefined = function () {
|
||||
helper.buildUIAndRunTest(_createDatePicker(), function (views: Array<viewModule.View>) {
|
||||
var datePicker = <datePickerModule.DatePicker>views[0];
|
||||
var actualValue = datePicker.year;
|
||||
var expectedValue = undefined;
|
||||
TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue);
|
||||
});
|
||||
}
|
||||
|
||||
export var test_WhenCreated_MonthIsUndefined = function () {
|
||||
helper.buildUIAndRunTest(_createDatePicker(), function (views: Array<viewModule.View>) {
|
||||
var datePicker = <datePickerModule.DatePicker>views[0];
|
||||
var actualValue = datePicker.month;
|
||||
var expectedValue = undefined;
|
||||
TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue);
|
||||
});
|
||||
}
|
||||
|
||||
export var test_WhenCreated_DayIsUndefined = function () {
|
||||
helper.buildUIAndRunTest(_createDatePicker(), function (views: Array<viewModule.View>) {
|
||||
var datePicker = <datePickerModule.DatePicker>views[0];
|
||||
var actualValue = datePicker.day;
|
||||
var expectedValue = undefined;
|
||||
TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue);
|
||||
});
|
||||
}
|
||||
|
||||
export var testYearFromLocalToNative = function () {
|
||||
helper.buildUIAndRunTest(_createDatePicker(), function (views: Array<viewModule.View>) {
|
||||
var datePicker = <datePickerModule.DatePicker>views[0];
|
||||
var expectedValue = 1980;
|
||||
datePicker.year = expectedValue;
|
||||
var actualValue = datePickerTestsNative.getNativeYear(datePicker);
|
||||
TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue);
|
||||
});
|
||||
}
|
||||
|
||||
export var testMonthFromLocalToNative = function () {
|
||||
helper.buildUIAndRunTest(_createDatePicker(), function (views: Array<viewModule.View>) {
|
||||
var datePicker = <datePickerModule.DatePicker>views[0];
|
||||
var expectedValue = 5;
|
||||
datePicker.month = expectedValue;
|
||||
var actualValue = datePickerTestsNative.getNativeMonth(datePicker);
|
||||
TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue);
|
||||
});
|
||||
}
|
||||
|
||||
export var testDayFromLocalToNative = function () {
|
||||
helper.buildUIAndRunTest(_createDatePicker(), function (views: Array<viewModule.View>) {
|
||||
var datePicker = <datePickerModule.DatePicker>views[0];
|
||||
var expectedValue = 19;
|
||||
datePicker.day = expectedValue;
|
||||
var actualValue = datePickerTestsNative.getNativeDay(datePicker);
|
||||
TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue);
|
||||
});
|
||||
}
|
||||
|
||||
export var testYearFromNativeToLocal = function () {
|
||||
helper.buildUIAndRunTest(_createDatePicker(), function (views: Array<viewModule.View>) {
|
||||
var datePicker = <datePickerModule.DatePicker>views[0];
|
||||
var expectedValue = 1981;
|
||||
datePickerTestsNative.setNativeYear(datePicker, expectedValue);
|
||||
var actualValue = datePicker.year;
|
||||
TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue);
|
||||
});
|
||||
}
|
||||
|
||||
export var testMonthFromNativeToLocal = function () {
|
||||
helper.buildUIAndRunTest(_createDatePicker(), function (views: Array<viewModule.View>) {
|
||||
var datePicker = <datePickerModule.DatePicker>views[0];
|
||||
var expectedValue = 6;
|
||||
datePickerTestsNative.setNativeMonth(datePicker, expectedValue);
|
||||
var actualValue = datePicker.month;
|
||||
TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue);
|
||||
});
|
||||
}
|
||||
|
||||
export var testDayFromNativeToLocal = function () {
|
||||
helper.buildUIAndRunTest(_createDatePicker(), function (views: Array<viewModule.View>) {
|
||||
var datePicker = <datePickerModule.DatePicker>views[0];
|
||||
var expectedValue = 20;
|
||||
datePickerTestsNative.setNativeDay(datePicker, expectedValue);
|
||||
var actualValue = datePicker.day;
|
||||
TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue);
|
||||
});
|
||||
}
|
||||
@@ -167,7 +167,7 @@ export var testSettingSelectedIndexLargerThanCountShouldThrow = function () {
|
||||
listPicker.items = _createItems(10);
|
||||
TKUnit.assertThrows(function () {
|
||||
listPicker.selectedIndex = 10;
|
||||
}, "Setting selectedIndex to a negative number should throw.");
|
||||
}, "Setting selectedIndex to a number larger than item count should throw.");
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -4,9 +4,9 @@ import proxy = require("ui/core/proxy");
|
||||
import view = require("ui/core/view");
|
||||
|
||||
export class DatePicker extends view.View implements definition.DatePicker {
|
||||
public static yearProperty = new dependencyObservable.Property("year", "DatePicker", new proxy.PropertyMetadata(0));
|
||||
public static monthProperty = new dependencyObservable.Property("month", "DatePicker", new proxy.PropertyMetadata(0));
|
||||
public static dayProperty = new dependencyObservable.Property("day", "DatePicker", new proxy.PropertyMetadata(0));
|
||||
public static yearProperty = new dependencyObservable.Property("year", "DatePicker", new proxy.PropertyMetadata(undefined));
|
||||
public static monthProperty = new dependencyObservable.Property("month", "DatePicker", new proxy.PropertyMetadata(undefined));
|
||||
public static dayProperty = new dependencyObservable.Property("day", "DatePicker", new proxy.PropertyMetadata(undefined));
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
|
||||
@@ -5,8 +5,8 @@ import proxy = require("ui/core/proxy");
|
||||
function onYearPropertyChanged(data: dependencyObservable.PropertyChangeData) {
|
||||
var picker = <DatePicker>data.object;
|
||||
|
||||
if (picker.android) {
|
||||
picker.android.init(data.newValue, picker.month, picker.day, picker._listener);
|
||||
if (picker.android && picker.android.getYear() !== data.newValue) {
|
||||
picker.android.updateDate(data.newValue, picker.android.getMonth(), picker.android.getDayOfMonth());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,8 +15,8 @@ function onYearPropertyChanged(data: dependencyObservable.PropertyChangeData) {
|
||||
function onMonthPropertyChanged(data: dependencyObservable.PropertyChangeData) {
|
||||
var picker = <DatePicker>data.object;
|
||||
|
||||
if (picker.android) {
|
||||
picker.android.init(picker.year, data.newValue, picker.day, picker._listener);
|
||||
if (picker.android && picker.android.getMonth() !== (data.newValue - 1)) {
|
||||
picker.android.updateDate(picker.android.getYear(), data.newValue - 1, picker.android.getDayOfMonth());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,8 +25,8 @@ function onMonthPropertyChanged(data: dependencyObservable.PropertyChangeData) {
|
||||
function onDayPropertyChanged(data: dependencyObservable.PropertyChangeData) {
|
||||
var picker = <DatePicker>data.object;
|
||||
|
||||
if (picker.android) {
|
||||
picker.android.init(picker.year, picker.month, data.newValue, picker._listener);
|
||||
if (picker.android && picker.android.getDayOfMonth !== data.newValue) {
|
||||
picker.android.updateDate(picker.android.getYear(), picker.android.getMonth(), data.newValue);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -54,11 +54,20 @@ export class DatePicker extends common.DatePicker {
|
||||
return that.get();
|
||||
},
|
||||
|
||||
onDateChanged: function (picker: android.widget.DatePicker, monthOfYear: number, dayOfMonth: number) {
|
||||
onDateChanged: function (picker: android.widget.DatePicker, year: number, month: number, day: number) {
|
||||
if (this.owner) {
|
||||
this.owner._onPropertyChangedFromNative(common.DatePicker.yearProperty, picker.getYear());
|
||||
this.owner._onPropertyChangedFromNative(common.DatePicker.monthProperty, monthOfYear);
|
||||
this.owner._onPropertyChangedFromNative(common.DatePicker.dayProperty, dayOfMonth);
|
||||
|
||||
if (year !== this.owner.year) {
|
||||
this.owner._onPropertyChangedFromNative(common.DatePicker.yearProperty, year);
|
||||
}
|
||||
|
||||
if ((month + 1) !== this.owner.month) {
|
||||
this.owner._onPropertyChangedFromNative(common.DatePicker.monthProperty, month + 1);
|
||||
}
|
||||
|
||||
if (day !== this.owner.day) {
|
||||
this.owner._onPropertyChangedFromNative(common.DatePicker.dayProperty, day);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -67,5 +76,6 @@ export class DatePicker extends common.DatePicker {
|
||||
public _createUI() {
|
||||
this._android = new android.widget.DatePicker(this._context);
|
||||
this._android.setCalendarViewShown(false);
|
||||
this._android.init(0, 0, 0, this._listener);
|
||||
}
|
||||
}
|
||||
4
ui/date-picker/date-picker.d.ts
vendored
4
ui/date-picker/date-picker.d.ts
vendored
@@ -31,12 +31,12 @@ declare module "ui/date-picker" {
|
||||
year: number;
|
||||
|
||||
/**
|
||||
* Gets or sets the month.
|
||||
* Gets or sets the month. The months start from 1.
|
||||
*/
|
||||
month: number;
|
||||
|
||||
/**
|
||||
* Gets or sets the day.
|
||||
* Gets or sets the day. The days start from 1.
|
||||
*/
|
||||
day: number;
|
||||
}
|
||||
|
||||
@@ -6,7 +6,9 @@ function onYearPropertyChanged(data: dependencyObservable.PropertyChangeData) {
|
||||
var picker = <DatePicker>data.object;
|
||||
|
||||
if (picker.ios) {
|
||||
setYearMonthDay(picker.ios, data.newValue, picker.month, picker.day);
|
||||
var comps = NSCalendar.currentCalendar().componentsFromDate(NSCalendarUnit.NSCalendarUnitYear | NSCalendarUnit.NSCalendarUnitMonth | NSCalendarUnit.NSCalendarUnitDay, picker.ios.date);
|
||||
comps.year = data.newValue;
|
||||
picker.ios.setDateAnimated(NSCalendar.currentCalendar().dateFromComponents(comps), false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,7 +18,9 @@ function onMonthPropertyChanged(data: dependencyObservable.PropertyChangeData) {
|
||||
var picker = <DatePicker>data.object;
|
||||
|
||||
if (picker.ios) {
|
||||
setYearMonthDay(picker.ios, picker.year, data.newValue, picker.day);
|
||||
var comps = NSCalendar.currentCalendar().componentsFromDate(NSCalendarUnit.NSCalendarUnitYear | NSCalendarUnit.NSCalendarUnitMonth | NSCalendarUnit.NSCalendarUnitDay, picker.ios.date);
|
||||
comps.month = data.newValue;
|
||||
picker.ios.setDateAnimated(NSCalendar.currentCalendar().dateFromComponents(comps), false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,7 +30,9 @@ function onDayPropertyChanged(data: dependencyObservable.PropertyChangeData) {
|
||||
var picker = <DatePicker>data.object;
|
||||
|
||||
if (picker.ios) {
|
||||
setYearMonthDay(picker.ios, picker.year, picker.month, data.newValue);
|
||||
var comps = NSCalendar.currentCalendar().componentsFromDate(NSCalendarUnit.NSCalendarUnitYear | NSCalendarUnit.NSCalendarUnitMonth | NSCalendarUnit.NSCalendarUnitDay, picker.ios.date);
|
||||
comps.day = data.newValue;
|
||||
picker.ios.setDateAnimated(NSCalendar.currentCalendar().dateFromComponents(comps), false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -68,26 +74,22 @@ class UIDatePickerChangeHandlerImpl extends NSObject {
|
||||
}
|
||||
|
||||
public valueChanged(sender: UIDatePicker) {
|
||||
var calendar = NSCalendar.currentCalendar();
|
||||
var comp = calendar.componentsFromDate(NSCalendarUnit.NSHourCalendarUnit | NSCalendarUnit.NSMinuteCalendarUnit, sender.date);
|
||||
var comps = NSCalendar.currentCalendar().componentsFromDate(NSCalendarUnit.NSCalendarUnitYear | NSCalendarUnit.NSCalendarUnitMonth | NSCalendarUnit.NSCalendarUnitDay, sender.date);
|
||||
|
||||
if (comps.year !== this._owner.year) {
|
||||
this._owner._onPropertyChangedFromNative(common.DatePicker.yearProperty, comps.year);
|
||||
}
|
||||
|
||||
this._owner._onPropertyChangedFromNative(common.DatePicker.yearProperty, comp.year);
|
||||
this._owner._onPropertyChangedFromNative(common.DatePicker.monthProperty, comp.month);
|
||||
this._owner._onPropertyChangedFromNative(common.DatePicker.dayProperty, comp.day);
|
||||
if (comps.month !== this._owner.month) {
|
||||
this._owner._onPropertyChangedFromNative(common.DatePicker.monthProperty, comps.month);
|
||||
}
|
||||
|
||||
if (comps.day !== this._owner.day) {
|
||||
this._owner._onPropertyChangedFromNative(common.DatePicker.dayProperty, comps.day);
|
||||
}
|
||||
}
|
||||
|
||||
public static ObjCExposedMethods = {
|
||||
'valueChanged': { returns: interop.types.void, params: [UIDatePicker] }
|
||||
};
|
||||
}
|
||||
|
||||
function setYearMonthDay(picker: UIDatePicker, year: number, month: number, day: number) {
|
||||
var calendar = NSCalendar.currentCalendar();
|
||||
var comps = new NSDateComponents();
|
||||
|
||||
comps.year = year;
|
||||
comps.month = month;
|
||||
comps.day = day;
|
||||
|
||||
picker.setDateAnimated(calendar.dateFromComponents(comps), false);
|
||||
}
|
||||
@@ -53,7 +53,7 @@ export class ListPicker extends view.View implements definition.ListPicker {
|
||||
if (types.isDefined(this.items)) {
|
||||
if (index < 0 || index >= this.items.length) {
|
||||
this.selectedIndex = undefined;
|
||||
throw new Error("SelectedIndex should be between [0, items.length)");
|
||||
throw new Error("selectedIndex should be between [0, items.length - 1]");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user