@expressms/smartapp-ui 3.0.0-alpha.87 → 3.0.0-alpha.89
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,4 +1,4 @@
|
|
|
1
1
|
import { ITextareaProps } from './types';
|
|
2
2
|
import '../../styles/styles.scss';
|
|
3
|
-
declare const Textarea: ({ fontFamily, isAdjustToTextHeight, textareaRef: outerTextareaRef, title, icon, error, minHeight, containerClassName, className, style, containerStyles, onChange, ...props }: ITextareaProps) => import("react/jsx-runtime").JSX.Element;
|
|
3
|
+
declare const Textarea: ({ fontFamily, isAdjustToTextHeight, isFocused, textareaRef: outerTextareaRef, title, icon, error, minHeight, containerClassName, className, style, containerStyles, onChange, ...props }: ITextareaProps) => import("react/jsx-runtime").JSX.Element;
|
|
4
4
|
export default Textarea;
|
|
@@ -28,7 +28,7 @@ import { generateFontFamilyStyle } from '../../helpers';
|
|
|
28
28
|
import { DEFAULT_MIN_TEXTAREA_HEIGHT, MIN_TEXTAREA_HEIGHT } from '../../constants';
|
|
29
29
|
import '../../styles/styles.scss';
|
|
30
30
|
var Textarea = function (_a) {
|
|
31
|
-
var fontFamily = _a.fontFamily, _b = _a.isAdjustToTextHeight, isAdjustToTextHeight = _b === void 0 ? false : _b, outerTextareaRef = _a.textareaRef, title = _a.title, icon = _a.icon, error = _a.error, minHeight = _a.minHeight, containerClassName = _a.containerClassName, className = _a.className, style = _a.style, containerStyles = _a.containerStyles, onChange = _a.onChange, props = __rest(_a, ["fontFamily", "isAdjustToTextHeight", "textareaRef", "title", "icon", "error", "minHeight", "containerClassName", "className", "style", "containerStyles", "onChange"]);
|
|
31
|
+
var fontFamily = _a.fontFamily, _b = _a.isAdjustToTextHeight, isAdjustToTextHeight = _b === void 0 ? false : _b, _c = _a.isFocused, isFocused = _c === void 0 ? false : _c, outerTextareaRef = _a.textareaRef, title = _a.title, icon = _a.icon, error = _a.error, minHeight = _a.minHeight, containerClassName = _a.containerClassName, className = _a.className, style = _a.style, containerStyles = _a.containerStyles, onChange = _a.onChange, props = __rest(_a, ["fontFamily", "isAdjustToTextHeight", "isFocused", "textareaRef", "title", "icon", "error", "minHeight", "containerClassName", "className", "style", "containerStyles", "onChange"]);
|
|
32
32
|
var localTextareaRef = useRef(null);
|
|
33
33
|
var textareaRef = outerTextareaRef || localTextareaRef;
|
|
34
34
|
var textareaMinHeight = minHeight ? Math.max(minHeight, MIN_TEXTAREA_HEIGHT) : DEFAULT_MIN_TEXTAREA_HEIGHT;
|
|
@@ -53,6 +53,50 @@ var Textarea = function (_a) {
|
|
|
53
53
|
isAdjustToTextHeight && handleInput();
|
|
54
54
|
// eslint-disable-next-line
|
|
55
55
|
}, [isAdjustToTextHeight]);
|
|
56
|
+
useEffect(function () {
|
|
57
|
+
if (!isFocused || props.disabled)
|
|
58
|
+
return undefined;
|
|
59
|
+
var isUnmounted = false;
|
|
60
|
+
var tryFocusTextarea = function () {
|
|
61
|
+
if (isUnmounted)
|
|
62
|
+
return false;
|
|
63
|
+
var textareaRefCurrent = textareaRef.current;
|
|
64
|
+
if (!textareaRefCurrent)
|
|
65
|
+
return false;
|
|
66
|
+
try {
|
|
67
|
+
textareaRefCurrent.focus({ preventScroll: true });
|
|
68
|
+
}
|
|
69
|
+
catch (_a) {
|
|
70
|
+
textareaRefCurrent.focus();
|
|
71
|
+
}
|
|
72
|
+
if (document.activeElement !== textareaRefCurrent)
|
|
73
|
+
return false;
|
|
74
|
+
var textareaValueLength = textareaRefCurrent.value.length;
|
|
75
|
+
try {
|
|
76
|
+
textareaRefCurrent.setSelectionRange(textareaValueLength, textareaValueLength);
|
|
77
|
+
}
|
|
78
|
+
catch (_b) {
|
|
79
|
+
// noop
|
|
80
|
+
}
|
|
81
|
+
return true;
|
|
82
|
+
};
|
|
83
|
+
var handleUserGesture = function () {
|
|
84
|
+
var isFocusedNow = tryFocusTextarea();
|
|
85
|
+
if (isFocusedNow) {
|
|
86
|
+
document.removeEventListener('touchend', handleUserGesture);
|
|
87
|
+
document.removeEventListener('mouseup', handleUserGesture);
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
var timerIds = [0, 80, 180].map(function (delay) { return setTimeout(function () { return tryFocusTextarea(); }, delay); });
|
|
91
|
+
document.addEventListener('touchend', handleUserGesture);
|
|
92
|
+
document.addEventListener('mouseup', handleUserGesture);
|
|
93
|
+
return function () {
|
|
94
|
+
isUnmounted = true;
|
|
95
|
+
timerIds.forEach(function (timerId) { return clearTimeout(timerId); });
|
|
96
|
+
document.removeEventListener('touchend', handleUserGesture);
|
|
97
|
+
document.removeEventListener('mouseup', handleUserGesture);
|
|
98
|
+
};
|
|
99
|
+
}, [isFocused, props.disabled, textareaRef]);
|
|
56
100
|
return (_jsxs("div", __assign({ className: classNames('smartapp-textarea', containerClassName), style: __assign(__assign({}, generateFontFamilyStyle(fontFamily)), containerStyles) }, { children: [title && _jsx("div", __assign({ className: "smartapp-textarea__title" }, { children: title })), _jsxs("div", __assign({ className: "smartapp-textarea__container" }, { children: [_jsx("textarea", __assign({ ref: textareaRef, className: classNames('smartapp-textarea__container--field', { 'smartapp-textarea__container--field__with-icon': !isNil(icon), 'smartapp-textarea__container--field__error': !isEmpty(error) }, className), style: __assign({ '--textarea-min-height': textareaMinHeightPx }, style), onChange: handleChange, onInput: handleInput }, props), textareaMinHeightPx), icon && _jsx("div", __assign({ className: "smartapp-textarea__container--icon" }, { children: icon }))] })), error && _jsx("div", __assign({ className: "smartapp-textarea__error" }, { children: error }))] })));
|
|
57
101
|
};
|
|
58
102
|
export default Textarea;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Textarea.js","sourceRoot":"","sources":["../../../../src/сomponents/Textarea/Textarea.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAc,EAAiB,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAC/D,OAAO,UAAU,MAAM,YAAY,CAAA;AACnC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AACvC,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAA;AACvD,OAAO,EAAE,2BAA2B,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAElF,OAAO,0BAA0B,CAAA;AAEjC,IAAM,QAAQ,GAAG,UAAC,
|
|
1
|
+
{"version":3,"file":"Textarea.js","sourceRoot":"","sources":["../../../../src/сomponents/Textarea/Textarea.tsx"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import { ChangeEvent, ReactElement, RefObject, TextareaHTMLAttributes } from 're
|
|
|
2
2
|
import { IFontFamilyProps, TStyles } from '../../constants';
|
|
3
3
|
export interface ITextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement>, IFontFamilyProps {
|
|
4
4
|
isAdjustToTextHeight?: boolean;
|
|
5
|
+
isFocused?: boolean;
|
|
5
6
|
textareaRef?: RefObject<HTMLTextAreaElement | null>;
|
|
6
7
|
title?: string;
|
|
7
8
|
icon?: ReactElement;
|