Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
O
OpnSense
Project
Project
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
Kulya
OpnSense
Commits
1e0365fd
Commit
1e0365fd
authored
Jan 22, 2016
by
Ad Schellevis
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
(ui) add bootstrap3-typeahead to core
parent
fb059fa7
Changes
2
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
485 additions
and
0 deletions
+485
-0
bootstrap3-typeahead.js
src/opnsense/www/js/bootstrap3-typeahead.js
+484
-0
bootstrap3-typeahead.min.js
src/opnsense/www/js/bootstrap3-typeahead.min.js
+1
-0
No files found.
src/opnsense/www/js/bootstrap3-typeahead.js
0 → 100644
View file @
1e0365fd
This diff is collapsed.
Click to expand it.
src/opnsense/www/js/bootstrap3-typeahead.min.js
0 → 100644
View file @
1e0365fd
!
function
(
root
,
factory
){
"
use strict
"
;
"
undefined
"
!=
typeof
module
&&
module
.
exports
?
module
.
exports
=
factory
(
require
(
"
jquery
"
)):
"
function
"
==
typeof
define
&&
define
.
amd
?
define
([
"
jquery
"
],
function
(
$
){
return
factory
(
$
)}):
factory
(
root
.
jQuery
)}(
this
,
function
(
$
){
"
use strict
"
;
var
Typeahead
=
function
(
element
,
options
){
this
.
$element
=
$
(
element
),
this
.
options
=
$
.
extend
({},
$
.
fn
.
typeahead
.
defaults
,
options
),
this
.
matcher
=
this
.
options
.
matcher
||
this
.
matcher
,
this
.
sorter
=
this
.
options
.
sorter
||
this
.
sorter
,
this
.
select
=
this
.
options
.
select
||
this
.
select
,
this
.
autoSelect
=
"
boolean
"
==
typeof
this
.
options
.
autoSelect
?
this
.
options
.
autoSelect
:
!
0
,
this
.
highlighter
=
this
.
options
.
highlighter
||
this
.
highlighter
,
this
.
render
=
this
.
options
.
render
||
this
.
render
,
this
.
updater
=
this
.
options
.
updater
||
this
.
updater
,
this
.
displayText
=
this
.
options
.
displayText
||
this
.
displayText
,
this
.
source
=
this
.
options
.
source
,
this
.
delay
=
this
.
options
.
delay
,
this
.
$menu
=
$
(
this
.
options
.
menu
),
this
.
$appendTo
=
this
.
options
.
appendTo
?
$
(
this
.
options
.
appendTo
):
null
,
this
.
shown
=!
1
,
this
.
listen
(),
this
.
showHintOnFocus
=
"
boolean
"
==
typeof
this
.
options
.
showHintOnFocus
?
this
.
options
.
showHintOnFocus
:
!
1
,
this
.
afterSelect
=
this
.
options
.
afterSelect
,
this
.
addItem
=!
1
};
Typeahead
.
prototype
=
{
constructor
:
Typeahead
,
select
:
function
(){
var
val
=
this
.
$menu
.
find
(
"
.active
"
).
data
(
"
value
"
);
if
(
this
.
$element
.
data
(
"
active
"
,
val
),
this
.
autoSelect
||
val
){
var
newVal
=
this
.
updater
(
val
);
newVal
||
(
newVal
=
""
),
this
.
$element
.
val
(
this
.
displayText
(
newVal
)
||
newVal
).
change
(),
this
.
afterSelect
(
newVal
)}
return
this
.
hide
()},
updater
:
function
(
item
){
return
item
},
setSource
:
function
(
source
){
this
.
source
=
source
},
show
:
function
(){
var
scrollHeight
,
pos
=
$
.
extend
({},
this
.
$element
.
position
(),{
height
:
this
.
$element
[
0
].
offsetHeight
});
scrollHeight
=
"
function
"
==
typeof
this
.
options
.
scrollHeight
?
this
.
options
.
scrollHeight
.
call
():
this
.
options
.
scrollHeight
;
var
element
;
return
element
=
this
.
shown
?
this
.
$menu
:
this
.
$appendTo
?
this
.
$menu
.
appendTo
(
this
.
$appendTo
):
this
.
$menu
.
insertAfter
(
this
.
$element
),
element
.
css
({
top
:
pos
.
top
+
pos
.
height
+
scrollHeight
,
left
:
pos
.
left
}).
show
(),
this
.
shown
=!
0
,
this
},
hide
:
function
(){
return
this
.
$menu
.
hide
(),
this
.
shown
=!
1
,
this
},
lookup
:
function
(
query
){
if
(
"
undefined
"
!=
typeof
query
&&
null
!==
query
?
this
.
query
=
query
:
this
.
query
=
this
.
$element
.
val
()
||
""
,
this
.
query
.
length
<
this
.
options
.
minLength
)
return
this
.
shown
?
this
.
hide
():
this
;
var
worker
=
$
.
proxy
(
function
(){
$
.
isFunction
(
this
.
source
)?
this
.
source
(
this
.
query
,
$
.
proxy
(
this
.
process
,
this
)):
this
.
source
&&
this
.
process
(
this
.
source
)},
this
);
clearTimeout
(
this
.
lookupWorker
),
this
.
lookupWorker
=
setTimeout
(
worker
,
this
.
delay
)},
process
:
function
(
items
){
var
that
=
this
;
return
items
=
$
.
grep
(
items
,
function
(
item
){
return
that
.
matcher
(
item
)}),
items
=
this
.
sorter
(
items
),
items
.
length
||
this
.
options
.
addItem
?(
items
.
length
>
0
?
this
.
$element
.
data
(
"
active
"
,
items
[
0
]):
this
.
$element
.
data
(
"
active
"
,
null
),
this
.
options
.
addItem
&&
items
.
push
(
this
.
options
.
addItem
),
"
all
"
==
this
.
options
.
items
?
this
.
render
(
items
).
show
():
this
.
render
(
items
.
slice
(
0
,
this
.
options
.
items
)).
show
()):
this
.
shown
?
this
.
hide
():
this
},
matcher
:
function
(
item
){
var
it
=
this
.
displayText
(
item
);
return
~
it
.
toLowerCase
().
indexOf
(
this
.
query
.
toLowerCase
())},
sorter
:
function
(
items
){
for
(
var
item
,
beginswith
=
[],
caseSensitive
=
[],
caseInsensitive
=
[];
item
=
items
.
shift
();){
var
it
=
this
.
displayText
(
item
);
it
.
toLowerCase
().
indexOf
(
this
.
query
.
toLowerCase
())?
~
it
.
indexOf
(
this
.
query
)?
caseSensitive
.
push
(
item
):
caseInsensitive
.
push
(
item
):
beginswith
.
push
(
item
)}
return
beginswith
.
concat
(
caseSensitive
,
caseInsensitive
)},
highlighter
:
function
(
item
){
var
len
,
leftPart
,
middlePart
,
rightPart
,
strong
,
html
=
$
(
"
<div></div>
"
),
query
=
this
.
query
,
i
=
item
.
toLowerCase
().
indexOf
(
query
.
toLowerCase
());
if
(
len
=
query
.
length
,
0
===
len
)
return
html
.
text
(
item
).
html
();
for
(;
i
>-
1
;)
leftPart
=
item
.
substr
(
0
,
i
),
middlePart
=
item
.
substr
(
i
,
len
),
rightPart
=
item
.
substr
(
i
+
len
),
strong
=
$
(
"
<strong></strong>
"
).
text
(
middlePart
),
html
.
append
(
document
.
createTextNode
(
leftPart
)).
append
(
strong
),
item
=
rightPart
,
i
=
item
.
toLowerCase
().
indexOf
(
query
.
toLowerCase
());
return
html
.
append
(
document
.
createTextNode
(
item
)).
html
()},
render
:
function
(
items
){
var
that
=
this
,
self
=
this
,
activeFound
=!
1
;
return
items
=
$
(
items
).
map
(
function
(
i
,
item
){
var
text
=
self
.
displayText
(
item
);
return
i
=
$
(
that
.
options
.
item
).
data
(
"
value
"
,
item
),
i
.
find
(
"
a
"
).
html
(
that
.
highlighter
(
text
)),
text
==
self
.
$element
.
val
()
&&
(
i
.
addClass
(
"
active
"
),
self
.
$element
.
data
(
"
active
"
,
item
),
activeFound
=!
0
),
i
[
0
]}),
this
.
autoSelect
&&!
activeFound
&&
(
items
.
first
().
addClass
(
"
active
"
),
this
.
$element
.
data
(
"
active
"
,
items
.
first
().
data
(
"
value
"
))),
this
.
$menu
.
html
(
items
),
this
},
displayText
:
function
(
item
){
return
"
undefined
"
!=
typeof
item
&&
"
undefined
"
!=
typeof
item
.
name
&&
item
.
name
||
item
},
next
:
function
(
event
){
var
active
=
this
.
$menu
.
find
(
"
.active
"
).
removeClass
(
"
active
"
),
next
=
active
.
next
();
next
.
length
||
(
next
=
$
(
this
.
$menu
.
find
(
"
li
"
)[
0
])),
next
.
addClass
(
"
active
"
)},
prev
:
function
(
event
){
var
active
=
this
.
$menu
.
find
(
"
.active
"
).
removeClass
(
"
active
"
),
prev
=
active
.
prev
();
prev
.
length
||
(
prev
=
this
.
$menu
.
find
(
"
li
"
).
last
()),
prev
.
addClass
(
"
active
"
)},
listen
:
function
(){
this
.
$element
.
on
(
"
focus
"
,
$
.
proxy
(
this
.
focus
,
this
)).
on
(
"
blur
"
,
$
.
proxy
(
this
.
blur
,
this
)).
on
(
"
keypress
"
,
$
.
proxy
(
this
.
keypress
,
this
)).
on
(
"
keyup
"
,
$
.
proxy
(
this
.
keyup
,
this
)),
this
.
eventSupported
(
"
keydown
"
)
&&
this
.
$element
.
on
(
"
keydown
"
,
$
.
proxy
(
this
.
keydown
,
this
)),
this
.
$menu
.
on
(
"
click
"
,
$
.
proxy
(
this
.
click
,
this
)).
on
(
"
mouseenter
"
,
"
li
"
,
$
.
proxy
(
this
.
mouseenter
,
this
)).
on
(
"
mouseleave
"
,
"
li
"
,
$
.
proxy
(
this
.
mouseleave
,
this
))},
destroy
:
function
(){
this
.
$element
.
data
(
"
typeahead
"
,
null
),
this
.
$element
.
data
(
"
active
"
,
null
),
this
.
$element
.
off
(
"
focus
"
).
off
(
"
blur
"
).
off
(
"
keypress
"
).
off
(
"
keyup
"
),
this
.
eventSupported
(
"
keydown
"
)
&&
this
.
$element
.
off
(
"
keydown
"
),
this
.
$menu
.
remove
()},
eventSupported
:
function
(
eventName
){
var
isSupported
=
eventName
in
this
.
$element
;
return
isSupported
||
(
this
.
$element
.
setAttribute
(
eventName
,
"
return;
"
),
isSupported
=
"
function
"
==
typeof
this
.
$element
[
eventName
]),
isSupported
},
move
:
function
(
e
){
if
(
this
.
shown
)
switch
(
e
.
keyCode
){
case
9
:
case
13
:
case
27
:
e
.
preventDefault
();
break
;
case
38
:
if
(
e
.
shiftKey
)
return
;
e
.
preventDefault
(),
this
.
prev
();
break
;
case
40
:
if
(
e
.
shiftKey
)
return
;
e
.
preventDefault
(),
this
.
next
()}},
keydown
:
function
(
e
){
this
.
suppressKeyPressRepeat
=~
$
.
inArray
(
e
.
keyCode
,[
40
,
38
,
9
,
13
,
27
]),
this
.
shown
||
40
!=
e
.
keyCode
?
this
.
move
(
e
):
this
.
lookup
()},
keypress
:
function
(
e
){
this
.
suppressKeyPressRepeat
||
this
.
move
(
e
)},
keyup
:
function
(
e
){
switch
(
e
.
keyCode
){
case
40
:
case
38
:
case
16
:
case
17
:
case
18
:
break
;
case
9
:
case
13
:
if
(
!
this
.
shown
)
return
;
this
.
select
();
break
;
case
27
:
if
(
!
this
.
shown
)
return
;
this
.
hide
();
break
;
default
:
this
.
lookup
()}
e
.
preventDefault
()},
focus
:
function
(
e
){
this
.
focused
||
(
this
.
focused
=!
0
,
this
.
options
.
showHintOnFocus
&&
this
.
lookup
(
""
))},
blur
:
function
(
e
){
this
.
focused
=!
1
,
!
this
.
mousedover
&&
this
.
shown
&&
this
.
hide
()},
click
:
function
(
e
){
e
.
preventDefault
(),
this
.
select
(),
this
.
$element
.
focus
()},
mouseenter
:
function
(
e
){
this
.
mousedover
=!
0
,
this
.
$menu
.
find
(
"
.active
"
).
removeClass
(
"
active
"
),
$
(
e
.
currentTarget
).
addClass
(
"
active
"
)},
mouseleave
:
function
(
e
){
this
.
mousedover
=!
1
,
!
this
.
focused
&&
this
.
shown
&&
this
.
hide
()}};
var
old
=
$
.
fn
.
typeahead
;
$
.
fn
.
typeahead
=
function
(
option
){
var
arg
=
arguments
;
return
"
string
"
==
typeof
option
&&
"
getActive
"
==
option
?
this
.
data
(
"
active
"
):
this
.
each
(
function
(){
var
$this
=
$
(
this
),
data
=
$this
.
data
(
"
typeahead
"
),
options
=
"
object
"
==
typeof
option
&&
option
;
data
||
$this
.
data
(
"
typeahead
"
,
data
=
new
Typeahead
(
this
,
options
)),
"
string
"
==
typeof
option
&&
(
arg
.
length
>
1
?
data
[
option
].
apply
(
data
,
Array
.
prototype
.
slice
.
call
(
arg
,
1
)):
data
[
option
]())})},
$
.
fn
.
typeahead
.
defaults
=
{
source
:[],
items
:
8
,
menu
:
'
<ul class="typeahead dropdown-menu" role="listbox"></ul>
'
,
item
:
'
<li><a class="dropdown-item" href="#" role="option"></a></li>
'
,
minLength
:
1
,
scrollHeight
:
0
,
autoSelect
:
!
0
,
afterSelect
:
$
.
noop
,
addItem
:
!
1
,
delay
:
0
},
$
.
fn
.
typeahead
.
Constructor
=
Typeahead
,
$
.
fn
.
typeahead
.
noConflict
=
function
(){
return
$
.
fn
.
typeahead
=
old
,
this
},
$
(
document
).
on
(
"
focus.typeahead.data-api
"
,
'
[data-provide="typeahead"]
'
,
function
(
e
){
var
$this
=
$
(
this
);
$this
.
data
(
"
typeahead
"
)
||
$this
.
typeahead
(
$this
.
data
())})});
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