@lemon-fe/components 1.4.5 → 1.4.7-alpha.0

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.
@@ -3,11 +3,16 @@ import React from 'react';
3
3
  import type { ICellEditorParams } from 'ag-grid-community';
4
4
  import type { ICellEditorReactComp } from 'ag-grid-react';
5
5
  export declare class RowEditorData<T> {
6
- private data;
7
- constructor(data: T);
8
- getValue(): T;
6
+ data: T;
7
+ mode?: RowUpdateMode;
8
+ constructor(data: T, mode?: RowUpdateMode);
9
9
  }
10
- export declare type RowEditorActionType = 'stop' | 'next';
10
+ export declare type RowUpdateMode = 'replace' | 'merge';
11
+ export declare type RowEditorActionType = 'stop' | 'next' | {
12
+ /** 此次修改是整行数据替换还是合并,默认是合并 */
13
+ updateMode?: RowUpdateMode;
14
+ action?: 'stop' | 'next';
15
+ };
11
16
  export interface RowEditorParams<T = any, K = any> {
12
17
  suppressEnterEvent?: boolean;
13
18
  isCancelAfterEnd?: (newValue: T, data: T) => boolean;
@@ -7,31 +7,24 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
7
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
8
  function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
9
9
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
10
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
11
10
  function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
12
11
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
12
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
13
13
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
14
14
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
15
15
  function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
16
- import React, { useEffect, useRef } from 'react';
16
+ import React, { useCallback, useEffect, useRef } from 'react';
17
17
  import { forwardRef, useImperativeHandle, useState } from 'react';
18
18
  import { useGridStore } from "../hooks";
19
19
  import EditorWrapper from "./wrapper";
20
20
  import { get } from 'lodash';
21
- export var RowEditorData = /*#__PURE__*/function () {
22
- function RowEditorData(data) {
23
- _classCallCheck(this, RowEditorData);
24
- _defineProperty(this, "data", void 0);
25
- this.data = data;
26
- }
27
- _createClass(RowEditorData, [{
28
- key: "getValue",
29
- value: function getValue() {
30
- return this.data;
31
- }
32
- }]);
33
- return RowEditorData;
34
- }();
21
+ export var RowEditorData = /*#__PURE__*/_createClass(function RowEditorData(data, mode) {
22
+ _classCallCheck(this, RowEditorData);
23
+ _defineProperty(this, "data", void 0);
24
+ _defineProperty(this, "mode", void 0);
25
+ this.data = data;
26
+ this.mode = mode;
27
+ });
35
28
  export default /*#__PURE__*/forwardRef(function RowEditor(props, ref) {
36
29
  var api = props.api,
37
30
  suppressEnterEvent = props.suppressEnterEvent,
@@ -49,14 +42,23 @@ export default /*#__PURE__*/forwardRef(function RowEditor(props, ref) {
49
42
  _useState2 = _slicedToArray(_useState, 2),
50
43
  prevValue = _useState2[0],
51
44
  setPrevValue = _useState2[1];
52
- var _useState3 = useState(data),
45
+ var _useState3 = useState({
46
+ value: data
47
+ }),
53
48
  _useState4 = _slicedToArray(_useState3, 2),
54
- value = _useState4[0],
55
- setValue = _useState4[1];
49
+ result = _useState4[0],
50
+ setResult = _useState4[1];
56
51
  var context = useGridStore(function (state) {
57
52
  return state.context;
58
53
  });
54
+ var getRowData = useCallback(function (target, nodeData) {
55
+ if (target.updateMode === 'replace') {
56
+ return target.value;
57
+ }
58
+ return _objectSpread(_objectSpread({}, nodeData), target.value);
59
+ }, []);
59
60
  var elm = useRef(null);
61
+ var value = result.value;
60
62
  useEffect(function () {
61
63
  if (elm.current !== null) {
62
64
  if (elm.current.select !== undefined) {
@@ -68,7 +70,10 @@ export default /*#__PURE__*/forwardRef(function RowEditor(props, ref) {
68
70
  var handler = function handler(evt) {
69
71
  if (evt.update) {
70
72
  setPrevValue(api.getValue(column, evt.node));
71
- setValue(evt.newData);
73
+ setResult({
74
+ value: evt.newData,
75
+ updateMode: 'replace'
76
+ });
72
77
  }
73
78
  };
74
79
  node.addEventListener('dataChanged', handler);
@@ -80,7 +85,7 @@ export default /*#__PURE__*/forwardRef(function RowEditor(props, ref) {
80
85
  return {
81
86
  getValue: function getValue() {
82
87
  var nextValue = prevValue;
83
- var newData = _objectSpread(_objectSpread({}, data), value);
88
+ var newData = getRowData(result, data);
84
89
  if (field === undefined || value === data || isCancelAfterEnd !== undefined && isCancelAfterEnd(newData, data)) {
85
90
  return prevValue;
86
91
  }
@@ -90,15 +95,27 @@ export default /*#__PURE__*/forwardRef(function RowEditor(props, ref) {
90
95
  if (nextValue == prevValue) {
91
96
  return prevValue;
92
97
  }
93
- return new RowEditorData(value);
98
+ return new RowEditorData(value, result.updateMode);
94
99
  }
95
100
  };
96
101
  });
97
102
  var handleChange = function handleChange(val, action) {
98
- setValue(val);
99
- if (action !== undefined) {
103
+ var finishAction;
104
+ if (_typeof(action) === 'object') {
105
+ setResult({
106
+ value: val,
107
+ updateMode: action.updateMode
108
+ });
109
+ finishAction = action.action;
110
+ } else {
111
+ setResult({
112
+ value: val
113
+ });
114
+ finishAction = action;
115
+ }
116
+ if (finishAction !== undefined) {
100
117
  requestAnimationFrame(function () {
101
- switch (action) {
118
+ switch (finishAction) {
102
119
  case 'stop':
103
120
  stopEditing();
104
121
  break;
@@ -114,7 +131,7 @@ export default /*#__PURE__*/forwardRef(function RowEditor(props, ref) {
114
131
  api.tabToNextCell();
115
132
  }
116
133
  }
117
- }, render(field ? get(value, field) : prevValue, value === data ? data : _objectSpread(_objectSpread({}, data), value), _objectSpread(_objectSpread({}, props), {}, {
134
+ }, render(field ? get(value, field) : prevValue, value === data ? data : getRowData(result, data), _objectSpread(_objectSpread({}, props), {}, {
118
135
  context: context,
119
136
  ref: elm,
120
137
  onChange: handleChange
@@ -1031,8 +1031,9 @@ var InternalDataGrid = /*#__PURE__*/function (_Component) {
1031
1031
  var colField = mParams.colDef.field,
1032
1032
  data = mParams.data,
1033
1033
  newValue = mParams.newValue,
1034
- oldValue = mParams.oldValue;
1035
- if (!colField || newValue === oldValue) {
1034
+ oldValue = mParams.oldValue,
1035
+ node = mParams.node;
1036
+ if (!colField || newValue === oldValue || node === null || node === undefined) {
1036
1037
  return false;
1037
1038
  }
1038
1039
  if (valueSetter !== undefined) {
@@ -1040,7 +1041,12 @@ var InternalDataGrid = /*#__PURE__*/function (_Component) {
1040
1041
  set(data, colField, newValue);
1041
1042
  Object.assign(data, _result);
1042
1043
  } else if (newValue instanceof RowEditorData) {
1043
- Object.assign(data, newValue.getValue());
1044
+ if (newValue.mode === 'replace') {
1045
+ Object.keys(data).forEach(function (key) {
1046
+ set(data, key, undefined);
1047
+ });
1048
+ }
1049
+ Object.assign(data, newValue.data);
1044
1050
  } else {
1045
1051
  set(data, colField, newValue);
1046
1052
  }
@@ -1198,6 +1204,26 @@ var InternalDataGrid = /*#__PURE__*/function (_Component) {
1198
1204
  return params.value;
1199
1205
  };
1200
1206
  }
1207
+ fieldCol.comparator = function (valueA, valueB) {
1208
+ var convertToNumber = function convertToNumber(value) {
1209
+ if (BigNumber.isBigNumber(value)) {
1210
+ return value.toNumber();
1211
+ }
1212
+ if (typeof value === 'string') {
1213
+ var numValue = parseFloat(value.replace(/,/g, ''));
1214
+ if (!isNaN(numValue)) {
1215
+ return numValue;
1216
+ }
1217
+ }
1218
+ return value;
1219
+ };
1220
+ var numericValueA = convertToNumber(valueA);
1221
+ var numericValueB = convertToNumber(valueB);
1222
+ if (isNaN(numericValueA) || isNaN(numericValueB)) {
1223
+ return ('' + valueA).localeCompare('' + valueB);
1224
+ }
1225
+ return numericValueA - numericValueB;
1226
+ };
1201
1227
  result.push(fieldCol);
1202
1228
  });
1203
1229
  if (rowSelection !== undefined) {
@@ -446,7 +446,8 @@
446
446
  }
447
447
 
448
448
  .ag-cell-focus & {
449
- padding: 0 2px;
449
+ padding: 2px;
450
+ line-height: ~'calc(min(var(--ag-internal-calculated-line-height), var(--ag-internal-padded-row-height)) - 4px)';
450
451
  }
451
452
 
452
453
  &-text {
@@ -33,7 +33,7 @@ import Modal from "../modal";
33
33
  import Select from "../select";
34
34
  import { mergeProp, prefixClassName } from "../utils";
35
35
  import FieldsConfig from "./fields-config";
36
- import { useRequest, useUpdateEffect } from '@lemon-fe/hooks';
36
+ import { useDebounce, useRequest, useUpdateEffect } from '@lemon-fe/hooks';
37
37
  import classNames from 'classnames';
38
38
  import ResizeObserver from 'rc-resize-observer';
39
39
  var getInitComponents = function getInitComponents(locale) {
@@ -497,6 +497,12 @@ function Filter(originalProps) {
497
497
  handleFinish(form.getFieldsValue(), 'reset');
498
498
  }
499
499
  };
500
+ var handleSubmit = useDebounce(function (val) {
501
+ return handleFinish(val, 'submit');
502
+ }, 1000, {
503
+ leading: true,
504
+ trailing: false
505
+ });
500
506
  var handleChangeFields = useCallback(function (newFields) {
501
507
  var next = _toConsumableArray(tabs);
502
508
  next[active] = _objectSpread(_objectSpread({}, next[active]), {}, {
@@ -687,9 +693,7 @@ function Filter(originalProps) {
687
693
  autoFocus: true
688
694
  })))), /*#__PURE__*/React.createElement(Form, {
689
695
  initialValues: defaultValue,
690
- onFinish: function onFinish(val) {
691
- return handleFinish(val, 'submit');
692
- },
696
+ onFinish: handleSubmit,
693
697
  form: form,
694
698
  style: {
695
699
  position: 'relative'
@@ -12,5 +12,5 @@ declare const Modal: Pick<React.FC<AntdModalProps> & import("antd/lib/modal/conf
12
12
  useModal: typeof import("antd/lib/modal/useModal").default;
13
13
  destroyAll: () => void;
14
14
  config: typeof import("antd/lib/modal/confirm").modalGlobalConfig;
15
- }, "success" | "error" | "warning" | "info" | "warn" | "confirm" | "useModal" | "config" | "destroyAll"> & typeof LemonModal;
15
+ }, "warning" | "error" | "success" | "info" | "warn" | "confirm" | "useModal" | "destroyAll" | "config"> & typeof LemonModal;
16
16
  export default Modal;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lemon-fe/components",
3
- "version": "1.4.5",
3
+ "version": "1.4.7-alpha.0",
4
4
  "description": "> TODO: description",
5
5
  "homepage": "",
6
6
  "license": "MIT",
@@ -58,5 +58,5 @@
58
58
  "publishConfig": {
59
59
  "registry": "https://registry.npmjs.org"
60
60
  },
61
- "gitHead": "cf78266942bbaffd2c608e32e7e591067abd71df"
61
+ "gitHead": "09e7aef5d176eb8495585b67e3eb807ff43116b0"
62
62
  }