@cqa-lib/cqa-ui 1.1.246 → 1.1.248

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 (34) hide show
  1. package/esm2020/lib/dynamic-select/dynamic-select-field.component.mjs +31 -17
  2. package/esm2020/lib/step-builder/step-builder-action/step-builder-action.component.mjs +19 -6
  3. package/esm2020/lib/step-builder/step-builder-condition/step-builder-condition.component.mjs +6 -3
  4. package/esm2020/lib/step-builder/step-builder-loop/step-builder-loop.component.mjs +6 -3
  5. package/esm2020/lib/step-builder/template-variables-form/template-variables-form.component.mjs +493 -56
  6. package/esm2020/lib/test-case-details/ai-agent-step/ai-agent-step.component.mjs +3 -3
  7. package/esm2020/lib/test-case-details/ai-verify-step/ai-verify-step.component.mjs +3 -3
  8. package/esm2020/lib/test-case-details/api-step/api-step.component.mjs +3 -3
  9. package/esm2020/lib/test-case-details/condition-step/condition-step.component.mjs +3 -3
  10. package/esm2020/lib/test-case-details/custom-code-step/custom-code-step.component.mjs +3 -3
  11. package/esm2020/lib/test-case-details/database-step/database-step.component.mjs +3 -3
  12. package/esm2020/lib/test-case-details/loop-step/loop-step.component.mjs +80 -15
  13. package/esm2020/lib/test-case-details/normal-step/normal-step.component.mjs +3 -3
  14. package/esm2020/lib/test-case-details/restore-session-step/restore-session-step.component.mjs +3 -3
  15. package/esm2020/lib/test-case-details/screenshot-step/screenshot-step.component.mjs +3 -3
  16. package/esm2020/lib/test-case-details/scroll-step/scroll-step.component.mjs +3 -3
  17. package/esm2020/lib/test-case-details/step-group/step-group.component.mjs +3 -3
  18. package/esm2020/lib/test-case-details/test-case-details-renderer/test-case-details-renderer.component.mjs +32 -4
  19. package/esm2020/lib/test-case-details/test-case-step.models.mjs +1 -1
  20. package/esm2020/lib/test-case-details/upload-step/upload-step.component.mjs +3 -3
  21. package/esm2020/lib/test-case-details/verify-url-step/verify-url-step.component.mjs +3 -3
  22. package/fesm2015/cqa-lib-cqa-ui.mjs +705 -130
  23. package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -1
  24. package/fesm2020/cqa-lib-cqa-ui.mjs +686 -123
  25. package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -1
  26. package/lib/dynamic-select/dynamic-select-field.component.d.ts +8 -0
  27. package/lib/step-builder/step-builder-action/step-builder-action.component.d.ts +7 -3
  28. package/lib/step-builder/step-builder-condition/step-builder-condition.component.d.ts +5 -1
  29. package/lib/step-builder/step-builder-loop/step-builder-loop.component.d.ts +5 -1
  30. package/lib/step-builder/template-variables-form/template-variables-form.component.d.ts +29 -1
  31. package/lib/test-case-details/loop-step/loop-step.component.d.ts +11 -3
  32. package/lib/test-case-details/test-case-details-renderer/test-case-details-renderer.component.d.ts +2 -0
  33. package/lib/test-case-details/test-case-step.models.d.ts +2 -0
  34. package/package.json +1 -1
@@ -55,6 +55,7 @@ export interface DynamicSelectFieldConfig {
55
55
  allowCustomValue?: boolean;
56
56
  options: SelectOption[];
57
57
  isCompareRuns?: boolean;
58
+ valueBy?: string;
58
59
  }
59
60
  export declare class DynamicSelectFieldComponent implements OnInit, OnChanges {
60
61
  readonly SELECT_ALL_VALUE: string;
@@ -105,6 +106,13 @@ export declare class DynamicSelectFieldComponent implements OnInit, OnChanges {
105
106
  get useCheckboxStyle(): boolean;
106
107
  get allSelected(): boolean;
107
108
  private toBoolean;
109
+ /**
110
+ * Get the value for an option based on the valueBy property.
111
+ * If valueBy is provided, use that property from the option.
112
+ * Otherwise, fall back to id ?? value (default behavior).
113
+ * Must be public for template access.
114
+ */
115
+ getOptionValue(opt: SelectOption): any;
108
116
  /**
109
117
  * Sync the form control's disabled state from config.
110
118
  * Use the FormControl API instead of [disabled] in the template to avoid Angular's
@@ -1,7 +1,7 @@
1
1
  import { EventEmitter, OnInit, OnChanges, SimpleChanges, OnDestroy } from '@angular/core';
2
2
  import { FormBuilder, FormGroup, FormArray } from '@angular/forms';
3
3
  import { DynamicSelectFieldConfig } from '../../dynamic-select/dynamic-select-field.component';
4
- import { TemplateVariablesFormComponent } from '../template-variables-form/template-variables-form.component';
4
+ import { TemplateVariable, TemplateVariablesFormComponent } from '../template-variables-form/template-variables-form.component';
5
5
  import * as i0 from "@angular/core";
6
6
  interface Element {
7
7
  id?: number;
@@ -85,6 +85,10 @@ export declare class StepBuilderActionComponent implements OnInit, OnChanges, On
85
85
  templateChanged: EventEmitter<ActionTemplate>;
86
86
  loadMoreElements: EventEmitter<void>;
87
87
  searchElements: EventEmitter<string>;
88
+ searchElementsByScreenName: EventEmitter<{
89
+ screenNameId: number;
90
+ searchTerm?: string;
91
+ }>;
88
92
  createElement: EventEmitter<any>;
89
93
  searchScreenName: EventEmitter<string>;
90
94
  loadMoreScreenNames: EventEmitter<string>;
@@ -105,7 +109,7 @@ export declare class StepBuilderActionComponent implements OnInit, OnChanges, On
105
109
  metadata: string;
106
110
  description: string;
107
111
  advancedExpanded: boolean;
108
- templateVariables: any[];
112
+ templateVariables: TemplateVariable[];
109
113
  variablesForm: FormArray;
110
114
  updatedHtmlGrammar: string;
111
115
  createElementVisible: boolean;
@@ -170,6 +174,6 @@ export declare class StepBuilderActionComponent implements OnInit, OnChanges, On
170
174
  */
171
175
  get environmentVariableAvailable(): boolean;
172
176
  static ɵfac: i0.ɵɵFactoryDeclaration<StepBuilderActionComponent, never>;
173
- static ɵcmp: i0.ɵɵComponentDeclaration<StepBuilderActionComponent, "cqa-step-builder-action", never, { "showHeader": "showHeader"; "templates": "templates"; "searchPlaceholder": "searchPlaceholder"; "setTemplateVariables": "setTemplateVariables"; "preventSelectTemplate": "preventSelectTemplate"; "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"; }, { "templateChanged": "templateChanged"; "loadMoreElements": "loadMoreElements"; "searchElements": "searchElements"; "createElement": "createElement"; "searchScreenName": "searchScreenName"; "loadMoreScreenNames": "loadMoreScreenNames"; "createScreenNameRequest": "createScreenNameRequest"; "searchParameters": "searchParameters"; "loadMoreParameters": "loadMoreParameters"; "searchEnvironments": "searchEnvironments"; "loadMoreEnvironments": "loadMoreEnvironments"; "createStep": "createStep"; "cancelled": "cancelled"; "redirectToParameter": "redirectToParameter"; "redirectToEnvironment": "redirectToEnvironment"; }, never, never>;
177
+ static ɵcmp: i0.ɵɵComponentDeclaration<StepBuilderActionComponent, "cqa-step-builder-action", never, { "showHeader": "showHeader"; "templates": "templates"; "searchPlaceholder": "searchPlaceholder"; "setTemplateVariables": "setTemplateVariables"; "preventSelectTemplate": "preventSelectTemplate"; "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"; }, { "templateChanged": "templateChanged"; "loadMoreElements": "loadMoreElements"; "searchElements": "searchElements"; "searchElementsByScreenName": "searchElementsByScreenName"; "createElement": "createElement"; "searchScreenName": "searchScreenName"; "loadMoreScreenNames": "loadMoreScreenNames"; "createScreenNameRequest": "createScreenNameRequest"; "searchParameters": "searchParameters"; "loadMoreParameters": "loadMoreParameters"; "searchEnvironments": "searchEnvironments"; "loadMoreEnvironments": "loadMoreEnvironments"; "createStep": "createStep"; "cancelled": "cancelled"; "redirectToParameter": "redirectToParameter"; "redirectToEnvironment": "redirectToEnvironment"; }, never, never>;
174
178
  }
175
179
  export {};
@@ -65,6 +65,10 @@ export declare class StepBuilderConditionComponent implements OnInit, OnChanges
65
65
  cancelled: EventEmitter<void>;
66
66
  loadMoreElements: EventEmitter<void>;
67
67
  searchElements: EventEmitter<string>;
68
+ searchElementsByScreenName: EventEmitter<{
69
+ screenNameId: number;
70
+ searchTerm?: string;
71
+ }>;
68
72
  createElement: EventEmitter<any>;
69
73
  searchScreenName: EventEmitter<string>;
70
74
  loadMoreScreenNames: EventEmitter<string>;
@@ -125,6 +129,6 @@ export declare class StepBuilderConditionComponent implements OnInit, OnChanges
125
129
  onCancel(): void;
126
130
  onCreateStep(): void;
127
131
  static ɵfac: i0.ɵɵFactoryDeclaration<StepBuilderConditionComponent, never>;
128
- static ɵcmp: i0.ɵɵComponentDeclaration<StepBuilderConditionComponent, "cqa-step-builder-condition", never, { "operatorOptions": "operatorOptions"; "conditionTemplates": "conditionTemplates"; "setConditionTemplateVariables": "setConditionTemplateVariables"; "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"; }, { "createStep": "createStep"; "cancelled": "cancelled"; "loadMoreElements": "loadMoreElements"; "searchElements": "searchElements"; "createElement": "createElement"; "searchScreenName": "searchScreenName"; "loadMoreScreenNames": "loadMoreScreenNames"; "createScreenNameRequest": "createScreenNameRequest"; "searchParameters": "searchParameters"; "loadMoreParameters": "loadMoreParameters"; "searchEnvironments": "searchEnvironments"; "loadMoreEnvironments": "loadMoreEnvironments"; "redirectToParameter": "redirectToParameter"; "redirectToEnvironment": "redirectToEnvironment"; }, never, never>;
132
+ static ɵcmp: i0.ɵɵComponentDeclaration<StepBuilderConditionComponent, "cqa-step-builder-condition", never, { "operatorOptions": "operatorOptions"; "conditionTemplates": "conditionTemplates"; "setConditionTemplateVariables": "setConditionTemplateVariables"; "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"; }, { "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>;
129
133
  }
130
134
  export {};
@@ -77,6 +77,10 @@ export declare class StepBuilderLoopComponent implements OnInit, OnChanges {
77
77
  defaultTestDataStartIndex?: number;
78
78
  loadMoreElements: EventEmitter<void>;
79
79
  searchElements: EventEmitter<string>;
80
+ searchElementsByScreenName: EventEmitter<{
81
+ screenNameId: number;
82
+ searchTerm?: string;
83
+ }>;
80
84
  createElement: EventEmitter<any>;
81
85
  searchScreenName: EventEmitter<string>;
82
86
  loadMoreScreenNames: EventEmitter<string>;
@@ -146,5 +150,5 @@ export declare class StepBuilderLoopComponent implements OnInit, OnChanges {
146
150
  filterWhileTemplates(query: string): void;
147
151
  selectWhileTemplate(template: any): void;
148
152
  static ɵfac: i0.ɵɵFactoryDeclaration<StepBuilderLoopComponent, never>;
149
- static ɵcmp: i0.ɵɵComponentDeclaration<StepBuilderLoopComponent, "cqa-step-builder-loop", never, { "loopType": "loopType"; "selectOptions": "selectOptions"; "dataProfileOptions": "dataProfileOptions"; "hasMoreDataProfiles": "hasMoreDataProfiles"; "isLoadingDataProfiles": "isLoadingDataProfiles"; "setWhileTemplateVariables": "setWhileTemplateVariables"; "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"; }, { "createStep": "createStep"; "cancelled": "cancelled"; "loopTypeChange": "loopTypeChange"; "loadMoreDataProfiles": "loadMoreDataProfiles"; "searchDataProfiles": "searchDataProfiles"; "loadMoreElements": "loadMoreElements"; "searchElements": "searchElements"; "createElement": "createElement"; "searchScreenName": "searchScreenName"; "loadMoreScreenNames": "loadMoreScreenNames"; "createScreenNameRequest": "createScreenNameRequest"; "cancelElementForm": "cancelElementForm"; "searchParameters": "searchParameters"; "loadMoreParameters": "loadMoreParameters"; "searchEnvironments": "searchEnvironments"; "loadMoreEnvironments": "loadMoreEnvironments"; "redirectToParameter": "redirectToParameter"; "redirectToEnvironment": "redirectToEnvironment"; }, never, never>;
153
+ static ɵcmp: i0.ɵɵComponentDeclaration<StepBuilderLoopComponent, "cqa-step-builder-loop", never, { "loopType": "loopType"; "selectOptions": "selectOptions"; "dataProfileOptions": "dataProfileOptions"; "hasMoreDataProfiles": "hasMoreDataProfiles"; "isLoadingDataProfiles": "isLoadingDataProfiles"; "setWhileTemplateVariables": "setWhileTemplateVariables"; "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"; }, { "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>;
150
154
  }
@@ -26,6 +26,11 @@ export interface TemplateVariable {
26
26
  selectedTestDataProfile?: string;
27
27
  selectedTestDataProfileId?: number;
28
28
  selectedDataSet?: string;
29
+ selectedScreenName?: string;
30
+ screenNameId?: number;
31
+ elementId?: number;
32
+ elementLocator?: string;
33
+ elementName?: string;
29
34
  }
30
35
  export declare class TemplateVariablesFormComponent implements OnChanges {
31
36
  private cdr;
@@ -76,6 +81,10 @@ export declare class TemplateVariablesFormComponent implements OnChanges {
76
81
  descriptionChange: EventEmitter<string>;
77
82
  loadMoreElements: EventEmitter<void>;
78
83
  searchElements: EventEmitter<string>;
84
+ searchElementsByScreenName: EventEmitter<{
85
+ screenNameId: number;
86
+ searchTerm?: string;
87
+ }>;
79
88
  createElement: EventEmitter<ElementCreatePayload>;
80
89
  searchScreenName: EventEmitter<string>;
81
90
  loadMoreScreenNames: EventEmitter<string>;
@@ -91,6 +100,8 @@ export declare class TemplateVariablesFormComponent implements OnChanges {
91
100
  private parameterSelectConfigCache;
92
101
  private environmentSelectConfigCache;
93
102
  private environmentParameterSelectConfigCache;
103
+ private screenNameSelectConfigCache;
104
+ private elementSelectConfigCache;
94
105
  private testDataProfileSelectConfigCache;
95
106
  private dataSetSelectConfigCache;
96
107
  private parameterForDataSetSelectConfigCache;
@@ -237,11 +248,28 @@ export declare class TemplateVariablesFormComponent implements OnChanges {
237
248
  * Check if current data type is environment
238
249
  */
239
250
  isEnvironmentType(variable: TemplateVariable): boolean;
251
+ /**
252
+ * Check if variable is element type (dataKey === 'element')
253
+ */
254
+ isElementType(variable: TemplateVariable): boolean;
255
+ /**
256
+ * Check if screen name is selected for an element variable
257
+ */
258
+ hasSelectedScreenName(variable: TemplateVariable): boolean;
259
+ /**
260
+ * Get select config for screen name dropdown (first dropdown for element variables)
261
+ */
262
+ getScreenNameSelectConfig(variable: TemplateVariable, index: number): DynamicSelectFieldConfig;
263
+ /**
264
+ * Get select config for element dropdown (second dropdown - filtered by screen name)
265
+ * Optimized to return immediately from cache to avoid repeated calls during change detection
266
+ */
267
+ getElementSelectConfig(variable: TemplateVariable, index: number): DynamicSelectFieldConfig;
240
268
  /**
241
269
  * Check if current data type is runtime
242
270
  */
243
271
  isRuntimeType(variable: TemplateVariable): boolean;
244
272
  static ɵfac: i0.ɵɵFactoryDeclaration<TemplateVariablesFormComponent, never>;
245
- 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"; "environmentOptions": "environmentOptions"; "hasMoreEnvironments": "hasMoreEnvironments"; "isLoadingEnvironments": "isLoadingEnvironments"; "defaultTestDataProfileId": "defaultTestDataProfileId"; "defaultTestDataStartIndex": "defaultTestDataStartIndex"; "isEditInDepth": "isEditInDepth"; "createElementVisible": "createElementVisible"; }, { "variableValueChange": "variableValueChange"; "variableBooleanChange": "variableBooleanChange"; "metadataChange": "metadataChange"; "descriptionChange": "descriptionChange"; "loadMoreElements": "loadMoreElements"; "searchElements": "searchElements"; "createElement": "createElement"; "searchScreenName": "searchScreenName"; "loadMoreScreenNames": "loadMoreScreenNames"; "createScreenNameRequest": "createScreenNameRequest"; "searchParameters": "searchParameters"; "loadMoreParameters": "loadMoreParameters"; "searchEnvironments": "searchEnvironments"; "loadMoreEnvironments": "loadMoreEnvironments"; "cancelElementForm": "cancelElementForm"; "elementFormVisibilityChange": "elementFormVisibilityChange"; }, never, never>;
273
+ 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"; "environmentOptions": "environmentOptions"; "hasMoreEnvironments": "hasMoreEnvironments"; "isLoadingEnvironments": "isLoadingEnvironments"; "defaultTestDataProfileId": "defaultTestDataProfileId"; "defaultTestDataStartIndex": "defaultTestDataStartIndex"; "isEditInDepth": "isEditInDepth"; "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"; "searchEnvironments": "searchEnvironments"; "loadMoreEnvironments": "loadMoreEnvironments"; "cancelElementForm": "cancelElementForm"; "elementFormVisibilityChange": "elementFormVisibilityChange"; }, never, never>;
246
274
  }
247
275
  export {};
@@ -113,8 +113,8 @@ export declare class TestCaseLoopStepComponent implements OnInit, OnChanges {
113
113
  templateVariables: any[];
114
114
  /** Form group for template variables */
115
115
  templateVariablesForm: FormGroup;
116
- /** Options for Loop Start / Loop End dropdowns (1-10) */
117
- loopStepOptions: number[];
116
+ /** Default max for Loop Start / End when no profile selected (options 1..10) */
117
+ private static readonly DEFAULT_LOOP_OPTIONS_MAX;
118
118
  viewDetailsTrigger?: ElementRef<HTMLElement>;
119
119
  /** Local copy of values while editing (for Cancel revert) */
120
120
  private editSnapshot;
@@ -160,7 +160,11 @@ export declare class TestCaseLoopStepComponent implements OnInit, OnChanges {
160
160
  private updateForLoopSelectConfigsSelectedValues;
161
161
  /** Convert DataProfileOption[] to SelectOption[] */
162
162
  private convertDataProfileOptionsToSelectOptions;
163
- /** Handle data profile selection */
163
+ /** Data length (N) of the currently selected test data profile; 0 if none selected or not found. */
164
+ private getSelectedProfileDataLength;
165
+ /** Loop Start/End options: 1 to N based on selected data profile's data array length; falls back to 1..10 if no profile. */
166
+ getLoopStepOptions(): number[];
167
+ /** Handle data profile selection: update display, clamp start/end to new profile range, refresh start/end dropdowns. */
164
168
  private onDataProfileChange;
165
169
  /** Handle search for data profiles */
166
170
  private onSearchDataProfiles;
@@ -177,6 +181,10 @@ export declare class TestCaseLoopStepComponent implements OnInit, OnChanges {
177
181
  private getDisplayEndIndex;
178
182
  /** Resolve display profile name: map forLoopTestDataId to profile name from dataProfileOptions, else use testDataProfile */
179
183
  private getDisplayTestDataProfileName;
184
+ /** Get the selected data profile (by forLoopTestDataId or form value), or null. */
185
+ private getSelectedDataProfile;
186
+ /** Get display name for a 1-based row index from the selected profile's data array (data[index-1].name). Returns null if no name. */
187
+ private getDataRowNameForOneBasedIndex;
180
188
  /** Whether test data profile is set (so we can show/hide the chip) */
181
189
  hasTestDataProfile(): boolean;
182
190
  /** Whether start value is explicitly set (config or startStep input), not inferred from nested steps */
@@ -119,6 +119,8 @@ export declare class TestCaseDetailsRendererComponent implements OnChanges, Afte
119
119
  constructor(componentMap: TestCaseStepComponentMap, cdr: ChangeDetectorRef);
120
120
  ngAfterViewInit(): void;
121
121
  ngOnChanges(changes: SimpleChanges): void;
122
+ /** Update only data profile / options inputs on existing instance (avoids full recreate and losing isEditing). */
123
+ private updateOptionsInputs;
122
124
  private getComponentType;
123
125
  private renderStep;
124
126
  private wireOutputs;
@@ -44,6 +44,8 @@ export interface BaseStepConfig {
44
44
  disabled?: boolean;
45
45
  expanded?: boolean;
46
46
  event?: Record<string, unknown>;
47
+ /** Creation timestamp from API (milliseconds since epoch) */
48
+ createdDate?: number;
47
49
  }
48
50
  export interface NormalStepConfig extends BaseStepConfig {
49
51
  stepType: StepTypes.NORMAL;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cqa-lib/cqa-ui",
3
- "version": "1.1.246",
3
+ "version": "1.1.248",
4
4
  "description": "UI Kit library for Angular 13.4",
5
5
  "keywords": [
6
6
  "angular",