diff --git a/lib/page.js b/lib/page.js index c1135531..626fa8b7 100644 --- a/lib/page.js +++ b/lib/page.js @@ -415,14 +415,13 @@ Volcanos("page", { getquery: function(can, target) { var list = []; for (var p = target; p; p = p.parentNode) { if (can.page.tagis(p, "body")) { list.pop(); break } - list.push(can.core.Keys(p.tagName, can.core.List(p.classList).join("."))) + list.push(can.core.Keys(p.tagName.toLowerCase(), can.core.List(p.classList).join(".")), ">") if (can.page.tagis(p, html.FIELDSET)) { - if (can.page.tagis(p, "fieldset.story.web.chat.tutor.float")) { return "" } - break + if (can.page.tagis(p, "fieldset.web.chat.tutor")) { return "" } + list.pop(); break } - list.push(">") } - return list.reverse().join("").toLowerCase() + return list.reverse().join("") }, theme: function(cb) { var themeMedia = window.matchMedia("(prefers-color-scheme: dark)") cb && themeMedia.addListener(function(event) { cb(event.matches? html.DARK: html.LIGHT) }) diff --git a/panel/action.js b/panel/action.js index 1ec0adf6..3e8a9187 100644 --- a/panel/action.js +++ b/panel/action.js @@ -9,7 +9,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg) { var river = can.Conf(chat.R can.user.info.nodetype == web.WORKER && item._command == web.WORD && (list = [river, storm, item._command]) } can.onappend.plugin(can, item, function(sub, meta, skip) { - if (can.base.isIn(meta.index, "can._notfound")) { sub.Conf(ctx.INDEX, msg.detail[index+3]) } + if (msg.detail && can.base.isIn(meta.index, "can._notfound")) { sub.Conf(ctx.INDEX, msg.detail[index+3]) } sub.run = function(event, cmds, cb) { return can.run(can.request(event, {pod: meta.pod||meta.space}), (can.base.beginWith(meta.index, "can.")? [meta.index]: [river, storm, meta.id||meta.index]).concat(cmds), cb) } sub.onexport.output = function() { msg.Length() > 1 && can.onexport.isauto(can) && can.page.style(can, sub._output, html.HEIGHT, "", html.MAX_HEIGHT, ""), can.onaction.layout(can, list[3]) } can.onaction.layout(can, list[3]), can.onimport._tabs(can, sub, meta), can._plugins = (can._plugins||[]).concat([sub]) @@ -19,7 +19,8 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg) { var river = can.Conf(chat.R }, function() { can.onaction.layout(can, list[3]), _select._tabs.click() }) }, _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 + var tabs = [{view: [[html.ITEM, meta.name], "", can.user.trans(can, meta.name, meta.help)], title: meta.help, onclick: function(event) { can._current = sub + can.onengine.signal(can, "onevent", can.request(event, {query: can.page.getquery(can, event.target)})) 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) diff --git a/panel/footer.css b/panel/footer.css index 4bf5cc15..05eb96e0 100644 --- a/panel/footer.css +++ b/panel/footer.css @@ -17,7 +17,7 @@ body.mobile fieldset.Footer>div.output { font-style:italic; height:var(--footer- body.mobile fieldset.Footer>div.output div.toast { display:none; } body.mobile fieldset.Footer>div.output div.cmd { display:none; } -.picker { box-shadow:#626bd0 0px 2px 10px 5px !important; position:relative; top: -5px; transition:all 0.5s; } +.picker { box-shadow:var(--notice-bg-color) 0px 0px 20px 5px !important; position:relative; left:-5px; top: -5px; transition:all 0.5s; background-color:blue !important; color:white !important; } div.view span.string { color:#f29766; } div.view span.keyword { color:#5cadd4; } div.item:not(.string):not(.number):not(.boolean)>span.value { color:var(--disable-fg-color); font-style:italic; } diff --git a/panel/footer.js b/panel/footer.js index 442be91e..5c8d0455 100644 --- a/panel/footer.js +++ b/panel/footer.js @@ -28,7 +28,6 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can._wss = can.onda case web.CLEAR: case cli.CLOSE: break default: var list = can.core.Split(event.target.value, lex.SP) - // can.onexport._float(can, "cli", list[0], list.slice(1), function(sub) { can.getActionSize(function(left) { can.page.style(can, sub._target, html.LEFT, left+html.PLUGIN_MARGIN, html.RIGHT, "") }) }) can.onexport._float(can, "cli", {index: "can.console", display: "/plugin/local/code/xterm.js"}, list, function(sub) { can.getActionSize(function(left) { can.page.style(can, sub._target, html.LEFT, left+html.PLUGIN_MARGIN, html.RIGHT, "") }) }) } }}, "", target, [chat.TITLE]) }, @@ -42,9 +41,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can._wss = can.onda _data: function(can, name, item) { can.db[name] = can.db[name]||can.request(), can.db[name].Push(item), can.onimport.count(can, name) }, value: function(can, name, value) { can.page.Select(can, can._output, "div.item>span."+name, function(target) { target.innerHTML = value }) }, count: function(can, name) { can.page.Select(can, can._output, can.core.Keys(html.SPAN, name), function(item) { item.innerHTML = can.Conf(name, parseInt(can.Conf(name)||"0")+1+"")+"" }) }, - ntip: function(can, msg, time, title, content) { can.onimport._data(can, NTIP, {time: time, - // fileline: can.base.trimPrefix(msg.Option("log.caller"), location.origin+nfs.PS), - title: title, content: content}), can.page.Modify(can, can.ui.toast, [time, title, content].join(lex.SP)) }, + ntip: function(can, msg, time, title, content) { can.onimport._data(can, NTIP, {time: time, title: title, content: content}), can.page.Modify(can, can.ui.toast, [time, title, content].join(lex.SP)) }, ncmd: function(can, msg, _follow, _cmds) { can.onimport._data(can, NCMD, {time: can.base.Time(), follow: _follow, cmds: _cmds}), can.onimport.nlog(can, NLOG) }, nlog: function(can, name) { can.onimport.count(can, name) }, menu: function(can, cmds, cb, trans) { can.base.isString(cmds) && (cmds = [cmds]) @@ -56,31 +53,20 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can._wss = can.onda }, }) Volcanos(chat.ONACTION, {_init: function(can) {}, - onsize: function(can) { - can.ConfHeight(can._target.offsetHeight), can.ConfWidth(can._target.offsetWidth) - can.onimport.value(can, html.HEIGHT, can.page.height()) - can.onimport.value(can, html.WIDTH, can.page.width()) + onsize: function(can) { can.ConfHeight(can._target.offsetHeight), can.ConfWidth(can._target.offsetWidth) + can.onimport.value(can, html.HEIGHT, can.page.height()), can.onimport.value(can, html.WIDTH, can.page.width()) }, onlogin: function(can, msg) { can.run(can.request({}, {_method: http.GET}), [], function(msg) { can.onmotion.clear(can), can.onimport._init(can, msg, can._output) }) }, ontoast: function(can, msg) { can.core.CallFunc(can.onimport.ntip, {can: can, msg: msg}) }, onremote: function(can, msg) { can.core.CallFunc(can.onimport.ncmd, {can: can, msg: msg}) }, onunload: function(can) { can._wss && can._wss.close() }, - onrecord: function(can, msg) { var zone = can.misc.sessionStorage(can, "web.chat.script:zone") - zone && can.runAction(can.request(), nfs.SCRIPT, [zone].concat(msg.cmds[0])) - }, + onrecord: function(can, msg) { var zone = can.misc.sessionStorage(can, "web.chat.script:zone"); zone && can.runAction(can.request(), nfs.SCRIPT, [zone].concat(msg.cmds[0])) }, onaction_cmd: function(can) { can.onappend.style(can, html.HIDE) }, - onstorm_select: function(event, can, river, storm) { - event.isTrusted != undefined && can.onimport._data(can, chat.TUTOR, {type: chat.STORM, text: [river, storm].join(",")}) - }, - onremove: function(event, can, query) { - event.isTrusted != undefined && query && can.onimport._data(can, chat.TUTOR, {type: "remove", text: query}) - }, - onevent: function(event, can, query) { - event.isTrusted != undefined && query && can.onimport._data(can, chat.TUTOR, {type: event.type, text: query}) - }, - ontheme: function(event, can, theme) { - event.isTrusted != undefined && can.onimport._data(can, chat.TUTOR, {type: chat.THEME, text: theme}) - }, + onstorm_select: function(event, can, river, storm) { event.isTrusted != undefined && can.onimport._data(can, chat.TUTOR, {time: can.base.Time(), type: chat.STORM, text: [river, storm].join(",")}) }, + ontheme: function(event, can, theme) { event.isTrusted && theme && can.onimport._data(can, chat.TUTOR, {time: can.base.Time(), type: chat.THEME, text: theme}) }, + onevent: function(event, can, query) { event.isTrusted && query && can.onimport._data(can, chat.TUTOR, {time: can.base.Time(), type: event.type, text: query}) }, + onproject: function(event, can, query) { event.isTrusted && query && can.onimport._data(can, chat.TUTOR, {time: can.base.Time(), type: "item", text: query}) }, + onremove: function(event, can, query) { event.isTrusted && query && can.onimport._data(can, chat.TUTOR, {time: can.base.Time(), type: "remove", text: query}) }, oncommand_focus: function(can) { can.page.Select(can, can._output, ["div.cmd", html.INPUT], function(target) { can.onmotion.focus(can, target) }) }, onlayout: function(can, layout, before) { if (can.user.isMobile) { return } can.page.ClassList.del(can, can._target, before), can.page.ClassList.add(can, can._target, layout) @@ -91,7 +77,6 @@ Volcanos(chat.ONACTION, {_init: function(can) {}, }) }) }) }, }) -// Volcanos(chat.ONEXPORT, {list: [NTIP, NLOG, NCMD, NKEY, html.WIDTH, html.HEIGHT, nfs.VERSION], Volcanos(chat.ONEXPORT, {list: [cli.BEGIN, nfs.VERSION], height: function(can) { can.onexport._float(can, html.HEIGHT, "can.view") }, width: function(can) { can.onexport._float(can, html.WIDTH, "can.data") }, diff --git a/plugin/table.js b/plugin/table.js index 4b11b3e2..5d013851 100644 --- a/plugin/table.js +++ b/plugin/table.js @@ -30,9 +30,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target, cb) { can.base.isFunc(button)? button(event, button): can.onaction[button](event, can, button), can.onkeymap.prevent(event) }}]) }, _vimer_zone: function(can, msg, target) { msg.Table(function(value) { var action = can.page.parseAction(can, value) - can.onimport.item(can, { - type: value.type, - status: value.status, + can.onimport.item(can, {type: value.type, status: value.status, icon: can.misc.Resource(can, value.icon||value.icons||value.avatar_url), name: can.page.Color(value[can.Conf(mdb.FIELD)||mdb.VIEW]||value[mdb.NAME]||value[mdb.TEXT]||value[mdb.TYPE]), title: value[mdb.TEXT]||value.description, @@ -114,6 +112,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target, cb) { ].concat(item._label||[], [ item.action && {icon: "bi bi-three-dots", onclick: function(event) { can.onimport._menu(event, can, item, cbs) }}, ]), _init: function(target) { + can.ui[item.path] = target item._select && can.onmotion.delay(can, function() { target.click() }) }, onclick: function(event) { cb(event) @@ -124,6 +123,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target, cb) { item: function(can, item, cb, cbs, _target) { return can.page.Append(can, _target||can.ui.project||can._output, [can.onimport._item(can, item, function(event) { var target = event.currentTarget can.onmotion.select(can, target.parentNode, html.DIV_ITEM, target) + can.onengine.signal(can, "onproject", can.request(event, {type: "item", query: can.page.getquery(can, can._fields)+","+item.path})) var show = target._list && can.onmotion.toggle(can, target._list); cb(event, item, show, target) }, cbs)])._target },