@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
42 lines • 1.48 kB
JavaScript
import React, { useMemo } from 'react';
import { useItem } from "../hooks/index.js";
import { useTranslation } from "../../hooks/index.js";
import { convertJsxToString } from "../../../../shared/component-helper.js";
import { replaceItemNo } from "./ItemNo.js";
export function useIterateItemNo({
label: labelProp,
labelSuffix = undefined,
required = undefined
}) {
const {
index: iterateIndex
} = useItem() || {};
const {
optionalLabelSuffix
} = useTranslation().Field;
const labelSuffixText = useMemo(() => {
if (typeof labelSuffix !== 'boolean' && (required === false || typeof labelSuffix !== 'undefined')) {
return labelSuffix !== null && labelSuffix !== void 0 ? labelSuffix : optionalLabelSuffix;
}
return '';
}, [required, labelSuffix, optionalLabelSuffix]);
return useMemo(() => {
let content = labelProp;
if (iterateIndex !== undefined) {
content = replaceItemNo(labelProp, iterateIndex);
}
if (labelSuffixText) {
if (convertJsxToString(content).includes(optionalLabelSuffix)) {
return content;
}
if (typeof content === 'string') {
return content + ' ' + labelSuffixText;
}
if (React.isValidElement(content)) {
return React.createElement(React.Fragment, null, content, ' ', labelSuffixText);
}
}
return content;
}, [iterateIndex, labelProp, labelSuffixText, optionalLabelSuffix]);
}
//# sourceMappingURL=useIterateItemNo.js.map