chayns-components
Version:
A set of beautiful React components for developing chayns® applications.
154 lines (151 loc) • 6.8 kB
JavaScript
"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