@coreui/coreui 4.0.2
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.
- package/LICENSE +22 -0
- package/README.md +183 -0
- package/dist/css/coreui-grid.css +5004 -0
- package/dist/css/coreui-grid.css.map +1 -0
- package/dist/css/coreui-grid.min.css +8 -0
- package/dist/css/coreui-grid.min.css.map +1 -0
- package/dist/css/coreui-grid.rtl.css +5011 -0
- package/dist/css/coreui-grid.rtl.css.map +1 -0
- package/dist/css/coreui-grid.rtl.min.css +14 -0
- package/dist/css/coreui-grid.rtl.min.css.map +1 -0
- package/dist/css/coreui-reboot.css +440 -0
- package/dist/css/coreui-reboot.css.map +1 -0
- package/dist/css/coreui-reboot.min.css +8 -0
- package/dist/css/coreui-reboot.min.css.map +1 -0
- package/dist/css/coreui-reboot.rtl.css +441 -0
- package/dist/css/coreui-reboot.rtl.css.map +1 -0
- package/dist/css/coreui-reboot.rtl.min.css +14 -0
- package/dist/css/coreui-reboot.rtl.min.css.map +1 -0
- package/dist/css/coreui-utilities.css +5030 -0
- package/dist/css/coreui-utilities.css.map +1 -0
- package/dist/css/coreui-utilities.min.css +8 -0
- package/dist/css/coreui-utilities.min.css.map +1 -0
- package/dist/css/coreui-utilities.rtl.css +5024 -0
- package/dist/css/coreui-utilities.rtl.css.map +1 -0
- package/dist/css/coreui-utilities.rtl.min.css +14 -0
- package/dist/css/coreui-utilities.rtl.min.css.map +1 -0
- package/dist/css/coreui.css +12152 -0
- package/dist/css/coreui.css.map +1 -0
- package/dist/css/coreui.min.css +8 -0
- package/dist/css/coreui.min.css.map +1 -0
- package/dist/css/coreui.rtl.css +12041 -0
- package/dist/css/coreui.rtl.css.map +1 -0
- package/dist/css/coreui.rtl.min.css +14 -0
- package/dist/css/coreui.rtl.min.css.map +1 -0
- package/dist/js/coreui.bundle.js +7437 -0
- package/dist/js/coreui.bundle.js.map +1 -0
- package/dist/js/coreui.bundle.min.js +7 -0
- package/dist/js/coreui.bundle.min.js.map +1 -0
- package/dist/js/coreui.esm.js +5622 -0
- package/dist/js/coreui.esm.js.map +1 -0
- package/dist/js/coreui.esm.min.js +7 -0
- package/dist/js/coreui.esm.min.js.map +1 -0
- package/dist/js/coreui.js +5673 -0
- package/dist/js/coreui.js.map +1 -0
- package/dist/js/coreui.min.js +7 -0
- package/dist/js/coreui.min.js.map +1 -0
- package/js/dist/alert.js +208 -0
- package/js/dist/alert.js.map +1 -0
- package/js/dist/base-component.js +181 -0
- package/js/dist/base-component.js.map +1 -0
- package/js/dist/button.js +142 -0
- package/js/dist/button.js.map +1 -0
- package/js/dist/carousel.js +724 -0
- package/js/dist/carousel.js.map +1 -0
- package/js/dist/collapse.js +515 -0
- package/js/dist/collapse.js.map +1 -0
- package/js/dist/dom/data.js +72 -0
- package/js/dist/dom/data.js.map +1 -0
- package/js/dist/dom/event-handler.js +319 -0
- package/js/dist/dom/event-handler.js.map +1 -0
- package/js/dist/dom/manipulator.js +92 -0
- package/js/dist/dom/manipulator.js.map +1 -0
- package/js/dist/dom/selector-engine.js +89 -0
- package/js/dist/dom/selector-engine.js.map +1 -0
- package/js/dist/dropdown.js +700 -0
- package/js/dist/dropdown.js.map +1 -0
- package/js/dist/modal.js +891 -0
- package/js/dist/modal.js.map +1 -0
- package/js/dist/offcanvas.js +724 -0
- package/js/dist/offcanvas.js.map +1 -0
- package/js/dist/popover.js +220 -0
- package/js/dist/popover.js.map +1 -0
- package/js/dist/scrollspy.js +387 -0
- package/js/dist/scrollspy.js.map +1 -0
- package/js/dist/tab.js +317 -0
- package/js/dist/tab.js.map +1 -0
- package/js/dist/toast.js +331 -0
- package/js/dist/toast.js.map +1 -0
- package/js/dist/tooltip.js +997 -0
- package/js/dist/tooltip.js.map +1 -0
- package/js/src/alert.js +128 -0
- package/js/src/base-component.js +78 -0
- package/js/src/button.js +89 -0
- package/js/src/carousel.js +589 -0
- package/js/src/collapse.js +391 -0
- package/js/src/dom/data.js +60 -0
- package/js/src/dom/event-handler.js +352 -0
- package/js/src/dom/manipulator.js +83 -0
- package/js/src/dom/selector-engine.js +78 -0
- package/js/src/dropdown.js +517 -0
- package/js/src/modal.js +451 -0
- package/js/src/navigation.js +298 -0
- package/js/src/offcanvas.js +277 -0
- package/js/src/popover.js +173 -0
- package/js/src/scrollspy.js +298 -0
- package/js/src/sidebar.js +347 -0
- package/js/src/tab.js +227 -0
- package/js/src/toast.js +245 -0
- package/js/src/tooltip.js +750 -0
- package/js/src/util/backdrop.js +129 -0
- package/js/src/util/index.js +327 -0
- package/js/src/util/sanitizer.js +130 -0
- package/js/src/util/scrollbar.js +97 -0
- package/package.json +166 -0
- package/scss/_accordion.scss +118 -0
- package/scss/_alert.scss +52 -0
- package/scss/_avatar.scss +49 -0
- package/scss/_badge.scss +38 -0
- package/scss/_breadcrumb.scss +33 -0
- package/scss/_button-group.scss +139 -0
- package/scss/_buttons.scss +143 -0
- package/scss/_callout.scss +16 -0
- package/scss/_card.scss +215 -0
- package/scss/_carousel.scss +231 -0
- package/scss/_close.scss +40 -0
- package/scss/_containers.scss +41 -0
- package/scss/_dropdown.scss +227 -0
- package/scss/_footer.scss +25 -0
- package/scss/_forms.scss +9 -0
- package/scss/_functions.scss +356 -0
- package/scss/_grid.scss +56 -0
- package/scss/_header.scss +170 -0
- package/scss/_helpers.scss +7 -0
- package/scss/_icon.scss +32 -0
- package/scss/_images.scss +42 -0
- package/scss/_list-group.scss +169 -0
- package/scss/_mixins.scss +50 -0
- package/scss/_modal.scss +219 -0
- package/scss/_nav.scss +140 -0
- package/scss/_navbar.scss +254 -0
- package/scss/_offcanvas.scss +79 -0
- package/scss/_pagination.scss +64 -0
- package/scss/_popover.scss +158 -0
- package/scss/_progress.scss +91 -0
- package/scss/_reboot.scss +632 -0
- package/scss/_root.scss +25 -0
- package/scss/_sidebar.scss +3 -0
- package/scss/_spinners.scss +69 -0
- package/scss/_subheader.scss +72 -0
- package/scss/_tables.scss +166 -0
- package/scss/_toasts.scss +52 -0
- package/scss/_tooltip.scss +115 -0
- package/scss/_transitions.scss +21 -0
- package/scss/_type.scss +104 -0
- package/scss/_utilities.scss +678 -0
- package/scss/_variables.scss +1801 -0
- package/scss/coreui-grid.rtl.scss +12 -0
- package/scss/coreui-grid.scss +67 -0
- package/scss/coreui-reboot.rtl.scss +12 -0
- package/scss/coreui-reboot.scss +15 -0
- package/scss/coreui-utilities.rtl.scss +12 -0
- package/scss/coreui-utilities.scss +19 -0
- package/scss/coreui.rtl.scss +12 -0
- package/scss/coreui.scss +61 -0
- package/scss/forms/_floating-labels.scss +63 -0
- package/scss/forms/_form-check.scss +188 -0
- package/scss/forms/_form-control.scss +219 -0
- package/scss/forms/_form-range.scss +91 -0
- package/scss/forms/_form-select.scss +70 -0
- package/scss/forms/_form-text.scss +11 -0
- package/scss/forms/_input-group.scss +121 -0
- package/scss/forms/_labels.scss +36 -0
- package/scss/forms/_validation.scss +12 -0
- package/scss/helpers/_clearfix.scss +3 -0
- package/scss/helpers/_colored-links.scss +12 -0
- package/scss/helpers/_position.scss +30 -0
- package/scss/helpers/_ratio.scss +26 -0
- package/scss/helpers/_stretched-link.scss +15 -0
- package/scss/helpers/_text-truncation.scss +7 -0
- package/scss/helpers/_visually-hidden.scss +8 -0
- package/scss/mixins/_alert.scss +15 -0
- package/scss/mixins/_avatar.scss +10 -0
- package/scss/mixins/_border-radius.scss +78 -0
- package/scss/mixins/_box-shadow.scss +18 -0
- package/scss/mixins/_breakpoints.scss +140 -0
- package/scss/mixins/_buttons.scss +101 -0
- package/scss/mixins/_caret.scss +64 -0
- package/scss/mixins/_clearfix.scss +9 -0
- package/scss/mixins/_color-scheme.scss +7 -0
- package/scss/mixins/_container.scss +9 -0
- package/scss/mixins/_css-vars.scss +87 -0
- package/scss/mixins/_deprecate.scss +10 -0
- package/scss/mixins/_forms.scss +144 -0
- package/scss/mixins/_gradients.scss +47 -0
- package/scss/mixins/_grid.scss +132 -0
- package/scss/mixins/_icon.scss +6 -0
- package/scss/mixins/_image.scss +16 -0
- package/scss/mixins/_list-group.scss +18 -0
- package/scss/mixins/_lists.scss +7 -0
- package/scss/mixins/_ltr-rtl.scss +60 -0
- package/scss/mixins/_pagination.scss +31 -0
- package/scss/mixins/_reset-text.scss +17 -0
- package/scss/mixins/_resize.scss +6 -0
- package/scss/mixins/_table-variants.scss +16 -0
- package/scss/mixins/_text-truncate.scss +8 -0
- package/scss/mixins/_transition.scss +26 -0
- package/scss/mixins/_utilities.scss +104 -0
- package/scss/mixins/_visually-hidden.scss +29 -0
- package/scss/sidebar/_sidebar-narrow.scss +106 -0
- package/scss/sidebar/_sidebar-nav.scss +165 -0
- package/scss/sidebar/_sidebar.scss +261 -0
- package/scss/utilities/_api.scss +47 -0
- package/scss/vendor/_rfs.scss +354 -0
|
@@ -0,0 +1,352 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* --------------------------------------------------------------------------
|
|
3
|
+
* CoreUI (v4.0.2): dom/event-handler.js
|
|
4
|
+
* Licensed under MIT (https://coreui.io/license)
|
|
5
|
+
*
|
|
6
|
+
* This component is a modified version of the Bootstrap's dom/event-handler.js
|
|
7
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
8
|
+
* --------------------------------------------------------------------------
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import { getjQuery } from '../util/index'
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* ------------------------------------------------------------------------
|
|
15
|
+
* Constants
|
|
16
|
+
* ------------------------------------------------------------------------
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
const namespaceRegex = /[^.]*(?=\..*)\.|.*/
|
|
20
|
+
const stripNameRegex = /\..*/
|
|
21
|
+
const stripUidRegex = /::\d+$/
|
|
22
|
+
const eventRegistry = {} // Events storage
|
|
23
|
+
let uidEvent = 1
|
|
24
|
+
const customEvents = {
|
|
25
|
+
mouseenter: 'mouseover',
|
|
26
|
+
mouseleave: 'mouseout'
|
|
27
|
+
}
|
|
28
|
+
const customEventsRegex = /^(mouseenter|mouseleave)/i
|
|
29
|
+
const nativeEvents = new Set([
|
|
30
|
+
'click',
|
|
31
|
+
'dblclick',
|
|
32
|
+
'mouseup',
|
|
33
|
+
'mousedown',
|
|
34
|
+
'contextmenu',
|
|
35
|
+
'mousewheel',
|
|
36
|
+
'DOMMouseScroll',
|
|
37
|
+
'mouseover',
|
|
38
|
+
'mouseout',
|
|
39
|
+
'mousemove',
|
|
40
|
+
'selectstart',
|
|
41
|
+
'selectend',
|
|
42
|
+
'keydown',
|
|
43
|
+
'keypress',
|
|
44
|
+
'keyup',
|
|
45
|
+
'orientationchange',
|
|
46
|
+
'touchstart',
|
|
47
|
+
'touchmove',
|
|
48
|
+
'touchend',
|
|
49
|
+
'touchcancel',
|
|
50
|
+
'pointerdown',
|
|
51
|
+
'pointermove',
|
|
52
|
+
'pointerup',
|
|
53
|
+
'pointerleave',
|
|
54
|
+
'pointercancel',
|
|
55
|
+
'gesturestart',
|
|
56
|
+
'gesturechange',
|
|
57
|
+
'gestureend',
|
|
58
|
+
'focus',
|
|
59
|
+
'blur',
|
|
60
|
+
'change',
|
|
61
|
+
'reset',
|
|
62
|
+
'select',
|
|
63
|
+
'submit',
|
|
64
|
+
'focusin',
|
|
65
|
+
'focusout',
|
|
66
|
+
'load',
|
|
67
|
+
'unload',
|
|
68
|
+
'beforeunload',
|
|
69
|
+
'resize',
|
|
70
|
+
'move',
|
|
71
|
+
'DOMContentLoaded',
|
|
72
|
+
'readystatechange',
|
|
73
|
+
'error',
|
|
74
|
+
'abort',
|
|
75
|
+
'scroll'
|
|
76
|
+
])
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* ------------------------------------------------------------------------
|
|
80
|
+
* Private methods
|
|
81
|
+
* ------------------------------------------------------------------------
|
|
82
|
+
*/
|
|
83
|
+
|
|
84
|
+
function getUidEvent(element, uid) {
|
|
85
|
+
return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
function getEvent(element) {
|
|
89
|
+
const uid = getUidEvent(element)
|
|
90
|
+
|
|
91
|
+
element.uidEvent = uid
|
|
92
|
+
eventRegistry[uid] = eventRegistry[uid] || {}
|
|
93
|
+
|
|
94
|
+
return eventRegistry[uid]
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
function bootstrapHandler(element, fn) {
|
|
98
|
+
return function handler(event) {
|
|
99
|
+
event.delegateTarget = element
|
|
100
|
+
|
|
101
|
+
if (handler.oneOff) {
|
|
102
|
+
EventHandler.off(element, event.type, fn)
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
return fn.apply(element, [event])
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
function bootstrapDelegationHandler(element, selector, fn) {
|
|
110
|
+
return function handler(event) {
|
|
111
|
+
const domElements = element.querySelectorAll(selector)
|
|
112
|
+
|
|
113
|
+
for (let { target } = event; target && target !== this; target = target.parentNode) {
|
|
114
|
+
for (let i = domElements.length; i--;) {
|
|
115
|
+
if (domElements[i] === target) {
|
|
116
|
+
event.delegateTarget = target
|
|
117
|
+
|
|
118
|
+
if (handler.oneOff) {
|
|
119
|
+
// eslint-disable-next-line unicorn/consistent-destructuring
|
|
120
|
+
EventHandler.off(element, event.type, selector, fn)
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
return fn.apply(target, [event])
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// To please ESLint
|
|
129
|
+
return null
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
function findHandler(events, handler, delegationSelector = null) {
|
|
134
|
+
const uidEventList = Object.keys(events)
|
|
135
|
+
|
|
136
|
+
for (let i = 0, len = uidEventList.length; i < len; i++) {
|
|
137
|
+
const event = events[uidEventList[i]]
|
|
138
|
+
|
|
139
|
+
if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {
|
|
140
|
+
return event
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
return null
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
function normalizeParams(originalTypeEvent, handler, delegationFn) {
|
|
148
|
+
const delegation = typeof handler === 'string'
|
|
149
|
+
const originalHandler = delegation ? delegationFn : handler
|
|
150
|
+
|
|
151
|
+
let typeEvent = getTypeEvent(originalTypeEvent)
|
|
152
|
+
const isNative = nativeEvents.has(typeEvent)
|
|
153
|
+
|
|
154
|
+
if (!isNative) {
|
|
155
|
+
typeEvent = originalTypeEvent
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
return [delegation, originalHandler, typeEvent]
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
function addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {
|
|
162
|
+
if (typeof originalTypeEvent !== 'string' || !element) {
|
|
163
|
+
return
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
if (!handler) {
|
|
167
|
+
handler = delegationFn
|
|
168
|
+
delegationFn = null
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
// in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position
|
|
172
|
+
// this prevents the handler from being dispatched the same way as mouseover or mouseout does
|
|
173
|
+
if (customEventsRegex.test(originalTypeEvent)) {
|
|
174
|
+
const wrapFn = fn => {
|
|
175
|
+
return function (event) {
|
|
176
|
+
if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {
|
|
177
|
+
return fn.call(this, event)
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
if (delegationFn) {
|
|
183
|
+
delegationFn = wrapFn(delegationFn)
|
|
184
|
+
} else {
|
|
185
|
+
handler = wrapFn(handler)
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)
|
|
190
|
+
const events = getEvent(element)
|
|
191
|
+
const handlers = events[typeEvent] || (events[typeEvent] = {})
|
|
192
|
+
const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null)
|
|
193
|
+
|
|
194
|
+
if (previousFn) {
|
|
195
|
+
previousFn.oneOff = previousFn.oneOff && oneOff
|
|
196
|
+
|
|
197
|
+
return
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''))
|
|
201
|
+
const fn = delegation ?
|
|
202
|
+
bootstrapDelegationHandler(element, handler, delegationFn) :
|
|
203
|
+
bootstrapHandler(element, handler)
|
|
204
|
+
|
|
205
|
+
fn.delegationSelector = delegation ? handler : null
|
|
206
|
+
fn.originalHandler = originalHandler
|
|
207
|
+
fn.oneOff = oneOff
|
|
208
|
+
fn.uidEvent = uid
|
|
209
|
+
handlers[uid] = fn
|
|
210
|
+
|
|
211
|
+
element.addEventListener(typeEvent, fn, delegation)
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
function removeHandler(element, events, typeEvent, handler, delegationSelector) {
|
|
215
|
+
const fn = findHandler(events[typeEvent], handler, delegationSelector)
|
|
216
|
+
|
|
217
|
+
if (!fn) {
|
|
218
|
+
return
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))
|
|
222
|
+
delete events[typeEvent][fn.uidEvent]
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
function removeNamespacedHandlers(element, events, typeEvent, namespace) {
|
|
226
|
+
const storeElementEvent = events[typeEvent] || {}
|
|
227
|
+
|
|
228
|
+
Object.keys(storeElementEvent).forEach(handlerKey => {
|
|
229
|
+
if (handlerKey.includes(namespace)) {
|
|
230
|
+
const event = storeElementEvent[handlerKey]
|
|
231
|
+
|
|
232
|
+
removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)
|
|
233
|
+
}
|
|
234
|
+
})
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
function getTypeEvent(event) {
|
|
238
|
+
// allow to get the native events from namespaced events ('click.coreui.button' --> 'click')
|
|
239
|
+
event = event.replace(stripNameRegex, '')
|
|
240
|
+
return customEvents[event] || event
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
const EventHandler = {
|
|
244
|
+
on(element, event, handler, delegationFn) {
|
|
245
|
+
addHandler(element, event, handler, delegationFn, false)
|
|
246
|
+
},
|
|
247
|
+
|
|
248
|
+
one(element, event, handler, delegationFn) {
|
|
249
|
+
addHandler(element, event, handler, delegationFn, true)
|
|
250
|
+
},
|
|
251
|
+
|
|
252
|
+
off(element, originalTypeEvent, handler, delegationFn) {
|
|
253
|
+
if (typeof originalTypeEvent !== 'string' || !element) {
|
|
254
|
+
return
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)
|
|
258
|
+
const inNamespace = typeEvent !== originalTypeEvent
|
|
259
|
+
const events = getEvent(element)
|
|
260
|
+
const isNamespace = originalTypeEvent.startsWith('.')
|
|
261
|
+
|
|
262
|
+
if (typeof originalHandler !== 'undefined') {
|
|
263
|
+
// Simplest case: handler is passed, remove that listener ONLY.
|
|
264
|
+
if (!events || !events[typeEvent]) {
|
|
265
|
+
return
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null)
|
|
269
|
+
return
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
if (isNamespace) {
|
|
273
|
+
Object.keys(events).forEach(elementEvent => {
|
|
274
|
+
removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))
|
|
275
|
+
})
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
const storeElementEvent = events[typeEvent] || {}
|
|
279
|
+
Object.keys(storeElementEvent).forEach(keyHandlers => {
|
|
280
|
+
const handlerKey = keyHandlers.replace(stripUidRegex, '')
|
|
281
|
+
|
|
282
|
+
if (!inNamespace || originalTypeEvent.includes(handlerKey)) {
|
|
283
|
+
const event = storeElementEvent[keyHandlers]
|
|
284
|
+
|
|
285
|
+
removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)
|
|
286
|
+
}
|
|
287
|
+
})
|
|
288
|
+
},
|
|
289
|
+
|
|
290
|
+
trigger(element, event, args) {
|
|
291
|
+
if (typeof event !== 'string' || !element) {
|
|
292
|
+
return null
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
const $ = getjQuery()
|
|
296
|
+
const typeEvent = getTypeEvent(event)
|
|
297
|
+
const inNamespace = event !== typeEvent
|
|
298
|
+
const isNative = nativeEvents.has(typeEvent)
|
|
299
|
+
|
|
300
|
+
let jQueryEvent
|
|
301
|
+
let bubbles = true
|
|
302
|
+
let nativeDispatch = true
|
|
303
|
+
let defaultPrevented = false
|
|
304
|
+
let evt = null
|
|
305
|
+
|
|
306
|
+
if (inNamespace && $) {
|
|
307
|
+
jQueryEvent = $.Event(event, args)
|
|
308
|
+
|
|
309
|
+
$(element).trigger(jQueryEvent)
|
|
310
|
+
bubbles = !jQueryEvent.isPropagationStopped()
|
|
311
|
+
nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()
|
|
312
|
+
defaultPrevented = jQueryEvent.isDefaultPrevented()
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
if (isNative) {
|
|
316
|
+
evt = document.createEvent('HTMLEvents')
|
|
317
|
+
evt.initEvent(typeEvent, bubbles, true)
|
|
318
|
+
} else {
|
|
319
|
+
evt = new CustomEvent(event, {
|
|
320
|
+
bubbles,
|
|
321
|
+
cancelable: true
|
|
322
|
+
})
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
// merge custom information in our event
|
|
326
|
+
if (typeof args !== 'undefined') {
|
|
327
|
+
Object.keys(args).forEach(key => {
|
|
328
|
+
Object.defineProperty(evt, key, {
|
|
329
|
+
get() {
|
|
330
|
+
return args[key]
|
|
331
|
+
}
|
|
332
|
+
})
|
|
333
|
+
})
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
if (defaultPrevented) {
|
|
337
|
+
evt.preventDefault()
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
if (nativeDispatch) {
|
|
341
|
+
element.dispatchEvent(evt)
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {
|
|
345
|
+
jQueryEvent.preventDefault()
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
return evt
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
export default EventHandler
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* --------------------------------------------------------------------------
|
|
3
|
+
* CoreUI (v4.0.2): dom/manipulator.js
|
|
4
|
+
* Licensed under MIT (https://coreui.io/license)
|
|
5
|
+
*
|
|
6
|
+
* This component is a modified version of the Bootstrap's dom/manipulator.js
|
|
7
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
8
|
+
* --------------------------------------------------------------------------
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
function normalizeData(val) {
|
|
12
|
+
if (val === 'true') {
|
|
13
|
+
return true
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
if (val === 'false') {
|
|
17
|
+
return false
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
if (val === Number(val).toString()) {
|
|
21
|
+
return Number(val)
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
if (val === '' || val === 'null') {
|
|
25
|
+
return null
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
return val
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function normalizeDataKey(key) {
|
|
32
|
+
return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const Manipulator = {
|
|
36
|
+
setDataAttribute(element, key, value) {
|
|
37
|
+
element.setAttribute(`data-coreui-${normalizeDataKey(key)}`, value)
|
|
38
|
+
},
|
|
39
|
+
|
|
40
|
+
removeDataAttribute(element, key) {
|
|
41
|
+
element.removeAttribute(`data-coreui-${normalizeDataKey(key)}`)
|
|
42
|
+
},
|
|
43
|
+
|
|
44
|
+
getDataAttributes(element) {
|
|
45
|
+
if (!element) {
|
|
46
|
+
return {}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const attributes = {}
|
|
50
|
+
|
|
51
|
+
Object.keys(element.dataset)
|
|
52
|
+
.filter(key => key.startsWith('coreui'))
|
|
53
|
+
.forEach(key => {
|
|
54
|
+
let pureKey = key.replace(/^coreui/, '')
|
|
55
|
+
pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)
|
|
56
|
+
attributes[pureKey] = normalizeData(element.dataset[key])
|
|
57
|
+
})
|
|
58
|
+
|
|
59
|
+
return attributes
|
|
60
|
+
},
|
|
61
|
+
|
|
62
|
+
getDataAttribute(element, key) {
|
|
63
|
+
return normalizeData(element.getAttribute(`data-coreui-${normalizeDataKey(key)}`))
|
|
64
|
+
},
|
|
65
|
+
|
|
66
|
+
offset(element) {
|
|
67
|
+
const rect = element.getBoundingClientRect()
|
|
68
|
+
|
|
69
|
+
return {
|
|
70
|
+
top: rect.top + document.body.scrollTop,
|
|
71
|
+
left: rect.left + document.body.scrollLeft
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
|
|
75
|
+
position(element) {
|
|
76
|
+
return {
|
|
77
|
+
top: element.offsetTop,
|
|
78
|
+
left: element.offsetLeft
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export default Manipulator
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* --------------------------------------------------------------------------
|
|
3
|
+
* CoreUI (v4.0.2): dom/selector-engine.js
|
|
4
|
+
* Licensed under MIT (https://coreui.io/license)
|
|
5
|
+
*
|
|
6
|
+
* This component is a modified version of the Bootstrap's dom/selector-engine.js
|
|
7
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
8
|
+
* --------------------------------------------------------------------------
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* ------------------------------------------------------------------------
|
|
13
|
+
* Constants
|
|
14
|
+
* ------------------------------------------------------------------------
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
const NODE_TEXT = 3
|
|
18
|
+
|
|
19
|
+
const SelectorEngine = {
|
|
20
|
+
find(selector, element = document.documentElement) {
|
|
21
|
+
return [].concat(...Element.prototype.querySelectorAll.call(element, selector))
|
|
22
|
+
},
|
|
23
|
+
|
|
24
|
+
findOne(selector, element = document.documentElement) {
|
|
25
|
+
return Element.prototype.querySelector.call(element, selector)
|
|
26
|
+
},
|
|
27
|
+
|
|
28
|
+
children(element, selector) {
|
|
29
|
+
return [].concat(...element.children)
|
|
30
|
+
.filter(child => child.matches(selector))
|
|
31
|
+
},
|
|
32
|
+
|
|
33
|
+
parents(element, selector) {
|
|
34
|
+
const parents = []
|
|
35
|
+
|
|
36
|
+
let ancestor = element.parentNode
|
|
37
|
+
|
|
38
|
+
while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {
|
|
39
|
+
if (ancestor.matches(selector)) {
|
|
40
|
+
parents.push(ancestor)
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
ancestor = ancestor.parentNode
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
return parents
|
|
47
|
+
},
|
|
48
|
+
|
|
49
|
+
prev(element, selector) {
|
|
50
|
+
let previous = element.previousElementSibling
|
|
51
|
+
|
|
52
|
+
while (previous) {
|
|
53
|
+
if (previous.matches(selector)) {
|
|
54
|
+
return [previous]
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
previous = previous.previousElementSibling
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return []
|
|
61
|
+
},
|
|
62
|
+
|
|
63
|
+
next(element, selector) {
|
|
64
|
+
let next = element.nextElementSibling
|
|
65
|
+
|
|
66
|
+
while (next) {
|
|
67
|
+
if (next.matches(selector)) {
|
|
68
|
+
return [next]
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
next = next.nextElementSibling
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
return []
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export default SelectorEngine
|