ng-configcat-publicapi-ui 5.4.2 → 5.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,17 +1,18 @@
1
1
  {
2
2
  "name": "ng-configcat-publicapi-ui",
3
- "version": "5.4.2",
3
+ "version": "5.6.0",
4
+ "license": "MIT",
4
5
  "peerDependencies": {
5
- "@angular/cdk": "^21.2.14",
6
- "@angular/common": "^21.2.17",
7
- "@angular/core": "^21.2.17",
8
- "@angular/forms": "^21.2.17",
9
- "@angular/material": "^21.2.14",
10
- "@angular/router": "^21.2.17",
11
- "@configcat/sdk": "^1.0.2",
12
- "ng-configcat-publicapi": "^6.0.0",
6
+ "@angular/cdk": "^22.1.1",
7
+ "@angular/common": "^22.1.1",
8
+ "@angular/core": "^22.1.1",
9
+ "@angular/forms": "^22.1.1",
10
+ "@angular/material": "^22.1.1",
11
+ "@angular/router": "^22.1.1",
12
+ "@configcat/sdk": "^1.1.0",
13
+ "ng-configcat-publicapi": "^6.2.1",
13
14
  "papaparse": "^5.5.3",
14
- "ace-builds": "^1.37.0"
15
+ "ace-builds": "^1.44.0"
15
16
  },
16
17
  "dependencies": {
17
18
  "tslib": "^2.8.1"
@@ -1,4 +1,4 @@
1
- @use '@angular/material' as mat;
1
+ @use "@angular/material" as mat;
2
2
 
3
3
  html > body {
4
4
  .mat-mdc-icon-button.action-icon-button {
@@ -69,7 +69,8 @@ html > body {
69
69
  }
70
70
  }
71
71
 
72
- .mat-datepicker-toggle, .mat-timepicker-toggle {
72
+ .mat-datepicker-toggle,
73
+ .mat-timepicker-toggle {
73
74
  @include mat.icon-button-density(-5);
74
75
 
75
76
  .mat-mdc-icon-button {
@@ -80,4 +81,22 @@ html > body {
80
81
  .disabled-btn-container {
81
82
  display: inline-block;
82
83
  }
84
+
85
+ .mat-mdc-unelevated-button.mat-success:not(:disabled) {
86
+ color: white;
87
+ background-color: var(--green-button-background-color);
88
+
89
+ &:hover {
90
+ background-color: var(--green-button-background-hover-color);
91
+ }
92
+ }
93
+
94
+ .mat-mdc-unelevated-button.mat-applied:not(:disabled) {
95
+ color: white;
96
+ background-color: var(--change-request-status-applied-color);
97
+
98
+ &:hover {
99
+ background-color: var(--change-request-status-applied-hover-color);
100
+ }
101
+ }
83
102
  }
@@ -66,6 +66,8 @@
66
66
  --diabled-button-color: #99999981;
67
67
  --primary-button-state-layer-color: black;
68
68
  --warn-button-state-layer-color: white;
69
+ --green-button-background-color: #47a34a;
70
+ --green-button-background-hover-color: #3b863e;
69
71
 
70
72
  // ==== CONTROLS ====
71
73
  --input-outline-focused-color: #{color.adjust(theme.$primary-color, $lightness: 5%)};
@@ -70,6 +70,9 @@
70
70
  --flag-v1-input-border: #e5e5e5;
71
71
  --flag-v1-colored-berry-opacity: 0.5;
72
72
 
73
+ --save-separator-color: #ffffff56;
74
+ --save-separator-disabled-color: #9c9c9c41;
75
+
73
76
  [data-theme="dark"] {
74
77
  --flag-tutorial-background: #3180ee23;
75
78
 
@@ -1,13 +1,14 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { InjectionToken, Provider, OnInit, OnDestroy } from '@angular/core';
2
+ import { InjectionToken, Provider, WritableSignal, ElementRef, OnInit, OnDestroy } from '@angular/core';
3
3
  import * as ng_configcat_publicapi from 'ng-configcat-publicapi';
4
- import { MeService, ProductsService, ConfigsService, EnvironmentsService, FeatureFlagsSettingsService, FeatureFlagSettingValuesV2Service, FeatureFlagSettingValuesService, IntegrationLinksService, SegmentsService, OrganizationsService, UserComparator, SegmentComparator, PrerequisiteComparator, SettingType, PredefinedVariationModel, SettingFormulaModel, ComparisonValueListModel, FeatureFlagLimitations, ComparisonValueModel, ConditionModel, ValueModel, PercentageOptionModel, PrerequisiteFlagConditionModel, SegmentConditionModel, TargetingRuleModel, UserConditionModel, UpdateEvaluationFormulaModel, ConfigModel, EnvironmentModel, SettingValueModel, UpdateSettingValueModel, SettingDataModel, SegmentListModel, SettingModel, EvaluationVersion } from 'ng-configcat-publicapi';
4
+ import { MeService, ProductsService, ConfigsService, EnvironmentsService, FeatureFlagsSettingsService, FeatureFlagSettingValuesV2Service, FeatureFlagSettingValuesService, IntegrationLinksService, SegmentsService, OrganizationsService, ChangeRequestsApprovalFlowScheduledChangesBetaService, UserComparator, SegmentComparator, PrerequisiteComparator, SettingType, PredefinedVariationModel, SettingFormulaModel, ComparisonValueListModel, FeatureFlagLimitations, ComparisonValueModel, ConditionModel, ValueModel, PercentageOptionModel, PrerequisiteFlagConditionModel, SegmentConditionModel, TargetingRuleModel, UserConditionModel, UpdateEvaluationFormulaModel, ConfigModel, EnvironmentModel, SettingValueModel, UpdateSettingValueModel, SettingDataModel, SegmentListModel, SettingModel, EvaluationVersion } from 'ng-configcat-publicapi';
5
5
  import { HttpErrorResponse } from '@angular/common/http';
6
6
  import * as _angular_forms from '@angular/forms';
7
7
  import { FormGroup, FormControl, FormArray, ValidatorFn, AbstractControl } from '@angular/forms';
8
8
  import { Observable, Subscription } from 'rxjs';
9
9
  import { MatTooltip } from '@angular/material/tooltip';
10
10
  import { MatDialogRef } from '@angular/material/dialog';
11
+ import { MatSnackBarRef } from '@angular/material/snack-bar';
11
12
  import * as _angular_material_paginator from '@angular/material/paginator';
12
13
  import { MatTableDataSource } from '@angular/material/table';
13
14
 
@@ -46,6 +47,7 @@ declare class PublicApiService {
46
47
  createIntegrationLinksService(basicAuthUsername?: string | null, basicAuthPassword?: string | null, basePath?: string | null): IntegrationLinksService;
47
48
  createSegmentsService(basicAuthUsername?: string | null, basicAuthPassword?: string | null, basePath?: string | null): SegmentsService;
48
49
  createOrganizationService(basicAuthUsername?: string | null, basicAuthPassword?: string | null, basePath?: string | null): OrganizationsService;
50
+ createChangeRequestsApprovalFlowScheduledChangesBetaService(basicAuthUsername?: string | null, basicAuthPassword?: string | null, basePath?: string | null): ChangeRequestsApprovalFlowScheduledChangesBetaService;
49
51
  getDashboardBasePath(): string;
50
52
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PublicApiService, never>;
51
53
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<PublicApiService>;
@@ -183,24 +185,39 @@ interface IDependeeSetting {
183
185
  key: string;
184
186
  name: string;
185
187
  }
188
+ interface IPrerequisiteChanged {
189
+ settingId: number;
190
+ prerequisiteIds: number[];
191
+ }
186
192
 
187
193
  interface IFlagState {
188
- addButtonRenderState: IAddButtonsRenderState;
189
- settingValue: SettingFormulaModel;
190
- dependeeSettings: IDependeeSetting[];
191
- prerequisiteSettings: IPrerequisiteSetting[];
192
- panelExpanded: boolean;
193
- readOnly: boolean;
194
+ readonly addButtonRenderState: WritableSignal<IAddButtonsRenderState>;
195
+ readonly settingValue: SettingFormulaModel;
196
+ readonly dependeeSettings: WritableSignal<IDependeeSetting[]>;
197
+ readonly prerequisiteSettings: WritableSignal<IPrerequisiteSetting[]>;
198
+ readonly panelExpanded: WritableSignal<boolean>;
199
+ readonly readOnly: boolean;
200
+ readonly hasActiveChangeRequest: WritableSignal<boolean>;
194
201
  }
195
202
  interface IAddButtonsRenderState {
196
- renderTopAddButtons: boolean;
197
- hasPercentageOnlyRule: boolean;
198
- addRuleButtonTracker: IAddRuleButtonTracker[];
203
+ readonly renderTopAddButtons: boolean;
204
+ readonly hasPercentageOnlyRule: boolean;
205
+ readonly addRuleButtonTracker: IAddRuleButtonTracker[];
199
206
  }
200
207
  interface IAddRuleButtonTracker {
201
- showAddRuleButtons: boolean;
202
- showOrChip: boolean;
203
- renderSeparationArea: boolean;
208
+ readonly showAddRuleButtons: boolean;
209
+ readonly showOrChip: boolean;
210
+ readonly renderSeparationArea: boolean;
211
+ }
212
+
213
+ declare class MessagingService {
214
+ private readonly snackBar;
215
+ showErrorSnack(message?: string, durationMs?: number): void;
216
+ showSuccessSnack(message?: string, durationMs?: number): void;
217
+ showWarningSnack(message?: string, durationMs?: number): void;
218
+ dismissCurrentSnack(): void;
219
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MessagingService, never>;
220
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<MessagingService>;
204
221
  }
205
222
 
206
223
  interface ComparisonValueListParseResult {
@@ -320,6 +337,7 @@ declare class BaseComponent {
320
337
  protected createSettingValuesV2Service(): ng_configcat_publicapi.FeatureFlagSettingValuesV2Service;
321
338
  protected createSegmentsService(): ng_configcat_publicapi.SegmentsService;
322
339
  protected createOrganizationService(): ng_configcat_publicapi.OrganizationsService;
340
+ protected createChangeRequestsService(): ng_configcat_publicapi.ChangeRequestsApprovalFlowScheduledChangesBetaService;
323
341
  protected getDashboardBasePath(): string;
324
342
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BaseComponent, never>;
325
343
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<BaseComponent, "app-base", never, { "basePath": { "alias": "basePath"; "required": false; "isSignal": true; }; "basicAuthUsername": { "alias": "basicAuthUsername"; "required": false; "isSignal": true; }; "basicAuthPassword": { "alias": "basicAuthPassword"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
@@ -509,6 +527,97 @@ declare class DeleteSettingDialogComponent {
509
527
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<DeleteSettingDialogComponent, "app-delete-setting-dialog", never, {}, {}, never, never, true, never>;
510
528
  }
511
529
 
530
+ declare enum NotificationSnackColor {
531
+ Green = 0,
532
+ Yellow = 1,
533
+ Red = 2,
534
+ Blue = 3
535
+ }
536
+ interface NotificationSnackData {
537
+ color: NotificationSnackColor;
538
+ message: string;
539
+ }
540
+ declare class NotificationSnackComponent {
541
+ snackBarRef: MatSnackBarRef<NotificationSnackComponent>;
542
+ data: NotificationSnackData;
543
+ NotificationSnackColor: typeof NotificationSnackColor;
544
+ readonly progressBar: _angular_core.Signal<ElementRef<HTMLElement>>;
545
+ private readonly destroyRef;
546
+ constructor();
547
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NotificationSnackComponent, never>;
548
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NotificationSnackComponent, "app-notification-snack", never, {}, {}, never, never, true, never>;
549
+ }
550
+
551
+ interface ICustomizeFeatureFlag {
552
+ menuDeleteSettingText: string;
553
+ showExpandedSection: boolean;
554
+ showTargetingRuleSegmentOptionSection: boolean;
555
+ showTargetingRulePrerequisiteOptionSection: boolean;
556
+ showMenuOpenInDashboardSection: boolean;
557
+ showMenuCopyDirectLinkSection: boolean;
558
+ showMenuDeleteSettingSection: boolean;
559
+ }
560
+ declare const DEFAULT_CUSTOMIZE_FEATURE_FLAG: ICustomizeFeatureFlag;
561
+ interface IGlance {
562
+ ruleText: string;
563
+ percentageText: string;
564
+ class: string;
565
+ }
566
+ declare class FeatureFlagComponent {
567
+ private readonly dialog;
568
+ private readonly messagingService;
569
+ private readonly router;
570
+ private readonly clipboard;
571
+ readonly formGroup: _angular_core.InputSignal<FormGroup<UpdateSettingValueForm>>;
572
+ readonly flagState: _angular_core.InputSignal<IFlagState>;
573
+ readonly segments: _angular_core.InputSignal<SegmentListModel[]>;
574
+ readonly featureFlagLimitations: _angular_core.InputSignal<FeatureFlagLimitations>;
575
+ readonly hasOtherEnvironment: _angular_core.InputSignal<boolean>;
576
+ readonly environmentName: _angular_core.InputSignal<string>;
577
+ readonly showEnvironmentName: _angular_core.InputSignal<boolean>;
578
+ readonly canDeleteSetting: _angular_core.InputSignal<boolean>;
579
+ readonly predefinedVariationsEnabled: _angular_core.InputSignal<boolean>;
580
+ readonly dashboardBasePath: _angular_core.InputSignal<string>;
581
+ readonly comparisonAttributes: _angular_core.InputSignal<string[]>;
582
+ readonly customize: _angular_core.InputSignal<ICustomizeFeatureFlag>;
583
+ readonly addSegmentConditionRequestedWithoutSegments: _angular_core.OutputEmitterRef<void>;
584
+ readonly expandedChanged: _angular_core.OutputEmitterRef<boolean>;
585
+ readonly deleteSettingRequested: _angular_core.OutputEmitterRef<{
586
+ setting: SettingDataModel;
587
+ }>;
588
+ readonly subscriptionLimitReached: _angular_core.OutputEmitterRef<void>;
589
+ readonly prerequisiteConditionChanged: _angular_core.OutputEmitterRef<IPrerequisiteChanged>;
590
+ readonly recalcAddButtons: _angular_core.OutputEmitterRef<void>;
591
+ readonly viewVariationsRequested: _angular_core.OutputEmitterRef<{
592
+ settingId: number;
593
+ settingName: string;
594
+ }>;
595
+ SettingType: {
596
+ readonly Boolean: "boolean";
597
+ readonly String: "string";
598
+ readonly Int: "int";
599
+ readonly Double: "double";
600
+ };
601
+ setExpanded(expanded: boolean): void;
602
+ deleteSetting(): void;
603
+ subscriptionLimitReachedCalled(): void;
604
+ changePercentageEvaluationAttribute(): void;
605
+ getGlance(): IGlance | undefined;
606
+ getValueText(settingType: SettingType, value: {
607
+ boolValue: boolean | null;
608
+ stringValue: string | null;
609
+ intValue: number | null;
610
+ doubleValue: number | null;
611
+ }): string;
612
+ getRuleText(): string;
613
+ copyDirectLink(): void;
614
+ getDashboardUrl(): string;
615
+ getChangeRequestsUrl(): string;
616
+ openDependeesDialog(): void;
617
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<FeatureFlagComponent, never>;
618
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<FeatureFlagComponent, "app-feature-flag", never, { "formGroup": { "alias": "formGroup"; "required": true; "isSignal": true; }; "flagState": { "alias": "flagState"; "required": true; "isSignal": true; }; "segments": { "alias": "segments"; "required": true; "isSignal": true; }; "featureFlagLimitations": { "alias": "featureFlagLimitations"; "required": true; "isSignal": true; }; "hasOtherEnvironment": { "alias": "hasOtherEnvironment"; "required": true; "isSignal": true; }; "environmentName": { "alias": "environmentName"; "required": false; "isSignal": true; }; "showEnvironmentName": { "alias": "showEnvironmentName"; "required": false; "isSignal": true; }; "canDeleteSetting": { "alias": "canDeleteSetting"; "required": false; "isSignal": true; }; "predefinedVariationsEnabled": { "alias": "predefinedVariationsEnabled"; "required": true; "isSignal": true; }; "dashboardBasePath": { "alias": "dashboardBasePath"; "required": true; "isSignal": true; }; "comparisonAttributes": { "alias": "comparisonAttributes"; "required": true; "isSignal": true; }; "customize": { "alias": "customize"; "required": false; "isSignal": true; }; }, { "addSegmentConditionRequestedWithoutSegments": "addSegmentConditionRequestedWithoutSegments"; "expandedChanged": "expandedChanged"; "deleteSettingRequested": "deleteSettingRequested"; "subscriptionLimitReached": "subscriptionLimitReached"; "prerequisiteConditionChanged": "prerequisiteConditionChanged"; "recalcAddButtons": "recalcAddButtons"; "viewVariationsRequested": "viewVariationsRequested"; }, never, never, true, never>;
619
+ }
620
+
512
621
  declare class FeatureFlagItemComponent extends BaseComponent implements OnInit, OnDestroy {
513
622
  private readonly dialog;
514
623
  private readonly messagingService;
@@ -517,7 +626,7 @@ declare class FeatureFlagItemComponent extends BaseComponent implements OnInit,
517
626
  readonly configId: _angular_core.InputSignal<string>;
518
627
  readonly settingId: _angular_core.InputSignal<number>;
519
628
  readonly canDeleteSetting: _angular_core.InputSignal<boolean>;
520
- readonly deleteSettingText: _angular_core.InputSignal<string>;
629
+ readonly customize: _angular_core.InputSignal<ICustomizeFeatureFlag>;
521
630
  readonly showEnvironmentName: _angular_core.InputSignal<boolean>;
522
631
  readonly deleteSettingRequested: _angular_core.OutputEmitterRef<DeleteSettingModel>;
523
632
  readonly loadSucceeded: _angular_core.OutputEmitterRef<void>;
@@ -526,31 +635,34 @@ declare class FeatureFlagItemComponent extends BaseComponent implements OnInit,
526
635
  readonly componentError: _angular_core.OutputEmitterRef<Error>;
527
636
  readonly expandedStateChanged: _angular_core.OutputEmitterRef<void>;
528
637
  readonly formValuesChanged: _angular_core.OutputEmitterRef<void>;
638
+ readonly dashboardBasePath: string;
529
639
  segments: SegmentListModel[];
530
- dashboardBasePath: string;
531
640
  loading: boolean;
532
641
  submitting: boolean;
533
642
  formGroup: FormGroup<UpdateSettingValueForm>;
534
643
  formValueChangesSubscription: Subscription | null;
535
644
  settings: SettingModel[];
536
645
  flagState: IFlagState;
537
- settingFormula: SettingFormulaModel;
646
+ readonly settingFormula: _angular_core.WritableSignal<SettingFormulaModel | null>;
538
647
  prerequisiteSettings: IPrerequisiteSetting[];
539
648
  showFeedBackMessage: boolean;
540
649
  hasSettingValues: boolean;
541
650
  hasOtherEnvironment: boolean;
542
- constructor();
543
651
  ngOnInit(): void;
544
652
  ngOnDestroy(): void;
545
653
  reloadSettingValues(): void;
546
654
  handleFetchedSettingValues(model: SettingFormulaModel): void;
655
+ readonly comparisonAttributes: _angular_core.Signal<string[]>;
547
656
  unsubscribeFormValueChangesSubscription(): void;
548
657
  private createFormGroupFromState;
549
658
  getAvailablePrerequisiteSettings(settingId: number): IPrerequisiteSetting[];
550
659
  revert(): void;
551
660
  revertDirtyValuesFromState(): void;
552
- submit(): void;
553
- updateSettingValues(updateModel: UpdateEvaluationFormulaModel, reason?: string): void;
661
+ openSaveAndPublishDialog(reasonRequired: boolean, bypassApproval: boolean): void;
662
+ submit(bypassApproval?: boolean): void;
663
+ createChangeRequest(isSchedule?: boolean): void;
664
+ private proceedWithCreateChangeRequest;
665
+ updateSettingValues(updateModel: UpdateEvaluationFormulaModel, bypassApproval: boolean, reason?: string, latestVersionId?: string): void;
554
666
  onDeleteSettingRequested(setting: {
555
667
  setting: SettingDataModel;
556
668
  }): void;
@@ -558,6 +670,7 @@ declare class FeatureFlagItemComponent extends BaseComponent implements OnInit,
558
670
  subscriptionLimitReachedCalled(): void;
559
671
  addSegmentConditionRequestedWithoutSegments(): void;
560
672
  trackByIndex(index: number): number;
673
+ recalcHasActiveChangeRequest(): void;
561
674
  recalcPrerequisites(): void;
562
675
  recalcAddButtons(): void;
563
676
  hasOnlyPercentageRule(group: FormGroup<UpdateSettingValueForm>): boolean;
@@ -568,13 +681,14 @@ declare class FeatureFlagItemComponent extends BaseComponent implements OnInit,
568
681
  settingId: number;
569
682
  settingName: string;
570
683
  }): void;
571
- openConcurentDeleteDialog(): void;
684
+ openConcurrentDialog(updateModel: UpdateEvaluationFormulaModel, bypassApproval: boolean, reason?: string): void;
685
+ openConcurrentDeleteDialog(): void;
572
686
  openVariationsDialog(event: {
573
687
  settingId: number;
574
688
  settingName: string;
575
689
  }): void;
576
690
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FeatureFlagItemComponent, never>;
577
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<FeatureFlagItemComponent, "app-feature-flag-item", never, { "productId": { "alias": "productId"; "required": true; "isSignal": true; }; "environmentId": { "alias": "environmentId"; "required": true; "isSignal": true; }; "configId": { "alias": "configId"; "required": true; "isSignal": true; }; "settingId": { "alias": "settingId"; "required": true; "isSignal": true; }; "canDeleteSetting": { "alias": "canDeleteSetting"; "required": false; "isSignal": true; }; "deleteSettingText": { "alias": "deleteSettingText"; "required": false; "isSignal": true; }; "showEnvironmentName": { "alias": "showEnvironmentName"; "required": false; "isSignal": true; }; }, { "deleteSettingRequested": "deleteSettingRequested"; "loadSucceeded": "loadSucceeded"; "loadFailed": "loadFailed"; "saveSucceeded": "saveSucceeded"; "componentError": "componentError"; "expandedStateChanged": "expandedStateChanged"; "formValuesChanged": "formValuesChanged"; }, never, never, true, never>;
691
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<FeatureFlagItemComponent, "app-feature-flag-item", never, { "productId": { "alias": "productId"; "required": true; "isSignal": true; }; "environmentId": { "alias": "environmentId"; "required": true; "isSignal": true; }; "configId": { "alias": "configId"; "required": true; "isSignal": true; }; "settingId": { "alias": "settingId"; "required": true; "isSignal": true; }; "canDeleteSetting": { "alias": "canDeleteSetting"; "required": false; "isSignal": true; }; "customize": { "alias": "customize"; "required": false; "isSignal": true; }; "showEnvironmentName": { "alias": "showEnvironmentName"; "required": false; "isSignal": true; }; }, { "deleteSettingRequested": "deleteSettingRequested"; "loadSucceeded": "loadSucceeded"; "loadFailed": "loadFailed"; "saveSucceeded": "saveSucceeded"; "componentError": "componentError"; "expandedStateChanged": "expandedStateChanged"; "formValuesChanged": "formValuesChanged"; }, never, never, true, never>;
578
692
  }
579
693
 
580
694
  interface AuthorizationParameters {
@@ -582,11 +696,15 @@ interface AuthorizationParameters {
582
696
  basicAuthPassword: string;
583
697
  }
584
698
 
699
+ interface ICustomizeLinkFeatureFlag {
700
+ hideCancelButton: boolean;
701
+ addButtonLabel: string;
702
+ cancelButtonLabel: string;
703
+ }
704
+ declare const DEFAULT_CUSTOMIZE_LINK_FEATURE_FLAG: ICustomizeLinkFeatureFlag;
585
705
  declare class LinkFeatureFlagComponent implements OnInit, OnDestroy {
586
706
  readonly authorizationParameters: _angular_core.InputSignal<AuthorizationParameters | null | undefined>;
587
- readonly hideCancelButton: _angular_core.InputSignal<boolean>;
588
- readonly addButtonLabel: _angular_core.InputSignal<unknown>;
589
- readonly cancelButtonLabel: _angular_core.InputSignal<unknown>;
707
+ readonly customize: _angular_core.InputSignal<ICustomizeLinkFeatureFlag>;
590
708
  readonly linkInitiated: _angular_core.OutputEmitterRef<LinkFeatureFlagParameters>;
591
709
  readonly resizeRequested: _angular_core.OutputEmitterRef<void>;
592
710
  readonly cancelInitiated: _angular_core.OutputEmitterRef<void>;
@@ -609,7 +727,7 @@ declare class LinkFeatureFlagComponent implements OnInit, OnDestroy {
609
727
  selectDropdownPanelChanged(useSelector: boolean): void;
610
728
  dropdownComponentFailed(error: Error): void;
611
729
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<LinkFeatureFlagComponent, never>;
612
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<LinkFeatureFlagComponent, "app-link-feature-flag", never, { "authorizationParameters": { "alias": "authorizationParameters"; "required": false; "isSignal": true; }; "hideCancelButton": { "alias": "hideCancelButton"; "required": false; "isSignal": true; }; "addButtonLabel": { "alias": "addButtonLabel"; "required": false; "isSignal": true; }; "cancelButtonLabel": { "alias": "cancelButtonLabel"; "required": false; "isSignal": true; }; }, { "linkInitiated": "linkInitiated"; "resizeRequested": "resizeRequested"; "cancelInitiated": "cancelInitiated"; "selectDropdownPanelChangedReqested": "selectDropdownPanelChangedReqested"; "componentError": "componentError"; }, never, never, true, never>;
730
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<LinkFeatureFlagComponent, "app-link-feature-flag", never, { "authorizationParameters": { "alias": "authorizationParameters"; "required": false; "isSignal": true; }; "customize": { "alias": "customize"; "required": false; "isSignal": true; }; }, { "linkInitiated": "linkInitiated"; "resizeRequested": "resizeRequested"; "cancelInitiated": "cancelInitiated"; "selectDropdownPanelChangedReqested": "selectDropdownPanelChangedReqested"; "componentError": "componentError"; }, never, never, true, never>;
613
731
  }
614
732
 
615
733
  type FeatureFlagValueType = boolean | string | number;
@@ -656,6 +774,19 @@ interface CreateConfigFormGroup {
656
774
  evaluationVersion: FormControl<EvaluationVersion>;
657
775
  }
658
776
 
777
+ interface ICustomizeCreateFeatureFlag {
778
+ hideCancelButton: boolean;
779
+ createButtonLabel: string;
780
+ cancelButtonLabel: string;
781
+ targetSectionHeader: string;
782
+ targetSectionDescription?: string;
783
+ flagSectionHeader: string;
784
+ flagSectionDescription?: string;
785
+ linkSectionHeader: string;
786
+ linkSectionDescription?: string;
787
+ hideLinkSection: boolean;
788
+ }
789
+ declare const DEFAULT_CUSTOMIZE_CREATE_FEATURE_FLAG: ICustomizeCreateFeatureFlag;
659
790
  interface PresetProductAndConfig {
660
791
  productId: string;
661
792
  configId: string;
@@ -666,16 +797,7 @@ declare class CreateFeatureFlagComponent extends BaseComponent implements OnInit
666
797
  private readonly formBuilder;
667
798
  private readonly destroyRef;
668
799
  private readonly dialog;
669
- readonly hideCancelButton: _angular_core.InputSignal<boolean>;
670
- readonly createButtonLabel: _angular_core.InputSignal<string | undefined>;
671
- readonly cancelButtonLabel: _angular_core.InputSignal<string | undefined>;
672
- readonly targetSectionHeader: _angular_core.InputSignal<string | undefined>;
673
- readonly targetSectionDescription: _angular_core.InputSignal<string | undefined>;
674
- readonly flagSectionHeader: _angular_core.InputSignal<string | undefined>;
675
- readonly flagSectionDescription: _angular_core.InputSignal<string | undefined>;
676
- readonly linkSectionHeader: _angular_core.InputSignal<string | undefined>;
677
- readonly linkSectionDescription: _angular_core.InputSignal<string | undefined>;
678
- readonly hideLinkSection: _angular_core.InputSignal<boolean>;
800
+ readonly customize: _angular_core.InputSignal<ICustomizeCreateFeatureFlag>;
679
801
  readonly presetProductAndConfig: _angular_core.InputSignal<PresetProductAndConfig | undefined>;
680
802
  readonly createInitiated: _angular_core.OutputEmitterRef<LinkFeatureFlagParameters>;
681
803
  readonly resizeRequested: _angular_core.OutputEmitterRef<void>;
@@ -744,22 +866,26 @@ declare class CreateFeatureFlagComponent extends BaseComponent implements OnInit
744
866
  getColorIndex(row: FormGroup<PredefinedVariationFormGroup>, index: number): FeatureFlagValueType;
745
867
  dropdownComponentFailed(error: Error): void;
746
868
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CreateFeatureFlagComponent, never>;
747
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<CreateFeatureFlagComponent, "app-create-feature-flag", never, { "hideCancelButton": { "alias": "hideCancelButton"; "required": false; "isSignal": true; }; "createButtonLabel": { "alias": "createButtonLabel"; "required": false; "isSignal": true; }; "cancelButtonLabel": { "alias": "cancelButtonLabel"; "required": false; "isSignal": true; }; "targetSectionHeader": { "alias": "targetSectionHeader"; "required": false; "isSignal": true; }; "targetSectionDescription": { "alias": "targetSectionDescription"; "required": false; "isSignal": true; }; "flagSectionHeader": { "alias": "flagSectionHeader"; "required": false; "isSignal": true; }; "flagSectionDescription": { "alias": "flagSectionDescription"; "required": false; "isSignal": true; }; "linkSectionHeader": { "alias": "linkSectionHeader"; "required": false; "isSignal": true; }; "linkSectionDescription": { "alias": "linkSectionDescription"; "required": false; "isSignal": true; }; "hideLinkSection": { "alias": "hideLinkSection"; "required": false; "isSignal": true; }; "presetProductAndConfig": { "alias": "presetProductAndConfig"; "required": false; "isSignal": true; }; }, { "createInitiated": "createInitiated"; "resizeRequested": "resizeRequested"; "cancelInitiated": "cancelInitiated"; "selectDropdownPanelChangedReqested": "selectDropdownPanelChangedReqested"; "componentError": "componentError"; }, never, never, true, never>;
869
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CreateFeatureFlagComponent, "app-create-feature-flag", never, { "customize": { "alias": "customize"; "required": false; "isSignal": true; }; "presetProductAndConfig": { "alias": "presetProductAndConfig"; "required": false; "isSignal": true; }; }, { "createInitiated": "createInitiated"; "resizeRequested": "resizeRequested"; "cancelInitiated": "cancelInitiated"; "selectDropdownPanelChangedReqested": "selectDropdownPanelChangedReqested"; "componentError": "componentError"; }, never, never, true, never>;
748
870
  }
749
871
 
872
+ interface ICustomizeCreateConfig {
873
+ hideCancelButton: boolean;
874
+ createButtonLabel: string;
875
+ cancelButtonLabel: string;
876
+ targetSectionHeader: string;
877
+ targetSectionDescription?: string;
878
+ configSectionHeader: string;
879
+ configSectionDescription?: string;
880
+ }
881
+ declare const DEFAULT_CUSTOMIZE_CREATE_CONFIG: ICustomizeCreateConfig;
750
882
  interface PresetProduct {
751
883
  productId: string;
752
884
  productName: string;
753
885
  }
754
886
  declare class CreateConfigComponent extends BaseComponent implements OnInit {
755
887
  private readonly formBuilder;
756
- readonly hideCancelButton: _angular_core.InputSignal<boolean>;
757
- readonly createButtonLabel: _angular_core.InputSignal<string | undefined>;
758
- readonly cancelButtonLabel: _angular_core.InputSignal<string | undefined>;
759
- readonly targetSectionHeader: _angular_core.InputSignal<string | undefined>;
760
- readonly targetSectionDescription: _angular_core.InputSignal<string | undefined>;
761
- readonly configSectionHeader: _angular_core.InputSignal<string | undefined>;
762
- readonly configSectionDescription: _angular_core.InputSignal<string | undefined>;
888
+ readonly customize: _angular_core.InputSignal<ICustomizeCreateConfig>;
763
889
  readonly presetProduct: _angular_core.InputSignal<PresetProduct | undefined>;
764
890
  readonly createInitiated: _angular_core.OutputEmitterRef<string>;
765
891
  readonly resizeRequested: _angular_core.OutputEmitterRef<void>;
@@ -793,7 +919,7 @@ declare class CreateConfigComponent extends BaseComponent implements OnInit {
793
919
  selectDropdownPanelChanged(useSelector: boolean): void;
794
920
  dropdownComponentFailed(error: Error): void;
795
921
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CreateConfigComponent, never>;
796
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<CreateConfigComponent, "app-create-config", never, { "hideCancelButton": { "alias": "hideCancelButton"; "required": false; "isSignal": true; }; "createButtonLabel": { "alias": "createButtonLabel"; "required": false; "isSignal": true; }; "cancelButtonLabel": { "alias": "cancelButtonLabel"; "required": false; "isSignal": true; }; "targetSectionHeader": { "alias": "targetSectionHeader"; "required": false; "isSignal": true; }; "targetSectionDescription": { "alias": "targetSectionDescription"; "required": false; "isSignal": true; }; "configSectionHeader": { "alias": "configSectionHeader"; "required": false; "isSignal": true; }; "configSectionDescription": { "alias": "configSectionDescription"; "required": false; "isSignal": true; }; "presetProduct": { "alias": "presetProduct"; "required": false; "isSignal": true; }; }, { "createInitiated": "createInitiated"; "resizeRequested": "resizeRequested"; "cancelInitiated": "cancelInitiated"; "selectDropdownPanelChangedReqested": "selectDropdownPanelChangedReqested"; "componentError": "componentError"; }, never, never, true, never>;
922
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CreateConfigComponent, "app-create-config", never, { "customize": { "alias": "customize"; "required": false; "isSignal": true; }; "presetProduct": { "alias": "presetProduct"; "required": false; "isSignal": true; }; }, { "createInitiated": "createInitiated"; "resizeRequested": "resizeRequested"; "cancelInitiated": "cancelInitiated"; "selectDropdownPanelChangedReqested": "selectDropdownPanelChangedReqested"; "componentError": "componentError"; }, never, never, true, never>;
797
923
  }
798
924
 
799
925
  declare class LoaderComponent implements OnInit {
@@ -804,5 +930,5 @@ declare class LoaderComponent implements OnInit {
804
930
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<LoaderComponent, "app-loader", never, { "skipTimeOut": { "alias": "skipTimeOut"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
805
931
  }
806
932
 
807
- export { AuthorizationComponent, CONFIGCAT_PUBLICAPI_UI_CONFIGURATION, ConfigSelectComponent, CreateConfigComponent, CreateFeatureFlagComponent, DeleteSettingDialogComponent, EnvironmentSelectComponent, FeatureFlagItemComponent, FormHelper, InputDisplayNormalizerDirective, LinkFeatureFlagComponent, LoaderComponent, ProductSelectComponent, PublicApiService, SettingItemComponent, SettingSelectComponent, Theme, ThemeService, UserComparatorText, UserComparatorType, addComparisonValueListValueItems, defaultErrorMessageTypes, featureFlagKeyRegex, formatCsvStringValue, formatValuesAndHintAsCsv, formatValuesAndHintAsJson, formatValuesAsCsv, generateComparisonValueFormGroup, generateComparisonValueListFormGroup, generateComparisonValueListValueArray, generateConditionFormGroup, generateDefaultValue, generateDefaultValueFormGroup, generateEmptyPrerequisiteFlagConditionFormGroup, generateEmptySegmentConditionFormGroup, generatePercentageEvaluationAttributeFormControl, generatePercentageOptionFormGroup, generatePrerequisiteDefaultValue, generatePrerequisiteFlagConditionFormGroup, generateSegmentConditionFormGroup, generateSettingValuesFormGroup, generateTargetingRuleFormGroup, generateTargetingRuleWithEmptyPercentageOptions, generateUserConditionFormGroup, generateValueFormGroup, getComparisonValueSemverListItemValidators, getComparisonValueSemverValidators, getComparisonValueStringListItemValidators, getComparisonValueStringValidators, getComparisonValueType, getEmptyPercentageOptions, getNextIndex, getRawSettiongValue, getRawValue, getValidatorsForSettingType, isClearTextComparator, isPercentageOnlyTargetingRule, parseValuesAndHintsFromCsv, parseValuesAndHintsFromJson, parseValuesFromCsv, percentageRegex, provideConfigCatPublicApiUi, validatePercentageSum, wholeNumberRegex };
808
- export type { AuthorizationModel, ComparisonValueListParseResult, DeleteSettingDialogData, DeleteSettingDialogResult, DeleteSettingModel, LinkFeatureFlagParameters, PresetProduct, PresetProductAndConfig, SettingValuesModel, UpdateSettingValuesModel };
933
+ export { AuthorizationComponent, CONFIGCAT_PUBLICAPI_UI_CONFIGURATION, ConfigSelectComponent, CreateConfigComponent, CreateFeatureFlagComponent, DEFAULT_CUSTOMIZE_CREATE_CONFIG, DEFAULT_CUSTOMIZE_CREATE_FEATURE_FLAG, DEFAULT_CUSTOMIZE_FEATURE_FLAG, DEFAULT_CUSTOMIZE_LINK_FEATURE_FLAG, DeleteSettingDialogComponent, EnvironmentSelectComponent, FeatureFlagComponent, FeatureFlagItemComponent, FormHelper, InputDisplayNormalizerDirective, LinkFeatureFlagComponent, LoaderComponent, MessagingService, NotificationSnackColor, NotificationSnackComponent, ProductSelectComponent, PublicApiService, SettingItemComponent, SettingSelectComponent, Theme, ThemeService, UserComparatorText, UserComparatorType, addComparisonValueListValueItems, defaultErrorMessageTypes, featureFlagKeyRegex, formatCsvStringValue, formatValuesAndHintAsCsv, formatValuesAndHintAsJson, formatValuesAsCsv, generateComparisonValueFormGroup, generateComparisonValueListFormGroup, generateComparisonValueListValueArray, generateConditionFormGroup, generateDefaultValue, generateDefaultValueFormGroup, generateEmptyPrerequisiteFlagConditionFormGroup, generateEmptySegmentConditionFormGroup, generatePercentageEvaluationAttributeFormControl, generatePercentageOptionFormGroup, generatePrerequisiteDefaultValue, generatePrerequisiteFlagConditionFormGroup, generateSegmentConditionFormGroup, generateSettingValuesFormGroup, generateTargetingRuleFormGroup, generateTargetingRuleWithEmptyPercentageOptions, generateUserConditionFormGroup, generateValueFormGroup, getComparisonValueSemverListItemValidators, getComparisonValueSemverValidators, getComparisonValueStringListItemValidators, getComparisonValueStringValidators, getComparisonValueType, getEmptyPercentageOptions, getNextIndex, getRawSettiongValue, getRawValue, getValidatorsForSettingType, isClearTextComparator, isPercentageOnlyTargetingRule, parseValuesAndHintsFromCsv, parseValuesAndHintsFromJson, parseValuesFromCsv, percentageRegex, provideConfigCatPublicApiUi, validatePercentageSum, wholeNumberRegex };
934
+ export type { AuthorizationModel, ComparisonValueListParseResult, DeleteSettingDialogData, DeleteSettingDialogResult, DeleteSettingModel, ICustomizeCreateConfig, ICustomizeCreateFeatureFlag, ICustomizeFeatureFlag, ICustomizeLinkFeatureFlag, IGlance, LinkFeatureFlagParameters, NotificationSnackData, PresetProduct, PresetProductAndConfig, SettingValuesModel, UpdateSettingValuesModel };