@@ -4,6 +4,7 @@ import { MetadataKeyValuePair } from './MetadataKeyValuePair';
4
4
import StyledTextField from './StyledTextField' ;
5
5
import IconButton from '@mui/material/IconButton' ;
6
6
import AddIcon from '@mui/icons-material/Add' ;
7
+ import { Button , ButtonStretch , ButtonVariant } from "../../../elements" ;
7
8
8
9
export type MetadataType = 'BOOLEAN' | 'INTEGER' | 'FLOAT' | 'STRING' | 'BLOB' ;
9
10
@@ -39,20 +40,16 @@ export interface DatapointMetadataInput {
39
40
export interface MetadataKeyValueListProps {
40
41
maxHeight ?: string ;
41
42
metadataList : MetadataField [ ] ;
42
- editingEnabled : boolean ;
43
- deletionEnabled : boolean ;
44
43
onDeleteHandler ?: ( keyName : string ) => void ;
45
- onChangeHandler ?: ( metadataList : DatapointMetadataInput [ ] ) => void ;
44
+ onSaveHandler ?: ( metadataList : DatapointMetadataInput [ ] ) => void ;
46
45
validateValueByType ?: ( valueType : MetadataType , value : string ) => boolean ;
47
46
}
48
47
49
48
export function MetadataKeyValueList ( {
50
49
maxHeight,
51
50
metadataList,
52
- editingEnabled,
53
- deletionEnabled,
54
51
onDeleteHandler,
55
- onChangeHandler ,
52
+ onSaveHandler ,
56
53
validateValueByType,
57
54
} : MetadataKeyValueListProps ) {
58
55
//Todo:
@@ -100,9 +97,6 @@ export function MetadataKeyValueList({
100
97
setShouldScrollToBottom ( false ) ; //turn it off after scrolling
101
98
}
102
99
setAutoFocusNewlyCreatedFieldKey ( true ) ; //highlight again when the user adds new field
103
-
104
- ! ! onChangeHandler && onChangeHandler ( convertNewMetadataFieldToDatapointMetadataInput ( temporaryMetadataList ) ) ;
105
-
106
100
} , [ temporaryMetadataList ] ) ;
107
101
108
102
useEffect ( ( ) => {
@@ -202,14 +196,14 @@ export function MetadataKeyValueList({
202
196
isAutoGenerated ?: boolean ;
203
197
isNewlyCreated ?: boolean ;
204
198
} ) => {
205
- if ( editingEnabled && metadataField . isNewlyCreated ) {
206
- //it should always be possible to delete newly created fields
207
- return true ;
208
- }
209
- if ( editingEnabled && deletionEnabled && ! ! onDeleteHandler && ! metadataField . isAutoGenerated ) {
210
- //logic for pre-existing fields
211
- return true ;
212
- }
199
+ if ( ! ! onSaveHandler && metadataField . isNewlyCreated ) {
200
+ //it should always be possible to delete newly created fields, even if deletion is not enabled
201
+ return true ;
202
+ }
203
+ if ( ! ! onDeleteHandler && ! metadataField . isAutoGenerated ) {
204
+ //logic for pre-existing fields
205
+ return true ;
206
+ }
213
207
return false ;
214
208
} ;
215
209
@@ -240,7 +234,7 @@ export function MetadataKeyValueList({
240
234
index = { index }
241
235
keyName = { metadataField . key }
242
236
value = { String ( metadataField . value ) }
243
- isEditable = { editingEnabled && ! metadataField . isAutoGenerated }
237
+ isEditable = { ! ! onSaveHandler && ! metadataField . isAutoGenerated }
244
238
description = { metadataField . isAutoGenerated ? 'Auto-generated' : undefined }
245
239
isRemovable = { checkIfPairIsRemovable ( metadataField ) }
246
240
saveKeyNameLocally = { locallyEditKeyAtIndex }
@@ -257,8 +251,8 @@ export function MetadataKeyValueList({
257
251
/>
258
252
) ) }
259
253
</ Box >
260
- { editingEnabled && (
261
- < StyledTextField
254
+ { ! ! onSaveHandler && (
255
+ < > < StyledTextField
262
256
onClick = { handleAddNew }
263
257
sx = { {
264
258
borderBottom : '1px solid #E2E8F0' ,
@@ -276,8 +270,33 @@ export function MetadataKeyValueList({
276
270
) ,
277
271
} }
278
272
value = { 'Add new' }
273
+ /> < Box
274
+ sx = { {
275
+ padding : '16px' ,
276
+ display : 'flex' ,
277
+ width : '100%' ,
278
+ gap : '8px' ,
279
+ justifyContent : 'flex-end' ,
280
+ } }
281
+ >
282
+ < Button
283
+ variant = { ButtonVariant . Secondary }
284
+ style = { { borderRadius : '8px' } }
285
+ label = { 'Cancel' }
286
+ stretch = { ButtonStretch . Slim }
287
+ onClick = { ( ) => {
288
+ // onResetChanges();
289
+ //Todo: implement
290
+ } }
291
+ />
292
+ < Button
293
+ style = { { borderRadius : '8px' } }
294
+ label = { 'Save' }
295
+ stretch = { ButtonStretch . Slim }
296
+ disabled = { false } //Todo
297
+ onClick = { ( ) => { onSaveHandler ( convertNewMetadataFieldToDatapointMetadataInput ( temporaryMetadataList ) ) } }
279
298
/>
280
- ) }
299
+ </ Box > </ > ) }
281
300
</ Box >
282
301
) ;
283
302
}
0 commit comments