@cqa-lib/cqa-ui 1.1.540 → 1.1.541-gamma.7
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/.github/workflows/README.md +8 -1
- package/esm2020/lib/compare-runs/compare-runs.component.mjs +1 -1
- package/esm2020/lib/execution-screen/condition-debug-step/condition-branch-editor.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/mixed-variable-input/mixed-variable-input.component.mjs +30 -10
- package/esm2020/lib/new-global-variable-dialog/global-variable-tags-input.component.mjs +129 -0
- package/esm2020/lib/new-global-variable-dialog/new-global-variable-dialog.component.mjs +16 -5
- package/esm2020/lib/new-global-variable-dialog/new-global-variable-dialog.models.mjs +1 -1
- package/esm2020/lib/segment-control/segment-control.component.mjs +12 -4
- package/esm2020/lib/step-builder/step-builder-action/step-builder-action.component.mjs +17 -3
- package/esm2020/lib/step-builder/step-builder-condition/step-builder-condition.component.mjs +17 -3
- package/esm2020/lib/step-builder/step-builder-loop/step-builder-loop.component.mjs +12 -3
- package/esm2020/lib/step-builder/template-variables-form/template-variables-form.component.mjs +315 -27
- package/esm2020/lib/templates/modular-table-template/folder-sidebar/folder-sidebar.component.mjs +3 -3
- package/esm2020/lib/templates/table-template.component.mjs +5 -3
- package/esm2020/lib/test-case-details/data-library-panel/data-library-panel.component.mjs +116 -0
- package/esm2020/lib/test-case-details/data-library-panel/data-library-panel.models.mjs +2 -0
- package/esm2020/lib/test-case-details/data-library-panel/element-card.component.mjs +36 -0
- package/esm2020/lib/test-case-details/data-library-panel/test-data-profile-card.component.mjs +38 -0
- package/esm2020/lib/test-case-details/test-case-details-edit/test-case-details-edit.component.mjs +43 -4
- package/esm2020/lib/test-case-details/test-case-details.models.mjs +3 -1
- package/esm2020/lib/test-case-details/test-data-modal/test-data-modal-data.mjs +1 -1
- package/esm2020/lib/test-case-details/test-data-modal/test-data-modal.component.mjs +119 -6
- package/esm2020/lib/ui-kit.module.mjs +23 -3
- package/esm2020/public-api.mjs +6 -1
- package/fesm2015/cqa-lib-cqa-ui.mjs +977 -132
- package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -1
- package/fesm2020/cqa-lib-cqa-ui.mjs +896 -62
- package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -1
- package/lib/new-global-variable-dialog/global-variable-tags-input.component.d.ts +39 -0
- package/lib/new-global-variable-dialog/new-global-variable-dialog.component.d.ts +5 -2
- package/lib/new-global-variable-dialog/new-global-variable-dialog.models.d.ts +8 -0
- package/lib/segment-control/segment-control.component.d.ts +3 -1
- package/lib/step-builder/step-builder-action/step-builder-action.component.d.ts +15 -1
- package/lib/step-builder/step-builder-condition/step-builder-condition.component.d.ts +15 -1
- package/lib/step-builder/step-builder-loop/step-builder-loop.component.d.ts +11 -1
- package/lib/step-builder/template-variables-form/template-variables-form.component.d.ts +71 -4
- package/lib/templates/table-template.component.d.ts +8 -1
- package/lib/test-case-details/data-library-panel/data-library-panel.component.d.ts +42 -0
- package/lib/test-case-details/data-library-panel/data-library-panel.models.d.ts +17 -0
- package/lib/test-case-details/data-library-panel/element-card.component.d.ts +13 -0
- package/lib/test-case-details/data-library-panel/test-data-profile-card.component.d.ts +13 -0
- package/lib/test-case-details/test-case-details-edit/test-case-details-edit.component.d.ts +7 -0
- package/lib/test-case-details/test-case-details.models.d.ts +2 -0
- package/lib/test-case-details/test-data-modal/test-data-modal-data.d.ts +17 -1
- package/lib/test-case-details/test-data-modal/test-data-modal.component.d.ts +34 -6
- package/lib/ui-kit.module.d.ts +100 -96
- package/package.json +1 -1
- package/public-api.d.ts +5 -0
- package/styles.css +1 -1
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { ChangeDetectorRef, ElementRef, EventEmitter } from '@angular/core';
|
|
2
|
+
import { GlobalVariableTagOption } from './new-global-variable-dialog.models';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* Tag chip-list + autocomplete used by the New / Edit Global Variable dialog.
|
|
6
|
+
* Mirrors the React `TagsEditor` block in
|
|
7
|
+
* `Environment and Data Management_CD Deisgns/src/Global.jsx:179-237`:
|
|
8
|
+
*
|
|
9
|
+
* [chip × …] [+ Add tag] ← inactive state
|
|
10
|
+
* [chip × …] [_input_ ↳ suggestions] ← active state
|
|
11
|
+
*
|
|
12
|
+
* Behavior:
|
|
13
|
+
* - Backspace on an empty input removes the last tag.
|
|
14
|
+
* - Enter commits the trimmed lowercase value (creates if not in available).
|
|
15
|
+
* - Escape exits the input without committing.
|
|
16
|
+
* - Suggestions are computed from `availableTags`, capped at 4.
|
|
17
|
+
*/
|
|
18
|
+
export declare class GlobalVariableTagsInputComponent {
|
|
19
|
+
private readonly cdr;
|
|
20
|
+
tags: string[];
|
|
21
|
+
availableTags: GlobalVariableTagOption[];
|
|
22
|
+
tagsChange: EventEmitter<string[]>;
|
|
23
|
+
tagInputRef?: ElementRef<HTMLInputElement>;
|
|
24
|
+
adding: boolean;
|
|
25
|
+
draft: string;
|
|
26
|
+
constructor(cdr: ChangeDetectorRef);
|
|
27
|
+
get suggestions(): GlobalVariableTagOption[];
|
|
28
|
+
beginAdd(): void;
|
|
29
|
+
onDraftChange(next: string): void;
|
|
30
|
+
onKeyDown(event: KeyboardEvent): void;
|
|
31
|
+
onSuggestionMouseDown(event: MouseEvent, suggestion: GlobalVariableTagOption): void;
|
|
32
|
+
onBlur(): void;
|
|
33
|
+
removeAt(index: number): void;
|
|
34
|
+
private commitDraft;
|
|
35
|
+
private commit;
|
|
36
|
+
private cancelAdd;
|
|
37
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<GlobalVariableTagsInputComponent, never>;
|
|
38
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<GlobalVariableTagsInputComponent, "lib-global-variable-tags-input", never, { "tags": "tags"; "availableTags": "availableTags"; }, { "tagsChange": "tagsChange"; }, never, never>;
|
|
39
|
+
}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { ChangeDetectorRef, OnInit } from '@angular/core';
|
|
2
|
-
import { GlobalVariableDialogValue, GlobalVariableUIPermission, GlobalVariableUIType } from './new-global-variable-dialog.models';
|
|
2
|
+
import { GlobalVariableDialogValue, GlobalVariableTagOption, GlobalVariableUIPermission, GlobalVariableUIType } from './new-global-variable-dialog.models';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export declare class NewGlobalVariableDialogComponent implements OnInit {
|
|
5
5
|
private readonly cdr;
|
|
6
6
|
mode: 'create' | 'edit';
|
|
7
7
|
initialValue?: Partial<GlobalVariableDialogValue>;
|
|
8
8
|
existingNames: string[];
|
|
9
|
+
availableTags: GlobalVariableTagOption[];
|
|
9
10
|
readonly typeOptions: GlobalVariableUIType[];
|
|
10
11
|
readonly typeDropdownOptions: {
|
|
11
12
|
label: string;
|
|
@@ -21,6 +22,7 @@ export declare class NewGlobalVariableDialogComponent implements OnInit {
|
|
|
21
22
|
value: string;
|
|
22
23
|
readWriteMode: GlobalVariableUIPermission;
|
|
23
24
|
description: string;
|
|
25
|
+
tags: string[];
|
|
24
26
|
passwordTouched: boolean;
|
|
25
27
|
nameError: string | null;
|
|
26
28
|
valueError: string | null;
|
|
@@ -50,6 +52,7 @@ export declare class NewGlobalVariableDialogComponent implements OnInit {
|
|
|
50
52
|
onValueChange(next: string): void;
|
|
51
53
|
onBooleanValueChange(next: string): void;
|
|
52
54
|
onDescriptionChange(next: string): void;
|
|
55
|
+
onTagsChange(next: string[]): void;
|
|
53
56
|
/**
|
|
54
57
|
* Called by the host (via DialogRef.getComponentInstance()) when the primary
|
|
55
58
|
* button is clicked. Returns the captured value when valid, or null when the
|
|
@@ -60,5 +63,5 @@ export declare class NewGlobalVariableDialogComponent implements OnInit {
|
|
|
60
63
|
private isDuplicateName;
|
|
61
64
|
private isValidNumber;
|
|
62
65
|
static ɵfac: i0.ɵɵFactoryDeclaration<NewGlobalVariableDialogComponent, never>;
|
|
63
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<NewGlobalVariableDialogComponent, "cqa-new-global-variable-dialog", never, { "mode": "mode"; "initialValue": "initialValue"; "existingNames": "existingNames"; }, {}, never, never>;
|
|
66
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NewGlobalVariableDialogComponent, "cqa-new-global-variable-dialog", never, { "mode": "mode"; "initialValue": "initialValue"; "existingNames": "existingNames"; "availableTags": "availableTags"; }, {}, never, never>;
|
|
64
67
|
}
|
|
@@ -6,9 +6,17 @@ export interface GlobalVariableDialogValue {
|
|
|
6
6
|
value: string | null;
|
|
7
7
|
readWriteMode: GlobalVariableUIPermission;
|
|
8
8
|
description: string | null;
|
|
9
|
+
tags: string[];
|
|
10
|
+
}
|
|
11
|
+
/** A tag option for the dialog's autocomplete. `count` drives the small usage
|
|
12
|
+
* badge in the suggestion list; pass 0 (or omit) for newly-created entries. */
|
|
13
|
+
export interface GlobalVariableTagOption {
|
|
14
|
+
name: string;
|
|
15
|
+
count?: number;
|
|
9
16
|
}
|
|
10
17
|
export interface NewGlobalVariableDialogInputs {
|
|
11
18
|
mode?: 'create' | 'edit';
|
|
12
19
|
initialValue?: Partial<GlobalVariableDialogValue>;
|
|
13
20
|
existingNames?: string[];
|
|
21
|
+
availableTags?: GlobalVariableTagOption[];
|
|
14
22
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AfterViewInit, ElementRef, EventEmitter, OnDestroy, OnChanges, QueryList, SimpleChanges } from '@angular/core';
|
|
1
|
+
import { AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, OnDestroy, OnChanges, QueryList, SimpleChanges } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
export declare type SegmentOption = {
|
|
4
4
|
label: string;
|
|
@@ -9,6 +9,7 @@ export declare type SegmentOption = {
|
|
|
9
9
|
count?: number;
|
|
10
10
|
};
|
|
11
11
|
export declare class SegmentControlComponent implements OnChanges, AfterViewInit, OnDestroy {
|
|
12
|
+
private readonly cdr;
|
|
12
13
|
segments: SegmentOption[];
|
|
13
14
|
/**
|
|
14
15
|
* The currently selected segment value.
|
|
@@ -28,6 +29,7 @@ export declare class SegmentControlComponent implements OnChanges, AfterViewInit
|
|
|
28
29
|
indicatorStyle: Record<string, string>;
|
|
29
30
|
indicatorVisible: boolean;
|
|
30
31
|
private buttonChangesSub?;
|
|
32
|
+
constructor(cdr: ChangeDetectorRef);
|
|
31
33
|
ngOnChanges(changes: SimpleChanges): void;
|
|
32
34
|
ngAfterViewInit(): void;
|
|
33
35
|
ngOnDestroy(): void;
|
|
@@ -110,6 +110,19 @@ export declare class StepBuilderActionComponent implements OnInit, OnChanges, On
|
|
|
110
110
|
hasMoreEnvironments: boolean;
|
|
111
111
|
/** True while parent is loading environments (search or load more) */
|
|
112
112
|
isLoadingEnvironments: boolean;
|
|
113
|
+
/** Global Data variables (workspace-scoped) for the Global Data tab. */
|
|
114
|
+
globalVariableOptions: {
|
|
115
|
+
id: string;
|
|
116
|
+
name: string;
|
|
117
|
+
value: string;
|
|
118
|
+
type?: string;
|
|
119
|
+
readWriteMode?: string;
|
|
120
|
+
}[];
|
|
121
|
+
isLoadingGlobalVariables: boolean;
|
|
122
|
+
/** Resolved test-case environment name, used for the env banner subhead. */
|
|
123
|
+
testCaseEnvironmentName?: string;
|
|
124
|
+
/** Test case's TDP id (when set, lock the TDP picker in the parameter tab). */
|
|
125
|
+
testCaseTestDataId?: number | null;
|
|
113
126
|
/** Default test data profile ID from test case (if available, profile and data set dropdowns will be disabled) */
|
|
114
127
|
defaultTestDataProfileId?: number;
|
|
115
128
|
/** Default test data start index from test case (data set index in the profile) */
|
|
@@ -140,6 +153,7 @@ export declare class StepBuilderActionComponent implements OnInit, OnChanges, On
|
|
|
140
153
|
loadMoreUploads: EventEmitter<void>;
|
|
141
154
|
searchEnvironments: EventEmitter<string>;
|
|
142
155
|
loadMoreEnvironments: EventEmitter<void>;
|
|
156
|
+
searchGlobalVariables: EventEmitter<string>;
|
|
143
157
|
/** Emit when step is created */
|
|
144
158
|
createStep: EventEmitter<any>;
|
|
145
159
|
/** Emit when cancelled */
|
|
@@ -232,6 +246,6 @@ export declare class StepBuilderActionComponent implements OnInit, OnChanges, On
|
|
|
232
246
|
*/
|
|
233
247
|
get environmentVariableAvailable(): boolean;
|
|
234
248
|
static ɵfac: i0.ɵɵFactoryDeclaration<StepBuilderActionComponent, never>;
|
|
235
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<StepBuilderActionComponent, "cqa-step-builder-action", never, { "showHeader": "showHeader"; "changeTemplateSignal": "changeTemplateSignal"; "cancelChangeTemplateSignal": "cancelChangeTemplateSignal"; "templates": "templates"; "initialTemplate": "initialTemplate"; "initialDescription": "initialDescription"; "initialMetadata": "initialMetadata"; "isDebug": "isDebug"; "editMode": "editMode"; "searchPlaceholder": "searchPlaceholder"; "setTemplateVariables": "setTemplateVariables"; "setAdvancedSettingsVariables": "setAdvancedSettingsVariables"; "computeHtmlGrammarFn": "computeHtmlGrammarFn"; "preventSelectTemplate": "preventSelectTemplate"; "elementOptions": "elementOptions"; "hasMoreElements": "hasMoreElements"; "isLoadingElements": "isLoadingElements"; "screenNameOptions": "screenNameOptions"; "hasMoreScreenNames": "hasMoreScreenNames"; "isLoadingScreenNames": "isLoadingScreenNames"; "parameterOptions": "parameterOptions"; "hasMoreParameters": "hasMoreParameters"; "isLoadingParameters": "isLoadingParameters"; "uploadOptions": "uploadOptions"; "hasMoreUploads": "hasMoreUploads"; "isLoadingUploads": "isLoadingUploads"; "environmentOptions": "environmentOptions"; "hasMoreEnvironments": "hasMoreEnvironments"; "isLoadingEnvironments": "isLoadingEnvironments"; "defaultTestDataProfileId": "defaultTestDataProfileId"; "defaultTestDataStartIndex": "defaultTestDataStartIndex"; "defaultTestDataEndIndex": "defaultTestDataEndIndex"; "isInsideForLoopStep": "isInsideForLoopStep"; "hasTestDataProfile": "hasTestDataProfile"; "isCreatingStep": "isCreatingStep"; "elementScreenPrefill": "elementScreenPrefill"; }, { "templateChanged": "templateChanged"; "loadMoreElements": "loadMoreElements"; "searchElements": "searchElements"; "searchElementsByScreenName": "searchElementsByScreenName"; "createElement": "createElement"; "searchScreenName": "searchScreenName"; "loadMoreScreenNames": "loadMoreScreenNames"; "createScreenNameRequest": "createScreenNameRequest"; "searchParameters": "searchParameters"; "loadMoreParameters": "loadMoreParameters"; "searchUploads": "searchUploads"; "loadMoreUploads": "loadMoreUploads"; "searchEnvironments": "searchEnvironments"; "loadMoreEnvironments": "loadMoreEnvironments"; "createStep": "createStep"; "cancelled": "cancelled"; "redirectToParameter": "redirectToParameter"; "redirectToEnvironment": "redirectToEnvironment"; }, never, never>;
|
|
249
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<StepBuilderActionComponent, "cqa-step-builder-action", never, { "showHeader": "showHeader"; "changeTemplateSignal": "changeTemplateSignal"; "cancelChangeTemplateSignal": "cancelChangeTemplateSignal"; "templates": "templates"; "initialTemplate": "initialTemplate"; "initialDescription": "initialDescription"; "initialMetadata": "initialMetadata"; "isDebug": "isDebug"; "editMode": "editMode"; "searchPlaceholder": "searchPlaceholder"; "setTemplateVariables": "setTemplateVariables"; "setAdvancedSettingsVariables": "setAdvancedSettingsVariables"; "computeHtmlGrammarFn": "computeHtmlGrammarFn"; "preventSelectTemplate": "preventSelectTemplate"; "elementOptions": "elementOptions"; "hasMoreElements": "hasMoreElements"; "isLoadingElements": "isLoadingElements"; "screenNameOptions": "screenNameOptions"; "hasMoreScreenNames": "hasMoreScreenNames"; "isLoadingScreenNames": "isLoadingScreenNames"; "parameterOptions": "parameterOptions"; "hasMoreParameters": "hasMoreParameters"; "isLoadingParameters": "isLoadingParameters"; "uploadOptions": "uploadOptions"; "hasMoreUploads": "hasMoreUploads"; "isLoadingUploads": "isLoadingUploads"; "environmentOptions": "environmentOptions"; "hasMoreEnvironments": "hasMoreEnvironments"; "isLoadingEnvironments": "isLoadingEnvironments"; "globalVariableOptions": "globalVariableOptions"; "isLoadingGlobalVariables": "isLoadingGlobalVariables"; "testCaseEnvironmentName": "testCaseEnvironmentName"; "testCaseTestDataId": "testCaseTestDataId"; "defaultTestDataProfileId": "defaultTestDataProfileId"; "defaultTestDataStartIndex": "defaultTestDataStartIndex"; "defaultTestDataEndIndex": "defaultTestDataEndIndex"; "isInsideForLoopStep": "isInsideForLoopStep"; "hasTestDataProfile": "hasTestDataProfile"; "isCreatingStep": "isCreatingStep"; "elementScreenPrefill": "elementScreenPrefill"; }, { "templateChanged": "templateChanged"; "loadMoreElements": "loadMoreElements"; "searchElements": "searchElements"; "searchElementsByScreenName": "searchElementsByScreenName"; "createElement": "createElement"; "searchScreenName": "searchScreenName"; "loadMoreScreenNames": "loadMoreScreenNames"; "createScreenNameRequest": "createScreenNameRequest"; "searchParameters": "searchParameters"; "loadMoreParameters": "loadMoreParameters"; "searchUploads": "searchUploads"; "loadMoreUploads": "loadMoreUploads"; "searchEnvironments": "searchEnvironments"; "loadMoreEnvironments": "loadMoreEnvironments"; "searchGlobalVariables": "searchGlobalVariables"; "createStep": "createStep"; "cancelled": "cancelled"; "redirectToParameter": "redirectToParameter"; "redirectToEnvironment": "redirectToEnvironment"; }, never, never>;
|
|
236
250
|
}
|
|
237
251
|
export {};
|
|
@@ -61,6 +61,19 @@ export declare class StepBuilderConditionComponent implements OnInit, OnChanges
|
|
|
61
61
|
}[];
|
|
62
62
|
hasMoreEnvironments: boolean;
|
|
63
63
|
isLoadingEnvironments: boolean;
|
|
64
|
+
/** Global Data variables (workspace-scoped) for the Global Data tab. */
|
|
65
|
+
globalVariableOptions: {
|
|
66
|
+
id: string;
|
|
67
|
+
name: string;
|
|
68
|
+
value: string;
|
|
69
|
+
type?: string;
|
|
70
|
+
readWriteMode?: string;
|
|
71
|
+
}[];
|
|
72
|
+
isLoadingGlobalVariables: boolean;
|
|
73
|
+
/** Resolved test-case environment name, used for the env banner subhead. */
|
|
74
|
+
testCaseEnvironmentName?: string;
|
|
75
|
+
/** Test case's TDP id (when set, lock the TDP picker in the parameter tab). */
|
|
76
|
+
testCaseTestDataId?: number | null;
|
|
64
77
|
/** Default test data profile properties */
|
|
65
78
|
defaultTestDataProfileId?: number;
|
|
66
79
|
defaultTestDataStartIndex?: number;
|
|
@@ -89,6 +102,7 @@ export declare class StepBuilderConditionComponent implements OnInit, OnChanges
|
|
|
89
102
|
loadMoreEnvironments: EventEmitter<void>;
|
|
90
103
|
redirectToParameter: EventEmitter<void>;
|
|
91
104
|
redirectToEnvironment: EventEmitter<void>;
|
|
105
|
+
searchGlobalVariables: EventEmitter<string>;
|
|
92
106
|
conditionForm: FormGroup;
|
|
93
107
|
includeElse: boolean;
|
|
94
108
|
private valueConfigCache;
|
|
@@ -157,6 +171,6 @@ export declare class StepBuilderConditionComponent implements OnInit, OnChanges
|
|
|
157
171
|
isFormValid(): boolean;
|
|
158
172
|
onCreateStep(): void;
|
|
159
173
|
static ɵfac: i0.ɵɵFactoryDeclaration<StepBuilderConditionComponent, never>;
|
|
160
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<StepBuilderConditionComponent, "cqa-step-builder-condition", never, { "operatorOptions": "operatorOptions"; "conditionTemplates": "conditionTemplates"; "setConditionTemplateVariables": "setConditionTemplateVariables"; "setAdvancedSettingsVariables": "setAdvancedSettingsVariables"; "computeHtmlGrammarFn": "computeHtmlGrammarFn"; "elementOptions": "elementOptions"; "hasMoreElements": "hasMoreElements"; "isLoadingElements": "isLoadingElements"; "screenNameOptions": "screenNameOptions"; "hasMoreScreenNames": "hasMoreScreenNames"; "isLoadingScreenNames": "isLoadingScreenNames"; "parameterOptions": "parameterOptions"; "hasMoreParameters": "hasMoreParameters"; "isLoadingParameters": "isLoadingParameters"; "environmentOptions": "environmentOptions"; "hasMoreEnvironments": "hasMoreEnvironments"; "isLoadingEnvironments": "isLoadingEnvironments"; "defaultTestDataProfileId": "defaultTestDataProfileId"; "defaultTestDataStartIndex": "defaultTestDataStartIndex"; "defaultTestDataEndIndex": "defaultTestDataEndIndex"; "isInsideForLoopStep": "isInsideForLoopStep"; "hasTestDataProfile": "hasTestDataProfile"; "isCreatingStep": "isCreatingStep"; }, { "createStep": "createStep"; "cancelled": "cancelled"; "loadMoreElements": "loadMoreElements"; "searchElements": "searchElements"; "searchElementsByScreenName": "searchElementsByScreenName"; "createElement": "createElement"; "searchScreenName": "searchScreenName"; "loadMoreScreenNames": "loadMoreScreenNames"; "createScreenNameRequest": "createScreenNameRequest"; "searchParameters": "searchParameters"; "loadMoreParameters": "loadMoreParameters"; "searchEnvironments": "searchEnvironments"; "loadMoreEnvironments": "loadMoreEnvironments"; "redirectToParameter": "redirectToParameter"; "redirectToEnvironment": "redirectToEnvironment"; }, never, never>;
|
|
174
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<StepBuilderConditionComponent, "cqa-step-builder-condition", never, { "operatorOptions": "operatorOptions"; "conditionTemplates": "conditionTemplates"; "setConditionTemplateVariables": "setConditionTemplateVariables"; "setAdvancedSettingsVariables": "setAdvancedSettingsVariables"; "computeHtmlGrammarFn": "computeHtmlGrammarFn"; "elementOptions": "elementOptions"; "hasMoreElements": "hasMoreElements"; "isLoadingElements": "isLoadingElements"; "screenNameOptions": "screenNameOptions"; "hasMoreScreenNames": "hasMoreScreenNames"; "isLoadingScreenNames": "isLoadingScreenNames"; "parameterOptions": "parameterOptions"; "hasMoreParameters": "hasMoreParameters"; "isLoadingParameters": "isLoadingParameters"; "environmentOptions": "environmentOptions"; "hasMoreEnvironments": "hasMoreEnvironments"; "isLoadingEnvironments": "isLoadingEnvironments"; "globalVariableOptions": "globalVariableOptions"; "isLoadingGlobalVariables": "isLoadingGlobalVariables"; "testCaseEnvironmentName": "testCaseEnvironmentName"; "testCaseTestDataId": "testCaseTestDataId"; "defaultTestDataProfileId": "defaultTestDataProfileId"; "defaultTestDataStartIndex": "defaultTestDataStartIndex"; "defaultTestDataEndIndex": "defaultTestDataEndIndex"; "isInsideForLoopStep": "isInsideForLoopStep"; "hasTestDataProfile": "hasTestDataProfile"; "isCreatingStep": "isCreatingStep"; }, { "createStep": "createStep"; "cancelled": "cancelled"; "loadMoreElements": "loadMoreElements"; "searchElements": "searchElements"; "searchElementsByScreenName": "searchElementsByScreenName"; "createElement": "createElement"; "searchScreenName": "searchScreenName"; "loadMoreScreenNames": "loadMoreScreenNames"; "createScreenNameRequest": "createScreenNameRequest"; "searchParameters": "searchParameters"; "loadMoreParameters": "loadMoreParameters"; "searchEnvironments": "searchEnvironments"; "loadMoreEnvironments": "loadMoreEnvironments"; "redirectToParameter": "redirectToParameter"; "redirectToEnvironment": "redirectToEnvironment"; "searchGlobalVariables": "searchGlobalVariables"; }, never, never>;
|
|
161
175
|
}
|
|
162
176
|
export {};
|
|
@@ -90,6 +90,11 @@ export declare class StepBuilderLoopComponent implements OnInit, OnChanges {
|
|
|
90
90
|
isDebug: boolean;
|
|
91
91
|
/** Existing step when editing; used with isDebug to determine edit mode. */
|
|
92
92
|
testStep?: any;
|
|
93
|
+
/**
|
|
94
|
+
* Resolved name of the test case's environment. Drives the env banner subhead
|
|
95
|
+
* shown above the form. Optional; when missing the banner is hidden.
|
|
96
|
+
*/
|
|
97
|
+
testCaseEnvironmentName?: string;
|
|
93
98
|
get isEditMode(): boolean;
|
|
94
99
|
loadMoreElements: EventEmitter<void>;
|
|
95
100
|
searchElements: EventEmitter<string>;
|
|
@@ -108,6 +113,11 @@ export declare class StepBuilderLoopComponent implements OnInit, OnChanges {
|
|
|
108
113
|
loadMoreEnvironments: EventEmitter<void>;
|
|
109
114
|
redirectToParameter: EventEmitter<void>;
|
|
110
115
|
redirectToEnvironment: EventEmitter<void>;
|
|
116
|
+
/**
|
|
117
|
+
* Emitted when the user clicks "Manage profiles" in the empty state. Host
|
|
118
|
+
* navigates to the Environment & Data Management screen for the active env.
|
|
119
|
+
*/
|
|
120
|
+
manageProfilesClicked: EventEmitter<void>;
|
|
111
121
|
selectedWhileTemplate: any;
|
|
112
122
|
selectedWhileDescription: string;
|
|
113
123
|
selectedWhileMetadata: string;
|
|
@@ -223,5 +233,5 @@ export declare class StepBuilderLoopComponent implements OnInit, OnChanges {
|
|
|
223
233
|
filterWhileTemplates(query: string): void;
|
|
224
234
|
selectWhileTemplate(template: any): void;
|
|
225
235
|
static ɵfac: i0.ɵɵFactoryDeclaration<StepBuilderLoopComponent, never>;
|
|
226
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<StepBuilderLoopComponent, "cqa-step-builder-loop", never, { "loopType": "loopType"; "selectOptions": "selectOptions"; "dataProfileOptions": "dataProfileOptions"; "hasMoreDataProfiles": "hasMoreDataProfiles"; "isLoadingDataProfiles": "isLoadingDataProfiles"; "isCreatingStep": "isCreatingStep"; "setWhileTemplateVariables": "setWhileTemplateVariables"; "setAdvancedSettingsVariables": "setAdvancedSettingsVariables"; "computeHtmlGrammarFn": "computeHtmlGrammarFn"; "whileTemplates": "whileTemplates"; "whileSearchPlaceholder": "whileSearchPlaceholder"; "whileSearchValue": "whileSearchValue"; "elementOptions": "elementOptions"; "hasMoreElements": "hasMoreElements"; "isLoadingElements": "isLoadingElements"; "screenNameOptions": "screenNameOptions"; "hasMoreScreenNames": "hasMoreScreenNames"; "isLoadingScreenNames": "isLoadingScreenNames"; "parameterOptions": "parameterOptions"; "hasMoreParameters": "hasMoreParameters"; "isLoadingParameters": "isLoadingParameters"; "environmentOptions": "environmentOptions"; "hasMoreEnvironments": "hasMoreEnvironments"; "isLoadingEnvironments": "isLoadingEnvironments"; "defaultTestDataProfileId": "defaultTestDataProfileId"; "defaultTestDataStartIndex": "defaultTestDataStartIndex"; "defaultTestDataEndIndex": "defaultTestDataEndIndex"; "isInsideForLoopStep": "isInsideForLoopStep"; "hasTestDataProfile": "hasTestDataProfile"; "isDebug": "isDebug"; "testStep": "testStep"; }, { "createStep": "createStep"; "cancelled": "cancelled"; "loopTypeChange": "loopTypeChange"; "loadMoreDataProfiles": "loadMoreDataProfiles"; "searchDataProfiles": "searchDataProfiles"; "loadMoreElements": "loadMoreElements"; "searchElements": "searchElements"; "searchElementsByScreenName": "searchElementsByScreenName"; "createElement": "createElement"; "searchScreenName": "searchScreenName"; "loadMoreScreenNames": "loadMoreScreenNames"; "createScreenNameRequest": "createScreenNameRequest"; "cancelElementForm": "cancelElementForm"; "searchParameters": "searchParameters"; "loadMoreParameters": "loadMoreParameters"; "searchEnvironments": "searchEnvironments"; "loadMoreEnvironments": "loadMoreEnvironments"; "redirectToParameter": "redirectToParameter"; "redirectToEnvironment": "redirectToEnvironment"; }, never, never>;
|
|
236
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<StepBuilderLoopComponent, "cqa-step-builder-loop", never, { "loopType": "loopType"; "selectOptions": "selectOptions"; "dataProfileOptions": "dataProfileOptions"; "hasMoreDataProfiles": "hasMoreDataProfiles"; "isLoadingDataProfiles": "isLoadingDataProfiles"; "isCreatingStep": "isCreatingStep"; "setWhileTemplateVariables": "setWhileTemplateVariables"; "setAdvancedSettingsVariables": "setAdvancedSettingsVariables"; "computeHtmlGrammarFn": "computeHtmlGrammarFn"; "whileTemplates": "whileTemplates"; "whileSearchPlaceholder": "whileSearchPlaceholder"; "whileSearchValue": "whileSearchValue"; "elementOptions": "elementOptions"; "hasMoreElements": "hasMoreElements"; "isLoadingElements": "isLoadingElements"; "screenNameOptions": "screenNameOptions"; "hasMoreScreenNames": "hasMoreScreenNames"; "isLoadingScreenNames": "isLoadingScreenNames"; "parameterOptions": "parameterOptions"; "hasMoreParameters": "hasMoreParameters"; "isLoadingParameters": "isLoadingParameters"; "environmentOptions": "environmentOptions"; "hasMoreEnvironments": "hasMoreEnvironments"; "isLoadingEnvironments": "isLoadingEnvironments"; "defaultTestDataProfileId": "defaultTestDataProfileId"; "defaultTestDataStartIndex": "defaultTestDataStartIndex"; "defaultTestDataEndIndex": "defaultTestDataEndIndex"; "isInsideForLoopStep": "isInsideForLoopStep"; "hasTestDataProfile": "hasTestDataProfile"; "isDebug": "isDebug"; "testStep": "testStep"; "testCaseEnvironmentName": "testCaseEnvironmentName"; }, { "createStep": "createStep"; "cancelled": "cancelled"; "loopTypeChange": "loopTypeChange"; "loadMoreDataProfiles": "loadMoreDataProfiles"; "searchDataProfiles": "searchDataProfiles"; "loadMoreElements": "loadMoreElements"; "searchElements": "searchElements"; "searchElementsByScreenName": "searchElementsByScreenName"; "createElement": "createElement"; "searchScreenName": "searchScreenName"; "loadMoreScreenNames": "loadMoreScreenNames"; "createScreenNameRequest": "createScreenNameRequest"; "cancelElementForm": "cancelElementForm"; "searchParameters": "searchParameters"; "loadMoreParameters": "loadMoreParameters"; "searchEnvironments": "searchEnvironments"; "loadMoreEnvironments": "loadMoreEnvironments"; "redirectToParameter": "redirectToParameter"; "redirectToEnvironment": "redirectToEnvironment"; "manageProfilesClicked": "manageProfilesClicked"; }, never, never>;
|
|
227
237
|
}
|
|
@@ -22,10 +22,12 @@ export interface TemplateVariable {
|
|
|
22
22
|
value: string;
|
|
23
23
|
label: string;
|
|
24
24
|
}[];
|
|
25
|
-
dataType?: 'plain-text' | 'parameter' | 'runtime' | 'environment';
|
|
25
|
+
dataType?: 'plain-text' | 'parameter' | 'runtime' | 'environment' | 'global';
|
|
26
26
|
rawValue?: string;
|
|
27
27
|
selectedEnvironment?: string;
|
|
28
28
|
selectedEnvironmentId?: number;
|
|
29
|
+
selectedGlobalVariable?: string;
|
|
30
|
+
selectedGlobalVariableId?: number;
|
|
29
31
|
selectedTestDataProfile?: string;
|
|
30
32
|
selectedTestDataProfileId?: number;
|
|
31
33
|
selectedDataSet?: string;
|
|
@@ -75,6 +77,20 @@ export declare class TemplateVariablesFormComponent implements OnChanges {
|
|
|
75
77
|
hasMoreEnvironments: boolean;
|
|
76
78
|
/** True while parent is loading environments (search or load more) */
|
|
77
79
|
isLoadingEnvironments: boolean;
|
|
80
|
+
/** Global Data variables (workspace-scoped) for the new Global Data tab */
|
|
81
|
+
globalVariableOptions: {
|
|
82
|
+
id: number | string;
|
|
83
|
+
name: string;
|
|
84
|
+
value: string;
|
|
85
|
+
type?: string;
|
|
86
|
+
readWriteMode?: string;
|
|
87
|
+
}[];
|
|
88
|
+
/** True while parent is loading global variables */
|
|
89
|
+
isLoadingGlobalVariables: boolean;
|
|
90
|
+
/** Resolved test-case environment name, used for the env banner subhead. */
|
|
91
|
+
testCaseEnvironmentName?: string;
|
|
92
|
+
/** Test case's TDP id (when set, the TDP picker is locked in the parameter tab). */
|
|
93
|
+
testCaseTestDataId?: number | null;
|
|
78
94
|
/** Default test data profile ID from test case (if available, profile and data set dropdowns will be disabled) */
|
|
79
95
|
defaultTestDataProfileId?: number;
|
|
80
96
|
/** Default test data start index from test case (data set index in the profile) */
|
|
@@ -113,6 +129,7 @@ export declare class TemplateVariablesFormComponent implements OnChanges {
|
|
|
113
129
|
loadMoreUploads: EventEmitter<void>;
|
|
114
130
|
searchEnvironments: EventEmitter<string>;
|
|
115
131
|
loadMoreEnvironments: EventEmitter<void>;
|
|
132
|
+
searchGlobalVariables: EventEmitter<string>;
|
|
116
133
|
cancelElementForm: EventEmitter<void>;
|
|
117
134
|
elementFormVisibilityChange: EventEmitter<boolean>;
|
|
118
135
|
private selectConfigCache;
|
|
@@ -120,6 +137,7 @@ export declare class TemplateVariablesFormComponent implements OnChanges {
|
|
|
120
137
|
private parameterSelectConfigCache;
|
|
121
138
|
private environmentSelectConfigCache;
|
|
122
139
|
private environmentParameterSelectConfigCache;
|
|
140
|
+
private globalVariableSelectConfigCache;
|
|
123
141
|
private screenNameSelectConfigCache;
|
|
124
142
|
private elementSelectConfigCache;
|
|
125
143
|
private testDataProfileSelectConfigCache;
|
|
@@ -133,11 +151,31 @@ export declare class TemplateVariablesFormComponent implements OnChanges {
|
|
|
133
151
|
private needsDataTypeDropdownCache;
|
|
134
152
|
private shouldShowDropdownCache;
|
|
135
153
|
private readonly dataTypeOptions;
|
|
154
|
+
/**
|
|
155
|
+
* Stable segment options for the Value Source segment strip. MUST be a field
|
|
156
|
+
* (not a getter) — see feedback_segment_control_no_getter_input.md: a getter
|
|
157
|
+
* triggers a CD loop in cqa-segment-control.
|
|
158
|
+
*/
|
|
159
|
+
readonly dataTypeSegments: {
|
|
160
|
+
value: string;
|
|
161
|
+
label: string;
|
|
162
|
+
}[];
|
|
163
|
+
/**
|
|
164
|
+
* Memoized filtered segments — drops Test Data Profile when neither TC nor FOR loop has a TDP.
|
|
165
|
+
* Held as a field (not a getter) so cqa-segment-control's [segments] stays a stable reference.
|
|
166
|
+
* Recomputed in ngOnChanges when isInsideForLoopStep / hasTestDataProfile change.
|
|
167
|
+
*/
|
|
168
|
+
visibleDataTypeSegments: {
|
|
169
|
+
value: string;
|
|
170
|
+
label: string;
|
|
171
|
+
}[];
|
|
172
|
+
private recomputeVisibleSegments;
|
|
136
173
|
createElementVisible: boolean;
|
|
137
174
|
constructor(cdr: ChangeDetectorRef);
|
|
138
175
|
onCreateElement(payload: ElementCreatePayload): void;
|
|
139
176
|
onCancelElementForm(): void;
|
|
140
177
|
ngOnChanges(changes: SimpleChanges): void;
|
|
178
|
+
private backfillGlobalVariableIds;
|
|
141
179
|
private initializeTestDataVariables;
|
|
142
180
|
/** Get form group for a variable by name from FormArray */
|
|
143
181
|
getVariableFormGroup(variableName: string): FormGroup | null;
|
|
@@ -154,7 +192,16 @@ export declare class TemplateVariablesFormComponent implements OnChanges {
|
|
|
154
192
|
needsDataTypeDropdown(variable: TemplateVariable): boolean;
|
|
155
193
|
getDataTypeOptions(): SelectOption[];
|
|
156
194
|
getDataTypeSelectConfig(variable: TemplateVariable, index: number): DynamicSelectFieldConfig;
|
|
157
|
-
getCurrentDataType(variable: TemplateVariable): 'plain-text' | 'parameter' | 'runtime' | 'environment';
|
|
195
|
+
getCurrentDataType(variable: TemplateVariable): 'plain-text' | 'parameter' | 'runtime' | 'environment' | 'global';
|
|
196
|
+
/** Whether the variable is currently using the Global Data tab. */
|
|
197
|
+
isGlobalType(variable: TemplateVariable): boolean;
|
|
198
|
+
/** Whether the user has picked a global variable on this row. */
|
|
199
|
+
hasSelectedGlobalVariable(variable: TemplateVariable): boolean;
|
|
200
|
+
/**
|
|
201
|
+
* Build select config for the Global Data dropdown.
|
|
202
|
+
* Each row inserts `{{name}}` on selection.
|
|
203
|
+
*/
|
|
204
|
+
getGlobalVariableSelectConfig(variable: TemplateVariable, index: number): DynamicSelectFieldConfig;
|
|
158
205
|
getRawValue(variable: TemplateVariable): string;
|
|
159
206
|
/**
|
|
160
207
|
* Check if selector variable is available in templateVariables
|
|
@@ -168,7 +215,7 @@ export declare class TemplateVariablesFormComponent implements OnChanges {
|
|
|
168
215
|
* Check if environment variable is available (testData with environment type)
|
|
169
216
|
*/
|
|
170
217
|
get environmentVariableAvailable(): boolean;
|
|
171
|
-
onDataTypeChange(variableName: string, dataType: 'plain-text' | 'parameter' | 'runtime' | 'environment'): void;
|
|
218
|
+
onDataTypeChange(variableName: string, dataType: 'plain-text' | 'parameter' | 'runtime' | 'environment' | 'global'): void;
|
|
172
219
|
onElementSearch(event: {
|
|
173
220
|
key: string;
|
|
174
221
|
query: string;
|
|
@@ -223,6 +270,26 @@ export declare class TemplateVariablesFormComponent implements OnChanges {
|
|
|
223
270
|
* Get select config for parameter dropdown (third dropdown for parameters - shows parameters from selected data set)
|
|
224
271
|
*/
|
|
225
272
|
getParameterSelectConfig(variable: TemplateVariable, index: number): DynamicSelectFieldConfig;
|
|
273
|
+
/**
|
|
274
|
+
* Env-on-test-case contract: a test case has exactly one environment, so the
|
|
275
|
+
* "Environment Name" dropdown has nothing meaningful to choose from. We trust
|
|
276
|
+
* `testCaseEnvironmentName` as the source of truth — even if it's not in the
|
|
277
|
+
* loaded `environmentOptions` yet (those are async, env-scoped, and may be
|
|
278
|
+
* empty when the env has no parameters). The dropdown's `optionsArray.unshift`
|
|
279
|
+
* fallback in `getEnvironmentSelectConfig` ensures the value renders even when
|
|
280
|
+
* missing from the option list.
|
|
281
|
+
*/
|
|
282
|
+
private resolveDefaultEnvironmentName;
|
|
283
|
+
/**
|
|
284
|
+
* Proactive companion to `resolveDefaultEnvironmentName`: walks every env-type
|
|
285
|
+
* template variable that hasn't been seeded yet and pre-fills its
|
|
286
|
+
* `selectedEnvironment` (plus the matching form control) with the test case's
|
|
287
|
+
* environment. Idempotent — variables that already have a selection are
|
|
288
|
+
* skipped. Called from `ngOnChanges` whenever the inputs that could unlock the
|
|
289
|
+
* seed (`testCaseEnvironmentName`, `environmentOptions`, `templateVariables`)
|
|
290
|
+
* change.
|
|
291
|
+
*/
|
|
292
|
+
private seedDefaultEnvironmentForVariables;
|
|
226
293
|
/**
|
|
227
294
|
* Get unique environments from environment options
|
|
228
295
|
*/
|
|
@@ -310,6 +377,6 @@ export declare class TemplateVariablesFormComponent implements OnChanges {
|
|
|
310
377
|
*/
|
|
311
378
|
isRuntimeType(variable: TemplateVariable): boolean;
|
|
312
379
|
static ɵfac: i0.ɵɵFactoryDeclaration<TemplateVariablesFormComponent, never>;
|
|
313
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<TemplateVariablesFormComponent, "cqa-template-variables-form", never, { "templateVariables": "templateVariables"; "variablesForm": "variablesForm"; "metadata": "metadata"; "description": "description"; "elementOptions": "elementOptions"; "hasMoreElements": "hasMoreElements"; "isLoadingElements": "isLoadingElements"; "screenNameOptions": "screenNameOptions"; "hasMoreScreenNames": "hasMoreScreenNames"; "isLoadingScreenNames": "isLoadingScreenNames"; "parameterOptions": "parameterOptions"; "hasMoreParameters": "hasMoreParameters"; "isLoadingParameters": "isLoadingParameters"; "uploadOptions": "uploadOptions"; "hasMoreUploads": "hasMoreUploads"; "isLoadingUploads": "isLoadingUploads"; "environmentOptions": "environmentOptions"; "hasMoreEnvironments": "hasMoreEnvironments"; "isLoadingEnvironments": "isLoadingEnvironments"; "defaultTestDataProfileId": "defaultTestDataProfileId"; "defaultTestDataStartIndex": "defaultTestDataStartIndex"; "defaultTestDataEndIndex": "defaultTestDataEndIndex"; "isInsideForLoopStep": "isInsideForLoopStep"; "hasTestDataProfile": "hasTestDataProfile"; "isEditInDepth": "isEditInDepth"; "isDebug": "isDebug"; "createElementVisible": "createElementVisible"; }, { "variableValueChange": "variableValueChange"; "variableBooleanChange": "variableBooleanChange"; "metadataChange": "metadataChange"; "descriptionChange": "descriptionChange"; "loadMoreElements": "loadMoreElements"; "searchElements": "searchElements"; "searchElementsByScreenName": "searchElementsByScreenName"; "createElement": "createElement"; "searchScreenName": "searchScreenName"; "loadMoreScreenNames": "loadMoreScreenNames"; "createScreenNameRequest": "createScreenNameRequest"; "searchParameters": "searchParameters"; "loadMoreParameters": "loadMoreParameters"; "searchUploads": "searchUploads"; "loadMoreUploads": "loadMoreUploads"; "searchEnvironments": "searchEnvironments"; "loadMoreEnvironments": "loadMoreEnvironments"; "cancelElementForm": "cancelElementForm"; "elementFormVisibilityChange": "elementFormVisibilityChange"; }, never, never>;
|
|
380
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TemplateVariablesFormComponent, "cqa-template-variables-form", never, { "templateVariables": "templateVariables"; "variablesForm": "variablesForm"; "metadata": "metadata"; "description": "description"; "elementOptions": "elementOptions"; "hasMoreElements": "hasMoreElements"; "isLoadingElements": "isLoadingElements"; "screenNameOptions": "screenNameOptions"; "hasMoreScreenNames": "hasMoreScreenNames"; "isLoadingScreenNames": "isLoadingScreenNames"; "parameterOptions": "parameterOptions"; "hasMoreParameters": "hasMoreParameters"; "isLoadingParameters": "isLoadingParameters"; "uploadOptions": "uploadOptions"; "hasMoreUploads": "hasMoreUploads"; "isLoadingUploads": "isLoadingUploads"; "environmentOptions": "environmentOptions"; "hasMoreEnvironments": "hasMoreEnvironments"; "isLoadingEnvironments": "isLoadingEnvironments"; "globalVariableOptions": "globalVariableOptions"; "isLoadingGlobalVariables": "isLoadingGlobalVariables"; "testCaseEnvironmentName": "testCaseEnvironmentName"; "testCaseTestDataId": "testCaseTestDataId"; "defaultTestDataProfileId": "defaultTestDataProfileId"; "defaultTestDataStartIndex": "defaultTestDataStartIndex"; "defaultTestDataEndIndex": "defaultTestDataEndIndex"; "isInsideForLoopStep": "isInsideForLoopStep"; "hasTestDataProfile": "hasTestDataProfile"; "isEditInDepth": "isEditInDepth"; "isDebug": "isDebug"; "createElementVisible": "createElementVisible"; }, { "variableValueChange": "variableValueChange"; "variableBooleanChange": "variableBooleanChange"; "metadataChange": "metadataChange"; "descriptionChange": "descriptionChange"; "loadMoreElements": "loadMoreElements"; "searchElements": "searchElements"; "searchElementsByScreenName": "searchElementsByScreenName"; "createElement": "createElement"; "searchScreenName": "searchScreenName"; "loadMoreScreenNames": "loadMoreScreenNames"; "createScreenNameRequest": "createScreenNameRequest"; "searchParameters": "searchParameters"; "loadMoreParameters": "loadMoreParameters"; "searchUploads": "searchUploads"; "loadMoreUploads": "loadMoreUploads"; "searchEnvironments": "searchEnvironments"; "loadMoreEnvironments": "loadMoreEnvironments"; "searchGlobalVariables": "searchGlobalVariables"; "cancelElementForm": "cancelElementForm"; "elementFormVisibilityChange": "elementFormVisibilityChange"; }, never, never>;
|
|
314
381
|
}
|
|
315
382
|
export {};
|
|
@@ -31,6 +31,13 @@ export declare class TableTemplateComponent implements OnInit, OnChanges, OnDest
|
|
|
31
31
|
otherButtons: TemplateRef<any>[];
|
|
32
32
|
otherDropDownButtons: TemplateRef<any>[];
|
|
33
33
|
otherSelectDropDownButtons: TemplateRef<any>[];
|
|
34
|
+
/**
|
|
35
|
+
* Optional template rendered between the search/toolbar row and the
|
|
36
|
+
* selected-filters chip block. Used to slot in feature-specific filters
|
|
37
|
+
* (e.g. Global Data's tag chip bar) so they sit visually inside the
|
|
38
|
+
* table-template's sticky header instead of floating above it.
|
|
39
|
+
*/
|
|
40
|
+
tagFilterTemplate?: TemplateRef<any>;
|
|
34
41
|
/** @deprecated Use otherButtons array instead */
|
|
35
42
|
otherButtonLabel: string;
|
|
36
43
|
/** @deprecated Use otherButtons array instead */
|
|
@@ -201,5 +208,5 @@ export declare class TableTemplateComponent implements OnInit, OnChanges, OnDest
|
|
|
201
208
|
}>;
|
|
202
209
|
get arrowClasses(): string;
|
|
203
210
|
static ɵfac: i0.ɵɵFactoryDeclaration<TableTemplateComponent, never>;
|
|
204
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<TableTemplateComponent, "cqa-table-template", never, { "searchPlaceholder": "searchPlaceholder"; "searchValue": "searchValue"; "showClear": "showClear"; "showSearchBar": "showSearchBar"; "showExportButton": "showExportButton"; "isExporting": "isExporting"; "filterConfig": "filterConfig"; "filterModel": "filterModel"; "showFilterPanel": "showFilterPanel"; "showFilterButton": "showFilterButton"; "otherButtons": "otherButtons"; "otherDropDownButtons": "otherDropDownButtons"; "otherSelectDropDownButtons": "otherSelectDropDownButtons"; "otherButtonLabel": "otherButtonLabel"; "otherButtonVariant": "otherButtonVariant"; "showOtherButton": "showOtherButton"; "showActionButton": "showActionButton"; "showSettingsButton": "showSettingsButton"; "showAutoRefreshButton": "showAutoRefreshButton"; "showViewModeToggle": "showViewModeToggle"; "viewMode": "viewMode"; "viewModeLabels": "viewModeLabels"; "data": "data"; "isEmptyState": "isEmptyState"; "emptyStateConfig": "emptyStateConfig"; "actions": "actions"; "chips": "chips"; "filterApplied": "filterApplied"; "columns": "columns"; "rowSelectable": "rowSelectable"; "selectedAutoRefreshInterval": "selectedAutoRefreshInterval"; "pageIndex": "pageIndex"; "pageSize": "pageSize"; "pageSizeOptions": "pageSizeOptions"; "pageSizeMenuDirection": "pageSizeMenuDirection"; "serverSidePagination": "serverSidePagination"; "totalElements": "totalElements"; "enableLocalSort": "enableLocalSort"; "isTableLoading": "isTableLoading"; "isTableDataLoading": "isTableDataLoading"; "cellJsonPathGetter": "cellJsonPathGetter"; "onJsonPathCopiedHandler": "onJsonPathCopiedHandler"; "selectedItems": "selectedItems"; "showSelectAllInToolbar": "showSelectAllInToolbar"; "showDismissInToolbar": "showDismissInToolbar"; "allSelectedInToolbar": "allSelectedInToolbar"; "columnVisibility": "columnVisibility"; }, { "onSearchChange": "onSearchChange"; "onExportClick": "onExportClick"; "onApplyFilterClick": "onApplyFilterClick"; "onResetFilterClick": "onResetFilterClick"; "onClearAll": "onClearAll"; "removeChip": "removeChip"; "viewModeChange": "viewModeChange"; "pageChange": "pageChange"; "sortChange": "sortChange"; "onReload": "onReload"; "onAutoRefreshClick": "onAutoRefreshClick"; "columnVisibilityChange": "columnVisibilityChange"; "autoRefreshIntervalChange": "autoRefreshIntervalChange"; "bulkActionClick": "bulkActionClick"; "bulkSelectAllChange": "bulkSelectAllChange"; "bulkDismiss": "bulkDismiss"; "selectedItemsChange": "selectedItemsChange"; }, never, never>;
|
|
211
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TableTemplateComponent, "cqa-table-template", never, { "searchPlaceholder": "searchPlaceholder"; "searchValue": "searchValue"; "showClear": "showClear"; "showSearchBar": "showSearchBar"; "showExportButton": "showExportButton"; "isExporting": "isExporting"; "filterConfig": "filterConfig"; "filterModel": "filterModel"; "showFilterPanel": "showFilterPanel"; "showFilterButton": "showFilterButton"; "otherButtons": "otherButtons"; "otherDropDownButtons": "otherDropDownButtons"; "otherSelectDropDownButtons": "otherSelectDropDownButtons"; "tagFilterTemplate": "tagFilterTemplate"; "otherButtonLabel": "otherButtonLabel"; "otherButtonVariant": "otherButtonVariant"; "showOtherButton": "showOtherButton"; "showActionButton": "showActionButton"; "showSettingsButton": "showSettingsButton"; "showAutoRefreshButton": "showAutoRefreshButton"; "showViewModeToggle": "showViewModeToggle"; "viewMode": "viewMode"; "viewModeLabels": "viewModeLabels"; "data": "data"; "isEmptyState": "isEmptyState"; "emptyStateConfig": "emptyStateConfig"; "actions": "actions"; "chips": "chips"; "filterApplied": "filterApplied"; "columns": "columns"; "rowSelectable": "rowSelectable"; "selectedAutoRefreshInterval": "selectedAutoRefreshInterval"; "pageIndex": "pageIndex"; "pageSize": "pageSize"; "pageSizeOptions": "pageSizeOptions"; "pageSizeMenuDirection": "pageSizeMenuDirection"; "serverSidePagination": "serverSidePagination"; "totalElements": "totalElements"; "enableLocalSort": "enableLocalSort"; "isTableLoading": "isTableLoading"; "isTableDataLoading": "isTableDataLoading"; "cellJsonPathGetter": "cellJsonPathGetter"; "onJsonPathCopiedHandler": "onJsonPathCopiedHandler"; "selectedItems": "selectedItems"; "showSelectAllInToolbar": "showSelectAllInToolbar"; "showDismissInToolbar": "showDismissInToolbar"; "allSelectedInToolbar": "allSelectedInToolbar"; "columnVisibility": "columnVisibility"; }, { "onSearchChange": "onSearchChange"; "onExportClick": "onExportClick"; "onApplyFilterClick": "onApplyFilterClick"; "onResetFilterClick": "onResetFilterClick"; "onClearAll": "onClearAll"; "removeChip": "removeChip"; "viewModeChange": "viewModeChange"; "pageChange": "pageChange"; "sortChange": "sortChange"; "onReload": "onReload"; "onAutoRefreshClick": "onAutoRefreshClick"; "columnVisibilityChange": "columnVisibilityChange"; "autoRefreshIntervalChange": "autoRefreshIntervalChange"; "bulkActionClick": "bulkActionClick"; "bulkSelectAllChange": "bulkSelectAllChange"; "bulkDismiss": "bulkDismiss"; "selectedItemsChange": "selectedItemsChange"; }, never, never>;
|
|
205
212
|
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
|
2
|
+
import { SegmentOption } from '../../segment-control/segment-control.component';
|
|
3
|
+
import { DataLibrarySubTab, ElementCardVm, ProfileCardVm } from './data-library-panel.models';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class DataLibraryPanelComponent {
|
|
6
|
+
searchTerm: string;
|
|
7
|
+
searchPlaceholder: string;
|
|
8
|
+
/** The active environment name, e.g. "QA". Empty/undefined renders "this test case" in the banner and hides the env chip on profile cards. */
|
|
9
|
+
environmentName?: string;
|
|
10
|
+
activeSubTab: DataLibrarySubTab;
|
|
11
|
+
elements: ElementCardVm[];
|
|
12
|
+
profiles: ProfileCardVm[];
|
|
13
|
+
isLoadingElements: boolean;
|
|
14
|
+
isLoadingProfiles: boolean;
|
|
15
|
+
selectedElementId: number | string | null;
|
|
16
|
+
hasEnvironment: boolean;
|
|
17
|
+
showElementsLink: boolean;
|
|
18
|
+
showManageProfilesLink: boolean;
|
|
19
|
+
searchTermChange: EventEmitter<string>;
|
|
20
|
+
search: EventEmitter<string>;
|
|
21
|
+
searchCleared: EventEmitter<void>;
|
|
22
|
+
activeSubTabChange: EventEmitter<DataLibrarySubTab>;
|
|
23
|
+
elementCardClick: EventEmitter<string | number>;
|
|
24
|
+
viewFullElementsClick: EventEmitter<void>;
|
|
25
|
+
manageProfilesClick: EventEmitter<void>;
|
|
26
|
+
/** Stable reference required by cqa-segment-control. */
|
|
27
|
+
readonly segments: SegmentOption[];
|
|
28
|
+
/** Stable iteration source for skeleton placeholders during loading. */
|
|
29
|
+
readonly skeletonCards: number[];
|
|
30
|
+
onSearchValueChange(value: string): void;
|
|
31
|
+
onSearchSubmit(value: string): void;
|
|
32
|
+
onSearchCleared(): void;
|
|
33
|
+
onSegmentChange(value: string): void;
|
|
34
|
+
onElementClick(id: number | string): void;
|
|
35
|
+
onViewFullElements(event: Event): void;
|
|
36
|
+
onManageProfiles(event: Event): void;
|
|
37
|
+
trackByElementId(_i: number, item: ElementCardVm): number | string;
|
|
38
|
+
trackByAttachmentId(_i: number, item: ProfileCardVm): number | string;
|
|
39
|
+
get bannerLabel(): string;
|
|
40
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DataLibraryPanelComponent, never>;
|
|
41
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DataLibraryPanelComponent, "cqa-data-library-panel", never, { "searchTerm": "searchTerm"; "searchPlaceholder": "searchPlaceholder"; "environmentName": "environmentName"; "activeSubTab": "activeSubTab"; "elements": "elements"; "profiles": "profiles"; "isLoadingElements": "isLoadingElements"; "isLoadingProfiles": "isLoadingProfiles"; "selectedElementId": "selectedElementId"; "hasEnvironment": "hasEnvironment"; "showElementsLink": "showElementsLink"; "showManageProfilesLink": "showManageProfilesLink"; }, { "searchTermChange": "searchTermChange"; "search": "search"; "searchCleared": "searchCleared"; "activeSubTabChange": "activeSubTabChange"; "elementCardClick": "elementCardClick"; "viewFullElementsClick": "viewFullElementsClick"; "manageProfilesClick": "manageProfilesClick"; }, never, never>;
|
|
42
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface ElementCardVm {
|
|
2
|
+
id: number | string;
|
|
3
|
+
name: string;
|
|
4
|
+
screen: string;
|
|
5
|
+
updatedRelative: string;
|
|
6
|
+
locatorBadge: string;
|
|
7
|
+
}
|
|
8
|
+
export interface ProfileCardVm {
|
|
9
|
+
attachmentId: number | string;
|
|
10
|
+
testDataId: number | string;
|
|
11
|
+
name: string;
|
|
12
|
+
rowsCount: number;
|
|
13
|
+
columnsCount: number;
|
|
14
|
+
permission: 'RO' | 'RW' | null;
|
|
15
|
+
activeOnTestCase: boolean;
|
|
16
|
+
}
|
|
17
|
+
export declare type DataLibrarySubTab = 'elements' | 'profiles';
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class ElementCardComponent {
|
|
4
|
+
name: string;
|
|
5
|
+
screen: string;
|
|
6
|
+
updatedRelative: string;
|
|
7
|
+
locatorBadge: string;
|
|
8
|
+
selected: boolean;
|
|
9
|
+
cardClick: EventEmitter<void>;
|
|
10
|
+
onClick(): void;
|
|
11
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ElementCardComponent, never>;
|
|
12
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ElementCardComponent, "cqa-element-card", never, { "name": "name"; "screen": "screen"; "updatedRelative": "updatedRelative"; "locatorBadge": "locatorBadge"; "selected": "selected"; }, { "cardClick": "cardClick"; }, never, never>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
export declare class TestDataProfileCardComponent {
|
|
3
|
+
name: string;
|
|
4
|
+
rowsCount: number;
|
|
5
|
+
columnsCount: number;
|
|
6
|
+
environmentName?: string;
|
|
7
|
+
permission?: 'RO' | 'RW' | null;
|
|
8
|
+
activeOnTestCase: boolean;
|
|
9
|
+
get rowsLabel(): string;
|
|
10
|
+
get colsLabel(): string;
|
|
11
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TestDataProfileCardComponent, never>;
|
|
12
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TestDataProfileCardComponent, "cqa-test-data-profile-card", never, { "name": "name"; "rowsCount": "rowsCount"; "columnsCount": "columnsCount"; "environmentName": "environmentName"; "permission": "permission"; "activeOnTestCase": "activeOnTestCase"; }, {}, never, never>;
|
|
13
|
+
}
|
|
@@ -18,6 +18,10 @@ export interface SelectConfigOverride {
|
|
|
18
18
|
searchable?: boolean;
|
|
19
19
|
/** When true, triggers initial search on panel open (serverSearch mode). */
|
|
20
20
|
initialFetchOnOpen?: boolean;
|
|
21
|
+
/** Disable the select (e.g. dependent dropdown waiting on a parent value). */
|
|
22
|
+
disabled?: boolean;
|
|
23
|
+
/** Override the placeholder shown when no value is selected. */
|
|
24
|
+
placeholder?: string;
|
|
21
25
|
/** Callback when user types in search. Call API, then update options via selectConfigOverrides. */
|
|
22
26
|
onSearch?: (query: string) => void;
|
|
23
27
|
/** Callback when user scrolls to load more. Call API, append options via selectConfigOverrides. */
|
|
@@ -32,6 +36,7 @@ export declare const TEST_CASE_DETAILS_SELECT_KEYS: {
|
|
|
32
36
|
readonly type: "type";
|
|
33
37
|
readonly labels: "labels";
|
|
34
38
|
readonly prerequisiteCases: "prerequisiteCases";
|
|
39
|
+
readonly environment: "environment";
|
|
35
40
|
readonly testDataProfile: "testDataProfile";
|
|
36
41
|
readonly testDataSet: "testDataSet";
|
|
37
42
|
readonly videoRecording: "videoRecording";
|
|
@@ -50,6 +55,7 @@ export interface TestCaseDetailsEditFormData {
|
|
|
50
55
|
priority: string;
|
|
51
56
|
type?: string | number;
|
|
52
57
|
labels: string[];
|
|
58
|
+
environmentId?: number | string | null;
|
|
53
59
|
testDataProfileId?: number | string | null;
|
|
54
60
|
testDataSetIndex?: number | string | null;
|
|
55
61
|
configSections: TestCaseDetailsConfigSection[];
|
|
@@ -179,6 +185,7 @@ export declare class TestCaseDetailsEditComponent implements OnInit, OnChanges {
|
|
|
179
185
|
/** Cached configs to avoid new object refs each change detection (prevents infinite loops) */
|
|
180
186
|
readonly statusSelectConfig: DynamicSelectFieldConfig;
|
|
181
187
|
readonly typeSelectConfig: DynamicSelectFieldConfig;
|
|
188
|
+
readonly environmentSelectConfig: DynamicSelectFieldConfig;
|
|
182
189
|
readonly testDataProfileSelectConfig: DynamicSelectFieldConfig;
|
|
183
190
|
readonly testDataSetSelectConfig: DynamicSelectFieldConfig;
|
|
184
191
|
private readonly defaultPrerequisiteCaseOptions;
|
|
@@ -36,6 +36,7 @@ export declare const TEST_CASE_DETAILS_FIELD_MAP: {
|
|
|
36
36
|
};
|
|
37
37
|
/** Execution config */
|
|
38
38
|
readonly execution: {
|
|
39
|
+
readonly environment: "environment";
|
|
39
40
|
readonly prerequisiteCase: "prerequisiteCase";
|
|
40
41
|
readonly defaultBrowser: "defaultBrowser";
|
|
41
42
|
readonly videoRecording: "videoRecording";
|
|
@@ -74,6 +75,7 @@ export interface TestCaseDetailsApiData {
|
|
|
74
75
|
type?: string;
|
|
75
76
|
typeId?: number | string;
|
|
76
77
|
environment?: string;
|
|
78
|
+
environmentId?: number | string | null;
|
|
77
79
|
version?: string;
|
|
78
80
|
testPlanName?: string;
|
|
79
81
|
testPlanRedirectUrl?: string;
|
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
import { InjectionToken } from '@angular/core';
|
|
2
2
|
import type { ParameterScopeFilter, ParameterItem } from './test-data-modal-parameter.model';
|
|
3
3
|
import type { EnvironmentItem } from './test-data-modal-environment.model';
|
|
4
|
-
export declare type TestDataModalTab = 'plain-text' | 'parameter' | 'environment' | 'runtime';
|
|
4
|
+
export declare type TestDataModalTab = 'plain-text' | 'parameter' | 'environment' | 'runtime' | 'global';
|
|
5
|
+
/** Global Data list item supplied by the consuming app (workspace-scoped global variables). */
|
|
6
|
+
export interface GlobalVariableItem {
|
|
7
|
+
id: number | string;
|
|
8
|
+
name: string;
|
|
9
|
+
value: string;
|
|
10
|
+
type?: string;
|
|
11
|
+
readWriteMode?: string;
|
|
12
|
+
}
|
|
5
13
|
/**
|
|
6
14
|
* Config/data for Test Data Modal controls.
|
|
7
15
|
* Mirrors Loop Step pattern: single config object holds all control state;
|
|
@@ -30,6 +38,14 @@ export interface TestDataModalData {
|
|
|
30
38
|
environmentItems?: EnvironmentItem[];
|
|
31
39
|
/** Runtime tab: value (independent from Plain Text / Parameter / Environment). */
|
|
32
40
|
runtimeValue?: string;
|
|
41
|
+
/** Global Data tab: search query. */
|
|
42
|
+
globalVariableSearchQuery?: string;
|
|
43
|
+
/** Global Data tab: selected global variable id (for highlight). Always the variable name. */
|
|
44
|
+
selectedGlobalVariableId?: string | null;
|
|
45
|
+
/** Global Data tab: list of variables to display. */
|
|
46
|
+
globalVariables?: GlobalVariableItem[];
|
|
47
|
+
/** When set, the Test Data Profile (legacy "Parameter") tab is visible. */
|
|
48
|
+
testCaseTestDataId?: number | null;
|
|
33
49
|
}
|
|
34
50
|
/** Sentinel returned from afterClosed() when user clicked "Edit in depth". */
|
|
35
51
|
export declare const TEST_DATA_MODAL_EDIT_IN_DEPTH: unique symbol;
|