intelicoreact 0.0.4 → 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 (147) hide show
  1. package/dist/Atomic/FormElements/CheckboxInput/CheckboxInput.js +6 -2
  2. package/dist/Atomic/FormElements/CheckboxInput/CheckboxInput.scss +91 -60
  3. package/dist/Atomic/FormElements/CheckboxInput/CheckboxInput.stories.js +2 -1
  4. package/dist/Atomic/FormElements/DateTime/DateTime.stories.js +1 -1
  5. package/dist/Atomic/FormElements/Dropdown/Dropdown.js +64 -32
  6. package/dist/Atomic/FormElements/Dropdown/Dropdown.scss +26 -3
  7. package/dist/Atomic/FormElements/Dropdown/Dropdown.stories.js +40 -9
  8. package/dist/Atomic/FormElements/Input/Input.js +141 -97
  9. package/dist/Atomic/FormElements/Input/Input.scss +18 -15
  10. package/dist/Atomic/FormElements/Input/Input.stories.js +46 -29
  11. package/dist/Atomic/FormElements/InputCalendar/InputCalendar.js +89 -0
  12. package/dist/Atomic/FormElements/{Calendar/Calendar.stories.js → InputCalendar/InputCalendar.stories.js} +19 -20
  13. package/dist/Atomic/FormElements/InputDateRange/InputDateRange.js +234 -0
  14. package/dist/Atomic/FormElements/InputDateRange/InputDateRange.scss +626 -0
  15. package/dist/Atomic/FormElements/InputDateRange/InputDateRange.stories.js +91 -0
  16. package/dist/Atomic/FormElements/InputDateRange/components/Datepicker.js +491 -0
  17. package/dist/Atomic/FormElements/InputDateRange/components/OpenedPart.js +156 -0
  18. package/dist/Atomic/FormElements/InputDateRange/components/SelectItem.js +46 -0
  19. package/dist/Atomic/FormElements/InputDateRange/dependencies.js +249 -0
  20. package/dist/Atomic/FormElements/Label/Label.js +3 -10
  21. package/dist/Atomic/FormElements/Label/Label.scss +2 -0
  22. package/dist/Atomic/FormElements/Label/Label.stories.js +5 -4
  23. package/dist/Atomic/FormElements/Modal/Modal.stories.js +64 -18
  24. package/dist/Atomic/FormElements/NumericInput/NumericInput.js +254 -0
  25. package/dist/Atomic/FormElements/NumericInput/NumericInput.scss +135 -0
  26. package/dist/Atomic/FormElements/NumericInput/NumericInput.stories.js +121 -0
  27. package/dist/Atomic/FormElements/RangeCalendar/RangeCalendar.js +167 -0
  28. package/dist/Atomic/FormElements/RangeCalendar/RangeCalendar.scss +101 -0
  29. package/dist/Atomic/FormElements/RangeCalendar/RangeCalendar.stories.js +81 -0
  30. package/dist/Atomic/FormElements/Table/Table.scss +1 -1
  31. package/dist/Atomic/FormElements/Textarea/Textarea.scss +1 -1
  32. package/dist/Atomic/MainMenu/MainMenu.scss +2 -2
  33. package/dist/Atomic/UI/Accordion/Accordion.scss +2 -2
  34. package/dist/Atomic/UI/Arrow/Arrow.js +80 -0
  35. package/dist/Atomic/UI/Arrow/Arrow.scss +19 -0
  36. package/dist/Atomic/UI/Arrow/Arrow.stories.js +46 -0
  37. package/dist/Atomic/UI/Button/Button.js +4 -2
  38. package/dist/Atomic/UI/Button/Button.scss +26 -0
  39. package/dist/Atomic/UI/Button/Button.stories.js +2 -2
  40. package/dist/Atomic/UI/Calendar/Calendar.js +146 -0
  41. package/dist/Atomic/UI/Calendar/Calendar.scss +544 -0
  42. package/dist/Atomic/UI/Calendar/Calendar.stories.js +38 -0
  43. package/dist/Atomic/UI/Price/Price.js +1 -0
  44. package/dist/Atomic/UI/Status/Status.scss +1 -1
  45. package/dist/Constants/index.constants.js +8 -0
  46. package/dist/Functions/inputExecutor.js +58 -0
  47. package/dist/Functions/useClickOutside.js +25 -0
  48. package/dist/Functions/utils.js +10 -2
  49. package/dist/Molecular/Datepicker/Datepicker.js +451 -0
  50. package/dist/Molecular/Datepicker/Datepicker.scss +8 -0
  51. package/dist/Molecular/Datepicker/Datepicker.stories.js +44 -0
  52. package/dist/Molecular/Datepicker/components/Calendar.js +156 -0
  53. package/dist/Molecular/FormElements/FormElement.js +40 -0
  54. package/dist/Molecular/FormElements/FormElement.scss +8 -0
  55. package/dist/Molecular/FormElements/FormElement.stories.js +73 -0
  56. package/dist/scss/_vars.scss +3 -1
  57. package/dist/scss/main.scss +3 -3
  58. package/package.json +9 -4
  59. package/src/Atomic/FormElements/CheckboxInput/CheckboxInput.js +12 -2
  60. package/src/Atomic/FormElements/CheckboxInput/CheckboxInput.scss +91 -60
  61. package/src/Atomic/FormElements/CheckboxInput/CheckboxInput.stories.js +4 -3
  62. package/src/Atomic/FormElements/DateTime/DateTime.stories.js +1 -1
  63. package/src/Atomic/FormElements/Dropdown/Dropdown.js +57 -19
  64. package/src/Atomic/FormElements/Dropdown/Dropdown.scss +26 -3
  65. package/src/Atomic/FormElements/Dropdown/Dropdown.stories.js +37 -15
  66. package/src/Atomic/FormElements/Input/Input.js +136 -79
  67. package/src/Atomic/FormElements/Input/Input.scss +18 -15
  68. package/src/Atomic/FormElements/Input/Input.stories.js +48 -31
  69. package/src/Atomic/FormElements/InputCalendar/InputCalendar.js +43 -0
  70. package/src/Atomic/FormElements/InputCalendar/InputCalendar.stories.js +27 -0
  71. package/src/Atomic/FormElements/InputDateRange/InputDateRange.js +214 -0
  72. package/src/Atomic/FormElements/InputDateRange/InputDateRange.scss +626 -0
  73. package/src/Atomic/FormElements/InputDateRange/InputDateRange.stories.js +61 -0
  74. package/src/Atomic/FormElements/InputDateRange/components/Datepicker.js +412 -0
  75. package/src/Atomic/FormElements/InputDateRange/components/OpenedPart.js +114 -0
  76. package/src/Atomic/FormElements/InputDateRange/components/SelectItem.js +24 -0
  77. package/src/Atomic/FormElements/InputDateRange/dependencies.js +161 -0
  78. package/src/Atomic/FormElements/Label/Label.js +3 -4
  79. package/src/Atomic/FormElements/Label/Label.scss +2 -0
  80. package/src/Atomic/FormElements/Label/Label.stories.js +5 -4
  81. package/src/Atomic/FormElements/Modal/Modal.stories.js +60 -15
  82. package/src/Atomic/FormElements/NumericInput/NumericInput.js +220 -0
  83. package/src/Atomic/FormElements/NumericInput/NumericInput.scss +135 -0
  84. package/src/Atomic/FormElements/NumericInput/NumericInput.stories.js +94 -0
  85. package/src/Atomic/FormElements/RangeCalendar/RangeCalendar.js +146 -0
  86. package/src/Atomic/FormElements/RangeCalendar/RangeCalendar.scss +101 -0
  87. package/src/Atomic/FormElements/RangeCalendar/RangeCalendar.stories.js +54 -0
  88. package/src/Atomic/FormElements/Table/Table.scss +1 -1
  89. package/src/Atomic/FormElements/Textarea/Textarea.scss +1 -1
  90. package/src/Atomic/MainMenu/MainMenu.scss +2 -2
  91. package/src/Atomic/UI/Accordion/Accordion.scss +2 -2
  92. package/src/Atomic/UI/Arrow/Arrow.js +41 -0
  93. package/src/Atomic/UI/Arrow/Arrow.scss +19 -0
  94. package/src/Atomic/UI/Arrow/Arrow.stories.js +32 -0
  95. package/src/Atomic/UI/Button/Button.js +3 -3
  96. package/src/Atomic/UI/Button/Button.scss +26 -0
  97. package/src/Atomic/UI/Button/Button.stories.js +4 -3
  98. package/src/Atomic/{FormElements → UI}/Calendar/Calendar.js +26 -23
  99. package/src/Atomic/UI/Calendar/Calendar.scss +544 -0
  100. package/src/Atomic/UI/Calendar/Calendar.stories.js +24 -0
  101. package/src/Atomic/UI/Price/Price.js +1 -0
  102. package/src/Atomic/UI/Status/Status.scss +1 -1
  103. package/src/Constants/index.constants.js +41 -0
  104. package/src/Functions/inputExecutor.js +62 -0
  105. package/src/Functions/useClickOutside.js +15 -0
  106. package/src/Functions/utils.js +10 -1
  107. package/src/Molecular/Datepicker/Datepicker.js +346 -0
  108. package/src/Molecular/Datepicker/Datepicker.scss +8 -0
  109. package/src/Molecular/Datepicker/Datepicker.stories.js +27 -0
  110. package/src/Molecular/Datepicker/components/Calendar.js +118 -0
  111. package/src/Molecular/FormElements/FormElement.js +18 -0
  112. package/src/Molecular/FormElements/FormElement.scss +8 -0
  113. package/src/Molecular/FormElements/FormElement.stories.js +59 -0
  114. package/src/scss/_vars.scss +3 -1
  115. package/src/scss/main.scss +3 -3
  116. package/dist/Atomic/FormElements/Calendar/Calendar.js +0 -127
  117. package/dist/Atomic/FormElements/Calendar/Calendar.scss +0 -498
  118. package/dist/scss/anme/_anme-bootstrap-grid.scss +0 -748
  119. package/dist/scss/anme/_anme-elements.scss +0 -269
  120. package/dist/scss/anme/_anme-grid.scss +0 -111
  121. package/dist/scss/anme/_anme-justify.scss +0 -111
  122. package/dist/scss/anme/_anme-mixins-media.scss +0 -116
  123. package/dist/scss/anme/_anme-mixins.scss +0 -166
  124. package/dist/scss/anme/_anme-normalize.scss +0 -8
  125. package/dist/scss/anme/_anme-overall.scss +0 -34
  126. package/dist/scss/anme/_anme-padding-margins.scss +0 -419
  127. package/dist/scss/anme/_anme-table.scss +0 -81
  128. package/dist/scss/anme/_anme-theme.scss +0 -275
  129. package/dist/scss/anme/_anme-vars.scss +0 -91
  130. package/dist/scss/anme/_code-styling.scss +0 -23
  131. package/dist/scss/anme/styles.scss +0 -12
  132. package/src/Atomic/FormElements/Calendar/Calendar.scss +0 -498
  133. package/src/Atomic/FormElements/Calendar/Calendar.stories.js +0 -26
  134. package/src/scss/anme/_anme-bootstrap-grid.scss +0 -748
  135. package/src/scss/anme/_anme-elements.scss +0 -269
  136. package/src/scss/anme/_anme-grid.scss +0 -111
  137. package/src/scss/anme/_anme-justify.scss +0 -111
  138. package/src/scss/anme/_anme-mixins-media.scss +0 -116
  139. package/src/scss/anme/_anme-mixins.scss +0 -166
  140. package/src/scss/anme/_anme-normalize.scss +0 -8
  141. package/src/scss/anme/_anme-overall.scss +0 -34
  142. package/src/scss/anme/_anme-padding-margins.scss +0 -419
  143. package/src/scss/anme/_anme-table.scss +0 -81
  144. package/src/scss/anme/_anme-theme.scss +0 -275
  145. package/src/scss/anme/_anme-vars.scss +0 -91
  146. package/src/scss/anme/_code-styling.scss +0 -23
  147. package/src/scss/anme/styles.scss +0 -12
@@ -15,47 +15,51 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
15
15
 
16
16
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
17
17
 
18
- var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
19
-
20
18
  var _react = _interopRequireWildcard(require("react"));
21
19
 
22
20
  var _classnames = _interopRequireDefault(require("classnames"));
23
21
 
24
- var _reactFeather = require("react-feather");
22
+ var _reactInputMask = _interopRequireDefault(require("react-input-mask"));
25
23
 
26
- var _Label = _interopRequireDefault(require("../Label/Label"));
24
+ var _index = require("../../../Constants/index.constants");
27
25
 
28
- require("./Input.scss");
26
+ var _inputExecutor = require("../../../Functions/inputExecutor");
29
27
 
30
- var _excluded = ["error", "onChange", "disabled", "withDelete", "isNumeric", "min", "max", "value", "placeholder", "hint", "label", "hintSide", "className", "isLabelBold", "type", "onBlur", "icon", "isRequired"];
28
+ require("./Input.scss");
31
29
 
32
30
  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
31
 
34
32
  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
33
 
34
+ 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; }
35
+
36
+ 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; }
37
+
36
38
  var Input = function Input(_ref) {
37
- var error = _ref.error,
38
- onChange = _ref.onChange,
39
+ var onChange = _ref.onChange,
40
+ onBlur = _ref.onBlur,
41
+ onFocus = _ref.onFocus,
42
+ onKeyUp = _ref.onKeyUp,
43
+ isNotBlinkErrors = _ref.isNotBlinkErrors,
44
+ isPriceInput = _ref.isPriceInput,
45
+ isOnlyNumber = _ref.isOnlyNumber,
46
+ isOnlyString = _ref.isOnlyString,
47
+ isTwoDigitAfterDot = _ref.isTwoDigitAfterDot,
39
48
  disabled = _ref.disabled,
40
49
  withDelete = _ref.withDelete,
41
- isNumeric = _ref.isNumeric,
42
- min = _ref.min,
43
- max = _ref.max,
44
- _ref$value = _ref.value,
45
- value = _ref$value === void 0 ? min : _ref$value,
50
+ value = _ref.value,
46
51
  placeholder = _ref.placeholder,
47
- hint = _ref.hint,
48
- label = _ref.label,
49
- hintSide = _ref.hintSide,
50
52
  className = _ref.className,
51
- isLabelBold = _ref.isLabelBold,
52
53
  _ref$type = _ref.type,
53
54
  type = _ref$type === void 0 ? 'text' : _ref$type,
54
- _ref$onBlur = _ref.onBlur,
55
- _onBlur = _ref$onBlur === void 0 ? function () {} : _ref$onBlur,
55
+ mask = _ref.mask,
56
+ maskChar = _ref.maskChar,
57
+ formatChars = _ref.formatChars,
58
+ error = _ref.error,
56
59
  icon = _ref.icon,
57
- isRequired = _ref.isRequired,
58
- props = (0, _objectWithoutProperties2.default)(_ref, _excluded);
60
+ symbolsLimit = _ref.symbolsLimit,
61
+ blinkTime = _ref.blinkTime;
62
+ var DEFAULT_BLINK_TIME = 100; // STATES
59
63
 
60
64
  var _useState = (0, _react.useState)(false),
61
65
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
@@ -64,98 +68,138 @@ var Input = function Input(_ref) {
64
68
 
65
69
  var _useState3 = (0, _react.useState)(false),
66
70
  _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
67
- onInputHover = _useState4[0],
68
- setOnInputHover = _useState4[1];
71
+ isEditing = _useState4[0],
72
+ setEditing = _useState4[1];
73
+
74
+ var inputRef = (0, _react.useRef)(null);
75
+ var previousValueRef = (0, _react.useRef)(value);
69
76
 
70
77
  var _useState5 = (0, _react.useState)(false),
71
78
  _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
72
- isEditing = _useState6[0],
73
- setEditing = _useState6[1];
79
+ isAttemptToChange = _useState6[0],
80
+ setIsAttemptToChange = _useState6[1];
81
+
82
+ var _useState7 = (0, _react.useState)(false),
83
+ _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
84
+ isToHighlightError = _useState8[0],
85
+ setIsToHighlightError = _useState8[1];
86
+
87
+ var onlyNumbers = _inputExecutor.formatInput.onlyNumbers,
88
+ onlyString = _inputExecutor.formatInput.onlyString;
89
+ var _formatInput$priceInp = _inputExecutor.formatInput.priceInput,
90
+ addCommas = _formatInput$priceInp.addCommas,
91
+ removeComma = _formatInput$priceInp.removeComma; // HANDLES
92
+
93
+ var handle = {
94
+ change: function change(e) {
95
+ var inputValue = e.target ? e.target.value : e;
96
+
97
+ if (symbolsLimit && inputValue.length > +symbolsLimit) {
98
+ inputValue = inputValue.substring(0, +symbolsLimit);
99
+ }
100
+
101
+ if (isOnlyNumber && !isTwoDigitAfterDot) inputValue = onlyNumbers(inputValue);
102
+ if (isTwoDigitAfterDot) inputValue = onlyNumbers(inputValue, true);
103
+ if (isOnlyString) inputValue = onlyString(inputValue);
104
+ onChange(inputValue.toString());
105
+ },
106
+ toggleEdit: function toggleEdit() {
107
+ setEditing(!isEditing);
108
+ onChange('');
109
+ },
110
+ focus: function focus(e) {
111
+ setIsFocused(true);
112
+ if (isPriceInput && isOnlyNumber && !isTwoDigitAfterDot) onChange(removeComma(value));
113
+ if (onFocus) onFocus(e);
114
+ },
115
+ blur: function blur(e) {
116
+ setIsFocused(false);
117
+ setEditing(false);
74
118
 
75
- var inputRef = (0, _react.useRef)(null);
119
+ if (isPriceInput && isOnlyNumber && !isTwoDigitAfterDot) {
120
+ onChange(addCommas(value));
121
+ }
76
122
 
77
- var changeHandler = function changeHandler(inputValue) {
78
- if (isNumeric || type === 'number' && inputValue !== '') {
79
- var totalValue = Number(+inputValue);
80
- if (totalValue >= (min !== null && min !== void 0 ? min : -Infinity) && totalValue <= (max !== null && max !== void 0 ? max : Infinity)) onChange(totalValue);
81
- return;
82
- }
123
+ if (isTwoDigitAfterDot && !isPriceInput) {
124
+ onChange(cutOffsingleDot(value));
125
+ }
83
126
 
84
- onChange(inputValue);
85
- };
127
+ if (onBlur) onBlur(e);
128
+ },
129
+ keyUp: function keyUp(e) {
130
+ if (!isNotBlinkErrors) {
131
+ var _previousValueRef$cur;
132
+
133
+ var changedValue = '' + (value !== null && value !== void 0 ? value : '');
134
+ var previousValue = '' + ((_previousValueRef$cur = previousValueRef.current) !== null && _previousValueRef$cur !== void 0 ? _previousValueRef$cur : '');
135
+
136
+ var currentSet = function () {
137
+ if (previousValue.length < changedValue.length) return value.slice(previousValue.length - changedValue.length);else return changedValue.includes(e.key) ? e.key : '';
138
+ }();
86
139
 
87
- var toggleEditing = function toggleEditing() {
88
- setEditing(!isEditing);
140
+ if (!_index.KEYBOARD_SERVICE_KEYS.includes(e.key) && changedValue === previousValue) setIsAttemptToChange(true);
141
+ console.log(changedValue, previousValue);
142
+ if (_index.KEYBOARD_SERVICE_KEYS.includes(e.key) || !currentSet) previousValueRef.current = value;else previousValueRef.current = previousValue + currentSet[0];
143
+ }
144
+
145
+ if (onKeyUp) onKeyUp(e.keyCode, e);
146
+ }
89
147
  };
90
148
 
149
+ function cutOffsingleDot(value) {
150
+ return value.slice(-1) === '.' ? value.slice(0, -1) : value;
151
+ }
152
+
91
153
  (0, _react.useEffect)(function () {
92
- if (isEditing) {
93
- inputRef.current.focus();
94
- }
154
+ if (isEditing) inputRef.current.focus();
95
155
  }, [isEditing, isFocused]);
96
- return /*#__PURE__*/_react.default.createElement("div", {
97
- className: (0, _classnames.default)('input-classic', className)
98
- }, label && /*#__PURE__*/_react.default.createElement(_Label.default, {
99
- className: "input-classic-label",
100
- isBold: isLabelBold,
101
- label: label,
102
- hint: hint,
103
- hintSide: hintSide,
104
- isRequired: isRequired
105
- }), /*#__PURE__*/_react.default.createElement("div", {
106
- onMouseEnter: function onMouseEnter() {
107
- return setOnInputHover(true);
108
- },
109
- onMouseLeave: function onMouseLeave() {
110
- return setOnInputHover(false);
111
- },
112
- className: (0, _classnames.default)("input-classic__wrap", (0, _defineProperty2.default)({}, "input-classic__wrap_focus", isFocused), (0, _defineProperty2.default)({}, "input-classic__wrap_error", error), (0, _defineProperty2.default)({}, "input-classic__wrap_disabled", disabled))
113
- }, /*#__PURE__*/_react.default.createElement("input", (0, _extends2.default)({
114
- ref: inputRef,
115
- className: "input-classic__input",
116
- type: isNumeric ? 'number' : type,
117
- onChange: function onChange(e) {
118
- return changeHandler(e.target.value);
119
- },
156
+
157
+ var uniProps = _objectSpread(_objectSpread({
158
+ className: "input ".concat(className),
159
+ placeholder: placeholder,
120
160
  value: value || '',
121
161
  disabled: disabled,
122
- onBlur: function onBlur() {
123
- setIsFocused(false);
124
- setEditing(false);
162
+ onChange: handle.change,
163
+ onFocus: handle.focus,
164
+ onBlur: handle.blur,
165
+ onKeyUp: handle.keyUp
166
+ }, maskChar ? {
167
+ maskChar: maskChar
168
+ } : {}), formatChars ? {
169
+ formatChars: formatChars
170
+ } : {});
171
+
172
+ function renderInput() {
173
+ if (mask) {
174
+ return /*#__PURE__*/_react.default.createElement(_reactInputMask.default, (0, _extends2.default)({}, uniProps, {
175
+ ref: inputRef,
176
+ mask: mask
177
+ }));
178
+ }
125
179
 
126
- _onBlur();
127
- },
128
- onFocus: function onFocus() {
129
- return setIsFocused(true);
130
- },
131
- placeholder: placeholder
132
- }, props)), isNumeric && /*#__PURE__*/_react.default.createElement("div", {
133
- className: "input-classic__nums"
134
- }, /*#__PURE__*/_react.default.createElement("button", {
135
- onClick: function onClick() {
136
- return changeHandler(value - 1);
137
- },
138
- className: (0, _classnames.default)("input-classic__num-btn", {
139
- disabled: value === min
140
- })
141
- }, /*#__PURE__*/_react.default.createElement(_reactFeather.Minus, null)), /*#__PURE__*/_react.default.createElement("button", {
142
- onClick: function onClick() {
143
- return changeHandler(value + 1);
144
- },
145
- className: (0, _classnames.default)("input-classic__num-btn", {
146
- disabled: value === max
147
- })
148
- }, /*#__PURE__*/_react.default.createElement(_reactFeather.Plus, null))), withDelete && onInputHover && !isNumeric && /*#__PURE__*/_react.default.createElement("button", {
149
- className: (0, _classnames.default)("input-classic__close", {
180
+ return /*#__PURE__*/_react.default.createElement("input", (0, _extends2.default)({}, uniProps, {
181
+ ref: inputRef,
182
+ type: isPriceInput ? 'text' : type
183
+ }));
184
+ }
185
+
186
+ (0, _react.useEffect)(function () {
187
+ if (!isNotBlinkErrors && isAttemptToChange) {
188
+ setIsAttemptToChange(null);
189
+ setIsToHighlightError(true);
190
+ setTimeout(function () {
191
+ setIsToHighlightError(false);
192
+ }, blinkTime || DEFAULT_BLINK_TIME);
193
+ }
194
+ }, [isAttemptToChange]);
195
+ return /*#__PURE__*/_react.default.createElement("div", {
196
+ 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))
197
+ }, renderInput(), icon, withDelete && /*#__PURE__*/_react.default.createElement("span", {
198
+ className: (0, _classnames.default)("input__close", {
150
199
  hidden: !value
151
200
  }),
152
- onClick: function onClick() {
153
- toggleEditing();
154
- onChange('');
155
- }
156
- }), icon !== null && icon !== void 0 ? icon : null), error && /*#__PURE__*/_react.default.createElement("span", {
157
- className: "input-classic__error"
158
- }, error));
201
+ onClick: handle.toggleEdit
202
+ }));
159
203
  };
160
204
 
161
205
  var _default = Input;
@@ -1,9 +1,12 @@
1
- .input-classic {
1
+ .input {
2
2
  position: relative;
3
3
  word-break: break-all;
4
-
5
- input::-webkit-outer-spin-button,
6
- input::-webkit-inner-spin-button {
4
+ border: none;
5
+ background: none;
6
+ padding: 0 10px;
7
+ width: 100%;
8
+ &::-webkit-outer-spin-button,
9
+ &::-webkit-inner-spin-button {
7
10
  -webkit-appearance: none;
8
11
  }
9
12
 
@@ -60,15 +63,6 @@
60
63
  border-radius: 4px;
61
64
  }
62
65
 
63
- &__error {
64
- margin-top: 2px;
65
- margin-left: 1px;
66
- position: absolute;
67
- display: block;
68
- font-size: 10px;
69
- color: #f06d8d;
70
- }
71
-
72
66
  &__close {
73
67
  position: relative;
74
68
  opacity: 0.6;
@@ -77,7 +71,8 @@
77
71
  background: none;
78
72
  cursor: pointer;
79
73
  margin-right: 4px;
80
-
74
+ visibility: hidden;
75
+ pointer-events: none;
81
76
  &:hover {
82
77
  opacity: 1;
83
78
  }
@@ -121,7 +116,9 @@
121
116
  background: none;
122
117
  font-size: 20px;
123
118
  user-select: none;
124
-
119
+ &.disabled {
120
+ opacity: 0.3;
121
+ }
125
122
  svg {
126
123
  margin-right: 0;
127
124
  }
@@ -131,3 +128,9 @@
131
128
  margin-bottom: 5px;
132
129
  }
133
130
  }
131
+
132
+ .input__wrap:hover .input__close {
133
+ visibility: visible;
134
+ pointer-events: all;
135
+ }
136
+
@@ -15,6 +15,8 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
15
15
 
16
16
  var _react = _interopRequireWildcard(require("react"));
17
17
 
18
+ var _reactFeather = require("react-feather");
19
+
18
20
  var _Input = _interopRequireDefault(require("./Input"));
19
21
 
20
22
  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); }
@@ -26,46 +28,60 @@ var _default = {
26
28
  title: 'Form Elements/Input',
27
29
  component: _Input.default,
28
30
  argTypes: {
29
- hintSide: {
30
- description: 'string: ["right", "bottom", "top", "left"]',
31
- control: {
32
- type: 'select',
33
- options: ['right', 'bottom', 'top', 'left']
34
- }
35
- },
36
- hint: {
37
- description: 'string'
38
- },
39
31
  disabled: {
40
32
  description: 'boolean'
41
33
  },
42
34
  error: {
43
- description: 'text'
35
+ description: 'text - coloring input if is errored'
36
+ },
37
+ isPriceInput: {
38
+ description: 'boolean - if true, the input will be styled as PriceInput'
44
39
  },
45
40
  withDelete: {
46
- description: 'boolean'
41
+ description: 'boolean - add clear-cross by hover'
47
42
  },
48
- isNumeric: {
49
- description: 'boolean'
43
+ isOnlyNumber: {
44
+ description: 'boolean - only numbers'
50
45
  },
51
- min: {
52
- description: 'number'
46
+ isOnlyString: {
47
+ description: 'boolean - only strings'
53
48
  },
54
- max: {
55
- description: 'number'
49
+ isTwoDigitAfterDot: {
50
+ description: 'boolean - only two digits after dot'
56
51
  },
57
52
  placeholder: {
58
53
  description: 'text'
59
54
  },
60
- label: {
61
- description: 'text'
62
- },
63
55
  type: {
64
- description: 'string: any input type',
56
+ description: "'text', 'number', 'password', 'color', 'date', 'datetime-local', 'month', 'time', 'email', 'range'",
65
57
  control: {
66
58
  type: 'select',
67
- options: ['text', 'number']
59
+ options: ['text', 'number', 'password', 'color', 'date', 'datetime-local', 'month', 'time', 'email', 'range']
68
60
  }
61
+ },
62
+ icon: {
63
+ description: 'JSX'
64
+ },
65
+ value: {
66
+ description: '(* - required prop)'
67
+ },
68
+ className: {
69
+ description: 'string'
70
+ },
71
+ mask: {
72
+ description: 'string: force input to masked https://www.npmjs.com/package/react-input-mask'
73
+ },
74
+ symbolsLimit: {
75
+ description: 'Set limit of symbols in input, overhead will be ignored'
76
+ },
77
+ onBlur: {
78
+ description: 'custom callback on blur'
79
+ },
80
+ onFocus: {
81
+ description: 'custom callback on focus'
82
+ },
83
+ onKeyUp: {
84
+ description: 'custom callback on keyup, returns event keyCode'
69
85
  }
70
86
  }
71
87
  };
@@ -87,14 +103,15 @@ var InputTemplate = Template.bind({});
87
103
  exports.InputTemplate = InputTemplate;
88
104
  InputTemplate.args = {
89
105
  type: 'text',
106
+ isOnlyNumber: false,
107
+ isOnlyString: false,
108
+ isPriceInput: false,
109
+ isTwoDigitAfterDot: false,
90
110
  disabled: false,
91
111
  error: '',
112
+ mask: '',
92
113
  withDelete: true,
93
- isNumeric: false,
94
- min: '0',
95
- max: 5,
114
+ symbolsLimit: 255,
96
115
  placeholder: 'Placeholder',
97
- label: 'label',
98
- hint: 'hint',
99
- hintSide: 'bottom'
116
+ icon: /*#__PURE__*/_react.default.createElement(_reactFeather.User, null)
100
117
  };
@@ -0,0 +1,89 @@
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 _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
+
14
+ var _react = _interopRequireWildcard(require("react"));
15
+
16
+ var _moment = _interopRequireDefault(require("moment"));
17
+
18
+ var _reactInputMask = _interopRequireDefault(require("react-input-mask"));
19
+
20
+ var _Calendar = _interopRequireDefault(require("../../UI/Calendar/Calendar"));
21
+
22
+ var _useClickOutside = require("../../../Functions/useClickOutside");
23
+
24
+ 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); }
25
+
26
+ 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; }
27
+
28
+ var InputCalendar = function InputCalendar(_ref) {
29
+ var data = _ref.data,
30
+ params = _ref.params;
31
+
32
+ var _useState = (0, _react.useState)(data),
33
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
34
+ date = _useState2[0],
35
+ setDate = _useState2[1];
36
+
37
+ var _useState3 = (0, _react.useState)(date),
38
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
39
+ inputValue = _useState4[0],
40
+ setInputValue = _useState4[1];
41
+
42
+ var _useState5 = (0, _react.useState)(false),
43
+ _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
44
+ isOpened = _useState6[0],
45
+ setIsOpened = _useState6[1];
46
+
47
+ var calendarRef = (0, _react.useRef)(null);
48
+ (0, _useClickOutside.useClickOutside)(calendarRef, function () {
49
+ return setIsOpened(false);
50
+ });
51
+
52
+ var changeInputValue = function changeInputValue(value) {
53
+ if (!value.includes('_') && value) {
54
+ setDate((0, _moment.default)(value).format('L'));
55
+ setInputValue((0, _moment.default)(value).format('L'));
56
+ } else {
57
+ setInputValue(value);
58
+ }
59
+ };
60
+
61
+ var changeCalendarDay = function changeCalendarDay(value) {
62
+ setDate(value);
63
+ setInputValue(value);
64
+ };
65
+
66
+ return /*#__PURE__*/_react.default.createElement("div", {
67
+ className: "calendar-container",
68
+ ref: calendarRef
69
+ }, /*#__PURE__*/_react.default.createElement(_reactInputMask.default, {
70
+ mask: "99/99/9999",
71
+ value: inputValue,
72
+ onChange: function onChange(e) {
73
+ return changeInputValue(e.target.value);
74
+ },
75
+ className: "calendar-dropdown",
76
+ onFocus: function onFocus() {
77
+ return setIsOpened(!isOpened);
78
+ }
79
+ }), isOpened ? /*#__PURE__*/_react.default.createElement(_Calendar.default, {
80
+ date: date,
81
+ setDate: function setDate(newDate) {
82
+ return changeCalendarDay(newDate);
83
+ },
84
+ params: params
85
+ }) : null);
86
+ };
87
+
88
+ var _default = InputCalendar;
89
+ exports.default = _default;
@@ -7,13 +7,13 @@ var _typeof = require("@babel/runtime/helpers/typeof");
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: true
9
9
  });
10
- exports.CalendarSimple = exports.default = void 0;
11
-
12
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
+ exports.Calendar = exports.default = void 0;
13
11
 
14
12
  var _react = _interopRequireWildcard(require("react"));
15
13
 
16
- var _Calendar = _interopRequireDefault(require("./Calendar"));
14
+ var _yup = require("yup");
15
+
16
+ var _InputCalendar = _interopRequireDefault(require("./InputCalendar"));
17
17
 
18
18
  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); }
19
19
 
@@ -21,27 +21,26 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
21
21
 
22
22
  global.lng = 'en';
23
23
  var _default = {
24
- title: 'Form Elements/Calendar',
25
- component: _Calendar.default
24
+ title: 'Form Elements/InputCalendar',
25
+ component: _InputCalendar.default
26
26
  };
27
27
  exports.default = _default;
28
28
 
29
29
  var Template = function Template(args) {
30
- var _useState = (0, _react.useState)(args.date),
31
- _useState2 = (0, _slicedToArray2.default)(_useState, 2),
32
- date = _useState2[0],
33
- setDate = _useState2[1];
34
-
35
- return /*#__PURE__*/_react.default.createElement(_Calendar.default, {
36
- date: date,
37
- onClick: function onClick(newDate) {
38
- return setDate(newDate);
39
- }
30
+ var params = {
31
+ minDate: args === null || args === void 0 ? void 0 : args.minDate,
32
+ maxDate: args === null || args === void 0 ? void 0 : args.maxDate
33
+ };
34
+ return /*#__PURE__*/_react.default.createElement(_InputCalendar.default, {
35
+ data: args.date,
36
+ params: params
40
37
  });
41
38
  };
42
39
 
43
- var CalendarSimple = Template.bind({});
44
- exports.CalendarSimple = CalendarSimple;
45
- CalendarSimple.args = {
46
- date: '10.04.2021'
40
+ var Calendar = Template.bind({});
41
+ exports.Calendar = Calendar;
42
+ Calendar.args = {
43
+ date: '10/14/2021',
44
+ minDate: '10/11/2021',
45
+ maxDate: '10/25/2021'
47
46
  };