Blame view

sources/core/js/apps.js 2.16 KB
6d9380f96   Cédric Dupont   Update sources OC...
1
2
3
4
5
6
7
8
9
10
11
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
  /**
   * 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) {
  
      '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);
  
                  // do nothing if the area is animated
                  if (!area.is(':animated')) {
  
                      // button toggles the area
                      if (button === event.target) {
                          if (area.is(':visible')) {
                              area.slideUp();
                          } else {
                              area.slideDown();
                          }
  
                      // 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]) {
                              area.slideUp();
                          }
                      }
                  }
              });
  
          });
      };
  
  
      $(document).ready(function () {
          registerAppsSlideToggle();
      });
  
  }(document, jQuery, OC));