diff --git a/src/components/WebexMemberRoster/WebexMemberRoster.jsx b/src/components/WebexMemberRoster/WebexMemberRoster.jsx
index 701ef8503..5c421fdda 100644
--- a/src/components/WebexMemberRoster/WebexMemberRoster.jsx
+++ b/src/components/WebexMemberRoster/WebexMemberRoster.jsx
@@ -24,11 +24,37 @@ import useMemberships from '../hooks/useMemberships';
*/
export default function WebexMemberRoster({destinationID, destinationType}) {
const memberships = useMemberships(destinationID, destinationType);
- const members = memberships.map(
+
+ const getMembersNode = (data) => (data || []).map(
(member) => ,
);
- return
{members}
;
+ if (destinationType !== 'meeting') {
+ return {getMembersNode(memberships)}
;
+ }
+
+ const groupBy = (items, key) => items.reduce(
+ (result, item) => ({
+ ...result,
+ [item[key]]: [
+ ...(result[item[key]] || []),
+ item,
+ ],
+ }),
+ {},
+ );
+
+ const groupedMembers = groupBy(memberships, 'isInMeeting');
+
+ return (
+
+
In Meeting
+
{getMembersNode(groupedMembers.true)}
+
+
Not in Meeting
+
{getMembersNode(groupedMembers.false)}
+
+ );
}
WebexMemberRoster.propTypes = {
diff --git a/src/components/WebexMemberRoster/WebexMemberRoster.scss b/src/components/WebexMemberRoster/WebexMemberRoster.scss
new file mode 100644
index 000000000..214662f64
--- /dev/null
+++ b/src/components/WebexMemberRoster/WebexMemberRoster.scss
@@ -0,0 +1,6 @@
+.#{$WEBEX_COMPONENTS_CLASS_PREFIX}-roster-separator {
+ @include body-fonts;
+ color: $md-gray-40;
+ border-bottom: 1px solid $md-gray-30;
+ }
+
\ No newline at end of file
diff --git a/src/components/_components.scss b/src/components/_components.scss
index 2f1007a61..70825a599 100644
--- a/src/components/_components.scss
+++ b/src/components/_components.scss
@@ -7,4 +7,5 @@
@import 'WebexMeetingControl/WebexMeetingControls';
@import 'WebexMeetingInfo/WebexMeetingInfo';
@import 'WebexMember/WebexMember';
+@import 'WebexMemberRoster/WebexMemberRoster';
@import 'WebexRemoteMedia/WebexRemoteMedia';
diff --git a/src/data/memberships.js b/src/data/memberships.js
index a3fd8c81e..2ffc56772 100644
--- a/src/data/memberships.js
+++ b/src/data/memberships.js
@@ -4,10 +4,10 @@ export default {
destinationID: 'room1',
destinationType: 'room',
members: [
- {personID: 'user1'},
- {personID: 'user2'},
- {personID: 'user3'},
- {personID: 'user4'},
+ {personID: 'user1', isInMeeting: true},
+ {personID: 'user2', isInMeeting: false},
+ {personID: 'user3', isInMeeting: true},
+ {personID: 'user4', isInMeeting: true},
],
},
membership2: {
@@ -15,9 +15,9 @@ export default {
destinationID: 'room2',
destinationType: 'room',
members: [
- {personID: 'user1'},
- {personID: 'user5'},
- {personID: 'user6'},
+ {personID: 'user1', isInMeeting: false},
+ {personID: 'user5', isInMeeting: false},
+ {personID: 'user6', isInMeeting: true},
],
},
membership3: {
@@ -25,9 +25,9 @@ export default {
destinationID: 'meeting1',
destinationType: 'meeting',
members: [
- {personID: 'user1'},
- {personID: 'user2'},
- {personID: 'user3'},
+ {personID: 'user1', isInMeeting: false},
+ {personID: 'user2', isInMeeting: true},
+ {personID: 'user3', isInMeeting: true},
],
},
membership4: {