UNPKG

3.54 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.move = exports.moveRows = exports.moveLabels = exports.moveChildrenLabels = undefined;
7
8var _findIndex4 = require('lodash/findIndex');
9
10var _findIndex5 = _interopRequireDefault(_findIndex4);
11
12function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
14function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
15
16function moveChildrenLabels(columns, _ref) {
17 var sourceLabel = _ref.sourceLabel,
18 targetLabel = _ref.targetLabel;
19
20 var sourceIndex = (0, _findIndex5.default)(columns, function (column) {
21 return (0, _findIndex5.default)(column.children, { header: { label: sourceLabel } }) >= 0;
22 });
23
24 if (sourceIndex < 0) {
25 return null;
26 }
27
28 var targetIndex = (0, _findIndex5.default)(columns, function (column) {
29 return (0, _findIndex5.default)(column.children, { header: { label: targetLabel } }) >= 0;
30 });
31
32 if (targetIndex < 0) {
33 return null;
34 }
35
36 // Allow drag and drop only within the same column
37 if (sourceIndex !== targetIndex) {
38 return null;
39 }
40
41 var movedChildren = moveLabels(columns[sourceIndex].children, {
42 sourceLabel: sourceLabel, targetLabel: targetLabel
43 });
44
45 if (!movedChildren) {
46 return null;
47 }
48
49 return {
50 target: sourceIndex,
51 columns: movedChildren.columns
52 };
53}
54
55function moveLabels(columns, _ref2) {
56 var sourceLabel = _ref2.sourceLabel,
57 targetLabel = _ref2.targetLabel;
58
59 if (!columns) {
60 throw new Error('dnd.moveLabels - Missing columns!');
61 }
62
63 var sourceIndex = (0, _findIndex5.default)(columns, { header: { label: sourceLabel } });
64
65 if (sourceIndex < 0) {
66 return null;
67 }
68
69 var targetIndex = (0, _findIndex5.default)(columns, { header: { label: targetLabel } });
70
71 if (targetIndex < 0) {
72 return null;
73 }
74
75 var movedColumns = move(columns, sourceIndex, targetIndex);
76
77 return {
78 source: movedColumns[sourceIndex],
79 target: movedColumns[targetIndex],
80 columns: movedColumns
81 };
82}
83
84var moveRows = function moveRows() {
85 var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
86 sourceRowId = _ref3.sourceRowId,
87 targetRowId = _ref3.targetRowId,
88 _ref3$idField = _ref3.idField,
89 idField = _ref3$idField === undefined ? 'id' : _ref3$idField;
90
91 return function (rows) {
92 var sourceIndex = (0, _findIndex5.default)(rows, _defineProperty({}, idField, sourceRowId));
93
94 if (sourceIndex < 0) {
95 return null;
96 }
97
98 var targetIndex = (0, _findIndex5.default)(rows, _defineProperty({}, idField, targetRowId));
99
100 if (targetIndex < 0) {
101 return null;
102 }
103
104 return move(rows, sourceIndex, targetIndex);
105 };
106};
107
108function move(data, sourceIndex, targetIndex) {
109 // Idea
110 // a, b, c, d, e -> move(b, d) -> a, c, d, b, e
111 // a, b, c, d, e -> move(d, a) -> d, a, b, c, e
112 // a, b, c, d, e -> move(a, d) -> b, c, d, a, e
113 var sourceItem = data[sourceIndex];
114
115 // 1. detach - a, c, d, e - a, b, c, e, - b, c, d, e
116 var ret = data.slice(0, sourceIndex).concat(data.slice(sourceIndex + 1));
117
118 // 2. attach - a, c, d, b, e - d, a, b, c, e - b, c, d, a, e
119 return ret.slice(0, targetIndex).concat([sourceItem]).concat(ret.slice(targetIndex));
120}
121
122exports.moveChildrenLabels = moveChildrenLabels;
123exports.moveLabels = moveLabels;
124exports.moveRows = moveRows;
125exports.move = move;
\No newline at end of file