@flusys/ng-shared 8.1.3 → 8.1.4

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,6 +1,6 @@
1
1
  {
2
2
  "name": "@flusys/ng-shared",
3
- "version": "8.1.3",
3
+ "version": "8.1.4",
4
4
  "description": "Shared components and utilities for FLUSYS Angular packages",
5
5
  "license": "MIT",
6
6
  "peerDependencies": {
@@ -8,8 +8,8 @@
8
8
  "@angular/core": ">=22.0.0",
9
9
  "@angular/forms": ">=22.0.0",
10
10
  "@angular/router": ">=22.0.0",
11
- "@flusys/ng-core": ">=8.1.3",
12
- "@flusys/ng-ui": ">=8.1.3",
11
+ "@flusys/ng-core": ">=8.1.4",
12
+ "@flusys/ng-ui": ">=8.1.4",
13
13
  "rxjs": "^7.8.0"
14
14
  },
15
15
  "sideEffects": false,
@@ -1195,11 +1195,13 @@ declare class FileSelectorDialogComponent {
1195
1195
  readonly searchTerm: _angular_core.WritableSignal<string>;
1196
1196
  readonly folders: _angular_core.WritableSignal<IFolderBasicInfo[]>;
1197
1197
  readonly selectedFolderId: _angular_core.WritableSignal<string | null>;
1198
+ readonly selectedFolderObject: _angular_core.WritableSignal<IFolderBasicInfo | null>;
1198
1199
  readonly foldersLoading: _angular_core.WritableSignal<boolean>;
1199
1200
  readonly foldersPagination: _angular_core.WritableSignal<IPagination>;
1200
1201
  readonly foldersTotal: _angular_core.WritableSignal<number | undefined>;
1201
1202
  readonly storageConfigs: _angular_core.WritableSignal<IStorageConfigBasicInfo[]>;
1202
1203
  readonly selectedStorageConfigId: _angular_core.WritableSignal<string | null>;
1204
+ readonly selectedStorageConfigObject: _angular_core.WritableSignal<IStorageConfigBasicInfo | null>;
1203
1205
  readonly storageConfigsLoading: _angular_core.WritableSignal<boolean>;
1204
1206
  readonly storageConfigsPagination: _angular_core.WritableSignal<IPagination>;
1205
1207
  readonly storageConfigsTotal: _angular_core.WritableSignal<number | undefined>;
@@ -1308,11 +1310,13 @@ declare class InlineSvgComponent {
1308
1310
  declare class LazyMultiSelectComponent extends BaseFormControl<string[] | null> implements OnDestroy {
1309
1311
  private readonly document;
1310
1312
  private readonly appRef;
1313
+ private readonly overlayStack;
1311
1314
  private readonly translateAdapter;
1312
1315
  private readonly onDocumentClickBound;
1313
1316
  readonly pSelectRef: _angular_core.Signal<ElementRef<HTMLDivElement>>;
1314
1317
  readonly overlayTemplate: _angular_core.Signal<TemplateRef<unknown>>;
1315
1318
  private overlayViewRef;
1319
+ private detachOverlayPosition;
1316
1320
  readonly placeHolder: _angular_core.InputSignal<string>;
1317
1321
  readonly showClear: _angular_core.InputSignal<boolean>;
1318
1322
  readonly displayPlaceholder: _angular_core.Signal<string>;
@@ -1321,7 +1325,18 @@ declare class LazyMultiSelectComponent extends BaseFormControl<string[] | null>
1321
1325
  readonly total: _angular_core.InputSignal<number | undefined>;
1322
1326
  readonly pagination: _angular_core.InputSignal<IPagination>;
1323
1327
  readonly selectDataList: _angular_core.InputSignal<IDropDown[]>;
1328
+ /**
1329
+ * Full option objects for the currently selected values, supplied by the
1330
+ * caller (or a subclass like UserMultiSelectComponent). Pinned into
1331
+ * `mergedDataList` (deduped by `value`) so chips/labels/checkboxes survive
1332
+ * a later search/page reload that replaces `selectDataList()` without the
1333
+ * selection having changed. This component renders its own overlay list
1334
+ * (it does not build on f-multiselect), so the merge has to happen here.
1335
+ */
1336
+ readonly selectedObjects: _angular_core.InputSignal<IDropDown[]>;
1324
1337
  readonly value: _angular_core.ModelSignal<string[] | null>;
1338
+ private readonly selectedObjectEntries;
1339
+ readonly mergedDataList: _angular_core.Signal<IDropDown[]>;
1325
1340
  readonly onSearch: _angular_core.OutputEmitterRef<string>;
1326
1341
  readonly onPagination: _angular_core.OutputEmitterRef<IPagination>;
1327
1342
  readonly searchTerm: _angular_core.WritableSignal<string>;
@@ -1343,7 +1358,7 @@ declare class LazyMultiSelectComponent extends BaseFormControl<string[] | null>
1343
1358
  clear(event: Event): void;
1344
1359
  private t;
1345
1360
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<LazyMultiSelectComponent, never>;
1346
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<LazyMultiSelectComponent, "lib-lazy-multi-select", never, { "placeHolder": { "alias": "placeHolder"; "required": false; "isSignal": true; }; "showClear": { "alias": "showClear"; "required": false; "isSignal": true; }; "isEditMode": { "alias": "isEditMode"; "required": true; "isSignal": true; }; "isLoading": { "alias": "isLoading"; "required": true; "isSignal": true; }; "total": { "alias": "total"; "required": true; "isSignal": true; }; "pagination": { "alias": "pagination"; "required": true; "isSignal": true; }; "selectDataList": { "alias": "selectDataList"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "onSearch": "onSearch"; "onPagination": "onPagination"; }, never, never, true, never>;
1361
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<LazyMultiSelectComponent, "lib-lazy-multi-select", never, { "placeHolder": { "alias": "placeHolder"; "required": false; "isSignal": true; }; "showClear": { "alias": "showClear"; "required": false; "isSignal": true; }; "isEditMode": { "alias": "isEditMode"; "required": true; "isSignal": true; }; "isLoading": { "alias": "isLoading"; "required": true; "isSignal": true; }; "total": { "alias": "total"; "required": true; "isSignal": true; }; "pagination": { "alias": "pagination"; "required": true; "isSignal": true; }; "selectDataList": { "alias": "selectDataList"; "required": true; "isSignal": true; }; "selectedObjects": { "alias": "selectedObjects"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "onSearch": "onSearch"; "onPagination": "onPagination"; }, never, never, true, never>;
1347
1362
  }
1348
1363
 
1349
1364
  /**
@@ -1371,6 +1386,13 @@ declare class LazySelectComponent extends BaseFormControl<string | null> {
1371
1386
  readonly total: _angular_core.InputSignal<number | undefined>;
1372
1387
  readonly pagination: _angular_core.InputSignal<IPagination>;
1373
1388
  readonly selectDataList: _angular_core.InputSignal<IDropDown[]>;
1389
+ /**
1390
+ * Full option object for the current value, supplied by the caller (or a
1391
+ * subclass like UserSelectComponent). Forwarded to f-select's own
1392
+ * `selectedObject` input so the label survives a later search/page reload
1393
+ * that replaces `selectDataList()` without the value having changed.
1394
+ */
1395
+ readonly selectedObject: _angular_core.InputSignal<unknown>;
1374
1396
  readonly value: _angular_core.ModelSignal<string | null>;
1375
1397
  readonly onSearch: _angular_core.OutputEmitterRef<string>;
1376
1398
  readonly onPagination: _angular_core.OutputEmitterRef<IPagination>;
@@ -1381,7 +1403,7 @@ declare class LazySelectComponent extends BaseFormControl<string | null> {
1381
1403
  showPanel(): void;
1382
1404
  private t;
1383
1405
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<LazySelectComponent, never>;
1384
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<LazySelectComponent, "lib-lazy-select", never, { "placeHolder": { "alias": "placeHolder"; "required": false; "isSignal": true; }; "showClear": { "alias": "showClear"; "required": false; "isSignal": true; }; "optionLabel": { "alias": "optionLabel"; "required": true; "isSignal": true; }; "optionValue": { "alias": "optionValue"; "required": true; "isSignal": true; }; "isEditMode": { "alias": "isEditMode"; "required": true; "isSignal": true; }; "isLoading": { "alias": "isLoading"; "required": true; "isSignal": true; }; "total": { "alias": "total"; "required": true; "isSignal": true; }; "pagination": { "alias": "pagination"; "required": true; "isSignal": true; }; "selectDataList": { "alias": "selectDataList"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "onSearch": "onSearch"; "onPagination": "onPagination"; }, never, never, true, never>;
1406
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<LazySelectComponent, "lib-lazy-select", never, { "placeHolder": { "alias": "placeHolder"; "required": false; "isSignal": true; }; "showClear": { "alias": "showClear"; "required": false; "isSignal": true; }; "optionLabel": { "alias": "optionLabel"; "required": true; "isSignal": true; }; "optionValue": { "alias": "optionValue"; "required": true; "isSignal": true; }; "isEditMode": { "alias": "isEditMode"; "required": true; "isSignal": true; }; "isLoading": { "alias": "isLoading"; "required": true; "isSignal": true; }; "total": { "alias": "total"; "required": true; "isSignal": true; }; "pagination": { "alias": "pagination"; "required": true; "isSignal": true; }; "selectDataList": { "alias": "selectDataList"; "required": true; "isSignal": true; }; "selectedObject": { "alias": "selectedObject"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "onSearch": "onSearch"; "onPagination": "onPagination"; }, never, never, true, never>;
1385
1407
  }
1386
1408
 
1387
1409
  interface RouterTabItem {
@@ -1423,6 +1445,17 @@ declare abstract class BaseUserSelectComponent {
1423
1445
  readonly pagination: _angular_core.WritableSignal<IPagination>;
1424
1446
  readonly searchTerm: _angular_core.WritableSignal<string>;
1425
1447
  readonly dropdownUsers: _angular_core.Signal<IDropDown[]>;
1448
+ private readonly _knownUsers;
1449
+ protected toDropDown(user: IUserBasicInfo): IDropDown;
1450
+ /** Resolves a single previously-seen user id, even if it's no longer in `users()`. */
1451
+ protected resolveKnownUser(id: string | null | undefined): IDropDown | null;
1452
+ /** Resolves multiple previously-seen user ids, even if no longer in `users()`. */
1453
+ protected resolveKnownUsers(ids: string[]): IDropDown[];
1454
+ /** Same as resolveKnownUser, but returns the raw IUserBasicInfo (for outputs like userSelected). */
1455
+ protected resolveKnownUserRaw(id: string | null | undefined): IUserBasicInfo | null;
1456
+ /** Same as resolveKnownUsers, but returns the raw IUserBasicInfo[] (for outputs like usersSelected). */
1457
+ protected resolveKnownUsersRaw(ids: string[]): IUserBasicInfo[];
1458
+ private rememberUsers;
1426
1459
  readonly displayPlaceholder: _angular_core.Signal<string>;
1427
1460
  constructor();
1428
1461
  /** Setup effect to track value changes and emit selection events */
@@ -1471,6 +1504,7 @@ declare class UserMultiSelectComponent extends BaseUserSelectComponent {
1471
1504
  readonly showClear: _angular_core.InputSignal<boolean>;
1472
1505
  readonly value: _angular_core.ModelSignal<string[] | null>;
1473
1506
  readonly usersSelected: _angular_core.OutputEmitterRef<IUserBasicInfo[]>;
1507
+ readonly selectedObjects: _angular_core.Signal<_flusys_ng_shared.IDropDown[]>;
1474
1508
  protected setupValueEffect(): void;
1475
1509
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UserMultiSelectComponent, never>;
1476
1510
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<UserMultiSelectComponent, "lib-user-multi-select", never, { "showClear": { "alias": "showClear"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "usersSelected": "usersSelected"; }, never, never, true, never>;
@@ -1507,6 +1541,7 @@ declare class UserSelectComponent extends BaseUserSelectComponent {
1507
1541
  readonly showClear: _angular_core.InputSignal<boolean>;
1508
1542
  readonly value: _angular_core.ModelSignal<string | null>;
1509
1543
  readonly userSelected: _angular_core.OutputEmitterRef<IUserBasicInfo | null>;
1544
+ readonly selectedObject: _angular_core.Signal<_flusys_ng_shared.IDropDown | null>;
1510
1545
  protected setupValueEffect(): void;
1511
1546
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UserSelectComponent, never>;
1512
1547
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<UserSelectComponent, "lib-user-select", never, { "showClear": { "alias": "showClear"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "userSelected": "userSelected"; }, never, never, true, never>;