Sha256: 0fbe6627b74e64eee9906b3ee0f6c979038a4c03a0f6ed53f3b6ae546bdfbbc7

Contents?: true

Size: 1.46 KB

Versions: 3

Compression:

Stored size: 1.46 KB

Contents

(function(ko, $) {
  "use strict";

  ko.bindingHandlers.dropdown = {
    init: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
      var $element        = $(element),
          templateName    = ko.unwrap(valueAccessor()),
          dropdownContext = allBindingsAccessor().dropdownContext || bindingContext,
          options,
          defaultOptions,
          contentCallback;

      defaultOptions = {
        allowParallelUse: false,
        appendTo: 'afterElement',
        popoverClass: '',
        position: 'center bottom'
      };
      
      options = $.extend({}, defaultOptions, allBindingsAccessor().attacheOptions);
      options.popoverClass = options.popoverClass + ' dropdown';

      contentCallback = function(anchor, popover) {
        ko.renderTemplate(templateName, dropdownContext, {}, popover.get(0));
      };

      $element.attache(options);
      $element.attache().addCallback('afterCreate', contentCallback);

      $element.on('click', function(ev) {
        if ($element.attache().isActive()) {
          $element.attache().hide();
        } else {
          $element.attache().show();
          $('body').one('click', function() { $element.attache().hide(); } );
        }

        ev.stopPropagation();
      });

      ko.utils.domNodeDisposal.addDisposeCallback(element, function() {
        try {
          $(element).attache().destroy();
        } catch (e) {
          
        }
      });
    }
  };

})(ko, $);

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
kea-rails-2.0.0.pre.alpha14 app/assets/javascripts/kea/bindings/dropdown.js
kea-rails-2.0.0.pre.alpha13 app/assets/javascripts/kea/bindings/dropdown.js
kea-rails-2.0.0.pre.alpha12 app/assets/javascripts/kea/bindings/dropdown.js