1
0
mirror of https://shylinux.com/x/volcanos synced 2025-04-25 16:58:06 +08:00
volcanos/plugin/input.js
2020-02-23 06:35:23 +08:00

106 lines
4.3 KiB
JavaScript

Volcanos("onimport", {help: "导入数据", list: [],
init: shy("添加控件", function(can, item, name, value, option) {
var input = {type: "input", name: name, data: item};
item.type = item.type || item._type || item._input;
switch (item.type) {
case "upfile": item.type = "file"; break
case "select":
item.values = typeof item.values == "string"? item.values.split(" "): item.values;
input.type = "select", input.list = item.values.map(function(value) {
return {type: "option", value: value, inner: value};
})
item.value = value || item.value || item.values[0];
can.page.ClassList.add(can, item, "args");
break
case "textarea":
var half = parseFloat(item.half||"1")||1;
input.type = "textarea", item.style = "height:"+(item.height||"50px")+";width:"+parseInt(((500-35)/half))+"px";
// no break
case "password":
case "text":
can.page.ClassList.add(can, item, "args");
item.value = value || item.value || "";
item.autocomplete = "off";
break
case "button":
item.value = item.value || item.name;
}
can.page.ClassList.add(can, item, item.view);
can.core.List((item.clist||"").split(" "), function(value) {
can.page.ClassList.add(can, item, value);
})
var target = can.Dream(option, "input", input)[input.name];
!target.placeholder && (target.placeholder = item.name || "");
item.type == "text" && !target.title && (target.title = item.placeholder || item.name || "");
item.type == "button" && item.action == "auto" && can.run && can.run({});
item.type == "textarea" && can.page.Append(can, option, [{type: "br"}])
item.type == "select" && (target.value = item.value)
return target;
}),
path: function(event, can, value, cmd, target) {
return target.value + (target.value == "" || target.value.endsWith("/")? "": "/") + value
},
})
Volcanos("onfigure", {help: "控件交互", list: []})
Volcanos("onaction", {help: "控件交互", list: [],
onclick: function(event, can) {can.Select(event);
var figure = can.onfigure[can.item.cb] || can.onfigure[can.item.figure]
figure? figure.click(event, can, can.item, can.item.name, event.target): can.item.type == "button" && can.run(event)
},
onchange: function(event, can) {
can.item.type == "select" && can.item.action == "auto" && can.Runs(event)
},
onkeydown: function(event, can) {
can.page.oninput(event, can, function(event) {
switch (event.key) {
case "b":
can.Append(event)
return true
case "m":
can.Clone(event)
return true
}
})
switch (event.key) {
case "Enter": can.run(event, []); break
case "Escape": event.target.blur(); break
default:
if (event.target.value.endsWith("j") && event.key == "k") {
can.page.DelText(event.target, event.target.selectionStart-1, 2);
event.target.blur();
break
}
return false
}
event.stopPropagation()
event.preventDefault()
return true
},
onkeyup: function(event, can) {
switch (event.key) {
default: return false
}
event.stopPropagation()
event.preventDefault()
return true
},
})
Volcanos("onchoice", {help: "控件菜单", list: ["全选", "复制", "清空"],
"全选": function(event, can, msg, value, target) {
can.target.focus(), can.target.setSelectionRange(0, can.target.value.length);
},
"复制": function(event, can, msg, value, target) {
can.user.toast(can.page.CopyText(can, can.target.value), "复制成功")
},
"清空": function(event, can, msg, value, target) {
can.target.value = "";
},
})
Volcanos("ondetail", {help: "控件详情", list: []})
Volcanos("onexport", {help: "导出数据", list: []})