bootstrap 5.0.0.alpha2 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +1 -0
- data/README.md +7 -4
- data/assets/javascripts/bootstrap-global-this-define.js +6 -0
- data/assets/javascripts/bootstrap-global-this-undefine.js +2 -0
- data/assets/javascripts/bootstrap-sprockets.js +10 -7
- data/assets/javascripts/bootstrap.js +2554 -2564
- data/assets/javascripts/bootstrap.min.js +3 -3
- data/assets/javascripts/bootstrap/alert.js +119 -115
- data/assets/javascripts/bootstrap/base-component.js +63 -0
- data/assets/javascripts/bootstrap/button.js +67 -69
- data/assets/javascripts/bootstrap/carousel.js +340 -331
- data/assets/javascripts/bootstrap/collapse.js +214 -209
- data/assets/javascripts/bootstrap/dom/data.js +35 -48
- data/assets/javascripts/bootstrap/dom/event-handler.js +105 -98
- data/assets/javascripts/bootstrap/dom/manipulator.js +26 -34
- data/assets/javascripts/bootstrap/dom/selector-engine.js +28 -41
- data/assets/javascripts/bootstrap/dropdown.js +392 -325
- data/assets/javascripts/bootstrap/modal.js +492 -434
- data/assets/javascripts/bootstrap/offcanvas.js +671 -0
- data/assets/javascripts/bootstrap/popover.js +114 -132
- data/assets/javascripts/bootstrap/scrollspy.js +172 -180
- data/assets/javascripts/bootstrap/tab.js +168 -144
- data/assets/javascripts/bootstrap/toast.js +141 -150
- data/assets/javascripts/bootstrap/tooltip.js +466 -452
- data/assets/stylesheets/_bootstrap-grid.scss +9 -9
- data/assets/stylesheets/_bootstrap-reboot.scss +3 -3
- data/assets/stylesheets/_bootstrap.scss +5 -3
- data/assets/stylesheets/bootstrap/_accordion.scss +118 -0
- data/assets/stylesheets/bootstrap/_alert.scss +10 -3
- data/assets/stylesheets/bootstrap/_breadcrumb.scss +2 -4
- data/assets/stylesheets/bootstrap/_button-group.scss +5 -7
- data/assets/stylesheets/bootstrap/_buttons.scss +2 -15
- data/assets/stylesheets/bootstrap/_card.scss +2 -29
- data/assets/stylesheets/bootstrap/_carousel.scss +35 -18
- data/assets/stylesheets/bootstrap/_close.scss +2 -3
- data/assets/stylesheets/bootstrap/_dropdown.scss +33 -29
- data/assets/stylesheets/bootstrap/_forms.scss +1 -1
- data/assets/stylesheets/bootstrap/_functions.scss +11 -12
- data/assets/stylesheets/bootstrap/_list-group.scss +23 -6
- data/assets/stylesheets/bootstrap/_mixins.scss +1 -0
- data/assets/stylesheets/bootstrap/_modal.scss +2 -9
- data/assets/stylesheets/bootstrap/_nav.scss +12 -0
- data/assets/stylesheets/bootstrap/_navbar.scss +15 -2
- data/assets/stylesheets/bootstrap/_offcanvas.scss +77 -0
- data/assets/stylesheets/bootstrap/_pagination.scss +3 -3
- data/assets/stylesheets/bootstrap/_popover.scss +10 -22
- data/assets/stylesheets/bootstrap/_progress.scss +4 -1
- data/assets/stylesheets/bootstrap/_reboot.scss +48 -44
- data/assets/stylesheets/bootstrap/_root.scss +5 -5
- data/assets/stylesheets/bootstrap/_spinners.scss +18 -5
- data/assets/stylesheets/bootstrap/_tables.scss +15 -16
- data/assets/stylesheets/bootstrap/_toasts.scss +15 -12
- data/assets/stylesheets/bootstrap/_tooltip.scss +12 -12
- data/assets/stylesheets/bootstrap/_transitions.scss +2 -0
- data/assets/stylesheets/bootstrap/_utilities.scss +133 -70
- data/assets/stylesheets/bootstrap/_variables.scss +363 -207
- data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +5 -5
- data/assets/stylesheets/bootstrap/forms/_floating-labels.scss +61 -0
- data/assets/stylesheets/bootstrap/forms/_form-check.scss +21 -11
- data/assets/stylesheets/bootstrap/forms/_form-control.scss +112 -9
- data/assets/stylesheets/bootstrap/forms/_form-range.scss +1 -46
- data/assets/stylesheets/bootstrap/forms/_form-select.scss +1 -16
- data/assets/stylesheets/bootstrap/forms/_input-group.scss +21 -40
- data/assets/stylesheets/bootstrap/forms/_validation.scss +1 -1
- data/assets/stylesheets/bootstrap/helpers/_colored-links.scss +2 -2
- data/assets/stylesheets/bootstrap/helpers/_ratio.scss +2 -2
- data/assets/stylesheets/bootstrap/helpers/_visually-hidden.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_alert.scss +3 -1
- data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +8 -6
- data/assets/stylesheets/bootstrap/mixins/_buttons.scss +10 -5
- data/assets/stylesheets/bootstrap/mixins/_caret.scss +8 -6
- data/assets/stylesheets/bootstrap/mixins/_color-scheme.scss +7 -0
- data/assets/stylesheets/bootstrap/mixins/_container.scss +2 -4
- data/assets/stylesheets/bootstrap/mixins/_forms.scss +26 -22
- data/assets/stylesheets/bootstrap/mixins/_gradients.scss +5 -1
- data/assets/stylesheets/bootstrap/mixins/_grid.scss +18 -13
- data/assets/stylesheets/bootstrap/mixins/_list-group.scss +3 -1
- data/assets/stylesheets/bootstrap/mixins/_pagination.scss +5 -3
- data/assets/stylesheets/bootstrap/mixins/_table-variants.scss +7 -7
- data/assets/stylesheets/bootstrap/mixins/_utilities.scss +19 -0
- data/assets/stylesheets/bootstrap/mixins/_visually-hidden.scss +3 -2
- data/assets/stylesheets/bootstrap/utilities/_api.scss +1 -1
- data/bootstrap.gemspec +1 -3
- data/lib/bootstrap/version.rb +2 -2
- data/tasks/updater/js.rb +20 -5
- data/tasks/updater/network.rb +7 -1
- data/test/dummy_rails/app/assets/javascripts/application.js +4 -3
- data/test/dummy_rails/app/views/layouts/application.html.erb +3 -1
- data/test/dummy_rails/app/views/pages/root.html +89 -0
- data/test/dummy_rails/config/application.rb +0 -3
- data/test/gemfiles/rails_6_1.gemfile +7 -0
- metadata +20 -40
- data/assets/javascripts/bootstrap/dom/polyfill.js +0 -110
- data/assets/stylesheets/bootstrap/forms/_form-file.scss +0 -91
- data/test/dummy_rails/app/views/pages/root.html.slim +0 -58
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Bootstrap data.js v5.0.0
|
|
3
|
-
* Copyright 2011-
|
|
2
|
+
* Bootstrap data.js v5.0.0 (https://getbootstrap.com/)
|
|
3
|
+
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
|
4
4
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
5
5
|
*/
|
|
6
6
|
(function (global, factory) {
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* --------------------------------------------------------------------------
|
|
14
|
-
* Bootstrap (v5.0.0
|
|
14
|
+
* Bootstrap (v5.0.0): dom/data.js
|
|
15
15
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
16
16
|
* --------------------------------------------------------------------------
|
|
17
17
|
*/
|
|
@@ -21,61 +21,48 @@
|
|
|
21
21
|
* Constants
|
|
22
22
|
* ------------------------------------------------------------------------
|
|
23
23
|
*/
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
element.bsKey = {
|
|
31
|
-
key: key,
|
|
32
|
-
id: id
|
|
33
|
-
};
|
|
34
|
-
id++;
|
|
35
|
-
}
|
|
24
|
+
const elementMap = new Map();
|
|
25
|
+
var data = {
|
|
26
|
+
set(element, key, instance) {
|
|
27
|
+
if (!elementMap.has(element)) {
|
|
28
|
+
elementMap.set(element, new Map());
|
|
29
|
+
}
|
|
36
30
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
get: function get(element, key) {
|
|
40
|
-
if (!element || typeof element.bsKey === 'undefined') {
|
|
41
|
-
return null;
|
|
42
|
-
}
|
|
31
|
+
const instanceMap = elementMap.get(element); // make it clear we only want one instance per element
|
|
32
|
+
// can be removed later when multiple key/instances are fine to be used
|
|
43
33
|
|
|
44
|
-
|
|
34
|
+
if (!instanceMap.has(key) && instanceMap.size !== 0) {
|
|
35
|
+
// eslint-disable-next-line no-console
|
|
36
|
+
console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`);
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
45
39
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
}
|
|
40
|
+
instanceMap.set(key, instance);
|
|
41
|
+
},
|
|
49
42
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
return;
|
|
55
|
-
}
|
|
43
|
+
get(element, key) {
|
|
44
|
+
if (elementMap.has(element)) {
|
|
45
|
+
return elementMap.get(element).get(key) || null;
|
|
46
|
+
}
|
|
56
47
|
|
|
57
|
-
|
|
48
|
+
return null;
|
|
49
|
+
},
|
|
58
50
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
}
|
|
51
|
+
remove(element, key) {
|
|
52
|
+
if (!elementMap.has(element)) {
|
|
53
|
+
return;
|
|
63
54
|
}
|
|
64
|
-
};
|
|
65
|
-
}();
|
|
66
55
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
},
|
|
74
|
-
removeData: function removeData(instance, key) {
|
|
75
|
-
mapData.delete(instance, key);
|
|
56
|
+
const instanceMap = elementMap.get(element);
|
|
57
|
+
instanceMap.delete(key); // free up element references if there are no instances left for an element
|
|
58
|
+
|
|
59
|
+
if (instanceMap.size === 0) {
|
|
60
|
+
elementMap.delete(element);
|
|
61
|
+
}
|
|
76
62
|
}
|
|
63
|
+
|
|
77
64
|
};
|
|
78
65
|
|
|
79
|
-
return
|
|
66
|
+
return data;
|
|
80
67
|
|
|
81
68
|
})));
|
|
@@ -1,26 +1,27 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Bootstrap event-handler.js v5.0.0
|
|
3
|
-
* Copyright 2011-
|
|
2
|
+
* Bootstrap event-handler.js v5.0.0 (https://getbootstrap.com/)
|
|
3
|
+
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
|
4
4
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
5
5
|
*/
|
|
6
6
|
(function (global, factory) {
|
|
7
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(
|
|
8
|
-
typeof define === 'function' && define.amd ? define(
|
|
9
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.EventHandler = factory(
|
|
10
|
-
}(this, (function (
|
|
7
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
|
8
|
+
typeof define === 'function' && define.amd ? define(factory) :
|
|
9
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.EventHandler = factory());
|
|
10
|
+
}(this, (function () { 'use strict';
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* --------------------------------------------------------------------------
|
|
14
|
-
* Bootstrap (v5.0.0
|
|
14
|
+
* Bootstrap (v5.0.0): util/index.js
|
|
15
15
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
16
16
|
* --------------------------------------------------------------------------
|
|
17
17
|
*/
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
const getjQuery = () => {
|
|
20
|
+
const {
|
|
21
|
+
jQuery
|
|
22
|
+
} = window;
|
|
22
23
|
|
|
23
|
-
if (jQuery && !document.body.hasAttribute('data-no-jquery')) {
|
|
24
|
+
if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {
|
|
24
25
|
return jQuery;
|
|
25
26
|
}
|
|
26
27
|
|
|
@@ -29,7 +30,7 @@
|
|
|
29
30
|
|
|
30
31
|
/**
|
|
31
32
|
* --------------------------------------------------------------------------
|
|
32
|
-
* Bootstrap (v5.0.0
|
|
33
|
+
* Bootstrap (v5.0.0): dom/event-handler.js
|
|
33
34
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
34
35
|
* --------------------------------------------------------------------------
|
|
35
36
|
*/
|
|
@@ -39,18 +40,18 @@
|
|
|
39
40
|
* ------------------------------------------------------------------------
|
|
40
41
|
*/
|
|
41
42
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
var eventRegistry = {}; // Events storage
|
|
43
|
+
const namespaceRegex = /[^.]*(?=\..*)\.|.*/;
|
|
44
|
+
const stripNameRegex = /\..*/;
|
|
45
|
+
const stripUidRegex = /::\d+$/;
|
|
46
|
+
const eventRegistry = {}; // Events storage
|
|
47
47
|
|
|
48
|
-
|
|
49
|
-
|
|
48
|
+
let uidEvent = 1;
|
|
49
|
+
const customEvents = {
|
|
50
50
|
mouseenter: 'mouseover',
|
|
51
51
|
mouseleave: 'mouseout'
|
|
52
52
|
};
|
|
53
|
-
|
|
53
|
+
const customEventsRegex = /^(mouseenter|mouseleave)/i;
|
|
54
|
+
const nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']);
|
|
54
55
|
/**
|
|
55
56
|
* ------------------------------------------------------------------------
|
|
56
57
|
* Private methods
|
|
@@ -58,11 +59,11 @@
|
|
|
58
59
|
*/
|
|
59
60
|
|
|
60
61
|
function getUidEvent(element, uid) {
|
|
61
|
-
return uid && uid
|
|
62
|
+
return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++;
|
|
62
63
|
}
|
|
63
64
|
|
|
64
65
|
function getEvent(element) {
|
|
65
|
-
|
|
66
|
+
const uid = getUidEvent(element);
|
|
66
67
|
element.uidEvent = uid;
|
|
67
68
|
eventRegistry[uid] = eventRegistry[uid] || {};
|
|
68
69
|
return eventRegistry[uid];
|
|
@@ -82,15 +83,18 @@
|
|
|
82
83
|
|
|
83
84
|
function bootstrapDelegationHandler(element, selector, fn) {
|
|
84
85
|
return function handler(event) {
|
|
85
|
-
|
|
86
|
+
const domElements = element.querySelectorAll(selector);
|
|
86
87
|
|
|
87
|
-
for (
|
|
88
|
-
|
|
88
|
+
for (let {
|
|
89
|
+
target
|
|
90
|
+
} = event; target && target !== this; target = target.parentNode) {
|
|
91
|
+
for (let i = domElements.length; i--;) {
|
|
89
92
|
if (domElements[i] === target) {
|
|
90
93
|
event.delegateTarget = target;
|
|
91
94
|
|
|
92
95
|
if (handler.oneOff) {
|
|
93
|
-
|
|
96
|
+
// eslint-disable-next-line unicorn/consistent-destructuring
|
|
97
|
+
EventHandler.off(element, event.type, selector, fn);
|
|
94
98
|
}
|
|
95
99
|
|
|
96
100
|
return fn.apply(target, [event]);
|
|
@@ -103,15 +107,11 @@
|
|
|
103
107
|
};
|
|
104
108
|
}
|
|
105
109
|
|
|
106
|
-
function findHandler(events, handler, delegationSelector) {
|
|
107
|
-
|
|
108
|
-
delegationSelector = null;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
var uidEventList = Object.keys(events);
|
|
110
|
+
function findHandler(events, handler, delegationSelector = null) {
|
|
111
|
+
const uidEventList = Object.keys(events);
|
|
112
112
|
|
|
113
|
-
for (
|
|
114
|
-
|
|
113
|
+
for (let i = 0, len = uidEventList.length; i < len; i++) {
|
|
114
|
+
const event = events[uidEventList[i]];
|
|
115
115
|
|
|
116
116
|
if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {
|
|
117
117
|
return event;
|
|
@@ -122,17 +122,10 @@
|
|
|
122
122
|
}
|
|
123
123
|
|
|
124
124
|
function normalizeParams(originalTypeEvent, handler, delegationFn) {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
var custom = customEvents[typeEvent];
|
|
130
|
-
|
|
131
|
-
if (custom) {
|
|
132
|
-
typeEvent = custom;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
var isNative = nativeEvents.indexOf(typeEvent) > -1;
|
|
125
|
+
const delegation = typeof handler === 'string';
|
|
126
|
+
const originalHandler = delegation ? delegationFn : handler;
|
|
127
|
+
let typeEvent = getTypeEvent(originalTypeEvent);
|
|
128
|
+
const isNative = nativeEvents.has(typeEvent);
|
|
136
129
|
|
|
137
130
|
if (!isNative) {
|
|
138
131
|
typeEvent = originalTypeEvent;
|
|
@@ -149,24 +142,38 @@
|
|
|
149
142
|
if (!handler) {
|
|
150
143
|
handler = delegationFn;
|
|
151
144
|
delegationFn = null;
|
|
152
|
-
}
|
|
145
|
+
} // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position
|
|
146
|
+
// this prevents the handler from being dispatched the same way as mouseover or mouseout does
|
|
153
147
|
|
|
154
|
-
var _normalizeParams = normalizeParams(originalTypeEvent, handler, delegationFn),
|
|
155
|
-
delegation = _normalizeParams[0],
|
|
156
|
-
originalHandler = _normalizeParams[1],
|
|
157
|
-
typeEvent = _normalizeParams[2];
|
|
158
148
|
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
149
|
+
if (customEventsRegex.test(originalTypeEvent)) {
|
|
150
|
+
const wrapFn = fn => {
|
|
151
|
+
return function (event) {
|
|
152
|
+
if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) {
|
|
153
|
+
return fn.call(this, event);
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
};
|
|
157
|
+
|
|
158
|
+
if (delegationFn) {
|
|
159
|
+
delegationFn = wrapFn(delegationFn);
|
|
160
|
+
} else {
|
|
161
|
+
handler = wrapFn(handler);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn);
|
|
166
|
+
const events = getEvent(element);
|
|
167
|
+
const handlers = events[typeEvent] || (events[typeEvent] = {});
|
|
168
|
+
const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null);
|
|
162
169
|
|
|
163
170
|
if (previousFn) {
|
|
164
171
|
previousFn.oneOff = previousFn.oneOff && oneOff;
|
|
165
172
|
return;
|
|
166
173
|
}
|
|
167
174
|
|
|
168
|
-
|
|
169
|
-
|
|
175
|
+
const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''));
|
|
176
|
+
const fn = delegation ? bootstrapDelegationHandler(element, handler, delegationFn) : bootstrapHandler(element, handler);
|
|
170
177
|
fn.delegationSelector = delegation ? handler : null;
|
|
171
178
|
fn.originalHandler = originalHandler;
|
|
172
179
|
fn.oneOff = oneOff;
|
|
@@ -176,7 +183,7 @@
|
|
|
176
183
|
}
|
|
177
184
|
|
|
178
185
|
function removeHandler(element, events, typeEvent, handler, delegationSelector) {
|
|
179
|
-
|
|
186
|
+
const fn = findHandler(events[typeEvent], handler, delegationSelector);
|
|
180
187
|
|
|
181
188
|
if (!fn) {
|
|
182
189
|
return;
|
|
@@ -187,35 +194,39 @@
|
|
|
187
194
|
}
|
|
188
195
|
|
|
189
196
|
function removeNamespacedHandlers(element, events, typeEvent, namespace) {
|
|
190
|
-
|
|
191
|
-
Object.keys(storeElementEvent).forEach(
|
|
192
|
-
if (handlerKey.
|
|
193
|
-
|
|
197
|
+
const storeElementEvent = events[typeEvent] || {};
|
|
198
|
+
Object.keys(storeElementEvent).forEach(handlerKey => {
|
|
199
|
+
if (handlerKey.includes(namespace)) {
|
|
200
|
+
const event = storeElementEvent[handlerKey];
|
|
194
201
|
removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector);
|
|
195
202
|
}
|
|
196
203
|
});
|
|
197
204
|
}
|
|
198
205
|
|
|
199
|
-
|
|
200
|
-
|
|
206
|
+
function getTypeEvent(event) {
|
|
207
|
+
// allow to get the native events from namespaced events ('click.bs.button' --> 'click')
|
|
208
|
+
event = event.replace(stripNameRegex, '');
|
|
209
|
+
return customEvents[event] || event;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
const EventHandler = {
|
|
213
|
+
on(element, event, handler, delegationFn) {
|
|
201
214
|
addHandler(element, event, handler, delegationFn, false);
|
|
202
215
|
},
|
|
203
|
-
|
|
216
|
+
|
|
217
|
+
one(element, event, handler, delegationFn) {
|
|
204
218
|
addHandler(element, event, handler, delegationFn, true);
|
|
205
219
|
},
|
|
206
|
-
|
|
220
|
+
|
|
221
|
+
off(element, originalTypeEvent, handler, delegationFn) {
|
|
207
222
|
if (typeof originalTypeEvent !== 'string' || !element) {
|
|
208
223
|
return;
|
|
209
224
|
}
|
|
210
225
|
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
var inNamespace = typeEvent !== originalTypeEvent;
|
|
217
|
-
var events = getEvent(element);
|
|
218
|
-
var isNamespace = originalTypeEvent.charAt(0) === '.';
|
|
226
|
+
const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn);
|
|
227
|
+
const inNamespace = typeEvent !== originalTypeEvent;
|
|
228
|
+
const events = getEvent(element);
|
|
229
|
+
const isNamespace = originalTypeEvent.startsWith('.');
|
|
219
230
|
|
|
220
231
|
if (typeof originalHandler !== 'undefined') {
|
|
221
232
|
// Simplest case: handler is passed, remove that listener ONLY.
|
|
@@ -228,34 +239,36 @@
|
|
|
228
239
|
}
|
|
229
240
|
|
|
230
241
|
if (isNamespace) {
|
|
231
|
-
Object.keys(events).forEach(
|
|
242
|
+
Object.keys(events).forEach(elementEvent => {
|
|
232
243
|
removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));
|
|
233
244
|
});
|
|
234
245
|
}
|
|
235
246
|
|
|
236
|
-
|
|
237
|
-
Object.keys(storeElementEvent).forEach(
|
|
238
|
-
|
|
247
|
+
const storeElementEvent = events[typeEvent] || {};
|
|
248
|
+
Object.keys(storeElementEvent).forEach(keyHandlers => {
|
|
249
|
+
const handlerKey = keyHandlers.replace(stripUidRegex, '');
|
|
239
250
|
|
|
240
|
-
if (!inNamespace || originalTypeEvent.
|
|
241
|
-
|
|
251
|
+
if (!inNamespace || originalTypeEvent.includes(handlerKey)) {
|
|
252
|
+
const event = storeElementEvent[keyHandlers];
|
|
242
253
|
removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector);
|
|
243
254
|
}
|
|
244
255
|
});
|
|
245
256
|
},
|
|
246
|
-
|
|
257
|
+
|
|
258
|
+
trigger(element, event, args) {
|
|
247
259
|
if (typeof event !== 'string' || !element) {
|
|
248
260
|
return null;
|
|
249
261
|
}
|
|
250
262
|
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
263
|
+
const $ = getjQuery();
|
|
264
|
+
const typeEvent = getTypeEvent(event);
|
|
265
|
+
const inNamespace = event !== typeEvent;
|
|
266
|
+
const isNative = nativeEvents.has(typeEvent);
|
|
267
|
+
let jQueryEvent;
|
|
268
|
+
let bubbles = true;
|
|
269
|
+
let nativeDispatch = true;
|
|
270
|
+
let defaultPrevented = false;
|
|
271
|
+
let evt = null;
|
|
259
272
|
|
|
260
273
|
if (inNamespace && $) {
|
|
261
274
|
jQueryEvent = $.Event(event, args);
|
|
@@ -270,32 +283,25 @@
|
|
|
270
283
|
evt.initEvent(typeEvent, bubbles, true);
|
|
271
284
|
} else {
|
|
272
285
|
evt = new CustomEvent(event, {
|
|
273
|
-
bubbles
|
|
286
|
+
bubbles,
|
|
274
287
|
cancelable: true
|
|
275
288
|
});
|
|
276
289
|
} // merge custom information in our event
|
|
277
290
|
|
|
278
291
|
|
|
279
292
|
if (typeof args !== 'undefined') {
|
|
280
|
-
Object.keys(args).forEach(
|
|
293
|
+
Object.keys(args).forEach(key => {
|
|
281
294
|
Object.defineProperty(evt, key, {
|
|
282
|
-
get
|
|
295
|
+
get() {
|
|
283
296
|
return args[key];
|
|
284
297
|
}
|
|
298
|
+
|
|
285
299
|
});
|
|
286
300
|
});
|
|
287
301
|
}
|
|
288
302
|
|
|
289
303
|
if (defaultPrevented) {
|
|
290
304
|
evt.preventDefault();
|
|
291
|
-
|
|
292
|
-
if (!polyfill_js.defaultPreventedPreservedOnDispatch) {
|
|
293
|
-
Object.defineProperty(evt, 'defaultPrevented', {
|
|
294
|
-
get: function get() {
|
|
295
|
-
return true;
|
|
296
|
-
}
|
|
297
|
-
});
|
|
298
|
-
}
|
|
299
305
|
}
|
|
300
306
|
|
|
301
307
|
if (nativeDispatch) {
|
|
@@ -308,6 +314,7 @@
|
|
|
308
314
|
|
|
309
315
|
return evt;
|
|
310
316
|
}
|
|
317
|
+
|
|
311
318
|
};
|
|
312
319
|
|
|
313
320
|
return EventHandler;
|