intelicoreact 0.0.7 → 0.0.8

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.
Files changed (31) hide show
  1. package/dist/Atomic/FormElements/Dropdown/Dropdown.js +20 -19
  2. package/dist/Atomic/FormElements/Input/Input.js +85 -46
  3. package/dist/Atomic/FormElements/Input/Input.stories.js +16 -22
  4. package/dist/Atomic/FormElements/InputDateRange/InputDateRange.js +18 -43
  5. package/dist/Atomic/FormElements/InputDateRange/InputDateRange.scss +42 -10
  6. package/dist/Atomic/FormElements/InputDateRange/InputDateRange.stories.js +3 -156
  7. package/dist/Atomic/FormElements/InputDateRange/components/Datepicker.js +11 -9
  8. package/dist/Atomic/FormElements/InputDateRange/components/SelectItem.js +3 -3
  9. package/dist/Atomic/FormElements/NumericInput/NumericInput.js +254 -0
  10. package/dist/Atomic/FormElements/NumericInput/NumericInput.scss +135 -0
  11. package/dist/Atomic/FormElements/NumericInput/NumericInput.stories.js +121 -0
  12. package/dist/Atomic/UI/Arrow/Arrow.js +6 -6
  13. package/dist/Constants/index.constants.js +8 -0
  14. package/dist/Functions/inputExecutor.js +58 -0
  15. package/package.json +6 -5
  16. package/src/Atomic/FormElements/Dropdown/Dropdown.js +36 -39
  17. package/src/Atomic/FormElements/Input/Input.js +86 -36
  18. package/src/Atomic/FormElements/Input/Input.stories.js +40 -29
  19. package/src/Atomic/FormElements/InputDateRange/InputDateRange.js +187 -214
  20. package/src/Atomic/FormElements/InputDateRange/InputDateRange.scss +42 -10
  21. package/src/Atomic/FormElements/InputDateRange/InputDateRange.stories.js +35 -123
  22. package/src/Atomic/FormElements/InputDateRange/components/Datepicker.js +10 -7
  23. package/src/Atomic/FormElements/InputDateRange/components/OpenedPart.js +2 -2
  24. package/src/Atomic/FormElements/InputDateRange/components/SelectItem.js +1 -1
  25. package/src/Atomic/FormElements/NumericInput/NumericInput.js +220 -0
  26. package/src/Atomic/FormElements/NumericInput/NumericInput.scss +135 -0
  27. package/src/Atomic/FormElements/NumericInput/NumericInput.stories.js +94 -0
  28. package/src/Atomic/UI/Arrow/Arrow.js +4 -4
  29. package/src/Constants/index.constants.js +41 -0
  30. package/src/Functions/inputExecutor.js +62 -0
  31. package/src/Functions/utils.js +4 -1
@@ -11,8 +11,6 @@ exports.InputDateRangeTemplate = exports.default = void 0;
11
11
 
12
12
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
13
 
14
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
-
16
14
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
17
15
 
18
16
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
@@ -29,10 +27,6 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
29
27
 
30
28
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
31
29
 
32
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
33
-
34
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
35
-
36
30
  global.lng = 'en';
37
31
  var _default = {
38
32
  title: 'Form Elements/InputDateRange',
@@ -46,171 +40,24 @@ var _default = {
46
40
  }
47
41
  };
48
42
  exports.default = _default;
49
- var tableData = {
50
- header: [{
51
- id: 1,
52
- label: 'state'
53
- }, {
54
- id: 2,
55
- label: 'Tags'
56
- }, {
57
- id: 3,
58
- label: 'status'
59
- }, {
60
- id: 4,
61
- label: 'loanAmountApproved'
62
- }, {
63
- id: 5,
64
- label: 'loanAmountRejected'
65
- }, {
66
- id: 6,
67
- label: 'approveRate'
68
- }, {
69
- id: 7,
70
- label: 'actions',
71
- type: 'actions'
72
- }],
73
- rows: [{
74
- id: 1,
75
- link: {
76
- label: 'CA',
77
- link: '#s'
78
- },
79
- tags: [{
80
- label: 'Label 1'
81
- }],
82
- status: {
83
- value: '90',
84
- status: 'active'
85
- },
86
- loanAmountApproved: {
87
- value: '$70,000'
88
- },
89
- loanAmountRejected: {
90
- value: '$30,000'
91
- },
92
- approveRate: {
93
- value: '70%'
94
- }
95
- }, {
96
- id: 2,
97
- link: {
98
- label: 'NY',
99
- link: '#s'
100
- },
101
- advancedTags: [{
102
- labelLeft: 'home',
103
- labelRight: 'hoods',
104
- active: 3,
105
- pause: 1,
106
- merchants: 5
107
- }, {
108
- labelRight: 'jewelry',
109
- active: 3,
110
- pause: 1,
111
- merchants: 5
112
- }, {
113
- labelLeft: 'home',
114
- labelRight: 'improvement',
115
- active: 0,
116
- pause: 0,
117
- warnLeft: true,
118
- warnLeftMsg: 'landerNotIncluded',
119
- warnRightMsg: 'noMerchants'
120
- }, {
121
- labelLeft: 'home',
122
- labelRight: 'hoods',
123
- active: 3,
124
- pause: 1,
125
- merchants: 5
126
- }, {
127
- labelRight: 'jewelry',
128
- active: 3,
129
- pause: 1,
130
- merchants: 5
131
- }],
132
- status: {
133
- label: 'Active',
134
- className: 'color--green-haze'
135
- },
136
- loanAmountApproved: {
137
- value: '$3,000'
138
- },
139
- loanAmountRejected: {
140
- value: '$7,000'
141
- },
142
- approveRate: {
143
- value: '30%'
144
- }
145
- }, {
146
- id: 3,
147
- link: {
148
- label: 'NH',
149
- link: '#s'
150
- },
151
- tags: [{
152
- label: 'Label 1'
153
- }, {
154
- label: 'Label 2'
155
- }, {
156
- label: 'Label 3'
157
- }],
158
- status: {
159
- status: 'error'
160
- },
161
- loanAmountApproved: {
162
- value: '$70,000'
163
- },
164
- loanAmountRejected: {
165
- value: '$30,000'
166
- },
167
- approveRate: {
168
- value: '70%'
169
- }
170
- }]
171
- };
172
43
 
173
44
  var Template = function Template(args) {
174
- var _state$rows;
175
-
176
45
  var dateRange = args.dateRange,
177
46
  restOfProps = (0, _objectWithoutProperties2.default)(args, _excluded);
178
47
 
179
48
  var _useState = (0, _react.useState)(dateRange),
180
49
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
181
50
  value = _useState2[0],
182
- setValue = _useState2[1];
183
-
184
- var _useState3 = (0, _react.useState)(tableData),
185
- _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
186
- state = _useState4[0],
187
- setState = _useState4[1];
188
-
189
- var rowsWithActions = state === null || state === void 0 ? void 0 : (_state$rows = state.rows) === null || _state$rows === void 0 ? void 0 : _state$rows.map(function (row) {
190
- return _objectSpread(_objectSpread({}, row), {}, {
191
- actions: row.isDeleted ? [{
192
- type: 'undo'
193
- }] : [{
194
- type: 'download'
195
- }, {
196
- type: 'edit'
197
- }, {
198
- type: 'delete'
199
- }]
200
- });
201
- }); // useEffect(() => console.log(value), [value]);
51
+ setValue = _useState2[1]; // useEffect(() => console.log(value), [value]);
202
52
  // return <InputDateRange {...restOfProps} value={value} onChange={setValue} />;
203
53
 
54
+
204
55
  return /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("div", {
205
56
  className: "mb20"
206
57
  }, /*#__PURE__*/_react.default.createElement(_InputDateRange.default, (0, _extends2.default)({}, restOfProps, {
207
58
  value: value,
208
59
  onChange: setValue
209
- }))), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_Table.default, {
210
- header: state.header,
211
- rows: rowsWithActions,
212
- onChange: setState
213
- })));
60
+ }))));
214
61
  };
215
62
 
216
63
  var InputDateRangeTemplate = Template.bind({});
@@ -384,6 +384,8 @@ var Datepicker = function Datepicker(props) {
384
384
  if (code === 27) doBlur(type, e);
385
385
  };
386
386
 
387
+ var startDateValue = startDate ? (0, _momentTimezone.default)(startDate).format('ll') : '';
388
+ var endDateValue = endDate ? (0, _momentTimezone.default)(endDate).subtract(1, 'm').format('ll') : '';
387
389
  return /*#__PURE__*/_react.default.createElement("div", {
388
390
  className: (0, _classnames.default)('date-picker', className)
389
391
  }, /*#__PURE__*/_react.default.createElement("div", {
@@ -392,20 +394,20 @@ var Datepicker = function Datepicker(props) {
392
394
  className: "date-picker__inputs-block"
393
395
  }, /*#__PURE__*/_react.default.createElement(_Input.default, {
394
396
  dataTest: "datepicker_start-date-input",
395
- className: (0, _classnames.default)('date-picker__date-input', {
397
+ className: (0, _classnames.default)({
396
398
  'date-picker__date-input_active': hoverStatus === 'start'
397
399
  }),
398
- value: isStartFocused ? startDateInput : (0, _momentTimezone.default)(startDate).format('ll'),
399
- disabled: !startDate,
400
+ value: isStartFocused ? startDateInput : startDateValue,
400
401
  onChange: function onChange(value) {
401
402
  return setStartDateInput(handleDateInputOnChange(value));
402
403
  },
403
404
  onFocus: handleStartDateFocus,
405
+ disabled: !startDate,
404
406
  onBlur: handleStartDateBlur,
405
407
  onKeyUp: function onKeyUp(code, e) {
406
408
  return handleKeyPressed(code, e, 'start');
407
- },
408
- ref: startDateInputRef // mask={moment(startDate).format('L').replace(/[0-9]/g, '9')}
409
+ } //ref={startDateInputRef}
410
+ // mask={moment(startDate).format('L').replace(/[0-9]/g, '9')}
409
411
 
410
412
  }), /*#__PURE__*/_react.default.createElement(_Dropdown.default, {
411
413
  dataTest: "datepicker_start-hour-select-input",
@@ -421,10 +423,10 @@ var Datepicker = function Datepicker(props) {
421
423
  className: "date-picker__inputs-separator date-picker__header--gray"
422
424
  }, "\u2014"), /*#__PURE__*/_react.default.createElement(_Input.default, {
423
425
  dataTest: "datepicker_end-date-input",
424
- className: (0, _classnames.default)('date-picker__date-input', {
426
+ className: (0, _classnames.default)({
425
427
  'date-picker__date-input_active': hoverStatus === 'end'
426
428
  }),
427
- value: isEndFocused ? endDateInput : (0, _momentTimezone.default)(subtractDay(endDate)).format('ll'),
429
+ value: isEndFocused ? endDateInput : endDateValue,
428
430
  disabled: !endDate,
429
431
  onChange: function onChange(value) {
430
432
  return setEndDateInput(handleDateInputOnChange(value));
@@ -433,8 +435,8 @@ var Datepicker = function Datepicker(props) {
433
435
  onBlur: handleEndDateBlur,
434
436
  onKeyUp: function onKeyUp(code, e) {
435
437
  return handleKeyPressed(code, e, 'end');
436
- },
437
- ref: endDateInputRef
438
+ } //ref={endDateInputRef}
439
+
438
440
  }), /*#__PURE__*/_react.default.createElement(_Dropdown.default, {
439
441
  dataTest: "datepicker_end-hour-select-input",
440
442
  className: (0, _classnames.default)('date-picker__hour-select-input'),
@@ -36,9 +36,9 @@ var SelectItem = function SelectItem(_ref) {
36
36
  }, /*#__PURE__*/_react.default.createElement("path", {
37
37
  d: "M13.3333 4L5.99999 11.3333L2.66666 8",
38
38
  stroke: "black",
39
- "stroke-width": "1.33333",
40
- "stroke-linecap": "round",
41
- "stroke-linejoin": "round"
39
+ strokeWidth: "1.33333",
40
+ strokeLinecap: "round",
41
+ strokeLinejoin: "round"
42
42
  })), label);
43
43
  };
44
44
 
@@ -0,0 +1,254 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.default = void 0;
11
+
12
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
+
14
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
+
16
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
17
+
18
+ var _react = _interopRequireWildcard(require("react"));
19
+
20
+ var _classnames = _interopRequireDefault(require("classnames"));
21
+
22
+ var _reactFeather = require("react-feather");
23
+
24
+ var _reactInputMask = _interopRequireDefault(require("react-input-mask"));
25
+
26
+ var _index = require("../../../Constants/index.constants");
27
+
28
+ var _inputExecutor = require("../../../Functions/inputExecutor");
29
+
30
+ require("./NumericInput.scss");
31
+
32
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
33
+
34
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
35
+
36
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
37
+
38
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
39
+
40
+ var NumericInput = function NumericInput(_ref) {
41
+ var onChange = _ref.onChange,
42
+ disabled = _ref.disabled,
43
+ withDelete = _ref.withDelete,
44
+ _ref$numStep = _ref.numStep,
45
+ numStep = _ref$numStep === void 0 ? 1 : _ref$numStep,
46
+ _ref$min = _ref.min,
47
+ min = _ref$min === void 0 ? 0 : _ref$min,
48
+ max = _ref.max,
49
+ value = _ref.value,
50
+ placeholder = _ref.placeholder,
51
+ className = _ref.className,
52
+ _ref$type = _ref.type,
53
+ type = _ref$type === void 0 ? 'number' : _ref$type,
54
+ onBlur = _ref.onBlur,
55
+ onFocus = _ref.onFocus,
56
+ onKeyUp = _ref.onKeyUp,
57
+ mask = _ref.mask,
58
+ maskChar = _ref.maskChar,
59
+ formatChars = _ref.formatChars,
60
+ error = _ref.error,
61
+ icon = _ref.icon,
62
+ symbolsLimit = _ref.symbolsLimit,
63
+ isNotBlinkErrors = _ref.isNotBlinkErrors,
64
+ blinkTime = _ref.blinkTime,
65
+ isPriceInput = _ref.isPriceInput;
66
+ var DEFAULT_BLINK_TIME = 200; // STATES
67
+
68
+ var _useState = (0, _react.useState)(false),
69
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
70
+ isFocused = _useState2[0],
71
+ setIsFocused = _useState2[1];
72
+
73
+ var _useState3 = (0, _react.useState)(false),
74
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
75
+ isEditing = _useState4[0],
76
+ setEditing = _useState4[1];
77
+
78
+ var inputRef = (0, _react.useRef)(null);
79
+ var decRef = (0, _react.useRef)(null);
80
+ var incRef = (0, _react.useRef)(null);
81
+ var previousValueRef = (0, _react.useRef)(value);
82
+
83
+ var _useState5 = (0, _react.useState)(false),
84
+ _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
85
+ isAttemptToChange = _useState6[0],
86
+ setIsAttemptToChange = _useState6[1];
87
+
88
+ var _useState7 = (0, _react.useState)(false),
89
+ _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
90
+ isToHighlightError = _useState8[0],
91
+ setIsToHighlightError = _useState8[1];
92
+
93
+ var _useState9 = (0, _react.useState)(0),
94
+ _useState10 = (0, _slicedToArray2.default)(_useState9, 2),
95
+ intMemoVal = _useState10[0],
96
+ setIntMemoVal = _useState10[1];
97
+
98
+ var onlyNumbers = _inputExecutor.formatInput.onlyNumbers;
99
+ var _formatInput$priceInp = _inputExecutor.formatInput.priceInput,
100
+ addCommas = _formatInput$priceInp.addCommas,
101
+ removeComma = _formatInput$priceInp.removeComma; // HANDLES
102
+
103
+ var handle = {
104
+ change: function change(e) {
105
+ var inputValue = e.target ? onlyNumbers(e.target.value) : e;
106
+
107
+ if (inputValue !== '') {
108
+ inputValue = parseFloat(inputValue) || '';
109
+
110
+ if (min && +min > inputValue) {
111
+ inputValue = min;
112
+ } else if (max && +max < inputValue) inputValue = max;
113
+ }
114
+
115
+ if (symbolsLimit) {
116
+ inputValue = inputValue.toString().substring(0, +symbolsLimit);
117
+ }
118
+
119
+ setIntMemoVal(parseFloat(inputValue));
120
+ onChange(inputValue.toString());
121
+ },
122
+ toggleEdit: function toggleEdit() {
123
+ setEditing(!isEditing);
124
+ onChange('');
125
+ },
126
+ focus: function focus(e) {
127
+ setIsFocused(true);
128
+ if (isPriceInput) onChange(removeComma(value));
129
+ if (onFocus) onFocus(e);
130
+ },
131
+ blur: function blur(e) {
132
+ setIsFocused(false);
133
+ setEditing(false);
134
+
135
+ if (isPriceInput) {
136
+ if (!isFinite(value)) {
137
+ value = intMemoVal;
138
+ }
139
+
140
+ onChange(addCommas(value));
141
+ }
142
+
143
+ if (onBlur) onBlur(e);
144
+ },
145
+ keyUp: function keyUp(e) {
146
+ if (!isNotBlinkErrors) {
147
+ var _value, _previousValueRef$cur;
148
+
149
+ var changedValue = '' + ((_value = value) !== null && _value !== void 0 ? _value : '');
150
+ var previousValue = '' + ((_previousValueRef$cur = previousValueRef.current) !== null && _previousValueRef$cur !== void 0 ? _previousValueRef$cur : '');
151
+
152
+ var currentSet = function () {
153
+ if (previousValue.length < changedValue.length) return value.toString().slice(previousValue.length - changedValue.length);else return changedValue.toString().includes(e.key) ? e.key : '';
154
+ }();
155
+
156
+ if (!_index.KEYBOARD_SERVICE_KEYS.includes(e.key) && changedValue === previousValue) setIsAttemptToChange(true);
157
+ if (_index.KEYBOARD_SERVICE_KEYS.includes(e.key) || !currentSet) previousValueRef.current = value;else previousValueRef.current = previousValue + currentSet[0];
158
+ }
159
+
160
+ if (onKeyUp) onKeyUp(e.keyCode, e.target.value);
161
+ },
162
+ decrement: function decrement() {
163
+ handle.change(intMemoVal - +numStep);
164
+ },
165
+ increment: function increment() {
166
+ handle.change(intMemoVal + +numStep);
167
+ }
168
+ };
169
+
170
+ var handleClickOutside = function handleClickOutside(event) {
171
+ if (inputRef.current && !inputRef.current.contains(event.target) && !decRef.current.contains(event.target) && !incRef.current.contains(event.target)) {
172
+ setTimeout(function () {
173
+ inputRef.current.focus();
174
+ inputRef.current.blur();
175
+ }, 0);
176
+ }
177
+ };
178
+
179
+ (0, _react.useEffect)(function () {
180
+ if (!isNotBlinkErrors && isAttemptToChange) {
181
+ setIsAttemptToChange(false);
182
+ setIsToHighlightError(true);
183
+ setTimeout(function () {
184
+ setIsToHighlightError(false);
185
+ }, blinkTime || DEFAULT_BLINK_TIME);
186
+ }
187
+ }, [isAttemptToChange]);
188
+ (0, _react.useEffect)(function () {
189
+ document.addEventListener('click', handleClickOutside, true);
190
+ return function () {
191
+ return document.removeEventListener('click', handleClickOutside, true);
192
+ };
193
+ }, []);
194
+ (0, _react.useEffect)(function () {
195
+ if (isNaN(intMemoVal)) setIntMemoVal(min || '');
196
+ }, [intMemoVal]);
197
+ (0, _react.useEffect)(function () {
198
+ if (isEditing || isFocused) inputRef.current.focus();
199
+ }, [isEditing, isFocused]);
200
+
201
+ var uniProps = _objectSpread(_objectSpread({
202
+ className: "input ".concat(className),
203
+ placeholder: placeholder,
204
+ value: value || '',
205
+ disabled: disabled,
206
+ onChange: handle.change,
207
+ onFocus: handle.focus,
208
+ onBlur: handle.blur,
209
+ onKeyUp: handle.keyUp,
210
+ min: min,
211
+ max: max
212
+ }, maskChar ? {
213
+ maskChar: maskChar
214
+ } : {}), formatChars ? {
215
+ formatChars: formatChars
216
+ } : {});
217
+
218
+ function renderInput() {
219
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("input", (0, _extends2.default)({}, uniProps, {
220
+ ref: inputRef,
221
+ type: type
222
+ })), /*#__PURE__*/_react.default.createElement("div", {
223
+ className: "input__nums"
224
+ }, /*#__PURE__*/_react.default.createElement("button", {
225
+ ref: decRef,
226
+ onClick: function onClick() {
227
+ return handle.decrement();
228
+ },
229
+ className: (0, _classnames.default)("input__num-btn", {
230
+ disabled: +value <= min
231
+ })
232
+ }, /*#__PURE__*/_react.default.createElement(_reactFeather.Minus, null)), /*#__PURE__*/_react.default.createElement("button", {
233
+ ref: incRef,
234
+ onClick: function onClick() {
235
+ return handle.increment();
236
+ },
237
+ className: (0, _classnames.default)("input__num-btn", {
238
+ disabled: +value >= max
239
+ })
240
+ }, /*#__PURE__*/_react.default.createElement(_reactFeather.Plus, null))));
241
+ }
242
+
243
+ return /*#__PURE__*/_react.default.createElement("div", {
244
+ className: (0, _classnames.default)("input__wrap", (0, _defineProperty2.default)({}, "input__wrap_focus", isFocused), (0, _defineProperty2.default)({}, "input__wrap_error", error || isToHighlightError), (0, _defineProperty2.default)({}, "input__wrap_disabled", disabled))
245
+ }, renderInput(), icon, withDelete && /*#__PURE__*/_react.default.createElement("span", {
246
+ className: (0, _classnames.default)("input__close", {
247
+ hidden: !value
248
+ }),
249
+ onClick: handle.toggleEdit
250
+ }));
251
+ };
252
+
253
+ var _default = NumericInput;
254
+ exports.default = _default;
@@ -0,0 +1,135 @@
1
+ .input {
2
+ position: relative;
3
+ word-break: break-all;
4
+ border: none;
5
+ background: none;
6
+ padding: 0 10px;
7
+ width: 100%;
8
+ &::-webkit-outer-spin-button,
9
+ &::-webkit-inner-spin-button {
10
+ -webkit-appearance: none;
11
+ }
12
+
13
+ &__wrap {
14
+ display: flex;
15
+ align-items: center;
16
+ border: 1px solid #e2e5ec;
17
+ box-sizing: border-box;
18
+ background-color: #fff;
19
+ height: 28px;
20
+ border-radius: 4px;
21
+
22
+ &_focus {
23
+ border-color: #6b81dd;
24
+ filter: drop-shadow(0px 0px 4px rgba(93, 120, 255, 0.5));
25
+ }
26
+
27
+ &_disabled {
28
+ background: #f7f8fa;
29
+ opacity: 0.5;
30
+ border-color: #a6acb1;
31
+ pointer-events: none;
32
+ }
33
+
34
+ &_error {
35
+ border-color: #f06d8d;
36
+ }
37
+ }
38
+
39
+ &_disabled {
40
+ background: #f7f8fa;
41
+ opacity: 0.5;
42
+ border-color: #a6acb1;
43
+ pointer-events: none;
44
+ }
45
+
46
+ &_error {
47
+ border-color: #f06d8d;
48
+ }
49
+
50
+ svg {
51
+ margin-right: 4px;
52
+ }
53
+
54
+ &__input {
55
+ width: 100%;
56
+ height: 100%;
57
+ box-sizing: border-box;
58
+ font-size: 13px;
59
+ font-weight: 400;
60
+ color: #1e1e2d;
61
+ border: none;
62
+ padding: 0 5px;
63
+ border-radius: 4px;
64
+ }
65
+
66
+ &__close {
67
+ position: relative;
68
+ opacity: 0.6;
69
+ width: 14px;
70
+ height: 14px;
71
+ background: none;
72
+ cursor: pointer;
73
+ margin-right: 4px;
74
+ visibility: hidden;
75
+ pointer-events: none;
76
+ &:hover {
77
+ opacity: 1;
78
+ }
79
+
80
+ &:before,
81
+ &:after {
82
+ content: '';
83
+ position: absolute;
84
+ top: 0;
85
+ left: 0;
86
+ right: 0;
87
+ margin: auto;
88
+ height: 14px;
89
+ width: 2px;
90
+ background-color: #9aa0b9;
91
+ }
92
+
93
+ &:before {
94
+ transform: rotate(45deg);
95
+ }
96
+
97
+ &:after {
98
+ transform: rotate(-45deg);
99
+ }
100
+ }
101
+
102
+ &__nums {
103
+ display: flex;
104
+ align-items: center;
105
+ height: 100%;
106
+ }
107
+
108
+ &__num-btn {
109
+ cursor: pointer;
110
+ display: flex;
111
+ align-items: center;
112
+ justify-content: center;
113
+ height: 100%;
114
+ width: 24px;
115
+ border-left: 1px solid #e2e5ec;
116
+ background: none;
117
+ font-size: 20px;
118
+ user-select: none;
119
+ &.disabled {
120
+ opacity: 0.3;
121
+ }
122
+ svg {
123
+ margin-right: 0;
124
+ }
125
+ }
126
+
127
+ &-label {
128
+ margin-bottom: 5px;
129
+ }
130
+ }
131
+
132
+ .input__wrap:hover .input__close {
133
+ visibility: visible;
134
+ pointer-events: all;
135
+ }