@webority/ui-react 0.73.1 → 0.75.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.
@@ -1 +1 @@
1
- import e from"./warnInvalidValue.js";import t from"./warnUnknownProps.js";import n from"./AppInfoTip.js";import r from"./AppRequiredMark.js";import i from"./useNodeLabels.js";import a,{optionsEqual as o}from"./useWuiControl.js";import{forwardRef as s,useEffect as c,useId as l,useRef as u}from"react";import{jsx as d,jsxs as f}from"react/jsx-runtime";import"@webority/ui-elements/elements/autocomplete";var p=[`sm`,`lg`],m=[],h=(e,t)=>({...e,label:t}),g=s(function({value:s,onChange:g,options:_,loadOptions:v,placeholder:y=`Search…`,minChars:b,debounce:x,disabled:S=!1,size:C,allowCustom:w=!1,name:T,id:E,label:D,error:O,hint:k,required:A=!1,help:j,helpLabel:M=`More information`,fieldClassName:N=``,...P},F){t(`AppAutocomplete`,P),e(`AppAutocomplete`,`size`,C,p);let I=typeof v==`function`,L=l(),R=E||L,{setRef:z,innerRef:B}=a({ref:F,value:s??``,on:{change:e=>g?.(e.currentTarget.value,{isCustom:!!e.detail?.isCustom})}}),V=_||m,{portal:H,toElementOptions:U}=i(V),W=u(!1);return c(()=>{let e=B.current;if(!e||I&&W.current)return;let t=U(V,h);o(t,e.options)||(e.options=t)},[V,I,B,U]),c(()=>{let e=B.current;if(!e||!I)return;let t=0,n=null,r=async r=>{let i=++t;n?.abort(),n=typeof AbortController==`function`?new AbortController:null,e.loading=!0;try{let a=await v(r.detail.query,{signal:n?.signal});i===t&&(W.current=!0,e.options=a||[])}catch{i===t&&(W.current=!0,e.options=[])}finally{i===t&&(e.loading=!1)}};return e.addEventListener(`search`,r),()=>{t=-1,n?.abort(),e.removeEventListener(`search`,r),e.loading=!1}},[I,v,B]),f(`div`,{className:`field${N?` ${N}`:``}`,children:[D&&f(`label`,{className:`label`,htmlFor:R,children:[D,A&&d(r,{}),j&&d(n,{label:M,children:j})]}),d(`wui-autocomplete`,{"aria-label":typeof D==`string`?D:void 0,"aria-describedby":O?`${R}-error`:k?`${R}-hint`:void 0,"aria-invalid":O?`true`:void 0,id:R,ref:z,name:T,placeholder:y,remote:I?``:void 0,"min-chars":b==null?void 0:String(b),debounce:x==null?void 0:String(x),size:C||void 0,"allow-custom":w?``:void 0,disabled:S?``:void 0,required:A?``:void 0,...P}),H,O?d(`div`,{className:`field-error`,id:`${R}-error`,children:O}):k?d(`div`,{className:`field-hint`,id:`${R}-hint`,children:k}):null]})});export{g as default};
1
+ import e from"./warnInvalidValue.js";import t from"./warnUnknownProps.js";import n from"../lib/FieldMessage.js";import r from"./AppInfoTip.js";import i from"./AppRequiredMark.js";import a from"./useNodeLabels.js";import o,{optionsEqual as s}from"./useWuiControl.js";import{forwardRef as c,useEffect as l,useId as u,useRef as d}from"react";import{jsx as f,jsxs as p}from"react/jsx-runtime";import"@webority/ui-elements/elements/autocomplete";var m=[`sm`,`lg`],h=[],g=(e,t)=>({...e,label:t}),_=c(function({value:c,onChange:_,options:v,loadOptions:y,placeholder:b=`Search…`,minChars:x,debounce:S,disabled:C=!1,size:w,allowCustom:T=!1,name:E,id:D,label:O,error:k,hint:A,required:j=!1,help:M,helpLabel:N=`More information`,fieldClassName:P=``,...F},I){t(`AppAutocomplete`,F),e(`AppAutocomplete`,`size`,w,m);let L=typeof y==`function`,R=u(),z=D||R,{setRef:B,innerRef:V}=o({ref:I,value:c??``,on:{change:e=>_?.(e.currentTarget.value,{isCustom:!!e.detail?.isCustom})}}),H=v||h,{portal:U,toElementOptions:W}=a(H),G=d(!1);return l(()=>{let e=V.current;if(!e||L&&G.current)return;let t=W(H,g);s(t,e.options)||(e.options=t)},[H,L,V,W]),l(()=>{let e=V.current;if(!e||!L)return;let t=0,n=null,r=async r=>{let i=++t;n?.abort(),n=typeof AbortController==`function`?new AbortController:null,e.loading=!0;try{let a=await y(r.detail.query,{signal:n?.signal});i===t&&(G.current=!0,e.options=a||[])}catch{i===t&&(G.current=!0,e.options=[])}finally{i===t&&(e.loading=!1)}};return e.addEventListener(`search`,r),()=>{t=-1,n?.abort(),e.removeEventListener(`search`,r),e.loading=!1}},[L,y,V]),p(`div`,{className:`field${P?` ${P}`:``}`,children:[O&&p(`label`,{className:`label`,htmlFor:z,children:[O,j&&f(i,{}),M&&f(r,{label:N,children:M})]}),f(`wui-autocomplete`,{"aria-label":typeof O==`string`?O:void 0,"aria-describedby":k?`${z}-error`:A?`${z}-hint`:void 0,"aria-invalid":k?`true`:void 0,id:z,ref:B,name:E,placeholder:b,remote:L?``:void 0,"min-chars":x==null?void 0:String(x),debounce:S==null?void 0:String(S),size:w||void 0,"allow-custom":T?``:void 0,disabled:C?``:void 0,required:j?``:void 0,...F}),U,f(n,{error:k,hint:A,errorId:`${z}-error`,hintId:`${z}-hint`})]})});export{_ as default};
@@ -1 +1 @@
1
- import e from"./warnInvalidValue.js";import t from"./warnUnknownProps.js";import n from"./AppIcon.js";import r from"./AppAlert.js";import i from"./AppButton.js";import ee from"./AppRequiredMark.js";import te from"./AppModal.js";import{AVATAR_ACCEPT as ne,AVATAR_MAX_SIZE_MB as re,AVATAR_OUTPUT_SIZE as ie,AVATAR_PREVIEW_SIZES as a,AVATAR_TEXT as o,avatarCropOptions as ae,avatarUnreadableMessage as oe,validateFile as se}from"@webority/ui-elements/helpers";import{useCallback as ce,useEffect as s,useId as le,useRef as c,useState as l}from"react";import{Fragment as ue,jsx as u,jsxs as d}from"react/jsx-runtime";import"@webority/ui-elements/elements/image-crop";var f={sm:64,md:96,lg:128},de=a.join(` `);function p({value:a,initials:p,onPick:fe,onRemove:m,name:h,removeName:g,accept:_=ne,maxSizeMb:pe=re,outputSize:me=ie,size:v=`md`,label:he,hint:y,error:ge,required:_e=!1,loading:b=!1,disabled:ve=!1,ariaLabel:ye,className:x=``,fieldClassName:S=``,style:be,...C}){t(`AppAvatarPicker`,C),e(`AppAvatarPicker`,`size`,typeof v==`string`?v:null,Object.keys(f));let w=le(),T=c(null),E=c(null),D=c(null),[O,k]=l(null),[A,j]=l(!1),[xe,M]=l(!1),[Se,N]=l(``),[P,F]=l(!1),[I,L]=l(null),[R,z]=l(`loading`),[B,V]=l(``),[H,U]=l(!1),Ce=ce(e=>{if(D.current=e,!e)return;let t=()=>{z(`ready`),e.querySelector(`.wui-crop-stage`)?.focus()},n=()=>z(`error`);return e.addEventListener(`load`,t),e.addEventListener(`error`,n),()=>{e.removeEventListener(`load`,t),e.removeEventListener(`error`,n),D.current=null}},[]);s(()=>()=>I&&URL.revokeObjectURL(I.url),[I]),s(()=>()=>O&&URL.revokeObjectURL(O),[O]),s(()=>{k(null),j(!1),M(!1)},[a]);let W=b||ve,G=A?null:O||(a&&!xe?a:null),K=!!G,we=!W&&K&&!!(m||g),q=ge||Se,J=y&&!q?`${w}-hint`:void 0,Y=q?`${w}-error`:void 0,X=Y||J,Z=K?o.change:o.choose,Q=typeof v==`number`?v:f[v]??f.md,Te=()=>{W||T.current?.click()},Ee=()=>{W||E.current?.click()},De=e=>{let t=se(e,{accept:_,maxSizeMb:pe});if(t){N(t);return}N(``),z(`loading`),V(``),L({file:e,url:URL.createObjectURL(e)})},Oe=e=>{let t=e.target.files?.[0];e.target.value=``,t&&De(t)},ke=e=>{if(e.preventDefault(),F(!1),W)return;let t=e.dataTransfer?.files?.[0];t&&De(t)},Ae=e=>{if(h&&T.current&&typeof DataTransfer==`function`){let t=new DataTransfer;t.items.add(e),T.current.files=t.files}j(!1),M(!1),k(URL.createObjectURL(e)),fe(e)},je=async()=>{let{file:e}=I;U(!0),V(``);let t=null;try{t=await D.current?.toFile(ae(e,me))}catch{t=null}if(U(!1),!t){V(o.cropFailed);return}L(null),Ae(t)},$=()=>{H||L(null)},Me=()=>{k(null),j(!0),N(``),T.current&&(T.current.value=``),m?.()};return d(`div`,{className:`field wui-avatar-picker-field${S?` ${S}`:``}`,children:[he&&d(`label`,{className:`label`,htmlFor:w,children:[he,_e&&u(ee,{})]}),d(`div`,{className:`wui-avatar-picker${P?` is-dragging`:``}${x?` ${x}`:``}`,style:{"--wui-avatar-size":`${Q}px`,...be},onDragOver:e=>{e.preventDefault(),!W&&!P&&F(!0)},onDragLeave:()=>F(!1),onDrop:ke,children:[d(`button`,{type:`button`,className:`wui-avatar-picker-face`,tabIndex:-1,"aria-label":ye||Z,"aria-describedby":X,"aria-busy":b||void 0,disabled:W,onClick:Te,...C,children:[G?u(`img`,{className:`wui-avatar-picker-img`,src:G,alt:``,onError:()=>M(!0)}):u(`span`,{className:`wui-avatar-picker-placeholder`,"aria-hidden":`true`,children:p||u(n,{name:`user`,size:Math.round(Q*.5)})}),u(`span`,{className:`wui-avatar-picker-badge`,"aria-hidden":`true`,children:b?u(n,{name:`refresh-cw`,size:14,className:`wui-spin`}):u(n,{name:`camera`,size:14})})]}),d(`div`,{className:`wui-avatar-picker-actions`,children:[u(`button`,{type:`button`,className:`btn btn-secondary btn-sm`,disabled:W,"aria-describedby":X,onClick:Te,children:Z}),d(`button`,{type:`button`,className:`btn btn-secondary btn-sm wui-avatar-picker-camera`,disabled:W,onClick:Ee,children:[u(n,{name:`camera`,size:16}),o.camera]}),u(`button`,{type:`button`,className:`btn btn-secondary-danger btn-sm`,hidden:!we,onClick:Me,children:o.remove})]}),u(`input`,{id:w,ref:T,type:`file`,name:h,hidden:!0,accept:_,disabled:W,onChange:Oe}),u(`input`,{ref:E,type:`file`,hidden:!0,accept:`image/*`,capture:`user`,disabled:W,onChange:Oe}),g&&u(`input`,{type:`hidden`,name:g,value:`true`,disabled:!A})]}),y&&!q&&u(`div`,{className:`field-hint`,id:J,children:y}),q&&u(`div`,{className:`field-error`,id:Y,children:q}),d(te,{open:!!I,title:o.dialogTitle,subtitle:o.dialogSubtitle,dismissible:!H,staticBackdrop:H,onClose:$,footer:d(ue,{children:[u(i,{type:`button`,variant:`secondary`,disabled:H,onClick:$,children:o.cancel}),u(i,{type:`button`,variant:`primary`,loading:H,disabled:R!==`ready`,onClick:je,children:o.save})]}),children:[R===`error`&&I&&u(r,{variant:`danger`,children:oe(I.file)}),B&&u(r,{variant:`danger`,children:B}),I&&R!==`error`&&u(`wui-image-crop`,{ref:Ce,src:I.url,aspect:`1`,round:!0,rotatable:!0,previews:de})]})]})}export{p as default};
1
+ import e from"./warnInvalidValue.js";import t from"./warnUnknownProps.js";import n from"./AppIcon.js";import r from"./AppAlert.js";import i from"./AppButton.js";import ee from"../lib/FieldMessage.js";import te from"./AppRequiredMark.js";import ne from"./AppModal.js";import{AVATAR_ACCEPT as re,AVATAR_MAX_SIZE_MB as ie,AVATAR_OUTPUT_SIZE as ae,AVATAR_PREVIEW_SIZES as a,AVATAR_TEXT as o,avatarCropOptions as oe,avatarUnreadableMessage as se,validateFile as ce}from"@webority/ui-elements/helpers";import{useCallback as le,useEffect as s,useId as ue,useRef as c,useState as l}from"react";import{Fragment as de,jsx as u,jsxs as d}from"react/jsx-runtime";import"@webority/ui-elements/elements/image-crop";var f={sm:64,md:96,lg:128},fe=a.join(` `);function p({value:a,initials:p,onPick:pe,onRemove:m,name:h,removeName:g,accept:_=re,maxSizeMb:me=ie,outputSize:he=ae,size:v=`md`,label:y,hint:b,error:ge,required:_e=!1,loading:x=!1,disabled:ve=!1,ariaLabel:ye,className:S=``,fieldClassName:C=``,style:be,...w}){t(`AppAvatarPicker`,w),e(`AppAvatarPicker`,`size`,typeof v==`string`?v:null,Object.keys(f));let T=ue(),E=c(null),D=c(null),O=c(null),[k,A]=l(null),[j,M]=l(!1),[xe,N]=l(!1),[Se,P]=l(``),[F,I]=l(!1),[L,R]=l(null),[z,B]=l(`loading`),[V,H]=l(``),[U,W]=l(!1),Ce=le(e=>{if(O.current=e,!e)return;let t=()=>{B(`ready`),e.querySelector(`.wui-crop-stage`)?.focus()},n=()=>B(`error`);return e.addEventListener(`load`,t),e.addEventListener(`error`,n),()=>{e.removeEventListener(`load`,t),e.removeEventListener(`error`,n),O.current=null}},[]);s(()=>()=>L&&URL.revokeObjectURL(L.url),[L]),s(()=>()=>k&&URL.revokeObjectURL(k),[k]),s(()=>{A(null),M(!1),N(!1)},[a]);let G=x||ve,K=j?null:k||(a&&!xe?a:null),q=!!K,we=!G&&q&&!!(m||g),J=ge||Se,Y=b&&!J?`${T}-hint`:void 0,X=J?`${T}-error`:void 0,Z=X||Y,Q=q?o.change:o.choose,$=typeof v==`number`?v:f[v]??f.md,Te=()=>{G||E.current?.click()},Ee=()=>{G||D.current?.click()},De=e=>{let t=ce(e,{accept:_,maxSizeMb:me});if(t){P(t);return}P(``),B(`loading`),H(``),R({file:e,url:URL.createObjectURL(e)})},Oe=e=>{let t=e.target.files?.[0];e.target.value=``,t&&De(t)},ke=e=>{if(e.preventDefault(),I(!1),G)return;let t=e.dataTransfer?.files?.[0];t&&De(t)},Ae=e=>{if(h&&E.current&&typeof DataTransfer==`function`){let t=new DataTransfer;t.items.add(e),E.current.files=t.files}M(!1),N(!1),A(URL.createObjectURL(e)),pe(e)},je=async()=>{let{file:e}=L;W(!0),H(``);let t=null;try{t=await O.current?.toFile(oe(e,he))}catch{t=null}if(W(!1),!t){H(o.cropFailed);return}R(null),Ae(t)},Me=()=>{U||R(null)},Ne=()=>{A(null),M(!0),P(``),E.current&&(E.current.value=``),m?.()};return d(`div`,{className:`field wui-avatar-picker-field${C?` ${C}`:``}`,children:[y&&d(`label`,{className:`label`,htmlFor:T,children:[y,_e&&u(te,{})]}),d(`div`,{className:`wui-avatar-picker${F?` is-dragging`:``}${S?` ${S}`:``}`,style:{"--wui-avatar-size":`${$}px`,...be},onDragOver:e=>{e.preventDefault(),!G&&!F&&I(!0)},onDragLeave:()=>I(!1),onDrop:ke,children:[d(`button`,{type:`button`,className:`wui-avatar-picker-face`,tabIndex:-1,"aria-label":ye||Q,"aria-describedby":Z,"aria-busy":x||void 0,disabled:G,onClick:Te,...w,children:[K?u(`img`,{className:`wui-avatar-picker-img`,src:K,alt:``,onError:()=>N(!0)}):u(`span`,{className:`wui-avatar-picker-placeholder`,"aria-hidden":`true`,children:p||u(n,{name:`user`,size:Math.round($*.5)})}),u(`span`,{className:`wui-avatar-picker-badge`,"aria-hidden":`true`,children:x?u(n,{name:`refresh-cw`,size:14,className:`wui-spin`}):u(n,{name:`camera`,size:14})})]}),d(`div`,{className:`wui-avatar-picker-actions`,children:[u(`button`,{type:`button`,className:`btn btn-secondary btn-sm`,disabled:G,"aria-describedby":Z,onClick:Te,children:Q}),d(`button`,{type:`button`,className:`btn btn-secondary btn-sm wui-avatar-picker-camera`,disabled:G,onClick:Ee,children:[u(n,{name:`camera`,size:16}),o.camera]}),u(`button`,{type:`button`,className:`btn btn-secondary-danger btn-sm`,hidden:!we,onClick:Ne,children:o.remove})]}),u(`input`,{id:T,ref:E,type:`file`,name:h,hidden:!0,accept:_,disabled:G,onChange:Oe}),u(`input`,{ref:D,type:`file`,hidden:!0,accept:`image/*`,capture:`user`,disabled:G,onChange:Oe}),g&&u(`input`,{type:`hidden`,name:g,value:`true`,disabled:!j})]}),u(ee,{error:J,hint:b,errorId:X,hintId:Y}),d(ne,{open:!!L,title:o.dialogTitle,subtitle:o.dialogSubtitle,dismissible:!U,staticBackdrop:U,onClose:Me,footer:d(de,{children:[u(i,{type:`button`,variant:`secondary`,disabled:U,onClick:Me,children:o.cancel}),u(i,{type:`button`,variant:`primary`,loading:U,disabled:z!==`ready`,onClick:je,children:o.save})]}),children:[z===`error`&&L&&u(r,{variant:`danger`,children:se(L.file)}),V&&u(r,{variant:`danger`,children:V}),L&&z!==`error`&&u(`wui-image-crop`,{ref:Ce,src:L.url,aspect:`1`,round:!0,rotatable:!0,previews:fe})]})]})}export{p as default};
@@ -1 +1 @@
1
- import e from"./warnInvalidValue.js";import t from"./warnUnknownProps.js";import n from"./AppRequiredMark.js";import{useId as r}from"react";import{jsx as i,jsxs as a}from"react/jsx-runtime";var o=[`sm`,`md`,`lg`];function s({value:s=`#000000`,onChange:c,label:l,required:u=!1,error:d,hint:f,name:p,id:m,disabled:h=!1,size:g=`md`,className:_=``,fieldClassName:v=``,...y}){t(`AppColorField`,y),e(`AppColorField`,`size`,g,o);let b=r(),x=m||b,S=d?`${x}-error`:f?`${x}-hint`:void 0,C=e=>/^#[0-9a-f]{6}$/i.test(e),w=g===`sm`?` color-field-sm`:g===`lg`?` color-field-lg`:``,T=g===`sm`?` input-sm`:g===`lg`?` input-lg`:``;return a(`div`,{className:`field${v?` ${v}`:``}`,children:[l&&a(`label`,{className:`label`,htmlFor:x,children:[l,u&&i(n,{})]}),a(`div`,{className:`color-field${w}`,children:[i(`input`,{type:`color`,className:`color-field-swatch`,value:C(s)?s:`#000000`,onChange:e=>c?.(e.target.value),disabled:h,"aria-label":`${l||`Colour`}, colour picker`,tabIndex:-1}),i(`input`,{type:`text`,className:`input color-field-hex${T}${d?` error`:``}${_?` ${_}`:``}`,id:x,name:p,value:s,onChange:e=>c?.(e.target.value),placeholder:`#4F46E5`,spellCheck:!1,maxLength:7,required:u,disabled:h,"aria-invalid":d?`true`:`false`,"aria-describedby":S,...y})]}),d?i(`div`,{className:`field-error`,id:`${x}-error`,children:d}):f?i(`div`,{className:`field-hint`,id:`${x}-hint`,children:f}):null]})}export{s as default};
1
+ import e from"./warnInvalidValue.js";import t from"./warnUnknownProps.js";import n from"../lib/FieldMessage.js";import r from"./AppRequiredMark.js";import{useId as i}from"react";import{jsx as a,jsxs as o}from"react/jsx-runtime";var s=[`sm`,`md`,`lg`];function c({value:c=`#000000`,onChange:l,label:u,required:d=!1,error:f,hint:p,name:m,id:h,disabled:g=!1,size:_=`md`,className:v=``,fieldClassName:y=``,...b}){t(`AppColorField`,b),e(`AppColorField`,`size`,_,s);let x=i(),S=h||x,C=f?`${S}-error`:p?`${S}-hint`:void 0,w=e=>/^#[0-9a-f]{6}$/i.test(e),T=_===`sm`?` color-field-sm`:_===`lg`?` color-field-lg`:``,E=_===`sm`?` input-sm`:_===`lg`?` input-lg`:``;return o(`div`,{className:`field${y?` ${y}`:``}`,children:[u&&o(`label`,{className:`label`,htmlFor:S,children:[u,d&&a(r,{})]}),o(`div`,{className:`color-field${T}`,children:[a(`input`,{type:`color`,className:`color-field-swatch`,value:w(c)?c:`#000000`,onChange:e=>l?.(e.target.value),disabled:g,"aria-label":`${u||`Colour`}, colour picker`,tabIndex:-1}),a(`input`,{type:`text`,className:`input color-field-hex${E}${f?` error`:``}${v?` ${v}`:``}`,id:S,name:m,value:c,onChange:e=>l?.(e.target.value),placeholder:`#4F46E5`,spellCheck:!1,maxLength:7,required:d,disabled:g,"aria-invalid":f?`true`:`false`,"aria-describedby":C,...b})]}),a(n,{error:f,hint:p,errorId:`${S}-error`,hintId:`${S}-hint`})]})}export{c as default};
@@ -1 +1 @@
1
- import e from"./warnInvalidValue.js";import t from"./warnUnknownProps.js";import n from"./AppInfoTip.js";import r from"./AppRequiredMark.js";import i from"./useWuiControl.js";import{forwardRef as a,useId as o}from"react";import{jsx as s,jsxs as c}from"react/jsx-runtime";import"@webority/ui-elements/elements/country-select";var l=[`sm`,`md`,`lg`],u=a(function({value:a,onChange:u,countries:d,placeholder:f=`Select country`,searchPlaceholder:p=`Search countries...`,searchable:m=!0,clearable:h=!1,size:g=`md`,floatingLabel:_=!1,disabled:v,label:y,required:b=!1,error:x,hint:S,help:C,helpLabel:w=`More information`,id:T,name:E,className:D=``,fieldClassName:O=``,"aria-label":k,"aria-labelledby":A,"aria-describedby":j,...M},N){t(`AppCountrySelect`,M),e(`AppCountrySelect`,`size`,g,l);let P=o(),{setRef:F}=i({ref:N,value:a??``,onChange:u}),I=T||P,L=_&&y,R=x&&I?`${I}-error`:void 0,z=S&&I?`${I}-hint`:void 0,B=s(`wui-country-select`,{"aria-label":k||(typeof y==`string`?y:void 0),"aria-labelledby":A||void 0,"aria-describedby":R||z||j||void 0,"aria-invalid":x?`true`:void 0,ref:F,id:I,name:E,countries:Array.isArray(d)?d.join(`,`):void 0,placeholder:L?` `:f,"search-placeholder":p,searchable:m?``:void 0,clearable:h?``:void 0,size:g===`sm`||g===`lg`?g:void 0,disabled:v?``:void 0,required:b?``:void 0,className:D||void 0,...M});return!y&&!x&&!S?B:c(`div`,{className:[`field`,O].filter(Boolean).join(` `),children:[y&&!L&&c(`label`,{className:`label`,htmlFor:I,children:[y,b&&s(r,{}),C&&s(n,{label:w,children:C})]}),L?c(`div`,{className:`field-float`,children:[B,c(`label`,{className:`float-label`,htmlFor:I,children:[y,b&&s(r,{})]})]}):B,x?s(`div`,{className:`field-error`,id:R,children:x}):S?s(`div`,{className:`field-hint`,id:z,children:S}):null]})});export{u as default};
1
+ import e from"./warnInvalidValue.js";import t from"./warnUnknownProps.js";import n from"../lib/FieldMessage.js";import r from"./AppInfoTip.js";import i from"./AppRequiredMark.js";import a from"./useWuiControl.js";import{forwardRef as o,useId as s}from"react";import{jsx as c,jsxs as l}from"react/jsx-runtime";import"@webority/ui-elements/elements/country-select";var u=[`sm`,`md`,`lg`],d=o(function({value:o,onChange:d,countries:f,placeholder:p=`Select country`,searchPlaceholder:m=`Search countries...`,searchable:h=!0,clearable:g=!1,size:_=`md`,floatingLabel:v=!1,disabled:y,label:b,required:x=!1,error:S,hint:C,help:w,helpLabel:T=`More information`,id:E,name:D,className:O=``,fieldClassName:k=``,"aria-label":A,"aria-labelledby":j,"aria-describedby":M,...N},P){t(`AppCountrySelect`,N),e(`AppCountrySelect`,`size`,_,u);let F=s(),{setRef:I}=a({ref:P,value:o??``,onChange:d}),L=E||F,R=v&&b,z=S&&L?`${L}-error`:void 0,B=C&&L?`${L}-hint`:void 0,V=c(`wui-country-select`,{"aria-label":A||(typeof b==`string`?b:void 0),"aria-labelledby":j||void 0,"aria-describedby":z||B||M||void 0,"aria-invalid":S?`true`:void 0,ref:I,id:L,name:D,countries:Array.isArray(f)?f.join(`,`):void 0,placeholder:R?` `:p,"search-placeholder":m,searchable:h?``:void 0,clearable:g?``:void 0,size:_===`sm`||_===`lg`?_:void 0,disabled:y?``:void 0,required:x?``:void 0,className:O||void 0,...N});return!b&&!S&&!C?V:l(`div`,{className:[`field`,k].filter(Boolean).join(` `),children:[b&&!R&&l(`label`,{className:`label`,htmlFor:L,children:[b,x&&c(i,{}),w&&c(r,{label:T,children:w})]}),R?l(`div`,{className:`field-float`,children:[V,l(`label`,{className:`float-label`,htmlFor:L,children:[b,x&&c(i,{})]})]}):V,c(n,{error:S,hint:C,errorId:z,hintId:B})]})});export{d as default};
@@ -1 +1 @@
1
- import e from"./warnInvalidValue.js";import t from"./warnUnknownProps.js";import n from"./AppRequiredMark.js";import r from"./useWuiControl.js";import{forwardRef as i,useId as a}from"react";import{jsx as o,jsxs as s}from"react/jsx-runtime";import"@webority/ui-elements/elements/datepicker";var c=[`sm`,`md`,`lg`],l=i(function({value:i,onChange:l,label:u,required:d=!1,hint:f,error:p,name:m,min:h,max:g,placeholder:_=`Choose a date`,disabled:v,size:y,firstDay:b,displayFormat:x,id:S,ariaLabel:C,className:w=``,fieldClassName:T=``,...E},D){t(`AppDatePicker`,E),e(`AppDatePicker`,`size`,y,c);let O=a(),k=S||O,{setRef:A}=r({ref:D,value:i??``,onChange:l}),j=!u&&!p&&!f,M=p?`${k}-error`:void 0,N=f?`${k}-hint`:void 0,P=o(`wui-datepicker`,{ref:A,id:k,name:m,min:h,max:g,placeholder:_,size:y||void 0,"first-day":b==null?void 0:String(b),"display-format":x||void 0,"aria-label":C||(typeof u==`string`?u:void 0),"aria-describedby":M||N,"aria-invalid":p?`true`:void 0,disabled:v?``:void 0,required:d?``:void 0,className:w||void 0,...E});return j?P:s(`div`,{className:`field${T?` ${T}`:``}`,children:[u&&s(`label`,{className:`label`,htmlFor:k,children:[u,d&&o(n,{})]}),P,p&&o(`div`,{className:`field-error`,id:M,children:p}),!p&&f&&o(`div`,{className:`field-hint`,id:N,children:f})]})});export{l as default};
1
+ import e from"./warnInvalidValue.js";import t from"./warnUnknownProps.js";import n from"../lib/FieldMessage.js";import r from"./AppRequiredMark.js";import i from"./useWuiControl.js";import{forwardRef as a,useId as o}from"react";import{jsx as s,jsxs as c}from"react/jsx-runtime";import"@webority/ui-elements/elements/datepicker";var l=[`sm`,`md`,`lg`],u=a(function({value:a,onChange:u,label:d,required:f=!1,hint:p,error:m,name:h,min:g,max:_,placeholder:v=`Choose a date`,disabled:y,size:b,firstDay:x,displayFormat:S,id:C,ariaLabel:w,className:T=``,fieldClassName:E=``,...D},O){t(`AppDatePicker`,D),e(`AppDatePicker`,`size`,b,l);let k=o(),A=C||k,{setRef:j}=i({ref:O,value:a??``,onChange:u}),M=!d&&!m&&!p,N=m?`${A}-error`:void 0,P=p?`${A}-hint`:void 0,F=s(`wui-datepicker`,{ref:j,id:A,name:h,min:g,max:_,placeholder:v,size:b||void 0,"first-day":x==null?void 0:String(x),"display-format":S||void 0,"aria-label":w||(typeof d==`string`?d:void 0),"aria-describedby":N||P,"aria-invalid":m?`true`:void 0,disabled:y?``:void 0,required:f?``:void 0,className:T||void 0,...D});return M?F:c(`div`,{className:`field${E?` ${E}`:``}`,children:[d&&c(`label`,{className:`label`,htmlFor:A,children:[d,f&&s(r,{})]}),F,s(n,{error:m,hint:p,errorId:N,hintId:P})]})});export{u as default};
@@ -1 +1 @@
1
- import e from"./warnInvalidValue.js";import t from"./warnUnknownProps.js";import n from"./AppRequiredMark.js";import r from"./useWuiControl.js";import{forwardRef as i,useEffect as a,useId as o}from"react";import{jsx as s,jsxs as c}from"react/jsx-runtime";import"@webority/ui-elements/elements/date-range";var l=[`sm`,`md`,`lg`],u=e=>{if(e?.length)return e.every(e=>typeof e==`string`)?e.join(`,`):JSON.stringify(e)},d=i(function({start:i,end:d,onChange:f,label:p,required:m=!1,hint:h,error:g,startName:_,endName:v,min:y,max:b,placeholder:x=`Start to End`,disabled:S,size:C,firstDay:w,presets:T,id:E,ariaLabel:D,className:O=``,fieldClassName:k=``,...A},j){t(`AppDateRangePicker`,A),e(`AppDateRangePicker`,`size`,C,l);let M=o(),N=E||M,{setRef:P,innerRef:F}=r({ref:j,onChange:f});a(()=>{let e=F.current;if(!e)return;let t=i===void 0?e.value.start:i,n=d===void 0?e.value.end:d;(e.value.start!==t||e.value.end!==n)&&(e.value={start:t,end:n})},[i,d,F]);let I=!p&&!g&&!h,L=g?`${N}-error`:void 0,R=h?`${N}-hint`:void 0,z=L||R,B=s(`wui-date-range`,{ref:P,id:N,"start-name":_,"end-name":v,min:y,max:b,placeholder:x,size:C||void 0,"first-day":w==null?void 0:String(w),presets:u(T),"aria-label":D||(typeof p==`string`?p:void 0),"aria-describedby":z,"aria-invalid":g?`true`:void 0,disabled:S?``:void 0,required:m?``:void 0,className:O||void 0,...A});return I?B:c(`div`,{className:`field${k?` ${k}`:``}`,children:[p&&c(`label`,{className:`label`,htmlFor:N,children:[p,m&&s(n,{})]}),B,g&&s(`div`,{className:`field-error`,id:L,children:g}),!g&&h&&s(`div`,{className:`field-hint`,id:R,children:h})]})});export{d as default};
1
+ import e from"./warnInvalidValue.js";import t from"./warnUnknownProps.js";import n from"../lib/FieldMessage.js";import r from"./AppRequiredMark.js";import i from"./useWuiControl.js";import{forwardRef as a,useEffect as o,useId as s}from"react";import{jsx as c,jsxs as l}from"react/jsx-runtime";import"@webority/ui-elements/elements/date-range";var u=[`sm`,`md`,`lg`],d=e=>{if(e?.length)return e.every(e=>typeof e==`string`)?e.join(`,`):JSON.stringify(e)},f=a(function({start:a,end:f,onChange:p,label:m,required:h=!1,hint:g,error:_,startName:v,endName:y,min:b,max:x,placeholder:S=`Start to End`,disabled:C,size:w,firstDay:T,presets:E,id:D,ariaLabel:O,className:k=``,fieldClassName:A=``,...j},M){t(`AppDateRangePicker`,j),e(`AppDateRangePicker`,`size`,w,u);let N=s(),P=D||N,{setRef:F,innerRef:I}=i({ref:M,onChange:p});o(()=>{let e=I.current;if(!e)return;let t=a===void 0?e.value.start:a,n=f===void 0?e.value.end:f;(e.value.start!==t||e.value.end!==n)&&(e.value={start:t,end:n})},[a,f,I]);let L=!m&&!_&&!g,R=_?`${P}-error`:void 0,z=g?`${P}-hint`:void 0,B=R||z,V=c(`wui-date-range`,{ref:F,id:P,"start-name":v,"end-name":y,min:b,max:x,placeholder:S,size:w||void 0,"first-day":T==null?void 0:String(T),presets:d(E),"aria-label":O||(typeof m==`string`?m:void 0),"aria-describedby":B,"aria-invalid":_?`true`:void 0,disabled:C?``:void 0,required:h?``:void 0,className:k||void 0,...j});return L?V:l(`div`,{className:`field${A?` ${A}`:``}`,children:[m&&l(`label`,{className:`label`,htmlFor:P,children:[m,h&&c(r,{})]}),V,c(n,{error:_,hint:g,errorId:R,hintId:z})]})});export{f as default};
@@ -1 +1 @@
1
- import e from"./warnUnknownProps.js";import t from"./AppIcon.js";import{DEFAULT_MAX_SIZE_MB as n,acceptLabel as r,validateFile as i}from"@webority/ui-elements/helpers";import{useId as a,useState as o}from"react";import{jsx as s,jsxs as c}from"react/jsx-runtime";function l({label:l,id:u,onChange:d,multiple:f=!1,accept:p=``,maxSizeMb:m=n,error:h,hint:g,disabled:_=!1,className:v=``,fieldClassName:y=``,style:b,...x}){e(`AppDropZone`,x);let[S,C]=o(!1),[w,T]=o(``),E=a(),D=u||E,O=h||w,k=O?`${D}-error`:void 0,A=g&&!O?`${D}-hint`:void 0,j=k||A,M=p?r(p):`Any file type`,N=e=>{let t=Array.from(e||[]);if(!t.length)return;if(!f){let e=i(t[0],{accept:p,maxSizeMb:m});T(e||``),e||d(t[0]);return}let n=``,r=[];for(let e of t){let t=i(e,{accept:p,maxSizeMb:m});if(t){n||=t;continue}r.push(e)}T(n),r.length&&d(r)};return c(`div`,{className:`field${y?` ${y}`:``}`,children:[l?s(`label`,{className:`label`,htmlFor:D,children:l}):null,c(`div`,{className:`file-input file-input-tall${S?` dragging`:``}${O?` error`:``}${v?` ${v}`:``}`,style:b,"aria-disabled":_||void 0,onDragOver:e=>{e.preventDefault(),!_&&!S&&C(!0)},onDragLeave:e=>{e.preventDefault(),C(!1)},onDrop:e=>{e.preventDefault(),C(!1),_||N(e.dataTransfer.files)},children:[c(`label`,{htmlFor:D,className:`file-input-zone-label`,children:[s(`span`,{className:`file-input-icon`,children:s(t,{name:`upload`,size:24})}),c(`span`,{className:`file-input-title`,children:[s(`span`,{className:`browse`,children:`Click to upload`}),` or drag & drop`]}),s(`span`,{className:`file-input-text`,children:m>0?`${M}, up to ${m} MB`:M})]}),s(`input`,{id:D,type:`file`,"aria-describedby":j,accept:p,multiple:f||void 0,disabled:_||void 0,className:`visually-hidden`,onClick:e=>{e.currentTarget.value=``},onChange:e=>N(e.target.files),...x})]}),O?s(`div`,{className:`field-error`,id:k,children:O}):g?s(`div`,{className:`field-hint`,id:A,children:g}):null]})}export{l as default};
1
+ import e from"./warnUnknownProps.js";import t from"./AppIcon.js";import n from"../lib/FieldMessage.js";import{DEFAULT_MAX_SIZE_MB as r,acceptLabel as i,validateFile as a}from"@webority/ui-elements/helpers";import{useId as o,useState as s}from"react";import{jsx as c,jsxs as l}from"react/jsx-runtime";function u({label:u,id:d,onChange:f,multiple:p=!1,accept:m=``,maxSizeMb:h=r,error:g,hint:_,disabled:v=!1,className:y=``,fieldClassName:b=``,style:x,...S}){e(`AppDropZone`,S);let[C,w]=s(!1),[T,E]=s(``),D=o(),O=d||D,k=g||T,A=k?`${O}-error`:void 0,j=_&&!k?`${O}-hint`:void 0,M=A||j,N=m?i(m):`Any file type`,P=e=>{let t=Array.from(e||[]);if(!t.length)return;if(!p){let e=a(t[0],{accept:m,maxSizeMb:h});E(e||``),e||f(t[0]);return}let n=``,r=[];for(let e of t){let t=a(e,{accept:m,maxSizeMb:h});if(t){n||=t;continue}r.push(e)}E(n),r.length&&f(r)};return l(`div`,{className:`field${b?` ${b}`:``}`,children:[u?c(`label`,{className:`label`,htmlFor:O,children:u}):null,l(`div`,{className:`file-input file-input-tall${C?` dragging`:``}${k?` error`:``}${y?` ${y}`:``}`,style:x,"aria-disabled":v||void 0,onDragOver:e=>{e.preventDefault(),!v&&!C&&w(!0)},onDragLeave:e=>{e.preventDefault(),w(!1)},onDrop:e=>{e.preventDefault(),w(!1),v||P(e.dataTransfer.files)},children:[l(`label`,{htmlFor:O,className:`file-input-zone-label`,children:[c(`span`,{className:`file-input-icon`,children:c(t,{name:`upload`,size:24})}),l(`span`,{className:`file-input-title`,children:[c(`span`,{className:`browse`,children:`Click to upload`}),` or drag & drop`]}),c(`span`,{className:`file-input-text`,children:h>0?`${N}, up to ${h} MB`:N})]}),c(`input`,{id:O,type:`file`,"aria-describedby":M,accept:m,multiple:p||void 0,disabled:v||void 0,className:`visually-hidden`,onClick:e=>{e.currentTarget.value=``},onChange:e=>P(e.target.files),...S})]}),c(n,{error:k,hint:_,errorId:A,hintId:j})]})}export{u as default};
@@ -1 +1 @@
1
- import e from"./warnUnknownProps.js";import t from"./AppIcon.js";import{keyOf as n,nameOf as r,sizeLabelOf as i,useItemUrl as a}from"../lib/fileItem.js";import o from"../lib/FileItemRow.js";import{DEFAULT_IMAGE_ACCEPT as s,DEFAULT_MAX_SIZE_MB as c,acceptLabel as l,isImageFile as u,isImageOnlyAccept as d,validateFile as f}from"@webority/ui-elements/helpers";import{useId as p,useState as m}from"react";import{Fragment as h,jsx as g,jsxs as _}from"react/jsx-runtime";function v({label:r=`Attachment`,value:i,name:a,onChange:l,multiple:v=!1,accept:x=s,maxSizeMb:S=c,optional:C=!1,validate:w=!0,error:T,id:E,...D}){e(`AppFileAttachment`,D);let O=p(),k=E||O,[A,j]=m(``),M=v&&Array.isArray(i)?i:i?[i]:[],N=d(x),P=e=>e instanceof File?u(e):N||u(e),F=!v&&M.length===1&&P(M[0]),I=y(x,S);function L(e){let t=Array.from(e.target.files||[]);if(e.target.value=``,!t.length)return;let r=[],a=``;for(let e of t){let t=w?f(e,{accept:x,maxSizeMb:S}):null;if(t){a||=t;continue}r.push(e)}if(j(a),r.length)if(v){let e=Array.isArray(i)?i:i?[i]:[],t=new Set(e.map(n));l(e.concat(r.filter(e=>!t.has(n(e)))))}else l(r[0])}function R(e){j(``),l(v?M.filter((t,n)=>n!==e):null)}let z=T||A,B=z?`${k}-error`:void 0,V=v||M.length===0,H=N?`image`:`file`,U=v?`Add ${H}s`:`Add ${N?`an`:`a`} ${H}`;return _(`div`,{className:`field`,children:[_(`label`,{className:`label`,htmlFor:k,children:[r,C&&g(`span`,{className:`label-optional`,children:` (optional)`})]}),V&&_(h,{children:[_(`label`,{className:`attach-drop`,htmlFor:k,children:[g(`span`,{className:`attach-drop-icon`,children:g(t,{name:N?`image`:`file-text`,size:18})}),_(`span`,{className:`attach-drop-copy`,children:[g(`span`,{className:`attach-drop-title`,children:U}),I&&g(`span`,{className:`attach-drop-hint`,children:I})]}),g(`span`,{className:`attach-drop-cta`,children:`Browse`})]}),g(`input`,{id:k,type:`file`,className:`visually-hidden`,name:a,accept:x||void 0,multiple:v||void 0,"aria-describedby":B,onChange:L,...D})]}),F?g(b,{item:M[0],isImage:!0,onRemove:()=>R(0)}):M.length>0&&g(`div`,{className:`attach-list`,children:M.map((e,t)=>g(o,{item:e,isImage:P(e),onRemove:()=>R(t)},n(e)))}),z&&g(`div`,{className:`field-error`,id:`${k}-error`,children:z})]})}function y(e,t){let n=e?.trim()?l(e):``,r=t>0?`up to ${t} MB`:``;return n&&r?`${n}, ${r}`:r?`Up to ${t} MB`:n}function b({item:e,isImage:n,onRemove:o}){let s=a(e,n),c=r(e),l=i(e);return _(`div`,{className:`attach-preview`,children:[_(`div`,{className:`attach-figure`,children:[g(`img`,{src:s,alt:c}),g(`button`,{type:`button`,className:`attach-remove`,"aria-label":`Remove attachment`,onClick:o,children:g(t,{name:`x`,size:18})})]}),_(`div`,{className:`attach-meta`,children:[g(`div`,{className:`attach-name`,children:c}),l&&g(`div`,{className:`attach-size`,children:l})]})]})}export{v as default};
1
+ import e from"./warnUnknownProps.js";import t from"./AppIcon.js";import n from"../lib/FieldMessage.js";import{keyOf as r,nameOf as i,sizeLabelOf as a,useItemUrl as o}from"../lib/fileItem.js";import s from"../lib/FileItemRow.js";import{DEFAULT_IMAGE_ACCEPT as c,DEFAULT_MAX_SIZE_MB as l,acceptLabel as u,isImageFile as d,isImageOnlyAccept as f,validateFile as p}from"@webority/ui-elements/helpers";import{useId as m,useState as h}from"react";import{Fragment as g,jsx as _,jsxs as v}from"react/jsx-runtime";function y({label:i=`Attachment`,value:a,name:o,onChange:u,multiple:y=!1,accept:S=c,maxSizeMb:C=l,optional:w=!1,validate:T=!0,error:E,id:D,...O}){e(`AppFileAttachment`,O);let k=m(),A=D||k,[j,M]=h(``),N=y&&Array.isArray(a)?a:a?[a]:[],P=f(S),F=e=>e instanceof File?d(e):P||d(e),I=!y&&N.length===1&&F(N[0]),L=b(S,C);function R(e){let t=Array.from(e.target.files||[]);if(e.target.value=``,!t.length)return;let n=[],i=``;for(let e of t){let t=T?p(e,{accept:S,maxSizeMb:C}):null;if(t){i||=t;continue}n.push(e)}if(M(i),n.length)if(y){let e=Array.isArray(a)?a:a?[a]:[],t=new Set(e.map(r));u(e.concat(n.filter(e=>!t.has(r(e)))))}else u(n[0])}function z(e){M(``),u(y?N.filter((t,n)=>n!==e):null)}let B=E||j,V=B?`${A}-error`:void 0,H=y||N.length===0,U=P?`image`:`file`,W=y?`Add ${U}s`:`Add ${P?`an`:`a`} ${U}`;return v(`div`,{className:`field`,children:[v(`label`,{className:`label`,htmlFor:A,children:[i,w&&_(`span`,{className:`label-optional`,children:` (optional)`})]}),H&&v(g,{children:[v(`label`,{className:`attach-drop`,htmlFor:A,children:[_(`span`,{className:`attach-drop-icon`,children:_(t,{name:P?`image`:`file-text`,size:18})}),v(`span`,{className:`attach-drop-copy`,children:[_(`span`,{className:`attach-drop-title`,children:W}),L&&_(`span`,{className:`attach-drop-hint`,children:L})]}),_(`span`,{className:`attach-drop-cta`,children:`Browse`})]}),_(`input`,{id:A,type:`file`,className:`visually-hidden`,name:o,accept:S||void 0,multiple:y||void 0,"aria-describedby":V,onChange:R,...O})]}),I?_(x,{item:N[0],isImage:!0,onRemove:()=>z(0)}):N.length>0&&_(`div`,{className:`attach-list`,children:N.map((e,t)=>_(s,{item:e,isImage:F(e),onRemove:()=>z(t)},r(e)))}),_(n,{error:B,errorId:`${A}-error`})]})}function b(e,t){let n=e?.trim()?u(e):``,r=t>0?`up to ${t} MB`:``;return n&&r?`${n}, ${r}`:r?`Up to ${t} MB`:n}function x({item:e,isImage:n,onRemove:r}){let s=o(e,n),c=i(e),l=a(e);return v(`div`,{className:`attach-preview`,children:[v(`div`,{className:`attach-figure`,children:[_(`img`,{src:s,alt:c}),_(`button`,{type:`button`,className:`attach-remove`,"aria-label":`Remove attachment`,onClick:r,children:_(t,{name:`x`,size:18})})]}),v(`div`,{className:`attach-meta`,children:[_(`div`,{className:`attach-name`,children:c}),l&&_(`div`,{className:`attach-size`,children:l})]})]})}export{y as default};
@@ -1 +1 @@
1
- import e from"./warnUnknownProps.js";import t from"./withTooltip.js";import n from"./AppIcon.js";import r from"./AppRequiredMark.js";import{keyOf as i}from"../lib/fileItem.js";import a from"../lib/FileItemRow.js";import{DEFAULT_MAX_SIZE_MB as o,acceptLabel as s,isImageFile as c,isImageOnlyAccept as ee,isPdfFile as l,validateFile as u}from"@webority/ui-elements/helpers";import{useEffect as d,useId as te,useRef as f,useState as p}from"react";import{jsx as m,jsxs as h}from"react/jsx-runtime";function g({label:g,value:_,name:ne,id:re,onPick:v,multiple:y=!1,maxFiles:b,accept:x=`.jpg,.jpeg,.png`,maxSizeMb:S=o,required:ie,error:ae,hint:C,loading:w=!1,className:T=``,fieldClassName:E=``,style:D,...O}){e(`AppFilePicker`,O);let[oe,k]=p(null),[se,A]=p(null),[j,M]=p(!1),[N,P]=p(``),F=f(null),ce=te(),I=re||ce;d(()=>{if(!y&&_ instanceof File&&c(_)){let e=URL.createObjectURL(_);return k(e),()=>URL.revokeObjectURL(e)}k(null)},[_,y]);let L=!y&&_&&!c(_)&&l(_)?_ instanceof File?_:_.url:null;d(()=>{if(!L){A(null);return}let e=!0,t=null;return import(`@webority/ui-elements/file-viewer`).then(e=>e.renderPdfFirstPage(typeof L==`string`?{url:L}:L)).then(n=>{e&&(t=URL.createObjectURL(n),A(t))}).catch(e=>console.warn(`[AppFilePicker] the PDF preview failed:`,e?.message)),()=>{e=!1,A(null),t&&URL.revokeObjectURL(t)}},[L]);let R=y?Array.isArray(_)?_:_?[_]:[]:[],z=ae||N,B=z?`${I}-error`:void 0,V=C&&!z?`${I}-hint`:void 0,H=B||V,U=ee(x),W=!y&&!!_,G=W&&(_ instanceof File?c(_):U||c(_)),le=_?.name,K=G?_?.url||oe:se,q=G?`image`:`file`,ue=g?`Change ${g}`:`Change ${q}`,J=g?`Remove ${g}`:`Remove ${q}`,Y=g?`${g} preview`:`Selected ${q} preview`,X=e=>{let t=u(e,{accept:x,maxSizeMb:S});return t?(P(t),!1):(P(``),v(e),!0)},Z=e=>{let t=Array.from(e||[]);if(!t.length)return;let n=Array.isArray(_)?_:_?[_]:[],r=new Set(n.map(i)),a=``,o=[];for(let e of t){let t=u(e,{accept:x,maxSizeMb:S});if(t){a||=t;continue}r.has(i(e))||(r.add(i(e)),o.push(e))}let s=n.concat(o);b&&s.length>b&&(s=s.slice(0,b),a||=`Up to ${b} files.`),P(a),v(s)},de=e=>{if(y){Z(e.target.files);return}let t=e.target.files?.[0]||null;t&&(X(t)||(e.target.value=``))},fe=e=>{if(e.preventDefault(),M(!1),w)return;if(y){Z(e.dataTransfer.files);return}let t=e.dataTransfer.files?.[0];t&&X(t)},pe=e=>{P(``),v(R.filter((t,n)=>n!==e))},me=()=>F.current?.click(),Q=w?m(`span`,{className:`wui-file-busy`,children:m(`span`,{className:`spinner-border spinner-border-sm`,role:`status`,"aria-label":`Loading`})}):null,$=m(`input`,{id:I,name:ne,ref:F,type:`file`,"aria-describedby":H,accept:x,multiple:y||void 0,disabled:w||void 0,className:`visually-hidden`,onClick:e=>{e.currentTarget.value=``},onChange:de,...O});return h(`div`,{className:`field${E?` ${E}`:``}`,children:[h(`label`,{className:`label`,htmlFor:I,children:[g,ie&&m(r,{})]}),W?h(`div`,{className:`file-preview${z?` error`:``}${T?` ${T}`:``}`,style:D,"aria-busy":w||void 0,children:[h(`button`,{type:`button`,className:`file-preview-open`,"aria-label":ue,onClick:me,disabled:w,children:[K?m(`img`,{src:K,alt:Y,className:`file-preview-img`}):h(`span`,{className:`file-preview-file`,children:[m(n,{name:`file-text`,size:28}),m(`span`,{className:`file-preview-file-name`,children:le})]}),m(`span`,{className:`file-preview-overlay`,children:h(`span`,{className:`file-preview-cta`,children:[m(n,{name:G?`image`:`file-text`,size:16}),` `,G?`Change image`:`Change file`]})})]}),t(m(`button`,{type:`button`,className:`file-preview-remove`,"aria-label":J,onClick:()=>v(null),disabled:w,children:m(n,{name:`x`,size:16})}),J),$,Q]}):h(`div`,{className:`file-input file-input-tall${j?` dragging`:``}${z?` error`:``}${y&&R.length>0?` has-files`:``}${T?` ${T}`:``}`,style:D,"aria-busy":w||void 0,onDragOver:e=>{e.preventDefault(),!w&&!j&&M(!0)},onDragLeave:e=>{e.preventDefault(),M(!1)},onDrop:fe,children:[h(`label`,{htmlFor:I,className:`file-input-zone-label`,children:[m(`span`,{className:`file-input-icon`,children:m(n,{name:`upload`,size:24})}),h(`span`,{className:`file-input-title`,children:[m(`span`,{className:`browse`,children:`Click to upload`}),` or drag & drop`]}),m(`span`,{className:`file-input-text`,children:S>0?`${s(x)}, up to ${S} MB`:s(x)})]}),$,Q,y&&R.length>0&&m(`div`,{className:`attach-list`,children:R.map((e,t)=>m(a,{item:e,isImage:e instanceof File?c(e):U||c(e),noun:`file`,onRemove:()=>pe(t)},i(e)))})]}),z?m(`div`,{className:`field-error`,id:B,children:z}):C?m(`div`,{className:`field-hint`,id:V,children:C}):null]})}export{g as default};
1
+ import e from"./warnUnknownProps.js";import t from"./withTooltip.js";import n from"./AppIcon.js";import r from"../lib/FieldMessage.js";import i from"./AppRequiredMark.js";import{keyOf as a}from"../lib/fileItem.js";import o from"../lib/FileItemRow.js";import{DEFAULT_MAX_SIZE_MB as s,acceptLabel as c,isImageFile as l,isImageOnlyAccept as ee,isPdfFile as te,validateFile as u}from"@webority/ui-elements/helpers";import{useEffect as d,useId as ne,useRef as re,useState as f}from"react";import{jsx as p,jsxs as m}from"react/jsx-runtime";function h({label:h,value:g,name:_,id:ie,onPick:v,multiple:y=!1,maxFiles:b,accept:x=`.jpg,.jpeg,.png`,maxSizeMb:S=s,required:ae,error:oe,hint:C,loading:w=!1,className:T=``,fieldClassName:E=``,style:D,...O}){e(`AppFilePicker`,O);let[k,A]=f(null),[se,j]=f(null),[M,N]=f(!1),[P,F]=f(``),I=re(null),ce=ne(),L=ie||ce;d(()=>{if(!y&&g instanceof File&&l(g)){let e=URL.createObjectURL(g);return A(e),()=>URL.revokeObjectURL(e)}A(null)},[g,y]);let R=!y&&g&&!l(g)&&te(g)?g instanceof File?g:g.url:null;d(()=>{if(!R){j(null);return}let e=!0,t=null;return import(`@webority/ui-elements/file-viewer`).then(e=>e.renderPdfFirstPage(typeof R==`string`?{url:R}:R)).then(n=>{e&&(t=URL.createObjectURL(n),j(t))}).catch(e=>console.warn(`[AppFilePicker] the PDF preview failed:`,e?.message)),()=>{e=!1,j(null),t&&URL.revokeObjectURL(t)}},[R]);let z=y?Array.isArray(g)?g:g?[g]:[]:[],B=oe||P,V=B?`${L}-error`:void 0,H=C&&!B?`${L}-hint`:void 0,U=V||H,W=ee(x),G=!y&&!!g,K=G&&(g instanceof File?l(g):W||l(g)),le=g?.name,q=K?g?.url||k:se,J=K?`image`:`file`,ue=h?`Change ${h}`:`Change ${J}`,Y=h?`Remove ${h}`:`Remove ${J}`,de=h?`${h} preview`:`Selected ${J} preview`,X=e=>{let t=u(e,{accept:x,maxSizeMb:S});return t?(F(t),!1):(F(``),v(e),!0)},Z=e=>{let t=Array.from(e||[]);if(!t.length)return;let n=Array.isArray(g)?g:g?[g]:[],r=new Set(n.map(a)),i=``,o=[];for(let e of t){let t=u(e,{accept:x,maxSizeMb:S});if(t){i||=t;continue}r.has(a(e))||(r.add(a(e)),o.push(e))}let s=n.concat(o);b&&s.length>b&&(s=s.slice(0,b),i||=`Up to ${b} files.`),F(i),v(s)},fe=e=>{if(y){Z(e.target.files);return}let t=e.target.files?.[0]||null;t&&(X(t)||(e.target.value=``))},pe=e=>{if(e.preventDefault(),N(!1),w)return;if(y){Z(e.dataTransfer.files);return}let t=e.dataTransfer.files?.[0];t&&X(t)},me=e=>{F(``),v(z.filter((t,n)=>n!==e))},he=()=>I.current?.click(),Q=w?p(`span`,{className:`wui-file-busy`,children:p(`span`,{className:`spinner-border spinner-border-sm`,role:`status`,"aria-label":`Loading`})}):null,$=p(`input`,{id:L,name:_,ref:I,type:`file`,"aria-describedby":U,accept:x,multiple:y||void 0,disabled:w||void 0,className:`visually-hidden`,onClick:e=>{e.currentTarget.value=``},onChange:fe,...O});return m(`div`,{className:`field${E?` ${E}`:``}`,children:[m(`label`,{className:`label`,htmlFor:L,children:[h,ae&&p(i,{})]}),G?m(`div`,{className:`file-preview${B?` error`:``}${T?` ${T}`:``}`,style:D,"aria-busy":w||void 0,children:[m(`button`,{type:`button`,className:`file-preview-open`,"aria-label":ue,onClick:he,disabled:w,children:[q?p(`img`,{src:q,alt:de,className:`file-preview-img`}):m(`span`,{className:`file-preview-file`,children:[p(n,{name:`file-text`,size:28}),p(`span`,{className:`file-preview-file-name`,children:le})]}),p(`span`,{className:`file-preview-overlay`,children:m(`span`,{className:`file-preview-cta`,children:[p(n,{name:K?`image`:`file-text`,size:16}),` `,K?`Change image`:`Change file`]})})]}),t(p(`button`,{type:`button`,className:`file-preview-remove`,"aria-label":Y,onClick:()=>v(null),disabled:w,children:p(n,{name:`x`,size:16})}),Y),$,Q]}):m(`div`,{className:`file-input file-input-tall${M?` dragging`:``}${B?` error`:``}${y&&z.length>0?` has-files`:``}${T?` ${T}`:``}`,style:D,"aria-busy":w||void 0,onDragOver:e=>{e.preventDefault(),!w&&!M&&N(!0)},onDragLeave:e=>{e.preventDefault(),N(!1)},onDrop:pe,children:[m(`label`,{htmlFor:L,className:`file-input-zone-label`,children:[p(`span`,{className:`file-input-icon`,children:p(n,{name:`upload`,size:24})}),m(`span`,{className:`file-input-title`,children:[p(`span`,{className:`browse`,children:`Click to upload`}),` or drag & drop`]}),p(`span`,{className:`file-input-text`,children:S>0?`${c(x)}, up to ${S} MB`:c(x)})]}),$,Q,y&&z.length>0&&p(`div`,{className:`attach-list`,children:z.map((e,t)=>p(o,{item:e,isImage:e instanceof File?l(e):W||l(e),noun:`file`,onRemove:()=>me(t)},a(e)))})]}),p(r,{error:B,hint:C,errorId:V,hintId:H})]})}export{h as default};
@@ -1 +1 @@
1
- import e from"./warnInvalidValue.js";import t from"./warnUnknownProps.js";import n from"./AppIcon.js";import r from"./AppPopover.js";import ee from"./AppInfoTip.js";import i from"./AppRequiredMark.js";import{MASK_INPUT_TYPES as te,MASK_NAMES as ne,attachInputMask as re,evaluatePassword as ie,formatMasked as a,isMaskPattern as ae,postedMasked as oe}from"@webority/ui-elements/helpers";import{forwardRef as o,useEffect as s,useId as se,useRef as ce,useState as c}from"react";import{Form as l}from"react-bootstrap";import{jsx as u,jsxs as d}from"react/jsx-runtime";var le=[`sm`,`md`,`lg`],ue=[`bare`],f=o(function({label:o,required:f=!1,error:de,hint:p,help:m,helpLabel:fe=`More information`,type:h=`text`,size:g=`md`,leftIcon:_,rightIcon:v,onRightIconClick:y,rightIconLabel:pe,unit:b,id:me,name:he,className:ge=``,fieldClassName:_e=``,disabled:ve=!1,clearable:x=!1,showCount:S=!1,maxLength:C,prefix:w,suffix:T,action:ye,floatingLabel:E=!1,variant:D,passwordRequirements:O=!1,requirementsPlacement:k=`auto`,mask:A,postFormatted:j=!1,onMaskChange:M,...N},P){t(`AppInput`,N),e(`AppInput`,`size`,g,le),e(`AppInput`,`variant`,D,ue),A!=null&&!ae(A)&&e(`AppInput`,`mask`,A,ne),A!=null&&e(`AppInput`,`type`,h,te);let[F,be]=c(!1),[xe,Se]=c(``),I=de||xe,Ce=se(),L=me||Ce,R=h===`password`,we=R&&F?`text`:h,z=ce(null),Te=e=>{z.current=e,typeof P==`function`?P(e):P&&(P.current=e)},B=String(N.value??N.defaultValue??``),[Ee,V]=c(()=>!!B),[H,U]=c(()=>B.length),W=x&&!ve,G=x||S,K=R&&!!O,[De,q]=c(B);s(()=>{!K||N.value===void 0||q(String(N.value??``))},[N.value,K]),s(()=>{if(!G||N.value===void 0)return;let e=String(N.value??``);V(!!e),U(e.length)},[N.value,G]);let Oe=e=>{V(!!e.target.value),U(e.target.value.length),N.onInput?.(e)},ke=e=>{K&&q(e.target.value),G?Oe(e):N.onInput?.(e)},Ae=A?{...N.value!==void 0&&{value:a(A,N.value)},...N.defaultValue!==void 0&&{defaultValue:a(A,N.defaultValue)}}:null,J=ce(M);J.current=M,s(()=>{let e=z.current;if(!(!A||!e))return re(e,{mask:A,postFormatted:j,onChange:(e,t)=>J.current?.(e,t),onInvalidChange:Se})},[A,j]);let Y=e=>A&&!j&&e?t=>{let n=t.target,r=new Proxy(n,{get:(e,t)=>{if(t===`value`)return oe(A,e.value);let n=Reflect.get(e,t,e);return typeof n==`function`?n.bind(e):n}});e(Object.create(t,{target:{value:r}}))}:e,je=W?u(`button`,{type:`button`,className:`input-clear`,onClick:()=>{let e=z.current;if(!e)return;let t=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,`value`)?.set;t?t.call(e,``):e.value=``,e.dispatchEvent(new Event(`input`,{bubbles:!0})),V(!1),e.focus()},"aria-label":`Clear`,tabIndex:-1,hidden:!Ee,children:u(n,{name:`x`,size:16})}):null,Me=I&&L?`${L}-error`:void 0,Ne=p&&L?`${L}-hint`:void 0,X=K&&k===`inline`,Pe=X&&L?`${L}-requirements`:void 0,Fe=Me||(X?Pe:Ne),Ie=[`input`,g===`sm`?`input-sm`:``,g===`lg`?`input-lg`:``,I?`error`:``,R?`pw`:``,b?`num-input`:``,!(E&&o||w||T||b||R||v)&&x&&W?`has-clear`:``,D===`bare`?`input-bare`:``,ge].filter(Boolean).join(` `),Z=u(l.Control,{id:L,name:he,type:we,className:Ie,disabled:ve,required:f,"aria-invalid":I?`true`:`false`,"aria-describedby":Fe,maxLength:C,...N,onChange:Y(N.onChange),onBlur:Y(N.onBlur),...Ae,placeholder:E?` `:N.placeholder,ref:Te,onInput:G||K?ke:N.onInput}),Q=O===!0||O,Le=Q&&typeof Q==`object`&&Q.title||`Password requirements`,Re=K?ie(De,Q):null,ze=K?u(`ul`,{className:`pw-criteria`,"aria-live":`polite`,id:Pe,"aria-label":X?Le:void 0,children:Re.map(e=>d(`li`,{className:`pw-rule ${e.met?`met`:`unmet`}`,children:[u(`span`,{className:`pw-mark`,"aria-hidden":`true`}),u(`span`,{className:`pw-rule-text`,children:e.label}),u(`span`,{className:`visually-hidden`,children:e.met?`: met`:`: not met`})]},e.key))}):null,$;if(E&&o)$=d(`div`,{className:`field-float`,children:[Z,d(`label`,{className:`float-label`,htmlFor:L,children:[o,f&&u(i,{})]})]});else if(ye)$=d(`div`,{className:`input-action-row`,children:[d(`div`,{className:_?`input-icon`:`input-wrap`,children:[_&&u(`span`,{className:`ic`,children:u(n,{name:_,size:16})}),Z]}),u(`div`,{className:`input-action`,children:ye})]});else if(w||T)$=d(`div`,{className:`input-affixed`,children:[w!=null&&u(`span`,{className:`affix affix-pre`,children:w}),Z,T!=null&&u(`span`,{className:`affix affix-suf`,children:T})]});else if(b)$=d(`div`,{className:`input-with-unit`,children:[Z,u(`span`,{className:`unit`,children:b})]});else if(R){let e=d(`div`,{className:_?`input-icon`:`input-wrap`,children:[_&&u(`span`,{className:`ic`,children:u(n,{name:_,size:16})}),Z,d(`button`,{type:`button`,className:`pw-toggle${F?` pw-revealed`:``}`,onClick:()=>be(e=>!e),"aria-label":F?`Hide password`:`Show password`,tabIndex:-1,children:[u(n,{name:`eye`,size:18,className:`pw-eye`}),u(n,{name:`eye-off`,size:18,className:`pw-eye-off`})]})]});$=K&&!X?u(r,{trigger:e,triggerType:`focus`,placement:k,title:Le,className:`pw-popover`,children:ze}):e}else $=v?d(`div`,{className:`input-wrap`,children:[Z,u(`button`,{type:`button`,className:`pw-toggle`,onClick:y,disabled:!y,tabIndex:-1,"aria-label":pe||v,children:u(n,{name:v,size:18})})]}):x?d(`div`,{className:_?`input-icon`:`input-wrap`,children:[_&&u(`span`,{className:`ic`,children:u(n,{name:_,size:16})}),Z,je]}):_?d(`div`,{className:`input-icon`,children:[u(`span`,{className:`ic`,children:u(n,{name:_,size:16})}),Z]}):Z;return d(l.Group,{className:`field${_e?` ${_e}`:``}`,children:[o&&!E&&d(l.Label,{className:`label`,htmlFor:L,children:[o,f&&u(i,{}),m&&u(ee,{label:fe,children:m})]}),$,X&&u(`div`,{className:`wui-pw-inline`,children:ze}),I?u(`div`,{className:`field-error`,id:Me,children:I}):p&&!X?u(`div`,{className:`field-hint`,id:Ne,children:p}):null,S&&d(`div`,{className:`field-count${C&&H>=C?` at-limit`:``}`,children:[H,C?` / ${C}`:``]})]})});export{f as default};
1
+ import e from"./warnInvalidValue.js";import t from"./warnUnknownProps.js";import n from"./AppIcon.js";import ee from"../lib/FieldMessage.js";import te from"./AppPopover.js";import ne from"./AppInfoTip.js";import r from"./AppRequiredMark.js";import{MASK_INPUT_TYPES as re,MASK_NAMES as ie,attachInputMask as ae,evaluatePassword as oe,formatMasked as i,isMaskPattern as se,postedMasked as ce}from"@webority/ui-elements/helpers";import{forwardRef as a,useEffect as o,useId as le,useRef as s,useState as c}from"react";import{Form as l}from"react-bootstrap";import{jsx as u,jsxs as d}from"react/jsx-runtime";var ue=[`sm`,`md`,`lg`],de=[`bare`],f=a(function({label:a,required:f=!1,error:fe,hint:p,help:m,helpLabel:pe=`More information`,type:h=`text`,size:g=`md`,leftIcon:_,rightIcon:v,onRightIconClick:y,rightIconLabel:me,unit:b,id:he,name:ge,className:_e=``,fieldClassName:ve=``,disabled:x=!1,clearable:S=!1,showCount:C=!1,maxLength:w,prefix:T,suffix:E,action:D,floatingLabel:O=!1,variant:k,passwordRequirements:A=!1,requirementsPlacement:j=`auto`,mask:M,postFormatted:N=!1,onMaskChange:P,...F},I){t(`AppInput`,F),e(`AppInput`,`size`,g,ue),e(`AppInput`,`variant`,k,de),M!=null&&!se(M)&&e(`AppInput`,`mask`,M,ie),M!=null&&e(`AppInput`,`type`,h,re);let[L,ye]=c(!1),[be,xe]=c(``),R=fe||be,Se=le(),z=he||Se,B=h===`password`,Ce=B&&L?`text`:h,V=s(null),we=e=>{V.current=e,typeof I==`function`?I(e):I&&(I.current=e)},H=String(F.value??F.defaultValue??``),[Te,U]=c(()=>!!H),[W,G]=c(()=>H.length),K=S&&!x,q=S||C,J=B&&!!A,[Ee,De]=c(H);o(()=>{!J||F.value===void 0||De(String(F.value??``))},[F.value,J]),o(()=>{if(!q||F.value===void 0)return;let e=String(F.value??``);U(!!e),G(e.length)},[F.value,q]);let Oe=e=>{U(!!e.target.value),G(e.target.value.length),F.onInput?.(e)},ke=e=>{J&&De(e.target.value),q?Oe(e):F.onInput?.(e)},Ae=M?{...F.value!==void 0&&{value:i(M,F.value)},...F.defaultValue!==void 0&&{defaultValue:i(M,F.defaultValue)}}:null,je=s(P);je.current=P,o(()=>{let e=V.current;if(!(!M||!e))return ae(e,{mask:M,postFormatted:N,onChange:(e,t)=>je.current?.(e,t),onInvalidChange:xe})},[M,N]);let Y=e=>M&&!N&&e?t=>{let n=t.target,ee=new Proxy(n,{get:(e,t)=>{if(t===`value`)return ce(M,e.value);let n=Reflect.get(e,t,e);return typeof n==`function`?n.bind(e):n}});e(Object.create(t,{target:{value:ee}}))}:e,Me=K?u(`button`,{type:`button`,className:`input-clear`,onClick:()=>{let e=V.current;if(!e)return;let t=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,`value`)?.set;t?t.call(e,``):e.value=``,e.dispatchEvent(new Event(`input`,{bubbles:!0})),U(!1),e.focus()},"aria-label":`Clear`,tabIndex:-1,hidden:!Te,children:u(n,{name:`x`,size:16})}):null,Ne=R&&z?`${z}-error`:void 0,Pe=p&&z?`${z}-hint`:void 0,X=J&&j===`inline`,Fe=X&&z?`${z}-requirements`:void 0,Ie=Ne||(X?Fe:Pe),Le=[`input`,g===`sm`?`input-sm`:``,g===`lg`?`input-lg`:``,R?`error`:``,B?`pw`:``,b?`num-input`:``,!(O&&a||T||E||b||B||v)&&S&&K?`has-clear`:``,k===`bare`?`input-bare`:``,_e].filter(Boolean).join(` `),Z=u(l.Control,{id:z,name:ge,type:Ce,className:Le,disabled:x,required:f,"aria-invalid":R?`true`:`false`,"aria-describedby":Ie,maxLength:w,...F,onChange:Y(F.onChange),onBlur:Y(F.onBlur),...Ae,placeholder:O?` `:F.placeholder,ref:we,onInput:q||J?ke:F.onInput}),Q=A===!0||A,Re=Q&&typeof Q==`object`&&Q.title||`Password requirements`,ze=J?oe(Ee,Q):null,Be=J?u(`ul`,{className:`pw-criteria`,"aria-live":`polite`,id:Fe,"aria-label":X?Re:void 0,children:ze.map(e=>d(`li`,{className:`pw-rule ${e.met?`met`:`unmet`}`,children:[u(`span`,{className:`pw-mark`,"aria-hidden":`true`}),u(`span`,{className:`pw-rule-text`,children:e.label}),u(`span`,{className:`visually-hidden`,children:e.met?`: met`:`: not met`})]},e.key))}):null,$;if(O&&a)$=d(`div`,{className:`field-float`,children:[Z,d(`label`,{className:`float-label`,htmlFor:z,children:[a,f&&u(r,{})]})]});else if(D)$=d(`div`,{className:`input-action-row`,children:[d(`div`,{className:_?`input-icon`:`input-wrap`,children:[_&&u(`span`,{className:`ic`,children:u(n,{name:_,size:16})}),Z]}),u(`div`,{className:`input-action`,children:D})]});else if(T||E)$=d(`div`,{className:`input-affixed`,children:[T!=null&&u(`span`,{className:`affix affix-pre`,children:T}),Z,E!=null&&u(`span`,{className:`affix affix-suf`,children:E})]});else if(b)$=d(`div`,{className:`input-with-unit`,children:[Z,u(`span`,{className:`unit`,children:b})]});else if(B){let e=d(`div`,{className:_?`input-icon`:`input-wrap`,children:[_&&u(`span`,{className:`ic`,children:u(n,{name:_,size:16})}),Z,d(`button`,{type:`button`,className:`pw-toggle${L?` pw-revealed`:``}`,onClick:()=>ye(e=>!e),"aria-label":L?`Hide password`:`Show password`,tabIndex:-1,children:[u(n,{name:`eye`,size:18,className:`pw-eye`}),u(n,{name:`eye-off`,size:18,className:`pw-eye-off`})]})]});$=J&&!X?u(te,{trigger:e,triggerType:`focus`,placement:j,title:Re,className:`pw-popover`,children:Be}):e}else $=v?d(`div`,{className:`input-wrap`,children:[Z,u(`button`,{type:`button`,className:`pw-toggle`,onClick:y,disabled:!y,tabIndex:-1,"aria-label":me||v,children:u(n,{name:v,size:18})})]}):S?d(`div`,{className:_?`input-icon`:`input-wrap`,children:[_&&u(`span`,{className:`ic`,children:u(n,{name:_,size:16})}),Z,Me]}):_?d(`div`,{className:`input-icon`,children:[u(`span`,{className:`ic`,children:u(n,{name:_,size:16})}),Z]}):Z;return d(l.Group,{className:`field${ve?` ${ve}`:``}`,children:[a&&!O&&d(l.Label,{className:`label`,htmlFor:z,children:[a,f&&u(r,{}),m&&u(ne,{label:pe,children:m})]}),$,X&&u(`div`,{className:`wui-pw-inline`,children:Be}),u(ee,{error:R,hint:X?null:p,errorId:Ne,hintId:Pe}),C&&d(`div`,{className:`field-count${w&&W>=w?` at-limit`:``}`,children:[W,w?` / ${w}`:``]})]})});export{f as default};
@@ -1 +1 @@
1
- import e from"./warnInvalidValue.js";import t from"./warnUnknownProps.js";import n from"./withTooltip.js";import r from"./AppIcon.js";import i from"./AppAlert.js";import a from"./AppButton.js";import ee from"./AppRequiredMark.js";import te from"./AppModal.js";import{DEFAULT_MAX_SIZE_MB as ne,validateFile as o}from"@webority/ui-elements/helpers";import{useCallback as re,useEffect as s,useId as ie,useRef as c,useState as l}from"react";import{Fragment as ae,jsx as u,jsxs as d}from"react/jsx-runtime";import"@webority/ui-elements/elements/image-crop";var oe=[`stacked`,`inline`,`profile`],se=[`initials`,`avatar`],ce=[`circle`,`rounded`,`square`],f={sm:72,md:120,lg:160},le=`That image could not be cropped. Choose another one.`,ue=`That image could not be opened. Choose another one.`;function p({value:p,fallback:de,name:fe,onPick:pe,onRemove:m,loading:h=!1,disabled:g=!1,accept:_=`image/png,image/jpeg,image/webp`,maxSizeMb:v=ne,crop:y,overlayIcon:me=`image`,overlayLabel:b=`Update photo`,ariaLabel:he=`Upload photo`,removeLabel:x=`Remove photo`,label:ge,hint:S,error:_e,layout:C=`stacked`,title:ve,subtitle:w,required:ye=!1,variant:T=`initials`,size:E=`md`,shape:D=`circle`,className:O=``,...k}){t(`AppLogoPicker`,k),e(`AppLogoPicker`,`layout`,C,oe),e(`AppLogoPicker`,`variant`,T,se),e(`AppLogoPicker`,`shape`,D,ce),e(`AppLogoPicker`,`size`,typeof E==`string`?E:null,Object.keys(f));let A=y===`free`?null:typeof y==`number`&&Number.isFinite(y)&&y>0?y:void 0;y!=null&&A===void 0&&e(`AppLogoPicker`,`crop`,String(y),[`free`,`a positive number`]);let j=c(null),M=c(null),N=ie(),[P,F]=l(null),[be,I]=l(``),[xe,L]=l(!1),[R,z]=l(!1),[B,V]=l(null),[H,U]=l(!1),[W,G]=l(`loading`),[K,q]=l(``),Se=re(e=>{if(M.current=e,!e)return;let t=()=>G(`ready`),n=()=>G(`error`);return e.addEventListener(`load`,t),e.addEventListener(`error`,n),()=>{e.removeEventListener(`load`,t),e.removeEventListener(`error`,n),M.current=null}},[]);s(()=>()=>B&&URL.revokeObjectURL(B.url),[B]),s(()=>()=>P&&URL.revokeObjectURL(P),[P]),s(()=>{F(null),L(!1)},[p]);let J=h||g,Y=P||(p&&!xe?p:null),X=_e||be,Ce=S&&!X?`${N}-hint`:void 0,we=X?`${N}-error`:void 0,Te=!J&&(!!P||!!Y&&!!m),Ee=()=>{J||j.current?.click()},De=e=>{I(``),L(!1),F(URL.createObjectURL(e)),pe(e)},Oe=e=>{let t=A!==void 0&&e.type!==`image/svg+xml`,n=o(e,{accept:_,maxSizeMb:t?0:v});if(n){I(n);return}if(t){I(``),G(`loading`),q(``),V({file:e,url:URL.createObjectURL(e)});return}De(e)},ke=async()=>{let{file:e}=B;U(!0),q(``);let t=null;try{t=await M.current?.toFile({name:e.name,type:e.type,maxBytes:v>0?v*1024*1024:0})}catch{t=null}if(U(!1),!t){q(le);return}V(null);let n=o(t,{accept:_,maxSizeMb:v});n?I(n):De(t)},Ae=()=>{H||V(null)},je=e=>{let t=e.target.files?.[0];e.target.value=``,t&&Oe(t)},Me=e=>{if(e.preventDefault(),z(!1),J)return;let t=e.dataTransfer.files?.[0];t&&Oe(t)},Ne=()=>{F(null),I(``),L(!1),j.current&&(j.current.value=``),m?.()},Z=typeof E==`number`?E:f[E]??f.md,Pe=Math.max(14,Math.round(Z*.18)),Fe=Math.round(Z*.5),Ie=[`set-uploader`,T===`avatar`?`set-uploader--avatar`:``,D===`rounded`?`set-uploader--rounded`:D===`square`?`set-uploader--square`:``,R&&`is-dragging`].filter(Boolean).join(` `),Le=C===`inline`,Re=C===`profile`,Q=d(`div`,{className:`set-uploader-shell`,style:{"--wui-logo-size":`${Z}px`},children:[u(`button`,{type:`button`,className:Ie,onClick:Ee,disabled:J,"aria-busy":h||void 0,"aria-label":he,"aria-describedby":we||Ce,onDragOver:e=>{e.preventDefault(),!J&&!R&&z(!0)},onDragLeave:e=>{e.preventDefault(),z(!1)},onDrop:Me,...k,children:d(`span`,{className:`set-uploader-ring`,"data-overlay-label":b,children:[Y?u(`img`,{className:`set-uploader-img`,src:Y,alt:``,onError:()=>L(!0)}):u(`span`,{className:`set-uploader-logo`,children:de||T===`avatar`&&u(r,{name:`user`,size:Fe})}),h?u(`span`,{className:`set-uploader-overlay is-loading`,"aria-hidden":`true`,children:u(r,{name:`refresh-cw`,size:Pe,className:`wui-spin`})}):!g&&d(`span`,{className:`set-uploader-overlay`,children:[u(r,{name:me,size:Pe}),u(`span`,{children:b})]})]})}),n(u(`button`,{type:`button`,className:`set-uploader-remove`,hidden:!Te,"aria-label":x,onClick:Ne,children:u(r,{name:`x`,size:14})}),Te?x:null),u(`input`,{id:N,ref:j,type:`file`,name:fe,hidden:!0,accept:_,onChange:je,disabled:J}),A!==void 0&&d(te,{open:!!B,title:`Crop photo`,subtitle:`Drag the frame and zoom to choose what to keep.`,size:`lg`,staticBackdrop:!0,dismissible:!H,onClose:Ae,footer:d(ae,{children:[u(a,{type:`button`,variant:`secondary`,disabled:H,onClick:Ae,children:`Cancel`}),u(a,{type:`button`,variant:`primary`,loading:H,disabled:W!==`ready`,onClick:ke,children:`Apply`})]}),children:[W===`error`&&u(i,{variant:`danger`,children:ue}),K&&u(i,{variant:`danger`,children:K}),B&&W!==`error`&&u(`wui-image-crop`,{ref:Se,src:B.url,aspect:A??`free`,round:A===1&&D===`circle`})]})]}),ze=S&&!X?u(`div`,{className:`set-uploader-hint`,id:Ce,children:S}):null,Be=X?u(`div`,{className:`field-error`,id:we,children:X}):null,$=ge&&d(`label`,{className:`label`,htmlFor:N,children:[ge,ye&&u(ee,{})]}),Ve=d(`div`,{className:`set-uploader-meta`,children:[ve&&u(`div`,{className:`set-uploader-title`,children:ve}),w&&u(`div`,{className:`set-uploader-subtitle`,children:w}),ze,Be]});return Le?d(`div`,{className:`field set-uploader-field set-uploader-field--inline${O?` ${O}`:``}`,children:[$,d(`div`,{className:`set-uploader-row`,children:[Q,Ve]})]}):Re?d(`div`,{className:`field set-uploader-field set-uploader-field--profile${O?` ${O}`:``}`,children:[$,Q,Ve]}):d(`div`,{className:`field set-uploader-field${O?` ${O}`:``}`,children:[$,Q,ze,Be]})}export{p as default};
1
+ import e from"./warnInvalidValue.js";import t from"./warnUnknownProps.js";import n from"./withTooltip.js";import r from"./AppIcon.js";import i from"./AppAlert.js";import a from"./AppButton.js";import ee from"../lib/FieldMessage.js";import te from"./AppRequiredMark.js";import ne from"./AppModal.js";import{DEFAULT_MAX_SIZE_MB as re,validateFile as o}from"@webority/ui-elements/helpers";import{useCallback as ie,useEffect as s,useId as ae,useRef as c,useState as l}from"react";import{Fragment as oe,jsx as u,jsxs as d}from"react/jsx-runtime";import"@webority/ui-elements/elements/image-crop";var se=[`stacked`,`inline`,`profile`],ce=[`initials`,`avatar`],le=[`circle`,`rounded`,`square`],f={sm:72,md:120,lg:160},ue=`That image could not be cropped. Choose another one.`,de=`That image could not be opened. Choose another one.`;function p({value:p,fallback:fe,name:pe,onPick:me,onRemove:m,loading:h=!1,disabled:g=!1,accept:_=`image/png,image/jpeg,image/webp`,maxSizeMb:v=re,crop:y,overlayIcon:he=`image`,overlayLabel:b=`Update photo`,ariaLabel:ge=`Upload photo`,removeLabel:_e=`Remove photo`,label:ve,hint:x,error:ye,layout:S=`stacked`,title:C,subtitle:w,required:be=!1,variant:T=`initials`,size:E=`md`,shape:D=`circle`,className:O=``,...k}){t(`AppLogoPicker`,k),e(`AppLogoPicker`,`layout`,S,se),e(`AppLogoPicker`,`variant`,T,ce),e(`AppLogoPicker`,`shape`,D,le),e(`AppLogoPicker`,`size`,typeof E==`string`?E:null,Object.keys(f));let A=y===`free`?null:typeof y==`number`&&Number.isFinite(y)&&y>0?y:void 0;y!=null&&A===void 0&&e(`AppLogoPicker`,`crop`,String(y),[`free`,`a positive number`]);let j=c(null),M=c(null),N=ae(),[P,F]=l(null),[xe,I]=l(``),[Se,L]=l(!1),[R,z]=l(!1),[B,V]=l(null),[H,U]=l(!1),[W,G]=l(`loading`),[K,q]=l(``),Ce=ie(e=>{if(M.current=e,!e)return;let t=()=>G(`ready`),n=()=>G(`error`);return e.addEventListener(`load`,t),e.addEventListener(`error`,n),()=>{e.removeEventListener(`load`,t),e.removeEventListener(`error`,n),M.current=null}},[]);s(()=>()=>B&&URL.revokeObjectURL(B.url),[B]),s(()=>()=>P&&URL.revokeObjectURL(P),[P]),s(()=>{F(null),L(!1)},[p]);let J=h||g,Y=P||(p&&!Se?p:null),X=ye||xe,we=x&&!X?`${N}-hint`:void 0,Te=X?`${N}-error`:void 0,Ee=!J&&(!!P||!!Y&&!!m),De=()=>{J||j.current?.click()},Oe=e=>{I(``),L(!1),F(URL.createObjectURL(e)),me(e)},ke=e=>{let t=A!==void 0&&e.type!==`image/svg+xml`,n=o(e,{accept:_,maxSizeMb:t?0:v});if(n){I(n);return}if(t){I(``),G(`loading`),q(``),V({file:e,url:URL.createObjectURL(e)});return}Oe(e)},Ae=async()=>{let{file:e}=B;U(!0),q(``);let t=null;try{t=await M.current?.toFile({name:e.name,type:e.type,maxBytes:v>0?v*1024*1024:0})}catch{t=null}if(U(!1),!t){q(ue);return}V(null);let n=o(t,{accept:_,maxSizeMb:v});n?I(n):Oe(t)},je=()=>{H||V(null)},Me=e=>{let t=e.target.files?.[0];e.target.value=``,t&&ke(t)},Ne=e=>{if(e.preventDefault(),z(!1),J)return;let t=e.dataTransfer.files?.[0];t&&ke(t)},Pe=()=>{F(null),I(``),L(!1),j.current&&(j.current.value=``),m?.()},Z=typeof E==`number`?E:f[E]??f.md,Fe=Math.max(14,Math.round(Z*.18)),Ie=Math.round(Z*.5),Le=[`set-uploader`,T===`avatar`?`set-uploader--avatar`:``,D===`rounded`?`set-uploader--rounded`:D===`square`?`set-uploader--square`:``,R&&`is-dragging`].filter(Boolean).join(` `),Re=S===`inline`,ze=S===`profile`,Q=d(`div`,{className:`set-uploader-shell`,style:{"--wui-logo-size":`${Z}px`},children:[u(`button`,{type:`button`,className:Le,onClick:De,disabled:J,"aria-busy":h||void 0,"aria-label":ge,"aria-describedby":Te||we,onDragOver:e=>{e.preventDefault(),!J&&!R&&z(!0)},onDragLeave:e=>{e.preventDefault(),z(!1)},onDrop:Ne,...k,children:d(`span`,{className:`set-uploader-ring`,"data-overlay-label":b,children:[Y?u(`img`,{className:`set-uploader-img`,src:Y,alt:``,onError:()=>L(!0)}):u(`span`,{className:`set-uploader-logo`,children:fe||T===`avatar`&&u(r,{name:`user`,size:Ie})}),h?u(`span`,{className:`set-uploader-overlay is-loading`,"aria-hidden":`true`,children:u(r,{name:`refresh-cw`,size:Fe,className:`wui-spin`})}):!g&&d(`span`,{className:`set-uploader-overlay`,children:[u(r,{name:he,size:Fe}),u(`span`,{children:b})]})]})}),n(u(`button`,{type:`button`,className:`set-uploader-remove`,hidden:!Ee,"aria-label":_e,onClick:Pe,children:u(r,{name:`x`,size:14})}),Ee?_e:null),u(`input`,{id:N,ref:j,type:`file`,name:pe,hidden:!0,accept:_,onChange:Me,disabled:J}),A!==void 0&&d(ne,{open:!!B,title:`Crop photo`,subtitle:`Drag the frame and zoom to choose what to keep.`,size:`lg`,staticBackdrop:!0,dismissible:!H,onClose:je,footer:d(oe,{children:[u(a,{type:`button`,variant:`secondary`,disabled:H,onClick:je,children:`Cancel`}),u(a,{type:`button`,variant:`primary`,loading:H,disabled:W!==`ready`,onClick:Ae,children:`Apply`})]}),children:[W===`error`&&u(i,{variant:`danger`,children:de}),K&&u(i,{variant:`danger`,children:K}),B&&W!==`error`&&u(`wui-image-crop`,{ref:Ce,src:B.url,aspect:A??`free`,round:A===1&&D===`circle`})]})]}),Be=x&&!X?u(`div`,{className:`set-uploader-hint`,id:we,children:x}):null,Ve=X?u(ee,{error:X,errorId:Te}):null,$=ve&&d(`label`,{className:`label`,htmlFor:N,children:[ve,be&&u(te,{})]}),He=d(`div`,{className:`set-uploader-meta`,children:[C&&u(`div`,{className:`set-uploader-title`,children:C}),w&&u(`div`,{className:`set-uploader-subtitle`,children:w}),Be,Ve]});return Re?d(`div`,{className:`field set-uploader-field set-uploader-field--inline${O?` ${O}`:``}`,children:[$,d(`div`,{className:`set-uploader-row`,children:[Q,He]})]}):ze?d(`div`,{className:`field set-uploader-field set-uploader-field--profile${O?` ${O}`:``}`,children:[$,Q,He]}):d(`div`,{className:`field set-uploader-field${O?` ${O}`:``}`,children:[$,Q,Be,Ve]})}export{p as default};
@@ -1 +1 @@
1
- import e from"./warnUnknownProps.js";import t from"./AppInfoTip.js";import n from"./AppRequiredMark.js";import r from"./useWuiControl.js";import{forwardRef as i,useEffect as a,useId as o}from"react";import{jsx as s,jsxs as c}from"react/jsx-runtime";import"@webority/ui-elements/elements/mention-input";var l=i(function({value:i,onChange:l,people:u,loadPeople:d,minChars:f,debounce:p,onSubmit:m,rows:h=3,placeholder:g,disabled:_=!1,name:v,id:y,label:b,error:x,hint:S,required:C=!1,help:w,helpLabel:T=`More information`,className:E=``,fieldClassName:D=``,...O},k){e(`AppMentionInput`,O);let A=typeof d==`function`,j=o(),M=y||`mention-${j.replace(/[^a-zA-Z0-9_-]/g,``)}`,N=x?`${M}-error`:S?`${M}-hint`:void 0,{setRef:P,innerRef:F}=r({ref:k,value:i??``,on:{change:e=>{e.target===e.currentTarget&&l?.(e.currentTarget.value,{mentions:e.currentTarget.mentions})},"wui:mention-input:submit":()=>m?.()}});return a(()=>{let e=F.current;!e||A||(e.people=u||[])},[u,A,F]),a(()=>{let e=F.current;if(!e||!A)return;let t=0,n=null,r=async r=>{let i=++t;n?.abort(),n=typeof AbortController==`function`?new AbortController:null,e.loading=!0;try{let a=await d(r.detail.query,{signal:n?.signal});i===t&&(e.people=a||[])}catch{i===t&&(e.people=[])}finally{i===t&&(e.loading=!1)}};return e.addEventListener(`search`,r),()=>{t=-1,n?.abort(),e.removeEventListener(`search`,r),e.loading=!1}},[A,d,F]),c(`div`,{className:`field${D?` ${D}`:``}`,children:[b&&c(`label`,{className:`label`,htmlFor:`${M}-text`,children:[b,C&&s(n,{}),w&&s(t,{label:T,children:w})]}),s(`wui-mention-input`,{ref:P,id:M,class:E?`wui-mention-input ${E}`:`wui-mention-input`,label:typeof b==`string`?b:void 0,placeholder:g||void 0,rows:String(h),name:v||void 0,remote:A?``:void 0,"min-chars":f==null?void 0:String(f),debounce:p==null?void 0:String(p),disabled:_?``:void 0,"aria-describedby":N,"aria-invalid":x?`true`:void 0,...O}),x?s(`div`,{className:`field-error`,id:`${M}-error`,children:x}):S?s(`div`,{className:`field-hint`,id:`${M}-hint`,children:S}):null]})});export{l as default};
1
+ import e from"./warnUnknownProps.js";import t from"../lib/FieldMessage.js";import n from"./AppInfoTip.js";import r from"./AppRequiredMark.js";import i from"./useWuiControl.js";import{forwardRef as a,useEffect as o,useId as s}from"react";import{jsx as c,jsxs as l}from"react/jsx-runtime";import"@webority/ui-elements/elements/mention-input";var u=a(function({value:a,onChange:u,people:d,loadPeople:f,minChars:p,debounce:m,onSubmit:h,rows:g=3,placeholder:_,disabled:v=!1,name:y,id:b,label:x,error:S,hint:C,required:w=!1,help:T,helpLabel:E=`More information`,className:D=``,fieldClassName:O=``,...k},A){e(`AppMentionInput`,k);let j=typeof f==`function`,M=s(),N=b||`mention-${M.replace(/[^a-zA-Z0-9_-]/g,``)}`,P=S?`${N}-error`:C?`${N}-hint`:void 0,{setRef:F,innerRef:I}=i({ref:A,value:a??``,on:{change:e=>{e.target===e.currentTarget&&u?.(e.currentTarget.value,{mentions:e.currentTarget.mentions})},"wui:mention-input:submit":()=>h?.()}});return o(()=>{let e=I.current;!e||j||(e.people=d||[])},[d,j,I]),o(()=>{let e=I.current;if(!e||!j)return;let t=0,n=null,r=async r=>{let i=++t;n?.abort(),n=typeof AbortController==`function`?new AbortController:null,e.loading=!0;try{let a=await f(r.detail.query,{signal:n?.signal});i===t&&(e.people=a||[])}catch{i===t&&(e.people=[])}finally{i===t&&(e.loading=!1)}};return e.addEventListener(`search`,r),()=>{t=-1,n?.abort(),e.removeEventListener(`search`,r),e.loading=!1}},[j,f,I]),l(`div`,{className:`field${O?` ${O}`:``}`,children:[x&&l(`label`,{className:`label`,htmlFor:`${N}-text`,children:[x,w&&c(r,{}),T&&c(n,{label:E,children:T})]}),c(`wui-mention-input`,{ref:F,id:N,class:D?`wui-mention-input ${D}`:`wui-mention-input`,label:typeof x==`string`?x:void 0,placeholder:_||void 0,rows:String(g),name:y||void 0,remote:j?``:void 0,"min-chars":p==null?void 0:String(p),debounce:m==null?void 0:String(m),disabled:v?``:void 0,"aria-describedby":P,"aria-invalid":S?`true`:void 0,...k}),c(t,{error:S,hint:C,errorId:`${N}-error`,hintId:`${N}-hint`})]})});export{u as default};
@@ -1 +1 @@
1
- import e from"./warnInvalidValue.js";import t from"./warnUnknownProps.js";import n from"./AppInfoTip.js";import r from"./AppRequiredMark.js";import i from"./useNodeLabels.js";import a,{optionsEqual as o,readValues as s,writeValues as c}from"./useWuiControl.js";import{forwardRef as l,useEffect as u,useId as d}from"react";import{jsx as f,jsxs as p}from"react/jsx-runtime";import"@webority/ui-elements/elements/multiselect";var m=[`sm`,`lg`],h=[],g=(e,t)=>({...e,label:t}),_=l(function({values:l,onChange:_,options:v,placeholder:y=`Select…`,searchPlaceholder:b=`Search…`,searchable:x=!0,disabled:S=!1,icon:C,size:w,collapseChips:T=!1,allowCustom:E=!1,validateCustom:D,customPattern:O,customInvalidMessage:k,name:A,id:j,label:M,error:N,hint:P,required:F=!1,help:I,helpLabel:L=`More information`,fieldClassName:R=``,...z},B){t(`AppMultiSelect`,z),e(`AppMultiSelect`,`size`,w,m);let V=d(),H=j||V,{setRef:U,innerRef:W}=a({ref:B,value:l,onChange:_,readValue:s,writeValue:c}),G=v||h,{portal:K,toElementOptions:q}=i(G);return u(()=>{let e=W.current;if(!e)return;let t=q(G,g);o(t,e.options)||(e.options=t)},[G,W,q]),u(()=>{let e=W.current;e&&(e.validateCustom=D??null)},[D,W]),p(`div`,{className:`field${R?` ${R}`:``}`,children:[M&&p(`label`,{className:`label`,htmlFor:H,children:[M,F&&f(r,{}),I&&f(n,{label:L,children:I})]}),f(`wui-multiselect`,{"aria-label":typeof M==`string`?M:void 0,"aria-describedby":N?`${H}-error`:P?`${H}-hint`:void 0,"aria-invalid":N?`true`:void 0,id:H,ref:U,name:A,placeholder:y,"search-placeholder":b,icon:C||void 0,size:w||void 0,"collapse-chips":T?``:void 0,"allow-custom":E?``:void 0,"custom-pattern":O||void 0,"custom-invalid-message":k||void 0,searchable:x?``:void 0,disabled:S?``:void 0,required:F?``:void 0,...z}),K,N?f(`div`,{className:`field-error`,id:`${H}-error`,children:N}):P?f(`div`,{className:`field-hint`,id:`${H}-hint`,children:P}):null]})});export{_ as default};
1
+ import e from"./warnInvalidValue.js";import t from"./warnUnknownProps.js";import n from"../lib/FieldMessage.js";import r from"./AppInfoTip.js";import i from"./AppRequiredMark.js";import a from"./useNodeLabels.js";import o,{optionsEqual as s,readValues as c,writeValues as l}from"./useWuiControl.js";import{forwardRef as u,useEffect as d,useId as f}from"react";import{jsx as p,jsxs as m}from"react/jsx-runtime";import"@webority/ui-elements/elements/multiselect";var h=[`sm`,`lg`],g=[],_=(e,t)=>({...e,label:t}),v=u(function({values:u,onChange:v,options:y,placeholder:b=`Select…`,searchPlaceholder:x=`Search…`,searchable:S=!0,disabled:C=!1,icon:w,size:T,collapseChips:E=!1,allowCustom:D=!1,validateCustom:O,customPattern:k,customInvalidMessage:A,name:j,id:M,label:N,error:P,hint:F,required:I=!1,help:L,helpLabel:R=`More information`,fieldClassName:z=``,...B},V){t(`AppMultiSelect`,B),e(`AppMultiSelect`,`size`,T,h);let H=f(),U=M||H,{setRef:W,innerRef:G}=o({ref:V,value:u,onChange:v,readValue:c,writeValue:l}),K=y||g,{portal:q,toElementOptions:J}=a(K);return d(()=>{let e=G.current;if(!e)return;let t=J(K,_);s(t,e.options)||(e.options=t)},[K,G,J]),d(()=>{let e=G.current;e&&(e.validateCustom=O??null)},[O,G]),m(`div`,{className:`field${z?` ${z}`:``}`,children:[N&&m(`label`,{className:`label`,htmlFor:U,children:[N,I&&p(i,{}),L&&p(r,{label:R,children:L})]}),p(`wui-multiselect`,{"aria-label":typeof N==`string`?N:void 0,"aria-describedby":P?`${U}-error`:F?`${U}-hint`:void 0,"aria-invalid":P?`true`:void 0,id:U,ref:W,name:j,placeholder:b,"search-placeholder":x,icon:w||void 0,size:T||void 0,"collapse-chips":E?``:void 0,"allow-custom":D?``:void 0,"custom-pattern":k||void 0,"custom-invalid-message":A||void 0,searchable:S?``:void 0,disabled:C?``:void 0,required:I?``:void 0,...B}),q,p(n,{error:P,hint:F,errorId:`${U}-error`,hintId:`${U}-hint`})]})});export{v as default};
@@ -1 +1 @@
1
- import e from"./warnInvalidValue.js";import t from"./warnUnknownProps.js";import n from"./AppIcon.js";import r from"./AppInfoTip.js";import i from"./AppRequiredMark.js";import{forwardRef as a,useEffect as o,useId as s,useState as c}from"react";import{Form as l}from"react-bootstrap";import{jsx as u,jsxs as d}from"react/jsx-runtime";var f=[`sm`,`md`,`lg`],p=a(function({label:a,required:p=!1,error:m,hint:h,help:g,helpLabel:_=`More information`,value:v,onChange:y,min:b,max:x,step:S=1,precision:C=0,unit:w,size:T=`md`,id:E,name:D,className:O=``,fieldClassName:k=``,disabled:A=!1,...j},M){t(`AppNumberInput`,j),e(`AppNumberInput`,`size`,T,f);let N=s(),P=E||N,F=e=>{if(C===0)return Math.round(e);let t=10**C;return Math.round(e*t)/t},I=e=>{let t=e;return typeof b==`number`&&(t=Math.max(t,b)),typeof x==`number`&&(t=Math.min(t,x)),t},L=e=>{if(e===``||e===null)return null;let t=parseFloat(e);return Number.isNaN(t)?null:t},[R,z]=c(v??``);o(()=>{z(v??``)},[v]);let B=e=>{let t=(L(R)??I(0))+e*S,n=I(F(t));z(String(n)),y?.(n)},V=L(R),H=A||V!==null&&typeof b==`number`&&V<=b,U=A||V!==null&&typeof x==`number`&&V>=x,W=m&&P?`${P}-error`:void 0,G=h&&P?`${P}-hint`:void 0,K=W||G,q=[`input`,T===`sm`?`input-sm`:``,T===`lg`?`input-lg`:``,m?`error`:``,`num-input`,O].filter(Boolean).join(` `),J=RegExp(`^${typeof b==`number`&&b>=0?``:`-?`}\\d*${C>0?`(\\.\\d*)?`:``}$`),Y=e=>{let t=e.target.value;if(!J.test(t))return;z(t);let n=L(t);n!==null&&y?.(n)},X=e=>{let t=L(e.target.value);if(t===null)z(``),y?.(``);else{let e=I(F(t));z(String(e)),y?.(e)}j.onBlur?.(e)},Z=e=>{e.key===`ArrowUp`?(e.preventDefault(),B(1)):e.key===`ArrowDown`&&(e.preventDefault(),B(-1)),j.onKeyDown?.(e)},Q=u(l.Control,{...j,id:P,name:D,type:`text`,inputMode:C>0?`decimal`:`numeric`,className:q,disabled:A,required:p,"aria-invalid":m?`true`:`false`,"aria-describedby":K,value:R,ref:M,onChange:Y,onBlur:X,onKeyDown:Z}),$=d(`div`,{className:[`num-wrap`,T===`sm`?`num-wrap-sm`:``,T===`lg`?`num-wrap-lg`:``].filter(Boolean).join(` `),children:[u(`button`,{type:`button`,className:`num-btn`,"aria-label":`Decrease`,tabIndex:-1,disabled:H,onClick:()=>B(-1),children:u(n,{name:`minus`,size:16})}),Q,w&&u(`span`,{className:`affix`,children:w}),u(`button`,{type:`button`,className:`num-btn`,"aria-label":`Increase`,tabIndex:-1,disabled:U,onClick:()=>B(1),children:u(n,{name:`plus`,size:16})})]});return d(l.Group,{className:`field${k?` ${k}`:``}`,children:[a&&d(l.Label,{className:`label`,htmlFor:P,children:[a,p&&u(i,{}),g&&u(r,{label:_,children:g})]}),$,m?u(`div`,{className:`field-error`,id:W,children:m}):h?u(`div`,{className:`field-hint`,id:G,children:h}):null]})});export{p as default};
1
+ import e from"./warnInvalidValue.js";import t from"./warnUnknownProps.js";import n from"./AppIcon.js";import r from"../lib/FieldMessage.js";import i from"./AppInfoTip.js";import a from"./AppRequiredMark.js";import{forwardRef as o,useEffect as s,useId as c,useState as l}from"react";import{Form as u}from"react-bootstrap";import{jsx as d,jsxs as f}from"react/jsx-runtime";var p=[`sm`,`md`,`lg`],m=o(function({label:o,required:m=!1,error:h,hint:g,help:_,helpLabel:v=`More information`,value:y,onChange:b,min:x,max:S,step:C=1,precision:w=0,unit:T,size:E=`md`,id:D,name:O,className:k=``,fieldClassName:A=``,disabled:j=!1,...M},N){t(`AppNumberInput`,M),e(`AppNumberInput`,`size`,E,p);let P=c(),F=D||P,I=e=>{if(w===0)return Math.round(e);let t=10**w;return Math.round(e*t)/t},L=e=>{let t=e;return typeof x==`number`&&(t=Math.max(t,x)),typeof S==`number`&&(t=Math.min(t,S)),t},R=e=>{if(e===``||e===null)return null;let t=parseFloat(e);return Number.isNaN(t)?null:t},[z,B]=l(y??``);s(()=>{B(y??``)},[y]);let V=e=>{let t=(R(z)??L(0))+e*C,n=L(I(t));B(String(n)),b?.(n)},H=R(z),U=j||H!==null&&typeof x==`number`&&H<=x,W=j||H!==null&&typeof S==`number`&&H>=S,G=h&&F?`${F}-error`:void 0,K=g&&F?`${F}-hint`:void 0,q=G||K,J=[`input`,E===`sm`?`input-sm`:``,E===`lg`?`input-lg`:``,h?`error`:``,`num-input`,k].filter(Boolean).join(` `),Y=RegExp(`^${typeof x==`number`&&x>=0?``:`-?`}\\d*${w>0?`(\\.\\d*)?`:``}$`),X=e=>{let t=e.target.value;if(!Y.test(t))return;B(t);let n=R(t);n!==null&&b?.(n)},Z=e=>{let t=R(e.target.value);if(t===null)B(``),b?.(``);else{let e=L(I(t));B(String(e)),b?.(e)}M.onBlur?.(e)},Q=e=>{e.key===`ArrowUp`?(e.preventDefault(),V(1)):e.key===`ArrowDown`&&(e.preventDefault(),V(-1)),M.onKeyDown?.(e)},$=d(u.Control,{...M,id:F,name:O,type:`text`,inputMode:w>0?`decimal`:`numeric`,className:J,disabled:j,required:m,"aria-invalid":h?`true`:`false`,"aria-describedby":q,value:z,ref:N,onChange:X,onBlur:Z,onKeyDown:Q}),ee=f(`div`,{className:[`num-wrap`,E===`sm`?`num-wrap-sm`:``,E===`lg`?`num-wrap-lg`:``].filter(Boolean).join(` `),children:[d(`button`,{type:`button`,className:`num-btn`,"aria-label":`Decrease`,tabIndex:-1,disabled:U,onClick:()=>V(-1),children:d(n,{name:`minus`,size:16})}),$,T&&d(`span`,{className:`affix`,children:T}),d(`button`,{type:`button`,className:`num-btn`,"aria-label":`Increase`,tabIndex:-1,disabled:W,onClick:()=>V(1),children:d(n,{name:`plus`,size:16})})]});return f(u.Group,{className:`field${A?` ${A}`:``}`,children:[o&&f(u.Label,{className:`label`,htmlFor:F,children:[o,m&&d(a,{}),_&&d(i,{label:v,children:_})]}),ee,d(r,{error:h,hint:g,errorId:G,hintId:K})]})});export{m as default};
@@ -1 +1 @@
1
- import e from"./warnInvalidValue.js";import t from"./warnUnknownProps.js";import n from"./AppRequiredMark.js";import r from"./useWuiControl.js";import{forwardRef as i,useId as a}from"react";import{jsx as o,jsxs as s}from"react/jsx-runtime";import"@webority/ui-elements/elements/otp";var c=[`numeric`,`alphanumeric`],l=i(function({value:i,onChange:l,onComplete:u,length:d=6,mode:f=`numeric`,label:p,required:m=!1,hint:h,error:g,disabled:_=!1,name:v,id:y,className:b=``,fieldClassName:x=``,...S},C){t(`AppOtpInput`,S),e(`AppOtpInput`,`mode`,f,c);let w=a(),T=y||w,E=g?`${T}-error`:void 0,D=h?`${T}-hint`:void 0,O=E||D,{setRef:k}=r({ref:C,value:i??``,onChange:l,on:{complete:e=>u?.(e.detail)}}),A=o(`wui-otp`,{"aria-label":typeof p==`string`?p:void 0,ref:k,id:T,name:v,length:String(d),mode:f,"aria-describedby":O,"aria-invalid":g?`true`:void 0,disabled:_?``:void 0,required:m?``:void 0,className:b||void 0,...S});return!p&&!g&&!h?A:s(`div`,{className:`field${x?` ${x}`:``}`,children:[p&&s(`label`,{className:`label`,htmlFor:T,children:[p,m&&o(n,{})]}),A,g&&o(`div`,{className:`field-error`,id:E,children:g}),!g&&h&&o(`div`,{className:`field-hint`,id:D,children:h})]})});export{l as default};
1
+ import e from"./warnInvalidValue.js";import t from"./warnUnknownProps.js";import n from"../lib/FieldMessage.js";import r from"./AppRequiredMark.js";import i from"./useWuiControl.js";import{forwardRef as a,useId as o}from"react";import{jsx as s,jsxs as c}from"react/jsx-runtime";import"@webority/ui-elements/elements/otp";var l=[`numeric`,`alphanumeric`],u=a(function({value:a,onChange:u,onComplete:d,length:f=6,mode:p=`numeric`,label:m,required:h=!1,hint:g,error:_,disabled:v=!1,name:y,id:b,className:x=``,fieldClassName:S=``,...C},w){t(`AppOtpInput`,C),e(`AppOtpInput`,`mode`,p,l);let T=o(),E=b||T,D=_?`${E}-error`:void 0,O=g?`${E}-hint`:void 0,k=D||O,{setRef:A}=i({ref:w,value:a??``,onChange:u,on:{complete:e=>d?.(e.detail)}}),j=s(`wui-otp`,{"aria-label":typeof m==`string`?m:void 0,ref:A,id:E,name:y,length:String(f),mode:p,"aria-describedby":k,"aria-invalid":_?`true`:void 0,disabled:v?``:void 0,required:h?``:void 0,className:x||void 0,...C});return!m&&!_&&!g?j:c(`div`,{className:`field${S?` ${S}`:``}`,children:[m&&c(`label`,{className:`label`,htmlFor:E,children:[m,h&&s(r,{})]}),j,s(n,{error:_,hint:g,errorId:D,hintId:O})]})});export{u as default};
@@ -1 +1 @@
1
- import e from"./warnInvalidValue.js";import t from"./warnUnknownProps.js";import n from"./AppRequiredMark.js";import r from"./useWuiControl.js";import{forwardRef as i,useId as a}from"react";import{jsx as o,jsxs as s}from"react/jsx-runtime";import"@webority/ui-elements/elements/phone";var c=[`sm`,`md`,`lg`],l=i(function({value:i,onChange:l,country:u,disabled:d=!1,name:f,id:p,label:m=`Phone number`,placeholder:h,required:g=!1,hint:_,error:v,showFlag:y=!0,showDialCode:b=!0,size:x=`md`,fieldClassName:S=``,...C},w){t(`AppPhoneNumberInput`,C),e(`AppPhoneNumberInput`,`size`,x,c);let T=a(),E=p||T,D=v&&E?`${E}-error`:void 0,O=!v&&_&&E?`${E}-hint`:void 0,{setRef:k}=r({ref:w,value:i??``,onChange:l,events:[`input`,`change`]});return s(`div`,{className:`field app-phone-number-input${x===`sm`?` phone-sm`:``}${x===`lg`?` phone-lg`:``}${S?` ${S}`:``}`,children:[m&&s(`label`,{className:`label`,htmlFor:E,children:[m,g&&o(n,{})]}),o(`wui-phone`,{ref:k,id:E,name:f,"aria-label":typeof m==`string`?m:void 0,"aria-describedby":D||O,"aria-invalid":v?`true`:void 0,country:u,placeholder:h,required:g?``:void 0,disabled:d?``:void 0,"hide-flag":y?void 0:``,"hide-dial":b?void 0:``,...C}),v?o(`div`,{className:`field-error`,id:D,children:v}):_?o(`div`,{className:`field-hint`,id:O,children:_}):null]})});export{l as default};
1
+ import e from"./warnInvalidValue.js";import t from"./warnUnknownProps.js";import n from"../lib/FieldMessage.js";import r from"./AppRequiredMark.js";import i from"./useWuiControl.js";import{forwardRef as a,useId as o}from"react";import{jsx as s,jsxs as c}from"react/jsx-runtime";import"@webority/ui-elements/elements/phone";var l=[`sm`,`md`,`lg`],u=a(function({value:a,onChange:u,country:d,disabled:f=!1,name:p,id:m,label:h=`Phone number`,placeholder:g,required:_=!1,hint:v,error:y,showFlag:b=!0,showDialCode:x=!0,size:S=`md`,fieldClassName:C=``,...w},T){t(`AppPhoneNumberInput`,w),e(`AppPhoneNumberInput`,`size`,S,l);let E=o(),D=m||E,O=y&&D?`${D}-error`:void 0,k=!y&&v&&D?`${D}-hint`:void 0,{setRef:A}=i({ref:T,value:a??``,onChange:u,events:[`input`,`change`]});return c(`div`,{className:`field app-phone-number-input${S===`sm`?` phone-sm`:``}${S===`lg`?` phone-lg`:``}${C?` ${C}`:``}`,children:[h&&c(`label`,{className:`label`,htmlFor:D,children:[h,_&&s(r,{})]}),s(`wui-phone`,{ref:A,id:D,name:p,"aria-label":typeof h==`string`?h:void 0,"aria-describedby":O||k,"aria-invalid":y?`true`:void 0,country:d,placeholder:g,required:_?``:void 0,disabled:f?``:void 0,"hide-flag":b?void 0:``,"hide-dial":x?void 0:``,...w}),s(n,{error:y,hint:v,errorId:O,hintId:k})]})});export{u as default};
@@ -1 +1 @@
1
- import e from"./warnUnknownProps.js";import t from"./AppInfoTip.js";import n from"./AppRequiredMark.js";import{useId as r}from"react";import{jsx as i,jsxs as a}from"react/jsx-runtime";function o({label:o,options:s=[],name:c,value:l,defaultValue:u,onChange:d,inline:f=!1,required:p=!1,disabled:m=!1,error:h,hint:g,help:_,helpLabel:v=`More information`,id:y,className:b=``,fieldClassName:x=``,style:S,...C}){e(`AppRadioGroup`,C);let w=r(),T=y||w,E=c||T,D=`${T}-error`,O=`${T}-hint`,k=l!==void 0;return a(`div`,{className:`field${x?` ${x}`:``}`,children:[o!=null&&a(`span`,{className:`label`,id:`${T}-label`,children:[o,p&&i(n,{}),_&&i(t,{label:v,children:_})]}),i(`div`,{className:[`wui-radio-group`,f?`wui-radio-group-inline`:``,b].filter(Boolean).join(` `),style:S,id:T,role:`radiogroup`,"aria-labelledby":o==null?void 0:`${T}-label`,"aria-required":p?`true`:void 0,"aria-invalid":h?`true`:void 0,"aria-describedby":h?D:g?O:void 0,...C,children:s.map((e,t)=>{let n=`${T}-${t}`;return a(`div`,{className:`form-check`,children:[i(`input`,{type:`radio`,className:`form-check-input`,id:n,name:E,value:e.value,disabled:m||e.disabled||void 0,required:p||void 0,...k?{checked:l===e.value,onChange:()=>d?.(e.value)}:{defaultChecked:u===e.value,onChange:()=>d?.(e.value)}}),i(`label`,{className:`form-check-label`,htmlFor:n,children:e.label})]},e.value)})}),h?i(`div`,{className:`field-error`,id:D,children:h}):g?i(`div`,{className:`field-hint`,id:O,children:g}):null]})}export{o as default};
1
+ import e from"./warnUnknownProps.js";import t from"../lib/FieldMessage.js";import n from"./AppInfoTip.js";import r from"./AppRequiredMark.js";import{useId as i}from"react";import{jsx as a,jsxs as o}from"react/jsx-runtime";function s({label:s,options:c=[],name:l,value:u,defaultValue:d,onChange:f,inline:p=!1,required:m=!1,disabled:h=!1,error:g,hint:_,help:v,helpLabel:y=`More information`,id:b,className:x=``,fieldClassName:S=``,style:C,...w}){e(`AppRadioGroup`,w);let T=i(),E=b||T,D=l||E,O=`${E}-error`,k=`${E}-hint`,A=u!==void 0;return o(`div`,{className:`field${S?` ${S}`:``}`,children:[s!=null&&o(`span`,{className:`label`,id:`${E}-label`,children:[s,m&&a(r,{}),v&&a(n,{label:y,children:v})]}),a(`div`,{className:[`wui-radio-group`,p?`wui-radio-group-inline`:``,x].filter(Boolean).join(` `),style:C,id:E,role:`radiogroup`,"aria-labelledby":s==null?void 0:`${E}-label`,"aria-required":m?`true`:void 0,"aria-invalid":g?`true`:void 0,"aria-describedby":g?O:_?k:void 0,...w,children:c.map((e,t)=>{let n=`${E}-${t}`;return o(`div`,{className:`form-check`,children:[a(`input`,{type:`radio`,className:`form-check-input`,id:n,name:D,value:e.value,disabled:h||e.disabled||void 0,required:m||void 0,...A?{checked:u===e.value,onChange:()=>f?.(e.value)}:{defaultChecked:d===e.value,onChange:()=>f?.(e.value)}}),a(`label`,{className:`form-check-label`,htmlFor:n,children:e.label})]},e.value)})}),a(t,{error:g,hint:_,errorId:O,hintId:k})]})}export{s as default};
@@ -1 +1 @@
1
- import e from"./warnInvalidValue.js";import t from"./warnUnknownProps.js";import n from"./AppIcon.js";import r from"./AppRequiredMark.js";import{useId as i,useState as a}from"react";import{jsx as o,jsxs as s}from"react/jsx-runtime";import"@webority/ui-elements/elements/rating";var c={sm:16,md:20,lg:28},l=e=>String(Math.round(e*100)/100),u=(e,t,n)=>e>=t?`full`:n&&e>=t-.5?`half`:`empty`;function d({value:n,defaultValue:d,onChange:p,max:m=5,readOnly:h=!1,half:g=!1,showValue:_=!1,size:v=`md`,label:y,name:b,required:x=!1,disabled:S=!1,error:C,hint:w,id:T,className:E=``,fieldClassName:D=``,...O}){t(`AppRating`,O),e(`AppRating`,`size`,v,Object.keys(c));let k=i(),[A,j]=a(d),M=c[v]??c.md,N=Array.from({length:m},(e,t)=>t+1),P=(...e)=>[`wui-rating`,`wui-rating-${v}`,...e,E].filter(Boolean).join(` `);if(h){let e=Number.isFinite(Number(n))?Math.min(Math.max(Number(n),0),m):0,t=g?Math.round(e*2)/2:Math.round(e),r=`${typeof y==`string`&&y?`${y}: `:``}${l(e)} out of ${m}`;return s(`span`,{className:P(`wui-rating-display`),id:T,role:`img`,"aria-label":r,...O,children:[o(`span`,{className:`wui-rating-stars`,"aria-hidden":`true`,children:N.map(e=>o(`span`,{className:`wui-rating-star wui-rating-star-${u(t,e,g)}`,children:o(f,{px:M})},e))}),_&&o(`span`,{className:`wui-rating-value`,"aria-hidden":`true`,children:l(e)})]})}let F=T||k,I=b||F,L=`${F}-error`,R=`${F}-hint`,z=Math.round(Number(n===void 0?A:n))||0,B=e=>{j(e),p?.(e)};return s(`div`,{className:`field${D?` ${D}`:``}`,children:[y!=null&&s(`span`,{className:`label`,id:`${F}-label`,children:[y,x&&o(r,{})]}),o(`wui-rating`,{class:P(`wui-rating-input`),id:F,role:`radiogroup`,"aria-labelledby":y==null?void 0:`${F}-label`,"aria-label":y==null?`Rating`:void 0,"aria-required":x?`true`:void 0,"aria-invalid":C?`true`:void 0,"aria-describedby":C?L:w?R:void 0,disabled:S?``:void 0,...O,children:N.map(e=>s(`label`,{className:`wui-rating-star wui-rating-star-${z>=e?`full`:`empty`}`,"data-value":e,children:[o(`input`,{type:`radio`,className:`visually-hidden`,name:I,value:e,"aria-label":`${e} ${e===1?`star`:`stars`}`,checked:z===e,onChange:()=>B(e),disabled:S||void 0,required:x||void 0}),o(f,{px:M})]},e))}),C?o(`div`,{className:`field-error`,id:L,children:C}):w?o(`div`,{className:`field-hint`,id:R,children:w}):null]})}function f({px:e}){return s(`span`,{className:`wui-rating-glyphs`,"aria-hidden":`true`,children:[o(n,{name:`star`,size:e}),o(`span`,{className:`wui-rating-fill`,children:o(n,{name:`star`,variant:`bold`,size:e})})]})}export{d as default};
1
+ import e from"./warnInvalidValue.js";import t from"./warnUnknownProps.js";import n from"./AppIcon.js";import r from"../lib/FieldMessage.js";import i from"./AppRequiredMark.js";import{useId as a,useState as o}from"react";import{jsx as s,jsxs as c}from"react/jsx-runtime";import"@webority/ui-elements/elements/rating";var l={sm:16,md:20,lg:28},u=e=>String(Math.round(e*100)/100),d=(e,t,n)=>e>=t?`full`:n&&e>=t-.5?`half`:`empty`;function f({value:n,defaultValue:f,onChange:m,max:h=5,readOnly:g=!1,half:_=!1,showValue:v=!1,size:y=`md`,label:b,name:x,required:S=!1,disabled:C=!1,error:w,hint:T,id:E,className:D=``,fieldClassName:O=``,...k}){t(`AppRating`,k),e(`AppRating`,`size`,y,Object.keys(l));let A=a(),[j,M]=o(f),N=l[y]??l.md,P=Array.from({length:h},(e,t)=>t+1),F=(...e)=>[`wui-rating`,`wui-rating-${y}`,...e,D].filter(Boolean).join(` `);if(g){let e=Number.isFinite(Number(n))?Math.min(Math.max(Number(n),0),h):0,t=_?Math.round(e*2)/2:Math.round(e),r=`${typeof b==`string`&&b?`${b}: `:``}${u(e)} out of ${h}`;return c(`span`,{className:F(`wui-rating-display`),id:E,role:`img`,"aria-label":r,...k,children:[s(`span`,{className:`wui-rating-stars`,"aria-hidden":`true`,children:P.map(e=>s(`span`,{className:`wui-rating-star wui-rating-star-${d(t,e,_)}`,children:s(p,{px:N})},e))}),v&&s(`span`,{className:`wui-rating-value`,"aria-hidden":`true`,children:u(e)})]})}let I=E||A,L=x||I,R=`${I}-error`,z=`${I}-hint`,B=Math.round(Number(n===void 0?j:n))||0,V=e=>{M(e),m?.(e)};return c(`div`,{className:`field${O?` ${O}`:``}`,children:[b!=null&&c(`span`,{className:`label`,id:`${I}-label`,children:[b,S&&s(i,{})]}),s(`wui-rating`,{class:F(`wui-rating-input`),id:I,role:`radiogroup`,"aria-labelledby":b==null?void 0:`${I}-label`,"aria-label":b==null?`Rating`:void 0,"aria-required":S?`true`:void 0,"aria-invalid":w?`true`:void 0,"aria-describedby":w?R:T?z:void 0,disabled:C?``:void 0,...k,children:P.map(e=>c(`label`,{className:`wui-rating-star wui-rating-star-${B>=e?`full`:`empty`}`,"data-value":e,children:[s(`input`,{type:`radio`,className:`visually-hidden`,name:L,value:e,"aria-label":`${e} ${e===1?`star`:`stars`}`,checked:B===e,onChange:()=>V(e),disabled:C||void 0,required:S||void 0}),s(p,{px:N})]},e))}),s(r,{error:w,hint:T,errorId:R,hintId:z})]})}function p({px:e}){return c(`span`,{className:`wui-rating-glyphs`,"aria-hidden":`true`,children:[s(n,{name:`star`,size:e}),s(`span`,{className:`wui-rating-fill`,children:s(n,{name:`star`,variant:`bold`,size:e})})]})}export{f as default};
@@ -1 +1 @@
1
- import e from"./warnInvalidValue.js";import t from"./warnUnknownProps.js";import n from"./AppInfoTip.js";import r from"./AppRequiredMark.js";import i from"./useWuiControl.js";import{forwardRef as a,useEffect as o,useId as s,useState as c}from"react";import{jsx as l,jsxs as u}from"react/jsx-runtime";var d=[`html`,`markdown`],f=[`input`,`change`],p=`The editor couldn't load. Reload the page and try again.`,m=a(function({value:a,onChange:m,format:h,placeholder:g,name:_,label:v,error:y,hint:b,required:x=!1,disabled:S=!1,readOnly:C=!1,id:w,ariaLabel:T,className:E=``,fieldClassName:D=``,help:O,helpLabel:k=`More information`,...A},j){t(`AppRichText`,A),e(`AppRichText`,`format`,h,d);let M=s(),N=w||M,[P,F]=c(!1),{setRef:I}=i({ref:j,value:a,onChange:m,events:f});return o(()=>{let e=!0;return import(`@webority/ui-elements/rich-text`).catch(t=>{console.warn(`[AppRichText] the editor failed to load:`,t?.message),e&&F(!0)}),()=>{e=!1}},[]),u(`div`,{className:`field${D?` ${D}`:``}`,children:[v&&u(`label`,{className:`label`,htmlFor:N,children:[v,x&&l(r,{}),O&&l(n,{label:k,children:O})]}),P?l(`div`,{className:`field-error`,role:`status`,children:p}):l(`wui-rich-text`,{ref:I,id:N,role:`group`,name:_,format:h||void 0,placeholder:g,"aria-label":T||(typeof v==`string`?v:void 0),"aria-describedby":y?`${N}-error`:b?`${N}-hint`:void 0,"aria-invalid":y?`true`:void 0,required:x?``:void 0,disabled:S?``:void 0,readonly:C?``:void 0,className:E||void 0,...A},h||`html`),y?l(`div`,{className:`field-error`,id:`${N}-error`,children:y}):b?l(`div`,{className:`field-hint`,id:`${N}-hint`,children:b}):null]})});export{m as default};
1
+ import e from"./warnInvalidValue.js";import t from"./warnUnknownProps.js";import n from"../lib/FieldMessage.js";import r from"./AppInfoTip.js";import i from"./AppRequiredMark.js";import a from"./useWuiControl.js";import{forwardRef as o,useEffect as s,useId as c,useState as l}from"react";import{jsx as u,jsxs as d}from"react/jsx-runtime";var f=[`html`,`markdown`],p=[`input`,`change`],m=`The editor couldn't load. Reload the page and try again.`,h=o(function({value:o,onChange:h,format:g,placeholder:_,name:v,label:y,error:b,hint:x,required:S=!1,disabled:C=!1,readOnly:w=!1,id:T,ariaLabel:E,className:D=``,fieldClassName:O=``,help:k,helpLabel:A=`More information`,...j},M){t(`AppRichText`,j),e(`AppRichText`,`format`,g,f);let N=c(),P=T||N,[F,I]=l(!1),{setRef:L}=a({ref:M,value:o,onChange:h,events:p});return s(()=>{let e=!0;return import(`@webority/ui-elements/rich-text`).catch(t=>{console.warn(`[AppRichText] the editor failed to load:`,t?.message),e&&I(!0)}),()=>{e=!1}},[]),d(`div`,{className:`field${O?` ${O}`:``}`,children:[y&&d(`label`,{className:`label`,htmlFor:P,children:[y,S&&u(i,{}),k&&u(r,{label:A,children:k})]}),F?u(`div`,{className:`field-error`,role:`status`,children:m}):u(`wui-rich-text`,{ref:L,id:P,role:`group`,name:v,format:g||void 0,placeholder:_,"aria-label":E||(typeof y==`string`?y:void 0),"aria-describedby":b?`${P}-error`:x?`${P}-hint`:void 0,"aria-invalid":b?`true`:void 0,required:S?``:void 0,disabled:C?``:void 0,readonly:w?``:void 0,className:D||void 0,...j},g||`html`),u(n,{error:b,hint:x,errorId:`${P}-error`,hintId:`${P}-hint`})]})});export{h as default};
@@ -1 +1 @@
1
- import{useId as e}from"react";import{jsx as t,jsxs as n}from"react/jsx-runtime";function r({value:r=null,onChange:i,min:a=0,max:o=10,label:s,lowLabel:c,highLabel:l,name:u,disabled:d=!1,error:f,hint:p,id:m,className:h=``,fieldClassName:g=``}){let _=e(),v=m||_,y=u||v,b=`${v}-error`,x=`${v}-hint`,S=Array.from({length:Math.max(0,o-a+1)},(e,t)=>a+t),C=c!=null||l!=null;return n(`div`,{className:`field${g?` ${g}`:``}`,children:[s!=null&&t(`span`,{className:`label`,id:`${v}-label`,children:s}),n(`div`,{className:`wui-score-scale${h?` ${h}`:``}`,id:v,role:`radiogroup`,"aria-labelledby":s==null?void 0:`${v}-label`,"aria-label":s==null?`Score`:void 0,"aria-invalid":f?`true`:void 0,"aria-describedby":f?b:p?x:void 0,children:[S.map(e=>n(`label`,{className:`wui-score-scale__item${r===e?` wui-score-scale__item--selected`:``}`,children:[t(`input`,{type:`radio`,className:`visually-hidden`,name:y,value:e,checked:r===e,disabled:d,onChange:()=>i?.(e)}),e]},e)),C&&n(`span`,{className:`wui-score-scale__ends`,children:[t(`span`,{children:c}),t(`span`,{children:l})]})]}),f?t(`div`,{className:`field-error`,id:b,children:f}):p?t(`div`,{className:`field-hint`,id:x,children:p}):null]})}export{r as default};
1
+ import e from"../lib/FieldMessage.js";import{useId as t}from"react";import{jsx as n,jsxs as r}from"react/jsx-runtime";function i({value:i=null,onChange:a,min:o=0,max:s=10,label:c,lowLabel:l,highLabel:u,name:d,disabled:f=!1,error:p,hint:m,id:h,className:g=``,fieldClassName:_=``}){let v=t(),y=h||v,b=d||y,x=`${y}-error`,S=`${y}-hint`,C=Array.from({length:Math.max(0,s-o+1)},(e,t)=>o+t),w=l!=null||u!=null;return r(`div`,{className:`field${_?` ${_}`:``}`,children:[c!=null&&n(`span`,{className:`label`,id:`${y}-label`,children:c}),r(`div`,{className:`wui-score-scale${g?` ${g}`:``}`,id:y,role:`radiogroup`,"aria-labelledby":c==null?void 0:`${y}-label`,"aria-label":c==null?`Score`:void 0,"aria-invalid":p?`true`:void 0,"aria-describedby":p?x:m?S:void 0,children:[C.map(e=>r(`label`,{className:`wui-score-scale__item${i===e?` wui-score-scale__item--selected`:``}`,children:[n(`input`,{type:`radio`,className:`visually-hidden`,name:b,value:e,checked:i===e,disabled:f,onChange:()=>a?.(e)}),e]},e)),w&&r(`span`,{className:`wui-score-scale__ends`,children:[n(`span`,{children:l}),n(`span`,{children:u})]})]}),n(e,{error:p,hint:m,errorId:x,hintId:S})]})}export{i as default};
@@ -1 +1 @@
1
- import e from"./warnInvalidValue.js";import t from"./warnUnknownProps.js";import ee from"./AppInfoTip.js";import n from"./AppRequiredMark.js";import r from"./useNodeLabels.js";import i,{optionsEqual as a}from"./useWuiControl.js";import{forwardRef as o,useEffect as s,useId as c,useRef as l}from"react";import{Fragment as u,jsx as d,jsxs as f}from"react/jsx-runtime";import"@webority/ui-elements/elements/select";var p=[`sm`,`lg`],m=(e,t)=>({value:e.value,label:t,icon:e.icon}),h=o(function({value:o,onChange:h,options:g=[],placeholder:_=`Select...`,searchPlaceholder:v=`Search...`,searchable:y=!1,clearable:b=!1,size:x,icon:S,prefix:C,suffix:w,floatingLabel:T=!1,disabled:E,label:D,required:O=!1,error:k,hint:A,help:j,helpLabel:M=`More information`,id:N,name:P,className:F=``,fieldClassName:I=``,"aria-label":L,"aria-labelledby":R,"aria-describedby":z,...B},V){t(`AppSelect`,B),e(`AppSelect`,`size`,x,p);let H=c(),{setRef:U,innerRef:W}=i({ref:V,value:o??``,onChange:h}),{portal:G,toElementOptions:K}=r(g),q=l({el:null,options:null});s(()=>{let e=W.current;if(!e||q.current.el===e&&q.current.options===g)return;q.current={el:e,options:g};let t=K(g,m);a(t,e.options)||(e.options=t)});let J=N||H,Y=T&&D,X=k&&J?`${J}-error`:void 0,Z=A&&J?`${J}-hint`:void 0,Q=f(u,{children:[d(`wui-select`,{"aria-label":L||(typeof D==`string`?D:void 0),"aria-labelledby":R||void 0,"aria-describedby":X||Z||z||void 0,"aria-invalid":k?`true`:void 0,ref:U,id:J,name:P,placeholder:T&&D?` `:_,"search-placeholder":v,searchable:y?``:void 0,clearable:b?``:void 0,size:x||void 0,icon:S||void 0,disabled:E?``:void 0,required:O?``:void 0,className:F||void 0,...B}),G]}),$=!Y&&(C!=null||w!=null)?f(`div`,{className:`input-affixed`,children:[C!=null&&d(`span`,{className:`affix affix-pre`,children:C}),Q,w!=null&&d(`span`,{className:`affix affix-suf`,children:w})]}):Q;return!D&&!k&&!A?$:f(`div`,{className:[`field`,I].filter(Boolean).join(` `),children:[D&&!Y&&f(`label`,{className:`label`,htmlFor:J,children:[D,O&&d(n,{}),j&&d(ee,{label:M,children:j})]}),Y?f(`div`,{className:`field-float`,children:[Q,f(`label`,{className:`float-label`,htmlFor:J,children:[D,O&&d(n,{})]})]}):$,k?d(`div`,{className:`field-error`,id:X,children:k}):A?d(`div`,{className:`field-hint`,id:Z,children:A}):null]})});export{h as default};
1
+ import e from"./warnInvalidValue.js";import t from"./warnUnknownProps.js";import n from"../lib/FieldMessage.js";import ee from"./AppInfoTip.js";import r from"./AppRequiredMark.js";import i from"./useNodeLabels.js";import a,{optionsEqual as o}from"./useWuiControl.js";import{forwardRef as s,useEffect as c,useId as l,useRef as u}from"react";import{Fragment as d,jsx as f,jsxs as p}from"react/jsx-runtime";import"@webority/ui-elements/elements/select";var te=[`sm`,`lg`],m=(e,t)=>({value:e.value,label:t,icon:e.icon}),h=s(function({value:s,onChange:h,options:g=[],placeholder:_=`Select...`,searchPlaceholder:v=`Search...`,searchable:y=!1,clearable:b=!1,size:x,icon:S,prefix:C,suffix:w,floatingLabel:T=!1,disabled:E,label:D,required:O=!1,error:k,hint:A,help:j,helpLabel:M=`More information`,id:N,name:P,className:F=``,fieldClassName:I=``,"aria-label":L,"aria-labelledby":R,"aria-describedby":z,...B},V){t(`AppSelect`,B),e(`AppSelect`,`size`,x,te);let H=l(),{setRef:U,innerRef:W}=a({ref:V,value:s??``,onChange:h}),{portal:G,toElementOptions:K}=i(g),q=u({el:null,options:null});c(()=>{let e=W.current;if(!e||q.current.el===e&&q.current.options===g)return;q.current={el:e,options:g};let t=K(g,m);o(t,e.options)||(e.options=t)});let J=N||H,Y=T&&D,X=k&&J?`${J}-error`:void 0,Z=A&&J?`${J}-hint`:void 0,Q=p(d,{children:[f(`wui-select`,{"aria-label":L||(typeof D==`string`?D:void 0),"aria-labelledby":R||void 0,"aria-describedby":X||Z||z||void 0,"aria-invalid":k?`true`:void 0,ref:U,id:J,name:P,placeholder:T&&D?` `:_,"search-placeholder":v,searchable:y?``:void 0,clearable:b?``:void 0,size:x||void 0,icon:S||void 0,disabled:E?``:void 0,required:O?``:void 0,className:F||void 0,...B}),G]}),$=!Y&&(C!=null||w!=null)?p(`div`,{className:`input-affixed`,children:[C!=null&&f(`span`,{className:`affix affix-pre`,children:C}),Q,w!=null&&f(`span`,{className:`affix affix-suf`,children:w})]}):Q;return!D&&!k&&!A?$:p(`div`,{className:[`field`,I].filter(Boolean).join(` `),children:[D&&!Y&&p(`label`,{className:`label`,htmlFor:J,children:[D,O&&f(r,{}),j&&f(ee,{label:M,children:j})]}),Y?p(`div`,{className:`field-float`,children:[Q,p(`label`,{className:`float-label`,htmlFor:J,children:[D,O&&f(r,{})]})]}):$,f(n,{error:k,hint:A,errorId:X,hintId:Z})]})});export{h as default};
@@ -1 +1 @@
1
- import e from"./warnInvalidValue.js";import t from"./warnUnknownProps.js";import n from"./AppRequiredMark.js";import r,{readRange as i,writeNumberValue as a}from"./useWuiControl.js";import{forwardRef as o,useEffect as s,useId as c}from"react";import{jsx as l,jsxs as u}from"react/jsx-runtime";import"@webority/ui-elements/elements/slider";var d=[`sm`,`md`,`lg`],f=o(function({value:o,start:f,end:p,range:m=!1,onChange:h,label:g,required:_=!1,hint:v,error:y,name:b,startName:x,endName:S,min:C=0,max:w=100,step:T=1,disabled:E,size:D,showValue:O,unit:k,id:A,ariaLabel:j,className:M=``,fieldClassName:N=``,...P},F){t(`AppSlider`,P),e(`AppSlider`,`size`,D,d);let I=c(),L=A||I,R=m,{setRef:z,innerRef:B}=r({ref:F,value:R?void 0:o,onChange:h,readValue:R?i:void 0,writeValue:R?void 0:a});s(()=>{if(!R)return;let e=B.current;e&&(f!==void 0&&f>e.end?(p!==void 0&&e.end!==p&&(e.end=p),f!==void 0&&e.start!==f&&(e.start=f)):(f!==void 0&&e.start!==f&&(e.start=f),p!==void 0&&e.end!==p&&(e.end=p)))},[f,p,R,B]);let V=!g&&!y&&!v,H=y?`${L}-error`:void 0,U=v?`${L}-hint`:void 0,W=l(`wui-slider`,{ref:z,id:L,name:b||void 0,"start-name":x||void 0,"end-name":S||void 0,min:C,max:w,step:T,size:D||void 0,"aria-label":j||(typeof g==`string`?g:void 0),"aria-describedby":H||U,"aria-invalid":y?`true`:void 0,disabled:E?``:void 0,required:_?``:void 0,range:R?``:void 0,"show-value":O?``:void 0,unit:k||void 0,className:M||void 0,...P});return V?W:u(`div`,{className:`field${N?` ${N}`:``}`,children:[g&&u(`label`,{className:`label`,htmlFor:L,children:[g,_&&l(n,{})]}),W,y&&l(`div`,{className:`field-error`,id:H,children:y}),!y&&v&&l(`div`,{className:`field-hint`,id:U,children:v})]})});export{f as default};
1
+ import e from"./warnInvalidValue.js";import t from"./warnUnknownProps.js";import n from"../lib/FieldMessage.js";import r from"./AppRequiredMark.js";import i,{readRange as a,writeNumberValue as o}from"./useWuiControl.js";import{forwardRef as s,useEffect as c,useId as l}from"react";import{jsx as u,jsxs as d}from"react/jsx-runtime";import"@webority/ui-elements/elements/slider";var f=[`sm`,`md`,`lg`],p=s(function({value:s,start:p,end:m,range:h=!1,onChange:g,label:_,required:v=!1,hint:y,error:b,name:x,startName:S,endName:C,min:w=0,max:T=100,step:E=1,disabled:D,size:O,showValue:k,unit:A,id:j,ariaLabel:M,className:N=``,fieldClassName:P=``,...F},I){t(`AppSlider`,F),e(`AppSlider`,`size`,O,f);let L=l(),R=j||L,z=h,{setRef:B,innerRef:V}=i({ref:I,value:z?void 0:s,onChange:g,readValue:z?a:void 0,writeValue:z?void 0:o});c(()=>{if(!z)return;let e=V.current;e&&(p!==void 0&&p>e.end?(m!==void 0&&e.end!==m&&(e.end=m),p!==void 0&&e.start!==p&&(e.start=p)):(p!==void 0&&e.start!==p&&(e.start=p),m!==void 0&&e.end!==m&&(e.end=m)))},[p,m,z,V]);let H=!_&&!b&&!y,U=b?`${R}-error`:void 0,W=y?`${R}-hint`:void 0,G=u(`wui-slider`,{ref:B,id:R,name:x||void 0,"start-name":S||void 0,"end-name":C||void 0,min:w,max:T,step:E,size:O||void 0,"aria-label":M||(typeof _==`string`?_:void 0),"aria-describedby":U||W,"aria-invalid":b?`true`:void 0,disabled:D?``:void 0,required:v?``:void 0,range:z?``:void 0,"show-value":k?``:void 0,unit:A||void 0,className:N||void 0,...F});return H?G:d(`div`,{className:`field${P?` ${P}`:``}`,children:[_&&d(`label`,{className:`label`,htmlFor:R,children:[_,v&&u(r,{})]}),G,u(n,{error:b,hint:y,errorId:U,hintId:W})]})});export{p as default};
@@ -1 +1 @@
1
- import e from"./warnInvalidValue.js";import t from"./warnUnknownProps.js";import n from"./AppInfoTip.js";import r from"./AppRequiredMark.js";import i,{readValues as a,writeValues as o}from"./useWuiControl.js";import{forwardRef as s,useId as c}from"react";import{jsx as l,jsxs as u}from"react/jsx-runtime";import"@webority/ui-elements/elements/taginput";var d=[`sm`,`lg`],f=s(function({values:s,onChange:f,placeholder:p=`Add…`,name:m,label:h,error:g,hint:_,required:v=!1,size:y,maxTags:b,allowDuplicates:x=!1,disabled:S=!1,id:C,ariaLabel:w,className:T=``,fieldClassName:E=``,help:D,helpLabel:O=`More information`,...k},A){t(`AppTagInput`,k),e(`AppTagInput`,`size`,y,d);let j=c(),M=C||j,{setRef:N}=i({ref:A,value:s,onChange:f,readValue:a,writeValue:o});return u(`div`,{className:`field${E?` ${E}`:``}`,children:[h&&u(`label`,{className:`label`,htmlFor:M,children:[h,v&&l(r,{}),D&&l(n,{label:O,children:D})]}),l(`wui-taginput`,{"aria-label":w||(typeof h==`string`?h:void 0),"aria-describedby":g?`${M}-error`:_?`${M}-hint`:void 0,"aria-invalid":g?`true`:void 0,id:M,ref:N,name:m,placeholder:p,size:y||void 0,"max-tags":b===void 0?void 0:String(b),"allow-duplicates":x?``:void 0,disabled:S?``:void 0,required:v?``:void 0,className:T||void 0,...k}),g?l(`div`,{className:`field-error`,id:`${M}-error`,children:g}):_?l(`div`,{className:`field-hint`,id:`${M}-hint`,children:_}):null]})});export{f as default};
1
+ import e from"./warnInvalidValue.js";import t from"./warnUnknownProps.js";import n from"../lib/FieldMessage.js";import r from"./AppInfoTip.js";import i from"./AppRequiredMark.js";import a,{readValues as o,writeValues as s}from"./useWuiControl.js";import{forwardRef as c,useId as l}from"react";import{jsx as u,jsxs as d}from"react/jsx-runtime";import"@webority/ui-elements/elements/taginput";var f=[`sm`,`lg`],p=c(function({values:c,onChange:p,placeholder:m=`Add…`,name:h,label:g,error:_,hint:v,required:y=!1,size:b,maxTags:x,allowDuplicates:S=!1,disabled:C=!1,id:w,ariaLabel:T,className:E=``,fieldClassName:D=``,help:O,helpLabel:k=`More information`,...A},j){t(`AppTagInput`,A),e(`AppTagInput`,`size`,b,f);let M=l(),N=w||M,{setRef:P}=a({ref:j,value:c,onChange:p,readValue:o,writeValue:s});return d(`div`,{className:`field${D?` ${D}`:``}`,children:[g&&d(`label`,{className:`label`,htmlFor:N,children:[g,y&&u(i,{}),O&&u(r,{label:k,children:O})]}),u(`wui-taginput`,{"aria-label":T||(typeof g==`string`?g:void 0),"aria-describedby":_?`${N}-error`:v?`${N}-hint`:void 0,"aria-invalid":_?`true`:void 0,id:N,ref:P,name:h,placeholder:m,size:b||void 0,"max-tags":x===void 0?void 0:String(x),"allow-duplicates":S?``:void 0,disabled:C?``:void 0,required:y?``:void 0,className:E||void 0,...A}),u(n,{error:_,hint:v,errorId:`${N}-error`,hintId:`${N}-hint`})]})});export{p as default};
@@ -1 +1 @@
1
- import e from"./warnUnknownProps.js";import t from"./AppInfoTip.js";import n from"./AppRequiredMark.js";import{forwardRef as r,useCallback as i,useEffect as a,useId as o,useLayoutEffect as s,useRef as c,useState as l}from"react";import{Form as u}from"react-bootstrap";import{jsx as d,jsxs as f}from"react/jsx-runtime";var p=r(function({label:r,required:p=!1,error:m,hint:h,help:g,helpLabel:_=`More information`,id:v,name:y,rows:b=4,autoGrow:x=!1,showCount:S=!1,maxLength:C,className:w=``,fieldClassName:T=``,...E},D){e(`AppTextarea`,E);let O=o(),k=v||O,A=[`textarea`,x?`autosize`:``,m?`error`:``,w].filter(Boolean).join(` `),j=m&&k?`${k}-error`:void 0,M=h&&k?`${k}-hint`:void 0,N=j||M,P=c(null),F=e=>{P.current=e,typeof D==`function`?D(e):D&&(D.current=e)},I=i(()=>{let e=P.current;e&&(e.style.height=`auto`,e.style.height=`${e.scrollHeight}px`)},[]);s(()=>{x&&I()},[x,I,E.value]);let[L,R]=l(()=>String(E.value??E.defaultValue??``).length);a(()=>{!S||E.value===void 0||R(String(E.value??``).length)},[E.value,S]);let z=e=>{x&&I(),S&&R(e.target.value.length),E.onInput?.(e)};return f(u.Group,{className:`field${T?` ${T}`:``}`,children:[r&&f(u.Label,{className:`label`,htmlFor:k,children:[r,p&&d(n,{}),g&&d(t,{label:_,children:g})]}),d(u.Control,{as:`textarea`,id:k,name:y,rows:b,className:A,"aria-invalid":m?`true`:`false`,"aria-describedby":N,required:p,maxLength:C,...E,ref:F,onInput:z}),m?d(`div`,{className:`field-error`,id:j,children:m}):h?d(`div`,{className:`field-hint`,id:M,children:h}):null,S&&f(`div`,{className:`field-count${C&&L>=C?` at-limit`:``}`,children:[L,C?` / ${C}`:``]})]})});export{p as default};
1
+ import e from"./warnUnknownProps.js";import t from"../lib/FieldMessage.js";import n from"./AppInfoTip.js";import r from"./AppRequiredMark.js";import{forwardRef as i,useCallback as a,useEffect as o,useId as s,useLayoutEffect as c,useRef as l,useState as u}from"react";import{Form as d}from"react-bootstrap";import{jsx as f,jsxs as p}from"react/jsx-runtime";var m=i(function({label:i,required:m=!1,error:h,hint:g,help:_,helpLabel:v=`More information`,id:y,name:b,rows:x=4,autoGrow:S=!1,showCount:C=!1,maxLength:w,className:T=``,fieldClassName:E=``,...D},O){e(`AppTextarea`,D);let k=s(),A=y||k,j=[`textarea`,S?`autosize`:``,h?`error`:``,T].filter(Boolean).join(` `),M=h&&A?`${A}-error`:void 0,N=g&&A?`${A}-hint`:void 0,P=M||N,F=l(null),I=e=>{F.current=e,typeof O==`function`?O(e):O&&(O.current=e)},L=a(()=>{let e=F.current;e&&(e.style.height=`auto`,e.style.height=`${e.scrollHeight}px`)},[]);c(()=>{S&&L()},[S,L,D.value]);let[R,z]=u(()=>String(D.value??D.defaultValue??``).length);o(()=>{!C||D.value===void 0||z(String(D.value??``).length)},[D.value,C]);let B=e=>{S&&L(),C&&z(e.target.value.length),D.onInput?.(e)};return p(d.Group,{className:`field${E?` ${E}`:``}`,children:[i&&p(d.Label,{className:`label`,htmlFor:A,children:[i,m&&f(r,{}),_&&f(n,{label:v,children:_})]}),f(d.Control,{as:`textarea`,id:A,name:b,rows:x,className:j,"aria-invalid":h?`true`:`false`,"aria-describedby":P,required:m,maxLength:w,...D,ref:I,onInput:B}),f(t,{error:h,hint:g,errorId:M,hintId:N}),C&&p(`div`,{className:`field-count${w&&R>=w?` at-limit`:``}`,children:[R,w?` / ${w}`:``]})]})});export{m as default};
@@ -1 +1 @@
1
- import e from"./warnInvalidValue.js";import t from"./warnUnknownProps.js";import n from"./AppActionIcon.js";import r from"./AppSegmented.js";import{DEFAULT_THEME_EFFECT as i,DEFAULT_THEME_STORAGE_KEY as a,THEME_CHANGE_EVENT as o,THEME_EFFECTS as s,THEME_MODES as c,applyTheme as l,nextTheme as u,readStoredTheme as d,resolveTheme as f,storeTheme as p,transitionTheme as m,watchSystemTheme as h}from"@webority/ui-elements/helpers";import{useCallback as g,useEffect as _,useId as v,useState as y}from"react";import{jsx as b}from"react/jsx-runtime";import{flushSync as x}from"react-dom";var S={light:`sun`,dark:`moon`,auto:`refresh-cw`},C=[`icon`,`segmented`],w={sm:16,md:20,lg:24,xl:28};function T({variant:T=`icon`,effect:E=i,includeAuto:D=!0,storageKey:O=a,duration:k,label:A=`Theme`,lightLabel:j=`Light`,darkLabel:M=`Dark`,autoLabel:N=`System`,name:P,size:F=`md`,tooltipPlacement:I=`auto`,onChange:L,className:R=``,...z}){t(`AppThemeToggle`,z),e(`AppThemeToggle`,`variant`,T,C),e(`AppThemeToggle`,`effect`,E,s),e(`AppThemeToggle`,`size`,F,Object.keys(w));let B=g(e=>e===`auto`&&!D?f(e):e,[D]),[V,H]=y(()=>B(typeof window>`u`?`auto`:d(O))),U=v(),W=P||U;_(()=>{let e=document.documentElement.getAttribute(`data-theme`);c.includes(e)?H(B(e)):l(d(O))},[]),_(()=>{let e=e=>{let t=e.detail?.preference;c.includes(t)&&H(B(t))};return document.addEventListener(o,e),()=>document.removeEventListener(o,e)},[B]),_(()=>h(()=>{document.documentElement.getAttribute(`data-theme`)===`auto`&&l(`auto`)}),[]);let G=g((e,t,n)=>{let r=t?.getBoundingClientRect?.()??{left:0,top:0,width:0,height:0},i={x:r.left+r.width/2,y:r.top+r.height/2};m(()=>{l(e),p(e,O),x(()=>H(e)),L?.(e)},{effect:E,to:f(e),origin:i,duration:k,live:n})},[O,E,k,L]);if(T===`segmented`){let e=[{value:`light`,label:j,icon:S.light},{value:`dark`,label:M,icon:S.dark}];return D&&e.push({value:`auto`,label:N,icon:S.auto}),b(r,{options:e,value:V,name:W,label:A,size:F,className:[`wui-theme-toggle`,`wui-theme-toggle-segmented`,R].filter(Boolean).join(` `),onChange:e=>{if(e===V)return;let t=document.querySelector(`.segmented-input[name="${CSS.escape(W)}"][value="${e}"]`);G(e,t?.closest(`.segmented-option`)??t,t?.closest(`.segmented`))}})}return b(n,{icon:S[V],label:`${A}: ${V}`,size:w[F]??w.md,tooltipPlacement:I,onClick:e=>G(u(V,{includeAuto:D}),e.currentTarget,e.currentTarget),className:[`wui-theme-toggle`,R].filter(Boolean).join(` `)})}export{T as default};
1
+ import e from"./warnInvalidValue.js";import t from"./warnUnknownProps.js";import n from"./AppActionIcon.js";import r from"./AppSegmented.js";import{DEFAULT_THEME_EFFECT as i,DEFAULT_THEME_STORAGE_KEY as a,THEME_CHANGE_EVENT as o,THEME_EFFECTS as s,THEME_MODES as c,applyTheme as l,nextTheme as u,readStoredTheme as d,resolveTheme as f,storeTheme as p,transitionTheme as m,watchSystemTheme as h}from"@webority/ui-elements/helpers";import{useCallback as g,useEffect as _,useId as v,useState as y}from"react";import{jsx as b}from"react/jsx-runtime";import{flushSync as x}from"react-dom";var S={light:`sun`,dark:`moon`,auto:`refresh-cw`},C=[`icon`,`segmented`],w={sm:16,md:20,lg:24,xl:28};function T({variant:T=`icon`,effect:E=i,includeAuto:D=!0,storageKey:O=a,duration:k,label:A=`Theme`,lightLabel:j=`Light`,darkLabel:M=`Dark`,autoLabel:N=`System`,name:P,size:F=`md`,tooltipPlacement:I=`auto`,onChange:L,className:R=``,...z}){t(`AppThemeToggle`,z),e(`AppThemeToggle`,`variant`,T,C),e(`AppThemeToggle`,`effect`,E,s),e(`AppThemeToggle`,`size`,F,Object.keys(w));let B=g(e=>e===`auto`&&!D?f(e):e,[D]),[V,H]=y(()=>B(typeof window>`u`?`auto`:d(O))),U=v(),W=P||U;_(()=>{let e=document.documentElement.getAttribute(`data-theme`);c.includes(e)?H(B(e)):l(d(O))},[]),_(()=>{let e=e=>{let t=e.detail?.preference;c.includes(t)&&H(B(t))};return document.addEventListener(o,e),()=>document.removeEventListener(o,e)},[B]),_(()=>h(()=>{document.documentElement.getAttribute(`data-theme`)===`auto`&&l(`auto`)}),[]);let G=g((e,t)=>{let n=t?.getBoundingClientRect?.()??{left:0,top:0,width:0,height:0},r={x:n.left+n.width/2,y:n.top+n.height/2};m(()=>{l(e),p(e,O),x(()=>H(e)),L?.(e)},{effect:E,to:f(e),origin:r,duration:k})},[O,E,k,L]);if(T===`segmented`){let e=[{value:`light`,label:j,icon:S.light},{value:`dark`,label:M,icon:S.dark}];return D&&e.push({value:`auto`,label:N,icon:S.auto}),b(r,{options:e,value:V,name:W,label:A,size:F,className:[`wui-theme-toggle`,`wui-theme-toggle-segmented`,R].filter(Boolean).join(` `),onChange:e=>{if(e===V)return;let t=document.querySelector(`.segmented-input[name="${CSS.escape(W)}"][value="${e}"]`);G(e,t?.closest(`.segmented-option`)??t)}})}return b(n,{icon:S[V],label:`${A}: ${V}`,size:w[F]??w.md,tooltipPlacement:I,onClick:e=>G(u(V,{includeAuto:D}),e.currentTarget),className:[`wui-theme-toggle`,R].filter(Boolean).join(` `)})}export{T as default};
@@ -1 +1 @@
1
- import e from"./warnInvalidValue.js";import t from"./warnUnknownProps.js";import n from"./AppInfoTip.js";import r from"./AppRequiredMark.js";import i from"./useWuiControl.js";import{forwardRef as a,useId as o}from"react";import{jsx as s,jsxs as c}from"react/jsx-runtime";import"@webority/ui-elements/elements/timepicker";var l=[`sm`,`md`,`lg`],u=[`12`,`24`],d=a(function({value:a,onChange:d,label:f,required:p=!1,hint:m,error:h,help:g,helpLabel:_=`More information`,name:v,min:y,max:b,step:x,format:S=`24`,placeholder:C=`Select time`,disabled:w,size:T,id:E,ariaLabel:D,className:O=``,fieldClassName:k=``,...A},j){t(`AppTimePicker`,A),e(`AppTimePicker`,`size`,T,l),e(`AppTimePicker`,`format`,S,u);let M=o(),N=E||v||M,{setRef:P}=i({ref:j,value:a??``,onChange:d}),F=!f&&!h&&!m,I=h?`${N}-error`:void 0,L=m?`${N}-hint`:void 0,R=s(`wui-timepicker`,{ref:P,id:N,name:v,min:y,max:b,step:x==null?void 0:String(x),format:S,placeholder:C,size:T||void 0,"aria-label":D||(typeof f==`string`?f:void 0),"aria-describedby":I||L,"aria-invalid":h?`true`:void 0,disabled:w?``:void 0,required:p?``:void 0,className:O||void 0,...A});return F?R:c(`div`,{className:`field${k?` ${k}`:``}`,children:[f&&c(`label`,{className:`label`,htmlFor:N,children:[f,p&&s(r,{}),g&&s(n,{label:_,children:g})]}),R,h&&s(`div`,{className:`field-error`,id:I,children:h}),!h&&m&&s(`div`,{className:`field-hint`,id:L,children:m})]})});export{d as default};
1
+ import e from"./warnInvalidValue.js";import t from"./warnUnknownProps.js";import n from"../lib/FieldMessage.js";import r from"./AppInfoTip.js";import i from"./AppRequiredMark.js";import a from"./useWuiControl.js";import{forwardRef as o,useId as s}from"react";import{jsx as c,jsxs as l}from"react/jsx-runtime";import"@webority/ui-elements/elements/timepicker";var u=[`sm`,`md`,`lg`],d=[`12`,`24`],f=o(function({value:o,onChange:f,label:p,required:m=!1,hint:h,error:g,help:_,helpLabel:v=`More information`,name:y,min:b,max:x,step:S,format:C=`24`,placeholder:w=`Select time`,disabled:T,size:E,id:D,ariaLabel:O,className:k=``,fieldClassName:A=``,...j},M){t(`AppTimePicker`,j),e(`AppTimePicker`,`size`,E,u),e(`AppTimePicker`,`format`,C,d);let N=s(),P=D||y||N,{setRef:F}=a({ref:M,value:o??``,onChange:f}),I=!p&&!g&&!h,L=g?`${P}-error`:void 0,R=h?`${P}-hint`:void 0,z=c(`wui-timepicker`,{ref:F,id:P,name:y,min:b,max:x,step:S==null?void 0:String(S),format:C,placeholder:w,size:E||void 0,"aria-label":O||(typeof p==`string`?p:void 0),"aria-describedby":L||R,"aria-invalid":g?`true`:void 0,disabled:T?``:void 0,required:m?``:void 0,className:k||void 0,...j});return I?z:l(`div`,{className:`field${A?` ${A}`:``}`,children:[p&&l(`label`,{className:`label`,htmlFor:P,children:[p,m&&c(i,{}),_&&c(r,{label:v,children:_})]}),z,c(n,{error:g,hint:h,errorId:L,hintId:R})]})});export{f as default};
@@ -1 +1 @@
1
- import{forwardRef as e,useId as t}from"react";import{jsx as n,jsxs as r}from"react/jsx-runtime";var i=e(function({label:e,id:i,name:a,error:o,hint:s,className:c=``,rest:l={},inputType:u,wrapperClass:d},f){let p=t(),m=i||p,h=o?`${m}-error`:void 0,g=s?`${m}-hint`:void 0;return r(`div`,{className:`${d}${c?` ${c}`:``}`,children:[n(`input`,{type:u,className:`form-check-input`,id:m,name:a,ref:f,"aria-invalid":o?`true`:`false`,"aria-describedby":h||g,...l}),e!=null&&n(`label`,{className:`form-check-label`,htmlFor:m,children:e}),o?n(`div`,{className:`field-error`,id:h,children:o}):s?n(`div`,{className:`field-hint`,id:g,children:s}):null]})});export{i as default};
1
+ import e from"./FieldMessage.js";import{forwardRef as t,useId as n}from"react";import{jsx as r,jsxs as i}from"react/jsx-runtime";var a=t(function({label:t,id:a,name:o,error:s,hint:c,className:l=``,rest:u={},inputType:d,wrapperClass:f},p){let m=n(),h=a||m,g=s?`${h}-error`:void 0,_=c?`${h}-hint`:void 0;return i(`div`,{className:`${f}${l?` ${l}`:``}`,children:[r(`input`,{type:d,className:`form-check-input`,id:h,name:o,ref:p,"aria-invalid":s?`true`:`false`,"aria-describedby":g||_,...u}),t!=null&&r(`label`,{className:`form-check-label`,htmlFor:h,children:t}),r(e,{error:s,hint:c,errorId:g,hintId:_})]})});export{a as default};
@@ -0,0 +1 @@
1
+ import{useEffect as e,useState as t}from"react";import{jsx as n,jsxs as r}from"react/jsx-runtime";var i=150;function a({error:a,hint:o,errorId:s,hintId:c}){let[l,u]=t(a||null),[d,f]=t(!1);e(()=>{if(a){u(a),f(!1);return}if(!l)return;f(!0);let e=setTimeout(()=>{u(null),f(!1)},i);return()=>clearTimeout(e)},[a,l]);let p=a||l;return r(`div`,{className:`wui-field-message`,children:[o?n(`div`,{className:`field-hint`,id:c,children:o}):null,p?n(`div`,{className:`field-error${a?``:d?` wui-leaving`:``}`,id:a?s:void 0,children:p}):null]})}export{a as default};
@@ -0,0 +1,19 @@
1
+ /**
2
+ * The message line under a field: its hint and its error in one place, the theme hiding the hint
3
+ * while the error shows. The line is kept
4
+ * whether or not anything shows (inside a form), so an error never moves the form. A cleared
5
+ * error keeps its text until its fade-out ends, so there is something to fade.
6
+ * @internal — not exported from the package barrel
7
+ *
8
+ * @param {object} props
9
+ * @param {import('react').ReactNode} [props.error]
10
+ * @param {import('react').ReactNode} [props.hint]
11
+ * @param {string} [props.errorId]
12
+ * @param {string} [props.hintId]
13
+ */
14
+ export default function FieldMessage({ error, hint, errorId, hintId }: {
15
+ error?: import('react').ReactNode;
16
+ hint?: import('react').ReactNode;
17
+ errorId?: string;
18
+ hintId?: string;
19
+ }): import("react").JSX.Element;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webority/ui-react",
3
- "version": "0.73.1",
3
+ "version": "0.75.0",
4
4
  "description": "Webority shared React component library — App* primitives on react-bootstrap + the @webority/theme design system.",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "type": "module",
@@ -27,8 +27,8 @@
27
27
  },
28
28
  "sideEffects": false,
29
29
  "dependencies": {
30
- "@webority/theme": "0.73.1",
31
- "@webority/ui-elements": "0.73.1"
30
+ "@webority/theme": "0.75.0",
31
+ "@webority/ui-elements": "0.75.0"
32
32
  },
33
33
  "peerDependencies": {
34
34
  "@webority/analytics": "^0.23.0",