Page Menu
Home
Code
Search
Configure Global Search
Log In
Files
F947493
ComboBox.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
18 KB
Subscribers
None
ComboBox.js
View Options
/*
Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
Available via Academic Free License >= 2.1 OR the modified BSD license.
see: http://dojotoolkit.org/license for details
*/
if
(
!
dojo
.
_hasResource
[
"dijit.form.ComboBox"
]){
dojo
.
_hasResource
[
"dijit.form.ComboBox"
]
=
true
;
dojo
.
provide
(
"dijit.form.ComboBox"
);
dojo
.
require
(
"dijit.form._FormWidget"
);
dojo
.
require
(
"dijit.form.ValidationTextBox"
);
dojo
.
require
(
"dojo.data.util.simpleFetch"
);
dojo
.
require
(
"dojo.data.util.filter"
);
dojo
.
require
(
"dojo.regexp"
);
dojo
.
requireLocalization
(
"dijit.form"
,
"ComboBox"
,
null
,
"ROOT,ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ru,sk,sl,sv,th,tr,zh,zh-tw"
);
dojo
.
declare
(
"dijit.form.ComboBoxMixin"
,
null
,{
item
:
null
,
pageSize
:
Infinity
,
store
:
null
,
fetchProperties
:
{},
query
:
{},
autoComplete
:
true
,
highlightMatch
:
"first"
,
searchDelay
:
100
,
searchAttr
:
"name"
,
labelAttr
:
""
,
labelType
:
"text"
,
queryExpr
:
"${0}*"
,
ignoreCase
:
true
,
hasDownArrow
:
true
,
templateString
:
dojo
.
cache
(
"dijit.form"
,
"templates/ComboBox.html"
,
"<div class=\"dijit dijitReset dijitInlineTable dijitLeft\"\n\tid=\"widget_${id}\"\n\tdojoAttachEvent=\"onmouseenter:_onMouse,onmouseleave:_onMouse,onmousedown:_onMouse\" dojoAttachPoint=\"comboNode\" waiRole=\"combobox\" tabIndex=\"-1\"\n\t><div style=\"overflow:hidden;\"\n\t\t><div class='dijitReset dijitRight dijitButtonNode dijitArrowButton dijitDownArrowButton'\n\t\t\tdojoAttachPoint=\"downArrowNode\" waiRole=\"presentation\"\n\t\t\tdojoAttachEvent=\"onmousedown:_onArrowMouseDown,onmouseup:_onMouse,onmouseenter:_onMouse,onmouseleave:_onMouse\"\n\t\t\t><div class=\"dijitArrowButtonInner\"> </div\n\t\t\t><div class=\"dijitArrowButtonChar\">▼</div\n\t\t></div\n\t\t><div class=\"dijitReset dijitValidationIcon\"><br></div\n\t\t><div class=\"dijitReset dijitValidationIconText\">Χ</div\n\t\t><div class=\"dijitReset dijitInputField\"\n\t\t\t><input ${nameAttrSetting} type=\"text\" autocomplete=\"off\" class='dijitReset'\n\t\t\tdojoAttachEvent=\"onkeypress:_onKeyPress,compositionend\"\n\t\t\tdojoAttachPoint=\"textbox,focusNode\" waiRole=\"textbox\" waiState=\"haspopup-true,autocomplete-list\"\n\t\t/></div\n\t></div\n></div>\n"
),
baseClass
:
"dijitComboBox"
,
_getCaretPos
:
function
(
_1
){
var
_2
=
0
;
if
(
typeof
(
_1
.
selectionStart
)
==
"number"
){
_2
=
_1
.
selectionStart
;
}
else
{
if
(
dojo
.
isIE
){
var
tr
=
dojo
.
doc
.
selection
.
createRange
().
duplicate
();
var
_3
=
_1
.
createTextRange
();
tr
.
move
(
"character"
,
0
);
_3
.
move
(
"character"
,
0
);
try
{
_3
.
setEndPoint
(
"EndToEnd"
,
tr
);
_2
=
String
(
_3
.
text
).
replace
(
/\r/g
,
""
).
length
;
}
catch
(
e
){
}
}
}
return
_2
;
},
_setCaretPos
:
function
(
_4
,
_5
){
_5
=
parseInt
(
_5
);
dijit
.
selectInputText
(
_4
,
_5
,
_5
);
},
_setDisabledAttr
:
function
(
_6
){
this
.
inherited
(
arguments
);
dijit
.
setWaiState
(
this
.
comboNode
,
"disabled"
,
_6
);
},
_abortQuery
:
function
(){
if
(
this
.
searchTimer
){
clearTimeout
(
this
.
searchTimer
);
this
.
searchTimer
=
null
;
}
if
(
this
.
_fetchHandle
){
if
(
this
.
_fetchHandle
.
abort
){
this
.
_fetchHandle
.
abort
();
}
this
.
_fetchHandle
=
null
;
}
},
_onKeyPress
:
function
(
_7
){
var
_8
=
_7
.
charOrCode
;
if
(
_7
.
altKey
||
((
_7
.
ctrlKey
||
_7
.
metaKey
)
&&
(
_8
!=
"x"
&&
_8
!=
"v"
))
||
_8
==
dojo
.
keys
.
SHIFT
){
return
;
}
var
_9
=
false
;
var
_a
=
"_startSearchFromInput"
;
var
pw
=
this
.
_popupWidget
;
var
dk
=
dojo
.
keys
;
var
_b
=
null
;
this
.
_prev_key_backspace
=
false
;
this
.
_abortQuery
();
if
(
this
.
_isShowingNow
){
pw
.
handleKey
(
_8
);
_b
=
pw
.
getHighlightedOption
();
}
switch
(
_8
){
case
dk
.
PAGE_DOWN
:
case
dk
.
DOWN_ARROW
:
case
dk
.
PAGE_UP
:
case
dk
.
UP_ARROW
:
if
(
!
this
.
_isShowingNow
){
this
.
_arrowPressed
();
_9
=
true
;
_a
=
"_startSearchAll"
;
}
else
{
this
.
_announceOption
(
_b
);
}
dojo
.
stopEvent
(
_7
);
break
;
case
dk
.
ENTER
:
if
(
_b
){
if
(
_b
==
pw
.
nextButton
){
this
.
_nextSearch
(
1
);
dojo
.
stopEvent
(
_7
);
break
;
}
else
{
if
(
_b
==
pw
.
previousButton
){
this
.
_nextSearch
(
-
1
);
dojo
.
stopEvent
(
_7
);
break
;
}
}
}
else
{
this
.
_setBlurValue
();
this
.
_setCaretPos
(
this
.
focusNode
,
this
.
focusNode
.
value
.
length
);
}
_7
.
preventDefault
();
case
dk
.
TAB
:
var
_c
=
this
.
attr
(
"displayedValue"
);
if
(
pw
&&
(
_c
==
pw
.
_messages
[
"previousMessage"
]
||
_c
==
pw
.
_messages
[
"nextMessage"
])){
break
;
}
if
(
_b
){
this
.
_selectOption
();
}
if
(
this
.
_isShowingNow
){
this
.
_lastQuery
=
null
;
this
.
_hideResultList
();
}
break
;
case
" "
:
if
(
_b
){
dojo
.
stopEvent
(
_7
);
this
.
_selectOption
();
this
.
_hideResultList
();
}
else
{
_9
=
true
;
}
break
;
case
dk
.
ESCAPE
:
if
(
this
.
_isShowingNow
){
dojo
.
stopEvent
(
_7
);
this
.
_hideResultList
();
}
break
;
case
dk
.
DELETE
:
case
dk
.
BACKSPACE
:
this
.
_prev_key_backspace
=
true
;
_9
=
true
;
break
;
default
:
_9
=
typeof
_8
==
"string"
||
_8
==
229
;
}
if
(
_9
){
this
.
item
=
undefined
;
this
.
searchTimer
=
setTimeout
(
dojo
.
hitch
(
this
,
_a
),
1
);
}
},
_autoCompleteText
:
function
(
_d
){
var
fn
=
this
.
focusNode
;
dijit
.
selectInputText
(
fn
,
fn
.
value
.
length
);
var
_e
=
this
.
ignoreCase
?
"toLowerCase"
:
"substr"
;
if
(
_d
[
_e
](
0
).
indexOf
(
this
.
focusNode
.
value
[
_e
](
0
))
==
0
){
var
_f
=
this
.
_getCaretPos
(
fn
);
if
((
_f
+
1
)
>
fn
.
value
.
length
){
fn
.
value
=
_d
;
dijit
.
selectInputText
(
fn
,
_f
);
}
}
else
{
fn
.
value
=
_d
;
dijit
.
selectInputText
(
fn
);
}
},
_openResultList
:
function
(
_10
,
_11
){
this
.
_fetchHandle
=
null
;
if
(
this
.
disabled
||
this
.
readOnly
||
(
_11
.
query
[
this
.
searchAttr
]
!=
this
.
_lastQuery
)){
return
;
}
this
.
_popupWidget
.
clearResultList
();
if
(
!
_10
.
length
){
this
.
_hideResultList
();
return
;
}
_11
.
_maxOptions
=
this
.
_maxOptions
;
var
_12
=
this
.
_popupWidget
.
createOptions
(
_10
,
_11
,
dojo
.
hitch
(
this
,
"_getMenuLabelFromItem"
));
this
.
_showResultList
();
if
(
_11
.
direction
){
if
(
1
==
_11
.
direction
){
this
.
_popupWidget
.
highlightFirstOption
();
}
else
{
if
(
-
1
==
_11
.
direction
){
this
.
_popupWidget
.
highlightLastOption
();
}
}
this
.
_announceOption
(
this
.
_popupWidget
.
getHighlightedOption
());
}
else
{
if
(
this
.
autoComplete
&&!
this
.
_prev_key_backspace
&&!
/^[*]+$/
.
test
(
_11
.
query
[
this
.
searchAttr
])){
this
.
_announceOption
(
_12
[
1
]);
}
}
},
_showResultList
:
function
(){
this
.
_hideResultList
();
this
.
_arrowPressed
();
this
.
displayMessage
(
""
);
dojo
.
style
(
this
.
_popupWidget
.
domNode
,{
width
:
""
,
height
:
""
});
var
_13
=
this
.
open
();
var
_14
=
dojo
.
marginBox
(
this
.
_popupWidget
.
domNode
);
this
.
_popupWidget
.
domNode
.
style
.
overflow
=
((
_13
.
h
==
_14
.
h
)
&&
(
_13
.
w
==
_14
.
w
))
?
"hidden"
:
"auto"
;
var
_15
=
_13
.
w
;
if
(
_13
.
h
<
this
.
_popupWidget
.
domNode
.
scrollHeight
){
_15
+=
16
;
}
dojo
.
marginBox
(
this
.
_popupWidget
.
domNode
,{
h
:
_13
.
h
,
w
:
Math
.
max
(
_15
,
this
.
domNode
.
offsetWidth
)});
if
(
_15
<
this
.
domNode
.
offsetWidth
){
this
.
_popupWidget
.
domNode
.
parentNode
.
style
.
left
=
dojo
.
position
(
this
.
domNode
).
x
+
"px"
;
}
dijit
.
setWaiState
(
this
.
comboNode
,
"expanded"
,
"true"
);
},
_hideResultList
:
function
(){
this
.
_abortQuery
();
if
(
this
.
_isShowingNow
){
dijit
.
popup
.
close
(
this
.
_popupWidget
);
this
.
_arrowIdle
();
this
.
_isShowingNow
=
false
;
dijit
.
setWaiState
(
this
.
comboNode
,
"expanded"
,
"false"
);
dijit
.
removeWaiState
(
this
.
focusNode
,
"activedescendant"
);
}
},
_setBlurValue
:
function
(){
var
_16
=
this
.
attr
(
"displayedValue"
);
var
pw
=
this
.
_popupWidget
;
if
(
pw
&&
(
_16
==
pw
.
_messages
[
"previousMessage"
]
||
_16
==
pw
.
_messages
[
"nextMessage"
])){
this
.
_setValueAttr
(
this
.
_lastValueReported
,
true
);
}
else
{
if
(
typeof
this
.
item
==
"undefined"
){
this
.
item
=
null
;
this
.
attr
(
"displayedValue"
,
_16
);
}
else
{
if
(
this
.
value
!=
this
.
_lastValueReported
){
dijit
.
form
.
_FormValueWidget
.
prototype
.
_setValueAttr
.
call
(
this
,
this
.
value
,
true
);
}
this
.
_refreshState
();
}
}
},
_onBlur
:
function
(){
this
.
_hideResultList
();
this
.
_arrowIdle
();
this
.
inherited
(
arguments
);
},
_setItemAttr
:
function
(
_17
,
_18
,
_19
){
if
(
!
_19
){
_19
=
this
.
labelFunc
(
_17
,
this
.
store
);
}
this
.
value
=
this
.
_getValueField
()
!=
this
.
searchAttr
?
this
.
store
.
getIdentity
(
_17
)
:
_19
;
this
.
item
=
_17
;
dijit
.
form
.
ComboBox
.
superclass
.
_setValueAttr
.
call
(
this
,
this
.
value
,
_18
,
_19
);
},
_announceOption
:
function
(
_1a
){
if
(
!
_1a
){
return
;
}
var
_1b
;
if
(
_1a
==
this
.
_popupWidget
.
nextButton
||
_1a
==
this
.
_popupWidget
.
previousButton
){
_1b
=
_1a
.
innerHTML
;
this
.
item
=
undefined
;
this
.
value
=
""
;
}
else
{
_1b
=
this
.
labelFunc
(
_1a
.
item
,
this
.
store
);
this
.
attr
(
"item"
,
_1a
.
item
,
false
,
_1b
);
}
this
.
focusNode
.
value
=
this
.
focusNode
.
value
.
substring
(
0
,
this
.
_lastInput
.
length
);
dijit
.
setWaiState
(
this
.
focusNode
,
"activedescendant"
,
dojo
.
attr
(
_1a
,
"id"
));
this
.
_autoCompleteText
(
_1b
);
},
_selectOption
:
function
(
evt
){
if
(
evt
){
this
.
_announceOption
(
evt
.
target
);
}
this
.
_hideResultList
();
this
.
_setCaretPos
(
this
.
focusNode
,
this
.
focusNode
.
value
.
length
);
dijit
.
form
.
_FormValueWidget
.
prototype
.
_setValueAttr
.
call
(
this
,
this
.
value
,
true
);
},
_onArrowMouseDown
:
function
(
evt
){
if
(
this
.
disabled
||
this
.
readOnly
){
return
;
}
dojo
.
stopEvent
(
evt
);
this
.
focus
();
if
(
this
.
_isShowingNow
){
this
.
_hideResultList
();
}
else
{
this
.
_startSearchAll
();
}
},
_startSearchAll
:
function
(){
this
.
_startSearch
(
""
);
},
_startSearchFromInput
:
function
(){
this
.
_startSearch
(
this
.
focusNode
.
value
.
replace
(
/([\\\*\?])/g
,
"\\$1"
));
},
_getQueryString
:
function
(
_1c
){
return
dojo
.
string
.
substitute
(
this
.
queryExpr
,[
_1c
]);
},
_startSearch
:
function
(
key
){
if
(
!
this
.
_popupWidget
){
var
_1d
=
this
.
id
+
"_popup"
;
this
.
_popupWidget
=
new
dijit
.
form
.
_ComboBoxMenu
({
onChange
:
dojo
.
hitch
(
this
,
this
.
_selectOption
),
id
:
_1d
});
dijit
.
removeWaiState
(
this
.
focusNode
,
"activedescendant"
);
dijit
.
setWaiState
(
this
.
textbox
,
"owns"
,
_1d
);
}
var
_1e
=
dojo
.
clone
(
this
.
query
);
this
.
_lastInput
=
key
;
this
.
_lastQuery
=
_1e
[
this
.
searchAttr
]
=
this
.
_getQueryString
(
key
);
this
.
searchTimer
=
setTimeout
(
dojo
.
hitch
(
this
,
function
(
_1f
,
_20
){
this
.
searchTimer
=
null
;
var
_21
=
{
queryOptions
:
{
ignoreCase
:
this
.
ignoreCase
,
deep
:
true
},
query
:
_1f
,
onBegin
:
dojo
.
hitch
(
this
,
"_setMaxOptions"
),
onComplete
:
dojo
.
hitch
(
this
,
"_openResultList"
),
onError
:
function
(
_22
){
_20
.
_fetchHandle
=
null
;
console
.
error
(
"dijit.form.ComboBox: "
+
_22
);
dojo
.
hitch
(
_20
,
"_hideResultList"
)();
},
start
:
0
,
count
:
this
.
pageSize
};
dojo
.
mixin
(
_21
,
_20
.
fetchProperties
);
this
.
_fetchHandle
=
_20
.
store
.
fetch
(
_21
);
var
_23
=
function
(
_24
,
_25
){
_24
.
start
+=
_24
.
count
*
_25
;
_24
.
direction
=
_25
;
this
.
_fetchHandle
=
this
.
store
.
fetch
(
_24
);
};
this
.
_nextSearch
=
this
.
_popupWidget
.
onPage
=
dojo
.
hitch
(
this
,
_23
,
this
.
_fetchHandle
);
},
_1e
,
this
),
this
.
searchDelay
);
},
_setMaxOptions
:
function
(
_26
,
_27
){
this
.
_maxOptions
=
_26
;
},
_getValueField
:
function
(){
return
this
.
searchAttr
;
},
_arrowPressed
:
function
(){
if
(
!
this
.
disabled
&&!
this
.
readOnly
&&
this
.
hasDownArrow
){
dojo
.
addClass
(
this
.
downArrowNode
,
"dijitArrowButtonActive"
);
}
},
_arrowIdle
:
function
(){
if
(
!
this
.
disabled
&&!
this
.
readOnly
&&
this
.
hasDownArrow
){
dojo
.
removeClass
(
this
.
downArrowNode
,
"dojoArrowButtonPushed"
);
}
},
compositionend
:
function
(
evt
){
this
.
_onKeyPress
({
charOrCode
:
229
});
},
constructor
:
function
(){
this
.
query
=
{};
this
.
fetchProperties
=
{};
},
postMixInProperties
:
function
(){
if
(
!
this
.
hasDownArrow
){
this
.
baseClass
=
"dijitTextBox"
;
}
if
(
!
this
.
store
){
var
_28
=
this
.
srcNodeRef
;
this
.
store
=
new
dijit
.
form
.
_ComboBoxDataStore
(
_28
);
if
(
!
this
.
value
||
((
typeof
_28
.
selectedIndex
==
"number"
)
&&
_28
.
selectedIndex
.
toString
()
===
this
.
value
)){
var
_29
=
this
.
store
.
fetchSelectedItem
();
if
(
_29
){
var
_2a
=
this
.
_getValueField
();
this
.
value
=
_2a
!=
this
.
searchAttr
?
this
.
store
.
getValue
(
_29
,
_2a
)
:
this
.
labelFunc
(
_29
,
this
.
store
);
}
}
}
this
.
inherited
(
arguments
);
},
postCreate
:
function
(){
var
_2b
=
dojo
.
query
(
"label[for=\""
+
this
.
id
+
"\"]"
);
if
(
_2b
.
length
){
_2b
[
0
].
id
=
(
this
.
id
+
"_label"
);
var
cn
=
this
.
comboNode
;
dijit
.
setWaiState
(
cn
,
"labelledby"
,
_2b
[
0
].
id
);
}
this
.
inherited
(
arguments
);
},
uninitialize
:
function
(){
if
(
this
.
_popupWidget
&&!
this
.
_popupWidget
.
_destroyed
){
this
.
_hideResultList
();
this
.
_popupWidget
.
destroy
();
}
this
.
inherited
(
arguments
);
},
_getMenuLabelFromItem
:
function
(
_2c
){
var
_2d
=
this
.
labelAttr
?
this
.
store
.
getValue
(
_2c
,
this
.
labelAttr
)
:
this
.
labelFunc
(
_2c
,
this
.
store
);
var
_2e
=
this
.
labelType
;
if
(
this
.
highlightMatch
!=
"none"
&&
this
.
labelType
==
"text"
&&
this
.
_lastInput
){
_2d
=
this
.
doHighlight
(
_2d
,
this
.
_escapeHtml
(
this
.
_lastInput
));
_2e
=
"html"
;
}
return
{
html
:
_2e
==
"html"
,
label
:
_2d
};
},
doHighlight
:
function
(
_2f
,
_30
){
var
_31
=
"i"
+
(
this
.
highlightMatch
==
"all"
?
"g"
:
""
);
var
_32
=
this
.
_escapeHtml
(
_2f
);
_30
=
dojo
.
regexp
.
escapeString
(
_30
);
var
ret
=
_32
.
replace
(
new
RegExp
(
"(^|\\s)("
+
_30
+
")"
,
_31
),
"$1<span class=\"dijitComboBoxHighlightMatch\">$2</span>"
);
return
ret
;
},
_escapeHtml
:
function
(
str
){
str
=
String
(
str
).
replace
(
/&/gm
,
"&"
).
replace
(
/</gm
,
"<"
).
replace
(
/>/gm
,
">"
).
replace
(
/"/gm
,
"""
);
return
str
;
},
open
:
function
(){
this
.
_isShowingNow
=
true
;
return
dijit
.
popup
.
open
({
popup
:
this
.
_popupWidget
,
around
:
this
.
domNode
,
parent
:
this
});
},
reset
:
function
(){
this
.
item
=
null
;
this
.
inherited
(
arguments
);
},
labelFunc
:
function
(
_33
,
_34
){
return
_34
.
getValue
(
_33
,
this
.
searchAttr
).
toString
();
}});
dojo
.
declare
(
"dijit.form._ComboBoxMenu"
,[
dijit
.
_Widget
,
dijit
.
_Templated
],{
templateString
:
"<ul class='dijitReset dijitMenu' dojoAttachEvent='onmousedown:_onMouseDown,onmouseup:_onMouseUp,onmouseover:_onMouseOver,onmouseout:_onMouseOut' tabIndex='-1' style='overflow: \"auto\"; overflow-x: \"hidden\";'>"
+
"<li class='dijitMenuItem dijitMenuPreviousButton' dojoAttachPoint='previousButton' waiRole='option'></li>"
+
"<li class='dijitMenuItem dijitMenuNextButton' dojoAttachPoint='nextButton' waiRole='option'></li>"
+
"</ul>"
,
_messages
:
null
,
postMixInProperties
:
function
(){
this
.
_messages
=
dojo
.
i18n
.
getLocalization
(
"dijit.form"
,
"ComboBox"
,
this
.
lang
);
this
.
inherited
(
arguments
);
},
_setValueAttr
:
function
(
_35
){
this
.
value
=
_35
;
this
.
onChange
(
_35
);
},
onChange
:
function
(
_36
){
},
onPage
:
function
(
_37
){
},
postCreate
:
function
(){
this
.
previousButton
.
innerHTML
=
this
.
_messages
[
"previousMessage"
];
this
.
nextButton
.
innerHTML
=
this
.
_messages
[
"nextMessage"
];
this
.
inherited
(
arguments
);
},
onClose
:
function
(){
this
.
_blurOptionNode
();
},
_createOption
:
function
(
_38
,
_39
){
var
_3a
=
_39
(
_38
);
var
_3b
=
dojo
.
doc
.
createElement
(
"li"
);
dijit
.
setWaiRole
(
_3b
,
"option"
);
if
(
_3a
.
html
){
_3b
.
innerHTML
=
_3a
.
label
;
}
else
{
_3b
.
appendChild
(
dojo
.
doc
.
createTextNode
(
_3a
.
label
));
}
if
(
_3b
.
innerHTML
==
""
){
_3b
.
innerHTML
=
" "
;
}
_3b
.
item
=
_38
;
return
_3b
;
},
createOptions
:
function
(
_3c
,
_3d
,
_3e
){
this
.
previousButton
.
style
.
display
=
(
_3d
.
start
==
0
)
?
"none"
:
""
;
dojo
.
attr
(
this
.
previousButton
,
"id"
,
this
.
id
+
"_prev"
);
dojo
.
forEach
(
_3c
,
function
(
_3f
,
i
){
var
_40
=
this
.
_createOption
(
_3f
,
_3e
);
_40
.
className
=
"dijitReset dijitMenuItem"
;
dojo
.
attr
(
_40
,
"id"
,
this
.
id
+
i
);
this
.
domNode
.
insertBefore
(
_40
,
this
.
nextButton
);
},
this
);
var
_41
=
false
;
if
(
_3d
.
_maxOptions
&&
_3d
.
_maxOptions
!=-
1
){
if
((
_3d
.
start
+
_3d
.
count
)
<
_3d
.
_maxOptions
){
_41
=
true
;
}
else
{
if
((
_3d
.
start
+
_3d
.
count
)
>
(
_3d
.
_maxOptions
-
1
)){
if
(
_3d
.
count
==
_3c
.
length
){
_41
=
true
;
}
}
}
}
else
{
if
(
_3d
.
count
==
_3c
.
length
){
_41
=
true
;
}
}
this
.
nextButton
.
style
.
display
=
_41
?
""
:
"none"
;
dojo
.
attr
(
this
.
nextButton
,
"id"
,
this
.
id
+
"_next"
);
return
this
.
domNode
.
childNodes
;
},
clearResultList
:
function
(){
while
(
this
.
domNode
.
childNodes
.
length
>
2
){
this
.
domNode
.
removeChild
(
this
.
domNode
.
childNodes
[
this
.
domNode
.
childNodes
.
length
-
2
]);
}
},
_onMouseDown
:
function
(
evt
){
dojo
.
stopEvent
(
evt
);
},
_onMouseUp
:
function
(
evt
){
if
(
evt
.
target
===
this
.
domNode
){
return
;
}
else
{
if
(
evt
.
target
==
this
.
previousButton
){
this
.
onPage
(
-
1
);
}
else
{
if
(
evt
.
target
==
this
.
nextButton
){
this
.
onPage
(
1
);
}
else
{
var
tgt
=
evt
.
target
;
while
(
!
tgt
.
item
){
tgt
=
tgt
.
parentNode
;
}
this
.
_setValueAttr
({
target
:
tgt
},
true
);
}
}
}
},
_onMouseOver
:
function
(
evt
){
if
(
evt
.
target
===
this
.
domNode
){
return
;
}
var
tgt
=
evt
.
target
;
if
(
!
(
tgt
==
this
.
previousButton
||
tgt
==
this
.
nextButton
)){
while
(
!
tgt
.
item
){
tgt
=
tgt
.
parentNode
;
}
}
this
.
_focusOptionNode
(
tgt
);
},
_onMouseOut
:
function
(
evt
){
if
(
evt
.
target
===
this
.
domNode
){
return
;
}
this
.
_blurOptionNode
();
},
_focusOptionNode
:
function
(
_42
){
if
(
this
.
_highlighted_option
!=
_42
){
this
.
_blurOptionNode
();
this
.
_highlighted_option
=
_42
;
dojo
.
addClass
(
this
.
_highlighted_option
,
"dijitMenuItemSelected"
);
}
},
_blurOptionNode
:
function
(){
if
(
this
.
_highlighted_option
){
dojo
.
removeClass
(
this
.
_highlighted_option
,
"dijitMenuItemSelected"
);
this
.
_highlighted_option
=
null
;
}
},
_highlightNextOption
:
function
(){
var
fc
=
this
.
domNode
.
firstChild
;
if
(
!
this
.
getHighlightedOption
()){
this
.
_focusOptionNode
(
fc
.
style
.
display
==
"none"
?
fc
.
nextSibling
:
fc
);
}
else
{
var
ns
=
this
.
_highlighted_option
.
nextSibling
;
if
(
ns
&&
ns
.
style
.
display
!=
"none"
){
this
.
_focusOptionNode
(
ns
);
}
}
dijit
.
scrollIntoView
(
this
.
_highlighted_option
);
},
highlightFirstOption
:
function
(){
this
.
_focusOptionNode
(
this
.
domNode
.
firstChild
.
nextSibling
);
dijit
.
scrollIntoView
(
this
.
_highlighted_option
);
},
highlightLastOption
:
function
(){
this
.
_focusOptionNode
(
this
.
domNode
.
lastChild
.
previousSibling
);
dijit
.
scrollIntoView
(
this
.
_highlighted_option
);
},
_highlightPrevOption
:
function
(){
var
lc
=
this
.
domNode
.
lastChild
;
if
(
!
this
.
getHighlightedOption
()){
this
.
_focusOptionNode
(
lc
.
style
.
display
==
"none"
?
lc
.
previousSibling
:
lc
);
}
else
{
var
ps
=
this
.
_highlighted_option
.
previousSibling
;
if
(
ps
&&
ps
.
style
.
display
!=
"none"
){
this
.
_focusOptionNode
(
ps
);
}
}
dijit
.
scrollIntoView
(
this
.
_highlighted_option
);
},
_page
:
function
(
up
){
var
_43
=
0
;
var
_44
=
this
.
domNode
.
scrollTop
;
var
_45
=
dojo
.
style
(
this
.
domNode
,
"height"
);
if
(
!
this
.
getHighlightedOption
()){
this
.
_highlightNextOption
();
}
while
(
_43
<
_45
){
if
(
up
){
if
(
!
this
.
getHighlightedOption
().
previousSibling
||
this
.
_highlighted_option
.
previousSibling
.
style
.
display
==
"none"
){
break
;
}
this
.
_highlightPrevOption
();
}
else
{
if
(
!
this
.
getHighlightedOption
().
nextSibling
||
this
.
_highlighted_option
.
nextSibling
.
style
.
display
==
"none"
){
break
;
}
this
.
_highlightNextOption
();
}
var
_46
=
this
.
domNode
.
scrollTop
;
_43
+=
(
_46
-
_44
)
*
(
up
?-
1
:
1
);
_44
=
_46
;
}
},
pageUp
:
function
(){
this
.
_page
(
true
);
},
pageDown
:
function
(){
this
.
_page
(
false
);
},
getHighlightedOption
:
function
(){
var
ho
=
this
.
_highlighted_option
;
return
(
ho
&&
ho
.
parentNode
)
?
ho
:
null
;
},
handleKey
:
function
(
key
){
switch
(
key
){
case
dojo
.
keys
.
DOWN_ARROW
:
this
.
_highlightNextOption
();
break
;
case
dojo
.
keys
.
PAGE_DOWN
:
this
.
pageDown
();
break
;
case
dojo
.
keys
.
UP_ARROW
:
this
.
_highlightPrevOption
();
break
;
case
dojo
.
keys
.
PAGE_UP
:
this
.
pageUp
();
break
;
}
}});
dojo
.
declare
(
"dijit.form.ComboBox"
,[
dijit
.
form
.
ValidationTextBox
,
dijit
.
form
.
ComboBoxMixin
],{
_setValueAttr
:
function
(
_47
,
_48
,
_49
){
this
.
item
=
null
;
if
(
!
_47
){
_47
=
""
;
}
dijit
.
form
.
ValidationTextBox
.
prototype
.
_setValueAttr
.
call
(
this
,
_47
,
_48
,
_49
);
}});
dojo
.
declare
(
"dijit.form._ComboBoxDataStore"
,
null
,{
constructor
:
function
(
_4a
){
this
.
root
=
_4a
;
dojo
.
query
(
"> option"
,
_4a
).
forEach
(
function
(
_4b
){
_4b
.
innerHTML
=
dojo
.
trim
(
_4b
.
innerHTML
);
});
},
getValue
:
function
(
_4c
,
_4d
,
_4e
){
return
(
_4d
==
"value"
)
?
_4c
.
value
:
(
_4c
.
innerText
||
_4c
.
textContent
||
""
);
},
isItemLoaded
:
function
(
_4f
){
return
true
;
},
getFeatures
:
function
(){
return
{
"dojo.data.api.Read"
:
true
,
"dojo.data.api.Identity"
:
true
};
},
_fetchItems
:
function
(
_50
,
_51
,
_52
){
if
(
!
_50
.
query
){
_50
.
query
=
{};
}
if
(
!
_50
.
query
.
name
){
_50
.
query
.
name
=
""
;
}
if
(
!
_50
.
queryOptions
){
_50
.
queryOptions
=
{};
}
var
_53
=
dojo
.
data
.
util
.
filter
.
patternToRegExp
(
_50
.
query
.
name
,
_50
.
queryOptions
.
ignoreCase
),
_54
=
dojo
.
query
(
"> option"
,
this
.
root
).
filter
(
function
(
_55
){
return
(
_55
.
innerText
||
_55
.
textContent
||
""
).
match
(
_53
);
});
if
(
_50
.
sort
){
_54
.
sort
(
dojo
.
data
.
util
.
sorter
.
createSortFunction
(
_50
.
sort
,
this
));
}
_51
(
_54
,
_50
);
},
close
:
function
(
_56
){
return
;
},
getLabel
:
function
(
_57
){
return
_57
.
innerHTML
;
},
getIdentity
:
function
(
_58
){
return
dojo
.
attr
(
_58
,
"value"
);
},
fetchItemByIdentity
:
function
(
_59
){
var
_5a
=
dojo
.
query
(
"option[value='"
+
_59
.
identity
+
"']"
,
this
.
root
)[
0
];
_59
.
onItem
(
_5a
);
},
fetchSelectedItem
:
function
(){
var
_5b
=
this
.
root
,
si
=
_5b
.
selectedIndex
;
return
dojo
.
query
(
"> option:nth-child("
+
(
si
!=-
1
?
si
+
1
:
1
)
+
")"
,
_5b
)[
0
];
}});
dojo
.
extend
(
dijit
.
form
.
_ComboBoxDataStore
,
dojo
.
data
.
util
.
simpleFetch
);
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Apr 26, 12:06 (1 d, 17 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
25522
Default Alt Text
ComboBox.js (18 KB)
Attached To
rZEDHG ZedLegacy
Event Timeline
Log In to Comment