UNPKG

@talend/react-faceted-search

Version:
73 lines (72 loc) 2.88 kB
"use strict"; 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