ng-configcat-publicapi-ui 5.0.5 → 5.2.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/fesm2022/ng-configcat-publicapi-ui.mjs +1944 -405
- package/fesm2022/ng-configcat-publicapi-ui.mjs.map +1 -1
- package/index.d.ts +310 -18
- package/package.json +9 -8
- package/src/assets/images/cat_red.svg +1 -0
- package/src/assets/images/setting-types/decimal.svg +4 -0
- package/src/assets/images/setting-types/feature_flag.svg +5 -0
- package/src/assets/images/setting-types/text.svg +4 -0
- package/src/assets/images/setting-types/whole.svg +4 -0
- package/src/css/controls.scss +35 -0
- package/src/css/icon.scss +4 -0
- package/src/css/tooltip.scss +13 -0
- package/src/css/variables.scss +7 -1
- package/src/css/variation.scss +30 -0
- package/src/public-api.scss +21 -0
package/index.d.ts
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
2
|
import { Provider, InjectionToken, OnInit, OnChanges, 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, UserComparator, SettingType, SegmentComparator, PrerequisiteComparator, SettingFormulaModel, FeatureFlagLimitations, TargetingRuleModel, PercentageOptionModel, ConditionModel, UserConditionModel, SegmentConditionModel, PrerequisiteFlagConditionModel, ComparisonValueListModel, ComparisonValueModel, ValueModel, UpdateEvaluationFormulaModel, ConfigModel, EnvironmentModel, SettingValueModel, UpdateSettingValueModel, SettingDataModel, SegmentListModel, ProductModel, SettingModel } from 'ng-configcat-publicapi';
|
|
4
|
+
import { MeService, ProductsService, ConfigsService, EnvironmentsService, FeatureFlagsSettingsService, FeatureFlagSettingValuesV2Service, FeatureFlagSettingValuesService, IntegrationLinksService, SegmentsService, OrganizationsService, UserComparator, SettingType, PredefinedVariationModel, SegmentComparator, PrerequisiteComparator, SettingFormulaModel, FeatureFlagLimitations, TargetingRuleModel, PercentageOptionModel, ConditionModel, UserConditionModel, SegmentConditionModel, PrerequisiteFlagConditionModel, ComparisonValueListModel, ComparisonValueModel, ValueModel, UpdateEvaluationFormulaModel, ConfigModel, EnvironmentModel, SettingValueModel, UpdateSettingValueModel, SettingDataModel, SegmentListModel, ProductModel, 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 { MatDialogRef } from '@angular/material/dialog';
|
|
10
|
+
import * as _angular_material_paginator from '@angular/material/paginator';
|
|
11
|
+
import { MatTableDataSource } from '@angular/material/table';
|
|
10
12
|
|
|
11
13
|
interface IConfigCatPublicApiConfiguration {
|
|
12
14
|
basicAuthUsername?: string;
|
|
@@ -42,6 +44,7 @@ declare class PublicApiService {
|
|
|
42
44
|
createSettingValuesService(basicAuthUsername?: string | null, basicAuthPassword?: string | null, basePath?: string | null): FeatureFlagSettingValuesService;
|
|
43
45
|
createIntegrationLinksService(basicAuthUsername?: string | null, basicAuthPassword?: string | null, basePath?: string | null): IntegrationLinksService;
|
|
44
46
|
createSegmentsService(basicAuthUsername?: string | null, basicAuthPassword?: string | null, basePath?: string | null): SegmentsService;
|
|
47
|
+
createOrganizationService(basicAuthUsername?: string | null, basicAuthPassword?: string | null, basePath?: string | null): OrganizationsService;
|
|
45
48
|
getDashboardBasePath(): string;
|
|
46
49
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PublicApiService, never>;
|
|
47
50
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<PublicApiService>;
|
|
@@ -131,6 +134,7 @@ interface ValueForm {
|
|
|
131
134
|
stringValue?: FormControl<string>;
|
|
132
135
|
intValue?: FormControl<number>;
|
|
133
136
|
doubleValue?: FormControl<number>;
|
|
137
|
+
predefinedVariationId?: FormControl<string>;
|
|
134
138
|
}
|
|
135
139
|
interface UserConditionForm {
|
|
136
140
|
comparisonAttribute: FormControl<string>;
|
|
@@ -170,6 +174,7 @@ interface IPrerequisiteSetting {
|
|
|
170
174
|
key: string;
|
|
171
175
|
name: string;
|
|
172
176
|
settingType: SettingType;
|
|
177
|
+
predefinedVariations: PredefinedVariationModel[];
|
|
173
178
|
}
|
|
174
179
|
interface IDependeeSetting {
|
|
175
180
|
settingId: number;
|
|
@@ -199,10 +204,10 @@ interface IAddRuleButtonTracker {
|
|
|
199
204
|
declare class FormGenerator {
|
|
200
205
|
generateSettingValuesFormGroup(model: SettingFormulaModel, readOnly: boolean, settings: IPrerequisiteSetting[], featureFlagLimitations: FeatureFlagLimitations): FormGroup<UpdateSettingValueForm>;
|
|
201
206
|
generatePercentageEvaluationAttributeFormControl(percentageEvaluationAttribute: string | null, readOnly: boolean): FormControl<string | null>;
|
|
202
|
-
generateTargetingRuleFormGroup(model: TargetingRuleModel, settingType: SettingType, readOnly: boolean, settings: IPrerequisiteSetting[], featureFlagLimitations: FeatureFlagLimitations): FormGroup<TargetingRuleForm>;
|
|
203
|
-
generateTargetingRuleWithEmptyPercentageOptions(settingType: SettingType, readOnly: boolean, settings: IPrerequisiteSetting[], featureFlagLimitations: FeatureFlagLimitations): FormGroup<TargetingRuleForm>;
|
|
204
|
-
getEmptyPercentageOptions(settingType: SettingType): PercentageOptionModel[];
|
|
205
|
-
generatePercentageOptionFormGroup(model: PercentageOptionModel, settingType: SettingType, readOnly: boolean, featureFlagLimitations: FeatureFlagLimitations): FormGroup<PercentageOptionForm>;
|
|
207
|
+
generateTargetingRuleFormGroup(model: TargetingRuleModel, settingType: SettingType, predefinedVariations: PredefinedVariationModel[], readOnly: boolean, settings: IPrerequisiteSetting[], featureFlagLimitations: FeatureFlagLimitations): FormGroup<TargetingRuleForm>;
|
|
208
|
+
generateTargetingRuleWithEmptyPercentageOptions(settingType: SettingType, predefinedVariations: PredefinedVariationModel[], readOnly: boolean, settings: IPrerequisiteSetting[], featureFlagLimitations: FeatureFlagLimitations): FormGroup<TargetingRuleForm>;
|
|
209
|
+
getEmptyPercentageOptions(settingType: SettingType, predefinedVariations: PredefinedVariationModel[], featureFlagLimitations: FeatureFlagLimitations): PercentageOptionModel[];
|
|
210
|
+
generatePercentageOptionFormGroup(model: PercentageOptionModel, settingType: SettingType, predefinedVariations: PredefinedVariationModel[], readOnly: boolean, featureFlagLimitations: FeatureFlagLimitations): FormGroup<PercentageOptionForm>;
|
|
206
211
|
generateConditionFormGroup(model: ConditionModel, readOnly: boolean, settings: IPrerequisiteSetting[], featureFlagLimitations: FeatureFlagLimitations): FormGroup<ConditionForm>;
|
|
207
212
|
generateUserConditionFormGroup(value: UserConditionModel, readOnly: boolean, featureFlagLimitations: FeatureFlagLimitations): FormGroup<UserConditionForm>;
|
|
208
213
|
generateSegmentConditionFormGroup(value: SegmentConditionModel, readOnly: boolean): FormGroup<SegmentConditionForm>;
|
|
@@ -217,9 +222,10 @@ declare class FormGenerator {
|
|
|
217
222
|
getComparisonValueStringListItemValidators(featureFlagLimitations: FeatureFlagLimitations): ValidatorFn[];
|
|
218
223
|
getComparisonValueSemverValidators(featureFlagLimitations: FeatureFlagLimitations): ValidatorFn[];
|
|
219
224
|
getComparisonValueSemverListItemValidators(featureFlagLimitations: FeatureFlagLimitations): ValidatorFn[];
|
|
220
|
-
generateDefaultValue(settingType: SettingType): ValueModel;
|
|
221
|
-
|
|
222
|
-
|
|
225
|
+
generateDefaultValue(settingType: SettingType, predefinedVariations: PredefinedVariationModel[]): ValueModel;
|
|
226
|
+
generatePrerequisiteDefaultValue(settingType: SettingType, predefinedVariations: PredefinedVariationModel[]): ValueModel;
|
|
227
|
+
generateDefaultValueFormGroup(settingType: SettingType, predefinedVariations: PredefinedVariationModel[], readOnly: boolean, featureFlagLimitations: FeatureFlagLimitations): FormGroup<ValueForm>;
|
|
228
|
+
generateValueFormGroup(value: ValueModel, settingType: SettingType, predefinedVariations: PredefinedVariationModel[], readOnly: boolean, featureFlagLimitations: FeatureFlagLimitations): FormGroup<ValueForm>;
|
|
223
229
|
getComparisonValueType(comparator: UserComparator): UserComparatorType;
|
|
224
230
|
getValidatorsForSettingType(settingType: SettingType, featureFlagLimitations: FeatureFlagLimitations): ValidatorFn[];
|
|
225
231
|
isPercentageOnlyTargetingRule(formGroup: FormGroup<TargetingRuleForm>): boolean;
|
|
@@ -285,6 +291,11 @@ interface AuthorizationModel {
|
|
|
285
291
|
fullName: string;
|
|
286
292
|
}
|
|
287
293
|
|
|
294
|
+
interface LinkFeatureFlagParameters {
|
|
295
|
+
environmentId: string;
|
|
296
|
+
settingId: number;
|
|
297
|
+
}
|
|
298
|
+
|
|
288
299
|
declare class BaseComponent {
|
|
289
300
|
private readonly publicApiService;
|
|
290
301
|
readonly basePath: _angular_core.InputSignal<string | null>;
|
|
@@ -297,6 +308,7 @@ declare class BaseComponent {
|
|
|
297
308
|
protected createSettingValuesService(): ng_configcat_publicapi.FeatureFlagSettingValuesService;
|
|
298
309
|
protected createSettingValuesV2Service(): ng_configcat_publicapi.FeatureFlagSettingValuesV2Service;
|
|
299
310
|
protected createSegmentsService(): ng_configcat_publicapi.SegmentsService;
|
|
311
|
+
protected createOrganizationService(): ng_configcat_publicapi.OrganizationsService;
|
|
300
312
|
protected getDashboardBasePath(): string;
|
|
301
313
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<BaseComponent, never>;
|
|
302
314
|
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>;
|
|
@@ -317,12 +329,12 @@ declare class SettingItemComponent extends BaseComponent {
|
|
|
317
329
|
readonly saveFailed: _angular_core.OutputEmitterRef<Error>;
|
|
318
330
|
readonly formValuesChanged: _angular_core.OutputEmitterRef<void>;
|
|
319
331
|
settingValue: SettingValueModel;
|
|
320
|
-
segments: SegmentListModel[];
|
|
321
332
|
dashboardBasePath: string;
|
|
322
333
|
settingFormulaModel: SettingFormulaModel;
|
|
323
334
|
constructor();
|
|
324
335
|
loadSettingValues: () => Observable<SettingValuesModel>;
|
|
325
336
|
itemLoadSucceeded(): void;
|
|
337
|
+
itenSaveFailed(error: Error): void;
|
|
326
338
|
loadSegments: () => Observable<SegmentListModel[]>;
|
|
327
339
|
handleSave: (model: UpdateSettingValuesModel) => Observable<SettingValuesModel>;
|
|
328
340
|
onDeleteSettingRequested(setting: DeleteSettingModel): void;
|
|
@@ -359,30 +371,70 @@ declare class BaseSelectComponent extends BaseComponent {
|
|
|
359
371
|
|
|
360
372
|
declare class ProductSelectComponent extends BaseSelectComponent implements OnInit {
|
|
361
373
|
readonly valueFormControl: _angular_core.InputSignal<FormControl<any>>;
|
|
362
|
-
|
|
374
|
+
readonly preSelectedProductId: _angular_core.InputSignal<string | undefined>;
|
|
375
|
+
readonly products: _angular_core.WritableSignal<ProductModel[]>;
|
|
376
|
+
readonly filterText: _angular_core.WritableSignal<string>;
|
|
377
|
+
readonly filteredProducts: _angular_core.WritableSignal<{
|
|
378
|
+
hidden: boolean;
|
|
379
|
+
organization: ng_configcat_publicapi.OrganizationModel;
|
|
380
|
+
productId: string;
|
|
381
|
+
name: string;
|
|
382
|
+
description: string | null;
|
|
383
|
+
order: number;
|
|
384
|
+
reasonRequired: boolean;
|
|
385
|
+
}[]>;
|
|
386
|
+
readonly hasFilteredProduct: _angular_core.Signal<boolean>;
|
|
363
387
|
ngOnInit(): void;
|
|
388
|
+
clearFilter(): void;
|
|
364
389
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ProductSelectComponent, never>;
|
|
365
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ProductSelectComponent, "app-product-select", never, { "valueFormControl": { "alias": "valueFormControl"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
390
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ProductSelectComponent, "app-product-select", never, { "valueFormControl": { "alias": "valueFormControl"; "required": true; "isSignal": true; }; "preSelectedProductId": { "alias": "preSelectedProductId"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
366
391
|
}
|
|
367
392
|
|
|
368
393
|
declare class ConfigSelectComponent extends BaseSelectComponent implements OnInit, OnChanges {
|
|
369
|
-
readonly valueFormControl: _angular_core.InputSignal<FormControl<
|
|
394
|
+
readonly valueFormControl: _angular_core.InputSignal<FormControl<string>>;
|
|
370
395
|
readonly productId: _angular_core.InputSignal<string>;
|
|
371
|
-
|
|
396
|
+
readonly preSelectedConfigId: _angular_core.InputSignal<string | undefined>;
|
|
397
|
+
readonly configs: _angular_core.WritableSignal<ConfigModel[]>;
|
|
398
|
+
readonly filterText: _angular_core.WritableSignal<string>;
|
|
399
|
+
readonly filteredConfigs: _angular_core.WritableSignal<{
|
|
400
|
+
hidden: boolean;
|
|
401
|
+
product: ng_configcat_publicapi.ProductModel;
|
|
402
|
+
configId: string;
|
|
403
|
+
name: string;
|
|
404
|
+
description: string | null;
|
|
405
|
+
order: number;
|
|
406
|
+
migratedConfigId: string | null;
|
|
407
|
+
evaluationVersion: ng_configcat_publicapi.EvaluationVersion;
|
|
408
|
+
}[]>;
|
|
409
|
+
readonly hasFilteredConfig: _angular_core.Signal<boolean>;
|
|
372
410
|
ngOnInit(): void;
|
|
373
411
|
ngOnChanges(): void;
|
|
374
412
|
reloadConfigs(): void;
|
|
413
|
+
clearFilter(): void;
|
|
375
414
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ConfigSelectComponent, never>;
|
|
376
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ConfigSelectComponent, "app-config-select", never, { "valueFormControl": { "alias": "valueFormControl"; "required": true; "isSignal": true; }; "productId": { "alias": "productId"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
415
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ConfigSelectComponent, "app-config-select", never, { "valueFormControl": { "alias": "valueFormControl"; "required": true; "isSignal": true; }; "productId": { "alias": "productId"; "required": true; "isSignal": true; }; "preSelectedConfigId": { "alias": "preSelectedConfigId"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
377
416
|
}
|
|
378
417
|
|
|
379
418
|
declare class EnvironmentSelectComponent extends BaseSelectComponent implements OnInit, OnChanges {
|
|
380
419
|
readonly valueFormControl: _angular_core.InputSignal<FormControl<any>>;
|
|
381
420
|
readonly productId: _angular_core.InputSignal<string>;
|
|
382
|
-
environments: EnvironmentModel[]
|
|
421
|
+
readonly environments: _angular_core.WritableSignal<EnvironmentModel[]>;
|
|
422
|
+
readonly filterText: _angular_core.WritableSignal<string>;
|
|
423
|
+
readonly filteredEnvironments: _angular_core.WritableSignal<{
|
|
424
|
+
hidden: boolean;
|
|
425
|
+
product: ng_configcat_publicapi.ProductModel;
|
|
426
|
+
environmentId: string;
|
|
427
|
+
name: string;
|
|
428
|
+
color: string | null;
|
|
429
|
+
description: string | null;
|
|
430
|
+
order: number;
|
|
431
|
+
reasonRequired: boolean;
|
|
432
|
+
}[]>;
|
|
433
|
+
readonly hasFilteredEnvironment: _angular_core.Signal<boolean>;
|
|
383
434
|
ngOnInit(): void;
|
|
384
435
|
ngOnChanges(): void;
|
|
385
436
|
reloadEnvironments(): void;
|
|
437
|
+
clearFilter(): void;
|
|
386
438
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<EnvironmentSelectComponent, never>;
|
|
387
439
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<EnvironmentSelectComponent, "app-environment-select", never, { "valueFormControl": { "alias": "valueFormControl"; "required": true; "isSignal": true; }; "productId": { "alias": "productId"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
388
440
|
}
|
|
@@ -390,10 +442,34 @@ declare class EnvironmentSelectComponent extends BaseSelectComponent implements
|
|
|
390
442
|
declare class SettingSelectComponent extends BaseSelectComponent implements OnInit, OnChanges {
|
|
391
443
|
readonly valueFormControl: _angular_core.InputSignal<FormControl<any>>;
|
|
392
444
|
readonly configId: _angular_core.InputSignal<string>;
|
|
393
|
-
|
|
445
|
+
SettingTypeEnum: {
|
|
446
|
+
Boolean: SettingType;
|
|
447
|
+
String: SettingType;
|
|
448
|
+
Int: SettingType;
|
|
449
|
+
Double: SettingType;
|
|
450
|
+
};
|
|
451
|
+
readonly settings: _angular_core.WritableSignal<SettingModel[]>;
|
|
452
|
+
readonly filterText: _angular_core.WritableSignal<string>;
|
|
453
|
+
readonly filteredSettings: _angular_core.WritableSignal<{
|
|
454
|
+
hidden: boolean;
|
|
455
|
+
settingId: number;
|
|
456
|
+
key: string;
|
|
457
|
+
name: string;
|
|
458
|
+
hint: string | null;
|
|
459
|
+
order: number;
|
|
460
|
+
settingType: SettingType;
|
|
461
|
+
configId: string;
|
|
462
|
+
configName: string;
|
|
463
|
+
createdAt: string | null;
|
|
464
|
+
tags: Array<ng_configcat_publicapi.TagModel>;
|
|
465
|
+
predefinedVariations: Array<ng_configcat_publicapi.PredefinedVariationModel>;
|
|
466
|
+
}[]>;
|
|
467
|
+
readonly hasFilteredSetting: _angular_core.Signal<boolean>;
|
|
394
468
|
ngOnInit(): void;
|
|
395
469
|
ngOnChanges(): void;
|
|
470
|
+
selectedSettingTiggetText(): string;
|
|
396
471
|
reloadSettings(): void;
|
|
472
|
+
clearFilter(): void;
|
|
397
473
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SettingSelectComponent, never>;
|
|
398
474
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SettingSelectComponent, "app-setting-select", never, { "valueFormControl": { "alias": "valueFormControl"; "required": true; "isSignal": true; }; "configId": { "alias": "configId"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
399
475
|
}
|
|
@@ -470,9 +546,225 @@ declare class FeatureFlagItemComponent extends BaseComponent implements OnInit,
|
|
|
470
546
|
recalcAddButtons(): void;
|
|
471
547
|
hasOnlyPercentageRule(group: FormGroup<UpdateSettingValueForm>): boolean;
|
|
472
548
|
expandedChanged(expandedState: boolean): void;
|
|
549
|
+
private openDiscardDialog;
|
|
550
|
+
canDeactivate(): boolean;
|
|
551
|
+
viewVariations(event: {
|
|
552
|
+
settingId: number;
|
|
553
|
+
}): void;
|
|
554
|
+
openConcurentDeleteDialog(): void;
|
|
555
|
+
openVariationsDialog(event: {
|
|
556
|
+
settingId: number;
|
|
557
|
+
}): void;
|
|
473
558
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FeatureFlagItemComponent, never>;
|
|
474
559
|
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"; "saveFailed": "saveFailed"; "expandedStateChanged": "expandedStateChanged"; "formValuesChanged": "formValuesChanged"; }, never, never, true, never>;
|
|
475
560
|
}
|
|
476
561
|
|
|
477
|
-
|
|
478
|
-
|
|
562
|
+
interface AuthorizationParameters {
|
|
563
|
+
basicAuthUsername: string;
|
|
564
|
+
basicAuthPassword: string;
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
declare class LinkFeatureFlagComponent implements OnInit, OnDestroy {
|
|
568
|
+
readonly authorizationParameters: _angular_core.InputSignal<AuthorizationParameters | null | undefined>;
|
|
569
|
+
readonly hideCancelButton: _angular_core.InputSignal<boolean>;
|
|
570
|
+
readonly addButtonLabel: _angular_core.InputSignal<unknown>;
|
|
571
|
+
readonly cancelButtonLabel: _angular_core.InputSignal<unknown>;
|
|
572
|
+
readonly linkInitiated: _angular_core.OutputEmitterRef<LinkFeatureFlagParameters>;
|
|
573
|
+
readonly resizeRequested: _angular_core.OutputEmitterRef<void>;
|
|
574
|
+
readonly cancelInitiated: _angular_core.OutputEmitterRef<void>;
|
|
575
|
+
readonly selectDropdownPanelChangedReqested: _angular_core.OutputEmitterRef<boolean>;
|
|
576
|
+
private readonly formBuilder;
|
|
577
|
+
formGroup: _angular_forms.FormGroup<{
|
|
578
|
+
productId: FormControl<string>;
|
|
579
|
+
environmentId: FormControl<string>;
|
|
580
|
+
configId: FormControl<string>;
|
|
581
|
+
settingId: FormControl<number>;
|
|
582
|
+
}>;
|
|
583
|
+
subscription: Subscription | null;
|
|
584
|
+
ngOnInit(): void;
|
|
585
|
+
ngOnDestroy(): void;
|
|
586
|
+
add(): void;
|
|
587
|
+
cancel(): void;
|
|
588
|
+
selectDropdownPanelChanged(useSelector: boolean): void;
|
|
589
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<LinkFeatureFlagComponent, never>;
|
|
590
|
+
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"; }, never, never, true, never>;
|
|
591
|
+
}
|
|
592
|
+
|
|
593
|
+
type FeatureFlagValueType = boolean | string | number;
|
|
594
|
+
interface PredefinedVariationValueFormGroup {
|
|
595
|
+
boolValue?: FormControl<boolean>;
|
|
596
|
+
stringValue?: FormControl<string>;
|
|
597
|
+
intValue?: FormControl<number>;
|
|
598
|
+
doubleValue?: FormControl<number>;
|
|
599
|
+
}
|
|
600
|
+
interface PredefinedVariationFormGroup {
|
|
601
|
+
name: FormControl<string | null>;
|
|
602
|
+
hint: FormControl<string | null>;
|
|
603
|
+
value: FormGroup<PredefinedVariationValueFormGroup>;
|
|
604
|
+
valueForComparison: FormControl<string | null>;
|
|
605
|
+
}
|
|
606
|
+
interface InitialValueFormGroup {
|
|
607
|
+
environmentName: FormControl<string>;
|
|
608
|
+
environmentId: FormControl<string>;
|
|
609
|
+
settingValue: FormControl<FeatureFlagValueType>;
|
|
610
|
+
predefinedVariationIndex: FormControl<number>;
|
|
611
|
+
}
|
|
612
|
+
interface CreateSettingFormGroup {
|
|
613
|
+
name: FormControl<string>;
|
|
614
|
+
key: FormControl<string>;
|
|
615
|
+
hint: FormControl<string>;
|
|
616
|
+
settingType: FormControl<SettingType>;
|
|
617
|
+
useVariations: FormControl<boolean>;
|
|
618
|
+
predefinedVariations: FormArray<FormGroup<PredefinedVariationFormGroup>>;
|
|
619
|
+
initialValuesPerEnvironment: FormControl<boolean>;
|
|
620
|
+
initialValueForAll: FormControl<FeatureFlagValueType>;
|
|
621
|
+
initialValueForAllVariationIndex: FormControl<number>;
|
|
622
|
+
initialValues: FormArray<FormGroup<InitialValueFormGroup>>;
|
|
623
|
+
}
|
|
624
|
+
interface IntegrationCreateSettingFormGroup extends CreateSettingFormGroup {
|
|
625
|
+
productId: FormControl<string>;
|
|
626
|
+
environmentId: FormControl<string>;
|
|
627
|
+
configId: FormControl<string>;
|
|
628
|
+
}
|
|
629
|
+
interface CreateConfigFormGroup {
|
|
630
|
+
productId: FormControl<string>;
|
|
631
|
+
name: FormControl<string>;
|
|
632
|
+
description: FormControl<string>;
|
|
633
|
+
evaluationVersion: FormControl<EvaluationVersion>;
|
|
634
|
+
}
|
|
635
|
+
|
|
636
|
+
interface PresetProductAndConfig {
|
|
637
|
+
productId: string;
|
|
638
|
+
configId: string;
|
|
639
|
+
productName: string;
|
|
640
|
+
configName: string;
|
|
641
|
+
}
|
|
642
|
+
declare class CreateFeatureFlagComponent extends BaseComponent implements OnInit {
|
|
643
|
+
private readonly formBuilder;
|
|
644
|
+
private readonly destroyRef;
|
|
645
|
+
private readonly dialog;
|
|
646
|
+
readonly hideCancelButton: _angular_core.InputSignal<boolean>;
|
|
647
|
+
readonly createButtonLabel: _angular_core.InputSignal<string | undefined>;
|
|
648
|
+
readonly cancelButtonLabel: _angular_core.InputSignal<string | undefined>;
|
|
649
|
+
readonly targetSectionHeader: _angular_core.InputSignal<string | undefined>;
|
|
650
|
+
readonly targetSectionDescription: _angular_core.InputSignal<string | undefined>;
|
|
651
|
+
readonly flagSectionHeader: _angular_core.InputSignal<string | undefined>;
|
|
652
|
+
readonly flagSectionDescription: _angular_core.InputSignal<string | undefined>;
|
|
653
|
+
readonly linkSectionHeader: _angular_core.InputSignal<string | undefined>;
|
|
654
|
+
readonly linkSectionDescription: _angular_core.InputSignal<string | undefined>;
|
|
655
|
+
readonly hideLinkSection: _angular_core.InputSignal<boolean>;
|
|
656
|
+
readonly presetProductAndConfig: _angular_core.InputSignal<PresetProductAndConfig | undefined>;
|
|
657
|
+
readonly createInitiated: _angular_core.OutputEmitterRef<LinkFeatureFlagParameters>;
|
|
658
|
+
readonly resizeRequested: _angular_core.OutputEmitterRef<void>;
|
|
659
|
+
readonly cancelInitiated: _angular_core.OutputEmitterRef<void>;
|
|
660
|
+
readonly selectDropdownPanelChangedReqested: _angular_core.OutputEmitterRef<boolean>;
|
|
661
|
+
SettingTypeEnum: {
|
|
662
|
+
Boolean: SettingType;
|
|
663
|
+
String: SettingType;
|
|
664
|
+
Int: SettingType;
|
|
665
|
+
Double: SettingType;
|
|
666
|
+
};
|
|
667
|
+
FormHelper: typeof FormHelper;
|
|
668
|
+
EvaluationVersion: {
|
|
669
|
+
V1: EvaluationVersion;
|
|
670
|
+
V2: EvaluationVersion;
|
|
671
|
+
};
|
|
672
|
+
loading: boolean;
|
|
673
|
+
dataSource: MatTableDataSource<FormGroup<PredefinedVariationFormGroup>, _angular_material_paginator.MatPaginator>;
|
|
674
|
+
formGroup: FormGroup<IntegrationCreateSettingFormGroup>;
|
|
675
|
+
configEvaluationVersion: EvaluationVersion;
|
|
676
|
+
maxPredefinedVariations: number;
|
|
677
|
+
maxStringFlagValueLength: number;
|
|
678
|
+
selectedProductOrganiaztionId: string;
|
|
679
|
+
selectedProductEnviroment: EnvironmentModel[];
|
|
680
|
+
focusIndex: number;
|
|
681
|
+
settingTypeText: string;
|
|
682
|
+
displayedColumns: string[];
|
|
683
|
+
stringValidators: _angular_forms.ValidatorFn[];
|
|
684
|
+
intValidators: _angular_forms.ValidatorFn[];
|
|
685
|
+
doubleValidators: _angular_forms.ValidatorFn[];
|
|
686
|
+
ngOnInit(): void;
|
|
687
|
+
initialValueForAllFormControlFunction(settingType: SettingType): FormControl<string> | FormControl<number> | FormControl<boolean>;
|
|
688
|
+
settingTypeChanges(newSettingType: SettingType): void;
|
|
689
|
+
setDataSource(): void;
|
|
690
|
+
create(): void;
|
|
691
|
+
cancel(): void;
|
|
692
|
+
selectDropdownPanelChanged(useSelector: boolean): void;
|
|
693
|
+
createEmptyVariationFormGroup(settingType: SettingType, boolValue?: boolean, stringValue?: string, intValue?: number, doubleValue?: number): FormGroup<{
|
|
694
|
+
name: FormControl<string | null>;
|
|
695
|
+
hint: FormControl<string | null>;
|
|
696
|
+
value: FormGroup<PredefinedVariationValueFormGroup>;
|
|
697
|
+
valueForComparison: FormControl<string | null>;
|
|
698
|
+
}>;
|
|
699
|
+
createEmptyVariationValueFormGroup(settingType: SettingType, boolValue?: boolean, stringValue?: string, intValue?: number, doubleValue?: number): FormGroup<{
|
|
700
|
+
boolValue?: FormControl<boolean> | undefined;
|
|
701
|
+
stringValue?: FormControl<string> | undefined;
|
|
702
|
+
intValue?: FormControl<number> | undefined;
|
|
703
|
+
doubleValue?: FormControl<number> | undefined;
|
|
704
|
+
}>;
|
|
705
|
+
addVariation(): void;
|
|
706
|
+
removeVariation(index: number): void;
|
|
707
|
+
fixupVariationIndex(removedIndex: number, formControl: FormControl<number>): void;
|
|
708
|
+
expandText(stringValueControl: FormControl<string>): void;
|
|
709
|
+
expandHint(stringValueControl: FormControl<string | null>): void;
|
|
710
|
+
getColorIndex(row: FormGroup<PredefinedVariationFormGroup>, index: number): FeatureFlagValueType;
|
|
711
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CreateFeatureFlagComponent, never>;
|
|
712
|
+
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"; }, never, never, true, never>;
|
|
713
|
+
}
|
|
714
|
+
|
|
715
|
+
interface PresetProduct {
|
|
716
|
+
productId: string;
|
|
717
|
+
productName: string;
|
|
718
|
+
}
|
|
719
|
+
declare class CreateConfigComponent extends BaseComponent implements OnInit {
|
|
720
|
+
private readonly formBuilder;
|
|
721
|
+
readonly hideCancelButton: _angular_core.InputSignal<boolean>;
|
|
722
|
+
readonly createButtonLabel: _angular_core.InputSignal<string | undefined>;
|
|
723
|
+
readonly cancelButtonLabel: _angular_core.InputSignal<string | undefined>;
|
|
724
|
+
readonly targetSectionHeader: _angular_core.InputSignal<string | undefined>;
|
|
725
|
+
readonly targetSectionDescription: _angular_core.InputSignal<string | undefined>;
|
|
726
|
+
readonly configSectionHeader: _angular_core.InputSignal<string | undefined>;
|
|
727
|
+
readonly configSectionDescription: _angular_core.InputSignal<string | undefined>;
|
|
728
|
+
readonly presetProduct: _angular_core.InputSignal<PresetProduct | undefined>;
|
|
729
|
+
readonly createInitiated: _angular_core.OutputEmitterRef<string>;
|
|
730
|
+
readonly resizeRequested: _angular_core.OutputEmitterRef<void>;
|
|
731
|
+
readonly cancelInitiated: _angular_core.OutputEmitterRef<void>;
|
|
732
|
+
readonly selectDropdownPanelChangedReqested: _angular_core.OutputEmitterRef<boolean>;
|
|
733
|
+
SettingTypeEnum: {
|
|
734
|
+
Boolean: SettingType;
|
|
735
|
+
String: SettingType;
|
|
736
|
+
Int: SettingType;
|
|
737
|
+
Double: SettingType;
|
|
738
|
+
};
|
|
739
|
+
FormHelper: typeof FormHelper;
|
|
740
|
+
EvaluationVersion: {
|
|
741
|
+
V1: EvaluationVersion;
|
|
742
|
+
V2: EvaluationVersion;
|
|
743
|
+
};
|
|
744
|
+
loading: boolean;
|
|
745
|
+
formGroup: FormGroup<CreateConfigFormGroup>;
|
|
746
|
+
maxPredefinedVariations: number;
|
|
747
|
+
maxStringFlagValueLength: number;
|
|
748
|
+
selectedProductOrganiaztionId: string;
|
|
749
|
+
selectedProductEnviroment: EnvironmentModel[];
|
|
750
|
+
focusIndex: number;
|
|
751
|
+
settingTypeText: string;
|
|
752
|
+
displayedColumns: string[];
|
|
753
|
+
ngOnInit(): void;
|
|
754
|
+
create(): void;
|
|
755
|
+
cancel(): void;
|
|
756
|
+
selectDropdownPanelChanged(useSelector: boolean): void;
|
|
757
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CreateConfigComponent, never>;
|
|
758
|
+
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"; }, never, never, true, never>;
|
|
759
|
+
}
|
|
760
|
+
|
|
761
|
+
declare class LoaderComponent implements OnInit {
|
|
762
|
+
showLoader: boolean;
|
|
763
|
+
readonly skipTimeOut: _angular_core.InputSignal<boolean>;
|
|
764
|
+
ngOnInit(): void;
|
|
765
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<LoaderComponent, never>;
|
|
766
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<LoaderComponent, "app-loader", never, { "skipTimeOut": { "alias": "skipTimeOut"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
767
|
+
}
|
|
768
|
+
|
|
769
|
+
export { AuthorizationComponent, CONFIGCAT_PUBLICAPI_UI_CONFIGURATION, ConfigSelectComponent, CreateConfigComponent, CreateFeatureFlagComponent, DeleteSettingDialogComponent, EnvironmentSelectComponent, FeatureFlagItemComponent, FormGenerator, FormHelper, InputDisplayNormalizerDirective, LinkFeatureFlagComponent, LoaderComponent, ProductSelectComponent, PublicApiService, SettingItemComponent, SettingSelectComponent, Theme, ThemeService, UserComparatorText, UserComparatorType, defaultErrorMessageTypes, featureFlagKeyRegex, getRawSettiongValue, getRawValue, isClearTextComparator, percentageRegex, provideConfigCatPublicApiUi, validatePercentageSum, wholeNumberRegex };
|
|
770
|
+
export type { AuthorizationModel, DeleteSettingDialogData, DeleteSettingDialogResult, DeleteSettingModel, LinkFeatureFlagParameters, PresetProduct, PresetProductAndConfig, SettingValuesModel, UpdateSettingValuesModel };
|
package/package.json
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ng-configcat-publicapi-ui",
|
|
3
|
-
"version": "5.0
|
|
3
|
+
"version": "5.2.0",
|
|
4
4
|
"peerDependencies": {
|
|
5
|
-
"@angular/cdk": "^20.2.
|
|
6
|
-
"@angular/common": "^20.3.
|
|
7
|
-
"@angular/core": "^20.3.
|
|
8
|
-
"@angular/forms": "^20.3.
|
|
9
|
-
"@angular/material": "^20.2.
|
|
10
|
-
"@angular/router": "^20.3.
|
|
11
|
-
"
|
|
5
|
+
"@angular/cdk": "^20.2.14",
|
|
6
|
+
"@angular/common": "^20.3.15",
|
|
7
|
+
"@angular/core": "^20.3.15",
|
|
8
|
+
"@angular/forms": "^20.3.15",
|
|
9
|
+
"@angular/material": "^20.2.14",
|
|
10
|
+
"@angular/router": "^20.3.15",
|
|
11
|
+
"@configcat/sdk": "^1.0.2",
|
|
12
|
+
"ng-configcat-publicapi": "^5.2.2",
|
|
12
13
|
"papaparse": "^5.5.3",
|
|
13
14
|
"ace-builds": "^1.37.0"
|
|
14
15
|
},
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 244.77 210.07"><defs><style>.cls-1{fill:#ed1c24;}.cls-2{fill:#fff;}.cls-3{fill:#000000;}</style></defs><title>cat</title><path class="cls-1" d="M201.57,100V40l-60,60H91.72l-40-40V190a60,60,0,0,0,60,60h90V100Z" transform="translate(-35.62 -40)"/><rect class="cls-2" x="34.22" y="80.48" width="113.76" height="51.71" rx="25.85" ry="25.85"/><circle class="cls-3" cx="119.95" cy="106.33" r="20"/><path class="cls-1" d="M97.52,130.63a16,16,0,1,1-16,16,16,16,0,0,1,16-16m0-4a20,20,0,1,0,20,20,20,20,0,0,0-20-20Z" transform="translate(-35.62 -40)"/><path class="cls-2" d="M135.68,187.4a2,2,0,0,0-2.83,0l-6.13,6.13-6.13-6.13a2,2,0,0,0-2.83,2.83l7,7v13.6a2,2,0,0,0,4,0v-13.6l7-7A2,2,0,0,0,135.68,187.4Z" transform="translate(-35.62 -40)"/><path class="cls-2" d="M44.76,195.06H85.29a1.5,1.5,0,1,0,0-3H44.76a1.5,1.5,0,1,0,0,3Z" transform="translate(-35.62 -40)"/><path class="cls-2" d="M92.94,199.3H37.12a1.5,1.5,0,0,0,0,3H92.94a1.5,1.5,0,0,0,0-3Z" transform="translate(-35.62 -40)"/><path class="cls-2" d="M85.29,206.54H44.76a1.5,1.5,0,1,0,0,3H85.29a1.5,1.5,0,0,0,0-3Z" transform="translate(-35.62 -40)"/><path class="cls-2" d="M168.5,193.57H209a1.5,1.5,0,1,0,0-3H168.5a1.5,1.5,0,0,0,0,3Z" transform="translate(-35.62 -40)"/><path class="cls-2" d="M216.67,197.8H160.85a1.5,1.5,0,1,0,0,3h55.82a1.5,1.5,0,1,0,0-3Z" transform="translate(-35.62 -40)"/><path class="cls-2" d="M209,205H168.5a1.5,1.5,0,0,0,0,3H209a1.5,1.5,0,0,0,0-3Z" transform="translate(-35.62 -40)"/><path class="cls-1" d="M275.34,139.62l0,0a20.17,20.17,0,1,0-37.5,14.83,65.67,65.67,0,0,1-79.17,85.36A82.1,82.1,0,0,0,275.34,139.62Z" transform="translate(-35.62 -40)"/></svg>
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M24 48C37.2548 48 48 37.2548 48 24C48 10.7452 37.2548 0 24 0C10.7452 0 0 10.7452 0 24C0 37.2548 10.7452 48 24 48Z" fill="#EF333A"/>
|
|
3
|
+
<path d="M16.1914 23.19L18.4034 20.67V19.2H11.5434V21.02H15.7154L13.6994 23.302V24.8H14.7354C16.0234 24.8 16.5694 25.262 16.5694 26.004C16.5694 26.802 15.8694 27.264 14.7354 27.264C13.7134 27.264 12.6774 26.942 11.9354 26.382L11.0534 28.118C12.0054 28.79 13.4194 29.168 14.7914 29.168C17.5774 29.168 18.8514 27.656 18.8514 26.004C18.8514 24.562 17.9554 23.47 16.1914 23.19ZM21.1865 29.112C21.9425 29.112 22.5445 28.538 22.5445 27.74C22.5445 26.928 21.9425 26.396 21.1865 26.396C20.4305 26.396 19.8285 26.928 19.8285 27.74C19.8285 28.538 20.4305 29.112 21.1865 29.112ZM22.8959 19.2V21.02H24.8559V29H27.1239V19.2H22.8959ZM37.8003 25.094H36.2043V23.26H34.0623V25.094H31.4303L35.7143 19.2H33.3343L28.7143 25.416V26.942H33.9923V29H36.2043V26.942H37.8003V25.094Z" fill="white"/>
|
|
4
|
+
</svg>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M24 48C37.2548 48 48 37.2548 48 24C48 10.7452 37.2548 0 24 0C10.7452 0 0 10.7452 0 24C0 37.2548 10.7452 48 24 48Z" fill="#EC8030"/>
|
|
3
|
+
<rect x="10" y="18" width="28" height="12" rx="6" stroke="white" stroke-width="2"/>
|
|
4
|
+
<circle cx="30" cy="24" r="9" fill="white"/>
|
|
5
|
+
</svg>
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M24 48C37.2548 48 48 37.2548 48 24C48 10.7452 37.2548 0 24 0C10.7452 0 0 10.7452 0 24C0 37.2548 10.7452 48 24 48Z" fill="#27AE60"/>
|
|
3
|
+
<path d="M15.2569 20.356C14.0529 20.356 12.8349 20.678 12.0089 21.266L12.7929 22.792C13.3389 22.358 14.1649 22.092 14.9629 22.092C16.1389 22.092 16.6989 22.638 16.6989 23.576H14.9629C12.6669 23.576 11.7289 24.5 11.7289 25.83C11.7289 27.132 12.7789 28.112 14.5429 28.112C15.6489 28.112 16.4329 27.748 16.8389 27.062V28H18.8829V23.702C18.8829 21.42 17.5529 20.356 15.2569 20.356ZM15.0889 26.642C14.3189 26.642 13.8569 26.278 13.8569 25.732C13.8569 25.228 14.1789 24.85 15.2009 24.85H16.6989V25.62C16.4469 26.306 15.8169 26.642 15.0889 26.642ZM25.3116 20.356C24.3736 20.356 23.6036 20.65 23.0436 21.266V17.612H20.8596V28H22.9456V27.132C23.4916 27.79 24.3036 28.112 25.3116 28.112C27.4256 28.112 29.0636 26.6 29.0636 24.234C29.0636 21.868 27.4256 20.356 25.3116 20.356ZM24.9336 26.32C23.8416 26.32 23.0156 25.536 23.0156 24.234C23.0156 22.932 23.8416 22.148 24.9336 22.148C26.0256 22.148 26.8516 22.932 26.8516 24.234C26.8516 25.536 26.0256 26.32 24.9336 26.32ZM34.1656 28.112C35.7476 28.112 36.9936 27.412 37.5396 26.208L35.8456 25.284C35.4396 26.012 34.8376 26.32 34.1516 26.32C33.0456 26.32 32.1776 25.55 32.1776 24.234C32.1776 22.918 33.0456 22.148 34.1516 22.148C34.8376 22.148 35.4396 22.47 35.8456 23.184L37.5396 22.274C36.9936 21.042 35.7476 20.356 34.1656 20.356C31.7156 20.356 29.9656 21.966 29.9656 24.234C29.9656 26.502 31.7156 28.112 34.1656 28.112Z" fill="white"/>
|
|
4
|
+
</svg>
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M24 48C37.2548 48 48 37.2548 48 24C48 10.7452 37.2548 0 24 0C10.7452 0 0 10.7452 0 24C0 37.2548 10.7452 48 24 48Z" fill="#F2C94C"/>
|
|
3
|
+
<path d="M25.0786 25.094H23.4826V23.26H21.3406V25.094H18.7086L22.9926 19.2H20.6126L15.9926 25.416V26.942H21.2706V29H23.4826V26.942H25.0786V25.094ZM28.8376 27.152L31.0916 25.024C32.4636 23.75 32.7296 22.882 32.7296 21.93C32.7296 20.152 31.2736 19.032 29.0896 19.032C27.3256 19.032 25.9536 19.746 25.1976 20.852L26.8496 21.916C27.3256 21.258 28.0396 20.936 28.8796 20.936C29.9156 20.936 30.4476 21.384 30.4476 22.154C30.4476 22.63 30.2936 23.134 29.4256 23.96L25.6456 27.53V29H33.0516V27.152H28.8376Z" fill="#333333"/>
|
|
4
|
+
</svg>
|
package/src/css/controls.scss
CHANGED
|
@@ -151,6 +151,21 @@ html > body {
|
|
|
151
151
|
}
|
|
152
152
|
}
|
|
153
153
|
|
|
154
|
+
.mat-form-field-disabled {
|
|
155
|
+
.mdc-notched-outline > * {
|
|
156
|
+
border-color: var(--input-disabled-border-color) !important;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
.mat-mdc-text-field-wrapper {
|
|
160
|
+
--mat-form-field-outlined-disabled-input-text-color: var(--input-disabled-color);
|
|
161
|
+
background-color: var(--input-disabled-background-color);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
.mat-mdc-select-disabled {
|
|
165
|
+
--mat-select-disabled-trigger-text-color: var(--input-disabled-color);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
|
|
154
169
|
.mat-mdc-paginator {
|
|
155
170
|
.mat-mdc-form-field {
|
|
156
171
|
.mat-mdc-text-field-wrapper {
|
|
@@ -375,6 +390,26 @@ html > body {
|
|
|
375
390
|
}
|
|
376
391
|
}
|
|
377
392
|
|
|
393
|
+
.menu-filter {
|
|
394
|
+
display: flex;
|
|
395
|
+
margin: 0 8px 8px 8px;
|
|
396
|
+
justify-content: space-around;
|
|
397
|
+
min-width: 230px;
|
|
398
|
+
|
|
399
|
+
mat-form-field {
|
|
400
|
+
width: 100%;
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
.clear-filter {
|
|
405
|
+
@include input-suffix-button();
|
|
406
|
+
margin-right: 5px;
|
|
407
|
+
|
|
408
|
+
&.marginless {
|
|
409
|
+
margin-right: unset;
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
|
|
378
413
|
&[data-theme="dark"] .mat-mdc-autocomplete-panel,
|
|
379
414
|
&[data-theme="dark"] .mat-mdc-dialog-surface,
|
|
380
415
|
&[data-theme="dark"] .mat-mdc-select-panel,
|
package/src/css/icon.scss
CHANGED
package/src/css/tooltip.scss
CHANGED
|
@@ -8,5 +8,18 @@ html > body {
|
|
|
8
8
|
|
|
9
9
|
.multiline-tooltip {
|
|
10
10
|
white-space: pre-line;
|
|
11
|
+
|
|
12
|
+
&.left-aligned {
|
|
13
|
+
.mdc-tooltip__surface {
|
|
14
|
+
text-align: left;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.wide-tooltip {
|
|
20
|
+
// See also: https://stackoverflow.com/a/78637566
|
|
21
|
+
.mdc-tooltip__surface {
|
|
22
|
+
max-width: min(800px, 90vw) !important;
|
|
23
|
+
}
|
|
11
24
|
}
|
|
12
25
|
}
|
package/src/css/variables.scss
CHANGED
|
@@ -73,7 +73,10 @@
|
|
|
73
73
|
--input-background: #{theme.$input-background};
|
|
74
74
|
--input-border-color: #dbdbdb;
|
|
75
75
|
--input-transparent-background: #{color.adjust(theme.$input-background, $alpha: -0.2)};
|
|
76
|
-
--input-placeholder-opacity: 0.
|
|
76
|
+
--input-placeholder-opacity: 0.9;
|
|
77
|
+
--input-disabled-background-color: #ebebeb;
|
|
78
|
+
--input-disabled-border-color: #d1d1d1;
|
|
79
|
+
--input-disabled-color: #0000009c;
|
|
77
80
|
|
|
78
81
|
// ==== NAV ====
|
|
79
82
|
--nav-background-color: var(--panel-background-color);
|
|
@@ -199,6 +202,9 @@
|
|
|
199
202
|
--input-border-color: #474e57;
|
|
200
203
|
--input-transparent-background: #{color.adjust(theme.$input-background-dark, $alpha: -0.2)};
|
|
201
204
|
--input-placeholder-opacity: 0.6;
|
|
205
|
+
--input-disabled-background-color: #2f3135;
|
|
206
|
+
--input-disabled-border-color: #4d4d4e;
|
|
207
|
+
--input-disabled-color: #bdbdbd;
|
|
202
208
|
|
|
203
209
|
// ==== NAV ====
|
|
204
210
|
--nav-background-color: var(--panel-background-color);
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
@use "sass:list";
|
|
2
|
+
|
|
3
|
+
$colors: #71c95b, #ff5252, #a482e7, #48b6b6, #a19180, #23afdd, #e08ba9, #97b0df, #e0ae17, #e46bb2;
|
|
4
|
+
$colorsDark: #5ca12e, #e04f4f, #866fcf, #399, #837361, #008fb3, #c77a8b, #7d8ebb, #bd8e02, #bd509c;
|
|
5
|
+
|
|
6
|
+
html > body {
|
|
7
|
+
.variation-indicator {
|
|
8
|
+
display: flex;
|
|
9
|
+
min-width: 8px;
|
|
10
|
+
width: 8px;
|
|
11
|
+
height: 8px;
|
|
12
|
+
border-radius: 50%;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
@each $color in $colors {
|
|
16
|
+
$index: list.index($colors, $color);
|
|
17
|
+
.variation-color-#{$index} {
|
|
18
|
+
background-color: $color;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
&[data-theme="dark"] {
|
|
23
|
+
@each $color in $colorsDark {
|
|
24
|
+
$index: list.index($colorsDark, $color);
|
|
25
|
+
.variation-color-#{$index} {
|
|
26
|
+
background-color: $color;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|