Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 | 3x 3x 3x 3x 3x 3x 118x 118x 118x 118x 118x 118x 76x 6x 6x 70x 70x 70x 35x 70x 70x 70x 30x 2x 2x 28x 28x 28x 28x 31x 2x 29x 29x 29x 269x 68x 68x 68x 35x 68x 269x 118x 118x 70x 1x 69x 69x 69x 3x 69x 98x | /** * -------------------------------------------------------------------------- * Bootstrap (v5.2.3): util/backdrop.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ import EventHandler from '../dom/event-handler' import { execute, executeAfterTransition, getElement, reflow } from './index' import Config from './config' /** * Constants */ const NAME = 'backdrop' const CLASS_NAME_FADE = 'fade' const CLASS_NAME_SHOW = 'show' const EVENT_MOUSEDOWN = `mousedown.bs.${NAME}` const Default = { className: 'modal-backdrop', clickCallback: null, isAnimated: false, isVisible: true, // if false, we use the backdrop helper without adding any element to the dom rootElement: 'body' // give the choice to place backdrop under different elements } const DefaultType = { className: 'string', clickCallback: '(function|null)', isAnimated: 'boolean', isVisible: 'boolean', rootElement: '(element|string)' } /** * Class definition */ class Backdrop extends Config { constructor(config) { super() this._config = this._getConfig(config) this._isAppended = false this._element = null } // Getters static get Default() { return Default } static get DefaultType() { return DefaultType } static get NAME() { return NAME } // Public show(callback) { if (!this._config.isVisible) { execute(callback) return } this._append() const element = this._getElement() if (this._config.isAnimated) { reflow(element) } element.classList.add(CLASS_NAME_SHOW) this._emulateAnimation(() => { execute(callback) }) } hide(callback) { if (!this._config.isVisible) { execute(callback) return } this._getElement().classList.remove(CLASS_NAME_SHOW) this._emulateAnimation(() => { this.dispose() execute(callback) }) } dispose() { if (!this._isAppended) { return } EventHandler.off(this._element, EVENT_MOUSEDOWN) this._element.remove() this._isAppended = false } // Private _getElement() { if (!this._element) { const backdrop = document.createElement('div') backdrop.className = this._config.className if (this._config.isAnimated) { backdrop.classList.add(CLASS_NAME_FADE) } this._element = backdrop } return this._element } _configAfterMerge(config) { // use getElement() with the default "body" to get a fresh Element on each instantiation config.rootElement = getElement(config.rootElement) return config } _append() { if (this._isAppended) { return } const element = this._getElement() this._config.rootElement.append(element) EventHandler.on(element, EVENT_MOUSEDOWN, () => { execute(this._config.clickCallback) }) this._isAppended = true } _emulateAnimation(callback) { executeAfterTransition(callback, this._getElement(), this._config.isAnimated) } } export default Backdrop |