Skip to content

Commit e252cf3

Browse files
Refactor embedded entry point to workflow entry point
1 parent 7f21746 commit e252cf3

File tree

5 files changed

+94
-8
lines changed

5 files changed

+94
-8
lines changed
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
import React, { useState, useEffect } from 'react';
2+
import PropTypes from 'prop-types';
3+
import { Button, TextInput } from 'carbon-components-react';
4+
import { Close16, TreeViewAlt16 } from '@carbon/icons-react';
5+
import { useFieldApi } from '@@ddf';
6+
import WorkflowEntryPoints from '../workflows/workflow-entry-points';
7+
8+
const EmbeddedWorkflowEntryPoint = (props) => {
9+
const {
10+
label, initialValue, id, field, selected, type,
11+
} = props;
12+
const { input } = useFieldApi(props);
13+
14+
const [showModal, setShowModal] = useState(false);
15+
const [selectedValue, setSelectedValue] = useState({});
16+
const [textValue, setTextValue] = useState('');
17+
18+
useEffect(() => {
19+
if (selectedValue && selectedValue.name && selectedValue.name.text) {
20+
setTextValue(selectedValue.name.text);
21+
} else {
22+
setTextValue('');
23+
}
24+
}, [selectedValue]);
25+
26+
useEffect(() => {
27+
if (selectedValue && selectedValue.name && selectedValue.name.text) {
28+
selectedValue.name.text = textValue;
29+
}
30+
input.onChange(selectedValue);
31+
}, [textValue]);
32+
33+
return (
34+
<div>
35+
{showModal ? (
36+
<WorkflowEntryPoints
37+
field={field}
38+
selected={selected}
39+
type={type}
40+
setShowModal={setShowModal}
41+
setSelectedValue={setSelectedValue}
42+
/>
43+
) : undefined}
44+
<div className="entry-point-wrapper">
45+
<div className="entry-point-text-input">
46+
<TextInput id={id} type="text" labelText={__(label)} onChange={(value) => setTextValue(value.target.value)} value={textValue} />
47+
</div>
48+
<div className="entry-point-buttons">
49+
<div className="entry-point-open">
50+
<Button
51+
renderIcon={TreeViewAlt16}
52+
iconDescription={sprintf(__('Click to select %s'), label)}
53+
hasIconOnly
54+
onClick={() => setShowModal(true)}
55+
/>
56+
</div>
57+
<div className="entry-point-remove">
58+
<Button
59+
renderIcon={Close16}
60+
iconDescription={sprintf(__('Remove this %s'), label)}
61+
hasIconOnly
62+
onClick={() => {
63+
setSelectedValue({});
64+
}}
65+
/>
66+
</div>
67+
</div>
68+
</div>
69+
</div>
70+
);
71+
};
72+
73+
EmbeddedWorkflowEntryPoint.propTypes = {
74+
id: PropTypes.string.isRequired,
75+
label: PropTypes.string.isRequired,
76+
initialValue: PropTypes.string,
77+
field: PropTypes.string.isRequired,
78+
selected: PropTypes.string,
79+
type: PropTypes.string.isRequired,
80+
};
81+
82+
EmbeddedWorkflowEntryPoint.defaultProps = {
83+
initialValue: '',
84+
selected: '',
85+
};
86+
87+
export default EmbeddedWorkflowEntryPoint;

app/javascript/components/terraform-template-catalog-form/terraform-template-catalog-form.schema.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ const basicInformationTabSchema = (availableCatalogs, tenantTree, roleAllows, zo
5050
},
5151
},
5252
{
53-
component: 'embedded-entry-point',
53+
component: 'embedded-workflow-entry-point',
5454
id: 'provisioning_entry_point_workflow',
5555
name: 'provisioning_entry_point_workflow',
5656
label: 'Provisioning Entry Point',
@@ -81,7 +81,7 @@ const basicInformationTabSchema = (availableCatalogs, tenantTree, roleAllows, zo
8181
},
8282
},
8383
{
84-
component: 'embedded-entry-point',
84+
component: 'embedded-workflow-entry-point',
8585
id: 'reconfigure_entry_point_workflow',
8686
name: 'reconfigure_entry_point_workflow',
8787
label: 'Reconfigure Entry Point',
@@ -113,7 +113,7 @@ const basicInformationTabSchema = (availableCatalogs, tenantTree, roleAllows, zo
113113
},
114114
},
115115
{
116-
component: 'embedded-entry-point',
116+
component: 'embedded-workflow-entry-point',
117117
id: 'retirement_entry_point_workflow',
118118
name: 'retirement_entry_point_workflow',
119119
label: 'Retirement Entry Point',

app/javascript/forms/mappers/componentMapper.jsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import React from 'react';
21
import { componentMapper } from '@data-driven-forms/carbon-component-mapper';
32
import { componentTypes } from '@@ddf';
43
import AsyncCredentials from '../../components/async-credentials/async-credentials';
@@ -11,15 +10,15 @@ import { TreeViewField, TreeViewSelector } from '../../components/tree-view';
1110
import MultiSelectWithSelectAll from '../../components/multiselect-with-selectall';
1211
import FontIconPicker from '../../components/fonticon-picker';
1312
import FontIconPickerDdf from '../../components/fonticon-picker/font-icon-picker-ddf';
14-
import EmbeddedEntryPoint from '../../components/embedded-entry-point';
13+
import EmbeddedWorkflowEntryPoint from '../../components/embedded-workflow-entry-point';
1514

1615
const mapper = {
1716
...componentMapper,
1817
'code-editor': CodeEditor,
1918
'edit-password-field': EditPasswordField,
2019
'file-upload': FileUploadComponent,
2120
'password-field': PasswordField,
22-
'embedded-entry-point': EmbeddedEntryPoint,
21+
'embedded-workflow-entry-point': EmbeddedWorkflowEntryPoint,
2322
'validate-credentials': AsyncCredentials,
2423
'tree-view': TreeViewField,
2524
'tree-selector': TreeViewSelector,

app/javascript/spec/provision-entry-point/provision-entry-point.spec.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import React from 'react';
22
import { shallow } from 'enzyme';
33
import { shallowToJson } from 'enzyme-to-json';
44

5-
import EmbeddedEntryPoint from '../../components/embedded-entry-point';
5+
import EmbeddedWorkflowEntryPoint from '../../components/embedded-workflow-entry-point';
66

77
jest.mock('@@ddf', () => ({
88
useFieldApi: (props) => ({ meta: {}, input: {}, ...props }),
@@ -22,7 +22,7 @@ describe('CodeEditor component', () => {
2222
});
2323

2424
it('should render correctly', () => {
25-
const wrapper = shallow(<EmbeddedEntryPoint {...initialProps} />);
25+
const wrapper = shallow(<EmbeddedWorkflowEntryPoint {...initialProps} />);
2626
expect(shallowToJson(wrapper)).toMatchSnapshot();
2727
});
2828
});

0 commit comments

Comments
 (0)