@flusys/ng-shared 5.2.0 → 5.3.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flusys/ng-shared",
3
- "version": "5.2.0",
3
+ "version": "5.3.1",
4
4
  "description": "Shared components and utilities for FLUSYS Angular packages",
5
5
  "license": "MIT",
6
6
  "peerDependencies": {
@@ -8,7 +8,7 @@
8
8
  "@angular/core": ">=21.0.0",
9
9
  "@angular/forms": ">=21.0.0",
10
10
  "@angular/router": ">=21.0.0",
11
- "@flusys/ng-core": ">=5.2.0",
11
+ "@flusys/ng-core": ">=5.3.1",
12
12
  "@primeuix/themes": ">=1.0.0",
13
13
  "primeicons": ">=7.0.0",
14
14
  "primeng": ">=21.0.0",
@@ -1,7 +1,7 @@
1
1
  import * as rxjs from 'rxjs';
2
2
  import { Observable } from 'rxjs';
3
3
  import * as _angular_core from '@angular/core';
4
- import { Signal, PipeTransform, ResourceRef, ResourceStatus, Injector, model, OnDestroy, ElementRef, TemplateRef, DestroyRef, InjectionToken } from '@angular/core';
4
+ import { Signal, PipeTransform, ResourceRef, ResourceStatus, Injector, model, TemplateRef, OnDestroy, ElementRef, DestroyRef, InjectionToken } from '@angular/core';
5
5
  import { HttpContextToken, HttpRequest, HttpHandlerFn, HttpEvent, HttpClient, HttpParams, HttpHeaders } from '@angular/common/http';
6
6
  import * as i3 from '@angular/router';
7
7
  import { ResolveFn, CanActivateFn } from '@angular/router';
@@ -1010,6 +1010,186 @@ declare function provideValueAccessor<T extends new (...args: unknown[]) => Cont
1010
1010
  multi: boolean;
1011
1011
  };
1012
1012
 
1013
+ type TableColumnType = 'text' | 'date' | 'tag' | 'boolean' | 'number' | 'custom';
1014
+ type ActionSeverity = 'success' | 'info' | 'warn' | 'danger' | 'secondary' | 'contrast';
1015
+ interface ITagConfig {
1016
+ label?: string;
1017
+ severity: 'success' | 'danger' | 'warn' | 'info' | 'secondary' | 'contrast';
1018
+ }
1019
+ interface ITableColumn {
1020
+ field: string;
1021
+ header: string;
1022
+ type?: TableColumnType;
1023
+ width?: string;
1024
+ minWidth?: string;
1025
+ align?: 'left' | 'center' | 'right';
1026
+ tagMap?: Record<string, ITagConfig>;
1027
+ dateFormat?: string;
1028
+ truncate?: number;
1029
+ hidden?: boolean;
1030
+ }
1031
+ interface ITableAction<T = unknown> {
1032
+ icon: string;
1033
+ tooltip?: string;
1034
+ severity?: ActionSeverity;
1035
+ show?: (item: T) => boolean;
1036
+ disabled?: (item: T) => boolean;
1037
+ handler: (item: T) => void;
1038
+ }
1039
+
1040
+ declare class BaseListTemplateDirective {
1041
+ readonly key: _angular_core.InputSignal<string>;
1042
+ readonly templateRef: TemplateRef<any>;
1043
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BaseListTemplateDirective, never>;
1044
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BaseListTemplateDirective, "ng-template[baseListTemplate]", never, { "key": { "alias": "baseListTemplate"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
1045
+ }
1046
+
1047
+ declare class BaseListComponent {
1048
+ private readonly translateAdapter;
1049
+ private readonly router;
1050
+ private readonly messageService;
1051
+ private readonly confirmationService;
1052
+ readonly columns: _angular_core.InputSignal<ITableColumn[]>;
1053
+ readonly actions: _angular_core.InputSignal<ITableAction<unknown>[]>;
1054
+ readonly title: _angular_core.InputSignal<string>;
1055
+ readonly showCreateButton: _angular_core.InputSignal<boolean>;
1056
+ readonly searchable: _angular_core.InputSignal<boolean>;
1057
+ readonly pageSize: _angular_core.InputSignal<number>;
1058
+ readonly emptyMessage: _angular_core.InputSignal<string>;
1059
+ readonly createButtonLabel: _angular_core.InputSignal<string>;
1060
+ readonly createButtonIcon: _angular_core.InputSignal<string>;
1061
+ readonly data: _angular_core.InputSignal<unknown[]>;
1062
+ readonly total: _angular_core.InputSignal<number>;
1063
+ readonly isLoading: _angular_core.InputSignal<boolean>;
1064
+ readonly service: _angular_core.InputSignal<ApiResourceService<unknown, unknown> | null>;
1065
+ readonly filter: _angular_core.InputSignal<IFilter>;
1066
+ readonly createRoute: _angular_core.InputSignal<string | null>;
1067
+ readonly editRoute: _angular_core.InputSignal<string | null>;
1068
+ readonly deleteConfirmField: _angular_core.InputSignal<string | null>;
1069
+ readonly idField: _angular_core.InputSignal<string>;
1070
+ readonly canEdit: _angular_core.InputSignal<((item: unknown) => boolean) | null>;
1071
+ readonly canDelete: _angular_core.InputSignal<((item: unknown) => boolean) | null>;
1072
+ readonly onCreate: _angular_core.OutputEmitterRef<void>;
1073
+ readonly onLazyLoad: _angular_core.OutputEmitterRef<{
1074
+ first: number;
1075
+ rows: number;
1076
+ }>;
1077
+ readonly onSearch: _angular_core.OutputEmitterRef<string>;
1078
+ readonly columnTemplates: _angular_core.Signal<readonly BaseListTemplateDirective[]>;
1079
+ private readonly _first;
1080
+ private readonly _searchTerm;
1081
+ readonly first: _angular_core.Signal<number>;
1082
+ readonly searchTerm: _angular_core.Signal<string>;
1083
+ readonly effectiveData: _angular_core.Signal<unknown[]>;
1084
+ readonly effectiveTotal: _angular_core.Signal<number>;
1085
+ readonly effectiveIsLoading: _angular_core.Signal<boolean>;
1086
+ readonly effectiveActions: _angular_core.Signal<ITableAction<unknown>[]>;
1087
+ readonly visibleColumns: _angular_core.Signal<ITableColumn[]>;
1088
+ readonly columnCount: _angular_core.Signal<number>;
1089
+ readonly resolvedEmptyMessage: _angular_core.Signal<string>;
1090
+ readonly resolvedCreateLabel: _angular_core.Signal<string>;
1091
+ handleLazyLoad(event: {
1092
+ first?: number | null;
1093
+ rows?: number | null;
1094
+ }): void;
1095
+ onSearchChange(value: string): void;
1096
+ handleCreate(): void;
1097
+ private handleEditItem;
1098
+ private handleDeleteItem;
1099
+ getFieldValue(item: unknown, field: string): unknown;
1100
+ getFieldValueAsString(item: unknown, field: string): string;
1101
+ getTagConfig(col: ITableColumn, value: unknown): ITagConfig | null;
1102
+ getColumnTemplate(field: string): TemplateRef<unknown> | null;
1103
+ truncateText(value: unknown, limit?: number): string;
1104
+ getCellClass(col: ITableColumn): string;
1105
+ t(key: string, vars?: Record<string, string | number>): string;
1106
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BaseListComponent, never>;
1107
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BaseListComponent, "lib-base-list", never, { "columns": { "alias": "columns"; "required": true; "isSignal": true; }; "actions": { "alias": "actions"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "showCreateButton": { "alias": "showCreateButton"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "createButtonLabel": { "alias": "createButtonLabel"; "required": false; "isSignal": true; }; "createButtonIcon": { "alias": "createButtonIcon"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "total": { "alias": "total"; "required": false; "isSignal": true; }; "isLoading": { "alias": "isLoading"; "required": false; "isSignal": true; }; "service": { "alias": "service"; "required": false; "isSignal": true; }; "filter": { "alias": "filter"; "required": false; "isSignal": true; }; "createRoute": { "alias": "createRoute"; "required": false; "isSignal": true; }; "editRoute": { "alias": "editRoute"; "required": false; "isSignal": true; }; "deleteConfirmField": { "alias": "deleteConfirmField"; "required": false; "isSignal": true; }; "idField": { "alias": "idField"; "required": false; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; "canDelete": { "alias": "canDelete"; "required": false; "isSignal": true; }; }, { "onCreate": "onCreate"; "onLazyLoad": "onLazyLoad"; "onSearch": "onSearch"; }, ["columnTemplates"], never, true, never>;
1108
+ }
1109
+
1110
+ type FormFieldType = 'text' | 'email' | 'password' | 'number' | 'textarea' | 'select' | 'multiselect' | 'date' | 'checkbox' | 'toggle' | 'custom';
1111
+ interface IFormSelectOption {
1112
+ label: string;
1113
+ value: unknown;
1114
+ }
1115
+ interface IFormField {
1116
+ key: string;
1117
+ type: FormFieldType;
1118
+ label: string;
1119
+ placeholder?: string;
1120
+ required?: boolean;
1121
+ disabled?: boolean;
1122
+ fullWidth?: boolean;
1123
+ options?: IFormSelectOption[];
1124
+ minDate?: Date;
1125
+ maxDate?: Date;
1126
+ rows?: number;
1127
+ min?: number;
1128
+ max?: number;
1129
+ hint?: string;
1130
+ }
1131
+
1132
+ declare class BaseFormTemplateDirective {
1133
+ readonly key: _angular_core.InputSignal<string>;
1134
+ readonly templateRef: TemplateRef<any>;
1135
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BaseFormTemplateDirective, never>;
1136
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BaseFormTemplateDirective, "ng-template[baseFormTemplate]", never, { "key": { "alias": "baseFormTemplate"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
1137
+ }
1138
+
1139
+ declare class BaseFormComponent {
1140
+ private readonly translateAdapter;
1141
+ private readonly router;
1142
+ private readonly messageService;
1143
+ readonly fields: _angular_core.InputSignal<IFormField[]>;
1144
+ readonly title: _angular_core.InputSignal<string>;
1145
+ readonly createTitle: _angular_core.InputSignal<string>;
1146
+ readonly editTitle: _angular_core.InputSignal<string>;
1147
+ readonly columns: _angular_core.InputSignal<1 | 2 | 3>;
1148
+ readonly submitLabel: _angular_core.InputSignal<string>;
1149
+ readonly cancelLabel: _angular_core.InputSignal<string>;
1150
+ readonly isLoading: _angular_core.InputSignal<boolean>;
1151
+ readonly isEditMode: _angular_core.InputSignal<boolean>;
1152
+ readonly initialValue: _angular_core.InputSignal<Record<string, unknown>>;
1153
+ readonly service: _angular_core.InputSignal<ApiResourceService<unknown, unknown> | null>;
1154
+ readonly editId: _angular_core.InputSignal<string | null>;
1155
+ readonly cancelRoute: _angular_core.InputSignal<string | string[] | null>;
1156
+ readonly navigateOnSuccess: _angular_core.InputSignal<string | string[] | null>;
1157
+ readonly mapToRequest: _angular_core.InputSignal<((data: Record<string, unknown>, editId: string | null) => unknown) | null>;
1158
+ readonly mapFromEntity: _angular_core.InputSignal<((entity: unknown) => Record<string, unknown>) | null>;
1159
+ readonly onSubmit: _angular_core.OutputEmitterRef<Record<string, unknown>>;
1160
+ readonly onCancel: _angular_core.OutputEmitterRef<void>;
1161
+ readonly onValueChange: _angular_core.OutputEmitterRef<Record<string, unknown>>;
1162
+ readonly fieldTemplates: _angular_core.Signal<readonly BaseFormTemplateDirective[]>;
1163
+ private readonly _formData;
1164
+ private readonly _submitted;
1165
+ private readonly _isLoadingInternal;
1166
+ private readonly _touchedFields;
1167
+ readonly formData: _angular_core.Signal<Record<string, unknown>>;
1168
+ readonly submitted: _angular_core.Signal<boolean>;
1169
+ readonly effectiveIsEditMode: _angular_core.Signal<boolean>;
1170
+ readonly effectiveIsLoading: _angular_core.Signal<boolean>;
1171
+ readonly isFormValid: _angular_core.Signal<boolean>;
1172
+ readonly resolvedTitle: _angular_core.Signal<string>;
1173
+ readonly gridClass: _angular_core.Signal<"grid-cols-1" | "grid-cols-1 md:grid-cols-3" | "grid-cols-1 md:grid-cols-2">;
1174
+ constructor();
1175
+ private loadEntity;
1176
+ getFieldValue(key: string): unknown;
1177
+ setFieldValue(key: string, value: unknown): void;
1178
+ markFieldTouched(key: string): void;
1179
+ isFieldInvalid(field: IFormField): boolean;
1180
+ getFieldTemplate(key: string): TemplateRef<unknown> | null;
1181
+ handleSubmit(): Promise<void>;
1182
+ handleCancel(): void;
1183
+ reset(): void;
1184
+ t(key: string, vars?: Record<string, string | number>): string;
1185
+ private managedSubmit;
1186
+ private checkValidity;
1187
+ private navigateTo;
1188
+ private getDefaultValue;
1189
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BaseFormComponent, never>;
1190
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BaseFormComponent, "lib-base-form", never, { "fields": { "alias": "fields"; "required": true; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "createTitle": { "alias": "createTitle"; "required": false; "isSignal": true; }; "editTitle": { "alias": "editTitle"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "submitLabel": { "alias": "submitLabel"; "required": false; "isSignal": true; }; "cancelLabel": { "alias": "cancelLabel"; "required": false; "isSignal": true; }; "isLoading": { "alias": "isLoading"; "required": false; "isSignal": true; }; "isEditMode": { "alias": "isEditMode"; "required": false; "isSignal": true; }; "initialValue": { "alias": "initialValue"; "required": false; "isSignal": true; }; "service": { "alias": "service"; "required": false; "isSignal": true; }; "editId": { "alias": "editId"; "required": false; "isSignal": true; }; "cancelRoute": { "alias": "cancelRoute"; "required": false; "isSignal": true; }; "navigateOnSuccess": { "alias": "navigateOnSuccess"; "required": false; "isSignal": true; }; "mapToRequest": { "alias": "mapToRequest"; "required": false; "isSignal": true; }; "mapFromEntity": { "alias": "mapFromEntity"; "required": false; "isSignal": true; }; }, { "onSubmit": "onSubmit"; "onCancel": "onCancel"; "onValueChange": "onValueChange"; }, ["fieldTemplates"], never, true, never>;
1191
+ }
1192
+
1013
1193
  declare class InlineSvgComponent {
1014
1194
  readonly src: _angular_core.InputSignal<string>;
1015
1195
  private readonly http;
@@ -1498,5 +1678,5 @@ interface ScrollPaginationConfig {
1498
1678
  */
1499
1679
  declare function checkScrollPagination(event: Event, config: ScrollPaginationConfig): IPagination | null;
1500
1680
 
1501
- export { ACTION_PERMISSIONS, AUTH_STATE_PROVIDER, AngularModule, ApiResourceService, ApiResourceService as ApiService, BRANCH_PERMISSIONS, BaseFormControl, BaseUserSelectComponent, COMPANY_ACTION_PERMISSIONS, COMPANY_API_PROVIDER, COMPANY_PERMISSIONS, CookieService, EMAIL_CONFIG_PERMISSIONS, EMAIL_TEMPLATE_PERMISSIONS, EVENT_PERMISSIONS, EditModeElementChangerDirective, FILE_PERMISSIONS, FILE_PROVIDER, FILE_TYPE_FILTERS, 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, PrimeModule, ROLE_ACTION_PERMISSIONS, ROLE_PERMISSIONS, SHARED_MESSAGES, SKIP_ERROR_TOAST, 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, checkScrollPagination, errorCatchingInterceptor, evaluateLogicNode, evaluatePermission, formatFileSize, formatInTimezone, getAcceptString, getFileIconClass, getUserTimezone, hasAllPermissions, hasAnyPermission, hasPermission, isFileTypeAllowed, localToUtc, permissionGuard, provideValueAccessor, resolveTranslationModule, utcToLocal };
1502
- export type { DeleteType, FilesResponseDto, IActionNode, IActivatable, IApiService, IAuthStateProvider, IBaseEntity, IBulkMeta, IBulkResponse, ICompanyApiProvider, ICompanyBasicInfo, IDeleteData, IDropDown, IFileBasicInfo, IFileProvider, IFileSelectFilter, IFileUploadOptions, IFilter, IFilterData, IFolderBasicInfo, IGroupNode, IListResponse, ILoggedUserInfo, ILogicNode, IMessageResponse, IOrderable, IPagination, IPaginationMeta, IProfileActionInfo, IProfilePermissionProvider, IProfileRoleInfo, IRequestMeta, IResolverModuleConfig, ISelectFilter, ISingleResponse, ISoftDeletable, ISort, IStorageConfigBasicInfo, ITimestampable, IUploadedFile, IUserBasicInfo, IUserBranchPermission, IUserPermissionProvider, IUserProvider, IUserSelectFilter, LoadUsersFn, PermissionCode, ScrollPaginationConfig, UploadFileFn, UploadMultipleFilesFn };
1681
+ export { ACTION_PERMISSIONS, AUTH_STATE_PROVIDER, AngularModule, ApiResourceService, ApiResourceService as ApiService, BRANCH_PERMISSIONS, BaseFormComponent, BaseFormControl, BaseFormTemplateDirective, BaseListComponent, BaseListTemplateDirective, BaseUserSelectComponent, COMPANY_ACTION_PERMISSIONS, COMPANY_API_PROVIDER, COMPANY_PERMISSIONS, CookieService, EMAIL_CONFIG_PERMISSIONS, EMAIL_TEMPLATE_PERMISSIONS, EVENT_PERMISSIONS, EditModeElementChangerDirective, FILE_PERMISSIONS, FILE_PROVIDER, FILE_TYPE_FILTERS, 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, PrimeModule, ROLE_ACTION_PERMISSIONS, ROLE_PERMISSIONS, SHARED_MESSAGES, SKIP_ERROR_TOAST, 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, checkScrollPagination, errorCatchingInterceptor, evaluateLogicNode, evaluatePermission, formatFileSize, formatInTimezone, getAcceptString, getFileIconClass, getUserTimezone, hasAllPermissions, hasAnyPermission, hasPermission, isFileTypeAllowed, localToUtc, permissionGuard, provideValueAccessor, resolveTranslationModule, utcToLocal };
1682
+ export type { ActionSeverity, DeleteType, FilesResponseDto, FormFieldType, IActionNode, IActivatable, IApiService, IAuthStateProvider, IBaseEntity, IBulkMeta, IBulkResponse, ICompanyApiProvider, ICompanyBasicInfo, IDeleteData, IDropDown, IFileBasicInfo, IFileProvider, IFileSelectFilter, IFileUploadOptions, IFilter, IFilterData, IFolderBasicInfo, IFormField, IFormSelectOption, IGroupNode, IListResponse, ILoggedUserInfo, ILogicNode, IMessageResponse, IOrderable, IPagination, IPaginationMeta, IProfileActionInfo, IProfilePermissionProvider, IProfileRoleInfo, IRequestMeta, IResolverModuleConfig, ISelectFilter, ISingleResponse, ISoftDeletable, ISort, IStorageConfigBasicInfo, ITableAction, ITableColumn, ITagConfig, ITimestampable, IUploadedFile, IUserBasicInfo, IUserBranchPermission, IUserPermissionProvider, IUserProvider, IUserSelectFilter, LoadUsersFn, PermissionCode, ScrollPaginationConfig, TableColumnType, UploadFileFn, UploadMultipleFilesFn };