UNPKG

chayns-components

Version:

A set of beautiful React components for developing chayns® applications.

154 lines (151 loc) 6.8 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.default = void 0; var _react = _interopRequireWildcard(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _ResultItemList = _interopRequireDefault(require("./ResultItemList")); var _PersonsContext = _interopRequireDefault(require("./data/persons/PersonsContext")); function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } const PersonFinderResults = _ref => { let { data = [], tags = [], orm, value: inputValue = '', hasMore = false, onLoadMore, showWaitCursor = false, onSelect, onRemoveTag, focusIndex, noBackground = false, filterSelected = false, hideFriendsIcon = false, showCheckbox = false, hideVerifiedIcon = false } = _ref; const handleClick = (0, _react.useCallback)(value => { if (onSelect) { onSelect(value.type, value.relation); } }, [onSelect]); const users = new Map(); let length = 0; if (Array.isArray(orm.groups)) { return /*#__PURE__*/_react.default.createElement("div", { className: 'cc__person-finder__results' + (noBackground ? " no-background" : ""), key: "resultList" }, /*#__PURE__*/_react.default.createElement("div", { className: 'cc__person-finder__results-list' + (focusIndex !== null ? " cc__person-finder__results-list--noTransition" : "") }, orm.groups.map(_ref2 => { let { key: group, show, roundIcons, filter } = _ref2; if (typeof show === 'function' && !show(inputValue)) { return null; } // Prevent duplicates from knownPersons and persons let groupData = []; if (orm === _PersonsContext.default.ObjectMapping && ['knownPersons', 'personsRelated', 'personsUnrelated', 'uacPersons'].includes(group)) { (data[group] || []).forEach(value => { if (users.has(value.id)) return; users.set(value.id, true); groupData.push(value); }); } else { groupData = data[group] || []; } groupData = typeof (filter || orm.filter) === 'function' ? groupData.filter((filter || orm.filter)(inputValue)) : groupData; if (filterSelected) { groupData = groupData.filter(_ref3 => { let { type, id } = _ref3; return tags.every(_ref4 => { let { value } = _ref4; return type !== value.type || id !== value.id; }); }); } const groupLength = groupData.length; length += groupLength; let groupFocusIndex = null; if (length - groupLength <= focusIndex && focusIndex < length && focusIndex !== null) { groupFocusIndex = focusIndex - (length - groupLength); } return /*#__PURE__*/_react.default.createElement("div", { className: 'cc__person-finder__results' + (noBackground ? " no-background" : ""), key: `resultList_${group}` }, /*#__PURE__*/_react.default.createElement(_ResultItemList.default, { key: group, data: groupData, orm: orm, group: group, hasMore: hasMore[group], onLoadMore: onLoadMore, showWaitCursor: showWaitCursor[group], onClick: handleClick, onRemoveTag: onRemoveTag, focusIndex: groupFocusIndex, roundIcons: roundIcons, hideFriendsIcon: hideFriendsIcon, tags: tags, showCheckbox: showCheckbox, inputValue: inputValue, hideVerifiedIcon: hideVerifiedIcon })); }))); } return /*#__PURE__*/_react.default.createElement("div", { className: 'cc__person-finder__results' + (noBackground ? " no-background" : "") }, /*#__PURE__*/_react.default.createElement(_ResultItemList.default, { data: typeof orm.filter === 'function' ? data.filter(orm.filter(inputValue)) : data, orm: orm, hasMore: hasMore, onLoadMore: onLoadMore, showWaitCursor: showWaitCursor, onClick: handleClick, focusIndex: focusIndex, roundIcons: orm.roundIcons, hideVerifiedIcon: hideVerifiedIcon })); }; PersonFinderResults.propTypes = { orm: _propTypes.default.shape({ identifier: _propTypes.default.string, showName: _propTypes.default.string, imageUrl: _propTypes.default.string, // eslint-disable-next-line react/forbid-prop-types groups: _propTypes.default.array, filter: _propTypes.default.func, roundIcons: _propTypes.default.bool }).isRequired, data: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.object), _propTypes.default.objectOf(_propTypes.default.arrayOf(_propTypes.default.object))]), tags: _propTypes.default.arrayOf(_propTypes.default.shape({ value: _propTypes.default.shape({}) })), value: _propTypes.default.string, onSelect: _propTypes.default.func, onLoadMore: _propTypes.default.func.isRequired, hasMore: _propTypes.default.oneOfType([_propTypes.default.objectOf(_propTypes.default.bool), _propTypes.default.bool]), showWaitCursor: _propTypes.default.oneOfType([_propTypes.default.objectOf(_propTypes.default.bool), _propTypes.default.bool]), focusIndex: _propTypes.default.number, noBackground: _propTypes.default.bool, filterSelected: _propTypes.default.bool, hideFriendsIcon: _propTypes.default.bool, showCheckbox: _propTypes.default.bool, onRemoveTag: _propTypes.default.func.isRequired, hideVerifiedIcon: _propTypes.default.bool }; PersonFinderResults.displayName = 'PersonFinderResults'; var _default = PersonFinderResults; exports.default = _default; //# sourceMappingURL=PersonFinderResults.js.map