appirio-tech-react-components-test10
Version:
Topcoder UI Kit library of components for our React apps.
71 lines (57 loc) • 1.99 kB
JavaScript
import _ from 'lodash'
import Formsy from 'formsy-react'
import TextInput from './TextInput'
import Textarea from './Textarea'
import Checkbox from './Checkbox'
import RadioGroup from './RadioGroup'
import CheckboxGroup from './CheckboxGroup'
import SliderRadioGroup from './SliderRadioGroup'
import SliderStandard from './SliderStandard'
import TiledRadioGroup from './TiledRadioGroup'
import TiledCheckboxInput from './TiledCheckboxInput'
import TiledCheckboxGroup from './TiledCheckboxGroup'
require('./FormFields.scss')
const RELAXED_URL_REGEX = /^(http(s?):\/\/)?(www\.)?[a-zA-Z0-9\.\-\_]+(\.[a-zA-Z]{2,15})+(\:[0-9]{2,5})?(\/[a-zA-Z0-9\_\-\s\.\/\?\%\#\&\=]*)?$/
const VALID_NAME_REGEX = /.*\s+.+/i
// validations
Formsy.addValidationRule('isRequired', (values, value, array) => { // eslint-disable-line no-unused-vars
if (_.isUndefined(value) || _.isNull(value)) {
return false
}
if (_.isArray(value)) {
return value.length > 0
}
if (_.isObject(value)) {
return !_.isEmpty(value)
}
if (_.isNumber(value)) {
// actually any numeric value should pass this check
return value.toString().length > 0
}
if (_.isString(value)) {
return value.trim().length > 0
}
// if some unexpected type of `value` has been passed, treat as not provided
return false
})
Formsy.addValidationRule('isRelaxedUrl', (values, value, array) => { // eslint-disable-line no-unused-vars
return !value || RELAXED_URL_REGEX.test(value) ? true : false // eslint-disable-line no-unneeded-ternary
})
Formsy.addValidationRule('isValidName', (values, value, array) => { // eslint-disable-line no-unused-vars
return value && VALID_NAME_REGEX.test(value.trim()) ? true : false // eslint-disable-line no-unneeded-ternary
})
export default {
Formsy,
Fields: {
TextInput,
Textarea,
RadioGroup,
Checkbox,
CheckboxGroup,
SliderRadioGroup,
SliderStandard,
TiledRadioGroup,
TiledCheckboxInput,
TiledCheckboxGroup
}
}