Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
2b319d04
Commit
2b319d04
authored
May 17, 2012
by
mikkyhouse
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #828 from CedricGatay/feature/chosen_0.9.8_searchContains
Chosen 0.9.8 + Autocomplete contains
parents
9cd8f7b0
0bdcf2e1
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
226 additions
and
165 deletions
+226
-165
app/assets/javascripts/application.js
app/assets/javascripts/application.js
+10
-0
vendor/assets/javascripts/chosen.js
vendor/assets/javascripts/chosen.js
+216
-165
No files found.
app/assets/javascripts/application.js
View file @
2b319d04
...
...
@@ -79,3 +79,13 @@ function showDiff(link) {
$
(
link
).
next
(
'
table
'
).
show
();
$
(
link
).
remove
();
}
(
function
(
$
){
var
_chosen
=
$
.
fn
.
chosen
;
$
.
fn
.
extend
({
chosen
:
function
(
options
)
{
var
default_options
=
{
'
search_contains
'
:
'
true
'
};
$
.
extend
(
default_options
,
options
);
return
_chosen
.
apply
(
this
,
[
default_options
]);
}})
})(
jQuery
);
vendor/assets/javascripts/chosen.js
View file @
2b319d04
// Chosen, a Select Box Enhancer for jQuery and Protoype
// by Patrick Filler for Harvest, http://getharvest.com
//
// Version 0.9.
5
// Version 0.9.
8
// Full source at https://github.com/harvesthq/chosen
// Copyright (c) 2011 Harvest http://getharvest.com
...
...
@@ -9,11 +9,14 @@
// This file is generated by `cake build`, do not edit it by hand.
(
function
()
{
var
SelectParser
;
SelectParser
=
(
function
()
{
function
SelectParser
()
{
this
.
options_index
=
0
;
this
.
parsed
=
[];
}
SelectParser
.
prototype
.
add_node
=
function
(
child
)
{
if
(
child
.
nodeName
===
"
OPTGROUP
"
)
{
return
this
.
add_group
(
child
);
...
...
@@ -21,6 +24,7 @@
return
this
.
add_option
(
child
);
}
};
SelectParser
.
prototype
.
add_group
=
function
(
group
)
{
var
group_position
,
option
,
_i
,
_len
,
_ref
,
_results
;
group_position
=
this
.
parsed
.
length
;
...
...
@@ -39,12 +43,11 @@
}
return
_results
;
};
SelectParser
.
prototype
.
add_option
=
function
(
option
,
group_position
,
group_disabled
)
{
if
(
option
.
nodeName
===
"
OPTION
"
)
{
if
(
option
.
text
!==
""
)
{
if
(
group_position
!=
null
)
{
this
.
parsed
[
group_position
].
children
+=
1
;
}
if
(
group_position
!=
null
)
this
.
parsed
[
group_position
].
children
+=
1
;
this
.
parsed
.
push
({
array_index
:
this
.
parsed
.
length
,
options_index
:
this
.
options_index
,
...
...
@@ -67,8 +70,11 @@
return
this
.
options_index
+=
1
;
}
};
return
SelectParser
;
})();
SelectParser
.
select_to_array
=
function
(
select
)
{
var
child
,
parser
,
_i
,
_len
,
_ref
;
parser
=
new
SelectParser
();
...
...
@@ -79,17 +85,23 @@
}
return
parser
.
parsed
;
};
this
.
SelectParser
=
SelectParser
;
}).
call
(
this
);
/*
Chosen source: generate output using 'cake build'
Copyright (c) 2011 by Harvest
*/
(
function
()
{
/*
Chosen source: generate output using 'cake build'
Copyright (c) 2011 by Harvest
*/
var
AbstractChosen
,
root
;
var
__bind
=
function
(
fn
,
me
){
return
function
(){
return
fn
.
apply
(
me
,
arguments
);
};
};
root
=
this
;
AbstractChosen
=
(
function
()
{
function
AbstractChosen
(
form_field
,
options
)
{
this
.
form_field
=
form_field
;
this
.
options
=
options
!=
null
?
options
:
{};
...
...
@@ -101,69 +113,75 @@
this
.
register_observers
();
this
.
finish_setup
();
}
AbstractChosen
.
prototype
.
set_default_values
=
function
()
{
this
.
click_test_action
=
__bind
(
function
(
evt
)
{
return
this
.
test_active_click
(
evt
);
},
this
);
this
.
activate_action
=
__bind
(
function
(
evt
)
{
return
this
.
activate_field
(
evt
);
},
this
);
var
_this
=
this
;
this
.
click_test_action
=
function
(
evt
)
{
return
_this
.
test_active_click
(
evt
);
};
this
.
activate_action
=
function
(
evt
)
{
return
_this
.
activate_field
(
evt
);
};
this
.
active_field
=
false
;
this
.
mouse_on_container
=
false
;
this
.
results_showing
=
false
;
this
.
result_highlighted
=
null
;
this
.
result_single_selected
=
null
;
this
.
allow_single_deselect
=
(
this
.
options
.
allow_single_deselect
!=
null
)
&&
this
.
form_field
.
options
[
0
].
text
===
""
?
this
.
options
.
allow_single_deselect
:
false
;
this
.
allow_single_deselect
=
(
this
.
options
.
allow_single_deselect
!=
null
)
&&
(
this
.
form_field
.
options
[
0
]
!=
null
)
&&
this
.
form_field
.
options
[
0
].
text
===
""
?
this
.
options
.
allow_single_deselect
:
false
;
this
.
disable_search_threshold
=
this
.
options
.
disable_search_threshold
||
0
;
this
.
search_contains
=
this
.
options
.
search_contains
||
false
;
this
.
choices
=
0
;
return
this
.
results_none_found
=
this
.
options
.
no_results_text
||
"
No results match
"
;
};
AbstractChosen
.
prototype
.
mouse_enter
=
function
()
{
return
this
.
mouse_on_container
=
true
;
};
AbstractChosen
.
prototype
.
mouse_leave
=
function
()
{
return
this
.
mouse_on_container
=
false
;
};
AbstractChosen
.
prototype
.
input_focus
=
function
(
evt
)
{
var
_this
=
this
;
if
(
!
this
.
active_field
)
{
return
setTimeout
((
__bind
(
function
()
{
return
this
.
container_mousedown
();
}
,
this
)
),
50
);
return
setTimeout
((
function
()
{
return
_
this
.
container_mousedown
();
}),
50
);
}
};
AbstractChosen
.
prototype
.
input_blur
=
function
(
evt
)
{
var
_this
=
this
;
if
(
!
this
.
mouse_on_container
)
{
this
.
active_field
=
false
;
return
setTimeout
((
__bind
(
function
()
{
return
this
.
blur_test
();
}
,
this
)
),
100
);
return
setTimeout
((
function
()
{
return
_
this
.
blur_test
();
}),
100
);
}
};
AbstractChosen
.
prototype
.
result_add_option
=
function
(
option
)
{
var
classes
,
style
;
if
(
!
option
.
disabled
)
{
option
.
dom_id
=
this
.
container_id
+
"
_o_
"
+
option
.
array_index
;
classes
=
option
.
selected
&&
this
.
is_multiple
?
[]
:
[
"
active-result
"
];
if
(
option
.
selected
)
{
classes
.
push
(
"
result-selected
"
);
}
if
(
option
.
group_array_index
!=
null
)
{
classes
.
push
(
"
group-option
"
);
}
if
(
option
.
classes
!==
""
)
{
classes
.
push
(
option
.
classes
);
}
if
(
option
.
selected
)
classes
.
push
(
"
result-selected
"
);
if
(
option
.
group_array_index
!=
null
)
classes
.
push
(
"
group-option
"
);
if
(
option
.
classes
!==
""
)
classes
.
push
(
option
.
classes
);
style
=
option
.
style
.
cssText
!==
""
?
"
style=
\"
"
+
option
.
style
+
"
\"
"
:
""
;
return
'
<li id="
'
+
option
.
dom_id
+
'
" class="
'
+
classes
.
join
(
'
'
)
+
'
"
'
+
style
+
'
>
'
+
option
.
html
+
'
</li>
'
;
}
else
{
return
""
;
}
};
AbstractChosen
.
prototype
.
results_update_field
=
function
()
{
this
.
result_clear_highlight
();
this
.
result_single_selected
=
null
;
return
this
.
results_build
();
};
AbstractChosen
.
prototype
.
results_toggle
=
function
()
{
if
(
this
.
results_showing
)
{
return
this
.
results_hide
();
...
...
@@ -171,6 +189,7 @@
return
this
.
results_show
();
}
};
AbstractChosen
.
prototype
.
results_search
=
function
(
evt
)
{
if
(
this
.
results_showing
)
{
return
this
.
winnow_results
();
...
...
@@ -178,6 +197,7 @@
return
this
.
results_show
();
}
};
AbstractChosen
.
prototype
.
keyup_checker
=
function
(
evt
)
{
var
stroke
,
_ref
;
stroke
=
(
_ref
=
evt
.
which
)
!=
null
?
_ref
:
evt
.
keyCode
;
...
...
@@ -193,15 +213,11 @@
break
;
case
13
:
evt
.
preventDefault
();
if
(
this
.
results_showing
)
{
return
this
.
result_select
(
evt
);
}
if
(
this
.
results_showing
)
return
this
.
result_select
(
evt
);
break
;
case
27
:
if
(
this
.
results_showing
)
{
return
this
.
results_hide
();
}
break
;
if
(
this
.
results_showing
)
this
.
results_hide
();
return
true
;
case
9
:
case
38
:
case
40
:
...
...
@@ -213,62 +229,71 @@
return
this
.
results_search
();
}
};
AbstractChosen
.
prototype
.
generate_field_id
=
function
()
{
var
new_id
;
new_id
=
this
.
generate_random_id
();
this
.
form_field
.
id
=
new_id
;
return
new_id
;
};
AbstractChosen
.
prototype
.
generate_random_char
=
function
()
{
var
chars
,
newchar
,
rand
;
chars
=
"
0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZ
"
;
rand
=
Math
.
floor
(
Math
.
random
()
*
chars
.
length
);
return
newchar
=
chars
.
substring
(
rand
,
rand
+
1
);
};
return
AbstractChosen
;
})();
root
.
AbstractChosen
=
AbstractChosen
;
}).
call
(
this
);
/*
Chosen source: generate output using 'cake build'
Copyright (c) 2011 by Harvest
*/
(
function
()
{
/*
Chosen source: generate output using 'cake build'
Copyright (c) 2011 by Harvest
*/
var
$
,
Chosen
,
get_side_border_padding
,
root
;
var
__hasProp
=
Object
.
prototype
.
hasOwnProperty
,
__extends
=
function
(
child
,
parent
)
{
for
(
var
key
in
parent
)
{
if
(
__hasProp
.
call
(
parent
,
key
))
child
[
key
]
=
parent
[
key
];
}
function
ctor
()
{
this
.
constructor
=
child
;
}
ctor
.
prototype
=
parent
.
prototype
;
child
.
prototype
=
new
ctor
;
child
.
__super__
=
parent
.
prototype
;
return
child
;
},
__bind
=
function
(
fn
,
me
){
return
function
(){
return
fn
.
apply
(
me
,
arguments
);
};
};
var
$
,
Chosen
,
get_side_border_padding
,
root
,
__hasProp
=
Object
.
prototype
.
hasOwnProperty
,
__extends
=
function
(
child
,
parent
)
{
for
(
var
key
in
parent
)
{
if
(
__hasProp
.
call
(
parent
,
key
))
child
[
key
]
=
parent
[
key
];
}
function
ctor
()
{
this
.
constructor
=
child
;
}
ctor
.
prototype
=
parent
.
prototype
;
child
.
prototype
=
new
ctor
;
child
.
__super__
=
parent
.
prototype
;
return
child
;
};
root
=
this
;
$
=
jQuery
;
$
.
fn
.
extend
({
chosen
:
function
(
options
)
{
if
(
$
.
browser
.
msie
&&
(
$
.
browser
.
version
===
"
6.0
"
||
$
.
browser
.
version
===
"
7.0
"
))
{
return
this
;
}
return
$
(
this
).
each
(
function
(
input_field
)
{
if
(
!
(
$
(
this
)).
hasClass
(
"
chzn-done
"
))
{
return
new
Chosen
(
this
,
options
);
}
if
(
!
(
$
(
this
)).
hasClass
(
"
chzn-done
"
))
return
new
Chosen
(
this
,
options
);
});
}
});
Chosen
=
(
function
()
{
__extends
(
Chosen
,
AbstractChosen
);
Chosen
=
(
function
(
_super
)
{
__extends
(
Chosen
,
_super
);
function
Chosen
()
{
Chosen
.
__super__
.
constructor
.
apply
(
this
,
arguments
);
}
Chosen
.
prototype
.
setup
=
function
()
{
this
.
form_field_jq
=
$
(
this
.
form_field
);
return
this
.
is_rtl
=
this
.
form_field_jq
.
hasClass
(
"
chzn-rtl
"
);
};
Chosen
.
prototype
.
finish_setup
=
function
()
{
return
this
.
form_field_jq
.
addClass
(
"
chzn-done
"
);
};
Chosen
.
prototype
.
set_up_html
=
function
()
{
var
container_div
,
dd_top
,
dd_width
,
sf_width
;
this
.
container_id
=
this
.
form_field
.
id
.
length
?
this
.
form_field
.
id
.
replace
(
/
(
:|
\.)
/g
,
'
_
'
)
:
this
.
generate_field_id
();
...
...
@@ -283,7 +308,7 @@
if
(
this
.
is_multiple
)
{
container_div
.
html
(
'
<ul class="chzn-choices"><li class="search-field"><input type="text" value="
'
+
this
.
default_text
+
'
" class="default" autocomplete="off" style="width:25px;" /></li></ul><div class="chzn-drop" style="left:-9000px;"><ul class="chzn-results"></ul></div>
'
);
}
else
{
container_div
.
html
(
'
<a href="javascript:void(0)" class="chzn-single"><span>
'
+
this
.
default_text
+
'
</span><div><b></b></div></a><div class="chzn-drop" style="left:-9000px;"><div class="chzn-search"><input type="text" autocomplete="off" /></div><ul class="chzn-results"></ul></div>
'
);
container_div
.
html
(
'
<a href="javascript:void(0)" class="chzn-single
chzn-default
"><span>
'
+
this
.
default_text
+
'
</span><div><b></b></div></a><div class="chzn-drop" style="left:-9000px;"><div class="chzn-search"><input type="text" autocomplete="off" /></div><ul class="chzn-results"></ul></div>
'
);
}
this
.
form_field_jq
.
hide
().
after
(
container_div
);
this
.
container
=
$
(
'
#
'
+
this
.
container_id
);
...
...
@@ -316,49 +341,56 @@
chosen
:
this
});
};
Chosen
.
prototype
.
register_observers
=
function
()
{
this
.
container
.
mousedown
(
__bind
(
function
(
evt
)
{
return
this
.
container_mousedown
(
evt
);
},
this
));
this
.
container
.
mouseup
(
__bind
(
function
(
evt
)
{
return
this
.
container_mouseup
(
evt
);
},
this
));
this
.
container
.
mouseenter
(
__bind
(
function
(
evt
)
{
return
this
.
mouse_enter
(
evt
);
},
this
));
this
.
container
.
mouseleave
(
__bind
(
function
(
evt
)
{
return
this
.
mouse_leave
(
evt
);
},
this
));
this
.
search_results
.
mouseup
(
__bind
(
function
(
evt
)
{
return
this
.
search_results_mouseup
(
evt
);
},
this
));
this
.
search_results
.
mouseover
(
__bind
(
function
(
evt
)
{
return
this
.
search_results_mouseover
(
evt
);
},
this
));
this
.
search_results
.
mouseout
(
__bind
(
function
(
evt
)
{
return
this
.
search_results_mouseout
(
evt
);
},
this
));
this
.
form_field_jq
.
bind
(
"
liszt:updated
"
,
__bind
(
function
(
evt
)
{
return
this
.
results_update_field
(
evt
);
},
this
));
this
.
search_field
.
blur
(
__bind
(
function
(
evt
)
{
return
this
.
input_blur
(
evt
);
},
this
));
this
.
search_field
.
keyup
(
__bind
(
function
(
evt
)
{
return
this
.
keyup_checker
(
evt
);
},
this
));
this
.
search_field
.
keydown
(
__bind
(
function
(
evt
)
{
return
this
.
keydown_checker
(
evt
);
},
this
));
var
_this
=
this
;
this
.
container
.
mousedown
(
function
(
evt
)
{
return
_this
.
container_mousedown
(
evt
);
});
this
.
container
.
mouseup
(
function
(
evt
)
{
return
_this
.
container_mouseup
(
evt
);
});
this
.
container
.
mouseenter
(
function
(
evt
)
{
return
_this
.
mouse_enter
(
evt
);
});
this
.
container
.
mouseleave
(
function
(
evt
)
{
return
_this
.
mouse_leave
(
evt
);
});
this
.
search_results
.
mouseup
(
function
(
evt
)
{
return
_this
.
search_results_mouseup
(
evt
);
});
this
.
search_results
.
mouseover
(
function
(
evt
)
{
return
_this
.
search_results_mouseover
(
evt
);
});
this
.
search_results
.
mouseout
(
function
(
evt
)
{
return
_this
.
search_results_mouseout
(
evt
);
});
this
.
form_field_jq
.
bind
(
"
liszt:updated
"
,
function
(
evt
)
{
return
_this
.
results_update_field
(
evt
);
});
this
.
search_field
.
blur
(
function
(
evt
)
{
return
_this
.
input_blur
(
evt
);
});
this
.
search_field
.
keyup
(
function
(
evt
)
{
return
_this
.
keyup_checker
(
evt
);
});
this
.
search_field
.
keydown
(
function
(
evt
)
{
return
_this
.
keydown_checker
(
evt
);
});
if
(
this
.
is_multiple
)
{
this
.
search_choices
.
click
(
__bind
(
function
(
evt
)
{
return
this
.
choices_click
(
evt
);
},
this
));
return
this
.
search_field
.
focus
(
__bind
(
function
(
evt
)
{
return
this
.
input_focus
(
evt
);
},
this
));
this
.
search_choices
.
click
(
function
(
evt
)
{
return
_this
.
choices_click
(
evt
);
});
return
this
.
search_field
.
focus
(
function
(
evt
)
{
return
_this
.
input_focus
(
evt
);
});
}
else
{
return
this
.
container
.
click
(
function
(
evt
)
{
return
evt
.
preventDefault
();
});
}
};
Chosen
.
prototype
.
search_field_disabled
=
function
()
{
this
.
is_disabled
=
this
.
form_field_jq
[
0
].
disabled
;
if
(
this
.
is_disabled
)
{
...
...
@@ -376,21 +408,20 @@
}
}
};
Chosen
.
prototype
.
container_mousedown
=
function
(
evt
)
{
var
target_closelink
;
if
(
!
this
.
is_disabled
)
{
target_closelink
=
evt
!=
null
?
(
$
(
evt
.
target
)).
hasClass
(
"
search-choice-close
"
)
:
false
;
if
(
evt
&&
evt
.
type
===
"
mousedown
"
)
{
if
(
evt
&&
evt
.
type
===
"
mousedown
"
&&
!
this
.
results_showing
)
{
evt
.
stopPropagation
();
}
if
(
!
this
.
pending_destroy_click
&&
!
target_closelink
)
{
if
(
!
this
.
active_field
)
{
if
(
this
.
is_multiple
)
{
this
.
search_field
.
val
(
""
);
}
if
(
this
.
is_multiple
)
this
.
search_field
.
val
(
""
);
$
(
document
).
click
(
this
.
click_test_action
);
this
.
results_show
();
}
else
if
(
!
this
.
is_multiple
&&
evt
&&
(
$
(
evt
.
target
)
===
this
.
selected_item
||
$
(
evt
.
target
).
parents
(
"
a.chzn-single
"
).
length
))
{
}
else
if
(
!
this
.
is_multiple
&&
evt
&&
(
(
$
(
evt
.
target
)[
0
]
===
this
.
selected_item
[
0
])
||
$
(
evt
.
target
).
parents
(
"
a.chzn-single
"
).
length
))
{
evt
.
preventDefault
();
this
.
results_toggle
();
}
...
...
@@ -400,16 +431,17 @@
}
}
};
Chosen
.
prototype
.
container_mouseup
=
function
(
evt
)
{
if
(
evt
.
target
.
nodeName
===
"
ABBR
"
)
{
return
this
.
results_reset
(
evt
);
}
if
(
evt
.
target
.
nodeName
===
"
ABBR
"
)
return
this
.
results_reset
(
evt
);
};
Chosen
.
prototype
.
blur_test
=
function
(
evt
)
{
if
(
!
this
.
active_field
&&
this
.
container
.
hasClass
(
"
chzn-container-active
"
))
{
return
this
.
close_field
();
}
};
Chosen
.
prototype
.
close_field
=
function
()
{
$
(
document
).
unbind
(
"
click
"
,
this
.
click_test_action
);
if
(
!
this
.
is_multiple
)
{
...
...
@@ -424,6 +456,7 @@
this
.
show_search_field_default
();
return
this
.
search_field_scale
();
};
Chosen
.
prototype
.
activate_field
=
function
()
{
if
(
!
this
.
is_multiple
&&
!
this
.
active_field
)
{
this
.
search_field
.
attr
(
"
tabindex
"
,
this
.
selected_item
.
attr
(
"
tabindex
"
));
...
...
@@ -434,6 +467,7 @@
this
.
search_field
.
val
(
this
.
search_field
.
val
());
return
this
.
search_field
.
focus
();
};
Chosen
.
prototype
.
test_active_click
=
function
(
evt
)
{
if
(
$
(
evt
.
target
).
parents
(
'
#
'
+
this
.
container_id
).
length
)
{
return
this
.
active_field
=
true
;
...
...
@@ -441,9 +475,9 @@
return
this
.
close_field
();
}
};
Chosen
.
prototype
.
results_build
=
function
()
{
var
content
,
data
,
startTime
,
_i
,
_len
,
_ref
;
startTime
=
new
Date
();
var
content
,
data
,
_i
,
_len
,
_ref
;
this
.
parsing
=
true
;
this
.
results_data
=
root
.
SelectParser
.
select_to_array
(
this
.
form_field
);
if
(
this
.
is_multiple
&&
this
.
choices
>
0
)
{
...
...
@@ -468,10 +502,8 @@
if
(
data
.
selected
&&
this
.
is_multiple
)
{
this
.
choice_build
(
data
);
}
else
if
(
data
.
selected
&&
!
this
.
is_multiple
)
{
this
.
selected_item
.
find
(
"
span
"
).
text
(
data
.
text
);
if
(
this
.
allow_single_deselect
)
{
this
.
single_deselect_control_build
();
}
this
.
selected_item
.
removeClass
(
"
chzn-default
"
).
find
(
"
span
"
).
text
(
data
.
text
);
if
(
this
.
allow_single_deselect
)
this
.
single_deselect_control_build
();
}
}
}
...
...
@@ -481,6 +513,7 @@
this
.
search_results
.
html
(
content
);
return
this
.
parsing
=
false
;
};
Chosen
.
prototype
.
result_add_group
=
function
(
group
)
{
if
(
!
group
.
disabled
)
{
group
.
dom_id
=
this
.
container_id
+
"
_g_
"
+
group
.
array_index
;
...
...
@@ -489,6 +522,7 @@
return
""
;
}
};
Chosen
.
prototype
.
result_do_highlight
=
function
(
el
)
{
var
high_bottom
,
high_top
,
maxHeight
,
visible_bottom
,
visible_top
;
if
(
el
.
length
)
{
...
...
@@ -507,12 +541,12 @@
}
}
};
Chosen
.
prototype
.
result_clear_highlight
=
function
()
{
if
(
this
.
result_highlight
)
{
this
.
result_highlight
.
removeClass
(
"
highlighted
"
);
}
if
(
this
.
result_highlight
)
this
.
result_highlight
.
removeClass
(
"
highlighted
"
);
return
this
.
result_highlight
=
null
;
};
Chosen
.
prototype
.
results_show
=
function
()
{
var
dd_top
;
if
(
!
this
.
is_multiple
)
{
...
...
@@ -531,6 +565,7 @@
this
.
search_field
.
val
(
this
.
search_field
.
val
());
return
this
.
winnow_results
();
};
Chosen
.
prototype
.
results_hide
=
function
()
{
if
(
!
this
.
is_multiple
)
{
this
.
selected_item
.
removeClass
(
"
chzn-single-with-drop
"
);
...
...
@@ -541,6 +576,7 @@
});
return
this
.
results_showing
=
false
;
};
Chosen
.
prototype
.
set_tab_index
=
function
(
el
)
{
var
ti
;
if
(
this
.
form_field_jq
.
attr
(
"
tabindex
"
))
{
...
...
@@ -554,6 +590,7 @@
}
}
};
Chosen
.
prototype
.
show_search_field_default
=
function
()
{
if
(
this
.
is_multiple
&&
this
.
choices
<
1
&&
!
this
.
active_field
)
{
this
.
search_field
.
val
(
this
.
default_text
);
...
...
@@ -563,6 +600,7 @@
return
this
.
search_field
.
removeClass
(
"
default
"
);
}
};
Chosen
.
prototype
.
search_results_mouseup
=
function
(
evt
)
{
var
target
;
target
=
$
(
evt
.
target
).
hasClass
(
"
active-result
"
)
?
$
(
evt
.
target
)
:
$
(
evt
.
target
).
parents
(
"
.active-result
"
).
first
();
...
...
@@ -571,34 +609,38 @@
return
this
.
result_select
(
evt
);
}
};
Chosen
.
prototype
.
search_results_mouseover
=
function
(
evt
)
{
var
target
;
target
=
$
(
evt
.
target
).
hasClass
(
"
active-result
"
)
?
$
(
evt
.
target
)
:
$
(
evt
.
target
).
parents
(
"
.active-result
"
).
first
();
if
(
target
)
{
return
this
.
result_do_highlight
(
target
);
}
if
(
target
)
return
this
.
result_do_highlight
(
target
);
};
Chosen
.
prototype
.
search_results_mouseout
=
function
(
evt
)
{
if
(
$
(
evt
.
target
).
hasClass
(
"
active-result
"
||
$
(
evt
.
target
).
parents
(
'
.active-result
'
).
first
()))
{
return
this
.
result_clear_highlight
();
}
};
Chosen
.
prototype
.
choices_click
=
function
(
evt
)
{
evt
.
preventDefault
();
if
(
this
.
active_field
&&
!
(
$
(
evt
.
target
).
hasClass
(
"
search-choice
"
||
$
(
evt
.
target
).
parents
(
'
.search-choice
'
).
first
))
&&
!
this
.
results_showing
)
{
return
this
.
results_show
();
}
};
Chosen
.
prototype
.
choice_build
=
function
(
item
)
{
var
choice_id
,
link
;
var
choice_id
,
link
,
_this
=
this
;
choice_id
=
this
.
container_id
+
"
_c_
"
+
item
.
array_index
;
this
.
choices
+=
1
;
this
.
search_container
.
before
(
'
<li class="search-choice" id="
'
+
choice_id
+
'
"><span>
'
+
item
.
html
+
'
</span><a href="javascript:void(0)" class="search-choice-close" rel="
'
+
item
.
array_index
+
'
"></a></li>
'
);
link
=
$
(
'
#
'
+
choice_id
).
find
(
"
a
"
).
first
();
return
link
.
click
(
__bind
(
function
(
evt
)
{
return
this
.
choice_destroy_link_click
(
evt
);
}
,
this
)
);
return
link
.
click
(
function
(
evt
)
{
return
_
this
.
choice_destroy_link_click
(
evt
);
});
};
Chosen
.
prototype
.
choice_destroy_link_click
=
function
(
evt
)
{
evt
.
preventDefault
();
if
(
!
this
.
is_disabled
)
{
...
...
@@ -608,6 +650,7 @@
return
evt
.
stopPropagation
;
}
};
Chosen
.
prototype
.
choice_destroy
=
function
(
link
)
{
this
.
choices
-=
1
;
this
.
show_search_field_default
();
...
...
@@ -617,16 +660,17 @@
this
.
result_deselect
(
link
.
attr
(
"
rel
"
));
return
link
.
parents
(
'
li
'
).
first
().
remove
();
};
Chosen
.
prototype
.
results_reset
=
function
(
evt
)
{
this
.
form_field
.
options
[
0
].
selected
=
true
;
this
.
selected_item
.
find
(
"
span
"
).
text
(
this
.
default_text
);
if
(
!
this
.
is_multiple
)
this
.
selected_item
.
addClass
(
"
chzn-default
"
);
this
.
show_search_field_default
();
$
(
evt
.
target
).
remove
();
this
.
form_field_jq
.
trigger
(
"
change
"
);
if
(
this
.
active_field
)
{
return
this
.
results_hide
();
}
if
(
this
.
active_field
)
return
this
.
results_hide
();
};
Chosen
.
prototype
.
result_select
=
function
(
evt
)
{
var
high
,
high_id
,
item
,
position
;
if
(
this
.
result_highlight
)
{
...
...
@@ -638,6 +682,7 @@
}
else
{
this
.
search_results
.
find
(
"
.result-selected
"
).
removeClass
(
"
result-selected
"
);
this
.
result_single_selected
=
high
;
this
.
selected_item
.
removeClass
(
"
chzn-default
"
);
}
high
.
addClass
(
"
result-selected
"
);
position
=
high_id
.
substr
(
high_id
.
lastIndexOf
(
"
_
"
)
+
1
);
...
...
@@ -648,24 +693,23 @@
this
.
choice_build
(
item
);
}
else
{
this
.
selected_item
.
find
(
"
span
"
).
first
().
text
(
item
.
text
);
if
(
this
.
allow_single_deselect
)
{
this
.
single_deselect_control_build
();
}
}
if
(
!
(
evt
.
metaKey
&&
this
.
is_multiple
))
{
this
.
results_hide
();
if
(
this
.
allow_single_deselect
)
this
.
single_deselect_control_build
();
}
if
(
!
(
evt
.
metaKey
&&
this
.
is_multiple
))
this
.
results_hide
();
this
.
search_field
.
val
(
""
);
this
.
form_field_jq
.
trigger
(
"
change
"
);
return
this
.
search_field_scale
();
}
};
Chosen
.
prototype
.
result_activate
=
function
(
el
)
{
return
el
.
addClass
(
"
active-result
"
);
};
Chosen
.
prototype
.
result_deactivate
=
function
(
el
)
{
return
el
.
removeClass
(
"
active-result
"
);
};
Chosen
.
prototype
.
result_deselect
=
function
(
pos
)
{
var
result
,
result_data
;
result_data
=
this
.
results_data
[
pos
];
...
...
@@ -678,28 +722,31 @@
this
.
form_field_jq
.
trigger
(
"
change
"
);
return
this
.
search_field_scale
();
};
Chosen
.
prototype
.
single_deselect_control_build
=
function
()
{
if
(
this
.
allow_single_deselect
&&
this
.
selected_item
.
find
(
"
abbr
"
).
length
<
1
)
{
return
this
.
selected_item
.
find
(
"
span
"
).
first
().
after
(
"
<abbr class=
\"
search-choice-close
\"
></abbr>
"
);
}
};
Chosen
.
prototype
.
winnow_results
=
function
()
{
var
found
,
option
,
part
,
parts
,
regex
,
result_id
,
results
,
searchText
,
startTime
,
startpos
,
text
,
zregex
,
_i
,
_j
,
_len
,
_len2
,
_ref
;
startTime
=
new
Date
();
var
found
,
option
,
part
,
parts
,
regex
,
regexAnchor
,
result
,
result_id
,
results
,
searchText
,
startpos
,
text
,
zregex
,
_i
,
_j
,
_len
,
_len2
,
_ref
;
this
.
no_results_clear
();
results
=
0
;
searchText
=
this
.
search_field
.
val
()
===
this
.
default_text
?
""
:
$
(
'
<div/>
'
).
text
(
$
.
trim
(
this
.
search_field
.
val
())).
html
();
regex
=
new
RegExp
(
'
^
'
+
searchText
.
replace
(
/
[
-[
\]
{}()*+?.,
\\
^$|#
\s]
/g
,
"
\\
$&
"
),
'
i
'
);
regexAnchor
=
this
.
search_contains
?
""
:
"
^
"
;
regex
=
new
RegExp
(
regexAnchor
+
searchText
.
replace
(
/
[
-[
\]
{}()*+?.,
\\
^$|#
\s]
/g
,
"
\\
$&
"
),
'
i
'
);
zregex
=
new
RegExp
(
searchText
.
replace
(
/
[
-[
\]
{}()*+?.,
\\
^$|#
\s]
/g
,
"
\\
$&
"
),
'
i
'
);
_ref
=
this
.
results_data
;
for
(
_i
=
0
,
_len
=
_ref
.
length
;
_i
<
_len
;
_i
++
)
{
option
=
_ref
[
_i
];
if
(
!
option
.
disabled
&&
!
option
.
empty
)
{
if
(
option
.
group
)
{
$
(
'
#
'
+
option
.
dom_id
).
hide
(
);
$
(
'
#
'
+
option
.
dom_id
).
css
(
'
display
'
,
'
none
'
);
}
else
if
(
!
(
this
.
is_multiple
&&
option
.
selected
))
{
found
=
false
;
result_id
=
option
.
dom_id
;
result
=
$
(
"
#
"
+
result_id
);
if
(
regex
.
test
(
option
.
html
))
{
found
=
true
;
results
+=
1
;
...
...
@@ -723,18 +770,16 @@
}
else
{
text
=
option
.
html
;
}
if
(
$
(
"
#
"
+
result_id
).
html
!==
text
)
{
$
(
"
#
"
+
result_id
).
html
(
text
);
}
this
.
result_activate
(
$
(
"
#
"
+
result_id
));
result
.
html
(
text
);
this
.
result_activate
(
result
);
if
(
option
.
group_array_index
!=
null
)
{
$
(
"
#
"
+
this
.
results_data
[
option
.
group_array_index
].
dom_id
).
show
(
);
$
(
"
#
"
+
this
.
results_data
[
option
.
group_array_index
].
dom_id
).
css
(
'
display
'
,
'
list-item
'
);
}
}
else
{
if
(
this
.
result_highlight
&&
result_id
===
this
.
result_highlight
.
attr
(
'
id
'
))
{
this
.
result_clear_highlight
();
}
this
.
result_deactivate
(
$
(
"
#
"
+
result_id
)
);
this
.
result_deactivate
(
result
);
}
}
}
...
...
@@ -745,6 +790,7 @@
return
this
.
winnow_results_set_highlight
();
}
};
Chosen
.
prototype
.
winnow_results_clear
=
function
()
{
var
li
,
lis
,
_i
,
_len
,
_results
;
this
.
search_field
.
val
(
""
);
...
...
@@ -753,46 +799,49 @@
for
(
_i
=
0
,
_len
=
lis
.
length
;
_i
<
_len
;
_i
++
)
{
li
=
lis
[
_i
];
li
=
$
(
li
);
_results
.
push
(
li
.
hasClass
(
"
group-result
"
)
?
li
.
show
()
:
!
this
.
is_multiple
||
!
li
.
hasClass
(
"
result-selected
"
)
?
this
.
result_activate
(
li
)
:
void
0
);
if
(
li
.
hasClass
(
"
group-result
"
))
{
_results
.
push
(
li
.
css
(
'
display
'
,
'
auto
'
));
}
else
if
(
!
this
.
is_multiple
||
!
li
.
hasClass
(
"
result-selected
"
))
{
_results
.
push
(
this
.
result_activate
(
li
));
}
else
{
_results
.
push
(
void
0
);
}
}
return
_results
;
};
Chosen
.
prototype
.
winnow_results_set_highlight
=
function
()
{
var
do_high
,
selected_results
;
if
(
!
this
.
result_highlight
)
{
selected_results
=
!
this
.
is_multiple
?
this
.
search_results
.
find
(
"
.result-selected.active-result
"
)
:
[];
do_high
=
selected_results
.
length
?
selected_results
.
first
()
:
this
.
search_results
.
find
(
"
.active-result
"
).
first
();
if
(
do_high
!=
null
)
{
return
this
.
result_do_highlight
(
do_high
);
}
if
(
do_high
!=
null
)
return
this
.
result_do_highlight
(
do_high
);
}
};
Chosen
.
prototype
.
no_results
=
function
(
terms
)
{
var
no_results_html
;
no_results_html
=
$
(
'
<li class="no-results">
'
+
this
.
results_none_found
+
'
"<span></span>"</li>
'
);
no_results_html
.
find
(
"
span
"
).
first
().
html
(
terms
);
return
this
.
search_results
.
append
(
no_results_html
);
};
Chosen
.
prototype
.
no_results_clear
=
function
()
{
return
this
.
search_results
.
find
(
"
.no-results
"
).
remove
();
};
Chosen
.
prototype
.
keydown_arrow
=
function
()
{
var
first_active
,
next_sib
;
if
(
!
this
.
result_highlight
)
{
first_active
=
this
.
search_results
.
find
(
"
li.active-result
"
).
first
();
if
(
first_active
)
{
this
.
result_do_highlight
(
$
(
first_active
));
}
if
(
first_active
)
this
.
result_do_highlight
(
$
(
first_active
));
}
else
if
(
this
.
results_showing
)
{
next_sib
=
this
.
result_highlight
.
nextAll
(
"
li.active-result
"
).
first
();
if
(
next_sib
)
{
this
.
result_do_highlight
(
next_sib
);
}
}
if
(
!
this
.
results_showing
)
{
return
this
.
results_show
();
if
(
next_sib
)
this
.
result_do_highlight
(
next_sib
);
}
if
(
!
this
.
results_showing
)
return
this
.
results_show
();
};
Chosen
.
prototype
.
keyup_arrow
=
function
()
{
var
prev_sibs
;
if
(
!
this
.
results_showing
&&
!
this
.
is_multiple
)
{
...
...
@@ -802,13 +851,12 @@
if
(
prev_sibs
.
length
)
{
return
this
.
result_do_highlight
(
prev_sibs
.
first
());
}
else
{
if
(
this
.
choices
>
0
)
{
this
.
results_hide
();
}
if
(
this
.
choices
>
0
)
this
.
results_hide
();
return
this
.
result_clear_highlight
();
}
}
};
Chosen
.
prototype
.
keydown_backstroke
=
function
()
{
if
(
this
.
pending_backstroke
)
{
this
.
choice_destroy
(
this
.
pending_backstroke
.
find
(
"
a
"
).
first
());
...
...
@@ -818,27 +866,25 @@
return
this
.
pending_backstroke
.
addClass
(
"
search-choice-focus
"
);
}
};
Chosen
.
prototype
.
clear_backstroke
=
function
()
{
if
(
this
.
pending_backstroke
)
{
this
.
pending_backstroke
.
removeClass
(
"
search-choice-focus
"
);
}
return
this
.
pending_backstroke
=
null
;
};
Chosen
.
prototype
.
keydown_checker
=
function
(
evt
)
{
var
stroke
,
_ref
;
stroke
=
(
_ref
=
evt
.
which
)
!=
null
?
_ref
:
evt
.
keyCode
;
this
.
search_field_scale
();
if
(
stroke
!==
8
&&
this
.
pending_backstroke
)
{
this
.
clear_backstroke
();
}
if
(
stroke
!==
8
&&
this
.
pending_backstroke
)
this
.
clear_backstroke
();
switch
(
stroke
)
{
case
8
:
this
.
backstroke_length
=
this
.
search_field
.
val
().
length
;
break
;
case
9
:
if
(
this
.
results_showing
&&
!
this
.
is_multiple
)
{
this
.
result_select
(
evt
);
}
if
(
this
.
results_showing
&&
!
this
.
is_multiple
)
this
.
result_select
(
evt
);
this
.
mouse_on_container
=
false
;
break
;
case
13
:
...
...
@@ -853,6 +899,7 @@
break
;
}
};
Chosen
.
prototype
.
search_field_scale
=
function
()
{
var
dd_top
,
div
,
h
,
style
,
style_block
,
styles
,
w
,
_i
,
_len
;
if
(
this
.
is_multiple
)
{
...
...
@@ -871,9 +918,7 @@
$
(
'
body
'
).
append
(
div
);
w
=
div
.
width
()
+
25
;
div
.
remove
();
if
(
w
>
this
.
f_width
-
10
)
{
w
=
this
.
f_width
-
10
;
}
if
(
w
>
this
.
f_width
-
10
)
w
=
this
.
f_width
-
10
;
this
.
search_field
.
css
({
'
width
'
:
w
+
'
px
'
});
...
...
@@ -883,6 +928,7 @@
});
}
};
Chosen
.
prototype
.
generate_random_id
=
function
()
{
var
string
;
string
=
"
sel
"
+
this
.
generate_random_char
()
+
this
.
generate_random_char
()
+
this
.
generate_random_char
();
...
...
@@ -891,11 +937,16 @@
}
return
string
;
};
return
Chosen
;
})();
})(
AbstractChosen
);
get_side_border_padding
=
function
(
elmt
)
{
var
side_border_padding
;
return
side_border_padding
=
elmt
.
outerWidth
()
-
elmt
.
width
();
};
root
.
get_side_border_padding
=
get_side_border_padding
;
}).
call
(
this
);
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