11import { Button , Form , FormListFieldData } from 'antd' ;
2- import React , { memo , useLayoutEffect } from 'react' ;
2+ import { memo , useLayoutEffect } from 'react' ;
33import { useTranslation } from 'react-i18next' ;
44
55import { useShowButtons } from '../../hooks' ;
6- import { Transformations , TransformationType } from '../../types' ;
6+ import { TransformationsForm , TransformationType } from '../../types' ;
77
88import { TransformationFormItem } from './components' ;
99import { TransformationFormProps } from './types' ;
@@ -17,20 +17,24 @@ const TransformationFormComponent = <T extends TransformationType>({
1717 const { isDisplayed } = useShowButtons ( ) ;
1818
1919 const formInstance = Form . useFormInstance ( ) ;
20- const filtersValues : Transformations [ number ] [ 'filters' ] | undefined = formInstance . getFieldValue ( [
20+ const filtersValues : TransformationsForm [ T ] | undefined = formInstance . getFieldValue ( [
2121 'transformations' ,
2222 transformationType ,
2323 ] ) ;
24+ const isFilterEmpty = ! filtersValues ?. length ;
2425
2526 /** Add at least one element to array form value here,
2627 * because it is inconvenient to check for the presence of a default value of this array,
2728 * when forming a request to backend or initial form values */
2829 useLayoutEffect ( ( ) => {
29- const needFillEmpty = ! canHaveEmptyRecordsList && ! filtersValues ?. length ;
30+ const needFillEmpty = ! canHaveEmptyRecordsList && isFilterEmpty ;
3031 if ( needFillEmpty ) {
3132 formInstance . setFieldValue ( [ 'transformations' , transformationType ] , [ { } ] ) ;
3233 }
33- } , [ formInstance , filtersValues , transformationType , canHaveEmptyRecordsList ] ) ;
34+ } , [ formInstance , isFilterEmpty , transformationType , canHaveEmptyRecordsList ] ) ;
35+
36+ const isNeedShowAddNew = ( fields : FormListFieldData [ ] ) =>
37+ isDisplayed && ! ( transformationType === TransformationType . FILTER_SQL && fields . length ) ;
3438
3539 const canRemoveItem = ( { name } : FormListFieldData ) => ( name || canHaveEmptyRecordsList ) && isDisplayed ;
3640
@@ -47,9 +51,11 @@ const TransformationFormComponent = <T extends TransformationType>({
4751 key = { field . key }
4852 />
4953 ) ) }
50- < Button className = "nodrag" size = "large" type = "primary" onClick = { ( ) => add ( ) } hidden = { ! isDisplayed } >
51- { t ( 'add' ) }
52- </ Button >
54+ { isNeedShowAddNew ( fields ) && (
55+ < Button className = "nodrag" size = "large" type = "primary" onClick = { ( ) => add ( ) } >
56+ { t ( 'add' ) }
57+ </ Button >
58+ ) }
5359 </ div >
5460 ) }
5561 </ Form . List >
0 commit comments