define("handlers",['lib/flash','jquery'],function(flash,$){ function elFind(element,types) { if(undefined == types) { types = ["A","BUTTON"] } if(!types.includes('HTML')){ types.push('HTML');} let el = element; while(!(types.includes(el.tagName))){ el = el.parentElement; } if(el.tagName !== 'HTML'){ return el; } else { return element; } } function mkErrorList(errors,indexed) { indexed = !!indexed; let msg = ""; return msg; } let my = { fielderror: function(eventsrc, duration, eltypes){ if(undefined == duration) { duration = 5000;} if(undefined == eltypes) { eltypes = ["INPUT","TEXTAREA","SELECT"];} return function(error){ let el = elFind(eventsrc,eltypes); let errors = error; try{ errors = mkErrorList(error.response.data.errors,true); } catch { console.warn("Unexpected error",error);} flash.class(el,['border-danger','text-danger'],duration); if(undefined !== el.getAttribute('n-field') && errors.hasOwnProperty(el.getAttribute('n-field'))) { flash.tooltip(el,errors[el.getAttribute('n-field')],duration,'top'); } else { flash.tooltip(el,errors,duration,'top'); } }; }, buttonerror: function(eventsrc, duration){ if(undefined == duration) { duration = 5000;} return function(error){ let el = elFind(eventsrc,["BUTTON"]); let errors = error; try{ errors = mkErrorList(error.response.data.errors); } catch { console.warn("Unexpected error",error);} flash.class(el,['btn-danger','tooltip-danger'],duration); flash.tooltip(el,errors,duration); }; }, linkerror: function(eventsrc, duration){ if(undefined == duration) { duration = 5000;} return function(error){ let el = elFind(eventsrc,["A"]); let errors = error; try{ errors = mkErrorList(error.response.data.errors); } catch { console.warn("Unexpected error",error);} flash.class(el,'text-danger',duration); flash.tooltip(el,errors,duration); }; }, fieldsuccess: function(eventsrc, duration, eltypes){ if(undefined == duration) { duration = 3000;} if(undefined == eltypes) { eltypes = ["INPUT","TEXTAREA","SELECT"];} return function(response){ let el = elFind(eventsrc,eltypes); flash.class(el,['border-success','text-success'],duration); }; }, buttonsuccess: function(eventsrc, duration){ if(undefined == duration) { duration = 3000;} return function(response){ let el = elFind(eventsrc,["BUTTON"]); flash.class(el,'btn-success',duration); }; }, linksuccess: function(eventsrc, duration){ if(undefined == duration) { duration = 3000;} return function(response){ let el = elFind(eventsrc,["A"]); flash.class(el,'text-success',duration); }; }, } return my; });