UNPKG

@kineticdata/react

Version:
63 lines (62 loc) 2.32 kB
"use strict"; 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 }); };