486 lines
438 KiB
JavaScript
486 lines
438 KiB
JavaScript
|
/* w2ui 2.0.x (nightly) (1/16/2023, 8:50:38 AM) (c) http://w2ui.com, vitmalina@gmail.com */
|
||
|
class w2event{constructor(e,t){Object.assign(this,{type:t.type??null,detail:t,owner:e,target:t.target??null,phase:t.phase??"before",object:t.object??null,execute:null,isStopped:!1,isCancelled:!1,onComplete:null,listeners:[]}),delete t.type,delete t.target,delete t.object,this.complete=new Promise((e,t)=>{this._resolve=e,this._reject=t}),this.complete.catch(()=>{})}finish(e){e&&w2utils.extend(this.detail,e),this.phase="after",this.owner.trigger.call(this.owner,this)}done(e){this.listeners.push(e)}preventDefault(){this._reject(),this.isCancelled=!0}stopPropagation(){this.isStopped=!0}}class w2base{constructor(e){if(this.activeEvents=[],this.listeners=[],void 0!==e){if(!w2utils.checkName(e))return;w2ui[e]=this}this.debug=!1}on(e,r){return(e="string"==typeof e?e.split(/[,\s]+/):[e]).forEach(e=>{var t,i,s,l="string"==typeof e?e:e.type+":"+e.execute+"."+e.scope;"string"==typeof e&&([i,t]=e.split("."),[i,s]=i.replace(":complete",":after").replace(":done",":after").split(":"),e={type:i,execute:s??"before",scope:t}),(e=w2utils.extend({type:null,execute:"before",onComplete:null},e)).type?r?(Array.isArray(this.listeners)||(this.listeners=[]),this.listeners.push({name:l,edata:e,handler:r}),this.debug&&console.log("w2base: add event",{name:l,edata:e,handler:r})):console.log("ERROR: You must specify event handler function when calling .on() method of "+this.name):console.log("ERROR: You must specify event type when calling .on() method of "+this.name)}),this}off(e,r){return(e="string"==typeof e?e.split(/[,\s]+/):[e]).forEach(i=>{var e,t,s,l="string"==typeof i?i:i.type+":"+i.execute+"."+i.scope;if("string"==typeof i&&([t,e]=i.split("."),[t,s]=t.replace(":complete",":after").replace(":done",":after").split(":"),i={type:t||"*",execute:s||"",scope:e||""}),(i=w2utils.extend({type:null,execute:null,onComplete:null},i)).type||i.scope){r=r||null;let t=0;this.listeners=this.listeners.filter(e=>"*"!==i.type&&i.type!==e.edata.type||""!==i.execute&&i.execute!==e.edata.execute||""!==i.scope&&i.scope!==e.edata.scope||null!=i.handler&&i.handler!==e.edata.handler||(t++,!1)),this.debug&&console.log(`w2base: remove event (${t})`,{name:l,edata:i,handler:r})}else console.log("ERROR: You must specify event type when calling .off() method of "+this.name)}),this}trigger(e,i){if(1==arguments.length?i=e:(i.type=e,i.target=i.target??this),w2utils.isPlainObject(i)&&"after"==i.phase){if(!(i=this.activeEvents.find(e=>e.type==i.type&&e.target==i.target)))return void console.log(`ERROR: Cannot find even handler for "${i.type}" on "${i.target}".`);console.log("NOTICE: This syntax \"edata.trigger({ phase: 'after' })\" is outdated. Use edata.finish() instead.")}else i instanceof w2event||(i=new w2event(this,i),this.activeEvents.push(i));let s,t,l;Array.isArray(this.listeners)||(this.listeners=[]),this.debug&&console.log(`w2base: trigger "${i.type}:${i.phase}"`,i);for(let e=this.listeners.length-1;0<=e;e--){let t=this.listeners[e];if(!(null==t||t.edata.type!==i.type&&"*"!==t.edata.type||t.edata.target!==i.target&&null!=t.edata.target||t.edata.execute!==i.phase&&"*"!==t.edata.execute&&"*"!==t.edata.phase)&&(Object.keys(t.edata).forEach(e=>{null==i[e]&&null!=t.edata[e]&&(i[e]=t.edata[e])}),s=[],l=new RegExp(/\((.*?)\)/).exec(String(t.handler).split("=>")[0]),2===(s=l?l[1].split(/\s*,\s*/):s).length?(t.handler.call(this,i.target,i),this.debug&&console.log(" - call (old)",t.handler)):(t.handler.call(this,i),this.debug&&console.log(" - call",t.handler)),!0===i.isStopped||!0===i.stop))return i}e="on"+i.type.substr(0,1).toUpperCase()+i.type.substr(1);if(!("before"===i.phase&&"function"==typeof this[e]&&(t=this[e],s=[],l=new RegExp(/\((.*?)\)/).exec(String(t).split("=>")[0]),2===(s=l?l[1].split(/\s*,\s*/):s).length?(t.call(this,i.target,i),this.debug&&console.log(" - call: on[Event] (old)",t)):(t.call(this,i),this.debug&&console.log(" - call: on[Event]",t)),!0===i.isStopped||!0===i.stop)||null!=i.object&&"before"===i.phase&&"function"==typeof i.object[e]&&(t=i.object[e],s=[],l=new RegExp(/\((.*?)\)/).exec(String(t).split("=>")[0]),2===(s=l?l[1].split(/\s*,\s*/):s).length?(t.c
|
||
|
style="${t.style??""}" ${t.attrs??""}>${t.text||e}</button>`,i=Array.isArray(s.actions)?t.text:e),"string"==typeof t&&(s.buttons+=`<button class="w2ui-btn w2ui-eaction" name="${t}" data-click='["action","${t}","event"]'>${t}</button>`,i=t),"string"==typeof i&&(i=i[0].toLowerCase()+i.substr(1).replace(/\s+/g,"")),n[i]=function(t){return s.on("action.buttons",e=>{e.detail.action[0].toLowerCase()+e.detail.action.substr(1).replace(/\s+/g,"")==i&&t(e)}),n}})),Array("html","body","buttons").forEach(e=>{s[e]=String(s[e]??"").trim()}),""===s.body&&""===s.buttons||(s.html=`
|
||
|
<div class="w2ui-message-body">${s.body||""}</div>
|
||
|
<div class="w2ui-message-buttons">${s.buttons||""}</div>
|
||
|
`),getComputedStyle(query(r.box).get(0)));var h=parseFloat(o.width),d=parseFloat(o.height);let u=0,c=(0<query(r.after).length&&(o=getComputedStyle(query(r.after).get(0)),u=parseInt("none"!=o.display?parseInt(o.height):0)),s.width>h&&(s.width=h-10),s.height>d-u&&(s.height=d-10-u),s.originalWidth=s.width,s.originalHeight=s.height,parseInt(s.width)<0&&(s.width=h+s.width),parseInt(s.width)<10&&(s.width=10),parseInt(s.height)<0&&(s.height=d+s.height-u),parseInt(s.height)<10&&(s.height=10),s.originalHeight<0&&(s.height=d+s.originalHeight-u),s.originalWidth<0&&(s.width=h+2*s.originalWidth),query(r.box).find(r.after));return s.tmp||(s.tmp={zIndex:c.css("z-index"),overflow:o.overflow}),""===s.html&&""===s.body&&""===s.buttons?i():(s.msgIndex=query(r.box).find(".w2ui-message").length,0===s.msgIndex&&"function"==typeof this.lock&&(query(r.box).css("overflow","hidden"),r.owner?r.owner.lock(r.param):this.lock(r.box)),query(r.box).find(".w2ui-message").css("z-index",1390),c.css("z-index",1501),d=`
|
||
|
<div id="w2ui-message-${r.owner?.name}-${s.msgIndex}" class="w2ui-message" data-mousedown="stop"
|
||
|
style="z-index: 1500; left: ${(h-s.width)/2}px; top: ${u}px;
|
||
|
width: ${s.width}px; height: ${s.height}px; transform: translateY(-${s.height}px)"
|
||
|
${s.hideOn.includes("click")?r.param?`data-click='["message", "${r.param}"]`:'data-click="message"':""}>
|
||
|
<span name="hidden-first" tabindex="0" style="position: absolute; top: 0; outline: none"></span>
|
||
|
${s.html}
|
||
|
<span name="hidden-last" tabindex="0" style="position: absolute; top: 0; outline: none"></span>
|
||
|
</div>`,0<query(r.after).length?query(r.box).find(r.after).after(d):query(r.box).prepend(d),s.box=query(r.box).find(`#w2ui-message-${r.owner?.name}-`+s.msgIndex)[0],w2utils.bindEvents(s.box,this),query(s.box).addClass("animating"),(s.box._msg_options=s).box._msg_prevFocus=document.activeElement,setTimeout(()=>{!0===(l=s.trigger("open",{target:this.name,box:s.box,self:s})).isCancelled?(query(r.box).find(`#w2ui-message-${r.owner?.name}-`+s.msgIndex).remove(),0===s.msgIndex&&(c.css("z-index",s.tmp.zIndex),query(r.box).css("overflow",s.tmp.overflow))):query(s.box).css({transition:"0.3s",transform:"translateY(0px)"})},0),t=setTimeout(()=>{query(r.box).find(`#w2ui-message-${r.owner?.name}-`+s.msgIndex).removeClass("animating").css({transition:"0s"}),l.finish()},300)),s.action=(e,t)=>{let i=s.actions[e];i instanceof Object&&i.onClick&&(i=i.onClick);e=s.trigger("action",{target:this.name,action:e,self:s,originalEvent:t,value:s.input?s.input.value:null});!0!==e.isCancelled&&("function"==typeof i&&i(e),e.finish())},s.close=()=>{!0!==(l=s.trigger("close",{target:"self",box:s.box,self:s})).isCancelled&&(clearTimeout(t),query(s.box).hasClass("animating")?(clearTimeout(e),a(s)):(query(s.box).addClass("w2ui-closing animating").css({transition:"0.15s",transform:"translateY(-"+s.height+"px)"}),0!==s.msgIndex&&query(r.box).find(`#w2ui-message-${r.owner?.name}-`+(s.msgIndex-1)).css("z-index",1499),e=setTimeout(()=>{a(s)},150)))},s.setFocus=e=>{var t=query(r.box).find(".w2ui-message").length-1;let s=query(r.box).find(`#w2ui-message-${r.owner?.name}-`+t),l="input, button, select, textarea, [contentEditable], .w2ui-input";(null!=e?isNaN(e)?s.find(l).filter(e).get(0):s.find(l).get(e):s.find("[name=hidden-first]").get(0))?.focus(),query(r.box).find(".w2ui-message").find(l+",[name=hidden-first],[name=hidden-last]").off(".keep-focus"),query(s).find(l+",[name=hidden-first],[name=hidden-last]").on("blur.keep-focus",function(e){setTimeout(()=>{var e=document.activeElement,t=0<query(s).find(l).filter(e).length,i=query(e).attr("name");!t&&e&&e!==document.body&&query(s).find(l).get(0)?.focus(),"hidden-last"==i&&query(s).find(l).get(0)?.focus(),"hidden-first"==i&&query(s).find(l).get(-1)?.focus()},1)})},n}notify(i,s){return new Promise(t=>{if("object"==typeof i&&(i=(s=i).text),(s=s||{}).where=s.where??document.body,s.timeout=s.timeout??15e3,"function"==typeof this.tmp.notify_resolve&&(this.tmp.notify_resolve(),query(this.tmp.notify_where).find("#w2ui-notify").remove()),this.tmp.notify_resolve=t,this.tmp.notify_where=s.where,clearTimeout(this.tmp.notify_timer),i){if("object"==typeof s.actions){let t={};Object.keys(s.actions).forEach(e=>{t[e]=`<a class="w2ui-notify-link" value="${e}">${e}</a>`}),i=this.execTemplate(i,t)}var e=`
|
||
|
<div id="w2ui-notify">
|
||
|
<div class="${s.class} ${s.error?"w2ui-notify-error":""}">
|
||
|
${i}
|
||
|
<span class="w2ui-notify-close w2ui-icon-cross"></span>
|
||
|
</div>
|
||
|
</div>`;query(s.where).append(e),query(s.where).find("#w2ui-notify").find(".w2ui-notify-close").on("click",e=>{query(s.where).find("#w2ui-notify").remove(),t()}),s.actions&&query(s.where).find("#w2ui-notify .w2ui-notify-link").on("click",e=>{e=query(e.target).attr("value");s.actions[e](),query(s.where).find("#w2ui-notify").remove(),t()}),0<s.timeout&&(this.tmp.notify_timer=setTimeout(()=>{query(s.where).find("#w2ui-notify").remove(),t()},s.timeout))}})}confirm(e,t){w2utils.normButtons(t="string"==typeof t?{text:t}:t,{yes:"Yes",no:"No"});e=w2utils.message(e,t);return e&&e.action(e=>{e.detail.self.close()}),e}normButtons(i,s){i.actions=i.actions??{};var e=Object.keys(s);return e.forEach(t=>{var e=i["btn_"+t];e&&(s[t]={text:w2utils.lang(e.text??""),class:e.class??"",style:e.style??"",attrs:e.attrs??""},delete i["btn_"+t]),Array("text","class","style","attrs").forEach(e=>{i[t+"_"+e]&&("string"==typeof s[t]&&(s[t]={text:s[t]}),s[t][e]=i[t+"_"+e],delete i[t+"_"+e])})}),e.includes("yes")&&e.includes("no")&&(w2utils.settings.macButtonOrder?w2utils.extend(i.actions,{no:s.no,yes:s.yes}):w2utils.extend(i.actions,{yes:s.yes,no:s.no})),e.includes("ok")&&e.includes("cancel")&&(w2utils.settings.macButtonOrder?w2utils.extend(i.actions,{cancel:s.cancel,ok:s.ok}):w2utils.extend(i.actions,{ok:s.ok,cancel:s.cancel})),i}getSize(e,t){let i=0;if(0<(e=query(e)).length){e=e[0];var s=getComputedStyle(e);switch(t){case"width":i=parseFloat(s.width),"auto"===s.width&&(i=0);break;case"height":i=parseFloat(s.height),"auto"===s.height&&(i=0);break;default:i=parseFloat(s[t]??0)||0}}return i}getStrWidth(e,t){query("body").append(`
|
||
|
<div id="_tmp_width" style="position: absolute; top: -9000px; ${t||""}">
|
||
|
${this.encodeTags(e)}
|
||
|
</div>`);t=query("#_tmp_width")[0].clientWidth;return query("#_tmp_width").remove(),t}execTemplate(e,i){return"string"==typeof e&&i&&"object"==typeof i?e.replace(/\${([^}]+)?}/g,function(e,t){return i[t]||t}):e}marker(e,s,l={onlyFirst:!1,wholeWord:!1}){Array.isArray(s)||(s=null!=s&&""!==s?[s]:[]);let r=l.wholeWord;query(e).each(t=>{for(var e=t,i=/\<span class=\"w2ui\-marker\"\>((.|\n|\r)*)\<\/span\>/gi;-1!==e.innerHTML.indexOf('<span class="w2ui-marker"');)e.innerHTML=e.innerHTML.replace(i,"$1");s.forEach(e=>{e=(e="string"!=typeof e?String(e):e).replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&").replace(/&/g,"&").replace(/</g,">").replace(/>/g,"<");e=new RegExp((r?"\\b":"")+e+(r?"\\b":"")+"(?!([^<]+)?>)","i"+(l.onlyFirst?"":"g"));t.innerHTML=t.innerHTML.replace(e,e=>'<span class="w2ui-marker">'+e+"</span>")})})}lang(e,t){if(!e||null==this.settings.phrases||"string"!=typeof e||"<=>=".includes(e))return this.execTemplate(e,t);let i=this.settings.phrases[e];return null==i?(i=e,this.settings.warnNoPhrase&&(this.settings.missing||(this.settings.missing={}),this.settings.missing[e]="---",this.settings.phrases[e]="---",console.log(`Missing translation for "%c${e}%c", see %c w2utils.settings.phrases %c with value "---"`,"color: orange","","color: #999",""))):"---"!==i||this.settings.warnNoPhrase||(i=e),"---"===i&&(i=`<span ${this.tooltip(e)}>---</span>`),this.execTemplate(i,t)}locale(l,i,r){return new Promise((s,t)=>{if(Array.isArray(l)){this.settings.phrases={};let i=[],t={};l.forEach((e,t)=>{5===e.length&&(e="locale/"+e.toLowerCase()+".json",l[t]=e),i.push(this.locale(e,!0,!1))}),void Promise.allSettled(i).then(e=>{e.forEach(e=>{e.value&&(t[e.value.file]=e.value.data)}),l.forEach(e=>{this.settings=this.extend({},this.settings,t[e])}),s()})}else(l=l||"en-us")instanceof Object?this.settings=this.extend({},this.settings,w2locale,l):(5===l.length&&(l="locale/"+l.toLowerCase()+".json"),fetch(l,{method:"GET"}).then(e=>e.json()).then(e=>{!0!==r&&(this.settings=i?this.extend({},this.settings,e):this.extend({},this.settings,w2locale,{phrases:{}},e)),s({file:l,data:e})}).catch(e=>{console.log("ERROR: Cannot load locale "+l),t(e)}))})}scrollBarSize(){return this.tmp.scrollBarSize||(query("body").append(`
|
||
|
<div id="_scrollbar_width" style="position: absolute; top: -300px; width: 100px; height: 100px; overflow-y: scroll;">
|
||
|
<div style="height: 120px">1</div>
|
||
|
</div>
|
||
|
`),this.tmp.scrollBarSize=100-query("#_scrollbar_width > div")[0].clientWidth,query("#_scrollbar_width").remove()),this.tmp.scrollBarSize}checkName(e){return null==e?(console.log('ERROR: Property "name" is required but not supplied.'),!1):null!=w2ui[e]?(console.log(`ERROR: Object named "${e}" is already registered as w2ui.${e}.`),!1):!!this.isAlphaNumeric(e)||(console.log('ERROR: Property "name" has to be alpha-numeric (a-z, 0-9, dash and underscore).'),!1)}checkUniqueId(t,i,s,l){Array.isArray(i)||(i=[i]);let r=!0;return i.forEach(e=>{e.id===t&&(console.log(`ERROR: The item id="${t}" is not unique within the ${s} "${l}".`,i),r=!1)}),r}encodeParams(t,i=""){let s="";return Object.keys(t).forEach(e=>{""!=s&&(s+="&"),"object"==typeof t[e]?s+=this.encodeParams(t[e],i+e+(i?"]":"")+"["):s+=""+i+e+(i?"]":"")+"="+t[e]}),s}parseRoute(e){let a=[];e=e.replace(/\/\(/g,"(?:/").replace(/\+/g,"__plus__").replace(/(\/)?(\.)?:(\w+)(?:(\(.*?\)))?(\?)?/g,(e,t,i,s,l,r)=>(a.push({name:s,optional:!!r}),t=t||"",(r?"":t)+"(?:"+(r?t:"")+(i||"")+(l||(i?"([^/.]+?)":"([^/]+?)"))+")"+(r||""))).replace(/([\/.])/g,"\\$1").replace(/__plus__/g,"(.+)").replace(/\*/g,"(.*)");return{path:new RegExp("^"+e+"$","i"),keys:a}}getCursorPosition(e){if(null==e)return null;let t=0;var i,s=e.ownerDocument||e.document,l=s.defaultView||s.parentWindow;let r;return["INPUT","TEXTAREA"].includes(e.tagName)?t=e.selectionStart:l.getSelection?0<(r=l.getSelection()).rangeCount&&((i=(l=r.getRangeAt(0)).cloneRange()).selectNodeContents(e),i.setEnd(l.endContainer,l.endOffset),t=i.toString().length):(r=s.selection)&&"Control"!==r.type&&(l=r.createRange(),(i=s.body.createTextRange()).moveToElementText(e),i.setEndPoint("EndToEnd",l),t=i.text.length),t}setCursorPosition(s,l,t){if(null!=s){var r=document.createRange();let i,e=window.getSelection();if(["INPUT","TEXTAREA"].includes(s.tagName))s.setSelectionRange(l,t??l);else{for(let t=0;t<s.childNodes.length;t++){let e=query(s.childNodes[t]).text();if(l<=(e=s.childNodes[t].tagName?(e=query(s.childNodes[t]).html()).replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&").replace(/"/g,'"').replace(/ /g," "):e).length){(i=(i=s.childNodes[t]).childNodes&&0<i.childNodes.length?i.childNodes[0]:i).childNodes&&0<i.childNodes.length&&(i=i.childNodes[0]);break}l-=e.length}null!=i&&(l>i.length&&(l=i.length),r.setStart(i,l),t?r.setEnd(i,t):r.collapse(!0),e.removeAllRanges(),e.addRange(r))}}}parseColor(e){if("string"!=typeof e)return null;let t={};if(3===(e="#"===(e=e.trim().toUpperCase())[0]?e.substr(1):e).length)t={r:parseInt(e[0]+e[0],16),g:parseInt(e[1]+e[1],16),b:parseInt(e[2]+e[2],16),a:1};else if(6===e.length)t={r:parseInt(e.substr(0,2),16),g:parseInt(e.substr(2,2),16),b:parseInt(e.substr(4,2),16),a:1};else if(8===e.length)t={r:parseInt(e.substr(0,2),16),g:parseInt(e.substr(2,2),16),b:parseInt(e.substr(4,2),16),a:Math.round(parseInt(e.substr(6,2),16)/255*100)/100};else if(4<e.length&&"RGB("===e.substr(0,4)){var i=e.replace("RGB","").replace(/\(/g,"").replace(/\)/g,"").split(",");t={r:parseInt(i[0],10),g:parseInt(i[1],10),b:parseInt(i[2],10),a:1}}else{if(!(5<e.length&&"RGBA("===e.substr(0,5)))return null;i=e.replace("RGBA","").replace(/\(/g,"").replace(/\)/g,"").split(",");t={r:parseInt(i[0],10),g:parseInt(i[1],10),b:parseInt(i[2],10),a:parseFloat(i[3])}}return t}hsv2rgb(e,t,i,s){let l,r,a,n,o,h,d,u;switch(1===arguments.length&&(t=e.s,i=e.v,s=e.a,e=e.h),h=(i/=100)*(1-(t/=100)),d=i*(1-(o=6*(e/=360)-(n=Math.floor(6*e)))*t),u=i*(1-(1-o)*t),n%6){case 0:l=i,r=u,a=h;break;case 1:l=d,r=i,a=h;break;case 2:l=h,r=i,a=u;break;case 3:l=h,r=d,a=i;break;case 4:l=u,r=h,a=i;break;case 5:l=i,r=h,a=d}return{r:Math.round(255*l),g:Math.round(255*r),b:Math.round(255*a),a:null!=s?s:1}}rgb2hsv(e,t,i,s){1===arguments.length&&(t=e.g,i=e.b,s=e.a,e=e.r);let l=Math.max(e,t,i),r=Math.min(e,t,i),a=l-r,n,o=0===l?0:a/l,h=l/255;switch(l){case r:n=0;break;case e:n=t-i+a*(t<i?6:0),n/=6*a;break;case t:n=i-e+2*a,n/=6*a;break;case i:n=e-t+4*a,n/=6*a}return{h:Math.round(360*n),s:Math.round(100*o),v:Math.round(100*h),a:null!=s?s:1}}tooltip(e,t){let i="mouse
|
||
|
style="${t.style}" ${t.attrs}>${t.text||e}</button>`,i=Array.isArray(s.actions)?t.text:e),"string"==typeof t&&(s.buttons+=`<button class="w2ui-btn w2ui-eaction" data-click='["action","${t}","event"]'>${t}</button>`,i=t),"string"==typeof i&&(i=i[0].toLowerCase()+i.substr(1).replace(/\s+/g,"")),o[i]=function(t){return l.on("action.buttons",e=>{e.detail.action[0].toLowerCase()+e.detail.action.substr(1).replace(/\s+/g,"")==i&&t(e)}),o}})),0===query("#w2ui-popup").length){if(!0===(r=this.trigger("open",{target:"popup",present:!1})).isCancelled)return;this.status="opening",w2utils.lock(document.body,{opacity:.3,onClick:s.modal?null:()=>{this.close()}});let e="";s.showClose&&(e+=`<div class="w2ui-popup-button w2ui-popup-close">
|
||
|
<span class="w2ui-icon w2ui-icon-cross w2ui-eaction" data-mousedown="stop" data-click="close"></span>
|
||
|
</div>`),s.showMax&&(e+=`<div class="w2ui-popup-button w2ui-popup-max">
|
||
|
<span class="w2ui-icon w2ui-icon-box w2ui-eaction" data-mousedown="stop" data-click="toggle"></span>
|
||
|
</div>`);n=`
|
||
|
left: ${n}px;
|
||
|
top: ${a}px;
|
||
|
width: ${parseInt(s.width)}px;
|
||
|
height: ${parseInt(s.height)}px;
|
||
|
transition: ${s.speed}s
|
||
|
`;t=`<div id="w2ui-popup" class="w2ui-popup w2ui-anim-open animating" style="${w2utils.stripSpaces(n)}"></div>`,query("body").append(t),query("#w2ui-popup")[0]._w2popup={self:this,created:new Promise(e=>{this._promCreated=e}),opened:new Promise(e=>{this._promOpened=e}),closing:new Promise(e=>{this._promClosing=e}),closed:new Promise(e=>{this._promClosed=e})},n=`${s.title?"":"top: 0px !important;"} `+(s.buttons?"":"bottom: 0px !important;"),t=`
|
||
|
<span name="hidden-first" tabindex="0" style="position: absolute; top: -100px"></span>
|
||
|
<div class="w2ui-popup-title-btns">${e}</div>
|
||
|
<div class="w2ui-popup-title" style="${s.title?"":"display: none"}"></div>
|
||
|
<div class="w2ui-box" style="${n}">
|
||
|
<div class="w2ui-popup-body ${!s.title||" w2ui-popup-no-title"}
|
||
|
${!s.buttons||" w2ui-popup-no-buttons"}" style="${s.style}">
|
||
|
</div>
|
||
|
</div>
|
||
|
<div class="w2ui-popup-buttons" style="${s.buttons?"":"display: none"}"></div>
|
||
|
<span name="hidden-last" tabindex="0" style="position: absolute; top: -100px"></span>
|
||
|
`,query("#w2ui-popup").html(t),s.title&&query("#w2ui-popup .w2ui-popup-title").append(w2utils.lang(s.title)),s.buttons&&query("#w2ui-popup .w2ui-popup-buttons").append(s.buttons),s.body&&query("#w2ui-popup .w2ui-popup-body").append(s.body),setTimeout(()=>{query("#w2ui-popup").css("transition",s.speed+"s").removeClass("w2ui-anim-open"),w2utils.bindEvents("#w2ui-popup .w2ui-eaction",this),query("#w2ui-popup").find(".w2ui-popup-body").show(),this._promCreated()},1),clearTimeout(this._timer),this._timer=setTimeout(()=>{this.status="open",l.setFocus(s.focus),r.finish(),this._promOpened(),query("#w2ui-popup").removeClass("animating")},1e3*s.speed)}else{if(!0===(r=this.trigger("open",{target:"popup",present:!0})).isCancelled)return;this.status="opening",null!=e&&(e.maximized||e.width==s.width&&e.height==s.height||this.resize(s.width,s.height),s.prevSize=s.width+"px:"+s.height+"px",s.maximized=e.maximized);a=query("#w2ui-popup .w2ui-box").get(0).cloneNode(!0);query(a).removeClass("w2ui-box").addClass("w2ui-box-temp").find(".w2ui-popup-body").empty().append(s.body),query("#w2ui-popup .w2ui-box").after(a),s.buttons?(query("#w2ui-popup .w2ui-popup-buttons").show().html("").append(s.buttons),query("#w2ui-popup .w2ui-popup-body").removeClass("w2ui-popup-no-buttons"),query("#w2ui-popup .w2ui-box, #w2ui-popup .w2ui-box-temp").css("bottom","")):(query("#w2ui-popup .w2ui-popup-buttons").hide().html(""),query("#w2ui-popup .w2ui-popup-body").addClass("w2ui-popup-no-buttons"),query("#w2ui-popup .w2ui-box, #w2ui-popup .w2ui-box-temp").css("bottom","0px")),s.title?(query("#w2ui-popup .w2ui-popup-title").show().html((s.showClose?`<div class="w2ui-popup-button w2ui-popup-close">
|
||
|
<span class="w2ui-icon w2ui-icon-cross w2ui-eaction" data-mousedown="stop" data-click="close"></span>
|
||
|
</div>`:"")+(s.showMax?`<div class="w2ui-popup-button w2ui-popup-max">
|
||
|
<span class="w2ui-icon w2ui-icon-box w2ui-eaction" data-mousedown="stop" data-click="toggle"></span>
|
||
|
</div>`:"")).append(s.title),query("#w2ui-popup .w2ui-popup-body").removeClass("w2ui-popup-no-title"),query("#w2ui-popup .w2ui-box, #w2ui-popup .w2ui-box-temp").css("top","")):(query("#w2ui-popup .w2ui-popup-title").hide().html(""),query("#w2ui-popup .w2ui-popup-body").addClass("w2ui-popup-no-title"),query("#w2ui-popup .w2ui-box, #w2ui-popup .w2ui-box-temp").css("top","0px"));let t=query("#w2ui-popup .w2ui-box")[0],i=query("#w2ui-popup .w2ui-box-temp")[0];query("#w2ui-popup").addClass("animating"),w2utils.transition(t,i,s.transition,()=>{query(t).remove(),query(i).removeClass("w2ui-box-temp").addClass("w2ui-box");var e=query(i).find(".w2ui-popup-body");1==e.length&&(e[0].style.cssText=s.style,e.show()),l.setFocus(s.focus),query("#w2ui-popup").removeClass("animating")}),this.status="open",r.finish(),w2utils.bindEvents("#w2ui-popup .w2ui-eaction",this),query("#w2ui-popup").find(".w2ui-popup-body").show()}return s.openMaximized&&this.max(),s._last_focus=document.activeElement,s.keyboard&&query(document.body).on("keydown",e=>{this.keydown(e)}),query(window).on("resize",this.handleResize),i={resizing:!1,mvMove:function(e){1==i.resizing&&(e=e||window.event,i.div_x=e.screenX-i.x,i.div_y=e.screenY-i.y,!0!==(e=l.trigger("move",{target:"popup",div_x:i.div_x,div_y:i.div_y,originalEvent:e})).isCancelled)&&(query("#w2ui-popup").css({transition:"none",transform:"translate3d("+i.div_x+"px, "+i.div_y+"px, 0px)"}),l.options.moved=!0,e.finish())},mvStop:function(e){1!=i.resizing||(e=e||window.event,l.status="open",i.div_x=e.screenX-i.x,i.div_y=e.screenY-i.y,query("#w2ui-popup").css({left:i.pos_x+i.div_x+"px",top:i.pos_y+i.div_y+"px"}).css({transition:"none",transform:"translate3d(0px, 0px, 0px)"}),i.resizing=!1,query(document.body).off(".w2ui-popup"),i.isLocked)||l.unlock()}},query("#w2ui-popup .w2ui-popup-title").on("mousedown",function(e){var t;l.options.maximized||(e=(e=e)||window.event,l.status="moving",t=query("#w2ui-popup").get(0).getBoundingClientRect(),Object.assign(i,{resizing:!0,isLocked:1==query("#w2ui-popup > .w2ui-lock").length,x:e.screenX,y:e.screenY,pos_x:t.x,pos_y:t.y}),i.isLocked||l.lock({opacity:0}),query(document.body).on("mousemove.w2ui-popup",i.mvMove).on("mouseup.w2ui-popup",i.mvStop),e.stopPropagation?e.stopPropagation():e.cancelBubble=!0,e.preventDefault&&e.preventDefault())}),o}load(s){return new Promise((i,e)=>{if(null==(s="string"==typeof s?{url:s}:s).url)console.log("ERROR: The url is not defined."),e("The url is not defined");else{this.status="loading";let[e,t]=String(s.url).split("#");e&&fetch(e).then(e=>e.text()).then(e=>{i(this.template(e,t,s))})}})}template(t,e,i={}){let s;try{s=query(t)}catch(e){s=query.html(t)}return e&&(s=s.filter("#"+e)),Object.assign(i,{width:parseInt(query(s).css("width")),height:parseInt(query(s).css("height")),title:query(s).find("[rel=title]").html(),body:query(s).find("[rel=body]").html(),buttons:query(s).find("[rel=buttons]").html(),style:query(s).find("[rel=body]").get(0).style.cssText}),this.open(i)}action(e,t){let i=this.options.actions[e];i instanceof Object&&i.onClick&&(i=i.onClick);e=this.trigger("action",{action:e,target:"popup",self:this,originalEvent:t,value:this.input?this.input.value:null});!0!==e.isCancelled&&("function"==typeof i&&i.call(this,t),e.finish())}keydown(e){var t;this.options&&!this.options.keyboard||!0!==(t=this.trigger("keydown",{target:"popup",originalEvent:e})).isCancelled&&(27===e.keyCode&&(e.preventDefault(),0==query("#w2ui-popup .w2ui-message").length)&&(this.options.cancelAction?this.action(this.options.cancelAction):this.close()),t.finish())}close(e){let t=this.trigger("close",{target:"popup"});var i;!0!==t.isCancelled&&(i=()=>{query("#w2ui-popup").remove(),this.options._last_focus&&0<this.options._last_focus.length&&this.options._last_focus.focus(),this.status="closed",this.options={},t.finish(),this._promClosed()},0!==query("#w2ui-popup").length)&&"closed"!=this.status&&("opening"==this.status&&(e=!0),"closing"==this.status&&!0===e?(i(),clearTimeout(this.tmp.closingTimer),w2utils.unlock(document.body,0)):(this.statu
|
||
|
<div>${l.label}</div>
|
||
|
<textarea id="w2prompt" class="w2ui-input" ${l.attrs??""}
|
||
|
data-keydown="keydown|event" data-keyup="change|event">${l.value??""}</textarea>
|
||
|
</div>`:`<div class="w2ui-prompt w2ui-centered">
|
||
|
<label>${l.label}</label>
|
||
|
<input id="w2prompt" class="w2ui-input" ${l.attrs??""}
|
||
|
data-keydown="keydown|event" data-keyup="change|event" value="${l.value??""}">
|
||
|
</div>`),w2utils.extend(l,{title:w2utils.lang(t??"Notification"),showClose:!1,modal:!0,cancelAction:"cancel"}),w2utils.normButtons(l,{ok:"Ok",cancel:"Cancel"}),(s=0<query("#w2ui-popup").length&&"closing"!=w2popup.status?w2popup.message(l):w2popup.open(l)).self.box?s.self.input=query(s.self.box).find("#w2prompt").get(0):s.self.input=query("#w2ui-popup .w2ui-popup-body #w2prompt").get(0),null!==l.value&&s.self.input.select(),s.change=function(e){return s.self.on("change",e),this},s.self.off(".prompt").on("open:after.prompt",e=>{e=e.detail.box||query("#w2ui-popup .w2ui-popup-body").get(0);w2utils.bindEvents(query(e).find("#w2prompt"),{keydown(e){27==e.keyCode&&e.stopPropagation()},change(e){var t=s.self.trigger("change",{target:"prompt",originalEvent:e});!0!==t.isCancelled&&(13==e.keyCode&&e.ctrlKey&&s.self.action("Ok",e),27==e.keyCode&&s.self.action("Cancel",e),t.finish())}}),query(e).find(".w2ui-eaction").trigger("keyup")}).on("action:after.prompt",e=>{"function"==typeof e.detail.self?.close&&e.detail.self.close(),"function"==typeof i&&i(e.detail.action)}),s}let w2popup=new Dialog;class Tooltip{static active={};constructor(){this.defaults={name:null,html:"",style:"",class:"",position:"top|bottom",align:"",anchor:null,anchorClass:"",anchorStyle:"",autoShow:!1,autoShowOn:null,autoHideOn:null,arrowSize:8,margin:0,margin:1,screenMargin:2,autoResize:!0,offsetX:0,offsetY:0,maxWidth:null,maxHeight:null,watchScroll:null,watchResize:null,hideOn:null,onThen:null,onShow:null,onHide:null,onUpdate:null,onMove:null}}static observeRemove=new MutationObserver(e=>{let t=0;Object.keys(Tooltip.active).forEach(e=>{e=Tooltip.active[e];e.displayed&&(e.anchor&&e.anchor.isConnected?t++:e.hide())}),0===t&&Tooltip.observeRemove.disconnect()});trigger(e,t){var i;if(2==arguments.length&&(i=e,(e=t).type=i),e.overlay)return e.overlay.trigger(e);console.log("ERROR: cannot find overlay where to trigger events")}get(e){return 0==arguments.length?Object.keys(Tooltip.active):!0===e?Tooltip.active:Tooltip.active[e.replace(/[\s\.#]/g,"_")]}attach(t,s){let l,r,a=this;if(0!=arguments.length){1==arguments.length&&t.anchor?t=(l=t).anchor:2===arguments.length&&"string"==typeof s?s=(l={anchor:t,html:s}).html:2===arguments.length&&null!=s&&"object"==typeof s&&(s=(l=s).html),l=w2utils.extend({},this.defaults,l||{}),!(s=!s&&l.text?l.text:s)&&l.html&&(s=l.html),delete l.anchor;let e=l.name||t.id;t!=document&&t!=document.body||(t=document.body,e="context-menu"),e||(e="noname-"+Object.keys(Tooltip.active).length,console.log("NOTICE: name property is not defined for tooltip, could lead to too many instances")),e=e.replace(/[\s\.#]/g,"_"),Tooltip.active[e]?((r=Tooltip.active[e]).prevOptions=r.options,r.options=l,r.anchor=t,r.prevOptions.html==r.options.html&&r.prevOptions.class==r.options.class&&r.prevOptions.style==r.options.style||(r.needsUpdate=!0),l=r.options):(r=new w2base,Object.assign(r,{id:"w2overlay-"+e,name:e,options:l,anchor:t,displayed:!1,tmp:{observeResize:new ResizeObserver(()=>{this.resize(r.name)})},hide(){a.hide(e)}}),Tooltip.active[e]=r),Object.keys(r.options).forEach(e=>{var t=r.options[e];e.startsWith("on")&&"function"==typeof t&&(r[e]=t,delete r.options[e])}),!0===l.autoShow&&(l.autoShowOn=l.autoShowOn??"mouseenter",l.autoHideOn=l.autoHideOn??"mouseleave",l.autoShow=!1),l.autoShowOn&&(s="autoShow-"+r.name,query(t).off("."+s).on(l.autoShowOn+"."+s,e=>{a.show(r.name),e.stopPropagation()}),delete l.autoShowOn),l.autoHideOn&&(s="autoHide-"+r.name,query(t).off("."+s).on(l.autoHideOn+"."+s,e=>{a.hide(r.name),e.stopPropagation()}),delete l.autoHideOn),r.off(".attach");let i={overlay:r,then:t=>(r.on("show:after.attach",e=>{t(e)}),i),show:t=>(r.on("show.attach",e=>{t(e)}),i),hide:t=>(r.on("hide.attach",e=>{t(e)}),i),update:t=>(r.on("update.attach",e=>{t(e)}),i),move:t=>(r.on("move.attach",e=>{t(e)}),i)};return i}}update(e,t){var i=Tooltip.active[e];i?(i.needsUpdate=!0,i.options.html=t,this.show(e)):console.log(`Tooltip "${e}" is not displayed. Cannot update it.`)}show(i){if(i instanceof HTMLElement||i instanceof Object){let e=i,t=(i instanceof
|
||
|
data-click="stop" data-focusin="stop">
|
||
|
<style></style>
|
||
|
<div class="w2ui-overlay-body ${l.class}" style="${l.style||""}; ${e}">
|
||
|
${l.html}
|
||
|
</div>
|
||
|
</div>`),a.box=query("#"+w2utils.escapeId(a.id))[0],a.displayed=!0;s=query(a.anchor).data("tooltipName")??[];s.push(i),query(a.anchor).data("tooltipName",s),w2utils.bindEvents(a.box,{}),a.tmp.originalCSS="",0<query(a.anchor).length&&(a.tmp.originalCSS=query(a.anchor)[0].style.cssText)}this.resize(a.name),l.anchorStyle&&(a.anchor.style.cssText+=";"+l.anchorStyle),!l.anchorClass||"w2ui-focus"==l.anchorClass&&a.anchor==document.body||query(a.anchor).addClass(l.anchorClass),"string"==typeof l.hideOn&&(l.hideOn=[l.hideOn]),Array.isArray(l.hideOn)||(l.hideOn=[]),Object.assign(a.tmp,{scrollLeft:document.body.scrollLeft,scrollTop:document.body.scrollTop});{let t=e=>{r.hide(a.name)},i=query(a.anchor),s="tooltip-"+a.name;query("body").off("."+s),l.hideOn.includes("doc-click")&&(["INPUT","TEXTAREA"].includes(a.anchor.tagName)&&i.off(`.${s}-doc`).on(`click.${s}-doc`,e=>{e.stopPropagation()}),query("body").on("click."+s,t));l.hideOn.includes("focus-change")&&query("body").on("focusin."+s,e=>{document.activeElement!=a.anchor&&r.hide(a.name)});["INPUT","TEXTAREA"].includes(a.anchor.tagName)&&(i.off("."+s),l.hideOn.forEach(e=>{-1==["doc-click","focus-change"].indexOf(e)&&i.on(e+"."+s,{once:!0},t)}))}{var n=document.body;let e="tooltip-"+a.name,t=n;"BODY"==n.tagName&&(t=n.ownerDocument);query(t).off("."+e).on("scroll."+e,e=>{Object.assign(a.tmp,{scrollLeft:n.scrollLeft,scrollTop:n.scrollTop}),r.resize(a.name)})}return query(a.box).show(),a.tmp.observeResize.observe(a.box),Tooltip.observeRemove.observe(document.body,{subtree:!0,childList:!0}),query(a.box).css("opacity",1).find(".w2ui-overlay-body").html(l.html),setTimeout(()=>{query(a.box).css({"pointer-events":"auto"}).data("ready","yes")},100),delete a.needsUpdate,a.box.overlay=a,t&&t.finish(),{overlay:a}}r.hide(i)}}}hide(e){let i;if(0==arguments.length)Object.keys(Tooltip.active).forEach(e=>{this.hide(e)});else if(e instanceof HTMLElement)(query(e).data("tooltipName")??[]).forEach(e=>{this.hide(e)});else if("string"==typeof e&&(e=e.replace(/[\s\.#]/g,"_"),i=Tooltip.active[e]),i&&i.box){delete Tooltip.active[e];e=this.trigger("hide",{target:e,overlay:i});if(!0!==e.isCancelled){var s="tooltip-"+i.name;i.tmp.observeResize?.disconnect(),i.options.watchScroll&&query(i.options.watchScroll).off(".w2scroll-"+i.name);let t=0;Object.keys(Tooltip.active).forEach(e=>{Tooltip.active[e].displayed&&t++}),0==t&&Tooltip.observeRemove.disconnect(),query("body").off("."+s),query(document).off("."+s),i.box.remove(),i.box=null,i.displayed=!1;var l=query(i.anchor).data("tooltipName")??[];-1!=l.indexOf(i.name)&&l.splice(l.indexOf(i.name),1),0==l.length?query(i.anchor).removeData("tooltipName"):query(i.anchor).data("tooltipName",l),i.anchor.style.cssText=i.tmp.originalCSS,query(i.anchor).off("."+s).removeClass(i.options.anchorClass),e.finish()}}}resize(i){if(0==arguments.length)Object.keys(Tooltip.active).forEach(e=>{e=Tooltip.active[e];e.displayed&&this.resize(e.name)});else{var s=Tooltip.active[i.replace(/[\s\.#]/g,"_")];let t=this.getPosition(s.name);var l=t.left+"x"+t.top;let e;s.tmp.lastPos!=l&&(e=this.trigger("move",{target:i,overlay:s,pos:t})),query(s.box).css({left:t.left+"px",top:t.top+"px"}).then(e=>{null!=t.width&&e.css("width",t.width+"px").find(".w2ui-overlay-body").css("width","100%"),null!=t.height&&e.css("height",t.height+"px").find(".w2ui-overlay-body").css("height","100%")}).find(".w2ui-overlay-body").removeClass("w2ui-arrow-right w2ui-arrow-left w2ui-arrow-top w2ui-arrow-bottom").addClass(t.arrow.class).closest(".w2ui-overlay").find("style").text(t.arrow.style),s.tmp.lastPos!=l&&e&&(s.tmp.lastPos=l,e.finish())}}getPosition(e){let g=Tooltip.active[e.replace(/[\s\.#]/g,"_")];if(g&&g.box){let t=g.options;(g.tmp.resizedY||g.tmp.resizedX)&&query(g.box).css({width:"",height:"",scroll:"auto"});var e=w2utils.scrollBarSize(),y=!(document.body.scrollWidth==document.body.clientWidth),w=!(document.body.scrollHeight==document.body.clientHeight);let i={width:window.innerWidth-(w?e:0),height:window.innerHeight-(y?e:0)};var b,v=("auto"==t.position?"top|bottom|right|left":t.position).split(
|
||
|
#${g.id} .w2ui-overlay-body:before {
|
||
|
--tip-size: ${a}px;
|
||
|
margin-${_}: ${p.offset}px;
|
||
|
}`))}w="top"==c?-t.margin:"bottom"==c?t.margin:0,e="left"==c?-t.margin:"right"==c?t.margin:0;return h=Math.floor(100*(h+parseFloat(t.offsetY)+parseFloat(w)))/100,{left:o=Math.floor(100*(o+parseFloat(t.offsetX)+parseFloat(e)))/100,top:h,arrow:p,adjust:f,width:d,height:u,pos:c}}}}class ColorTooltip extends Tooltip{constructor(){super(),this.palette=[["000000","333333","555555","777777","888888","999999","AAAAAA","CCCCCC","DDDDDD","EEEEEE","F7F7F7","FFFFFF"],["FF011B","FF9838","FFC300","FFFD59","86FF14","14FF7A","2EFFFC","2693FF","006CE7","9B24F4","FF21F5","FF0099"],["FFEAEA","FCEFE1","FCF4DC","FFFECF","EBFFD9","D9FFE9","E0FFFF","E8F4FF","ECF4FC","EAE6F4","FFF5FE","FCF0F7"],["F4CCCC","FCE5CD","FFF1C2","FFFDA1","D5FCB1","B5F7D0","BFFFFF","D6ECFF","CFE2F3","D9D1E9","FFE3FD","FFD9F0"],["EA9899","F9CB9C","FFE48C","F7F56F","B9F77E","84F0B1","83F7F7","B5DAFF","9FC5E8","B4A7D6","FAB9F6","FFADDE"],["E06666","F6B26B","DEB737","E0DE51","8FDB48","52D189","4EDEDB","76ACE3","6FA8DC","8E7CC3","E07EDA","F26DBD"],["CC0814","E69138","AB8816","B5B20E","6BAB30","27A85F","1BA8A6","3C81C7","3D85C6","674EA7","A14F9D","BF4990"],["99050C","B45F17","80650E","737103","395E14","10783D","13615E","094785","0A5394","351C75","780172","782C5A"]],this.defaults=w2utils.extend({},this.defaults,{advanced:!1,transparent:!0,position:"top|bottom",class:"w2ui-white",color:"",liveUpdate:!0,arrowSize:12,autoResize:!1,anchorClass:"w2ui-focus",autoShowOn:"focus",hideOn:["doc-click","focus-change"],onSelect:null,onLiveUpdate:null})}attach(e,t){let i;1==arguments.length&&e.anchor?e=(i=e).anchor:2===arguments.length&&null!=t&&"object"==typeof t&&((i=t).anchor=e);t=i.hideOn;i=w2utils.extend({},this.defaults,i||{}),t&&(i.hideOn=t),i.style+="; padding: 0;",i.transparent&&"333333"==this.palette[0][1]&&(this.palette[0].splice(1,1),this.palette[0].push("")),i.transparent||"333333"==this.palette[0][1]||(this.palette[0].splice(1,0,"333333"),this.palette[0].pop()),i.color&&(i.color=String(i.color).toUpperCase()),"string"==typeof i.color&&"#"===i.color.substr(0,1)&&(i.color=i.color.substr(1)),this.index=[-1,-1];let s=super.attach(i),l=s.overlay;return l.options.html=this.getColorHTML(l.name,i),l.on("show.attach",e=>{var e=e.detail.overlay,t=e.anchor,i=e.options;["INPUT","TEXTAREA"].includes(t.tagName)&&!i.color&&t.value&&(e.tmp.initColor=t.value),delete e.newColor}),l.on("show:after.attach",e=>{var t;s.overlay?.box&&(t=query(s.overlay.box).find(".w2ui-eaction"),w2utils.bindEvents(t,this),this.initControls(s.overlay))}),l.on("update:after.attach",e=>{var t;s.overlay?.box&&(t=query(s.overlay.box).find(".w2ui-eaction"),w2utils.bindEvents(t,this),this.initControls(s.overlay))}),l.on("hide.attach",e=>{var e=e.detail.overlay,t=e.anchor,i=e.newColor??e.options.color??"",t=(["INPUT","TEXTAREA"].includes(t.tagName)&&t.value!=i&&(t.value=i),this.trigger("select",{color:i,target:e.name,overlay:e}));!0!==t.isCancelled&&t.finish()}),s.liveUpdate=t=>(l.on("liveUpdate.attach",e=>{t(e)}),s),s.select=t=>(l.on("select.attach",e=>{t(e)}),s),s}select(e,t){let i;this.index=[-1,-1],"string"!=typeof t&&(i=t.target,this.index=query(i).attr("index").split(":"),t=query(i).closest(".w2ui-overlay").attr("name"));var s=this.get(t),t=this.trigger("liveUpdate",{color:e,target:t,overlay:s,param:arguments[1]});!0!==t.isCancelled&&(["INPUT","TEXTAREA"].includes(s.anchor.tagName)&&s.options.liveUpdate&&query(s.anchor).val(e),s.newColor=e,query(s.box).find(".w2ui-selected").removeClass("w2ui-selected"),i&&query(i).addClass("w2ui-selected"),t.finish())}nextColor(e){var t=this.palette;switch(e){case"up":this.index[0]--;break;case"down":this.index[0]++;break;case"right":this.index[1]++;break;case"left":this.index[1]--}return this.index[0]<0&&(this.index[0]=0),this.index[0]>t.length-2&&(this.index[0]=t.length-2),this.index[1]<0&&(this.index[1]=0),this.index[1]>t[0].length-1&&(this.index[1]=t[0].length-1),t[this.index[0]][this.index[1]]}tabClick(e,t){"string"!=typeof t&&(t=query(t.target).closest(".w2ui-overlay").attr("name"));var t=this.get(t),i=query(t.box).find(`.w2ui-color-tab:nth-child(
|
||
|
<div class="w2ui-colors">
|
||
|
<div class="w2ui-tab-content tab-1">`;for(let i=0;i<this.palette.length;i++){r+='<div class="w2ui-color-row">';for(let t=0;t<this.palette[i].length;t++){var a=this.palette[i][t];let e="FFFFFF"===a?"; border: 1px solid #efefef":"";r+=`
|
||
|
<div class="w2ui-color w2ui-eaction ${""===a?"w2ui-no-color":""} ${l.color==a?"w2ui-selected":""}"
|
||
|
style="background-color: #${a+e};" name="${a}" index="${i}:${t}"
|
||
|
data-mousedown="select|'${a}'|event" data-mouseup="hide|${s}">
|
||
|
</div>`}r+="</div>",i<2&&(r+='<div style="height: 8px"></div>')}return r=(r=(r+="</div>")+`
|
||
|
<div class="w2ui-tab-content tab-2" style="display: none">
|
||
|
<div class="color-info">
|
||
|
<div class="color-preview-bg"><div class="color-preview"></div><div class="color-original"></div></div>
|
||
|
<div class="color-part">
|
||
|
<span>H</span> <input class="w2ui-input" name="h" maxlength="3" max="360" tabindex="101">
|
||
|
<span>R</span> <input class="w2ui-input" name="r" maxlength="3" max="255" tabindex="104">
|
||
|
</div>
|
||
|
<div class="color-part">
|
||
|
<span>S</span> <input class="w2ui-input" name="s" maxlength="3" max="100" tabindex="102">
|
||
|
<span>G</span> <input class="w2ui-input" name="g" maxlength="3" max="255" tabindex="105">
|
||
|
</div>
|
||
|
<div class="color-part">
|
||
|
<span>V</span> <input class="w2ui-input" name="v" maxlength="3" max="100" tabindex="103">
|
||
|
<span>B</span> <input class="w2ui-input" name="b" maxlength="3" max="255" tabindex="106">
|
||
|
</div>
|
||
|
<div class="color-part opacity">
|
||
|
<span>${w2utils.lang("Opacity")}</span>
|
||
|
<input class="w2ui-input" name="a" maxlength="5" max="1" tabindex="107">
|
||
|
</div>
|
||
|
</div>
|
||
|
<div class="palette" name="palette">
|
||
|
<div class="palette-bg"></div>
|
||
|
<div class="value1 move-x move-y"></div>
|
||
|
</div>
|
||
|
<div class="rainbow" name="rainbow">
|
||
|
<div class="value2 move-x"></div>
|
||
|
</div>
|
||
|
<div class="alpha" name="alpha">
|
||
|
<div class="alpha-bg"></div>
|
||
|
<div class="value2 move-x"></div>
|
||
|
</div>
|
||
|
</div>`)+`
|
||
|
<div class="w2ui-color-tabs">
|
||
|
<div class="w2ui-color-tab selected w2ui-eaction" data-click="tabClick|1|event|this"><span class="w2ui-icon w2ui-icon-colors"></span></div>
|
||
|
<div class="w2ui-color-tab w2ui-eaction" data-click="tabClick|2|event|this"><span class="w2ui-icon w2ui-icon-settings"></span></div>
|
||
|
<div style="padding: 5px; width: 100%; text-align: right;">
|
||
|
${"string"==typeof l.html?l.html:""}
|
||
|
</div>
|
||
|
</div>`}initControls(n){let a,o=this;var e=n.options;let h=w2utils.parseColor(e.color||n.tmp.initColor),d=(null==h&&(h={r:140,g:150,b:160,a:1}),w2utils.rgb2hsv(h));!0===e.advanced&&this.tabClick(2,n.name),u(d,!0,!0),query(n.box).find("input").off(".w2color").on("change.w2color",e=>{e=query(e.target);let t=parseFloat(e.val());var i=parseFloat(e.attr("max")),i=(isNaN(t)&&(t=0,e.val(0)),1<i&&(t=parseInt(t)),0<i&&t>i&&(e.val(i),t=i),t<0&&(e.val(0),t=0),e.attr("name")),e={};-1!==["r","g","b","a"].indexOf(i)?(h[i]=t,d=w2utils.rgb2hsv(h)):-1!==["h","s","v"].indexOf(i)&&(e[i]=t),u(e,!0)}),query(n.box).find(".color-original").off(".w2color").on("click.w2color",e=>{e=w2utils.parseColor(query(e.target).css("background-color"));null!=e&&(h=e,u(d=w2utils.rgb2hsv(h),!0))});e=`${w2utils.isIOS?"touchstart":"mousedown"}.w2color`;let s=`${w2utils.isIOS?"touchend":"mouseup"}.w2color`,l=`${w2utils.isIOS?"touchmove":"mousemove"}.w2color`;function u(e,t,i){null!=e.h&&(d.h=e.h),null!=e.s&&(d.s=e.s),null!=e.v&&(d.v=e.v),null!=e.a&&(h.a=e.a,d.a=e.a);let s="rgba("+(h=w2utils.hsv2rgb(d)).r+","+h.g+","+h.b+","+h.a+")",l=[Number(h.r).toString(16).toUpperCase(),Number(h.g).toString(16).toUpperCase(),Number(h.b).toString(16).toUpperCase(),Math.round(255*Number(h.a)).toString(16).toUpperCase()];var r,a;l.forEach((e,t)=>{1===e.length&&(l[t]="0"+e)}),s=l[0]+l[1]+l[2]+l[3],1===h.a&&(s=l[0]+l[1]+l[2]),query(n.box).find(".color-preview").css("background-color","#"+s),query(n.box).find("input").each(e=>{e.name&&(null!=h[e.name]&&(e.value=h[e.name]),null!=d[e.name]&&(e.value=d[e.name]),"a"===e.name)&&(e.value=h.a)}),i?(e=n.tmp?.initColor||s,query(n.box).find(".color-original").css("background-color","#"+e),query(n.box).find(".w2ui-colors .w2ui-selected").removeClass("w2ui-selected"),query(n.box).find(`.w2ui-colors [name="${e}"]`).addClass("w2ui-selected"),8==s.length&&o.tabClick(2,n.name)):o.select(s,n.name),t&&(i=query(n.box).find(".palette .value1"),e=query(n.box).find(".rainbow .value2"),t=query(n.box).find(".alpha .value2"),r=parseInt(i[0].clientWidth)/2,a=parseInt(e[0].clientWidth)/2,i.css({left:150*d.s/100-r+"px",top:125*(100-d.v)/100-r+"px"}),e.css("left",d.h/2.4-a+"px"),t.css("left",150*h.a-a+"px"),c())}function c(){var e=w2utils.hsv2rgb(d.h,100,100),e=`${e.r},${e.g},`+e.b;query(n.box).find(".palette").css("background-image",`linear-gradient(90deg, rgba(${e},0) 0%, rgba(${e},1) 100%)`)}function r(e){query("body").off(".w2color")}function p(e){var t=a.el,i=e.pageX-a.x,e=e.pageY-a.y;let s=a.left+i,l=a.top+e;var i=parseInt(t.prop("clientWidth"))/2,e=(s<-i&&(s=-i),l<-i&&(l=-i),s>a.width-i&&(s=a.width-i),l>a.height-i&&(l=a.height-i),t.hasClass("move-x")&&t.css({left:s+"px"}),t.hasClass("move-y")&&t.css({top:l+"px"}),query(t.get(0).parentNode).attr("name")),r=parseInt(t.css("left"))+i,t=parseInt(t.css("top"))+i;"palette"===e&&u({s:Math.round(r/a.width*100),v:Math.round(100-t/a.height*100)}),"rainbow"===e&&(u({h:Math.round(2.4*r)}),c()),"alpha"===e&&u({a:parseFloat(Number(r/150).toFixed(2))})}query(n.box).find(".palette, .rainbow, .alpha").off(".w2color").on(e+".w2color",function(e){var t=query(this).find(".value1, .value2"),i=parseInt(t.prop("clientWidth"))/2;t.hasClass("move-x")&&t.css({left:e.offsetX-i+"px"});t.hasClass("move-y")&&t.css({top:e.offsetY-i+"px"});a={el:t,x:e.pageX,y:e.pageY,width:t.prop("parentNode").clientWidth,height:t.prop("parentNode").clientHeight,left:parseInt(t.css("left")),top:parseInt(t.css("top"))},p(e),query("body").off(".w2color").on(l,p).on(s,r)})}}class MenuTooltip extends Tooltip{constructor(){super(),this.defaults=w2utils.extend({},this.defaults,{type:"normal",items:[],index:null,render:null,spinner:!1,msgNoItems:w2utils.lang("No items found"),topHTML:"",menuStyle:"",filter:!1,markSearch:!1,match:"contains",search:!1,altRows:!1,arrowSize:10,align:"left",position:"bottom|top",class:"w2ui-white",anchorClass:"w2ui-focus",autoShowOn:"focus",hideOn:["doc-click","focus-change","select"],onSelect:null,onSubMenu:null,onRemove:null})}attach(e,t){let i;1==arguments.length&&e.anchor?e=(i=e).anchor:2===arguments.length&&null
|
||
|
<div class="w2ui-menu">
|
||
|
<div class="w2ui-no-items">
|
||
|
<div class="w2ui-spinner"></div>
|
||
|
${w2utils.lang("Loading...")}
|
||
|
</div>
|
||
|
</div>`;u=u||[],null==e&&(e=h.items),Array.isArray(e)||(e=[]);let c=0,t=null,i="",p=(!d&&h.search&&(i+=`
|
||
|
<div class="w2ui-menu-search">
|
||
|
<span class="w2ui-icon w2ui-icon-search"></span>
|
||
|
<input id="menu-search" class="w2ui-input" type="text"/>
|
||
|
</div>`,e.forEach(e=>e.hidden=!1)),!d&&h.topHTML&&(i+=`<div class="w2ui-menu-top">${h.topHTML}</div>`),`
|
||
|
${i}
|
||
|
<div class="w2ui-menu ${d?"w2ui-sub-menu":""}" ${d?"":`style="${h.menuStyle}"`}
|
||
|
data-parent="${u}">
|
||
|
`);return e.forEach((r,a)=>{t=r.icon;var n=(0<u.length?u.join("-")+"-":"")+a;if(null==t&&(t=null),-1==["radio","check"].indexOf(h.type)||Array.isArray(r.items)||!1===r.group||(t=!0===r.checked?"w2ui-icon-check":"w2ui-icon-empty"),!0!==r.hidden){let i=r.text,s="",l="";if("function"==typeof(i="function"==typeof h.render?h.render(r,h):i)&&(i=i(r,h)),t&&("<"!==String(t).slice(0,1)&&(t=`<span class="w2ui-icon ${t}"></span>`),s=`<div class="menu-icon">${t}</span></div>`),"break"!==r.type&&null!=i&&""!==i&&"--"!=String(i).substr(0,2)){var o=["w2ui-menu-item"];1==h.altRows&&o.push(c%2==0?"w2ui-even":"w2ui-odd");let e=1,t=(""===s&&e++,null==r.count&&null==r.hotkey&&!0!==r.remove&&null==r.items&&e++,null==r.tooltip&&null!=r.hint&&(r.tooltip=r.hint),"");if(!0===r.remove)t='<span class="remove">x</span>';else if(null!=r.items){let e=[];"function"==typeof r.items?e=r.items(r):Array.isArray(r.items)&&(e=r.items),t="<span></span>",l=`
|
||
|
<div class="w2ui-sub-menu-box" style="${r.expanded?"":"display: none"}">
|
||
|
${this.getMenuHTML(h,e,!0,u.concat(a))}
|
||
|
</div>`}else null!=r.count&&(t+="<span>"+r.count+"</span>"),null!=r.hotkey&&(t+='<span class="hotkey">'+r.hotkey+"</span>");!0===r.disabled&&o.push("w2ui-disabled"),!0===r._noSearchInside&&o.push("w2ui-no-search-inside"),""!==l&&(o.push("has-sub-menu"),r.expanded?o.push("expanded"):o.push("collapsed")),p+=`
|
||
|
<div index="${n}" class="${o.join(" ")}" style="${r.style||""}"
|
||
|
data-index="${a}" data-parents="${u.join("-")}">
|
||
|
<div style="width: ${(d?20:0)+parseInt(r.indent??0)}px"></div>
|
||
|
${s}
|
||
|
<div class="menu-text" colspan="${e}">${w2utils.lang(i)}</div>
|
||
|
<div class="menu-extra">${t}</div>
|
||
|
</div>
|
||
|
`+l,c++}else{o=(i??"").replace(/^-+/g,"");p+=`
|
||
|
<div index="${n}" class="w2ui-menu-divider ${""!=o?"has-text":""}">
|
||
|
<div class="line"></div>
|
||
|
${o?`<div class="text">${o}</div>`:""}
|
||
|
</div>`}}e[a]=r}),0===c&&h.msgNoItems&&(p+=`
|
||
|
<div class="w2ui-no-items">
|
||
|
${w2utils.lang(h.msgNoItems)}
|
||
|
</div>`),p+="</div>"}refreshIndex(e){var t,i,e=Tooltip.active[e.replace(/[\s\.#]/g,"_")];e&&(e.displayed||this.show(e.name),t=query(e.box).find(".w2ui-overlay-body").get(0),i=query(e.box).find(".w2ui-menu-search, .w2ui-menu-top").get(0),query(e.box).find(".w2ui-menu-item.w2ui-selected").removeClass("w2ui-selected"),e=query(e.box).find(`.w2ui-menu-item[index="${e.selected}"]`).addClass("w2ui-selected").get(0))&&(e.offsetTop+e.clientHeight>t.clientHeight+t.scrollTop&&e.scrollIntoView({behavior:"smooth",block:"start",inline:"start"}),e.offsetTop<t.scrollTop+(i?i.clientHeight:0))&&e.scrollIntoView({behavior:"smooth",block:"end",inline:"end"})}refreshSearch(i){let s=Tooltip.active[i.replace(/[\s\.#]/g,"_")];s&&(s.displayed||this.show(s.name),query(s.box).find(".w2ui-no-items").hide(),query(s.box).find(".w2ui-menu-item, .w2ui-menu-divider").each(e=>{var t;this.getCurrent(i,e.getAttribute("index")).item.hidden?query(e).hide():((t=s.tmp?.search)&&s.options.markSearch&&w2utils.marker(e,t,{onlyFirst:"begins"==s.options.match}),query(e).show())}),query(s.box).find(".w2ui-sub-menu").each(e=>{var t=query(e).find(".w2ui-menu-item").get().some(e=>"none"!=e.style.display);this.getCurrent(i,e.dataset.parent).item.expanded&&(t?query(e).parent().show():query(e).parent().hide())}),0!=s.tmp.searchCount&&0!=s.options?.items?.length||(0==query(s.box).find(".w2ui-no-items").length&&query(s.box).find(".w2ui-menu:not(.w2ui-sub-menu)").append(`
|
||
|
<div class="w2ui-no-items">
|
||
|
${w2utils.lang(s.options.msgNoItems)}
|
||
|
</div>`),query(s.box).find(".w2ui-no-items").show()))}applyFilter(r,e,a){let n=0;var t=Tooltip.active[r.replace(/[\s\.#]/g,"_")];let o=t.options;if(!1!==o.filter){null==e&&(e=t.options.items),null==a&&(a=["INPUT","TEXTAREA"].includes(t.anchor.tagName)?t.anchor.value:"");let l=[];return o.selected&&(Array.isArray(o.selected)?l=o.selected.map(e=>e?.id??e):o.selected?.id&&(l=[o.selected.id])),e.forEach(e=>{let t="",i="";-1!==["is","begins","begins with"].indexOf(o.match)&&(t="^"),-1!==["is","ends","ends with"].indexOf(o.match)&&(i="$");try{new RegExp(t+a+i,"i").test(e.text)||"..."===e.text?e.hidden=!1:e.hidden=!0}catch(e){}var s;o.hideSelected&&l.includes(e.id)&&(e.hidden=!0),Array.isArray(e.items)&&0<e.items.length&&(delete e._noSearchInside,0<(s=this.applyFilter(r,e.items,a)))&&(n+=s,e.hidden&&(e._noSearchInside=!0),a&&(e.expanded=!0),e.hidden=!1),!0!==e.hidden&&n++}),t.tmp.activeChain=this.getActiveChain(r,e),t.selected=null,n}}getActiveChain(i,e,s=[],l=[],t){var r=Tooltip.active[i.replace(/[\s\.#]/g,"_")];return null!=r.tmp.activeChain?r.tmp.activeChain:((e=null==e?r.options.items:e).forEach((e,t)=>{e.hidden||e.disabled||e?.text?.startsWith("--")||(l.push(s.concat([t]).join("-")),Array.isArray(e.items)&&0<e.items.length&&e.expanded&&(s.push(t),this.getActiveChain(i,e.items,s,l,!0),s.pop()))}),null==t&&(r.tmp.activeChain=l),l)}menuDown(e,t,i,s){e=e.options;let l=e.items;var r=query(t.delegate).find(".w2ui-icon");let a=query(t.target).closest(".w2ui-menu:not(.w2ui-sub-menu)"),n=("string"==typeof s&&""!==s&&s.split("-").forEach(e=>{l=l[e].items}),l[i]);if(!n.disabled){let l=(i,s)=>{i.forEach((e,t)=>{e.id!=n.id&&(e.group===n.group&&e.checked&&(a.find(`.w2ui-menu-item[index="${(s?s+"-":"")+t}"] .w2ui-icon`).removeClass("w2ui-icon-check").addClass("w2ui-icon-empty"),i[t].checked=!1),Array.isArray(e.items))&&l(e.items,t)})};"check"!==e.type&&"radio"!==e.type||!1===n.group||query(t.target).hasClass("remove")||query(t.target).closest(".w2ui-menu-item").hasClass("has-sub-menu")||(n.checked="radio"==e.type||!n.checked,n.checked?("radio"===e.type&&query(t.target).closest(".w2ui-menu").find(".w2ui-icon").removeClass("w2ui-icon-check").addClass("w2ui-icon-empty"),"check"===e.type&&null!=n.group&&l(e.items),r.removeClass("w2ui-icon-empty").addClass("w2ui-icon-check")):"check"===e.type&&r.removeClass("w2ui-icon-check").addClass("w2ui-icon-empty")),query(t.target).hasClass("remove")||(a.find(".w2ui-menu-item").removeClass("w2ui-selected"),query(t.delegate).addClass("w2ui-selected"))}}menuClick(t,i,s,l){var r=t.options;let a=r.items;var n=query(i.delegate).closest(".w2ui-menu-item");let o=!r.hideOn.includes("select");(i.shiftKey||i.metaKey||i.ctrlKey)&&(o=!0),"string"==typeof l&&""!==l?l.split("-").forEach(e=>{a=a[e].items}):l=null;var h=(a="function"==typeof a?a({overlay:t,index:s,parentIndex:l,event:i}):a)[s];if(!h.disabled||query(i.target).hasClass("remove")){let e;if(query(i.target).hasClass("remove")){if(!0===(e=this.trigger("remove",{originalEvent:i,target:t.name,overlay:t,item:h,index:s,parentIndex:l,el:n[0]})).isCancelled)return;o=!r.hideOn.includes("item-remove"),n.remove()}else if(n.hasClass("has-sub-menu")){if(!0===(e=this.trigger("subMenu",{originalEvent:i,target:t.name,overlay:t,item:h,index:s,parentIndex:l,el:n[0]})).isCancelled)return;o=!0,n.hasClass("expanded")?(h.expanded=!1,n.removeClass("expanded").addClass("collapsed"),query(n.get(0).nextElementSibling).hide()):(h.expanded=!0,n.addClass("expanded").removeClass("collapsed"),query(n.get(0).nextElementSibling).show()),t.selected=parseInt(n.attr("index"))}else{r=this.findChecked(r.items);if(t.selected=parseInt(n.attr("index")),!0===(e=this.trigger("select",{originalEvent:i,target:t.name,overlay:t,item:h,index:s,parentIndex:l,selected:r,keepOpen:o,el:n[0]})).isCancelled)return;null!=h.keepOpen&&(o=h.keepOpen),["INPUT","TEXTAREA"].includes(t.anchor.tagName)&&(t.anchor.dataset.selected=h.id,t.anchor.dataset.selectedIndex=t.selected)}o||this.hide(t.name),e.finish()}}findChecked(e){let t=[];return e.forEach(e=>{e.checked&&t.push(e),Array.isArray(e.items)&&
|
||
|
<div class="w2ui-cal-title">
|
||
|
<div class="w2ui-cal-previous">
|
||
|
<div></div>
|
||
|
</div>
|
||
|
<div class="w2ui-cal-next">
|
||
|
<div></div>
|
||
|
</div>
|
||
|
${w2utils.settings.fullmonths[r-1]}, ${e}
|
||
|
<span class="arrow-down"></span>
|
||
|
</div>
|
||
|
<div class="w2ui-cal-days">
|
||
|
${o}
|
||
|
`,p=new Date(e+`/${r}/1`);t=(p=new Date(p.getTime()+432e5)).getDay();"M"==w2utils.settings.weekStarts&&n--,0<t&&(p=new Date(p.getTime()-864e5*n));for(let e=0;e<42;e++){var f=[],m=`${p.getFullYear()}/${p.getMonth()+1}/`+p.getDate(),g=(6===p.getDay()&&f.push("w2ui-saturday"),0===p.getDay()&&f.push("w2ui-sunday"),p.getMonth()+1!==r&&f.push("outside"),m==this.today&&f.push("w2ui-today"),p.getDate());let e="",t="",i,s;s="datetime"===l.type?(i=w2utils.formatDateTime(m,l.format),w2utils.formatDate(m,w2utils.settings.dateFormat)):i=w2utils.formatDate(m,l.format),l.colored&&void 0!==l.colored[s]&&(m=l.colored[s].split("|"),t="background-color: "+m[0]+";",e="color: "+m[1]+";"),c+=`<div class="w2ui-day ${this.inRange(i,l,!0)?"w2ui-date "+(s==a?"w2ui-selected":""):"w2ui-blocked"} ${f.join(" ")}"
|
||
|
style="${e+t}" date="${s}" data-date="${p.getTime()}">
|
||
|
${g}
|
||
|
</div>`,p=new Date(p.getTime()+864e5)}return c+="</div>",l.btnNow&&(t=w2utils.lang("Today"+("datetime"==l.type?" & Now":"")),c+=`<div class="w2ui-cal-now">${t}</div>`),{html:c,month:r,year:e}}getYearHTML(){let t="",i="";for(let e=0;e<w2utils.settings.fullmonths.length;e++)t+=`<div class="w2ui-jump-month" name="${e+1}">${w2utils.settings.shortmonths[e]}</div>`;for(let e=w2utils.settings.dateStartYear;e<=w2utils.settings.dateEndYear;e++)i+=`<div class="w2ui-jump-year" name="${e}">${e}</div>`;return`<div class="w2ui-cal-jump">
|
||
|
<div id="w2ui-jump-month">${t}</div>
|
||
|
<div id="w2ui-jump-year">${i}</div>
|
||
|
</div>`}getHourHTML(l){(l=l??{}).format||(l.format=w2utils.settings.timeFormat);var r=-1<l.format.indexOf("h24"),a=l.value||(l.anchor?l.anchor.value:""),n=[];for(let s=0;s<24;s++){let e=(12<=s&&!r?s-12:s)+":00"+(r?"":s<12?" am":" pm"),t=(12!=s||r||(e="12:00 pm"),n[Math.floor(s/8)]||(n[Math.floor(s/8)]=""),this.min2str(this.str2min(e))),i=this.min2str(this.str2min(e)+59);"datetime"===l.type&&(h=w2utils.isDateTime(a,l.format,!0),o=l.format.split("|")[0].trim(),t=w2utils.formatDate(h,o)+" "+t,i=w2utils.formatDate(h,o)+" "+i);var o,h=this.inRange(t,l)||this.inRange(i,l);n[Math.floor(s/8)]+=`<span hour="${s}"
|
||
|
class="hour ${h?"w2ui-time ":"w2ui-blocked"}">${e}</span>`}return{html:`<div class="w2ui-calendar">
|
||
|
<div class="w2ui-time-title">${w2utils.lang("Select Hour")}</div>
|
||
|
<div class="w2ui-cal-time">
|
||
|
<div class="w2ui-cal-column">${n[0]}</div>
|
||
|
<div class="w2ui-cal-column">${n[1]}</div>
|
||
|
<div class="w2ui-cal-column">${n[2]}</div>
|
||
|
</div>
|
||
|
${l.btnNow?`<div class="w2ui-cal-now">${w2utils.lang("Now")}</div>`:""}
|
||
|
</div>`}}getMinHTML(i,s){null==i&&(i=0),(s=s??{}).format||(s.format=w2utils.settings.timeFormat);var l=-1<s.format.indexOf("h24"),r=s.value||(s.anchor?s.anchor.value:""),a=[];for(let t=0;t<60;t+=5){var n=(12<i&&!l?i-12:i)+":"+(t<10?0:"")+t+" "+(l?"":i<12?"am":"pm");let e=n;var o,h,d=t<20?0:t<40?1:2;a[d]||(a[d]=""),"datetime"===s.type&&(o=w2utils.isDateTime(r,s.format,!0),h=s.format.split("|")[0].trim(),e=w2utils.formatDate(o,h)+" "+e),a[d]+=`<span min="${t}" class="min ${this.inRange(e,s)?"w2ui-time ":"w2ui-blocked"}">${n}</span>`}return{html:`<div class="w2ui-calendar">
|
||
|
<div class="w2ui-time-title">${w2utils.lang("Select Minute")}</div>
|
||
|
<div class="w2ui-cal-time">
|
||
|
<div class="w2ui-cal-column">${a[0]}</div>
|
||
|
<div class="w2ui-cal-column">${a[1]}</div>
|
||
|
<div class="w2ui-cal-column">${a[2]}</div>
|
||
|
</div>
|
||
|
${s.btnNow?`<div class="w2ui-cal-now">${w2utils.lang("Now")}</div>`:""}
|
||
|
</div>`}}inRange(i,s,e){let l=!1;if("date"===s.type){var r=w2utils.isDate(i,s.format,!0);if(r){if(s.start||s.end){var a="string"==typeof s.start?s.start:query(s.start).val(),n="string"==typeof s.end?s.end:query(s.end).val();let e=w2utils.isDate(a,s.format,!0),t=w2utils.isDate(n,s.format,!0);a=new Date(r);e=e||a,t=t||a,a>=e&&a<=t&&(l=!0)}else l=!0;Array.isArray(s.blockDates)&&s.blockDates.includes(i)&&(l=!1),Array.isArray(s.blockWeekdays)&&s.blockWeekdays.includes(r.getDay())&&(l=!1)}}else if("time"===s.type)if(s.start||s.end){n=this.str2min(i);let e=this.str2min(s.start),t=this.str2min(s.end);e=e||n,t=t||n,n>=e&&n<=t&&(l=!0)}else l=!0;else"datetime"===s.type&&(a=w2utils.isDateTime(i,s.format,!0))&&(r=s.format.split("|").map(e=>e.trim()),e?(n=w2utils.formatDate(a,r[0]),i=w2utils.extend({},s,{type:"date",format:r[0]}),this.inRange(n,i)&&(l=!0)):(e=w2utils.formatTime(a,r[1]),n={type:"time",format:r[1],start:s.startTime,end:s.endTime},this.inRange(e,n)&&(l=!0)));return l}str2min(e){var t;return"string"!=typeof e||2!==(t=e.split(":")).length?null:(t[0]=parseInt(t[0]),t[1]=parseInt(t[1]),-1!==e.indexOf("pm")&&12!==t[0]&&(t[0]+=12),e.includes("am")&&12==t[0]&&(t[0]=0),60*t[0]+t[1])}min2str(e,t){let i="";1440<=e&&(e%=1440),e<0&&(e=1440+e);var s=Math.floor(e/60),e=(e%60<10?"0":"")+e%60;return t=t||w2utils.settings.timeFormat,i=-1!==t.indexOf("h24")?s+":"+e:(s<=12?s:s-12)+":"+e+" "+(12<=s?"pm":"am")}}let w2tooltip=new Tooltip,w2menu=new MenuTooltip,w2color=new ColorTooltip,w2date=new DateTooltip;class w2toolbar extends w2base{constructor(e){super(e.name),this.box=null,this.name=null,this.routeData={},this.items=[],this.right="",this.tooltip="top|left",this.onClick=null,this.onMouseDown=null,this.onMouseUp=null,this.onMouseEnter=null,this.onMouseLeave=null,this.onRender=null,this.onRefresh=null,this.onResize=null,this.onDestroy=null,this.item_template={id:null,type:"button",text:null,html:"",tooltip:null,count:null,hidden:!1,disabled:!1,checked:!1,icon:null,route:null,arrow:null,style:null,group:null,items:null,selected:null,color:null,overlay:{anchorClass:""},onClick:null,onRefresh:null},this.last={badge:{}};var t=e.items;delete e.items,Object.assign(this,e),Array.isArray(t)&&this.add(t,!0),e.items=t,"string"==typeof this.box&&(this.box=query(this.box).get(0)),this.box&&this.render(this.box)}add(e,t){this.insert(null,e,t)}insert(r,e,a){(e=Array.isArray(e)?e:[e]).forEach((e,t,i)=>{"string"==typeof e&&(e=i[t]={id:e,text:e});var l,s=["button","check","radio","drop","menu","menu-radio","menu-check","color","text-color","html","break","spacer","new-line"];if(s.includes(String(e.type)))if(null!=e.id||["break","spacer","new-line"].includes(e.type)){if(null==e.type)console.log('ERROR: The parameter "type" is required but not supplied.',e);else if(w2utils.checkUniqueId(e.id,this.items,"toolbar",this.name)){let s=w2utils.extend({},this.item_template,e);"menu-check"==s.type?(Array.isArray(s.selected)||(s.selected=[]),Array.isArray(s.items)&&s.items.forEach(e=>{(e="string"==typeof e?i[t]={id:e,text:e}:e).checked&&!s.selected.includes(e.id)&&s.selected.push(e.id),!e.checked&&s.selected.includes(e.id)&&(e.checked=!0),null==e.checked&&(e.checked=!1)})):"menu-radio"==s.type&&Array.isArray(s.items)&&s.items.forEach((e,t,i)=>{(e="string"==typeof e?i[t]={id:e,text:e}:e).checked&&null==s.selected?s.selected=e.id:e.checked=!1,e.checked||s.selected!=e.id||(e.checked=!0),null==e.checked&&(e.checked=!1)}),null==r?this.items.push(s):(l=this.get(r,!0),this.items=this.items.slice(0,l).concat([s],this.items.slice(l))),s.line=s.line??1,!0!==a&&this.refresh(s.id)}}else console.log('ERROR: The parameter "id" is required but not supplied.',e);else console.log('ERROR: The parameter "type" should be one of the following:',s,`, but ${e.type} is supplied.`,e)}),!0!==a&&this.resize()}remove(){let i=0;return Array.from(arguments).forEach(e=>{var t=this.get(e);t&&-1==String(e).indexOf(":")&&(i++,query(this.box).find("#tb_"+this.name+"_item_"+w2utils.escapeId(t.id)).remove(),null!=(e=this.get(t.id,!0)))&&this.items.splice(e,1)}),this.resize(),i}set(e,t){var i=t
|
||
|
<div class="w2ui-tb-line">
|
||
|
<div class="w2ui-scroll-wrapper w2ui-eaction" data-mousedown="resize">
|
||
|
<div class="w2ui-tb-right">${this.right[i-1]??""}</div>
|
||
|
</div>
|
||
|
<div class="w2ui-scroll-left w2ui-eaction" data-click='["scroll", "left", "${i}"]'></div>
|
||
|
<div class="w2ui-scroll-right w2ui-eaction" data-click='["scroll", "right", "${i}"]'></div>
|
||
|
</div>
|
||
|
`),r.line=i)}return query(this.box).attr("name",this.name).addClass("w2ui-reset w2ui-toolbar").html(t),0<query(this.box).length&&(query(this.box)[0].style.cssText+=this.style),w2utils.bindEvents(query(this.box).find(".w2ui-tb-line .w2ui-eaction"),this),this.last.observeResize=new ResizeObserver(()=>{this.resize()}),this.last.observeResize.observe(this.box),this.refresh(),this.resize(),l.finish(),Date.now()-s}}refresh(t){var i=Date.now(),l=this.trigger("refresh",{target:null!=t?t:this.name,item:this.get(t)});if(!0!==l.isCancelled){let e;if(null==t)for(let e=0;e<this.items.length;e++){var s=this.items[e];null==s.id&&(s.id="item_"+e),this.refresh(s.id)}else{var r=this.get(t);if(null==r)return!1;if("function"!=typeof r.onRefresh||!0!==(e=this.trigger("refresh",{target:t,item:r,object:r})).isCancelled){var a=`#tb_${this.name}_item_`+w2utils.escapeId(r.id);let s=query(this.box).find(a);var n=this.getItemHTML(r);if(this.tooltipHide(t),"spacer"==r.type&&query(this.box).find(".w2ui-tb-line:nth-child("+r.line).find(".w2ui-tb-right").css("width","auto"),0===s.length){t=parseInt(this.get(t,!0))+1;let e=query(this.box).find(`#tb_${this.name}_item_`+w2utils.escapeId(this.items[t]?this.items[t].id:""));0==e.length?e=query(this.box).find(".w2ui-tb-line:nth-child("+r.line).find(".w2ui-tb-right").before(n):e.after(n),w2utils.bindEvents(query(this.box).find(a),this)}else{query(this.box).find(a).replace(query.html(n));let t=query(this.box).find(a).get(0),i=(w2utils.bindEvents(t,this),w2tooltip.get(!0));Object.keys(i).forEach(e=>{i[e].anchor==s.get(0)&&(i[e].anchor=t)})}if(["menu","menu-radio","menu-check"].includes(r.type)&&r.checked){let t=Array.isArray(r.selected)?r.selected:[r.selected];r.items.forEach(e=>{t.includes(e.id)?e.checked=!0:e.checked=!1}),w2menu.update(this.name+"-drop",r.items)}return"function"==typeof r.onRefresh&&e.finish(),l.finish(),Date.now()-i}}}}resize(){var e=Date.now(),t=this.trigger("resize",{target:this.name});if(!0!==t.isCancelled)return query(this.box).find(".w2ui-tb-line").each(e=>{var e=query(e),t=(e.find(".w2ui-scroll-left, .w2ui-scroll-right").hide(),e.find(".w2ui-scroll-wrapper").get(0)),i=e.find(".w2ui-tb-right"),s=e.get(0).getBoundingClientRect().width,i=0<i.length?i[0].offsetLeft+i[0].clientWidth:0;s<i&&(0<t.scrollLeft&&e.find(".w2ui-scroll-left").show(),s<i-t.scrollLeft)&&e.find(".w2ui-scroll-right").show()}),t.finish(),Date.now()-e}destroy(){var e=this.trigger("destroy",{target:this.name});!0!==e.isCancelled&&(0<query(this.box).find(".w2ui-scroll-wrapper .w2ui-tb-right").length&&query(this.box).removeAttr("name").removeClass("w2ui-reset w2ui-toolbar").html(""),query(this.box).html(""),this.last.observeResize?.disconnect(),delete w2ui[this.name],e.finish())}getItemHTML(i){let e="",t=(null!=i.caption&&null==i.text&&(i.text=i.caption),null==i.text&&(i.text=""),null==i.tooltip&&null!=i.hint&&(i.tooltip=i.hint),null==i.tooltip&&(i.tooltip=""),"function"==typeof i.get||!Array.isArray(i.items)&&"function"!=typeof i.items||(i.get=function(t){let e=i.items;return(e="function"==typeof e?i.items(i):e).find(e=>e.id==t)}),""),s="function"==typeof i.text?i.text.call(this,i):i.text;i.icon&&(t=i.icon,"function"==typeof i.icon&&(t=i.icon.call(this,i)),t=`<div class="w2ui-tb-icon">${t="<"!==String(t).slice(0,1)?`<span class="${t}"></span>`:t}</div>`);var l=["w2ui-tb-button"];switch(i.checked&&l.push("checked"),i.disabled&&l.push("disabled"),i.hidden&&l.push("hidden"),t||l.push("no-icon"),i.type){case"color":case"text-color":"string"==typeof i.color&&("#"==i.color.slice(0,1)&&(i.color=i.color.slice(1)),[3,6,8].includes(i.color.length))&&(i.color="#"+i.color),"color"==i.type&&(s=`<span class="w2ui-tb-color-box" style="background-color: ${null!=i.color?i.color:"#fff"}"></span>
|
||
|
`+(i.text?`<div style="margin-left: 17px;">${w2utils.lang(i.text)}</div>`:"")),"text-color"==i.type&&(s='<span style="color: '+(null!=i.color?i.color:"#444")+';">'+(i.text?w2utils.lang(i.text):"<b>Aa</b>")+"</span>");case"menu":case"menu-check":case"menu-radio":case"button":case"check":case"radio":case"drop":var r=!0===i.arrow||!1!==i.arrow&&["menu","menu-radio","menu-check","drop","color","text-color"].includes(i.type);e=`
|
||
|
<div id="tb_${this.name}_item_${i.id}" style="${i.hidden?"display: none":""}"
|
||
|
class="${l.join(" ")} ${i.class||""}"
|
||
|
${i.disabled?"":`data-click='["click","${i.id}"]'
|
||
|
data-mouseenter='["mouseAction", "event", "this", "Enter", "${i.id}"]'
|
||
|
data-mouseleave='["mouseAction", "event", "this", "Leave", "${i.id}"]'
|
||
|
data-mousedown='["mouseAction", "event", "this", "Down", "${i.id}"]'
|
||
|
data-mouseup='["mouseAction", "event", "this", "Up", "${i.id}"]'`}
|
||
|
>
|
||
|
${t}
|
||
|
${""!=s?`<div class="w2ui-tb-text" style="${i.style||""}">
|
||
|
${w2utils.lang(s)}
|
||
|
${null!=i.count?w2utils.stripSpaces(`<span class="w2ui-tb-count">
|
||
|
<span class="${this.last.badge[i.id]?this.last.badge[i.id].className??"":""}"
|
||
|
style="${this.last.badge[i.id]?this.last.badge[i.id].style??"":""}"
|
||
|
>${i.count}</span>
|
||
|
</span>`):""}
|
||
|
${r?'<span class="w2ui-tb-down"><span></span></span>':""}
|
||
|
</div>`:""}
|
||
|
</div>
|
||
|
`;break;case"break":e=`<div id="tb_${this.name}_item_${i.id}" class="w2ui-tb-break"
|
||
|
style="${i.hidden?"display: none":""}; ${i.style||""}">
|
||
|
 
|
||
|
</div>`;break;case"spacer":e=`<div id="tb_${this.name}_item_${i.id}" class="w2ui-tb-spacer"
|
||
|
style="${i.hidden?"display: none":""}; ${i.style||""}">
|
||
|
</div>`;break;case"html":e=`<div id="tb_${this.name}_item_${i.id}" class="w2ui-tb-html ${l.join(" ")}"
|
||
|
style="${i.hidden?"display: none":""}; ${i.style||""}">
|
||
|
${"function"==typeof i.html?i.html.call(this,i):i.html}
|
||
|
</div>`}return e}tooltipShow(t){if(null!=this.tooltip){var i=query(this.box).find("#tb_"+this.name+"_item_"+w2utils.escapeId(t)).get(0),t=this.get(t),s=this.tooltip;let e=t.tooltip;"function"==typeof e&&(e=e.call(this,t)),["menu","menu-radio","menu-check","drop","color","text-color"].includes(t.type)&&1==t.checked||w2tooltip.show({anchor:i,name:this.name+"-tooltip",html:e,position:s})}}tooltipHide(e){null!=this.tooltip&&w2tooltip.hide(this.name+"-tooltip")}menuClick(t){if(t.item&&!t.item.disabled){var i=this.trigger(!0!==t.remove?"click":"remove",{target:t.item.id+":"+t.subItem.id,item:t.item,subItem:t.subItem,originalEvent:t.originalEvent});if(!0!==i.isCancelled){let l=t.subItem,r=this.get(t.item.id),e=r.items;if("function"==typeof e&&(e=r.items()),"menu"==r.type&&(r.selected=l.id),"menu-radio"==r.type&&(r.selected=l.id,Array.isArray(e)&&e.forEach(e=>{!0===e.checked&&delete e.checked,Array.isArray(e.items)&&e.items.forEach(e=>{!0===e.checked&&delete e.checked})}),l.checked=!0),"menu-check"==r.type)if(Array.isArray(r.selected)||(r.selected=[]),null==l.group){var a=r.selected.indexOf(l.id);-1==a?(r.selected.push(l.id),l.checked=!0):(r.selected.splice(a,1),l.checked=!1)}else if(!1!==l.group){let i=[];a=r.selected.indexOf(l.id);let s=e=>{e.forEach(e=>{var t;e.group===l.group&&-1!=(t=r.selected.indexOf(e.id))&&(e.id!=l.id&&i.push(e.id),r.selected.splice(t,1)),Array.isArray(e.items)&&s(e.items)})};s(e),-1==a&&(r.selected.push(l.id),l.checked=!0)}if("string"==typeof l.route){let t=""!==l.route?String("/"+l.route).replace(/\/{2,}/g,"/"):"";var s=w2utils.parseRoute(t);if(0<s.keys.length)for(let e=0;e<s.keys.length;e++)null!=this.routeData[s.keys[e].name]&&(t=t.replace(new RegExp(":"+s.keys[e].name,"g"),this.routeData[s.keys[e].name]));setTimeout(()=>{window.location.hash=t},1)}this.refresh(t.item.id),i.finish()}}}colorClick(e){var t;e.item&&!e.item.disabled&&!0!==(t=this.trigger("click",{target:e.item.id,item:e.item,color:e.color,final:e.final,originalEvent:e.originalEvent})).isCancelled&&(e.item.color=e.color,this.refresh(e.item.id),t.finish())}mouseAction(e,t,i,s){var l=this.get(s),e=this.trigger("mouse"+i,{target:s,item:l,object:l,originalEvent:e});if(!0!==e.isCancelled&&!l.disabled&&!l.hidden){switch(i){case"Enter":query(t).addClass("over"),this.tooltipShow(s);break;case"Leave":query(t).removeClass("over down"),this.tooltipHide(s);break;case"Down":query(t).addClass("down");break;case"Up":query(t).removeClass("down")}e.finish()}}}class w2sidebar extends w2base{constructor(e){super(e.name),this.name=null,this.box=null,this.sidebar=null,this.parent=null,this.nodes=[],this.menu=[],this.routeData={},this.selected=null,this.icon=null,this.style="",this.topHTML="",this.bottomHTML="",this.flatButton=!1,this.keyboard=!0,this.flat=!1,this.hasFocus=!1,this.levelPadding=12,this.skipRefresh=!1,this.tabIndex=null,this.handle={size:0,style:"",html:"",tooltip:""},this.onClick=null,this.onDblClick=null,this.onMouseEnter=null,this.onMouseLeave=null,this.onContextMenu=null,this.onMenuClick=null,this.onExpand=null,this.onCollapse=null,this.onKeydown=null,this.onRender=null,this.onRefresh=null,this.onResize=null,this.onDestroy=null,this.onFocus=null,this.onBlur=null,this.onFlat=null,this.node_template={id:null,text:"",order:null,count:null,icon:null,nodes:[],style:"",route:null,selected:!1,expanded:!1,hidden:!1,disabled:!1,group:!1,groupShowHide:!0,collapsible:!1,plus:!1,onClick:null,onDblClick:null,onContextMenu:null,onExpand:null,onCollapse:null,parent:null,sidebar:null},this.last={badge:{}};var t=e.nodes;delete e.nodes,Object.assign(this,e),Array.isArray(t)&&this.add(t),e.nodes=t,"string"==typeof this.box&&(this.box=query(this.box).get(0)),this.box&&this.render(this.box)}add(e,t){return 1==arguments.length&&(t=arguments[0],e=this),"string"==typeof e&&(e=this.get(e)),this.insert(e=null!=e&&""!=e?e:this,null,t)}insert(t,i,s){let l,r,a,n,o;if(2==arguments.length&&"string"==typeof t)if(s=arguments[1],null!=(i=arguments[0])){if(null==(r=this.get(i)))return null!=(s=Array.isArray(s)?s:[s])[0].caption&&null==s[0].text&&(cons
|
||
|
<div class="w2ui-sidebar-top"></div>
|
||
|
<input id="sidebar_${this.name}_focus" ${this.tabIndex?'tabindex="'+this.tabIndex+'"':""}
|
||
|
style="position: absolute; top: 0; right: 0; width: 1px; z-index: -1; opacity: 0"
|
||
|
${w2utils.isIOS?"readonly":""}/>
|
||
|
<div class="w2ui-sidebar-body"></div>
|
||
|
<div class="w2ui-sidebar-bottom"></div>
|
||
|
</div>`);e=query(this.box).get(0).getBoundingClientRect();query(this.box).find(":scope > div").css({width:e.width+"px",height:e.height+"px"}),query(this.box).get(0).style.cssText+=this.style;let t;return query(this.box).find("#sidebar_"+this.name+"_focus").on("focus",function(e){clearTimeout(t),s.hasFocus||s.focus(e)}).on("blur",function(e){t=setTimeout(()=>{s.hasFocus&&s.blur(e)},100)}).on("keydown",function(e){9!=e.keyCode&&w2ui[s.name].keydown.call(w2ui[s.name],e)}),query(this.box).off("mousedown").on("mousedown",function(t){setTimeout(()=>{var e;-1==["INPUT","TEXTAREA","SELECT"].indexOf(t.target.tagName.toUpperCase())&&(e=query(s.box).find("#sidebar_"+s.name+"_focus"),document.activeElement!=e.get(0))&&e.get(0).focus()},1)}),this.last.observeResize=new ResizeObserver(()=>{this.resize()}),this.last.observeResize.observe(this.box),l.finish(),this.refresh(),Date.now()-i}}update(e,t){var i,s,e=this.get(e);let l;return e&&(i=query(this.box).find("#node_"+w2utils.escapeId(e.id)),e.group?(t.text&&(e.text=t.text,i.find(".w2ui-group-text").replace("function"==typeof e.text?e.text.call(this,e):'<span class="w2ui-group-text">'+e.text+"</span>"),delete t.text),t.class&&(e.class=t.class,l=i.data("level"),i.get(0).className="w2ui-node-group w2ui-level-"+l+(e.class?" "+e.class:""),delete t.class),t.style&&(e.style=t.style,i.get(0).nextElementSibling.style=e.style+";"+(!e.hidden&&e.expanded?"":"display: none;"),delete t.style)):(t.icon&&0<(s=i.find(".w2ui-node-image > span")).length&&(e.icon=t.icon,s[0].className="function"==typeof e.icon?e.icon.call(this,e):e.icon,delete t.icon),t.count&&(e.count=t.count,i.find(".w2ui-node-count").html(e.count),0<i.find(".w2ui-node-count").length)&&delete t.count,t.class&&0<i.length&&(e.class=t.class,l=i.data("level"),i[0].className="w2ui-node w2ui-level-"+l+(e.selected?" w2ui-selected":"")+(e.disabled?" w2ui-disabled":"")+(e.class?" "+e.class:""),delete t.class),t.text&&(e.text=t.text,i.find(".w2ui-node-text").html("function"==typeof e.text?e.text.call(this,e):e.text),delete t.text),t.style&&0<i.length&&(s=i.find(".w2ui-node-text"),e.style=t.style,s[0].style=e.style,delete t.style))),t}refresh(l,r){if(null!=this.box){var a=Date.now(),n=this.trigger("refresh",{target:null!=l?l:this.name,nodeId:null!=l?l:null,fullRefresh:null==l});if(!0!==n.isCancelled){let e="";1==this.flatButton&&(e=`<div class="w2ui-flat w2ui-flat-${this.flat?"right":"left"}"></div>`),null!=l||""===this.topHTML&&""===e||(query(this.box).find(".w2ui-sidebar-top").html(this.topHTML+e),query(this.box).find(".w2ui-sidebar-body").css("top",query(this.box).find(".w2ui-sidebar-top").get(0)?.clientHeight+"px"),query(this.box).find(".w2ui-flat").off("click").on("click",e=>{this.goFlat()})),null!=l&&""!==this.bottomHTML&&(query(this.box).find(".w2ui-sidebar-bottom").html(this.bottomHTML),query(this.box).find(".w2ui-sidebar-body").css("bottom",query(this.box).find(".w2ui-sidebar-bottom").get(0)?.clientHeight+"px")),query(this.box).find(":scope > div").removeClass("w2ui-sidebar-flat").addClass(this.flat?"w2ui-sidebar-flat":"").css({width:query(this.box).get(0)?.clientWidth+"px",height:query(this.box).get(0)?.clientHeight+"px"}),0<this.nodes.length&&null==this.nodes[0].parent&&(o=this.nodes,this.nodes=[],this.add(this,o));let h=this,t,i;if(null==l)t=this,i=".w2ui-sidebar-body";else{if(null==(t=this.get(l)))return;i="#node_"+w2utils.escapeId(t.id)+"_sub"}var o="#node_"+w2utils.escapeId(t.id);let s;t!==this&&(s=c(t),query(this.box).find(o).before('<div id="sidebar_'+this.name+'_tmp"></div>'),query(this.box).find(o).remove(),query(this.box).find(i).remove(),query(this.box).find("#sidebar_"+this.name+"_tmp").before(s),query(this.box).find("#sidebar_"+this.name+"_tmp").remove());var l=query(this.box).find(":scope > div").get(0),d={top:l?.scrollTop,left:l?.scrollLeft};query(this.box).find(i).html("");for(let e=0;e<t.nodes.length;e++){var u=t.nodes[e];if(s=c(u),query(this.box).find(i).append(s),0!==u.nodes.length)this.refresh(u.id,!0);else{u=this.trigger("refresh",{target:u.id});if(!0===u.isCancelled)return;u.finish()}}return l&&(l.scro
|
||
|
<div id="node_${t.id}" data-level="${r}" style="${t.hidden?"display: none":""}"
|
||
|
class="w2ui-node-group w2ui-level-${r} ${t.class||""} w2ui-eaction"
|
||
|
data-click="toggle|${t.id}"
|
||
|
data-contextmenu="contextMenu|${t.id}|event"
|
||
|
data-mouseenter="showPlus|this|inherit"
|
||
|
data-mouseleave="showPlus|this|transparent">
|
||
|
${t.groupShowHide&&t.collapsible?`<span>${!t.hidden&&t.expanded?w2utils.lang("Hide"):w2utils.lang("Show")}</span>`:"<span></span>"} ${e}
|
||
|
</div>
|
||
|
<div class="w2ui-node-sub" id="node_${t.id}_sub" style="${t.style}; ${!t.hidden&&t.expanded?"":"display: none;"}">
|
||
|
</div>`,h.flat&&(i=`
|
||
|
<div class="w2ui-node-group" id="node_${t.id}"><span> </span></div>
|
||
|
<div id="node_${t.id}_sub" style="${t.style}; ${!t.hidden&&t.expanded?"":"display: none;"}"></div>`)}else{t.selected&&!t.disabled&&(h.selected=t.id),l="",s&&(l=`
|
||
|
<div class="w2ui-node-image">
|
||
|
<span class="${"function"==typeof s?s.call(h,t):s}"></span>
|
||
|
</div>`);let e="";var a=null!=t.count?`<div class="w2ui-node-count ${h.last.badge[t.id]&&h.last.badge[t.id].className||""}"
|
||
|
style="${h.last.badge[t.id]&&h.last.badge[t.id].style||""}">
|
||
|
${t.count}
|
||
|
</div>`:"",n=(!0===t.collapsible&&(e=`<div class="w2ui-${t.expanded?"expanded":"collapsed"}"><span></span></div>`),w2utils.lang("function"==typeof t.text?t.text.call(h,t):t.text)),o=["w2ui-node","w2ui-level-"+r,"w2ui-eaction"];t.selected&&o.push("w2ui-selected"),t.disabled&&o.push("w2ui-disabled"),t.class&&o.push(t.class),i=`
|
||
|
<div id="node_${t.id}" class="${o.join(" ")}" data-level="${r}"
|
||
|
style="position: relative; ${t.hidden?"display: none;":""}"
|
||
|
data-click="click|${t.id}|event"
|
||
|
data-dblclick="dblClick|${t.id}|event"
|
||
|
data-contextmenu="contextMenu|${t.id}|event"
|
||
|
data-mouseEnter="mouseAction|Enter|this|${t.id}|event"
|
||
|
data-mouseLeave="mouseAction|Leave|this|${t.id}|event"
|
||
|
>
|
||
|
${h.handle.html?`<div class="w2ui-node-handle w2ui-eaction" style="width: ${h.handle.size}px; ${h.handle.style}"
|
||
|
data-mouseEnter="mouseAction|Enter|this|${t.id}|event|handle"
|
||
|
data-mouseLeave="mouseAction|Leave|this|${t.id}|event|handle"
|
||
|
>
|
||
|
${"function"==typeof h.handle.html?h.handle.html.call(h,t):h.handle.html}
|
||
|
</div>`:""}
|
||
|
<div class="w2ui-node-data" style="margin-left: ${r*h.levelPadding+h.handle.size}px">
|
||
|
${e} ${l} ${a}
|
||
|
<div class="w2ui-node-text w2ui-node-caption" style="${t.style||""}">${n}</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
<div class="w2ui-node-sub" id="node_${t.id}_sub" style="${t.style}; ${!t.hidden&&t.expanded?"":"display: none;"}"></div>`,h.flat&&(i=`
|
||
|
<div id="node_${t.id}" class="${o.join(" ")}" style="${t.hidden?"display: none;":""}"
|
||
|
data-click="click|${t.id}|event"
|
||
|
data-dblclick="dblClick|${t.id}|event"
|
||
|
data-contextmenu="contextMenu|${t.id}|event"
|
||
|
data-mouseEnter="mouseAction|Enter|this|${t.id}|event|tooltip"
|
||
|
data-mouseLeave="mouseAction|Leave|this|${t.id}|event|tooltip"
|
||
|
>
|
||
|
<div class="w2ui-node-data w2ui-node-flat">${l}</div>
|
||
|
</div>
|
||
|
<div class="w2ui-node-sub" id="node_${t.id}_sub" style="${t.style}; ${!t.hidden&&t.expanded?"":"display: none;"}"></div>`)}return i}}}}mouseAction(e,t,i,s,l){var r=this.get(i),a=w2utils.lang("function"==typeof r.text?r.text.call(this,r):r.text)+(r.count||0===r.count?' - <span class="w2ui-node-count">'+r.count+"</span>":""),e=this.trigger("mouse"+e,{target:i,node:r,tooltip:a,originalEvent:s});"tooltip"==l&&this.tooltip(t,a,i),"handle"==l&&this.handleTooltip(t,i),e.finish()}tooltip(e,t,i){e=query(e).find(".w2ui-node-data");""!==t?w2tooltip.show({anchor:e.get(0),name:this.name+"_tooltip",html:t,position:"right|left"}):w2tooltip.hide(this.name+"_tooltip")}handleTooltip(e,t){let i=this.handle.tooltip;""!==(i="function"==typeof i?i(t):i)&&null!=t?w2tooltip.show({anchor:e,name:this.name+"_tooltip",html:i,position:"top|bottom"}):w2tooltip.hide(this.name+"_tooltip")}showPlus(e,t){query(e).find("span:nth-child(1)").css("color",t)}resize(){var e,t=Date.now(),i=this.trigger("resize",{target:this.name});if(!0!==i.isCancelled)return e=query(this.box).get(0).getBoundingClientRect(),query(this.box).css("overflow","hidden"),query(this.box).find(":scope > div").css({width:e.width+"px",height:e.height+"px"}),i.finish(),Date.now()-t}destroy(){var e=this.trigger("destroy",{target:this.name});!0!==e.isCancelled&&(0<query(this.box).find(".w2ui-sidebar-body").length&&query(this.box).removeAttr("name").removeClass("w2ui-reset w2ui-sidebar").html(""),this.last.observeResize?.disconnect(),delete w2ui[this.name],e.finish())}lock(e,t){var i=Array.from(arguments);i.unshift(this.box),w2utils.lock(...i)}unlock(e){w2utils.unlock(this.box,e)}}class w2tabs extends w2base{constructor(e){super(e.name),this.box=null,this.name=null,this.active=null,this.reorder=!1,this.flow="down",this.tooltip="top|left",this.tabs=[],this.routeData={},this.last={},this.right="",this.style="",this.onClick=null,this.onMouseEnter=null,this.onMouseLeave=null,this.onMouseDown=null,this.onMouseUp=null,this.onClose=null,this.onRender=null,this.onRefresh=null,this.onResize=null,this.onDestroy=null,this.tab_template={id:null,text:null,route:null,hidden:!1,disabled:!1,closable:!1,tooltip:null,style:"",onClick:null,onRefresh:null,onClose:null};var t=e.tabs;delete e.tabs,Object.assign(this,e),Array.isArray(t)&&this.add(t),e.tabs=t,"string"==typeof this.box&&(this.box=query(this.box).get(0)),this.box&&this.render(this.box)}add(e){return this.insert(null,e)}insert(s,e){Array.isArray(e)||(e=[e]);let l=[];return e.forEach(e=>{var t,i;null==e.id?console.log(`ERROR: The parameter "id" is required but not supplied. (obj: ${this.name})`):w2utils.checkUniqueId(e.id,this.tabs,"tabs",this.name)&&(e=Object.assign({},this.tab_template,e),null==s?(this.tabs.push(e),l.push(this.animateInsert(null,e))):(t=this.get(s,!0),i=this.tabs[t].id,this.tabs.splice(t,0,e),l.push(this.animateInsert(i,e))))}),Promise.all(l)}remove(){let t=0;return Array.from(arguments).forEach(e=>{e=this.get(e);e&&(t++,this.tabs.splice(this.get(e.id,!0),1),query(this.box).find(`#tabs_${this.name}_tab_`+w2utils.escapeId(e.id)).remove())}),this.resize(),t}select(e){return this.active!=e&&null!=this.get(e)&&(this.active=e,this.refresh(),!0)}set(e,t){var i=this.get(e,!0);return null!=i&&(w2utils.extend(this.tabs[i],t),this.refresh(e),!0)}get(t,i){if(0===arguments.length){var s=[];for(let e=0;e<this.tabs.length;e++)null!=this.tabs[e].id&&s.push(this.tabs[e].id);return s}for(let e=0;e<this.tabs.length;e++)if(this.tabs[e].id==t)return!0===i?e:this.tabs[e];return null}show(){let t=[];return Array.from(arguments).forEach(e=>{e=this.get(e);e&&!1!==e.hidden&&(e.hidden=!1,t.push(e.id))}),setTimeout(()=>{t.forEach(e=>{this.refresh(e),this.resize()})},15),t}hide(){let t=[];return Array.from(arguments).forEach(e=>{e=this.get(e);e&&!0!==e.hidden&&(e.hidden=!0,t.push(e.id))}),setTimeout(()=>{t.forEach(e=>{this.refresh(e),this.resize()})},15),t}enable(){let t=[];return Array.from(arguments).forEach(e=>{e=this.get(e);e&&!1!==e.disabled&&(e.disabled=!1,t.push(e.id))}),setTimeout(()=>{t.forEach(e=>{this.refresh(e)})},15),t}disab
|
||
|
data-mousedown="stop" data-mouseup="clickClose|${e.id}|event">
|
||
|
</div>`),`
|
||
|
<div id="tabs_${this.name}_tab_${e.id}" style="${s} ${e.style}"
|
||
|
class="w2ui-tab w2ui-eaction ${this.active===e.id?"active":""} ${e.closable?"closable":""} ${e.class||""}"
|
||
|
data-mouseenter="mouseAction|Enter|${e.id}|event]"
|
||
|
data-mouseleave="mouseAction|Leave|${e.id}|event]"
|
||
|
data-mousedown="mouseAction|Down|${e.id}|event"
|
||
|
data-mouseup="mouseAction|Up|${e.id}|event"
|
||
|
data-click="click|${e.id}|event"
|
||
|
>
|
||
|
${w2utils.lang(t)+i}
|
||
|
</div>`}refresh(e){var t=Date.now(),i=("up"==this.flow?query(this.box).addClass("w2ui-tabs-up"):query(this.box).removeClass("w2ui-tabs-up"),this.trigger("refresh",{target:null!=e?e:this.name,object:this.get(e)}));if(!0!==i.isCancelled){if(null==e)for(let e=0;e<this.tabs.length;e++)this.refresh(this.tabs[e].id);else{var s="#tabs_"+this.name+"_tab_"+w2utils.escapeId(e),l=query(this.box).find(s),e=this.getTabHTML(e);0===l.length?query(this.box).find("#tabs_"+this.name+"_right").before(e):0==query(this.box).find(".tab-animate-insert").length&&l.replace(e),w2utils.bindEvents(query(this.box).find(s+`, ${s} .w2ui-eaction`),this)}return query(this.box).find("#tabs_"+this.name+"_right").html(this.right),i.finish(),Date.now()-t}}render(e){var t=Date.now(),i=("string"==typeof e&&(e=query(e).get(0)),this.trigger("render",{target:this.name,box:e??this.box}));if(!0!==i.isCancelled)return null!=e&&(0<query(this.box).find("#tabs_"+this.name+"_right").length&&query(this.box).removeAttr("name").removeClass("w2ui-reset w2ui-tabs").html(""),this.box=e),!!this.box&&(e=`
|
||
|
<div class="w2ui-tabs-line"></div>
|
||
|
<div class="w2ui-scroll-wrapper w2ui-eaction" data-mousedown="resize">
|
||
|
<div id="tabs_${this.name}_right" class="w2ui-tabs-right">${this.right}</div>
|
||
|
</div>
|
||
|
<div class="w2ui-scroll-left w2ui-eaction" data-click='["scroll","left"]'></div>
|
||
|
<div class="w2ui-scroll-right w2ui-eaction" data-click='["scroll","right"]'></div>`,query(this.box).attr("name",this.name).addClass("w2ui-reset w2ui-tabs").html(e),0<query(this.box).length&&(query(this.box)[0].style.cssText+=this.style),w2utils.bindEvents(query(this.box).find(".w2ui-eaction"),this),this.last.observeResize=new ResizeObserver(()=>{this.resize()}),this.last.observeResize.observe(this.box),i.finish(),this.refresh(),this.resize(),Date.now()-t)}initReorder(e,a){if(this.reorder){let t=this,i=query(this.box).find("#tabs_"+this.name+"_tab_"+w2utils.escapeId(e)),s=this.get(e,!0),l=query(i.get(0).cloneNode(!0)),r;l.attr("id","#tabs_"+this.name+"_tab_ghost"),this.last.moving={index:s,indexFrom:s,$tab:i,$ghost:l,divX:0,left:i.get(0).getBoundingClientRect().left,parentX:query(this.box).get(0).getBoundingClientRect().left,x:a.pageX,opacity:i.css("opacity")},query(document).off(".w2uiTabReorder").on("mousemove.w2uiTabReorder",function(e){if(!t.last.reordering){if(!0===(r=t.trigger("reorder",{target:t.tabs[s].id,indexFrom:s,tab:t.tabs[s]})).isCancelled)return;w2tooltip.hide(this.name+"_tooltip"),t.last.reordering=!0,l.addClass("moving"),l.css({"pointer-events":"none",position:"absolute",left:i.get(0).getBoundingClientRect().left}),i.css("opacity",0),query(t.box).find(".w2ui-scroll-wrapper").append(l.get(0)),query(t.box).find(".w2ui-tab-close").hide()}t.last.moving.divX=e.pageX-t.last.moving.x,l.css("left",t.last.moving.left-t.last.moving.parentX+t.last.moving.divX+"px"),t.dragMove(e)}).on("mouseup.w2uiTabReorder",function(){query(document).off(".w2uiTabReorder"),l.css({transition:"0.1s",left:t.last.moving.$tab.get(0).getBoundingClientRect().left-t.last.moving.parentX}),query(t.box).find(".w2ui-tab-close").show(),setTimeout(()=>{l.remove(),i.css({opacity:t.last.moving.opacity}),t.last.reordering&&r.finish({indexTo:t.last.moving.index}),t.last.reordering=!1},100)})}}scroll(n,o){return new Promise((e,t)=>{var i=query(this.box).find(".w2ui-scroll-wrapper"),s=i.get(0).scrollLeft,l=i.find(".w2ui-tabs-right").get(0),r=i.parent().get(0).getBoundingClientRect().width,a=s+parseInt(l.offsetLeft)+parseInt(l.clientWidth);switch(n){case"left":{let e=s-r+50;e<=0&&(e=0),i.get(0).scrollTo({top:0,left:e,behavior:o?"atuo":"smooth"});break}case"right":{let e=s+r-50;e>=a-r&&(e=a-r),i.get(0).scrollTo({top:0,left:e,behavior:o?"atuo":"smooth"});break}}setTimeout(()=>{this.resize(),e()},o?0:350)})}scrollIntoView(i,s){return new Promise((e,t)=>{null==i&&(i=this.active),null!=this.get(i)&&(query(this.box).find("#tabs_"+this.name+"_tab_"+w2utils.escapeId(i)).get(0).scrollIntoView({block:"start",inline:"center",behavior:s?"atuo":"smooth"}),setTimeout(()=>{this.resize(),e()},s?0:500))})}resize(){var e=Date.now();if(null!=this.box){var t,i,s,l,r=this.trigger("resize",{target:this.name});if(!0!==r.isCancelled)return(t=query(this.box)).find(".w2ui-scroll-left, .w2ui-scroll-right").hide(),i=t.find(".w2ui-scroll-wrapper").get(0),l=t.find(".w2ui-tabs-right"),(s=t.get(0).getBoundingClientRect().width)<(l=0<l.length?l[0].offsetLeft+l[0].clientWidth:0)&&(0<i.scrollLeft&&t.find(".w2ui-scroll-left").show(),s<l-i.scrollLeft)&&t.find(".w2ui-scroll-right").show(),r.finish(),Date.now()-e}}destroy(){var e=this.trigger("destroy",{target:this.name});!0!==e.isCancelled&&(0<query(this.box).find("#tabs_"+this.name+"_right").length&&query(this.box).removeAttr("name").removeClass("w2ui-reset w2ui-tabs").html(""),this.last.observeResize?.disconnect(),delete w2ui[this.name],e.finish())}click(e,t){var i=this.get(e);if(null==i||i.disabled||this.last.reordering)return!1;e=this.trigger("click",{target:e,tab:i,object:i,originalEvent:t});if(!0!==e.isCancelled){if(query(this.box).find("#tabs_"+this.name+"_tab_"+w2utils.escapeId(this.active)).removeClass("active"),this.active=i.id,query(this.box).find("#tabs_"+this.name+"_tab_"+w2utils.escapeId(this.active)).addClass("active"),"string"==typeof i.route){let t=""!==i.route?String("/"+i.route).replace(/\/{2,}/g,"/"):"";var s=w2utils.parseRoute(t);if(0<s.keys.length)for(let e=0;e<s.keys.length;e++)null!=this.routeData[s.key
|
||
|
<div class="w2ui-grid-search-single">
|
||
|
<span class="field">${e.label}</span>
|
||
|
<span class="operator">${w2utils.lang(l)}</span>
|
||
|
${Array.isArray(s.value)?""+r:`<span class="value">${a}</span>`}
|
||
|
<div class="buttons">
|
||
|
<button id="remove" class="w2ui-btn">${w2utils.lang("Remove This Field")}</button>
|
||
|
</div>
|
||
|
</div>`}).then(e=>{query(e.detail.overlay.box).find("#remove").on("click",()=>{this.searchData.splice(""+t,1),this.reload(),this.localSearch(),w2tooltip.hide(this.name+"-search-props")})})}searchSuggest(e,t,i){clearTimeout(this.last.kbd_timer),clearTimeout(this.last.overlay_timer),this.searchShowFields(!0),this.searchClose(),!0===t?w2tooltip.hide(this.name+"-search-suggest"):0<query(`#w2overlay-${this.name}-search-suggest`).length||(e?(t=query(this.box).find(`#grid_${this.name}_search_all`).get(0),e=[...this.defaultSearches??[],...0<this.defaultSearches?.length&&0<this.savedSearches?.length?["--"]:[],...this.savedSearches??[]],Array.isArray(e)&&0<e.length&&w2menu.show({name:this.name+"-search-suggest",anchor:t,align:"both",items:e,hideOn:["doc-click","sleect","remove"],render(e){let t=e.text;return t=e.isDefault?`<b>${t}</b>`:t}}).select(e=>{var t=this.trigger("searchSelect",{target:this.name,index:e.detail.index,item:e.detail.item});!0===t.isCancelled?e.preventDefault():(e.detail.overlay.hide(),this.last.logic=e.detail.item.logic||"AND",this.last.search="",this.last.label="[Multiple Fields]",this.searchData=w2utils.clone(e.detail.item.data),this.searchSelected=w2utils.clone(e.detail.item,{exclude:["icon","remove"]}),this.reload(),t.finish())}).remove(e=>{let i=e.detail.item,s=this.trigger("searchRemove",{target:this.name,index:e.detail.index,item:i});!0===s.isCancelled?e.preventDefault():(e.detail.overlay.hide(),this.confirm(w2utils.lang('Do you want to delete search "${item}"?',{item:i.text})).yes(e=>{var t=this.savedSearches.findIndex(e=>e.id==i.id);-1!==t&&this.savedSearches.splice(t,1),this.cacheSave("searches",this.savedSearches.map(e=>w2utils.clone(e,{exclude:["remove","icon"]}))),e.detail.self.close(),s.finish()}).no(e=>{e.detail.self.close()}))})):this.last.overlay_timer=setTimeout(()=>{this.searchSuggest(!0)},100))}searchSave(){let e="",t=(this.searchSelected&&(e=this.searchSelected.text),this.savedSearches.findIndex(e=>e.id==this.searchSelected?.id)),s=this.trigger("searchSave",{target:this.name,saveLocalStorage:!0});!0!==s.isCancelled&&this.message({width:350,height:150,body:`<div class="w2ui-grid-save-search">
|
||
|
<span>${w2utils.lang(-1!=t?"Update Search":"Save New Search")}</span>
|
||
|
<input class="search-name w2ui-input" placeholder="${w2utils.lang("Search name")}">
|
||
|
</div>`,buttons:`
|
||
|
<button id="grid-search-cancel" class="w2ui-btn">${w2utils.lang("Cancel")}</button>
|
||
|
<button id="grid-search-save" class="w2ui-btn w2ui-btn-blue" ${""==String(e).trim()?"disabled":""}>${w2utils.lang("Save")}</button>
|
||
|
`}).open(async i=>{query(i.detail.box).find("input, button").eq(0).val(e),await i.complete,query(i.detail.box).find("#grid-search-cancel").on("click",()=>{this.message()}),query(i.detail.box).find("#grid-search-save").on("click",()=>{var e=query(i.detail.box).find(".w2ui-message .search-name").val();this.searchSelected&&-1!=t?Object.assign(this.savedSearches[t],{id:e,text:e,logic:this.last.logic,data:w2utils.clone(this.searchData)}):this.savedSearches.push({id:e,text:e,icon:"w2ui-icon-search",remove:!0,logic:this.last.logic,data:this.searchData}),this.cacheSave("searches",this.savedSearches.map(e=>w2utils.clone(e,{exclude:["remove","icon"]}))),this.message(),(this.searchSelected?(this.searchSelected.text=e,query(this.box).find(`#grid_${this.name}_search_name .name-text`)):(this.searchSelected={text:e,logic:this.last.logic,data:w2utils.clone(this.searchData)},query(i.detail.box).find(`#grid_${this.name}_search_all`).val(" ").prop("readOnly",!0),query(i.detail.box).find(`#grid_${this.name}_search_name`).show().find(".name-text"))).html(e),s.finish({name:e})}),query(i.detail.box).find("input, button").off(".message").on("keydown.message",e=>{var t=String(query(i.detail.box).find(".w2ui-message-body input").val()).trim();13==e.keyCode&&""!=t&&query(i.detail.box).find("#grid-search-save").trigger("click"),27==e.keyCode&&this.message()}).eq(0).on("input.message",e=>{var t=query(i.detail.box).closest(".w2ui-message").find("#grid-search-save");""===String(query(i.detail.box).val()).trim()?t.prop("disabled",!0):t.prop("disabled",!1)}).get(0).focus()})}cache(e){if(w2utils.hasLocalStorage&&this.useLocalStorage)try{var t=JSON.parse(localStorage.w2ui||"{}");return t[this.stateId||this.name]??={},t[this.stateId||this.name][e]}catch(e){}return null}cacheSave(e,t){if(w2utils.hasLocalStorage&&this.useLocalStorage)try{var i=JSON.parse(localStorage.w2ui||"{}");return i[this.stateId||this.name]??={},i[this.stateId||this.name][e]=t,localStorage.w2ui=JSON.stringify(i),!0}catch(e){delete localStorage.w2ui}return!1}searchReset(e){var t=[];let i=!1;for(let e=0;e<this.searches.length;e++)this.searches[e].hidden&&null!=this.searches[e].value&&(t.push({field:this.searches[e].field,operator:this.searches[e].operator||"is",type:this.searches[e].type,value:this.searches[e].value||""}),i=!0);var s=this.trigger("search",{reset:!0,target:this.name,searchData:t});if(!0!==s.isCancelled){var l=query(this.box).find("#grid_"+this.name+"_search_all");if(this.searchData=s.detail.searchData,this.searchSelected=null,this.last.search="",this.last.logic=i?"AND":"OR",l.next().hide(),0<this.searches.length)if(this.multiSearch&&this.show.searchAll)this.last.field="all",this.last.label="All Fields",l.next().show();else{let e=0;for(;e<this.searches.length&&(this.searches[e].hidden||!1===this.searches[e].simple);)e++;e>=this.searches.length?(this.last.field="",this.last.label=""):(this.last.field=this.searches[e].field,this.last.label=this.searches[e].label)}this.last.multi=!1,this.last.fetch.offset=0,this.last.scrollTop=0,this.last.scrollLeft=0,this.last.selection.indexes=[],this.last.selection.columns={},this.searchClose();l=l.val("").get(0);l?._w2field&&l._w2field.reset(),e||this.reload(),s.finish()}}searchShowFields(e){if(!0===e)w2tooltip.hide(this.name+"-search-fields");else{var l=[];for(let s=-1;s<this.searches.length;s++){let e=this.searches[s];var r=e?e.field:null,r=this.getColumn(r);let t=!1,i=null;if(1==this.show.searchHiddenMsg&&-1!=s&&(null==r||!0===r.hidden&&!1!==r.hideable)&&(t=!0,i=w2utils.lang("This column "+(null==r?"does not exist":"is hidden"))),-1==s){if(!this.multiSearch||!this.show.searchAll)continue;e={field:"all",label:"All Fields"}}else{if(null!=r&&!1===r.hideable)continue;if(!0===e.hidden&&(i=w2utils.lang("This column is hidden"),!1===e.simple))continue}null==e.label&&null!=e.caption&&(console.log("NOTICE: grid search.caption property is deprecated, please use search.label. Search ->",e),e.label=e.caption),l.push({id:e.field,text:w2utils.lang(e.label),search:e,tooltip:i,disabled:t,checked:e.field==this.last.field})}w2menu.show({type
|
||
|
contenteditable autocorrect="off" autocomplete="off" spellcheck="false"
|
||
|
style="${m+s+h.style}"
|
||
|
field="${n.field}" recid="${d}" column="${u}" ${h.attr}>
|
||
|
</div>`+h.text)),(l=e.find("div.w2ui-input").get(0)).innerText="object"!=typeof t?t:"",null!=c?w2utils.setCursorPosition(l,l.innerText.length):w2utils.setCursorPosition(l,0,l.innerText.length)):(e.addClass("w2ui-editable").html(w2utils.stripSpaces(`<input id="grid_${this.name}_edit_${d}_${u}" class="w2ui-input"
|
||
|
autocorrect="off" autocomplete="off" spellcheck="false" type="text"
|
||
|
style="${m+s+h.style}"
|
||
|
field="${n.field}" recid="${d}" column="${u}" ${h.attr}>`+h.text)),l=e.find("input").get(0),"number"==h.type&&(t=w2utils.formatNumber(t)),"date"==h.type&&(t=w2utils.formatDate(w2utils.isDate(t,h.format,!0)||new Date,h.format)),l.value="object"!=typeof t?t:"",y=e=>{var t=this.last._edit?.escKey;let i=!1;var s=query(l).data("tooltipName");s&&null!=w2tooltip.get(s[0])?.selected&&(i=!0),!this.last.inEditMode||t||!r.includes(h.type)||e.detail.overlay.anchor?.id!=this.last._edit.input?.id&&"list"!=h.type||(this.editChange(),this.editDone(void 0,void 0,{keyCode:i?13:0}))},new w2field(w2utils.extend({},h,{el:l,selected:t,onSelect:y,onHide:y})),null==c&&l&&l.select()),Object.assign(this.last._edit,{input:l,edit:h}),query(l).off(".w2ui-editable").on("blur.w2ui-editable",e=>{var t,i;this.last.inEditMode&&(t=this.last._edit.edit.type,i=query(l).data("tooltipName"),r.includes(t)&&i||(this.editChange(l,o,u,e),this.editDone()))}).on("mousedown.w2ui-editable",e=>{e.stopPropagation()}).on("click.w2ui-editable",e=>{w.call(l,e)}).on("paste.w2ui-editable",e=>{e.preventDefault();e=e.clipboardData.getData("text/plain");document.execCommand("insertHTML",!1,e)}).on("keyup.w2ui-editable",e=>{w.call(l,e)}).on("keydown.w2ui-editable",i=>{switch(i.keyCode){case 8:"list"!=h.type||l._w2field||i.preventDefault();break;case 9:case 13:i.preventDefault();break;case 27:var e=query(l).data("tooltipName");e&&0<e.length&&(this.last._edit.escKey=!0,w2tooltip.hide(e[0]),i.preventDefault()),i.stopPropagation()}setTimeout(()=>{switch(i.keyCode){case 9:var e=i.shiftKey?f.prevCell(o,u,!0):f.nextCell(o,u,!0);null!=e&&(t=f.records[e.index].recid,this.editChange(l,o,u,i),this.editDone(o,u,i),"row"!=f.selectType?(f.selectNone(!0),f.select({recid:t,column:e.colIndex})):f.editField(t,e.colIndex,null,i),i.preventDefault)&&i.preventDefault();break;case 13:{let e=!1;var t=query(l).data("tooltipName");t&&null!=w2tooltip.get(t[0]).selected&&(e=!0),t&&e||(this.editChange(l,o,u,i),this.editDone(o,u,i));break}case 27:{this.last._edit.escKey=!1;let e=f.parseField(a,n.field);null!=a.w2ui?.changes?.[n.field]&&(e=a.w2ui.changes[n.field]),null!=l._prevValue&&(e=l._prevValue),"DIV"==l.tagName?l.innerText=null!=e?e:"":l.value=null!=e?e:"",this.editDone(o,u,i),setTimeout(()=>{f.select({recid:d,column:u})},1);break}}w(l)},1)}),l&&(l._prevValue=i),setTimeout(()=>{this.last.inEditMode&&l&&(l.focus(),clearTimeout(this.last.kbd_timer),(l.resize=w)(l))},50),g.finish({input:l})}}}}}editChange(e,t,i,s){e=e??this.last._edit.input,t=t??this.last._edit.index,i=i??this.last._edit.column,s=s??{};var l=(t<0?this.summary:this.records)[t=t<0?-t-1:t],r=this.columns[i];let a="DIV"==e?.tagName?e.innerText:e.value;var n=e._w2field,o=(n&&("list"==n.type&&(a=n.selected),0!==Object.keys(a).length&&null!=a||(a=""),w2utils.isPlainObject(a)||(a=n.clean(a))),"checkbox"==e.type&&(!1===l.w2ui?.editable&&(e.checked=!e.checked),a=e.checked),this.parseField(l,r.field)),h=l.w2ui?.changes&&l.w2ui.changes.hasOwnProperty(r.field)?l.w2ui.changes[r.field]:o;let d={target:this.name,input:e,recid:l.recid,index:t,column:i,originalEvent:s,value:{new:a,previous:h,original:o}},u=(null!=s.target?._prevValue&&(d.value.previous=s.target._prevValue),0);for(;u<20;){if(u++,"object"!=typeof(a=d.value.new)&&String(o)!=String(a)||"object"==typeof a&&a&&a.id!=o&&("object"!=typeof o||null==o||a.id!=o.id)){if(!0!==(d=this.trigger("change",d)).isCancelled){if(a!==d.detail.value.new)continue;(""!==d.detail.value.new&&null!=d.detail.value.new||""!==h&&null!=h)&&(l.w2ui=l.w2ui??{},l.w2ui.changes=l.w2ui.changes??{},l.w2ui.changes[r.field]=d.detail.value.new),d.finish()}}else if(!0!==(d=this.trigger("restore",d)).isCancelled){if(a!==d.detail.value.new)continue;l.w2ui?.changes&&(delete l.w2ui.changes[r.field],0===Object.keys(l.w2ui.changes).length)&&delete l.w2ui.changes,d.finish()}break}}editDone(t,i,s){if(t=t??this.last._edit.index,i=i??this.last._edit.column,s=s??{},this.advanceOnEdit&&13==s.keyCode){let e=s.shiftKey?this.prevRow(t,i,1):this.nextRow(t,i,1);null==e&&(e=t),setTimeout(()=>{"row"!=this.selectType?(this.sele
|
||
|
<td colspan="100" class="w2ui-expanded2">
|
||
|
<div id="grid_${this.name}_rec_${e}_expanded"></div>
|
||
|
</td>
|
||
|
<td class="w2ui-grid-data-last"></td>
|
||
|
</tr>`),query(this.box).find("#grid_"+this.name+"_frec_"+l).after(`<tr id="grid_${this.name}_frec_${e}_expanded_row" class="w2ui-expanded-row">
|
||
|
${this.show.lineNumbers?'<td class="w2ui-col-number"></td>':""}
|
||
|
<td class="w2ui-grid-data w2ui-expanded1" colspan="100">
|
||
|
<div id="grid_${this.name}_frec_${e}_expanded"></div>
|
||
|
</td>
|
||
|
</tr>`),!0===(a=this.trigger("expand",{target:this.name,recid:e,box_id:"grid_"+this.name+"_rec_"+e+"_expanded",fbox_id:"grid_"+this.name+"_frec_"+e+"_expanded"})).isCancelled)return query(this.box).find("#grid_"+this.name+"_rec_"+l+"_expanded_row").remove(),query(this.box).find("#grid_"+this.name+"_frec_"+l+"_expanded_row").remove(),!1;i=query(this.box).find("#grid_"+this.name+"_rec_"+e+"_expanded"),r=query(this.box).find("#grid_"+this.name+"_frec_"+e+"_expanded"),t=i.find(":scope div:first-child")[0]?.clientHeight??50;i[0].clientHeight<t&&i.css({height:t+"px"}),r[0].clientHeight<t&&r.css({height:t+"px"}),query(this.box).find("#grid_"+this.name+"_rec_"+l).attr("expanded","yes").addClass("w2ui-expanded"),query(this.box).find("#grid_"+this.name+"_frec_"+l).attr("expanded","yes").addClass("w2ui-expanded"),query(this.box).find("#grid_"+this.name+"_cell_"+this.get(e,!0)+"_expand div").html("-"),s.w2ui.expanded=!0,a.finish(),this.resizeRecords()}return!0}collapse(t,i){var s=this.get(t,!0);let l=this.records[s],e=(l.w2ui=l.w2ui||{},w2utils.escapeId(t));var r=l.w2ui.children;let a;if(Array.isArray(r)){if(!0!==l.w2ui.expanded)return!1;if(!0===(a=this.trigger("collapse",{target:this.name,recid:t})).isCancelled)return!1;!function i(s){s.w2ui.expanded=!1;for(let t=0;t<s.w2ui.children.length;t++){let e=s.w2ui.children[t];e.w2ui.expanded&&i(e)}}(l);var n=[];for(let e=l;null!=e;e=this.get(e.w2ui.parent_recid))n.push(e.w2ui.parent_recid);r=s+1;let e=r;for(;;){if(this.records.length<=e+1||null==this.records[e+1].w2ui||0<=n.indexOf(this.records[e+1].w2ui.parent_recid))break;e++}this.records.splice(r,e-r+1),-1!==this.total&&(this.total-=e-r+1),("object"!=typeof this.url?this.url:this.url.get)||0<this.searchData.length&&this.localSearch(!0),!0!==i&&this.refresh(),a.finish()}else{if(0===query(this.box).find("#grid_"+this.name+"_rec_"+e+"_expanded_row").length||!0!==this.show.expandColumn)return!1;if(!0===(a=this.trigger("collapse",{target:this.name,recid:t,box_id:"grid_"+this.name+"_rec_"+t+"_expanded",fbox_id:"grid_"+this.name+"_frec_"+t+"_expanded"})).isCancelled)return!1;query(this.box).find("#grid_"+this.name+"_rec_"+e).removeAttr("expanded").removeClass("w2ui-expanded"),query(this.box).find("#grid_"+this.name+"_frec_"+e).removeAttr("expanded").removeClass("w2ui-expanded"),query(this.box).find("#grid_"+this.name+"_cell_"+this.get(t,!0)+"_expand div").html("+"),query(this.box).find("#grid_"+this.name+"_rec_"+e+"_expanded").css("height","0px"),query(this.box).find("#grid_"+this.name+"_frec_"+e+"_expanded").css("height","0px"),setTimeout(()=>{query(this.box).find("#grid_"+this.name+"_rec_"+e+"_expanded_row").remove(),query(this.box).find("#grid_"+this.name+"_frec_"+e+"_expanded_row").remove(),l.w2ui.expanded=!1,a.finish(),this.resizeRecords()},300)}return!0}sort(i,e,s){var t=this.trigger("sort",{target:this.name,field:i,direction:e,multiField:s});if(!0!==t.isCancelled){if(null!=i){let t=this.sortData.length;for(let e=0;e<this.sortData.length;e++)if(this.sortData[e].field==i){t=e;break}null==e&&(e=null!=this.sortData[t]&&(null==this.sortData[t].direction&&(this.sortData[t].direction=""),"asc"===this.sortData[t].direction.toLowerCase())?"desc":"asc"),!1===this.multiSort&&(this.sortData=[],t=0),1!=s&&(this.sortData=[],t=0),null==this.sortData[t]&&(this.sortData[t]={}),this.sortData[t].field=i,this.sortData[t].direction=e}else this.sortData=[];("object"!=typeof this.url?this.url:this.url.get)?(t.finish({direction:e}),this.last.fetch.offset=0,this.reload()):(this.localSort(!1,!0),0<this.searchData.length&&this.localSearch(!0),this.last.scrollTop=0,query(this.box).find(`#grid_${this.name}_records`).prop("scrollTop",0),t.finish({direction:e}),this.refresh())}}copy(e,t){if(w2utils.isPlainObject(e))return e.finish(),e.text;var s=this.getSelection();if(0===s.length)return"";let l="";if("object"==typeof s[0]){let t=s[0].column,i=s[0].column;var r=[];for(let e=0;e<s.length;e++)s[e].column<t&&(t=s[e].column),s[e].column>i&&(i=s[e].column),-1==r.indexOf(s[e].index)&&r.push(s[e].index);r.sort((e,t)=>e-t);for(let e=0;e<r.length;e++){var a=
|
||
|
<span id="grid_${this.name}_search_logic" class="w2ui-grid-search-logic"></span>
|
||
|
<div class="grid-search-line"></div>`;this.searchData.forEach((i,e)=>{var t=this.getSearch(i.field,!0),s=this.searches[t];let l;if(l=Array.isArray(i.value)?`<span class="grid-search-count">${i.value.length}</span>`:": "+i.value,s&&"date"==s.type)if("between"==i.operator){let e=i.value[0],t=i.value[1];Number(e)===e&&(e=w2utils.formatDate(e)),Number(t)===t&&(t=w2utils.formatDate(t)),l=`: ${e} - `+t}else{let e=i.value,t=(Number(e)==e&&(e=w2utils.formatDate(e)),i.operator);"more:"==(t="less"==(t="more"==t?"since":t)?"before":t).substr(0,5)&&(t="since"),l=`: ${t} `+e}r+=`<span class="w2ui-action" data-click="searchFieldTooltip|${t}|${e}|this">
|
||
|
${s?s.label:""}
|
||
|
${l}
|
||
|
<span class="icon-chevron-down"></span>
|
||
|
</span>`}),r+=`
|
||
|
${this.show.searchSave?`<div class="grid-search-line"></div>
|
||
|
<button class="w2ui-btn grid-search-btn" data-click="searchSave">${w2utils.lang("Save")}</button>
|
||
|
`:""}
|
||
|
<button class="w2ui-btn grid-search-btn btn-remove"
|
||
|
data-click="searchReset">X</button>
|
||
|
`,query(this.box).find(`#grid_${this.name}_searches`).html(r),query(this.box).find(`#grid_${this.name}_search_logic`).html(w2utils.lang("AND"==this.last.logic?"All":"Any"))}else query(this.box).find(".w2ui-grid-toolbar").css("height",this.last.toolbar_height+"px").find(".w2ui-grid-searches").remove();this.searchSelected?(query(this.box).find(`#grid_${this.name}_search_all`).val(" ").prop("readOnly",!0),query(this.box).find(`#grid_${this.name}_search_name`).show().find(".name-text").html(this.searchSelected.text)):(query(this.box).find(`#grid_${this.name}_search_all`).prop("readOnly",!1),query(this.box).find(`#grid_${this.name}_search_name`).hide().find(".name-text").html("")),w2utils.bindEvents(query(this.box).find(`#grid_${this.name}_searches .w2ui-action, #grid_${this.name}_searches button`),this)}refreshBody(){this.scroll();var e=this.getRecordsHTML(),t=this.getColumnsHTML(),e='<div id="grid_'+this.name+'_frecords" class="w2ui-grid-frecords" style="margin-bottom: '+(w2utils.scrollBarSize()-1)+'px;">'+e[0]+'</div><div id="grid_'+this.name+'_records" class="w2ui-grid-records">'+e[1]+'</div><div id="grid_'+this.name+'_scroll1" class="w2ui-grid-scroll1" style="height: '+w2utils.scrollBarSize()+'px"></div><div id="grid_'+this.name+'_fcolumns" class="w2ui-grid-fcolumns"> <table><tbody>'+t[0]+'</tbody></table></div><div id="grid_'+this.name+'_columns" class="w2ui-grid-columns"> <table><tbody>'+t[1]+"</tbody></table></div>"+`<div class="w2ui-intersection-marker" style="display: none; height: ${this.recordHeight-5}px">
|
||
|
<div class="top-marker"></div>
|
||
|
<div class="bottom-marker"></div>
|
||
|
</div>`;let l=query(this.box).find(`#grid_${this.name}_body`,this.box).html(e);t=query(this.box).find(`#grid_${this.name}_records`,this.box),e=query(this.box).find(`#grid_${this.name}_frecords`,this.box);"row"==this.selectType&&(t.on("mouseover mouseout",{delegate:"tr"},e=>{var t=query(e.delegate).attr("recid");query(this.box).find(`#grid_${this.name}_frec_`+w2utils.escapeId(t)).toggleClass("w2ui-record-hover","mouseover"==e.type)}),e.on("mouseover mouseout",{delegate:"tr"},e=>{var t=query(e.delegate).attr("recid");query(this.box).find(`#grid_${this.name}_rec_`+w2utils.escapeId(t)).toggleClass("w2ui-record-hover","mouseover"==e.type)})),w2utils.isIOS?t.append(e).on("click",{delegate:"tr"},e=>{var t=query(e.delegate).attr("recid");this.dblClick(t,e)}):t.add(e).on("click",{delegate:"tr"},e=>{var t=query(e.delegate).attr("recid");"-none-"!=t&&this.click(t,e)}).on("contextmenu",{delegate:"tr"},e=>{var t=query(e.delegate).attr("recid"),i=query(e.target).closest("td"),i=parseInt(i.attr("col")??-1);this.showContextMenu(t,i,e)}).on("mouseover",{delegate:"tr"},e=>{this.last.rec_out=!1;let t=query(e.delegate).attr("index"),i=query(e.delegate).attr("recid");t!==this.last.rec_over&&(this.last.rec_over=t,setTimeout(()=>{delete this.last.rec_out,this.trigger("mouseEnter",{target:this.name,originalEvent:e,index:t,recid:i}).finish()}))}).on("mouseout",{delegate:"tr"},t=>{let i=query(t.delegate).attr("index"),s=query(t.delegate).attr("recid");this.last.rec_out=!0,setTimeout(()=>{let e=()=>{this.trigger("mouseLeave",{target:this.name,originalEvent:t,index:i,recid:s}).finish()};i!==this.last.rec_over&&e(),setTimeout(()=>{this.last.rec_out&&(delete this.last.rec_out,delete this.last.rec_over,e())})})}),l.data("scroll",{lastDelta:0,lastTime:0}).find(".w2ui-grid-frecords").on("mousewheel DOMMouseScroll ",e=>{e.preventDefault();var t=l.data("scroll"),i=l.find(".w2ui-grid-records"),e=null!=typeof e.wheelDelta?-e.wheelDelta:e.detail||e.deltaY,s=i.prop("scrollTop");t.lastDelta+=e,e=Math.round(t.lastDelta),l.data("scroll",t),i.get(0).scroll({top:s+e,behavior:"smooth"})}),t.off(".body-global").on("scroll.body-global",{delegate:".w2ui-grid-records"},e=>{this.scroll(e)}),query(this.box).find(".w2ui-grid-body").off(".body-global").on("click.body-global dblclick.body-global contextmenu.body-global",{delegate:"td.w2ui-head"},e=>{var t=query(e.delegate).attr("col"),i=this.columns[t]??{field:t};switch(e.type){case"click":this.columnClick(i.field,e);break;case"dblclick":this.columnDblClick(i.field,e);break;case"contextmenu":this.show.columnMenu&&(w2menu.show({type:"check",anchor:document.body,originalEvent:e,items:this.initColumnOnOff()}).then(()=>{query("#w2overlay-context-menu .w2ui-grid-skip").off(".w2ui-grid").on("click.w2ui-grid",e=>{e.stopPropagation()}).on("keypress",e=>{13==e.keyCode&&(this.skip(e.target.value),this.toolbar.click("w2ui-column-on-off"))})}).select(e=>{var t=e.detail.item.id;["w2ui-stateSave","w2ui-stateReset"].includes(t)?this[t.substring(5)]():"w2ui-skip"!=t&&this.columnOnOff(e,e.detail.item.id),clearTimeout(this.last.kbd_timer)}),clearTimeout(this.last.kbd_timer)),e.preventDefault()}}).on("mouseover.body-global",{delegate:".w2ui-col-header"},e=>{let t=query(e.delegate).parent().attr("col");this.columnTooltipShow(t,e),query(e.delegate).off(".tooltip").on("mouseleave.tooltip",()=>{this.columnTooltipHide(t,e)})}).on("click.body-global",{delegate:"input.w2ui-select-all"},e=>{e.delegate.checked?this.selectAll():this.selectNone(),e.stopPropagation(),clearTimeout(this.last.kbd_timer)}).on("click.body-global",{delegate:".w2ui-show-children, .w2ui-col-expand"},e=>{e.stopPropagation(),this.toggle(query(e.target).parents("tr").attr("recid"))}).on("click.body-global mouseover.body-global",{delegate:".w2ui-info"},e=>{var t=query(e.delegate).closest("td"),i=t.parent(),s=this.columns[t.attr("col")],l=i.parents(".w2ui-grid-body").hasClass("w2ui-grid-summary");["mouseenter","mouseover"].includes(s.info?.showOn?.toLowerCase())&&"mouseover"==e.type?this.showBubble(i.attr("index"),t.attr("col"),l).then(()=>{query(e.delegate).off(".toolti
|
||
|
<div class="w2ui-grid-search-input">
|
||
|
${this.buttons.search.html}
|
||
|
<div id="grid_${this.name}_search_name" class="w2ui-grid-search-name">
|
||
|
<span class="name-icon w2ui-icon-search"></span>
|
||
|
<span class="name-text"></span>
|
||
|
<span class="name-cross w2ui-action" data-click="searchReset">x</span>
|
||
|
</div>
|
||
|
<input type="text" id="grid_${this.name}_search_all" class="w2ui-search-all" tabindex="-1"
|
||
|
autocapitalize="off" autocomplete="off" autocorrect="off" spellcheck="false"
|
||
|
placeholder="${w2utils.lang(this.last.label,!0)}" value="${this.last.search}"
|
||
|
data-focus="searchSuggest" data-click="stop"
|
||
|
>
|
||
|
<div class="w2ui-search-drop w2ui-action" data-click="searchOpen"
|
||
|
style="${this.multiSearch?"":"display: none"}">
|
||
|
<span class="w2ui-icon-drop"></span>
|
||
|
</div>
|
||
|
</div>`,this.toolbar.items.push({id:"w2ui-search",type:"html",html:t,onRefresh:async e=>{await e.complete;var e=query(this.box).find(`#grid_${this.name}_search_all`),t=(w2utils.bindEvents(query(this.box).find(`#grid_${this.name}_search_all, .w2ui-action`),this),w2utils.debounce(e=>{var t=e.target.value;this.liveSearch&&this.last.liveText!=t&&(this.last.liveText=t,this.search(this.last.field,t)),40==e.keyCode&&this.searchSuggest(!0)},250));e.on("change",e=>{this.liveSearch||(this.search(this.last.field,e.target.value),this.searchSuggest(!0,!0,this))}).on("blur",()=>{this.last.liveText=""}).on("keyup",t)}})),Array.isArray(e)&&(t=e.map(e=>e.id),this.show.toolbarAdd&&!t.includes(this.buttons.add.id)&&this.toolbar.items.push(w2utils.extend({},this.buttons.add)),this.show.toolbarEdit&&!t.includes(this.buttons.edit.id)&&this.toolbar.items.push(w2utils.extend({},this.buttons.edit)),this.show.toolbarDelete&&!t.includes(this.buttons.delete.id)&&this.toolbar.items.push(w2utils.extend({},this.buttons.delete)),this.show.toolbarSave&&!t.includes(this.buttons.save.id)&&((this.show.toolbarAdd||this.show.toolbarDelete||this.show.toolbarEdit)&&this.toolbar.items.push({type:"break",id:"w2ui-break2"}),this.toolbar.items.push(w2utils.extend({},this.buttons.save))),e=e.map(e=>this.buttons[e.name]?w2utils.extend({},this.buttons[e.name],e):e)),this.toolbar.items.push(...e),this.toolbar.on("click",e=>{var i=this.trigger("toolbar",{target:e.target,originalEvent:e});if(!0!==i.isCancelled){let t;switch(e.detail.item.id){case"w2ui-reload":if(!0===(t=this.trigger("reload",{target:this.name})).isCancelled)return!1;this.reload(),t.finish();break;case"w2ui-column-on-off":e.detail.subItem?(s=e.detail.subItem.id,["w2ui-stateSave","w2ui-stateReset"].includes(s)?this[s.substring(5)]():"w2ui-skip"!=s&&this.columnOnOff(e,e.detail.subItem.id)):(this.initColumnOnOff(),setTimeout(()=>{query(`#w2overlay-${this.name}_toolbar-drop .w2ui-grid-skip`).off(".w2ui-grid").on("click.w2ui-grid",e=>{e.stopPropagation()}).on("keypress",e=>{13==e.keyCode&&(this.skip(e.target.value),this.toolbar.click("w2ui-column-on-off"))})},100));break;case"w2ui-add":if(!0===(t=this.trigger("add",{target:this.name,recid:null})).isCancelled)return!1;t.finish();break;case"w2ui-edit":{var s=this.getSelection();let e=null;if(1==s.length&&(e=s[0]),!0===(t=this.trigger("edit",{target:this.name,recid:e})).isCancelled)return!1;t.finish();break}case"w2ui-delete":this.delete();break;case"w2ui-save":this.save()}i.finish()}}),this.toolbar.on("refresh",e=>{if("w2ui-search"==e.target){let e=this.searchData;setTimeout(()=>{this.searchInitInput(this.last.field,1==e.length?e[0].value:null)},1)}})}}initResize(){let r=this;query(this.box).find(".w2ui-resizer").off(".grid-col-resize").on("click.grid-col-resize",function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0,e.preventDefault&&e.preventDefault()}).on("mousedown.grid-col-resize",function(e){e=e||window.event,r.last.colResizing=!0,r.last.tmp={x:e.screenX,y:e.screenY,gx:e.screenX,gy:e.screenY,col:parseInt(query(this).attr("name"))},r.last.tmp.tds=query(r.box).find("#grid_"+r.name+'_body table tr:first-child td[col="'+r.last.tmp.col+'"]'),e.stopPropagation?e.stopPropagation():e.cancelBubble=!0,e.preventDefault&&e.preventDefault();for(let e=0;e<r.columns.length;e++)r.columns[e].hidden||(null==r.columns[e].sizeOriginal&&(r.columns[e].sizeOriginal=r.columns[e].size),r.columns[e].size=r.columns[e].sizeCalculated);let i={phase:"before",type:"columnResize",target:r.name,column:r.last.tmp.col,field:r.columns[r.last.tmp.col].field};i=r.trigger(w2utils.extend(i,{resizeBy:0,originalEvent:e}));let s;query(document).off(".grid-col-resize").on("mousemove.grid-col-resize",function(e){var t;1==r.last.colResizing&&(e=e||window.event,!0===(i=r.trigger(w2utils.extend(i,{resizeBy:e.screenX-r.last.tmp.gx,originalEvent:e}))).isCancelled?i.isCancelled=!1:(r.last.tmp.x=e.screenX-r.last.tmp.x,r.last.tmp.y=e.screenY-r.last.tmp.y,t=parseInt(r.columns[r.last.tmp.col].size)+r.last.tmp.x+"px",r.columns[r.last.tmp.col].size=t,s&&clearTimeout(s),s=setTimeout(
|
||
|
<div class="search-title">
|
||
|
${w2utils.lang("Advanced Search")}
|
||
|
<span class="search-logic" style="${this.show.searchLogic?"":"display: none"}">
|
||
|
<select id="grid_${this.name}_logic" class="w2ui-input">
|
||
|
<option value="AND" ${"AND"==this.last.logic?"selected":""}>${w2utils.lang("All")}</option>
|
||
|
<option value="OR" ${"OR"==this.last.logic?"selected":""}>${w2utils.lang("Any")}</option>
|
||
|
</select>
|
||
|
</span>
|
||
|
</div>
|
||
|
<table cellspacing="0"><tbody>
|
||
|
`;for(let t=0;t<this.searches.length;t++){var s=this.searches[t];if(s.type=String(s.type).toLowerCase(),!s.hidden){null==s.attr&&(s.attr=""),null==s.text&&(s.text=""),null==s.style&&(s.style=""),null==s.type&&(s.type="text"),null==s.label&&null!=s.caption&&(console.log("NOTICE: grid search.caption property is deprecated, please use search.label. Search ->",s),s.label=s.caption);var l=`<select id="grid_${this.name}_operator_${t}" class="w2ui-input" data-change="initOperator|${t}">
|
||
|
${this.getOperators(s.type,s.operators)}
|
||
|
</select>`;i+=`<tr>
|
||
|
<td class="caption">${w2utils.lang(s.label)||""}</td>
|
||
|
<td class="operator">${l}</td>
|
||
|
<td class="value">`;let e;switch(s.type){case"text":case"alphanumeric":case"hex":case"color":case"list":case"combo":case"enum":e="width: 250px;",-1!=["hex","color"].indexOf(s.type)&&(e="width: 90px;"),i+=`<input rel="search" type="text" id="grid_${this.name}_field_${t}" name="${s.field}"
|
||
|
class="w2ui-input" style="${e+s.style}" ${s.attr}>`;break;case"int":case"float":case"money":case"currency":case"percent":case"date":case"time":case"datetime":e="width: 90px;","datetime"==s.type&&(e="width: 140px;"),i+=`<input id="grid_${this.name}_field_${t}" name="${s.field}" ${s.attr} rel="search" type="text"
|
||
|
class="w2ui-input" style="${e+s.style}">
|
||
|
<span id="grid_${this.name}_range_${t}" style="display: none"> -  
|
||
|
<input rel="search" type="text" class="w2ui-input" style="${e+s.style}" id="grid_${this.name}_field2_${t}" name="${s.field}" ${s.attr}>
|
||
|
</span>`;break;case"select":i+=`<select rel="search" class="w2ui-input" style="${s.style}" id="grid_${this.name}_field_${t}"
|
||
|
name="${s.field}" ${s.attr}></select>`}i+=s.text+" </td></tr>"}}return i+=`<tr>
|
||
|
<td colspan="2" class="actions">
|
||
|
<button type="button" class="w2ui-btn close-btn" data-click="searchClose">${w2utils.lang("Close")}</button>
|
||
|
</td>
|
||
|
<td class="actions">
|
||
|
<button type="button" class="w2ui-btn" data-click="searchReset">${w2utils.lang("Reset")}</button>
|
||
|
<button type="button" class="w2ui-btn w2ui-btn-blue" data-click="search">${w2utils.lang("Search")}</button>
|
||
|
</td>
|
||
|
</tr></tbody></table>`}getOperators(e,t){let i=this.operators[this.operatorsMap[e]]||[],s=(null!=t&&Array.isArray(t)&&(i=t),"");return i.forEach(e=>{let t=e,i=e;Array.isArray(e)?(t=e[1],i=e[0]):w2utils.isPlainObject(e)&&(t=e.text,i=e.oper),null==t&&(t=e),s+=`<option name="11" value="${i}">${w2utils.lang(t)}</option>
|
||
|
`}),s}initOperator(e){let i;var t=this.searches[e],s=this.getSearchData(t.field),l=query(`#w2overlay-${this.name}-search-overlay`),r=l.find(`#grid_${this.name}_range_`+e);let a=l.find(`#grid_${this.name}_field_`+e),n=l.find(`#grid_${this.name}_field2_`+e);var o=l.find(`#grid_${this.name}_operator_`+e).val();switch(a.show(),r.hide(),o){case"between":r.show();break;case"null":case"not null":a.hide(),a.val(o),a.trigger("change")}switch(t.type){case"text":case"alphanumeric":var h=a[0]._w2field;h&&h.reset();break;case"int":case"float":case"hex":case"color":case"money":case"currency":case"percent":case"date":case"time":case"datetime":a[0]._w2field||(new w2field(t.type,{el:a[0],...t.options}),new w2field(t.type,{el:n[0],...t.options}),setTimeout(()=>{a.trigger("keydown"),n.trigger("keydown")},1));break;case"list":case"combo":case"enum":i=t.options,"list"==t.type&&(i.selected={}),"enum"==t.type&&(i.selected=[]),s&&(i.selected=s.value),a[0]._w2field||(h=new w2field(t.type,{el:a[0],...i}),s&&null!=s.text&&h.set({id:s.value,text:s.text}));break;case"select":i='<option value="">--</option>';for(let e=0;e<t.options.items.length;e++){var d=t.options.items[e];if(w2utils.isPlainObject(t.options.items[e])){let e=d.id,t=d.text;null==e&&null!=d.value&&(e=d.value),null==t&&null!=d.text&&(t=d.text),null==e&&(e=""),i+='<option value="'+e+'">'+t+"</option>"}else i+='<option value="'+d+'">'+d+"</option>"}a.html(i)}}initSearches(){var s=query(`#w2overlay-${this.name}-search-overlay`);for(let t=0;t<this.searches.length;t++){var l=this.searches[t],r=this.getSearchData(l.field);l.type=String(l.type).toLowerCase(),"object"!=typeof l.options&&(l.options={});let e=l.operator,i=[...this.operators[this.operatorsMap[l.type]]];l.operators&&(i=l.operators),w2utils.isPlainObject(e)&&(e=e.oper),i.forEach((e,t)=>{w2utils.isPlainObject(e)&&(i[t]=e.oper)}),r&&r.operator&&(e=r.operator);var l=this.defaultOperator[this.operatorsMap[l.type]],l=(-1==i.indexOf(e)&&(e=l),s.find(`#grid_${this.name}_operator_`+t).val(e),this.initOperator(t),s.find(`#grid_${this.name}_field_`+t)),a=s.find(`#grid_${this.name}_field2_`+t);null!=r&&(Array.isArray(r.value)?["in","not in"].includes(r.operator)?l[0]._w2field.set(r.value):(l.val(r.value[0]).trigger("change"),a.val(r.value[1]).trigger("change")):null!=r.value&&l.val(r.value).trigger("change"))}s.find(".w2ui-grid-search-advanced *[rel=search]").on("keypress",e=>{13==e.keyCode&&(this.search(),w2tooltip.hide(this.name+"-search-overlay"))})}getColumnsHTML(){let h=this,e="",t="";var i,s,l;return this.show.columnHeaders&&(t=0<this.columnGroups.length?(l=r(!0),i=function(){let t="<tr>",s="<tr>",l="",e=h.columnGroups.length-1;null==h.columnGroups[e].text&&null!=h.columnGroups[e].caption&&(console.log("NOTICE: grid columnGroup.caption property is deprecated, please use columnGroup.text. Group -> ",h.columnGroups[e]),h.columnGroups[e].text=h.columnGroups[e].caption);""!=h.columnGroups[h.columnGroups.length-1].text&&h.columnGroups.push({text:""});h.show.lineNumbers&&(t+='<td class="w2ui-head w2ui-col-number" col="line-number"> <div> </div></td>');h.show.selectColumn&&(t+='<td class="w2ui-head w2ui-col-select" col="select"> <div style="height: 25px"> </div></td>');h.show.expandColumn&&(t+='<td class="w2ui-head w2ui-col-expand" col="expand"> <div style="height: 25px"> </div></td>');let r=0;s+=`<td id="grid_${h.name}_column_start" class="w2ui-head" col="start" style="border-right: 0"></td>`,h.reorderRows&&(s+='<td class="w2ui-head w2ui-col-order" col="order"> <div style="height: 25px"> </div></td>');for(let e=0;e<h.columnGroups.length;e++){var a=h.columnGroups[e],n=h.columns[r]||{};null!=a.colspan&&(a.span=a.colspan),null!=a.span&&a.span==parseInt(a.span)||(a.span=1),null==n.text&&null!=n.caption&&(console.log("NOTICE: grid column.caption property is deprecated, please use column.text. Column ->",n),n.text=n.caption);let i=0;for(let e=r;e<r+a.span;e++)h.columns[e]&&!h.columns[e].hidden&&i++;if(!((i=e==h.columnGroups.length-1?100:i)<=0)){if(!0===a.main){let t="";for(let e=0;e<h.sortData.length;e++)h.sortData[e
|
||
|
data-changeInd="${l?-(i+1):i}" data-colInd="${s}" ${v?'checked="checked"':""}>`,y=""),null==(v=`<div style="${p}" ${function(e){let t;r.show.recordTitles&&(null!=a.title?("function"==typeof a.title&&(t=a.title.call(r,n,{self:this,index:i,colIndex:s,summary:!!l})),"string"==typeof a.title&&(t=a.title)):t=w2utils.stripTags(String(e).replace(/"/g,"''")));return null!=t?'title="'+String(t)+'"':""}(v)} ${u}>${y}${String(v)}</div>`)&&(v=""),"string"==typeof a.render&&(b=a.render.toLowerCase().split(":"),-1!=["number","int","float","money","currency","percent","size"].indexOf(b[0]))&&(o+="text-align: right;"),n?.w2ui&&("object"==typeof n.w2ui.style&&("string"==typeof n.w2ui.style[s]&&(o+=n.w2ui.style[s]+";"),"string"==typeof n.w2ui.style[a.field])&&(o+=n.w2ui.style[a.field]+";"),"object"==typeof n.w2ui.class)&&("string"==typeof n.w2ui.class[s]&&(h+=n.w2ui.class[s]+" "),"string"==typeof n.w2ui.class[a.field])&&(h+=n.w2ui.class[a.field]+" "),!1);g&&m.columns[i]?.includes(s)&&(x=!0);let _;return a.clipboardCopy&&(_='<span class="w2ui-clipboard-copy w2ui-icon-paste"></span>'),v='<td class="w2ui-grid-data'+(x?" w2ui-selected":"")+" "+h+(f?" w2ui-changed":"")+'" id="grid_'+this.name+"_data_"+i+"_"+s+'" col="'+s+'" style="'+o+(null!=a.style?a.style:"")+'" '+(null!=a.attr?a.attr:"")+d+(1<e?'colspan="'+e+'"':"")+">"+v+(_&&w2utils.stripTags(v)?_:"")+"</td>",v=-1===i&&!0===l?'<td class="w2ui-grid-data" col="'+s+'" style="height: 0px; '+o+'" '+(1<e?'colspan="'+e+'"':"")+"></td>":v}clipboardCopy(e,t,i){var s=(i?this.summary:this.records)[e],l=this.columns[t];let r=l?this.parseField(s,l.field):"";"function"==typeof l.clipboardCopy&&(r=l.clipboardCopy(s,{self:this,index:e,colIndex:t,summary:!!i})),query(this.box).find("#grid_"+this.name+"_focus").text(r).get(0).select(),document.execCommand("copy")}showBubble(s,l,r){var a=this.columns[l].info;if(a){let i="";var n=this.records[s],e=query(this.box).find(`${r?".w2ui-grid-summary":""} #grid_${this.name}_data_${s}_${l} .w2ui-info`);if(this.last.bubbleEl&&w2tooltip.hide(this.name+"-bubble"),this.last.bubbleEl=e,null==a.fields){a.fields=[];for(let e=0;e<this.columns.length;e++){var o=this.columns[e];a.fields.push(o.field+("string"==typeof o.render?":"+o.render:""))}}let t=a.fields;if("function"==typeof t&&(t=t(n,{self:this,index:s,colIndex:l,summary:!!r})),"function"==typeof a.render)i=a.render(n,{self:this,index:s,colIndex:l,summary:!!r});else if(Array.isArray(t)){i='<table cellpadding="0" cellspacing="0">';for(let e=0;e<t.length;e++){var h=String(t[e]).split(":");if(""==h[0]||"-"==h[0]||"--"==h[0]||"---"==h[0])i+='<tr><td colspan=2><div style="border-top: '+(""==h[0]?"0":"1")+'px solid #C1BEBE; margin: 6px 0px;"></div></td></tr>';else{let e=this.getColumn(h[0]),t=(e=null==e?{field:h[0],caption:h[0]}:e)?this.parseField(n,e.field):"";1<h.length&&(w2utils.formatters[h[1]]?t=w2utils.formatters[h[1]](t,h[2]||null,n):console.log('ERROR: w2utils.formatters["'+h[1]+'"] does not exists.')),(!0===a.showEmpty||null!=t&&""!=t)&&(null!=a.maxLength&&"string"==typeof t&&t.length>a.maxLength&&(t=t.substr(0,a.maxLength)+"..."),i+="<tr><td>"+e.text+"</td><td>"+((0===t?"0":t)||"")+"</td></tr>")}}i+="</table>"}else if(w2utils.isPlainObject(t)){for(var d in i='<table cellpadding="0" cellspacing="0">',t){var u=t[d];if(""==u||"-"==u||"--"==u||"---"==u)i+='<tr><td colspan=2><div style="border-top: '+(""==u?"0":"1")+'px solid #C1BEBE; margin: 6px 0px;"></div></td></tr>';else{var c=String(u).split(":");let e=this.getColumn(c[0]),t=(e=null==e?{field:c[0],caption:c[0]}:e)?this.parseField(n,e.field):"";1<c.length&&(w2utils.formatters[c[1]]?t=w2utils.formatters[c[1]](t,c[2]||null,n):console.log('ERROR: w2utils.formatters["'+c[1]+'"] does not exists.')),"function"==typeof u&&(t=u(n,{self:this,index:s,colIndex:l,summary:!!r})),(!0===a.showEmpty||null!=t&&""!=t)&&(null!=a.maxLength&&"string"==typeof t&&t.length>a.maxLength&&(t=t.substr(0,a.maxLength)+"..."),i+="<tr><td>"+d+"</td><td>"+((0===t?"0":t)||"")+"</td></tr>")}}i+="</table>"}return w2tooltip.show(w2utils.extend({name:this.name+"-bubble",
|
||
|
<label class="w2ui-box-label">
|
||
|
<input id="${h.field}" name="${h.field}" class="w2ui-input" type="checkbox" ${h.html.attr+o}>
|
||
|
<span>${h.html.label}</span>
|
||
|
</label>`;break;case"check":case"checks":{null==h.options.items&&null!=h.html.items&&(h.options.items=h.html.items);let t=h.options.items;i="",0<(t=Array.isArray(t)?t:[]).length&&(t=w2utils.normMenu.call(this,t,h));for(let e=0;e<t.length;e++)i+=`
|
||
|
<label class="w2ui-box-label">
|
||
|
<input id="${h.field+e}" name="${h.field}" class="w2ui-input" type="checkbox"
|
||
|
${h.html.attr+o} data-value="${t[e].id}" data-index="${e}">
|
||
|
<span> ${t[e].text}</span>
|
||
|
</label>
|
||
|
<br>`;break}case"radio":{i="",null==h.options.items&&null!=h.html.items&&(h.options.items=h.html.items);let t=h.options.items;0<(t=Array.isArray(t)?t:[]).length&&(t=w2utils.normMenu.call(this,t,h));for(let e=0;e<t.length;e++)i+=`
|
||
|
<label class="w2ui-box-label">
|
||
|
<input id="${h.field+e}" name="${h.field}" class="w2ui-input" type="radio"
|
||
|
${h.html.attr+(0===e?o:"")}
|
||
|
data-value="${t[e].id}" data-index="${e}">
|
||
|
<span> ${t[e].text}</span>
|
||
|
</label>
|
||
|
<br>`;break}case"select":{i=`<select id="${h.field}" name="${h.field}" class="w2ui-input" ${h.html.attr+o}>`,null==h.options.items&&null!=h.html.items&&(h.options.items=h.html.items);let t=h.options.items;0<(t=Array.isArray(t)?t:[]).length&&(t=w2utils.normMenu.call(this,t,h));for(let e=0;e<t.length;e++)i+=`<option value="${t[e].id}">${t[e].text}</option>`;i+="</select>";break}case"textarea":i=`<textarea id="${h.field}" name="${h.field}" class="w2ui-input" ${h.html.attr+o}></textarea>`;break;case"toggle":i=`<input id="${h.field}" name="${h.field}" class="w2ui-input w2ui-toggle" type="checkbox" ${h.html.attr+o}>
|
||
|
<div><div></div></div>`;break;case"map":case"array":h.html.key=h.html.key||{},h.html.value=h.html.value||{},h.html.tabindex_str=o,i='<span style="float: right">'+(h.html.text||"")+'</span><input id="'+h.field+'" name="'+h.field+'" type="hidden" '+h.html.attr+o+'><div class="w2ui-map-container"></div>';break;case"div":case"custom":i='<div id="'+h.field+'" name="'+h.field+'" '+h.html.attr+o+' class="w2ui-input">'+(h&&h.html&&h.html.html?h.html.html:"")+"</div>";break;case"html":case"empty":i=h&&h.html?(h.html.html||"")+(h.html.text||""):""}if(""!==t&&(l!=h.html.page||r!=h.html.column||h.html.group&&t!=h.html.group)&&(s[l][r]+="\n </div>\n </div>",t=""),h.html.group&&t!=h.html.group){let e="";h.html.groupCollapsible&&(e='<span class="w2ui-icon-collapse" style="width: 15px; display: inline-block; position: relative; top: -2px;"></span>'),a+='\n <div class="w2ui-group">\n <div class="w2ui-group-title w2ui-eaction" style="'+(h.html.groupTitleStyle||"")+"; "+(""!=e?"cursor: pointer; user-select: none":"")+'"'+(""!=e?'data-group="'+w2utils.base64encode(h.html.group)+'"':"")+(""!=e?'data-click="toggleGroup|'+h.html.group+'"':"")+">"+e+w2utils.lang(h.html.group)+'</div>\n <div class="w2ui-group-fields" style="'+(h.html.groupStyle||"")+'">',t=h.html.group}if(null==h.html.anchor){let e=null!=h.html.span?"w2ui-span"+h.html.span:"",t="<label"+("none"==(e=-1==h.html.span?"w2ui-span-none":e)?' style="display: none"':"")+">"+w2utils.lang("checkbox"!=h.type?h.html.label:h.html.text)+"</label>";h.html.label||(t=""),a+='\n <div class="w2ui-field '+e+'" style="'+(h.hidden?"display: none;":"")+h.html.style+'">\n '+t+("empty"===h.type?i:"\n <div>"+i+("array"!=h.type&&"map"!=h.type?w2utils.lang("checkbox"!=h.type?h.html.text:""):"")+"</div>")+"\n </div>"}else s[h.html.page].anchors=s[h.html.page].anchors||{},s[h.html.page].anchors[h.html.anchor]='<div class="w2ui-field w2ui-field-inline" style="'+(h.hidden?"display: none;":"")+h.html.style+'">'+("empty"===h.type?i:"<div>"+w2utils.lang("checkbox"!=h.type?h.html.label:h.html.text,!0)+i+w2utils.lang("checkbox"!=h.type?h.html.text:"")+"</div>")+"</div>";null==s[h.html.page]&&(s[h.html.page]={}),null==s[h.html.page][h.html.column]&&(s[h.html.page][h.html.column]=""),s[h.html.page][h.html.column]+=a,l=h.html.page,r=h.html.column}if(""!==t&&(s[l][r]+="\n </div>\n </div>"),this.tabs.tabs)for(let e=0;e<this.tabs.tabs.length;e++)null==s[e]&&(s[e]=[]);let e="";if(0<Object.keys(this.actions).length){for(var i in e+='\n<div class="w2ui-buttons">',n=this.tabindexBase+this.fields.length+1,this.actions){var d=this.actions[i],u={text:"",style:"",class:""};w2utils.isPlainObject(d)?(null==d.text&&null!=d.caption&&(console.log("NOTICE: form action.caption property is deprecated, please use action.text. Action ->",d),d.text=d.caption),d.text&&(u.text=d.text),d.style&&(u.style=d.style),d.class&&(u.class=d.class)):(u.text=i,-1!==["save","update","create"].indexOf(i.toLowerCase())?u.class="w2ui-btn-blue":u.class=""),e+='\n <button name="'+i+'" class="w2ui-btn '+u.class+'" style="'+u.style+'" tabindex="'+n+'">'+w2utils.lang(u.text)+"</button>",n++}e+="\n</div>"}a="";for(let i=0;i<s.length;i++){if(a+='<div class="w2ui-page page-'+i+'" style="'+(0!==i?"display: none;":"")+this.pageStyle+'">',!s[i])return console.log(`ERROR: Page ${i} does not exist`),!1;s[i].before&&(a+=s[i].before),a+='<div class="w2ui-column-container">',Object.keys(s[i]).sort().forEach((e,t)=>{e==parseInt(e)&&(a+='<div class="w2ui-column col-'+e+'">'+(s[i][e]||"")+"\n</div>")}),a+="\n</div>",s[i].after&&(a+=s[i].after),a+="\n</div>",s[i].anchors&&Object.keys(s[i].anchors).forEach((e,t)=>{a=a.replace(e,s[i].anchors[e])})}return a+=e}toggleGroup(e,t){var i,e=query(this.box).find('.w2ui-group-title[data-group="'+w2utils.base64encode(e)+'"]');0!==e.length&&(i=query(e.prop("nextElementSibling")),(t=void 0===t?"none"==i.css("display"):t)?(i.show(),e.find("span").addClass("w2ui-icon-collapse").removeClass("w2ui-icon-expand")):(i.hide(),e.find("span").addClass("w2ui-icon-expand").removeClass(
|
||
|
<div class="w2ui-map-field" style="margin-bottom: 5px" data-index="${i}">
|
||
|
${"map"==e.type?`<input type="text" ${e.html.key.attr+s} class="w2ui-input w2ui-map key">
|
||
|
${e.html.key.text||""}
|
||
|
`:""}
|
||
|
<input type="text" ${e.html.value.attr+s} class="w2ui-input w2ui-map value">
|
||
|
${e.html.value.text||""}
|
||
|
</div>`;t.append(i)},d.el.mapRefresh=function(l,r){let a,n,o;var h;"map"==d.type&&(null==(l=w2utils.isPlainObject(l)?l:{})._order&&(l._order=Object.keys(l)),a=l._order),"array"==d.type&&(Array.isArray(l)||(l=[]),a=l.map((e,t)=>t));for(let e=r.find(".w2ui-map-field").length-1;e>=a.length;e--)r.find(`div[data-index='${e}']`).remove();for(let s=0;s<a.length;s++){let t=a[s],e=r.find(`div[data-index='${s}']`),i=(0==e.length&&(d.el.mapAdd(d,r,s),e=r.find(`div[data-index='${s}']`)),e.attr("data-key",t),n=e.find(".w2ui-map.key"),o=e.find(".w2ui-map.value"),l[t]);"array"==d.type&&0<(h=l.filter(e=>e.key==t)).length&&(i=h[0].value),n.val(t),o.val(i),!0!==d.disabled&&!1!==d.disabled||(n.prop("readOnly",!!d.disabled),o.prop("readOnly",!!d.disabled))}var e=a.length,t=r.find(`div[data-index='${e}']`),e=(0!==t.length||n&&""==n.val()&&""==o.val()||n&&(!0===n.prop("readOnly")||!0===n.prop("disabled"))||d.el.mapAdd(d,r,e),!0!==d.disabled&&!1!==d.disabled||(t.find(".key").prop("readOnly",!!d.disabled),t.find(".value").prop("readOnly",!!d.disabled)),query(d.el).get(0)?.nextSibling);query(e).find("input.w2ui-map").off(".mapChange").on("keyup.mapChange",function(e){var t=query(e.target).closest(".w2ui-map-field"),i=t.get(0).nextElementSibling,t=t.get(0).previousElementSibling,s=(13==e.keyCode&&((s=u??i)instanceof HTMLElement&&0<(s=query(s).find("input")).length&&s.get(0).focus(),u=void 0),query(e.target).hasClass("key")?"key":"value");38==e.keyCode&&t&&(query(t).find("input."+s).get(0).select(),e.preventDefault()),40==e.keyCode&&i&&(query(i).find("input."+s).get(0).select(),e.preventDefault())}).on("keydown.mapChange",function(e){38!=e.keyCode&&40!=e.keyCode||e.preventDefault()}).on("input.mapChange",function(e){var e=query(e.target).closest("div"),t=e.data("index"),i=e.get(0).nextElementSibling;if(""==e.find("input").val()||i){if(""==e.find("input").val()&&i){let t=!0;query(i).find("input").each(e=>{""!=e.value&&(t=!1)}),t&&query(i).remove()}}else d.el.mapAdd(d,r,parseInt(t)+1)}).on("change.mapChange",function(e){null==c.original&&(0<Object.keys(c.record).length?c.original=w2utils.clone(c.record):c.original={});let{current:t,previous:i,original:s}=c.getFieldValue(d.field);var l=query(e.target).closest(".w2ui-map-container"),l=("map"==d.type&&(t._order=[]),l.find(".w2ui-map.key").each(e=>{t._order.push(e.value)}),c.trigger("change",{target:d.field,field:d.field,originalEvent:e,value:{current:t,previous:i,original:s}}));!0!==l.isCancelled&&("map"==d.type&&(t._order=t._order.filter(e=>""!==e),delete t[""]),"array"==d.type&&(t=t.filter(e=>""!==e)),""==query(e.target).parent().find("input").val()&&(u=e.target),c.setValue(d.field,t),d.el.mapRefresh(t,r),l.finish())})}}(s),this.setFieldValue(s.field,this.getValue(s.name))}}return t.finish(),this.resize(),Date.now()-e}}}render(e){var t=Date.now();let i=this;"string"==typeof e&&(e=query(e).get(0));var s=this.trigger("render",{target:this.name,box:e??this.box});if(!0!==s.isCancelled&&(null!=e&&(0<query(this.box).find("#form_"+this.name+"_form").length&&query(this.box).removeAttr("name").removeClass("w2ui-reset w2ui-form").html(""),this.box=e),this.isGenerated||this.formHTML)&&this.box){e='<div class="w2ui-form-box">'+(""!==this.header?'<div class="w2ui-form-header">'+w2utils.lang(this.header)+"</div>":"")+' <div id="form_'+this.name+'_toolbar" class="w2ui-form-toolbar" style="display: none"></div> <div id="form_'+this.name+'_tabs" class="w2ui-form-tabs" style="display: none"></div>'+this.formHTML+"</div>",e=(query(this.box).attr("name",this.name).addClass("w2ui-reset w2ui-form").html(e),0<query(this.box).length&&(query(this.box)[0].style.cssText+=this.style),w2utils.bindEvents(query(this.box).find(".w2ui-eaction"),this),"function"!=typeof this.toolbar.render&&(this.toolbar=new w2toolbar(w2utils.extend({},this.toolbar,{name:this.name+"_toolbar",owner:this})),this.toolbar.on("click",function(e){e=i.trigger("toolbar",{target:e.target,originalEvent:e});!0!==e.isCancelled&&e.finish()})),"object"==typeof this.toolbar&&"function"==typeof this.toolbar.render&&this.toolbar.ren
|
||
|
<span class="w2ui-icon ${s.icon} "style="cursor: pointer; font-size: 14px;
|
||
|
display: inline-block; margin-top: -1px; color: #7F98AD; ${s.iconStyle}">
|
||
|
</span>`:s.prefix="",this.addPrefix();let e=query(this.helpers.search_focus);var i=query(e[0].previousElementSibling);e.css({outline:"none"}),""===e.val()?(e.css("opacity",0),i.css("opacity",0),this.selected?.id?(a=this.selected.text,r=this.findItemIndex(s.items,this.selected.id),null!=a&&query(this.el).val(w2utils.lang(a)).data({selected:a,selectedIndex:r[0]})):(this.el.value="",query(this.el).removeData("selected selectedIndex"))):(e.css("opacity",1),i.css("opacity",1),query(this.el).val(""),setTimeout(()=>{this.helpers.prefix&&this.helpers.prefix.hide(),s.icon?(e.css("margin-left","17px"),query(this.helpers.search).find(".w2ui-icon-search").addClass("show-search")):(e.css("margin-left","0px"),query(this.helpers.search).find(".w2ui-icon-search").removeClass("show-search"))},1)),query(this.el).prop("readOnly")||query(this.el).prop("disabled")?setTimeout(()=>{this.helpers.prefix&&query(this.helpers.prefix).css("opacity","0.6"),this.helpers.suffix&&query(this.helpers.suffix).css("opacity","0.6")},1):setTimeout(()=>{this.helpers.prefix&&query(this.helpers.prefix).css("opacity","1"),this.helpers.suffix&&query(this.helpers.suffix).css("opacity","1")},1)}let l=this.helpers.multi;if(["enum","file"].includes(this.type)&&l){let i="";Array.isArray(this.selected)&&this.selected.forEach((e,t)=>{null!=e&&(i+=`
|
||
|
<div class="li-item" index="${t}" style="max-width: ${parseInt(s.maxItemWidth)}px; ${e.style||""}">
|
||
|
${"function"==typeof s.renderItem?s.renderItem(e,t,`<div class="w2ui-list-remove" index="${t}">  </div>`):`
|
||
|
${e.icon?`<span class="w2ui-icon ${e.icon}"></span>`:""}
|
||
|
<div class="w2ui-list-remove" index="${t}">  </div>
|
||
|
${("enum"===this.type?e.text:e.name)??e.id??e}
|
||
|
${e.size?`<span class="file-size"> - ${w2utils.formatSize(e.size)}</span>`:""}
|
||
|
`}
|
||
|
</div>`)});var r,a=l.find(".w2ui-multi-items");s.style&&l.attr("style",l.attr("style")+";"+s.style),query(this.el).css("z-index","-1"),query(this.el).prop("readOnly")||query(this.el).prop("disabled")?setTimeout(()=>{l[0].scrollTop=0,l.addClass("w2ui-readonly").find(".li-item").css("opacity","0.9").parent().find(".li-search").hide().find("input").prop("readOnly",!0).closest(".w2ui-multi-items").find(".w2ui-list-remove").hide()},1):setTimeout(()=>{l.removeClass("w2ui-readonly").find(".li-item").css("opacity","1").parent().find(".li-search").show().find("input").prop("readOnly",!1).closest(".w2ui-multi-items").find(".w2ui-list-remove").show()},1),0<this.selected?.length&&query(this.el).attr("placeholder",""),l.find(".w2ui-enum-placeholder").remove(),a.find(".li-item").remove(),""!==i?a.prepend(i):null!=query(this.el).attr("placeholder")&&""===l.find("input").val()&&(r=w2utils.stripSpaces(`
|
||
|
padding-top: ${t["padding-top"]};
|
||
|
padding-left: ${t["padding-left"]};
|
||
|
box-sizing: ${t["box-sizing"]};
|
||
|
line-height: ${t["line-height"]};
|
||
|
font-size: ${t["font-size"]};
|
||
|
font-family: ${t["font-family"]};
|
||
|
`),l.prepend(`<div class="w2ui-enum-placeholder" style="${r}">${query(this.el).attr("placeholder")}</div>`)),l.off(".w2item").on("scroll.w2item",e=>{e=this.trigger("scroll",{target:this.el,originalEvent:e});!0!==e.isCancelled&&(w2tooltip.hide(this.el.id+"_preview"),e.finish())}).find(".li-item").on("click.w2item",e=>{var i=query(e.target).closest(".li-item"),s=i.attr("index"),l=this.selected[s];if(!query(i).hasClass("li-search")){e.stopPropagation();let t;if(query(e.target).hasClass("w2ui-list-remove"))query(this.el).prop("readOnly")||query(this.el).prop("disabled")||!0!==(t=this.trigger("remove",{target:this.el,originalEvent:e,item:l})).isCancelled&&(this.selected.splice(s,1),query(this.el).trigger("input").trigger("change"),query(e.target).remove());else if(!0!==(t=this.trigger("click",{target:this.el,originalEvent:e.originalEvent,item:l})).isCancelled){let e=l.tooltip;if("file"===this.type&&(/image/i.test(l.type)&&(e=`
|
||
|
<div class="w2ui-file-preview">
|
||
|
<img src="${l.content?"data:"+l.type+";base64,"+l.content:""}"
|
||
|
style="max-width: 300px">
|
||
|
</div>`),e+=`
|
||
|
<div class="w2ui-file-info">
|
||
|
<div class="file-caption">${w2utils.lang("Name")}:</div>
|
||
|
<div class="file-value">${l.name}</div>
|
||
|
<div class="file-caption">${w2utils.lang("Size")}:</div>
|
||
|
<div class="file-value">${w2utils.formatSize(l.size)}</div>
|
||
|
<div class="file-caption">${w2utils.lang("Type")}:</div>
|
||
|
<div class="file-value file-type">${l.type}</div>
|
||
|
<div class="file-caption">${w2utils.lang("Modified")}:</div>
|
||
|
<div class="file-value">${w2utils.date(l.modified)}</div>
|
||
|
</div>`),e){let t=this.el.id+"_preview";w2tooltip.show({name:t,anchor:i.get(0),html:e,hideOn:["doc-click"],class:""}).show(e=>{query(`#w2overlay-${t} img`).on("load",function(e){var t=this.clientWidth,i=this.clientHeight;t<300&i<300||(i<=t&&300<t&&query(this).css("width","300px"),t<i&&300<i&&query(this).css("height","300px"))}).on("error",function(e){this.style.display="none"})})}t.finish()}}}).on("mouseenter.w2item",e=>{var t=query(e.target).closest(".li-item");query(t).hasClass("li-search")||(t=this.selected[query(e.target).attr("index")],!0!==(e=this.trigger("mouseEnter",{target:this.el,originalEvent:e,item:t})).isCancelled&&e.finish())}).on("mouseleave.w2item",e=>{var t=query(e.target).closest(".li-item");query(t).hasClass("li-search")||(t=this.selected[query(e.target).attr("index")],!0!==(e=this.trigger("mouseLeave",{target:this.el,originalEvent:e,item:t})).isCancelled&&e.finish())}),"enum"===this.type?this.helpers.multi.find("input").css({width:"15px"}):this.helpers.multi.find(".li-search").hide(),this.resize()}return Date.now()-e}resize(){var e=this.el.clientWidth,t=getComputedStyle(this.el),i=this.helpers.search,s=this.helpers.multi,l=this.helpers.suffix,r=this.helpers.prefix,i=(i&&query(i).css("width",e),s&&query(s).css("width",e-parseInt(t["margin-left"],10)-parseInt(t["margin-right"],10)),l&&this.addSuffix(),r&&this.addPrefix(),this.helpers.multi);if(["enum","file"].includes(this.type)&&i){query(this.el).css("height","auto");let e=query(i).find(":scope div.w2ui-multi-items").get(0).clientHeight+5;(e=(e=e<20?20:e)>this.tmp["max-height"]?this.tmp["max-height"]:e)<this.tmp["min-height"]&&(e=this.tmp["min-height"]);s=w2utils.getSize(this.el,"height")-2;s>e&&(e=s),query(i).css({height:e+"px",overflow:e==this.tmp["max-height"]?"auto":"hidden"}),query(i).css("height",e+"px"),query(this.el).css({height:e+"px"})}this.tmp.current_width=e}reset(){null!=this.tmp&&(query(this.el).css("height","auto"),Array("padding-left","padding-right","background-color","border-color").forEach(e=>{this.tmp&&null!=this.tmp["old-"+e]&&(query(this.el).css(e,this.tmp["old-"+e]),delete this.tmp["old-"+e])}),clearInterval(this.tmp.sizeTimer)),query(this.el).val(this.clean(query(this.el).val())).removeClass("w2field").removeData("selected selectedIndex").off(".w2field"),Object.keys(this.helpers).forEach(e=>{query(this.helpers[e]).remove()}),this.helpers={}}clean(e){var t;return e="number"!=typeof e&&(t=this.options,e=String(e).trim(),["int","float","money","currency","percent"].includes(this.type))?""!==(e="string"==typeof e?(e=t.autoFormat&&(["money","currency"].includes(this.type)&&(e=String(e).replace(t.moneyRE,"")),"percent"===this.type&&(e=String(e).replace(t.percentRE,"")),["int","float"].includes(this.type))?String(e).replace(t.numberRE,""):e).replace(/\s+/g,"").replace(new RegExp(t.groupSymbol,"g"),"").replace(t.decimalSymbol,"."):e)&&w2utils.isFloat(e)?Number(e):"":e}format(e){var t=this.options;if(t.autoFormat&&""!==e){switch(this.type){case"money":case"currency":""!==(e=w2utils.formatNumber(e,t.currencyPrecision,!0))&&(e=t.currencyPrefix+e+t.currencySuffix);break;case"percent":""!==(e=w2utils.formatNumber(e,t.precision,!0))&&(e+="%");break;case"float":e=w2utils.formatNumber(e,t.precision,!0);break;case"int":e=w2utils.formatNumber(e,0,!0)}var i=parseInt(1e3).toLocaleString(w2utils.settings.locale,{useGrouping:!0}).slice(1,2);i!==this.options.groupSymbol&&(e=e.replaceAll(i,this.options.groupSymbol))}return e}change(e){if(-1!==["int","float","money","currency","percent"].indexOf(this.type)){var t=query(this.el).val(),i=this.format(this.clean(query(this.el).val()));if(""!==t&&t!=i)return query(this.el).val(i),e.stopPropagation(),e.preventDefault(),!1}if("color"===this.type){let e=query(this.el).val();"rgb"!==e.substr(0,3).toLowerCase()&&(e="#"+e,8!==(t=query(this.el).val().length))&&6!==t&&3!==t&&(e="");i=query(this.el).get(0).nextElementSibling;query(i).find("div").css("background-color",e),query(this.el).hasClass("has-focus")&&this.updateOverlay()}if(-1!==["list","enum","file"].indexOf(this.type)&&this.
|
||
|
<div class="w2ui-field-helper">
|
||
|
<span class="w2ui-icon w2ui-icon-search"></span>
|
||
|
<input ${t=null!=query(this.el).attr("id")?'id="'+query(this.el).attr("id")+'_search"':t} type="text" tabIndex="${e}" autocapitalize="off" autocomplete="off" autocorrect="off" spellcheck="false"/>
|
||
|
</div>`,i=(query(this.el).attr("tabindex",-1).before(i),query(this.el).get(0).previousElementSibling),s=(this.helpers.search=i,this.helpers.search_focus=query(i).find("input").get(0),getComputedStyle(this.el));query(i).css({width:this.el.clientWidth+"px","margin-top":s["margin-top"],"margin-left":s["margin-left"],"margin-bottom":s["margin-bottom"],"margin-right":s["margin-right"]}).find("input").css({cursor:"default",width:"100%",opacity:1,padding:s.padding,margin:s.margin,border:"1px solid transparent","background-color":"transparent"}),query(i).find("input").off(".helper").on("focus.helper",e=>{query(e.target).val(""),this.tmp.pholder=query(this.el).attr("placeholder")??"",this.focus(e),e.stopPropagation()}).on("blur.helper",e=>{query(e.target).val(""),null!=this.tmp.pholder&&query(this.el).attr("placeholder",this.tmp.pholder),this.blur(e),e.stopPropagation()}).on("keydown.helper",e=>{this.keyDown(e)}).on("keyup.helper",e=>{this.keyUp(e)}),query(i).on("click",e=>{query(e.target).find("input").focus()})}}addMultiSearch(){if(["enum","file"].includes(this.type)){query(this.helpers.multi).remove();let e="";var l,r,a=getComputedStyle(this.el),n=w2utils.stripSpaces(`
|
||
|
margin-top: 0px;
|
||
|
margin-bottom: 0px;
|
||
|
margin-left: ${a["margin-left"]};
|
||
|
margin-right: ${a["margin-right"]};
|
||
|
width: ${w2utils.getSize(this.el,"width")-parseInt(a["margin-left"],10)-parseInt(a["margin-right"],10)}px;
|
||
|
`);null==this.tmp["min-height"]&&(l=this.tmp["min-height"]=parseInt(("none"!=a["min-height"]?a["min-height"]:0)||0),r=parseInt(a.height),this.tmp["min-height"]=Math.max(l,r)),null==this.tmp["max-height"]&&"none"!=a["max-height"]&&(this.tmp["max-height"]=parseInt(a["max-height"]));let t="",i=(null!=query(this.el).attr("id")&&(t=`id="${query(this.el).attr("id")}_search"`),parseInt(query(this.el).attr("tabIndex"))),s=(isNaN(i)||-1===i||(this.tmp["old-tabIndex"]=i),null!=(i=this.tmp["old-tabIndex"]?this.tmp["old-tabIndex"]:i)&&!isNaN(i)||(i=0),"enum"===this.type&&(e=`
|
||
|
<div class="w2ui-field-helper w2ui-list" style="${n}">
|
||
|
<div class="w2ui-multi-items">
|
||
|
<div class="li-search">
|
||
|
<input ${t} type="text" autocapitalize="off" autocomplete="off" autocorrect="off" spellcheck="false"
|
||
|
tabindex="${i}"
|
||
|
${query(this.el).prop("readOnly")?"readonly":""}
|
||
|
${query(this.el).prop("disabled")?"disabled":""}>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>`),"file"===this.type&&(e=`
|
||
|
<div class="w2ui-field-helper w2ui-list" style="${n}">
|
||
|
<div class="w2ui-multi-file">
|
||
|
<input name="attachment" class="file-input" type="file" tabindex="-1"'
|
||
|
style="width: 100%; height: 100%; opacity: 0" title=""
|
||
|
${1!==this.options.max?"multiple":""}
|
||
|
${query(this.el).prop("readOnly")||query(this.el).prop("disabled")?"disabled":""}
|
||
|
${query(this.el).attr("accept")?' accept="'+query(this.el).attr("accept")+'"':""}>
|
||
|
</div>
|
||
|
<div class="w2ui-multi-items">
|
||
|
<div class="li-search" style="display: none">
|
||
|
<input ${t} type="text" autocapitalize="off" autocomplete="off" autocorrect="off" spellcheck="false"
|
||
|
tabindex="${i}"
|
||
|
${query(this.el).prop("readOnly")?"readonly":""}
|
||
|
${query(this.el).prop("disabled")?"disabled":""}>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>`),this.tmp["old-background-color"]=a["background-color"],this.tmp["old-border-color"]=a["border-color"],query(this.el).before(e).css({"border-color":"transparent","background-color":"transparent"}),query(this.el.previousElementSibling));this.helpers.multi=s,query(this.el).attr("tabindex",-1),s.on("click",e=>{this.focus(e)}),s.find("input:not(.file-input)").on("click",e=>{this.click(e)}).on("focus",e=>{this.focus(e)}).on("blur",e=>{this.blur(e)}).on("keydown",e=>{this.keyDown(e)}).on("keyup",e=>{this.keyUp(e)}),"file"===this.type&&s.find("input.file-input").off(".drag").on("click.drag",e=>{e.stopPropagation(),query(this.el).prop("readOnly")||query(this.el).prop("disabled")||this.focus(e)}).on("dragenter.drag",e=>{query(this.el).prop("readOnly")||query(this.el).prop("disabled")||s.addClass("w2ui-file-dragover")}).on("dragleave.drag",e=>{query(this.el).prop("readOnly")||query(this.el).prop("disabled")||s.removeClass("w2ui-file-dragover")}).on("drop.drag",e=>{query(this.el).prop("readOnly")||query(this.el).prop("disabled")||(s.removeClass("w2ui-file-dragover"),Array.from(e.dataTransfer.files).forEach(e=>{this.addFile(e)}),this.focus(e),e.preventDefault(),e.stopPropagation())}).on("dragover.drag",e=>{e.preventDefault(),e.stopPropagation()}).on("change.drag",e=>{void 0!==e.target.files&&Array.from(e.target.files).forEach(e=>{this.addFile(e)}),this.focus(e)}),this.refresh()}}addFile(t){var e=this.options,s=this.selected;let l={name:t.name,type:t.type,modified:t.lastModifiedDate,size:t.size,content:null,file:t},i=0,r=0,a=[],n=(Array.isArray(s)&&s.forEach(e=>{e.name==t.name&&e.size==t.size&&a.push(w2utils.lang('The file "${name}" (${size}) is already added.',{name:t.name,size:w2utils.formatSize(t.size)})),i+=e.size,r++}),0!==e.maxFileSize&&l.size>e.maxFileSize&&a.push(w2utils.lang("Maximum file size is ${size}",{size:w2utils.formatSize(e.maxFileSize)})),0!==e.maxSize&&i+l.size>e.maxSize&&a.push(w2utils.lang("Maximum total size is ${size}",{size:w2utils.formatSize(e.maxSize)})),0!==e.max&&r>=e.max&&a.push(w2utils.lang("Maximum number of files is ${count}",{count:e.max})),this.trigger("add",{target:this.el,file:l,total:r,totalSize:i,errors:a}));if(!0!==n.isCancelled)if(!0!==e.silent&&0<a.length)w2tooltip.show({anchor:this.el,html:"Errors: "+a.join("<br>")}),console.log("ERRORS (while adding files): ",a);else if(s.push(l),"undefined"!=typeof FileReader&&!0===e.readContent){s=new FileReader;let i=this;s.onload=function(e){var e=e.target.result,t=e.indexOf(",");l.content=e.substr(t+1),i.refresh(),query(i.el).trigger("input").trigger("change"),n.finish()},s.readAsDataURL(t)}else this.refresh(),query(this.el).trigger("input").trigger("change"),n.finish()}moveCaret2end(){setTimeout(()=>{this.el.setSelectionRange(this.el.value.length,this.el.value.length)},0)}}export{w2ui,w2utils,query,w2locale,w2event,w2base,w2popup,w2alert,w2confirm,w2prompt,Dialog,w2tooltip,w2menu,w2color,w2date,Tooltip,w2toolbar,w2sidebar,w2tabs,w2layout,w2grid,w2form,w2field};
|