2e25c8126f416bf0049471f3fd774a7e85f4dd7d
[moodle.git] / theme / boost / amd / src / pending.js
1 // This file is part of Moodle - http://moodle.org/
2 //
3 // Moodle is free software: you can redistribute it and/or modify
4 // it under the terms of the GNU General Public License as published by
5 // the Free Software Foundation, either version 3 of the License, or
6 // (at your option) any later version.
7 //
8 // Moodle is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11 // GNU General Public License for more details.
12 //
13 // You should have received a copy of the GNU General Public License
14 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
16 /**
17  * Add Pending JS checks to stock Bootstrap transitions.
18  *
19  * @module     theme_boost/pending
20  * @copyright  2019 Andrew Nicols <andrew@nicols.co.uk>
21  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
22  */
23 define(['jquery'], function($) {
24     var moduleTransitions = {
25         alert: [
26             // Alert.
27             {
28                 start: 'close',
29                 end: 'closed',
30             },
31         ],
33         carousel: [
34             {
35                 start: 'slide',
36                 end: 'slid',
37             },
38         ],
40         collapse: [
41             {
42                 start: 'hide',
43                 end: 'hidden',
44             },
45             {
46                 start: 'show',
47                 end: 'shown',
48             },
49         ],
51         dropdown: [
52             {
53                 start: 'hide',
54                 end: 'hidden',
55             },
56             {
57                 start: 'show',
58                 end: 'shown',
59             },
60         ],
62         modal: [
63             {
64                 start: 'hide',
65                 end: 'hidden',
66             },
67             {
68                 start: 'show',
69                 end: 'shown',
70             },
71         ],
73         popover: [
74             {
75                 start: 'hide',
76                 end: 'hidden',
77             },
78             {
79                 start: 'show',
80                 end: 'shown',
81             },
82         ],
84         tab: [
85             {
86                 start: 'hide',
87                 end: 'hidden',
88             },
89             {
90                 start: 'show',
91                 end: 'shown',
92             },
93         ],
95         toast: [
96             {
97                 start: 'hide',
98                 end: 'hidden',
99             },
100             {
101                 start: 'show',
102                 end: 'shown',
103             },
104         ],
106         tooltip: [
107             {
108                 start: 'hide',
109                 end: 'hidden',
110             },
111             {
112                 start: 'show',
113                 end: 'shown',
114             },
115         ],
116     };
118     Object.keys(moduleTransitions).forEach(function(key) {
119         moduleTransitions[key].forEach(function(pair) {
120             var eventStart = pair.start + '.bs.' + key;
121             var eventEnd = pair.end + '.bs.' + key;
122             $(document.body).on(eventStart, function() {
123                 M.util.js_pending(eventEnd);
124             });
126             $(document.body).on(eventEnd, function() {
127                 M.util.js_complete(eventEnd);
128             });
129         });
130     });
131 });