Fix Action position in Designer Canvas
[ccsdk/cds.git] / cds-ui / designer-client / src / app / modules / feature-modules / packages / designer / action-attributes / action-attributes.component.html
1 <div class="scrollWrapper">
2     <div class="row m-0">
3         <div class="col">
4             <div class="form-group">
5                 <label for="exampleInputEmail1">Action Name</label>
6                 <input type="text" class="form-control" placeholder="Action Name" readonly [value]="actionName">
7             </div>
8         </div>
9     </div>
10     <!--Add Attribute-->
11     <div class="row m-b add-attribute">
12         <div class="col">
13             <h5>Add Attribute</h5>
14             <div class="row">
15                 <div class="col pr-0 text-center">
16                     <button type="button" data-toggle="modal" data-target="#exampleModalScrollable"
17                         class="btn btn-secondary" (click)="clearFormInputs()"><i class="icon-custom-attribute"
18                             type="button" aria-hidden="true"></i></button>
19                     <span>Create Custom</span>
20                 </div>
21                 <div class="col text-center">
22                     <button (click)="printSomethings()" [disabled]="!isFunctionAttributeActive" type="button"
23                         data-toggle="modal" data-target="#exampleModalScrollable3" class="btn btn-secondary"><i
24                             class="icon-function-attribute" type="button" aria-hidden="true"></i></button>
25                     <span>Import From Function</span>
26                 </div>
27             </div>
28         </div>
29     </div>
30     <!--INPUTS-->
31     <div class="accordion action-accordion" id="accordionExample">
32         <div class="card">
33             <div class="card-header" id="headingOne">
34                 <h2 class="mb-0">
35                     <button class="btn btn-link" type="button" data-toggle="collapse" data-target="#collapseOne"
36                         aria-expanded="true" aria-controls="collapseOne">
37                         Inputs
38                     </button>
39                 </h2>
40             </div>
41             <div id="collapseOne" class="collapse show" aria-labelledby="headingOne" data-parent="#accordionExample">
42                 <div class="card-body action-attributes">
43                     <div class="row">
44                         <div class="col">
45                             <div class="form-group" *ngFor="let input of inputs">
46                                 <label class="tooltipHTML">{{input.name}}
47                                     <span class="tooltiptext">
48                                         <h5>{{input.type}}</h5>
49                                         <div *ngIf="input.value">
50                                             <h6>Value:</h6>
51                                             <span>{{input.value}}</span>
52                                         </div>
53                                     </span>
54                                     <i [hidden]="!input.required" class="icon-required-star" type="button"
55                                         aria-hidden="true"></i>
56                                     <i [hidden]="input.required" class="icon-required-star optional-attribute"
57                                         type="button" aria-hidden="true"></i>
58                                 </label>
59                                 <div class="attributeOptions">
60                                     <a data-toggle="modal" data-target="#exampleModalScrollable2"
61                                         class="accordion-delete editAttribute" tooltip="Edit Attribute"
62                                         placement="bottom" (click)="editAttribute(input)"><i class="icon-edit"></i></a>
63                                     <a class="accordion-delete deleteAttribute" tooltip="Delete Attribute"
64                                         (click)="markDeletedInput(input)" data-toggle="modal"
65                                         data-target="#exampleModalScrollable1" placement="bottom"><i
66                                             class="icon-delete-sm"></i></a>
67                                 </div>
68                             </div>
69                         </div>
70                     </div>
71                 </div>
72             </div>
73         </div>
74     </div>
75     <!--OUTPUTS-->
76     <div class="accordion action-accordion" id="accordionExample1">
77         <div class="card">
78             <div class="card-header" id="headingOne">
79                 <h2 class="mb-0">
80                     <button class="btn btn-link" type="button" data-toggle="collapse" data-target="#collapseTwo"
81                         aria-expanded="true" aria-controls="collapseTwo">
82                         Outputs
83                     </button>
84                 </h2>
85             </div>
86
87             <div id="collapseTwo" class="collapse show" aria-labelledby="headingOne" data-parent="#accordionExample1">
88                 <div class="card-body">
89                     <div class="row">
90                         <div class="col">
91                             <div class="form-group" *ngFor="let output of outputs">
92                                 <label class="tooltipHTML">{{output.name}}
93                                     <span class="tooltiptext">
94                                         <h5>{{output.type}}</h5>
95                                         <div *ngIf="output?.value !=null
96                                        && output?.value['get_attribute'] !=null">
97                                             <h6>Value:</h6>
98                                             <span>{{output.value.get_attribute[0]}}</span>
99                                             <span>{{output.value.get_attribute[1]}}</span>
100                                             <span>{{output.value.get_attribute[2]}}</span>
101                                             <span>{{output.value.get_attribute[3]}}</span>
102                                             <span>{{output.value.get_attribute[4]}}</span>
103                                         </div>
104                                     </span>
105                                     <i [hidden]="!output.required" class="icon-required-star" type="button"
106                                         aria-hidden="true"></i>
107                                     <i [hidden]="output.required" class="icon-required-star optional-attribute"
108                                         type="button" aria-hidden="true"></i>
109
110                                 </label>
111                                 <div class="attributeOptions">
112                                     <a data-toggle="modal" data-target="#exampleModalScrollablte"
113                                         class="accordion-delete editAttribute" tooltip="Edit Attribute"
114                                         placement="bottom" (click)="editAttribute(output)"><i class="icon-edit"></i></a>
115                                     <a class="accordion-delete deleteAttribute" tooltip="Delete Attribute"
116                                         (click)="markDeletedInput(output)" data-toggle="modal"
117                                         data-target="#exampleModalScrollable1" placement="bottom"><i
118                                             class="icon-delete-sm"></i></a>
119                                 </div>
120                             </div>
121                         </div>
122                     </div>
123                 </div>
124             </div>
125         </div>
126     </div>
127 </div>
128 <!--Action - Add Custom Attribute - Modal-->
129 <div class="modal fade" id="exampleModalScrollable" tabindex="-1" role="dialog"
130     aria-labelledby="exampleModalScrollableTitle" aria-hidden="true">
131     <div class="modal-dialog  modal-dialog-scrollable" role="document">
132         <div class="modal-content">
133             <div class="modal-header">
134                 <h5 class="modal-title" id="exampleModalScrollableTitle">
135                     Add Custom Attributes</h5>
136                 <button type="button" class="close" data-dismiss="modal" aria-label="Close">
137                     <img src="assets/img/icon-close.svg" />
138                 </button>
139             </div>
140             <div class="modal-body createAttributeTabs">
141                 <!--Action - Inputs & Outputs Attribute-->
142                 <ul class="nav nav-tabs" id="myTab" role="tablist">
143                     <li class="nav-item">
144                         <a class="nav-link active" id="home-tab" data-toggle="tab" href="#home" role="tab"
145                             aria-controls="home" aria-selected="true">Inputs</a>
146                     </li>
147                     <li class="nav-item">
148                         <a class="nav-link" id="profile-tab" data-toggle="tab" href="#profile" role="tab"
149                             aria-controls="profile" aria-selected="false">Outputs</a>
150                     </li>
151                 </ul>
152                 <div class="tab-content" id="myTabContent">
153                     <!--INPUTS Tab-->
154                     <div class="tab-pane fade show active create-form" id="home" role="tabpanel"
155                         aria-labelledby="home-tab">
156                         <div class="form-group row">
157                             <label for="inputEmail3" class="col-sm-3 col-form-label">Name <span>*</span></label>
158                             <div class="col-sm-9">
159                                 <input [(ngModel)]="inputActionAttribute.name" type="email" class="form-control"
160                                     id="inputEmail3" placeholder="Attribute name">
161                             </div>
162                         </div>
163                         <div class="form-group row">
164                             <label for="inputPassword3" class="col-sm-3 col-form-label">Description</label>
165                             <div class="col-sm-9">
166                                 <input [(ngModel)]="inputActionAttribute.description" type="text" class="form-control"
167                                     id="inputPassword3" placeholder="Add some description">
168                             </div>
169                         </div>
170                         <div class="form-group row">
171                             <label class="col-form-label col-sm-3 pt-0">Type <span>*</span></label>
172                             <div class="col-sm-9">
173                                 <div class="list-group list-group-horizontal">
174                                     <button type="button" class="list-group-item list-group-item-action"
175                                         (click)="setInputType('string')">
176                                         String
177                                     </button>
178                                     <button type="button" class="list-group-item list-group-item-action"
179                                         (click)="setInputType('integer')">Integer
180                                     </button>
181                                     <button type="button" class="list-group-item list-group-item-action"
182                                         (click)="setInputType('boolean')">Boolean
183                                     </button>
184                                     <button type="button" class="list-group-item list-group-item-action"
185                                         (click)="setInputType('list')">List
186                                     </button>
187                                     <button type="button" class="list-group-item list-group-item-action"
188                                         (click)="setInputType('Other')">Other
189                                     </button>
190                                 </div>
191                                 <input [hidden]="!isInputOtherType" type="text" class="form-control mt-2 mb-2"
192                                     id="inputPassword4" placeholder="Add Other type name" [(ngModel)]="inputOtherType"
193                                     (change)="setInputType(inputOtherType)">
194
195                             </div>
196                         </div>
197                         <div class="form-group row">
198                             <label class="col-form-label col-sm-3 pt-0">Required <span>*</span></label>
199                             <div class="col-sm-9">
200                                 <div class="custom-control custom-radio custom-control-inline">
201                                     <input type="radio" id="customRadioInline1" name="customRadioInline1"
202                                         class="custom-control-input" (click)="setInputRequired(true)">
203                                     <label class="custom-control-label" for="customRadioInline1">True</label>
204                                 </div>
205                                 <div class="custom-control custom-radio custom-control-inline">
206                                     <input type="radio" id="customRadioInline2" name="customRadioInline1"
207                                         class="custom-control-input" (click)="setInputRequired(false)">
208                                     <label class="custom-control-label" for="customRadioInline2">False</label>
209                                 </div>
210                             </div>
211                         </div>
212                     </div>
213                     <!--OUTPUTS Tab-->
214                     <div class="tab-pane fade create-form" id="profile" role="tabpanel" aria-labelledby="profile-tab">
215                         <div class="form-group row">
216                             <label for="inputEmail3" class="col-sm-3 col-form-label">Name <span>*</span></label>
217                             <div class="col-sm-9">
218                                 <input [(ngModel)]="outputActionAttribute.name" type="email" class="form-control"
219                                     id="inputEmail3" placeholder="Attribute name">
220                             </div>
221                         </div>
222                         <div class="form-group row">
223                             <label for="inputPassword3" class="col-sm-3 col-form-label">Description</label>
224                             <div class="col-sm-9">
225                                 <input [(ngModel)]="outputActionAttribute.description" type="text" class="form-control"
226                                     id="inputPassword3" placeholder="Add some description">
227                             </div>
228                         </div>
229                         <div class="form-group row">
230                             <label class="col-form-label col-sm-3 pt-0">Required <span>*</span></label>
231                             <div class="col-sm-9">
232                                 <div class="custom-control custom-radio custom-control-inline">
233                                     <input type="radio" id="customRadioInline3" name="customRadioInline3"
234                                         class="custom-control-input" (click)="setOutputRequired(true)">
235                                     <label class="custom-control-label" for="customRadioInline3">True</label>
236                                 </div>
237                                 <div class="custom-control custom-radio custom-control-inline">
238                                     <input type="radio" id="customRadioInline4" name="customRadioInline3"
239                                         class="custom-control-input">
240                                     <label class="custom-control-label" for="customRadioInline4"
241                                         (click)="setOutputRequired(false)">False</label>
242                                 </div>
243                             </div>
244                         </div>
245                         <div class="form-group row">
246                             <label class="col-form-label col-sm-3 pt-0">Type <span>*</span></label>
247                             <div class="col-sm-9">
248                                 <div class="list-group list-group-horizontal">
249                                     <button type="button" class="list-group-item list-group-item-action"
250                                         (click)="setOutputType('string')">String
251                                     </button>
252                                     <button type="button" class="list-group-item list-group-item-action"
253                                         (click)="setOutputType('integer')">
254                                         Integer
255                                     </button>
256                                     <button type="button" class="list-group-item list-group-item-action"
257                                         (click)="setOutputType('boolean')">
258                                         Boolean
259                                     </button>
260                                     <button type="button" class="list-group-item list-group-item-action"
261                                         (click)="setOutputType('list')">
262                                         List
263                                     </button>
264                                     <button type="button" class="list-group-item list-group-item-action"
265                                         (click)="setOutputType('Other')">
266                                         Other
267                                     </button>
268                                 </div>
269                                 <input [hidden]="!isOutputOtherType" type="text" class="form-control mt-2 mb-2"
270                                     id="inputPassword3" placeholder="Add Other type name" [(ngModel)]="outputOtherType"
271                                     (change)="setOutputType(outputOtherType)">
272                             </div>
273                         </div>
274                         <!--Get Attribute Value-->
275                         <div class="form-group row mb-0">
276                             <label class="col-form-label col pt-0">
277                                 Value <span class="notation">(get_attribute)</span>
278                             </label>
279                         </div>
280                         <div class="form-group row">
281                             <div class="col">
282                                 <input type="email" class="form-control" id="inputEmail3" placeholder="Attributes">
283                                 <div class="container p-0">
284                                     <!-- <div *ngFor="let tempInput of steps" class="selectedWrapper">{{tempInput}}</div> -->
285                                 </div>
286                             </div>
287                         </div>
288
289
290                         <section class="carousel" aria-label="Gallery">
291
292                             <ol class="carousel__viewport">
293                                 <!--Function-->
294                                 <li id="carousel__slide1" tabindex="0" class="carousel__slide">
295                                     <b class="listBoxTitle">1. Choose Function Name</b>
296                                     <div class="list-group addedFunctionsList" id="list-tab" role="tablist">
297                                         <input type="text" class="form-control input-search-controller"
298                                             placeholder="Functions">
299                                         <div class="scrollWrapper" *ngFor="let step of steps">
300                                             <a class="list-group-item list-group-item-action active" id="list-home-list"
301                                                 data-toggle="list" href="#list-home" role="tab" aria-controls="home">
302                                                 <i class="icon-resource_resolution mr-1" aria-hidden="true"></i>
303                                                 {{step}} <i class="icon-next_arrow" aria-hidden="true" (click)="getAttributesAndOutputs(
304                                                                     this.designerState.template.workflows[actionName]['steps'][step]['target']
305                                                                     )"></i></a>
306                                         </div>
307                                     </div>
308                                 </li>
309                                 <!--Attribute-->
310                                 <li id="carousel__slide2" tabindex="1" class="carousel__slide">
311                                     <b class="listBoxTitle">2. Choose Attribute Name</b>
312                                     <div class="tab-content nestedAttributes mt-0 p-0" id="nav-tabContent">
313                                         <input type="text" class="form-control input-search-controller"
314                                             placeholder="Attributes">
315                                         <div class="tab-pane fade show active" id="list-home" role="tabpanel"
316                                             aria-labelledby="list-home-list">
317                                             <div class="scrollWrapper">
318                                                 <div *ngIf="suggestedAttributes.length>0"
319                                                     class="btn-group btn-group-toggle" data-toggle="buttons">
320                                                     <label class="btn tooltipHTML tooltipGetAtt"
321                                                         *ngFor="let suggestedAttribute of suggestedAttributes"
322                                                         [id]="suggestedAttribute"
323                                                         (click)="addTempOutputAttr(suggestedAttribute)">
324                                                         <span class="tooltiptext">
325                                                             <h5>integer</h5>
326                                                         </span>
327                                                         <input type="radio" name="options"
328                                                             [id]="suggestedAttribute+'.,.'" autocomplete="off"
329                                                             [checked]="suggestedAttributes[0].includes(suggestedAttribute)">
330                                                         {{suggestedAttribute}}
331                                                         <i class="icon-required-star" type="button"
332                                                             aria-hidden="true"></i>
333                                                     </label>
334
335                                                 </div>
336                                                 <div *ngIf="suggestedAttributes.length == 0">
337                                                     <p class="noAttributes">No Attributes Available</p>
338                                                 </div>
339                                             </div>
340                                         </div>
341                                     </div>
342                                 </li>
343                                 <!--Artifact-->
344                                 <li id="carousel__slide3" [hidden]="isNotComponentResourceResolution" tabindex="2"
345                                     class="carousel__slide">
346                                     <b class="listBoxTitle">3. Choose Artifact Name</b>
347                                     <div class="tab-content nestedAttributes mt-0 p-0" id="nav-tabContent">
348                                         <input type="text" class="form-control input-search-controller"
349                                             placeholder="Attributes">
350                                         <div class="tab-pane fade show active" id="list-home" role="tabpanel"
351                                             aria-labelledby="list-home-list">
352                                             <div class="scrollWrapper">
353                                                 <div *ngIf="currentArtifacts.length>0"
354                                                     class="btn-group btn-group-toggle" data-toggle="buttons">
355                                                     <label class="btn btn-secondary"
356                                                         *ngFor="let suggestedArtifact of currentArtifacts"
357                                                         (click)="addArtifactFile(suggestedArtifact)">
358                                                         <input type="radio" name="options" [id]="suggestedArtifact"
359                                                             autocomplete="off"
360                                                             (click)="addArtifactFile(suggestedArtifact)"
361                                                             [checked]="currentArtifacts[0].includes(suggestedArtifact)">
362                                                         {{suggestedArtifact}}
363                                                     </label>
364
365                                                 </div>
366                                                 <div *ngIf="currentArtifacts.length == 0">
367                                                     <p class="noAttributes">No Artifacts Available</p>
368                                                 </div>
369                                             </div>
370                                         </div>
371                                     </div>
372                                 </li>
373                                 <!--Parameter-->
374                                 <li id="carousel__slide4" [hidden]="isParametersHidden" tabindex="3"
375                                     class="carousel__slide">
376                                     <b class="listBoxTitle">4. Choose Parameter Name</b>
377                                     <div class="tab-content nestedAttributes mt-0 p-0" id="nav-tabContent">
378                                         <input type="text" class="form-control input-search-controller"
379                                             placeholder="Attributes">
380                                         <div class="tab-pane fade show active" id="list-home" role="tabpanel"
381                                             aria-labelledby="list-home-list">
382                                             <div class="scrollWrapper">
383                                                 <div *ngIf="suggestedMappingParameters.length>0"
384                                                     class="btn-group btn-group-toggle" data-toggle="buttons">
385                                                     <label class="btn btn-secondary"
386                                                         *ngFor="let suggestedMappingParameter of suggestedMappingParameters"
387                                                         (click)="addSuggestedMappingParameter(suggestedMappingParameter)">
388                                                         <!--[class]="suggestedMappingParameters[0].includes(suggestedMappingParameter)?'btn btn-secondary active':'btn btn-secondary'">
389                                                     --> <input type="radio" name="options"
390                                                             [id]="suggestedMappingParameter" autocomplete="off"
391                                                             (click)="addSuggestedMappingParameter(suggestedMappingParameter)"
392                                                             [checked]="suggestedMappingParameters[0].includes(suggestedMappingParameter)">
393                                                         {{suggestedMappingParameter}}
394                                                     </label>
395
396                                                 </div>
397                                                 <div *ngIf="suggestedMappingParameters.length == 0">
398                                                     <p class="noAttributes">No Attributes Available</p>
399                                                 </div>
400                                             </div>
401                                         </div>
402                                     </div>
403                                 </li>
404                             </ol>
405                             <aside class="carousel__navigation">
406                                 <ol class="carousel__navigation-list">
407                                     <li class="carousel__navigation-item">
408                                         <a href="#carousel__slide1" class="carousel__navigation-button">Functions</a>
409                                     </li>
410                                     <li class="carousel__navigation-item">
411                                         <a href="#carousel__slide2" class="carousel__navigation-button">Attributes</a>
412                                     </li>
413                                     <li class="carousel__navigation-item" [hidden]="isNotComponentResourceResolution">
414                                         <a href="#carousel__slide3" class="carousel__navigation-button">Artifacts</a>
415                                     </li>
416                                     <li class="carousel__navigation-item" [hidden]="isParametersHidden">
417                                         <a href="#carousel__slide4" class="carousel__navigation-button">Parameters</a>
418                                     </li>
419                                 </ol>
420                             </aside>
421                         </section>
422                     </div>
423                 </div>
424             </div>
425             <div class="modal-footer">
426                 <button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
427                 <button type="button" class="btn btn-primary" (click)="submitAttributes()">Submit Attributes</button>
428             </div>
429         </div>
430     </div>
431 </div>
432
433 <!--Action - Add Attribute From Function - Modal-->
434 <div class="modal fade" id="exampleModalScrollable3" tabindex="-1" role="dialog"
435     aria-labelledby="exampleModalScrollableTitle3" aria-hidden="true">
436     <div class="modal-dialog  modal-dialog-scrollable" role="document">
437         <div class="modal-content">
438             <div class="modal-header">
439                 <h5 class="modal-title" id="exampleModalScrollableTitle3">
440                     Add Attributes from Function</h5>
441                 <button type="button" class="close" data-dismiss="modal" aria-label="Close">
442                     <img src="assets/img/icon-close.svg" />
443                 </button>
444             </div>
445             <div class="modal-body createAttributeTabs">
446                 <!--Action - Inputs & Outputs Attribute-->
447                 <ul class="nav nav-tabs" id="myTab" role="tablist">
448                     <li class="nav-item">
449                         <a class="nav-link active" id="home-tab" data-toggle="tab" href="#input" role="tab"
450                             aria-controls="home" aria-selected="true">Inputs</a>
451                     </li>
452                     <li class="nav-item">
453                         <a class="nav-link" id="profile-tab" data-toggle="tab" href="#output" role="tab"
454                             aria-controls="profile" aria-selected="false">Outputs</a>
455                     </li>
456                 </ul>
457                 <div class="tab-content border-0" id="myTabContent">
458                     <!--INPUTS Tab-->
459                     <div class="tab-pane fade show active create-form" id="input" role="tabpanel"
460                         aria-labelledby="input-tab">
461                         <div class="form-group row">
462                             <div class="col">
463                                 <!--<input type="email" class="form-control" id="inputEmail3" placeholder="Attributes">-->
464                                 <div class="container p-0">
465                                     <label>Selected Attributes</label>
466                                     <div *ngFor="let tempInput of tempInputs" class="selectedWrapper">{{tempInput}}
467                                     </div>
468                                 </div>
469                             </div>
470                         </div>
471
472                         <div class="row">
473                             <div class="col-6">
474                                 <b class="listBoxTitle">1. Choose Function Name</b>
475                                 <div class="list-group addedFunctionsList" id="list-tab" role="tablist">
476                                     <input type="text" class="form-control input-search-controller"
477                                         placeholder="Functions">
478                                     <div class="scrollWrapper" *ngFor="let step of steps">
479                                         <a class="list-group-item list-group-item-action active" id="list-home-list"
480                                             data-toggle="list" href="#list-home" role="tab" aria-controls="home"><i
481                                                 class="icon-resource_resolution mr-1" aria-hidden="true"></i>
482                                             {{step}} <i class="icon-next_arrow" aria-hidden="true" (click)="setInputAndOutputs(
483                                             this.designerState.template.workflows[actionName]['steps'][step]['target']
484                                             )"></i></a>
485                                     </div>
486                                 </div>
487                             </div>
488                             <div class="col-6">
489                                 <b class="listBoxTitle">2. Choose Input Attribute Name</b>
490                                 <div class="tab-content nestedAttributes mt-0 p-0" id="nav-tabContent">
491                                     <input type="text" class="form-control input-search-controller"
492                                         placeholder="Attributes">
493                                     <div class="tab-pane fade show active" id="list-home" role="tabpanel"
494                                         aria-labelledby="list-home-list">
495                                         <div class="scrollWrapper">
496                                             <div *ngIf="suggestedInputs.length>0" class="btn-group btn-group-toggle"
497                                                 data-toggle="buttons">
498                                                 <label class="btn tooltipHTML tooltipGetAtt active"
499                                                     *ngFor="let suggestedInput of suggestedInputs"
500                                                     (click)="addTempInput(suggestedInput)">
501                                                     <span class="tooltiptext">
502                                                         <h5>integer</h5>
503                                                     </span>
504                                                     <input type="radio" name="options" [id]="suggestedInput"
505                                                         autocomplete="off" (click)="addTempInput(suggestedInput)">
506                                                     {{suggestedInput}}
507                                                     <i class="icon-required-star" type="button" aria-hidden="true"></i>
508                                                 </label>
509                                             </div>
510                                             <div *ngIf="suggestedInputs.length == 0">
511                                                 <p class="noAttributes">No Attributes Available</p>
512                                             </div>
513                                         </div>
514                                     </div>
515                                 </div>
516                             </div>
517                         </div>
518                     </div>
519                     <!--OUTPUTS Tab-->
520                     <div class="tab-pane fade create-form" id="output" role="tabpanel" aria-labelledby="output-tab">
521                         <div class="form-group row">
522                             <div class="col">
523                                 <input type="email" class="form-control" id="inputEmail3" placeholder="Attributes">
524                                 <div class="container p-0">
525                                     <div *ngFor="let tempOutput of tempOutputs" class="selectedWrapper">{{tempOutput}}
526                                     </div>
527                                 </div>
528                             </div>
529                         </div>
530
531                         <div class="row">
532                             <div class="col-6">
533                                 <b class="listBoxTitle">1. Choose Function Name</b>
534                                 <div class="list-group addedFunctionsList" id="list-tab" role="tablist">
535                                     <input type="text" class="form-control input-search-controller"
536                                         placeholder="Functions">
537                                     <div class="scrollWrapper" *ngFor="let step of steps">
538                                         <a class="list-group-item list-group-item-action active" id="list-home-list"
539                                             data-toggle="list" href="#list-home" role="tab" aria-controls="home"><i
540                                                 class="icon-resource_resolution mr-1" aria-hidden="true"></i>
541                                             {{step}} <i class="icon-next_arrow" aria-hidden="true" (click)="setInputAndOutputs(
542                                             this.designerState.template.workflows[actionName]['steps'][step]['target']
543                                             )"></i></a>
544                                     </div>
545                                 </div>
546                             </div>
547                             <div class="col-6">
548                                 <b class="listBoxTitle">2. Choose output Attribute Name</b>
549                                 <div class="tab-content nestedAttributes mt-0 p-0" id="nav-tabContent">
550                                     <input type="text" class="form-control input-search-controller"
551                                         placeholder="Attributes">
552                                     <div class="tab-pane fade show active" id="list-home" role="tabpanel"
553                                         aria-labelledby="list-home-list">
554                                         <div class="scrollWrapper">
555                                             <div *ngIf="suggestedOutputs.length > 0" class="btn-group btn-group-toggle"
556                                                 data-toggle="buttons">
557                                                 <label class="btn tooltipHTML tooltipGetAtt active"
558                                                     *ngFor="let suggestedOutput of suggestedOutputs">
559                                                     <span class="tooltiptext">
560                                                         <h5>integer</h5>
561                                                     </span>
562                                                     <input type="radio" name="options" [id]="suggestedOutput"
563                                                         autocomplete="off" (dblclick)="addTempOutput(suggestedOutput)">
564                                                     {{suggestedOutput}}
565                                                     <i class="icon-required-star" type="button" aria-hidden="true"></i>
566                                                 </label>
567
568                                             </div>
569                                             <div *ngIf="suggestedOutputs.length == 0">
570                                                 <p class="noAttributes">No Attributes Available</p>
571                                             </div>
572                                         </div>
573                                     </div>
574                                 </div>
575                             </div>
576                         </div>
577                     </div>
578                 </div>
579             </div>
580             <div class="modal-footer">
581                 <button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
582                 <button type="button" class="btn btn-primary" (click)="submitTempAttributes()">Submit
583                     Attributes
584                 </button>
585             </div>
586         </div>
587     </div>
588 </div>
589
590 <!--Delete Action - Modal-->
591 <div class="modal fade" id="exampleModalScrollable1" tabindex="-1" role="dialog"
592     aria-labelledby="exampleModalScrollableTitle1" aria-hidden="true">
593     <div class="modal-dialog modal-dialog-scrollable" role="document" style="width: 30%;">
594         <div class="modal-content">
595             <div class="modal-header">
596                 <h5 class="modal-title" id="exampleModalScrollableTitle1">
597                     Delete Action "{{actionName}}"</h5>
598                 <button type="button" class="close" data-dismiss="modal" aria-label="Close">
599                     <img src="assets/img/icon-close.svg" />
600                 </button>
601             </div>
602             <div class="modal-body">
603                 Are you sure you want to delete <b>{{suggestedDeletedInput.name}}</b> action "{{actionName}}"?
604             </div>
605             <div class="modal-footer">
606                 <button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
607                 <button type="button" class="btn btn-danger" data-dismiss="modal" (click)="deleteActionAttribute()">
608                     Delete
609                 </button>
610             </div>
611         </div>
612     </div>
613 </div>
614 <!--Action - Edit Custom Attribute - Modal-->
615 <div class="modal fade" id="exampleModalScrollable2" tabindex="-1" role="dialog"
616     aria-labelledby="exampleModalScrollableTitle2" aria-hidden="true">
617     <div class="modal-dialog modal-dialog-scrollable" role="document">
618         <div class="modal-content">
619             <div class="modal-header">
620                 <h5 class="modal-title" id="exampleModalScrollableTitle2">
621                     Edit Custom Attributes</h5>
622                 <button type="button" class="close" data-dismiss="modal" aria-label="Close">
623                     <img src="assets/img/icon-close.svg" />
624                 </button>
625             </div>
626             <div class="modal-body createAttributeTabs">
627                 <div class="create-form">
628                     <div class="form-group row">
629                         <label for="inputEmail3" class="col-sm-3 col-form-label">Name <span>*</span></label>
630                         <div class="col-sm-9">
631                             <input type="email" class="form-control" id="inputEmail3" placeholder="Attribute name"
632                                 [ngModel]="this.suggestedEditedAttribute.name">
633                         </div>
634                     </div>
635                     <div class="form-group row">
636                         <label for="inputPassword3" class="col-sm-3 col-form-label">Description</label>
637                         <div class="col-sm-9">
638                             <input type="text" class="form-control" id="inputPassword3"
639                                 placeholder="Add some description"
640                                 [ngModel]="this.suggestedEditedAttribute.description">
641                         </div>
642                     </div>
643                     <div class="form-group row">
644                         <label class="col-form-label col-sm-3 pt-0">Type <span>*</span></label>
645                         <div class="col-sm-9">
646                             <div class="list-group list-group-horizontal">
647                                 <button type="button" class="list-group-item list-group-item-action"
648                                     [className]="suggestedEditedAttribute.type.includes('string')?'' +
649                                  'list-group-item list-group-item-action active':'list-group-item list-group-item-action'">String
650                                 </button>
651                                 <button type="button" class="list-group-item list-group-item-action"
652                                     [className]="suggestedEditedAttribute.type.includes('integer')?'' +
653                                          ' list-group-item list-group-item-action active':'list-group-item list-group-item-action'">Integer</button>
654                                 <button type="button" class="list-group-item list-group-item-action"
655                                     [className]="suggestedEditedAttribute.type.includes('boolean')?'' +
656                                          'list-group-item list-group-item-action active':'list-group-item list-group-item-action'">Boolean</button>
657                                 <button type="button" class="list-group-item list-group-item-action"
658                                     [className]="suggestedEditedAttribute.type.includes('list')?'' +
659                                          'list-group-item list-group-item-action active':'list-group-item list-group-item-action'">List</button>
660                                 <button type="button" class="list-group-item list-group-item-action">Other
661                                 </button>
662                             </div>
663                             <input type="text" class="form-control mt-2 mb-2" id="inputPassword3"
664                                 placeholder="Add Other type name" value="dt-resource-assignment-properties">
665                         </div>
666                     </div>
667                     <div class="form-group row">
668                         <label class="col-form-label col-sm-3 pt-0">Required <span>*</span></label>
669                         <div class="col-sm-9">
670                             <div class="custom-control custom-radio custom-control-inline">
671                                 <input type="radio" id="customRadioInline1" name="customRadioInline1"
672                                     class="custom-control-input" [ngModel]="suggestedEditedAttribute.required"
673                                     [checked]="suggestedEditedAttribute.required">
674                                 <label class="custom-control-label" for="customRadioInline1">True</label>
675                             </div>
676                             <div class="custom-control custom-radio custom-control-inline">
677                                 <input type="radio" id="customRadioInline2" name="customRadioInline1"
678                                     class="custom-control-input" [checked]="!suggestedEditedAttribute.required">
679                                 <label class="custom-control-label" for="customRadioInline2">False</label>
680                             </div>
681                         </div>
682                     </div>
683                 </div>
684                 <div class="modal-footer">
685                     <button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
686                     <button type="button" class="btn btn-primary">Save</button>
687                 </div>
688             </div>
689         </div>
690     </div>
691 </div>