UNPKG

@cometchat/chat-uikit-react

Version:

Ready-to-use Chat UI Components for React(Javascript/Web)

197 lines (196 loc) 6.68 kB
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 {};