carbon-components
Version:
The Carbon Design System is IBM’s open-source design system for products and experiences.
28 lines (24 loc) • 735 B
JavaScript
/**
* Copyright IBM Corp. 2016, 2018
*
* This source code is licensed under the Apache-2.0 license found in the
* LICENSE file in the root directory of this source tree.
*/
function svgToggleClass(svg, name, forceAdd) {
const list = svg.getAttribute('class').trim().split(/\s+/);
const uniqueList = Object.keys(
list.reduce((o, item) => Object.assign(o, { [item]: 1 }), {})
);
const index = uniqueList.indexOf(name);
const found = index >= 0;
const add = forceAdd === undefined ? !found : forceAdd;
if (found === !add) {
if (add) {
uniqueList.push(name);
} else {
uniqueList.splice(index, 1);
}
svg.setAttribute('class', uniqueList.join(' '));
}
}
export default svgToggleClass;