Repository URL to install this package:
|
Version:
2.1.0 ▾
|
import { observable, action } from 'xmobx/mobx'
import { isSafe, NO_OP, isObj, EMPTY_OBJ, isFunction } from 'exotic'
import {
OnBlurStrategyArgs,
OnSubmitStrategyArgs,
} from '@skava/forms/build/dist/new-forms/strategies'
import { ConfigProps } from './typings'
class ValidationStrategy {
@observable strategyConfig = EMPTY_OBJ
// constructor(props) {
// this.startegyConfig = props
// console.log('startegyConfig test', this.startegyConfig.props.item.identifier)
// }
onFocus = NO_OP
onChange = NO_OP
@action.bound
onBlur(args: OnBlurStrategyArgs) {
const { state, props } = this.strategyConfig
const { onEditListName, item } = props
const { identifier } = item
const { setIsVisible, setListName, listName } = state
const previousName = listName
setIsVisible(false)
if (isSafe(args.state.value)) {
setListName(args.state.value)
} else {
args.state.setValue(listName)
}
if (isFunction(onEditListName)) {
onEditListName({ ...args, identifier, previousName })
}
}
@action.bound
onSubmit(args: OnSubmitStrategyArgs) {
const { state, props } = this.strategyConfig
const { onEditListName, item } = props
const { identifier } = item
const { setIsVisible, setListName, listName } = state
const previousName = listName
setIsVisible(false)
if (isObj(args.state.inputsList[0])) {
if (isSafe(args.state.inputsList[0].value)) {
setListName(args.state.inputsList[0].value)
} else {
args.state.inputsList[0].setValue(listName)
}
}
if (isFunction(onEditListName)) {
onEditListName({ ...args, identifier, previousName })
}
}
@action.bound
setStrategyConfig(config: ConfigProps) {
this.strategyConfig = config
}
}
export { ValidationStrategy }
export default ValidationStrategy