@lemon-fe/kits 1.0.0-67 → 1.0.0-68

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.
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import { type Selection } from '../utils';
3
+ declare const _default: React.NamedExoticComponent<{
4
+ selection: Selection<any>;
5
+ onClear: () => void;
6
+ }>;
7
+ export default _default;
@@ -0,0 +1,32 @@
1
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
+
3
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
4
+
5
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
6
+
7
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
8
+
9
+ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
10
+
11
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
12
+
13
+ import React, { useEffect, useState, memo } from 'react';
14
+ import { prefix } from "../utils";
15
+ export default /*#__PURE__*/memo(function Selected(props) {
16
+ var selection = props.selection,
17
+ onClear = props.onClear;
18
+
19
+ var _useState = useState(selection.getKeys()),
20
+ _useState2 = _slicedToArray(_useState, 2),
21
+ keys = _useState2[0],
22
+ setKeys = _useState2[1];
23
+
24
+ useEffect(function () {
25
+ return selection.listen(setKeys);
26
+ }, []);
27
+ return /*#__PURE__*/React.createElement("span", {
28
+ className: prefix('selected')
29
+ }, "\u5DF2\u9009", keys.length, "\u6761 ", /*#__PURE__*/React.createElement("a", {
30
+ onClick: onClear
31
+ }, "\u6E05\u7A7A\u5DF2\u9009"));
32
+ });
@@ -91,7 +91,7 @@ export default class DataGrid<TData extends Record<string, any>> extends Compone
91
91
  private blurTimer;
92
92
  private handleBlur;
93
93
  private handleFocus;
94
- private unsort;
94
+ private handleClearSelected;
95
95
  private getMemoizedDefaultColDef;
96
96
  private getMemoizedColumnTypes;
97
97
  private getMemoizedComponents;
@@ -89,6 +89,7 @@ import SelectEditor from "./cell-editors/Select";
89
89
  import RowEditor, { RowEditorData } from "./cell-editors/Row";
90
90
  import EditorWrapper from "./cell-editors/Wrapper";
91
91
  import memoizeOne from 'memoize-one';
92
+ import Selected from "./components/Selected";
92
93
  ModuleRegistry.registerModules([ClientSideRowModelModule, RowGroupingModule, InfiniteRowModelModule, ClipboardModule, MenuModule, SideBarModule, ColumnsToolPanelModule], false);
93
94
  var defaultColDef = {
94
95
  resizable: true,
@@ -104,6 +105,10 @@ var defaultComponents = {
104
105
  'row-editor': RowEditor
105
106
  };
106
107
 
108
+ function unsort() {
109
+ return 0;
110
+ }
111
+
107
112
  var DataGrid = /*#__PURE__*/function (_Component) {
108
113
  _inherits(DataGrid, _Component);
109
114
 
@@ -293,13 +298,21 @@ var DataGrid = /*#__PURE__*/function (_Component) {
293
298
  }
294
299
  });
295
300
 
296
- _defineProperty(_assertThisInitialized(_this), "unsort", function () {
297
- return 0;
301
+ _defineProperty(_assertThisInitialized(_this), "handleClearSelected", function () {
302
+ _this.selected.clear();
303
+
304
+ _this.api.getSelectedNodes().forEach(function (node) {
305
+ node.setSelected(false, false, true);
306
+ });
307
+
308
+ _this.api.dispatchEvent({
309
+ type: 'selectionChanged'
310
+ });
298
311
  });
299
312
 
300
313
  _defineProperty(_assertThisInitialized(_this), "getMemoizedDefaultColDef", memoizeOne(function (defaultColDefProp) {
301
314
  return _objectSpread(_objectSpread({
302
- comparator: _this.isClientMode() ? undefined : _this.unsort
315
+ comparator: _this.isClientMode() ? undefined : unsort
303
316
  }, defaultColDef), defaultColDefProp);
304
317
  }));
305
318
 
@@ -1112,6 +1125,7 @@ var DataGrid = /*#__PURE__*/function (_Component) {
1112
1125
  total = _this$state2.total,
1113
1126
  loading = _this$state2.loading;
1114
1127
  var mPage = _typeof(pagination) === 'object' ? pagination : {};
1128
+ var enableSelection = rowSelection !== undefined;
1115
1129
  return /*#__PURE__*/React.createElement(GridStoreContext.Provider, {
1116
1130
  value: this.store
1117
1131
  }, /*#__PURE__*/React.createElement("div", {
@@ -1144,13 +1158,16 @@ var DataGrid = /*#__PURE__*/function (_Component) {
1144
1158
  getRowId: this.getRowId,
1145
1159
  onGridReady: this.init,
1146
1160
  context: context,
1147
- rowSelection: rowSelection !== undefined ? rowSelection.type !== 'radio' ? 'multiple' : 'single' : undefined,
1161
+ rowSelection: enableSelection ? rowSelection.type !== 'radio' ? 'multiple' : 'single' : undefined,
1148
1162
  components: this.getMemoizedComponents(componentsProp),
1149
1163
  defaultColDef: this.getMemoizedDefaultColDef(defaultColDefProp),
1150
1164
  columnTypes: this.getMemoizedColumnTypes(columnTypesProp)
1151
1165
  })), /*#__PURE__*/React.createElement("div", {
1152
1166
  className: prefix('bottom')
1153
- }, /*#__PURE__*/React.createElement("div", null), enablePagination && /*#__PURE__*/React.createElement(Pagination, _extends({
1167
+ }, /*#__PURE__*/React.createElement("div", null, enableSelection ? /*#__PURE__*/React.createElement(Selected, {
1168
+ selection: this.selected,
1169
+ onClear: this.handleClearSelected
1170
+ }) : null), enablePagination && /*#__PURE__*/React.createElement(Pagination, _extends({
1154
1171
  size: "small",
1155
1172
  showPrevNextJumpers: true,
1156
1173
  showSizeChanger: true,
@@ -30,11 +30,20 @@
30
30
 
31
31
  &-bottom {
32
32
  display: flex;
33
+ align-items: center;
33
34
  justify-content: space-between;
34
35
  margin-top: @space-v;
35
36
  background-color: var(--ag-background-color);
36
37
  }
37
38
 
39
+ &-selected {
40
+ color: #a5a5a5;
41
+
42
+ a {
43
+ margin-left: @space-h;
44
+ }
45
+ }
46
+
38
47
  &-operator {
39
48
  position: absolute;
40
49
  top: 4px;
@@ -31,15 +31,19 @@ export declare class Selection<T> {
31
31
  private record;
32
32
  private keys;
33
33
  private dirty;
34
+ private observers;
34
35
  constructor(keys?: string[]);
36
+ flush(): readonly [string[], T[]];
35
37
  get(id: string): T | undefined;
36
38
  has(id: string): boolean;
37
39
  set(id: string, data: T): void;
38
40
  delete(id: string): void;
41
+ clear(): void;
42
+ clone(data: Map<string, T>): void;
39
43
  isSameKeys(keys: string[]): boolean;
40
44
  isDirty(): boolean;
41
- flush(): readonly [string[], T[]];
45
+ getKeys(): string[];
42
46
  forEach(cb: (key: string) => void): void;
43
- clone(data: Map<string, T>): void;
47
+ listen(cb: (keys: string[]) => void): () => void;
44
48
  }
45
49
  export declare const columnTypes: Record<string, ColDef>;
@@ -137,7 +137,7 @@ export var Store = /*#__PURE__*/function () {
137
137
  }();
138
138
  export var Selection = /*#__PURE__*/function () {
139
139
  function Selection() {
140
- var keys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
140
+ var _keys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
141
141
 
142
142
  _classCallCheck(this, Selection);
143
143
 
@@ -147,13 +147,37 @@ export var Selection = /*#__PURE__*/function () {
147
147
 
148
148
  _defineProperty(this, "dirty", false);
149
149
 
150
- this.record = new Map(keys.map(function (key) {
150
+ _defineProperty(this, "observers", new Set());
151
+
152
+ this.record = new Map(_keys.map(function (key) {
151
153
  return [key, null];
152
154
  }));
153
- this.keys = keys;
155
+ this.keys = _keys;
154
156
  }
155
157
 
156
158
  _createClass(Selection, [{
159
+ key: "flush",
160
+ value: function flush() {
161
+ var _this2 = this;
162
+
163
+ var result = _toConsumableArray(this.record);
164
+
165
+ var keys = [];
166
+ var values = [];
167
+ result.forEach(function (item) {
168
+ keys.push(item[0]);
169
+ values.push(item[1]);
170
+ });
171
+ this.keys = keys;
172
+ this.dirty = false;
173
+
174
+ _toConsumableArray(this.observers).forEach(function (cb) {
175
+ return cb(_this2.keys);
176
+ });
177
+
178
+ return [keys, values];
179
+ }
180
+ }, {
157
181
  key: "get",
158
182
  value: function get(id) {
159
183
  return this.record.get(id);
@@ -175,6 +199,18 @@ export var Selection = /*#__PURE__*/function () {
175
199
  this.record.delete(id);
176
200
  this.dirty = true;
177
201
  }
202
+ }, {
203
+ key: "clear",
204
+ value: function clear() {
205
+ this.record = new Map();
206
+ this.dirty = true;
207
+ }
208
+ }, {
209
+ key: "clone",
210
+ value: function clone(data) {
211
+ this.record = data;
212
+ this.flush();
213
+ }
178
214
  }, {
179
215
  key: "isSameKeys",
180
216
  value: function isSameKeys(keys) {
@@ -190,19 +226,9 @@ export var Selection = /*#__PURE__*/function () {
190
226
  return this.dirty;
191
227
  }
192
228
  }, {
193
- key: "flush",
194
- value: function flush() {
195
- var result = _toConsumableArray(this.record);
196
-
197
- var keys = [];
198
- var values = [];
199
- result.forEach(function (item) {
200
- keys.push(item[0]);
201
- values.push(item[1]);
202
- });
203
- this.keys = keys;
204
- this.dirty = false;
205
- return [keys, values];
229
+ key: "getKeys",
230
+ value: function getKeys() {
231
+ return this.keys;
206
232
  }
207
233
  }, {
208
234
  key: "forEach",
@@ -210,10 +236,14 @@ export var Selection = /*#__PURE__*/function () {
210
236
  this.keys.forEach(cb);
211
237
  }
212
238
  }, {
213
- key: "clone",
214
- value: function clone(data) {
215
- this.record = data;
216
- this.flush();
239
+ key: "listen",
240
+ value: function listen(cb) {
241
+ var _this3 = this;
242
+
243
+ this.observers.add(cb);
244
+ return function () {
245
+ _this3.observers.delete(cb);
246
+ };
217
247
  }
218
248
  }]);
219
249
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lemon-fe/kits",
3
- "version": "1.0.0-67",
3
+ "version": "1.0.0-68",
4
4
  "scripts": {
5
5
  "start": "dumi dev",
6
6
  "docs:build": "dumi build",