All files / src Region.js

61.54% Statements 16/26
33.33% Branches 4/12
66.67% Functions 2/3
61.54% Lines 16/26

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 691x 1x   1x 1x 1x 1x 1x                                   8x 8x 3x 5x                   8x 8x 8x         8x                                     8x        
import './styles/region.styl'
import { SELECT, TEXT, GROUP, COLUMN, CITY } from './constants'
 
import SelectGroup from './components/SelectGroup'
import TextRegion from './components/Text'
import GroupRegion from './components/Group'
import ColumnGroup from './components/ColumnGroup'
import CityPicker from './components/CityPicker'
 
export default {
  name: 'v-region',
  components: {
    'r-select': SelectGroup,
    'r-text': TextRegion,
    'r-group': GroupRegion,
    'r-column': ColumnGroup,
    'r-city': CityPicker
  },
  props: {
    type: {
      type: String,
      default: SELECT
    }
  },
  render (h) {
    Eif (this.type) {
      switch (this.type.toLowerCase()) {
        case TEXT: return this.build(h, 'r-text')
        case SELECT: return this.build(h, 'r-select')
        case COLUMN: return this.build(h, 'r-column')
        case CITY: return this.build(h, 'r-city')
        case GROUP: return this.build(h, 'r-group')
      }
    } else {
      console.error('Please provide selector type.("type" prop of v-region)')
    }
  },
  methods: {
    build (h, name) {
      const slot = []
      const options = {
        class: 'v-region',
        props: this.$attrs,
        on: this.$listeners
      }
      Iif ('default' in this.$scopedSlots) {
        switch (this.type.toLowerCase()) {
          case COLUMN:
          case GROUP:
            options.scopedSlots = {
              default: props => {
                return this.$scopedSlots.default({
                  region: props.region,
                  show: props.show
                })
              }
            }
            break
          case CITY:
            slot.push(this.$scopedSlots.default())
            break
        }
      }
 
      return h(name, options, slot)
    }
  }
}