+
+ {filteredUsers.length > 0 && (
+
+ {filteredUsers.map((user) => (
+ handleUserSelect(user.id)}
+ />
+ ))}
+
+ )}
+
+ >
+ );
+ },
+);
+
+EditStep.propTypes = {
+ /* eslint-disable react/forbid-prop-types */
+ users: PropTypes.array.isRequired,
+ currentUserIds: PropTypes.array.isRequired,
+ /* eslint-disable react/forbid-prop-types */
+ permissionsSelectStep: PropTypes.elementType,
+ title: PropTypes.string,
+ onUpdate: PropTypes.func,
+ onDelete: PropTypes.func.isRequired,
+ onClose: PropTypes.func.isRequired,
+};
+
+EditStep.defaultProps = {
+ permissionsSelectStep: undefined,
+ title: 'common.editMember',
+ onUpdate: undefined,
+};
+
+export default EditStep;
diff --git a/client/src/components/Memberships/EditStep/EditStep.module.scss b/client/src/components/Memberships/EditStep/EditStep.module.scss
new file mode 100644
index 0000000..95be8d0
--- /dev/null
+++ b/client/src/components/Memberships/EditStep/EditStep.module.scss
@@ -0,0 +1,21 @@
+:global(#app) {
+ .users {
+ margin-top: 8px;
+ max-height: 60vh;
+ overflow-x: hidden;
+ overflow-y: auto;
+ scrollbar-width: thin;
+
+ &::-webkit-scrollbar {
+ width: 5px;
+ }
+
+ &::-webkit-scrollbar-track {
+ background: transparent;
+ }
+
+ &::-webkit-scrollbar-thumb {
+ border-radius: 3px;
+ }
+ }
+}
diff --git a/client/src/components/Memberships/EditStep/UserItem.jsx b/client/src/components/Memberships/EditStep/UserItem.jsx
new file mode 100644
index 0000000..a61bb81
--- /dev/null
+++ b/client/src/components/Memberships/EditStep/UserItem.jsx
@@ -0,0 +1,31 @@
+import React from 'react';
+import PropTypes from 'prop-types';
+import classNames from 'classnames';
+
+import User from '../../User';
+
+import styles from './UserItem.module.scss';
+
+const UserItem = React.memo(({ name, avatarUrl, isActive, onSelect }) => (
+