cloud-ide-layout 1.0.26 → 1.0.28

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,14 +168,15 @@ declare class AppStateHelperService {
167
168
  }
168
169
 
169
170
  declare class CideLytSharedWrapperComponent implements OnInit {
170
- shared_wrapper_setup_param: Partial<CideLytSharedWrapperSetupParam>;
171
+ breadcrumb?: CideEleBreadcrumbComponent;
172
+ shared_wrapper_setup_param: _angular_core.InputSignal<Partial<CideLytSharedWrapperSetupParam>>;
171
173
  page_data: designConfigResponseData;
172
174
  private sharedService;
173
175
  private sidedrawerService;
174
176
  protected appState: AppStateHelperService;
175
177
  ngOnInit(): void;
176
178
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CideLytSharedWrapperComponent, never>;
177
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<CideLytSharedWrapperComponent, "cide-lyt-shared-wrapper", never, {}, {}, never, never, true, never>;
179
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CideLytSharedWrapperComponent, "cide-lyt-shared-wrapper", never, { "shared_wrapper_setup_param": { "alias": "shared_wrapper_setup_param"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
178
180
  }
179
181
  interface CideLytSharedWrapperSetupParam {
180
182
  sypg_page_code: string;
@@ -222,6 +224,16 @@ declare class CideLytSharedService {
222
224
  * This allows shared service to call request service without circular dependency
223
225
  */
224
226
  registerTabManagement(callback: (currentRoutePath: string, queryParams: Record<string, unknown>, layout: ISytmLayout, pageData: designConfigControllerResponse, pageCode: string) => void): void;
227
+ /**
228
+ * Fetch breadcrumb navigation items for a page code from backend
229
+ * Expected response shape: data.path: Array<{ id|_id|code, title|name|sypg_title, icon?, url|path|sypg_path }>
230
+ */
231
+ getBreadcrumbNavigation(pageCode: string): Observable<Array<{
232
+ id: string;
233
+ label: string;
234
+ icon?: string;
235
+ path?: string;
236
+ }>>;
225
237
  /**
226
238
  * Register request visibility callback from request service
227
239
  * This allows shared service to control request wrapper visibility
@@ -589,31 +601,98 @@ declare class CideLytFileManagerService {
589
601
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<CideLytFileManagerService>;
590
602
  }
591
603
 
604
+ interface EntityWithPermissions extends CoreSystemEntity {
605
+ permissions: CoreEntityAccessPassManagement | null;
606
+ canView: boolean;
607
+ canEdit: boolean;
608
+ isOwner: boolean;
609
+ isActive: boolean;
610
+ }
592
611
  declare class CideLytFloatingEntityRightsSharingComponent implements OnInit {
593
- data: any;
594
- close: EventEmitter<void>;
595
- save: EventEmitter<any>;
612
+ data: _angular_core.InputSignal<any>;
613
+ close: _angular_core.OutputEmitterRef<void>;
614
+ save: _angular_core.OutputEmitterRef<any>;
615
+ private pendingUpdates;
616
+ pendingChangesCount: _angular_core.WritableSignal<number>;
617
+ private entityDataCache;
618
+ private readonly CACHE_DURATION;
596
619
  private fb;
620
+ private entityService;
621
+ private entityAccessPassService;
622
+ private appState;
597
623
  selectedTab: _angular_core.WritableSignal<"user" | "hierarchy">;
598
624
  entities: _angular_core.WritableSignal<CoreSystemEntity[]>;
599
625
  selectedEntityId: _angular_core.WritableSignal<string>;
600
626
  entitiesLoading: _angular_core.WritableSignal<boolean>;
601
627
  accessPassLoading: _angular_core.WritableSignal<boolean>;
602
628
  saving: _angular_core.WritableSignal<boolean>;
629
+ currentAccessPass: _angular_core.WritableSignal<CoreEntityAccessPassManagement | null>;
630
+ accessPassList: _angular_core.WritableSignal<CoreEntityAccessPassManagement[]>;
603
631
  hierarchy: _angular_core.WritableSignal<CoreSystemEntity[]>;
604
632
  hierarchyLoading: _angular_core.WritableSignal<boolean>;
633
+ entityPermissionsMap: _angular_core.Signal<Map<string, CoreEntityAccessPassManagement>>;
634
+ entitiesWithPermissions: _angular_core.Signal<EntityWithPermissions[]>;
605
635
  rightsForm: FormGroup;
606
636
  ngOnInit(): void;
637
+ /**
638
+ * Track pending changes for batch update
639
+ */
640
+ private trackPendingChanges;
641
+ /**
642
+ * Get original values for an entity
643
+ */
644
+ private getOriginalValuesForEntity;
645
+ /**
646
+ * Check if there are actual changes between current and original values
647
+ */
648
+ private hasActualChanges;
649
+ /**
650
+ * Clear pending changes for a specific entity
651
+ */
652
+ private clearPendingChanges;
653
+ /**
654
+ * Clear all pending changes
655
+ */
656
+ private clearAllPendingChanges;
657
+ /**
658
+ * Check if cached data exists and is still valid
659
+ */
660
+ private getCachedEntityData;
661
+ /**
662
+ * Cache entity data
663
+ */
664
+ private setCachedEntityData;
665
+ /**
666
+ * Clear cache for specific entity (useful after updates)
667
+ */
668
+ private clearEntityCache;
669
+ /**
670
+ * Clear all cached data
671
+ */
672
+ private clearAllCache;
673
+ /**
674
+ * Check if entity has pending changes
675
+ */
676
+ hasPendingChanges(entityId: string): boolean;
677
+ constructor();
607
678
  selectTab(tab: 'user' | 'hierarchy'): void;
608
679
  private initializeForm;
609
680
  loadEntities(): Promise<void>;
610
- loadHierarchy(): Promise<void>;
611
681
  selectEntity(entityId: string): void;
682
+ /**
683
+ * Populate form with cached data
684
+ */
685
+ private populateFormWithCachedData;
686
+ /**
687
+ * Set form values based on data or defaults
688
+ */
689
+ private setFormValues;
690
+ loadRightsForSelectedEntity(entityId: string): Promise<void>;
612
691
  loadAccessPassData(): Promise<void>;
613
692
  saveRights(): Promise<void>;
614
693
  onCancel(): void;
615
694
  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>;
695
+ 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
696
  }
618
697
 
619
698
  interface EntityRightsSharingData {
@@ -623,10 +702,14 @@ interface EntityRightsSharingData {
623
702
  }
624
703
  declare class CideLytFloatingEntityRightsSharingService {
625
704
  private containerService;
705
+ private http;
706
+ private entityAccessPassListSubject;
707
+ entityAccessPassList$: Observable<CoreEntityAccessPassManagement[]>;
708
+ constructor();
626
709
  /**
627
710
  * Show entity rights sharing in floating container
628
711
  */
629
- show(data?: EntityRightsSharingData): Promise<string>;
712
+ show(data?: Signal<EntityRightsSharingData>): Promise<string>;
630
713
  /**
631
714
  * Hide entity rights sharing
632
715
  */
@@ -635,6 +718,65 @@ declare class CideLytFloatingEntityRightsSharingService {
635
718
  * Register the entity rights sharing component
636
719
  */
637
720
  private registerEntityRightsSharingComponent;
721
+ /**
722
+ * Get entity access pass management list from API
723
+ */
724
+ getEntityAccessPassList(body: MCoreEntityAccessPassManagement): Observable<CoreEntityAccessPassManagementControllerResponse>;
725
+ /**
726
+ * Get entity access pass management by ID
727
+ */
728
+ getEntityAccessPassById(payload: MCoreEntityAccessPassManagementGetByIdPayload): Observable<CoreEntityAccessPassManagementByIdControllerResponse>;
729
+ /**
730
+ * Insert or update entity access pass management
731
+ */
732
+ insertUpdateEntityAccessPass(payload: MCoreEntityAccessPassManagementInsertUpdate): Observable<CoreEntityAccessPassManagementInsertUpdateControllerResponse>;
733
+ /**
734
+ * Delete entity access pass management
735
+ */
736
+ deleteEntityAccessPass(payload: MCoreEntityAccessPassManagementDeletePayload): Observable<CoreEntityAccessPassManagementDeleteControllerResponse>;
737
+ /**
738
+ * Toggle entity access pass management status
739
+ */
740
+ toggleEntityAccessPassStatus(payload: MCoreEntityAccessPassManagementToggleStatusPayload): Observable<CoreEntityAccessPassManagementToggleStatusControllerResponse>;
741
+ /**
742
+ * Get entity access pass management for specific user and entity
743
+ * @param userId - User ID
744
+ * @param entityId - Entity ID (the entity context)
745
+ * @param coreEntityAccessPassManagement - The table name (e.g., 'core_entity_access_pass_management_sycad')
746
+ * @param accessPassTo - Optional: The primary _id of the specific record whose access is being managed
747
+ */
748
+ getEntityAccessPassForUserAndEntity(userId: string, entityId: string, coreEntityAccessPassManagement: string, accessPassTo?: string): Observable<CoreEntityAccessPassManagementControllerResponse>;
749
+ /**
750
+ * Create or update entity access pass for user and entity
751
+ * @param userId - User ID
752
+ * @param entityId - Entity ID (the entity context)
753
+ * @param accessPassTo - The primary _id of the specific record whose access is being managed (e.g., address _id from core_user_contact_addresses)
754
+ * @param coreEntityAccessPassManagement - The table name (e.g., 'core_entity_access_pass_management_sycad')
755
+ * @param rights - The access rights to be granted
756
+ * @param existingId - Optional: Existing access pass ID for updates
757
+ */
758
+ saveEntityAccessPassForUserAndEntity(userId: string, entityId: string, accessPassTo: string, coreEntityAccessPassManagement: string, rights: {
759
+ can_view?: boolean;
760
+ can_edit?: boolean;
761
+ is_owner?: boolean;
762
+ syepm_isactive?: boolean;
763
+ }, existingId?: string): Observable<CoreEntityAccessPassManagementInsertUpdateControllerResponse>;
764
+ /**
765
+ * Refresh the entity access pass list
766
+ */
767
+ private refreshEntityAccessPassList;
768
+ /**
769
+ * Handle HTTP errors
770
+ */
771
+ private handleError;
772
+ /**
773
+ * Get current entity access pass list
774
+ */
775
+ getCurrentEntityAccessPassList(): CoreEntityAccessPassManagement[];
776
+ /**
777
+ * Clear entity access pass list
778
+ */
779
+ clearEntityAccessPassList(): void;
638
780
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CideLytFloatingEntityRightsSharingService, never>;
639
781
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<CideLytFloatingEntityRightsSharingService>;
640
782
  }
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.28",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^20.1.0",
6
6
  "@angular/core": "^20.1.0"