@cqa-lib/cqa-ui 1.1.237 → 1.1.239
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.
- package/esm2020/lib/compare-runs/compare-runs.component.mjs +1 -1
- package/esm2020/lib/execution-screen/db-query-execution-item/db-query-execution-item.component.mjs +1 -1
- package/esm2020/lib/execution-screen/db-verification-step/db-verification-step.component.mjs +1 -1
- package/esm2020/lib/iterations-loop/iterations-loop.component.mjs +1 -1
- package/esm2020/lib/templates/table-template.component.mjs +79 -5
- package/esm2020/lib/test-case-details/ai-agent-step/ai-agent-step.component.mjs +3 -3
- package/esm2020/lib/test-case-details/ai-verify-step/ai-verify-step.component.mjs +3 -3
- package/esm2020/lib/test-case-details/api-step/api-step.component.mjs +3 -3
- package/esm2020/lib/test-case-details/condition-step/condition-step.component.mjs +38 -3
- package/esm2020/lib/test-case-details/custom-code-step/custom-code-step.component.mjs +3 -3
- package/esm2020/lib/test-case-details/database-step/database-step.component.mjs +3 -3
- package/esm2020/lib/test-case-details/loop-step/loop-step.component.mjs +506 -44
- package/esm2020/lib/test-case-details/normal-step/normal-step.component.mjs +3 -3
- package/esm2020/lib/test-case-details/restore-session-step/restore-session-step.component.mjs +3 -3
- package/esm2020/lib/test-case-details/screenshot-step/screenshot-step.component.mjs +3 -3
- package/esm2020/lib/test-case-details/scroll-step/scroll-step.component.mjs +3 -3
- package/esm2020/lib/test-case-details/step-group/step-group.component.mjs +18 -5
- package/esm2020/lib/test-case-details/test-case-details-renderer/test-case-details-renderer.component.mjs +21 -7
- package/esm2020/lib/test-case-details/test-case-step.models.mjs +1 -1
- package/esm2020/lib/test-case-details/upload-step/upload-step.component.mjs +3 -3
- package/esm2020/lib/test-case-details/verify-url-step/verify-url-step.component.mjs +3 -3
- package/fesm2015/cqa-lib-cqa-ui.mjs +692 -118
- package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -1
- package/fesm2020/cqa-lib-cqa-ui.mjs +679 -85
- package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -1
- package/lib/templates/table-template.component.d.ts +7 -1
- package/lib/test-case-details/condition-step/condition-step.component.d.ts +12 -1
- package/lib/test-case-details/loop-step/loop-step.component.d.ts +70 -8
- package/lib/test-case-details/step-group/step-group.component.d.ts +8 -1
- package/lib/test-case-details/test-case-details-renderer/test-case-details-renderer.component.d.ts +6 -2
- package/lib/test-case-details/test-case-step.models.d.ts +5 -0
- package/package.json +1 -1
- package/styles.css +1 -1
|
@@ -68,6 +68,7 @@ export declare class TableTemplateComponent implements OnInit, OnChanges, OnDest
|
|
|
68
68
|
path: string;
|
|
69
69
|
source: string;
|
|
70
70
|
}) => void;
|
|
71
|
+
selectedItems: any[];
|
|
71
72
|
private _columnVisibility;
|
|
72
73
|
private _cachedVisibilityColumns;
|
|
73
74
|
filteredRows: any[];
|
|
@@ -89,6 +90,11 @@ export declare class TableTemplateComponent implements OnInit, OnChanges, OnDest
|
|
|
89
90
|
ngOnInit(): void;
|
|
90
91
|
ngOnChanges(changes: SimpleChanges): void;
|
|
91
92
|
private initializeComponent;
|
|
93
|
+
/**
|
|
94
|
+
* Get selected IDs from selectedItems (objects)
|
|
95
|
+
*/
|
|
96
|
+
private getSelectedIds;
|
|
97
|
+
private restoreSelectionState;
|
|
92
98
|
private initializeColumnVisibility;
|
|
93
99
|
get anyRowSelected(): boolean;
|
|
94
100
|
get currentSelectedItems(): any[];
|
|
@@ -137,5 +143,5 @@ export declare class TableTemplateComponent implements OnInit, OnChanges, OnDest
|
|
|
137
143
|
name?: string;
|
|
138
144
|
}>;
|
|
139
145
|
static ɵfac: i0.ɵɵFactoryDeclaration<TableTemplateComponent, never>;
|
|
140
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<TableTemplateComponent, "cqa-table-template", never, { "searchPlaceholder": "searchPlaceholder"; "searchValue": "searchValue"; "showClear": "showClear"; "showSearchBar": "showSearchBar"; "showExportButton": "showExportButton"; "isExporting": "isExporting"; "filterConfig": "filterConfig"; "showFilterPanel": "showFilterPanel"; "showFilterButton": "showFilterButton"; "otherButtons": "otherButtons"; "otherDropDownButtons": "otherDropDownButtons"; "otherSelectDropDownButtons": "otherSelectDropDownButtons"; "otherButtonLabel": "otherButtonLabel"; "otherButtonVariant": "otherButtonVariant"; "showOtherButton": "showOtherButton"; "showActionButton": "showActionButton"; "showSettingsButton": "showSettingsButton"; "showAutoRefreshButton": "showAutoRefreshButton"; "data": "data"; "isEmptyState": "isEmptyState"; "emptyStateConfig": "emptyStateConfig"; "actions": "actions"; "chips": "chips"; "filterApplied": "filterApplied"; "columns": "columns"; "selectedAutoRefreshInterval": "selectedAutoRefreshInterval"; "pageIndex": "pageIndex"; "pageSize": "pageSize"; "pageSizeOptions": "pageSizeOptions"; "serverSidePagination": "serverSidePagination"; "totalElements": "totalElements"; "isTableLoading": "isTableLoading"; "isTableDataLoading": "isTableDataLoading"; "cellJsonPathGetter": "cellJsonPathGetter"; "onJsonPathCopiedHandler": "onJsonPathCopiedHandler"; }, { "onSearchChange": "onSearchChange"; "onExportClick": "onExportClick"; "onApplyFilterClick": "onApplyFilterClick"; "onResetFilterClick": "onResetFilterClick"; "onClearAll": "onClearAll"; "removeChip": "removeChip"; "pageChange": "pageChange"; "onReload": "onReload"; "onAutoRefreshClick": "onAutoRefreshClick"; }, never, never>;
|
|
146
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TableTemplateComponent, "cqa-table-template", never, { "searchPlaceholder": "searchPlaceholder"; "searchValue": "searchValue"; "showClear": "showClear"; "showSearchBar": "showSearchBar"; "showExportButton": "showExportButton"; "isExporting": "isExporting"; "filterConfig": "filterConfig"; "showFilterPanel": "showFilterPanel"; "showFilterButton": "showFilterButton"; "otherButtons": "otherButtons"; "otherDropDownButtons": "otherDropDownButtons"; "otherSelectDropDownButtons": "otherSelectDropDownButtons"; "otherButtonLabel": "otherButtonLabel"; "otherButtonVariant": "otherButtonVariant"; "showOtherButton": "showOtherButton"; "showActionButton": "showActionButton"; "showSettingsButton": "showSettingsButton"; "showAutoRefreshButton": "showAutoRefreshButton"; "data": "data"; "isEmptyState": "isEmptyState"; "emptyStateConfig": "emptyStateConfig"; "actions": "actions"; "chips": "chips"; "filterApplied": "filterApplied"; "columns": "columns"; "selectedAutoRefreshInterval": "selectedAutoRefreshInterval"; "pageIndex": "pageIndex"; "pageSize": "pageSize"; "pageSizeOptions": "pageSizeOptions"; "serverSidePagination": "serverSidePagination"; "totalElements": "totalElements"; "isTableLoading": "isTableLoading"; "isTableDataLoading": "isTableDataLoading"; "cellJsonPathGetter": "cellJsonPathGetter"; "onJsonPathCopiedHandler": "onJsonPathCopiedHandler"; "selectedItems": "selectedItems"; }, { "onSearchChange": "onSearchChange"; "onExportClick": "onExportClick"; "onApplyFilterClick": "onApplyFilterClick"; "onResetFilterClick": "onResetFilterClick"; "onClearAll": "onClearAll"; "removeChip": "removeChip"; "pageChange": "pageChange"; "onReload": "onReload"; "onAutoRefreshClick": "onAutoRefreshClick"; }, never, never>;
|
|
141
147
|
}
|
|
@@ -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
|
-
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
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
|
-
|
|
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(
|
|
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;
|
package/lib/test-case-details/test-case-details-renderer/test-case-details-renderer.component.d.ts
CHANGED
|
@@ -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;
|