diff --git a/frame.js b/frame.js index 4f958dd4..d79aea16 100644 --- a/frame.js +++ b/frame.js @@ -367,6 +367,7 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) { }) }, table: function(can, msg, cb, target, keys) { if (!msg || msg.Length() == 0) { return } var meta = can.base.Obj(msg.Option(mdb.META)) if (can.user.isMobile) { can.base.toLast(msg.append, mdb.TIME) } can.base.toLast(msg.append, web.LINK), can.base.toLast(msg.append, ctx.ACTION) + if (msg.append && msg.append[msg.append.length-1] == ctx.ACTION && can.core.List(msg[ctx.ACTION], function(item) { if (item) { return item } }).length == 0) { msg.append.pop() } if (msg.append[msg.append.length-1] == ctx.ACTION && (!msg[ctx.ACTION] || msg[ctx.ACTION].length == 0)) { msg.append.pop() } var table = can.page.AppendTable(can, msg, target||can._output, msg.append, cb||function(value, key, index, data, list) { if (msg.append.length == 2 && msg.append[0] == mdb.KEY && msg.append[1] == mdb.VALUE) { if (key == mdb.VALUE) { key = data.key } data = {}, can.core.List(list, function(item) { data[item.key] = item.value }) } diff --git a/index.css b/index.css index 552cdbc0..ae25d6ac 100644 --- a/index.css +++ b/index.css @@ -44,6 +44,7 @@ body { } input { font-family:var(--input-font-family); } body { font-family:var(--body-font-family); } +body.windows { --code-font-family:"Courier New"; } body.cmd { --plug-width:1200px; --plug-height:480px; } @@ -67,7 +68,6 @@ body.width5 { /* 1600-1920 */ body.width6 { /* 1920-2240 显示器 */ --river-width:280px; --input-width:180px; } -body.windows { --code-font-family:"Courier New"; } /* element */ * { tab-size:4; box-sizing:border-box; padding:0; border:0; margin:0; } @@ -91,7 +91,7 @@ table.content th.select { border:var(--notice-bg-color) solid 1px; } table.content th.select[data-asc="1"] i.bi-sort-down-alt { display:none; } table.content th.select[data-asc="0"] i.bi-sort-up { display:none; } table.content td { padding:var(--table-padding); } -table.content.checkbox th:first-child { text-align:center; padding:var(--table-padding); position:sticky; left:2px; } +table.content.checkbox th:first-child { text-align:center; padding:var(--table-padding); position:sticky; left:2px; z-index:1; } table.content.checkbox td:first-child { background-color:var(--th-bg-color); text-align:center; position:sticky; left:2px; } table.content.detail td:first-child { width:var(--input-width); } table.content.action th:last-child { position:sticky; right:2px; } @@ -185,7 +185,7 @@ body>div.input td:hover span.icons { visibility:visible; } body>div.input textarea { height:var(--textarea-height); width:var(--river-width) !important; } body>div.input select { width:var(--river-width) !important; } body>div.input:not(.vimer) input:not([type=button]) { width:var(--river-width) !important; } -body>div.input input[type=text] { width:var(--river-width) !important; } +body>div.input:not(.vimer) input[type=text] { width:var(--river-width) !important; } body>div.input input.select[type=button] { width:var(--river-width) !important; } body>div.input input[name=cancel] { border:var(--danger-bg-color) solid 1px; } body>div.input input[name=submit] { border:var(--notice-bg-color) solid 1px; } @@ -242,7 +242,7 @@ body div.path { font-family:var(--code-font-family); } body div.carte { font-family:var(--code-font-family); } /* icon */ fieldset>legend>i { margin-right:var(--input-margin); } -div.item>i:first-child { margin-right:var(--button-margin); height:var(--action-height); } +fieldset.River div.item>i:first-child { margin-right:var(--button-margin); } form.option>div.item.icon { position:relative; height:var(--action-height); overflow:hidden; } form.option>div.item.icon { font-size:var(--icon-font-size); padding:0 var(--input-padding); } form.option>div.item.icon.refresh { font-size:28px; line-height:28px; height:calc(var(--action-height) - 5px); } @@ -260,12 +260,12 @@ div.item.text.line>input { width:var(--button-width) !important; } div.item.text.limit>input { width:var(--button-width); } div.item.text.offend>input { width:var(--button-width); } div.item.text.will>input { border:var(--box-notice); } -div.item.text>i:first-child { position:absolute; left:0; padding:7px; } +div.item.text>i:first-child { position:absolute; left:var(--input-padding); } div.item.text>span.icon { font-size:var(--icon-font-size); padding:var(--input-padding); position:absolute; right:0; visibility:hidden; } div.item.text:hover>span.icon { visibility:visible; } div.item.button { position:relative; height:var(--action-height); } div.item.button>span.icon { font-size:var(--icon-font-size); padding:0 var(--input-padding); } -div.item.button.select>span.icon { visibility:hidden; position:absolute; right:0; } +div.item.button.select>span.icon { padding:var(--input-padding); visibility:hidden; position:absolute; right:0; } div.item.button.select:hover>span.icon { visibility:visible; } div.item.button.icons>i { font-size:20px; padding:var(--input-padding); } div.item.button.create>span.icon { font-size:30px; margin-top:-5px; } @@ -440,10 +440,10 @@ span.item:hover { background-color:var(--hover-bg-color); color:var(--hover-fg-c span.icon:hover { background-color:var(--hover-bg-color); color:var(--hover-fg-color); } div.item:hover { background-color:var(--hover-bg-color); color:var(--hover-fg-color); } div.item.select:not(.button) { background-color:var(--hover-bg-color); color:var(--hover-fg-color); } -div.item.danger input:hover[type=button] { background-color:var(--danger-bg-color); color:var(--danger-fg-color); } -div.item.notice input:hover[type=button] { background-color:var(--notice-bg-color); color:var(--notice-fg-color); } -div.item.danger input { border:var(--danger-bg-color) solid 1px; } -div.item.notice input { border:var(--notice-bg-color) solid 1px; } +div.item.button.danger input:hover[type=button] { background-color:var(--danger-bg-color); color:var(--danger-fg-color); } +div.item.button.notice input:hover[type=button] { background-color:var(--notice-bg-color); color:var(--notice-fg-color); } +div.item.button.danger input { border:var(--danger-bg-color) solid 1px; } +div.item.button.notice input { border:var(--notice-bg-color) solid 1px; } div.action div.tabs:hover { background-color:var(--output-bg-color); color:var(--hover-fg-color); border-top-left-radius:var(--button-margin); border-top-right-radius:var(--button-margin); diff --git a/lib/page.js b/lib/page.js index 12bab548..69585ad7 100644 --- a/lib/page.js +++ b/lib/page.js @@ -387,7 +387,7 @@ Volcanos("page", { return action }, buttonStyle: function(can, name) { - return can.base.isIn(name, mdb.CREATE, mdb.INSERT, mdb.IMPORT, nfs.CLONE, cli.BUILD, cli.START, ctx.RUN, web.OPEN, web.UPLOAD, web.CONFIRM, aaa.LOGIN, code.AUTOGEN, code.COMPILE, "more", "commit", "startall", "auto-preview", ice.APP)? html.NOTICE: + return can.base.isIn(name, mdb.CREATE, mdb.INSERT, mdb.IMPORT, nfs.CLONE, cli.BUILD, cli.START, ctx.RUN, web.OPEN, web.UPLOAD, web.CONFIRM, aaa.LOGIN, code.AUTOGEN, code.COMPILE, "more", "sso", "pull", "push", "commit", "startall", "preview", "auto-preview", ice.APP)? html.NOTICE: can.base.isIn(name, mdb.REMOVE, mdb.DELETE, mdb.PRUNES, mdb.PRUNE, nfs.TRASH, cli.RESTART, cli.STOP, cli.REBOOT, web.CANCEL, code.UPGRADE, "drop", "stopall", "prockill")? html.DANGER: "" }, exportValue: function(can, msg, target) { target = target||can._output diff --git a/panel/footer.css b/panel/footer.css index 723ca823..4da3eec0 100644 --- a/panel/footer.css +++ b/panel/footer.css @@ -6,7 +6,6 @@ fieldset.Footer>div.output div.state { font-family:var(--status-font-family); fl fieldset.Footer>div.output div.state label { font-size:var(--status-font-size); } fieldset.Footer>div.output div.toast { font-family:var(--status-font-family); float:right; line-height:18px; } fieldset.Footer>div.output div.cmd { padding:0; margin-left:20px; } -fieldset.Footer>div.output div.cmd>i { padding:7px; } fieldset.Footer>div.output div.cmd>input[name=cmd] { padding-left:30px; } fieldset.Footer>div.output div.menu>div.River { display:flex; justify-content:space-around; } fieldset.Footer>div.output div.menu>div.River>div.item { height:var(--footer-height); display:flex; flex-direction:column; text-align:center; flex-grow:1; } diff --git a/plugin/local/code/inner.css b/plugin/local/code/inner.css index 4031e5cd..48b78184 100644 --- a/plugin/local/code/inner.css +++ b/plugin/local/code/inner.css @@ -21,6 +21,7 @@ fieldset.inner>div.output>div.layout>div.display pre>code { padding-left:var(--t fieldset.inner>div.output>div.layout>div.display div.code { white-space:unset; padding:var(--table-padding); } fieldset.inner>div.output>div.layout>div.display div.status>div { padding:var(--input-padding); float:left; } fieldset.inner>div.output>div.layout>div.display div.status { position:sticky; bottom:0; } +fieldset.inner>div.output>div.layout>div.layout { justify-content:flex-start; } fieldset.inner>div.output>div.layout>div.layout>div.profile h1 { border-bottom:var(--box-border); margin:var(--title-margin) 0; } fieldset.inner>div.output>div.layout>div.layout>div.profile h2 { border-bottom:var(--box-border); margin:var(--title-margin) 0; } fieldset.inner>div.output>div.layout>div.layout>div.profile pre>code { padding-left:var(--table-padding); border-left:var(--code-border-color) solid 5px; display:block; } @@ -36,11 +37,13 @@ fieldset.inner.cmd>div.output>div.layout>div.tabs>div.tabs>div.tabs { padding:va fieldset.inner.cmd>div.output>div.layout>div.tabs>div.head>div { white-space:pre; padding:10px; height:var(--code-tabs-height); } fieldset.inner.cmd>div.output>div.layout>div.tabs>div.head>div.avatar { padding:0; } fieldset.inner.cmd>div.output>div.layout>div.tabs>div.head>div.avatar>img { height:var(--code-tabs-height); clip-path:circle(40%); } -fieldset.inner.cmd>div.output>div.layout>div.path:not(.hide) { font-style:italic; box-shadow:var(--box-shadow); display:flex; cursor:pointer; } +fieldset.inner.cmd>div.output>div.layout>div.path:not(.hide) { font-style:italic; box-shadow:var(--box-shadow); display:flex; cursor:pointer; justify-content:flex-start; } +fieldset.inner.cmd>div.output>div.layout>div.path>a { padding:var(--input-padding) var(--button-padding); } +fieldset.inner.cmd>div.output>div.layout>div.path>a:hover { background-color:var(--hover-bg-color); } fieldset.inner.cmd>div.output>div.layout>div.path>span { padding:var(--input-padding); } fieldset.inner.cmd>div.output>div.layout>div.path>span:hover { background-color:var(--hover-bg-color); } -fieldset.inner.cmd>div.output>div.layout>div.path span.func { margin-left:var(--button-margin); } -fieldset.inner.cmd>div.output>div.layout>div.path span.mode { margin-left:var(--button-margin); } +fieldset.inner.cmd>div.output>div.layout>div.path span.func { padding:var(--input-padding) 40px; margin-left:40px; } +fieldset.inner.cmd>div.output>div.layout>div.path span.mode { padding:var(--input-padding) 40px; margin-left:40px; } fieldset.inner.cmd>div.output>div.layout>div.path span.space { flex-grow:1; } fieldset.inner.cmd>div.output>div.layout>div.path span.view { font-size:22px; padding:0 var(--input-padding); margin-top:-5px; float:right; } fieldset.inner.cmd>div.output>div.layout>fieldset.plug { bottom:var(--action-height); } diff --git a/plugin/local/code/inner.js b/plugin/local/code/inner.js index 486e792a..3d2d7d7d 100644 --- a/plugin/local/code/inner.js +++ b/plugin/local/code/inner.js @@ -271,6 +271,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb) { var paths = can.core.Sp var sub = can.ui.profile._plugin; sub && can.page.isDisplay(can.ui.profile) && sub.onimport && sub.onimport.size(sub, can.ui.profile.offsetHeight, can.ui.profile.offsetWidth-1, true) var sub = can.ui.content._plugin; if (!sub) { return } if (height == sub.ConfHeight()+sub.onexport.actionHeight(sub)+sub.onexport.statusHeight(sub) && width == sub.ConfWidth()) { return } content._root || sub.onimport.size(sub, height, width, true), can.onlayout.layout(can, height, width) + can.page.style(can, sub._target, html.FLEX, "0 0 "+width+"px") }) if (can.isCmdMode()) { can.page.style(can, can.ui.tabs.parentNode, html.WIDTH, can.ui.path.offsetWidth) @@ -410,6 +411,7 @@ Volcanos(chat.ONSYNTAX, {_init: function(can, msg, cb) { if (!msg) { return } if (item.index == web.CHAT_MACOS_SESSION && item.args.length > 0) { item.style = html.OUTPUT } if (item.index == web.CHAT_MACOS_DESKTOP) { item.style = html.OUTPUT } can.onimport.plug(can, item, function(sub) { sub.onimport.size(sub, can.ui.content.offsetHeight, can.ui.content.offsetWidth, true) + can.onimport.layout(can) sub.onimport._open = function(_, msg, arg) { var link = can.misc.ParseURL(can, arg); if (link.pod && arg.indexOf(location.origin) == 0) { can.onimport.tabview(can, "", link.pod, web.SPACE), sub.Update(); return } can.onimport.tabview(can, "", arg, web.SPACE), sub.Update() diff --git a/plugin/story/spide.js b/plugin/story/spide.js index 0f691974..7ad23c5b 100644 --- a/plugin/story/spide.js +++ b/plugin/story/spide.js @@ -33,7 +33,7 @@ Volcanos(chat.ONACTION, {list: [[html.VIEW, "横向", "纵向"], [html.SIZE, 24, can.onaction._draw_vertical(can, can._tree[can.dir_root], can.margin, can.margin+(can.size+can.margin)/2) }, _draw: function(can, tree, x, y, style) { var color = can.onimport._color(can, tree) - tree.view = can.onimport.draw(can, {shape: html.TEXT, points: [{x: x, y: y}], style: can.base.Copy(kit.Dict(html.INNER, tree.name||" "), style)}) + tree.view = can.onimport.draw(can, {shape: html.TEXT, points: [{x: x, y: y-(can.user.isChrome? 4: 0)}], style: can.base.Copy(kit.Dict(html.INNER, tree.name||" "), style)}) tree.meta.status && tree.view.Value("class", tree.meta.status) return can.core.ItemCB(can.ondetail, tree.view, can, tree), tree.view },