Blame view

sources/core/js/apps.js 1.92 KB
6d9380f96   Cédric Dupont   Update sources OC...
1
2
3
4
5
6
7
8
9
10
11
  /**
   * ownCloud - core
   *
   * 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
   */
  
  (function (document, $, exports) {
f7d878ff1   kload   [enh] Update to 7...
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
  	'use strict';
  
  	var dynamicSlideToggleEnabled = false;
  
  	exports.Apps = {
  		enableDynamicSlideToggle: function () {
  			dynamicSlideToggleEnabled = true;
  		}
  	};
  
  	/**
  	 * Provides a way to slide down a target area through a button and slide it
  	 * up if the user clicks somewhere else. Used for the news app settings and
  	 * add new field.
  	 *
  	 * Usage:
  	 * <button data-apps-slide-toggle=".slide-area">slide</button>
  	 * <div class=".slide-area" class="hidden">I'm sliding up</div>
  	 */
  	var registerAppsSlideToggle = function () {
  		var buttons = $('[data-apps-slide-toggle]');
  
  		$(document).click(function (event) {
  
  			if (dynamicSlideToggleEnabled) {
  				buttons = $('[data-apps-slide-toggle]');
  			}
  
  			buttons.each(function (index, button) {
  
  				var areaSelector = $(button).data('apps-slide-toggle');
  				var area = $(areaSelector);
  
  				function hideArea() {
  					area.slideUp(function() {
  						area.trigger(new $.Event('hide'));
  					});
  				}
  				function showArea() {
  					area.slideDown(function() {
  						area.trigger(new $.Event('show'));
  					});
  				}
  
  				// do nothing if the area is animated
  				if (!area.is(':animated')) {
  
  					// button toggles the area
  					if (button === event.target) {
  						if (area.is(':visible')) {
  							hideArea();
  						} else {
  							showArea();
  						}
  
  					// all other areas that have not been clicked but are open
  					// should be slid up
  					} else {
  						var closest = $(event.target).closest(areaSelector);
  						if (area.is(':visible') && closest[0] !== area[0]) {
  							hideArea();
  						}
  					}
  				}
  			});
  
  		});
  	};
  
  
  	$(document).ready(function () {
  		registerAppsSlideToggle();
  	});
  
  }(document, jQuery, OC));