Merge pull request #1025 from jussiry/master

meta lib update: open/close on hover and back button fixes
This commit is contained in:
Mark Nadal 2020-11-13 05:11:55 -08:00 committed by GitHub
commit 1703e6003c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,9 +1,4 @@
;(function(){ ;(function(){
var root;
if(typeof window !== "undefined"){ root = window }
if(typeof global !== "undefined"){ root = global }
root = root || {};
var console = root.console || {log: function(){}};
function USE(arg, req){ function USE(arg, req){
return req? require(arg) : arg.slice? USE[R(arg)] : function(mod, path){ return req? require(arg) : arg.slice? USE[R(arg)] : function(mod, path){
arg(mod = {exports: {}}); arg(mod = {exports: {}});
@ -13,8 +8,8 @@
return p.split('/').slice(-1).toString().replace('.js',''); return p.split('/').slice(-1).toString().replace('.js','');
} }
} }
if(typeof module !== "undefined"){ var common = module } if(typeof module !== "undefined"){ var MODULE = module }
/* UNBUILD */ /* UNBUILD */
;USE(function(module){ ;USE(function(module){
var noop = function(){}, u; var noop = function(){}, u;
@ -23,14 +18,6 @@
var k = m.key = {}; var k = m.key = {};
k.meta = {17:17, 91:17, 93:17, 224:17, 18: 17}; // ALT added k.meta = {17:17, 91:17, 93:17, 224:17, 18: 17}; // ALT added
function withMeta(eve){ return eve.metaKey || eve.ctrlKey || eve.altKey } // ALT added function withMeta(eve){ return eve.metaKey || eve.ctrlKey || eve.altKey } // ALT added
var defaults = {
8: { // backspace: close root or go back on submenu
on: () => k.at == m.edit ? m.flip(false) : m.check('down', 'back')
},
27: { // esc: close and reset menu
up: () => k.wipe()
}
}
k.down = function(eve){ k.down = function(eve){
var key = (k.eve = m.eve = eve).which = eve.which || eve.fake || eve.keyCode; var key = (k.eve = m.eve = eve).which = eve.which || eve.fake || eve.keyCode;
if(eve.repeat){ return } if(eve.repeat){ return }
@ -54,8 +41,10 @@
} }
} }
m.flip = function(tmp){ m.flip = function(tmp){
m.flip.active = true;
((tmp === false) || (!tmp && m.ui.board.is(':visible')))? ((tmp === false) || (!tmp && m.ui.board.is(':visible')))?
m.close() : m.open(); m.close() : m.open();
m.flip.active = false;
} }
m.open = function(){ m.open = function(){
m.check.fired = null; m.check.fired = null;
@ -86,7 +75,7 @@
else k.down.keys[key] = 1; else k.down.keys[key] = 1;
} }
if('up' == how){ return } if('up' == how){ return }
if(at != next){ next.back = at } if(at != next && !next.back){ next.back = at }
(k.combo || (k.combo = [])).push(key); (k.combo || (k.combo = [])).push(key);
m.list(next, true); m.list(next, true);
} }
@ -112,9 +101,7 @@
if(k.styles) meta.ui.iniline($li[0], k.styles); if(k.styles) meta.ui.iniline($li[0], k.styles);
}); });
if(opt){ m.flip(true) } if(opt){ m.flip(true) }
$ul.append($('<li>').html('&larr;').on('click', function(){ $ul.append($('<li>').html('&larr;').on('click', back));
m.list(at.back);
}));
} }
m.ask = function(help, cb){ m.ask = function(help, cb){
var $ul = $('#meta .meta-menu ul').empty(); var $ul = $('#meta .meta-menu ul').empty();
@ -123,8 +110,7 @@
eve.preventDefault(); eve.preventDefault();
cb($put.val()); cb($put.val());
$li.remove(); $li.remove();
//k.wipe(); k.wipe();
m.list(k.at);
}); });
var $li = $('<li>').append($form); var $li = $('<li>').append($form);
$ul.append($li); $ul.append($li);
@ -139,7 +125,7 @@
m.tap = function(){ m.tap = function(){
var on = $('.meta-on') var on = $('.meta-on')
.or($($(document.querySelectorAll(':hover')).get().reverse()).first()) .or($($(document.querySelectorAll(':hover')).get().reverse()).first())
.or($(document.elementFromPoint(meta.tap.x||0, meta.tap.y||0))); .or($(document.elementFromPoint(meta.tap.x, meta.tap.y)));
return on; return on;
} }
meta.edit = function(e){ meta.edit = function(e){
@ -154,6 +140,13 @@
e.combow = path.join(','); // deprecate? e.combow = path.join(','); // deprecate?
m.list(k.at || meta.edit); m.list(k.at || meta.edit);
} }
function back(){ // close root or go back on submenu
k.at == m.edit ? m.flip(false) : m.check('down', 'back')
}
var defaults = {
8: { on: back }, // backspace
27: { up: k.wipe } // esc: close and reset menu
}
$.extend(meta.edit, defaults) $.extend(meta.edit, defaults)
})(USE, './metaCore'); })(USE, './metaCore');
;USE(function(module){ ;USE(function(module){
@ -177,6 +170,14 @@
var $m = $('<div>').attr('id', 'meta'); var $m = $('<div>').attr('id', 'meta');
$m.append($('<span>').html('&#9776;').addClass('meta-start')); $m.append($('<span>').html('&#9776;').addClass('meta-start'));
$m.append($('<div>').addClass('meta-menu meta-none').append('<ul>')); $m.append($('<div>').addClass('meta-menu meta-none').append('<ul>'));
$m.on('mouseenter', function(){
if (meta.flip.active || meta.flip.is()) return;
meta.flip();
})
$m.on('mouseleave', function(){
if (meta.flip.active || !meta.flip.is()) return;
meta.flip(false);
})
$(document.body).append($m); $(document.body).append($m);
meta.ui.board = $('.meta-menu', $m); meta.ui.board = $('.meta-menu', $m);
css({ css({