diff options
Diffstat (limited to 'core/js')
-rw-r--r-- | core/js/multiselect.js | 52 | ||||
-rw-r--r-- | core/js/oc-dialogs.js | 14 |
2 files changed, 43 insertions, 23 deletions
diff --git a/core/js/multiselect.js b/core/js/multiselect.js index 71cf3e10a69..bdf420a2f7f 100644 --- a/core/js/multiselect.js +++ b/core/js/multiselect.js @@ -32,7 +32,7 @@ 'onuncheck':false, 'minWidth': 'default;' }; - var slideDuration = 200; + var slideDuration = 0; $(this).attr('data-msid', multiSelectId); $.extend(settings,options); $.each(this.children(),function(i,option) { @@ -75,6 +75,26 @@ var self = this; self.menuDirection = 'down'; + + function closeDropDown() { + if(!button.parent().data('preventHide')) { + // How can I save the effect in a var? + if(self.menuDirection === 'down') { + button.parent().children('ul').slideUp(slideDuration,function() { + button.parent().children('ul').remove(); + button.removeClass('active down'); + $(self).trigger($.Event('dropdownclosed', settings)); + }); + } else { + button.parent().children('ul').fadeOut(slideDuration,function() { + button.parent().children('ul').remove(); + button.removeClass('active up'); + $(self).trigger($.Event('dropdownclosed', settings)); + }); + } + } + } + button.click(function(event){ var button=$(this); @@ -83,21 +103,20 @@ button.parent().children('ul').slideUp(slideDuration,function() { button.parent().children('ul').remove(); button.removeClass('active down'); + $(self).trigger($.Event('dropdownclosed', settings)); }); } else { button.parent().children('ul').fadeOut(slideDuration,function() { button.parent().children('ul').remove(); button.removeClass('active up'); + $(self).trigger($.Event('dropdownclosed', settings)); }); } return; } + // tell other lists to shut themselves var lists=$('ul.multiselectoptions'); - lists.slideUp(slideDuration,function(){ - lists.remove(); - $('div.multiselect').removeClass('active'); - button.addClass('active'); - }); + lists.trigger($.Event('shut')); button.addClass('active'); event.stopPropagation(); var options=$(this).parent().next().children(); @@ -309,29 +328,16 @@ list.detach().insertBefore($(this)); list.addClass('up'); button.addClass('up'); - list.fadeIn(); + list.show(); self.menuDirection = 'up'; } list.click(function(event) { event.stopPropagation(); }); + list.one('shut', closeDropDown); }); - $(window).click(function() { - if(!button.parent().data('preventHide')) { - // How can I save the effect in a var? - if(self.menuDirection === 'down') { - button.parent().children('ul').slideUp(slideDuration,function() { - button.parent().children('ul').remove(); - button.removeClass('active down'); - }); - } else { - button.parent().children('ul').fadeOut(slideDuration,function() { - button.parent().children('ul').remove(); - button.removeClass('active up'); - }); - } - } - }); + + $(window).click(closeDropDown); return span; }; diff --git a/core/js/oc-dialogs.js b/core/js/oc-dialogs.js index b77063a9eae..75c8ef9020e 100644 --- a/core/js/oc-dialogs.js +++ b/core/js/oc-dialogs.js @@ -218,6 +218,13 @@ var OCdialogs = { self.$filePicker = null; } }); + + // We can access primary class only from oc-dialog. + // Hence this is one of the approach to get the choose button. + var getOcDialog = self.$filePicker.closest('.oc-dialog'); + var buttonEnableDisable = getOcDialog.find('.primary'); + buttonEnableDisable.prop("disabled", "true"); + if (!OC.Util.hasSVGSupport()) { OC.Util.replaceSVG(self.$filePicker.parent()); } @@ -812,18 +819,25 @@ var OCdialogs = { var self = event.data; var dir = $(event.target).data('dir'); self._fillFilePicker(dir); + var getOcDialog = this.closest('.oc-dialog'); + var buttonEnableDisable = $('.primary', getOcDialog); + buttonEnableDisable.prop("disabled", true); }, /** * handle clicks made in the filepicker */ _handlePickerClick:function(event, $element) { + var getOcDialog = this.$filePicker.closest('.oc-dialog'); + var buttonEnableDisable = getOcDialog.find('.primary'); if ($element.data('type') === 'file') { if (this.$filePicker.data('multiselect') !== true || !event.ctrlKey) { this.$filelist.find('.filepicker_element_selected').removeClass('filepicker_element_selected'); } $element.toggleClass('filepicker_element_selected'); + buttonEnableDisable.prop("disabled", false); } else if ( $element.data('type') === 'dir' ) { this._fillFilePicker(this.$filePicker.data('path') + '/' + $element.data('entryname')); + buttonEnableDisable.prop("disabled", true); } } }; |