Skip to content

Instantly share code, notes, and snippets.

@GioviQ
Last active February 13, 2018 20:01
Show Gist options
  • Save GioviQ/78d0ddef7d59aff0da0fd51cd881ea96 to your computer and use it in GitHub Desktop.
Save GioviQ/78d0ddef7d59aff0da0fd51cd881ea96 to your computer and use it in GitHub Desktop.
knockout.js datetimepicker bindingHandler
ko.bindingHandlers.datetimepicker = {
init: function (element, valueAccessor, allBindingsAccessor) {
/*! version : 4.17.45
=========================================================
bootstrap-datetimejs
https://github.com/Eonasdan/bootstrap-datetimepicker
=========================================================
*/
$(element).datetimepicker({
icons: {
time: "fa fa-clock-o",
date: "fa fa-calendar",
up: "fa fa-arrow-up",
down: "fa fa-arrow-down"
},
useCurrent: false,
locale: lang
})
ko.utils.registerEventHandler(element, "dp.change", function (event) {
var value = valueAccessor();
if (ko.isObservable(value)) {
if (event.date && !(event.date instanceof Date)) {
if (!event.date._isUTC)
event.date = event.date.add(event.date.utcOffset(), 'm');
value(event.date.toDate());
} else if (event.date == null || event.date == false) {
value(null);
}
}
});
var value = ko.utils.unwrapObservable(valueAccessor());
if (value) {
value = moment(value).isValid() ? moment.utc(value) : moment(value, "L LT");
}
$(element).data("DateTimePicker").date(value);
ko.utils.domNodeDisposal.addDisposeCallback(element, function () {
var picker = $(element).data("DateTimePicker");
if (picker) {
picker.destroy();
}
});
},
update: function (element, valueAccessor, allBindings, viewModel, bindingContext) {
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment