@pl4yzonellc/valar-ui 1.0.4 → 1.0.5

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.
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, OnDestroy, OnChanges, EventEmitter, SimpleChanges, ModuleWithProviders } from '@angular/core';
2
+ import { InjectionToken, EventEmitter, OnDestroy, OnChanges, SimpleChanges, ModuleWithProviders } from '@angular/core';
3
3
  import { HttpClient } from '@angular/common/http';
4
4
  import { Observable } from 'rxjs';
5
5
  import * as i4 from '@angular/common';
@@ -9,11 +9,12 @@ import * as i5 from '@angular/forms';
9
9
  * Primitive types allowed as feature flag values.
10
10
  * Mirrors the backend's FlagPrimitive type.
11
11
  */
12
- type FlagPrimitive = boolean | string | number | null;
12
+ type FlagObject = Record<string, string>;
13
+ type FlagValue = boolean | string | number | null | FlagObject;
13
14
  /**
14
15
  * A group of feature flags: key → primitive value.
15
16
  */
16
- type FlagGroup = Record<string, FlagPrimitive>;
17
+ type FlagGroup = Record<string, FlagValue>;
17
18
  /**
18
19
  * The full feature flags document for a tenant.
19
20
  * Dynamic group names sit at the top level alongside metadata.
@@ -54,8 +55,8 @@ declare const RESERVED_KEYS: Set<string>;
54
55
  interface PendingChange {
55
56
  group: string;
56
57
  key: string;
57
- oldValue: FlagPrimitive;
58
- newValue: FlagPrimitive;
58
+ oldValue: FlagValue;
59
+ newValue: FlagValue;
59
60
  isNew?: boolean;
60
61
  }
61
62
 
@@ -85,11 +86,85 @@ declare class FeatureFlagsApiService {
85
86
  static ɵprov: i0.ɵɵInjectableDeclaration<FeatureFlagsApiService>;
86
87
  }
87
88
 
89
+ type FlagValueType$1 = 'string' | 'boolean' | 'number' | 'object';
90
+ interface ObjectFieldEntry {
91
+ key: string;
92
+ value: string;
93
+ }
94
+ interface FlagEntry {
95
+ key: string;
96
+ value: FlagValue;
97
+ }
98
+ interface FlagChangedEvent {
99
+ key: string;
100
+ oldValue: FlagValue;
101
+ newValue: FlagValue;
102
+ }
103
+ declare class FlagGroupCardComponent {
104
+ groupName: string;
105
+ flags: FlagEntry[];
106
+ isNewGroup: boolean;
107
+ dirtyKeys: Set<string>;
108
+ isAddingFlag: boolean;
109
+ newFlagKey: string;
110
+ newFlagValue: string;
111
+ newFlagType: FlagValueType$1;
112
+ newFlagObjectEntries: ObjectFieldEntry[];
113
+ flagChanged: EventEmitter<FlagChangedEvent>;
114
+ revertFlag: EventEmitter<string>;
115
+ addFlagRequest: EventEmitter<void>;
116
+ cancelAddFlag: EventEmitter<void>;
117
+ confirmAddFlag: EventEmitter<void>;
118
+ newFlagKeyChange: EventEmitter<string>;
119
+ newFlagValueChange: EventEmitter<string>;
120
+ newFlagTypeChange: EventEmitter<FlagValueType$1>;
121
+ newFlagObjectEntriesChange: EventEmitter<ObjectFieldEntry[]>;
122
+ deleteFlagRequest: EventEmitter<string>;
123
+ deleteGroupRequest: EventEmitter<void>;
124
+ collapsed: boolean;
125
+ confirmDeleteGroup: boolean;
126
+ confirmDeleteKey: string | null;
127
+ /** Which flag key is currently in inline-edit mode */
128
+ editingKey: string | null;
129
+ editValue: string;
130
+ editType: FlagValueType$1;
131
+ editObjectEntries: ObjectFieldEntry[];
132
+ isDirty(key: string): boolean;
133
+ /** Enter inline-edit mode for a flag */
134
+ startEdit(flag: FlagEntry): void;
135
+ /** Commit the inline edit — emits change to parent, stays in view mode */
136
+ commitEdit(flag: FlagEntry): void;
137
+ /** Cancel inline edit without staging anything */
138
+ cancelEdit(): void;
139
+ displayValue(value: FlagValue): string;
140
+ typeBadgeClass(value: FlagValue): string;
141
+ typeLabel(value: FlagValue): string;
142
+ isBooleanFlag(value: FlagValue): boolean;
143
+ isObjectFlag(value: FlagValue): value is FlagObject;
144
+ onEditTypeChange(type: FlagValueType$1): void;
145
+ onNewFlagTypeChange(type: FlagValueType$1): void;
146
+ addEditObjectField(): void;
147
+ removeEditObjectField(index: number): void;
148
+ addNewObjectField(): void;
149
+ removeNewObjectField(index: number): void;
150
+ trackObjectField(index: number): number;
151
+ trackFlag(_index: number, flag: FlagEntry): string;
152
+ onDeleteFlag(key: string): void;
153
+ onDeleteGroup(): void;
154
+ private detectType;
155
+ private coerceValue;
156
+ private toObjectEntries;
157
+ private createObjectEntry;
158
+ static ɵfac: i0.ɵɵFactoryDeclaration<FlagGroupCardComponent, never>;
159
+ static ɵcmp: i0.ɵɵComponentDeclaration<FlagGroupCardComponent, "valar-flag-group-card", never, { "groupName": { "alias": "groupName"; "required": false; }; "flags": { "alias": "flags"; "required": false; }; "isNewGroup": { "alias": "isNewGroup"; "required": false; }; "dirtyKeys": { "alias": "dirtyKeys"; "required": false; }; "isAddingFlag": { "alias": "isAddingFlag"; "required": false; }; "newFlagKey": { "alias": "newFlagKey"; "required": false; }; "newFlagValue": { "alias": "newFlagValue"; "required": false; }; "newFlagType": { "alias": "newFlagType"; "required": false; }; "newFlagObjectEntries": { "alias": "newFlagObjectEntries"; "required": false; }; }, { "flagChanged": "flagChanged"; "revertFlag": "revertFlag"; "addFlagRequest": "addFlagRequest"; "cancelAddFlag": "cancelAddFlag"; "confirmAddFlag": "confirmAddFlag"; "newFlagKeyChange": "newFlagKeyChange"; "newFlagValueChange": "newFlagValueChange"; "newFlagTypeChange": "newFlagTypeChange"; "newFlagObjectEntriesChange": "newFlagObjectEntriesChange"; "deleteFlagRequest": "deleteFlagRequest"; "deleteGroupRequest": "deleteGroupRequest"; }, never, never, false, never>;
160
+ }
161
+
162
+ type FlagValueType = 'string' | 'boolean' | 'number' | 'object';
88
163
  interface ParsedGroup {
89
164
  name: string;
90
165
  flags: {
91
166
  key: string;
92
- value: FlagPrimitive;
167
+ value: FlagValue;
93
168
  }[];
94
169
  }
95
170
  declare class FeatureFlagsManagerComponent implements OnDestroy, OnChanges {
@@ -106,7 +181,8 @@ declare class FeatureFlagsManagerComponent implements OnDestroy, OnChanges {
106
181
  addingFlagToGroup: string | null;
107
182
  newFlagKey: string;
108
183
  newFlagValue: string;
109
- newFlagType: 'string' | 'boolean' | 'number';
184
+ newFlagType: FlagValueType;
185
+ newFlagObjectEntries: ObjectFieldEntry[];
110
186
  /**
111
187
  * Pending changes keyed by "group.key".
112
188
  * Stores old/new values so we can display a diff summary.
@@ -127,8 +203,8 @@ declare class FeatureFlagsManagerComponent implements OnDestroy, OnChanges {
127
203
  /** Called when a flag value is changed inline */
128
204
  onFlagChanged(groupName: string, event: {
129
205
  key: string;
130
- oldValue: FlagPrimitive;
131
- newValue: FlagPrimitive;
206
+ oldValue: FlagValue;
207
+ newValue: FlagValue;
132
208
  }): void;
133
209
  /** Revert a single flag's pending change */
134
210
  revertFlag(groupName: string, key: string): void;
@@ -158,68 +234,14 @@ declare class FeatureFlagsManagerComponent implements OnDestroy, OnChanges {
158
234
  static ɵcmp: i0.ɵɵComponentDeclaration<FeatureFlagsManagerComponent, "valar-feature-flags-manager", never, { "tenantId": { "alias": "tenantId"; "required": false; }; }, { "tenantIdChange": "tenantIdChange"; }, never, never, false, never>;
159
235
  }
160
236
 
161
- interface FlagEntry {
162
- key: string;
163
- value: FlagPrimitive;
164
- }
165
- interface FlagChangedEvent {
166
- key: string;
167
- oldValue: FlagPrimitive;
168
- newValue: FlagPrimitive;
169
- }
170
- declare class FlagGroupCardComponent {
171
- groupName: string;
172
- flags: FlagEntry[];
173
- isNewGroup: boolean;
174
- dirtyKeys: Set<string>;
175
- isAddingFlag: boolean;
176
- newFlagKey: string;
177
- newFlagValue: string;
178
- newFlagType: 'string' | 'boolean' | 'number';
179
- flagChanged: EventEmitter<FlagChangedEvent>;
180
- revertFlag: EventEmitter<string>;
181
- addFlagRequest: EventEmitter<void>;
182
- cancelAddFlag: EventEmitter<void>;
183
- confirmAddFlag: EventEmitter<void>;
184
- newFlagKeyChange: EventEmitter<string>;
185
- newFlagValueChange: EventEmitter<string>;
186
- newFlagTypeChange: EventEmitter<"string" | "number" | "boolean">;
187
- deleteFlagRequest: EventEmitter<string>;
188
- deleteGroupRequest: EventEmitter<void>;
189
- collapsed: boolean;
190
- confirmDeleteGroup: boolean;
191
- confirmDeleteKey: string | null;
192
- /** Which flag key is currently in inline-edit mode */
193
- editingKey: string | null;
194
- editValue: string;
195
- editType: 'string' | 'boolean' | 'number';
196
- isDirty(key: string): boolean;
197
- /** Enter inline-edit mode for a flag */
198
- startEdit(flag: FlagEntry): void;
199
- /** Commit the inline edit — emits change to parent, stays in view mode */
200
- commitEdit(flag: FlagEntry): void;
201
- /** Cancel inline edit without staging anything */
202
- cancelEdit(): void;
203
- displayValue(value: FlagPrimitive): string;
204
- typeBadgeClass(value: FlagPrimitive): string;
205
- typeLabel(value: FlagPrimitive): string;
206
- isBooleanFlag(value: FlagPrimitive): boolean;
207
- trackFlag(_index: number, flag: FlagEntry): string;
208
- onDeleteFlag(key: string): void;
209
- onDeleteGroup(): void;
210
- private detectType;
211
- private coerceValue;
212
- static ɵfac: i0.ɵɵFactoryDeclaration<FlagGroupCardComponent, never>;
213
- static ɵcmp: i0.ɵɵComponentDeclaration<FlagGroupCardComponent, "valar-flag-group-card", never, { "groupName": { "alias": "groupName"; "required": false; }; "flags": { "alias": "flags"; "required": false; }; "isNewGroup": { "alias": "isNewGroup"; "required": false; }; "dirtyKeys": { "alias": "dirtyKeys"; "required": false; }; "isAddingFlag": { "alias": "isAddingFlag"; "required": false; }; "newFlagKey": { "alias": "newFlagKey"; "required": false; }; "newFlagValue": { "alias": "newFlagValue"; "required": false; }; "newFlagType": { "alias": "newFlagType"; "required": false; }; }, { "flagChanged": "flagChanged"; "revertFlag": "revertFlag"; "addFlagRequest": "addFlagRequest"; "cancelAddFlag": "cancelAddFlag"; "confirmAddFlag": "confirmAddFlag"; "newFlagKeyChange": "newFlagKeyChange"; "newFlagValueChange": "newFlagValueChange"; "newFlagTypeChange": "newFlagTypeChange"; "deleteFlagRequest": "deleteFlagRequest"; "deleteGroupRequest": "deleteGroupRequest"; }, never, never, false, never>;
214
- }
215
-
216
237
  declare class ChangesSummaryModalComponent {
217
238
  changes: PendingChange[];
218
239
  tenantId: string;
219
240
  confirm: EventEmitter<void>;
220
241
  dismiss: EventEmitter<void>;
221
- displayValue(value: FlagPrimitive): string;
222
- typeLabel(value: FlagPrimitive): string;
242
+ displayValue(value: FlagValue): string;
243
+ typeLabel(value: FlagValue): string;
244
+ private isObjectValue;
223
245
  static ɵfac: i0.ɵɵFactoryDeclaration<ChangesSummaryModalComponent, never>;
224
246
  static ɵcmp: i0.ɵɵComponentDeclaration<ChangesSummaryModalComponent, "valar-changes-summary-modal", never, { "changes": { "alias": "changes"; "required": false; }; "tenantId": { "alias": "tenantId"; "required": false; }; }, { "confirm": "confirm"; "dismiss": "dismiss"; }, never, never, false, never>;
225
247
  }
@@ -284,4 +306,4 @@ declare class MockFeatureFlagsApiService {
284
306
  }
285
307
 
286
308
  export { ChangesSummaryModalComponent, FEATURE_FLAGS_CONFIG, FeatureFlagsApiService, FeatureFlagsManagerComponent, FeatureFlagsModule, FlagGroupCardComponent, MockFeatureFlagsApiService, RESERVED_KEYS };
287
- export type { FeatureFlagsConfig, FeatureFlagsDocument, FlagChangedEvent, FlagEntry, FlagGroup, FlagPrimitive, ParsedGroup, PendingChange, UpsertFlagsPayload };
309
+ export type { FeatureFlagsConfig, FeatureFlagsDocument, FlagChangedEvent, FlagEntry, FlagGroup, FlagObject, FlagValue, ObjectFieldEntry, ParsedGroup, PendingChange, UpsertFlagsPayload };