From 4b6f98256d805cfe7f4ff95cf130c87c401aa4d0 Mon Sep 17 00:00:00 2001 From: shaoying Date: Tue, 20 Aug 2019 09:55:48 +0800 Subject: [PATCH] add focus color --- usr/librarys/chat.js | 16 ++++++++-------- usr/librarys/example.css | 4 ++++ usr/librarys/example.js | 23 +++++++++++++++++------ usr/librarys/toolkit.js | 4 ++-- 4 files changed, 31 insertions(+), 16 deletions(-) diff --git a/usr/librarys/chat.js b/usr/librarys/chat.js index ce28feb0..177dbd0b 100644 --- a/usr/librarys/chat.js +++ b/usr/librarys/chat.js @@ -152,7 +152,7 @@ Page({ }}]) }) }, - Clear: function(name) { + clear: function(name) { table.innerHTML = "", ui.list.innerHTML = "", ui.name.value = name, ui.name.focus() }, Create: function(name, list) { @@ -162,7 +162,7 @@ Page({ }) }, Show: function() {var pane = field.Pane - pane.Dialog() && (pane.Clear("good"), pane.Run([], pane.Append)) + pane.Dialog() && (pane.clear("good"), pane.Run([], pane.Append)) }, Action: { "取消": function(event) { @@ -230,7 +230,7 @@ Page({ initSource: function(page, field, option, output) { var ui = kit.AppendChild(field, [{"view": ["input", "textarea"], "data": {"onkeyup": function(event){ page.oninput(event), kit.isSpace(event.key) && field.Pane.which.set(event.target.value) - event.key == "Enter" && !event.shiftKey && page.target.Pane.Send("text", event.target.value, field.Pane.Clear) + event.key == "Enter" && !event.shiftKey && page.target.Pane.Send("text", event.target.value, field.Pane.clear) }, "onkeydown": function(event) { event.key == "Enter" && !event.shiftKey && event.preventDefault() }}}]) @@ -238,7 +238,7 @@ Page({ Select: function() { ui.first.focus() }, - Clear: function(value) { + clear: function(value) { ui.first.value = "" }, Size: function(width, height) { @@ -295,8 +295,8 @@ Page({ if (typeof engine[args[0]] == "function") { return kit._call(engine[args[0]], args.slice(1)) } - if (page.plugin && typeof page.plugin[args[0]] == "function") { - return kit._call(page.plugin[args[0]], args.slice(1)) + if (page.plugin && typeof page.plugin.Plugin[args[0]] == "function") { + return kit._call(page.plugin.Plugin[args[0]], args.slice(1)) } if (page.dialog && page.dialog.Pane.Jshy(event, args)) {return true} @@ -330,7 +330,7 @@ Page({ Show: function() {var pane = field.Pane if (field.Pane.Back(river+storm, output)) {return} - pane.Clear(), pane.Update([river, storm], "plugin", ["node", "name"], "index", false, function(line, index, event, args, cbs) { + pane.clear(), pane.Update([river, storm], "plugin", ["node", "name"], "index", false, function(line, index, event, args, cbs) { pane.Core(event, line, args, cbs) }) }, @@ -507,7 +507,7 @@ Page({ list.push(item.dataset.index) list.push(item.dataset.name) }) - if (list.length == 0) {kit.alert("请添加命令"); return} + // if (list.length == 0) {kit.alert("请添加命令"); return} field.Pane.Create(ui.name.value, list) diff --git a/usr/librarys/example.css b/usr/librarys/example.css index b00cc3a0..4b867fd2 100644 --- a/usr/librarys/example.css +++ b/usr/librarys/example.css @@ -255,6 +255,10 @@ fieldset.item>div.output>div.status>input.cmd { width:250px; } +fieldset.item.select { + background-color:gold; +} + fieldset table { font-size:14px; overflow: auto; diff --git a/usr/librarys/example.js b/usr/librarys/example.js index 749962fe..08c47d0e 100644 --- a/usr/librarys/example.js +++ b/usr/librarys/example.js @@ -467,6 +467,7 @@ function Page(page) { page.action.Pane.Core(event, {}, ["_cmd", event.target.value]), event.target.value = "" event.stopPropagation() event.preventDefault() + ui.magic.focus() return } @@ -540,7 +541,7 @@ function Pane(page, field) { last = index, list[index] && (list[index].className = "item select") key && pane.which.set(key) }, - Clear: function() { + clear: function() { output.innerHTML = "", list = [], last = -1 }, @@ -572,6 +573,7 @@ function Pane(page, field) { }, Jshy: function(event, args) { if (pane[args[0]] && pane[args[0]].type == "fieldset") { + pane[args[0]].Plugin.Select() return pane[args[0]].Plugin.Jshy(event, args.slice(1)) } if (typeof pane.Action[args[0]] == "function") { @@ -703,8 +705,11 @@ function Plugin(page, pane, field, run) { page.plugin = field.previousSibling field.parentNode.removeChild(field) }, - Select: function() { - option.querySelectorAll("input")[1].focus() + Select: function(focus) { + field.scrollIntoView() + page.plugin && (page.plugin.className = "item") + page.plugin = field, field.className = "item select" + focus && option.querySelectorAll("input")[1].focus() }, Reveal: function(msg) { return msg.append && msg.append[0]? ["table", JSON.stringify(ctx.Tables(msg))]: ["code", msg.result? msg.result.join(""): ""] @@ -744,8 +749,10 @@ function Plugin(page, pane, field, run) { if (typeof plugin[args[0]] == "function") { return kit._call(plugin[args[0]], args.slice(1)) } - if (args.length > 1) { - return kit._call(plugin.Run, [event].concat(args.slice(1))) + if (args.length > 0) { + kit.Selector(option, ".args", function(item, index) { + index < args.length && (item.value = args[index]) + }) } return kit._call(plugin.Runs, [event]) }, @@ -777,6 +784,9 @@ function Plugin(page, pane, field, run) { }) }, + clear: function() { + output.innerHTML = "" + }, display: function(arg, cb) { display.deal = arg, plugin.ondaemon[display.deal||"table"](plugin.msg, cb) }, @@ -826,11 +836,12 @@ function Plugin(page, pane, field, run) { }, onaction: { onfocus: function(event, action, type, name, item) { - page.pane = pane.target, page.plugin = plugin.target, page.input = event.target + page.input = event.target }, onclick: function(event, action, type, name, item) { switch (type) { case "button": + plugin.Select() action[item.click]? action[item.click](event, item, option, field): plugin[item.click]? plugin[item.click](event, item, option, field): plugin.Runs(event) break diff --git a/usr/librarys/toolkit.js b/usr/librarys/toolkit.js index c49e80b7..06f4e1f5 100644 --- a/usr/librarys/toolkit.js +++ b/usr/librarys/toolkit.js @@ -525,9 +525,9 @@ kit = toolkit = { Selector: function(obj, item, cb) { var list = [] - obj.querySelectorAll(item).forEach(function(item, index) { + obj.querySelectorAll(item).forEach(function(item, index, array) { if (typeof cb == "function") { - var value = cb(item) + var value = cb(item, index, array) value != undefined && list.push(value) } else { list.push(item)