@activecollab/components 2.0.259 → 2.0.261

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"EditableText.js","names":["React","forwardRef","useCallback","useEffect","useRef","useState","classNames","styled","css","EditableContent","StyledDiv","StyledSpan","Typography","StyledTextareaSpan","withConfig","displayName","componentId","_ref","invalid","EditableText","_ref2","ref","onSave","onCancel","value","inputProps","allowEmptyString","multiline","variant","weight","disabled","wrapRef","children","props","currentValue","setCurrentValue","prevValue","setPrevValue","escapeRef","intTextareaRef","isTextareaFocused","setIsTextareaFocused","handleBlur","e","current","target","trim","length","scrollLeft","handleFocus","handleKeyDown","key","blur","handleChange","createElement","_extends","forwardedAs","$disabled","className","String","replace","onFocus","onBlur","onKeyDown","onChange","placeholder","rows","type"],"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\";\nimport styled, { css } from \"styled-components\";\nimport tw from \"twin.macro\";\n\nimport {\n EditableContent,\n EditableContentInterface,\n} from \"../EditableContent/EditableContent\";\nimport { StyledDiv, StyledSpan } from \"../EditableContent/Styles\";\nimport { Typography } from \"../Typography/Typography\";\n\nconst StyledTextareaSpan = styled(Typography)`\n ${tw`\n tw-absolute\n tw-inset-0\n tw-border\n tw-border-transparent\n tw-border-solid\n hover:tw-border-theme-700\n focus-within:tw-border-theme-700\n tw-rounded-md\n tw-box-border\n tw-w-full`}\n\n background-color: var(--input-background-color, #ffffff);\n padding-left: 4px;\n padding-right: 4px;\n padding-top: 1px;\n padding-bottom: 1px;\n font-variant-numeric: tabular-nums;\n outline-width: 0px;\n outline: none;\n resize: none;\n white-space: pre-wrap;\n overflow-wrap: break-word;\n height: calc(1.5em * 3 + 2px); /* 3 rows height: line-height * 3 + padding */\n min-height: calc(1.5em * 3 + 2px);\n opacity: 0;\n\n &:focus {\n opacity: 1;\n background-color: var(--input-background-color, #f8f9fa);\n }\n\n &:disabled {\n opacity: 0;\n }\n\n ${({ invalid }) =>\n invalid &&\n css`\n border-color: var(--red-alert) !important;\n `}\n`;\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 const [isTextareaFocused, setIsTextareaFocused] = useState(false);\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 setIsTextareaFocused(false);\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 setIsTextareaFocused(true);\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}>\n <StyledSpan\n variant={variant}\n forwardedAs=\"span\"\n weight={weight}\n $disabled={!isTextareaFocused}\n className=\"presentation\"\n >\n {children\n ? children\n : String(currentValue || \"\").replace(/\\n/g, \" \")}\n </StyledSpan>\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={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
@@ -22499,19 +22499,22 @@
22499
22499
  var StyledDiv = styled__default["default"].div.withConfig({
22500
22500
  displayName: "Styles__StyledDiv",
22501
22501
  componentId: "sc-1wapx2a-0"
22502
- })(["", " ", " ", ""], FontStyle, BoxSizingStyle, {
22502
+ })(["", " ", " ", " ", ""], FontStyle, BoxSizingStyle, {
22503
22503
  "position": "relative",
22504
22504
  "display": "inline-block",
22505
22505
  "maxWidth": "100%"
22506
+ }, function (_ref) {
22507
+ var $multiline = _ref.$multiline;
22508
+ return $multiline && styled.css(["position:relative;display:flex;"]);
22506
22509
  });
22507
22510
  var StyledSpan = styled__default["default"](Typography).withConfig({
22508
22511
  displayName: "Styles__StyledSpan",
22509
22512
  componentId: "sc-1wapx2a-1"
22510
- })(["visibility:hidden;display:block;padding-left:4px;padding-right:4px;padding-top:1px;padding-bottom:1px;position:relative;border:1px solid transparent;border-radius:6px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:pre;font-variant-numeric:tabular-nums;", " ", " &:empty:before{content:\" \";}"], function (_ref) {
22511
- var $disabled = _ref.$disabled;
22512
- return $disabled && styled.css(["visibility:visible;"]);
22513
- }, function (_ref2) {
22514
- var invalid = _ref2.invalid;
22513
+ })(["visibility:hidden;display:block;padding-left:4px;padding-right:4px;padding-top:1px;padding-bottom:1px;position:relative;border:1px solid transparent;border-radius:6px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:pre;font-variant-numeric:tabular-nums;", " ", " &:empty:before{content:\" \";}"], function (_ref2) {
22514
+ var $disabled = _ref2.$disabled;
22515
+ return $disabled && styled.css(["visibility:visible;cursor:default !important;"]);
22516
+ }, function (_ref3) {
22517
+ var invalid = _ref3.invalid;
22515
22518
  return invalid && styled.css(["border:1px solid var(--red-alert);"]);
22516
22519
  });
22517
22520
  StyledSpan.displayName = "StyledSpan";
@@ -22536,11 +22539,39 @@
22536
22539
  ":hover": {
22537
22540
  "borderColor": "var(--color-theme-700)"
22538
22541
  }
22539
- }, function (_ref3) {
22540
- var invalid = _ref3.invalid;
22542
+ }, function (_ref4) {
22543
+ var invalid = _ref4.invalid;
22541
22544
  return invalid && styled.css(["border-color:var(--red-alert) !important;"]);
22542
22545
  });
22543
22546
  StyledInput$1.displayName = "StyledInput";
22547
+ var StyledMultilineSpan = styled__default["default"](StyledSpan).withConfig({
22548
+ displayName: "Styles__StyledMultilineSpan",
22549
+ componentId: "sc-1wapx2a-3"
22550
+ })(["cursor:", ";z-index:2;width:100%;visibility:visible !important;&:hover{border-color:", ";}"], function (_ref5) {
22551
+ var $disabled = _ref5.$disabled;
22552
+ return $disabled ? "default" : "text !important";
22553
+ }, function (_ref6) {
22554
+ var invalid = _ref6.invalid,
22555
+ $disabled = _ref6.$disabled;
22556
+ return invalid ? "var(--red-alert)" : $disabled ? "transparent" : "var(--border-primary)";
22557
+ });
22558
+ StyledMultilineSpan.displayName = "StyledMultilineSpan";
22559
+ var StyledTextareaSpan = styled__default["default"](Typography).withConfig({
22560
+ displayName: "Styles__StyledTextareaSpan",
22561
+ componentId: "sc-1wapx2a-4"
22562
+ })(["", " background-color:var(--input-background-color);border-color:var(--color-theme-500);padding-left:4px;padding-right:4px;padding-top:1px;padding-bottom:1px;font-variant-numeric:tabular-nums;outline-width:0px;outline:none;resize:none;white-space:pre-wrap;overflow-wrap:break-word;height:calc(1.5em * 3 + 2px);min-height:calc(1.5em * 3 + 2px);opacity:0;pointer-events:none;z-index:1;&:focus{opacity:1;pointer-events:auto;background-color:var(--input-background-color);border-color:var(--color-primary);outline:none;z-index:3;}&:disabled{opacity:0;pointer-events:none;}", ""], {
22563
+ "position": "absolute",
22564
+ "inset": "0px",
22565
+ "boxSizing": "border-box",
22566
+ "width": "100%",
22567
+ "borderRadius": "0.375rem",
22568
+ "borderWidth": "1px",
22569
+ "borderStyle": "solid"
22570
+ }, function (_ref7) {
22571
+ var invalid = _ref7.invalid;
22572
+ return invalid && styled.css(["border-color:var(--red-alert) !important;"]);
22573
+ });
22574
+ StyledTextareaSpan.displayName = "StyledTextareaSpan";
22544
22575
 
22545
22576
  var _excluded$g = ["className", "variant", "weight", "disabled", "inputProps", "wrapRef", "children", "invalid"];
22546
22577
  var EditableContent = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
@@ -22587,45 +22618,23 @@
22587
22618
  EditableContent.displayName = "EditableContent";
22588
22619
 
22589
22620
  var _excluded$f = ["onSave", "onCancel", "value", "inputProps", "allowEmptyString", "multiline", "variant", "weight", "disabled", "invalid", "wrapRef", "children"];
22590
- var StyledTextareaSpan = styled__default["default"](Typography).withConfig({
22591
- displayName: "EditableText__StyledTextareaSpan",
22592
- componentId: "sc-j2ewzm-0"
22593
- })(["", " background-color:var(--input-background-color,#ffffff);padding-left:4px;padding-right:4px;padding-top:1px;padding-bottom:1px;font-variant-numeric:tabular-nums;outline-width:0px;outline:none;resize:none;white-space:pre-wrap;overflow-wrap:break-word;height:calc(1.5em * 3 + 2px);min-height:calc(1.5em * 3 + 2px);opacity:0;&:focus{opacity:1;background-color:var(--input-background-color,#f8f9fa);}&:disabled{opacity:0;}", ""], {
22594
- "position": "absolute",
22595
- "inset": "0px",
22596
- "boxSizing": "border-box",
22597
- "width": "100%",
22598
- "borderRadius": "0.375rem",
22599
- "borderWidth": "1px",
22600
- "borderStyle": "solid",
22601
- "borderColor": "transparent",
22602
- ":focus-within": {
22603
- "borderColor": "var(--color-theme-700)"
22604
- },
22605
- ":hover": {
22606
- "borderColor": "var(--color-theme-700)"
22607
- }
22608
- }, function (_ref) {
22609
- var invalid = _ref.invalid;
22610
- return invalid && styled.css(["border-color:var(--red-alert) !important;"]);
22611
- });
22612
- var EditableText = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {
22613
- var onSave = _ref2.onSave,
22614
- onCancel = _ref2.onCancel,
22615
- value = _ref2.value,
22616
- inputProps = _ref2.inputProps,
22617
- allowEmptyString = _ref2.allowEmptyString,
22618
- _ref2$multiline = _ref2.multiline,
22619
- multiline = _ref2$multiline === void 0 ? false : _ref2$multiline,
22620
- _ref2$variant = _ref2.variant,
22621
- variant = _ref2$variant === void 0 ? "Body 2" : _ref2$variant,
22622
- weight = _ref2.weight,
22623
- _ref2$disabled = _ref2.disabled,
22624
- disabled = _ref2$disabled === void 0 ? false : _ref2$disabled,
22625
- invalid = _ref2.invalid,
22626
- wrapRef = _ref2.wrapRef,
22627
- children = _ref2.children,
22628
- props = _objectWithoutProperties(_ref2, _excluded$f);
22621
+ var EditableText = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
22622
+ var onSave = _ref.onSave,
22623
+ onCancel = _ref.onCancel,
22624
+ value = _ref.value,
22625
+ inputProps = _ref.inputProps,
22626
+ allowEmptyString = _ref.allowEmptyString,
22627
+ _ref$multiline = _ref.multiline,
22628
+ multiline = _ref$multiline === void 0 ? false : _ref$multiline,
22629
+ _ref$variant = _ref.variant,
22630
+ variant = _ref$variant === void 0 ? "Body 2" : _ref$variant,
22631
+ weight = _ref.weight,
22632
+ _ref$disabled = _ref.disabled,
22633
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
22634
+ invalid = _ref.invalid,
22635
+ wrapRef = _ref.wrapRef,
22636
+ children = _ref.children,
22637
+ props = _objectWithoutProperties(_ref, _excluded$f);
22629
22638
  var _useState = React.useState(value),
22630
22639
  _useState2 = _slicedToArray(_useState, 2),
22631
22640
  currentValue = _useState2[0],
@@ -22636,10 +22645,6 @@
22636
22645
  setPrevValue = _useState4[1];
22637
22646
  var escapeRef = React.useRef(false);
22638
22647
  var intTextareaRef = React.useRef(null);
22639
- var _useState5 = React.useState(false),
22640
- _useState6 = _slicedToArray(_useState5, 2),
22641
- isTextareaFocused = _useState6[0],
22642
- setIsTextareaFocused = _useState6[1];
22643
22648
  React.useEffect(function () {
22644
22649
  if (currentValue !== value) {
22645
22650
  setCurrentValue(value);
@@ -22648,7 +22653,6 @@
22648
22653
  // eslint-disable-next-line react-hooks/exhaustive-deps
22649
22654
  }, [value]);
22650
22655
  var handleBlur = React.useCallback(function (e) {
22651
- setIsTextareaFocused(false);
22652
22656
  if (escapeRef.current) {
22653
22657
  setCurrentValue(prevValue);
22654
22658
  escapeRef.current = false;
@@ -22666,9 +22670,13 @@
22666
22670
  intTextareaRef.current.scrollLeft = 0;
22667
22671
  }
22668
22672
  }, [allowEmptyString, onSave, prevValue, multiline]);
22669
- var handleFocus = React.useCallback(function () {
22670
- setIsTextareaFocused(true);
22671
- }, []);
22673
+ var handleFocus = React.useCallback(function (e) {
22674
+ if (multiline) {
22675
+ var textarea = e.target;
22676
+ var length = textarea.value.length;
22677
+ textarea.setSelectionRange(length, length);
22678
+ }
22679
+ }, [multiline]);
22672
22680
  var handleKeyDown = React.useCallback(function (e) {
22673
22681
  if (e.key === "Enter" && !multiline) {
22674
22682
  e.target.blur();
@@ -22685,12 +22693,20 @@
22685
22693
  if (multiline) {
22686
22694
  return /*#__PURE__*/React__default["default"].createElement(StyledDiv, _extends({
22687
22695
  ref: wrapRef
22688
- }, props), /*#__PURE__*/React__default["default"].createElement(StyledSpan, {
22696
+ }, props, {
22697
+ $multiline: multiline
22698
+ }), /*#__PURE__*/React__default["default"].createElement(StyledMultilineSpan, {
22689
22699
  variant: variant,
22690
22700
  forwardedAs: "span",
22691
22701
  weight: weight,
22692
- $disabled: !isTextareaFocused,
22693
- className: "presentation"
22702
+ $disabled: disabled,
22703
+ invalid: invalid,
22704
+ className: "presentation",
22705
+ onClick: function onClick() {
22706
+ if (!disabled && intTextareaRef.current) {
22707
+ intTextareaRef.current.focus();
22708
+ }
22709
+ }
22694
22710
  }, children ? children : String(currentValue || "").replace(/\n/g, " ")), /*#__PURE__*/React__default["default"].createElement(StyledTextareaSpan, _extends({
22695
22711
  ref: intTextareaRef,
22696
22712
  forwardedAs: "textarea",