@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
51 lines (50 loc) • 2.15 kB
JavaScript
"use client";
import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
var _Toolbar, _Toolbar2;
import React, { useContext, useMemo } from 'react';
import classnames from 'classnames';
import { convertJsxToString } from "../../../../shared/component-helper.js";
import { Lead } from "../../../../elements/index.js";
import ArrayItemArea from "../Array/ArrayItemArea.js";
import IterateItemContext from "../IterateItemContext.js";
import Toolbar from "../Toolbar/index.js";
import EditButton from "./EditButton.js";
import RemoveButton from "./RemoveButton.js";
import { replaceItemNo } from "../ItemNo/index.js";
function ViewContainer(props) {
const {
children,
className,
title,
toolbar,
toolbarVariant,
...restProps
} = props || {};
const {
index,
arrayValue
} = useContext(IterateItemContext);
const itemTitle = useMemo(() => {
return replaceItemNo(title, index);
}, [index, title]);
let toolbarElement = toolbar;
if (toolbarVariant === 'minimumOneItem' && arrayValue.length <= 1) {
toolbarElement = _Toolbar || (_Toolbar = React.createElement(Toolbar, null, React.createElement(EditButton, null)));
}
const hasToolbar = !toolbarElement && React.Children.toArray(children).some(child => {
return (child === null || child === void 0 ? void 0 : child['type']) === Toolbar;
});
return React.createElement(ArrayItemArea, _extends({
mode: "view",
ariaLabel: convertJsxToString(itemTitle),
className: classnames('dnb-forms-section-view-block', className),
toolbarVariant: toolbarVariant
}, restProps), itemTitle && React.createElement(Lead, {
size: "basis"
}, itemTitle), children, hasToolbar ? null : toolbarElement !== null && toolbarElement !== void 0 ? toolbarElement : toolbarVariant !== 'custom' && (_Toolbar2 || (_Toolbar2 = React.createElement(Toolbar, null, React.createElement(EditButton, null), React.createElement(RemoveButton, null)))));
}
ViewContainer.EditButton = EditButton;
ViewContainer.RemoveButton = RemoveButton;
ViewContainer._supportsSpacingProps = true;
export default ViewContainer;
//# sourceMappingURL=ViewContainer.js.map