mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-09-02 14:07:04 +03:00
22 lines
919 B
JavaScript
22 lines
919 B
JavaScript
var classesWrittenByBindingKey = '__ko__cssValue',
|
|
toggleClasses = (node, classNames, force) =>
|
|
classNames && classNames.split(/\s+/).forEach(className =>
|
|
node.classList.toggle(className, force)
|
|
);
|
|
|
|
ko.bindingHandlers['css'] = {
|
|
'update': (element, valueAccessor) => {
|
|
var value = ko.utils.unwrapObservable(valueAccessor());
|
|
if (typeof value == "object") {
|
|
ko.utils.objectForEach(value, (className, shouldHaveClass) => {
|
|
shouldHaveClass = ko.utils.unwrapObservable(shouldHaveClass);
|
|
toggleClasses(element, className, !!shouldHaveClass);
|
|
});
|
|
} else {
|
|
value = ko.utils.stringTrim(value);
|
|
toggleClasses(element, element[classesWrittenByBindingKey], false);
|
|
element[classesWrittenByBindingKey] = value;
|
|
toggleClasses(element, value, true);
|
|
}
|
|
}
|
|
};
|