mirror of
https://github.com/feathericons/feather.git
synced 2023-08-10 21:13:24 +03:00
Make replaceElement function part of the public API
This commit is contained in:
parent
734f3f5114
commit
b3054cb9d4
@ -1,5 +1,6 @@
|
|||||||
import icons from './icons';
|
import icons from './icons';
|
||||||
import toSvg from './to-svg';
|
import toSvg from './to-svg';
|
||||||
import replace from './replace';
|
import replace from './replace';
|
||||||
|
import replaceElement from './replace-element';
|
||||||
|
|
||||||
module.exports = { icons, toSvg, replace };
|
module.exports = { icons, toSvg, replace, replaceElement };
|
||||||
|
43
src/replace-element.js
Normal file
43
src/replace-element.js
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
/* eslint-env browser */
|
||||||
|
import classnames from 'classnames/dedupe';
|
||||||
|
|
||||||
|
import icons from './icons';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Replace a single HTML element with SVG markup
|
||||||
|
* corresponding to the element's `data-feather` attribute value.
|
||||||
|
* @param {HTMLElement} element
|
||||||
|
* @param {Object} attrs
|
||||||
|
*/
|
||||||
|
function replaceElement(element, attrs = {}) {
|
||||||
|
const elementAttrs = getAttrs(element);
|
||||||
|
const name = elementAttrs['data-feather'];
|
||||||
|
delete elementAttrs['data-feather'];
|
||||||
|
|
||||||
|
const svgString = icons[name].toSvg({
|
||||||
|
...attrs,
|
||||||
|
...elementAttrs,
|
||||||
|
...{ class: classnames(attrs.class, elementAttrs.class) },
|
||||||
|
});
|
||||||
|
const svgDocument = new DOMParser().parseFromString(
|
||||||
|
svgString,
|
||||||
|
'image/svg+xml',
|
||||||
|
);
|
||||||
|
const svgElement = svgDocument.querySelector('svg');
|
||||||
|
|
||||||
|
element.parentNode.replaceChild(svgElement, element);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the attributes of an HTML element.
|
||||||
|
* @param {HTMLElement} element
|
||||||
|
* @returns {Object}
|
||||||
|
*/
|
||||||
|
function getAttrs(element) {
|
||||||
|
return Array.from(element.attributes).reduce((attrs, attr) => {
|
||||||
|
attrs[attr.name] = attr.value;
|
||||||
|
return attrs;
|
||||||
|
}, {});
|
||||||
|
}
|
||||||
|
|
||||||
|
export default replaceElement;
|
@ -1,7 +1,5 @@
|
|||||||
/* eslint-env browser */
|
/* eslint-env browser */
|
||||||
import classnames from 'classnames/dedupe';
|
import replaceElement from './replace-element';
|
||||||
|
|
||||||
import icons from './icons';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Replace all HTML elements that have a `data-feather` attribute with SVG markup
|
* Replace all HTML elements that have a `data-feather` attribute with SVG markup
|
||||||
@ -20,41 +18,4 @@ function replace(attrs = {}) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Replace a single HTML element with SVG markup
|
|
||||||
* corresponding to the element's `data-feather` attribute value.
|
|
||||||
* @param {HTMLElement} element
|
|
||||||
* @param {Object} attrs
|
|
||||||
*/
|
|
||||||
function replaceElement(element, attrs = {}) {
|
|
||||||
const elementAttrs = getAttrs(element);
|
|
||||||
const name = elementAttrs['data-feather'];
|
|
||||||
delete elementAttrs['data-feather'];
|
|
||||||
|
|
||||||
const svgString = icons[name].toSvg({
|
|
||||||
...attrs,
|
|
||||||
...elementAttrs,
|
|
||||||
...{ class: classnames(attrs.class, elementAttrs.class) },
|
|
||||||
});
|
|
||||||
const svgDocument = new DOMParser().parseFromString(
|
|
||||||
svgString,
|
|
||||||
'image/svg+xml',
|
|
||||||
);
|
|
||||||
const svgElement = svgDocument.querySelector('svg');
|
|
||||||
|
|
||||||
element.parentNode.replaceChild(svgElement, element);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the attributes of an HTML element.
|
|
||||||
* @param {HTMLElement} element
|
|
||||||
* @returns {Object}
|
|
||||||
*/
|
|
||||||
function getAttrs(element) {
|
|
||||||
return Array.from(element.attributes).reduce((attrs, attr) => {
|
|
||||||
attrs[attr.name] = attr.value;
|
|
||||||
return attrs;
|
|
||||||
}, {});
|
|
||||||
}
|
|
||||||
|
|
||||||
export default replace;
|
export default replace;
|
||||||
|
Loading…
Reference in New Issue
Block a user