UNPKG

react-overrides

Version:

Helper for create reusable components through Overrides Pattern

213 lines (179 loc) 5.1 kB
"use strict"; var React = _interopRequireWildcard(require("react")); var _ = _interopRequireDefault(require("..")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } var Option = function Option(props) { return React.createElement("div", null, props.b + 2 * props.a); }; var Container = function Container(props) { return React.createElement("div", null, props.children); }; var OverridableProps = { Option: Option, Container: Container }; var Select = function Select(props) { return React.createElement(Container, _.default, React.createElement(Option, _extends({}, _.default, { a: 1, b: (0, _.default)().b || "x" }))); }; /** * $ExpectError * Pass prop wrong prop value */ var SelectWrongProp = function SelectWrongProp(props) { return React.createElement(Option, _extends({}, _.default, { a: 3, b: "x" })); }; var OverridedSelect = function OverridedSelect() { return React.createElement(Select, { overrides: { Option: { props: { a: 1, b: "1" } }, Container: { props: {} } } }); }; var OverridedSelectPartialProps = function OverridedSelectPartialProps() { return React.createElement(Select, { overrides: { Option: { props: { a: 1 } }, Container: { props: {} } } }); }; var OverridedSelectPartialComponents = function OverridedSelectPartialComponents() { return React.createElement(Select, { overrides: { Option: { props: { a: 1 } } } }); }; /** * $ExpectError * prettier-ignore * Pass prop wrong prop value */ var OverridedWrongProp = function OverridedWrongProp() { return React.createElement(Select, { overrides: { Option: { props: { a: 3, b: "1" } } } }); }; var NewOption = function NewOption(props) { return React.createElement("div", null, "new" + props.b + 4 * props.a); }; var OverridedSelectNewComponent = function OverridedSelectNewComponent() { return React.createElement(Select, { overrides: { Option: { component: NewOption } } }); }; var NewOptionPartial = function NewOptionPartial(props) { return React.createElement("div", null, "new" + props.b); }; var OverridedNewComponentPartial = function OverridedNewComponentPartial() { return React.createElement(Select, { overrides: { Option: { component: NewOptionPartial } } }); }; /** * $ExpectError * prettier-ignore * Pass incompatible component */ var Option11 = function Option11(props) { return React.createElement("div", null, props.b + 2 * props.a); }; var Container11 = function Container11(props) { return React.createElement("div", null, props.children); }; var OverridableProps11 = { Option11: Option11, Container11: Container11 }; var Select11 = function Select11(props) { return React.createElement(Container, null, React.createElement(Option, { a: 1, b: "x" })); }; var NewOptionWrong = function NewOptionWrong(props) { return React.createElement("div", null, "new" + props.b); }; var OverridedNewComponentWrong = function OverridedNewComponentWrong() { return React.createElement(Select11, { overrides: { Option11: { component: NewOptionWrong } } }); }; /** * $ExpectError * prettier-ignore * Pass incompatible component */ var Option22 = function Option22(props) { return React.createElement("div", null, props.b + 2 * props.a); }; var Container22 = function Container22(props) { return React.createElement("div", null, props.children); }; var OverridableProps22 = { Option22: Option22, Container22: Container22 }; var Select22 = function Select22(props) { return React.createElement(Container, null, React.createElement(Option, { a: 1, b: "x" })); }; var NewOptionWrongExtra = function NewOptionWrongExtra(props) { return React.createElement("div", null, "new" + props.b); }; var OverridedNewComponentWrongExtra = function OverridedNewComponentWrongExtra() { return React.createElement(Select22, { overrides: { Option22: { component: NewOptionWrong } } }); };