kempo 2.10.1 → 2.10.2

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.
@@ -1 +1 @@
1
- import Component from"./Component.js";import debounce from"../utils/debounce.js";const inputHandler=Symbol("inputHandler"),focusHandler=Symbol("focusHandler"),blurHandler=Symbol("blurHandler");export default class Search extends Component{static searchDataUrl="/search.json";constructor(){super(),this[inputHandler]=debounce((()=>{this.search(this.shadowRoot.getElementById("input").value)})),this[focusHandler]=()=>{this.opened=!0},this[blurHandler]=()=>{setTimeout((()=>{this.opened=!1}),100)},this.registerAttribute("opened",!1),this.registerProp("pages",{})}async render(e){if(await super.render(e)){this.pages=await(await fetch(Search.searchDataUrl)).json();const e=this.shadowRoot.getElementById("input");return e.addEventListener("input",this[inputHandler]),e.addEventListener("focus",this[focusHandler]),e.addEventListener("blur",this[blurHandler]),!0}return!1}search(e){const n=this.shadowRoot.getElementById("results");if(""===e)n.innerHTML="";else{const t=e.trim().toLowerCase();Object.keys(this.pages).forEach((e=>{const n=this.pages[e];n.score=0,n.name.toLowerCase().startsWith(t)?n.score+=5:n.name.toLowerCase().includes(t)&&(n.score+=3),n.terms.includes(t)&&(n.score+=3),n.terms.forEach((e=>{e.startsWith(t)?n.score+=2:e.includes(t)&&(n.score+=1)}))}));const s=Object.keys(this.pages).map((e=>({path:e,...this.pages[e]}))).filter((({score:e})=>e)).sort((({score:e},{score:n})=>n-e)).slice(0,4);s.length?n.innerHTML=s.map((({path:e,name:n})=>`<a href="${e}">${n}</a>`)).join(""):n.innerHTML="<a>No Results</a>"}}get shadowTemplate(){return'\n <div id="wrapper">\n <input\n id="input"\n placeholder="Search"\n type="search"\n />\n <div id="results"></div>\n </div>\n '}get shadowStyles(){return'\n :host {\n display: inline-block;\n align-self: center;\n }\n #wrapper {\n position: relative;\n }\n #input {\n width: 100%;\n margin: 0;\n }\n #results {\n display: none;\n position: absolute;\n top: 100%;\n left: 0;\n width: 100%;\n max-height: 20rem;\n background-color: var(--c_bg);\n color: var(--tc);\n box-shadow: var(--drop_shadow);\n }\n :host([opened="true"]) #results {\n display: block;\n }\n #results a {\n display: block;\n padding: var(--spacer_h);\n text-decoration: none;\n border-bottom: 1px solid var(--c_border);\n border-radius: 0;\n }\n #results a:last-child {\n border-bottom: 0;\n }\n '}}window.customElements.define("k-search",Search);
1
+ import Component from"./Component.js";import debounce from"../utils/debounce.js";const inputHandler=Symbol("inputHandler"),focusHandler=Symbol("focusHandler"),blurHandler=Symbol("blurHandler");export default class Search extends Component{static searchDataUrl="/search.json";constructor(){super(),this[inputHandler]=debounce((()=>{this.search(this.shadowRoot.getElementById("input").value)})),this[focusHandler]=()=>{this.opened=!0},this[blurHandler]=()=>{setTimeout((()=>{this.opened=!1}),100)},this.registerAttribute("opened",!1),this.registerProp("pages",{})}async render(e){if(await super.render(e)){this.pages=await(await fetch(Search.searchDataUrl)).json();const e=this.shadowRoot.getElementById("input");return e.addEventListener("input",this[inputHandler]),e.addEventListener("focus",this[focusHandler]),e.addEventListener("blur",this[blurHandler]),!0}return!1}search(e){const n=this.shadowRoot.getElementById("results");if(""===e)n.innerHTML="";else{const t=e.trim().toLowerCase();Object.keys(this.pages).forEach((e=>{const n=this.pages[e];n.score=0,n.name.toLowerCase().startsWith(t)?n.score+=5:n.name.toLowerCase().includes(t)&&(n.score+=3),n.terms.includes(t)&&(n.score+=3),n.terms.forEach((e=>{e.startsWith(t)?n.score+=2:e.includes(t)&&(n.score+=1)}))}));const s=Object.keys(this.pages).map((e=>({path:e,...this.pages[e]}))).filter((({score:e})=>e)).sort((({score:e},{score:n})=>n-e)).slice(0,4);s.length?n.innerHTML=s.map((({path:e,name:n})=>`<a href="${e}">${n}</a>`)).join(""):n.innerHTML="<a>No Results</a>"}}get shadowTemplate(){return'\n <div id="wrapper">\n <input\n id="input"\n placeholder="Search"\n type="search"\n />\n <div id="results"></div>\n </div>\n '}get shadowStyles(){return'\n :host {\n display: inline-block;\n align-self: center;\n }\n #wrapper {\n position: relative;\n }\n #input {\n width: 100%;\n margin: 0;\n }\n #results {\n display: none;\n position: absolute;\n top: 100%;\n left: 0;\n width: 100%;\n max-height: 20rem;\n background-color: var(--c_bg);\n color: var(--tc);\n box-shadow: var(--drop_shadow);\n }\n :host([opened="true"]) #results {\n display: block;\n }\n #results a {\n display: block;\n padding: var(--spacer_h);\n text-decoration: none;\n border-bottom: 1px solid var(--c_border);\n border-radius: 0;\n color: var(--tc_primary);\n }\n #results a:last-child {\n border-bottom: 0;\n }\n '}}window.customElements.define("k-search",Search);
@@ -68,7 +68,8 @@
68
68
  fields: [
69
69
  {
70
70
  name: "name",
71
- label: "Name"
71
+ label: "Name",
72
+ size: 300
72
73
  },
73
74
  {
74
75
  name: 'phoneNumber',
@@ -1 +1 @@
1
- import Component from"./Component.js";import debounce from"../utils/debounce.js";const inputHandler=Symbol("inputHandler"),focusHandler=Symbol("focusHandler"),blurHandler=Symbol("blurHandler");export default class Search extends Component{static searchDataUrl="/search.json";constructor(){super(),this[inputHandler]=debounce((()=>{this.search(this.shadowRoot.getElementById("input").value)})),this[focusHandler]=()=>{this.opened=!0},this[blurHandler]=()=>{setTimeout((()=>{this.opened=!1}),100)},this.registerAttribute("opened",!1),this.registerProp("pages",{})}async render(e){if(await super.render(e)){this.pages=await(await fetch(Search.searchDataUrl)).json();const e=this.shadowRoot.getElementById("input");return e.addEventListener("input",this[inputHandler]),e.addEventListener("focus",this[focusHandler]),e.addEventListener("blur",this[blurHandler]),!0}return!1}search(e){const n=this.shadowRoot.getElementById("results");if(""===e)n.innerHTML="";else{const t=e.trim().toLowerCase();Object.keys(this.pages).forEach((e=>{const n=this.pages[e];n.score=0,n.name.toLowerCase().startsWith(t)?n.score+=5:n.name.toLowerCase().includes(t)&&(n.score+=3),n.terms.includes(t)&&(n.score+=3),n.terms.forEach((e=>{e.startsWith(t)?n.score+=2:e.includes(t)&&(n.score+=1)}))}));const s=Object.keys(this.pages).map((e=>({path:e,...this.pages[e]}))).filter((({score:e})=>e)).sort((({score:e},{score:n})=>n-e)).slice(0,4);s.length?n.innerHTML=s.map((({path:e,name:n})=>`<a href="${e}">${n}</a>`)).join(""):n.innerHTML="<a>No Results</a>"}}get shadowTemplate(){return'\n <div id="wrapper">\n <input\n id="input"\n placeholder="Search"\n type="search"\n />\n <div id="results"></div>\n </div>\n '}get shadowStyles(){return'\n :host {\n display: inline-block;\n align-self: center;\n }\n #wrapper {\n position: relative;\n }\n #input {\n width: 100%;\n margin: 0;\n }\n #results {\n display: none;\n position: absolute;\n top: 100%;\n left: 0;\n width: 100%;\n max-height: 20rem;\n background-color: var(--c_bg);\n color: var(--tc);\n box-shadow: var(--drop_shadow);\n }\n :host([opened="true"]) #results {\n display: block;\n }\n #results a {\n display: block;\n padding: var(--spacer_h);\n text-decoration: none;\n border-bottom: 1px solid var(--c_border);\n border-radius: 0;\n }\n #results a:last-child {\n border-bottom: 0;\n }\n '}}window.customElements.define("k-search",Search);
1
+ import Component from"./Component.js";import debounce from"../utils/debounce.js";const inputHandler=Symbol("inputHandler"),focusHandler=Symbol("focusHandler"),blurHandler=Symbol("blurHandler");export default class Search extends Component{static searchDataUrl="/search.json";constructor(){super(),this[inputHandler]=debounce((()=>{this.search(this.shadowRoot.getElementById("input").value)})),this[focusHandler]=()=>{this.opened=!0},this[blurHandler]=()=>{setTimeout((()=>{this.opened=!1}),100)},this.registerAttribute("opened",!1),this.registerProp("pages",{})}async render(e){if(await super.render(e)){this.pages=await(await fetch(Search.searchDataUrl)).json();const e=this.shadowRoot.getElementById("input");return e.addEventListener("input",this[inputHandler]),e.addEventListener("focus",this[focusHandler]),e.addEventListener("blur",this[blurHandler]),!0}return!1}search(e){const n=this.shadowRoot.getElementById("results");if(""===e)n.innerHTML="";else{const t=e.trim().toLowerCase();Object.keys(this.pages).forEach((e=>{const n=this.pages[e];n.score=0,n.name.toLowerCase().startsWith(t)?n.score+=5:n.name.toLowerCase().includes(t)&&(n.score+=3),n.terms.includes(t)&&(n.score+=3),n.terms.forEach((e=>{e.startsWith(t)?n.score+=2:e.includes(t)&&(n.score+=1)}))}));const s=Object.keys(this.pages).map((e=>({path:e,...this.pages[e]}))).filter((({score:e})=>e)).sort((({score:e},{score:n})=>n-e)).slice(0,4);s.length?n.innerHTML=s.map((({path:e,name:n})=>`<a href="${e}">${n}</a>`)).join(""):n.innerHTML="<a>No Results</a>"}}get shadowTemplate(){return'\n <div id="wrapper">\n <input\n id="input"\n placeholder="Search"\n type="search"\n />\n <div id="results"></div>\n </div>\n '}get shadowStyles(){return'\n :host {\n display: inline-block;\n align-self: center;\n }\n #wrapper {\n position: relative;\n }\n #input {\n width: 100%;\n margin: 0;\n }\n #results {\n display: none;\n position: absolute;\n top: 100%;\n left: 0;\n width: 100%;\n max-height: 20rem;\n background-color: var(--c_bg);\n color: var(--tc);\n box-shadow: var(--drop_shadow);\n }\n :host([opened="true"]) #results {\n display: block;\n }\n #results a {\n display: block;\n padding: var(--spacer_h);\n text-decoration: none;\n border-bottom: 1px solid var(--c_border);\n border-radius: 0;\n color: var(--tc_primary);\n }\n #results a:last-child {\n border-bottom: 0;\n }\n '}}window.customElements.define("k-search",Search);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kempo",
3
- "version": "2.10.1",
3
+ "version": "2.10.2",
4
4
  "type": "module",
5
5
  "description": "A web component library",
6
6
  "main": "dist/index.js",
@@ -129,6 +129,7 @@ export default class Search extends Component {
129
129
  text-decoration: none;
130
130
  border-bottom: 1px solid var(--c_border);
131
131
  border-radius: 0;
132
+ color: var(--tc_primary);
132
133
  }
133
134
  #results a:last-child {
134
135
  border-bottom: 0;
@@ -727,23 +727,24 @@ export default class Table extends Component {
727
727
 
728
728
  this.fields.forEach(field => {
729
729
  if (field.size) {
730
- this.columnSizes[field.name] = field.size;
730
+ this.columnSizes[field.name] = field.size;
731
+ this.columnSizes.total += field.size;
731
732
  } else {
732
- let maxLength = 0;
733
- this.records.slice(0, 100).forEach(record => {
734
- let value = record[field.name];
735
- if (field.calculator) {
736
- value = field.calculator(record, this);
737
- }
738
- if (field.formatter) {
739
- value = field.formatter(value);
740
- }
741
- if (value && value.toString().length > maxLength) {
742
- maxLength = value.toString().length;
743
- }
744
- });
745
- this.columnSizes[field.name] = Math.max((maxLength * 10 + 32), 128);
746
- if(!field.hidden) this.columnSizes.total += this.columnSizes[field.name];
733
+ let maxLength = 0;
734
+ this.records.slice(0, 100).forEach(record => {
735
+ let value = record[field.name];
736
+ if (field.calculator) {
737
+ value = field.calculator(record, this);
738
+ }
739
+ if (field.formatter) {
740
+ value = field.formatter(value);
741
+ }
742
+ if (value && value.toString().length > maxLength) {
743
+ maxLength = value.toString().length;
744
+ }
745
+ });
746
+ this.columnSizes[field.name] = Math.max((maxLength * 10 + 32), 128);
747
+ if(!field.hidden) this.columnSizes.total += this.columnSizes[field.name];
747
748
  }
748
749
  });
749
750
  return this.columnSizes;