@appbuckets/react-ui-forms
Version:
An utilities package to manage and create Form using AppBuckets ReactUI
57 lines (54 loc) • 1.54 kB
JavaScript
import { __assign } from '../_virtual/_tslib.js';
import * as React from 'react';
import Input from '@appbuckets/react-ui/Input';
import { createHookedField } from '../utils/createHookedField.js';
/* --------
* Component Definition
* -------- */
var HookedInput = createHookedField({
displayName: 'HookedInput',
Component: function HookedInputComponent(props) {
var innerRef = props.innerRef,
meta = props.meta,
rest = props.rest;
return React.createElement(
Input,
__assign({}, rest, meta.appearance, { ref: innerRef, hint: meta.message })
);
},
parseValue: function (_a) {
var props = _a.props;
/** Get value and type */
var _b = props || {},
value = _b.value,
_c = _b.type,
type = _c === void 0 ? 'text' : _c;
/** If value is undefined, return null */
if (value === undefined || value === null) {
return null;
}
/** If type is a number, cast value */
if (type === 'number') {
var casted = value === '' ? null : Number(value);
if (value === null || Number.isNaN(casted)) {
return null;
}
return casted;
}
/** Return the value as string */
return value;
},
formatValue: function (value) {
/** Return a string as is */
if (typeof value === 'string') {
return value;
}
/** Convert number to string */
if (typeof value === 'number') {
return value.toString();
}
/** Fallback to empty string */
return '';
},
});
export { HookedInput as default };