@coreui/coreui 4.1.6 → 4.2.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.
Files changed (208) hide show
  1. package/LICENSE +2 -2
  2. package/README.md +62 -10
  3. package/dist/css/bootstrap-reboot.css +488 -0
  4. package/dist/css/bootstrap-reboot.css.map +1 -0
  5. package/dist/css/bootstrap-reboot.min.css +8 -0
  6. package/dist/css/bootstrap-reboot.min.css.map +1 -0
  7. package/dist/css/coreui-grid.css +22 -4
  8. package/dist/css/coreui-grid.css.map +1 -1
  9. package/dist/css/coreui-grid.min.css +2 -2
  10. package/dist/css/coreui-grid.min.css.map +1 -1
  11. package/dist/css/coreui-grid.rtl.css +23 -5
  12. package/dist/css/coreui-grid.rtl.css.map +1 -1
  13. package/dist/css/coreui-grid.rtl.min.css +3 -3
  14. package/dist/css/coreui-grid.rtl.min.css.map +1 -1
  15. package/dist/css/coreui-reboot.css +34 -41
  16. package/dist/css/coreui-reboot.css.map +1 -1
  17. package/dist/css/coreui-reboot.min.css +2 -2
  18. package/dist/css/coreui-reboot.min.css.map +1 -1
  19. package/dist/css/coreui-reboot.rtl.css +34 -42
  20. package/dist/css/coreui-reboot.rtl.css.map +1 -1
  21. package/dist/css/coreui-reboot.rtl.min.css +3 -3
  22. package/dist/css/coreui-reboot.rtl.min.css.map +1 -1
  23. package/dist/css/coreui-utilities.css +278 -163
  24. package/dist/css/coreui-utilities.css.map +1 -1
  25. package/dist/css/coreui-utilities.min.css +2 -2
  26. package/dist/css/coreui-utilities.min.css.map +1 -1
  27. package/dist/css/coreui-utilities.rtl.css +273 -164
  28. package/dist/css/coreui-utilities.rtl.css.map +1 -1
  29. package/dist/css/coreui-utilities.rtl.min.css +3 -3
  30. package/dist/css/coreui-utilities.rtl.min.css.map +1 -1
  31. package/dist/css/coreui.css +2168 -1240
  32. package/dist/css/coreui.css.map +1 -1
  33. package/dist/css/coreui.min.css +2 -2
  34. package/dist/css/coreui.min.css.map +1 -1
  35. package/dist/css/coreui.rtl.css +2150 -1228
  36. package/dist/css/coreui.rtl.css.map +1 -1
  37. package/dist/css/coreui.rtl.min.css +3 -3
  38. package/dist/css/coreui.rtl.min.css.map +1 -1
  39. package/dist/js/coreui.bundle.js +2095 -1906
  40. package/dist/js/coreui.bundle.js.map +1 -1
  41. package/dist/js/coreui.bundle.min.js +2 -2
  42. package/dist/js/coreui.bundle.min.js.map +1 -1
  43. package/dist/js/coreui.esm.js +2098 -1909
  44. package/dist/js/coreui.esm.js.map +1 -1
  45. package/dist/js/coreui.esm.min.js +2 -2
  46. package/dist/js/coreui.esm.min.js.map +1 -1
  47. package/dist/js/coreui.js +2099 -1910
  48. package/dist/js/coreui.js.map +1 -1
  49. package/dist/js/coreui.min.js +2 -2
  50. package/dist/js/coreui.min.js.map +1 -1
  51. package/js/dist/alert.js +10 -148
  52. package/js/dist/alert.js.map +1 -1
  53. package/js/dist/base-component.js +36 -122
  54. package/js/dist/base-component.js.map +1 -1
  55. package/js/dist/button.js +9 -76
  56. package/js/dist/button.js.map +1 -1
  57. package/js/dist/carousel.js +212 -507
  58. package/js/dist/carousel.js.map +1 -1
  59. package/js/dist/collapse.js +64 -251
  60. package/js/dist/collapse.js.map +1 -1
  61. package/js/dist/dom/data.js +2 -4
  62. package/js/dist/dom/data.js.map +1 -1
  63. package/js/dist/dom/event-handler.js +82 -133
  64. package/js/dist/dom/event-handler.js.map +1 -1
  65. package/js/dist/dom/manipulator.js +22 -26
  66. package/js/dist/dom/manipulator.js.map +1 -1
  67. package/js/dist/dom/selector-engine.js +16 -81
  68. package/js/dist/dom/selector-engine.js.map +1 -1
  69. package/js/dist/dropdown.js +99 -338
  70. package/js/dist/dropdown.js.map +1 -1
  71. package/js/dist/modal.js +106 -774
  72. package/js/dist/modal.js.map +1 -1
  73. package/js/dist/navigation.js +309 -0
  74. package/js/dist/navigation.js.map +1 -0
  75. package/js/dist/offcanvas.js +88 -680
  76. package/js/dist/offcanvas.js.map +1 -1
  77. package/js/dist/popover.js +35 -120
  78. package/js/dist/popover.js.map +1 -1
  79. package/js/dist/scrollspy.js +178 -264
  80. package/js/dist/scrollspy.js.map +1 -1
  81. package/js/dist/sidebar.js +347 -0
  82. package/js/dist/sidebar.js.map +1 -0
  83. package/js/dist/tab.js +226 -216
  84. package/js/dist/tab.js.map +1 -1
  85. package/js/dist/toast.js +27 -216
  86. package/js/dist/toast.js.map +1 -1
  87. package/js/dist/tooltip.js +271 -618
  88. package/js/dist/tooltip.js.map +1 -1
  89. package/js/dist/util/backdrop.js +166 -0
  90. package/js/dist/util/backdrop.js.map +1 -0
  91. package/js/dist/util/component-functions.js +47 -0
  92. package/js/dist/util/component-functions.js.map +1 -0
  93. package/js/dist/util/config.js +80 -0
  94. package/js/dist/util/config.js.map +1 -0
  95. package/js/dist/util/focustrap.js +130 -0
  96. package/js/dist/util/focustrap.js.map +1 -0
  97. package/js/dist/util/index.js +354 -0
  98. package/js/dist/util/index.js.map +1 -0
  99. package/js/dist/util/sanitizer.js +126 -0
  100. package/js/dist/util/sanitizer.js.map +1 -0
  101. package/js/dist/util/scrollbar.js +139 -0
  102. package/js/dist/util/scrollbar.js.map +1 -0
  103. package/js/dist/util/swipe.js +156 -0
  104. package/js/dist/util/swipe.js.map +1 -0
  105. package/js/dist/util/template-factory.js +178 -0
  106. package/js/dist/util/template-factory.js.map +1 -0
  107. package/js/src/alert.js +3 -15
  108. package/js/src/base-component.js +28 -18
  109. package/js/src/button.js +3 -15
  110. package/js/src/carousel.js +203 -320
  111. package/js/src/collapse.js +61 -94
  112. package/js/src/dom/data.js +1 -3
  113. package/js/src/dom/event-handler.js +74 -107
  114. package/js/src/dom/manipulator.js +22 -31
  115. package/js/src/dom/selector-engine.js +10 -19
  116. package/js/src/dropdown.js +84 -138
  117. package/js/src/modal.js +94 -158
  118. package/js/src/navigation.js +12 -13
  119. package/js/src/offcanvas.js +71 -60
  120. package/js/src/popover.js +31 -62
  121. package/js/src/scrollspy.js +166 -171
  122. package/js/src/sidebar.js +5 -8
  123. package/js/src/tab.js +201 -110
  124. package/js/src/toast.js +19 -41
  125. package/js/src/tooltip.js +264 -374
  126. package/js/src/util/backdrop.js +55 -36
  127. package/js/src/util/component-functions.js +1 -1
  128. package/js/src/util/config.js +66 -0
  129. package/js/src/util/focustrap.js +38 -28
  130. package/js/src/util/index.js +41 -57
  131. package/js/src/util/sanitizer.js +9 -17
  132. package/js/src/util/scrollbar.js +47 -30
  133. package/js/src/util/swipe.js +146 -0
  134. package/js/src/util/template-factory.js +160 -0
  135. package/package.json +36 -36
  136. package/scss/_accordion.scss +53 -25
  137. package/scss/_alert.scss +29 -9
  138. package/scss/_badge.scss +15 -6
  139. package/scss/_breadcrumb.scss +23 -11
  140. package/scss/_button-group.scss +3 -0
  141. package/scss/_buttons.scss +71 -50
  142. package/scss/_callout.scss +18 -6
  143. package/scss/_card.scss +55 -37
  144. package/scss/_carousel.scss +6 -6
  145. package/scss/_close.scss +4 -4
  146. package/scss/_containers.scss +1 -1
  147. package/scss/_dropdown.scss +86 -64
  148. package/scss/_footer.scss +15 -5
  149. package/scss/_functions.scss +11 -24
  150. package/scss/_grid.scss +3 -3
  151. package/scss/_header.scss +59 -34
  152. package/scss/_helpers.scss +1 -0
  153. package/scss/_images.scss +3 -3
  154. package/scss/_list-group.scss +47 -29
  155. package/scss/_maps.scss +54 -0
  156. package/scss/_modal.scss +70 -43
  157. package/scss/_nav.scss +53 -20
  158. package/scss/_navbar.scss +84 -94
  159. package/scss/_offcanvas.scss +120 -60
  160. package/scss/_pagination.scss +66 -21
  161. package/scss/_popover.scss +90 -52
  162. package/scss/_progress.scss +20 -9
  163. package/scss/_reboot.scss +31 -58
  164. package/scss/_root.scss +41 -19
  165. package/scss/_spinners.scss +37 -21
  166. package/scss/_subheader.scss +9 -9
  167. package/scss/_tables.scss +34 -36
  168. package/scss/_toasts.scss +35 -19
  169. package/scss/_tooltip.scss +61 -56
  170. package/scss/_utilities.scss +42 -25
  171. package/scss/_variables.scss +169 -148
  172. package/scss/bootstrap-reboot.scss +14 -0
  173. package/scss/coreui-grid.rtl.scss +1 -1
  174. package/scss/coreui-grid.scss +2 -1
  175. package/scss/coreui-reboot.rtl.scss +1 -1
  176. package/scss/coreui-reboot.scss +1 -1
  177. package/scss/coreui-utilities.rtl.scss +1 -1
  178. package/scss/coreui-utilities.scss +2 -1
  179. package/scss/coreui.rtl.scss +1 -1
  180. package/scss/coreui.scss +2 -1
  181. package/scss/forms/_floating-labels.scss +14 -3
  182. package/scss/forms/_form-check.scss +41 -18
  183. package/scss/forms/_form-control.scss +25 -50
  184. package/scss/forms/_form-range.scss +8 -8
  185. package/scss/forms/_form-select.scss +8 -8
  186. package/scss/forms/_form-text.scss +1 -1
  187. package/scss/forms/_input-group.scss +3 -3
  188. package/scss/forms/_labels.scss +2 -2
  189. package/scss/helpers/_color-bg.scss +10 -0
  190. package/scss/helpers/_colored-links.scss +2 -2
  191. package/scss/helpers/_position.scss +7 -1
  192. package/scss/helpers/_ratio.scss +2 -2
  193. package/scss/helpers/_vr.scss +1 -0
  194. package/scss/mixins/_alert.scss +10 -10
  195. package/scss/mixins/_breakpoints.scss +8 -8
  196. package/scss/mixins/_buttons.scss +45 -47
  197. package/scss/mixins/_container.scss +4 -2
  198. package/scss/mixins/_css-vars.scss +47 -47
  199. package/scss/mixins/_forms.scss +8 -0
  200. package/scss/mixins/_gradients.scss +1 -1
  201. package/scss/mixins/_grid.scss +11 -11
  202. package/scss/mixins/_list-group.scss +7 -9
  203. package/scss/mixins/_pagination.scss +4 -25
  204. package/scss/mixins/_table-variants.scss +20 -12
  205. package/scss/mixins/_utilities.scss +8 -3
  206. package/scss/sidebar/_sidebar-narrow.scss +10 -10
  207. package/scss/sidebar/_sidebar-nav.scss +33 -32
  208. package/scss/sidebar/_sidebar.scss +110 -56
package/js/dist/modal.js CHANGED
@@ -1,638 +1,26 @@
1
1
  /*!
2
- * CoreUI modal.js v4.1.6 (https://coreui.io)
2
+ * CoreUI modal.js v4.2.0 (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('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./dom/selector-engine.js'), require('./base-component.js')) :
8
- typeof define === 'function' && define.amd ? define(['./dom/event-handler', './dom/manipulator', './dom/selector-engine', './base-component'], factory) :
9
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Modal = factory(global.EventHandler, global.Manipulator, global.SelectorEngine, global.Base));
10
- })(this, (function (EventHandler, Manipulator, SelectorEngine, BaseComponent) { 'use strict';
7
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./util/index'), require('./dom/event-handler'), require('./dom/selector-engine'), require('./util/scrollbar'), require('./base-component'), require('./util/backdrop'), require('./util/focustrap'), require('./util/component-functions')) :
8
+ typeof define === 'function' && define.amd ? define(['./util/index', './dom/event-handler', './dom/selector-engine', './util/scrollbar', './base-component', './util/backdrop', './util/focustrap', './util/component-functions'], factory) :
9
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Modal = factory(global.Index, global.EventHandler, global.SelectorEngine, global.Scrollbar, global.BaseComponent, global.Backdrop, global.Focustrap, global.ComponentFunctions));
10
+ })(this, (function (index, EventHandler, SelectorEngine, ScrollBarHelper, BaseComponent, Backdrop, FocusTrap, componentFunctions) { 'use strict';
11
11
 
12
12
  const _interopDefaultLegacy = e => e && typeof e === 'object' && 'default' in e ? e : { default: e };
13
13
 
14
14
  const EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
15
- const Manipulator__default = /*#__PURE__*/_interopDefaultLegacy(Manipulator);
16
15
  const SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine);
16
+ const ScrollBarHelper__default = /*#__PURE__*/_interopDefaultLegacy(ScrollBarHelper);
17
17
  const BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);
18
+ const Backdrop__default = /*#__PURE__*/_interopDefaultLegacy(Backdrop);
19
+ const FocusTrap__default = /*#__PURE__*/_interopDefaultLegacy(FocusTrap);
18
20
 
19
21
  /**
20
22
  * --------------------------------------------------------------------------
21
- * CoreUI (v4.1.6): 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
- */
28
- const MILLISECONDS_MULTIPLIER = 1000;
29
- const TRANSITION_END = 'transitionend'; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
30
-
31
- const toType = object => {
32
- if (object === null || object === undefined) {
33
- return `${object}`;
34
- }
35
-
36
- return Object.prototype.toString.call(object).match(/\s([a-z]+)/i)[1].toLowerCase();
37
- };
38
-
39
- const getSelector = element => {
40
- let selector = element.getAttribute('data-coreui-target');
41
-
42
- if (!selector || selector === '#') {
43
- let hrefAttr = element.getAttribute('href'); // The only valid content that could double as a selector are IDs or classes,
44
- // so everything starting with `#` or `.`. If a "real" URL is used as the selector,
45
- // `document.querySelector` will rightfully complain it is invalid.
46
- // See https://github.com/twbs/bootstrap/issues/32273
47
-
48
- if (!hrefAttr || !hrefAttr.includes('#') && !hrefAttr.startsWith('.')) {
49
- return null;
50
- } // Just in case some CMS puts out a full URL with the anchor appended
51
-
52
-
53
- if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {
54
- hrefAttr = `#${hrefAttr.split('#')[1]}`;
55
- }
56
-
57
- selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null;
58
- }
59
-
60
- return selector;
61
- };
62
-
63
- const getElementFromSelector = element => {
64
- const selector = getSelector(element);
65
- return selector ? document.querySelector(selector) : null;
66
- };
67
-
68
- const getTransitionDurationFromElement = element => {
69
- if (!element) {
70
- return 0;
71
- } // Get transition-duration of the element
72
-
73
-
74
- let {
75
- transitionDuration,
76
- transitionDelay
77
- } = window.getComputedStyle(element);
78
- const floatTransitionDuration = Number.parseFloat(transitionDuration);
79
- const floatTransitionDelay = Number.parseFloat(transitionDelay); // Return 0 if element or transition duration is not found
80
-
81
- if (!floatTransitionDuration && !floatTransitionDelay) {
82
- return 0;
83
- } // If multiple durations are defined, take the first
84
-
85
-
86
- transitionDuration = transitionDuration.split(',')[0];
87
- transitionDelay = transitionDelay.split(',')[0];
88
- return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;
89
- };
90
-
91
- const triggerTransitionEnd = element => {
92
- element.dispatchEvent(new Event(TRANSITION_END));
93
- };
94
-
95
- const isElement = obj => {
96
- if (!obj || typeof obj !== 'object') {
97
- return false;
98
- }
99
-
100
- if (typeof obj.jquery !== 'undefined') {
101
- obj = obj[0];
102
- }
103
-
104
- return typeof obj.nodeType !== 'undefined';
105
- };
106
-
107
- const getElement = obj => {
108
- if (isElement(obj)) {
109
- // it's a jQuery object or a node element
110
- return obj.jquery ? obj[0] : obj;
111
- }
112
-
113
- if (typeof obj === 'string' && obj.length > 0) {
114
- return document.querySelector(obj);
115
- }
116
-
117
- return null;
118
- };
119
-
120
- const typeCheckConfig = (componentName, config, configTypes) => {
121
- Object.keys(configTypes).forEach(property => {
122
- const expectedTypes = configTypes[property];
123
- const value = config[property];
124
- const valueType = value && isElement(value) ? 'element' : toType(value);
125
-
126
- if (!new RegExp(expectedTypes).test(valueType)) {
127
- throw new TypeError(`${componentName.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".`);
128
- }
129
- });
130
- };
131
-
132
- const isVisible = element => {
133
- if (!isElement(element) || element.getClientRects().length === 0) {
134
- return false;
135
- }
136
-
137
- const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'; // Handle `details` element as its content may falsie appear visible when it is closed
138
-
139
- const closedDetails = element.closest('details:not([open])');
140
-
141
- if (!closedDetails) {
142
- return elementIsVisible;
143
- }
144
-
145
- if (closedDetails !== element) {
146
- const summary = element.closest('summary');
147
-
148
- if (summary && summary.parentNode !== closedDetails) {
149
- return false;
150
- }
151
-
152
- if (summary === null) {
153
- return false;
154
- }
155
- }
156
-
157
- return elementIsVisible;
158
- };
159
-
160
- const isDisabled = element => {
161
- if (!element || element.nodeType !== Node.ELEMENT_NODE) {
162
- return true;
163
- }
164
-
165
- if (element.classList.contains('disabled')) {
166
- return true;
167
- }
168
-
169
- if (typeof element.disabled !== 'undefined') {
170
- return element.disabled;
171
- }
172
-
173
- return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';
174
- };
175
- /**
176
- * Trick to restart an element's animation
177
- *
178
- * @param {HTMLElement} element
179
- * @return void
180
- *
181
- * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation
182
- */
183
-
184
-
185
- const reflow = element => {
186
- // eslint-disable-next-line no-unused-expressions
187
- element.offsetHeight;
188
- };
189
-
190
- const getjQuery = () => {
191
- const {
192
- jQuery
193
- } = window;
194
-
195
- if (jQuery && !document.body.hasAttribute('data-coreui-no-jquery')) {
196
- return jQuery;
197
- }
198
-
199
- return null;
200
- };
201
-
202
- const DOMContentLoadedCallbacks = [];
203
-
204
- const onDOMContentLoaded = callback => {
205
- if (document.readyState === 'loading') {
206
- // add listener on the first call when the document is in loading state
207
- if (!DOMContentLoadedCallbacks.length) {
208
- document.addEventListener('DOMContentLoaded', () => {
209
- DOMContentLoadedCallbacks.forEach(callback => callback());
210
- });
211
- }
212
-
213
- DOMContentLoadedCallbacks.push(callback);
214
- } else {
215
- callback();
216
- }
217
- };
218
-
219
- const isRTL = () => document.documentElement.dir === 'rtl';
220
-
221
- const defineJQueryPlugin = plugin => {
222
- onDOMContentLoaded(() => {
223
- const $ = getjQuery();
224
- /* istanbul ignore if */
225
-
226
- if ($) {
227
- const name = plugin.NAME;
228
- const JQUERY_NO_CONFLICT = $.fn[name];
229
- $.fn[name] = plugin.jQueryInterface;
230
- $.fn[name].Constructor = plugin;
231
-
232
- $.fn[name].noConflict = () => {
233
- $.fn[name] = JQUERY_NO_CONFLICT;
234
- return plugin.jQueryInterface;
235
- };
236
- }
237
- });
238
- };
239
-
240
- const execute = callback => {
241
- if (typeof callback === 'function') {
242
- callback();
243
- }
244
- };
245
-
246
- const executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {
247
- if (!waitForTransition) {
248
- execute(callback);
249
- return;
250
- }
251
-
252
- const durationPadding = 5;
253
- const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;
254
- let called = false;
255
-
256
- const handler = ({
257
- target
258
- }) => {
259
- if (target !== transitionElement) {
260
- return;
261
- }
262
-
263
- called = true;
264
- transitionElement.removeEventListener(TRANSITION_END, handler);
265
- execute(callback);
266
- };
267
-
268
- transitionElement.addEventListener(TRANSITION_END, handler);
269
- setTimeout(() => {
270
- if (!called) {
271
- triggerTransitionEnd(transitionElement);
272
- }
273
- }, emulatedDuration);
274
- };
275
-
276
- /**
277
- * --------------------------------------------------------------------------
278
- * Bootstrap (v5.1.3): util/scrollBar.js
279
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
280
- * --------------------------------------------------------------------------
281
- */
282
- const SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';
283
- const SELECTOR_STICKY_CONTENT = '.sticky-top';
284
-
285
- class ScrollBarHelper {
286
- constructor() {
287
- this._element = document.body;
288
- }
289
-
290
- getWidth() {
291
- // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes
292
- const documentWidth = document.documentElement.clientWidth;
293
- return Math.abs(window.innerWidth - documentWidth);
294
- }
295
-
296
- hide() {
297
- const width = this.getWidth();
298
-
299
- this._disableOverFlow(); // give padding to element to balance the hidden scrollbar width
300
-
301
-
302
- this._setElementAttributes(this._element, 'paddingRight', calculatedValue => calculatedValue + width); // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth
303
-
304
-
305
- this._setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', calculatedValue => calculatedValue + width);
306
-
307
- this._setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - width);
308
- }
309
-
310
- _disableOverFlow() {
311
- this._saveInitialAttribute(this._element, 'overflow');
312
-
313
- this._element.style.overflow = 'hidden';
314
- }
315
-
316
- _setElementAttributes(selector, styleProp, callback) {
317
- const scrollbarWidth = this.getWidth();
318
-
319
- const manipulationCallBack = element => {
320
- if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {
321
- return;
322
- }
323
-
324
- this._saveInitialAttribute(element, styleProp);
325
-
326
- const calculatedValue = window.getComputedStyle(element)[styleProp];
327
- element.style[styleProp] = `${callback(Number.parseFloat(calculatedValue))}px`;
328
- };
329
-
330
- this._applyManipulationCallback(selector, manipulationCallBack);
331
- }
332
-
333
- reset() {
334
- this._resetElementAttributes(this._element, 'overflow');
335
-
336
- this._resetElementAttributes(this._element, 'paddingRight');
337
-
338
- this._resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight');
339
-
340
- this._resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight');
341
- }
342
-
343
- _saveInitialAttribute(element, styleProp) {
344
- const actualValue = element.style[styleProp];
345
-
346
- if (actualValue) {
347
- Manipulator__default.default.setDataAttribute(element, styleProp, actualValue);
348
- }
349
- }
350
-
351
- _resetElementAttributes(selector, styleProp) {
352
- const manipulationCallBack = element => {
353
- const value = Manipulator__default.default.getDataAttribute(element, styleProp);
354
-
355
- if (typeof value === 'undefined') {
356
- element.style.removeProperty(styleProp);
357
- } else {
358
- Manipulator__default.default.removeDataAttribute(element, styleProp);
359
- element.style[styleProp] = value;
360
- }
361
- };
362
-
363
- this._applyManipulationCallback(selector, manipulationCallBack);
364
- }
365
-
366
- _applyManipulationCallback(selector, callBack) {
367
- if (isElement(selector)) {
368
- callBack(selector);
369
- } else {
370
- SelectorEngine__default.default.find(selector, this._element).forEach(callBack);
371
- }
372
- }
373
-
374
- isOverflowing() {
375
- return this.getWidth() > 0;
376
- }
377
-
378
- }
379
-
380
- /**
381
- * --------------------------------------------------------------------------
382
- * Bootstrap (v5.1.3): util/backdrop.js
383
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
384
- * --------------------------------------------------------------------------
385
- */
386
- const Default$2 = {
387
- className: 'modal-backdrop',
388
- isVisible: true,
389
- // if false, we use the backdrop helper without adding any element to the dom
390
- isAnimated: false,
391
- rootElement: 'body',
392
- // give the choice to place backdrop under different elements
393
- clickCallback: null
394
- };
395
- const DefaultType$2 = {
396
- className: 'string',
397
- isVisible: 'boolean',
398
- isAnimated: 'boolean',
399
- rootElement: '(element|string)',
400
- clickCallback: '(function|null)'
401
- };
402
- const NAME$2 = 'backdrop';
403
- const CLASS_NAME_FADE$1 = 'fade';
404
- const CLASS_NAME_SHOW$1 = 'show';
405
- const EVENT_MOUSEDOWN = `mousedown.coreui.${NAME$2}`;
406
-
407
- class Backdrop {
408
- constructor(config) {
409
- this._config = this._getConfig(config);
410
- this._isAppended = false;
411
- this._element = null;
412
- }
413
-
414
- show(callback) {
415
- if (!this._config.isVisible) {
416
- execute(callback);
417
- return;
418
- }
419
-
420
- this._append();
421
-
422
- if (this._config.isAnimated) {
423
- reflow(this._getElement());
424
- }
425
-
426
- this._getElement().classList.add(CLASS_NAME_SHOW$1);
427
-
428
- this._emulateAnimation(() => {
429
- execute(callback);
430
- });
431
- }
432
-
433
- hide(callback) {
434
- if (!this._config.isVisible) {
435
- execute(callback);
436
- return;
437
- }
438
-
439
- this._getElement().classList.remove(CLASS_NAME_SHOW$1);
440
-
441
- this._emulateAnimation(() => {
442
- this.dispose();
443
- execute(callback);
444
- });
445
- } // Private
446
-
447
-
448
- _getElement() {
449
- if (!this._element) {
450
- const backdrop = document.createElement('div');
451
- backdrop.className = this._config.className;
452
-
453
- if (this._config.isAnimated) {
454
- backdrop.classList.add(CLASS_NAME_FADE$1);
455
- }
456
-
457
- this._element = backdrop;
458
- }
459
-
460
- return this._element;
461
- }
462
-
463
- _getConfig(config) {
464
- config = { ...Default$2,
465
- ...(typeof config === 'object' ? config : {})
466
- }; // use getElement() with the default "body" to get a fresh Element on each instantiation
467
-
468
- config.rootElement = getElement(config.rootElement);
469
- typeCheckConfig(NAME$2, config, DefaultType$2);
470
- return config;
471
- }
472
-
473
- _append() {
474
- if (this._isAppended) {
475
- return;
476
- }
477
-
478
- this._config.rootElement.append(this._getElement());
479
-
480
- EventHandler__default.default.on(this._getElement(), EVENT_MOUSEDOWN, () => {
481
- execute(this._config.clickCallback);
482
- });
483
- this._isAppended = true;
484
- }
485
-
486
- dispose() {
487
- if (!this._isAppended) {
488
- return;
489
- }
490
-
491
- EventHandler__default.default.off(this._element, EVENT_MOUSEDOWN);
492
-
493
- this._element.remove();
494
-
495
- this._isAppended = false;
496
- }
497
-
498
- _emulateAnimation(callback) {
499
- executeAfterTransition(callback, this._getElement(), this._config.isAnimated);
500
- }
501
-
502
- }
503
-
504
- /**
505
- * --------------------------------------------------------------------------
506
- * Bootstrap (v5.1.3): util/focustrap.js
507
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
508
- * --------------------------------------------------------------------------
509
- */
510
- const Default$1 = {
511
- trapElement: null,
512
- // The element to trap focus inside of
513
- autofocus: true
514
- };
515
- const DefaultType$1 = {
516
- trapElement: 'element',
517
- autofocus: 'boolean'
518
- };
519
- const NAME$1 = 'focustrap';
520
- const DATA_KEY$1 = 'coreui.focustrap';
521
- const EVENT_KEY$1 = `.${DATA_KEY$1}`;
522
- const EVENT_FOCUSIN = `focusin${EVENT_KEY$1}`;
523
- const EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$1}`;
524
- const TAB_KEY = 'Tab';
525
- const TAB_NAV_FORWARD = 'forward';
526
- const TAB_NAV_BACKWARD = 'backward';
527
-
528
- class FocusTrap {
529
- constructor(config) {
530
- this._config = this._getConfig(config);
531
- this._isActive = false;
532
- this._lastTabNavDirection = null;
533
- }
534
-
535
- activate() {
536
- const {
537
- trapElement,
538
- autofocus
539
- } = this._config;
540
-
541
- if (this._isActive) {
542
- return;
543
- }
544
-
545
- if (autofocus) {
546
- trapElement.focus();
547
- }
548
-
549
- EventHandler__default.default.off(document, EVENT_KEY$1); // guard against infinite focus loop
550
-
551
- EventHandler__default.default.on(document, EVENT_FOCUSIN, event => this._handleFocusin(event));
552
- EventHandler__default.default.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event));
553
- this._isActive = true;
554
- }
555
-
556
- deactivate() {
557
- if (!this._isActive) {
558
- return;
559
- }
560
-
561
- this._isActive = false;
562
- EventHandler__default.default.off(document, EVENT_KEY$1);
563
- } // Private
564
-
565
-
566
- _handleFocusin(event) {
567
- const {
568
- target
569
- } = event;
570
- const {
571
- trapElement
572
- } = this._config;
573
-
574
- if (target === document || target === trapElement || trapElement.contains(target)) {
575
- return;
576
- }
577
-
578
- const elements = SelectorEngine__default.default.focusableChildren(trapElement);
579
-
580
- if (elements.length === 0) {
581
- trapElement.focus();
582
- } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {
583
- elements[elements.length - 1].focus();
584
- } else {
585
- elements[0].focus();
586
- }
587
- }
588
-
589
- _handleKeydown(event) {
590
- if (event.key !== TAB_KEY) {
591
- return;
592
- }
593
-
594
- this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD;
595
- }
596
-
597
- _getConfig(config) {
598
- config = { ...Default$1,
599
- ...(typeof config === 'object' ? config : {})
600
- };
601
- typeCheckConfig(NAME$1, config, DefaultType$1);
602
- return config;
603
- }
604
-
605
- }
606
-
607
- /**
608
- * --------------------------------------------------------------------------
609
- * Bootstrap (v5.1.3): util/component-functions.js
610
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
611
- * --------------------------------------------------------------------------
612
- */
613
-
614
- const enableDismissTrigger = (component, method = 'hide') => {
615
- const clickEvent = `click.dismiss${component.EVENT_KEY}`;
616
- const name = component.NAME;
617
- EventHandler__default.default.on(document, clickEvent, `[data-coreui-dismiss="${name}"]`, function (event) {
618
- if (['A', 'AREA'].includes(this.tagName)) {
619
- event.preventDefault();
620
- }
621
-
622
- if (isDisabled(this)) {
623
- return;
624
- }
625
-
626
- const target = getElementFromSelector(this) || this.closest(`.${name}`);
627
- const instance = component.getOrCreateInstance(target); // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method
628
-
629
- instance[method]();
630
- });
631
- };
632
-
633
- /**
634
- * --------------------------------------------------------------------------
635
- * CoreUI (v4.1.6): modal.js
23
+ * CoreUI (v4.2.0): modal.js
636
24
  * Licensed under MIT (https://coreui.io/license)
637
25
  *
638
26
  * This component is a modified version of the Bootstrap's modal.js
@@ -640,9 +28,7 @@
640
28
  * --------------------------------------------------------------------------
641
29
  */
642
30
  /**
643
- * ------------------------------------------------------------------------
644
31
  * Constants
645
- * ------------------------------------------------------------------------
646
32
  */
647
33
 
648
34
  const NAME = 'modal';
@@ -650,26 +36,14 @@
650
36
  const EVENT_KEY = `.${DATA_KEY}`;
651
37
  const DATA_API_KEY = '.data-api';
652
38
  const ESCAPE_KEY = 'Escape';
653
- const Default = {
654
- backdrop: true,
655
- keyboard: true,
656
- focus: true
657
- };
658
- const DefaultType = {
659
- backdrop: '(boolean|string)',
660
- keyboard: 'boolean',
661
- focus: 'boolean'
662
- };
663
39
  const EVENT_HIDE = `hide${EVENT_KEY}`;
664
40
  const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`;
665
41
  const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
666
42
  const EVENT_SHOW = `show${EVENT_KEY}`;
667
43
  const EVENT_SHOWN = `shown${EVENT_KEY}`;
668
44
  const EVENT_RESIZE = `resize${EVENT_KEY}`;
669
- const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`;
670
- const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`;
671
- const EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY}`;
672
45
  const EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`;
46
+ const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`;
673
47
  const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;
674
48
  const CLASS_NAME_OPEN = 'modal-open';
675
49
  const CLASS_NAME_FADE = 'fade';
@@ -679,23 +53,31 @@
679
53
  const SELECTOR_DIALOG = '.modal-dialog';
680
54
  const SELECTOR_MODAL_BODY = '.modal-body';
681
55
  const SELECTOR_DATA_TOGGLE = '[data-coreui-toggle="modal"]';
56
+ const Default = {
57
+ backdrop: true,
58
+ focus: true,
59
+ keyboard: true
60
+ };
61
+ const DefaultType = {
62
+ backdrop: '(boolean|string)',
63
+ focus: 'boolean',
64
+ keyboard: 'boolean'
65
+ };
682
66
  /**
683
- * ------------------------------------------------------------------------
684
- * Class Definition
685
- * ------------------------------------------------------------------------
67
+ * Class definition
686
68
  */
687
69
 
688
70
  class Modal extends BaseComponent__default.default {
689
71
  constructor(element, config) {
690
- super(element);
691
- this._config = this._getConfig(config);
72
+ super(element, config);
692
73
  this._dialog = SelectorEngine__default.default.findOne(SELECTOR_DIALOG, this._element);
693
74
  this._backdrop = this._initializeBackDrop();
694
75
  this._focustrap = this._initializeFocusTrap();
695
76
  this._isShown = false;
696
- this._ignoreBackdropClick = false;
697
77
  this._isTransitioning = false;
698
- this._scrollBar = new ScrollBarHelper();
78
+ this._scrollBar = new ScrollBarHelper__default.default();
79
+
80
+ this._addEventListeners();
699
81
  } // Getters
700
82
 
701
83
 
@@ -703,6 +85,10 @@
703
85
  return Default;
704
86
  }
705
87
 
88
+ static get DefaultType() {
89
+ return DefaultType;
90
+ }
91
+
706
92
  static get NAME() {
707
93
  return NAME;
708
94
  } // Public
@@ -726,10 +112,7 @@
726
112
  }
727
113
 
728
114
  this._isShown = true;
729
-
730
- if (this._isAnimated()) {
731
- this._isTransitioning = true;
732
- }
115
+ this._isTransitioning = true;
733
116
 
734
117
  this._scrollBar.hide();
735
118
 
@@ -737,19 +120,7 @@
737
120
 
738
121
  this._adjustDialog();
739
122
 
740
- this._setEscapeEvent();
741
-
742
- this._setResizeEvent();
743
-
744
- EventHandler__default.default.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, () => {
745
- EventHandler__default.default.one(this._element, EVENT_MOUSEUP_DISMISS, event => {
746
- if (event.target === this._element) {
747
- this._ignoreBackdropClick = true;
748
- }
749
- });
750
- });
751
-
752
- this._showBackdrop(() => this._showElement(relatedTarget));
123
+ this._backdrop.show(() => this._showElement(relatedTarget));
753
124
  }
754
125
 
755
126
  hide() {
@@ -764,29 +135,19 @@
764
135
  }
765
136
 
766
137
  this._isShown = false;
767
-
768
- const isAnimated = this._isAnimated();
769
-
770
- if (isAnimated) {
771
- this._isTransitioning = true;
772
- }
773
-
774
- this._setEscapeEvent();
775
-
776
- this._setResizeEvent();
138
+ this._isTransitioning = true;
777
139
 
778
140
  this._focustrap.deactivate();
779
141
 
780
142
  this._element.classList.remove(CLASS_NAME_SHOW);
781
143
 
782
- EventHandler__default.default.off(this._element, EVENT_CLICK_DISMISS);
783
- EventHandler__default.default.off(this._dialog, EVENT_MOUSEDOWN_DISMISS);
784
-
785
- this._queueCallback(() => this._hideModal(), this._element, isAnimated);
144
+ this._queueCallback(() => this._hideModal(), this._element, this._isAnimated());
786
145
  }
787
146
 
788
147
  dispose() {
789
- [window, this._dialog].forEach(htmlElement => EventHandler__default.default.off(htmlElement, EVENT_KEY));
148
+ for (const htmlElement of [window, this._dialog]) {
149
+ EventHandler__default.default.off(htmlElement, EVENT_KEY);
150
+ }
790
151
 
791
152
  this._backdrop.dispose();
792
153
 
@@ -801,35 +162,22 @@
801
162
 
802
163
 
803
164
  _initializeBackDrop() {
804
- return new Backdrop({
165
+ return new Backdrop__default.default({
805
166
  isVisible: Boolean(this._config.backdrop),
806
- // 'static' option will be translated to true, and booleans will keep their value
167
+ // 'static' option will be translated to true, and booleans will keep their value,
807
168
  isAnimated: this._isAnimated()
808
169
  });
809
170
  }
810
171
 
811
172
  _initializeFocusTrap() {
812
- return new FocusTrap({
173
+ return new FocusTrap__default.default({
813
174
  trapElement: this._element
814
175
  });
815
176
  }
816
177
 
817
- _getConfig(config) {
818
- config = { ...Default,
819
- ...Manipulator__default.default.getDataAttributes(this._element),
820
- ...(typeof config === 'object' ? config : {})
821
- };
822
- typeCheckConfig(NAME, config, DefaultType);
823
- return config;
824
- }
825
-
826
178
  _showElement(relatedTarget) {
827
- const isAnimated = this._isAnimated();
828
-
829
- const modalBody = SelectorEngine__default.default.findOne(SELECTOR_MODAL_BODY, this._dialog);
830
-
831
- if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
832
- // Don't move modal's DOM position
179
+ // try to append dynamic modal
180
+ if (!document.body.contains(this._element)) {
833
181
  document.body.append(this._element);
834
182
  }
835
183
 
@@ -842,14 +190,13 @@
842
190
  this._element.setAttribute('role', 'dialog');
843
191
 
844
192
  this._element.scrollTop = 0;
193
+ const modalBody = SelectorEngine__default.default.findOne(SELECTOR_MODAL_BODY, this._dialog);
845
194
 
846
195
  if (modalBody) {
847
196
  modalBody.scrollTop = 0;
848
197
  }
849
198
 
850
- if (isAnimated) {
851
- reflow(this._element);
852
- }
199
+ index.reflow(this._element);
853
200
 
854
201
  this._element.classList.add(CLASS_NAME_SHOW);
855
202
 
@@ -864,30 +211,44 @@
864
211
  });
865
212
  };
866
213
 
867
- this._queueCallback(transitionComplete, this._dialog, isAnimated);
214
+ this._queueCallback(transitionComplete, this._dialog, this._isAnimated());
868
215
  }
869
216
 
870
- _setEscapeEvent() {
871
- if (this._isShown) {
872
- EventHandler__default.default.on(this._element, EVENT_KEYDOWN_DISMISS, event => {
873
- if (this._config.keyboard && event.key === ESCAPE_KEY) {
874
- event.preventDefault();
875
- this.hide();
876
- } else if (!this._config.keyboard && event.key === ESCAPE_KEY) {
877
- this._triggerBackdropTransition();
878
- }
879
- });
880
- } else {
881
- EventHandler__default.default.off(this._element, EVENT_KEYDOWN_DISMISS);
882
- }
883
- }
217
+ _addEventListeners() {
218
+ EventHandler__default.default.on(this._element, EVENT_KEYDOWN_DISMISS, event => {
219
+ if (event.key !== ESCAPE_KEY) {
220
+ return;
221
+ }
884
222
 
885
- _setResizeEvent() {
886
- if (this._isShown) {
887
- EventHandler__default.default.on(window, EVENT_RESIZE, () => this._adjustDialog());
888
- } else {
889
- EventHandler__default.default.off(window, EVENT_RESIZE);
890
- }
223
+ if (this._config.keyboard) {
224
+ event.preventDefault();
225
+ this.hide();
226
+ return;
227
+ }
228
+
229
+ this._triggerBackdropTransition();
230
+ });
231
+ EventHandler__default.default.on(window, EVENT_RESIZE, () => {
232
+ if (this._isShown && !this._isTransitioning) {
233
+ this._adjustDialog();
234
+ }
235
+ });
236
+ EventHandler__default.default.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => {
237
+ if (event.target !== event.currentTarget) {
238
+ // click is inside modal-dialog
239
+ return;
240
+ }
241
+
242
+ if (this._config.backdrop === 'static') {
243
+ this._triggerBackdropTransition();
244
+
245
+ return;
246
+ }
247
+
248
+ if (this._config.backdrop) {
249
+ this.hide();
250
+ }
251
+ });
891
252
  }
892
253
 
893
254
  _hideModal() {
@@ -912,27 +273,6 @@
912
273
  });
913
274
  }
914
275
 
915
- _showBackdrop(callback) {
916
- EventHandler__default.default.on(this._element, EVENT_CLICK_DISMISS, event => {
917
- if (this._ignoreBackdropClick) {
918
- this._ignoreBackdropClick = false;
919
- return;
920
- }
921
-
922
- if (event.target !== event.currentTarget) {
923
- return;
924
- }
925
-
926
- if (this._config.backdrop === true) {
927
- this.hide();
928
- } else if (this._config.backdrop === 'static') {
929
- this._triggerBackdropTransition();
930
- }
931
- });
932
-
933
- this._backdrop.show(callback);
934
- }
935
-
936
276
  _isAnimated() {
937
277
  return this._element.classList.contains(CLASS_NAME_FADE);
938
278
  }
@@ -944,37 +284,32 @@
944
284
  return;
945
285
  }
946
286
 
947
- const {
948
- classList,
949
- scrollHeight,
950
- style
951
- } = this._element;
952
- const isModalOverflowing = scrollHeight > document.documentElement.clientHeight; // return if the following background transition hasn't yet completed
287
+ const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
288
+ const initialOverflowY = this._element.style.overflowY; // return if the following background transition hasn't yet completed
953
289
 
954
- if (!isModalOverflowing && style.overflowY === 'hidden' || classList.contains(CLASS_NAME_STATIC)) {
290
+ if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) {
955
291
  return;
956
292
  }
957
293
 
958
294
  if (!isModalOverflowing) {
959
- style.overflowY = 'hidden';
295
+ this._element.style.overflowY = 'hidden';
960
296
  }
961
297
 
962
- classList.add(CLASS_NAME_STATIC);
298
+ this._element.classList.add(CLASS_NAME_STATIC);
963
299
 
964
300
  this._queueCallback(() => {
965
- classList.remove(CLASS_NAME_STATIC);
301
+ this._element.classList.remove(CLASS_NAME_STATIC);
966
302
 
967
- if (!isModalOverflowing) {
968
- this._queueCallback(() => {
969
- style.overflowY = '';
970
- }, this._dialog);
971
- }
303
+ this._queueCallback(() => {
304
+ this._element.style.overflowY = initialOverflowY;
305
+ }, this._dialog);
972
306
  }, this._dialog);
973
307
 
974
308
  this._element.focus();
975
- } // ----------------------------------------------------------------------
976
- // the following methods are used to handle overflowing modals
977
- // ----------------------------------------------------------------------
309
+ }
310
+ /**
311
+ * The following methods are used to handle overflowing modals
312
+ */
978
313
 
979
314
 
980
315
  _adjustDialog() {
@@ -984,12 +319,14 @@
984
319
 
985
320
  const isBodyOverflowing = scrollbarWidth > 0;
986
321
 
987
- if (!isBodyOverflowing && isModalOverflowing && !isRTL() || isBodyOverflowing && !isModalOverflowing && isRTL()) {
988
- this._element.style.paddingLeft = `${scrollbarWidth}px`;
322
+ if (isBodyOverflowing && !isModalOverflowing) {
323
+ const property = index.isRTL() ? 'paddingLeft' : 'paddingRight';
324
+ this._element.style[property] = `${scrollbarWidth}px`;
989
325
  }
990
326
 
991
- if (isBodyOverflowing && !isModalOverflowing && !isRTL() || !isBodyOverflowing && isModalOverflowing && isRTL()) {
992
- this._element.style.paddingRight = `${scrollbarWidth}px`;
327
+ if (!isBodyOverflowing && isModalOverflowing) {
328
+ const property = index.isRTL() ? 'paddingRight' : 'paddingLeft';
329
+ this._element.style[property] = `${scrollbarWidth}px`;
993
330
  }
994
331
  }
995
332
 
@@ -1017,14 +354,12 @@
1017
354
 
1018
355
  }
1019
356
  /**
1020
- * ------------------------------------------------------------------------
1021
- * Data Api implementation
1022
- * ------------------------------------------------------------------------
357
+ * Data API implementation
1023
358
  */
1024
359
 
1025
360
 
1026
361
  EventHandler__default.default.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
1027
- const target = getElementFromSelector(this);
362
+ const target = index.getElementFromSelector(this);
1028
363
 
1029
364
  if (['A', 'AREA'].includes(this.tagName)) {
1030
365
  event.preventDefault();
@@ -1037,30 +372,27 @@
1037
372
  }
1038
373
 
1039
374
  EventHandler__default.default.one(target, EVENT_HIDDEN, () => {
1040
- if (isVisible(this)) {
375
+ if (index.isVisible(this)) {
1041
376
  this.focus();
1042
377
  }
1043
378
  });
1044
- }); // avoid conflict when clicking moddal toggler while another one is open
379
+ }); // avoid conflict when clicking modal toggler while another one is open
1045
380
 
1046
- const allReadyOpen = SelectorEngine__default.default.findOne(OPEN_SELECTOR);
381
+ const alreadyOpen = SelectorEngine__default.default.findOne(OPEN_SELECTOR);
1047
382
 
1048
- if (allReadyOpen) {
1049
- Modal.getInstance(allReadyOpen).hide();
383
+ if (alreadyOpen) {
384
+ Modal.getInstance(alreadyOpen).hide();
1050
385
  }
1051
386
 
1052
387
  const data = Modal.getOrCreateInstance(target);
1053
388
  data.toggle(this);
1054
389
  });
1055
- enableDismissTrigger(Modal);
390
+ componentFunctions.enableDismissTrigger(Modal);
1056
391
  /**
1057
- * ------------------------------------------------------------------------
1058
392
  * jQuery
1059
- * ------------------------------------------------------------------------
1060
- * add .Modal to jQuery only if jQuery is present
1061
393
  */
1062
394
 
1063
- defineJQueryPlugin(Modal);
395
+ index.defineJQueryPlugin(Modal);
1064
396
 
1065
397
  return Modal;
1066
398