Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
K
kityminder-core
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
吴志俊
kityminder-core
Commits
4f8a98c8
Commit
4f8a98c8
authored
Feb 26, 2014
by
techird
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
social
parent
c7471140
Changes
6
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
257 additions
and
132 deletions
+257
-132
social.css
dist/social.css
+7
-5
social.js
dist/social.js
+153
-61
social.less
dist/social.less
+21
-1
dropmenu.js
src/ui/dropmenu.js
+72
-62
menu.js
src/ui/menu.js
+1
-1
dropmenu.css
themes/default/css/dropmenu.css
+3
-2
No files found.
dist/social.css
View file @
4f8a98c8
#social
{
position
:
absolute
;
right
:
10px
;
top
:
10px
;
line-height
:
20px
;
text-align
:
right
;
overflow
:
hidden
}
#social
button
,
#social
.kmui-btn
{
outline
:
none
;
display
:
inline-block
;
padding
:
0
15px
;
height
:
35px
;
font-size
:
13px
;
line-height
:
35px
;
text-align
:
center
;
border-radius
:
5px
;
color
:
#fff
;
text-decoration
:
none
;
border
:
none
;
margin-left
:
5px
;
cursor
:
pointer
;
background
:
#0099f2
;
background
:
url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzAwOTlmMiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjNDA5NmVlIiBzdG9wLW9wYWNpdHk9IjEiLz4KICAgIDxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzAwNzZkZCIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgPC9saW5lYXJHcmFkaWVudD4KICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBmaWxsPSJ1cmwoI2dyYWQtdWNnZy1nZW5lcmF0ZWQpIiAvPgo8L3N2Zz4=)
;
background
:
-moz-linear-gradient
(
top
,
#0099f2
0
,
#4096ee
0
,
#0076dd
100%
);
background
:
-webkit-gradient
(
linear
,
left
top
,
left
bottom
,
color-stop
(
0
,
#0099f2
),
color-stop
(
0
,
#4096ee
),
color-stop
(
100%
,
#0076dd
));
background
:
-webkit-linear-gradient
(
top
,
#0099f2
0
,
#4096ee
0
,
#0076dd
100%
);
background
:
-o-linear-gradient
(
top
,
#0099f2
0
,
#4096ee
0
,
#0076dd
100%
);
background
:
-ms-linear-gradient
(
top
,
#0099f2
0
,
#4096ee
0
,
#0076dd
100%
);
background
:
linear-gradient
(
to
bottom
,
#0099f2
0
,
#4096ee
0
,
#0076dd
100%
);
filter
:
progid
:
DXImageTransform
.
Microsoft
.
gradient
(
startColorstr
=
'#0099f2'
,
endColorstr
=
'#0076dd'
,
GradientType
=
0
);}
#social
button
:hover
,
#social
.kmui-btn
:hover
{
background
:
#009fff
}
#social
button
[
disabled
],
#social
.kmui-btn
[
disabled
]
{
background
:
#aaa
}
#social
button
.baidu-cloud
,
#social
.kmui-btn.baidu-cloud
{
padding-left
:
35px
;
position
:
relative
}
#social
button
.baidu-cloud
:before
,
#social
.kmui-btn.baidu-cloud
:before
{
content
:
' '
;
display
:
block
;
width
:
24px
;
height
:
24px
;
background
:
url(../themes/default/images/baiducloud.png)
;
position
:
absolute
;
left
:
7px
;
top
:
5px
}
#social
button
.share
,
#social
.kmui-btn.share
{
padding-left
:
35px
;
position
:
relative
}
#social
button
.share
:before
,
#social
.kmui-btn.share
:before
{
content
:
' '
;
display
:
block
;
width
:
24px
;
height
:
24px
;
background
:
url(../themes/default/images/share.png)
no-repeat
;
position
:
absolute
;
left
:
7px
;
top
:
5px
}
#social
button
img
,
#social
.kmui-btn
img
{
position
:
relative
;
top
:
3px
;
border-radius
:
2px
;
margin-right
:
7px
}
#social
{
position
:
absolute
;
right
:
10px
;
top
:
10px
;
line-height
:
20px
;
text-align
:
right
;
overflow
:
hidden
}
#social
button
{
outline
:
none
;
display
:
inline-block
;
padding
:
0
15px
;
height
:
35px
;
font-size
:
13px
;
line-height
:
35px
;
text-align
:
center
;
border-radius
:
5px
;
color
:
#fff
;
text-decoration
:
none
;
border
:
none
;
margin-left
:
5px
;
cursor
:
pointer
;
background
:
#0099f2
;
background
:
url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzAwOTlmMiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjNDA5NmVlIiBzdG9wLW9wYWNpdHk9IjEiLz4KICAgIDxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzAwNzZkZCIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgPC9saW5lYXJHcmFkaWVudD4KICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBmaWxsPSJ1cmwoI2dyYWQtdWNnZy1nZW5lcmF0ZWQpIiAvPgo8L3N2Zz4=)
;
background
:
-moz-linear-gradient
(
top
,
#0099f2
0
,
#4096ee
0
,
#0076dd
100%
);
background
:
-webkit-gradient
(
linear
,
left
top
,
left
bottom
,
color-stop
(
0
,
#0099f2
),
color-stop
(
0
,
#4096ee
),
color-stop
(
100%
,
#0076dd
));
background
:
-webkit-linear-gradient
(
top
,
#0099f2
0
,
#4096ee
0
,
#0076dd
100%
);
background
:
-o-linear-gradient
(
top
,
#0099f2
0
,
#4096ee
0
,
#0076dd
100%
);
background
:
-ms-linear-gradient
(
top
,
#0099f2
0
,
#4096ee
0
,
#0076dd
100%
);
background
:
linear-gradient
(
to
bottom
,
#0099f2
0
,
#4096ee
0
,
#0076dd
100%
);
filter
:
progid
:
DXImageTransform
.
Microsoft
.
gradient
(
startColorstr
=
'#0099f2'
,
endColorstr
=
'#0076dd'
,
GradientType
=
0
);}
#social
button
:hover
{
background
:
#009fff
}
#social
button
[
disabled
]
{
background
:
#aaa
}
#social
button
.baidu-cloud
{
padding-left
:
35px
;
position
:
relative
}
#social
button
.baidu-cloud
:before
{
content
:
' '
;
display
:
block
;
width
:
24px
;
height
:
24px
;
background
:
url(../themes/default/images/baiducloud.png)
;
position
:
absolute
;
left
:
7px
;
top
:
5px
}
#social
button
.share
{
padding-left
:
35px
;
position
:
relative
}
#social
button
.share
:before
{
content
:
' '
;
display
:
block
;
width
:
24px
;
height
:
24px
;
background
:
url(../themes/default/images/share.png)
no-repeat
;
position
:
absolute
;
left
:
7px
;
top
:
5px
}
#social
button
img
{
position
:
relative
;
top
:
3px
;
border-radius
:
2px
;
margin-right
:
7px
}
#social
button
.user-file
{
padding-right
:
28px
;
position
:
relative
}
#social
button
.user-file
:after
{
content
:
' '
;
display
:
block
;
position
:
absolute
;
right
:
10px
;
top
:
15px
;
width
:
0
;
height
:
0
;
border
:
solid
;
border-width
:
4px
5px
;
border-color
:
#fff
transparent
transparent
transparent
}
.user-file-menu
{
margin-top
:
20px
;
margin-left
:
1px
}
dist/social.js
View file @
4f8a98c8
$
.
extend
(
$
.
fn
,
{
disabled
:
function
(
value
)
{
if
(
value
===
undefined
)
return
!!
this
.
attr
(
'disabled'
);
if
(
value
)
{
this
.
attr
(
'disabled'
,
'disabled'
);
}
else
{
this
.
removeAttr
(
'disabled'
);
}
return
this
;
},
loading
:
function
(
text
)
{
if
(
text
)
{
if
(
!
this
.
disabled
()
)
{
this
.
disabled
(
true
);
this
.
attr
(
'origin-text'
,
this
.
text
()
);
}
this
.
text
(
text
);
}
else
{
this
.
text
(
this
.
attr
(
'origin-text'
)
);
this
.
removeAttr
(
'origin-text'
);
this
.
disabled
(
false
);
}
return
this
;
},
text
:
(
function
()
{
var
originFn
=
$
.
fn
.
text
;
return
function
()
{
var
textSpan
=
this
.
children
(
'span.text'
);
if
(
textSpan
.
length
)
{
return
originFn
.
apply
(
textSpan
,
arguments
);
}
else
{
return
originFn
.
apply
(
this
,
arguments
);
}
};
}
)()
}
);
$
(
function
()
{
var
$panel
=
$
(
'#social'
);
var
$login_btn
,
$save_btn
,
$share_btn
,
$user_btn
,
$user_menu
;
...
...
@@ -12,68 +49,33 @@ $( function () {
}
}
)();
$login_btn
=
$
(
'<button>登录</button>'
).
addClass
(
'login'
).
click
(
login
);
$login_btn
=
$
(
'<button>登录</button>'
).
addClass
(
'login'
).
click
(
login
);
$user_btn
=
$
(
'<button><
/button>'
).
addClass
(
'user-file'
);
$user_btn
=
$
(
'<button><
span class="text"></span></button>'
).
addClass
(
'user-file'
);
$user_menu
=
$
.
kmuidropmenu
(
{
data
:
[
{
label
:
'新建脑图'
,
value
:
'action_newminder'
click
:
newFile
},
{
divider
:
true
label
:
'到网盘管理文件...'
,
click
:
function
()
{
window
.
open
(
'http://pan.baidu.com/disk/home#dir/path=/apps/kityminder'
);
}
},
{
label
:
'最近脑图'
,
value
:
'action_recent'
divider
:
true
}
]
}
).
appendTo
(
'body'
).
kmui
().
attachTo
(
$user_btn
);
$save_btn
=
$
(
'<button>保存</button>'
).
click
(
saveThisFile
).
addClass
(
'baidu-cloud'
);
}
).
addClass
(
'user-file-menu'
).
appendTo
(
'body'
).
kmui
();
$share_btn
=
$
(
'<button>分享</button>'
).
click
(
function
()
{
if
(
$share_btn
.
attr
(
'disabled'
)
)
{
return
;
}
var
data
=
window
.
km
.
exportData
(
'json'
);
$share_btn
.
attr
(
'disabled'
,
'disabled'
).
text
(
'正在分享...'
);
$user_menu
.
attachTo
(
$user_btn
);
var
share_id
=
uuid
();
var
shareUrl
=
baseUrl
+
'index.html?share_id='
+
share_id
;
share
(
data
,
share_id
,
function
(
success
)
{
if
(
success
)
{
var
$popup
=
$
(
'<div></div>'
).
addClass
(
'popup'
).
appendTo
(
'body'
);
$popup
.
css
(
{
'position'
:
'absolute'
,
'right'
:
10
,
'top'
:
$share_btn
.
offset
().
top
+
$share_btn
.
height
()
+
10
,
'width'
:
250
,
'padding'
:
10
,
'background'
:
'white'
,
'border-radius'
:
'5px'
,
'box-shadow'
:
'1px 2px 4px rgba(0, 0, 0, .3)'
}
);
$popup
.
append
(
'<p style="margin: 5px 0; font-size: 12px;">分享成功,请复制URL:</p>'
);
$save_btn
=
$
(
'<button>保存</button>'
).
click
(
saveThisFile
).
addClass
(
'baidu-cloud'
);
var
$input
=
$
(
'<input type="text" style="width: 250px;" value="'
+
shareUrl
+
'"></input>'
).
appendTo
(
$popup
);
$input
[
0
].
select
();
$popup
.
mousedown
(
function
(
e
)
{
e
.
stopPropagation
();
}
);
$
(
'body'
).
on
(
'mousedown'
,
function
(
e
)
{
$popup
.
fadeOut
(
'fast'
,
function
()
{
$popup
.
remove
();
}
);
$share_btn
.
removeAttr
(
'disabled'
).
text
(
'分享'
);
$
(
'body'
).
off
(
'mousedown'
,
arguments
.
callee
);
}
);
}
}
);
}
).
addClass
(
'share'
);
$share_btn
=
$
(
'<button>分享</button>'
).
click
(
shareThisFile
).
addClass
(
'share'
);
var
AK
,
thisMapFilename
,
currentUser
;
var
AK
,
thisMapFilename
,
currentUser
,
share_id
=
uuid
(),
isShareLink
;
AK
=
'wiE55BGOG8BkGnpPs6UNtPbb'
;
...
...
@@ -85,11 +87,6 @@ $( function () {
}
}
);
currentUser
=
baidu
.
frontia
.
getCurrentAccount
();
if
(
currentUser
)
{
setCurrentUser
(
currentUser
);
}
function
login
()
{
var
options
=
{
response_type
:
'token'
,
...
...
@@ -127,19 +124,49 @@ $( function () {
function
loadRecent
()
{
var
sto
=
baidu
.
frontia
.
personalStorage
;
$user_btn
.
loading
(
'加载最近脑图...'
);
sto
.
listFile
(
'apps/kityminder/'
,
{
by
:
'time'
,
success
:
function
(
result
)
{
if
(
result
.
list
.
length
)
{
if
(
!
isShareLink
)
{
loadPersonal
(
result
.
list
[
0
].
path
);
}
else
{
$user_btn
.
loading
(
false
);
}
addToRecentMenu
(
result
.
list
);
}
}
}
);
}
function
addToRecentMenu
(
list
)
{
console
.
log
(
list
);
list
.
forEach
(
function
(
file
)
{
$user_menu
.
appendItem
(
{
item
:
{
label
:
getFileName
(
file
.
path
),
value
:
file
.
path
},
click
:
openFile
}
);
}
);
}
function
getFileName
(
path
)
{
var
filename
=
path
.
substr
(
path
.
lastIndexOf
(
'/'
)
+
1
);
return
filename
.
substr
(
0
,
filename
.
lastIndexOf
(
'.'
)
);
}
function
openFile
(
e
)
{
var
path
=
$
(
this
).
data
(
'value'
);
loadPersonal
(
path
);
}
function
loadPersonal
(
path
)
{
var
sto
=
baidu
.
frontia
.
personalStorage
;
thisMapFilename
=
path
;
$user_btn
.
loading
(
'加载“'
+
getFileName
(
path
)
+
'”...'
);
sto
.
getFileUrl
(
path
,
{
success
:
function
(
url
)
{
$
.
ajax
(
{
...
...
@@ -148,30 +175,46 @@ $( function () {
dataType
:
'text'
,
success
:
function
(
result
)
{
window
.
km
.
importData
(
result
,
'json'
);
$user_btn
.
loading
(
false
).
text
(
getFileName
(
path
)
);
}
}
);
}
}
);
}
function
getMapFileName
()
{
return
'/apps/kityminder/'
+
window
.
km
.
getMinderTitle
()
+
'.km'
;
}
function
newFile
()
{
thisMapFilename
=
null
;
window
.
km
.
importData
(
'新建脑图'
,
'plain'
);
$user_btn
.
text
(
'<新建脑图>'
);
}
function
saveThisFile
()
{
var
data
=
window
.
km
.
exportData
(
'json'
);
save
(
data
,
thisMapFilename
,
function
(
success
,
info
)
{
save
(
data
,
thisMapFilename
||
getMapFileName
()
,
function
(
success
,
info
)
{
if
(
success
)
{
$save_btn
.
text
(
'保存成功!'
);
setTimeout
(
function
()
{
$save_btn
.
removeAttr
(
'disabled'
).
text
(
'保存'
);
$save_btn
.
loading
(
false
);
},
3000
);
if
(
!
thisMapFilename
)
{
thisMapFilename
=
info
.
path
;
addToRecentMenu
(
[
info
]
);
$user_btn
.
text
(
getFileName
(
thisMapFilename
)
);
}
}
console
.
log
(
info
);
}
);
$save_btn
.
attr
(
'disabled'
,
'disabled'
).
text
(
'正在保存...'
);
$save_btn
.
loading
(
'正在保存...'
);
}
function
save
(
file
,
filename
,
callback
)
{
var
sto
=
baidu
.
frontia
.
personalStorage
;
var
options
=
{
ondup
:
sto
.
constant
.
ONDUP_OVERWRITE
,
ondup
:
thisMapFilename
?
sto
.
constant
.
ONDUP_OVERWRITE
:
sto
.
constant
.
ONDUP_NEWCOPY
,
success
:
function
(
result
)
{
callback
(
true
,
result
);
},
...
...
@@ -186,6 +229,47 @@ $( function () {
return
(
(
+
new
Date
()
*
10000
)
+
(
Math
.
random
()
*
9999
)
).
toString
(
36
);
}
function
shareThisFile
()
{
if
(
$share_btn
.
disabled
()
)
{
return
;
}
var
data
=
window
.
km
.
exportData
(
'json'
);
$share_btn
.
loading
(
'正在分享...'
);
var
shareUrl
=
baseUrl
+
'index.html?share_id='
+
share_id
;
share
(
data
,
share_id
,
function
(
success
)
{
if
(
success
)
{
var
$popup
=
$
(
'<div></div>'
).
addClass
(
'popup'
).
appendTo
(
'body'
);
$popup
.
css
(
{
'position'
:
'absolute'
,
'right'
:
10
,
'top'
:
$share_btn
.
offset
().
top
+
$share_btn
.
height
()
+
10
,
'width'
:
250
,
'padding'
:
10
,
'background'
:
'white'
,
'border-radius'
:
'5px'
,
'box-shadow'
:
'1px 2px 4px rgba(0, 0, 0, .3)'
}
);
$popup
.
append
(
'<p style="margin: 5px 0; font-size: 12px;">分享成功,请复制URL:</p>'
);
var
$input
=
$
(
'<input type="text" style="width: 250px;" value="'
+
shareUrl
+
'"></input>'
).
appendTo
(
$popup
);
$input
[
0
].
select
();
$popup
.
mousedown
(
function
(
e
)
{
e
.
stopPropagation
();
}
);
$
(
'body'
).
on
(
'mousedown'
,
function
(
e
)
{
$popup
.
fadeOut
(
'fast'
,
function
()
{
$popup
.
remove
();
}
);
$share_btn
.
loading
(
false
);
$
(
'body'
).
off
(
'mousedown'
,
arguments
.
callee
);
}
);
}
}
);
}
function
share
(
text
,
shareId
,
callback
)
{
var
data
=
new
baidu
.
frontia
.
Data
(
{
shareMinder
:
{
...
...
@@ -212,16 +296,24 @@ $( function () {
var
query
=
new
baidu
.
frontia
.
storage
.
Query
();
query
.
on
(
'shareMinder.id'
).
equal
(
shareId
);
$share_btn
.
attr
(
'disabled'
,
'disabled'
).
text
(
'正在加载分享内容...'
);
$share_btn
.
loading
(
'正在加载分享内容...'
);
baidu
.
frontia
.
storage
.
findData
(
query
,
{
success
:
function
(
ret
)
{
window
.
km
.
importData
(
ret
.
result
[
0
].
obj
.
shareMinder
.
data
,
'json'
);
$share_btn
.
removeAttr
(
'disabled'
).
text
(
'分享'
);
$share_btn
.
loading
(
false
);
},
error
:
function
(
e
)
{
console
.
log
(
e
);
}
}
);
isShareLink
=
true
;
}
loadShare
();
currentUser
=
baidu
.
frontia
.
getCurrentAccount
();
if
(
currentUser
)
{
setCurrentUser
(
currentUser
);
}
else
{
$login_btn
.
appendTo
(
$panel
);
}
}
);
\ No newline at end of file
dist/social.less
View file @
4f8a98c8
...
...
@@ -5,7 +5,7 @@
line-height: 20px;
text-align: right;
overflow: hidden;
button
, .kmui-btn
{
button {
outline: none;
display: inline-block;
padding: 0 15px;
...
...
@@ -72,5 +72,25 @@
border-radius: 2px;
margin-right: 7px;
}
&.user-file {
padding-right: 28px;
position: relative;
&:after {
content: ' ';
display: block;
position: absolute;
right: 10px;
top: 15px;
width: 0;
height: 0;
border: solid;
border-width: 4px 5px;
border-color: #FFFFFF transparent transparent transparent;
}
}
}
}
.user-file-menu {
margin-top: 20px;
margin-left: 1px;
}
\ No newline at end of file
src/ui/dropmenu.js
View file @
4f8a98c8
//dropmenu 类
KM
.
ui
.
define
(
'dropmenu'
,
{
KM
.
ui
.
define
(
'dropmenu'
,
{
tmpl
:
'<ul class="kmui-dropdown-menu" aria-labelledby="dropdownMenu" >'
+
'<%if(data && data.length){for(var i=0,ci;ci=data[i++];){%>'
+
'<%if(ci.divider){%><li class="kmui-divider"></li><%}else{%>'
+
'<li <%if(ci.active||ci.disabled){%>class="<%= ci.active||
\'\'
%> <%=ci.disabled||
\'\'
%>" <%}%> data-value="<%= ci.value%>" data-label="<%= ci.label%>">'
+
'<a href="#" tabindex="-1"><em class="kmui-dropmenu-checkbox"><i class="kmui-icon-ok"></i></em><%= ci.label%></a>'
+
'</li><%}}%>'
+
'<%}%>'
+
'<%}%>'
+
'</ul>'
,
subTmpl
:
'<%if(data && data.length){for(var i=0,ci;ci=data[i++];){%>'
+
subTmpl
:
'<%if(data && data.length){for(var i=0,ci;ci=data[i++];){%>'
+
'<%if(ci.divider){%><li class="kmui-divider"></li><%}else{%>'
+
'<li <%if(ci.active||ci.disabled){%>class="<%= ci.active||
\'\'
%> <%=ci.disabled||
\'\'
%>" <%}%> data-value="<%= ci.value%>" data-label="<%= ci.label%>">'
+
'<a href="#" tabindex="-1"><em class="kmui-dropmenu-checkbox"><i class="kmui-icon-ok"></i></em><%= ci.label%></a>'
+
...
...
@@ -16,32 +16,33 @@ KM.ui.define('dropmenu', {
'<%}%>'
,
defaultOpt
:
{
data
:
[],
click
:
function
()
{
}
click
:
function
()
{}
},
setData
:
function
(
items
)
{
setData
:
function
(
items
)
{
this
.
root
().
html
(
$
.
parseTmpl
(
this
.
subTmpl
,
items
)
);
this
.
root
().
html
(
$
.
parseTmpl
(
this
.
subTmpl
,
items
)
);
return
this
;
},
position
:
function
(
offset
)
{
this
.
root
().
css
({
left
:
offset
.
x
,
top
:
offset
.
y
});
position
:
function
(
offset
)
{
this
.
root
().
css
(
{
left
:
offset
.
x
,
top
:
offset
.
y
}
);
return
this
;
},
show
:
function
()
{
if
(
this
.
trigger
(
'beforeshow'
)
===
false
)
{
show
:
function
()
{
if
(
this
.
trigger
(
'beforeshow'
)
===
false
)
{
return
;
}
else
{
this
.
root
().
css
({
display
:
'block'
});
this
.
trigger
(
'aftershow'
);
}
else
{
this
.
root
().
css
(
{
display
:
'block'
}
);
this
.
trigger
(
'aftershow'
);
}
return
this
;
},
init
:
function
(
options
)
{
init
:
function
(
options
)
{
var
me
=
this
;
var
eventName
=
{
click
:
1
,
...
...
@@ -49,63 +50,72 @@ KM.ui.define('dropmenu', {
mouseout
:
1
};
this
.
root
(
$
(
$
.
parseTmpl
(
this
.
tmpl
,
options
))).
on
(
'click'
,
'li[class!="kmui-disabled kmui-divider kmui-dropdown-submenu"]'
,
function
(
evt
)
{
$
.
proxy
(
options
.
click
,
me
,
evt
,
$
(
this
).
data
(
'value'
),
$
(
this
).
data
(
'label'
),
$
(
this
)
)()
}
).
find
(
'li'
).
each
(
function
(
i
,
el
)
{
var
$this
=
$
(
this
);
if
(
!
$this
.
hasClass
(
"kmui-disabled kmui-divider kmui-dropdown-submenu"
)
)
{
var
data
=
options
.
data
[
i
];
$
.
each
(
eventName
,
function
(
k
)
{
data
[
k
]
&&
$this
[
k
](
function
(
evt
)
{
$
.
proxy
(
data
[
k
],
el
)(
evt
,
data
,
me
.
root
)
}
)
}
)
this
.
root
(
$
(
$
.
parseTmpl
(
this
.
tmpl
,
options
)
)
).
on
(
'click'
,
'li[class!="kmui-disabled kmui-divider kmui-dropdown-submenu"]'
,
function
(
evt
)
{
$
.
proxy
(
options
.
click
,
me
,
evt
,
$
(
this
).
data
(
'value'
),
$
(
this
).
data
(
'label'
),
$
(
this
)
)()
}
).
find
(
'li'
).
each
(
function
(
i
,
el
)
{
var
$this
=
$
(
this
);
if
(
!
$this
.
hasClass
(
"kmui-disabled kmui-divider kmui-dropdown-submenu"
)
)
{
var
data
=
options
.
data
[
i
];
$
.
each
(
eventName
,
function
(
k
)
{
data
[
k
]
&&
$this
[
k
](
function
(
evt
)
{
$
.
proxy
(
data
[
k
],
el
)(
evt
,
data
,
me
.
root
)
}
)
}
)
}
}
)
}
)
},
disabled
:
function
(
cb
)
{
$
(
'li[class!=kmui-divider]'
,
this
.
root
()).
each
(
function
()
{
var
$el
=
$
(
this
);
if
(
cb
===
true
)
{
$el
.
addClass
(
'kmui-disabled'
)
}
else
if
(
$
.
isFunction
(
cb
)
)
{
$el
.
toggleClass
(
'kmui-disabled'
,
cb
(
li
)
)
disabled
:
function
(
cb
)
{
$
(
'li[class!=kmui-divider]'
,
this
.
root
()
).
each
(
function
()
{
var
$el
=
$
(
this
);
if
(
cb
===
true
)
{
$el
.
addClass
(
'kmui-disabled'
)
}
else
if
(
$
.
isFunction
(
cb
)
)
{
$el
.
toggleClass
(
'kmui-disabled'
,
cb
(
li
)
)
}
else
{
$el
.
removeClass
(
'kmui-disabled'
)
$el
.
removeClass
(
'kmui-disabled'
)
}
});
}
);
},
val
:
function
(
val
)
{
val
:
function
(
val
)
{
var
currentVal
;
$
(
'li[class!="kmui-divider kmui-disabled kmui-dropdown-submenu"]'
,
this
.
root
()).
each
(
function
()
{
var
$el
=
$
(
this
);
if
(
val
===
undefined
)
{
if
(
$el
.
find
(
'em.kmui-dropmenu-checked'
).
length
)
{
currentVal
=
$el
.
data
(
'value'
);
$
(
'li[class!="kmui-divider kmui-disabled kmui-dropdown-submenu"]'
,
this
.
root
()
).
each
(
function
()
{
var
$el
=
$
(
this
);
if
(
val
===
undefined
)
{
if
(
$el
.
find
(
'em.kmui-dropmenu-checked'
).
length
)
{
currentVal
=
$el
.
data
(
'value'
);
return
false
}
}
else
{
$el
.
find
(
'em'
).
toggleClass
(
'kmui-dropmenu-checked'
,
$el
.
data
(
'value'
)
==
val
)
$el
.
find
(
'em'
).
toggleClass
(
'kmui-dropmenu-checked'
,
$el
.
data
(
'value'
)
==
val
)
}
});
if
(
val
===
undefined
)
{
}
);
if
(
val
===
undefined
)
{
return
currentVal
}
},
addSubmenu
:
function
(
label
,
menu
,
index
)
{
appendItem
:
function
(
item
)
{
var
itemTpl
=
'<%if(item.divider){%><li class="kmui-divider"></li><%}else{%>'
+
'<li <%if(item.active||item.disabled){%>class="<%= item.active||
\'\'
%> <%=item.disabled||
\'\'
%>" <%}%> data-value="<%= item.value%>" data-label="<%= item.label%>">'
+
'<a href="#" tabindex="-1"><em class="kmui-dropmenu-checkbox"><i class="kmui-icon-ok"></i></em><%= item.label%></a>'
+
'</li><%}%>'
;
var
html
=
$
.
parseTmpl
(
itemTpl
,
item
);
var
$item
=
$
(
html
).
click
(
item
.
click
);
this
.
root
().
append
(
$item
);
},
addSubmenu
:
function
(
label
,
menu
,
index
)
{
index
=
index
||
0
;
var
$list
=
$
(
'li[class!=kmui-divider]'
,
this
.
root
()
);
var
$node
=
$
(
'<li class="kmui-dropdown-submenu"><a tabindex="-1" href="#">'
+
label
+
'</a></li>'
).
append
(
menu
);
var
$list
=
$
(
'li[class!=kmui-divider]'
,
this
.
root
()
);
var
$node
=
$
(
'<li class="kmui-dropdown-submenu"><a tabindex="-1" href="#">'
+
label
+
'</a></li>'
).
append
(
menu
);
if
(
index
>=
0
&&
index
<
$list
.
length
)
{
$node
.
insertBefore
(
$list
[
index
]
);
}
else
if
(
index
<
0
)
{
$node
.
insertBefore
(
$list
[
0
]
);
}
else
if
(
index
>=
$list
.
length
)
{
$node
.
appendTo
(
$list
);
if
(
index
>=
0
&&
index
<
$list
.
length
)
{
$node
.
insertBefore
(
$list
[
index
]
);
}
else
if
(
index
<
0
)
{
$node
.
insertBefore
(
$list
[
0
]
);
}
else
if
(
index
>=
$list
.
length
)
{
$node
.
appendTo
(
$list
);
}
}
},
'menu'
);
\ No newline at end of file
},
'menu'
);
\ No newline at end of file
src/ui/menu.js
View file @
4f8a98c8
...
...
@@ -31,7 +31,7 @@ KM.ui.define('menu',{
var
me
=
this
;
if
(
!
$obj
.
data
(
'$mergeObj'
)){
$obj
.
data
(
'$mergeObj'
,
me
.
root
());
if
(
$obj
.
kmui
()
.
wrapclick
){
if
(
$obj
.
kmui
()){
$obj
.
on
(
'wrapclick'
,
function
(
evt
){
me
.
supper
.
show
.
call
(
me
,
$obj
,
''
,
'offset'
,
15
)
});
...
...
themes/default/css/dropmenu.css
View file @
4f8a98c8
...
...
@@ -20,11 +20,12 @@
.kmui-dropdown-menu
.kmui-divider
{
height
:
1px
;
margin
:
9
px
0
;
margin
:
5
px
0
;
overflow
:
hidden
;
background-color
:
#e5e5e5
;
}
.kmui-dropdown-menu
.kmui-divider
:first-child
{
.kmui-dropdown-menu
.kmui-divider
:first-child
,
.kmui-dropdown-menu
.kmui-divider
:last-child
{
display
:
none
;
}
...
...
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