@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
59 lines (58 loc) • 1.91 kB
JavaScript
;
"use client";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = require("react");
var _Button = _interopRequireDefault(require("../button/Button.js"));
var _FilterContext = require("./FilterContext.js");
var _index = require("../../icons/index.js");
var _Icon = _interopRequireDefault(require("../icon/Icon.js"));
var _Context = _interopRequireDefault(require("../../shared/Context.js"));
var _jsxRuntime = require("react/jsx-runtime");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
const panelToggleIcon = _Icon.default.transition({
closed: _index.filter,
open: _index.close
});
function FilterPanelButton({
children,
onClick,
...rest
}) {
const context = (0, _react.useContext)(_FilterContext.FilterContext);
const sharedContext = (0, _react.useContext)(_Context.default);
const {
panelButtonLabel
} = sharedContext.getTranslation({}).Filter;
if (!context) {
throw new Error('Filter.PanelButton must be used inside a Filter.Root.');
}
const {
panelOpen,
setPanelOpen,
panelButtonRef
} = context;
const localRef = (0, _react.useRef)(null);
(0, _react.useEffect)(() => {
panelButtonRef.current = localRef.current;
}, [panelButtonRef]);
const handleClick = (0, _react.useCallback)(event => {
setPanelOpen(!panelOpen);
onClick?.(event);
}, [panelOpen, setPanelOpen, onClick]);
return (0, _jsxRuntime.jsx)(_Button.default, {
variant: "tertiary",
icon: panelToggleIcon,
iconPosition: "left",
transitionState: panelOpen ? 'open' : 'closed',
"aria-expanded": panelOpen,
ref: localRef,
onClick: handleClick,
...rest,
children: children !== null && children !== void 0 ? children : panelButtonLabel
});
}
var _default = exports.default = FilterPanelButton;
//# sourceMappingURL=FilterPanelButton.js.map