react-native-ui-lib
Version:
<p align="center"> <img src="https://user-images.githubusercontent.com/1780255/105469025-56759000-5ca0-11eb-993d-3568c1fd54f4.png" height="250px" style="display:block"/> </p> <p align="center">UI Toolset & Components Library for React Native</p> <p a
76 lines (65 loc) • 1.82 kB
JavaScript
import _ from 'lodash';
import { Colors } from "./../../style";
import formValidators from "./validators";
export function getColorByState(color, context) {
let finalColor;
if (_.isString(color)) {
finalColor = color;
} else if (_.isPlainObject(color)) {
if (context?.disabled) {
finalColor = color?.disabled;
} else if (!context?.isValid) {
finalColor = color?.error;
} else if (context?.isFocused) {
finalColor = color?.focus;
}
finalColor = finalColor || color?.default || Colors.grey10;
}
return finalColor;
}
export function validate(value, validator) {
if (_.isUndefined(validator)) {
return [true, undefined];
}
let _isValid = true;
let _failingValidatorIndex;
const _validators = _.isArray(validator) ? validator : [validator];
_.forEach(_validators, (validator, index) => {
if (_.isFunction(validator)) {
_isValid = validator(value);
} else if (_.isString(validator)) {
_isValid = formValidators[validator]?.(value || '');
}
if (!_isValid) {
_failingValidatorIndex = index;
return false;
}
});
return [_isValid, _failingValidatorIndex];
}
export function getRelevantValidationMessage(validationMessage, failingValidatorIndex) {
if (_.isUndefined(failingValidatorIndex)) {
return validationMessage;
} else if (_.isUndefined(validationMessage)) {
return;
}
if (_.isString(validationMessage)) {
return validationMessage;
} else if (_.isArray(validationMessage)) {
return validationMessage[failingValidatorIndex];
}
}
export function shouldHidePlaceholder({
floatingPlaceholder,
hint,
floatOnFocus
}, isFocused) {
if (floatingPlaceholder) {
if (hint && isFocused) {
return !floatOnFocus;
}
return true;
} else {
return false;
}
}