2013-09-11 02:21:44 +00:00
/ * !
2015-01-19 22:55:25 +00:00
* Bootstrap v4 . 0.0 - alpha ( http : //getbootstrap.com)
2015-01-01 20:02:02 +00:00
* Copyright 2011 - 2015 Twitter , Inc .
2013-12-18 23:08:16 +00:00
* Licensed under MIT ( https : //github.com/twbs/bootstrap/blob/master/LICENSE)
2015-08-15 19:17:13 +00:00
* / ' u s e s t r i c t ' ; i f ( t y p e o f j Q u e r y = = = ' u n d e f i n e d ' ) {
throw new Error ( 'Bootstrap\'s JavaScript requires jQuery' ) ;
} + ( function ( $ ) {
var version = $ . fn . jquery . split ( ' ' ) [ 0 ] . split ( '.' ) ; if ( version [ 0 ] < 2 && version [ 1 ] < 9 || version [ 0 ] == 1 && version [ 1 ] == 9 && version [ 2 ] < 1 ) {
throw new Error ( 'Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher' ) ;
2015-08-13 04:17:43 +00:00
}
2015-08-15 19:17:13 +00:00
} ) ( jQuery ) ; + ( function ( $ ) {
/ * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* Bootstrap ( v4 . 0.0 ) : util . js
* Licensed under MIT ( https : //github.com/twbs/bootstrap/blob/master/LICENSE)
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* / ' u s e s t r i c t ' ; v a r _ g e t = f u n c t i o n g e t ( _ x , _ x 2 , _ x 3 ) {
var _again = true ; _function : while ( _again ) {
var object = _x ,
property = _x2 ,
receiver = _x3 ; desc = parent = getter = undefined ; _again = false ; if ( object === null ) object = Function . prototype ; var desc = Object . getOwnPropertyDescriptor ( object , property ) ; if ( desc === undefined ) {
var parent = Object . getPrototypeOf ( object ) ; if ( parent === null ) {
return undefined ;
} else {
_x = parent ; _x2 = property ; _x3 = receiver ; _again = true ; continue _function ;
2015-08-13 04:17:43 +00:00
}
2015-08-15 19:17:13 +00:00
} else if ( 'value' in desc ) {
return desc . value ;
} else {
var getter = desc . get ; if ( getter === undefined ) {
return undefined ;
} return getter . call ( receiver ) ;
2015-08-13 04:17:43 +00:00
}
}
2015-08-15 19:17:13 +00:00
} ; var _createClass = ( function ( ) {
function defineProperties ( target , props ) {
for ( var i = 0 ; i < props . length ; i ++ ) {
var descriptor = props [ i ] ; descriptor . enumerable = descriptor . enumerable || false ; descriptor . configurable = true ; if ( 'value' in descriptor ) descriptor . writable = true ; Object . defineProperty ( target , descriptor . key , descriptor ) ;
}
} return function ( Constructor , protoProps , staticProps ) {
if ( protoProps ) defineProperties ( Constructor . prototype , protoProps ) ; if ( staticProps ) defineProperties ( Constructor , staticProps ) ; return Constructor ;
} ;
} ) ( ) ; function _inherits ( subClass , superClass ) {
if ( typeof superClass !== 'function' && superClass !== null ) {
throw new TypeError ( 'Super expression must either be null or a function, not ' + typeof superClass ) ;
} subClass . prototype = Object . create ( superClass && superClass . prototype , { constructor : { value : subClass , enumerable : false , writable : true , configurable : true } } ) ; if ( superClass ) Object . setPrototypeOf ? Object . setPrototypeOf ( subClass , superClass ) : subClass . _ _proto _ _ = superClass ;
} function _classCallCheck ( instance , Constructor ) {
if ( ! ( instance instanceof Constructor ) ) {
throw new TypeError ( 'Cannot call a class as a function' ) ;
2015-08-13 04:17:43 +00:00
}
2015-08-15 19:17:13 +00:00
} var Util = ( function ( $ ) {
2015-08-13 04:17:43 +00:00
/ * *
2015-08-15 19:17:13 +00:00
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* Private TransitionEnd Helpers
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* /var transition = false;var TransitionEndEvent = { WebkitTransition: 'webkitTransitionEnd', MozTransition: 'transitionend', OTransition: 'oTransitionEnd otransitionend', transition: 'transitionend' }; / / shoutout AngusCroll ( https : //goo.gl/pxwQGp)
function toType ( obj ) {
return ( { } ) . toString . call ( obj ) . match ( /\s([a-zA-Z]+)/ ) [ 1 ] . toLowerCase ( ) ;
} function isElement ( obj ) {
return ( obj [ 0 ] || obj ) . nodeType ;
} function getSpecialTransitionEndEvent ( ) {
return { bindType : transition . end , delegateType : transition . end , handle : function handle ( event ) {
if ( $ ( event . target ) . is ( this ) ) {
return event . handleObj . handler . apply ( this , arguments ) ;
}
} } ;
} function transitionEndTest ( ) {
if ( window . QUnit ) {
return false ;
} var el = document . createElement ( 'bootstrap' ) ; for ( var name in TransitionEndEvent ) {
if ( el . style [ name ] !== undefined ) {
return { end : TransitionEndEvent [ name ] } ;
}
} return false ;
} function transitionEndEmulator ( duration ) {
var _this = this ; var called = false ; $ ( this ) . one ( Util . TRANSITION _END , function ( ) {
called = true ;
} ) ; setTimeout ( function ( ) {
if ( ! called ) {
Util . triggerTransitionEnd ( _this ) ;
}
} , duration ) ; return this ;
} function setTransitionEndSupport ( ) {
transition = transitionEndTest ( ) ; $ . fn . emulateTransitionEnd = transitionEndEmulator ; if ( Util . supportsTransitionEnd ( ) ) {
$ . event . special [ Util . TRANSITION _END ] = getSpecialTransitionEndEvent ( ) ;
}
} / * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* Public Util Api
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* / v a r U t i l = { T R A N S I T I O N _ E N D : ' b s T r a n s i t i o n E n d ' , g e t U I D : f u n c t i o n g e t U I D ( p r e f i x ) {
do prefix += ~ ~ ( Math . random ( ) * 1000000 ) ; while ( document . getElementById ( prefix ) ) ; return prefix ;
} , getSelectorFromElement : function getSelectorFromElement ( element ) {
var selector = element . getAttribute ( 'data-target' ) ; if ( ! selector ) {
selector = element . getAttribute ( 'href' ) || '' ; selector = /^#[a-z]/i . test ( selector ) ? selector : null ;
} return selector ;
} , reflow : function reflow ( element ) {
new Function ( 'bs' , 'return bs' ) ( element . offsetHeight ) ;
} , triggerTransitionEnd : function triggerTransitionEnd ( element ) {
$ ( element ) . trigger ( transition . end ) ;
} , supportsTransitionEnd : function supportsTransitionEnd ( ) {
return ! ! transition ;
} , typeCheckConfig : function typeCheckConfig ( componentName , config , configTypes ) {
for ( var property in configTypes ) {
var expectedTypes = configTypes [ property ] ; var value = config [ property ] ; var valueType = undefined ; if ( value && isElement ( value ) ) valueType = 'element' ; else valueType = toType ( value ) ; if ( ! new RegExp ( expectedTypes ) . test ( valueType ) ) {
throw new Error ( componentName . toUpperCase ( ) + ': ' + ( 'Option "' + property + '" provided type "' + valueType + '" ' ) + ( 'but expected type "' + expectedTypes + '".' ) ) ;
2015-08-13 04:17:43 +00:00
}
}
2015-08-15 19:17:13 +00:00
} } ; setTransitionEndSupport ( ) ; return Util ;
} ) ( jQuery ) ; / * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* Bootstrap ( v4 . 0.0 ) : alert . js
* Licensed under MIT ( https : //github.com/twbs/bootstrap/blob/master/LICENSE)
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* / v a r A l e r t = ( f u n c t i o n ( $ ) {
/ * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* Constants
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* /var NAME = 'alert';var VERSION = '4.0.0';var DATA_KEY = 'bs.alert';var EVENT_KEY = '.' + DATA_KEY;var DATA_API_KEY = '.data-api';var JQUERY_NO_CONFLICT = $.fn[NAME];var TRANSITION_DURATION = 150;var Selector = { DISMISS: '[data-dismiss="alert"]' };var Event = { CLOSE: 'close' + EVENT_KEY, CLOSED: 'closed' + EVENT_KEY, CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY };var ClassName = { ALERT: 'alert', FADE: 'fade', IN: 'in' }; / * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* Class Definition
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* / v a r A l e r t = ( f u n c t i o n ( ) {
function Alert ( element ) {
_classCallCheck ( this , Alert ) ; this . _element = element ;
} / * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* Data Api implementation
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* / / / getters
_createClass ( Alert , [ { key : 'close' , // public
value : function close ( element ) {
element = element || this . _element ; var rootElement = this . _getRootElement ( element ) ; var customEvent = this . _triggerCloseEvent ( rootElement ) ; if ( customEvent . isDefaultPrevented ( ) ) {
return ;
} this . _removeElement ( rootElement ) ;
} } , { key : 'dispose' , value : function dispose ( ) {
$ . removeData ( this . _element , DATA _KEY ) ; this . _element = null ;
} // private
} , { key : '_getRootElement' , value : function _getRootElement ( element ) {
var parent = false ; var selector = Util . getSelectorFromElement ( element ) ; if ( selector ) {
parent = $ ( selector ) [ 0 ] ;
} if ( ! parent ) {
parent = $ ( element ) . closest ( '.' + ClassName . ALERT ) [ 0 ] ;
} return parent ;
} } , { key : '_triggerCloseEvent' , value : function _triggerCloseEvent ( element ) {
var closeEvent = $ . Event ( Event . CLOSE ) ; $ ( element ) . trigger ( closeEvent ) ; return closeEvent ;
} } , { key : '_removeElement' , value : function _removeElement ( element ) {
$ ( element ) . removeClass ( ClassName . IN ) ; if ( ! Util . supportsTransitionEnd ( ) || ! $ ( element ) . hasClass ( ClassName . FADE ) ) {
this . _destroyElement ( element ) ; return ;
} $ ( element ) . one ( Util . TRANSITION _END , this . _destroyElement . bind ( this , element ) ) . emulateTransitionEnd ( TRANSITION _DURATION ) ;
} } , { key : '_destroyElement' , value : function _destroyElement ( element ) {
$ ( element ) . detach ( ) . trigger ( Event . CLOSED ) . remove ( ) ;
} // static
} ] , [ { key : '_jQueryInterface' , value : function _jQueryInterface ( config ) {
return this . each ( function ( ) {
var $element = $ ( this ) ; var data = $element . data ( DATA _KEY ) ; if ( ! data ) {
data = new Alert ( this ) ; $element . data ( DATA _KEY , data ) ;
} if ( config === 'close' ) {
data [ config ] ( this ) ;
}
2015-08-13 04:17:43 +00:00
} ) ;
2015-08-15 19:17:13 +00:00
} } , { key : '_handleDismiss' , value : function _handleDismiss ( alertInstance ) {
return function ( event ) {
if ( event ) {
event . preventDefault ( ) ;
} alertInstance . close ( this ) ;
} ;
} } , { key : 'VERSION' , get : function get ( ) {
return VERSION ;
} } ] ) ; return Alert ;
} ) ( ) ; $ ( document ) . on ( Event . CLICK _DATA _API , Selector . DISMISS , Alert . _handleDismiss ( new Alert ( ) ) ) ; / * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* jQuery
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* / $ . f n [ N A M E ] = A l e r t . _ j Q u e r y I n t e r f a c e ; $ . f n [ N A M E ] . C o n s t r u c t o r = A l e r t ; $ . f n [ N A M E ] . n o C o n f l i c t = f u n c t i o n ( ) {
$ . fn [ NAME ] = JQUERY _NO _CONFLICT ; return Alert . _jQueryInterface ;
} ; return Alert ;
} ) ( jQuery ) ; / * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* Bootstrap ( v4 . 0.0 ) : button . js
* Licensed under MIT ( https : //github.com/twbs/bootstrap/blob/master/LICENSE)
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* / v a r B u t t o n = ( f u n c t i o n ( $ ) {
/ * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* Constants
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* /var NAME = 'button';var VERSION = '4.0.0';var DATA_KEY = 'bs.button';var EVENT_KEY = '.' + DATA_KEY;var DATA_API_KEY = '.data-api';var JQUERY_NO_CONFLICT = $.fn[NAME];var TRANSITION_DURATION = 150;var ClassName = { ACTIVE: 'active', BUTTON: 'btn', FOCUS: 'focus' };var Selector = { DATA_TOGGLE_CARROT: '[data-toggle^="button"]', DATA_TOGGLE: '[data-toggle="buttons"]', INPUT: 'input', ACTIVE: '.active', BUTTON: '.btn' };var Event = { CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY, FOCUS_BLUR_DATA_API: 'focus' + EVENT_KEY + DATA_API_KEY + ' ' + ('blur' + EVENT_KEY + DATA_API_KEY) }; / * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* Class Definition
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* / v a r B u t t o n = ( f u n c t i o n ( ) {
function Button ( element ) {
_classCallCheck ( this , Button ) ; this . _element = element ;
} / * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* Data Api implementation
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* / / / getters
_createClass ( Button , [ { key : 'toggle' , // public
value : function toggle ( ) {
var triggerChangeEvent = true ; var rootElement = $ ( this . _element ) . closest ( Selector . DATA _TOGGLE ) [ 0 ] ; if ( rootElement ) {
var input = $ ( this . _element ) . find ( Selector . INPUT ) [ 0 ] ; if ( input ) {
if ( input . type === 'radio' ) {
if ( input . checked && $ ( this . _element ) . hasClass ( ClassName . ACTIVE ) ) {
triggerChangeEvent = false ;
} else {
var activeElement = $ ( rootElement ) . find ( Selector . ACTIVE ) [ 0 ] ; if ( activeElement ) {
$ ( activeElement ) . removeClass ( ClassName . ACTIVE ) ;
}
}
} if ( triggerChangeEvent ) {
input . checked = ! $ ( this . _element ) . hasClass ( ClassName . ACTIVE ) ; $ ( this . _element ) . trigger ( 'change' ) ;
}
}
} else {
this . _element . setAttribute ( 'aria-pressed' , ! $ ( this . _element ) . hasClass ( ClassName . ACTIVE ) ) ;
} if ( triggerChangeEvent ) {
$ ( this . _element ) . toggleClass ( ClassName . ACTIVE ) ;
}
} } , { key : 'dispose' , value : function dispose ( ) {
$ . removeData ( this . _element , DATA _KEY ) ; this . _element = null ;
} // static
} ] , [ { key : '_jQueryInterface' , value : function _jQueryInterface ( config ) {
return this . each ( function ( ) {
var data = $ ( this ) . data ( DATA _KEY ) ; if ( ! data ) {
data = new Button ( this ) ; $ ( this ) . data ( DATA _KEY , data ) ;
} if ( config === 'toggle' ) {
data [ config ] ( ) ;
}
2015-08-13 04:17:43 +00:00
} ) ;
2015-08-15 19:17:13 +00:00
} } , { key : 'VERSION' , get : function get ( ) {
return VERSION ;
} } ] ) ; return Button ;
} ) ( ) ; $ ( document ) . on ( Event . CLICK _DATA _API , Selector . DATA _TOGGLE _CARROT , function ( event ) {
event . preventDefault ( ) ; var button = event . target ; if ( ! $ ( button ) . hasClass ( ClassName . BUTTON ) ) {
button = $ ( button ) . closest ( Selector . BUTTON ) ;
} Button . _jQueryInterface . call ( $ ( button ) , 'toggle' ) ;
} ) . on ( Event . FOCUS _BLUR _DATA _API , Selector . DATA _TOGGLE _CARROT , function ( event ) {
var button = $ ( event . target ) . closest ( Selector . BUTTON ) [ 0 ] ; $ ( button ) . toggleClass ( ClassName . FOCUS , /^focus(in)?$/ . test ( event . type ) ) ;
} ) ; / * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* jQuery
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* / $ . f n [ N A M E ] = B u t t o n . _ j Q u e r y I n t e r f a c e ; $ . f n [ N A M E ] . C o n s t r u c t o r = B u t t o n ; $ . f n [ N A M E ] . n o C o n f l i c t = f u n c t i o n ( ) {
$ . fn [ NAME ] = JQUERY _NO _CONFLICT ; return Button . _jQueryInterface ;
} ; return Button ;
} ) ( jQuery ) ; / * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* Bootstrap ( v4 . 0.0 ) : carousel . js
* Licensed under MIT ( https : //github.com/twbs/bootstrap/blob/master/LICENSE)
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* / v a r C a r o u s e l = ( f u n c t i o n ( $ ) {
/ * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* Constants
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* /var NAME = 'carousel';var VERSION = '4.0.0';var DATA_KEY = 'bs.carousel';var EVENT_KEY = '.' + DATA_KEY;var DATA_API_KEY = '.data-api';var JQUERY_NO_CONFLICT = $.fn[NAME];var TRANSITION_DURATION = 600;var Default = { interval: 5000, keyboard: true, slide: false, pause: 'hover', wrap: true };var DefaultType = { interval: '(number|boolean)', keyboard: 'boolean', slide: '(boolean|string)', pause: '(string|boolean)', wrap: 'boolean' };var Direction = { NEXT: 'next', PREVIOUS: 'prev' };var Event = { SLIDE: 'slide' + EVENT_KEY, SLID: 'slid' + EVENT_KEY, KEYDOWN: 'keydown' + EVENT_KEY, MOUSEENTER: 'mouseenter' + EVENT_KEY, MOUSELEAVE: 'mouseleave' + EVENT_KEY, LOAD_DATA_API: 'load' + EVENT_KEY + DATA_API_KEY, CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY };var ClassName = { CAROUSEL: 'carousel', ACTIVE: 'active', SLIDE: 'slide', RIGHT: 'right', LEFT: 'left', ITEM: 'carousel-item' };var Selector = { ACTIVE: '.active', ACTIVE_ITEM: '.active.carousel-item', ITEM: '.carousel-item', NEXT_PREV: '.next, .prev', INDICATORS: '.carousel-indicators', DATA_SLIDE: '[data-slide], [data-slide-to]', DATA_RIDE: '[data-ride="carousel"]' }; / * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* Class Definition
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* / v a r C a r o u s e l = ( f u n c t i o n ( ) {
function Carousel ( element , config ) {
_classCallCheck ( this , Carousel ) ; this . _items = null ; this . _interval = null ; this . _activeElement = null ; this . _isPaused = false ; this . _isSliding = false ; this . _config = this . _getConfig ( config ) ; this . _element = $ ( element ) [ 0 ] ; this . _indicatorsElement = $ ( this . _element ) . find ( Selector . INDICATORS ) [ 0 ] ; this . _addEventListeners ( ) ;
} / * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* Data Api implementation
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* / / / getters
_createClass ( Carousel , [ { key : 'next' , // public
value : function next ( ) {
if ( ! this . _isSliding ) {
this . _slide ( Direction . NEXT ) ;
2015-08-13 04:17:43 +00:00
}
2015-08-15 19:17:13 +00:00
} } , { key : 'prev' , value : function prev ( ) {
if ( ! this . _isSliding ) {
this . _slide ( Direction . PREVIOUS ) ;
2015-08-13 04:17:43 +00:00
}
2015-08-15 19:17:13 +00:00
} } , { key : 'pause' , value : function pause ( event ) {
if ( ! event ) {
this . _isPaused = true ;
} if ( $ ( this . _element ) . find ( Selector . NEXT _PREV ) [ 0 ] && Util . supportsTransitionEnd ( ) ) {
Util . triggerTransitionEnd ( this . _element ) ; this . cycle ( true ) ;
} clearInterval ( this . _interval ) ; this . _interval = null ;
} } , { key : 'cycle' , value : function cycle ( event ) {
if ( ! event ) {
this . _isPaused = false ;
} if ( this . _interval ) {
clearInterval ( this . _interval ) ; this . _interval = null ;
} if ( this . _config . interval && ! this . _isPaused ) {
this . _interval = setInterval ( $ . proxy ( this . next , this ) , this . _config . interval ) ;
2015-08-13 04:17:43 +00:00
}
2015-08-15 19:17:13 +00:00
} } , { key : 'to' , value : function to ( index ) {
var _this2 = this ; this . _activeElement = $ ( this . _element ) . find ( Selector . ACTIVE _ITEM ) [ 0 ] ; var activeIndex = this . _getItemIndex ( this . _activeElement ) ; if ( index > this . _items . length - 1 || index < 0 ) {
return ;
} if ( this . _isSliding ) {
$ ( this . _element ) . one ( Event . SLID , function ( ) {
return _this2 . to ( index ) ;
} ) ; return ;
} if ( activeIndex == index ) {
this . pause ( ) ; this . cycle ( ) ; return ;
} var direction = index > activeIndex ? Direction . NEXT : Direction . PREVIOUS ; this . _slide ( direction , this . _items [ index ] ) ;
} } , { key : 'dispose' , value : function dispose ( ) {
$ ( this . _element ) . off ( EVENT _KEY ) ; $ . removeData ( this . _element , DATA _KEY ) ; this . _items = null ; this . _config = null ; this . _element = null ; this . _interval = null ; this . _isPaused = null ; this . _isSliding = null ; this . _activeElement = null ; this . _indicatorsElement = null ;
} // private
} , { key : '_getConfig' , value : function _getConfig ( config ) {
config = $ . extend ( { } , Default , config ) ; Util . typeCheckConfig ( NAME , config , DefaultType ) ; return config ;
} } , { key : '_addEventListeners' , value : function _addEventListeners ( ) {
if ( this . _config . keyboard ) {
$ ( this . _element ) . on ( Event . KEYDOWN , $ . proxy ( this . _keydown , this ) ) ;
} if ( this . _config . pause == 'hover' && ! ( 'ontouchstart' in document . documentElement ) ) {
$ ( this . _element ) . on ( Event . MOUSEENTER , $ . proxy ( this . pause , this ) ) . on ( Event . MOUSELEAVE , $ . proxy ( this . cycle , this ) ) ;
2015-08-13 04:17:43 +00:00
}
2015-08-15 19:17:13 +00:00
} } , { key : '_keydown' , value : function _keydown ( event ) {
event . preventDefault ( ) ; if ( /input|textarea/i . test ( event . target . tagName ) ) return ; switch ( event . which ) { case 37 :
this . prev ( ) ; break ; case 39 :
this . next ( ) ; break ; default :
return ; }
} } , { key : '_getItemIndex' , value : function _getItemIndex ( element ) {
this . _items = $ . makeArray ( $ ( element ) . parent ( ) . find ( Selector . ITEM ) ) ; return this . _items . indexOf ( element ) ;
} } , { key : '_getItemByDirection' , value : function _getItemByDirection ( direction , activeElement ) {
var isNextDirection = direction === Direction . NEXT ; var isPrevDirection = direction === Direction . PREVIOUS ; var activeIndex = this . _getItemIndex ( activeElement ) ; var lastItemIndex = this . _items . length - 1 ; var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex == lastItemIndex ; if ( isGoingToWrap && ! this . _config . wrap ) {
return activeElement ;
} var delta = direction == Direction . PREVIOUS ? - 1 : 1 ; var itemIndex = ( activeIndex + delta ) % this . _items . length ; return itemIndex === - 1 ? this . _items [ this . _items . length - 1 ] : this . _items [ itemIndex ] ;
} } , { key : '_triggerSlideEvent' , value : function _triggerSlideEvent ( relatedTarget , directionalClassname ) {
var slideEvent = $ . Event ( Event . SLIDE , { relatedTarget : relatedTarget , direction : directionalClassname } ) ; $ ( this . _element ) . trigger ( slideEvent ) ; return slideEvent ;
} } , { key : '_setActiveIndicatorElement' , value : function _setActiveIndicatorElement ( element ) {
if ( this . _indicatorsElement ) {
$ ( this . _indicatorsElement ) . find ( Selector . ACTIVE ) . removeClass ( ClassName . ACTIVE ) ; var nextIndicator = this . _indicatorsElement . children [ this . _getItemIndex ( element ) ] ; if ( nextIndicator ) {
$ ( nextIndicator ) . addClass ( ClassName . ACTIVE ) ;
}
2015-08-13 04:17:43 +00:00
}
2015-08-15 19:17:13 +00:00
} } , { key : '_slide' , value : function _slide ( direction , element ) {
var _this3 = this ; var activeElement = $ ( this . _element ) . find ( Selector . ACTIVE _ITEM ) [ 0 ] ; var nextElement = element || activeElement && this . _getItemByDirection ( direction , activeElement ) ; var isCycling = ! ! this . _interval ; var directionalClassName = direction == Direction . NEXT ? ClassName . LEFT : ClassName . RIGHT ; if ( nextElement && $ ( nextElement ) . hasClass ( ClassName . ACTIVE ) ) {
this . _isSliding = false ; return ;
} var slideEvent = this . _triggerSlideEvent ( nextElement , directionalClassName ) ; if ( slideEvent . isDefaultPrevented ( ) ) {
return ;
} if ( ! activeElement || ! nextElement ) {
// some weirdness is happening, so we bail
return ;
} this . _isSliding = true ; if ( isCycling ) {
this . pause ( ) ;
} this . _setActiveIndicatorElement ( nextElement ) ; var slidEvent = $ . Event ( Event . SLID , { relatedTarget : nextElement , direction : directionalClassName } ) ; if ( Util . supportsTransitionEnd ( ) && $ ( this . _element ) . hasClass ( ClassName . SLIDE ) ) {
$ ( nextElement ) . addClass ( direction ) ; Util . reflow ( nextElement ) ; $ ( activeElement ) . addClass ( directionalClassName ) ; $ ( nextElement ) . addClass ( directionalClassName ) ; $ ( activeElement ) . one ( Util . TRANSITION _END , function ( ) {
$ ( nextElement ) . removeClass ( directionalClassName ) . removeClass ( direction ) ; $ ( nextElement ) . addClass ( ClassName . ACTIVE ) ; $ ( activeElement ) . removeClass ( ClassName . ACTIVE ) . removeClass ( direction ) . removeClass ( directionalClassName ) ; _this3 . _isSliding = false ; setTimeout ( function ( ) {
return $ ( _this3 . _element ) . trigger ( slidEvent ) ;
} , 0 ) ;
} ) . emulateTransitionEnd ( TRANSITION _DURATION ) ;
} else {
$ ( activeElement ) . removeClass ( ClassName . ACTIVE ) ; $ ( nextElement ) . addClass ( ClassName . ACTIVE ) ; this . _isSliding = false ; $ ( this . _element ) . trigger ( slidEvent ) ;
} if ( isCycling ) {
this . cycle ( ) ;
2015-08-13 04:17:43 +00:00
}
2015-08-15 19:17:13 +00:00
} // static
} ] , [ { key : '_jQueryInterface' , value : function _jQueryInterface ( config ) {
return this . each ( function ( ) {
var data = $ ( this ) . data ( DATA _KEY ) ; var _config = $ . extend ( { } , Default , $ ( this ) . data ( ) ) ; if ( typeof config === 'object' ) {
$ . extend ( _config , config ) ;
} var action = typeof config === 'string' ? config : _config . slide ; if ( ! data ) {
data = new Carousel ( this , _config ) ; $ ( this ) . data ( DATA _KEY , data ) ;
} if ( typeof config == 'number' ) {
data . to ( config ) ;
} else if ( action ) {
data [ action ] ( ) ;
} else if ( _config . interval ) {
data . pause ( ) ; data . cycle ( ) ;
}
} ) ;
} } , { key : '_dataApiClickHandler' , value : function _dataApiClickHandler ( event ) {
var selector = Util . getSelectorFromElement ( this ) ; if ( ! selector ) {
return ;
} var target = $ ( selector ) [ 0 ] ; if ( ! target || ! $ ( target ) . hasClass ( ClassName . CAROUSEL ) ) {
return ;
} var config = $ . extend ( { } , $ ( target ) . data ( ) , $ ( this ) . data ( ) ) ; var slideIndex = this . getAttribute ( 'data-slide-to' ) ; if ( slideIndex ) {
config . interval = false ;
} Carousel . _jQueryInterface . call ( $ ( target ) , config ) ; if ( slideIndex ) {
$ ( target ) . data ( DATA _KEY ) . to ( slideIndex ) ;
} event . preventDefault ( ) ;
} } , { key : 'VERSION' , get : function get ( ) {
return VERSION ;
} } , { key : 'Default' , get : function get ( ) {
return Default ;
} } ] ) ; return Carousel ;
} ) ( ) ; $ ( document ) . on ( Event . CLICK _DATA _API , Selector . DATA _SLIDE , Carousel . _dataApiClickHandler ) ; $ ( window ) . on ( Event . LOAD _DATA _API , function ( ) {
$ ( Selector . DATA _RIDE ) . each ( function ( ) {
var $carousel = $ ( this ) ; Carousel . _jQueryInterface . call ( $carousel , $carousel . data ( ) ) ;
} ) ;
} ) ; / * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* jQuery
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* / $ . f n [ N A M E ] = C a r o u s e l . _ j Q u e r y I n t e r f a c e ; $ . f n [ N A M E ] . C o n s t r u c t o r = C a r o u s e l ; $ . f n [ N A M E ] . n o C o n f l i c t = f u n c t i o n ( ) {
$ . fn [ NAME ] = JQUERY _NO _CONFLICT ; return Carousel . _jQueryInterface ;
} ; return Carousel ;
} ) ( jQuery ) ; / * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* Bootstrap ( v4 . 0.0 ) : collapse . js
* Licensed under MIT ( https : //github.com/twbs/bootstrap/blob/master/LICENSE)
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* / v a r C o l l a p s e = ( f u n c t i o n ( $ ) {
2015-08-13 04:17:43 +00:00
/ * *
2015-08-15 19:17:13 +00:00
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* Constants
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* /var NAME = 'collapse';var VERSION = '4.0.0';var DATA_KEY = 'bs.collapse';var EVENT_KEY = '.' + DATA_KEY;var DATA_API_KEY = '.data-api';var JQUERY_NO_CONFLICT = $.fn[NAME];var TRANSITION_DURATION = 600;var Default = { toggle: true, parent: '' };var DefaultType = { toggle: 'boolean', parent: 'string' };var Event = { SHOW: 'show' + EVENT_KEY, SHOWN: 'shown' + EVENT_KEY, HIDE: 'hide' + EVENT_KEY, HIDDEN: 'hidden' + EVENT_KEY, CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY };var ClassName = { IN: 'in', COLLAPSE: 'collapse', COLLAPSING: 'collapsing', COLLAPSED: 'collapsed' };var Dimension = { WIDTH: 'width', HEIGHT: 'height' };var Selector = { ACTIVES: '.panel > .in, .panel > .collapsing', DATA_TOGGLE: '[data-toggle="collapse"]' }; / * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* Class Definition
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* / v a r C o l l a p s e = ( f u n c t i o n ( ) {
function Collapse ( element , config ) {
_classCallCheck ( this , Collapse ) ; this . _isTransitioning = false ; this . _element = element ; this . _config = this . _getConfig ( config ) ; this . _triggerArray = $ . makeArray ( $ ( '[data-toggle="collapse"][href="#' + element . id + '"],' + ( '[data-toggle="collapse"][data-target="#' + element . id + '"]' ) ) ) ; this . _parent = this . _config . parent ? this . _getParent ( ) : null ; if ( ! this . _config . parent ) {
this . _addAriaAndCollapsedClass ( this . _element , this . _triggerArray ) ;
} if ( this . _config . toggle ) {
this . toggle ( ) ;
}
} / * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* Data Api implementation
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* / / / getters
_createClass ( Collapse , [ { key : 'toggle' , // public
value : function toggle ( ) {
if ( $ ( this . _element ) . hasClass ( ClassName . IN ) ) {
this . hide ( ) ;
2015-08-13 04:17:43 +00:00
} else {
2015-08-15 19:17:13 +00:00
this . show ( ) ;
2015-08-13 04:17:43 +00:00
}
2015-08-15 19:17:13 +00:00
} } , { key : 'show' , value : function show ( ) {
var _this4 = this ; if ( this . _isTransitioning || $ ( this . _element ) . hasClass ( ClassName . IN ) ) {
2015-08-13 04:17:43 +00:00
return ;
2015-08-15 19:17:13 +00:00
} var actives = undefined ; var activesData = undefined ; if ( this . _parent ) {
actives = $ . makeArray ( $ ( Selector . ACTIVES ) ) ; if ( ! actives . length ) {
actives = null ;
}
} if ( actives ) {
activesData = $ ( actives ) . data ( DATA _KEY ) ; if ( activesData && activesData . _isTransitioning ) {
return ;
}
} var startEvent = $ . Event ( Event . SHOW ) ; $ ( this . _element ) . trigger ( startEvent ) ; if ( startEvent . isDefaultPrevented ( ) ) {
return ;
} if ( actives ) {
Collapse . _jQueryInterface . call ( $ ( actives ) , 'hide' ) ; if ( ! activesData ) {
$ ( actives ) . data ( DATA _KEY , null ) ;
}
} var dimension = this . _getDimension ( ) ; $ ( this . _element ) . removeClass ( ClassName . COLLAPSE ) . addClass ( ClassName . COLLAPSING ) ; this . _element . style [ dimension ] = 0 ; this . _element . setAttribute ( 'aria-expanded' , true ) ; if ( this . _triggerArray . length ) {
$ ( this . _triggerArray ) . removeClass ( ClassName . COLLAPSED ) . attr ( 'aria-expanded' , true ) ;
} this . setTransitioning ( true ) ; var complete = function complete ( ) {
$ ( _this4 . _element ) . removeClass ( ClassName . COLLAPSING ) . addClass ( ClassName . COLLAPSE ) . addClass ( ClassName . IN ) ; _this4 . _element . style [ dimension ] = '' ; _this4 . setTransitioning ( false ) ; $ ( _this4 . _element ) . trigger ( Event . SHOWN ) ;
} ; if ( ! Util . supportsTransitionEnd ( ) ) {
complete ( ) ; return ;
} var scrollSize = 'scroll' + ( dimension [ 0 ] . toUpperCase ( ) + dimension . slice ( 1 ) ) ; $ ( this . _element ) . one ( Util . TRANSITION _END , complete ) . emulateTransitionEnd ( TRANSITION _DURATION ) ; this . _element . style [ dimension ] = this . _element [ scrollSize ] + 'px' ;
} } , { key : 'hide' , value : function hide ( ) {
var _this5 = this ; if ( this . _isTransitioning || ! $ ( this . _element ) . hasClass ( ClassName . IN ) ) {
return ;
} var startEvent = $ . Event ( Event . HIDE ) ; $ ( this . _element ) . trigger ( startEvent ) ; if ( startEvent . isDefaultPrevented ( ) ) {
return ;
} var dimension = this . _getDimension ( ) ; var offsetDimension = dimension === Dimension . WIDTH ? 'offsetWidth' : 'offsetHeight' ; this . _element . style [ dimension ] = this . _element [ offsetDimension ] + 'px' ; Util . reflow ( this . _element ) ; $ ( this . _element ) . addClass ( ClassName . COLLAPSING ) . removeClass ( ClassName . COLLAPSE ) . removeClass ( ClassName . IN ) ; this . _element . setAttribute ( 'aria-expanded' , false ) ; if ( this . _triggerArray . length ) {
$ ( this . _triggerArray ) . addClass ( ClassName . COLLAPSED ) . attr ( 'aria-expanded' , false ) ;
} this . setTransitioning ( true ) ; var complete = function complete ( ) {
_this5 . setTransitioning ( false ) ; $ ( _this5 . _element ) . removeClass ( ClassName . COLLAPSING ) . addClass ( ClassName . COLLAPSE ) . trigger ( Event . HIDDEN ) ;
} ; this . _element . style [ dimension ] = 0 ; if ( ! Util . supportsTransitionEnd ( ) ) {
return complete ( ) ;
} $ ( this . _element ) . one ( Util . TRANSITION _END , complete ) . emulateTransitionEnd ( TRANSITION _DURATION ) ;
} } , { key : 'setTransitioning' , value : function setTransitioning ( isTransitioning ) {
this . _isTransitioning = isTransitioning ;
} } , { key : 'dispose' , value : function dispose ( ) {
$ . removeData ( this . _element , DATA _KEY ) ; this . _config = null ; this . _parent = null ; this . _element = null ; this . _triggerArray = null ; this . _isTransitioning = null ;
} // private
} , { key : '_getConfig' , value : function _getConfig ( config ) {
config = $ . extend ( { } , Default , config ) ; config . toggle = ! ! config . toggle ; // coerce string values
Util . typeCheckConfig ( NAME , config , DefaultType ) ; return config ;
} } , { key : '_getDimension' , value : function _getDimension ( ) {
var hasWidth = $ ( this . _element ) . hasClass ( Dimension . WIDTH ) ; return hasWidth ? Dimension . WIDTH : Dimension . HEIGHT ;
} } , { key : '_getParent' , value : function _getParent ( ) {
var _this6 = this ; var parent = $ ( this . _config . parent ) [ 0 ] ; var selector = '[data-toggle="collapse"][data-parent="' + this . _config . parent + '"]' ; $ ( parent ) . find ( selector ) . each ( function ( i , element ) {
_this6 . _addAriaAndCollapsedClass ( Collapse . _getTargetFromElement ( element ) , [ element ] ) ;
} ) ; return parent ;
} } , { key : '_addAriaAndCollapsedClass' , value : function _addAriaAndCollapsedClass ( element , triggerArray ) {
if ( element ) {
var isOpen = $ ( element ) . hasClass ( ClassName . IN ) ; element . setAttribute ( 'aria-expanded' , isOpen ) ; if ( triggerArray . length ) {
$ ( triggerArray ) . toggleClass ( ClassName . COLLAPSED , ! isOpen ) . attr ( 'aria-expanded' , isOpen ) ;
}
2015-08-13 04:17:43 +00:00
}
2015-08-15 19:17:13 +00:00
} // static
} ] , [ { key : '_getTargetFromElement' , value : function _getTargetFromElement ( element ) {
var selector = Util . getSelectorFromElement ( element ) ; return selector ? $ ( selector ) [ 0 ] : null ;
} } , { key : '_jQueryInterface' , value : function _jQueryInterface ( config ) {
return this . each ( function ( ) {
var $this = $ ( this ) ; var data = $this . data ( DATA _KEY ) ; var _config = $ . extend ( { } , Default , $this . data ( ) , typeof config === 'object' && config ) ; if ( ! data && _config . toggle && /show|hide/ . test ( config ) ) {
_config . toggle = false ;
} if ( ! data ) {
data = new Collapse ( this , _config ) ; $this . data ( DATA _KEY , data ) ;
} if ( typeof config === 'string' ) {
data [ config ] ( ) ;
}
2015-08-13 04:17:43 +00:00
} ) ;
2015-08-15 19:17:13 +00:00
} } , { key : 'VERSION' , get : function get ( ) {
return VERSION ;
} } , { key : 'Default' , get : function get ( ) {
return Default ;
} } ] ) ; return Collapse ;
} ) ( ) ; $ ( document ) . on ( Event . CLICK _DATA _API , Selector . DATA _TOGGLE , function ( event ) {
event . preventDefault ( ) ; var target = Collapse . _getTargetFromElement ( this ) ; var data = $ ( target ) . data ( DATA _KEY ) ; var config = data ? 'toggle' : $ ( this ) . data ( ) ; Collapse . _jQueryInterface . call ( $ ( target ) , config ) ;
} ) ; / * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* jQuery
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* / $ . f n [ N A M E ] = C o l l a p s e . _ j Q u e r y I n t e r f a c e ; $ . f n [ N A M E ] . C o n s t r u c t o r = C o l l a p s e ; $ . f n [ N A M E ] . n o C o n f l i c t = f u n c t i o n ( ) {
$ . fn [ NAME ] = JQUERY _NO _CONFLICT ; return Collapse . _jQueryInterface ;
} ; return Collapse ;
} ) ( jQuery ) ; / * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* Bootstrap ( v4 . 0.0 ) : dropdown . js
* Licensed under MIT ( https : //github.com/twbs/bootstrap/blob/master/LICENSE)
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* / v a r D r o p d o w n = ( f u n c t i o n ( $ ) {
/ * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* Constants
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* /var NAME = 'dropdown';var VERSION = '4.0.0';var DATA_KEY = 'bs.dropdown';var EVENT_KEY = '.' + DATA_KEY;var DATA_API_KEY = '.data-api';var JQUERY_NO_CONFLICT = $.fn[NAME];var Event = { HIDE: 'hide' + EVENT_KEY, HIDDEN: 'hidden' + EVENT_KEY, SHOW: 'show' + EVENT_KEY, SHOWN: 'shown' + EVENT_KEY, CLICK: 'click' + EVENT_KEY, CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY, KEYDOWN_DATA_API: 'keydown' + EVENT_KEY + DATA_API_KEY };var ClassName = { BACKDROP: 'dropdown-backdrop', DISABLED: 'disabled', OPEN: 'open' };var Selector = { BACKDROP: '.dropdown-backdrop', DATA_TOGGLE: '[data-toggle="dropdown"]', FORM_CHILD: '.dropdown form', ROLE_MENU: '[role="menu"]', ROLE_LISTBOX: '[role="listbox"]', NAVBAR_NAV: '.navbar-nav', VISIBLE_ITEMS: '[role="menu"] li:not(.disabled) a, ' + '[role="listbox"] li:not(.disabled) a' }; / * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* Class Definition
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* / v a r D r o p d o w n = ( f u n c t i o n ( ) {
function Dropdown ( element ) {
_classCallCheck ( this , Dropdown ) ; this . _element = element ; this . _addEventListeners ( ) ;
} / * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* Data Api implementation
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* / / / getters
_createClass ( Dropdown , [ { key : 'toggle' , // public
value : function toggle ( ) {
if ( this . disabled || $ ( this ) . hasClass ( ClassName . DISABLED ) ) {
return ;
} var parent = Dropdown . _getParentFromElement ( this ) ; var isActive = $ ( parent ) . hasClass ( ClassName . OPEN ) ; Dropdown . _clearMenus ( ) ; if ( isActive ) {
return false ;
} if ( 'ontouchstart' in document . documentElement && ! $ ( parent ) . closest ( Selector . NAVBAR _NAV ) . length ) {
// if mobile we use a backdrop because click events don't delegate
var dropdown = document . createElement ( 'div' ) ; dropdown . className = ClassName . BACKDROP ; $ ( dropdown ) . insertBefore ( this ) ; $ ( dropdown ) . on ( 'click' , Dropdown . _clearMenus ) ;
} var relatedTarget = { relatedTarget : this } ; var showEvent = $ . Event ( Event . SHOW , relatedTarget ) ; $ ( parent ) . trigger ( showEvent ) ; if ( showEvent . isDefaultPrevented ( ) ) {
return ;
} this . focus ( ) ; this . setAttribute ( 'aria-expanded' , 'true' ) ; $ ( parent ) . toggleClass ( ClassName . OPEN ) ; $ ( parent ) . trigger ( Event . SHOWN , relatedTarget ) ; return false ;
} } , { key : 'dispose' , value : function dispose ( ) {
$ . removeData ( this . _element , DATA _KEY ) ; $ ( this . _element ) . off ( EVENT _KEY ) ; this . _element = null ;
} // private
} , { key : '_addEventListeners' , value : function _addEventListeners ( ) {
$ ( this . _element ) . on ( Event . CLICK , this . toggle ) ;
} // static
} ] , [ { key : '_jQueryInterface' , value : function _jQueryInterface ( config ) {
return this . each ( function ( ) {
var data = $ ( this ) . data ( DATA _KEY ) ; if ( ! data ) {
$ ( this ) . data ( DATA _KEY , data = new Dropdown ( this ) ) ;
} if ( typeof config === 'string' ) {
data [ config ] . call ( this ) ;
2015-08-13 04:17:43 +00:00
}
2015-08-15 19:17:13 +00:00
} ) ;
} } , { key : '_clearMenus' , value : function _clearMenus ( event ) {
if ( event && event . which === 3 ) {
return ;
} var backdrop = $ ( Selector . BACKDROP ) [ 0 ] ; if ( backdrop ) {
backdrop . parentNode . removeChild ( backdrop ) ;
} var toggles = $ . makeArray ( $ ( Selector . DATA _TOGGLE ) ) ; for ( var i = 0 ; i < toggles . length ; i ++ ) {
var _parent = Dropdown . _getParentFromElement ( toggles [ i ] ) ; var relatedTarget = { relatedTarget : toggles [ i ] } ; if ( ! $ ( _parent ) . hasClass ( ClassName . OPEN ) ) {
continue ;
} if ( event && event . type === 'click' && /input|textarea/i . test ( event . target . tagName ) && $ . contains ( _parent , event . target ) ) {
continue ;
} var hideEvent = $ . Event ( Event . HIDE , relatedTarget ) ; $ ( _parent ) . trigger ( hideEvent ) ; if ( hideEvent . isDefaultPrevented ( ) ) {
continue ;
} toggles [ i ] . setAttribute ( 'aria-expanded' , 'false' ) ; $ ( _parent ) . removeClass ( ClassName . OPEN ) . trigger ( Event . HIDDEN , relatedTarget ) ;
2015-08-13 04:17:43 +00:00
}
2015-08-15 19:17:13 +00:00
} } , { key : '_getParentFromElement' , value : function _getParentFromElement ( element ) {
var parent = undefined ; var selector = Util . getSelectorFromElement ( element ) ; if ( selector ) {
parent = $ ( selector ) [ 0 ] ;
} return parent || element . parentNode ;
} } , { key : '_dataApiKeydownHandler' , value : function _dataApiKeydownHandler ( event ) {
if ( ! /(38|40|27|32)/ . test ( event . which ) || /input|textarea/i . test ( event . target . tagName ) ) {
return ;
} event . preventDefault ( ) ; event . stopPropagation ( ) ; if ( this . disabled || $ ( this ) . hasClass ( ClassName . DISABLED ) ) {
return ;
} var parent = Dropdown . _getParentFromElement ( this ) ; var isActive = $ ( parent ) . hasClass ( ClassName . OPEN ) ; if ( ! isActive && event . which !== 27 || isActive && event . which === 27 ) {
if ( event . which === 27 ) {
var toggle = $ ( parent ) . find ( Selector . DATA _TOGGLE ) [ 0 ] ; $ ( toggle ) . trigger ( 'focus' ) ;
} $ ( this ) . trigger ( 'click' ) ; return ;
} var items = $ . makeArray ( $ ( Selector . VISIBLE _ITEMS ) ) ; items = items . filter ( function ( item ) {
return item . offsetWidth || item . offsetHeight ;
} ) ; if ( ! items . length ) {
return ;
} var index = items . indexOf ( event . target ) ; if ( event . which === 38 && index > 0 ) index -- ; // up
if ( event . which === 40 && index < items . length - 1 ) index ++ ; // down
if ( ! ~ index ) index = 0 ; items [ index ] . focus ( ) ;
} } , { key : 'VERSION' , get : function get ( ) {
return VERSION ;
} } ] ) ; return Dropdown ;
} ) ( ) ; $ ( document ) . on ( Event . KEYDOWN _DATA _API , Selector . DATA _TOGGLE , Dropdown . _dataApiKeydownHandler ) . on ( Event . KEYDOWN _DATA _API , Selector . ROLE _MENU , Dropdown . _dataApiKeydownHandler ) . on ( Event . KEYDOWN _DATA _API , Selector . ROLE _LISTBOX , Dropdown . _dataApiKeydownHandler ) . on ( Event . CLICK _DATA _API , Dropdown . _clearMenus ) . on ( Event . CLICK _DATA _API , Selector . DATA _TOGGLE , Dropdown . prototype . toggle ) . on ( Event . CLICK _DATA _API , Selector . FORM _CHILD , function ( e ) {
e . stopPropagation ( ) ;
} ) ; / * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* jQuery
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* / $ . f n [ N A M E ] = D r o p d o w n . _ j Q u e r y I n t e r f a c e ; $ . f n [ N A M E ] . C o n s t r u c t o r = D r o p d o w n ; $ . f n [ N A M E ] . n o C o n f l i c t = f u n c t i o n ( ) {
$ . fn [ NAME ] = JQUERY _NO _CONFLICT ; return Dropdown . _jQueryInterface ;
} ; return Dropdown ;
} ) ( jQuery ) ; / * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* Bootstrap ( v4 . 0.0 ) : modal . js
* Licensed under MIT ( https : //github.com/twbs/bootstrap/blob/master/LICENSE)
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* / v a r M o d a l = ( f u n c t i o n ( $ ) {
/ * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* Constants
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* /var NAME = 'modal';var VERSION = '4.0.0';var DATA_KEY = 'bs.modal';var EVENT_KEY = '.' + DATA_KEY;var DATA_API_KEY = '.data-api';var JQUERY_NO_CONFLICT = $.fn[NAME];var TRANSITION_DURATION = 300;var BACKDROP_TRANSITION_DURATION = 150;var Default = { backdrop: true, keyboard: true, focus: true, show: true };var DefaultType = { backdrop: '(boolean|string)', keyboard: 'boolean', focus: 'boolean', show: 'boolean' };var Event = { HIDE: 'hide' + EVENT_KEY, HIDDEN: 'hidden' + EVENT_KEY, SHOW: 'show' + EVENT_KEY, SHOWN: 'shown' + EVENT_KEY, FOCUSIN: 'focusin' + EVENT_KEY, RESIZE: 'resize' + EVENT_KEY, CLICK_DISMISS: 'click.dismiss' + EVENT_KEY, KEYDOWN_DISMISS: 'keydown.dismiss' + EVENT_KEY, MOUSEUP_DISMISS: 'mouseup.dismiss' + EVENT_KEY, MOUSEDOWN_DISMISS: 'mousedown.dismiss' + EVENT_KEY, CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY };var ClassName = { SCROLLBAR_MEASURER: 'modal-scrollbar-measure', BACKDROP: 'modal-backdrop', OPEN: 'modal-open', FADE: 'fade', IN: 'in' };var Selector = { DIALOG: '.modal-dialog', DATA_TOGGLE: '[data-toggle="modal"]', DATA_DISMISS: '[data-dismiss="modal"]', FIXED_CONTENT: '.navbar-fixed-top, .navbar-fixed-bottom, .is-fixed' }; / * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* Class Definition
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* / v a r M o d a l = ( f u n c t i o n ( ) {
function Modal ( element , config ) {
_classCallCheck ( this , Modal ) ; this . _config = this . _getConfig ( config ) ; this . _element = element ; this . _dialog = $ ( element ) . find ( Selector . DIALOG ) [ 0 ] ; this . _backdrop = null ; this . _isShown = false ; this . _isBodyOverflowing = false ; this . _ignoreBackdropClick = false ; this . _originalBodyPadding = 0 ; this . _scrollbarWidth = 0 ;
} / * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* Data Api implementation
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* / / / getters
_createClass ( Modal , [ { key : 'toggle' , // public
value : function toggle ( relatedTarget ) {
return this . _isShown ? this . hide ( ) : this . show ( relatedTarget ) ;
} } , { key : 'show' , value : function show ( relatedTarget ) {
var _this7 = this ; var showEvent = $ . Event ( Event . SHOW , { relatedTarget : relatedTarget } ) ; $ ( this . _element ) . trigger ( showEvent ) ; if ( this . _isShown || showEvent . isDefaultPrevented ( ) ) {
return ;
} this . _isShown = true ; this . _checkScrollbar ( ) ; this . _setScrollbar ( ) ; $ ( document . body ) . addClass ( ClassName . OPEN ) ; this . _setEscapeEvent ( ) ; this . _setResizeEvent ( ) ; $ ( this . _element ) . on ( Event . CLICK _DISMISS , Selector . DATA _DISMISS , $ . proxy ( this . hide , this ) ) ; $ ( this . _dialog ) . on ( Event . MOUSEDOWN _DISMISS , function ( ) {
$ ( _this7 . _element ) . one ( Event . MOUSEUP _DISMISS , function ( event ) {
if ( $ ( event . target ) . is ( _this7 . _element ) ) {
that . _ignoreBackdropClick = true ;
}
} ) ;
} ) ; this . _showBackdrop ( $ . proxy ( this . _showElement , this , relatedTarget ) ) ;
} } , { key : 'hide' , value : function hide ( event ) {
if ( event ) {
event . preventDefault ( ) ;
} var hideEvent = $ . Event ( Event . HIDE ) ; $ ( this . _element ) . trigger ( hideEvent ) ; if ( ! this . _isShown || hideEvent . isDefaultPrevented ( ) ) {
return ;
} this . _isShown = false ; this . _setEscapeEvent ( ) ; this . _setResizeEvent ( ) ; $ ( document ) . off ( Event . FOCUSIN ) ; $ ( this . _element ) . removeClass ( ClassName . IN ) ; $ ( this . _element ) . off ( Event . CLICK _DISMISS ) ; $ ( this . _dialog ) . off ( Event . MOUSEDOWN _DISMISS ) ; if ( Util . supportsTransitionEnd ( ) && $ ( this . _element ) . hasClass ( ClassName . FADE ) ) {
$ ( this . _element ) . one ( Util . TRANSITION _END , $ . proxy ( this . _hideModal , this ) ) . emulateTransitionEnd ( TRANSITION _DURATION ) ;
} else {
this . _hideModal ( ) ;
2015-08-13 04:17:43 +00:00
}
2015-08-15 19:17:13 +00:00
} } , { key : 'dispose' , value : function dispose ( ) {
$ . removeData ( this . _element , DATA _KEY ) ; $ ( window ) . off ( EVENT _KEY ) ; $ ( document ) . off ( EVENT _KEY ) ; $ ( this . _element ) . off ( EVENT _KEY ) ; $ ( this . _backdrop ) . off ( EVENT _KEY ) ; this . _config = null ; this . _element = null ; this . _dialog = null ; this . _backdrop = null ; this . _isShown = null ; this . _isBodyOverflowing = null ; this . _ignoreBackdropClick = null ; this . _originalBodyPadding = null ; this . _scrollbarWidth = null ;
} // private
} , { key : '_getConfig' , value : function _getConfig ( config ) {
config = $ . extend ( { } , Default , config ) ; Util . typeCheckConfig ( NAME , config , DefaultType ) ; return config ;
} } , { key : '_showElement' , value : function _showElement ( relatedTarget ) {
var _this8 = this ; var transition = Util . supportsTransitionEnd ( ) && $ ( this . _element ) . hasClass ( ClassName . FADE ) ; if ( ! this . _element . parentNode || this . _element . parentNode . nodeType !== Node . ELEMENT _NODE ) {
// don't move modals dom position
document . body . appendChild ( this . _element ) ;
} this . _element . style . display = 'block' ; this . _element . scrollTop = 0 ; if ( transition ) {
Util . reflow ( this . _element ) ;
} $ ( this . _element ) . addClass ( ClassName . IN ) ; if ( this . _config . focus ) this . _enforceFocus ( ) ; var shownEvent = $ . Event ( Event . SHOWN , { relatedTarget : relatedTarget } ) ; var transitionComplete = function transitionComplete ( ) {
if ( _this8 . _config . focus ) _this8 . _element . focus ( ) ; $ ( _this8 . _element ) . trigger ( shownEvent ) ;
} ; if ( transition ) {
$ ( this . _dialog ) . one ( Util . TRANSITION _END , transitionComplete ) . emulateTransitionEnd ( TRANSITION _DURATION ) ;
} else {
transitionComplete ( ) ;
2015-08-13 04:17:43 +00:00
}
2015-08-15 19:17:13 +00:00
} } , { key : '_enforceFocus' , value : function _enforceFocus ( ) {
var _this9 = this ; $ ( document ) . off ( Event . FOCUSIN ) // guard against infinite focus loop
. on ( Event . FOCUSIN , function ( event ) {
if ( _this9 . _element !== event . target && ! $ ( _this9 . _element ) . has ( event . target ) . length ) {
_this9 . _element . focus ( ) ;
}
2015-08-13 04:17:43 +00:00
} ) ;
2015-08-15 19:17:13 +00:00
} } , { key : '_setEscapeEvent' , value : function _setEscapeEvent ( ) {
var _this10 = this ; if ( this . _isShown && this . _config . keyboard ) {
$ ( this . _element ) . on ( Event . KEYDOWN _DISMISS , function ( event ) {
if ( event . which === 27 ) {
_this10 . hide ( ) ;
}
} ) ;
} else if ( ! this . _isShown ) {
$ ( this . _element ) . off ( Event . KEYDOWN _DISMISS ) ;
2015-08-13 04:17:43 +00:00
}
2015-08-15 19:17:13 +00:00
} } , { key : '_setResizeEvent' , value : function _setResizeEvent ( ) {
if ( this . _isShown ) {
$ ( window ) . on ( Event . RESIZE , $ . proxy ( this . _handleUpdate , this ) ) ;
} else {
$ ( window ) . off ( Event . RESIZE ) ;
}
} } , { key : '_hideModal' , value : function _hideModal ( ) {
var _this11 = this ; this . _element . style . display = 'none' ; this . _showBackdrop ( function ( ) {
$ ( document . body ) . removeClass ( ClassName . OPEN ) ; _this11 . _resetAdjustments ( ) ; _this11 . _resetScrollbar ( ) ; $ ( _this11 . _element ) . trigger ( Event . HIDDEN ) ;
} ) ;
} } , { key : '_removeBackdrop' , value : function _removeBackdrop ( ) {
if ( this . _backdrop ) {
$ ( this . _backdrop ) . remove ( ) ; this . _backdrop = null ;
}
} } , { key : '_showBackdrop' , value : function _showBackdrop ( callback ) {
var _this12 = this ; var animate = $ ( this . _element ) . hasClass ( ClassName . FADE ) ? ClassName . FADE : '' ; if ( this . _isShown && this . _config . backdrop ) {
var doAnimate = Util . supportsTransitionEnd ( ) && animate ; this . _backdrop = document . createElement ( 'div' ) ; this . _backdrop . className = ClassName . BACKDROP ; if ( animate ) {
$ ( this . _backdrop ) . addClass ( animate ) ;
} $ ( this . _backdrop ) . appendTo ( document . body ) ; $ ( this . _element ) . on ( Event . CLICK _DISMISS , function ( event ) {
if ( _this12 . _ignoreBackdropClick ) {
_this12 . _ignoreBackdropClick = false ; return ;
} if ( event . target !== event . currentTarget ) {
return ;
} if ( _this12 . _config . backdrop === 'static' ) {
_this12 . _element . focus ( ) ;
} else {
_this12 . hide ( ) ;
}
} ) ; if ( doAnimate ) {
Util . reflow ( this . _backdrop ) ;
} $ ( this . _backdrop ) . addClass ( ClassName . IN ) ; if ( ! callback ) {
return ;
} if ( ! doAnimate ) {
callback ( ) ; return ;
} $ ( this . _backdrop ) . one ( Util . TRANSITION _END , callback ) . emulateTransitionEnd ( BACKDROP _TRANSITION _DURATION ) ;
} else if ( ! this . _isShown && this . _backdrop ) {
$ ( this . _backdrop ) . removeClass ( ClassName . IN ) ; var callbackRemove = function callbackRemove ( ) {
_this12 . _removeBackdrop ( ) ; if ( callback ) {
callback ( ) ;
}
} ; if ( Util . supportsTransitionEnd ( ) && $ ( this . _element ) . hasClass ( ClassName . FADE ) ) {
$ ( this . _backdrop ) . one ( Util . TRANSITION _END , callbackRemove ) . emulateTransitionEnd ( BACKDROP _TRANSITION _DURATION ) ;
} else {
callbackRemove ( ) ;
}
} else if ( callback ) {
callback ( ) ;
}
} // ----------------------------------------------------------------------
// the following methods are used to handle overflowing modals
// todo (fat): these should probably be refactored out of modal.js
// ----------------------------------------------------------------------
} , { key : '_handleUpdate' , value : function _handleUpdate ( ) {
this . _adjustDialog ( ) ;
} } , { key : '_adjustDialog' , value : function _adjustDialog ( ) {
var isModalOverflowing = this . _element . scrollHeight > document . documentElement . clientHeight ; if ( ! this . _isBodyOverflowing && isModalOverflowing ) {
this . _element . style . paddingLeft = this . _scrollbarWidth + 'px' ;
} if ( this . _isBodyOverflowing && ! isModalOverflowing ) {
this . _element . style . paddingRight = this . _scrollbarWidth + 'px' ;
}
} } , { key : '_resetAdjustments' , value : function _resetAdjustments ( ) {
this . _element . style . paddingLeft = '' ; this . _element . style . paddingRight = '' ;
} } , { key : '_checkScrollbar' , value : function _checkScrollbar ( ) {
var fullWindowWidth = window . innerWidth ; if ( ! fullWindowWidth ) {
// workaround for missing window.innerWidth in IE8
var documentElementRect = document . documentElement . getBoundingClientRect ( ) ; fullWindowWidth = documentElementRect . right - Math . abs ( documentElementRect . left ) ;
} this . _isBodyOverflowing = document . body . clientWidth < fullWindowWidth ; this . _scrollbarWidth = this . _getScrollbarWidth ( ) ;
} } , { key : '_setScrollbar' , value : function _setScrollbar ( ) {
var bodyPadding = parseInt ( $ ( Selector . FIXED _CONTENT ) . css ( 'padding-right' ) || 0 , 10 ) ; this . _originalBodyPadding = document . body . style . paddingRight || '' ; if ( this . _isBodyOverflowing ) {
document . body . style . paddingRight = bodyPadding + this . _scrollbarWidth + 'px' ;
}
} } , { key : '_resetScrollbar' , value : function _resetScrollbar ( ) {
document . body . style . paddingRight = this . _originalBodyPadding ;
} } , { key : '_getScrollbarWidth' , value : function _getScrollbarWidth ( ) {
// thx d.walsh
var scrollDiv = document . createElement ( 'div' ) ; scrollDiv . className = ClassName . SCROLLBAR _MEASURER ; document . body . appendChild ( scrollDiv ) ; var scrollbarWidth = scrollDiv . offsetWidth - scrollDiv . clientWidth ; document . body . removeChild ( scrollDiv ) ; return scrollbarWidth ;
} // static
} ] , [ { key : '_jQueryInterface' , value : function _jQueryInterface ( config , relatedTarget ) {
return this . each ( function ( ) {
var data = $ ( this ) . data ( DATA _KEY ) ; var _config = $ . extend ( { } , Modal . Default , $ ( this ) . data ( ) , typeof config === 'object' && config ) ; if ( ! data ) {
data = new Modal ( this , _config ) ; $ ( this ) . data ( DATA _KEY , data ) ;
} if ( typeof config === 'string' ) {
data [ config ] ( relatedTarget ) ;
} else if ( _config . show ) {
data . show ( relatedTarget ) ;
}
} ) ;
} } , { key : 'VERSION' , get : function get ( ) {
return VERSION ;
} } , { key : 'Default' , get : function get ( ) {
return Default ;
} } ] ) ; return Modal ;
} ) ( ) ; $ ( document ) . on ( Event . CLICK _DATA _API , Selector . DATA _TOGGLE , function ( event ) {
var _this13 = this ; var target = undefined ; var selector = Util . getSelectorFromElement ( this ) ; if ( selector ) {
target = $ ( selector ) [ 0 ] ;
} var config = $ ( target ) . data ( DATA _KEY ) ? 'toggle' : $ . extend ( { } , $ ( target ) . data ( ) , $ ( this ) . data ( ) ) ; if ( this . tagName === 'A' ) {
event . preventDefault ( ) ;
} var $target = $ ( target ) . one ( Event . SHOW , function ( showEvent ) {
if ( showEvent . isDefaultPrevented ( ) ) {
// only register focus restorer if modal will actually get shown
2015-08-13 04:17:43 +00:00
return ;
2015-08-15 19:17:13 +00:00
} $target . one ( Event . HIDDEN , function ( ) {
if ( $ ( _this13 ) . is ( ':visible' ) ) {
_this13 . focus ( ) ;
2015-08-13 04:17:43 +00:00
}
2015-08-15 19:17:13 +00:00
} ) ;
} ) ; Modal . _jQueryInterface . call ( $ ( target ) , config , this ) ;
} ) ; / * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* jQuery
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* / $ . f n [ N A M E ] = M o d a l . _ j Q u e r y I n t e r f a c e ; $ . f n [ N A M E ] . C o n s t r u c t o r = M o d a l ; $ . f n [ N A M E ] . n o C o n f l i c t = f u n c t i o n ( ) {
$ . fn [ NAME ] = JQUERY _NO _CONFLICT ; return Modal . _jQueryInterface ;
} ; return Modal ;
} ) ( jQuery ) ; / * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* Bootstrap ( v4 . 0.0 ) : scrollspy . js
* Licensed under MIT ( https : //github.com/twbs/bootstrap/blob/master/LICENSE)
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* / v a r S c r o l l S p y = ( f u n c t i o n ( $ ) {
/ * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* Constants
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* /var NAME = 'scrollspy';var VERSION = '4.0.0';var DATA_KEY = 'bs.scrollspy';var EVENT_KEY = '.' + DATA_KEY;var DATA_API_KEY = '.data-api';var JQUERY_NO_CONFLICT = $.fn[NAME];var Default = { offset: 10, method: 'auto', target: '' };var DefaultType = { offset: 'number', method: 'string', target: '(string|element)' };var Event = { ACTIVATE: 'activate' + EVENT_KEY, SCROLL: 'scroll' + EVENT_KEY, LOAD_DATA_API: 'load' + EVENT_KEY + DATA_API_KEY };var ClassName = { DROPDOWN_MENU: 'dropdown-menu', ACTIVE: 'active' };var Selector = { DATA_SPY: '[data-spy="scroll"]', ACTIVE: '.active', LI: 'li', LI_DROPDOWN: 'li.dropdown', NAV_ANCHORS: '.nav li > a' };var OffsetMethod = { OFFSET: 'offset', POSITION: 'position' }; / * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* Class Definition
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* / v a r S c r o l l S p y = ( f u n c t i o n ( ) {
function ScrollSpy ( element , config ) {
_classCallCheck ( this , ScrollSpy ) ; this . _element = element ; this . _scrollElement = element . tagName === 'BODY' ? window : element ; this . _config = this . _getConfig ( config ) ; this . _selector = this . _config . target + ' ' + Selector . NAV _ANCHORS ; this . _offsets = [ ] ; this . _targets = [ ] ; this . _activeTarget = null ; this . _scrollHeight = 0 ; $ ( this . _scrollElement ) . on ( Event . SCROLL , $ . proxy ( this . _process , this ) ) ; this . refresh ( ) ; this . _process ( ) ;
} / * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* Data Api implementation
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* / / / getters
_createClass ( ScrollSpy , [ { key : 'refresh' , // public
value : function refresh ( ) {
var _this14 = this ; var autoMethod = this . _scrollElement !== this . _scrollElement . window ? OffsetMethod . POSITION : OffsetMethod . OFFSET ; var offsetMethod = this . _config . method === 'auto' ? autoMethod : this . _config . method ; var offsetBase = offsetMethod === OffsetMethod . POSITION ? this . _getScrollTop ( ) : 0 ; this . _offsets = [ ] ; this . _targets = [ ] ; this . _scrollHeight = this . _getScrollHeight ( ) ; var targets = $ . makeArray ( $ ( this . _selector ) ) ; targets . map ( function ( element ) {
var target = undefined ; var targetSelector = Util . getSelectorFromElement ( element ) ; if ( targetSelector ) {
target = $ ( targetSelector ) [ 0 ] ;
} if ( target && ( target . offsetWidth || target . offsetHeight ) ) {
// todo (fat): remove sketch reliance on jQuery position/offset
return [ $ ( target ) [ offsetMethod ] ( ) . top + offsetBase , targetSelector ] ;
}
} ) . filter ( function ( item ) {
return item ;
} ) . sort ( function ( a , b ) {
return a [ 0 ] - b [ 0 ] ;
} ) . forEach ( function ( item ) {
_this14 . _offsets . push ( item [ 0 ] ) ; _this14 . _targets . push ( item [ 1 ] ) ;
} ) ;
} } , { key : 'dispose' , value : function dispose ( ) {
$ . removeData ( this . _element , DATA _KEY ) ; $ ( this . _scrollElement ) . off ( EVENT _KEY ) ; this . _element = null ; this . _scrollElement = null ; this . _config = null ; this . _selector = null ; this . _offsets = null ; this . _targets = null ; this . _activeTarget = null ; this . _scrollHeight = null ;
} // private
} , { key : '_getConfig' , value : function _getConfig ( config ) {
config = $ . extend ( { } , Default , config ) ; if ( typeof config . target !== 'string' ) {
var id = $ ( config . target ) . attr ( 'id' ) ; if ( ! id ) {
id = Util . getUID ( NAME ) ; $ ( config . target ) . attr ( 'id' , id ) ;
} config . target = '#' + id ;
} Util . typeCheckConfig ( NAME , config , DefaultType ) ; return config ;
} } , { key : '_getScrollTop' , value : function _getScrollTop ( ) {
return this . _scrollElement === window ? this . _scrollElement . scrollY : this . _scrollElement . scrollTop ;
} } , { key : '_getScrollHeight' , value : function _getScrollHeight ( ) {
return this . _scrollElement . scrollHeight || Math . max ( document . body . scrollHeight , document . documentElement . scrollHeight ) ;
} } , { key : '_process' , value : function _process ( ) {
var scrollTop = this . _getScrollTop ( ) + this . _config . offset ; var scrollHeight = this . _getScrollHeight ( ) ; var maxScroll = this . _config . offset + scrollHeight - this . _scrollElement . offsetHeight ; if ( this . _scrollHeight !== scrollHeight ) {
this . refresh ( ) ;
} if ( scrollTop >= maxScroll ) {
var target = this . _targets [ this . _targets . length - 1 ] ; if ( this . _activeTarget !== target ) {
this . _activate ( target ) ;
}
} if ( this . _activeTarget && scrollTop < this . _offsets [ 0 ] ) {
this . _activeTarget = null ; this . _clear ( ) ; return ;
} for ( var i = this . _offsets . length ; i -- ; ) {
var isActiveTarget = this . _activeTarget !== this . _targets [ i ] && scrollTop >= this . _offsets [ i ] && ( this . _offsets [ i + 1 ] === undefined || scrollTop < this . _offsets [ i + 1 ] ) ; if ( isActiveTarget ) {
this . _activate ( this . _targets [ i ] ) ;
}
2015-08-13 04:17:43 +00:00
}
2015-08-15 19:17:13 +00:00
} } , { key : '_activate' , value : function _activate ( target ) {
this . _activeTarget = target ; this . _clear ( ) ; var selector = this . _selector + '[data-target="' + target + '"],' + ( this . _selector + '[href="' + target + '"]' ) ; // todo (fat): getting all the raw li's up the tree is not great.
var parentListItems = $ ( selector ) . parents ( Selector . LI ) ; for ( var i = parentListItems . length ; i -- ; ) {
$ ( parentListItems [ i ] ) . addClass ( ClassName . ACTIVE ) ; var itemParent = parentListItems [ i ] . parentNode ; if ( itemParent && $ ( itemParent ) . hasClass ( ClassName . DROPDOWN _MENU ) ) {
var closestDropdown = $ ( itemParent ) . closest ( Selector . LI _DROPDOWN ) [ 0 ] ; $ ( closestDropdown ) . addClass ( ClassName . ACTIVE ) ;
2015-08-13 04:17:43 +00:00
}
2015-08-15 19:17:13 +00:00
} $ ( this . _scrollElement ) . trigger ( Event . ACTIVATE , { relatedTarget : target } ) ;
} } , { key : '_clear' , value : function _clear ( ) {
var activeParents = $ ( this . _selector ) . parentsUntil ( this . _config . target , Selector . ACTIVE ) ; for ( var i = activeParents . length ; i -- ; ) {
$ ( activeParents [ i ] ) . removeClass ( ClassName . ACTIVE ) ;
2015-08-13 04:17:43 +00:00
}
2015-08-15 19:17:13 +00:00
} // static
} ] , [ { key : '_jQueryInterface' , value : function _jQueryInterface ( config ) {
return this . each ( function ( ) {
var data = $ ( this ) . data ( DATA _KEY ) ; var _config = typeof config === 'object' && config || null ; if ( ! data ) {
data = new ScrollSpy ( this , _config ) ; $ ( this ) . data ( DATA _KEY , data ) ;
} if ( typeof config === 'string' ) {
data [ config ] ( ) ;
}
} ) ;
} } , { key : 'VERSION' , get : function get ( ) {
return VERSION ;
} } , { key : 'Default' , get : function get ( ) {
return Default ;
} } ] ) ; return ScrollSpy ;
} ) ( ) ; $ ( window ) . on ( Event . LOAD _DATA _API , function ( ) {
var scrollSpys = $ . makeArray ( $ ( Selector . DATA _SPY ) ) ; for ( var i = scrollSpys . length ; i -- ; ) {
var $spy = $ ( scrollSpys [ i ] ) ; ScrollSpy . _jQueryInterface . call ( $spy , $spy . data ( ) ) ;
}
} ) ; / * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* jQuery
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* / $ . f n [ N A M E ] = S c r o l l S p y . _ j Q u e r y I n t e r f a c e ; $ . f n [ N A M E ] . C o n s t r u c t o r = S c r o l l S p y ; $ . f n [ N A M E ] . n o C o n f l i c t = f u n c t i o n ( ) {
$ . fn [ NAME ] = JQUERY _NO _CONFLICT ; return ScrollSpy . _jQueryInterface ;
} ; return ScrollSpy ;
} ) ( jQuery ) ; / * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* Bootstrap ( v4 . 0.0 ) : tab . js
* Licensed under MIT ( https : //github.com/twbs/bootstrap/blob/master/LICENSE)
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* / v a r T a b = ( f u n c t i o n ( $ ) {
/ * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* Constants
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* /var NAME = 'tab';var VERSION = '4.0.0';var DATA_KEY = 'bs.tab';var EVENT_KEY = '.' + DATA_KEY;var DATA_API_KEY = '.data-api';var JQUERY_NO_CONFLICT = $.fn[NAME];var TRANSITION_DURATION = 150;var Event = { HIDE: 'hide' + EVENT_KEY, HIDDEN: 'hidden' + EVENT_KEY, SHOW: 'show' + EVENT_KEY, SHOWN: 'shown' + EVENT_KEY, CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY };var ClassName = { DROPDOWN_MENU: 'dropdown-menu', ACTIVE: 'active', FADE: 'fade', IN: 'in' };var Selector = { A: 'a', LI: 'li', LI_DROPDOWN: 'li.dropdown', UL: 'ul:not(.dropdown-menu)', FADE_CHILD: '> .fade', ACTIVE: '.active', ACTIVE_CHILD: '> .active', DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"]', DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu > .active' }; / * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* Class Definition
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* / v a r T a b = ( f u n c t i o n ( ) {
function Tab ( element ) {
_classCallCheck ( this , Tab ) ; this . _element = element ;
} / * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* Data Api implementation
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* / / / getters
_createClass ( Tab , [ { key : 'show' , // public
value : function show ( ) {
var _this15 = this ; if ( this . _element . parentNode && this . _element . parentNode . nodeType == Node . ELEMENT _NODE && $ ( this . _element ) . parent ( ) . hasClass ( ClassName . ACTIVE ) ) {
2015-08-13 04:17:43 +00:00
return ;
2015-08-15 19:17:13 +00:00
} var target = undefined ; var previous = undefined ; var ulElement = $ ( this . _element ) . closest ( Selector . UL ) [ 0 ] ; var selector = Util . getSelectorFromElement ( this . _element ) ; if ( ulElement ) {
previous = $ . makeArray ( $ ( ulElement ) . find ( Selector . ACTIVE ) ) ; previous = previous [ previous . length - 1 ] ; if ( previous ) {
previous = $ ( previous ) . find ( Selector . A ) [ 0 ] ;
}
} var hideEvent = $ . Event ( Event . HIDE , { relatedTarget : this . _element } ) ; var showEvent = $ . Event ( Event . SHOW , { relatedTarget : previous } ) ; if ( previous ) {
$ ( previous ) . trigger ( hideEvent ) ;
} $ ( this . _element ) . trigger ( showEvent ) ; if ( showEvent . isDefaultPrevented ( ) || hideEvent . isDefaultPrevented ( ) ) {
return ;
} if ( selector ) {
target = $ ( selector ) [ 0 ] ;
} this . _activate ( $ ( this . _element ) . closest ( Selector . LI ) [ 0 ] , ulElement ) ; var complete = function complete ( ) {
var hiddenEvent = $ . Event ( Event . HIDDEN , { relatedTarget : _this15 . _element } ) ; var shownEvent = $ . Event ( Event . SHOWN , { relatedTarget : previous } ) ; $ ( previous ) . trigger ( hiddenEvent ) ; $ ( _this15 . _element ) . trigger ( shownEvent ) ;
} ; if ( target ) {
this . _activate ( target , target . parentNode , complete ) ;
} else {
complete ( ) ;
2015-08-13 04:17:43 +00:00
}
2015-08-15 19:17:13 +00:00
} } , { key : 'dispose' , value : function dispose ( ) {
$ . removeClass ( this . _element , DATA _KEY ) ; this . _element = null ;
} // private
} , { key : '_activate' , value : function _activate ( element , container , callback ) {
var active = $ ( container ) . find ( Selector . ACTIVE _CHILD ) [ 0 ] ; var isTransitioning = callback && Util . supportsTransitionEnd ( ) && ( active && $ ( active ) . hasClass ( ClassName . FADE ) || ! ! $ ( container ) . find ( Selector . FADE _CHILD ) [ 0 ] ) ; var complete = $ . proxy ( this . _transitionComplete , this , element , active , isTransitioning , callback ) ; if ( active && isTransitioning ) {
$ ( active ) . one ( Util . TRANSITION _END , complete ) . emulateTransitionEnd ( TRANSITION _DURATION ) ;
} else {
complete ( ) ;
} if ( active ) {
$ ( active ) . removeClass ( ClassName . IN ) ;
2015-08-13 04:17:43 +00:00
}
2015-08-15 19:17:13 +00:00
} } , { key : '_transitionComplete' , value : function _transitionComplete ( element , active , isTransitioning , callback ) {
if ( active ) {
$ ( active ) . removeClass ( ClassName . ACTIVE ) ; var dropdownChild = $ ( active ) . find ( Selector . DROPDOWN _ACTIVE _CHILD ) [ 0 ] ; if ( dropdownChild ) {
$ ( dropdownChild ) . removeClass ( ClassName . ACTIVE ) ;
} var activeToggle = $ ( active ) . find ( Selector . DATA _TOGGLE ) [ 0 ] ; if ( activeToggle ) {
activeToggle . setAttribute ( 'aria-expanded' , false ) ;
}
} $ ( element ) . addClass ( ClassName . ACTIVE ) ; var elementToggle = $ ( element ) . find ( Selector . DATA _TOGGLE ) [ 0 ] ; if ( elementToggle ) {
elementToggle . setAttribute ( 'aria-expanded' , true ) ;
} if ( isTransitioning ) {
Util . reflow ( element ) ; $ ( element ) . addClass ( ClassName . IN ) ;
} else {
$ ( element ) . removeClass ( ClassName . FADE ) ;
} if ( element . parentNode && $ ( element . parentNode ) . hasClass ( ClassName . DROPDOWN _MENU ) ) {
var dropdownElement = $ ( element ) . closest ( Selector . LI _DROPDOWN ) [ 0 ] ; if ( dropdownElement ) {
$ ( dropdownElement ) . addClass ( ClassName . ACTIVE ) ;
} elementToggle = $ ( element ) . find ( Selector . DATA _TOGGLE ) [ 0 ] ; if ( elementToggle ) {
elementToggle . setAttribute ( 'aria-expanded' , true ) ;
}
} if ( callback ) {
callback ( ) ;
2015-08-13 04:17:43 +00:00
}
2015-08-15 19:17:13 +00:00
} // static
} ] , [ { key : '_jQueryInterface' , value : function _jQueryInterface ( config ) {
return this . each ( function ( ) {
var $this = $ ( this ) ; var data = $this . data ( DATA _KEY ) ; if ( ! data ) {
data = data = new Tab ( this ) ; $this . data ( DATA _KEY , data ) ;
} if ( typeof config === 'string' ) {
data [ config ] ( ) ;
}
} ) ;
} } , { key : 'VERSION' , get : function get ( ) {
return VERSION ;
} } ] ) ; return Tab ;
} ) ( ) ; $ ( document ) . on ( Event . CLICK _DATA _API , Selector . DATA _TOGGLE , function ( event ) {
event . preventDefault ( ) ; Tab . _jQueryInterface . call ( $ ( this ) , 'show' ) ;
} ) ; / * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* jQuery
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* / $ . f n [ N A M E ] = T a b . _ j Q u e r y I n t e r f a c e ; $ . f n [ N A M E ] . C o n s t r u c t o r = T a b ; $ . f n [ N A M E ] . n o C o n f l i c t = f u n c t i o n ( ) {
$ . fn [ NAME ] = JQUERY _NO _CONFLICT ; return Tab . _jQueryInterface ;
} ; return Tab ;
} ) ( jQuery ) ; / * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* Bootstrap ( v4 . 0.0 ) : tooltip . js
* Licensed under MIT ( https : //github.com/twbs/bootstrap/blob/master/LICENSE)
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* / v a r T o o l t i p = ( f u n c t i o n ( $ ) {
2015-08-13 04:17:43 +00:00
/ * *
2015-08-15 19:17:13 +00:00
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* Constants
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* / v a r N A M E = ' t o o l t i p ' ; v a r V E R S I O N = ' 4 . 0 . 0 ' ; v a r D A T A _ K E Y = ' b s . t o o l t i p ' ; v a r E V E N T _ K E Y = ' . ' + D A T A _ K E Y ; v a r J Q U E R Y _ N O _ C O N F L I C T = $ . f n [ N A M E ] ; v a r T R A N S I T I O N _ D U R A T I O N = 1 5 0 ; v a r C L A S S _ P R E F I X = ' b s - t e t h e r ' ; v a r D e f a u l t = { a n i m a t i o n : t r u e , t e m p l a t e : ' < d i v c l a s s = " t o o l t i p " r o l e = " t o o l t i p " > ' + ' < d i v c l a s s = " t o o l t i p - a r r o w " > < / d i v > ' + ' < d i v c l a s s = " t o o l t i p - i n n e r " > < / d i v > < / d i v > ' , t r i g g e r : ' h o v e r f o c u s ' , t i t l e : ' ' , d e l a y : 0 , h t m l : f a l s e , s e l e c t o r : f a l s e , p l a c e m e n t : ' t o p ' , o f f s e t : ' 0 0 ' , c o n s t r a i n t s : [ ] } ; v a r D e f a u l t T y p e = { a n i m a t i o n : ' b o o l e a n ' , t e m p l a t e : ' s t r i n g ' , t i t l e : ' ( s t r i n g | f u n c t i o n ) ' , t r i g g e r : ' s t r i n g ' , d e l a y : ' ( n u m b e r | o b j e c t ) ' , h t m l : ' b o o l e a n ' , s e l e c t o r : ' ( s t r i n g | b o o l e a n ) ' , p l a c e m e n t : ' ( s t r i n g | f u n c t i o n ) ' , o f f s e t : ' s t r i n g ' , c o n s t r a i n t s : ' a r r a y ' } ; v a r A t t a c h m e n t M a p = { T O P : ' b o t t o m c e n t e r ' , R I G H T : ' m i d d l e l e f t ' , B O T T O M : ' t o p c e n t e r ' , L E F T : ' m i d d l e r i g h t ' } ; v a r H o v e r S t a t e = { I N : ' i n ' , O U T : ' o u t ' } ; v a r E v e n t = { H I D E : ' h i d e ' + E V E N T _ K E Y , H I D D E N : ' h i d d e n ' + E V E N T _ K E Y , S H O W : ' s h o w ' + E V E N T _ K E Y , S H O W N : ' s h o w n ' + E V E N T _ K E Y , I N S E R T E D : ' i n s e r t e d ' + E V E N T _ K E Y , C L I C K : ' c l i c k ' + E V E N T _ K E Y , F O C U S I N : ' f o c u s i n ' + E V E N T _ K E Y , F O C U S O U T : ' f o c u s o u t ' + E V E N T _ K E Y , M O U S E E N T E R : ' m o u s e e n t e r ' + E V E N T _ K E Y , M O U S E L E A V E : ' m o u s e l e a v e ' + E V E N T _ K E Y } ; v a r C l a s s N a m e = { F A D E : ' f a d e ' , I N : ' i n ' } ; v a r S e l e c t o r = { T O O L T I P : ' . t o o l t i p ' , T O O L T I P _ I N N E R : ' . t o o l t i p - i n n e r ' } ; v a r T e t h e r C l a s s = { e l e m e n t : f a l s e , e n a b l e d : f a l s e } ; v a r T r i g g e r = { H O V E R : ' h o v e r ' , F O C U S : ' f o c u s ' , C L I C K : ' c l i c k ' , M A N U A L : ' m a n u a l ' } ; / * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* Class Definition
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* / v a r T o o l t i p = ( f u n c t i o n ( ) {
function Tooltip ( element , config ) {
_classCallCheck ( this , Tooltip ) ; // private
this . _isEnabled = true ; this . _timeout = 0 ; this . _hoverState = '' ; this . _activeTrigger = { } ; this . _tether = null ; // protected
this . element = element ; this . config = this . _getConfig ( config ) ; this . tip = null ; this . _setListeners ( ) ;
} / * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* jQuery
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* / / / getters
_createClass ( Tooltip , [ { key : 'enable' , // public
value : function enable ( ) {
this . _isEnabled = true ;
} } , { key : 'disable' , value : function disable ( ) {
this . _isEnabled = false ;
} } , { key : 'toggleEnabled' , value : function toggleEnabled ( ) {
this . _isEnabled = ! this . _isEnabled ;
} } , { key : 'toggle' , value : function toggle ( event ) {
var context = this ; var dataKey = this . constructor . DATA _KEY ; if ( event ) {
context = $ ( event . currentTarget ) . data ( dataKey ) ; if ( ! context ) {
context = new this . constructor ( event . currentTarget , this . _getDelegateConfig ( ) ) ; $ ( event . currentTarget ) . data ( dataKey , context ) ;
} context . _activeTrigger . click = ! context . _activeTrigger . click ; if ( context . _isWithActiveTrigger ( ) ) {
context . _enter ( null , context ) ;
} else {
context . _leave ( null , context ) ;
}
} else {
$ ( context . getTipElement ( ) ) . hasClass ( ClassName . IN ) ? context . _leave ( null , context ) : context . _enter ( null , context ) ;
}
} } , { key : 'dispose' , value : function dispose ( ) {
clearTimeout ( this . _timeout ) ; this . cleanupTether ( ) ; $ . removeData ( this . element , this . constructor . DATA _KEY ) ; $ ( this . element ) . off ( this . constructor . EVENT _KEY ) ; if ( this . tip ) {
$ ( this . tip ) . remove ( ) ;
} this . _isEnabled = null ; this . _timeout = null ; this . _hoverState = null ; this . _activeTrigger = null ; this . _tether = null ; this . element = null ; this . config = null ; this . tip = null ;
} } , { key : 'show' , value : function show ( ) {
var _this16 = this ; var showEvent = $ . Event ( this . constructor . Event . SHOW ) ; if ( this . isWithContent ( ) && this . _isEnabled ) {
$ ( this . element ) . trigger ( showEvent ) ; var isInTheDom = $ . contains ( this . element . ownerDocument . documentElement , this . element ) ; if ( showEvent . isDefaultPrevented ( ) || ! isInTheDom ) {
return ;
} var tip = this . getTipElement ( ) ; var tipId = Util . getUID ( this . constructor . NAME ) ; tip . setAttribute ( 'id' , tipId ) ; this . element . setAttribute ( 'aria-describedby' , tipId ) ; this . setContent ( ) ; if ( this . config . animation ) {
$ ( tip ) . addClass ( ClassName . FADE ) ;
} var placement = typeof this . config . placement === 'function' ? this . config . placement . call ( this , tip , this . element ) : this . config . placement ; var attachment = this . _getAttachment ( placement ) ; $ ( tip ) . data ( this . constructor . DATA _KEY , this ) . appendTo ( document . body ) ; $ ( this . element ) . trigger ( this . constructor . Event . INSERTED ) ; this . _tether = new Tether ( { element : tip , target : this . element , attachment : attachment , classes : TetherClass , classPrefix : CLASS _PREFIX , offset : this . config . offset , constraints : this . config . constraints } ) ; Util . reflow ( tip ) ; this . _tether . position ( ) ; $ ( tip ) . addClass ( ClassName . IN ) ; var complete = function complete ( ) {
var prevHoverState = _this16 . _hoverState ; _this16 . _hoverState = null ; $ ( _this16 . element ) . trigger ( _this16 . constructor . Event . SHOWN ) ; if ( prevHoverState === HoverState . OUT ) {
_this16 . _leave ( null , _this16 ) ;
}
} ; Util . supportsTransitionEnd ( ) && $ ( this . tip ) . hasClass ( ClassName . FADE ) ? $ ( this . tip ) . one ( Util . TRANSITION _END , complete ) . emulateTransitionEnd ( Tooltip . _TRANSITION _DURATION ) : complete ( ) ;
}
} } , { key : 'hide' , value : function hide ( callback ) {
var _this17 = this ; var tip = this . getTipElement ( ) ; var hideEvent = $ . Event ( this . constructor . Event . HIDE ) ; var complete = function complete ( ) {
if ( _this17 . _hoverState !== HoverState . IN && tip . parentNode ) {
tip . parentNode . removeChild ( tip ) ;
} _this17 . element . removeAttribute ( 'aria-describedby' ) ; $ ( _this17 . element ) . trigger ( _this17 . constructor . Event . HIDDEN ) ; _this17 . cleanupTether ( ) ; if ( callback ) {
callback ( ) ;
}
} ; $ ( this . element ) . trigger ( hideEvent ) ; if ( hideEvent . isDefaultPrevented ( ) ) {
2015-08-13 04:17:43 +00:00
return ;
2015-08-15 19:17:13 +00:00
} $ ( tip ) . removeClass ( ClassName . IN ) ; if ( Util . supportsTransitionEnd ( ) && $ ( this . tip ) . hasClass ( ClassName . FADE ) ) {
$ ( tip ) . one ( Util . TRANSITION _END , complete ) . emulateTransitionEnd ( TRANSITION _DURATION ) ;
} else {
complete ( ) ;
} this . _hoverState = '' ;
} // protected
} , { key : 'isWithContent' , 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' ; $ ( tip ) . find ( Selector . TOOLTIP _INNER ) [ 0 ] [ method ] = title ; $ ( tip ) . removeClass ( ClassName . FADE ) . removeClass ( ClassName . IN ) ; this . cleanupTether ( ) ;
} } , { key : 'getTitle' , value : function getTitle ( ) {
var title = this . element . getAttribute ( 'data-original-title' ) ; if ( ! title ) {
title = typeof this . config . title === 'function' ? this . config . title . call ( this . element ) : this . config . title ;
} 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 ) ;
2015-08-13 04:17:43 +00:00
}
2015-08-15 19:17:13 +00:00
} // private
} , { key : '_getAttachment' , value : function _getAttachment ( placement ) {
return AttachmentMap [ placement . toUpperCase ( ) ] ;
} } , { key : '_setListeners' , value : function _setListeners ( ) {
var _this18 = this ; var triggers = this . config . trigger . split ( ' ' ) ; 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 ; $ ( _this18 . element ) . on ( eventIn , _this18 . config . selector , $ . proxy ( _this18 . _enter , _this18 ) ) . on ( eventOut , _this18 . config . selector , $ . proxy ( _this18 . _leave , _this18 ) ) ;
}
} ) ; if ( this . config . selector ) {
this . config = $ . extend ( { } , this . config , { trigger : 'manual' , selector : '' } ) ;
} else {
this . _fixTitle ( ) ;
2015-08-13 04:17:43 +00:00
}
2015-08-15 19:17:13 +00:00
} } , { key : '_removeTetherClasses' , value : function _removeTetherClasses ( i , css ) {
return ( ( css . baseVal || css ) . match ( new RegExp ( '(^|\\s)' + CLASS _PREFIX + '-\\S+' , 'g' ) ) || [ ] ) . join ( ' ' ) ;
} } , { 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' , '' ) ;
2015-06-18 22:48:54 +00:00
}
2015-08-15 19:17:13 +00:00
} } , { key : '_enter' , value : function _enter ( event , context ) {
var dataKey = this . constructor . DATA _KEY ; context = context || $ ( event . currentTarget ) . data ( dataKey ) ; if ( ! context ) {
context = new this . constructor ( event . currentTarget , this . _getDelegateConfig ( ) ) ; $ ( event . currentTarget ) . data ( dataKey , context ) ;
} if ( event ) {
context . _activeTrigger [ event . type == 'focusin' ? Trigger . FOCUS : Trigger . HOVER ] = true ;
} if ( $ ( context . getTipElement ( ) ) . hasClass ( ClassName . IN ) || context . _hoverState === HoverState . IN ) {
context . _hoverState = HoverState . IN ; return ;
} clearTimeout ( context . _timeout ) ; context . _hoverState = HoverState . IN ; if ( ! context . config . delay || ! context . config . delay . show ) {
context . show ( ) ; return ;
} 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 ; context = context || $ ( event . currentTarget ) . data ( dataKey ) ; if ( ! context ) {
context = new this . constructor ( event . currentTarget , this . _getDelegateConfig ( ) ) ; $ ( event . currentTarget ) . data ( dataKey , context ) ;
} if ( event ) {
context . _activeTrigger [ event . type == 'focusout' ? Trigger . FOCUS : Trigger . HOVER ] = false ;
} if ( context . _isWithActiveTrigger ( ) ) {
return ;
} clearTimeout ( context . _timeout ) ; context . _hoverState = HoverState . OUT ; if ( ! context . config . delay || ! context . config . delay . hide ) {
context . hide ( ) ; return ;
} 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 ;
}
} 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 } ;
} Util . typeCheckConfig ( NAME , config , this . constructor . DefaultType ) ; 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 ;
}
}
} return config ;
} // static
} ] , [ { key : '_jQueryInterface' , 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 ] ( ) ;
}
} ) ;
} } , { key : 'VERSION' , get : function get ( ) {
return VERSION ;
} } , { key : 'Default' , get : function get ( ) {
return Default ;
} } , { key : 'NAME' , get : function get ( ) {
return NAME ;
} } , { key : 'DATA_KEY' , get : function get ( ) {
return DATA _KEY ;
} } , { key : 'Event' , get : function get ( ) {
return Event ;
} } , { key : 'EVENT_KEY' , get : function get ( ) {
return EVENT _KEY ;
} } , { key : 'DefaultType' , get : function get ( ) {
return DefaultType ;
} } ] ) ; return Tooltip ;
} ) ( ) ; $ . fn [ NAME ] = Tooltip . _jQueryInterface ; $ . fn [ NAME ] . Constructor = Tooltip ; $ . fn [ NAME ] . noConflict = function ( ) {
$ . fn [ NAME ] = JQUERY _NO _CONFLICT ; return Tooltip . _jQueryInterface ;
} ; return Tooltip ;
} ) ( jQuery ) ; / * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* Bootstrap ( v4 . 0.0 ) : popover . js
* Licensed under MIT ( https : //github.com/twbs/bootstrap/blob/master/LICENSE)
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* / v a r P o p o v e r = ( f u n c t i o n ( $ ) {
/ * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* Constants
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* / v a r N A M E = ' p o p o v e r ' ; v a r V E R S I O N = ' 4 . 0 . 0 ' ; v a r D A T A _ K E Y = ' b s . p o p o v e r ' ; v a r E V E N T _ K E Y = ' . ' + D A T A _ K E Y ; v a r J Q U E R Y _ N O _ C O N F L I C T = $ . f n [ N A M E ] ; v a r D e f a u l t = $ . e x t e n d ( { } , T o o l t i p . D e f a u l t , { p l a c e m e n t : ' r i g h t ' , t r i g g e r : ' c l i c k ' , c o n t e n t : ' ' , t e m p l a t e : ' < d i v c l a s s = " p o p o v e r " r o l e = " t o o l t i p " > ' + ' < d i v c l a s s = " p o p o v e r - a r r o w " > < / d i v > ' + ' < h 3 c l a s s = " p o p o v e r - t i t l e " > < / h 3 > ' + ' < d i v c l a s s = " p o p o v e r - c o n t e n t " > < / d i v > < / d i v > ' } ) ; v a r D e f a u l t T y p e = $ . e x t e n d ( { } , T o o l t i p . D e f a u l t T y p e , { c o n t e n t : ' ( s t r i n g | f u n c t i o n ) ' } ) ; v a r C l a s s N a m e = { F A D E : ' f a d e ' , I N : ' i n ' } ; v a r S e l e c t o r = { T I T L E : ' . p o p o v e r - t i t l e ' , C O N T E N T : ' . p o p o v e r - c o n t e n t ' , A R R O W : ' . p o p o v e r - a r r o w ' } ; v a r E v e n t = { H I D E : ' h i d e ' + E V E N T _ K E Y , H I D D E N : ' h i d d e n ' + E V E N T _ K E Y , S H O W : ' s h o w ' + E V E N T _ K E Y , S H O W N : ' s h o w n ' + E V E N T _ K E Y , I N S E R T E D : ' i n s e r t e d ' + E V E N T _ K E Y , C L I C K : ' c l i c k ' + E V E N T _ K E Y , F O C U S I N : ' f o c u s i n ' + E V E N T _ K E Y , F O C U S O U T : ' f o c u s o u t ' + E V E N T _ K E Y , M O U S E E N T E R : ' m o u s e e n t e r ' + E V E N T _ K E Y , M O U S E L E A V E : ' m o u s e l e a v e ' + E V E N T _ K E Y } ; / * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* Class Definition
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* / v a r P o p o v e r = ( f u n c t i o n ( _ T o o l t i p ) {
_inherits ( Popover , _Tooltip ) ; function Popover ( ) {
_classCallCheck ( this , Popover ) ; _get ( Object . getPrototypeOf ( Popover . prototype ) , 'constructor' , this ) . apply ( this , arguments ) ;
} / * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* jQuery
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* / _ c r e a t e C l a s s ( P o p o v e r , [ { k e y : ' i s W i t h C o n t e n t ' , / / o v e r r i d e s
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 ;
} // 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 ) ; $ ( tip ) . removeClass ( ClassName . FADE ) . removeClass ( ClassName . IN ) ; this . cleanupTether ( ) ;
} // private
} , { key : '_getContent' , value : function _getContent ( ) {
return this . element . getAttribute ( 'data-content' ) || ( typeof this . config . content == 'function' ? this . config . content . call ( this . element ) : this . config . content ) ;
} // static
} ] , [ { key : '_jQueryInterface' , 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 ] ( ) ;
}
} ) ;
} } , { key : 'VERSION' , // getters
get : function get ( ) {
return VERSION ;
} } , { key : 'Default' , get : function get ( ) {
return Default ;
} } , { key : 'NAME' , get : function get ( ) {
return NAME ;
} } , { key : 'DATA_KEY' , get : function get ( ) {
return DATA _KEY ;
} } , { key : 'Event' , get : function get ( ) {
return Event ;
} } , { key : 'EVENT_KEY' , get : function get ( ) {
return EVENT _KEY ;
} } , { key : 'DefaultType' , get : function get ( ) {
return DefaultType ;
} } ] ) ; return Popover ;
} ) ( Tooltip ) ; $ . fn [ NAME ] = Popover . _jQueryInterface ; $ . fn [ NAME ] . Constructor = Popover ; $ . fn [ NAME ] . noConflict = function ( ) {
$ . fn [ NAME ] = JQUERY _NO _CONFLICT ; return Popover . _jQueryInterface ;
} ; return Popover ;
} ) ( jQuery ) ;
2015-05-12 23:52:54 +00:00
} ) ( jQuery ) ;