ink-form
Version:
Complex user-friendly form component for React Ink
23 lines (22 loc) • 1.08 kB
JavaScript
import React from 'react';
import { Box, Transform } from 'ink';
import TextInput from 'ink-text-input';
export class StringFormFieldManager {
type = 'string';
renderField = props => (React.createElement(Box, { borderStyle: 'round', width: "100%" },
React.createElement(TextInput, { value: props.value ?? '', onChange: value => {
props.onChange(value);
if (props.field.regex && !props.field.regex.test(value)) {
props.onError(`Value does not conform to regular expression: ${props.field.regex}`);
}
else {
props.onClearError();
}
}, placeholder: props.field.placeholder, onSubmit: () => props.onSetEditingField(undefined), mask: props.field.mask })));
renderValue = props => (React.createElement(Transform, { transform: props.value !== undefined && props.field.mask
? text => text
.split('')
.map(char => '*')
.join('')
: text => text }, props.value));
}