@kineticdata/react
Version:
A React library for the Kinetic Platform
63 lines (62 loc) • 2.32 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.NodeSelect = void 0;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
var _react = _interopRequireDefault(require("react"));
var _Typeahead = require("./Typeahead");
var searchNodes = function searchNodes(_ref) {
var nodes = _ref.nodes,
tasks = _ref.tasks;
return function (field, value, callback) {
return callback({
suggestions: nodes.toList().map(function (node) {
return [node, tasks.get(node.definitionId)];
}).filter(function (_ref2) {
var _ref3 = (0, _slicedToArray2["default"])(_ref2, 2),
node = _ref3[0],
task = _ref3[1];
return node.name.toLowerCase().includes(value.toLowerCase()) || task && task.name.toLowerCase().includes(value.toLowerCase());
}).toArray()
});
};
};
var pairToValue = function pairToValue() {
var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [],
_ref5 = (0, _slicedToArray2["default"])(_ref4, 2),
node = _ref5[0],
task = _ref5[1];
return node && node.name || '';
};
var getStatusProps = function getStatusProps(props) {
return {
info: props["short"] ? 'Type to find a node.' : props.pending ? 'Searching…' : null,
warning: props.error ? 'There was an error searching nodes.' : props.empty ? 'No matching nodes.' : null
};
};
var NodeSelect = exports.NodeSelect = function NodeSelect(props) {
return /*#__PURE__*/_react["default"].createElement(_Typeahead.Typeahead, {
components: props.components || {},
disabled: props.disabled,
multiple: props.multiple,
search: searchNodes(props),
minSearchLength: props.minSearchLength,
getSuggestionValue: pairToValue,
getStatusProps: getStatusProps,
value: props.value,
noAutoHighlight: true,
onChange: function onChange(pair) {
return props.onChange(pair && pair.first());
},
onFocus: props.onFocus,
onHighlight: function onHighlight(pair) {
return props.onHighlight(pair && pair.first());
},
onBlur: props.onBlur,
placeholder: props.placeholder,
id: props.id,
form: props.form
});
};