-
Notifications
You must be signed in to change notification settings - Fork 21
Expand file tree
/
Copy pathtextarea-shape.tsx
More file actions
82 lines (74 loc) · 2.22 KB
/
Copy pathtextarea-shape.tsx
File metadata and controls
82 lines (74 loc) · 2.22 KB
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
76
77
78
79
80
81
82
import { ShapeSizeRestrictions, ShapeType } from '@/core/model';
import { forwardRef } from 'react';
import { ShapeProps } from '../shape.model';
import { fitSizeToShapeSizeRestrictions } from '@/common/utils/shapes/shape-restrictions';
import { Group, Rect, Text } from 'react-konva';
import { BASIC_SHAPE, DISABLED_COLOR_VALUES } from './shape.const';
import { useShapeProps } from '../../shapes/use-shape-props.hook';
import { useGroupShapeProps } from '../mock-components.utils';
const textAreaShapeRestrictions: ShapeSizeRestrictions = {
minWidth: BASIC_SHAPE.DEFAULT_MIN_WIDTH,
minHeight: 44,
maxWidth: -1,
maxHeight: -1,
defaultWidth: 200,
defaultHeight: 55,
};
export const getTextAreaSizeRestrictions = (): ShapeSizeRestrictions =>
textAreaShapeRestrictions;
const shapeType: ShapeType = 'textarea';
export const TextAreaShape = forwardRef<any, ShapeProps>((props, ref) => {
const {
x,
y,
width,
height,
id,
onSelected,
text,
otherProps,
...shapeProps
} = props;
const restrictedSize = fitSizeToShapeSizeRestrictions(
textAreaShapeRestrictions,
width,
height
);
const { width: restrictedWidth, height: restrictedHeight } = restrictedSize;
const { stroke, strokeStyle, fill, textColor, borderRadius, disabled } =
useShapeProps(otherProps, BASIC_SHAPE);
const commonGroupProps = useGroupShapeProps(
props,
restrictedSize,
shapeType,
ref
);
return (
<Group {...commonGroupProps} {...shapeProps}>
<Rect
x={0}
y={0}
width={restrictedWidth}
height={restrictedHeight}
cornerRadius={borderRadius}
stroke={disabled ? DISABLED_COLOR_VALUES.DEFAULT_STROKE_COLOR : stroke}
strokeWidth={2}
fill={disabled ? DISABLED_COLOR_VALUES.DEFAULT_BACKGROUND_COLOR : fill}
dash={strokeStyle}
/>
<Text
x={10}
y={10}
width={restrictedWidth - 10}
height={restrictedHeight - 10}
text={text}
fontFamily={BASIC_SHAPE.DEFAULT_FONT_FAMILY}
fontSize={15}
fill={disabled ? DISABLED_COLOR_VALUES.DEFAULT_TEXT_COLOR : textColor}
align="left"
ellipsis={true}
/>
</Group>
);
});
export default TextAreaShape;