UNPKG

react-test-attributes

Version:

React library to add data-* attributes to DOM elements.

49 lines (36 loc) 1.47 kB
'use strict'; 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