Skip to content

Commit ea48fdc

Browse files
committed
Do not allow changes to object name for array items
1 parent 90cfdbd commit ea48fdc

File tree

3 files changed

+51
-36
lines changed

3 files changed

+51
-36
lines changed

src/formBuilder/Card.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ const useStyles = createUseStyles({
3333
width: '50%',
3434
'text-align': 'left',
3535
padding: '0.5em',
36+
'&.wide-card-entry': {
37+
width: '100%',
38+
},
3639
},
3740
'& input': {
3841
border: '1px solid gray',
@@ -103,6 +106,7 @@ export default function Card({
103106
setCardOpen,
104107
allFormInputs,
105108
mods,
109+
showObjectNameInput = true,
106110
}: {
107111
componentProps: {
108112
[string]: string | number | boolean | Array<string | number>,
@@ -121,6 +125,7 @@ export default function Card({
121125
setCardOpen: (newState: boolean) => void,
122126
mods?: Mods,
123127
allFormInputs: { [string]: FormInput },
128+
showObjectNameInput?: boolean,
124129
}) {
125130
const classes = useStyles();
126131
const [modalOpen, setModalOpen] = React.useState(false);
@@ -191,6 +196,7 @@ export default function Card({
191196
onChange={onChange}
192197
allFormInputs={allFormInputs}
193198
mods={mods}
199+
showObjectNameInput={showObjectNameInput}
194200
/>
195201
</div>
196202
<div className={classes.cardInteractions}>

src/formBuilder/CardGeneralParameterInputs.js

Lines changed: 40 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import React from 'react';
44
import Select from 'react-select';
55
import { Input } from 'reactstrap';
6+
import classnames from 'classnames';
67
import GeneralParameterInputs from './GeneralParameterInputs';
78
import {
89
defaultUiProps,
@@ -20,11 +21,13 @@ export default function CardGeneralParameterInputs({
2021
onChange,
2122
allFormInputs,
2223
mods,
24+
showObjectNameInput = true,
2325
}: {
2426
parameters: Parameters,
2527
onChange: (newParams: Parameters) => void,
2628
mods?: Mods,
2729
allFormInputs: { [string]: FormInput },
30+
showObjectNameInput?: boolean,
2831
}) {
2932
const [keyState, setKeyState] = React.useState(parameters.name);
3033
const [titleState, setTitleState] = React.useState(parameters.title);
@@ -62,38 +65,40 @@ export default function CardGeneralParameterInputs({
6265

6366
return (
6467
<div>
65-
<div className='card-entry'>
66-
<h5>
67-
{`${objectNameLabel} `}
68-
<Tooltip
69-
text={
70-
mods &&
71-
mods.tooltipDescriptions &&
72-
typeof mods.tooltipDescriptions.cardObjectName === 'string'
73-
? mods.tooltipDescriptions.cardObjectName
74-
: 'The back-end name of the object'
68+
{showObjectNameInput && (
69+
<div className='card-entry'>
70+
<h5>
71+
{`${objectNameLabel} `}
72+
<Tooltip
73+
text={
74+
mods &&
75+
mods.tooltipDescriptions &&
76+
typeof mods.tooltipDescriptions.cardObjectName === 'string'
77+
? mods.tooltipDescriptions.cardObjectName
78+
: 'The back-end name of the object'
79+
}
80+
id={`${(keyState: string)}_nameinfo`}
81+
type='help'
82+
/>
83+
</h5>
84+
85+
<Input
86+
value={keyState || ''}
87+
placeholder='Key'
88+
type='text'
89+
onChange={(ev: SyntheticInputEvent<HTMLInputElement>) =>
90+
setKeyState(ev.target.value.replace(/\W/g, '_'))
7591
}
76-
id={`${(keyState: string)}_nameinfo`}
77-
type='help'
92+
onBlur={(ev: SyntheticInputEvent<HTMLInputElement>) =>
93+
onChange({
94+
...parameters,
95+
name: ev.target.value,
96+
})
97+
}
98+
className='card-text'
7899
/>
79-
</h5>
80-
81-
<Input
82-
value={keyState || ''}
83-
placeholder='Key'
84-
type='text'
85-
onChange={(ev: SyntheticInputEvent<HTMLInputElement>) =>
86-
setKeyState(ev.target.value.replace(/\W/g, '_'))
87-
}
88-
onBlur={(ev: SyntheticInputEvent<HTMLInputElement>) =>
89-
onChange({
90-
...parameters,
91-
name: ev.target.value,
92-
})
93-
}
94-
className='card-text'
95-
/>
96-
</div>
100+
</div>
101+
)}
97102
<div
98103
className={`card-entry ${
99104
parameters.$ref === undefined ? '' : 'disabled-input'
@@ -154,7 +159,11 @@ export default function CardGeneralParameterInputs({
154159
className='card-text'
155160
/>
156161
</div>
157-
<div className='card-entry'>
162+
<div
163+
className={classnames('card-entry', {
164+
'wide-card-entry': !showObjectNameInput,
165+
})}
166+
>
158167
<h5>
159168
{`${inputTypeLabel} `}
160169
<Tooltip

src/formBuilder/defaults/arrayInputs.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -125,13 +125,13 @@ function getInnerCardComponent({
125125
}_issection`}
126126
/>
127127
{generateElementComponentsFromSchemas({
128-
schemaData: { properties: { Item: newDataProps.items } },
129-
uiSchemaData: { Item: newUiProps.items },
128+
schemaData: { properties: { item: newDataProps.items } },
129+
uiSchemaData: { item: newUiProps.items },
130130
onChange: (schema, uischema) => {
131131
onChange({
132132
...parameters,
133-
items: schema.properties.Item,
134-
'ui:*items': uischema.Item || {},
133+
items: schema.properties.item,
134+
'ui:*items': uischema.item || {},
135135
});
136136
},
137137
path: typeof parameters.path === 'string' ? parameters.path : 'array',
@@ -143,7 +143,7 @@ function getInnerCardComponent({
143143
allFormInputs,
144144
mods,
145145
categoryHash: generateCategoryHash(allFormInputs),
146-
Card,
146+
Card: (props) => <Card {...props} showObjectNameInput={false} />,
147147
Section,
148148
})}
149149
</div>

0 commit comments

Comments
 (0)