migrated knockout asset to bower
[openemr.git] / public / assets / knockout-2-2-1 / src / binding / defaultBindings / selectedOptions.js
blobed5d85adea13d7a7d1feaabf2bf8c6601980ce25
1 ko.bindingHandlers['selectedOptions'] = {
2     'init': function (element, valueAccessor, allBindingsAccessor) {
3         ko.utils.registerEventHandler(element, "change", function () {
4             var value = valueAccessor(), valueToWrite = [];
5             ko.utils.arrayForEach(element.getElementsByTagName("option"), function(node) {
6                 if (node.selected)
7                     valueToWrite.push(ko.selectExtensions.readValue(node));
8             });
9             ko.expressionRewriting.writeValueToProperty(value, allBindingsAccessor, 'value', valueToWrite);
10         });
11     },
12     'update': function (element, valueAccessor) {
13         if (ko.utils.tagNameLower(element) != "select")
14             throw new Error("values binding applies only to SELECT elements");
16         var newValue = ko.utils.unwrapObservable(valueAccessor());
17         if (newValue && typeof newValue.length == "number") {
18             ko.utils.arrayForEach(element.getElementsByTagName("option"), function(node) {
19                 var isSelected = ko.utils.arrayIndexOf(newValue, ko.selectExtensions.readValue(node)) >= 0;
20                 ko.utils.setOptionNodeSelectionState(node, isSelected);
21             });
22         }
23     }