mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-08-17 21:01:34 +08:00
Merge pull request #198 from NativeScript/min-max-date
Added DatePicker.minDate and DatePicker.maxDate.
This commit is contained in:
@ -12,6 +12,14 @@ export function getNativeDay(datePicker: datePickerModule.DatePicker): number {
|
|||||||
return datePicker.android.getDayOfMonth();
|
return datePicker.android.getDayOfMonth();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function getNativeMaxDate(datePicker: datePickerModule.DatePicker): Date {
|
||||||
|
return new Date(datePicker.android.getMaxDate());
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getNativeMinDate(datePicker: datePickerModule.DatePicker): Date {
|
||||||
|
return new Date(datePicker.android.getMinDate());
|
||||||
|
}
|
||||||
|
|
||||||
export function setNativeYear(datePicker: datePickerModule.DatePicker, value: number): void {
|
export function setNativeYear(datePicker: datePickerModule.DatePicker, value: number): void {
|
||||||
datePicker.android.updateDate(value, datePicker.android.getMonth(), datePicker.android.getDayOfMonth());
|
datePicker.android.updateDate(value, datePicker.android.getMonth(), datePicker.android.getDayOfMonth());
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,8 @@ import datePickerModule = require("ui/date-picker");
|
|||||||
export declare function getNativeYear(datePicker: datePickerModule.DatePicker): number;
|
export declare function getNativeYear(datePicker: datePickerModule.DatePicker): number;
|
||||||
export declare function getNativeMonth(datePicker: datePickerModule.DatePicker): number;
|
export declare function getNativeMonth(datePicker: datePickerModule.DatePicker): number;
|
||||||
export declare function getNativeDay(datePicker: datePickerModule.DatePicker): number;
|
export declare function getNativeDay(datePicker: datePickerModule.DatePicker): number;
|
||||||
|
export declare function getNativeMaxDate(datePicker: datePickerModule.DatePicker): Date;
|
||||||
|
export declare function getNativeMinDate(datePicker: datePickerModule.DatePicker): Date;
|
||||||
|
|
||||||
export declare function setNativeYear(datePicker: datePickerModule.DatePicker, value: number): void;
|
export declare function setNativeYear(datePicker: datePickerModule.DatePicker, value: number): void;
|
||||||
export declare function setNativeMonth(datePicker: datePickerModule.DatePicker, value: number): void;
|
export declare function setNativeMonth(datePicker: datePickerModule.DatePicker, value: number): void;
|
||||||
|
@ -12,6 +12,14 @@ export function getNativeDay(datePicker: datePickerModule.DatePicker): number {
|
|||||||
return NSCalendar.currentCalendar().componentsFromDate(NSCalendarUnit.NSCalendarUnitYear | NSCalendarUnit.NSCalendarUnitMonth | NSCalendarUnit.NSCalendarUnitDay, datePicker.ios.date).day;
|
return NSCalendar.currentCalendar().componentsFromDate(NSCalendarUnit.NSCalendarUnitYear | NSCalendarUnit.NSCalendarUnitMonth | NSCalendarUnit.NSCalendarUnitDay, datePicker.ios.date).day;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function getNativeMaxDate(datePicker: datePickerModule.DatePicker): Date {
|
||||||
|
return new Date(1000* NSDate.dateWithTimeIntervalSinceDate(0, datePicker.ios.maximumDate).timeIntervalSince1970);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getNativeMinDate(datePicker: datePickerModule.DatePicker): Date {
|
||||||
|
return new Date(1000* NSDate.dateWithTimeIntervalSinceDate(0, datePicker.ios.minimumDate).timeIntervalSince1970);
|
||||||
|
}
|
||||||
|
|
||||||
export function setNativeYear(datePicker: datePickerModule.DatePicker, value: number): void {
|
export function setNativeYear(datePicker: datePickerModule.DatePicker, value: number): void {
|
||||||
var comps = NSCalendar.currentCalendar().componentsFromDate(NSCalendarUnit.NSCalendarUnitYear | NSCalendarUnit.NSCalendarUnitMonth | NSCalendarUnit.NSCalendarUnitDay, datePicker.ios.date);
|
var comps = NSCalendar.currentCalendar().componentsFromDate(NSCalendarUnit.NSCalendarUnitYear | NSCalendarUnit.NSCalendarUnitMonth | NSCalendarUnit.NSCalendarUnitDay, datePicker.ios.date);
|
||||||
comps.year = value;
|
comps.year = value;
|
||||||
|
@ -31,6 +31,8 @@ export var test_DummyForCodeSnippet = function () {
|
|||||||
datePicker.year = 1980;
|
datePicker.year = 1980;
|
||||||
datePicker.month = 2;
|
datePicker.month = 2;
|
||||||
datePicker.day = 9;
|
datePicker.day = 9;
|
||||||
|
datePicker.minDate = new Date(1975, 0, 29);
|
||||||
|
datePicker.maxDate = new Date(2045, 4, 12);
|
||||||
// ```
|
// ```
|
||||||
// </snippet>
|
// </snippet>
|
||||||
});
|
});
|
||||||
@ -93,6 +95,26 @@ export var testDayFromLocalToNative = function () {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export var testMaxDateFromLocalToNative = function () {
|
||||||
|
helper.buildUIAndRunTest(_createDatePicker(), function (views: Array<viewModule.View>) {
|
||||||
|
var datePicker = <datePickerModule.DatePicker>views[0];
|
||||||
|
var expectedValue = new Date(1980, 1, 9);
|
||||||
|
datePicker.maxDate = expectedValue;
|
||||||
|
var actualValue = datePickerTestsNative.getNativeMaxDate(datePicker);
|
||||||
|
TKUnit.assert(actualValue.getTime() === expectedValue.getTime(), "Actual: " + actualValue + "; Expected: " + expectedValue);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export var testMinDateFromLocalToNative = function () {
|
||||||
|
helper.buildUIAndRunTest(_createDatePicker(), function (views: Array<viewModule.View>) {
|
||||||
|
var datePicker = <datePickerModule.DatePicker>views[0];
|
||||||
|
var expectedValue = new Date(1980, 1, 9);
|
||||||
|
datePicker.minDate = expectedValue;
|
||||||
|
var actualValue = datePickerTestsNative.getNativeMinDate(datePicker);
|
||||||
|
TKUnit.assert(actualValue.getTime() === expectedValue.getTime(), "Actual: " + actualValue + "; Expected: " + expectedValue);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
export var testYearFromNativeToLocal = function () {
|
export var testYearFromNativeToLocal = function () {
|
||||||
helper.buildUIAndRunTest(_createDatePicker(), function (views: Array<viewModule.View>) {
|
helper.buildUIAndRunTest(_createDatePicker(), function (views: Array<viewModule.View>) {
|
||||||
var datePicker = <datePickerModule.DatePicker>views[0];
|
var datePicker = <datePickerModule.DatePicker>views[0];
|
||||||
@ -122,3 +144,20 @@ export var testDayFromNativeToLocal = function () {
|
|||||||
TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue);
|
TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//export var testWTF = function () {
|
||||||
|
// var picker = new UIDatePicker();
|
||||||
|
// picker.datePickerMode = UIDatePickerMode.UIDatePickerModeDate;
|
||||||
|
// var jsDate = new Date(1980, 1, 9);
|
||||||
|
// var nsDate = NSDate.dateWithTimeIntervalSince1970(jsDate.getTime() / 1000);
|
||||||
|
// console.log("nsDate: " + nsDate);
|
||||||
|
// console.log("nsDate.timeIntervalSince1970: " + nsDate.timeIntervalSince1970);
|
||||||
|
// console.log("------------------");
|
||||||
|
// picker.maximumDate = nsDate;
|
||||||
|
// console.log("------------------");
|
||||||
|
// console.log("(picker.ios.maximumDate === nsDate): " + (picker.maximumDate === nsDate));
|
||||||
|
// console.log("nsDate: " + nsDate);
|
||||||
|
// console.log("nsDate.timeIntervalSince1970: " + nsDate.timeIntervalSince1970);
|
||||||
|
// console.log("picker.ios.maximumDate: " + picker.maximumDate);
|
||||||
|
// console.log("picker.ios.maximumDate.timeIntervalSince1970: " + picker.maximumDate.timeIntervalSince1970);
|
||||||
|
//}
|
@ -7,6 +7,8 @@ export class DatePicker extends view.View implements definition.DatePicker {
|
|||||||
public static yearProperty = new dependencyObservable.Property("year", "DatePicker", new proxy.PropertyMetadata(undefined));
|
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 monthProperty = new dependencyObservable.Property("month", "DatePicker", new proxy.PropertyMetadata(undefined));
|
||||||
public static dayProperty = new dependencyObservable.Property("day", "DatePicker", new proxy.PropertyMetadata(undefined));
|
public static dayProperty = new dependencyObservable.Property("day", "DatePicker", new proxy.PropertyMetadata(undefined));
|
||||||
|
public static maxDateProperty = new dependencyObservable.Property("maxDate", "DatePicker", new proxy.PropertyMetadata(undefined));
|
||||||
|
public static minDateProperty = new dependencyObservable.Property("minDate", "DatePicker", new proxy.PropertyMetadata(undefined));
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
super();
|
super();
|
||||||
@ -32,4 +34,18 @@ export class DatePicker extends view.View implements definition.DatePicker {
|
|||||||
set day(value: number) {
|
set day(value: number) {
|
||||||
this._setValue(DatePicker.dayProperty, value);
|
this._setValue(DatePicker.dayProperty, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get maxDate(): Date {
|
||||||
|
return this._getValue(DatePicker.maxDateProperty);
|
||||||
|
}
|
||||||
|
set maxDate(value: Date) {
|
||||||
|
this._setValue(DatePicker.maxDateProperty, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
get minDate(): Date {
|
||||||
|
return this._getValue(DatePicker.minDateProperty);
|
||||||
|
}
|
||||||
|
set minDate(value: Date) {
|
||||||
|
this._setValue(DatePicker.minDateProperty, value);
|
||||||
|
}
|
||||||
}
|
}
|
@ -32,6 +32,28 @@ function onDayPropertyChanged(data: dependencyObservable.PropertyChangeData) {
|
|||||||
|
|
||||||
(<proxy.PropertyMetadata>common.DatePicker.dayProperty.metadata).onSetNativeValue = onDayPropertyChanged;
|
(<proxy.PropertyMetadata>common.DatePicker.dayProperty.metadata).onSetNativeValue = onDayPropertyChanged;
|
||||||
|
|
||||||
|
function onMaxDatePropertyChanged(data: dependencyObservable.PropertyChangeData) {
|
||||||
|
var picker = <DatePicker>data.object;
|
||||||
|
|
||||||
|
var newValue = (<Date>data.newValue).getTime();
|
||||||
|
if (picker.android && picker.android.getMaxDate() !== newValue) {
|
||||||
|
picker.android.setMaxDate(newValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
(<proxy.PropertyMetadata>common.DatePicker.maxDateProperty.metadata).onSetNativeValue = onMaxDatePropertyChanged;
|
||||||
|
|
||||||
|
function onMinDatePropertyChanged(data: dependencyObservable.PropertyChangeData) {
|
||||||
|
var picker = <DatePicker>data.object;
|
||||||
|
|
||||||
|
var newValue = (<Date>data.newValue).getTime();
|
||||||
|
if (picker.android && picker.android.getMinDate() !== newValue) {
|
||||||
|
picker.android.setMinDate(newValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
(<proxy.PropertyMetadata>common.DatePicker.minDateProperty.metadata).onSetNativeValue = onMinDatePropertyChanged;
|
||||||
|
|
||||||
// merge the exports of the common file with the exports of this file
|
// merge the exports of the common file with the exports of this file
|
||||||
declare var exports;
|
declare var exports;
|
||||||
require("utils/module-merge").merge(common, exports);
|
require("utils/module-merge").merge(common, exports);
|
||||||
|
10
ui/date-picker/date-picker.d.ts
vendored
10
ui/date-picker/date-picker.d.ts
vendored
@ -39,5 +39,15 @@ declare module "ui/date-picker" {
|
|||||||
* Gets or sets the day. The days start from 1.
|
* Gets or sets the day. The days start from 1.
|
||||||
*/
|
*/
|
||||||
day: number;
|
day: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets or sets the max date.
|
||||||
|
*/
|
||||||
|
maxDate: Date;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets or sets the min date.
|
||||||
|
*/
|
||||||
|
minDate: Date;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -38,6 +38,27 @@ function onDayPropertyChanged(data: dependencyObservable.PropertyChangeData) {
|
|||||||
|
|
||||||
(<proxy.PropertyMetadata>common.DatePicker.dayProperty.metadata).onSetNativeValue = onDayPropertyChanged;
|
(<proxy.PropertyMetadata>common.DatePicker.dayProperty.metadata).onSetNativeValue = onDayPropertyChanged;
|
||||||
|
|
||||||
|
function onMaxDatePropertyChanged(data: dependencyObservable.PropertyChangeData) {
|
||||||
|
var picker = <DatePicker>data.object;
|
||||||
|
|
||||||
|
if (picker.ios) {
|
||||||
|
var nsDate = NSDate.dateWithTimeIntervalSince1970((<Date>data.newValue).getTime() / 1000);
|
||||||
|
picker.ios.maximumDate = nsDate;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
(<proxy.PropertyMetadata>common.DatePicker.maxDateProperty.metadata).onSetNativeValue = onMaxDatePropertyChanged;
|
||||||
|
|
||||||
|
function onMinDatePropertyChanged(data: dependencyObservable.PropertyChangeData) {
|
||||||
|
var picker = <DatePicker>data.object;
|
||||||
|
|
||||||
|
if (picker.ios) {
|
||||||
|
picker.ios.minimumDate = NSDate.dateWithTimeIntervalSince1970((<Date>data.newValue).getTime() / 1000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
(<proxy.PropertyMetadata>common.DatePicker.minDateProperty.metadata).onSetNativeValue = onMinDatePropertyChanged;
|
||||||
|
|
||||||
// merge the exports of the common file with the exports of this file
|
// merge the exports of the common file with the exports of this file
|
||||||
declare var exports;
|
declare var exports;
|
||||||
require("utils/module-merge").merge(common, exports);
|
require("utils/module-merge").merge(common, exports);
|
||||||
|
Reference in New Issue
Block a user