cloud-ide-layout 1.0.26 → 1.0.29

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/index.d.ts CHANGED
@@ -1,8 +1,9 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { OnInit, InjectionToken, EventEmitter } from '@angular/core';
3
- import { AuthUserMst, menuResponseData, CoreSystemEntity, designConfigResponseData, designConfigControllerResponse, ISytmLayout, MDesignConfig, IEnvironmentConfig, SystemThemeControllerRespoonse, SystemThemesListControllerRespoonse, MSystemThemeUserPreferencesRequest, SystemThemeUserPreferencesControllerRespoonse, MFileManager, fileManagerControllerResponse } from 'cloud-ide-lms-model';
2
+ import { OnInit, InjectionToken, Signal } from '@angular/core';
3
+ import { AuthUserMst, menuResponseData, CoreSystemEntity, designConfigResponseData, designConfigControllerResponse, ISytmLayout, MDesignConfig, IEnvironmentConfig, SystemThemeControllerRespoonse, SystemThemesListControllerRespoonse, MSystemThemeUserPreferencesRequest, SystemThemeUserPreferencesControllerRespoonse, MFileManager, fileManagerControllerResponse, CoreEntityAccessPassManagement, MCoreEntityAccessPassManagement, CoreEntityAccessPassManagementControllerResponse, MCoreEntityAccessPassManagementGetByIdPayload, CoreEntityAccessPassManagementByIdControllerResponse, MCoreEntityAccessPassManagementInsertUpdate, CoreEntityAccessPassManagementInsertUpdateControllerResponse, MCoreEntityAccessPassManagementDeletePayload, CoreEntityAccessPassManagementDeleteControllerResponse, MCoreEntityAccessPassManagementToggleStatusPayload, CoreEntityAccessPassManagementToggleStatusControllerResponse } from 'cloud-ide-lms-model';
4
4
  import * as rxjs from 'rxjs';
5
5
  import { Observable } from 'rxjs';
6
+ import { CideEleBreadcrumbComponent } from 'cloud-ide-element';
6
7
  import { Title } from '@angular/platform-browser';
7
8
  import { Route, RouteReuseStrategy, ActivatedRouteSnapshot, DetachedRouteHandle } from '@angular/router';
8
9
  import { FormGroup } from '@angular/forms';
@@ -167,18 +168,43 @@ declare class AppStateHelperService {
167
168
  }
168
169
 
169
170
  declare class CideLytSharedWrapperComponent implements OnInit {
170
- shared_wrapper_setup_param: Partial<CideLytSharedWrapperSetupParam>;
171
+ breadcrumb: _angular_core.Signal<CideEleBreadcrumbComponent | undefined>;
172
+ shared_wrapper_setup_param: _angular_core.InputSignal<Partial<CideLytSharedWrapperSetupParam>>;
173
+ breadcrumb_data: _angular_core.InputSignal<BreadcrumbItem[]>;
171
174
  page_data: designConfigResponseData;
172
175
  private sharedService;
173
176
  private sidedrawerService;
174
177
  protected appState: AppStateHelperService;
178
+ private additionalBreadcrumbItems;
179
+ private fullBreadcrumbItems;
180
+ constructor();
175
181
  ngOnInit(): void;
182
+ /**
183
+ * Add additional breadcrumb items that will be appended after the default Module > Current Page path
184
+ * @param items Array of breadcrumb items to append
185
+ */
186
+ addBreadcrumbItems(items: BreadcrumbItem[]): void;
187
+ /**
188
+ * Clear additional breadcrumb items (keeps only default Module > Current Page)
189
+ */
190
+ clearAdditionalBreadcrumbItems(): void;
191
+ /**
192
+ * Set additional breadcrumb items (replaces any existing additional items)
193
+ * @param items Array of breadcrumb items to set
194
+ */
195
+ setBreadcrumbItems(items: BreadcrumbItem[]): void;
176
196
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CideLytSharedWrapperComponent, never>;
177
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<CideLytSharedWrapperComponent, "cide-lyt-shared-wrapper", never, {}, {}, never, never, true, never>;
197
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CideLytSharedWrapperComponent, "cide-lyt-shared-wrapper", never, { "shared_wrapper_setup_param": { "alias": "shared_wrapper_setup_param"; "required": false; "isSignal": true; }; "breadcrumb_data": { "alias": "breadcrumb_data"; "required": false; "isSignal": true; }; }, {}, never, ["[breadcrumb-actions]", "*"], true, never>;
178
198
  }
179
199
  interface CideLytSharedWrapperSetupParam {
180
200
  sypg_page_code: string;
181
201
  }
202
+ interface BreadcrumbItem {
203
+ id: string;
204
+ label: string;
205
+ icon?: string;
206
+ url?: string;
207
+ }
182
208
 
183
209
  interface CachedPageData {
184
210
  request: Partial<CideLytSharedWrapperSetupParam>;
@@ -222,6 +248,16 @@ declare class CideLytSharedService {
222
248
  * This allows shared service to call request service without circular dependency
223
249
  */
224
250
  registerTabManagement(callback: (currentRoutePath: string, queryParams: Record<string, unknown>, layout: ISytmLayout, pageData: designConfigControllerResponse, pageCode: string) => void): void;
251
+ /**
252
+ * Fetch breadcrumb navigation items for a page code from backend
253
+ * Expected response shape: data.path: Array<{ id|_id|code, title|name|sypg_title, icon?, url|path|sypg_path }>
254
+ */
255
+ getBreadcrumbNavigation(pageCode: string): Observable<Array<{
256
+ id: string;
257
+ label: string;
258
+ icon?: string;
259
+ path?: string;
260
+ }>>;
225
261
  /**
226
262
  * Register request visibility callback from request service
227
263
  * This allows shared service to control request wrapper visibility
@@ -589,31 +625,98 @@ declare class CideLytFileManagerService {
589
625
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<CideLytFileManagerService>;
590
626
  }
591
627
 
628
+ interface EntityWithPermissions extends CoreSystemEntity {
629
+ permissions: CoreEntityAccessPassManagement | null;
630
+ canView: boolean;
631
+ canEdit: boolean;
632
+ isOwner: boolean;
633
+ isActive: boolean;
634
+ }
592
635
  declare class CideLytFloatingEntityRightsSharingComponent implements OnInit {
593
- data: any;
594
- close: EventEmitter<void>;
595
- save: EventEmitter<any>;
636
+ data: _angular_core.InputSignal<any>;
637
+ close: _angular_core.OutputEmitterRef<void>;
638
+ save: _angular_core.OutputEmitterRef<any>;
639
+ private pendingUpdates;
640
+ pendingChangesCount: _angular_core.WritableSignal<number>;
641
+ private entityDataCache;
642
+ private readonly CACHE_DURATION;
596
643
  private fb;
644
+ private entityService;
645
+ private entityAccessPassService;
646
+ private appState;
597
647
  selectedTab: _angular_core.WritableSignal<"user" | "hierarchy">;
598
648
  entities: _angular_core.WritableSignal<CoreSystemEntity[]>;
599
649
  selectedEntityId: _angular_core.WritableSignal<string>;
600
650
  entitiesLoading: _angular_core.WritableSignal<boolean>;
601
651
  accessPassLoading: _angular_core.WritableSignal<boolean>;
602
652
  saving: _angular_core.WritableSignal<boolean>;
653
+ currentAccessPass: _angular_core.WritableSignal<CoreEntityAccessPassManagement | null>;
654
+ accessPassList: _angular_core.WritableSignal<CoreEntityAccessPassManagement[]>;
603
655
  hierarchy: _angular_core.WritableSignal<CoreSystemEntity[]>;
604
656
  hierarchyLoading: _angular_core.WritableSignal<boolean>;
657
+ entityPermissionsMap: _angular_core.Signal<Map<string, CoreEntityAccessPassManagement>>;
658
+ entitiesWithPermissions: _angular_core.Signal<EntityWithPermissions[]>;
605
659
  rightsForm: FormGroup;
606
660
  ngOnInit(): void;
661
+ /**
662
+ * Track pending changes for batch update
663
+ */
664
+ private trackPendingChanges;
665
+ /**
666
+ * Get original values for an entity
667
+ */
668
+ private getOriginalValuesForEntity;
669
+ /**
670
+ * Check if there are actual changes between current and original values
671
+ */
672
+ private hasActualChanges;
673
+ /**
674
+ * Clear pending changes for a specific entity
675
+ */
676
+ private clearPendingChanges;
677
+ /**
678
+ * Clear all pending changes
679
+ */
680
+ private clearAllPendingChanges;
681
+ /**
682
+ * Check if cached data exists and is still valid
683
+ */
684
+ private getCachedEntityData;
685
+ /**
686
+ * Cache entity data
687
+ */
688
+ private setCachedEntityData;
689
+ /**
690
+ * Clear cache for specific entity (useful after updates)
691
+ */
692
+ private clearEntityCache;
693
+ /**
694
+ * Clear all cached data
695
+ */
696
+ private clearAllCache;
697
+ /**
698
+ * Check if entity has pending changes
699
+ */
700
+ hasPendingChanges(entityId: string): boolean;
701
+ constructor();
607
702
  selectTab(tab: 'user' | 'hierarchy'): void;
608
703
  private initializeForm;
609
704
  loadEntities(): Promise<void>;
610
- loadHierarchy(): Promise<void>;
611
705
  selectEntity(entityId: string): void;
706
+ /**
707
+ * Populate form with cached data
708
+ */
709
+ private populateFormWithCachedData;
710
+ /**
711
+ * Set form values based on data or defaults
712
+ */
713
+ private setFormValues;
714
+ loadRightsForSelectedEntity(entityId: string): Promise<void>;
612
715
  loadAccessPassData(): Promise<void>;
613
716
  saveRights(): Promise<void>;
614
717
  onCancel(): void;
615
718
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CideLytFloatingEntityRightsSharingComponent, never>;
616
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<CideLytFloatingEntityRightsSharingComponent, "cide-lyt-floating-entity-rights-sharing", never, { "data": { "alias": "data"; "required": false; }; }, { "close": "close"; "save": "save"; }, never, never, true, never>;
719
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CideLytFloatingEntityRightsSharingComponent, "cide-lyt-floating-entity-rights-sharing", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; }, { "close": "close"; "save": "save"; }, never, never, true, never>;
617
720
  }
618
721
 
619
722
  interface EntityRightsSharingData {
@@ -623,10 +726,14 @@ interface EntityRightsSharingData {
623
726
  }
624
727
  declare class CideLytFloatingEntityRightsSharingService {
625
728
  private containerService;
729
+ private http;
730
+ private entityAccessPassListSubject;
731
+ entityAccessPassList$: Observable<CoreEntityAccessPassManagement[]>;
732
+ constructor();
626
733
  /**
627
734
  * Show entity rights sharing in floating container
628
735
  */
629
- show(data?: EntityRightsSharingData): Promise<string>;
736
+ show(data?: Signal<EntityRightsSharingData>): Promise<string>;
630
737
  /**
631
738
  * Hide entity rights sharing
632
739
  */
@@ -635,9 +742,68 @@ declare class CideLytFloatingEntityRightsSharingService {
635
742
  * Register the entity rights sharing component
636
743
  */
637
744
  private registerEntityRightsSharingComponent;
745
+ /**
746
+ * Get entity access pass management list from API
747
+ */
748
+ getEntityAccessPassList(body: MCoreEntityAccessPassManagement): Observable<CoreEntityAccessPassManagementControllerResponse>;
749
+ /**
750
+ * Get entity access pass management by ID
751
+ */
752
+ getEntityAccessPassById(payload: MCoreEntityAccessPassManagementGetByIdPayload): Observable<CoreEntityAccessPassManagementByIdControllerResponse>;
753
+ /**
754
+ * Insert or update entity access pass management
755
+ */
756
+ insertUpdateEntityAccessPass(payload: MCoreEntityAccessPassManagementInsertUpdate): Observable<CoreEntityAccessPassManagementInsertUpdateControllerResponse>;
757
+ /**
758
+ * Delete entity access pass management
759
+ */
760
+ deleteEntityAccessPass(payload: MCoreEntityAccessPassManagementDeletePayload): Observable<CoreEntityAccessPassManagementDeleteControllerResponse>;
761
+ /**
762
+ * Toggle entity access pass management status
763
+ */
764
+ toggleEntityAccessPassStatus(payload: MCoreEntityAccessPassManagementToggleStatusPayload): Observable<CoreEntityAccessPassManagementToggleStatusControllerResponse>;
765
+ /**
766
+ * Get entity access pass management for specific user and entity
767
+ * @param userId - User ID
768
+ * @param entityId - Entity ID (the entity context)
769
+ * @param coreEntityAccessPassManagement - The table name (e.g., 'core_entity_access_pass_management_sycad')
770
+ * @param accessPassTo - Optional: The primary _id of the specific record whose access is being managed
771
+ */
772
+ getEntityAccessPassForUserAndEntity(userId: string, entityId: string, coreEntityAccessPassManagement: string, accessPassTo?: string): Observable<CoreEntityAccessPassManagementControllerResponse>;
773
+ /**
774
+ * Create or update entity access pass for user and entity
775
+ * @param userId - User ID
776
+ * @param entityId - Entity ID (the entity context)
777
+ * @param accessPassTo - The primary _id of the specific record whose access is being managed (e.g., address _id from core_user_contact_addresses)
778
+ * @param coreEntityAccessPassManagement - The table name (e.g., 'core_entity_access_pass_management_sycad')
779
+ * @param rights - The access rights to be granted
780
+ * @param existingId - Optional: Existing access pass ID for updates
781
+ */
782
+ saveEntityAccessPassForUserAndEntity(userId: string, entityId: string, accessPassTo: string, coreEntityAccessPassManagement: string, rights: {
783
+ can_view?: boolean;
784
+ can_edit?: boolean;
785
+ is_owner?: boolean;
786
+ syepm_isactive?: boolean;
787
+ }, existingId?: string): Observable<CoreEntityAccessPassManagementInsertUpdateControllerResponse>;
788
+ /**
789
+ * Refresh the entity access pass list
790
+ */
791
+ private refreshEntityAccessPassList;
792
+ /**
793
+ * Handle HTTP errors
794
+ */
795
+ private handleError;
796
+ /**
797
+ * Get current entity access pass list
798
+ */
799
+ getCurrentEntityAccessPassList(): CoreEntityAccessPassManagement[];
800
+ /**
801
+ * Clear entity access pass list
802
+ */
803
+ clearEntityAccessPassList(): void;
638
804
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CideLytFloatingEntityRightsSharingService, never>;
639
805
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<CideLytFloatingEntityRightsSharingService>;
640
806
  }
641
807
 
642
808
  export { AppStateHelperService, AppStateService, CacheManagerService, CideLytFileManagerService, CideLytFloatingEntityRightsSharingComponent, CideLytFloatingEntityRightsSharingService, CideLytSharedService, CideLytSharedWrapperComponent, CideLytThemeService, CideLytUserStatusService, CloudIdeLayoutComponent, CloudIdeLayoutService, CustomRouteReuseStrategy, ENVIRONMENT_CONFIG, layoutControlPannelChildRoutes, layoutRoutes, processThemeVariable, setCSSVariable, themeFactory };
643
- export type { AppState, CideLytSharedWrapperSetupParam, EntityRightsSharingData, Theme, UserStatus, UserStatusData };
809
+ export type { AppState, BreadcrumbItem, CideLytSharedWrapperSetupParam, EntityRightsSharingData, Theme, UserStatus, UserStatusData };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cloud-ide-layout",
3
- "version": "1.0.26",
3
+ "version": "1.0.29",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^20.1.0",
6
6
  "@angular/core": "^20.1.0"