@cqa-lib/cqa-ui 1.1.158 → 1.1.159

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/esm2020/lib/step-builder/step-builder-action/step-builder-action.component.mjs +119 -0
  2. package/esm2020/lib/table-action-toolbar/table-action-toolbar.component.mjs +27 -3
  3. package/esm2020/lib/templates/table-template.component.mjs +1 -1
  4. package/esm2020/lib/test-case-details/ai-agent-step/ai-agent-step.component.mjs +73 -0
  5. package/esm2020/lib/test-case-details/api-step/api-step.component.mjs +107 -0
  6. package/esm2020/lib/test-case-details/condition-step/condition-step.component.mjs +292 -0
  7. package/esm2020/lib/test-case-details/custom-code-step/custom-code-step.component.mjs +84 -0
  8. package/esm2020/lib/test-case-details/database-step/database-step.component.mjs +95 -0
  9. package/esm2020/lib/test-case-details/loop-step/loop-step.component.mjs +328 -0
  10. package/esm2020/lib/test-case-details/normal-step/normal-step.component.mjs +202 -0
  11. package/esm2020/lib/test-case-details/screenshot-step/screenshot-step.component.mjs +87 -0
  12. package/esm2020/lib/test-case-details/step-group/step-group.component.mjs +247 -0
  13. package/esm2020/lib/test-case-details/step-row-actions.styles.mjs +15 -0
  14. package/esm2020/lib/test-case-details/test-case-details-renderer/test-case-details-renderer.component.mjs +224 -0
  15. package/esm2020/lib/test-case-details/test-case-step-components.token.mjs +3 -0
  16. package/esm2020/lib/test-case-details/test-case-step.models.mjs +51 -0
  17. package/esm2020/lib/test-case-details/upload-step/upload-step.component.mjs +85 -0
  18. package/esm2020/lib/ui-kit.module.mjs +96 -5
  19. package/esm2020/public-api.mjs +14 -1
  20. package/fesm2015/cqa-lib-cqa-ui.mjs +2265 -208
  21. package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -1
  22. package/fesm2020/cqa-lib-cqa-ui.mjs +2252 -208
  23. package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -1
  24. package/lib/step-builder/step-builder-action/step-builder-action.component.d.ts +59 -0
  25. package/lib/table-action-toolbar/table-action-toolbar.component.d.ts +11 -1
  26. package/lib/test-case-details/ai-agent-step/ai-agent-step.component.d.ts +30 -0
  27. package/lib/test-case-details/api-step/api-step.component.d.ts +42 -0
  28. package/lib/test-case-details/condition-step/condition-step.component.d.ts +87 -0
  29. package/lib/test-case-details/custom-code-step/custom-code-step.component.d.ts +33 -0
  30. package/lib/test-case-details/database-step/database-step.component.d.ts +41 -0
  31. package/lib/test-case-details/loop-step/loop-step.component.d.ts +96 -0
  32. package/lib/test-case-details/normal-step/normal-step.component.d.ts +44 -0
  33. package/lib/test-case-details/screenshot-step/screenshot-step.component.d.ts +33 -0
  34. package/lib/test-case-details/step-group/step-group.component.d.ts +70 -0
  35. package/lib/test-case-details/step-row-actions.styles.d.ts +6 -0
  36. package/lib/test-case-details/test-case-details-renderer/test-case-details-renderer.component.d.ts +67 -0
  37. package/lib/test-case-details/test-case-step-components.token.d.ts +15 -0
  38. package/lib/test-case-details/test-case-step.models.d.ts +133 -0
  39. package/lib/test-case-details/upload-step/upload-step.component.d.ts +33 -0
  40. package/lib/ui-kit.module.d.ts +31 -19
  41. package/package.json +1 -1
  42. package/public-api.d.ts +13 -0
  43. package/styles.css +1 -1
@@ -0,0 +1,59 @@
1
+ import { EventEmitter, OnInit, OnChanges, SimpleChanges } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export interface VariableDefinition {
4
+ path: string;
5
+ default: string;
6
+ mutable: boolean;
7
+ type?: string;
8
+ options?: string[];
9
+ }
10
+ export interface ActionTemplate {
11
+ id?: number;
12
+ naturalText?: string;
13
+ displayName?: string;
14
+ htmlGrammar?: string;
15
+ searchableGrammar?: string;
16
+ isAddon?: boolean;
17
+ variables?: Record<string, VariableDefinition>;
18
+ }
19
+ export interface ElementField {
20
+ key: string;
21
+ label: string;
22
+ value: string;
23
+ type: 'element' | 'test-data' | 'attribute';
24
+ }
25
+ export declare class StepBuilderActionComponent implements OnInit, OnChanges {
26
+ /** List of action templates to display */
27
+ templates: ActionTemplate[];
28
+ /** Placeholder text for search input */
29
+ searchPlaceholder: string;
30
+ /** Function to handle variable processing or custom logic. Can be passed from parent component. */
31
+ setTemplateVariables: (variables: Record<string, VariableDefinition>) => any;
32
+ /** Emit when step is created */
33
+ createStep: EventEmitter<any>;
34
+ /** Emit when cancelled */
35
+ cancelled: EventEmitter<void>;
36
+ filteredTemplates: ActionTemplate[];
37
+ searchValue: string;
38
+ selectedTemplate: ActionTemplate | null;
39
+ metadata: string;
40
+ description: string;
41
+ advancedExpanded: boolean;
42
+ templateVariables: any;
43
+ ngOnInit(): void;
44
+ ngOnChanges(changes: SimpleChanges): void;
45
+ onSearchChange(value: string): void;
46
+ onSearchSubmit(value: string): void;
47
+ onSearchCleared(): void;
48
+ applyFilter(): void;
49
+ selectTemplate(template: ActionTemplate): void;
50
+ onBack(): void;
51
+ onCancel(): void;
52
+ onCreateStep(): void;
53
+ toggleAdvanced(): void;
54
+ onElementClick(elementKey: string): void;
55
+ onElementValueChange(key: string, value: string): void;
56
+ onTestDataValueChange(key: string, value: string): void;
57
+ static ɵfac: i0.ɵɵFactoryDeclaration<StepBuilderActionComponent, never>;
58
+ static ɵcmp: i0.ɵɵComponentDeclaration<StepBuilderActionComponent, "cqa-step-builder-action", never, { "templates": "templates"; "searchPlaceholder": "searchPlaceholder"; "setTemplateVariables": "setTemplateVariables"; }, { "createStep": "createStep"; "cancelled": "cancelled"; }, never, never>;
59
+ }
@@ -23,16 +23,26 @@ export interface TableAction {
23
23
  export declare class TableActionToolbarComponent {
24
24
  selectedItems: any[];
25
25
  actions: TableAction[];
26
+ /** When true, show a "Select all" checkbox next to the selection count (e.g. for test case details). */
27
+ showSelectAll: boolean;
28
+ /** Bound to the Select all checkbox when showSelectAll is true. */
29
+ allSelected: boolean;
30
+ /** When true, show a dismiss (X) button at the end of the toolbar. */
31
+ showDismiss: boolean;
26
32
  actionClick: EventEmitter<{
27
33
  id: string;
28
34
  selected: any[];
29
35
  }>;
36
+ selectAllChange: EventEmitter<boolean>;
37
+ dismiss: EventEmitter<void>;
30
38
  get hasSelection(): boolean;
31
39
  get isSingleSelection(): boolean;
32
40
  get selectionLabel(): string;
33
41
  visibleActions(): TableAction[];
34
42
  isDisabled(action: TableAction): boolean;
35
43
  onAction(action: TableAction): void;
44
+ onSelectAllChange(checked: boolean): void;
45
+ onDismiss(): void;
36
46
  static ɵfac: i0.ɵɵFactoryDeclaration<TableActionToolbarComponent, never>;
37
- static ɵcmp: i0.ɵɵComponentDeclaration<TableActionToolbarComponent, "cqa-table-action-toolbar", never, { "selectedItems": "selectedItems"; "actions": "actions"; }, { "actionClick": "actionClick"; }, never, never>;
47
+ static ɵcmp: i0.ɵɵComponentDeclaration<TableActionToolbarComponent, "cqa-table-action-toolbar", never, { "selectedItems": "selectedItems"; "actions": "actions"; "showSelectAll": "showSelectAll"; "allSelected": "allSelected"; "showDismiss": "showDismiss"; }, { "actionClick": "actionClick"; "selectAllChange": "selectAllChange"; "dismiss": "dismiss"; }, never, never>;
38
48
  }
@@ -0,0 +1,30 @@
1
+ import { EventEmitter, OnInit } from '@angular/core';
2
+ import { AiAgentStepConfig } from '../test-case-step.models';
3
+ import * as i0 from "@angular/core";
4
+ export declare class TestCaseAiAgentStepComponent implements OnInit {
5
+ config: AiAgentStepConfig;
6
+ stepNumber: number | string;
7
+ instructions: string;
8
+ description?: string;
9
+ selected: boolean;
10
+ disabled: boolean;
11
+ isNested: boolean;
12
+ isInsideLoop: boolean;
13
+ edit: EventEmitter<void>;
14
+ link: EventEmitter<void>;
15
+ duplicate: EventEmitter<void>;
16
+ delete: EventEmitter<void>;
17
+ moreOptions: EventEmitter<void>;
18
+ viewDetails: EventEmitter<void>;
19
+ selectionChange: EventEmitter<boolean>;
20
+ ngOnInit(): void;
21
+ onEdit(): void;
22
+ onLink(): void;
23
+ onDuplicate(): void;
24
+ onDelete(): void;
25
+ onMoreOptions(): void;
26
+ onViewDetails(): void;
27
+ onSelectionChange(checked: boolean): void;
28
+ static ɵfac: i0.ɵɵFactoryDeclaration<TestCaseAiAgentStepComponent, never>;
29
+ static ɵcmp: i0.ɵɵComponentDeclaration<TestCaseAiAgentStepComponent, "cqa-test-case-ai-agent-step", never, { "config": "config"; "stepNumber": "stepNumber"; "instructions": "instructions"; "description": "description"; "selected": "selected"; "disabled": "disabled"; "isNested": "isNested"; "isInsideLoop": "isInsideLoop"; }, { "edit": "edit"; "link": "link"; "duplicate": "duplicate"; "delete": "delete"; "moreOptions": "moreOptions"; "viewDetails": "viewDetails"; "selectionChange": "selectionChange"; }, never, never>;
30
+ }
@@ -0,0 +1,42 @@
1
+ import { EventEmitter, OnInit } from '@angular/core';
2
+ import { ApiStepConfig } from '../test-case-step.models';
3
+ import * as i0 from "@angular/core";
4
+ export declare class TestCaseApiStepComponent implements OnInit {
5
+ config: ApiStepConfig;
6
+ stepNumber: number | string;
7
+ method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
8
+ endpoint: string;
9
+ description?: string;
10
+ baseUrl?: string;
11
+ headersCount?: number;
12
+ hasBody?: boolean;
13
+ saveTo?: string;
14
+ selected: boolean;
15
+ disabled: boolean;
16
+ isNested: boolean;
17
+ isInsideLoop: boolean;
18
+ expanded: boolean;
19
+ edit: EventEmitter<void>;
20
+ link: EventEmitter<void>;
21
+ duplicate: EventEmitter<void>;
22
+ delete: EventEmitter<void>;
23
+ moreOptions: EventEmitter<void>;
24
+ viewDetails: EventEmitter<void>;
25
+ selectionChange: EventEmitter<boolean>;
26
+ toggleExpanded: EventEmitter<{
27
+ config: ApiStepConfig;
28
+ expanded: boolean;
29
+ }>;
30
+ ngOnInit(): void;
31
+ getDisplayText(): string;
32
+ onToggleExpanded(): void;
33
+ onEdit(): void;
34
+ onLink(): void;
35
+ onDuplicate(): void;
36
+ onDelete(): void;
37
+ onMoreOptions(): void;
38
+ onViewDetails(): void;
39
+ onSelectionChange(checked: boolean): void;
40
+ static ɵfac: i0.ɵɵFactoryDeclaration<TestCaseApiStepComponent, never>;
41
+ static ɵcmp: i0.ɵɵComponentDeclaration<TestCaseApiStepComponent, "cqa-test-case-api-step", never, { "config": "config"; "stepNumber": "stepNumber"; "method": "method"; "endpoint": "endpoint"; "description": "description"; "baseUrl": "baseUrl"; "headersCount": "headersCount"; "hasBody": "hasBody"; "saveTo": "saveTo"; "selected": "selected"; "disabled": "disabled"; "isNested": "isNested"; "isInsideLoop": "isInsideLoop"; "expanded": "expanded"; }, { "edit": "edit"; "link": "link"; "duplicate": "duplicate"; "delete": "delete"; "moreOptions": "moreOptions"; "viewDetails": "viewDetails"; "selectionChange": "selectionChange"; "toggleExpanded": "toggleExpanded"; }, never, never>;
42
+ }
@@ -0,0 +1,87 @@
1
+ import { EventEmitter, OnInit } from '@angular/core';
2
+ import { FormBuilder, FormGroup } from '@angular/forms';
3
+ import { ConditionStepConfig, ConditionBranch, TestCaseStepConfig, NormalStepConfig, LoopStepConfig, StepGroupConfig } from '../test-case-step.models';
4
+ import { DynamicSelectFieldConfig } from '../../dynamic-select/dynamic-select-field.component';
5
+ import * as i0 from "@angular/core";
6
+ export declare class TestCaseConditionStepComponent implements OnInit {
7
+ private fb;
8
+ config: ConditionStepConfig;
9
+ id: string;
10
+ stepNumber: number | string;
11
+ condition: string;
12
+ branches: ConditionBranch[];
13
+ expanded: boolean;
14
+ isNested: boolean;
15
+ isInsideLoop: boolean;
16
+ /** When true, header shows inline edit form (fields, operator select, Cancel/Apply) */
17
+ isEditing: boolean;
18
+ /** Form for edit mode; bound to cqa-dynamic-select and cqa-custom-input */
19
+ editForm: FormGroup;
20
+ /** Operator dropdown config (IS, IS NOT, CONTAINS, etc.) */
21
+ operatorSelectConfig: DynamicSelectFieldConfig;
22
+ /** Snapshot for Cancel revert */
23
+ private editSnapshot;
24
+ toggleExpanded: EventEmitter<{
25
+ config: ConditionStepConfig;
26
+ expanded: boolean;
27
+ }>;
28
+ conditionChange: EventEmitter<string>;
29
+ branchStepChange: EventEmitter<{
30
+ branch: ConditionBranch;
31
+ step: TestCaseStepConfig;
32
+ stepIndex: number;
33
+ }>;
34
+ addStep: EventEmitter<{
35
+ branch: ConditionBranch;
36
+ }>;
37
+ deleteStep: EventEmitter<{
38
+ branch: ConditionBranch;
39
+ stepIndex: number;
40
+ }>;
41
+ addBranch: EventEmitter<void>;
42
+ deleteBranch: EventEmitter<ConditionBranch>;
43
+ duplicate: EventEmitter<void>;
44
+ delete: EventEmitter<void>;
45
+ moreOptions: EventEmitter<void>;
46
+ constructor(fb: FormBuilder);
47
+ ngOnInit(): void;
48
+ private buildEditForm;
49
+ private buildOperatorSelectConfig;
50
+ /** Parse condition string into left, operator, right (e.g. "Usertype is Premium") */
51
+ private parseCondition;
52
+ /** Build condition string from form values */
53
+ private buildConditionFromForm;
54
+ onEditFormFieldChange(controlName: string, value: string): void;
55
+ getStepsSummary(): string;
56
+ onToggleExpanded(): void;
57
+ onConditionChange(value: string): void;
58
+ onBranchStepChange(branch: ConditionBranch, step: TestCaseStepConfig, stepIndex: number): void;
59
+ onNestedToggleExpanded(event: boolean | {
60
+ config: TestCaseStepConfig;
61
+ expanded: boolean;
62
+ }, branch: ConditionBranch, step: TestCaseStepConfig, index: number): void;
63
+ onAddStep(branch: ConditionBranch): void;
64
+ onDeleteStep(branch: ConditionBranch, stepIndex: number): void;
65
+ onAddBranch(): void;
66
+ onDeleteBranch(branch: ConditionBranch): void;
67
+ onNestedConditionAddBranch(nestedStep: ConditionStepConfig): void;
68
+ onNestedConditionDeleteBranch(nestedStep: ConditionStepConfig, branch: ConditionBranch): void;
69
+ isNormalStep(step: TestCaseStepConfig): step is NormalStepConfig;
70
+ isLoopStep(step: TestCaseStepConfig): step is LoopStepConfig;
71
+ isConditionStep(step: TestCaseStepConfig): step is ConditionStepConfig;
72
+ isStepGroup(step: TestCaseStepConfig): step is StepGroupConfig;
73
+ getBranchLabel(branch: ConditionBranch): string;
74
+ getBranchColorClass(branch: ConditionBranch): string;
75
+ getBranchTextColor(branch: ConditionBranch): string;
76
+ onOpenExternal(): void;
77
+ onEdit(): void;
78
+ onEditCancel(): void;
79
+ onEditApply(): void;
80
+ onEditInDepth(): void;
81
+ onLink(): void;
82
+ onDuplicate(): void;
83
+ onDelete(): void;
84
+ onMoreOptions(): void;
85
+ static ɵfac: i0.ɵɵFactoryDeclaration<TestCaseConditionStepComponent, never>;
86
+ static ɵcmp: i0.ɵɵComponentDeclaration<TestCaseConditionStepComponent, "cqa-test-case-condition-step", never, { "config": "config"; "id": "id"; "stepNumber": "stepNumber"; "condition": "condition"; "branches": "branches"; "expanded": "expanded"; "isNested": "isNested"; "isInsideLoop": "isInsideLoop"; }, { "toggleExpanded": "toggleExpanded"; "conditionChange": "conditionChange"; "branchStepChange": "branchStepChange"; "addStep": "addStep"; "deleteStep": "deleteStep"; "addBranch": "addBranch"; "deleteBranch": "deleteBranch"; "duplicate": "duplicate"; "delete": "delete"; "moreOptions": "moreOptions"; }, never, never>;
87
+ }
@@ -0,0 +1,33 @@
1
+ import { EventEmitter, OnInit } from '@angular/core';
2
+ import { CustomCodeStepConfig } from '../test-case-step.models';
3
+ import * as i0 from "@angular/core";
4
+ export declare class TestCaseCustomCodeStepComponent implements OnInit {
5
+ config: CustomCodeStepConfig;
6
+ stepNumber: number | string;
7
+ language: 'javascript' | 'python' | 'typescript';
8
+ code: string;
9
+ description?: string;
10
+ selected: boolean;
11
+ disabled: boolean;
12
+ isNested: boolean;
13
+ isInsideLoop: boolean;
14
+ edit: EventEmitter<void>;
15
+ link: EventEmitter<void>;
16
+ duplicate: EventEmitter<void>;
17
+ delete: EventEmitter<void>;
18
+ moreOptions: EventEmitter<void>;
19
+ viewDetails: EventEmitter<void>;
20
+ selectionChange: EventEmitter<boolean>;
21
+ ngOnInit(): void;
22
+ getLanguageLabel(): string;
23
+ getCodePreview(): string;
24
+ onEdit(): void;
25
+ onLink(): void;
26
+ onDuplicate(): void;
27
+ onDelete(): void;
28
+ onMoreOptions(): void;
29
+ onViewDetails(): void;
30
+ onSelectionChange(checked: boolean): void;
31
+ static ɵfac: i0.ɵɵFactoryDeclaration<TestCaseCustomCodeStepComponent, never>;
32
+ static ɵcmp: i0.ɵɵComponentDeclaration<TestCaseCustomCodeStepComponent, "cqa-test-case-custom-code-step", never, { "config": "config"; "stepNumber": "stepNumber"; "language": "language"; "code": "code"; "description": "description"; "selected": "selected"; "disabled": "disabled"; "isNested": "isNested"; "isInsideLoop": "isInsideLoop"; }, { "edit": "edit"; "link": "link"; "duplicate": "duplicate"; "delete": "delete"; "moreOptions": "moreOptions"; "viewDetails": "viewDetails"; "selectionChange": "selectionChange"; }, never, never>;
33
+ }
@@ -0,0 +1,41 @@
1
+ import { EventEmitter, OnInit } from '@angular/core';
2
+ import { DatabaseStepConfig } from '../test-case-step.models';
3
+ import * as i0 from "@angular/core";
4
+ export declare class TestCaseDatabaseStepComponent implements OnInit {
5
+ config: DatabaseStepConfig;
6
+ stepNumber: number | string;
7
+ query: string;
8
+ description?: string;
9
+ databaseType?: 'mysql' | 'postgresql' | 'mongodb' | 'mssql' | 'oracle';
10
+ connectionName?: string;
11
+ saveTo?: string;
12
+ selected: boolean;
13
+ disabled: boolean;
14
+ isNested: boolean;
15
+ isInsideLoop: boolean;
16
+ expanded: boolean;
17
+ edit: EventEmitter<void>;
18
+ link: EventEmitter<void>;
19
+ duplicate: EventEmitter<void>;
20
+ delete: EventEmitter<void>;
21
+ viewDetails: EventEmitter<void>;
22
+ selectionChange: EventEmitter<boolean>;
23
+ toggleExpanded: EventEmitter<{
24
+ config: DatabaseStepConfig;
25
+ expanded: boolean;
26
+ }>;
27
+ connectionNameChange: EventEmitter<string>;
28
+ queryChange: EventEmitter<string>;
29
+ ngOnInit(): void;
30
+ onToggleExpanded(): void;
31
+ onEdit(): void;
32
+ onLink(): void;
33
+ onDuplicate(): void;
34
+ onDelete(): void;
35
+ onViewDetails(): void;
36
+ onSelectionChange(checked: boolean): void;
37
+ onConnectionChange(value: string): void;
38
+ onQueryChange(value: string): void;
39
+ static ɵfac: i0.ɵɵFactoryDeclaration<TestCaseDatabaseStepComponent, never>;
40
+ static ɵcmp: i0.ɵɵComponentDeclaration<TestCaseDatabaseStepComponent, "cqa-test-case-database-step", never, { "config": "config"; "stepNumber": "stepNumber"; "query": "query"; "description": "description"; "databaseType": "databaseType"; "connectionName": "connectionName"; "saveTo": "saveTo"; "selected": "selected"; "disabled": "disabled"; "isNested": "isNested"; "isInsideLoop": "isInsideLoop"; "expanded": "expanded"; }, { "edit": "edit"; "link": "link"; "duplicate": "duplicate"; "delete": "delete"; "viewDetails": "viewDetails"; "selectionChange": "selectionChange"; "toggleExpanded": "toggleExpanded"; "connectionNameChange": "connectionNameChange"; "queryChange": "queryChange"; }, never, never>;
41
+ }
@@ -0,0 +1,96 @@
1
+ import { EventEmitter, OnInit } from '@angular/core';
2
+ import { FormBuilder, FormGroup } from '@angular/forms';
3
+ import { DynamicSelectFieldConfig } from '../../dynamic-select/dynamic-select-field.component';
4
+ import { LoopStepConfig, TestCaseStepConfig, NormalStepConfig, ConditionStepConfig, StepGroupConfig } from '../test-case-step.models';
5
+ import * as i0 from "@angular/core";
6
+ export declare class TestCaseLoopStepComponent implements OnInit {
7
+ private fb;
8
+ config: LoopStepConfig;
9
+ id: string;
10
+ loopType: 'for' | 'while';
11
+ stepNumber: number | string;
12
+ condition?: string;
13
+ maxIterations?: number;
14
+ testDataProfile?: string;
15
+ startStep?: number;
16
+ endStep?: number;
17
+ nestedSteps: TestCaseStepConfig[];
18
+ expanded: boolean;
19
+ isNested: boolean;
20
+ isInsideLoop: boolean;
21
+ toggleExpanded: EventEmitter<{
22
+ config: LoopStepConfig;
23
+ expanded: boolean;
24
+ }>;
25
+ testDataProfileChange: EventEmitter<string>;
26
+ startStepChange: EventEmitter<number>;
27
+ endStepChange: EventEmitter<number>;
28
+ conditionChange: EventEmitter<string>;
29
+ maxIterationsChange: EventEmitter<number>;
30
+ nestedStepChange: EventEmitter<{
31
+ step: TestCaseStepConfig;
32
+ index: number;
33
+ }>;
34
+ addStep: EventEmitter<void>;
35
+ deleteStep: EventEmitter<number>;
36
+ duplicate: EventEmitter<void>;
37
+ delete: EventEmitter<void>;
38
+ moreOptions: EventEmitter<void>;
39
+ edit: EventEmitter<void>;
40
+ /** Expose global constructors for template (Angular templates don't have String/Number) */
41
+ readonly stringFn: StringConstructor;
42
+ readonly numberFn: NumberConstructor;
43
+ /** When true, header shows inline edit form (dropdowns, inputs, Cancel/Apply) */
44
+ isEditing: boolean;
45
+ /** Form for edit mode; bound to cqa-dynamic-select (same pattern as default stories) */
46
+ editForm: FormGroup;
47
+ /** Cached select configs (stable refs to avoid change-detection loops) */
48
+ forOptionTypeSelectConfig: DynamicSelectFieldConfig;
49
+ startStepSelectConfig: DynamicSelectFieldConfig;
50
+ endStepSelectConfig: DynamicSelectFieldConfig;
51
+ /** Options for Loop Start / Loop End dropdowns (1-10) */
52
+ loopStepOptions: number[];
53
+ /** Local copy of values while editing (for Cancel revert) */
54
+ private editSnapshot;
55
+ constructor(fb: FormBuilder);
56
+ ngOnInit(): void;
57
+ private buildEditForm;
58
+ /** Build select configs once (same option shape as default stories: id + name) */
59
+ private buildSelectConfigs;
60
+ onEditFormFieldChange(controlName: string, value: string | number): void;
61
+ getLoopTypeLabel(): string;
62
+ getEndLabel(): string;
63
+ getStepsSummary(): string;
64
+ onToggleExpanded(): void;
65
+ onTestDataProfileChange(value: string): void;
66
+ onStartStepChange(value: number): void;
67
+ onEndStepChange(value: number): void;
68
+ onConditionChange(value: string): void;
69
+ onMaxIterationsChange(value: number): void;
70
+ onNestedStepChange(step: TestCaseStepConfig, index: number): void;
71
+ onNestedToggleExpanded(event: boolean | {
72
+ config: TestCaseStepConfig;
73
+ expanded: boolean;
74
+ }, step: TestCaseStepConfig, index: number): void;
75
+ onAddStep(): void;
76
+ onDeleteStep(index: number): void;
77
+ isNormalStep(step: TestCaseStepConfig): step is NormalStepConfig;
78
+ isLoopStep(step: TestCaseStepConfig): step is LoopStepConfig;
79
+ isConditionStep(step: TestCaseStepConfig): step is ConditionStepConfig;
80
+ isStepGroup(step: TestCaseStepConfig): step is StepGroupConfig;
81
+ onAddBranch(): void;
82
+ onDeleteBranch(branch: any): void;
83
+ onNestedConditionAddBranch(nestedStep: ConditionStepConfig, index: number): void;
84
+ onNestedConditionDeleteBranch(nestedStep: ConditionStepConfig, branch: any, index: number): void;
85
+ onOpenExternal(): void;
86
+ onEdit(): void;
87
+ onEditApply(): void;
88
+ onEditCancel(): void;
89
+ onEditInDepth(): void;
90
+ onLink(): void;
91
+ onDuplicate(): void;
92
+ onDelete(): void;
93
+ onMoreOptions(): void;
94
+ static ɵfac: i0.ɵɵFactoryDeclaration<TestCaseLoopStepComponent, never>;
95
+ static ɵcmp: i0.ɵɵComponentDeclaration<TestCaseLoopStepComponent, "cqa-test-case-loop-step", never, { "config": "config"; "id": "id"; "loopType": "loopType"; "stepNumber": "stepNumber"; "condition": "condition"; "maxIterations": "maxIterations"; "testDataProfile": "testDataProfile"; "startStep": "startStep"; "endStep": "endStep"; "nestedSteps": "nestedSteps"; "expanded": "expanded"; "isNested": "isNested"; "isInsideLoop": "isInsideLoop"; }, { "toggleExpanded": "toggleExpanded"; "testDataProfileChange": "testDataProfileChange"; "startStepChange": "startStepChange"; "endStepChange": "endStepChange"; "conditionChange": "conditionChange"; "maxIterationsChange": "maxIterationsChange"; "nestedStepChange": "nestedStepChange"; "addStep": "addStep"; "deleteStep": "deleteStep"; "duplicate": "duplicate"; "delete": "delete"; "moreOptions": "moreOptions"; "edit": "edit"; }, never, never>;
96
+ }
@@ -0,0 +1,44 @@
1
+ import { EventEmitter, OnInit, ElementRef } from '@angular/core';
2
+ import { NormalStepConfig, TestCaseEventType, EventTypeConfig, StepParameter } from '../test-case-step.models';
3
+ import * as i0 from "@angular/core";
4
+ export declare class TestCaseNormalStepComponent implements OnInit {
5
+ dropdownContainer?: ElementRef;
6
+ config: NormalStepConfig;
7
+ stepNumber: number | string;
8
+ eventType: TestCaseEventType;
9
+ parameters: StepParameter[];
10
+ selected: boolean;
11
+ disabled: boolean;
12
+ isNested: boolean;
13
+ isInsideLoop: boolean;
14
+ eventTypeChange: EventEmitter<TestCaseEventType>;
15
+ parameterChange: EventEmitter<{
16
+ parameter: StepParameter;
17
+ value: string;
18
+ }>;
19
+ edit: EventEmitter<void>;
20
+ link: EventEmitter<void>;
21
+ duplicate: EventEmitter<void>;
22
+ delete: EventEmitter<void>;
23
+ moreOptions: EventEmitter<void>;
24
+ selectionChange: EventEmitter<boolean>;
25
+ eventTypeDropdownOpen: boolean;
26
+ eventTypeConfigs: EventTypeConfig[];
27
+ ngOnInit(): void;
28
+ getCurrentEventTypeConfig(): EventTypeConfig;
29
+ getActionDescription(): string;
30
+ getActionSuffix(): string;
31
+ onEventTypeSelect(eventType: TestCaseEventType): void;
32
+ onParameterChange(parameter: StepParameter, value: string): void;
33
+ onEdit(): void;
34
+ onLink(): void;
35
+ onDuplicate(): void;
36
+ onDelete(): void;
37
+ onMoreOptions(): void;
38
+ onSelectionChange(checked: boolean): void;
39
+ toggleEventTypeDropdown(): void;
40
+ closeEventTypeDropdown(): void;
41
+ onDocumentClick(event: MouseEvent): void;
42
+ static ɵfac: i0.ɵɵFactoryDeclaration<TestCaseNormalStepComponent, never>;
43
+ static ɵcmp: i0.ɵɵComponentDeclaration<TestCaseNormalStepComponent, "cqa-test-case-normal-step", never, { "config": "config"; "stepNumber": "stepNumber"; "eventType": "eventType"; "parameters": "parameters"; "selected": "selected"; "disabled": "disabled"; "isNested": "isNested"; "isInsideLoop": "isInsideLoop"; }, { "eventTypeChange": "eventTypeChange"; "parameterChange": "parameterChange"; "edit": "edit"; "link": "link"; "duplicate": "duplicate"; "delete": "delete"; "moreOptions": "moreOptions"; "selectionChange": "selectionChange"; }, never, never>;
44
+ }
@@ -0,0 +1,33 @@
1
+ import { EventEmitter, OnInit } from '@angular/core';
2
+ import { ScreenshotStepConfig } from '../test-case-step.models';
3
+ import * as i0 from "@angular/core";
4
+ export declare class TestCaseScreenshotStepComponent implements OnInit {
5
+ config: ScreenshotStepConfig;
6
+ stepNumber: number | string;
7
+ name?: string;
8
+ fullPage: boolean;
9
+ selector?: string;
10
+ description?: string;
11
+ selected: boolean;
12
+ disabled: boolean;
13
+ isNested: boolean;
14
+ isInsideLoop: boolean;
15
+ edit: EventEmitter<void>;
16
+ link: EventEmitter<void>;
17
+ duplicate: EventEmitter<void>;
18
+ delete: EventEmitter<void>;
19
+ moreOptions: EventEmitter<void>;
20
+ viewDetails: EventEmitter<void>;
21
+ selectionChange: EventEmitter<boolean>;
22
+ ngOnInit(): void;
23
+ getScreenshotDescription(): string;
24
+ onEdit(): void;
25
+ onLink(): void;
26
+ onDuplicate(): void;
27
+ onDelete(): void;
28
+ onMoreOptions(): void;
29
+ onViewDetails(): void;
30
+ onSelectionChange(checked: boolean): void;
31
+ static ɵfac: i0.ɵɵFactoryDeclaration<TestCaseScreenshotStepComponent, never>;
32
+ static ɵcmp: i0.ɵɵComponentDeclaration<TestCaseScreenshotStepComponent, "cqa-test-case-screenshot-step", never, { "config": "config"; "stepNumber": "stepNumber"; "name": "name"; "fullPage": "fullPage"; "selector": "selector"; "description": "description"; "selected": "selected"; "disabled": "disabled"; "isNested": "isNested"; "isInsideLoop": "isInsideLoop"; }, { "edit": "edit"; "link": "link"; "duplicate": "duplicate"; "delete": "delete"; "moreOptions": "moreOptions"; "viewDetails": "viewDetails"; "selectionChange": "selectionChange"; }, never, never>;
33
+ }
@@ -0,0 +1,70 @@
1
+ import { EventEmitter, OnInit, OnChanges, SimpleChanges, DoCheck, ChangeDetectorRef } from '@angular/core';
2
+ import { StepGroupConfig, TestCaseStepConfig, NormalStepConfig, LoopStepConfig, ConditionStepConfig } from '../test-case-step.models';
3
+ import * as i0 from "@angular/core";
4
+ export declare class TestCaseStepGroupComponent implements OnInit, OnChanges, DoCheck {
5
+ private cdr;
6
+ config: StepGroupConfig;
7
+ id: string;
8
+ stepNumber: number | string;
9
+ groupName: string;
10
+ description?: string;
11
+ reusable: boolean;
12
+ nestedSteps: TestCaseStepConfig[];
13
+ expanded: boolean;
14
+ isNested: boolean;
15
+ isInsideLoop: boolean;
16
+ private previousNestedStepsLength;
17
+ private previousNestedStepsReference;
18
+ constructor(cdr: ChangeDetectorRef);
19
+ toggleExpanded: EventEmitter<{
20
+ config: StepGroupConfig;
21
+ expanded: boolean;
22
+ }>;
23
+ groupNameChange: EventEmitter<string>;
24
+ descriptionChange: EventEmitter<string>;
25
+ reusableChange: EventEmitter<boolean>;
26
+ nestedStepChange: EventEmitter<{
27
+ step: TestCaseStepConfig;
28
+ index: number;
29
+ }>;
30
+ addStep: EventEmitter<void>;
31
+ deleteStep: EventEmitter<number>;
32
+ openExternal: EventEmitter<{
33
+ step: TestCaseStepConfig;
34
+ }>;
35
+ edit: EventEmitter<void>;
36
+ link: EventEmitter<void>;
37
+ duplicate: EventEmitter<void>;
38
+ delete: EventEmitter<void>;
39
+ ngOnInit(): void;
40
+ ngOnChanges(changes: SimpleChanges): void;
41
+ ngDoCheck(): void;
42
+ private updateFromConfig;
43
+ getStepsSummary(): string;
44
+ onToggleExpanded(): void;
45
+ onGroupNameChange(value: string): void;
46
+ onDescriptionChange(value: string): void;
47
+ onReusableChange(checked: boolean): void;
48
+ onNestedStepChange(step: TestCaseStepConfig, index: number): void;
49
+ onNestedToggleExpanded(event: boolean | {
50
+ config: TestCaseStepConfig;
51
+ expanded: boolean;
52
+ }, step: TestCaseStepConfig, index: number): void;
53
+ onAddStep(): void;
54
+ onDeleteStep(index: number): void;
55
+ onOpenExternal(): void;
56
+ onEdit(): void;
57
+ onLink(): void;
58
+ onDuplicate(): void;
59
+ onDelete(): void;
60
+ isNormalStep(step: TestCaseStepConfig): step is NormalStepConfig;
61
+ isLoopStep(step: TestCaseStepConfig): step is LoopStepConfig;
62
+ isConditionStep(step: TestCaseStepConfig): step is ConditionStepConfig;
63
+ isStepGroup(step: TestCaseStepConfig): step is StepGroupConfig;
64
+ onAddBranch(): void;
65
+ onDeleteBranch(branch: any): void;
66
+ onNestedConditionAddBranch(nestedStep: ConditionStepConfig, index: number): void;
67
+ onNestedConditionDeleteBranch(nestedStep: ConditionStepConfig, branch: any, index: number): void;
68
+ static ɵfac: i0.ɵɵFactoryDeclaration<TestCaseStepGroupComponent, never>;
69
+ static ɵcmp: i0.ɵɵComponentDeclaration<TestCaseStepGroupComponent, "cqa-test-case-step-group", never, { "config": "config"; "id": "id"; "stepNumber": "stepNumber"; "groupName": "groupName"; "description": "description"; "reusable": "reusable"; "nestedSteps": "nestedSteps"; "expanded": "expanded"; "isNested": "isNested"; "isInsideLoop": "isInsideLoop"; }, { "toggleExpanded": "toggleExpanded"; "groupNameChange": "groupNameChange"; "descriptionChange": "descriptionChange"; "reusableChange": "reusableChange"; "nestedStepChange": "nestedStepChange"; "addStep": "addStep"; "deleteStep": "deleteStep"; "openExternal": "openExternal"; "edit": "edit"; "link": "link"; "duplicate": "duplicate"; "delete": "delete"; }, never, never>;
70
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Step row action bar styles as a string for use in component `styles` arrays.
3
+ * Using a string avoids Angular's style compiler receiving non-string values
4
+ * (e.g. from styleUrls resolution in Storybook), which causes "input.match is not a function".
5
+ */
6
+ export declare const STEP_ROW_ACTIONS_STYLES = "\n.step-actions {\n opacity: 0;\n transition: opacity 0.15s ease;\n}\n.step-row:hover .step-actions {\n opacity: 1;\n}\n";
@@ -0,0 +1,67 @@
1
+ import { EventEmitter, ViewContainerRef, OnChanges, SimpleChanges, AfterViewInit, ChangeDetectorRef } from '@angular/core';
2
+ import { TestCaseStepComponentMap } from '../test-case-step-components.token';
3
+ import { TestCaseStepConfig, ConditionBranch } from '../test-case-step.models';
4
+ import * as i0 from "@angular/core";
5
+ export declare class TestCaseDetailsRendererComponent implements OnChanges, AfterViewInit {
6
+ private componentMap;
7
+ private cdr;
8
+ stepHost: ViewContainerRef;
9
+ step: TestCaseStepConfig;
10
+ index: number;
11
+ isNested: boolean;
12
+ isInsideLoop: boolean;
13
+ /** When rendering a step inside a condition branch, the branch context (for addStepForBranch / deleteStepWithBranch). */
14
+ branch?: ConditionBranch;
15
+ nestedStepChange: EventEmitter<{
16
+ step: TestCaseStepConfig;
17
+ index: number;
18
+ }>;
19
+ addStep: EventEmitter<void>;
20
+ deleteStep: EventEmitter<number>;
21
+ toggleExpanded: EventEmitter<boolean | {
22
+ config: TestCaseStepConfig;
23
+ expanded: boolean;
24
+ }>;
25
+ groupNameChange: EventEmitter<string>;
26
+ descriptionChange: EventEmitter<string>;
27
+ reusableChange: EventEmitter<boolean>;
28
+ openExternal: EventEmitter<{
29
+ step: TestCaseStepConfig;
30
+ }>;
31
+ edit: EventEmitter<void>;
32
+ link: EventEmitter<void>;
33
+ duplicate: EventEmitter<void>;
34
+ delete: EventEmitter<void>;
35
+ viewDetails: EventEmitter<void>;
36
+ selectionChange: EventEmitter<boolean>;
37
+ conditionChange: EventEmitter<string>;
38
+ branchStepChange: EventEmitter<{
39
+ branch: ConditionBranch;
40
+ step: TestCaseStepConfig;
41
+ stepIndex: number;
42
+ }>;
43
+ addStepForBranch: EventEmitter<{
44
+ branch: ConditionBranch;
45
+ }>;
46
+ deleteStepWithBranch: EventEmitter<{
47
+ branch: ConditionBranch;
48
+ stepIndex: number;
49
+ }>;
50
+ addBranch: EventEmitter<void>;
51
+ deleteBranch: EventEmitter<ConditionBranch>;
52
+ testDataProfileChange: EventEmitter<string>;
53
+ startStepChange: EventEmitter<number>;
54
+ endStepChange: EventEmitter<number>;
55
+ maxIterationsChange: EventEmitter<number>;
56
+ eventTypeChange: EventEmitter<any>;
57
+ parameterChange: EventEmitter<any>;
58
+ private componentRef;
59
+ constructor(componentMap: TestCaseStepComponentMap, cdr: ChangeDetectorRef);
60
+ ngAfterViewInit(): void;
61
+ ngOnChanges(changes: SimpleChanges): void;
62
+ private getComponentType;
63
+ private renderStep;
64
+ private wireOutputs;
65
+ static ɵfac: i0.ɵɵFactoryDeclaration<TestCaseDetailsRendererComponent, never>;
66
+ static ɵcmp: i0.ɵɵComponentDeclaration<TestCaseDetailsRendererComponent, "cqa-test-case-details-renderer", never, { "step": "step"; "index": "index"; "isNested": "isNested"; "isInsideLoop": "isInsideLoop"; "branch": "branch"; }, { "nestedStepChange": "nestedStepChange"; "addStep": "addStep"; "deleteStep": "deleteStep"; "toggleExpanded": "toggleExpanded"; "groupNameChange": "groupNameChange"; "descriptionChange": "descriptionChange"; "reusableChange": "reusableChange"; "openExternal": "openExternal"; "edit": "edit"; "link": "link"; "duplicate": "duplicate"; "delete": "delete"; "viewDetails": "viewDetails"; "selectionChange": "selectionChange"; "conditionChange": "conditionChange"; "branchStepChange": "branchStepChange"; "addStepForBranch": "addStepForBranch"; "deleteStepWithBranch": "deleteStepWithBranch"; "addBranch": "addBranch"; "deleteBranch": "deleteBranch"; "testDataProfileChange": "testDataProfileChange"; "startStepChange": "startStepChange"; "endStepChange": "endStepChange"; "maxIterationsChange": "maxIterationsChange"; "eventTypeChange": "eventTypeChange"; "parameterChange": "parameterChange"; }, never, never>;
67
+ }