UNPKG

3.26 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
5exports.__esModule = true;
6exports.default = void 0;
7
8var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
9
10var _css3 = _interopRequireDefault(require("dom-helpers/css"));
11
12var _querySelectorAll = _interopRequireDefault(require("dom-helpers/querySelectorAll"));
13
14var _scrollbarSize = _interopRequireDefault(require("dom-helpers/scrollbarSize"));
15
16var _ModalManager2 = _interopRequireDefault(require("react-overlays/ModalManager"));
17
18var Selector = {
19 FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',
20 STICKY_CONTENT: '.sticky-top',
21 NAVBAR_TOGGLER: '.navbar-toggler'
22};
23
24var BootstrapModalManager = /*#__PURE__*/function (_ModalManager) {
25 (0, _inheritsLoose2.default)(BootstrapModalManager, _ModalManager);
26
27 function BootstrapModalManager() {
28 return _ModalManager.apply(this, arguments) || this;
29 }
30
31 var _proto = BootstrapModalManager.prototype;
32
33 _proto.adjustAndStore = function adjustAndStore(prop, element, adjust) {
34 var _css;
35
36 var actual = element.style[prop]; // TODO: DOMStringMap and CSSStyleDeclaration aren't strictly compatible
37 // @ts-ignore
38
39 element.dataset[prop] = actual;
40 (0, _css3.default)(element, (_css = {}, _css[prop] = parseFloat((0, _css3.default)(element, prop)) + adjust + "px", _css));
41 };
42
43 _proto.restore = function restore(prop, element) {
44 var value = element.dataset[prop];
45
46 if (value !== undefined) {
47 var _css2;
48
49 delete element.dataset[prop];
50 (0, _css3.default)(element, (_css2 = {}, _css2[prop] = value, _css2));
51 }
52 };
53
54 _proto.setContainerStyle = function setContainerStyle(containerState, container) {
55 var _this = this;
56
57 _ModalManager.prototype.setContainerStyle.call(this, containerState, container);
58
59 if (!containerState.overflowing) return;
60 var size = (0, _scrollbarSize.default)();
61 (0, _querySelectorAll.default)(container, Selector.FIXED_CONTENT).forEach(function (el) {
62 return _this.adjustAndStore('paddingRight', el, size);
63 });
64 (0, _querySelectorAll.default)(container, Selector.STICKY_CONTENT).forEach(function (el) {
65 return _this.adjustAndStore('marginRight', el, -size);
66 });
67 (0, _querySelectorAll.default)(container, Selector.NAVBAR_TOGGLER).forEach(function (el) {
68 return _this.adjustAndStore('marginRight', el, size);
69 });
70 };
71
72 _proto.removeContainerStyle = function removeContainerStyle(containerState, container) {
73 var _this2 = this;
74
75 _ModalManager.prototype.removeContainerStyle.call(this, containerState, container);
76
77 (0, _querySelectorAll.default)(container, Selector.FIXED_CONTENT).forEach(function (el) {
78 return _this2.restore('paddingRight', el);
79 });
80 (0, _querySelectorAll.default)(container, Selector.STICKY_CONTENT).forEach(function (el) {
81 return _this2.restore('marginRight', el);
82 });
83 (0, _querySelectorAll.default)(container, Selector.NAVBAR_TOGGLER).forEach(function (el) {
84 return _this2.restore('marginRight', el);
85 });
86 };
87
88 return BootstrapModalManager;
89}(_ModalManager2.default);
90
91exports.default = BootstrapModalManager;
92module.exports = exports["default"];
\No newline at end of file