@coreui/coreui 4.2.2 → 4.2.4
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 +1 -1
- package/dist/css/coreui-grid.css +61 -61
- package/dist/css/coreui-grid.css.map +1 -1
- package/dist/css/coreui-grid.min.css +1 -1
- package/dist/css/coreui-grid.min.css.map +1 -1
- package/dist/css/coreui-grid.rtl.css +62 -62
- package/dist/css/coreui-grid.rtl.css.map +1 -1
- package/dist/css/coreui-grid.rtl.min.css +2 -2
- package/dist/css/coreui-grid.rtl.min.css.map +1 -1
- package/dist/css/coreui-reboot.css +1 -1
- package/dist/css/coreui-reboot.css.map +1 -1
- package/dist/css/coreui-reboot.min.css +1 -1
- package/dist/css/coreui-reboot.min.css.map +1 -1
- package/dist/css/coreui-reboot.rtl.css +2 -2
- package/dist/css/coreui-reboot.rtl.css.map +1 -1
- package/dist/css/coreui-reboot.rtl.min.css +2 -2
- package/dist/css/coreui-reboot.rtl.min.css.map +1 -1
- package/dist/css/coreui-utilities.css +72 -2
- 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 +73 -3
- 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 +193 -208
- 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 +194 -169
- 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 +704 -1534
- 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 +641 -1482
- 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 +642 -1483
- 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 +15 -21
- package/js/dist/alert.js.map +1 -1
- package/js/dist/base-component.js +14 -25
- package/js/dist/base-component.js.map +1 -1
- package/js/dist/button.js +13 -12
- package/js/dist/button.js.map +1 -1
- package/js/dist/carousel.js +27 -103
- package/js/dist/carousel.js.map +1 -1
- package/js/dist/collapse.js +27 -84
- package/js/dist/collapse.js.map +1 -1
- package/js/dist/dom/data.js +8 -12
- package/js/dist/dom/data.js.map +1 -1
- package/js/dist/dom/event-handler.js +32 -69
- package/js/dist/dom/event-handler.js.map +1 -1
- package/js/dist/dom/manipulator.js +4 -17
- package/js/dist/dom/manipulator.js.map +1 -1
- package/js/dist/dom/selector-engine.js +41 -24
- package/js/dist/dom/selector-engine.js.map +1 -1
- package/js/dist/dropdown.js +55 -118
- package/js/dist/dropdown.js.map +1 -1
- package/js/dist/modal.js +42 -109
- package/js/dist/modal.js.map +1 -1
- package/js/dist/navigation.js +27 -59
- package/js/dist/navigation.js.map +1 -1
- package/js/dist/offcanvas.js +26 -70
- package/js/dist/offcanvas.js.map +1 -1
- package/js/dist/popover.js +18 -21
- package/js/dist/popover.js.map +1 -1
- package/js/dist/scrollspy.js +43 -71
- package/js/dist/scrollspy.js.map +1 -1
- package/js/dist/sidebar.js +21 -65
- package/js/dist/sidebar.js.map +1 -1
- package/js/dist/tab.js +41 -105
- package/js/dist/tab.js.map +1 -1
- package/js/dist/toast.js +26 -60
- package/js/dist/toast.js.map +1 -1
- package/js/dist/tooltip.js +88 -201
- package/js/dist/tooltip.js.map +1 -1
- package/js/dist/util/backdrop.js +24 -43
- package/js/dist/util/backdrop.js.map +1 -1
- package/js/dist/util/component-functions.js +14 -12
- package/js/dist/util/component-functions.js.map +1 -1
- package/js/dist/util/config.js +14 -20
- package/js/dist/util/config.js.map +1 -1
- package/js/dist/util/focustrap.js +15 -23
- package/js/dist/util/focustrap.js.map +1 -1
- package/js/dist/util/index.js +41 -110
- package/js/dist/util/index.js.map +1 -1
- package/js/dist/util/sanitizer.js +10 -20
- package/js/dist/util/sanitizer.js.map +1 -1
- package/js/dist/util/scrollbar.js +20 -39
- package/js/dist/util/scrollbar.js.map +1 -1
- package/js/dist/util/swipe.js +19 -33
- package/js/dist/util/swipe.js.map +1 -1
- package/js/dist/util/template-factory.js +22 -42
- package/js/dist/util/template-factory.js.map +1 -1
- package/js/src/alert.js +5 -5
- package/js/src/base-component.js +6 -6
- package/js/src/button.js +4 -6
- package/js/src/carousel.js +8 -9
- package/js/src/collapse.js +9 -14
- package/js/src/dom/data.js +2 -2
- package/js/src/dom/event-handler.js +19 -16
- package/js/src/dom/manipulator.js +2 -2
- package/js/src/dom/selector-engine.js +49 -6
- package/js/src/dropdown.js +19 -9
- package/js/src/modal.js +26 -22
- package/js/src/navigation.js +7 -7
- package/js/src/offcanvas.js +11 -12
- package/js/src/popover.js +3 -3
- package/js/src/scrollspy.js +14 -10
- package/js/src/sidebar.js +7 -7
- package/js/src/tab.js +13 -23
- package/js/src/toast.js +13 -8
- package/js/src/tooltip.js +53 -75
- package/js/src/util/backdrop.js +7 -4
- package/js/src/util/component-functions.js +8 -4
- package/js/src/util/config.js +7 -5
- package/js/src/util/focustrap.js +7 -4
- package/js/src/util/index.js +21 -51
- package/js/src/util/sanitizer.js +4 -4
- package/js/src/util/scrollbar.js +7 -4
- package/js/src/util/swipe.js +7 -4
- package/js/src/util/template-factory.js +9 -6
- package/package.json +31 -30
- package/scss/_accordion.scss +7 -3
- package/scss/_button-group.scss +1 -1
- package/scss/_buttons.scss +31 -6
- package/scss/_carousel.scss +0 -3
- package/scss/_dropdown.scss +2 -1
- package/scss/_functions.scss +2 -2
- package/scss/_icon.scss +1 -1
- package/scss/_list-group.scss +6 -5
- package/scss/_modal.scss +1 -1
- package/scss/_nav.scss +2 -2
- package/scss/_navbar.scss +3 -1
- package/scss/_offcanvas.scss +5 -4
- package/scss/_pagination.scss +1 -1
- package/scss/_placeholders.scss +1 -1
- package/scss/_popover.scss +5 -5
- package/scss/_spinners.scss +2 -2
- package/scss/_toasts.scss +5 -2
- package/scss/_variables.scss +18 -16
- package/scss/coreui-grid.rtl.scss +1 -1
- package/scss/coreui-grid.scss +1 -1
- package/scss/coreui-reboot.rtl.scss +1 -1
- package/scss/coreui-reboot.scss +1 -1
- package/scss/coreui-utilities.rtl.scss +1 -1
- package/scss/coreui-utilities.scss +4 -1
- package/scss/coreui.rtl.scss +1 -1
- package/scss/coreui.scss +1 -1
- package/scss/forms/_floating-labels.scss +1 -0
- package/scss/forms/_input-group.scss +19 -8
- package/scss/helpers/_vr.scss +1 -1
- package/scss/mixins/_forms.scss +10 -11
- package/scss/mixins/_table-variants.scss +2 -2
- package/scss/mixins/_utilities.scss +1 -1
- package/scss/sidebar/_sidebar-nav.scss +3 -2
package/js/dist/navigation.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* CoreUI navigation.js v4.2.
|
|
2
|
+
* CoreUI navigation.js v4.2.4 (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(require('./util/index'), require('./dom/data'), require('./dom/event-handler'), require('./dom/manipulator'), require('./dom/selector-engine'), require('./base-component')) :
|
|
7
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./util/index.js'), require('./dom/data.js'), require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./dom/selector-engine.js'), require('./base-component.js')) :
|
|
8
8
|
typeof define === 'function' && define.amd ? define(['./util/index', './dom/data', './dom/event-handler', './dom/manipulator', './dom/selector-engine', './base-component'], factory) :
|
|
9
9
|
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Navigation = factory(global.Index, global.Data, global.EventHandler, global.Manipulator, global.SelectorEngine, global.BaseComponent));
|
|
10
|
-
})(this, (function (
|
|
10
|
+
})(this, (function (index_js, Data, 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
|
|
|
@@ -19,10 +19,11 @@
|
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
21
|
* --------------------------------------------------------------------------
|
|
22
|
-
* CoreUI (v4.2.
|
|
22
|
+
* CoreUI (v4.2.4): navigation.js
|
|
23
23
|
* Licensed under MIT (https://coreui.io/license)
|
|
24
24
|
* --------------------------------------------------------------------------
|
|
25
25
|
*/
|
|
26
|
+
|
|
26
27
|
/**
|
|
27
28
|
* ------------------------------------------------------------------------
|
|
28
29
|
* Constants
|
|
@@ -52,6 +53,7 @@
|
|
|
52
53
|
const SELECTOR_NAV_GROUP_TOGGLE = '.nav-group-toggle';
|
|
53
54
|
const SELECTOR_NAV_LINK = '.nav-link';
|
|
54
55
|
const SELECTOR_DATA_NAVIGATION = '[data-coreui="navigation"]';
|
|
56
|
+
|
|
55
57
|
/**
|
|
56
58
|
* ------------------------------------------------------------------------
|
|
57
59
|
* Class Definition
|
|
@@ -62,71 +64,61 @@
|
|
|
62
64
|
constructor(element, config) {
|
|
63
65
|
super(element);
|
|
64
66
|
this._config = this._getConfig(config);
|
|
65
|
-
|
|
66
67
|
this._setActiveLink();
|
|
67
|
-
|
|
68
68
|
this._addEventListeners();
|
|
69
|
-
|
|
70
69
|
Data__default.default.set(element, DATA_KEY, this);
|
|
71
|
-
}
|
|
72
|
-
|
|
70
|
+
}
|
|
71
|
+
// Getters
|
|
73
72
|
|
|
74
73
|
static get Default() {
|
|
75
74
|
return Default;
|
|
76
75
|
}
|
|
77
|
-
|
|
78
76
|
static get DATA_KEY() {
|
|
79
77
|
return DATA_KEY;
|
|
80
78
|
}
|
|
81
|
-
|
|
82
79
|
static get DefaultType() {
|
|
83
80
|
return DefaultType;
|
|
84
81
|
}
|
|
85
|
-
|
|
86
82
|
static get NAME() {
|
|
87
83
|
return NAME;
|
|
88
|
-
}
|
|
84
|
+
}
|
|
89
85
|
|
|
86
|
+
// Private
|
|
90
87
|
|
|
91
88
|
_getConfig(config) {
|
|
92
|
-
config = {
|
|
89
|
+
config = {
|
|
90
|
+
...Default,
|
|
93
91
|
...Manipulator__default.default.getDataAttributes(this._element),
|
|
94
92
|
...(typeof config === 'object' ? config : {})
|
|
95
93
|
};
|
|
96
94
|
return config;
|
|
97
95
|
}
|
|
98
|
-
|
|
99
96
|
_setActiveLink() {
|
|
100
97
|
for (const element of Array.from(this._element.querySelectorAll(SELECTOR_NAV_LINK))) {
|
|
101
98
|
if (element.classList.contains(CLASS_NAME_NAV_GROUP_TOGGLE)) {
|
|
102
99
|
continue;
|
|
103
100
|
}
|
|
104
|
-
|
|
105
101
|
let currentUrl = String(window.location);
|
|
106
102
|
const urlHasParams = /\?.*=/;
|
|
107
103
|
const urlHasQueryString = /\?./;
|
|
108
104
|
const urlHasHash = /#./;
|
|
109
|
-
|
|
110
105
|
if (urlHasParams.test(currentUrl) || urlHasQueryString.test(currentUrl)) {
|
|
111
106
|
currentUrl = currentUrl.split('?')[0];
|
|
112
107
|
}
|
|
113
|
-
|
|
114
108
|
if (urlHasHash.test(currentUrl)) {
|
|
115
109
|
currentUrl = currentUrl.split('#')[0];
|
|
116
110
|
}
|
|
117
|
-
|
|
118
111
|
if (this._config.activeLinksExact && element.href === currentUrl) {
|
|
119
|
-
element.classList.add(CLASS_NAME_ACTIVE);
|
|
120
|
-
|
|
112
|
+
element.classList.add(CLASS_NAME_ACTIVE);
|
|
113
|
+
// eslint-disable-next-line unicorn/no-array-for-each
|
|
121
114
|
Array.from(this._getParents(element, SELECTOR_NAV_GROUP)).forEach(element => {
|
|
122
115
|
element.classList.add(CLASS_NAME_SHOW);
|
|
123
116
|
element.setAttribute('aria-expanded', true);
|
|
124
117
|
});
|
|
125
118
|
}
|
|
126
|
-
|
|
127
119
|
if (!this._config.activeLinksExact && element.href.startsWith(currentUrl)) {
|
|
128
|
-
element.classList.add(CLASS_NAME_ACTIVE);
|
|
129
|
-
|
|
120
|
+
element.classList.add(CLASS_NAME_ACTIVE);
|
|
121
|
+
// eslint-disable-next-line unicorn/no-array-for-each
|
|
130
122
|
Array.from(this._getParents(element, SELECTOR_NAV_GROUP)).forEach(element => {
|
|
131
123
|
element.classList.add(CLASS_NAME_SHOW);
|
|
132
124
|
element.setAttribute('aria-expanded', true);
|
|
@@ -134,11 +126,11 @@
|
|
|
134
126
|
}
|
|
135
127
|
}
|
|
136
128
|
}
|
|
137
|
-
|
|
138
129
|
_getParents(element, selector) {
|
|
139
130
|
// Setup parents array
|
|
140
|
-
const parents = [];
|
|
131
|
+
const parents = [];
|
|
141
132
|
|
|
133
|
+
// Get matching parent elements
|
|
142
134
|
for (; element && element !== document; element = element.parentNode) {
|
|
143
135
|
// Add matching parents to array
|
|
144
136
|
if (selector) {
|
|
@@ -149,14 +141,11 @@
|
|
|
149
141
|
parents.push(element);
|
|
150
142
|
}
|
|
151
143
|
}
|
|
152
|
-
|
|
153
144
|
return parents;
|
|
154
145
|
}
|
|
155
|
-
|
|
156
146
|
_getAllSiblings(element, filter) {
|
|
157
147
|
const siblings = [];
|
|
158
148
|
element = element.parentNode.firstChild;
|
|
159
|
-
|
|
160
149
|
do {
|
|
161
150
|
if (element.nodeType === 3) {
|
|
162
151
|
continue; // text node
|
|
@@ -168,31 +157,25 @@
|
|
|
168
157
|
|
|
169
158
|
if (!filter || filter(element)) {
|
|
170
159
|
siblings.push(element);
|
|
171
|
-
}
|
|
160
|
+
}
|
|
172
161
|
|
|
162
|
+
// eslint-disable-next-line no-cond-assign
|
|
173
163
|
} while (element = element.nextSibling);
|
|
174
|
-
|
|
175
164
|
return siblings;
|
|
176
165
|
}
|
|
177
|
-
|
|
178
166
|
_getChildren(n, skipMe) {
|
|
179
167
|
const children = [];
|
|
180
|
-
|
|
181
168
|
for (; n; n = n.nextSibling) {
|
|
182
169
|
if (n.nodeType === 1 && n !== skipMe) {
|
|
183
170
|
children.push(n);
|
|
184
171
|
}
|
|
185
172
|
}
|
|
186
|
-
|
|
187
173
|
return children;
|
|
188
174
|
}
|
|
189
|
-
|
|
190
175
|
_getSiblings(element, filter) {
|
|
191
176
|
const siblings = this._getChildren(element.parentNode.firstChild, element).filter(filter);
|
|
192
|
-
|
|
193
177
|
return siblings;
|
|
194
178
|
}
|
|
195
|
-
|
|
196
179
|
_slideDown(element) {
|
|
197
180
|
element.style.height = 'auto';
|
|
198
181
|
const height = element.clientHeight;
|
|
@@ -200,36 +183,30 @@
|
|
|
200
183
|
setTimeout(() => {
|
|
201
184
|
element.style.height = `${height}px`;
|
|
202
185
|
}, 0);
|
|
203
|
-
|
|
204
186
|
this._queueCallback(() => {
|
|
205
187
|
element.style.height = 'auto';
|
|
206
188
|
}, element, true);
|
|
207
189
|
}
|
|
208
|
-
|
|
209
190
|
_slideUp(element, callback) {
|
|
210
191
|
const height = element.clientHeight;
|
|
211
192
|
element.style.height = `${height}px`;
|
|
212
193
|
setTimeout(() => {
|
|
213
194
|
element.style.height = '0px';
|
|
214
195
|
}, 0);
|
|
215
|
-
|
|
216
196
|
this._queueCallback(() => {
|
|
217
197
|
if (typeof callback === 'function') {
|
|
218
198
|
callback();
|
|
219
199
|
}
|
|
220
200
|
}, element, true);
|
|
221
201
|
}
|
|
222
|
-
|
|
223
202
|
_toggleGroupItems(event) {
|
|
224
203
|
let toggler = event.target;
|
|
225
|
-
|
|
226
204
|
if (!toggler.classList.contains(CLASS_NAME_NAV_GROUP_TOGGLE)) {
|
|
227
205
|
toggler = toggler.closest(SELECTOR_NAV_GROUP_TOGGLE);
|
|
228
206
|
}
|
|
207
|
+
const filter = element => Boolean(element.classList.contains(CLASS_NAME_NAV_GROUP) && element.classList.contains(CLASS_NAME_SHOW));
|
|
229
208
|
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
209
|
+
// Close other groups
|
|
233
210
|
if (this._config.groupsAutoCollapse === true) {
|
|
234
211
|
for (const element of this._getSiblings(toggler.parentNode, filter)) {
|
|
235
212
|
this._slideUp(SelectorEngine__default.default.findOne(SELECTOR_NAV_GROUP_ITEMS, element), () => {
|
|
@@ -238,62 +215,53 @@
|
|
|
238
215
|
});
|
|
239
216
|
}
|
|
240
217
|
}
|
|
241
|
-
|
|
242
218
|
if (toggler.parentNode.classList.contains(CLASS_NAME_SHOW)) {
|
|
243
219
|
this._slideUp(SelectorEngine__default.default.findOne(SELECTOR_NAV_GROUP_ITEMS, toggler.parentNode), () => {
|
|
244
220
|
toggler.parentNode.classList.remove(CLASS_NAME_SHOW);
|
|
245
221
|
toggler.parentNode.setAttribute('aria-expanded', false);
|
|
246
222
|
});
|
|
247
|
-
|
|
248
223
|
return;
|
|
249
224
|
}
|
|
250
|
-
|
|
251
225
|
toggler.parentNode.classList.add(CLASS_NAME_SHOW);
|
|
252
226
|
toggler.parentNode.setAttribute('aria-expanded', true);
|
|
253
|
-
|
|
254
227
|
this._slideDown(SelectorEngine__default.default.findOne(SELECTOR_NAV_GROUP_ITEMS, toggler.parentNode));
|
|
255
228
|
}
|
|
256
|
-
|
|
257
229
|
_addEventListeners() {
|
|
258
230
|
EventHandler__default.default.on(this._element, EVENT_CLICK_DATA_API, SELECTOR_NAV_GROUP_TOGGLE, event => {
|
|
259
231
|
event.preventDefault();
|
|
260
|
-
|
|
261
232
|
this._toggleGroupItems(event, this);
|
|
262
233
|
});
|
|
263
|
-
}
|
|
234
|
+
}
|
|
264
235
|
|
|
236
|
+
// Static
|
|
265
237
|
|
|
266
238
|
static navigationInterface(element, config) {
|
|
267
239
|
const data = Navigation.getOrCreateInstance(element, config);
|
|
268
|
-
|
|
269
240
|
if (typeof config === 'string') {
|
|
270
241
|
if (typeof data[config] === 'undefined') {
|
|
271
242
|
throw new TypeError(`No method named "${config}"`);
|
|
272
243
|
}
|
|
273
|
-
|
|
274
244
|
data[config]();
|
|
275
245
|
}
|
|
276
246
|
}
|
|
277
|
-
|
|
278
247
|
static jQueryInterface(config) {
|
|
279
248
|
return this.each(function () {
|
|
280
249
|
Navigation.navigationInterface(this, config);
|
|
281
250
|
});
|
|
282
251
|
}
|
|
283
|
-
|
|
284
252
|
}
|
|
253
|
+
|
|
285
254
|
/**
|
|
286
255
|
* ------------------------------------------------------------------------
|
|
287
256
|
* Data Api implementation
|
|
288
257
|
* ------------------------------------------------------------------------
|
|
289
258
|
*/
|
|
290
|
-
|
|
291
|
-
|
|
292
259
|
EventHandler__default.default.on(window, EVENT_LOAD_DATA_API, () => {
|
|
293
260
|
for (const element of Array.from(document.querySelectorAll(SELECTOR_DATA_NAVIGATION))) {
|
|
294
261
|
Navigation.navigationInterface(element);
|
|
295
262
|
}
|
|
296
263
|
});
|
|
264
|
+
|
|
297
265
|
/**
|
|
298
266
|
* ------------------------------------------------------------------------
|
|
299
267
|
* jQuery
|
|
@@ -301,7 +269,7 @@
|
|
|
301
269
|
* add .Navigation to jQuery only if jQuery is present
|
|
302
270
|
*/
|
|
303
271
|
|
|
304
|
-
|
|
272
|
+
index_js.defineJQueryPlugin(Navigation);
|
|
305
273
|
|
|
306
274
|
return Navigation;
|
|
307
275
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigation.js","sources":["../src/navigation.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * CoreUI (v4.2.2): navigation.js\n * Licensed under MIT (https://coreui.io/license)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'navigation'\nconst DATA_KEY = 'coreui.navigation'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n activeLinksExact: true,\n groupsAutoCollapse: true\n}\n\nconst DefaultType = {\n activeLinksExact: 'boolean',\n groupsAutoCollapse: '(string|boolean)'\n}\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SHOW = 'show'\n\nconst CLASS_NAME_NAV_GROUP = 'nav-group'\nconst CLASS_NAME_NAV_GROUP_TOGGLE = 'nav-group-toggle'\n\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_NAV_GROUP = '.nav-group'\nconst SELECTOR_NAV_GROUP_ITEMS = '.nav-group-items'\nconst SELECTOR_NAV_GROUP_TOGGLE = '.nav-group-toggle'\nconst SELECTOR_NAV_LINK = '.nav-link'\nconst SELECTOR_DATA_NAVIGATION = '[data-coreui=\"navigation\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Navigation extends BaseComponent {\n constructor(element, config) {\n super(element)\n this._config = this._getConfig(config)\n this._setActiveLink()\n this._addEventListeners()\n\n Data.set(element, DATA_KEY, this)\n }\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' ? config : {})\n }\n\n return config\n }\n\n _setActiveLink() {\n for (const element of Array.from(this._element.querySelectorAll(SELECTOR_NAV_LINK))) {\n if (element.classList.contains(CLASS_NAME_NAV_GROUP_TOGGLE)) {\n continue\n }\n\n let currentUrl = String(window.location)\n\n const urlHasParams = /\\?.*=/\n const urlHasQueryString = /\\?./\n const urlHasHash = /#./\n\n if (urlHasParams.test(currentUrl) || urlHasQueryString.test(currentUrl)) {\n currentUrl = currentUrl.split('?')[0]\n }\n\n if (urlHasHash.test(currentUrl)) {\n currentUrl = currentUrl.split('#')[0]\n }\n\n if (this._config.activeLinksExact && element.href === currentUrl) {\n element.classList.add(CLASS_NAME_ACTIVE)\n // eslint-disable-next-line unicorn/no-array-for-each\n Array.from(this._getParents(element, SELECTOR_NAV_GROUP)).forEach(element => {\n element.classList.add(CLASS_NAME_SHOW)\n element.setAttribute('aria-expanded', true)\n })\n }\n\n if (!this._config.activeLinksExact && element.href.startsWith(currentUrl)) {\n element.classList.add(CLASS_NAME_ACTIVE)\n // eslint-disable-next-line unicorn/no-array-for-each\n Array.from(this._getParents(element, SELECTOR_NAV_GROUP)).forEach(element => {\n element.classList.add(CLASS_NAME_SHOW)\n element.setAttribute('aria-expanded', true)\n })\n }\n }\n }\n\n _getParents(element, selector) {\n // Setup parents array\n const parents = []\n\n // Get matching parent elements\n for (; element && element !== document; element = element.parentNode) {\n // Add matching parents to array\n if (selector) {\n if (element.matches(selector)) {\n parents.push(element)\n }\n } else {\n parents.push(element)\n }\n }\n\n return parents\n }\n\n _getAllSiblings(element, filter) {\n const siblings = []\n element = element.parentNode.firstChild\n do {\n if (element.nodeType === 3) {\n continue // text node\n }\n\n if (element.nodeType === 8) {\n continue // comment node\n }\n\n if (!filter || filter(element)) {\n siblings.push(element)\n }\n\n // eslint-disable-next-line no-cond-assign\n } while (element = element.nextSibling)\n\n return siblings\n }\n\n _getChildren(n, skipMe) {\n const children = []\n for (; n; n = n.nextSibling) {\n if (n.nodeType === 1 && n !== skipMe) {\n children.push(n)\n }\n }\n\n return children\n }\n\n _getSiblings(element, filter) {\n const siblings = this._getChildren(element.parentNode.firstChild, element).filter(filter)\n return siblings\n }\n\n _slideDown(element) {\n element.style.height = 'auto'\n const height = element.clientHeight\n element.style.height = '0px'\n setTimeout(() => {\n element.style.height = `${height}px`\n }, 0)\n\n this._queueCallback(() => {\n element.style.height = 'auto'\n }, element, true)\n }\n\n _slideUp(element, callback) {\n const height = element.clientHeight\n element.style.height = `${height}px`\n setTimeout(() => {\n element.style.height = '0px'\n }, 0)\n\n this._queueCallback(() => {\n if (typeof callback === 'function') {\n callback()\n }\n }, element, true)\n }\n\n _toggleGroupItems(event) {\n let toggler = event.target\n if (!toggler.classList.contains(CLASS_NAME_NAV_GROUP_TOGGLE)) {\n toggler = toggler.closest(SELECTOR_NAV_GROUP_TOGGLE)\n }\n\n const filter = element => Boolean(element.classList.contains(CLASS_NAME_NAV_GROUP) && element.classList.contains(CLASS_NAME_SHOW))\n\n // Close other groups\n if (this._config.groupsAutoCollapse === true) {\n for (const element of this._getSiblings(toggler.parentNode, filter)) {\n this._slideUp(SelectorEngine.findOne(SELECTOR_NAV_GROUP_ITEMS, element), () => {\n element.classList.remove(CLASS_NAME_SHOW)\n element.setAttribute('aria-expanded', false)\n })\n }\n }\n\n if (toggler.parentNode.classList.contains(CLASS_NAME_SHOW)) {\n this._slideUp(SelectorEngine.findOne(SELECTOR_NAV_GROUP_ITEMS, toggler.parentNode), () => {\n toggler.parentNode.classList.remove(CLASS_NAME_SHOW)\n toggler.parentNode.setAttribute('aria-expanded', false)\n })\n return\n }\n\n toggler.parentNode.classList.add(CLASS_NAME_SHOW)\n toggler.parentNode.setAttribute('aria-expanded', true)\n this._slideDown(SelectorEngine.findOne(SELECTOR_NAV_GROUP_ITEMS, toggler.parentNode))\n }\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_CLICK_DATA_API, SELECTOR_NAV_GROUP_TOGGLE, event => {\n event.preventDefault()\n this._toggleGroupItems(event, this)\n })\n }\n\n // Static\n\n static navigationInterface(element, config) {\n const data = Navigation.getOrCreateInstance(element, config)\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Navigation.navigationInterface(this, config)\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n for (const element of Array.from(document.querySelectorAll(SELECTOR_DATA_NAVIGATION))) {\n Navigation.navigationInterface(element)\n }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Navigation to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Navigation)\n\nexport default Navigation\n"],"names":["NAME","DATA_KEY","EVENT_KEY","DATA_API_KEY","Default","activeLinksExact","groupsAutoCollapse","DefaultType","CLASS_NAME_ACTIVE","CLASS_NAME_SHOW","CLASS_NAME_NAV_GROUP","CLASS_NAME_NAV_GROUP_TOGGLE","EVENT_CLICK_DATA_API","EVENT_LOAD_DATA_API","SELECTOR_NAV_GROUP","SELECTOR_NAV_GROUP_ITEMS","SELECTOR_NAV_GROUP_TOGGLE","SELECTOR_NAV_LINK","SELECTOR_DATA_NAVIGATION","Navigation","BaseComponent","constructor","element","config","_config","_getConfig","_setActiveLink","_addEventListeners","Data","set","Manipulator","getDataAttributes","_element","Array","from","querySelectorAll","classList","contains","currentUrl","String","window","location","urlHasParams","urlHasQueryString","urlHasHash","test","split","href","add","_getParents","forEach","setAttribute","startsWith","selector","parents","document","parentNode","matches","push","_getAllSiblings","filter","siblings","firstChild","nodeType","nextSibling","_getChildren","n","skipMe","children","_getSiblings","_slideDown","style","height","clientHeight","setTimeout","_queueCallback","_slideUp","callback","_toggleGroupItems","event","toggler","target","closest","Boolean","SelectorEngine","findOne","remove","EventHandler","on","preventDefault","navigationInterface","data","getOrCreateInstance","TypeError","jQueryInterface","each","defineJQueryPlugin"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"navigation.js","sources":["../src/navigation.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * CoreUI (v4.2.4): navigation.js\n * Licensed under MIT (https://coreui.io/license)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index.js'\nimport Data from './dom/data.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport BaseComponent from './base-component.js'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'navigation'\nconst DATA_KEY = 'coreui.navigation'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n activeLinksExact: true,\n groupsAutoCollapse: true\n}\n\nconst DefaultType = {\n activeLinksExact: 'boolean',\n groupsAutoCollapse: '(string|boolean)'\n}\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SHOW = 'show'\n\nconst CLASS_NAME_NAV_GROUP = 'nav-group'\nconst CLASS_NAME_NAV_GROUP_TOGGLE = 'nav-group-toggle'\n\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_NAV_GROUP = '.nav-group'\nconst SELECTOR_NAV_GROUP_ITEMS = '.nav-group-items'\nconst SELECTOR_NAV_GROUP_TOGGLE = '.nav-group-toggle'\nconst SELECTOR_NAV_LINK = '.nav-link'\nconst SELECTOR_DATA_NAVIGATION = '[data-coreui=\"navigation\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Navigation extends BaseComponent {\n constructor(element, config) {\n super(element)\n this._config = this._getConfig(config)\n this._setActiveLink()\n this._addEventListeners()\n\n Data.set(element, DATA_KEY, this)\n }\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' ? config : {})\n }\n\n return config\n }\n\n _setActiveLink() {\n for (const element of Array.from(this._element.querySelectorAll(SELECTOR_NAV_LINK))) {\n if (element.classList.contains(CLASS_NAME_NAV_GROUP_TOGGLE)) {\n continue\n }\n\n let currentUrl = String(window.location)\n\n const urlHasParams = /\\?.*=/\n const urlHasQueryString = /\\?./\n const urlHasHash = /#./\n\n if (urlHasParams.test(currentUrl) || urlHasQueryString.test(currentUrl)) {\n currentUrl = currentUrl.split('?')[0]\n }\n\n if (urlHasHash.test(currentUrl)) {\n currentUrl = currentUrl.split('#')[0]\n }\n\n if (this._config.activeLinksExact && element.href === currentUrl) {\n element.classList.add(CLASS_NAME_ACTIVE)\n // eslint-disable-next-line unicorn/no-array-for-each\n Array.from(this._getParents(element, SELECTOR_NAV_GROUP)).forEach(element => {\n element.classList.add(CLASS_NAME_SHOW)\n element.setAttribute('aria-expanded', true)\n })\n }\n\n if (!this._config.activeLinksExact && element.href.startsWith(currentUrl)) {\n element.classList.add(CLASS_NAME_ACTIVE)\n // eslint-disable-next-line unicorn/no-array-for-each\n Array.from(this._getParents(element, SELECTOR_NAV_GROUP)).forEach(element => {\n element.classList.add(CLASS_NAME_SHOW)\n element.setAttribute('aria-expanded', true)\n })\n }\n }\n }\n\n _getParents(element, selector) {\n // Setup parents array\n const parents = []\n\n // Get matching parent elements\n for (; element && element !== document; element = element.parentNode) {\n // Add matching parents to array\n if (selector) {\n if (element.matches(selector)) {\n parents.push(element)\n }\n } else {\n parents.push(element)\n }\n }\n\n return parents\n }\n\n _getAllSiblings(element, filter) {\n const siblings = []\n element = element.parentNode.firstChild\n do {\n if (element.nodeType === 3) {\n continue // text node\n }\n\n if (element.nodeType === 8) {\n continue // comment node\n }\n\n if (!filter || filter(element)) {\n siblings.push(element)\n }\n\n // eslint-disable-next-line no-cond-assign\n } while (element = element.nextSibling)\n\n return siblings\n }\n\n _getChildren(n, skipMe) {\n const children = []\n for (; n; n = n.nextSibling) {\n if (n.nodeType === 1 && n !== skipMe) {\n children.push(n)\n }\n }\n\n return children\n }\n\n _getSiblings(element, filter) {\n const siblings = this._getChildren(element.parentNode.firstChild, element).filter(filter)\n return siblings\n }\n\n _slideDown(element) {\n element.style.height = 'auto'\n const height = element.clientHeight\n element.style.height = '0px'\n setTimeout(() => {\n element.style.height = `${height}px`\n }, 0)\n\n this._queueCallback(() => {\n element.style.height = 'auto'\n }, element, true)\n }\n\n _slideUp(element, callback) {\n const height = element.clientHeight\n element.style.height = `${height}px`\n setTimeout(() => {\n element.style.height = '0px'\n }, 0)\n\n this._queueCallback(() => {\n if (typeof callback === 'function') {\n callback()\n }\n }, element, true)\n }\n\n _toggleGroupItems(event) {\n let toggler = event.target\n if (!toggler.classList.contains(CLASS_NAME_NAV_GROUP_TOGGLE)) {\n toggler = toggler.closest(SELECTOR_NAV_GROUP_TOGGLE)\n }\n\n const filter = element => Boolean(element.classList.contains(CLASS_NAME_NAV_GROUP) && element.classList.contains(CLASS_NAME_SHOW))\n\n // Close other groups\n if (this._config.groupsAutoCollapse === true) {\n for (const element of this._getSiblings(toggler.parentNode, filter)) {\n this._slideUp(SelectorEngine.findOne(SELECTOR_NAV_GROUP_ITEMS, element), () => {\n element.classList.remove(CLASS_NAME_SHOW)\n element.setAttribute('aria-expanded', false)\n })\n }\n }\n\n if (toggler.parentNode.classList.contains(CLASS_NAME_SHOW)) {\n this._slideUp(SelectorEngine.findOne(SELECTOR_NAV_GROUP_ITEMS, toggler.parentNode), () => {\n toggler.parentNode.classList.remove(CLASS_NAME_SHOW)\n toggler.parentNode.setAttribute('aria-expanded', false)\n })\n return\n }\n\n toggler.parentNode.classList.add(CLASS_NAME_SHOW)\n toggler.parentNode.setAttribute('aria-expanded', true)\n this._slideDown(SelectorEngine.findOne(SELECTOR_NAV_GROUP_ITEMS, toggler.parentNode))\n }\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_CLICK_DATA_API, SELECTOR_NAV_GROUP_TOGGLE, event => {\n event.preventDefault()\n this._toggleGroupItems(event, this)\n })\n }\n\n // Static\n\n static navigationInterface(element, config) {\n const data = Navigation.getOrCreateInstance(element, config)\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Navigation.navigationInterface(this, config)\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n for (const element of Array.from(document.querySelectorAll(SELECTOR_DATA_NAVIGATION))) {\n Navigation.navigationInterface(element)\n }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Navigation to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Navigation)\n\nexport default Navigation\n"],"names":["NAME","DATA_KEY","EVENT_KEY","DATA_API_KEY","Default","activeLinksExact","groupsAutoCollapse","DefaultType","CLASS_NAME_ACTIVE","CLASS_NAME_SHOW","CLASS_NAME_NAV_GROUP","CLASS_NAME_NAV_GROUP_TOGGLE","EVENT_CLICK_DATA_API","EVENT_LOAD_DATA_API","SELECTOR_NAV_GROUP","SELECTOR_NAV_GROUP_ITEMS","SELECTOR_NAV_GROUP_TOGGLE","SELECTOR_NAV_LINK","SELECTOR_DATA_NAVIGATION","Navigation","BaseComponent","constructor","element","config","_config","_getConfig","_setActiveLink","_addEventListeners","Data","set","Manipulator","getDataAttributes","_element","Array","from","querySelectorAll","classList","contains","currentUrl","String","window","location","urlHasParams","urlHasQueryString","urlHasHash","test","split","href","add","_getParents","forEach","setAttribute","startsWith","selector","parents","document","parentNode","matches","push","_getAllSiblings","filter","siblings","firstChild","nodeType","nextSibling","_getChildren","n","skipMe","children","_getSiblings","_slideDown","style","height","clientHeight","setTimeout","_queueCallback","_slideUp","callback","_toggleGroupItems","event","toggler","target","closest","Boolean","SelectorEngine","findOne","remove","EventHandler","on","preventDefault","navigationInterface","data","getOrCreateInstance","TypeError","jQueryInterface","each","defineJQueryPlugin"],"mappings":"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"}
|
package/js/dist/offcanvas.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* CoreUI offcanvas.js v4.2.
|
|
2
|
+
* CoreUI offcanvas.js v4.2.4 (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(require('./util/index'), require('./util/scrollbar'), require('./dom/event-handler'), require('./base-component'), require('./dom/selector-engine'), require('./util/backdrop'), require('./util/focustrap'), require('./util/component-functions')) :
|
|
7
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./util/index.js'), require('./util/scrollbar.js'), require('./dom/event-handler.js'), require('./base-component.js'), require('./dom/selector-engine.js'), require('./util/backdrop.js'), require('./util/focustrap.js'), require('./util/component-functions.js')) :
|
|
8
8
|
typeof define === 'function' && define.amd ? define(['./util/index', './util/scrollbar', './dom/event-handler', './base-component', './dom/selector-engine', './util/backdrop', './util/focustrap', './util/component-functions'], factory) :
|
|
9
9
|
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Offcanvas = factory(global.Index, global.Scrollbar, global.EventHandler, global.BaseComponent, global.SelectorEngine, global.Backdrop, global.Focustrap, global.ComponentFunctions));
|
|
10
|
-
})(this, (function (
|
|
10
|
+
})(this, (function (index_js, ScrollBarHelper, EventHandler, BaseComponent, SelectorEngine, Backdrop, FocusTrap, componentFunctions_js) { 'use strict';
|
|
11
11
|
|
|
12
12
|
const _interopDefaultLegacy = e => e && typeof e === 'object' && 'default' in e ? e : { default: e };
|
|
13
13
|
|
|
@@ -20,13 +20,14 @@
|
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
22
|
* --------------------------------------------------------------------------
|
|
23
|
-
* CoreUI (v4.2.
|
|
23
|
+
* CoreUI (v4.2.4): dropdown.js
|
|
24
24
|
* Licensed under MIT (https://coreui.io/license)
|
|
25
25
|
*
|
|
26
26
|
* This component is a modified version of the Bootstrap's offcanvas.js
|
|
27
27
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
|
28
28
|
* --------------------------------------------------------------------------
|
|
29
29
|
*/
|
|
30
|
+
|
|
30
31
|
/**
|
|
31
32
|
* Constants
|
|
32
33
|
*/
|
|
@@ -61,6 +62,7 @@
|
|
|
61
62
|
keyboard: 'boolean',
|
|
62
63
|
scroll: 'boolean'
|
|
63
64
|
};
|
|
65
|
+
|
|
64
66
|
/**
|
|
65
67
|
* Class definition
|
|
66
68
|
*/
|
|
@@ -71,130 +73,95 @@
|
|
|
71
73
|
this._isShown = false;
|
|
72
74
|
this._backdrop = this._initializeBackDrop();
|
|
73
75
|
this._focustrap = this._initializeFocusTrap();
|
|
74
|
-
|
|
75
76
|
this._addEventListeners();
|
|
76
|
-
}
|
|
77
|
-
|
|
77
|
+
}
|
|
78
78
|
|
|
79
|
+
// Getters
|
|
79
80
|
static get Default() {
|
|
80
81
|
return Default;
|
|
81
82
|
}
|
|
82
|
-
|
|
83
83
|
static get DefaultType() {
|
|
84
84
|
return DefaultType;
|
|
85
85
|
}
|
|
86
|
-
|
|
87
86
|
static get NAME() {
|
|
88
87
|
return NAME;
|
|
89
|
-
}
|
|
90
|
-
|
|
88
|
+
}
|
|
91
89
|
|
|
90
|
+
// Public
|
|
92
91
|
toggle(relatedTarget) {
|
|
93
92
|
return this._isShown ? this.hide() : this.show(relatedTarget);
|
|
94
93
|
}
|
|
95
|
-
|
|
96
94
|
show(relatedTarget) {
|
|
97
95
|
if (this._isShown) {
|
|
98
96
|
return;
|
|
99
97
|
}
|
|
100
|
-
|
|
101
98
|
const showEvent = EventHandler__default.default.trigger(this._element, EVENT_SHOW, {
|
|
102
99
|
relatedTarget
|
|
103
100
|
});
|
|
104
|
-
|
|
105
101
|
if (showEvent.defaultPrevented) {
|
|
106
102
|
return;
|
|
107
103
|
}
|
|
108
|
-
|
|
109
104
|
this._isShown = true;
|
|
110
|
-
|
|
111
105
|
this._backdrop.show();
|
|
112
|
-
|
|
113
106
|
if (!this._config.scroll) {
|
|
114
107
|
new ScrollBarHelper__default.default().hide();
|
|
115
108
|
}
|
|
116
|
-
|
|
117
109
|
this._element.setAttribute('aria-modal', true);
|
|
118
|
-
|
|
119
110
|
this._element.setAttribute('role', 'dialog');
|
|
120
|
-
|
|
121
111
|
this._element.classList.add(CLASS_NAME_SHOWING);
|
|
122
|
-
|
|
123
112
|
const completeCallBack = () => {
|
|
124
|
-
if (!this._config.scroll) {
|
|
113
|
+
if (!this._config.scroll || this._config.backdrop) {
|
|
125
114
|
this._focustrap.activate();
|
|
126
115
|
}
|
|
127
|
-
|
|
128
116
|
this._element.classList.add(CLASS_NAME_SHOW);
|
|
129
|
-
|
|
130
117
|
this._element.classList.remove(CLASS_NAME_SHOWING);
|
|
131
|
-
|
|
132
118
|
EventHandler__default.default.trigger(this._element, EVENT_SHOWN, {
|
|
133
119
|
relatedTarget
|
|
134
120
|
});
|
|
135
121
|
};
|
|
136
|
-
|
|
137
122
|
this._queueCallback(completeCallBack, this._element, true);
|
|
138
123
|
}
|
|
139
|
-
|
|
140
124
|
hide() {
|
|
141
125
|
if (!this._isShown) {
|
|
142
126
|
return;
|
|
143
127
|
}
|
|
144
|
-
|
|
145
128
|
const hideEvent = EventHandler__default.default.trigger(this._element, EVENT_HIDE);
|
|
146
|
-
|
|
147
129
|
if (hideEvent.defaultPrevented) {
|
|
148
130
|
return;
|
|
149
131
|
}
|
|
150
|
-
|
|
151
132
|
this._focustrap.deactivate();
|
|
152
|
-
|
|
153
133
|
this._element.blur();
|
|
154
|
-
|
|
155
134
|
this._isShown = false;
|
|
156
|
-
|
|
157
135
|
this._element.classList.add(CLASS_NAME_HIDING);
|
|
158
|
-
|
|
159
136
|
this._backdrop.hide();
|
|
160
|
-
|
|
161
137
|
const completeCallback = () => {
|
|
162
138
|
this._element.classList.remove(CLASS_NAME_SHOW, CLASS_NAME_HIDING);
|
|
163
|
-
|
|
164
139
|
this._element.removeAttribute('aria-modal');
|
|
165
|
-
|
|
166
140
|
this._element.removeAttribute('role');
|
|
167
|
-
|
|
168
141
|
if (!this._config.scroll) {
|
|
169
142
|
new ScrollBarHelper__default.default().reset();
|
|
170
143
|
}
|
|
171
|
-
|
|
172
144
|
EventHandler__default.default.trigger(this._element, EVENT_HIDDEN);
|
|
173
145
|
};
|
|
174
|
-
|
|
175
146
|
this._queueCallback(completeCallback, this._element, true);
|
|
176
147
|
}
|
|
177
|
-
|
|
178
148
|
dispose() {
|
|
179
149
|
this._backdrop.dispose();
|
|
180
|
-
|
|
181
150
|
this._focustrap.deactivate();
|
|
182
|
-
|
|
183
151
|
super.dispose();
|
|
184
|
-
}
|
|
185
|
-
|
|
152
|
+
}
|
|
186
153
|
|
|
154
|
+
// Private
|
|
187
155
|
_initializeBackDrop() {
|
|
188
156
|
const clickCallback = () => {
|
|
189
157
|
if (this._config.backdrop === 'static') {
|
|
190
158
|
EventHandler__default.default.trigger(this._element, EVENT_HIDE_PREVENTED);
|
|
191
159
|
return;
|
|
192
160
|
}
|
|
193
|
-
|
|
194
161
|
this.hide();
|
|
195
|
-
};
|
|
196
|
-
|
|
162
|
+
};
|
|
197
163
|
|
|
164
|
+
// 'static' option will be translated to true, and booleans will keep their value
|
|
198
165
|
const isVisible = Boolean(this._config.backdrop);
|
|
199
166
|
return new Backdrop__default.default({
|
|
200
167
|
className: CLASS_NAME_BACKDROP,
|
|
@@ -204,75 +171,63 @@
|
|
|
204
171
|
clickCallback: isVisible ? clickCallback : null
|
|
205
172
|
});
|
|
206
173
|
}
|
|
207
|
-
|
|
208
174
|
_initializeFocusTrap() {
|
|
209
175
|
return new FocusTrap__default.default({
|
|
210
176
|
trapElement: this._element
|
|
211
177
|
});
|
|
212
178
|
}
|
|
213
|
-
|
|
214
179
|
_addEventListeners() {
|
|
215
180
|
EventHandler__default.default.on(this._element, EVENT_KEYDOWN_DISMISS, event => {
|
|
216
181
|
if (event.key !== ESCAPE_KEY) {
|
|
217
182
|
return;
|
|
218
183
|
}
|
|
219
|
-
|
|
220
184
|
if (!this._config.keyboard) {
|
|
221
185
|
EventHandler__default.default.trigger(this._element, EVENT_HIDE_PREVENTED);
|
|
222
186
|
return;
|
|
223
187
|
}
|
|
224
|
-
|
|
225
188
|
this.hide();
|
|
226
189
|
});
|
|
227
|
-
}
|
|
228
|
-
|
|
190
|
+
}
|
|
229
191
|
|
|
192
|
+
// Static
|
|
230
193
|
static jQueryInterface(config) {
|
|
231
194
|
return this.each(function () {
|
|
232
195
|
const data = Offcanvas.getOrCreateInstance(this, config);
|
|
233
|
-
|
|
234
196
|
if (typeof config !== 'string') {
|
|
235
197
|
return;
|
|
236
198
|
}
|
|
237
|
-
|
|
238
199
|
if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
|
|
239
200
|
throw new TypeError(`No method named "${config}"`);
|
|
240
201
|
}
|
|
241
|
-
|
|
242
202
|
data[config](this);
|
|
243
203
|
});
|
|
244
204
|
}
|
|
245
|
-
|
|
246
205
|
}
|
|
206
|
+
|
|
247
207
|
/**
|
|
248
208
|
* Data API implementation
|
|
249
209
|
*/
|
|
250
210
|
|
|
251
|
-
|
|
252
211
|
EventHandler__default.default.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
|
|
253
|
-
const target =
|
|
254
|
-
|
|
212
|
+
const target = SelectorEngine__default.default.getElementFromSelector(this);
|
|
255
213
|
if (['A', 'AREA'].includes(this.tagName)) {
|
|
256
214
|
event.preventDefault();
|
|
257
215
|
}
|
|
258
|
-
|
|
259
|
-
if (index.isDisabled(this)) {
|
|
216
|
+
if (index_js.isDisabled(this)) {
|
|
260
217
|
return;
|
|
261
218
|
}
|
|
262
|
-
|
|
263
219
|
EventHandler__default.default.one(target, EVENT_HIDDEN, () => {
|
|
264
220
|
// focus on trigger when it is closed
|
|
265
|
-
if (
|
|
221
|
+
if (index_js.isVisible(this)) {
|
|
266
222
|
this.focus();
|
|
267
223
|
}
|
|
268
|
-
});
|
|
224
|
+
});
|
|
269
225
|
|
|
226
|
+
// avoid conflict when clicking a toggler of an offcanvas, while another is open
|
|
270
227
|
const alreadyOpen = SelectorEngine__default.default.findOne(OPEN_SELECTOR);
|
|
271
|
-
|
|
272
228
|
if (alreadyOpen && alreadyOpen !== target) {
|
|
273
229
|
Offcanvas.getInstance(alreadyOpen).hide();
|
|
274
230
|
}
|
|
275
|
-
|
|
276
231
|
const data = Offcanvas.getOrCreateInstance(target);
|
|
277
232
|
data.toggle(this);
|
|
278
233
|
});
|
|
@@ -288,12 +243,13 @@
|
|
|
288
243
|
}
|
|
289
244
|
}
|
|
290
245
|
});
|
|
291
|
-
|
|
246
|
+
componentFunctions_js.enableDismissTrigger(Offcanvas);
|
|
247
|
+
|
|
292
248
|
/**
|
|
293
249
|
* jQuery
|
|
294
250
|
*/
|
|
295
251
|
|
|
296
|
-
|
|
252
|
+
index_js.defineJQueryPlugin(Offcanvas);
|
|
297
253
|
|
|
298
254
|
return Offcanvas;
|
|
299
255
|
|