@cometchat/chat-uikit-react
Version:
Ready-to-use Chat UI Components for React(Javascript/Web)
197 lines (196 loc) • 6.68 kB
TypeScript
import { JSX } from "react";
import { GroupMembersManager } from "./controller";
import { SelectionMode, States } from "../../Enums/Enums";
import { CometChatOption } from "../../modals";
interface GroupMembersProps {
/**
* Hides the default search bar.
*
* @defaultValue `false`
*/
hideSearch?: boolean;
/**
* Hides the default and custom error view passed in `errorView` prop.
*
* @defaultValue `false`
*/
hideError?: boolean;
/**
* Disables the loading state while fetching users.
*
* @defaultValue `false`
*/
disableLoadingState?: boolean;
/**
* Hides the option to kick a member from the group.
*
* @defaultValue `false`
*/
hideKickMemberOption?: boolean;
/**
* Hides the option to ban a member from the group.
*
* @defaultValue `false`
*/
hideBanMemberOption?: boolean;
/**
* Hides the option to change the scope of a group member.
*
* @defaultValue `false`
*/
hideScopeChangeOption?: boolean;
/**
* Hides the user's online/offline status indicator.
*
* @defaultValue `false`
*/
hideUserStatus?: boolean;
/**
* The group for which members are being fetched.
*/
group: CometChat.Group;
/**
* Request builder to fetch group members.
*
* @defaultValue Default request builder having the limit set to `30`.
*/
groupMemberRequestBuilder?: CometChat.GroupMembersRequestBuilder;
/**
* Request builder with search parameters to fetch group members.
*
* @remarks If the search input is not empty, the search keyword of this request builder is set to the text in the search input.
*/
searchRequestBuilder?: CometChat.GroupMembersRequestBuilder;
/**
* The keyword used to filter the group members list.
*
* @defaultValue `""`
*/
searchKeyword?: string;
/**
* A function that returns a list of actions available when hovering over a group member item.
*
* @param group - The group instance.
* @param groupMember - An instance of `CometChat.GroupMember` representing the group member.
* @returns An array of `CometChatOption`.
*/
options?: (group: CometChat.Group, groupMember: CometChat.GroupMember) => CometChatOption[];
/**
* Selection mode to use for the default list item view.
*
* @defaultValue `SelectionMode.none`
*/
selectionMode?: SelectionMode;
/**
* Callback function invoked when an error occurs in the component.
*/
onError?: ((error: CometChat.CometChatException) => void) | null;
/**
* Callback function invoked when a group member item is clicked.
*
* @param groupMember - An instance of `CometChat.GroupMember` representing the group member.
* returns void
*/
onItemClick?: (groupMember: CometChat.GroupMember) => void;
/**
* Callback function invoked when a group member is selected or deselected.
*
* @param groupMember - An instance of `CometChat.GroupMember` representing the group member.
* @param selected - Boolean value to identify if the member is selected or removed.
* @returns void
*/
onSelect?: (groupMember: CometChat.GroupMember, selected: boolean) => void;
/**
* Callback function invoked when the group members list is empty.
* @returns void
*/
onEmpty?: () => void;
/**
* A custom component to render in the top-right corner of the group members list.
*/
headerView?: JSX.Element;
/**
* A custom view to display during the loading state.
*/
loadingView?: JSX.Element;
/**
* Custom view for the error state of the component.
*/
errorView?: JSX.Element;
/**
* A custom view to display when no group members are available in the list.
*/
emptyView?: JSX.Element;
/**
* A custom view to render for each group member in the fetched list.
*
* @param groupMember - An instance of `CometChat.GroupMember` representing the group member.
* @returns A JSX element to be rendered as the group member item.
*/
itemView?: (groupMember: CometChat.GroupMember) => JSX.Element;
/**
* A function that renders a JSX element to display the leading view.
*
* @param groupMember - An instance of `CometChat.GroupMember` representing the group member.
* @returns A JSX element to be rendered as the leading view.
*/
leadingView?: (groupMember: CometChat.GroupMember) => JSX.Element;
/**
* A function that renders a JSX element to display the title view.
*
* @param groupMember - An instance of `CometChat.GroupMember` representing the group member.
* @returns A JSX element to be rendered as the title view.
*/
titleView?: (groupMember: CometChat.GroupMember) => JSX.Element;
/**
* A function that renders a JSX element to display the subtitle view.
*
* @param groupMember - An instance of `CometChat.GroupMember` representing the group member.
* @returns A JSX element to be rendered as the subtitle view.
*/
subtitleView?: (groupMember: CometChat.GroupMember) => JSX.Element;
/**
* A function that renders a JSX element to display the trailing view.
*
* @param groupMember - An instance of `CometChat.GroupMember` representing the group member.
* @returns A JSX element to be rendered as the trailing view.
*/
trailingView?: (groupMember: CometChat.GroupMember) => JSX.Element;
}
export type Action = {
type: "appendGroupMembers";
groupMembers: CometChat.GroupMember[];
groupMembersManager?: GroupMembersManager | null;
onEmpty?: () => void;
disableLoadingState?: boolean;
} | {
type: "setGroupMemberList";
groupMemberList: CometChat.GroupMember[];
} | {
type: "setSearchText";
searchText: string;
} | {
type: "setFetchState";
fetchState: States;
} | {
type: "removeGroupMemberIfPresent";
groupMemberUid: string;
} | {
type: "setGroupMemberToChangeScopeOf";
groupMember: CometChat.GroupMember | null;
} | {
type: "replaceGroupMemberIfPresent";
updatedGroupMember: CometChat.GroupMember;
} | {
type: "updateGroupMemberStatusIfPresent";
user: CometChat.User;
} | {
type: "updateGroupMemberScopeIfPresent";
groupMemberUid: string;
newScope: CometChat.GroupMemberScope;
} | {
type: "appendGroupMember";
groupMember: CometChat.GroupMember;
};
export declare function CometChatGroupMembers(props: GroupMembersProps): import("react/jsx-runtime").JSX.Element;
export {};