@memberjunction/ng-list-management 4.0.0 → 4.2.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/README.md +122 -0
- package/package.json +7 -7
package/README.md
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# @memberjunction/ng-list-management
|
|
2
|
+
|
|
3
|
+
Angular components for managing entity list membership with a responsive dialog interface. Allows users to add and remove records from multiple lists with visual membership indicators.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @memberjunction/ng-list-management
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Overview
|
|
12
|
+
|
|
13
|
+
The List Management package provides a dialog-based UI for managing which lists a set of entity records belong to. It supports search and filtering, visual membership indicators (full/partial/none), inline list creation, batch operations with progress feedback, and list sharing via a separate sharing dialog.
|
|
14
|
+
|
|
15
|
+
```mermaid
|
|
16
|
+
flowchart TD
|
|
17
|
+
subgraph Dialog["List Management Dialog"]
|
|
18
|
+
A["Search & Filter"] --> B["List Items with Membership Indicators"]
|
|
19
|
+
B --> C["Toggle Membership"]
|
|
20
|
+
B --> D["Inline List Creation"]
|
|
21
|
+
end
|
|
22
|
+
subgraph Share["List Sharing Dialog"]
|
|
23
|
+
E["Share with Users/Roles"]
|
|
24
|
+
end
|
|
25
|
+
subgraph Services["Services"]
|
|
26
|
+
F["ListManagementService"]
|
|
27
|
+
G["ListSharingService"]
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
C --> F
|
|
31
|
+
D --> F
|
|
32
|
+
E --> G
|
|
33
|
+
|
|
34
|
+
style Dialog fill:#2d6a9f,stroke:#1a4971,color:#fff
|
|
35
|
+
style Share fill:#7c5295,stroke:#563a6b,color:#fff
|
|
36
|
+
style Services fill:#2d8659,stroke:#1a5c3a,color:#fff
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Usage
|
|
40
|
+
|
|
41
|
+
### Module Import
|
|
42
|
+
|
|
43
|
+
```typescript
|
|
44
|
+
import { ListManagementModule } from '@memberjunction/ng-list-management';
|
|
45
|
+
|
|
46
|
+
@NgModule({
|
|
47
|
+
imports: [ListManagementModule]
|
|
48
|
+
})
|
|
49
|
+
export class YourModule {}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### List Management Dialog
|
|
53
|
+
|
|
54
|
+
```html
|
|
55
|
+
<mj-list-management-dialog
|
|
56
|
+
[config]="listConfig"
|
|
57
|
+
[visible]="showListDialog"
|
|
58
|
+
(complete)="onListManagementComplete($event)"
|
|
59
|
+
(cancel)="onListManagementCancel()">
|
|
60
|
+
</mj-list-management-dialog>
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### List Sharing Dialog
|
|
64
|
+
|
|
65
|
+
```html
|
|
66
|
+
<mj-list-share-dialog
|
|
67
|
+
[listId]="selectedListId"
|
|
68
|
+
[visible]="showShareDialog"
|
|
69
|
+
(closed)="onShareDialogClosed()">
|
|
70
|
+
</mj-list-share-dialog>
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Configuration Example
|
|
74
|
+
|
|
75
|
+
```typescript
|
|
76
|
+
import { ListManagementDialogConfig } from '@memberjunction/ng-list-management';
|
|
77
|
+
|
|
78
|
+
const listConfig: ListManagementDialogConfig = {
|
|
79
|
+
EntityName: 'Products',
|
|
80
|
+
RecordIDs: ['product-1', 'product-2', 'product-3'],
|
|
81
|
+
Title: 'Manage Product Lists',
|
|
82
|
+
AllowCreateList: true,
|
|
83
|
+
AllowShareList: true
|
|
84
|
+
};
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Components
|
|
88
|
+
|
|
89
|
+
| Component | Selector | Purpose |
|
|
90
|
+
|-----------|----------|---------|
|
|
91
|
+
| `ListManagementDialogComponent` | `mj-list-management-dialog` | Dialog for adding/removing records to/from lists |
|
|
92
|
+
| `ListShareDialogComponent` | `mj-list-share-dialog` | Dialog for sharing lists with users and roles |
|
|
93
|
+
|
|
94
|
+
## Services
|
|
95
|
+
|
|
96
|
+
| Service | Purpose |
|
|
97
|
+
|---------|---------|
|
|
98
|
+
| `ListManagementService` | Business logic for list operations (add, remove, create, load) |
|
|
99
|
+
| `ListSharingService` | Business logic for sharing lists with users and roles |
|
|
100
|
+
|
|
101
|
+
## Exported Types
|
|
102
|
+
|
|
103
|
+
- `ListManagementDialogConfig` -- Configuration for the list management dialog
|
|
104
|
+
- `ListManagementResult` -- Result returned when dialog completes
|
|
105
|
+
- `ListOperationDetail` -- Detail of a single add/remove operation
|
|
106
|
+
- `ListItemViewModel` -- View model for a list item with membership state
|
|
107
|
+
- `ListFilterTab` -- Filter tab type (`'all' | 'member' | 'not-member'`)
|
|
108
|
+
- `ListSortOption` -- Sort option type (`'name' | 'date' | 'count'`)
|
|
109
|
+
- `CreateListConfig` -- Configuration for inline list creation
|
|
110
|
+
- `BatchOperationResult` -- Result of batch add/remove operations
|
|
111
|
+
- `RecordMembershipInfo` -- Membership info for a record across lists
|
|
112
|
+
- `ListShareConfig` -- Configuration for list sharing
|
|
113
|
+
- `ListShareResult` -- Result of sharing operations
|
|
114
|
+
|
|
115
|
+
## Dependencies
|
|
116
|
+
|
|
117
|
+
- [@memberjunction/core](../../MJCore/README.md) -- Metadata, RunView
|
|
118
|
+
- [@memberjunction/core-entities](../../MJCoreEntities/README.md) -- ListEntity, ListCategoryEntity
|
|
119
|
+
- [@memberjunction/ng-shared-generic](../shared/README.md) -- Loading component
|
|
120
|
+
- `@progress/kendo-angular-dialog` -- Dialog rendering
|
|
121
|
+
- `@progress/kendo-angular-buttons` -- Button components
|
|
122
|
+
- `@progress/kendo-angular-inputs` -- Input components
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memberjunction/ng-list-management",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.2.0",
|
|
4
4
|
"description": "MemberJunction: Angular Components for managing entity list membership with beautiful, responsive UI",
|
|
5
5
|
"main": "./dist/public-api.js",
|
|
6
6
|
"typings": "./dist/public-api.d.ts",
|
|
@@ -36,12 +36,12 @@
|
|
|
36
36
|
"rxjs": "^7.8.2"
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@memberjunction/core": "4.
|
|
40
|
-
"@memberjunction/core-entities": "4.
|
|
41
|
-
"@memberjunction/global": "4.
|
|
42
|
-
"@memberjunction/ng-container-directives": "4.
|
|
43
|
-
"@memberjunction/ng-shared": "4.
|
|
44
|
-
"@memberjunction/ng-shared-generic": "4.
|
|
39
|
+
"@memberjunction/core": "4.2.0",
|
|
40
|
+
"@memberjunction/core-entities": "4.2.0",
|
|
41
|
+
"@memberjunction/global": "4.2.0",
|
|
42
|
+
"@memberjunction/ng-container-directives": "4.2.0",
|
|
43
|
+
"@memberjunction/ng-shared": "4.2.0",
|
|
44
|
+
"@memberjunction/ng-shared-generic": "4.2.0",
|
|
45
45
|
"tslib": "^2.8.1"
|
|
46
46
|
},
|
|
47
47
|
"sideEffects": false,
|