@coreui/coreui 4.1.4 → 4.2.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.
Files changed (208) hide show
  1. package/LICENSE +2 -2
  2. package/README.md +64 -11
  3. package/dist/css/bootstrap-reboot.css +488 -0
  4. package/dist/css/bootstrap-reboot.css.map +1 -0
  5. package/dist/css/bootstrap-reboot.min.css +8 -0
  6. package/dist/css/bootstrap-reboot.min.css.map +1 -0
  7. package/dist/css/coreui-grid.css +23 -949
  8. package/dist/css/coreui-grid.css.map +1 -1
  9. package/dist/css/coreui-grid.min.css +3 -3
  10. package/dist/css/coreui-grid.min.css.map +1 -1
  11. package/dist/css/coreui-grid.rtl.css +25 -951
  12. package/dist/css/coreui-grid.rtl.css.map +1 -1
  13. package/dist/css/coreui-grid.rtl.min.css +5 -5
  14. package/dist/css/coreui-grid.rtl.min.css.map +1 -1
  15. package/dist/css/coreui-reboot.css +35 -42
  16. package/dist/css/coreui-reboot.css.map +1 -1
  17. package/dist/css/coreui-reboot.min.css +3 -3
  18. package/dist/css/coreui-reboot.min.css.map +1 -1
  19. package/dist/css/coreui-reboot.rtl.css +36 -44
  20. package/dist/css/coreui-reboot.rtl.css.map +1 -1
  21. package/dist/css/coreui-reboot.rtl.min.css +5 -5
  22. package/dist/css/coreui-reboot.rtl.min.css.map +1 -1
  23. package/dist/css/coreui-utilities.css +279 -951
  24. package/dist/css/coreui-utilities.css.map +1 -1
  25. package/dist/css/coreui-utilities.min.css +3 -3
  26. package/dist/css/coreui-utilities.min.css.map +1 -1
  27. package/dist/css/coreui-utilities.rtl.css +275 -953
  28. package/dist/css/coreui-utilities.rtl.css.map +1 -1
  29. package/dist/css/coreui-utilities.rtl.min.css +5 -5
  30. package/dist/css/coreui-utilities.rtl.min.css.map +1 -1
  31. package/dist/css/coreui.css +2203 -2295
  32. package/dist/css/coreui.css.map +1 -1
  33. package/dist/css/coreui.min.css +3 -3
  34. package/dist/css/coreui.min.css.map +1 -1
  35. package/dist/css/coreui.rtl.css +2190 -2289
  36. package/dist/css/coreui.rtl.css.map +1 -1
  37. package/dist/css/coreui.rtl.min.css +5 -5
  38. package/dist/css/coreui.rtl.min.css.map +1 -1
  39. package/dist/js/coreui.bundle.js +2101 -1908
  40. package/dist/js/coreui.bundle.js.map +1 -1
  41. package/dist/js/coreui.bundle.min.js +2 -2
  42. package/dist/js/coreui.bundle.min.js.map +1 -1
  43. package/dist/js/coreui.esm.js +2098 -1909
  44. package/dist/js/coreui.esm.js.map +1 -1
  45. package/dist/js/coreui.esm.min.js +2 -2
  46. package/dist/js/coreui.esm.min.js.map +1 -1
  47. package/dist/js/coreui.js +2099 -1910
  48. package/dist/js/coreui.js.map +1 -1
  49. package/dist/js/coreui.min.js +2 -2
  50. package/dist/js/coreui.min.js.map +1 -1
  51. package/js/dist/alert.js +10 -148
  52. package/js/dist/alert.js.map +1 -1
  53. package/js/dist/base-component.js +36 -122
  54. package/js/dist/base-component.js.map +1 -1
  55. package/js/dist/button.js +9 -76
  56. package/js/dist/button.js.map +1 -1
  57. package/js/dist/carousel.js +212 -507
  58. package/js/dist/carousel.js.map +1 -1
  59. package/js/dist/collapse.js +64 -251
  60. package/js/dist/collapse.js.map +1 -1
  61. package/js/dist/dom/data.js +2 -4
  62. package/js/dist/dom/data.js.map +1 -1
  63. package/js/dist/dom/event-handler.js +82 -133
  64. package/js/dist/dom/event-handler.js.map +1 -1
  65. package/js/dist/dom/manipulator.js +22 -26
  66. package/js/dist/dom/manipulator.js.map +1 -1
  67. package/js/dist/dom/selector-engine.js +16 -81
  68. package/js/dist/dom/selector-engine.js.map +1 -1
  69. package/js/dist/dropdown.js +99 -338
  70. package/js/dist/dropdown.js.map +1 -1
  71. package/js/dist/modal.js +106 -774
  72. package/js/dist/modal.js.map +1 -1
  73. package/js/dist/navigation.js +309 -0
  74. package/js/dist/navigation.js.map +1 -0
  75. package/js/dist/offcanvas.js +88 -680
  76. package/js/dist/offcanvas.js.map +1 -1
  77. package/js/dist/popover.js +35 -120
  78. package/js/dist/popover.js.map +1 -1
  79. package/js/dist/scrollspy.js +178 -264
  80. package/js/dist/scrollspy.js.map +1 -1
  81. package/js/dist/sidebar.js +347 -0
  82. package/js/dist/sidebar.js.map +1 -0
  83. package/js/dist/tab.js +226 -216
  84. package/js/dist/tab.js.map +1 -1
  85. package/js/dist/toast.js +27 -216
  86. package/js/dist/toast.js.map +1 -1
  87. package/js/dist/tooltip.js +271 -618
  88. package/js/dist/tooltip.js.map +1 -1
  89. package/js/dist/util/backdrop.js +166 -0
  90. package/js/dist/util/backdrop.js.map +1 -0
  91. package/js/dist/util/component-functions.js +47 -0
  92. package/js/dist/util/component-functions.js.map +1 -0
  93. package/js/dist/util/config.js +80 -0
  94. package/js/dist/util/config.js.map +1 -0
  95. package/js/dist/util/focustrap.js +130 -0
  96. package/js/dist/util/focustrap.js.map +1 -0
  97. package/js/dist/util/index.js +354 -0
  98. package/js/dist/util/index.js.map +1 -0
  99. package/js/dist/util/sanitizer.js +126 -0
  100. package/js/dist/util/sanitizer.js.map +1 -0
  101. package/js/dist/util/scrollbar.js +139 -0
  102. package/js/dist/util/scrollbar.js.map +1 -0
  103. package/js/dist/util/swipe.js +156 -0
  104. package/js/dist/util/swipe.js.map +1 -0
  105. package/js/dist/util/template-factory.js +178 -0
  106. package/js/dist/util/template-factory.js.map +1 -0
  107. package/js/src/alert.js +3 -15
  108. package/js/src/base-component.js +28 -18
  109. package/js/src/button.js +3 -15
  110. package/js/src/carousel.js +203 -320
  111. package/js/src/collapse.js +61 -94
  112. package/js/src/dom/data.js +1 -3
  113. package/js/src/dom/event-handler.js +74 -107
  114. package/js/src/dom/manipulator.js +22 -31
  115. package/js/src/dom/selector-engine.js +10 -19
  116. package/js/src/dropdown.js +84 -138
  117. package/js/src/modal.js +94 -158
  118. package/js/src/navigation.js +12 -13
  119. package/js/src/offcanvas.js +71 -60
  120. package/js/src/popover.js +31 -62
  121. package/js/src/scrollspy.js +166 -171
  122. package/js/src/sidebar.js +5 -8
  123. package/js/src/tab.js +201 -110
  124. package/js/src/toast.js +19 -41
  125. package/js/src/tooltip.js +264 -374
  126. package/js/src/util/backdrop.js +55 -36
  127. package/js/src/util/component-functions.js +1 -1
  128. package/js/src/util/config.js +66 -0
  129. package/js/src/util/focustrap.js +38 -28
  130. package/js/src/util/index.js +41 -57
  131. package/js/src/util/sanitizer.js +9 -17
  132. package/js/src/util/scrollbar.js +47 -30
  133. package/js/src/util/swipe.js +146 -0
  134. package/js/src/util/template-factory.js +160 -0
  135. package/package.json +40 -40
  136. package/scss/_accordion.scss +53 -25
  137. package/scss/_alert.scss +29 -9
  138. package/scss/_badge.scss +15 -6
  139. package/scss/_breadcrumb.scss +23 -11
  140. package/scss/_button-group.scss +3 -0
  141. package/scss/_buttons.scss +71 -50
  142. package/scss/_callout.scss +18 -6
  143. package/scss/_card.scss +55 -37
  144. package/scss/_carousel.scss +6 -6
  145. package/scss/_close.scss +4 -4
  146. package/scss/_containers.scss +1 -1
  147. package/scss/_dropdown.scss +86 -64
  148. package/scss/_footer.scss +15 -5
  149. package/scss/_functions.scss +11 -24
  150. package/scss/_grid.scss +3 -3
  151. package/scss/_header.scss +59 -34
  152. package/scss/_helpers.scss +1 -0
  153. package/scss/_images.scss +3 -3
  154. package/scss/_list-group.scss +47 -29
  155. package/scss/_maps.scss +54 -0
  156. package/scss/_modal.scss +70 -43
  157. package/scss/_nav.scss +53 -20
  158. package/scss/_navbar.scss +84 -94
  159. package/scss/_offcanvas.scss +120 -60
  160. package/scss/_pagination.scss +66 -21
  161. package/scss/_popover.scss +90 -52
  162. package/scss/_progress.scss +20 -9
  163. package/scss/_reboot.scss +31 -58
  164. package/scss/_root.scss +41 -21
  165. package/scss/_spinners.scss +37 -21
  166. package/scss/_subheader.scss +9 -9
  167. package/scss/_tables.scss +34 -36
  168. package/scss/_toasts.scss +35 -19
  169. package/scss/_tooltip.scss +61 -56
  170. package/scss/_utilities.scss +42 -27
  171. package/scss/_variables.scss +169 -148
  172. package/scss/bootstrap-reboot.scss +14 -0
  173. package/scss/coreui-grid.rtl.scss +2 -2
  174. package/scss/coreui-grid.scss +3 -2
  175. package/scss/coreui-reboot.rtl.scss +2 -2
  176. package/scss/coreui-reboot.scss +2 -2
  177. package/scss/coreui-utilities.rtl.scss +2 -2
  178. package/scss/coreui-utilities.scss +3 -2
  179. package/scss/coreui.rtl.scss +2 -2
  180. package/scss/coreui.scss +3 -2
  181. package/scss/forms/_floating-labels.scss +14 -3
  182. package/scss/forms/_form-check.scss +42 -19
  183. package/scss/forms/_form-control.scss +25 -50
  184. package/scss/forms/_form-range.scss +8 -8
  185. package/scss/forms/_form-select.scss +8 -8
  186. package/scss/forms/_form-text.scss +1 -1
  187. package/scss/forms/_input-group.scss +3 -3
  188. package/scss/forms/_labels.scss +2 -2
  189. package/scss/helpers/_color-bg.scss +10 -0
  190. package/scss/helpers/_colored-links.scss +2 -2
  191. package/scss/helpers/_position.scss +7 -1
  192. package/scss/helpers/_ratio.scss +2 -2
  193. package/scss/helpers/_vr.scss +1 -0
  194. package/scss/mixins/_alert.scss +10 -10
  195. package/scss/mixins/_breakpoints.scss +8 -8
  196. package/scss/mixins/_buttons.scss +45 -47
  197. package/scss/mixins/_container.scss +4 -2
  198. package/scss/mixins/_css-vars.scss +47 -47
  199. package/scss/mixins/_forms.scss +10 -2
  200. package/scss/mixins/_gradients.scss +1 -1
  201. package/scss/mixins/_grid.scss +11 -11
  202. package/scss/mixins/_list-group.scss +7 -9
  203. package/scss/mixins/_pagination.scss +4 -25
  204. package/scss/mixins/_table-variants.scss +20 -12
  205. package/scss/mixins/_utilities.scss +8 -3
  206. package/scss/sidebar/_sidebar-narrow.scss +10 -10
  207. package/scss/sidebar/_sidebar-nav.scss +33 -32
  208. package/scss/sidebar/_sidebar.scss +110 -56
@@ -1,39 +1,17 @@
1
1
  /*!
2
- * CoreUI event-handler.js v4.1.4 (https://coreui.io)
2
+ * CoreUI event-handler.js v4.2.0 (https://coreui.io)
3
3
  * Copyright 2022 The CoreUI Team (https://github.com/orgs/coreui/people)
4
4
  * Licensed under MIT (https://coreui.io)
5
5
  */
6
6
  (function (global, factory) {
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';
7
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('../util/index')) :
8
+ typeof define === 'function' && define.amd ? define(['../util/index'], factory) :
9
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.EventHandler = factory(global.Index));
10
+ })(this, (function (index) { 'use strict';
11
11
 
12
12
  /**
13
13
  * --------------------------------------------------------------------------
14
- * CoreUI (v4.1.4): alert.js
15
- * Licensed under MIT (https://coreui.io/license)
16
- *
17
- * This component is a modified version of the Bootstrap's util/index.js
18
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
19
- * --------------------------------------------------------------------------
20
- */
21
-
22
- const getjQuery = () => {
23
- const {
24
- jQuery
25
- } = window;
26
-
27
- if (jQuery && !document.body.hasAttribute('data-coreui-no-jquery')) {
28
- return jQuery;
29
- }
30
-
31
- return null;
32
- };
33
-
34
- /**
35
- * --------------------------------------------------------------------------
36
- * CoreUI (v4.1.4): dom/event-handler.js
14
+ * CoreUI (v4.2.0): dom/event-handler.js
37
15
  * Licensed under MIT (https://coreui.io/license)
38
16
  *
39
17
  * This component is a modified version of the Bootstrap's dom/event-handler.js
@@ -41,9 +19,7 @@
41
19
  * --------------------------------------------------------------------------
42
20
  */
43
21
  /**
44
- * ------------------------------------------------------------------------
45
22
  * Constants
46
- * ------------------------------------------------------------------------
47
23
  */
48
24
 
49
25
  const namespaceRegex = /[^.]*(?=\..*)\.|.*/;
@@ -56,20 +32,17 @@
56
32
  mouseenter: 'mouseover',
57
33
  mouseleave: 'mouseout'
58
34
  };
59
- const customEventsRegex = /^(mouseenter|mouseleave)/i;
60
35
  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']);
61
36
  /**
62
- * ------------------------------------------------------------------------
63
37
  * Private methods
64
- * ------------------------------------------------------------------------
65
38
  */
66
39
 
67
- function getUidEvent(element, uid) {
40
+ function makeEventUid(element, uid) {
68
41
  return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++;
69
42
  }
70
43
 
71
- function getEvent(element) {
72
- const uid = getUidEvent(element);
44
+ function getElementEvents(element) {
45
+ const uid = makeEventUid(element);
73
46
  element.uidEvent = uid;
74
47
  eventRegistry[uid] = eventRegistry[uid] || {};
75
48
  return eventRegistry[uid];
@@ -94,65 +67,50 @@
94
67
  for (let {
95
68
  target
96
69
  } = event; target && target !== this; target = target.parentNode) {
97
- for (let i = domElements.length; i--;) {
98
- if (domElements[i] === target) {
99
- event.delegateTarget = target;
70
+ for (const domElement of domElements) {
71
+ if (domElement !== target) {
72
+ continue;
73
+ }
100
74
 
101
- if (handler.oneOff) {
102
- EventHandler.off(element, event.type, selector, fn);
103
- }
75
+ event.delegateTarget = target;
104
76
 
105
- return fn.apply(target, [event]);
77
+ if (handler.oneOff) {
78
+ EventHandler.off(element, event.type, selector, fn);
106
79
  }
107
- }
108
- } // To please ESLint
109
-
110
80
 
111
- return null;
81
+ return fn.apply(target, [event]);
82
+ }
83
+ }
112
84
  };
113
85
  }
114
86
 
115
- function findHandler(events, handler, delegationSelector = null) {
116
- const uidEventList = Object.keys(events);
117
-
118
- for (let i = 0, len = uidEventList.length; i < len; i++) {
119
- const event = events[uidEventList[i]];
120
-
121
- if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {
122
- return event;
123
- }
124
- }
125
-
126
- return null;
87
+ function findHandler(events, callable, delegationSelector = null) {
88
+ return Object.values(events).find(event => event.callable === callable && event.delegationSelector === delegationSelector);
127
89
  }
128
90
 
129
- function normalizeParams(originalTypeEvent, handler, delegationFn) {
130
- const delegation = typeof handler === 'string';
131
- const originalHandler = delegation ? delegationFn : handler;
91
+ function normalizeParameters(originalTypeEvent, handler, delegationFunction) {
92
+ const isDelegated = typeof handler === 'string'; // todo: tooltip passes `false` instead of selector, so we need to check
93
+
94
+ const callable = isDelegated ? delegationFunction : handler || delegationFunction;
132
95
  let typeEvent = getTypeEvent(originalTypeEvent);
133
- const isNative = nativeEvents.has(typeEvent);
134
96
 
135
- if (!isNative) {
97
+ if (!nativeEvents.has(typeEvent)) {
136
98
  typeEvent = originalTypeEvent;
137
99
  }
138
100
 
139
- return [delegation, originalHandler, typeEvent];
101
+ return [isDelegated, callable, typeEvent];
140
102
  }
141
103
 
142
- function addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {
104
+ function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {
143
105
  if (typeof originalTypeEvent !== 'string' || !element) {
144
106
  return;
145
107
  }
146
108
 
147
- if (!handler) {
148
- handler = delegationFn;
149
- delegationFn = null;
150
- } // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position
109
+ let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction); // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position
151
110
  // this prevents the handler from being dispatched the same way as mouseover or mouseout does
152
111
 
153
-
154
- if (customEventsRegex.test(originalTypeEvent)) {
155
- const wrapFn = fn => {
112
+ if (originalTypeEvent in customEvents) {
113
+ const wrapFunction = fn => {
156
114
  return function (event) {
157
115
  if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) {
158
116
  return fn.call(this, event);
@@ -160,31 +118,26 @@
160
118
  };
161
119
  };
162
120
 
163
- if (delegationFn) {
164
- delegationFn = wrapFn(delegationFn);
165
- } else {
166
- handler = wrapFn(handler);
167
- }
121
+ callable = wrapFunction(callable);
168
122
  }
169
123
 
170
- const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn);
171
- const events = getEvent(element);
124
+ const events = getElementEvents(element);
172
125
  const handlers = events[typeEvent] || (events[typeEvent] = {});
173
- const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null);
126
+ const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);
174
127
 
175
- if (previousFn) {
176
- previousFn.oneOff = previousFn.oneOff && oneOff;
128
+ if (previousFunction) {
129
+ previousFunction.oneOff = previousFunction.oneOff && oneOff;
177
130
  return;
178
131
  }
179
132
 
180
- const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''));
181
- const fn = delegation ? bootstrapDelegationHandler(element, handler, delegationFn) : bootstrapHandler(element, handler);
182
- fn.delegationSelector = delegation ? handler : null;
183
- fn.originalHandler = originalHandler;
133
+ const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''));
134
+ const fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable);
135
+ fn.delegationSelector = isDelegated ? handler : null;
136
+ fn.callable = callable;
184
137
  fn.oneOff = oneOff;
185
138
  fn.uidEvent = uid;
186
139
  handlers[uid] = fn;
187
- element.addEventListener(typeEvent, fn, delegation);
140
+ element.addEventListener(typeEvent, fn, isDelegated);
188
141
  }
189
142
 
190
143
  function removeHandler(element, events, typeEvent, handler, delegationSelector) {
@@ -200,12 +153,13 @@
200
153
 
201
154
  function removeNamespacedHandlers(element, events, typeEvent, namespace) {
202
155
  const storeElementEvent = events[typeEvent] || {};
203
- Object.keys(storeElementEvent).forEach(handlerKey => {
156
+
157
+ for (const handlerKey of Object.keys(storeElementEvent)) {
204
158
  if (handlerKey.includes(namespace)) {
205
159
  const event = storeElementEvent[handlerKey];
206
- removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector);
160
+ removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);
207
161
  }
208
- });
162
+ }
209
163
  }
210
164
 
211
165
  function getTypeEvent(event) {
@@ -215,49 +169,49 @@
215
169
  }
216
170
 
217
171
  const EventHandler = {
218
- on(element, event, handler, delegationFn) {
219
- addHandler(element, event, handler, delegationFn, false);
172
+ on(element, event, handler, delegationFunction) {
173
+ addHandler(element, event, handler, delegationFunction, false);
220
174
  },
221
175
 
222
- one(element, event, handler, delegationFn) {
223
- addHandler(element, event, handler, delegationFn, true);
176
+ one(element, event, handler, delegationFunction) {
177
+ addHandler(element, event, handler, delegationFunction, true);
224
178
  },
225
179
 
226
- off(element, originalTypeEvent, handler, delegationFn) {
180
+ off(element, originalTypeEvent, handler, delegationFunction) {
227
181
  if (typeof originalTypeEvent !== 'string' || !element) {
228
182
  return;
229
183
  }
230
184
 
231
- const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn);
185
+ const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);
232
186
  const inNamespace = typeEvent !== originalTypeEvent;
233
- const events = getEvent(element);
187
+ const events = getElementEvents(element);
188
+ const storeElementEvent = events[typeEvent] || {};
234
189
  const isNamespace = originalTypeEvent.startsWith('.');
235
190
 
236
- if (typeof originalHandler !== 'undefined') {
191
+ if (typeof callable !== 'undefined') {
237
192
  // Simplest case: handler is passed, remove that listener ONLY.
238
- if (!events || !events[typeEvent]) {
193
+ if (!Object.keys(storeElementEvent).length) {
239
194
  return;
240
195
  }
241
196
 
242
- removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null);
197
+ removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);
243
198
  return;
244
199
  }
245
200
 
246
201
  if (isNamespace) {
247
- Object.keys(events).forEach(elementEvent => {
202
+ for (const elementEvent of Object.keys(events)) {
248
203
  removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));
249
- });
204
+ }
250
205
  }
251
206
 
252
- const storeElementEvent = events[typeEvent] || {};
253
- Object.keys(storeElementEvent).forEach(keyHandlers => {
207
+ for (const keyHandlers of Object.keys(storeElementEvent)) {
254
208
  const handlerKey = keyHandlers.replace(stripUidRegex, '');
255
209
 
256
210
  if (!inNamespace || originalTypeEvent.includes(handlerKey)) {
257
211
  const event = storeElementEvent[keyHandlers];
258
- removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector);
212
+ removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);
259
213
  }
260
- });
214
+ }
261
215
  },
262
216
 
263
217
  trigger(element, event, args) {
@@ -265,15 +219,13 @@
265
219
  return null;
266
220
  }
267
221
 
268
- const $ = getjQuery();
222
+ const $ = index.getjQuery();
269
223
  const typeEvent = getTypeEvent(event);
270
224
  const inNamespace = event !== typeEvent;
271
- const isNative = nativeEvents.has(typeEvent);
272
- let jQueryEvent;
225
+ let jQueryEvent = null;
273
226
  let bubbles = true;
274
227
  let nativeDispatch = true;
275
228
  let defaultPrevented = false;
276
- let evt = null;
277
229
 
278
230
  if (inNamespace && $) {
279
231
  jQueryEvent = $.Event(event, args);
@@ -283,27 +235,11 @@
283
235
  defaultPrevented = jQueryEvent.isDefaultPrevented();
284
236
  }
285
237
 
286
- if (isNative) {
287
- evt = document.createEvent('HTMLEvents');
288
- evt.initEvent(typeEvent, bubbles, true);
289
- } else {
290
- evt = new CustomEvent(event, {
291
- bubbles,
292
- cancelable: true
293
- });
294
- } // merge custom information in our event
295
-
296
-
297
- if (typeof args !== 'undefined') {
298
- Object.keys(args).forEach(key => {
299
- Object.defineProperty(evt, key, {
300
- get() {
301
- return args[key];
302
- }
303
-
304
- });
305
- });
306
- }
238
+ let evt = new Event(event, {
239
+ bubbles,
240
+ cancelable: true
241
+ });
242
+ evt = hydrateObj(evt, args);
307
243
 
308
244
  if (defaultPrevented) {
309
245
  evt.preventDefault();
@@ -313,7 +249,7 @@
313
249
  element.dispatchEvent(evt);
314
250
  }
315
251
 
316
- if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {
252
+ if (evt.defaultPrevented && jQueryEvent) {
317
253
  jQueryEvent.preventDefault();
318
254
  }
319
255
 
@@ -322,6 +258,19 @@
322
258
 
323
259
  };
324
260
 
261
+ function hydrateObj(obj, meta) {
262
+ for (const [key, value] of Object.entries(meta || {})) {
263
+ Object.defineProperty(obj, key, {
264
+ get() {
265
+ return value;
266
+ }
267
+
268
+ });
269
+ }
270
+
271
+ return obj;
272
+ }
273
+
325
274
  return EventHandler;
326
275
 
327
276
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"event-handler.js","sources":["../../src/util/index.js","../../src/dom/event-handler.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * CoreUI (v4.1.4): alert.js\n * Licensed under MIT (https://coreui.io/license)\n *\n * This component is a modified version of the Bootstrap's util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1_000_000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nconst toType = object => {\n if (object === null || object === undefined) {\n return `${object}`\n }\n\n return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID)\n } while (document.getElementById(prefix))\n\n return prefix\n}\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-coreui-target')\n\n if (!selector || selector === '#') {\n let hrefAttr = element.getAttribute('href')\n\n // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n if (!hrefAttr || (!hrefAttr.includes('#') && !hrefAttr.startsWith('.'))) {\n return null\n }\n\n // Just in case some CMS puts out a full URL with the anchor appended\n if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {\n hrefAttr = `#${hrefAttr.split('#')[1]}`\n }\n\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null\n }\n\n return selector\n}\n\nconst getSelectorFromElement = element => {\n const selector = getSelector(element)\n\n if (selector) {\n return document.querySelector(selector) ? selector : null\n }\n\n return null\n}\n\nconst getElementFromSelector = element => {\n const selector = getSelector(element)\n\n return selector ? document.querySelector(selector) : null\n}\n\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration)\n const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = obj => {\n if (!obj || typeof obj !== 'object') {\n return false\n }\n\n if (typeof obj.jquery !== 'undefined') {\n obj = obj[0]\n }\n\n return typeof obj.nodeType !== 'undefined'\n}\n\nconst getElement = obj => {\n if (isElement(obj)) { // it's a jQuery object or a node element\n return obj.jquery ? obj[0] : obj\n }\n\n if (typeof obj === 'string' && obj.length > 0) {\n return document.querySelector(obj)\n }\n\n return null\n}\n\nconst typeCheckConfig = (componentName, config, configTypes) => {\n Object.keys(configTypes).forEach(property => {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && isElement(value) ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(\n `${componentName.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n })\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n // Handle `details` element as its content may falsie appear visible when it is closed\n const closedDetails = element.closest('details:not([open])')\n\n if (!closedDetails) {\n return elementIsVisible\n }\n\n if (closedDetails !== element) {\n const summary = element.closest('summary')\n if (summary && summary.parentNode !== closedDetails) {\n return false\n }\n\n if (summary === null) {\n return false\n }\n }\n\n return elementIsVisible\n}\n\nconst isDisabled = element => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true\n }\n\n if (element.classList.contains('disabled')) {\n return true\n }\n\n if (typeof element.disabled !== 'undefined') {\n return element.disabled\n }\n\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n // eslint-disable-next-line no-unused-expressions\n element.offsetHeight\n}\n\nconst getjQuery = () => {\n const { jQuery } = window\n\n if (jQuery && !document.body.hasAttribute('data-coreui-no-jquery')) {\n return jQuery\n }\n\n return null\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n DOMContentLoadedCallbacks.forEach(callback => callback())\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME\n const JQUERY_NO_CONFLICT = $.fn[name]\n $.fn[name] = plugin.jQueryInterface\n $.fn[name].Constructor = plugin\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT\n return plugin.jQueryInterface\n }\n }\n })\n}\n\nconst execute = callback => {\n if (typeof callback === 'function') {\n callback()\n }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element depending on the direction and if cycle is allowed\n if (index === -1) {\n return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]\n }\n\n const listLength = list.length\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n getElement,\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n typeCheckConfig,\n isVisible,\n isDisabled,\n findShadowRoot,\n noop,\n getNextActiveElement,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL,\n defineJQueryPlugin,\n execute,\n executeAfterTransition\n}\n","/**\n * --------------------------------------------------------------------------\n * CoreUI (v4.1.4): dom/event-handler.js\n * Licensed under MIT (https://coreui.io/license)\n *\n * This component is a modified version of the Bootstrap's dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n}\nconst customEventsRegex = /^(mouseenter|mouseleave)/i\nconst nativeEvents = new Set([\n 'click',\n 'dblclick',\n 'mouseup',\n 'mousedown',\n 'contextmenu',\n 'mousewheel',\n 'DOMMouseScroll',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'selectstart',\n 'selectend',\n 'keydown',\n 'keypress',\n 'keyup',\n 'orientationchange',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointerleave',\n 'pointercancel',\n 'gesturestart',\n 'gesturechange',\n 'gestureend',\n 'focus',\n 'blur',\n 'change',\n 'reset',\n 'select',\n 'submit',\n 'focusin',\n 'focusout',\n 'load',\n 'unload',\n 'beforeunload',\n 'resize',\n 'move',\n 'DOMContentLoaded',\n 'readystatechange',\n 'error',\n 'abort',\n 'scroll'\n])\n\n/**\n * ------------------------------------------------------------------------\n * Private methods\n * ------------------------------------------------------------------------\n */\n\nfunction getUidEvent(element, uid) {\n return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getEvent(element) {\n const uid = getUidEvent(element)\n\n element.uidEvent = uid\n eventRegistry[uid] = eventRegistry[uid] || {}\n\n return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n event.delegateTarget = element\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn)\n }\n\n return fn.apply(element, [event])\n }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector)\n\n for (let { target } = event; target && target !== this; target = target.parentNode) {\n for (let i = domElements.length; i--;) {\n if (domElements[i] === target) {\n event.delegateTarget = target\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, selector, fn)\n }\n\n return fn.apply(target, [event])\n }\n }\n }\n\n // To please ESLint\n return null\n }\n}\n\nfunction findHandler(events, handler, delegationSelector = null) {\n const uidEventList = Object.keys(events)\n\n for (let i = 0, len = uidEventList.length; i < len; i++) {\n const event = events[uidEventList[i]]\n\n if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {\n return event\n }\n }\n\n return null\n}\n\nfunction normalizeParams(originalTypeEvent, handler, delegationFn) {\n const delegation = typeof handler === 'string'\n const originalHandler = delegation ? delegationFn : handler\n\n let typeEvent = getTypeEvent(originalTypeEvent)\n const isNative = nativeEvents.has(typeEvent)\n\n if (!isNative) {\n typeEvent = originalTypeEvent\n }\n\n return [delegation, originalHandler, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n if (!handler) {\n handler = delegationFn\n delegationFn = null\n }\n\n // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n if (customEventsRegex.test(originalTypeEvent)) {\n const wrapFn = fn => {\n return function (event) {\n if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n return fn.call(this, event)\n }\n }\n }\n\n if (delegationFn) {\n delegationFn = wrapFn(delegationFn)\n } else {\n handler = wrapFn(handler)\n }\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n const events = getEvent(element)\n const handlers = events[typeEvent] || (events[typeEvent] = {})\n const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null)\n\n if (previousFn) {\n previousFn.oneOff = previousFn.oneOff && oneOff\n\n return\n }\n\n const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''))\n const fn = delegation ?\n bootstrapDelegationHandler(element, handler, delegationFn) :\n bootstrapHandler(element, handler)\n\n fn.delegationSelector = delegation ? handler : null\n fn.originalHandler = originalHandler\n fn.oneOff = oneOff\n fn.uidEvent = uid\n handlers[uid] = fn\n\n element.addEventListener(typeEvent, fn, delegation)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n if (!fn) {\n return\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {}\n\n Object.keys(storeElementEvent).forEach(handlerKey => {\n if (handlerKey.includes(namespace)) {\n const event = storeElementEvent[handlerKey]\n\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n }\n })\n}\n\nfunction getTypeEvent(event) {\n // allow to get the native events from namespaced events ('click.coreui.button' --> 'click')\n event = event.replace(stripNameRegex, '')\n return customEvents[event] || event\n}\n\nconst EventHandler = {\n on(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, false)\n },\n\n one(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, true)\n },\n\n off(element, originalTypeEvent, handler, delegationFn) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n const inNamespace = typeEvent !== originalTypeEvent\n const events = getEvent(element)\n const isNamespace = originalTypeEvent.startsWith('.')\n\n if (typeof originalHandler !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!events || !events[typeEvent]) {\n return\n }\n\n removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null)\n return\n }\n\n if (isNamespace) {\n Object.keys(events).forEach(elementEvent => {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n })\n }\n\n const storeElementEvent = events[typeEvent] || {}\n Object.keys(storeElementEvent).forEach(keyHandlers => {\n const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n const event = storeElementEvent[keyHandlers]\n\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n }\n })\n },\n\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null\n }\n\n const $ = getjQuery()\n const typeEvent = getTypeEvent(event)\n const inNamespace = event !== typeEvent\n const isNative = nativeEvents.has(typeEvent)\n\n let jQueryEvent\n let bubbles = true\n let nativeDispatch = true\n let defaultPrevented = false\n let evt = null\n\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args)\n\n $(element).trigger(jQueryEvent)\n bubbles = !jQueryEvent.isPropagationStopped()\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n defaultPrevented = jQueryEvent.isDefaultPrevented()\n }\n\n if (isNative) {\n evt = document.createEvent('HTMLEvents')\n evt.initEvent(typeEvent, bubbles, true)\n } else {\n evt = new CustomEvent(event, {\n bubbles,\n cancelable: true\n })\n }\n\n // merge custom information in our event\n if (typeof args !== 'undefined') {\n Object.keys(args).forEach(key => {\n Object.defineProperty(evt, key, {\n get() {\n return args[key]\n }\n })\n })\n }\n\n if (defaultPrevented) {\n evt.preventDefault()\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt)\n }\n\n if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {\n jQueryEvent.preventDefault()\n }\n\n return evt\n }\n}\n\nexport default EventHandler\n"],"names":["getjQuery","jQuery","window","document","body","hasAttribute","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","customEventsRegex","nativeEvents","Set","getUidEvent","element","uid","getEvent","bootstrapHandler","fn","handler","event","delegateTarget","oneOff","EventHandler","off","type","apply","bootstrapDelegationHandler","selector","domElements","querySelectorAll","target","parentNode","i","length","findHandler","events","delegationSelector","uidEventList","Object","keys","len","originalHandler","normalizeParams","originalTypeEvent","delegationFn","delegation","typeEvent","getTypeEvent","isNative","has","addHandler","test","wrapFn","relatedTarget","contains","call","handlers","previousFn","replace","addEventListener","removeHandler","removeEventListener","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","forEach","handlerKey","includes","on","one","inNamespace","isNamespace","startsWith","elementEvent","slice","keyHandlers","trigger","args","$","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","evt","Event","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","createEvent","initEvent","CustomEvent","cancelable","key","defineProperty","get","preventDefault","dispatchEvent"],"mappings":"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"}
1
+ {"version":3,"file":"event-handler.js","sources":["../../src/dom/event-handler.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * CoreUI (v4.2.0): dom/event-handler.js\n * Licensed under MIT (https://coreui.io/license)\n *\n * This component is a modified version of the Bootstrap's dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index'\n\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n}\n\nconst nativeEvents = new Set([\n 'click',\n 'dblclick',\n 'mouseup',\n 'mousedown',\n 'contextmenu',\n 'mousewheel',\n 'DOMMouseScroll',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'selectstart',\n 'selectend',\n 'keydown',\n 'keypress',\n 'keyup',\n 'orientationchange',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointerleave',\n 'pointercancel',\n 'gesturestart',\n 'gesturechange',\n 'gestureend',\n 'focus',\n 'blur',\n 'change',\n 'reset',\n 'select',\n 'submit',\n 'focusin',\n 'focusout',\n 'load',\n 'unload',\n 'beforeunload',\n 'resize',\n 'move',\n 'DOMContentLoaded',\n 'readystatechange',\n 'error',\n 'abort',\n 'scroll'\n])\n\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getElementEvents(element) {\n const uid = makeEventUid(element)\n\n element.uidEvent = uid\n eventRegistry[uid] = eventRegistry[uid] || {}\n\n return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n event.delegateTarget = element\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn)\n }\n\n return fn.apply(element, [event])\n }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector)\n\n for (let { target } = event; target && target !== this; target = target.parentNode) {\n for (const domElement of domElements) {\n if (domElement !== target) {\n continue\n }\n\n event.delegateTarget = target\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, selector, fn)\n }\n\n return fn.apply(target, [event])\n }\n }\n }\n}\n\nfunction findHandler(events, callable, delegationSelector = null) {\n return Object.values(events)\n .find(event => event.callable === callable && event.delegationSelector === delegationSelector)\n}\n\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n const isDelegated = typeof handler === 'string'\n // todo: tooltip passes `false` instead of selector, so we need to check\n const callable = isDelegated ? delegationFunction : (handler || delegationFunction)\n let typeEvent = getTypeEvent(originalTypeEvent)\n\n if (!nativeEvents.has(typeEvent)) {\n typeEvent = originalTypeEvent\n }\n\n return [isDelegated, callable, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n\n // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n if (originalTypeEvent in customEvents) {\n const wrapFunction = fn => {\n return function (event) {\n if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n return fn.call(this, event)\n }\n }\n }\n\n callable = wrapFunction(callable)\n }\n\n const events = getElementEvents(element)\n const handlers = events[typeEvent] || (events[typeEvent] = {})\n const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null)\n\n if (previousFunction) {\n previousFunction.oneOff = previousFunction.oneOff && oneOff\n\n return\n }\n\n const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''))\n const fn = isDelegated ?\n bootstrapDelegationHandler(element, handler, callable) :\n bootstrapHandler(element, callable)\n\n fn.delegationSelector = isDelegated ? handler : null\n fn.callable = callable\n fn.oneOff = oneOff\n fn.uidEvent = uid\n handlers[uid] = fn\n\n element.addEventListener(typeEvent, fn, isDelegated)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n if (!fn) {\n return\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {}\n\n for (const handlerKey of Object.keys(storeElementEvent)) {\n if (handlerKey.includes(namespace)) {\n const event = storeElementEvent[handlerKey]\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n }\n }\n}\n\nfunction getTypeEvent(event) {\n // allow to get the native events from namespaced events ('click.coreui.button' --> 'click')\n event = event.replace(stripNameRegex, '')\n return customEvents[event] || event\n}\n\nconst EventHandler = {\n on(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, false)\n },\n\n one(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, true)\n },\n\n off(element, originalTypeEvent, handler, delegationFunction) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n const inNamespace = typeEvent !== originalTypeEvent\n const events = getElementEvents(element)\n const storeElementEvent = events[typeEvent] || {}\n const isNamespace = originalTypeEvent.startsWith('.')\n\n if (typeof callable !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!Object.keys(storeElementEvent).length) {\n return\n }\n\n removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null)\n return\n }\n\n if (isNamespace) {\n for (const elementEvent of Object.keys(events)) {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n }\n }\n\n for (const keyHandlers of Object.keys(storeElementEvent)) {\n const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n const event = storeElementEvent[keyHandlers]\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n }\n }\n },\n\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null\n }\n\n const $ = getjQuery()\n const typeEvent = getTypeEvent(event)\n const inNamespace = event !== typeEvent\n\n let jQueryEvent = null\n let bubbles = true\n let nativeDispatch = true\n let defaultPrevented = false\n\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args)\n\n $(element).trigger(jQueryEvent)\n bubbles = !jQueryEvent.isPropagationStopped()\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n defaultPrevented = jQueryEvent.isDefaultPrevented()\n }\n\n let evt = new Event(event, { bubbles, cancelable: true })\n evt = hydrateObj(evt, args)\n\n if (defaultPrevented) {\n evt.preventDefault()\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt)\n }\n\n if (evt.defaultPrevented && jQueryEvent) {\n jQueryEvent.preventDefault()\n }\n\n return evt\n }\n}\n\nfunction hydrateObj(obj, meta) {\n for (const [key, value] of Object.entries(meta || {})) {\n Object.defineProperty(obj, key, {\n get() {\n return value\n }\n })\n }\n\n return obj\n}\n\nexport default EventHandler\n"],"names":["namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","Set","makeEventUid","element","uid","getElementEvents","bootstrapHandler","fn","handler","event","delegateTarget","oneOff","EventHandler","off","type","apply","bootstrapDelegationHandler","selector","domElements","querySelectorAll","target","parentNode","domElement","findHandler","events","callable","delegationSelector","Object","values","find","normalizeParameters","originalTypeEvent","delegationFunction","isDelegated","typeEvent","getTypeEvent","has","addHandler","wrapFunction","relatedTarget","contains","call","handlers","previousFunction","replace","addEventListener","removeHandler","removeEventListener","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","keys","includes","on","one","inNamespace","isNamespace","startsWith","length","elementEvent","slice","keyHandlers","trigger","args","$","getjQuery","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","Event","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","evt","cancelable","hydrateObj","preventDefault","dispatchEvent","obj","meta","key","value","entries","defineProperty","get"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * CoreUI manipulator.js v4.1.4 (https://coreui.io)
2
+ * CoreUI manipulator.js v4.2.0 (https://coreui.io)
3
3
  * Copyright 2022 The CoreUI Team (https://github.com/orgs/coreui/people)
4
4
  * Licensed under MIT (https://coreui.io)
5
5
  */
@@ -11,31 +11,39 @@
11
11
 
12
12
  /**
13
13
  * --------------------------------------------------------------------------
14
- * CoreUI (v4.1.4): dom/manipulator.js
14
+ * CoreUI (v4.2.0): dom/manipulator.js
15
15
  * Licensed under MIT (https://coreui.io/license)
16
16
  *
17
17
  * This component is a modified version of the Bootstrap's dom/manipulator.js
18
18
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
19
19
  * --------------------------------------------------------------------------
20
20
  */
21
- function normalizeData(val) {
22
- if (val === 'true') {
21
+ function normalizeData(value) {
22
+ if (value === 'true') {
23
23
  return true;
24
24
  }
25
25
 
26
- if (val === 'false') {
26
+ if (value === 'false') {
27
27
  return false;
28
28
  }
29
29
 
30
- if (val === Number(val).toString()) {
31
- return Number(val);
30
+ if (value === Number(value).toString()) {
31
+ return Number(value);
32
32
  }
33
33
 
34
- if (val === '' || val === 'null') {
34
+ if (value === '' || value === 'null') {
35
35
  return null;
36
36
  }
37
37
 
38
- return val;
38
+ if (typeof value !== 'string') {
39
+ return value;
40
+ }
41
+
42
+ try {
43
+ return JSON.parse(decodeURIComponent(value));
44
+ } catch (_unused) {
45
+ return value;
46
+ }
39
47
  }
40
48
 
41
49
  function normalizeDataKey(key) {
@@ -57,31 +65,19 @@
57
65
  }
58
66
 
59
67
  const attributes = {};
60
- Object.keys(element.dataset).filter(key => key.startsWith('coreui')).forEach(key => {
68
+ const coreuiKeys = Object.keys(element.dataset).filter(key => key.startsWith('coreui') && !key.startsWith('coreuiConfig'));
69
+
70
+ for (const key of coreuiKeys) {
61
71
  let pureKey = key.replace(/^coreui/, '');
62
72
  pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);
63
73
  attributes[pureKey] = normalizeData(element.dataset[key]);
64
- });
74
+ }
75
+
65
76
  return attributes;
66
77
  },
67
78
 
68
79
  getDataAttribute(element, key) {
69
80
  return normalizeData(element.getAttribute(`data-coreui-${normalizeDataKey(key)}`));
70
- },
71
-
72
- offset(element) {
73
- const rect = element.getBoundingClientRect();
74
- return {
75
- top: rect.top + window.pageYOffset,
76
- left: rect.left + window.pageXOffset
77
- };
78
- },
79
-
80
- position(element) {
81
- return {
82
- top: element.offsetTop,
83
- left: element.offsetLeft
84
- };
85
81
  }
86
82
 
87
83
  };
@@ -1 +1 @@
1
- {"version":3,"file":"manipulator.js","sources":["../../src/dom/manipulator.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * CoreUI (v4.1.4): dom/manipulator.js\n * Licensed under MIT (https://coreui.io/license)\n *\n * This component is a modified version of the Bootstrap's dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(val) {\n if (val === 'true') {\n return true\n }\n\n if (val === 'false') {\n return false\n }\n\n if (val === Number(val).toString()) {\n return Number(val)\n }\n\n if (val === '' || val === 'null') {\n return null\n }\n\n return val\n}\n\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-coreui-${normalizeDataKey(key)}`, value)\n },\n\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-coreui-${normalizeDataKey(key)}`)\n },\n\n getDataAttributes(element) {\n if (!element) {\n return {}\n }\n\n const attributes = {}\n\n Object.keys(element.dataset)\n .filter(key => key.startsWith('coreui'))\n .forEach(key => {\n let pureKey = key.replace(/^coreui/, '')\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)\n attributes[pureKey] = normalizeData(element.dataset[key])\n })\n\n return attributes\n },\n\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-coreui-${normalizeDataKey(key)}`))\n },\n\n offset(element) {\n const rect = element.getBoundingClientRect()\n\n return {\n top: rect.top + window.pageYOffset,\n left: rect.left + window.pageXOffset\n }\n },\n\n position(element) {\n return {\n top: element.offsetTop,\n left: element.offsetLeft\n }\n }\n}\n\nexport default Manipulator\n"],"names":["normalizeData","val","Number","toString","normalizeDataKey","key","replace","chr","toLowerCase","Manipulator","setDataAttribute","element","value","setAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","Object","keys","dataset","filter","startsWith","forEach","pureKey","charAt","slice","length","getDataAttribute","getAttribute","offset","rect","getBoundingClientRect","top","window","pageYOffset","left","pageXOffset","position","offsetTop","offsetLeft"],"mappings":"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"}
1
+ {"version":3,"file":"manipulator.js","sources":["../../src/dom/manipulator.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * CoreUI (v4.2.0): dom/manipulator.js\n * Licensed under MIT (https://coreui.io/license)\n *\n * This component is a modified version of the Bootstrap's dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(value) {\n if (value === 'true') {\n return true\n }\n\n if (value === 'false') {\n return false\n }\n\n if (value === Number(value).toString()) {\n return Number(value)\n }\n\n if (value === '' || value === 'null') {\n return null\n }\n\n if (typeof value !== 'string') {\n return value\n }\n\n try {\n return JSON.parse(decodeURIComponent(value))\n } catch {\n return value\n }\n}\n\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-coreui-${normalizeDataKey(key)}`, value)\n },\n\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-coreui-${normalizeDataKey(key)}`)\n },\n\n getDataAttributes(element) {\n if (!element) {\n return {}\n }\n\n const attributes = {}\n const coreuiKeys = Object.keys(element.dataset).filter(key => key.startsWith('coreui') && !key.startsWith('coreuiConfig'))\n\n for (const key of coreuiKeys) {\n let pureKey = key.replace(/^coreui/, '')\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)\n attributes[pureKey] = normalizeData(element.dataset[key])\n }\n\n return attributes\n },\n\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-coreui-${normalizeDataKey(key)}`))\n }\n}\n\nexport default Manipulator\n"],"names":["normalizeData","value","Number","toString","JSON","parse","decodeURIComponent","normalizeDataKey","key","replace","chr","toLowerCase","Manipulator","setDataAttribute","element","setAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","coreuiKeys","Object","keys","dataset","filter","startsWith","pureKey","charAt","slice","length","getDataAttribute","getAttribute"],"mappings":"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"}