@ahrowe/ui 0.4.2 → 0.4.3

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.
Files changed (69) hide show
  1. package/dist/esm/common/accordion/accordion.mjs +1 -1
  2. package/dist/esm/common/accordion/accordion.mjs.map +1 -1
  3. package/dist/esm/common/actionButtons/actionButtons.mjs +1 -1
  4. package/dist/esm/common/actionButtons/actionButtons.mjs.map +1 -1
  5. package/dist/esm/common/badge/badge.mjs +1 -1
  6. package/dist/esm/common/badge/badge.mjs.map +1 -1
  7. package/dist/esm/common/button/button.mjs +1 -1
  8. package/dist/esm/common/button/button.mjs.map +1 -1
  9. package/dist/esm/common/card/Card.mjs +1 -1
  10. package/dist/esm/common/card/Card.mjs.map +1 -1
  11. package/dist/esm/common/checkbox/checkbox.mjs +1 -1
  12. package/dist/esm/common/checkbox/checkbox.mjs.map +1 -1
  13. package/dist/esm/common/chip/chip.mjs +1 -1
  14. package/dist/esm/common/chip/chip.mjs.map +1 -1
  15. package/dist/esm/common/configProvider/configProvider.mjs +2 -0
  16. package/dist/esm/common/configProvider/configProvider.mjs.map +1 -0
  17. package/dist/esm/common/configProvider/useComponentDefaults.mjs +2 -0
  18. package/dist/esm/common/configProvider/useComponentDefaults.mjs.map +1 -0
  19. package/dist/esm/common/datePicker/datePicker.mjs +1 -1
  20. package/dist/esm/common/datePicker/datePicker.mjs.map +1 -1
  21. package/dist/esm/common/dropdown/dropdown.mjs +1 -1
  22. package/dist/esm/common/dropdown/dropdown.mjs.map +1 -1
  23. package/dist/esm/common/dropdown/dropdown.module.mjs.map +1 -1
  24. package/dist/esm/common/input/input.mjs +1 -1
  25. package/dist/esm/common/input/input.mjs.map +1 -1
  26. package/dist/esm/common/input/input.module.mjs.map +1 -1
  27. package/dist/esm/common/input/input.types.mjs.map +1 -1
  28. package/dist/esm/common/inputDropdown/inputDropdown.mjs +1 -1
  29. package/dist/esm/common/inputDropdown/inputDropdown.mjs.map +1 -1
  30. package/dist/esm/common/numberInput/numberInput.mjs +1 -1
  31. package/dist/esm/common/numberInput/numberInput.mjs.map +1 -1
  32. package/dist/esm/common/skeleton/skeleton.mjs +1 -1
  33. package/dist/esm/common/skeleton/skeleton.mjs.map +1 -1
  34. package/dist/esm/common/switch/switch.mjs +1 -1
  35. package/dist/esm/common/switch/switch.mjs.map +1 -1
  36. package/dist/esm/common/textarea/textarea.mjs +1 -1
  37. package/dist/esm/common/textarea/textarea.mjs.map +1 -1
  38. package/dist/esm/index.mjs +1 -1
  39. package/dist/index.cjs +4 -4
  40. package/dist/index.cjs.map +1 -1
  41. package/dist/style.css +1 -1
  42. package/dist/types/package/common/accordion/accordion.d.ts +1 -1
  43. package/dist/types/package/common/actionButtons/actionButtons.d.ts +1 -1
  44. package/dist/types/package/common/badge/badge.d.ts +1 -1
  45. package/dist/types/package/common/button/button.d.ts +1 -1
  46. package/dist/types/package/common/card/Card.d.ts +1 -1
  47. package/dist/types/package/common/checkbox/checkbox.d.ts +1 -1
  48. package/dist/types/package/common/chip/chip.d.ts +1 -1
  49. package/dist/types/package/common/configProvider/configProvider.d.ts +5 -0
  50. package/dist/types/package/common/configProvider/configProvider.types.d.ts +52 -0
  51. package/dist/types/package/common/configProvider/index.d.ts +3 -0
  52. package/dist/types/package/common/configProvider/useComponentDefaults.d.ts +17 -0
  53. package/dist/types/package/common/datePicker/datePicker.d.ts +2 -3
  54. package/dist/types/package/common/dropdown/dropdown.d.ts +1 -1
  55. package/dist/types/package/common/dropdown/dropdown.types.d.ts +1 -0
  56. package/dist/types/package/common/input/input.d.ts +1 -1
  57. package/dist/types/package/common/input/input.types.d.ts +1 -0
  58. package/dist/types/package/common/inputDropdown/inputDropdown.d.ts +1 -1
  59. package/dist/types/package/common/numberInput/numberInput.d.ts +2 -2
  60. package/dist/types/package/common/skeleton/skeleton.d.ts +1 -1
  61. package/dist/types/package/common/switch/switch.d.ts +1 -1
  62. package/dist/types/package/common/themeProvider/theme.types.d.ts +2 -0
  63. package/dist/types/package/index.d.ts +2 -0
  64. package/docs/CLAUDE.md +1 -0
  65. package/docs/ConfigProvider.md +81 -0
  66. package/docs/Dropdown.md +1 -0
  67. package/docs/Input.md +1 -0
  68. package/docs/ThemeProvider.md +2 -0
  69. package/package.json +1 -1
@@ -1,2 +1,2 @@
1
- import e from"../tooltip/tooltip.mjs";import t from"./input.module.mjs";import{InputType as n}from"./input.types.mjs";import r,{useCallback as ee,useEffect as i,useId as te,useRef as a,useState as o}from"react";import s from"classnames";import{FontAwesomeIcon as c}from"@fortawesome/react-fontawesome";import{faEnvelope as ne,faEye as re,faEyeSlash as ie,faPen as ae,faPhone as oe,faSearch as se,faXmark as ce}from"@fortawesome/free-solid-svg-icons";import{jsx as l,jsxs as u}from"react/jsx-runtime";function d({name:d=``,id:le,label:f=``,errorMessage:p=``,isValid:ue=!0,className:de=``,style:fe,value:m=``,icon:h=null,onChange:g=()=>{},onFocus:_=null,onBlur:v=null,onMouseEnter:y=null,onMouseLeave:b=null,isUppercase:pe=!1,isRequired:me=!1,tabIndex:he=0,type:x=void 0,isRow:ge=!1,onIconClick:S=null,parse:C=null,formValidator:w=null,autoFocus:T=!1,suffix:E=null,upperRightLabel:D=null,labelInBorder:_e=!1,showCancel:ve=!1,onClearClicked:ye,min:be=null,max:xe=null,placeholder:O=``,useMatLabelStyle:k=!0,autoComplete:Se=null,onClick:Ce=()=>null,readOnly:we=!1,customInput:A,alwaysShowCancel:Te=!1,multiline:j=!1,rows:M,autoResize:N=!1,classNames:P,styles:F,disabled:Ee=!1,...De}){let[I,L]=o(!1),[R,z]=o(!1),[B,Oe]=o(!1),[,ke]=o(0),V=a(null),H=a(w),Ae=te(),U=le||d||Ae,W=ee(()=>{let e=V.current;!e||!N||(e.style.height=`auto`,e.style.height=`${e.scrollHeight}px`)},[N]);i(()=>{W()},[]),i(()=>{T&&V.current&&setTimeout(()=>{V.current?.focus()},1)},[T]),i(()=>{H.current=w;let e=H.current;if(!e)return;e.label=f??``,e.validate();let t=()=>ke(e=>e+1);return e.registerOnUpdateListener(t),()=>{e.removeOnUpdateListener(t)}},[w,f]);let je=()=>w?w.touched&&w.hasError():!ue||!!p,G=()=>!!(me||w&&w.validators.find(e=>e.validatorId===`required`)),Me=e=>{z(!0),y&&y(e)},Ne=e=>{z(!1),b&&b(e)},Pe=e=>{L(!0),_&&_(e)},Fe=e=>{H.current&&(H.current.touched=!0),L(!1),v&&v(e)},Ie=e=>{let t,n;typeof e==`string`?n=e:(t=e,n=e.target.value),C&&(n=C(n)),w&&w.set(n),g&&g(n,t),W()},Le=()=>{if(x!==`email`)return x===`password`&&B?`text`:x},K=x&&x!==n.Date&&x!==n.Iban&&x!==n.HasNoIcon,q=K&&!k&&(x===n.Email||x===n.Phone||x===n.Search),J={className:s(t.inputFieldIcon,{[t.inputFieldIconNotClickable]:!S,[t.inputFieldIconLeft]:q}),onClick:S??void 0},Y=h,Re=Y?r.cloneElement(Y,{className:s(t.inputFieldIcon,{[t.inputFieldIconNotClickable]:!S&&!Y.props.onClick},Y.props.className),onClick:S??Y.props.onClick}):null,ze=!!h,Be={className:s(t.inputFieldIcon,t.inputFieldIconPassword),onClick:()=>Oe(!B)},X=je(),Z=f;Z&&G()&&(Z=`${Z} *`);let Q=w?w.value:m,$=k&&(I||Q||x===n.Date);return u(`div`,{className:s(t.input,de),style:fe,children:[u(`label`,{htmlFor:U,className:s(t.inputLabel,P?.label,{[t.inputLabelColumn]:!ge,[t.inputLabelInBorder]:_e}),style:F?.label,children:[Z&&!k?u(`span`,{className:t.inputLabelText,children:[`${Z} `,G()?l(`span`,{className:s(t.isRequired),children:`\xA0 *`}):null]}):null,D&&l(`div`,{className:s(t.inputUpperRightLabel,P?.upperRightLabel),style:F?.upperRightLabel,children:D}),u(`div`,{className:s(t.inputContainer,{[t.inputContainerMultiline]:j},P?.container),style:F?.container,onMouseEnter:Me,onMouseLeave:Ne,children:[Re,r.cloneElement(A||l(j?`textarea`:`input`,{}),{...De,className:s(t.inputField,{[t.inputFieldUppercase]:pe,[t.inputFieldDate]:x===n.Date,[t.inputFieldDefault]:x!==n.Date,[t.inputFieldWithIcon]:K||ze,[t.inputFieldWithIconLeft]:q,[t.inputFieldMultiline]:j,[t.inputFieldMultilineAutoResize]:j&&N},P?.input),name:d,id:U,value:w?w.value:m,tabIndex:he,ref:A?void 0:V,onChange:Ie,onFocus:Pe,onBlur:Fe,placeholder:k?``:O,autoComplete:Se,onClick:Ce,readOnly:we,disabled:Ee,...!j&&{type:Le(),min:be,max:xe},...j&&M!==void 0&&{rows:M}}),E&&l(`div`,{className:s(t.inputFieldSuffix,P?.suffix),style:F?.suffix,children:E})]}),l(`fieldset`,{className:s(t.inputFieldset,P?.fieldset,{[t.inputContainerBorderFocused]:I,[t.inputContainerBorderSearchFocused]:x===n.Search&&(I||m),[t.inputContainerBorderInvalid]:X,[t.inputContainerBorderError]:X}),style:F?.fieldset,children:l(`legend`,{className:s(t.inputFieldsetLegend,{[t.inputFieldsetLegendActive]:$}),children:l(`span`,{children:Z})})}),k&&f&&l(`div`,{className:s(t.inputMatLabel,{[t.inputMatLabelFloating]:$,[t.inputMatLabelMultiline]:j&&!$}),children:Z}),k&&O&&l(`div`,{className:s(t.inputPlaceholder,I&&!Q&&t.inputPlaceholderShown,j&&t.inputPlaceholderMultiline),children:O}),l(e,{variant:`error`,message:w?w.getCurrentErrorMessage():p||``,isVisible:X&&(I||R)})]}),x===n.Phone&&l(c,{icon:oe,...J}),x===n.Email&&l(c,{icon:ne,...J}),x===n.Edit&&l(c,{icon:ae,...J}),x===n.Search&&l(c,{icon:se,...J}),x===n.Password&&l(c,{icon:B?ie:re,...Be}),(ve&&m&&(I||R)||Te)&&l(c,{icon:ce,className:t.inputFieldIcon,onClick:ye??void 0,onMouseEnter:()=>z(!0),onMouseLeave:()=>z(!1)})]})}export{d as default};
1
+ import{useComponentDefaults as e}from"../configProvider/useComponentDefaults.mjs";import t from"../tooltip/tooltip.mjs";import n from"./input.module.mjs";import{InputType as r}from"./input.types.mjs";import i,{useCallback as ee,useEffect as a,useId as te,useRef as ne,useState as o}from"react";import s from"classnames";import{FontAwesomeIcon as c}from"@fortawesome/react-fontawesome";import{faEnvelope as re,faEye as ie,faEyeSlash as ae,faPen as oe,faPhone as se,faSearch as ce,faXmark as le}from"@fortawesome/free-solid-svg-icons";import{jsx as l,jsxs as u}from"react/jsx-runtime";function d(d){let{name:f=``,id:ue,label:p=``,errorMessage:m=``,isValid:de=!0,className:fe=``,style:pe,value:h=``,icon:g=null,onChange:_=()=>{},onFocus:v=null,onBlur:y=null,onMouseEnter:b=null,onMouseLeave:x=null,isUppercase:me=!1,isRequired:he=!1,tabIndex:ge=0,type:S=void 0,isRow:_e=!1,onIconClick:C=null,parse:w=null,formValidator:T=null,autoFocus:E=!1,suffix:D=null,upperRightLabel:O=null,labelInBorder:ve=!1,showCancel:ye=!1,onClearClicked:be,min:xe=null,max:Se=null,placeholder:k=``,useMatLabelStyle:A=!0,alwaysFloatLabel:Ce=!1,autoComplete:we=null,onClick:Te=()=>null,readOnly:Ee=!1,customInput:j,alwaysShowCancel:De=!1,multiline:M=!1,rows:N,autoResize:P=!1,classNames:F,styles:I,disabled:Oe=!1,...ke}=e(`Input`,d),[L,R]=o(!1),[z,B]=o(!1),[V,Ae]=o(!1),[,je]=o(0),H=ne(null),U=ne(T),Me=te(),W=ue||f||Me,G=ee(()=>{let e=H.current;!e||!P||(e.style.height=`auto`,e.style.height=`${e.scrollHeight}px`)},[P]);a(()=>{G()},[]),a(()=>{E&&H.current&&setTimeout(()=>{H.current?.focus()},1)},[E]),a(()=>{U.current=T;let e=U.current;if(!e)return;e.label=p??``,e.validate();let t=()=>je(e=>e+1);return e.registerOnUpdateListener(t),()=>{e.removeOnUpdateListener(t)}},[T,p]);let Ne=()=>T?T.touched&&T.hasError():!de||!!m,K=()=>!!(he||T&&T.validators.find(e=>e.validatorId===`required`)),Pe=e=>{B(!0),b&&b(e)},Fe=e=>{B(!1),x&&x(e)},Ie=e=>{R(!0),v&&v(e)},Le=e=>{U.current&&(U.current.touched=!0),R(!1),y&&y(e)},Re=e=>{let t,n;typeof e==`string`?n=e:(t=e,n=e.target.value),w&&(n=w(n)),T&&T.set(n),_&&_(n,t),G()},ze=()=>{if(S!==`email`)return S===`password`&&V?`text`:S},q=S&&S!==r.Date&&S!==r.Iban&&S!==r.HasNoIcon,J=q&&!A&&(S===r.Email||S===r.Phone||S===r.Search),Y={className:s(n.inputFieldIcon,{[n.inputFieldIconNotClickable]:!C,[n.inputFieldIconLeft]:J}),onClick:C??void 0},X=g,Be=X?i.cloneElement(X,{className:s(n.inputFieldIcon,{[n.inputFieldIconNotClickable]:!C&&!X.props.onClick},X.props.className),onClick:C??X.props.onClick}):null,Ve=!!g,He={className:s(n.inputFieldIcon,n.inputFieldIconPassword),onClick:()=>Ae(!V)},Z=Ne(),Q=p;Q&&K()&&(Q=`${Q} *`);let Ue=T?T.value:h,$=A&&(Ce||L||Ue||S===r.Date);return u(`div`,{className:s(n.input,fe),style:pe,children:[u(`label`,{htmlFor:W,className:s(n.inputLabel,F?.label,{[n.inputLabelColumn]:!_e,[n.inputLabelInBorder]:ve}),style:I?.label,children:[Q&&!A?u(`span`,{className:n.inputLabelText,children:[`${Q} `,K()?l(`span`,{className:s(n.isRequired),children:`\xA0 *`}):null]}):null,O&&l(`div`,{className:s(n.inputUpperRightLabel,F?.upperRightLabel),style:I?.upperRightLabel,children:O}),u(`div`,{className:s(n.inputContainer,{[n.inputContainerMultiline]:M},F?.container),style:I?.container,onMouseEnter:Pe,onMouseLeave:Fe,children:[Be,i.cloneElement(j||l(M?`textarea`:`input`,{}),{...ke,className:s(n.inputField,{[n.inputFieldUppercase]:me,[n.inputFieldDate]:S===r.Date,[n.inputFieldDefault]:S!==r.Date,[n.inputFieldWithIcon]:q||Ve,[n.inputFieldWithIconLeft]:J,[n.inputFieldMultiline]:M,[n.inputFieldMultilineAutoResize]:M&&P},F?.input),name:f,id:W,value:T?T.value:h,tabIndex:ge,ref:j?void 0:H,onChange:Re,onFocus:Ie,onBlur:Le,placeholder:A?``:k,autoComplete:we,onClick:Te,readOnly:Ee,disabled:Oe,...!M&&{type:ze(),min:xe,max:Se},...M&&N!==void 0&&{rows:N}}),D&&l(`div`,{className:s(n.inputFieldSuffix,F?.suffix),style:I?.suffix,children:D})]}),l(`fieldset`,{className:s(n.inputFieldset,F?.fieldset,{[n.inputContainerBorderFocused]:L,[n.inputContainerBorderSearchFocused]:S===r.Search&&(L||h),[n.inputContainerBorderInvalid]:Z,[n.inputContainerBorderError]:Z}),style:I?.fieldset,children:l(`legend`,{className:s(n.inputFieldsetLegend,{[n.inputFieldsetLegendActive]:$}),children:l(`span`,{children:Q})})}),A&&p&&l(`div`,{className:s(n.inputMatLabel,{[n.inputMatLabelFloating]:$,[n.inputMatLabelMultiline]:M&&!$}),children:Q}),A&&k&&l(`div`,{className:s(n.inputPlaceholder,L&&!Ue&&n.inputPlaceholderShown,M&&n.inputPlaceholderMultiline),children:k}),l(t,{variant:`error`,message:T?T.getCurrentErrorMessage():m||``,isVisible:Z&&(L||z)})]}),S===r.Phone&&l(c,{icon:se,...Y}),S===r.Email&&l(c,{icon:re,...Y}),S===r.Edit&&l(c,{icon:oe,...Y}),S===r.Search&&l(c,{icon:ce,...Y}),S===r.Password&&l(c,{icon:V?ae:ie,...He}),(ye&&h&&(L||z)||De)&&l(c,{icon:le,className:n.inputFieldIcon,onClick:be??void 0,onMouseEnter:()=>B(!0),onMouseLeave:()=>B(!1)})]})}export{d as default};
2
2
  //# sourceMappingURL=input.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"input.mjs","names":[],"sources":["../../../../package/common/input/input.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef, useCallback, useId } from 'react';\nimport cx from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n faPhone,\n faPen,\n faEnvelope,\n faSearch,\n faXmark,\n faEye as passwordHiddenIcon,\n faEyeSlash as passwordShownIcon,\n} from '@fortawesome/free-solid-svg-icons';\nimport Tooltip from 'components/common/tooltip';\nimport styles from './input.module.pcss';\nimport type { InputProps } from './input.types';\nimport { InputType } from './input.types';\n\nfunction Input({\n name = '',\n id,\n label = '',\n errorMessage = '',\n isValid = true,\n className = '',\n style,\n value = '',\n icon = null,\n onChange = () => {},\n onFocus: onFocusProp = null,\n onBlur: onBlurProp = null,\n onMouseEnter: onMouseEnterProp = null,\n onMouseLeave: onMouseLeaveProp = null,\n isUppercase = false,\n isRequired = false,\n tabIndex = 0,\n type = undefined,\n isRow = false,\n onIconClick = null,\n parse = null,\n formValidator = null,\n autoFocus = false,\n suffix = null,\n upperRightLabel = null,\n labelInBorder = false,\n showCancel = false,\n onClearClicked,\n min = null,\n max = null,\n placeholder = '',\n useMatLabelStyle = true,\n autoComplete = null,\n onClick = () => null,\n readOnly = false,\n customInput,\n alwaysShowCancel = false,\n multiline = false,\n rows,\n autoResize = false,\n classNames,\n styles: slotStyles,\n disabled = false,\n ...rest\n}: InputProps) {\n const [isFocused, setIsFocused] = useState(false);\n const [isHovered, setIsHovered] = useState(false);\n const [isPasswordShown, setIsPasswordShown] = useState(false);\n const [, forceUpdate] = useState(0);\n\n const inputRef = useRef<HTMLInputElement | HTMLTextAreaElement>(null);\n const fvRef = useRef(formValidator);\n\n const generatedId = useId();\n const inputId = id || name || generatedId;\n\n const resizeTextarea = useCallback(() => {\n const el = inputRef.current;\n if (!el || !autoResize) return;\n el.style.height = 'auto';\n el.style.height = `${el.scrollHeight}px`;\n }, [autoResize]);\n\n useEffect(() => {\n resizeTextarea();\n }, []);\n\n useEffect(() => {\n if (autoFocus && inputRef.current) {\n setTimeout(() => { inputRef.current?.focus(); }, 1);\n }\n }, [autoFocus]);\n\n useEffect(() => {\n fvRef.current = formValidator;\n const fv = fvRef.current;\n if (!fv) return;\n fv.label = label ?? '';\n fv.validate();\n const listener = () => forceUpdate(n => n + 1);\n fv.registerOnUpdateListener(listener);\n return () => { fv.removeOnUpdateListener(listener); };\n }, [formValidator, label]);\n\n const hasError = (): boolean => {\n return formValidator\n ? (formValidator.touched && formValidator.hasError())\n : (!isValid || !!errorMessage);\n };\n\n const computedIsRequired = (): boolean => {\n return !!(isRequired || (formValidator && formValidator.validators.find(\n (v) => (v as { validatorId?: string }).validatorId === 'required'\n )));\n };\n\n const onMouseEnterHandler = (event: React.MouseEvent) => {\n setIsHovered(true);\n if (onMouseEnterProp) onMouseEnterProp(event);\n };\n\n const onMouseLeaveHandler = (event: React.MouseEvent) => {\n setIsHovered(false);\n if (onMouseLeaveProp) onMouseLeaveProp(event);\n };\n\n const onFocusHandler = (event: React.FocusEvent) => {\n setIsFocused(true);\n if (onFocusProp) onFocusProp(event);\n };\n\n const onBlurHandler = (event: React.FocusEvent) => {\n if (fvRef.current) fvRef.current.touched = true;\n setIsFocused(false);\n if (onBlurProp) onBlurProp(event);\n };\n\n const onChangeHandler = (event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement> | string): void => {\n let parsedEvent: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement> | undefined;\n let val: string;\n\n if (typeof event !== 'string') {\n parsedEvent = event;\n val = event.target.value;\n } else {\n val = event;\n }\n\n if (parse) val = parse(val);\n if (formValidator) formValidator.set(val);\n if (onChange) onChange(val, parsedEvent);\n resizeTextarea();\n };\n\n const getInputType = (): string | undefined => {\n if (type === 'email') return undefined;\n if (type === 'password' && isPasswordShown) return 'text';\n return type;\n };\n\n const hasIcon =\n type &&\n type !== InputType.Date &&\n type !== InputType.Iban &&\n type !== InputType.HasNoIcon;\n\n const hasIconLeft =\n hasIcon && !useMatLabelStyle &&\n (type === InputType.Email || type === InputType.Phone || type === InputType.Search);\n\n const iconProps = {\n className: cx(styles.inputFieldIcon, {\n [styles.inputFieldIconNotClickable]: !onIconClick,\n [styles.inputFieldIconLeft]: hasIconLeft,\n }),\n onClick: onIconClick ?? undefined,\n };\n\n const customIcon = icon as React.ReactElement<{ className?: string; onClick?: React.MouseEventHandler }> | null;\n const renderedIcon = customIcon\n ? React.cloneElement(customIcon, {\n className: cx(\n styles.inputFieldIcon,\n { [styles.inputFieldIconNotClickable]: !onIconClick && !customIcon.props.onClick },\n customIcon.props.className,\n ),\n onClick: onIconClick ?? customIcon.props.onClick,\n })\n : null;\n const hasCustomIcon = !!icon;\n\n const passwordIconProps = {\n className: cx(styles.inputFieldIcon, styles.inputFieldIconPassword),\n onClick: () => setIsPasswordShown(!isPasswordShown),\n };\n\n const hasErr = hasError();\n\n let editedLabel = label;\n if (editedLabel && computedIsRequired()) editedLabel = `${editedLabel} *`;\n\n const currVal = formValidator ? formValidator.value : value;\n const shouldFloatLabel = useMatLabelStyle && (isFocused || currVal || type === InputType.Date);\n\n return (\n <div className={cx(styles.input, className)} style={style}>\n <label\n htmlFor={inputId}\n className={cx(styles.inputLabel, classNames?.label, {\n [styles.inputLabelColumn]: !isRow,\n [styles.inputLabelInBorder]: labelInBorder,\n })}\n style={slotStyles?.label}\n >\n {editedLabel && !useMatLabelStyle ? (\n <span className={styles.inputLabelText}>\n {`${editedLabel} `}\n {computedIsRequired() ? <span className={cx(styles.isRequired)}>&nbsp; *</span> : null}\n </span>\n ) : null}\n {upperRightLabel && (\n <div className={cx(styles.inputUpperRightLabel, classNames?.upperRightLabel)} style={slotStyles?.upperRightLabel}>\n {upperRightLabel}\n </div>\n )}\n <div\n className={cx(styles.inputContainer, { [styles.inputContainerMultiline]: multiline }, classNames?.container)}\n style={slotStyles?.container}\n onMouseEnter={onMouseEnterHandler}\n onMouseLeave={onMouseLeaveHandler}\n >\n {renderedIcon}\n {React.cloneElement(customInput || (multiline ? <textarea /> : <input />), {\n ...rest,\n className: cx(\n styles.inputField,\n {\n [styles.inputFieldUppercase]: isUppercase,\n [styles.inputFieldDate]: type === InputType.Date,\n [styles.inputFieldDefault]: type !== InputType.Date,\n [styles.inputFieldWithIcon]: hasIcon || hasCustomIcon,\n [styles.inputFieldWithIconLeft]: hasIconLeft,\n [styles.inputFieldMultiline]: multiline,\n [styles.inputFieldMultilineAutoResize]: multiline && autoResize,\n },\n classNames?.input\n ),\n name,\n id: inputId,\n value: formValidator ? formValidator.value : value,\n tabIndex,\n ref: customInput ? undefined : inputRef,\n onChange: onChangeHandler,\n onFocus: onFocusHandler,\n onBlur: onBlurHandler,\n placeholder: !useMatLabelStyle ? placeholder : '',\n autoComplete,\n onClick,\n readOnly,\n disabled,\n ...(!multiline && { type: getInputType(), min, max }),\n ...(multiline && rows !== undefined && { rows }),\n })}\n {suffix && <div className={cx(styles.inputFieldSuffix, classNames?.suffix)} style={slotStyles?.suffix}>{suffix}</div>}\n </div>\n <fieldset\n className={cx(styles.inputFieldset, classNames?.fieldset, {\n [styles.inputContainerBorderFocused]: isFocused,\n [styles.inputContainerBorderSearchFocused]:\n type === InputType.Search && (isFocused || value),\n [styles.inputContainerBorderInvalid]: hasErr,\n [styles.inputContainerBorderError]: hasErr,\n })}\n style={slotStyles?.fieldset}\n >\n <legend\n className={cx(styles.inputFieldsetLegend, {\n [styles.inputFieldsetLegendActive]: shouldFloatLabel,\n })}\n >\n <span>{editedLabel}</span>\n </legend>\n </fieldset>\n {useMatLabelStyle && label && (\n <div\n className={cx(styles.inputMatLabel, {\n [styles.inputMatLabelFloating]: shouldFloatLabel,\n [styles.inputMatLabelMultiline]: multiline && !shouldFloatLabel,\n })}\n >\n {editedLabel}\n </div>\n )}\n {useMatLabelStyle && placeholder && (\n <div\n className={cx(\n styles.inputPlaceholder,\n isFocused && !currVal && styles.inputPlaceholderShown,\n multiline && styles.inputPlaceholderMultiline,\n )}\n >\n {placeholder}\n </div>\n )}\n <Tooltip\n variant=\"error\"\n message={formValidator ? formValidator.getCurrentErrorMessage() : (errorMessage || '')}\n isVisible={hasErr && (isFocused || isHovered)}\n />\n </label>\n\n {type === InputType.Phone && <FontAwesomeIcon icon={faPhone} {...iconProps} />}\n {type === InputType.Email && <FontAwesomeIcon icon={faEnvelope} {...iconProps} />}\n {type === InputType.Edit && <FontAwesomeIcon icon={faPen} {...iconProps} />}\n {type === InputType.Search && <FontAwesomeIcon icon={faSearch} {...iconProps} />}\n {type === InputType.Password && (\n <FontAwesomeIcon\n icon={isPasswordShown ? passwordShownIcon : passwordHiddenIcon}\n {...passwordIconProps}\n />\n )}\n\n {((showCancel && value && (isFocused || isHovered)) || alwaysShowCancel) && (\n <FontAwesomeIcon\n icon={faXmark}\n className={styles.inputFieldIcon}\n onClick={onClearClicked ?? undefined}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n />\n )}\n </div>\n );\n}\n\nexport default Input;\n"],"mappings":"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"}
1
+ {"version":3,"file":"input.mjs","names":[],"sources":["../../../../package/common/input/input.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef, useCallback, useId } from 'react';\nimport cx from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n faPhone,\n faPen,\n faEnvelope,\n faSearch,\n faXmark,\n faEye as passwordHiddenIcon,\n faEyeSlash as passwordShownIcon,\n} from '@fortawesome/free-solid-svg-icons';\nimport Tooltip from 'components/common/tooltip';\nimport { useComponentDefaults } from 'components/common/configProvider';\nimport styles from './input.module.pcss';\nimport type { InputProps } from './input.types';\nimport { InputType } from './input.types';\n\nfunction Input(props: InputProps) {\n const {\n name = '',\n id,\n label = '',\n errorMessage = '',\n isValid = true,\n className = '',\n style,\n value = '',\n icon = null,\n onChange = () => {},\n onFocus: onFocusProp = null,\n onBlur: onBlurProp = null,\n onMouseEnter: onMouseEnterProp = null,\n onMouseLeave: onMouseLeaveProp = null,\n isUppercase = false,\n isRequired = false,\n tabIndex = 0,\n type = undefined,\n isRow = false,\n onIconClick = null,\n parse = null,\n formValidator = null,\n autoFocus = false,\n suffix = null,\n upperRightLabel = null,\n labelInBorder = false,\n showCancel = false,\n onClearClicked,\n min = null,\n max = null,\n placeholder = '',\n useMatLabelStyle = true,\n alwaysFloatLabel = false,\n autoComplete = null,\n onClick = () => null,\n readOnly = false,\n customInput,\n alwaysShowCancel = false,\n multiline = false,\n rows,\n autoResize = false,\n classNames,\n styles: slotStyles,\n disabled = false,\n ...rest\n } = useComponentDefaults('Input', props);\n const [isFocused, setIsFocused] = useState(false);\n const [isHovered, setIsHovered] = useState(false);\n const [isPasswordShown, setIsPasswordShown] = useState(false);\n const [, forceUpdate] = useState(0);\n\n const inputRef = useRef<HTMLInputElement | HTMLTextAreaElement>(null);\n const fvRef = useRef(formValidator);\n\n const generatedId = useId();\n const inputId = id || name || generatedId;\n\n const resizeTextarea = useCallback(() => {\n const el = inputRef.current;\n if (!el || !autoResize) return;\n el.style.height = 'auto';\n el.style.height = `${el.scrollHeight}px`;\n }, [autoResize]);\n\n useEffect(() => {\n resizeTextarea();\n }, []);\n\n useEffect(() => {\n if (autoFocus && inputRef.current) {\n setTimeout(() => { inputRef.current?.focus(); }, 1);\n }\n }, [autoFocus]);\n\n useEffect(() => {\n fvRef.current = formValidator;\n const fv = fvRef.current;\n if (!fv) return;\n fv.label = label ?? '';\n fv.validate();\n const listener = () => forceUpdate(n => n + 1);\n fv.registerOnUpdateListener(listener);\n return () => { fv.removeOnUpdateListener(listener); };\n }, [formValidator, label]);\n\n const hasError = (): boolean => {\n return formValidator\n ? (formValidator.touched && formValidator.hasError())\n : (!isValid || !!errorMessage);\n };\n\n const computedIsRequired = (): boolean => {\n return !!(isRequired || (formValidator && formValidator.validators.find(\n (v) => (v as { validatorId?: string }).validatorId === 'required'\n )));\n };\n\n const onMouseEnterHandler = (event: React.MouseEvent) => {\n setIsHovered(true);\n if (onMouseEnterProp) onMouseEnterProp(event);\n };\n\n const onMouseLeaveHandler = (event: React.MouseEvent) => {\n setIsHovered(false);\n if (onMouseLeaveProp) onMouseLeaveProp(event);\n };\n\n const onFocusHandler = (event: React.FocusEvent) => {\n setIsFocused(true);\n if (onFocusProp) onFocusProp(event);\n };\n\n const onBlurHandler = (event: React.FocusEvent) => {\n if (fvRef.current) fvRef.current.touched = true;\n setIsFocused(false);\n if (onBlurProp) onBlurProp(event);\n };\n\n const onChangeHandler = (event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement> | string): void => {\n let parsedEvent: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement> | undefined;\n let val: string;\n\n if (typeof event !== 'string') {\n parsedEvent = event;\n val = event.target.value;\n } else {\n val = event;\n }\n\n if (parse) val = parse(val);\n if (formValidator) formValidator.set(val);\n if (onChange) onChange(val, parsedEvent);\n resizeTextarea();\n };\n\n const getInputType = (): string | undefined => {\n if (type === 'email') return undefined;\n if (type === 'password' && isPasswordShown) return 'text';\n return type;\n };\n\n const hasIcon =\n type &&\n type !== InputType.Date &&\n type !== InputType.Iban &&\n type !== InputType.HasNoIcon;\n\n const hasIconLeft =\n hasIcon && !useMatLabelStyle &&\n (type === InputType.Email || type === InputType.Phone || type === InputType.Search);\n\n const iconProps = {\n className: cx(styles.inputFieldIcon, {\n [styles.inputFieldIconNotClickable]: !onIconClick,\n [styles.inputFieldIconLeft]: hasIconLeft,\n }),\n onClick: onIconClick ?? undefined,\n };\n\n const customIcon = icon as React.ReactElement<{ className?: string; onClick?: React.MouseEventHandler }> | null;\n const renderedIcon = customIcon\n ? React.cloneElement(customIcon, {\n className: cx(\n styles.inputFieldIcon,\n { [styles.inputFieldIconNotClickable]: !onIconClick && !customIcon.props.onClick },\n customIcon.props.className,\n ),\n onClick: onIconClick ?? customIcon.props.onClick,\n })\n : null;\n const hasCustomIcon = !!icon;\n\n const passwordIconProps = {\n className: cx(styles.inputFieldIcon, styles.inputFieldIconPassword),\n onClick: () => setIsPasswordShown(!isPasswordShown),\n };\n\n const hasErr = hasError();\n\n let editedLabel = label;\n if (editedLabel && computedIsRequired()) editedLabel = `${editedLabel} *`;\n\n const currVal = formValidator ? formValidator.value : value;\n const shouldFloatLabel = useMatLabelStyle && (alwaysFloatLabel || isFocused || currVal || type === InputType.Date);\n\n return (\n <div className={cx(styles.input, className)} style={style}>\n <label\n htmlFor={inputId}\n className={cx(styles.inputLabel, classNames?.label, {\n [styles.inputLabelColumn]: !isRow,\n [styles.inputLabelInBorder]: labelInBorder,\n })}\n style={slotStyles?.label}\n >\n {editedLabel && !useMatLabelStyle ? (\n <span className={styles.inputLabelText}>\n {`${editedLabel} `}\n {computedIsRequired() ? <span className={cx(styles.isRequired)}>&nbsp; *</span> : null}\n </span>\n ) : null}\n {upperRightLabel && (\n <div className={cx(styles.inputUpperRightLabel, classNames?.upperRightLabel)} style={slotStyles?.upperRightLabel}>\n {upperRightLabel}\n </div>\n )}\n <div\n className={cx(styles.inputContainer, { [styles.inputContainerMultiline]: multiline }, classNames?.container)}\n style={slotStyles?.container}\n onMouseEnter={onMouseEnterHandler}\n onMouseLeave={onMouseLeaveHandler}\n >\n {renderedIcon}\n {React.cloneElement(customInput || (multiline ? <textarea /> : <input />), {\n ...rest,\n className: cx(\n styles.inputField,\n {\n [styles.inputFieldUppercase]: isUppercase,\n [styles.inputFieldDate]: type === InputType.Date,\n [styles.inputFieldDefault]: type !== InputType.Date,\n [styles.inputFieldWithIcon]: hasIcon || hasCustomIcon,\n [styles.inputFieldWithIconLeft]: hasIconLeft,\n [styles.inputFieldMultiline]: multiline,\n [styles.inputFieldMultilineAutoResize]: multiline && autoResize,\n },\n classNames?.input\n ),\n name,\n id: inputId,\n value: formValidator ? formValidator.value : value,\n tabIndex,\n ref: customInput ? undefined : inputRef,\n onChange: onChangeHandler,\n onFocus: onFocusHandler,\n onBlur: onBlurHandler,\n placeholder: !useMatLabelStyle ? placeholder : '',\n autoComplete,\n onClick,\n readOnly,\n disabled,\n ...(!multiline && { type: getInputType(), min, max }),\n ...(multiline && rows !== undefined && { rows }),\n })}\n {suffix && <div className={cx(styles.inputFieldSuffix, classNames?.suffix)} style={slotStyles?.suffix}>{suffix}</div>}\n </div>\n <fieldset\n className={cx(styles.inputFieldset, classNames?.fieldset, {\n [styles.inputContainerBorderFocused]: isFocused,\n [styles.inputContainerBorderSearchFocused]:\n type === InputType.Search && (isFocused || value),\n [styles.inputContainerBorderInvalid]: hasErr,\n [styles.inputContainerBorderError]: hasErr,\n })}\n style={slotStyles?.fieldset}\n >\n <legend\n className={cx(styles.inputFieldsetLegend, {\n [styles.inputFieldsetLegendActive]: shouldFloatLabel,\n })}\n >\n <span>{editedLabel}</span>\n </legend>\n </fieldset>\n {useMatLabelStyle && label && (\n <div\n className={cx(styles.inputMatLabel, {\n [styles.inputMatLabelFloating]: shouldFloatLabel,\n [styles.inputMatLabelMultiline]: multiline && !shouldFloatLabel,\n })}\n >\n {editedLabel}\n </div>\n )}\n {useMatLabelStyle && placeholder && (\n <div\n className={cx(\n styles.inputPlaceholder,\n isFocused && !currVal && styles.inputPlaceholderShown,\n multiline && styles.inputPlaceholderMultiline,\n )}\n >\n {placeholder}\n </div>\n )}\n <Tooltip\n variant=\"error\"\n message={formValidator ? formValidator.getCurrentErrorMessage() : (errorMessage || '')}\n isVisible={hasErr && (isFocused || isHovered)}\n />\n </label>\n\n {type === InputType.Phone && <FontAwesomeIcon icon={faPhone} {...iconProps} />}\n {type === InputType.Email && <FontAwesomeIcon icon={faEnvelope} {...iconProps} />}\n {type === InputType.Edit && <FontAwesomeIcon icon={faPen} {...iconProps} />}\n {type === InputType.Search && <FontAwesomeIcon icon={faSearch} {...iconProps} />}\n {type === InputType.Password && (\n <FontAwesomeIcon\n icon={isPasswordShown ? passwordShownIcon : passwordHiddenIcon}\n {...passwordIconProps}\n />\n )}\n\n {((showCancel && value && (isFocused || isHovered)) || alwaysShowCancel) && (\n <FontAwesomeIcon\n icon={faXmark}\n className={styles.inputFieldIcon}\n onClick={onClearClicked ?? undefined}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n />\n )}\n </div>\n );\n}\n\nexport default Input;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"input.module.mjs","names":[],"sources":["../../../../package/common/input/input.module.pcss"],"sourcesContent":["\n.required-mark {\n padding: 0px 0px 0px 4px;\n color: var(--error-font-color);\n}\n\n.isRequired {\n color: var(--message-error-color);\n}\n\n.input {\n position: relative;\n width: 100%;\n --input-notch-height: 1.75em;\n\n &-placeholder {\n position: absolute;\n top: 50%;\n left: 7px;\n transform: translateY(-50%);\n transition: all 0.2s;\n opacity: 0;\n user-select: none;\n pointer-events: none;\n\n &-shown {\n animation: 0.2s fadeIn 0.3s forwards;\n }\n\n &-multiline {\n top: 14px;\n transform: translateY(0);\n }\n }\n\n &-matLabel {\n position: absolute;\n transition: all 0.3s;\n left: 7px;\n right: 0;\n top: 50%;\n transform: translateY(-50%);\n font-size: 1em;\n pointer-events: none;\n user-select: none;\n\n &-floating {\n top: 0;\n bottom: auto;\n left: 14px;\n right: 0;\n font-size: 0.8em;\n transform: translateY(-50%);\n }\n\n &-multiline {\n top: 14px;\n transform: translateY(0);\n }\n }\n\n &-fieldset {\n position: absolute;\n width: 100%;\n margin: 0;\n padding: 0;\n min-width: 0;\n box-sizing: border-box;\n border-radius: var(--default-border-radius);\n font-size: 0.8em;\n inset: calc(var(--input-notch-height) / -2) 0 0 0;\n padding-left: 8px;\n border-width: 1px;\n border-style: solid;\n border-color: var(--border-color);\n pointer-events: none;\n user-select: none;\n\n &-legend {\n display: block;\n max-width: 0;\n transition: max-width 0.2s;\n white-space: nowrap;\n padding: 0;\n\n &-active {\n max-width: 300px;\n }\n\n span {\n line-height: var(--input-notch-height);\n padding: 0 5px;\n opacity: 0;\n }\n\n span:empty {\n padding: 0.000001px;\n }\n }\n }\n\n &-container {\n display: flex;\n align-items: center;\n border-radius: var(--default-border-radius);\n background-color: var(--input-background);\n transition: border-color;\n cursor: text;\n height: 100%;\n\n &-multiline {\n overflow: hidden;\n padding-top: 10px;\n align-items: flex-start;\n }\n\n &-border {\n outline: 1px solid var(--border-color);\n transition: border-color;\n background-color: var(--input-background);\n outline: none;\n\n &-focused {\n outline-color: var(--primary-color);\n border-color: var(--primary-color);\n }\n\n &-searchFocused {\n outline-color: var(--search-input-color);\n outline-width: 2px;\n border-color: var(--search-input-color);\n }\n\n &-invalid {\n outline-color: var(--error-border-color);\n border-color: var(--error-border-color);\n }\n\n &-invalid:hover {\n outline-color: var(--error-border-color);\n border-color: var(--error-border-color);\n }\n\n &-error {\n outline-color: var(--error-border-color);\n border-color: var(--error-border-color);\n }\n }\n }\n\n &-label {\n display: flex;\n color: var(--text-color);\n height: 100%;\n\n &-column {\n flex-direction: column;\n }\n\n &-text {\n white-space: nowrap;\n margin-right: 5px;\n margin-bottom: 6px;\n display: flex;\n align-items: center;\n color: color(var(--border-color) lightness(40%));\n background-color: transparent;\n font-size: 12px;\n position: absolute;\n top: -15px;\n white-space: nowrap;\n }\n }\n\n &-upper-right-label {\n position: absolute;\n transform: translateY(calc(-100% - 1.5px));\n right: 8px;\n min-height: 12px;\n font-size: 12px;\n color: color(var(--border-color) lightness(40%));\n }\n\n &-field {\n appearance: none;\n -webkit-appearance: none;\n font-family: inherit;\n font-size: inherit;\n box-sizing: border-box;\n resize: none;\n width: 100%;\n border: none;\n border-radius: var(--default-border-radius);\n overflow: hidden;\n line-height: 1.25;\n color: var(--text-color);\n background: transparent;\n\n &:focus {\n outline: none;\n }\n\n &::placeholder {\n color: var(--text-light);\n }\n\n &-withIcon {\n padding-right: 37px !important;\n\n &-left {\n padding-right: 9px !important;\n padding-left: 37px !important;\n }\n }\n\n &-suffix {\n padding-right: 9px;\n }\n\n &-date {\n padding: 6px 9px;\n color-scheme: dark;\n\n svg {\n color: white;\n }\n }\n\n &-default {\n padding: 8px 7.5px 6px;\n }\n\n &[disabled] {\n background-color: var(--disabled-input-color);\n color: var(--disabled-font-color);\n -webkit-text-fill-color: var(--disabled-font-color);\n opacity: 1;\n\n &::placeholder {\n color: var(--disabled-font-color);\n -webkit-text-fill-color: var(--disabled-font-color);\n }\n }\n\n &-uppercase {\n text-transform: uppercase;\n }\n\n &-multiline {\n overflow-y: auto;\n resize: vertical;\n padding-top: 4px;\n min-height: 30px;\n\n &-autoResize {\n resize: none;\n overflow: hidden;\n }\n }\n\n &-icon {\n appearance: none;\n -webkit-appearance: none;\n box-sizing: border-box;\n cursor: pointer;\n background-color: transparent;\n border: none;\n position: absolute;\n outline: none;\n right: 10px;\n top: 8px;\n color: var(--input-icon-color);\n width: 19px !important;\n height: 19px !important;\n user-select: none;\n top: 50%;\n transform: translateY(-50%);\n\n &-left {\n left: 10px;\n }\n\n &-notClickable {\n pointer-events: none;\n }\n }\n }\n\n &-error {\n height: 1em;\n padding-top: 3px;\n color: var(--error-font-color);\n font-size: 11px;\n }\n\n @keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 0.5;\n }\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"input.module.mjs","names":[],"sources":["../../../../package/common/input/input.module.pcss"],"sourcesContent":["\n.required-mark {\n padding: 0px 0px 0px 4px;\n color: var(--error-font-color);\n}\n\n.isRequired {\n color: var(--message-error-color);\n}\n\n.input {\n position: relative;\n width: 100%;\n --input-notch-height: 1.75em;\n\n &-placeholder {\n position: absolute;\n top: 50%;\n left: 7px;\n transform: translateY(-50%);\n transition: all 0.2s;\n opacity: 0;\n user-select: none;\n pointer-events: none;\n\n &-shown {\n animation: 0.2s fadeIn 0.3s forwards;\n }\n\n &-multiline {\n top: 14px;\n transform: translateY(0);\n }\n }\n\n &-matLabel {\n position: absolute;\n transition: all 0.3s;\n left: 7px;\n right: 0;\n top: 50%;\n transform: translateY(-50%);\n font-size: 1em;\n color: var(--input-label-resting-color, var(--text-light));\n pointer-events: none;\n user-select: none;\n\n &-floating {\n top: 0;\n bottom: auto;\n left: 14px;\n right: 0;\n font-size: 0.8em;\n color: var(--input-label-floating-color, var(--text-color));\n transform: translateY(-50%);\n }\n\n &-multiline {\n top: 14px;\n transform: translateY(0);\n }\n }\n\n &-fieldset {\n position: absolute;\n width: 100%;\n margin: 0;\n padding: 0;\n min-width: 0;\n box-sizing: border-box;\n border-radius: var(--default-border-radius);\n font-size: 0.8em;\n inset: calc(var(--input-notch-height) / -2) 0 0 0;\n padding-left: 8px;\n border-width: 1px;\n border-style: solid;\n border-color: var(--border-color);\n pointer-events: none;\n user-select: none;\n\n &-legend {\n display: block;\n max-width: 0;\n transition: max-width 0.2s;\n white-space: nowrap;\n padding: 0;\n\n &-active {\n max-width: 300px;\n }\n\n span {\n line-height: var(--input-notch-height);\n padding: 0 5px;\n opacity: 0;\n }\n\n span:empty {\n padding: 0.000001px;\n }\n }\n }\n\n &-container {\n display: flex;\n align-items: center;\n border-radius: var(--default-border-radius);\n background-color: var(--input-background);\n transition: border-color;\n cursor: text;\n height: 100%;\n\n &-multiline {\n overflow: hidden;\n padding-top: 10px;\n align-items: flex-start;\n }\n\n &-border {\n outline: 1px solid var(--border-color);\n transition: border-color;\n background-color: var(--input-background);\n outline: none;\n\n &-focused {\n outline-color: var(--primary-color);\n border-color: var(--primary-color);\n }\n\n &-searchFocused {\n outline-color: var(--search-input-color);\n outline-width: 2px;\n border-color: var(--search-input-color);\n }\n\n &-invalid {\n outline-color: var(--error-border-color);\n border-color: var(--error-border-color);\n }\n\n &-invalid:hover {\n outline-color: var(--error-border-color);\n border-color: var(--error-border-color);\n }\n\n &-error {\n outline-color: var(--error-border-color);\n border-color: var(--error-border-color);\n }\n }\n }\n\n &-label {\n display: flex;\n color: var(--text-color);\n height: 100%;\n\n &-column {\n flex-direction: column;\n }\n\n &-text {\n white-space: nowrap;\n margin-right: 5px;\n margin-bottom: 6px;\n display: flex;\n align-items: center;\n color: color(var(--border-color) lightness(40%));\n background-color: transparent;\n font-size: 12px;\n position: absolute;\n top: -15px;\n white-space: nowrap;\n }\n }\n\n &-upper-right-label {\n position: absolute;\n transform: translateY(calc(-100% - 1.5px));\n right: 8px;\n min-height: 12px;\n font-size: 12px;\n color: color(var(--border-color) lightness(40%));\n }\n\n &-field {\n appearance: none;\n -webkit-appearance: none;\n font-family: inherit;\n font-size: inherit;\n box-sizing: border-box;\n resize: none;\n width: 100%;\n border: none;\n border-radius: var(--default-border-radius);\n overflow: hidden;\n line-height: 1.25;\n color: var(--text-color);\n background: transparent;\n\n &:focus {\n outline: none;\n }\n\n &::placeholder {\n color: var(--text-light);\n }\n\n &-withIcon {\n padding-right: 37px !important;\n\n &-left {\n padding-right: 9px !important;\n padding-left: 37px !important;\n }\n }\n\n &-suffix {\n padding-right: 9px;\n }\n\n &-date {\n padding: 6px 9px;\n color-scheme: dark;\n\n svg {\n color: white;\n }\n }\n\n &-default {\n padding: 8px 7.5px 6px;\n }\n\n &[disabled] {\n background-color: var(--disabled-input-color);\n color: var(--disabled-font-color);\n -webkit-text-fill-color: var(--disabled-font-color);\n opacity: 1;\n\n &::placeholder {\n color: var(--disabled-font-color);\n -webkit-text-fill-color: var(--disabled-font-color);\n }\n }\n\n &-uppercase {\n text-transform: uppercase;\n }\n\n &-multiline {\n overflow-y: auto;\n resize: vertical;\n padding-top: 4px;\n min-height: 30px;\n\n &-autoResize {\n resize: none;\n overflow: hidden;\n }\n }\n\n &-icon {\n appearance: none;\n -webkit-appearance: none;\n box-sizing: border-box;\n cursor: pointer;\n background-color: transparent;\n border: none;\n position: absolute;\n outline: none;\n right: 10px;\n top: 8px;\n color: var(--input-icon-color);\n width: 19px !important;\n height: 19px !important;\n user-select: none;\n top: 50%;\n transform: translateY(-50%);\n\n &-left {\n left: 10px;\n }\n\n &-notClickable {\n pointer-events: none;\n }\n }\n }\n\n &-error {\n height: 1em;\n padding-top: 3px;\n color: var(--error-font-color);\n font-size: 11px;\n }\n\n @keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 0.5;\n }\n }\n}\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"input.types.mjs","names":[],"sources":["../../../../package/common/input/input.types.ts"],"sourcesContent":["import React from 'react';\nimport FormValidator from 'services/formValidation/formValidator';\nimport type { SlotClassNames, SlotStyles, HtmlProps } from '../types/slots.types';\n\nexport enum InputType {\n Edit = 'edit',\n Phone = 'phone',\n Email = 'email',\n Iban = 'iban',\n Date = 'date',\n HasNoIcon = 'hasNoIcon',\n Search = 'searchInput',\n Password = 'password',\n}\n\nexport type InputSlots = 'label' | 'container' | 'input' | 'suffix' | 'upperRightLabel' | 'fieldset';\n\ntype OverriddenInputAttributes =\n | 'onChange'\n | 'onFocus'\n | 'onBlur'\n | 'onMouseEnter'\n | 'onMouseLeave'\n | 'onClick'\n | 'type'\n | 'value'\n | 'min'\n | 'max'\n | 'autoComplete';\n\nexport interface InputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, OverriddenInputAttributes>,\n HtmlProps {\n onMouseEnter?: ((event: React.MouseEvent) => void) | null;\n onMouseLeave?: ((event: React.MouseEvent) => void) | null;\n onFocus?: ((event: React.FocusEvent) => void) | null;\n onBlur?: ((event: React.FocusEvent) => void) | null;\n onChange?: ((value: string, event?: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement, Element>) => void) | null;\n errorMessage?: string;\n isValid?: boolean;\n isRequired?: boolean;\n label?: string;\n name?: string;\n className?: string;\n style?: React.CSSProperties;\n value?: string | number;\n icon?: React.ReactElement | null;\n isUppercase?: boolean;\n isRow?: boolean;\n tabIndex?: number;\n type?: InputType;\n onIconClick?: (() => void) | null;\n parse?: ((value: string) => string) | null;\n suffix?: string | React.ReactNode;\n disabled?: boolean;\n upperRightLabel?: string | React.ReactNode;\n labelInBorder?: boolean;\n showCancel?: boolean;\n onClearClicked?: (() => void) | null;\n min?: string | number | null;\n max?: string | number | null;\n placeholder?: string;\n useMatLabelStyle?: boolean;\n autoComplete?: string | null;\n onClick?: (() => void) | null;\n readOnly?: boolean;\n customInput?: React.ReactElement | null;\n autoFocus?: boolean;\n alwaysShowCancel?: boolean;\n formValidator?: FormValidator | null;\n multiline?: boolean;\n rows?: number;\n autoResize?: boolean;\n classNames?: SlotClassNames<InputSlots>;\n styles?: SlotStyles<InputSlots>;\n}\n"],"mappings":"AAIA,IAAY,EAAL,SAAA,EAAA,OACL,GAAA,KAAA,OACA,EAAA,MAAA,QACA,EAAA,MAAA,QACA,EAAA,KAAA,OACA,EAAA,KAAA,OACA,EAAA,UAAA,YACA,EAAA,OAAA,cACA,EAAA,SAAA,YACF,EAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"input.types.mjs","names":[],"sources":["../../../../package/common/input/input.types.ts"],"sourcesContent":["import React from 'react';\nimport FormValidator from 'services/formValidation/formValidator';\nimport type { SlotClassNames, SlotStyles, HtmlProps } from '../types/slots.types';\n\nexport enum InputType {\n Edit = 'edit',\n Phone = 'phone',\n Email = 'email',\n Iban = 'iban',\n Date = 'date',\n HasNoIcon = 'hasNoIcon',\n Search = 'searchInput',\n Password = 'password',\n}\n\nexport type InputSlots = 'label' | 'container' | 'input' | 'suffix' | 'upperRightLabel' | 'fieldset';\n\ntype OverriddenInputAttributes =\n | 'onChange'\n | 'onFocus'\n | 'onBlur'\n | 'onMouseEnter'\n | 'onMouseLeave'\n | 'onClick'\n | 'type'\n | 'value'\n | 'min'\n | 'max'\n | 'autoComplete';\n\nexport interface InputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, OverriddenInputAttributes>,\n HtmlProps {\n onMouseEnter?: ((event: React.MouseEvent) => void) | null;\n onMouseLeave?: ((event: React.MouseEvent) => void) | null;\n onFocus?: ((event: React.FocusEvent) => void) | null;\n onBlur?: ((event: React.FocusEvent) => void) | null;\n onChange?: ((value: string, event?: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement, Element>) => void) | null;\n errorMessage?: string;\n isValid?: boolean;\n isRequired?: boolean;\n label?: string;\n name?: string;\n className?: string;\n style?: React.CSSProperties;\n value?: string | number;\n icon?: React.ReactElement | null;\n isUppercase?: boolean;\n isRow?: boolean;\n tabIndex?: number;\n type?: InputType;\n onIconClick?: (() => void) | null;\n parse?: ((value: string) => string) | null;\n suffix?: string | React.ReactNode;\n disabled?: boolean;\n upperRightLabel?: string | React.ReactNode;\n labelInBorder?: boolean;\n showCancel?: boolean;\n onClearClicked?: (() => void) | null;\n min?: string | number | null;\n max?: string | number | null;\n placeholder?: string;\n useMatLabelStyle?: boolean;\n alwaysFloatLabel?: boolean;\n autoComplete?: string | null;\n onClick?: (() => void) | null;\n readOnly?: boolean;\n customInput?: React.ReactElement | null;\n autoFocus?: boolean;\n alwaysShowCancel?: boolean;\n formValidator?: FormValidator | null;\n multiline?: boolean;\n rows?: number;\n autoResize?: boolean;\n classNames?: SlotClassNames<InputSlots>;\n styles?: SlotStyles<InputSlots>;\n}\n"],"mappings":"AAIA,IAAY,EAAL,SAAA,EAAA,OACL,GAAA,KAAA,OACA,EAAA,MAAA,QACA,EAAA,MAAA,QACA,EAAA,KAAA,OACA,EAAA,KAAA,OACA,EAAA,UAAA,YACA,EAAA,OAAA,cACA,EAAA,SAAA,YACF,EAAA,CAAA,CAAA"}
@@ -1,2 +1,2 @@
1
- import e from"../bodyEnd/bodyEnd.mjs";import{useFloatingPosition as t}from"../floatingMenu/useFloatingPosition.mjs";import n from"../input/input.mjs";import r from"./inputDropdown.module.mjs";import{useCallback as i,useRef as a,useState as o}from"react";import s from"classnames";import{jsx as c,jsxs as l}from"react/jsx-runtime";function u(e,t){return t?t.value??``:e??``}function d(e,t){let n=t.find(t=>t.value===e);return n?n.label??n.value:e}function f({label:f=``,value:p=``,formValidator:m=null,items:h=[],allowCustomValue:g=!1,className:_,style:v,classNames:y,styles:b,onSelect:x=()=>null,onChange:S,placeholder:C=``,...w}){let T=u(p,m),[E,D]=o(()=>d(T,h)),[O,k]=o(T),[A,j]=o(!1),[M,N]=o(null),P=a(null),F=a(null),I=a(null);if(t({isOpen:A,triggerRef:F,anchorRef:I,panelRef:I,flipClassName:r.dropdownFlip}),T!==O){k(T);let e=h.find(e=>e.value===T);e?D(e.label??e.value):g&&D(T)}let L=h.filter(e=>(e.label??e.value).toLowerCase().includes(E.toLowerCase())),R=()=>{P.current&&=(clearTimeout(P.current),null),j(!0)},z=()=>{P.current=setTimeout(()=>{j(!1),P.current=null,g||D(d(T,h))},100)},B=i(e=>{D(e.label??e.value),j(!1),N(null),m&&m.set(e.value),S&&S(e.value),x(e.value)},[m,S,x]),V=i(e=>{e.key===`ArrowUp`?(e.preventDefault(),N(e=>e?e-1:null)):e.key===`ArrowDown`?(e.preventDefault(),N(e=>e===null?0:Math.min(e+1,L.length-1))):e.key===`Enter`&&(M!==null&&L[M]?B(L[M]):g&&(j(!1),N(null)))},[L,M,B,g]);return l(`div`,{...w,ref:F,className:s(r.inputDropdown,y?.root,_),style:{...b?.root,...v},onFocus:R,onBlur:z,onKeyDown:V,children:[c(n,{label:f,value:E,onChange:e=>{if(D(e),N(null),j(!0),g)m&&m.set(e),S&&S(e);else if(e===``)m&&m.set(``),S&&S(``),x(``);else{let t=h.find(t=>(t.label??t.value).toLowerCase()===e.toLowerCase());t&&(m&&m.set(t.value),S&&S(t.value),x(t.value))}},placeholder:C}),A&&c(e,{children:c(`div`,{ref:I,className:s(r.dropdown,r.dropdownShown,y?.dropdown),style:b?.dropdown,children:c(`div`,{className:r.dropdownScroll,children:L.map((e,t)=>c(`div`,{className:s(r.dropdownItem,M===t&&r.dropdownItemHighlighted,y?.item),style:b?.item,onMouseDown:e=>e.preventDefault(),onClick:()=>B(e),children:e.label??e.value},`${t}_${e.label}_${e.value}`))})})})]})}export{f as default};
1
+ import{useComponentDefaults as e}from"../configProvider/useComponentDefaults.mjs";import t from"../bodyEnd/bodyEnd.mjs";import{useFloatingPosition as n}from"../floatingMenu/useFloatingPosition.mjs";import r from"../input/input.mjs";import i from"./inputDropdown.module.mjs";import{useCallback as a,useRef as o,useState as s}from"react";import c from"classnames";import{jsx as l,jsxs as u}from"react/jsx-runtime";function d(e,t){return t?t.value??``:e??``}function f(e,t){let n=t.find(t=>t.value===e);return n?n.label??n.value:e}function p(p){let{label:m=``,value:h=``,formValidator:g=null,items:_=[],allowCustomValue:v=!1,className:y,style:b,classNames:x,styles:S,onSelect:C=()=>null,onChange:w,placeholder:T=``,...E}=e(`InputDropdown`,p),D=d(h,g),[O,k]=s(()=>f(D,_)),[A,j]=s(D),[M,N]=s(!1),[P,F]=s(null),I=o(null),L=o(null),R=o(null);if(n({isOpen:M,triggerRef:L,anchorRef:R,panelRef:R,flipClassName:i.dropdownFlip}),D!==A){j(D);let e=_.find(e=>e.value===D);e?k(e.label??e.value):v&&k(D)}let z=_.filter(e=>(e.label??e.value).toLowerCase().includes(O.toLowerCase())),B=()=>{I.current&&=(clearTimeout(I.current),null),N(!0)},V=()=>{I.current=setTimeout(()=>{N(!1),I.current=null,v||k(f(D,_))},100)},H=a(e=>{k(e.label??e.value),N(!1),F(null),g&&g.set(e.value),w&&w(e.value),C(e.value)},[g,w,C]),U=a(e=>{e.key===`ArrowUp`?(e.preventDefault(),F(e=>e?e-1:null)):e.key===`ArrowDown`?(e.preventDefault(),F(e=>e===null?0:Math.min(e+1,z.length-1))):e.key===`Enter`&&(P!==null&&z[P]?H(z[P]):v&&(N(!1),F(null)))},[z,P,H,v]);return u(`div`,{...E,ref:L,className:c(i.inputDropdown,x?.root,y),style:{...S?.root,...b},onFocus:B,onBlur:V,onKeyDown:U,children:[l(r,{label:m,value:O,onChange:e=>{if(k(e),F(null),N(!0),v)g&&g.set(e),w&&w(e);else if(e===``)g&&g.set(``),w&&w(``),C(``);else{let t=_.find(t=>(t.label??t.value).toLowerCase()===e.toLowerCase());t&&(g&&g.set(t.value),w&&w(t.value),C(t.value))}},placeholder:T}),M&&l(t,{children:l(`div`,{ref:R,className:c(i.dropdown,i.dropdownShown,x?.dropdown),style:S?.dropdown,children:l(`div`,{className:i.dropdownScroll,children:z.map((e,t)=>l(`div`,{className:c(i.dropdownItem,P===t&&i.dropdownItemHighlighted,x?.item),style:S?.item,onMouseDown:e=>e.preventDefault(),onClick:()=>H(e),children:e.label??e.value},`${t}_${e.label}_${e.value}`))})})})]})}export{p as default};
2
2
  //# sourceMappingURL=inputDropdown.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"inputDropdown.mjs","names":[],"sources":["../../../../package/common/inputDropdown/inputDropdown.tsx"],"sourcesContent":["import React, { useCallback, useRef, useState } from 'react';\nimport cx from 'classnames';\nimport BodyEnd from 'components/common/bodyEnd';\nimport styles from './inputDropdown.module.pcss';\nimport Input from '../input';\nimport { useFloatingPosition } from '../floatingMenu/useFloatingPosition';\nimport type { InputDropdownItem, InputDropdownProps } from './inputDropdown.types';\n\nfunction getKeyFromProps(value: string | undefined, formValidator: InputDropdownProps['formValidator']): string {\n return formValidator ? (formValidator.value as string) ?? '' : (value ?? '');\n}\n\nfunction labelForKey(key: string, items: InputDropdownItem[]): string {\n const match = items.find((item) => item.value === key);\n return match ? (match.label ?? match.value) : key;\n}\n\nexport default function InputDropdown({\n label = '',\n value = '',\n formValidator = null,\n items = [],\n allowCustomValue = false,\n className,\n style,\n classNames,\n styles: slotStyles,\n onSelect = () => null,\n onChange,\n placeholder = '',\n ...rest\n}: InputDropdownProps) {\n const currentKey = getKeyFromProps(value, formValidator);\n\n const [inputText, setInputText] = useState(() => labelForKey(currentKey, items));\n const [prevKey, setPrevKey] = useState(currentKey);\n const [isMenuShown, setIsMenuShown] = useState(false);\n const [highlightedIndex, setHighlightedIndex] = useState<number | null>(null);\n const hideTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const triggerRef = useRef<HTMLDivElement>(null);\n const anchorRef = useRef<HTMLDivElement>(null);\n\n useFloatingPosition({\n isOpen: isMenuShown,\n triggerRef,\n anchorRef,\n panelRef: anchorRef,\n flipClassName: styles.dropdownFlip,\n });\n\n // Sync display text when the controlled key changes externally (e.g. parent reset).\n if (currentKey !== prevKey) {\n setPrevKey(currentKey);\n const match = items.find((item) => item.value === currentKey);\n if (match) setInputText(match.label ?? match.value);\n else if (allowCustomValue) setInputText(currentKey);\n }\n\n const currItems = items.filter((item) =>\n (item.label ?? item.value).toLowerCase().includes(inputText.toLowerCase())\n );\n\n const handleFocus = () => {\n if (hideTimeoutRef.current) {\n clearTimeout(hideTimeoutRef.current);\n hideTimeoutRef.current = null;\n }\n setIsMenuShown(true);\n };\n\n const handleBlur = () => {\n hideTimeoutRef.current = setTimeout(() => {\n setIsMenuShown(false);\n hideTimeoutRef.current = null;\n // Without custom values, uncommitted typed text is invalid — snap the\n // display back to the currently selected item's label.\n if (!allowCustomValue) setInputText(labelForKey(currentKey, items));\n }, 100);\n };\n\n const handleSelect = useCallback((item: InputDropdownItem) => {\n setInputText(item.label ?? item.value);\n setIsMenuShown(false);\n setHighlightedIndex(null);\n if (formValidator) formValidator.set(item.value);\n if (onChange) onChange(item.value);\n onSelect(item.value);\n }, [formValidator, onChange, onSelect]);\n\n const onKeyDown = useCallback((event: React.KeyboardEvent) => {\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n setHighlightedIndex((idx) => (!idx ? null : idx - 1));\n } else if (event.key === 'ArrowDown') {\n event.preventDefault();\n setHighlightedIndex((idx) =>\n idx === null ? 0 : Math.min(idx + 1, currItems.length - 1)\n );\n } else if (event.key === 'Enter') {\n if (highlightedIndex !== null && currItems[highlightedIndex]) {\n handleSelect(currItems[highlightedIndex]);\n } else if (allowCustomValue) {\n setIsMenuShown(false);\n setHighlightedIndex(null);\n }\n }\n }, [currItems, highlightedIndex, handleSelect, allowCustomValue]);\n\n return (\n <div\n {...rest}\n ref={triggerRef}\n className={cx(styles.inputDropdown, classNames?.root, className)}\n style={{ ...slotStyles?.root, ...style }}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={onKeyDown}\n >\n <Input\n label={label}\n value={inputText}\n onChange={(text) => {\n setInputText(text);\n setHighlightedIndex(null);\n setIsMenuShown(true);\n if (allowCustomValue) {\n if (formValidator) formValidator.set(text);\n if (onChange) onChange(text);\n } else if (text === '') {\n if (formValidator) formValidator.set('');\n if (onChange) onChange('');\n onSelect('');\n } else {\n // Emit when the typed text exactly matches an item's label/value.\n const match = items.find(\n (item) => (item.label ?? item.value).toLowerCase() === text.toLowerCase()\n );\n if (match) {\n if (formValidator) formValidator.set(match.value);\n if (onChange) onChange(match.value);\n onSelect(match.value);\n }\n }\n }}\n placeholder={placeholder}\n />\n {isMenuShown && (\n <BodyEnd>\n <div\n ref={anchorRef}\n className={cx(styles.dropdown, styles.dropdownShown, classNames?.dropdown)}\n style={slotStyles?.dropdown}\n >\n <div className={styles.dropdownScroll}>\n {currItems.map((item, key) => (\n <div\n key={`${key}_${item.label}_${item.value}`}\n className={cx(\n styles.dropdownItem,\n highlightedIndex === key && styles.dropdownItemHighlighted,\n classNames?.item\n )}\n style={slotStyles?.item}\n // Prevent the input from blurring before the click resolves.\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => handleSelect(item)}\n >\n {item.label ?? item.value}\n </div>\n ))}\n </div>\n </div>\n </BodyEnd>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"inputDropdown.mjs","names":[],"sources":["../../../../package/common/inputDropdown/inputDropdown.tsx"],"sourcesContent":["import React, { useCallback, useRef, useState } from 'react';\nimport cx from 'classnames';\nimport BodyEnd from 'components/common/bodyEnd';\nimport styles from './inputDropdown.module.pcss';\nimport Input from '../input';\nimport { useFloatingPosition } from '../floatingMenu/useFloatingPosition';\nimport { useComponentDefaults } from '../configProvider';\nimport type { InputDropdownItem, InputDropdownProps } from './inputDropdown.types';\n\nfunction getKeyFromProps(value: string | undefined, formValidator: InputDropdownProps['formValidator']): string {\n return formValidator ? (formValidator.value as string) ?? '' : (value ?? '');\n}\n\nfunction labelForKey(key: string, items: InputDropdownItem[]): string {\n const match = items.find((item) => item.value === key);\n return match ? (match.label ?? match.value) : key;\n}\n\nexport default function InputDropdown(props: InputDropdownProps) {\n const {\n label = '',\n value = '',\n formValidator = null,\n items = [],\n allowCustomValue = false,\n className,\n style,\n classNames,\n styles: slotStyles,\n onSelect = () => null,\n onChange,\n placeholder = '',\n ...rest\n } = useComponentDefaults('InputDropdown', props);\n const currentKey = getKeyFromProps(value, formValidator);\n\n const [inputText, setInputText] = useState(() => labelForKey(currentKey, items));\n const [prevKey, setPrevKey] = useState(currentKey);\n const [isMenuShown, setIsMenuShown] = useState(false);\n const [highlightedIndex, setHighlightedIndex] = useState<number | null>(null);\n const hideTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const triggerRef = useRef<HTMLDivElement>(null);\n const anchorRef = useRef<HTMLDivElement>(null);\n\n useFloatingPosition({\n isOpen: isMenuShown,\n triggerRef,\n anchorRef,\n panelRef: anchorRef,\n flipClassName: styles.dropdownFlip,\n });\n\n // Sync display text when the controlled key changes externally (e.g. parent reset).\n if (currentKey !== prevKey) {\n setPrevKey(currentKey);\n const match = items.find((item) => item.value === currentKey);\n if (match) setInputText(match.label ?? match.value);\n else if (allowCustomValue) setInputText(currentKey);\n }\n\n const currItems = items.filter((item) =>\n (item.label ?? item.value).toLowerCase().includes(inputText.toLowerCase())\n );\n\n const handleFocus = () => {\n if (hideTimeoutRef.current) {\n clearTimeout(hideTimeoutRef.current);\n hideTimeoutRef.current = null;\n }\n setIsMenuShown(true);\n };\n\n const handleBlur = () => {\n hideTimeoutRef.current = setTimeout(() => {\n setIsMenuShown(false);\n hideTimeoutRef.current = null;\n // Without custom values, uncommitted typed text is invalid — snap the\n // display back to the currently selected item's label.\n if (!allowCustomValue) setInputText(labelForKey(currentKey, items));\n }, 100);\n };\n\n const handleSelect = useCallback((item: InputDropdownItem) => {\n setInputText(item.label ?? item.value);\n setIsMenuShown(false);\n setHighlightedIndex(null);\n if (formValidator) formValidator.set(item.value);\n if (onChange) onChange(item.value);\n onSelect(item.value);\n }, [formValidator, onChange, onSelect]);\n\n const onKeyDown = useCallback((event: React.KeyboardEvent) => {\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n setHighlightedIndex((idx) => (!idx ? null : idx - 1));\n } else if (event.key === 'ArrowDown') {\n event.preventDefault();\n setHighlightedIndex((idx) =>\n idx === null ? 0 : Math.min(idx + 1, currItems.length - 1)\n );\n } else if (event.key === 'Enter') {\n if (highlightedIndex !== null && currItems[highlightedIndex]) {\n handleSelect(currItems[highlightedIndex]);\n } else if (allowCustomValue) {\n setIsMenuShown(false);\n setHighlightedIndex(null);\n }\n }\n }, [currItems, highlightedIndex, handleSelect, allowCustomValue]);\n\n return (\n <div\n {...rest}\n ref={triggerRef}\n className={cx(styles.inputDropdown, classNames?.root, className)}\n style={{ ...slotStyles?.root, ...style }}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={onKeyDown}\n >\n <Input\n label={label}\n value={inputText}\n onChange={(text) => {\n setInputText(text);\n setHighlightedIndex(null);\n setIsMenuShown(true);\n if (allowCustomValue) {\n if (formValidator) formValidator.set(text);\n if (onChange) onChange(text);\n } else if (text === '') {\n if (formValidator) formValidator.set('');\n if (onChange) onChange('');\n onSelect('');\n } else {\n // Emit when the typed text exactly matches an item's label/value.\n const match = items.find(\n (item) => (item.label ?? item.value).toLowerCase() === text.toLowerCase()\n );\n if (match) {\n if (formValidator) formValidator.set(match.value);\n if (onChange) onChange(match.value);\n onSelect(match.value);\n }\n }\n }}\n placeholder={placeholder}\n />\n {isMenuShown && (\n <BodyEnd>\n <div\n ref={anchorRef}\n className={cx(styles.dropdown, styles.dropdownShown, classNames?.dropdown)}\n style={slotStyles?.dropdown}\n >\n <div className={styles.dropdownScroll}>\n {currItems.map((item, key) => (\n <div\n key={`${key}_${item.label}_${item.value}`}\n className={cx(\n styles.dropdownItem,\n highlightedIndex === key && styles.dropdownItemHighlighted,\n classNames?.item\n )}\n style={slotStyles?.item}\n // Prevent the input from blurring before the click resolves.\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => handleSelect(item)}\n >\n {item.label ?? item.value}\n </div>\n ))}\n </div>\n </div>\n </BodyEnd>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import e from"../interactableDiv/index.mjs";import t from"../input/input.mjs";import n from"./numberInput.module.mjs";import"react";import r from"classnames";import{FontAwesomeIcon as i}from"@fortawesome/react-fontawesome";import{faChevronDown as a,faChevronUp as o}from"@fortawesome/free-solid-svg-icons";import{jsx as s,jsxs as c}from"react/jsx-runtime";import{NumericFormat as l}from"react-number-format";function u({value:u,onChange:d,formValidator:f,label:p,error:m,className:h,allowNegative:g=!1,decimalSeparator:_,thousandSeparator:v,prefix:y,suffix:b,decimalScale:x,placeholder:S,sign:C,showArrows:w=!1,step:T=1,onKeyDown:E,...D}){let O=f==null?u:f.value,k=C!=null&&O!=null?Math.abs(Number(O)):O,A=k==null?``:String(k);function j(e){let t=e;t!==void 0&&(C===`-`&&(t=-Math.abs(t)),C===`+`&&(t=Math.abs(t))),f?.set(t??null),d?.(t)}function M(e){let t=(O!=null&&O!==``?Number(O):0)+e;!g&&C!==`-`&&(t=Math.max(0,t)),C===`-`&&(t=Math.min(0,t)),j(t)}function N(e){if(e.key===`ArrowUp`){e.preventDefault(),M(e.shiftKey?T*10:T);return}if(e.key===`ArrowDown`){e.preventDefault(),M(e.shiftKey?-T*10:-T);return}E?.(e)}let P=C===`-`?`-`:C===`+`?`+`:y,F=w?c(`div`,{className:n.arrows,children:[s(e,{className:n.arrowBtn,tabIndex:-1,onMouseDown:e=>{e.preventDefault(),M(e.shiftKey?T*10:T)},children:s(i,{icon:o})}),s(e,{className:n.arrowBtn,tabIndex:-1,onMouseDown:e=>{e.preventDefault(),M(e.shiftKey?-T*10:-T)},children:s(i,{icon:a})})]}):null;return s(t,{label:p,className:r(n.numberInput,h),value:A,onChange:()=>{},formValidator:null,isValid:f?f.touched?!f.hasError():!0:!m,errorMessage:f?f.getCurrentErrorMessage()??``:m??``,placeholder:S,suffix:F,customInput:s(l,{onValueChange:e=>j(e.floatValue),allowNegative:C==null?g:!1,decimalSeparator:_,thousandSeparator:v,decimalScale:x,fixedDecimalScale:!0,prefix:P,suffix:b,onKeyDown:w?N:E,...D})})}export{u as default};
1
+ import{useComponentDefaults as e}from"../configProvider/useComponentDefaults.mjs";import t from"../interactableDiv/index.mjs";import n from"../input/input.mjs";import r from"./numberInput.module.mjs";import"react";import i from"classnames";import{FontAwesomeIcon as a}from"@fortawesome/react-fontawesome";import{faChevronDown as o,faChevronUp as s}from"@fortawesome/free-solid-svg-icons";import{jsx as c,jsxs as l}from"react/jsx-runtime";import{NumericFormat as u}from"react-number-format";function d(d){let{value:f,onChange:p,formValidator:m,label:h,error:g,className:_,allowNegative:v=!1,decimalSeparator:y,thousandSeparator:b,prefix:x,suffix:S,decimalScale:C,placeholder:w,sign:T,showArrows:E=!1,step:D=1,onKeyDown:O,...k}=e(`NumberInput`,d),A=m==null?f:m.value,j=T!=null&&A!=null?Math.abs(Number(A)):A,M=j==null?``:String(j);function N(e){let t=e;t!==void 0&&(T===`-`&&(t=-Math.abs(t)),T===`+`&&(t=Math.abs(t))),m?.set(t??null),p?.(t)}function P(e){let t=(A!=null&&A!==``?Number(A):0)+e;!v&&T!==`-`&&(t=Math.max(0,t)),T===`-`&&(t=Math.min(0,t)),N(t)}function F(e){if(e.key===`ArrowUp`){e.preventDefault(),P(e.shiftKey?D*10:D);return}if(e.key===`ArrowDown`){e.preventDefault(),P(e.shiftKey?-D*10:-D);return}O?.(e)}let I=T===`-`?`-`:T===`+`?`+`:x,L=E?l(`div`,{className:r.arrows,children:[c(t,{className:r.arrowBtn,tabIndex:-1,onMouseDown:e=>{e.preventDefault(),P(e.shiftKey?D*10:D)},children:c(a,{icon:s})}),c(t,{className:r.arrowBtn,tabIndex:-1,onMouseDown:e=>{e.preventDefault(),P(e.shiftKey?-D*10:-D)},children:c(a,{icon:o})})]}):null;return c(n,{label:h,className:i(r.numberInput,_),value:M,onChange:()=>{},formValidator:null,isValid:m?m.touched?!m.hasError():!0:!g,errorMessage:m?m.getCurrentErrorMessage()??``:g??``,placeholder:w,suffix:L,customInput:c(u,{onValueChange:e=>N(e.floatValue),allowNegative:T==null?v:!1,decimalSeparator:y,thousandSeparator:b,decimalScale:C,fixedDecimalScale:!0,prefix:I,suffix:S,onKeyDown:E?F:O,...k})})}export{d as default};
2
2
  //# sourceMappingURL=numberInput.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"numberInput.mjs","names":[],"sources":["../../../../package/common/numberInput/numberInput.tsx"],"sourcesContent":["import type { ReactElement } from 'react';\nimport React from 'react';\nimport cx from 'classnames';\nimport { NumericFormat, NumericFormatProps } from 'react-number-format';\nimport type FormValidator from 'services/formValidation/formValidator';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faChevronUp, faChevronDown } from '@fortawesome/free-solid-svg-icons';\n\nimport styles from './numberInput.module.pcss';\nimport Input from '../input';\nimport InteractableDiv from '../interactableDiv';\n\ninterface Properties\n extends Omit<NumericFormatProps, 'onValueChange' | 'value' | 'customInput' | 'onChange' | 'step' | 'onKeyDown'> {\n value?: number | string;\n onChange?: (value: number | undefined) => void;\n formValidator?: FormValidator | null;\n label?: string;\n error?: string;\n className?: string;\n allowNegative?: boolean;\n decimalSeparator?: string;\n thousandSeparator?: string | boolean;\n prefix?: string;\n suffix?: string;\n decimalScale?: number;\n placeholder?: string;\n sign?: '+' | '-';\n showArrows?: boolean;\n step?: number;\n onKeyDown?: (e: React.KeyboardEvent<HTMLInputElement>) => void;\n}\n\nfunction NumberInput({\n value,\n onChange,\n formValidator,\n label,\n error,\n className,\n allowNegative = false,\n decimalSeparator,\n thousandSeparator,\n prefix,\n suffix,\n decimalScale,\n placeholder,\n sign,\n showArrows = false,\n step = 1,\n onKeyDown: onKeyDownProp,\n ...rest\n}: Properties): ReactElement {\n const rawValue = formValidator != null ? formValidator.value as number | string : value;\n // When a sign is forced, display the absolute value — the prefix character carries the sign visually.\n const displayValue = sign != null && rawValue != null ? Math.abs(Number(rawValue)) : rawValue;\n const controlledValue = displayValue != null ? String(displayValue) : '';\n\n function handleValueChange(floatValue: number | undefined) {\n let out = floatValue;\n if (out !== undefined) {\n if (sign === '-') out = -Math.abs(out);\n if (sign === '+') out = Math.abs(out);\n }\n if (formValidator != null) formValidator.set(out ?? null);\n onChange?.(out);\n }\n\n function handleStep(delta: number) {\n const current = rawValue != null && rawValue !== '' ? Number(rawValue) : 0;\n let next = current + delta;\n if (!allowNegative && sign !== '-') next = Math.max(0, next);\n if (sign === '-') next = Math.min(0, next);\n handleValueChange(next);\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n if (e.key === 'ArrowUp') {\n e.preventDefault();\n handleStep(e.shiftKey ? step * 10 : step);\n return;\n }\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n handleStep(e.shiftKey ? -step * 10 : -step);\n return;\n }\n onKeyDownProp?.(e);\n }\n\n const resolvedPrefix = sign === '-' ? '-' : sign === '+' ? '+' : prefix;\n\n const arrowSuffix = showArrows ? (\n <div className={styles.arrows}>\n <InteractableDiv\n className={styles.arrowBtn}\n tabIndex={-1}\n onMouseDown={(e) => { e.preventDefault(); handleStep(e.shiftKey ? step * 10 : step); }}\n >\n <FontAwesomeIcon icon={faChevronUp} />\n </InteractableDiv>\n <InteractableDiv\n className={styles.arrowBtn}\n tabIndex={-1}\n onMouseDown={(e) => { e.preventDefault(); handleStep(e.shiftKey ? -step * 10 : -step); }}\n >\n <FontAwesomeIcon icon={faChevronDown} />\n </InteractableDiv>\n </div>\n ) : null;\n\n return (\n <Input\n label={label}\n className={cx(styles.numberInput, className)}\n value={controlledValue}\n onChange={() => {}}\n formValidator={null}\n isValid={formValidator ? (formValidator.touched ? !formValidator.hasError() : true) : !error}\n errorMessage={formValidator ? (formValidator.getCurrentErrorMessage() ?? '') : (error ?? '')}\n placeholder={placeholder}\n suffix={arrowSuffix}\n customInput={\n <NumericFormat\n onValueChange={(vals) => handleValueChange(vals.floatValue)}\n allowNegative={sign != null ? false : allowNegative}\n decimalSeparator={decimalSeparator}\n thousandSeparator={thousandSeparator}\n decimalScale={decimalScale}\n fixedDecimalScale\n prefix={resolvedPrefix}\n suffix={suffix}\n onKeyDown={showArrows ? handleKeyDown : onKeyDownProp}\n {...rest}\n />\n }\n />\n );\n}\n\nexport default NumberInput;\n"],"mappings":"wZAiCA,SAAS,EAAY,CACnB,QACA,WACA,gBACA,QACA,QACA,YACA,gBAAgB,GAChB,mBACA,oBACA,SACA,SACA,eACA,cACA,OACA,aAAa,GACb,OAAO,EACP,UAAW,EACX,GAAG,GACwB,CAC3B,IAAM,EAAW,GAAiB,KAAgD,EAAzC,EAAc,MAEjD,EAAe,GAAQ,MAAQ,GAAY,KAAO,KAAK,IAAI,OAAO,CAAQ,CAAC,EAAI,EAC/E,EAAkB,GAAgB,KAA8B,GAAvB,OAAO,CAAY,EAElE,SAAS,EAAkB,EAAgC,CACzD,IAAI,EAAM,EACN,IAAQ,IAAA,KACN,IAAS,MAAK,EAAM,CAAC,KAAK,IAAI,CAAG,GACjC,IAAS,MAAK,EAAO,KAAK,IAAI,CAAG,IAEnC,GAAqC,IAAI,GAAO,IAAI,EACxD,IAAW,CAAG,CAChB,CAEA,SAAS,EAAW,EAAe,CAEjC,IAAI,GADY,GAAY,MAAQ,IAAa,GAAK,OAAO,CAAQ,EAAI,GACpD,EACjB,CAAC,GAAiB,IAAS,MAAK,EAAO,KAAK,IAAI,EAAG,CAAI,GACvD,IAAS,MAAK,EAAO,KAAK,IAAI,EAAG,CAAI,GACzC,EAAkB,CAAI,CACxB,CAEA,SAAS,EAAc,EAA0C,CAC/D,GAAI,EAAE,MAAQ,UAAW,CACvB,EAAE,eAAe,EACjB,EAAW,EAAE,SAAW,EAAO,GAAK,CAAI,EACxC,MACF,CACA,GAAI,EAAE,MAAQ,YAAa,CACzB,EAAE,eAAe,EACjB,EAAW,EAAE,SAAW,CAAC,EAAO,GAAK,CAAC,CAAI,EAC1C,MACF,CACA,IAAgB,CAAC,CACnB,CAEA,IAAM,EAAiB,IAAS,IAAM,IAAM,IAAS,IAAM,IAAM,EAE3D,EAAc,EAClB,EAAC,MAAD,CAAK,UAAW,EAAO,gBAAvB,CACE,EAAC,EAAD,CACE,UAAW,EAAO,SAClB,SAAU,GACV,YAAc,GAAM,CAAE,EAAE,eAAe,EAAG,EAAW,EAAE,SAAW,EAAO,GAAK,CAAI,CAAG,WAErF,EAAC,EAAD,CAAiB,KAAM,CAAc,CAAA,CACtB,CAAA,EACjB,EAAC,EAAD,CACE,UAAW,EAAO,SAClB,SAAU,GACV,YAAc,GAAM,CAAE,EAAE,eAAe,EAAG,EAAW,EAAE,SAAW,CAAC,EAAO,GAAK,CAAC,CAAI,CAAG,WAEvF,EAAC,EAAD,CAAiB,KAAM,CAAgB,CAAA,CACxB,CAAA,CACd,IACH,KAEJ,OACE,EAAC,EAAD,CACS,QACP,UAAW,EAAG,EAAO,YAAa,CAAS,EAC3C,MAAO,EACP,aAAgB,CAAC,EACjB,cAAe,KACf,QAAS,EAAiB,EAAc,QAAU,CAAC,EAAc,SAAS,EAAI,GAAQ,CAAC,EACvF,aAAc,EAAiB,EAAc,uBAAuB,GAAK,GAAO,GAAS,GAC5E,cACb,OAAQ,EACR,YACE,EAAC,EAAD,CACE,cAAgB,GAAS,EAAkB,EAAK,UAAU,EAC1D,cAAe,GAAQ,KAAe,EAAR,GACZ,mBACC,oBACL,eACd,kBAAA,GACA,OAAQ,EACA,SACR,UAAW,EAAa,EAAgB,EACxC,GAAI,CACL,CAAA,CAEJ,CAAA,CAEL"}
1
+ {"version":3,"file":"numberInput.mjs","names":[],"sources":["../../../../package/common/numberInput/numberInput.tsx"],"sourcesContent":["import type { ReactElement } from 'react';\nimport React from 'react';\nimport cx from 'classnames';\nimport { NumericFormat, NumericFormatProps } from 'react-number-format';\nimport type FormValidator from 'services/formValidation/formValidator';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faChevronUp, faChevronDown } from '@fortawesome/free-solid-svg-icons';\n\nimport styles from './numberInput.module.pcss';\nimport Input from '../input';\nimport InteractableDiv from '../interactableDiv';\nimport { useComponentDefaults } from '../configProvider';\n\nexport interface NumberInputProps\n extends Omit<NumericFormatProps, 'onValueChange' | 'value' | 'customInput' | 'onChange' | 'step' | 'onKeyDown'> {\n value?: number | string;\n onChange?: (value: number | undefined) => void;\n formValidator?: FormValidator | null;\n label?: string;\n error?: string;\n className?: string;\n allowNegative?: boolean;\n decimalSeparator?: string;\n thousandSeparator?: string | boolean;\n prefix?: string;\n suffix?: string;\n decimalScale?: number;\n placeholder?: string;\n sign?: '+' | '-';\n showArrows?: boolean;\n step?: number;\n onKeyDown?: (e: React.KeyboardEvent<HTMLInputElement>) => void;\n}\n\nfunction NumberInput(props: NumberInputProps): ReactElement {\n const {\n value,\n onChange,\n formValidator,\n label,\n error,\n className,\n allowNegative = false,\n decimalSeparator,\n thousandSeparator,\n prefix,\n suffix,\n decimalScale,\n placeholder,\n sign,\n showArrows = false,\n step = 1,\n onKeyDown: onKeyDownProp,\n ...rest\n } = useComponentDefaults('NumberInput', props);\n const rawValue = formValidator != null ? formValidator.value as number | string : value;\n // When a sign is forced, display the absolute value — the prefix character carries the sign visually.\n const displayValue = sign != null && rawValue != null ? Math.abs(Number(rawValue)) : rawValue;\n const controlledValue = displayValue != null ? String(displayValue) : '';\n\n function handleValueChange(floatValue: number | undefined) {\n let out = floatValue;\n if (out !== undefined) {\n if (sign === '-') out = -Math.abs(out);\n if (sign === '+') out = Math.abs(out);\n }\n if (formValidator != null) formValidator.set(out ?? null);\n onChange?.(out);\n }\n\n function handleStep(delta: number) {\n const current = rawValue != null && rawValue !== '' ? Number(rawValue) : 0;\n let next = current + delta;\n if (!allowNegative && sign !== '-') next = Math.max(0, next);\n if (sign === '-') next = Math.min(0, next);\n handleValueChange(next);\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n if (e.key === 'ArrowUp') {\n e.preventDefault();\n handleStep(e.shiftKey ? step * 10 : step);\n return;\n }\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n handleStep(e.shiftKey ? -step * 10 : -step);\n return;\n }\n onKeyDownProp?.(e);\n }\n\n const resolvedPrefix = sign === '-' ? '-' : sign === '+' ? '+' : prefix;\n\n const arrowSuffix = showArrows ? (\n <div className={styles.arrows}>\n <InteractableDiv\n className={styles.arrowBtn}\n tabIndex={-1}\n onMouseDown={(e) => { e.preventDefault(); handleStep(e.shiftKey ? step * 10 : step); }}\n >\n <FontAwesomeIcon icon={faChevronUp} />\n </InteractableDiv>\n <InteractableDiv\n className={styles.arrowBtn}\n tabIndex={-1}\n onMouseDown={(e) => { e.preventDefault(); handleStep(e.shiftKey ? -step * 10 : -step); }}\n >\n <FontAwesomeIcon icon={faChevronDown} />\n </InteractableDiv>\n </div>\n ) : null;\n\n return (\n <Input\n label={label}\n className={cx(styles.numberInput, className)}\n value={controlledValue}\n onChange={() => {}}\n formValidator={null}\n isValid={formValidator ? (formValidator.touched ? !formValidator.hasError() : true) : !error}\n errorMessage={formValidator ? (formValidator.getCurrentErrorMessage() ?? '') : (error ?? '')}\n placeholder={placeholder}\n suffix={arrowSuffix}\n customInput={\n <NumericFormat\n onValueChange={(vals) => handleValueChange(vals.floatValue)}\n allowNegative={sign != null ? false : allowNegative}\n decimalSeparator={decimalSeparator}\n thousandSeparator={thousandSeparator}\n decimalScale={decimalScale}\n fixedDecimalScale\n prefix={resolvedPrefix}\n suffix={suffix}\n onKeyDown={showArrows ? handleKeyDown : onKeyDownProp}\n {...rest}\n />\n }\n />\n );\n}\n\nexport default NumberInput;\n"],"mappings":"0eAkCA,SAAS,EAAY,EAAuC,CAC1D,GAAM,CACN,QACA,WACA,gBACA,QACA,QACA,YACA,gBAAgB,GAChB,mBACA,oBACA,SACA,SACA,eACA,cACA,OACA,aAAa,GACb,OAAO,EACP,UAAW,EACX,GAAG,GACC,EAAqB,cAAe,CAAK,EACvC,EAAW,GAAiB,KAAgD,EAAzC,EAAc,MAEjD,EAAe,GAAQ,MAAQ,GAAY,KAAO,KAAK,IAAI,OAAO,CAAQ,CAAC,EAAI,EAC/E,EAAkB,GAAgB,KAA8B,GAAvB,OAAO,CAAY,EAElE,SAAS,EAAkB,EAAgC,CACzD,IAAI,EAAM,EACN,IAAQ,IAAA,KACN,IAAS,MAAK,EAAM,CAAC,KAAK,IAAI,CAAG,GACjC,IAAS,MAAK,EAAO,KAAK,IAAI,CAAG,IAEnC,GAAqC,IAAI,GAAO,IAAI,EACxD,IAAW,CAAG,CAChB,CAEA,SAAS,EAAW,EAAe,CAEjC,IAAI,GADY,GAAY,MAAQ,IAAa,GAAK,OAAO,CAAQ,EAAI,GACpD,EACjB,CAAC,GAAiB,IAAS,MAAK,EAAO,KAAK,IAAI,EAAG,CAAI,GACvD,IAAS,MAAK,EAAO,KAAK,IAAI,EAAG,CAAI,GACzC,EAAkB,CAAI,CACxB,CAEA,SAAS,EAAc,EAA0C,CAC/D,GAAI,EAAE,MAAQ,UAAW,CACvB,EAAE,eAAe,EACjB,EAAW,EAAE,SAAW,EAAO,GAAK,CAAI,EACxC,MACF,CACA,GAAI,EAAE,MAAQ,YAAa,CACzB,EAAE,eAAe,EACjB,EAAW,EAAE,SAAW,CAAC,EAAO,GAAK,CAAC,CAAI,EAC1C,MACF,CACA,IAAgB,CAAC,CACnB,CAEA,IAAM,EAAiB,IAAS,IAAM,IAAM,IAAS,IAAM,IAAM,EAE3D,EAAc,EAClB,EAAC,MAAD,CAAK,UAAW,EAAO,gBAAvB,CACE,EAAC,EAAD,CACE,UAAW,EAAO,SAClB,SAAU,GACV,YAAc,GAAM,CAAE,EAAE,eAAe,EAAG,EAAW,EAAE,SAAW,EAAO,GAAK,CAAI,CAAG,WAErF,EAAC,EAAD,CAAiB,KAAM,CAAc,CAAA,CACtB,CAAA,EACjB,EAAC,EAAD,CACE,UAAW,EAAO,SAClB,SAAU,GACV,YAAc,GAAM,CAAE,EAAE,eAAe,EAAG,EAAW,EAAE,SAAW,CAAC,EAAO,GAAK,CAAC,CAAI,CAAG,WAEvF,EAAC,EAAD,CAAiB,KAAM,CAAgB,CAAA,CACxB,CAAA,CACd,IACH,KAEJ,OACE,EAAC,EAAD,CACS,QACP,UAAW,EAAG,EAAO,YAAa,CAAS,EAC3C,MAAO,EACP,aAAgB,CAAC,EACjB,cAAe,KACf,QAAS,EAAiB,EAAc,QAAU,CAAC,EAAc,SAAS,EAAI,GAAQ,CAAC,EACvF,aAAc,EAAiB,EAAc,uBAAuB,GAAK,GAAO,GAAS,GAC5E,cACb,OAAQ,EACR,YACE,EAAC,EAAD,CACE,cAAgB,GAAS,EAAkB,EAAK,UAAU,EAC1D,cAAe,GAAQ,KAAe,EAAR,GACZ,mBACC,oBACL,eACd,kBAAA,GACA,OAAQ,EACA,SACR,UAAW,EAAa,EAAgB,EACxC,GAAI,CACL,CAAA,CAEJ,CAAA,CAEL"}
@@ -1,2 +1,2 @@
1
- import{SkeletonAnimation as e,SkeletonVariant as t}from"./skeleton.types.mjs";import n from"./skeleton.module.mjs";import r from"classnames";import{jsx as i}from"react/jsx-runtime";var a={[t.Text]:n.skeletonText,[t.Circle]:n.skeletonCircle,[t.Rectangular]:n.skeletonRectangular},o={[e.Shimmer]:n.skeletonAnimationShimmer,[e.Pulse]:n.skeletonAnimationPulse,[e.None]:void 0};function s({variant:s=t.Text,animation:c=e.Shimmer,lines:l=1,className:u,style:d,classNames:f,styles:p,...m}){let h=a[s],g=o[c];return s!==t.Text||l<=1?i(`span`,{...m,className:r(n.skeleton,h,g,u),style:d}):i(`span`,{...m,className:r(n.skeletonLines,u),style:d,children:Array.from({length:l},(e,t)=>i(`span`,{className:r(n.skeleton,h,g,t===l-1&&n.skeletonLineLast,f?.line),style:p?.line},t))})}export{s as default};
1
+ import{useComponentDefaults as e}from"../configProvider/useComponentDefaults.mjs";import{SkeletonAnimation as t,SkeletonVariant as n}from"./skeleton.types.mjs";import r from"./skeleton.module.mjs";import i from"classnames";import{jsx as a}from"react/jsx-runtime";var o={[n.Text]:r.skeletonText,[n.Circle]:r.skeletonCircle,[n.Rectangular]:r.skeletonRectangular},s={[t.Shimmer]:r.skeletonAnimationShimmer,[t.Pulse]:r.skeletonAnimationPulse,[t.None]:void 0};function c(c){let{variant:l=n.Text,animation:u=t.Shimmer,lines:d=1,className:f,style:p,classNames:m,styles:h,...g}=e(`Skeleton`,c),_=o[l],v=s[u];return l!==n.Text||d<=1?a(`span`,{...g,className:i(r.skeleton,_,v,f),style:p}):a(`span`,{...g,className:i(r.skeletonLines,f),style:p,children:Array.from({length:d},(e,t)=>a(`span`,{className:i(r.skeleton,_,v,t===d-1&&r.skeletonLineLast,m?.line),style:h?.line},t))})}export{c as default};
2
2
  //# sourceMappingURL=skeleton.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"skeleton.mjs","names":[],"sources":["../../../../package/common/skeleton/skeleton.tsx"],"sourcesContent":["import type { ReactElement } from 'react';\nimport cx from 'classnames';\n\nimport { SkeletonVariant, SkeletonAnimation } from './skeleton.types';\nimport type { SkeletonProps } from './skeleton.types';\nimport styles from './skeleton.module.pcss';\n\nconst CLASS_BY_VARIANT: Record<SkeletonVariant, string> = {\n [SkeletonVariant.Text]: styles.skeletonText,\n [SkeletonVariant.Circle]: styles.skeletonCircle,\n [SkeletonVariant.Rectangular]: styles.skeletonRectangular,\n};\n\nconst CLASS_BY_ANIMATION: Record<SkeletonAnimation, string | undefined> = {\n [SkeletonAnimation.Shimmer]: styles.skeletonAnimationShimmer,\n [SkeletonAnimation.Pulse]: styles.skeletonAnimationPulse,\n [SkeletonAnimation.None]: undefined,\n};\n\nfunction Skeleton({\n variant = SkeletonVariant.Text,\n animation = SkeletonAnimation.Shimmer,\n lines = 1,\n className,\n style,\n classNames,\n styles: slotStyles,\n ...rest\n}: SkeletonProps): ReactElement {\n const variantClass = CLASS_BY_VARIANT[variant];\n const animationClass = CLASS_BY_ANIMATION[animation];\n\n if (variant !== SkeletonVariant.Text || lines <= 1) {\n return (\n <span\n {...rest}\n className={cx(styles.skeleton, variantClass, animationClass, className)}\n style={style}\n />\n );\n }\n\n return (\n <span {...rest} className={cx(styles.skeletonLines, className)} style={style}>\n {Array.from({ length: lines }, (_, index) => (\n <span\n key={index}\n className={cx(\n styles.skeleton,\n variantClass,\n animationClass,\n index === lines - 1 && styles.skeletonLineLast,\n classNames?.line\n )}\n style={slotStyles?.line}\n />\n ))}\n </span>\n );\n}\n\nexport default Skeleton;\n"],"mappings":"qLAOA,IAAM,EAAoD,EACvD,EAAgB,MAAO,EAAO,cAC9B,EAAgB,QAAS,EAAO,gBAChC,EAAgB,aAAc,EAAO,mBACxC,EAEM,EAAoE,EACvE,EAAkB,SAAU,EAAO,0BACnC,EAAkB,OAAQ,EAAO,wBACjC,EAAkB,MAAO,IAAA,EAC5B,EAEA,SAAS,EAAS,CAChB,UAAU,EAAgB,KAC1B,YAAY,EAAkB,QAC9B,QAAQ,EACR,YACA,QACA,aACA,OAAQ,EACR,GAAG,GAC2B,CAC9B,IAAM,EAAe,EAAiB,GAChC,EAAiB,EAAmB,GAY1C,OAVI,IAAY,EAAgB,MAAQ,GAAS,EAE7C,EAAC,OAAD,CACE,GAAI,EACJ,UAAW,EAAG,EAAO,SAAU,EAAc,EAAgB,CAAS,EAC/D,OACR,CAAA,EAKH,EAAC,OAAD,CAAM,GAAI,EAAM,UAAW,EAAG,EAAO,cAAe,CAAS,EAAU,iBACpE,MAAM,KAAK,CAAE,OAAQ,CAAM,GAAI,EAAG,IACjC,EAAC,OAAD,CAEE,UAAW,EACT,EAAO,SACP,EACA,EACA,IAAU,EAAQ,GAAK,EAAO,iBAC9B,GAAY,IACd,EACA,MAAO,GAAY,IACpB,EATM,CASN,CACF,CACG,CAAA,CAEV"}
1
+ {"version":3,"file":"skeleton.mjs","names":[],"sources":["../../../../package/common/skeleton/skeleton.tsx"],"sourcesContent":["import type { ReactElement } from 'react';\nimport cx from 'classnames';\n\nimport { SkeletonVariant, SkeletonAnimation } from './skeleton.types';\nimport type { SkeletonProps } from './skeleton.types';\nimport styles from './skeleton.module.pcss';\nimport { useComponentDefaults } from '../configProvider';\n\nconst CLASS_BY_VARIANT: Record<SkeletonVariant, string> = {\n [SkeletonVariant.Text]: styles.skeletonText,\n [SkeletonVariant.Circle]: styles.skeletonCircle,\n [SkeletonVariant.Rectangular]: styles.skeletonRectangular,\n};\n\nconst CLASS_BY_ANIMATION: Record<SkeletonAnimation, string | undefined> = {\n [SkeletonAnimation.Shimmer]: styles.skeletonAnimationShimmer,\n [SkeletonAnimation.Pulse]: styles.skeletonAnimationPulse,\n [SkeletonAnimation.None]: undefined,\n};\n\nfunction Skeleton(props: SkeletonProps): ReactElement {\n const {\n variant = SkeletonVariant.Text,\n animation = SkeletonAnimation.Shimmer,\n lines = 1,\n className,\n style,\n classNames,\n styles: slotStyles,\n ...rest\n } = useComponentDefaults('Skeleton', props);\n const variantClass = CLASS_BY_VARIANT[variant];\n const animationClass = CLASS_BY_ANIMATION[animation];\n\n if (variant !== SkeletonVariant.Text || lines <= 1) {\n return (\n <span\n {...rest}\n className={cx(styles.skeleton, variantClass, animationClass, className)}\n style={style}\n />\n );\n }\n\n return (\n <span {...rest} className={cx(styles.skeletonLines, className)} style={style}>\n {Array.from({ length: lines }, (_, index) => (\n <span\n key={index}\n className={cx(\n styles.skeleton,\n variantClass,\n animationClass,\n index === lines - 1 && styles.skeletonLineLast,\n classNames?.line\n )}\n style={slotStyles?.line}\n />\n ))}\n </span>\n );\n}\n\nexport default Skeleton;\n"],"mappings":"uQAQA,IAAM,EAAoD,EACvD,EAAgB,MAAO,EAAO,cAC9B,EAAgB,QAAS,EAAO,gBAChC,EAAgB,aAAc,EAAO,mBACxC,EAEM,EAAoE,EACvE,EAAkB,SAAU,EAAO,0BACnC,EAAkB,OAAQ,EAAO,wBACjC,EAAkB,MAAO,IAAA,EAC5B,EAEA,SAAS,EAAS,EAAoC,CACpD,GAAM,CACN,UAAU,EAAgB,KAC1B,YAAY,EAAkB,QAC9B,QAAQ,EACR,YACA,QACA,aACA,OAAQ,EACR,GAAG,GACC,EAAqB,WAAY,CAAK,EACpC,EAAe,EAAiB,GAChC,EAAiB,EAAmB,GAY1C,OAVI,IAAY,EAAgB,MAAQ,GAAS,EAE7C,EAAC,OAAD,CACE,GAAI,EACJ,UAAW,EAAG,EAAO,SAAU,EAAc,EAAgB,CAAS,EAC/D,OACR,CAAA,EAKH,EAAC,OAAD,CAAM,GAAI,EAAM,UAAW,EAAG,EAAO,cAAe,CAAS,EAAU,iBACpE,MAAM,KAAK,CAAE,OAAQ,CAAM,GAAI,EAAG,IACjC,EAAC,OAAD,CAEE,UAAW,EACT,EAAO,SACP,EACA,EACA,IAAU,EAAQ,GAAK,EAAO,iBAC9B,GAAY,IACd,EACA,MAAO,GAAY,IACpB,EATM,CASN,CACF,CACG,CAAA,CAEV"}
@@ -1,2 +1,2 @@
1
- import e from"./switch.module.mjs";import{useEffect as t,useState as n}from"react";import r from"classnames";import{jsx as i,jsxs as a}from"react/jsx-runtime";function o({label:o=``,selected:s=!1,onToggle:c=()=>{},className:l=``,style:u,disabled:d=!1,title:f=``,tabIndex:p=0,formValidator:m=null,children:h=null,classNames:g,styles:_,...v}){let[,y]=n(0);t(()=>{if(!m)return;let e=()=>y(e=>e+1);return m.registerOnUpdateListener(e),()=>m.removeOnUpdateListener(e)},[m]);function b(e){d||(m&&m.set(!m.value),c(!x,e))}let x=m?m.value:s;return a(`div`,{...v,title:f,className:r(e.switch,{[e.switchDisabled]:d},l),style:u,onClick:b,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),b(e))},role:`switch`,"aria-checked":x,tabIndex:d?-1:p,children:[i(`div`,{className:r(e.switchTrack,x&&e.switchTrackChecked,g?.track),style:_?.track,children:i(`div`,{className:r(e.switchThumb,x&&e.switchThumbChecked,g?.thumb),style:_?.thumb})}),(h||o)&&i(`div`,{className:r(e.switchLabel,g?.label),style:_?.label,children:h||o})]})}export{o as default};
1
+ import{useComponentDefaults as e}from"../configProvider/useComponentDefaults.mjs";import t from"./switch.module.mjs";import{useEffect as n,useState as r}from"react";import i from"classnames";import{jsx as a,jsxs as o}from"react/jsx-runtime";function s(s){let{label:c=``,selected:l=!1,onToggle:u=()=>{},className:d=``,style:f,disabled:p=!1,title:m=``,tabIndex:h=0,formValidator:g=null,children:_=null,classNames:v,styles:y,...b}=e(`Switch`,s),[,x]=r(0);n(()=>{if(!g)return;let e=()=>x(e=>e+1);return g.registerOnUpdateListener(e),()=>g.removeOnUpdateListener(e)},[g]);function S(e){p||(g&&g.set(!g.value),u(!C,e))}let C=g?g.value:l;return o(`div`,{...b,title:m,className:i(t.switch,{[t.switchDisabled]:p},d),style:f,onClick:S,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),S(e))},role:`switch`,"aria-checked":C,tabIndex:p?-1:h,children:[a(`div`,{className:i(t.switchTrack,C&&t.switchTrackChecked,v?.track),style:y?.track,children:a(`div`,{className:i(t.switchThumb,C&&t.switchThumbChecked,v?.thumb),style:y?.thumb})}),(_||c)&&a(`div`,{className:i(t.switchLabel,v?.label),style:y?.label,children:_||c})]})}export{s as default};
2
2
  //# sourceMappingURL=switch.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"switch.mjs","names":[],"sources":["../../../../package/common/switch/switch.tsx"],"sourcesContent":["import { useEffect, useState, type ReactElement } from 'react';\nimport cx from 'classnames';\n\nimport type { SwitchProps } from './switch.types';\nimport styles from './switch.module.pcss';\n\nfunction Switch({\n label = '',\n selected = false,\n onToggle = () => {},\n className = '',\n style,\n disabled = false,\n title = '',\n tabIndex = 0,\n formValidator = null,\n children = null,\n classNames,\n styles: slotStyles,\n ...rest\n}: SwitchProps): ReactElement {\n const [, forceUpdate] = useState(0);\n\n useEffect(() => {\n if (!formValidator) return;\n const listener = () => forceUpdate((n) => n + 1);\n formValidator.registerOnUpdateListener(listener);\n return () => formValidator.removeOnUpdateListener(listener);\n }, [formValidator]);\n\n function handleToggle(event?: React.MouseEvent | React.KeyboardEvent) {\n if (disabled) return;\n if (formValidator) {\n formValidator.set(!formValidator.value);\n }\n onToggle(!currSelected, event);\n }\n\n const currSelected = (formValidator ? formValidator.value : selected) as boolean;\n\n return (\n <div\n {...rest}\n title={title}\n className={cx(\n styles.switch,\n {\n [styles.switchDisabled]: disabled,\n },\n className\n )}\n style={style}\n onClick={handleToggle}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleToggle(e);\n }\n }}\n role=\"switch\"\n aria-checked={currSelected}\n tabIndex={disabled ? -1 : tabIndex}\n >\n <div\n className={cx(styles.switchTrack, currSelected && styles.switchTrackChecked, classNames?.track)}\n style={slotStyles?.track}\n >\n <div\n className={cx(styles.switchThumb, currSelected && styles.switchThumbChecked, classNames?.thumb)}\n style={slotStyles?.thumb}\n />\n </div>\n {(children || label) && (\n <div className={cx(styles.switchLabel, classNames?.label)} style={slotStyles?.label}>\n {children || label}\n </div>\n )}\n </div>\n );\n}\n\nexport default Switch;\n"],"mappings":"+JAMA,SAAS,EAAO,CACd,QAAQ,GACR,WAAW,GACX,eAAiB,CAAC,EAClB,YAAY,GACZ,QACA,WAAW,GACX,QAAQ,GACR,WAAW,EACX,gBAAgB,KAChB,WAAW,KACX,aACA,OAAQ,EACR,GAAG,GACyB,CAC5B,GAAM,EAAG,GAAe,EAAS,CAAC,EAElC,MAAgB,CACd,GAAI,CAAC,EAAe,OACpB,IAAM,MAAiB,EAAa,GAAM,EAAI,CAAC,EAE/C,OADA,EAAc,yBAAyB,CAAQ,MAClC,EAAc,uBAAuB,CAAQ,CAC5D,EAAG,CAAC,CAAa,CAAC,EAElB,SAAS,EAAa,EAAgD,CAChE,IACA,GACF,EAAc,IAAI,CAAC,EAAc,KAAK,EAExC,EAAS,CAAC,EAAc,CAAK,EAC/B,CAEA,IAAM,EAAgB,EAAgB,EAAc,MAAQ,EAE5D,OACE,EAAC,MAAD,CACE,GAAI,EACG,QACP,UAAW,EACT,EAAO,OACP,EACG,EAAO,gBAAiB,CAC3B,EACA,CACF,EACO,QACP,QAAS,EACT,UAAY,GAAM,EACZ,EAAE,MAAQ,SAAW,EAAE,MAAQ,OACjC,EAAE,eAAe,EACjB,EAAa,CAAC,EAElB,EACA,KAAK,SACL,eAAc,EACd,SAAU,EAAW,GAAK,WApB5B,CAsBE,EAAC,MAAD,CACE,UAAW,EAAG,EAAO,YAAa,GAAgB,EAAO,mBAAoB,GAAY,KAAK,EAC9F,MAAO,GAAY,eAEnB,EAAC,MAAD,CACE,UAAW,EAAG,EAAO,YAAa,GAAgB,EAAO,mBAAoB,GAAY,KAAK,EAC9F,MAAO,GAAY,KACpB,CAAA,CACE,CAAA,GACH,GAAY,IACZ,EAAC,MAAD,CAAK,UAAW,EAAG,EAAO,YAAa,GAAY,KAAK,EAAG,MAAO,GAAY,eAC3E,GAAY,CACV,CAAA,CAEJ,GAET"}
1
+ {"version":3,"file":"switch.mjs","names":[],"sources":["../../../../package/common/switch/switch.tsx"],"sourcesContent":["import { useEffect, useState, type ReactElement } from 'react';\nimport cx from 'classnames';\n\nimport { useComponentDefaults } from '../configProvider';\nimport type { SwitchProps } from './switch.types';\nimport styles from './switch.module.pcss';\n\nfunction Switch(props: SwitchProps): ReactElement {\n const {\n label = '',\n selected = false,\n onToggle = () => {},\n className = '',\n style,\n disabled = false,\n title = '',\n tabIndex = 0,\n formValidator = null,\n children = null,\n classNames,\n styles: slotStyles,\n ...rest\n } = useComponentDefaults('Switch', props);\n const [, forceUpdate] = useState(0);\n\n useEffect(() => {\n if (!formValidator) return;\n const listener = () => forceUpdate((n) => n + 1);\n formValidator.registerOnUpdateListener(listener);\n return () => formValidator.removeOnUpdateListener(listener);\n }, [formValidator]);\n\n function handleToggle(event?: React.MouseEvent | React.KeyboardEvent) {\n if (disabled) return;\n if (formValidator) {\n formValidator.set(!formValidator.value);\n }\n onToggle(!currSelected, event);\n }\n\n const currSelected = (formValidator ? formValidator.value : selected) as boolean;\n\n return (\n <div\n {...rest}\n title={title}\n className={cx(\n styles.switch,\n {\n [styles.switchDisabled]: disabled,\n },\n className\n )}\n style={style}\n onClick={handleToggle}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleToggle(e);\n }\n }}\n role=\"switch\"\n aria-checked={currSelected}\n tabIndex={disabled ? -1 : tabIndex}\n >\n <div\n className={cx(styles.switchTrack, currSelected && styles.switchTrackChecked, classNames?.track)}\n style={slotStyles?.track}\n >\n <div\n className={cx(styles.switchThumb, currSelected && styles.switchThumbChecked, classNames?.thumb)}\n style={slotStyles?.thumb}\n />\n </div>\n {(children || label) && (\n <div className={cx(styles.switchLabel, classNames?.label)} style={slotStyles?.label}>\n {children || label}\n </div>\n )}\n </div>\n );\n}\n\nexport default Switch;\n"],"mappings":"iPAOA,SAAS,EAAO,EAAkC,CAChD,GAAM,CACN,QAAQ,GACR,WAAW,GACX,eAAiB,CAAC,EAClB,YAAY,GACZ,QACA,WAAW,GACX,QAAQ,GACR,WAAW,EACX,gBAAgB,KAChB,WAAW,KACX,aACA,OAAQ,EACR,GAAG,GACC,EAAqB,SAAU,CAAK,EAClC,EAAG,GAAe,EAAS,CAAC,EAElC,MAAgB,CACd,GAAI,CAAC,EAAe,OACpB,IAAM,MAAiB,EAAa,GAAM,EAAI,CAAC,EAE/C,OADA,EAAc,yBAAyB,CAAQ,MAClC,EAAc,uBAAuB,CAAQ,CAC5D,EAAG,CAAC,CAAa,CAAC,EAElB,SAAS,EAAa,EAAgD,CAChE,IACA,GACF,EAAc,IAAI,CAAC,EAAc,KAAK,EAExC,EAAS,CAAC,EAAc,CAAK,EAC/B,CAEA,IAAM,EAAgB,EAAgB,EAAc,MAAQ,EAE5D,OACE,EAAC,MAAD,CACE,GAAI,EACG,QACP,UAAW,EACT,EAAO,OACP,EACG,EAAO,gBAAiB,CAC3B,EACA,CACF,EACO,QACP,QAAS,EACT,UAAY,GAAM,EACZ,EAAE,MAAQ,SAAW,EAAE,MAAQ,OACjC,EAAE,eAAe,EACjB,EAAa,CAAC,EAElB,EACA,KAAK,SACL,eAAc,EACd,SAAU,EAAW,GAAK,WApB5B,CAsBE,EAAC,MAAD,CACE,UAAW,EAAG,EAAO,YAAa,GAAgB,EAAO,mBAAoB,GAAY,KAAK,EAC9F,MAAO,GAAY,eAEnB,EAAC,MAAD,CACE,UAAW,EAAG,EAAO,YAAa,GAAgB,EAAO,mBAAoB,GAAY,KAAK,EAC9F,MAAO,GAAY,KACpB,CAAA,CACE,CAAA,GACH,GAAY,IACZ,EAAC,MAAD,CAAK,UAAW,EAAG,EAAO,YAAa,GAAY,KAAK,EAAG,MAAO,GAAY,eAC3E,GAAY,CACV,CAAA,CAEJ,GAET"}
@@ -1,2 +1,2 @@
1
- import e from"../input/input.mjs";import"react";import{jsx as t}from"react/jsx-runtime";function n(n){return t(e,{...n,multiline:!0})}export{n as default};
1
+ import{useComponentDefaults as e}from"../configProvider/useComponentDefaults.mjs";import t from"../input/input.mjs";import"react";import{jsx as n}from"react/jsx-runtime";function r(r){return n(t,{...e(`Textarea`,r),multiline:!0})}export{r as default};
2
2
  //# sourceMappingURL=textarea.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"textarea.mjs","names":[],"sources":["../../../../package/common/textarea/textarea.tsx"],"sourcesContent":["import React from 'react';\nimport Input from 'components/common/input';\nimport type { TextareaProps } from './textarea.types';\n\nexport default function Textarea(props: TextareaProps) {\n return <Input {...props} multiline />;\n}\n"],"mappings":"wFAIA,SAAwB,EAAS,EAAsB,CACrD,OAAO,EAAC,EAAD,CAAO,GAAI,EAAO,UAAA,EAAW,CAAA,CACtC"}
1
+ {"version":3,"file":"textarea.mjs","names":[],"sources":["../../../../package/common/textarea/textarea.tsx"],"sourcesContent":["import React from 'react';\nimport Input from 'components/common/input';\nimport { useComponentDefaults } from 'components/common/configProvider';\nimport type { TextareaProps } from './textarea.types';\n\nexport default function Textarea(props: TextareaProps) {\n return <Input {...useComponentDefaults('Textarea', props)} multiline />;\n}\n"],"mappings":"0KAKA,SAAwB,EAAS,EAAsB,CACrD,OAAO,EAAC,EAAD,CAAO,GAAI,EAAqB,WAAY,CAAK,EAAG,UAAA,EAAW,CAAA,CACxE"}
@@ -1 +1 @@
1
- import{AccordionStyleType as e}from"./common/accordion/accordion.types.mjs";import t from"./common/accordion/accordion.mjs";import n from"./common/loading/spinnerLoading/index.mjs";import{ButtonSize as r,ButtonStyleType as i,ButtonType as a}from"./common/button/button.types.mjs";import o from"./common/ripple/ripple.mjs";import s from"./common/button/button.mjs";import c from"./common/actionButtons/actionButtons.mjs";import l from"./common/interactableDiv/index.mjs";import u from"./common/actionIcon/actionIcon.mjs";import{BadgePosition as d,BadgeStyleType as f}from"./common/badge/badge.types.mjs";import p from"./common/badge/badge.mjs";import m from"./common/avatar/avatar.mjs";import h from"./common/avatar/avatarGroup.mjs";import g from"./common/bodyEnd/bodyEnd.mjs";import{CardStyleType as _}from"./common/card/card.types.mjs";import v from"./common/card/Card.mjs";import y from"./common/card/CardHeader.mjs";import b from"./common/card/CardMedia.mjs";import x from"./common/card/CardContent.mjs";import S from"./common/card/CardActions.mjs";import C from"./common/checkbox/checkbox.mjs";import{ChipStyleType as w}from"./common/chip/chip.types.mjs";import T from"./common/chip/chip.mjs";import E from"./common/chip/chipContainer.mjs";import{Align as D}from"./common/floatingMenu/floatingMenu.types.mjs";import O from"./common/floatingMenu/floatingMenu.mjs";import k from"./common/tooltip/tooltip.mjs";import{InputType as A}from"./common/input/input.types.mjs";import j from"./common/input/input.mjs";import M from"./common/colorPicker/colorPicker.mjs";import N from"./common/modal/modal.mjs";import P from"./common/confirmModal/confirmModal.mjs";import{getLocale as F,mapLocale as I,setLocale as L}from"./services/localization.mjs";import R from"./common/infiniteBlock/infiniteBlock.mjs";import z from"./common/dropdown/dropdown.mjs";import B from"./common/datePicker/datePicker.mjs";import V from"./common/drawer/drawer.mjs";import{DropZoneReturnType as H,DropZoneStatus as U}from"./common/dropZone/dropZone.types.mjs";import W from"./common/dropZone/dropZone.mjs";import G from"./common/emptyState/emptyState.mjs";import K from"./common/fab/fab.mjs";import q from"./common/iconPicker/iconPicker.mjs";import J from"./common/idleManager/idleManager.mjs";import Y from"./common/inputDropdown/inputDropdown.mjs";import X from"./common/kanbanBoard/KanbanColumn.mjs";import Z from"./common/kanbanBoard/KanbanBoard.mjs";import Q from"./common/searchInput/searchInput.mjs";import $ from"./common/klipyPicker/klipyPicker.mjs";import ee from"./common/loading/iconLoading/index.mjs";import te from"./common/numberInput/index.mjs";import ne from"./common/optionPicker/optionPicker.mjs";import re from"./common/overscroll/overscroll.mjs";import ie from"./common/progressBar/progressBar.mjs";import ae from"./common/roomDrawer/roomDrawer.mjs";import oe from"./common/roomViewer/roomViewer.mjs";import se from"./common/scrollbarProvider/index.mjs";import{SkeletonAnimation as ce,SkeletonVariant as le}from"./common/skeleton/skeleton.types.mjs";import ue from"./common/skeleton/skeleton.mjs";import de from"./common/stepper/stepper.mjs";import fe from"./common/sticky/sticky.mjs";import pe from"./common/switch/switch.mjs";import me from"./common/tabHeader/tabHeader.mjs";import he from"./common/textarea/textarea.mjs";import{defaultTheme as ge}from"./common/themeProvider/defaultTheme.mjs";import _e from"./common/themeProvider/themeProvider.mjs";import{useTheme as ve}from"./common/themeProvider/useTheme.mjs";import ye from"./common/timeInput/timeInput.mjs";import{showToast as be}from"./common/toast/toastService.mjs";import xe from"./common/toast/toastProvider.mjs";import Se from"./common/virtualList/virtualList.mjs";import Ce from"./common/wizard/wizard.mjs";import we from"./services/formValidation/FormValidatorGroupWithForm.mjs";import Te from"./services/formValidation/formValidator.mjs";import{hasEightPasswordChars as Ee,hasOnePasswordDigit as De,hasOnePasswordLetter as Oe,isBic as ke,isDate as Ae,isEmail as je,isISODate as Me,isNumber as Ne,isPassword as Pe,isURL as Fe}from"./services/regexp.mjs";import Ie from"./services/formValidation/validators.mjs";import Le from"./services/formValidation/validatableComponent.mjs";import{useFormValidator as Re}from"./services/formValidation/useFormValidator.mjs";import{useFormValidatorGroup as ze}from"./services/formValidation/useFormValidatorGroup.mjs";export{t as Accordion,e as AccordionStyleType,c as ActionButtons,u as ActionIcon,D as Align,m as Avatar,h as AvatarGroup,p as Badge,d as BadgePosition,f as BadgeStyleType,g as BodyEnd,s as Button,r as ButtonSize,i as ButtonStyleType,a as ButtonType,v as Card,S as CardActions,x as CardContent,y as CardHeader,b as CardMedia,_ as CardStyleType,C as Checkbox,T as Chip,E as ChipContainer,w as ChipStyleType,M as ColorPicker,P as ConfirmModal,B as DatePicker,V as Drawer,W as DropZone,H as DropZoneReturnType,U as DropZoneStatus,z as Dropdown,G as EmptyState,K as Fab,O as FloatingMenu,Te as FormValidator,we as FormValidatorGroup,ee as IconLoading,q as IconPicker,J as IdleManager,R as InfiniteBlock,j as Input,Y as InputDropdown,A as InputType,l as InteractableDiv,Z as KanbanBoard,X as KanbanColumn,$ as KlipyPicker,N as Modal,te as NumberInput,ne as OptionPicker,re as Overscroll,ie as ProgressBar,o as Ripple,ae as RoomDrawer,oe as RoomViewer,se as ScrollbarProvider,Q as SearchInput,ue as Skeleton,ce as SkeletonAnimation,le as SkeletonVariant,n as SpinnerLoading,de as Stepper,fe as Sticky,pe as Switch,me as TabHeader,he as Textarea,_e as ThemeProvider,ye as TimeInput,xe as ToastProvider,k as Tooltip,Le as ValidatableComponent,Ie as Validators,Se as VirtualList,Ce as Wizard,ge as defaultTheme,F as getLocale,Ee as hasEightPasswordChars,De as hasOnePasswordDigit,Oe as hasOnePasswordLetter,ke as isBic,Ae as isDate,je as isEmail,Me as isISODate,Ne as isNumber,Pe as isPassword,Fe as isURL,I as mapLocale,L as setLocale,be as showToast,Re as useFormValidator,ze as useFormValidatorGroup,ve as useTheme};
1
+ import{AccordionStyleType as e}from"./common/accordion/accordion.types.mjs";import t from"./common/configProvider/configProvider.mjs";import{useComponentDefaults as n}from"./common/configProvider/useComponentDefaults.mjs";import r from"./common/accordion/accordion.mjs";import i from"./common/loading/spinnerLoading/index.mjs";import{ButtonSize as a,ButtonStyleType as o,ButtonType as s}from"./common/button/button.types.mjs";import c from"./common/ripple/ripple.mjs";import l from"./common/button/button.mjs";import u from"./common/actionButtons/actionButtons.mjs";import d from"./common/interactableDiv/index.mjs";import f from"./common/actionIcon/actionIcon.mjs";import{BadgePosition as p,BadgeStyleType as m}from"./common/badge/badge.types.mjs";import h from"./common/badge/badge.mjs";import g from"./common/avatar/avatar.mjs";import _ from"./common/avatar/avatarGroup.mjs";import v from"./common/bodyEnd/bodyEnd.mjs";import{CardStyleType as y}from"./common/card/card.types.mjs";import b from"./common/card/Card.mjs";import x from"./common/card/CardHeader.mjs";import S from"./common/card/CardMedia.mjs";import C from"./common/card/CardContent.mjs";import w from"./common/card/CardActions.mjs";import T from"./common/checkbox/checkbox.mjs";import{ChipStyleType as E}from"./common/chip/chip.types.mjs";import D from"./common/chip/chip.mjs";import O from"./common/chip/chipContainer.mjs";import{Align as k}from"./common/floatingMenu/floatingMenu.types.mjs";import A from"./common/floatingMenu/floatingMenu.mjs";import j from"./common/tooltip/tooltip.mjs";import{InputType as M}from"./common/input/input.types.mjs";import N from"./common/input/input.mjs";import P from"./common/colorPicker/colorPicker.mjs";import F from"./common/modal/modal.mjs";import I from"./common/confirmModal/confirmModal.mjs";import{getLocale as L,mapLocale as R,setLocale as z}from"./services/localization.mjs";import B from"./common/infiniteBlock/infiniteBlock.mjs";import V from"./common/dropdown/dropdown.mjs";import H from"./common/datePicker/datePicker.mjs";import U from"./common/drawer/drawer.mjs";import{DropZoneReturnType as W,DropZoneStatus as G}from"./common/dropZone/dropZone.types.mjs";import K from"./common/dropZone/dropZone.mjs";import q from"./common/emptyState/emptyState.mjs";import J from"./common/fab/fab.mjs";import Y from"./common/iconPicker/iconPicker.mjs";import X from"./common/idleManager/idleManager.mjs";import Z from"./common/inputDropdown/inputDropdown.mjs";import Q from"./common/kanbanBoard/KanbanColumn.mjs";import $ from"./common/kanbanBoard/KanbanBoard.mjs";import ee from"./common/searchInput/searchInput.mjs";import te from"./common/klipyPicker/klipyPicker.mjs";import ne from"./common/loading/iconLoading/index.mjs";import re from"./common/numberInput/index.mjs";import ie from"./common/optionPicker/optionPicker.mjs";import ae from"./common/overscroll/overscroll.mjs";import oe from"./common/progressBar/progressBar.mjs";import se from"./common/roomDrawer/roomDrawer.mjs";import ce from"./common/roomViewer/roomViewer.mjs";import le from"./common/scrollbarProvider/index.mjs";import{SkeletonAnimation as ue,SkeletonVariant as de}from"./common/skeleton/skeleton.types.mjs";import fe from"./common/skeleton/skeleton.mjs";import pe from"./common/stepper/stepper.mjs";import me from"./common/sticky/sticky.mjs";import he from"./common/switch/switch.mjs";import ge from"./common/tabHeader/tabHeader.mjs";import _e from"./common/textarea/textarea.mjs";import{defaultTheme as ve}from"./common/themeProvider/defaultTheme.mjs";import ye from"./common/themeProvider/themeProvider.mjs";import{useTheme as be}from"./common/themeProvider/useTheme.mjs";import xe from"./common/timeInput/timeInput.mjs";import{showToast as Se}from"./common/toast/toastService.mjs";import Ce from"./common/toast/toastProvider.mjs";import we from"./common/virtualList/virtualList.mjs";import Te from"./common/wizard/wizard.mjs";import Ee from"./services/formValidation/FormValidatorGroupWithForm.mjs";import De from"./services/formValidation/formValidator.mjs";import{hasEightPasswordChars as Oe,hasOnePasswordDigit as ke,hasOnePasswordLetter as Ae,isBic as je,isDate as Me,isEmail as Ne,isISODate as Pe,isNumber as Fe,isPassword as Ie,isURL as Le}from"./services/regexp.mjs";import Re from"./services/formValidation/validators.mjs";import ze from"./services/formValidation/validatableComponent.mjs";import{useFormValidator as Be}from"./services/formValidation/useFormValidator.mjs";import{useFormValidatorGroup as Ve}from"./services/formValidation/useFormValidatorGroup.mjs";export{r as Accordion,e as AccordionStyleType,u as ActionButtons,f as ActionIcon,k as Align,g as Avatar,_ as AvatarGroup,h as Badge,p as BadgePosition,m as BadgeStyleType,v as BodyEnd,l as Button,a as ButtonSize,o as ButtonStyleType,s as ButtonType,b as Card,w as CardActions,C as CardContent,x as CardHeader,S as CardMedia,y as CardStyleType,T as Checkbox,D as Chip,O as ChipContainer,E as ChipStyleType,P as ColorPicker,t as ConfigProvider,I as ConfirmModal,H as DatePicker,U as Drawer,K as DropZone,W as DropZoneReturnType,G as DropZoneStatus,V as Dropdown,q as EmptyState,J as Fab,A as FloatingMenu,De as FormValidator,Ee as FormValidatorGroup,ne as IconLoading,Y as IconPicker,X as IdleManager,B as InfiniteBlock,N as Input,Z as InputDropdown,M as InputType,d as InteractableDiv,$ as KanbanBoard,Q as KanbanColumn,te as KlipyPicker,F as Modal,re as NumberInput,ie as OptionPicker,ae as Overscroll,oe as ProgressBar,c as Ripple,se as RoomDrawer,ce as RoomViewer,le as ScrollbarProvider,ee as SearchInput,fe as Skeleton,ue as SkeletonAnimation,de as SkeletonVariant,i as SpinnerLoading,pe as Stepper,me as Sticky,he as Switch,ge as TabHeader,_e as Textarea,ye as ThemeProvider,xe as TimeInput,Ce as ToastProvider,j as Tooltip,ze as ValidatableComponent,Re as Validators,we as VirtualList,Te as Wizard,ve as defaultTheme,L as getLocale,Oe as hasEightPasswordChars,ke as hasOnePasswordDigit,Ae as hasOnePasswordLetter,je as isBic,Me as isDate,Ne as isEmail,Pe as isISODate,Fe as isNumber,Ie as isPassword,Le as isURL,R as mapLocale,z as setLocale,Se as showToast,n as useComponentDefaults,Be as useFormValidator,Ve as useFormValidatorGroup,be as useTheme};