@coreui/coreui 4.0.5 → 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 +4 -7
- package/dist/css/coreui-grid.css +254 -205
- 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 +255 -206
- 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 +693 -327
- 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 +676 -325
- 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 +776 -702
- 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 +659 -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 +669 -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 +1 -1
- 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 +3 -3
- 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 +26 -7
- package/scss/mixins/_ltr-rtl.scss +21 -0
- package/scss/mixins/_utilities.scss +26 -26
- package/scss/mixins/_visually-hidden.scss +1 -1
package/js/dist/offcanvas.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* CoreUI offcanvas.js v4.0
|
|
2
|
+
* CoreUI offcanvas.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
|
*/
|
|
@@ -7,15 +7,24 @@
|
|
|
7
7
|
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/selector-engine.js'), require('./dom/manipulator.js'), require('./dom/event-handler.js'), require('./base-component.js')) :
|
|
8
8
|
typeof define === 'function' && define.amd ? define(['./dom/selector-engine', './dom/manipulator', './dom/event-handler', './base-component'], factory) :
|
|
9
9
|
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Offcanvas = factory(global.SelectorEngine, global.Manipulator, global.EventHandler, global.Base));
|
|
10
|
-
}(this, (function (SelectorEngine, Manipulator, EventHandler, BaseComponent) { 'use strict';
|
|
10
|
+
})(this, (function (SelectorEngine, Manipulator, EventHandler, 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 SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine);
|
|
15
|
+
const Manipulator__default = /*#__PURE__*/_interopDefaultLegacy(Manipulator);
|
|
16
|
+
const EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
|
|
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;
|
|
@@ -143,8 +152,20 @@
|
|
|
143
152
|
|
|
144
153
|
return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';
|
|
145
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
|
+
|
|
146
164
|
|
|
147
|
-
const reflow = element =>
|
|
165
|
+
const reflow = element => {
|
|
166
|
+
// eslint-disable-next-line no-unused-expressions
|
|
167
|
+
element.offsetHeight;
|
|
168
|
+
};
|
|
148
169
|
|
|
149
170
|
const getjQuery = () => {
|
|
150
171
|
const {
|
|
@@ -232,7 +253,7 @@
|
|
|
232
253
|
|
|
233
254
|
/**
|
|
234
255
|
* --------------------------------------------------------------------------
|
|
235
|
-
* Bootstrap (v5.
|
|
256
|
+
* Bootstrap (v5.1.3): util/scrollBar.js
|
|
236
257
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
237
258
|
* --------------------------------------------------------------------------
|
|
238
259
|
*/
|
|
@@ -301,18 +322,18 @@
|
|
|
301
322
|
const actualValue = element.style[styleProp];
|
|
302
323
|
|
|
303
324
|
if (actualValue) {
|
|
304
|
-
Manipulator__default
|
|
325
|
+
Manipulator__default.default.setDataAttribute(element, styleProp, actualValue);
|
|
305
326
|
}
|
|
306
327
|
}
|
|
307
328
|
|
|
308
329
|
_resetElementAttributes(selector, styleProp) {
|
|
309
330
|
const manipulationCallBack = element => {
|
|
310
|
-
const value = Manipulator__default
|
|
331
|
+
const value = Manipulator__default.default.getDataAttribute(element, styleProp);
|
|
311
332
|
|
|
312
333
|
if (typeof value === 'undefined') {
|
|
313
334
|
element.style.removeProperty(styleProp);
|
|
314
335
|
} else {
|
|
315
|
-
Manipulator__default
|
|
336
|
+
Manipulator__default.default.removeDataAttribute(element, styleProp);
|
|
316
337
|
element.style[styleProp] = value;
|
|
317
338
|
}
|
|
318
339
|
};
|
|
@@ -324,7 +345,7 @@
|
|
|
324
345
|
if (isElement(selector)) {
|
|
325
346
|
callBack(selector);
|
|
326
347
|
} else {
|
|
327
|
-
SelectorEngine__default
|
|
348
|
+
SelectorEngine__default.default.find(selector, this._element).forEach(callBack);
|
|
328
349
|
}
|
|
329
350
|
}
|
|
330
351
|
|
|
@@ -336,11 +357,12 @@
|
|
|
336
357
|
|
|
337
358
|
/**
|
|
338
359
|
* --------------------------------------------------------------------------
|
|
339
|
-
* Bootstrap (v5.
|
|
340
|
-
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/
|
|
360
|
+
* Bootstrap (v5.1.3): util/backdrop.js
|
|
361
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
341
362
|
* --------------------------------------------------------------------------
|
|
342
363
|
*/
|
|
343
|
-
const Default$
|
|
364
|
+
const Default$2 = {
|
|
365
|
+
className: 'modal-backdrop',
|
|
344
366
|
isVisible: true,
|
|
345
367
|
// if false, we use the backdrop helper without adding any element to the dom
|
|
346
368
|
isAnimated: false,
|
|
@@ -348,17 +370,17 @@
|
|
|
348
370
|
// give the choice to place backdrop under different elements
|
|
349
371
|
clickCallback: null
|
|
350
372
|
};
|
|
351
|
-
const DefaultType$
|
|
373
|
+
const DefaultType$2 = {
|
|
374
|
+
className: 'string',
|
|
352
375
|
isVisible: 'boolean',
|
|
353
376
|
isAnimated: 'boolean',
|
|
354
377
|
rootElement: '(element|string)',
|
|
355
378
|
clickCallback: '(function|null)'
|
|
356
379
|
};
|
|
357
|
-
const NAME$
|
|
358
|
-
const CLASS_NAME_BACKDROP = 'modal-backdrop';
|
|
380
|
+
const NAME$2 = 'backdrop';
|
|
359
381
|
const CLASS_NAME_FADE = 'fade';
|
|
360
382
|
const CLASS_NAME_SHOW$1 = 'show';
|
|
361
|
-
const EVENT_MOUSEDOWN = `mousedown.coreui.${NAME$
|
|
383
|
+
const EVENT_MOUSEDOWN = `mousedown.coreui.${NAME$2}`;
|
|
362
384
|
|
|
363
385
|
class Backdrop {
|
|
364
386
|
constructor(config) {
|
|
@@ -404,7 +426,7 @@
|
|
|
404
426
|
_getElement() {
|
|
405
427
|
if (!this._element) {
|
|
406
428
|
const backdrop = document.createElement('div');
|
|
407
|
-
backdrop.className =
|
|
429
|
+
backdrop.className = this._config.className;
|
|
408
430
|
|
|
409
431
|
if (this._config.isAnimated) {
|
|
410
432
|
backdrop.classList.add(CLASS_NAME_FADE);
|
|
@@ -417,12 +439,12 @@
|
|
|
417
439
|
}
|
|
418
440
|
|
|
419
441
|
_getConfig(config) {
|
|
420
|
-
config = { ...Default$
|
|
442
|
+
config = { ...Default$2,
|
|
421
443
|
...(typeof config === 'object' ? config : {})
|
|
422
444
|
}; // use getElement() with the default "body" to get a fresh Element on each instantiation
|
|
423
445
|
|
|
424
446
|
config.rootElement = getElement(config.rootElement);
|
|
425
|
-
typeCheckConfig(NAME$
|
|
447
|
+
typeCheckConfig(NAME$2, config, DefaultType$2);
|
|
426
448
|
return config;
|
|
427
449
|
}
|
|
428
450
|
|
|
@@ -431,9 +453,9 @@
|
|
|
431
453
|
return;
|
|
432
454
|
}
|
|
433
455
|
|
|
434
|
-
this._config.rootElement.
|
|
456
|
+
this._config.rootElement.append(this._getElement());
|
|
435
457
|
|
|
436
|
-
EventHandler__default
|
|
458
|
+
EventHandler__default.default.on(this._getElement(), EVENT_MOUSEDOWN, () => {
|
|
437
459
|
execute(this._config.clickCallback);
|
|
438
460
|
});
|
|
439
461
|
this._isAppended = true;
|
|
@@ -444,7 +466,7 @@
|
|
|
444
466
|
return;
|
|
445
467
|
}
|
|
446
468
|
|
|
447
|
-
EventHandler__default
|
|
469
|
+
EventHandler__default.default.off(this._element, EVENT_MOUSEDOWN);
|
|
448
470
|
|
|
449
471
|
this._element.remove();
|
|
450
472
|
|
|
@@ -459,7 +481,136 @@
|
|
|
459
481
|
|
|
460
482
|
/**
|
|
461
483
|
* --------------------------------------------------------------------------
|
|
462
|
-
*
|
|
484
|
+
* Bootstrap (v5.1.3): util/focustrap.js
|
|
485
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
486
|
+
* --------------------------------------------------------------------------
|
|
487
|
+
*/
|
|
488
|
+
const Default$1 = {
|
|
489
|
+
trapElement: null,
|
|
490
|
+
// The element to trap focus inside of
|
|
491
|
+
autofocus: true
|
|
492
|
+
};
|
|
493
|
+
const DefaultType$1 = {
|
|
494
|
+
trapElement: 'element',
|
|
495
|
+
autofocus: 'boolean'
|
|
496
|
+
};
|
|
497
|
+
const NAME$1 = 'focustrap';
|
|
498
|
+
const DATA_KEY$1 = 'coreui.focustrap';
|
|
499
|
+
const EVENT_KEY$1 = `.${DATA_KEY$1}`;
|
|
500
|
+
const EVENT_FOCUSIN = `focusin${EVENT_KEY$1}`;
|
|
501
|
+
const EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$1}`;
|
|
502
|
+
const TAB_KEY = 'Tab';
|
|
503
|
+
const TAB_NAV_FORWARD = 'forward';
|
|
504
|
+
const TAB_NAV_BACKWARD = 'backward';
|
|
505
|
+
|
|
506
|
+
class FocusTrap {
|
|
507
|
+
constructor(config) {
|
|
508
|
+
this._config = this._getConfig(config);
|
|
509
|
+
this._isActive = false;
|
|
510
|
+
this._lastTabNavDirection = null;
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
activate() {
|
|
514
|
+
const {
|
|
515
|
+
trapElement,
|
|
516
|
+
autofocus
|
|
517
|
+
} = this._config;
|
|
518
|
+
|
|
519
|
+
if (this._isActive) {
|
|
520
|
+
return;
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
if (autofocus) {
|
|
524
|
+
trapElement.focus();
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
EventHandler__default.default.off(document, EVENT_KEY$1); // guard against infinite focus loop
|
|
528
|
+
|
|
529
|
+
EventHandler__default.default.on(document, EVENT_FOCUSIN, event => this._handleFocusin(event));
|
|
530
|
+
EventHandler__default.default.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event));
|
|
531
|
+
this._isActive = true;
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
deactivate() {
|
|
535
|
+
if (!this._isActive) {
|
|
536
|
+
return;
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
this._isActive = false;
|
|
540
|
+
EventHandler__default.default.off(document, EVENT_KEY$1);
|
|
541
|
+
} // Private
|
|
542
|
+
|
|
543
|
+
|
|
544
|
+
_handleFocusin(event) {
|
|
545
|
+
const {
|
|
546
|
+
target
|
|
547
|
+
} = event;
|
|
548
|
+
const {
|
|
549
|
+
trapElement
|
|
550
|
+
} = this._config;
|
|
551
|
+
|
|
552
|
+
if (target === document || target === trapElement || trapElement.contains(target)) {
|
|
553
|
+
return;
|
|
554
|
+
}
|
|
555
|
+
|
|
556
|
+
const elements = SelectorEngine__default.default.focusableChildren(trapElement);
|
|
557
|
+
|
|
558
|
+
if (elements.length === 0) {
|
|
559
|
+
trapElement.focus();
|
|
560
|
+
} else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {
|
|
561
|
+
elements[elements.length - 1].focus();
|
|
562
|
+
} else {
|
|
563
|
+
elements[0].focus();
|
|
564
|
+
}
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
_handleKeydown(event) {
|
|
568
|
+
if (event.key !== TAB_KEY) {
|
|
569
|
+
return;
|
|
570
|
+
}
|
|
571
|
+
|
|
572
|
+
this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD;
|
|
573
|
+
}
|
|
574
|
+
|
|
575
|
+
_getConfig(config) {
|
|
576
|
+
config = { ...Default$1,
|
|
577
|
+
...(typeof config === 'object' ? config : {})
|
|
578
|
+
};
|
|
579
|
+
typeCheckConfig(NAME$1, config, DefaultType$1);
|
|
580
|
+
return config;
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
}
|
|
584
|
+
|
|
585
|
+
/**
|
|
586
|
+
* --------------------------------------------------------------------------
|
|
587
|
+
* Bootstrap (v5.1.3): util/component-functions.js
|
|
588
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
589
|
+
* --------------------------------------------------------------------------
|
|
590
|
+
*/
|
|
591
|
+
|
|
592
|
+
const enableDismissTrigger = (component, method = 'hide') => {
|
|
593
|
+
const clickEvent = `click.dismiss${component.EVENT_KEY}`;
|
|
594
|
+
const name = component.NAME;
|
|
595
|
+
EventHandler__default.default.on(document, clickEvent, `[data-coreui-dismiss="${name}"]`, function (event) {
|
|
596
|
+
if (['A', 'AREA'].includes(this.tagName)) {
|
|
597
|
+
event.preventDefault();
|
|
598
|
+
}
|
|
599
|
+
|
|
600
|
+
if (isDisabled(this)) {
|
|
601
|
+
return;
|
|
602
|
+
}
|
|
603
|
+
|
|
604
|
+
const target = getElementFromSelector(this) || this.closest(`.${name}`);
|
|
605
|
+
const instance = component.getOrCreateInstance(target); // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method
|
|
606
|
+
|
|
607
|
+
instance[method]();
|
|
608
|
+
});
|
|
609
|
+
};
|
|
610
|
+
|
|
611
|
+
/**
|
|
612
|
+
* --------------------------------------------------------------------------
|
|
613
|
+
* CoreUI (v4.1.0): dropdown.js
|
|
463
614
|
* Licensed under MIT (https://coreui.io/license)
|
|
464
615
|
*
|
|
465
616
|
* This component is a modified version of the Bootstrap's offcanvas.js
|
|
@@ -489,16 +640,14 @@
|
|
|
489
640
|
scroll: 'boolean'
|
|
490
641
|
};
|
|
491
642
|
const CLASS_NAME_SHOW = 'show';
|
|
643
|
+
const CLASS_NAME_BACKDROP = 'offcanvas-backdrop';
|
|
492
644
|
const OPEN_SELECTOR = '.offcanvas.show';
|
|
493
645
|
const EVENT_SHOW = `show${EVENT_KEY}`;
|
|
494
646
|
const EVENT_SHOWN = `shown${EVENT_KEY}`;
|
|
495
647
|
const EVENT_HIDE = `hide${EVENT_KEY}`;
|
|
496
648
|
const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
|
|
497
|
-
const EVENT_FOCUSIN = `focusin${EVENT_KEY}`;
|
|
498
649
|
const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;
|
|
499
|
-
const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`;
|
|
500
650
|
const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`;
|
|
501
|
-
const SELECTOR_DATA_DISMISS = '[data-coreui-dismiss="offcanvas"]';
|
|
502
651
|
const SELECTOR_DATA_TOGGLE = '[data-coreui-toggle="offcanvas"]';
|
|
503
652
|
/**
|
|
504
653
|
* ------------------------------------------------------------------------
|
|
@@ -506,12 +655,13 @@
|
|
|
506
655
|
* ------------------------------------------------------------------------
|
|
507
656
|
*/
|
|
508
657
|
|
|
509
|
-
class Offcanvas extends BaseComponent__default
|
|
658
|
+
class Offcanvas extends BaseComponent__default.default {
|
|
510
659
|
constructor(element, config) {
|
|
511
660
|
super(element);
|
|
512
661
|
this._config = this._getConfig(config);
|
|
513
662
|
this._isShown = false;
|
|
514
663
|
this._backdrop = this._initializeBackDrop();
|
|
664
|
+
this._focustrap = this._initializeFocusTrap();
|
|
515
665
|
|
|
516
666
|
this._addEventListeners();
|
|
517
667
|
} // Getters
|
|
@@ -535,7 +685,7 @@
|
|
|
535
685
|
return;
|
|
536
686
|
}
|
|
537
687
|
|
|
538
|
-
const showEvent = EventHandler__default
|
|
688
|
+
const showEvent = EventHandler__default.default.trigger(this._element, EVENT_SHOW, {
|
|
539
689
|
relatedTarget
|
|
540
690
|
});
|
|
541
691
|
|
|
@@ -550,8 +700,6 @@
|
|
|
550
700
|
|
|
551
701
|
if (!this._config.scroll) {
|
|
552
702
|
new ScrollBarHelper().hide();
|
|
553
|
-
|
|
554
|
-
this._enforceFocusOnElement(this._element);
|
|
555
703
|
}
|
|
556
704
|
|
|
557
705
|
this._element.removeAttribute('aria-hidden');
|
|
@@ -563,7 +711,11 @@
|
|
|
563
711
|
this._element.classList.add(CLASS_NAME_SHOW);
|
|
564
712
|
|
|
565
713
|
const completeCallBack = () => {
|
|
566
|
-
|
|
714
|
+
if (!this._config.scroll) {
|
|
715
|
+
this._focustrap.activate();
|
|
716
|
+
}
|
|
717
|
+
|
|
718
|
+
EventHandler__default.default.trigger(this._element, EVENT_SHOWN, {
|
|
567
719
|
relatedTarget
|
|
568
720
|
});
|
|
569
721
|
};
|
|
@@ -576,13 +728,13 @@
|
|
|
576
728
|
return;
|
|
577
729
|
}
|
|
578
730
|
|
|
579
|
-
const hideEvent = EventHandler__default
|
|
731
|
+
const hideEvent = EventHandler__default.default.trigger(this._element, EVENT_HIDE);
|
|
580
732
|
|
|
581
733
|
if (hideEvent.defaultPrevented) {
|
|
582
734
|
return;
|
|
583
735
|
}
|
|
584
736
|
|
|
585
|
-
|
|
737
|
+
this._focustrap.deactivate();
|
|
586
738
|
|
|
587
739
|
this._element.blur();
|
|
588
740
|
|
|
@@ -605,7 +757,7 @@
|
|
|
605
757
|
new ScrollBarHelper().reset();
|
|
606
758
|
}
|
|
607
759
|
|
|
608
|
-
EventHandler__default
|
|
760
|
+
EventHandler__default.default.trigger(this._element, EVENT_HIDDEN);
|
|
609
761
|
};
|
|
610
762
|
|
|
611
763
|
this._queueCallback(completeCallback, this._element, true);
|
|
@@ -614,14 +766,15 @@
|
|
|
614
766
|
dispose() {
|
|
615
767
|
this._backdrop.dispose();
|
|
616
768
|
|
|
769
|
+
this._focustrap.deactivate();
|
|
770
|
+
|
|
617
771
|
super.dispose();
|
|
618
|
-
EventHandler__default['default'].off(document, EVENT_FOCUSIN);
|
|
619
772
|
} // Private
|
|
620
773
|
|
|
621
774
|
|
|
622
775
|
_getConfig(config) {
|
|
623
776
|
config = { ...Default,
|
|
624
|
-
...Manipulator__default
|
|
777
|
+
...Manipulator__default.default.getDataAttributes(this._element),
|
|
625
778
|
...(typeof config === 'object' ? config : {})
|
|
626
779
|
};
|
|
627
780
|
typeCheckConfig(NAME, config, DefaultType);
|
|
@@ -630,6 +783,7 @@
|
|
|
630
783
|
|
|
631
784
|
_initializeBackDrop() {
|
|
632
785
|
return new Backdrop({
|
|
786
|
+
className: CLASS_NAME_BACKDROP,
|
|
633
787
|
isVisible: this._config.backdrop,
|
|
634
788
|
isAnimated: true,
|
|
635
789
|
rootElement: this._element.parentNode,
|
|
@@ -637,20 +791,14 @@
|
|
|
637
791
|
});
|
|
638
792
|
}
|
|
639
793
|
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
EventHandler__default['default'].on(document, EVENT_FOCUSIN, event => {
|
|
644
|
-
if (document !== event.target && element !== event.target && !element.contains(event.target)) {
|
|
645
|
-
element.focus();
|
|
646
|
-
}
|
|
794
|
+
_initializeFocusTrap() {
|
|
795
|
+
return new FocusTrap({
|
|
796
|
+
trapElement: this._element
|
|
647
797
|
});
|
|
648
|
-
element.focus();
|
|
649
798
|
}
|
|
650
799
|
|
|
651
800
|
_addEventListeners() {
|
|
652
|
-
EventHandler__default
|
|
653
|
-
EventHandler__default['default'].on(this._element, EVENT_KEYDOWN_DISMISS, event => {
|
|
801
|
+
EventHandler__default.default.on(this._element, EVENT_KEYDOWN_DISMISS, event => {
|
|
654
802
|
if (this._config.keyboard && event.key === ESCAPE_KEY) {
|
|
655
803
|
this.hide();
|
|
656
804
|
}
|
|
@@ -682,7 +830,7 @@
|
|
|
682
830
|
*/
|
|
683
831
|
|
|
684
832
|
|
|
685
|
-
EventHandler__default
|
|
833
|
+
EventHandler__default.default.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
|
|
686
834
|
const target = getElementFromSelector(this);
|
|
687
835
|
|
|
688
836
|
if (['A', 'AREA'].includes(this.tagName)) {
|
|
@@ -693,14 +841,14 @@
|
|
|
693
841
|
return;
|
|
694
842
|
}
|
|
695
843
|
|
|
696
|
-
EventHandler__default
|
|
844
|
+
EventHandler__default.default.one(target, EVENT_HIDDEN, () => {
|
|
697
845
|
// focus on trigger when it is closed
|
|
698
846
|
if (isVisible(this)) {
|
|
699
847
|
this.focus();
|
|
700
848
|
}
|
|
701
849
|
}); // avoid conflict when clicking a toggler of an offcanvas, while another is open
|
|
702
850
|
|
|
703
|
-
const allReadyOpen = SelectorEngine__default
|
|
851
|
+
const allReadyOpen = SelectorEngine__default.default.findOne(OPEN_SELECTOR);
|
|
704
852
|
|
|
705
853
|
if (allReadyOpen && allReadyOpen !== target) {
|
|
706
854
|
Offcanvas.getInstance(allReadyOpen).hide();
|
|
@@ -709,7 +857,8 @@
|
|
|
709
857
|
const data = Offcanvas.getOrCreateInstance(target);
|
|
710
858
|
data.toggle(this);
|
|
711
859
|
});
|
|
712
|
-
EventHandler__default
|
|
860
|
+
EventHandler__default.default.on(window, EVENT_LOAD_DATA_API, () => SelectorEngine__default.default.find(OPEN_SELECTOR).forEach(el => Offcanvas.getOrCreateInstance(el).show()));
|
|
861
|
+
enableDismissTrigger(Offcanvas);
|
|
713
862
|
/**
|
|
714
863
|
* ------------------------------------------------------------------------
|
|
715
864
|
* jQuery
|
|
@@ -720,5 +869,5 @@
|
|
|
720
869
|
|
|
721
870
|
return Offcanvas;
|
|
722
871
|
|
|
723
|
-
}))
|
|
872
|
+
}));
|
|
724
873
|
//# sourceMappingURL=offcanvas.js.map
|