@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":"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"}
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;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expressms/smartapp-ui",
3
- "version": "3.0.0-alpha.87",
3
+ "version": "3.0.0-alpha.89",
4
4
  "description": "SmartApp UI library",
5
5
  "license": "MIT",
6
6
  "main": "build/main/index.js",