cloud-ide-layout 1.0.142 → 1.0.144
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/fesm2022/{cloud-ide-layout-cloud-ide-layout-kPzrNdq8.mjs → cloud-ide-layout-cloud-ide-layout-DAMoriNy.mjs} +6 -6
- package/fesm2022/{cloud-ide-layout-cloud-ide-layout-kPzrNdq8.mjs.map → cloud-ide-layout-cloud-ide-layout-DAMoriNy.mjs.map} +1 -1
- package/fesm2022/{cloud-ide-layout-dashboard-manager.component-DzI_ZzYo.mjs → cloud-ide-layout-dashboard-manager.component-CLK3GEDE.mjs} +2 -2
- package/fesm2022/{cloud-ide-layout-dashboard-manager.component-DzI_ZzYo.mjs.map → cloud-ide-layout-dashboard-manager.component-CLK3GEDE.mjs.map} +1 -1
- package/fesm2022/{cloud-ide-layout-drawer-theme.component-DKtGyOSb.mjs → cloud-ide-layout-drawer-theme.component-CXtOrrAi.mjs} +2 -2
- package/fesm2022/{cloud-ide-layout-drawer-theme.component-DKtGyOSb.mjs.map → cloud-ide-layout-drawer-theme.component-CXtOrrAi.mjs.map} +1 -1
- package/fesm2022/{cloud-ide-layout-floating-entity-selection.component-C8BmpX1i.mjs → cloud-ide-layout-floating-entity-selection.component-DY5alAWh.mjs} +104 -71
- package/fesm2022/cloud-ide-layout-floating-entity-selection.component-DY5alAWh.mjs.map +1 -0
- package/fesm2022/{cloud-ide-layout-home-wrapper.component-BglE2JPh.mjs → cloud-ide-layout-home-wrapper.component-CyQ6WbYZ.mjs} +2 -2
- package/fesm2022/{cloud-ide-layout-home-wrapper.component-BglE2JPh.mjs.map → cloud-ide-layout-home-wrapper.component-CyQ6WbYZ.mjs.map} +1 -1
- package/fesm2022/{cloud-ide-layout-sidedrawer-notes.component-BKzulMu8.mjs → cloud-ide-layout-sidedrawer-notes.component-Dn7UiMOo.mjs} +2 -2
- package/fesm2022/{cloud-ide-layout-sidedrawer-notes.component-BKzulMu8.mjs.map → cloud-ide-layout-sidedrawer-notes.component-Dn7UiMOo.mjs.map} +1 -1
- package/fesm2022/cloud-ide-layout.mjs +1 -1
- package/package.json +1 -1
- package/fesm2022/cloud-ide-layout-floating-entity-selection.component-C8BmpX1i.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-ide-layout-sidedrawer-notes.component-BKzulMu8.mjs","sources":["../../../projects/cloud-ide-layout/src/lib/layout/sidedrawer/sidedrawer-notes/sidedrawer-notes.service.ts","../../../projects/cloud-ide-layout/src/lib/layout/sidedrawer/cide-lyt-drawer-base.class.ts","../../../projects/cloud-ide-layout/src/lib/layout/sidedrawer/sidedrawer-notes/sidedrawer-notes.component.ts","../../../projects/cloud-ide-layout/src/lib/layout/sidedrawer/sidedrawer-notes/sidedrawer-notes.component.html"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { ICoreSypn, IPageNotesManagerCreateUpdateControllerRespoonse, IPageNotesManagerListControllerRespoonse, cidePath, coreRoutesUrl, hostManagerRoutesUrl } from 'cloud-ide-lms-model';\r\nimport { Observable, of } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CideLytDrawerNotesService {\r\n // Modern Angular v20 dependency injection pattern\r\n private http = inject(HttpClient);\r\n\r\n constructor() {\r\n // Modern Angular v20 pattern: Use constructor for initialization only\r\n }\r\n\r\n getNotes(): Observable<ICoreSypn[]> {\r\n const url = cidePath.join([\r\n hostManagerRoutesUrl.cideSuiteHost,\r\n coreRoutesUrl.module,\r\n coreRoutesUrl.systemPageNotesManager\r\n ]);\r\n return this.http.get<IPageNotesManagerListControllerRespoonse>(url).pipe(map((res) => res.data || []));\r\n }\r\n\r\n addNote(note: ICoreSypn): Observable<unknown> {\r\n const url = cidePath.join([\r\n hostManagerRoutesUrl.cideSuiteHost,\r\n coreRoutesUrl.module,\r\n coreRoutesUrl.systemPageNotesManager\r\n ]);\r\n return this.http.post<IPageNotesManagerCreateUpdateControllerRespoonse>(url, note).pipe(map((res) => res.data));\r\n }\r\n\r\n updateNote(note: ICoreSypn): Observable<unknown> {\r\n const url = cidePath.join([\r\n hostManagerRoutesUrl.cideSuiteHost,\r\n coreRoutesUrl.module,\r\n coreRoutesUrl.systemPageNotesManager\r\n ]);\r\n return this.http.post<IPageNotesManagerCreateUpdateControllerRespoonse>(url, note).pipe(map((res) => res.data));\r\n }\r\n\r\n deleteNote(noteId: string): Observable<unknown> {\r\n // Mock implementation: simulate deleting a note.\r\n console.log('Deleting note with ID:', noteId);\r\n return of({ success: true });\r\n }\r\n\r\n // Additional methods for updating and deleting notes could be added here.\r\n // You might also include error handling or more complex data manipulation.\r\n}","import { Directive, OnInit, inject } from '@angular/core';\r\nimport { CideLytSidedrawerService } from './sidedrawer.service';\r\n\r\n@Directive()\r\nexport abstract class CideLytDrawerBase implements OnInit {\r\n private _pageId: string | null = null;\r\n private _themeId: string | null = null;\r\n protected sidedrawerService = inject(CideLytSidedrawerService);\r\n\r\n ngOnInit(): void {\r\n // Automatically initialize context from the service\r\n const pageId = this.sidedrawerService.pageId;\r\n const themeId = this.sidedrawerService.themeId;\r\n if (pageId && themeId) {\r\n this.setContext(pageId, themeId);\r\n }\r\n this.afterContextInit();\r\n }\r\n\r\n // Child classes can override this for additional setup\r\n protected afterContextInit(): void {}\r\n\r\n setContext(pageId: string, themeId: string) {\r\n this._pageId = pageId;\r\n this._themeId = themeId;\r\n }\r\n\r\n get pageId(): string | null {\r\n return this._pageId;\r\n }\r\n\r\n get themeId(): string | null {\r\n return this._themeId;\r\n }\r\n\r\n protected getStorageKey(suffix: string): string {\r\n return `drawer_${suffix}_${this._pageId || 'unknown'}`;\r\n }\r\n} ","import { CommonModule } from '@angular/common';\r\nimport { Component, OnInit, inject, signal } from '@angular/core';\r\nimport { ReactiveFormsModule, FormBuilder, FormGroup } from '@angular/forms';\r\nimport { CideLytDrawerNotesService } from './sidedrawer-notes.service';\r\nimport { ICoreSypn } from 'cloud-ide-lms-model';\r\nimport { CideInputComponent } from 'cloud-ide-element';\r\nimport { CideEleButtonComponent } from 'cloud-ide-element';\r\nimport { CideTextareaComponent } from 'cloud-ide-element';\r\nimport { AppStateHelperService } from '../../../services/app-state/app-state-helper.service';\r\nimport { CideLytDrawerBase } from '../cide-lyt-drawer-base.class';\r\n\r\nexport interface NewNoteModel {\r\n title: string;\r\n description: string;\r\n isPageSpecific: boolean;\r\n isUserSpecific: boolean;\r\n isEntitySpecific: boolean;\r\n isThemeSpecific: boolean;\r\n}\r\n\r\nexport interface NotesComponentState {\r\n newNoteModel: NewNoteModel;\r\n isFormVisible: boolean;\r\n scrollTop: number;\r\n}\r\n\r\n@Component({\r\n selector: 'cide-lyt-sidedrawer-notes',\r\n standalone: true,\r\n imports: [CommonModule, ReactiveFormsModule, CideInputComponent, CideEleButtonComponent, CideTextareaComponent],\r\n templateUrl: './sidedrawer-notes.component.html',\r\n styleUrl: './sidedrawer-notes.component.css'\r\n})\r\nexport class CideLytSidedrawerNotesComponent extends CideLytDrawerBase implements OnInit {\r\n private notesSignal = signal<ICoreSypn[]>([]);\r\n notes = this.notesSignal.asReadonly();\r\n isFormVisible = false;\r\n isEditing = false;\r\n editingNoteId: string | null = null;\r\n hoveredNoteIndex: number | null = null;\r\n noteForm!: FormGroup;\r\n private notesService = inject(CideLytDrawerNotesService);\r\n private fb = inject(FormBuilder);\r\n private appState = inject(AppStateHelperService);\r\n\r\n override ngOnInit(): void {\r\n super.ngOnInit();\r\n this.initForm();\r\n this.notesService.getNotes().subscribe({\r\n next: (notes) => {\r\n this.notesSignal.set(notes);\r\n },\r\n error: (error) => {\r\n console.error('Error loading notes:', error);\r\n }\r\n });\r\n }\r\n\r\n protected override afterContextInit(): void {\r\n // Any additional setup after context is ready can go here\r\n }\r\n\r\n private initForm(): void {\r\n this.noteForm = this.fb.group({\r\n sypn_title: [''],\r\n sypn_desc: [''],\r\n sypn_is_page_specific: [true],\r\n sypn_is_user_specific: [true],\r\n sypn_is_entity_specific: [false],\r\n sypn_is_theme_specific: [false]\r\n });\r\n }\r\n\r\n showAddForm(): void {\r\n this.isFormVisible = true;\r\n }\r\n\r\n hideAddForm(): void {\r\n this.isFormVisible = false;\r\n this.isEditing = false;\r\n this.editingNoteId = null;\r\n }\r\n\r\n startEdit(note: ICoreSypn): void {\r\n this.isEditing = true;\r\n this.editingNoteId = note._id || '';\r\n this.noteForm.patchValue({\r\n sypn_title: note.sypn_title || '',\r\n sypn_desc: note.sypn_desc || '',\r\n sypn_is_page_specific: note.sypn_is_page_specific || false,\r\n sypn_is_user_specific: note.sypn_is_user_specific || false,\r\n sypn_is_entity_specific: note.sypn_is_entity_specific || false,\r\n sypn_is_theme_specific: note.sypn_is_theme_specific || false\r\n });\r\n this.isFormVisible = true;\r\n }\r\n\r\n cancelEdit(): void {\r\n this.isEditing = false;\r\n this.editingNoteId = null;\r\n this.resetForm();\r\n this.isFormVisible = false;\r\n }\r\n\r\n onNoteHover(index: number): void {\r\n this.hoveredNoteIndex = index;\r\n }\r\n\r\n onNoteLeave(): void {\r\n this.hoveredNoteIndex = null;\r\n }\r\n\r\n onSubmit(): void {\r\n if (this.noteForm.invalid || !this.noteForm.get('sypn_title')?.value?.trim()) {\r\n return;\r\n }\r\n const formValue = this.noteForm.value;\r\n if (this.isEditing && this.editingNoteId) {\r\n console.log('formValue', this.appState.currentUser());\r\n const noteToUpdate: ICoreSypn = {\r\n _id: this.editingNoteId,\r\n sypn_title: formValue.sypn_title,\r\n sypn_desc: formValue.sypn_desc,\r\n sypn_page_id_sypg: this.pageId || \"\",\r\n sypn_user_id_user: this.appState.currentUser()?._id || \"\",\r\n sypn_entity_id_sype: this.appState.getActiveEntityId() || \"\",\r\n sypn_page_them_id_sytm: this.themeId || \"\",\r\n sypn_is_page_specific: formValue.sypn_is_page_specific,\r\n sypn_is_user_specific: formValue.sypn_is_user_specific,\r\n sypn_is_entity_specific: formValue.sypn_is_entity_specific,\r\n sypn_is_theme_specific: formValue.sypn_is_theme_specific,\r\n };\r\n this.notesService.updateNote(noteToUpdate).subscribe({\r\n next: () => {\r\n const currentNotes = this.notesSignal();\r\n const updatedNotes = currentNotes.map((note: ICoreSypn) =>\r\n note._id === this.editingNoteId ? noteToUpdate : note\r\n );\r\n this.notesSignal.set(updatedNotes);\r\n this.resetForm();\r\n this.isFormVisible = false;\r\n this.isEditing = false;\r\n this.editingNoteId = null;\r\n },\r\n error: (err: unknown) => console.error('Failed to update note', err)\r\n });\r\n } else {\r\n const noteToAdd: ICoreSypn = {\r\n sypn_title: formValue.sypn_title,\r\n sypn_desc: formValue.sypn_desc,\r\n sypn_page_id_sypg: this.pageId || \"\",\r\n sypn_user_id_user: this.appState.currentUser()?._id || \"\",\r\n sypn_entity_id_sype: this.appState.getActiveEntityId() || \"\",\r\n sypn_page_them_id_sytm: this.themeId || \"\",\r\n sypn_is_page_specific: formValue.sypn_is_page_specific,\r\n sypn_is_user_specific: formValue.sypn_is_user_specific,\r\n sypn_is_entity_specific: formValue.sypn_is_entity_specific,\r\n sypn_is_theme_specific: formValue.sypn_is_theme_specific,\r\n };\r\n this.notesService.addNote(noteToAdd).subscribe({\r\n next: (response: unknown) => {\r\n const responseData = response as { _id?: string; id?: string };\r\n const newNoteWithId: ICoreSypn = {\r\n ...noteToAdd,\r\n _id: responseData._id || responseData.id || Date.now().toString()\r\n };\r\n const currentNotes = this.notesSignal();\r\n this.notesSignal.set([newNoteWithId, ...currentNotes]);\r\n this.resetForm();\r\n this.isFormVisible = false;\r\n },\r\n error: (err: unknown) => console.error('Failed to add note', err)\r\n });\r\n }\r\n }\r\n\r\n private resetForm(): void {\r\n this.noteForm.reset({\r\n sypn_title: '',\r\n sypn_desc: '',\r\n sypn_is_page_specific: true,\r\n sypn_is_user_specific: true,\r\n sypn_is_entity_specific: false,\r\n sypn_is_theme_specific: false\r\n });\r\n }\r\n\r\n public getState() {\r\n return {\r\n newNoteModel: { ...(this.noteForm?.value ? this.noteForm?.value : {}) },\r\n isFormVisible: this.isFormVisible,\r\n };\r\n }\r\n\r\n public setState(state: NotesComponentState) {\r\n if (state) {\r\n this.noteForm.patchValue(state.newNoteModel);\r\n this.isFormVisible = state.isFormVisible;\r\n }\r\n }\r\n}","<div class=\"tw-relative tw-h-full tw-bg-white tw-overflow-hidden tw-flex tw-flex-col\">\r\n <!-- FIXED HEADER SECTION (ABSOLUTE POSITIONED) -->\r\n <div class=\"tw-bg-white tw-border-b tw-border-gray-200\">\r\n <!-- DYNAMIC HEADING -->\r\n <div class=\"tw-flex tw-justify-between tw-items-center tw-p-2 tw-bg-white tw-border-b tw-border-gray-200\">\r\n <h6 class=\"tw-font-semibold tw-text-gray-800\">\r\n {{ isFormVisible ? (isEditing ? 'Edit Note' : 'Add a New Note') : 'Notes' }}\r\n </h6>\r\n <button *ngIf=\"!isFormVisible\" (click)=\"showAddForm()\" cideEleButton variant=\"primary\"\r\n class=\"tw-p-2 !tw-w-7 !tw-px-0 !tw-rounded-full tw-animate-pulse\" title=\"Add New Note\">\r\n <!-- Using inline SVG for the plus icon for simplicity -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"></line>\r\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"></line>\r\n </svg>\r\n </button>\r\n </div>\r\n\r\n <!-- ADD NOTE FORM (ANIMATED WRAPPER) -->\r\n <div class=\"tw-transition-all tw-duration-300 tw-ease-in-out tw-animate-fade-in\" [class.tw-opacity-100]=\"isFormVisible\"\r\n [class.tw-opacity-0]=\"!isFormVisible\" [class.tw-max-h-0]=\"!isFormVisible\">\r\n <form [formGroup]=\"noteForm\" (ngSubmit)=\"onSubmit()\" class=\"tw-p-3 tw-space-y-4\" *ngIf=\"isFormVisible\">\r\n <!-- Title Input -->\r\n <cide-ele-input name=\"sypn_title\" formControlName=\"sypn_title\" placeholder=\"Note Title\" label=\"Note Title\"\r\n [required]=\"true\" [type]=\"'text'\" class=\"tw-w-full tw-transition-all tw-duration-200 focus:tw-scale-[1.02]\"></cide-ele-input>\r\n\r\n <!-- Description Textarea -->\r\n <cide-ele-textarea placeholder=\"What's on your mind? (Optional)\" id=\"sypn_desc\" formControlName=\"sypn_desc\"\r\n rows=\"4\" label=\"Description\" class=\"tw-transition-all tw-duration-200 focus:tw-scale-[1.02]\"></cide-ele-textarea>\r\n\r\n <!-- Toggle Switches -->\r\n <div class=\"tw-grid tw-grid-cols-2 tw-gap-4\">\r\n <cide-ele-input [type]=\"'checkbox'\" formControlName=\"sypn_is_page_specific\" label=\"Page Specific\"\r\n class=\"tw-flex tw-items-center tw-space-x-2\"></cide-ele-input>\r\n\r\n <cide-ele-input [type]=\"'checkbox'\" formControlName=\"sypn_is_user_specific\" label=\"User Specific\"\r\n class=\"tw-flex tw-items-center tw-space-x-2\"></cide-ele-input>\r\n\r\n <cide-ele-input [type]=\"'checkbox'\" formControlName=\"sypn_is_entity_specific\" label=\"Entity Specific\"\r\n class=\"tw-flex tw-items-center tw-space-x-2\"></cide-ele-input>\r\n\r\n <cide-ele-input [type]=\"'checkbox'\" formControlName=\"sypn_is_theme_specific\" label=\"Theme Specific\"\r\n class=\"tw-flex tw-items-center tw-space-x-2\"></cide-ele-input>\r\n </div>\r\n\r\n <!-- Action Buttons -->\r\n <div class=\"tw-flex tw-space-x-3 tw-pt-4\">\r\n <button cideEleButton size=\"xs\" variant=\"primary\" type=\"submit\" [disabled]=\"noteForm.invalid\">\r\n {{ isEditing ? 'Update Note' : 'Add Note' }}\r\n </button>\r\n <button cideEleButton size=\"xs\" variant=\"secondary\" type=\"button\"\r\n (click)=\"isEditing ? cancelEdit() : hideAddForm()\">\r\n {{ isEditing ? 'Cancel Edit' : 'Cancel' }}\r\n </button>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n\r\n <!-- SCROLLABLE NOTES SECTION (BELOW FIXED HEADER) -->\r\n <div class=\"tw-overflow-y-auto tw-scroll-smooth notes-scroll-container\">\r\n <!-- Modern Angular v20 pattern: Use Signals directly -->\r\n <div class=\"\" *ngIf=\"notes() as notes; else loading\">\r\n <!-- Show notes if the array is not empty -->\r\n <div *ngIf=\"notes.length > 0; else noNotes\">\r\n <div *ngFor=\"let note of notes; let i = index\"\r\n class=\"tw-bg-white tw-border-b tw-border-gray-200 tw-p-4 tw-shadow-sm hover:tw-shadow-md tw-transition-all tw-duration-300 tw-ease-in-out tw-relative tw-transform hover:tw-translate-y-[-2px] hover:tw-shadow-lg\"\r\n (mouseenter)=\"onNoteHover(i)\" (mouseleave)=\"onNoteLeave()\">\r\n <!-- Edit Button (visible on hover) -->\r\n <button (click)=\"startEdit(note)\" [class.tw-opacity-100]=\"hoveredNoteIndex === i\"\r\n [class.tw-opacity-0]=\"hoveredNoteIndex !== i\"\r\n class=\"tw-absolute tw-top-2 tw-right-2 tw-transition-all tw-duration-200 tw-p-1 tw-rounded tw-bg-gray-100 hover:tw-bg-gray-200 hover:tw-scale-110 tw-z-10\"\r\n title=\"Edit Note\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"></path>\r\n <path d=\"m18.5 2.5 3 3L12 15l-4 1 1-4 9.5-9.5z\"></path>\r\n </svg>\r\n </button>\r\n\r\n <h6 class=\"tw-font-medium tw-text-gray-900 tw-mb-2 tw-pr-8\">{{ note.sypn_title }}</h6>\r\n <p class=\"tw-text-gray-600 tw-text-sm tw-mb-3\">{{ note.sypn_desc }}</p>\r\n <div class=\"tw-flex tw-flex-wrap tw-gap-2\">\r\n <span *ngIf=\"note.sypn_is_page_specific\"\r\n class=\"tw-px-2 tw-py-1 tw-bg-blue-100 tw-text-blue-800 tw-text-xs tw-rounded-full tw-transition-all tw-duration-200 hover:tw-scale-105 hover:tw-bg-blue-200\">Page Specific</span>\r\n <span *ngIf=\"note.sypn_is_user_specific\"\r\n class=\"tw-px-2 tw-py-1 tw-bg-green-100 tw-text-green-800 tw-text-xs tw-rounded-full tw-transition-all tw-duration-200 hover:tw-scale-105 hover:tw-bg-green-200\">User Specific</span>\r\n <span *ngIf=\"note.sypn_is_entity_specific\"\r\n class=\"tw-px-2 tw-py-1 tw-bg-purple-100 tw-text-purple-800 tw-text-xs tw-rounded-full tw-transition-all tw-duration-200 hover:tw-scale-105 hover:tw-bg-purple-200\">Entity\r\n Specific</span>\r\n <span *ngIf=\"note.sypn_is_theme_specific\"\r\n class=\"tw-px-2 tw-py-1 tw-bg-orange-100 tw-text-orange-800 tw-text-xs tw-rounded-full tw-transition-all tw-duration-200 hover:tw-scale-105 hover:tw-bg-orange-200\">Theme\r\n Specific</span>\r\n </div>\r\n <!-- <p class=\"note-date\">{{ note.createdAt | date:'short' }}</p> -->\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Template to show when there are no notes -->\r\n <ng-template #noNotes>\r\n <div class=\"tw-flex tw-flex-col tw-items-center tw-justify-center tw-p-8 tw-text-center\">\r\n <div class=\"tw-w-12 tw-h-12 tw-bg-gray-100 tw-rounded-full tw-flex tw-items-center tw-justify-center tw-mb-4 tw-animate-bounce\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"tw-text-gray-400\">\r\n <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"></path>\r\n <polyline points=\"14,2 14,8 20,8\"></polyline>\r\n <line x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\"></line>\r\n <line x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\"></line>\r\n <polyline points=\"10,9 9,9 8,9\"></polyline>\r\n </svg>\r\n </div>\r\n <p class=\"tw-text-gray-500 tw-mb-2\">No notes found.</p>\r\n <p class=\"tw-text-sm tw-text-gray-400\">Click the '+' to add one!</p>\r\n </div>\r\n </ng-template>\r\n\r\n <!-- Template to show while notes are loading -->\r\n <ng-template #loading>\r\n <div class=\"tw-flex tw-flex-col tw-items-center tw-justify-center tw-p-8\">\r\n <div class=\"tw-w-8 tw-h-8 tw-border-4 tw-border-blue-200 tw-border-t-blue-600 tw-rounded-full tw-animate-spin tw-mb-4\"></div>\r\n <p class=\"tw-text-gray-500 tw-text-sm\">Loading notes...</p>\r\n </div>\r\n </ng-template>\r\n </div>\r\n</div>"],"names":["i2"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cloud-ide-layout-sidedrawer-notes.component-Dn7UiMOo.mjs","sources":["../../../projects/cloud-ide-layout/src/lib/layout/sidedrawer/sidedrawer-notes/sidedrawer-notes.service.ts","../../../projects/cloud-ide-layout/src/lib/layout/sidedrawer/cide-lyt-drawer-base.class.ts","../../../projects/cloud-ide-layout/src/lib/layout/sidedrawer/sidedrawer-notes/sidedrawer-notes.component.ts","../../../projects/cloud-ide-layout/src/lib/layout/sidedrawer/sidedrawer-notes/sidedrawer-notes.component.html"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { ICoreSypn, IPageNotesManagerCreateUpdateControllerRespoonse, IPageNotesManagerListControllerRespoonse, cidePath, coreRoutesUrl, hostManagerRoutesUrl } from 'cloud-ide-lms-model';\r\nimport { Observable, of } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CideLytDrawerNotesService {\r\n // Modern Angular v20 dependency injection pattern\r\n private http = inject(HttpClient);\r\n\r\n constructor() {\r\n // Modern Angular v20 pattern: Use constructor for initialization only\r\n }\r\n\r\n getNotes(): Observable<ICoreSypn[]> {\r\n const url = cidePath.join([\r\n hostManagerRoutesUrl.cideSuiteHost,\r\n coreRoutesUrl.module,\r\n coreRoutesUrl.systemPageNotesManager\r\n ]);\r\n return this.http.get<IPageNotesManagerListControllerRespoonse>(url).pipe(map((res) => res.data || []));\r\n }\r\n\r\n addNote(note: ICoreSypn): Observable<unknown> {\r\n const url = cidePath.join([\r\n hostManagerRoutesUrl.cideSuiteHost,\r\n coreRoutesUrl.module,\r\n coreRoutesUrl.systemPageNotesManager\r\n ]);\r\n return this.http.post<IPageNotesManagerCreateUpdateControllerRespoonse>(url, note).pipe(map((res) => res.data));\r\n }\r\n\r\n updateNote(note: ICoreSypn): Observable<unknown> {\r\n const url = cidePath.join([\r\n hostManagerRoutesUrl.cideSuiteHost,\r\n coreRoutesUrl.module,\r\n coreRoutesUrl.systemPageNotesManager\r\n ]);\r\n return this.http.post<IPageNotesManagerCreateUpdateControllerRespoonse>(url, note).pipe(map((res) => res.data));\r\n }\r\n\r\n deleteNote(noteId: string): Observable<unknown> {\r\n // Mock implementation: simulate deleting a note.\r\n console.log('Deleting note with ID:', noteId);\r\n return of({ success: true });\r\n }\r\n\r\n // Additional methods for updating and deleting notes could be added here.\r\n // You might also include error handling or more complex data manipulation.\r\n}","import { Directive, OnInit, inject } from '@angular/core';\r\nimport { CideLytSidedrawerService } from './sidedrawer.service';\r\n\r\n@Directive()\r\nexport abstract class CideLytDrawerBase implements OnInit {\r\n private _pageId: string | null = null;\r\n private _themeId: string | null = null;\r\n protected sidedrawerService = inject(CideLytSidedrawerService);\r\n\r\n ngOnInit(): void {\r\n // Automatically initialize context from the service\r\n const pageId = this.sidedrawerService.pageId;\r\n const themeId = this.sidedrawerService.themeId;\r\n if (pageId && themeId) {\r\n this.setContext(pageId, themeId);\r\n }\r\n this.afterContextInit();\r\n }\r\n\r\n // Child classes can override this for additional setup\r\n protected afterContextInit(): void {}\r\n\r\n setContext(pageId: string, themeId: string) {\r\n this._pageId = pageId;\r\n this._themeId = themeId;\r\n }\r\n\r\n get pageId(): string | null {\r\n return this._pageId;\r\n }\r\n\r\n get themeId(): string | null {\r\n return this._themeId;\r\n }\r\n\r\n protected getStorageKey(suffix: string): string {\r\n return `drawer_${suffix}_${this._pageId || 'unknown'}`;\r\n }\r\n} ","import { CommonModule } from '@angular/common';\r\nimport { Component, OnInit, inject, signal } from '@angular/core';\r\nimport { ReactiveFormsModule, FormBuilder, FormGroup } from '@angular/forms';\r\nimport { CideLytDrawerNotesService } from './sidedrawer-notes.service';\r\nimport { ICoreSypn } from 'cloud-ide-lms-model';\r\nimport { CideInputComponent } from 'cloud-ide-element';\r\nimport { CideEleButtonComponent } from 'cloud-ide-element';\r\nimport { CideTextareaComponent } from 'cloud-ide-element';\r\nimport { AppStateHelperService } from '../../../services/app-state/app-state-helper.service';\r\nimport { CideLytDrawerBase } from '../cide-lyt-drawer-base.class';\r\n\r\nexport interface NewNoteModel {\r\n title: string;\r\n description: string;\r\n isPageSpecific: boolean;\r\n isUserSpecific: boolean;\r\n isEntitySpecific: boolean;\r\n isThemeSpecific: boolean;\r\n}\r\n\r\nexport interface NotesComponentState {\r\n newNoteModel: NewNoteModel;\r\n isFormVisible: boolean;\r\n scrollTop: number;\r\n}\r\n\r\n@Component({\r\n selector: 'cide-lyt-sidedrawer-notes',\r\n standalone: true,\r\n imports: [CommonModule, ReactiveFormsModule, CideInputComponent, CideEleButtonComponent, CideTextareaComponent],\r\n templateUrl: './sidedrawer-notes.component.html',\r\n styleUrl: './sidedrawer-notes.component.css'\r\n})\r\nexport class CideLytSidedrawerNotesComponent extends CideLytDrawerBase implements OnInit {\r\n private notesSignal = signal<ICoreSypn[]>([]);\r\n notes = this.notesSignal.asReadonly();\r\n isFormVisible = false;\r\n isEditing = false;\r\n editingNoteId: string | null = null;\r\n hoveredNoteIndex: number | null = null;\r\n noteForm!: FormGroup;\r\n private notesService = inject(CideLytDrawerNotesService);\r\n private fb = inject(FormBuilder);\r\n private appState = inject(AppStateHelperService);\r\n\r\n override ngOnInit(): void {\r\n super.ngOnInit();\r\n this.initForm();\r\n this.notesService.getNotes().subscribe({\r\n next: (notes) => {\r\n this.notesSignal.set(notes);\r\n },\r\n error: (error) => {\r\n console.error('Error loading notes:', error);\r\n }\r\n });\r\n }\r\n\r\n protected override afterContextInit(): void {\r\n // Any additional setup after context is ready can go here\r\n }\r\n\r\n private initForm(): void {\r\n this.noteForm = this.fb.group({\r\n sypn_title: [''],\r\n sypn_desc: [''],\r\n sypn_is_page_specific: [true],\r\n sypn_is_user_specific: [true],\r\n sypn_is_entity_specific: [false],\r\n sypn_is_theme_specific: [false]\r\n });\r\n }\r\n\r\n showAddForm(): void {\r\n this.isFormVisible = true;\r\n }\r\n\r\n hideAddForm(): void {\r\n this.isFormVisible = false;\r\n this.isEditing = false;\r\n this.editingNoteId = null;\r\n }\r\n\r\n startEdit(note: ICoreSypn): void {\r\n this.isEditing = true;\r\n this.editingNoteId = note._id || '';\r\n this.noteForm.patchValue({\r\n sypn_title: note.sypn_title || '',\r\n sypn_desc: note.sypn_desc || '',\r\n sypn_is_page_specific: note.sypn_is_page_specific || false,\r\n sypn_is_user_specific: note.sypn_is_user_specific || false,\r\n sypn_is_entity_specific: note.sypn_is_entity_specific || false,\r\n sypn_is_theme_specific: note.sypn_is_theme_specific || false\r\n });\r\n this.isFormVisible = true;\r\n }\r\n\r\n cancelEdit(): void {\r\n this.isEditing = false;\r\n this.editingNoteId = null;\r\n this.resetForm();\r\n this.isFormVisible = false;\r\n }\r\n\r\n onNoteHover(index: number): void {\r\n this.hoveredNoteIndex = index;\r\n }\r\n\r\n onNoteLeave(): void {\r\n this.hoveredNoteIndex = null;\r\n }\r\n\r\n onSubmit(): void {\r\n if (this.noteForm.invalid || !this.noteForm.get('sypn_title')?.value?.trim()) {\r\n return;\r\n }\r\n const formValue = this.noteForm.value;\r\n if (this.isEditing && this.editingNoteId) {\r\n console.log('formValue', this.appState.currentUser());\r\n const noteToUpdate: ICoreSypn = {\r\n _id: this.editingNoteId,\r\n sypn_title: formValue.sypn_title,\r\n sypn_desc: formValue.sypn_desc,\r\n sypn_page_id_sypg: this.pageId || \"\",\r\n sypn_user_id_user: this.appState.currentUser()?._id || \"\",\r\n sypn_entity_id_sype: this.appState.getActiveEntityId() || \"\",\r\n sypn_page_them_id_sytm: this.themeId || \"\",\r\n sypn_is_page_specific: formValue.sypn_is_page_specific,\r\n sypn_is_user_specific: formValue.sypn_is_user_specific,\r\n sypn_is_entity_specific: formValue.sypn_is_entity_specific,\r\n sypn_is_theme_specific: formValue.sypn_is_theme_specific,\r\n };\r\n this.notesService.updateNote(noteToUpdate).subscribe({\r\n next: () => {\r\n const currentNotes = this.notesSignal();\r\n const updatedNotes = currentNotes.map((note: ICoreSypn) =>\r\n note._id === this.editingNoteId ? noteToUpdate : note\r\n );\r\n this.notesSignal.set(updatedNotes);\r\n this.resetForm();\r\n this.isFormVisible = false;\r\n this.isEditing = false;\r\n this.editingNoteId = null;\r\n },\r\n error: (err: unknown) => console.error('Failed to update note', err)\r\n });\r\n } else {\r\n const noteToAdd: ICoreSypn = {\r\n sypn_title: formValue.sypn_title,\r\n sypn_desc: formValue.sypn_desc,\r\n sypn_page_id_sypg: this.pageId || \"\",\r\n sypn_user_id_user: this.appState.currentUser()?._id || \"\",\r\n sypn_entity_id_sype: this.appState.getActiveEntityId() || \"\",\r\n sypn_page_them_id_sytm: this.themeId || \"\",\r\n sypn_is_page_specific: formValue.sypn_is_page_specific,\r\n sypn_is_user_specific: formValue.sypn_is_user_specific,\r\n sypn_is_entity_specific: formValue.sypn_is_entity_specific,\r\n sypn_is_theme_specific: formValue.sypn_is_theme_specific,\r\n };\r\n this.notesService.addNote(noteToAdd).subscribe({\r\n next: (response: unknown) => {\r\n const responseData = response as { _id?: string; id?: string };\r\n const newNoteWithId: ICoreSypn = {\r\n ...noteToAdd,\r\n _id: responseData._id || responseData.id || Date.now().toString()\r\n };\r\n const currentNotes = this.notesSignal();\r\n this.notesSignal.set([newNoteWithId, ...currentNotes]);\r\n this.resetForm();\r\n this.isFormVisible = false;\r\n },\r\n error: (err: unknown) => console.error('Failed to add note', err)\r\n });\r\n }\r\n }\r\n\r\n private resetForm(): void {\r\n this.noteForm.reset({\r\n sypn_title: '',\r\n sypn_desc: '',\r\n sypn_is_page_specific: true,\r\n sypn_is_user_specific: true,\r\n sypn_is_entity_specific: false,\r\n sypn_is_theme_specific: false\r\n });\r\n }\r\n\r\n public getState() {\r\n return {\r\n newNoteModel: { ...(this.noteForm?.value ? this.noteForm?.value : {}) },\r\n isFormVisible: this.isFormVisible,\r\n };\r\n }\r\n\r\n public setState(state: NotesComponentState) {\r\n if (state) {\r\n this.noteForm.patchValue(state.newNoteModel);\r\n this.isFormVisible = state.isFormVisible;\r\n }\r\n }\r\n}","<div class=\"tw-relative tw-h-full tw-bg-white tw-overflow-hidden tw-flex tw-flex-col\">\r\n <!-- FIXED HEADER SECTION (ABSOLUTE POSITIONED) -->\r\n <div class=\"tw-bg-white tw-border-b tw-border-gray-200\">\r\n <!-- DYNAMIC HEADING -->\r\n <div class=\"tw-flex tw-justify-between tw-items-center tw-p-2 tw-bg-white tw-border-b tw-border-gray-200\">\r\n <h6 class=\"tw-font-semibold tw-text-gray-800\">\r\n {{ isFormVisible ? (isEditing ? 'Edit Note' : 'Add a New Note') : 'Notes' }}\r\n </h6>\r\n <button *ngIf=\"!isFormVisible\" (click)=\"showAddForm()\" cideEleButton variant=\"primary\"\r\n class=\"tw-p-2 !tw-w-7 !tw-px-0 !tw-rounded-full tw-animate-pulse\" title=\"Add New Note\">\r\n <!-- Using inline SVG for the plus icon for simplicity -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"></line>\r\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"></line>\r\n </svg>\r\n </button>\r\n </div>\r\n\r\n <!-- ADD NOTE FORM (ANIMATED WRAPPER) -->\r\n <div class=\"tw-transition-all tw-duration-300 tw-ease-in-out tw-animate-fade-in\" [class.tw-opacity-100]=\"isFormVisible\"\r\n [class.tw-opacity-0]=\"!isFormVisible\" [class.tw-max-h-0]=\"!isFormVisible\">\r\n <form [formGroup]=\"noteForm\" (ngSubmit)=\"onSubmit()\" class=\"tw-p-3 tw-space-y-4\" *ngIf=\"isFormVisible\">\r\n <!-- Title Input -->\r\n <cide-ele-input name=\"sypn_title\" formControlName=\"sypn_title\" placeholder=\"Note Title\" label=\"Note Title\"\r\n [required]=\"true\" [type]=\"'text'\" class=\"tw-w-full tw-transition-all tw-duration-200 focus:tw-scale-[1.02]\"></cide-ele-input>\r\n\r\n <!-- Description Textarea -->\r\n <cide-ele-textarea placeholder=\"What's on your mind? (Optional)\" id=\"sypn_desc\" formControlName=\"sypn_desc\"\r\n rows=\"4\" label=\"Description\" class=\"tw-transition-all tw-duration-200 focus:tw-scale-[1.02]\"></cide-ele-textarea>\r\n\r\n <!-- Toggle Switches -->\r\n <div class=\"tw-grid tw-grid-cols-2 tw-gap-4\">\r\n <cide-ele-input [type]=\"'checkbox'\" formControlName=\"sypn_is_page_specific\" label=\"Page Specific\"\r\n class=\"tw-flex tw-items-center tw-space-x-2\"></cide-ele-input>\r\n\r\n <cide-ele-input [type]=\"'checkbox'\" formControlName=\"sypn_is_user_specific\" label=\"User Specific\"\r\n class=\"tw-flex tw-items-center tw-space-x-2\"></cide-ele-input>\r\n\r\n <cide-ele-input [type]=\"'checkbox'\" formControlName=\"sypn_is_entity_specific\" label=\"Entity Specific\"\r\n class=\"tw-flex tw-items-center tw-space-x-2\"></cide-ele-input>\r\n\r\n <cide-ele-input [type]=\"'checkbox'\" formControlName=\"sypn_is_theme_specific\" label=\"Theme Specific\"\r\n class=\"tw-flex tw-items-center tw-space-x-2\"></cide-ele-input>\r\n </div>\r\n\r\n <!-- Action Buttons -->\r\n <div class=\"tw-flex tw-space-x-3 tw-pt-4\">\r\n <button cideEleButton size=\"xs\" variant=\"primary\" type=\"submit\" [disabled]=\"noteForm.invalid\">\r\n {{ isEditing ? 'Update Note' : 'Add Note' }}\r\n </button>\r\n <button cideEleButton size=\"xs\" variant=\"secondary\" type=\"button\"\r\n (click)=\"isEditing ? cancelEdit() : hideAddForm()\">\r\n {{ isEditing ? 'Cancel Edit' : 'Cancel' }}\r\n </button>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n\r\n <!-- SCROLLABLE NOTES SECTION (BELOW FIXED HEADER) -->\r\n <div class=\"tw-overflow-y-auto tw-scroll-smooth notes-scroll-container\">\r\n <!-- Modern Angular v20 pattern: Use Signals directly -->\r\n <div class=\"\" *ngIf=\"notes() as notes; else loading\">\r\n <!-- Show notes if the array is not empty -->\r\n <div *ngIf=\"notes.length > 0; else noNotes\">\r\n <div *ngFor=\"let note of notes; let i = index\"\r\n class=\"tw-bg-white tw-border-b tw-border-gray-200 tw-p-4 tw-shadow-sm hover:tw-shadow-md tw-transition-all tw-duration-300 tw-ease-in-out tw-relative tw-transform hover:tw-translate-y-[-2px] hover:tw-shadow-lg\"\r\n (mouseenter)=\"onNoteHover(i)\" (mouseleave)=\"onNoteLeave()\">\r\n <!-- Edit Button (visible on hover) -->\r\n <button (click)=\"startEdit(note)\" [class.tw-opacity-100]=\"hoveredNoteIndex === i\"\r\n [class.tw-opacity-0]=\"hoveredNoteIndex !== i\"\r\n class=\"tw-absolute tw-top-2 tw-right-2 tw-transition-all tw-duration-200 tw-p-1 tw-rounded tw-bg-gray-100 hover:tw-bg-gray-200 hover:tw-scale-110 tw-z-10\"\r\n title=\"Edit Note\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"></path>\r\n <path d=\"m18.5 2.5 3 3L12 15l-4 1 1-4 9.5-9.5z\"></path>\r\n </svg>\r\n </button>\r\n\r\n <h6 class=\"tw-font-medium tw-text-gray-900 tw-mb-2 tw-pr-8\">{{ note.sypn_title }}</h6>\r\n <p class=\"tw-text-gray-600 tw-text-sm tw-mb-3\">{{ note.sypn_desc }}</p>\r\n <div class=\"tw-flex tw-flex-wrap tw-gap-2\">\r\n <span *ngIf=\"note.sypn_is_page_specific\"\r\n class=\"tw-px-2 tw-py-1 tw-bg-blue-100 tw-text-blue-800 tw-text-xs tw-rounded-full tw-transition-all tw-duration-200 hover:tw-scale-105 hover:tw-bg-blue-200\">Page Specific</span>\r\n <span *ngIf=\"note.sypn_is_user_specific\"\r\n class=\"tw-px-2 tw-py-1 tw-bg-green-100 tw-text-green-800 tw-text-xs tw-rounded-full tw-transition-all tw-duration-200 hover:tw-scale-105 hover:tw-bg-green-200\">User Specific</span>\r\n <span *ngIf=\"note.sypn_is_entity_specific\"\r\n class=\"tw-px-2 tw-py-1 tw-bg-purple-100 tw-text-purple-800 tw-text-xs tw-rounded-full tw-transition-all tw-duration-200 hover:tw-scale-105 hover:tw-bg-purple-200\">Entity\r\n Specific</span>\r\n <span *ngIf=\"note.sypn_is_theme_specific\"\r\n class=\"tw-px-2 tw-py-1 tw-bg-orange-100 tw-text-orange-800 tw-text-xs tw-rounded-full tw-transition-all tw-duration-200 hover:tw-scale-105 hover:tw-bg-orange-200\">Theme\r\n Specific</span>\r\n </div>\r\n <!-- <p class=\"note-date\">{{ note.createdAt | date:'short' }}</p> -->\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Template to show when there are no notes -->\r\n <ng-template #noNotes>\r\n <div class=\"tw-flex tw-flex-col tw-items-center tw-justify-center tw-p-8 tw-text-center\">\r\n <div class=\"tw-w-12 tw-h-12 tw-bg-gray-100 tw-rounded-full tw-flex tw-items-center tw-justify-center tw-mb-4 tw-animate-bounce\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"tw-text-gray-400\">\r\n <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"></path>\r\n <polyline points=\"14,2 14,8 20,8\"></polyline>\r\n <line x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\"></line>\r\n <line x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\"></line>\r\n <polyline points=\"10,9 9,9 8,9\"></polyline>\r\n </svg>\r\n </div>\r\n <p class=\"tw-text-gray-500 tw-mb-2\">No notes found.</p>\r\n <p class=\"tw-text-sm tw-text-gray-400\">Click the '+' to add one!</p>\r\n </div>\r\n </ng-template>\r\n\r\n <!-- Template to show while notes are loading -->\r\n <ng-template #loading>\r\n <div class=\"tw-flex tw-flex-col tw-items-center tw-justify-center tw-p-8\">\r\n <div class=\"tw-w-8 tw-h-8 tw-border-4 tw-border-blue-200 tw-border-t-blue-600 tw-rounded-full tw-animate-spin tw-mb-4\"></div>\r\n <p class=\"tw-text-gray-500 tw-text-sm\">Loading notes...</p>\r\n </div>\r\n </ng-template>\r\n </div>\r\n</div>"],"names":["i2"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { A as AppStateHelperService, e as AppStateService, n as CacheManagerService, o as CideLytFileManagerService, q as CideLytFloatingEntityRightsSharingComponent, r as CideLytFloatingEntityRightsSharingService, h as CideLytSharedService, C as CideLytSharedWrapperComponent, d as CideLytThemeService, m as CideLytUserStatusService, g as CloudIdeLayoutComponent, f as CloudIdeLayoutService, i as ComponentContextService, k as CustomRouteReuseStrategy, E as ENVIRONMENT_CONFIG, N as NotificationSettingsService, R as RightsService, j as layoutControlPannelChildRoutes, l as layoutRoutes, p as processThemeVariable, s as setCSSVariable, t as themeFactory } from './cloud-ide-layout-cloud-ide-layout-
|
|
1
|
+
export { A as AppStateHelperService, e as AppStateService, n as CacheManagerService, o as CideLytFileManagerService, q as CideLytFloatingEntityRightsSharingComponent, r as CideLytFloatingEntityRightsSharingService, h as CideLytSharedService, C as CideLytSharedWrapperComponent, d as CideLytThemeService, m as CideLytUserStatusService, g as CloudIdeLayoutComponent, f as CloudIdeLayoutService, i as ComponentContextService, k as CustomRouteReuseStrategy, E as ENVIRONMENT_CONFIG, N as NotificationSettingsService, R as RightsService, j as layoutControlPannelChildRoutes, l as layoutRoutes, p as processThemeVariable, s as setCSSVariable, t as themeFactory } from './cloud-ide-layout-cloud-ide-layout-DAMoriNy.mjs';
|
|
2
2
|
//# sourceMappingURL=cloud-ide-layout.mjs.map
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-ide-layout-floating-entity-selection.component-C8BmpX1i.mjs","sources":["../../../projects/cloud-ide-layout/src/lib/components/floating-entity-selection/floating-entity-selection.component.ts"],"sourcesContent":["import { Component, OnInit, inject, signal, computed, ChangeDetectionStrategy, input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CideEleButtonComponent, NotificationService } from 'cloud-ide-element';\r\nimport { CideIconComponent } from 'cloud-ide-element';\r\nimport { AppStateService } from '../../services/app-state/app-state.service';\r\nimport { CideEleFloatingContainerService } from 'cloud-ide-element';\r\nimport { CideSharedOrgStructureComponent } from 'cloud-ide-shared';\r\nimport { CoreSystemEntityListResponse, switchEntityControllerResponse } from 'cloud-ide-lms-model';\r\nimport { CloudIdeAuthService } from 'cloud-ide-auth';\r\nimport { AppStateHelperService } from '../../services/app-state/app-state-helper.service';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\n\r\n@Component({\r\n selector: 'cide-lyt-floating-entity-selection',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n CommonModule,\r\n CideEleButtonComponent,\r\n CideIconComponent,\r\n CideSharedOrgStructureComponent\r\n ],\r\n template: `\r\n <!-- Entity Selection Content using Org Structure Component -->\r\n <div class=\"tw-flex tw-flex-col tw-h-full\">\r\n <!-- Header -->\r\n <div class=\"tw-bg-white tw-border-b tw-border-gray-200 tw-px-4 tw-py-3 tw-flex-shrink-0\">\r\n <div class=\"tw-flex tw-items-center tw-justify-between\">\r\n <div class=\"tw-flex tw-items-center tw-space-x-2\">\r\n <cide-ele-icon class=\"tw-text-blue-600\">account_tree</cide-ele-icon>\r\n <h3 class=\"tw-text-sm tw-font-semibold tw-text-gray-900\">Entity Structure</h3>\r\n </div>\r\n @if (mode() === 'selection') {\r\n <button cideEleButton variant=\"secondary\" size=\"xs\" type=\"button\" (click)=\"onCancel()\">\r\n Cancel\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n \r\n <!-- Org Structure Component -->\r\n <div class=\"tw-flex-1 tw-overflow-hidden\">\r\n <cide-shared-org-structure\r\n [allowSwitching]=\"allowSwitching()\"\r\n [showActions]=\"showActions()\"\r\n [mode]=\"mode()\"\r\n (entityClick)=\"onEntityClick($event)\"\r\n (entitySelect)=\"onEntitySelect($event)\"\r\n (entityView)=\"onEntityView($event)\">\r\n </cide-shared-org-structure>\r\n </div>\r\n </div>\r\n `,\r\n styles: [`\r\n .tw-dashed {\r\n border-style: dashed;\r\n }\r\n .tw-bg-gray-300 {\r\n background-color: #d1d5db;\r\n }\r\n \r\n /* Level-based styling for entity cards */\r\n .level-0 {\r\n border-top-color: #3b82f6 !important; /* Blue */\r\n }\r\n .level-1 {\r\n border-top-color: #f59e0b !important; /* Amber */\r\n }\r\n .level-2 {\r\n border-top-color: #10b981 !important; /* Emerald */\r\n }\r\n .level-3 {\r\n border-top-color: #8b5cf6 !important; /* Violet */\r\n }\r\n .level-4 {\r\n border-top-color: #ef4444 !important; /* Red */\r\n }\r\n .level-5 {\r\n border-top-color: #06b6d4 !important; /* Cyan */\r\n }\r\n \r\n /* Connection line styling */\r\n .connection-line-compact {\r\n pointer-events: none;\r\n }\r\n `]\r\n})\r\nexport class CideLytFloatingEntitySelectionComponent implements OnInit {\r\n // Input parameters for configuration\r\n allowSwitching = input<boolean>(true); // Allow entity switching (default: true)\r\n showActions = input<boolean>(true); // Show action buttons (default: true)\r\n mode = input<'selection' | 'view'>('selection'); // Mode: selection or view-only\r\n\r\n // Service injections\r\n private appStateService = inject(AppStateService);\r\n private appStateHelperService = inject(AppStateHelperService);\r\n private floatingContainerService = inject(CideEleFloatingContainerService);\r\n private authService = inject(CloudIdeAuthService);\r\n private notificationService = inject(NotificationService);\r\n\r\n // Loading state\r\n isSwitchingEntity = signal<boolean>(false);\r\n\r\n ngOnInit() {\r\n // No initialization needed - shared org structure component handles everything\r\n }\r\n\r\n /**\r\n * Handle entity click event from org structure\r\n */\r\n onEntityClick(entity: CoreSystemEntityListResponse): void {\r\n console.log('🏢 Entity clicked:', entity);\r\n // This is just a click event, no action needed unless specific handling is required\r\n }\r\n\r\n /**\r\n * Handle entity select event from org structure (for switching)\r\n * Calls the switch entity API to create new auth_logs entry\r\n */\r\n onEntitySelect(entity: CoreSystemEntityListResponse): void {\r\n console.log('🏢 Entity selected for switching:', entity);\r\n \r\n if (!entity._id) {\r\n this.notificationService.error('Invalid entity selected');\r\n return;\r\n }\r\n\r\n // Check if already switching\r\n if (this.isSwitchingEntity()) {\r\n return;\r\n }\r\n\r\n this.isSwitchingEntity.set(true);\r\n\r\n // Call switch entity API\r\n this.authService.switchEntity(entity._id).subscribe({\r\n next: (response: switchEntityControllerResponse) => {\r\n this.isSwitchingEntity.set(false);\r\n \r\n if (response?.success === true && response?.data) {\r\n // Update token in auth service (it will save to localStorage)\r\n if (response.token) {\r\n this.authService.auth_token = response.token;\r\n }\r\n\r\n // Update user data if provided\r\n if (response.data.auth_user_mst) {\r\n this.authService.storeUserData(response.data.auth_user_mst);\r\n this.appStateHelperService.setUser(response.data.auth_user_mst);\r\n }\r\n\r\n // Update active entity in AppStateService\r\n if (response.data.core_system_entity) {\r\n this.appStateService.setActiveEntity(response.data.core_system_entity);\r\n this.appStateHelperService.setActiveEntity(response.data.core_system_entity);\r\n }\r\n\r\n // Show success notification\r\n this.notificationService.success('Entity switched successfully');\r\n\r\n // Close drawer\r\n this.closeContainer();\r\n } else {\r\n this.notificationService.error(response?.message || 'Failed to switch entity');\r\n }\r\n },\r\n error: (error: HttpErrorResponse) => {\r\n this.isSwitchingEntity.set(false);\r\n console.error('Error switching entity:', error);\r\n const errorMessage = error?.error?.message || error?.message || 'Failed to switch entity';\r\n this.notificationService.error(errorMessage);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Handle entity view event from org structure (for viewing)\r\n */\r\n onEntityView(entity: CoreSystemEntityListResponse): void {\r\n console.log('👁️ Entity viewed:', entity);\r\n // Handle view-only mode - could show entity details or navigate\r\n // This can be customized based on your needs\r\n }\r\n\r\n /**\r\n * Cancel selection\r\n */\r\n onCancel(): void {\r\n this.closeContainer();\r\n }\r\n\r\n /**\r\n * Close the floating container\r\n */\r\n private closeContainer(): void {\r\n this.floatingContainerService.hideAll();\r\n }\r\n}"],"names":[],"mappings":"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"}
|