1
0
mirror of synced 2024-11-25 14:56:03 +03:00

docs: Added storybook for case of array of fields

This commit is contained in:
1on 2020-11-02 11:54:50 +03:00
parent 5f0fc7f56b
commit f52cd2e2e7
4 changed files with 129 additions and 54 deletions

1
.gitignore vendored
View File

@ -8,3 +8,4 @@ coverage
*.sublime-workspace *.sublime-workspace
*.dev.tale.vue *.dev.tale.vue
*.dev.stories.js *.dev.stories.js
storybook-static

View File

@ -1,20 +1,13 @@
<template> <template>
<FormularioForm v-model="values"> <FormularioForm v-model="values">
<FormularioGrouping name="group">
<FormularioInput <FormularioInput
v-slot="{ context }" v-slot="{ context }"
class="mb-3" class="mb-3"
name="text" name="groups"
validation="number|required" validation="min:1"
> validation-behavior="live"
<label for="text-field">Text field (number|required)</label>
<input
id="text-field"
v-model="context.model"
type="text"
class="form-control"
style="max-width: 250px;"
> >
<FormularioGroupingGroupTale v-model="context.model" />
<div <div
v-for="(error, index) in context.allErrors" v-for="(error, index) in context.allErrors"
@ -25,52 +18,24 @@
</div> </div>
</FormularioInput> </FormularioInput>
<FormularioInput
v-slot="{ context }"
:validation-messages="{ in: 'The value was different than expected' }"
class="mb-3"
name="abcdef-field"
validation="in:abcdef"
>
<label for="abcdef-field">Text field (in:abcdef)</label>
<input
id="abcdef-field"
v-model="context.model"
type="text"
class="form-control"
style="max-width: 250px;"
>
<div
v-for="(error, index) in context.allErrors"
:key="index"
class="text-danger"
>
{{ error }}
</div>
</FormularioInput>
</FormularioGrouping>
<div>{{ values }}</div> <div>{{ values }}</div>
</FormularioForm> </FormularioForm>
</template> </template>
<script> <script>
import FormularioForm from '@/FormularioForm' import FormularioForm from '@/FormularioForm'
import FormularioGrouping from '@/FormularioGrouping' import FormularioGroupingGroupTale from './FormularioGroupingGroup.tale.vue'
import FormularioInput from '@/FormularioInput'
export default { export default {
name: 'FormularioGroupingTale', name: 'FormularioGroupingTale',
components: { components: {
FormularioForm, FormularioForm,
FormularioGrouping, FormularioGroupingGroupTale,
FormularioInput,
}, },
data: () => ({ data: () => ({
values: {}, values: { groups: [] },
}), }),
} }
</script> </script>

View File

@ -0,0 +1,106 @@
<template>
<div>
<div
v-for="(item, groupIndex) in groups"
:key="groupIndex"
>
<FormularioGrouping :name="`groups[${groupIndex}]`">
<FormularioInput
v-slot="{ context }"
class="mb-3"
name="text"
validation="number|required"
validation-behavior="live"
>
<label for="text-field">Text field (number|required)</label>
<input
id="text-field"
v-model="context.model"
type="text"
class="form-control"
style="max-width: 250px;"
>
<div
v-for="(error, index) in context.allErrors"
:key="index"
class="text-danger"
>
{{ error }}
</div>
</FormularioInput>
<FormularioInput
v-slot="{ context }"
:validation-messages="{ in: 'The value was different than expected' }"
class="mb-3"
name="abcdef-field"
validation="in:abcdef"
validation-behavior="live"
>
<label for="abcdef-field">Text field (in:abcdef)</label>
<input
id="abcdef-field"
v-model="context.model"
type="text"
class="form-control"
style="max-width: 250px;"
>
<div
v-for="(error, index) in context.allErrors"
:key="index"
class="text-danger"
>
{{ error }}
</div>
</FormularioInput>
</FormularioGrouping>
<button @click="onRemoveGroup(groupIndex)">
Remove Group
</button>
</div>
<button @click="onAddGroup">
Add Group
</button>
</div>
</template>
<script>
import FormularioGrouping from '@/FormularioGrouping'
import FormularioInput from '@/FormularioInput'
export default {
name: 'FormularioGroupingGroupTale',
components: {
FormularioGrouping,
FormularioInput,
},
model: {
prop: 'groups',
event: 'change'
},
props: {
groups: {
type: Array,
required: true,
},
},
methods: {
onAddGroup () {
this.$emit('change', this.groups.concat([{}]))
},
onRemoveGroup (removedIndex) {
this.$emit('change', this.groups.filter((item, index) => {
return index !== removedIndex
}))
}
}
}
</script>

View File

@ -12,6 +12,9 @@ Vue.mixin({
methods: { methods: {
$t (text) { $t (text) {
return text return text
},
$tc (text) {
return text
} }
} }
}) })