mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-08-14 18:12:09 +08:00
fix(ios): preferredDatePickerStyle property (#8899)
This commit is contained in:
@ -13,6 +13,7 @@ export class DatePickerBase extends View implements DatePickerDefinition {
|
|||||||
public maxDate: Date;
|
public maxDate: Date;
|
||||||
public minDate: Date;
|
public minDate: Date;
|
||||||
public date: Date;
|
public date: Date;
|
||||||
|
public iosPreferredDatePickerStyle: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
DatePickerBase.prototype.recycleNativeView = 'auto';
|
DatePickerBase.prototype.recycleNativeView = 'auto';
|
||||||
@ -60,3 +61,10 @@ export const dateProperty = new Property<DatePickerBase, Date>({
|
|||||||
valueConverter: (v) => new Date(v),
|
valueConverter: (v) => new Date(v),
|
||||||
});
|
});
|
||||||
dateProperty.register(DatePickerBase);
|
dateProperty.register(DatePickerBase);
|
||||||
|
|
||||||
|
export const iosPreferredDatePickerStyleProperty = new Property<DatePickerBase, number>({
|
||||||
|
name: 'iosPreferredDatePickerStyle',
|
||||||
|
defaultValue: 0,
|
||||||
|
valueConverter: (v) => parseInt(v),
|
||||||
|
});
|
||||||
|
iosPreferredDatePickerStyleProperty.register(DatePickerBase);
|
11
packages/core/ui/date-picker/index.d.ts
vendored
11
packages/core/ui/date-picker/index.d.ts
vendored
@ -7,6 +7,7 @@ export const dayProperty: Property<DatePicker, number>;
|
|||||||
export const dateProperty: Property<DatePicker, Date>;
|
export const dateProperty: Property<DatePicker, Date>;
|
||||||
export const maxDate: Property<DatePicker, Date>;
|
export const maxDate: Property<DatePicker, Date>;
|
||||||
export const minDate: Property<DatePicker, Date>;
|
export const minDate: Property<DatePicker, Date>;
|
||||||
|
export const iosPreferredDatePickerStyleProperty: Property<DatePicker, number>;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents an date picker.
|
* Represents an date picker.
|
||||||
@ -51,4 +52,14 @@ export class DatePicker extends View {
|
|||||||
* Gets or sets the min date.
|
* Gets or sets the min date.
|
||||||
*/
|
*/
|
||||||
minDate: Date;
|
minDate: Date;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets or set the UIDatePickerStyle of the date picker in iOS 13.4+. Defaults to 0.
|
||||||
|
* Valid values are numbers:
|
||||||
|
* - 0: automatic (system picks the concrete style based on the current platform and date picker mode)
|
||||||
|
* - 1: wheels (the date picker displays as a wheel picker)
|
||||||
|
* - 2: compact (the date picker displays as a label that when tapped displays a calendar-style editor)
|
||||||
|
* - 3: inline (the date pickers displays as an inline, editable field)
|
||||||
|
*/
|
||||||
|
iosPreferredDatePickerStyle: number;
|
||||||
}
|
}
|
||||||
|
@ -5,9 +5,8 @@ import { Device } from '../../platform';
|
|||||||
|
|
||||||
export * from './date-picker-common';
|
export * from './date-picker-common';
|
||||||
|
|
||||||
const SUPPORT_DATE_PICKER_STYLE = parseFloat(Device.os) >= 14.0;
|
const SUPPORT_DATE_PICKER_STYLE = parseFloat(Device.osVersion) >= 13.4;
|
||||||
const SUPPORT_TEXT_COLOR = parseFloat(Device.os) < 14.0;
|
const SUPPORT_TEXT_COLOR = parseFloat(Device.osVersion) < 14.0;
|
||||||
const DEFAULT_DATE_PICKER_STYLE = 1;
|
|
||||||
|
|
||||||
export class DatePicker extends DatePickerBase {
|
export class DatePicker extends DatePickerBase {
|
||||||
private _changeHandler: NSObject;
|
private _changeHandler: NSObject;
|
||||||
@ -17,7 +16,7 @@ export class DatePicker extends DatePickerBase {
|
|||||||
const picker = UIDatePicker.new();
|
const picker = UIDatePicker.new();
|
||||||
picker.datePickerMode = UIDatePickerMode.Date;
|
picker.datePickerMode = UIDatePickerMode.Date;
|
||||||
if (SUPPORT_DATE_PICKER_STYLE) {
|
if (SUPPORT_DATE_PICKER_STYLE) {
|
||||||
picker.preferredDatePickerStyle = DEFAULT_DATE_PICKER_STYLE;
|
picker.preferredDatePickerStyle = this.iosPreferredDatePickerStyle;
|
||||||
}
|
}
|
||||||
return picker;
|
return picker;
|
||||||
}
|
}
|
||||||
|
12
packages/core/ui/time-picker/index.d.ts
vendored
12
packages/core/ui/time-picker/index.d.ts
vendored
@ -54,6 +54,16 @@ export class TimePicker extends View {
|
|||||||
* Gets or sets the minute interval.
|
* Gets or sets the minute interval.
|
||||||
*/
|
*/
|
||||||
minuteInterval: number;
|
minuteInterval: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets or set the UIDatePickerStyle of the date picker in iOS 13.4+. Defaults to 0.
|
||||||
|
* Valid values are numbers:
|
||||||
|
* - 0: automatic (system picks the concrete style based on the current platform and date picker mode)
|
||||||
|
* - 1: wheels (the date picker displays as a wheel picker)
|
||||||
|
* - 2: compact (the date picker displays as a label that when tapped displays a calendar-style editor)
|
||||||
|
* - 3: inline (the date pickers displays as an inline, editable field)
|
||||||
|
*/
|
||||||
|
iosPreferredDatePickerStyle: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const hourProperty: Property<TimePicker, number>;
|
export const hourProperty: Property<TimePicker, number>;
|
||||||
@ -66,3 +76,5 @@ export const minMinuteProperty: Property<TimePicker, number>;
|
|||||||
|
|
||||||
export const timeProperty: Property<TimePicker, Date>;
|
export const timeProperty: Property<TimePicker, Date>;
|
||||||
export const minuteIntervalProperty: Property<TimePicker, number>;
|
export const minuteIntervalProperty: Property<TimePicker, number>;
|
||||||
|
|
||||||
|
export const iosPreferredDatePickerStyleProperty: Property<TimePicker, number>;
|
@ -5,9 +5,8 @@ import { Device } from '../../platform';
|
|||||||
|
|
||||||
export * from './time-picker-common';
|
export * from './time-picker-common';
|
||||||
|
|
||||||
const SUPPORT_DATE_PICKER_STYLE = parseFloat(Device.os) >= 14.0;
|
const SUPPORT_DATE_PICKER_STYLE = parseFloat(Device.osVersion) >= 13.4;
|
||||||
const SUPPORT_TEXT_COLOR = parseFloat(Device.os) < 14.0;
|
const SUPPORT_TEXT_COLOR = parseFloat(Device.osVersion) < 14.0;
|
||||||
const DEFAULT_DATE_PICKER_STYLE = 1;
|
|
||||||
|
|
||||||
function getDate(hour: number, minute: number): Date {
|
function getDate(hour: number, minute: number): Date {
|
||||||
let components = NSDateComponents.alloc().init();
|
let components = NSDateComponents.alloc().init();
|
||||||
@ -36,7 +35,7 @@ export class TimePicker extends TimePickerBase {
|
|||||||
const picker = UIDatePicker.new();
|
const picker = UIDatePicker.new();
|
||||||
picker.datePickerMode = UIDatePickerMode.Time;
|
picker.datePickerMode = UIDatePickerMode.Time;
|
||||||
if (SUPPORT_DATE_PICKER_STYLE) {
|
if (SUPPORT_DATE_PICKER_STYLE) {
|
||||||
picker.preferredDatePickerStyle = DEFAULT_DATE_PICKER_STYLE;
|
picker.preferredDatePickerStyle = this.iosPreferredDatePickerStyle;
|
||||||
}
|
}
|
||||||
return picker;
|
return picker;
|
||||||
}
|
}
|
||||||
|
@ -98,6 +98,7 @@ export abstract class TimePickerBase extends View implements TimePickerDefinitio
|
|||||||
public maxHour: number;
|
public maxHour: number;
|
||||||
public minMinute: number;
|
public minMinute: number;
|
||||||
public maxMinute: number;
|
public maxMinute: number;
|
||||||
|
public iosPreferredDatePickerStyle: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
TimePickerBase.prototype.recycleNativeView = 'auto';
|
TimePickerBase.prototype.recycleNativeView = 'auto';
|
||||||
@ -204,3 +205,10 @@ export const timeProperty = new Property<TimePickerBase, Date>({
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
timeProperty.register(TimePickerBase);
|
timeProperty.register(TimePickerBase);
|
||||||
|
|
||||||
|
export const iosPreferredDatePickerStyleProperty = new Property<TimePickerBase, number>({
|
||||||
|
name: 'iosPreferredDatePickerStyle',
|
||||||
|
defaultValue: 0,
|
||||||
|
valueConverter: (v) => parseInt(v),
|
||||||
|
});
|
||||||
|
iosPreferredDatePickerStyleProperty.register(TimePickerBase);
|
||||||
|
Reference in New Issue
Block a user