mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-08-15 19:26:42 +08:00
72 lines
2.1 KiB
TypeScript
72 lines
2.1 KiB
TypeScript
import { DatePicker as DatePickerDefinition } from ".";
|
|
import { View, Property, CSSType } from "../core/view";
|
|
|
|
export * from "../core/view";
|
|
|
|
const defaultDate = new Date();
|
|
const dateComparer = (x: Date, y: Date): boolean => (x <= y && x >= y);
|
|
|
|
@CSSType("DatePicker")
|
|
export class DatePickerBase extends View implements DatePickerDefinition {
|
|
public year: number;
|
|
public month: number;
|
|
public day: number;
|
|
public maxDate: Date;
|
|
public minDate: Date;
|
|
public date: Date;
|
|
public iosPreferredDatePickerStyle: number;
|
|
}
|
|
|
|
DatePickerBase.prototype.recycleNativeView = "auto";
|
|
|
|
export const yearProperty = new Property<DatePickerBase, number>({
|
|
name: "year",
|
|
defaultValue: defaultDate.getFullYear(),
|
|
valueConverter: v => parseInt(v),
|
|
});
|
|
yearProperty.register(DatePickerBase);
|
|
|
|
export const monthProperty = new Property<DatePickerBase, number>({
|
|
name: "month",
|
|
defaultValue: defaultDate.getMonth() + 1,
|
|
valueConverter: v => parseInt(v),
|
|
});
|
|
monthProperty.register(DatePickerBase);
|
|
|
|
export const dayProperty = new Property<DatePickerBase, number>({
|
|
name: "day",
|
|
defaultValue: defaultDate.getDate(),
|
|
valueConverter: v => parseInt(v),
|
|
});
|
|
dayProperty.register(DatePickerBase);
|
|
|
|
// TODO: Make CoercibleProperties
|
|
export const maxDateProperty = new Property<DatePickerBase, Date>({
|
|
name: "maxDate",
|
|
equalityComparer: dateComparer,
|
|
valueConverter: v => new Date(v),
|
|
});
|
|
maxDateProperty.register(DatePickerBase);
|
|
|
|
export const minDateProperty = new Property<DatePickerBase, Date>({
|
|
name: "minDate",
|
|
equalityComparer: dateComparer,
|
|
valueConverter: v => new Date(v),
|
|
});
|
|
minDateProperty.register(DatePickerBase);
|
|
|
|
export const dateProperty = new Property<DatePickerBase, Date>({
|
|
name: "date",
|
|
defaultValue: defaultDate,
|
|
equalityComparer: dateComparer,
|
|
valueConverter: v => new Date(v),
|
|
});
|
|
dateProperty.register(DatePickerBase);
|
|
|
|
export const iosPreferredDatePickerStyleProperty = new Property<DatePickerBase, number>({
|
|
name: 'iosPreferredDatePickerStyle',
|
|
defaultValue: 0,
|
|
valueConverter: (v) => parseInt(v),
|
|
});
|
|
iosPreferredDatePickerStyleProperty.register(DatePickerBase);
|