@activecollab/components 2.0.275 → 2.0.276
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.
- package/dist/cjs/components/EditableText/EditableText.js +2 -0
- package/dist/cjs/components/EditableText/EditableText.js.map +1 -1
- package/dist/esm/components/EditableText/EditableText.d.ts.map +1 -1
- package/dist/esm/components/EditableText/EditableText.js +2 -0
- package/dist/esm/components/EditableText/EditableText.js.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/package.json +1 -1
|
@@ -89,6 +89,8 @@ var EditableText = exports.EditableText = /*#__PURE__*/(0, _react.forwardRef)(fu
|
|
|
89
89
|
e.target.blur();
|
|
90
90
|
}
|
|
91
91
|
if (e.key === "Escape") {
|
|
92
|
+
e.preventDefault();
|
|
93
|
+
e.stopPropagation();
|
|
92
94
|
escapeRef.current = true;
|
|
93
95
|
e.target.blur();
|
|
94
96
|
typeof onCancel === "function" && onCancel(e);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditableText.js","names":["_react","_interopRequireWildcard","require","_classnames","_interopRequireDefault","_EditableContent","_Styles","_excluded","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","value","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","_extends","assign","bind","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","a","_arrayLikeToArray","toString","slice","constructor","name","Array","from","test","l","iterator","u","next","done","return","isArray","_objectWithoutProperties","_objectWithoutPropertiesLoose","indexOf","propertyIsEnumerable","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","target","trim","scrollLeft","handleFocus","textarea","setSelectionRange","handleKeyDown","key","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?: (e) => 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(e);\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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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"EditableText.js","names":["_react","_interopRequireWildcard","require","_classnames","_interopRequireDefault","_EditableContent","_Styles","_excluded","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","value","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","_extends","assign","bind","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","a","_arrayLikeToArray","toString","slice","constructor","name","Array","from","test","l","iterator","u","next","done","return","isArray","_objectWithoutProperties","_objectWithoutPropertiesLoose","indexOf","propertyIsEnumerable","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","target","trim","scrollLeft","handleFocus","textarea","setSelectionRange","handleKeyDown","key","blur","preventDefault","stopPropagation","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?: (e) => 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 e.preventDefault();\n e.stopPropagation();\n escapeRef.current = true;\n e.target.blur();\n typeof onCancel === \"function\" && onCancel(e);\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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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditableText.d.ts","sourceRoot":"","sources":["../../../../src/components/EditableText/EditableText.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EACZ,WAAW,EAMZ,MAAM,OAAO,CAAC;AAIf,OAAO,EAEL,wBAAwB,EACzB,MAAM,oCAAoC,CAAC;AAO5C,MAAM,WAAW,qBAAsB,SAAQ,wBAAwB;IACrE,wBAAwB;IACxB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,gEAAgE;IAChE,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,gBAAgB,GAAG,mBAAmB,CAAC,KAAK,IAAI,CAAC;IAC1E,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAA,KAAK,IAAI,CAAC;IACvB,sFAAsF;IACtF,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,wEAAwE;IACxE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,eAAO,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"EditableText.d.ts","sourceRoot":"","sources":["../../../../src/components/EditableText/EditableText.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EACZ,WAAW,EAMZ,MAAM,OAAO,CAAC;AAIf,OAAO,EAEL,wBAAwB,EACzB,MAAM,oCAAoC,CAAC;AAO5C,MAAM,WAAW,qBAAsB,SAAQ,wBAAwB;IACrE,wBAAwB;IACxB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,gEAAgE;IAChE,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,gBAAgB,GAAG,mBAAmB,CAAC,KAAK,IAAI,CAAC;IAC1E,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAA,KAAK,IAAI,CAAC;IACvB,sFAAsF;IACtF,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,wEAAwE;IACxE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,eAAO,MAAM,YAAY,8FA6JxB,CAAC"}
|
|
@@ -62,6 +62,8 @@ export const EditableText = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
|
62
62
|
e.target.blur();
|
|
63
63
|
}
|
|
64
64
|
if (e.key === "Escape") {
|
|
65
|
+
e.preventDefault();
|
|
66
|
+
e.stopPropagation();
|
|
65
67
|
escapeRef.current = true;
|
|
66
68
|
e.target.blur();
|
|
67
69
|
typeof onCancel === "function" && onCancel(e);
|
|
@@ -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","_objectWithoutPropertiesLoose","_excluded","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?: (e) => 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(e);\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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","ignoreList":[]}
|
|
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","_objectWithoutPropertiesLoose","_excluded","currentValue","setCurrentValue","prevValue","setPrevValue","escapeRef","intTextareaRef","handleBlur","e","current","target","trim","length","scrollLeft","handleFocus","textarea","setSelectionRange","handleKeyDown","key","blur","preventDefault","stopPropagation","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?: (e) => 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 e.preventDefault();\n e.stopPropagation();\n escapeRef.current = true;\n e.target.blur();\n typeof onCancel === \"function\" && onCancel(e);\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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","ignoreList":[]}
|
package/dist/index.js
CHANGED
|
@@ -22863,6 +22863,8 @@
|
|
|
22863
22863
|
e.target.blur();
|
|
22864
22864
|
}
|
|
22865
22865
|
if (e.key === "Escape") {
|
|
22866
|
+
e.preventDefault();
|
|
22867
|
+
e.stopPropagation();
|
|
22866
22868
|
escapeRef.current = true;
|
|
22867
22869
|
e.target.blur();
|
|
22868
22870
|
typeof onCancel === "function" && onCancel(e);
|