jb-textarea 2.2.0 → 3.0.0

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.
@@ -0,0 +1,2 @@
1
+ "use strict";function e(e,t,a,i){if("a"===a&&!i)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===a?i:"a"===a?i.call(e):i?i.value:t.get(e)}function t(e,t,a,i,s){if("m"===i)throw new TypeError("Private method is not writable");if("a"===i&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!s:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===i?s.call(e,a):s?s.value=a:t.set(e,a),a}"function"==typeof SuppressedError&&SuppressedError;var a,i,s,n,r,o,l,c,h,d,b,p,u,f,m,v,x,g,w,y,k,E,j,C,K,V,T,L,M,W,S;function z(e,t,a,i){if("a"===a&&!i)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===a?i:"a"===a?i.call(e):i?i.value:t.get(e)}function A(e,t,a,i,s){if("function"==typeof t?e!==t||!s:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return t.set(e,a),a}"function"==typeof SuppressedError&&SuppressedError;class H{get resultSummary(){return z(this,s,"f")}constructor(e,t,h,d,b){a.add(this),i.set(this,[]),s.set(this,{isValid:null,message:null}),this.result=null,n.set(this,null),r.set(this,null),o.set(this,null),l.set(this,null),c.set(this,[]),A(this,n,e),A(this,r,t),A(this,o,h),A(this,l,d),z(this,c,"f").push(b)}get list(){return z(this,i,"f")}set list(e){A(this,i,e),this.checkValidity(!1)}checkValidity(e=!0){const t=z(this,o,"f").call(this),i=z(this,a,"m",d).call(this,t);if(A(this,s,{isValid:i.isAllValid,message:null}),i.isAllValid)z(this,r,"f").call(this);else{const t=i.validationList.find((e=>!e.isValid));this.resultSummary.message=t.message,1==e&&z(this,n,"f").call(this,t.message)}return this.result=i,i}addValidationListGetter(e){z(this,c,"f").push(e)}}i=new WeakMap,s=new WeakMap,n=new WeakMap,r=new WeakMap,o=new WeakMap,l=new WeakMap,c=new WeakMap,a=new WeakSet,h=function(){const e=[];return z(this,c,"f").forEach((t=>{"function"==typeof t&&e.push(...t())})),e.flat()},d=function(e){const t={validationList:[],isAllValid:!0};return[...z(this,a,"m",h).call(this),...this.list].forEach((i=>{const s=z(this,a,"m",b).call(this,e,i);t.validationList.push(s),s.isValid||(t.isAllValid=!1)})),t},b=function(e,t){let a,i=t.message;if(t.validator instanceof RegExp){const i="string"==typeof e?e:z(this,l,"f").call(this,e);a=t.validator.test(i),t.validator.lastIndex=0}if("function"==typeof t.validator){const s=t.validator(e);"string"==typeof s&&s.length>0&&(i=s),a="string"==typeof s?0==s.length:s}return a?{isValid:!0,message:"",validation:t}:{isValid:!1,message:i,validation:t}};class B extends HTMLElement{get value(){return e(this,u,"f")}set value(a){t(this,u,a,"f"),e(this,m,"f").value=a,this.autoHeight&&e(this,p,"m",E).call(this)}get isAutoValidationDisabled(){return e(this,f,"f")}set isAutoValidationDisabled(e){t(this,f,e,"f")}constructor(){super(),p.add(this),u.set(this,""),f.set(this,!1),m.set(this,void 0),v.set(this,void 0),this.autoHeight=!1,w.set(this,new H(this.showValidationError.bind(this),this.clearValidationError.bind(this),(()=>this.value),(()=>this.value),(()=>[]))),e(this,p,"m",x).call(this),e(this,p,"m",y).call(this)}get validation(){return e(this,w,"f")}static get observedAttributes(){return["label","message","value","placeholder"]}attributeChangedCallback(t,a,i){e(this,p,"m",k).call(this,t,i)}triggerInputValidation(e=!0){this.validation.checkValidity(e)}showValidationError(t){e(this,v,"f").messageBox.innerHTML=t,e(this,v,"f").messageBox.classList.add("error")}clearValidationError(){const t=this.getAttribute("message")||"";e(this,v,"f").messageBox.innerHTML=t,e(this,v,"f").messageBox.classList.remove("error")}}u=new WeakMap,f=new WeakMap,m=new WeakMap,v=new WeakMap,w=new WeakMap,p=new WeakSet,x=function(){const a=this.attachShadow({mode:"open"}),i=document.createElement("template");i.innerHTML='<style>.jb-textarea-web-component {\n width: 100%;\n margin: var(--jb-textarea-margin, 12px 0);\n}\n.jb-textarea-web-component label {\n width: 100%;\n margin: 4px 0px;\n display: block;\n font-size: var(--jb-textarea-label-font-size, 0.8em);\n color: var(--jb-textarea-label-color, #1f1735);\n}\n.jb-textarea-web-component label.--hide {\n display: none;\n}\n.jb-textarea-web-component .textarea-box {\n width: 100%;\n box-sizing: border-box;\n border: solid var(--jb-textarea-border-width, 1px) var(--jb-textarea-border-color, #f7f6f6);\n background-color: var(--jb-textarea-bgcolor, #f7f6f6);\n border-bottom: solid var(--jb-textarea-border-botton-width, 3px) var(--jb-textarea-border-color, #f7f6f6);\n border-radius: var(--jb-textarea-border-radius, 16px);\n display: block;\n transition: ease 0.3s all;\n overflow: hidden;\n display: flex;\n justify-content: space-between;\n}\n.jb-textarea-web-component .textarea-box:focus-within {\n border-color: var(--jb-textarea-border-color-focus, #1e2832);\n}\n.jb-textarea-web-component .textarea-box textarea {\n border: none;\n width: 100%;\n box-sizing: border-box;\n min-height: var(--jb-textarea-min-height, 80px);\n height: var(--jb-textarea-min-height, 80px);\n max-height: var(--jb-textarea-max-height, none);\n background-color: transparent;\n padding: 6px 12px 4px 12px;\n display: block;\n font-family: inherit;\n font-size: var(--jb-textarea-value-font-size, 1.1em);\n color: var(--jb-textarea-value-color, #1f1735);\n margin: 0;\n border-radius: 0;\n resize: vertical;\n color: var(--jb-textarea-value-color, initial);\n}\n.jb-textarea-web-component .textarea-box textarea:focus {\n outline: none;\n}\n.jb-textarea-web-component .textarea-box textarea::placeholder {\n color: var(--jb-textarea-placeholder-color, initial);\n font-size: var(--jb-textarea-placeholder-font-size, initial);\n}\n.jb-textarea-web-component .message-box {\n font-size: var(--jb-textarea-message-font-size, 0.7em);\n padding: 2px 8px;\n color: #929292;\n}\n.jb-textarea-web-component .message-box:empty {\n padding: 0;\n}\n.jb-textarea-web-component .message-box.error {\n color: var(--jb-textarea-message-error-color, red);\n}</style>\n<div class="jb-textarea-web-component">\r\n <label class="--hide"><span class="label-value"></span><span>:</span></label>\r\n <div class="textarea-box">\r\n <textarea class="textarea-input"></textarea>\r\n </div>\r\n <div class="message-box"></div>\r\n</div>',a.appendChild(i.content.cloneNode(!0)),t(this,m,a.querySelector(".textarea-box textarea"),"f"),t(this,v,{textarea:e(this,m,"f"),label:a.querySelector("label"),labelValue:a.querySelector("label .label-value"),messageBox:a.querySelector(".message-box")},"f"),e(this,p,"m",g).call(this)},g=function(){e(this,v,"f").textarea.addEventListener("change",(t=>e(this,p,"m",W).call(this,t))),e(this,v,"f").textarea.addEventListener("beforeinput",e(this,p,"m",j).bind(this)),e(this,v,"f").textarea.addEventListener("input",(t=>e(this,p,"m",T).call(this,t))),e(this,v,"f").textarea.addEventListener("keypress",e(this,p,"m",V).bind(this)),e(this,v,"f").textarea.addEventListener("keyup",e(this,p,"m",M).bind(this)),e(this,v,"f").textarea.addEventListener("keydown",e(this,p,"m",K).bind(this))},y=function(){this.value=this.getAttribute("value")||""},k=function(t,a){switch(t){case"label":e(this,v,"f").labelValue.innerHTML=a,null==a||null==a||""==a?e(this,v,"f").label.classList.add("--hide"):e(this,v,"f").label.classList.remove("--hide");break;case"message":e(this,v,"f").messageBox.innerHTML=a;break;case"placeholder":e(this,m,"f").setAttribute("placeholder",a);break;case"value":this.value=a}},E=function(){e(this,m,"f").style.height="4px",e(this,m,"f").style.height=e(this,m,"f").scrollHeight+"px"},j=function(t){e(this,p,"m",C).call(this,t)},C=function(e){const t={bubbles:e.bubbles,cancelable:e.cancelable,composed:e.composed,data:e.data,isComposing:e.isComposing,inputType:e.inputType,dataTransfer:e.dataTransfer,view:e.view,detail:e.detail,targetRanges:e.getTargetRanges()},a=new InputEvent("beforeinput",t);return this.dispatchEvent(a),a.defaultPrevented&&e.preventDefault(),a.defaultPrevented},K=function(e){const t={key:e.key,keyCode:e.keyCode,code:e.code,ctrlKey:e.ctrlKey,shiftKey:e.shiftKey,altKey:e.altKey,charCode:e.charCode,which:e.which,cancelable:!0,location:e.location,detail:e.detail,bubbles:e.bubbles,composed:e.composed,isComposing:e.isComposing,metaKey:e.metaKey,repeat:e.repeat,view:e.view},a=new KeyboardEvent("keydown",t);this.dispatchEvent(a)||e.preventDefault()},V=function(e){const t={key:e.key,keyCode:e.keyCode,code:e.code,ctrlKey:e.ctrlKey,shiftKey:e.shiftKey,altKey:e.altKey,charCode:e.charCode,which:e.which,cancelable:!0,location:e.location,detail:e.detail,bubbles:e.bubbles,composed:e.composed,isComposing:e.isComposing,metaKey:e.metaKey,repeat:e.repeat,view:e.view},a=new KeyboardEvent("keypress",t);this.dispatchEvent(a)||e.preventDefault()},T=function(t){this.autoHeight&&e(this,p,"m",E).call(this),e(this,p,"m",L).call(this,t)},L=function(e){const t={bubbles:e.bubbles,cancelable:e.cancelable,composed:e.composed,data:e.data,dataTransfer:e.dataTransfer,detail:e.detail,inputType:e.inputType,isComposing:e.isComposing,targetRanges:e.getTargetRanges(),view:e.view},a=new InputEvent("input",t);this.dispatchEvent(a)},M=function(e){const a=e.target.value;t(this,u,a,"f"),this.triggerInputValidation(!1);const i={key:e.key,keyCode:e.keyCode,code:e.code,ctrlKey:e.ctrlKey,shiftKey:e.shiftKey,altKey:e.altKey,charCode:e.charCode,which:e.which,bubbles:e.bubbles,cancelable:e.cancelable,composed:e.composed,detail:e.detail,isComposing:e.isComposing,location:e.location,metaKey:e.metaKey,repeat:e.repeat,view:e.view},s=new KeyboardEvent("keyup",i);this.dispatchEvent(s)},W=function(a){const i=a.target.value;t(this,u,i,"f"),e(this,p,"m",S).call(this,!0);const s=new Event("change");this.dispatchEvent(s)},S=function(t){if(!this.isAutoValidationDisabled)return e(this,w,"f").checkValidity(t)};!customElements.get("jb-textarea")&&window.customElements.define("jb-textarea",B),exports.JBTextareaWebComponent=B;
2
+ //# sourceMappingURL=jb-textarea.cjs.js.map
Binary file
Binary file
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jb-textarea.cjs.js","sources":["../../../modules/jb-validation/dist/jb-validation.js","../lib/jb-textarea.ts"],"sourcesContent":["function t(t,e,i,s){if(\"a\"===i&&!s)throw new TypeError(\"Private accessor was defined without a getter\");if(\"function\"==typeof e?t!==e||!s:!e.has(t))throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");return\"m\"===i?s:\"a\"===i?s.call(t):s?s.value:e.get(t)}function e(t,e,i,s,a){if(\"m\"===s)throw new TypeError(\"Private method is not writable\");if(\"a\"===s&&!a)throw new TypeError(\"Private accessor was defined without a setter\");if(\"function\"==typeof e?t!==e||!a:!e.has(t))throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");return\"a\"===s?a.call(t,i):a?a.value=i:e.set(t,i),i}var i,s,a,l,n,r,o,h,f,c,d;\"function\"==typeof SuppressedError&&SuppressedError;class u{get resultSummary(){return t(this,a,\"f\")}constructor(f,c,d,u,p){i.add(this),s.set(this,[]),a.set(this,{isValid:null,message:null}),this.result=null,l.set(this,null),n.set(this,null),r.set(this,null),o.set(this,null),h.set(this,[]),e(this,l,f,\"f\"),e(this,n,c,\"f\"),e(this,r,d,\"f\"),e(this,o,u,\"f\"),t(this,h,\"f\").push(p)}get list(){return t(this,s,\"f\")}set list(t){e(this,s,t,\"f\"),this.checkValidity(!1)}checkValidity(s=!0){const o=t(this,r,\"f\").call(this),h=t(this,i,\"m\",c).call(this,o);if(e(this,a,{isValid:h.isAllValid,message:null},\"f\"),h.isAllValid)t(this,n,\"f\").call(this);else{const e=h.validationList.find((t=>!t.isValid));this.resultSummary.message=e.message,1==s&&t(this,l,\"f\").call(this,e.message)}return this.result=h,h}addValidationListGetter(e){t(this,h,\"f\").push(e)}}s=new WeakMap,a=new WeakMap,l=new WeakMap,n=new WeakMap,r=new WeakMap,o=new WeakMap,h=new WeakMap,i=new WeakSet,f=function(){const e=[];return t(this,h,\"f\").forEach((t=>{\"function\"==typeof t&&e.push(...t())})),e.flat()},c=function(e){const s={validationList:[],isAllValid:!0};return[...t(this,i,\"m\",f).call(this),...this.list].forEach((a=>{const l=t(this,i,\"m\",d).call(this,e,a);s.validationList.push(l),l.isValid||(s.isAllValid=!1)})),s},d=function(e,i){let s,a=i.message;if(i.validator instanceof RegExp){const a=\"string\"==typeof e?e:t(this,o,\"f\").call(this,e);s=i.validator.test(a),i.validator.lastIndex=0}if(\"function\"==typeof i.validator){const t=i.validator(e);\"string\"==typeof t&&t.length>0&&(a=t),s=\"string\"==typeof t?0==t.length:t}return s?{isValid:!0,message:\"\",validation:i}:{isValid:!1,message:a,validation:i}};export{u as ValidationHelper};\n//# sourceMappingURL=jb-validation.js.map\n","import HTML from './jb-textarea.html';\r\nimport CSS from './jb-textarea.scss';\r\nimport { ValidationHelper } from 'jb-validation';\r\nimport { WithValidation } from 'jb-validation/types';\r\nimport { JBTextareaElements, ValidationValue } from './types';\r\n//export all internal type for user easier access\r\nexport { ValidationValue };\r\n\r\nexport class JBTextareaWebComponent extends HTMLElement implements WithValidation {\r\n #value = '';\r\n get value() {\r\n return this.#value;\r\n }\r\n set value(value) {\r\n this.#value = value;\r\n this.#textareaElement.value = value;\r\n if (this.autoHeight) {\r\n this.#changeHeightToContentSize();\r\n }\r\n }\r\n #isAutoValidationDisabled = false;\r\n get isAutoValidationDisabled(): boolean {\r\n return this.#isAutoValidationDisabled;\r\n }\r\n set isAutoValidationDisabled(value: boolean) {\r\n this.#isAutoValidationDisabled = value;\r\n }\r\n constructor() {\r\n super();\r\n this.#initWebComponent();\r\n this.#initProp();\r\n }\r\n #textareaElement!: HTMLTextAreaElement;\r\n #elements!: JBTextareaElements;\r\n #initWebComponent() {\r\n const shadowRoot = this.attachShadow({\r\n mode: 'open'\r\n });\r\n const html = `<style>${CSS}</style>` + '\\n' + HTML;\r\n const element = document.createElement('template');\r\n element.innerHTML = html;\r\n shadowRoot.appendChild(element.content.cloneNode(true));\r\n this.#textareaElement = shadowRoot.querySelector('.textarea-box textarea')!;\r\n this.#elements = {\r\n textarea: this.#textareaElement,\r\n label: shadowRoot.querySelector('label')!,\r\n labelValue: shadowRoot.querySelector('label .label-value')!,\r\n messageBox: shadowRoot.querySelector('.message-box')!\r\n }\r\n this.#registerEventListener();\r\n }\r\n #registerEventListener() {\r\n this.#elements.textarea.addEventListener('change', (e) => this.#onInputChange(e));\r\n this.#elements.textarea.addEventListener('beforeinput', this.#onInputBeforeInput.bind(this));\r\n this.#elements.textarea.addEventListener('input', (e) => this.#onInputInput((e as unknown as InputEvent)));\r\n this.#elements.textarea.addEventListener('keypress', this.#onInputKeyPress.bind(this));\r\n this.#elements.textarea.addEventListener('keyup', this.#onInputKeyup.bind(this));\r\n this.#elements.textarea.addEventListener('keydown', this.#onInputKeyDown.bind(this));\r\n }\r\n autoHeight = false;\r\n #validation = new ValidationHelper<ValidationValue>(this.showValidationError.bind(this), this.clearValidationError.bind(this), () => this.value, () => this.value, () => []);\r\n get validation(){\r\n return this.#validation;\r\n }\r\n #initProp() {\r\n this.value = this.getAttribute('value') || '';\r\n\r\n }\r\n static get observedAttributes() {\r\n return ['label', 'message', 'value', 'placeholder'];\r\n }\r\n attributeChangedCallback(name: string, oldValue: string, newValue: string) {\r\n // do something when an attribute has changed\r\n this.#onAttributeChange(name, newValue);\r\n }\r\n #onAttributeChange(name: string, value: string) {\r\n switch (name) {\r\n case 'label':\r\n this.#elements.labelValue.innerHTML = value;\r\n if (value == null || value == undefined || value == \"\") {\r\n this.#elements.label.classList.add('--hide');\r\n } else {\r\n this.#elements.label.classList.remove('--hide');\r\n }\r\n break;\r\n case 'message':\r\n this.#elements.messageBox.innerHTML = value;\r\n break;\r\n case 'placeholder':\r\n this.#textareaElement.setAttribute('placeholder', value);\r\n break;\r\n case 'value':\r\n this.value = value;\r\n break;\r\n }\r\n\r\n }\r\n #changeHeightToContentSize() {\r\n this.#textareaElement.style.height = \"4px\";\r\n this.#textareaElement.style.height = (this.#textareaElement.scrollHeight) + \"px\";\r\n }\r\n #onInputBeforeInput(e: InputEvent) {\r\n this.#dispatchBeforeInputEvent(e);\r\n }\r\n #dispatchBeforeInputEvent(e: InputEvent): boolean {\r\n const eventInitDict = {\r\n bubbles: e.bubbles,\r\n cancelable: e.cancelable,\r\n composed: e.composed,\r\n data: e.data,\r\n isComposing: e.isComposing,\r\n inputType: e.inputType,\r\n dataTransfer: e.dataTransfer,\r\n view: e.view,\r\n detail: e.detail,\r\n targetRanges: e.getTargetRanges(),\r\n };\r\n const event = new InputEvent('beforeinput', eventInitDict);\r\n this.dispatchEvent(event);\r\n if (event.defaultPrevented) {\r\n e.preventDefault();\r\n }\r\n return event.defaultPrevented;\r\n }\r\n #onInputKeyDown(e: KeyboardEvent) {\r\n const keyDownnInitObj: KeyboardEventInit = {\r\n key: e.key,\r\n keyCode: e.keyCode,\r\n code: e.code,\r\n ctrlKey: e.ctrlKey,\r\n shiftKey: e.shiftKey,\r\n altKey: e.altKey,\r\n charCode: e.charCode,\r\n which: e.which,\r\n cancelable: true,\r\n location: e.location,\r\n detail: e.detail,\r\n bubbles: e.bubbles,\r\n composed: e.composed,\r\n isComposing: e.isComposing,\r\n metaKey: e.metaKey,\r\n repeat: e.repeat,\r\n view: e.view\r\n };\r\n const event = new KeyboardEvent(\"keydown\", keyDownnInitObj);\r\n const isEventNotPrevented = this.dispatchEvent(event);\r\n if (!isEventNotPrevented) {\r\n //if event prevented by e.preventDefault();\r\n e.preventDefault();\r\n }\r\n }\r\n #onInputKeyPress(e: KeyboardEvent) {\r\n const keyPressInitObj: KeyboardEventInit = {\r\n key: e.key,\r\n keyCode: e.keyCode,\r\n code: e.code,\r\n ctrlKey: e.ctrlKey,\r\n shiftKey: e.shiftKey,\r\n altKey: e.altKey,\r\n charCode: e.charCode,\r\n which: e.which,\r\n cancelable: true,\r\n location: e.location,\r\n detail: e.detail,\r\n bubbles: e.bubbles,\r\n composed: e.composed,\r\n isComposing: e.isComposing,\r\n metaKey: e.metaKey,\r\n repeat: e.repeat,\r\n view: e.view\r\n };\r\n const event = new KeyboardEvent('keypress', keyPressInitObj);\r\n const isEventNotPrevented = this.dispatchEvent(event);\r\n if (!isEventNotPrevented) {\r\n //if event prevented by e.preventDefault();\r\n e.preventDefault();\r\n }\r\n }\r\n #onInputInput(e: InputEvent) {\r\n if (this.autoHeight) {\r\n this.#changeHeightToContentSize();\r\n }\r\n this.#triggerInputEvent(e);\r\n }\r\n #triggerInputEvent(e: InputEvent) {\r\n const inputInitObject: InputEventInit = {\r\n bubbles: e.bubbles,\r\n cancelable: e.cancelable,\r\n composed: e.composed,\r\n data: e.data,\r\n dataTransfer: e.dataTransfer,\r\n detail: e.detail,\r\n inputType: e.inputType,\r\n isComposing: e.isComposing,\r\n targetRanges: e.getTargetRanges(),\r\n view: e.view\r\n };\r\n const event = new InputEvent(\"input\", inputInitObject);\r\n this.dispatchEvent(event);\r\n }\r\n #onInputKeyup(e: KeyboardEvent) {\r\n const inputText = (e.target as HTMLTextAreaElement).value;\r\n //here is the rare time we update _value directly becuase we want trigger event that may read value directly from dom\r\n this.#value = inputText;\r\n this.triggerInputValidation(false);\r\n const keyUpInitObj: KeyboardEventInit = {\r\n key: e.key,\r\n keyCode: e.keyCode,\r\n code: e.code,\r\n ctrlKey: e.ctrlKey,\r\n shiftKey: e.shiftKey,\r\n altKey: e.altKey,\r\n charCode: e.charCode,\r\n which: e.which,\r\n bubbles: e.bubbles,\r\n cancelable: e.cancelable,\r\n composed: e.composed,\r\n detail: e.detail,\r\n isComposing: e.isComposing,\r\n location: e.location,\r\n metaKey: e.metaKey,\r\n repeat: e.repeat,\r\n view: e.view\r\n };\r\n const event = new KeyboardEvent('keyup', keyUpInitObj);\r\n this.dispatchEvent(event);\r\n }\r\n #onInputChange(e: Event) {\r\n const inputText = (e.target as HTMLTextAreaElement).value;\r\n //here is the rare time we update _value directly becuase we want trigger event that may read value directly from dom\r\n this.#value = inputText;\r\n this.#checkValidity(true);\r\n const event = new Event('change');\r\n this.dispatchEvent(event);\r\n }\r\n /**\r\n * \r\n * @param showError wether to show error or not \r\n * @deprecated use .validation.checkValidity instead\r\n */\r\n triggerInputValidation(showError = true) {\r\n this.validation.checkValidity(showError);\r\n }\r\n\r\n showValidationError(error: string) {\r\n this.#elements.messageBox.innerHTML = error;\r\n this.#elements.messageBox.classList.add('error');\r\n }\r\n clearValidationError() {\r\n const text = this.getAttribute('message') || '';\r\n this.#elements.messageBox.innerHTML = text;\r\n this.#elements.messageBox.classList.remove('error');\r\n }\r\n #checkValidity(showError: boolean) {\r\n if (!this.isAutoValidationDisabled) {\r\n return this.#validation.checkValidity(showError);\r\n }\r\n }\r\n}\r\n\r\nconst myElementNotExists = !customElements.get('jb-textarea');\r\nif (myElementNotExists) {\r\n //prevent duplicate registering\r\n window.customElements.define('jb-textarea', JBTextareaWebComponent);\r\n}"],"names":["i","s","a","l","n","r","o","h","f","c","d","t","e","TypeError","has","call","value","get","set","SuppressedError","u","resultSummary","this","constructor","p","add","isValid","message","result","push","list","checkValidity","isAllValid","validationList","find","addValidationListGetter","WeakMap","WeakSet","forEach","flat","validator","RegExp","test","lastIndex","length","validation","JBTextareaWebComponent","HTMLElement","__classPrivateFieldGet","_JBTextareaWebComponent_value","__classPrivateFieldSet","_JBTextareaWebComponent_textareaElement","autoHeight","_JBTextareaWebComponent_instances","_JBTextareaWebComponent_changeHeightToContentSize","isAutoValidationDisabled","_JBTextareaWebComponent_isAutoValidationDisabled","super","_JBTextareaWebComponent_elements","_JBTextareaWebComponent_validation","ValidationHelper","showValidationError","bind","clearValidationError","_JBTextareaWebComponent_initWebComponent","_JBTextareaWebComponent_initProp","observedAttributes","attributeChangedCallback","name","oldValue","newValue","triggerInputValidation","showError","error","messageBox","innerHTML","classList","text","getAttribute","remove","shadowRoot","attachShadow","mode","element","document","createElement","appendChild","content","cloneNode","querySelector","textarea","label","labelValue","_JBTextareaWebComponent_registerEventListener","addEventListener","_JBTextareaWebComponent_onInputChange","_JBTextareaWebComponent_onInputInput","_JBTextareaWebComponent_onAttributeChange","undefined","setAttribute","style","height","_JBTextareaWebComponent_dispatchBeforeInputEvent","eventInitDict","bubbles","cancelable","composed","data","isComposing","inputType","dataTransfer","view","detail","targetRanges","getTargetRanges","event","InputEvent","dispatchEvent","defaultPrevented","preventDefault","keyDownnInitObj","key","keyCode","code","ctrlKey","shiftKey","altKey","charCode","which","location","metaKey","repeat","KeyboardEvent","keyPressInitObj","_JBTextareaWebComponent_triggerInputEvent","inputInitObject","inputText","target","keyUpInitObj","_JBTextareaWebComponent_checkValidity","Event","customElements","window","define"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ function e(e,t,a,i){if("a"===a&&!i)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===a?i:"a"===a?i.call(e):i?i.value:t.get(e)}function t(e,t,a,i,s){if("m"===i)throw new TypeError("Private method is not writable");if("a"===i&&!s)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!s:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===i?s.call(e,a):s?s.value=a:t.set(e,a),a}"function"==typeof SuppressedError&&SuppressedError;var a,i,s,n,r,o,l,c,h,d,b,p,u,f,m,v,x,g,w,y,k,E,j,C,K,V,T,L,M,W,S;function z(e,t,a,i){if("a"===a&&!i)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===a?i:"a"===a?i.call(e):i?i.value:t.get(e)}function A(e,t,a,i,s){if("function"==typeof t?e!==t||!s:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return t.set(e,a),a}"function"==typeof SuppressedError&&SuppressedError;class H{get resultSummary(){return z(this,s,"f")}constructor(e,t,h,d,b){a.add(this),i.set(this,[]),s.set(this,{isValid:null,message:null}),this.result=null,n.set(this,null),r.set(this,null),o.set(this,null),l.set(this,null),c.set(this,[]),A(this,n,e),A(this,r,t),A(this,o,h),A(this,l,d),z(this,c,"f").push(b)}get list(){return z(this,i,"f")}set list(e){A(this,i,e),this.checkValidity(!1)}checkValidity(e=!0){const t=z(this,o,"f").call(this),i=z(this,a,"m",d).call(this,t);if(A(this,s,{isValid:i.isAllValid,message:null}),i.isAllValid)z(this,r,"f").call(this);else{const t=i.validationList.find((e=>!e.isValid));this.resultSummary.message=t.message,1==e&&z(this,n,"f").call(this,t.message)}return this.result=i,i}addValidationListGetter(e){z(this,c,"f").push(e)}}i=new WeakMap,s=new WeakMap,n=new WeakMap,r=new WeakMap,o=new WeakMap,l=new WeakMap,c=new WeakMap,a=new WeakSet,h=function(){const e=[];return z(this,c,"f").forEach((t=>{"function"==typeof t&&e.push(...t())})),e.flat()},d=function(e){const t={validationList:[],isAllValid:!0};return[...z(this,a,"m",h).call(this),...this.list].forEach((i=>{const s=z(this,a,"m",b).call(this,e,i);t.validationList.push(s),s.isValid||(t.isAllValid=!1)})),t},b=function(e,t){let a,i=t.message;if(t.validator instanceof RegExp){const i="string"==typeof e?e:z(this,l,"f").call(this,e);a=t.validator.test(i),t.validator.lastIndex=0}if("function"==typeof t.validator){const s=t.validator(e);"string"==typeof s&&s.length>0&&(i=s),a="string"==typeof s?0==s.length:s}return a?{isValid:!0,message:"",validation:t}:{isValid:!1,message:i,validation:t}};class B extends HTMLElement{get value(){return e(this,u,"f")}set value(a){t(this,u,a,"f"),e(this,m,"f").value=a,this.autoHeight&&e(this,p,"m",E).call(this)}get isAutoValidationDisabled(){return e(this,f,"f")}set isAutoValidationDisabled(e){t(this,f,e,"f")}constructor(){super(),p.add(this),u.set(this,""),f.set(this,!1),m.set(this,void 0),v.set(this,void 0),this.autoHeight=!1,w.set(this,new H(this.showValidationError.bind(this),this.clearValidationError.bind(this),(()=>this.value),(()=>this.value),(()=>[]))),e(this,p,"m",x).call(this),e(this,p,"m",y).call(this)}get validation(){return e(this,w,"f")}static get observedAttributes(){return["label","message","value","placeholder"]}attributeChangedCallback(t,a,i){e(this,p,"m",k).call(this,t,i)}triggerInputValidation(e=!0){this.validation.checkValidity(e)}showValidationError(t){e(this,v,"f").messageBox.innerHTML=t,e(this,v,"f").messageBox.classList.add("error")}clearValidationError(){const t=this.getAttribute("message")||"";e(this,v,"f").messageBox.innerHTML=t,e(this,v,"f").messageBox.classList.remove("error")}}u=new WeakMap,f=new WeakMap,m=new WeakMap,v=new WeakMap,w=new WeakMap,p=new WeakSet,x=function(){const a=this.attachShadow({mode:"open"}),i=document.createElement("template");i.innerHTML='<style>.jb-textarea-web-component {\n width: 100%;\n margin: var(--jb-textarea-margin, 12px 0);\n}\n.jb-textarea-web-component label {\n width: 100%;\n margin: 4px 0px;\n display: block;\n font-size: var(--jb-textarea-label-font-size, 0.8em);\n color: var(--jb-textarea-label-color, #1f1735);\n}\n.jb-textarea-web-component label.--hide {\n display: none;\n}\n.jb-textarea-web-component .textarea-box {\n width: 100%;\n box-sizing: border-box;\n border: solid var(--jb-textarea-border-width, 1px) var(--jb-textarea-border-color, #f7f6f6);\n background-color: var(--jb-textarea-bgcolor, #f7f6f6);\n border-bottom: solid var(--jb-textarea-border-botton-width, 3px) var(--jb-textarea-border-color, #f7f6f6);\n border-radius: var(--jb-textarea-border-radius, 16px);\n display: block;\n transition: ease 0.3s all;\n overflow: hidden;\n display: flex;\n justify-content: space-between;\n}\n.jb-textarea-web-component .textarea-box:focus-within {\n border-color: var(--jb-textarea-border-color-focus, #1e2832);\n}\n.jb-textarea-web-component .textarea-box textarea {\n border: none;\n width: 100%;\n box-sizing: border-box;\n min-height: var(--jb-textarea-min-height, 80px);\n height: var(--jb-textarea-min-height, 80px);\n max-height: var(--jb-textarea-max-height, none);\n background-color: transparent;\n padding: 6px 12px 4px 12px;\n display: block;\n font-family: inherit;\n font-size: var(--jb-textarea-value-font-size, 1.1em);\n color: var(--jb-textarea-value-color, #1f1735);\n margin: 0;\n border-radius: 0;\n resize: vertical;\n color: var(--jb-textarea-value-color, initial);\n}\n.jb-textarea-web-component .textarea-box textarea:focus {\n outline: none;\n}\n.jb-textarea-web-component .textarea-box textarea::placeholder {\n color: var(--jb-textarea-placeholder-color, initial);\n font-size: var(--jb-textarea-placeholder-font-size, initial);\n}\n.jb-textarea-web-component .message-box {\n font-size: var(--jb-textarea-message-font-size, 0.7em);\n padding: 2px 8px;\n color: #929292;\n}\n.jb-textarea-web-component .message-box:empty {\n padding: 0;\n}\n.jb-textarea-web-component .message-box.error {\n color: var(--jb-textarea-message-error-color, red);\n}</style>\n<div class="jb-textarea-web-component">\r\n <label class="--hide"><span class="label-value"></span><span>:</span></label>\r\n <div class="textarea-box">\r\n <textarea class="textarea-input"></textarea>\r\n </div>\r\n <div class="message-box"></div>\r\n</div>',a.appendChild(i.content.cloneNode(!0)),t(this,m,a.querySelector(".textarea-box textarea"),"f"),t(this,v,{textarea:e(this,m,"f"),label:a.querySelector("label"),labelValue:a.querySelector("label .label-value"),messageBox:a.querySelector(".message-box")},"f"),e(this,p,"m",g).call(this)},g=function(){e(this,v,"f").textarea.addEventListener("change",(t=>e(this,p,"m",W).call(this,t))),e(this,v,"f").textarea.addEventListener("beforeinput",e(this,p,"m",j).bind(this)),e(this,v,"f").textarea.addEventListener("input",(t=>e(this,p,"m",T).call(this,t))),e(this,v,"f").textarea.addEventListener("keypress",e(this,p,"m",V).bind(this)),e(this,v,"f").textarea.addEventListener("keyup",e(this,p,"m",M).bind(this)),e(this,v,"f").textarea.addEventListener("keydown",e(this,p,"m",K).bind(this))},y=function(){this.value=this.getAttribute("value")||""},k=function(t,a){switch(t){case"label":e(this,v,"f").labelValue.innerHTML=a,null==a||null==a||""==a?e(this,v,"f").label.classList.add("--hide"):e(this,v,"f").label.classList.remove("--hide");break;case"message":e(this,v,"f").messageBox.innerHTML=a;break;case"placeholder":e(this,m,"f").setAttribute("placeholder",a);break;case"value":this.value=a}},E=function(){e(this,m,"f").style.height="4px",e(this,m,"f").style.height=e(this,m,"f").scrollHeight+"px"},j=function(t){e(this,p,"m",C).call(this,t)},C=function(e){const t={bubbles:e.bubbles,cancelable:e.cancelable,composed:e.composed,data:e.data,isComposing:e.isComposing,inputType:e.inputType,dataTransfer:e.dataTransfer,view:e.view,detail:e.detail,targetRanges:e.getTargetRanges()},a=new InputEvent("beforeinput",t);return this.dispatchEvent(a),a.defaultPrevented&&e.preventDefault(),a.defaultPrevented},K=function(e){const t={key:e.key,keyCode:e.keyCode,code:e.code,ctrlKey:e.ctrlKey,shiftKey:e.shiftKey,altKey:e.altKey,charCode:e.charCode,which:e.which,cancelable:!0,location:e.location,detail:e.detail,bubbles:e.bubbles,composed:e.composed,isComposing:e.isComposing,metaKey:e.metaKey,repeat:e.repeat,view:e.view},a=new KeyboardEvent("keydown",t);this.dispatchEvent(a)||e.preventDefault()},V=function(e){const t={key:e.key,keyCode:e.keyCode,code:e.code,ctrlKey:e.ctrlKey,shiftKey:e.shiftKey,altKey:e.altKey,charCode:e.charCode,which:e.which,cancelable:!0,location:e.location,detail:e.detail,bubbles:e.bubbles,composed:e.composed,isComposing:e.isComposing,metaKey:e.metaKey,repeat:e.repeat,view:e.view},a=new KeyboardEvent("keypress",t);this.dispatchEvent(a)||e.preventDefault()},T=function(t){this.autoHeight&&e(this,p,"m",E).call(this),e(this,p,"m",L).call(this,t)},L=function(e){const t={bubbles:e.bubbles,cancelable:e.cancelable,composed:e.composed,data:e.data,dataTransfer:e.dataTransfer,detail:e.detail,inputType:e.inputType,isComposing:e.isComposing,targetRanges:e.getTargetRanges(),view:e.view},a=new InputEvent("input",t);this.dispatchEvent(a)},M=function(e){const a=e.target.value;t(this,u,a,"f"),this.triggerInputValidation(!1);const i={key:e.key,keyCode:e.keyCode,code:e.code,ctrlKey:e.ctrlKey,shiftKey:e.shiftKey,altKey:e.altKey,charCode:e.charCode,which:e.which,bubbles:e.bubbles,cancelable:e.cancelable,composed:e.composed,detail:e.detail,isComposing:e.isComposing,location:e.location,metaKey:e.metaKey,repeat:e.repeat,view:e.view},s=new KeyboardEvent("keyup",i);this.dispatchEvent(s)},W=function(a){const i=a.target.value;t(this,u,i,"f"),e(this,p,"m",S).call(this,!0);const s=new Event("change");this.dispatchEvent(s)},S=function(t){if(!this.isAutoValidationDisabled)return e(this,w,"f").checkValidity(t)};!customElements.get("jb-textarea")&&window.customElements.define("jb-textarea",B);export{B as JBTextareaWebComponent};
2
+ //# sourceMappingURL=jb-textarea.js.map
Binary file
Binary file
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jb-textarea.js","sources":["../../../modules/jb-validation/dist/jb-validation.js","../lib/jb-textarea.ts"],"sourcesContent":["function t(t,e,i,s){if(\"a\"===i&&!s)throw new TypeError(\"Private accessor was defined without a getter\");if(\"function\"==typeof e?t!==e||!s:!e.has(t))throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");return\"m\"===i?s:\"a\"===i?s.call(t):s?s.value:e.get(t)}function e(t,e,i,s,a){if(\"m\"===s)throw new TypeError(\"Private method is not writable\");if(\"a\"===s&&!a)throw new TypeError(\"Private accessor was defined without a setter\");if(\"function\"==typeof e?t!==e||!a:!e.has(t))throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");return\"a\"===s?a.call(t,i):a?a.value=i:e.set(t,i),i}var i,s,a,l,n,r,o,h,f,c,d;\"function\"==typeof SuppressedError&&SuppressedError;class u{get resultSummary(){return t(this,a,\"f\")}constructor(f,c,d,u,p){i.add(this),s.set(this,[]),a.set(this,{isValid:null,message:null}),this.result=null,l.set(this,null),n.set(this,null),r.set(this,null),o.set(this,null),h.set(this,[]),e(this,l,f,\"f\"),e(this,n,c,\"f\"),e(this,r,d,\"f\"),e(this,o,u,\"f\"),t(this,h,\"f\").push(p)}get list(){return t(this,s,\"f\")}set list(t){e(this,s,t,\"f\"),this.checkValidity(!1)}checkValidity(s=!0){const o=t(this,r,\"f\").call(this),h=t(this,i,\"m\",c).call(this,o);if(e(this,a,{isValid:h.isAllValid,message:null},\"f\"),h.isAllValid)t(this,n,\"f\").call(this);else{const e=h.validationList.find((t=>!t.isValid));this.resultSummary.message=e.message,1==s&&t(this,l,\"f\").call(this,e.message)}return this.result=h,h}addValidationListGetter(e){t(this,h,\"f\").push(e)}}s=new WeakMap,a=new WeakMap,l=new WeakMap,n=new WeakMap,r=new WeakMap,o=new WeakMap,h=new WeakMap,i=new WeakSet,f=function(){const e=[];return t(this,h,\"f\").forEach((t=>{\"function\"==typeof t&&e.push(...t())})),e.flat()},c=function(e){const s={validationList:[],isAllValid:!0};return[...t(this,i,\"m\",f).call(this),...this.list].forEach((a=>{const l=t(this,i,\"m\",d).call(this,e,a);s.validationList.push(l),l.isValid||(s.isAllValid=!1)})),s},d=function(e,i){let s,a=i.message;if(i.validator instanceof RegExp){const a=\"string\"==typeof e?e:t(this,o,\"f\").call(this,e);s=i.validator.test(a),i.validator.lastIndex=0}if(\"function\"==typeof i.validator){const t=i.validator(e);\"string\"==typeof t&&t.length>0&&(a=t),s=\"string\"==typeof t?0==t.length:t}return s?{isValid:!0,message:\"\",validation:i}:{isValid:!1,message:a,validation:i}};export{u as ValidationHelper};\n//# sourceMappingURL=jb-validation.js.map\n","import HTML from './jb-textarea.html';\r\nimport CSS from './jb-textarea.scss';\r\nimport { ValidationHelper } from 'jb-validation';\r\nimport { WithValidation } from 'jb-validation/types';\r\nimport { JBTextareaElements, ValidationValue } from './types';\r\n//export all internal type for user easier access\r\nexport { ValidationValue };\r\n\r\nexport class JBTextareaWebComponent extends HTMLElement implements WithValidation {\r\n #value = '';\r\n get value() {\r\n return this.#value;\r\n }\r\n set value(value) {\r\n this.#value = value;\r\n this.#textareaElement.value = value;\r\n if (this.autoHeight) {\r\n this.#changeHeightToContentSize();\r\n }\r\n }\r\n #isAutoValidationDisabled = false;\r\n get isAutoValidationDisabled(): boolean {\r\n return this.#isAutoValidationDisabled;\r\n }\r\n set isAutoValidationDisabled(value: boolean) {\r\n this.#isAutoValidationDisabled = value;\r\n }\r\n constructor() {\r\n super();\r\n this.#initWebComponent();\r\n this.#initProp();\r\n }\r\n #textareaElement!: HTMLTextAreaElement;\r\n #elements!: JBTextareaElements;\r\n #initWebComponent() {\r\n const shadowRoot = this.attachShadow({\r\n mode: 'open'\r\n });\r\n const html = `<style>${CSS}</style>` + '\\n' + HTML;\r\n const element = document.createElement('template');\r\n element.innerHTML = html;\r\n shadowRoot.appendChild(element.content.cloneNode(true));\r\n this.#textareaElement = shadowRoot.querySelector('.textarea-box textarea')!;\r\n this.#elements = {\r\n textarea: this.#textareaElement,\r\n label: shadowRoot.querySelector('label')!,\r\n labelValue: shadowRoot.querySelector('label .label-value')!,\r\n messageBox: shadowRoot.querySelector('.message-box')!\r\n }\r\n this.#registerEventListener();\r\n }\r\n #registerEventListener() {\r\n this.#elements.textarea.addEventListener('change', (e) => this.#onInputChange(e));\r\n this.#elements.textarea.addEventListener('beforeinput', this.#onInputBeforeInput.bind(this));\r\n this.#elements.textarea.addEventListener('input', (e) => this.#onInputInput((e as unknown as InputEvent)));\r\n this.#elements.textarea.addEventListener('keypress', this.#onInputKeyPress.bind(this));\r\n this.#elements.textarea.addEventListener('keyup', this.#onInputKeyup.bind(this));\r\n this.#elements.textarea.addEventListener('keydown', this.#onInputKeyDown.bind(this));\r\n }\r\n autoHeight = false;\r\n #validation = new ValidationHelper<ValidationValue>(this.showValidationError.bind(this), this.clearValidationError.bind(this), () => this.value, () => this.value, () => []);\r\n get validation(){\r\n return this.#validation;\r\n }\r\n #initProp() {\r\n this.value = this.getAttribute('value') || '';\r\n\r\n }\r\n static get observedAttributes() {\r\n return ['label', 'message', 'value', 'placeholder'];\r\n }\r\n attributeChangedCallback(name: string, oldValue: string, newValue: string) {\r\n // do something when an attribute has changed\r\n this.#onAttributeChange(name, newValue);\r\n }\r\n #onAttributeChange(name: string, value: string) {\r\n switch (name) {\r\n case 'label':\r\n this.#elements.labelValue.innerHTML = value;\r\n if (value == null || value == undefined || value == \"\") {\r\n this.#elements.label.classList.add('--hide');\r\n } else {\r\n this.#elements.label.classList.remove('--hide');\r\n }\r\n break;\r\n case 'message':\r\n this.#elements.messageBox.innerHTML = value;\r\n break;\r\n case 'placeholder':\r\n this.#textareaElement.setAttribute('placeholder', value);\r\n break;\r\n case 'value':\r\n this.value = value;\r\n break;\r\n }\r\n\r\n }\r\n #changeHeightToContentSize() {\r\n this.#textareaElement.style.height = \"4px\";\r\n this.#textareaElement.style.height = (this.#textareaElement.scrollHeight) + \"px\";\r\n }\r\n #onInputBeforeInput(e: InputEvent) {\r\n this.#dispatchBeforeInputEvent(e);\r\n }\r\n #dispatchBeforeInputEvent(e: InputEvent): boolean {\r\n const eventInitDict = {\r\n bubbles: e.bubbles,\r\n cancelable: e.cancelable,\r\n composed: e.composed,\r\n data: e.data,\r\n isComposing: e.isComposing,\r\n inputType: e.inputType,\r\n dataTransfer: e.dataTransfer,\r\n view: e.view,\r\n detail: e.detail,\r\n targetRanges: e.getTargetRanges(),\r\n };\r\n const event = new InputEvent('beforeinput', eventInitDict);\r\n this.dispatchEvent(event);\r\n if (event.defaultPrevented) {\r\n e.preventDefault();\r\n }\r\n return event.defaultPrevented;\r\n }\r\n #onInputKeyDown(e: KeyboardEvent) {\r\n const keyDownnInitObj: KeyboardEventInit = {\r\n key: e.key,\r\n keyCode: e.keyCode,\r\n code: e.code,\r\n ctrlKey: e.ctrlKey,\r\n shiftKey: e.shiftKey,\r\n altKey: e.altKey,\r\n charCode: e.charCode,\r\n which: e.which,\r\n cancelable: true,\r\n location: e.location,\r\n detail: e.detail,\r\n bubbles: e.bubbles,\r\n composed: e.composed,\r\n isComposing: e.isComposing,\r\n metaKey: e.metaKey,\r\n repeat: e.repeat,\r\n view: e.view\r\n };\r\n const event = new KeyboardEvent(\"keydown\", keyDownnInitObj);\r\n const isEventNotPrevented = this.dispatchEvent(event);\r\n if (!isEventNotPrevented) {\r\n //if event prevented by e.preventDefault();\r\n e.preventDefault();\r\n }\r\n }\r\n #onInputKeyPress(e: KeyboardEvent) {\r\n const keyPressInitObj: KeyboardEventInit = {\r\n key: e.key,\r\n keyCode: e.keyCode,\r\n code: e.code,\r\n ctrlKey: e.ctrlKey,\r\n shiftKey: e.shiftKey,\r\n altKey: e.altKey,\r\n charCode: e.charCode,\r\n which: e.which,\r\n cancelable: true,\r\n location: e.location,\r\n detail: e.detail,\r\n bubbles: e.bubbles,\r\n composed: e.composed,\r\n isComposing: e.isComposing,\r\n metaKey: e.metaKey,\r\n repeat: e.repeat,\r\n view: e.view\r\n };\r\n const event = new KeyboardEvent('keypress', keyPressInitObj);\r\n const isEventNotPrevented = this.dispatchEvent(event);\r\n if (!isEventNotPrevented) {\r\n //if event prevented by e.preventDefault();\r\n e.preventDefault();\r\n }\r\n }\r\n #onInputInput(e: InputEvent) {\r\n if (this.autoHeight) {\r\n this.#changeHeightToContentSize();\r\n }\r\n this.#triggerInputEvent(e);\r\n }\r\n #triggerInputEvent(e: InputEvent) {\r\n const inputInitObject: InputEventInit = {\r\n bubbles: e.bubbles,\r\n cancelable: e.cancelable,\r\n composed: e.composed,\r\n data: e.data,\r\n dataTransfer: e.dataTransfer,\r\n detail: e.detail,\r\n inputType: e.inputType,\r\n isComposing: e.isComposing,\r\n targetRanges: e.getTargetRanges(),\r\n view: e.view\r\n };\r\n const event = new InputEvent(\"input\", inputInitObject);\r\n this.dispatchEvent(event);\r\n }\r\n #onInputKeyup(e: KeyboardEvent) {\r\n const inputText = (e.target as HTMLTextAreaElement).value;\r\n //here is the rare time we update _value directly becuase we want trigger event that may read value directly from dom\r\n this.#value = inputText;\r\n this.triggerInputValidation(false);\r\n const keyUpInitObj: KeyboardEventInit = {\r\n key: e.key,\r\n keyCode: e.keyCode,\r\n code: e.code,\r\n ctrlKey: e.ctrlKey,\r\n shiftKey: e.shiftKey,\r\n altKey: e.altKey,\r\n charCode: e.charCode,\r\n which: e.which,\r\n bubbles: e.bubbles,\r\n cancelable: e.cancelable,\r\n composed: e.composed,\r\n detail: e.detail,\r\n isComposing: e.isComposing,\r\n location: e.location,\r\n metaKey: e.metaKey,\r\n repeat: e.repeat,\r\n view: e.view\r\n };\r\n const event = new KeyboardEvent('keyup', keyUpInitObj);\r\n this.dispatchEvent(event);\r\n }\r\n #onInputChange(e: Event) {\r\n const inputText = (e.target as HTMLTextAreaElement).value;\r\n //here is the rare time we update _value directly becuase we want trigger event that may read value directly from dom\r\n this.#value = inputText;\r\n this.#checkValidity(true);\r\n const event = new Event('change');\r\n this.dispatchEvent(event);\r\n }\r\n /**\r\n * \r\n * @param showError wether to show error or not \r\n * @deprecated use .validation.checkValidity instead\r\n */\r\n triggerInputValidation(showError = true) {\r\n this.validation.checkValidity(showError);\r\n }\r\n\r\n showValidationError(error: string) {\r\n this.#elements.messageBox.innerHTML = error;\r\n this.#elements.messageBox.classList.add('error');\r\n }\r\n clearValidationError() {\r\n const text = this.getAttribute('message') || '';\r\n this.#elements.messageBox.innerHTML = text;\r\n this.#elements.messageBox.classList.remove('error');\r\n }\r\n #checkValidity(showError: boolean) {\r\n if (!this.isAutoValidationDisabled) {\r\n return this.#validation.checkValidity(showError);\r\n }\r\n }\r\n}\r\n\r\nconst myElementNotExists = !customElements.get('jb-textarea');\r\nif (myElementNotExists) {\r\n //prevent duplicate registering\r\n window.customElements.define('jb-textarea', JBTextareaWebComponent);\r\n}"],"names":["i","s","a","l","n","r","o","h","f","c","d","t","e","TypeError","has","call","value","get","set","SuppressedError","u","resultSummary","this","constructor","p","add","isValid","message","result","push","list","checkValidity","isAllValid","validationList","find","addValidationListGetter","WeakMap","WeakSet","forEach","flat","validator","RegExp","test","lastIndex","length","validation","JBTextareaWebComponent","HTMLElement","__classPrivateFieldGet","_JBTextareaWebComponent_value","__classPrivateFieldSet","_JBTextareaWebComponent_textareaElement","autoHeight","_JBTextareaWebComponent_instances","_JBTextareaWebComponent_changeHeightToContentSize","isAutoValidationDisabled","_JBTextareaWebComponent_isAutoValidationDisabled","super","_JBTextareaWebComponent_elements","_JBTextareaWebComponent_validation","ValidationHelper","showValidationError","bind","clearValidationError","_JBTextareaWebComponent_initWebComponent","_JBTextareaWebComponent_initProp","observedAttributes","attributeChangedCallback","name","oldValue","newValue","triggerInputValidation","showError","error","messageBox","innerHTML","classList","text","getAttribute","remove","shadowRoot","attachShadow","mode","element","document","createElement","appendChild","content","cloneNode","querySelector","textarea","label","labelValue","_JBTextareaWebComponent_registerEventListener","addEventListener","_JBTextareaWebComponent_onInputChange","_JBTextareaWebComponent_onInputInput","_JBTextareaWebComponent_onAttributeChange","undefined","setAttribute","style","height","_JBTextareaWebComponent_dispatchBeforeInputEvent","eventInitDict","bubbles","cancelable","composed","data","isComposing","inputType","dataTransfer","view","detail","targetRanges","getTargetRanges","event","InputEvent","dispatchEvent","defaultPrevented","preventDefault","keyDownnInitObj","key","keyCode","code","ctrlKey","shiftKey","altKey","charCode","which","location","metaKey","repeat","KeyboardEvent","keyPressInitObj","_JBTextareaWebComponent_triggerInputEvent","inputInitObject","inputText","target","keyUpInitObj","_JBTextareaWebComponent_checkValidity","Event","customElements","window","define"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).JBTextarea={})}(this,(function(e){"use strict";function t(e,t,a,i){if("a"===a&&!i)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===a?i:"a"===a?i.call(e):i?i.value:t.get(e)}function a(e,t,a,i,n){if("m"===i)throw new TypeError("Private method is not writable");if("a"===i&&!n)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===i?n.call(e,a):n?n.value=a:t.set(e,a),a}"function"==typeof SuppressedError&&SuppressedError;var i,n,s,o,r,l,c,h,d,b,p,u,f,m,v,x,g,w,y,k,E,j,C,T,K,V,L,M,W,S,z;function A(e,t,a,i){if("a"===a&&!i)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===a?i:"a"===a?i.call(e):i?i.value:t.get(e)}function H(e,t,a,i,n){if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return t.set(e,a),a}"function"==typeof SuppressedError&&SuppressedError;class B{get resultSummary(){return A(this,s,"f")}constructor(e,t,a,d,b){i.add(this),n.set(this,[]),s.set(this,{isValid:null,message:null}),this.result=null,o.set(this,null),r.set(this,null),l.set(this,null),c.set(this,null),h.set(this,[]),H(this,o,e),H(this,r,t),H(this,l,a),H(this,c,d),A(this,h,"f").push(b)}get list(){return A(this,n,"f")}set list(e){H(this,n,e),this.checkValidity(!1)}checkValidity(e=!0){const t=A(this,l,"f").call(this),a=A(this,i,"m",b).call(this,t);if(H(this,s,{isValid:a.isAllValid,message:null}),a.isAllValid)A(this,r,"f").call(this);else{const t=a.validationList.find((e=>!e.isValid));this.resultSummary.message=t.message,1==e&&A(this,o,"f").call(this,t.message)}return this.result=a,a}addValidationListGetter(e){A(this,h,"f").push(e)}}n=new WeakMap,s=new WeakMap,o=new WeakMap,r=new WeakMap,l=new WeakMap,c=new WeakMap,h=new WeakMap,i=new WeakSet,d=function(){const e=[];return A(this,h,"f").forEach((t=>{"function"==typeof t&&e.push(...t())})),e.flat()},b=function(e){const t={validationList:[],isAllValid:!0};return[...A(this,i,"m",d).call(this),...this.list].forEach((a=>{const n=A(this,i,"m",p).call(this,e,a);t.validationList.push(n),n.isValid||(t.isAllValid=!1)})),t},p=function(e,t){let a,i=t.message;if(t.validator instanceof RegExp){const i="string"==typeof e?e:A(this,c,"f").call(this,e);a=t.validator.test(i),t.validator.lastIndex=0}if("function"==typeof t.validator){const n=t.validator(e);"string"==typeof n&&n.length>0&&(i=n),a="string"==typeof n?0==n.length:n}return a?{isValid:!0,message:"",validation:t}:{isValid:!1,message:i,validation:t}};class D extends HTMLElement{get value(){return t(this,f,"f")}set value(e){a(this,f,e,"f"),t(this,v,"f").value=e,this.autoHeight&&t(this,u,"m",j).call(this)}get isAutoValidationDisabled(){return t(this,m,"f")}set isAutoValidationDisabled(e){a(this,m,e,"f")}constructor(){super(),u.add(this),f.set(this,""),m.set(this,!1),v.set(this,void 0),x.set(this,void 0),this.autoHeight=!1,y.set(this,new B(this.showValidationError.bind(this),this.clearValidationError.bind(this),(()=>this.value),(()=>this.value),(()=>[]))),t(this,u,"m",g).call(this),t(this,u,"m",k).call(this)}get validation(){return t(this,y,"f")}static get observedAttributes(){return["label","message","value","placeholder"]}attributeChangedCallback(e,a,i){t(this,u,"m",E).call(this,e,i)}triggerInputValidation(e=!0){this.validation.checkValidity(e)}showValidationError(e){t(this,x,"f").messageBox.innerHTML=e,t(this,x,"f").messageBox.classList.add("error")}clearValidationError(){const e=this.getAttribute("message")||"";t(this,x,"f").messageBox.innerHTML=e,t(this,x,"f").messageBox.classList.remove("error")}}f=new WeakMap,m=new WeakMap,v=new WeakMap,x=new WeakMap,y=new WeakMap,u=new WeakSet,g=function(){const e=this.attachShadow({mode:"open"}),i=document.createElement("template");i.innerHTML='<style>.jb-textarea-web-component {\n width: 100%;\n margin: var(--jb-textarea-margin, 12px 0);\n}\n.jb-textarea-web-component label {\n width: 100%;\n margin: 4px 0px;\n display: block;\n font-size: var(--jb-textarea-label-font-size, 0.8em);\n color: var(--jb-textarea-label-color, #1f1735);\n}\n.jb-textarea-web-component label.--hide {\n display: none;\n}\n.jb-textarea-web-component .textarea-box {\n width: 100%;\n box-sizing: border-box;\n border: solid var(--jb-textarea-border-width, 1px) var(--jb-textarea-border-color, #f7f6f6);\n background-color: var(--jb-textarea-bgcolor, #f7f6f6);\n border-bottom: solid var(--jb-textarea-border-botton-width, 3px) var(--jb-textarea-border-color, #f7f6f6);\n border-radius: var(--jb-textarea-border-radius, 16px);\n display: block;\n transition: ease 0.3s all;\n overflow: hidden;\n display: flex;\n justify-content: space-between;\n}\n.jb-textarea-web-component .textarea-box:focus-within {\n border-color: var(--jb-textarea-border-color-focus, #1e2832);\n}\n.jb-textarea-web-component .textarea-box textarea {\n border: none;\n width: 100%;\n box-sizing: border-box;\n min-height: var(--jb-textarea-min-height, 80px);\n height: var(--jb-textarea-min-height, 80px);\n max-height: var(--jb-textarea-max-height, none);\n background-color: transparent;\n padding: 6px 12px 4px 12px;\n display: block;\n font-family: inherit;\n font-size: var(--jb-textarea-value-font-size, 1.1em);\n color: var(--jb-textarea-value-color, #1f1735);\n margin: 0;\n border-radius: 0;\n resize: vertical;\n color: var(--jb-textarea-value-color, initial);\n}\n.jb-textarea-web-component .textarea-box textarea:focus {\n outline: none;\n}\n.jb-textarea-web-component .textarea-box textarea::placeholder {\n color: var(--jb-textarea-placeholder-color, initial);\n font-size: var(--jb-textarea-placeholder-font-size, initial);\n}\n.jb-textarea-web-component .message-box {\n font-size: var(--jb-textarea-message-font-size, 0.7em);\n padding: 2px 8px;\n color: #929292;\n}\n.jb-textarea-web-component .message-box:empty {\n padding: 0;\n}\n.jb-textarea-web-component .message-box.error {\n color: var(--jb-textarea-message-error-color, red);\n}</style>\n<div class="jb-textarea-web-component">\r\n <label class="--hide"><span class="label-value"></span><span>:</span></label>\r\n <div class="textarea-box">\r\n <textarea class="textarea-input"></textarea>\r\n </div>\r\n <div class="message-box"></div>\r\n</div>',e.appendChild(i.content.cloneNode(!0)),a(this,v,e.querySelector(".textarea-box textarea"),"f"),a(this,x,{textarea:t(this,v,"f"),label:e.querySelector("label"),labelValue:e.querySelector("label .label-value"),messageBox:e.querySelector(".message-box")},"f"),t(this,u,"m",w).call(this)},w=function(){t(this,x,"f").textarea.addEventListener("change",(e=>t(this,u,"m",S).call(this,e))),t(this,x,"f").textarea.addEventListener("beforeinput",t(this,u,"m",C).bind(this)),t(this,x,"f").textarea.addEventListener("input",(e=>t(this,u,"m",L).call(this,e))),t(this,x,"f").textarea.addEventListener("keypress",t(this,u,"m",V).bind(this)),t(this,x,"f").textarea.addEventListener("keyup",t(this,u,"m",W).bind(this)),t(this,x,"f").textarea.addEventListener("keydown",t(this,u,"m",K).bind(this))},k=function(){this.value=this.getAttribute("value")||""},E=function(e,a){switch(e){case"label":t(this,x,"f").labelValue.innerHTML=a,null==a||null==a||""==a?t(this,x,"f").label.classList.add("--hide"):t(this,x,"f").label.classList.remove("--hide");break;case"message":t(this,x,"f").messageBox.innerHTML=a;break;case"placeholder":t(this,v,"f").setAttribute("placeholder",a);break;case"value":this.value=a}},j=function(){t(this,v,"f").style.height="4px",t(this,v,"f").style.height=t(this,v,"f").scrollHeight+"px"},C=function(e){t(this,u,"m",T).call(this,e)},T=function(e){const t={bubbles:e.bubbles,cancelable:e.cancelable,composed:e.composed,data:e.data,isComposing:e.isComposing,inputType:e.inputType,dataTransfer:e.dataTransfer,view:e.view,detail:e.detail,targetRanges:e.getTargetRanges()},a=new InputEvent("beforeinput",t);return this.dispatchEvent(a),a.defaultPrevented&&e.preventDefault(),a.defaultPrevented},K=function(e){const t={key:e.key,keyCode:e.keyCode,code:e.code,ctrlKey:e.ctrlKey,shiftKey:e.shiftKey,altKey:e.altKey,charCode:e.charCode,which:e.which,cancelable:!0,location:e.location,detail:e.detail,bubbles:e.bubbles,composed:e.composed,isComposing:e.isComposing,metaKey:e.metaKey,repeat:e.repeat,view:e.view},a=new KeyboardEvent("keydown",t);this.dispatchEvent(a)||e.preventDefault()},V=function(e){const t={key:e.key,keyCode:e.keyCode,code:e.code,ctrlKey:e.ctrlKey,shiftKey:e.shiftKey,altKey:e.altKey,charCode:e.charCode,which:e.which,cancelable:!0,location:e.location,detail:e.detail,bubbles:e.bubbles,composed:e.composed,isComposing:e.isComposing,metaKey:e.metaKey,repeat:e.repeat,view:e.view},a=new KeyboardEvent("keypress",t);this.dispatchEvent(a)||e.preventDefault()},L=function(e){this.autoHeight&&t(this,u,"m",j).call(this),t(this,u,"m",M).call(this,e)},M=function(e){const t={bubbles:e.bubbles,cancelable:e.cancelable,composed:e.composed,data:e.data,dataTransfer:e.dataTransfer,detail:e.detail,inputType:e.inputType,isComposing:e.isComposing,targetRanges:e.getTargetRanges(),view:e.view},a=new InputEvent("input",t);this.dispatchEvent(a)},W=function(e){const t=e.target.value;a(this,f,t,"f"),this.triggerInputValidation(!1);const i={key:e.key,keyCode:e.keyCode,code:e.code,ctrlKey:e.ctrlKey,shiftKey:e.shiftKey,altKey:e.altKey,charCode:e.charCode,which:e.which,bubbles:e.bubbles,cancelable:e.cancelable,composed:e.composed,detail:e.detail,isComposing:e.isComposing,location:e.location,metaKey:e.metaKey,repeat:e.repeat,view:e.view},n=new KeyboardEvent("keyup",i);this.dispatchEvent(n)},S=function(e){const i=e.target.value;a(this,f,i,"f"),t(this,u,"m",z).call(this,!0);const n=new Event("change");this.dispatchEvent(n)},z=function(e){if(!this.isAutoValidationDisabled)return t(this,y,"f").checkValidity(e)};!customElements.get("jb-textarea")&&window.customElements.define("jb-textarea",D),e.JBTextareaWebComponent=D}));
2
+ //# sourceMappingURL=jb-textarea.umd.js.map
Binary file
Binary file
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jb-textarea.umd.js","sources":["../../../modules/jb-validation/dist/jb-validation.js","../lib/jb-textarea.ts"],"sourcesContent":["function t(t,e,i,s){if(\"a\"===i&&!s)throw new TypeError(\"Private accessor was defined without a getter\");if(\"function\"==typeof e?t!==e||!s:!e.has(t))throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");return\"m\"===i?s:\"a\"===i?s.call(t):s?s.value:e.get(t)}function e(t,e,i,s,a){if(\"m\"===s)throw new TypeError(\"Private method is not writable\");if(\"a\"===s&&!a)throw new TypeError(\"Private accessor was defined without a setter\");if(\"function\"==typeof e?t!==e||!a:!e.has(t))throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");return\"a\"===s?a.call(t,i):a?a.value=i:e.set(t,i),i}var i,s,a,l,n,r,o,h,f,c,d;\"function\"==typeof SuppressedError&&SuppressedError;class u{get resultSummary(){return t(this,a,\"f\")}constructor(f,c,d,u,p){i.add(this),s.set(this,[]),a.set(this,{isValid:null,message:null}),this.result=null,l.set(this,null),n.set(this,null),r.set(this,null),o.set(this,null),h.set(this,[]),e(this,l,f,\"f\"),e(this,n,c,\"f\"),e(this,r,d,\"f\"),e(this,o,u,\"f\"),t(this,h,\"f\").push(p)}get list(){return t(this,s,\"f\")}set list(t){e(this,s,t,\"f\"),this.checkValidity(!1)}checkValidity(s=!0){const o=t(this,r,\"f\").call(this),h=t(this,i,\"m\",c).call(this,o);if(e(this,a,{isValid:h.isAllValid,message:null},\"f\"),h.isAllValid)t(this,n,\"f\").call(this);else{const e=h.validationList.find((t=>!t.isValid));this.resultSummary.message=e.message,1==s&&t(this,l,\"f\").call(this,e.message)}return this.result=h,h}addValidationListGetter(e){t(this,h,\"f\").push(e)}}s=new WeakMap,a=new WeakMap,l=new WeakMap,n=new WeakMap,r=new WeakMap,o=new WeakMap,h=new WeakMap,i=new WeakSet,f=function(){const e=[];return t(this,h,\"f\").forEach((t=>{\"function\"==typeof t&&e.push(...t())})),e.flat()},c=function(e){const s={validationList:[],isAllValid:!0};return[...t(this,i,\"m\",f).call(this),...this.list].forEach((a=>{const l=t(this,i,\"m\",d).call(this,e,a);s.validationList.push(l),l.isValid||(s.isAllValid=!1)})),s},d=function(e,i){let s,a=i.message;if(i.validator instanceof RegExp){const a=\"string\"==typeof e?e:t(this,o,\"f\").call(this,e);s=i.validator.test(a),i.validator.lastIndex=0}if(\"function\"==typeof i.validator){const t=i.validator(e);\"string\"==typeof t&&t.length>0&&(a=t),s=\"string\"==typeof t?0==t.length:t}return s?{isValid:!0,message:\"\",validation:i}:{isValid:!1,message:a,validation:i}};export{u as ValidationHelper};\n//# sourceMappingURL=jb-validation.js.map\n","import HTML from './jb-textarea.html';\r\nimport CSS from './jb-textarea.scss';\r\nimport { ValidationHelper } from 'jb-validation';\r\nimport { WithValidation } from 'jb-validation/types';\r\nimport { JBTextareaElements, ValidationValue } from './types';\r\n//export all internal type for user easier access\r\nexport { ValidationValue };\r\n\r\nexport class JBTextareaWebComponent extends HTMLElement implements WithValidation {\r\n #value = '';\r\n get value() {\r\n return this.#value;\r\n }\r\n set value(value) {\r\n this.#value = value;\r\n this.#textareaElement.value = value;\r\n if (this.autoHeight) {\r\n this.#changeHeightToContentSize();\r\n }\r\n }\r\n #isAutoValidationDisabled = false;\r\n get isAutoValidationDisabled(): boolean {\r\n return this.#isAutoValidationDisabled;\r\n }\r\n set isAutoValidationDisabled(value: boolean) {\r\n this.#isAutoValidationDisabled = value;\r\n }\r\n constructor() {\r\n super();\r\n this.#initWebComponent();\r\n this.#initProp();\r\n }\r\n #textareaElement!: HTMLTextAreaElement;\r\n #elements!: JBTextareaElements;\r\n #initWebComponent() {\r\n const shadowRoot = this.attachShadow({\r\n mode: 'open'\r\n });\r\n const html = `<style>${CSS}</style>` + '\\n' + HTML;\r\n const element = document.createElement('template');\r\n element.innerHTML = html;\r\n shadowRoot.appendChild(element.content.cloneNode(true));\r\n this.#textareaElement = shadowRoot.querySelector('.textarea-box textarea')!;\r\n this.#elements = {\r\n textarea: this.#textareaElement,\r\n label: shadowRoot.querySelector('label')!,\r\n labelValue: shadowRoot.querySelector('label .label-value')!,\r\n messageBox: shadowRoot.querySelector('.message-box')!\r\n }\r\n this.#registerEventListener();\r\n }\r\n #registerEventListener() {\r\n this.#elements.textarea.addEventListener('change', (e) => this.#onInputChange(e));\r\n this.#elements.textarea.addEventListener('beforeinput', this.#onInputBeforeInput.bind(this));\r\n this.#elements.textarea.addEventListener('input', (e) => this.#onInputInput((e as unknown as InputEvent)));\r\n this.#elements.textarea.addEventListener('keypress', this.#onInputKeyPress.bind(this));\r\n this.#elements.textarea.addEventListener('keyup', this.#onInputKeyup.bind(this));\r\n this.#elements.textarea.addEventListener('keydown', this.#onInputKeyDown.bind(this));\r\n }\r\n autoHeight = false;\r\n #validation = new ValidationHelper<ValidationValue>(this.showValidationError.bind(this), this.clearValidationError.bind(this), () => this.value, () => this.value, () => []);\r\n get validation(){\r\n return this.#validation;\r\n }\r\n #initProp() {\r\n this.value = this.getAttribute('value') || '';\r\n\r\n }\r\n static get observedAttributes() {\r\n return ['label', 'message', 'value', 'placeholder'];\r\n }\r\n attributeChangedCallback(name: string, oldValue: string, newValue: string) {\r\n // do something when an attribute has changed\r\n this.#onAttributeChange(name, newValue);\r\n }\r\n #onAttributeChange(name: string, value: string) {\r\n switch (name) {\r\n case 'label':\r\n this.#elements.labelValue.innerHTML = value;\r\n if (value == null || value == undefined || value == \"\") {\r\n this.#elements.label.classList.add('--hide');\r\n } else {\r\n this.#elements.label.classList.remove('--hide');\r\n }\r\n break;\r\n case 'message':\r\n this.#elements.messageBox.innerHTML = value;\r\n break;\r\n case 'placeholder':\r\n this.#textareaElement.setAttribute('placeholder', value);\r\n break;\r\n case 'value':\r\n this.value = value;\r\n break;\r\n }\r\n\r\n }\r\n #changeHeightToContentSize() {\r\n this.#textareaElement.style.height = \"4px\";\r\n this.#textareaElement.style.height = (this.#textareaElement.scrollHeight) + \"px\";\r\n }\r\n #onInputBeforeInput(e: InputEvent) {\r\n this.#dispatchBeforeInputEvent(e);\r\n }\r\n #dispatchBeforeInputEvent(e: InputEvent): boolean {\r\n const eventInitDict = {\r\n bubbles: e.bubbles,\r\n cancelable: e.cancelable,\r\n composed: e.composed,\r\n data: e.data,\r\n isComposing: e.isComposing,\r\n inputType: e.inputType,\r\n dataTransfer: e.dataTransfer,\r\n view: e.view,\r\n detail: e.detail,\r\n targetRanges: e.getTargetRanges(),\r\n };\r\n const event = new InputEvent('beforeinput', eventInitDict);\r\n this.dispatchEvent(event);\r\n if (event.defaultPrevented) {\r\n e.preventDefault();\r\n }\r\n return event.defaultPrevented;\r\n }\r\n #onInputKeyDown(e: KeyboardEvent) {\r\n const keyDownnInitObj: KeyboardEventInit = {\r\n key: e.key,\r\n keyCode: e.keyCode,\r\n code: e.code,\r\n ctrlKey: e.ctrlKey,\r\n shiftKey: e.shiftKey,\r\n altKey: e.altKey,\r\n charCode: e.charCode,\r\n which: e.which,\r\n cancelable: true,\r\n location: e.location,\r\n detail: e.detail,\r\n bubbles: e.bubbles,\r\n composed: e.composed,\r\n isComposing: e.isComposing,\r\n metaKey: e.metaKey,\r\n repeat: e.repeat,\r\n view: e.view\r\n };\r\n const event = new KeyboardEvent(\"keydown\", keyDownnInitObj);\r\n const isEventNotPrevented = this.dispatchEvent(event);\r\n if (!isEventNotPrevented) {\r\n //if event prevented by e.preventDefault();\r\n e.preventDefault();\r\n }\r\n }\r\n #onInputKeyPress(e: KeyboardEvent) {\r\n const keyPressInitObj: KeyboardEventInit = {\r\n key: e.key,\r\n keyCode: e.keyCode,\r\n code: e.code,\r\n ctrlKey: e.ctrlKey,\r\n shiftKey: e.shiftKey,\r\n altKey: e.altKey,\r\n charCode: e.charCode,\r\n which: e.which,\r\n cancelable: true,\r\n location: e.location,\r\n detail: e.detail,\r\n bubbles: e.bubbles,\r\n composed: e.composed,\r\n isComposing: e.isComposing,\r\n metaKey: e.metaKey,\r\n repeat: e.repeat,\r\n view: e.view\r\n };\r\n const event = new KeyboardEvent('keypress', keyPressInitObj);\r\n const isEventNotPrevented = this.dispatchEvent(event);\r\n if (!isEventNotPrevented) {\r\n //if event prevented by e.preventDefault();\r\n e.preventDefault();\r\n }\r\n }\r\n #onInputInput(e: InputEvent) {\r\n if (this.autoHeight) {\r\n this.#changeHeightToContentSize();\r\n }\r\n this.#triggerInputEvent(e);\r\n }\r\n #triggerInputEvent(e: InputEvent) {\r\n const inputInitObject: InputEventInit = {\r\n bubbles: e.bubbles,\r\n cancelable: e.cancelable,\r\n composed: e.composed,\r\n data: e.data,\r\n dataTransfer: e.dataTransfer,\r\n detail: e.detail,\r\n inputType: e.inputType,\r\n isComposing: e.isComposing,\r\n targetRanges: e.getTargetRanges(),\r\n view: e.view\r\n };\r\n const event = new InputEvent(\"input\", inputInitObject);\r\n this.dispatchEvent(event);\r\n }\r\n #onInputKeyup(e: KeyboardEvent) {\r\n const inputText = (e.target as HTMLTextAreaElement).value;\r\n //here is the rare time we update _value directly becuase we want trigger event that may read value directly from dom\r\n this.#value = inputText;\r\n this.triggerInputValidation(false);\r\n const keyUpInitObj: KeyboardEventInit = {\r\n key: e.key,\r\n keyCode: e.keyCode,\r\n code: e.code,\r\n ctrlKey: e.ctrlKey,\r\n shiftKey: e.shiftKey,\r\n altKey: e.altKey,\r\n charCode: e.charCode,\r\n which: e.which,\r\n bubbles: e.bubbles,\r\n cancelable: e.cancelable,\r\n composed: e.composed,\r\n detail: e.detail,\r\n isComposing: e.isComposing,\r\n location: e.location,\r\n metaKey: e.metaKey,\r\n repeat: e.repeat,\r\n view: e.view\r\n };\r\n const event = new KeyboardEvent('keyup', keyUpInitObj);\r\n this.dispatchEvent(event);\r\n }\r\n #onInputChange(e: Event) {\r\n const inputText = (e.target as HTMLTextAreaElement).value;\r\n //here is the rare time we update _value directly becuase we want trigger event that may read value directly from dom\r\n this.#value = inputText;\r\n this.#checkValidity(true);\r\n const event = new Event('change');\r\n this.dispatchEvent(event);\r\n }\r\n /**\r\n * \r\n * @param showError wether to show error or not \r\n * @deprecated use .validation.checkValidity instead\r\n */\r\n triggerInputValidation(showError = true) {\r\n this.validation.checkValidity(showError);\r\n }\r\n\r\n showValidationError(error: string) {\r\n this.#elements.messageBox.innerHTML = error;\r\n this.#elements.messageBox.classList.add('error');\r\n }\r\n clearValidationError() {\r\n const text = this.getAttribute('message') || '';\r\n this.#elements.messageBox.innerHTML = text;\r\n this.#elements.messageBox.classList.remove('error');\r\n }\r\n #checkValidity(showError: boolean) {\r\n if (!this.isAutoValidationDisabled) {\r\n return this.#validation.checkValidity(showError);\r\n }\r\n }\r\n}\r\n\r\nconst myElementNotExists = !customElements.get('jb-textarea');\r\nif (myElementNotExists) {\r\n //prevent duplicate registering\r\n window.customElements.define('jb-textarea', JBTextareaWebComponent);\r\n}"],"names":["i","s","a","l","n","r","o","h","f","c","d","t","e","TypeError","has","call","value","get","set","SuppressedError","u","resultSummary","this","constructor","p","add","isValid","message","result","push","list","checkValidity","isAllValid","validationList","find","addValidationListGetter","WeakMap","WeakSet","forEach","flat","validator","RegExp","test","lastIndex","length","validation","JBTextareaWebComponent","HTMLElement","__classPrivateFieldGet","_JBTextareaWebComponent_value","__classPrivateFieldSet","_JBTextareaWebComponent_textareaElement","autoHeight","_JBTextareaWebComponent_instances","_JBTextareaWebComponent_changeHeightToContentSize","isAutoValidationDisabled","_JBTextareaWebComponent_isAutoValidationDisabled","super","_JBTextareaWebComponent_elements","_JBTextareaWebComponent_validation","ValidationHelper","showValidationError","bind","clearValidationError","_JBTextareaWebComponent_initWebComponent","_JBTextareaWebComponent_initProp","observedAttributes","attributeChangedCallback","name","oldValue","newValue","triggerInputValidation","showError","error","messageBox","innerHTML","classList","text","getAttribute","remove","shadowRoot","attachShadow","mode","element","document","createElement","appendChild","content","cloneNode","querySelector","textarea","label","labelValue","_JBTextareaWebComponent_registerEventListener","addEventListener","_JBTextareaWebComponent_onInputChange","_JBTextareaWebComponent_onInputInput","_JBTextareaWebComponent_onAttributeChange","undefined","setAttribute","style","height","_JBTextareaWebComponent_dispatchBeforeInputEvent","eventInitDict","bubbles","cancelable","composed","data","isComposing","inputType","dataTransfer","view","detail","targetRanges","getTargetRanges","event","InputEvent","dispatchEvent","defaultPrevented","preventDefault","keyDownnInitObj","key","keyCode","code","ctrlKey","shiftKey","altKey","charCode","which","location","metaKey","repeat","KeyboardEvent","keyPressInitObj","_JBTextareaWebComponent_triggerInputEvent","inputInitObject","inputText","target","keyUpInitObj","_JBTextareaWebComponent_checkValidity","Event","customElements","window","define"],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { ValidationHelper } from 'jb-validation';
2
+ import { WithValidation } from 'jb-validation/types';
3
+ import { ValidationValue } from './types';
4
+ export { ValidationValue };
5
+ export declare class JBTextareaWebComponent extends HTMLElement implements WithValidation {
6
+ #private;
7
+ get value(): string;
8
+ set value(value: string);
9
+ get isAutoValidationDisabled(): boolean;
10
+ set isAutoValidationDisabled(value: boolean);
11
+ constructor();
12
+ autoHeight: boolean;
13
+ get validation(): ValidationHelper<string>;
14
+ static get observedAttributes(): string[];
15
+ attributeChangedCallback(name: string, oldValue: string, newValue: string): void;
16
+ /**
17
+ *
18
+ * @param showError wether to show error or not
19
+ * @deprecated use .validation.checkValidity instead
20
+ */
21
+ triggerInputValidation(showError?: boolean): void;
22
+ showValidationError(error: string): void;
23
+ clearValidationError(): void;
24
+ }
@@ -0,0 +1,7 @@
1
+ export type JBTextareaElements = {
2
+ textarea: HTMLTextAreaElement;
3
+ label: HTMLLabelElement;
4
+ labelValue: HTMLSpanElement;
5
+ messageBox: HTMLDivElement;
6
+ };
7
+ export type ValidationValue = string;
package/index.js CHANGED
@@ -1 +1 @@
1
- import './dist/JBTextarea.js';
1
+ export {JBTextareaWebComponent} from './dist/jb-textarea.js';
@@ -0,0 +1,265 @@
1
+ import HTML from './jb-textarea.html';
2
+ import CSS from './jb-textarea.scss';
3
+ import { ValidationHelper } from 'jb-validation';
4
+ import { WithValidation } from 'jb-validation/types';
5
+ import { JBTextareaElements, ValidationValue } from './types';
6
+ //export all internal type for user easier access
7
+ export { ValidationValue };
8
+
9
+ export class JBTextareaWebComponent extends HTMLElement implements WithValidation {
10
+ #value = '';
11
+ get value() {
12
+ return this.#value;
13
+ }
14
+ set value(value) {
15
+ this.#value = value;
16
+ this.#textareaElement.value = value;
17
+ if (this.autoHeight) {
18
+ this.#changeHeightToContentSize();
19
+ }
20
+ }
21
+ #isAutoValidationDisabled = false;
22
+ get isAutoValidationDisabled(): boolean {
23
+ return this.#isAutoValidationDisabled;
24
+ }
25
+ set isAutoValidationDisabled(value: boolean) {
26
+ this.#isAutoValidationDisabled = value;
27
+ }
28
+ constructor() {
29
+ super();
30
+ this.#initWebComponent();
31
+ this.#initProp();
32
+ }
33
+ #textareaElement!: HTMLTextAreaElement;
34
+ #elements!: JBTextareaElements;
35
+ #initWebComponent() {
36
+ const shadowRoot = this.attachShadow({
37
+ mode: 'open'
38
+ });
39
+ const html = `<style>${CSS}</style>` + '\n' + HTML;
40
+ const element = document.createElement('template');
41
+ element.innerHTML = html;
42
+ shadowRoot.appendChild(element.content.cloneNode(true));
43
+ this.#textareaElement = shadowRoot.querySelector('.textarea-box textarea')!;
44
+ this.#elements = {
45
+ textarea: this.#textareaElement,
46
+ label: shadowRoot.querySelector('label')!,
47
+ labelValue: shadowRoot.querySelector('label .label-value')!,
48
+ messageBox: shadowRoot.querySelector('.message-box')!
49
+ }
50
+ this.#registerEventListener();
51
+ }
52
+ #registerEventListener() {
53
+ this.#elements.textarea.addEventListener('change', (e) => this.#onInputChange(e));
54
+ this.#elements.textarea.addEventListener('beforeinput', this.#onInputBeforeInput.bind(this));
55
+ this.#elements.textarea.addEventListener('input', (e) => this.#onInputInput((e as unknown as InputEvent)));
56
+ this.#elements.textarea.addEventListener('keypress', this.#onInputKeyPress.bind(this));
57
+ this.#elements.textarea.addEventListener('keyup', this.#onInputKeyup.bind(this));
58
+ this.#elements.textarea.addEventListener('keydown', this.#onInputKeyDown.bind(this));
59
+ }
60
+ autoHeight = false;
61
+ #validation = new ValidationHelper<ValidationValue>(this.showValidationError.bind(this), this.clearValidationError.bind(this), () => this.value, () => this.value, () => []);
62
+ get validation(){
63
+ return this.#validation;
64
+ }
65
+ #initProp() {
66
+ this.value = this.getAttribute('value') || '';
67
+
68
+ }
69
+ static get observedAttributes() {
70
+ return ['label', 'message', 'value', 'placeholder'];
71
+ }
72
+ attributeChangedCallback(name: string, oldValue: string, newValue: string) {
73
+ // do something when an attribute has changed
74
+ this.#onAttributeChange(name, newValue);
75
+ }
76
+ #onAttributeChange(name: string, value: string) {
77
+ switch (name) {
78
+ case 'label':
79
+ this.#elements.labelValue.innerHTML = value;
80
+ if (value == null || value == undefined || value == "") {
81
+ this.#elements.label.classList.add('--hide');
82
+ } else {
83
+ this.#elements.label.classList.remove('--hide');
84
+ }
85
+ break;
86
+ case 'message':
87
+ this.#elements.messageBox.innerHTML = value;
88
+ break;
89
+ case 'placeholder':
90
+ this.#textareaElement.setAttribute('placeholder', value);
91
+ break;
92
+ case 'value':
93
+ this.value = value;
94
+ break;
95
+ }
96
+
97
+ }
98
+ #changeHeightToContentSize() {
99
+ this.#textareaElement.style.height = "4px";
100
+ this.#textareaElement.style.height = (this.#textareaElement.scrollHeight) + "px";
101
+ }
102
+ #onInputBeforeInput(e: InputEvent) {
103
+ this.#dispatchBeforeInputEvent(e);
104
+ }
105
+ #dispatchBeforeInputEvent(e: InputEvent): boolean {
106
+ const eventInitDict = {
107
+ bubbles: e.bubbles,
108
+ cancelable: e.cancelable,
109
+ composed: e.composed,
110
+ data: e.data,
111
+ isComposing: e.isComposing,
112
+ inputType: e.inputType,
113
+ dataTransfer: e.dataTransfer,
114
+ view: e.view,
115
+ detail: e.detail,
116
+ targetRanges: e.getTargetRanges(),
117
+ };
118
+ const event = new InputEvent('beforeinput', eventInitDict);
119
+ this.dispatchEvent(event);
120
+ if (event.defaultPrevented) {
121
+ e.preventDefault();
122
+ }
123
+ return event.defaultPrevented;
124
+ }
125
+ #onInputKeyDown(e: KeyboardEvent) {
126
+ const keyDownnInitObj: KeyboardEventInit = {
127
+ key: e.key,
128
+ keyCode: e.keyCode,
129
+ code: e.code,
130
+ ctrlKey: e.ctrlKey,
131
+ shiftKey: e.shiftKey,
132
+ altKey: e.altKey,
133
+ charCode: e.charCode,
134
+ which: e.which,
135
+ cancelable: true,
136
+ location: e.location,
137
+ detail: e.detail,
138
+ bubbles: e.bubbles,
139
+ composed: e.composed,
140
+ isComposing: e.isComposing,
141
+ metaKey: e.metaKey,
142
+ repeat: e.repeat,
143
+ view: e.view
144
+ };
145
+ const event = new KeyboardEvent("keydown", keyDownnInitObj);
146
+ const isEventNotPrevented = this.dispatchEvent(event);
147
+ if (!isEventNotPrevented) {
148
+ //if event prevented by e.preventDefault();
149
+ e.preventDefault();
150
+ }
151
+ }
152
+ #onInputKeyPress(e: KeyboardEvent) {
153
+ const keyPressInitObj: KeyboardEventInit = {
154
+ key: e.key,
155
+ keyCode: e.keyCode,
156
+ code: e.code,
157
+ ctrlKey: e.ctrlKey,
158
+ shiftKey: e.shiftKey,
159
+ altKey: e.altKey,
160
+ charCode: e.charCode,
161
+ which: e.which,
162
+ cancelable: true,
163
+ location: e.location,
164
+ detail: e.detail,
165
+ bubbles: e.bubbles,
166
+ composed: e.composed,
167
+ isComposing: e.isComposing,
168
+ metaKey: e.metaKey,
169
+ repeat: e.repeat,
170
+ view: e.view
171
+ };
172
+ const event = new KeyboardEvent('keypress', keyPressInitObj);
173
+ const isEventNotPrevented = this.dispatchEvent(event);
174
+ if (!isEventNotPrevented) {
175
+ //if event prevented by e.preventDefault();
176
+ e.preventDefault();
177
+ }
178
+ }
179
+ #onInputInput(e: InputEvent) {
180
+ if (this.autoHeight) {
181
+ this.#changeHeightToContentSize();
182
+ }
183
+ this.#triggerInputEvent(e);
184
+ }
185
+ #triggerInputEvent(e: InputEvent) {
186
+ const inputInitObject: InputEventInit = {
187
+ bubbles: e.bubbles,
188
+ cancelable: e.cancelable,
189
+ composed: e.composed,
190
+ data: e.data,
191
+ dataTransfer: e.dataTransfer,
192
+ detail: e.detail,
193
+ inputType: e.inputType,
194
+ isComposing: e.isComposing,
195
+ targetRanges: e.getTargetRanges(),
196
+ view: e.view
197
+ };
198
+ const event = new InputEvent("input", inputInitObject);
199
+ this.dispatchEvent(event);
200
+ }
201
+ #onInputKeyup(e: KeyboardEvent) {
202
+ const inputText = (e.target as HTMLTextAreaElement).value;
203
+ //here is the rare time we update _value directly becuase we want trigger event that may read value directly from dom
204
+ this.#value = inputText;
205
+ this.triggerInputValidation(false);
206
+ const keyUpInitObj: KeyboardEventInit = {
207
+ key: e.key,
208
+ keyCode: e.keyCode,
209
+ code: e.code,
210
+ ctrlKey: e.ctrlKey,
211
+ shiftKey: e.shiftKey,
212
+ altKey: e.altKey,
213
+ charCode: e.charCode,
214
+ which: e.which,
215
+ bubbles: e.bubbles,
216
+ cancelable: e.cancelable,
217
+ composed: e.composed,
218
+ detail: e.detail,
219
+ isComposing: e.isComposing,
220
+ location: e.location,
221
+ metaKey: e.metaKey,
222
+ repeat: e.repeat,
223
+ view: e.view
224
+ };
225
+ const event = new KeyboardEvent('keyup', keyUpInitObj);
226
+ this.dispatchEvent(event);
227
+ }
228
+ #onInputChange(e: Event) {
229
+ const inputText = (e.target as HTMLTextAreaElement).value;
230
+ //here is the rare time we update _value directly becuase we want trigger event that may read value directly from dom
231
+ this.#value = inputText;
232
+ this.#checkValidity(true);
233
+ const event = new Event('change');
234
+ this.dispatchEvent(event);
235
+ }
236
+ /**
237
+ *
238
+ * @param showError wether to show error or not
239
+ * @deprecated use .validation.checkValidity instead
240
+ */
241
+ triggerInputValidation(showError = true) {
242
+ this.validation.checkValidity(showError);
243
+ }
244
+
245
+ showValidationError(error: string) {
246
+ this.#elements.messageBox.innerHTML = error;
247
+ this.#elements.messageBox.classList.add('error');
248
+ }
249
+ clearValidationError() {
250
+ const text = this.getAttribute('message') || '';
251
+ this.#elements.messageBox.innerHTML = text;
252
+ this.#elements.messageBox.classList.remove('error');
253
+ }
254
+ #checkValidity(showError: boolean) {
255
+ if (!this.isAutoValidationDisabled) {
256
+ return this.#validation.checkValidity(showError);
257
+ }
258
+ }
259
+ }
260
+
261
+ const myElementNotExists = !customElements.get('jb-textarea');
262
+ if (myElementNotExists) {
263
+ //prevent duplicate registering
264
+ window.customElements.define('jb-textarea', JBTextareaWebComponent);
265
+ }
package/lib/types.ts ADDED
@@ -0,0 +1,8 @@
1
+ export type JBTextareaElements = {
2
+ textarea: HTMLTextAreaElement;
3
+ label: HTMLLabelElement;
4
+ labelValue: HTMLSpanElement;
5
+ messageBox: HTMLDivElement;
6
+ }
7
+
8
+ export type ValidationValue = string;
package/package.json CHANGED
@@ -9,10 +9,11 @@
9
9
  "keywords": [
10
10
  "jb",
11
11
  "jb-textarea",
12
- "select",
13
- "web component"
12
+ "textarea",
13
+ "web component",
14
+ "web-component"
14
15
  ],
15
- "version": "2.2.0",
16
+ "version": "3.0.0",
16
17
  "bugs": "https://github.com/javadbat/jb-textarea/issues",
17
18
  "license": "MIT",
18
19
  "files": [
@@ -22,9 +23,12 @@
22
23
  "dist/"
23
24
  ],
24
25
  "main": "index.js",
25
- "types": "./dist/JBTextarea.d.ts",
26
+ "types": "./dist/web-component/jb-textarea/lib/jb-textarea.d.ts",
26
27
  "repository": {
27
28
  "type": "git",
28
29
  "url": "git@github.com:javadbat/jb-textarea.git"
30
+ },
31
+ "dependencies": {
32
+ "jb-validation":">=0.0.2"
29
33
  }
30
34
  }