@activecollab/components 2.0.261 → 2.0.262

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.
@@ -100,7 +100,7 @@ var EditableText = exports.EditableText = /*#__PURE__*/(0, _react.forwardRef)(fu
100
100
  }, []);
101
101
  if (multiline) {
102
102
  return /*#__PURE__*/_react.default.createElement(_Styles.StyledDiv, _extends({
103
- ref: wrapRef
103
+ ref: ref || wrapRef
104
104
  }, props, {
105
105
  $multiline: multiline
106
106
  }), /*#__PURE__*/_react.default.createElement(_Styles.StyledMultilineSpan, {
@@ -1 +1 @@
1
- {"version":3,"file":"EditableText.js","names":["_react","_interopRequireWildcard","require","_classnames","_interopRequireDefault","_EditableContent","_Styles","_excluded","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","ownKeys","keys","getOwnPropertySymbols","o","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","key","value","_toPropertyKey","configurable","writable","_toPrimitive","String","Symbol","toPrimitive","TypeError","Number","_extends","assign","bind","target","source","_slicedToArray","arr","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","minLen","_arrayLikeToArray","toString","slice","constructor","name","Array","from","test","len","arr2","l","iterator","f","next","done","return","isArray","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","sourceSymbolKeys","indexOf","propertyIsEnumerable","sourceKeys","EditableText","exports","forwardRef","_ref","ref","onSave","onCancel","inputProps","allowEmptyString","_ref$multiline","multiline","_ref$variant","variant","weight","_ref$disabled","disabled","invalid","wrapRef","children","props","_useState","useState","_useState2","currentValue","setCurrentValue","_useState3","_useState4","prevValue","setPrevValue","escapeRef","useRef","intTextareaRef","useEffect","handleBlur","useCallback","current","trim","scrollLeft","handleFocus","textarea","setSelectionRange","handleKeyDown","blur","handleChange","createElement","StyledDiv","$multiline","StyledMultilineSpan","forwardedAs","$disabled","className","onClick","focus","replace","StyledTextareaSpan","onFocus","onBlur","onKeyDown","onChange","placeholder","classNames","rows","EditableContent","type","displayName"],"sources":["../../../../src/components/EditableText/EditableText.tsx"],"sourcesContent":["import React, {\n ChangeEvent,\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\n\nimport classNames from \"classnames\";\n\nimport {\n EditableContent,\n EditableContentInterface,\n} from \"../EditableContent/EditableContent\";\nimport {\n StyledDiv,\n StyledMultilineSpan,\n StyledTextareaSpan,\n} from \"../EditableContent/Styles\";\n\nexport interface EditableTextInterface extends EditableContentInterface {\n /** Value to display. */\n value?: string | null;\n /** Optional callback called on enter, click outside and tab. */\n onSave?: (e: ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => void;\n /** Optional callback called on input reset. */\n onCancel?: () => void;\n /** If true, setting empty value will save it, instead of revert to previous value. */\n allowEmptyString?: boolean;\n /** If true, shows a textarea instead of input for multiline editing. */\n multiline?: boolean;\n /** Children content to display */\n children?: React.ReactNode;\n}\n\nexport const EditableText = forwardRef<HTMLDivElement, EditableTextInterface>(\n (\n {\n onSave,\n onCancel,\n value,\n inputProps,\n allowEmptyString,\n multiline = false,\n variant = \"Body 2\",\n weight,\n disabled = false,\n invalid,\n wrapRef,\n children,\n ...props\n },\n ref\n ) => {\n const [currentValue, setCurrentValue] = useState(value);\n const [prevValue, setPrevValue] = useState(value);\n const escapeRef = useRef(false);\n const intTextareaRef = useRef<HTMLTextAreaElement>(null);\n\n useEffect(() => {\n if (currentValue !== value) {\n setCurrentValue(value);\n setPrevValue(value);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value]);\n\n const handleBlur = useCallback(\n (e) => {\n if (escapeRef.current) {\n setCurrentValue(prevValue);\n escapeRef.current = false;\n } else {\n if (\n e.target.value.trim().length > 0 &&\n prevValue !== e.target.value\n ) {\n setPrevValue(e.target.value);\n setCurrentValue(e.target.value);\n typeof onSave === \"function\" && onSave(e);\n } else {\n !allowEmptyString\n ? setCurrentValue(prevValue)\n : typeof onSave === \"function\" &&\n prevValue !== e.target.value &&\n onSave(e);\n }\n }\n // Reset scroll position for textarea\n if (multiline && intTextareaRef?.current) {\n intTextareaRef.current.scrollLeft = 0;\n }\n },\n [allowEmptyString, onSave, prevValue, multiline]\n );\n\n const handleFocus = useCallback(\n (e) => {\n if (multiline) {\n const textarea = e.target;\n const length = textarea.value.length;\n textarea.setSelectionRange(length, length);\n }\n },\n [multiline]\n );\n\n const handleKeyDown = useCallback(\n (e) => {\n if (e.key === \"Enter\" && !multiline) {\n e.target.blur();\n }\n if (e.key === \"Escape\") {\n escapeRef.current = true;\n e.target.blur();\n typeof onCancel === \"function\" && onCancel();\n }\n },\n [onCancel, multiline]\n );\n\n const handleChange = useCallback((e) => {\n setCurrentValue(e.target.value);\n }, []);\n\n if (multiline) {\n return (\n <StyledDiv ref={wrapRef} {...props} $multiline={multiline}>\n <StyledMultilineSpan\n variant={variant}\n forwardedAs=\"span\"\n weight={weight}\n $disabled={disabled}\n invalid={invalid}\n className=\"presentation\"\n onClick={() => {\n if (!disabled && intTextareaRef.current) {\n intTextareaRef.current.focus();\n }\n }}\n >\n {children\n ? children\n : String(currentValue || \"\").replace(/\\n/g, \" \")}\n </StyledMultilineSpan>\n <StyledTextareaSpan\n ref={intTextareaRef}\n forwardedAs=\"textarea\"\n variant={variant}\n weight={weight}\n value={currentValue ?? \"\"}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n onChange={handleChange}\n disabled={disabled}\n invalid={invalid}\n data-form-type=\"other\"\n placeholder={inputProps?.placeholder}\n className={classNames(\"c-textarea\", inputProps?.className)}\n rows={3}\n {...inputProps}\n />\n </StyledDiv>\n );\n }\n\n return (\n <EditableContent\n {...props}\n variant={variant}\n weight={weight}\n disabled={disabled}\n invalid={invalid}\n wrapRef={wrapRef}\n ref={ref}\n inputProps={{\n ...inputProps,\n value: currentValue ?? \"\",\n onBlur: handleBlur,\n onKeyDown: handleKeyDown,\n onChange: handleChange,\n type: \"text\",\n className: classNames(\"c-input\", inputProps?.className),\n }}\n >\n {children}\n </EditableContent>\n );\n }\n);\n\nEditableText.displayName = \"EditableText\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"EditableText.js","names":["_react","_interopRequireWildcard","require","_classnames","_interopRequireDefault","_EditableContent","_Styles","_excluded","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","ownKeys","keys","getOwnPropertySymbols","o","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","key","value","_toPropertyKey","configurable","writable","_toPrimitive","String","Symbol","toPrimitive","TypeError","Number","_extends","assign","bind","target","source","_slicedToArray","arr","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","minLen","_arrayLikeToArray","toString","slice","constructor","name","Array","from","test","len","arr2","l","iterator","f","next","done","return","isArray","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","sourceSymbolKeys","indexOf","propertyIsEnumerable","sourceKeys","EditableText","exports","forwardRef","_ref","ref","onSave","onCancel","inputProps","allowEmptyString","_ref$multiline","multiline","_ref$variant","variant","weight","_ref$disabled","disabled","invalid","wrapRef","children","props","_useState","useState","_useState2","currentValue","setCurrentValue","_useState3","_useState4","prevValue","setPrevValue","escapeRef","useRef","intTextareaRef","useEffect","handleBlur","useCallback","current","trim","scrollLeft","handleFocus","textarea","setSelectionRange","handleKeyDown","blur","handleChange","createElement","StyledDiv","$multiline","StyledMultilineSpan","forwardedAs","$disabled","className","onClick","focus","replace","StyledTextareaSpan","onFocus","onBlur","onKeyDown","onChange","placeholder","classNames","rows","EditableContent","type","displayName"],"sources":["../../../../src/components/EditableText/EditableText.tsx"],"sourcesContent":["import React, {\n ChangeEvent,\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\n\nimport classNames from \"classnames\";\n\nimport {\n EditableContent,\n EditableContentInterface,\n} from \"../EditableContent/EditableContent\";\nimport {\n StyledDiv,\n StyledMultilineSpan,\n StyledTextareaSpan,\n} from \"../EditableContent/Styles\";\n\nexport interface EditableTextInterface extends EditableContentInterface {\n /** Value to display. */\n value?: string | null;\n /** Optional callback called on enter, click outside and tab. */\n onSave?: (e: ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => void;\n /** Optional callback called on input reset. */\n onCancel?: () => void;\n /** If true, setting empty value will save it, instead of revert to previous value. */\n allowEmptyString?: boolean;\n /** If true, shows a textarea instead of input for multiline editing. */\n multiline?: boolean;\n /** Children content to display */\n children?: React.ReactNode;\n}\n\nexport const EditableText = forwardRef<HTMLDivElement, EditableTextInterface>(\n (\n {\n onSave,\n onCancel,\n value,\n inputProps,\n allowEmptyString,\n multiline = false,\n variant = \"Body 2\",\n weight,\n disabled = false,\n invalid,\n wrapRef,\n children,\n ...props\n },\n ref\n ) => {\n const [currentValue, setCurrentValue] = useState(value);\n const [prevValue, setPrevValue] = useState(value);\n const escapeRef = useRef(false);\n const intTextareaRef = useRef<HTMLTextAreaElement>(null);\n\n useEffect(() => {\n if (currentValue !== value) {\n setCurrentValue(value);\n setPrevValue(value);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value]);\n\n const handleBlur = useCallback(\n (e) => {\n if (escapeRef.current) {\n setCurrentValue(prevValue);\n escapeRef.current = false;\n } else {\n if (\n e.target.value.trim().length > 0 &&\n prevValue !== e.target.value\n ) {\n setPrevValue(e.target.value);\n setCurrentValue(e.target.value);\n typeof onSave === \"function\" && onSave(e);\n } else {\n !allowEmptyString\n ? setCurrentValue(prevValue)\n : typeof onSave === \"function\" &&\n prevValue !== e.target.value &&\n onSave(e);\n }\n }\n // Reset scroll position for textarea\n if (multiline && intTextareaRef?.current) {\n intTextareaRef.current.scrollLeft = 0;\n }\n },\n [allowEmptyString, onSave, prevValue, multiline]\n );\n\n const handleFocus = useCallback(\n (e) => {\n if (multiline) {\n const textarea = e.target;\n const length = textarea.value.length;\n textarea.setSelectionRange(length, length);\n }\n },\n [multiline]\n );\n\n const handleKeyDown = useCallback(\n (e) => {\n if (e.key === \"Enter\" && !multiline) {\n e.target.blur();\n }\n if (e.key === \"Escape\") {\n escapeRef.current = true;\n e.target.blur();\n typeof onCancel === \"function\" && onCancel();\n }\n },\n [onCancel, multiline]\n );\n\n const handleChange = useCallback((e) => {\n setCurrentValue(e.target.value);\n }, []);\n\n if (multiline) {\n return (\n <StyledDiv ref={ref || wrapRef} {...props} $multiline={multiline}>\n <StyledMultilineSpan\n variant={variant}\n forwardedAs=\"span\"\n weight={weight}\n $disabled={disabled}\n invalid={invalid}\n className=\"presentation\"\n onClick={() => {\n if (!disabled && intTextareaRef.current) {\n intTextareaRef.current.focus();\n }\n }}\n >\n {children\n ? children\n : String(currentValue || \"\").replace(/\\n/g, \" \")}\n </StyledMultilineSpan>\n <StyledTextareaSpan\n ref={intTextareaRef}\n forwardedAs=\"textarea\"\n variant={variant}\n weight={weight}\n value={currentValue ?? \"\"}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n onChange={handleChange}\n disabled={disabled}\n invalid={invalid}\n data-form-type=\"other\"\n placeholder={inputProps?.placeholder}\n className={classNames(\"c-textarea\", inputProps?.className)}\n rows={3}\n {...inputProps}\n />\n </StyledDiv>\n );\n }\n\n return (\n <EditableContent\n {...props}\n variant={variant}\n weight={weight}\n disabled={disabled}\n invalid={invalid}\n wrapRef={wrapRef}\n ref={ref}\n inputProps={{\n ...inputProps,\n value: currentValue ?? \"\",\n onBlur: handleBlur,\n onKeyDown: handleKeyDown,\n onChange: handleChange,\n type: \"text\",\n className: classNames(\"c-input\", inputProps?.className),\n }}\n >\n {children}\n </EditableContent>\n );\n }\n);\n\nEditableText.displayName = \"EditableText\";\n"],"mappings":"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"}
@@ -70,7 +70,7 @@ export const EditableText = /*#__PURE__*/forwardRef((_ref, ref) => {
70
70
  }, []);
71
71
  if (multiline) {
72
72
  return /*#__PURE__*/React.createElement(StyledDiv, _extends({
73
- ref: wrapRef
73
+ ref: ref || wrapRef
74
74
  }, props, {
75
75
  $multiline: multiline
76
76
  }), /*#__PURE__*/React.createElement(StyledMultilineSpan, {
@@ -1 +1 @@
1
- {"version":3,"file":"EditableText.js","names":["React","forwardRef","useCallback","useEffect","useRef","useState","classNames","EditableContent","StyledDiv","StyledMultilineSpan","StyledTextareaSpan","EditableText","_ref","ref","onSave","onCancel","value","inputProps","allowEmptyString","multiline","variant","weight","disabled","invalid","wrapRef","children","props","currentValue","setCurrentValue","prevValue","setPrevValue","escapeRef","intTextareaRef","handleBlur","e","current","target","trim","length","scrollLeft","handleFocus","textarea","setSelectionRange","handleKeyDown","key","blur","handleChange","createElement","_extends","$multiline","forwardedAs","$disabled","className","onClick","focus","String","replace","onFocus","onBlur","onKeyDown","onChange","placeholder","rows","type","displayName"],"sources":["../../../../src/components/EditableText/EditableText.tsx"],"sourcesContent":["import React, {\n ChangeEvent,\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\n\nimport classNames from \"classnames\";\n\nimport {\n EditableContent,\n EditableContentInterface,\n} from \"../EditableContent/EditableContent\";\nimport {\n StyledDiv,\n StyledMultilineSpan,\n StyledTextareaSpan,\n} from \"../EditableContent/Styles\";\n\nexport interface EditableTextInterface extends EditableContentInterface {\n /** Value to display. */\n value?: string | null;\n /** Optional callback called on enter, click outside and tab. */\n onSave?: (e: ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => void;\n /** Optional callback called on input reset. */\n onCancel?: () => void;\n /** If true, setting empty value will save it, instead of revert to previous value. */\n allowEmptyString?: boolean;\n /** If true, shows a textarea instead of input for multiline editing. */\n multiline?: boolean;\n /** Children content to display */\n children?: React.ReactNode;\n}\n\nexport const EditableText = forwardRef<HTMLDivElement, EditableTextInterface>(\n (\n {\n onSave,\n onCancel,\n value,\n inputProps,\n allowEmptyString,\n multiline = false,\n variant = \"Body 2\",\n weight,\n disabled = false,\n invalid,\n wrapRef,\n children,\n ...props\n },\n ref\n ) => {\n const [currentValue, setCurrentValue] = useState(value);\n const [prevValue, setPrevValue] = useState(value);\n const escapeRef = useRef(false);\n const intTextareaRef = useRef<HTMLTextAreaElement>(null);\n\n useEffect(() => {\n if (currentValue !== value) {\n setCurrentValue(value);\n setPrevValue(value);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value]);\n\n const handleBlur = useCallback(\n (e) => {\n if (escapeRef.current) {\n setCurrentValue(prevValue);\n escapeRef.current = false;\n } else {\n if (\n e.target.value.trim().length > 0 &&\n prevValue !== e.target.value\n ) {\n setPrevValue(e.target.value);\n setCurrentValue(e.target.value);\n typeof onSave === \"function\" && onSave(e);\n } else {\n !allowEmptyString\n ? setCurrentValue(prevValue)\n : typeof onSave === \"function\" &&\n prevValue !== e.target.value &&\n onSave(e);\n }\n }\n // Reset scroll position for textarea\n if (multiline && intTextareaRef?.current) {\n intTextareaRef.current.scrollLeft = 0;\n }\n },\n [allowEmptyString, onSave, prevValue, multiline]\n );\n\n const handleFocus = useCallback(\n (e) => {\n if (multiline) {\n const textarea = e.target;\n const length = textarea.value.length;\n textarea.setSelectionRange(length, length);\n }\n },\n [multiline]\n );\n\n const handleKeyDown = useCallback(\n (e) => {\n if (e.key === \"Enter\" && !multiline) {\n e.target.blur();\n }\n if (e.key === \"Escape\") {\n escapeRef.current = true;\n e.target.blur();\n typeof onCancel === \"function\" && onCancel();\n }\n },\n [onCancel, multiline]\n );\n\n const handleChange = useCallback((e) => {\n setCurrentValue(e.target.value);\n }, []);\n\n if (multiline) {\n return (\n <StyledDiv ref={wrapRef} {...props} $multiline={multiline}>\n <StyledMultilineSpan\n variant={variant}\n forwardedAs=\"span\"\n weight={weight}\n $disabled={disabled}\n invalid={invalid}\n className=\"presentation\"\n onClick={() => {\n if (!disabled && intTextareaRef.current) {\n intTextareaRef.current.focus();\n }\n }}\n >\n {children\n ? children\n : String(currentValue || \"\").replace(/\\n/g, \" \")}\n </StyledMultilineSpan>\n <StyledTextareaSpan\n ref={intTextareaRef}\n forwardedAs=\"textarea\"\n variant={variant}\n weight={weight}\n value={currentValue ?? \"\"}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n onChange={handleChange}\n disabled={disabled}\n invalid={invalid}\n data-form-type=\"other\"\n placeholder={inputProps?.placeholder}\n className={classNames(\"c-textarea\", inputProps?.className)}\n rows={3}\n {...inputProps}\n />\n </StyledDiv>\n );\n }\n\n return (\n <EditableContent\n {...props}\n variant={variant}\n weight={weight}\n disabled={disabled}\n invalid={invalid}\n wrapRef={wrapRef}\n ref={ref}\n inputProps={{\n ...inputProps,\n value: currentValue ?? \"\",\n onBlur: handleBlur,\n onKeyDown: handleKeyDown,\n onChange: handleChange,\n type: \"text\",\n className: classNames(\"c-input\", inputProps?.className),\n }}\n >\n {children}\n </EditableContent>\n );\n }\n);\n\nEditableText.displayName = \"EditableText\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"EditableText.js","names":["React","forwardRef","useCallback","useEffect","useRef","useState","classNames","EditableContent","StyledDiv","StyledMultilineSpan","StyledTextareaSpan","EditableText","_ref","ref","onSave","onCancel","value","inputProps","allowEmptyString","multiline","variant","weight","disabled","invalid","wrapRef","children","props","currentValue","setCurrentValue","prevValue","setPrevValue","escapeRef","intTextareaRef","handleBlur","e","current","target","trim","length","scrollLeft","handleFocus","textarea","setSelectionRange","handleKeyDown","key","blur","handleChange","createElement","_extends","$multiline","forwardedAs","$disabled","className","onClick","focus","String","replace","onFocus","onBlur","onKeyDown","onChange","placeholder","rows","type","displayName"],"sources":["../../../../src/components/EditableText/EditableText.tsx"],"sourcesContent":["import React, {\n ChangeEvent,\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\n\nimport classNames from \"classnames\";\n\nimport {\n EditableContent,\n EditableContentInterface,\n} from \"../EditableContent/EditableContent\";\nimport {\n StyledDiv,\n StyledMultilineSpan,\n StyledTextareaSpan,\n} from \"../EditableContent/Styles\";\n\nexport interface EditableTextInterface extends EditableContentInterface {\n /** Value to display. */\n value?: string | null;\n /** Optional callback called on enter, click outside and tab. */\n onSave?: (e: ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => void;\n /** Optional callback called on input reset. */\n onCancel?: () => void;\n /** If true, setting empty value will save it, instead of revert to previous value. */\n allowEmptyString?: boolean;\n /** If true, shows a textarea instead of input for multiline editing. */\n multiline?: boolean;\n /** Children content to display */\n children?: React.ReactNode;\n}\n\nexport const EditableText = forwardRef<HTMLDivElement, EditableTextInterface>(\n (\n {\n onSave,\n onCancel,\n value,\n inputProps,\n allowEmptyString,\n multiline = false,\n variant = \"Body 2\",\n weight,\n disabled = false,\n invalid,\n wrapRef,\n children,\n ...props\n },\n ref\n ) => {\n const [currentValue, setCurrentValue] = useState(value);\n const [prevValue, setPrevValue] = useState(value);\n const escapeRef = useRef(false);\n const intTextareaRef = useRef<HTMLTextAreaElement>(null);\n\n useEffect(() => {\n if (currentValue !== value) {\n setCurrentValue(value);\n setPrevValue(value);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value]);\n\n const handleBlur = useCallback(\n (e) => {\n if (escapeRef.current) {\n setCurrentValue(prevValue);\n escapeRef.current = false;\n } else {\n if (\n e.target.value.trim().length > 0 &&\n prevValue !== e.target.value\n ) {\n setPrevValue(e.target.value);\n setCurrentValue(e.target.value);\n typeof onSave === \"function\" && onSave(e);\n } else {\n !allowEmptyString\n ? setCurrentValue(prevValue)\n : typeof onSave === \"function\" &&\n prevValue !== e.target.value &&\n onSave(e);\n }\n }\n // Reset scroll position for textarea\n if (multiline && intTextareaRef?.current) {\n intTextareaRef.current.scrollLeft = 0;\n }\n },\n [allowEmptyString, onSave, prevValue, multiline]\n );\n\n const handleFocus = useCallback(\n (e) => {\n if (multiline) {\n const textarea = e.target;\n const length = textarea.value.length;\n textarea.setSelectionRange(length, length);\n }\n },\n [multiline]\n );\n\n const handleKeyDown = useCallback(\n (e) => {\n if (e.key === \"Enter\" && !multiline) {\n e.target.blur();\n }\n if (e.key === \"Escape\") {\n escapeRef.current = true;\n e.target.blur();\n typeof onCancel === \"function\" && onCancel();\n }\n },\n [onCancel, multiline]\n );\n\n const handleChange = useCallback((e) => {\n setCurrentValue(e.target.value);\n }, []);\n\n if (multiline) {\n return (\n <StyledDiv ref={ref || wrapRef} {...props} $multiline={multiline}>\n <StyledMultilineSpan\n variant={variant}\n forwardedAs=\"span\"\n weight={weight}\n $disabled={disabled}\n invalid={invalid}\n className=\"presentation\"\n onClick={() => {\n if (!disabled && intTextareaRef.current) {\n intTextareaRef.current.focus();\n }\n }}\n >\n {children\n ? children\n : String(currentValue || \"\").replace(/\\n/g, \" \")}\n </StyledMultilineSpan>\n <StyledTextareaSpan\n ref={intTextareaRef}\n forwardedAs=\"textarea\"\n variant={variant}\n weight={weight}\n value={currentValue ?? \"\"}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n onChange={handleChange}\n disabled={disabled}\n invalid={invalid}\n data-form-type=\"other\"\n placeholder={inputProps?.placeholder}\n className={classNames(\"c-textarea\", inputProps?.className)}\n rows={3}\n {...inputProps}\n />\n </StyledDiv>\n );\n }\n\n return (\n <EditableContent\n {...props}\n variant={variant}\n weight={weight}\n disabled={disabled}\n invalid={invalid}\n wrapRef={wrapRef}\n ref={ref}\n inputProps={{\n ...inputProps,\n value: currentValue ?? \"\",\n onBlur: handleBlur,\n onKeyDown: handleKeyDown,\n onChange: handleChange,\n type: \"text\",\n className: classNames(\"c-input\", inputProps?.className),\n }}\n >\n {children}\n </EditableContent>\n );\n }\n);\n\nEditableText.displayName = \"EditableText\";\n"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -22692,7 +22692,7 @@
22692
22692
  }, []);
22693
22693
  if (multiline) {
22694
22694
  return /*#__PURE__*/React__default["default"].createElement(StyledDiv, _extends({
22695
- ref: wrapRef
22695
+ ref: ref || wrapRef
22696
22696
  }, props, {
22697
22697
  $multiline: multiline
22698
22698
  }), /*#__PURE__*/React__default["default"].createElement(StyledMultilineSpan, {