UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

69 lines (68 loc) 3.8 kB
"use strict"; "use client"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = require("react"); var _clsx = require("clsx"); var _Context = _interopRequireDefault(require("../../shared/Context.js")); var _FilterContext = require("./FilterContext.js"); var _useSharedState = require("../../shared/helpers/useSharedState.js"); var _SpacingUtils = require("../space/SpacingUtils.js"); var _withComponentMarkers = _interopRequireDefault(require("../../shared/helpers/withComponentMarkers.js")); var _P = _interopRequireDefault(require("../../elements/P.js")); var _HeightAnimation = _interopRequireDefault(require("../HeightAnimation.js")); var _Skeleton = _interopRequireDefault(require("../skeleton/Skeleton.js")); var _jsxRuntime = require("react/jsx-runtime"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } function FilterResultCount({ connectedTo, resultCount: resultCountProp, alwaysVisible, children, className, ...spacingRest }) { var _ref, _ref2, _ref3, _sharedData$resultLoa, _context$hasActiveFil, _lastVisibleResultCou; const sharedContext = (0, _react.useContext)(_Context.default); const { resultCountMessage } = sharedContext.getTranslation({}).Filter; const context = (0, _react.useContext)(_FilterContext.FilterContext); const connectedId = (0, _react.useContext)(_FilterContext.FilterConnectedIdContext); const resolvedId = (_ref = connectedTo !== null && connectedTo !== void 0 ? connectedTo : connectedId) !== null && _ref !== void 0 ? _ref : context?.id; const { data: sharedData } = (0, _useSharedState.useSharedState)(resolvedId); const resultCount = (_ref2 = resultCountProp !== null && resultCountProp !== void 0 ? resultCountProp : sharedData?.resultCount) !== null && _ref2 !== void 0 ? _ref2 : context?.resultCount; const isLoading = (_ref3 = (_sharedData$resultLoa = sharedData?.resultLoading) !== null && _sharedData$resultLoa !== void 0 ? _sharedData$resultLoa : context?.resultLoading) !== null && _ref3 !== void 0 ? _ref3 : false; const hasActiveFilters = context?.behavior === 'manual' ? context.appliedState.search.length > 0 || Object.keys(context.appliedState.filters).length > 0 : (_context$hasActiveFil = context?.hasActiveFilters) !== null && _context$hasActiveFil !== void 0 ? _context$hasActiveFil : Boolean(sharedData?.search || sharedData?.filters && Object.keys(sharedData.filters).length > 0); const spacingProps = (0, _SpacingUtils.useSpacing)(spacingRest, { className: (0, _clsx.clsx)('dnb-filter__result-count', className) }); const isVisible = (resultCount !== undefined || isLoading) && (alwaysVisible || hasActiveFilters); const lastVisibleResultCountRef = (0, _react.useRef)(undefined); if (isVisible && resultCount !== undefined) { lastVisibleResultCountRef.current = resultCount; } const displayedResultCount = isVisible ? resultCount : (_lastVisibleResultCou = lastVisibleResultCountRef.current) !== null && _lastVisibleResultCou !== void 0 ? _lastVisibleResultCou : resultCount; const message = children || resultCountMessage.replace('%s', String(displayedResultCount !== null && displayedResultCount !== void 0 ? displayedResultCount : 0)); return (0, _jsxRuntime.jsx)(_HeightAnimation.default, { open: isVisible, className: "dnb-filter__result-count-wrapper", children: (0, _jsxRuntime.jsx)(_Skeleton.default, { show: isLoading, children: (0, _jsxRuntime.jsx)(_P.default, { top: "small", ...spacingProps, children: message }) }) }); } (0, _withComponentMarkers.default)(FilterResultCount, { _supportsSpacingProps: true }); var _default = exports.default = FilterResultCount; //# sourceMappingURL=FilterResultCount.js.map