intelicoreact 0.1.14 → 0.1.17

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.
@@ -43,7 +43,6 @@ var Template = function Template(args) {
43
43
  if (value === null) setTimeout(function () {
44
44
  return setValue(args.value);
45
45
  }, 1500);
46
- console.log(value);
47
46
  }, [value]);
48
47
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_AdvancedStatus.default, (0, _extends2.default)({}, args, {
49
48
  value: value,
@@ -13,7 +13,7 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
13
13
 
14
14
  var _react = _interopRequireWildcard(require("react"));
15
15
 
16
- var _moment = _interopRequireDefault(require("moment"));
16
+ var _momentTimezone = _interopRequireDefault(require("moment-timezone"));
17
17
 
18
18
  var _reactInputMask = _interopRequireDefault(require("react-input-mask"));
19
19
 
@@ -52,10 +52,10 @@ var InputCalendar = function InputCalendar(_ref) {
52
52
  setIsOpened = _useState2[1];
53
53
 
54
54
  var calendarRef = (0, _react.useRef)(null);
55
- var formatedMinDate = (0, _moment.default)(minDate).format(format) !== 'Invalid date' ? (0, _moment.default)(minDate).format(format) : null;
56
- var formatedMaxDate = (0, _moment.default)(maxDate).format(format) !== 'Invalid date' ? (0, _moment.default)(maxDate).format(format) : null;
57
- var momentMinDate = (0, _moment.default)(formatedMinDate, format).startOf('day');
58
- var momentMaxDate = (0, _moment.default)(formatedMaxDate, format).startOf('day');
55
+ var formatedMinDate = (0, _momentTimezone.default)(minDate, format).format(format) !== 'Invalid date' ? (0, _momentTimezone.default)(minDate, format).format(format) : null;
56
+ var formatedMaxDate = (0, _momentTimezone.default)(maxDate, format).format(format) !== 'Invalid date' ? (0, _momentTimezone.default)(maxDate, format).format(format) : null;
57
+ var momentMinDate = (0, _momentTimezone.default)(formatedMinDate, format).startOf('day');
58
+ var momentMaxDate = (0, _momentTimezone.default)(formatedMaxDate, format).startOf('day');
59
59
  (0, _useClickOutside.useClickOutside)(calendarRef, function () {
60
60
  return setIsOpened(false);
61
61
  });
@@ -69,14 +69,14 @@ var InputCalendar = function InputCalendar(_ref) {
69
69
  };
70
70
 
71
71
  var getCalendarValue = function getCalendarValue(value) {
72
- var date = (0, _moment.default)(value).format('L');
72
+ var date = (0, _momentTimezone.default)(value).format('L');
73
73
  if (date !== 'Invalid date') return date;
74
- return (0, _moment.default)(new Date()).format('L');
74
+ return (0, _momentTimezone.default)(new Date()).format('L');
75
75
  };
76
76
 
77
77
  var handleBlur = function handleBlur(e) {
78
78
  var value = e.target.value;
79
- if ((0, _moment.default)(value).format(format) === 'Invalid date') onChange('');else if ((0, _moment.default)(value).startOf('day').isBefore(momentMinDate, 'days')) onChange(formatedMinDate);else if ((0, _moment.default)(value).endOf('day').isAfter(momentMaxDate, 'days')) onChange(formatedMaxDate);else onChange((0, _moment.default)(value).format(format));
79
+ if ((0, _momentTimezone.default)(value, format).format(format) === 'Invalid date') onChange('');else if ((0, _momentTimezone.default)(value, format).startOf('day').isBefore(momentMinDate, 'days')) onChange(formatedMinDate);else if ((0, _momentTimezone.default)(value, format).endOf('day').isAfter(momentMaxDate, 'days')) onChange(formatedMaxDate);else onChange((0, _momentTimezone.default)(value, format).format(format));
80
80
  };
81
81
 
82
82
  return /*#__PURE__*/_react.default.createElement("div", {
@@ -72,7 +72,7 @@ var Template = function Template(args) {
72
72
  var CalendarTemplate = Template.bind({});
73
73
  exports.CalendarTemplate = CalendarTemplate;
74
74
  CalendarTemplate.args = {
75
- minDate: '01/10/2022',
75
+ minDate: '01/10/1990',
76
76
  maxDate: '04/20/2022' // isDontLimitFuture: true,
77
77
  // isListTop: true,
78
78
 
@@ -2,9 +2,9 @@
2
2
  --input-height: 28px;
3
3
  --label-line-height: 16px;
4
4
  // --border-color: rgba(0, 0, 0, 0.3);
5
- --border-color: #E2E5EC;
5
+ --border-color: #e2e5ec;
6
6
  --calendar-range-point-color: #6b81dd;
7
- --font-family: 'Roboto';
7
+ --font-family: "Roboto";
8
8
  --font-size: 13px;
9
9
  --line-height: 20px;
10
10
  --border-radius: 3px;
@@ -22,7 +22,7 @@
22
22
 
23
23
  input::-webkit-outer-spin-button,
24
24
  input::-webkit-inner-spin-button {
25
- -webkit-appearance: none;
25
+ -webkit-appearance: none;
26
26
  }
27
27
 
28
28
  &__label {
@@ -42,27 +42,21 @@
42
42
  &__absolut-wraper {
43
43
  width: 100%;
44
44
  height: fit-content;
45
-
46
- position: absolute;
47
- top: 0;
48
- left: 0;
45
+ position: relative;
49
46
  display: flex;
50
47
  flex-flow: column nowrap;
51
48
  justify-content: flex-start;
52
49
  align-items: flex-start;
53
-
54
50
  background: transparent;
55
51
  z-index: 1;
56
52
 
57
-
58
53
  &_right-position {
59
54
  left: auto;
60
55
  right: 0;
61
56
  }
62
-
63
57
  }
64
58
 
65
- &__static-part{
59
+ &__static-part {
66
60
  box-sizing: border-box;
67
61
  width: 100%;
68
62
  height: var(--input-height);
@@ -73,7 +67,7 @@
73
67
  justify-content: flex-end;
74
68
  align-items: flex-start;
75
69
 
76
- background: #FFFFFF;
70
+ background: #ffffff;
77
71
  border: 1px solid var(--border-color);
78
72
  }
79
73
 
@@ -107,7 +101,7 @@
107
101
  pointer-events: none;
108
102
  }
109
103
 
110
- &__range{
104
+ &__range {
111
105
  display: inline-block;
112
106
  pointer-events: none;
113
107
  word-wrap: break-word;
@@ -130,7 +124,7 @@
130
124
  }
131
125
  }
132
126
 
133
- &__arrows-block{
127
+ &__arrows-block {
134
128
  box-sizing: border-box;
135
129
  width: fit-content;
136
130
  height: 100%;
@@ -164,7 +158,7 @@
164
158
 
165
159
  &_error {
166
160
  .date-range-input__wraper {
167
- border-color: #FA564C;
161
+ border-color: #fa564c;
168
162
  }
169
163
  }
170
164
 
@@ -185,18 +179,21 @@
185
179
  bottom: -20px;
186
180
  font-size: var(--font-size);
187
181
  line-height: var(--line-height);
188
- color: #FA564C;
182
+ color: #fa564c;
189
183
  }
190
184
 
191
185
  &__opened-part {
192
186
  width: fit-content;
193
187
  height: fit-content;
194
- padding-top: 6px;
195
188
  background-color: transparent;
196
189
  }
197
190
  }
198
191
 
199
192
  .opened-part {
193
+ position: absolute;
194
+ top: 31px;
195
+ left: 0;
196
+
200
197
  &__wrapper {
201
198
  display: flex;
202
199
  flex-flow: row nowrap;
@@ -204,7 +201,7 @@
204
201
  align-items: stretch;
205
202
  border: 1px solid var(--border-color);
206
203
  border-radius: var(--border-radius);
207
- background: #FFFFFF;
204
+ background: #ffffff;
208
205
  box-shadow: 0 4px 25px rgba(0, 0, 0, 0.25);
209
206
  &_right-position-once-element {
210
207
  justify-content: flex-end;
@@ -240,7 +237,7 @@
240
237
 
241
238
  &:hover {
242
239
  // background-color: rgba(128, 128, 128, 0.1);
243
- background-color: #F2F2F8;
240
+ background-color: #f2f2f8;
244
241
  }
245
242
  &_active {
246
243
  background: #f2f2f8;
@@ -262,6 +259,23 @@
262
259
  width: fit-content;
263
260
  border: none;
264
261
  }
262
+
263
+ &--left {
264
+ left: auto;
265
+ right: 0
266
+ }
267
+
268
+ &--top {
269
+ top: auto;
270
+ bottom: 31px;
271
+ }
272
+
273
+ &--top-left {
274
+ left: auto;
275
+ top: auto;
276
+ bottom: 31px;
277
+ right: 0;
278
+ }
265
279
  }
266
280
 
267
281
  .date-picker {
@@ -276,7 +290,7 @@
276
290
  height: fit-content;
277
291
  padding: 7.5px 15px;
278
292
  border: none;
279
- background-color: #F7FAFC;
293
+ background-color: #f7fafc;
280
294
 
281
295
  display: flex;
282
296
  flex-flow: column nowrap;
@@ -294,7 +308,7 @@
294
308
  font-size: var(--font-size);
295
309
  line-height: var(--line-height);
296
310
 
297
- &>div:not(.date-picker__inputs-separator) {
311
+ & > div:not(.date-picker__inputs-separator) {
298
312
  width: 110px;
299
313
  min-height: 100%;
300
314
  margin-right: 9px;
@@ -318,7 +332,7 @@
318
332
  }
319
333
  }
320
334
 
321
- &>div.dropdown {
335
+ & > div.dropdown {
322
336
  width: 80px;
323
337
  border-radius: var(--border-radius);
324
338
  }
@@ -352,7 +366,7 @@
352
366
  height: fit-content;
353
367
  border-radius: var(--border-radius);
354
368
 
355
- &>.dropdown__trigger {
369
+ & > .dropdown__trigger {
356
370
  width: 100%;
357
371
  height: 28px;
358
372
  padding-left: 10px;
@@ -371,7 +385,7 @@
371
385
  border: none;
372
386
  }
373
387
 
374
- & .dropdown__list-item{
388
+ & .dropdown__list-item {
375
389
  font-family: inherit;
376
390
  font-style: inherit;
377
391
  font-weight: inherit;
@@ -393,7 +407,7 @@
393
407
  padding: 10px 16px;
394
408
  border-top: 1px solid var(--border-color);
395
409
  border-bottom: 1px solid var(--border-color);
396
- background-color: #FFFFFF;
410
+ background-color: #ffffff;
397
411
 
398
412
  display: flex;
399
413
  flex-flow: row nowrap;
@@ -410,7 +424,7 @@
410
424
  }
411
425
 
412
426
  .date-picker__calendar {
413
- &:first-child{
427
+ &:first-child {
414
428
  margin-right: 10px;
415
429
  }
416
430
  }
@@ -438,7 +452,8 @@
438
452
  text-align: center;
439
453
  }
440
454
 
441
- &__next, &__prev {
455
+ &__next,
456
+ &__prev {
442
457
  background-color: transparent;
443
458
  cursor: pointer;
444
459
  }
@@ -474,7 +489,7 @@
474
489
  cursor: pointer;
475
490
 
476
491
  &:hover {
477
- background: #E2E6F8;
492
+ background: #e2e6f8;
478
493
  }
479
494
  }
480
495
 
@@ -513,30 +528,31 @@
513
528
  // }
514
529
  // }
515
530
 
516
- &--range-start, &--range-end {
531
+ &--range-start,
532
+ &--range-end {
517
533
  background: var(--calendar-range-point-color);
518
534
  border: 1px solid var(--calendar-range-point-color);
519
535
  box-sizing: border-box;
520
536
  border-radius: var(--border-radius);
521
- color: #F8FBFF;
537
+ color: #f8fbff;
522
538
 
523
539
  &:hover {
524
540
  background: var(--calendar-range-point-color);
525
- color: #F8FBFF;
541
+ color: #f8fbff;
526
542
  }
527
543
  }
528
544
 
529
545
  &--range-inside {
530
- background: #EAF2FF;
546
+ background: #eaf2ff;
531
547
  }
532
548
 
533
549
  &--prev-range-end {
534
- background: #E2E5EC;
550
+ background: #e2e5ec;
535
551
  border-radius: var(--border-radius);
536
552
  }
537
553
 
538
554
  &--prev-range-inside {
539
- background: #F7F8FA;
555
+ background: #f7f8fa;
540
556
  }
541
557
 
542
558
  &--title {
@@ -557,14 +573,14 @@
557
573
  padding: 8px 16px;
558
574
  border-radius: 0 0 var(--border-radius) 0;
559
575
  border: none;
560
- background-color: #F7FAFC;
576
+ background-color: #f7fafc;
561
577
 
562
578
  display: flex;
563
579
  flex-flow: row nowrap;
564
580
  justify-content: space-between;
565
581
  align-items: center;
566
582
 
567
- &_once-element{
583
+ &_once-element {
568
584
  justify-content: flex-end;
569
585
  }
570
586
  }
@@ -581,8 +597,8 @@
581
597
  &:first-child {
582
598
  width: 80px;
583
599
  margin-right: 16px;
584
- background-color: #FFFFFF;
585
- border: 1px solid #A6ACB1;
600
+ background-color: #ffffff;
601
+ border: 1px solid #a6acb1;
586
602
  border-radius: var(--border-radius);
587
603
  }
588
604
 
@@ -611,14 +627,14 @@
611
627
  }
612
628
 
613
629
  .date-picker__header {
614
- flex-flow: row wrap
630
+ flex-flow: row wrap;
615
631
  }
616
632
  .date-picker__calendars-wrapper {
617
633
  display: block;
618
634
  margin: auto;
619
635
  }
620
636
  .date-picker__calendars .range-calendar {
621
- margin: 0!important;
637
+ margin: 0 !important;
622
638
  width: 100%;
623
639
  }
624
640
  }
@@ -9,12 +9,12 @@ Object.defineProperty(exports, "__esModule", {
9
9
  });
10
10
  exports.default = void 0;
11
11
 
12
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
+
12
14
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
15
 
14
16
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
15
17
 
16
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
17
-
18
18
  var _react = _interopRequireWildcard(require("react"));
19
19
 
20
20
  var _momentTimezone = _interopRequireDefault(require("moment-timezone"));
@@ -27,6 +27,8 @@ var _SelectItem = _interopRequireDefault(require("./SelectItem"));
27
27
 
28
28
  var _Datepicker = _interopRequireDefault(require("./Datepicker"));
29
29
 
30
+ var _utils = require("../../../../Functions/utils");
31
+
30
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); }
31
33
 
32
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,6 +37,8 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
35
37
 
36
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; }
37
39
 
40
+ var classNames = require('classnames');
41
+
38
42
  var OpenedPart = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
39
43
  var txt = props.txt,
40
44
  buttonsTypes = props.buttonsTypes,
@@ -64,12 +68,23 @@ var OpenedPart = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
64
68
  momentMaxDate = props.momentMaxDate,
65
69
  isDontLimitFuture = props.isDontLimitFuture;
66
70
 
67
- var items = isCompact ? (0, _toConsumableArray2.default)(Object.keys(_dependencies.INTERVALS)) : [].concat((0, _toConsumableArray2.default)(Object.keys(_dependencies.INTERVALS)), [_dependencies.CUSTOM_INTERVAL_KEY]);
71
+ var boxRef = (0, _react.useRef)();
68
72
 
69
- var _useState = (0, _react.useState)(actualValues.intervalKey),
73
+ var _useState = (0, _react.useState)(''),
70
74
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
71
- activeInterval = _useState2[0],
72
- setActiveInterval = _useState2[1];
75
+ elemPosition = _useState2[0],
76
+ setElemPosition = _useState2[1];
77
+
78
+ var openedPartClass = classNames('date-range-input__opened-part', 'opened-part', (0, _defineProperty2.default)({}, "opened-part--".concat(elemPosition), elemPosition));
79
+ var openedPartWrapperClass = classNames('opened-part__wrapper', {
80
+ 'opened-part__wrapper_right-position-once-element': isOptionsRight && (isCompact || isIntervalsHidden)
81
+ });
82
+ var items = isCompact ? (0, _toConsumableArray2.default)(Object.keys(_dependencies.INTERVALS)) : [].concat((0, _toConsumableArray2.default)(Object.keys(_dependencies.INTERVALS)), [_dependencies.CUSTOM_INTERVAL_KEY]);
83
+
84
+ var _useState3 = (0, _react.useState)(actualValues.intervalKey),
85
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
86
+ activeInterval = _useState4[0],
87
+ setActiveInterval = _useState4[1];
73
88
 
74
89
  var handleItemClick = function handleItemClick(item) {
75
90
  if (item !== _dependencies.CUSTOM_INTERVAL_KEY) {
@@ -107,13 +122,14 @@ var OpenedPart = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
107
122
  return _dependencies.CUSTOM_INTERVAL_KEY;
108
123
  };
109
124
 
125
+ (0, _react.useLayoutEffect)(function () {
126
+ setElemPosition((0, _utils.defineBoxPositionByScreen)(boxRef));
127
+ }, []);
110
128
  return /*#__PURE__*/_react.default.createElement("div", {
111
- className: (0, _classnames.default)('date-range-input__opened-part', 'opened-part') // style={styles}
112
-
129
+ className: openedPartClass,
130
+ ref: boxRef
113
131
  }, /*#__PURE__*/_react.default.createElement("div", {
114
- className: (0, _classnames.default)('opened-part__wrapper', {
115
- 'opened-part__wrapper_right-position-once-element': isOptionsRight && (isCompact || isIntervalsHidden)
116
- })
132
+ className: openedPartWrapperClass
117
133
  }, !isIntervalsHidden && /*#__PURE__*/_react.default.createElement("div", {
118
134
  className: (0, _classnames.default)('opened-part__intervals-list' // 'form-select-options',
119
135
  // { 'form-select-options--short': short },
@@ -0,0 +1,429 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = useFormTools;
9
+
10
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
+
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
+
14
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
15
+
16
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
17
+
18
+ var _react = require("react");
19
+
20
+ 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; }
21
+
22
+ 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; }
23
+
24
+ function useFormTools(_ref) {
25
+ var form = _ref.form,
26
+ setForm = _ref.setForm,
27
+ FormType = _ref.FormType,
28
+ FormFields = _ref.FormFields;
29
+
30
+ ///////////////////////////////////////////////////////////////
31
+ //--- OnChange Observer ---//--- START ---//
32
+ var _useState = (0, _react.useState)({}),
33
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
34
+ onChangeObservers = _useState2[0],
35
+ setOnChangeObservers = _useState2[1];
36
+
37
+ var addOnChangeObserver = function addOnChangeObserver(key, cb) {
38
+ var observerId = null;
39
+ setOnChangeObservers(function (state) {
40
+ //Set Default Value
41
+ if (!state[key]) state[key] = {};
42
+ observerId = state[key].length;
43
+ state[key][observerId] = cb;
44
+ return state;
45
+ });
46
+ return observerId;
47
+ };
48
+
49
+ var removeOnChangeObserver = function removeOnChangeObserver(key, id) {
50
+ setOnChangeObservers(function (state) {
51
+ //Set Default Value
52
+ if (!state[key]) return state;
53
+ state[key] = Object.keys(state).filter(function (cbId) {
54
+ return cbId !== id;
55
+ }).map(function (cbId) {
56
+ return state[key][cbId];
57
+ });
58
+ return state;
59
+ });
60
+ };
61
+
62
+ var onChangeObserver = function onChangeObserver(key, value) {
63
+ if (!onChangeObservers[key] || (0, _typeof2.default)(onChangeObservers[key]) !== 'object') return;
64
+ var Observers = onChangeObservers[key];
65
+ Object.values(Observers).map(function (cb) {
66
+ cb({
67
+ value: value,
68
+ form: form
69
+ });
70
+ return null;
71
+ });
72
+ };
73
+
74
+ var onFieldChange = function onFieldChange(key, value) {
75
+ var _form$fields$key;
76
+
77
+ if (value === (form === null || form === void 0 ? void 0 : (_form$fields$key = form.fields[key]) === null || _form$fields$key === void 0 ? void 0 : _form$fields$key.value)) return false;
78
+ onChangeObserver(key, value);
79
+ setForm(function (form) {
80
+ return _objectSpread(_objectSpread({}, form), {}, {
81
+ fields: _objectSpread(_objectSpread({}, form.fields), {}, (0, _defineProperty2.default)({}, key, _objectSpread(_objectSpread({}, form.fields[key]), {}, {
82
+ error: '',
83
+ value: value
84
+ })))
85
+ });
86
+ });
87
+ }; //--- OnChange Observer ---//--- END ---//
88
+ ///////////////////////////////////////////////////////////////
89
+ ///////////////////////////////////////////////////////////////
90
+ //--- Form Submit Blocker ---//--- START ---//
91
+
92
+
93
+ var _useState3 = (0, _react.useState)([]),
94
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
95
+ formSubmitBlockers = _useState4[0],
96
+ setFormSubmitBlockers = _useState4[1];
97
+
98
+ var toggleFormSubmitBlock = function toggleFormSubmitBlock(key, value) {
99
+ setFormSubmitBlockers(function (state) {
100
+ return state.includes(key) || !value ? (0, _toConsumableArray2.default)(state.filter(function (k) {
101
+ return k !== key;
102
+ })) : [].concat((0, _toConsumableArray2.default)(state), [key]);
103
+ });
104
+ };
105
+
106
+ var clearFormSubmitBlockers = function clearFormSubmitBlockers() {
107
+ return setFormSubmitBlockers([]);
108
+ }; //--- Form Submit Blocker ---//--- END ---//
109
+ ///////////////////////////////////////////////////////////////
110
+ ///////////////////////////////////////////////////////////////
111
+ //--- Property Observer Blocker ---//--- START ---//
112
+ // const [propertyObservers, setPropertyObservers] = useState({});
113
+ // function addPropertyObserver () {
114
+ // };
115
+ //--- Property Observer Blocker ---//--- END ---//
116
+ ///////////////////////////////////////////////////////////////
117
+ ///////////////////////////////////////////////////////////////
118
+ //--- Render Fields Controller ---//--- START ---//
119
+
120
+
121
+ var _useState5 = (0, _react.useState)([]),
122
+ _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
123
+ renderFormFields = _useState6[0],
124
+ setRenderFormFields = _useState6[1];
125
+
126
+ var addRenderFields = function addRenderFields(fields) {
127
+ setForm(function (state) {
128
+ return _objectSpread(_objectSpread({}, state), {}, {
129
+ fields: _objectSpread(_objectSpread({}, state.fields), fields.reduce(function (result, fieldKey) {
130
+ result[fieldKey] = FormFields[fieldKey];
131
+ return result;
132
+ }, {}))
133
+ });
134
+ });
135
+ setRenderFormFields(function (state) {
136
+ return [].concat((0, _toConsumableArray2.default)(state), (0, _toConsumableArray2.default)(fields));
137
+ });
138
+ };
139
+
140
+ var removeRenderFields = function removeRenderFields(fields) {
141
+ setRenderFormFields(function (state) {
142
+ return state.filter(function (field) {
143
+ return !fields.includes(field);
144
+ });
145
+ });
146
+ }; //On Render Fields Change
147
+
148
+
149
+ (0, _react.useEffect)(function () {
150
+ //Add Form Fields
151
+ setForm(function (state) {
152
+ var fields = _objectSpread({}, state.fields);
153
+
154
+ renderFormFields.forEach(function (key) {
155
+ var _FormFields$key2;
156
+
157
+ if (!fields[key]) {
158
+ var _fields$key$className;
159
+
160
+ fields[key] = FormFields[key]; // eslint-disable-next-line no-use-before-define
161
+
162
+ if (!fields[key].className || ((_fields$key$className = fields[key].className) === null || _fields$key$className === void 0 ? void 0 : _fields$key$className.indexOf(getFieldClassName(key, FormType))) === -1) {
163
+ var _FormFields$key;
164
+
165
+ fields[key].className = "".concat((_FormFields$key = FormFields[key]) === null || _FormFields$key === void 0 ? void 0 : _FormFields$key.className, " ").concat(getFieldClassName(key, FormType));
166
+ }
167
+ }
168
+
169
+ if ((0, _typeof2.default)((_FormFields$key2 = FormFields[key]) === null || _FormFields$key2 === void 0 ? void 0 : _FormFields$key2.label) === 'object') {
170
+ fields[key].label = FormFields[key].label[FormType] || FormFields[key].label.default;
171
+ } // (node, key) => { refs.current[key] = node); }
172
+
173
+
174
+ fields[key].ref = /*#__PURE__*/(0, _react.createRef)();
175
+ });
176
+ return _objectSpread(_objectSpread({}, state), {}, {
177
+ fields: fields
178
+ });
179
+ });
180
+ }, [renderFormFields]); //--- Render Fields Controller ---//--- END ---//
181
+ ///////////////////////////////////////////////////////////////
182
+ ///////////////////////////////////////////////////////////////
183
+ //--- HIGHTLIGHT LABELS IF FIELD WITH ERROR ---//--- START ---//
184
+
185
+ var hightliteErrorLabels = function hightliteErrorLabels() {
186
+ var filtered = Object.keys(form.fields).reduce(function (result, field) {
187
+ var _form$fields$field;
188
+
189
+ if ((_form$fields$field = form.fields[field]) !== null && _form$fields$field !== void 0 && _form$fields$field.errorLabelHightlite) {
190
+ // eslint-disable-next-line no-use-before-define
191
+ result.push(_objectSpread(_objectSpread({}, form.fields[field]), {}, {
192
+ className: getFieldClassName(field, FormType)
193
+ }));
194
+ }
195
+
196
+ return result;
197
+ }, []);
198
+ filtered.map(function (field) {
199
+ var formField = document.querySelector(".".concat(field === null || field === void 0 ? void 0 : field.className));
200
+ if (!formField) return null;
201
+ formField.classList.remove('errorLabelHightlite');
202
+
203
+ if (field !== null && field !== void 0 && field.error) {
204
+ formField.classList.add('errorLabelHightlite');
205
+ }
206
+
207
+ return null;
208
+ });
209
+ };
210
+
211
+ (0, _react.useEffect)(function () {
212
+ hightliteErrorLabels();
213
+ }, [form]); //--- HIGHTLIGHT LABELS IF FIELD WITH ERROR ---//--- END ---//
214
+ ///////////////////////////////////////////////////////////////
215
+ ///////////////////////////////////////////////////////////////
216
+ //--- Fields Focus Controller ---//--- START ---//
217
+
218
+ var _useState7 = (0, _react.useState)(false),
219
+ _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
220
+ isInitFocused = _useState8[0],
221
+ setIsInitFocused = _useState8[1];
222
+
223
+ var initFocused = function initFocused() {
224
+ return setIsInitFocused(true);
225
+ };
226
+
227
+ var resetIsInitFocused = function resetIsInitFocused() {
228
+ return setIsInitFocused(false);
229
+ };
230
+
231
+ var setFieldFocus = function setFieldFocus(_ref2) {
232
+ var key = _ref2.key,
233
+ _ref2$cb = _ref2.cb,
234
+ cb = _ref2$cb === void 0 ? function () {} : _ref2$cb,
235
+ argForm = _ref2.form;
236
+ if (!key) return null;
237
+ if (!argForm) argForm = form;
238
+ var formField = argForm.fields[key];
239
+
240
+ if (!formField || !formField.ref) {
241
+ return false;
242
+ }
243
+
244
+ setTimeout(function () {
245
+ formField.ref.current.querySelector((formField === null || formField === void 0 ? void 0 : formField.focusSelector) || 'input').focus();
246
+ cb();
247
+ }, 1);
248
+ };
249
+
250
+ var setFirstFieldFocus = function setFirstFieldFocus() {
251
+ var _renderFormFields = (0, _slicedToArray2.default)(renderFormFields, 1),
252
+ firstField = _renderFormFields[0];
253
+
254
+ setFieldFocus({
255
+ key: firstField,
256
+ cb: initFocused,
257
+ form: form
258
+ });
259
+ };
260
+
261
+ var _useState9 = (0, _react.useState)([]),
262
+ _useState10 = (0, _slicedToArray2.default)(_useState9, 2),
263
+ focusOnRenderFields = _useState10[0],
264
+ setFocusOnRenderFields = _useState10[1];
265
+
266
+ var addFocusFieldOnRender = function addFocusFieldOnRender(key) {
267
+ setFocusOnRenderFields(function (state) {
268
+ return [].concat((0, _toConsumableArray2.default)(state), [key]);
269
+ });
270
+ };
271
+
272
+ var removeFocusFieldOnRender = function removeFocusFieldOnRender(key) {
273
+ setFocusOnRenderFields(function (state) {
274
+ return state.filter(function (field) {
275
+ return field !== key;
276
+ });
277
+ });
278
+ };
279
+
280
+ (0, _react.useEffect)(function () {
281
+ Object.keys(form === null || form === void 0 ? void 0 : form.fields).map(function (field) {
282
+ if (focusOnRenderFields.includes(field)) {
283
+ setFieldFocus({
284
+ key: field,
285
+ form: form,
286
+ cb: function cb() {
287
+ return removeFocusFieldOnRender(field);
288
+ }
289
+ });
290
+ }
291
+
292
+ return null;
293
+ });
294
+ }, [form.fields]); //--- Fields Focus Controller ---//--- END ---//
295
+ ///////////////////////////////////////////////////////////////
296
+ ///////////////////////////////////////////////////////////////
297
+ //--- OnFieldRendered Observer ---//--- START ---//
298
+
299
+ var _useState11 = (0, _react.useState)({}),
300
+ _useState12 = (0, _slicedToArray2.default)(_useState11, 2),
301
+ onFieldRenderedObservers = _useState12[0],
302
+ setOnFieldRenderedObservers = _useState12[1];
303
+
304
+ var _useState13 = (0, _react.useState)([]),
305
+ _useState14 = (0, _slicedToArray2.default)(_useState13, 2),
306
+ workedOutFieldRenderedObservers = _useState14[0],
307
+ setWorkedOutFieldRenderedObservers = _useState14[1];
308
+
309
+ var addWorkedOutField = function addWorkedOutField(key) {
310
+ return setWorkedOutFieldRenderedObservers(function (state) {
311
+ return [].concat((0, _toConsumableArray2.default)(state), [key]);
312
+ });
313
+ };
314
+
315
+ var addOnFieldRenderedObserver = function addOnFieldRenderedObserver(key, cb) {
316
+ var isOnceCallable = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
317
+ var observerId = null;
318
+ setOnFieldRenderedObservers(function (state) {
319
+ //Set Default Value
320
+ if (!state[key]) state[key] = {};
321
+ observerId = Object.keys(state[key]).length || 0;
322
+ state[key][observerId] = {
323
+ f: cb,
324
+ isOnceCallable: isOnceCallable
325
+ };
326
+ return state;
327
+ });
328
+ return observerId;
329
+ };
330
+
331
+ var removeOnFieldRenderedObserver = function removeOnFieldRenderedObserver(key, id) {
332
+ setOnFieldRenderedObservers(function (state) {
333
+ //Set Default Value
334
+ if (!state[key]) return state;
335
+ state[key] = Object.keys(state).filter(function (cbId) {
336
+ return cbId !== id;
337
+ }).map(function (cbId) {
338
+ return state[key][cbId];
339
+ });
340
+ return state;
341
+ });
342
+ };
343
+
344
+ var onFieldRenderedObserver = function onFieldRenderedObserver(key) {
345
+ if (!onFieldRenderedObservers[key] || (0, _typeof2.default)(onFieldRenderedObservers[key]) !== 'object') return;
346
+ var Observers = onFieldRenderedObservers[key];
347
+ Object.values(Observers).map(function (_ref3) {
348
+ var f = _ref3.f,
349
+ isOnceCallable = _ref3.isOnceCallable;
350
+ f();
351
+ if (isOnceCallable) addWorkedOutField(key);
352
+ return null;
353
+ });
354
+ };
355
+
356
+ (0, _react.useEffect)(function () {
357
+ Object.keys(form.fields).map(function (key) {
358
+ //OnFieldRendered
359
+ if (!workedOutFieldRenderedObservers.includes(key)) onFieldRenderedObserver(key);
360
+ return null;
361
+ });
362
+ }, [form.fields]); //--- OnFieldRendered Observer ---//--- END ---//
363
+ ///////////////////////////////////////////////////////////////
364
+ ///////////////////////////////////////////////////////////////
365
+
366
+ var getFieldClassName = function getFieldClassName(key, type) {
367
+ return "form-".concat(type, "_field-").concat(key);
368
+ }; //Detect What Changed || TRY TO DO
369
+ // const compare = async (prev, current) => {
370
+ // if (!prev) return current;
371
+ // return new Promise((resolve) => {
372
+ // Object.keys(current).reduce((result, key, i, arr) => {
373
+ // //If PROPERTY is NOT EXISTS BEFORE
374
+ // if ([null, undefined].includes(prev[key])) {
375
+ // result[key] = current[key];
376
+ // }
377
+ // //If PROPERTY is AN OBJECT
378
+ // else if (typeof current[key] === 'object') {
379
+ // //If PROPERTY is EXISTS BEFORE
380
+ // const innerCompare = compare(prev[key], current[key]);
381
+ // // //If SOMETHING CHANGED
382
+ // if (innerCompare?.length) result[key] = innerCompare;
383
+ // }
384
+ // //If PROPERTY is AN SIMPLE VALUE and PROPERTY CHANGED
385
+ // else if (prev[key] !== current[key]) {
386
+ // result[key] = current[key];
387
+ // }
388
+ // if (i === arr.length-1) {
389
+ // resolve(result);
390
+ // }
391
+ // return result;
392
+ // }, {});
393
+ // });
394
+ // };
395
+
396
+
397
+ return {
398
+ //OnChangeObserver
399
+ addOnChangeObserver: addOnChangeObserver,
400
+ removeOnChangeObserver: removeOnChangeObserver,
401
+ onChangeObservers: onChangeObservers,
402
+ //OnChangeHandler
403
+ onFieldChange: onFieldChange,
404
+ //Form Submit Blocker
405
+ toggleFormSubmitBlock: toggleFormSubmitBlock,
406
+ clearFormSubmitBlockers: clearFormSubmitBlockers,
407
+ isFormSubmitBlocked: Boolean(formSubmitBlockers.length),
408
+ //Property Observers
409
+ // addPropertyObserver,
410
+ //Render Fields
411
+ renderFormFields: renderFormFields,
412
+ setRenderFormFields: setRenderFormFields,
413
+ addRenderFields: addRenderFields,
414
+ removeRenderFields: removeRenderFields,
415
+ getFieldClassName: getFieldClassName,
416
+ //Field Focus Controller
417
+ isInitFocused: isInitFocused,
418
+ initFocused: initFocused,
419
+ resetIsInitFocused: resetIsInitFocused,
420
+ setFieldFocus: setFieldFocus,
421
+ setFirstFieldFocus: setFirstFieldFocus,
422
+ addFocusFieldOnRender: addFocusFieldOnRender,
423
+ removeFocusFieldOnRender: removeFocusFieldOnRender,
424
+ //Field Render Controller
425
+ addOnFieldRenderedObserver: addOnFieldRenderedObserver,
426
+ removeOnFieldRenderedObserver: removeOnFieldRenderedObserver,
427
+ onFieldRenderedObservers: onFieldRenderedObservers
428
+ };
429
+ }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = useLocationParams;
9
+
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
12
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
+
14
+ var _react = require("react");
15
+
16
+ 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; }
17
+
18
+ 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; }
19
+
20
+ function useLocationParams() {
21
+ var _useState = (0, _react.useState)({}),
22
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
23
+ params = _useState2[0],
24
+ setParams = _useState2[1];
25
+
26
+ (0, _react.useEffect)(function () {
27
+ setParams(function (state) {
28
+ var arr = window.location.search.replace('?', '').split('&');
29
+ return _objectSpread(_objectSpread({}, state), arr.reduce(function (obj, item) {
30
+ var keyVal = item.split('=');
31
+ var key = keyVal[0];
32
+ var value = keyVal[1];
33
+ return _objectSpread(_objectSpread({}, obj), {}, (0, _defineProperty2.default)({}, key, value));
34
+ }, {}));
35
+ });
36
+ }, [window.location.search]);
37
+ return params;
38
+ }
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.getStyles = exports.logout = exports.useOutsideToggle = exports.handleObjectChange = void 0;
6
+ exports.defineBoxPositionByScreen = exports.getStyles = exports.logout = exports.useOutsideToggle = exports.handleObjectChange = void 0;
7
7
 
8
8
  var _react = require("react");
9
9
 
@@ -63,4 +63,21 @@ var getStyles = function getStyles(el, prop) {
63
63
  return window.getComputedStyle(el).getPropertyValue(prop);
64
64
  };
65
65
 
66
- exports.getStyles = getStyles;
66
+ exports.getStyles = getStyles;
67
+
68
+ var defineBoxPositionByScreen = function defineBoxPositionByScreen(ref) {
69
+ var elemRightPosition = ref.current.getBoundingClientRect().right;
70
+ var elemBottomPosition = ref.current.getBoundingClientRect().bottom;
71
+ var screenWidth = document.documentElement.clientWidth;
72
+ var screenHeight = document.documentElement.clientHeight;
73
+
74
+ if (elemRightPosition > screenWidth && elemBottomPosition < screenHeight) {
75
+ return 'left';
76
+ } else if (elemBottomPosition > screenHeight && elemRightPosition < screenWidth) {
77
+ return 'top';
78
+ } else if (elemRightPosition > screenWidth && elemBottomPosition > screenHeight) {
79
+ return 'top-left';
80
+ }
81
+ };
82
+
83
+ exports.defineBoxPositionByScreen = defineBoxPositionByScreen;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "intelicoreact",
3
- "version": "0.1.14",
4
- "description": "add postfix in dropdown",
3
+ "version": "0.1.17",
4
+ "description": "add useFormTools hook",
5
5
  "main": "dist/index.js",
6
6
  "files": ["dist/*", "node_modules/anme/*", "node_modules/moment/*", "node_modules/moment-timezone/*"],
7
7
  "scripts": {