UNPKG

@kineticdata/react

Version:
113 lines (111 loc) 4.86 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"]; Object.defineProperty(exports, "__esModule", { value: true }); exports.TeamSelect = void 0; var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray")); var _react = _interopRequireDefault(require("react")); var _Typeahead = require("./Typeahead"); var _apis = require("../../apis"); var _immutable = require("immutable"); var fields = { name: 'Full Name', localName: 'Local Name' }; var searchTeams = function searchTeams(_ref) { var _ref$search = _ref.search, search = _ref$search === void 0 ? (0, _immutable.Map)() : _ref$search; return function (field, value, callback) { return (0, _apis.fetchTeams)({ q: Object.keys(fields).filter(function (searchField) { return !field || searchField === field; }).map(function (field) { return "".concat(field, " =* \"").concat(value, "\""); }).join(' OR '), limit: search.get('limit') || 25, include: search.get('include') || '', "public": !!search.get('public') }).then(function (_ref2) { var teams = _ref2.teams, error = _ref2.error, nextPageToken = _ref2.nextPageToken; return { suggestions: teams || [], error: error, nextPageToken: nextPageToken }; }).then(callback); }; }; var teamToValue = function teamToValue(team) { return team && team.get('name') || ''; }; // Converts a typed in value to an option object. Used when adding custom values // when allowNew is true. var valueToCustomTeam = function valueToCustomTeam(_ref3) { var allowNew = _ref3.allowNew; return function (value) { return value.length > 0 ? typeof allowNew !== 'function' || allowNew(value) ? { name: value } : null : null; }; }; var getStatusProps = function getStatusProps(_ref4) { var _ref4$search = _ref4.search, search = _ref4$search === void 0 ? (0, _immutable.Map)() : _ref4$search, _ref4$messages = _ref4.messages, _ref4$messages2 = _ref4$messages === void 0 ? {} : _ref4$messages, _ref4$messages2$short = _ref4$messages2["short"], _short = _ref4$messages2$short === void 0 ? 'Type to find a team.' : _ref4$messages2$short, _ref4$messages2$empty = _ref4$messages2.empty, empty = _ref4$messages2$empty === void 0 ? 'No matching teams.' : _ref4$messages2$empty, _ref4$messages2$custo = _ref4$messages2.custom, custom = _ref4$messages2$custo === void 0 ? 'No matching teams. Type to enter a custom option.' : _ref4$messages2$custo, _ref4$messages2$pendi = _ref4$messages2.pending, pending = _ref4$messages2$pendi === void 0 ? 'Searching...' : _ref4$messages2$pendi, _ref4$messages2$more = _ref4$messages2.more, more = _ref4$messages2$more === void 0 ? "Too many teams, first ".concat(search.get('limit') || 25, " shown. Please refine your search.") : _ref4$messages2$more, _ref4$messages2$error = _ref4$messages2.error, error = _ref4$messages2$error === void 0 ? 'There was an error fetching teams.' : _ref4$messages2$error; return function (props) { return { meta: props.searchField ? "Find Teams by ".concat(fields[props.searchField]) : null, info: props["short"] ? _short : props.pending ? pending : null, warning: props.error || props.more || props.empty ? props.error && props.error.key === 'too_many_matches' ? 'Too many teams to display. Please refine your search below.' : props.more ? more : props.empty && !props.custom ? empty : props.empty && props.custom ? custom : error : null, clearFilterField: props.searchField ? props.setSearchField(null) : null, filterFieldOptions: props.error && props.error.key === 'too_many_matches' ? Object.entries(props.error.errorData.matches).map(function (_ref5) { var _ref6 = (0, _slicedToArray2["default"])(_ref5, 2), field = _ref6[0], count = _ref6[1]; return { field: field, count: count, label: fields[field], value: props.value, onClick: props.setSearchField(field) }; }) : null }; }; }; var TeamSelect = exports.TeamSelect = function TeamSelect(props) { return /*#__PURE__*/_react["default"].createElement(_Typeahead.Typeahead, { components: props.components || {}, disabled: props.disabled, multiple: props.multiple, custom: props.allowNew && valueToCustomTeam(props), search: searchTeams(props), minSearchLength: props.minSearchLength, getSuggestionValue: teamToValue, getStatusProps: getStatusProps(props), value: props.value, onChange: props.onChange, onFocus: props.onFocus, onBlur: props.onBlur, placeholder: props.placeholder, id: props.id, form: props.form, invalid: props.invalid }); };