@lemon-fe/kits 1.0.0-57 → 1.0.0-58

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.
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import type { ICellEditorReactComp } from '@ag-grid-community/react';
3
3
  import type { ICellEditorParams } from '@ag-grid-community/core';
4
- export interface NumberEditorParams {
4
+ export interface NumberEditorParams<TData = any> {
5
5
  disabled?: boolean;
6
6
  /**
7
7
  * @description 最小值
@@ -15,14 +15,17 @@ export interface NumberEditorParams {
15
15
  * @description 空值
16
16
  */
17
17
  emptyValue?: number;
18
- /**
19
- * @description 当值不合理时,不修改单元格
20
- */
21
- undoWhenError?: boolean;
22
18
  /**
23
19
  * @description 精度
24
20
  */
25
21
  precision?: number;
22
+ /**
23
+ * 可以在不使用min或者max的情况下,进行数值校验,可以用于错误提示
24
+ * @param newValue
25
+ * @param data
26
+ * @returns
27
+ */
28
+ isCancelAfterEnd?: (newValue: number, data: TData) => boolean;
26
29
  }
27
- declare const _default: React.ForwardRefExoticComponent<ICellEditorParams<any, any> & NumberEditorParams & React.RefAttributes<ICellEditorReactComp>>;
30
+ declare const _default: React.ForwardRefExoticComponent<ICellEditorParams<any, any> & NumberEditorParams<any> & React.RefAttributes<ICellEditorReactComp>>;
28
31
  export default _default;
@@ -10,7 +10,7 @@ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Sy
10
10
 
11
11
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
12
12
 
13
- import React, { useEffect, useRef } from 'react';
13
+ import React, { useEffect, useMemo, useRef } from 'react';
14
14
  import { forwardRef, useImperativeHandle, useState } from 'react';
15
15
  import EditorWrapper from "./Wrapper";
16
16
  import { editorPrefixClass } from "./utils";
@@ -22,10 +22,11 @@ export default /*#__PURE__*/forwardRef(function NumberEditor(props, ref) {
22
22
  _props$max = props.max,
23
23
  max = _props$max === void 0 ? 99999999 : _props$max,
24
24
  emptyValue = props.emptyValue,
25
- undoWhenError = props.undoWhenError,
26
25
  disabled = props.disabled,
27
26
  api = props.api,
28
- precision = props.precision;
27
+ precision = props.precision,
28
+ _isCancelAfterEnd = props.isCancelAfterEnd,
29
+ data = props.data;
29
30
 
30
31
  var _useState = useState((_props$value = props.value) !== null && _props$value !== void 0 ? _props$value : null),
31
32
  _useState2 = _slicedToArray(_useState, 2),
@@ -40,9 +41,8 @@ export default /*#__PURE__*/forwardRef(function NumberEditor(props, ref) {
40
41
  (_elm$current = elm.current) === null || _elm$current === void 0 ? void 0 : _elm$current.select();
41
42
  }, []);
42
43
 
43
- var getValue = function getValue() {
44
+ var getFormatedValue = function getFormatedValue() {
44
45
  var val;
45
- var error = false;
46
46
 
47
47
  if (value === '' || value === null) {
48
48
  val = emptyValue !== null && emptyValue !== void 0 ? emptyValue : null;
@@ -54,31 +54,40 @@ export default /*#__PURE__*/forwardRef(function NumberEditor(props, ref) {
54
54
  }
55
55
  }
56
56
 
57
- if (val === null) {
58
- error = true;
59
- } else if (val < min) {
60
- error = true;
61
- val = min;
62
- } else if (val > max) {
63
- error = true;
64
- val = max;
65
- }
66
-
67
- if (error && undoWhenError) {
68
- return props.value;
69
- }
70
-
71
57
  return val;
72
58
  };
73
59
 
74
60
  useImperativeHandle(ref, function () {
75
61
  return {
76
- getValue: getValue,
62
+ getValue: function getValue() {
63
+ return getFormatedValue();
64
+ },
77
65
  isCancelAfterEnd: function isCancelAfterEnd() {
78
- return !dirty.current;
66
+ if (!dirty.current) {
67
+ return true;
68
+ }
69
+
70
+ var val = getFormatedValue();
71
+
72
+ if (val === null || val < min || val > max) {
73
+ return true;
74
+ }
75
+
76
+ if (_isCancelAfterEnd !== undefined) {
77
+ return _isCancelAfterEnd(val, data);
78
+ }
79
+
80
+ return false;
79
81
  }
80
82
  };
81
83
  });
84
+ var text = useMemo(function () {
85
+ if (precision !== undefined && typeof value === 'number') {
86
+ return Math.round(value * Math.pow(10, precision)) / Math.pow(10, precision);
87
+ }
88
+
89
+ return value !== null && value !== void 0 ? value : '';
90
+ }, [value, precision]);
82
91
  return /*#__PURE__*/React.createElement(EditorWrapper, {
83
92
  onKeyDown: function onKeyDown(e) {
84
93
  if (e.key === 'Enter') {
@@ -90,7 +99,7 @@ export default /*#__PURE__*/forwardRef(function NumberEditor(props, ref) {
90
99
  disabled: disabled,
91
100
  className: editorPrefixClass('text'),
92
101
  ref: elm,
93
- value: value !== null && value !== void 0 ? value : '',
102
+ value: text,
94
103
  onChange: function onChange(event) {
95
104
  dirty.current = true;
96
105
  setValue(event.target.value);
@@ -9,7 +9,7 @@ export declare class RowEditorData<T> {
9
9
  }
10
10
  export interface RowEditorParams<T = any, K = any> {
11
11
  suppressEnterEvent?: boolean;
12
- isCancelAfterEnd?: (prevValue: T, nextValue: T) => boolean;
12
+ isCancelAfterEnd?: (newValue: T, data: T) => boolean;
13
13
  render: (val: K, data: T, params: ICellEditorParams<T, K> & {
14
14
  ref: MutableRefObject<{
15
15
  select?: () => void;
@@ -78,7 +78,7 @@ export default /*#__PURE__*/forwardRef(function RowEditor(props, ref) {
78
78
  var prevValue = props.value;
79
79
  var nextValue = prevValue;
80
80
 
81
- if (field === undefined || value === data || isCancelAfterEnd !== undefined && isCancelAfterEnd(data, _objectSpread(_objectSpread({}, data), value))) {
81
+ if (field === undefined || value === data || isCancelAfterEnd !== undefined && isCancelAfterEnd(_objectSpread(_objectSpread({}, data), value), data)) {
82
82
  return prevValue;
83
83
  }
84
84
 
@@ -23,7 +23,7 @@ interface EditorParamsType<T extends string, K extends Record<string, any>> {
23
23
  params?: K;
24
24
  component?: string;
25
25
  }
26
- declare type EditorType<TData> = EditorParamsType<'text-editor', TextEditorParams> | EditorParamsType<'number-editor', NumberEditorParams> | EditorParamsType<'date-editor', DateEditorParams> | EditorParamsType<'select-editor', SelectEditorParams> | EditorParamsType<'row-editor', RowEditorParams<TData>>;
26
+ declare type EditorType<TData> = EditorParamsType<'text-editor', TextEditorParams> | EditorParamsType<'number-editor', NumberEditorParams<TData>> | EditorParamsType<'date-editor', DateEditorParams> | EditorParamsType<'select-editor', SelectEditorParams> | EditorParamsType<'row-editor', RowEditorParams<TData>>;
27
27
  export interface ColType<TData> extends Omit<ColDef<TData>, 'editable'> {
28
28
  title?: ReactNode | ((params: IHeaderParams) => ReactNode);
29
29
  dataIndex?: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lemon-fe/kits",
3
- "version": "1.0.0-57",
3
+ "version": "1.0.0-58",
4
4
  "scripts": {
5
5
  "start": "dumi dev",
6
6
  "docs:build": "dumi build",