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
2b302f69
Commit
2b302f69
authored
Jun 12, 2014
by
fat
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
some changes from #13801 - add strict mode back and ==
parent
696632d7
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
1551 additions
and
1526 deletions
+1551
-1526
js/.jshintrc
js/.jshintrc
+1
-0
js/affix.js
js/affix.js
+98
-96
js/alert.js
js/alert.js
+61
-59
js/button.js
js/button.js
+79
-77
js/carousel.js
js/carousel.js
+175
-173
js/collapse.js
js/collapse.js
+123
-121
js/dropdown.js
js/dropdown.js
+104
-102
js/modal.js
js/modal.js
+208
-206
js/popover.js
js/popover.js
+80
-78
js/scrollspy.js
js/scrollspy.js
+133
-131
js/tab.js
js/tab.js
+93
-91
js/tooltip.js
js/tooltip.js
+351
-349
js/transition.js
js/transition.js
+45
-43
No files found.
js/.jshintrc
View file @
2b302f69
...
@@ -9,6 +9,7 @@
...
@@ -9,6 +9,7 @@
"latedef" : true,
"latedef" : true,
"laxbreak" : true,
"laxbreak" : true,
"nonbsp" : true,
"nonbsp" : true,
"strict" : true,
"undef" : true,
"undef" : true,
"unused" : true,
"unused" : true,
"predef" : [ "define", "require" ]
"predef" : [ "define", "require" ]
...
...
js/affix.js
View file @
2b302f69
...
@@ -7,140 +7,142 @@
...
@@ -7,140 +7,142 @@
* ======================================================================== */
* ======================================================================== */
(
function
(
o_o
)
{
+
function
()
{
'
use strict
'
;
typeof
define
===
'
function
'
&&
define
.
amd
?
define
([
'
jquery
'
],
o_o
)
:
typeof
exports
===
'
object
'
?
o_o
(
require
(
'
jquery
'
))
:
o_o
(
jQuery
)
})(
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
(
$
)
{
// AFFIX CLASS DEFINITION
// AFFIX CLASS DEFINITION
// ======================
// ======================
var
Affix
=
function
(
element
,
options
)
{
var
Affix
=
function
(
element
,
options
)
{
this
.
options
=
$
.
extend
({},
Affix
.
DEFAULTS
,
options
)
this
.
options
=
$
.
extend
({},
Affix
.
DEFAULTS
,
options
)
this
.
$target
=
$
(
this
.
options
.
target
)
this
.
$target
=
$
(
this
.
options
.
target
)
.
on
(
'
scroll.bs.affix.data-api
'
,
$
.
proxy
(
this
.
checkPosition
,
this
))
.
on
(
'
scroll.bs.affix.data-api
'
,
$
.
proxy
(
this
.
checkPosition
,
this
))
.
on
(
'
click.bs.affix.data-api
'
,
$
.
proxy
(
this
.
checkPositionWithEventLoop
,
this
))
.
on
(
'
click.bs.affix.data-api
'
,
$
.
proxy
(
this
.
checkPositionWithEventLoop
,
this
))
this
.
$element
=
$
(
element
)
this
.
$element
=
$
(
element
)
this
.
affixed
=
this
.
affixed
=
this
.
unpin
=
this
.
unpin
=
this
.
pinnedOffset
=
null
this
.
pinnedOffset
=
null
this
.
checkPosition
()
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
)
})
})
})
})
})
});
}
(
);
js/alert.js
View file @
2b302f69
...
@@ -7,90 +7,92 @@
...
@@ -7,90 +7,92 @@
* ======================================================================== */
* ======================================================================== */
(
function
(
o_o
)
{
+
function
()
{
'
use strict
'
;
typeof
define
===
'
function
'
&&
define
.
amd
?
define
([
'
jquery
'
],
o_o
)
:
typeof
exports
===
'
object
'
?
o_o
(
require
(
'
jquery
'
))
:
o_o
(
jQuery
)
})(
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
(
$
)
{
// ALERT CLASS DEFINITION
// ALERT CLASS DEFINITION
// ======================
// ======================
var
dismiss
=
'
[data-dismiss="alert"]
'
var
dismiss
=
'
[data-dismiss="alert"]
'
var
Alert
=
function
(
el
)
{
var
Alert
=
function
(
el
)
{
$
(
el
).
on
(
'
click
'
,
dismiss
,
this
.
close
)
$
(
el
).
on
(
'
click
'
,
dismiss
,
this
.
close
)
}
}
Alert
.
VERSION
=
'
3.1.1
'
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
)
var
$parent
=
$
(
selector
)
if
(
e
)
e
.
preventDefault
()
if
(
e
)
e
.
preventDefault
()
if
(
!
$parent
.
length
)
{
if
(
!
$parent
.
length
)
{
$parent
=
$this
.
hasClass
(
'
alert
'
)
?
$this
:
$this
.
parent
()
$parent
=
$this
.
hasClass
(
'
alert
'
)
?
$this
:
$this
.
parent
()
}
}
$parent
.
trigger
(
e
=
$
.
Event
(
'
close.bs.alert
'
))
$parent
.
trigger
(
e
=
$
.
Event
(
'
close.bs.alert
'
))
if
(
e
.
isDefaultPrevented
())
return
if
(
e
.
isDefaultPrevented
())
return
$parent
.
removeClass
(
'
in
'
)
$parent
.
removeClass
(
'
in
'
)
function
removeElement
()
{
function
removeElement
()
{
// detach from parent, fire event then clean up data
// detach from parent, fire event then clean up data
$parent
.
detach
().
trigger
(
'
closed.bs.alert
'
).
remove
()
$parent
.
detach
().
trigger
(
'
closed.bs.alert
'
).
remove
()
}
$
.
support
.
transition
&&
$parent
.
hasClass
(
'
fade
'
)
?
$parent
.
one
(
'
bsTransitionEnd
'
,
removeElement
)
.
emulateTransitionEnd
(
150
)
:
removeElement
()
}
}
$
.
support
.
transition
&&
$parent
.
hasClass
(
'
fade
'
)
?
$parent
.
one
(
'
bsTransitionEnd
'
,
removeElement
)
.
emulateTransitionEnd
(
150
)
:
removeElement
()
}
// ALERT PLUGIN DEFINITION
// =======================
// ALERT PLUGIN DEFINITION
function
Plugin
(
option
)
{
// =======================
return
this
.
each
(
function
()
{
var
$this
=
$
(
this
)
var
data
=
$this
.
data
(
'
bs.alert
'
)
function
Plugin
(
option
)
{
if
(
!
data
)
$this
.
data
(
'
bs.alert
'
,
(
data
=
new
Alert
(
this
)))
return
this
.
each
(
function
()
{
if
(
typeof
option
==
'
string
'
)
data
[
option
].
call
(
$this
)
var
$this
=
$
(
this
)
}
)
var
data
=
$this
.
data
(
'
bs.alert
'
)
}
if
(
!
data
)
$this
.
data
(
'
bs.alert
'
,
(
data
=
new
Alert
(
this
)))
var
old
=
$
.
fn
.
alert
if
(
typeof
option
==
'
string
'
)
data
[
option
].
call
(
$this
)
})
}
var
old
=
$
.
fn
.
alert
$
.
fn
.
alert
=
Plugin
$
.
fn
.
alert
.
Constructor
=
Alert
$
.
fn
.
alert
=
Plugin
$
.
fn
.
alert
.
Constructor
=
Alert
// ALERT NO CONFLICT
// =================
// ALERT NO CONFLICT
$
.
fn
.
alert
.
noConflict
=
function
()
{
// =================
$
.
fn
.
alert
=
old
return
this
}
$
.
fn
.
alert
.
noConflict
=
function
()
{
$
.
fn
.
alert
=
old
return
this
}
// ALERT DATA-API
// ==============
// ALERT DATA-API
$
(
document
).
on
(
'
click.bs.alert.data-api
'
,
dismiss
,
Alert
.
prototype
.
close
)
// ==============
$
(
document
).
on
(
'
click.bs.alert.data-api
'
,
dismiss
,
Alert
.
prototype
.
close
)
}
)
});
}
(
);
js/button.js
View file @
2b302f69
...
@@ -7,108 +7,110 @@
...
@@ -7,108 +7,110 @@
* ======================================================================== */
* ======================================================================== */
(
function
(
o_o
)
{
+
function
()
{
'
use strict
'
;
typeof
define
===
'
function
'
&&
define
.
amd
?
define
([
'
jquery
'
],
o_o
)
:
typeof
exports
===
'
object
'
?
o_o
(
require
(
'
jquery
'
))
:
o_o
(
jQuery
)
})(
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
(
$
)
{
// BUTTON PUBLIC CLASS DEFINITION
// BUTTON PUBLIC CLASS DEFINITION
// ==============================
// ==============================
var
Button
=
function
(
element
,
options
)
{
var
Button
=
function
(
element
,
options
)
{
this
.
$element
=
$
(
element
)
this
.
$element
=
$
(
element
)
this
.
options
=
$
.
extend
({},
Button
.
DEFAULTS
,
options
)
this
.
options
=
$
.
extend
({},
Button
.
DEFAULTS
,
options
)
this
.
isLoading
=
false
this
.
isLoading
=
false
}
}
Button
.
VERSION
=
'
3.1.1
'
Button
.
VERSION
=
'
3.1.1
'
Button
.
DEFAULTS
=
{
Button
.
DEFAULTS
=
{
loadingText
:
'
loading...
'
loadingText
:
'
loading...
'
}
}
Button
.
prototype
.
setState
=
function
(
state
)
{
Button
.
prototype
.
setState
=
function
(
state
)
{
var
d
=
'
disabled
'
var
d
=
'
disabled
'
var
$el
=
this
.
$element
var
$el
=
this
.
$element
var
val
=
$el
.
is
(
'
input
'
)
?
'
val
'
:
'
html
'
var
val
=
$el
.
is
(
'
input
'
)
?
'
val
'
:
'
html
'
var
data
=
$el
.
data
()
var
data
=
$el
.
data
()
state
=
state
+
'
Text
'
state
=
state
+
'
Text
'
if
(
data
.
resetText
==
null
)
$el
.
data
(
'
resetText
'
,
$el
[
val
]())
if
(
data
.
resetText
==
null
)
$el
.
data
(
'
resetText
'
,
$el
[
val
]())
$el
[
val
](
data
[
state
]
==
null
?
this
.
options
[
state
]
:
data
[
state
])
$el
[
val
](
data
[
state
]
==
null
?
this
.
options
[
state
]
:
data
[
state
])
// push to event loop to allow forms to submit
// push to event loop to allow forms to submit
setTimeout
(
$
.
proxy
(
function
()
{
setTimeout
(
$
.
proxy
(
function
()
{
if
(
state
==
'
loadingText
'
)
{
if
(
state
==
'
loadingText
'
)
{
this
.
isLoading
=
true
this
.
isLoading
=
true
$el
.
addClass
(
d
).
attr
(
d
,
d
)
$el
.
addClass
(
d
).
attr
(
d
,
d
)
}
else
if
(
this
.
isLoading
)
{
}
else
if
(
this
.
isLoading
)
{
this
.
isLoading
=
false
this
.
isLoading
=
false
$el
.
removeClass
(
d
).
removeAttr
(
d
)
$el
.
removeClass
(
d
).
removeAttr
(
d
)
}
}
},
this
),
0
)
},
this
),
0
)
}
}
Button
.
prototype
.
toggle
=
function
()
{
Button
.
prototype
.
toggle
=
function
()
{
var
changed
=
true
var
changed
=
true
var
$parent
=
this
.
$element
.
closest
(
'
[data-toggle="buttons"]
'
)
var
$parent
=
this
.
$element
.
closest
(
'
[data-toggle="buttons"]
'
)
if
(
$parent
.
length
)
{
if
(
$parent
.
length
)
{
var
$input
=
this
.
$element
.
find
(
'
input
'
)
var
$input
=
this
.
$element
.
find
(
'
input
'
)
if
(
$input
.
prop
(
'
type
'
)
==
'
radio
'
)
{
if
(
$input
.
prop
(
'
type
'
)
==
'
radio
'
)
{
if
(
$input
.
prop
(
'
checked
'
)
&&
this
.
$element
.
hasClass
(
'
active
'
))
changed
=
false
if
(
$input
.
prop
(
'
checked
'
)
&&
this
.
$element
.
hasClass
(
'
active
'
))
changed
=
false
else
$parent
.
find
(
'
.active
'
).
removeClass
(
'
active
'
)
else
$parent
.
find
(
'
.active
'
).
removeClass
(
'
active
'
)
}
if
(
changed
)
$input
.
prop
(
'
checked
'
,
!
this
.
$element
.
hasClass
(
'
active
'
)).
trigger
(
'
change
'
)
}
}
if
(
changed
)
$input
.
prop
(
'
checked
'
,
!
this
.
$element
.
hasClass
(
'
active
'
)).
trigger
(
'
change
'
)
if
(
changed
)
this
.
$element
.
toggleClass
(
'
active
'
)
}
}
if
(
changed
)
this
.
$element
.
toggleClass
(
'
active
'
)
}
// BUTTON PLUGIN DEFINITION
// ========================
// BUTTON PLUGIN DEFINITION
function
Plugin
(
option
)
{
// ========================
return
this
.
each
(
function
()
{
var
$this
=
$
(
this
)
var
data
=
$this
.
data
(
'
bs.button
'
)
var
options
=
typeof
option
==
'
object
'
&&
option
function
Plugin
(
option
)
{
if
(
!
data
)
$this
.
data
(
'
bs.button
'
,
(
data
=
new
Button
(
this
,
options
)))
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
)))
if
(
option
==
'
toggle
'
)
data
.
toggle
()
else
if
(
option
)
data
.
setState
(
option
)
})
}
if
(
option
==
'
toggle
'
)
data
.
toggle
()
var
old
=
$
.
fn
.
button
else
if
(
option
)
data
.
setState
(
option
)
})
}
var
old
=
$
.
fn
.
button
$
.
fn
.
button
=
Plugin
$
.
fn
.
button
.
Constructor
=
Button
$
.
fn
.
button
=
Plugin
$
.
fn
.
button
.
Constructor
=
Button
// BUTTON NO CONFLICT
// ==================
// BUTTON NO CONFLICT
$
.
fn
.
button
.
noConflict
=
function
()
{
// ==================
$
.
fn
.
button
=
old
return
this
}
$
.
fn
.
button
.
noConflict
=
function
()
{
$
.
fn
.
button
=
old
return
this
}
// BUTTON DATA-API
// ===============
// BUTTON DATA-API
$
(
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
()
})
$
(
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
()
})
})
});
}
(
);
js/carousel.js
View file @
2b302f69
...
@@ -7,220 +7,222 @@
...
@@ -7,220 +7,222 @@
* ======================================================================== */
* ======================================================================== */
(
function
(
o_o
)
{
+
function
()
{
'
use strict
'
;
typeof
define
===
'
function
'
&&
define
.
amd
?
define
([
'
jquery
'
],
o_o
)
:
typeof
exports
===
'
object
'
?
o_o
(
require
(
'
jquery
'
))
:
o_o
(
jQuery
)
(
function
(
o_o
)
{
})(
function
(
$
)
{
typeof
define
==
'
function
'
&&
define
.
amd
?
define
([
'
jquery
'
],
o_o
)
:
typeof
exports
==
'
object
'
?
o_o
(
require
(
'
jquery
'
))
:
o_o
(
jQuery
)
'
use strict
'
;
})(
function
(
$
)
{
// CAROUSEL CLASS DEFINITION
// CAROUSEL CLASS DEFINITION
// =========================
// =========================
var
Carousel
=
function
(
element
,
options
)
{
var
Carousel
=
function
(
element
,
options
)
{
this
.
$element
=
$
(
element
).
on
(
'
keydown.bs.carousel
'
,
$
.
proxy
(
this
.
keydown
,
this
))
this
.
$element
=
$
(
element
).
on
(
'
keydown.bs.carousel
'
,
$
.
proxy
(
this
.
keydown
,
this
))
this
.
$indicators
=
this
.
$element
.
find
(
'
.carousel-indicators
'
)
this
.
$indicators
=
this
.
$element
.
find
(
'
.carousel-indicators
'
)
this
.
options
=
options
this
.
options
=
options
this
.
paused
=
this
.
paused
=
this
.
sliding
=
this
.
sliding
=
this
.
interval
=
this
.
interval
=
this
.
$active
=
this
.
$active
=
this
.
$items
=
null
this
.
$items
=
null
this
.
options
.
pause
==
'
hover
'
&&
this
.
$element
this
.
options
.
pause
==
'
hover
'
&&
this
.
$element
.
on
(
'
mouseenter.bs.carousel
'
,
$
.
proxy
(
this
.
pause
,
this
))
.
on
(
'
mouseenter.bs.carousel
'
,
$
.
proxy
(
this
.
pause
,
this
))
.
on
(
'
mouseleave.bs.carousel
'
,
$
.
proxy
(
this
.
cycle
,
this
))
.
on
(
'
mouseleave.bs.carousel
'
,
$
.
proxy
(
this
.
cycle
,
this
))
}
Carousel
.
VERSION
=
'
3.1.1
'
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
}
}
e
.
preventDefault
()
Carousel
.
VERSION
=
'
3.1.1
'
}
Carousel
.
prototype
.
cycle
=
function
(
e
)
{
Carousel
.
DEFAULTS
=
{
e
||
(
this
.
paused
=
false
)
interval
:
5000
,
pause
:
'
hover
'
,
this
.
interval
&&
clearInterval
(
this
.
interval
)
wrap
:
true
}
this
.
options
.
interval
&&
!
this
.
paused
&&
(
this
.
interval
=
setInterval
(
$
.
proxy
(
this
.
next
,
this
),
this
.
options
.
interval
))
return
this
}
Carousel
.
prototype
.
getItemIndex
=
function
(
item
)
{
this
.
$items
=
item
.
parent
().
children
(
'
.item
'
)
return
this
.
$items
.
index
(
item
||
this
.
$active
)
}
Carousel
.
prototype
.
to
=
function
(
pos
)
{
Carousel
.
prototype
.
keydown
=
function
(
e
)
{
var
that
=
this
switch
(
e
.
which
)
{
var
activeIndex
=
this
.
getItemIndex
(
this
.
$active
=
this
.
$element
.
find
(
'
.item.active
'
))
case
37
:
this
.
prev
();
break
case
39
:
this
.
next
();
break
default
:
return
}
if
(
pos
>
(
this
.
$items
.
length
-
1
)
||
pos
<
0
)
return
e
.
preventDefault
()
}
if
(
this
.
sliding
)
return
this
.
$element
.
one
(
'
slid.bs.carousel
'
,
function
()
{
that
.
to
(
pos
)
})
// yes, "slid"
Carousel
.
prototype
.
cycle
=
function
(
e
)
{
if
(
activeIndex
==
pos
)
return
this
.
pause
().
cycle
(
)
e
||
(
this
.
paused
=
false
)
return
this
.
slide
(
pos
>
activeIndex
?
'
next
'
:
'
prev
'
,
$
(
this
.
$items
[
pos
]))
this
.
interval
&&
clearInterval
(
this
.
interval
)
}
Carousel
.
prototype
.
pause
=
function
(
e
)
{
this
.
options
.
interval
e
||
(
this
.
paused
=
true
)
&&
!
this
.
paused
&&
(
this
.
interval
=
setInterval
(
$
.
proxy
(
this
.
next
,
this
),
this
.
options
.
interval
))
if
(
this
.
$element
.
find
(
'
.next, .prev
'
).
length
&&
$
.
support
.
transition
)
{
return
this
this
.
$element
.
trigger
(
$
.
support
.
transition
.
end
)
this
.
cycle
(
true
)
}
}
this
.
interval
=
clearInterval
(
this
.
interval
)
Carousel
.
prototype
.
getItemIndex
=
function
(
item
)
{
this
.
$items
=
item
.
parent
().
children
(
'
.item
'
)
return
this
return
this
.
$items
.
index
(
item
||
this
.
$active
)
}
}
Carousel
.
prototype
.
next
=
function
()
{
Carousel
.
prototype
.
to
=
function
(
pos
)
{
if
(
this
.
sliding
)
return
var
that
=
this
return
this
.
slide
(
'
next
'
)
var
activeIndex
=
this
.
getItemIndex
(
this
.
$active
=
this
.
$element
.
find
(
'
.item.active
'
))
}
Carousel
.
prototype
.
prev
=
function
()
{
if
(
pos
>
(
this
.
$items
.
length
-
1
)
||
pos
<
0
)
return
if
(
this
.
sliding
)
return
return
this
.
slide
(
'
prev
'
)
}
Carousel
.
prototype
.
slide
=
function
(
type
,
next
)
{
if
(
this
.
sliding
)
return
this
.
$element
.
one
(
'
slid.bs.carousel
'
,
function
()
{
that
.
to
(
pos
)
})
// yes, "slid"
var
$active
=
this
.
$element
.
find
(
'
.item.active
'
)
if
(
activeIndex
==
pos
)
return
this
.
pause
().
cycle
()
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
)
{
return
this
.
slide
(
pos
>
activeIndex
?
'
next
'
:
'
prev
'
,
$
(
this
.
$items
[
pos
]))
if
(
!
this
.
options
.
wrap
)
return
$next
=
this
.
$element
.
find
(
'
.item
'
)[
fallback
]()
}
}
if
(
$next
.
hasClass
(
'
active
'
))
return
(
this
.
sliding
=
false
)
Carousel
.
prototype
.
pause
=
function
(
e
)
{
e
||
(
this
.
paused
=
true
)
var
relatedTarget
=
$next
[
0
]
if
(
this
.
$element
.
find
(
'
.next, .prev
'
).
length
&&
$
.
support
.
transition
)
{
var
slideEvent
=
$
.
Event
(
'
slide.bs.carousel
'
,
{
this
.
$element
.
trigger
(
$
.
support
.
transition
.
end
)
relatedTarget
:
relatedTarget
,
this
.
cycle
(
true
)
direction
:
direction
}
})
this
.
$element
.
trigger
(
slideEvent
)
if
(
slideEvent
.
isDefaultPrevented
())
return
this
.
sliding
=
true
this
.
interval
=
clearInterval
(
this
.
interval
)
isCycling
&&
this
.
pause
()
return
this
}
if
(
this
.
$indicators
.
length
)
{
Carousel
.
prototype
.
next
=
function
()
{
this
.
$indicators
.
find
(
'
.active
'
).
removeClass
(
'
active
'
)
if
(
this
.
sliding
)
return
var
$nextIndicator
=
$
(
this
.
$indicators
.
children
()[
this
.
getItemIndex
(
$next
)])
return
this
.
slide
(
'
next
'
)
$nextIndicator
&&
$nextIndicator
.
addClass
(
'
active
'
)
}
}
var
slidEvent
=
$
.
Event
(
'
slid.bs.carousel
'
,
{
relatedTarget
:
relatedTarget
,
direction
:
direction
})
// yes, "slid"
Carousel
.
prototype
.
prev
=
function
()
{
if
(
$
.
support
.
transition
&&
this
.
$element
.
hasClass
(
'
slide
'
))
{
if
(
this
.
sliding
)
return
$next
.
addClass
(
type
)
return
this
.
slide
(
'
prev
'
)
$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
()
Carousel
.
prototype
.
slide
=
function
(
type
,
next
)
{
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
// ==========================
// CAROUSEL PLUGIN DEFINITION
function
Plugin
(
option
)
{
// ==========================
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
function
Plugin
(
option
)
{
if
(
!
data
)
$this
.
data
(
'
bs.carousel
'
,
(
data
=
new
Carousel
(
this
,
options
)))
return
this
.
each
(
function
()
{
if
(
typeof
option
==
'
number
'
)
data
.
to
(
option
)
var
$this
=
$
(
this
)
else
if
(
action
)
data
[
action
]()
var
data
=
$this
.
data
(
'
bs.carousel
'
)
else
if
(
options
.
interval
)
data
.
pause
().
cycle
()
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
())
})
})
})
})
})
});
}
(
);
js/collapse.js
View file @
2b302f69
...
@@ -7,168 +7,170 @@
...
@@ -7,168 +7,170 @@
* ======================================================================== */
* ======================================================================== */
(
function
(
o_o
)
{
+
function
()
{
'
use strict
'
;
typeof
define
===
'
function
'
&&
define
.
amd
?
define
([
'
jquery
'
],
o_o
)
:
typeof
exports
===
'
object
'
?
o_o
(
require
(
'
jquery
'
))
:
o_o
(
jQuery
)
})(
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
(
$
)
{
// COLLAPSE PUBLIC CLASS DEFINITION
// COLLAPSE PUBLIC CLASS DEFINITION
// ================================
// ================================
var
Collapse
=
function
(
element
,
options
)
{
var
Collapse
=
function
(
element
,
options
)
{
this
.
$element
=
$
(
element
)
this
.
$element
=
$
(
element
)
this
.
options
=
$
.
extend
({},
Collapse
.
DEFAULTS
,
options
)
this
.
options
=
$
.
extend
({},
Collapse
.
DEFAULTS
,
options
)
this
.
transitioning
=
null
this
.
transitioning
=
null
if
(
this
.
options
.
parent
)
this
.
$parent
=
$
(
this
.
options
.
parent
)
if
(
this
.
options
.
parent
)
this
.
$parent
=
$
(
this
.
options
.
parent
)
if
(
this
.
options
.
toggle
)
this
.
toggle
()
if
(
this
.
options
.
toggle
)
this
.
toggle
()
}
}
Collapse
.
VERSION
=
'
3.1.1
'
Collapse
.
DEFAULTS
=
{
toggle
:
true
}
Collapse
.
prototype
.
dimension
=
function
()
{
Collapse
.
VERSION
=
'
3.1.1
'
var
hasWidth
=
this
.
$element
.
hasClass
(
'
width
'
)
return
hasWidth
?
'
width
'
:
'
height
'
}
Collapse
.
prototype
.
show
=
function
()
{
Collapse
.
DEFAULTS
=
{
if
(
this
.
transitioning
||
this
.
$element
.
hasClass
(
'
in
'
))
return
toggle
:
true
}
var
startEvent
=
$
.
Event
(
'
show.bs.collapse
'
)
Collapse
.
prototype
.
dimension
=
function
()
{
this
.
$element
.
trigger
(
startEvent
)
var
hasWidth
=
this
.
$element
.
hasClass
(
'
width
'
)
if
(
startEvent
.
isDefaultPrevented
())
return
return
hasWidth
?
'
width
'
:
'
height
'
}
var
actives
=
this
.
$parent
&&
this
.
$parent
.
find
(
'
> .panel > .in
'
)
Collapse
.
prototype
.
show
=
function
()
{
if
(
this
.
transitioning
||
this
.
$element
.
hasClass
(
'
in
'
))
return
if
(
actives
&&
actives
.
length
)
{
var
startEvent
=
$
.
Event
(
'
show.bs.collapse
'
)
var
hasData
=
actives
.
data
(
'
bs.collapse
'
)
this
.
$element
.
trigger
(
startEvent
)
if
(
hasData
&&
hasData
.
transitioning
)
return
if
(
startEvent
.
isDefaultPrevented
())
return
Plugin
.
call
(
actives
,
'
hide
'
)
hasData
||
actives
.
data
(
'
bs.collapse
'
,
null
)
}
var
dimension
=
this
.
dimension
(
)
var
actives
=
this
.
$parent
&&
this
.
$parent
.
find
(
'
> .panel > .in
'
)
this
.
$element
if
(
actives
&&
actives
.
length
)
{
.
removeClass
(
'
collapse
'
)
var
hasData
=
actives
.
data
(
'
bs.collapse
'
)
.
addClass
(
'
collapsing
'
)[
dimension
](
0
)
if
(
hasData
&&
hasData
.
transitioning
)
return
Plugin
.
call
(
actives
,
'
hide
'
)
hasData
||
actives
.
data
(
'
bs.collapse
'
,
null
)
}
this
.
transitioning
=
1
var
dimension
=
this
.
dimension
()
var
complete
=
function
()
{
this
.
$element
this
.
$element
.
removeClass
(
'
collapsing
'
)
.
removeClass
(
'
collapse
'
)
.
addClass
(
'
collapse in
'
)[
dimension
](
''
)
.
addClass
(
'
collapsing
'
)[
dimension
](
0
)
this
.
transitioning
=
0
this
.
$element
.
trigger
(
'
shown.bs.collapse
'
)
}
if
(
!
$
.
support
.
transition
)
return
complete
.
call
(
this
)
this
.
transitioning
=
1
var
scrollSize
=
$
.
camelCase
([
'
scroll
'
,
dimension
].
join
(
'
-
'
))
var
complete
=
function
()
{
this
.
$element
.
removeClass
(
'
collapsing
'
)
.
addClass
(
'
collapse in
'
)[
dimension
](
''
)
this
.
transitioning
=
0
this
.
$element
.
trigger
(
'
shown.bs.collapse
'
)
}
this
.
$element
if
(
!
$
.
support
.
transition
)
return
complete
.
call
(
this
)
.
one
(
'
bsTransitionEnd
'
,
$
.
proxy
(
complete
,
this
))
.
emulateTransitionEnd
(
350
)[
dimension
](
this
.
$element
[
0
][
scrollSize
])
}
Collapse
.
prototype
.
hide
=
function
()
{
var
scrollSize
=
$
.
camelCase
([
'
scroll
'
,
dimension
].
join
(
'
-
'
))
if
(
this
.
transitioning
||
!
this
.
$element
.
hasClass
(
'
in
'
))
return
var
startEvent
=
$
.
Event
(
'
hide.bs.collapse
'
)
this
.
$element
this
.
$element
.
trigger
(
startEvent
)
.
one
(
'
bsTransitionEnd
'
,
$
.
proxy
(
complete
,
this
))
if
(
startEvent
.
isDefaultPrevented
())
return
.
emulateTransitionEnd
(
350
)[
dimension
](
this
.
$element
[
0
][
scrollSize
])
}
var
dimension
=
this
.
dimension
()
Collapse
.
prototype
.
hide
=
function
()
{
if
(
this
.
transitioning
||
!
this
.
$element
.
hasClass
(
'
in
'
))
return
this
.
$element
[
dimension
](
this
.
$element
[
dimension
]())[
0
].
offsetHeight
var
startEvent
=
$
.
Event
(
'
hide.bs.collapse
'
)
this
.
$element
.
trigger
(
startEvent
)
if
(
startEvent
.
isDefaultPrevented
())
return
this
.
$element
var
dimension
=
this
.
dimension
()
.
addClass
(
'
collapsing
'
)
.
removeClass
(
'
collapse
'
)
.
removeClass
(
'
in
'
)
this
.
transitioning
=
1
this
.
$element
[
dimension
](
this
.
$element
[
dimension
]())[
0
].
offsetHeight
var
complete
=
function
()
{
this
.
transitioning
=
0
this
.
$element
this
.
$element
.
trigger
(
'
hidden.bs.collapse
'
)
.
addClass
(
'
collapsing
'
)
.
removeClass
(
'
collapsing
'
)
.
removeClass
(
'
collapse
'
)
.
addClass
(
'
collapse
'
)
.
removeClass
(
'
in
'
)
}
if
(
!
$
.
support
.
transition
)
return
complete
.
call
(
this
)
this
.
transitioning
=
1
this
.
$element
var
complete
=
function
()
{
[
dimension
](
0
)
this
.
transitioning
=
0
.
one
(
'
bsTransitionEnd
'
,
$
.
proxy
(
complete
,
this
))
this
.
$element
.
emulateTransitionEnd
(
350
)
.
trigger
(
'
hidden.bs.collapse
'
)
}
.
removeClass
(
'
collapsing
'
)
.
addClass
(
'
collapse
'
)
}
Collapse
.
prototype
.
toggle
=
function
()
{
if
(
!
$
.
support
.
transition
)
return
complete
.
call
(
this
)
this
[
this
.
$element
.
hasClass
(
'
in
'
)
?
'
hide
'
:
'
show
'
]()
}
this
.
$element
[
dimension
](
0
)
.
one
(
'
bsTransitionEnd
'
,
$
.
proxy
(
complete
,
this
))
.
emulateTransitionEnd
(
350
)
}
// COLLAPSE PLUGIN DEFINITION
Collapse
.
prototype
.
toggle
=
function
()
{
// ==========================
this
[
this
.
$element
.
hasClass
(
'
in
'
)
?
'
hide
'
:
'
show
'
]()
}
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
)
if
(
!
data
&&
options
.
toggle
&&
option
==
'
show
'
)
option
=
!
option
// COLLAPSE PLUGIN DEFINITION
if
(
!
data
)
$this
.
data
(
'
bs.collapse
'
,
(
data
=
new
Collapse
(
this
,
options
)))
// ==========================
if
(
typeof
option
==
'
string
'
)
data
[
option
]()
})
}
var
old
=
$
.
fn
.
collapse
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
)
$
.
fn
.
collapse
=
Plugin
if
(
!
data
&&
options
.
toggle
&&
option
==
'
show
'
)
option
=
!
option
$
.
fn
.
collapse
.
Constructor
=
Collapse
if
(
!
data
)
$this
.
data
(
'
bs.collapse
'
,
(
data
=
new
Collapse
(
this
,
options
)))
if
(
typeof
option
==
'
string
'
)
data
[
option
]()
})
}
var
old
=
$
.
fn
.
collapse
// COLLAPSE NO CONFLICT
$
.
fn
.
collapse
=
Plugin
// ====================
$
.
fn
.
collapse
.
Constructor
=
Collapse
$
.
fn
.
collapse
.
noConflict
=
function
()
{
$
.
fn
.
collapse
=
old
return
this
}
// COLLAPSE NO CONFLICT
// ====================
// COLLAPSE DATA-API
$
.
fn
.
collapse
.
noConflict
=
function
()
{
// =================
$
.
fn
.
collapse
=
old
return
this
}
$
(
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
)
if
(
!
data
||
!
data
.
transitioning
)
{
// COLLAPSE DATA-API
if
(
$parent
)
$parent
.
find
(
'
[data-toggle="collapse"][data-parent="
'
+
parent
+
'
"]
'
).
not
(
$this
).
addClass
(
'
collapsed
'
)
// =================
$this
[
$target
.
hasClass
(
'
in
'
)
?
'
addClass
'
:
'
removeClass
'
](
'
collapsed
'
)
}
$
(
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
)
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
)
})
})
});
}
(
);
js/dropdown.js
View file @
2b302f69
...
@@ -7,149 +7,151 @@
...
@@ -7,149 +7,151 @@
* ======================================================================== */
* ======================================================================== */
(
function
(
o_o
)
{
+
function
()
{
'
use strict
'
;
typeof
define
===
'
function
'
&&
define
.
amd
?
define
([
'
jquery
'
],
o_o
)
:
typeof
exports
===
'
object
'
?
o_o
(
require
(
'
jquery
'
))
:
o_o
(
jQuery
)
})(
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
(
$
)
{
// DROPDOWN CLASS DEFINITION
// DROPDOWN CLASS DEFINITION
// =========================
// =========================
var
backdrop
=
'
.dropdown-backdrop
'
var
backdrop
=
'
.dropdown-backdrop
'
var
toggle
=
'
[data-toggle="dropdown"]
'
var
toggle
=
'
[data-toggle="dropdown"]
'
var
Dropdown
=
function
(
element
)
{
var
Dropdown
=
function
(
element
)
{
$
(
element
).
on
(
'
click.bs.dropdown
'
,
this
.
toggle
)
$
(
element
).
on
(
'
click.bs.dropdown
'
,
this
.
toggle
)
}
}
Dropdown
.
VERSION
=
'
3.1.1
'
Dropdown
.
VERSION
=
'
3.1.1
'
Dropdown
.
prototype
.
toggle
=
function
(
e
)
{
var
$this
=
$
(
this
)
Dropdown
.
prototype
.
toggle
=
function
(
e
)
{
if
(
$this
.
is
(
'
.disabled, :disabled
'
))
return
var
$this
=
$
(
this
)
if
(
$this
.
is
(
'
.disabled, :disabled
'
))
return
var
$parent
=
getParent
(
$this
)
var
isActive
=
$parent
.
hasClass
(
'
open
'
)
var
$parent
=
getParent
(
$this
)
clearMenus
()
var
isActive
=
$parent
.
hasClass
(
'
open
'
)
clearMenus
()
if
(
!
isActive
)
{
if
(
'
ontouchstart
'
in
document
.
documentElement
&&
!
$parent
.
closest
(
'
.navbar-nav
'
).
length
)
{
// if mobile we use a backdrop because click events don't delegate
$
(
'
<div class="dropdown-backdrop"/>
'
).
insertAfter
(
$
(
this
)).
on
(
'
click
'
,
clearMenus
)
}
if
(
!
isActive
)
{
var
relatedTarget
=
{
relatedTarget
:
this
}
if
(
'
ontouchstart
'
in
document
.
documentElement
&&
!
$parent
.
closest
(
'
.navbar-nav
'
).
length
)
{
$parent
.
trigger
(
e
=
$
.
Event
(
'
show.bs.dropdown
'
,
relatedTarget
))
// if mobile we use a backdrop because click events don't delegate
$
(
'
<div class="dropdown-backdrop"/>
'
).
insertAfter
(
$
(
this
)).
on
(
'
click
'
,
clearMenus
)
}
var
relatedTarget
=
{
relatedTarget
:
this
}
if
(
e
.
isDefaultPrevented
())
return
$parent
.
trigger
(
e
=
$
.
Event
(
'
show.bs.dropdown
'
,
relatedTarget
))
if
(
e
.
isDefaultPrevented
())
return
$this
.
trigger
(
'
focus
'
)
$this
.
trigger
(
'
focus
'
)
$parent
.
toggleClass
(
'
open
'
)
.
trigger
(
'
shown.bs.dropdown
'
,
relatedTarget
)
}
$parent
return
false
.
toggleClass
(
'
open
'
)
.
trigger
(
'
shown.bs.dropdown
'
,
relatedTarget
)
}
}
return
false
Dropdown
.
prototype
.
keydown
=
function
(
e
)
{
}
if
(
!
/
(
38|40|27
)
/
.
test
(
e
.
keyCode
))
return
Dropdown
.
prototype
.
keydown
=
function
(
e
)
{
var
$this
=
$
(
this
)
if
(
!
/
(
38|40|27
)
/
.
test
(
e
.
keyCode
))
return
var
$this
=
$
(
this
)
e
.
preventDefault
()
e
.
stopPropagation
()
e
.
preventDefault
()
if
(
$this
.
is
(
'
.disabled, :disabled
'
))
return
e
.
stopPropagation
()
if
(
$this
.
is
(
'
.disabled, :disabled
'
))
return
var
$parent
=
getParent
(
$this
)
var
isActive
=
$parent
.
hasClass
(
'
open
'
)
var
$parent
=
getParent
(
$this
)
if
(
!
isActive
||
(
isActive
&&
e
.
keyCode
==
27
))
{
var
isActive
=
$parent
.
hasClass
(
'
open
'
)
if
(
e
.
which
==
27
)
$parent
.
find
(
toggle
).
trigger
(
'
focus
'
)
return
$this
.
trigger
(
'
click
'
)
}
if
(
!
isActive
||
(
isActive
&&
e
.
keyCode
==
27
))
{
var
desc
=
'
li:not(.divider):visible a
'
if
(
e
.
which
==
27
)
$parent
.
find
(
toggle
).
trigger
(
'
focus
'
)
var
$items
=
$parent
.
find
(
'
[role="menu"]
'
+
desc
+
'
, [role="listbox"]
'
+
desc
)
return
$this
.
trigger
(
'
click
'
)
}
var
desc
=
'
li:not(.divider):visible a
'
if
(
!
$items
.
length
)
return
var
$items
=
$parent
.
find
(
'
[role="menu"]
'
+
desc
+
'
, [role="listbox"]
'
+
desc
)
if
(
!
$items
.
length
)
return
var
index
=
$items
.
index
(
$items
.
filter
(
'
:focus
'
))
var
index
=
$items
.
index
(
$items
.
filter
(
'
:focus
'
))
if
(
e
.
keyCode
==
38
&&
index
>
0
)
index
--
// up
if
(
e
.
keyCode
==
40
&&
index
<
$items
.
length
-
1
)
index
++
// down
if
(
!~
index
)
index
=
0
if
(
e
.
keyCode
==
38
&&
index
>
0
)
index
--
// up
$items
.
eq
(
index
).
trigger
(
'
focus
'
)
if
(
e
.
keyCode
==
40
&&
index
<
$items
.
length
-
1
)
index
++
// down
}
if
(
!~
index
)
index
=
0
$items
.
eq
(
index
).
trigger
(
'
focus
'
)
function
clearMenus
(
e
)
{
}
if
(
e
&&
e
.
which
===
3
)
return
$
(
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
)
})
}
function
clearMenus
(
e
)
{
function
getParent
(
$this
)
{
if
(
e
&&
e
.
which
===
3
)
return
var
selector
=
$this
.
attr
(
'
data-target
'
)
$
(
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
)
})
}
function
getParent
(
$this
)
{
if
(
!
selector
)
{
var
selector
=
$this
.
attr
(
'
data-target
'
)
selector
=
$this
.
attr
(
'
href
'
)
selector
=
selector
&&
/#
[
A-Za-z
]
/
.
test
(
selector
)
&&
selector
.
replace
(
/.*
(?=
#
[^\s]
*$
)
/
,
''
)
//strip for ie7
}
if
(
!
selector
)
{
var
$parent
=
selector
&&
$
(
selector
)
selector
=
$this
.
attr
(
'
href
'
)
selector
=
selector
&&
/#
[
A-Za-z
]
/
.
test
(
selector
)
&&
selector
.
replace
(
/.*
(?=
#
[^\s]
*$
)
/
,
''
)
//strip for ie7
}
var
$parent
=
selector
&&
$
(
selector
)
return
$parent
&&
$parent
.
length
?
$parent
:
$this
.
parent
()
}
return
$parent
&&
$parent
.
length
?
$parent
:
$this
.
parent
()
}
// DROPDOWN PLUGIN DEFINITION
// ==========================
// DROPDOWN PLUGIN DEFINITION
function
Plugin
(
option
)
{
// ==========================
return
this
.
each
(
function
()
{
var
$this
=
$
(
this
)
var
data
=
$this
.
data
(
'
bs.dropdown
'
)
function
Plugin
(
option
)
{
if
(
!
data
)
$this
.
data
(
'
bs.dropdown
'
,
(
data
=
new
Dropdown
(
this
)))
return
this
.
each
(
function
()
{
if
(
typeof
option
==
'
string
'
)
data
[
option
].
call
(
$this
)
var
$this
=
$
(
this
)
}
)
var
data
=
$this
.
data
(
'
bs.dropdown
'
)
}
if
(
!
data
)
$this
.
data
(
'
bs.dropdown
'
,
(
data
=
new
Dropdown
(
this
)))
var
old
=
$
.
fn
.
dropdown
if
(
typeof
option
==
'
string
'
)
data
[
option
].
call
(
$this
)
})
}
var
old
=
$
.
fn
.
dropdown
$
.
fn
.
dropdown
=
Plugin
$
.
fn
.
dropdown
.
Constructor
=
Dropdown
$
.
fn
.
dropdown
=
Plugin
$
.
fn
.
dropdown
.
Constructor
=
Dropdown
// DROPDOWN NO CONFLICT
// ====================
// DROPDOWN NO CONFLICT
$
.
fn
.
dropdown
.
noConflict
=
function
()
{
// ====================
$
.
fn
.
dropdown
=
old
return
this
}
$
.
fn
.
dropdown
.
noConflict
=
function
()
{
$
.
fn
.
dropdown
=
old
return
this
}
// APPLY TO STANDARD DROPDOWN ELEMENTS
// ===================================
// APPLY TO STANDARD DROPDOWN ELEMENTS
$
(
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
)
$
(
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
)
});
}
(
);
js/modal.js
View file @
2b302f69
...
@@ -7,278 +7,280 @@
...
@@ -7,278 +7,280 @@
* ======================================================================== */
* ======================================================================== */
(
function
(
o_o
)
{
+
function
()
{
'
use strict
'
;
typeof
define
===
'
function
'
&&
define
.
amd
?
define
([
'
jquery
'
],
o_o
)
:
typeof
exports
===
'
object
'
?
o_o
(
require
(
'
jquery
'
))
:
o_o
(
jQuery
)
(
function
(
o_o
)
{
})(
function
(
$
)
{
typeof
define
==
'
function
'
&&
define
.
amd
?
define
([
'
jquery
'
],
o_o
)
:
typeof
exports
==
'
object
'
?
o_o
(
require
(
'
jquery
'
))
:
o_o
(
jQuery
)
'
use strict
'
;
})(
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 CLASS DEFINITION
Modal
.
VERSION
=
'
3.1.1
'
// ======================
var
Modal
=
function
(
element
,
options
)
{
Modal
.
DEFAULTS
=
{
this
.
options
=
options
backdrop
:
true
,
this
.
$body
=
$
(
document
.
body
)
keyboard
:
true
,
this
.
$element
=
$
(
element
)
show
:
true
this
.
$backdrop
=
}
this
.
isShown
=
null
this
.
scrollbarWidth
=
0
if
(
this
.
options
.
remote
)
{
Modal
.
prototype
.
toggle
=
function
(
_relatedTarget
)
{
this
.
$element
return
this
.
isShown
?
this
.
hide
()
:
this
.
show
(
_relatedTarget
)
.
find
(
'
.modal-content
'
)
.
load
(
this
.
options
.
remote
,
$
.
proxy
(
function
()
{
this
.
$element
.
trigger
(
'
loaded.bs.modal
'
)
},
this
))
}
}
}
Modal
.
VERSION
=
'
3.1.1
'
Modal
.
prototype
.
show
=
function
(
_relatedTarget
)
{
var
that
=
this
var
e
=
$
.
Event
(
'
show.bs.modal
'
,
{
relatedTarget
:
_relatedTarget
})
Modal
.
DEFAULTS
=
{
this
.
$element
.
trigger
(
e
)
backdrop
:
true
,
keyboard
:
true
,
show
:
true
}
Modal
.
prototype
.
toggle
=
function
(
_relatedTarget
)
{
if
(
this
.
isShown
||
e
.
isDefaultPrevented
())
return
return
this
.
isShown
?
this
.
hide
()
:
this
.
show
(
_relatedTarget
)
}
Modal
.
prototype
.
show
=
function
(
_relatedTarget
)
{
this
.
isShown
=
true
var
that
=
this
var
e
=
$
.
Event
(
'
show.bs.modal
'
,
{
relatedTarget
:
_relatedTarget
})
this
.
$element
.
trigger
(
e
)
this
.
checkScrollbar
()
this
.
$body
.
addClass
(
'
modal-open
'
)
if
(
this
.
isShown
||
e
.
isDefaultPrevented
())
return
this
.
setScrollbar
()
this
.
escape
()
this
.
isShown
=
true
this
.
$element
.
on
(
'
click.dismiss.bs.modal
'
,
'
[data-dismiss="modal"]
'
,
$
.
proxy
(
this
.
hide
,
this
))
this
.
checkScrollbar
()
this
.
backdrop
(
function
()
{
this
.
$body
.
addClass
(
'
modal-open
'
)
var
transition
=
$
.
support
.
transition
&&
that
.
$element
.
hasClass
(
'
fade
'
)
this
.
setScrollbar
()
if
(
!
that
.
$element
.
parent
().
length
)
{
this
.
escape
()
that
.
$element
.
appendTo
(
that
.
$body
)
// don't move modals dom position
}
this
.
$element
.
on
(
'
click.dismiss.bs.modal
'
,
'
[data-dismiss="modal"]
'
,
$
.
proxy
(
this
.
hide
,
this
))
that
.
$element
.
show
()
.
scrollTop
(
0
)
this
.
backdrop
(
function
()
{
if
(
transition
)
{
var
transition
=
$
.
support
.
transition
&&
that
.
$element
.
hasClass
(
'
fade
'
)
that
.
$element
[
0
].
offsetWidth
// force reflow
}
if
(
!
that
.
$element
.
parent
().
length
)
{
that
.
$element
that
.
$element
.
appendTo
(
that
.
$body
)
// don't move modals dom position
.
addClass
(
'
in
'
)
}
.
attr
(
'
aria-hidden
'
,
false
)
that
.
$element
that
.
enforceFocus
()
.
show
()
.
scrollTop
(
0
)
if
(
transition
)
{
var
e
=
$
.
Event
(
'
shown.bs.modal
'
,
{
relatedTarget
:
_relatedTarget
})
that
.
$element
[
0
].
offsetWidth
// force reflow
}
that
.
$element
transition
?
.
addClass
(
'
in
'
)
that
.
$element
.
find
(
'
.modal-dialog
'
)
// wait for modal to slide in
.
attr
(
'
aria-hidden
'
,
false
)
.
one
(
'
bsTransitionEnd
'
,
function
()
{
that
.
$element
.
trigger
(
'
focus
'
).
trigger
(
e
)
})
.
emulateTransitionEnd
(
300
)
:
that
.
$element
.
trigger
(
'
focus
'
).
trigger
(
e
)
})
}
that
.
enforceFocus
()
Modal
.
prototype
.
hide
=
function
(
e
)
{
if
(
e
)
e
.
preventDefault
()
var
e
=
$
.
Event
(
'
shown.bs.modal
'
,
{
relatedTarget
:
_relatedTarget
}
)
e
=
$
.
Event
(
'
hide.bs.modal
'
)
transition
?
this
.
$element
.
trigger
(
e
)
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
)
})
}
Modal
.
prototype
.
hide
=
function
(
e
)
{
if
(
!
this
.
isShown
||
e
.
isDefaultPrevented
())
return
if
(
e
)
e
.
preventDefault
()
e
=
$
.
Event
(
'
hide.bs.modal
'
)
this
.
isShown
=
false
this
.
$element
.
trigger
(
e
)
this
.
$body
.
removeClass
(
'
modal-open
'
)
if
(
!
this
.
isShown
||
e
.
isDefaultPrevented
())
return
this
.
resetScrollbar
()
this
.
escape
()
this
.
isShown
=
false
$
(
document
).
off
(
'
focusin.bs.modal
'
)
this
.
$body
.
removeClass
(
'
modal-open
'
)
this
.
$element
.
removeClass
(
'
in
'
)
.
attr
(
'
aria-hidden
'
,
true
)
.
off
(
'
click.dismiss.bs.modal
'
)
this
.
resetScrollbar
()
$
.
support
.
transition
&&
this
.
$element
.
hasClass
(
'
fade
'
)
?
this
.
escape
()
this
.
$element
.
one
(
'
bsTransitionEnd
'
,
$
.
proxy
(
this
.
hideModal
,
this
))
.
emulateTransitionEnd
(
300
)
:
this
.
hideModal
()
}
$
(
document
).
off
(
'
focusin.bs.modal
'
)
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
))
}
this
.
$element
Modal
.
prototype
.
escape
=
function
()
{
.
removeClass
(
'
in
'
)
if
(
this
.
isShown
&&
this
.
options
.
keyboard
)
{
.
attr
(
'
aria-hidden
'
,
true
)
this
.
$element
.
on
(
'
keyup.dismiss.bs.modal
'
,
$
.
proxy
(
function
(
e
)
{
.
off
(
'
click.dismiss.bs.modal
'
)
e
.
which
==
27
&&
this
.
hide
()
},
this
))
}
else
if
(
!
this
.
isShown
)
{
this
.
$element
.
off
(
'
keyup.dismiss.bs.modal
'
)
}
}
$
.
support
.
transition
&&
this
.
$element
.
hasClass
(
'
fade
'
)
?
Modal
.
prototype
.
hideModal
=
function
()
{
this
.
$element
var
that
=
this
.
one
(
'
bsTransitionEnd
'
,
$
.
proxy
(
this
.
hideModal
,
this
))
this
.
$element
.
hide
()
.
emulateTransitionEnd
(
300
)
:
this
.
backdrop
(
function
()
{
this
.
hideModal
()
that
.
$element
.
trigger
(
'
hidden.bs.modal
'
)
}
})
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
.
hideModal
=
function
()
{
Modal
.
prototype
.
removeBackdrop
=
function
()
{
var
that
=
this
this
.
$backdrop
&&
this
.
$backdrop
.
remove
()
this
.
$element
.
hide
()
this
.
$backdrop
=
null
this
.
backdrop
(
function
()
{
}
that
.
$element
.
trigger
(
'
hidden.bs.modal
'
)
})
}
Modal
.
prototype
.
removeBackdrop
=
function
()
{
Modal
.
prototype
.
backdrop
=
function
(
callback
)
{
this
.
$backdrop
&&
this
.
$backdrop
.
remove
()
var
that
=
this
this
.
$backdrop
=
null
var
animate
=
this
.
$element
.
hasClass
(
'
fade
'
)
?
'
fade
'
:
''
}
Modal
.
prototype
.
backdrop
=
function
(
callback
)
{
if
(
this
.
isShown
&&
this
.
options
.
backdrop
)
{
var
that
=
this
var
doAnimate
=
$
.
support
.
transition
&&
animate
var
animate
=
this
.
$element
.
hasClass
(
'
fade
'
)
?
'
fade
'
:
''
if
(
this
.
isShown
&&
this
.
options
.
backdrop
)
{
this
.
$backdrop
=
$
(
'
<div class="modal-backdrop
'
+
animate
+
'
" />
'
)
var
doAnimate
=
$
.
support
.
transition
&&
animate
.
appendTo
(
this
.
$body
)
this
.
$backdrop
=
$
(
'
<div class="modal-backdrop
'
+
animate
+
'
" />
'
)
this
.
$element
.
on
(
'
click.dismiss.bs.modal
'
,
$
.
proxy
(
function
(
e
)
{
.
appendTo
(
this
.
$body
)
if
(
e
.
target
!==
e
.
currentTarget
)
return
this
.
options
.
backdrop
==
'
static
'
?
this
.
$element
[
0
].
focus
.
call
(
this
.
$element
[
0
])
:
this
.
hide
.
call
(
this
)
},
this
))
this
.
$element
.
on
(
'
click.dismiss.bs.modal
'
,
$
.
proxy
(
function
(
e
)
{
if
(
doAnimate
)
this
.
$backdrop
[
0
].
offsetWidth
// force reflow
if
(
e
.
target
!==
e
.
currentTarget
)
return
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
.
$backdrop
.
addClass
(
'
in
'
)
this
.
$backdrop
.
addClass
(
'
in
'
)
if
(
!
callback
)
return
if
(
!
callback
)
return
doAnimate
?
this
.
$backdrop
.
one
(
'
bsTransitionEnd
'
,
callback
)
.
emulateTransitionEnd
(
150
)
:
callback
()
doAnimate
?
}
else
if
(
!
this
.
isShown
&&
this
.
$backdrop
)
{
this
.
$backdrop
this
.
$backdrop
.
removeClass
(
'
in
'
)
.
one
(
'
bsTransitionEnd
'
,
callback
)
.
emulateTransitionEnd
(
150
)
:
callback
()
}
else
if
(
!
this
.
isShown
&&
this
.
$backdrop
)
{
var
callbackRemove
=
function
()
{
this
.
$backdrop
.
removeClass
(
'
in
'
)
that
.
removeBackdrop
()
callback
&&
callback
()
}
$
.
support
.
transition
&&
this
.
$element
.
hasClass
(
'
fade
'
)
?
this
.
$backdrop
.
one
(
'
bsTransitionEnd
'
,
callbackRemove
)
.
emulateTransitionEnd
(
150
)
:
callbackRemove
()
var
callbackRemove
=
function
()
{
}
else
if
(
callback
)
{
that
.
removeBackdrop
()
callback
()
callback
&&
callback
()
}
}
$
.
support
.
transition
&&
this
.
$element
.
hasClass
(
'
fade
'
)
?
this
.
$backdrop
.
one
(
'
bsTransitionEnd
'
,
callbackRemove
)
.
emulateTransitionEnd
(
150
)
:
callbackRemove
()
}
else
if
(
callback
)
{
callback
()
}
}
}
Modal
.
prototype
.
checkScrollbar
=
function
()
{
Modal
.
prototype
.
checkScrollbar
=
function
()
{
if
(
document
.
body
.
clientWidth
>=
window
.
innerWidth
)
return
if
(
document
.
body
.
clientWidth
>=
window
.
innerWidth
)
return
this
.
scrollbarWidth
=
this
.
scrollbarWidth
||
this
.
measureScrollbar
()
this
.
scrollbarWidth
=
this
.
scrollbarWidth
||
this
.
measureScrollbar
()
}
}
Modal
.
prototype
.
setScrollbar
=
function
()
{
Modal
.
prototype
.
setScrollbar
=
function
()
{
var
bodyPad
=
parseInt
((
this
.
$body
.
css
(
'
padding-right
'
)
||
0
),
10
)
var
bodyPad
=
parseInt
((
this
.
$body
.
css
(
'
padding-right
'
)
||
0
),
10
)
if
(
this
.
scrollbarWidth
)
this
.
$body
.
css
(
'
padding-right
'
,
bodyPad
+
this
.
scrollbarWidth
)
if
(
this
.
scrollbarWidth
)
this
.
$body
.
css
(
'
padding-right
'
,
bodyPad
+
this
.
scrollbarWidth
)
}
}
Modal
.
prototype
.
resetScrollbar
=
function
()
{
Modal
.
prototype
.
resetScrollbar
=
function
()
{
this
.
$body
.
css
(
'
padding-right
'
,
''
)
this
.
$body
.
css
(
'
padding-right
'
,
''
)
}
}
Modal
.
prototype
.
measureScrollbar
=
function
()
{
// thx walsh
Modal
.
prototype
.
measureScrollbar
=
function
()
{
// thx walsh
var
scrollDiv
=
document
.
createElement
(
'
div
'
)
var
scrollDiv
=
document
.
createElement
(
'
div
'
)
scrollDiv
.
className
=
'
modal-scrollbar-measure
'
scrollDiv
.
className
=
'
modal-scrollbar-measure
'
this
.
$body
.
append
(
scrollDiv
)
this
.
$body
.
append
(
scrollDiv
)
var
scrollbarWidth
=
scrollDiv
.
offsetWidth
-
scrollDiv
.
clientWidth
var
scrollbarWidth
=
scrollDiv
.
offsetWidth
-
scrollDiv
.
clientWidth
this
.
$body
[
0
].
removeChild
(
scrollDiv
)
this
.
$body
[
0
].
removeChild
(
scrollDiv
)
return
scrollbarWidth
return
scrollbarWidth
}
}
// MODAL PLUGIN DEFINITION
// MODAL PLUGIN DEFINITION
// =======================
// =======================
function
Plugin
(
option
,
_relatedTarget
)
{
function
Plugin
(
option
,
_relatedTarget
)
{
return
this
.
each
(
function
()
{
return
this
.
each
(
function
()
{
var
$this
=
$
(
this
)
var
$this
=
$
(
this
)
var
data
=
$this
.
data
(
'
bs.modal
'
)
var
data
=
$this
.
data
(
'
bs.modal
'
)
var
options
=
$
.
extend
({},
Modal
.
DEFAULTS
,
$this
.
data
(),
typeof
option
==
'
object
'
&&
option
)
var
options
=
$
.
extend
({},
Modal
.
DEFAULTS
,
$this
.
data
(),
typeof
option
==
'
object
'
&&
option
)
if
(
!
data
)
$this
.
data
(
'
bs.modal
'
,
(
data
=
new
Modal
(
this
,
options
)))
if
(
!
data
)
$this
.
data
(
'
bs.modal
'
,
(
data
=
new
Modal
(
this
,
options
)))
if
(
typeof
option
==
'
string
'
)
data
[
option
](
_relatedTarget
)
if
(
typeof
option
==
'
string
'
)
data
[
option
](
_relatedTarget
)
else
if
(
options
.
show
)
data
.
show
(
_relatedTarget
)
else
if
(
options
.
show
)
data
.
show
(
_relatedTarget
)
})
})
}
}
var
old
=
$
.
fn
.
modal
var
old
=
$
.
fn
.
modal
$
.
fn
.
modal
=
Plugin
$
.
fn
.
modal
=
Plugin
$
.
fn
.
modal
.
Constructor
=
Modal
$
.
fn
.
modal
.
Constructor
=
Modal
// MODAL NO CONFLICT
// MODAL NO CONFLICT
// =================
// =================
$
.
fn
.
modal
.
noConflict
=
function
()
{
$
.
fn
.
modal
.
noConflict
=
function
()
{
$
.
fn
.
modal
=
old
$
.
fn
.
modal
=
old
return
this
return
this
}
}
// MODAL DATA-API
// MODAL DATA-API
// ==============
// ==============
$
(
document
).
on
(
'
click.bs.modal.data-api
'
,
'
[data-toggle="modal"]
'
,
function
(
e
)
{
$
(
document
).
on
(
'
click.bs.modal.data-api
'
,
'
[data-toggle="modal"]
'
,
function
(
e
)
{
var
$this
=
$
(
this
)
var
$this
=
$
(
this
)
var
href
=
$this
.
attr
(
'
href
'
)
var
href
=
$this
.
attr
(
'
href
'
)
var
$target
=
$
(
$this
.
attr
(
'
data-target
'
)
||
(
href
&&
href
.
replace
(
/.*
(?=
#
[^\s]
+$
)
/
,
''
)))
//strip for ie7
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
())
var
option
=
$target
.
data
(
'
bs.modal
'
)
?
'
toggle
'
:
$
.
extend
({
remote
:
!
/#/
.
test
(
href
)
&&
href
},
$target
.
data
(),
$this
.
data
())
if
(
$this
.
is
(
'
a
'
))
e
.
preventDefault
()
if
(
$this
.
is
(
'
a
'
))
e
.
preventDefault
()
$target
.
one
(
'
show.bs.modal
'
,
function
(
showEvent
)
{
$target
.
one
(
'
show.bs.modal
'
,
function
(
showEvent
)
{
if
(
showEvent
.
isDefaultPrevented
())
return
// only register focus restorer if modal will actually get shown
if
(
showEvent
.
isDefaultPrevented
())
return
// only register focus restorer if modal will actually get shown
$target
.
one
(
'
hidden.bs.modal
'
,
function
()
{
$target
.
one
(
'
hidden.bs.modal
'
,
function
()
{
$this
.
is
(
'
:visible
'
)
&&
$this
.
trigger
(
'
focus
'
)
$this
.
is
(
'
:visible
'
)
&&
$this
.
trigger
(
'
focus
'
)
})
})
})
Plugin
.
call
(
$target
,
option
,
this
)
})
})
Plugin
.
call
(
$target
,
option
,
this
)
})
})
});
}
(
);
js/popover.js
View file @
2b302f69
...
@@ -7,111 +7,113 @@
...
@@ -7,111 +7,113 @@
* ======================================================================== */
* ======================================================================== */
(
function
(
o_o
)
{
+
function
()
{
'
use strict
'
;
typeof
define
===
'
function
'
&&
define
.
amd
?
define
([
'
jquery
'
],
o_o
)
:
typeof
exports
===
'
object
'
?
o_o
(
require
(
'
jquery
'
))
:
o_o
(
jQuery
)
})(
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
(
$
)
{
// POPOVER PUBLIC CLASS DEFINITION
// POPOVER PUBLIC CLASS DEFINITION
// ===============================
// ===============================
var
Popover
=
function
(
element
,
options
)
{
var
Popover
=
function
(
element
,
options
)
{
this
.
init
(
'
popover
'
,
element
,
options
)
this
.
init
(
'
popover
'
,
element
,
options
)
}
}
if
(
!
$
.
fn
.
tooltip
)
throw
new
Error
(
'
Popover requires tooltip.js
'
)
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
,
{
Popover
.
DEFAULTS
=
$
.
extend
({},
$
.
fn
.
tooltip
.
Constructor
.
DEFAULTS
,
{
placement
:
'
right
'
,
placement
:
'
right
'
,
trigger
:
'
click
'
,
trigger
:
'
click
'
,
content
:
''
,
content
:
''
,
template
:
'
<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>
'
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
// NOTE: POPOVER EXTENDS tooltip.js
// ================================
// ================================
Popover
.
prototype
=
$
.
extend
({},
$
.
fn
.
tooltip
.
Constructor
.
prototype
)
Popover
.
prototype
=
$
.
extend
({},
$
.
fn
.
tooltip
.
Constructor
.
prototype
)
Popover
.
prototype
.
constructor
=
Popover
Popover
.
prototype
.
constructor
=
Popover
Popover
.
prototype
.
getDefaults
=
function
()
{
Popover
.
prototype
.
getDefaults
=
function
()
{
return
Popover
.
DEFAULTS
return
Popover
.
DEFAULTS
}
}
Popover
.
prototype
.
setContent
=
function
()
{
Popover
.
prototype
.
setContent
=
function
()
{
var
$tip
=
this
.
tip
()
var
$tip
=
this
.
tip
()
var
title
=
this
.
getTitle
()
var
title
=
this
.
getTitle
()
var
content
=
this
.
getContent
()
var
content
=
this
.
getContent
()
$tip
.
find
(
'
.popover-title
'
)[
this
.
options
.
html
?
'
html
'
:
'
text
'
](
title
)
$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
$tip
.
find
(
'
.popover-content
'
).
empty
()[
// we use append for html objects to maintain js events
this
.
options
.
html
?
(
typeof
content
==
'
string
'
?
'
html
'
:
'
append
'
)
:
'
text
'
this
.
options
.
html
?
(
typeof
content
==
'
string
'
?
'
html
'
:
'
append
'
)
:
'
text
'
](
content
)
](
content
)
$tip
.
removeClass
(
'
fade top bottom left right in
'
)
$tip
.
removeClass
(
'
fade top bottom left right in
'
)
// IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do
// IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do
// this manually by checking the contents.
// this manually by checking the contents.
if
(
!
$tip
.
find
(
'
.popover-title
'
).
html
())
$tip
.
find
(
'
.popover-title
'
).
hide
()
if
(
!
$tip
.
find
(
'
.popover-title
'
).
html
())
$tip
.
find
(
'
.popover-title
'
).
hide
()
}
}
Popover
.
prototype
.
hasContent
=
function
()
{
Popover
.
prototype
.
hasContent
=
function
()
{
return
this
.
getTitle
()
||
this
.
getContent
()
return
this
.
getTitle
()
||
this
.
getContent
()
}
}
Popover
.
prototype
.
getContent
=
function
()
{
Popover
.
prototype
.
getContent
=
function
()
{
var
$e
=
this
.
$element
var
$e
=
this
.
$element
var
o
=
this
.
options
var
o
=
this
.
options
return
$e
.
attr
(
'
data-content
'
)
return
$e
.
attr
(
'
data-content
'
)
||
(
typeof
o
.
content
==
'
function
'
?
||
(
typeof
o
.
content
==
'
function
'
?
o
.
content
.
call
(
$e
[
0
])
:
o
.
content
.
call
(
$e
[
0
])
:
o
.
content
)
o
.
content
)
}
}
Popover
.
prototype
.
arrow
=
function
()
{
Popover
.
prototype
.
arrow
=
function
()
{
return
(
this
.
$arrow
=
this
.
$arrow
||
this
.
tip
().
find
(
'
.arrow
'
))
return
(
this
.
$arrow
=
this
.
$arrow
||
this
.
tip
().
find
(
'
.arrow
'
))
}
}
Popover
.
prototype
.
tip
=
function
()
{
Popover
.
prototype
.
tip
=
function
()
{
if
(
!
this
.
$tip
)
this
.
$tip
=
$
(
this
.
options
.
template
)
if
(
!
this
.
$tip
)
this
.
$tip
=
$
(
this
.
options
.
template
)
return
this
.
$tip
return
this
.
$tip
}
}
// POPOVER PLUGIN DEFINITION
// POPOVER 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.popover
'
)
var
data
=
$this
.
data
(
'
bs.popover
'
)
var
options
=
typeof
option
==
'
object
'
&&
option
var
options
=
typeof
option
==
'
object
'
&&
option
if
(
!
data
&&
option
==
'
destroy
'
)
return
if
(
!
data
&&
option
==
'
destroy
'
)
return
if
(
!
data
)
$this
.
data
(
'
bs.popover
'
,
(
data
=
new
Popover
(
this
,
options
)))
if
(
!
data
)
$this
.
data
(
'
bs.popover
'
,
(
data
=
new
Popover
(
this
,
options
)))
if
(
typeof
option
==
'
string
'
)
data
[
option
]()
if
(
typeof
option
==
'
string
'
)
data
[
option
]()
})
})
}
}
var
old
=
$
.
fn
.
popover
var
old
=
$
.
fn
.
popover
$
.
fn
.
popover
=
Plugin
$
.
fn
.
popover
=
Plugin
$
.
fn
.
popover
.
Constructor
=
Popover
$
.
fn
.
popover
.
Constructor
=
Popover
// POPOVER NO CONFLICT
// POPOVER NO CONFLICT
// ===================
// ===================
$
.
fn
.
popover
.
noConflict
=
function
()
{
$
.
fn
.
popover
.
noConflict
=
function
()
{
$
.
fn
.
popover
=
old
$
.
fn
.
popover
=
old
return
this
return
this
}
}
})
});
}
(
);
js/scrollspy.js
View file @
2b302f69
...
@@ -7,168 +7,170 @@
...
@@ -7,168 +7,170 @@
* ======================================================================== */
* ======================================================================== */
(
function
(
o_o
)
{
+
function
()
{
'
use strict
'
;
typeof
define
===
'
function
'
&&
define
.
amd
?
define
([
'
jquery
'
],
o_o
)
:
typeof
exports
===
'
object
'
?
o_o
(
require
(
'
jquery
'
))
:
o_o
(
jQuery
)
})(
function
(
$
)
{
'
use strict
'
;
// SCROLLSPY CLASS DEFINITION
// ==========================
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
()
}
this
.
offsets
=
[]
(
function
(
o_o
)
{
this
.
targets
=
[]
typeof
define
==
'
function
'
&&
define
.
amd
?
define
([
'
jquery
'
],
o_o
)
:
this
.
scrollHeight
=
this
.
getScrollHeight
()
typeof
exports
==
'
object
'
?
o_o
(
require
(
'
jquery
'
))
:
o_o
(
jQuery
)
})(
function
(
$
)
{
var
self
=
this
// SCROLLSPY CLASS DEFINITION
// ==========================
this
.
$body
function
ScrollSpy
(
element
,
options
)
{
.
find
(
this
.
selector
)
var
process
=
$
.
proxy
(
this
.
process
,
this
)
.
map
(
function
()
{
var
$el
=
$
(
this
)
var
href
=
$el
.
data
(
'
target
'
)
||
$el
.
attr
(
'
href
'
)
var
$href
=
/^#./
.
test
(
href
)
&&
$
(
href
)
return
(
$href
this
.
$body
=
$
(
'
body
'
)
&&
$href
.
length
this
.
$scrollElement
=
$
(
element
).
is
(
'
body
'
)
?
$
(
window
)
:
$
(
element
)
&&
$href
.
is
(
'
:visible
'
)
this
.
options
=
$
.
extend
({},
ScrollSpy
.
DEFAULTS
,
options
)
&&
[[
$href
[
offsetMethod
]().
top
+
offsetBase
,
href
]])
||
null
this
.
selector
=
(
this
.
options
.
target
||
''
)
+
'
.nav li > a
'
})
this
.
offsets
=
[]
.
sort
(
function
(
a
,
b
)
{
return
a
[
0
]
-
b
[
0
]
})
this
.
targets
=
[]
.
each
(
function
()
{
this
.
activeTarget
=
null
self
.
offsets
.
push
(
this
[
0
])
this
.
scrollHeight
=
0
self
.
targets
.
push
(
this
[
1
])
})
this
.
$scrollElement
.
on
(
'
scroll.bs.scrollspy
'
,
process
)
}
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
()
}
}
if
(
scrollTop
>=
maxScroll
)
{
ScrollSpy
.
VERSION
=
'
3.1.1
'
return
activeTarget
!=
(
i
=
targets
[
targets
.
length
-
1
])
&&
this
.
activate
(
i
)
ScrollSpy
.
DEFAULTS
=
{
offset
:
10
}
}
if
(
activeTarget
&&
scrollTop
<=
offsets
[
0
]
)
{
ScrollSpy
.
prototype
.
getScrollHeight
=
function
(
)
{
return
activeTarget
!=
(
i
=
targets
[
0
])
&&
this
.
activate
(
i
)
return
this
.
$scrollElement
[
0
].
scrollHeight
||
Math
.
max
(
this
.
$body
[
0
].
scrollHeight
,
document
.
documentElement
.
scrollHeight
)
}
}
for
(
i
=
offsets
.
length
;
i
--
;)
{
ScrollSpy
.
prototype
.
refresh
=
function
()
{
activeTarget
!=
targets
[
i
]
var
offsetMethod
=
'
offset
'
&&
scrollTop
>=
offsets
[
i
]
var
offsetBase
=
0
&&
(
!
offsets
[
i
+
1
]
||
scrollTop
<=
offsets
[
i
+
1
])
&&
this
.
activate
(
targets
[
i
])
if
(
!
$
.
isWindow
(
this
.
$scrollElement
[
0
]))
{
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
.
activate
=
function
(
target
)
{
ScrollSpy
.
prototype
.
process
=
function
()
{
this
.
activeTarget
=
target
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
()
}
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
])
}
}
$
(
this
.
selector
)
ScrollSpy
.
prototype
.
activate
=
function
(
target
)
{
.
parentsUntil
(
this
.
options
.
target
,
'
.active
'
)
this
.
activeTarget
=
target
.
removeClass
(
'
active
'
)
var
selector
=
this
.
selector
+
$
(
this
.
selector
)
'
[data-target="
'
+
target
+
'
"],
'
+
.
parentsUntil
(
this
.
options
.
target
,
'
.active
'
)
this
.
selector
+
'
[href="
'
+
target
+
'
"]
'
.
removeClass
(
'
active
'
)
var
active
=
$
(
selector
)
var
selector
=
this
.
selector
+
.
parents
(
'
li
'
)
'
[data-target="
'
+
target
+
'
"],
'
+
.
addClass
(
'
active
'
)
this
.
selector
+
'
[href="
'
+
target
+
'
"]
'
if
(
active
.
parent
(
'
.dropdown-menu
'
).
length
)
{
var
active
=
$
(
selector
)
active
=
active
.
parents
(
'
li
'
)
.
closest
(
'
li.dropdown
'
)
.
addClass
(
'
active
'
)
.
addClass
(
'
active
'
)
}
active
.
trigger
(
'
activate.bs.scrollspy
'
)
if
(
active
.
parent
(
'
.dropdown-menu
'
).
length
)
{
}
active
=
active
.
closest
(
'
li.dropdown
'
)
.
addClass
(
'
active
'
)
}
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
())
})
})
})
})
})
});
}
(
);
js/tab.js
View file @
2b302f69
...
@@ -7,126 +7,128 @@
...
@@ -7,126 +7,128 @@
* ======================================================================== */
* ======================================================================== */
(
function
(
o_o
)
{
+
function
()
{
'
use strict
'
;
typeof
define
===
'
function
'
&&
define
.
amd
?
define
([
'
jquery
'
],
o_o
)
:
typeof
exports
===
'
object
'
?
o_o
(
require
(
'
jquery
'
))
:
o_o
(
jQuery
)
})(
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
(
$
)
{
// TAB CLASS DEFINITION
// TAB CLASS DEFINITION
// ====================
// ====================
var
Tab
=
function
(
element
)
{
var
Tab
=
function
(
element
)
{
this
.
element
=
$
(
element
)
this
.
element
=
$
(
element
)
}
}
Tab
.
VERSION
=
'
3.1.1
'
Tab
.
VERSION
=
'
3.1.1
'
Tab
.
prototype
.
show
=
function
()
{
Tab
.
prototype
.
show
=
function
()
{
var
$this
=
this
.
element
var
$this
=
this
.
element
var
$ul
=
$this
.
closest
(
'
ul:not(.dropdown-menu)
'
)
var
$ul
=
$this
.
closest
(
'
ul:not(.dropdown-menu)
'
)
var
selector
=
$this
.
data
(
'
target
'
)
var
selector
=
$this
.
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
}
}
if
(
$this
.
parent
(
'
li
'
).
hasClass
(
'
active
'
))
return
if
(
$this
.
parent
(
'
li
'
).
hasClass
(
'
active
'
))
return
var
previous
=
$ul
.
find
(
'
.active:last a
'
)[
0
]
var
previous
=
$ul
.
find
(
'
.active:last a
'
)[
0
]
var
e
=
$
.
Event
(
'
show.bs.tab
'
,
{
var
e
=
$
.
Event
(
'
show.bs.tab
'
,
{
relatedTarget
:
previous
relatedTarget
:
previous
})
})
$this
.
trigger
(
e
)
$this
.
trigger
(
e
)
if
(
e
.
isDefaultPrevented
())
return
if
(
e
.
isDefaultPrevented
())
return
var
$target
=
$
(
selector
)
var
$target
=
$
(
selector
)
this
.
activate
(
$this
.
closest
(
'
li
'
),
$ul
)
this
.
activate
(
$this
.
closest
(
'
li
'
),
$ul
)
this
.
activate
(
$target
,
$target
.
parent
(),
function
()
{
this
.
activate
(
$target
,
$target
.
parent
(),
function
()
{
$this
.
trigger
({
$this
.
trigger
({
type
:
'
shown.bs.tab
'
,
type
:
'
shown.bs.tab
'
,
relatedTarget
:
previous
relatedTarget
:
previous
})
})
})
})
}
}
Tab
.
prototype
.
activate
=
function
(
element
,
container
,
callback
)
{
Tab
.
prototype
.
activate
=
function
(
element
,
container
,
callback
)
{
var
$active
=
container
.
find
(
'
> .active
'
)
var
$active
=
container
.
find
(
'
> .active
'
)
var
transition
=
callback
var
transition
=
callback
&&
$
.
support
.
transition
&&
$
.
support
.
transition
&&
$active
.
hasClass
(
'
fade
'
)
&&
$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
'
)
}
if
(
element
.
parent
(
'
.dropdown-menu
'
))
{
function
next
()
{
element
.
closest
(
'
li.dropdown
'
).
addClass
(
'
active
'
)
$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
'
)
}
if
(
element
.
parent
(
'
.dropdown-menu
'
))
{
element
.
closest
(
'
li.dropdown
'
).
addClass
(
'
active
'
)
}
callback
&&
callback
()
}
}
callback
&&
callback
()
transition
?
}
$active
.
one
(
'
bsTransitionEnd
'
,
next
)
.
emulateTransitionEnd
(
150
)
:
next
()
transition
?
$active
.
removeClass
(
'
in
'
)
$active
}
.
one
(
'
bsTransitionEnd
'
,
next
)
.
emulateTransitionEnd
(
150
)
:
next
()
$active
.
removeClass
(
'
in
'
)
}
// TAB PLUGIN DEFINITION
// =====================
// TAB PLUGIN DEFINITION
function
Plugin
(
option
)
{
// =====================
return
this
.
each
(
function
()
{
var
$this
=
$
(
this
)
var
data
=
$this
.
data
(
'
bs.tab
'
)
function
Plugin
(
option
)
{
if
(
!
data
)
$this
.
data
(
'
bs.tab
'
,
(
data
=
new
Tab
(
this
)))
return
this
.
each
(
function
()
{
if
(
typeof
option
==
'
string
'
)
data
[
option
]()
var
$this
=
$
(
this
)
}
)
var
data
=
$this
.
data
(
'
bs.tab
'
)
}
if
(
!
data
)
$this
.
data
(
'
bs.tab
'
,
(
data
=
new
Tab
(
this
)))
var
old
=
$
.
fn
.
tab
if
(
typeof
option
==
'
string
'
)
data
[
option
]()
})
}
var
old
=
$
.
fn
.
tab
$
.
fn
.
tab
=
Plugin
$
.
fn
.
tab
.
Constructor
=
Tab
$
.
fn
.
tab
=
Plugin
$
.
fn
.
tab
.
Constructor
=
Tab
// TAB NO CONFLICT
// ===============
// TAB NO CONFLICT
$
.
fn
.
tab
.
noConflict
=
function
()
{
// ===============
$
.
fn
.
tab
=
old
return
this
}
$
.
fn
.
tab
.
noConflict
=
function
()
{
$
.
fn
.
tab
=
old
return
this
}
// TAB DATA-API
// ============
// TAB DATA-API
$
(
document
).
on
(
'
click.bs.tab.data-api
'
,
'
[data-toggle="tab"], [data-toggle="pill"]
'
,
function
(
e
)
{
// ============
e
.
preventDefault
()
Plugin
.
call
(
$
(
this
),
'
show
'
)
})
$
(
document
).
on
(
'
click.bs.tab.data-api
'
,
'
[data-toggle="tab"], [data-toggle="pill"]
'
,
function
(
e
)
{
e
.
preventDefault
()
Plugin
.
call
(
$
(
this
),
'
show
'
)
})
})
});
}
(
);
js/tooltip.js
View file @
2b302f69
...
@@ -8,454 +8,456 @@
...
@@ -8,454 +8,456 @@
* ======================================================================== */
* ======================================================================== */
(
function
(
o_o
)
{
+
function
()
{
'
use strict
'
;
typeof
define
===
'
function
'
&&
define
.
amd
?
define
([
'
jquery
'
],
o_o
)
:
typeof
exports
===
'
object
'
?
o_o
(
require
(
'
jquery
'
))
:
o_o
(
jQuery
)
})(
function
(
$
)
{
'
use strict
'
;
// TOOLTIP PUBLIC CLASS DEFINITION
// ===============================
var
Tooltip
=
function
(
element
,
options
)
{
this
.
type
=
this
.
options
=
this
.
enabled
=
this
.
timeout
=
this
.
hoverState
=
this
.
$element
=
null
this
.
init
(
'
tooltip
'
,
element
,
options
)
}
Tooltip
.
VERSION
=
'
3.1.1
'
Tooltip
.
DEFAULTS
=
{
animation
:
true
,
placement
:
'
top
'
,
selector
:
false
,
template
:
'
<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>
'
,
trigger
:
'
hover focus
'
,
title
:
''
,
delay
:
0
,
html
:
false
,
container
:
false
,
viewport
:
{
selector
:
'
body
'
,
padding
:
0
}
}
Tooltip
.
prototype
.
init
=
function
(
type
,
element
,
options
)
{
(
function
(
o_o
)
{
this
.
enabled
=
true
typeof
define
==
'
function
'
&&
define
.
amd
?
define
([
'
jquery
'
],
o_o
)
:
this
.
type
=
type
typeof
exports
==
'
object
'
?
o_o
(
require
(
'
jquery
'
))
:
o_o
(
jQuery
)
this
.
$element
=
$
(
element
)
})(
function
(
$
)
{
this
.
options
=
this
.
getOptions
(
options
)
this
.
$viewport
=
this
.
options
.
viewport
&&
$
(
this
.
options
.
viewport
.
selector
||
this
.
options
.
viewport
)
var
triggers
=
this
.
options
.
trigger
.
split
(
'
'
)
// TOOLTIP PUBLIC CLASS DEFINITION
// ===============================
for
(
var
i
=
triggers
.
length
;
i
--
;)
{
var
Tooltip
=
function
(
element
,
options
)
{
var
trigger
=
triggers
[
i
]
this
.
type
=
this
.
options
=
this
.
enabled
=
this
.
timeout
=
this
.
hoverState
=
this
.
$element
=
null
if
(
trigger
==
'
click
'
)
{
this
.
init
(
'
tooltip
'
,
element
,
options
)
this
.
$element
.
on
(
'
click.
'
+
this
.
type
,
this
.
options
.
selector
,
$
.
proxy
(
this
.
toggle
,
this
))
}
}
else
if
(
trigger
!=
'
manual
'
)
{
var
eventIn
=
trigger
==
'
hover
'
?
'
mouseenter
'
:
'
focusin
'
var
eventOut
=
trigger
==
'
hover
'
?
'
mouseleave
'
:
'
focusout
'
this
.
$element
.
on
(
eventIn
+
'
.
'
+
this
.
type
,
this
.
options
.
selector
,
$
.
proxy
(
this
.
enter
,
this
))
Tooltip
.
VERSION
=
'
3.1.1
'
this
.
$element
.
on
(
eventOut
+
'
.
'
+
this
.
type
,
this
.
options
.
selector
,
$
.
proxy
(
this
.
leave
,
this
))
Tooltip
.
DEFAULTS
=
{
animation
:
true
,
placement
:
'
top
'
,
selector
:
false
,
template
:
'
<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>
'
,
trigger
:
'
hover focus
'
,
title
:
''
,
delay
:
0
,
html
:
false
,
container
:
false
,
viewport
:
{
selector
:
'
body
'
,
padding
:
0
}
}
}
}
this
.
options
.
selector
?
Tooltip
.
prototype
.
init
=
function
(
type
,
element
,
options
)
{
(
this
.
_options
=
$
.
extend
({},
this
.
options
,
{
trigger
:
'
manual
'
,
selector
:
''
}))
:
this
.
enabled
=
true
this
.
fixTitle
()
this
.
type
=
type
}
this
.
$element
=
$
(
element
)
this
.
options
=
this
.
getOptions
(
options
)
this
.
$viewport
=
this
.
options
.
viewport
&&
$
(
this
.
options
.
viewport
.
selector
||
this
.
options
.
viewport
)
var
triggers
=
this
.
options
.
trigger
.
split
(
'
'
)
Tooltip
.
prototype
.
getDefaults
=
function
()
{
for
(
var
i
=
triggers
.
length
;
i
--
;)
{
return
Tooltip
.
DEFAULTS
var
trigger
=
triggers
[
i
]
}
Tooltip
.
prototype
.
getOptions
=
function
(
options
)
{
if
(
trigger
==
'
click
'
)
{
options
=
$
.
extend
({},
this
.
getDefaults
(),
this
.
$element
.
data
(),
options
)
this
.
$element
.
on
(
'
click.
'
+
this
.
type
,
this
.
options
.
selector
,
$
.
proxy
(
this
.
toggle
,
this
))
}
else
if
(
trigger
!=
'
manual
'
)
{
var
eventIn
=
trigger
==
'
hover
'
?
'
mouseenter
'
:
'
focusin
'
var
eventOut
=
trigger
==
'
hover
'
?
'
mouseleave
'
:
'
focusout
'
if
(
options
.
delay
&&
typeof
options
.
delay
==
'
number
'
)
{
this
.
$element
.
on
(
eventIn
+
'
.
'
+
this
.
type
,
this
.
options
.
selector
,
$
.
proxy
(
this
.
enter
,
this
))
options
.
delay
=
{
this
.
$element
.
on
(
eventOut
+
'
.
'
+
this
.
type
,
this
.
options
.
selector
,
$
.
proxy
(
this
.
leave
,
this
))
show
:
options
.
delay
,
}
hide
:
options
.
delay
}
}
this
.
options
.
selector
?
(
this
.
_options
=
$
.
extend
({},
this
.
options
,
{
trigger
:
'
manual
'
,
selector
:
''
}))
:
this
.
fixTitle
()
}
Tooltip
.
prototype
.
getDefaults
=
function
()
{
return
Tooltip
.
DEFAULTS
}
}
return
options
Tooltip
.
prototype
.
getOptions
=
function
(
options
)
{
}
options
=
$
.
extend
({},
this
.
getDefaults
(),
this
.
$element
.
data
(),
options
)
Tooltip
.
prototype
.
getDelegateOptions
=
function
()
{
if
(
options
.
delay
&&
typeof
options
.
delay
==
'
number
'
)
{
var
options
=
{}
options
.
delay
=
{
var
defaults
=
this
.
getDefaults
()
show
:
options
.
delay
,
hide
:
options
.
delay
}
}
this
.
_options
&&
$
.
each
(
this
.
_options
,
function
(
key
,
value
)
{
return
options
if
(
defaults
[
key
]
!=
value
)
options
[
key
]
=
value
}
})
return
options
Tooltip
.
prototype
.
getDelegateOptions
=
function
()
{
}
var
options
=
{}
var
defaults
=
this
.
getDefaults
()
Tooltip
.
prototype
.
enter
=
function
(
obj
)
{
this
.
_options
&&
$
.
each
(
this
.
_options
,
function
(
key
,
value
)
{
var
self
=
obj
instanceof
this
.
constructor
?
if
(
defaults
[
key
]
!=
value
)
options
[
key
]
=
value
obj
:
$
(
obj
.
currentTarget
).
data
(
'
bs.
'
+
this
.
type
)
}
)
if
(
!
self
)
{
return
options
self
=
new
this
.
constructor
(
obj
.
currentTarget
,
this
.
getDelegateOptions
())
$
(
obj
.
currentTarget
).
data
(
'
bs.
'
+
this
.
type
,
self
)
}
}
clearTimeout
(
self
.
timeout
)
Tooltip
.
prototype
.
enter
=
function
(
obj
)
{
var
self
=
obj
instanceof
this
.
constructor
?
obj
:
$
(
obj
.
currentTarget
).
data
(
'
bs.
'
+
this
.
type
)
self
.
hoverState
=
'
in
'
if
(
!
self
)
{
self
=
new
this
.
constructor
(
obj
.
currentTarget
,
this
.
getDelegateOptions
())
$
(
obj
.
currentTarget
).
data
(
'
bs.
'
+
this
.
type
,
self
)
}
if
(
!
self
.
options
.
delay
||
!
self
.
options
.
delay
.
show
)
return
self
.
show
(
)
clearTimeout
(
self
.
timeout
)
self
.
timeout
=
setTimeout
(
function
()
{
self
.
hoverState
=
'
in
'
if
(
self
.
hoverState
==
'
in
'
)
self
.
show
()
},
self
.
options
.
delay
.
show
)
}
Tooltip
.
prototype
.
leave
=
function
(
obj
)
{
if
(
!
self
.
options
.
delay
||
!
self
.
options
.
delay
.
show
)
return
self
.
show
()
var
self
=
obj
instanceof
this
.
constructor
?
obj
:
$
(
obj
.
currentTarget
).
data
(
'
bs.
'
+
this
.
type
)
if
(
!
self
)
{
self
.
timeout
=
setTimeout
(
function
(
)
{
self
=
new
this
.
constructor
(
obj
.
currentTarget
,
this
.
getDelegateOptions
()
)
if
(
self
.
hoverState
==
'
in
'
)
self
.
show
(
)
$
(
obj
.
currentTarget
).
data
(
'
bs.
'
+
this
.
type
,
self
)
},
self
.
options
.
delay
.
show
)
}
}
clearTimeout
(
self
.
timeout
)
Tooltip
.
prototype
.
leave
=
function
(
obj
)
{
var
self
=
obj
instanceof
this
.
constructor
?
obj
:
$
(
obj
.
currentTarget
).
data
(
'
bs.
'
+
this
.
type
)
self
.
hoverState
=
'
out
'
if
(
!
self
)
{
self
=
new
this
.
constructor
(
obj
.
currentTarget
,
this
.
getDelegateOptions
())
$
(
obj
.
currentTarget
).
data
(
'
bs.
'
+
this
.
type
,
self
)
}
if
(
!
self
.
options
.
delay
||
!
self
.
options
.
delay
.
hide
)
return
self
.
hide
(
)
clearTimeout
(
self
.
timeout
)
self
.
timeout
=
setTimeout
(
function
()
{
self
.
hoverState
=
'
out
'
if
(
self
.
hoverState
==
'
out
'
)
self
.
hide
()
},
self
.
options
.
delay
.
hide
)
}
Tooltip
.
prototype
.
show
=
function
()
{
if
(
!
self
.
options
.
delay
||
!
self
.
options
.
delay
.
hide
)
return
self
.
hide
()
var
e
=
$
.
Event
(
'
show.bs.
'
+
this
.
type
)
if
(
this
.
hasContent
()
&&
this
.
enabled
)
{
self
.
timeout
=
setTimeout
(
function
()
{
this
.
$element
.
trigger
(
e
)
if
(
self
.
hoverState
==
'
out
'
)
self
.
hide
()
},
self
.
options
.
delay
.
hide
)
}
var
inDom
=
$
.
contains
(
document
.
documentElement
,
this
.
$element
[
0
])
Tooltip
.
prototype
.
show
=
function
()
{
if
(
e
.
isDefaultPrevented
()
||
!
inDom
)
return
var
e
=
$
.
Event
(
'
show.bs.
'
+
this
.
type
)
var
that
=
this
var
$tip
=
this
.
tip
()
if
(
this
.
hasContent
()
&&
this
.
enabled
)
{
this
.
$element
.
trigger
(
e
)
var
tipId
=
this
.
getUID
(
this
.
type
)
var
inDom
=
$
.
contains
(
document
.
documentElement
,
this
.
$element
[
0
])
if
(
e
.
isDefaultPrevented
()
||
!
inDom
)
return
var
that
=
this
this
.
setContent
()
var
$tip
=
this
.
tip
()
$tip
.
attr
(
'
id
'
,
tipId
)
this
.
$element
.
attr
(
'
aria-describedby
'
,
tipId
)
if
(
this
.
options
.
animation
)
$tip
.
addClass
(
'
fade
'
)
var
tipId
=
this
.
getUID
(
this
.
type
)
var
placement
=
typeof
this
.
options
.
placement
==
'
function
'
?
this
.
setContent
()
this
.
options
.
placement
.
call
(
this
,
$tip
[
0
],
this
.
$element
[
0
])
:
$tip
.
attr
(
'
id
'
,
tipId
)
this
.
options
.
placement
this
.
$element
.
attr
(
'
aria-describedby
'
,
tipId
)
var
autoToken
=
/
\s?
auto
?\s?
/i
if
(
this
.
options
.
animation
)
$tip
.
addClass
(
'
fade
'
)
var
autoPlace
=
autoToken
.
test
(
placement
)
if
(
autoPlace
)
placement
=
placement
.
replace
(
autoToken
,
''
)
||
'
top
'
$tip
var
placement
=
typeof
this
.
options
.
placement
==
'
function
'
?
.
detach
()
this
.
options
.
placement
.
call
(
this
,
$tip
[
0
],
this
.
$element
[
0
])
:
.
css
({
top
:
0
,
left
:
0
,
display
:
'
block
'
})
this
.
options
.
placement
.
addClass
(
placement
)
.
data
(
'
bs.
'
+
this
.
type
,
this
)
this
.
options
.
container
?
$tip
.
appendTo
(
this
.
options
.
container
)
:
$tip
.
insertAfter
(
this
.
$element
)
var
autoToken
=
/
\s?
auto
?\s?
/i
var
autoPlace
=
autoToken
.
test
(
placement
)
if
(
autoPlace
)
placement
=
placement
.
replace
(
autoToken
,
''
)
||
'
top
'
var
pos
=
this
.
getPosition
()
$tip
var
actualWidth
=
$tip
[
0
].
offsetWidth
.
detach
()
var
actualHeight
=
$tip
[
0
].
offsetHeight
.
css
({
top
:
0
,
left
:
0
,
display
:
'
block
'
})
.
addClass
(
placement
)
.
data
(
'
bs.
'
+
this
.
type
,
this
)
if
(
autoPlace
)
{
this
.
options
.
container
?
$tip
.
appendTo
(
this
.
options
.
container
)
:
$tip
.
insertAfter
(
this
.
$element
)
var
orgPlacement
=
placement
var
$parent
=
this
.
$element
.
parent
()
var
parentDim
=
this
.
getPosition
(
$parent
)
placement
=
placement
==
'
bottom
'
&&
pos
.
top
+
pos
.
height
+
actualHeight
-
parentDim
.
scroll
>
parentDim
.
height
?
'
top
'
:
var
pos
=
this
.
getPosition
()
placement
==
'
top
'
&&
pos
.
top
-
parentDim
.
scroll
-
actualHeight
<
0
?
'
bottom
'
:
var
actualWidth
=
$tip
[
0
].
offsetWidth
placement
==
'
right
'
&&
pos
.
right
+
actualWidth
>
parentDim
.
width
?
'
left
'
:
var
actualHeight
=
$tip
[
0
].
offsetHeight
placement
==
'
left
'
&&
pos
.
left
-
actualWidth
<
parentDim
.
left
?
'
right
'
:
placement
$tip
if
(
autoPlace
)
{
.
removeClass
(
orgPlacement
)
var
orgPlacement
=
placement
.
addClass
(
placement
)
var
$parent
=
this
.
$element
.
parent
(
)
}
var
parentDim
=
this
.
getPosition
(
$parent
)
var
calculatedOffset
=
this
.
getCalculatedOffset
(
placement
,
pos
,
actualWidth
,
actualHeight
)
placement
=
placement
==
'
bottom
'
&&
pos
.
top
+
pos
.
height
+
actualHeight
-
parentDim
.
scroll
>
parentDim
.
height
?
'
top
'
:
placement
==
'
top
'
&&
pos
.
top
-
parentDim
.
scroll
-
actualHeight
<
0
?
'
bottom
'
:
placement
==
'
right
'
&&
pos
.
right
+
actualWidth
>
parentDim
.
width
?
'
left
'
:
placement
==
'
left
'
&&
pos
.
left
-
actualWidth
<
parentDim
.
left
?
'
right
'
:
placement
this
.
applyPlacement
(
calculatedOffset
,
placement
)
$tip
this
.
hoverState
=
null
.
removeClass
(
orgPlacement
)
.
addClass
(
placement
)
}
var
complete
=
function
()
{
var
calculatedOffset
=
this
.
getCalculatedOffset
(
placement
,
pos
,
actualWidth
,
actualHeight
)
that
.
$element
.
trigger
(
'
shown.bs.
'
+
that
.
type
)
}
$
.
support
.
transition
&&
this
.
$tip
.
hasClass
(
'
fade
'
)
?
this
.
applyPlacement
(
calculatedOffset
,
placement
)
$tip
this
.
hoverState
=
null
.
one
(
'
bsTransitionEnd
'
,
complete
)
.
emulateTransitionEnd
(
150
)
:
var
complete
=
function
()
{
complete
()
that
.
$element
.
trigger
(
'
shown.bs.
'
+
that
.
type
)
}
}
}
$
.
support
.
transition
&&
this
.
$tip
.
hasClass
(
'
fade
'
)
?
Tooltip
.
prototype
.
applyPlacement
=
function
(
offset
,
placement
)
{
$tip
var
$tip
=
this
.
tip
()
.
one
(
'
bsTransitionEnd
'
,
complete
)
var
width
=
$tip
[
0
].
offsetWidth
.
emulateTransitionEnd
(
150
)
:
var
height
=
$tip
[
0
].
offsetHeight
complete
()
// 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
)
}
$tip
.
addClass
(
'
in
'
)
Tooltip
.
prototype
.
applyPlacement
=
function
(
offset
,
placement
)
{
var
$tip
=
this
.
tip
()
var
width
=
$tip
[
0
].
offsetWidth
var
height
=
$tip
[
0
].
offsetHeight
// check to see if placing tip in new offset caused the tip to resize itself
// manually read margins because getBoundingClientRect includes difference
var
actualWidth
=
$tip
[
0
].
offsetWidth
var
marginTop
=
parseInt
(
$tip
.
css
(
'
margin-top
'
),
10
)
var
actualHeight
=
$tip
[
0
].
offsetHeight
var
marginLeft
=
parseInt
(
$tip
.
css
(
'
margin-left
'
),
10
)
if
(
placement
==
'
top
'
&&
actualHeight
!=
height
)
{
// we must check for NaN for ie 8/9
offset
.
top
=
offset
.
top
+
height
-
actualHeight
if
(
isNaN
(
marginTop
))
marginTop
=
0
}
if
(
isNaN
(
marginLeft
))
marginLeft
=
0
var
delta
=
this
.
getViewportAdjustedDelta
(
placement
,
offset
,
actualWidth
,
actualHeight
)
offset
.
top
=
offset
.
top
+
marginTop
offset
.
left
=
offset
.
left
+
marginLeft
if
(
delta
.
left
)
offset
.
left
+=
delta
.
left
// $.fn.offset doesn't round pixel values
else
offset
.
top
+=
delta
.
top
// 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
)
var
arrowDelta
=
delta
.
left
?
delta
.
left
*
2
-
width
+
actualWidth
:
delta
.
top
*
2
-
height
+
actualHeight
$tip
.
addClass
(
'
in
'
)
var
arrowPosition
=
delta
.
left
?
'
left
'
:
'
top
'
var
arrowOffsetPosition
=
delta
.
left
?
'
offsetWidth
'
:
'
offsetHeight
'
$tip
.
offset
(
offset
)
// check to see if placing tip in new offset caused the tip to resize itself
this
.
replaceArrow
(
arrowDelta
,
$tip
[
0
][
arrowOffsetPosition
],
arrowPosition
)
var
actualWidth
=
$tip
[
0
].
offsetWidth
}
var
actualHeight
=
$tip
[
0
].
offsetHeight
Tooltip
.
prototype
.
replaceArrow
=
function
(
delta
,
dimension
,
position
)
{
if
(
placement
==
'
top
'
&&
actualHeight
!=
height
)
{
this
.
arrow
().
css
(
position
,
delta
?
(
50
*
(
1
-
delta
/
dimension
)
+
'
%
'
)
:
''
)
offset
.
top
=
offset
.
top
+
height
-
actualHeight
}
}
Tooltip
.
prototype
.
setContent
=
function
()
{
var
delta
=
this
.
getViewportAdjustedDelta
(
placement
,
offset
,
actualWidth
,
actualHeight
)
var
$tip
=
this
.
tip
()
var
title
=
this
.
getTitle
()
$tip
.
find
(
'
.tooltip-inner
'
)[
this
.
options
.
html
?
'
html
'
:
'
text
'
](
title
)
if
(
delta
.
left
)
offset
.
left
+=
delta
.
left
$tip
.
removeClass
(
'
fade in top bottom left right
'
)
else
offset
.
top
+=
delta
.
top
}
Tooltip
.
prototype
.
hide
=
function
()
{
var
arrowDelta
=
delta
.
left
?
delta
.
left
*
2
-
width
+
actualWidth
:
delta
.
top
*
2
-
height
+
actualHeight
var
that
=
this
var
arrowPosition
=
delta
.
left
?
'
left
'
:
'
top
'
var
$tip
=
this
.
tip
()
var
arrowOffsetPosition
=
delta
.
left
?
'
offsetWidth
'
:
'
offsetHeight
'
var
e
=
$
.
Event
(
'
hide.bs.
'
+
this
.
type
)
this
.
$element
.
removeAttr
(
'
aria-describedby
'
)
$tip
.
offset
(
offset
)
this
.
replaceArrow
(
arrowDelta
,
$tip
[
0
][
arrowOffsetPosition
],
arrowPosition
)
}
function
complete
()
{
Tooltip
.
prototype
.
replaceArrow
=
function
(
delta
,
dimension
,
position
)
{
if
(
that
.
hoverState
!=
'
in
'
)
$tip
.
detach
()
this
.
arrow
().
css
(
position
,
delta
?
(
50
*
(
1
-
delta
/
dimension
)
+
'
%
'
)
:
''
)
that
.
$element
.
trigger
(
'
hidden.bs.
'
+
that
.
type
)
}
}
this
.
$element
.
trigger
(
e
)
Tooltip
.
prototype
.
setContent
=
function
()
{
var
$tip
=
this
.
tip
()
var
title
=
this
.
getTitle
()
if
(
e
.
isDefaultPrevented
())
return
$tip
.
find
(
'
.tooltip-inner
'
)[
this
.
options
.
html
?
'
html
'
:
'
text
'
](
title
)
$tip
.
removeClass
(
'
fade in top bottom left right
'
)
}
$tip
.
removeClass
(
'
in
'
)
Tooltip
.
prototype
.
hide
=
function
()
{
var
that
=
this
var
$tip
=
this
.
tip
()
var
e
=
$
.
Event
(
'
hide.bs.
'
+
this
.
type
)
this
.
$element
.
removeAttr
(
'
aria-describedby
'
)
function
complete
()
{
if
(
that
.
hoverState
!=
'
in
'
)
$tip
.
detach
()
that
.
$element
.
trigger
(
'
hidden.bs.
'
+
that
.
type
)
}
$
.
support
.
transition
&&
this
.
$tip
.
hasClass
(
'
fade
'
)
?
this
.
$element
.
trigger
(
e
)
$tip
.
one
(
'
bsTransitionEnd
'
,
complete
)
if
(
e
.
isDefaultPrevented
())
return
.
emulateTransitionEnd
(
150
)
:
complete
(
)
$tip
.
removeClass
(
'
in
'
)
this
.
hoverState
=
null
$
.
support
.
transition
&&
this
.
$tip
.
hasClass
(
'
fade
'
)
?
$tip
.
one
(
'
bsTransitionEnd
'
,
complete
)
.
emulateTransitionEnd
(
150
)
:
complete
()
return
this
this
.
hoverState
=
null
}
Tooltip
.
prototype
.
fixTitle
=
function
()
{
return
this
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
.
fixTitle
=
function
()
{
Tooltip
.
prototype
.
hasContent
=
function
()
{
var
$e
=
this
.
$element
return
this
.
getTitle
()
if
(
$e
.
attr
(
'
title
'
)
||
typeof
(
$e
.
attr
(
'
data-original-title
'
))
!=
'
string
'
)
{
}
$e
.
attr
(
'
data-original-title
'
,
$e
.
attr
(
'
title
'
)
||
''
).
attr
(
'
title
'
,
''
)
Tooltip
.
prototype
.
getPosition
=
function
(
$element
)
{
$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
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
.
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
.
hasContent
=
function
()
{
}
return
this
.
getTitle
()
}
Tooltip
.
prototype
.
getTitle
=
function
()
{
Tooltip
.
prototype
.
getPosition
=
function
(
$element
)
{
var
title
$element
=
$element
||
this
.
$element
var
$e
=
this
.
$element
var
el
=
$element
[
0
]
var
o
=
this
.
options
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
())
}
title
=
$e
.
attr
(
'
data-original-title
'
)
Tooltip
.
prototype
.
getCalculatedOffset
=
function
(
placement
,
pos
,
actualWidth
,
actualHeight
)
{
||
(
typeof
o
.
title
==
'
function
'
?
o
.
title
.
call
(
$e
[
0
])
:
o
.
title
)
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
}
return
title
}
}
Tooltip
.
prototype
.
getUID
=
function
(
prefix
)
{
Tooltip
.
prototype
.
getViewportAdjustedDelta
=
function
(
placement
,
pos
,
actualWidth
,
actualHeight
)
{
do
prefix
+=
~~
(
Math
.
random
()
*
1000000
)
var
delta
=
{
top
:
0
,
left
:
0
}
while
(
document
.
getElementById
(
prefix
))
if
(
!
this
.
$viewport
)
return
delta
return
prefix
}
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
}
}
Tooltip
.
prototype
.
tip
=
function
()
{
return
delta
return
(
this
.
$tip
=
this
.
$tip
||
$
(
this
.
options
.
template
))
}
}
Tooltip
.
prototype
.
getTitle
=
function
()
{
var
title
var
$e
=
this
.
$element
var
o
=
this
.
options
Tooltip
.
prototype
.
arrow
=
function
()
{
title
=
$e
.
attr
(
'
data-original-title
'
)
return
(
this
.
$arrow
=
this
.
$arrow
||
this
.
tip
().
find
(
'
.tooltip-arrow
'
))
||
(
typeof
o
.
title
==
'
function
'
?
o
.
title
.
call
(
$e
[
0
])
:
o
.
title
)
}
Tooltip
.
prototype
.
validate
=
function
()
{
return
title
if
(
!
this
.
$element
[
0
].
parentNode
)
{
this
.
hide
()
this
.
$element
=
null
this
.
options
=
null
}
}
}
Tooltip
.
prototype
.
enable
=
function
()
{
Tooltip
.
prototype
.
getUID
=
function
(
prefix
)
{
this
.
enabled
=
true
do
prefix
+=
~~
(
Math
.
random
()
*
1000000
)
}
while
(
document
.
getElementById
(
prefix
))
return
prefix
}
Tooltip
.
prototype
.
disable
=
function
()
{
Tooltip
.
prototype
.
tip
=
function
()
{
this
.
enabled
=
false
return
(
this
.
$tip
=
this
.
$tip
||
$
(
this
.
options
.
template
))
}
}
Tooltip
.
prototype
.
toggleEnabled
=
function
()
{
Tooltip
.
prototype
.
arrow
=
function
()
{
this
.
enabled
=
!
this
.
enabled
return
(
this
.
$arrow
=
this
.
$arrow
||
this
.
tip
().
find
(
'
.tooltip-arrow
'
))
}
}
Tooltip
.
prototype
.
toggle
=
function
(
e
)
{
Tooltip
.
prototype
.
validate
=
function
()
{
var
self
=
this
if
(
!
this
.
$element
[
0
].
parentNode
)
{
if
(
e
)
{
this
.
hide
()
self
=
$
(
e
.
currentTarget
).
data
(
'
bs.
'
+
this
.
type
)
this
.
$element
=
null
if
(
!
self
)
{
this
.
options
=
null
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
.
enable
=
function
()
{
}
this
.
enabled
=
true
}
Tooltip
.
prototype
.
destroy
=
function
()
{
Tooltip
.
prototype
.
disable
=
function
()
{
clearTimeout
(
this
.
timeout
)
this
.
enabled
=
false
this
.
hide
().
$element
.
off
(
'
.
'
+
this
.
type
).
removeData
(
'
bs.
'
+
this
.
type
)
}
}
Tooltip
.
prototype
.
toggleEnabled
=
function
()
{
this
.
enabled
=
!
this
.
enabled
}
// TOOLTIP PLUGIN DEFINITION
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
)
}
}
function
Plugin
(
option
)
{
self
.
tip
().
hasClass
(
'
in
'
)
?
self
.
leave
(
self
)
:
self
.
enter
(
self
)
return
this
.
each
(
function
()
{
}
var
$this
=
$
(
this
)
var
data
=
$this
.
data
(
'
bs.tooltip
'
)
Tooltip
.
prototype
.
destroy
=
function
()
{
var
options
=
typeof
option
==
'
object
'
&&
option
clearTimeout
(
this
.
timeout
)
this
.
hide
().
$element
.
off
(
'
.
'
+
this
.
type
).
removeData
(
'
bs.
'
+
this
.
type
)
}
if
(
!
data
&&
option
==
'
destroy
'
)
return
if
(
!
data
)
$this
.
data
(
'
bs.tooltip
'
,
(
data
=
new
Tooltip
(
this
,
options
)))
if
(
typeof
option
==
'
string
'
)
data
[
option
]()
})
}
var
old
=
$
.
fn
.
tooltip
// TOOLTIP PLUGIN DEFINITION
// =========================
$
.
fn
.
tooltip
=
Plugin
function
Plugin
(
option
)
{
$
.
fn
.
tooltip
.
Constructor
=
Tooltip
return
this
.
each
(
function
()
{
var
$this
=
$
(
this
)
var
data
=
$this
.
data
(
'
bs.tooltip
'
)
var
options
=
typeof
option
==
'
object
'
&&
option
if
(
!
data
&&
option
==
'
destroy
'
)
return
if
(
!
data
)
$this
.
data
(
'
bs.tooltip
'
,
(
data
=
new
Tooltip
(
this
,
options
)))
if
(
typeof
option
==
'
string
'
)
data
[
option
]()
})
}
var
old
=
$
.
fn
.
tooltip
// TOOLTIP NO CONFLICT
$
.
fn
.
tooltip
=
Plugin
// ===================
$
.
fn
.
tooltip
.
Constructor
=
Tooltip
// TOOLTIP NO CONFLICT
// ===================
$
.
fn
.
tooltip
.
noConflict
=
function
()
{
$
.
fn
.
tooltip
=
old
return
this
}
$
.
fn
.
tooltip
.
noConflict
=
function
()
{
})
$
.
fn
.
tooltip
=
old
return
this
}
});
}
(
);
js/transition.js
View file @
2b302f69
...
@@ -7,57 +7,59 @@
...
@@ -7,57 +7,59 @@
* ======================================================================== */
* ======================================================================== */
(
function
(
o_o
)
{
+
function
()
{
'
use strict
'
;
typeof
define
===
'
function
'
&&
define
.
amd
?
define
([
'
jquery
'
],
o_o
)
:
typeof
exports
===
'
object
'
?
o_o
(
require
(
'
jquery
'
))
:
o_o
(
jQuery
)
})(
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
(
$
)
{
// CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)
// CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)
// ============================================================
// ============================================================
function
transitionEnd
()
{
function
transitionEnd
()
{
var
el
=
document
.
createElement
(
'
bootstrap
'
)
var
el
=
document
.
createElement
(
'
bootstrap
'
)
var
transEndEventNames
=
{
var
transEndEventNames
=
{
WebkitTransition
:
'
webkitTransitionEnd
'
,
WebkitTransition
:
'
webkitTransitionEnd
'
,
MozTransition
:
'
transitionend
'
,
MozTransition
:
'
transitionend
'
,
OTransition
:
'
oTransitionEnd otransitionend
'
,
OTransition
:
'
oTransitionEnd otransitionend
'
,
transition
:
'
transitionend
'
transition
:
'
transitionend
'
}
}
for
(
var
name
in
transEndEventNames
)
{
for
(
var
name
in
transEndEventNames
)
{
if
(
el
.
style
[
name
]
!==
undefined
)
{
if
(
el
.
style
[
name
]
!==
undefined
)
{
return
{
end
:
transEndEventNames
[
name
]
}
return
{
end
:
transEndEventNames
[
name
]
}
}
}
}
return
false
// explicit for ie8 ( ._.)
}
}
return
false
// explicit for ie8 ( ._.)
// http://blog.alexmaccaw.com/css-transitions
}
$
.
fn
.
emulateTransitionEnd
=
function
(
duration
)
{
var
called
=
false
// http://blog.alexmaccaw.com/css-transitions
var
$el
=
this
$
.
fn
.
emulateTransitionEnd
=
function
(
duration
)
{
$
(
this
).
one
(
'
bsTransitionEnd
'
,
function
()
{
called
=
true
})
var
called
=
false
var
callback
=
function
()
{
if
(
!
called
)
$
(
$el
).
trigger
(
$
.
support
.
transition
.
end
)
}
var
$el
=
this
setTimeout
(
callback
,
duration
)
$
(
this
).
one
(
'
bsTransitionEnd
'
,
function
()
{
called
=
true
})
return
this
var
callback
=
function
()
{
if
(
!
called
)
$
(
$el
).
trigger
(
$
.
support
.
transition
.
end
)
}
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
)
}
}
}
$
(
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
)
}
}
})
})
})
});
}
(
);
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