@public-ui/components
Version:
Contains all web components that belong to KoliBri - The accessible HTML-Standard.
4 lines • 4.14 kB
JavaScript
/*!
* KoliBri - The accessible HTML-Standard
*/
import{h}from"./index-1ed13705.js";import{w as watchValidator}from"./index-ebe5a881.js";import{_ as __rest}from"./tslib.es6-1173d062.js";import{c as clsx}from"./clsx-09a06a12.js";import{c as checkHasMsg,a as convertMsgToInternMsg,I as InputController}from"./getRenderStates-c4b5c6cb.js";import{b as KolButtonWcTag}from"./component-names-7924d82a.js";import{K as KolIconFc}from"./Icon-446dff9e.js";import{i as isString}from"./InternalUnderlinedBadgeText-781ef373.js";import{i as isObject}from"./isObject-ffcbbb76.js";import{v as validateIcons}from"./icons-a9c52ed8.js";const InputAdornment=(n,t)=>{var{position:o="start",class:s}=n,e=__rest(n,["position","class"]);const i="kol-input-container__adornment",r=`${i}--${o}`;return h("div",Object.assign({class:clsx(i,r,s)},e),t)};function hasItems(n){return!!n&&(Array.isArray(n)?n.length>0:Boolean(n))}const Container=(n,t)=>{var{class:o}=n,s=__rest(n,["class"]);return h("div",Object.assign({class:clsx("kol-input-container__container",o)},s),t)},KolInputContainerFc=(n,t)=>{const{class:o,startAdornment:s,endAdornment:e,disabled:i,msg:r,touched:a,containerProps:c,startAdornmentProps:l,endAdornmentProps:d}=n,u=__rest(n,["class","startAdornment","endAdornment","disabled","msg","touched","containerProps","startAdornmentProps","endAdornmentProps"]),m=checkHasMsg(r,a),p={"kol-input-container--disabled":i,[`kol-input-container--${(null==r?void 0:r.type)||"error"}`]:m},b=Object.assign({class:clsx("kol-input-container",p,o)},u);return hasItems(s)||hasItems(e)?h("div",Object.assign({},b),h(InputAdornment,Object.assign({},l,{position:"start"}),s),h(Container,Object.assign({},c),t),h(InputAdornment,Object.assign({},d,{position:"end"}),e)):h("div",Object.assign({},b),h(Container,Object.assign({},c),t))},KolButtonFc=n=>{const{label:t,icons:o,hideLabel:s,disabled:e,onClick:i}=n,r=__rest(n,["label","icons","hideLabel","disabled","onClick"]);return h(KolButtonWcTag,Object.assign({_label:t,_disabled:e,_icons:o,_hideLabel:s,_on:{onClick:i}},r))},KolIconButtonFc=n=>{const{componentName:t="button",label:o,icon:s,onClick:e}=n,i=__rest(n,["componentName","label","icon","onClick"]);return h("button"===t?KolButtonFc:KolIconFc,Object.assign({label:o||"",hideLabel:!0,icons:`codicon codicon-${s}`,onClick:e},i))};function getInputContainerProps(n){let t,o;return"_icons"in n&&(t=n._icons),"_smartButton"in n&&(o=n._smartButton),{icons:t,smartButton:o,disabled:n._disabled,msg:convertMsgToInternMsg(n._msg),touched:n._touched}}const InputContainerStateWrapperFc=({state:n,endAdornment:t},o)=>{const{icons:s,smartButton:e,disabled:i,msg:r,touched:a}=getInputContainerProps(n);let c=null==s?void 0:s.left;isString(c)&&(c={icon:c});let l=null==s?void 0:s.right;isString(l)&&(l={icon:l});const d=[],u=[];return t&&(Array.isArray(t)?u.push(...t):u.push(t)),c&&d.push(h(KolIconButtonFc,Object.assign({componentName:"icon",class:"kol-input-container__icon"},isObject(c)?c:{}))),isObject(e)&&u.push(h(KolIconButtonFc,Object.assign({componentName:"button",class:"kol-input-container__smart-button"},e,{hideLabel:!0,disabled:i}))),l&&u.push(h(KolIconButtonFc,Object.assign({componentName:"icon",class:"kol-input-container__icon"},isObject(l)?l:{}))),h(KolInputContainerFc,{disabled:i,msg:r,touched:a,startAdornment:d,endAdornment:u},o)};class InputIconController extends InputController{constructor(n,t,o){super(n,t,o),this.numberStringRegex=/^\d+(\.\d+)?$/,this.parseToNumber=n=>"number"==typeof n?isNaN(n)?null:n:this.isNumberString(n)?parseFloat(n):null,this.validateNumber=(n,t)=>watchValidator(this.component,n,(n=>null==n||"number"==typeof n||"string"==typeof n&&this.numberStringRegex.test(n)),new Set(["number","NumberString"]),t,{hooks:{beforePatch:(t,o)=>{(null==o?void 0:o.has(n))&&(null==o||o.set(n,this.parseToNumber(t)))}}}),this.component=n}validateIcons(n){validateIcons(this.component,n)}isNumberString(n){return"string"==typeof n&&this.numberStringRegex.test(n)}componentWillLoad(){super.componentWillLoad(),this.validateIcons(this.component._icons)}}export{InputIconController as I,KolIconButtonFc as K,InputContainerStateWrapperFc as a};