# All files / form ResizingTextAreaWrapper.tsx

100% Statements 75/75
100% Branches 2/2
100% Functions 1/1
100% Lines 75/75

Press n or j to go to the next uncovered block, b, p or k for the previous block.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    761x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    47x
    47x
    47x
    47x
    47x
    47x
    47x
    47x
    47x
    47x
    47x
    47x
    47x
    47x
    47x
    47x
    47x
    47x
    47x
    47x
    47x
    47x
    47x
    47x
    47x
    47x
    47x
    47x
    47x
    47x
    47x
    47x
    47x
    47x
    47x
    47x
    47x
    47x
    47x
    47x
    47x
    47x
     import { cnb } from "cnbuilder";
    import {
      forwardRef,
      type CSSProperties,
      type HTMLAttributes,
      type Ref,
      type TextareaHTMLAttributes,
    } from "react";
    import { textArea } from "./textAreaStyles.js";

    /**
     * @remarks \@since 6.0.0
     * @internal
     */
    export interface ResizingTextAreaWrapperProps
      extends HTMLAttributes<HTMLDivElement> {
      maskId: string;
      maskRef: Ref<HTMLTextAreaElement>;
      defaultValue?: TextareaHTMLAttributes<HTMLTextAreaElement>["defaultValue"];
      rows: number;
      areaStyle?: CSSProperties;
      areaClassName?: string;
      disableTransition?: boolean;
    }

    /**
     * @remarks \@since 6.0.0
     * @internal
     */
    export const ResizingTextAreaWrapper = forwardRef<
      HTMLDivElement,
      ResizingTextAreaWrapperProps
    >(function ResizingTextAreaWrapper(props, ref) {
      const {
        className,
        rows,
        maskId,
        maskRef,
        areaStyle,
        areaClassName,
        defaultValue,
        disableTransition,
        children,
        ...remaining
      } = props;

      return (
        <div
          {...remaining}
          ref={ref}
          className={cnb(
            "rmd-textarea-container__inner",
            !disableTransition && "rmd-textarea-container__inner--animate",
            className
          )}
        >
          {children}
          <textarea
            aria-hidden
            id={maskId}
            ref={maskRef}
            defaultValue={defaultValue}
            readOnly
            tabIndex={-1}
            rows={rows}
            style={areaStyle}
            className={textArea({
              mask: true,
              resize: "auto",
              className: areaClassName,
            })}
          />
        </div>
      );
    });