1
0
mirror of https://shylinux.com/x/volcanos synced 2025-04-25 00:38:05 +08:00

add theme

This commit is contained in:
IT 老营长 @云轩领航-创始人 2023-06-24 11:55:34 +08:00
parent 029cbf5de9
commit 899fab6bf6
4 changed files with 39 additions and 25 deletions

View File

@ -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
},

View File

@ -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); }

View File

@ -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)
})

View File

@ -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()}) })
}) },
})