Page Menu
Home
Code
Search
Configure Global Search
Log In
Files
F390577
_HasDropDown.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
5 KB
Subscribers
None
_HasDropDown.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._HasDropDown"
]){
dojo
.
_hasResource
[
"dijit._HasDropDown"
]
=
true
;
dojo
.
provide
(
"dijit._HasDropDown"
);
dojo
.
require
(
"dijit._base.place"
);
dojo
.
require
(
"dijit._Widget"
);
dojo
.
declare
(
"dijit._HasDropDown"
,
null
,{
_buttonNode
:
null
,
_arrowWrapperNode
:
null
,
_popupStateNode
:
null
,
_aroundNode
:
null
,
dropDown
:
null
,
autoWidth
:
true
,
forceWidth
:
false
,
maxHeight
:
0
,
dropDownPosition
:
[
"below"
,
"above"
],
_stopClickEvents
:
true
,
_onDropDownMouse
:
function
(
e
){
if
(
e
.
type
==
"click"
&&!
this
.
_seenKeydown
){
return
;
}
this
.
_seenKeydown
=
false
;
if
(
e
.
type
==
"mousedown"
){
this
.
_docHandler
=
this
.
connect
(
dojo
.
doc
,
"onmouseup"
,
"_onDropDownMouseup"
);
}
if
(
this
.
disabled
||
this
.
readOnly
){
return
;
}
if
(
this
.
_stopClickEvents
){
dojo
.
stopEvent
(
e
);
}
this
.
toggleDropDown
();
if
(
e
.
type
==
"click"
||
e
.
type
==
"keypress"
){
this
.
_onDropDownMouseup
();
}
},
_onDropDownMouseup
:
function
(
e
){
if
(
e
&&
this
.
_docHandler
){
this
.
disconnect
(
this
.
_docHandler
);
}
var
_1
=
this
.
dropDown
,
_2
=
false
;
if
(
e
&&
this
.
_opened
){
var
c
=
dojo
.
position
(
this
.
_buttonNode
,
true
);
if
(
!
(
e
.
pageX
>=
c
.
x
&&
e
.
pageX
<=
c
.
x
+
c
.
w
)
||!
(
e
.
pageY
>=
c
.
y
&&
e
.
pageY
<=
c
.
y
+
c
.
h
)){
var
t
=
e
.
target
;
while
(
t
&&!
_2
){
if
(
dojo
.
hasClass
(
t
,
"dijitPopup"
)){
_2
=
true
;
}
else
{
t
=
t
.
parentNode
;
}
}
if
(
_2
){
t
=
e
.
target
;
if
(
_1
.
onItemClick
){
var
_3
;
while
(
t
&&!
(
_3
=
dijit
.
byNode
(
t
))){
t
=
t
.
parentNode
;
}
if
(
_3
&&
_3
.
onClick
&&
_3
.
getParent
){
_3
.
getParent
().
onItemClick
(
_3
,
e
);
}
}
return
;
}
}
}
if
(
this
.
_opened
&&
_1
.
focus
){
window
.
setTimeout
(
dojo
.
hitch
(
_1
,
"focus"
),
1
);
}
},
_setupDropdown
:
function
(){
this
.
_buttonNode
=
this
.
_buttonNode
||
this
.
focusNode
||
this
.
domNode
;
this
.
_popupStateNode
=
this
.
_popupStateNode
||
this
.
focusNode
||
this
.
_buttonNode
;
this
.
_aroundNode
=
this
.
_aroundNode
||
this
.
domNode
;
this
.
connect
(
this
.
_buttonNode
,
"onmousedown"
,
"_onDropDownMouse"
);
this
.
connect
(
this
.
_buttonNode
,
"onclick"
,
"_onDropDownMouse"
);
this
.
connect
(
this
.
_buttonNode
,
"onkeydown"
,
"_onDropDownKeydown"
);
this
.
connect
(
this
.
_buttonNode
,
"onblur"
,
"_onDropDownBlur"
);
this
.
connect
(
this
.
_buttonNode
,
"onkeypress"
,
"_onKey"
);
if
(
this
.
_setStateClass
){
this
.
connect
(
this
,
"openDropDown"
,
"_setStateClass"
);
this
.
connect
(
this
,
"closeDropDown"
,
"_setStateClass"
);
}
var
_4
=
{
"after"
:
this
.
isLeftToRight
()
?
"Right"
:
"Left"
,
"before"
:
this
.
isLeftToRight
()
?
"Left"
:
"Right"
,
"above"
:
"Up"
,
"below"
:
"Down"
,
"left"
:
"Left"
,
"right"
:
"Right"
}[
this
.
dropDownPosition
[
0
]]
||
this
.
dropDownPosition
[
0
]
||
"Down"
;
dojo
.
addClass
(
this
.
_arrowWrapperNode
||
this
.
_buttonNode
,
"dijit"
+
_4
+
"ArrowButton"
);
},
postCreate
:
function
(){
this
.
_setupDropdown
();
this
.
inherited
(
arguments
);
},
destroyDescendants
:
function
(){
if
(
this
.
dropDown
){
if
(
!
this
.
dropDown
.
_destroyed
){
this
.
dropDown
.
destroyRecursive
();
}
delete
this
.
dropDown
;
}
this
.
inherited
(
arguments
);
},
_onDropDownKeydown
:
function
(
e
){
this
.
_seenKeydown
=
true
;
},
_onKeyPress
:
function
(
e
){
if
(
this
.
_opened
&&
e
.
charOrCode
==
dojo
.
keys
.
ESCAPE
&&!
e
.
shiftKey
&&!
e
.
ctrlKey
&&!
e
.
altKey
){
this
.
toggleDropDown
();
dojo
.
stopEvent
(
e
);
return
;
}
this
.
inherited
(
arguments
);
},
_onDropDownBlur
:
function
(
e
){
this
.
_seenKeydown
=
false
;
},
_onKey
:
function
(
e
){
if
(
this
.
disabled
||
this
.
readOnly
){
return
;
}
var
d
=
this
.
dropDown
;
if
(
d
&&
this
.
_opened
&&
d
.
handleKey
){
if
(
d
.
handleKey
(
e
)
===
false
){
return
;
}
}
if
(
d
&&
this
.
_opened
&&
e
.
keyCode
==
dojo
.
keys
.
ESCAPE
){
this
.
toggleDropDown
();
return
;
}
if
(
e
.
keyCode
==
dojo
.
keys
.
DOWN_ARROW
||
e
.
keyCode
==
dojo
.
keys
.
ENTER
||
e
.
charOrCode
==
" "
){
this
.
_onDropDownMouse
(
e
);
}
},
_onBlur
:
function
(){
this
.
closeDropDown
();
this
.
inherited
(
arguments
);
},
isLoaded
:
function
(){
return
true
;
},
loadDropDown
:
function
(
_5
){
_5
();
},
toggleDropDown
:
function
(){
if
(
this
.
disabled
||
this
.
readOnly
){
return
;
}
this
.
focus
();
var
_6
=
this
.
dropDown
;
if
(
!
_6
){
return
;
}
if
(
!
this
.
_opened
){
if
(
!
this
.
isLoaded
()){
this
.
loadDropDown
(
dojo
.
hitch
(
this
,
"openDropDown"
));
return
;
}
else
{
this
.
openDropDown
();
}
}
else
{
this
.
closeDropDown
();
}
},
openDropDown
:
function
(){
var
_7
=
this
.
dropDown
;
var
_8
=
_7
.
domNode
;
var
_9
=
this
;
if
(
!
this
.
_preparedNode
){
dijit
.
popup
.
moveOffScreen
(
_8
);
this
.
_preparedNode
=
true
;
if
(
_8
.
style
.
width
){
this
.
_explicitDDWidth
=
true
;
}
if
(
_8
.
style
.
height
){
this
.
_explicitDDHeight
=
true
;
}
}
if
(
this
.
maxHeight
||
this
.
forceWidth
||
this
.
autoWidth
){
var
_a
=
{
display
:
""
,
visibility
:
"hidden"
};
if
(
!
this
.
_explicitDDWidth
){
_a
.
width
=
""
;
}
if
(
!
this
.
_explicitDDHeight
){
_a
.
height
=
""
;
}
dojo
.
style
(
_8
,
_a
);
var
mb
=
dojo
.
marginBox
(
_8
);
var
_b
=
(
this
.
maxHeight
&&
mb
.
h
>
this
.
maxHeight
);
dojo
.
style
(
_8
,{
overflow
:
_b
?
"auto"
:
"hidden"
});
if
(
this
.
forceWidth
){
mb
.
w
=
this
.
domNode
.
offsetWidth
;
}
else
{
if
(
this
.
autoWidth
){
mb
.
w
=
Math
.
max
(
mb
.
w
,
this
.
domNode
.
offsetWidth
);
}
else
{
delete
mb
.
w
;
}
}
if
(
_b
){
mb
.
h
=
this
.
maxHeight
;
if
(
"w"
in
mb
){
mb
.
w
+=
16
;
}
}
else
{
delete
mb
.
h
;
}
delete
mb
.
t
;
delete
mb
.
l
;
if
(
dojo
.
isFunction
(
_7
.
resize
)){
_7
.
resize
(
mb
);
}
else
{
dojo
.
marginBox
(
_8
,
mb
);
}
}
var
_c
=
dijit
.
popup
.
open
({
parent
:
this
,
popup
:
_7
,
around
:
this
.
_aroundNode
,
orient
:
dijit
.
getPopupAroundAlignment
((
this
.
dropDownPosition
&&
this
.
dropDownPosition
.
length
)
?
this
.
dropDownPosition
:
[
"below"
],
this
.
isLeftToRight
()),
onExecute
:
function
(){
_9
.
closeDropDown
(
true
);
},
onCancel
:
function
(){
_9
.
closeDropDown
(
true
);
},
onClose
:
function
(){
dojo
.
attr
(
_9
.
_popupStateNode
,
"popupActive"
,
false
);
dojo
.
removeClass
(
_9
.
_popupStateNode
,
"dijitHasDropDownOpen"
);
_9
.
_opened
=
false
;
_9
.
state
=
""
;
}});
dojo
.
attr
(
this
.
_popupStateNode
,
"popupActive"
,
"true"
);
dojo
.
addClass
(
_9
.
_popupStateNode
,
"dijitHasDropDownOpen"
);
this
.
_opened
=
true
;
this
.
state
=
"Opened"
;
return
_c
;
},
closeDropDown
:
function
(
_d
){
if
(
this
.
_opened
){
dijit
.
popup
.
close
(
this
.
dropDown
);
if
(
_d
){
this
.
focus
();
}
this
.
_opened
=
false
;
this
.
state
=
""
;
}
}});
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Feb 22, 15:27 (7 h, 46 m ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
24593
Default Alt Text
_HasDropDown.js (5 KB)
Attached To
rZED Zed
Event Timeline
Log In to Comment