@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
48 lines (47 loc) • 1.54 kB
JavaScript
;
"use client";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = require("react");
var _clsx = require("clsx");
var _Accordion = _interopRequireDefault(require("../accordion/Accordion.js"));
var _FilterContext = require("./FilterContext.js");
var _jsxRuntime = require("react/jsx-runtime");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
function FilterItem({
label,
filterKey,
defaultOpen,
className,
onOpenChange,
children
}) {
var _ref;
const context = (0, _react.useContext)(_FilterContext.FilterContext);
if (!context) {
throw new Error('Filter.Item must be used inside a Filter.Root.');
}
const remembered = context.getAccordionOpen(filterKey);
const isOpen = (_ref = remembered !== null && remembered !== void 0 ? remembered : defaultOpen) !== null && _ref !== void 0 ? _ref : false;
const handleChange = (0, _react.useCallback)(({
expanded
}) => {
context.setAccordionOpen(filterKey, expanded);
onOpenChange?.(expanded);
}, [context, filterKey, onOpenChange]);
return (0, _jsxRuntime.jsx)(_Accordion.default, {
variant: "tertiary",
title: label,
expanded: isOpen,
onChange: handleChange,
className: (0, _clsx.clsx)('dnb-filter__item', className),
children: (0, _jsxRuntime.jsx)("div", {
className: "dnb-filter__item-content",
children: children
})
});
}
var _default = exports.default = FilterItem;
//# sourceMappingURL=FilterItem.js.map