diff options
Diffstat (limited to 'js')
-rw-r--r-- | js/build/app.js | 90 | ||||
-rw-r--r-- | js/directive/NewsReadFile.js | 25 | ||||
-rw-r--r-- | js/directive/NewsSlideUp.js | 75 | ||||
-rw-r--r-- | js/directive/NewsTriggerClick.js (renamed from js/directive/NewsForwardClick.js) | 0 |
4 files changed, 162 insertions, 28 deletions
diff --git a/js/build/app.js b/js/build/app.js index 743d10fba..1743a20a7 100644 --- a/js/build/app.js +++ b/js/build/app.js @@ -986,25 +986,19 @@ var $__build_47_app__ = function () { writable: true }), $__2; }; - app.directive('newsTriggerClick', function () { - 'use strict'; - return function (scope, elm, attr) { - elm.click(function () { - $(attr.newsTriggerClick).trigger('click'); - }); - }; - }); app.directive('newsReadFile', function () { 'use strict'; - return function (scope, elm, attr) { - var file = elm[0].files[0]; - var reader = new FileReader(); - reader.onload = function (event) { - elm[0].value = 0; - scope.$fileContent = event.target.result; - scope.$apply(attr.newsReadFile); - }; - reader.reasAsText(file); + return function (scope, elem, attr) { + elem.change(function () { + var file = elem[0].files[0]; + var reader = new FileReader(); + reader.onload = function (event) { + elem[0].value = 0; + scope.$fileContent = event.target.result; + scope.$apply(attr.newsReadFile); + }; + reader.readAsText(file); + }); }; }); app.directive('newsScroll', [ @@ -1099,12 +1093,74 @@ var $__build_47_app__ = function () { }; } ]); + app.directive('newsSlideUp', [ + '$rootScope', + '$document', + function ($rootScope, $document) { + 'use strict'; + return function (scope, elem, attr) { + var slideArea = elem; + var cssClass = false; + var 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(function () { + $rootScope.$broadcast('newsSlideUp'); + }); + $rootScope.$on('newsSlideUp', function (scope, params) { + if (params !== slideArea && slideArea.is(':visible') && !slideArea.is(':animated')) { + slideArea.slideUp(); + if (cssClass) { + elem.removeClass(cssClass); + } + } + }); + slideArea.click(function (event) { + $rootScope.$broadcast('newsSlideUp', slideArea); + event.stopPropagation(); + }); + elem.click(function (event) { + $rootScope.$broadcast('newsSlideUp', slideArea); + event.stopPropagation(); + }); + } + } + elem.click(function () { + if (slideArea.is(':visible') && !slideArea.is(':animated')) { + slideArea.slideUp(); + if (cssClass) { + elem.removeClass(cssClass); + } + } else { + slideArea.slideDown(); + if (cssClass) { + elem.addClass(cssClass); + } + } + }); + }; + } + ]); app.directive('newsTooltip', function () { 'use strict'; return function (scope, elem) { elem.tooltip(); }; }); + app.directive('newsTriggerClick', function () { + 'use strict'; + return function (scope, elm, attr) { + elm.click(function () { + $(attr.newsTriggerClick).trigger('click'); + }); + }; + }); }(window, document, angular, jQuery, OC, oc_requesttoken)); return {}; }();
\ 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 <dev@bernhard-posselt.com> + * @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/NewsForwardClick.js b/js/directive/NewsTriggerClick.js index d5c43e442..d5c43e442 100644 --- a/js/directive/NewsForwardClick.js +++ b/js/directive/NewsTriggerClick.js |