bootstrap 4.3.1 → 5.3.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.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +55 -0
- data/CHANGELOG.md +2 -14
- data/README.md +28 -5
- data/assets/javascripts/bootstrap/alert.js +54 -163
- data/assets/javascripts/bootstrap/base-component.js +83 -0
- data/assets/javascripts/bootstrap/button.js +44 -152
- data/assets/javascripts/bootstrap/carousel.js +289 -569
- data/assets/javascripts/bootstrap/collapse.js +170 -349
- data/assets/javascripts/bootstrap/dom/data.js +62 -0
- data/assets/javascripts/bootstrap/dom/event-handler.js +236 -0
- data/assets/javascripts/bootstrap/dom/manipulator.js +71 -0
- data/assets/javascripts/bootstrap/dom/selector-engine.js +103 -0
- data/assets/javascripts/bootstrap/dropdown.js +303 -496
- data/assets/javascripts/bootstrap/modal.js +229 -559
- data/assets/javascripts/bootstrap/offcanvas.js +245 -0
- data/assets/javascripts/bootstrap/popover.js +61 -226
- data/assets/javascripts/bootstrap/scrollspy.js +217 -317
- data/assets/javascripts/bootstrap/tab.js +220 -212
- data/assets/javascripts/bootstrap/toast.js +145 -229
- data/assets/javascripts/bootstrap/tooltip.js +421 -782
- data/assets/javascripts/bootstrap/util/backdrop.js +139 -0
- data/assets/javascripts/bootstrap/util/component-functions.js +41 -0
- data/assets/javascripts/bootstrap/util/config.js +67 -0
- data/assets/javascripts/bootstrap/util/focustrap.js +113 -0
- data/assets/javascripts/bootstrap/util/index.js +281 -0
- data/assets/javascripts/bootstrap/util/sanitizer.js +110 -0
- data/assets/javascripts/bootstrap/util/scrollbar.js +112 -0
- data/assets/javascripts/bootstrap/util/swipe.js +134 -0
- data/assets/javascripts/bootstrap/util/template-factory.js +150 -0
- data/assets/javascripts/bootstrap-global-this-define.js +6 -0
- data/assets/javascripts/bootstrap-global-this-undefine.js +2 -0
- data/assets/javascripts/bootstrap-sprockets.js +23 -7
- data/assets/javascripts/bootstrap.js +3690 -3639
- data/assets/javascripts/bootstrap.min.js +4 -4
- data/assets/stylesheets/_bootstrap-grid.scss +53 -20
- data/assets/stylesheets/_bootstrap-reboot.scss +5 -7
- data/assets/stylesheets/_bootstrap.scss +21 -13
- data/assets/stylesheets/bootstrap/_accordion.scss +158 -0
- data/assets/stylesheets/bootstrap/_alert.scss +32 -15
- data/assets/stylesheets/bootstrap/_badge.scss +15 -31
- data/assets/stylesheets/bootstrap/_breadcrumb.scss +23 -24
- data/assets/stylesheets/bootstrap/_button-group.scss +27 -48
- data/assets/stylesheets/bootstrap/_buttons.scss +139 -69
- data/assets/stylesheets/bootstrap/_card.scss +91 -141
- data/assets/stylesheets/bootstrap/_carousel.scss +86 -39
- data/assets/stylesheets/bootstrap/_close.scss +51 -29
- data/assets/stylesheets/bootstrap/_containers.scss +41 -0
- data/assets/stylesheets/bootstrap/_dropdown.scss +131 -72
- data/assets/stylesheets/bootstrap/_forms.scss +9 -330
- data/assets/stylesheets/bootstrap/_functions.scss +244 -28
- data/assets/stylesheets/bootstrap/_grid.scss +18 -31
- data/assets/stylesheets/bootstrap/_helpers.scss +12 -0
- data/assets/stylesheets/bootstrap/_images.scss +3 -3
- data/assets/stylesheets/bootstrap/_list-group.scss +101 -53
- data/assets/stylesheets/bootstrap/_maps.scss +174 -0
- data/assets/stylesheets/bootstrap/_mixins.scss +13 -18
- data/assets/stylesheets/bootstrap/_modal.scss +120 -112
- data/assets/stylesheets/bootstrap/_nav.scss +113 -24
- data/assets/stylesheets/bootstrap/_navbar.scss +145 -150
- data/assets/stylesheets/bootstrap/_offcanvas.scss +146 -0
- data/assets/stylesheets/bootstrap/_pagination.scss +74 -38
- data/assets/stylesheets/bootstrap/_placeholders.scss +51 -0
- data/assets/stylesheets/bootstrap/_popover.scss +99 -74
- data/assets/stylesheets/bootstrap/_progress.scss +40 -15
- data/assets/stylesheets/bootstrap/_reboot.scss +342 -215
- data/assets/stylesheets/bootstrap/_root.scss +174 -9
- data/assets/stylesheets/bootstrap/_spinners.scss +52 -22
- data/assets/stylesheets/bootstrap/_tables.scss +101 -115
- data/assets/stylesheets/bootstrap/_toasts.scss +54 -25
- data/assets/stylesheets/bootstrap/_tooltip.scss +67 -63
- data/assets/stylesheets/bootstrap/_transitions.scss +8 -1
- data/assets/stylesheets/bootstrap/_type.scss +42 -61
- data/assets/stylesheets/bootstrap/_utilities.scss +806 -17
- data/assets/stylesheets/bootstrap/_variables-dark.scss +85 -0
- data/assets/stylesheets/bootstrap/_variables.scss +1235 -615
- data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +19 -0
- data/assets/stylesheets/bootstrap/forms/_floating-labels.scss +94 -0
- data/assets/stylesheets/bootstrap/forms/_form-check.scss +188 -0
- data/assets/stylesheets/bootstrap/forms/_form-control.scss +214 -0
- data/assets/stylesheets/bootstrap/forms/_form-range.scss +91 -0
- data/assets/stylesheets/bootstrap/forms/_form-select.scss +80 -0
- data/assets/stylesheets/bootstrap/forms/_form-text.scss +11 -0
- data/assets/stylesheets/bootstrap/forms/_input-group.scss +132 -0
- data/assets/stylesheets/bootstrap/forms/_labels.scss +36 -0
- data/assets/stylesheets/bootstrap/forms/_validation.scss +12 -0
- data/assets/stylesheets/bootstrap/helpers/_color-bg.scss +8 -0
- data/assets/stylesheets/bootstrap/helpers/_colored-links.scss +30 -0
- data/assets/stylesheets/bootstrap/helpers/_focus-ring.scss +5 -0
- data/assets/stylesheets/bootstrap/helpers/_icon-link.scss +25 -0
- data/assets/stylesheets/bootstrap/helpers/_position.scss +36 -0
- data/assets/stylesheets/bootstrap/helpers/_ratio.scss +26 -0
- data/assets/stylesheets/bootstrap/helpers/_stacks.scss +15 -0
- data/assets/stylesheets/bootstrap/helpers/_stretched-link.scss +15 -0
- data/assets/stylesheets/bootstrap/helpers/_text-truncation.scss +7 -0
- data/assets/stylesheets/bootstrap/helpers/_visually-hidden.scss +8 -0
- data/assets/stylesheets/bootstrap/helpers/_vr.scss +8 -0
- data/assets/stylesheets/bootstrap/mixins/_alert.scss +11 -6
- data/assets/stylesheets/bootstrap/mixins/_backdrop.scss +14 -0
- data/assets/stylesheets/bootstrap/mixins/_banner.scss +7 -0
- data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +37 -22
- data/assets/stylesheets/bootstrap/mixins/_box-shadow.scss +7 -9
- data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +20 -16
- data/assets/stylesheets/bootstrap/mixins/_buttons.scss +60 -97
- data/assets/stylesheets/bootstrap/mixins/_caret.scss +34 -27
- data/assets/stylesheets/bootstrap/mixins/_clearfix.scss +2 -0
- data/assets/stylesheets/bootstrap/mixins/_color-mode.scss +21 -0
- data/assets/stylesheets/bootstrap/mixins/_color-scheme.scss +7 -0
- data/assets/stylesheets/bootstrap/mixins/_container.scss +11 -0
- data/assets/stylesheets/bootstrap/mixins/_forms.scss +77 -116
- data/assets/stylesheets/bootstrap/mixins/_gradients.scss +13 -11
- data/assets/stylesheets/bootstrap/mixins/_grid.scss +133 -33
- data/assets/stylesheets/bootstrap/mixins/_image.scss +0 -20
- data/assets/stylesheets/bootstrap/mixins/_list-group.scss +7 -2
- data/assets/stylesheets/bootstrap/mixins/_pagination.scss +7 -19
- data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +2 -2
- data/assets/stylesheets/bootstrap/mixins/_table-variants.scss +24 -0
- data/assets/stylesheets/bootstrap/mixins/_transition.scss +18 -8
- data/assets/stylesheets/bootstrap/mixins/_utilities.scss +97 -0
- data/assets/stylesheets/bootstrap/mixins/_visually-hidden.scss +33 -0
- data/assets/stylesheets/bootstrap/utilities/_api.scss +47 -0
- data/assets/stylesheets/bootstrap/vendor/_rfs.scss +276 -132
- data/bootstrap.gemspec +4 -6
- data/lib/bootstrap/version.rb +2 -2
- data/tasks/updater/js.rb +31 -7
- data/tasks/updater/network.rb +10 -4
- data/tasks/updater/scss.rb +1 -1
- data/tasks/updater.rb +2 -2
- data/test/dummy_rails/app/assets/config/manifest.js +3 -0
- data/test/dummy_rails/app/assets/javascripts/application.js +4 -3
- data/test/dummy_rails/app/assets/stylesheets/.browserslistrc +1 -0
- data/test/dummy_rails/app/views/layouts/application.html.erb +3 -1
- data/test/dummy_rails/app/views/pages/root.html +89 -0
- data/test/dummy_rails/config/application.rb +0 -3
- data/test/gemfiles/rails_5_2.gemfile +8 -0
- data/test/gemfiles/rails_6_0.gemfile +7 -0
- data/test/gemfiles/rails_6_1.gemfile +7 -0
- data/test/gemfiles/rails_7_0.gemfile +7 -0
- data/test/support/dummy_rails_integration.rb +3 -1
- data/test/test_helper.rb +18 -12
- metadata +86 -84
- data/.travis.yml +0 -17
- data/assets/javascripts/bootstrap/util.js +0 -171
- data/assets/stylesheets/bootstrap/_code.scss +0 -48
- data/assets/stylesheets/bootstrap/_custom-forms.scss +0 -507
- data/assets/stylesheets/bootstrap/_input-group.scss +0 -193
- data/assets/stylesheets/bootstrap/_jumbotron.scss +0 -17
- data/assets/stylesheets/bootstrap/_media.scss +0 -8
- data/assets/stylesheets/bootstrap/_print.scss +0 -141
- data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +0 -21
- data/assets/stylesheets/bootstrap/mixins/_badge.scss +0 -17
- data/assets/stylesheets/bootstrap/mixins/_float.scss +0 -14
- data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +0 -66
- data/assets/stylesheets/bootstrap/mixins/_hover.scss +0 -37
- data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +0 -10
- data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +0 -33
- data/assets/stylesheets/bootstrap/mixins/_size.scss +0 -7
- data/assets/stylesheets/bootstrap/mixins/_table-row.scss +0 -39
- data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +0 -16
- data/assets/stylesheets/bootstrap/mixins/_text-hide.scss +0 -11
- data/assets/stylesheets/bootstrap/mixins/_visibility.scss +0 -8
- data/assets/stylesheets/bootstrap/utilities/_align.scss +0 -8
- data/assets/stylesheets/bootstrap/utilities/_background.scss +0 -19
- data/assets/stylesheets/bootstrap/utilities/_borders.scss +0 -75
- data/assets/stylesheets/bootstrap/utilities/_display.scss +0 -26
- data/assets/stylesheets/bootstrap/utilities/_embed.scss +0 -39
- data/assets/stylesheets/bootstrap/utilities/_flex.scss +0 -51
- data/assets/stylesheets/bootstrap/utilities/_float.scss +0 -11
- data/assets/stylesheets/bootstrap/utilities/_overflow.scss +0 -5
- data/assets/stylesheets/bootstrap/utilities/_position.scss +0 -32
- data/assets/stylesheets/bootstrap/utilities/_screenreaders.scss +0 -11
- data/assets/stylesheets/bootstrap/utilities/_shadows.scss +0 -6
- data/assets/stylesheets/bootstrap/utilities/_sizing.scss +0 -20
- data/assets/stylesheets/bootstrap/utilities/_spacing.scss +0 -73
- data/assets/stylesheets/bootstrap/utilities/_stretched-link.scss +0 -19
- data/assets/stylesheets/bootstrap/utilities/_text.scss +0 -72
- data/assets/stylesheets/bootstrap/utilities/_visibility.scss +0 -13
- data/test/dummy_rails/app/views/pages/root.html.slim +0 -58
- /data/assets/stylesheets/bootstrap/{utilities → helpers}/_clearfix.scss +0 -0
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Bootstrap offcanvas.js v5.3.0 (https://getbootstrap.com/)
|
|
3
|
+
* Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
|
4
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
5
|
+
*/
|
|
6
|
+
(function (global, factory) {
|
|
7
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./base-component.js'), require('./dom/event-handler.js'), require('./dom/selector-engine.js'), require('./util/backdrop.js'), require('./util/component-functions.js'), require('./util/focustrap.js'), require('./util/index.js'), require('./util/scrollbar.js')) :
|
|
8
|
+
typeof define === 'function' && define.amd ? define(['./base-component', './dom/event-handler', './dom/selector-engine', './util/backdrop', './util/component-functions', './util/focustrap', './util/index', './util/scrollbar'], factory) :
|
|
9
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Offcanvas = factory(global.BaseComponent, global.EventHandler, global.SelectorEngine, global.Backdrop, global.ComponentFunctions, global.Focustrap, global.Index, global.Scrollbar));
|
|
10
|
+
})(this, (function (BaseComponent, EventHandler, SelectorEngine, Backdrop, componentFunctions_js, FocusTrap, index_js, ScrollBarHelper) { 'use strict';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* --------------------------------------------------------------------------
|
|
14
|
+
* Bootstrap offcanvas.js
|
|
15
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
16
|
+
* --------------------------------------------------------------------------
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Constants
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
const NAME = 'offcanvas';
|
|
25
|
+
const DATA_KEY = 'bs.offcanvas';
|
|
26
|
+
const EVENT_KEY = `.${DATA_KEY}`;
|
|
27
|
+
const DATA_API_KEY = '.data-api';
|
|
28
|
+
const EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`;
|
|
29
|
+
const ESCAPE_KEY = 'Escape';
|
|
30
|
+
const CLASS_NAME_SHOW = 'show';
|
|
31
|
+
const CLASS_NAME_SHOWING = 'showing';
|
|
32
|
+
const CLASS_NAME_HIDING = 'hiding';
|
|
33
|
+
const CLASS_NAME_BACKDROP = 'offcanvas-backdrop';
|
|
34
|
+
const OPEN_SELECTOR = '.offcanvas.show';
|
|
35
|
+
const EVENT_SHOW = `show${EVENT_KEY}`;
|
|
36
|
+
const EVENT_SHOWN = `shown${EVENT_KEY}`;
|
|
37
|
+
const EVENT_HIDE = `hide${EVENT_KEY}`;
|
|
38
|
+
const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`;
|
|
39
|
+
const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
|
|
40
|
+
const EVENT_RESIZE = `resize${EVENT_KEY}`;
|
|
41
|
+
const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;
|
|
42
|
+
const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`;
|
|
43
|
+
const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="offcanvas"]';
|
|
44
|
+
const Default = {
|
|
45
|
+
backdrop: true,
|
|
46
|
+
keyboard: true,
|
|
47
|
+
scroll: false
|
|
48
|
+
};
|
|
49
|
+
const DefaultType = {
|
|
50
|
+
backdrop: '(boolean|string)',
|
|
51
|
+
keyboard: 'boolean',
|
|
52
|
+
scroll: 'boolean'
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Class definition
|
|
57
|
+
*/
|
|
58
|
+
|
|
59
|
+
class Offcanvas extends BaseComponent {
|
|
60
|
+
constructor(element, config) {
|
|
61
|
+
super(element, config);
|
|
62
|
+
this._isShown = false;
|
|
63
|
+
this._backdrop = this._initializeBackDrop();
|
|
64
|
+
this._focustrap = this._initializeFocusTrap();
|
|
65
|
+
this._addEventListeners();
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// Getters
|
|
69
|
+
static get Default() {
|
|
70
|
+
return Default;
|
|
71
|
+
}
|
|
72
|
+
static get DefaultType() {
|
|
73
|
+
return DefaultType;
|
|
74
|
+
}
|
|
75
|
+
static get NAME() {
|
|
76
|
+
return NAME;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// Public
|
|
80
|
+
toggle(relatedTarget) {
|
|
81
|
+
return this._isShown ? this.hide() : this.show(relatedTarget);
|
|
82
|
+
}
|
|
83
|
+
show(relatedTarget) {
|
|
84
|
+
if (this._isShown) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {
|
|
88
|
+
relatedTarget
|
|
89
|
+
});
|
|
90
|
+
if (showEvent.defaultPrevented) {
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
this._isShown = true;
|
|
94
|
+
this._backdrop.show();
|
|
95
|
+
if (!this._config.scroll) {
|
|
96
|
+
new ScrollBarHelper().hide();
|
|
97
|
+
}
|
|
98
|
+
this._element.setAttribute('aria-modal', true);
|
|
99
|
+
this._element.setAttribute('role', 'dialog');
|
|
100
|
+
this._element.classList.add(CLASS_NAME_SHOWING);
|
|
101
|
+
const completeCallBack = () => {
|
|
102
|
+
if (!this._config.scroll || this._config.backdrop) {
|
|
103
|
+
this._focustrap.activate();
|
|
104
|
+
}
|
|
105
|
+
this._element.classList.add(CLASS_NAME_SHOW);
|
|
106
|
+
this._element.classList.remove(CLASS_NAME_SHOWING);
|
|
107
|
+
EventHandler.trigger(this._element, EVENT_SHOWN, {
|
|
108
|
+
relatedTarget
|
|
109
|
+
});
|
|
110
|
+
};
|
|
111
|
+
this._queueCallback(completeCallBack, this._element, true);
|
|
112
|
+
}
|
|
113
|
+
hide() {
|
|
114
|
+
if (!this._isShown) {
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE);
|
|
118
|
+
if (hideEvent.defaultPrevented) {
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
this._focustrap.deactivate();
|
|
122
|
+
this._element.blur();
|
|
123
|
+
this._isShown = false;
|
|
124
|
+
this._element.classList.add(CLASS_NAME_HIDING);
|
|
125
|
+
this._backdrop.hide();
|
|
126
|
+
const completeCallback = () => {
|
|
127
|
+
this._element.classList.remove(CLASS_NAME_SHOW, CLASS_NAME_HIDING);
|
|
128
|
+
this._element.removeAttribute('aria-modal');
|
|
129
|
+
this._element.removeAttribute('role');
|
|
130
|
+
if (!this._config.scroll) {
|
|
131
|
+
new ScrollBarHelper().reset();
|
|
132
|
+
}
|
|
133
|
+
EventHandler.trigger(this._element, EVENT_HIDDEN);
|
|
134
|
+
};
|
|
135
|
+
this._queueCallback(completeCallback, this._element, true);
|
|
136
|
+
}
|
|
137
|
+
dispose() {
|
|
138
|
+
this._backdrop.dispose();
|
|
139
|
+
this._focustrap.deactivate();
|
|
140
|
+
super.dispose();
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
// Private
|
|
144
|
+
_initializeBackDrop() {
|
|
145
|
+
const clickCallback = () => {
|
|
146
|
+
if (this._config.backdrop === 'static') {
|
|
147
|
+
EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
this.hide();
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
// 'static' option will be translated to true, and booleans will keep their value
|
|
154
|
+
const isVisible = Boolean(this._config.backdrop);
|
|
155
|
+
return new Backdrop({
|
|
156
|
+
className: CLASS_NAME_BACKDROP,
|
|
157
|
+
isVisible,
|
|
158
|
+
isAnimated: true,
|
|
159
|
+
rootElement: this._element.parentNode,
|
|
160
|
+
clickCallback: isVisible ? clickCallback : null
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
_initializeFocusTrap() {
|
|
164
|
+
return new FocusTrap({
|
|
165
|
+
trapElement: this._element
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
_addEventListeners() {
|
|
169
|
+
EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {
|
|
170
|
+
if (event.key !== ESCAPE_KEY) {
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
if (this._config.keyboard) {
|
|
174
|
+
this.hide();
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
// Static
|
|
182
|
+
static jQueryInterface(config) {
|
|
183
|
+
return this.each(function () {
|
|
184
|
+
const data = Offcanvas.getOrCreateInstance(this, config);
|
|
185
|
+
if (typeof config !== 'string') {
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
|
|
189
|
+
throw new TypeError(`No method named "${config}"`);
|
|
190
|
+
}
|
|
191
|
+
data[config](this);
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Data API implementation
|
|
198
|
+
*/
|
|
199
|
+
|
|
200
|
+
EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
|
|
201
|
+
const target = SelectorEngine.getElementFromSelector(this);
|
|
202
|
+
if (['A', 'AREA'].includes(this.tagName)) {
|
|
203
|
+
event.preventDefault();
|
|
204
|
+
}
|
|
205
|
+
if (index_js.isDisabled(this)) {
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
EventHandler.one(target, EVENT_HIDDEN, () => {
|
|
209
|
+
// focus on trigger when it is closed
|
|
210
|
+
if (index_js.isVisible(this)) {
|
|
211
|
+
this.focus();
|
|
212
|
+
}
|
|
213
|
+
});
|
|
214
|
+
|
|
215
|
+
// avoid conflict when clicking a toggler of an offcanvas, while another is open
|
|
216
|
+
const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR);
|
|
217
|
+
if (alreadyOpen && alreadyOpen !== target) {
|
|
218
|
+
Offcanvas.getInstance(alreadyOpen).hide();
|
|
219
|
+
}
|
|
220
|
+
const data = Offcanvas.getOrCreateInstance(target);
|
|
221
|
+
data.toggle(this);
|
|
222
|
+
});
|
|
223
|
+
EventHandler.on(window, EVENT_LOAD_DATA_API, () => {
|
|
224
|
+
for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {
|
|
225
|
+
Offcanvas.getOrCreateInstance(selector).show();
|
|
226
|
+
}
|
|
227
|
+
});
|
|
228
|
+
EventHandler.on(window, EVENT_RESIZE, () => {
|
|
229
|
+
for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {
|
|
230
|
+
if (getComputedStyle(element).position !== 'fixed') {
|
|
231
|
+
Offcanvas.getOrCreateInstance(element).hide();
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
});
|
|
235
|
+
componentFunctions_js.enableDismissTrigger(Offcanvas);
|
|
236
|
+
|
|
237
|
+
/**
|
|
238
|
+
* jQuery
|
|
239
|
+
*/
|
|
240
|
+
|
|
241
|
+
index_js.defineJQueryPlugin(Offcanvas);
|
|
242
|
+
|
|
243
|
+
return Offcanvas;
|
|
244
|
+
|
|
245
|
+
}));
|
|
@@ -1,259 +1,94 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Bootstrap popover.js
|
|
3
|
-
* Copyright 2011-
|
|
4
|
-
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/
|
|
2
|
+
* Bootstrap popover.js v5.3.0 (https://getbootstrap.com/)
|
|
3
|
+
* Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
|
4
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
5
5
|
*/
|
|
6
6
|
(function (global, factory) {
|
|
7
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('
|
|
8
|
-
typeof define === 'function' && define.amd ? define(['
|
|
9
|
-
(global = global || self, global.Popover = factory(global.
|
|
10
|
-
}(this, function (
|
|
7
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./tooltip.js'), require('./util/index.js')) :
|
|
8
|
+
typeof define === 'function' && define.amd ? define(['./tooltip', './util/index'], factory) :
|
|
9
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Popover = factory(global.Tooltip, global.Index));
|
|
10
|
+
})(this, (function (Tooltip, index_js) { 'use strict';
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
descriptor.enumerable = descriptor.enumerable || false;
|
|
19
|
-
descriptor.configurable = true;
|
|
20
|
-
if ("value" in descriptor) descriptor.writable = true;
|
|
21
|
-
Object.defineProperty(target, descriptor.key, descriptor);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
function _createClass(Constructor, protoProps, staticProps) {
|
|
26
|
-
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
27
|
-
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
28
|
-
return Constructor;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
function _defineProperty(obj, key, value) {
|
|
32
|
-
if (key in obj) {
|
|
33
|
-
Object.defineProperty(obj, key, {
|
|
34
|
-
value: value,
|
|
35
|
-
enumerable: true,
|
|
36
|
-
configurable: true,
|
|
37
|
-
writable: true
|
|
38
|
-
});
|
|
39
|
-
} else {
|
|
40
|
-
obj[key] = value;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
return obj;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
function _objectSpread(target) {
|
|
47
|
-
for (var i = 1; i < arguments.length; i++) {
|
|
48
|
-
var source = arguments[i] != null ? arguments[i] : {};
|
|
49
|
-
var ownKeys = Object.keys(source);
|
|
50
|
-
|
|
51
|
-
if (typeof Object.getOwnPropertySymbols === 'function') {
|
|
52
|
-
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {
|
|
53
|
-
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
|
54
|
-
}));
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
ownKeys.forEach(function (key) {
|
|
58
|
-
_defineProperty(target, key, source[key]);
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
return target;
|
|
63
|
-
}
|
|
12
|
+
/**
|
|
13
|
+
* --------------------------------------------------------------------------
|
|
14
|
+
* Bootstrap popover.js
|
|
15
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
16
|
+
* --------------------------------------------------------------------------
|
|
17
|
+
*/
|
|
64
18
|
|
|
65
|
-
function _inheritsLoose(subClass, superClass) {
|
|
66
|
-
subClass.prototype = Object.create(superClass.prototype);
|
|
67
|
-
subClass.prototype.constructor = subClass;
|
|
68
|
-
subClass.__proto__ = superClass;
|
|
69
|
-
}
|
|
70
19
|
|
|
71
20
|
/**
|
|
72
|
-
* ------------------------------------------------------------------------
|
|
73
21
|
* Constants
|
|
74
|
-
* ------------------------------------------------------------------------
|
|
75
22
|
*/
|
|
76
23
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
var CLASS_PREFIX = 'bs-popover';
|
|
83
|
-
var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g');
|
|
84
|
-
|
|
85
|
-
var Default = _objectSpread({}, Tooltip.Default, {
|
|
86
|
-
placement: 'right',
|
|
87
|
-
trigger: 'click',
|
|
24
|
+
const NAME = 'popover';
|
|
25
|
+
const SELECTOR_TITLE = '.popover-header';
|
|
26
|
+
const SELECTOR_CONTENT = '.popover-body';
|
|
27
|
+
const Default = {
|
|
28
|
+
...Tooltip.Default,
|
|
88
29
|
content: '',
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
content: '(string|element|function)'
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
var ClassName = {
|
|
97
|
-
FADE: 'fade',
|
|
98
|
-
SHOW: 'show'
|
|
99
|
-
};
|
|
100
|
-
var Selector = {
|
|
101
|
-
TITLE: '.popover-header',
|
|
102
|
-
CONTENT: '.popover-body'
|
|
30
|
+
offset: [0, 8],
|
|
31
|
+
placement: 'right',
|
|
32
|
+
template: '<div class="popover" role="tooltip">' + '<div class="popover-arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div>' + '</div>',
|
|
33
|
+
trigger: 'click'
|
|
103
34
|
};
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
SHOW: "show" + EVENT_KEY,
|
|
108
|
-
SHOWN: "shown" + EVENT_KEY,
|
|
109
|
-
INSERTED: "inserted" + EVENT_KEY,
|
|
110
|
-
CLICK: "click" + EVENT_KEY,
|
|
111
|
-
FOCUSIN: "focusin" + EVENT_KEY,
|
|
112
|
-
FOCUSOUT: "focusout" + EVENT_KEY,
|
|
113
|
-
MOUSEENTER: "mouseenter" + EVENT_KEY,
|
|
114
|
-
MOUSELEAVE: "mouseleave" + EVENT_KEY
|
|
115
|
-
/**
|
|
116
|
-
* ------------------------------------------------------------------------
|
|
117
|
-
* Class Definition
|
|
118
|
-
* ------------------------------------------------------------------------
|
|
119
|
-
*/
|
|
120
|
-
|
|
35
|
+
const DefaultType = {
|
|
36
|
+
...Tooltip.DefaultType,
|
|
37
|
+
content: '(null|string|element|function)'
|
|
121
38
|
};
|
|
122
39
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
_inheritsLoose(Popover, _Tooltip);
|
|
40
|
+
/**
|
|
41
|
+
* Class definition
|
|
42
|
+
*/
|
|
127
43
|
|
|
128
|
-
|
|
129
|
-
|
|
44
|
+
class Popover extends Tooltip {
|
|
45
|
+
// Getters
|
|
46
|
+
static get Default() {
|
|
47
|
+
return Default;
|
|
48
|
+
}
|
|
49
|
+
static get DefaultType() {
|
|
50
|
+
return DefaultType;
|
|
51
|
+
}
|
|
52
|
+
static get NAME() {
|
|
53
|
+
return NAME;
|
|
130
54
|
}
|
|
131
|
-
|
|
132
|
-
var _proto = Popover.prototype;
|
|
133
55
|
|
|
134
56
|
// Overrides
|
|
135
|
-
|
|
136
|
-
return this.
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
_proto.addAttachmentClass = function addAttachmentClass(attachment) {
|
|
140
|
-
$(this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment);
|
|
141
|
-
};
|
|
142
|
-
|
|
143
|
-
_proto.getTipElement = function getTipElement() {
|
|
144
|
-
this.tip = this.tip || $(this.config.template)[0];
|
|
145
|
-
return this.tip;
|
|
146
|
-
};
|
|
147
|
-
|
|
148
|
-
_proto.setContent = function setContent() {
|
|
149
|
-
var $tip = $(this.getTipElement()); // We use append for html objects to maintain js events
|
|
150
|
-
|
|
151
|
-
this.setElementContent($tip.find(Selector.TITLE), this.getTitle());
|
|
152
|
-
|
|
153
|
-
var content = this._getContent();
|
|
154
|
-
|
|
155
|
-
if (typeof content === 'function') {
|
|
156
|
-
content = content.call(this.element);
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
this.setElementContent($tip.find(Selector.CONTENT), content);
|
|
160
|
-
$tip.removeClass(ClassName.FADE + " " + ClassName.SHOW);
|
|
161
|
-
} // Private
|
|
162
|
-
;
|
|
163
|
-
|
|
164
|
-
_proto._getContent = function _getContent() {
|
|
165
|
-
return this.element.getAttribute('data-content') || this.config.content;
|
|
166
|
-
};
|
|
167
|
-
|
|
168
|
-
_proto._cleanTipClass = function _cleanTipClass() {
|
|
169
|
-
var $tip = $(this.getTipElement());
|
|
170
|
-
var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);
|
|
57
|
+
_isWithContent() {
|
|
58
|
+
return this._getTitle() || this._getContent();
|
|
59
|
+
}
|
|
171
60
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
61
|
+
// Private
|
|
62
|
+
_getContentForTemplate() {
|
|
63
|
+
return {
|
|
64
|
+
[SELECTOR_TITLE]: this._getTitle(),
|
|
65
|
+
[SELECTOR_CONTENT]: this._getContent()
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
_getContent() {
|
|
69
|
+
return this._resolvePossibleFunction(this._config.content);
|
|
70
|
+
}
|
|
177
71
|
|
|
178
|
-
|
|
72
|
+
// Static
|
|
73
|
+
static jQueryInterface(config) {
|
|
179
74
|
return this.each(function () {
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
var _config = typeof config === 'object' ? config : null;
|
|
183
|
-
|
|
184
|
-
if (!data && /dispose|hide/.test(config)) {
|
|
75
|
+
const data = Popover.getOrCreateInstance(this, config);
|
|
76
|
+
if (typeof config !== 'string') {
|
|
185
77
|
return;
|
|
186
78
|
}
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
data = new Popover(this, _config);
|
|
190
|
-
$(this).data(DATA_KEY, data);
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
if (typeof config === 'string') {
|
|
194
|
-
if (typeof data[config] === 'undefined') {
|
|
195
|
-
throw new TypeError("No method named \"" + config + "\"");
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
data[config]();
|
|
79
|
+
if (typeof data[config] === 'undefined') {
|
|
80
|
+
throw new TypeError(`No method named "${config}"`);
|
|
199
81
|
}
|
|
82
|
+
data[config]();
|
|
200
83
|
});
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
_createClass(Popover, null, [{
|
|
204
|
-
key: "VERSION",
|
|
205
|
-
// Getters
|
|
206
|
-
get: function get() {
|
|
207
|
-
return VERSION;
|
|
208
|
-
}
|
|
209
|
-
}, {
|
|
210
|
-
key: "Default",
|
|
211
|
-
get: function get() {
|
|
212
|
-
return Default;
|
|
213
|
-
}
|
|
214
|
-
}, {
|
|
215
|
-
key: "NAME",
|
|
216
|
-
get: function get() {
|
|
217
|
-
return NAME;
|
|
218
|
-
}
|
|
219
|
-
}, {
|
|
220
|
-
key: "DATA_KEY",
|
|
221
|
-
get: function get() {
|
|
222
|
-
return DATA_KEY;
|
|
223
|
-
}
|
|
224
|
-
}, {
|
|
225
|
-
key: "Event",
|
|
226
|
-
get: function get() {
|
|
227
|
-
return Event;
|
|
228
|
-
}
|
|
229
|
-
}, {
|
|
230
|
-
key: "EVENT_KEY",
|
|
231
|
-
get: function get() {
|
|
232
|
-
return EVENT_KEY;
|
|
233
|
-
}
|
|
234
|
-
}, {
|
|
235
|
-
key: "DefaultType",
|
|
236
|
-
get: function get() {
|
|
237
|
-
return DefaultType;
|
|
238
|
-
}
|
|
239
|
-
}]);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
240
86
|
|
|
241
|
-
return Popover;
|
|
242
|
-
}(Tooltip);
|
|
243
87
|
/**
|
|
244
|
-
* ------------------------------------------------------------------------
|
|
245
88
|
* jQuery
|
|
246
|
-
* ------------------------------------------------------------------------
|
|
247
89
|
*/
|
|
248
90
|
|
|
249
|
-
|
|
250
|
-
$.fn[NAME] = Popover._jQueryInterface;
|
|
251
|
-
$.fn[NAME].Constructor = Popover;
|
|
252
|
-
|
|
253
|
-
$.fn[NAME].noConflict = function () {
|
|
254
|
-
$.fn[NAME] = JQUERY_NO_CONFLICT;
|
|
255
|
-
return Popover._jQueryInterface;
|
|
256
|
-
};
|
|
91
|
+
index_js.defineJQueryPlugin(Popover);
|
|
257
92
|
|
|
258
93
|
return Popover;
|
|
259
94
|
|