react-bfm
Version:
A basic field / form manager for React using hooks
47 lines • 2.27 kB
JavaScript
import { getNamespaceState } from '../state';
import { FIELD_KEY_INITIAL_VALUE, FIELD_KEY_DIRTY, FIELD_KEY_ERROR, FIELD_KEY_FOCUS, FIELD_KEY_TOUCHED, FIELD_KEY_VALID, FIELD_KEY_VALUE, FIELD_KEY_VALUE_ON_FOCUS } from '../constants/field-keys';
export var getNamespaceKeyValues = function getNamespaceKeyValues(namespace, key) {
var namespaceState = getNamespaceState(namespace);
return namespaceState && Object.entries(namespaceState).reduce(function (values, _ref) {
var fieldName = _ref[0],
fieldState = _ref[1];
values[fieldName] = fieldState[key];
return values;
}, {});
};
export var getNamespaceKeyIsEvery = function getNamespaceKeyIsEvery(namespace, key) {
var namespaceState = getNamespaceState(namespace);
return namespaceState && Object.values(namespaceState).every(function (fieldState) {
return fieldState[key] || false;
});
};
export var getNamespaceKeyIsSome = function getNamespaceKeyIsSome(namespace, key) {
var namespaceState = getNamespaceState(namespace);
return namespaceState && Object.values(namespaceState).some(function (fieldState) {
return fieldState[key] || false;
});
};
export var getNamespaceInitialValues = function getNamespaceInitialValues(namespace) {
return getNamespaceKeyValues(namespace, FIELD_KEY_INITIAL_VALUE);
};
export var getNamespaceErrors = function getNamespaceErrors(namespace) {
return getNamespaceKeyValues(namespace, FIELD_KEY_ERROR);
};
export var getNamespaceValues = function getNamespaceValues(namespace) {
return getNamespaceKeyValues(namespace, FIELD_KEY_VALUE);
};
export var getNamespaceValuesOnFocus = function getNamespaceValuesOnFocus(namespace) {
return getNamespaceKeyValues(namespace, FIELD_KEY_VALUE_ON_FOCUS);
};
export var hasNamespaceFocus = function hasNamespaceFocus(namespace) {
return getNamespaceKeyIsSome(namespace, FIELD_KEY_FOCUS);
};
export var isNamespaceDirty = function isNamespaceDirty(namespace) {
return getNamespaceKeyIsSome(namespace, FIELD_KEY_DIRTY);
};
export var isNamespaceTouched = function isNamespaceTouched(namespace) {
return getNamespaceKeyIsSome(namespace, FIELD_KEY_TOUCHED);
};
export var isNamespaceValid = function isNamespaceValid(namespace) {
return getNamespaceKeyIsEvery(namespace, FIELD_KEY_VALID);
};