selectyc 0.0.19 → 0.0.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/selectyc.js CHANGED
@@ -49,20 +49,20 @@ class a {
49
49
  class h {
50
50
  #t = [];
51
51
  #u;
52
- #m = [];
52
+ #p = [];
53
53
  #i;
54
- #g;
54
+ #f;
55
55
  #s;
56
56
  #e;
57
57
  #a;
58
58
  #h;
59
- #p;
60
- #o;
59
+ #m;
60
+ #d;
61
61
  #w;
62
62
  #S;
63
63
  #n = !1;
64
64
  #y = !1;
65
- #f = !1;
65
+ #g = !1;
66
66
  #E = "";
67
67
  #D = '<svg class="w-5 h-5 text-gray-900 dark:text-gray-400" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m19 9-7 7-7-7"/></svg>';
68
68
  constructor(t) {
@@ -83,7 +83,7 @@ class h {
83
83
  return this.clearButton = !0, this;
84
84
  }
85
85
  setSelectedOptions(t) {
86
- this.#t = t, this.#d(t);
86
+ this.#t = t, this.#r(t);
87
87
  }
88
88
  getSelectedOptions() {
89
89
  return this.#t;
@@ -126,7 +126,7 @@ class h {
126
126
  }
127
127
  cleanSelection() {
128
128
  const t = this.#t;
129
- this.#t = [], this.#d(t);
129
+ this.#t = [], this.#r(t);
130
130
  }
131
131
  #L() {
132
132
  this.#N(), this.#s.addEventListener("click", (t) => {
@@ -155,7 +155,7 @@ class h {
155
155
  const i = document.getElementById(this.id), n = document.createElement("input");
156
156
  n.name = i.name, n.setAttribute("data-id", i.id), this.rootClassName !== "" && (n.className = i.className), n.style.display = "none";
157
157
  let l = i.parentNode;
158
- t.appendChild(n), l.replaceChild(t, i), this.#u = n, this.#g = s, this.#i = e, this.#s = this.#i.querySelector(".selected-items"), !this.isMultiple && this.#t.length > 0 && (this.#u.value = this.#t[0].value);
158
+ t.appendChild(n), l.replaceChild(t, i), this.#u = n, this.#f = s, this.#i = e, this.#s = this.#i.querySelector(".selected-items"), !this.isMultiple && this.#t.length > 0 && (this.#u.value = this.#t[0].value);
159
159
  }
160
160
  #O(t) {
161
161
  const e = document.createElement("input");
@@ -165,7 +165,7 @@ class h {
165
165
  }
166
166
  #I() {
167
167
  const t = document.createElement("input");
168
- return t.type = "text", t.required = this.#y, t.tabIndex = -1, t.style.position = "absolute", t.style.opacity = "0", t.style.pointerEvents = "none", t.style.height = "0", t.style.width = "0", t.style.left = "50%", t.value = this.#t.length === 0 ? "" : this.#t[0].text, this.#p = t, t;
168
+ return t.type = "text", t.required = this.#y, t.tabIndex = -1, t.style.position = "absolute", t.style.opacity = "0", t.style.pointerEvents = "none", t.style.height = "0", t.style.width = "0", t.style.left = "50%", t.value = this.#t.length === 0 ? "" : this.#t[0].text, this.#m = t, t;
169
169
  }
170
170
  #M() {
171
171
  const t = document.createElement("div");
@@ -179,7 +179,7 @@ class h {
179
179
  i && clearTimeout(i), i = setTimeout(() => {
180
180
  this.#_(n);
181
181
  }, 70);
182
- }), e.appendChild(s), this.#e = s, this.#o = e, t.appendChild(e), t;
182
+ }), e.appendChild(s), this.#e = s, this.#d = e, t.appendChild(e), t;
183
183
  }
184
184
  #R() {
185
185
  const t = document.createElement("input");
@@ -187,7 +187,7 @@ class h {
187
187
  this.filter = t.value, this.#e.innerHTML = "", this.filter = t.value, this.#b();
188
188
  }), this.#a = t, t;
189
189
  }
190
- #r(t) {
190
+ #o(t) {
191
191
  const e = document.createElement("div");
192
192
  e.className = "select-option", e.setAttribute("data-value", t.id), e.textContent = t.text, this.#e.appendChild(e), e.addEventListener("click", () => {
193
193
  t.id !== "sin_resultados" && (this.#A(t.text, t.id), this.onSelect !== void 0 && this.onSelect(t.id, this), this.#l());
@@ -201,7 +201,7 @@ class h {
201
201
  const s = e.text, i = this.#c(e.value);
202
202
  this.isMultiple ? this.#t.push({ value: i, text: s }) : this.#t[0] = { value: i, text: s };
203
203
  }
204
- this.#m.push({ id: this.#c(e.value), text: e.text });
204
+ this.#p.push({ id: this.#c(e.value), text: e.text }), this.data = this.#p;
205
205
  });
206
206
  }
207
207
  #v() {
@@ -209,11 +209,11 @@ class h {
209
209
  return;
210
210
  this.#s.classList.remove(`round${this.bodyRound}`), this.#s.classList.add(`round${this.bodyRound}t`);
211
211
  const t = this.#i.getBoundingClientRect();
212
- this.#o.style.position = "fixed", this.#o.style.top = t.bottom + "px", this.#o.style.left = t.left + "px", this.#e.style.width = t.width + "px", this.#e.style.display = "block", this.searchInputActive && (this.#a.style.display = "block", this.#a.style.width = t.width + "px", this.#a.focus()), this.#b(), this.#n = !0;
212
+ this.#d.style.position = "fixed", this.#d.style.top = t.bottom + "px", this.#d.style.left = t.left + "px", this.#e.style.width = t.width + "px", this.#e.style.display = "block", this.searchInputActive && (this.#a.style.display = "block", this.#a.style.width = t.width + "px", this.#a.focus()), this.#b(), this.#n = !0;
213
213
  }
214
214
  repositionDropdown() {
215
215
  const t = this.#i.getBoundingClientRect(), s = this.#i.getBoundingClientRect().top + window.scrollY, i = t.y - this.#w.y;
216
- console.log(s), this.#o.style.top = i + "px";
216
+ console.log(s), this.#d.style.top = i + "px";
217
217
  }
218
218
  #l() {
219
219
  this.#n && (this.#e.innerHTML = "", this.#e.style.display = "none", this.searchInputActive && (this.#a.style.display = "none"), this.#s.classList.add(`round${this.bodyRound}`), this.#n = !1);
@@ -227,15 +227,15 @@ class h {
227
227
  t = { ...t, ...i };
228
228
  } else this.bodyData !== null && (t = { ...t, ...this.bodyData });
229
229
  const e = await a.make(this.RS).addData(t).setMethod("POST").go(), s = Array.isArray(e) ? e : e.data;
230
- return this.data = Array.from(new Map([...this.#m, ...s].map((i) => [i.id, i])).values()), this.data;
230
+ return this.data = Array.from(new Map([...this.#p, ...s].map((i) => [i.id, i])).values()), this.data;
231
231
  }
232
232
  async #b() {
233
- this.#r({ id: "loading", text: "cargando ..." }), this.records = 10 + this.#t.length, this.#f = !1;
233
+ this.#o({ id: "loading", text: "cargando ..." }), this.records = 10 + this.#t.length, this.#g = !1;
234
234
  let t = await this.#C();
235
235
  const e = this.#t.map((s) => s.value);
236
236
  this.#e.lastChild.dataset.value === "loading" && this.#e.removeChild(this.#e.lastChild), t.forEach((s) => {
237
- s.text.toLowerCase().includes(this.#E.toLowerCase()) && !e.includes(s.id) && this.#r(s);
238
- }), this.#e.hasChildNodes() || this.#r({ id: "sin_resultados", text: "sin resultados ..." });
237
+ s.text.toLowerCase().includes(this.#E.toLowerCase()) && !e.includes(s.id) && this.#o(s);
238
+ }), this.#e.hasChildNodes() || this.#o({ id: "sin_resultados", text: "sin resultados ..." });
239
239
  }
240
240
  async #T() {
241
241
  const t = this.#t.map((l) => l.value);
@@ -245,17 +245,17 @@ class h {
245
245
  this.#e.lastChild.dataset.value === "loading" && this.#e.removeChild(this.#e.lastChild);
246
246
  const n = this.#e.lastChild.dataset.value;
247
247
  i.forEach((l) => {
248
- l.text.toLowerCase().includes(e.toLowerCase()) && !t.includes(l.id) && !s.includes(l.id) && this.#r(l);
249
- }), this.#f = n === this.#e.lastChild.dataset.value;
248
+ l.text.toLowerCase().includes(e.toLowerCase()) && !t.includes(l.id) && !s.includes(l.id) && this.#o(l);
249
+ }), this.#g = n === this.#e.lastChild.dataset.value;
250
250
  }
251
251
  #A(t, e) {
252
- this.#t.find((i) => i.value === e) || (this.isMultiple || (this.#t = []), this.#t.push({ text: t, value: e })), this.#d(e);
252
+ this.#t.find((i) => i.value === e) || (this.isMultiple || (this.#t = []), this.#t.push({ text: t, value: e })), this.#r(e);
253
253
  }
254
- #d(t) {
254
+ #r(t) {
255
255
  this.onChange !== void 0 && this.onChange(t, this), this.isMultiple ? this.#x() : this.#k();
256
256
  }
257
257
  #k() {
258
- this.#h.value = null, this.#p.value = null, this.#h.value = this.#t.length > 0 ? this.#t[0].text : null, this.#p.value = this.#t.length > 0 ? this.#t[0].text : null, this.#h.placeholder = this.singleLabel, this.#u.value = this.#t.length > 0 ? this.#t[0].value : null;
258
+ this.#h.value = null, this.#m.value = null, this.#h.value = this.#t.length > 0 ? this.#t[0].text : null, this.#m.value = this.#t.length > 0 ? this.#t[0].text : null, this.#h.placeholder = this.singleLabel, this.#u.value = this.#t.length > 0 ? this.#t[0].value : null;
259
259
  const t = this.#h.parentNode, e = t.firstChild;
260
260
  if (e.className === "remove-tag" && e.remove(), !this.clearButton || this.#t.length <= 0)
261
261
  return;
@@ -273,18 +273,18 @@ class h {
273
273
  });
274
274
  }
275
275
  #H(t) {
276
- this.#t = this.#t.filter((e) => this.#c(e.value) !== this.#c(t)), this.#d(t);
276
+ this.#t = this.#t.filter((e) => this.#c(e.value) !== this.#c(t)), this.#r(t);
277
277
  }
278
278
  #_(t) {
279
279
  const { scrollTop: e, scrollHeight: s, clientHeight: i } = this.#e;
280
- t.target.lastChild !== null && (t.target.lastChild.dataset.value === "loading" || this.#f || e + (i + 1) >= s && (this.#r({ id: "loading", text: "cargando ..." }), this.#T()));
280
+ t.target.lastChild !== null && (t.target.lastChild.dataset.value === "loading" || this.#g || e + (i + 1) >= s && (this.#o({ id: "loading", text: "cargando ..." }), this.#T()));
281
281
  }
282
282
  #c(t) {
283
283
  return !isNaN(t) && !isNaN(parseFloat(t)) ? parseInt(t) : t;
284
284
  }
285
285
  async render() {
286
286
  const t = document.getElementById(this.id), e = t === null ? !1 : t.outerHTML.includes("<select");
287
- this.#g === void 0 || e ? this.#L() : this.#d();
287
+ this.#f === void 0 && t !== null || e ? this.#L() : this.#f !== void 0 && this.#r();
288
288
  }
289
289
  }
290
290
  export {
@@ -1 +1 @@
1
- (function(h,a){typeof exports=="object"&&typeof module<"u"?a(exports):typeof define=="function"&&define.amd?define(["exports"],a):(h=typeof globalThis<"u"?globalThis:h||self,a(h.selectyc={}))})(this,function(h){"use strict";class a{constructor(t){this.route=t}static make(t){return new a(t)}setMethod(t){return this.method=t,this}getMethod(){return this.method===void 0?"POST":this.method}setData(t){return this.data=t,this}addData(t){if(this.data===void 0)return this.setData(t);for(const e in t)this.data[e]=t[e];return this}setFun(t){return this.fun=t,this}async go(){try{const t={method:this.getMethod(),headers:{"X-CSRF-TOKEN":window.CSRF_TOKEN,Accept:"application/json"}};this.data!==void 0&&(t.body=this.data,Object.prototype.toString.call(this.data)!=="[object FormData]"&&(t.body=JSON.stringify(this.data),t.headers["Content-Type"]="application/json"));const e=await fetch(this.route,t);if(!e.ok){const s=await e.json();throw new Error(s.message)}return this.fun===void 0?await e.json():await this.fun(e)}catch(t){window.toastNotification.setType(!1).show(t.message)}}}class o{#t=[];#u;#m=[];#i;#g;#s;#e;#a;#h;#p;#o;#y;#x;#n=!1;#w=!1;#f=!1;#E="";#D='<svg class="w-5 h-5 text-gray-900 dark:text-gray-400" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m19 9-7 7-7-7"/></svg>';constructor(t){if(window.selects===void 0&&(window.selects=[]),window.selects[t]!==void 0)return window.selects[t];this.id=t,this.name,this.data=[],this.isMultiple=!1,this.clearButton=!1,this.singleLabel=" ",this.records=10,this.filter=null,this.bodyRound="",this.width="100%",this.searchInputActive=!0,this.bodyData=null,this.boxOverflow="horizontal",window.selects[t]=this}static set(t){return new o(t)}setData(t){return this.data=t,this}setMultiple(t="horizontal"){return this.isMultiple=!0,this.boxOverflow=t,this}setClearButton(){return this.clearButton=!0,this}setSelectedOptions(t){this.#t=t,this.#r(t)}getSelectedOptions(){return this.#t}getSelectedOption(){return this.#t[0]}getOptions(){return this.data}setSingleLabel(t){return this.singleLabel=t,this}setBodyRound(t){return this.bodyRound=`-${t}`,this}setRS(t){return this.RS=t,this}setBodyData(t){return this.bodyData=t,this}desactiveSearchInput(){return this.searchInputActive=!1,this}addOption(t){this.data.push(t)}setWidth(t){return this.width=t,this}setOnSelect(t){return this.onSelect=t,this}setOnUnselect(t){return this.onUnselect=t,this}setOnChange(t){return this.onChange=t,this}cleanSelection(){const t=this.#t;this.#t=[],this.#r(t)}#L(){this.#N(),this.#s.addEventListener("click",t=>{if(t.target.classList.contains("remove-tag")){this.#H(t.target.getAttribute("data-value")),this.onUnselect!==void 0&&this.onUnselect(t.target.getAttribute("data-value"),this),this.#n&&this.#l(),this.#v();return}this.#n?this.#l():this.#v()}),document.addEventListener("click",t=>{!this.#i.contains(t.target)&&!this.#e.contains(t.target)&&!t.target.classList.contains("remove-tag")&&this.#l()}),window.onresize=()=>{this.#l()},window.addEventListener("scroll",()=>{this.#l()}),this.isMultiple&&this.#S()}#N(){this.#T();const t=document.createElement("div");t.className="main-div-selectyc",t.style.width=this.width,t.id=`selectyc_main_div_${this.id}`;const e=document.createElement("div");e.className="custom-multiselect";let s=document.createElement("div");s.className="selected-items round"+this.bodyRound,s.tabIndex=0,s.classList.add(this.boxOverflow==="horizontal"?"horizontal-overflow":"vertical-overflow"),this.isMultiple||(s=this.#O(s)),e.appendChild(s),e.appendChild(this.#I()),t.appendChild(e);const i=document.getElementById(this.id),n=document.createElement("input");n.name=i.name,n.setAttribute("data-id",i.id),this.rootClassName!==""&&(n.className=i.className),n.style.display="none";let l=i.parentNode;t.appendChild(n),l.replaceChild(t,i),this.#u=n,this.#g=s,this.#i=e,this.#s=this.#i.querySelector(".selected-items"),!this.isMultiple&&this.#t.length>0&&(this.#u.value=this.#t[0].value)}#O(t){const e=document.createElement("input");e.className="custom-single-select",e.id=`selectyc_text_box_${this.id}`,e.placeholder=this.singleLabel,e.value=this.#t.length===0?null:this.#t[0].text,e.readOnly=!0;const s=document.createElement("div");return s.innerHTML=this.#D,t.appendChild(this.#M()),t.appendChild(e),t.appendChild(s),this.#h=e,t}#M(){const t=document.createElement("input");return t.type="text",t.required=this.#w,t.tabIndex=-1,t.style.position="absolute",t.style.opacity="0",t.style.pointerEvents="none",t.style.height="0",t.style.width="0",t.style.left="50%",t.value=this.#t.length===0?"":this.#t[0].text,this.#p=t,t}#I(){const t=document.createElement("div");t.setAttribute("style","position:fixed; z-index:999;");const e=document.createElement("div");e.setAttribute("style","position:absolute;");const s=document.createElement("div");s.className="global-dropdown",this.searchInputActive&&e.appendChild(this.#R());let i;return s.addEventListener("scroll",n=>{i&&clearTimeout(i),i=setTimeout(()=>{this.#j(n)},70)}),e.appendChild(s),this.#e=s,this.#o=e,t.appendChild(e),t}#R(){const t=document.createElement("input");return t.type="text",t.id="selectyc_search_input",t.className="search-input",t.placeholder="Buscar...",t.addEventListener("input",()=>{this.filter=t.value,this.#e.innerHTML="",this.filter=t.value,this.#C()}),this.#a=t,t}#d(t){const e=document.createElement("div");e.className="select-option",e.setAttribute("data-value",t.id),e.textContent=t.text,this.#e.appendChild(e),e.addEventListener("click",()=>{t.id!=="sin_resultados"&&(this.#A(t.text,t.id),this.onSelect!==void 0&&this.onSelect(t.id,this),this.#l())})}#T(){const t=document.getElementById(this.id);this.name=t.name,this.#w=t.required,this.rootClassName=t.className,this.#y=t.getBoundingClientRect(),this.#x=document.documentElement.clientWidth,Array.from(t.options).forEach(e=>{if(e.outerHTML.includes("selected")){const s=e.text,i=this.#c(e.value);this.isMultiple?this.#t.push({value:i,text:s}):this.#t[0]={value:i,text:s}}this.#m.push({id:this.#c(e.value),text:e.text})})}#v(){if(this.filter=null,this.#n)return;this.#s.classList.remove(`round${this.bodyRound}`),this.#s.classList.add(`round${this.bodyRound}t`);const t=this.#i.getBoundingClientRect();this.#o.style.position="fixed",this.#o.style.top=t.bottom+"px",this.#o.style.left=t.left+"px",this.#e.style.width=t.width+"px",this.#e.style.display="block",this.searchInputActive&&(this.#a.style.display="block",this.#a.style.width=t.width+"px",this.#a.focus()),this.#C(),this.#n=!0}repositionDropdown(){const t=this.#i.getBoundingClientRect(),s=this.#i.getBoundingClientRect().top+window.scrollY,i=t.y-this.#y.y;console.log(s),this.#o.style.top=i+"px"}#l(){this.#n&&(this.#e.innerHTML="",this.#e.style.display="none",this.searchInputActive&&(this.#a.style.display="none"),this.#s.classList.add(`round${this.bodyRound}`),this.#n=!1)}async#b(){if(this.RS===void 0)return this.data;let t={records:this.records,filter:this.filter};if(typeof this.bodyData=="function"){const i=this.bodyData();t={...t,...i}}else this.bodyData!==null&&(t={...t,...this.bodyData});const e=await a.make(this.RS).addData(t).setMethod("POST").go(),s=Array.isArray(e)?e:e.data;return this.data=Array.from(new Map([...this.#m,...s].map(i=>[i.id,i])).values()),this.data}async#C(){this.#d({id:"loading",text:"cargando ..."}),this.records=10+this.#t.length,this.#f=!1;let t=await this.#b();const e=this.#t.map(s=>s.value);this.#e.lastChild.dataset.value==="loading"&&this.#e.removeChild(this.#e.lastChild),t.forEach(s=>{s.text.toLowerCase().includes(this.#E.toLowerCase())&&!e.includes(s.id)&&this.#d(s)}),this.#e.hasChildNodes()||this.#d({id:"sin_resultados",text:"sin resultados ..."})}async#B(){const t=this.#t.map(l=>l.value);let e=this.filter===null?"":this.filter,s=this.data.map(l=>l.id);this.records=this.records+10+this.#t.length;let i=await this.#b();this.#e.lastChild.dataset.value==="loading"&&this.#e.removeChild(this.#e.lastChild);const n=this.#e.lastChild.dataset.value;i.forEach(l=>{l.text.toLowerCase().includes(e.toLowerCase())&&!t.includes(l.id)&&!s.includes(l.id)&&this.#d(l)}),this.#f=n===this.#e.lastChild.dataset.value}#A(t,e){this.#t.find(i=>i.value===e)||(this.isMultiple||(this.#t=[]),this.#t.push({text:t,value:e})),this.#r(e)}#r(t){this.onChange!==void 0&&this.onChange(t,this),this.isMultiple?this.#S():this.#k()}#k(){this.#h.value=null,this.#p.value=null,this.#h.value=this.#t.length>0?this.#t[0].text:null,this.#p.value=this.#t.length>0?this.#t[0].text:null,this.#h.placeholder=this.singleLabel,this.#u.value=this.#t.length>0?this.#t[0].value:null;const t=this.#h.parentNode,e=t.firstChild;if(e.className==="remove-tag"&&e.remove(),!this.clearButton||this.#t.length<=0)return;const s=document.createElement("span");s.dataset.value=this.#t[0].value,s.innerHTML="x",s.className="remove-tag",t.insertBefore(s,t.firstChild)}#S(){if(this.#s.innerHTML="",this.#t.length<=0){this.#s.appendChild(document.createElement("div"));return}this.#t.forEach(({text:t,value:e})=>{const s=document.createElement("div");s.className="selected-tag",s.innerHTML=`${t} <span class="remove-tag" data-value="${e}">x</span>`,this.#s.appendChild(s)})}#H(t){this.#t=this.#t.filter(e=>this.#c(e.value)!==this.#c(t)),this.#r(t)}#j(t){const{scrollTop:e,scrollHeight:s,clientHeight:i}=this.#e;t.target.lastChild!==null&&(t.target.lastChild.dataset.value==="loading"||this.#f||e+(i+1)>=s&&(this.#d({id:"loading",text:"cargando ..."}),this.#B()))}#c(t){return!isNaN(t)&&!isNaN(parseFloat(t))?parseInt(t):t}async render(){const t=document.getElementById(this.id),e=t===null?!1:t.outerHTML.includes("<select");this.#g===void 0||e?this.#L():this.#r()}}h.selectyc=o,Object.defineProperty(h,Symbol.toStringTag,{value:"Module"})});
1
+ (function(h,a){typeof exports=="object"&&typeof module<"u"?a(exports):typeof define=="function"&&define.amd?define(["exports"],a):(h=typeof globalThis<"u"?globalThis:h||self,a(h.selectyc={}))})(this,function(h){"use strict";class a{constructor(t){this.route=t}static make(t){return new a(t)}setMethod(t){return this.method=t,this}getMethod(){return this.method===void 0?"POST":this.method}setData(t){return this.data=t,this}addData(t){if(this.data===void 0)return this.setData(t);for(const e in t)this.data[e]=t[e];return this}setFun(t){return this.fun=t,this}async go(){try{const t={method:this.getMethod(),headers:{"X-CSRF-TOKEN":window.CSRF_TOKEN,Accept:"application/json"}};this.data!==void 0&&(t.body=this.data,Object.prototype.toString.call(this.data)!=="[object FormData]"&&(t.body=JSON.stringify(this.data),t.headers["Content-Type"]="application/json"));const e=await fetch(this.route,t);if(!e.ok){const s=await e.json();throw new Error(s.message)}return this.fun===void 0?await e.json():await this.fun(e)}catch(t){window.toastNotification.setType(!1).show(t.message)}}}class d{#t=[];#u;#p=[];#i;#f;#s;#e;#a;#h;#m;#d;#y;#x;#n=!1;#w=!1;#g=!1;#E="";#D='<svg class="w-5 h-5 text-gray-900 dark:text-gray-400" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m19 9-7 7-7-7"/></svg>';constructor(t){if(window.selects===void 0&&(window.selects=[]),window.selects[t]!==void 0)return window.selects[t];this.id=t,this.name,this.data=[],this.isMultiple=!1,this.clearButton=!1,this.singleLabel=" ",this.records=10,this.filter=null,this.bodyRound="",this.width="100%",this.searchInputActive=!0,this.bodyData=null,this.boxOverflow="horizontal",window.selects[t]=this}static set(t){return new d(t)}setData(t){return this.data=t,this}setMultiple(t="horizontal"){return this.isMultiple=!0,this.boxOverflow=t,this}setClearButton(){return this.clearButton=!0,this}setSelectedOptions(t){this.#t=t,this.#r(t)}getSelectedOptions(){return this.#t}getSelectedOption(){return this.#t[0]}getOptions(){return this.data}setSingleLabel(t){return this.singleLabel=t,this}setBodyRound(t){return this.bodyRound=`-${t}`,this}setRS(t){return this.RS=t,this}setBodyData(t){return this.bodyData=t,this}desactiveSearchInput(){return this.searchInputActive=!1,this}addOption(t){this.data.push(t)}setWidth(t){return this.width=t,this}setOnSelect(t){return this.onSelect=t,this}setOnUnselect(t){return this.onUnselect=t,this}setOnChange(t){return this.onChange=t,this}cleanSelection(){const t=this.#t;this.#t=[],this.#r(t)}#L(){this.#N(),this.#s.addEventListener("click",t=>{if(t.target.classList.contains("remove-tag")){this.#H(t.target.getAttribute("data-value")),this.onUnselect!==void 0&&this.onUnselect(t.target.getAttribute("data-value"),this),this.#n&&this.#l(),this.#v();return}this.#n?this.#l():this.#v()}),document.addEventListener("click",t=>{!this.#i.contains(t.target)&&!this.#e.contains(t.target)&&!t.target.classList.contains("remove-tag")&&this.#l()}),window.onresize=()=>{this.#l()},window.addEventListener("scroll",()=>{this.#l()}),this.isMultiple&&this.#S()}#N(){this.#T();const t=document.createElement("div");t.className="main-div-selectyc",t.style.width=this.width,t.id=`selectyc_main_div_${this.id}`;const e=document.createElement("div");e.className="custom-multiselect";let s=document.createElement("div");s.className="selected-items round"+this.bodyRound,s.tabIndex=0,s.classList.add(this.boxOverflow==="horizontal"?"horizontal-overflow":"vertical-overflow"),this.isMultiple||(s=this.#O(s)),e.appendChild(s),e.appendChild(this.#I()),t.appendChild(e);const i=document.getElementById(this.id),n=document.createElement("input");n.name=i.name,n.setAttribute("data-id",i.id),this.rootClassName!==""&&(n.className=i.className),n.style.display="none";let l=i.parentNode;t.appendChild(n),l.replaceChild(t,i),this.#u=n,this.#f=s,this.#i=e,this.#s=this.#i.querySelector(".selected-items"),!this.isMultiple&&this.#t.length>0&&(this.#u.value=this.#t[0].value)}#O(t){const e=document.createElement("input");e.className="custom-single-select",e.id=`selectyc_text_box_${this.id}`,e.placeholder=this.singleLabel,e.value=this.#t.length===0?null:this.#t[0].text,e.readOnly=!0;const s=document.createElement("div");return s.innerHTML=this.#D,t.appendChild(this.#M()),t.appendChild(e),t.appendChild(s),this.#h=e,t}#M(){const t=document.createElement("input");return t.type="text",t.required=this.#w,t.tabIndex=-1,t.style.position="absolute",t.style.opacity="0",t.style.pointerEvents="none",t.style.height="0",t.style.width="0",t.style.left="50%",t.value=this.#t.length===0?"":this.#t[0].text,this.#m=t,t}#I(){const t=document.createElement("div");t.setAttribute("style","position:fixed; z-index:999;");const e=document.createElement("div");e.setAttribute("style","position:absolute;");const s=document.createElement("div");s.className="global-dropdown",this.searchInputActive&&e.appendChild(this.#R());let i;return s.addEventListener("scroll",n=>{i&&clearTimeout(i),i=setTimeout(()=>{this.#j(n)},70)}),e.appendChild(s),this.#e=s,this.#d=e,t.appendChild(e),t}#R(){const t=document.createElement("input");return t.type="text",t.id="selectyc_search_input",t.className="search-input",t.placeholder="Buscar...",t.addEventListener("input",()=>{this.filter=t.value,this.#e.innerHTML="",this.filter=t.value,this.#C()}),this.#a=t,t}#o(t){const e=document.createElement("div");e.className="select-option",e.setAttribute("data-value",t.id),e.textContent=t.text,this.#e.appendChild(e),e.addEventListener("click",()=>{t.id!=="sin_resultados"&&(this.#A(t.text,t.id),this.onSelect!==void 0&&this.onSelect(t.id,this),this.#l())})}#T(){const t=document.getElementById(this.id);this.name=t.name,this.#w=t.required,this.rootClassName=t.className,this.#y=t.getBoundingClientRect(),this.#x=document.documentElement.clientWidth,Array.from(t.options).forEach(e=>{if(e.outerHTML.includes("selected")){const s=e.text,i=this.#c(e.value);this.isMultiple?this.#t.push({value:i,text:s}):this.#t[0]={value:i,text:s}}this.#p.push({id:this.#c(e.value),text:e.text}),this.data=this.#p})}#v(){if(this.filter=null,this.#n)return;this.#s.classList.remove(`round${this.bodyRound}`),this.#s.classList.add(`round${this.bodyRound}t`);const t=this.#i.getBoundingClientRect();this.#d.style.position="fixed",this.#d.style.top=t.bottom+"px",this.#d.style.left=t.left+"px",this.#e.style.width=t.width+"px",this.#e.style.display="block",this.searchInputActive&&(this.#a.style.display="block",this.#a.style.width=t.width+"px",this.#a.focus()),this.#C(),this.#n=!0}repositionDropdown(){const t=this.#i.getBoundingClientRect(),s=this.#i.getBoundingClientRect().top+window.scrollY,i=t.y-this.#y.y;console.log(s),this.#d.style.top=i+"px"}#l(){this.#n&&(this.#e.innerHTML="",this.#e.style.display="none",this.searchInputActive&&(this.#a.style.display="none"),this.#s.classList.add(`round${this.bodyRound}`),this.#n=!1)}async#b(){if(this.RS===void 0)return this.data;let t={records:this.records,filter:this.filter};if(typeof this.bodyData=="function"){const i=this.bodyData();t={...t,...i}}else this.bodyData!==null&&(t={...t,...this.bodyData});const e=await a.make(this.RS).addData(t).setMethod("POST").go(),s=Array.isArray(e)?e:e.data;return this.data=Array.from(new Map([...this.#p,...s].map(i=>[i.id,i])).values()),this.data}async#C(){this.#o({id:"loading",text:"cargando ..."}),this.records=10+this.#t.length,this.#g=!1;let t=await this.#b();const e=this.#t.map(s=>s.value);this.#e.lastChild.dataset.value==="loading"&&this.#e.removeChild(this.#e.lastChild),t.forEach(s=>{s.text.toLowerCase().includes(this.#E.toLowerCase())&&!e.includes(s.id)&&this.#o(s)}),this.#e.hasChildNodes()||this.#o({id:"sin_resultados",text:"sin resultados ..."})}async#B(){const t=this.#t.map(l=>l.value);let e=this.filter===null?"":this.filter,s=this.data.map(l=>l.id);this.records=this.records+10+this.#t.length;let i=await this.#b();this.#e.lastChild.dataset.value==="loading"&&this.#e.removeChild(this.#e.lastChild);const n=this.#e.lastChild.dataset.value;i.forEach(l=>{l.text.toLowerCase().includes(e.toLowerCase())&&!t.includes(l.id)&&!s.includes(l.id)&&this.#o(l)}),this.#g=n===this.#e.lastChild.dataset.value}#A(t,e){this.#t.find(i=>i.value===e)||(this.isMultiple||(this.#t=[]),this.#t.push({text:t,value:e})),this.#r(e)}#r(t){this.onChange!==void 0&&this.onChange(t,this),this.isMultiple?this.#S():this.#k()}#k(){this.#h.value=null,this.#m.value=null,this.#h.value=this.#t.length>0?this.#t[0].text:null,this.#m.value=this.#t.length>0?this.#t[0].text:null,this.#h.placeholder=this.singleLabel,this.#u.value=this.#t.length>0?this.#t[0].value:null;const t=this.#h.parentNode,e=t.firstChild;if(e.className==="remove-tag"&&e.remove(),!this.clearButton||this.#t.length<=0)return;const s=document.createElement("span");s.dataset.value=this.#t[0].value,s.innerHTML="x",s.className="remove-tag",t.insertBefore(s,t.firstChild)}#S(){if(this.#s.innerHTML="",this.#t.length<=0){this.#s.appendChild(document.createElement("div"));return}this.#t.forEach(({text:t,value:e})=>{const s=document.createElement("div");s.className="selected-tag",s.innerHTML=`${t} <span class="remove-tag" data-value="${e}">x</span>`,this.#s.appendChild(s)})}#H(t){this.#t=this.#t.filter(e=>this.#c(e.value)!==this.#c(t)),this.#r(t)}#j(t){const{scrollTop:e,scrollHeight:s,clientHeight:i}=this.#e;t.target.lastChild!==null&&(t.target.lastChild.dataset.value==="loading"||this.#g||e+(i+1)>=s&&(this.#o({id:"loading",text:"cargando ..."}),this.#B()))}#c(t){return!isNaN(t)&&!isNaN(parseFloat(t))?parseInt(t):t}async render(){const t=document.getElementById(this.id),e=t===null?!1:t.outerHTML.includes("<select");this.#f===void 0&&t!==null||e?this.#L():this.#f!==void 0&&this.#r()}}h.selectyc=d,Object.defineProperty(h,Symbol.toStringTag,{value:"Module"})});
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "selectyc",
3
3
  "description": "select multiple and simple",
4
- "version": "0.0.19",
4
+ "version": "0.0.21",
5
5
  "main": "./dist/selectyc.umd.js",
6
6
  "module": "./dist/selectyc.js",
7
7
  "type": "module",