📄 dialog.js
字号:
Class("linb.UI.Dialog","linb.UI.Widget",{
Instance:{
show:function(parent, modal, left, top){
parent = parent || linb('body');
return this.each(function(profile){
var t,
pro=profile.properties,
instance = profile.boxing(),
fun = function(){
var ins=profile.boxing(),
_hidden;
if(profile.domNode && profile.domNode._linbhide)
_hidden=true;
if(left||left===0)
ins.setLeft(left);
if(top||top===0)
ins.setTop(top);
parent.append(ins);
var box=profile.box,
root=profile.root,
//in ie, .children can't get the same thread added node(modal div, here)
t1=root.topZindex(),
t2=root.css('zIndex');
root.css('zIndex',t1>t2?t1:t2);
if(_hidden)
root.show(left?(parseInt(left)||0)+'px':null, top?(parseInt(top)||0)+'px':null);
if(modal && !profile.$inModal)
box._modal(profile);
box._active(profile);
if(profile.onShow)profile.boxing().onShow(profile);
if(profile.properties.status=='normal')
box._refreshRegion(profile);
//set default focus, the min tabzindex
_.asyRun(function(){root.nextFocus()});
delete profile.inShowing;
},
root=profile.root;
if(root && root.get(0)._hide===0)return;
if(profile.inShowing)return;
profile.inShowing=1;
if(t=pro.fromRegion)
linb.Dom.animate({border:'dashed 1px #ff0000'},{left:[t.left,pro.left],top:[t.top,pro.top],width:[t.width,pro.width],height:[t.height,pro.height]}, null,fun,360,12,'expoIn').start();
else
fun();
});
},
hide:function(){
this.each(function(profile){
var pro=profile.properties,
box=profile.box,
root=profile.root;
if(root&&root.get(0)._hide==1)return;
if(profile.inHiding)return;
profile.inHiding=1;
if(profile.$inModal)
box._unModal(profile);
//max has dock prop
if(pro.status=='max' || pro.status=='min')
box._restore(profile);
root.hide();
var t=pro.fromRegion, fun=function(){
delete profile.inHiding;
};
if(t)
linb.Dom.animate({border:'dashed 1px #ff0000'},{left:[pro.left,t.left],top:[pro.top,t.top],width:[pro.width,t.width],height:[pro.height,t.height]}, null, fun,360,12,'expoOut').start();
else
fun();
});
return this;
},
close:function(){
return this.each(function(profile){
if(profile.beforeClose && false === profile.boxing().beforeClose(profile))
return;
if(profile.inClosing)return;
profile.inClosing=1;
var pro=profile.properties, t=pro.fromRegion, fun=function(){
profile.boxing().destroy();
delete profile.inClosing;
};
if(t)
linb.Dom.animate({border:'dashed 1px #ff0000'},{left:[pro.left,t.left],top:[pro.top,t.top],width:[pro.width,t.width],height:[pro.height,t.height]}, null,fun,360,12,'expoOut').start();
else
fun();
});
}
},
Initialize:function(){
var t = this.getTemplate();
_.merge(t.FRAME.BORDER,{
TBAR:{
tagName:'div',
className:'uibar-top',
TBART:{
cellpadding:"0",
cellspacing:"0",
width:'100%',
border:'0',
tagName:'table',
className:'uibar-t',
TBARTR:{
tagName:'tr',
TBARTDL:{
tagName:'td',
className:'uibar-tdl'
},
TBARTDM:{
$order:1,
width:'100%',
tagName:'td',
className:'uibar-tdm'
},
TBARTDR:{
$order:2,
tagName:'td',
className:'uibar-tdr'
}
}
},
BARCMDL:{
tagName: 'div',
className:'uibar-cmdl',
ICON:{
$order:0,
className:'ui-icon',
style:'background:url({image}) transparent no-repeat {imagePos};{iconDisplay}'
},
CAPTION:{
$order:1,
text:'{caption}'
}
},
BARCMDR:{
tagName: 'div',
className:'uibar-cmdr',
onselectstart:'return false',
unselectable:'on',
OPT:{
className:'uicmd-opt',
style:'{optDisplay}',
$order:1
},
PIN:{
$order:2,
className:'uicmd-pin',
style:'{pinDisplay}'
},
LAND:{
$order:3,
className:'uicmd-land',
style:'{landDisplay}'
},
MIN:{
$order:4,
className:'uicmd-min',
style:'{minDisplay}'
},
RESTORE:{
$order:5,
className:'uicmd-restore',
style:'display:none;'
},
MAX:{
$order:6,
className:'uicmd-max',
style:'{maxDisplay}'
},
CLOSE:{
$order:7,
className:'uicmd-close ',
style:'{closeDisplay}'
}
}
},
MAIN:{
$order:2,
tagName:'div',
className:'uicon-main',
MAINI:{
tagName:'div',
className:'uicon-maini',
PANEL:{
tagName:'div',
text:'{html}'+linb.UI.$childTag
}
}
},
BBAR:{
$order:3,
tagName:'div',
className:'uibar-bottom',
BBART:{
cellpadding:"0",
cellspacing:"0",
width:'100%',
border:'0',
tagName:'table',
className:'uibar-t',
BBARTR:{
tagName:'tr',
BBARTDL:{
tagName:'td',
className:'uibar-tdl'
},
BBARTDM:{
$order:1,
width:'100%',
tagName:'td',
className:'uibar-tdm'
},
BBARTDR:{
$order:2,
tagName:'td',
className:'uibar-tdr'
}
}
}
}
},'all');
this.setTemplate(t)
},
Static:{
Appearances:{
KEY:{
overflow:'visible'
},
PANEL:{
position:'relative',
overflow:'auto',
'font-size':'12px',
'line-height':'14px'
},
CAPTION:{
'font-size':'12px',
display:'inline',
'vertical-align':'middle'
}
},
Behaviors:{
DropableKeys:['PANEL'],
DragableKeys:['LAND'],
HoverEffected:{OPT:'OPT', PIN:'PIN',MIN:'MIN',MAX:'MAX',RESTORE:'RESTORE',CLOSE:'CLOSE',LAND:'LAND'},
ClickEffected:{OPT:'OPT', PIN:'PIN',MIN:'MIN',MAX:'MAX',RESTORE:'RESTORE',CLOSE:'CLOSE',LAND:'LAND'},
onMousedown:function(profile, e){
profile.box._active(profile);
},
onDragstop:function(profile){
var pos = profile.root.cssPos(),p=profile.properties;
p.left = pos.left;
p.top = pos.top;
},
TBAR:{
onMousedown:function(profile, e, src){
if(profile.getKey(linb.Event.getSrc(e).parentNode.id)==profile.keys.BARCMDR)return;
if(profile.properties.movable && !profile._locked){
profile.box._active(profile);
profile.root.startDrag(e, {
dragDefer:1,
targetOffsetParent:profile.root.parent()
});
}
},
onDblclick:function(profile, e, src){
if(profile.getKey(linb.Event.getSrc(e).parentNode.id)==profile.keys.BARCMDR)return;
if(!profile.properties.maxBtn)return;
if(profile.properties.status=='max')
profile.box._restore(profile);
else
profile.box._max(profile);
}
},
PIN:{
onClick:function(profile, e, src){
var key=profile.keys.PIN, t=profile.properties;
//set pinned status
t.pinned = !t.pinned;
//set appea
profile.getSubNode('PIN').tagClass('-checked', t.pinned);
//set lock flag for not movable
profile._locked = t.pinned;
// add/remove resize
if(t.resizer){
if(!t.pinned){
// if not in min mode
if(t.status != 'min' && profile.$resizer)
profile.$resizer.show();
}else
if(profile.$resizer)
//profile.boxing().setResizer(false);
profile.$resizer.hide();
}
}
},
MIN:{
onClick:function(profile, e, src){
profile.box._min(profile);
}
},
MAX:{
onClick:function(profile, e, src){
profile.box._max(profile);
}
},
RESTORE:{
onClick:function(profile, e, src){
profile.box._restore(profile);
}
},
OPT:{
onClick:function(profile, e, src){
profile.boxing().onShowOptions(profile, e, src);
}
},
CLOSE:{
onClick:function(profile, e, src){
profile.boxing().close();
}
}
},
DataModel:{
tips:null,
border:null,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -