UNPKG

ra-core

Version:

Core components of react-admin, a frontend Framework for building admin applications on top of REST services, using ES6, React

39 lines 2.47 kB
import * as React from 'react'; import { useInput } from "../form/useInput.js"; import { useChoices } from "../form/choices/useChoices.js"; import { useChoicesContext } from "../form/choices/useChoicesContext.js"; import { isRequired } from "../form/validation/validate.js"; import { FieldTitle } from "../util/FieldTitle.js"; export const AutocompleteInput = (props) => { const { allChoices, source, setFilters, filterValues } = useChoicesContext(props); const { getChoiceText } = useChoices(props); const { field, fieldState } = useInput({ source, ...props }); return (React.createElement("div", null, React.createElement("div", null, React.createElement(FieldTitle, { label: props.label, source: props.source, resource: props.resource, isRequired: isRequired(props.validate) })), React.createElement("input", { type: "text", value: filterValues['q'], onChange: e => setFilters({ ...filterValues, q: e.target.value }) }), React.createElement("button", { type: "button", onClick: event => { event.preventDefault(); field.onChange([]); } }, "Clear value"), React.createElement("ul", null, allChoices?.map(choice => (React.createElement("li", { key: choice.id }, React.createElement("label", null, React.createElement("input", { name: field.name, type: props.multiple ? 'checkbox' : 'radio', value: choice.id, onChange: event => { const newValue = event.target.checked ? props.multiple ? [...field.value, choice.id] : choice.id : props.multiple ? field.value.filter((v) => v !== choice.id) : null; field.onChange(newValue); }, checked: props.multiple ? field.value.includes(choice.id) : // eslint-disable-next-line eqeqeq field.value == choice.id, "aria-describedby": fieldState.error ? `error-${props.source}` : undefined }), getChoiceText(choice)))))), fieldState.error ? (React.createElement("p", { id: `error-${props.source}`, style: { color: 'red' } }, fieldState.error.message)) : null)); }; //# sourceMappingURL=AutocompleteInput.js.map