@nu-art/permissions-frontend 0.400.5
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/PermissionKey_FE.d.ts +25 -0
- package/PermissionKey_FE.js +23 -0
- package/_entity/permission-access-level/ModuleFE_PermissionAccessLevel.d.ts +11 -0
- package/_entity/permission-access-level/ModuleFE_PermissionAccessLevel.js +12 -0
- package/_entity/permission-access-level/index.d.ts +2 -0
- package/_entity/permission-access-level/index.js +2 -0
- package/_entity/permission-access-level/module-pack.d.ts +1 -0
- package/_entity/permission-access-level/module-pack.js +2 -0
- package/_entity/permission-access-level/shared.d.ts +1 -0
- package/_entity/permission-access-level/shared.js +1 -0
- package/_entity/permission-access-level/ui-components.d.ts +37 -0
- package/_entity/permission-access-level/ui-components.js +21 -0
- package/_entity/permission-api/ModuleFE_PermissionAPI.d.ts +11 -0
- package/_entity/permission-api/ModuleFE_PermissionAPI.js +12 -0
- package/_entity/permission-api/index.d.ts +2 -0
- package/_entity/permission-api/index.js +2 -0
- package/_entity/permission-api/module-pack.d.ts +1 -0
- package/_entity/permission-api/module-pack.js +2 -0
- package/_entity/permission-api/shared.d.ts +1 -0
- package/_entity/permission-api/shared.js +1 -0
- package/_entity/permission-api/ui-components.d.ts +37 -0
- package/_entity/permission-api/ui-components.js +21 -0
- package/_entity/permission-domain/ModuleFE_PermissionDomain.d.ts +9 -0
- package/_entity/permission-domain/ModuleFE_PermissionDomain.js +10 -0
- package/_entity/permission-domain/index.d.ts +2 -0
- package/_entity/permission-domain/index.js +2 -0
- package/_entity/permission-domain/module-pack.d.ts +1 -0
- package/_entity/permission-domain/module-pack.js +2 -0
- package/_entity/permission-domain/shared.d.ts +1 -0
- package/_entity/permission-domain/shared.js +1 -0
- package/_entity/permission-domain/ui-components.d.ts +37 -0
- package/_entity/permission-domain/ui-components.js +21 -0
- package/_entity/permission-group/ModuleFE_PermissionGroup.d.ts +11 -0
- package/_entity/permission-group/ModuleFE_PermissionGroup.js +12 -0
- package/_entity/permission-group/index.d.ts +2 -0
- package/_entity/permission-group/index.js +2 -0
- package/_entity/permission-group/module-pack.d.ts +1 -0
- package/_entity/permission-group/module-pack.js +2 -0
- package/_entity/permission-group/shared.d.ts +1 -0
- package/_entity/permission-group/shared.js +1 -0
- package/_entity/permission-group/ui-components.d.ts +37 -0
- package/_entity/permission-group/ui-components.js +21 -0
- package/_entity/permission-project/ModuleFE_PermissionProject.d.ts +11 -0
- package/_entity/permission-project/ModuleFE_PermissionProject.js +12 -0
- package/_entity/permission-project/index.d.ts +2 -0
- package/_entity/permission-project/index.js +2 -0
- package/_entity/permission-project/module-pack.d.ts +1 -0
- package/_entity/permission-project/module-pack.js +2 -0
- package/_entity/permission-project/shared.d.ts +1 -0
- package/_entity/permission-project/shared.js +1 -0
- package/_entity/permission-project/ui-components.d.ts +37 -0
- package/_entity/permission-project/ui-components.js +21 -0
- package/_entity/permission-user/ModuleFE_PermissionUser.d.ts +11 -0
- package/_entity/permission-user/ModuleFE_PermissionUser.js +14 -0
- package/_entity/permission-user/index.d.ts +2 -0
- package/_entity/permission-user/index.js +2 -0
- package/_entity/permission-user/module-pack.d.ts +1 -0
- package/_entity/permission-user/module-pack.js +2 -0
- package/_entity/permission-user/shared.d.ts +1 -0
- package/_entity/permission-user/shared.js +1 -0
- package/_entity/permission-user/ui-components.d.ts +37 -0
- package/_entity/permission-user/ui-components.js +36 -0
- package/_entity.d.ts +12 -0
- package/_entity.js +18 -0
- package/consts.d.ts +4 -0
- package/consts.js +3 -0
- package/core/module-pack.d.ts +2 -0
- package/core/module-pack.js +29 -0
- package/core/permission-keys.d.ts +4 -0
- package/core/permission-keys.js +5 -0
- package/index.d.ts +5 -0
- package/index.js +23 -0
- package/modules/ModuleFE_PermissionsAssert.d.ts +32 -0
- package/modules/ModuleFE_PermissionsAssert.js +80 -0
- package/package.json +84 -0
- package/shared.d.ts +1 -0
- package/shared.js +19 -0
- package/ui/ATS_ComponentPermissionKeys/ATS_ComponentPermissionKeys.d.ts +11 -0
- package/ui/ATS_ComponentPermissionKeys/ATS_ComponentPermissionKeys.js +22 -0
- package/ui/ATS_ComponentPermissionKeys/permission-keys-editor.scss +153 -0
- package/ui/ATS_ComponentPermissionKeys/subEditors/Component_AccessLevelsEditor.d.ts +16 -0
- package/ui/ATS_ComponentPermissionKeys/subEditors/Component_AccessLevelsEditor.js +38 -0
- package/ui/ATS_ComponentPermissionKeys/subEditors/permission-keys-editor.d.ts +16 -0
- package/ui/ATS_ComponentPermissionKeys/subEditors/permission-keys-editor.js +33 -0
- package/ui/ATS_Permissions/ATS_Permissions.d.ts +8 -0
- package/ui/ATS_Permissions/ATS_Permissions.js +63 -0
- package/ui/ATS_Permissions/ATS_Permissions.scss +172 -0
- package/ui/Component_SwitchView.d.ts +23 -0
- package/ui/Component_SwitchView.js +32 -0
- package/ui/Component_SwitchViewV2.d.ts +21 -0
- package/ui/Component_SwitchViewV2.js +25 -0
- package/ui/PermissionsComponent.d.ts +21 -0
- package/ui/PermissionsComponent.js +42 -0
- package/ui/PermissionsEditableComponent.d.ts +18 -0
- package/ui/PermissionsEditableComponent.js +21 -0
- package/ui/Renderer_RoleNames.d.ts +1 -0
- package/ui/Renderer_RoleNames.js +7 -0
- package/ui/index.d.ts +8 -0
- package/ui/index.js +8 -0
- package/ui/permission-editors/components.d.ts +6 -0
- package/ui/permission-editors/components.js +9 -0
- package/ui/permission-editors/editor-base.d.ts +18 -0
- package/ui/permission-editors/editor-base.js +17 -0
- package/ui/permission-editors/editor-base.scss +298 -0
- package/ui/permission-editors/permission-api-edior/permission-api-editor.d.ts +16 -0
- package/ui/permission-editors/permission-api-edior/permission-api-editor.js +63 -0
- package/ui/permission-editors/permission-api-edior/permission-api-editor.scss +7 -0
- package/ui/permission-editors/permission-domains-editor.d.ts +9 -0
- package/ui/permission-editors/permission-domains-editor.js +139 -0
- package/ui/permission-editors/permission-groups-editor.d.ts +9 -0
- package/ui/permission-editors/permission-groups-editor.js +80 -0
- package/ui/permission-editors/permission-project-editor/permission-project-editor.scss +10 -0
- package/ui/permission-editors/permission-project-editor/permission-projects-editor.d.ts +10 -0
- package/ui/permission-editors/permission-project-editor/permission-projects-editor.js +52 -0
- package/ui/permission-editors/permission-users-editor.d.ts +9 -0
- package/ui/permission-editors/permission-users-editor.js +48 -0
- package/ui/ui-props.d.ts +16 -0
- package/ui/ui-props.js +62 -0
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { Fragment } from 'react';
|
|
3
|
+
import { ModuleFE_Toaster, TS_ErrorBoundary, TS_PropRenderer } from '@nu-art/thunderstorm-frontend/index';
|
|
4
|
+
import { MUSTNeverHappenException, sortArray, StaticLogger } from '@nu-art/ts-common';
|
|
5
|
+
import { MultiSelect } from '../ui-props.js';
|
|
6
|
+
import { TS_Icons } from '@nu-art/ts-styles';
|
|
7
|
+
import { ModuleFE_PermissionAccessLevel, ModuleFE_PermissionDomain, ModuleFE_PermissionGroup } from '../../_entity.js';
|
|
8
|
+
import { Component_BasePermissionItemEditor } from './editor-base.js';
|
|
9
|
+
import { Input_Text_Blur } from './components.js';
|
|
10
|
+
import { DropDown_PermissionProject } from '../../_entity/permission-project/ui-components.js';
|
|
11
|
+
import { Page_ItemsEditor } from '@nu-art/thunderstorm-frontend/components/Page_ItemsEditor/index';
|
|
12
|
+
import { TS_EditableItemControllerProto } from '@nu-art/thunderstorm-frontend/editable-item';
|
|
13
|
+
class Component_EditGroup extends Component_BasePermissionItemEditor {
|
|
14
|
+
static defaultProps = {
|
|
15
|
+
module: ModuleFE_PermissionGroup,
|
|
16
|
+
displayResolver: (item) => ModuleFE_PermissionGroup.cache.unique(item._id)?.label ?? 'Not Found'
|
|
17
|
+
};
|
|
18
|
+
renderLevels = () => {
|
|
19
|
+
const group = this.state.editable;
|
|
20
|
+
if (!group)
|
|
21
|
+
return '';
|
|
22
|
+
return _jsx(TS_ErrorBoundary, { children: _jsx(TS_PropRenderer.Vertical, { label: 'Levels', children: _jsx(MultiSelect.AccessLevel, { editable: group, prop: 'accessLevelIds', className: 'domain-level-list', itemRenderer: (levelId, onDelete) => {
|
|
23
|
+
const level = ModuleFE_PermissionAccessLevel.cache.unique(levelId);
|
|
24
|
+
if (!level)
|
|
25
|
+
throw new MUSTNeverHappenException(`Could not find access level with id ${levelId}`);
|
|
26
|
+
const domain = ModuleFE_PermissionDomain.cache.unique(level.domainId);
|
|
27
|
+
if (!domain)
|
|
28
|
+
throw new MUSTNeverHappenException(`Could not find domain with id ${level.domainId}`);
|
|
29
|
+
return _jsxs(Fragment, { children: [_jsx(TS_Icons.x.component, { onClick: onDelete }), `${domain.namespace}: ${level.name} (${level.value})`] }, levelId);
|
|
30
|
+
} }) }) });
|
|
31
|
+
};
|
|
32
|
+
editorContent = () => {
|
|
33
|
+
const group = this.state.editable;
|
|
34
|
+
return _jsxs(_Fragment, { children: [_jsx(TS_PropRenderer.Vertical, { label: 'Label', children: _jsx(Input_Text_Blur, { editable: group, prop: 'label' }) }), _jsx(TS_PropRenderer.Vertical, { label: 'Project', children: _jsx(DropDown_PermissionProject.editable, { editable: group, prop: 'projectId' }) }), this.renderLevels()] });
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
class Controller_EditGroup extends TS_EditableItemControllerProto {
|
|
38
|
+
static defaultProps = {
|
|
39
|
+
keys: ['selected'],
|
|
40
|
+
module: ModuleFE_PermissionGroup,
|
|
41
|
+
editor: Component_EditGroup,
|
|
42
|
+
createInitialInstance: () => ({}),
|
|
43
|
+
autoSave: true
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
export class PermissionGroupsEditor extends Page_ItemsEditor {
|
|
47
|
+
//######################### Static #########################
|
|
48
|
+
static Route = {
|
|
49
|
+
key: 'group-permission-editor',
|
|
50
|
+
path: 'group-permission-editor',
|
|
51
|
+
Component: this
|
|
52
|
+
};
|
|
53
|
+
static defaultProps = {
|
|
54
|
+
keys: ['selected'],
|
|
55
|
+
module: ModuleFE_PermissionGroup,
|
|
56
|
+
mapper: group => [group.label ?? 'Not Found'],
|
|
57
|
+
sort: (items) => sortArray(items, 'label'),
|
|
58
|
+
itemRenderer: group => _jsx(_Fragment, { children: group.label ?? 'Not Found' }),
|
|
59
|
+
EditorRenderer: Controller_EditGroup,
|
|
60
|
+
route: this.Route,
|
|
61
|
+
contextMenuActions: [
|
|
62
|
+
{
|
|
63
|
+
label: 'Delete Group',
|
|
64
|
+
action: async (item) => {
|
|
65
|
+
try {
|
|
66
|
+
await ModuleFE_PermissionGroup.v1.delete(item).executeSync();
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
catch (err) {
|
|
70
|
+
StaticLogger.logError({ ...err });
|
|
71
|
+
ModuleFE_Toaster.toastError(err.errorResponse.debugMessage.split('\n')[0]);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
]
|
|
76
|
+
};
|
|
77
|
+
renderHeader() {
|
|
78
|
+
return _jsx(_Fragment, { children: "Permission Group" });
|
|
79
|
+
}
|
|
80
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { InferProps, TS_Route } from '@nu-art/thunderstorm-frontend/index';
|
|
3
|
+
import { Page_ItemsEditor } from '@nu-art/thunderstorm-frontend/components/Page_ItemsEditor/index';
|
|
4
|
+
import './permission-project-editor.scss';
|
|
5
|
+
import { DBProto_PermissionProject } from '@nu-art/permissions-shared';
|
|
6
|
+
export declare class PermissionProjectsEditor extends Page_ItemsEditor<DBProto_PermissionProject> {
|
|
7
|
+
static Route: TS_Route;
|
|
8
|
+
static defaultProps: Partial<InferProps<PermissionProjectsEditor>>;
|
|
9
|
+
protected renderHeader(): React.ReactNode;
|
|
10
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { TS_PropRenderer } from '@nu-art/thunderstorm-frontend/index';
|
|
3
|
+
import { ModuleFE_PermissionProject } from '../../../_entity.js';
|
|
4
|
+
import { Component_BasePermissionItemEditor } from '../editor-base.js';
|
|
5
|
+
import { Input_Text_Blur } from '../components.js';
|
|
6
|
+
import { PermissionAPIEditor } from '../permission-api-edior/permission-api-editor.js';
|
|
7
|
+
import { Page_ItemsEditor } from '@nu-art/thunderstorm-frontend/components/Page_ItemsEditor/index';
|
|
8
|
+
import './permission-project-editor.scss';
|
|
9
|
+
import { TS_EditableItemControllerProto } from '@nu-art/thunderstorm-frontend/components/TS_EditableItemControllerProto/index';
|
|
10
|
+
import { sortArray } from '@nu-art/ts-common';
|
|
11
|
+
class Component_EditProject extends Component_BasePermissionItemEditor {
|
|
12
|
+
static defaultProps = {
|
|
13
|
+
module: ModuleFE_PermissionProject,
|
|
14
|
+
displayResolver: (item) => ModuleFE_PermissionProject.cache.unique(item._id)?.name ?? 'Not Found'
|
|
15
|
+
};
|
|
16
|
+
editorContent = () => {
|
|
17
|
+
const project = this.state.editable;
|
|
18
|
+
return _jsxs(_Fragment, { children: [_jsx(TS_PropRenderer.Vertical, { label: 'Name', style: { flex: 0 }, children: _jsx(Input_Text_Blur, { editable: project, prop: 'name' }) }), project.item._id && _jsx(PermissionAPIEditor, { projectId: project.item._id })] });
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
class Controller_ProjectEditor extends TS_EditableItemControllerProto {
|
|
22
|
+
static defaultProps = {
|
|
23
|
+
keys: ['selected'],
|
|
24
|
+
module: ModuleFE_PermissionProject,
|
|
25
|
+
editor: Component_EditProject,
|
|
26
|
+
createInitialInstance: () => ({}),
|
|
27
|
+
autoSave: true
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export class PermissionProjectsEditor extends Page_ItemsEditor {
|
|
31
|
+
//######################### Static #########################
|
|
32
|
+
static Route = {
|
|
33
|
+
key: 'project-permission-editor',
|
|
34
|
+
path: 'project-permission-editor',
|
|
35
|
+
Component: this,
|
|
36
|
+
children: [PermissionAPIEditor.Route]
|
|
37
|
+
};
|
|
38
|
+
static defaultProps = {
|
|
39
|
+
keys: ['selected'],
|
|
40
|
+
id: 'permission-projects-editor',
|
|
41
|
+
module: ModuleFE_PermissionProject,
|
|
42
|
+
mapper: project => [project.name ?? 'Not Found'],
|
|
43
|
+
sort: (items) => sortArray(items, 'name'),
|
|
44
|
+
itemRenderer: project => _jsx(_Fragment, { children: project.name ?? 'Not Found' }),
|
|
45
|
+
EditorRenderer: Controller_ProjectEditor,
|
|
46
|
+
hideAddItem: true,
|
|
47
|
+
route: this.Route
|
|
48
|
+
};
|
|
49
|
+
renderHeader() {
|
|
50
|
+
return _jsx(_Fragment, { children: "Permission Project" });
|
|
51
|
+
}
|
|
52
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { Page_ItemsEditor } from '@nu-art/thunderstorm-frontend/components/Page_ItemsEditor/index';
|
|
3
|
+
import { InferProps, TS_Route } from '@nu-art/thunderstorm-frontend/index';
|
|
4
|
+
import { DBProto_PermissionUser } from '@nu-art/permissions-shared';
|
|
5
|
+
export declare class PermissionUsersEditor extends Page_ItemsEditor<DBProto_PermissionUser> {
|
|
6
|
+
static Route: TS_Route;
|
|
7
|
+
protected renderHeader(): React.ReactNode;
|
|
8
|
+
static defaultProps: Partial<InferProps<PermissionUsersEditor>>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { ModuleFE_Account } from '@nu-art/user-account-frontend/index';
|
|
3
|
+
import { ModuleFE_PermissionUser } from '../../_entity.js';
|
|
4
|
+
import { Page_ItemsEditor } from '@nu-art/thunderstorm-frontend/components/Page_ItemsEditor/index';
|
|
5
|
+
import { TS_PropRenderer } from '@nu-art/thunderstorm-frontend/index';
|
|
6
|
+
import { MultiSelect } from '../ui-props.js';
|
|
7
|
+
import { Component_BasePermissionItemEditor } from './editor-base.js';
|
|
8
|
+
import { TS_EditableItemControllerProto } from '@nu-art/thunderstorm-frontend/editable-item';
|
|
9
|
+
import { sortArray } from '@nu-art/ts-common';
|
|
10
|
+
class Component_EditAccount extends Component_BasePermissionItemEditor {
|
|
11
|
+
static defaultProps = {
|
|
12
|
+
module: ModuleFE_PermissionUser,
|
|
13
|
+
displayResolver: (item) => ModuleFE_Account.cache.unique(item._id)?.email ?? 'Not Found'
|
|
14
|
+
};
|
|
15
|
+
editorContent = () => {
|
|
16
|
+
return _jsx(TS_PropRenderer.Vertical, { label: 'Groups', children: _jsx(MultiSelect.Group, { className: 'user-permission-groups', editable: this.state.editable, prop: 'groups' }) });
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
class Controller_EditAccount extends TS_EditableItemControllerProto {
|
|
20
|
+
static defaultProps = {
|
|
21
|
+
keys: ['selected'],
|
|
22
|
+
module: ModuleFE_PermissionUser,
|
|
23
|
+
editor: Component_EditAccount,
|
|
24
|
+
createInitialInstance: () => ({}),
|
|
25
|
+
autoSave: true
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export class PermissionUsersEditor extends Page_ItemsEditor {
|
|
29
|
+
//######################### Static #########################
|
|
30
|
+
static Route = {
|
|
31
|
+
key: 'user-permission-editor',
|
|
32
|
+
path: 'user-permission-editor',
|
|
33
|
+
Component: this
|
|
34
|
+
};
|
|
35
|
+
renderHeader() {
|
|
36
|
+
return _jsx(_Fragment, { children: "User Permissions" });
|
|
37
|
+
}
|
|
38
|
+
static defaultProps = {
|
|
39
|
+
keys: ['selected'],
|
|
40
|
+
module: ModuleFE_PermissionUser,
|
|
41
|
+
mapper: (user) => [ModuleFE_Account.cache.unique(user._id)?.email ?? 'Not Found'],
|
|
42
|
+
sort: (items) => sortArray(items, (user) => ModuleFE_Account.cache.unique(user._id)?.email),
|
|
43
|
+
itemRenderer: (user) => _jsx(_Fragment, { children: ModuleFE_Account.cache.unique(user._id)?.email ?? 'Not Found' }),
|
|
44
|
+
EditorRenderer: Controller_EditAccount,
|
|
45
|
+
hideAddItem: true,
|
|
46
|
+
route: this.Route
|
|
47
|
+
};
|
|
48
|
+
}
|
package/ui/ui-props.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { StaticProps_TS_MultiSelect_V2 } from '@nu-art/thunderstorm-frontend/components/TS_MultiSelect/index';
|
|
2
|
+
export declare const Permissions_DropDown: {
|
|
3
|
+
Project: (props: import("@nu-art/thunderstorm-frontend/index").AppLevelProps_TS_GenericDropDownV3<import("@nu-art/permissions-shared").DB_PermissionProject>) => import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
AccessLevel: (props: import("@nu-art/thunderstorm-frontend/index").AppLevelProps_TS_GenericDropDownV3<import("@nu-art/permissions-shared").DB_PermissionAccessLevel>) => import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
Domain: (props: import("@nu-art/thunderstorm-frontend/index").AppLevelProps_TS_GenericDropDownV3<import("@nu-art/permissions-shared").DB_PermissionDomain>) => import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
Group: (props: import("@nu-art/thunderstorm-frontend/index").AppLevelProps_TS_GenericDropDownV3<import("@nu-art/permissions-shared").DB_PermissionGroup>) => import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
};
|
|
8
|
+
export declare const MultiSelect: {
|
|
9
|
+
AccessLevel_StamTest: <EnclosingItem_, Prop extends import("@nu-art/ts-common").SubsetKeys<keyof EnclosingItem_, EnclosingItem_, string[] | undefined>>(props: import("@nu-art/thunderstorm-frontend/index").DynamicProps_TS_MultiSelect_V2<EnclosingItem_, Prop> & Partial<StaticProps_TS_MultiSelect_V2<string>>) => import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
AccessLevel: <EnclosingItem_, Prop extends import("@nu-art/ts-common").SubsetKeys<keyof EnclosingItem_, EnclosingItem_, string[] | undefined>>(props: import("@nu-art/thunderstorm-frontend/index").DynamicProps_TS_MultiSelect_V2<EnclosingItem_, Prop> & Partial<StaticProps_TS_MultiSelect_V2<string>>) => import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
Group: <EnclosingItem_, Prop extends import("@nu-art/ts-common").SubsetKeys<keyof EnclosingItem_, EnclosingItem_, {
|
|
12
|
+
groupId: string;
|
|
13
|
+
}[] | undefined>>(props: import("@nu-art/thunderstorm-frontend/index").DynamicProps_TS_MultiSelect_V2<EnclosingItem_, Prop> & Partial<StaticProps_TS_MultiSelect_V2<{
|
|
14
|
+
groupId: string;
|
|
15
|
+
}>>) => import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
};
|
package/ui/ui-props.js
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { ComponentSync, LL_V_L } from '@nu-art/thunderstorm-frontend/index';
|
|
3
|
+
import { dbObjectToId, sortArray } from '@nu-art/ts-common';
|
|
4
|
+
import { TS_MultiSelect_V2 } from '@nu-art/thunderstorm-frontend/components/TS_MultiSelect/index';
|
|
5
|
+
import { ModuleFE_PermissionAccessLevel, ModuleFE_PermissionDomain, ModuleFE_PermissionGroup } from '../_entity.js';
|
|
6
|
+
import { DropDown_PermissionAccessLevel } from '../_entity/permission-access-level/ui-components.js';
|
|
7
|
+
import { DropDown_PermissionProject } from '../_entity/permission-project/ui-components.js';
|
|
8
|
+
import { DropDown_PermissionDomain } from '../_entity/permission-domain/ui-components.js';
|
|
9
|
+
import { DropDown_PermissionGroup } from '../_entity/permission-group/ui-components.js';
|
|
10
|
+
import { TS_Icons } from '@nu-art/ts-styles';
|
|
11
|
+
export const Permissions_DropDown = {
|
|
12
|
+
Project: DropDown_PermissionProject.selectable,
|
|
13
|
+
AccessLevel: DropDown_PermissionAccessLevel.selectable,
|
|
14
|
+
Domain: DropDown_PermissionDomain.selectable,
|
|
15
|
+
Group: DropDown_PermissionGroup.selectable,
|
|
16
|
+
};
|
|
17
|
+
class DomainLevelRenderer extends ComponentSync {
|
|
18
|
+
render() {
|
|
19
|
+
const selectedLevels = ModuleFE_PermissionAccessLevel.cache.filter(item => this.props.existingItems.includes(item._id));
|
|
20
|
+
const availableDomainsIds = ModuleFE_PermissionDomain.cache.filter(item => !selectedLevels.find(level => level.domainId === item._id)).map(dbObjectToId);
|
|
21
|
+
return _jsxs(LL_V_L, { className: 'domain-level-renderer', children: [_jsx(Permissions_DropDown.Domain, { selected: this.state.domainId, queryFilter: domain => availableDomainsIds.includes(domain._id), onSelected: domain => this.setState({ domainId: domain._id }), sortBy: ['namespace'], placeholder: 'Domain' }), _jsx(Permissions_DropDown.AccessLevel, { disabled: !this.state.domainId, queryFilter: level => this.state.domainId === level.domainId, selected: undefined, onSelected: (accessLevel) => this.props.onSelected(accessLevel._id), sortBy: ['value'], placeholder: 'Level' })] });
|
|
22
|
+
}
|
|
23
|
+
deriveStateFromProps(nextProps, state) {
|
|
24
|
+
return { domainId: undefined, onSelected: nextProps.onSelected };
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
class GroupRenderer extends ComponentSync {
|
|
28
|
+
shouldComponentUpdate() {
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
render() {
|
|
32
|
+
return _jsx(Permissions_DropDown.Group, { onSelected: group => this.props.onSelected({ groupId: group._id }), queryFilter: group => !this.props.existingItems.find(g => g.groupId === group._id), sortBy: ['label'], selected: undefined });
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
const AccessLevelItemRenderer = (levelId) => {
|
|
36
|
+
const level = ModuleFE_PermissionAccessLevel.cache.unique(levelId);
|
|
37
|
+
const domain = ModuleFE_PermissionDomain.cache.unique(level?.domainId);
|
|
38
|
+
return `${domain?.namespace ?? 'Not Found'}: ${level?.name ?? 'Not Found'} (${level?.value ?? '#'})`;
|
|
39
|
+
};
|
|
40
|
+
const MultiSelect_PermissionsAccessLevel = {
|
|
41
|
+
itemRenderer: (accessLevelId, onDelete) => _jsxs(_Fragment, { children: [AccessLevelItemRenderer(accessLevelId), _jsx(TS_Icons.x.component, { onClick: onDelete })] }),
|
|
42
|
+
selectionRenderer: (props) => _jsx(DomainLevelRenderer, { onSelected: props.onSelected, className: props.className, existingItems: props.existingItems, queryFilter: props.queryFilter }),
|
|
43
|
+
sort: items => sortArray(items, AccessLevelItemRenderer)
|
|
44
|
+
};
|
|
45
|
+
const MultiSelect_PermissionsAccessLevelStam = {
|
|
46
|
+
itemRenderer: (accessLevelId, onDelete) => _jsxs(_Fragment, { children: [_jsx("div", { className: "ts-icon__small", onClick: onDelete, children: "X" }), _jsx("span", { children: ModuleFE_PermissionAccessLevel.cache.unique(accessLevelId)?.name || 'not found' })] }),
|
|
47
|
+
selectionRenderer: (selector) => _jsx(Permissions_DropDown.AccessLevel, { queryFilter: item => {
|
|
48
|
+
const selectedLevels = ModuleFE_PermissionAccessLevel.cache.filter(item => selector.existingItems.includes(item._id));
|
|
49
|
+
const availableDomainsIds = ModuleFE_PermissionDomain.cache.filter(item => !selectedLevels.find(level => level.domainId === item._id)).map(dbObjectToId);
|
|
50
|
+
return availableDomainsIds.includes(item.domainId);
|
|
51
|
+
}, onSelected: item => selector.onSelected(item._id) })
|
|
52
|
+
};
|
|
53
|
+
const MultiSelect_PermissionsGroup = {
|
|
54
|
+
itemRenderer: (group, onDelete) => _jsxs(_Fragment, { children: [ModuleFE_PermissionGroup.cache.unique(group?.groupId)?.label || 'not found', _jsx(TS_Icons.x.component, { className: "ts-icon__small", onClick: onDelete })] }),
|
|
55
|
+
selectionRenderer: (props) => _jsx(GroupRenderer, { onSelected: props.onSelected, className: props.className, existingItems: props.existingItems, queryFilter: props.queryFilter }),
|
|
56
|
+
sort: items => sortArray(items, item => ModuleFE_PermissionGroup.cache.unique(item?.groupId)?.label || 'not found')
|
|
57
|
+
};
|
|
58
|
+
export const MultiSelect = {
|
|
59
|
+
AccessLevel_StamTest: TS_MultiSelect_V2.prepare(MultiSelect_PermissionsAccessLevelStam),
|
|
60
|
+
AccessLevel: TS_MultiSelect_V2.prepare(MultiSelect_PermissionsAccessLevel),
|
|
61
|
+
Group: TS_MultiSelect_V2.prepare(MultiSelect_PermissionsGroup),
|
|
62
|
+
};
|