suomifi-ui-components
Version:
Suomi.fi UI component library
43 lines (39 loc) • 1.18 kB
JavaScript
;
var React = require('react');
var common = require('../../../utils/common/common.js');
var ConfigProvider = require('../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 = React.useState(startId),
generatedId = _a[0],
setId = _a[1];
common.useEnhancedEffect(function () {
if (generatedId === null) {
setId(generateNextId(idPrefix));
}
}, []);
React.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 = ConfigProvider.useConfig().idPrefix;
var generatedId = useGeneratedId(id, idPrefix);
return children(!!generatedId ? generatedId : '');
};
exports.AutoId = AutoId;
//# sourceMappingURL=AutoId.js.map