@memberjunction/ng-conversations 5.32.0 → 5.34.0
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/dist/lib/components/collection/artifact-collection-picker-modal.component.d.ts +75 -30
- package/dist/lib/components/collection/artifact-collection-picker-modal.component.d.ts.map +1 -1
- package/dist/lib/components/collection/artifact-collection-picker-modal.component.js +1026 -478
- package/dist/lib/components/collection/artifact-collection-picker-modal.component.js.map +1 -1
- package/dist/lib/components/collection/collection-form-modal.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collection-form-modal.component.js +5 -5
- package/dist/lib/components/collection/collection-form-modal.component.js.map +1 -1
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +8 -1
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -1
- package/dist/lib/components/conversation/conversation-chat-area.component.js +30 -16
- package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -1
- package/dist/lib/components/conversation/conversation-list.component.d.ts.map +1 -1
- package/dist/lib/components/conversation/conversation-list.component.js +3 -3
- package/dist/lib/components/conversation/conversation-list.component.js.map +1 -1
- package/dist/lib/components/message/message-item.component.d.ts +12 -1
- package/dist/lib/components/message/message-item.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-item.component.js +34 -15
- package/dist/lib/components/message/message-item.component.js.map +1 -1
- package/dist/lib/components/search/search-panel.component.d.ts +1 -7
- package/dist/lib/components/search/search-panel.component.d.ts.map +1 -1
- package/dist/lib/components/search/search-panel.component.js +4 -14
- package/dist/lib/components/search/search-panel.component.js.map +1 -1
- package/package.json +22 -22
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifact-collection-picker-modal.component.js","sourceRoot":"","sources":["../../../../src/lib/components/collection/artifact-collection-picker-modal.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter, OnInit, OnChanges, SimpleChanges, ChangeDetectorRef } from '@angular/core';\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\n\nimport { FormsModule } from '@angular/forms';\nimport { UserInfo, RunView, Metadata } from '@memberjunction/core';\nimport { MJCollectionEntity } from '@memberjunction/core-entities';\nimport { MJDialogComponent, MJDialogActionsComponent, MJButtonDirective } from '@memberjunction/ng-ui-components';\nimport { SharedGenericModule } from '@memberjunction/ng-shared-generic';\nimport { ToastService } from '../../services/toast.service';\nimport { CollectionPermissionService, CollectionPermission } from '../../services/collection-permission.service';\nimport { UUIDsEqual } from '@memberjunction/global';\n\ninterface CollectionNode {\n collection: MJCollectionEntity;\n selected: boolean;\n hasChildren: boolean;\n alreadyContainsArtifact: boolean;\n}\n\n/**\n * Modal for selecting collections to save artifacts to.\n * Features:\n * - Permission-aware: only shows collections where user has Edit permission\n * - Hierarchical navigation: start with root collections, drill down as needed\n * - Search by name\n * - Multi-selection support\n * - Create new collection with proper permission logic\n */\n@Component({\n selector: 'mj-artifact-collection-picker-modal',\n standalone: true,\n imports: [\n FormsModule,\n MJDialogComponent,\n MJDialogActionsComponent,\n MJButtonDirective,\n SharedGenericModule\n],\n template: `\n @if (isOpen) {\n <mj-dialog\n Title=\"Save to Collection\"\n (Close)=\"onCancel()\"\n [Visible]=\"true\"\n [Width]=\"700\"\n [MinWidth]=\"500\">\n <div class=\"picker-modal\">\n <!-- Breadcrumb Navigation -->\n @if (navigationPath.length > 0) {\n <div class=\"breadcrumb-nav\">\n <button class=\"breadcrumb-btn\" (click)=\"navigateToRoot()\">\n <i class=\"fas fa-home\"></i> Root\n </button>\n @for (item of navigationPath; track item.collection.ID) {\n <i class=\"fas fa-chevron-right breadcrumb-separator\"></i>\n <button class=\"breadcrumb-btn\" (click)=\"navigateToCollection(item.collection)\">\n {{ item.collection.Name }}\n </button>\n }\n </div>\n }\n <!-- Search Bar -->\n <div class=\"search-bar\">\n <i class=\"fas fa-search search-icon\"></i>\n <input\n type=\"text\"\n class=\"k-textbox search-input\"\n [(ngModel)]=\"searchQuery\"\n (input)=\"onSearchChange()\"\n placeholder=\"Search collections...\"\n [disabled]=\"isLoading\">\n </div>\n <!-- Collections List -->\n @if (!isLoading && !errorMessage) {\n <div class=\"collections-list\">\n @if (displayedCollections.length === 0) {\n <div class=\"empty-state\">\n @if (searchQuery) {\n <i class=\"fas fa-search\"></i>\n <p>No collections found matching \"{{ searchQuery }}\"</p>\n } @else if (currentParentId) {\n <i class=\"fas fa-folder-open\"></i>\n <p>No sub-collections available</p>\n } @else {\n <i class=\"fas fa-folder\"></i>\n <p>No collections available</p>\n <p class=\"hint\">Create a new collection to get started</p>\n }\n </div>\n } @else {\n @for (node of displayedCollections; track node.collection.ID) {\n <div class=\"collection-item\"\n [class.already-added]=\"node.alreadyContainsArtifact\"\n (click)=\"toggleSelection(node)\">\n <div class=\"collection-checkbox\">\n <input\n type=\"checkbox\"\n [checked]=\"node.selected\"\n [disabled]=\"node.alreadyContainsArtifact\"\n (click)=\"$event.stopPropagation(); toggleSelection(node)\">\n </div>\n <i class=\"fas fa-folder collection-icon\" [style.color]=\"node.collection.Color || 'var(--mj-brand-primary)'\"></i>\n <span class=\"collection-name\">{{ node.collection.Name }}</span>\n @if (node.alreadyContainsArtifact) {\n <span class=\"already-added-badge\">\n <i class=\"fas fa-check-circle\"></i> Already added\n </span>\n }\n @if (node.hasChildren) {\n <button\n class=\"drill-down-btn\"\n (click)=\"$event.stopPropagation(); drillIntoCollection(node.collection)\"\n title=\"View sub-collections\">\n <i class=\"fas fa-chevron-right\"></i>\n </button>\n }\n </div>\n }\n }\n </div>\n }\n <!-- Loading State -->\n @if (isLoading) {\n <div class=\"loading-state\">\n <mj-loading text=\"Loading collections...\" size=\"medium\"></mj-loading>\n </div>\n }\n <!-- Error State -->\n @if (errorMessage) {\n <div class=\"error-state\">\n <i class=\"fas fa-exclamation-triangle\"></i>\n <span>{{ errorMessage }}</span>\n </div>\n }\n <!-- Selected Collections Summary -->\n @if (selectedCollections.length > 0) {\n <div class=\"selected-summary\">\n <i class=\"fas fa-check-circle\"></i>\n <span>{{ selectedCollections.length }} collection(s) selected</span>\n </div>\n }\n <!-- Create New Collection Section -->\n <div class=\"create-section\">\n <div class=\"divider\">\n <span>OR CREATE NEW</span>\n </div>\n @if (!showCreateForm) {\n <button class=\"btn-create-collection\" (click)=\"showCreateForm = true\">\n <i class=\"fas fa-plus\"></i>\n Create New Collection\n </button>\n } @else {\n <div class=\"create-form\">\n <input\n type=\"text\"\n class=\"k-textbox create-input\"\n [(ngModel)]=\"newCollectionName\"\n placeholder=\"Enter collection name\"\n (keydown.enter)=\"createCollection()\"\n #newCollectionInput>\n <div class=\"create-actions\">\n <button mjButton variant=\"primary\" size=\"sm\" (click)=\"createCollection()\" [disabled]=\"isCreatingCollection || !newCollectionName.trim()\">\n @if (isCreatingCollection) {\n <i class=\"fas fa-spinner fa-spin\"></i>\n } @else {\n Create\n }\n </button>\n <button mjButton size=\"sm\" (click)=\"showCreateForm = false; newCollectionName = ''\">\n Cancel\n </button>\n </div>\n </div>\n }\n </div>\n </div>\n <mj-dialog-actions>\n <button mjButton (click)=\"onCancel()\">\n Cancel\n </button>\n <button mjButton\n variant=\"primary\"\n (click)=\"onSave()\"\n [disabled]=\"selectedCollections.length === 0 || isSaving\">\n @if (isSaving) {\n <i class=\"fas fa-spinner fa-spin\"></i> Saving...\n } @else {\n <i class=\"fas fa-save\"></i> Save to {{ selectedCollections.length }} Collection(s)\n }\n </button>\n </mj-dialog-actions>\n </mj-dialog>\n }\n `,\n styles: [`\n .picker-modal {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 20px 0;\n min-height: 400px;\n max-height: 600px;\n }\n\n .breadcrumb-nav {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow-x: auto;\n }\n\n .breadcrumb-btn {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 4px 8px;\n background: transparent;\n border: none;\n border-radius: 4px;\n color: var(--mj-brand-primary);\n cursor: pointer;\n white-space: nowrap;\n font-size: 14px;\n }\n\n .breadcrumb-btn:hover {\n background: var(--mj-border-default);\n }\n\n .breadcrumb-separator {\n color: var(--mj-text-disabled);\n font-size: 12px;\n }\n\n .search-bar {\n position: relative;\n display: flex;\n align-items: center;\n }\n\n .search-icon {\n position: absolute;\n left: 12px;\n color: var(--mj-text-disabled);\n pointer-events: none;\n }\n\n .search-input {\n width: 100%;\n padding-left: 36px;\n }\n\n .collections-list {\n flex: 1;\n overflow-y: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n min-height: 250px;\n max-height: 350px;\n }\n\n .collection-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n cursor: pointer;\n transition: background 0.2s;\n }\n\n .collection-item:hover {\n background: var(--mj-bg-surface-sunken);\n }\n\n .collection-item:last-child {\n border-bottom: none;\n }\n\n .collection-item.already-added {\n background: var(--mj-bg-surface-sunken);\n opacity: 0.7;\n cursor: not-allowed;\n }\n\n .collection-item.already-added:hover {\n background: var(--mj-bg-surface-sunken);\n }\n\n .collection-checkbox {\n display: flex;\n align-items: center;\n }\n\n .collection-checkbox input[type=\"checkbox\"] {\n width: 18px;\n height: 18px;\n cursor: pointer;\n }\n\n .collection-icon {\n font-size: 18px;\n flex-shrink: 0;\n }\n\n .collection-name {\n flex: 1;\n font-size: 14px;\n color: var(--mj-text-primary);\n }\n\n .already-added-badge {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 4px 8px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 30%, var(--mj-bg-surface));\n border-radius: 12px;\n color: var(--mj-brand-primary);\n font-size: 12px;\n font-weight: 500;\n white-space: nowrap;\n }\n\n .already-added-badge i {\n font-size: 12px;\n color: var(--mj-brand-primary);\n }\n\n .drill-down-btn {\n padding: 6px 10px;\n background: transparent;\n border: 1px solid var(--mj-border-strong);\n border-radius: 4px;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: all 0.2s;\n }\n\n .drill-down-btn:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-text-disabled);\n color: var(--mj-text-secondary);\n }\n\n .empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 48px 24px;\n color: var(--mj-text-muted);\n text-align: center;\n }\n\n .empty-state i {\n font-size: 48px;\n margin-bottom: 16px;\n opacity: 0.4;\n }\n\n .empty-state p {\n margin: 4px 0;\n font-size: 14px;\n }\n\n .empty-state .hint {\n font-size: 13px;\n color: var(--mj-text-disabled);\n }\n\n .loading-state, .error-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 48px 24px;\n gap: 12px;\n color: var(--mj-text-muted);\n }\n\n .error-state i {\n font-size: 32px;\n }\n\n .error-state {\n color: var(--mj-status-error);\n }\n\n .selected-summary {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 30%, var(--mj-bg-surface));\n border-radius: 6px;\n color: var(--mj-brand-primary);\n font-size: 14px;\n font-weight: 500;\n }\n\n .selected-summary i {\n color: var(--mj-brand-primary);\n }\n\n .create-section {\n display: flex;\n flex-direction: column;\n gap: 12px;\n }\n\n .divider {\n display: flex;\n align-items: center;\n text-align: center;\n color: var(--mj-text-disabled);\n font-size: 12px;\n font-weight: 500;\n }\n\n .divider::before,\n .divider::after {\n content: '';\n flex: 1;\n border-bottom: 1px solid var(--mj-border-default);\n }\n\n .divider span {\n padding: 0 12px;\n }\n\n .btn-create-collection {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 10px 16px;\n background: var(--mj-bg-surface-sunken);\n border: 2px dashed var(--mj-border-strong);\n border-radius: 6px;\n color: var(--mj-brand-primary);\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s;\n }\n\n .btn-create-collection:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-brand-primary);\n }\n\n .btn-create-collection i {\n font-size: 16px;\n }\n\n .create-form {\n display: flex;\n flex-direction: column;\n gap: 12px;\n padding: 16px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n }\n\n .create-input {\n width: 100%;\n }\n\n .create-actions {\n display: flex;\n gap: 8px;\n justify-content: flex-end;\n }\n\n .btn-create, .btn-cancel {\n padding: 8px 16px;\n font-size: 14px;\n }\n `]\n})\nexport class ArtifactCollectionPickerModalComponent extends BaseAngularComponent implements OnInit, OnChanges {\n @Input() isOpen: boolean = false;\n @Input() environmentId!: string;\n @Input() currentUser!: UserInfo;\n @Input() excludeCollectionIds: string[] = []; // Collections to exclude (e.g., already contains artifact)\n\n @Output() saved = new EventEmitter<string[]>(); // Emits selected collection IDs\n @Output() cancelled = new EventEmitter<void>();\n\n public allCollections: MJCollectionEntity[] = [];\n public displayedCollections: CollectionNode[] = [];\n public selectedCollections: MJCollectionEntity[] = [];\n public userPermissions: Map<string, CollectionPermission> = new Map();\n\n public navigationPath: CollectionNode[] = []; // Breadcrumb trail\n public currentParentId: string | null = null;\n public currentParentCollection: MJCollectionEntity | undefined = undefined;\n\n public searchQuery: string = '';\n public isLoading: boolean = false;\n public isSaving: boolean = false;\n public errorMessage: string = '';\n\n // Create collection form state\n public showCreateForm: boolean = false;\n public newCollectionName: string = '';\n public isCreatingCollection: boolean = false;\n\n constructor(\n private toastService: ToastService,\n private permissionService: CollectionPermissionService,\n private cdr: ChangeDetectorRef\n ) {\n super();}\n\n async ngOnInit() {\n this.permissionService.Provider = this.ProviderToUse;\n if (this.isOpen) {\n await this.loadCollections();\n }\n }\n\n async ngOnChanges(changes: any) {\n if (changes['isOpen'] && this.isOpen) {\n this.reset();\n await this.loadCollections();\n }\n }\n\n private reset(): void {\n this.allCollections = [];\n this.displayedCollections = [];\n this.selectedCollections = [];\n this.userPermissions.clear();\n this.navigationPath = [];\n this.currentParentId = null;\n this.currentParentCollection = undefined;\n this.searchQuery = '';\n this.errorMessage = '';\n }\n\n private async loadCollections(): Promise<void> {\n try {\n this.isLoading = true;\n this.errorMessage = '';\n\n // Load all collections in environment\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await rv.RunView<MJCollectionEntity>({\n EntityName: 'MJ: Collections',\n ExtraFilter: `EnvironmentID='${this.environmentId}'`,\n OrderBy: 'Name ASC',\n ResultType: 'entity_object'\n }, this.currentUser);\n\n if (!result.Success) {\n this.errorMessage = result.ErrorMessage || 'Failed to load collections';\n return;\n }\n\n this.allCollections = result.Results || [];\n\n // Load user permissions for all collections\n await this.loadUserPermissions();\n\n // Filter to collections with Edit permission\n // Include collections that already contain the artifact (will be shown as disabled)\n const editableCollections = this.allCollections.filter(c => {\n return this.canEdit(c);\n });\n\n // Show root collections initially\n this.displayRootCollections(editableCollections);\n\n } catch (error) {\n console.error('Error loading collections:', error);\n this.errorMessage = 'An error occurred while loading collections';\n } finally {\n this.isLoading = false;\n this.cdr.detectChanges();\n }\n }\n\n private async loadUserPermissions(): Promise<void> {\n // Load permissions for collections not owned by current user\n const nonOwnedCollections = this.allCollections.filter(\n c => c.OwnerID && !UUIDsEqual(c.OwnerID, this.currentUser.ID)\n );\n\n if (nonOwnedCollections.length === 0) {\n return;\n }\n\n const collectionIds = nonOwnedCollections.map(c => c.ID);\n const permissions = await this.permissionService.checkBulkPermissions(\n collectionIds,\n this.currentUser.ID,\n this.currentUser\n );\n\n permissions.forEach((permission, collectionId) => {\n this.userPermissions.set(collectionId, permission);\n });\n }\n\n private displayRootCollections(editableCollections: MJCollectionEntity[]): void {\n const rootCollections = editableCollections.filter(c => !c.ParentID);\n this.displayedCollections = rootCollections.map(c => this.createNode(c, editableCollections));\n }\n\n private displayChildCollections(parentId: string, editableCollections: MJCollectionEntity[]): void {\n const childCollections = editableCollections.filter(c => UUIDsEqual(c.ParentID, parentId));\n this.displayedCollections = childCollections.map(c => this.createNode(c, editableCollections));\n }\n\n private createNode(collection: MJCollectionEntity, allEditableCollections: MJCollectionEntity[]): CollectionNode {\n const hasChildren = allEditableCollections.some(c => UUIDsEqual(c.ParentID, collection.ID));\n const alreadyContainsArtifact = this.excludeCollectionIds.some(id => UUIDsEqual(id, collection.ID));\n return {\n collection,\n selected: this.selectedCollections.some(sc => UUIDsEqual(sc.ID, collection.ID)),\n hasChildren,\n alreadyContainsArtifact\n };\n }\n\n canEdit(collection: MJCollectionEntity): boolean {\n // Backwards compatibility: treat null OwnerID as owned by current user\n if (!collection.OwnerID || UUIDsEqual(collection.OwnerID, this.currentUser.ID)) {\n return true;\n }\n\n // Check permission record\n const permission = this.userPermissions.get(collection.ID);\n return permission?.canEdit || false;\n }\n\n toggleSelection(node: CollectionNode): void {\n // Don't allow selection of collections that already contain the artifact\n if (node.alreadyContainsArtifact) {\n return;\n }\n\n const index = this.selectedCollections.findIndex(c => UUIDsEqual(c.ID, node.collection.ID));\n if (index >= 0) {\n this.selectedCollections.splice(index, 1);\n node.selected = false;\n } else {\n this.selectedCollections.push(node.collection);\n node.selected = true;\n }\n }\n\n drillIntoCollection(collection: MJCollectionEntity): void {\n // Add current location to navigation path\n const editableCollections = this.allCollections.filter(c => {\n return this.canEdit(c);\n });\n\n const node = this.createNode(collection, editableCollections);\n this.navigationPath.push(node);\n\n this.currentParentId = collection.ID;\n this.currentParentCollection = collection;\n\n // Display child collections\n this.displayChildCollections(collection.ID, editableCollections);\n\n // Clear search when drilling down\n this.searchQuery = '';\n }\n\n navigateToRoot(): void {\n this.navigationPath = [];\n this.currentParentId = null;\n this.currentParentCollection = undefined;\n\n const editableCollections = this.allCollections.filter(c => {\n return this.canEdit(c);\n });\n\n this.displayRootCollections(editableCollections);\n this.searchQuery = '';\n }\n\n navigateToCollection(collection: MJCollectionEntity): void {\n // Find the index of this collection in the navigation path\n const index = this.navigationPath.findIndex(n => UUIDsEqual(n.collection.ID, collection.ID));\n\n if (index >= 0) {\n // Trim navigation path to this level\n this.navigationPath = this.navigationPath.slice(0, index + 1);\n this.currentParentId = collection.ID;\n this.currentParentCollection = collection;\n\n const editableCollections = this.allCollections.filter(c => {\n return this.canEdit(c);\n });\n\n this.displayChildCollections(collection.ID, editableCollections);\n this.searchQuery = '';\n }\n }\n\n onSearchChange(): void {\n if (!this.searchQuery.trim()) {\n // Reset to current navigation context\n if (this.currentParentId) {\n const editableCollections = this.allCollections.filter(c => {\n return this.canEdit(c);\n });\n this.displayChildCollections(this.currentParentId, editableCollections);\n } else {\n const editableCollections = this.allCollections.filter(c => {\n return this.canEdit(c);\n });\n this.displayRootCollections(editableCollections);\n }\n return;\n }\n\n // Search across all editable collections\n const query = this.searchQuery.toLowerCase();\n const editableCollections = this.allCollections.filter(c => {\n return this.canEdit(c) && c.Name.toLowerCase().includes(query);\n });\n\n this.displayedCollections = editableCollections.map(c => this.createNode(c, editableCollections));\n }\n\n async createCollection(): Promise<void> {\n if (!this.newCollectionName.trim()) {\n this.toastService.warning('Please enter a collection name');\n return;\n }\n\n try {\n this.isCreatingCollection = true;\n const md = this.ProviderToUse;\n const collection = await md.GetEntityObject<MJCollectionEntity>('MJ: Collections', this.currentUser);\n\n collection.Name = this.newCollectionName.trim();\n collection.EnvironmentID = this.environmentId;\n\n // Set parent and owner based on current navigation context\n if (this.currentParentCollection) {\n // Creating sub-collection - inherit parent's owner\n collection.ParentID = this.currentParentCollection.ID;\n collection.OwnerID = this.currentParentCollection.OwnerID || this.currentUser.ID;\n } else {\n // Creating root collection - current user becomes owner\n collection.OwnerID = this.currentUser.ID;\n }\n\n const saved = await collection.Save();\n\n if (saved) {\n // Create owner permission or copy parent permissions\n if (this.currentParentCollection) {\n // Copy permissions from parent\n await this.permissionService.copyParentPermissions(\n this.currentParentCollection.ID,\n collection.ID,\n this.currentUser\n );\n } else {\n // Create owner permission\n await this.permissionService.createOwnerPermission(\n collection.ID,\n this.currentUser.ID,\n this.currentUser\n );\n }\n\n this.toastService.success('Collection created successfully');\n\n // Reset form\n this.showCreateForm = false;\n this.newCollectionName = '';\n\n // Reload collections to include the new one\n await this.loadCollections();\n\n // Auto-select the newly created collection\n this.selectedCollections.push(collection);\n } else {\n this.toastService.error(collection.LatestResult?.Message || 'Failed to create collection');\n }\n } catch (error) {\n console.error('Error creating collection:', error);\n this.toastService.error('An error occurred while creating the collection');\n } finally {\n this.isCreatingCollection = false;\n this.cdr.detectChanges();\n }\n }\n\n async onSave(): Promise<void> {\n if (this.selectedCollections.length === 0) {\n this.toastService.warning('Please select at least one collection');\n return;\n }\n\n this.isSaving = true;\n\n try {\n // Emit the selected collection IDs - parent handles actual saving and modal close\n const collectionIds = this.selectedCollections.map(c => c.ID);\n this.saved.emit(collectionIds);\n } finally {\n this.isSaving = false;\n this.cdr.detectChanges();\n }\n }\n\n onCancel(): void {\n this.cancelled.emit();\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"artifact-collection-picker-modal.component.js","sourceRoot":"","sources":["../../../../src/lib/components/collection/artifact-collection-picker-modal.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter, OnInit, OnChanges, SimpleChanges, ChangeDetectorRef, ViewChild, ElementRef, AfterViewInit } from '@angular/core';\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\n\nimport { FormsModule } from '@angular/forms';\nimport { UserInfo, RunView, LogError } from '@memberjunction/core';\nimport { MJCollectionEntity, MJCollectionArtifactEntity } from '@memberjunction/core-entities';\nimport { MJDialogComponent, MJDialogActionsComponent, MJButtonDirective } from '@memberjunction/ng-ui-components';\nimport { SharedGenericModule } from '@memberjunction/ng-shared-generic';\nimport { ToastService } from '../../services/toast.service';\nimport { CollectionPermissionService, CollectionPermission } from '../../services/collection-permission.service';\nimport { UUIDsEqual, NormalizeUUID } from '@memberjunction/global';\n\ntype SaveStatus = 'pending' | 'saving' | 'success' | 'error';\ntype FilterMode = 'editable' | 'recent';\n\ninterface CollectionNode {\n collection: MJCollectionEntity;\n depth: number;\n expanded: boolean;\n hasChildren: boolean;\n alreadyContainsArtifact: boolean;\n /** Breadcrumb of parent names — only used in search mode */\n ancestry: string;\n}\n\ninterface SaveResult {\n collectionId: string;\n collectionName: string;\n status: SaveStatus;\n errorMessage?: string;\n}\n\n/**\n * Modal for saving an artifact version to one or more collections.\n *\n * Owns the full UX *and* the writes:\n * - Left pane: searchable, expandable tree of collections the user can edit\n * - Right pane: artifact preview + live selection chips, and (post-save) per-collection results\n * - Save runs inline (modal stays open during writes) and reports per-collection success/failure with retry\n *\n * Emits {@link completed} on full success (parent should reload bookmark state) and on user-acknowledged\n * partial failure. Emits {@link cancelled} when the user backs out without saving anything.\n */\n@Component({\n selector: 'mj-artifact-collection-picker-modal',\n standalone: true,\n imports: [\n FormsModule,\n MJDialogComponent,\n MJDialogActionsComponent,\n MJButtonDirective,\n SharedGenericModule\n ],\n template: `\n @if (isOpen) {\n <mj-dialog\n Title=\"Save to Collection\"\n (Close)=\"onCancel()\"\n [Visible]=\"true\"\n [Width]=\"960\"\n [MinWidth]=\"720\">\n <div class=\"picker-shell\">\n <!-- ============================================================ -->\n <!-- LEFT PANE · search + tree -->\n <!-- ============================================================ -->\n <div class=\"pane pane-left\">\n <div class=\"toolbar\">\n <div class=\"search\">\n <i class=\"fa-solid fa-magnifying-glass\"></i>\n <input\n #searchInput\n type=\"text\"\n [(ngModel)]=\"searchQuery\"\n (ngModelChange)=\"onSearchChange()\"\n placeholder=\"Search collections…\"\n [disabled]=\"isLoading || isSaving\" />\n @if (searchQuery) {\n <button class=\"search-clear\" (click)=\"clearSearch()\" title=\"Clear\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n }\n </div>\n <button class=\"chip-btn\"\n [class.active]=\"filterMode === 'editable'\"\n (click)=\"setFilter('editable')\"\n [disabled]=\"isSaving\">\n <i class=\"fa-solid fa-user-pen\"></i> Editable\n </button>\n <button class=\"chip-btn\"\n [class.active]=\"filterMode === 'recent'\"\n (click)=\"setFilter('recent')\"\n [disabled]=\"isSaving\">\n <i class=\"fa-solid fa-clock\"></i> Recent\n </button>\n </div>\n\n <div class=\"tree-wrap\">\n @if (isLoading) {\n <div class=\"state-block\">\n <mj-loading text=\"Loading collections…\" size=\"medium\"></mj-loading>\n </div>\n } @else if (errorMessage) {\n <div class=\"state-block error\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n <span>{{ errorMessage }}</span>\n </div>\n } @else if (visibleNodes.length === 0) {\n <div class=\"state-block muted\">\n @if (searchQuery) {\n <i class=\"fa-solid fa-magnifying-glass\"></i>\n <p>No collections match “{{ searchQuery }}”</p>\n <button class=\"link-btn\" (click)=\"clearSearch()\">Clear search</button>\n } @else {\n <i class=\"fa-solid fa-folder-open\"></i>\n <p>No editable collections yet</p>\n <p class=\"hint\">Create one to get started</p>\n }\n </div>\n } @else {\n <div class=\"tree\" role=\"tree\">\n @for (node of visibleNodes; track node.collection.ID) {\n <div class=\"row\"\n role=\"treeitem\"\n [class.selected]=\"isSelected(node.collection.ID)\"\n [class.already]=\"node.alreadyContainsArtifact\"\n [style.padding-left.px]=\"searchQuery ? 12 : 12 + node.depth * 18\"\n (click)=\"onRowClick(node)\">\n <span class=\"caret\" (click)=\"$event.stopPropagation(); toggleExpand(node)\">\n @if (node.hasChildren && !searchQuery) {\n <i class=\"fa-solid\" [class.fa-chevron-down]=\"node.expanded\" [class.fa-chevron-right]=\"!node.expanded\"></i>\n }\n </span>\n <span class=\"check\"\n [class.checked]=\"isSelected(node.collection.ID)\"\n [class.locked]=\"node.alreadyContainsArtifact\"\n [attr.aria-label]=\"node.alreadyContainsArtifact ? 'Already saved' : 'Toggle selection'\">\n @if (isSelected(node.collection.ID) || node.alreadyContainsArtifact) {\n <i class=\"fa-solid fa-check\"></i>\n }\n </span>\n <i class=\"fa-solid fa-folder folder-icon\"\n [style.color]=\"node.collection.Color || 'var(--mj-brand-primary)'\"></i>\n <span class=\"row-title\">\n {{ node.collection.Name }}\n @if (searchQuery && node.ancestry) {\n <span class=\"row-ancestry\">· {{ node.ancestry }}</span>\n }\n </span>\n @if (node.alreadyContainsArtifact) {\n <span class=\"row-tag success\">Already saved</span>\n }\n </div>\n }\n\n <!-- Inline \"create new\" row -->\n @if (!isSaving && !searchQuery && !showCreateForm) {\n <button class=\"row create-row\" (click)=\"openCreateForm()\">\n <span class=\"caret\"></span>\n <span class=\"check dashed\"><i class=\"fa-solid fa-plus\"></i></span>\n <span class=\"row-title\">Create new collection…</span>\n </button>\n } @else if (showCreateForm) {\n <div class=\"row create-form-row\">\n <span class=\"caret\"></span>\n <span class=\"check dashed\"><i class=\"fa-solid fa-plus\"></i></span>\n <input #newNameInput type=\"text\"\n class=\"create-input\"\n [(ngModel)]=\"newCollectionName\"\n (keydown.enter)=\"createCollection()\"\n (keydown.escape)=\"cancelCreate()\"\n placeholder=\"Collection name\"\n [disabled]=\"isCreatingCollection\" />\n <button mjButton variant=\"primary\" size=\"sm\"\n (click)=\"createCollection()\"\n [disabled]=\"isCreatingCollection || !newCollectionName.trim()\">\n @if (isCreatingCollection) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n } @else {\n Create\n }\n </button>\n <button mjButton size=\"sm\" (click)=\"cancelCreate()\" [disabled]=\"isCreatingCollection\">\n Cancel\n </button>\n </div>\n }\n </div>\n }\n </div>\n </div>\n\n <!-- ============================================================ -->\n <!-- RIGHT PANE · preview + chips / results -->\n <!-- ============================================================ -->\n <div class=\"pane pane-right\">\n <div class=\"preview-block\">\n <div class=\"block-label\">Saving</div>\n <div class=\"preview-card\">\n <div class=\"preview-thumb\"><i class=\"fa-solid fa-file-lines\"></i></div>\n <div class=\"preview-meta\">\n <div class=\"preview-name\" [title]=\"artifactName\">{{ artifactName || 'Artifact' }}</div>\n @if (artifactVersionNumber != null) {\n <span class=\"badge neutral\">v{{ artifactVersionNumber }}</span>\n }\n </div>\n </div>\n </div>\n\n <div class=\"chips-block\">\n <div class=\"block-label\">\n @if (saveResults.size > 0) {\n <span>Results</span>\n <span class=\"block-count\">{{ successCount }} / {{ saveResults.size }}</span>\n } @else {\n <span>Selected</span>\n <span class=\"block-count\">{{ selectedIds.size }}</span>\n }\n </div>\n\n @if (saveResults.size > 0) {\n <!-- Per-collection results -->\n <div class=\"chips\">\n @for (r of resultsList; track r.collectionId) {\n <div class=\"chip result\" [class.success]=\"r.status === 'success'\"\n [class.error]=\"r.status === 'error'\"\n [class.saving]=\"r.status === 'saving'\">\n <span class=\"chip-status\">\n @switch (r.status) {\n @case ('saving') { <i class=\"fa-solid fa-spinner fa-spin\"></i> }\n @case ('success') { <i class=\"fa-solid fa-check\"></i> }\n @case ('error') { <i class=\"fa-solid fa-triangle-exclamation\"></i> }\n @default { <i class=\"fa-solid fa-circle\"></i> }\n }\n </span>\n <div class=\"chip-body\">\n <div class=\"chip-name\">{{ r.collectionName }}</div>\n @if (r.status === 'error' && r.errorMessage) {\n <div class=\"chip-error\">{{ r.errorMessage }}</div>\n }\n </div>\n @if (r.status === 'error') {\n <button class=\"chip-action\" (click)=\"retryOne(r.collectionId)\" title=\"Retry\">\n <i class=\"fa-solid fa-rotate-right\"></i>\n </button>\n }\n </div>\n }\n </div>\n } @else if (selectedIds.size > 0) {\n <div class=\"chips\">\n @for (c of selectedCollections; track c.ID) {\n <div class=\"chip\">\n <i class=\"fa-solid fa-folder folder-icon\" [style.color]=\"c.Color || 'var(--mj-brand-primary)'\"></i>\n <div class=\"chip-body\">\n <div class=\"chip-name\">{{ c.Name }}</div>\n </div>\n <button class=\"chip-action\" (click)=\"deselect(c.ID)\"\n [disabled]=\"isSaving\"\n title=\"Remove\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n }\n </div>\n } @else {\n <div class=\"chips-empty\">\n <i class=\"fa-solid fa-hand-pointer\"></i>\n <p>Pick a collection on the left</p>\n </div>\n }\n </div>\n\n <div class=\"footnote\">\n <i class=\"fa-solid fa-shield-halved\"></i>\n Only collections you can edit are shown\n </div>\n </div>\n </div>\n\n <mj-dialog-actions>\n <!-- Primary on the LEFT per MJ convention -->\n @if (failedCount > 0 && !isSaving) {\n <button mjButton variant=\"primary\" (click)=\"retryFailed()\">\n <i class=\"fa-solid fa-rotate-right\"></i> Retry {{ failedCount }} failed\n </button>\n <button mjButton (click)=\"onAcknowledgeAndClose()\">Done</button>\n } @else if (saveResults.size > 0 && successCount === saveResults.size && !isSaving) {\n <!-- All succeeded — auto-closes, but render fallback button just in case -->\n <button mjButton variant=\"primary\" (click)=\"onAcknowledgeAndClose()\">\n <i class=\"fa-solid fa-check\"></i> Done\n </button>\n } @else {\n <button mjButton variant=\"primary\"\n (click)=\"onSave()\"\n [disabled]=\"selectedIds.size === 0 || isSaving\">\n @if (isSaving) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Saving to {{ selectedIds.size }}…\n } @else {\n <i class=\"fa-solid fa-bookmark\"></i>\n Save to {{ selectedIds.size }} {{ selectedIds.size === 1 ? 'collection' : 'collections' }}\n }\n </button>\n <button mjButton (click)=\"onCancel()\" [disabled]=\"isSaving\">Cancel</button>\n }\n </mj-dialog-actions>\n </mj-dialog>\n }\n `,\n styles: [`\n /* ===== Shell ===== */\n .picker-shell {\n display: grid;\n grid-template-columns: 1fr 300px;\n min-height: 460px;\n max-height: 70vh;\n gap: 0;\n margin: -8px -4px 0;\n }\n .pane { display:flex; flex-direction:column; min-height: 0; }\n .pane-left { border-right: 1px solid var(--mj-border-subtle); }\n .pane-right { background: var(--mj-bg-surface-card); }\n\n /* ===== Toolbar / search / chip filters ===== */\n .toolbar {\n display:flex; gap: 8px; padding: 10px 12px;\n border-bottom: 1px solid var(--mj-border-subtle);\n flex-wrap: wrap;\n }\n .search {\n flex: 1; min-width: 200px;\n display:flex; align-items:center; gap: 8px;\n padding: 8px 12px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid transparent;\n border-radius: 8px;\n transition: all .15s ease;\n }\n .search:focus-within {\n background: var(--mj-bg-surface);\n border-color: var(--mj-border-focus);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 18%, transparent);\n }\n .search i { color: var(--mj-text-muted); font-size: 13px; }\n .search input {\n flex: 1; border: 0; outline: 0; background: transparent;\n font-size: 13.5px; color: var(--mj-text-primary);\n min-width: 0;\n }\n .search input::placeholder { color: var(--mj-text-disabled); }\n .search-clear {\n background: transparent; border: 0; cursor: pointer;\n color: var(--mj-text-muted); padding: 2px 4px; border-radius: 4px;\n }\n .search-clear:hover { color: var(--mj-text-primary); background: var(--mj-bg-surface-hover); }\n\n .chip-btn {\n display:inline-flex; align-items:center; gap: 6px;\n padding: 7px 11px; border-radius: 8px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n color: var(--mj-text-secondary);\n font-size: 12.5px; font-weight: 600; cursor: pointer;\n transition: all .15s ease;\n }\n .chip-btn:hover:not(:disabled) { background: var(--mj-bg-surface-hover); color: var(--mj-text-primary); }\n .chip-btn.active {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n }\n .chip-btn:disabled { opacity: .55; cursor: not-allowed; }\n\n /* ===== Tree ===== */\n .tree-wrap { flex: 1; overflow-y: auto; padding: 8px 8px 16px; }\n .tree { display:flex; flex-direction: column; gap: 1px; }\n .row {\n display:flex; align-items:center; gap: 10px;\n padding: 7px 12px; border-radius: 8px; cursor: pointer;\n user-select: none;\n border: 1px solid transparent;\n background: transparent;\n text-align: left;\n transition: background .12s ease;\n min-height: 36px;\n }\n .row:hover { background: var(--mj-bg-surface-hover); }\n .row.selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 9%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n }\n .row.already { cursor: default; }\n .row.already:hover { background: transparent; }\n .row.already .row-title { color: var(--mj-text-secondary); }\n\n .caret {\n width: 16px; flex-shrink: 0; text-align: center;\n color: var(--mj-text-muted); font-size: 10px;\n cursor: pointer;\n }\n .caret:hover { color: var(--mj-text-primary); }\n\n .check {\n width: 18px; height: 18px; border-radius: 5px;\n border: 1.5px solid var(--mj-border-strong);\n background: var(--mj-bg-surface);\n display:flex; align-items:center; justify-content:center;\n color: transparent; font-size: 10px; flex-shrink: 0;\n transition: all .12s ease;\n }\n .check.checked {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n color: #fff;\n }\n .check.locked {\n background: var(--mj-status-success);\n border-color: var(--mj-status-success);\n color: #fff;\n }\n .check.dashed {\n border-style: dashed;\n color: var(--mj-text-muted);\n }\n\n .folder-icon { font-size: 14px; flex-shrink: 0; }\n\n .row-title {\n flex: 1; font-size: 13.5px; font-weight: 600;\n color: var(--mj-text-primary);\n white-space: nowrap; overflow: hidden; text-overflow: ellipsis;\n }\n .row-ancestry {\n font-weight: 500; color: var(--mj-text-muted); font-size: 12px;\n margin-left: 2px;\n }\n .row-tag {\n font-size: 11px; font-weight: 600; padding: 2px 8px;\n border-radius: 999px; flex-shrink: 0;\n }\n .row-tag.success {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success-text);\n border: 1px solid color-mix(in srgb, var(--mj-status-success) 35%, transparent);\n }\n\n .create-row {\n width: 100%;\n border: 1.5px dashed var(--mj-border-strong);\n color: var(--mj-text-secondary);\n margin-top: 8px;\n background: transparent;\n }\n .create-row .row-title { color: var(--mj-text-secondary); font-weight: 600; }\n .create-row:hover {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 4%, var(--mj-bg-surface));\n }\n .create-row:hover .row-title { color: var(--mj-brand-primary); }\n\n .create-form-row {\n margin-top: 8px;\n border: 1.5px solid var(--mj-border-focus);\n background: var(--mj-bg-surface);\n cursor: default;\n gap: 8px;\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n }\n .create-input {\n flex: 1; min-width: 0;\n padding: 7px 10px;\n font-size: 13.5px; color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n border: 1.5px solid var(--mj-border-strong);\n border-radius: 6px;\n outline: 0;\n transition: all .12s ease;\n }\n .create-input::placeholder {\n color: var(--mj-text-muted);\n }\n .create-input:focus {\n border-color: var(--mj-border-focus);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n }\n\n /* ===== State blocks ===== */\n .state-block {\n display:flex; flex-direction:column; align-items:center; justify-content:center;\n padding: 48px 24px; gap: 8px; color: var(--mj-text-muted);\n text-align: center;\n }\n .state-block i { font-size: 28px; opacity: .6; }\n .state-block.error { color: var(--mj-status-error-text); }\n .state-block .hint { font-size: 12.5px; color: var(--mj-text-disabled); margin: 0; }\n .state-block .link-btn {\n background: transparent; border: 0; color: var(--mj-text-link);\n font-weight: 600; cursor: pointer; font-size: 13px; padding: 6px 12px;\n }\n .state-block .link-btn:hover { color: var(--mj-text-link-hover); text-decoration: underline; }\n .state-block p { margin: 0; font-size: 13.5px; }\n\n /* ===== Right pane ===== */\n .preview-block { padding: 16px 18px; border-bottom: 1px solid var(--mj-border-subtle); }\n .block-label {\n font-size: 11px; text-transform: uppercase; letter-spacing: .08em;\n font-weight: 700; color: var(--mj-text-muted); margin-bottom: 8px;\n display:flex; justify-content:space-between; align-items:center;\n }\n .block-count {\n color: var(--mj-brand-primary); font-size: 12px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n padding: 2px 8px; border-radius: 999px;\n }\n .preview-card {\n display:flex; gap: 12px; align-items:center;\n background: var(--mj-bg-surface); border: 1px solid var(--mj-border-default);\n border-radius: 10px; padding: 12px;\n box-shadow: 0 1px 2px rgba(15,23,42,.04);\n }\n .preview-thumb {\n width: 38px; height: 38px; border-radius: 9px; flex-shrink: 0;\n background: linear-gradient(135deg, var(--mj-color-accent-400), var(--mj-brand-primary));\n color: #fff; display:flex; align-items:center; justify-content:center;\n font-size: 14px;\n }\n .preview-meta { flex: 1; min-width: 0; display:flex; flex-direction: column; gap: 4px; }\n .preview-name {\n font-weight: 700; font-size: 13.5px; color: var(--mj-text-primary);\n white-space: nowrap; overflow: hidden; text-overflow: ellipsis;\n }\n .badge {\n display:inline-flex; align-items:center; gap: 4px;\n padding: 2px 8px; border-radius: 999px; font-size: 11px; font-weight: 600;\n width: fit-content;\n }\n .badge.neutral {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n border: 1px solid var(--mj-border-default);\n }\n\n .chips-block { flex: 1; min-height: 0; display:flex; flex-direction: column;\n padding: 16px 18px 8px; overflow-y: auto; }\n .chips { display:flex; flex-direction: column; gap: 6px; }\n .chip {\n display:flex; align-items:center; gap: 10px; padding: 8px 10px;\n background: var(--mj-bg-surface); border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n }\n .chip-body { flex: 1; min-width: 0; }\n .chip-name {\n font-weight: 600; font-size: 13px; color: var(--mj-text-primary);\n white-space: nowrap; overflow: hidden; text-overflow: ellipsis;\n }\n .chip-error {\n font-size: 11.5px; color: var(--mj-status-error-text); margin-top: 2px;\n white-space: nowrap; overflow: hidden; text-overflow: ellipsis;\n }\n .chip-action {\n width: 24px; height: 24px; border-radius: 6px;\n background: transparent; border: 0; cursor: pointer;\n color: var(--mj-text-muted); font-size: 11px;\n display:flex; align-items:center; justify-content:center;\n }\n .chip-action:hover:not(:disabled) {\n background: var(--mj-bg-surface-hover); color: var(--mj-text-primary);\n }\n .chip-action:disabled { opacity: .4; cursor: not-allowed; }\n .chip-status {\n width: 20px; flex-shrink: 0; text-align: center; font-size: 12px;\n }\n .chip.result.success { border-color: color-mix(in srgb, var(--mj-status-success) 35%, transparent);\n background: var(--mj-status-success-bg); }\n .chip.result.success .chip-status { color: var(--mj-status-success-text); }\n .chip.result.error { border-color: color-mix(in srgb, var(--mj-status-error) 35%, transparent);\n background: var(--mj-status-error-bg); }\n .chip.result.error .chip-status { color: var(--mj-status-error-text); }\n .chip.result.saving .chip-status { color: var(--mj-brand-primary); }\n\n .chips-empty {\n flex: 1; display:flex; flex-direction: column; align-items: center; justify-content: center;\n padding: 32px 16px; text-align: center; color: var(--mj-text-muted);\n border: 1.5px dashed var(--mj-border-default); border-radius: 10px;\n }\n .chips-empty i { font-size: 22px; margin-bottom: 8px; opacity: .55; }\n .chips-empty p { margin: 0; font-size: 12.5px; }\n\n .footnote {\n padding: 12px 18px;\n font-size: 11.5px; color: var(--mj-text-muted);\n display:flex; align-items:center; gap: 6px;\n border-top: 1px solid var(--mj-border-subtle);\n }\n .footnote i { font-size: 11px; }\n\n /* Tighten dialog content padding so panes meet edges cleanly */\n :host ::ng-deep mj-dialog .k-window-content,\n :host ::ng-deep mj-dialog .mj-dialog-content {\n padding: 0 !important;\n }\n `]\n})\nexport class ArtifactCollectionPickerModalComponent extends BaseAngularComponent implements OnInit, OnChanges, AfterViewInit {\n @Input() isOpen: boolean = false;\n @Input() environmentId!: string;\n @Input() currentUser!: UserInfo;\n /** Collections that already contain the *current version* — rendered with a green check and locked. */\n @Input() excludeCollectionIds: string[] = [];\n /** ID of the artifact version being saved. Required for writes. */\n @Input() artifactVersionId: string | null = null;\n /** Display-only: artifact name shown in the preview pane. */\n @Input() artifactName: string = '';\n /** Display-only: version number shown in the preview pane. */\n @Input() artifactVersionNumber: number | null = null;\n\n /** Fired when the save flow finishes (fully successful, or user acknowledged partial result). */\n @Output() completed = new EventEmitter<{ successIds: string[]; failedIds: string[] }>();\n @Output() cancelled = new EventEmitter<void>();\n\n @ViewChild('searchInput') searchInputRef?: ElementRef<HTMLInputElement>;\n @ViewChild('newNameInput') newNameInputRef?: ElementRef<HTMLInputElement>;\n\n // Data\n private allCollections: MJCollectionEntity[] = [];\n private editableCollections: MJCollectionEntity[] = [];\n private userPermissions: Map<string, CollectionPermission> = new Map();\n private collectionById: Map<string, MJCollectionEntity> = new Map();\n private expandedIds: Set<string> = new Set();\n\n // Selection (normalized UUIDs so SQL Server vs Postgres casing doesn't bite us)\n public selectedIds: Set<string> = new Set();\n\n // Filter / search\n public searchQuery: string = '';\n public filterMode: FilterMode = 'editable';\n\n // Render output\n public visibleNodes: CollectionNode[] = [];\n\n // States\n public isLoading: boolean = false;\n public isSaving: boolean = false;\n public errorMessage: string = '';\n public showCreateForm: boolean = false;\n public newCollectionName: string = '';\n public isCreatingCollection: boolean = false;\n\n // Per-collection save outcomes\n public saveResults: Map<string, SaveResult> = new Map();\n\n constructor(\n private toastService: ToastService,\n private permissionService: CollectionPermissionService,\n private cdr: ChangeDetectorRef\n ) {\n super();\n }\n\n // ============================================================\n // Lifecycle\n // ============================================================\n async ngOnInit() {\n this.permissionService.Provider = this.ProviderToUse;\n if (this.isOpen) {\n await this.loadCollections();\n }\n }\n\n async ngOnChanges(changes: SimpleChanges) {\n if (changes['isOpen']) {\n if (this.isOpen) {\n this.resetState();\n await this.loadCollections();\n // Autofocus search on next tick\n Promise.resolve().then(() => this.searchInputRef?.nativeElement?.focus());\n }\n }\n }\n\n ngAfterViewInit(): void {\n if (this.isOpen) {\n this.searchInputRef?.nativeElement?.focus();\n }\n }\n\n // ============================================================\n // Selection helpers (normalized UUIDs)\n // ============================================================\n public isSelected(id: string): boolean {\n return this.selectedIds.has(NormalizeUUID(id));\n }\n\n public get selectedCollections(): MJCollectionEntity[] {\n const list: MJCollectionEntity[] = [];\n for (const id of this.selectedIds) {\n const c = this.collectionById.get(id);\n if (c) list.push(c);\n }\n return list;\n }\n\n public get resultsList(): SaveResult[] {\n return Array.from(this.saveResults.values());\n }\n\n public get successCount(): number {\n let n = 0;\n for (const r of this.saveResults.values()) if (r.status === 'success') n++;\n return n;\n }\n\n public get failedCount(): number {\n let n = 0;\n for (const r of this.saveResults.values()) if (r.status === 'error') n++;\n return n;\n }\n\n // ============================================================\n // Load + tree build\n // ============================================================\n private resetState(): void {\n this.allCollections = [];\n this.editableCollections = [];\n this.userPermissions.clear();\n this.collectionById.clear();\n this.expandedIds.clear();\n this.selectedIds.clear();\n this.visibleNodes = [];\n this.searchQuery = '';\n this.filterMode = 'editable';\n this.errorMessage = '';\n this.showCreateForm = false;\n this.newCollectionName = '';\n this.saveResults.clear();\n this.isSaving = false;\n this.isCreatingCollection = false;\n }\n\n private async loadCollections(): Promise<void> {\n try {\n this.isLoading = true;\n this.errorMessage = '';\n\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await rv.RunView<MJCollectionEntity>({\n EntityName: 'MJ: Collections',\n ExtraFilter: `EnvironmentID='${this.environmentId}'`,\n OrderBy: 'Name ASC',\n ResultType: 'entity_object'\n }, this.currentUser);\n\n if (!result.Success) {\n this.errorMessage = result.ErrorMessage || 'Failed to load collections';\n return;\n }\n\n this.allCollections = result.Results || [];\n await this.loadUserPermissions();\n\n this.editableCollections = this.allCollections.filter(c => this.canEdit(c));\n this.collectionById.clear();\n for (const c of this.editableCollections) {\n this.collectionById.set(NormalizeUUID(c.ID), c);\n }\n\n this.rebuildVisibleNodes();\n } catch (error) {\n LogError(error);\n this.errorMessage = 'An error occurred while loading collections';\n } finally {\n this.isLoading = false;\n this.cdr.detectChanges();\n }\n }\n\n private async loadUserPermissions(): Promise<void> {\n const nonOwned = this.allCollections.filter(\n c => c.OwnerID && !UUIDsEqual(c.OwnerID, this.currentUser.ID)\n );\n if (nonOwned.length === 0) return;\n\n const ids = nonOwned.map(c => c.ID);\n const permissions = await this.permissionService.checkBulkPermissions(\n ids, this.currentUser.ID, this.currentUser\n );\n permissions.forEach((permission, id) => this.userPermissions.set(id, permission));\n }\n\n private canEdit(c: MJCollectionEntity): boolean {\n if (!c.OwnerID || UUIDsEqual(c.OwnerID, this.currentUser.ID)) return true;\n return this.userPermissions.get(c.ID)?.canEdit || false;\n }\n\n // ============================================================\n // Tree rendering — flat list of CollectionNode, ordered DFS\n // ============================================================\n private rebuildVisibleNodes(): void {\n const q = this.searchQuery.trim().toLowerCase();\n if (q) {\n this.visibleNodes = this.buildSearchNodes(q);\n } else {\n this.visibleNodes = this.buildTreeNodes();\n }\n }\n\n private buildTreeNodes(): CollectionNode[] {\n const byParent = new Map<string | null, MJCollectionEntity[]>();\n for (const c of this.editableCollections) {\n const key = c.ParentID ? NormalizeUUID(c.ParentID) : null;\n const arr = byParent.get(key) || [];\n arr.push(c);\n byParent.set(key, arr);\n }\n\n const out: CollectionNode[] = [];\n const walk = (parentId: string | null, depth: number): void => {\n const children = byParent.get(parentId) || [];\n for (const c of children) {\n const id = NormalizeUUID(c.ID);\n const kids = byParent.get(id) || [];\n const hasChildren = kids.length > 0;\n out.push({\n collection: c,\n depth,\n expanded: this.expandedIds.has(id),\n hasChildren,\n alreadyContainsArtifact: this.isAlreadyAdded(c.ID),\n ancestry: ''\n });\n if (hasChildren && this.expandedIds.has(id)) {\n walk(id, depth + 1);\n }\n }\n };\n walk(null, 0);\n return out;\n }\n\n private buildSearchNodes(query: string): CollectionNode[] {\n const matches = this.editableCollections.filter(c => c.Name.toLowerCase().includes(query));\n return matches.map(c => ({\n collection: c,\n depth: 0,\n expanded: false,\n hasChildren: false,\n alreadyContainsArtifact: this.isAlreadyAdded(c.ID),\n ancestry: this.buildAncestry(c)\n }));\n }\n\n private buildAncestry(c: MJCollectionEntity): string {\n const names: string[] = [];\n let parentId = c.ParentID;\n let guard = 0;\n while (parentId && guard++ < 32) {\n const p = this.collectionById.get(NormalizeUUID(parentId));\n if (!p) break;\n names.unshift(p.Name);\n parentId = p.ParentID;\n }\n return names.join(' / ');\n }\n\n private isAlreadyAdded(id: string): boolean {\n return this.excludeCollectionIds.some(eid => UUIDsEqual(eid, id));\n }\n\n // ============================================================\n // Tree interactions\n // ============================================================\n public onRowClick(node: CollectionNode): void {\n if (this.isSaving) return;\n if (node.alreadyContainsArtifact) return;\n this.toggleSelection(node.collection);\n }\n\n public toggleSelection(c: MJCollectionEntity): void {\n const id = NormalizeUUID(c.ID);\n if (this.selectedIds.has(id)) {\n this.selectedIds.delete(id);\n } else {\n this.selectedIds.add(id);\n }\n }\n\n public deselect(id: string): void {\n if (this.isSaving) return;\n this.selectedIds.delete(NormalizeUUID(id));\n }\n\n public toggleExpand(node: CollectionNode): void {\n if (!node.hasChildren) return;\n const id = NormalizeUUID(node.collection.ID);\n if (this.expandedIds.has(id)) {\n this.expandedIds.delete(id);\n } else {\n this.expandedIds.add(id);\n }\n this.rebuildVisibleNodes();\n }\n\n public onSearchChange(): void {\n this.rebuildVisibleNodes();\n }\n\n public clearSearch(): void {\n this.searchQuery = '';\n this.rebuildVisibleNodes();\n this.searchInputRef?.nativeElement?.focus();\n }\n\n public setFilter(mode: FilterMode): void {\n this.filterMode = mode;\n // 'recent' filter is a placeholder for now — same data, future sort change.\n // Keeping the chip wired so the UI is honest and a future PR can flip the sort.\n this.rebuildVisibleNodes();\n }\n\n // ============================================================\n // Create new collection (root-level only — keeps the picker simple)\n // ============================================================\n public openCreateForm(): void {\n this.showCreateForm = true;\n // Force the @if branch to render now, then focus the input it created.\n // A microtask alone isn't enough — Angular hasn't run change detection by then,\n // so the @ViewChild ref is still undefined.\n this.cdr.detectChanges();\n this.newNameInputRef?.nativeElement?.focus();\n }\n\n public cancelCreate(): void {\n this.showCreateForm = false;\n this.newCollectionName = '';\n }\n\n public async createCollection(): Promise<void> {\n const name = this.newCollectionName.trim();\n if (!name) {\n this.toastService.warning('Please enter a collection name');\n return;\n }\n try {\n this.isCreatingCollection = true;\n const p = this.ProviderToUse;\n const collection = await p.GetEntityObject<MJCollectionEntity>('MJ: Collections', this.currentUser);\n collection.Name = name;\n collection.EnvironmentID = this.environmentId;\n collection.OwnerID = this.currentUser.ID;\n\n const saved = await collection.Save();\n if (!saved) {\n this.toastService.error(collection.LatestResult?.CompleteMessage || 'Failed to create collection');\n return;\n }\n\n // No explicit owner permission row needed — CollectionPermissionProvider treats the\n // OwnerID as an implicit full-access grant. Writing a self-share row was both redundant\n // and triggering a server-side auth failure on freshly-created collections.\n\n this.toastService.success('Collection created');\n this.cancelCreate();\n\n // Splice the new collection into local state directly. Re-running loadCollections() here\n // races with the server's cache-invalidation propagation and intermittently returns the\n // pre-create result; we already own the freshly-saved entity, so just use it.\n this.allCollections = [...this.allCollections, collection];\n this.editableCollections = [...this.editableCollections, collection];\n this.collectionById.set(NormalizeUUID(collection.ID), collection);\n // Auto-select the new one\n this.selectedIds.add(NormalizeUUID(collection.ID));\n this.rebuildVisibleNodes();\n } catch (error) {\n LogError(error);\n this.toastService.error('Failed to create collection');\n } finally {\n this.isCreatingCollection = false;\n this.cdr.detectChanges();\n }\n }\n\n // ============================================================\n // Save flow (writes happen here, dialog stays open until done)\n // ============================================================\n public async onSave(): Promise<void> {\n if (this.isSaving) return;\n if (this.selectedIds.size === 0) {\n this.toastService.warning('Pick at least one collection');\n return;\n }\n if (!this.artifactVersionId) {\n this.toastService.error('No version selected to save');\n return;\n }\n\n this.isSaving = true;\n this.saveResults.clear();\n // Seed each result as pending so they render in order\n for (const c of this.selectedCollections) {\n this.saveResults.set(NormalizeUUID(c.ID), {\n collectionId: c.ID,\n collectionName: c.Name,\n status: 'pending'\n });\n }\n this.cdr.detectChanges();\n\n for (const c of this.selectedCollections) {\n await this.saveOne(c);\n }\n\n this.isSaving = false;\n\n // Auto-close on full success\n if (this.failedCount === 0) {\n this.emitCompleted();\n } else {\n this.toastService.warning(`Saved to ${this.successCount} of ${this.saveResults.size} collections`);\n this.cdr.detectChanges();\n }\n }\n\n public async retryFailed(): Promise<void> {\n if (this.isSaving) return;\n const toRetry: MJCollectionEntity[] = [];\n for (const r of this.saveResults.values()) {\n if (r.status === 'error') {\n const c = this.collectionById.get(NormalizeUUID(r.collectionId));\n if (c) toRetry.push(c);\n }\n }\n if (toRetry.length === 0) return;\n\n this.isSaving = true;\n this.cdr.detectChanges();\n for (const c of toRetry) {\n await this.saveOne(c);\n }\n this.isSaving = false;\n\n if (this.failedCount === 0) {\n this.emitCompleted();\n } else {\n this.cdr.detectChanges();\n }\n }\n\n public async retryOne(collectionId: string): Promise<void> {\n if (this.isSaving) return;\n const c = this.collectionById.get(NormalizeUUID(collectionId));\n if (!c) return;\n this.isSaving = true;\n this.cdr.detectChanges();\n await this.saveOne(c);\n this.isSaving = false;\n if (this.failedCount === 0 && this.successCount === this.saveResults.size) {\n this.emitCompleted();\n } else {\n this.cdr.detectChanges();\n }\n }\n\n private async saveOne(collection: MJCollectionEntity): Promise<void> {\n const key = NormalizeUUID(collection.ID);\n const r = this.saveResults.get(key);\n if (!r) return;\n r.status = 'saving';\n r.errorMessage = undefined;\n this.cdr.detectChanges();\n\n try {\n const versionId = this.artifactVersionId;\n if (!versionId) {\n r.status = 'error';\n r.errorMessage = 'No artifact version selected';\n return;\n }\n\n const p = this.ProviderToUse;\n\n // Server-side cache + remote-invalidation make this idempotent in practice,\n // but we still pre-check to avoid creating duplicate junction rows in races.\n const rv = RunView.FromMetadataProvider(p);\n const existing = await rv.RunView<MJCollectionArtifactEntity>({\n EntityName: 'MJ: Collection Artifacts',\n ExtraFilter: `CollectionID='${collection.ID}' AND ArtifactVersionID='${versionId}'`,\n ResultType: 'simple',\n Fields: ['ID']\n }, this.currentUser);\n\n if (existing.Success && (existing.Results?.length ?? 0) > 0) {\n r.status = 'success';\n return;\n }\n\n const junction = await p.GetEntityObject<MJCollectionArtifactEntity>(\n 'MJ: Collection Artifacts', this.currentUser\n );\n junction.CollectionID = collection.ID;\n junction.ArtifactVersionID = versionId;\n junction.Sequence = 0;\n\n const ok = await junction.Save();\n if (ok) {\n r.status = 'success';\n } else {\n r.status = 'error';\n r.errorMessage = junction.LatestResult?.CompleteMessage || 'Save failed';\n }\n } catch (err) {\n LogError(err);\n r.status = 'error';\n r.errorMessage = err instanceof Error ? err.message : 'Unexpected error';\n }\n }\n\n // ============================================================\n // Close paths\n // ============================================================\n public onCancel(): void {\n if (this.isSaving) return; // can't close while writes are in flight\n // If any saves completed before cancel, treat it as completion so the viewer reloads\n if (this.successCount > 0) {\n this.emitCompleted();\n } else {\n this.cancelled.emit();\n }\n }\n\n public onAcknowledgeAndClose(): void {\n this.emitCompleted();\n }\n\n private emitCompleted(): void {\n const successIds: string[] = [];\n const failedIds: string[] = [];\n for (const r of this.saveResults.values()) {\n if (r.status === 'success') successIds.push(r.collectionId);\n else if (r.status === 'error') failedIds.push(r.collectionId);\n }\n this.completed.emit({ successIds, failedIds });\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collection-form-modal.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/collection/collection-form-modal.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACjG,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAY,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,2BAA2B,EAAE,MAAM,8CAA8C,CAAC;;AAG3F;;GAEG;AACH,qBAuHa,4BAA6B,SAAQ,oBAAqB,YAAW,SAAS;IAmBvF,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,iBAAiB;IAnBlB,MAAM,EAAE,OAAO,CAAS;IACxB,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC,gBAAgB,CAAC,EAAE,kBAAkB,CAAC;IACtC,aAAa,EAAG,MAAM,CAAC;IACvB,WAAW,EAAG,QAAQ,CAAC;IAEtB,KAAK,mCAA0C;IAC/C,SAAS,qBAA4B;IAExC,QAAQ;;;MAGb;IAEK,QAAQ,EAAE,OAAO,CAAS;IAC1B,YAAY,EAAE,MAAM,CAAM;gBAGvB,YAAY,EAAE,YAAY,EAC1B,iBAAiB,EAAE,2BAA2B;IAIxD,WAAW,CAAC,OAAO,EAAE,aAAa;IAclC,IAAI,OAAO,IAAI,OAAO,CAErB;IAEK,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"collection-form-modal.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/collection/collection-form-modal.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACjG,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAY,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,2BAA2B,EAAE,MAAM,8CAA8C,CAAC;;AAG3F;;GAEG;AACH,qBAuHa,4BAA6B,SAAQ,oBAAqB,YAAW,SAAS;IAmBvF,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,iBAAiB;IAnBlB,MAAM,EAAE,OAAO,CAAS;IACxB,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC,gBAAgB,CAAC,EAAE,kBAAkB,CAAC;IACtC,aAAa,EAAG,MAAM,CAAC;IACvB,WAAW,EAAG,QAAQ,CAAC;IAEtB,KAAK,mCAA0C;IAC/C,SAAS,qBAA4B;IAExC,QAAQ;;;MAGb;IAEK,QAAQ,EAAE,OAAO,CAAS;IAC1B,YAAY,EAAE,MAAM,CAAM;gBAGvB,YAAY,EAAE,YAAY,EAC1B,iBAAiB,EAAE,2BAA2B;IAIxD,WAAW,CAAC,OAAO,EAAE,aAAa;IAclC,IAAI,OAAO,IAAI,OAAO,CAErB;IAEK,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAmG7B,QAAQ,IAAI,IAAI;IAKhB,OAAO,CAAC,SAAS;yCAlJN,4BAA4B;2CAA5B,4BAA4B;CAyJxC"}
|
|
@@ -175,13 +175,13 @@ export class CollectionFormModalComponent extends BaseAngularComponent {
|
|
|
175
175
|
// If creating new collection, set up permissions
|
|
176
176
|
if (!this.collection) {
|
|
177
177
|
if (this.parentCollection) {
|
|
178
|
-
// Child collection - copy
|
|
178
|
+
// Child collection - copy non-owner permissions from parent.
|
|
179
|
+
// (The owner gets implicit full access via OwnerID; no self-share row is written.)
|
|
179
180
|
await this.permissionService.copyParentPermissions(this.parentCollection.ID, collection.ID, this.currentUser);
|
|
180
181
|
}
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
}
|
|
182
|
+
// Root collection: nothing to do. CollectionPermissionProvider treats OwnerID as
|
|
183
|
+
// an implicit full-access grant — writing a self-share row was redundant and was
|
|
184
|
+
// failing server-side auth on freshly-created collections.
|
|
185
185
|
}
|
|
186
186
|
this.toastService.success(this.collection ? 'Collection updated successfully' : 'Collection created successfully');
|
|
187
187
|
this.saved.emit(collection);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collection-form-modal.component.js","sourceRoot":"","sources":["../../../../src/lib/components/collection/collection-form-modal.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter, OnChanges, SimpleChanges } from '@angular/core';\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\nimport { UserInfo, Metadata } from '@memberjunction/core';\nimport { MJCollectionEntity } from '@memberjunction/core-entities';\nimport { DialogService } from '../../services/dialog.service';\nimport { ToastService } from '../../services/toast.service';\nimport { CollectionPermissionService } from '../../services/collection-permission.service';\nimport { UUIDsEqual } from '@memberjunction/global';\n\n/**\n * Modal for creating and editing collections\n */\n@Component({\n standalone: false,\n selector: 'mj-collection-form-modal',\n template: `\n @if (isOpen) {\n <mj-dialog\n [Title]=\"collection?.ID ? 'Edit Collection' : 'New Collection'\"\n (Close)=\"onCancel()\"\n [Width]=\"500\"\n [MinWidth]=\"300\"\n [Visible]=\"true\">\n <div class=\"collection-form\">\n <div class=\"form-group\">\n <label class=\"form-label\">\n Name <span class=\"required\">*</span>\n </label>\n <input\n type=\"text\"\n class=\"k-textbox form-control\"\n [(ngModel)]=\"formData.name\"\n placeholder=\"Collection name\"\n #nameInput\n (keydown.enter)=\"onSave()\">\n </div>\n <div class=\"form-group\">\n <label class=\"form-label\">Description</label>\n <textarea\n class=\"k-textarea form-control\"\n [(ngModel)]=\"formData.description\"\n placeholder=\"Optional description\"\n rows=\"3\">\n </textarea>\n </div>\n @if (parentCollection) {\n <div class=\"form-group\">\n <label class=\"form-label\">Parent Collection</label>\n <div class=\"parent-info\">\n <i class=\"fas fa-folder\"></i>\n <span>{{ parentCollection.Name }}</span>\n </div>\n </div>\n }\n @if (errorMessage) {\n <div class=\"form-error\">\n <i class=\"fas fa-exclamation-circle\"></i>\n {{ errorMessage }}\n </div>\n }\n </div>\n <mj-dialog-actions>\n <button mjButton (click)=\"onCancel()\" [disabled]=\"isSaving\">\n Cancel\n </button>\n <button mjButton\n variant=\"primary\"\n (click)=\"onSave()\"\n [disabled]=\"!canSave || isSaving\">\n {{ isSaving ? 'Saving...' : 'Save' }}\n </button>\n </mj-dialog-actions>\n </mj-dialog>\n }\n `,\n styles: [`\n .collection-form {\n padding: 20px 0;\n }\n\n .form-group {\n margin-bottom: 20px;\n }\n\n .form-label {\n display: block;\n margin-bottom: 8px;\n font-weight: 500;\n color: var(--mj-text-primary);\n }\n\n .required {\n color: var(--mj-status-error);\n }\n\n .form-control {\n width: 100%;\n }\n\n .parent-info {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n color: var(--mj-text-muted);\n }\n\n .parent-info i {\n color: var(--mj-brand-primary);\n }\n\n .form-error {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px;\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 30%, var(--mj-bg-surface));\n border-radius: 6px;\n color: var(--mj-status-error);\n font-size: 14px;\n }\n\n .form-error i {\n flex-shrink: 0;\n }\n `]\n})\nexport class CollectionFormModalComponent extends BaseAngularComponent implements OnChanges {\n @Input() isOpen: boolean = false;\n @Input() collection?: MJCollectionEntity;\n @Input() parentCollection?: MJCollectionEntity;\n @Input() environmentId!: string;\n @Input() currentUser!: UserInfo;\n\n @Output() saved = new EventEmitter<MJCollectionEntity>();\n @Output() cancelled = new EventEmitter<void>();\n\n public formData = {\n name: '',\n description: ''\n };\n\n public isSaving: boolean = false;\n public errorMessage: string = '';\n\n constructor(\n private toastService: ToastService,\n private permissionService: CollectionPermissionService\n ) {\n super();}\n\n ngOnChanges(changes: SimpleChanges) {\n // Bind provider-aware service to this component's provider on every input change pass.\n this.permissionService.Provider = this.ProviderToUse;\n\n if (changes['collection'] || changes['isOpen']) {\n if (this.isOpen && this.collection) {\n this.formData.name = this.collection.Name || '';\n this.formData.description = this.collection.Description || '';\n } else if (this.isOpen && !this.collection) {\n this.formData = { name: '', description: '' };\n }\n }\n }\n\n get canSave(): boolean {\n return this.formData.name.trim().length > 0;\n }\n\n async onSave(): Promise<void> {\n if (!this.canSave) return;\n\n this.isSaving = true;\n this.errorMessage = '';\n\n try {\n // Validate permissions before saving\n if (this.collection) {\n // Editing existing collection - need Edit permission\n if (this.collection.OwnerID && !UUIDsEqual(this.collection.OwnerID, this.currentUser.ID)) {\n const permission = await this.permissionService.checkPermission(\n this.collection.ID,\n this.currentUser.ID,\n this.currentUser\n );\n\n if (!permission?.canEdit) {\n this.errorMessage = 'You do not have Edit permission for this collection.';\n this.isSaving = false;\n return;\n }\n }\n } else if (this.parentCollection) {\n // Creating child collection - need Edit permission on parent\n if (this.parentCollection.OwnerID && !UUIDsEqual(this.parentCollection.OwnerID, this.currentUser.ID)) {\n const permission = await this.permissionService.checkPermission(\n this.parentCollection.ID,\n this.currentUser.ID,\n this.currentUser\n );\n\n if (!permission?.canEdit) {\n this.errorMessage = 'You do not have Edit permission for the parent collection.';\n this.isSaving = false;\n return;\n }\n }\n }\n\n const md = this.ProviderToUse;\n const collection = this.collection ||\n await md.GetEntityObject<MJCollectionEntity>('MJ: Collections', this.currentUser);\n\n collection.Name = this.formData.name.trim();\n collection.Description = this.formData.description.trim() || null;\n collection.EnvironmentID = this.environmentId;\n\n // Set owner and parent relationship if creating new collection\n if (!this.collection) {\n if (this.parentCollection) {\n // Child collection inherits parent's owner to maintain permission hierarchy\n collection.ParentID = this.parentCollection.ID;\n collection.OwnerID = this.parentCollection.OwnerID || this.currentUser.ID;\n } else {\n // Root collection - current user becomes owner\n collection.OwnerID = this.currentUser.ID;\n }\n } else if (this.parentCollection) {\n // Updating existing collection's parent\n collection.ParentID = this.parentCollection.ID;\n }\n\n const saved = await collection.Save();\n if (saved) {\n // If creating new collection, set up permissions\n if (!this.collection) {\n if (this.parentCollection) {\n // Child collection - copy all permissions from parent (including owner)\n await this.permissionService.copyParentPermissions(\n this.parentCollection.ID,\n collection.ID,\n this.currentUser\n );\n } else {\n // Root collection - create owner permission for current user\n await this.permissionService.createOwnerPermission(\n collection.ID,\n this.currentUser.ID,\n this.currentUser\n );\n }\n }\n\n this.toastService.success(\n this.collection ? 'Collection updated successfully' : 'Collection created successfully'\n );\n this.saved.emit(collection);\n this.resetForm();\n } else {\n this.errorMessage = collection.LatestResult?.Message || 'Failed to save collection';\n this.toastService.error(this.errorMessage);\n }\n } catch (error) {\n console.error('Error saving collection:', error);\n this.errorMessage = 'An unexpected error occurred';\n this.toastService.error(this.errorMessage);\n } finally {\n this.isSaving = false;\n }\n }\n\n onCancel(): void {\n this.resetForm();\n this.cancelled.emit();\n }\n\n private resetForm(): void {\n this.formData = {\n name: '',\n description: ''\n };\n this.errorMessage = '';\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"collection-form-modal.component.js","sourceRoot":"","sources":["../../../../src/lib/components/collection/collection-form-modal.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter, OnChanges, SimpleChanges } from '@angular/core';\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\nimport { UserInfo, Metadata } from '@memberjunction/core';\nimport { MJCollectionEntity } from '@memberjunction/core-entities';\nimport { DialogService } from '../../services/dialog.service';\nimport { ToastService } from '../../services/toast.service';\nimport { CollectionPermissionService } from '../../services/collection-permission.service';\nimport { UUIDsEqual } from '@memberjunction/global';\n\n/**\n * Modal for creating and editing collections\n */\n@Component({\n standalone: false,\n selector: 'mj-collection-form-modal',\n template: `\n @if (isOpen) {\n <mj-dialog\n [Title]=\"collection?.ID ? 'Edit Collection' : 'New Collection'\"\n (Close)=\"onCancel()\"\n [Width]=\"500\"\n [MinWidth]=\"300\"\n [Visible]=\"true\">\n <div class=\"collection-form\">\n <div class=\"form-group\">\n <label class=\"form-label\">\n Name <span class=\"required\">*</span>\n </label>\n <input\n type=\"text\"\n class=\"k-textbox form-control\"\n [(ngModel)]=\"formData.name\"\n placeholder=\"Collection name\"\n #nameInput\n (keydown.enter)=\"onSave()\">\n </div>\n <div class=\"form-group\">\n <label class=\"form-label\">Description</label>\n <textarea\n class=\"k-textarea form-control\"\n [(ngModel)]=\"formData.description\"\n placeholder=\"Optional description\"\n rows=\"3\">\n </textarea>\n </div>\n @if (parentCollection) {\n <div class=\"form-group\">\n <label class=\"form-label\">Parent Collection</label>\n <div class=\"parent-info\">\n <i class=\"fas fa-folder\"></i>\n <span>{{ parentCollection.Name }}</span>\n </div>\n </div>\n }\n @if (errorMessage) {\n <div class=\"form-error\">\n <i class=\"fas fa-exclamation-circle\"></i>\n {{ errorMessage }}\n </div>\n }\n </div>\n <mj-dialog-actions>\n <button mjButton (click)=\"onCancel()\" [disabled]=\"isSaving\">\n Cancel\n </button>\n <button mjButton\n variant=\"primary\"\n (click)=\"onSave()\"\n [disabled]=\"!canSave || isSaving\">\n {{ isSaving ? 'Saving...' : 'Save' }}\n </button>\n </mj-dialog-actions>\n </mj-dialog>\n }\n `,\n styles: [`\n .collection-form {\n padding: 20px 0;\n }\n\n .form-group {\n margin-bottom: 20px;\n }\n\n .form-label {\n display: block;\n margin-bottom: 8px;\n font-weight: 500;\n color: var(--mj-text-primary);\n }\n\n .required {\n color: var(--mj-status-error);\n }\n\n .form-control {\n width: 100%;\n }\n\n .parent-info {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n color: var(--mj-text-muted);\n }\n\n .parent-info i {\n color: var(--mj-brand-primary);\n }\n\n .form-error {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px;\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 30%, var(--mj-bg-surface));\n border-radius: 6px;\n color: var(--mj-status-error);\n font-size: 14px;\n }\n\n .form-error i {\n flex-shrink: 0;\n }\n `]\n})\nexport class CollectionFormModalComponent extends BaseAngularComponent implements OnChanges {\n @Input() isOpen: boolean = false;\n @Input() collection?: MJCollectionEntity;\n @Input() parentCollection?: MJCollectionEntity;\n @Input() environmentId!: string;\n @Input() currentUser!: UserInfo;\n\n @Output() saved = new EventEmitter<MJCollectionEntity>();\n @Output() cancelled = new EventEmitter<void>();\n\n public formData = {\n name: '',\n description: ''\n };\n\n public isSaving: boolean = false;\n public errorMessage: string = '';\n\n constructor(\n private toastService: ToastService,\n private permissionService: CollectionPermissionService\n ) {\n super();}\n\n ngOnChanges(changes: SimpleChanges) {\n // Bind provider-aware service to this component's provider on every input change pass.\n this.permissionService.Provider = this.ProviderToUse;\n\n if (changes['collection'] || changes['isOpen']) {\n if (this.isOpen && this.collection) {\n this.formData.name = this.collection.Name || '';\n this.formData.description = this.collection.Description || '';\n } else if (this.isOpen && !this.collection) {\n this.formData = { name: '', description: '' };\n }\n }\n }\n\n get canSave(): boolean {\n return this.formData.name.trim().length > 0;\n }\n\n async onSave(): Promise<void> {\n if (!this.canSave) return;\n\n this.isSaving = true;\n this.errorMessage = '';\n\n try {\n // Validate permissions before saving\n if (this.collection) {\n // Editing existing collection - need Edit permission\n if (this.collection.OwnerID && !UUIDsEqual(this.collection.OwnerID, this.currentUser.ID)) {\n const permission = await this.permissionService.checkPermission(\n this.collection.ID,\n this.currentUser.ID,\n this.currentUser\n );\n\n if (!permission?.canEdit) {\n this.errorMessage = 'You do not have Edit permission for this collection.';\n this.isSaving = false;\n return;\n }\n }\n } else if (this.parentCollection) {\n // Creating child collection - need Edit permission on parent\n if (this.parentCollection.OwnerID && !UUIDsEqual(this.parentCollection.OwnerID, this.currentUser.ID)) {\n const permission = await this.permissionService.checkPermission(\n this.parentCollection.ID,\n this.currentUser.ID,\n this.currentUser\n );\n\n if (!permission?.canEdit) {\n this.errorMessage = 'You do not have Edit permission for the parent collection.';\n this.isSaving = false;\n return;\n }\n }\n }\n\n const md = this.ProviderToUse;\n const collection = this.collection ||\n await md.GetEntityObject<MJCollectionEntity>('MJ: Collections', this.currentUser);\n\n collection.Name = this.formData.name.trim();\n collection.Description = this.formData.description.trim() || null;\n collection.EnvironmentID = this.environmentId;\n\n // Set owner and parent relationship if creating new collection\n if (!this.collection) {\n if (this.parentCollection) {\n // Child collection inherits parent's owner to maintain permission hierarchy\n collection.ParentID = this.parentCollection.ID;\n collection.OwnerID = this.parentCollection.OwnerID || this.currentUser.ID;\n } else {\n // Root collection - current user becomes owner\n collection.OwnerID = this.currentUser.ID;\n }\n } else if (this.parentCollection) {\n // Updating existing collection's parent\n collection.ParentID = this.parentCollection.ID;\n }\n\n const saved = await collection.Save();\n if (saved) {\n // If creating new collection, set up permissions\n if (!this.collection) {\n if (this.parentCollection) {\n // Child collection - copy non-owner permissions from parent.\n // (The owner gets implicit full access via OwnerID; no self-share row is written.)\n await this.permissionService.copyParentPermissions(\n this.parentCollection.ID,\n collection.ID,\n this.currentUser\n );\n }\n // Root collection: nothing to do. CollectionPermissionProvider treats OwnerID as\n // an implicit full-access grant — writing a self-share row was redundant and was\n // failing server-side auth on freshly-created collections.\n }\n\n this.toastService.success(\n this.collection ? 'Collection updated successfully' : 'Collection created successfully'\n );\n this.saved.emit(collection);\n this.resetForm();\n } else {\n this.errorMessage = collection.LatestResult?.Message || 'Failed to save collection';\n this.toastService.error(this.errorMessage);\n }\n } catch (error) {\n console.error('Error saving collection:', error);\n this.errorMessage = 'An unexpected error occurred';\n this.toastService.error(this.errorMessage);\n } finally {\n this.isSaving = false;\n }\n }\n\n onCancel(): void {\n this.resetForm();\n this.cancelled.emit();\n }\n\n private resetForm(): void {\n this.formData = {\n name: '',\n description: ''\n };\n this.errorMessage = '';\n }\n}\n"]}
|
|
@@ -131,6 +131,9 @@ export declare class ConversationChatAreaComponent extends BaseAngularComponent
|
|
|
131
131
|
showCollectionPicker: boolean;
|
|
132
132
|
collectionPickerArtifactId: string | null;
|
|
133
133
|
collectionPickerExcludedIds: string[];
|
|
134
|
+
collectionPickerVersionId: string | null;
|
|
135
|
+
collectionPickerArtifactName: string;
|
|
136
|
+
collectionPickerVersionNumber: number | null;
|
|
134
137
|
canShareSelectedArtifact: boolean;
|
|
135
138
|
canEditSelectedArtifact: boolean;
|
|
136
139
|
isArtifactShareModalOpen: boolean;
|
|
@@ -472,8 +475,12 @@ export declare class ConversationChatAreaComponent extends BaseAngularComponent
|
|
|
472
475
|
artifactId: string;
|
|
473
476
|
excludedCollectionIds: string[];
|
|
474
477
|
}): void;
|
|
475
|
-
|
|
478
|
+
onCollectionPickerCompleted(event: {
|
|
479
|
+
successIds: string[];
|
|
480
|
+
failedIds: string[];
|
|
481
|
+
}): Promise<void>;
|
|
476
482
|
onCollectionPickerCancelled(): void;
|
|
483
|
+
private closeCollectionPicker;
|
|
477
484
|
/**
|
|
478
485
|
* Helper method to check if a conversation detail has an artifact
|
|
479
486
|
* Used by message components to determine whether to show artifact card
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-chat-area.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/conversation/conversation-chat-area.component.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"conversation-chat-area.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/conversation/conversation-chat-area.component.ts"],"names":[],"mappings":"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"}
|