@carbon/ibm-security
Version:
Carbon for Cloud & Cognitive IBM Security UI components
84 lines (83 loc) • 3.96 kB
JavaScript
import _extends from "@babel/runtime/helpers/extends";
import _defineProperty from "@babel/runtime/helpers/defineProperty";
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
var _excluded = ["render", "summaryCards"],
_excluded2 = ["id"];
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
/**
* @file Summary card container.
* @copyright IBM Security 2019, 2021
*/
import PropTypes from 'prop-types';
import React, { useState } from 'react';
import { appendComponentNamespace } from '../../../globals/namespace';
import { namespace as summaryCardNamespace } from '../SummaryCard';
import { namespace as summaryCardSelectNamespace } from '../SummaryCardSelect/SummaryCardSelect';
var getSummaryCard = function getSummaryCard(summaryCards, selectedId) {
return summaryCards.filter(function (_ref) {
var id = _ref.id;
return id === selectedId;
});
};
var resetSelectedSummaryCards = function resetSelectedSummaryCards(state) {
return state([]);
};
function SummaryCardContainer(_ref2) {
var render = _ref2.render,
summaryCards = _ref2.summaryCards,
other = _objectWithoutProperties(_ref2, _excluded);
var _resetSelectedSummary = resetSelectedSummaryCards(useState),
_resetSelectedSummary2 = _slicedToArray(_resetSelectedSummary, 2),
selectedSummaryCards = _resetSelectedSummary2[0],
setSelectedSummaryCards = _resetSelectedSummary2[1];
var totalSelected = selectedSummaryCards.length;
function getBatchActionProps(props) {
return _objectSpread(_objectSpread({}, props), {}, {
onCancel: function onCancel() {
return resetSelectedSummaryCards(setSelectedSummaryCards);
},
shouldShowBatchActions: totalSelected > 0,
totalSelected: totalSelected
});
}
function isSummaryCardSelected(selectedId) {
return getSummaryCard(selectedSummaryCards, selectedId).length > 0;
}
function onSelect(selectedId) {
return setSelectedSummaryCards(isSummaryCardSelected(selectedId) ? selectedSummaryCards.filter(function (_ref3) {
var id = _ref3.id;
return id !== selectedId;
}) : selectedSummaryCards.concat(getSummaryCard(summaryCards, selectedId)));
}
function getSelectionProps(_ref4) {
var id = _ref4.id,
props = _objectWithoutProperties(_ref4, _excluded2);
return _objectSpread(_objectSpread({}, props), {}, {
checked: isSummaryCardSelected(id),
id: appendComponentNamespace(summaryCardSelectNamespace, id),
onChange: function onChange() {
return onSelect(id);
}
});
}
var renderProps = {
getBatchActionProps: getBatchActionProps,
getSelectionProps: getSelectionProps,
selectedSummaryCards: selectedSummaryCards,
summaryCards: summaryCards
};
return /*#__PURE__*/React.createElement("div", _extends({
className: appendComponentNamespace(summaryCardNamespace, 'container')
}, other), render(renderProps));
}
SummaryCardContainer.propTypes = {
/** Render function */
render: PropTypes.func.isRequired,
/** Provide a list of all the summary cards to render in the container */
summaryCards: PropTypes.arrayOf(PropTypes.shape({
id: PropTypes.string.isRequired
})).isRequired
};
export default SummaryCardContainer;