mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-11-05 13:26:48 +08:00
Introducing DatePicker date property.
This commit is contained in:
@@ -9,6 +9,7 @@ export class DatePicker extends view.View implements definition.DatePicker {
|
||||
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));
|
||||
public static dateProperty = new dependencyObservable.Property("date", "DatePicker", new proxy.PropertyMetadata(undefined));
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
@@ -48,4 +49,11 @@ export class DatePicker extends view.View implements definition.DatePicker {
|
||||
set minDate(value: Date) {
|
||||
this._setValue(DatePicker.minDateProperty, value);
|
||||
}
|
||||
|
||||
get date(): Date {
|
||||
return this._getValue(DatePicker.dateProperty);
|
||||
}
|
||||
set date(value: Date) {
|
||||
this._setValue(DatePicker.dateProperty, value);
|
||||
}
|
||||
}
|
||||
@@ -39,7 +39,7 @@ function updateNativeDate(picker: DatePicker) {
|
||||
var month = types.isNumber(picker.month) ? (picker.month - 1) : picker.android.getMonth();
|
||||
var day = types.isNumber(picker.day) ? picker.day : picker.android.getDayOfMonth();
|
||||
|
||||
picker.android.updateDate(year, month, day);
|
||||
picker.date = new Date(year, month, day);
|
||||
}
|
||||
|
||||
function onMaxDatePropertyChanged(data: dependencyObservable.PropertyChangeData) {
|
||||
@@ -64,6 +64,19 @@ function onMinDatePropertyChanged(data: dependencyObservable.PropertyChangeData)
|
||||
|
||||
(<proxy.PropertyMetadata>common.DatePicker.minDateProperty.metadata).onSetNativeValue = onMinDatePropertyChanged;
|
||||
|
||||
function onDatePropertyChanged(data: dependencyObservable.PropertyChangeData) {
|
||||
var picker = <DatePicker>data.object;
|
||||
|
||||
var newValue = <Date>data.newValue;
|
||||
if (picker.android && (picker.android.getDayOfMonth() !== newValue.getDay()
|
||||
|| picker.android.getMonth() !== newValue.getMonth()
|
||||
|| picker.android.getYear() !== newValue.getFullYear())) {
|
||||
picker.android.updateDate(newValue.getFullYear(), newValue.getMonth(), newValue.getDate());
|
||||
}
|
||||
}
|
||||
|
||||
(<proxy.PropertyMetadata>common.DatePicker.dateProperty.metadata).onSetNativeValue = onDatePropertyChanged;
|
||||
|
||||
global.moduleMerge(common, exports);
|
||||
|
||||
export class DatePicker extends common.DatePicker {
|
||||
@@ -90,14 +103,17 @@ export class DatePicker extends common.DatePicker {
|
||||
|
||||
if (year !== this.owner.year) {
|
||||
this.owner._onPropertyChangedFromNative(common.DatePicker.yearProperty, year);
|
||||
this.owner._onPropertyChangedFromNative(common.DatePicker.dateProperty, new Date(year, this.owner.month - 1, this.owner.day));
|
||||
}
|
||||
|
||||
if ((month + 1) !== this.owner.month) {
|
||||
this.owner._onPropertyChangedFromNative(common.DatePicker.monthProperty, month + 1);
|
||||
this.owner._onPropertyChangedFromNative(common.DatePicker.dateProperty, new Date(this.owner.year, month, this.owner.day));
|
||||
}
|
||||
|
||||
if (day !== this.owner.day) {
|
||||
this.owner._onPropertyChangedFromNative(common.DatePicker.dayProperty, day);
|
||||
this.owner._onPropertyChangedFromNative(common.DatePicker.dateProperty, new Date(this.owner.year, this.owner.month - 1, day));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
6
ui/date-picker/date-picker.d.ts
vendored
6
ui/date-picker/date-picker.d.ts
vendored
@@ -12,6 +12,7 @@ declare module "ui/date-picker" {
|
||||
public static yearProperty: dependencyObservable.Property;
|
||||
public static monthProperty: dependencyObservable.Property;
|
||||
public static dayProperty: dependencyObservable.Property;
|
||||
public static dateProperty: dependencyObservable.Property;
|
||||
|
||||
constructor();
|
||||
|
||||
@@ -39,6 +40,11 @@ declare module "ui/date-picker" {
|
||||
* Gets or sets the day. The days start from 1.
|
||||
*/
|
||||
day: number;
|
||||
|
||||
/**
|
||||
* Gets or sets the entire date.
|
||||
*/
|
||||
date: Date;
|
||||
|
||||
/**
|
||||
* Gets or sets the max date.
|
||||
|
||||
@@ -10,7 +10,7 @@ function onYearPropertyChanged(data: dependencyObservable.PropertyChangeData) {
|
||||
if (picker.ios) {
|
||||
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);
|
||||
picker.date = new Date(comps.year, comps.month - 1, comps.day);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ function onMonthPropertyChanged(data: dependencyObservable.PropertyChangeData) {
|
||||
if (picker.ios) {
|
||||
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);
|
||||
picker.date = new Date(comps.year, comps.month - 1, comps.day);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ function onDayPropertyChanged(data: dependencyObservable.PropertyChangeData) {
|
||||
if (picker.ios) {
|
||||
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);
|
||||
picker.date = new Date(comps.year, comps.month - 1, comps.day);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -61,6 +61,21 @@ function onMinDatePropertyChanged(data: dependencyObservable.PropertyChangeData)
|
||||
|
||||
(<proxy.PropertyMetadata>common.DatePicker.minDateProperty.metadata).onSetNativeValue = onMinDatePropertyChanged;
|
||||
|
||||
function onDatePropertyChanged(data: dependencyObservable.PropertyChangeData) {
|
||||
var picker = <DatePicker>data.object;
|
||||
|
||||
if (picker.ios) {
|
||||
var comps = NSCalendar.currentCalendar().componentsFromDate(NSCalendarUnit.NSCalendarUnitYear | NSCalendarUnit.NSCalendarUnitMonth | NSCalendarUnit.NSCalendarUnitDay, picker.ios.date);
|
||||
let newDate = data.newValue;
|
||||
comps.year = newDate.getFullYear();
|
||||
comps.month = newDate.getMonth() + 1;
|
||||
comps.day = newDate.getDate();
|
||||
picker.ios.setDateAnimated(NSCalendar.currentCalendar().dateFromComponents(comps), false);
|
||||
}
|
||||
}
|
||||
|
||||
(<proxy.PropertyMetadata>common.DatePicker.dateProperty.metadata).onSetNativeValue = onDatePropertyChanged;
|
||||
|
||||
global.moduleMerge(common, exports);
|
||||
|
||||
export class DatePicker extends common.DatePicker {
|
||||
@@ -100,16 +115,24 @@ class UIDatePickerChangeHandlerImpl extends NSObject {
|
||||
return;
|
||||
}
|
||||
|
||||
let dateChanged = false;
|
||||
if (comps.year !== owner.year) {
|
||||
owner._onPropertyChangedFromNative(common.DatePicker.yearProperty, comps.year);
|
||||
dateChanged = true;
|
||||
}
|
||||
|
||||
if (comps.month !== owner.month) {
|
||||
owner._onPropertyChangedFromNative(common.DatePicker.monthProperty, comps.month);
|
||||
dateChanged = true;
|
||||
}
|
||||
|
||||
if (comps.day !== owner.day) {
|
||||
owner._onPropertyChangedFromNative(common.DatePicker.dayProperty, comps.day);
|
||||
dateChanged = true;
|
||||
}
|
||||
|
||||
if (dateChanged) {
|
||||
owner._onPropertyChangedFromNative(common.DatePicker.dateProperty, new Date(comps.year, comps.month - 1, comps.day));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user