Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
B
bootstrap
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
bootstrap
Commits
b31c35b6
Commit
b31c35b6
authored
Jun 23, 2014
by
Jacob
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #13904 from twbs/revert-umd
Revert UMD for now, due to #13812.
parents
25b06d92
c2c19a4d
Changes
17
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
1491 additions
and
1563 deletions
+1491
-1563
Gruntfile.js
Gruntfile.js
+1
-1
dist/js/bootstrap.js
dist/js/bootstrap.js
+1
-1
docs/assets/js/_src/customizer.js
docs/assets/js/_src/customizer.js
+1
-1
js/.jscsrc
js/.jscsrc
+2
-1
js/.jshintrc
js/.jshintrc
+1
-2
js/affix.js
js/affix.js
+93
-99
js/alert.js
js/alert.js
+56
-62
js/button.js
js/button.js
+74
-80
js/carousel.js
js/carousel.js
+169
-175
js/collapse.js
js/collapse.js
+117
-123
js/dropdown.js
js/dropdown.js
+99
-105
js/modal.js
js/modal.js
+202
-208
js/popover.js
js/popover.js
+75
-81
js/scrollspy.js
js/scrollspy.js
+127
-133
js/tab.js
js/tab.js
+88
-94
js/tooltip.js
js/tooltip.js
+345
-351
js/transition.js
js/transition.js
+40
-46
No files found.
Gruntfile.js
View file @
b31c35b6
...
@@ -33,7 +33,7 @@ module.exports = function (grunt) {
...
@@ -33,7 +33,7 @@ module.exports = function (grunt) {
'
* Licensed under <%= pkg.license.type %> (<%= pkg.license.url %>)
\n
'
+
'
* Licensed under <%= pkg.license.type %> (<%= pkg.license.url %>)
\n
'
+
'
*/
\n
'
,
'
*/
\n
'
,
// NOTE: This jqueryCheck code is duplicated in customizer.js; if making changes here, be sure to update the other copy too.
// NOTE: This jqueryCheck code is duplicated in customizer.js; if making changes here, be sure to update the other copy too.
jqueryCheck
:
'
if (typeof
define ==
\'
undefined
\'
&& typeof exports ==
\'
undefined
\'
&& typeof jQuery
==
\'
undefined
\'
) { throw new Error(
\'
Bootstrap
\\\'
s JavaScript requires jQuery
\'
) }
\n\n
'
,
jqueryCheck
:
'
if (typeof
jQuery =
==
\'
undefined
\'
) { throw new Error(
\'
Bootstrap
\\\'
s JavaScript requires jQuery
\'
) }
\n\n
'
,
// Task configuration.
// Task configuration.
clean
:
{
clean
:
{
...
...
dist/js/bootstrap.js
View file @
b31c35b6
...
@@ -4,7 +4,7 @@
...
@@ -4,7 +4,7 @@
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
*/
if
(
typeof
define
==
'
undefined
'
&&
typeof
exports
==
'
undefined
'
&&
typeof
jQuery
==
'
undefined
'
)
{
throw
new
Error
(
'
Bootstrap
\'
s JavaScript requires jQuery
'
)
}
if
(
typeof
jQuery
=
==
'
undefined
'
)
{
throw
new
Error
(
'
Bootstrap
\'
s JavaScript requires jQuery
'
)
}
/* ========================================================================
/* ========================================================================
* Bootstrap: transition.js v3.1.1
* Bootstrap: transition.js v3.1.1
...
...
docs/assets/js/_src/customizer.js
View file @
b31c35b6
...
@@ -306,7 +306,7 @@ window.onload = function () { // wait for load in a dumb way because B-0
...
@@ -306,7 +306,7 @@ window.onload = function () { // wait for load in a dumb way because B-0
function
generateJS
(
preamble
)
{
function
generateJS
(
preamble
)
{
var
$checked
=
$
(
'
#plugin-section input:checked
'
)
var
$checked
=
$
(
'
#plugin-section input:checked
'
)
var
jqueryCheck
=
'
if (typeof
define ==
\'
undefined
\'
&& typeof exports ==
\'
undefined
\'
&& typeof jQuery ==
\'
undefined
\'
) { throw new Error(
\'
Bootstrap
\\\'
s JavaScript requires jQuery
\'
) }
\n\n
'
var
jqueryCheck
=
'
if (typeof
jQuery === "undefined") { throw new Error("Bootstrap
\'
s JavaScript requires jQuery"
) }
\n\n
'
if
(
!
$checked
.
length
)
return
false
if
(
!
$checked
.
length
)
return
false
...
...
js/.jscsrc
View file @
b31c35b6
...
@@ -11,9 +11,10 @@
...
@@ -11,9 +11,10 @@
"disallowSpaceBeforePostfixUnaryOperators": ["++", "--"],
"disallowSpaceBeforePostfixUnaryOperators": ["++", "--"],
"disallowSpacesInNamedFunctionExpression": { "beforeOpeningRoundBrace": true },
"disallowSpacesInNamedFunctionExpression": { "beforeOpeningRoundBrace": true },
"disallowSpacesInsideArrayBrackets": true,
"disallowSpacesInsideArrayBrackets": true,
"disallowTrailingComma": true,
"disallowSpacesInsideParentheses": true,
"disallowSpacesInsideParentheses": true,
"disallowTrailingComma": true,
"disallowTrailingWhitespace": true,
"disallowTrailingWhitespace": true,
"requireCamelCaseOrUpperCaseIdentifiers": true,
"requireCapitalizedConstructors": true,
"requireCapitalizedConstructors": true,
"requireCommaBeforeLineBreak": true,
"requireCommaBeforeLineBreak": true,
"requireDotNotation": true,
"requireDotNotation": true,
...
...
js/.jshintrc
View file @
b31c35b6
...
@@ -11,6 +11,5 @@
...
@@ -11,6 +11,5 @@
"nonbsp" : true,
"nonbsp" : true,
"strict" : true,
"strict" : true,
"undef" : true,
"undef" : true,
"unused" : true,
"unused" : true
"predef" : [ "define", "require" ]
}
}
js/affix.js
View file @
b31c35b6
...
@@ -7,142 +7,136 @@
...
@@ -7,142 +7,136 @@
* ======================================================================== */
* ======================================================================== */
+
function
()
{
'
use strict
'
;
+
function
(
$
)
{
'
use strict
'
;
(
function
(
o_o
)
{
// AFFIX CLASS DEFINITION
typeof
define
==
'
function
'
&&
define
.
amd
?
define
([
'
jquery
'
],
o_o
)
:
// ======================
typeof
exports
==
'
object
'
?
o_o
(
require
(
'
jquery
'
))
:
o_o
(
jQuery
)
})(
function
(
$
)
{
// AFFIX CLASS DEFINITION
var
Affix
=
function
(
element
,
options
)
{
// ======================
this
.
options
=
$
.
extend
({},
Affix
.
DEFAULTS
,
options
)
var
Affix
=
function
(
element
,
options
)
{
this
.
$target
=
$
(
this
.
options
.
target
)
this
.
options
=
$
.
extend
({},
Affix
.
DEFAULTS
,
options
)
.
on
(
'
scroll.bs.affix.data-api
'
,
$
.
proxy
(
this
.
checkPosition
,
this
))
.
on
(
'
click.bs.affix.data-api
'
,
$
.
proxy
(
this
.
checkPositionWithEventLoop
,
this
))
this
.
$target
=
$
(
this
.
options
.
target
)
this
.
$element
=
$
(
element
)
.
on
(
'
scroll.bs.affix.data-api
'
,
$
.
proxy
(
this
.
checkPosition
,
this
))
this
.
affixed
=
.
on
(
'
click.bs.affix.data-api
'
,
$
.
proxy
(
this
.
checkPositionWithEventLoop
,
this
))
this
.
unpin
=
this
.
pinnedOffset
=
null
this
.
$element
=
$
(
element
)
this
.
checkPosition
()
this
.
affixed
=
}
this
.
unpin
=
this
.
pinnedOffset
=
null
this
.
checkPosition
()
Affix
.
VERSION
=
'
3.1.1
'
}
Affix
.
VERSION
=
'
3.1.1
'
Affix
.
RESET
=
'
affix affix-top affix-bottom
'
Affix
.
RESET
=
'
affix affix-top affix-bottom
'
Affix
.
DEFAULTS
=
{
Affix
.
DEFAULTS
=
{
offset
:
0
,
offset
:
0
,
target
:
window
target
:
window
}
}
Affix
.
prototype
.
getPinnedOffset
=
function
()
{
Affix
.
prototype
.
getPinnedOffset
=
function
()
{
if
(
this
.
pinnedOffset
)
return
this
.
pinnedOffset
if
(
this
.
pinnedOffset
)
return
this
.
pinnedOffset
this
.
$element
.
removeClass
(
Affix
.
RESET
).
addClass
(
'
affix
'
)
this
.
$element
.
removeClass
(
Affix
.
RESET
).
addClass
(
'
affix
'
)
var
scrollTop
=
this
.
$target
.
scrollTop
()
var
scrollTop
=
this
.
$target
.
scrollTop
()
var
position
=
this
.
$element
.
offset
()
var
position
=
this
.
$element
.
offset
()
return
(
this
.
pinnedOffset
=
position
.
top
-
scrollTop
)
return
(
this
.
pinnedOffset
=
position
.
top
-
scrollTop
)
}
}
Affix
.
prototype
.
checkPositionWithEventLoop
=
function
()
{
Affix
.
prototype
.
checkPositionWithEventLoop
=
function
()
{
setTimeout
(
$
.
proxy
(
this
.
checkPosition
,
this
),
1
)
setTimeout
(
$
.
proxy
(
this
.
checkPosition
,
this
),
1
)
}
}
Affix
.
prototype
.
checkPosition
=
function
()
{
Affix
.
prototype
.
checkPosition
=
function
()
{
if
(
!
this
.
$element
.
is
(
'
:visible
'
))
return
if
(
!
this
.
$element
.
is
(
'
:visible
'
))
return
var
scrollHeight
=
$
(
document
).
height
()
var
scrollHeight
=
$
(
document
).
height
()
var
scrollTop
=
this
.
$target
.
scrollTop
()
var
scrollTop
=
this
.
$target
.
scrollTop
()
var
position
=
this
.
$element
.
offset
()
var
position
=
this
.
$element
.
offset
()
var
offset
=
this
.
options
.
offset
var
offset
=
this
.
options
.
offset
var
offsetTop
=
offset
.
top
var
offsetTop
=
offset
.
top
var
offsetBottom
=
offset
.
bottom
var
offsetBottom
=
offset
.
bottom
if
(
typeof
offset
!=
'
object
'
)
offsetBottom
=
offsetTop
=
offset
if
(
typeof
offset
!=
'
object
'
)
offsetBottom
=
offsetTop
=
offset
if
(
typeof
offsetTop
==
'
function
'
)
offsetTop
=
offset
.
top
(
this
.
$element
)
if
(
typeof
offsetTop
==
'
function
'
)
offsetTop
=
offset
.
top
(
this
.
$element
)
if
(
typeof
offsetBottom
==
'
function
'
)
offsetBottom
=
offset
.
bottom
(
this
.
$element
)
if
(
typeof
offsetBottom
==
'
function
'
)
offsetBottom
=
offset
.
bottom
(
this
.
$element
)
var
affix
=
this
.
unpin
!=
null
&&
(
scrollTop
+
this
.
unpin
<=
position
.
top
)
?
false
:
var
affix
=
this
.
unpin
!=
null
&&
(
scrollTop
+
this
.
unpin
<=
position
.
top
)
?
false
:
offsetBottom
!=
null
&&
(
position
.
top
+
this
.
$element
.
height
()
>=
scrollHeight
-
offsetBottom
)
?
'
bottom
'
:
offsetBottom
!=
null
&&
(
position
.
top
+
this
.
$element
.
height
()
>=
scrollHeight
-
offsetBottom
)
?
'
bottom
'
:
offsetTop
!=
null
&&
(
scrollTop
<=
offsetTop
)
?
'
top
'
:
false
offsetTop
!=
null
&&
(
scrollTop
<=
offsetTop
)
?
'
top
'
:
false
if
(
this
.
affixed
===
affix
)
return
if
(
this
.
affixed
===
affix
)
return
if
(
this
.
unpin
!=
null
)
this
.
$element
.
css
(
'
top
'
,
''
)
if
(
this
.
unpin
!=
null
)
this
.
$element
.
css
(
'
top
'
,
''
)
var
affixType
=
'
affix
'
+
(
affix
?
'
-
'
+
affix
:
''
)
var
affixType
=
'
affix
'
+
(
affix
?
'
-
'
+
affix
:
''
)
var
e
=
$
.
Event
(
affixType
+
'
.bs.affix
'
)
var
e
=
$
.
Event
(
affixType
+
'
.bs.affix
'
)
this
.
$element
.
trigger
(
e
)
this
.
$element
.
trigger
(
e
)
if
(
e
.
isDefaultPrevented
())
return
if
(
e
.
isDefaultPrevented
())
return
this
.
affixed
=
affix
this
.
affixed
=
affix
this
.
unpin
=
affix
==
'
bottom
'
?
this
.
getPinnedOffset
()
:
null
this
.
unpin
=
affix
==
'
bottom
'
?
this
.
getPinnedOffset
()
:
null
this
.
$element
this
.
$element
.
removeClass
(
Affix
.
RESET
)
.
removeClass
(
Affix
.
RESET
)
.
addClass
(
affixType
)
.
addClass
(
affixType
)
.
trigger
(
$
.
Event
(
affixType
.
replace
(
'
affix
'
,
'
affixed
'
)))
.
trigger
(
$
.
Event
(
affixType
.
replace
(
'
affix
'
,
'
affixed
'
)))
if
(
affix
==
'
bottom
'
)
{
if
(
affix
==
'
bottom
'
)
{
this
.
$element
.
offset
({
this
.
$element
.
offset
({
top
:
scrollHeight
-
this
.
$element
.
height
()
-
offsetBottom
top
:
scrollHeight
-
this
.
$element
.
height
()
-
offsetBottom
})
})
}
}
}
}
// AFFIX PLUGIN DEFINITION
// AFFIX PLUGIN DEFINITION
// =======================
// =======================
function
Plugin
(
option
)
{
function
Plugin
(
option
)
{
return
this
.
each
(
function
()
{
return
this
.
each
(
function
()
{
var
$this
=
$
(
this
)
var
$this
=
$
(
this
)
var
data
=
$this
.
data
(
'
bs.affix
'
)
var
data
=
$this
.
data
(
'
bs.affix
'
)
var
options
=
typeof
option
==
'
object
'
&&
option
var
options
=
typeof
option
==
'
object
'
&&
option
if
(
!
data
)
$this
.
data
(
'
bs.affix
'
,
(
data
=
new
Affix
(
this
,
options
)))
if
(
!
data
)
$this
.
data
(
'
bs.affix
'
,
(
data
=
new
Affix
(
this
,
options
)))
if
(
typeof
option
==
'
string
'
)
data
[
option
]()
if
(
typeof
option
==
'
string
'
)
data
[
option
]()
})
})
}
}
var
old
=
$
.
fn
.
affix
var
old
=
$
.
fn
.
affix
$
.
fn
.
affix
=
Plugin
$
.
fn
.
affix
=
Plugin
$
.
fn
.
affix
.
Constructor
=
Affix
$
.
fn
.
affix
.
Constructor
=
Affix
// AFFIX NO CONFLICT
// AFFIX NO CONFLICT
// =================
// =================
$
.
fn
.
affix
.
noConflict
=
function
()
{
$
.
fn
.
affix
.
noConflict
=
function
()
{
$
.
fn
.
affix
=
old
$
.
fn
.
affix
=
old
return
this
return
this
}
}
// AFFIX DATA-API
// AFFIX DATA-API
// ==============
// ==============
$
(
window
).
on
(
'
load
'
,
function
()
{
$
(
window
).
on
(
'
load
'
,
function
()
{
$
(
'
[data-spy="affix"]
'
).
each
(
function
()
{
$
(
'
[data-spy="affix"]
'
).
each
(
function
()
{
var
$spy
=
$
(
this
)
var
$spy
=
$
(
this
)
var
data
=
$spy
.
data
()
var
data
=
$spy
.
data
()
data
.
offset
=
data
.
offset
||
{}
data
.
offset
=
data
.
offset
||
{}
if
(
data
.
offsetBottom
)
data
.
offset
.
bottom
=
data
.
offsetBottom
if
(
data
.
offsetBottom
)
data
.
offset
.
bottom
=
data
.
offsetBottom
if
(
data
.
offsetTop
)
data
.
offset
.
top
=
data
.
offsetTop
if
(
data
.
offsetTop
)
data
.
offset
.
top
=
data
.
offsetTop
Plugin
.
call
(
$spy
,
data
)
Plugin
.
call
(
$spy
,
data
)
})
})
})
})
})
}();
}(
jQuery
);
js/alert.js
View file @
b31c35b6
...
@@ -7,92 +7,86 @@
...
@@ -7,92 +7,86 @@
* ======================================================================== */
* ======================================================================== */
+
function
()
{
'
use strict
'
;
+
function
(
$
)
{
'
use strict
'
;
(
function
(
o_o
)
{
// ALERT CLASS DEFINITION
typeof
define
==
'
function
'
&&
define
.
amd
?
define
([
'
jquery
'
],
o_o
)
:
// ======================
typeof
exports
==
'
object
'
?
o_o
(
require
(
'
jquery
'
))
:
o_o
(
jQuery
)
})(
function
(
$
)
{
// ALERT CLASS DEFINITION
var
dismiss
=
'
[data-dismiss="alert"]
'
// ======================
var
Alert
=
function
(
el
)
{
$
(
el
).
on
(
'
click
'
,
dismiss
,
this
.
close
)
}
var
dismiss
=
'
[data-dismiss="alert"]
'
Alert
.
VERSION
=
'
3.1.1
'
var
Alert
=
function
(
el
)
{
$
(
el
).
on
(
'
click
'
,
dismiss
,
this
.
close
)
}
Alert
.
VERSION
=
'
3.1.1
'
Alert
.
prototype
.
close
=
function
(
e
)
{
Alert
.
prototype
.
close
=
function
(
e
)
{
var
$this
=
$
(
this
)
var
$this
=
$
(
this
)
var
selector
=
$this
.
attr
(
'
data-target
'
)
var
selector
=
$this
.
attr
(
'
data-target
'
)
if
(
!
selector
)
{
if
(
!
selector
)
{
selector
=
$this
.
attr
(
'
href
'
)
selector
=
$this
.
attr
(
'
href
'
)
selector
=
selector
&&
selector
.
replace
(
/.*
(?=
#
[^\s]
*$
)
/
,
''
)
// strip for ie7
selector
=
selector
&&
selector
.
replace
(
/.*
(?=
#
[^\s]
*$
)
/
,
''
)
// strip for ie7
}
}
var
$parent
=
$
(
selector
)
if
(
e
)
e
.
preventDefault
(
)
var
$parent
=
$
(
selector
)
if
(
!
$parent
.
length
)
{
if
(
e
)
e
.
preventDefault
()
$parent
=
$this
.
hasClass
(
'
alert
'
)
?
$this
:
$this
.
parent
()
}
$parent
.
trigger
(
e
=
$
.
Event
(
'
close.bs.alert
'
))
if
(
!
$parent
.
length
)
{
$parent
=
$this
.
hasClass
(
'
alert
'
)
?
$this
:
$this
.
parent
()
}
if
(
e
.
isDefaultPrevented
())
return
$parent
.
trigger
(
e
=
$
.
Event
(
'
close.bs.alert
'
))
$parent
.
removeClass
(
'
in
'
)
if
(
e
.
isDefaultPrevented
())
return
function
removeElement
()
{
$parent
.
removeClass
(
'
in
'
)
// detach from parent, fire event then clean up data
$parent
.
detach
().
trigger
(
'
closed.bs.alert
'
).
remove
()
}
$
.
support
.
transition
&&
$parent
.
hasClass
(
'
fade
'
)
?
function
removeElement
()
{
$parent
// detach from parent, fire event then clean up data
.
one
(
'
bsTransitionEnd
'
,
removeElement
)
$parent
.
detach
().
trigger
(
'
closed.bs.alert
'
).
remove
()
.
emulateTransitionEnd
(
150
)
:
removeElement
()
}
}
$
.
support
.
transition
&&
$parent
.
hasClass
(
'
fade
'
)
?
$parent
.
one
(
'
bsTransitionEnd
'
,
removeElement
)
.
emulateTransitionEnd
(
150
)
:
removeElement
()
}
// ALERT PLUGIN DEFINITION
// =======================
function
Plugin
(
option
)
{
// ALERT PLUGIN DEFINITION
return
this
.
each
(
function
()
{
// =======================
var
$this
=
$
(
this
)
var
data
=
$this
.
data
(
'
bs.alert
'
)
if
(
!
data
)
$this
.
data
(
'
bs.alert
'
,
(
data
=
new
Alert
(
this
)))
function
Plugin
(
option
)
{
if
(
typeof
option
==
'
string
'
)
data
[
option
].
call
(
$this
)
return
this
.
each
(
function
()
{
}
)
var
$this
=
$
(
this
)
}
var
data
=
$this
.
data
(
'
bs.alert
'
)
var
old
=
$
.
fn
.
alert
if
(
!
data
)
$this
.
data
(
'
bs.alert
'
,
(
data
=
new
Alert
(
this
)))
if
(
typeof
option
==
'
string
'
)
data
[
option
].
call
(
$this
)
})
}
$
.
fn
.
alert
=
Plugin
var
old
=
$
.
fn
.
alert
$
.
fn
.
alert
.
Constructor
=
Alert
$
.
fn
.
alert
=
Plugin
$
.
fn
.
alert
.
Constructor
=
Alert
// ALERT NO CONFLICT
// =================
$
.
fn
.
alert
.
noConflict
=
function
()
{
// ALERT NO CONFLICT
$
.
fn
.
alert
=
old
// =================
return
this
}
$
.
fn
.
alert
.
noConflict
=
function
()
{
$
.
fn
.
alert
=
old
return
this
}
// ALERT DATA-API
// ==============
$
(
document
).
on
(
'
click.bs.alert.data-api
'
,
dismiss
,
Alert
.
prototype
.
close
)
// ALERT DATA-API
// ==============
}
)
$
(
document
).
on
(
'
click.bs.alert.data-api
'
,
dismiss
,
Alert
.
prototype
.
close
)
}();
}(
jQuery
);
js/button.js
View file @
b31c35b6
...
@@ -7,110 +7,104 @@
...
@@ -7,110 +7,104 @@
* ======================================================================== */
* ======================================================================== */
+
function
()
{
'
use strict
'
;
+
function
(
$
)
{
'
use strict
'
;
(
function
(
o_o
)
{
// BUTTON PUBLIC CLASS DEFINITION
typeof
define
==
'
function
'
&&
define
.
amd
?
define
([
'
jquery
'
],
o_o
)
:
// ==============================
typeof
exports
==
'
object
'
?
o_o
(
require
(
'
jquery
'
))
:
o_o
(
jQuery
)
})(
function
(
$
)
{
// BUTTON PUBLIC CLASS DEFINITION
var
Button
=
function
(
element
,
options
)
{
// ==============================
this
.
$element
=
$
(
element
)
this
.
options
=
$
.
extend
({},
Button
.
DEFAULTS
,
options
)
this
.
isLoading
=
false
}
var
Button
=
function
(
element
,
options
)
{
Button
.
VERSION
=
'
3.1.1
'
this
.
$element
=
$
(
element
)
this
.
options
=
$
.
extend
({},
Button
.
DEFAULTS
,
options
)
this
.
isLoading
=
false
}
Button
.
VERSION
=
'
3.1.1
'
Button
.
DEFAULTS
=
{
loadingText
:
'
loading...
'
}
Button
.
prototype
.
setState
=
function
(
state
)
{
Button
.
DEFAULTS
=
{
var
d
=
'
disabled
'
loadingText
:
'
loading...
'
var
$el
=
this
.
$element
}
var
val
=
$el
.
is
(
'
input
'
)
?
'
val
'
:
'
html
'
var
data
=
$el
.
data
()
state
=
state
+
'
Text
'
Button
.
prototype
.
setState
=
function
(
state
)
{
var
d
=
'
disabled
'
var
$el
=
this
.
$element
var
val
=
$el
.
is
(
'
input
'
)
?
'
val
'
:
'
html
'
var
data
=
$el
.
data
()
if
(
data
.
resetText
==
null
)
$el
.
data
(
'
resetText
'
,
$el
[
val
]())
state
=
state
+
'
Text
'
$el
[
val
](
data
[
state
]
==
null
?
this
.
options
[
state
]
:
data
[
state
]
)
if
(
data
.
resetText
==
null
)
$el
.
data
(
'
resetText
'
,
$el
[
val
]()
)
// push to event loop to allow forms to submit
$el
[
val
](
data
[
state
]
==
null
?
this
.
options
[
state
]
:
data
[
state
])
setTimeout
(
$
.
proxy
(
function
()
{
if
(
state
==
'
loadingText
'
)
{
this
.
isLoading
=
true
$el
.
addClass
(
d
).
attr
(
d
,
d
)
}
else
if
(
this
.
isLoading
)
{
this
.
isLoading
=
false
$el
.
removeClass
(
d
).
removeAttr
(
d
)
}
},
this
),
0
)
}
Button
.
prototype
.
toggle
=
function
()
{
// push to event loop to allow forms to submit
var
changed
=
true
setTimeout
(
$
.
proxy
(
function
()
{
var
$parent
=
this
.
$element
.
closest
(
'
[data-toggle="buttons"]
'
)
if
(
state
==
'
loadingText
'
)
{
this
.
isLoading
=
true
if
(
$parent
.
length
)
{
$el
.
addClass
(
d
).
attr
(
d
,
d
)
var
$input
=
this
.
$element
.
find
(
'
input
'
)
}
else
if
(
this
.
isLoading
)
{
if
(
$input
.
prop
(
'
type
'
)
==
'
radio
'
)
{
this
.
isLoading
=
false
if
(
$input
.
prop
(
'
checked
'
)
&&
this
.
$element
.
hasClass
(
'
active
'
))
changed
=
false
$el
.
removeClass
(
d
).
removeAttr
(
d
)
else
$parent
.
find
(
'
.active
'
).
removeClass
(
'
active
'
)
}
if
(
changed
)
$input
.
prop
(
'
checked
'
,
!
this
.
$element
.
hasClass
(
'
active
'
)).
trigger
(
'
change
'
)
}
}
},
this
),
0
)
if
(
changed
)
this
.
$element
.
toggleClass
(
'
active
'
)
}
Button
.
prototype
.
toggle
=
function
()
{
var
changed
=
true
var
$parent
=
this
.
$element
.
closest
(
'
[data-toggle="buttons"]
'
)
if
(
$parent
.
length
)
{
var
$input
=
this
.
$element
.
find
(
'
input
'
)
if
(
$input
.
prop
(
'
type
'
)
==
'
radio
'
)
{
if
(
$input
.
prop
(
'
checked
'
)
&&
this
.
$element
.
hasClass
(
'
active
'
))
changed
=
false
else
$parent
.
find
(
'
.active
'
).
removeClass
(
'
active
'
)
}
if
(
changed
)
$input
.
prop
(
'
checked
'
,
!
this
.
$element
.
hasClass
(
'
active
'
)).
trigger
(
'
change
'
)
}
}
if
(
changed
)
this
.
$element
.
toggleClass
(
'
active
'
)
}
// BUTTON PLUGIN DEFINITION
// ========================
function
Plugin
(
option
)
{
// BUTTON PLUGIN DEFINITION
return
this
.
each
(
function
()
{
// ========================
var
$this
=
$
(
this
)
var
data
=
$this
.
data
(
'
bs.button
'
)
var
options
=
typeof
option
==
'
object
'
&&
option
if
(
!
data
)
$this
.
data
(
'
bs.button
'
,
(
data
=
new
Button
(
this
,
options
)))
function
Plugin
(
option
)
{
return
this
.
each
(
function
()
{
var
$this
=
$
(
this
)
var
data
=
$this
.
data
(
'
bs.button
'
)
var
options
=
typeof
option
==
'
object
'
&&
option
if
(
option
==
'
toggle
'
)
data
.
toggle
()
if
(
!
data
)
$this
.
data
(
'
bs.button
'
,
(
data
=
new
Button
(
this
,
options
)))
else
if
(
option
)
data
.
setState
(
option
)
})
}
var
old
=
$
.
fn
.
button
if
(
option
==
'
toggle
'
)
data
.
toggle
()
else
if
(
option
)
data
.
setState
(
option
)
})
}
$
.
fn
.
button
=
Plugin
var
old
=
$
.
fn
.
button
$
.
fn
.
button
.
Constructor
=
Button
$
.
fn
.
button
=
Plugin
$
.
fn
.
button
.
Constructor
=
Button
// BUTTON NO CONFLICT
// ==================
$
.
fn
.
button
.
noConflict
=
function
()
{
// BUTTON NO CONFLICT
$
.
fn
.
button
=
old
// ==================
return
this
}
$
.
fn
.
button
.
noConflict
=
function
()
{
$
.
fn
.
button
=
old
return
this
}
// BUTTON DATA-API
// ===============
$
(
document
).
on
(
'
click.bs.button.data-api
'
,
'
[data-toggle^="button"]
'
,
function
(
e
)
{
// BUTTON DATA-API
var
$btn
=
$
(
e
.
target
)
// ===============
if
(
!
$btn
.
hasClass
(
'
btn
'
))
$btn
=
$btn
.
closest
(
'
.btn
'
)
Plugin
.
call
(
$btn
,
'
toggle
'
)
e
.
preventDefault
()
})
$
(
document
).
on
(
'
click.bs.button.data-api
'
,
'
[data-toggle^="button"]
'
,
function
(
e
)
{
var
$btn
=
$
(
e
.
target
)
if
(
!
$btn
.
hasClass
(
'
btn
'
))
$btn
=
$btn
.
closest
(
'
.btn
'
)
Plugin
.
call
(
$btn
,
'
toggle
'
)
e
.
preventDefault
()
})
})
}();
}(
jQuery
);
js/carousel.js
View file @
b31c35b6
...
@@ -7,222 +7,216 @@
...
@@ -7,222 +7,216 @@
* ======================================================================== */
* ======================================================================== */
+
function
()
{
'
use strict
'
;
+
function
(
$
)
{
'
use strict
'
;
(
function
(
o_o
)
{
typeof
define
==
'
function
'
&&
define
.
amd
?
define
([
'
jquery
'
],
o_o
)
:
// CAROUSEL CLASS DEFINITION
typeof
exports
==
'
object
'
?
o_o
(
require
(
'
jquery
'
))
:
o_o
(
jQuery
)
// =========================
})(
function
(
$
)
{
var
Carousel
=
function
(
element
,
options
)
{
// CAROUSEL CLASS DEFINITION
this
.
$element
=
$
(
element
).
on
(
'
keydown.bs.carousel
'
,
$
.
proxy
(
this
.
keydown
,
this
))
// =========================
this
.
$indicators
=
this
.
$element
.
find
(
'
.carousel-indicators
'
)
this
.
options
=
options
var
Carousel
=
function
(
element
,
options
)
{
this
.
paused
=
this
.
$element
=
$
(
element
).
on
(
'
keydown.bs.carousel
'
,
$
.
proxy
(
this
.
keydown
,
this
))
this
.
sliding
=
this
.
$indicators
=
this
.
$element
.
find
(
'
.carousel-indicators
'
)
this
.
interval
=
this
.
options
=
options
this
.
$active
=
this
.
paused
=
this
.
$items
=
null
this
.
sliding
=
this
.
interval
=
this
.
options
.
pause
==
'
hover
'
&&
this
.
$element
this
.
$active
=
.
on
(
'
mouseenter.bs.carousel
'
,
$
.
proxy
(
this
.
pause
,
this
))
this
.
$items
=
null
.
on
(
'
mouseleave.bs.carousel
'
,
$
.
proxy
(
this
.
cycle
,
this
))
}
this
.
options
.
pause
==
'
hover
'
&&
this
.
$element
.
on
(
'
mouseenter.bs.carousel
'
,
$
.
proxy
(
this
.
pause
,
this
))
Carousel
.
VERSION
=
'
3.1.1
'
.
on
(
'
mouseleave.bs.carousel
'
,
$
.
proxy
(
this
.
cycle
,
this
))
Carousel
.
DEFAULTS
=
{
interval
:
5000
,
pause
:
'
hover
'
,
wrap
:
true
}
Carousel
.
prototype
.
keydown
=
function
(
e
)
{
switch
(
e
.
which
)
{
case
37
:
this
.
prev
();
break
case
39
:
this
.
next
();
break
default
:
return
}
}
Carousel
.
VERSION
=
'
3.1.1
'
e
.
preventDefault
()
}
Carousel
.
DEFAULTS
=
{
Carousel
.
prototype
.
cycle
=
function
(
e
)
{
interval
:
5000
,
e
||
(
this
.
paused
=
false
)
pause
:
'
hover
'
,
wrap
:
true
}
Carousel
.
prototype
.
keydown
=
function
(
e
)
{
this
.
interval
&&
clearInterval
(
this
.
interval
)
switch
(
e
.
which
)
{
case
37
:
this
.
prev
();
break
case
39
:
this
.
next
();
break
default
:
return
}
e
.
preventDefault
()
this
.
options
.
interval
}
&&
!
this
.
paused
&&
(
this
.
interval
=
setInterval
(
$
.
proxy
(
this
.
next
,
this
),
this
.
options
.
interval
))
Carousel
.
prototype
.
cycle
=
function
(
e
)
{
return
this
e
||
(
this
.
paused
=
false
)
}
this
.
interval
&&
clearInterval
(
this
.
interval
)
Carousel
.
prototype
.
getItemIndex
=
function
(
item
)
{
this
.
$items
=
item
.
parent
().
children
(
'
.item
'
)
return
this
.
$items
.
index
(
item
||
this
.
$active
)
}
this
.
options
.
interval
Carousel
.
prototype
.
to
=
function
(
pos
)
{
&&
!
this
.
paused
var
that
=
this
&&
(
this
.
interval
=
setInterval
(
$
.
proxy
(
this
.
next
,
this
),
this
.
options
.
interval
))
var
activeIndex
=
this
.
getItemIndex
(
this
.
$active
=
this
.
$element
.
find
(
'
.item.active
'
))
return
this
if
(
pos
>
(
this
.
$items
.
length
-
1
)
||
pos
<
0
)
return
}
if
(
this
.
sliding
)
return
this
.
$element
.
one
(
'
slid.bs.carousel
'
,
function
()
{
that
.
to
(
pos
)
})
// yes, "slid"
if
(
activeIndex
==
pos
)
return
this
.
pause
().
cycle
()
return
this
.
slide
(
pos
>
activeIndex
?
'
next
'
:
'
prev
'
,
$
(
this
.
$items
[
pos
]))
}
Carousel
.
prototype
.
getItemIndex
=
function
(
item
)
{
Carousel
.
prototype
.
pause
=
function
(
e
)
{
this
.
$items
=
item
.
parent
().
children
(
'
.item
'
)
e
||
(
this
.
paused
=
true
)
return
this
.
$items
.
index
(
item
||
this
.
$active
)
if
(
this
.
$element
.
find
(
'
.next, .prev
'
).
length
&&
$
.
support
.
transition
)
{
this
.
$element
.
trigger
(
$
.
support
.
transition
.
end
)
this
.
cycle
(
true
)
}
}
Carousel
.
prototype
.
to
=
function
(
pos
)
{
this
.
interval
=
clearInterval
(
this
.
interval
)
var
that
=
this
var
activeIndex
=
this
.
getItemIndex
(
this
.
$active
=
this
.
$element
.
find
(
'
.item.active
'
))
return
this
}
Carousel
.
prototype
.
next
=
function
()
{
if
(
this
.
sliding
)
return
return
this
.
slide
(
'
next
'
)
}
if
(
pos
>
(
this
.
$items
.
length
-
1
)
||
pos
<
0
)
return
Carousel
.
prototype
.
prev
=
function
()
{
if
(
this
.
sliding
)
return
return
this
.
slide
(
'
prev
'
)
}
if
(
this
.
sliding
)
return
this
.
$element
.
one
(
'
slid.bs.carousel
'
,
function
()
{
that
.
to
(
pos
)
})
// yes, "slid"
Carousel
.
prototype
.
slide
=
function
(
type
,
next
)
{
if
(
activeIndex
==
pos
)
return
this
.
pause
().
cycle
()
var
$active
=
this
.
$element
.
find
(
'
.item.active
'
)
var
$next
=
next
||
$active
[
type
]()
var
isCycling
=
this
.
interval
var
direction
=
type
==
'
next
'
?
'
left
'
:
'
right
'
var
fallback
=
type
==
'
next
'
?
'
first
'
:
'
last
'
var
that
=
this
return
this
.
slide
(
pos
>
activeIndex
?
'
next
'
:
'
prev
'
,
$
(
this
.
$items
[
pos
]))
if
(
!
$next
.
length
)
{
if
(
!
this
.
options
.
wrap
)
return
$next
=
this
.
$element
.
find
(
'
.item
'
)[
fallback
]()
}
}
Carousel
.
prototype
.
pause
=
function
(
e
)
{
if
(
$next
.
hasClass
(
'
active
'
))
return
(
this
.
sliding
=
false
)
e
||
(
this
.
paused
=
true
)
if
(
this
.
$element
.
find
(
'
.next, .prev
'
).
length
&&
$
.
support
.
transition
)
{
var
relatedTarget
=
$next
[
0
]
this
.
$element
.
trigger
(
$
.
support
.
transition
.
end
)
var
slideEvent
=
$
.
Event
(
'
slide.bs.carousel
'
,
{
this
.
cycle
(
true
)
relatedTarget
:
relatedTarget
,
}
direction
:
direction
})
this
.
$element
.
trigger
(
slideEvent
)
if
(
slideEvent
.
isDefaultPrevented
())
return
this
.
interval
=
clearInterval
(
this
.
interval
)
this
.
sliding
=
true
return
this
isCycling
&&
this
.
pause
()
}
Carousel
.
prototype
.
next
=
function
()
{
if
(
this
.
$indicators
.
length
)
{
if
(
this
.
sliding
)
return
this
.
$indicators
.
find
(
'
.active
'
).
removeClass
(
'
active
'
)
return
this
.
slide
(
'
next
'
)
var
$nextIndicator
=
$
(
this
.
$indicators
.
children
()[
this
.
getItemIndex
(
$next
)])
$nextIndicator
&&
$nextIndicator
.
addClass
(
'
active
'
)
}
}
Carousel
.
prototype
.
prev
=
function
()
{
var
slidEvent
=
$
.
Event
(
'
slid.bs.carousel
'
,
{
relatedTarget
:
relatedTarget
,
direction
:
direction
})
// yes, "slid"
if
(
this
.
sliding
)
return
if
(
$
.
support
.
transition
&&
this
.
$element
.
hasClass
(
'
slide
'
))
{
return
this
.
slide
(
'
prev
'
)
$next
.
addClass
(
type
)
$next
[
0
].
offsetWidth
// force reflow
$active
.
addClass
(
direction
)
$next
.
addClass
(
direction
)
$active
.
one
(
'
bsTransitionEnd
'
,
function
()
{
$next
.
removeClass
([
type
,
direction
].
join
(
'
'
)).
addClass
(
'
active
'
)
$active
.
removeClass
([
'
active
'
,
direction
].
join
(
'
'
))
that
.
sliding
=
false
setTimeout
(
function
()
{
that
.
$element
.
trigger
(
slidEvent
)
},
0
)
})
.
emulateTransitionEnd
(
$active
.
css
(
'
transition-duration
'
).
slice
(
0
,
-
1
)
*
1000
)
}
else
{
$active
.
removeClass
(
'
active
'
)
$next
.
addClass
(
'
active
'
)
this
.
sliding
=
false
this
.
$element
.
trigger
(
slidEvent
)
}
}
Carousel
.
prototype
.
slide
=
function
(
type
,
next
)
{
isCycling
&&
this
.
cycle
()
var
$active
=
this
.
$element
.
find
(
'
.item.active
'
)
var
$next
=
next
||
$active
[
type
]()
var
isCycling
=
this
.
interval
var
direction
=
type
==
'
next
'
?
'
left
'
:
'
right
'
var
fallback
=
type
==
'
next
'
?
'
first
'
:
'
last
'
var
that
=
this
if
(
!
$next
.
length
)
{
if
(
!
this
.
options
.
wrap
)
return
$next
=
this
.
$element
.
find
(
'
.item
'
)[
fallback
]()
}
if
(
$next
.
hasClass
(
'
active
'
))
return
(
this
.
sliding
=
false
)
var
relatedTarget
=
$next
[
0
]
var
slideEvent
=
$
.
Event
(
'
slide.bs.carousel
'
,
{
relatedTarget
:
relatedTarget
,
direction
:
direction
})
this
.
$element
.
trigger
(
slideEvent
)
if
(
slideEvent
.
isDefaultPrevented
())
return
this
.
sliding
=
true
isCycling
&&
this
.
pause
()
if
(
this
.
$indicators
.
length
)
{
this
.
$indicators
.
find
(
'
.active
'
).
removeClass
(
'
active
'
)
var
$nextIndicator
=
$
(
this
.
$indicators
.
children
()[
this
.
getItemIndex
(
$next
)])
$nextIndicator
&&
$nextIndicator
.
addClass
(
'
active
'
)
}
var
slidEvent
=
$
.
Event
(
'
slid.bs.carousel
'
,
{
relatedTarget
:
relatedTarget
,
direction
:
direction
})
// yes, "slid"
if
(
$
.
support
.
transition
&&
this
.
$element
.
hasClass
(
'
slide
'
))
{
$next
.
addClass
(
type
)
$next
[
0
].
offsetWidth
// force reflow
$active
.
addClass
(
direction
)
$next
.
addClass
(
direction
)
$active
.
one
(
'
bsTransitionEnd
'
,
function
()
{
$next
.
removeClass
([
type
,
direction
].
join
(
'
'
)).
addClass
(
'
active
'
)
$active
.
removeClass
([
'
active
'
,
direction
].
join
(
'
'
))
that
.
sliding
=
false
setTimeout
(
function
()
{
that
.
$element
.
trigger
(
slidEvent
)
},
0
)
})
.
emulateTransitionEnd
(
$active
.
css
(
'
transition-duration
'
).
slice
(
0
,
-
1
)
*
1000
)
}
else
{
$active
.
removeClass
(
'
active
'
)
$next
.
addClass
(
'
active
'
)
this
.
sliding
=
false
this
.
$element
.
trigger
(
slidEvent
)
}
isCycling
&&
this
.
cycle
()
return
this
}
return
this
}
// CAROUSEL PLUGIN DEFINITION
// ==========================
function
Plugin
(
option
)
{
// CAROUSEL PLUGIN DEFINITION
return
this
.
each
(
function
()
{
// ==========================
var
$this
=
$
(
this
)
var
data
=
$this
.
data
(
'
bs.carousel
'
)
var
options
=
$
.
extend
({},
Carousel
.
DEFAULTS
,
$this
.
data
(),
typeof
option
==
'
object
'
&&
option
)
var
action
=
typeof
option
==
'
string
'
?
option
:
options
.
slide
if
(
!
data
)
$this
.
data
(
'
bs.carousel
'
,
(
data
=
new
Carousel
(
this
,
options
)))
function
Plugin
(
option
)
{
if
(
typeof
option
==
'
number
'
)
data
.
to
(
option
)
return
this
.
each
(
function
()
{
else
if
(
action
)
data
[
action
]()
var
$this
=
$
(
this
)
else
if
(
options
.
interval
)
data
.
pause
().
cycle
()
var
data
=
$this
.
data
(
'
bs.carousel
'
)
})
var
options
=
$
.
extend
({},
Carousel
.
DEFAULTS
,
$this
.
data
(),
typeof
option
==
'
object
'
&&
option
)
}
var
action
=
typeof
option
==
'
string
'
?
option
:
options
.
slide
if
(
!
data
)
$this
.
data
(
'
bs.carousel
'
,
(
data
=
new
Carousel
(
this
,
options
)))
if
(
typeof
option
==
'
number
'
)
data
.
to
(
option
)
else
if
(
action
)
data
[
action
]()
else
if
(
options
.
interval
)
data
.
pause
().
cycle
()
})
}
var
old
=
$
.
fn
.
carousel
var
old
=
$
.
fn
.
carousel
$
.
fn
.
carousel
=
Plugin
$
.
fn
.
carousel
=
Plugin
$
.
fn
.
carousel
.
Constructor
=
Carousel
$
.
fn
.
carousel
.
Constructor
=
Carousel
// CAROUSEL NO CONFLICT
// CAROUSEL NO CONFLICT
// ====================
// ====================
$
.
fn
.
carousel
.
noConflict
=
function
()
{
$
.
fn
.
carousel
.
noConflict
=
function
()
{
$
.
fn
.
carousel
=
old
$
.
fn
.
carousel
=
old
return
this
return
this
}
}
// CAROUSEL DATA-API
// CAROUSEL DATA-API
// =================
// =================
$
(
document
).
on
(
'
click.bs.carousel.data-api
'
,
'
[data-slide], [data-slide-to]
'
,
function
(
e
)
{
$
(
document
).
on
(
'
click.bs.carousel.data-api
'
,
'
[data-slide], [data-slide-to]
'
,
function
(
e
)
{
var
href
var
href
var
$this
=
$
(
this
)
var
$this
=
$
(
this
)
var
$target
=
$
(
$this
.
attr
(
'
data-target
'
)
||
(
href
=
$this
.
attr
(
'
href
'
))
&&
href
.
replace
(
/.*
(?=
#
[^\s]
+$
)
/
,
''
))
// strip for ie7
var
$target
=
$
(
$this
.
attr
(
'
data-target
'
)
||
(
href
=
$this
.
attr
(
'
href
'
))
&&
href
.
replace
(
/.*
(?=
#
[^\s]
+$
)
/
,
''
))
// strip for ie7
var
options
=
$
.
extend
({},
$target
.
data
(),
$this
.
data
())
var
options
=
$
.
extend
({},
$target
.
data
(),
$this
.
data
())
var
slideIndex
=
$this
.
attr
(
'
data-slide-to
'
)
var
slideIndex
=
$this
.
attr
(
'
data-slide-to
'
)
if
(
slideIndex
)
options
.
interval
=
false
if
(
slideIndex
)
options
.
interval
=
false
Plugin
.
call
(
$target
,
options
)
Plugin
.
call
(
$target
,
options
)
if
(
slideIndex
)
{
if
(
slideIndex
)
{
$target
.
data
(
'
bs.carousel
'
).
to
(
slideIndex
)
$target
.
data
(
'
bs.carousel
'
).
to
(
slideIndex
)
}
}
e
.
preventDefault
()
e
.
preventDefault
()
})
})
$
(
window
).
on
(
'
load
'
,
function
()
{
$
(
window
).
on
(
'
load
'
,
function
()
{
$
(
'
[data-ride="carousel"]
'
).
each
(
function
()
{
$
(
'
[data-ride="carousel"]
'
).
each
(
function
()
{
var
$carousel
=
$
(
this
)
var
$carousel
=
$
(
this
)
Plugin
.
call
(
$carousel
,
$carousel
.
data
())
Plugin
.
call
(
$carousel
,
$carousel
.
data
())
})
})
})
})
})
}();
}(
jQuery
);
js/collapse.js
View file @
b31c35b6
...
@@ -7,170 +7,164 @@
...
@@ -7,170 +7,164 @@
* ======================================================================== */
* ======================================================================== */
+
function
()
{
'
use strict
'
;
+
function
(
$
)
{
'
use strict
'
;
(
function
(
o_o
)
{
// COLLAPSE PUBLIC CLASS DEFINITION
typeof
define
==
'
function
'
&&
define
.
amd
?
define
([
'
jquery
'
],
o_o
)
:
// ================================
typeof
exports
==
'
object
'
?
o_o
(
require
(
'
jquery
'
))
:
o_o
(
jQuery
)
})(
function
(
$
)
{
// COLLAPSE PUBLIC CLASS DEFINITION
var
Collapse
=
function
(
element
,
options
)
{
// ================================
this
.
$element
=
$
(
element
)
this
.
options
=
$
.
extend
({},
Collapse
.
DEFAULTS
,
options
)
this
.
transitioning
=
null
var
Collapse
=
function
(
element
,
options
)
{
if
(
this
.
options
.
parent
)
this
.
$parent
=
$
(
this
.
options
.
parent
)
this
.
$element
=
$
(
element
)
if
(
this
.
options
.
toggle
)
this
.
toggle
()
this
.
options
=
$
.
extend
({},
Collapse
.
DEFAULTS
,
options
)
}
this
.
transitioning
=
null
if
(
this
.
options
.
parent
)
this
.
$parent
=
$
(
this
.
options
.
parent
)
Collapse
.
VERSION
=
'
3.1.1
'
if
(
this
.
options
.
toggle
)
this
.
toggle
()
}
Collapse
.
VERSION
=
'
3.1.1
'
Collapse
.
DEFAULTS
=
{
toggle
:
true
}
Collapse
.
DEFAULTS
=
{
Collapse
.
prototype
.
dimension
=
function
()
{
toggle
:
true
var
hasWidth
=
this
.
$element
.
hasClass
(
'
width
'
)
}
return
hasWidth
?
'
width
'
:
'
height
'
}
Collapse
.
prototype
.
dimension
=
function
()
{
Collapse
.
prototype
.
show
=
function
()
{
var
hasWidth
=
this
.
$element
.
hasClass
(
'
width
'
)
if
(
this
.
transitioning
||
this
.
$element
.
hasClass
(
'
in
'
))
return
return
hasWidth
?
'
width
'
:
'
height
'
}
Collapse
.
prototype
.
show
=
function
()
{
var
startEvent
=
$
.
Event
(
'
show.bs.collapse
'
)
if
(
this
.
transitioning
||
this
.
$element
.
hasClass
(
'
in
'
))
return
this
.
$element
.
trigger
(
startEvent
)
if
(
startEvent
.
isDefaultPrevented
())
return
var
startEvent
=
$
.
Event
(
'
show.bs.collapse
'
)
var
actives
=
this
.
$parent
&&
this
.
$parent
.
find
(
'
> .panel > .in
'
)
this
.
$element
.
trigger
(
startEvent
)
if
(
startEvent
.
isDefaultPrevented
())
return
var
actives
=
this
.
$parent
&&
this
.
$parent
.
find
(
'
> .panel > .in
'
)
if
(
actives
&&
actives
.
length
)
{
var
hasData
=
actives
.
data
(
'
bs.collapse
'
)
if
(
hasData
&&
hasData
.
transitioning
)
return
Plugin
.
call
(
actives
,
'
hide
'
)
hasData
||
actives
.
data
(
'
bs.collapse
'
,
null
)
}
var
dimension
=
this
.
dimension
()
if
(
actives
&&
actives
.
length
)
{
this
.
$element
var
hasData
=
actives
.
data
(
'
bs.collapse
'
)
.
removeClass
(
'
collapse
'
)
if
(
hasData
&&
hasData
.
transitioning
)
return
.
addClass
(
'
collapsing
'
)[
dimension
](
0
)
Plugin
.
call
(
actives
,
'
hide
'
)
hasData
||
actives
.
data
(
'
bs.collapse
'
,
null
)
}
var
dimension
=
this
.
dimension
()
this
.
transitioning
=
1
var
complete
=
function
()
{
this
.
$element
.
removeClass
(
'
collapsing
'
)
.
addClass
(
'
collapse in
'
)[
dimension
](
''
)
this
.
transitioning
=
0
this
.
$element
this
.
$element
.
removeClass
(
'
collapse
'
)
.
trigger
(
'
shown.bs.
collapse
'
)
.
addClass
(
'
collapsing
'
)[
dimension
](
0
)
}
this
.
transitioning
=
1
if
(
!
$
.
support
.
transition
)
return
complete
.
call
(
this
)
var
complete
=
function
()
{
var
scrollSize
=
$
.
camelCase
([
'
scroll
'
,
dimension
].
join
(
'
-
'
))
this
.
$element
.
removeClass
(
'
collapsing
'
)
.
addClass
(
'
collapse in
'
)[
dimension
](
''
)
this
.
transitioning
=
0
this
.
$element
.
trigger
(
'
shown.bs.collapse
'
)
}
if
(
!
$
.
support
.
transition
)
return
complete
.
call
(
this
)
this
.
$element
.
one
(
'
bsTransitionEnd
'
,
$
.
proxy
(
complete
,
this
))
.
emulateTransitionEnd
(
350
)[
dimension
](
this
.
$element
[
0
][
scrollSize
])
}
var
scrollSize
=
$
.
camelCase
([
'
scroll
'
,
dimension
].
join
(
'
-
'
))
Collapse
.
prototype
.
hide
=
function
()
{
if
(
this
.
transitioning
||
!
this
.
$element
.
hasClass
(
'
in
'
))
return
this
.
$element
var
startEvent
=
$
.
Event
(
'
hide.bs.collapse
'
)
.
one
(
'
bsTransitionEnd
'
,
$
.
proxy
(
complete
,
this
))
this
.
$element
.
trigger
(
startEvent
)
.
emulateTransitionEnd
(
350
)[
dimension
](
this
.
$element
[
0
][
scrollSize
])
if
(
startEvent
.
isDefaultPrevented
())
return
}
Collapse
.
prototype
.
hide
=
function
()
{
var
dimension
=
this
.
dimension
()
if
(
this
.
transitioning
||
!
this
.
$element
.
hasClass
(
'
in
'
))
return
var
startEvent
=
$
.
Event
(
'
hide.bs.collapse
'
)
this
.
$element
[
dimension
](
this
.
$element
[
dimension
]())[
0
].
offsetHeight
this
.
$element
.
trigger
(
startEvent
)
if
(
startEvent
.
isDefaultPrevented
())
return
var
dimension
=
this
.
dimension
()
this
.
$element
.
addClass
(
'
collapsing
'
)
.
removeClass
(
'
collapse
'
)
.
removeClass
(
'
in
'
)
this
.
$element
[
dimension
](
this
.
$element
[
dimension
]())[
0
].
offsetHeight
this
.
transitioning
=
1
var
complete
=
function
()
{
this
.
transitioning
=
0
this
.
$element
this
.
$element
.
addClass
(
'
collapsing
'
)
.
trigger
(
'
hidden.bs.collapse
'
)
.
removeClass
(
'
collapse
'
)
.
removeClass
(
'
collapsing
'
)
.
removeClass
(
'
in
'
)
.
addClass
(
'
collapse
'
)
}
this
.
transitioning
=
1
if
(
!
$
.
support
.
transition
)
return
complete
.
call
(
this
)
var
complete
=
function
()
{
this
.
$element
this
.
transitioning
=
0
[
dimension
](
0
)
this
.
$element
.
one
(
'
bsTransitionEnd
'
,
$
.
proxy
(
complete
,
this
))
.
trigger
(
'
hidden.bs.collapse
'
)
.
emulateTransitionEnd
(
350
)
.
removeClass
(
'
collapsing
'
)
}
.
addClass
(
'
collapse
'
)
}
if
(
!
$
.
support
.
transition
)
return
complete
.
call
(
this
)
Collapse
.
prototype
.
toggle
=
function
()
{
this
[
this
.
$element
.
hasClass
(
'
in
'
)
?
'
hide
'
:
'
show
'
]()
}
this
.
$element
[
dimension
](
0
)
.
one
(
'
bsTransitionEnd
'
,
$
.
proxy
(
complete
,
this
))
.
emulateTransitionEnd
(
350
)
}
Collapse
.
prototype
.
toggle
=
function
()
{
this
[
this
.
$element
.
hasClass
(
'
in
'
)
?
'
hide
'
:
'
show
'
]()
}
// COLLAPSE PLUGIN DEFINITION
// ==========================
// COLLAPSE PLUGIN DEFINITION
function
Plugin
(
option
)
{
// ==========================
return
this
.
each
(
function
()
{
var
$this
=
$
(
this
)
var
data
=
$this
.
data
(
'
bs.collapse
'
)
var
options
=
$
.
extend
({},
Collapse
.
DEFAULTS
,
$this
.
data
(),
typeof
option
==
'
object
'
&&
option
)
function
Plugin
(
option
)
{
if
(
!
data
&&
options
.
toggle
&&
option
==
'
show
'
)
option
=
!
option
return
this
.
each
(
function
()
{
if
(
!
data
)
$this
.
data
(
'
bs.collapse
'
,
(
data
=
new
Collapse
(
this
,
options
)))
var
$this
=
$
(
this
)
if
(
typeof
option
==
'
string
'
)
data
[
option
](
)
var
data
=
$this
.
data
(
'
bs.collapse
'
)
}
)
var
options
=
$
.
extend
({},
Collapse
.
DEFAULTS
,
$this
.
data
(),
typeof
option
==
'
object
'
&&
option
)
}
if
(
!
data
&&
options
.
toggle
&&
option
==
'
show
'
)
option
=
!
option
var
old
=
$
.
fn
.
collapse
if
(
!
data
)
$this
.
data
(
'
bs.collapse
'
,
(
data
=
new
Collapse
(
this
,
options
)))
if
(
typeof
option
==
'
string
'
)
data
[
option
]()
})
}
var
old
=
$
.
fn
.
collapse
$
.
fn
.
collapse
=
Plugin
$
.
fn
.
collapse
.
Constructor
=
Collapse
$
.
fn
.
collapse
=
Plugin
$
.
fn
.
collapse
.
Constructor
=
Collapse
// COLLAPSE NO CONFLICT
// ====================
// COLLAPSE NO CONFLICT
$
.
fn
.
collapse
.
noConflict
=
function
()
{
// ====================
$
.
fn
.
collapse
=
old
return
this
}
$
.
fn
.
collapse
.
noConflict
=
function
()
{
$
.
fn
.
collapse
=
old
return
this
}
// COLLAPSE DATA-API
// =================
// COLLAPSE DATA-API
$
(
document
).
on
(
'
click.bs.collapse.data-api
'
,
'
[data-toggle="collapse"]
'
,
function
(
e
)
{
// =================
var
href
var
$this
=
$
(
this
)
var
target
=
$this
.
attr
(
'
data-target
'
)
||
e
.
preventDefault
()
||
(
href
=
$this
.
attr
(
'
href
'
))
&&
href
.
replace
(
/.*
(?=
#
[^\s]
+$
)
/
,
''
)
// strip for ie7
var
$target
=
$
(
target
)
var
data
=
$target
.
data
(
'
bs.collapse
'
)
var
option
=
data
?
'
toggle
'
:
$this
.
data
()
var
parent
=
$this
.
attr
(
'
data-parent
'
)
var
$parent
=
parent
&&
$
(
parent
)
$
(
document
).
on
(
'
click.bs.collapse.data-api
'
,
'
[data-toggle="collapse"]
'
,
function
(
e
)
{
if
(
!
data
||
!
data
.
transitioning
)
{
var
href
if
(
$parent
)
$parent
.
find
(
'
[data-toggle="collapse"][data-parent="
'
+
parent
+
'
"]
'
).
not
(
$this
).
addClass
(
'
collapsed
'
)
var
$this
=
$
(
this
)
$this
[
$target
.
hasClass
(
'
in
'
)
?
'
addClass
'
:
'
removeClass
'
](
'
collapsed
'
)
var
target
=
$this
.
attr
(
'
data-target
'
)
}
||
e
.
preventDefault
()
||
(
href
=
$this
.
attr
(
'
href
'
))
&&
href
.
replace
(
/.*
(?=
#
[^\s]
+$
)
/
,
''
)
// strip for ie7
var
$target
=
$
(
target
)
var
data
=
$target
.
data
(
'
bs.collapse
'
)
var
option
=
data
?
'
toggle
'
:
$this
.
data
()
var
parent
=
$this
.
attr
(
'
data-parent
'
)
var
$parent
=
parent
&&
$
(
parent
)
if
(
!
data
||
!
data
.
transitioning
)
{
if
(
$parent
)
$parent
.
find
(
'
[data-toggle="collapse"][data-parent="
'
+
parent
+
'
"]
'
).
not
(
$this
).
addClass
(
'
collapsed
'
)
$this
[
$target
.
hasClass
(
'
in
'
)
?
'
addClass
'
:
'
removeClass
'
](
'
collapsed
'
)
}
Plugin
.
call
(
$target
,
option
)
})
Plugin
.
call
(
$target
,
option
)
})
})
}();
}(
jQuery
);
js/dropdown.js
View file @
b31c35b6
...
@@ -7,151 +7,145 @@
...
@@ -7,151 +7,145 @@
* ======================================================================== */
* ======================================================================== */
+
function
()
{
'
use strict
'
;
+
function
(
$
)
{
'
use strict
'
;
(
function
(
o_o
)
{
// DROPDOWN CLASS DEFINITION
typeof
define
==
'
function
'
&&
define
.
amd
?
define
([
'
jquery
'
],
o_o
)
:
// =========================
typeof
exports
==
'
object
'
?
o_o
(
require
(
'
jquery
'
))
:
o_o
(
jQuery
)
})(
function
(
$
)
{
// DROPDOWN CLASS DEFINITION
var
backdrop
=
'
.dropdown-backdrop
'
// =========================
var
toggle
=
'
[data-toggle="dropdown"]
'
var
Dropdown
=
function
(
element
)
{
$
(
element
).
on
(
'
click.bs.dropdown
'
,
this
.
toggle
)
}
var
backdrop
=
'
.dropdown-backdrop
'
Dropdown
.
VERSION
=
'
3.1.1
'
var
toggle
=
'
[data-toggle="dropdown"]
'
var
Dropdown
=
function
(
element
)
{
$
(
element
).
on
(
'
click.bs.dropdown
'
,
this
.
toggle
)
}
Dropdown
.
VERSION
=
'
3.1.1
'
Dropdown
.
prototype
.
toggle
=
function
(
e
)
{
Dropdown
.
prototype
.
toggle
=
function
(
e
)
{
var
$this
=
$
(
this
)
var
$this
=
$
(
this
)
if
(
$this
.
is
(
'
.disabled, :disabled
'
))
return
if
(
$this
.
is
(
'
.disabled, :disabled
'
))
return
var
$parent
=
getParent
(
$this
)
var
$parent
=
getParent
(
$this
)
var
isActive
=
$parent
.
hasClass
(
'
open
'
)
var
isActive
=
$parent
.
hasClass
(
'
open
'
)
clearMenus
()
clearMenus
()
if
(
!
isActive
)
{
if
(
!
isActive
)
{
if
(
'
ontouchstart
'
in
document
.
documentElement
&&
!
$parent
.
closest
(
'
.navbar-nav
'
).
length
)
{
if
(
'
ontouchstart
'
in
document
.
documentElement
&&
!
$parent
.
closest
(
'
.navbar-nav
'
).
length
)
{
// if mobile we use a backdrop because click events don't delegate
// if mobile we use a backdrop because click events don't delegate
$
(
'
<div class="dropdown-backdrop"/>
'
).
insertAfter
(
$
(
this
)).
on
(
'
click
'
,
clearMenus
)
$
(
'
<div class="dropdown-backdrop"/>
'
).
insertAfter
(
$
(
this
)).
on
(
'
click
'
,
clearMenus
)
}
}
var
relatedTarget
=
{
relatedTarget
:
this
}
var
relatedTarget
=
{
relatedTarget
:
this
}
$parent
.
trigger
(
e
=
$
.
Event
(
'
show.bs.dropdown
'
,
relatedTarget
))
$parent
.
trigger
(
e
=
$
.
Event
(
'
show.bs.dropdown
'
,
relatedTarget
))
if
(
e
.
isDefaultPrevented
())
return
if
(
e
.
isDefaultPrevented
())
return
$this
.
trigger
(
'
focus
'
)
$this
.
trigger
(
'
focus
'
)
$parent
$parent
.
toggleClass
(
'
open
'
)
.
toggleClass
(
'
open
'
)
.
trigger
(
'
shown.bs.dropdown
'
,
relatedTarget
)
.
trigger
(
'
shown.bs.dropdown
'
,
relatedTarget
)
}
return
false
}
}
Dropdown
.
prototype
.
keydown
=
function
(
e
)
{
return
false
if
(
!
/
(
38|40|27
)
/
.
test
(
e
.
keyCode
))
return
}
var
$this
=
$
(
this
)
e
.
preventDefault
()
Dropdown
.
prototype
.
keydown
=
function
(
e
)
{
e
.
stopPropagation
()
if
(
!
/
(
38|40|27
)
/
.
test
(
e
.
keyCode
))
return
if
(
$this
.
is
(
'
.disabled, :disabled
'
))
return
var
$this
=
$
(
this
)
var
$parent
=
getParent
(
$this
)
e
.
preventDefault
(
)
var
isActive
=
$parent
.
hasClass
(
'
open
'
)
e
.
stopPropagation
(
)
if
(
!
isActive
||
(
isActive
&&
e
.
keyCode
==
27
))
{
if
(
$this
.
is
(
'
.disabled, :disabled
'
))
return
if
(
e
.
which
==
27
)
$parent
.
find
(
toggle
).
trigger
(
'
focus
'
)
return
$this
.
trigger
(
'
click
'
)
}
var
desc
=
'
li:not(.divider):visible a
'
var
$parent
=
getParent
(
$this
)
var
$items
=
$parent
.
find
(
'
[role="menu"]
'
+
desc
+
'
, [role="listbox"]
'
+
desc
)
var
isActive
=
$parent
.
hasClass
(
'
open
'
)
if
(
!
$items
.
length
)
return
if
(
!
isActive
||
(
isActive
&&
e
.
keyCode
==
27
))
{
if
(
e
.
which
==
27
)
$parent
.
find
(
toggle
).
trigger
(
'
focus
'
)
return
$this
.
trigger
(
'
click
'
)
}
var
index
=
$items
.
index
(
$items
.
filter
(
'
:focus
'
))
var
desc
=
'
li:not(.divider):visible a
'
var
$items
=
$parent
.
find
(
'
[role="menu"]
'
+
desc
+
'
, [role="listbox"]
'
+
desc
)
if
(
e
.
keyCode
==
38
&&
index
>
0
)
index
--
// up
if
(
!
$items
.
length
)
return
if
(
e
.
keyCode
==
40
&&
index
<
$items
.
length
-
1
)
index
++
// down
if
(
!~
index
)
index
=
0
$items
.
eq
(
index
).
trigger
(
'
focus
'
)
var
index
=
$items
.
index
(
$items
.
filter
(
'
:focus
'
))
}
function
clearMenus
(
e
)
{
if
(
e
.
keyCode
==
38
&&
index
>
0
)
index
--
// up
if
(
e
&&
e
.
which
===
3
)
return
if
(
e
.
keyCode
==
40
&&
index
<
$items
.
length
-
1
)
index
++
// down
$
(
backdrop
).
remove
()
if
(
!~
index
)
index
=
0
$
(
toggle
).
each
(
function
()
{
var
$parent
=
getParent
(
$
(
this
))
var
relatedTarget
=
{
relatedTarget
:
this
}
if
(
!
$parent
.
hasClass
(
'
open
'
))
return
$parent
.
trigger
(
e
=
$
.
Event
(
'
hide.bs.dropdown
'
,
relatedTarget
))
if
(
e
.
isDefaultPrevented
())
return
$parent
.
removeClass
(
'
open
'
).
trigger
(
'
hidden.bs.dropdown
'
,
relatedTarget
)
})
}
function
getParent
(
$this
)
{
$items
.
eq
(
index
).
trigger
(
'
focus
'
)
var
selector
=
$this
.
attr
(
'
data-target
'
)
}
if
(
!
selector
)
{
function
clearMenus
(
e
)
{
selector
=
$this
.
attr
(
'
href
'
)
if
(
e
&&
e
.
which
===
3
)
return
selector
=
selector
&&
/#
[
A-Za-z
]
/
.
test
(
selector
)
&&
selector
.
replace
(
/.*
(?=
#
[^\s]
*$
)
/
,
''
)
// strip for ie7
$
(
backdrop
).
remove
()
}
$
(
toggle
).
each
(
function
()
{
var
$parent
=
getParent
(
$
(
this
))
var
relatedTarget
=
{
relatedTarget
:
this
}
if
(
!
$parent
.
hasClass
(
'
open
'
))
return
$parent
.
trigger
(
e
=
$
.
Event
(
'
hide.bs.dropdown
'
,
relatedTarget
))
if
(
e
.
isDefaultPrevented
())
return
$parent
.
removeClass
(
'
open
'
).
trigger
(
'
hidden.bs.dropdown
'
,
relatedTarget
)
})
}
var
$parent
=
selector
&&
$
(
selector
)
function
getParent
(
$this
)
{
var
selector
=
$this
.
attr
(
'
data-target
'
)
return
$parent
&&
$parent
.
length
?
$parent
:
$this
.
parent
()
if
(
!
selector
)
{
selector
=
$this
.
attr
(
'
href
'
)
selector
=
selector
&&
/#
[
A-Za-z
]
/
.
test
(
selector
)
&&
selector
.
replace
(
/.*
(?=
#
[^\s]
*$
)
/
,
''
)
// strip for ie7
}
}
var
$parent
=
selector
&&
$
(
selector
)
// DROPDOWN PLUGIN DEFINITION
return
$parent
&&
$parent
.
length
?
$parent
:
$this
.
parent
()
// ==========================
}
function
Plugin
(
option
)
{
return
this
.
each
(
function
()
{
var
$this
=
$
(
this
)
var
data
=
$this
.
data
(
'
bs.dropdown
'
)
if
(
!
data
)
$this
.
data
(
'
bs.dropdown
'
,
(
data
=
new
Dropdown
(
this
)))
// DROPDOWN PLUGIN DEFINITION
if
(
typeof
option
==
'
string
'
)
data
[
option
].
call
(
$this
)
// ==========================
})
}
function
Plugin
(
option
)
{
return
this
.
each
(
function
()
{
var
$this
=
$
(
this
)
var
data
=
$this
.
data
(
'
bs.dropdown
'
)
var
old
=
$
.
fn
.
dropdown
if
(
!
data
)
$this
.
data
(
'
bs.dropdown
'
,
(
data
=
new
Dropdown
(
this
)))
if
(
typeof
option
==
'
string
'
)
data
[
option
].
call
(
$this
)
})
}
$
.
fn
.
dropdown
=
Plugin
var
old
=
$
.
fn
.
dropdown
$
.
fn
.
dropdown
.
Constructor
=
Dropdown
$
.
fn
.
dropdown
=
Plugin
$
.
fn
.
dropdown
.
Constructor
=
Dropdown
// DROPDOWN NO CONFLICT
// ====================
$
.
fn
.
dropdown
.
noConflict
=
function
()
{
// DROPDOWN NO CONFLICT
$
.
fn
.
dropdown
=
old
// ====================
return
this
}
$
.
fn
.
dropdown
.
noConflict
=
function
()
{
$
.
fn
.
dropdown
=
old
return
this
}
// APPLY TO STANDARD DROPDOWN ELEMENTS
// ===================================
$
(
document
)
// APPLY TO STANDARD DROPDOWN ELEMENTS
.
on
(
'
click.bs.dropdown.data-api
'
,
clearMenus
)
// ===================================
.
on
(
'
click.bs.dropdown.data-api
'
,
'
.dropdown form
'
,
function
(
e
)
{
e
.
stopPropagation
()
})
.
on
(
'
click.bs.dropdown.data-api
'
,
toggle
,
Dropdown
.
prototype
.
toggle
)
.
on
(
'
keydown.bs.dropdown.data-api
'
,
toggle
+
'
, [role="menu"], [role="listbox"]
'
,
Dropdown
.
prototype
.
keydown
)
})
$
(
document
)
.
on
(
'
click.bs.dropdown.data-api
'
,
clearMenus
)
.
on
(
'
click.bs.dropdown.data-api
'
,
'
.dropdown form
'
,
function
(
e
)
{
e
.
stopPropagation
()
})
.
on
(
'
click.bs.dropdown.data-api
'
,
toggle
,
Dropdown
.
prototype
.
toggle
)
.
on
(
'
keydown.bs.dropdown.data-api
'
,
toggle
+
'
, [role="menu"], [role="listbox"]
'
,
Dropdown
.
prototype
.
keydown
)
}();
}(
jQuery
);
js/modal.js
View file @
b31c35b6
...
@@ -7,280 +7,274 @@
...
@@ -7,280 +7,274 @@
* ======================================================================== */
* ======================================================================== */
+
function
()
{
'
use strict
'
;
+
function
(
$
)
{
'
use strict
'
;
(
function
(
o_o
)
{
typeof
define
==
'
function
'
&&
define
.
amd
?
define
([
'
jquery
'
],
o_o
)
:
typeof
exports
==
'
object
'
?
o_o
(
require
(
'
jquery
'
))
:
o_o
(
jQuery
)
})(
function
(
$
)
{
// MODAL CLASS DEFINITION
// ======================
var
Modal
=
function
(
element
,
options
)
{
this
.
options
=
options
this
.
$body
=
$
(
document
.
body
)
this
.
$element
=
$
(
element
)
this
.
$backdrop
=
this
.
isShown
=
null
this
.
scrollbarWidth
=
0
if
(
this
.
options
.
remote
)
{
this
.
$element
.
find
(
'
.modal-content
'
)
.
load
(
this
.
options
.
remote
,
$
.
proxy
(
function
()
{
this
.
$element
.
trigger
(
'
loaded.bs.modal
'
)
},
this
))
}
}
Modal
.
VERSION
=
'
3.1.1
'
// MODAL CLASS DEFINITION
// ======================
Modal
.
DEFAULTS
=
{
var
Modal
=
function
(
element
,
options
)
{
backdrop
:
true
,
this
.
options
=
options
keyboard
:
true
,
this
.
$body
=
$
(
document
.
body
)
show
:
true
this
.
$element
=
$
(
element
)
}
this
.
$backdrop
=
this
.
isShown
=
null
this
.
scrollbarWidth
=
0
Modal
.
prototype
.
toggle
=
function
(
_relatedTarget
)
{
if
(
this
.
options
.
remote
)
{
return
this
.
isShown
?
this
.
hide
()
:
this
.
show
(
_relatedTarget
)
this
.
$element
.
find
(
'
.modal-content
'
)
.
load
(
this
.
options
.
remote
,
$
.
proxy
(
function
()
{
this
.
$element
.
trigger
(
'
loaded.bs.modal
'
)
},
this
))
}
}
}
Modal
.
prototype
.
show
=
function
(
_relatedTarget
)
{
Modal
.
VERSION
=
'
3.1.1
'
var
that
=
this
var
e
=
$
.
Event
(
'
show.bs.modal
'
,
{
relatedTarget
:
_relatedTarget
})
this
.
$element
.
trigger
(
e
)
Modal
.
DEFAULTS
=
{
backdrop
:
true
,
keyboard
:
true
,
show
:
true
}
if
(
this
.
isShown
||
e
.
isDefaultPrevented
())
return
Modal
.
prototype
.
toggle
=
function
(
_relatedTarget
)
{
return
this
.
isShown
?
this
.
hide
()
:
this
.
show
(
_relatedTarget
)
}
this
.
isShown
=
true
Modal
.
prototype
.
show
=
function
(
_relatedTarget
)
{
var
that
=
this
var
e
=
$
.
Event
(
'
show.bs.modal
'
,
{
relatedTarget
:
_relatedTarget
})
this
.
checkScrollbar
()
this
.
$element
.
trigger
(
e
)
this
.
$body
.
addClass
(
'
modal-open
'
)
this
.
setScrollbar
()
if
(
this
.
isShown
||
e
.
isDefaultPrevented
())
return
this
.
escape
()
this
.
$element
.
on
(
'
click.dismiss.bs.modal
'
,
'
[data-dismiss="modal"]
'
,
$
.
proxy
(
this
.
hide
,
this
))
this
.
isShown
=
true
this
.
backdrop
(
function
()
{
this
.
checkScrollbar
()
var
transition
=
$
.
support
.
transition
&&
that
.
$element
.
hasClass
(
'
fade
'
)
this
.
$body
.
addClass
(
'
modal-open
'
)
if
(
!
that
.
$element
.
parent
().
length
)
{
this
.
setScrollbar
()
that
.
$element
.
appendTo
(
that
.
$body
)
// don't move modals dom position
this
.
escape
()
}
that
.
$element
this
.
$element
.
on
(
'
click.dismiss.bs.modal
'
,
'
[data-dismiss="modal"]
'
,
$
.
proxy
(
this
.
hide
,
this
))
.
show
()
.
scrollTop
(
0
)
if
(
transition
)
{
this
.
backdrop
(
function
()
{
that
.
$element
[
0
].
offsetWidth
// force reflow
var
transition
=
$
.
support
.
transition
&&
that
.
$element
.
hasClass
(
'
fade
'
)
}
that
.
$element
if
(
!
that
.
$element
.
parent
().
length
)
{
.
addClass
(
'
in
'
)
that
.
$element
.
appendTo
(
that
.
$body
)
// don't move modals dom position
.
attr
(
'
aria-hidden
'
,
false
)
}
that
.
enforceFocus
()
that
.
$element
.
show
()
.
scrollTop
(
0
)
var
e
=
$
.
Event
(
'
shown.bs.modal
'
,
{
relatedTarget
:
_relatedTarget
})
if
(
transition
)
{
that
.
$element
[
0
].
offsetWidth
// force reflow
}
transition
?
that
.
$element
that
.
$element
.
find
(
'
.modal-dialog
'
)
// wait for modal to slide in
.
addClass
(
'
in
'
)
.
one
(
'
bsTransitionEnd
'
,
function
()
{
.
attr
(
'
aria-hidden
'
,
false
)
that
.
$element
.
trigger
(
'
focus
'
).
trigger
(
e
)
})
.
emulateTransitionEnd
(
300
)
:
that
.
$element
.
trigger
(
'
focus
'
).
trigger
(
e
)
})
}
Modal
.
prototype
.
hide
=
function
(
e
)
{
that
.
enforceFocus
()
if
(
e
)
e
.
preventDefault
()
e
=
$
.
Event
(
'
hide.bs.modal
'
)
var
e
=
$
.
Event
(
'
shown.bs.modal
'
,
{
relatedTarget
:
_relatedTarget
}
)
this
.
$element
.
trigger
(
e
)
transition
?
that
.
$element
.
find
(
'
.modal-dialog
'
)
// wait for modal to slide in
.
one
(
'
bsTransitionEnd
'
,
function
()
{
that
.
$element
.
trigger
(
'
focus
'
).
trigger
(
e
)
})
.
emulateTransitionEnd
(
300
)
:
that
.
$element
.
trigger
(
'
focus
'
).
trigger
(
e
)
})
}
if
(
!
this
.
isShown
||
e
.
isDefaultPrevented
())
return
Modal
.
prototype
.
hide
=
function
(
e
)
{
if
(
e
)
e
.
preventDefault
()
this
.
isShown
=
false
e
=
$
.
Event
(
'
hide.bs.modal
'
)
this
.
$body
.
removeClass
(
'
modal-open
'
)
this
.
$element
.
trigger
(
e
)
this
.
resetScrollbar
()
if
(
!
this
.
isShown
||
e
.
isDefaultPrevented
())
return
this
.
escape
()
$
(
document
).
off
(
'
focusin.bs.modal
'
)
this
.
isShown
=
false
this
.
$element
this
.
$body
.
removeClass
(
'
modal-open
'
)
.
removeClass
(
'
in
'
)
.
attr
(
'
aria-hidden
'
,
true
)
.
off
(
'
click.dismiss.bs.modal
'
)
$
.
support
.
transition
&&
this
.
$element
.
hasClass
(
'
fade
'
)
?
this
.
resetScrollbar
()
this
.
$element
this
.
escape
()
.
one
(
'
bsTransitionEnd
'
,
$
.
proxy
(
this
.
hideModal
,
this
))
.
emulateTransitionEnd
(
300
)
:
this
.
hideModal
()
}
Modal
.
prototype
.
enforceFocus
=
function
()
{
$
(
document
).
off
(
'
focusin.bs.modal
'
)
$
(
document
)
.
off
(
'
focusin.bs.modal
'
)
// guard against infinite focus loop
.
on
(
'
focusin.bs.modal
'
,
$
.
proxy
(
function
(
e
)
{
if
(
this
.
$element
[
0
]
!==
e
.
target
&&
!
this
.
$element
.
has
(
e
.
target
).
length
)
{
this
.
$element
.
trigger
(
'
focus
'
)
}
},
this
))
}
Modal
.
prototype
.
escape
=
function
()
{
this
.
$element
if
(
this
.
isShown
&&
this
.
options
.
keyboard
)
{
.
removeClass
(
'
in
'
)
this
.
$element
.
on
(
'
keyup.dismiss.bs.modal
'
,
$
.
proxy
(
function
(
e
)
{
.
attr
(
'
aria-hidden
'
,
true
)
e
.
which
==
27
&&
this
.
hide
()
.
off
(
'
click.dismiss.bs.modal
'
)
},
this
))
}
else
if
(
!
this
.
isShown
)
{
this
.
$element
.
off
(
'
keyup.dismiss.bs.modal
'
)
}
}
Modal
.
prototype
.
hideModal
=
function
()
{
$
.
support
.
transition
&&
this
.
$element
.
hasClass
(
'
fade
'
)
?
var
that
=
this
this
.
$element
this
.
$element
.
hide
()
.
one
(
'
bsTransitionEnd
'
,
$
.
proxy
(
this
.
hideModal
,
this
))
this
.
backdrop
(
function
()
{
.
emulateTransitionEnd
(
300
)
:
that
.
$element
.
trigger
(
'
hidden.bs.modal
'
)
this
.
hideModal
()
})
}
Modal
.
prototype
.
enforceFocus
=
function
()
{
$
(
document
)
.
off
(
'
focusin.bs.modal
'
)
// guard against infinite focus loop
.
on
(
'
focusin.bs.modal
'
,
$
.
proxy
(
function
(
e
)
{
if
(
this
.
$element
[
0
]
!==
e
.
target
&&
!
this
.
$element
.
has
(
e
.
target
).
length
)
{
this
.
$element
.
trigger
(
'
focus
'
)
}
},
this
))
}
Modal
.
prototype
.
escape
=
function
()
{
if
(
this
.
isShown
&&
this
.
options
.
keyboard
)
{
this
.
$element
.
on
(
'
keyup.dismiss.bs.modal
'
,
$
.
proxy
(
function
(
e
)
{
e
.
which
==
27
&&
this
.
hide
()
},
this
))
}
else
if
(
!
this
.
isShown
)
{
this
.
$element
.
off
(
'
keyup.dismiss.bs.modal
'
)
}
}
}
Modal
.
prototype
.
removeBackdrop
=
function
()
{
Modal
.
prototype
.
hideModal
=
function
()
{
this
.
$backdrop
&&
this
.
$backdrop
.
remove
()
var
that
=
this
this
.
$backdrop
=
null
this
.
$element
.
hide
()
}
this
.
backdrop
(
function
()
{
that
.
$element
.
trigger
(
'
hidden.bs.modal
'
)
})
}
Modal
.
prototype
.
backdrop
=
function
(
callback
)
{
Modal
.
prototype
.
removeBackdrop
=
function
()
{
var
that
=
this
this
.
$backdrop
&&
this
.
$backdrop
.
remove
()
var
animate
=
this
.
$element
.
hasClass
(
'
fade
'
)
?
'
fade
'
:
''
this
.
$backdrop
=
null
}
if
(
this
.
isShown
&&
this
.
options
.
backdrop
)
{
Modal
.
prototype
.
backdrop
=
function
(
callback
)
{
var
doAnimate
=
$
.
support
.
transition
&&
animate
var
that
=
this
var
animate
=
this
.
$element
.
hasClass
(
'
fade
'
)
?
'
fade
'
:
''
this
.
$backdrop
=
$
(
'
<div class="modal-backdrop
'
+
animate
+
'
" />
'
)
if
(
this
.
isShown
&&
this
.
options
.
backdrop
)
{
.
appendTo
(
this
.
$body
)
var
doAnimate
=
$
.
support
.
transition
&&
animate
this
.
$element
.
on
(
'
click.dismiss.bs.modal
'
,
$
.
proxy
(
function
(
e
)
{
this
.
$backdrop
=
$
(
'
<div class="modal-backdrop
'
+
animate
+
'
" />
'
)
if
(
e
.
target
!==
e
.
currentTarget
)
return
.
appendTo
(
this
.
$body
)
this
.
options
.
backdrop
==
'
static
'
?
this
.
$element
[
0
].
focus
.
call
(
this
.
$element
[
0
])
:
this
.
hide
.
call
(
this
)
},
this
))
if
(
doAnimate
)
this
.
$backdrop
[
0
].
offsetWidth
// force reflow
this
.
$element
.
on
(
'
click.dismiss.bs.modal
'
,
$
.
proxy
(
function
(
e
)
{
if
(
e
.
target
!==
e
.
currentTarget
)
return
this
.
options
.
backdrop
==
'
static
'
?
this
.
$element
[
0
].
focus
.
call
(
this
.
$element
[
0
])
:
this
.
hide
.
call
(
this
)
},
this
))
this
.
$backdrop
.
addClass
(
'
in
'
)
if
(
doAnimate
)
this
.
$backdrop
[
0
].
offsetWidth
// force reflow
if
(
!
callback
)
return
this
.
$backdrop
.
addClass
(
'
in
'
)
doAnimate
?
if
(
!
callback
)
return
this
.
$backdrop
.
one
(
'
bsTransitionEnd
'
,
callback
)
.
emulateTransitionEnd
(
150
)
:
callback
()
}
else
if
(
!
this
.
isShown
&&
this
.
$backdrop
)
{
doAnimate
?
this
.
$backdrop
.
removeClass
(
'
in
'
)
this
.
$backdrop
.
one
(
'
bsTransitionEnd
'
,
callback
)
.
emulateTransitionEnd
(
150
)
:
callback
()
var
callbackRemove
=
function
()
{
}
else
if
(
!
this
.
isShown
&&
this
.
$backdrop
)
{
that
.
removeBackdrop
()
this
.
$backdrop
.
removeClass
(
'
in
'
)
callback
&&
callback
()
}
$
.
support
.
transition
&&
this
.
$element
.
hasClass
(
'
fade
'
)
?
this
.
$backdrop
.
one
(
'
bsTransitionEnd
'
,
callbackRemove
)
.
emulateTransitionEnd
(
150
)
:
callbackRemove
()
}
else
if
(
callback
)
{
var
callbackRemove
=
function
()
{
callback
()
that
.
removeBackdrop
()
callback
&&
callback
()
}
}
}
$
.
support
.
transition
&&
this
.
$element
.
hasClass
(
'
fade
'
)
?
this
.
$backdrop
.
one
(
'
bsTransitionEnd
'
,
callbackRemove
)
.
emulateTransitionEnd
(
150
)
:
callbackRemove
()
Modal
.
prototype
.
checkScrollbar
=
function
()
{
}
else
if
(
callback
)
{
if
(
document
.
body
.
clientWidth
>=
window
.
innerWidth
)
return
callback
()
this
.
scrollbarWidth
=
this
.
scrollbarWidth
||
this
.
measureScrollbar
()
}
}
}
Modal
.
prototype
.
set
Scrollbar
=
function
()
{
Modal
.
prototype
.
check
Scrollbar
=
function
()
{
var
bodyPad
=
parseInt
((
this
.
$body
.
css
(
'
padding-right
'
)
||
0
),
10
)
if
(
document
.
body
.
clientWidth
>=
window
.
innerWidth
)
return
if
(
this
.
scrollbarWidth
)
this
.
$body
.
css
(
'
padding-right
'
,
bodyPad
+
this
.
scrollbarWidth
)
this
.
scrollbarWidth
=
this
.
scrollbarWidth
||
this
.
measureScrollbar
(
)
}
}
Modal
.
prototype
.
resetScrollbar
=
function
()
{
Modal
.
prototype
.
setScrollbar
=
function
()
{
this
.
$body
.
css
(
'
padding-right
'
,
''
)
var
bodyPad
=
parseInt
((
this
.
$body
.
css
(
'
padding-right
'
)
||
0
),
10
)
}
if
(
this
.
scrollbarWidth
)
this
.
$body
.
css
(
'
padding-right
'
,
bodyPad
+
this
.
scrollbarWidth
)
}
Modal
.
prototype
.
measureScrollbar
=
function
()
{
// thx walsh
Modal
.
prototype
.
resetScrollbar
=
function
()
{
var
scrollDiv
=
document
.
createElement
(
'
div
'
)
this
.
$body
.
css
(
'
padding-right
'
,
''
)
scrollDiv
.
className
=
'
modal-scrollbar-measure
'
}
this
.
$body
.
append
(
scrollDiv
)
var
scrollbarWidth
=
scrollDiv
.
offsetWidth
-
scrollDiv
.
clientWidth
this
.
$body
[
0
].
removeChild
(
scrollDiv
)
return
scrollbarWidth
}
Modal
.
prototype
.
measureScrollbar
=
function
()
{
// thx walsh
var
scrollDiv
=
document
.
createElement
(
'
div
'
)
scrollDiv
.
className
=
'
modal-scrollbar-measure
'
this
.
$body
.
append
(
scrollDiv
)
var
scrollbarWidth
=
scrollDiv
.
offsetWidth
-
scrollDiv
.
clientWidth
this
.
$body
[
0
].
removeChild
(
scrollDiv
)
return
scrollbarWidth
}
// MODAL PLUGIN DEFINITION
// =======================
function
Plugin
(
option
,
_relatedTarget
)
{
// MODAL PLUGIN DEFINITION
return
this
.
each
(
function
()
{
// =======================
var
$this
=
$
(
this
)
var
data
=
$this
.
data
(
'
bs.modal
'
)
var
options
=
$
.
extend
({},
Modal
.
DEFAULTS
,
$this
.
data
(),
typeof
option
==
'
object
'
&&
option
)
if
(
!
data
)
$this
.
data
(
'
bs.modal
'
,
(
data
=
new
Modal
(
this
,
options
)))
function
Plugin
(
option
,
_relatedTarget
)
{
if
(
typeof
option
==
'
string
'
)
data
[
option
](
_relatedTarget
)
return
this
.
each
(
function
()
{
else
if
(
options
.
show
)
data
.
show
(
_relatedTarget
)
var
$this
=
$
(
this
)
}
)
var
data
=
$this
.
data
(
'
bs.modal
'
)
}
var
options
=
$
.
extend
({},
Modal
.
DEFAULTS
,
$this
.
data
(),
typeof
option
==
'
object
'
&&
option
)
var
old
=
$
.
fn
.
modal
if
(
!
data
)
$this
.
data
(
'
bs.modal
'
,
(
data
=
new
Modal
(
this
,
options
)))
if
(
typeof
option
==
'
string
'
)
data
[
option
](
_relatedTarget
)
else
if
(
options
.
show
)
data
.
show
(
_relatedTarget
)
})
}
$
.
fn
.
modal
=
Plugin
var
old
=
$
.
fn
.
modal
$
.
fn
.
modal
.
Constructor
=
Modal
$
.
fn
.
modal
=
Plugin
$
.
fn
.
modal
.
Constructor
=
Modal
// MODAL NO CONFLICT
// =================
$
.
fn
.
modal
.
noConflict
=
function
()
{
// MODAL NO CONFLICT
$
.
fn
.
modal
=
old
// =================
return
this
}
$
.
fn
.
modal
.
noConflict
=
function
()
{
$
.
fn
.
modal
=
old
return
this
}
// MODAL DATA-API
// ==============
$
(
document
).
on
(
'
click.bs.modal.data-api
'
,
'
[data-toggle="modal"]
'
,
function
(
e
)
{
// MODAL DATA-API
var
$this
=
$
(
this
)
// ==============
var
href
=
$this
.
attr
(
'
href
'
)
var
$target
=
$
(
$this
.
attr
(
'
data-target
'
)
||
(
href
&&
href
.
replace
(
/.*
(?=
#
[^\s]
+$
)
/
,
''
)))
// strip for ie7
var
option
=
$target
.
data
(
'
bs.modal
'
)
?
'
toggle
'
:
$
.
extend
({
remote
:
!
/#/
.
test
(
href
)
&&
href
},
$target
.
data
(),
$this
.
data
())
if
(
$this
.
is
(
'
a
'
))
e
.
preventDefault
()
$
(
document
).
on
(
'
click.bs.modal.data-api
'
,
'
[data-toggle="modal"]
'
,
function
(
e
)
{
var
$this
=
$
(
this
)
var
href
=
$this
.
attr
(
'
href
'
)
var
$target
=
$
(
$this
.
attr
(
'
data-target
'
)
||
(
href
&&
href
.
replace
(
/.*
(?=
#
[^\s]
+$
)
/
,
''
)))
// strip for ie7
var
option
=
$target
.
data
(
'
bs.modal
'
)
?
'
toggle
'
:
$
.
extend
({
remote
:
!
/#/
.
test
(
href
)
&&
href
},
$target
.
data
(),
$this
.
data
())
$target
.
one
(
'
show.bs.modal
'
,
function
(
showEvent
)
{
if
(
$this
.
is
(
'
a
'
))
e
.
preventDefault
()
if
(
showEvent
.
isDefaultPrevented
())
return
// only register focus restorer if modal will actually get shown
$target
.
one
(
'
hidden.bs.modal
'
,
function
()
{
$target
.
one
(
'
show.bs.modal
'
,
function
(
showEvent
)
{
$this
.
is
(
'
:visible
'
)
&&
$this
.
trigger
(
'
focus
'
)
if
(
showEvent
.
isDefaultPrevented
())
return
// only register focus restorer if modal will actually get shown
})
$target
.
one
(
'
hidden.bs.modal
'
,
function
()
{
$this
.
is
(
'
:visible
'
)
&&
$this
.
trigger
(
'
focus
'
)
})
})
Plugin
.
call
(
$target
,
option
,
this
)
})
})
Plugin
.
call
(
$target
,
option
,
this
)
})
})
}();
}(
jQuery
);
js/popover.js
View file @
b31c35b6
...
@@ -7,113 +7,107 @@
...
@@ -7,113 +7,107 @@
* ======================================================================== */
* ======================================================================== */
+
function
()
{
'
use strict
'
;
+
function
(
$
)
{
'
use strict
'
;
(
function
(
o_o
)
{
// POPOVER PUBLIC CLASS DEFINITION
typeof
define
==
'
function
'
&&
define
.
amd
?
define
([
'
jquery
'
],
o_o
)
:
// ===============================
typeof
exports
==
'
object
'
?
o_o
(
require
(
'
jquery
'
))
:
o_o
(
jQuery
)
})(
function
(
$
)
{
// POPOVER PUBLIC CLASS DEFINITION
var
Popover
=
function
(
element
,
options
)
{
// ===============================
this
.
init
(
'
popover
'
,
element
,
options
)
}
var
Popover
=
function
(
element
,
options
)
{
if
(
!
$
.
fn
.
tooltip
)
throw
new
Error
(
'
Popover requires tooltip.js
'
)
this
.
init
(
'
popover
'
,
element
,
options
)
}
if
(
!
$
.
fn
.
tooltip
)
throw
new
Error
(
'
Popover requires tooltip.js
'
)
Popover
.
VERSION
=
'
3.1.1
'
Popover
.
VERSION
=
'
3.1.1
'
Popover
.
DEFAULTS
=
$
.
extend
({},
$
.
fn
.
tooltip
.
Constructor
.
DEFAULTS
,
{
placement
:
'
right
'
,
trigger
:
'
click
'
,
content
:
''
,
template
:
'
<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>
'
})
Popover
.
DEFAULTS
=
$
.
extend
({},
$
.
fn
.
tooltip
.
Constructor
.
DEFAULTS
,
{
placement
:
'
right
'
,
trigger
:
'
click
'
,
content
:
''
,
template
:
'
<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>
'
})
// NOTE: POPOVER EXTENDS tooltip.js
// ================================
Popover
.
prototype
=
$
.
extend
({},
$
.
fn
.
tooltip
.
Constructor
.
prototype
)
// NOTE: POPOVER EXTENDS tooltip.js
// ================================
Popover
.
prototype
.
constructor
=
Popover
Popover
.
prototype
=
$
.
extend
({},
$
.
fn
.
tooltip
.
Constructor
.
prototype
)
Popover
.
prototype
.
getDefaults
=
function
()
{
Popover
.
prototype
.
constructor
=
Popover
return
Popover
.
DEFAULTS
}
Popover
.
prototype
.
setContent
=
function
()
{
Popover
.
prototype
.
getDefaults
=
function
()
{
var
$tip
=
this
.
tip
()
return
Popover
.
DEFAULTS
var
title
=
this
.
getTitle
()
}
var
content
=
this
.
getContent
()
$tip
.
find
(
'
.popover-title
'
)[
this
.
options
.
html
?
'
html
'
:
'
text
'
](
title
)
Popover
.
prototype
.
setContent
=
function
()
{
$tip
.
find
(
'
.popover-content
'
).
empty
()[
// we use append for html objects to maintain js events
var
$tip
=
this
.
tip
()
this
.
options
.
html
?
(
typeof
content
==
'
string
'
?
'
html
'
:
'
append
'
)
:
'
text
'
var
title
=
this
.
getTitle
()
](
content
)
var
content
=
this
.
getContent
(
)
$tip
.
removeClass
(
'
fade top bottom left right in
'
)
$tip
.
find
(
'
.popover-title
'
)[
this
.
options
.
html
?
'
html
'
:
'
text
'
](
title
)
$tip
.
find
(
'
.popover-content
'
).
empty
()[
// we use append for html objects to maintain js events
this
.
options
.
html
?
(
typeof
content
==
'
string
'
?
'
html
'
:
'
append
'
)
:
'
text
'
](
content
)
// IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do
$tip
.
removeClass
(
'
fade top bottom left right in
'
)
// this manually by checking the contents.
if
(
!
$tip
.
find
(
'
.popover-title
'
).
html
())
$tip
.
find
(
'
.popover-title
'
).
hide
()
}
Popover
.
prototype
.
hasContent
=
function
()
{
// IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do
return
this
.
getTitle
()
||
this
.
getContent
()
// this manually by checking the contents.
}
if
(
!
$tip
.
find
(
'
.popover-title
'
).
html
())
$tip
.
find
(
'
.popover-title
'
).
hide
()
}
Popover
.
prototype
.
get
Content
=
function
()
{
Popover
.
prototype
.
has
Content
=
function
()
{
var
$e
=
this
.
$element
return
this
.
getTitle
()
||
this
.
getContent
()
var
o
=
this
.
options
}
return
$e
.
attr
(
'
data-content
'
)
Popover
.
prototype
.
getContent
=
function
()
{
||
(
typeof
o
.
content
==
'
function
'
?
var
$e
=
this
.
$element
o
.
content
.
call
(
$e
[
0
])
:
var
o
=
this
.
options
o
.
content
)
}
Popover
.
prototype
.
arrow
=
function
()
{
return
$e
.
attr
(
'
data-content
'
)
return
(
this
.
$arrow
=
this
.
$arrow
||
this
.
tip
().
find
(
'
.arrow
'
))
||
(
typeof
o
.
content
==
'
function
'
?
}
o
.
content
.
call
(
$e
[
0
])
:
o
.
content
)
}
Popover
.
prototype
.
tip
=
function
()
{
Popover
.
prototype
.
arrow
=
function
()
{
if
(
!
this
.
$tip
)
this
.
$tip
=
$
(
this
.
options
.
template
)
return
(
this
.
$arrow
=
this
.
$arrow
||
this
.
tip
().
find
(
'
.arrow
'
))
return
this
.
$tip
}
}
Popover
.
prototype
.
tip
=
function
()
{
if
(
!
this
.
$tip
)
this
.
$tip
=
$
(
this
.
options
.
template
)
return
this
.
$tip
}
// POPOVER PLUGIN DEFINITION
// =========================
function
Plugin
(
option
)
{
// POPOVER PLUGIN DEFINITION
return
this
.
each
(
function
()
{
// =========================
var
$this
=
$
(
this
)
var
data
=
$this
.
data
(
'
bs.popover
'
)
var
options
=
typeof
option
==
'
object
'
&&
option
if
(
!
data
&&
option
==
'
destroy
'
)
return
function
Plugin
(
option
)
{
if
(
!
data
)
$this
.
data
(
'
bs.popover
'
,
(
data
=
new
Popover
(
this
,
options
)))
return
this
.
each
(
function
()
{
if
(
typeof
option
==
'
string
'
)
data
[
option
](
)
var
$this
=
$
(
this
)
}
)
var
data
=
$this
.
data
(
'
bs.popover
'
)
}
var
options
=
typeof
option
==
'
object
'
&&
option
var
old
=
$
.
fn
.
popover
if
(
!
data
&&
option
==
'
destroy
'
)
return
if
(
!
data
)
$this
.
data
(
'
bs.popover
'
,
(
data
=
new
Popover
(
this
,
options
)))
if
(
typeof
option
==
'
string
'
)
data
[
option
]()
})
}
$
.
fn
.
popover
=
Plugin
var
old
=
$
.
fn
.
popover
$
.
fn
.
popover
.
Constructor
=
Popover
$
.
fn
.
popover
=
Plugin
$
.
fn
.
popover
.
Constructor
=
Popover
// POPOVER NO CONFLICT
// ===================
$
.
fn
.
popover
.
noConflict
=
function
()
{
// POPOVER NO CONFLICT
$
.
fn
.
popover
=
old
// ===================
return
this
}
})
$
.
fn
.
popover
.
noConflict
=
function
()
{
$
.
fn
.
popover
=
old
return
this
}
}();
}(
jQuery
);
js/scrollspy.js
View file @
b31c35b6
...
@@ -7,170 +7,164 @@
...
@@ -7,170 +7,164 @@
* ======================================================================== */
* ======================================================================== */
+
function
()
{
'
use strict
'
;
+
function
(
$
)
{
'
use strict
'
;
(
function
(
o_o
)
{
typeof
define
==
'
function
'
&&
define
.
amd
?
define
([
'
jquery
'
],
o_o
)
:
// SCROLLSPY CLASS DEFINITION
typeof
exports
==
'
object
'
?
o_o
(
require
(
'
jquery
'
))
:
o_o
(
jQuery
)
// ==========================
})(
function
(
$
)
{
function
ScrollSpy
(
element
,
options
)
{
var
process
=
$
.
proxy
(
this
.
process
,
this
)
this
.
$body
=
$
(
'
body
'
)
this
.
$scrollElement
=
$
(
element
).
is
(
'
body
'
)
?
$
(
window
)
:
$
(
element
)
this
.
options
=
$
.
extend
({},
ScrollSpy
.
DEFAULTS
,
options
)
this
.
selector
=
(
this
.
options
.
target
||
''
)
+
'
.nav li > a
'
this
.
offsets
=
[]
this
.
targets
=
[]
this
.
activeTarget
=
null
this
.
scrollHeight
=
0
this
.
$scrollElement
.
on
(
'
scroll.bs.scrollspy
'
,
process
)
this
.
refresh
()
this
.
process
()
}
ScrollSpy
.
VERSION
=
'
3.1.1
'
ScrollSpy
.
DEFAULTS
=
{
offset
:
10
}
ScrollSpy
.
prototype
.
getScrollHeight
=
function
()
{
return
this
.
$scrollElement
[
0
].
scrollHeight
||
Math
.
max
(
this
.
$body
[
0
].
scrollHeight
,
document
.
documentElement
.
scrollHeight
)
}
ScrollSpy
.
prototype
.
refresh
=
function
()
{
var
offsetMethod
=
'
offset
'
var
offsetBase
=
0
if
(
!
$
.
isWindow
(
this
.
$scrollElement
[
0
]))
{
offsetMethod
=
'
position
'
offsetBase
=
this
.
$scrollElement
.
scrollTop
()
}
// SCROLLSPY CLASS DEFINITION
this
.
offsets
=
[]
// ==========================
this
.
targets
=
[]
this
.
scrollHeight
=
this
.
getScrollHeight
()
function
ScrollSpy
(
element
,
options
)
{
var
self
=
this
var
process
=
$
.
proxy
(
this
.
process
,
this
)
this
.
$body
=
$
(
'
body
'
)
this
.
$body
this
.
$scrollElement
=
$
(
element
).
is
(
'
body
'
)
?
$
(
window
)
:
$
(
element
)
.
find
(
this
.
selector
)
this
.
options
=
$
.
extend
({},
ScrollSpy
.
DEFAULTS
,
options
)
.
map
(
function
()
{
this
.
selector
=
(
this
.
options
.
target
||
''
)
+
'
.nav li > a
'
var
$el
=
$
(
this
)
this
.
offsets
=
[]
var
href
=
$el
.
data
(
'
target
'
)
||
$el
.
attr
(
'
href
'
)
this
.
targets
=
[]
var
$href
=
/^#./
.
test
(
href
)
&&
$
(
href
)
this
.
activeTarget
=
null
this
.
scrollHeight
=
0
this
.
$scrollElement
.
on
(
'
scroll.bs.scrollspy
'
,
process
)
return
(
$href
&&
$href
.
length
&&
$href
.
is
(
'
:visible
'
)
&&
[[
$href
[
offsetMethod
]().
top
+
offsetBase
,
href
]])
||
null
})
.
sort
(
function
(
a
,
b
)
{
return
a
[
0
]
-
b
[
0
]
})
.
each
(
function
()
{
self
.
offsets
.
push
(
this
[
0
])
self
.
targets
.
push
(
this
[
1
])
})
}
ScrollSpy
.
prototype
.
process
=
function
()
{
var
scrollTop
=
this
.
$scrollElement
.
scrollTop
()
+
this
.
options
.
offset
var
scrollHeight
=
this
.
getScrollHeight
()
var
maxScroll
=
this
.
options
.
offset
+
scrollHeight
-
this
.
$scrollElement
.
height
()
var
offsets
=
this
.
offsets
var
targets
=
this
.
targets
var
activeTarget
=
this
.
activeTarget
var
i
if
(
this
.
scrollHeight
!=
scrollHeight
)
{
this
.
refresh
()
this
.
refresh
()
this
.
process
()
}
}
ScrollSpy
.
VERSION
=
'
3.1.1
'
if
(
scrollTop
>=
maxScroll
)
{
return
activeTarget
!=
(
i
=
targets
[
targets
.
length
-
1
])
&&
this
.
activate
(
i
)
ScrollSpy
.
DEFAULTS
=
{
offset
:
10
}
}
ScrollSpy
.
prototype
.
getScrollHeight
=
function
(
)
{
if
(
activeTarget
&&
scrollTop
<=
offsets
[
0
]
)
{
return
this
.
$scrollElement
[
0
].
scrollHeight
||
Math
.
max
(
this
.
$body
[
0
].
scrollHeight
,
document
.
documentElement
.
scrollHeight
)
return
activeTarget
!=
(
i
=
targets
[
0
])
&&
this
.
activate
(
i
)
}
}
ScrollSpy
.
prototype
.
refresh
=
function
()
{
for
(
i
=
offsets
.
length
;
i
--
;)
{
var
offsetMethod
=
'
offset
'
activeTarget
!=
targets
[
i
]
var
offsetBase
=
0
&&
scrollTop
>=
offsets
[
i
]
&&
(
!
offsets
[
i
+
1
]
||
scrollTop
<=
offsets
[
i
+
1
])
if
(
!
$
.
isWindow
(
this
.
$scrollElement
[
0
]))
{
&&
this
.
activate
(
targets
[
i
])
offsetMethod
=
'
position
'
offsetBase
=
this
.
$scrollElement
.
scrollTop
()
}
this
.
offsets
=
[]
this
.
targets
=
[]
this
.
scrollHeight
=
this
.
getScrollHeight
()
var
self
=
this
this
.
$body
.
find
(
this
.
selector
)
.
map
(
function
()
{
var
$el
=
$
(
this
)
var
href
=
$el
.
data
(
'
target
'
)
||
$el
.
attr
(
'
href
'
)
var
$href
=
/^#./
.
test
(
href
)
&&
$
(
href
)
return
(
$href
&&
$href
.
length
&&
$href
.
is
(
'
:visible
'
)
&&
[[
$href
[
offsetMethod
]().
top
+
offsetBase
,
href
]])
||
null
})
.
sort
(
function
(
a
,
b
)
{
return
a
[
0
]
-
b
[
0
]
})
.
each
(
function
()
{
self
.
offsets
.
push
(
this
[
0
])
self
.
targets
.
push
(
this
[
1
])
})
}
}
}
ScrollSpy
.
prototype
.
process
=
function
()
{
ScrollSpy
.
prototype
.
activate
=
function
(
target
)
{
var
scrollTop
=
this
.
$scrollElement
.
scrollTop
()
+
this
.
options
.
offset
this
.
activeTarget
=
target
var
scrollHeight
=
this
.
getScrollHeight
()
var
maxScroll
=
this
.
options
.
offset
+
scrollHeight
-
this
.
$scrollElement
.
height
()
var
offsets
=
this
.
offsets
var
targets
=
this
.
targets
var
activeTarget
=
this
.
activeTarget
var
i
if
(
this
.
scrollHeight
!=
scrollHeight
)
{
this
.
refresh
()
}
if
(
scrollTop
>=
maxScroll
)
{
return
activeTarget
!=
(
i
=
targets
[
targets
.
length
-
1
])
&&
this
.
activate
(
i
)
}
if
(
activeTarget
&&
scrollTop
<=
offsets
[
0
])
{
return
activeTarget
!=
(
i
=
targets
[
0
])
&&
this
.
activate
(
i
)
}
for
(
i
=
offsets
.
length
;
i
--
;)
{
activeTarget
!=
targets
[
i
]
&&
scrollTop
>=
offsets
[
i
]
&&
(
!
offsets
[
i
+
1
]
||
scrollTop
<=
offsets
[
i
+
1
])
&&
this
.
activate
(
targets
[
i
])
}
}
ScrollSpy
.
prototype
.
activate
=
function
(
target
)
{
$
(
this
.
selector
)
this
.
activeTarget
=
target
.
parentsUntil
(
this
.
options
.
target
,
'
.active
'
)
.
removeClass
(
'
active
'
)
$
(
this
.
selector
)
var
selector
=
this
.
selector
+
.
parentsUntil
(
this
.
options
.
target
,
'
.active
'
)
'
[data-target="
'
+
target
+
'
"],
'
+
.
removeClass
(
'
active
'
)
this
.
selector
+
'
[href="
'
+
target
+
'
"]
'
var
selector
=
this
.
selector
+
var
active
=
$
(
selector
)
'
[data-target="
'
+
target
+
'
"],
'
+
.
parents
(
'
li
'
)
this
.
selector
+
'
[href="
'
+
target
+
'
"]
'
.
addClass
(
'
active
'
)
var
active
=
$
(
selector
)
if
(
active
.
parent
(
'
.dropdown-menu
'
).
length
)
{
.
parents
(
'
li
'
)
active
=
active
.
closest
(
'
li.dropdown
'
)
.
addClass
(
'
active
'
)
.
addClass
(
'
active
'
)
if
(
active
.
parent
(
'
.dropdown-menu
'
).
length
)
{
active
=
active
.
closest
(
'
li.dropdown
'
)
.
addClass
(
'
active
'
)
}
active
.
trigger
(
'
activate.bs.scrollspy
'
)
}
}
active
.
trigger
(
'
activate.bs.scrollspy
'
)
}
// SCROLLSPY PLUGIN DEFINITION
// ===========================
function
Plugin
(
option
)
{
// SCROLLSPY PLUGIN DEFINITION
return
this
.
each
(
function
()
{
// ===========================
var
$this
=
$
(
this
)
var
data
=
$this
.
data
(
'
bs.scrollspy
'
)
var
options
=
typeof
option
==
'
object
'
&&
option
if
(
!
data
)
$this
.
data
(
'
bs.scrollspy
'
,
(
data
=
new
ScrollSpy
(
this
,
options
)))
function
Plugin
(
option
)
{
if
(
typeof
option
==
'
string
'
)
data
[
option
]()
return
this
.
each
(
function
()
{
})
var
$this
=
$
(
this
)
}
var
data
=
$this
.
data
(
'
bs.scrollspy
'
)
var
options
=
typeof
option
==
'
object
'
&&
option
var
old
=
$
.
fn
.
scrollspy
if
(
!
data
)
$this
.
data
(
'
bs.scrollspy
'
,
(
data
=
new
ScrollSpy
(
this
,
options
)))
if
(
typeof
option
==
'
string
'
)
data
[
option
]()
})
}
$
.
fn
.
scrollspy
=
Plugin
var
old
=
$
.
fn
.
scrollspy
$
.
fn
.
scrollspy
.
Constructor
=
ScrollSpy
$
.
fn
.
scrollspy
=
Plugin
$
.
fn
.
scrollspy
.
Constructor
=
ScrollSpy
// SCROLLSPY NO CONFLICT
// =====================
$
.
fn
.
scrollspy
.
noConflict
=
function
()
{
// SCROLLSPY NO CONFLICT
$
.
fn
.
scrollspy
=
old
// =====================
return
this
}
$
.
fn
.
scrollspy
.
noConflict
=
function
()
{
$
.
fn
.
scrollspy
=
old
return
this
}
// SCROLLSPY DATA-API
// ==================
$
(
window
).
on
(
'
load.bs.scrollspy.data-api
'
,
function
()
{
// SCROLLSPY DATA-API
$
(
'
[data-spy="scroll"]
'
).
each
(
function
()
{
// ==================
var
$spy
=
$
(
this
)
Plugin
.
call
(
$spy
,
$spy
.
data
())
})
})
$
(
window
).
on
(
'
load.bs.scrollspy.data-api
'
,
function
()
{
$
(
'
[data-spy="scroll"]
'
).
each
(
function
()
{
var
$spy
=
$
(
this
)
Plugin
.
call
(
$spy
,
$spy
.
data
())
})
})
})
}();
}(
jQuery
);
js/tab.js
View file @
b31c35b6
...
@@ -7,128 +7,122 @@
...
@@ -7,128 +7,122 @@
* ======================================================================== */
* ======================================================================== */
+
function
()
{
'
use strict
'
;
+
function
(
$
)
{
'
use strict
'
;
(
function
(
o_o
)
{
// TAB CLASS DEFINITION
typeof
define
==
'
function
'
&&
define
.
amd
?
define
([
'
jquery
'
],
o_o
)
:
// ====================
typeof
exports
==
'
object
'
?
o_o
(
require
(
'
jquery
'
))
:
o_o
(
jQuery
)
})(
function
(
$
)
{
// TAB CLASS DEFINITION
var
Tab
=
function
(
element
)
{
// ====================
this
.
element
=
$
(
element
)
}
var
Tab
=
function
(
element
)
{
Tab
.
VERSION
=
'
3.1.1
'
this
.
element
=
$
(
element
)
}
Tab
.
VERSION
=
'
3.1.1
'
Tab
.
prototype
.
show
=
function
()
{
var
$this
=
this
.
element
var
$ul
=
$this
.
closest
(
'
ul:not(.dropdown-menu)
'
)
var
selector
=
$this
.
data
(
'
target
'
)
if
(
!
selector
)
{
selector
=
$this
.
attr
(
'
href
'
)
selector
=
selector
&&
selector
.
replace
(
/.*
(?=
#
[^\s]
*$
)
/
,
''
)
// strip for ie7
}
if
(
$this
.
parent
(
'
li
'
).
hasClass
(
'
active
'
))
return
var
previous
=
$ul
.
find
(
'
.active:last a
'
)[
0
]
Tab
.
prototype
.
show
=
function
()
{
var
e
=
$
.
Event
(
'
show.bs.tab
'
,
{
var
$this
=
this
.
element
relatedTarget
:
previous
var
$ul
=
$this
.
closest
(
'
ul:not(.dropdown-menu)
'
)
})
var
selector
=
$this
.
data
(
'
target
'
)
$this
.
trigger
(
e
)
if
(
e
.
isDefaultPrevented
())
return
if
(
!
selector
)
{
selector
=
$this
.
attr
(
'
href
'
)
var
$target
=
$
(
selector
)
selector
=
selector
&&
selector
.
replace
(
/.*
(?=
#
[^\s]
*$
)
/
,
''
)
// strip for ie7
this
.
activate
(
$this
.
closest
(
'
li
'
),
$ul
)
this
.
activate
(
$target
,
$target
.
parent
(),
function
()
{
$this
.
trigger
({
type
:
'
shown.bs.tab
'
,
relatedTarget
:
previous
})
})
}
}
Tab
.
prototype
.
activate
=
function
(
element
,
container
,
callback
)
{
if
(
$this
.
parent
(
'
li
'
).
hasClass
(
'
active
'
))
return
var
$active
=
container
.
find
(
'
> .active
'
)
var
transition
=
callback
&&
$
.
support
.
transition
&&
$active
.
hasClass
(
'
fade
'
)
function
next
()
{
var
previous
=
$ul
.
find
(
'
.active:last a
'
)[
0
]
$active
var
e
=
$
.
Event
(
'
show.bs.tab
'
,
{
.
removeClass
(
'
active
'
)
relatedTarget
:
previous
.
find
(
'
> .dropdown-menu > .active
'
)
})
.
removeClass
(
'
active
'
)
element
.
addClass
(
'
active
'
)
$this
.
trigger
(
e
)
if
(
transition
)
{
if
(
e
.
isDefaultPrevented
())
return
element
[
0
].
offsetWidth
// reflow for transition
element
.
addClass
(
'
in
'
)
}
else
{
element
.
removeClass
(
'
fade
'
)
}
if
(
element
.
parent
(
'
.dropdown-menu
'
))
{
var
$target
=
$
(
selector
)
element
.
closest
(
'
li.dropdown
'
).
addClass
(
'
active
'
)
}
callback
&&
callback
()
this
.
activate
(
$this
.
closest
(
'
li
'
),
$ul
)
this
.
activate
(
$target
,
$target
.
parent
(),
function
()
{
$this
.
trigger
({
type
:
'
shown.bs.tab
'
,
relatedTarget
:
previous
})
})
}
Tab
.
prototype
.
activate
=
function
(
element
,
container
,
callback
)
{
var
$active
=
container
.
find
(
'
> .active
'
)
var
transition
=
callback
&&
$
.
support
.
transition
&&
$active
.
hasClass
(
'
fade
'
)
function
next
()
{
$active
.
removeClass
(
'
active
'
)
.
find
(
'
> .dropdown-menu > .active
'
)
.
removeClass
(
'
active
'
)
element
.
addClass
(
'
active
'
)
if
(
transition
)
{
element
[
0
].
offsetWidth
// reflow for transition
element
.
addClass
(
'
in
'
)
}
else
{
element
.
removeClass
(
'
fade
'
)
}
}
transition
?
if
(
element
.
parent
(
'
.dropdown-menu
'
))
{
$active
element
.
closest
(
'
li.dropdown
'
).
addClass
(
'
active
'
)
.
one
(
'
bsTransitionEnd
'
,
next
)
}
.
emulateTransitionEnd
(
150
)
:
next
()
$active
.
removeClass
(
'
in
'
)
callback
&&
callback
(
)
}
}
transition
?
$active
.
one
(
'
bsTransitionEnd
'
,
next
)
.
emulateTransitionEnd
(
150
)
:
next
()
// TAB PLUGIN DEFINITION
$active
.
removeClass
(
'
in
'
)
// =====================
}
function
Plugin
(
option
)
{
return
this
.
each
(
function
()
{
var
$this
=
$
(
this
)
var
data
=
$this
.
data
(
'
bs.tab
'
)
if
(
!
data
)
$this
.
data
(
'
bs.tab
'
,
(
data
=
new
Tab
(
this
)))
// TAB PLUGIN DEFINITION
if
(
typeof
option
==
'
string
'
)
data
[
option
]()
// =====================
})
}
var
old
=
$
.
fn
.
tab
function
Plugin
(
option
)
{
return
this
.
each
(
function
()
{
var
$this
=
$
(
this
)
var
data
=
$this
.
data
(
'
bs.tab
'
)
$
.
fn
.
tab
=
Plugin
if
(
!
data
)
$this
.
data
(
'
bs.tab
'
,
(
data
=
new
Tab
(
this
)))
$
.
fn
.
tab
.
Constructor
=
Tab
if
(
typeof
option
==
'
string
'
)
data
[
option
]()
})
}
var
old
=
$
.
fn
.
tab
// TAB NO CONFLICT
$
.
fn
.
tab
=
Plugin
// ===============
$
.
fn
.
tab
.
Constructor
=
Tab
$
.
fn
.
tab
.
noConflict
=
function
()
{
$
.
fn
.
tab
=
old
return
this
}
// TAB NO CONFLICT
// ===============
// TAB DATA-API
$
.
fn
.
tab
.
noConflict
=
function
()
{
// ============
$
.
fn
.
tab
=
old
return
this
}
$
(
document
).
on
(
'
click.bs.tab.data-api
'
,
'
[data-toggle="tab"], [data-toggle="pill"]
'
,
function
(
e
)
{
e
.
preventDefault
()
Plugin
.
call
(
$
(
this
),
'
show
'
)
})
// TAB DATA-API
// ============
$
(
document
).
on
(
'
click.bs.tab.data-api
'
,
'
[data-toggle="tab"], [data-toggle="pill"]
'
,
function
(
e
)
{
e
.
preventDefault
()
Plugin
.
call
(
$
(
this
),
'
show
'
)
})
})
}();
}(
jQuery
);
js/tooltip.js
View file @
b31c35b6
...
@@ -8,456 +8,450 @@
...
@@ -8,456 +8,450 @@
* ======================================================================== */
* ======================================================================== */
+
function
()
{
'
use strict
'
;
+
function
(
$
)
{
'
use strict
'
;
(
function
(
o_o
)
{
typeof
define
==
'
function
'
&&
define
.
amd
?
define
([
'
jquery
'
],
o_o
)
:
// TOOLTIP PUBLIC CLASS DEFINITION
typeof
exports
==
'
object
'
?
o_o
(
require
(
'
jquery
'
))
:
o_o
(
jQuery
)
// ===============================
})(
function
(
$
)
{
var
Tooltip
=
function
(
element
,
options
)
{
// TOOLTIP PUBLIC CLASS DEFINITION
this
.
type
=
// ===============================
this
.
options
=
this
.
enabled
=
var
Tooltip
=
function
(
element
,
options
)
{
this
.
timeout
=
this
.
type
=
this
.
hoverState
=
this
.
options
=
this
.
$element
=
null
this
.
enabled
=
this
.
timeout
=
this
.
init
(
'
tooltip
'
,
element
,
options
)
this
.
hoverState
=
}
this
.
$element
=
null
Tooltip
.
VERSION
=
'
3.1.1
'
this
.
init
(
'
tooltip
'
,
element
,
options
)
}
Tooltip
.
DEFAULTS
=
{
animation
:
true
,
Tooltip
.
VERSION
=
'
3.1.1
'
placement
:
'
top
'
,
selector
:
false
,
Tooltip
.
DEFAULTS
=
{
template
:
'
<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>
'
,
animation
:
true
,
trigger
:
'
hover focus
'
,
placement
:
'
top
'
,
title
:
''
,
selector
:
false
,
delay
:
0
,
template
:
'
<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>
'
,
html
:
false
,
trigger
:
'
hover focus
'
,
container
:
false
,
title
:
''
,
viewport
:
{
delay
:
0
,
selector
:
'
body
'
,
html
:
false
,
padding
:
0
container
:
false
,
viewport
:
{
selector
:
'
body
'
,
padding
:
0
}
}
}
}
Tooltip
.
prototype
.
init
=
function
(
type
,
element
,
options
)
{
Tooltip
.
prototype
.
init
=
function
(
type
,
element
,
options
)
{
this
.
enabled
=
true
this
.
enabled
=
true
this
.
type
=
type
this
.
type
=
type
this
.
$element
=
$
(
element
)
this
.
$element
=
$
(
element
)
this
.
options
=
this
.
getOptions
(
options
)
this
.
options
=
this
.
getOptions
(
options
)
this
.
$viewport
=
this
.
options
.
viewport
&&
$
(
this
.
options
.
viewport
.
selector
||
this
.
options
.
viewport
)
this
.
$viewport
=
this
.
options
.
viewport
&&
$
(
this
.
options
.
viewport
.
selector
||
this
.
options
.
viewport
)
var
triggers
=
this
.
options
.
trigger
.
split
(
'
'
)
var
triggers
=
this
.
options
.
trigger
.
split
(
'
'
)
for
(
var
i
=
triggers
.
length
;
i
--
;)
{
for
(
var
i
=
triggers
.
length
;
i
--
;)
{
var
trigger
=
triggers
[
i
]
var
trigger
=
triggers
[
i
]
if
(
trigger
==
'
click
'
)
{
if
(
trigger
==
'
click
'
)
{
this
.
$element
.
on
(
'
click.
'
+
this
.
type
,
this
.
options
.
selector
,
$
.
proxy
(
this
.
toggle
,
this
))
this
.
$element
.
on
(
'
click.
'
+
this
.
type
,
this
.
options
.
selector
,
$
.
proxy
(
this
.
toggle
,
this
))
}
else
if
(
trigger
!=
'
manual
'
)
{
}
else
if
(
trigger
!=
'
manual
'
)
{
var
eventIn
=
trigger
==
'
hover
'
?
'
mouseenter
'
:
'
focusin
'
var
eventIn
=
trigger
==
'
hover
'
?
'
mouseenter
'
:
'
focusin
'
var
eventOut
=
trigger
==
'
hover
'
?
'
mouseleave
'
:
'
focusout
'
var
eventOut
=
trigger
==
'
hover
'
?
'
mouseleave
'
:
'
focusout
'
this
.
$element
.
on
(
eventIn
+
'
.
'
+
this
.
type
,
this
.
options
.
selector
,
$
.
proxy
(
this
.
enter
,
this
))
this
.
$element
.
on
(
eventIn
+
'
.
'
+
this
.
type
,
this
.
options
.
selector
,
$
.
proxy
(
this
.
enter
,
this
))
this
.
$element
.
on
(
eventOut
+
'
.
'
+
this
.
type
,
this
.
options
.
selector
,
$
.
proxy
(
this
.
leave
,
this
))
this
.
$element
.
on
(
eventOut
+
'
.
'
+
this
.
type
,
this
.
options
.
selector
,
$
.
proxy
(
this
.
leave
,
this
))
}
}
}
this
.
options
.
selector
?
(
this
.
_options
=
$
.
extend
({},
this
.
options
,
{
trigger
:
'
manual
'
,
selector
:
''
}))
:
this
.
fixTitle
()
}
Tooltip
.
prototype
.
getDefaults
=
function
()
{
return
Tooltip
.
DEFAULTS
}
}
Tooltip
.
prototype
.
getOptions
=
function
(
options
)
{
this
.
options
.
selector
?
options
=
$
.
extend
({},
this
.
getDefaults
(),
this
.
$element
.
data
(),
options
)
(
this
.
_options
=
$
.
extend
({},
this
.
options
,
{
trigger
:
'
manual
'
,
selector
:
''
}))
:
this
.
fixTitle
()
}
if
(
options
.
delay
&&
typeof
options
.
delay
==
'
number
'
)
{
Tooltip
.
prototype
.
getDefaults
=
function
()
{
options
.
delay
=
{
return
Tooltip
.
DEFAULTS
show
:
options
.
delay
,
}
hide
:
options
.
delay
}
}
return
options
}
Tooltip
.
prototype
.
getDelegateOptions
=
function
()
{
Tooltip
.
prototype
.
getOptions
=
function
(
options
)
{
var
options
=
{}
options
=
$
.
extend
({},
this
.
getDefaults
(),
this
.
$element
.
data
(),
options
)
var
defaults
=
this
.
getDefaults
()
this
.
_options
&&
$
.
each
(
this
.
_options
,
function
(
key
,
value
)
{
if
(
options
.
delay
&&
typeof
options
.
delay
==
'
number
'
)
{
if
(
defaults
[
key
]
!=
value
)
options
[
key
]
=
value
options
.
delay
=
{
})
show
:
options
.
delay
,
hide
:
options
.
delay
return
options
}
}
}
Tooltip
.
prototype
.
enter
=
function
(
obj
)
{
return
options
var
self
=
obj
instanceof
this
.
constructor
?
}
obj
:
$
(
obj
.
currentTarget
).
data
(
'
bs.
'
+
this
.
type
)
if
(
!
self
)
{
Tooltip
.
prototype
.
getDelegateOptions
=
function
()
{
self
=
new
this
.
constructor
(
obj
.
currentTarget
,
this
.
getDelegateOptions
())
var
options
=
{}
$
(
obj
.
currentTarget
).
data
(
'
bs.
'
+
this
.
type
,
self
)
var
defaults
=
this
.
getDefaults
()
}
clearTimeout
(
self
.
timeout
)
this
.
_options
&&
$
.
each
(
this
.
_options
,
function
(
key
,
value
)
{
if
(
defaults
[
key
]
!=
value
)
options
[
key
]
=
value
})
self
.
hoverState
=
'
in
'
return
options
}
if
(
!
self
.
options
.
delay
||
!
self
.
options
.
delay
.
show
)
return
self
.
show
()
Tooltip
.
prototype
.
enter
=
function
(
obj
)
{
var
self
=
obj
instanceof
this
.
constructor
?
obj
:
$
(
obj
.
currentTarget
).
data
(
'
bs.
'
+
this
.
type
)
self
.
timeout
=
setTimeout
(
function
(
)
{
if
(
!
self
)
{
if
(
self
.
hoverState
==
'
in
'
)
self
.
show
(
)
self
=
new
this
.
constructor
(
obj
.
currentTarget
,
this
.
getDelegateOptions
()
)
},
self
.
options
.
delay
.
show
)
$
(
obj
.
currentTarget
).
data
(
'
bs.
'
+
this
.
type
,
self
)
}
}
Tooltip
.
prototype
.
leave
=
function
(
obj
)
{
clearTimeout
(
self
.
timeout
)
var
self
=
obj
instanceof
this
.
constructor
?
obj
:
$
(
obj
.
currentTarget
).
data
(
'
bs.
'
+
this
.
type
)
if
(
!
self
)
{
self
.
hoverState
=
'
in
'
self
=
new
this
.
constructor
(
obj
.
currentTarget
,
this
.
getDelegateOptions
())
$
(
obj
.
currentTarget
).
data
(
'
bs.
'
+
this
.
type
,
self
)
}
clearTimeout
(
self
.
timeout
)
if
(
!
self
.
options
.
delay
||
!
self
.
options
.
delay
.
show
)
return
self
.
show
(
)
self
.
hoverState
=
'
out
'
self
.
timeout
=
setTimeout
(
function
()
{
if
(
self
.
hoverState
==
'
in
'
)
self
.
show
()
},
self
.
options
.
delay
.
show
)
}
if
(
!
self
.
options
.
delay
||
!
self
.
options
.
delay
.
hide
)
return
self
.
hide
()
Tooltip
.
prototype
.
leave
=
function
(
obj
)
{
var
self
=
obj
instanceof
this
.
constructor
?
obj
:
$
(
obj
.
currentTarget
).
data
(
'
bs.
'
+
this
.
type
)
self
.
timeout
=
setTimeout
(
function
(
)
{
if
(
!
self
)
{
if
(
self
.
hoverState
==
'
out
'
)
self
.
hide
(
)
self
=
new
this
.
constructor
(
obj
.
currentTarget
,
this
.
getDelegateOptions
()
)
},
self
.
options
.
delay
.
hide
)
$
(
obj
.
currentTarget
).
data
(
'
bs.
'
+
this
.
type
,
self
)
}
}
Tooltip
.
prototype
.
show
=
function
()
{
clearTimeout
(
self
.
timeout
)
var
e
=
$
.
Event
(
'
show.bs.
'
+
this
.
type
)
if
(
this
.
hasContent
()
&&
this
.
enabled
)
{
self
.
hoverState
=
'
out
'
this
.
$element
.
trigger
(
e
)
var
inDom
=
$
.
contains
(
document
.
documentElement
,
this
.
$element
[
0
])
if
(
!
self
.
options
.
delay
||
!
self
.
options
.
delay
.
hide
)
return
self
.
hide
()
if
(
e
.
isDefaultPrevented
()
||
!
inDom
)
return
var
that
=
this
var
$tip
=
this
.
tip
()
self
.
timeout
=
setTimeout
(
function
()
{
if
(
self
.
hoverState
==
'
out
'
)
self
.
hide
()
},
self
.
options
.
delay
.
hide
)
}
var
tipId
=
this
.
getUID
(
this
.
type
)
Tooltip
.
prototype
.
show
=
function
()
{
var
e
=
$
.
Event
(
'
show.bs.
'
+
this
.
type
)
this
.
setContent
()
if
(
this
.
hasContent
()
&&
this
.
enabled
)
{
$tip
.
attr
(
'
id
'
,
tipId
)
this
.
$element
.
trigger
(
e
)
this
.
$element
.
attr
(
'
aria-describedby
'
,
tipId
)
if
(
this
.
options
.
animation
)
$tip
.
addClass
(
'
fade
'
)
var
inDom
=
$
.
contains
(
document
.
documentElement
,
this
.
$element
[
0
])
if
(
e
.
isDefaultPrevented
()
||
!
inDom
)
return
var
that
=
this
var
placement
=
typeof
this
.
options
.
placement
==
'
function
'
?
var
$tip
=
this
.
tip
()
this
.
options
.
placement
.
call
(
this
,
$tip
[
0
],
this
.
$element
[
0
])
:
this
.
options
.
placement
var
autoToken
=
/
\s?
auto
?\s?
/i
var
tipId
=
this
.
getUID
(
this
.
type
)
var
autoPlace
=
autoToken
.
test
(
placement
)
if
(
autoPlace
)
placement
=
placement
.
replace
(
autoToken
,
''
)
||
'
top
'
$tip
this
.
setContent
()
.
detach
()
$tip
.
attr
(
'
id
'
,
tipId
)
.
css
({
top
:
0
,
left
:
0
,
display
:
'
block
'
})
this
.
$element
.
attr
(
'
aria-describedby
'
,
tipId
)
.
addClass
(
placement
)
.
data
(
'
bs.
'
+
this
.
type
,
this
)
this
.
options
.
container
?
$tip
.
appendTo
(
this
.
options
.
container
)
:
$tip
.
insertAfter
(
this
.
$element
)
if
(
this
.
options
.
animation
)
$tip
.
addClass
(
'
fade
'
)
var
pos
=
this
.
getPosition
()
var
placement
=
typeof
this
.
options
.
placement
==
'
function
'
?
var
actualWidth
=
$tip
[
0
].
offsetWidth
this
.
options
.
placement
.
call
(
this
,
$tip
[
0
],
this
.
$element
[
0
])
:
var
actualHeight
=
$tip
[
0
].
offsetHeigh
t
this
.
options
.
placemen
t
if
(
autoPlace
)
{
var
autoToken
=
/
\s?
auto
?\s?
/i
var
orgPlacement
=
placement
var
autoPlace
=
autoToken
.
test
(
placement
)
var
$parent
=
this
.
$element
.
parent
()
if
(
autoPlace
)
placement
=
placement
.
replace
(
autoToken
,
''
)
||
'
top
'
var
parentDim
=
this
.
getPosition
(
$parent
)
placement
=
placement
==
'
bottom
'
&&
pos
.
top
+
pos
.
height
+
actualHeight
-
parentDim
.
scroll
>
parentDim
.
height
?
'
top
'
:
$tip
placement
==
'
top
'
&&
pos
.
top
-
parentDim
.
scroll
-
actualHeight
<
0
?
'
bottom
'
:
.
detach
()
placement
==
'
right
'
&&
pos
.
right
+
actualWidth
>
parentDim
.
width
?
'
left
'
:
.
css
({
top
:
0
,
left
:
0
,
display
:
'
block
'
})
placement
==
'
left
'
&&
pos
.
left
-
actualWidth
<
parentDim
.
left
?
'
right
'
:
.
addClass
(
placement
)
placement
.
data
(
'
bs.
'
+
this
.
type
,
this
)
$tip
this
.
options
.
container
?
$tip
.
appendTo
(
this
.
options
.
container
)
:
$tip
.
insertAfter
(
this
.
$element
)
.
removeClass
(
orgPlacement
)
.
addClass
(
placement
)
}
var
calculatedOffset
=
this
.
getCalculatedOffset
(
placement
,
pos
,
actualWidth
,
actualHeight
)
var
pos
=
this
.
getPosition
()
var
actualWidth
=
$tip
[
0
].
offsetWidth
var
actualHeight
=
$tip
[
0
].
offsetHeight
this
.
applyPlacement
(
calculatedOffset
,
placement
)
if
(
autoPlace
)
{
var
orgPlacement
=
placement
var
$parent
=
this
.
$element
.
parent
()
var
parentDim
=
this
.
getPosition
(
$parent
)
var
complete
=
function
()
{
placement
=
placement
==
'
bottom
'
&&
pos
.
top
+
pos
.
height
+
actualHeight
-
parentDim
.
scroll
>
parentDim
.
height
?
'
top
'
:
that
.
$element
.
trigger
(
'
shown.bs.
'
+
that
.
type
)
placement
==
'
top
'
&&
pos
.
top
-
parentDim
.
scroll
-
actualHeight
<
0
?
'
bottom
'
:
that
.
hoverState
=
null
placement
==
'
right
'
&&
pos
.
right
+
actualWidth
>
parentDim
.
width
?
'
left
'
:
}
placement
==
'
left
'
&&
pos
.
left
-
actualWidth
<
parentDim
.
left
?
'
right
'
:
placement
$
.
support
.
transition
&&
this
.
$tip
.
hasClass
(
'
fade
'
)
?
$tip
$tip
.
removeClass
(
orgPlacement
)
.
one
(
'
bsTransitionEnd
'
,
complete
)
.
addClass
(
placement
)
.
emulateTransitionEnd
(
150
)
:
complete
()
}
}
}
Tooltip
.
prototype
.
applyPlacement
=
function
(
offset
,
placement
)
{
var
$tip
=
this
.
tip
()
var
width
=
$tip
[
0
].
offsetWidth
var
height
=
$tip
[
0
].
offsetHeight
// manually read margins because getBoundingClientRect includes difference
var
calculatedOffset
=
this
.
getCalculatedOffset
(
placement
,
pos
,
actualWidth
,
actualHeight
)
var
marginTop
=
parseInt
(
$tip
.
css
(
'
margin-top
'
),
10
)
var
marginLeft
=
parseInt
(
$tip
.
css
(
'
margin-left
'
),
10
)
// we must check for NaN for ie 8/9
this
.
applyPlacement
(
calculatedOffset
,
placement
)
if
(
isNaN
(
marginTop
))
marginTop
=
0
if
(
isNaN
(
marginLeft
))
marginLeft
=
0
offset
.
top
=
offset
.
top
+
marginTop
var
complete
=
function
()
{
offset
.
left
=
offset
.
left
+
marginLeft
that
.
$element
.
trigger
(
'
shown.bs.
'
+
that
.
type
)
that
.
hoverState
=
null
// $.fn.offset doesn't round pixel values
// so we use setOffset directly with our own function B-0
$
.
offset
.
setOffset
(
$tip
[
0
],
$
.
extend
({
using
:
function
(
props
)
{
$tip
.
css
({
top
:
Math
.
round
(
props
.
top
),
left
:
Math
.
round
(
props
.
left
)
})
}
},
offset
),
0
)
$tip
.
addClass
(
'
in
'
)
// check to see if placing tip in new offset caused the tip to resize itself
var
actualWidth
=
$tip
[
0
].
offsetWidth
var
actualHeight
=
$tip
[
0
].
offsetHeight
if
(
placement
==
'
top
'
&&
actualHeight
!=
height
)
{
offset
.
top
=
offset
.
top
+
height
-
actualHeight
}
}
var
delta
=
this
.
getViewportAdjustedDelta
(
placement
,
offset
,
actualWidth
,
actualHeight
)
$
.
support
.
transition
&&
this
.
$tip
.
hasClass
(
'
fade
'
)
?
$tip
.
one
(
'
bsTransitionEnd
'
,
complete
)
.
emulateTransitionEnd
(
150
)
:
complete
()
}
}
Tooltip
.
prototype
.
applyPlacement
=
function
(
offset
,
placement
)
{
var
$tip
=
this
.
tip
()
var
width
=
$tip
[
0
].
offsetWidth
var
height
=
$tip
[
0
].
offsetHeight
// manually read margins because getBoundingClientRect includes difference
var
marginTop
=
parseInt
(
$tip
.
css
(
'
margin-top
'
),
10
)
var
marginLeft
=
parseInt
(
$tip
.
css
(
'
margin-left
'
),
10
)
// we must check for NaN for ie 8/9
if
(
isNaN
(
marginTop
))
marginTop
=
0
if
(
isNaN
(
marginLeft
))
marginLeft
=
0
offset
.
top
=
offset
.
top
+
marginTop
offset
.
left
=
offset
.
left
+
marginLeft
// $.fn.offset doesn't round pixel values
// so we use setOffset directly with our own function B-0
$
.
offset
.
setOffset
(
$tip
[
0
],
$
.
extend
({
using
:
function
(
props
)
{
$tip
.
css
({
top
:
Math
.
round
(
props
.
top
),
left
:
Math
.
round
(
props
.
left
)
})
}
},
offset
),
0
)
if
(
delta
.
left
)
offset
.
left
+=
delta
.
left
$tip
.
addClass
(
'
in
'
)
else
offset
.
top
+=
delta
.
top
var
arrowDelta
=
delta
.
left
?
delta
.
left
*
2
-
width
+
actualWidth
:
delta
.
top
*
2
-
height
+
actualHeight
// check to see if placing tip in new offset caused the tip to resize itself
var
arrowPosition
=
delta
.
left
?
'
left
'
:
'
top
'
var
actualWidth
=
$tip
[
0
].
offsetWidth
var
arrowOffsetPosition
=
delta
.
left
?
'
offsetWidth
'
:
'
offsetHeight
'
var
actualHeight
=
$tip
[
0
].
offsetHeight
$tip
.
offset
(
offset
)
if
(
placement
==
'
top
'
&&
actualHeight
!=
height
)
{
this
.
replaceArrow
(
arrowDelta
,
$tip
[
0
][
arrowOffsetPosition
],
arrowPosition
)
offset
.
top
=
offset
.
top
+
height
-
actualHeight
}
}
Tooltip
.
prototype
.
replaceArrow
=
function
(
delta
,
dimension
,
position
)
{
var
delta
=
this
.
getViewportAdjustedDelta
(
placement
,
offset
,
actualWidth
,
actualHeight
)
this
.
arrow
().
css
(
position
,
delta
?
(
50
*
(
1
-
delta
/
dimension
)
+
'
%
'
)
:
''
)
}
Tooltip
.
prototype
.
setContent
=
function
()
{
if
(
delta
.
left
)
offset
.
left
+=
delta
.
left
var
$tip
=
this
.
tip
()
else
offset
.
top
+=
delta
.
top
var
title
=
this
.
getTitle
()
$tip
.
find
(
'
.tooltip-inner
'
)[
this
.
options
.
html
?
'
html
'
:
'
text
'
](
title
)
var
arrowDelta
=
delta
.
left
?
delta
.
left
*
2
-
width
+
actualWidth
:
delta
.
top
*
2
-
height
+
actualHeight
$tip
.
removeClass
(
'
fade in top bottom left right
'
)
var
arrowPosition
=
delta
.
left
?
'
left
'
:
'
top
'
}
var
arrowOffsetPosition
=
delta
.
left
?
'
offsetWidth
'
:
'
offsetHeight
'
Tooltip
.
prototype
.
hide
=
function
()
{
$tip
.
offset
(
offset
)
var
that
=
this
this
.
replaceArrow
(
arrowDelta
,
$tip
[
0
][
arrowOffsetPosition
],
arrowPosition
)
var
$tip
=
this
.
tip
()
}
var
e
=
$
.
Event
(
'
hide.bs.
'
+
this
.
type
)
this
.
$element
.
removeAttr
(
'
aria-describedby
'
)
Tooltip
.
prototype
.
replaceArrow
=
function
(
delta
,
dimension
,
position
)
{
this
.
arrow
().
css
(
position
,
delta
?
(
50
*
(
1
-
delta
/
dimension
)
+
'
%
'
)
:
''
)
}
function
complete
()
{
Tooltip
.
prototype
.
setContent
=
function
()
{
if
(
that
.
hoverState
!=
'
in
'
)
$tip
.
detach
()
var
$tip
=
this
.
tip
()
that
.
$element
.
trigger
(
'
hidden.bs.
'
+
that
.
type
)
var
title
=
this
.
getTitle
()
}
this
.
$element
.
trigger
(
e
)
$tip
.
find
(
'
.tooltip-inner
'
)[
this
.
options
.
html
?
'
html
'
:
'
text
'
](
title
)
$tip
.
removeClass
(
'
fade in top bottom left right
'
)
}
if
(
e
.
isDefaultPrevented
())
return
Tooltip
.
prototype
.
hide
=
function
()
{
var
that
=
this
var
$tip
=
this
.
tip
()
var
e
=
$
.
Event
(
'
hide.bs.
'
+
this
.
type
)
$tip
.
removeClass
(
'
in
'
)
this
.
$element
.
removeAttr
(
'
aria-describedby
'
)
$
.
support
.
transition
&&
this
.
$tip
.
hasClass
(
'
fade
'
)
?
function
complete
()
{
$tip
if
(
that
.
hoverState
!=
'
in
'
)
$tip
.
detach
()
.
one
(
'
bsTransitionEnd
'
,
complete
)
that
.
$element
.
trigger
(
'
hidden.bs.
'
+
that
.
type
)
.
emulateTransitionEnd
(
150
)
:
}
complete
()
this
.
hoverState
=
null
this
.
$element
.
trigger
(
e
)
return
this
if
(
e
.
isDefaultPrevented
())
return
}
Tooltip
.
prototype
.
fixTitle
=
function
()
{
$tip
.
removeClass
(
'
in
'
)
var
$e
=
this
.
$element
if
(
$e
.
attr
(
'
title
'
)
||
typeof
(
$e
.
attr
(
'
data-original-title
'
))
!=
'
string
'
)
{
$e
.
attr
(
'
data-original-title
'
,
$e
.
attr
(
'
title
'
)
||
''
).
attr
(
'
title
'
,
''
)
}
}
Tooltip
.
prototype
.
hasContent
=
function
()
{
$
.
support
.
transition
&&
this
.
$tip
.
hasClass
(
'
fade
'
)
?
return
this
.
getTitle
()
$tip
}
.
one
(
'
bsTransitionEnd
'
,
complete
)
.
emulateTransitionEnd
(
150
)
:
complete
()
Tooltip
.
prototype
.
getPosition
=
function
(
$element
)
{
this
.
hoverState
=
null
$element
=
$element
||
this
.
$element
var
el
=
$element
[
0
]
var
isBody
=
el
.
tagName
==
'
BODY
'
return
$
.
extend
({},
(
typeof
el
.
getBoundingClientRect
==
'
function
'
)
?
el
.
getBoundingClientRect
()
:
null
,
{
scroll
:
isBody
?
document
.
documentElement
.
scrollTop
||
document
.
body
.
scrollTop
:
$element
.
scrollTop
(),
width
:
isBody
?
$
(
window
).
width
()
:
$element
.
outerWidth
(),
height
:
isBody
?
$
(
window
).
height
()
:
$element
.
outerHeight
()
},
isBody
?
{
top
:
0
,
left
:
0
}
:
$element
.
offset
())
}
Tooltip
.
prototype
.
getCalculatedOffset
=
function
(
placement
,
pos
,
actualWidth
,
actualHeight
)
{
return
this
return
placement
==
'
bottom
'
?
{
top
:
pos
.
top
+
pos
.
height
,
left
:
pos
.
left
+
pos
.
width
/
2
-
actualWidth
/
2
}
:
}
placement
==
'
top
'
?
{
top
:
pos
.
top
-
actualHeight
,
left
:
pos
.
left
+
pos
.
width
/
2
-
actualWidth
/
2
}
:
placement
==
'
left
'
?
{
top
:
pos
.
top
+
pos
.
height
/
2
-
actualHeight
/
2
,
left
:
pos
.
left
-
actualWidth
}
:
/* placement == 'right' */
{
top
:
pos
.
top
+
pos
.
height
/
2
-
actualHeight
/
2
,
left
:
pos
.
left
+
pos
.
width
}
Tooltip
.
prototype
.
fixTitle
=
function
()
{
var
$e
=
this
.
$element
if
(
$e
.
attr
(
'
title
'
)
||
typeof
(
$e
.
attr
(
'
data-original-title
'
))
!=
'
string
'
)
{
$e
.
attr
(
'
data-original-title
'
,
$e
.
attr
(
'
title
'
)
||
''
).
attr
(
'
title
'
,
''
)
}
}
}
Tooltip
.
prototype
.
getViewportAdjustedDelta
=
function
(
placement
,
pos
,
actualWidth
,
actualHeight
)
{
var
delta
=
{
top
:
0
,
left
:
0
}
Tooltip
.
prototype
.
hasContent
=
function
()
{
if
(
!
this
.
$viewport
)
return
delta
return
this
.
getTitle
()
}
var
viewportPadding
=
this
.
options
.
viewport
&&
this
.
options
.
viewport
.
padding
||
0
var
viewportDimensions
=
this
.
getPosition
(
this
.
$viewport
)
Tooltip
.
prototype
.
getPosition
=
function
(
$element
)
{
$element
=
$element
||
this
.
$element
if
(
/right|left/
.
test
(
placement
))
{
var
el
=
$element
[
0
]
var
topEdgeOffset
=
pos
.
top
-
viewportPadding
-
viewportDimensions
.
scroll
var
isBody
=
el
.
tagName
==
'
BODY
'
var
bottomEdgeOffset
=
pos
.
top
+
viewportPadding
-
viewportDimensions
.
scroll
+
actualHeight
return
$
.
extend
({},
(
typeof
el
.
getBoundingClientRect
==
'
function
'
)
?
el
.
getBoundingClientRect
()
:
null
,
{
if
(
topEdgeOffset
<
viewportDimensions
.
top
)
{
// top overflow
scroll
:
isBody
?
document
.
documentElement
.
scrollTop
||
document
.
body
.
scrollTop
:
$element
.
scrollTop
(),
delta
.
top
=
viewportDimensions
.
top
-
topEdgeOffset
width
:
isBody
?
$
(
window
).
width
()
:
$element
.
outerWidth
(),
}
else
if
(
bottomEdgeOffset
>
viewportDimensions
.
top
+
viewportDimensions
.
height
)
{
// bottom overflow
height
:
isBody
?
$
(
window
).
height
()
:
$element
.
outerHeight
()
delta
.
top
=
viewportDimensions
.
top
+
viewportDimensions
.
height
-
bottomEdgeOffset
},
isBody
?
{
top
:
0
,
left
:
0
}
:
$element
.
offset
())
}
}
}
else
{
var
leftEdgeOffset
=
pos
.
left
-
viewportPadding
Tooltip
.
prototype
.
getCalculatedOffset
=
function
(
placement
,
pos
,
actualWidth
,
actualHeight
)
{
var
rightEdgeOffset
=
pos
.
left
+
viewportPadding
+
actualWidth
return
placement
==
'
bottom
'
?
{
top
:
pos
.
top
+
pos
.
height
,
left
:
pos
.
left
+
pos
.
width
/
2
-
actualWidth
/
2
}
:
if
(
leftEdgeOffset
<
viewportDimensions
.
left
)
{
// left overflow
placement
==
'
top
'
?
{
top
:
pos
.
top
-
actualHeight
,
left
:
pos
.
left
+
pos
.
width
/
2
-
actualWidth
/
2
}
:
delta
.
left
=
viewportDimensions
.
left
-
leftEdgeOffset
placement
==
'
left
'
?
{
top
:
pos
.
top
+
pos
.
height
/
2
-
actualHeight
/
2
,
left
:
pos
.
left
-
actualWidth
}
:
}
else
if
(
rightEdgeOffset
>
viewportDimensions
.
width
)
{
// right overflow
/* placement == 'right' */
{
top
:
pos
.
top
+
pos
.
height
/
2
-
actualHeight
/
2
,
left
:
pos
.
left
+
pos
.
width
}
delta
.
left
=
viewportDimensions
.
left
+
viewportDimensions
.
width
-
rightEdgeOffset
}
}
Tooltip
.
prototype
.
getViewportAdjustedDelta
=
function
(
placement
,
pos
,
actualWidth
,
actualHeight
)
{
var
delta
=
{
top
:
0
,
left
:
0
}
if
(
!
this
.
$viewport
)
return
delta
var
viewportPadding
=
this
.
options
.
viewport
&&
this
.
options
.
viewport
.
padding
||
0
var
viewportDimensions
=
this
.
getPosition
(
this
.
$viewport
)
if
(
/right|left/
.
test
(
placement
))
{
var
topEdgeOffset
=
pos
.
top
-
viewportPadding
-
viewportDimensions
.
scroll
var
bottomEdgeOffset
=
pos
.
top
+
viewportPadding
-
viewportDimensions
.
scroll
+
actualHeight
if
(
topEdgeOffset
<
viewportDimensions
.
top
)
{
// top overflow
delta
.
top
=
viewportDimensions
.
top
-
topEdgeOffset
}
else
if
(
bottomEdgeOffset
>
viewportDimensions
.
top
+
viewportDimensions
.
height
)
{
// bottom overflow
delta
.
top
=
viewportDimensions
.
top
+
viewportDimensions
.
height
-
bottomEdgeOffset
}
}
else
{
var
leftEdgeOffset
=
pos
.
left
-
viewportPadding
var
rightEdgeOffset
=
pos
.
left
+
viewportPadding
+
actualWidth
if
(
leftEdgeOffset
<
viewportDimensions
.
left
)
{
// left overflow
delta
.
left
=
viewportDimensions
.
left
-
leftEdgeOffset
}
else
if
(
rightEdgeOffset
>
viewportDimensions
.
width
)
{
// right overflow
delta
.
left
=
viewportDimensions
.
left
+
viewportDimensions
.
width
-
rightEdgeOffset
}
}
return
delta
}
}
Tooltip
.
prototype
.
getTitle
=
function
()
{
return
delta
var
title
}
var
$e
=
this
.
$element
var
o
=
this
.
options
title
=
$e
.
attr
(
'
data-original-title
'
)
Tooltip
.
prototype
.
getTitle
=
function
()
{
||
(
typeof
o
.
title
==
'
function
'
?
o
.
title
.
call
(
$e
[
0
])
:
o
.
title
)
var
title
var
$e
=
this
.
$element
var
o
=
this
.
options
return
title
title
=
$e
.
attr
(
'
data-original-title
'
)
}
||
(
typeof
o
.
title
==
'
function
'
?
o
.
title
.
call
(
$e
[
0
])
:
o
.
title
)
Tooltip
.
prototype
.
getUID
=
function
(
prefix
)
{
return
title
do
prefix
+=
~~
(
Math
.
random
()
*
1000000
)
}
while
(
document
.
getElementById
(
prefix
))
return
prefix
}
Tooltip
.
prototype
.
tip
=
function
()
{
Tooltip
.
prototype
.
getUID
=
function
(
prefix
)
{
return
(
this
.
$tip
=
this
.
$tip
||
$
(
this
.
options
.
template
))
do
prefix
+=
~~
(
Math
.
random
()
*
1000000
)
}
while
(
document
.
getElementById
(
prefix
))
return
prefix
}
Tooltip
.
prototype
.
arrow
=
function
()
{
Tooltip
.
prototype
.
tip
=
function
()
{
return
(
this
.
$arrow
=
this
.
$arrow
||
this
.
tip
().
find
(
'
.tooltip-arrow
'
))
return
(
this
.
$tip
=
this
.
$tip
||
$
(
this
.
options
.
template
))
}
}
Tooltip
.
prototype
.
validate
=
function
()
{
Tooltip
.
prototype
.
arrow
=
function
()
{
if
(
!
this
.
$element
[
0
].
parentNode
)
{
return
(
this
.
$arrow
=
this
.
$arrow
||
this
.
tip
().
find
(
'
.tooltip-arrow
'
))
this
.
hide
()
}
this
.
$element
=
null
this
.
options
=
null
}
}
Tooltip
.
prototype
.
enable
=
function
()
{
Tooltip
.
prototype
.
validate
=
function
()
{
this
.
enabled
=
true
if
(
!
this
.
$element
[
0
].
parentNode
)
{
this
.
hide
()
this
.
$element
=
null
this
.
options
=
null
}
}
}
Tooltip
.
prototype
.
dis
able
=
function
()
{
Tooltip
.
prototype
.
en
able
=
function
()
{
this
.
enabled
=
fals
e
this
.
enabled
=
tru
e
}
}
Tooltip
.
prototype
.
toggleEnabled
=
function
()
{
Tooltip
.
prototype
.
disable
=
function
()
{
this
.
enabled
=
!
this
.
enabled
this
.
enabled
=
false
}
}
Tooltip
.
prototype
.
toggle
=
function
(
e
)
{
Tooltip
.
prototype
.
toggleEnabled
=
function
()
{
var
self
=
this
this
.
enabled
=
!
this
.
enabled
if
(
e
)
{
}
self
=
$
(
e
.
currentTarget
).
data
(
'
bs.
'
+
this
.
type
)
if
(
!
self
)
{
self
=
new
this
.
constructor
(
e
.
currentTarget
,
this
.
getDelegateOptions
())
$
(
e
.
currentTarget
).
data
(
'
bs.
'
+
this
.
type
,
self
)
}
}
self
.
tip
().
hasClass
(
'
in
'
)
?
self
.
leave
(
self
)
:
self
.
enter
(
self
)
Tooltip
.
prototype
.
toggle
=
function
(
e
)
{
var
self
=
this
if
(
e
)
{
self
=
$
(
e
.
currentTarget
).
data
(
'
bs.
'
+
this
.
type
)
if
(
!
self
)
{
self
=
new
this
.
constructor
(
e
.
currentTarget
,
this
.
getDelegateOptions
())
$
(
e
.
currentTarget
).
data
(
'
bs.
'
+
this
.
type
,
self
)
}
}
}
Tooltip
.
prototype
.
destroy
=
function
()
{
self
.
tip
().
hasClass
(
'
in
'
)
?
self
.
leave
(
self
)
:
self
.
enter
(
self
)
clearTimeout
(
this
.
timeout
)
}
this
.
hide
().
$element
.
off
(
'
.
'
+
this
.
type
).
removeData
(
'
bs.
'
+
this
.
type
)
}
Tooltip
.
prototype
.
destroy
=
function
()
{
clearTimeout
(
this
.
timeout
)
this
.
hide
().
$element
.
off
(
'
.
'
+
this
.
type
).
removeData
(
'
bs.
'
+
this
.
type
)
}
// TOOLTIP PLUGIN DEFINITION
// =========================
function
Plugin
(
option
)
{
// TOOLTIP PLUGIN DEFINITION
return
this
.
each
(
function
()
{
// =========================
var
$this
=
$
(
this
)
var
data
=
$this
.
data
(
'
bs.tooltip
'
)
var
options
=
typeof
option
==
'
object
'
&&
option
if
(
!
data
&&
option
==
'
destroy
'
)
return
function
Plugin
(
option
)
{
if
(
!
data
)
$this
.
data
(
'
bs.tooltip
'
,
(
data
=
new
Tooltip
(
this
,
options
)))
return
this
.
each
(
function
()
{
if
(
typeof
option
==
'
string
'
)
data
[
option
](
)
var
$this
=
$
(
this
)
}
)
var
data
=
$this
.
data
(
'
bs.tooltip
'
)
}
var
options
=
typeof
option
==
'
object
'
&&
option
var
old
=
$
.
fn
.
tooltip
if
(
!
data
&&
option
==
'
destroy
'
)
return
if
(
!
data
)
$this
.
data
(
'
bs.tooltip
'
,
(
data
=
new
Tooltip
(
this
,
options
)))
if
(
typeof
option
==
'
string
'
)
data
[
option
]()
})
}
$
.
fn
.
tooltip
=
Plugin
var
old
=
$
.
fn
.
tooltip
$
.
fn
.
tooltip
.
Constructor
=
Tooltip
$
.
fn
.
tooltip
=
Plugin
$
.
fn
.
tooltip
.
Constructor
=
Tooltip
// TOOLTIP NO CONFLICT
// ===================
$
.
fn
.
tooltip
.
noConflict
=
function
()
{
// TOOLTIP NO CONFLICT
$
.
fn
.
tooltip
=
old
// ===================
return
this
}
})
$
.
fn
.
tooltip
.
noConflict
=
function
()
{
$
.
fn
.
tooltip
=
old
return
this
}
}();
}(
jQuery
);
js/transition.js
View file @
b31c35b6
...
@@ -7,59 +7,53 @@
...
@@ -7,59 +7,53 @@
* ======================================================================== */
* ======================================================================== */
+
function
()
{
'
use strict
'
;
+
function
(
$
)
{
'
use strict
'
;
(
function
(
o_o
)
{
// CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)
typeof
define
==
'
function
'
&&
define
.
amd
?
define
([
'
jquery
'
],
o_o
)
:
// ============================================================
typeof
exports
==
'
object
'
?
o_o
(
require
(
'
jquery
'
))
:
o_o
(
jQuery
)
})(
function
(
$
)
{
// CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)
function
transitionEnd
()
{
// ============================================================
var
el
=
document
.
createElement
(
'
bootstrap
'
)
function
transitionEnd
()
{
var
transEndEventNames
=
{
var
el
=
document
.
createElement
(
'
bootstrap
'
)
WebkitTransition
:
'
webkitTransitionEnd
'
,
MozTransition
:
'
transitionend
'
,
var
transEndEventNames
=
{
OTransition
:
'
oTransitionEnd otransitionend
'
,
WebkitTransition
:
'
webkitTransitionEnd
'
,
transition
:
'
transitionend
'
MozTransition
:
'
transitionend
'
,
OTransition
:
'
oTransitionEnd otransitionend
'
,
transition
:
'
transitionend
'
}
for
(
var
name
in
transEndEventNames
)
{
if
(
el
.
style
[
name
]
!==
undefined
)
{
return
{
end
:
transEndEventNames
[
name
]
}
}
}
return
false
// explicit for ie8 ( ._.)
}
}
// http://blog.alexmaccaw.com/css-transitions
for
(
var
name
in
transEndEventNames
)
{
$
.
fn
.
emulateTransitionEnd
=
function
(
duration
)
{
if
(
el
.
style
[
name
]
!==
undefined
)
{
var
called
=
false
return
{
end
:
transEndEventNames
[
name
]
}
var
$el
=
this
}
$
(
this
).
one
(
'
bsTransitionEnd
'
,
function
()
{
called
=
true
})
var
callback
=
function
()
{
if
(
!
called
)
$
(
$el
).
trigger
(
$
.
support
.
transition
.
end
)
}
setTimeout
(
callback
,
duration
)
return
this
}
}
$
(
function
()
{
return
false
// explicit for ie8 ( ._.)
$
.
support
.
transition
=
transitionEnd
()
}
if
(
!
$
.
support
.
transition
)
return
// http://blog.alexmaccaw.com/css-transitions
$
.
fn
.
emulateTransitionEnd
=
function
(
duration
)
{
$
.
event
.
special
.
bsTransitionEnd
=
{
var
called
=
false
bindType
:
$
.
support
.
transition
.
end
,
var
$el
=
this
delegateType
:
$
.
support
.
transition
.
end
,
$
(
this
).
one
(
'
bsTransitionEnd
'
,
function
()
{
called
=
true
})
handle
:
function
(
e
)
{
var
callback
=
function
()
{
if
(
!
called
)
$
(
$el
).
trigger
(
$
.
support
.
transition
.
end
)
}
if
(
$
(
e
.
target
).
is
(
this
))
return
e
.
handleObj
.
handler
.
apply
(
this
,
arguments
)
setTimeout
(
callback
,
duration
)
}
return
this
}
$
(
function
()
{
$
.
support
.
transition
=
transitionEnd
()
if
(
!
$
.
support
.
transition
)
return
$
.
event
.
special
.
bsTransitionEnd
=
{
bindType
:
$
.
support
.
transition
.
end
,
delegateType
:
$
.
support
.
transition
.
end
,
handle
:
function
(
e
)
{
if
(
$
(
e
.
target
).
is
(
this
))
return
e
.
handleObj
.
handler
.
apply
(
this
,
arguments
)
}
}
})
}
})
})
}();
}(
jQuery
);
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment