diff --git a/frame.js b/frame.js index 539199c1..0ecb0457 100644 --- a/frame.js +++ b/frame.js @@ -1298,7 +1298,9 @@ Volcanos(chat.ONMOTION, { can.page.style(can, target, html.LEFT, margin) can.core.Timer({interval: 10, length: 30}, function(timer, interval, index, list) { can.page.style(can, target, html.LEFT, margin-(index+1)*(margin/list.length)) - }, function() {}) + }, function() { + can.onmotion.delay(can, function() { can._root.Action.onlayout._init(can) }) + }) }, slideOut: function(can, cb) { var margin = 100 var target = can._target @@ -1307,6 +1309,7 @@ Volcanos(chat.ONMOTION, { can.page.style(can, target, html.LEFT, (index+1)*(margin/list.length)) }, function() { can.page.Remove(can, target), cb && cb() + can.onmotion.delay(can, function() { can._root.Action.onlayout._init(can) }) }) }, slideAction: function(can, target) { diff --git a/lib/user.js b/lib/user.js index 1288b821..b787b5d9 100644 --- a/lib/user.js +++ b/lib/user.js @@ -277,6 +277,14 @@ Volcanos("user", { if (target.value && hidden) { can.onmotion.hidden(can, can.page.parentNode(can, target, html.TR)) } return target.value }, + layout: function(event) { + if (event && event.target) { can.onlayout.figure(event, can, ui._target) + can.user.isMobile && can.page.style(can, ui._target, html.LEFT, (can.page.width()-ui._target.offsetWidth)/2, html.TOP, 40) + } else { + can.getActionSize(function(left, top, height) { can.page.style(can, ui._target, html.LEFT, left||0, html.TOP, (height/4||0)) }) + } can.onmotion.resize(can, ui._target) + + }, cancel: function(event, can, button) { can.page.ClassList.del(can, can._fields||can._target, "_process") button == "cancel" && msg._cancel && msg._cancel(event), callback("afterInputs", button) @@ -300,13 +308,10 @@ Volcanos("user", { var onclick = target.onclick; target.onclick = function(event) { can.onengine.signal(can, "onevent", can.request(event, {_type: target.name})), onclick && onclick(event) } }) title && can.page.Select(can, action._target, "input[name=submit]", function(target) { target.value = can.user.trans(can, title) }) - if (event && event.target) { can.onlayout.figure(event, can, ui._target) - can.user.isMobile && can.page.style(can, ui._target, html.LEFT, (can.page.width()-ui._target.offsetWidth)/2, html.TOP, 40) - } else { - can.getActionSize(function(left, top, height) { can.page.style(can, ui._target, html.LEFT, left||0, html.TOP, (height/4||0)) }) - } can.onmotion.resize(can, ui._target), can.onmotion.delay(can, function() { action.focus() }, 300) + action.layout(event), can.onmotion.delay(can, function() { action.focus() }, 300) function callback(key, button) { var sub = can._fields? can: can.sub; sub.onaction && sub.onaction[key] && sub.onaction[key](event, sub, button, action) } callback("beforeInputs") + // ui._target._layout = action.layout return button === true && action.submit(event, can, html.SUBMIT), action }, select: function(event, can, type, fields, cb, cbs) { diff --git a/plugin/table.js b/plugin/table.js index 0b2fbc95..40b6b06a 100644 --- a/plugin/table.js +++ b/plugin/table.js @@ -353,8 +353,7 @@ Volcanos(chat.ONIMPORT, { sub.onimport._field = function(msg) { var sup = sub; can.onmotion.clear(can, sub._output) msg.Table(function(value) { value.style = html.OUTPUT can.onappend.plugin(can, value, function(sub) { can.onimport.myField(can, sub) - sub.onexport.output = function(_sub, msg) { - can.onimport.myOption(sub) + sub.onexport.output = function(_sub, msg) { can.onimport.myOption(sub) can.user.isMobile && sub.onimport.size(sub, window.innerHeight-ACTION_HEIGHT, window.innerWidth, false) } var run = sub.run; sub.run = function(event, cmds, cb) { @@ -371,6 +370,7 @@ Volcanos(chat.ONIMPORT, { if (sub._history.length > 1) { sub.request(event, {_toast: "reload"}); return sub.onimport.back(event, sub), cb && cb() } var _last = can._stacks_current.pop() can.onmotion.slideOut(_last, function() { var last = can._stacks_current[can._stacks_current.length-1]; last._select() + can.onmotion.delay(can, function() { can._root.Action.onlayout._init(can) }) last.request(event, {_toast: "reload"}) if (last.ConfIndex().split(".").pop() == "message") { last.Update(event) } can._stacks_current.length == 1 && last._output.innerHTML == "" && last.Update(event)