bootstrap.js 95.5 KB
Newer Older
3001
3002
          return;
        }
XhmikosR's avatar
XhmikosR committed
3003

3004
        $(tip).removeClass(ClassName.IN);
XhmikosR's avatar
XhmikosR committed
3005

3006
        if (Util.supportsTransitionEnd() && $(this.tip).hasClass(ClassName.FADE)) {
Mark Otto's avatar
Mark Otto committed
3007

3008
3009
3010
3011
          $(tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);
        } else {
          complete();
        }
Mark Otto's avatar
Mark Otto committed
3012

3013
3014
        this._hoverState = '';
      }
Mark Otto's avatar
Mark Otto committed
3015

3016
      // protected
Mark Otto's avatar
Mark Otto committed
3017

Jacob Thornton's avatar
Jacob Thornton committed
3018
3019
    }, {
      key: 'isWithContent',
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
      value: function isWithContent() {
        return !!this.getTitle();
      }
    }, {
      key: 'getTipElement',
      value: function getTipElement() {
        return this.tip = this.tip || $(this.config.template)[0];
      }
    }, {
      key: 'setContent',
      value: function setContent() {
        var tip = this.getTipElement();
        var title = this.getTitle();
        var method = this.config.html ? 'innerHTML' : 'innerText';
Mark Otto's avatar
Mark Otto committed
3034

3035
        $(tip).find(Selector.TOOLTIP_INNER)[0][method] = title;
Mark Otto's avatar
Mark Otto committed
3036

3037
        $(tip).removeClass(ClassName.FADE).removeClass(ClassName.IN);
Mark Otto's avatar
Mark Otto committed
3038

3039
3040
3041
3042
3043
3044
        this.cleanupTether();
      }
    }, {
      key: 'getTitle',
      value: function getTitle() {
        var title = this.element.getAttribute('data-original-title');
XhmikosR's avatar
XhmikosR committed
3045

3046
3047
3048
        if (!title) {
          title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title;
        }
Mark Otto's avatar
Mark Otto committed
3049

3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
        return title;
      }
    }, {
      key: 'cleanupTether',
      value: function cleanupTether() {
        if (this._tether) {
          this._tether.destroy();

          // clean up after tether's junk classes
          // remove after they fix issue
          // (https://github.com/HubSpot/tether/issues/36)
          $(this.element).removeClass(this._removeTetherClasses);
          $(this.tip).removeClass(this._removeTetherClasses);
        }
      }
XhmikosR's avatar
XhmikosR committed
3065

3066
      // private
XhmikosR's avatar
XhmikosR committed
3067

Jacob Thornton's avatar
Jacob Thornton committed
3068
3069
    }, {
      key: '_getAttachment',
3070
3071
3072
3073
3074
3075
3076
      value: function _getAttachment(placement) {
        return AttachmentMap[placement.toUpperCase()];
      }
    }, {
      key: '_setListeners',
      value: function _setListeners() {
        var _this18 = this;
XhmikosR's avatar
XhmikosR committed
3077

3078
        var triggers = this.config.trigger.split(' ');
XhmikosR's avatar
XhmikosR committed
3079

3080
3081
3082
3083
3084
3085
        triggers.forEach(function (trigger) {
          if (trigger === 'click') {
            $(_this18.element).on(_this18.constructor.Event.CLICK, _this18.config.selector, $.proxy(_this18.toggle, _this18));
          } else if (trigger !== Trigger.MANUAL) {
            var eventIn = trigger == Trigger.HOVER ? _this18.constructor.Event.MOUSEENTER : _this18.constructor.Event.FOCUSIN;
            var eventOut = trigger == Trigger.HOVER ? _this18.constructor.Event.MOUSELEAVE : _this18.constructor.Event.FOCUSOUT;
XhmikosR's avatar
XhmikosR committed
3086

3087
3088
3089
            $(_this18.element).on(eventIn, _this18.config.selector, $.proxy(_this18._enter, _this18)).on(eventOut, _this18.config.selector, $.proxy(_this18._leave, _this18));
          }
        });
XhmikosR's avatar
XhmikosR committed
3090

3091
3092
3093
3094
3095
3096
3097
3098
        if (this.config.selector) {
          this.config = $.extend({}, this.config, {
            trigger: 'manual',
            selector: ''
          });
        } else {
          this._fixTitle();
        }
Mark Otto's avatar
Mark Otto committed
3099
      }
3100
3101
3102
3103
    }, {
      key: '_removeTetherClasses',
      value: function _removeTetherClasses(i, css) {
        return ((css.baseVal || css).match(new RegExp('(^|\\s)' + CLASS_PREFIX + '-\\S+', 'g')) || []).join(' ');
Mark Otto's avatar
Mark Otto committed
3104
      }
3105
3106
3107
3108
3109
3110
3111
3112
    }, {
      key: '_fixTitle',
      value: function _fixTitle() {
        var titleType = typeof this.element.getAttribute('data-original-title');
        if (this.element.getAttribute('title') || titleType !== 'string') {
          this.element.setAttribute('data-original-title', this.element.getAttribute('title') || '');
          this.element.setAttribute('title', '');
        }
Mark Otto's avatar
Mark Otto committed
3113
      }
3114
3115
3116
3117
    }, {
      key: '_enter',
      value: function _enter(event, context) {
        var dataKey = this.constructor.DATA_KEY;
XhmikosR's avatar
XhmikosR committed
3118

3119
        context = context || $(event.currentTarget).data(dataKey);
XhmikosR's avatar
XhmikosR committed
3120

3121
3122
3123
3124
        if (!context) {
          context = new this.constructor(event.currentTarget, this._getDelegateConfig());
          $(event.currentTarget).data(dataKey, context);
        }
XhmikosR's avatar
XhmikosR committed
3125

3126
3127
3128
        if (event) {
          context._activeTrigger[event.type == 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true;
        }
XhmikosR's avatar
XhmikosR committed
3129

3130
3131
3132
3133
        if ($(context.getTipElement()).hasClass(ClassName.IN) || context._hoverState === HoverState.IN) {
          context._hoverState = HoverState.IN;
          return;
        }
XhmikosR's avatar
XhmikosR committed
3134

3135
        clearTimeout(context._timeout);
XhmikosR's avatar
XhmikosR committed
3136

3137
        context._hoverState = HoverState.IN;
XhmikosR's avatar
XhmikosR committed
3138

3139
3140
3141
3142
        if (!context.config.delay || !context.config.delay.show) {
          context.show();
          return;
        }
XhmikosR's avatar
XhmikosR committed
3143

3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
        context._timeout = setTimeout(function () {
          if (context._hoverState === HoverState.IN) {
            context.show();
          }
        }, context.config.delay.show);
      }
    }, {
      key: '_leave',
      value: function _leave(event, context) {
        var dataKey = this.constructor.DATA_KEY;
XhmikosR's avatar
XhmikosR committed
3154

3155
        context = context || $(event.currentTarget).data(dataKey);
XhmikosR's avatar
XhmikosR committed
3156

3157
3158
3159
3160
        if (!context) {
          context = new this.constructor(event.currentTarget, this._getDelegateConfig());
          $(event.currentTarget).data(dataKey, context);
        }
XhmikosR's avatar
XhmikosR committed
3161

3162
3163
3164
        if (event) {
          context._activeTrigger[event.type == 'focusout' ? Trigger.FOCUS : Trigger.HOVER] = false;
        }
XhmikosR's avatar
XhmikosR committed
3165

3166
3167
3168
        if (context._isWithActiveTrigger()) {
          return;
        }
XhmikosR's avatar
XhmikosR committed
3169

3170
        clearTimeout(context._timeout);
XhmikosR's avatar
XhmikosR committed
3171

3172
        context._hoverState = HoverState.OUT;
XhmikosR's avatar
XhmikosR committed
3173

3174
3175
3176
3177
        if (!context.config.delay || !context.config.delay.hide) {
          context.hide();
          return;
        }
XhmikosR's avatar
XhmikosR committed
3178

3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
3189
3190
3191
3192
        context._timeout = setTimeout(function () {
          if (context._hoverState === HoverState.OUT) {
            context.hide();
          }
        }, context.config.delay.hide);
      }
    }, {
      key: '_isWithActiveTrigger',
      value: function _isWithActiveTrigger() {
        for (var trigger in this._activeTrigger) {
          if (this._activeTrigger[trigger]) {
            return true;
          }
        }
XhmikosR's avatar
XhmikosR committed
3193

3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
        return false;
      }
    }, {
      key: '_getConfig',
      value: function _getConfig(config) {
        config = $.extend({}, this.constructor.Default, $(this.element).data(), config);

        if (config.delay && typeof config.delay === 'number') {
          config.delay = {
            show: config.delay,
            hide: config.delay
          };
        }
XhmikosR's avatar
XhmikosR committed
3207

3208
        Util.typeCheckConfig(NAME, config, this.constructor.DefaultType);
XhmikosR's avatar
XhmikosR committed
3209

3210
3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
3223
3224
        return config;
      }
    }, {
      key: '_getDelegateConfig',
      value: function _getDelegateConfig() {
        var config = {};

        if (this.config) {
          for (var key in this.config) {
            var value = this.config[key];
            if (this.constructor.Default[key] !== value) {
              config[key] = value;
            }
          }
        }
3225

3226
3227
        return config;
      }
Mark Otto's avatar
grunt    
Mark Otto committed
3228
3229
3230

      // static

Jacob Thornton's avatar
Jacob Thornton committed
3231
3232
    }], [{
      key: '_jQueryInterface',
Mark Otto's avatar
grunt    
Mark Otto committed
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
      value: function _jQueryInterface(config) {
        return this.each(function () {
          var data = $(this).data(DATA_KEY);
          var _config = typeof config === 'object' ? config : null;

          if (!data && /destroy|hide/.test(config)) {
            return;
          }

          if (!data) {
            data = new Tooltip(this, _config);
            $(this).data(DATA_KEY, data);
          }

          if (typeof config === 'string') {
            data[config]();
          }
        });
      }
    }, {
3253
      key: 'VERSION',
Jacob Thornton's avatar
Jacob Thornton committed
3254
      get: function get() {
3255
3256
3257
3258
        return VERSION;
      }
    }, {
      key: 'Default',
Jacob Thornton's avatar
Jacob Thornton committed
3259
      get: function get() {
3260
3261
3262
3263
        return Default;
      }
    }, {
      key: 'NAME',
Jacob Thornton's avatar
Jacob Thornton committed
3264
      get: function get() {
3265
3266
3267
3268
        return NAME;
      }
    }, {
      key: 'DATA_KEY',
Jacob Thornton's avatar
Jacob Thornton committed
3269
      get: function get() {
3270
3271
3272
3273
        return DATA_KEY;
      }
    }, {
      key: 'Event',
Jacob Thornton's avatar
Jacob Thornton committed
3274
      get: function get() {
3275
3276
3277
3278
        return Event;
      }
    }, {
      key: 'EVENT_KEY',
Jacob Thornton's avatar
Jacob Thornton committed
3279
      get: function get() {
3280
3281
3282
3283
        return EVENT_KEY;
      }
    }, {
      key: 'DefaultType',
Jacob Thornton's avatar
Jacob Thornton committed
3284
      get: function get() {
3285
3286
3287
        return DefaultType;
      }
    }]);
XhmikosR's avatar
XhmikosR committed
3288

3289
3290
    return Tooltip;
  })();
XhmikosR's avatar
XhmikosR committed
3291

3292
3293
3294
3295
3296
3297
  $.fn[NAME] = Tooltip._jQueryInterface;
  $.fn[NAME].Constructor = Tooltip;
  $.fn[NAME].noConflict = function () {
    $.fn[NAME] = JQUERY_NO_CONFLICT;
    return Tooltip._jQueryInterface;
  };
XhmikosR's avatar
XhmikosR committed
3298

3299
3300
  return Tooltip;
})(jQuery);
XhmikosR's avatar
XhmikosR committed
3301

Mark Otto's avatar
Mark Otto committed
3302
/**
3303
3304
3305
3306
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356
3357
3358
3359
3360
3361
3362
3363
3364
 * --------------------------------------------------------------------------
 * Bootstrap (v4.0.0): popover.js
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 * --------------------------------------------------------------------------
 */

var Popover = (function ($) {

  /**
   * ------------------------------------------------------------------------
   * Constants
   * ------------------------------------------------------------------------
   */

  var NAME = 'popover';
  var VERSION = '4.0.0';
  var DATA_KEY = 'bs.popover';
  var EVENT_KEY = '.' + DATA_KEY;
  var JQUERY_NO_CONFLICT = $.fn[NAME];

  var Default = $.extend({}, Tooltip.Default, {
    placement: 'right',
    trigger: 'click',
    content: '',
    template: '<div class="popover" role="tooltip">' + '<div class="popover-arrow"></div>' + '<h3 class="popover-title"></h3>' + '<div class="popover-content"></div></div>'
  });

  var DefaultType = $.extend({}, Tooltip.DefaultType, {
    content: '(string|function)'
  });

  var ClassName = {
    FADE: 'fade',
    IN: 'in'
  };

  var Selector = {
    TITLE: '.popover-title',
    CONTENT: '.popover-content',
    ARROW: '.popover-arrow'
  };

  var Event = {
    HIDE: 'hide' + EVENT_KEY,
    HIDDEN: 'hidden' + EVENT_KEY,
    SHOW: 'show' + EVENT_KEY,
    SHOWN: 'shown' + EVENT_KEY,
    INSERTED: 'inserted' + EVENT_KEY,
    CLICK: 'click' + EVENT_KEY,
    FOCUSIN: 'focusin' + EVENT_KEY,
    FOCUSOUT: 'focusout' + EVENT_KEY,
    MOUSEENTER: 'mouseenter' + EVENT_KEY,
    MOUSELEAVE: 'mouseleave' + EVENT_KEY
  };

  /**
   * ------------------------------------------------------------------------
   * Class Definition
   * ------------------------------------------------------------------------
   */

  var Popover = (function (_Tooltip) {
Jacob Thornton's avatar
Jacob Thornton committed
3365
3366
    _inherits(Popover, _Tooltip);

3367
3368
3369
    function Popover() {
      _classCallCheck(this, Popover);

Jacob Thornton's avatar
Jacob Thornton committed
3370
      _get(Object.getPrototypeOf(Popover.prototype), 'constructor', this).apply(this, arguments);
Mark Otto's avatar
Mark Otto committed
3371
    }
XhmikosR's avatar
XhmikosR committed
3372

Jacob Thornton's avatar
Jacob Thornton committed
3373
3374
3375
3376
3377
    /**
     * ------------------------------------------------------------------------
     * jQuery
     * ------------------------------------------------------------------------
     */
XhmikosR's avatar
XhmikosR committed
3378

3379
3380
    _createClass(Popover, [{
      key: 'isWithContent',
XhmikosR's avatar
XhmikosR committed
3381

3382
      // overrides
XhmikosR's avatar
XhmikosR committed
3383

3384
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
      value: function isWithContent() {
        return this.getTitle() || this._getContent();
      }
    }, {
      key: 'getTipElement',
      value: function getTipElement() {
        return this.tip = this.tip || $(this.config.template)[0];
      }
    }, {
      key: 'setContent',
      value: function setContent() {
        var tip = this.getTipElement();
        var title = this.getTitle();
        var content = this._getContent();
        var titleElement = $(tip).find(Selector.TITLE)[0];

        if (titleElement) {
          titleElement[this.config.html ? 'innerHTML' : 'innerText'] = title;
        }
XhmikosR's avatar
XhmikosR committed
3403

3404
3405
        // we use append for html objects to maintain js events
        $(tip).find(Selector.CONTENT).children().detach().end()[this.config.html ? typeof content === 'string' ? 'html' : 'append' : 'text'](content);
XhmikosR's avatar
XhmikosR committed
3406

3407
        $(tip).removeClass(ClassName.FADE).removeClass(ClassName.IN);
XhmikosR's avatar
XhmikosR committed
3408

3409
        this.cleanupTether();
Mark Otto's avatar
Mark Otto committed
3410
      }
XhmikosR's avatar
XhmikosR committed
3411

3412
      // private
XhmikosR's avatar
XhmikosR committed
3413

Jacob Thornton's avatar
Jacob Thornton committed
3414
3415
    }, {
      key: '_getContent',
3416
3417
3418
      value: function _getContent() {
        return this.element.getAttribute('data-content') || (typeof this.config.content == 'function' ? this.config.content.call(this.element) : this.config.content);
      }
Mark Otto's avatar
grunt    
Mark Otto committed
3419
3420
3421

      // static

Jacob Thornton's avatar
Jacob Thornton committed
3422
3423
    }], [{
      key: '_jQueryInterface',
Mark Otto's avatar
grunt    
Mark Otto committed
3424
3425
3426
3427
3428
3429
3430
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
      value: function _jQueryInterface(config) {
        return this.each(function () {
          var data = $(this).data(DATA_KEY);
          var _config = typeof config === 'object' ? config : null;

          if (!data && /destroy|hide/.test(config)) {
            return;
          }

          if (!data) {
            data = new Popover(this, _config);
            $(this).data(DATA_KEY, data);
          }

          if (typeof config === 'string') {
            data[config]();
          }
        });
      }
    }, {
3444
      key: 'VERSION',
XhmikosR's avatar
XhmikosR committed
3445

3446
      // getters
XhmikosR's avatar
XhmikosR committed
3447

Jacob Thornton's avatar
Jacob Thornton committed
3448
      get: function get() {
3449
3450
3451
3452
        return VERSION;
      }
    }, {
      key: 'Default',
Jacob Thornton's avatar
Jacob Thornton committed
3453
      get: function get() {
3454
3455
3456
3457
        return Default;
      }
    }, {
      key: 'NAME',
Jacob Thornton's avatar
Jacob Thornton committed
3458
      get: function get() {
3459
3460
3461
3462
        return NAME;
      }
    }, {
      key: 'DATA_KEY',
Jacob Thornton's avatar
Jacob Thornton committed
3463
      get: function get() {
3464
3465
3466
3467
        return DATA_KEY;
      }
    }, {
      key: 'Event',
Jacob Thornton's avatar
Jacob Thornton committed
3468
      get: function get() {
3469
3470
3471
3472
        return Event;
      }
    }, {
      key: 'EVENT_KEY',
Jacob Thornton's avatar
Jacob Thornton committed
3473
      get: function get() {
3474
3475
3476
3477
        return EVENT_KEY;
      }
    }, {
      key: 'DefaultType',
Jacob Thornton's avatar
Jacob Thornton committed
3478
      get: function get() {
3479
3480
3481
        return DefaultType;
      }
    }]);
XhmikosR's avatar
XhmikosR committed
3482

3483
3484
    return Popover;
  })(Tooltip);
XhmikosR's avatar
XhmikosR committed
3485

3486
3487
3488
3489
3490
3491
  $.fn[NAME] = Popover._jQueryInterface;
  $.fn[NAME].Constructor = Popover;
  $.fn[NAME].noConflict = function () {
    $.fn[NAME] = JQUERY_NO_CONFLICT;
    return Popover._jQueryInterface;
  };
XhmikosR's avatar
XhmikosR committed
3492

3493
3494
  return Popover;
})(jQuery);
XhmikosR's avatar
XhmikosR committed
3495

3496
}(jQuery);
For faster browsing, not all history is shown. View entire blame