Skip to content

Instantly share code, notes, and snippets.

@briankung
Created December 22, 2017 18:02
Show Gist options
  • Save briankung/16ac38595ce0db53957ae16e472d59ea to your computer and use it in GitHub Desktop.
Save briankung/16ac38595ce0db53957ae16e472d59ea to your computer and use it in GitHub Desktop.
This is not a good idea, but it's cool
<template>
<ToggleableFields :fields="toggleableFields" />
</template>
<script>
import ToggleableFields from 'checkout/address/toggleable_fields.vue'
export default {
components: {
ToggleableFields
},
computed: {
toggleableFields () {
return [
{
component: Component1,
show: true,
props: { addressType: this.addressType }
},
{
component: Component2,
show: true,
props: { addressType: this.addressType }
},
{
component: Component3,
show: true,
props: { addressType: this.addressType }
}
]
}
}
}
</script>
<script>
export default {
render (createElement) {
return createElement('div', {class: 'inner'}, this._toggleableFields(createElement))
},
props: {
fields: {
type: Array,
required: true
}
},
methods: {
_toggleableFields (createElement) {
return this.fields.filter(field => field.show).map((field) => {
return createElement(field.component, {props: field.props})
})
}
}
}
</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment