@talend/react-components
Version:
Set of react components.
78 lines (76 loc) • 2.77 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.ItemOption = ItemOption;
var _react = require("react");
var _propTypes = _interopRequireDefault(require("prop-types"));
var _classnames = _interopRequireDefault(require("classnames"));
var _gridrow = require("../VirtualizedList/utils/gridrow");
var _ItemOptionModule = _interopRequireDefault(require("./ItemOption.module.scss"));
var _Emphasis = _interopRequireDefault(require("../Emphasis/Emphasis.component"));
var _jsxRuntime = require("react/jsx-runtime");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
class ItemOptionRow extends _react.Component {
static getDerivedStateFromProps(props) {
return {
item: (0, _gridrow.getRowData)(props.parent, props.index)
};
}
constructor(props) {
super(props);
this.state = {};
}
shouldComponentUpdate(nextProps, nextState) {
const oldData = this.state.item;
const newData = nextState.item;
return oldData !== newData && ['selected', 'value', 'name', 'searchTerm'].some(attr => oldData[attr] !== newData[attr]);
}
render() {
const item = this.state.item;
const id = `${item.id || item.value}`;
return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
className: (0, _classnames.default)('form-group', _ItemOptionModule.default.row, 'tc-multi-select-item'),
style: this.props.style,
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
className: "checkbox",
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("label", {
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("input", {
id: `checkbox-${id}`,
type: "checkbox",
checked: !!item.selected,
onChange: event => this.props.parent.props.onRowClick({
event,
rowData: item.value
})
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
className: `${_ItemOptionModule.default.item} control-label`,
htmlFor: `checkbox-${id}`,
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Emphasis.default, {
text: item.name,
value: item.searchTerm
})
})]
})
})
});
}
}
ItemOptionRow.propTypes = {
style: _propTypes.default.object,
index: _propTypes.default.number,
parent: _propTypes.default.shape({
props: _propTypes.default.shape({
collection: _propTypes.default.array,
onRowClick: _propTypes.default.func
})
})
};
// eslint-disable-next-line import/prefer-default-export
function ItemOption(props) {
return /*#__PURE__*/(0, _jsxRuntime.jsx)(ItemOptionRow, {
...props
});
}
ItemOption.rowHeight = 40;
//# sourceMappingURL=ItemOption.component.js.map