aboutsummaryrefslogtreecommitdiff
path: root/resources/assets/javascripts/jquery-bundle.js
blob: d23ff1d2c5f0859c7c6296bc92a827b2b88ba3c3 (plain)
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
import 'expose-loader?exposes[]=$&exposes[]=jQuery!jquery';
import { setLocale } from './lib/gettext';

import 'jquery-ui/ui/widget.js';
import 'jquery-ui/ui/position.js';
import 'jquery-ui/ui/data.js';
import 'jquery-ui/ui/disable-selection.js';
import 'jquery-ui/ui/focusable.js';
import 'jquery-ui/ui/form.js';
import 'jquery-ui/ui/form-reset-mixin.js';
import 'jquery-ui/ui/ie.js';
import 'jquery-ui/ui/keycode.js';
import 'jquery-ui/ui/labels.js';
import 'jquery-ui/ui/plugin.js';
import 'jquery-ui/ui/safe-active-element.js';
import 'jquery-ui/ui/safe-blur.js';
import 'jquery-ui/ui/scroll-parent.js';
import 'jquery-ui/ui/tabbable.js';
import 'jquery-ui/ui/unique-id.js';
import 'jquery-ui/ui/version.js';
import 'jquery-ui/ui/widgets/draggable.js';
import 'jquery-ui/ui/widgets/droppable.js';
import 'jquery-ui/ui/widgets/resizable.js';
import 'jquery-ui/ui/widgets/selectable.js';
import 'jquery-ui/ui/widgets/sortable.js';
import 'jquery-ui/ui/widgets/accordion.js';
import 'jquery-ui/ui/widgets/autocomplete.js';
import 'jquery-ui/ui/widgets/button.js';
import 'jquery-ui/ui/widgets/checkboxradio.js';
import 'jquery-ui/ui/widgets/controlgroup.js';
import 'jquery-ui/ui/widgets/datepicker.js';
import 'jquery-ui/ui/widgets/dialog.js';
import 'jquery-ui/ui/widgets/menu.js';
import 'jquery-ui/ui/widgets/mouse.js';
import 'jquery-ui/ui/widgets/progressbar.js';
import 'jquery-ui/ui/widgets/selectmenu.js';
import 'jquery-ui/ui/widgets/slider.js';
import 'jquery-ui/ui/widgets/spinner.js';
import 'jquery-ui/ui/widgets/tabs.js';
import 'jquery-ui/ui/widgets/tooltip.js';
import 'jquery-ui/ui/effect.js';
import 'jquery-ui/ui/effects/effect-blind.js';
import 'jquery-ui/ui/effects/effect-bounce.js';
import 'jquery-ui/ui/effects/effect-clip.js';
import 'jquery-ui/ui/effects/effect-drop.js';
import 'jquery-ui/ui/effects/effect-explode.js';
import 'jquery-ui/ui/effects/effect-fade.js';
import 'jquery-ui/ui/effects/effect-fold.js';
import 'jquery-ui/ui/effects/effect-highlight.js';
import 'jquery-ui/ui/effects/effect-puff.js';
import 'jquery-ui/ui/effects/effect-pulsate.js';
import 'jquery-ui/ui/effects/effect-scale.js';
import 'jquery-ui/ui/effects/effect-shake.js';
import 'jquery-ui/ui/effects/effect-size.js';
import 'jquery-ui/ui/effects/effect-slide.js';
import 'jquery-ui/ui/effects/effect-transfer.js';

import 'jquery-ui-timepicker-addon';

import 'multiselect';

import 'jquery.scrollto';
import 'jquery.qrcode';

import 'jquery-ui-touch-punch';

import './studip-jquery-tweaks.js';
import './studip-jquery.multi-select.tweaks.js';
import './studip-jquery-selection-helper.js';

import select2 from 'select2/dist/js/select2.full.js';

import 'blueimp-file-upload';
import 'blueimp-file-upload/js/jquery.iframe-transport.js';

import './jquery/autoresize.jquery.min.js';

import { $gettext } from './lib/gettext';

// Create jQuery "plugin" that just reverses the elements' order. This is
// neccessary since the navigation is built and afterwards, we need to
// check the navigation's open status in reverse order (from bottom to top)
jQuery.fn.reverse = [].reverse;

$.fn.extend({
    showAjaxNotification: function(position) {
        position = position || 'left';
        return this.each(function() {
            if ($(this).data('ajax_notification')) {
                return;
            }

            $(this).wrap('<span class="ajax_notification" />');
            var that = this,
                notification = $('<span class="notification" />')
                    .hide()
                    .insertBefore(this),
                changes = {
                    marginLeft: 0,
                    marginRight: 0
                };

            changes[position === 'right' ? 'marginRight' : 'marginLeft'] = notification.outerWidth(true);

            $(this)
                .data({
                    ajax_notification: notification
                })
                .parent()
                .animate(changes, 'fast', function() {
                    var offset = $(that).position(),
                        styles = {
                            left: offset.left - notification.outerWidth(true),
                            top:
                                offset.top +
                                Math.max(0, Math.floor(($(that).height() - notification.outerHeight(true)) / 2))
                        };
                    if (position === 'right') {
                        styles.left += $(this).outerWidth(true);
                    }
                    notification.css(styles).fadeIn('fast');
                });
        });
    },
    hideAjaxNotification: function() {
        return this.each(function() {
            var $this = $(this).stop(),
                notification = $this.data('ajax_notification');
            if (!notification) {
                return;
            }

            notification.stop().fadeOut('fast', function() {
                $this.animate({ marginLeft: 0, marginRight: 0 }, 'fast', function() {
                    $this.unwrap();
                });
                $(this).remove();
            });
            $(this).removeData('ajax_notification');
        });
    }
});

$(document).ready(async () => {
    await setLocale();
    STUDIP.ready.trigger('dom');
}).on('dialog-update', (event, data) => {
    STUDIP.ready.trigger('dialog', data.dialog);
});