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

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
 
@@ -46,7 +46,7 @@ export default class DataGrid<TData> extends Component<DataGridProps<TData>, Dat
46
46
  static Editors: {
47
47
  Text: React.ForwardRefExoticComponent<import("@ag-grid-community/core").ICellEditorParams<any, any> & import("./typings").TextEditorParams & React.RefAttributes<import("@ag-grid-community/react").ICellEditorReactComp>>;
48
48
  Date: React.ForwardRefExoticComponent<import("@ag-grid-community/core").ICellEditorParams<any, any> & import("./typings").DateEditorParams & React.RefAttributes<import("@ag-grid-community/react").ICellEditorReactComp>>;
49
- Number: React.ForwardRefExoticComponent<import("@ag-grid-community/core").ICellEditorParams<any, any> & import("./typings").NumberEditorParams & React.RefAttributes<import("@ag-grid-community/react").ICellEditorReactComp>>;
49
+ Number: React.ForwardRefExoticComponent<import("@ag-grid-community/core").ICellEditorParams<any, any> & import("./typings").NumberEditorParams<any> & React.RefAttributes<import("@ag-grid-community/react").ICellEditorReactComp>>;
50
50
  Select: React.ForwardRefExoticComponent<import("@ag-grid-community/core").ICellEditorParams<any, any> & Pick<import("antd").SelectProps<any, import("antd/lib/select").BaseOptionType>, "disabled" | "mode" | "allowClear" | "options" | "virtual" | "showSearch" | "listHeight"> & {
51
51
  fieldNames?: {
52
52
  label: string;
@@ -582,13 +582,18 @@ var DataGrid = /*#__PURE__*/function (_Component) {
582
582
 
583
583
  if (_typeof(editable) === 'object') {
584
584
  var renderer = editable.renderer,
585
- valueSetter = editable.valueSetter;
585
+ valueSetter = editable.valueSetter,
586
+ enable = editable.enable;
586
587
 
587
588
  _opts.editable = function (mParams) {
588
589
  if (mParams.node.isRowPinned()) {
589
590
  return false;
590
591
  }
591
592
 
593
+ if (enable !== undefined) {
594
+ return enable(mParams);
595
+ }
596
+
592
597
  return true;
593
598
  };
594
599
 
@@ -1,5 +1,5 @@
1
1
  import type { AgGridReactProps } from '@ag-grid-community/react';
2
- import type { ColDef, ColGroupDef, ICellEditorParams, ICellRendererParams, IHeaderParams } from '@ag-grid-community/core';
2
+ import type { ColDef, ColGroupDef, EditableCallbackParams, ICellEditorParams, ICellRendererParams, IHeaderParams } from '@ag-grid-community/core';
3
3
  import type { RuleItem } from 'async-validator/dist-types/interface';
4
4
  import type { ReactElement, ReactNode } from 'react';
5
5
  import type { TextEditorParams } from './cell-editors/Text';
@@ -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;
@@ -40,6 +40,7 @@ export interface ColType<TData> extends Omit<ColDef<TData>, 'editable'> {
40
40
  * @description 可编辑单元格
41
41
  */
42
42
  editable?: {
43
+ enable?: (params: EditableCallbackParams<TData>) => boolean;
43
44
  rules?: ValidateRule<TData>[];
44
45
  valueSetter?: (val: any, data: TData) => Partial<TData>;
45
46
  renderer: EditorType<TData> | ((params: ICellEditorParams<TData>) => EditorType<TData>);
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-59",
4
4
  "scripts": {
5
5
  "start": "dumi dev",
6
6
  "docs:build": "dumi build",