cloud-ide-layout 1.0.25 → 1.0.26

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.
@@ -2653,8 +2653,8 @@ class CideLytSidedrawerWrapperComponent {
2653
2653
  }
2654
2654
  ngOnInit() {
2655
2655
  // Initialize the component map (You'd likely populate this from a config or service)
2656
- this.componentMap['drowar_notes'] = () => import('./cloud-ide-layout-sidedrawer-notes.component-OKwCnhEf.mjs').then(m => m.CideLytSidedrawerNotesComponent);
2657
- this.componentMap['drawer_theme'] = () => import('./cloud-ide-layout-drawer-theme.component-gmPE1a4W.mjs').then(m => m.CideLytDrawerThemeComponent);
2656
+ this.componentMap['drowar_notes'] = () => import('./cloud-ide-layout-sidedrawer-notes.component-meLfK8As.mjs').then(m => m.CideLytSidedrawerNotesComponent);
2657
+ this.componentMap['drawer_theme'] = () => import('./cloud-ide-layout-drawer-theme.component-CdUqFP29.mjs').then(m => m.CideLytDrawerThemeComponent);
2658
2658
  }
2659
2659
  async loadComponent(configFor) {
2660
2660
  console.log('🔍 SIDEDRAWER - Loading component:', configFor, 'Current tab:', this.currentTabId);
@@ -3042,7 +3042,7 @@ const layoutControlPannelChildRoutes = [{
3042
3042
  },
3043
3043
  {
3044
3044
  path: "home",
3045
- loadComponent: () => import('./cloud-ide-layout-home-wrapper.component-iPkvBOgE.mjs').then(c => c.CideLytHomeWrapperComponent),
3045
+ loadComponent: () => import('./cloud-ide-layout-home-wrapper.component-DegRTEPv.mjs').then(c => c.CideLytHomeWrapperComponent),
3046
3046
  canActivate: [authGuard],
3047
3047
  data: {
3048
3048
  reuseTab: true, // For CustomRouteReuseStrategy
@@ -3304,17 +3304,26 @@ class CideLytFloatingEntityRightsSharingComponent {
3304
3304
  close = new EventEmitter();
3305
3305
  save = new EventEmitter();
3306
3306
  fb = inject(FormBuilder);
3307
+ // Tabs
3308
+ selectedTab = signal('user', ...(ngDevMode ? [{ debugName: "selectedTab" }] : []));
3307
3309
  // State signals
3308
3310
  entities = signal([], ...(ngDevMode ? [{ debugName: "entities" }] : []));
3309
3311
  selectedEntityId = signal('', ...(ngDevMode ? [{ debugName: "selectedEntityId" }] : []));
3310
3312
  entitiesLoading = signal(false, ...(ngDevMode ? [{ debugName: "entitiesLoading" }] : []));
3311
3313
  accessPassLoading = signal(false, ...(ngDevMode ? [{ debugName: "accessPassLoading" }] : []));
3312
3314
  saving = signal(false, ...(ngDevMode ? [{ debugName: "saving" }] : []));
3315
+ // Hierarchy state (mock)
3316
+ hierarchy = signal([], ...(ngDevMode ? [{ debugName: "hierarchy" }] : []));
3317
+ hierarchyLoading = signal(false, ...(ngDevMode ? [{ debugName: "hierarchyLoading" }] : []));
3313
3318
  // Form
3314
3319
  rightsForm;
3315
3320
  ngOnInit() {
3316
3321
  this.initializeForm();
3317
3322
  this.loadEntities();
3323
+ this.loadHierarchy();
3324
+ }
3325
+ selectTab(tab) {
3326
+ this.selectedTab.set(tab);
3318
3327
  }
3319
3328
  initializeForm() {
3320
3329
  this.rightsForm = this.fb.group({
@@ -3357,6 +3366,24 @@ class CideLytFloatingEntityRightsSharingComponent {
3357
3366
  this.entitiesLoading.set(false);
3358
3367
  }
3359
3368
  }
3369
+ async loadHierarchy() {
3370
+ this.hierarchyLoading.set(true);
3371
+ try {
3372
+ // Mock hierarchy uses same type for simplicity
3373
+ const mockHierarchy = [
3374
+ { _id: 'root', syen_name: 'Root Entity', syen_entity_code: 'R001', syen_isactive: true },
3375
+ { _id: 'child-1', syen_name: 'Department A', syen_entity_code: 'D-A', syen_isactive: true },
3376
+ { _id: 'child-2', syen_name: 'Department B', syen_entity_code: 'D-B', syen_isactive: true }
3377
+ ];
3378
+ this.hierarchy.set(mockHierarchy);
3379
+ }
3380
+ catch (err) {
3381
+ console.error('Error loading hierarchy:', err);
3382
+ }
3383
+ finally {
3384
+ this.hierarchyLoading.set(false);
3385
+ }
3386
+ }
3360
3387
  selectEntity(entityId) {
3361
3388
  this.selectedEntityId.set(entityId);
3362
3389
  this.loadAccessPassData();
@@ -3406,148 +3433,198 @@ class CideLytFloatingEntityRightsSharingComponent {
3406
3433
  this.close.emit();
3407
3434
  }
3408
3435
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: CideLytFloatingEntityRightsSharingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3409
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", type: CideLytFloatingEntityRightsSharingComponent, isStandalone: true, selector: "cide-lyt-floating-entity-rights-sharing", inputs: { data: "data" }, outputs: { close: "close", save: "save" }, ngImport: i0, template: `
3410
- <!-- Entity Rights Sharing Content -->
3411
- <div class="tw-p-4 tw-overflow-y-auto tw-max-h-[calc(80vh-120px)] tw-scrollbar-thin tw-scrollbar-thumb-gray-300 tw-scrollbar-track-transparent tw-select-none">
3412
- <!-- Entity Selection -->
3413
- <div class="tw-mb-4">
3414
-
3415
- @if (entitiesLoading()) {
3416
- <div class="tw-flex tw-items-center tw-justify-center tw-py-6">
3417
- <cide-ele-spinner size="sm"></cide-ele-spinner>
3418
- <span class="tw-ml-3 tw-text-gray-600 tw-text-sm">Loading entities...</span>
3419
- </div>
3420
- } @else if (entities().length === 0) {
3421
- <div class="tw-text-center tw-py-6">
3422
- <div class="tw-w-10 tw-h-10 tw-bg-gray-100 tw-rounded-xl tw-flex tw-items-center tw-justify-center tw-mx-auto tw-mb-2">
3423
- <cide-ele-icon class="tw-w-5 tw-h-5 tw-text-gray-400">business</cide-ele-icon>
3424
- </div>
3425
- <p class="tw-text-gray-500 tw-text-sm">No entities available</p>
3426
- </div>
3427
- } @else {
3428
- <div class="tw-space-y-2">
3429
- @defer (when entities().length > 0) {
3430
- @for (entity of entities(); track entity._id || entity.syen_name) {
3431
- <div class="tw-bg-white tw-bg-opacity-80 tw-backdrop-blur-sm tw-border tw-border-gray-200 tw-border-opacity-50 tw-rounded-xl tw-p-3 tw-cursor-pointer tw-transition-all tw-duration-200 hover:tw-shadow-md hover:tw-border-blue-300 hover:tw-border-opacity-50 hover:tw-scale-[1.01] tw-group tw-select-none"
3432
- [class.tw-border-blue-500]="selectedEntityId() === entity._id"
3433
- [class.tw-bg-blue-50]="selectedEntityId() === entity._id"
3434
- (click)="selectEntity(entity._id || '')">
3435
- <div class="tw-flex tw-items-start tw-space-x-3">
3436
- <div class="tw-w-6 tw-h-6 tw-bg-gray-100 tw-rounded-lg tw-flex tw-items-center tw-justify-center tw-flex-shrink-0">
3437
- <cide-ele-icon class="tw-text-gray-600">person</cide-ele-icon>
3438
- </div>
3439
- <div class="tw-flex-1 tw-min-w-0">
3440
- <div class="tw-flex tw-items-center tw-space-x-2 tw-mb-1">
3441
- <h4 class="tw-text-sm tw-font-semibold tw-text-gray-900 tw-truncate">{{ entity.syen_name }}</h4>
3442
- @if (entity._id === 'owner-entity') {
3443
- <div class="tw-inline-flex tw-items-center tw-px-2 tw-py-0.5 tw-rounded-full tw-text-xs tw-font-medium tw-bg-green-100 tw-text-green-800 tw-space-x-1">
3444
- <cide-ele-icon>admin_panel_settings</cide-ele-icon>
3445
- <span>Owner</span>
3446
- </div>
3447
- }
3448
- </div>
3449
- <div class="tw-flex tw-items-center tw-space-x-3">
3450
- <div class="tw-flex tw-items-center tw-space-x-1">
3451
- <cide-ele-icon class="tw-text-gray-400">visibility</cide-ele-icon>
3452
- <span class="tw-text-xs tw-text-gray-500">View</span>
3453
- </div>
3454
- <div class="tw-flex tw-items-center tw-space-x-1">
3455
- <cide-ele-icon class="tw-text-gray-400">edit</cide-ele-icon>
3456
- <span class="tw-text-xs tw-text-gray-500">Edit</span>
3457
- </div>
3458
- </div>
3459
- </div>
3460
- @if (selectedEntityId() === entity._id) {
3461
- <div class="tw-w-4 tw-h-4 tw-bg-green-500 tw-rounded-full tw-flex tw-items-center tw-justify-center tw-flex-shrink-0">
3462
- <cide-ele-icon class="tw-text-white">done</cide-ele-icon>
3463
- </div>
3464
- }
3465
- </div>
3466
- </div>
3467
- }
3468
- } @placeholder {
3469
- <div class="tw-flex tw-items-center tw-justify-center tw-py-4">
3470
- <cide-ele-spinner size="sm"></cide-ele-spinner>
3471
- <span class="tw-ml-2 tw-text-sm tw-text-gray-600">Loading entities...</span>
3472
- </div>
3473
- }
3474
- </div>
3475
- }
3476
- </div>
3477
-
3478
- <!-- Rights Management -->
3479
- @if (selectedEntityId()) {
3480
- <div class="tw-bg-white tw-bg-opacity-80 tw-backdrop-blur-sm tw-border tw-border-gray-200 tw-border-opacity-50 tw-rounded-xl tw-p-3 tw-shadow-sm">
3481
- <div class="tw-flex tw-items-center tw-space-x-2 tw-mb-3">
3482
- <cide-ele-icon class="tw-text-green-600">security</cide-ele-icon>
3483
- <h3 class="tw-text-sm tw-font-semibold tw-text-gray-900">Manage Rights</h3>
3484
- </div>
3485
-
3486
- @if (accessPassLoading()) {
3487
- <div class="tw-flex tw-items-center tw-justify-center tw-min-h-[80px]">
3488
- <cide-ele-spinner size="sm"></cide-ele-spinner>
3489
- <span class="tw-ml-3 tw-text-gray-600 tw-text-sm">Loading...</span>
3490
- </div>
3491
- } @else {
3492
- @defer (when !accessPassLoading()) {
3493
- <form [formGroup]="rightsForm" (ngSubmit)="saveRights()">
3494
- <div class="tw-flex tw-flex-wrap tw-gap-3 tw-min-h-[80px] tw-items-center">
3495
- <div class="tw-flex tw-items-center tw-space-x-2">
3496
- <cide-ele-input
3497
- type="checkbox"
3498
- formControlName="can_view"
3499
- label="View">
3500
- </cide-ele-input>
3501
- </div>
3502
-
3503
- <div class="tw-flex tw-items-center tw-space-x-2">
3504
- <cide-ele-input
3505
- type="checkbox"
3506
- formControlName="can_edit"
3507
- label="Edit">
3508
- </cide-ele-input>
3509
- </div>
3510
-
3511
- <div class="tw-flex tw-items-center tw-space-x-2">
3512
- <cide-ele-input
3513
- type="checkbox"
3514
- formControlName="is_owner"
3515
- label="Is Owner">
3516
- </cide-ele-input>
3517
- </div>
3518
-
3519
- <div class="tw-flex tw-items-center tw-space-x-2">
3520
- <cide-ele-input
3521
- type="checkbox"
3522
- formControlName="syepm_isactive"
3523
- label="Is Active">
3524
- </cide-ele-input>
3525
- </div>
3526
- </div>
3527
- </form>
3528
- } @placeholder {
3529
- <div class="tw-flex tw-items-center tw-justify-center tw-min-h-[80px]">
3530
- <cide-ele-spinner size="sm"></cide-ele-spinner>
3531
- <span class="tw-ml-2 tw-text-sm tw-text-gray-600">Loading rights...</span>
3532
- </div>
3533
- }
3534
- }
3535
- </div>
3536
- }
3537
- </div>
3538
-
3539
- <!-- Footer -->
3540
- <div class="tw-bg-white tw-bg-opacity-80 tw-backdrop-blur-sm tw-px-4 tw-py-3 tw-border-t tw-border-gray-200 tw-border-opacity-30 tw-flex tw-justify-end tw-space-x-2">
3541
- <button cideEleButton variant="secondary" size="xs" type="button" (click)="onCancel()">
3542
- Cancel
3543
- </button>
3544
- @if (selectedEntityId()) {
3545
- <button cideEleButton variant="primary" size="xs" type="button" (click)="saveRights()"
3546
- [disabled]="rightsForm.invalid || saving()" [loading]="saving()">
3547
- {{ saving() ? 'Saving...' : 'Save' }}
3548
- </button>
3549
- }
3550
- </div>
3436
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", type: CideLytFloatingEntityRightsSharingComponent, isStandalone: true, selector: "cide-lyt-floating-entity-rights-sharing", inputs: { data: "data" }, outputs: { close: "close", save: "save" }, ngImport: i0, template: `
3437
+ <!-- Entity Rights Sharing Content -->
3438
+ <div class="tw-p-4 tw-overflow-y-auto tw-max-h-[calc(80vh-120px)] tw-scrollbar-thin tw-scrollbar-thumb-gray-300 tw-scrollbar-track-transparent tw-select-none">
3439
+ <!-- Tabs / Pills -->
3440
+ <div class="tw-mb-3 tw-flex tw-items-center tw-gap-2">
3441
+ <button type="button"
3442
+ class="tw-text-xs tw-font-medium tw-rounded-full tw-px-3 tw-py-1 tw-transition-colors"
3443
+ [class.tw-bg-blue-600]="selectedTab() === 'user'"
3444
+ [class.tw-text-white]="selectedTab() === 'user'"
3445
+ [class.tw-bg-gray-100]="selectedTab() !== 'user'"
3446
+ [class.tw-text-gray-700]="selectedTab() !== 'user'"
3447
+ (click)="selectTab('user')">
3448
+ User Linked
3449
+ </button>
3450
+ <button type="button"
3451
+ class="tw-text-xs tw-font-medium tw-rounded-full tw-px-3 tw-py-1 tw-transition-colors"
3452
+ [class.tw-bg-blue-600]="selectedTab() === 'hierarchy'"
3453
+ [class.tw-text-white]="selectedTab() === 'hierarchy'"
3454
+ [class.tw-bg-gray-100]="selectedTab() !== 'hierarchy'"
3455
+ [class.tw-text-gray-700]="selectedTab() !== 'hierarchy'"
3456
+ (click)="selectTab('hierarchy')">
3457
+ Entity Hierarchy
3458
+ </button>
3459
+ </div>
3460
+
3461
+ <!-- User Linked Entities -->
3462
+ @if (selectedTab() === 'user') {
3463
+ <div class="tw-mb-4">
3464
+
3465
+ @if (entitiesLoading()) {
3466
+ <div class="tw-flex tw-items-center tw-justify-center tw-py-6">
3467
+ <cide-ele-spinner size="sm"></cide-ele-spinner>
3468
+ <span class="tw-ml-3 tw-text-gray-600 tw-text-sm">Loading entities...</span>
3469
+ </div>
3470
+ } @else if (entities().length === 0) {
3471
+ <div class="tw-text-center tw-py-6">
3472
+ <div class="tw-w-10 tw-h-10 tw-bg-gray-100 tw-rounded-xl tw-flex tw-items-center tw-justify-center tw-mx-auto tw-mb-2">
3473
+ <cide-ele-icon class="tw-w-5 tw-h-5 tw-text-gray-400">business</cide-ele-icon>
3474
+ </div>
3475
+ <p class="tw-text-gray-500 tw-text-sm">No entities available</p>
3476
+ </div>
3477
+ } @else {
3478
+ <div class="tw-space-y-2">
3479
+ @defer (when entities().length > 0) {
3480
+ @for (entity of entities(); track entity._id || entity.syen_name) {
3481
+ <div class="tw-bg-white tw-bg-opacity-80 tw-backdrop-blur-sm tw-border tw-border-gray-200 tw-border-opacity-50 tw-rounded-xl tw-p-3 tw-cursor-pointer tw-transition-all tw-duration-200 hover:tw-shadow-md hover:tw-border-blue-300 hover:tw-border-opacity-50 hover:tw-scale-[1.01] tw-group tw-select-none"
3482
+ [class.tw-border-blue-500]="selectedEntityId() === entity._id"
3483
+ [class.tw-bg-blue-50]="selectedEntityId() === entity._id"
3484
+ (click)="selectEntity(entity._id || '')">
3485
+ <div class="tw-flex tw-items-start tw-space-x-3">
3486
+ <div class="tw-w-6 tw-h-6 tw-bg-gray-100 tw-rounded-lg tw-flex tw-items-center tw-justify-center tw-flex-shrink-0">
3487
+ <cide-ele-icon class="tw-text-gray-600">person</cide-ele-icon>
3488
+ </div>
3489
+ <div class="tw-flex-1 tw-min-w-0">
3490
+ <div class="tw-flex tw-items-center tw-space-x-2 tw-mb-1">
3491
+ <h4 class="tw-text-sm tw-font-semibold tw-text-gray-900 tw-truncate">{{ entity.syen_name }}</h4>
3492
+ @if (entity._id === 'owner-entity') {
3493
+ <div class="tw-inline-flex tw-items-center tw-px-2 tw-py-0.5 tw-rounded-full tw-text-xs tw-font-medium tw-bg-green-100 tw-text-green-800 tw-space-x-1">
3494
+ <cide-ele-icon>admin_panel_settings</cide-ele-icon>
3495
+ <span>Owner</span>
3496
+ </div>
3497
+ }
3498
+ </div>
3499
+ <div class="tw-flex tw-items-center tw-space-x-3">
3500
+ <div class="tw-flex tw-items-center tw-space-x-1">
3501
+ <cide-ele-icon class="tw-text-gray-400">visibility</cide-ele-icon>
3502
+ <span class="tw-text-xs tw-text-gray-500">View</span>
3503
+ </div>
3504
+ <div class="tw-flex tw-items-center tw-space-x-1">
3505
+ <cide-ele-icon class="tw-text-gray-400">edit</cide-ele-icon>
3506
+ <span class="tw-text-xs tw-text-gray-500">Edit</span>
3507
+ </div>
3508
+ </div>
3509
+ </div>
3510
+ @if (selectedEntityId() === entity._id) {
3511
+ <div class="tw-w-4 tw-h-4 tw-bg-green-500 tw-rounded-full tw-flex tw-items-center tw-justify-center tw-flex-shrink-0">
3512
+ <cide-ele-icon class="tw-text-white">done</cide-ele-icon>
3513
+ </div>
3514
+ }
3515
+ </div>
3516
+ </div>
3517
+ }
3518
+ } @placeholder {
3519
+ <div class="tw-flex tw-items-center tw-justify-center tw-py-4">
3520
+ <cide-ele-spinner size="sm"></cide-ele-spinner>
3521
+ <span class="tw-ml-2 tw-text-sm tw-text-gray-600">Loading entities...</span>
3522
+ </div>
3523
+ }
3524
+ </div>
3525
+ }
3526
+ </div>
3527
+ }
3528
+
3529
+ <!-- Entity Hierarchy -->
3530
+ @if (selectedTab() === 'hierarchy') {
3531
+ <div class="tw-mb-4">
3532
+ @if (hierarchyLoading()) {
3533
+ <div class="tw-flex tw-items-center tw-justify-center tw-py-6">
3534
+ <cide-ele-spinner size="sm"></cide-ele-spinner>
3535
+ <span class="tw-ml-3 tw-text-gray-600 tw-text-sm">Loading hierarchy...</span>
3536
+ </div>
3537
+ } @else {
3538
+ <div class="tw-space-y-2">
3539
+ @for (node of hierarchy(); track node._id) {
3540
+ <div class="tw-bg-white tw-border tw-border-gray-200 tw-rounded-xl tw-p-3">
3541
+ <div class="tw-flex tw-items-center tw-justify-between">
3542
+ <div class="tw-flex tw-items-center tw-gap-2">
3543
+ <cide-ele-icon class="tw-text-gray-500">account_tree</cide-ele-icon>
3544
+ <span class="tw-text-sm tw-font-medium tw-text-gray-800">{{ node.syen_name }}</span>
3545
+ </div>
3546
+ <span class="tw-text-xs tw-text-gray-500">Code: {{ node.syen_entity_code }}</span>
3547
+ </div>
3548
+ </div>
3549
+ }
3550
+ </div>
3551
+ }
3552
+ </div>
3553
+ }
3554
+
3555
+ <!-- Rights Management -->
3556
+ @if (selectedEntityId()) {
3557
+ <div class="tw-bg-white tw-bg-opacity-80 tw-backdrop-blur-sm tw-border tw-border-gray-200 tw-border-opacity-50 tw-rounded-xl tw-p-3 tw-shadow-sm">
3558
+ <div class="tw-flex tw-items-center tw-space-x-2 tw-mb-3">
3559
+ <cide-ele-icon class="tw-text-green-600">security</cide-ele-icon>
3560
+ <h3 class="tw-text-sm tw-font-semibold tw-text-gray-900">Manage Rights</h3>
3561
+ </div>
3562
+
3563
+ @if (accessPassLoading()) {
3564
+ <div class="tw-flex tw-items-center tw-justify-center tw-min-h-[80px]">
3565
+ <cide-ele-spinner size="sm"></cide-ele-spinner>
3566
+ <span class="tw-ml-3 tw-text-gray-600 tw-text-sm">Loading...</span>
3567
+ </div>
3568
+ } @else {
3569
+ @defer (when !accessPassLoading()) {
3570
+ <form [formGroup]="rightsForm" (ngSubmit)="saveRights()">
3571
+ <div class="tw-flex tw-flex-wrap tw-gap-3 tw-min-h-[80px] tw-items-center">
3572
+ <div class="tw-flex tw-items-center tw-space-x-2">
3573
+ <cide-ele-input
3574
+ type="checkbox"
3575
+ formControlName="can_view"
3576
+ label="View">
3577
+ </cide-ele-input>
3578
+ </div>
3579
+
3580
+ <div class="tw-flex tw-items-center tw-space-x-2">
3581
+ <cide-ele-input
3582
+ type="checkbox"
3583
+ formControlName="can_edit"
3584
+ label="Edit">
3585
+ </cide-ele-input>
3586
+ </div>
3587
+
3588
+ <div class="tw-flex tw-items-center tw-space-x-2">
3589
+ <cide-ele-input
3590
+ type="checkbox"
3591
+ formControlName="is_owner"
3592
+ label="Is Owner">
3593
+ </cide-ele-input>
3594
+ </div>
3595
+
3596
+ <div class="tw-flex tw-items-center tw-space-x-2">
3597
+ <cide-ele-input
3598
+ type="checkbox"
3599
+ formControlName="syepm_isactive"
3600
+ label="Is Active">
3601
+ </cide-ele-input>
3602
+ </div>
3603
+ </div>
3604
+ </form>
3605
+ } @placeholder {
3606
+ <div class="tw-flex tw-items-center tw-justify-center tw-min-h-[80px]">
3607
+ <cide-ele-spinner size="sm"></cide-ele-spinner>
3608
+ <span class="tw-ml-2 tw-text-sm tw-text-gray-600">Loading rights...</span>
3609
+ </div>
3610
+ }
3611
+ }
3612
+ </div>
3613
+ }
3614
+ </div>
3615
+
3616
+ <!-- Footer -->
3617
+ <div class="tw-bg-white tw-bg-opacity-80 tw-backdrop-blur-sm tw-px-4 tw-py-3 tw-border-t tw-border-gray-200 tw-border-opacity-30 tw-flex tw-justify-end tw-space-x-2">
3618
+ <button cideEleButton variant="secondary" size="xs" type="button" (click)="onCancel()">
3619
+ Cancel
3620
+ </button>
3621
+ @if (selectedEntityId()) {
3622
+ <button cideEleButton variant="primary" size="xs" type="button" (click)="saveRights()"
3623
+ [disabled]="rightsForm.invalid || saving()" [loading]="saving()">
3624
+ {{ saving() ? 'Saving...' : 'Save' }}
3625
+ </button>
3626
+ }
3627
+ </div>
3551
3628
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: CideEleButtonComponent, selector: "button[cideEleButton], a[cideEleButton]", inputs: ["label", "variant", "size", "type", "shape", "elevation", "disabled", "id", "loading", "fullWidth", "leftIcon", "rightIcon", "customClass", "tooltip", "ariaLabel", "testId", "routerLink", "routerExtras", "preventDoubleClick", "animated"], outputs: ["btnClick", "doubleClick"] }, { kind: "component", type: CideIconComponent, selector: "cide-ele-icon", inputs: ["size", "type", "toolTip"] }, { kind: "component", type: CideSpinnerComponent, selector: "cide-ele-spinner", inputs: ["size", "type"] }], deferBlockDependencies: [() => [CideIconComponent], () => [i2$1.ɵNgNoValidate, i2$1.NgControlStatus, i2$1.NgControlStatusGroup, i2$1.FormGroupDirective, i2$1.FormControlName, CideInputComponent]] });
3552
3629
  }
3553
3630
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: CideLytFloatingEntityRightsSharingComponent, decorators: [{
@@ -3559,148 +3636,198 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImpor
3559
3636
  CideInputComponent,
3560
3637
  CideIconComponent,
3561
3638
  CideSpinnerComponent
3562
- ], template: `
3563
- <!-- Entity Rights Sharing Content -->
3564
- <div class="tw-p-4 tw-overflow-y-auto tw-max-h-[calc(80vh-120px)] tw-scrollbar-thin tw-scrollbar-thumb-gray-300 tw-scrollbar-track-transparent tw-select-none">
3565
- <!-- Entity Selection -->
3566
- <div class="tw-mb-4">
3567
-
3568
- @if (entitiesLoading()) {
3569
- <div class="tw-flex tw-items-center tw-justify-center tw-py-6">
3570
- <cide-ele-spinner size="sm"></cide-ele-spinner>
3571
- <span class="tw-ml-3 tw-text-gray-600 tw-text-sm">Loading entities...</span>
3572
- </div>
3573
- } @else if (entities().length === 0) {
3574
- <div class="tw-text-center tw-py-6">
3575
- <div class="tw-w-10 tw-h-10 tw-bg-gray-100 tw-rounded-xl tw-flex tw-items-center tw-justify-center tw-mx-auto tw-mb-2">
3576
- <cide-ele-icon class="tw-w-5 tw-h-5 tw-text-gray-400">business</cide-ele-icon>
3577
- </div>
3578
- <p class="tw-text-gray-500 tw-text-sm">No entities available</p>
3579
- </div>
3580
- } @else {
3581
- <div class="tw-space-y-2">
3582
- @defer (when entities().length > 0) {
3583
- @for (entity of entities(); track entity._id || entity.syen_name) {
3584
- <div class="tw-bg-white tw-bg-opacity-80 tw-backdrop-blur-sm tw-border tw-border-gray-200 tw-border-opacity-50 tw-rounded-xl tw-p-3 tw-cursor-pointer tw-transition-all tw-duration-200 hover:tw-shadow-md hover:tw-border-blue-300 hover:tw-border-opacity-50 hover:tw-scale-[1.01] tw-group tw-select-none"
3585
- [class.tw-border-blue-500]="selectedEntityId() === entity._id"
3586
- [class.tw-bg-blue-50]="selectedEntityId() === entity._id"
3587
- (click)="selectEntity(entity._id || '')">
3588
- <div class="tw-flex tw-items-start tw-space-x-3">
3589
- <div class="tw-w-6 tw-h-6 tw-bg-gray-100 tw-rounded-lg tw-flex tw-items-center tw-justify-center tw-flex-shrink-0">
3590
- <cide-ele-icon class="tw-text-gray-600">person</cide-ele-icon>
3591
- </div>
3592
- <div class="tw-flex-1 tw-min-w-0">
3593
- <div class="tw-flex tw-items-center tw-space-x-2 tw-mb-1">
3594
- <h4 class="tw-text-sm tw-font-semibold tw-text-gray-900 tw-truncate">{{ entity.syen_name }}</h4>
3595
- @if (entity._id === 'owner-entity') {
3596
- <div class="tw-inline-flex tw-items-center tw-px-2 tw-py-0.5 tw-rounded-full tw-text-xs tw-font-medium tw-bg-green-100 tw-text-green-800 tw-space-x-1">
3597
- <cide-ele-icon>admin_panel_settings</cide-ele-icon>
3598
- <span>Owner</span>
3599
- </div>
3600
- }
3601
- </div>
3602
- <div class="tw-flex tw-items-center tw-space-x-3">
3603
- <div class="tw-flex tw-items-center tw-space-x-1">
3604
- <cide-ele-icon class="tw-text-gray-400">visibility</cide-ele-icon>
3605
- <span class="tw-text-xs tw-text-gray-500">View</span>
3606
- </div>
3607
- <div class="tw-flex tw-items-center tw-space-x-1">
3608
- <cide-ele-icon class="tw-text-gray-400">edit</cide-ele-icon>
3609
- <span class="tw-text-xs tw-text-gray-500">Edit</span>
3610
- </div>
3611
- </div>
3612
- </div>
3613
- @if (selectedEntityId() === entity._id) {
3614
- <div class="tw-w-4 tw-h-4 tw-bg-green-500 tw-rounded-full tw-flex tw-items-center tw-justify-center tw-flex-shrink-0">
3615
- <cide-ele-icon class="tw-text-white">done</cide-ele-icon>
3616
- </div>
3617
- }
3618
- </div>
3619
- </div>
3620
- }
3621
- } @placeholder {
3622
- <div class="tw-flex tw-items-center tw-justify-center tw-py-4">
3623
- <cide-ele-spinner size="sm"></cide-ele-spinner>
3624
- <span class="tw-ml-2 tw-text-sm tw-text-gray-600">Loading entities...</span>
3625
- </div>
3626
- }
3627
- </div>
3628
- }
3629
- </div>
3630
-
3631
- <!-- Rights Management -->
3632
- @if (selectedEntityId()) {
3633
- <div class="tw-bg-white tw-bg-opacity-80 tw-backdrop-blur-sm tw-border tw-border-gray-200 tw-border-opacity-50 tw-rounded-xl tw-p-3 tw-shadow-sm">
3634
- <div class="tw-flex tw-items-center tw-space-x-2 tw-mb-3">
3635
- <cide-ele-icon class="tw-text-green-600">security</cide-ele-icon>
3636
- <h3 class="tw-text-sm tw-font-semibold tw-text-gray-900">Manage Rights</h3>
3637
- </div>
3638
-
3639
- @if (accessPassLoading()) {
3640
- <div class="tw-flex tw-items-center tw-justify-center tw-min-h-[80px]">
3641
- <cide-ele-spinner size="sm"></cide-ele-spinner>
3642
- <span class="tw-ml-3 tw-text-gray-600 tw-text-sm">Loading...</span>
3643
- </div>
3644
- } @else {
3645
- @defer (when !accessPassLoading()) {
3646
- <form [formGroup]="rightsForm" (ngSubmit)="saveRights()">
3647
- <div class="tw-flex tw-flex-wrap tw-gap-3 tw-min-h-[80px] tw-items-center">
3648
- <div class="tw-flex tw-items-center tw-space-x-2">
3649
- <cide-ele-input
3650
- type="checkbox"
3651
- formControlName="can_view"
3652
- label="View">
3653
- </cide-ele-input>
3654
- </div>
3655
-
3656
- <div class="tw-flex tw-items-center tw-space-x-2">
3657
- <cide-ele-input
3658
- type="checkbox"
3659
- formControlName="can_edit"
3660
- label="Edit">
3661
- </cide-ele-input>
3662
- </div>
3663
-
3664
- <div class="tw-flex tw-items-center tw-space-x-2">
3665
- <cide-ele-input
3666
- type="checkbox"
3667
- formControlName="is_owner"
3668
- label="Is Owner">
3669
- </cide-ele-input>
3670
- </div>
3671
-
3672
- <div class="tw-flex tw-items-center tw-space-x-2">
3673
- <cide-ele-input
3674
- type="checkbox"
3675
- formControlName="syepm_isactive"
3676
- label="Is Active">
3677
- </cide-ele-input>
3678
- </div>
3679
- </div>
3680
- </form>
3681
- } @placeholder {
3682
- <div class="tw-flex tw-items-center tw-justify-center tw-min-h-[80px]">
3683
- <cide-ele-spinner size="sm"></cide-ele-spinner>
3684
- <span class="tw-ml-2 tw-text-sm tw-text-gray-600">Loading rights...</span>
3685
- </div>
3686
- }
3687
- }
3688
- </div>
3689
- }
3690
- </div>
3691
-
3692
- <!-- Footer -->
3693
- <div class="tw-bg-white tw-bg-opacity-80 tw-backdrop-blur-sm tw-px-4 tw-py-3 tw-border-t tw-border-gray-200 tw-border-opacity-30 tw-flex tw-justify-end tw-space-x-2">
3694
- <button cideEleButton variant="secondary" size="xs" type="button" (click)="onCancel()">
3695
- Cancel
3696
- </button>
3697
- @if (selectedEntityId()) {
3698
- <button cideEleButton variant="primary" size="xs" type="button" (click)="saveRights()"
3699
- [disabled]="rightsForm.invalid || saving()" [loading]="saving()">
3700
- {{ saving() ? 'Saving...' : 'Save' }}
3701
- </button>
3702
- }
3703
- </div>
3639
+ ], template: `
3640
+ <!-- Entity Rights Sharing Content -->
3641
+ <div class="tw-p-4 tw-overflow-y-auto tw-max-h-[calc(80vh-120px)] tw-scrollbar-thin tw-scrollbar-thumb-gray-300 tw-scrollbar-track-transparent tw-select-none">
3642
+ <!-- Tabs / Pills -->
3643
+ <div class="tw-mb-3 tw-flex tw-items-center tw-gap-2">
3644
+ <button type="button"
3645
+ class="tw-text-xs tw-font-medium tw-rounded-full tw-px-3 tw-py-1 tw-transition-colors"
3646
+ [class.tw-bg-blue-600]="selectedTab() === 'user'"
3647
+ [class.tw-text-white]="selectedTab() === 'user'"
3648
+ [class.tw-bg-gray-100]="selectedTab() !== 'user'"
3649
+ [class.tw-text-gray-700]="selectedTab() !== 'user'"
3650
+ (click)="selectTab('user')">
3651
+ User Linked
3652
+ </button>
3653
+ <button type="button"
3654
+ class="tw-text-xs tw-font-medium tw-rounded-full tw-px-3 tw-py-1 tw-transition-colors"
3655
+ [class.tw-bg-blue-600]="selectedTab() === 'hierarchy'"
3656
+ [class.tw-text-white]="selectedTab() === 'hierarchy'"
3657
+ [class.tw-bg-gray-100]="selectedTab() !== 'hierarchy'"
3658
+ [class.tw-text-gray-700]="selectedTab() !== 'hierarchy'"
3659
+ (click)="selectTab('hierarchy')">
3660
+ Entity Hierarchy
3661
+ </button>
3662
+ </div>
3663
+
3664
+ <!-- User Linked Entities -->
3665
+ @if (selectedTab() === 'user') {
3666
+ <div class="tw-mb-4">
3667
+
3668
+ @if (entitiesLoading()) {
3669
+ <div class="tw-flex tw-items-center tw-justify-center tw-py-6">
3670
+ <cide-ele-spinner size="sm"></cide-ele-spinner>
3671
+ <span class="tw-ml-3 tw-text-gray-600 tw-text-sm">Loading entities...</span>
3672
+ </div>
3673
+ } @else if (entities().length === 0) {
3674
+ <div class="tw-text-center tw-py-6">
3675
+ <div class="tw-w-10 tw-h-10 tw-bg-gray-100 tw-rounded-xl tw-flex tw-items-center tw-justify-center tw-mx-auto tw-mb-2">
3676
+ <cide-ele-icon class="tw-w-5 tw-h-5 tw-text-gray-400">business</cide-ele-icon>
3677
+ </div>
3678
+ <p class="tw-text-gray-500 tw-text-sm">No entities available</p>
3679
+ </div>
3680
+ } @else {
3681
+ <div class="tw-space-y-2">
3682
+ @defer (when entities().length > 0) {
3683
+ @for (entity of entities(); track entity._id || entity.syen_name) {
3684
+ <div class="tw-bg-white tw-bg-opacity-80 tw-backdrop-blur-sm tw-border tw-border-gray-200 tw-border-opacity-50 tw-rounded-xl tw-p-3 tw-cursor-pointer tw-transition-all tw-duration-200 hover:tw-shadow-md hover:tw-border-blue-300 hover:tw-border-opacity-50 hover:tw-scale-[1.01] tw-group tw-select-none"
3685
+ [class.tw-border-blue-500]="selectedEntityId() === entity._id"
3686
+ [class.tw-bg-blue-50]="selectedEntityId() === entity._id"
3687
+ (click)="selectEntity(entity._id || '')">
3688
+ <div class="tw-flex tw-items-start tw-space-x-3">
3689
+ <div class="tw-w-6 tw-h-6 tw-bg-gray-100 tw-rounded-lg tw-flex tw-items-center tw-justify-center tw-flex-shrink-0">
3690
+ <cide-ele-icon class="tw-text-gray-600">person</cide-ele-icon>
3691
+ </div>
3692
+ <div class="tw-flex-1 tw-min-w-0">
3693
+ <div class="tw-flex tw-items-center tw-space-x-2 tw-mb-1">
3694
+ <h4 class="tw-text-sm tw-font-semibold tw-text-gray-900 tw-truncate">{{ entity.syen_name }}</h4>
3695
+ @if (entity._id === 'owner-entity') {
3696
+ <div class="tw-inline-flex tw-items-center tw-px-2 tw-py-0.5 tw-rounded-full tw-text-xs tw-font-medium tw-bg-green-100 tw-text-green-800 tw-space-x-1">
3697
+ <cide-ele-icon>admin_panel_settings</cide-ele-icon>
3698
+ <span>Owner</span>
3699
+ </div>
3700
+ }
3701
+ </div>
3702
+ <div class="tw-flex tw-items-center tw-space-x-3">
3703
+ <div class="tw-flex tw-items-center tw-space-x-1">
3704
+ <cide-ele-icon class="tw-text-gray-400">visibility</cide-ele-icon>
3705
+ <span class="tw-text-xs tw-text-gray-500">View</span>
3706
+ </div>
3707
+ <div class="tw-flex tw-items-center tw-space-x-1">
3708
+ <cide-ele-icon class="tw-text-gray-400">edit</cide-ele-icon>
3709
+ <span class="tw-text-xs tw-text-gray-500">Edit</span>
3710
+ </div>
3711
+ </div>
3712
+ </div>
3713
+ @if (selectedEntityId() === entity._id) {
3714
+ <div class="tw-w-4 tw-h-4 tw-bg-green-500 tw-rounded-full tw-flex tw-items-center tw-justify-center tw-flex-shrink-0">
3715
+ <cide-ele-icon class="tw-text-white">done</cide-ele-icon>
3716
+ </div>
3717
+ }
3718
+ </div>
3719
+ </div>
3720
+ }
3721
+ } @placeholder {
3722
+ <div class="tw-flex tw-items-center tw-justify-center tw-py-4">
3723
+ <cide-ele-spinner size="sm"></cide-ele-spinner>
3724
+ <span class="tw-ml-2 tw-text-sm tw-text-gray-600">Loading entities...</span>
3725
+ </div>
3726
+ }
3727
+ </div>
3728
+ }
3729
+ </div>
3730
+ }
3731
+
3732
+ <!-- Entity Hierarchy -->
3733
+ @if (selectedTab() === 'hierarchy') {
3734
+ <div class="tw-mb-4">
3735
+ @if (hierarchyLoading()) {
3736
+ <div class="tw-flex tw-items-center tw-justify-center tw-py-6">
3737
+ <cide-ele-spinner size="sm"></cide-ele-spinner>
3738
+ <span class="tw-ml-3 tw-text-gray-600 tw-text-sm">Loading hierarchy...</span>
3739
+ </div>
3740
+ } @else {
3741
+ <div class="tw-space-y-2">
3742
+ @for (node of hierarchy(); track node._id) {
3743
+ <div class="tw-bg-white tw-border tw-border-gray-200 tw-rounded-xl tw-p-3">
3744
+ <div class="tw-flex tw-items-center tw-justify-between">
3745
+ <div class="tw-flex tw-items-center tw-gap-2">
3746
+ <cide-ele-icon class="tw-text-gray-500">account_tree</cide-ele-icon>
3747
+ <span class="tw-text-sm tw-font-medium tw-text-gray-800">{{ node.syen_name }}</span>
3748
+ </div>
3749
+ <span class="tw-text-xs tw-text-gray-500">Code: {{ node.syen_entity_code }}</span>
3750
+ </div>
3751
+ </div>
3752
+ }
3753
+ </div>
3754
+ }
3755
+ </div>
3756
+ }
3757
+
3758
+ <!-- Rights Management -->
3759
+ @if (selectedEntityId()) {
3760
+ <div class="tw-bg-white tw-bg-opacity-80 tw-backdrop-blur-sm tw-border tw-border-gray-200 tw-border-opacity-50 tw-rounded-xl tw-p-3 tw-shadow-sm">
3761
+ <div class="tw-flex tw-items-center tw-space-x-2 tw-mb-3">
3762
+ <cide-ele-icon class="tw-text-green-600">security</cide-ele-icon>
3763
+ <h3 class="tw-text-sm tw-font-semibold tw-text-gray-900">Manage Rights</h3>
3764
+ </div>
3765
+
3766
+ @if (accessPassLoading()) {
3767
+ <div class="tw-flex tw-items-center tw-justify-center tw-min-h-[80px]">
3768
+ <cide-ele-spinner size="sm"></cide-ele-spinner>
3769
+ <span class="tw-ml-3 tw-text-gray-600 tw-text-sm">Loading...</span>
3770
+ </div>
3771
+ } @else {
3772
+ @defer (when !accessPassLoading()) {
3773
+ <form [formGroup]="rightsForm" (ngSubmit)="saveRights()">
3774
+ <div class="tw-flex tw-flex-wrap tw-gap-3 tw-min-h-[80px] tw-items-center">
3775
+ <div class="tw-flex tw-items-center tw-space-x-2">
3776
+ <cide-ele-input
3777
+ type="checkbox"
3778
+ formControlName="can_view"
3779
+ label="View">
3780
+ </cide-ele-input>
3781
+ </div>
3782
+
3783
+ <div class="tw-flex tw-items-center tw-space-x-2">
3784
+ <cide-ele-input
3785
+ type="checkbox"
3786
+ formControlName="can_edit"
3787
+ label="Edit">
3788
+ </cide-ele-input>
3789
+ </div>
3790
+
3791
+ <div class="tw-flex tw-items-center tw-space-x-2">
3792
+ <cide-ele-input
3793
+ type="checkbox"
3794
+ formControlName="is_owner"
3795
+ label="Is Owner">
3796
+ </cide-ele-input>
3797
+ </div>
3798
+
3799
+ <div class="tw-flex tw-items-center tw-space-x-2">
3800
+ <cide-ele-input
3801
+ type="checkbox"
3802
+ formControlName="syepm_isactive"
3803
+ label="Is Active">
3804
+ </cide-ele-input>
3805
+ </div>
3806
+ </div>
3807
+ </form>
3808
+ } @placeholder {
3809
+ <div class="tw-flex tw-items-center tw-justify-center tw-min-h-[80px]">
3810
+ <cide-ele-spinner size="sm"></cide-ele-spinner>
3811
+ <span class="tw-ml-2 tw-text-sm tw-text-gray-600">Loading rights...</span>
3812
+ </div>
3813
+ }
3814
+ }
3815
+ </div>
3816
+ }
3817
+ </div>
3818
+
3819
+ <!-- Footer -->
3820
+ <div class="tw-bg-white tw-bg-opacity-80 tw-backdrop-blur-sm tw-px-4 tw-py-3 tw-border-t tw-border-gray-200 tw-border-opacity-30 tw-flex tw-justify-end tw-space-x-2">
3821
+ <button cideEleButton variant="secondary" size="xs" type="button" (click)="onCancel()">
3822
+ Cancel
3823
+ </button>
3824
+ @if (selectedEntityId()) {
3825
+ <button cideEleButton variant="primary" size="xs" type="button" (click)="saveRights()"
3826
+ [disabled]="rightsForm.invalid || saving()" [loading]="saving()">
3827
+ {{ saving() ? 'Saving...' : 'Save' }}
3828
+ </button>
3829
+ }
3830
+ </div>
3704
3831
  ` }]
3705
3832
  }], propDecorators: { data: [{
3706
3833
  type: Input
@@ -3803,4 +3930,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImpor
3803
3930
  */
3804
3931
 
3805
3932
  export { AppStateHelperService as A, CideLytSharedWrapperComponent as C, ENVIRONMENT_CONFIG as E, CideLytSidebarService as a, CideLytRequestService as b, CideLytSidedrawerService as c, CideLytThemeService as d, CloudIdeLayoutService as e, CloudIdeLayoutComponent as f, CideLytSharedService as g, layoutControlPannelChildRoutes as h, CustomRouteReuseStrategy as i, AppStateService as j, CideLytUserStatusService as k, layoutRoutes as l, CacheManagerService as m, CideLytFileManagerService as n, CideLytFloatingEntityRightsSharingComponent as o, processThemeVariable as p, CideLytFloatingEntityRightsSharingService as q, setCSSVariable as s, themeFactory as t };
3806
- //# sourceMappingURL=cloud-ide-layout-cloud-ide-layout-B7zJJ9zM.mjs.map
3933
+ //# sourceMappingURL=cloud-ide-layout-cloud-ide-layout-o_bwZvM8.mjs.map