@coreui/coreui 4.0.2 → 4.1.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.
- package/README.md +5 -8
- package/dist/css/coreui-grid.css +255 -206
- package/dist/css/coreui-grid.css.map +1 -1
- package/dist/css/coreui-grid.min.css +2 -2
- package/dist/css/coreui-grid.min.css.map +1 -1
- package/dist/css/coreui-grid.rtl.css +256 -207
- package/dist/css/coreui-grid.rtl.css.map +1 -1
- package/dist/css/coreui-grid.rtl.min.css +3 -3
- package/dist/css/coreui-grid.rtl.min.css.map +1 -1
- package/dist/css/coreui-reboot.css +63 -8
- package/dist/css/coreui-reboot.css.map +1 -1
- package/dist/css/coreui-reboot.min.css +2 -2
- package/dist/css/coreui-reboot.min.css.map +1 -1
- package/dist/css/coreui-reboot.rtl.css +64 -9
- package/dist/css/coreui-reboot.rtl.css.map +1 -1
- package/dist/css/coreui-reboot.rtl.min.css +3 -3
- package/dist/css/coreui-reboot.rtl.min.css.map +1 -1
- package/dist/css/coreui-utilities.css +181 -81
- package/dist/css/coreui-utilities.css.map +1 -1
- package/dist/css/coreui-utilities.min.css +2 -2
- package/dist/css/coreui-utilities.min.css.map +1 -1
- package/dist/css/coreui-utilities.rtl.css +182 -82
- package/dist/css/coreui-utilities.rtl.css.map +1 -1
- package/dist/css/coreui-utilities.rtl.min.css +3 -3
- package/dist/css/coreui-utilities.rtl.min.css.map +1 -1
- package/dist/css/coreui.css +725 -350
- package/dist/css/coreui.css.map +1 -1
- package/dist/css/coreui.min.css +2 -2
- package/dist/css/coreui.min.css.map +1 -1
- package/dist/css/coreui.rtl.css +733 -373
- package/dist/css/coreui.rtl.css.map +1 -1
- package/dist/css/coreui.rtl.min.css +3 -3
- package/dist/css/coreui.rtl.min.css.map +1 -1
- package/dist/js/coreui.bundle.js +782 -704
- package/dist/js/coreui.bundle.js.map +1 -1
- package/dist/js/coreui.bundle.min.js +2 -2
- package/dist/js/coreui.bundle.min.js.map +1 -1
- package/dist/js/coreui.esm.js +663 -611
- package/dist/js/coreui.esm.js.map +1 -1
- package/dist/js/coreui.esm.min.js +2 -2
- package/dist/js/coreui.esm.min.js.map +1 -1
- package/dist/js/coreui.js +673 -623
- package/dist/js/coreui.js.map +1 -1
- package/dist/js/coreui.min.js +2 -2
- package/dist/js/coreui.min.js.map +1 -1
- package/js/dist/alert.js +81 -48
- package/js/dist/alert.js.map +1 -1
- package/js/dist/base-component.js +25 -17
- package/js/dist/base-component.js.map +1 -1
- package/js/dist/button.js +22 -12
- package/js/dist/button.js.map +1 -1
- package/js/dist/carousel.js +69 -44
- package/js/dist/carousel.js.map +1 -1
- package/js/dist/collapse.js +117 -131
- package/js/dist/collapse.js.map +1 -1
- package/js/dist/dom/data.js +5 -5
- package/js/dist/dom/data.js.map +1 -1
- package/js/dist/dom/event-handler.js +14 -5
- package/js/dist/dom/event-handler.js.map +1 -1
- package/js/dist/dom/manipulator.js +6 -6
- package/js/dist/dom/manipulator.js.map +1 -1
- package/js/dist/dom/selector-engine.js +53 -8
- package/js/dist/dom/selector-engine.js.map +1 -1
- package/js/dist/dropdown.js +99 -106
- package/js/dist/dropdown.js.map +1 -1
- package/js/dist/modal.js +244 -87
- package/js/dist/modal.js.map +1 -1
- package/js/dist/offcanvas.js +205 -56
- package/js/dist/offcanvas.js.map +1 -1
- package/js/dist/popover.js +28 -58
- package/js/dist/popover.js.map +1 -1
- package/js/dist/scrollspy.js +40 -30
- package/js/dist/scrollspy.js.map +1 -1
- package/js/dist/tab.js +44 -22
- package/js/dist/tab.js.map +1 -1
- package/js/dist/toast.js +127 -29
- package/js/dist/toast.js.map +1 -1
- package/js/dist/tooltip.js +122 -104
- package/js/dist/tooltip.js.map +1 -1
- package/js/src/alert.js +21 -47
- package/js/src/base-component.js +3 -3
- package/js/src/button.js +1 -1
- package/js/src/carousel.js +9 -4
- package/js/src/collapse.js +66 -119
- package/js/src/dom/data.js +1 -1
- package/js/src/dom/event-handler.js +1 -2
- package/js/src/dom/manipulator.js +3 -3
- package/js/src/dom/selector-engine.js +18 -1
- package/js/src/dropdown.js +53 -68
- package/js/src/modal.js +24 -35
- package/js/src/navigation.js +6 -4
- package/js/src/offcanvas.js +16 -18
- package/js/src/popover.js +7 -49
- package/js/src/scrollspy.js +1 -1
- package/js/src/sidebar.js +6 -4
- package/js/src/tab.js +1 -1
- package/js/src/toast.js +11 -11
- package/js/src/tooltip.js +66 -50
- package/js/src/util/backdrop.js +6 -5
- package/js/src/util/component-functions.js +34 -0
- package/js/src/util/focustrap.js +105 -0
- package/js/src/util/index.js +14 -5
- package/js/src/util/sanitizer.js +21 -22
- package/js/src/util/scrollbar.js +1 -1
- package/package.json +47 -44
- package/scss/_buttons.scss +1 -2
- package/scss/_card.scss +2 -1
- package/scss/_dropdown.scss +1 -1
- package/scss/_functions.scss +51 -12
- package/scss/_grid.scss +0 -23
- package/scss/_helpers.scss +2 -0
- package/scss/_mixins.scss +1 -0
- package/scss/_modal.scss +1 -11
- package/scss/_navbar.scss +30 -1
- package/scss/_offcanvas.scss +6 -2
- package/scss/_placeholders.scss +51 -0
- package/scss/_reboot.scss +12 -8
- package/scss/_root.scss +36 -7
- package/scss/_tables.scss +9 -5
- package/scss/_toasts.scss +2 -2
- package/scss/_transitions.scss +6 -0
- package/scss/_utilities.scss +31 -8
- package/scss/_variables.scss +184 -12
- package/scss/coreui-grid.rtl.scss +1 -1
- package/scss/coreui-grid.scss +3 -1
- package/scss/coreui-reboot.rtl.scss +1 -1
- package/scss/coreui-reboot.scss +2 -4
- package/scss/coreui-utilities.rtl.scss +1 -1
- package/scss/coreui-utilities.scss +1 -1
- package/scss/coreui.rtl.scss +1 -1
- package/scss/coreui.scss +2 -1
- package/scss/forms/_form-control.scss +1 -1
- package/scss/forms/_form-select.scss +2 -0
- package/scss/helpers/_stacks.scss +15 -0
- package/scss/helpers/_vr.scss +8 -0
- package/scss/mixins/_backdrop.scss +14 -0
- package/scss/mixins/_grid.scss +29 -10
- package/scss/mixins/_ltr-rtl.scss +21 -0
- package/scss/mixins/_utilities.scss +26 -26
- package/scss/mixins/_visually-hidden.scss +1 -1
- package/scss/sidebar/_sidebar.scss +22 -16
package/js/dist/modal.js
CHANGED
|
@@ -1,21 +1,30 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* CoreUI modal.js v4.0
|
|
2
|
+
* CoreUI modal.js v4.1.0 (https://coreui.io)
|
|
3
3
|
* Copyright 2021 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(require('./dom/
|
|
8
|
-
typeof define === 'function' && define.amd ? define(['./dom/
|
|
9
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Modal = factory(global.
|
|
10
|
-
}(this, (function (
|
|
7
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./dom/selector-engine.js'), require('./base-component.js')) :
|
|
8
|
+
typeof define === 'function' && define.amd ? define(['./dom/event-handler', './dom/manipulator', './dom/selector-engine', './base-component'], factory) :
|
|
9
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Modal = factory(global.EventHandler, global.Manipulator, global.SelectorEngine, global.Base));
|
|
10
|
+
})(this, (function (EventHandler, Manipulator, SelectorEngine, BaseComponent) { 'use strict';
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
const _interopDefaultLegacy = e => e && typeof e === 'object' && 'default' in e ? e : { default: e };
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
const EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
|
|
15
|
+
const Manipulator__default = /*#__PURE__*/_interopDefaultLegacy(Manipulator);
|
|
16
|
+
const SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine);
|
|
17
|
+
const BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);
|
|
18
18
|
|
|
19
|
+
/**
|
|
20
|
+
* --------------------------------------------------------------------------
|
|
21
|
+
* CoreUI (v4.1.0): alert.js
|
|
22
|
+
* Licensed under MIT (https://coreui.io/license)
|
|
23
|
+
*
|
|
24
|
+
* This component is a modified version of the Bootstrap's util/index.js
|
|
25
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
26
|
+
* --------------------------------------------------------------------------
|
|
27
|
+
*/
|
|
19
28
|
const MILLISECONDS_MULTIPLIER = 1000;
|
|
20
29
|
const TRANSITION_END = 'transitionend'; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
|
|
21
30
|
|
|
@@ -102,7 +111,7 @@
|
|
|
102
111
|
}
|
|
103
112
|
|
|
104
113
|
if (typeof obj === 'string' && obj.length > 0) {
|
|
105
|
-
return
|
|
114
|
+
return document.querySelector(obj);
|
|
106
115
|
}
|
|
107
116
|
|
|
108
117
|
return null;
|
|
@@ -128,7 +137,35 @@
|
|
|
128
137
|
return getComputedStyle(element).getPropertyValue('visibility') === 'visible';
|
|
129
138
|
};
|
|
130
139
|
|
|
131
|
-
const
|
|
140
|
+
const isDisabled = element => {
|
|
141
|
+
if (!element || element.nodeType !== Node.ELEMENT_NODE) {
|
|
142
|
+
return true;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
if (element.classList.contains('disabled')) {
|
|
146
|
+
return true;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
if (typeof element.disabled !== 'undefined') {
|
|
150
|
+
return element.disabled;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';
|
|
154
|
+
};
|
|
155
|
+
/**
|
|
156
|
+
* Trick to restart an element's animation
|
|
157
|
+
*
|
|
158
|
+
* @param {HTMLElement} element
|
|
159
|
+
* @return void
|
|
160
|
+
*
|
|
161
|
+
* @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation
|
|
162
|
+
*/
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
const reflow = element => {
|
|
166
|
+
// eslint-disable-next-line no-unused-expressions
|
|
167
|
+
element.offsetHeight;
|
|
168
|
+
};
|
|
132
169
|
|
|
133
170
|
const getjQuery = () => {
|
|
134
171
|
const {
|
|
@@ -218,7 +255,7 @@
|
|
|
218
255
|
|
|
219
256
|
/**
|
|
220
257
|
* --------------------------------------------------------------------------
|
|
221
|
-
* Bootstrap (v5.
|
|
258
|
+
* Bootstrap (v5.1.3): util/scrollBar.js
|
|
222
259
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
223
260
|
* --------------------------------------------------------------------------
|
|
224
261
|
*/
|
|
@@ -287,18 +324,18 @@
|
|
|
287
324
|
const actualValue = element.style[styleProp];
|
|
288
325
|
|
|
289
326
|
if (actualValue) {
|
|
290
|
-
Manipulator__default
|
|
327
|
+
Manipulator__default.default.setDataAttribute(element, styleProp, actualValue);
|
|
291
328
|
}
|
|
292
329
|
}
|
|
293
330
|
|
|
294
331
|
_resetElementAttributes(selector, styleProp) {
|
|
295
332
|
const manipulationCallBack = element => {
|
|
296
|
-
const value = Manipulator__default
|
|
333
|
+
const value = Manipulator__default.default.getDataAttribute(element, styleProp);
|
|
297
334
|
|
|
298
335
|
if (typeof value === 'undefined') {
|
|
299
336
|
element.style.removeProperty(styleProp);
|
|
300
337
|
} else {
|
|
301
|
-
Manipulator__default
|
|
338
|
+
Manipulator__default.default.removeDataAttribute(element, styleProp);
|
|
302
339
|
element.style[styleProp] = value;
|
|
303
340
|
}
|
|
304
341
|
};
|
|
@@ -310,7 +347,7 @@
|
|
|
310
347
|
if (isElement(selector)) {
|
|
311
348
|
callBack(selector);
|
|
312
349
|
} else {
|
|
313
|
-
SelectorEngine__default
|
|
350
|
+
SelectorEngine__default.default.find(selector, this._element).forEach(callBack);
|
|
314
351
|
}
|
|
315
352
|
}
|
|
316
353
|
|
|
@@ -322,11 +359,12 @@
|
|
|
322
359
|
|
|
323
360
|
/**
|
|
324
361
|
* --------------------------------------------------------------------------
|
|
325
|
-
* Bootstrap (v5.
|
|
326
|
-
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/
|
|
362
|
+
* Bootstrap (v5.1.3): util/backdrop.js
|
|
363
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
327
364
|
* --------------------------------------------------------------------------
|
|
328
365
|
*/
|
|
329
|
-
const Default$
|
|
366
|
+
const Default$2 = {
|
|
367
|
+
className: 'modal-backdrop',
|
|
330
368
|
isVisible: true,
|
|
331
369
|
// if false, we use the backdrop helper without adding any element to the dom
|
|
332
370
|
isAnimated: false,
|
|
@@ -334,17 +372,17 @@
|
|
|
334
372
|
// give the choice to place backdrop under different elements
|
|
335
373
|
clickCallback: null
|
|
336
374
|
};
|
|
337
|
-
const DefaultType$
|
|
375
|
+
const DefaultType$2 = {
|
|
376
|
+
className: 'string',
|
|
338
377
|
isVisible: 'boolean',
|
|
339
378
|
isAnimated: 'boolean',
|
|
340
379
|
rootElement: '(element|string)',
|
|
341
380
|
clickCallback: '(function|null)'
|
|
342
381
|
};
|
|
343
|
-
const NAME$
|
|
344
|
-
const CLASS_NAME_BACKDROP = 'modal-backdrop';
|
|
382
|
+
const NAME$2 = 'backdrop';
|
|
345
383
|
const CLASS_NAME_FADE$1 = 'fade';
|
|
346
384
|
const CLASS_NAME_SHOW$1 = 'show';
|
|
347
|
-
const EVENT_MOUSEDOWN = `mousedown.coreui.${NAME$
|
|
385
|
+
const EVENT_MOUSEDOWN = `mousedown.coreui.${NAME$2}`;
|
|
348
386
|
|
|
349
387
|
class Backdrop {
|
|
350
388
|
constructor(config) {
|
|
@@ -390,7 +428,7 @@
|
|
|
390
428
|
_getElement() {
|
|
391
429
|
if (!this._element) {
|
|
392
430
|
const backdrop = document.createElement('div');
|
|
393
|
-
backdrop.className =
|
|
431
|
+
backdrop.className = this._config.className;
|
|
394
432
|
|
|
395
433
|
if (this._config.isAnimated) {
|
|
396
434
|
backdrop.classList.add(CLASS_NAME_FADE$1);
|
|
@@ -403,12 +441,12 @@
|
|
|
403
441
|
}
|
|
404
442
|
|
|
405
443
|
_getConfig(config) {
|
|
406
|
-
config = { ...Default$
|
|
444
|
+
config = { ...Default$2,
|
|
407
445
|
...(typeof config === 'object' ? config : {})
|
|
408
446
|
}; // use getElement() with the default "body" to get a fresh Element on each instantiation
|
|
409
447
|
|
|
410
448
|
config.rootElement = getElement(config.rootElement);
|
|
411
|
-
typeCheckConfig(NAME$
|
|
449
|
+
typeCheckConfig(NAME$2, config, DefaultType$2);
|
|
412
450
|
return config;
|
|
413
451
|
}
|
|
414
452
|
|
|
@@ -417,9 +455,9 @@
|
|
|
417
455
|
return;
|
|
418
456
|
}
|
|
419
457
|
|
|
420
|
-
this._config.rootElement.
|
|
458
|
+
this._config.rootElement.append(this._getElement());
|
|
421
459
|
|
|
422
|
-
EventHandler__default
|
|
460
|
+
EventHandler__default.default.on(this._getElement(), EVENT_MOUSEDOWN, () => {
|
|
423
461
|
execute(this._config.clickCallback);
|
|
424
462
|
});
|
|
425
463
|
this._isAppended = true;
|
|
@@ -430,7 +468,7 @@
|
|
|
430
468
|
return;
|
|
431
469
|
}
|
|
432
470
|
|
|
433
|
-
EventHandler__default
|
|
471
|
+
EventHandler__default.default.off(this._element, EVENT_MOUSEDOWN);
|
|
434
472
|
|
|
435
473
|
this._element.remove();
|
|
436
474
|
|
|
@@ -445,7 +483,136 @@
|
|
|
445
483
|
|
|
446
484
|
/**
|
|
447
485
|
* --------------------------------------------------------------------------
|
|
448
|
-
|
|
486
|
+
* Bootstrap (v5.1.3): util/focustrap.js
|
|
487
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
488
|
+
* --------------------------------------------------------------------------
|
|
489
|
+
*/
|
|
490
|
+
const Default$1 = {
|
|
491
|
+
trapElement: null,
|
|
492
|
+
// The element to trap focus inside of
|
|
493
|
+
autofocus: true
|
|
494
|
+
};
|
|
495
|
+
const DefaultType$1 = {
|
|
496
|
+
trapElement: 'element',
|
|
497
|
+
autofocus: 'boolean'
|
|
498
|
+
};
|
|
499
|
+
const NAME$1 = 'focustrap';
|
|
500
|
+
const DATA_KEY$1 = 'coreui.focustrap';
|
|
501
|
+
const EVENT_KEY$1 = `.${DATA_KEY$1}`;
|
|
502
|
+
const EVENT_FOCUSIN = `focusin${EVENT_KEY$1}`;
|
|
503
|
+
const EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$1}`;
|
|
504
|
+
const TAB_KEY = 'Tab';
|
|
505
|
+
const TAB_NAV_FORWARD = 'forward';
|
|
506
|
+
const TAB_NAV_BACKWARD = 'backward';
|
|
507
|
+
|
|
508
|
+
class FocusTrap {
|
|
509
|
+
constructor(config) {
|
|
510
|
+
this._config = this._getConfig(config);
|
|
511
|
+
this._isActive = false;
|
|
512
|
+
this._lastTabNavDirection = null;
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
activate() {
|
|
516
|
+
const {
|
|
517
|
+
trapElement,
|
|
518
|
+
autofocus
|
|
519
|
+
} = this._config;
|
|
520
|
+
|
|
521
|
+
if (this._isActive) {
|
|
522
|
+
return;
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
if (autofocus) {
|
|
526
|
+
trapElement.focus();
|
|
527
|
+
}
|
|
528
|
+
|
|
529
|
+
EventHandler__default.default.off(document, EVENT_KEY$1); // guard against infinite focus loop
|
|
530
|
+
|
|
531
|
+
EventHandler__default.default.on(document, EVENT_FOCUSIN, event => this._handleFocusin(event));
|
|
532
|
+
EventHandler__default.default.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event));
|
|
533
|
+
this._isActive = true;
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
deactivate() {
|
|
537
|
+
if (!this._isActive) {
|
|
538
|
+
return;
|
|
539
|
+
}
|
|
540
|
+
|
|
541
|
+
this._isActive = false;
|
|
542
|
+
EventHandler__default.default.off(document, EVENT_KEY$1);
|
|
543
|
+
} // Private
|
|
544
|
+
|
|
545
|
+
|
|
546
|
+
_handleFocusin(event) {
|
|
547
|
+
const {
|
|
548
|
+
target
|
|
549
|
+
} = event;
|
|
550
|
+
const {
|
|
551
|
+
trapElement
|
|
552
|
+
} = this._config;
|
|
553
|
+
|
|
554
|
+
if (target === document || target === trapElement || trapElement.contains(target)) {
|
|
555
|
+
return;
|
|
556
|
+
}
|
|
557
|
+
|
|
558
|
+
const elements = SelectorEngine__default.default.focusableChildren(trapElement);
|
|
559
|
+
|
|
560
|
+
if (elements.length === 0) {
|
|
561
|
+
trapElement.focus();
|
|
562
|
+
} else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {
|
|
563
|
+
elements[elements.length - 1].focus();
|
|
564
|
+
} else {
|
|
565
|
+
elements[0].focus();
|
|
566
|
+
}
|
|
567
|
+
}
|
|
568
|
+
|
|
569
|
+
_handleKeydown(event) {
|
|
570
|
+
if (event.key !== TAB_KEY) {
|
|
571
|
+
return;
|
|
572
|
+
}
|
|
573
|
+
|
|
574
|
+
this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD;
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
_getConfig(config) {
|
|
578
|
+
config = { ...Default$1,
|
|
579
|
+
...(typeof config === 'object' ? config : {})
|
|
580
|
+
};
|
|
581
|
+
typeCheckConfig(NAME$1, config, DefaultType$1);
|
|
582
|
+
return config;
|
|
583
|
+
}
|
|
584
|
+
|
|
585
|
+
}
|
|
586
|
+
|
|
587
|
+
/**
|
|
588
|
+
* --------------------------------------------------------------------------
|
|
589
|
+
* Bootstrap (v5.1.3): util/component-functions.js
|
|
590
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
591
|
+
* --------------------------------------------------------------------------
|
|
592
|
+
*/
|
|
593
|
+
|
|
594
|
+
const enableDismissTrigger = (component, method = 'hide') => {
|
|
595
|
+
const clickEvent = `click.dismiss${component.EVENT_KEY}`;
|
|
596
|
+
const name = component.NAME;
|
|
597
|
+
EventHandler__default.default.on(document, clickEvent, `[data-coreui-dismiss="${name}"]`, function (event) {
|
|
598
|
+
if (['A', 'AREA'].includes(this.tagName)) {
|
|
599
|
+
event.preventDefault();
|
|
600
|
+
}
|
|
601
|
+
|
|
602
|
+
if (isDisabled(this)) {
|
|
603
|
+
return;
|
|
604
|
+
}
|
|
605
|
+
|
|
606
|
+
const target = getElementFromSelector(this) || this.closest(`.${name}`);
|
|
607
|
+
const instance = component.getOrCreateInstance(target); // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method
|
|
608
|
+
|
|
609
|
+
instance[method]();
|
|
610
|
+
});
|
|
611
|
+
};
|
|
612
|
+
|
|
613
|
+
/**
|
|
614
|
+
* --------------------------------------------------------------------------
|
|
615
|
+
* CoreUI (v4.1.0): modal.js
|
|
449
616
|
* Licensed under MIT (https://coreui.io/license)
|
|
450
617
|
*
|
|
451
618
|
* This component is a modified version of the Bootstrap's modal.js
|
|
@@ -478,7 +645,6 @@
|
|
|
478
645
|
const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
|
|
479
646
|
const EVENT_SHOW = `show${EVENT_KEY}`;
|
|
480
647
|
const EVENT_SHOWN = `shown${EVENT_KEY}`;
|
|
481
|
-
const EVENT_FOCUSIN = `focusin${EVENT_KEY}`;
|
|
482
648
|
const EVENT_RESIZE = `resize${EVENT_KEY}`;
|
|
483
649
|
const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`;
|
|
484
650
|
const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`;
|
|
@@ -489,22 +655,23 @@
|
|
|
489
655
|
const CLASS_NAME_FADE = 'fade';
|
|
490
656
|
const CLASS_NAME_SHOW = 'show';
|
|
491
657
|
const CLASS_NAME_STATIC = 'modal-static';
|
|
658
|
+
const OPEN_SELECTOR = '.modal.show';
|
|
492
659
|
const SELECTOR_DIALOG = '.modal-dialog';
|
|
493
660
|
const SELECTOR_MODAL_BODY = '.modal-body';
|
|
494
661
|
const SELECTOR_DATA_TOGGLE = '[data-coreui-toggle="modal"]';
|
|
495
|
-
const SELECTOR_DATA_DISMISS = '[data-coreui-dismiss="modal"]';
|
|
496
662
|
/**
|
|
497
663
|
* ------------------------------------------------------------------------
|
|
498
664
|
* Class Definition
|
|
499
665
|
* ------------------------------------------------------------------------
|
|
500
666
|
*/
|
|
501
667
|
|
|
502
|
-
class Modal extends BaseComponent__default
|
|
668
|
+
class Modal extends BaseComponent__default.default {
|
|
503
669
|
constructor(element, config) {
|
|
504
670
|
super(element);
|
|
505
671
|
this._config = this._getConfig(config);
|
|
506
|
-
this._dialog = SelectorEngine__default
|
|
672
|
+
this._dialog = SelectorEngine__default.default.findOne(SELECTOR_DIALOG, this._element);
|
|
507
673
|
this._backdrop = this._initializeBackDrop();
|
|
674
|
+
this._focustrap = this._initializeFocusTrap();
|
|
508
675
|
this._isShown = false;
|
|
509
676
|
this._ignoreBackdropClick = false;
|
|
510
677
|
this._isTransitioning = false;
|
|
@@ -530,7 +697,7 @@
|
|
|
530
697
|
return;
|
|
531
698
|
}
|
|
532
699
|
|
|
533
|
-
const showEvent = EventHandler__default
|
|
700
|
+
const showEvent = EventHandler__default.default.trigger(this._element, EVENT_SHOW, {
|
|
534
701
|
relatedTarget
|
|
535
702
|
});
|
|
536
703
|
|
|
@@ -554,9 +721,8 @@
|
|
|
554
721
|
|
|
555
722
|
this._setResizeEvent();
|
|
556
723
|
|
|
557
|
-
EventHandler__default
|
|
558
|
-
|
|
559
|
-
EventHandler__default['default'].one(this._element, EVENT_MOUSEUP_DISMISS, event => {
|
|
724
|
+
EventHandler__default.default.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, () => {
|
|
725
|
+
EventHandler__default.default.one(this._element, EVENT_MOUSEUP_DISMISS, event => {
|
|
560
726
|
if (event.target === this._element) {
|
|
561
727
|
this._ignoreBackdropClick = true;
|
|
562
728
|
}
|
|
@@ -566,16 +732,12 @@
|
|
|
566
732
|
this._showBackdrop(() => this._showElement(relatedTarget));
|
|
567
733
|
}
|
|
568
734
|
|
|
569
|
-
hide(
|
|
570
|
-
if (event && ['A', 'AREA'].includes(event.target.tagName)) {
|
|
571
|
-
event.preventDefault();
|
|
572
|
-
}
|
|
573
|
-
|
|
735
|
+
hide() {
|
|
574
736
|
if (!this._isShown || this._isTransitioning) {
|
|
575
737
|
return;
|
|
576
738
|
}
|
|
577
739
|
|
|
578
|
-
const hideEvent = EventHandler__default
|
|
740
|
+
const hideEvent = EventHandler__default.default.trigger(this._element, EVENT_HIDE);
|
|
579
741
|
|
|
580
742
|
if (hideEvent.defaultPrevented) {
|
|
581
743
|
return;
|
|
@@ -593,29 +755,24 @@
|
|
|
593
755
|
|
|
594
756
|
this._setResizeEvent();
|
|
595
757
|
|
|
596
|
-
|
|
758
|
+
this._focustrap.deactivate();
|
|
597
759
|
|
|
598
760
|
this._element.classList.remove(CLASS_NAME_SHOW);
|
|
599
761
|
|
|
600
|
-
EventHandler__default
|
|
601
|
-
EventHandler__default
|
|
762
|
+
EventHandler__default.default.off(this._element, EVENT_CLICK_DISMISS);
|
|
763
|
+
EventHandler__default.default.off(this._dialog, EVENT_MOUSEDOWN_DISMISS);
|
|
602
764
|
|
|
603
765
|
this._queueCallback(() => this._hideModal(), this._element, isAnimated);
|
|
604
766
|
}
|
|
605
767
|
|
|
606
768
|
dispose() {
|
|
607
|
-
[window, this._dialog].forEach(htmlElement => EventHandler__default
|
|
769
|
+
[window, this._dialog].forEach(htmlElement => EventHandler__default.default.off(htmlElement, EVENT_KEY));
|
|
608
770
|
|
|
609
771
|
this._backdrop.dispose();
|
|
610
772
|
|
|
611
|
-
|
|
612
|
-
/**
|
|
613
|
-
* `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`
|
|
614
|
-
* Do not move `document` in `htmlElements` array
|
|
615
|
-
* It will remove `EVENT_CLICK_DATA_API` event that should remain
|
|
616
|
-
*/
|
|
773
|
+
this._focustrap.deactivate();
|
|
617
774
|
|
|
618
|
-
|
|
775
|
+
super.dispose();
|
|
619
776
|
}
|
|
620
777
|
|
|
621
778
|
handleUpdate() {
|
|
@@ -631,9 +788,15 @@
|
|
|
631
788
|
});
|
|
632
789
|
}
|
|
633
790
|
|
|
791
|
+
_initializeFocusTrap() {
|
|
792
|
+
return new FocusTrap({
|
|
793
|
+
trapElement: this._element
|
|
794
|
+
});
|
|
795
|
+
}
|
|
796
|
+
|
|
634
797
|
_getConfig(config) {
|
|
635
798
|
config = { ...Default,
|
|
636
|
-
...Manipulator__default
|
|
799
|
+
...Manipulator__default.default.getDataAttributes(this._element),
|
|
637
800
|
...(typeof config === 'object' ? config : {})
|
|
638
801
|
};
|
|
639
802
|
typeCheckConfig(NAME, config, DefaultType);
|
|
@@ -643,11 +806,11 @@
|
|
|
643
806
|
_showElement(relatedTarget) {
|
|
644
807
|
const isAnimated = this._isAnimated();
|
|
645
808
|
|
|
646
|
-
const modalBody = SelectorEngine__default
|
|
809
|
+
const modalBody = SelectorEngine__default.default.findOne(SELECTOR_MODAL_BODY, this._dialog);
|
|
647
810
|
|
|
648
811
|
if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
|
|
649
812
|
// Don't move modal's DOM position
|
|
650
|
-
document.body.
|
|
813
|
+
document.body.append(this._element);
|
|
651
814
|
}
|
|
652
815
|
|
|
653
816
|
this._element.style.display = 'block';
|
|
@@ -670,17 +833,13 @@
|
|
|
670
833
|
|
|
671
834
|
this._element.classList.add(CLASS_NAME_SHOW);
|
|
672
835
|
|
|
673
|
-
if (this._config.focus) {
|
|
674
|
-
this._enforceFocus();
|
|
675
|
-
}
|
|
676
|
-
|
|
677
836
|
const transitionComplete = () => {
|
|
678
837
|
if (this._config.focus) {
|
|
679
|
-
this.
|
|
838
|
+
this._focustrap.activate();
|
|
680
839
|
}
|
|
681
840
|
|
|
682
841
|
this._isTransitioning = false;
|
|
683
|
-
EventHandler__default
|
|
842
|
+
EventHandler__default.default.trigger(this._element, EVENT_SHOWN, {
|
|
684
843
|
relatedTarget
|
|
685
844
|
});
|
|
686
845
|
};
|
|
@@ -688,19 +847,9 @@
|
|
|
688
847
|
this._queueCallback(transitionComplete, this._dialog, isAnimated);
|
|
689
848
|
}
|
|
690
849
|
|
|
691
|
-
_enforceFocus() {
|
|
692
|
-
EventHandler__default['default'].off(document, EVENT_FOCUSIN); // guard against infinite focus loop
|
|
693
|
-
|
|
694
|
-
EventHandler__default['default'].on(document, EVENT_FOCUSIN, event => {
|
|
695
|
-
if (document !== event.target && this._element !== event.target && !this._element.contains(event.target)) {
|
|
696
|
-
this._element.focus();
|
|
697
|
-
}
|
|
698
|
-
});
|
|
699
|
-
}
|
|
700
|
-
|
|
701
850
|
_setEscapeEvent() {
|
|
702
851
|
if (this._isShown) {
|
|
703
|
-
EventHandler__default
|
|
852
|
+
EventHandler__default.default.on(this._element, EVENT_KEYDOWN_DISMISS, event => {
|
|
704
853
|
if (this._config.keyboard && event.key === ESCAPE_KEY) {
|
|
705
854
|
event.preventDefault();
|
|
706
855
|
this.hide();
|
|
@@ -709,15 +858,15 @@
|
|
|
709
858
|
}
|
|
710
859
|
});
|
|
711
860
|
} else {
|
|
712
|
-
EventHandler__default
|
|
861
|
+
EventHandler__default.default.off(this._element, EVENT_KEYDOWN_DISMISS);
|
|
713
862
|
}
|
|
714
863
|
}
|
|
715
864
|
|
|
716
865
|
_setResizeEvent() {
|
|
717
866
|
if (this._isShown) {
|
|
718
|
-
EventHandler__default
|
|
867
|
+
EventHandler__default.default.on(window, EVENT_RESIZE, () => this._adjustDialog());
|
|
719
868
|
} else {
|
|
720
|
-
EventHandler__default
|
|
869
|
+
EventHandler__default.default.off(window, EVENT_RESIZE);
|
|
721
870
|
}
|
|
722
871
|
}
|
|
723
872
|
|
|
@@ -739,12 +888,12 @@
|
|
|
739
888
|
|
|
740
889
|
this._scrollBar.reset();
|
|
741
890
|
|
|
742
|
-
EventHandler__default
|
|
891
|
+
EventHandler__default.default.trigger(this._element, EVENT_HIDDEN);
|
|
743
892
|
});
|
|
744
893
|
}
|
|
745
894
|
|
|
746
895
|
_showBackdrop(callback) {
|
|
747
|
-
EventHandler__default
|
|
896
|
+
EventHandler__default.default.on(this._element, EVENT_CLICK_DISMISS, event => {
|
|
748
897
|
if (this._ignoreBackdropClick) {
|
|
749
898
|
this._ignoreBackdropClick = false;
|
|
750
899
|
return;
|
|
@@ -769,7 +918,7 @@
|
|
|
769
918
|
}
|
|
770
919
|
|
|
771
920
|
_triggerBackdropTransition() {
|
|
772
|
-
const hideEvent = EventHandler__default
|
|
921
|
+
const hideEvent = EventHandler__default.default.trigger(this._element, EVENT_HIDE_PREVENTED);
|
|
773
922
|
|
|
774
923
|
if (hideEvent.defaultPrevented) {
|
|
775
924
|
return;
|
|
@@ -854,28 +1003,36 @@
|
|
|
854
1003
|
*/
|
|
855
1004
|
|
|
856
1005
|
|
|
857
|
-
EventHandler__default
|
|
1006
|
+
EventHandler__default.default.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
|
|
858
1007
|
const target = getElementFromSelector(this);
|
|
859
1008
|
|
|
860
1009
|
if (['A', 'AREA'].includes(this.tagName)) {
|
|
861
1010
|
event.preventDefault();
|
|
862
1011
|
}
|
|
863
1012
|
|
|
864
|
-
EventHandler__default
|
|
1013
|
+
EventHandler__default.default.one(target, EVENT_SHOW, showEvent => {
|
|
865
1014
|
if (showEvent.defaultPrevented) {
|
|
866
1015
|
// only register focus restorer if modal will actually get shown
|
|
867
1016
|
return;
|
|
868
1017
|
}
|
|
869
1018
|
|
|
870
|
-
EventHandler__default
|
|
1019
|
+
EventHandler__default.default.one(target, EVENT_HIDDEN, () => {
|
|
871
1020
|
if (isVisible(this)) {
|
|
872
1021
|
this.focus();
|
|
873
1022
|
}
|
|
874
1023
|
});
|
|
875
|
-
});
|
|
1024
|
+
}); // avoid conflict when clicking moddal toggler while another one is open
|
|
1025
|
+
|
|
1026
|
+
const allReadyOpen = SelectorEngine__default.default.findOne(OPEN_SELECTOR);
|
|
1027
|
+
|
|
1028
|
+
if (allReadyOpen) {
|
|
1029
|
+
Modal.getInstance(allReadyOpen).hide();
|
|
1030
|
+
}
|
|
1031
|
+
|
|
876
1032
|
const data = Modal.getOrCreateInstance(target);
|
|
877
1033
|
data.toggle(this);
|
|
878
1034
|
});
|
|
1035
|
+
enableDismissTrigger(Modal);
|
|
879
1036
|
/**
|
|
880
1037
|
* ------------------------------------------------------------------------
|
|
881
1038
|
* jQuery
|
|
@@ -887,5 +1044,5 @@
|
|
|
887
1044
|
|
|
888
1045
|
return Modal;
|
|
889
1046
|
|
|
890
|
-
}))
|
|
1047
|
+
}));
|
|
891
1048
|
//# sourceMappingURL=modal.js.map
|