intelicoreact 1.4.38 → 1.4.40

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.
@@ -737,7 +737,9 @@ const TagsDropdown = _ref => {
737
737
  setIsOpen(true);
738
738
  }
739
739
  }
740
- }, attributesOfNativeInput)))), headerContent && /*#__PURE__*/_react.default.createElement("div", {
740
+ }, attributesOfNativeInput, withCreateLogic ? {
741
+ symbolsLimit: 50
742
+ } : {})))), headerContent && /*#__PURE__*/_react.default.createElement("div", {
741
743
  className: (0, _classnames.default)("".concat(RC, "__header-row"))
742
744
  }, headerContent)) : null, withSearchInputInList && /*#__PURE__*/_react.default.createElement("div", {
743
745
  className: (0, _classnames.default)("".concat(RC, "__input-list-wrapper"))
@@ -25,190 +25,119 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
25
25
 
26
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
27
 
28
- const TagList = _ref => {
28
+ const TagListToDropdown = _ref => {
29
29
  let {
30
- disabled,
31
- className,
32
- onTagClick,
33
- removeItem = null,
34
- items = [],
35
- withToggle = true,
36
- disableShowMore = false,
37
- shownItemsCount = "auto",
38
- testId = "test-taglist",
39
- refProp,
40
- renderOrder,
41
- onEditClick,
42
- onToggleRenderAll
30
+ options,
31
+ value = [],
32
+ dropdownProps = {},
33
+ listProps = {},
34
+ onChange,
35
+ useDropdownCompactMode
43
36
  } = _ref;
44
- const wrapperRef = (0, _react.useRef)(null);
45
- const [wrapperWidth, setWrapperWidth] = (0, _react.useState)(-1);
46
- const [tagList, setTagList] = (0, _react.useState)([]);
47
- const [staticTagsCount, setStaticTagsCount] = (0, _react.useState)(-1);
48
- const [renderItemsCount, setRenderItemsCount] = (0, _react.useState)(-1);
49
- const [renderAll, setRenderAll] = (0, _react.useState)(!withToggle);
50
-
51
- const setRenderAllInterceptor = v => {
52
- setRenderAll(v);
53
- onToggleRenderAll === null || onToggleRenderAll === void 0 ? void 0 : onToggleRenderAll(v);
54
- };
55
-
56
- const [lastCheckTime, setLastCheckTime] = (0, _react.useState)(-1);
57
-
58
- const isTagsRefSet = () => {
59
- if (!tagList.length) return false;
60
- return tagList.map(_ref2 => {
61
- let {
62
- itemRef
63
- } = _ref2;
64
- return itemRef;
65
- }).reduce((result, itemRef) => {
66
- if (!(itemRef !== null && itemRef !== void 0 && itemRef.current)) return false;
67
- return result;
68
- }, true);
37
+ const preparedValue = value.map(_ref2 => {
38
+ let {
39
+ value
40
+ } = _ref2;
41
+ return value;
42
+ });
43
+ const [isEditMode, setIsEditMode] = (0, _react.useState)(false);
44
+ const [isRenderAllTags, setIsRenderAllTags] = (0, _react.useState)(false);
45
+ const [newValue, setNewValue] = (0, _react.useState)(preparedValue);
46
+ const [isValueChanged, setIsValueChanged] = (0, _react.useState)(false);
47
+ const [isLoading, setIsLoading] = (0, _react.useState)(false);
48
+ const tagListRef = (0, _react.useRef)(null);
49
+
50
+ const onConfirmChangesClick = () => {
51
+ if (isValueChanged) {
52
+ var _Promise;
53
+
54
+ setIsLoading(true);
55
+ setIsValueChanged(false);
56
+ (_Promise = new Promise(r => {
57
+ const onChangeResult = onChange(options.filter(_ref3 => {
58
+ let {
59
+ value
60
+ } = _ref3;
61
+ return newValue.includes(value);
62
+ }));
63
+
64
+ if (onChangeResult instanceof Promise) {
65
+ onChangeResult.then(data => r(data));
66
+ } else {
67
+ r();
68
+ }
69
+ })) === null || _Promise === void 0 ? void 0 : _Promise.finally(() => {
70
+ setIsEditMode(false);
71
+ setIsLoading(false);
72
+ });
73
+ } else {
74
+ setIsEditMode(false);
75
+ }
69
76
  };
70
77
 
71
- const getStaticTagsCount = () => {
72
- if (typeof shownItemsCount === "number") return shownItemsCount;
73
- const result = tagList.map(_ref3 => {
74
- let {
75
- itemRef
76
- } = _ref3;
77
- return itemRef;
78
- }).reduce((result, itemRef) => {
79
- // const itemWidth = itemRef.current.getBoundingClientRect();
80
- const itemWidth = parseInt(window.getComputedStyle(itemRef === null || itemRef === void 0 ? void 0 : itemRef.current).getPropertyValue("width"), 10) + parseInt(window.getComputedStyle(itemRef === null || itemRef === void 0 ? void 0 : itemRef.current).getPropertyValue("margin-left"), 10) + parseInt(window.getComputedStyle(itemRef === null || itemRef === void 0 ? void 0 : itemRef.current).getPropertyValue("margin-right"), 10);
81
-
82
- if (!isNaN(itemWidth) && itemWidth > 0 && itemWidth + result.width < wrapperWidth) {
83
- result = {
84
- count: result.count + 1,
85
- width: result.width + itemWidth,
86
- items: [...result.items, {
87
- w: itemWidth,
88
- r: itemRef === null || itemRef === void 0 ? void 0 : itemRef.current
89
- }]
90
- };
78
+ (0, _react.useEffect)(() => {
79
+ setNewValue(preparedValue); // eslint-disable-next-line react-hooks/exhaustive-deps
80
+ }, [isEditMode]);
81
+
82
+ const renderTagsDropdown = props => {
83
+ return /*#__PURE__*/_react.default.createElement(TagsDropdown, (0, _extends2.default)({}, dropdownProps, {
84
+ disabled: isLoading,
85
+ options: options,
86
+ chosenOptions: newValue,
87
+ renderOptionsAsTags: true,
88
+ withCreateLogic: true,
89
+ isUseLocalOptionsStore: false,
90
+ onOptionEdit: dropdownProps === null || dropdownProps === void 0 ? void 0 : dropdownProps.onOptionEdit,
91
+ onOptionDelete: dropdownProps === null || dropdownProps === void 0 ? void 0 : dropdownProps.onOptionDelete,
92
+ onOptionCreate: dropdownProps === null || dropdownProps === void 0 ? void 0 : dropdownProps.onOptionCreate,
93
+ onActionConfirmClick: onConfirmChangesClick,
94
+ onActionCancelClick: () => setIsEditMode(v => !v),
95
+ onChange: data => {
96
+ setNewValue(data);
97
+ setIsValueChanged(true);
91
98
  }
92
-
93
- return result;
94
- }, {
95
- count: 0,
96
- width: 0,
97
- items: []
98
- });
99
- return result === null || result === void 0 ? void 0 : result.count;
99
+ }, props, {
100
+ isDefaultOpened: isEditMode
101
+ }));
100
102
  };
101
103
 
102
- const cancelDefault = function (e) {
103
- let cb = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : () => {};
104
- e === null || e === void 0 ? void 0 : e.preventDefault();
105
- e === null || e === void 0 ? void 0 : e.stopPropagation();
106
- cb(e);
104
+ const renderTagsList = props => {
105
+ return /*#__PURE__*/_react.default.createElement(TagList, (0, _extends2.default)({
106
+ disabled: isLoading,
107
+ refProp: tagListRef
108
+ }, listProps, {
109
+ items: value,
110
+ onEditClick: () => setIsEditMode(v => !v)
111
+ }, props));
107
112
  };
108
113
 
109
- const renderTags = () => {
110
- const tagsRenderOrder = renderOrder !== null && renderOrder !== void 0 ? renderOrder : tagList.map(_ref4 => {
111
- let {
112
- value,
113
- id
114
- } = _ref4;
115
- return value !== null && value !== void 0 ? value : id;
116
- });
117
- return tagsRenderOrder.map((v, i) => {
118
- var _item$id, _item$id2;
119
-
120
- const item = tagList.find(_ref5 => {
114
+ const renderCompactMode = () => {
115
+ return renderTagsDropdown({
116
+ withActions: false,
117
+ withSearchInputInList: true,
118
+ customTriggerRef: tagListRef,
119
+ recalculateListContainerStylesTrigger: isRenderAllTags,
120
+ onDropdownListClose: onConfirmChangesClick,
121
+ renderCustomTrigger: _ref4 => {
121
122
  let {
122
- value,
123
- id
124
- } = _ref5;
125
- return (value !== null && value !== void 0 ? value : id) === v;
126
- });
127
- if (!item) return null;
128
- const isHidden = renderItemsCount !== -1 ? i >= renderItemsCount : false;
129
- return /*#__PURE__*/_react.default.createElement("div", {
130
- className: "tag-list_wrapper_item ".concat(isHidden ? "tag-list_wrapper_item--hidden" : ""),
131
- key: "tag-list-item-".concat((_item$id = item === null || item === void 0 ? void 0 : item.id) !== null && _item$id !== void 0 ? _item$id : item === null || item === void 0 ? void 0 : item.value),
132
- ref: (0, _utils.checkedRef)(item === null || item === void 0 ? void 0 : item.itemRef)
133
- }, /*#__PURE__*/_react.default.createElement(_Tag.default, (0, _extends2.default)({
134
- testId: "test-taglist-item-".concat((_item$id2 = item === null || item === void 0 ? void 0 : item.id) !== null && _item$id2 !== void 0 ? _item$id2 : item === null || item === void 0 ? void 0 : item.value)
135
- }, item, {
136
- onClick: onTagClick,
137
- removeItem: removeItem
138
- })));
139
- });
140
- };
141
-
142
- const renderMoreTags = () => {
143
- if ((tagList === null || tagList === void 0 ? void 0 : tagList.length) < shownItemsCount || !(tagList !== null && tagList !== void 0 && tagList.length) || disableShowMore) return null;
144
- const restItems = tagList.length - renderItemsCount;
145
- if (restItems === 0 || !withToggle || staticTagsCount === -1) return null;
146
- return /*#__PURE__*/_react.default.createElement(_Tag.default, {
147
- label: "+".concat(restItems),
148
- className: "tag-list_wrapper_render-more",
149
- onClick: disableShowMore ? () => {} : e => cancelDefault(e, () => setRenderAllInterceptor(true))
123
+ isOpen,
124
+ setIsOpen,
125
+ inputRef
126
+ } = _ref4;
127
+ return renderTagsList({
128
+ onToggleRenderAll: v => setTimeout(() => setIsRenderAllTags(v), 1),
129
+ onEditClick: () => {
130
+ setIsOpen(!isEditMode);
131
+ if (isEditMode) onConfirmChangesClick();else setIsEditMode(true);
132
+ }
133
+ });
134
+ }
150
135
  });
151
136
  };
152
137
 
153
- const renderHideTags = () => {
154
- if (renderItemsCount !== (tagList === null || tagList === void 0 ? void 0 : tagList.length) || !withToggle || staticTagsCount === -1 || staticTagsCount === (tagList === null || tagList === void 0 ? void 0 : tagList.length)) return null;
155
- return /*#__PURE__*/_react.default.createElement(_Tag.default, {
156
- label: "...",
157
- className: "tag-list_wrapper_hide-more",
158
- onClick: e => cancelDefault(e, () => setRenderAllInterceptor(false))
159
- });
160
- }; // Set TagList Wrapper Width
161
-
162
-
163
- (0, _react.useLayoutEffect)(() => {
164
- const wrapperNewWidth = parseInt(window.getComputedStyle(wrapperRef === null || wrapperRef === void 0 ? void 0 : wrapperRef.current).getPropertyValue("width"), 10) - 48;
165
-
166
- if (wrapperRef.current && wrapperNewWidth !== wrapperWidth) {
167
- setWrapperWidth(wrapperNewWidth);
168
- }
169
- }, [document]); // Set TagList Items
170
-
171
- (0, _react.useEffect)(() => {
172
- setStaticTagsCount(-1);
173
- setRenderItemsCount(-1);
174
- setRenderAllInterceptor(false);
175
- setTagList(items.map(item => ({ ...item,
176
- itemRef: /*#__PURE__*/(0, _react.createRef)()
177
- })));
178
- }, [items]); // Count Row Tags
179
-
180
- (0, _react.useLayoutEffect)(() => {
181
- if (withToggle) {
182
- if (!isTagsRefSet() && lastCheckTime === -1) {
183
- setLastCheckTime(Date.now());
184
- return;
185
- }
186
-
187
- setStaticTagsCount(getStaticTagsCount());
188
- }
189
- }, [tagList, wrapperWidth, lastCheckTime]); //
190
-
191
- (0, _react.useLayoutEffect)(() => {
192
- setRenderItemsCount(staticTagsCount);
193
- }, [staticTagsCount]); // Toggle Show/Hide More Tags
194
-
195
- (0, _react.useEffect)(() => {
196
- setRenderItemsCount(renderAll ? tagList === null || tagList === void 0 ? void 0 : tagList.length : staticTagsCount);
197
- }, [renderAll]);
198
- (0, _react.useEffect)(() => {
199
- // eslint-disable-next-line react-hooks/exhaustive-deps
200
- if (wrapperRef !== null && wrapperRef !== void 0 && wrapperRef.current && refProp) refProp.current = wrapperRef === null || wrapperRef === void 0 ? void 0 : wrapperRef.current;
201
- }, [wrapperRef === null || wrapperRef === void 0 ? void 0 : wrapperRef.current]);
202
- return /*#__PURE__*/_react.default.createElement("div", {
203
- className: (0, _classnames.default)("tag-list_wrapper", "".concat(renderItemsCount !== (tagList === null || tagList === void 0 ? void 0 : tagList.length) || !withToggle || staticTagsCount === -1 || staticTagsCount === (tagList === null || tagList === void 0 ? void 0 : tagList.length) ? "tag-list_wrapper--only-static-items" : "tag-list_wrapper--all-items"), className, {
204
- "tag-list_wrapper--disabled": disabled
205
- }),
206
- ref: wrapperRef
207
- }, renderTags(), renderMoreTags(), renderHideTags(), typeof onEditClick === "function" && /*#__PURE__*/_react.default.createElement("div", {
208
- className: "tag-list__edit-trigger"
209
- }, /*#__PURE__*/_react.default.createElement(_reactFeather.Edit3, {
210
- onClick: onEditClick
211
- })));
138
+ return useDropdownCompactMode ? renderCompactMode() : isEditMode ? renderTagsDropdown({
139
+ withActions: true
140
+ }) : renderTagsList();
212
141
  };
213
142
 
214
143
  var _default = TagList;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "intelicoreact",
3
- "version": "1.4.38",
3
+ "version": "1.4.40",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "files": [