renders a user control component 1`] = `
class="ui segment primary"
>
Users
+
+
+
+
+
0;
+
return (
<>
{/* aria-live region outside Modal so it persists through open/close cycles */}
diff --git a/packages/volto/src/constants/ActionTypes.js b/packages/volto/src/constants/ActionTypes.js
index ac7b0ba0d95..ca5f54f1200 100644
--- a/packages/volto/src/constants/ActionTypes.js
+++ b/packages/volto/src/constants/ActionTypes.js
@@ -12,6 +12,7 @@ export const COPY_CONTENT = 'COPY_CONTENT';
export const CREATE_CONTENT = 'CREATE_CONTENT';
export const CREATE_GROUP = 'CREATE_GROUP';
export const CREATE_USER = 'CREATE_USER';
+export const UPDATE_USERS_CSV = 'UPDATE_USERS_CSV';
export const CUT = 'CUT';
export const DELETE_COMMENT = 'DELETE_COMMENT';
export const DELETE_CONTENT = 'DELETE_CONTENT';
@@ -68,6 +69,7 @@ export const LIST_FILTER_GROUPS = 'LIST_FILTER_GROUPS';
export const LIST_ROLES = 'LIST_ROLES';
export const AUTH_ROLE = 'AUTH_ROLE';
export const LIST_USERS = 'LIST_USERS';
+export const GET_USERS_CSV = 'GET_USERS_CSV';
export const LOGIN = 'LOGIN';
export const LOGIN_RENEW = 'LOGIN_RENEW';
export const LOGOUT = 'LOGOUT';
diff --git a/packages/volto/src/helpers/MessageLabels/MessageLabels.js b/packages/volto/src/helpers/MessageLabels/MessageLabels.js
index 36c327830ce..b29d7a472be 100644
--- a/packages/volto/src/helpers/MessageLabels/MessageLabels.js
+++ b/packages/volto/src/helpers/MessageLabels/MessageLabels.js
@@ -111,6 +111,14 @@ export const messages = defineMessages({
id: 'Add User',
defaultMessage: 'Add User',
},
+ addMemberImport: {
+ id: 'Add Members via CSV',
+ defaultMessage: 'Add Members via CSV',
+ },
+ membersCSVExport: {
+ id: 'Download Members as CSV',
+ defaultMessage: 'Download Members as CSV',
+ },
addGroupsFormTitle: {
id: 'Add group',
defaultMessage: 'Add group',
diff --git a/packages/volto/theme/themes/pastanaga/extras/main.less b/packages/volto/theme/themes/pastanaga/extras/main.less
index a8b1db2673e..2bdbe67e9bb 100644
--- a/packages/volto/theme/themes/pastanaga/extras/main.less
+++ b/packages/volto/theme/themes/pastanaga/extras/main.less
@@ -394,11 +394,42 @@ button {
}
}
-.users-control-panel .table {
- &::-webkit-scrollbar {
- width: 3px;
- height: 3px; /* scrollbar height */
- background: transparent; /* optional: just make scrollbar invisible */
+.users-control-panel {
+ .table {
+ &::-webkit-scrollbar {
+ width: 3px;
+ height: 3px; /* scrollbar height */
+ background: transparent; /* optional: just make scrollbar invisible */
+ }
+ }
+
+ .ui.segment.primary {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+
+ .users_grid {
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ justify-items: end;
+
+ .import_members_csv,
+ .export_members_csv {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ padding: 0px 12px;
+ border: medium;
+ border-radius: 8px;
+ background-color: #e8e8e8;
+ color: rgba(0, 0, 0, 0.7);
+
+ .csv_icon {
+ margin: 0px 0px 0px 8px;
+ fill: rgba(0, 0, 0, 0.7);
+ }
+ }
+ }
}
}