@bigbinary/neetoui 8.3.1 → 8.3.3

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.
@@ -26,7 +26,7 @@ import 'react-i18next';
26
26
  import './useRecentlyUsedColors-CJe4G0Xs.js';
27
27
  import './Dropdown.js';
28
28
  import './index-BCP3m_SF.js';
29
- export { D as default } from './index-BXAHRXsD.js';
29
+ export { D as default } from './index-Cos67g77.js';
30
30
  import './Input.js';
31
31
  import './Label.js';
32
32
  import './MultiEmailInput.js';
package/dist/Input.js CHANGED
@@ -4,13 +4,13 @@ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
4
4
  import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
5
5
  import React__default, { forwardRef, useState } from 'react';
6
6
  import classnames from 'classnames';
7
- import { replace } from 'ramda';
8
7
  import { u as useId } from './useId-Jj9hXm-g.js';
9
8
  import 'react-router-dom';
10
9
  import '@bigbinary/neeto-hotkeys';
11
10
  import './overlayManager.js';
12
11
  import { h as hyphenize } from './index-BCP3m_SF.js';
13
12
  import 'qs';
13
+ import { replace } from 'ramda';
14
14
  import Label from './Label.js';
15
15
  import '@babel/runtime/helpers/classCallCheck';
16
16
  import '@babel/runtime/helpers/createClass';
@@ -31,7 +31,45 @@ import 'tippy.js';
31
31
  import './Popover.js';
32
32
  import './Typography.js';
33
33
 
34
- var _excluded = ["size", "type", "label", "dataCy", "error", "suffix", "prefix", "disabled", "helpText", "className", "nakedInput", "contentSize", "required", "maxLength", "unlimitedChars", "labelProps", "rejectCharsRegex", "onBlur", "disableTrimOnBlur"];
34
+ var toFixed = function toFixed(numStr, precision) {
35
+ var num = Number(numStr);
36
+ if (Number.isNaN(num)) return numStr;
37
+ return num.toFixed(precision);
38
+ };
39
+ var isValidNumberString = function isValidNumberString(numStr) {
40
+ if (typeof numStr !== "string") return false;
41
+ return !Number.isNaN(Number(numStr.trim()));
42
+ };
43
+ var formatWithPrecision = function formatWithPrecision(value, precision) {
44
+ if (precision < 0 || !value) return value;
45
+ var str = value.toString();
46
+ if (isValidNumberString(str)) return toFixed(str, precision);
47
+ return str;
48
+ };
49
+ var enforceDecimalPrecision = function enforceDecimalPrecision(value, precision) {
50
+ if (precision < 0 || !value) return value;
51
+ var valueStr = value.toString();
52
+ if (precision === 0) return valueStr.split(".")[0];
53
+ var regex = new RegExp("^\\d*\\.?\\d{0,".concat(precision, "}$"));
54
+ if (regex.test(valueStr)) return value;
55
+ var parts = valueStr.split(".");
56
+ if (parts.length === 1) return parts[0];
57
+ var _parts = _slicedToArray(parts, 2),
58
+ integerPart = _parts[0],
59
+ decimalPart = _parts[1];
60
+ return "".concat(integerPart, ".").concat(decimalPart.substring(0, precision));
61
+ };
62
+ var formatWithRejectCharsRegex = function formatWithRejectCharsRegex(value, rejectCharsRegex) {
63
+ if (!rejectCharsRegex) return value;
64
+ var globalRegex = new RegExp(rejectCharsRegex, "g");
65
+ return replace(globalRegex, "", value);
66
+ };
67
+ var getTrimmedValue = function getTrimmedValue(value, disableTrimOnBlur) {
68
+ if (disableTrimOnBlur || typeof value !== "string") return value;
69
+ return value.trim();
70
+ };
71
+
72
+ var _excluded = ["size", "type", "label", "dataCy", "error", "suffix", "prefix", "disabled", "helpText", "className", "nakedInput", "contentSize", "required", "maxLength", "unlimitedChars", "labelProps", "rejectCharsRegex", "onBlur", "disableTrimOnBlur", "precision"];
35
73
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
36
74
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
37
75
  var SIZES = {
@@ -40,7 +78,7 @@ var SIZES = {
40
78
  large: "large"
41
79
  };
42
80
  var Input = /*#__PURE__*/forwardRef(function (_ref, ref) {
43
- var _ref2, _otherProps$value;
81
+ var _ref2, _formatWithPrecision;
44
82
  var _ref$size = _ref.size,
45
83
  size = _ref$size === void 0 ? SIZES.medium : _ref$size,
46
84
  _ref$type = _ref.type,
@@ -75,6 +113,8 @@ var Input = /*#__PURE__*/forwardRef(function (_ref, ref) {
75
113
  onBlur = _ref.onBlur,
76
114
  _ref$disableTrimOnBlu = _ref.disableTrimOnBlur,
77
115
  disableTrimOnBlur = _ref$disableTrimOnBlu === void 0 ? false : _ref$disableTrimOnBlu,
116
+ _ref$precision = _ref.precision,
117
+ precision = _ref$precision === void 0 ? -1 : _ref$precision,
78
118
  otherProps = _objectWithoutProperties(_ref, _excluded);
79
119
  var _useState = useState(otherProps.value),
80
120
  _useState2 = _slicedToArray(_useState, 2),
@@ -83,7 +123,7 @@ var Input = /*#__PURE__*/forwardRef(function (_ref, ref) {
83
123
  var id = useId(otherProps.id);
84
124
  var errorId = "error_".concat(id);
85
125
  var helpTextId = "helpText_".concat(id);
86
- var value = (_ref2 = (_otherProps$value = otherProps.value) !== null && _otherProps$value !== void 0 ? _otherProps$value : valueInternal) !== null && _ref2 !== void 0 ? _ref2 : "";
126
+ var value = (_ref2 = (_formatWithPrecision = formatWithPrecision(otherProps.value, precision)) !== null && _formatWithPrecision !== void 0 ? _formatWithPrecision : valueInternal) !== null && _ref2 !== void 0 ? _ref2 : "";
87
127
  var valueLength = (value === null || value === void 0 ? void 0 : value.toString().length) || 0;
88
128
  var isCharacterLimitVisible = valueLength >= maxLength * 0.85;
89
129
  var maxLengthError = unlimitedChars && valueLength > maxLength;
@@ -95,21 +135,19 @@ var Input = /*#__PURE__*/forwardRef(function (_ref, ref) {
95
135
  (_otherProps$onChange = otherProps.onChange) === null || _otherProps$onChange === void 0 || _otherProps$onChange.call(otherProps, e);
96
136
  };
97
137
  var isMaxLengthPresent = !!maxLength || maxLength === 0;
98
- var handleRegexChange = function handleRegexChange(e) {
99
- var globalRegex = new RegExp(rejectCharsRegex, "g");
100
- e.target.value = replace(globalRegex, "", e.target.value);
138
+ var handleChange = function handleChange(e) {
139
+ var formattedValue = formatWithRejectCharsRegex(e.target.value, rejectCharsRegex);
140
+ formattedValue = enforceDecimalPrecision(formattedValue, precision);
141
+ e.target.value = formattedValue;
101
142
  onChange(e);
102
143
  };
103
- var handleChange = rejectCharsRegex ? handleRegexChange : onChange;
104
- var handleTrimmedChangeOnBlur = function handleTrimmedChangeOnBlur(e) {
105
- if (disableTrimOnBlur || typeof value !== "string") return;
106
- var trimmedValue = value.trim();
107
- if (value === trimmedValue) return;
108
- e.target.value = trimmedValue;
109
- handleChange(e);
110
- };
111
144
  var handleOnBlur = function handleOnBlur(e) {
112
- handleTrimmedChangeOnBlur(e);
145
+ var trimmedValue = getTrimmedValue(value, disableTrimOnBlur);
146
+ var formattedValue = formatWithPrecision(trimmedValue, precision);
147
+ if (formattedValue !== value) {
148
+ e.target.value = formattedValue;
149
+ handleChange(e);
150
+ }
113
151
  onBlur === null || onBlur === void 0 || onBlur(e);
114
152
  };
115
153
  var dataCyLabel = typeof label === "string" ? hyphenize(label) : hyphenize(dataCy);
package/dist/Input.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Input.js","sources":["../src/components/Input.jsx"],"sourcesContent":["import React, { useState, forwardRef } from \"react\";\n\nimport classnames from \"classnames\";\nimport PropTypes from \"prop-types\";\nimport { replace } from \"ramda\";\n\nimport { useId } from \"hooks\";\nimport { hyphenize } from \"utils\";\n\nimport Label from \"./Label\";\n\nconst SIZES = { small: \"small\", medium: \"medium\", large: \"large\" };\n\nconst Input = forwardRef(\n (\n {\n size = SIZES.medium,\n type = \"text\",\n label = \"\",\n dataCy = \"\",\n error = \"\",\n suffix = null,\n prefix = null,\n disabled = false,\n helpText = \"\",\n className = \"\",\n nakedInput = false,\n contentSize = null,\n required = false,\n maxLength,\n unlimitedChars = false,\n labelProps,\n rejectCharsRegex,\n onBlur,\n disableTrimOnBlur = false,\n ...otherProps\n },\n ref\n ) => {\n const [valueInternal, setValueInternal] = useState(otherProps.value);\n const id = useId(otherProps.id);\n\n const errorId = `error_${id}`;\n const helpTextId = `helpText_${id}`;\n\n const value = otherProps.value ?? valueInternal ?? \"\";\n\n const valueLength = value?.toString().length || 0;\n const isCharacterLimitVisible = valueLength >= maxLength * 0.85;\n const maxLengthError = unlimitedChars && valueLength > maxLength;\n\n const onChange = e => {\n if (!otherProps.onChange || !otherProps.value) {\n setValueInternal(e.target.value);\n }\n otherProps.onChange?.(e);\n };\n\n const isMaxLengthPresent = !!maxLength || maxLength === 0;\n\n const handleRegexChange = e => {\n const globalRegex = new RegExp(rejectCharsRegex, \"g\");\n e.target.value = replace(globalRegex, \"\", e.target.value);\n onChange(e);\n };\n\n const handleChange = rejectCharsRegex ? handleRegexChange : onChange;\n\n const handleTrimmedChangeOnBlur = e => {\n if (disableTrimOnBlur || typeof value !== \"string\") return;\n\n const trimmedValue = value.trim();\n if (value === trimmedValue) return;\n\n e.target.value = trimmedValue;\n handleChange(e);\n };\n\n const handleOnBlur = e => {\n handleTrimmedChangeOnBlur(e);\n onBlur?.(e);\n };\n\n const dataCyLabel =\n typeof label === \"string\" ? hyphenize(label) : hyphenize(dataCy);\n\n return (\n <div className={classnames([\"neeto-ui-input__wrapper\", className])}>\n <div className=\"neeto-ui-input__label-wrapper\">\n {label && (\n <Label\n {...{ required }}\n data-cy={`${dataCyLabel}-input-label`}\n htmlFor={id}\n {...labelProps}\n >\n {label}\n </Label>\n )}\n {isCharacterLimitVisible && (\n <p\n className={classnames(\"neeto-ui-input__max-length\", {\n \"neeto-ui-input__max-length--error\": maxLengthError,\n })}\n >\n {valueLength}/{maxLength}\n </p>\n )}\n </div>\n <div\n data-cy={`${dataCyLabel}-input`}\n className={classnames(\"neeto-ui-input\", {\n \"neeto-ui-input--naked\": !!nakedInput,\n \"neeto-ui-input--error\": !!error,\n \"neeto-ui-input--disabled\": !!disabled,\n \"neeto-ui-input--small\": size === \"small\",\n \"neeto-ui-input--medium\": size === \"medium\",\n \"neeto-ui-input--large\": size === \"large\",\n })}\n >\n {prefix && <div className=\"neeto-ui-input__prefix\">{prefix}</div>}\n <input\n aria-invalid={!!error}\n data-cy={`${dataCyLabel}-input-field`}\n size={contentSize}\n aria-describedby={classnames({\n [errorId]: !!error,\n [helpTextId]: helpText,\n })}\n {...{\n disabled,\n id,\n ref,\n required,\n type,\n ...(isMaxLengthPresent && !unlimitedChars && { maxLength }),\n ...otherProps,\n value,\n }}\n onBlur={handleOnBlur}\n onChange={handleChange}\n />\n {suffix && <div className=\"neeto-ui-input__suffix\">{suffix}</div>}\n </div>\n {!!error && (\n <p\n className=\"neeto-ui-input__error\"\n data-cy={`${dataCyLabel}-input-error`}\n id={errorId}\n >\n {error}\n </p>\n )}\n {helpText && (\n <p\n className=\"neeto-ui-input__help-text\"\n data-cy={`${dataCyLabel}-input-help`}\n id={helpTextId}\n >\n {helpText}\n </p>\n )}\n </div>\n );\n }\n);\n\nInput.displayName = \"Input\";\n\nInput.propTypes = {\n /**\n * To specify a unique ID to the Input component.\n */\n id: PropTypes.string,\n /**\n * To specify the size of Input.\n */\n size: PropTypes.oneOf(Object.values(SIZES)),\n /**\n * To specify the type of Input field.\n */\n type: PropTypes.string,\n /**\n * To specify the label props to be passed to the Label component.\n */\n labelProps: PropTypes.object,\n /**\n * To specify a maximum character limit to the Input. Charater limit is visible only if the Input value is greater than or equal to 85% of the maximum character limit.\n */\n maxLength: PropTypes.number,\n /**\n * To be used along with maxLength prop. When set to true the character limit will not be enforced and character count will be shown in error state if the character limit is exceeded.\n */\n unlimitedChars: PropTypes.bool,\n /**\n * To specify the text to be displayed above the Input.\n */\n label: PropTypes.string,\n /**\n * To specify the error message to be shown in the Input field.\n */\n error: PropTypes.string,\n /**\n * To specify the content to be added at the end of the Input field.\n */\n suffix: PropTypes.node,\n /**\n * To specify the content to be added at the beginning of the Input field.\n */\n prefix: PropTypes.node,\n /**\n * To specify whether the Input field is disabled or not.\n */\n disabled: PropTypes.bool,\n /**\n * To specify the text that appears below the Input field.\n */\n helpText: PropTypes.string,\n /**\n * To specify external classNames that can be provided as overrides to the main wrapper.\n */\n className: PropTypes.string,\n /**\n * To create an Input field without any borders.\n */\n nakedInput: PropTypes.bool,\n /**\n * To specify the value to be passed as size attribute to the Input field.\n */\n contentSize: PropTypes.number,\n /**\n * To specify whether the Input field is required or not.\n */\n required: PropTypes.bool,\n /**\n * To specify a regex to be matched against the user input. Any character that matches it\n * cannot be input by the user. It will also prevent such characters from being pasted into the input.\n */\n rejectCharsRegex: PropTypes.instanceOf(RegExp),\n /**\n * To disable leading and trailing white spaces onBlur.\n */\n disableTrimOnBlur: PropTypes.bool,\n};\n\nexport default Input;\n"],"names":["SIZES","small","medium","large","Input","forwardRef","_ref","ref","_ref2","_otherProps$value","_ref$size","size","_ref$type","type","_ref$label","label","_ref$dataCy","dataCy","_ref$error","error","_ref$suffix","suffix","_ref$prefix","prefix","_ref$disabled","disabled","_ref$helpText","helpText","_ref$className","className","_ref$nakedInput","nakedInput","_ref$contentSize","contentSize","_ref$required","required","maxLength","_ref$unlimitedChars","unlimitedChars","labelProps","rejectCharsRegex","onBlur","_ref$disableTrimOnBlu","disableTrimOnBlur","otherProps","_objectWithoutProperties","_excluded","_useState","useState","value","_useState2","_slicedToArray","valueInternal","setValueInternal","id","useId","errorId","concat","helpTextId","valueLength","toString","length","isCharacterLimitVisible","maxLengthError","onChange","e","_otherProps$onChange","target","call","isMaxLengthPresent","handleRegexChange","globalRegex","RegExp","replace","handleChange","handleTrimmedChangeOnBlur","trimmedValue","trim","handleOnBlur","dataCyLabel","hyphenize","React","createElement","classnames","Label","_extends","htmlFor","_defineProperty","_objectSpread","displayName"],"mappings":"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"}
1
+ {"version":3,"file":"Input.js","sources":["../src/components/Input/utils.js","../src/components/Input/index.jsx"],"sourcesContent":["import { replace } from \"ramda\";\n\nconst toFixed = (numStr, precision) => {\n const num = Number(numStr);\n if (Number.isNaN(num)) return numStr;\n\n return num.toFixed(precision);\n};\n\nconst isValidNumberString = numStr => {\n if (typeof numStr !== \"string\") return false;\n\n return !Number.isNaN(Number(numStr.trim()));\n};\n\nexport const formatWithPrecision = (value, precision) => {\n if (precision < 0 || !value) return value;\n\n const str = value.toString();\n\n if (isValidNumberString(str)) return toFixed(str, precision);\n\n return str;\n};\n\nexport const enforceDecimalPrecision = (value, precision) => {\n if (precision < 0 || !value) return value;\n\n const valueStr = value.toString();\n\n if (precision === 0) return valueStr.split(\".\")[0];\n\n const regex = new RegExp(`^\\\\d*\\\\.?\\\\d{0,${precision}}$`);\n if (regex.test(valueStr)) return value;\n\n const parts = valueStr.split(\".\");\n if (parts.length === 1) return parts[0];\n\n const [integerPart, decimalPart] = parts;\n\n return `${integerPart}.${decimalPart.substring(0, precision)}`;\n};\n\nexport const formatWithRejectCharsRegex = (value, rejectCharsRegex) => {\n if (!rejectCharsRegex) return value;\n\n const globalRegex = new RegExp(rejectCharsRegex, \"g\");\n\n return replace(globalRegex, \"\", value);\n};\n\nexport const getTrimmedValue = (value, disableTrimOnBlur) => {\n if (disableTrimOnBlur || typeof value !== \"string\") return value;\n\n return value.trim();\n};\n","import React, { useState, forwardRef } from \"react\";\n\nimport classnames from \"classnames\";\nimport PropTypes from \"prop-types\";\n\nimport { useId } from \"hooks\";\nimport { hyphenize } from \"utils\";\n\nimport {\n enforceDecimalPrecision,\n formatWithPrecision,\n formatWithRejectCharsRegex,\n getTrimmedValue,\n} from \"./utils\";\n\nimport Label from \"../Label\";\n\nconst SIZES = { small: \"small\", medium: \"medium\", large: \"large\" };\n\nconst Input = forwardRef(\n (\n {\n size = SIZES.medium,\n type = \"text\",\n label = \"\",\n dataCy = \"\",\n error = \"\",\n suffix = null,\n prefix = null,\n disabled = false,\n helpText = \"\",\n className = \"\",\n nakedInput = false,\n contentSize = null,\n required = false,\n maxLength,\n unlimitedChars = false,\n labelProps,\n rejectCharsRegex,\n onBlur,\n disableTrimOnBlur = false,\n precision = -1,\n ...otherProps\n },\n ref\n ) => {\n const [valueInternal, setValueInternal] = useState(otherProps.value);\n const id = useId(otherProps.id);\n\n const errorId = `error_${id}`;\n const helpTextId = `helpText_${id}`;\n\n const value =\n formatWithPrecision(otherProps.value, precision) ?? valueInternal ?? \"\";\n\n const valueLength = value?.toString().length || 0;\n const isCharacterLimitVisible = valueLength >= maxLength * 0.85;\n const maxLengthError = unlimitedChars && valueLength > maxLength;\n\n const onChange = e => {\n if (!otherProps.onChange || !otherProps.value) {\n setValueInternal(e.target.value);\n }\n otherProps.onChange?.(e);\n };\n\n const isMaxLengthPresent = !!maxLength || maxLength === 0;\n\n const handleChange = e => {\n let formattedValue = formatWithRejectCharsRegex(\n e.target.value,\n rejectCharsRegex\n );\n\n formattedValue = enforceDecimalPrecision(formattedValue, precision);\n\n e.target.value = formattedValue;\n onChange(e);\n };\n\n const handleOnBlur = e => {\n const trimmedValue = getTrimmedValue(value, disableTrimOnBlur);\n const formattedValue = formatWithPrecision(trimmedValue, precision);\n\n if (formattedValue !== value) {\n e.target.value = formattedValue;\n handleChange(e);\n }\n\n onBlur?.(e);\n };\n\n const dataCyLabel =\n typeof label === \"string\" ? hyphenize(label) : hyphenize(dataCy);\n\n return (\n <div className={classnames([\"neeto-ui-input__wrapper\", className])}>\n <div className=\"neeto-ui-input__label-wrapper\">\n {label && (\n <Label\n {...{ required }}\n data-cy={`${dataCyLabel}-input-label`}\n htmlFor={id}\n {...labelProps}\n >\n {label}\n </Label>\n )}\n {isCharacterLimitVisible && (\n <p\n className={classnames(\"neeto-ui-input__max-length\", {\n \"neeto-ui-input__max-length--error\": maxLengthError,\n })}\n >\n {valueLength}/{maxLength}\n </p>\n )}\n </div>\n <div\n data-cy={`${dataCyLabel}-input`}\n className={classnames(\"neeto-ui-input\", {\n \"neeto-ui-input--naked\": !!nakedInput,\n \"neeto-ui-input--error\": !!error,\n \"neeto-ui-input--disabled\": !!disabled,\n \"neeto-ui-input--small\": size === \"small\",\n \"neeto-ui-input--medium\": size === \"medium\",\n \"neeto-ui-input--large\": size === \"large\",\n })}\n >\n {prefix && <div className=\"neeto-ui-input__prefix\">{prefix}</div>}\n <input\n aria-invalid={!!error}\n data-cy={`${dataCyLabel}-input-field`}\n size={contentSize}\n aria-describedby={classnames({\n [errorId]: !!error,\n [helpTextId]: helpText,\n })}\n {...{\n disabled,\n id,\n ref,\n required,\n type,\n ...(isMaxLengthPresent && !unlimitedChars && { maxLength }),\n ...otherProps,\n value,\n }}\n onBlur={handleOnBlur}\n onChange={handleChange}\n />\n {suffix && <div className=\"neeto-ui-input__suffix\">{suffix}</div>}\n </div>\n {!!error && (\n <p\n className=\"neeto-ui-input__error\"\n data-cy={`${dataCyLabel}-input-error`}\n id={errorId}\n >\n {error}\n </p>\n )}\n {helpText && (\n <p\n className=\"neeto-ui-input__help-text\"\n data-cy={`${dataCyLabel}-input-help`}\n id={helpTextId}\n >\n {helpText}\n </p>\n )}\n </div>\n );\n }\n);\n\nInput.displayName = \"Input\";\n\nInput.propTypes = {\n /**\n * To specify a unique ID to the Input component.\n */\n id: PropTypes.string,\n /**\n * To specify the size of Input.\n */\n size: PropTypes.oneOf(Object.values(SIZES)),\n /**\n * To specify the type of Input field.\n */\n type: PropTypes.string,\n /**\n * To specify how many decimal places to show in the input.\n *\n * For example, if precision is 2:\n * 10 will be shown as \"10.00\"\n * 10.1 will be shown as \"10.10\"\n * 9.758 will be rounded and shown as \"9.76\"\n */\n precision: PropTypes.number,\n /**\n * To specify the label props to be passed to the Label component.\n */\n labelProps: PropTypes.object,\n /**\n * To specify a maximum character limit to the Input. Charater limit is visible only if the Input value is greater than or equal to 85% of the maximum character limit.\n */\n maxLength: PropTypes.number,\n /**\n * To be used along with maxLength prop. When set to true the character limit will not be enforced and character count will be shown in error state if the character limit is exceeded.\n */\n unlimitedChars: PropTypes.bool,\n /**\n * To specify the text to be displayed above the Input.\n */\n label: PropTypes.string,\n /**\n * To specify the error message to be shown in the Input field.\n */\n error: PropTypes.string,\n /**\n * To specify the content to be added at the end of the Input field.\n */\n suffix: PropTypes.node,\n /**\n * To specify the content to be added at the beginning of the Input field.\n */\n prefix: PropTypes.node,\n /**\n * To specify whether the Input field is disabled or not.\n */\n disabled: PropTypes.bool,\n /**\n * To specify the text that appears below the Input field.\n */\n helpText: PropTypes.string,\n /**\n * To specify external classNames that can be provided as overrides to the main wrapper.\n */\n className: PropTypes.string,\n /**\n * To create an Input field without any borders.\n */\n nakedInput: PropTypes.bool,\n /**\n * To specify the value to be passed as size attribute to the Input field.\n */\n contentSize: PropTypes.number,\n /**\n * To specify whether the Input field is required or not.\n */\n required: PropTypes.bool,\n /**\n * To specify a regex to be matched against the user input. Any character that matches it\n * cannot be input by the user. It will also prevent such characters from being pasted into the input.\n */\n rejectCharsRegex: PropTypes.instanceOf(RegExp),\n /**\n * To disable leading and trailing white spaces onBlur.\n */\n disableTrimOnBlur: PropTypes.bool,\n};\n\nexport default Input;\n"],"names":["toFixed","numStr","precision","num","Number","isNaN","isValidNumberString","trim","formatWithPrecision","value","str","toString","enforceDecimalPrecision","valueStr","split","regex","RegExp","concat","test","parts","length","_parts","_slicedToArray","integerPart","decimalPart","substring","formatWithRejectCharsRegex","rejectCharsRegex","globalRegex","replace","getTrimmedValue","disableTrimOnBlur","SIZES","small","medium","large","Input","forwardRef","_ref","ref","_ref2","_formatWithPrecision","_ref$size","size","_ref$type","type","_ref$label","label","_ref$dataCy","dataCy","_ref$error","error","_ref$suffix","suffix","_ref$prefix","prefix","_ref$disabled","disabled","_ref$helpText","helpText","_ref$className","className","_ref$nakedInput","nakedInput","_ref$contentSize","contentSize","_ref$required","required","maxLength","_ref$unlimitedChars","unlimitedChars","labelProps","onBlur","_ref$disableTrimOnBlu","_ref$precision","otherProps","_objectWithoutProperties","_excluded","_useState","useState","_useState2","valueInternal","setValueInternal","id","useId","errorId","helpTextId","valueLength","isCharacterLimitVisible","maxLengthError","onChange","e","_otherProps$onChange","target","call","isMaxLengthPresent","handleChange","formattedValue","handleOnBlur","trimmedValue","dataCyLabel","hyphenize","React","createElement","classnames","Label","_extends","htmlFor","_defineProperty","_objectSpread","displayName"],"mappings":"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"}
package/dist/Table.js CHANGED
@@ -295,33 +295,47 @@ var HeaderCell = function HeaderCell(props) {
295
295
  })));
296
296
  };
297
297
 
298
- var _excluded$2 = ["onResize", "width", "onResizeStop"];
298
+ var _excluded$2 = ["onResize", "width", "onResizeStop", "onResizeStart"];
299
299
  var ResizableHeaderCell = function ResizableHeaderCell(props) {
300
300
  var onResize = props.onResize,
301
301
  width = props.width,
302
- onResizeStop = props.onResizeStop,
302
+ _onResizeStop = props.onResizeStop,
303
+ _onResizeStart = props.onResizeStart,
303
304
  restProps = _objectWithoutProperties(props, _excluded$2);
305
+ var _useState = useState(false),
306
+ _useState2 = _slicedToArray(_useState, 2),
307
+ isResizing = _useState2[0],
308
+ setIsResizing = _useState2[1];
304
309
  if (!width) {
305
310
  return /*#__PURE__*/React__default.createElement(CellContent, restProps);
306
311
  }
307
- return /*#__PURE__*/React__default.createElement(Resizable, {
312
+ return /*#__PURE__*/React__default.createElement(Resizable, _defineProperty({
308
313
  onResize: onResize,
309
- onResizeStop: onResizeStop,
314
+ onResizeStop: _onResizeStop,
310
315
  width: width,
311
316
  draggableOpts: {
312
317
  enableUserSelectHack: false
313
318
  },
314
319
  height: 0,
315
320
  handle: /*#__PURE__*/React__default.createElement("span", {
316
- className: "react-resizable-handle",
321
+ className: classnames("react-resizable-handle", {
322
+ "react-resizable-handle--resizing": isResizing
323
+ }),
317
324
  onClick: function onClick(e) {
318
325
  return e.stopPropagation();
319
326
  }
320
- }),
321
- onResizeStart: function onResizeStart(e) {
327
+ }, /*#__PURE__*/React__default.createElement("span", {
328
+ className: "neeto-ui-table-react-resizable-handle__inner"
329
+ })),
330
+ onResizeStart: function onResizeStart(e, data) {
322
331
  e.preventDefault();
332
+ setIsResizing(true);
333
+ _onResizeStart === null || _onResizeStart === void 0 || _onResizeStart(e, data);
323
334
  }
324
- }, /*#__PURE__*/React__default.createElement(CellContent, restProps));
335
+ }, "onResizeStop", function onResizeStop(e, data) {
336
+ setIsResizing(false);
337
+ _onResizeStop === null || _onResizeStop === void 0 || _onResizeStop(e, data);
338
+ }), /*#__PURE__*/React__default.createElement(CellContent, restProps));
325
339
  };
326
340
 
327
341
  var _excluded$1 = ["className"];