@atlassian/aui
Version:
Atlassian User Interface library
23 lines (19 loc) • 704 B
JavaScript
import $ from '../jquery';
function replaceAttributeForID($clone, id, value, attribute) {
$clone
.find(`[${attribute}]`)
.attr(attribute, (i, oldValue) => (id === oldValue ? value : undefined));
}
function setCorrespondingTriggersID($clone, id, uuid) {
replaceAttributeForID($clone, id, uuid, 'aria-controls');
replaceAttributeForID($clone, id, uuid, 'aria-owns');
}
export default function deduplicateIDs($clone, uidFunction) {
let wrapper = $('<div></div>');
wrapper.append($clone);
wrapper.find('[id]').each((i, el) => {
const uuid = uidFunction(`${el.id}-`);
setCorrespondingTriggersID(wrapper, el.id, uuid);
el.id = uuid;
});
}