diff options
Diffstat (limited to 'js/vendor/angular-ui/modules/directives/select2/select2.js')
-rw-r--r-- | js/vendor/angular-ui/modules/directives/select2/select2.js | 124 |
1 files changed, 0 insertions, 124 deletions
diff --git a/js/vendor/angular-ui/modules/directives/select2/select2.js b/js/vendor/angular-ui/modules/directives/select2/select2.js deleted file mode 100644 index c0ed5c8ef..000000000 --- a/js/vendor/angular-ui/modules/directives/select2/select2.js +++ /dev/null @@ -1,124 +0,0 @@ -/** - * Enhanced Select2 Dropmenus - * - * @AJAX Mode - When in this mode, your value will be an object (or array of objects) of the data used by Select2 - * This change is so that you do not have to do an additional query yourself on top of Select2's own query - * @params [options] {object} The configuration options passed to $.fn.select2(). Refer to the documentation - */ -angular.module('ui.directives').directive('uiSelect2', ['ui.config', '$timeout', function (uiConfig, $timeout) { - var options = {}; - if (uiConfig.select2) { - angular.extend(options, uiConfig.select2); - } - return { - require: '?ngModel', - compile: function (tElm, tAttrs) { - var watch, - repeatOption, - repeatAttr, - isSelect = tElm.is('select'), - isMultiple = (tAttrs.multiple !== undefined); - - // Enable watching of the options dataset if in use - if (tElm.is('select')) { - repeatOption = tElm.find('option[ng-repeat], option[data-ng-repeat]'); - - if (repeatOption.length) { - repeatAttr = repeatOption.attr('ng-repeat') || repeatOption.attr('data-ng-repeat'); - watch = jQuery.trim(repeatAttr.split('|')[0]).split(' ').pop(); - } - } - - return function (scope, elm, attrs, controller) { - // instance-specific options - var opts = angular.extend({}, options, scope.$eval(attrs.uiSelect2)); - - if (isSelect) { - // Use <select multiple> instead - delete opts.multiple; - delete opts.initSelection; - } else if (isMultiple) { - opts.multiple = true; - } - - if (controller) { - // Watch the model for programmatic changes - controller.$render = function () { - if (isSelect) { - elm.select2('val', controller.$modelValue); - } else { - if (isMultiple) { - if (!controller.$modelValue) { - elm.select2('data', []); - } else if (angular.isArray(controller.$modelValue)) { - elm.select2('data', controller.$modelValue); - } else { - elm.select2('val', controller.$modelValue); - } - } else { - if (angular.isObject(controller.$modelValue)) { - elm.select2('data', controller.$modelValue); - } else { - elm.select2('val', controller.$modelValue); - } - } - } - }; - - // Watch the options dataset for changes - if (watch) { - scope.$watch(watch, function (newVal, oldVal, scope) { - if (!newVal) return; - // Delayed so that the options have time to be rendered - $timeout(function () { - elm.select2('val', controller.$viewValue); - // Refresh angular to remove the superfluous option - elm.trigger('change'); - }); - }); - } - - if (!isSelect) { - // Set the view and model value and update the angular template manually for the ajax/multiple select2. - elm.bind("change", function () { - scope.$apply(function () { - controller.$setViewValue(elm.select2('data')); - }); - }); - - if (opts.initSelection) { - var initSelection = opts.initSelection; - opts.initSelection = function (element, callback) { - initSelection(element, function (value) { - controller.$setViewValue(value); - callback(value); - }); - }; - } - } - } - - attrs.$observe('disabled', function (value) { - elm.select2(value && 'disable' || 'enable'); - }); - - if (attrs.ngMultiple) { - scope.$watch(attrs.ngMultiple, function(newVal) { - elm.select2(opts); - }); - } - - // Set initial value since Angular doesn't - elm.val(scope.$eval(attrs.ngModel)); - - // Initialize the plugin late so that the injected DOM does not disrupt the template compiler - $timeout(function () { - elm.select2(opts); - // Not sure if I should just check for !isSelect OR if I should check for 'tags' key - if (!opts.initSelection && !isSelect) - controller.$setViewValue(elm.select2('data')); - }); - }; - } - }; -}]); |