@cqa-lib/cqa-ui 1.1.238 → 1.1.240

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/esm2020/lib/execution-screen/ai-logs-with-reasoning/ai-logs-with-reasoning.component.mjs +3 -3
  2. package/esm2020/lib/test-case-details/ai-agent-step/ai-agent-step.component.mjs +3 -3
  3. package/esm2020/lib/test-case-details/ai-verify-step/ai-verify-step.component.mjs +3 -3
  4. package/esm2020/lib/test-case-details/api-step/api-step.component.mjs +3 -3
  5. package/esm2020/lib/test-case-details/condition-step/condition-step.component.mjs +38 -3
  6. package/esm2020/lib/test-case-details/custom-code-step/custom-code-step.component.mjs +3 -3
  7. package/esm2020/lib/test-case-details/database-step/database-step.component.mjs +3 -3
  8. package/esm2020/lib/test-case-details/loop-step/loop-step.component.mjs +506 -44
  9. package/esm2020/lib/test-case-details/normal-step/normal-step.component.mjs +3 -3
  10. package/esm2020/lib/test-case-details/restore-session-step/restore-session-step.component.mjs +3 -3
  11. package/esm2020/lib/test-case-details/screenshot-step/screenshot-step.component.mjs +3 -3
  12. package/esm2020/lib/test-case-details/scroll-step/scroll-step.component.mjs +3 -3
  13. package/esm2020/lib/test-case-details/step-group/step-group.component.mjs +18 -5
  14. package/esm2020/lib/test-case-details/test-case-details-renderer/test-case-details-renderer.component.mjs +21 -7
  15. package/esm2020/lib/test-case-details/test-case-step.models.mjs +1 -1
  16. package/esm2020/lib/test-case-details/upload-step/upload-step.component.mjs +3 -3
  17. package/esm2020/lib/test-case-details/verify-url-step/verify-url-step.component.mjs +3 -3
  18. package/fesm2015/cqa-lib-cqa-ui.mjs +612 -112
  19. package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -1
  20. package/fesm2020/cqa-lib-cqa-ui.mjs +599 -79
  21. package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -1
  22. package/lib/test-case-details/condition-step/condition-step.component.d.ts +12 -1
  23. package/lib/test-case-details/loop-step/loop-step.component.d.ts +70 -8
  24. package/lib/test-case-details/step-group/step-group.component.d.ts +8 -1
  25. package/lib/test-case-details/test-case-details-renderer/test-case-details-renderer.component.d.ts +6 -2
  26. package/lib/test-case-details/test-case-step.models.d.ts +5 -0
  27. package/package.json +1 -1
  28. package/styles.css +1 -1
@@ -90,6 +90,10 @@ export declare class TestCaseConditionStepComponent implements OnInit, OnChanges
90
90
  deleteBranch: EventEmitter<ConditionBranch>;
91
91
  duplicate: EventEmitter<void>;
92
92
  delete: EventEmitter<void>;
93
+ edit: EventEmitter<{
94
+ step: TestCaseStepConfig;
95
+ index: number;
96
+ }>;
93
97
  moreOptions: EventEmitter<void>;
94
98
  viewDetails: EventEmitter<ViewDetailsPayload>;
95
99
  editInDepth: EventEmitter<{
@@ -157,6 +161,13 @@ export declare class TestCaseConditionStepComponent implements OnInit, OnChanges
157
161
  }, branch: ConditionBranch, step: TestCaseStepConfig, index: number): void;
158
162
  onAddStep(branch: ConditionBranch): void;
159
163
  onDeleteStep(branch: ConditionBranch, stepIndex: number): void;
164
+ /** Re-emit edit from nested step in a branch so the portal can open edit modal (same as root level). */
165
+ onNestedEdit(event: {
166
+ step: TestCaseStepConfig;
167
+ index: number;
168
+ }): void;
169
+ /** Re-emit duplicate from nested step in a branch so the portal can duplicate (same as root level). */
170
+ onNestedDuplicate(event: any, step: TestCaseStepConfig): void;
160
171
  onAddBranch(): void;
161
172
  onDeleteBranch(branch: ConditionBranch): void;
162
173
  onNestedConditionAddBranch(nestedStep: ConditionStepConfig): void;
@@ -187,5 +198,5 @@ export declare class TestCaseConditionStepComponent implements OnInit, OnChanges
187
198
  /** Get select config for a template variable */
188
199
  getSelectConfigForVariable(variable: any, branchIdOrIsElse?: string | boolean): DynamicSelectFieldConfig;
189
200
  static ɵfac: i0.ɵɵFactoryDeclaration<TestCaseConditionStepComponent, never>;
190
- static ɵcmp: i0.ɵɵComponentDeclaration<TestCaseConditionStepComponent, "cqa-test-case-condition-step", never, { "config": "config"; "id": "id"; "stepNumber": "stepNumber"; "condition": "condition"; "branches": "branches"; "expanded": "expanded"; "isNested": "isNested"; "isInsideLoop": "isInsideLoop"; "isReorder": "isReorder"; "selected": "selected"; "dataProfileOptions": "dataProfileOptions"; "hasMoreDataProfiles": "hasMoreDataProfiles"; "isLoadingDataProfiles": "isLoadingDataProfiles"; "naturalTextActionsOptions": "naturalTextActionsOptions"; "setConditionTemplateVariables": "setConditionTemplateVariables"; "addStepBetweenAbove": "addStepBetweenAbove"; "addStepBetweenBelow": "addStepBetweenBelow"; "addStepBetween": "addStepBetween"; }, { "toggleExpanded": "toggleExpanded"; "conditionChange": "conditionChange"; "branchStepChange": "branchStepChange"; "addStep": "addStep"; "deleteStep": "deleteStep"; "addBranch": "addBranch"; "addElse": "addElse"; "deleteBranch": "deleteBranch"; "duplicate": "duplicate"; "delete": "delete"; "moreOptions": "moreOptions"; "viewDetails": "viewDetails"; "editInDepth": "editInDepth"; "dndDropInZone": "dndDropInZone"; "loadMoreDataProfiles": "loadMoreDataProfiles"; "searchDataProfiles": "searchDataProfiles"; "stepUpdate": "stepUpdate"; "clickAction": "clickAction"; "addStepBetweenClick": "addStepBetweenClick"; "selectionChange": "selectionChange"; }, never, never>;
201
+ static ɵcmp: i0.ɵɵComponentDeclaration<TestCaseConditionStepComponent, "cqa-test-case-condition-step", never, { "config": "config"; "id": "id"; "stepNumber": "stepNumber"; "condition": "condition"; "branches": "branches"; "expanded": "expanded"; "isNested": "isNested"; "isInsideLoop": "isInsideLoop"; "isReorder": "isReorder"; "selected": "selected"; "dataProfileOptions": "dataProfileOptions"; "hasMoreDataProfiles": "hasMoreDataProfiles"; "isLoadingDataProfiles": "isLoadingDataProfiles"; "naturalTextActionsOptions": "naturalTextActionsOptions"; "setConditionTemplateVariables": "setConditionTemplateVariables"; "addStepBetweenAbove": "addStepBetweenAbove"; "addStepBetweenBelow": "addStepBetweenBelow"; "addStepBetween": "addStepBetween"; }, { "toggleExpanded": "toggleExpanded"; "conditionChange": "conditionChange"; "branchStepChange": "branchStepChange"; "addStep": "addStep"; "deleteStep": "deleteStep"; "addBranch": "addBranch"; "addElse": "addElse"; "deleteBranch": "deleteBranch"; "duplicate": "duplicate"; "delete": "delete"; "edit": "edit"; "moreOptions": "moreOptions"; "viewDetails": "viewDetails"; "editInDepth": "editInDepth"; "dndDropInZone": "dndDropInZone"; "loadMoreDataProfiles": "loadMoreDataProfiles"; "searchDataProfiles": "searchDataProfiles"; "stepUpdate": "stepUpdate"; "clickAction": "clickAction"; "addStepBetweenClick": "addStepBetweenClick"; "selectionChange": "selectionChange"; }, never, never>;
191
202
  }
@@ -1,13 +1,15 @@
1
- import { EventEmitter, OnInit, OnChanges, SimpleChanges, ElementRef } from '@angular/core';
1
+ import { EventEmitter, OnInit, OnChanges, SimpleChanges, ElementRef, ChangeDetectorRef } from '@angular/core';
2
2
  import { FormBuilder, FormGroup } from '@angular/forms';
3
3
  import { DndDropEvent } from 'ngx-drag-drop';
4
4
  import { DynamicSelectFieldConfig, SelectOption } from '../../dynamic-select/dynamic-select-field.component';
5
5
  import { LoopStepConfig, TestCaseStepConfig, NormalStepConfig, ConditionStepConfig, StepGroupConfig } from '../test-case-step.models';
6
6
  import { DataProfileOption } from '../../step-builder/step-builder-loop/step-builder-loop.component';
7
7
  import { ViewDetailsPayload } from '../step-details-modal/step-details-modal-data';
8
+ import { CqaAutocompleteOption } from '../../autocomplete/autocomplete.model';
8
9
  import * as i0 from "@angular/core";
9
10
  export declare class TestCaseLoopStepComponent implements OnInit, OnChanges {
10
11
  private fb;
12
+ private cdr;
11
13
  config: LoopStepConfig;
12
14
  id: string;
13
15
  loopType: 'for' | 'while';
@@ -31,6 +33,8 @@ export declare class TestCaseLoopStepComponent implements OnInit, OnChanges {
31
33
  isLoadingDataProfiles: boolean;
32
34
  /** Options for natural text actions (for while loop condition) */
33
35
  naturalTextActionsOptions: SelectOption[];
36
+ /** Function to process template variables for while condition (same as condition-step) */
37
+ setConditionTemplateVariables: (template: any) => any[];
34
38
  /** Show "Add Step Between" button above nested steps */
35
39
  addStepBetweenAbove: boolean;
36
40
  /** Show "Add Step Between" button below nested steps */
@@ -50,7 +54,10 @@ export declare class TestCaseLoopStepComponent implements OnInit, OnChanges {
50
54
  step: TestCaseStepConfig;
51
55
  index: number;
52
56
  }>;
53
- addStep: EventEmitter<void>;
57
+ /** Emits void when add is from nested content; emits { loopStepConfig } when empty-state add is clicked (same behaviour as add-step-between). */
58
+ addStep: EventEmitter<void | {
59
+ loopStepConfig: LoopStepConfig;
60
+ }>;
54
61
  deleteStep: EventEmitter<number>;
55
62
  duplicate: EventEmitter<void>;
56
63
  delete: EventEmitter<void>;
@@ -97,21 +104,59 @@ export declare class TestCaseLoopStepComponent implements OnInit, OnChanges {
97
104
  startStepSelectConfig: DynamicSelectFieldConfig;
98
105
  endStepSelectConfig: DynamicSelectFieldConfig;
99
106
  conditionSelectConfig: DynamicSelectFieldConfig;
107
+ /** While loop: config for autocomplete options (WHILE_CONDITION only) */
108
+ whileConditionSelectConfig: DynamicSelectFieldConfig;
109
+ /** Selected template for while condition (same pattern as condition-step) */
110
+ selectedTemplate: any;
111
+ /** Template variables for while condition */
112
+ templateVariables: any[];
113
+ /** Form group for template variables */
114
+ templateVariablesForm: FormGroup;
100
115
  /** Options for Loop Start / Loop End dropdowns (1-10) */
101
116
  loopStepOptions: number[];
102
117
  viewDetailsTrigger?: ElementRef<HTMLElement>;
103
118
  /** Local copy of values while editing (for Cancel revert) */
104
119
  private editSnapshot;
105
- constructor(fb: FormBuilder);
120
+ constructor(fb: FormBuilder, cdr: ChangeDetectorRef);
106
121
  ngOnInit(): void;
107
122
  ngOnChanges(changes: SimpleChanges): void;
123
+ /** Derive forOptionType for FOR loop from config so dropdown shows existing selection */
124
+ private getForOptionTypeFromConfig;
125
+ /** Test Data Profile dropdown value: prefer forLoopTestDataId from config (or dataMapJson/dataMapBean). Use option.id when options loaded so type matches select. */
126
+ private getTestDataProfileFormValue;
127
+ /** Loop Start dropdown value: prefer forLoopStartIndex from config (or dataMapJson/dataMapBean), else startStep */
128
+ private getLoopStartFormValue;
129
+ /** Loop End dropdown value: prefer forLoopEndIndex from config (or dataMapJson/dataMapBean), else endStep */
130
+ private getLoopEndFormValue;
108
131
  private buildEditForm;
109
- /** Build select configs once (same option shape as default stories: id + name) */
132
+ /**
133
+ * Populate condition, selectedTemplate and template variables from config.naturalTextActionId when options are available.
134
+ * Returns { condition } if a match was found so buildEditForm can set initial form value.
135
+ */
136
+ private populateWhileConditionFromNaturalTextActionId;
137
+ /** Rebuild condition + template state when naturalTextActionsOptions load or config changes (same as condition-step). */
138
+ private rebuildWhileConditionFromNaturalTextAction;
139
+ /** Build select configs once (same option shape as default stories: id + name); FOR loop adds selectedValue from step */
110
140
  private buildSelectConfigs;
111
- /** Update condition select config with natural text actions options */
141
+ /** Update condition select config with natural text actions options (legacy mat-select) */
112
142
  private updateConditionSelectConfig;
113
- /** Update test data profile select config with current options and callbacks */
143
+ /** While loop: only show options with stepActionType === "WHILE_LOOP" */
144
+ private updateWhileConditionSelectConfig;
145
+ /** Options for the while condition autocomplete (WHILE_LOOP natural text actions only) */
146
+ get whileConditionAutocompleteOptions(): (CqaAutocompleteOption & {
147
+ template?: any;
148
+ })[];
149
+ onConditionSelect(option: CqaAutocompleteOption & {
150
+ template?: any;
151
+ }): void;
152
+ private buildTemplateVariablesForm;
153
+ getSelectConfigForVariable(variable: any): DynamicSelectFieldConfig;
154
+ /** Update test data profile select config with current options and selectedValue (forLoopTestDataId). Ensure selected id is in options so mat-select can display it. */
114
155
  private updateTestDataProfileSelectConfig;
156
+ /** Update Loop Start / Loop End select configs with selectedValue (forLoopStartIndex, forLoopEndIndex) so dropdowns show selected */
157
+ private updateStartEndStepSelectConfigsSelectedValues;
158
+ /** Update all FOR loop select configs (testDataProfile, startStep, endStep) with selectedValue from step so dropdowns show selected */
159
+ private updateForLoopSelectConfigsSelectedValues;
115
160
  /** Convert DataProfileOption[] to SelectOption[] */
116
161
  private convertDataProfileOptionsToSelectOptions;
117
162
  /** Handle data profile selection */
@@ -125,6 +170,12 @@ export declare class TestCaseLoopStepComponent implements OnInit, OnChanges {
125
170
  isWhileLoop(): boolean;
126
171
  isForLoop(): boolean;
127
172
  getEndLabel(): string;
173
+ /** Resolve display start index: prefer forLoopStartIndex from step (or dataMapJson/dataMapBean), else startStep, else from nested steps */
174
+ private getDisplayStartIndex;
175
+ /** Resolve display end index: prefer forLoopEndIndex from step (or dataMapJson/dataMapBean), else endStep, else from nested steps */
176
+ private getDisplayEndIndex;
177
+ /** Resolve display profile name: map forLoopTestDataId to profile name from dataProfileOptions, else use testDataProfile */
178
+ private getDisplayTestDataProfileName;
128
179
  getStepsSummary(): string;
129
180
  getStartStepLabel(): string;
130
181
  getEndStepLabel(): string;
@@ -142,7 +193,16 @@ export declare class TestCaseLoopStepComponent implements OnInit, OnChanges {
142
193
  expanded: boolean;
143
194
  }, step: TestCaseStepConfig, index: number): void;
144
195
  onAddStep(): void;
145
- onDeleteStep(index: number): void;
196
+ /** Called from empty-state plus only; same behaviour as add-step-between (parentId = loop step id, position = parent + 1). */
197
+ onAddStepEmpty(): void;
198
+ onDeleteStep(payloadOrIndex: any, index?: number): void;
199
+ /** Re-emit edit from nested step so the portal can open edit modal (same as root level). */
200
+ onNestedEdit(event: {
201
+ step: TestCaseStepConfig;
202
+ index: number;
203
+ }): void;
204
+ /** Re-emit duplicate from nested step so the portal can duplicate (same as root level). */
205
+ onNestedDuplicate(event: any, step: TestCaseStepConfig): void;
146
206
  isNormalStep(step: TestCaseStepConfig): step is NormalStepConfig;
147
207
  isLoopStep(step: TestCaseStepConfig): step is LoopStepConfig;
148
208
  isConditionStep(step: TestCaseStepConfig): step is ConditionStepConfig;
@@ -152,6 +212,8 @@ export declare class TestCaseLoopStepComponent implements OnInit, OnChanges {
152
212
  onNestedConditionAddBranch(nestedStep: ConditionStepConfig, index: number): void;
153
213
  onNestedConditionDeleteBranch(nestedStep: ConditionStepConfig, branch: any, index: number): void;
154
214
  onOpenExternal(): void;
215
+ /** Sync FOR loop edit form so dropdowns show existing config (forOptionType, forLoopTestDataId/testDataProfile, forLoopStartIndex/forLoopEndIndex) */
216
+ private syncForLoopEditFormFromConfig;
155
217
  onEdit(): void;
156
218
  onEditApply(): void;
157
219
  onEditCancel(): void;
@@ -163,5 +225,5 @@ export declare class TestCaseLoopStepComponent implements OnInit, OnChanges {
163
225
  onMoreOptions(): void;
164
226
  onViewDetails(event?: MouseEvent): void;
165
227
  static ɵfac: i0.ɵɵFactoryDeclaration<TestCaseLoopStepComponent, never>;
166
- static ɵcmp: i0.ɵɵComponentDeclaration<TestCaseLoopStepComponent, "cqa-test-case-loop-step", never, { "config": "config"; "id": "id"; "loopType": "loopType"; "stepNumber": "stepNumber"; "condition": "condition"; "maxIterations": "maxIterations"; "testDataProfile": "testDataProfile"; "startStep": "startStep"; "endStep": "endStep"; "nestedSteps": "nestedSteps"; "expanded": "expanded"; "isNested": "isNested"; "isInsideLoop": "isInsideLoop"; "isReorder": "isReorder"; "selected": "selected"; "dataProfileOptions": "dataProfileOptions"; "hasMoreDataProfiles": "hasMoreDataProfiles"; "isLoadingDataProfiles": "isLoadingDataProfiles"; "naturalTextActionsOptions": "naturalTextActionsOptions"; "addStepBetweenAbove": "addStepBetweenAbove"; "addStepBetweenBelow": "addStepBetweenBelow"; "addStepBetween": "addStepBetween"; }, { "toggleExpanded": "toggleExpanded"; "testDataProfileChange": "testDataProfileChange"; "startStepChange": "startStepChange"; "endStepChange": "endStepChange"; "conditionChange": "conditionChange"; "maxIterationsChange": "maxIterationsChange"; "nestedStepChange": "nestedStepChange"; "addStep": "addStep"; "deleteStep": "deleteStep"; "duplicate": "duplicate"; "delete": "delete"; "moreOptions": "moreOptions"; "viewDetails": "viewDetails"; "editInDepth": "editInDepth"; "edit": "edit"; "dndDropInZone": "dndDropInZone"; "loadMoreDataProfiles": "loadMoreDataProfiles"; "searchDataProfiles": "searchDataProfiles"; "stepUpdate": "stepUpdate"; "clickAction": "clickAction"; "addStepBetweenClick": "addStepBetweenClick"; "selectionChange": "selectionChange"; }, never, never>;
228
+ static ɵcmp: i0.ɵɵComponentDeclaration<TestCaseLoopStepComponent, "cqa-test-case-loop-step", never, { "config": "config"; "id": "id"; "loopType": "loopType"; "stepNumber": "stepNumber"; "condition": "condition"; "maxIterations": "maxIterations"; "testDataProfile": "testDataProfile"; "startStep": "startStep"; "endStep": "endStep"; "nestedSteps": "nestedSteps"; "expanded": "expanded"; "isNested": "isNested"; "isInsideLoop": "isInsideLoop"; "isReorder": "isReorder"; "selected": "selected"; "dataProfileOptions": "dataProfileOptions"; "hasMoreDataProfiles": "hasMoreDataProfiles"; "isLoadingDataProfiles": "isLoadingDataProfiles"; "naturalTextActionsOptions": "naturalTextActionsOptions"; "setConditionTemplateVariables": "setConditionTemplateVariables"; "addStepBetweenAbove": "addStepBetweenAbove"; "addStepBetweenBelow": "addStepBetweenBelow"; "addStepBetween": "addStepBetween"; }, { "toggleExpanded": "toggleExpanded"; "testDataProfileChange": "testDataProfileChange"; "startStepChange": "startStepChange"; "endStepChange": "endStepChange"; "conditionChange": "conditionChange"; "maxIterationsChange": "maxIterationsChange"; "nestedStepChange": "nestedStepChange"; "addStep": "addStep"; "deleteStep": "deleteStep"; "duplicate": "duplicate"; "delete": "delete"; "moreOptions": "moreOptions"; "viewDetails": "viewDetails"; "editInDepth": "editInDepth"; "edit": "edit"; "dndDropInZone": "dndDropInZone"; "loadMoreDataProfiles": "loadMoreDataProfiles"; "searchDataProfiles": "searchDataProfiles"; "stepUpdate": "stepUpdate"; "clickAction": "clickAction"; "addStepBetweenClick": "addStepBetweenClick"; "selectionChange": "selectionChange"; }, never, never>;
167
229
  }
@@ -94,7 +94,14 @@ export declare class TestCaseStepGroupComponent implements OnInit, OnChanges, Do
94
94
  expanded: boolean;
95
95
  }, step: TestCaseStepConfig, index: number): void;
96
96
  onAddStep(): void;
97
- onDeleteStep(index: number): void;
97
+ onDeleteStep(payloadOrIndex: any, index?: number): void;
98
+ /** Re-emit edit from nested step so the portal can open edit modal (same as root level). */
99
+ onNestedEdit(event: {
100
+ step: TestCaseStepConfig;
101
+ index: number;
102
+ }): void;
103
+ /** Re-emit duplicate from nested step so the portal can duplicate (same as root level). */
104
+ onNestedDuplicate(event: any, step: TestCaseStepConfig): void;
98
105
  onViewDetails(event?: MouseEvent): void;
99
106
  onOpenExternal(): void;
100
107
  onEdit(): void;
@@ -1,6 +1,6 @@
1
1
  import { EventEmitter, ViewContainerRef, OnChanges, SimpleChanges, AfterViewInit, OnDestroy, ChangeDetectorRef } from '@angular/core';
2
2
  import { TestCaseStepComponentMap } from '../test-case-step-components.token';
3
- import { TestCaseStepConfig, ConditionBranch } from '../test-case-step.models';
3
+ import { TestCaseStepConfig, ConditionBranch, LoopStepConfig } from '../test-case-step.models';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class TestCaseDetailsRendererComponent implements OnChanges, AfterViewInit, OnDestroy {
6
6
  private componentMap;
@@ -58,6 +58,10 @@ export declare class TestCaseDetailsRendererComponent implements OnChanges, Afte
58
58
  addStepForBranch: EventEmitter<{
59
59
  branch: ConditionBranch;
60
60
  }>;
61
+ /** Emitted when empty loop step plus is clicked; same behaviour as add-step-between (parentId = loop step id). */
62
+ addStepForLoop: EventEmitter<{
63
+ loopStepConfig: LoopStepConfig;
64
+ }>;
61
65
  deleteStepWithBranch: EventEmitter<{
62
66
  branch: ConditionBranch;
63
67
  stepIndex: number;
@@ -118,5 +122,5 @@ export declare class TestCaseDetailsRendererComponent implements OnChanges, Afte
118
122
  private wireOutputs;
119
123
  ngOnDestroy(): void;
120
124
  static ɵfac: i0.ɵɵFactoryDeclaration<TestCaseDetailsRendererComponent, never>;
121
- static ɵcmp: i0.ɵɵComponentDeclaration<TestCaseDetailsRendererComponent, "cqa-test-case-details-renderer", never, { "step": "step"; "index": "index"; "isNested": "isNested"; "isInsideLoop": "isInsideLoop"; "branch": "branch"; "isReorder": "isReorder"; "selected": "selected"; "addStepBetweenAbove": "addStepBetweenAbove"; "addStepBetweenBelow": "addStepBetweenBelow"; "addStepBetween": "addStepBetween"; "dataProfileOptions": "dataProfileOptions"; "hasMoreDataProfiles": "hasMoreDataProfiles"; "isLoadingDataProfiles": "isLoadingDataProfiles"; "naturalTextActionsOptions": "naturalTextActionsOptions"; "setConditionTemplateVariables": "setConditionTemplateVariables"; }, { "nestedStepChange": "nestedStepChange"; "addStep": "addStep"; "deleteStep": "deleteStep"; "toggleExpanded": "toggleExpanded"; "groupNameChange": "groupNameChange"; "descriptionChange": "descriptionChange"; "reusableChange": "reusableChange"; "openExternal": "openExternal"; "edit": "edit"; "link": "link"; "duplicate": "duplicate"; "delete": "delete"; "viewDetails": "viewDetails"; "selectionChange": "selectionChange"; "conditionChange": "conditionChange"; "branchStepChange": "branchStepChange"; "addStepForBranch": "addStepForBranch"; "deleteStepWithBranch": "deleteStepWithBranch"; "addBranch": "addBranch"; "addElse": "addElse"; "deleteBranch": "deleteBranch"; "testDataProfileChange": "testDataProfileChange"; "startStepChange": "startStepChange"; "endStepChange": "endStepChange"; "maxIterationsChange": "maxIterationsChange"; "eventTypeChange": "eventTypeChange"; "parameterChange": "parameterChange"; "clickAction": "clickAction"; "dndDropInZone": "dndDropInZone"; "loadMoreDataProfiles": "loadMoreDataProfiles"; "searchDataProfiles": "searchDataProfiles"; "stepUpdate": "stepUpdate"; "addStepBetweenClick": "addStepBetweenClick"; "editInDepth": "editInDepth"; }, never, never>;
125
+ static ɵcmp: i0.ɵɵComponentDeclaration<TestCaseDetailsRendererComponent, "cqa-test-case-details-renderer", never, { "step": "step"; "index": "index"; "isNested": "isNested"; "isInsideLoop": "isInsideLoop"; "branch": "branch"; "isReorder": "isReorder"; "selected": "selected"; "addStepBetweenAbove": "addStepBetweenAbove"; "addStepBetweenBelow": "addStepBetweenBelow"; "addStepBetween": "addStepBetween"; "dataProfileOptions": "dataProfileOptions"; "hasMoreDataProfiles": "hasMoreDataProfiles"; "isLoadingDataProfiles": "isLoadingDataProfiles"; "naturalTextActionsOptions": "naturalTextActionsOptions"; "setConditionTemplateVariables": "setConditionTemplateVariables"; }, { "nestedStepChange": "nestedStepChange"; "addStep": "addStep"; "deleteStep": "deleteStep"; "toggleExpanded": "toggleExpanded"; "groupNameChange": "groupNameChange"; "descriptionChange": "descriptionChange"; "reusableChange": "reusableChange"; "openExternal": "openExternal"; "edit": "edit"; "link": "link"; "duplicate": "duplicate"; "delete": "delete"; "viewDetails": "viewDetails"; "selectionChange": "selectionChange"; "conditionChange": "conditionChange"; "branchStepChange": "branchStepChange"; "addStepForBranch": "addStepForBranch"; "addStepForLoop": "addStepForLoop"; "deleteStepWithBranch": "deleteStepWithBranch"; "addBranch": "addBranch"; "addElse": "addElse"; "deleteBranch": "deleteBranch"; "testDataProfileChange": "testDataProfileChange"; "startStepChange": "startStepChange"; "endStepChange": "endStepChange"; "maxIterationsChange": "maxIterationsChange"; "eventTypeChange": "eventTypeChange"; "parameterChange": "parameterChange"; "clickAction": "clickAction"; "dndDropInZone": "dndDropInZone"; "loadMoreDataProfiles": "loadMoreDataProfiles"; "searchDataProfiles": "searchDataProfiles"; "stepUpdate": "stepUpdate"; "addStepBetweenClick": "addStepBetweenClick"; "editInDepth": "editInDepth"; }, never, never>;
122
126
  }
@@ -134,9 +134,14 @@ export interface LoopStepConfig extends BaseStepConfig {
134
134
  testDataProfile?: string;
135
135
  startStep?: number;
136
136
  endStep?: number;
137
+ /** FOR loop: API values for display (Start/End labels and Test Data profile id) */
138
+ forLoopStartIndex?: number;
139
+ forLoopEndIndex?: number;
140
+ forLoopTestDataId?: number;
137
141
  nestedSteps: TestCaseStepConfig[];
138
142
  }
139
143
  export interface ConditionBranch {
144
+ id?: number;
140
145
  type: 'if' | 'else' | 'else-if';
141
146
  stepType: StepTypes.CONDITION_IF;
142
147
  label: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cqa-lib/cqa-ui",
3
- "version": "1.1.238",
3
+ "version": "1.1.240",
4
4
  "description": "UI Kit library for Angular 13.4",
5
5
  "keywords": [
6
6
  "angular",