From 371205228f1294bc4db7ad48fa69834619c7987d Mon Sep 17 00:00:00 2001 From: Thierry Feuzeu Date: Thu, 20 Jun 2024 21:48:17 +0200 Subject: [PATCH] Added show() and hide() methods to the UmbrellaJs selector. --- dist/jaxon.core.js | 9 +++++---- dist/jaxon.core.min.js | 2 +- dist/jaxon.module.js | 9 +++++---- src/parser/query.js | 9 +++++---- 4 files changed, 16 insertions(+), 13 deletions(-) diff --git a/dist/jaxon.core.js b/dist/jaxon.core.js index 8b49856..41b60b4 100644 --- a/dist/jaxon.core.js +++ b/dist/jaxon.core.js @@ -1449,14 +1449,15 @@ window.jaxon = jaxon; if (!el.options || !el.multiple) { return el.value; } - return el.options + // Convert from NodeList to array, so we can call the filter method. + return [...el.options] .filter((option) => option.selected) .map((option) => option.value); }; - selector.prototype.show = function() { + selector.prototype.show = function(display) { this.each(node => { if (node.style) { - node.style.visibility = 'visible'; + node.style.display = display ?? 'block'; } }); return this; @@ -1464,7 +1465,7 @@ window.jaxon = jaxon; selector.prototype.hide = function() { this.each(node => { if (node.style) { - node.style.visibility = 'hidden'; + node.style.display = 'none'; } }); return this; diff --git a/dist/jaxon.core.min.js b/dist/jaxon.core.min.js index b7f84d8..66d31b1 100644 --- a/dist/jaxon.core.min.js +++ b/dist/jaxon.core.min.js @@ -6,4 +6,4 @@ @copyright Copyright (c) 2017 by Thierry Feuzeu, Joseph Woolley, Steffen Konerow, Jared White & J. Max Wilson @license https://opensource.org/license/bsd-3-clause/ BSD License */ -var jaxon={version:{major:"5",minor:"0",patch:"0rc-17"},debug:{verbose:{}},ajax:{callback:{},handler:{},parameters:{},request:{},response:{}},cmd:{body:{},script:{},event:{}},parser:{attr:{},call:{},query:{}},utils:{dom:{},form:{},queue:{},types:{},string:{},upload:{}},dom:{},dialog:{cmd:{},lib:{}},config:{}};!function(e){e.commonHeaders={"If-Modified-Since":"Sat, 1 Jan 2000 00:00:00 GMT"},e.postHeaders={},e.getHeaders={},e.waitCursor=!1,e.statusMessages=!1,e.baseDocument=document,e.requestURI=document.URL,e.defaultMode="asynchronous",e.defaultHttpVersion="HTTP/1.1",e.defaultContentType="application/x-www-form-urlencoded",e.defaultResponseDelayTime=1e3,e.convertResponseToJson=!0,e.defaultExpirationTime=1e4,e.defaultMethod="POST",e.defaultRetry=5,e.maxObjectDepth=20,e.maxObjectSize=2e3,e.commandQueueSize=1e3,e.requestQueueSize=1e3,e.httpRequestOptions={mode:"cors",cache:"no-cache",credentials:"same-origin",redirect:"manual"},e.setRequestOptions=t=>{if(void 0===e.requestURI)throw{code:10005};["commonHeaders","postHeaders","getHeaders"].forEach((n=>t[n]={...e[n],...t[n]}));const n={statusMessages:e.statusMessages,waitCursor:e.waitCursor,mode:e.defaultMode,method:e.defaultMethod,URI:e.requestURI,httpVersion:e.defaultHttpVersion,contentType:e.defaultContentType,convertResponseToJson:e.convertResponseToJson,retry:e.defaultRetry,maxObjectDepth:e.maxObjectDepth,maxObjectSize:e.maxObjectSize,upload:!1,aborted:!1};Object.keys(n).forEach((e=>t[e]=t[e]??n[e])),t.method=t.method.toUpperCase(),"GET"!==t.method&&(t.method="POST"),t.requestRetry=t.retry},e.status={update:{onRequest:()=>console.log("Sending Request..."),onWaiting:()=>console.log("Waiting for Response..."),onProcessing:()=>console.log("Processing..."),onComplete:()=>console.log("Done.")},dontUpdate:{onRequest:()=>{},onWaiting:()=>{},onProcessing:()=>{},onComplete:()=>{}}},e.cursor={update:{onWaiting:()=>{jaxon.config.baseDocument.body&&(jaxon.config.baseDocument.body.style.cursor="wait")},onComplete:()=>{jaxon.config.baseDocument.body&&(jaxon.config.baseDocument.body.style.cursor="auto")}},dontUpdate:{onWaiting:()=>{},onComplete:()=>{}}}}(jaxon.config),window.jaxon=jaxon,function(e,t,n){e.$=e=>e?t.isString(e)?n.getElementById(e):e:null;e.getBrowserHTML=t=>{const o=(()=>{const t=e.$("jaxon_temp_workspace");if(t)return t;const o=n.createElement("div");return o.setAttribute("id","jaxon_temp_workspace"),o.style.display="none",o.style.visibility="hidden",n.body.appendChild(o),o})();o.innerHTML=t;const r=o.innerHTML;return o.innerHTML="",r},e.willChange=(t,n,o)=>!!(t=e.$(t))&&o!=t[n],e.findFunction=(e,n=window)=>{if("toInt"===e&&n===window)return t.toInt;const o=e.split("."),r=o.length;for(let e=0;e{const n=e.split(".");e=n.pop();const o=n.length;for(let e=0;e{t.forEach((t=>{const{childNodes:o,type:r}=t;void 0!==o&&"select-one"!==r&&"select-multiple"!==r&&n(e,o),((e,{type:t,name:n,tagName:o,checked:r,disabled:a,value:s,options:i})=>{if(!n||"PARAM"===o)return;if(!e.disabled&&a)return;const{prefix:c}=e;if(c.length>0&&c!==n.substring(0,c.length))return;if(("radio"===t||"checkbox"===t)&&!r)return;if("file"===t)return;const l="select-multiple"!==t?s:Array.from(i).filter((({selected:e})=>e)).map((({value:e})=>e)),u=n.indexOf("[");if(u<0)return void(e.values[n]=l);let d=n.substring(0,u),p=n.substring(u);void 0===e.values[d]&&(e.values[d]={});let m=e.values;for(;p.length>0;){const e=p.substring(0,p.indexOf("]")+1),n=d,o=m;p=p.substring(p.indexOf("]")+1),m=m[d],d=e.substring(1,e.length-1),""===d&&("select-multiple"===t?(d=n,m=o):d=m.length),void 0===d&&(d=Object.keys(o[n]).length),m[d]=m[d]||{}}m[d]=l})(e,t)}))};e.getValues=(e,o=!1,r="")=>{const a={disabled:!0===o,prefix:r??"",values:{}},s=t.$(e);return s&&s.childNodes&&n(a,s.childNodes),a.values}}(jaxon.utils.form,jaxon.utils.dom),function(e){e.create=e=>({start:0,count:0,size:e,end:0,elements:[],paused:!1}),e.empty=e=>e.count<=0,e.full=e=>e.count>=e.size,e.push=(t,n)=>{if(e.full(t))throw{code:10003};return t.elements[t.end]=n,++t.end>=t.size&&(t.end=0),++t.count},e.pushFront=(t,n)=>{if(e.full(t))throw{code:10003};return e.empty(t)?e.push(t,n):(--t.start<0&&(t.start=t.size-1),t.elements[t.start]=n,++t.count)},e.pop=t=>{if(e.empty(t))return null;let n=t.elements[t.start];return delete t.elements[t.start],++t.start>=t.size&&(t.start=0),t.count--,n},e.peek=t=>e.empty(t)?null:t.elements[t.start]}(jaxon.utils.queue),function(e){"use strict";let t=[],n=!1,o=!1;const r=()=>{n||(n=!0,t.forEach((e=>e.fn.call(window,e.ctx))),t=[])};e.ready=function(e,a){n?setTimeout((function(){e(a)}),1):(t.push({fn:e,ctx:a}),"complete"===document.readyState||!document.attachEvent&&"interactive"===document.readyState?setTimeout(r,1):o||(document.addEventListener("DOMContentLoaded",r,!1),window.addEventListener("load",r,!1),o=!0))}}(jaxon.utils.dom),function(e){e.doubleQuotes=e=>void 0!==e&&e.replace(new RegExp("'","g"),'"'),e.singleQuotes=e=>void 0!==e&&e.replace(new RegExp('"',"g"),"'"),e.stripOnPrefix=e=>0===(e=e.toLowerCase()).indexOf("on")?e.replace(/on/,""):e,e.addOnPrefix=e=>0!==(e=e.toLowerCase()).indexOf("on")?"on"+e:e,String.prototype.supplant||(String.prototype.supplant=function(e){return this.replace(/\{([^{}]*)\}/g,((t,n)=>{const o=e[n],r=typeof o;return"string"===r||"number"===r?o:t}))})}(jaxon.utils.string),function(e){e.of=e=>Object.prototype.toString.call(e).slice(8,-1).toLowerCase(),e.isObject=t=>"object"===e.of(t),e.isArray=t=>"array"===e.of(t),e.isString=t=>"string"===e.of(t),e.isFunction=t=>"function"===e.of(t),e.toInt=e=>parseInt(e),Array.prototype.top||(Array.prototype.top=function(){return this.length>0?this[this.length-1]:void 0})}(jaxon.utils.types),function(e,t,n){e.initialize=e=>{(e=>{if(!e.upload)return!1;e.upload={id:e.upload,input:null,form:null};const o=t.$(e.upload.id);return o?"file"!==o.type?(n.log("The upload input field with id "+e.upload.id+" is not of type file"),!1):0===o.files.length?(n.log("There is no file selected for upload in input field with id "+e.upload.id),!1):void 0===o.name?(n.log("The upload input field with id "+e.upload.id+" has no name attribute"),!1):(e.upload.input=o,e.upload.form=o.form,!0):(n.log("Unable to find input field for file upload with id "+e.upload.id),!1)})(e)||(e.postHeaders["content-type"]=e.contentType)}}(jaxon.utils.upload,jaxon.utils.dom,console),function(e,t){const n={},o="main",r=["dom.assign","dom.append","dom.prepend","dom.replace"],a=["innerHTML","outerHTML"];e.changed=(e,t,n)=>e&&a.some((e=>e===n))&&r.some((e=>e===t));const s=(e,n,o)=>{if(!n.hasAttribute("jxn-func"))return;const r=n.getAttribute(o).trim(),a=JSON.parse(n.getAttribute("jxn-func"));if(!n.hasAttribute("jxn-select"))return void t.setEventHandler({event:r,func:a},{target:e});const s=n.getAttribute("jxn-select").trim();e.querySelectorAll(`:scope ${s}`).forEach((e=>{t.setEventHandler({event:r,func:a},{target:e})}))};e.process=(e=document)=>{(e=>{e.querySelectorAll(":scope [jxn-target]").forEach((e=>{e.querySelectorAll(":scope [jxn-event]").forEach((t=>{t.parentNode===e&&(s(e,t,"jxn-event"),e.removeChild(t))})),e.removeAttribute("jxn-target")}))})(e),(e=>{e.querySelectorAll(":scope [jxn-on]").forEach((e=>{s(e,e,"jxn-on"),e.removeAttribute("jxn-on"),e.removeAttribute("jxn-func"),e.removeAttribute("jxn-select")}))})(e),(e=>{e.querySelectorAll(":scope [jxn-click]").forEach((e=>{const n=JSON.parse(e.getAttribute("jxn-click"));t.setEventHandler({event:"click",func:n},{target:e}),e.removeAttribute("jxn-click")}))})(e),(e=>{e.querySelectorAll(":scope [jxn-show]").forEach((e=>{const t=e.getAttribute("jxn-show"),r=e.getAttribute("jxn-item")??o;n[`${t}_${r}`]=e,e.removeAttribute("jxn-show"),e.removeAttribute("jxn-item")}))})(e)},e.node=(e,t=o)=>n[`${e}_${t}`]??null}(jaxon.parser.attr,jaxon.cmd.event),function(e,t,n,o,r,a){const s={eq:(e,t)=>e==t,teq:(e,t)=>e===t,ne:(e,t)=>e!=t,nte:(e,t)=>e!==t,gt:(e,t)=>e>t,ge:(e,t)=>e>=t,lt:(e,t)=>ee<=t},i=(e,t,n,r)=>{if(!e)return;const a=o.getInnerObject(t,e);return a?(void 0!==n&&(a.node[a.attr]=d(n,r)),a.node[a.attr]):void 0},c={select:({_name:e,mode:n,context:o=null},r)=>{const{context:{target:a,event:s}}=r;switch(e){case"this":return"js"===n?a:t.select(a);case"event":return s;case"window":return window;default:return t.select(e,o)}},event:({_name:e,func:t},n)=>{const{value:o,context:r}=n;return o.on(e,(e=>j(t,{...n,context:{...r,event:e,target:e.currentTarget}}))),o},func:({_name:e,args:t=[]},n)=>{const{context:r}=n,a=o.findFunction(e);return a?a.apply(r,p(t,n)):void 0},method:({_name:e,args:t=[]},{value:n})=>{const r=o.findFunction(e,n);return r?r.apply(n,p(t,n)):"toInt"===e?a.toInt(n):void 0},attr:({_name:e,value:t},n)=>{const{value:o,context:{target:r}}=n;return i(o||r,e,t,n)},gvar:({_name:e,value:t},n)=>i(window,e,t,n)},l={comparator:()=>!1,command:e=>{console.error("Unexpected command: "+JSON.stringify({call:e}))}},u=e=>a.isObject(e)&&!!e._type,d=(e,t)=>{if(!u(e))return e;const{_type:n,_name:a}=e;switch(n){case"form":return r.getValues(a);case"html":return o.$(a).innerHTML;case"input":return o.$(a).value;case"checked":return o.$(a).checked;case"expr":return j(e,t);case"_":return"this"===a?t.value:void 0;default:return}},p=(e,t)=>e.map((e=>d(e,t))),m=(e,t)=>{const n=u(e)?c[e._type]??l.command:l.command;return t.value=n(e,t),t.value};e.execCall=(e,t)=>m(e,{context:{target:window,...t}});const f=(e,t)=>e.reduce(((e,n)=>void 0===e?void 0:m(n,t)),null),x=({str:e,args:t},n)=>e.supplant(t.reduce(((e,t,o)=>({...e,[o+1]:d(t,n)})),{}));e.makePhrase=(e,t)=>x(e,{context:{target:window,...t}});const g=(e,t)=>!!e&&n.alert({...e,text:x(e.phrase,t)}),j=(e,t)=>{const{calls:o,question:r,condition:a,message:i}=e;if(r)((e,t,o,r)=>{n.confirm({...e,text:x(e.phrase,r)},(()=>f(o,r)),(()=>g(t,r)))})(r,i,o,t);else{if(!a)return f(o,t);((e,t,n,o)=>{const[r,a,i]=e;(s[r]??l.comparator)(d(a,o),d(i,o))?f(n,o):g(t,o)})(a,i,o,t)}};e.execExpr=(e,t)=>a.isObject(e)&&j(e,{value:null,context:{target:window,...t}})}(jaxon.parser.call,jaxon.parser.query,jaxon.dialog.lib,jaxon.utils.dom,jaxon.utils.form,jaxon.utils.types),function(e,t){e.jq=null,e.init=t=>{t&&(t.prototype.val=function(){const e=this.first();if(e)return e.options&&e.multiple?e.options.filter((e=>e.selected)).map((e=>e.value)):e.value},t.prototype.show=function(){return this.each((e=>{e.style&&(e.style.visibility="visible")})),this},t.prototype.hide=function(){return this.each((e=>{e.style&&(e.style.visibility="hidden")})),this}),e.jq=t},e.init(t),e.select=(t,n=null)=>n?e.jq(t,n):e.jq(t)}(jaxon.parser.query,window.u),function(e,t,n){const o=(e,n)=>{!t.has(e)&&console.warn(`Unable to find a Jaxon dialog library with name "${e}".`);const o=t.get(e);return!o[n]&&console.error(`The chosen Jaxon dialog library doesn't implement the "${n}" function.`),o};e.showMessage=({lib:e,type:t,title:r,phrase:a})=>{const s=o(e,"alert");return s.alert&&s.alert(t,n.makePhrase(a),r),!0},e.showModal=({lib:e,dialog:{title:t,content:n,buttons:r,options:a}})=>{const s=o(e,"show");return s.show&&s.show(t,n,r,a),!0},e.hideModal=({lib:e})=>{const t=o(e,"hide");return t.hide&&t.hide(),!0}}(jaxon.dialog.cmd,jaxon.dialog.lib,jaxon.parser.call),function(e,t,n,o,r){const a={yes:"Yes",no:"No"},s={};e.has=e=>!!s[e],e.get=e=>s[e]??s.default,e.alert=({lib:t,type:n,title:o="",text:r})=>e.get(t).alert(n,r,o),e.confirm=({lib:t,title:n="",text:o},r,a)=>e.get(t).confirm(o,n,r,a),e.register=(e,i)=>{s[e]={},i(s[e],{types:t,dom:n,js:o,jq:r,labels:a})},e.register("default",(e=>{e.alert=(e,t,n)=>alert(n?`${n}
${t}`:t),e.confirm=(e,t,n,o)=>{confirm(t?`${t}
${e}`:e)?n():o&&o()}}))}(jaxon.dialog.lib,jaxon.utils.types,jaxon.dom,jaxon.parser.call,window.jQuery),function(e,t,n){const o=e=>({timer:null,delay:e}),r=["onInitialize","onProcessParams","onPrepare","onRequest","onResponseDelay","onExpiration","beforeResponseProcessing","onFailure","onRedirect","onSuccess","onComplete"];e.create=(e,t)=>{const a={timers:{onResponseDelay:o(e??n.defaultResponseDelayTime),onExpiration:o(t??n.defaultExpirationTime)}};return r.forEach((e=>a[e]=null)),a},e.callback=e.create(),e.initCallbacks=n=>{if(t.isObject(n.callback)&&(n.callback=[n.callback]),t.isArray(n.callback))return void n.callback.forEach((e=>{void 0===e.timers&&(e.timers={})}));let o=!1;const a=e.create();r.forEach((e=>{void 0!==n[e]&&(a[e]=n[e],o=!0,delete n[e])})),n.callback=o?[a]:[]};const a=({callback:t=[]})=>[e.callback,...t];e.execute=(e,n)=>a(e).forEach((o=>((e,n,o)=>{const r=e[n];if(!r||!t.isFunction(r))return;const a=e.timers[n];a?a.timer=setTimeout((()=>r(o)),a.delay):r(o)})(o,n,e)));e.clearTimer=(e,t)=>a(e).forEach((e=>((e,t)=>{const n=e.timers[t];void 0!==n&&null!==n.timer&&clearTimeout(n.timer)})(e,t)))}(jaxon.ajax.callback,jaxon.utils.types,jaxon.config),function(e,t,n,o,r,a,s){const i={};e.q={send:r.create(t.requestQueueSize),recv:r.create(2*t.requestQueueSize)},e.register=(e,t,n="")=>i[e]={desc:n,func:t},e.unregister=e=>{const t=i[e];return t?(delete i[e],t.func):null},e.isRegistered=({name:e})=>void 0!==e&&void 0!==i[e];const c=t=>{const{command:{name:n,args:r={},component:s={}}}=t;return!e.isRegistered({name:n})||(s.name&&(t.target=o.node(s.name,s.item),t.target||console.error("Unable to find component node: "+JSON.stringify(s))),!t.target&&r.id&&(t.target=a.$(r.id),t.target||console.error("Unable to find node with id : "+r.id)),((e,t,n)=>{const{func:o,desc:r}=i[e];n.command.desc=r,o(t,n)})(n,r,t),o.changed(t.target,n,r.attr)&&o.process(t.target),!0)},l=e=>{try{return c(e),!0}catch(e){console.log(e)}return!1};e.processCommands=e=>{let t=null;for(;!e.paused&&null!==(t=r.pop(e));)if(!l(t))return},e.popAsyncRequest=e=>r.empty(e)||"synchronous"===r.peek(e).mode?null:r.pop(e),e.sleep=({duration:t},{oQueue:n})=>(n.paused=!0,setTimeout((()=>{n.paused=!1,e.processCommands(n)}),100*t),!0);const u=(t,n=0)=>{for(;n>0&&t.count>1&&null!==r.pop(t);)--n;t.paused=!1,e.processCommands(t)};e.confirm=({count:e,question:{lib:t,title:o,phrase:r}},{oQueue:a})=>{const i=s.get(t);return a.paused=!0,i.confirm(n.makePhrase(r),o,(()=>u(a)),(()=>u(a,e))),!0}}(jaxon.ajax.handler,jaxon.config,jaxon.parser.call,jaxon.parser.attr,jaxon.utils.queue,jaxon.utils.dom,jaxon.dialog.lib),function(e,t,n){const o={};e.setBag=(e,t)=>o[e]=t,e.setBags=t=>Object.keys(t).forEach((n=>e.setBag(n,t[n]))),e.clearBag=e=>delete o[e];const r=({func:e,parameters:r,bags:a=[]},s)=>{const i=new Date;var c;s("jxnr",i.getTime()),s("jxnv",`${n.major}.${n.minor}.${n.patch}`),Object.keys(e).forEach((t=>s(t,encodeURIComponent(e[t])))),[...r].forEach((e=>s("jxnargs[]",(e=>{if(null==e)return"*";const n=t.of(e);if("object"===n||"array"===n)try{return encodeURIComponent(JSON.stringify(e))}catch(t){e=""}return e=encodeURIComponent(e),"string"===n?"S"+e:"boolean"===n?"B"+e:"number"===n?"N"+e:e})(e)))),a.length>0&&s("jxnbags",encodeURIComponent((c=a,JSON.stringify(c.reduce(((e,t)=>({...e,[t]:o[t]??"*"})),{})))))};e.process=e=>{e.requestURI=e.URI,e.requestData=(({upload:e})=>e&&e.ajax&&e.input)(e)?(e=>{const t=new FormData;r(e,((e,n)=>t.append(e,n)));const n=e.upload.input;return n.files&&n.files.forEach((e=>t.append(n.name,e))),t})(e):(e=>{const t=[];return r(e,((e,n)=>t.push(e+"="+n))),"POST"===e.method?t.join("&"):(e.requestURI+=(-1===e.requestURI.indexOf("?")?"?":"&")+t.join("&"),"")})(e)}}(jaxon.ajax.parameters,jaxon.utils.types,jaxon.version),function(e,t,n,o,r,a,s,i){e.setCsrf=e=>{const n=t.baseDocument.getElementsByTagName("meta")||[];for(const o of n)if(o.getAttribute("name")===e){const e=o.getAttribute("content");return void(e&&(t.postHeaders["X-CSRF-TOKEN"]=e))}};const c=e=>{--e.requestRetry,r.execute(e,"onPrepare"),e.httpRequestOptions={...t.httpRequestOptions,method:e.method,headers:{...e.commonHeaders,..."POST"===e.method?e.postHeaders:e.getHeaders},body:e.requestData},e.responseConverter=t=>(e.response=t,e.convertResponseToJson?t.json():t.text()),e.responseHandler=t=>{e.responseContent=t,i.empty(a.q.send)||"synchronous"===e.mode?o.received(e):i.push(a.q.recv,e)},e.errorHandler=t=>{throw r.execute(e,"onFailure"),t},e.responseProcessor||(e.responseProcessor=o.jsonProcessor)},l=e=>{e.status.onRequest(),r.execute(e,"onResponseDelay"),r.execute(e,"onExpiration"),r.execute(e,"onRequest"),e.cursor.onWaiting(),e.status.onWaiting(),fetch(e.requestURI,e.httpRequestOptions).then(e.responseConverter).then(e.responseHandler).catch(e.errorHandler)};e.complete=e=>{if(r.execute(e,"onComplete"),e.cursor.onComplete(),e.status.onComplete(),(e=>{delete e.func,delete e.URI,delete e.requestURI,delete e.requestData,delete e.requestRetry,delete e.httpRequestOptions,delete e.responseHandler,delete e.responseConverter,delete e.responseContent,delete e.response,delete e.errorHandler})(e),"synchronous"===e.mode){for(i.pop(a.q.send),i.pop(a.q.recv);null!==(recvRequest=a.popAsyncRequest(a.q.recv));)o.received(recvRequest);for(;null!==(nextRequest=a.popAsyncRequest(a.q.send));)l(nextRequest);null!==(nextRequest=i.peek(a.q.send))&&l(nextRequest)}},e.abort=t=>{t.aborted=!0,e.complete(t)},e.execute=(e,o)=>{if(void 0===e)return;const u=o??{};for(u.func=e,(e=>{t.setRequestOptions(e),r.initCallbacks(e),r.execute(e,"onInitialize"),e.status=e.statusMessages?t.status.update:t.status.dontUpdate,e.cursor=e.waitCursor?t.cursor.update:t.cursor.dontUpdate,s.initialize(e),e.submit=i.empty(a.q.send),"synchronous"===e.mode&&(i.push(a.q.send,e),i.push(a.q.recv,e)),e.submit||i.push(a.q.send,e)})(u),r.execute(u,"onProcessParams"),n.process(u);u.requestRetry>0;)try{return c(u),void(u.submit&&l(u))}catch(e){if(r.execute(u,"onFailure"),u.requestRetry<=0)throw e}}}(jaxon.ajax.request,jaxon.config,jaxon.ajax.parameters,jaxon.ajax.response,jaxon.ajax.callback,jaxon.ajax.handler,jaxon.utils.upload,jaxon.utils.queue),function(e,t,n,o,r,a,s){const i=[0,200],c=[400,401,402,403,404,500,501,502,503],l=[301,302,307];e.jsonProcessor=e=>i.indexOf(e.response.status)>=0?(r.execute(e,"onSuccess"),(e=>{if(!s.isObject(e.responseContent))return;const{debug:{message:t}={},jxn:{commands:n=[]}={}}=e.responseContent;e.status.onProcessing(),t&&console.log(t);let o=0;n.forEach((t=>a.push(e.oQueue,{command:{name:"*unknown*",...t},sequence:o++,request:e,oQueue:e.oQueue}))),a.push(e.oQueue,{command:{name:"response.complete",fullName:"Response Complete"},sequence:o,request:e,oQueue:e.oQueue})})(e),n.processCommands(e.oQueue),!0):l.indexOf(e.response.status)>=0?(r.execute(e,"onRedirect"),o.complete(e),window.location=e.response.headers.get("location"),!0):!(c.indexOf(e.response.status)>=0)||(r.execute(e,"onFailure"),o.complete(e),!0),e.received=e=>e.aborted?null:(e.oQueue=a.create(t.commandQueueSize),r.clearTimer(e,"onExpiration"),r.clearTimer(e,"onResponseDelay"),r.execute(e,"beforeResponseProcessing"),e.responseProcessor(e))}(jaxon.ajax.response,jaxon.config,jaxon.ajax.handler,jaxon.ajax.request,jaxon.ajax.callback,jaxon.utils.queue,jaxon.utils.types),function(e,t,n,o){e.assign=({attr:e,value:n},{target:o})=>{const r=t.getInnerObject(e,o);return null!==r&&(r.node[r.attr]=n),!0},e.append=({attr:e,value:n},{target:o})=>{const r=t.getInnerObject(e,o);return null!==r&&(r.node[r.attr]=r.node[r.attr]+n),!0},e.prepend=({attr:e,value:n},{target:o})=>{const r=t.getInnerObject(e,o);return null!==r&&(r.node[r.attr]=n+r.node[r.attr]),!0};e.replace=({attr:e,search:o,replace:r},{target:a})=>{const s=t.getInnerObject(e,a);return null!==s&&((e,o,r)=>{const a=n.isFunction(e.node[e.attr]),s=(a?e.node[e.attr].join(""):e.node[e.attr]).replaceAll(o,r);(a||t.willChange(e.node,e.attr,s))&&(e.node[e.attr]=s)})(s,"innerHTML"===e?t.getBrowserHTML(o):o,r),!0},e.clear=(t,n)=>(e.assign({...t,value:""},n),!0),e.remove=(e,{target:t})=>(t.remove(),!0);const r=(e,t)=>{const n=o.createElement(e);return n.setAttribute("id",t),n};e.create=({tag:{id:e,name:t}},{target:n})=>(n&&n.appendChild(r(t,e)),!0),e.insertBefore=({tag:{id:e,name:t}},{target:n})=>(n&&n.parentNode&&n.parentNode.insertBefore(r(t,e),n),!0),e.insertAfter=({tag:{id:e,name:t}},{target:n})=>(n&&n.parentNode&&n.parentNode.insertBefore(r(t,e),n.nextSibling),!0)}(jaxon.cmd.body,jaxon.utils.dom,jaxon.utils.types,jaxon.config.baseDocument),function(e,t,n,o){e.addHandler=({event:e,func:t},{target:r})=>(r.addEventListener(o.stripOnPrefix(e),n.findFunction(t),!1),!0),e.removeHandler=({event:e,func:t},{target:r})=>(r.removeEventListener(o.stripOnPrefix(e),n.findFunction(t),!1),!0);const r=(e,n,o)=>t.execExpr({_type:"expr",...n},{event:e,target:o});e.addEventHandler=({event:e,func:t,options:n},{target:a})=>(a.addEventListener(o.stripOnPrefix(e),(e=>r(e,t,a)),n??!1),!0),e.setEventHandler=({event:e,func:t},{target:n})=>(n[o.addOnPrefix(e)]=e=>r(e,t,n),!0)}(jaxon.cmd.event,jaxon.parser.call,jaxon.utils.dom,jaxon.utils.string),function(e,t,n,o){e.call=({func:e,args:n},o)=>(t.execCall({_type:"func",_name:e,args:n},o),!0),e.exec=({expr:e},n)=>(t.execExpr(e,n),!0),e.redirect=({url:e,delay:t})=>t<=0?(window.location=e,!0):(window.setTimeout((()=>window.location=e),1e3*t),!0),e.setDatabag=({values:e})=>(n.setBags(e),!0);const r=(e,t)=>e.map((e=>o.isObject(e)&&"page"===e._type?parseInt(t.parentNode.getAttribute("data-page")):e));e.paginate=({func:e},{target:n})=>{const o=n.querySelectorAll("li.enabled > a"),{args:a}=e;return o.forEach((n=>n.addEventListener("click",(()=>t.execCall({...e,_type:"func",args:r(a,n)}))))),!0}}(jaxon.cmd.script,jaxon.parser.call,jaxon.ajax.parameters,jaxon.utils.types),jaxon.request=jaxon.ajax.request.execute,jaxon.register=jaxon.ajax.handler.register,jaxon.$=jaxon.utils.dom.$,jaxon.setCsrf=jaxon.ajax.request.setCsrf,jaxon.jq=jaxon.parser.query.jq,jaxon.exec=jaxon.parser.call.execExpr,jaxon.confirm=jaxon.dialog.lib.confirm,jaxon.alert=jaxon.dialog.lib.alert,jaxon.dom.ready=jaxon.utils.dom.ready,jaxon.getFormValues=jaxon.utils.form.getValues,jaxon.setBag=jaxon.ajax.parameters.setBag,jaxon.processCustomAttrs=()=>jaxon.parser.attr.process(),jaxon.isLoaded=!0,function(e,t,n,o){e("response.complete",((e,{request:t})=>(n.request.complete(t),!0)),"Response complete"),e("dom.assign",t.body.assign,"Dom::Assign"),e("dom.append",t.body.append,"Dom::Append"),e("dom.prepend",t.body.prepend,"Dom::Prepend"),e("dom.replace",t.body.replace,"Dom::Replace"),e("dom.clear",t.body.clear,"Dom::Clear"),e("dom.remove",t.body.remove,"Dom::Remove"),e("dom.create",t.body.create,"Dom::Create"),e("dom.insert.before",t.body.insertBefore,"Dom::InsertBefore"),e("dom.insert.after",t.body.insertAfter,"Dom::InsertAfter"),e("script.call",t.script.call,"Script::CallJsFunction"),e("script.exec",t.script.exec,"Script::ExecJsonExpression"),e("script.redirect",t.script.redirect,"Script::Redirect"),e("script.sleep",n.handler.sleep,"Handler::Sleep"),e("script.confirm",n.handler.confirm,"Handler::Confirm"),e("handler.event.set",t.event.setEventHandler,"Script::SetEventHandler"),e("handler.event.add",t.event.addEventHandler,"Script::AddEventHandler"),e("handler.add",t.event.addHandler,"Script::AddHandler"),e("handler.remove",t.event.removeHandler,"Script::RemoveHandler"),e("script.debug",(({message:e})=>(console.log(e),!0)),"Debug message"),e("pg.paginate",t.script.paginate,"Paginator::Paginate"),e("databag.set",t.script.setDatabag,"Databag:SetValues"),e("databag.clear",t.script.clearDatabag,"Databag:ClearValue"),e("dialog.message",o.cmd.showMessage,"Dialog:ShowMessage"),e("dialog.modal.show",o.cmd.showModal,"Dialog:ShowModal"),e("dialog.modal.hide",o.cmd.hideModal,"Dialog:HideModal")}(jaxon.register,jaxon.cmd,jaxon.ajax,jaxon.dialog); \ No newline at end of file +var jaxon={version:{major:"5",minor:"0",patch:"0rc-17"},debug:{verbose:{}},ajax:{callback:{},handler:{},parameters:{},request:{},response:{}},cmd:{body:{},script:{},event:{}},parser:{attr:{},call:{},query:{}},utils:{dom:{},form:{},queue:{},types:{},string:{},upload:{}},dom:{},dialog:{cmd:{},lib:{}},config:{}};!function(e){e.commonHeaders={"If-Modified-Since":"Sat, 1 Jan 2000 00:00:00 GMT"},e.postHeaders={},e.getHeaders={},e.waitCursor=!1,e.statusMessages=!1,e.baseDocument=document,e.requestURI=document.URL,e.defaultMode="asynchronous",e.defaultHttpVersion="HTTP/1.1",e.defaultContentType="application/x-www-form-urlencoded",e.defaultResponseDelayTime=1e3,e.convertResponseToJson=!0,e.defaultExpirationTime=1e4,e.defaultMethod="POST",e.defaultRetry=5,e.maxObjectDepth=20,e.maxObjectSize=2e3,e.commandQueueSize=1e3,e.requestQueueSize=1e3,e.httpRequestOptions={mode:"cors",cache:"no-cache",credentials:"same-origin",redirect:"manual"},e.setRequestOptions=t=>{if(void 0===e.requestURI)throw{code:10005};["commonHeaders","postHeaders","getHeaders"].forEach((n=>t[n]={...e[n],...t[n]}));const n={statusMessages:e.statusMessages,waitCursor:e.waitCursor,mode:e.defaultMode,method:e.defaultMethod,URI:e.requestURI,httpVersion:e.defaultHttpVersion,contentType:e.defaultContentType,convertResponseToJson:e.convertResponseToJson,retry:e.defaultRetry,maxObjectDepth:e.maxObjectDepth,maxObjectSize:e.maxObjectSize,upload:!1,aborted:!1};Object.keys(n).forEach((e=>t[e]=t[e]??n[e])),t.method=t.method.toUpperCase(),"GET"!==t.method&&(t.method="POST"),t.requestRetry=t.retry},e.status={update:{onRequest:()=>console.log("Sending Request..."),onWaiting:()=>console.log("Waiting for Response..."),onProcessing:()=>console.log("Processing..."),onComplete:()=>console.log("Done.")},dontUpdate:{onRequest:()=>{},onWaiting:()=>{},onProcessing:()=>{},onComplete:()=>{}}},e.cursor={update:{onWaiting:()=>{jaxon.config.baseDocument.body&&(jaxon.config.baseDocument.body.style.cursor="wait")},onComplete:()=>{jaxon.config.baseDocument.body&&(jaxon.config.baseDocument.body.style.cursor="auto")}},dontUpdate:{onWaiting:()=>{},onComplete:()=>{}}}}(jaxon.config),window.jaxon=jaxon,function(e,t,n){e.$=e=>e?t.isString(e)?n.getElementById(e):e:null;e.getBrowserHTML=t=>{const o=(()=>{const t=e.$("jaxon_temp_workspace");if(t)return t;const o=n.createElement("div");return o.setAttribute("id","jaxon_temp_workspace"),o.style.display="none",o.style.visibility="hidden",n.body.appendChild(o),o})();o.innerHTML=t;const r=o.innerHTML;return o.innerHTML="",r},e.willChange=(t,n,o)=>!!(t=e.$(t))&&o!=t[n],e.findFunction=(e,n=window)=>{if("toInt"===e&&n===window)return t.toInt;const o=e.split("."),r=o.length;for(let e=0;e{const n=e.split(".");e=n.pop();const o=n.length;for(let e=0;e{t.forEach((t=>{const{childNodes:o,type:r}=t;void 0!==o&&"select-one"!==r&&"select-multiple"!==r&&n(e,o),((e,{type:t,name:n,tagName:o,checked:r,disabled:a,value:s,options:i})=>{if(!n||"PARAM"===o)return;if(!e.disabled&&a)return;const{prefix:c}=e;if(c.length>0&&c!==n.substring(0,c.length))return;if(("radio"===t||"checkbox"===t)&&!r)return;if("file"===t)return;const l="select-multiple"!==t?s:Array.from(i).filter((({selected:e})=>e)).map((({value:e})=>e)),u=n.indexOf("[");if(u<0)return void(e.values[n]=l);let d=n.substring(0,u),p=n.substring(u);void 0===e.values[d]&&(e.values[d]={});let m=e.values;for(;p.length>0;){const e=p.substring(0,p.indexOf("]")+1),n=d,o=m;p=p.substring(p.indexOf("]")+1),m=m[d],d=e.substring(1,e.length-1),""===d&&("select-multiple"===t?(d=n,m=o):d=m.length),void 0===d&&(d=Object.keys(o[n]).length),m[d]=m[d]||{}}m[d]=l})(e,t)}))};e.getValues=(e,o=!1,r="")=>{const a={disabled:!0===o,prefix:r??"",values:{}},s=t.$(e);return s&&s.childNodes&&n(a,s.childNodes),a.values}}(jaxon.utils.form,jaxon.utils.dom),function(e){e.create=e=>({start:0,count:0,size:e,end:0,elements:[],paused:!1}),e.empty=e=>e.count<=0,e.full=e=>e.count>=e.size,e.push=(t,n)=>{if(e.full(t))throw{code:10003};return t.elements[t.end]=n,++t.end>=t.size&&(t.end=0),++t.count},e.pushFront=(t,n)=>{if(e.full(t))throw{code:10003};return e.empty(t)?e.push(t,n):(--t.start<0&&(t.start=t.size-1),t.elements[t.start]=n,++t.count)},e.pop=t=>{if(e.empty(t))return null;let n=t.elements[t.start];return delete t.elements[t.start],++t.start>=t.size&&(t.start=0),t.count--,n},e.peek=t=>e.empty(t)?null:t.elements[t.start]}(jaxon.utils.queue),function(e){"use strict";let t=[],n=!1,o=!1;const r=()=>{n||(n=!0,t.forEach((e=>e.fn.call(window,e.ctx))),t=[])};e.ready=function(e,a){n?setTimeout((function(){e(a)}),1):(t.push({fn:e,ctx:a}),"complete"===document.readyState||!document.attachEvent&&"interactive"===document.readyState?setTimeout(r,1):o||(document.addEventListener("DOMContentLoaded",r,!1),window.addEventListener("load",r,!1),o=!0))}}(jaxon.utils.dom),function(e){e.doubleQuotes=e=>void 0!==e&&e.replace(new RegExp("'","g"),'"'),e.singleQuotes=e=>void 0!==e&&e.replace(new RegExp('"',"g"),"'"),e.stripOnPrefix=e=>0===(e=e.toLowerCase()).indexOf("on")?e.replace(/on/,""):e,e.addOnPrefix=e=>0!==(e=e.toLowerCase()).indexOf("on")?"on"+e:e,String.prototype.supplant||(String.prototype.supplant=function(e){return this.replace(/\{([^{}]*)\}/g,((t,n)=>{const o=e[n],r=typeof o;return"string"===r||"number"===r?o:t}))})}(jaxon.utils.string),function(e){e.of=e=>Object.prototype.toString.call(e).slice(8,-1).toLowerCase(),e.isObject=t=>"object"===e.of(t),e.isArray=t=>"array"===e.of(t),e.isString=t=>"string"===e.of(t),e.isFunction=t=>"function"===e.of(t),e.toInt=e=>parseInt(e),Array.prototype.top||(Array.prototype.top=function(){return this.length>0?this[this.length-1]:void 0})}(jaxon.utils.types),function(e,t,n){e.initialize=e=>{(e=>{if(!e.upload)return!1;e.upload={id:e.upload,input:null,form:null};const o=t.$(e.upload.id);return o?"file"!==o.type?(n.log("The upload input field with id "+e.upload.id+" is not of type file"),!1):0===o.files.length?(n.log("There is no file selected for upload in input field with id "+e.upload.id),!1):void 0===o.name?(n.log("The upload input field with id "+e.upload.id+" has no name attribute"),!1):(e.upload.input=o,e.upload.form=o.form,!0):(n.log("Unable to find input field for file upload with id "+e.upload.id),!1)})(e)||(e.postHeaders["content-type"]=e.contentType)}}(jaxon.utils.upload,jaxon.utils.dom,console),function(e,t){const n={},o="main",r=["dom.assign","dom.append","dom.prepend","dom.replace"],a=["innerHTML","outerHTML"];e.changed=(e,t,n)=>e&&a.some((e=>e===n))&&r.some((e=>e===t));const s=(e,n,o)=>{if(!n.hasAttribute("jxn-func"))return;const r=n.getAttribute(o).trim(),a=JSON.parse(n.getAttribute("jxn-func"));if(!n.hasAttribute("jxn-select"))return void t.setEventHandler({event:r,func:a},{target:e});const s=n.getAttribute("jxn-select").trim();e.querySelectorAll(`:scope ${s}`).forEach((e=>{t.setEventHandler({event:r,func:a},{target:e})}))};e.process=(e=document)=>{(e=>{e.querySelectorAll(":scope [jxn-target]").forEach((e=>{e.querySelectorAll(":scope [jxn-event]").forEach((t=>{t.parentNode===e&&(s(e,t,"jxn-event"),e.removeChild(t))})),e.removeAttribute("jxn-target")}))})(e),(e=>{e.querySelectorAll(":scope [jxn-on]").forEach((e=>{s(e,e,"jxn-on"),e.removeAttribute("jxn-on"),e.removeAttribute("jxn-func"),e.removeAttribute("jxn-select")}))})(e),(e=>{e.querySelectorAll(":scope [jxn-click]").forEach((e=>{const n=JSON.parse(e.getAttribute("jxn-click"));t.setEventHandler({event:"click",func:n},{target:e}),e.removeAttribute("jxn-click")}))})(e),(e=>{e.querySelectorAll(":scope [jxn-show]").forEach((e=>{const t=e.getAttribute("jxn-show"),r=e.getAttribute("jxn-item")??o;n[`${t}_${r}`]=e,e.removeAttribute("jxn-show"),e.removeAttribute("jxn-item")}))})(e)},e.node=(e,t=o)=>n[`${e}_${t}`]??null}(jaxon.parser.attr,jaxon.cmd.event),function(e,t,n,o,r,a){const s={eq:(e,t)=>e==t,teq:(e,t)=>e===t,ne:(e,t)=>e!=t,nte:(e,t)=>e!==t,gt:(e,t)=>e>t,ge:(e,t)=>e>=t,lt:(e,t)=>ee<=t},i=(e,t,n,r)=>{if(!e)return;const a=o.getInnerObject(t,e);return a?(void 0!==n&&(a.node[a.attr]=d(n,r)),a.node[a.attr]):void 0},c={select:({_name:e,mode:n,context:o=null},r)=>{const{context:{target:a,event:s}}=r;switch(e){case"this":return"js"===n?a:t.select(a);case"event":return s;case"window":return window;default:return t.select(e,o)}},event:({_name:e,func:t},n)=>{const{value:o,context:r}=n;return o.on(e,(e=>j(t,{...n,context:{...r,event:e,target:e.currentTarget}}))),o},func:({_name:e,args:t=[]},n)=>{const{context:r}=n,a=o.findFunction(e);return a?a.apply(r,p(t,n)):void 0},method:({_name:e,args:t=[]},{value:n})=>{const r=o.findFunction(e,n);return r?r.apply(n,p(t,n)):"toInt"===e?a.toInt(n):void 0},attr:({_name:e,value:t},n)=>{const{value:o,context:{target:r}}=n;return i(o||r,e,t,n)},gvar:({_name:e,value:t},n)=>i(window,e,t,n)},l={comparator:()=>!1,command:e=>{console.error("Unexpected command: "+JSON.stringify({call:e}))}},u=e=>a.isObject(e)&&!!e._type,d=(e,t)=>{if(!u(e))return e;const{_type:n,_name:a}=e;switch(n){case"form":return r.getValues(a);case"html":return o.$(a).innerHTML;case"input":return o.$(a).value;case"checked":return o.$(a).checked;case"expr":return j(e,t);case"_":return"this"===a?t.value:void 0;default:return}},p=(e,t)=>e.map((e=>d(e,t))),m=(e,t)=>{const n=u(e)?c[e._type]??l.command:l.command;return t.value=n(e,t),t.value};e.execCall=(e,t)=>m(e,{context:{target:window,...t}});const f=(e,t)=>e.reduce(((e,n)=>void 0===e?void 0:m(n,t)),null),x=({str:e,args:t},n)=>e.supplant(t.reduce(((e,t,o)=>({...e,[o+1]:d(t,n)})),{}));e.makePhrase=(e,t)=>x(e,{context:{target:window,...t}});const g=(e,t)=>!!e&&n.alert({...e,text:x(e.phrase,t)}),j=(e,t)=>{const{calls:o,question:r,condition:a,message:i}=e;if(r)((e,t,o,r)=>{n.confirm({...e,text:x(e.phrase,r)},(()=>f(o,r)),(()=>g(t,r)))})(r,i,o,t);else{if(!a)return f(o,t);((e,t,n,o)=>{const[r,a,i]=e;(s[r]??l.comparator)(d(a,o),d(i,o))?f(n,o):g(t,o)})(a,i,o,t)}};e.execExpr=(e,t)=>a.isObject(e)&&j(e,{value:null,context:{target:window,...t}})}(jaxon.parser.call,jaxon.parser.query,jaxon.dialog.lib,jaxon.utils.dom,jaxon.utils.form,jaxon.utils.types),function(e,t){e.jq=null,e.init=t=>{t&&(t.prototype.val=function(){const e=this.first();if(e)return e.options&&e.multiple?[...e.options].filter((e=>e.selected)).map((e=>e.value)):e.value},t.prototype.show=function(e){return this.each((t=>{t.style&&(t.style.display=e??"block")})),this},t.prototype.hide=function(){return this.each((e=>{e.style&&(e.style.display="none")})),this}),e.jq=t},e.init(t),e.select=(t,n=null)=>n?e.jq(t,n):e.jq(t)}(jaxon.parser.query,window.u),function(e,t,n){const o=(e,n)=>{!t.has(e)&&console.warn(`Unable to find a Jaxon dialog library with name "${e}".`);const o=t.get(e);return!o[n]&&console.error(`The chosen Jaxon dialog library doesn't implement the "${n}" function.`),o};e.showMessage=({lib:e,type:t,title:r,phrase:a})=>{const s=o(e,"alert");return s.alert&&s.alert(t,n.makePhrase(a),r),!0},e.showModal=({lib:e,dialog:{title:t,content:n,buttons:r,options:a}})=>{const s=o(e,"show");return s.show&&s.show(t,n,r,a),!0},e.hideModal=({lib:e})=>{const t=o(e,"hide");return t.hide&&t.hide(),!0}}(jaxon.dialog.cmd,jaxon.dialog.lib,jaxon.parser.call),function(e,t,n,o,r){const a={yes:"Yes",no:"No"},s={};e.has=e=>!!s[e],e.get=e=>s[e]??s.default,e.alert=({lib:t,type:n,title:o="",text:r})=>e.get(t).alert(n,r,o),e.confirm=({lib:t,title:n="",text:o},r,a)=>e.get(t).confirm(o,n,r,a),e.register=(e,i)=>{s[e]={},i(s[e],{types:t,dom:n,js:o,jq:r,labels:a})},e.register("default",(e=>{e.alert=(e,t,n)=>alert(n?`${n}
${t}`:t),e.confirm=(e,t,n,o)=>{confirm(t?`${t}
${e}`:e)?n():o&&o()}}))}(jaxon.dialog.lib,jaxon.utils.types,jaxon.dom,jaxon.parser.call,window.jQuery),function(e,t,n){const o=e=>({timer:null,delay:e}),r=["onInitialize","onProcessParams","onPrepare","onRequest","onResponseDelay","onExpiration","beforeResponseProcessing","onFailure","onRedirect","onSuccess","onComplete"];e.create=(e,t)=>{const a={timers:{onResponseDelay:o(e??n.defaultResponseDelayTime),onExpiration:o(t??n.defaultExpirationTime)}};return r.forEach((e=>a[e]=null)),a},e.callback=e.create(),e.initCallbacks=n=>{if(t.isObject(n.callback)&&(n.callback=[n.callback]),t.isArray(n.callback))return void n.callback.forEach((e=>{void 0===e.timers&&(e.timers={})}));let o=!1;const a=e.create();r.forEach((e=>{void 0!==n[e]&&(a[e]=n[e],o=!0,delete n[e])})),n.callback=o?[a]:[]};const a=({callback:t=[]})=>[e.callback,...t];e.execute=(e,n)=>a(e).forEach((o=>((e,n,o)=>{const r=e[n];if(!r||!t.isFunction(r))return;const a=e.timers[n];a?a.timer=setTimeout((()=>r(o)),a.delay):r(o)})(o,n,e)));e.clearTimer=(e,t)=>a(e).forEach((e=>((e,t)=>{const n=e.timers[t];void 0!==n&&null!==n.timer&&clearTimeout(n.timer)})(e,t)))}(jaxon.ajax.callback,jaxon.utils.types,jaxon.config),function(e,t,n,o,r,a,s){const i={};e.q={send:r.create(t.requestQueueSize),recv:r.create(2*t.requestQueueSize)},e.register=(e,t,n="")=>i[e]={desc:n,func:t},e.unregister=e=>{const t=i[e];return t?(delete i[e],t.func):null},e.isRegistered=({name:e})=>void 0!==e&&void 0!==i[e];const c=t=>{const{command:{name:n,args:r={},component:s={}}}=t;return!e.isRegistered({name:n})||(s.name&&(t.target=o.node(s.name,s.item),t.target||console.error("Unable to find component node: "+JSON.stringify(s))),!t.target&&r.id&&(t.target=a.$(r.id),t.target||console.error("Unable to find node with id : "+r.id)),((e,t,n)=>{const{func:o,desc:r}=i[e];n.command.desc=r,o(t,n)})(n,r,t),o.changed(t.target,n,r.attr)&&o.process(t.target),!0)},l=e=>{try{return c(e),!0}catch(e){console.log(e)}return!1};e.processCommands=e=>{let t=null;for(;!e.paused&&null!==(t=r.pop(e));)if(!l(t))return},e.popAsyncRequest=e=>r.empty(e)||"synchronous"===r.peek(e).mode?null:r.pop(e),e.sleep=({duration:t},{oQueue:n})=>(n.paused=!0,setTimeout((()=>{n.paused=!1,e.processCommands(n)}),100*t),!0);const u=(t,n=0)=>{for(;n>0&&t.count>1&&null!==r.pop(t);)--n;t.paused=!1,e.processCommands(t)};e.confirm=({count:e,question:{lib:t,title:o,phrase:r}},{oQueue:a})=>{const i=s.get(t);return a.paused=!0,i.confirm(n.makePhrase(r),o,(()=>u(a)),(()=>u(a,e))),!0}}(jaxon.ajax.handler,jaxon.config,jaxon.parser.call,jaxon.parser.attr,jaxon.utils.queue,jaxon.utils.dom,jaxon.dialog.lib),function(e,t,n){const o={};e.setBag=(e,t)=>o[e]=t,e.setBags=t=>Object.keys(t).forEach((n=>e.setBag(n,t[n]))),e.clearBag=e=>delete o[e];const r=({func:e,parameters:r,bags:a=[]},s)=>{const i=new Date;var c;s("jxnr",i.getTime()),s("jxnv",`${n.major}.${n.minor}.${n.patch}`),Object.keys(e).forEach((t=>s(t,encodeURIComponent(e[t])))),[...r].forEach((e=>s("jxnargs[]",(e=>{if(null==e)return"*";const n=t.of(e);if("object"===n||"array"===n)try{return encodeURIComponent(JSON.stringify(e))}catch(t){e=""}return e=encodeURIComponent(e),"string"===n?"S"+e:"boolean"===n?"B"+e:"number"===n?"N"+e:e})(e)))),a.length>0&&s("jxnbags",encodeURIComponent((c=a,JSON.stringify(c.reduce(((e,t)=>({...e,[t]:o[t]??"*"})),{})))))};e.process=e=>{e.requestURI=e.URI,e.requestData=(({upload:e})=>e&&e.ajax&&e.input)(e)?(e=>{const t=new FormData;r(e,((e,n)=>t.append(e,n)));const n=e.upload.input;return n.files&&n.files.forEach((e=>t.append(n.name,e))),t})(e):(e=>{const t=[];return r(e,((e,n)=>t.push(e+"="+n))),"POST"===e.method?t.join("&"):(e.requestURI+=(-1===e.requestURI.indexOf("?")?"?":"&")+t.join("&"),"")})(e)}}(jaxon.ajax.parameters,jaxon.utils.types,jaxon.version),function(e,t,n,o,r,a,s,i){e.setCsrf=e=>{const n=t.baseDocument.getElementsByTagName("meta")||[];for(const o of n)if(o.getAttribute("name")===e){const e=o.getAttribute("content");return void(e&&(t.postHeaders["X-CSRF-TOKEN"]=e))}};const c=e=>{--e.requestRetry,r.execute(e,"onPrepare"),e.httpRequestOptions={...t.httpRequestOptions,method:e.method,headers:{...e.commonHeaders,..."POST"===e.method?e.postHeaders:e.getHeaders},body:e.requestData},e.responseConverter=t=>(e.response=t,e.convertResponseToJson?t.json():t.text()),e.responseHandler=t=>{e.responseContent=t,i.empty(a.q.send)||"synchronous"===e.mode?o.received(e):i.push(a.q.recv,e)},e.errorHandler=t=>{throw r.execute(e,"onFailure"),t},e.responseProcessor||(e.responseProcessor=o.jsonProcessor)},l=e=>{e.status.onRequest(),r.execute(e,"onResponseDelay"),r.execute(e,"onExpiration"),r.execute(e,"onRequest"),e.cursor.onWaiting(),e.status.onWaiting(),fetch(e.requestURI,e.httpRequestOptions).then(e.responseConverter).then(e.responseHandler).catch(e.errorHandler)};e.complete=e=>{if(r.execute(e,"onComplete"),e.cursor.onComplete(),e.status.onComplete(),(e=>{delete e.func,delete e.URI,delete e.requestURI,delete e.requestData,delete e.requestRetry,delete e.httpRequestOptions,delete e.responseHandler,delete e.responseConverter,delete e.responseContent,delete e.response,delete e.errorHandler})(e),"synchronous"===e.mode){for(i.pop(a.q.send),i.pop(a.q.recv);null!==(recvRequest=a.popAsyncRequest(a.q.recv));)o.received(recvRequest);for(;null!==(nextRequest=a.popAsyncRequest(a.q.send));)l(nextRequest);null!==(nextRequest=i.peek(a.q.send))&&l(nextRequest)}},e.abort=t=>{t.aborted=!0,e.complete(t)},e.execute=(e,o)=>{if(void 0===e)return;const u=o??{};for(u.func=e,(e=>{t.setRequestOptions(e),r.initCallbacks(e),r.execute(e,"onInitialize"),e.status=e.statusMessages?t.status.update:t.status.dontUpdate,e.cursor=e.waitCursor?t.cursor.update:t.cursor.dontUpdate,s.initialize(e),e.submit=i.empty(a.q.send),"synchronous"===e.mode&&(i.push(a.q.send,e),i.push(a.q.recv,e)),e.submit||i.push(a.q.send,e)})(u),r.execute(u,"onProcessParams"),n.process(u);u.requestRetry>0;)try{return c(u),void(u.submit&&l(u))}catch(e){if(r.execute(u,"onFailure"),u.requestRetry<=0)throw e}}}(jaxon.ajax.request,jaxon.config,jaxon.ajax.parameters,jaxon.ajax.response,jaxon.ajax.callback,jaxon.ajax.handler,jaxon.utils.upload,jaxon.utils.queue),function(e,t,n,o,r,a,s){const i=[0,200],c=[400,401,402,403,404,500,501,502,503],l=[301,302,307];e.jsonProcessor=e=>i.indexOf(e.response.status)>=0?(r.execute(e,"onSuccess"),(e=>{if(!s.isObject(e.responseContent))return;const{debug:{message:t}={},jxn:{commands:n=[]}={}}=e.responseContent;e.status.onProcessing(),t&&console.log(t);let o=0;n.forEach((t=>a.push(e.oQueue,{command:{name:"*unknown*",...t},sequence:o++,request:e,oQueue:e.oQueue}))),a.push(e.oQueue,{command:{name:"response.complete",fullName:"Response Complete"},sequence:o,request:e,oQueue:e.oQueue})})(e),n.processCommands(e.oQueue),!0):l.indexOf(e.response.status)>=0?(r.execute(e,"onRedirect"),o.complete(e),window.location=e.response.headers.get("location"),!0):!(c.indexOf(e.response.status)>=0)||(r.execute(e,"onFailure"),o.complete(e),!0),e.received=e=>e.aborted?null:(e.oQueue=a.create(t.commandQueueSize),r.clearTimer(e,"onExpiration"),r.clearTimer(e,"onResponseDelay"),r.execute(e,"beforeResponseProcessing"),e.responseProcessor(e))}(jaxon.ajax.response,jaxon.config,jaxon.ajax.handler,jaxon.ajax.request,jaxon.ajax.callback,jaxon.utils.queue,jaxon.utils.types),function(e,t,n,o){e.assign=({attr:e,value:n},{target:o})=>{const r=t.getInnerObject(e,o);return null!==r&&(r.node[r.attr]=n),!0},e.append=({attr:e,value:n},{target:o})=>{const r=t.getInnerObject(e,o);return null!==r&&(r.node[r.attr]=r.node[r.attr]+n),!0},e.prepend=({attr:e,value:n},{target:o})=>{const r=t.getInnerObject(e,o);return null!==r&&(r.node[r.attr]=n+r.node[r.attr]),!0};e.replace=({attr:e,search:o,replace:r},{target:a})=>{const s=t.getInnerObject(e,a);return null!==s&&((e,o,r)=>{const a=n.isFunction(e.node[e.attr]),s=(a?e.node[e.attr].join(""):e.node[e.attr]).replaceAll(o,r);(a||t.willChange(e.node,e.attr,s))&&(e.node[e.attr]=s)})(s,"innerHTML"===e?t.getBrowserHTML(o):o,r),!0},e.clear=(t,n)=>(e.assign({...t,value:""},n),!0),e.remove=(e,{target:t})=>(t.remove(),!0);const r=(e,t)=>{const n=o.createElement(e);return n.setAttribute("id",t),n};e.create=({tag:{id:e,name:t}},{target:n})=>(n&&n.appendChild(r(t,e)),!0),e.insertBefore=({tag:{id:e,name:t}},{target:n})=>(n&&n.parentNode&&n.parentNode.insertBefore(r(t,e),n),!0),e.insertAfter=({tag:{id:e,name:t}},{target:n})=>(n&&n.parentNode&&n.parentNode.insertBefore(r(t,e),n.nextSibling),!0)}(jaxon.cmd.body,jaxon.utils.dom,jaxon.utils.types,jaxon.config.baseDocument),function(e,t,n,o){e.addHandler=({event:e,func:t},{target:r})=>(r.addEventListener(o.stripOnPrefix(e),n.findFunction(t),!1),!0),e.removeHandler=({event:e,func:t},{target:r})=>(r.removeEventListener(o.stripOnPrefix(e),n.findFunction(t),!1),!0);const r=(e,n,o)=>t.execExpr({_type:"expr",...n},{event:e,target:o});e.addEventHandler=({event:e,func:t,options:n},{target:a})=>(a.addEventListener(o.stripOnPrefix(e),(e=>r(e,t,a)),n??!1),!0),e.setEventHandler=({event:e,func:t},{target:n})=>(n[o.addOnPrefix(e)]=e=>r(e,t,n),!0)}(jaxon.cmd.event,jaxon.parser.call,jaxon.utils.dom,jaxon.utils.string),function(e,t,n,o){e.call=({func:e,args:n},o)=>(t.execCall({_type:"func",_name:e,args:n},o),!0),e.exec=({expr:e},n)=>(t.execExpr(e,n),!0),e.redirect=({url:e,delay:t})=>t<=0?(window.location=e,!0):(window.setTimeout((()=>window.location=e),1e3*t),!0),e.setDatabag=({values:e})=>(n.setBags(e),!0);const r=(e,t)=>e.map((e=>o.isObject(e)&&"page"===e._type?parseInt(t.parentNode.getAttribute("data-page")):e));e.paginate=({func:e},{target:n})=>{const o=n.querySelectorAll("li.enabled > a"),{args:a}=e;return o.forEach((n=>n.addEventListener("click",(()=>t.execCall({...e,_type:"func",args:r(a,n)}))))),!0}}(jaxon.cmd.script,jaxon.parser.call,jaxon.ajax.parameters,jaxon.utils.types),jaxon.request=jaxon.ajax.request.execute,jaxon.register=jaxon.ajax.handler.register,jaxon.$=jaxon.utils.dom.$,jaxon.setCsrf=jaxon.ajax.request.setCsrf,jaxon.jq=jaxon.parser.query.jq,jaxon.exec=jaxon.parser.call.execExpr,jaxon.confirm=jaxon.dialog.lib.confirm,jaxon.alert=jaxon.dialog.lib.alert,jaxon.dom.ready=jaxon.utils.dom.ready,jaxon.getFormValues=jaxon.utils.form.getValues,jaxon.setBag=jaxon.ajax.parameters.setBag,jaxon.processCustomAttrs=()=>jaxon.parser.attr.process(),jaxon.isLoaded=!0,function(e,t,n,o){e("response.complete",((e,{request:t})=>(n.request.complete(t),!0)),"Response complete"),e("dom.assign",t.body.assign,"Dom::Assign"),e("dom.append",t.body.append,"Dom::Append"),e("dom.prepend",t.body.prepend,"Dom::Prepend"),e("dom.replace",t.body.replace,"Dom::Replace"),e("dom.clear",t.body.clear,"Dom::Clear"),e("dom.remove",t.body.remove,"Dom::Remove"),e("dom.create",t.body.create,"Dom::Create"),e("dom.insert.before",t.body.insertBefore,"Dom::InsertBefore"),e("dom.insert.after",t.body.insertAfter,"Dom::InsertAfter"),e("script.call",t.script.call,"Script::CallJsFunction"),e("script.exec",t.script.exec,"Script::ExecJsonExpression"),e("script.redirect",t.script.redirect,"Script::Redirect"),e("script.sleep",n.handler.sleep,"Handler::Sleep"),e("script.confirm",n.handler.confirm,"Handler::Confirm"),e("handler.event.set",t.event.setEventHandler,"Script::SetEventHandler"),e("handler.event.add",t.event.addEventHandler,"Script::AddEventHandler"),e("handler.add",t.event.addHandler,"Script::AddHandler"),e("handler.remove",t.event.removeHandler,"Script::RemoveHandler"),e("script.debug",(({message:e})=>(console.log(e),!0)),"Debug message"),e("pg.paginate",t.script.paginate,"Paginator::Paginate"),e("databag.set",t.script.setDatabag,"Databag:SetValues"),e("databag.clear",t.script.clearDatabag,"Databag:ClearValue"),e("dialog.message",o.cmd.showMessage,"Dialog:ShowMessage"),e("dialog.modal.show",o.cmd.showModal,"Dialog:ShowModal"),e("dialog.modal.hide",o.cmd.hideModal,"Dialog:HideModal")}(jaxon.register,jaxon.cmd,jaxon.ajax,jaxon.dialog); \ No newline at end of file diff --git a/dist/jaxon.module.js b/dist/jaxon.module.js index 22368dd..4a40bb9 100644 --- a/dist/jaxon.module.js +++ b/dist/jaxon.module.js @@ -1449,14 +1449,15 @@ window.jaxon = jaxon; if (!el.options || !el.multiple) { return el.value; } - return el.options + // Convert from NodeList to array, so we can call the filter method. + return [...el.options] .filter((option) => option.selected) .map((option) => option.value); }; - selector.prototype.show = function() { + selector.prototype.show = function(display) { this.each(node => { if (node.style) { - node.style.visibility = 'visible'; + node.style.display = display ?? 'block'; } }); return this; @@ -1464,7 +1465,7 @@ window.jaxon = jaxon; selector.prototype.hide = function() { this.each(node => { if (node.style) { - node.style.visibility = 'hidden'; + node.style.display = 'none'; } }); return this; diff --git a/src/parser/query.js b/src/parser/query.js index fd0b081..c01a811 100644 --- a/src/parser/query.js +++ b/src/parser/query.js @@ -28,14 +28,15 @@ if (!el.options || !el.multiple) { return el.value; } - return el.options + // Convert from NodeList to array, so we can call the filter method. + return [...el.options] .filter((option) => option.selected) .map((option) => option.value); }; - selector.prototype.show = function() { + selector.prototype.show = function(display) { this.each(node => { if (node.style) { - node.style.visibility = 'visible'; + node.style.display = display ?? 'block'; } }); return this; @@ -43,7 +44,7 @@ selector.prototype.hide = function() { this.each(node => { if (node.style) { - node.style.visibility = 'hidden'; + node.style.display = 'none'; } }); return this;