Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
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