UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

48 lines (47 loc) 1.64 kB
"use client"; import React, { useCallback, useContext, useMemo } from 'react'; import clsx from 'clsx'; import Button from "../../../../components/Button.js"; import { add } from "../../../../icons/index.js"; import IterateItemContext from "../IterateItemContext.js"; import PushContainerContext from "./PushContainerContext.js"; import { convertJsxToString } from "../../../../shared/component-helper.js"; import { jsx as _jsx } from "react/jsx-runtime"; function OpenButton(props) { const { className, text, children, ...restProps } = props; const { switchContainerMode } = useContext(IterateItemContext) || {}; const { entries } = useContext(PushContainerContext) || {}; const handleClick = useCallback(() => { switchContainerMode === null || switchContainerMode === void 0 || switchContainerMode('edit'); }, [switchContainerMode]); const content = useMemo(() => { if (children || text) { const str = convertJsxToString(children || text); if (str.includes('{nextItemNo}')) { const nextItemNo = ((entries === null || entries === void 0 ? void 0 : entries.length) || 0) + 1; return str.replace('{nextItemNo}', String(nextItemNo)); } } return children || text; }, [entries === null || entries === void 0 ? void 0 : entries.length, children, text]); return _jsx(Button, { className: clsx('dnb-forms-iterate__open-button', className), variant: "secondary", icon: add, iconPosition: "left", onClick: handleClick, ...restProps, children: content }); } export default OpenButton; //# sourceMappingURL=OpenButton.js.map