@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
59 lines (58 loc) • 2.19 kB
JavaScript
"use client";
var _Toolbar, _Toolbar2;
import React, { useContext, useMemo } from 'react';
import clsx from 'clsx';
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";
import withComponentMarkers from "../../../../shared/helpers/withComponentMarkers.js";
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
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 = _jsx(Toolbar, {
children: _jsx(EditButton, {})
}));
}
const hasToolbar = !toolbarElement && (Array.isArray(children) ? children : [children]).some(child => React.isValidElement(child) && child.type === Toolbar);
return _jsxs(ArrayItemArea, {
mode: "view",
ariaLabel: convertJsxToString(itemTitle),
className: clsx('dnb-forms-section-view-block', className),
toolbarVariant: toolbarVariant,
...restProps,
children: [itemTitle && _jsx(Lead, {
size: "basis",
children: itemTitle
}), children, hasToolbar ? null : toolbarElement !== null && toolbarElement !== void 0 ? toolbarElement : toolbarVariant !== 'custom' && (_Toolbar2 || (_Toolbar2 = _jsxs(Toolbar, {
children: [_jsx(EditButton, {}), _jsx(RemoveButton, {})]
})))]
});
}
ViewContainer.EditButton = EditButton;
ViewContainer.RemoveButton = RemoveButton;
withComponentMarkers(ViewContainer, {
_supportsSpacingProps: true
});
export default ViewContainer;
//# sourceMappingURL=ViewContainer.js.map