@memberjunction/ng-list-management 6.1.4 → 6.2.0-edge.1
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/audience-source-picker/audience-source-picker.component.d.ts +74 -14
- package/dist/lib/components/audience-source-picker/audience-source-picker.component.d.ts.map +1 -1
- package/dist/lib/components/audience-source-picker/audience-source-picker.component.js +177 -57
- package/dist/lib/components/audience-source-picker/audience-source-picker.component.js.map +1 -1
- package/dist/lib/components/audience-source-summary/audience-source-summary.component.d.ts +7 -1
- package/dist/lib/components/audience-source-summary/audience-source-summary.component.d.ts.map +1 -1
- package/dist/lib/components/audience-source-summary/audience-source-summary.component.js +17 -5
- package/dist/lib/components/audience-source-summary/audience-source-summary.component.js.map +1 -1
- package/dist/lib/components/list-audit-log/list-audit-log.component.d.ts +30 -4
- package/dist/lib/components/list-audit-log/list-audit-log.component.d.ts.map +1 -1
- package/dist/lib/components/list-audit-log/list-audit-log.component.js +54 -14
- package/dist/lib/components/list-audit-log/list-audit-log.component.js.map +1 -1
- package/dist/lib/components/list-delta-confirm/list-delta-confirm.component.d.ts +17 -1
- package/dist/lib/components/list-delta-confirm/list-delta-confirm.component.d.ts.map +1 -1
- package/dist/lib/components/list-delta-confirm/list-delta-confirm.component.js +45 -13
- package/dist/lib/components/list-delta-confirm/list-delta-confirm.component.js.map +1 -1
- package/dist/lib/components/list-invitations/list-invitations.component.d.ts +48 -8
- package/dist/lib/components/list-invitations/list-invitations.component.d.ts.map +1 -1
- package/dist/lib/components/list-invitations/list-invitations.component.js +108 -28
- package/dist/lib/components/list-invitations/list-invitations.component.js.map +1 -1
- package/dist/lib/components/list-management-dialog/list-management-dialog.component.d.ts +123 -15
- package/dist/lib/components/list-management-dialog/list-management-dialog.component.d.ts.map +1 -1
- package/dist/lib/components/list-management-dialog/list-management-dialog.component.js +312 -100
- package/dist/lib/components/list-management-dialog/list-management-dialog.component.js.map +1 -1
- package/dist/lib/components/list-share-dialog/list-share-dialog.component.d.ts +128 -14
- package/dist/lib/components/list-share-dialog/list-share-dialog.component.d.ts.map +1 -1
- package/dist/lib/components/list-share-dialog/list-share-dialog.component.js +288 -92
- package/dist/lib/components/list-share-dialog/list-share-dialog.component.js.map +1 -1
- package/dist/lib/components/list-stats/list-stats.component.d.ts +32 -6
- package/dist/lib/components/list-stats/list-stats.component.d.ts.map +1 -1
- package/dist/lib/components/list-stats/list-stats.component.js +67 -15
- package/dist/lib/components/list-stats/list-stats.component.js.map +1 -1
- package/dist/lib/components/save-view-as-list-dialog/save-view-as-list-dialog.component.d.ts +44 -8
- package/dist/lib/components/save-view-as-list-dialog/save-view-as-list-dialog.component.d.ts.map +1 -1
- package/dist/lib/components/save-view-as-list-dialog/save-view-as-list-dialog.component.js +100 -28
- package/dist/lib/components/save-view-as-list-dialog/save-view-as-list-dialog.component.js.map +1 -1
- package/dist/lib/components/shared-with-me/shared-with-me.component.d.ts +18 -2
- package/dist/lib/components/shared-with-me/shared-with-me.component.d.ts.map +1 -1
- package/dist/lib/components/shared-with-me/shared-with-me.component.js +41 -9
- package/dist/lib/components/shared-with-me/shared-with-me.component.js.map +1 -1
- package/dist/lib/components/tag-chips/tag-chips.component.d.ts +30 -6
- package/dist/lib/components/tag-chips/tag-chips.component.d.ts.map +1 -1
- package/dist/lib/components/tag-chips/tag-chips.component.js +76 -28
- package/dist/lib/components/tag-chips/tag-chips.component.js.map +1 -1
- package/dist/lib/services/list-management.service.d.ts +25 -1
- package/dist/lib/services/list-management.service.d.ts.map +1 -1
- package/dist/lib/services/list-management.service.js +59 -11
- package/dist/lib/services/list-management.service.js.map +1 -1
- package/dist/lib/services/list-sharing.service.d.ts +42 -1
- package/dist/lib/services/list-sharing.service.d.ts.map +1 -1
- package/dist/lib/services/list-sharing.service.js +85 -17
- package/dist/lib/services/list-sharing.service.js.map +1 -1
- package/package.json +11 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-management-dialog.component.js","sourceRoot":"","sources":["../../../../src/lib/components/list-management-dialog/list-management-dialog.component.ts","../../../../src/lib/components/list-management-dialog/list-management-dialog.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnInit,\n OnDestroy,\n ChangeDetectorRef\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\nimport { Metadata } from '@memberjunction/core';\nimport { MJListEntity, MJListCategoryEntity } from '@memberjunction/core-entities';\nimport { ListManagementService } from '../../services/list-management.service';\nimport { UUIDsEqual } from '@memberjunction/global';\nimport {\n ListManagementDialogConfig,\n ListManagementResult,\n ListItemViewModel,\n ListFilterTab,\n ListSortOption,\n CreateListConfig,\n ListOperationDetail\n} from '../../models/list-management.models';\n\n/**\n * A gorgeous, responsive dialog for managing list membership.\n * Supports adding/removing records from multiple lists with membership indicators.\n *\n * Features:\n * - Search and filter lists\n * - Visual membership indicators (full/partial/none)\n * - Inline list creation\n * - Mobile-responsive bottom sheet on small screens\n * - Batch operations with progress feedback\n */\n@Component({\n standalone: false,\n selector: 'mj-list-management-dialog',\n templateUrl: './list-management-dialog.component.html',\n styleUrls: ['./list-management-dialog.component.css']\n})\nexport class ListManagementDialogComponent extends BaseAngularComponent implements OnInit, OnDestroy {\n /**\n * Configuration for the dialog.\n *\n * Initialization is deliberately order-independent with {@link visible}:\n * Angular assigns inputs in template attribute order, so a host binding\n * `[visible]` before `[config]` would otherwise open the dialog while\n * `config` is still undefined — `loadData()` would bail silently and the\n * dialog would render permanently empty.\n */\n @Input()\n get config(): ListManagementDialogConfig {\n return this._config;\n }\n set config(value: ListManagementDialogConfig) {\n this._config = value;\n this.tryInitialize();\n }\n private _config!: ListManagementDialogConfig;\n\n /**\n * Controls dialog visibility\n */\n @Input()\n get visible(): boolean {\n return this._visible;\n }\n set visible(value: boolean) {\n if (value && !this._visible) {\n this._pendingInit = true;\n }\n this._visible = value;\n this.tryInitialize();\n }\n private _visible = false;\n\n /** Set on each closed→open transition; cleared once init actually runs (requires config). */\n private _pendingInit = false;\n\n /** Runs initialization once per open, as soon as BOTH visible and config are available. */\n private tryInitialize(): void {\n if (this._pendingInit && this._visible && this._config) {\n this._pendingInit = false;\n void this.initializeDialog();\n }\n }\n\n /**\n * Emitted when dialog is closed with results\n */\n @Output() complete = new EventEmitter<ListManagementResult>();\n\n /**\n * Emitted when dialog is cancelled\n */\n @Output() cancel = new EventEmitter<void>();\n\n // State\n loading = false;\n saving = false;\n searchText = '';\n activeTab: ListFilterTab = 'all';\n sortOption: ListSortOption = 'name';\n showCreateForm = false;\n\n // Data\n allLists: ListItemViewModel[] = [];\n filteredLists: ListItemViewModel[] = [];\n categories: MJListCategoryEntity[] = [];\n\n // Create form state\n newListName = '';\n newListDescription = '';\n newListCategoryId: string | null = null;\n\n // Track changes\n private originalMembership = new Map<string, boolean>();\n public addedToLists: Set<string> = new Set();\n public removedFromLists: Set<string> = new Set();\n public newlyCreatedLists: MJListEntity[] = [];\n\n // Cleanup\n private destroy$ = new Subject<void>();\n private searchSubject = new Subject<string>();\n\n constructor(\n private listService: ListManagementService,\n private cdr: ChangeDetectorRef\n ) {\n super();}\n\n ngOnInit(): void {\n this.setupSearchDebounce();\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n /**\n * Get dialog title based on config\n */\n get dialogTitle(): string {\n if (this.config?.dialogTitle) {\n return this.config.dialogTitle;\n }\n\n const recordCount = this.config?.recordIds?.length || 0;\n const recordText = recordCount === 1 ? '1 record' : `${recordCount} records`;\n\n switch (this.config?.mode) {\n case 'add':\n return `Add ${recordText} to Lists`;\n case 'remove':\n return `Remove ${recordText} from Lists`;\n default:\n return `Manage List Membership`;\n }\n }\n\n /**\n * Get subtitle showing context\n */\n get dialogSubtitle(): string {\n const recordCount = this.config?.recordIds?.length || 0;\n const entityName = this.config?.entityName || 'records';\n\n if (recordCount === 1 && this.config?.recordDisplayNames?.[0]) {\n return `\"${this.config.recordDisplayNames[0]}\" from ${entityName}`;\n }\n\n return `${recordCount} ${entityName} record${recordCount !== 1 ? 's' : ''}`;\n }\n\n /**\n * Check if there are pending changes\n */\n get hasChanges(): boolean {\n return this.addedToLists.size > 0 || this.removedFromLists.size > 0;\n }\n\n /**\n * Get count of lists to add to\n */\n get addCount(): number {\n return this.addedToLists.size;\n }\n\n /**\n * Get count of lists to remove from\n */\n get removeCount(): number {\n return this.removedFromLists.size;\n }\n\n /**\n * Setup search with debounce\n */\n private setupSearchDebounce(): void {\n this.searchSubject.pipe(\n debounceTime(300),\n takeUntil(this.destroy$)\n ).subscribe((searchText: string) => {\n this.searchText = searchText;\n this.applyFilters();\n });\n }\n\n /**\n * Initialize dialog when opened\n */\n private async initializeDialog(): Promise<void> {\n // Per ListManagementService's multi-provider contract: thread this\n // component's Provider input into the (root-injected) service. Null is\n // fine — the service falls back to the global provider.\n this.listService.Provider = this.Provider;\n this.resetState();\n await this.loadData();\n }\n\n /**\n * Reset all state\n */\n private resetState(): void {\n this.searchText = '';\n this.activeTab = 'all';\n this.sortOption = 'name';\n this.showCreateForm = false;\n this.newListName = '';\n this.newListDescription = '';\n this.newListCategoryId = null;\n this.addedToLists.clear();\n this.removedFromLists.clear();\n this.newlyCreatedLists = [];\n this.originalMembership.clear();\n }\n\n /**\n * Load lists and membership data\n */\n private async loadData(): Promise<void> {\n if (!this.config) return;\n\n this.loading = true;\n this.cdr.detectChanges();\n\n try {\n const md = this.ProviderToUse;\n\n // Load lists and membership in parallel\n const [lists, membership, categories] = await Promise.all([\n this.listService.getListsForEntity(\n this.config.entityId,\n md.CurrentUser.ID,\n true // Force refresh\n ),\n this.listService.getRecordMembership(\n this.config.entityId,\n this.config.recordIds\n ),\n this.listService.getListCategories()\n ]);\n\n this.categories = categories;\n\n // Build view models\n this.allLists = await this.listService.buildListViewModels(\n lists,\n this.config.recordIds,\n membership\n );\n\n // Store original membership state\n for (const vm of this.allLists) {\n this.originalMembership.set(vm.list.ID, vm.isFullMember || vm.isPartialMember);\n }\n\n // Pre-select lists if configured\n if (this.config.preSelectedListIds) {\n for (const listId of this.config.preSelectedListIds) {\n const vm = this.allLists.find(l => UUIDsEqual(l.list.ID, listId));\n if (vm) {\n vm.isSelectedForAdd = true;\n this.addedToLists.add(listId);\n }\n }\n }\n\n this.applyFilters();\n } catch (error) {\n console.error('Error loading list data:', error);\n } finally {\n this.loading = false;\n this.cdr.detectChanges();\n }\n }\n\n /**\n * Handle search input\n */\n onSearchInput(event: Event): void {\n const value = (event.target as HTMLInputElement).value;\n this.searchSubject.next(value);\n }\n\n /**\n * Clear search\n */\n clearSearch(): void {\n this.searchText = '';\n this.searchSubject.next('');\n }\n\n /**\n * Change active tab\n */\n setActiveTab(tab: ListFilterTab): void {\n this.activeTab = tab;\n this.applyFilters();\n }\n\n /**\n * Change sort option\n */\n setSortOption(option: ListSortOption): void {\n this.sortOption = option;\n this.applyFilters();\n }\n\n /**\n * Apply all filters and sorting\n */\n private applyFilters(): void {\n let result = [...this.allLists];\n\n // Apply search filter\n if (this.searchText.trim()) {\n const search = this.searchText.toLowerCase();\n result = result.filter(vm =>\n vm.list.Name.toLowerCase().includes(search) ||\n (vm.list.Description?.toLowerCase().includes(search))\n );\n }\n\n // Apply tab filter\n switch (this.activeTab) {\n case 'my-lists':\n // Already filtered by user in loadData\n break;\n case 'recent':\n // Sort by last updated and take top 10\n result = result\n .sort((a, b) => b.lastUpdated.getTime() - a.lastUpdated.getTime())\n .slice(0, 10);\n break;\n // 'all' and 'shared' - no additional filtering for now\n }\n\n // Apply sorting\n switch (this.sortOption) {\n case 'name':\n result.sort((a, b) => a.list.Name.localeCompare(b.list.Name));\n break;\n case 'recent':\n result.sort((a, b) => b.lastUpdated.getTime() - a.lastUpdated.getTime());\n break;\n case 'item-count':\n result.sort((a, b) => b.itemCount - a.itemCount);\n break;\n }\n\n this.filteredLists = result;\n this.cdr.detectChanges();\n }\n\n /**\n * Toggle list selection for adding\n */\n toggleListForAdd(vm: ListItemViewModel): void {\n if (this.config?.mode === 'remove') return;\n\n const listId = vm.list.ID;\n\n if (vm.isSelectedForAdd || this.addedToLists.has(listId)) {\n // Deselect\n vm.isSelectedForAdd = false;\n this.addedToLists.delete(listId);\n } else {\n // Select for add\n vm.isSelectedForAdd = true;\n vm.isSelectedForRemove = false;\n this.addedToLists.add(listId);\n this.removedFromLists.delete(listId);\n }\n\n this.cdr.detectChanges();\n }\n\n /**\n * Toggle list selection for removal\n */\n toggleListForRemove(vm: ListItemViewModel): void {\n if (this.config?.mode === 'add') return;\n if (!this.config?.allowRemove && this.config?.mode !== 'manage') return;\n\n const listId = vm.list.ID;\n\n if (vm.isSelectedForRemove || this.removedFromLists.has(listId)) {\n // Deselect\n vm.isSelectedForRemove = false;\n this.removedFromLists.delete(listId);\n } else {\n // Select for remove\n vm.isSelectedForRemove = true;\n vm.isSelectedForAdd = false;\n this.removedFromLists.add(listId);\n this.addedToLists.delete(listId);\n }\n\n this.cdr.detectChanges();\n }\n\n /**\n * Get membership indicator class\n */\n getMembershipClass(vm: ListItemViewModel): string {\n if (vm.isFullMember) return 'full-member';\n if (vm.isPartialMember) return 'partial-member';\n return 'not-member';\n }\n\n /**\n * Get membership indicator text\n */\n getMembershipText(vm: ListItemViewModel): string {\n if (vm.isFullMember) {\n return `${vm.membershipCount}/${vm.totalSelectedRecords}`;\n }\n if (vm.isPartialMember) {\n return `${vm.membershipCount}/${vm.totalSelectedRecords}`;\n }\n return `0/${vm.totalSelectedRecords}`;\n }\n\n /**\n * Get membership icon\n */\n getMembershipIcon(vm: ListItemViewModel): string {\n if (vm.isFullMember) return 'fa-solid fa-check-circle';\n if (vm.isPartialMember) return 'fa-solid fa-circle-half-stroke';\n return 'fa-regular fa-circle';\n }\n\n /**\n * Show create list form\n */\n showCreateListForm(): void {\n this.showCreateForm = true;\n this.newListName = '';\n this.newListDescription = '';\n this.newListCategoryId = null;\n }\n\n /**\n * Cancel create list form\n */\n cancelCreateList(): void {\n this.showCreateForm = false;\n this.newListName = '';\n this.newListDescription = '';\n this.newListCategoryId = null;\n }\n\n /**\n * Create a new list\n */\n async createList(): Promise<void> {\n if (!this.newListName.trim() || !this.config) return;\n\n this.saving = true;\n\n try {\n const createConfig: CreateListConfig = {\n name: this.newListName.trim(),\n description: this.newListDescription.trim() || undefined,\n categoryId: this.newListCategoryId || undefined,\n entityId: this.config.entityId\n };\n\n const newList = await this.listService.createList(createConfig);\n\n if (newList) {\n this.newlyCreatedLists.push(newList);\n\n // Add to view models and select for add\n const vm: ListItemViewModel = {\n list: newList,\n itemCount: 0,\n membershipCount: 0,\n totalSelectedRecords: this.config.recordIds.length,\n isFullMember: false,\n isPartialMember: false,\n isNotMember: true,\n lastUpdated: new Date(),\n isSelectedForAdd: true,\n isSelectedForRemove: false\n };\n\n this.allLists.unshift(vm);\n this.addedToLists.add(newList.ID);\n\n this.showCreateForm = false;\n this.newListName = '';\n this.newListDescription = '';\n this.newListCategoryId = null;\n\n this.applyFilters();\n }\n } catch (error) {\n console.error('Error creating list:', error);\n } finally {\n this.saving = false;\n this.cdr.detectChanges();\n }\n }\n\n /**\n * Apply changes and close dialog\n */\n async applyChanges(): Promise<void> {\n if (!this.config) return;\n\n this.saving = true;\n\n const result: ListManagementResult = {\n action: 'apply',\n added: [],\n removed: [],\n newListsCreated: this.newlyCreatedLists,\n summary: { added: 0, removed: 0, skipped: 0, failed: 0 }\n };\n\n try {\n // Process additions\n if (this.addedToLists.size > 0) {\n const addResult = await this.listService.addRecordsToLists(\n [...this.addedToLists],\n this.config.recordIds,\n true // Skip duplicates\n );\n result.summary!.added += addResult.success;\n result.summary!.skipped += addResult.skipped;\n result.summary!.failed += addResult.failed;\n\n for (const listId of this.addedToLists) {\n const vm = this.allLists.find(l => UUIDsEqual(l.list.ID, listId));\n if (vm) {\n result.added.push({\n listId,\n listName: vm.list.Name,\n recordIds: this.config.recordIds\n });\n }\n }\n }\n\n // Process removals\n if (this.removedFromLists.size > 0) {\n const removeResult = await this.listService.removeRecordsFromLists(\n [...this.removedFromLists],\n this.config.recordIds\n );\n result.summary!.removed += removeResult.success;\n result.summary!.failed += removeResult.failed;\n\n for (const listId of this.removedFromLists) {\n const vm = this.allLists.find(l => UUIDsEqual(l.list.ID, listId));\n if (vm) {\n result.removed.push({\n listId,\n listName: vm.list.Name,\n recordIds: this.config.recordIds\n });\n }\n }\n }\n\n this.complete.emit(result);\n } catch (error) {\n console.error('Error applying changes:', error);\n } finally {\n this.saving = false;\n this._visible = false;\n this.cdr.detectChanges();\n }\n }\n\n /**\n * Cancel and close dialog\n */\n onCancel(): void {\n const result: ListManagementResult = {\n action: 'cancel',\n added: [],\n removed: [],\n newListsCreated: []\n };\n\n this._visible = false;\n this.cancel.emit();\n }\n\n /**\n * Format date for display\n */\n formatDate(date: Date): string {\n const now = new Date();\n const diff = now.getTime() - date.getTime();\n const minutes = Math.floor(diff / 60000);\n const hours = Math.floor(minutes / 60);\n const days = Math.floor(hours / 24);\n\n if (minutes < 1) return 'just now';\n if (minutes < 60) return `${minutes}m ago`;\n if (hours < 24) return `${hours}h ago`;\n if (days < 7) return `${days}d ago`;\n\n return date.toLocaleDateString();\n }\n\n /**\n * Check if we should show the add button for a list\n */\n showAddButton(vm: ListItemViewModel): boolean {\n if (this.config?.mode === 'remove') return false;\n return !vm.isFullMember || !this.originalMembership.get(vm.list.ID);\n }\n\n /**\n * Check if we should show the remove button for a list\n */\n showRemoveButton(vm: ListItemViewModel): boolean {\n if (this.config?.mode === 'add') return false;\n if (!this.config?.allowRemove && this.config?.mode !== 'manage') return false;\n return vm.isFullMember || vm.isPartialMember || this.originalMembership.get(vm.list.ID) === true;\n }\n}\n","@if (visible) {\n <div class=\"dialog-overlay\" (click)=\"onCancel()\">\n <div class=\"dialog-container\" (click)=\"$event.stopPropagation()\">\n <!-- Header -->\n <div class=\"dialog-header\">\n <div class=\"header-content\">\n <div class=\"header-icon\">\n <span class=\"fa-solid fa-rectangle-list\"></span>\n </div>\n <div class=\"header-text\">\n <h2 class=\"dialog-title\">{{ dialogTitle }}</h2>\n <p class=\"dialog-subtitle\">{{ dialogSubtitle }}</p>\n </div>\n </div>\n <button class=\"close-button\" (click)=\"onCancel()\" title=\"Close\">\n <span class=\"fa-solid fa-times\"></span>\n </button>\n </div>\n\n <!-- Search and Filters -->\n <div class=\"search-section\">\n <div class=\"search-bar\">\n <span class=\"fa-solid fa-search search-icon\"></span>\n <input\n type=\"text\"\n class=\"search-input\"\n placeholder=\"Search lists...\"\n [value]=\"searchText\"\n (input)=\"onSearchInput($event)\"\n />\n @if (searchText) {\n <button class=\"clear-search\" (click)=\"clearSearch()\">\n <span class=\"fa-solid fa-times-circle\"></span>\n </button>\n }\n </div>\n\n @if (config.allowCreate !== false) {\n <button class=\"create-button\" (click)=\"showCreateListForm()\" [disabled]=\"showCreateForm\">\n <span class=\"fa-solid fa-plus\"></span>\n <span class=\"button-text\">New</span>\n </button>\n }\n </div>\n\n <!-- Filter Tabs -->\n <div class=\"filter-tabs\">\n <div class=\"tabs-left\">\n <button\n class=\"tab-button\"\n [class.active]=\"activeTab === 'all'\"\n (click)=\"setActiveTab('all')\">\n All\n </button>\n <button\n class=\"tab-button\"\n [class.active]=\"activeTab === 'my-lists'\"\n (click)=\"setActiveTab('my-lists')\">\n My Lists\n </button>\n <button\n class=\"tab-button\"\n [class.active]=\"activeTab === 'recent'\"\n (click)=\"setActiveTab('recent')\">\n Recent\n </button>\n </div>\n <div class=\"tabs-right\">\n <select class=\"sort-select\" [value]=\"sortOption\" (change)=\"setSortOption($any($event.target).value)\">\n <option value=\"name\">Sort: Name</option>\n <option value=\"recent\">Sort: Recent</option>\n <option value=\"item-count\">Sort: Items</option>\n </select>\n </div>\n </div>\n\n <!-- Create List Form -->\n @if (showCreateForm) {\n <div class=\"create-form\">\n <div class=\"create-form-header\">\n <span class=\"fa-solid fa-plus-circle\"></span>\n <span>Create New List</span>\n </div>\n <div class=\"create-form-body\">\n <div class=\"form-group\">\n <input\n type=\"text\"\n class=\"form-input\"\n placeholder=\"List name *\"\n [(ngModel)]=\"newListName\"\n [disabled]=\"saving\"\n (keyup.enter)=\"createList()\"\n />\n </div>\n <div class=\"form-group\">\n <textarea\n class=\"form-input form-textarea\"\n placeholder=\"Description (optional)\"\n [(ngModel)]=\"newListDescription\"\n [disabled]=\"saving\"\n rows=\"2\">\n </textarea>\n </div>\n @if (categories.length > 0) {\n <div class=\"form-group\">\n <select class=\"form-input\" [(ngModel)]=\"newListCategoryId\" [disabled]=\"saving\">\n <option [ngValue]=\"null\">No category</option>\n @for (category of categories; track category.ID) {\n <option [ngValue]=\"category.ID\">{{ category.Name }}</option>\n }\n </select>\n </div>\n }\n <div class=\"create-form-actions\">\n <button\n class=\"btn btn-primary\"\n (click)=\"createList()\"\n [disabled]=\"!newListName.trim() || saving\">\n @if (saving) {\n <span class=\"fa-solid fa-spinner fa-spin\"></span>\n }\n Create List\n </button>\n <button class=\"btn btn-secondary\" (click)=\"cancelCreateList()\" [disabled]=\"saving\">\n Cancel\n </button>\n </div>\n </div>\n </div>\n }\n\n <!-- List Content -->\n <div class=\"list-content\">\n @if (loading) {\n <div class=\"loading-state\">\n <mj-loading text=\"Loading lists...\" size=\"medium\"></mj-loading>\n </div>\n } @else if (filteredLists.length === 0) {\n @if (searchText) {\n <mj-empty-state\n Variant=\"no-results\"\n Icon=\"fa-solid fa-magnifying-glass\"\n Title=\"No lists found\"\n Message=\"Try a different search term\" />\n } @else {\n <mj-empty-state\n Icon=\"fa-solid fa-rectangle-list\"\n Title=\"No lists yet\"\n Message=\"Create your first list to get started\"\n [ActionText]=\"config.allowCreate !== false ? 'Create List' : ''\"\n ActionIcon=\"fa-solid fa-plus\"\n (Action)=\"showCreateListForm()\" />\n }\n } @else {\n <div class=\"list-items\">\n @for (vm of filteredLists; track vm.list.ID) {\n <div\n class=\"list-item\"\n [class.selected-add]=\"vm.isSelectedForAdd || addedToLists.has(vm.list.ID)\"\n [class.selected-remove]=\"vm.isSelectedForRemove || removedFromLists.has(vm.list.ID)\"\n [class.is-member]=\"vm.isFullMember || vm.isPartialMember\">\n\n <!-- Checkbox / Selection Area -->\n <div class=\"list-item-select\">\n @if (showAddButton(vm)) {\n <button\n class=\"select-btn add-btn\"\n [class.selected]=\"vm.isSelectedForAdd || addedToLists.has(vm.list.ID)\"\n (click)=\"toggleListForAdd(vm)\"\n [title]=\"(vm.isSelectedForAdd || addedToLists.has(vm.list.ID)) ? 'Remove from selection' : 'Add to this list'\">\n @if (vm.isSelectedForAdd || addedToLists.has(vm.list.ID)) {\n <span class=\"fa-solid fa-check\"></span>\n } @else {\n <span class=\"fa-solid fa-plus\"></span>\n }\n </button>\n }\n @if (showRemoveButton(vm) && (vm.isFullMember || vm.isPartialMember)) {\n <button\n class=\"select-btn remove-btn\"\n [class.selected]=\"vm.isSelectedForRemove || removedFromLists.has(vm.list.ID)\"\n (click)=\"toggleListForRemove(vm)\"\n [title]=\"(vm.isSelectedForRemove || removedFromLists.has(vm.list.ID)) ? 'Cancel removal' : 'Remove from this list'\">\n @if (vm.isSelectedForRemove || removedFromLists.has(vm.list.ID)) {\n <span class=\"fa-solid fa-undo\"></span>\n } @else {\n <span class=\"fa-solid fa-minus\"></span>\n }\n </button>\n }\n </div>\n\n <!-- List Info -->\n <div class=\"list-item-content\">\n <div class=\"list-item-header\">\n <span class=\"fa-solid fa-folder list-icon\"></span>\n <span class=\"list-name\">{{ vm.list.Name }}</span>\n @if (newlyCreatedLists.includes(vm.list)) {\n <span class=\"badge badge-new\">New</span>\n }\n </div>\n <div class=\"list-item-meta\">\n @if (vm.list.Description) {\n <span class=\"list-description\">{{ vm.list.Description }}</span>\n <span class=\"meta-separator\">•</span>\n }\n <span class=\"list-count\">{{ vm.itemCount }} item{{ vm.itemCount !== 1 ? 's' : '' }}</span>\n <span class=\"meta-separator\">•</span>\n <span class=\"list-updated\">{{ formatDate(vm.lastUpdated) }}</span>\n </div>\n </div>\n\n <!-- Membership Indicator -->\n @if (config.showMembership !== false) {\n <div class=\"membership-indicator\" [class]=\"getMembershipClass(vm)\">\n <span [class]=\"getMembershipIcon(vm)\"></span>\n <span class=\"membership-text\">{{ getMembershipText(vm) }}</span>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Footer -->\n <div class=\"dialog-footer\">\n <div class=\"footer-summary\">\n @if (hasChanges) {\n @if (addCount > 0) {\n <span class=\"summary-item add\">\n <span class=\"fa-solid fa-plus-circle\"></span>\n {{ addCount }} list{{ addCount !== 1 ? 's' : '' }}\n </span>\n }\n @if (removeCount > 0) {\n <span class=\"summary-item remove\">\n <span class=\"fa-solid fa-minus-circle\"></span>\n {{ removeCount }} list{{ removeCount !== 1 ? 's' : '' }}\n </span>\n }\n } @else {\n <span class=\"summary-empty\">No changes</span>\n }\n </div>\n <div class=\"footer-actions\">\n <button class=\"btn btn-secondary\" (click)=\"onCancel()\" [disabled]=\"saving\">\n Cancel\n </button>\n <button\n class=\"btn btn-primary\"\n (click)=\"applyChanges()\"\n [disabled]=\"!hasChanges || saving\">\n @if (saving) {\n <span class=\"fa-solid fa-spinner fa-spin\"></span>\n }\n Apply Changes\n </button>\n </div>\n </div>\n </div>\n </div>\n}\n"]}
|
|
1
|
+
{"version":3,"file":"list-management-dialog.component.js","sourceRoot":"","sources":["../../../../src/lib/components/list-management-dialog/list-management-dialog.component.ts","../../../../src/lib/components/list-management-dialog/list-management-dialog.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnInit,\n OnDestroy,\n ChangeDetectorRef\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\nimport { Metadata } from '@memberjunction/core';\nimport { MJListEntity, MJListCategoryEntity } from '@memberjunction/core-entities';\nimport { ListManagementService } from '../../services/list-management.service';\nimport { UUIDsEqual } from '@memberjunction/global';\nimport {\n ListManagementDialogConfig,\n ListManagementResult,\n ListItemViewModel,\n ListFilterTab,\n ListSortOption,\n CreateListConfig,\n ListOperationDetail\n} from '../../models/list-management.models';\n\n/**\n * A gorgeous, responsive dialog for managing list membership.\n * Supports adding/removing records from multiple lists with membership indicators.\n *\n * Features:\n * - Search and filter lists\n * - Visual membership indicators (full/partial/none)\n * - Inline list creation\n * - Mobile-responsive bottom sheet on small screens\n * - Batch operations with progress feedback\n */\n@Component({\n standalone: false,\n selector: 'mj-list-management-dialog',\n templateUrl: './list-management-dialog.component.html',\n styleUrls: ['./list-management-dialog.component.css']\n})\nexport class ListManagementDialogComponent extends BaseAngularComponent implements OnInit, OnDestroy {\n /**\n * Configuration for the dialog.\n *\n * Initialization is deliberately order-independent with {@link visible}:\n * Angular assigns inputs in template attribute order, so a host binding\n * `[visible]` before `[config]` would otherwise open the dialog while\n * `config` is still undefined — `loadData()` would bail silently and the\n * dialog would render permanently empty.\n */\n @Input()\n get config(): ListManagementDialogConfig {\n return this._config;\n }\n set config(value: ListManagementDialogConfig) {\n this._config = value;\n this.tryInitialize();\n }\n private _config!: ListManagementDialogConfig;\n\n /**\n * Controls dialog visibility\n */\n @Input()\n get Visible(): boolean {\n return this._visible;\n }\n set Visible(value: boolean) {\n if (value && !this._visible) {\n this._pendingInit = true;\n }\n this._visible = value;\n this.tryInitialize();\n }\n\n /** @deprecated Use {@link Visible}. */\n get visible(): boolean {\n return this.Visible;\n }\n /** @deprecated Use {@link Visible}. */\n @Input() set visible(value: boolean) {\n this.Visible = value;\n }\n private _visible = false;\n\n /** Set on each closed→open transition; cleared once init actually runs (requires config). */\n private _pendingInit = false;\n\n /** Runs initialization once per open, as soon as BOTH visible and config are available. */\n private tryInitialize(): void {\n if (this._pendingInit && this._visible && this._config) {\n this._pendingInit = false;\n void this.initializeDialog();\n }\n }\n\n /**\n * Emitted when dialog is closed with results\n */\n @Output() Complete = new EventEmitter<ListManagementResult>();\n\n /**\n * @deprecated Use {@link Complete}.\n *\n * The same emitter under the old binding name, so a template still binding\n * (complete) keeps working. Must stay AFTER Complete: class fields\n * initialise in order, and the other way round this captures undefined.\n */\n @Output() complete = this.Complete;\n\n /**\n * Emitted when dialog is cancelled\n */\n @Output() cancel = new EventEmitter<void>();\n\n // State\n Loading = false;\n\n /** @deprecated Use {@link Loading}. */\n get loading() {\n return this.Loading;\n }\n /** @deprecated Use {@link Loading}. */\n set loading(value) {\n this.Loading = value;\n }\n saving = false;\n SearchText = '';\n\n /** @deprecated Use {@link SearchText}. */\n get searchText() {\n return this.SearchText;\n }\n /** @deprecated Use {@link SearchText}. */\n set searchText(value) {\n this.SearchText = value;\n }\n ActiveTab: ListFilterTab = 'all';\n\n /** @deprecated Use {@link ActiveTab}. */\n get activeTab(): ListFilterTab {\n return this.ActiveTab;\n }\n /** @deprecated Use {@link ActiveTab}. */\n set activeTab(value: ListFilterTab) {\n this.ActiveTab = value;\n }\n SortOption: ListSortOption = 'name';\n\n /** @deprecated Use {@link SortOption}. */\n get sortOption(): ListSortOption {\n return this.SortOption;\n }\n /** @deprecated Use {@link SortOption}. */\n set sortOption(value: ListSortOption) {\n this.SortOption = value;\n }\n ShowCreateForm = false;\n\n /** @deprecated Use {@link ShowCreateForm}. */\n get showCreateForm() {\n return this.ShowCreateForm;\n }\n /** @deprecated Use {@link ShowCreateForm}. */\n set showCreateForm(value) {\n this.ShowCreateForm = value;\n }\n\n // Data\n AllLists: ListItemViewModel[] = [];\n\n /** @deprecated Use {@link AllLists}. */\n get allLists(): ListItemViewModel[] {\n return this.AllLists;\n }\n /** @deprecated Use {@link AllLists}. */\n set allLists(value: ListItemViewModel[]) {\n this.AllLists = value;\n }\n FilteredLists: ListItemViewModel[] = [];\n\n /** @deprecated Use {@link FilteredLists}. */\n get filteredLists(): ListItemViewModel[] {\n return this.FilteredLists;\n }\n /** @deprecated Use {@link FilteredLists}. */\n set filteredLists(value: ListItemViewModel[]) {\n this.FilteredLists = value;\n }\n Categories: MJListCategoryEntity[] = [];\n\n /** @deprecated Use {@link Categories}. */\n get categories(): MJListCategoryEntity[] {\n return this.Categories;\n }\n /** @deprecated Use {@link Categories}. */\n set categories(value: MJListCategoryEntity[]) {\n this.Categories = value;\n }\n\n // Create form state\n NewListName = '';\n\n /** @deprecated Use {@link NewListName}. */\n get newListName() {\n return this.NewListName;\n }\n /** @deprecated Use {@link NewListName}. */\n set newListName(value) {\n this.NewListName = value;\n }\n NewListDescription = '';\n\n /** @deprecated Use {@link NewListDescription}. */\n get newListDescription() {\n return this.NewListDescription;\n }\n /** @deprecated Use {@link NewListDescription}. */\n set newListDescription(value) {\n this.NewListDescription = value;\n }\n NewListCategoryId: string | null = null;\n\n /** @deprecated Use {@link NewListCategoryId}. */\n get newListCategoryId(): string | null {\n return this.NewListCategoryId;\n }\n /** @deprecated Use {@link NewListCategoryId}. */\n set newListCategoryId(value: string | null) {\n this.NewListCategoryId = value;\n }\n\n // Track changes\n private originalMembership = new Map<string, boolean>();\n public AddedToLists: Set<string> = new Set();\n\n /** @deprecated Use {@link AddedToLists}. */\n public get addedToLists(): Set<string> {\n return this.AddedToLists;\n }\n /** @deprecated Use {@link AddedToLists}. */\n public set addedToLists(value: Set<string>) {\n this.AddedToLists = value;\n }\n public RemovedFromLists: Set<string> = new Set();\n\n /** @deprecated Use {@link RemovedFromLists}. */\n public get removedFromLists(): Set<string> {\n return this.RemovedFromLists;\n }\n /** @deprecated Use {@link RemovedFromLists}. */\n public set removedFromLists(value: Set<string>) {\n this.RemovedFromLists = value;\n }\n public NewlyCreatedLists: MJListEntity[] = [];\n\n /** @deprecated Use {@link NewlyCreatedLists}. */\n public get newlyCreatedLists(): MJListEntity[] {\n return this.NewlyCreatedLists;\n }\n /** @deprecated Use {@link NewlyCreatedLists}. */\n public set newlyCreatedLists(value: MJListEntity[]) {\n this.NewlyCreatedLists = value;\n }\n\n // Cleanup\n private destroy$ = new Subject<void>();\n private searchSubject = new Subject<string>();\n\n constructor(\n private listService: ListManagementService,\n private cdr: ChangeDetectorRef\n ) {\n super();}\n\n ngOnInit(): void {\n this.setupSearchDebounce();\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n /**\n * Get dialog title based on config\n */\n get DialogTitle(): string {\n if (this.config?.dialogTitle) {\n return this.config.dialogTitle;\n }\n\n const recordCount = this.config?.recordIds?.length || 0;\n const recordText = recordCount === 1 ? '1 record' : `${recordCount} records`;\n\n switch (this.config?.mode) {\n case 'add':\n return `Add ${recordText} to Lists`;\n case 'remove':\n return `Remove ${recordText} from Lists`;\n default:\n return `Manage List Membership`;\n }\n }\n\n /** @deprecated Use {@link DialogTitle}. */\n get dialogTitle(): string {\n return this.DialogTitle;\n }\n\n /**\n * Get subtitle showing context\n */\n get DialogSubtitle(): string {\n const recordCount = this.config?.recordIds?.length || 0;\n const entityName = this.config?.entityName || 'records';\n\n if (recordCount === 1 && this.config?.recordDisplayNames?.[0]) {\n return `\"${this.config.recordDisplayNames[0]}\" from ${entityName}`;\n }\n\n return `${recordCount} ${entityName} record${recordCount !== 1 ? 's' : ''}`;\n }\n\n /** @deprecated Use {@link DialogSubtitle}. */\n get dialogSubtitle(): string {\n return this.DialogSubtitle;\n }\n\n /**\n * Check if there are pending changes\n */\n get HasChanges(): boolean {\n return this.AddedToLists.size > 0 || this.RemovedFromLists.size > 0;\n }\n\n /** @deprecated Use {@link HasChanges}. */\n get hasChanges(): boolean {\n return this.HasChanges;\n }\n\n /**\n * Get count of lists to add to\n */\n get AddCount(): number {\n return this.AddedToLists.size;\n }\n\n /** @deprecated Use {@link AddCount}. */\n get addCount(): number {\n return this.AddCount;\n }\n\n /**\n * Get count of lists to remove from\n */\n get RemoveCount(): number {\n return this.RemovedFromLists.size;\n }\n\n /** @deprecated Use {@link RemoveCount}. */\n get removeCount(): number {\n return this.RemoveCount;\n }\n\n /**\n * Setup search with debounce\n */\n private setupSearchDebounce(): void {\n this.searchSubject.pipe(\n debounceTime(300),\n takeUntil(this.destroy$)\n ).subscribe((searchText: string) => {\n this.SearchText = searchText;\n this.applyFilters();\n });\n }\n\n /**\n * Initialize dialog when opened\n */\n private async initializeDialog(): Promise<void> {\n // Per ListManagementService's multi-provider contract: thread this\n // component's Provider input into the (root-injected) service. Null is\n // fine — the service falls back to the global provider.\n this.listService.Provider = this.Provider;\n this.resetState();\n await this.loadData();\n }\n\n /**\n * Reset all state\n */\n private resetState(): void {\n this.SearchText = '';\n this.ActiveTab = 'all';\n this.SortOption = 'name';\n this.ShowCreateForm = false;\n this.NewListName = '';\n this.NewListDescription = '';\n this.NewListCategoryId = null;\n this.AddedToLists.clear();\n this.RemovedFromLists.clear();\n this.NewlyCreatedLists = [];\n this.originalMembership.clear();\n }\n\n /**\n * Load lists and membership data\n */\n private async loadData(): Promise<void> {\n if (!this.config) return;\n\n this.Loading = true;\n this.cdr.detectChanges();\n\n try {\n const md = this.ProviderToUse;\n\n // Load lists and membership in parallel\n const [lists, membership, categories] = await Promise.all([\n this.listService.getListsForEntity(\n this.config.entityId,\n md.CurrentUser.ID,\n true // Force refresh\n ),\n this.listService.getRecordMembership(\n this.config.entityId,\n this.config.recordIds\n ),\n this.listService.getListCategories()\n ]);\n\n this.Categories = categories;\n\n // Build view models\n this.AllLists = await this.listService.buildListViewModels(\n lists,\n this.config.recordIds,\n membership\n );\n\n // Store original membership state\n for (const vm of this.AllLists) {\n this.originalMembership.set(vm.list.ID, vm.isFullMember || vm.isPartialMember);\n }\n\n // Pre-select lists if configured\n if (this.config.preSelectedListIds) {\n for (const listId of this.config.preSelectedListIds) {\n const vm = this.AllLists.find(l => UUIDsEqual(l.list.ID, listId));\n if (vm) {\n vm.isSelectedForAdd = true;\n this.AddedToLists.add(listId);\n }\n }\n }\n\n this.applyFilters();\n } catch (error) {\n console.error('Error loading list data:', error);\n } finally {\n this.Loading = false;\n this.cdr.detectChanges();\n }\n }\n\n /**\n * Handle search input\n */\n OnSearchInput(event: Event): void {\n const value = (event.target as HTMLInputElement).value;\n this.searchSubject.next(value);\n }\n\n /** @deprecated Use {@link OnSearchInput}. */\n onSearchInput(event: Event): void {\n return this.OnSearchInput(event);\n }\n\n /**\n * Clear search\n */\n ClearSearch(): void {\n this.SearchText = '';\n this.searchSubject.next('');\n }\n\n /** @deprecated Use {@link ClearSearch}. */\n clearSearch(): void {\n return this.ClearSearch();\n }\n\n /**\n * Change active tab\n */\n SetActiveTab(tab: ListFilterTab): void {\n this.ActiveTab = tab;\n this.applyFilters();\n }\n\n /** @deprecated Use {@link SetActiveTab}. */\n setActiveTab(tab: ListFilterTab): void {\n return this.SetActiveTab(tab);\n }\n\n /**\n * Change sort option\n */\n SetSortOption(option: ListSortOption): void {\n this.SortOption = option;\n this.applyFilters();\n }\n\n /** @deprecated Use {@link SetSortOption}. */\n setSortOption(option: ListSortOption): void {\n return this.SetSortOption(option);\n }\n\n /**\n * Apply all filters and sorting\n */\n private applyFilters(): void {\n let result = [...this.AllLists];\n\n // Apply search filter\n if (this.SearchText.trim()) {\n const search = this.SearchText.toLowerCase();\n result = result.filter(vm =>\n vm.list.Name.toLowerCase().includes(search) ||\n (vm.list.Description?.toLowerCase().includes(search))\n );\n }\n\n // Apply tab filter\n switch (this.ActiveTab) {\n case 'my-lists':\n // Already filtered by user in loadData\n break;\n case 'recent':\n // Sort by last updated and take top 10\n result = result\n .sort((a, b) => b.lastUpdated.getTime() - a.lastUpdated.getTime())\n .slice(0, 10);\n break;\n // 'all' and 'shared' - no additional filtering for now\n }\n\n // Apply sorting\n switch (this.SortOption) {\n case 'name':\n result.sort((a, b) => a.list.Name.localeCompare(b.list.Name));\n break;\n case 'recent':\n result.sort((a, b) => b.lastUpdated.getTime() - a.lastUpdated.getTime());\n break;\n case 'item-count':\n result.sort((a, b) => b.itemCount - a.itemCount);\n break;\n }\n\n this.FilteredLists = result;\n this.cdr.detectChanges();\n }\n\n /**\n * Toggle list selection for adding\n */\n ToggleListForAdd(vm: ListItemViewModel): void {\n if (this.config?.mode === 'remove') return;\n\n const listId = vm.list.ID;\n\n if (vm.isSelectedForAdd || this.AddedToLists.has(listId)) {\n // Deselect\n vm.isSelectedForAdd = false;\n this.AddedToLists.delete(listId);\n } else {\n // Select for add\n vm.isSelectedForAdd = true;\n vm.isSelectedForRemove = false;\n this.AddedToLists.add(listId);\n this.RemovedFromLists.delete(listId);\n }\n\n this.cdr.detectChanges();\n }\n\n /** @deprecated Use {@link ToggleListForAdd}. */\n toggleListForAdd(vm: ListItemViewModel): void {\n return this.ToggleListForAdd(vm);\n }\n\n /**\n * Toggle list selection for removal\n */\n ToggleListForRemove(vm: ListItemViewModel): void {\n if (this.config?.mode === 'add') return;\n if (!this.config?.allowRemove && this.config?.mode !== 'manage') return;\n\n const listId = vm.list.ID;\n\n if (vm.isSelectedForRemove || this.RemovedFromLists.has(listId)) {\n // Deselect\n vm.isSelectedForRemove = false;\n this.RemovedFromLists.delete(listId);\n } else {\n // Select for remove\n vm.isSelectedForRemove = true;\n vm.isSelectedForAdd = false;\n this.RemovedFromLists.add(listId);\n this.AddedToLists.delete(listId);\n }\n\n this.cdr.detectChanges();\n }\n\n /** @deprecated Use {@link ToggleListForRemove}. */\n toggleListForRemove(vm: ListItemViewModel): void {\n return this.ToggleListForRemove(vm);\n }\n\n /**\n * Get membership indicator class\n */\n GetMembershipClass(vm: ListItemViewModel): string {\n if (vm.isFullMember) return 'full-member';\n if (vm.isPartialMember) return 'partial-member';\n return 'not-member';\n }\n\n /** @deprecated Use {@link GetMembershipClass}. */\n getMembershipClass(vm: ListItemViewModel): string {\n return this.GetMembershipClass(vm);\n }\n\n /**\n * Get membership indicator text\n */\n GetMembershipText(vm: ListItemViewModel): string {\n if (vm.isFullMember) {\n return `${vm.membershipCount}/${vm.totalSelectedRecords}`;\n }\n if (vm.isPartialMember) {\n return `${vm.membershipCount}/${vm.totalSelectedRecords}`;\n }\n return `0/${vm.totalSelectedRecords}`;\n }\n\n /** @deprecated Use {@link GetMembershipText}. */\n getMembershipText(vm: ListItemViewModel): string {\n return this.GetMembershipText(vm);\n }\n\n /**\n * Get membership icon\n */\n GetMembershipIcon(vm: ListItemViewModel): string {\n if (vm.isFullMember) return 'fa-solid fa-check-circle';\n if (vm.isPartialMember) return 'fa-solid fa-circle-half-stroke';\n return 'fa-regular fa-circle';\n }\n\n /** @deprecated Use {@link GetMembershipIcon}. */\n getMembershipIcon(vm: ListItemViewModel): string {\n return this.GetMembershipIcon(vm);\n }\n\n /**\n * Show create list form\n */\n ShowCreateListForm(): void {\n this.ShowCreateForm = true;\n this.NewListName = '';\n this.NewListDescription = '';\n this.NewListCategoryId = null;\n }\n\n /** @deprecated Use {@link ShowCreateListForm}. */\n showCreateListForm(): void {\n return this.ShowCreateListForm();\n }\n\n /**\n * Cancel create list form\n */\n CancelCreateList(): void {\n this.ShowCreateForm = false;\n this.NewListName = '';\n this.NewListDescription = '';\n this.NewListCategoryId = null;\n }\n\n /** @deprecated Use {@link CancelCreateList}. */\n cancelCreateList(): void {\n return this.CancelCreateList();\n }\n\n /**\n * Create a new list\n */\n async CreateList(): Promise<void> {\n if (!this.NewListName.trim() || !this.config) return;\n\n this.saving = true;\n\n try {\n const createConfig: CreateListConfig = {\n name: this.NewListName.trim(),\n description: this.NewListDescription.trim() || undefined,\n categoryId: this.NewListCategoryId || undefined,\n entityId: this.config.entityId\n };\n\n const newList = await this.listService.createList(createConfig);\n\n if (newList) {\n this.NewlyCreatedLists.push(newList);\n\n // Add to view models and select for add\n const vm: ListItemViewModel = {\n list: newList,\n itemCount: 0,\n membershipCount: 0,\n totalSelectedRecords: this.config.recordIds.length,\n isFullMember: false,\n isPartialMember: false,\n isNotMember: true,\n lastUpdated: new Date(),\n isSelectedForAdd: true,\n isSelectedForRemove: false\n };\n\n this.AllLists.unshift(vm);\n this.AddedToLists.add(newList.ID);\n\n this.ShowCreateForm = false;\n this.NewListName = '';\n this.NewListDescription = '';\n this.NewListCategoryId = null;\n\n this.applyFilters();\n }\n } catch (error) {\n console.error('Error creating list:', error);\n } finally {\n this.saving = false;\n this.cdr.detectChanges();\n }\n }\n\n /** @deprecated Use {@link CreateList}. */\n async createList(): Promise<void> {\n return this.CreateList();\n }\n\n /**\n * Apply changes and close dialog\n */\n async ApplyChanges(): Promise<void> {\n if (!this.config) return;\n\n this.saving = true;\n\n const result: ListManagementResult = {\n action: 'apply',\n added: [],\n removed: [],\n newListsCreated: this.NewlyCreatedLists,\n summary: { added: 0, removed: 0, skipped: 0, failed: 0 }\n };\n\n try {\n // Process additions\n if (this.AddedToLists.size > 0) {\n const addResult = await this.listService.addRecordsToLists(\n [...this.AddedToLists],\n this.config.recordIds,\n true // Skip duplicates\n );\n result.summary!.added += addResult.success;\n result.summary!.skipped += addResult.skipped;\n result.summary!.failed += addResult.failed;\n\n for (const listId of this.AddedToLists) {\n const vm = this.AllLists.find(l => UUIDsEqual(l.list.ID, listId));\n if (vm) {\n result.added.push({\n listId,\n listName: vm.list.Name,\n recordIds: this.config.recordIds\n });\n }\n }\n }\n\n // Process removals\n if (this.RemovedFromLists.size > 0) {\n const removeResult = await this.listService.removeRecordsFromLists(\n [...this.RemovedFromLists],\n this.config.recordIds\n );\n result.summary!.removed += removeResult.success;\n result.summary!.failed += removeResult.failed;\n\n for (const listId of this.RemovedFromLists) {\n const vm = this.AllLists.find(l => UUIDsEqual(l.list.ID, listId));\n if (vm) {\n result.removed.push({\n listId,\n listName: vm.list.Name,\n recordIds: this.config.recordIds\n });\n }\n }\n }\n\n this.Complete.emit(result);\n } catch (error) {\n console.error('Error applying changes:', error);\n } finally {\n this.saving = false;\n this._visible = false;\n this.cdr.detectChanges();\n }\n }\n\n /** @deprecated Use {@link ApplyChanges}. */\n async applyChanges(): Promise<void> {\n return this.ApplyChanges();\n }\n\n /**\n * Cancel and close dialog\n */\n onCancel(): void {\n const result: ListManagementResult = {\n action: 'cancel',\n added: [],\n removed: [],\n newListsCreated: []\n };\n\n this._visible = false;\n this.cancel.emit();\n }\n\n /**\n * Format date for display\n */\n formatDate(date: Date): string {\n const now = new Date();\n const diff = now.getTime() - date.getTime();\n const minutes = Math.floor(diff / 60000);\n const hours = Math.floor(minutes / 60);\n const days = Math.floor(hours / 24);\n\n if (minutes < 1) return 'just now';\n if (minutes < 60) return `${minutes}m ago`;\n if (hours < 24) return `${hours}h ago`;\n if (days < 7) return `${days}d ago`;\n\n return date.toLocaleDateString();\n }\n\n /**\n * Check if we should show the add button for a list\n */\n ShowAddButton(vm: ListItemViewModel): boolean {\n if (this.config?.mode === 'remove') return false;\n return !vm.isFullMember || !this.originalMembership.get(vm.list.ID);\n }\n\n /** @deprecated Use {@link ShowAddButton}. */\n showAddButton(vm: ListItemViewModel): boolean {\n return this.ShowAddButton(vm);\n }\n\n /**\n * Check if we should show the remove button for a list\n */\n ShowRemoveButton(vm: ListItemViewModel): boolean {\n if (this.config?.mode === 'add') return false;\n if (!this.config?.allowRemove && this.config?.mode !== 'manage') return false;\n return vm.isFullMember || vm.isPartialMember || this.originalMembership.get(vm.list.ID) === true;\n }\n\n /** @deprecated Use {@link ShowRemoveButton}. */\n showRemoveButton(vm: ListItemViewModel): boolean {\n return this.ShowRemoveButton(vm);\n }\n}\n","@if (visible) {\n <div class=\"dialog-overlay\" (click)=\"onCancel()\">\n <div class=\"dialog-container\" (click)=\"$event.stopPropagation()\">\n <!-- Header -->\n <div class=\"dialog-header\">\n <div class=\"header-content\">\n <div class=\"header-icon\">\n <span class=\"fa-solid fa-rectangle-list\"></span>\n </div>\n <div class=\"header-text\">\n <h2 class=\"dialog-title\">{{ dialogTitle }}</h2>\n <p class=\"dialog-subtitle\">{{ dialogSubtitle }}</p>\n </div>\n </div>\n <button class=\"close-button\" (click)=\"onCancel()\" title=\"Close\">\n <span class=\"fa-solid fa-times\"></span>\n </button>\n </div>\n\n <!-- Search and Filters -->\n <div class=\"search-section\">\n <div class=\"search-bar\">\n <span class=\"fa-solid fa-search search-icon\"></span>\n <input\n type=\"text\"\n class=\"search-input\"\n placeholder=\"Search lists...\"\n [value]=\"searchText\"\n (input)=\"onSearchInput($event)\"\n />\n @if (searchText) {\n <button class=\"clear-search\" (click)=\"clearSearch()\">\n <span class=\"fa-solid fa-times-circle\"></span>\n </button>\n }\n </div>\n\n @if (config.allowCreate !== false) {\n <button class=\"create-button\" (click)=\"showCreateListForm()\" [disabled]=\"showCreateForm\">\n <span class=\"fa-solid fa-plus\"></span>\n <span class=\"button-text\">New</span>\n </button>\n }\n </div>\n\n <!-- Filter Tabs -->\n <div class=\"filter-tabs\">\n <div class=\"tabs-left\">\n <button\n class=\"tab-button\"\n [class.active]=\"activeTab === 'all'\"\n (click)=\"setActiveTab('all')\">\n All\n </button>\n <button\n class=\"tab-button\"\n [class.active]=\"activeTab === 'my-lists'\"\n (click)=\"setActiveTab('my-lists')\">\n My Lists\n </button>\n <button\n class=\"tab-button\"\n [class.active]=\"activeTab === 'recent'\"\n (click)=\"setActiveTab('recent')\">\n Recent\n </button>\n </div>\n <div class=\"tabs-right\">\n <select class=\"sort-select\" [value]=\"sortOption\" (change)=\"setSortOption($any($event.target).value)\">\n <option value=\"name\">Sort: Name</option>\n <option value=\"recent\">Sort: Recent</option>\n <option value=\"item-count\">Sort: Items</option>\n </select>\n </div>\n </div>\n\n <!-- Create List Form -->\n @if (showCreateForm) {\n <div class=\"create-form\">\n <div class=\"create-form-header\">\n <span class=\"fa-solid fa-plus-circle\"></span>\n <span>Create New List</span>\n </div>\n <div class=\"create-form-body\">\n <div class=\"form-group\">\n <input\n type=\"text\"\n class=\"form-input\"\n placeholder=\"List name *\"\n [(ngModel)]=\"newListName\"\n [disabled]=\"saving\"\n (keyup.enter)=\"createList()\"\n />\n </div>\n <div class=\"form-group\">\n <textarea\n class=\"form-input form-textarea\"\n placeholder=\"Description (optional)\"\n [(ngModel)]=\"newListDescription\"\n [disabled]=\"saving\"\n rows=\"2\">\n </textarea>\n </div>\n @if (categories.length > 0) {\n <div class=\"form-group\">\n <select class=\"form-input\" [(ngModel)]=\"newListCategoryId\" [disabled]=\"saving\">\n <option [ngValue]=\"null\">No category</option>\n @for (category of categories; track category.ID) {\n <option [ngValue]=\"category.ID\">{{ category.Name }}</option>\n }\n </select>\n </div>\n }\n <div class=\"create-form-actions\">\n <button\n class=\"btn btn-primary\"\n (click)=\"createList()\"\n [disabled]=\"!newListName.trim() || saving\">\n @if (saving) {\n <span class=\"fa-solid fa-spinner fa-spin\"></span>\n }\n Create List\n </button>\n <button class=\"btn btn-secondary\" (click)=\"cancelCreateList()\" [disabled]=\"saving\">\n Cancel\n </button>\n </div>\n </div>\n </div>\n }\n\n <!-- List Content -->\n <div class=\"list-content\">\n @if (loading) {\n <div class=\"loading-state\">\n <mj-loading text=\"Loading lists...\" size=\"medium\"></mj-loading>\n </div>\n } @else if (filteredLists.length === 0) {\n @if (searchText) {\n <mj-empty-state\n Variant=\"no-results\"\n Icon=\"fa-solid fa-magnifying-glass\"\n Title=\"No lists found\"\n Message=\"Try a different search term\" />\n } @else {\n <mj-empty-state\n Icon=\"fa-solid fa-rectangle-list\"\n Title=\"No lists yet\"\n Message=\"Create your first list to get started\"\n [ActionText]=\"config.allowCreate !== false ? 'Create List' : ''\"\n ActionIcon=\"fa-solid fa-plus\"\n (Action)=\"showCreateListForm()\" />\n }\n } @else {\n <div class=\"list-items\">\n @for (vm of filteredLists; track vm.list.ID) {\n <div\n class=\"list-item\"\n [class.selected-add]=\"vm.isSelectedForAdd || addedToLists.has(vm.list.ID)\"\n [class.selected-remove]=\"vm.isSelectedForRemove || removedFromLists.has(vm.list.ID)\"\n [class.is-member]=\"vm.isFullMember || vm.isPartialMember\">\n\n <!-- Checkbox / Selection Area -->\n <div class=\"list-item-select\">\n @if (showAddButton(vm)) {\n <button\n class=\"select-btn add-btn\"\n [class.selected]=\"vm.isSelectedForAdd || addedToLists.has(vm.list.ID)\"\n (click)=\"toggleListForAdd(vm)\"\n [title]=\"(vm.isSelectedForAdd || addedToLists.has(vm.list.ID)) ? 'Remove from selection' : 'Add to this list'\">\n @if (vm.isSelectedForAdd || addedToLists.has(vm.list.ID)) {\n <span class=\"fa-solid fa-check\"></span>\n } @else {\n <span class=\"fa-solid fa-plus\"></span>\n }\n </button>\n }\n @if (showRemoveButton(vm) && (vm.isFullMember || vm.isPartialMember)) {\n <button\n class=\"select-btn remove-btn\"\n [class.selected]=\"vm.isSelectedForRemove || removedFromLists.has(vm.list.ID)\"\n (click)=\"toggleListForRemove(vm)\"\n [title]=\"(vm.isSelectedForRemove || removedFromLists.has(vm.list.ID)) ? 'Cancel removal' : 'Remove from this list'\">\n @if (vm.isSelectedForRemove || removedFromLists.has(vm.list.ID)) {\n <span class=\"fa-solid fa-undo\"></span>\n } @else {\n <span class=\"fa-solid fa-minus\"></span>\n }\n </button>\n }\n </div>\n\n <!-- List Info -->\n <div class=\"list-item-content\">\n <div class=\"list-item-header\">\n <span class=\"fa-solid fa-folder list-icon\"></span>\n <span class=\"list-name\">{{ vm.list.Name }}</span>\n @if (newlyCreatedLists.includes(vm.list)) {\n <span class=\"badge badge-new\">New</span>\n }\n </div>\n <div class=\"list-item-meta\">\n @if (vm.list.Description) {\n <span class=\"list-description\">{{ vm.list.Description }}</span>\n <span class=\"meta-separator\">•</span>\n }\n <span class=\"list-count\">{{ vm.itemCount }} item{{ vm.itemCount !== 1 ? 's' : '' }}</span>\n <span class=\"meta-separator\">•</span>\n <span class=\"list-updated\">{{ formatDate(vm.lastUpdated) }}</span>\n </div>\n </div>\n\n <!-- Membership Indicator -->\n @if (config.showMembership !== false) {\n <div class=\"membership-indicator\" [class]=\"getMembershipClass(vm)\">\n <span [class]=\"getMembershipIcon(vm)\"></span>\n <span class=\"membership-text\">{{ getMembershipText(vm) }}</span>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Footer -->\n <div class=\"dialog-footer\">\n <div class=\"footer-summary\">\n @if (hasChanges) {\n @if (addCount > 0) {\n <span class=\"summary-item add\">\n <span class=\"fa-solid fa-plus-circle\"></span>\n {{ addCount }} list{{ addCount !== 1 ? 's' : '' }}\n </span>\n }\n @if (removeCount > 0) {\n <span class=\"summary-item remove\">\n <span class=\"fa-solid fa-minus-circle\"></span>\n {{ removeCount }} list{{ removeCount !== 1 ? 's' : '' }}\n </span>\n }\n } @else {\n <span class=\"summary-empty\">No changes</span>\n }\n </div>\n <div class=\"footer-actions\">\n <button class=\"btn btn-secondary\" (click)=\"onCancel()\" [disabled]=\"saving\">\n Cancel\n </button>\n <button\n class=\"btn btn-primary\"\n (click)=\"applyChanges()\"\n [disabled]=\"!hasChanges || saving\">\n @if (saving) {\n <span class=\"fa-solid fa-spinner fa-spin\"></span>\n }\n Apply Changes\n </button>\n </div>\n </div>\n </div>\n </div>\n}\n"]}
|
|
@@ -28,12 +28,24 @@ export declare class ListShareDialogComponent extends BaseAngularComponent imple
|
|
|
28
28
|
/**
|
|
29
29
|
* Controls dialog visibility
|
|
30
30
|
*/
|
|
31
|
+
get Visible(): boolean;
|
|
32
|
+
set Visible(value: boolean);
|
|
33
|
+
/** @deprecated Use {@link Visible}. */
|
|
31
34
|
get visible(): boolean;
|
|
35
|
+
/** @deprecated Use {@link Visible}. */
|
|
32
36
|
set visible(value: boolean);
|
|
33
37
|
private _visible;
|
|
34
38
|
/**
|
|
35
39
|
* Emitted when dialog is closed with results
|
|
36
40
|
*/
|
|
41
|
+
Complete: EventEmitter<ListShareDialogResult>;
|
|
42
|
+
/**
|
|
43
|
+
* @deprecated Use {@link Complete}.
|
|
44
|
+
*
|
|
45
|
+
* The same emitter under the old binding name, so a template still binding
|
|
46
|
+
* (complete) keeps working. Must stay AFTER Complete: class fields
|
|
47
|
+
* initialise in order, and the other way round this captures undefined.
|
|
48
|
+
*/
|
|
37
49
|
complete: EventEmitter<ListShareDialogResult>;
|
|
38
50
|
/**
|
|
39
51
|
* Emitted when dialog is cancelled
|
|
@@ -43,11 +55,27 @@ export declare class ListShareDialogComponent extends BaseAngularComponent imple
|
|
|
43
55
|
* Emitted when the user clicks "Manage Invitations" in the footer.
|
|
44
56
|
* Phase 2: opens the invitations management UI for this list.
|
|
45
57
|
*/
|
|
58
|
+
ManageInvitations: EventEmitter<void>;
|
|
59
|
+
/**
|
|
60
|
+
* @deprecated Use {@link ManageInvitations}.
|
|
61
|
+
*
|
|
62
|
+
* The same emitter under the old binding name, so a template still binding
|
|
63
|
+
* (manageInvitations) keeps working. Must stay AFTER ManageInvitations: class fields
|
|
64
|
+
* initialise in order, and the other way round this captures undefined.
|
|
65
|
+
*/
|
|
46
66
|
manageInvitations: EventEmitter<void>;
|
|
47
67
|
/**
|
|
48
68
|
* Emitted when the user clicks "View audit log" in the footer.
|
|
49
69
|
* Phase 2: opens the per-list audit log view.
|
|
50
70
|
*/
|
|
71
|
+
ViewAuditLog: EventEmitter<void>;
|
|
72
|
+
/**
|
|
73
|
+
* @deprecated Use {@link ViewAuditLog}.
|
|
74
|
+
*
|
|
75
|
+
* The same emitter under the old binding name, so a template still binding
|
|
76
|
+
* (viewAuditLog) keeps working. Must stay AFTER ViewAuditLog: class fields
|
|
77
|
+
* initialise in order, and the other way round this captures undefined.
|
|
78
|
+
*/
|
|
51
79
|
viewAuditLog: EventEmitter<void>;
|
|
52
80
|
/**
|
|
53
81
|
* When true (the default), newly-added shares fan out as notifications
|
|
@@ -55,24 +83,84 @@ export declare class ListShareDialogComponent extends BaseAngularComponent imple
|
|
|
55
83
|
* The state is captured on the dialog so consumers can read it back
|
|
56
84
|
* via `ListShareDialogResult.notifyByEmail`.
|
|
57
85
|
*/
|
|
58
|
-
|
|
59
|
-
|
|
86
|
+
NotifyByEmail: boolean;
|
|
87
|
+
/** @deprecated Use {@link NotifyByEmail}. */
|
|
88
|
+
get notifyByEmail(): boolean;
|
|
89
|
+
/** @deprecated Use {@link NotifyByEmail}. */
|
|
90
|
+
set notifyByEmail(value: boolean);
|
|
91
|
+
Loading: boolean;
|
|
92
|
+
/** @deprecated Use {@link Loading}. */
|
|
93
|
+
get loading(): boolean;
|
|
94
|
+
/** @deprecated Use {@link Loading}. */
|
|
95
|
+
set loading(value: boolean);
|
|
60
96
|
saving: boolean;
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
97
|
+
SearchText: string;
|
|
98
|
+
/** @deprecated Use {@link SearchText}. */
|
|
99
|
+
get searchText(): string;
|
|
100
|
+
/** @deprecated Use {@link SearchText}. */
|
|
101
|
+
set searchText(value: string);
|
|
102
|
+
SearchType: 'User' | 'Role';
|
|
103
|
+
/** @deprecated Use {@link SearchType}. */
|
|
104
|
+
get searchType(): 'User' | 'Role';
|
|
105
|
+
/** @deprecated Use {@link SearchType}. */
|
|
106
|
+
set searchType(value: 'User' | 'Role');
|
|
107
|
+
ShowSearchResults: boolean;
|
|
108
|
+
/** @deprecated Use {@link ShowSearchResults}. */
|
|
109
|
+
get showSearchResults(): boolean;
|
|
110
|
+
/** @deprecated Use {@link ShowSearchResults}. */
|
|
111
|
+
set showSearchResults(value: boolean);
|
|
112
|
+
CurrentShares: ListShareInfo[];
|
|
113
|
+
/** @deprecated Use {@link CurrentShares}. */
|
|
114
|
+
get currentShares(): ListShareInfo[];
|
|
115
|
+
/** @deprecated Use {@link CurrentShares}. */
|
|
116
|
+
set currentShares(value: ListShareInfo[]);
|
|
117
|
+
SearchResults: ShareRecipient[];
|
|
118
|
+
/** @deprecated Use {@link SearchResults}. */
|
|
119
|
+
get searchResults(): ShareRecipient[];
|
|
120
|
+
/** @deprecated Use {@link SearchResults}. */
|
|
121
|
+
set searchResults(value: ShareRecipient[]);
|
|
122
|
+
SelectedRecipient: ShareRecipient | null;
|
|
123
|
+
/** @deprecated Use {@link SelectedRecipient}. */
|
|
124
|
+
get selectedRecipient(): ShareRecipient | null;
|
|
125
|
+
/** @deprecated Use {@link SelectedRecipient}. */
|
|
126
|
+
set selectedRecipient(value: ShareRecipient | null);
|
|
127
|
+
SelectedPermission: ListPermissionLevel;
|
|
128
|
+
/** @deprecated Use {@link SelectedPermission}. */
|
|
129
|
+
get selectedPermission(): ListPermissionLevel;
|
|
130
|
+
/** @deprecated Use {@link SelectedPermission}. */
|
|
131
|
+
set selectedPermission(value: ListPermissionLevel);
|
|
132
|
+
SharesAdded: ListShareInfo[];
|
|
133
|
+
/** @deprecated Use {@link SharesAdded}. */
|
|
134
|
+
get sharesAdded(): ListShareInfo[];
|
|
135
|
+
/** @deprecated Use {@link SharesAdded}. */
|
|
136
|
+
set sharesAdded(value: ListShareInfo[]);
|
|
137
|
+
SharesUpdated: ListShareInfo[];
|
|
138
|
+
/** @deprecated Use {@link SharesUpdated}. */
|
|
139
|
+
get sharesUpdated(): ListShareInfo[];
|
|
140
|
+
/** @deprecated Use {@link SharesUpdated}. */
|
|
141
|
+
set sharesUpdated(value: ListShareInfo[]);
|
|
142
|
+
SharesRemoved: string[];
|
|
143
|
+
/** @deprecated Use {@link SharesRemoved}. */
|
|
144
|
+
get sharesRemoved(): string[];
|
|
145
|
+
/** @deprecated Use {@link SharesRemoved}. */
|
|
146
|
+
set sharesRemoved(value: string[]);
|
|
147
|
+
PermissionOptions: {
|
|
72
148
|
value: ListPermissionLevel;
|
|
73
149
|
label: string;
|
|
74
150
|
description: string;
|
|
75
151
|
}[];
|
|
152
|
+
/** @deprecated Use {@link PermissionOptions}. */
|
|
153
|
+
get permissionOptions(): {
|
|
154
|
+
value: ListPermissionLevel;
|
|
155
|
+
label: string;
|
|
156
|
+
description: string;
|
|
157
|
+
}[];
|
|
158
|
+
/** @deprecated Use {@link PermissionOptions}. */
|
|
159
|
+
set permissionOptions(value: {
|
|
160
|
+
value: ListPermissionLevel;
|
|
161
|
+
label: string;
|
|
162
|
+
description: string;
|
|
163
|
+
}[]);
|
|
76
164
|
private destroy$;
|
|
77
165
|
private searchSubject;
|
|
78
166
|
constructor(sharingService: ListSharingService, cdr: ChangeDetectorRef);
|
|
@@ -81,10 +169,14 @@ export declare class ListShareDialogComponent extends BaseAngularComponent imple
|
|
|
81
169
|
/**
|
|
82
170
|
* Get dialog title
|
|
83
171
|
*/
|
|
172
|
+
get DialogTitle(): string;
|
|
173
|
+
/** @deprecated Use {@link DialogTitle}. */
|
|
84
174
|
get dialogTitle(): string;
|
|
85
175
|
/**
|
|
86
176
|
* Check if there are pending changes
|
|
87
177
|
*/
|
|
178
|
+
get HasChanges(): boolean;
|
|
179
|
+
/** @deprecated Use {@link HasChanges}. */
|
|
88
180
|
get hasChanges(): boolean;
|
|
89
181
|
/**
|
|
90
182
|
* Setup search with debounce
|
|
@@ -105,14 +197,20 @@ export declare class ListShareDialogComponent extends BaseAngularComponent imple
|
|
|
105
197
|
/**
|
|
106
198
|
* Handle search input
|
|
107
199
|
*/
|
|
200
|
+
OnSearchInput(event: Event): void;
|
|
201
|
+
/** @deprecated Use {@link OnSearchInput}. */
|
|
108
202
|
onSearchInput(event: Event): void;
|
|
109
203
|
/**
|
|
110
204
|
* Clear search
|
|
111
205
|
*/
|
|
206
|
+
ClearSearch(): void;
|
|
207
|
+
/** @deprecated Use {@link ClearSearch}. */
|
|
112
208
|
clearSearch(): void;
|
|
113
209
|
/**
|
|
114
210
|
* Switch search type
|
|
115
211
|
*/
|
|
212
|
+
SetSearchType(type: 'User' | 'Role'): void;
|
|
213
|
+
/** @deprecated Use {@link SetSearchType}. */
|
|
116
214
|
setSearchType(type: 'User' | 'Role'): void;
|
|
117
215
|
/**
|
|
118
216
|
* Perform search
|
|
@@ -121,30 +219,44 @@ export declare class ListShareDialogComponent extends BaseAngularComponent imple
|
|
|
121
219
|
/**
|
|
122
220
|
* Select a recipient from search results
|
|
123
221
|
*/
|
|
222
|
+
SelectRecipient(recipient: ShareRecipient): void;
|
|
223
|
+
/** @deprecated Use {@link SelectRecipient}. */
|
|
124
224
|
selectRecipient(recipient: ShareRecipient): void;
|
|
125
225
|
/**
|
|
126
226
|
* Add the selected recipient as a share
|
|
127
227
|
*/
|
|
228
|
+
AddShare(): Promise<void>;
|
|
229
|
+
/** @deprecated Use {@link AddShare}. */
|
|
128
230
|
addShare(): Promise<void>;
|
|
129
231
|
/**
|
|
130
232
|
* Update permission level for an existing share
|
|
131
233
|
*/
|
|
234
|
+
UpdateSharePermission(share: ListShareInfo, newLevel: ListPermissionLevel): Promise<void>;
|
|
235
|
+
/** @deprecated Use {@link UpdateSharePermission}. */
|
|
132
236
|
updateSharePermission(share: ListShareInfo, newLevel: ListPermissionLevel): Promise<void>;
|
|
133
237
|
/**
|
|
134
238
|
* Remove a share
|
|
135
239
|
*/
|
|
240
|
+
RemoveShare(share: ListShareInfo): Promise<void>;
|
|
241
|
+
/** @deprecated Use {@link RemoveShare}. */
|
|
136
242
|
removeShare(share: ListShareInfo): Promise<void>;
|
|
137
243
|
/**
|
|
138
244
|
* Get icon for share type
|
|
139
245
|
*/
|
|
246
|
+
GetShareTypeIcon(type: 'User' | 'Role'): string;
|
|
247
|
+
/** @deprecated Use {@link GetShareTypeIcon}. */
|
|
140
248
|
getShareTypeIcon(type: 'User' | 'Role'): string;
|
|
141
249
|
/**
|
|
142
250
|
* Get permission label
|
|
143
251
|
*/
|
|
252
|
+
GetPermissionLabel(level: ListPermissionLevel): string;
|
|
253
|
+
/** @deprecated Use {@link GetPermissionLabel}. */
|
|
144
254
|
getPermissionLabel(level: ListPermissionLevel): string;
|
|
145
255
|
/**
|
|
146
256
|
* Close dialog with results
|
|
147
257
|
*/
|
|
258
|
+
OnDone(): void;
|
|
259
|
+
/** @deprecated Use {@link OnDone}. */
|
|
148
260
|
onDone(): void;
|
|
149
261
|
/**
|
|
150
262
|
* Cancel and close dialog
|
|
@@ -153,8 +265,10 @@ export declare class ListShareDialogComponent extends BaseAngularComponent imple
|
|
|
153
265
|
/**
|
|
154
266
|
* Check if current user can modify shares
|
|
155
267
|
*/
|
|
268
|
+
get CanModifyShares(): boolean;
|
|
269
|
+
/** @deprecated Use {@link CanModifyShares}. */
|
|
156
270
|
get canModifyShares(): boolean;
|
|
157
271
|
static ɵfac: i0.ɵɵFactoryDeclaration<ListShareDialogComponent, never>;
|
|
158
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ListShareDialogComponent, "mj-list-share-dialog", never, { "config": { "alias": "config"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; }, { "complete": "complete"; "cancel": "cancel"; "manageInvitations": "manageInvitations"; "viewAuditLog": "viewAuditLog"; }, never, never, false, never>;
|
|
272
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ListShareDialogComponent, "mj-list-share-dialog", never, { "config": { "alias": "config"; "required": false; }; "Visible": { "alias": "Visible"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; }, { "Complete": "Complete"; "complete": "complete"; "cancel": "cancel"; "ManageInvitations": "ManageInvitations"; "manageInvitations": "manageInvitations"; "ViewAuditLog": "ViewAuditLog"; "viewAuditLog": "viewAuditLog"; }, never, never, false, never>;
|
|
159
273
|
}
|
|
160
274
|
//# sourceMappingURL=list-share-dialog.component.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-share-dialog.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/list-share-dialog/list-share-dialog.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,YAAY,EACZ,MAAM,EACN,SAAS,EACT,iBAAiB,EAClB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAGrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,aAAa,EACb,mBAAmB,EACnB,cAAc,EACf,MAAM,kCAAkC,CAAC;;AAE1C;;;;;;;;;GASG;AACH,qBAMa,wBAAyB,SAAQ,oBAAqB,YAAW,MAAM,EAAE,SAAS;
|
|
1
|
+
{"version":3,"file":"list-share-dialog.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/list-share-dialog/list-share-dialog.component.ts"],"names":[],"mappings":"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"}
|