@flusys/ng-shared 8.1.4 → 9.1.0-rc.1
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/README.md +42 -1
- package/fesm2022/flusys-ng-shared.mjs +461 -115
- package/fesm2022/flusys-ng-shared.mjs.map +1 -1
- package/package.json +4 -3
- package/types/flusys-ng-shared.d.ts +124 -5
package/package.json
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flusys/ng-shared",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "9.1.0-rc.1",
|
|
4
4
|
"description": "Shared components and utilities for FLUSYS Angular packages",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"peerDependencies": {
|
|
7
7
|
"@angular/common": ">=22.0.0",
|
|
8
8
|
"@angular/core": ">=22.0.0",
|
|
9
9
|
"@angular/forms": ">=22.0.0",
|
|
10
|
+
"@angular/platform-browser": ">=22.0.0",
|
|
10
11
|
"@angular/router": ">=22.0.0",
|
|
11
|
-
"@flusys/ng-core": ">=
|
|
12
|
-
"@flusys/ng-ui": ">=
|
|
12
|
+
"@flusys/ng-core": ">=9.1.0-rc.1",
|
|
13
|
+
"@flusys/ng-ui": ">=9.1.0-rc.1",
|
|
13
14
|
"rxjs": "^7.8.0"
|
|
14
15
|
},
|
|
15
16
|
"sideEffects": false,
|
|
@@ -8,8 +8,8 @@ import * as _flusys_ng_shared from '@flusys/ng-shared';
|
|
|
8
8
|
import { ServiceName } from '@flusys/ng-core';
|
|
9
9
|
import { ControlValueAccessor } from '@angular/forms';
|
|
10
10
|
import { FormValueControl } from '@angular/forms/signals';
|
|
11
|
+
import { TreeNode, CheckboxChangeEvent } from '@flusys/ng-ui';
|
|
11
12
|
import * as _angular_platform_browser from '@angular/platform-browser';
|
|
12
|
-
import { CheckboxChangeEvent } from '@flusys/ng-ui';
|
|
13
13
|
|
|
14
14
|
declare const SHARED_MESSAGES: Record<string, string>;
|
|
15
15
|
|
|
@@ -111,6 +111,27 @@ declare const FORM_RESULT_PERMISSIONS: {
|
|
|
111
111
|
readonly UPDATE: "form-result.update";
|
|
112
112
|
readonly DELETE: "form-result.delete";
|
|
113
113
|
};
|
|
114
|
+
declare const ENTITY_DEFINITION_PERMISSIONS: {
|
|
115
|
+
readonly CREATE: "entity_builder.entity_definition.create";
|
|
116
|
+
readonly READ: "entity_builder.entity_definition.read";
|
|
117
|
+
readonly UPDATE: "entity_builder.entity_definition.update";
|
|
118
|
+
readonly DELETE: "entity_builder.entity_definition.delete";
|
|
119
|
+
};
|
|
120
|
+
declare const FIELD_DEFINITION_PERMISSIONS: {
|
|
121
|
+
readonly READ: "entity_builder.field_definition.read";
|
|
122
|
+
readonly UPDATE: "entity_builder.field_definition.update";
|
|
123
|
+
};
|
|
124
|
+
declare const FLOW_DEFINITION_PERMISSIONS: {
|
|
125
|
+
readonly CREATE: "entity_builder.flow_definition.create";
|
|
126
|
+
readonly READ: "entity_builder.flow_definition.read";
|
|
127
|
+
readonly UPDATE: "entity_builder.flow_definition.update";
|
|
128
|
+
readonly DELETE: "entity_builder.flow_definition.delete";
|
|
129
|
+
readonly TEST: "entity_builder.flow_definition.test";
|
|
130
|
+
/** Needed to save a flow that runs as the system (bypassing per-entity permissions). */
|
|
131
|
+
readonly SYSTEM: "entity_builder.flow_definition.system";
|
|
132
|
+
/** Needed to save a flow containing a code node (sandboxed JavaScript). */
|
|
133
|
+
readonly CODE: "entity_builder.flow_definition.code";
|
|
134
|
+
};
|
|
114
135
|
declare const EVENT_PERMISSIONS: {
|
|
115
136
|
readonly CREATE: "event.create";
|
|
116
137
|
readonly READ: "event.read";
|
|
@@ -327,6 +348,8 @@ interface ILoggedUserInfo {
|
|
|
327
348
|
interface IDropDown {
|
|
328
349
|
label: string;
|
|
329
350
|
value: string;
|
|
351
|
+
/** Optional secondary line rendered below the label (e.g. email under a user's name) when two options share a label. */
|
|
352
|
+
subLabel?: string;
|
|
330
353
|
}
|
|
331
354
|
/**
|
|
332
355
|
* Delete operation types
|
|
@@ -503,6 +526,12 @@ interface IFilterData {
|
|
|
503
526
|
extraKey?: string[];
|
|
504
527
|
}
|
|
505
528
|
|
|
529
|
+
/** A translatable message from the backend: `messageKey` is looked up and `{{name}}` is filled from `messageVariables`, which may themselves be message references. */
|
|
530
|
+
interface IMessageRef {
|
|
531
|
+
messageKey: string;
|
|
532
|
+
messageVariables?: Record<string, unknown>;
|
|
533
|
+
}
|
|
534
|
+
|
|
506
535
|
/**
|
|
507
536
|
* Auth State Provider Interface
|
|
508
537
|
*
|
|
@@ -618,6 +647,25 @@ interface IProfilePermissionProvider {
|
|
|
618
647
|
getUserRoles(userId: string, branchId?: string): Observable<ISingleResponse<IProfileRoleInfo[]>>;
|
|
619
648
|
getUserActions(userId: string, branchId?: string): Observable<ISingleResponse<IProfileActionInfo[]>>;
|
|
620
649
|
}
|
|
650
|
+
/** A permission action (IAM action code) for pickers */
|
|
651
|
+
interface IActionBasicInfo {
|
|
652
|
+
id: string;
|
|
653
|
+
name: string;
|
|
654
|
+
/** Null for a grouping action that only nests others. */
|
|
655
|
+
code: string | null;
|
|
656
|
+
description?: string | null;
|
|
657
|
+
parentId?: string | null;
|
|
658
|
+
serial?: number | null;
|
|
659
|
+
}
|
|
660
|
+
/**
|
|
661
|
+
* Action Provider Interface - Lists the permission actions a feature package can require,
|
|
662
|
+
* without depending on ng-iam directly.
|
|
663
|
+
*/
|
|
664
|
+
interface IActionProvider {
|
|
665
|
+
getActions(): Observable<ISingleResponse<IActionBasicInfo[]>>;
|
|
666
|
+
/** False when the backing service is switched off, so pickers fall back to typing codes. Defaults to available. */
|
|
667
|
+
isAvailable?(): boolean;
|
|
668
|
+
}
|
|
621
669
|
/**
|
|
622
670
|
* File Provider Interface - Provides file loading and upload functionality.
|
|
623
671
|
* Used by FileSelectorDialogComponent to load files and handle uploads.
|
|
@@ -719,7 +767,9 @@ declare class TranslateService {
|
|
|
719
767
|
private readonly localizationState;
|
|
720
768
|
private readonly registry;
|
|
721
769
|
translate(key: string, params?: Record<string, string | unknown>): string;
|
|
770
|
+
translateRef(ref: IMessageRef): string;
|
|
722
771
|
translateSignal(key: string, params?: Record<string, string | number>): Signal<string>;
|
|
772
|
+
private isMessageRef;
|
|
723
773
|
private interpolate;
|
|
724
774
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TranslateService, never>;
|
|
725
775
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<TranslateService>;
|
|
@@ -835,7 +885,7 @@ declare class PreventDefaultDirective {
|
|
|
835
885
|
|
|
836
886
|
declare class TranslatePipe implements PipeTransform {
|
|
837
887
|
private readonly translateAdapter;
|
|
838
|
-
transform(key: string | null | undefined, params?: Record<string, string | number> | null, fallback?: string): string;
|
|
888
|
+
transform(key: string | IMessageRef | null | undefined, params?: Record<string, string | number> | null, fallback?: string): string;
|
|
839
889
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TranslatePipe, never>;
|
|
840
890
|
static ɵpipe: _angular_core.ɵɵPipeDeclaration<TranslatePipe, "translate", true>;
|
|
841
891
|
}
|
|
@@ -852,6 +902,11 @@ declare class TranslatePipe implements PipeTransform {
|
|
|
852
902
|
* ```
|
|
853
903
|
*/
|
|
854
904
|
declare const SKIP_ERROR_TOAST: HttpContextToken<boolean>;
|
|
905
|
+
/**
|
|
906
|
+
* Whether errorCatchingInterceptor already showed this failure as a toast, so a caller's own
|
|
907
|
+
* catch block adds one only for failures the user has not been told about yet.
|
|
908
|
+
*/
|
|
909
|
+
declare function isErrorToastShown(error: unknown): boolean;
|
|
855
910
|
/**
|
|
856
911
|
* Error Catching Interceptor
|
|
857
912
|
* Displays error messages for failed HTTP requests using backend response.
|
|
@@ -926,7 +981,7 @@ declare abstract class ApiResourceService<DtoT, InterfaceT> implements IApiServi
|
|
|
926
981
|
nextPage(): void;
|
|
927
982
|
resetPagination(): void;
|
|
928
983
|
reload(): void;
|
|
929
|
-
|
|
984
|
+
protected post<R>(endpoint: string, body: unknown, params?: HttpParams): Promise<R>;
|
|
930
985
|
insert(dto: DtoT): Promise<ISingleResponse<InterfaceT>>;
|
|
931
986
|
insertMany(dtos: DtoT[]): Promise<IBulkResponse<InterfaceT>>;
|
|
932
987
|
findById(id: string, select?: string[]): Promise<ISingleResponse<InterfaceT>>;
|
|
@@ -985,6 +1040,56 @@ declare function provideValueAccessor<T extends new (...args: unknown[]) => Cont
|
|
|
985
1040
|
multi: boolean;
|
|
986
1041
|
};
|
|
987
1042
|
|
|
1043
|
+
/** Shared action loading for the single and multi permission pickers. */
|
|
1044
|
+
declare abstract class BaseActionSelectComponent {
|
|
1045
|
+
private readonly provider;
|
|
1046
|
+
readonly placeholder: _angular_core.InputSignal<string>;
|
|
1047
|
+
readonly inputId: _angular_core.InputSignal<string>;
|
|
1048
|
+
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
1049
|
+
readonly hasProvider: boolean;
|
|
1050
|
+
readonly actions: _angular_core.ResourceRef<IActionBasicInfo[] | undefined>;
|
|
1051
|
+
/** Picker mode; typing codes is the fallback when there is no provider or the actions could not be loaded. */
|
|
1052
|
+
readonly useSelect: _angular_core.Signal<boolean>;
|
|
1053
|
+
private readonly actionTree;
|
|
1054
|
+
private readonly knownCodes;
|
|
1055
|
+
/** The action tree plus any saved code that is not (or no longer) an action, so the selection still shows. */
|
|
1056
|
+
protected treeWith(saved: string[]): TreeNode[];
|
|
1057
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<BaseActionSelectComponent, never>;
|
|
1058
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BaseActionSelectComponent, never, never, { "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1059
|
+
}
|
|
1060
|
+
|
|
1061
|
+
/**
|
|
1062
|
+
* Picks several permission action codes from the action tree of ACTION_PROVIDER (wired by ng-iam);
|
|
1063
|
+
* without an available provider, or when loading fails, it falls back to typing codes as chips (Enter adds one).
|
|
1064
|
+
*
|
|
1065
|
+
* @example
|
|
1066
|
+
* <lib-action-multi-select [(value)]="actionGroups" inputId="actionGroups" />
|
|
1067
|
+
*/
|
|
1068
|
+
declare class ActionMultiSelectComponent extends BaseActionSelectComponent {
|
|
1069
|
+
readonly value: _angular_core.ModelSignal<string[]>;
|
|
1070
|
+
readonly draft: _angular_core.WritableSignal<string>;
|
|
1071
|
+
readonly options: _angular_core.Signal<TreeNode<unknown>[]>;
|
|
1072
|
+
add(event: Event): void;
|
|
1073
|
+
remove(code: string): void;
|
|
1074
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ActionMultiSelectComponent, never>;
|
|
1075
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ActionMultiSelectComponent, "lib-action-multi-select", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
|
|
1076
|
+
}
|
|
1077
|
+
|
|
1078
|
+
/**
|
|
1079
|
+
* Picks a permission action code from the action tree of ACTION_PROVIDER (wired by ng-iam);
|
|
1080
|
+
* without an available provider, or when loading fails, it falls back to a free-text code input.
|
|
1081
|
+
*
|
|
1082
|
+
* @example
|
|
1083
|
+
* <lib-action-select [(value)]="permissionCode" inputId="permission" [placeholder]="defaultCode" />
|
|
1084
|
+
*/
|
|
1085
|
+
declare class ActionSelectComponent extends BaseActionSelectComponent {
|
|
1086
|
+
readonly value: _angular_core.ModelSignal<string | null>;
|
|
1087
|
+
readonly showClear: _angular_core.InputSignal<boolean>;
|
|
1088
|
+
readonly options: _angular_core.Signal<TreeNode<unknown>[]>;
|
|
1089
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ActionSelectComponent, never>;
|
|
1090
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ActionSelectComponent, "lib-action-select", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "showClear": { "alias": "showClear"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
|
|
1091
|
+
}
|
|
1092
|
+
|
|
988
1093
|
declare class BaseFormTemplateDirective {
|
|
989
1094
|
readonly key: _angular_core.InputSignal<string>;
|
|
990
1095
|
readonly templateRef: TemplateRef<any>;
|
|
@@ -1614,6 +1719,14 @@ declare const PROFILE_PERMISSION_PROVIDER: InjectionToken<IProfilePermissionProv
|
|
|
1614
1719
|
* ]
|
|
1615
1720
|
*/
|
|
1616
1721
|
declare const FILE_PROVIDER: InjectionToken<IFileProvider>;
|
|
1722
|
+
/**
|
|
1723
|
+
* Action Provider Token
|
|
1724
|
+
*
|
|
1725
|
+
* Lists permission actions for pickers such as `lib-action-select`.
|
|
1726
|
+
* Optional - if not configured, permission pickers fall back to a free-text code input.
|
|
1727
|
+
* Use with `inject(ACTION_PROVIDER, { optional: true })`.
|
|
1728
|
+
*/
|
|
1729
|
+
declare const ACTION_PROVIDER: InjectionToken<IActionProvider>;
|
|
1617
1730
|
|
|
1618
1731
|
/**
|
|
1619
1732
|
* Permission Guard - Single permission or ILogicNode check.
|
|
@@ -1716,5 +1829,11 @@ interface ScrollPaginationConfig {
|
|
|
1716
1829
|
*/
|
|
1717
1830
|
declare function checkScrollPagination(event: Event, config: ScrollPaginationConfig): IPagination | null;
|
|
1718
1831
|
|
|
1719
|
-
|
|
1720
|
-
|
|
1832
|
+
/** The translatable reason in a failed HTTP call: the backend's `messageKey`/`messageVariables`, or `fallbackKey` when the response carries none. */
|
|
1833
|
+
declare function errorToMessageRef(error: unknown, fallbackKey?: string): IMessageRef;
|
|
1834
|
+
|
|
1835
|
+
/** Escapes user-authored text interpolated into markup rendered via [innerHTML] (e.g. confirm dialog messages). */
|
|
1836
|
+
declare function escapeHtml(value: string): string;
|
|
1837
|
+
|
|
1838
|
+
export { ACTION_PERMISSIONS, ACTION_PROVIDER, AUTH_STATE_PROVIDER, ActionMultiSelectComponent, ActionSelectComponent, ApiResourceService, ApiResourceService as ApiService, BRANCH_PERMISSIONS, BaseActionSelectComponent, BaseFormComponent, BaseFormControl, BaseFormTemplateDirective, BaseListComponent, BaseListTemplateDirective, BaseUserSelectComponent, COMPANY_ACTION_PERMISSIONS, COMPANY_API_PROVIDER, COMPANY_PERMISSIONS, CookieService, EMAIL_CONFIG_PERMISSIONS, EMAIL_TEMPLATE_PERMISSIONS, ENTITY_DEFINITION_PERMISSIONS, EVENT_PERMISSIONS, EditModeElementChangerDirective, FIELD_DEFINITION_PERMISSIONS, FILE_PERMISSIONS, FILE_PROVIDER, FILE_TYPE_FILTERS, FLOW_DEFINITION_PERMISSIONS, FOLDER_PERMISSIONS, FORM_PERMISSIONS, FORM_RESULT_PERMISSIONS, FaviconService, FileSelectorDialogComponent, FileUploaderComponent, FileUrlService, HasPermissionDirective, IconComponent, IconTypeEnum, InlineSvgComponent, IsEmptyImageDirective, LANGUAGE_PERMISSIONS, LazyMultiSelectComponent, LazySelectComponent, NOTIFICATION_PERMISSIONS, PERMISSIONS, PROFILE_PERMISSION_PROVIDER, PermissionValidatorService, PlatformService, PreventDefaultDirective, ROLE_ACTION_PERMISSIONS, ROLE_PERMISSIONS, RouterTabsComponent, SHARED_MESSAGES, SKIP_ERROR_TOAST, SOCIAL_AUTH_CONFIG_PERMISSIONS, STORAGE_CONFIG_PERMISSIONS, TRANSLATION_KEY_PERMISSIONS, TRANSLATION_PERMISSIONS, TranslatePipe, TranslateService, UPLOAD_CONFIG_PERMISSIONS, USER_ACTION_PERMISSIONS, USER_PERMISSIONS, USER_PERMISSION_PROVIDER, USER_PROVIDER, USER_ROLE_PERMISSIONS, UserMultiSelectComponent, UserSelectComponent, allPermissionsGuard, anyPermissionGuard, authenticatedGuard, checkScrollPagination, errorCatchingInterceptor, errorToMessageRef, escapeHtml, evaluateLogicNode, evaluatePermission, formatFileSize, formatInTimezone, getAcceptString, getFileIconClass, getUserTimezone, hasAllPermissions, hasAnyPermission, hasPermission, isErrorToastShown, isFileTypeAllowed, localToUtc, permissionGuard, provideValueAccessor, resolveTranslationModule, utcToLocal };
|
|
1839
|
+
export type { ActionSeverity, DeleteType, FilesResponseDto, FormFieldType, IActionBasicInfo, IActionNode, IActionProvider, IActivatable, IApiService, IAuthStateProvider, IBaseEntity, IBranchBasicInfo, IBulkMeta, IBulkResponse, ICompanyApiProvider, ICompanyBasicInfo, IDeleteData, IDropDown, IFileBasicInfo, IFileProvider, IFileSelectFilter, IFileUploadOptions, IFilter, IFilterData, IFolderBasicInfo, IFormField, IFormSelectOption, IGroupNode, IListResponse, ILoggedUserInfo, ILogicNode, IMessageRef, IMessageResponse, IOrderable, IPagination, IPaginationMeta, IProfileActionInfo, IProfilePermissionProvider, IProfileRoleInfo, IRequestMeta, IResolverModuleConfig, ISelectFilter, ISingleResponse, ISoftDeletable, ISort, IStorageConfigBasicInfo, ITableAction, ITableColumn, ITagConfig, ITimestampable, IUploadedFile, IUserBasicInfo, IUserBranchPermission, IUserCompanyInfo, IUserPermissionProvider, IUserProvider, IUserSelectFilter, LoadUsersFn, PermissionCode, RouterTabItem, ScrollPaginationConfig, TableColumnType, UploadFileFn, UploadMultipleFilesFn };
|