1- import { default as Input } from "antd/es/input" ;
1+ import { default as InputNumber } from "antd/es/input-number " ;
22import { NumberControl , StringControl } from "comps/controls/codeControl" ;
33import { BoolControl } from "comps/controls/boolControl" ;
44import { trans } from "i18n" ;
55import { ColumnTypeCompBuilder , ColumnTypeViewFn } from "../columnTypeCompBuilder" ;
66import { ColumnValueTooltip } from "../simpleColumnTypeComps" ;
7+ import { withDefault } from "comps/generators" ;
8+ import styled from "styled-components" ;
9+
10+ const InputNumberWrapper = styled . div `
11+ .ant-input-number {
12+ width: 100%;
13+ border-radius: 0;
14+ background: transparent !important;
15+ padding: 0 !important;
16+ box-shadow: none;
17+
18+ input {
19+ padding: 0;
20+ border-radius: 0;
21+ }
22+ }
23+ ` ;
724
825const childrenMap = {
926 text : NumberControl ,
27+ step : withDefault ( NumberControl , 1 ) ,
1028 float : BoolControl ,
1129 prefix : StringControl ,
1230 suffix : StringControl ,
1331} ;
1432
1533let float = false ;
34+ let step = 1 ;
1635const getBaseValue : ColumnTypeViewFn < typeof childrenMap , number , number > = (
1736 props
1837) => {
@@ -24,6 +43,7 @@ export const ColumnNumberComp = (function () {
2443 childrenMap ,
2544 ( props , dispatch ) => {
2645 float = props . float ;
46+ step = props . step ;
2747 const value = ! float ? Math . floor ( props . changeValue ?? getBaseValue ( props , dispatch ) ) : props . changeValue ?? getBaseValue ( props , dispatch ) ;
2848 return props . prefix + value + props . suffix ;
2949 } ,
@@ -32,18 +52,20 @@ export const ColumnNumberComp = (function () {
3252 )
3353 . setEditViewFn ( ( props ) => {
3454 return (
35- < Input
36- type = "number"
37- step = { float ?"0.01" : "1" }
38- defaultValue = { props . value }
39- autoFocus
40- bordered = { false }
41- onChange = { ( e ) => {
42- props . onChange ( ! float ? Math . floor ( e . target . valueAsNumber ) : e . target . valueAsNumber ) ;
43- } }
44- onBlur = { props . onChangeEnd }
45- onPressEnter = { props . onChangeEnd }
46- />
55+ < InputNumberWrapper >
56+ < InputNumber
57+ step = { step }
58+ defaultValue = { props . value }
59+ autoFocus
60+ bordered = { false }
61+ onChange = { ( value ) => {
62+ value = value ?? 0 ;
63+ props . onChange ( ! float ? Math . floor ( value ) : value ) ;
64+ } }
65+ onBlur = { props . onChangeEnd }
66+ onPressEnter = { props . onChangeEnd }
67+ />
68+ </ InputNumberWrapper >
4769 ) } )
4870 . setPropertyViewFn ( ( children ) => {
4971 return (
@@ -52,17 +74,31 @@ export const ColumnNumberComp = (function () {
5274 label : trans ( "table.columnValue" ) ,
5375 tooltip : ColumnValueTooltip ,
5476 } ) }
77+ { children . step . propertyView ( {
78+ label : trans ( "table.numberStep" ) ,
79+ tooltip : trans ( "table.numberStepTooltip" ) ,
80+ onFocus : ( focused ) => {
81+ if ( ! focused ) {
82+ const value = children . step . getView ( ) ;
83+ const isFloat = children . float . getView ( ) ;
84+ const newValue = ! isFloat ? Math . floor ( value ) : value ;
85+ children . step . dispatchChangeValueAction ( String ( newValue ) ) ;
86+ }
87+ }
88+ } ) }
5589 { children . prefix . propertyView ( {
5690 label : trans ( "table.prefix" ) ,
57- // tooltip: ColumnValueTooltip,
5891 } ) }
5992 { children . suffix . propertyView ( {
6093 label : trans ( "table.suffix" ) ,
61- // tooltip: ColumnValueTooltip,
6294 } ) }
6395 { children . float . propertyView ( {
6496 label : trans ( "table.float" ) ,
65- // tooltip: ColumnValueTooltip,
97+ onChange : ( isFloat ) => {
98+ const value = children . step . getView ( ) ;
99+ const newValue = ! isFloat ? Math . floor ( value ) : value ;
100+ children . step . dispatchChangeValueAction ( String ( newValue ) ) ;
101+ }
66102 } ) }
67103 </ >
68104 ) ;
0 commit comments