@cqa-lib/cqa-ui 1.1.548-gamma.19 → 1.1.548-gamma.21

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 (39) hide show
  1. package/esm2020/lib/custom-input/custom-input.component.mjs +20 -4
  2. package/esm2020/lib/dialogs/name-prompt-modal.component.mjs +1 -1
  3. package/esm2020/lib/export-code-modal/export-code-modal.component.mjs +1 -1
  4. package/esm2020/lib/manage-columns-dialog/manage-columns-dialog.component.mjs +1 -1
  5. package/esm2020/lib/new-db-config-dialog/new-db-config-dialog.component.mjs +1 -1
  6. package/esm2020/lib/new-environment-dialog/new-environment-dialog.component.mjs +1 -1
  7. package/esm2020/lib/new-environment-variable-dialog/new-environment-variable-dialog.component.mjs +5 -13
  8. package/esm2020/lib/new-global-variable-dialog/new-global-variable-dialog.component.mjs +1 -1
  9. package/esm2020/lib/new-test-data-profile-dialog/new-test-data-profile-dialog.component.mjs +180 -16
  10. package/esm2020/lib/new-test-data-profile-dialog/new-test-data-profile-dialog.models.mjs +1 -1
  11. package/esm2020/lib/questionnaire-list/questionnaire-list.component.mjs +1 -1
  12. package/esm2020/lib/step-builder/advanced-variables-form/advanced-variables-form.component.mjs +1 -1
  13. package/esm2020/lib/step-builder/step-builder-ai-agent/step-builder-ai-agent.component.mjs +1 -1
  14. package/esm2020/lib/step-builder/step-builder-custom-code/step-builder-custom-code.component.mjs +1 -1
  15. package/esm2020/lib/step-builder/step-builder-database/step-builder-database.component.mjs +1 -1
  16. package/esm2020/lib/step-builder/step-builder-document/step-builder-document.component.mjs +1 -1
  17. package/esm2020/lib/step-builder/step-builder-document-generation-template-step/step-builder-document-generation-template-step.component.mjs +1 -1
  18. package/esm2020/lib/step-builder/step-builder-group/step-builder-group.component.mjs +1 -1
  19. package/esm2020/lib/step-builder/step-builder-loop/step-builder-loop.component.mjs +1 -1
  20. package/esm2020/lib/step-builder/template-variables-form/template-variables-form.component.mjs +1 -1
  21. package/esm2020/lib/templates/modular-table-template/dialogs/new-folder-dialog.component.mjs +1 -1
  22. package/esm2020/lib/test-case-details/api-edit-step/api-edit-step.component.mjs +1 -1
  23. package/esm2020/lib/test-case-details/condition-step/condition-step.component.mjs +1 -1
  24. package/esm2020/lib/test-case-details/create-step-group/create-step-group.component.mjs +1 -1
  25. package/esm2020/lib/test-case-details/data-library-panel/data-library-panel.component.mjs +3 -3
  26. package/esm2020/lib/test-case-details/element-popup/element-form/element-form.component.mjs +1 -1
  27. package/esm2020/lib/test-case-details/step-details-drawer/step-details-drawer.component.mjs +1 -1
  28. package/esm2020/lib/test-case-details/test-case-details-edit/test-case-details-edit.component.mjs +1 -1
  29. package/esm2020/lib/test-case-details/test-data-modal/test-data-modal.component.mjs +1 -1
  30. package/esm2020/lib/viewport-selector/viewport-selector.component.mjs +1 -1
  31. package/fesm2015/cqa-lib-cqa-ui.mjs +223 -54
  32. package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -1
  33. package/fesm2020/cqa-lib-cqa-ui.mjs +222 -54
  34. package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -1
  35. package/lib/custom-input/custom-input.component.d.ts +6 -1
  36. package/lib/new-test-data-profile-dialog/new-test-data-profile-dialog.component.d.ts +39 -5
  37. package/lib/new-test-data-profile-dialog/new-test-data-profile-dialog.models.d.ts +18 -0
  38. package/package.json +1 -1
  39. package/styles.css +1 -1
@@ -18,12 +18,17 @@ export declare class CustomInputComponent implements OnChanges {
18
18
  showCharCount: boolean;
19
19
  inputInlineStyle?: string;
20
20
  labelInlineStyle?: string;
21
+ showPasswordToggle: boolean;
21
22
  valueChange: EventEmitter<string>;
22
23
  blurred: EventEmitter<FocusEvent>;
23
24
  focused: EventEmitter<FocusEvent>;
24
25
  enterPressed: EventEmitter<string>;
25
26
  inputValue: string;
26
27
  isFocused: boolean;
28
+ passwordVisible: boolean;
29
+ get effectiveType(): InputType;
30
+ get isPasswordToggleVisible(): boolean;
31
+ togglePasswordVisible(event: Event): void;
27
32
  ngOnChanges(changes: SimpleChanges): void;
28
33
  get hasError(): boolean;
29
34
  get inputSizeClasses(): string;
@@ -35,6 +40,6 @@ export declare class CustomInputComponent implements OnChanges {
35
40
  get inputStyles(): string;
36
41
  get labelStyles(): string;
37
42
  static ɵfac: i0.ɵɵFactoryDeclaration<CustomInputComponent, never>;
38
- static ɵcmp: i0.ɵɵComponentDeclaration<CustomInputComponent, "cqa-custom-input", never, { "inputId": "inputId"; "label": "label"; "type": "type"; "placeholder": "placeholder"; "value": "value"; "disabled": "disabled"; "errors": "errors"; "required": "required"; "ariaLabel": "ariaLabel"; "size": "size"; "fullWidth": "fullWidth"; "maxLength": "maxLength"; "showCharCount": "showCharCount"; "inputInlineStyle": "inputInlineStyle"; "labelInlineStyle": "labelInlineStyle"; }, { "valueChange": "valueChange"; "blurred": "blurred"; "focused": "focused"; "enterPressed": "enterPressed"; }, never, never>;
43
+ static ɵcmp: i0.ɵɵComponentDeclaration<CustomInputComponent, "cqa-custom-input", never, { "inputId": "inputId"; "label": "label"; "type": "type"; "placeholder": "placeholder"; "value": "value"; "disabled": "disabled"; "errors": "errors"; "required": "required"; "ariaLabel": "ariaLabel"; "size": "size"; "fullWidth": "fullWidth"; "maxLength": "maxLength"; "showCharCount": "showCharCount"; "inputInlineStyle": "inputInlineStyle"; "labelInlineStyle": "labelInlineStyle"; "showPasswordToggle": "showPasswordToggle"; }, { "valueChange": "valueChange"; "blurred": "blurred"; "focused": "focused"; "enterPressed": "enterPressed"; }, never, never>;
39
44
  }
40
45
  export {};
@@ -1,9 +1,9 @@
1
- import { ChangeDetectorRef, OnInit } from '@angular/core';
1
+ import { ChangeDetectorRef, OnDestroy, OnInit } from '@angular/core';
2
2
  import { FormGroup } from '@angular/forms';
3
3
  import { DynamicSelectFieldConfig } from '../dynamic-select/dynamic-select-field.component';
4
- import { TdpDialogPermission, TdpDialogValue, TdpEnvironmentOption } from './new-test-data-profile-dialog.models';
4
+ import { TdpDialogPermission, TdpDialogValue, TdpEnvSearchFn, TdpEnvironmentOption } from './new-test-data-profile-dialog.models';
5
5
  import * as i0 from "@angular/core";
6
- export declare class NewTestDataProfileDialogComponent implements OnInit {
6
+ export declare class NewTestDataProfileDialogComponent implements OnInit, OnDestroy {
7
7
  private readonly cdr;
8
8
  private static readonly INTEGER_REGEX;
9
9
  private static readonly MAX_DIM;
@@ -11,6 +11,10 @@ export declare class NewTestDataProfileDialogComponent implements OnInit {
11
11
  initialValue?: Partial<TdpDialogValue>;
12
12
  existingNames: string[];
13
13
  environments: TdpEnvironmentOption[];
14
+ /** When provided, the env dropdown uses paginated server-search instead of
15
+ * the static `environments` list. */
16
+ searchFn?: TdpEnvSearchFn;
17
+ pageSize: number;
14
18
  name: string;
15
19
  description: string;
16
20
  readWriteMode: TdpDialogPermission;
@@ -21,8 +25,21 @@ export declare class NewTestDataProfileDialogComponent implements OnInit {
21
25
  nameError: string | null;
22
26
  matrixError: string | null;
23
27
  envsError: string | null;
28
+ private currentEnvOptions;
29
+ private totalEnvElements;
30
+ private currentSearchTerm;
31
+ private currentPageIndex;
32
+ private isLoadingEnvs;
33
+ /** Cache of every env the user has selected at any point during this dialog
34
+ * session — keyed by id. Merged into the visible options on every page
35
+ * refresh so the multi-select trigger always shows the right names even
36
+ * after the user types a search that filters the selection out. */
37
+ private readonly selectedEnvCache;
38
+ private readonly searchInput$;
39
+ private readonly destroy$;
24
40
  constructor(cdr: ChangeDetectorRef);
25
41
  ngOnInit(): void;
42
+ ngOnDestroy(): void;
26
43
  get title(): string;
27
44
  get subtitle(): string;
28
45
  get primaryButtonLabel(): string;
@@ -35,8 +52,25 @@ export declare class NewTestDataProfileDialogComponent implements OnInit {
35
52
  onColumnsChange(next: string): void;
36
53
  getValue(): TdpDialogValue | null;
37
54
  private parseMatrix;
38
- private buildEnvConfig;
55
+ private buildStaticEnvConfig;
56
+ private buildServerSearchEnvConfig;
57
+ private onEnvLoadMore;
58
+ private runFetch;
59
+ private fetchPage;
60
+ private applyPage;
61
+ /** Merge cached selected options with the visible page so the multi-select
62
+ * trigger always shows the right names — even when the user types a query
63
+ * that filters previously selected envs out of view. Selected ones come
64
+ * first to keep the state visible. */
65
+ private mergeSelectedIntoOptions;
66
+ /** Update the selected-env cache from the FormControl value so the trigger
67
+ * display + future merges reflect the latest selection. We cache the full
68
+ * SelectOption (id + name) by looking up either the visible page or the
69
+ * prior cache. Selections are accumulated, never removed — even unselect →
70
+ * reselect works without a fresh fetch. */
71
+ private rememberSelectedEnvs;
72
+ private toSelectOption;
39
73
  private isDuplicateName;
40
74
  static ɵfac: i0.ɵɵFactoryDeclaration<NewTestDataProfileDialogComponent, never>;
41
- static ɵcmp: i0.ɵɵComponentDeclaration<NewTestDataProfileDialogComponent, "cqa-new-test-data-profile-dialog", never, { "mode": "mode"; "initialValue": "initialValue"; "existingNames": "existingNames"; "environments": "environments"; }, {}, never, never>;
75
+ static ɵcmp: i0.ɵɵComponentDeclaration<NewTestDataProfileDialogComponent, "cqa-new-test-data-profile-dialog", never, { "mode": "mode"; "initialValue": "initialValue"; "existingNames": "existingNames"; "environments": "environments"; "searchFn": "searchFn"; "pageSize": "pageSize"; }, {}, never, never>;
42
76
  }
@@ -1,3 +1,4 @@
1
+ import { Observable } from 'rxjs';
1
2
  export declare type TdpDialogPermission = 'RO' | 'RW';
2
3
  export interface TdpDialogValue {
3
4
  name: string;
@@ -12,9 +13,26 @@ export interface TdpEnvironmentOption {
12
13
  name: string;
13
14
  color?: string;
14
15
  }
16
+ export interface TdpEnvSearchPage {
17
+ items: TdpEnvironmentOption[];
18
+ total: number;
19
+ }
20
+ /** Paginated, debounced server-search callback for the Assign-to-environments
21
+ * dropdown. The dialog calls `('', 0, pageSize)` on init and each panel open,
22
+ * again with a fresh term whenever the user types (debounced 300ms), and again
23
+ * on scroll-near-bottom for pagination. Caller wraps the workspace env list
24
+ * service. */
25
+ export declare type TdpEnvSearchFn = (term: string, page: number, size: number) => Observable<TdpEnvSearchPage>;
15
26
  export interface NewTestDataProfileDialogInputs {
16
27
  mode?: 'create' | 'edit';
17
28
  initialValue?: Partial<TdpDialogValue>;
18
29
  existingNames?: string[];
30
+ /** Static env list. Kept for backward compatibility — prefer `searchFn`
31
+ * for workspaces with more than a couple dozen environments. */
19
32
  environments?: TdpEnvironmentOption[];
33
+ /** Server-search source. When provided, the env dropdown switches to
34
+ * paginated server-side search and `environments` is ignored. */
35
+ searchFn?: TdpEnvSearchFn;
36
+ /** Page size for `searchFn`. Defaults to 50. */
37
+ pageSize?: number;
20
38
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cqa-lib/cqa-ui",
3
- "version": "1.1.548-gamma.19",
3
+ "version": "1.1.548-gamma.21",
4
4
  "description": "UI Kit library for Angular 13.4",
5
5
  "keywords": [
6
6
  "angular",