suomifi-ui-components
Version:
Suomi.fi UI component library
41 lines (38 loc) • 1.15 kB
JavaScript
import { useState, useEffect } from 'react';
import { useEnhancedEffect } from '../../../utils/common/common.js';
import { useConfig } from '../ConfigProvider/ConfigProvider.js';
var autoId = 0;
var clientRender = false;
var generateNextId = function generateNextId(prefix) {
autoId += 1;
if (prefix) {
return "".concat(prefix, "-").concat(autoId);
}
return autoId;
};
var useGeneratedId = function useGeneratedId(propId, idPrefix) {
var startId = propId || (clientRender ? generateNextId() : null);
var _a = useState(startId),
generatedId = _a[0],
setId = _a[1];
useEnhancedEffect(function () {
if (generatedId === null) {
setId(generateNextId(idPrefix));
}
}, []);
useEffect(function () {
if (!clientRender) {
clientRender = true;
}
}, []);
return generatedId != null ? String(generatedId) : undefined;
};
var AutoId = function AutoId(_a) {
var id = _a.id,
children = _a.children;
var idPrefix = useConfig().idPrefix;
var generatedId = useGeneratedId(id, idPrefix);
return children(!!generatedId ? generatedId : '');
};
export { AutoId };
//# sourceMappingURL=AutoId.js.map