@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
85 lines (84 loc) • 2.86 kB
JavaScript
"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