react-test-attributes
Version:
React library to add data-* attributes to DOM elements.
49 lines (36 loc) • 1.47 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var React = require('react');
var tslib = require('tslib');
var ReactIs = require('react-is');
var TestConfigContext =
/*#__PURE__*/
React.createContext({});
TestConfigContext.displayName = 'TestAttributesConfigContext';
var defaultConfig = {
suffix: 'testid',
enableInProductionMode: false
};
var TestAttribute = function TestAttribute(_a) {
var children = _a.children,
props = tslib.__rest(_a, ["children"]);
var isProduction = "development" === 'production';
var config = Object.assign({}, defaultConfig, React.useContext(TestConfigContext), props);
function withTestAttribute(nodes) {
var _a, _b;
var node = React.Children.only(nodes);
var testAttributeName = "data-" + config.suffix;
if (ReactIs.isFragment(node)) {
return React.createElement('div', (_a = {}, _a[testAttributeName] = config.id, _a), node);
} else if (ReactIs.isElement(node)) {
return React.cloneElement(node, (_b = {}, _b[testAttributeName] = config.id, _b));
} else {
return node;
}
}
return React.createElement(React.Fragment, null, !config.enableInProductionMode && isProduction ? children : withTestAttribute(children));
};
var TestAttributesConfig = TestConfigContext.Provider;
exports.TestAttributesConfig = TestAttributesConfig;
exports.default = TestAttribute;
//# sourceMappingURL=react-test-attributes.cjs.development.js.map