UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

59 lines (58 loc) 1.91 kB
"use strict"; "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