UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

85 lines (84 loc) 2.86 kB
"use client"; var _Fragment, _Toolbar; import React, { useContext, useMemo } from 'react'; import clsx from 'clsx'; import { convertJsxToString } from "../../../../shared/component-helper.js"; import { Lead } from "../../../../elements/index.js"; import IterateItemContext from "../IterateItemContext.js"; import ArrayItemArea from "../Array/ArrayItemArea.js"; import Toolbar from "../Toolbar/index.js"; import { useSwitchContainerMode } from "../hooks/index.js"; import DoneButton from "./DoneButton.js"; import CancelButton, { useWasNew } from "./CancelButton.js"; import { replaceItemNo } from "../ItemNo/index.js"; import withComponentMarkers from "../../../../shared/helpers/withComponentMarkers.js"; import { Fragment as _Fragment2, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; export default function EditContainer(props) { const { toolbar, toolbarVariant, children, ...rest } = props; const { arrayValue } = useContext(IterateItemContext); let toolbarElement = toolbar; if (toolbarVariant === 'minimumOneItem' && arrayValue.length <= 1) { toolbarElement = _Fragment || (_Fragment = _jsx(_Fragment2, {})); } const hasToolbar = !toolbarElement && (Array.isArray(children) ? children : [children]).some(child => React.isValidElement(child) && child.type === Toolbar); return _jsx(EditContainerWithoutToolbar, { toolbar: hasToolbar ? null : toolbarElement !== null && toolbarElement !== void 0 ? toolbarElement : toolbarVariant !== 'custom' && (_Toolbar || (_Toolbar = _jsxs(Toolbar, { children: [_jsx(DoneButton, {}), _jsx(CancelButton, {})] }))), toolbarVariant: toolbarVariant, ...rest, children: children }); } export function EditContainerWithoutToolbar(props) { const { containerMode, isNew, index, path } = useContext(IterateItemContext); const { children, className, title, titleWhenNew, toolbar, toolbarVariant, ...restProps } = props || {}; const wasNew = useWasNew({ isNew, containerMode }); const itemTitle = useMemo(() => { return replaceItemNo(wasNew && titleWhenNew ? titleWhenNew : title, index); }, [index, title, titleWhenNew, wasNew]); useSwitchContainerMode(path); return _jsxs(ArrayItemArea, { mode: "edit", className: clsx('dnb-forms-section-edit-block', className), ariaLabel: convertJsxToString(itemTitle), toolbarVariant: toolbarVariant, ...restProps, children: [itemTitle && _jsx(Lead, { size: "basis", children: itemTitle }), children, toolbar] }); } EditContainer.DoneButton = DoneButton; EditContainer.CancelButton = CancelButton; withComponentMarkers(EditContainer, { _supportsSpacingProps: true }); withComponentMarkers(EditContainerWithoutToolbar, { _supportsSpacingProps: true }); //# sourceMappingURL=EditContainer.js.map