diff --git a/frame.js b/frame.js index 10231e26..42aa0aa8 100644 --- a/frame.js +++ b/frame.js @@ -755,7 +755,9 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) { }) Volcanos(chat.ONLAYOUT, {_init: function(can, target) { target = target||can._root._target; var height = can.page.height(), width = can.page.width() can.page.SelectChild(can, target, can.page.Keys(html.FIELDSET_HEAD, html.FIELDSET_FOOT), function(field) { height -= field.offsetHeight }) - can.page.SelectChild(can, target, html.FIELDSET_LEFT, function(field) { can.user.isMobile || can.page.isDisplay(field) && (width -= field.offsetWidth) + can.page.SelectChild(can, target, html.FIELDSET_LEFT, function(field) { + can.page.styleHeight(can, field, height) + can.user.isMobile || can.page.isDisplay(field) && (width -= field.offsetWidth) var h = height; can.page.SelectChild(can, field, html.DIV_ACTION, function(action) { h -= action.offsetHeight; if (action.offsetHeight == 0 && html.RIVER_MARGIN > 0) { h -= html.ACTION_HEIGHT } }), can.user.isMobile || (h -= 2*html.RIVER_MARGIN-html.ACTION_HEIGHT) diff --git a/index.css b/index.css index 976cc8bb..38219942 100644 --- a/index.css +++ b/index.css @@ -247,7 +247,7 @@ body>div.carte div.item span.icon.next { line-height:22px; height:22px; float:ri body>div.carte.select.float>div.item { text-align:center; } body>div.carte.header.avatar img { width:370px; } body>div.input { padding:var(--plugin-padding); } -body>div.input>legend { margin-left:122px; } +body>div.input>legend { float:right; padding:0; } body>div.input tr { margin:var(--button-margin); } body>div.input td { padding:var(--table-padding); } body>div.input td:nth-child(2) { padding:var(--table-padding) 0; } diff --git a/lib/page.js b/lib/page.js index 71b401c2..29f62650 100644 --- a/lib/page.js +++ b/lib/page.js @@ -413,7 +413,7 @@ Volcanos("page", { return action }, buttonStyle: function(can, name) { - return can.base.isIn(name, mdb.CREATE, mdb.INSERT, mdb.IMPORT, nfs.CLONE, cli.START, ctx.RUN, web.OPEN, web.UPLOAD, web.CONFIRM, aaa.LOGIN, code.AUTOGEN, "more", "sso", "add", "pull", "push", "commit", "preview", "auto-preview", ice.APP)? html.NOTICE: + return can.base.isIn(name, mdb.CREATE, mdb.INSERT, mdb.IMPORT, nfs.CLONE, cli.START, ctx.RUN, web.UPLOAD, web.CONFIRM, aaa.LOGIN, code.AUTOGEN, "sso", "add", "pull", "push", "commit", "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.CLOSE, cli.REBOOT, web.CANCEL, code.UPGRADE, "drop", "prockill")? html.DANGER: "" }, exportValue: function(can, msg, target) { target = target||can._output diff --git a/panel/action.js b/panel/action.js index b7c5a8b5..627e3f0a 100644 --- a/panel/action.js +++ b/panel/action.js @@ -21,6 +21,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg) { var river = can.Conf(chat.R _tabs: function(can, sub, meta) { var tabs = [{view: [html.ITEM, "", can.user.trans(can, meta.name, meta.help)], title: meta.help, onclick: function(event) { can._current = sub can.onmotion.select(can, can._output, html.FIELDSET_PLUGIN, sub._target), can.onmotion.select(can, can._action, html.DIV_ITEM, sub._tabs), can.onmotion.select(can, can._header_tabs, html.DIV_ITEM, sub._header_tabs) + can.onmotion.delay(can, function() { sub._header_tabs.scrollIntoViewIfNeeded() }) var layout = can.onexport.layout(can); layout == FREE || (can._output.scrollTop = sub._target.offsetTop-10) can.isCmdMode() || can.misc.SearchHash(can, can.Conf(chat.RIVER), can.Conf(chat.STORM), sub.Conf("_command")||meta.index, layout) sub.onimport.size(sub, can.ConfHeight()-can.Conf(html.MARGIN_Y), can.ConfWidth()-can.Conf(html.MARGIN_X), can.onexport.isauto(can)) diff --git a/panel/river.css b/panel/river.css index 6fdfd4f5..bc5bb902 100644 --- a/panel/river.css +++ b/panel/river.css @@ -3,16 +3,19 @@ fieldset.River>div.action:not(.hide) { margin-top:var(--plugin-margin); width:10 fieldset.River>div.action div.item.notice input { border:none; } fieldset.River>div.action div.item:hover input { background-color:var(--notice-bg-color); color:var(--notice-fg-color); } fieldset.River>div.output { transition:all .3s; } +/* fieldset.River>div.output { display:flex; flex-direction:column; align-items:center; } */ fieldset.River>div.output div.item { font-family:var(--legend-font-family); padding:var(--legend-padding); border-left:#00ffae solid 3px; } fieldset.River>div.output div.item:hover { color:var(--panel-hover-fg-color); } fieldset.River>div.output div.item.select { color:var(--panel-hover-fg-color); border-right:var(--notice-bg-color) solid 3px; } fieldset.River>div.output div.item>i:first-child { margin-right:var(--button-margin); } fieldset.River>div.output div.list div.item { border-left:#ccdc4c solid 3px; } fieldset.River>div.output div.list { margin-left:var(--legend-padding); } -fieldset.River>div.output { margin:var(--river-margin) 0; } +fieldset.River>div.output { margin:var(--river-margin) 0; margin-bottom:20px; } fieldset.River>div.toggle { rotate:90deg; right:calc(50% - 5px); } -fieldset.River>div.toggle.prev { top:-10px; } -fieldset.River>div.toggle.next { bottom:-50px; } +/* fieldset.River>div.toggle.prev { top:-10px; } */ +fieldset.River>div.toggle.prev { top:0; } +fieldset.River>div.toggle.next { bottom:-52px; } +fieldset.River:not(:hover)>div.toggle { visibility:hidden; } fieldset.River.page { display:none; } fieldset.River:not(.all):not(.tabs):not(.page) { width:var(--header-height); } fieldset.River:not(.all):not(.tabs):not(.page)>div.action { flex-direction:column; overflow:hidden; } diff --git a/panel/river.js b/panel/river.js index ea306606..fa328f90 100644 --- a/panel/river.js +++ b/panel/river.js @@ -43,15 +43,15 @@ Volcanos(chat.ONACTION, {list: [mdb.CREATE, web.SHARE, web.REFRESH], _init: func {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}) }, - onsize: function(can, height) { var margin = 0 - if (can.page.isDisplay(can._action)) { margin = can._action.offsetHeight + html.PLUGIN_MARGIN } var _margin = margin + onsize: function(can, height) { var margin = 68, _margin = margin can.page.style(can, can._output, html.MARGIN, "0px", html.HEIGHT, "", html.MAX_HEIGHT, "") if (can._output.offsetHeight < height-margin) { margin += (height-margin-can._output.offsetHeight)/2 } else { - can.page.style(can, can._output, html.MAX_HEIGHT, height-margin) + can.page.style(can, can._output, html.MAX_HEIGHT, height-margin-16) } can.page.style(can, can._output, html.MARGIN, margin+"px 0px "+(margin-_margin)+"px") + can._output.scrollTop = can._scrollTop can.onexport.scroll(can) }, refresh: function(event, can) { can.misc.Search(can, {river: can.Conf(chat.RIVER), storm: can.Conf(chat.STORM)}) }, @@ -71,6 +71,7 @@ Volcanos(chat.ONACTION, {list: [mdb.CREATE, web.SHARE, web.REFRESH], _init: func }) }, action: function(event, can, river, storm) { + can._scrollTop = can._output.scrollTop can.page.Select(can, can._output, [html.DIV_LIST, html.DIV_ITEM], function(target) { can.page.ClassList.del(can, target, html.SELECT) }) can.onmotion.select(can, can.ui.sublist[river], html.DIV_ITEM, can.ui.storm_list[can.core.Keys(river, storm)]) can.onmotion.select(can, can._output, html.DIV_ITEM, can.ui.river_list[river])