@ntbjs/react-components 1.2.0-rc.73 → 1.2.0-rc.75

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.
@@ -24,7 +24,7 @@ require('./CompactStarRating-a754fc6f.js');
24
24
  require('./CompactTextInput-baf13d5c.js');
25
25
  require('./MultiSelect-4b8d3d0d.js');
26
26
  require('./Radio-32d0513a.js');
27
- require('./TextArea-734991c9.js');
27
+ require('./TextArea-72a3f301.js');
28
28
  require('./TextInput-0d109708.js');
29
29
  require('./Switch-4a41585f.js');
30
30
  var ContextMenu = require('./ContextMenu-4ec3d9f3.js');
@@ -5,7 +5,7 @@ var lodash = require('lodash');
5
5
  var React = require('react');
6
6
  var warningCircle = require('./warning-circle-24522402.js');
7
7
  var CompactAutocompleteSelect = require('./CompactAutocompleteSelect-5982dcf2.js');
8
- var TextArea = require('./TextArea-734991c9.js');
8
+ var TextArea = require('./TextArea-72a3f301.js');
9
9
  var styled = require('styled-components');
10
10
 
11
11
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -2,6 +2,8 @@
2
2
 
3
3
  var defaultTheme = require('./defaultTheme-ea44e34a.js');
4
4
  var React = require('react');
5
+ var useMergedRefs = require('./useMergedRefs-b6d2f8fc.js');
6
+ var nanoid = require('nanoid');
5
7
  require('./Alert-13b75102.js');
6
8
  require('./Badge-aec841c8.js');
7
9
  require('./Popover-569cd272.js');
@@ -9,8 +11,6 @@ require('./Tab-f499ecbc.js');
9
11
  require('./Tabs-ea48ce3e.js');
10
12
  var Tooltip = require('./Tooltip-66daf6e3.js');
11
13
  require('./VerificationStatusIcon-6fe95a92.js');
12
- var nanoid = require('nanoid');
13
- var useMergedRefs = require('./useMergedRefs-b6d2f8fc.js');
14
14
  var editNote = require('./edit-note-c47d292e.js');
15
15
  var styled = require('styled-components');
16
16
 
@@ -208,12 +208,13 @@ var TextArea = React__default['default'].forwardRef(function TextArea(_ref, forw
208
208
  lightBackground = _ref.lightBackground,
209
209
  noBorder = _ref.noBorder,
210
210
  instructionsTextArea = _ref.instructionsTextArea,
211
+ isExpanded = _ref.isExpanded,
211
212
  loadingIcon = _ref.loadingIcon,
212
213
  successIcon = _ref.successIcon,
213
214
  padding = _ref.padding,
214
215
  descriptionToolTip = _ref.descriptionToolTip,
215
216
  resetExpansion = _ref.resetExpansion,
216
- rest = defaultTheme._objectWithoutProperties(_ref, ["value", "defaultValue", "name", "label", "placeholder", "required", "disabled", "hidden", "readOnly", "edit", "showMore", "showMoreText", "showLessText", "autoComplete", "description", "type", "icon", "rows", "className", "style", "onChange", "onBlur", "lightBackground", "noBorder", "instructionsTextArea", "loadingIcon", "successIcon", "padding", "descriptionToolTip", "resetExpansion"]);
217
+ rest = defaultTheme._objectWithoutProperties(_ref, ["value", "defaultValue", "name", "label", "placeholder", "required", "disabled", "hidden", "readOnly", "edit", "showMore", "showMoreText", "showLessText", "autoComplete", "description", "type", "icon", "rows", "className", "style", "onChange", "onBlur", "lightBackground", "noBorder", "instructionsTextArea", "isExpanded", "loadingIcon", "successIcon", "padding", "descriptionToolTip", "resetExpansion"]);
217
218
 
218
219
  var textInputDomNode = React.useRef(null);
219
220
  var textInputRef = useMergedRefs.useMergedRefs(forwardedRef, textInputDomNode);
@@ -228,45 +229,79 @@ var TextArea = React__default['default'].forwardRef(function TextArea(_ref, forw
228
229
  defaultInput = _useState4[0],
229
230
  setDefaultInput = _useState4[1];
230
231
 
231
- var _useState5 = React.useState(false),
232
+ var _useState5 = React.useState(''),
232
233
  _useState6 = defaultTheme._slicedToArray(_useState5, 2),
233
- expanded = _useState6[0],
234
- setExpanded = _useState6[1];
234
+ maxContentRows = _useState6[0],
235
+ setMaxContentRows = _useState6[1];
235
236
 
236
- var _useState7 = React.useState(nanoid.nanoid()),
237
- _useState8 = defaultTheme._slicedToArray(_useState7, 1),
238
- uniqueId = _useState8[0];
237
+ var _useState7 = React.useState(false),
238
+ _useState8 = defaultTheme._slicedToArray(_useState7, 2),
239
+ expanded = _useState8[0],
240
+ setExpanded = _useState8[1];
239
241
 
240
- var _useState9 = React.useState(false),
242
+ var _useState9 = React.useState(''),
241
243
  _useState10 = defaultTheme._slicedToArray(_useState9, 2),
242
- showMoreVisible = _useState10[0],
243
- setShowMoreVisible = _useState10[1];
244
+ maxHeight = _useState10[0],
245
+ setMaxHeight = _useState10[1];
246
+
247
+ var _useState11 = React.useState(''),
248
+ _useState12 = defaultTheme._slicedToArray(_useState11, 2),
249
+ defaultHeight = _useState12[0],
250
+ setDefaultHeight = _useState12[1];
251
+
252
+ var _useState13 = React.useState(false),
253
+ _useState14 = defaultTheme._slicedToArray(_useState13, 2),
254
+ autoFocus = _useState14[0],
255
+ setAutoFocus = _useState14[1];
244
256
 
257
+ var _useState15 = React.useState(false),
258
+ _useState16 = defaultTheme._slicedToArray(_useState15, 2),
259
+ scrollHeightExceedsRows = _useState16[0],
260
+ setScrollHeightExceedsRows = _useState16[1];
261
+
262
+ var initialHeightRef = React.useRef(null);
263
+
264
+ var _useState17 = React.useState(nanoid.nanoid()),
265
+ _useState18 = defaultTheme._slicedToArray(_useState17, 1),
266
+ uniqueId = _useState18[0];
267
+
268
+ var memoizedDescriptionToolTip = React.useMemo(function () {
269
+ return descriptionToolTip;
270
+ }, [descriptionToolTip]);
245
271
  React.useEffect(function () {
272
+ resetHeightToDefaultRows();
246
273
  setExpanded(false);
247
- calculateHeight();
248
274
  }, []);
249
275
  React.useEffect(function () {
250
276
  setExpanded(false);
251
277
  setDefaultInput(value || defaultValue);
278
+ resetHeightToDefaultRows();
252
279
  }, [resetExpansion]);
280
+ React.useEffect(function () {
281
+ console.log('Expanded state:', expanded);
282
+ isExpanded(expanded);
283
+ }, [expanded]);
253
284
  React.useLayoutEffect(function () {
254
- calculateHeight();
255
- setExpanded(true);
285
+ calculateRows();
286
+ setAutoFocus(false);
287
+
288
+ if (defaultValue !== null && defaultValue !== void 0 && defaultValue.length || (value === null || value === void 0 ? void 0 : value.length) != (defaultInput === null || defaultInput === void 0 ? void 0 : defaultInput.length)) {
289
+ calculateHeight();
290
+ setExpanded(true);
291
+ }
256
292
  }, [value, defaultValue, rows]);
293
+ React.useEffect(function () {
294
+ setAutoFocus(false);
295
+ initialHeightRef.current = null;
296
+ }, [rows]);
257
297
 
258
- var calculateHeight = function calculateHeight() {
298
+ var resetHeightToDefaultRows = function resetHeightToDefaultRows() {
259
299
  var textareaRefCurrent = textInputDomNode.current;
260
300
 
261
301
  if (textareaRefCurrent !== null) {
262
- textareaRefCurrent.style.height = 'auto';
263
- var newHeight = textareaRefCurrent.scrollHeight;
264
-
265
- if (defaultValue !== null && defaultValue !== void 0 && defaultValue.length || (value === null || value === void 0 ? void 0 : value.length) != (defaultInput === null || defaultInput === void 0 ? void 0 : defaultInput.length)) {
266
- textareaRefCurrent.style.height = "".concat(newHeight, "px");
267
- }
268
-
269
- setShowMoreVisible(newHeight > rows * 16);
302
+ textareaRefCurrent.style.height = "".concat(defaultHeight, "px");
303
+ console.log('textareaRefCurrent.style.height state:', textareaRefCurrent.style.height);
304
+ console.log('defaultHeight state:', defaultHeight);
270
305
  }
271
306
  };
272
307
 
@@ -275,6 +310,10 @@ var TextArea = React__default['default'].forwardRef(function TextArea(_ref, forw
275
310
 
276
311
  if (textareaRefCurrent !== null) {
277
312
  textareaRefCurrent.style.height = "".concat(textareaRefCurrent.scrollHeight, "px");
313
+ console.log('textareaRefCurrent.style.height on click state:', textareaRefCurrent.style.height);
314
+ }
315
+
316
+ if (!expanded) {
278
317
  setExpanded(true);
279
318
  }
280
319
  };
@@ -286,9 +325,47 @@ var TextArea = React__default['default'].forwardRef(function TextArea(_ref, forw
286
325
  textareaRefCurrent.style.height = expanded ? "".concat(rows * 16, "px") : "".concat(textareaRefCurrent.scrollHeight, "px");
287
326
  }
288
327
 
328
+ console.log('textareaRefCurrent.style.height on handleTextAreaShowLess :', textareaRefCurrent.style.height);
289
329
  setExpanded(!expanded);
290
330
  };
291
331
 
332
+ var calculateRows = function calculateRows() {
333
+ var textareaRefCurrent = textInputDomNode.current;
334
+
335
+ if (textareaRefCurrent !== null) {
336
+ var textAreaHeight = textareaRefCurrent.scrollHeight;
337
+ console.log('textAreaHeight :', textAreaHeight);
338
+ var lineHeight = 16;
339
+ var calculatedRows = Math.floor(textAreaHeight / lineHeight);
340
+ var defaultRowsHeight = rows * lineHeight;
341
+ setMaxContentRows(calculatedRows);
342
+
343
+ if (calculatedRows > rows) {
344
+ setDefaultHeight(defaultRowsHeight);
345
+ setMaxHeight(textAreaHeight);
346
+ } else {
347
+ setMaxHeight('');
348
+ }
349
+ }
350
+ };
351
+
352
+ var calculateHeight = function calculateHeight() {
353
+ var textareaRefCurrent = textInputDomNode === null || textInputDomNode === void 0 ? void 0 : textInputDomNode.current;
354
+
355
+ if (textareaRefCurrent !== null) {
356
+ textareaRefCurrent.style.height = 'auto';
357
+ var newHeight = textareaRefCurrent.scrollHeight;
358
+ textareaRefCurrent.style.height = "".concat(newHeight, "px");
359
+
360
+ if (initialHeightRef.current === null) {
361
+ initialHeightRef.current = newHeight;
362
+ }
363
+
364
+ setScrollHeightExceedsRows(newHeight > (initialHeightRef.current || 0));
365
+ setExpanded(newHeight > (initialHeightRef.current || 0));
366
+ }
367
+ };
368
+
292
369
  var onKeyDown = React.useCallback(function (event) {
293
370
  if (event.key === 'Enter') {
294
371
  event.stopPropagation();
@@ -303,9 +380,12 @@ var TextArea = React__default['default'].forwardRef(function TextArea(_ref, forw
303
380
  className: className,
304
381
  style: style
305
382
  }, React__default['default'].createElement(TextInputFieldIconAlert, null, icon), React__default['default'].createElement(TextInputField, defaultTheme._extends({
383
+ autoFocus: autoFocus,
306
384
  ref: textInputRef,
307
385
  rows: rows,
308
386
  expanded: expanded,
387
+ defaultHeight: defaultHeight,
388
+ maxHeight: maxHeight,
309
389
  value: value,
310
390
  defaultValue: defaultValue,
311
391
  name: name,
@@ -316,6 +396,7 @@ var TextArea = React__default['default'].forwardRef(function TextArea(_ref, forw
316
396
  edit: edit,
317
397
  instructionsTextArea: instructionsTextArea,
318
398
  showMore: showMore,
399
+ scrollHeightExceedsRows: scrollHeightExceedsRows,
319
400
  type: type,
320
401
  autoComplete: autoComplete,
321
402
  hasIcon: Boolean(icon),
@@ -327,19 +408,26 @@ var TextArea = React__default['default'].forwardRef(function TextArea(_ref, forw
327
408
  onChange: function onChange(e) {
328
409
  if (e.target.value) {
329
410
  setInputIsEmpty(false);
411
+
412
+ if (!autoFocus) {
413
+ setAutoFocus(true);
414
+ }
330
415
  } else {
331
416
  setInputIsEmpty(true);
417
+
418
+ if (!autoFocus) {
419
+ setAutoFocus(true);
420
+ }
332
421
  }
333
422
 
334
423
  _onChange(e);
335
-
336
- calculateHeight();
337
424
  },
338
425
  onKeyDown: onKeyDown,
339
426
  onBlur: onBlur,
340
- onClick: handleTextAreaClick,
341
427
  noBorder: noBorder
342
- }, rest)), (type === 'loading' || type === 'success') && React__default['default'].createElement(SuccessContainer, null, type === 'loading' && loadingIcon, type === 'success' && successIcon), !readOnly && noBorder && React__default['default'].createElement(InputIconContainer, {
428
+ }, rest, {
429
+ onClick: handleTextAreaClick
430
+ })), (type === 'loading' || type === 'success') && React__default['default'].createElement(SuccessContainer, null, type === 'loading' && loadingIcon, type === 'success' && successIcon), !readOnly && noBorder && React__default['default'].createElement(InputIconContainer, {
343
431
  disabled: disabled
344
432
  }, React__default['default'].createElement(editNote.SvgEditNote, {
345
433
  className: padding === 'small' ? 'smallPadingIcon' : undefined
@@ -348,34 +436,39 @@ var TextArea = React__default['default'].forwardRef(function TextArea(_ref, forw
348
436
  hasPlaceholder: Boolean(placeholder),
349
437
  hasIcon: Boolean(icon),
350
438
  inputIsEmpty: inputIsEmpty
351
- }, label, required && ' *'), description && React__default['default'].createElement(Description, {
439
+ }, label, required && ' *'), typeof description === 'string' && description.length > 0 && React__default['default'].createElement(Description, {
352
440
  type: type
353
- }, description), showMore && showMoreVisible && React__default['default'].createElement(ShowMoreText, {
354
- onClick: handleTextAreaShowLess,
441
+ }, description), maxContentRows > rows && showMore && React__default['default'].createElement(ShowMoreText, {
442
+ onClick: showMore ? handleTextAreaShowLess : undefined,
355
443
  expanded: expanded
356
- }, !expanded ? showMoreText : showLessText));
444
+ }, !expanded ? showMoreText : expanded ? showLessText : null));
357
445
  };
358
446
 
359
447
  if (hidden) return null;
360
- return React__default['default'].createElement(React__default['default'].Fragment, null, !descriptionToolTip ? input() : React__default['default'].createElement(Tooltip.Tooltip, {
361
- content: descriptionToolTip,
448
+ return React__default['default'].createElement(React__default['default'].Fragment, null, !memoizedDescriptionToolTip && input(), memoizedDescriptionToolTip && React__default['default'].createElement("div", null, React__default['default'].createElement(Tooltip.Tooltip, {
449
+ content: memoizedDescriptionToolTip,
450
+ key: "tooltipTextArea1",
362
451
  placement: "bottom-end",
363
- trigger: "mouseenter",
452
+ trigger: 'mouseenter',
364
453
  zIndex: 999999
365
- }, input()));
454
+ }, input())));
366
455
  });
367
456
  TextArea.defaultProps = {
368
457
  rows: 4,
369
458
  noBorder: false,
370
459
  readOnly: false,
460
+ edit: false,
371
461
  hidden: false,
372
462
  showMore: false,
373
- showMoreText: 'Show More',
374
- showLessText: 'Show Less',
463
+ showMoreText: '',
464
+ showLessText: '',
375
465
  type: '',
376
466
  padding: 'medium',
467
+ instructionsTextArea: false,
377
468
  descriptionToolTip: '',
378
- onChange: function onChange() {}
469
+ isExpanded: function isExpanded() {},
470
+ onChange: function onChange() {},
471
+ resetExpansion: ''
379
472
  };
380
473
  TextArea.propTypes = process.env.NODE_ENV !== "production" ? {
381
474
  value: defaultTheme.PropTypes.string,
@@ -1,9 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var TextArea = require('../../TextArea-734991c9.js');
3
+ var TextArea = require('../../TextArea-72a3f301.js');
4
4
  require('../../defaultTheme-ea44e34a.js');
5
5
  require('styled-components');
6
6
  require('react');
7
+ require('../../useMergedRefs-b6d2f8fc.js');
8
+ require('nanoid');
7
9
  require('../../Alert-13b75102.js');
8
10
  require('lodash');
9
11
  require('../../Badge-aec841c8.js');
@@ -16,8 +18,6 @@ require('../../Tab-f499ecbc.js');
16
18
  require('../../Tabs-ea48ce3e.js');
17
19
  require('../../Tooltip-66daf6e3.js');
18
20
  require('../../VerificationStatusIcon-6fe95a92.js');
19
- require('nanoid');
20
- require('../../useMergedRefs-b6d2f8fc.js');
21
21
  require('../../edit-note-c47d292e.js');
22
22
 
23
23
 
package/inputs/index.js CHANGED
@@ -10,7 +10,7 @@ var CompactStarRating = require('../CompactStarRating-a754fc6f.js');
10
10
  var CompactTextInput = require('../CompactTextInput-baf13d5c.js');
11
11
  var MultiSelect = require('../MultiSelect-4b8d3d0d.js');
12
12
  var Radio = require('../Radio-32d0513a.js');
13
- var TextArea = require('../TextArea-734991c9.js');
13
+ var TextArea = require('../TextArea-72a3f301.js');
14
14
  var TextInput = require('../TextInput-0d109708.js');
15
15
  var Switch = require('../Switch-4a41585f.js');
16
16
  var MultiLevelCheckboxSelect = require('../MultiLevelCheckboxSelect-24c88aaa.js');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ntbjs/react-components",
3
- "version": "1.2.0-rc.73",
3
+ "version": "1.2.0-rc.75",
4
4
  "description": "NTBs common front-end design utilities and React components.",
5
5
  "scripts": {
6
6
  "build": "cross-env NODE_ENV=production rollup -c",
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var AssetGallery = require('../../AssetGallery-6064e6df.js');
3
+ var AssetGallery = require('../../AssetGallery-ad882f6f.js');
4
4
  require('../../defaultTheme-ea44e34a.js');
5
5
  require('styled-components');
6
6
  require('lodash');
@@ -41,7 +41,7 @@ require('../../CompactStarRating-a754fc6f.js');
41
41
  require('../../CompactTextInput-baf13d5c.js');
42
42
  require('../../MultiSelect-4b8d3d0d.js');
43
43
  require('../../Radio-32d0513a.js');
44
- require('../../TextArea-734991c9.js');
44
+ require('../../TextArea-72a3f301.js');
45
45
  require('../../Switch-4a41585f.js');
46
46
  require('../../ContextMenuItem-ba2b697e.js');
47
47
 
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var Instructions = require('../../Instructions-242c8df0.js');
3
+ var Instructions = require('../../Instructions-eea791d6.js');
4
4
  require('../../defaultTheme-ea44e34a.js');
5
5
  require('styled-components');
6
6
  require('lodash');
@@ -25,7 +25,7 @@ require('../../react-select-creatable.esm-2f23d6c6.js');
25
25
  require('react-dom');
26
26
  require('../../close-ebf2f3cf.js');
27
27
  require('../../expand-more-94585605.js');
28
- require('../../TextArea-734991c9.js');
28
+ require('../../TextArea-72a3f301.js');
29
29
  require('../../useMergedRefs-b6d2f8fc.js');
30
30
  require('../../edit-note-c47d292e.js');
31
31
 
package/widgets/index.js CHANGED
@@ -2,10 +2,10 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var AssetGallery = require('../AssetGallery-6064e6df.js');
5
+ var AssetGallery = require('../AssetGallery-ad882f6f.js');
6
6
  var ContextMenu = require('../ContextMenu-4ec3d9f3.js');
7
7
  var AssetPreviewTopBar = require('../AssetPreviewTopBar-c28715f7.js');
8
- var Instructions = require('../Instructions-242c8df0.js');
8
+ var Instructions = require('../Instructions-eea791d6.js');
9
9
  require('../defaultTheme-ea44e34a.js');
10
10
  require('styled-components');
11
11
  require('lodash');
@@ -45,7 +45,7 @@ require('../CompactStarRating-a754fc6f.js');
45
45
  require('../CompactTextInput-baf13d5c.js');
46
46
  require('../MultiSelect-4b8d3d0d.js');
47
47
  require('../Radio-32d0513a.js');
48
- require('../TextArea-734991c9.js');
48
+ require('../TextArea-72a3f301.js');
49
49
  require('../Switch-4a41585f.js');
50
50
  require('../ContextMenuItem-ba2b697e.js');
51
51