@talend/react-faceted-search
Version:
73 lines (72 loc) • 2.88 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.AddFacetPopoverRowItemCategory = exports.AddFacetPopoverRowItem = void 0;
var _react = require("react");
var _propTypes = _interopRequireDefault(require("prop-types"));
var _facetedSearch = require("../../../facetedSearch.propTypes");
var _AddFacetPopoverRowButton = require("../AddFacetPopoverRowButton");
var _lodash = require("lodash");
var _jsxRuntime = require("react/jsx-runtime");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
const filterByAttribute = badgeDefinition => badge => badge.properties.attribute === badgeDefinition.properties.attribute;
const isButtonDisabled = (badges, badgeDefinition, occurrences) => {
const badgePerFacet = parseInt(badgeDefinition.metadata.badgePerFacet, 10);
if ((0, _lodash.isNaN)(badgePerFacet)) {
return false;
}
return occurrences >= badgePerFacet;
};
const AddFacetPopoverRowItem = ({
badgeDefinition,
id,
label,
onClick,
badges,
t
}) => {
const occurrences = (0, _react.useMemo)(() => badges.filter(filterByAttribute(badgeDefinition)).length, [badges, badgeDefinition]);
const isDisabled = (0, _react.useMemo)(() => isButtonDisabled(badges, badgeDefinition, occurrences), [badges, badgeDefinition, occurrences]);
const onClickRow = event => {
onClick(event, badgeDefinition);
};
const disabledLabel = t('ADD_FACET_ROW_DISABLED_LABEL', {
count: occurrences,
badgeLabel: label,
defaultValue: 'You can only apply the {{badgeLabel}} filter once',
defaultValue_other: 'You can only apply the {{badgeLabel}} filter {{count}} times'
});
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_AddFacetPopoverRowButton.AddFacetPopoverRowButton, {
id: `${id}-row-button-${label}`,
label: label,
onClick: onClickRow,
disabledLabel: isDisabled ? disabledLabel : ''
});
};
exports.AddFacetPopoverRowItem = AddFacetPopoverRowItem;
AddFacetPopoverRowItem.propTypes = {
id: _propTypes.default.string.isRequired,
badgeDefinition: _facetedSearch.badgeFacetedPropTypes.isRequired,
label: _propTypes.default.string.isRequired,
onClick: _propTypes.default.func.isRequired,
badges: _propTypes.default.array.isRequired,
t: _propTypes.default.func.isRequired
};
const AddFacetPopoverRowItemCategory = ({
id,
label,
onClick
}) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_AddFacetPopoverRowButton.AddFacetPopoverRowButton, {
id: `${id}-row-button-${label}`,
label: label,
onClick: () => onClick(label),
isCategory: true
});
exports.AddFacetPopoverRowItemCategory = AddFacetPopoverRowItemCategory;
AddFacetPopoverRowItemCategory.propTypes = {
id: _propTypes.default.string.isRequired,
label: _propTypes.default.string.isRequired,
onClick: _propTypes.default.func.isRequired
};
//# sourceMappingURL=AddFacetPopoverRowItem.component.js.map