@grafana/ui
Version:
Grafana Components Library
1 lines • 5.79 kB
Source Map (JSON)
{"version":3,"file":"Input.mjs","sources":["../../../../../../src/components/Forms/Legacy/Input/Input.tsx"],"sourcesContent":["import classNames from 'classnames';\nimport { PureComponent, ChangeEvent } from 'react';\nimport * as React from 'react';\n\nimport { ValidationEvents, ValidationRule } from '../../../../types/input';\nimport { validate, EventsWithValidation, hasValidationEvent } from '../../../../utils/validate';\n\n/** @deprecated Please use the `Input` component, which does not require this enum. */\nexport enum LegacyInputStatus {\n Invalid = 'invalid',\n Valid = 'valid',\n}\n\nexport interface Props extends React.HTMLProps<HTMLInputElement> {\n validationEvents?: ValidationEvents;\n hideErrorMessage?: boolean;\n inputRef?: React.LegacyRef<HTMLInputElement>;\n\n // Override event props and append status as argument\n onBlur?: (event: React.FocusEvent<HTMLInputElement>, status?: LegacyInputStatus) => void;\n onFocus?: (event: React.FocusEvent<HTMLInputElement>, status?: LegacyInputStatus) => void;\n onChange?: (event: React.ChangeEvent<HTMLInputElement>, status?: LegacyInputStatus) => void;\n}\n\ninterface State {\n error: string | null;\n}\n\n/** @deprecated Please use the `Input` component. {@link https://developers.grafana.com/ui/latest/index.html?path=/story/forms-input--simple See Storybook for example.} */\nexport class Input extends PureComponent<Props, State> {\n static defaultProps = {\n className: '',\n };\n\n state: State = {\n error: null,\n };\n\n get status() {\n return this.state.error ? LegacyInputStatus.Invalid : LegacyInputStatus.Valid;\n }\n\n get isInvalid() {\n return this.status === LegacyInputStatus.Invalid;\n }\n\n validatorAsync = (validationRules: ValidationRule[]) => {\n return (evt: ChangeEvent<HTMLInputElement>) => {\n const errors = validate(evt.target.value, validationRules);\n this.setState((prevState) => {\n return { ...prevState, error: errors ? errors[0] : null };\n });\n };\n };\n\n populateEventPropsWithStatus = (restProps: any, validationEvents: ValidationEvents | undefined) => {\n const inputElementProps = { ...restProps };\n if (!validationEvents) {\n return inputElementProps;\n }\n Object.keys(EventsWithValidation).forEach((eventName) => {\n if (hasValidationEvent(eventName as EventsWithValidation, validationEvents) || restProps[eventName]) {\n inputElementProps[eventName] = async (evt: ChangeEvent<HTMLInputElement>) => {\n evt.persist(); // Needed for async. https://reactjs.org/docs/events.html#event-pooling\n if (hasValidationEvent(eventName as EventsWithValidation, validationEvents)) {\n await this.validatorAsync(validationEvents[eventName]).apply(this, [evt]);\n }\n if (restProps[eventName]) {\n restProps[eventName].apply(null, [evt, this.status]);\n }\n };\n }\n });\n return inputElementProps;\n };\n\n render() {\n const { validationEvents, className, hideErrorMessage, inputRef, ...restProps } = this.props;\n const { error } = this.state;\n const inputClassName = classNames('gf-form-input', { invalid: this.isInvalid }, className);\n const inputElementProps = this.populateEventPropsWithStatus(restProps, validationEvents);\n\n return (\n <div style={{ flexGrow: 1 }}>\n <input {...inputElementProps} ref={inputRef} className={inputClassName} />\n {error && !hideErrorMessage && <span>{error}</span>}\n </div>\n );\n }\n}\n"],"names":["LegacyInputStatus"],"mappings":"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"}