@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
47 lines • 1.71 kB
JavaScript
import _includesInstanceProperty from "core-js-pure/stable/instance/includes.js";
import { isValidElement, 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";
import { Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
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) {
var _context;
if (_includesInstanceProperty(_context = convertJsxToString(content)).call(_context, optionalLabelSuffix)) {
return content;
}
if (typeof content === 'string') {
return content + ' ' + labelSuffixText;
}
if (isValidElement(content)) {
return _jsxs(_Fragment, {
children: [content, ' ', labelSuffixText]
});
}
}
return content;
}, [iterateIndex, labelProp, labelSuffixText, optionalLabelSuffix]);
}
//# sourceMappingURL=useIterateItemNo.js.map