mirror of
https://shylinux.com/x/volcanos
synced 2025-04-25 00:38:05 +08:00
add theme
This commit is contained in:
parent
029cbf5de9
commit
899fab6bf6
9
frame.js
9
frame.js
@ -141,16 +141,15 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
|
||||
can.core.Item(meta.feature, function(key, cb) { cb.help && sub.user.trans(sub, kit.Dict(key, cb.help)) })
|
||||
meta.msg && can.onmotion.delay(can, function() { var msg = sub.request(); msg.Copy(can.base.Obj(meta.msg))
|
||||
sub.onappend._output(sub, msg, meta.display||msg.Option(ice.MSG_DISPLAY)||meta.feature.display)
|
||||
}), meta.inputs && sub.onappend._option(sub, meta, sub._option, meta.msg), can.base.isFunc(cb) && cb(sub)
|
||||
}), meta.inputs && sub.onappend._option(sub, meta, sub._option, meta.msg)
|
||||
sub._legend && (sub._legend.onclick = function(event) {
|
||||
can.user.carte(event, sub, sub.onaction, sub.onaction.list.concat([[ctx.ACTION].concat(can.core.Item(meta.feature._trans))]), function(event, button) { can.misc.Event(event, sub, function(msg) {
|
||||
msg.RunAction(event, can.core.Value(sub, chat._OUTPUTS_CURRENT), [ctx.ACTION, button]) || msg.RunAction(event, sub, [ctx.ACTION, button]) || sub.runAction(event, button)
|
||||
}) })
|
||||
})
|
||||
sub.isCmdMode() && can.onappend.style(sub, can.misc.Search(can, ctx.STYLE))
|
||||
sub.isCmdMode() && sub.Conf(can.misc.Search(can))
|
||||
if (can.user.isMobile && !can.user.isLandscape()) { return }
|
||||
if (can.page.ClassList.has(can, sub._target, html.OUTPUT)) { return }
|
||||
sub.isCmdMode() && can.onappend.style(sub, can.misc.Search(can, ctx.STYLE)), sub.isCmdMode() && sub.Conf(can.misc.Search(can))
|
||||
can.base.isFunc(cb) && cb(sub)
|
||||
if (can.user.isMobile && !can.user.isLandscape()) { return } if (can.page.ClassList.has(can, sub._target, html.OUTPUT)) { return }
|
||||
sub.isCmdMode() && !can.base.isIn(meta.index, web.CODE_VIMER, web.CODE_INNER, web.CHAT_MACOS_DESKTOP) && can.page.insertBefore(can, can.user.header(can), sub._output, sub._fields)
|
||||
}); return sub
|
||||
},
|
||||
|
39
index.css
39
index.css
@ -1,5 +1,5 @@
|
||||
* { tab-size:4; box-sizing:border-box; padding:0; border:0; margin:0; }
|
||||
body { background-color:black; font-size:16px; }
|
||||
body { font-size:16px; }
|
||||
legend { padding:0 20px; }
|
||||
input:not([type=file]) { padding:0 10px; }
|
||||
input:not([type=button]) { width:120px; }
|
||||
@ -69,17 +69,6 @@ body>div.upload div.output div.progress { background-color:red; height:10px; wid
|
||||
body>div.upload div.status div.cost { float:left; }
|
||||
body>div.upload div.status div.show { float:right; }
|
||||
body>div.upload div.status div.size { text-align:center; }
|
||||
/* hover */
|
||||
input:hover[type=button][name=create] { background-color:blue; color:white; }
|
||||
input:hover[type=button][name=insert] { background-color:blue; color:white; }
|
||||
input:hover[type=button][name=restart] { background-color:blue; color:white; }
|
||||
input:hover[type=button][name=start] { background-color:blue; color:white; }
|
||||
input:hover[type=button][name=run] { background-color:blue; color:white; }
|
||||
input:hover[type=button][name=open] { background-color:blue; color:white; }
|
||||
input:hover[type=button][name=stop] { background-color:red; color:white; }
|
||||
input:hover[type=button][name=trash] { background-color:red; color:white; }
|
||||
input:hover[type=button][name=delete] { background-color:red; color:white; }
|
||||
input:hover[type=button][name=remove] { background-color:red; color:white; }
|
||||
/* font */
|
||||
legend { font-size:1.2rem; line-height:30px; height:32px; }
|
||||
select, input { font-size:1rem; height:32px; } textarea::placeholder, input::placeholder { font-style:italic; }
|
||||
@ -122,7 +111,6 @@ div.action>div.item.select:hover>span.icon { visibility:visible; }
|
||||
div.item.text>span.icon.delete { font-size:20px; visibility:hidden; }
|
||||
div.item.text:hover>span.icon.delete { visibility:visible; }
|
||||
div.tabs span.icon { margin-left:5px; visibility:hidden; }
|
||||
div.tabs span.icon:hover { background-color:aliceblue; color:black; }
|
||||
div.tabs>div:hover span.icon { visibility:visible; }
|
||||
div.tabs>div.select span.icon { visibility:visible; }
|
||||
div.action>div.tabs:hover span.icon { visibility:visible; }
|
||||
@ -177,11 +165,12 @@ fieldset>div.output>div.project { border-right:gray solid 1px; min-width:120px;
|
||||
fieldset>div.output div.profile { border-left:gray solid 1px; max-width:320px; }
|
||||
fieldset>div.output div.display { border-top:gray solid 1px; }
|
||||
/* table card */
|
||||
div.output.card>div.item.stop { color:gray; }
|
||||
div.output.card>div.item.stop { color:var(--disable-fg-color); }
|
||||
div.output.card>div.item { padding:10px; border:#e7e7e7 solid 1px; margin:10px; width:320px; float:left; }
|
||||
div.output.card>div.item>div.title { font-size:1.2rem; font-weight:bold; padding:10px; border-bottom:solid 1px #e7e7e7; }
|
||||
div.output.card>div.item>div.content { padding:10px; height:70px; }
|
||||
div.output.card>div.item>div.action { text-align:right; width:100%; display:flex; }
|
||||
div.output.card>div.item:not(:hover)>div.action { visibility:hidden; }
|
||||
div.output.card>div.item>div.action>input { margin-right:5px; }
|
||||
/* display */
|
||||
fieldset.panel>legend { display:none; }
|
||||
@ -208,7 +197,24 @@ fieldset.plug div.output table.content { width:100%; }
|
||||
div.carte.select.float>div.item { text-align:center; }
|
||||
legend, select, input[type=button], th, table.content td, h1, h2, h3, div.item, div.tabs { cursor:pointer; }
|
||||
div.story[data-type=spark] { cursor:copy; }
|
||||
/* hover */
|
||||
input:hover[type=button][name=create] { background-color:var(--create-bg-color); color:var(--create-fg-color); }
|
||||
input:hover[type=button][name=insert] { background-color:var(--create-bg-color); color:var(--create-fg-color); }
|
||||
input:hover[type=button][name=restart] { background-color:var(--create-bg-color); color:var(--create-fg-color); }
|
||||
input:hover[type=button][name=start] { background-color:var(--create-bg-color); color:var(--create-fg-color); }
|
||||
input:hover[type=button][name=run] { background-color:var(--create-bg-color); color:var(--create-fg-color); }
|
||||
input:hover[type=button][name=open] { background-color:var(--create-bg-color); color:var(--create-fg-color); }
|
||||
input:hover[type=button][name=stop] { background-color:var(--danger-bg-color); color:var(--danger-fg-color); }
|
||||
input:hover[type=button][name=trash] { background-color:var(--danger-bg-color); color:var(--danger-fg-color); }
|
||||
input:hover[type=button][name=delete] { background-color:var(--danger-bg-color); color:var(--danger-fg-color); }
|
||||
input:hover[type=button][name=remove] { background-color:var(--danger-bg-color); color:var(--danger-fg-color); }
|
||||
/* theme */
|
||||
body {
|
||||
--body-bg-color:black; --body-fg-color:silver;
|
||||
--danger-bg-color:red; --danger-fg-color:white;
|
||||
--create-bg-color:blue; --create-fg-color:white;
|
||||
--disable-fg-color:gray;
|
||||
}
|
||||
body { background-color:var(--body-bg-color); color:var(--body-fg-color); }
|
||||
body legend { background-color:var(--legend-bg-color); border-radius:var(--input-radius); }
|
||||
body legend:hover { color:var(--hover-fg-color) }
|
||||
@ -231,17 +237,18 @@ body div.item:hover { background-color:var(--hover-bg-color); color:var(--hover-
|
||||
body div.item.select { background-color:var(--hover-bg-color); color:var(--hover-fg-color); }
|
||||
body span.item:hover { background-color:var(--hover-bg-color); color:var(--hover-fg-color); }
|
||||
body span.item.select { background-color:var(--hover-bg-color); color:var(--hover-fg-color); }
|
||||
body span.icon:hover { background-color:var(--hover-bg-color); color:var(--hover-fg-color); }
|
||||
body div.action div.tabs:hover { background-color:var(--hover-bg-color); color:var(--hover-fg-color); }
|
||||
body div.action div.tabs.select { background-color:var(--hover-bg-color); color:var(--hover-fg-color); }
|
||||
body div.output { background-color:var(--output-bg-color); }
|
||||
body fieldset>div.status { border-top:var(--status-border); }
|
||||
body fieldset:not(.panel) { background-color:var(--plugin-bg-color); border-radius:var(--plugin-radius); }
|
||||
body fieldset:not(.panel) { background-color:var(--plugin-bg-color); color:var(--plugin-fg-color); border-radius:var(--plugin-radius); }
|
||||
body fieldset.panel:not(.main) { background-color:var(--panel-bg-color); color:var(--panel-fg-color); }
|
||||
body fieldset.panel:not(.main)>div.output { background-color:var(--panel-output-bg-color); color:var(--panel-output-fg-color); }
|
||||
body fieldset.input div.output { background-color:var(--plugin-bg-color); }
|
||||
body fieldset.input tr:hover { background-color:var(--tr-hover-bg-color); }
|
||||
body fieldset.input td:hover { background-color:var(--td-hover-bg-color); }
|
||||
body div.float { background-color:var(--float-bg-color); }
|
||||
body div.float { background-color:var(--float-bg-color); color:var(--float-fg-color); }
|
||||
body div.carte div.item { background-color:var(--carte-bg-color); }
|
||||
body div.carte div.item:hover { background-color:var(--hover-bg-color); }
|
||||
body div.zone>div.item { background-color:var(--th-bg-color); }
|
||||
|
@ -148,6 +148,7 @@ Volcanos("user", {
|
||||
input: function(event, can, form, cb, button) { if (!form || form.length == 0) { return cb() }
|
||||
var msg = can.request(event); event = event._event||event; var need = {}
|
||||
var ui = can.page.Append(can, document.body, [{view: [[html.INPUT, chat.FLOAT]], list: [
|
||||
msg.Option(wiki.TITLE) && {view: [wiki.TITLE, html.LEGEND, msg.Option(wiki.TITLE)]},
|
||||
{view: html.OPTION, list: [{type: html.TABLE, list: can.core.List(form, function(item) {
|
||||
item = can.base.isString(item)? {type: html.TEXT, name: item}: item.length > 0? {type: html.SELECT, name: item[0], values: item.slice(1)}: item
|
||||
item.type = item.type||(item.values? html.SELECT: item.name == html.TEXT? html.TEXTAREA: html.TEXT), need[item.name] = item.need
|
||||
@ -214,7 +215,7 @@ Volcanos("user", {
|
||||
return a.click(), can.page.Remove(can, a), path
|
||||
},
|
||||
toimage: function(can, name, target, silent) { var toast = can.user.toastProcess(can, "生成中...")
|
||||
can.require(["https://cdn.jsdelivr.net/npm/html2canvas@1.0.0-rc.5/dist/html2canvas.min.js"], function() { toast.close()
|
||||
can.require(["/require/modules/html2canvas/dist/html2canvas.min.js"], function() { toast.close()
|
||||
html2canvas(target||can._target).then(function (canvas) { var url = canvas.toDataURL(web.IMAGE_PNG)
|
||||
silent? (can.user.download(can, url, name, nfs.PNG), can.user.toastSuccess(can)): can.user.toastImage(can, name, url)
|
||||
})
|
||||
|
@ -28,7 +28,11 @@ Volcanos(chat.ONACTION, {list: [mdb.CREATE, web.SHARE, web.REFRESH], _init: func
|
||||
onlayout: function(can, layout) { can.user.isMobile || can.onmotion.toggle(can, can._target, !layout || layout == "tabs") },
|
||||
ontitle: function(can, msg) { can.misc.sessionStorage(can, CAN_RIVER, ""), can.misc.sessionStorage(can, CAN_STORM, "") },
|
||||
|
||||
create: function(event, can) { can.user.input(event, can, [{name: mdb.TYPE, values: [aaa.TECH, aaa.ROOT, aaa.TECH, aaa.VOID], _trans: "类型"}, {name: mdb.NAME, value: "hi", _trans: "群名"}, {name: mdb.TEXT, value: "hello", _trans: "简介"}], function(args) {
|
||||
create: function(event, can) { can.user.input(can.request(event, {title: "创建群组"}), can, [
|
||||
{name: mdb.TYPE, values: [aaa.TECH, aaa.ROOT, aaa.TECH, aaa.VOID], _trans: "类型"},
|
||||
{name: mdb.NAME, value: "hi", _trans: "群名", need: "must"},
|
||||
{name: mdb.TEXT, value: "hello", _trans: "简介"},
|
||||
], function(args) {
|
||||
can.runAction(event, mdb.CREATE, args, function(msg) { can.misc.Search(can, {river: msg.Result()}) })
|
||||
}) },
|
||||
share: function(event, can) { can.core.CallFunc(can.ondetail.share, {event: event, can: can}) },
|
||||
@ -85,7 +89,7 @@ Volcanos(chat.ONDETAIL, {
|
||||
can.onmotion.delay(can, function() { toast.close(), next(), index == array.length-1 && can.user.toastSuccess(can) })
|
||||
})
|
||||
}) },
|
||||
addcmd: function(event, can, button, river, storm) { can.user.input(event, can, [{name: web.SPACE, value: can.misc.Search(can, ice.POD)||""}, {name: ctx.INDEX, need: "must"}, ctx.ARGS, ctx.DISPLAY, ctx.STYLE], function(args) {
|
||||
addcmd: function(event, can, button, river, storm) { can.user.input(can.request(event, {title: "添加工具"}), can, [{name: web.SPACE, value: can.misc.Search(can, ice.POD)||""}, {name: ctx.INDEX, need: "must"}, ctx.ARGS, ctx.DISPLAY, ctx.STYLE], function(args) {
|
||||
can.run({}, [river, storm, chat.STORM, ctx.ACTION, mdb.INSERT].concat(args), function(msg) {
|
||||
can.onengine.signal(can, chat.ONSTORM_SELECT, can.request(event, {river: can.Conf(chat.RIVER, river), storm: can.Conf(chat.STORM, storm), refresh: ice.TRUE}))
|
||||
})
|
||||
@ -94,7 +98,10 @@ Volcanos(chat.ONDETAIL, {
|
||||
can.run(event, [river, storm, chat.STORM, ctx.ACTION, mdb.MODIFY].concat(args), function() { can.page.Modify(can, can.ui.storm_list[can.core.Keys(river, storm)], args[1]), can.user.toastSuccess(can) })
|
||||
}) },
|
||||
remove: function(event, can, button, river, storm) { can.run(event, [river, storm, chat.STORM, ctx.ACTION, mdb.REMOVE], function(msg) { can.misc.Search(can, {river: river, storm: ""}) }) },
|
||||
create: function(event, can, button, river) { can.user.input(event, can, [{name: mdb.NAME, value: "hi", _trans: "名称"}, {name: mdb.TEXT, value: "hello", _trans: "简介"}], function(args) {
|
||||
create: function(event, can, button, river) { can.user.input(can.request(event, {title: "添加应用"}), can, [
|
||||
{name: mdb.NAME, value: "hi", _trans: "名称", need: "must"},
|
||||
{name: mdb.TEXT, value: "hello", _trans: "简介"},
|
||||
], function(args) {
|
||||
can.run({}, [river, chat.STORM, ctx.ACTION, mdb.CREATE].concat(args), function(msg) { can.misc.Search(can, {river: river, storm: msg.Result()}) })
|
||||
}) },
|
||||
})
|
||||
|
Loading…
x
Reference in New Issue
Block a user