From 8f833877eebd93f1c938833dd28255c63037588f Mon Sep 17 00:00:00 2001 From: Bernhard Posselt Date: Fri, 23 May 2014 01:11:53 +0200 Subject: fix slideup --- js/directive/NewsForwardClick.js | 19 ---------- js/directive/NewsReadFile.js | 25 ++++++++------ js/directive/NewsSlideUp.js | 75 ++++++++++++++++++++++++++++++++++++++++ js/directive/NewsTriggerClick.js | 19 ++++++++++ 4 files changed, 108 insertions(+), 30 deletions(-) delete mode 100644 js/directive/NewsForwardClick.js create mode 100644 js/directive/NewsSlideUp.js create mode 100644 js/directive/NewsTriggerClick.js (limited to 'js/directive') diff --git a/js/directive/NewsForwardClick.js b/js/directive/NewsForwardClick.js deleted file mode 100644 index d5c43e442..000000000 --- a/js/directive/NewsForwardClick.js +++ /dev/null @@ -1,19 +0,0 @@ -/** - * ownCloud - News - * - * This file is licensed under the Affero General Public License version 3 or - * later. See the COPYING file. - * - * @author Bernhard Posselt - * @copyright Bernhard Posselt 2014 - */ -app.directive('newsTriggerClick', () => { - 'use strict'; - - return (scope, elm, attr) => { - elm.click(() => { - $(attr.newsTriggerClick).trigger('click'); - }); - }; - -}); \ No newline at end of file diff --git a/js/directive/NewsReadFile.js b/js/directive/NewsReadFile.js index d3ed5b80e..89ed0adfc 100644 --- a/js/directive/NewsReadFile.js +++ b/js/directive/NewsReadFile.js @@ -10,19 +10,22 @@ app.directive('newsReadFile', () => { 'use strict'; - return (scope, elm, attr) => { + return (scope, elem, attr) => { - let file = elm[0].files[0]; - let reader = new FileReader(); + elem.change(() => { - reader.onload = (event) => { - elm[0].value = 0; - scope.$fileContent = event.target.result; - scope.$apply(attr.newsReadFile); // FIXME: is there a more flexible - // solution where we dont have to - // bind the file to scope? - }; + let file = elem[0].files[0]; + let reader = new FileReader(); - reader.reasAsText(file); + reader.onload = (event) => { + elem[0].value = 0; + // FIXME: is there a more flexible solution where we dont have + // to bind the file to scope? + scope.$fileContent = event.target.result; + scope.$apply(attr.newsReadFile); + }; + + reader.readAsText(file); + }); }; }); \ No newline at end of file diff --git a/js/directive/NewsSlideUp.js b/js/directive/NewsSlideUp.js new file mode 100644 index 000000000..437a119e7 --- /dev/null +++ b/js/directive/NewsSlideUp.js @@ -0,0 +1,75 @@ +/** + * ownCloud - News + * + * This file is licensed under the Affero General Public License version 3 or + * later. See the COPYING file. + * + * @author Bernhard Posselt + * @copyright Bernhard Posselt 2014 + */ +app.directive('newsSlideUp', ($rootScope, $document) => { + 'use strict'; + + return (scope, elem, attr) => { + // defaults + let slideArea = elem; + let cssClass = false; + + let options = scope.$eval(attr.newsSlideUp); + + if (options) { + if (options.selector) { + slideArea = $(options.selector); + } + + if (options.cssClass) { + cssClass = options.cssClass; + } + + + if (options.hideOnFocusLost) { + $($document[0].body).click(() => { + $rootScope.$broadcast('newsSlideUp'); + }); + + $rootScope.$on('newsSlideUp', (scope, params) => { + if (params !== slideArea && + slideArea.is(':visible') && + !slideArea.is(':animated')) { + + slideArea.slideUp(); + + if (cssClass) { + elem.removeClass(cssClass); + } + } + }); + + slideArea.click((event) => { + $rootScope.$broadcast('newsSlideUp', slideArea); + event.stopPropagation(); + }); + + elem.click((event) => { + $rootScope.$broadcast('newsSlideUp', slideArea); + event.stopPropagation(); + }); + } + } + + elem.click(() => { + if (slideArea.is(':visible') && !slideArea.is(':animated')) { + slideArea.slideUp(); + if (cssClass) { + elem.removeClass(cssClass); + } + } else { + slideArea.slideDown(); + if (cssClass) { + elem.addClass(cssClass); + } + } + }); + + }; +}); \ No newline at end of file diff --git a/js/directive/NewsTriggerClick.js b/js/directive/NewsTriggerClick.js new file mode 100644 index 000000000..d5c43e442 --- /dev/null +++ b/js/directive/NewsTriggerClick.js @@ -0,0 +1,19 @@ +/** + * ownCloud - News + * + * This file is licensed under the Affero General Public License version 3 or + * later. See the COPYING file. + * + * @author Bernhard Posselt + * @copyright Bernhard Posselt 2014 + */ +app.directive('newsTriggerClick', () => { + 'use strict'; + + return (scope, elm, attr) => { + elm.click(() => { + $(attr.newsTriggerClick).trigger('click'); + }); + }; + +}); \ No newline at end of file -- cgit v1.2.3