intelicoreact 0.0.48 → 0.0.53
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Atomic/FormElements/Calendar/Calendar.js +20 -9
- package/dist/Atomic/FormElements/Calendar/Calendar.scss +1 -1
- package/dist/Atomic/FormElements/Calendar/Calendar.stories.js +12 -54
- package/dist/Atomic/FormElements/Dropdown/Dropdown.js +5 -7
- package/dist/Atomic/FormElements/Input/Input.js +5 -4
- package/dist/Atomic/FormElements/Input/Input.stories.js +5 -1
- package/dist/Atomic/FormElements/InputCalendar/InputCalendar.js +89 -0
- package/dist/Atomic/FormElements/InputCalendar/InputCalendar.stories.js +46 -0
- package/dist/Atomic/UI/Price/Price.js +1 -0
- package/package.json +2 -2
- package/src/Atomic/FormElements/Calendar/Calendar.js +13 -10
- package/src/Atomic/FormElements/Calendar/Calendar.scss +1 -1
- package/src/Atomic/FormElements/Calendar/Calendar.stories.js +8 -27
- package/src/Atomic/FormElements/Dropdown/Dropdown.js +2 -3
- package/src/Atomic/FormElements/Input/Input.js +5 -4
- package/src/Atomic/FormElements/Input/Input.stories.js +3 -1
- package/src/Atomic/FormElements/InputCalendar/InputCalendar.js +43 -0
- package/src/Atomic/FormElements/InputCalendar/InputCalendar.stories.js +27 -0
- package/src/Atomic/UI/Price/Price.js +1 -0
|
@@ -33,18 +33,26 @@ function _default(props) {
|
|
|
33
33
|
_props$allowPrev = props.allowPrev,
|
|
34
34
|
allowPrev = _props$allowPrev === void 0 ? true : _props$allowPrev,
|
|
35
35
|
_props$allowNext = props.allowNext,
|
|
36
|
-
allowNext = _props$allowNext === void 0 ? true : _props$allowNext
|
|
36
|
+
allowNext = _props$allowNext === void 0 ? true : _props$allowNext,
|
|
37
|
+
params = props.params;
|
|
38
|
+
var minDate = params.minDate,
|
|
39
|
+
maxDate = params.maxDate;
|
|
37
40
|
|
|
38
41
|
var _useState = (0, _react.useState)({}),
|
|
39
42
|
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
40
43
|
days = _useState2[0],
|
|
41
44
|
setDays = _useState2[1];
|
|
42
45
|
|
|
43
|
-
var
|
|
46
|
+
var _useState3 = (0, _react.useState)(date),
|
|
47
|
+
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
48
|
+
showDate = _useState4[0],
|
|
49
|
+
setShowDate = _useState4[1];
|
|
50
|
+
|
|
51
|
+
var selectedDay = (0, _moment.default)(showDate);
|
|
44
52
|
var isError = 'Invalid date';
|
|
45
53
|
var title = (0, _react.useMemo)(function () {
|
|
46
|
-
return selectedDay.format('MMM') === isError ? isError : "".concat(selectedDay.format('MMM'), " ").concat((0, _moment.default)(
|
|
47
|
-
}, [date]);
|
|
54
|
+
return selectedDay.format('MMM') === isError ? isError : "".concat(selectedDay.format('MMM'), " ").concat((0, _moment.default)(showDate).format('YYYY'));
|
|
55
|
+
}, [date, showDate]);
|
|
48
56
|
(0, _react.useEffect)(function () {
|
|
49
57
|
var result = {};
|
|
50
58
|
var day = selectedDay.startOf('month');
|
|
@@ -66,20 +74,23 @@ function _default(props) {
|
|
|
66
74
|
}
|
|
67
75
|
|
|
68
76
|
setDays(result);
|
|
69
|
-
}, [
|
|
77
|
+
}, [showDate]);
|
|
70
78
|
|
|
71
79
|
var renderDay = function renderDay(week, dayOfWeek) {
|
|
72
80
|
var day = days[week][dayOfWeek];
|
|
73
81
|
if (!day) return /*#__PURE__*/_react.default.createElement("div", {
|
|
74
82
|
className: "calendar__day"
|
|
75
83
|
});
|
|
76
|
-
var isFutureDay = day && (0, _moment.default)(day.date).isAfter((0, _moment.default)(), 'day');
|
|
84
|
+
var isFutureDay = day && maxDate ? (0, _moment.default)(day.date).isAfter((0, _moment.default)(maxDate || ''), 'day') : (0, _moment.default)(day.date).isAfter((0, _moment.default)(), 'day');
|
|
85
|
+
var isBeforeDay = day && (0, _moment.default)(day.date).isBefore((0, _moment.default)(minDate || ''), 'day');
|
|
77
86
|
var classNames = (0, _classnames.default)('calendar__day', {
|
|
78
87
|
'calendar__day--clickable': day
|
|
79
88
|
}, {
|
|
80
89
|
'calendar__day--disabled': isFutureDay
|
|
81
90
|
}, {
|
|
82
|
-
'calendar__day--
|
|
91
|
+
'calendar__day--disabled': isBeforeDay
|
|
92
|
+
}, {
|
|
93
|
+
'calendar__day--selected': (0, _moment.default)(date).format() === (0, _moment.default)(day.date).format()
|
|
83
94
|
});
|
|
84
95
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
85
96
|
key: "".concat(week, "_").concat(dayOfWeek),
|
|
@@ -93,11 +104,11 @@ function _default(props) {
|
|
|
93
104
|
};
|
|
94
105
|
|
|
95
106
|
var handlePrev = function handlePrev() {
|
|
96
|
-
|
|
107
|
+
setShowDate((0, _moment.default)(showDate).subtract(1, 'month').format('L'));
|
|
97
108
|
};
|
|
98
109
|
|
|
99
110
|
var handleNext = function handleNext() {
|
|
100
|
-
|
|
111
|
+
setShowDate((0, _moment.default)(showDate).add(1, 'month').format('L'));
|
|
101
112
|
};
|
|
102
113
|
|
|
103
114
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
@@ -2,74 +2,32 @@
|
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
4
|
|
|
5
|
-
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
-
|
|
7
5
|
Object.defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
10
|
-
exports.
|
|
11
|
-
|
|
12
|
-
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
13
|
-
|
|
14
|
-
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
exports.CalendarTemplate = exports.default = void 0;
|
|
15
9
|
|
|
16
|
-
var
|
|
17
|
-
|
|
18
|
-
var _useClickOutside = require("../../../Functions/useClickOutside");
|
|
10
|
+
var _react = _interopRequireDefault(require("react"));
|
|
19
11
|
|
|
20
12
|
var _Calendar = _interopRequireDefault(require("./Calendar"));
|
|
21
13
|
|
|
22
|
-
var _reactInputMask = _interopRequireDefault(require("react-input-mask"));
|
|
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
14
|
global.lng = 'en';
|
|
29
15
|
var _default = {
|
|
30
|
-
title: '
|
|
16
|
+
title: 'UI/Calendar',
|
|
31
17
|
component: _Calendar.default
|
|
32
18
|
};
|
|
33
19
|
exports.default = _default;
|
|
34
20
|
|
|
35
21
|
var Template = function Template(args) {
|
|
36
|
-
|
|
37
|
-
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
38
|
-
date = _useState2[0],
|
|
39
|
-
_setDate = _useState2[1];
|
|
40
|
-
|
|
41
|
-
var _useState3 = (0, _react.useState)(false),
|
|
42
|
-
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
43
|
-
isOpened = _useState4[0],
|
|
44
|
-
setIsOpened = _useState4[1];
|
|
45
|
-
|
|
46
|
-
var calendarRef = (0, _react.useRef)(null);
|
|
47
|
-
(0, _useClickOutside.useClickOutside)(calendarRef, function () {
|
|
48
|
-
return setIsOpened(false);
|
|
49
|
-
});
|
|
50
|
-
return /*#__PURE__*/_react.default.createElement("div", {
|
|
51
|
-
className: "calendar-container",
|
|
52
|
-
ref: calendarRef
|
|
53
|
-
}, /*#__PURE__*/_react.default.createElement(_reactInputMask.default, {
|
|
54
|
-
mask: "99/99/9999",
|
|
55
|
-
value: date,
|
|
56
|
-
onChange: function onChange(e) {
|
|
57
|
-
return _setDate(e.target.value);
|
|
58
|
-
},
|
|
59
|
-
className: "calendar-dropdown",
|
|
60
|
-
onFocus: function onFocus() {
|
|
61
|
-
return setIsOpened(!isOpened);
|
|
62
|
-
}
|
|
63
|
-
}), isOpened ? /*#__PURE__*/_react.default.createElement(_Calendar.default, {
|
|
64
|
-
date: date,
|
|
65
|
-
setDate: function setDate(newDate) {
|
|
66
|
-
return _setDate(newDate);
|
|
67
|
-
}
|
|
68
|
-
}) : null);
|
|
22
|
+
return /*#__PURE__*/_react.default.createElement(_Calendar.default, args);
|
|
69
23
|
};
|
|
70
24
|
|
|
71
|
-
var
|
|
72
|
-
exports.
|
|
73
|
-
|
|
74
|
-
date: '
|
|
25
|
+
var CalendarTemplate = Template.bind({});
|
|
26
|
+
exports.CalendarTemplate = CalendarTemplate;
|
|
27
|
+
CalendarTemplate.args = {
|
|
28
|
+
date: '12/03/2021',
|
|
29
|
+
params: {},
|
|
30
|
+
setDate: function setDate() {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
75
33
|
};
|
|
@@ -86,8 +86,6 @@ var Dropdown = function Dropdown(_ref) {
|
|
|
86
86
|
var filteredOptions = [].concat((0, _toConsumableArray2.default)(filteredItems), (0, _toConsumableArray2.default)(filteredGroups));
|
|
87
87
|
|
|
88
88
|
var handleClickOutside = function handleClickOutside(event) {
|
|
89
|
-
console.log(dropdownRef.current.contains(event.target));
|
|
90
|
-
|
|
91
89
|
if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {
|
|
92
90
|
setIsOpen(false);
|
|
93
91
|
setSearchValue(null);
|
|
@@ -160,7 +158,10 @@ var Dropdown = function Dropdown(_ref) {
|
|
|
160
158
|
className: (0, _classnames.default)(RC, className),
|
|
161
159
|
ref: dropdownRef
|
|
162
160
|
}, /*#__PURE__*/_react.default.createElement("button", {
|
|
163
|
-
className: "".concat(RC, "__trigger input__wrap ").concat(!value ? 'placeholder' : '', " ").concat(error ? 'error' : '')
|
|
161
|
+
className: "".concat(RC, "__trigger input__wrap ").concat(!value ? 'placeholder' : '', " ").concat(error ? 'error' : ''),
|
|
162
|
+
onClick: function onClick() {
|
|
163
|
+
return !isSearchable ? setIsOpen(!isOpen) : null;
|
|
164
|
+
}
|
|
164
165
|
}, isSearchable ? /*#__PURE__*/_react.default.createElement("input", {
|
|
165
166
|
className: "".concat(RC, "__input"),
|
|
166
167
|
value: searchValue !== null && searchValue !== void 0 ? searchValue : selectedLabel,
|
|
@@ -172,10 +173,7 @@ var Dropdown = function Dropdown(_ref) {
|
|
|
172
173
|
return setIsOpen(true);
|
|
173
174
|
}
|
|
174
175
|
}) : /*#__PURE__*/_react.default.createElement("span", {
|
|
175
|
-
className: "text"
|
|
176
|
-
onClick: function onClick() {
|
|
177
|
-
return setIsOpen(!isOpen);
|
|
178
|
-
}
|
|
176
|
+
className: "text"
|
|
179
177
|
}, selectedLabel || placeholder), /*#__PURE__*/_react.default.createElement("span", {
|
|
180
178
|
className: (0, _classnames.default)("".concat(RC, "__arrow"), (0, _defineProperty2.default)({}, "".concat(RC, "__arrow_active"), isOpen)),
|
|
181
179
|
onClick: function onClick() {
|
|
@@ -49,7 +49,8 @@ var Input = function Input(_ref) {
|
|
|
49
49
|
onKeyUp = _ref.onKeyUp,
|
|
50
50
|
mask = _ref.mask,
|
|
51
51
|
error = _ref.error,
|
|
52
|
-
icon = _ref.icon
|
|
52
|
+
icon = _ref.icon,
|
|
53
|
+
symbolsLimit = _ref.symbolsLimit;
|
|
53
54
|
|
|
54
55
|
// STATES
|
|
55
56
|
var _useState = (0, _react.useState)(false),
|
|
@@ -65,8 +66,8 @@ var Input = function Input(_ref) {
|
|
|
65
66
|
var inputRef = (0, _react.useRef)(null); // HANDLES
|
|
66
67
|
|
|
67
68
|
var handle = {
|
|
68
|
-
change: function change(
|
|
69
|
-
var inputValue =
|
|
69
|
+
change: function change(e) {
|
|
70
|
+
var inputValue = e.target ? e.target.value : e;
|
|
70
71
|
|
|
71
72
|
if (isNumeric || type === 'number' && inputValue !== '') {
|
|
72
73
|
inputValue = parseFloat(inputValue) || '';
|
|
@@ -74,7 +75,7 @@ var Input = function Input(_ref) {
|
|
|
74
75
|
if (min && +min > inputValue) {
|
|
75
76
|
inputValue = min;
|
|
76
77
|
} else if (max && +max < inputValue) inputValue = max;
|
|
77
|
-
}
|
|
78
|
+
} else if (symbolsLimit && inputValue.length > +symbolsLimit) inputValue = inputValue.substring(0, +symbolsLimit);
|
|
78
79
|
|
|
79
80
|
onChange(inputValue.toString());
|
|
80
81
|
},
|
|
@@ -71,6 +71,9 @@ var _default = {
|
|
|
71
71
|
mask: {
|
|
72
72
|
description: 'string: force input to masked https://www.npmjs.com/package/react-input-mask'
|
|
73
73
|
},
|
|
74
|
+
symbolsLimit: {
|
|
75
|
+
description: 'Set limit of symbols in input, overhead will be ignored'
|
|
76
|
+
},
|
|
74
77
|
onBlur: {
|
|
75
78
|
description: 'custom callback on blur'
|
|
76
79
|
},
|
|
@@ -109,5 +112,6 @@ InputTemplate.args = {
|
|
|
109
112
|
max: '5',
|
|
110
113
|
placeholder: 'Placeholder',
|
|
111
114
|
mask: '',
|
|
112
|
-
icon: /*#__PURE__*/_react.default.createElement(_reactFeather.User, null)
|
|
115
|
+
icon: /*#__PURE__*/_react.default.createElement(_reactFeather.User, null),
|
|
116
|
+
symbolsLimit: 225
|
|
113
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 _useClickOutside = require("../../../Functions/useClickOutside");
|
|
17
|
+
|
|
18
|
+
var _Calendar = _interopRequireDefault(require("../Calendar/Calendar"));
|
|
19
|
+
|
|
20
|
+
var _reactInputMask = _interopRequireDefault(require("react-input-mask"));
|
|
21
|
+
|
|
22
|
+
var _moment = _interopRequireDefault(require("moment"));
|
|
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;
|
|
@@ -0,0 +1,46 @@
|
|
|
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.Calendar = exports.default = void 0;
|
|
11
|
+
|
|
12
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
13
|
+
|
|
14
|
+
var _yup = require("yup");
|
|
15
|
+
|
|
16
|
+
var _InputCalendar = _interopRequireDefault(require("./InputCalendar"));
|
|
17
|
+
|
|
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
|
+
|
|
20
|
+
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; }
|
|
21
|
+
|
|
22
|
+
global.lng = 'en';
|
|
23
|
+
var _default = {
|
|
24
|
+
title: 'Form Elements/InputCalendar',
|
|
25
|
+
component: _InputCalendar.default
|
|
26
|
+
};
|
|
27
|
+
exports.default = _default;
|
|
28
|
+
|
|
29
|
+
var Template = function Template(args) {
|
|
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
|
|
37
|
+
});
|
|
38
|
+
};
|
|
39
|
+
|
|
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'
|
|
46
|
+
};
|
package/package.json
CHANGED
|
@@ -5,16 +5,17 @@ import { ChevronLeft, ChevronRight } from 'react-feather';
|
|
|
5
5
|
import './Calendar.scss';
|
|
6
6
|
|
|
7
7
|
export default function (props) {
|
|
8
|
-
const { date, setDate, allowPrev = true, allowNext = true } = props;
|
|
9
|
-
|
|
8
|
+
const { date, setDate, allowPrev = true, allowNext = true, params } = props;
|
|
9
|
+
const { minDate, maxDate } = params;
|
|
10
10
|
const [days, setDays] = useState({});
|
|
11
|
+
const [showDate, setShowDate] = useState(date);
|
|
11
12
|
|
|
12
|
-
const selectedDay = moment(
|
|
13
|
+
const selectedDay = moment(showDate);
|
|
13
14
|
const isError = 'Invalid date';
|
|
14
15
|
|
|
15
16
|
const title = useMemo(
|
|
16
|
-
() => (selectedDay.format('MMM') === isError ? isError : `${selectedDay.format('MMM')} ${moment(
|
|
17
|
-
[date]
|
|
17
|
+
() => (selectedDay.format('MMM') === isError ? isError : `${selectedDay.format('MMM')} ${moment(showDate).format('YYYY')}`),
|
|
18
|
+
[date, showDate]
|
|
18
19
|
);
|
|
19
20
|
useEffect(() => {
|
|
20
21
|
const result = {};
|
|
@@ -31,18 +32,20 @@ export default function (props) {
|
|
|
31
32
|
day.add(1, 'd');
|
|
32
33
|
}
|
|
33
34
|
setDays(result);
|
|
34
|
-
}, [
|
|
35
|
+
}, [showDate]);
|
|
35
36
|
|
|
36
37
|
const renderDay = (week, dayOfWeek) => {
|
|
37
38
|
const day = days[week][dayOfWeek];
|
|
38
39
|
if (!day) return <div className="calendar__day" />;
|
|
39
|
-
const isFutureDay = day && moment(day.date).isAfter(moment(), 'day');
|
|
40
|
+
const isFutureDay = day && maxDate ? moment(day.date).isAfter(moment(maxDate || ''), 'day') : moment(day.date).isAfter(moment(), 'day');
|
|
41
|
+
const isBeforeDay = day && moment(day.date).isBefore(moment(minDate || ''), 'day');
|
|
40
42
|
|
|
41
43
|
const classNames = cn(
|
|
42
44
|
'calendar__day',
|
|
43
45
|
{ 'calendar__day--clickable': day },
|
|
44
46
|
{ 'calendar__day--disabled': isFutureDay },
|
|
45
|
-
{ 'calendar__day--
|
|
47
|
+
{ 'calendar__day--disabled': isBeforeDay },
|
|
48
|
+
{ 'calendar__day--selected': moment(date).format() === moment(day.date).format() }
|
|
46
49
|
);
|
|
47
50
|
|
|
48
51
|
return (
|
|
@@ -59,11 +62,11 @@ export default function (props) {
|
|
|
59
62
|
};
|
|
60
63
|
|
|
61
64
|
const handlePrev = () => {
|
|
62
|
-
|
|
65
|
+
setShowDate(moment(showDate).subtract(1, 'month').format('L'));
|
|
63
66
|
};
|
|
64
67
|
|
|
65
68
|
const handleNext = () => {
|
|
66
|
-
|
|
69
|
+
setShowDate(moment(showDate).add(1, 'month').format('L'));
|
|
67
70
|
};
|
|
68
71
|
|
|
69
72
|
return (
|
|
@@ -1,38 +1,19 @@
|
|
|
1
|
-
import React
|
|
2
|
-
import { ref } from 'yup';
|
|
3
|
-
import { useClickOutside } from '../../../Functions/useClickOutside';
|
|
1
|
+
import React from 'react';
|
|
4
2
|
import Calendar from './Calendar';
|
|
5
|
-
import InputMask from 'react-input-mask';
|
|
6
3
|
|
|
7
4
|
global.lng = 'en';
|
|
8
5
|
|
|
9
6
|
export default {
|
|
10
|
-
title: '
|
|
7
|
+
title: 'UI/Calendar',
|
|
11
8
|
component: Calendar,
|
|
12
9
|
};
|
|
13
10
|
|
|
14
|
-
const Template =
|
|
15
|
-
const [date, setDate] = useState(args.date);
|
|
16
|
-
const [isOpened, setIsOpened] = useState(false);
|
|
17
|
-
const calendarRef = useRef(null);
|
|
18
|
-
useClickOutside(calendarRef, () => setIsOpened(false));
|
|
11
|
+
const Template = args => <Calendar {...args} />;
|
|
19
12
|
|
|
20
|
-
|
|
21
|
-
<div className="calendar-container" ref={calendarRef}>
|
|
22
|
-
<InputMask
|
|
23
|
-
mask="99/99/9999"
|
|
24
|
-
value={date}
|
|
25
|
-
onChange={(e) => setDate(e.target.value)}
|
|
26
|
-
className="calendar-dropdown"
|
|
27
|
-
onFocus={() => setIsOpened(!isOpened)}
|
|
28
|
-
/>
|
|
29
|
-
{isOpened ? <Calendar date={date} setDate={(newDate) => setDate(newDate)} /> : null}
|
|
30
|
-
</div>
|
|
31
|
-
);
|
|
32
|
-
};
|
|
33
|
-
|
|
34
|
-
export const CalendarSimple = Template.bind({});
|
|
13
|
+
export const CalendarTemplate = Template.bind({});
|
|
35
14
|
|
|
36
|
-
|
|
37
|
-
date: '
|
|
15
|
+
CalendarTemplate.args = {
|
|
16
|
+
date: '12/03/2021',
|
|
17
|
+
params: {},
|
|
18
|
+
setDate: () => null,
|
|
38
19
|
};
|
|
@@ -24,7 +24,6 @@ const Dropdown = ({ options, value, error, onChange, placeholder, className, isS
|
|
|
24
24
|
const filteredOptions = [...filteredItems, ...filteredGroups];
|
|
25
25
|
|
|
26
26
|
const handleClickOutside = event => {
|
|
27
|
-
console.log(dropdownRef.current.contains(event.target));
|
|
28
27
|
if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {
|
|
29
28
|
setIsOpen(false);
|
|
30
29
|
setSearchValue(null);
|
|
@@ -76,7 +75,7 @@ const Dropdown = ({ options, value, error, onChange, placeholder, className, isS
|
|
|
76
75
|
|
|
77
76
|
return (
|
|
78
77
|
<div className={cn(RC, className)} ref={dropdownRef}>
|
|
79
|
-
<button className={`${RC}__trigger input__wrap ${!value ? 'placeholder' : ''} ${error ? 'error' : ''}`} >
|
|
78
|
+
<button className={`${RC}__trigger input__wrap ${!value ? 'placeholder' : ''} ${error ? 'error' : ''}`} onClick={() => !isSearchable ? setIsOpen(!isOpen) : null}>
|
|
80
79
|
{isSearchable ? (
|
|
81
80
|
<input
|
|
82
81
|
className={`${RC}__input`}
|
|
@@ -86,7 +85,7 @@ const Dropdown = ({ options, value, error, onChange, placeholder, className, isS
|
|
|
86
85
|
onFocus={() => setIsOpen(true)}
|
|
87
86
|
/>
|
|
88
87
|
) : (
|
|
89
|
-
<span className="text"
|
|
88
|
+
<span className="text">
|
|
90
89
|
{selectedLabel || placeholder}
|
|
91
90
|
</span>
|
|
92
91
|
)}
|
|
@@ -23,6 +23,7 @@ const Input = ({
|
|
|
23
23
|
mask,
|
|
24
24
|
error,
|
|
25
25
|
icon,
|
|
26
|
+
symbolsLimit,
|
|
26
27
|
}) => {
|
|
27
28
|
// STATES
|
|
28
29
|
const [isFocused, setIsFocused] = useState(false);
|
|
@@ -30,14 +31,14 @@ const Input = ({
|
|
|
30
31
|
const inputRef = useRef(null);
|
|
31
32
|
// HANDLES
|
|
32
33
|
const handle = {
|
|
33
|
-
change:
|
|
34
|
-
let inputValue =
|
|
34
|
+
change: e => {
|
|
35
|
+
let inputValue = e.target ? e.target.value : e;
|
|
35
36
|
if (isNumeric || (type === 'number' && inputValue !== '')) {
|
|
36
37
|
inputValue = parseFloat(inputValue) || '';
|
|
37
38
|
if (min && +min > inputValue) {
|
|
38
39
|
inputValue = min;
|
|
39
40
|
} else if (max && +max < inputValue) inputValue = max;
|
|
40
|
-
}
|
|
41
|
+
} else if (symbolsLimit && inputValue.length > +symbolsLimit) inputValue = inputValue.substring(0, +symbolsLimit);
|
|
41
42
|
onChange(inputValue.toString());
|
|
42
43
|
},
|
|
43
44
|
toggleEdit: () => {
|
|
@@ -70,7 +71,7 @@ const Input = ({
|
|
|
70
71
|
onBlur: handle.blur,
|
|
71
72
|
onKeyUp: handle.keyUp,
|
|
72
73
|
min,
|
|
73
|
-
max
|
|
74
|
+
max,
|
|
74
75
|
};
|
|
75
76
|
|
|
76
77
|
function renderInput() {
|
|
@@ -43,6 +43,7 @@ export default {
|
|
|
43
43
|
value: { description: '(* - required prop)' },
|
|
44
44
|
className: { description: 'string' },
|
|
45
45
|
mask: { description: 'string: force input to masked https://www.npmjs.com/package/react-input-mask' },
|
|
46
|
+
symbolsLimit: { description: 'Set limit of symbols in input, overhead will be ignored' },
|
|
46
47
|
onBlur: { description: 'custom callback on blur' },
|
|
47
48
|
onFocus: { description: 'custom callback on focus' },
|
|
48
49
|
onKeyUp: { description: 'custom callback on keyup, returns event keyCode' }
|
|
@@ -67,5 +68,6 @@ InputTemplate.args = {
|
|
|
67
68
|
max: '5',
|
|
68
69
|
placeholder: 'Placeholder',
|
|
69
70
|
mask: '',
|
|
70
|
-
icon: <User
|
|
71
|
+
icon: <User />,
|
|
72
|
+
symbolsLimit: 225
|
|
71
73
|
};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import React, { useState, useRef } from 'react';
|
|
2
|
+
import { useClickOutside } from '../../../Functions/useClickOutside';
|
|
3
|
+
import Calendar from '../Calendar/Calendar';
|
|
4
|
+
import InputMask from 'react-input-mask';
|
|
5
|
+
import moment from 'moment';
|
|
6
|
+
|
|
7
|
+
const InputCalendar = ({ data, params }) => {
|
|
8
|
+
const [date, setDate] = useState(data);
|
|
9
|
+
const [inputValue, setInputValue] = useState(date);
|
|
10
|
+
const [isOpened, setIsOpened] = useState(false);
|
|
11
|
+
const calendarRef = useRef(null);
|
|
12
|
+
|
|
13
|
+
useClickOutside(calendarRef, () => setIsOpened(false));
|
|
14
|
+
|
|
15
|
+
const changeInputValue = (value) => {
|
|
16
|
+
if (!value.includes('_') && value) {
|
|
17
|
+
setDate(moment(value).format('L'));
|
|
18
|
+
setInputValue(moment(value).format('L'));
|
|
19
|
+
} else {
|
|
20
|
+
setInputValue(value);
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
const changeCalendarDay = (value) => {
|
|
25
|
+
setDate(value);
|
|
26
|
+
setInputValue(value);
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
return (
|
|
30
|
+
<div className="calendar-container" ref={calendarRef}>
|
|
31
|
+
<InputMask
|
|
32
|
+
mask="99/99/9999"
|
|
33
|
+
value={inputValue}
|
|
34
|
+
onChange={(e) => changeInputValue(e.target.value)}
|
|
35
|
+
className="calendar-dropdown"
|
|
36
|
+
onFocus={() => setIsOpened(!isOpened)}
|
|
37
|
+
/>
|
|
38
|
+
{isOpened ? <Calendar date={date} setDate={(newDate) => changeCalendarDay(newDate)} params={params} /> : null}
|
|
39
|
+
</div>
|
|
40
|
+
);
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
export default InputCalendar;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import React, { useRef, useState } from 'react';
|
|
2
|
+
import { ref } from 'yup';
|
|
3
|
+
import InputCalendar from './InputCalendar';
|
|
4
|
+
|
|
5
|
+
global.lng = 'en';
|
|
6
|
+
|
|
7
|
+
export default {
|
|
8
|
+
title: 'Form Elements/InputCalendar',
|
|
9
|
+
component: InputCalendar,
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
const Template = (args) => {
|
|
13
|
+
const params = {
|
|
14
|
+
minDate: args?.minDate,
|
|
15
|
+
maxDate: args?.maxDate,
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
return <InputCalendar data={args.date} params={params} />;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export const Calendar = Template.bind({});
|
|
22
|
+
|
|
23
|
+
Calendar.args = {
|
|
24
|
+
date: '10/14/2021',
|
|
25
|
+
minDate: '10/11/2021',
|
|
26
|
+
maxDate: '10/25/2021',
|
|
27
|
+
};
|