@gravity-ui/dashkit 8.8.1-beta.2 → 8.8.1-beta.3

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.
@@ -57,6 +57,7 @@
57
57
  transition: none;
58
58
  z-index: 3;
59
59
  will-change: transform;
60
+ pointer-events: none;
60
61
  }
61
62
 
62
63
  .react-grid-item.dashkit-grid-item_is-focused {
@@ -40,7 +40,7 @@ export default class GridLayout extends React.PureComponent<any, any, any> {
40
40
  reloadItems(): void;
41
41
  _onDragStart: (group: any, _newLayout: any, layoutItem: any) => void;
42
42
  _onResizeStart: () => void;
43
- _onDragExit: () => void;
43
+ _onTargetRestore: () => void;
44
44
  _onStop: (group: any, newLayout: any) => void;
45
45
  _onSharedDrop: (targetGroup: any, newLayout: any, tempItem: any) => void;
46
46
  _onExternalDrop: (group: any, newLayout: any, item: any, e: any) => void;
@@ -60,14 +60,14 @@ class GridLayout extends react_1.default.PureComponent {
60
60
  const onStop = this._onStop.bind(this, group);
61
61
  const onDrop = this._onDrop.bind(this, group);
62
62
  const onDropDragOver = this._onDropDragOver.bind(this, group);
63
- const onDragExit = this._onDragExit.bind(this, group);
63
+ const onDragTargetRestore = this._onTargetRestore.bind(this, group);
64
64
  this._memoCallbacksForGroups[group] = {
65
65
  onDragStart,
66
66
  onDragStop: onStop,
67
67
  onResizeStop: onStop,
68
68
  onDrop,
69
69
  onDropDragOver,
70
- onDragExit,
70
+ onDragTargetRestore,
71
71
  };
72
72
  }
73
73
  return this._memoCallbacksForGroups[group];
@@ -119,10 +119,13 @@ class GridLayout extends react_1.default.PureComponent {
119
119
  isDragging: true,
120
120
  });
121
121
  };
122
- this._onDragExit = () => {
123
- this.setState({
124
- draggedOverGroup: null,
125
- });
122
+ this._onTargetRestore = () => {
123
+ const { currentDraggingElement } = this.state;
124
+ if (currentDraggingElement) {
125
+ this.setState({
126
+ draggedOverGroup: currentDraggingElement[0],
127
+ });
128
+ }
126
129
  };
127
130
  this._onStop = (group, newLayout) => {
128
131
  const { layoutChange, onDrop, temporaryLayout } = this.context;
@@ -282,7 +285,7 @@ class GridLayout extends react_1.default.PureComponent {
282
285
  }
283
286
  renderGroup(group, renderLayout, renderItems, offset = 0, groupGridProperties) {
284
287
  const { registerManager, editMode, noOverlay, focusable, draggableHandleClassName, outerDnDEnable, } = this.context;
285
- const { currentDraggingElement } = this.state;
288
+ const { currentDraggingElement, draggedOverGroup } = this.state;
286
289
  const properties = groupGridProperties
287
290
  ? groupGridProperties(Object.assign({}, registerManager.gridLayout))
288
291
  : registerManager.gridLayout;
@@ -292,7 +295,11 @@ class GridLayout extends react_1.default.PureComponent {
292
295
  }
293
296
  const { callbacks, layout } = this.getMemoGroupProps(group, renderLayout, properties);
294
297
  const hasSharedDragItem = Boolean(currentDraggingElement && currentDraggingElement[0] !== group);
295
- return (react_1.default.createElement(ReactGridLayout_1.Layout, Object.assign({}, properties, { compactType: compactType, layout: layout, key: `group_${group}`, isDraggable: editMode, isResizable: editMode, onResizeStart: this._onResizeStart, onDragStart: callbacks.onDragStart, onDragStop: callbacks.onDragStop, onResizeStop: callbacks.onResizeStop, onDragExit: callbacks.onDragExit, onDropDragOver: callbacks.onDropDragOver, onDrop: callbacks.onDrop, hasSharedDragItem: hasSharedDragItem }, (draggableHandleClassName
298
+ const isDragCaptured = currentDraggingElement &&
299
+ group === currentDraggingElement[0] &&
300
+ draggedOverGroup !== null &&
301
+ draggedOverGroup !== group;
302
+ return (react_1.default.createElement(ReactGridLayout_1.Layout, Object.assign({}, properties, { compactType: compactType, layout: layout, key: `group_${group}`, isDraggable: editMode, isResizable: editMode, onResizeStart: this._onResizeStart, onDragStart: callbacks.onDragStart, onDragStop: callbacks.onDragStop, onResizeStop: callbacks.onResizeStop, onDragTargetRestore: callbacks.onDragTargetRestore, onDropDragOver: callbacks.onDropDragOver, onDrop: callbacks.onDrop, hasSharedDragItem: hasSharedDragItem, isDragCaptured: isDragCaptured }, (draggableHandleClassName
296
303
  ? { draggableHandle: `.${draggableHandleClassName}` }
297
304
  : null), (outerDnDEnable
298
305
  ? {
@@ -5,21 +5,10 @@ const tslib_1 = require("tslib");
5
5
  const react_1 = tslib_1.__importDefault(require("react"));
6
6
  const react_grid_layout_1 = tslib_1.__importStar(require("react-grid-layout"));
7
7
  const constants_1 = require("../../constants");
8
- const { compact, compactType } = react_grid_layout_1.utils;
9
- // pointer-events disabled to make mouse events be able to passthrought
10
- // while dragging element out of the grid the mouse positioned over grid item
11
- // so there is only two ways to get it, calculate rect or just give browser make his work
12
- const DRAGGING_PLACEHOLDER_STYLE = { pointerEvents: 'none' };
13
- // when shared element is dragged over another group we still creating placeholder for it
14
- // cause react-grid-layout is havely dependent on this element
15
- // while in future there will be some wey not to create dummy div and hide it with opacity
16
- // this hack is all what i've got now
17
- const DRAGGING_PLACEHOLDER_HIDDEN_STYLE = Object.assign(Object.assign({}, DRAGGING_PLACEHOLDER_STYLE), { opacity: 0 });
18
8
  class DragOverLayout extends react_grid_layout_1.default {
19
9
  constructor(...args) {
20
10
  super(...args);
21
- this._isMouseOver = true;
22
- this._savedDragoutState = null;
11
+ this._savedDraggedOutLayout = null;
23
12
  // Reset placeholder when item dragged from outside
24
13
  this.resetExternalPlaceholder = () => {
25
14
  if (this.dragEnterCounter) {
@@ -33,13 +22,13 @@ class DragOverLayout extends react_grid_layout_1.default {
33
22
  const { cols } = this.props;
34
23
  const savedLayout = layout.map((item) => (Object.assign({}, item)));
35
24
  let hiddenElement;
36
- const newLayout = compact(layout.filter((item) => {
25
+ const newLayout = react_grid_layout_1.utils.compact(layout.filter((item) => {
37
26
  if (item.i === i) {
38
27
  hiddenElement = item;
39
28
  return false;
40
29
  }
41
30
  return true;
42
- }), compactType(this.props), cols);
31
+ }), react_grid_layout_1.utils.compactType(this.props), cols);
43
32
  if (hiddenElement) {
44
33
  newLayout.push(hiddenElement);
45
34
  }
@@ -47,24 +36,23 @@ class DragOverLayout extends react_grid_layout_1.default {
47
36
  activeDrag: null,
48
37
  layout: newLayout,
49
38
  });
50
- this.resetExternalPlaceholder();
51
- return { layout: savedLayout, id: hiddenElement.i };
39
+ return savedLayout;
52
40
  };
53
41
  this.extendedOnDrag = (i, x, y, sintEv) => {
54
- if (!this._isMouseOver) {
55
- if (!this._savedDragoutState) {
56
- this._savedDragoutState = this.hideLocalPlaceholder(i);
42
+ if (this.props.isDragCaptured) {
43
+ if (!this._savedDraggedOutLayout) {
44
+ this._savedDraggedOutLayout = this.hideLocalPlaceholder(i);
57
45
  }
58
46
  return;
59
47
  }
60
- this._savedDragoutState = null;
48
+ this._savedDraggedOutLayout = null;
61
49
  // parent onDrag will show new placeholder again
62
50
  this.parentOnDrag(i, x, y, sintEv);
63
51
  };
64
52
  this.extendedOnDragStop = (i, x, y, sintEv) => {
65
53
  // Restoring layout if item was dropped outside of the grid
66
- if (this._savedDragoutState) {
67
- const savedLayout = this._savedDragoutState.layout;
54
+ if (this._savedDraggedOutLayout) {
55
+ const savedLayout = this._savedDraggedOutLayout;
68
56
  const l = react_grid_layout_1.utils.getLayoutItem(savedLayout, i);
69
57
  // Create placeholder (display only)
70
58
  const placeholder = {
@@ -81,46 +69,34 @@ class DragOverLayout extends react_grid_layout_1.default {
81
69
  }, () => {
82
70
  this.parentOnDragStop(i, x, y, sintEv);
83
71
  });
84
- this._savedDragoutState = null;
72
+ this._savedDraggedOutLayout = null;
85
73
  }
86
74
  else {
87
75
  this.parentOnDragStop(i, x, y, sintEv);
88
76
  }
89
77
  };
90
- this.extendedOnDragEnter = (...args) => {
91
- this._isMouseOver = true;
92
- this.parentOnDragEnter(...args);
93
- };
94
- this.extendedOnDragLeave = (...args) => {
95
- var _a, _b;
96
- this._isMouseOver = false;
97
- this.parentOnDragLeave(...args);
98
- (_b = (_a = this.props).onDragExit) === null || _b === void 0 ? void 0 : _b.call(_a);
99
- };
100
78
  // Proxy mouse events -> drag methods for dnd between groups
101
79
  this.mouseEnterHandler = (e) => {
102
- this._isMouseOver = true;
80
+ var _a, _b;
103
81
  if (this.props.hasSharedDragItem) {
104
- this.parentOnDragEnter(e);
82
+ this.onDragEnter(e);
83
+ }
84
+ else if (this.props.isDragCaptured) {
85
+ (_b = (_a = this.props).onDragTargetRestore) === null || _b === void 0 ? void 0 : _b.call(_a);
105
86
  }
106
87
  };
107
88
  this.mouseLeaveHandler = (e) => {
108
- var _a, _b;
109
- this._isMouseOver = false;
110
89
  if (this.props.hasSharedDragItem) {
111
- this.parentOnDragLeave(e);
112
- (_b = (_a = this.props).onDragExit) === null || _b === void 0 ? void 0 : _b.call(_a);
90
+ this.onDragLeave(e);
113
91
  }
114
92
  };
115
93
  this.mouseMoveHandler = (e) => {
116
- this._isMouseOver = true;
117
94
  if (this.props.hasSharedDragItem) {
118
95
  this.onDragOver(e);
119
96
  }
120
97
  };
121
98
  this.mouseUpHandler = (e) => {
122
99
  var _a, _b;
123
- this._isMouseOver = true;
124
100
  if (this.props.hasSharedDragItem) {
125
101
  e.preventDefault();
126
102
  const { droppingItem } = this.props;
@@ -135,10 +111,6 @@ class DragOverLayout extends react_grid_layout_1.default {
135
111
  this.onDrag = this.extendedOnDrag;
136
112
  this.parentOnDragStop = this.onDragStop;
137
113
  this.onDragStop = this.extendedOnDragStop;
138
- this.parentOnDragEnter = this.onDragEnter;
139
- this.onDragEnter = this.extendedOnDragEnter;
140
- this.parentOnDragLeave = this.onDragLeave;
141
- this.onDragLeave = this.extendedOnDragLeave;
142
114
  }
143
115
  componentDidMount() {
144
116
  var _a;
@@ -163,8 +135,6 @@ class DragOverLayout extends react_grid_layout_1.default {
163
135
  innerElement.removeEventListener('mouseleave', this.mouseLeaveHandler);
164
136
  innerElement.removeEventListener('mousemove', this.mouseMoveHandler);
165
137
  }
166
- // Resetting instance props
167
- this._savedDragoutState = null;
168
138
  }
169
139
  // react-grid-layout doens't calculate it's height when last element is removed
170
140
  // and just keeps the previous value
@@ -190,7 +160,7 @@ class DragOverLayout extends react_grid_layout_1.default {
190
160
  // And cause grid-layout using it's own GridItem to make it look
191
161
  // like overlay adding className
192
162
  processGridItem(child, isDroppingItem) {
193
- var _a, _b, _c;
163
+ var _a;
194
164
  const gridItem = (_a = super.processGridItem) === null || _a === void 0 ? void 0 : _a.call(this, child, isDroppingItem);
195
165
  if (!gridItem) {
196
166
  return gridItem;
@@ -200,23 +170,15 @@ class DragOverLayout extends react_grid_layout_1.default {
200
170
  const { containerWidth, cols, w, h, rowHeight, margin, transformScale, droppingPosition, } = itemProps;
201
171
  const leftOffset = (((containerWidth / cols) * w) / 2 || 0) * transformScale;
202
172
  const topOffset = ((h * rowHeight + (h - 1) * margin[1]) / 2 || 0) * transformScale;
203
- const dragStyles = this.props.hasSharedDragItem
204
- ? DRAGGING_PLACEHOLDER_HIDDEN_STYLE
205
- : DRAGGING_PLACEHOLDER_STYLE;
173
+ const style = gridItem.props.style || null;
206
174
  // React.cloneElement is just cleaner then copy-paste whole processGridItem method
207
175
  return react_1.default.cloneElement(gridItem, {
208
- style: itemProps.style ? Object.assign(Object.assign({}, itemProps.style), dragStyles) : dragStyles,
176
+ // hiding previre if dragging shared item
177
+ style: this.props.hasSharedDragItem ? Object.assign(Object.assign({}, style), { opacity: 0 }) : style,
209
178
  className: constants_1.OVERLAY_CLASS_NAME,
210
179
  droppingPosition: Object.assign(Object.assign({}, droppingPosition), { left: droppingPosition.left - leftOffset, top: droppingPosition.top - topOffset }),
211
180
  });
212
181
  }
213
- else if (itemProps.i === ((_b = this.state.activeDrag) === null || _b === void 0 ? void 0 : _b.i) ||
214
- itemProps.i === ((_c = this._savedDragoutState) === null || _c === void 0 ? void 0 : _c.id)) {
215
- const dragStyles = DRAGGING_PLACEHOLDER_STYLE;
216
- return react_1.default.cloneElement(gridItem, {
217
- style: itemProps.style ? Object.assign(Object.assign({}, itemProps.style), dragStyles) : dragStyles,
218
- });
219
- }
220
182
  return gridItem;
221
183
  }
222
184
  }
@@ -57,6 +57,7 @@
57
57
  transition: none;
58
58
  z-index: 3;
59
59
  will-change: transform;
60
+ pointer-events: none;
60
61
  }
61
62
 
62
63
  .react-grid-item.dashkit-grid-item_is-focused {
@@ -40,7 +40,7 @@ export default class GridLayout extends React.PureComponent<any, any, any> {
40
40
  reloadItems(): void;
41
41
  _onDragStart: (group: any, _newLayout: any, layoutItem: any) => void;
42
42
  _onResizeStart: () => void;
43
- _onDragExit: () => void;
43
+ _onTargetRestore: () => void;
44
44
  _onStop: (group: any, newLayout: any) => void;
45
45
  _onSharedDrop: (targetGroup: any, newLayout: any, tempItem: any) => void;
46
46
  _onExternalDrop: (group: any, newLayout: any, item: any, e: any) => void;
@@ -57,14 +57,14 @@ class GridLayout extends React.PureComponent {
57
57
  const onStop = this._onStop.bind(this, group);
58
58
  const onDrop = this._onDrop.bind(this, group);
59
59
  const onDropDragOver = this._onDropDragOver.bind(this, group);
60
- const onDragExit = this._onDragExit.bind(this, group);
60
+ const onDragTargetRestore = this._onTargetRestore.bind(this, group);
61
61
  this._memoCallbacksForGroups[group] = {
62
62
  onDragStart,
63
63
  onDragStop: onStop,
64
64
  onResizeStop: onStop,
65
65
  onDrop,
66
66
  onDropDragOver,
67
- onDragExit,
67
+ onDragTargetRestore,
68
68
  };
69
69
  }
70
70
  return this._memoCallbacksForGroups[group];
@@ -116,10 +116,13 @@ class GridLayout extends React.PureComponent {
116
116
  isDragging: true,
117
117
  });
118
118
  };
119
- this._onDragExit = () => {
120
- this.setState({
121
- draggedOverGroup: null,
122
- });
119
+ this._onTargetRestore = () => {
120
+ const { currentDraggingElement } = this.state;
121
+ if (currentDraggingElement) {
122
+ this.setState({
123
+ draggedOverGroup: currentDraggingElement[0],
124
+ });
125
+ }
123
126
  };
124
127
  this._onStop = (group, newLayout) => {
125
128
  const { layoutChange, onDrop, temporaryLayout } = this.context;
@@ -279,7 +282,7 @@ class GridLayout extends React.PureComponent {
279
282
  }
280
283
  renderGroup(group, renderLayout, renderItems, offset = 0, groupGridProperties) {
281
284
  const { registerManager, editMode, noOverlay, focusable, draggableHandleClassName, outerDnDEnable, } = this.context;
282
- const { currentDraggingElement } = this.state;
285
+ const { currentDraggingElement, draggedOverGroup } = this.state;
283
286
  const properties = groupGridProperties
284
287
  ? groupGridProperties(Object.assign({}, registerManager.gridLayout))
285
288
  : registerManager.gridLayout;
@@ -289,7 +292,11 @@ class GridLayout extends React.PureComponent {
289
292
  }
290
293
  const { callbacks, layout } = this.getMemoGroupProps(group, renderLayout, properties);
291
294
  const hasSharedDragItem = Boolean(currentDraggingElement && currentDraggingElement[0] !== group);
292
- return (React.createElement(Layout, Object.assign({}, properties, { compactType: compactType, layout: layout, key: `group_${group}`, isDraggable: editMode, isResizable: editMode, onResizeStart: this._onResizeStart, onDragStart: callbacks.onDragStart, onDragStop: callbacks.onDragStop, onResizeStop: callbacks.onResizeStop, onDragExit: callbacks.onDragExit, onDropDragOver: callbacks.onDropDragOver, onDrop: callbacks.onDrop, hasSharedDragItem: hasSharedDragItem }, (draggableHandleClassName
295
+ const isDragCaptured = currentDraggingElement &&
296
+ group === currentDraggingElement[0] &&
297
+ draggedOverGroup !== null &&
298
+ draggedOverGroup !== group;
299
+ return (React.createElement(Layout, Object.assign({}, properties, { compactType: compactType, layout: layout, key: `group_${group}`, isDraggable: editMode, isResizable: editMode, onResizeStart: this._onResizeStart, onDragStart: callbacks.onDragStart, onDragStop: callbacks.onDragStop, onResizeStop: callbacks.onResizeStop, onDragTargetRestore: callbacks.onDragTargetRestore, onDropDragOver: callbacks.onDropDragOver, onDrop: callbacks.onDrop, hasSharedDragItem: hasSharedDragItem, isDragCaptured: isDragCaptured }, (draggableHandleClassName
293
300
  ? { draggableHandle: `.${draggableHandleClassName}` }
294
301
  : null), (outerDnDEnable
295
302
  ? {
@@ -1,21 +1,10 @@
1
1
  import React from 'react';
2
2
  import ReactGridLayout, { WidthProvider, utils } from 'react-grid-layout';
3
3
  import { OVERLAY_CLASS_NAME } from '../../constants';
4
- const { compact, compactType } = utils;
5
- // pointer-events disabled to make mouse events be able to passthrought
6
- // while dragging element out of the grid the mouse positioned over grid item
7
- // so there is only two ways to get it, calculate rect or just give browser make his work
8
- const DRAGGING_PLACEHOLDER_STYLE = { pointerEvents: 'none' };
9
- // when shared element is dragged over another group we still creating placeholder for it
10
- // cause react-grid-layout is havely dependent on this element
11
- // while in future there will be some wey not to create dummy div and hide it with opacity
12
- // this hack is all what i've got now
13
- const DRAGGING_PLACEHOLDER_HIDDEN_STYLE = Object.assign(Object.assign({}, DRAGGING_PLACEHOLDER_STYLE), { opacity: 0 });
14
4
  class DragOverLayout extends ReactGridLayout {
15
5
  constructor(...args) {
16
6
  super(...args);
17
- this._isMouseOver = true;
18
- this._savedDragoutState = null;
7
+ this._savedDraggedOutLayout = null;
19
8
  // Reset placeholder when item dragged from outside
20
9
  this.resetExternalPlaceholder = () => {
21
10
  if (this.dragEnterCounter) {
@@ -29,13 +18,13 @@ class DragOverLayout extends ReactGridLayout {
29
18
  const { cols } = this.props;
30
19
  const savedLayout = layout.map((item) => (Object.assign({}, item)));
31
20
  let hiddenElement;
32
- const newLayout = compact(layout.filter((item) => {
21
+ const newLayout = utils.compact(layout.filter((item) => {
33
22
  if (item.i === i) {
34
23
  hiddenElement = item;
35
24
  return false;
36
25
  }
37
26
  return true;
38
- }), compactType(this.props), cols);
27
+ }), utils.compactType(this.props), cols);
39
28
  if (hiddenElement) {
40
29
  newLayout.push(hiddenElement);
41
30
  }
@@ -43,24 +32,23 @@ class DragOverLayout extends ReactGridLayout {
43
32
  activeDrag: null,
44
33
  layout: newLayout,
45
34
  });
46
- this.resetExternalPlaceholder();
47
- return { layout: savedLayout, id: hiddenElement.i };
35
+ return savedLayout;
48
36
  };
49
37
  this.extendedOnDrag = (i, x, y, sintEv) => {
50
- if (!this._isMouseOver) {
51
- if (!this._savedDragoutState) {
52
- this._savedDragoutState = this.hideLocalPlaceholder(i);
38
+ if (this.props.isDragCaptured) {
39
+ if (!this._savedDraggedOutLayout) {
40
+ this._savedDraggedOutLayout = this.hideLocalPlaceholder(i);
53
41
  }
54
42
  return;
55
43
  }
56
- this._savedDragoutState = null;
44
+ this._savedDraggedOutLayout = null;
57
45
  // parent onDrag will show new placeholder again
58
46
  this.parentOnDrag(i, x, y, sintEv);
59
47
  };
60
48
  this.extendedOnDragStop = (i, x, y, sintEv) => {
61
49
  // Restoring layout if item was dropped outside of the grid
62
- if (this._savedDragoutState) {
63
- const savedLayout = this._savedDragoutState.layout;
50
+ if (this._savedDraggedOutLayout) {
51
+ const savedLayout = this._savedDraggedOutLayout;
64
52
  const l = utils.getLayoutItem(savedLayout, i);
65
53
  // Create placeholder (display only)
66
54
  const placeholder = {
@@ -77,46 +65,34 @@ class DragOverLayout extends ReactGridLayout {
77
65
  }, () => {
78
66
  this.parentOnDragStop(i, x, y, sintEv);
79
67
  });
80
- this._savedDragoutState = null;
68
+ this._savedDraggedOutLayout = null;
81
69
  }
82
70
  else {
83
71
  this.parentOnDragStop(i, x, y, sintEv);
84
72
  }
85
73
  };
86
- this.extendedOnDragEnter = (...args) => {
87
- this._isMouseOver = true;
88
- this.parentOnDragEnter(...args);
89
- };
90
- this.extendedOnDragLeave = (...args) => {
91
- var _a, _b;
92
- this._isMouseOver = false;
93
- this.parentOnDragLeave(...args);
94
- (_b = (_a = this.props).onDragExit) === null || _b === void 0 ? void 0 : _b.call(_a);
95
- };
96
74
  // Proxy mouse events -> drag methods for dnd between groups
97
75
  this.mouseEnterHandler = (e) => {
98
- this._isMouseOver = true;
76
+ var _a, _b;
99
77
  if (this.props.hasSharedDragItem) {
100
- this.parentOnDragEnter(e);
78
+ this.onDragEnter(e);
79
+ }
80
+ else if (this.props.isDragCaptured) {
81
+ (_b = (_a = this.props).onDragTargetRestore) === null || _b === void 0 ? void 0 : _b.call(_a);
101
82
  }
102
83
  };
103
84
  this.mouseLeaveHandler = (e) => {
104
- var _a, _b;
105
- this._isMouseOver = false;
106
85
  if (this.props.hasSharedDragItem) {
107
- this.parentOnDragLeave(e);
108
- (_b = (_a = this.props).onDragExit) === null || _b === void 0 ? void 0 : _b.call(_a);
86
+ this.onDragLeave(e);
109
87
  }
110
88
  };
111
89
  this.mouseMoveHandler = (e) => {
112
- this._isMouseOver = true;
113
90
  if (this.props.hasSharedDragItem) {
114
91
  this.onDragOver(e);
115
92
  }
116
93
  };
117
94
  this.mouseUpHandler = (e) => {
118
95
  var _a, _b;
119
- this._isMouseOver = true;
120
96
  if (this.props.hasSharedDragItem) {
121
97
  e.preventDefault();
122
98
  const { droppingItem } = this.props;
@@ -131,10 +107,6 @@ class DragOverLayout extends ReactGridLayout {
131
107
  this.onDrag = this.extendedOnDrag;
132
108
  this.parentOnDragStop = this.onDragStop;
133
109
  this.onDragStop = this.extendedOnDragStop;
134
- this.parentOnDragEnter = this.onDragEnter;
135
- this.onDragEnter = this.extendedOnDragEnter;
136
- this.parentOnDragLeave = this.onDragLeave;
137
- this.onDragLeave = this.extendedOnDragLeave;
138
110
  }
139
111
  componentDidMount() {
140
112
  var _a;
@@ -159,8 +131,6 @@ class DragOverLayout extends ReactGridLayout {
159
131
  innerElement.removeEventListener('mouseleave', this.mouseLeaveHandler);
160
132
  innerElement.removeEventListener('mousemove', this.mouseMoveHandler);
161
133
  }
162
- // Resetting instance props
163
- this._savedDragoutState = null;
164
134
  }
165
135
  // react-grid-layout doens't calculate it's height when last element is removed
166
136
  // and just keeps the previous value
@@ -186,7 +156,7 @@ class DragOverLayout extends ReactGridLayout {
186
156
  // And cause grid-layout using it's own GridItem to make it look
187
157
  // like overlay adding className
188
158
  processGridItem(child, isDroppingItem) {
189
- var _a, _b, _c;
159
+ var _a;
190
160
  const gridItem = (_a = super.processGridItem) === null || _a === void 0 ? void 0 : _a.call(this, child, isDroppingItem);
191
161
  if (!gridItem) {
192
162
  return gridItem;
@@ -196,23 +166,15 @@ class DragOverLayout extends ReactGridLayout {
196
166
  const { containerWidth, cols, w, h, rowHeight, margin, transformScale, droppingPosition, } = itemProps;
197
167
  const leftOffset = (((containerWidth / cols) * w) / 2 || 0) * transformScale;
198
168
  const topOffset = ((h * rowHeight + (h - 1) * margin[1]) / 2 || 0) * transformScale;
199
- const dragStyles = this.props.hasSharedDragItem
200
- ? DRAGGING_PLACEHOLDER_HIDDEN_STYLE
201
- : DRAGGING_PLACEHOLDER_STYLE;
169
+ const style = gridItem.props.style || null;
202
170
  // React.cloneElement is just cleaner then copy-paste whole processGridItem method
203
171
  return React.cloneElement(gridItem, {
204
- style: itemProps.style ? Object.assign(Object.assign({}, itemProps.style), dragStyles) : dragStyles,
172
+ // hiding previre if dragging shared item
173
+ style: this.props.hasSharedDragItem ? Object.assign(Object.assign({}, style), { opacity: 0 }) : style,
205
174
  className: OVERLAY_CLASS_NAME,
206
175
  droppingPosition: Object.assign(Object.assign({}, droppingPosition), { left: droppingPosition.left - leftOffset, top: droppingPosition.top - topOffset }),
207
176
  });
208
177
  }
209
- else if (itemProps.i === ((_b = this.state.activeDrag) === null || _b === void 0 ? void 0 : _b.i) ||
210
- itemProps.i === ((_c = this._savedDragoutState) === null || _c === void 0 ? void 0 : _c.id)) {
211
- const dragStyles = DRAGGING_PLACEHOLDER_STYLE;
212
- return React.cloneElement(gridItem, {
213
- style: itemProps.style ? Object.assign(Object.assign({}, itemProps.style), dragStyles) : dragStyles,
214
- });
215
- }
216
178
  return gridItem;
217
179
  }
218
180
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gravity-ui/dashkit",
3
- "version": "8.8.1-beta.2",
3
+ "version": "8.8.1-beta.3",
4
4
  "description": "Library for rendering dashboard grid layout",
5
5
  "license": "MIT",
6
6
  "repository": {