UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

77 lines (76 loc) 3.13 kB
"use strict"; "use client"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = require("react"); var _clsx = require("clsx"); var _Skeleton = _interopRequireDefault(require("../skeleton/Skeleton.js")); var _useSharedState = require("../../shared/helpers/useSharedState.js"); var _FilterContext = require("./FilterContext.js"); var _HeightAnimation = _interopRequireDefault(require("../height-animation/HeightAnimation.js")); var _SpacingUtils = require("../space/SpacingUtils.js"); var _withComponentMarkers = _interopRequireDefault(require("../../shared/helpers/withComponentMarkers.js")); var _AriaLive = _interopRequireDefault(require("../aria-live/AriaLive.js")); var _Context = _interopRequireDefault(require("../../shared/Context.js")); var _jsxRuntime = require("react/jsx-runtime"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } function FilterContent({ connectedTo, className, children, ...spacingRest }) { var _ref, _data$resultLoading, _data$resultCount; const context = (0, _react.useContext)(_FilterContext.FilterContext); const sharedContext = (0, _react.useContext)(_Context.default); const { resultCountMessage, noResultsMessage } = sharedContext.getTranslation({}).Filter; const resolvedId = connectedTo !== null && connectedTo !== void 0 ? connectedTo : context?.id; if (!resolvedId && !context) { throw new Error('Filter.Content requires a connectedTo prop or must be used inside a Filter.Root.'); } const { data } = (0, _useSharedState.useSharedState)(resolvedId); const isLoading = (_ref = (_data$resultLoading = data?.resultLoading) !== null && _data$resultLoading !== void 0 ? _data$resultLoading : context?.resultLoading) !== null && _ref !== void 0 ? _ref : false; const resultCount = (_data$resultCount = data?.resultCount) !== null && _data$resultCount !== void 0 ? _data$resultCount : context?.resultCount; const hadLoading = (0, _react.useRef)(false); if (isLoading) { hadLoading.current = true; } const ariaLiveAnnouncement = (() => { if (isLoading || resultCount === undefined) { return ''; } if (resultCount === 0) { return noResultsMessage; } return resultCountMessage.replace('%s', String(resultCount)); })(); const spacingProps = (0, _SpacingUtils.useSpacing)(spacingRest, { className: (0, _clsx.clsx)('dnb-filter__content', className) }); return (0, _jsxRuntime.jsxs)(_FilterContext.FilterConnectedIdContext, { value: resolvedId, children: [(0, _jsxRuntime.jsx)(_Skeleton.default, { show: isLoading, ...spacingProps, children: hadLoading.current ? (0, _jsxRuntime.jsx)(_HeightAnimation.default, { children: children }) : children }), (0, _jsxRuntime.jsx)(_AriaLive.default, { priority: "high", delay: 1000, children: ariaLiveAnnouncement })] }); } (0, _withComponentMarkers.default)(FilterContent, { _supportsSpacingProps: true }); var _default = exports.default = FilterContent; //# sourceMappingURL=FilterContent.js.map