43 lines
1.2 KiB
JavaScript
43 lines
1.2 KiB
JavaScript
import {
|
|
deserializeDate,
|
|
deserializeDateTime,
|
|
parseDate,
|
|
parseDateTime,
|
|
} from "@web/core/l10n/dates";
|
|
import PublicWidget from "@web/legacy/js/public/public_widget";
|
|
|
|
export const DateTimePickerWidget = PublicWidget.Widget.extend({
|
|
selector: "[data-widget='datetime-picker']",
|
|
disabledInEditableMode: true,
|
|
|
|
/**
|
|
* @override
|
|
*/
|
|
start() {
|
|
this._super(...arguments);
|
|
const { widgetType, minDate, maxDate } = this.el.dataset;
|
|
const type = widgetType || "datetime";
|
|
const { value } = this.el;
|
|
const [parse, deserialize] =
|
|
type === "date" ? [parseDate, deserializeDate] : [parseDateTime, deserializeDateTime];
|
|
this.disableDateTimePicker = this.call("datetime_picker", "create", {
|
|
target: this.el,
|
|
pickerProps: {
|
|
type,
|
|
minDate: minDate && deserialize(minDate),
|
|
maxDate: maxDate && deserialize(maxDate),
|
|
value: parse(value),
|
|
},
|
|
}).enable();
|
|
},
|
|
/**
|
|
* @override
|
|
*/
|
|
destroy() {
|
|
this.disableDateTimePicker();
|
|
return this._super(...arguments);
|
|
},
|
|
});
|
|
|
|
PublicWidget.registry.DateTimePickerWidget = DateTimePickerWidget;
|