# @memberjunction/ng-entity-permissions Angular components for displaying and editing entity-level CRUD permissions in MemberJunction. Provides a grid-based interface for managing Read, Create, Update, and Delete permissions per role or per entity. ## Overview This package provides two main components for permission management: `EntityPermissionsGridComponent` displays a grid of permission checkboxes (filterable by entity or role), and `EntitySelectorWithGridComponent` combines an entity dropdown with the permissions grid for a complete permission management interface. ```mermaid graph TD ESWG["EntitySelectorWithGridComponent"] --> DD["Entity Dropdown\n(Kendo DropDown)"] ESWG --> EPG["EntityPermissionsGridComponent"] EPG --> KG["Kendo Grid"] EPG --> EP["EntityPermissionEntity[]"] style ESWG fill:#7c5295,stroke:#563a6b,color:#fff style DD fill:#2d8659,stroke:#1a5c3a,color:#fff style EPG fill:#2d6a9f,stroke:#1a4971,color:#fff style KG fill:#2d8659,stroke:#1a5c3a,color:#fff style EP fill:#b8762f,stroke:#8a5722,color:#fff ``` ## Features - **Dual mode**: View permissions by Entity (all roles for an entity) or by Role (all entities for a role) - **Interactive grid**: Toggle CRUD permissions with checkboxes - **Permission change events**: Emits `EntityPermissionChangedEvent` with cancel support - **Entity selector**: Combined dropdown + grid for complete permission management - **Auto-refresh**: Automatically reloads when entity or role changes ## Installation ```bash npm install @memberjunction/ng-entity-permissions ``` ## Key Dependencies | Dependency | Purpose | |---|---| | `@memberjunction/core` | Metadata, RunView | | `@memberjunction/core-entities` | EntityPermissionEntity | | `@progress/kendo-angular-grid` | Permissions grid | | `@progress/kendo-angular-dropdowns` | Entity/role selector | ## Usage ### Entity Mode (All Roles for an Entity) ```html ``` ### Role Mode (All Entities for a Role) ```html ``` ### Combined Selector + Grid ```html ``` ### Permission Change Event ```typescript onPermissionChanged(event: EntityPermissionChangedEvent) { // event.EntityName, event.RoleID // event.PermissionTypeChanged: 'Read' | 'Create' | 'Update' | 'Delete' // event.Value: boolean // Set event.Cancel = true to prevent the change } ``` ## Exported API | Export | Type | Description | |---|---|---| | `EntityPermissionsGridComponent` | Component | CRUD permissions grid | | `EntitySelectorWithGridComponent` | Component | Entity dropdown + permissions grid | | `EntityPermissionChangedEvent` | Type | Permission change event shape | | `EntityPermissionsModule` | NgModule | Module declaration | ## Build ```bash cd packages/Angular/Explorer/entity-permissions && npm run build ``` ## License ISC