diff options
Diffstat (limited to 'npm_assets/node_modules/popper.js/src/methods')
6 files changed, 267 insertions, 0 deletions
diff --git a/npm_assets/node_modules/popper.js/src/methods/defaults.js b/npm_assets/node_modules/popper.js/src/methods/defaults.js new file mode 100644 index 0000000..461f981 --- /dev/null +++ b/npm_assets/node_modules/popper.js/src/methods/defaults.js @@ -0,0 +1,79 @@ +import modifiers from '../modifiers/index'; + +/** + * Default options provided to Popper.js constructor.<br /> + * These can be overridden using the `options` argument of Popper.js.<br /> + * To override an option, simply pass an object with the same + * structure of the `options` object, as the 3rd argument. For example: + * ``` + * new Popper(ref, pop, { + * modifiers: { + * preventOverflow: { enabled: false } + * } + * }) + * ``` + * @type {Object} + * @static + * @memberof Popper + */ +export default { + /** + * Popper's placement. + * @prop {Popper.placements} placement='bottom' + */ + placement: 'bottom', + + /** + * Set this to true if you want popper to position it self in 'fixed' mode + * @prop {Boolean} positionFixed=false + */ + positionFixed: false, + + /** + * Whether events (resize, scroll) are initially enabled. + * @prop {Boolean} eventsEnabled=true + */ + eventsEnabled: true, + + /** + * Set to true if you want to automatically remove the popper when + * you call the `destroy` method. + * @prop {Boolean} removeOnDestroy=false + */ + removeOnDestroy: false, + + /** + * Callback called when the popper is created.<br /> + * By default, it is set to no-op.<br /> + * Access Popper.js instance with `data.instance`. + * @prop {onCreate} + */ + onCreate: () => {}, + + /** + * Callback called when the popper is updated. This callback is not called + * on the initialization/creation of the popper, but only on subsequent + * updates.<br /> + * By default, it is set to no-op.<br /> + * Access Popper.js instance with `data.instance`. + * @prop {onUpdate} + */ + onUpdate: () => {}, + + /** + * List of modifiers used to modify the offsets before they are applied to the popper. + * They provide most of the functionalities of Popper.js. + * @prop {modifiers} + */ + modifiers, +}; + +/** + * @callback onCreate + * @param {dataObject} data + */ + +/** + * @callback onUpdate + * @param {dataObject} data + */ diff --git a/npm_assets/node_modules/popper.js/src/methods/destroy.js b/npm_assets/node_modules/popper.js/src/methods/destroy.js new file mode 100644 index 0000000..2888a67 --- /dev/null +++ b/npm_assets/node_modules/popper.js/src/methods/destroy.js @@ -0,0 +1,32 @@ +import isModifierEnabled from '../utils/isModifierEnabled'; +import getSupportedPropertyName from '../utils/getSupportedPropertyName'; + +/** + * Destroys the popper. + * @method + * @memberof Popper + */ +export default function destroy() { + this.state.isDestroyed = true; + + // touch DOM only if `applyStyle` modifier is enabled + if (isModifierEnabled(this.modifiers, 'applyStyle')) { + this.popper.removeAttribute('x-placement'); + this.popper.style.position = ''; + this.popper.style.top = ''; + this.popper.style.left = ''; + this.popper.style.right = ''; + this.popper.style.bottom = ''; + this.popper.style.willChange = ''; + this.popper.style[getSupportedPropertyName('transform')] = ''; + } + + this.disableEventListeners(); + + // remove the popper if user explicitly asked for the deletion on destroy + // do not use `remove` because IE11 doesn't support it + if (this.options.removeOnDestroy) { + this.popper.parentNode.removeChild(this.popper); + } + return this; +} diff --git a/npm_assets/node_modules/popper.js/src/methods/disableEventListeners.js b/npm_assets/node_modules/popper.js/src/methods/disableEventListeners.js new file mode 100644 index 0000000..4d2e032 --- /dev/null +++ b/npm_assets/node_modules/popper.js/src/methods/disableEventListeners.js @@ -0,0 +1,15 @@ +import removeEventListeners from '../utils/removeEventListeners'; + +/** + * It will remove resize/scroll events and won't recalculate popper position + * when they are triggered. It also won't trigger `onUpdate` callback anymore, + * unless you call `update` method manually. + * @method + * @memberof Popper + */ +export default function disableEventListeners() { + if (this.state.eventsEnabled) { + cancelAnimationFrame(this.scheduleUpdate); + this.state = removeEventListeners(this.reference, this.state); + } +} diff --git a/npm_assets/node_modules/popper.js/src/methods/enableEventListeners.js b/npm_assets/node_modules/popper.js/src/methods/enableEventListeners.js new file mode 100644 index 0000000..ff1a63d --- /dev/null +++ b/npm_assets/node_modules/popper.js/src/methods/enableEventListeners.js @@ -0,0 +1,18 @@ +import setupEventListeners from '../utils/setupEventListeners'; + +/** + * It will add resize/scroll events and start recalculating + * position of the popper element when they are triggered. + * @method + * @memberof Popper + */ +export default function enableEventListeners() { + if (!this.state.eventsEnabled) { + this.state = setupEventListeners( + this.reference, + this.options, + this.state, + this.scheduleUpdate + ); + } +} diff --git a/npm_assets/node_modules/popper.js/src/methods/placements.js b/npm_assets/node_modules/popper.js/src/methods/placements.js new file mode 100644 index 0000000..35b4d23 --- /dev/null +++ b/npm_assets/node_modules/popper.js/src/methods/placements.js @@ -0,0 +1,48 @@ +/** + * List of accepted placements to use as values of the `placement` option.<br /> + * Valid placements are: + * - `auto` + * - `top` + * - `right` + * - `bottom` + * - `left` + * + * Each placement can have a variation from this list: + * - `-start` + * - `-end` + * + * Variations are interpreted easily if you think of them as the left to right + * written languages. Horizontally (`top` and `bottom`), `start` is left and `end` + * is right.<br /> + * Vertically (`left` and `right`), `start` is top and `end` is bottom. + * + * Some valid examples are: + * - `top-end` (on top of reference, right aligned) + * - `right-start` (on right of reference, top aligned) + * - `bottom` (on bottom, centered) + * - `auto-end` (on the side with more space available, alignment depends by placement) + * + * @static + * @type {Array} + * @enum {String} + * @readonly + * @method placements + * @memberof Popper + */ +export default [ + 'auto-start', + 'auto', + 'auto-end', + 'top-start', + 'top', + 'top-end', + 'right-start', + 'right', + 'right-end', + 'bottom-end', + 'bottom', + 'bottom-start', + 'left-end', + 'left', + 'left-start', +]; diff --git a/npm_assets/node_modules/popper.js/src/methods/update.js b/npm_assets/node_modules/popper.js/src/methods/update.js new file mode 100644 index 0000000..0660d1e --- /dev/null +++ b/npm_assets/node_modules/popper.js/src/methods/update.js @@ -0,0 +1,75 @@ +import computeAutoPlacement from '../utils/computeAutoPlacement'; +import getReferenceOffsets from '../utils/getReferenceOffsets'; +import getPopperOffsets from '../utils/getPopperOffsets'; +import runModifiers from '../utils/runModifiers'; + +/** + * Updates the position of the popper, computing the new offsets and applying + * the new style.<br /> + * Prefer `scheduleUpdate` over `update` because of performance reasons. + * @method + * @memberof Popper + */ +export default function update() { + // if popper is destroyed, don't perform any further update + if (this.state.isDestroyed) { + return; + } + + let data = { + instance: this, + styles: {}, + arrowStyles: {}, + attributes: {}, + flipped: false, + offsets: {}, + }; + + // compute reference element offsets + data.offsets.reference = getReferenceOffsets( + this.state, + this.popper, + this.reference, + this.options.positionFixed + ); + + // compute auto placement, store placement inside the data object, + // modifiers will be able to edit `placement` if needed + // and refer to originalPlacement to know the original value + data.placement = computeAutoPlacement( + this.options.placement, + data.offsets.reference, + this.popper, + this.reference, + this.options.modifiers.flip.boundariesElement, + this.options.modifiers.flip.padding + ); + + // store the computed placement inside `originalPlacement` + data.originalPlacement = data.placement; + + data.positionFixed = this.options.positionFixed; + + // compute the popper offsets + data.offsets.popper = getPopperOffsets( + this.popper, + data.offsets.reference, + data.placement + ); + + data.offsets.popper.position = this.options.positionFixed + ? 'fixed' + : 'absolute'; + + // run the modifiers + data = runModifiers(this.modifiers, data); + + // the first `update` will call `onCreate` callback + // the other ones will call `onUpdate` callback + if (!this.state.isCreated) { + this.state.isCreated = true; + this.options.onCreate(data); + } else { + this.options.onUpdate(data); + } +} |
