@rescui/textarea 0.12.1 → 0.13.0

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.
package/lib/textarea.js CHANGED
@@ -1,9 +1,11 @@
1
1
  "use client";
2
+ import _extends from '@babel/runtime-corejs3/helpers/esm/extends';
3
+ import { c } from 'react-compiler-runtime';
2
4
  import React, { useState } from 'react';
3
5
  import PropTypes from 'prop-types';
4
6
  import TextareaAutosize from 'react-textarea-autosize';
5
7
  import { useThemeWithUndefined } from '@rescui/ui-contexts';
6
- import { shouldRenderErrorMessage, ErrorMessage } from '@rescui/form-field';
8
+ import { ErrorMessage, shouldRenderErrorMessage } from '@rescui/form-field';
7
9
  import cn from 'classnames';
8
10
  import CloseOutlineIcon from './_virtual/close-outline.js';
9
11
  import LoadingOutlineIcon from './_virtual/loading-outline.js';
@@ -23,91 +25,340 @@ const MODE_STYLES = {
23
25
  rock: styles.rock
24
26
  };
25
27
  const Textarea = /*#__PURE__*/React.forwardRef( // eslint-disable-next-line complexity
26
- (_ref, ref) => {
27
- let {
28
- id,
29
- className,
30
- disabled,
31
- error,
32
- reserveErrorLine = false,
33
- busy,
34
- onChange,
35
- onClear,
36
- enableClear: _enableClear,
37
- size = 'm',
38
- mode = 'classic',
39
- theme: themeFromProps,
40
- textareaRef,
41
- value,
42
- tabIndex,
43
- label,
44
- boldLabel = true,
45
- note,
46
- characterCounter,
47
- ...restProps
48
- } = _ref;
28
+ (t0, ref) => {
29
+ const $ = c(76);
30
+ let busy;
31
+ let characterCounter;
32
+ let className;
33
+ let disabled;
34
+ let error;
35
+ let id;
36
+ let label;
37
+ let note;
38
+ let onChange;
39
+ let onClear;
40
+ let restProps;
41
+ let t1;
42
+ let t2;
43
+ let t3;
44
+ let t4;
45
+ let tabIndex;
46
+ let textareaRef;
47
+ let themeFromProps;
48
+ let value;
49
+
50
+ if ($[0] !== t0) {
51
+ const {
52
+ id: t5,
53
+ className: t6,
54
+ disabled: t7,
55
+ error: t8,
56
+ reserveErrorLine: t9,
57
+ busy: t10,
58
+ onChange: t11,
59
+ onClear: t12,
60
+ enableClear: _enableClear,
61
+ size: t13,
62
+ mode: t14,
63
+ theme: t15,
64
+ textareaRef: t16,
65
+ value: t17,
66
+ tabIndex: t18,
67
+ label: t19,
68
+ boldLabel: t20,
69
+ note: t21,
70
+ characterCounter: t22,
71
+ ...t23
72
+ } = t0;
73
+ id = t5;
74
+ className = t6;
75
+ disabled = t7;
76
+ error = t8;
77
+ t1 = t9;
78
+ busy = t10;
79
+ onChange = t11;
80
+ onClear = t12;
81
+ t2 = t13;
82
+ t3 = t14;
83
+ themeFromProps = t15;
84
+ textareaRef = t16;
85
+ value = t17;
86
+ tabIndex = t18;
87
+ label = t19;
88
+ t4 = t20;
89
+ note = t21;
90
+ characterCounter = t22;
91
+ restProps = t23;
92
+ $[0] = t0;
93
+ $[1] = busy;
94
+ $[2] = characterCounter;
95
+ $[3] = className;
96
+ $[4] = disabled;
97
+ $[5] = error;
98
+ $[6] = id;
99
+ $[7] = label;
100
+ $[8] = note;
101
+ $[9] = onChange;
102
+ $[10] = onClear;
103
+ $[11] = restProps;
104
+ $[12] = t1;
105
+ $[13] = t2;
106
+ $[14] = t3;
107
+ $[15] = t4;
108
+ $[16] = tabIndex;
109
+ $[17] = textareaRef;
110
+ $[18] = themeFromProps;
111
+ $[19] = value;
112
+ } else {
113
+ busy = $[1];
114
+ characterCounter = $[2];
115
+ className = $[3];
116
+ disabled = $[4];
117
+ error = $[5];
118
+ id = $[6];
119
+ label = $[7];
120
+ note = $[8];
121
+ onChange = $[9];
122
+ onClear = $[10];
123
+ restProps = $[11];
124
+ t1 = $[12];
125
+ t2 = $[13];
126
+ t3 = $[14];
127
+ t4 = $[15];
128
+ tabIndex = $[16];
129
+ textareaRef = $[17];
130
+ themeFromProps = $[18];
131
+ value = $[19];
132
+ }
133
+
134
+ const reserveErrorLine = t1 === undefined ? false : t1;
135
+ const size = t2 === undefined ? "m" : t2;
136
+ const mode = t3 === undefined ? "classic" : t3;
137
+ const boldLabel = t4 === undefined ? true : t4;
49
138
  const theme = useThemeWithUndefined(themeFromProps);
50
139
  const isEmpty = !value;
51
140
  const showClearIcon = Boolean(onClear && !isEmpty);
52
141
  const [focused, setFocused] = useState(false);
53
142
  const uniqueId = `textarea-${useSafeId()}`;
54
143
  const errorId = `${id ? id : uniqueId}-error`;
55
- const hasFooter = Boolean(note) || Boolean(characterCounter) || shouldRenderErrorMessage(error, reserveErrorLine);
56
- return /*#__PURE__*/React.createElement("label", {
57
- ref: ref,
58
- className: cn(styles.labelWrapper, SIZE_STYLES[size], MODE_STYLES[mode], THEME_STYLES[theme], !!error && styles.error, disabled ? styles.disabled : styles.enabled, focused && styles.focused, boldLabel && styles.boldLabel, isEmpty ? styles.empty : styles.filled, className),
59
- id: id,
60
- "data-test": 'textarea'
61
- }, label && /*#__PURE__*/React.createElement("div", {
62
- className: styles.label,
63
- "data-test": 'textarea__label',
64
- "data-rs-internal": boldLabel ? 'textarea__bold-label' : 'textarea__label'
65
- }, label), /*#__PURE__*/React.createElement("div", {
66
- className: cn(styles.wrapper, showClearIcon && styles.clearable),
67
- onFocus: () => setFocused(true),
68
- onBlur: () => setFocused(false)
69
- }, /*#__PURE__*/React.createElement(TextareaAutosize, { ...restProps,
70
- className: styles.inner,
71
- disabled: disabled,
72
- value: value,
73
- onChange: onChange,
74
- ref: textareaRef,
75
- "aria-errormessage": error ? errorId : undefined,
76
- "aria-invalid": Boolean(error),
77
- tabIndex: disabled ? -1 : tabIndex,
78
- "data-test": 'textarea__input',
79
- "data-rs-internal": "textarea__inner"
80
- }), showClearIcon && /*#__PURE__*/React.createElement("button", {
81
- type: "button",
82
- className: styles.clearIcon,
83
- onClick: onClear,
84
- "aria-label": "Clear textarea",
85
- "data-test": "textarea__clear-icon",
86
- "data-rs-internal": "textarea__clear-icon",
87
- tabIndex: -1
88
- }, /*#__PURE__*/React.createElement(CloseOutlineIcon, {
89
- className: styles.icon,
90
- "data-render-all-sizes": true
91
- })), busy && /*#__PURE__*/React.createElement("span", {
92
- className: styles.busyIcon
93
- }, /*#__PURE__*/React.createElement(LoadingOutlineIcon, {
94
- "data-test": "textarea__busy-icon",
95
- "data-rs-internal": "textarea__busy-icon",
96
- "data-render-all-sizes": true
97
- }))), hasFooter && /*#__PURE__*/React.createElement("div", {
98
- className: styles.footer
99
- }, characterCounter && /*#__PURE__*/React.createElement("div", {
100
- className: styles.characterCounter
101
- }, characterCounter), /*#__PURE__*/React.createElement(ErrorMessage, {
102
- id: errorId,
103
- className: styles.errorMessage,
104
- "data-test": 'textarea__error',
105
- reserveLine: reserveErrorLine
106
- }, error), note && /*#__PURE__*/React.createElement("div", {
107
- className: styles.note,
108
- "data-test": 'textarea__note',
109
- "data-rs-internal": "textarea__note"
110
- }, note)));
144
+ let t5;
145
+
146
+ if ($[20] !== characterCounter || $[21] !== error || $[22] !== note || $[23] !== reserveErrorLine) {
147
+ t5 = Boolean(note) || Boolean(characterCounter) || shouldRenderErrorMessage(error, reserveErrorLine);
148
+ $[20] = characterCounter;
149
+ $[21] = error;
150
+ $[22] = note;
151
+ $[23] = reserveErrorLine;
152
+ $[24] = t5;
153
+ } else {
154
+ t5 = $[24];
155
+ }
156
+
157
+ const hasFooter = t5;
158
+ const t6 = SIZE_STYLES[size];
159
+ const t7 = MODE_STYLES[mode];
160
+ const t8 = THEME_STYLES[theme];
161
+ const t9 = !!error && styles.error;
162
+ const t10 = disabled ? styles.disabled : styles.enabled;
163
+ const t11 = focused && styles.focused;
164
+ const t12 = boldLabel && styles.boldLabel;
165
+ const t13 = isEmpty ? styles.empty : styles.filled;
166
+ let t14;
167
+
168
+ if ($[25] !== className || $[26] !== t10 || $[27] !== t11 || $[28] !== t12 || $[29] !== t13 || $[30] !== t6 || $[31] !== t7 || $[32] !== t8 || $[33] !== t9) {
169
+ t14 = cn(styles.labelWrapper, t6, t7, t8, t9, t10, t11, t12, t13, className);
170
+ $[25] = className;
171
+ $[26] = t10;
172
+ $[27] = t11;
173
+ $[28] = t12;
174
+ $[29] = t13;
175
+ $[30] = t6;
176
+ $[31] = t7;
177
+ $[32] = t8;
178
+ $[33] = t9;
179
+ $[34] = t14;
180
+ } else {
181
+ t14 = $[34];
182
+ }
183
+
184
+ let t15;
185
+
186
+ if ($[35] !== boldLabel || $[36] !== label) {
187
+ t15 = label && /*#__PURE__*/React.createElement("div", {
188
+ className: styles.label,
189
+ "data-test": "textarea__label",
190
+ "data-rs-internal": boldLabel ? "textarea__bold-label" : "textarea__label"
191
+ }, label);
192
+ $[35] = boldLabel;
193
+ $[36] = label;
194
+ $[37] = t15;
195
+ } else {
196
+ t15 = $[37];
197
+ }
198
+
199
+ const t16 = showClearIcon && styles.clearable;
200
+ let t17;
201
+
202
+ if ($[38] !== t16) {
203
+ t17 = cn(styles.wrapper, t16);
204
+ $[38] = t16;
205
+ $[39] = t17;
206
+ } else {
207
+ t17 = $[39];
208
+ }
209
+
210
+ let t18;
211
+ let t19;
212
+
213
+ if ($[40] === Symbol.for("react.memo_cache_sentinel")) {
214
+ t18 = () => setFocused(true);
215
+
216
+ t19 = () => setFocused(false);
217
+
218
+ $[40] = t18;
219
+ $[41] = t19;
220
+ } else {
221
+ t18 = $[40];
222
+ t19 = $[41];
223
+ }
224
+
225
+ const t20 = error ? errorId : undefined;
226
+ const t21 = Boolean(error);
227
+ const t22 = disabled ? -1 : tabIndex;
228
+ let t23;
229
+
230
+ if ($[42] !== disabled || $[43] !== focused || $[44] !== onChange || $[45] !== restProps || $[46] !== t20 || $[47] !== t21 || $[48] !== t22 || $[49] !== textareaRef || $[50] !== value) {
231
+ t23 = /*#__PURE__*/React.createElement(TextareaAutosize, _extends({}, restProps, {
232
+ className: styles.inner,
233
+ disabled: disabled,
234
+ value: value,
235
+ onChange: onChange,
236
+ ref: textareaRef,
237
+ "aria-errormessage": t20,
238
+ "aria-invalid": t21,
239
+ tabIndex: t22,
240
+ "data-test": "textarea__input",
241
+ "data-rs-internal": "textarea__inner",
242
+ "data-focused": focused
243
+ }));
244
+ $[42] = disabled;
245
+ $[43] = focused;
246
+ $[44] = onChange;
247
+ $[45] = restProps;
248
+ $[46] = t20;
249
+ $[47] = t21;
250
+ $[48] = t22;
251
+ $[49] = textareaRef;
252
+ $[50] = value;
253
+ $[51] = t23;
254
+ } else {
255
+ t23 = $[51];
256
+ }
257
+
258
+ let t24;
259
+
260
+ if ($[52] !== onClear || $[53] !== showClearIcon) {
261
+ t24 = showClearIcon && /*#__PURE__*/React.createElement("button", {
262
+ type: "button",
263
+ className: styles.clearIcon,
264
+ onClick: onClear,
265
+ "aria-label": "Clear textarea",
266
+ "data-test": "textarea__clear-icon",
267
+ "data-rs-internal": "textarea__clear-icon",
268
+ tabIndex: -1
269
+ }, /*#__PURE__*/React.createElement(CloseOutlineIcon, {
270
+ className: styles.icon,
271
+ "data-render-all-sizes": true
272
+ }));
273
+ $[52] = onClear;
274
+ $[53] = showClearIcon;
275
+ $[54] = t24;
276
+ } else {
277
+ t24 = $[54];
278
+ }
279
+
280
+ let t25;
281
+
282
+ if ($[55] !== busy) {
283
+ t25 = busy && /*#__PURE__*/React.createElement("span", {
284
+ className: styles.busyIcon
285
+ }, /*#__PURE__*/React.createElement(LoadingOutlineIcon, {
286
+ "data-test": "textarea__busy-icon",
287
+ "data-rs-internal": "textarea__busy-icon",
288
+ "data-render-all-sizes": true
289
+ }));
290
+ $[55] = busy;
291
+ $[56] = t25;
292
+ } else {
293
+ t25 = $[56];
294
+ }
295
+
296
+ let t26;
297
+
298
+ if ($[57] !== t17 || $[58] !== t23 || $[59] !== t24 || $[60] !== t25) {
299
+ t26 = /*#__PURE__*/React.createElement("div", {
300
+ className: t17,
301
+ onFocus: t18,
302
+ onBlur: t19
303
+ }, t23, t24, t25);
304
+ $[57] = t17;
305
+ $[58] = t23;
306
+ $[59] = t24;
307
+ $[60] = t25;
308
+ $[61] = t26;
309
+ } else {
310
+ t26 = $[61];
311
+ }
312
+
313
+ let t27;
314
+
315
+ if ($[62] !== characterCounter || $[63] !== error || $[64] !== errorId || $[65] !== hasFooter || $[66] !== note || $[67] !== reserveErrorLine) {
316
+ t27 = hasFooter && /*#__PURE__*/React.createElement("div", {
317
+ className: styles.footer
318
+ }, characterCounter && /*#__PURE__*/React.createElement("div", {
319
+ className: styles.characterCounter
320
+ }, characterCounter), /*#__PURE__*/React.createElement(ErrorMessage, {
321
+ id: errorId,
322
+ className: styles.errorMessage,
323
+ "data-test": "textarea__error",
324
+ reserveLine: reserveErrorLine
325
+ }, error), note && /*#__PURE__*/React.createElement("div", {
326
+ className: styles.note,
327
+ "data-test": "textarea__note",
328
+ "data-rs-internal": "textarea__note"
329
+ }, note));
330
+ $[62] = characterCounter;
331
+ $[63] = error;
332
+ $[64] = errorId;
333
+ $[65] = hasFooter;
334
+ $[66] = note;
335
+ $[67] = reserveErrorLine;
336
+ $[68] = t27;
337
+ } else {
338
+ t27 = $[68];
339
+ }
340
+
341
+ let t28;
342
+
343
+ if ($[69] !== id || $[70] !== ref || $[71] !== t14 || $[72] !== t15 || $[73] !== t26 || $[74] !== t27) {
344
+ t28 = /*#__PURE__*/React.createElement("label", {
345
+ ref: ref,
346
+ className: t14,
347
+ id: id,
348
+ "data-test": "textarea"
349
+ }, t15, t26, t27);
350
+ $[69] = id;
351
+ $[70] = ref;
352
+ $[71] = t14;
353
+ $[72] = t15;
354
+ $[73] = t26;
355
+ $[74] = t27;
356
+ $[75] = t28;
357
+ } else {
358
+ t28 = $[75];
359
+ }
360
+
361
+ return t28;
111
362
  });
112
363
  Textarea.displayName = 'Textarea';
113
364
  Textarea.propTypes = {
@@ -1,27 +1,27 @@
1
1
  var styles = {
2
- "themeLight": "_themeLight_1xxg0sf_8",
3
- "themeDark": "_themeDark_1xxg0sf_11",
4
- "sizeS": "_sizeS_1xxg0sf_15",
5
- "sizeM": "_sizeM_1xxg0sf_18",
6
- "sizeL": "_sizeL_1xxg0sf_21",
7
- "classic": "_classic_1xxg0sf_25",
8
- "rock": "_rock_1xxg0sf_28",
9
- "labelWrapper": "_labelWrapper_1xxg0sf_32",
10
- "wrapper": "_wrapper_1xxg0sf_40",
11
- "error": "_error_1xxg0sf_57",
12
- "disabled": "_disabled_1xxg0sf_63",
13
- "enabled": "_enabled_1xxg0sf_69",
14
- "focused": "_focused_1xxg0sf_69",
15
- "filled": "_filled_1xxg0sf_75",
16
- "inner": "_inner_1xxg0sf_91",
17
- "clearable": "_clearable_1xxg0sf_119",
18
- "clearIcon": "_clearIcon_1xxg0sf_184",
19
- "icon": "_icon_1xxg0sf_226",
20
- "busyIcon": "_busyIcon_1xxg0sf_234",
21
- "label": "_label_1xxg0sf_32",
22
- "footer": "_footer_1xxg0sf_265",
23
- "characterCounter": "_characterCounter_1xxg0sf_284",
24
- "errorMessage": "_errorMessage_1xxg0sf_293",
25
- "note": "_note_1xxg0sf_297"
2
+ "themeLight": "_themeLight_jyawb7_8",
3
+ "themeDark": "_themeDark_jyawb7_11",
4
+ "sizeS": "_sizeS_jyawb7_15",
5
+ "sizeM": "_sizeM_jyawb7_18",
6
+ "sizeL": "_sizeL_jyawb7_21",
7
+ "classic": "_classic_jyawb7_25",
8
+ "rock": "_rock_jyawb7_28",
9
+ "labelWrapper": "_labelWrapper_jyawb7_32",
10
+ "wrapper": "_wrapper_jyawb7_40",
11
+ "error": "_error_jyawb7_57",
12
+ "disabled": "_disabled_jyawb7_63",
13
+ "enabled": "_enabled_jyawb7_69",
14
+ "focused": "_focused_jyawb7_69",
15
+ "filled": "_filled_jyawb7_75",
16
+ "inner": "_inner_jyawb7_91",
17
+ "clearable": "_clearable_jyawb7_119",
18
+ "clearIcon": "_clearIcon_jyawb7_184",
19
+ "icon": "_icon_jyawb7_226",
20
+ "busyIcon": "_busyIcon_jyawb7_234",
21
+ "label": "_label_jyawb7_32",
22
+ "footer": "_footer_jyawb7_265",
23
+ "characterCounter": "_characterCounter_jyawb7_284",
24
+ "errorMessage": "_errorMessage_jyawb7_293",
25
+ "note": "_note_jyawb7_297"
26
26
  };
27
27
  export { styles as default };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rescui/textarea",
3
- "version": "0.12.1",
3
+ "version": "0.13.0",
4
4
  "description": "",
5
5
  "license": "Apache-2.0",
6
6
  "author": "JetBrains",
@@ -17,19 +17,20 @@
17
17
  },
18
18
  "dependencies": {
19
19
  "@babel/runtime-corejs3": "^7.26.0",
20
- "@rescui/form-field": "^0.1.7",
20
+ "@rescui/form-field": "^0.2.0",
21
21
  "classnames": "^2.2.6",
22
+ "react-compiler-runtime": "^1.0.0",
22
23
  "react-textarea-autosize": "^8.3.4"
23
24
  },
24
25
  "peerDependencies": {
25
26
  "@rescui/ui-contexts": "^0.6.0",
26
27
  "prop-types": "^15",
27
- "react": ">=16.8.0 <20"
28
+ "react": ">=17.0.0 <20"
28
29
  },
29
30
  "devDependencies": {
30
- "@rescui/colors": "^0.3.3",
31
- "@rescui/scripts": "^0.5.2",
32
- "@rescui/typography": "^0.27.4",
31
+ "@rescui/colors": "^0.3.4",
32
+ "@rescui/scripts": "^0.5.3",
33
+ "@rescui/typography": "^0.28.0",
33
34
  "@rescui/visual-regression": "^0.1.4",
34
35
  "@types/classnames": "^2.2.11"
35
36
  },
@@ -38,5 +39,5 @@
38
39
  "build-pcss-api": "rescui-scripts build-pcss-api --file public-api.p.css"
39
40
  },
40
41
  "nx": {},
41
- "gitHead": "3711cbfc0c797014395421b008aa5331d6d47c6e"
42
+ "gitHead": "8ffbbe20b8bcbb9ea15204113ab603675d4c03cd"
42
43
  }