cometchat-react-ui-kit2
Version:
CometChat UI Kit for React App
227 lines (213 loc) • 7.83 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.CometChatGroups = void 0;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _ = require("../..");
var _GroupListConfiguration = require("../../Groups/CometChatGroupList/GroupListConfiguration");
var _CreateGroupConfiguration = require("../../Groups/CometChatCreateGroup/CreateGroupConfiguration");
var _style = require("./style");
var _CometChatCreateGroup = require("../CometChatCreateGroup");
var _this = void 0;
/**
*
* CometChatGroups is a container component that wraps and
* formats CometChatListBase and CometChatGroupList component, with no behavior of its own.
*
* @version 1.0.0
* @author CometChatTeam
* @copyright © 2022 CometChat Inc.
*
*/
var Groups = /*#__PURE__*/_react["default"].forwardRef(function (props, ref) {
/**
* Destructuring Props
*/
var title = props.title,
searchPlaceholder = props.searchPlaceholder,
activeGroup = props.activeGroup,
style = props.style,
createGroupIconURL = props.createGroupIconURL,
backButtonIconURL = props.backButtonIconURL,
searchIconURL = props.searchIconURL,
showBackButtonURL = props.showBackButtonURL,
hideCreateGroup = props.hideCreateGroup,
hideSearch = props.hideSearch,
groupListConfiguration = props.groupListConfiguration,
createGroupConfiguration = props.createGroupConfiguration,
theme = props.theme;
/**
* Component internal state
*/
var groupListRef = _react["default"].useRef(null);
var _React$useState = _react["default"].useState(""),
_React$useState2 = (0, _slicedToArray2["default"])(_React$useState, 2),
searchInput = _React$useState2[0],
setSearchInput = _React$useState2[1];
var _React$useState3 = _react["default"].useState(false),
_React$useState4 = (0, _slicedToArray2["default"])(_React$useState3, 2),
viewCreateGroup = _React$useState4[0],
setViewCreateGroup = _React$useState4[1];
var _theme = new _.CometChatTheme(theme || {});
var _groupListConfiguration = groupListConfiguration || new _GroupListConfiguration.GroupListConfiguration({});
var _createGroupConfiguration = createGroupConfiguration || new _CreateGroupConfiguration.CreateGroupConfiguration({});
/**
* Public methods
*/
_react["default"].useImperativeHandle(ref, function () {
return {
groupListRef: groupListRef.current
};
});
/**
* Triggers addGroup method og groupList
* @param {*} group
*/
var updateGroup = function updateGroup(group) {
if (groupListRef !== null && groupListRef !== void 0 && groupListRef.current) {
groupListRef.current.addGroup(group);
}
};
/**
* Listener when Group is created successfully
*/
_.CometChatGroupEvents.addListener(_.CometChatGroupEvents.onGroupCreate, "onGroupCreate", updateGroup);
/**
* Action to be performed when clicked on close icon of create group modal
*/
var closeCreateGroup = function closeCreateGroup() {
setViewCreateGroup(false);
};
/**
* Action to be performed when clicked on create Group icon
*/
var openCreateGroup = function openCreateGroup() {
setViewCreateGroup(true);
};
/**
*
* @returns Create Group Modal View
*/
var showCreateGroup = function showCreateGroup() {
return viewCreateGroup ? /*#__PURE__*/_react["default"].createElement(_.CometChatPopover, {
withBackDrop: viewCreateGroup ? true : false,
style: (0, _style.popOverForCreateGroup)(_theme, _createGroupConfiguration)
}, /*#__PURE__*/_react["default"].createElement(_CometChatCreateGroup.CometChatCreateGroup, {
title: (0, _.localize)("NEW__GROUP"),
namePlaceholderText: (0, _.localize)("ENTER_GROUP_NAME"),
passwordPlaceholderText: (0, _.localize)("ENTER_GROUP_PASSWORD"),
createGroupButtonText: (0, _.localize)("CREATE_GROUP"),
onClose: _createGroupConfiguration.onClose || closeCreateGroup,
onCreateGroup: _createGroupConfiguration.onCreateGroup,
hideCloseButton: _createGroupConfiguration.hideCloseButton,
closeButtonIconURL: _createGroupConfiguration.closeButtonIconURL,
style: (0, _style.getCreateGroupStyle)(_createGroupConfiguration, _theme)
})) : null;
};
/**
*
* @returns Create group button
*/
var getCreateGroupButtonElem = function getCreateGroupButtonElem() {
if (!hideCreateGroup) {
return /*#__PURE__*/_react["default"].createElement("div", {
onClick: openCreateGroup.bind(_this),
style: (0, _style.createGroupBtnStyle)(style, createGroupIconURL, _theme)
});
}
return null;
};
/**
* Handles search
* @param {*} searchText
*/
var searchHandler = function searchHandler(searchText) {
setSearchInput(searchText);
};
/**
* Component Level Return
*/
return /*#__PURE__*/_react["default"].createElement("div", {
style: (0, _style.containerStyle)(style),
className: "cometchat__groups"
}, getCreateGroupButtonElem(), /*#__PURE__*/_react["default"].createElement(_.CometChatListBase, {
title: title,
searchPlaceholder: searchInput ? searchInput : searchPlaceholder,
onSearch: searchHandler,
style: (0, _style.getListBaseStyle)(style, _theme),
searchIconURL: searchIconURL,
showBackButton: showBackButtonURL,
hideSearch: hideSearch,
backButtonIconURL: backButtonIconURL
}, /*#__PURE__*/_react["default"].createElement(_.CometChatGroupList, {
ref: groupListRef,
limit: _groupListConfiguration.limit,
searchKeyword: searchInput ? searchInput : _groupListConfiguration.searchKeyword,
joinedOnly: _groupListConfiguration.joinedOnly,
tags: _groupListConfiguration.tags,
style: (0, _style.getListStyle)(_groupListConfiguration, _theme),
customView: _groupListConfiguration.customView,
loadingIconURL: _groupListConfiguration.loadingIconURL,
emptyText: (0, _.localize)("NO_GROUPS_FOUND"),
errorText: (0, _.localize)("SOMETHING_WENT_WRONG"),
hideError: _groupListConfiguration.hideError,
activeGroup: activeGroup,
dataItemConfiguration: _groupListConfiguration.dataItemConfiguration
})), showCreateGroup());
});
/**
* Default Props
*/
Groups.defaultProps = {
title: "Groups",
searchPlaceholder: "Search",
activeGroup: null,
style: {
width: "",
height: "",
border: "",
cornerRadius: "",
background: "",
titleFont: "",
titleColor: "",
backIconTint: "",
createGroupIconTint: "",
searchBorder: "",
searchBorderRadius: "",
searchBackground: "",
searchTextFont: "",
searchTextColor: "",
searchIconTint: ""
},
createGroupIconURL: null,
backButtonIconURL: null,
searchIconURL: null,
showBackButton: false,
hideCreateGroup: false,
hideSearch: false,
groupListConfiguration: null,
createGroupConfiguration: null
};
/**
* Props Types
*/
Groups.propTypes = {
title: _propTypes["default"].string,
searchPlaceholder: _propTypes["default"].string,
activeGroup: _propTypes["default"].object,
style: _propTypes["default"].object,
createGroupIconURL: _propTypes["default"].string,
backButtonIconURL: _propTypes["default"].string,
searchIconURL: _propTypes["default"].string,
showBackButton: _propTypes["default"].bool,
hideCreateGroup: _propTypes["default"].bool,
hideSearch: _propTypes["default"].bool,
groupListConfiguration: _propTypes["default"].object,
createGroupConfiguration: _propTypes["default"].object
};
var CometChatGroups = /*#__PURE__*/_react["default"].memo(Groups);
exports.CometChatGroups = CometChatGroups;