@cqa-lib/cqa-ui 1.1.536 → 1.1.537-gamma.5

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 (43) hide show
  1. package/.github/workflows/README.md +8 -1
  2. package/esm2020/lib/compare-runs/compare-runs.component.mjs +1 -1
  3. package/esm2020/lib/execution-screen/condition-debug-step/condition-branch-editor.component.mjs +1 -1
  4. package/esm2020/lib/execution-screen/db-query-execution-item/db-query-execution-item.component.mjs +1 -1
  5. package/esm2020/lib/execution-screen/db-verification-step/db-verification-step.component.mjs +1 -1
  6. package/esm2020/lib/iterations-loop/iterations-loop.component.mjs +1 -1
  7. package/esm2020/lib/mixed-variable-input/mixed-variable-input.component.mjs +30 -10
  8. package/esm2020/lib/new-global-variable-dialog/global-variable-tags-input.component.mjs +129 -0
  9. package/esm2020/lib/new-global-variable-dialog/new-global-variable-dialog.component.mjs +16 -5
  10. package/esm2020/lib/new-global-variable-dialog/new-global-variable-dialog.models.mjs +1 -1
  11. package/esm2020/lib/segment-control/segment-control.component.mjs +12 -4
  12. package/esm2020/lib/step-builder/step-builder-action/step-builder-action.component.mjs +17 -3
  13. package/esm2020/lib/step-builder/step-builder-condition/step-builder-condition.component.mjs +17 -3
  14. package/esm2020/lib/step-builder/step-builder-loop/step-builder-loop.component.mjs +12 -3
  15. package/esm2020/lib/step-builder/template-variables-form/template-variables-form.component.mjs +315 -27
  16. package/esm2020/lib/templates/modular-table-template/modular-table-template.component.mjs +109 -10
  17. package/esm2020/lib/templates/modular-table-template/modular-table-template.models.mjs +9 -1
  18. package/esm2020/lib/templates/table-template.component.mjs +5 -3
  19. package/esm2020/lib/test-case-details/test-case-details-edit/test-case-details-edit.component.mjs +43 -4
  20. package/esm2020/lib/test-case-details/test-case-details.models.mjs +3 -1
  21. package/esm2020/lib/ui-kit.module.mjs +6 -1
  22. package/esm2020/public-api.mjs +2 -1
  23. package/fesm2015/cqa-lib-cqa-ui.mjs +776 -124
  24. package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -1
  25. package/fesm2020/cqa-lib-cqa-ui.mjs +702 -61
  26. package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -1
  27. package/lib/new-global-variable-dialog/global-variable-tags-input.component.d.ts +39 -0
  28. package/lib/new-global-variable-dialog/new-global-variable-dialog.component.d.ts +5 -2
  29. package/lib/new-global-variable-dialog/new-global-variable-dialog.models.d.ts +8 -0
  30. package/lib/segment-control/segment-control.component.d.ts +3 -1
  31. package/lib/step-builder/step-builder-action/step-builder-action.component.d.ts +15 -1
  32. package/lib/step-builder/step-builder-condition/step-builder-condition.component.d.ts +15 -1
  33. package/lib/step-builder/step-builder-loop/step-builder-loop.component.d.ts +11 -1
  34. package/lib/step-builder/template-variables-form/template-variables-form.component.d.ts +71 -4
  35. package/lib/templates/modular-table-template/modular-table-template.component.d.ts +9 -0
  36. package/lib/templates/modular-table-template/modular-table-template.models.d.ts +15 -0
  37. package/lib/templates/table-template.component.d.ts +8 -1
  38. package/lib/test-case-details/test-case-details-edit/test-case-details-edit.component.d.ts +7 -0
  39. package/lib/test-case-details/test-case-details.models.d.ts +2 -0
  40. package/lib/ui-kit.module.d.ts +97 -96
  41. package/package.json +1 -1
  42. package/public-api.d.ts +1 -0
  43. 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 {};
@@ -253,6 +253,15 @@ export declare class ModularTableTemplateComponent implements OnInit, OnChanges,
253
253
  label: string;
254
254
  }>;
255
255
  private updateComputedColumns;
256
+ private buildFolderColumn;
257
+ private resolveFolderName;
258
+ /**
259
+ * Attach a derived `folderName` to each row when the host hasn't supplied
260
+ * one. Mutates in place so the value is available everywhere the row flows
261
+ * — sort, filter, column renders, exports — alongside fields like priority.
262
+ */
263
+ private enrichRowsWithFolderName;
264
+ private renderFolderCell;
256
265
  private updateVisibilityColumns;
257
266
  set columnVisibility(cfg: ColumnVisibilityConfig | undefined);
258
267
  get columnVisibility(): ColumnVisibilityConfig;
@@ -22,8 +22,19 @@ export interface ModularConfig {
22
22
  allowNestedFolders: boolean;
23
23
  allowTestDragDrop: boolean;
24
24
  allowBulkSelection: boolean;
25
+ /**
26
+ * When true, the table renders a folder column (icon + folder name) and lists it in the
27
+ * settings dropdown. Default visibility on first init follows `viewMode`: shown in list,
28
+ * hidden in modular. Once the user toggles it the choice persists.
29
+ */
30
+ showFolderColumn: boolean;
25
31
  }
26
32
  export declare const DEFAULT_MODULAR_CONFIG: ModularConfig;
33
+ /**
34
+ * Reserved fieldId for the auto-injected folder column. Hosts should avoid
35
+ * defining a column with this id of their own.
36
+ */
37
+ export declare const FOLDER_COLUMN_FIELD_ID = "folder";
27
38
  export interface ModularLabels {
28
39
  folders: string;
29
40
  organised: string;
@@ -78,6 +89,10 @@ export interface ModularLabels {
78
89
  deleteFolderDialogConfirm: string;
79
90
  emptyNoTestsInFolderTitle: string;
80
91
  emptyNoTestsInFolderDescription: string;
92
+ /** Header label for the auto-injected folder column. */
93
+ folderColumnLabel: string;
94
+ /** Cell label for rows with no folderId (i.e. the "Unorganised" bucket). */
95
+ unorganisedRowLabel: string;
81
96
  }
82
97
  export declare const DEFAULT_MODULAR_LABELS: ModularLabels;
83
98
  /**
@@ -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
  }
@@ -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;