All files / src popover.js

100% Statements 19/19
100% Branches 6/6
100% Functions 8/8
100% Lines 19/19

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                            1x   1x 1x   1x                         1x                       21x       21x       128x         11x         9x             14x         5x 5x   5x 3x     2x 1x     1x                 1x      
/**
 * --------------------------------------------------------------------------
 * Bootstrap (v5.2.3): popover.js
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
 * --------------------------------------------------------------------------
 */
 
import { defineJQueryPlugin } from './util/index'
import Tooltip from './tooltip'
 
/**
 * Constants
 */
 
const NAME = 'popover'
 
const SELECTOR_TITLE = '.popover-header'
const SELECTOR_CONTENT = '.popover-body'
 
const Default = {
  ...Tooltip.Default,
  content: '',
  offset: [0, 8],
  placement: 'right',
  template: '<div class="popover" role="tooltip">' +
    '<div class="popover-arrow"></div>' +
    '<h3 class="popover-header"></h3>' +
    '<div class="popover-body"></div>' +
    '</div>',
  trigger: 'click'
}
 
const DefaultType = {
  ...Tooltip.DefaultType,
  content: '(null|string|element|function)'
}
 
/**
 * Class definition
 */
 
class Popover extends Tooltip {
  // Getters
  static get Default() {
    return Default
  }
 
  static get DefaultType() {
    return DefaultType
  }
 
  static get NAME() {
    return NAME
  }
 
  // Overrides
  _isWithContent() {
    return this._getTitle() || this._getContent()
  }
 
  // Private
  _getContentForTemplate() {
    return {
      [SELECTOR_TITLE]: this._getTitle(),
      [SELECTOR_CONTENT]: this._getContent()
    }
  }
 
  _getContent() {
    return this._resolvePossibleFunction(this._config.content)
  }
 
  // Static
  static jQueryInterface(config) {
    return this.each(function () {
      const data = Popover.getOrCreateInstance(this, config)
 
      if (typeof config !== 'string') {
        return
      }
 
      if (typeof data[config] === 'undefined') {
        throw new TypeError(`No method named "${config}"`)
      }
 
      data[config]()
    })
  }
}
 
/**
 * jQuery
 */
 
defineJQueryPlugin(Popover)
 
export default Popover